mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-07 04:12:04 +00:00
The PHQ-9, GAD-7, WHO-5 and SCI now have text in every app language instead of falling back to the English original. Each instrument and language is one file under src/lib/mental-health/wording/ that declares what it is: a published validated translation reproduced word for word, with its source and terms in `source`, or a translation written for HealthLog, faithful to the English and on the same scale. Validated versions added: the Pfizer PHQ-9 for France, the Netherlands, Korea and Brazil, the Pfizer GAD-7 for the Netherlands, Korea and Brazil, the PRU Dutch WHO-5, the Korean WHO-5 validation (J Korean Geriatr Psychiatry 2010) and the Polish SCI validation (Sci Rep 2026). The SCI in the other languages and the WHO-5 in Brazilian Portuguese carry HealthLog's own translation; each file names any validated version found and why it is not used. Where the text is unvalidated, the check-in shows a note that the result is orientation and a one-tap switch to the English original. Each language loads as its own chunk when a questionnaire surface needs it. The item text, answers, stems and the PHQ-9 follow-up leave every message bundle, so a translator never sees them; the i18n guard now requires that no bundle carries them, and the registry test requires every instrument in every language with the item count and anchor scores the scoring expects. CONTRIBUTING explains where the wording lives and how to propose a validated version.
13769 lines
745 KiB
JSON
13769 lines
745 KiB
JSON
{
|
||
"common": {
|
||
"listCapped": "Se muestran los últimos {count}; las entradas anteriores no aparecen aquí.",
|
||
"save": "Guardar",
|
||
"conflictReloaded": "Recargado desde el servidor. Vuelve a aplicar tu cambio.",
|
||
"cancel": "Cancelar",
|
||
"delete": "Eliminar",
|
||
"undo": "Deshacer",
|
||
"edit": "Editar",
|
||
"moreOptions": "Más opciones",
|
||
"create": "Crear",
|
||
"close": "Cerrar",
|
||
"loading": "Cargando…...",
|
||
"loadFailed": "No se pudo cargar",
|
||
"error": "Error",
|
||
"saved": "Guardado",
|
||
"pullToRefresh": "Actualizando…",
|
||
"no": "No",
|
||
"noData": "Sin datos disponibles",
|
||
"optional": "Opcional",
|
||
"active": "Activo",
|
||
"inactive": "Inactivo",
|
||
"disabled": "Desactivado",
|
||
"networkError": "Error de red",
|
||
"openDatePicker": "Abrir el selector de fecha",
|
||
"openTimePicker": "Abrir el selector de hora",
|
||
"hours": "Horas",
|
||
"minutes": "Minutos",
|
||
"feet": "ft",
|
||
"inches": "in",
|
||
"heightFeet": "Altura en pies",
|
||
"heightInches": "Altura en pulgadas",
|
||
"period": "a. m./p. m.",
|
||
"am": "a. m.",
|
||
"pm": "p. m.",
|
||
"unknownError": "Error desconocido",
|
||
"copied": "¡Copiado!",
|
||
"or": "o",
|
||
"unknown": "Desconocido",
|
||
"add": "Añadir",
|
||
"import": "Importar",
|
||
"test": "Probar",
|
||
"reset": "Restablecer",
|
||
"copy": "Copiar",
|
||
"copyDetails": "Copiar detalles",
|
||
"retry": "Reintentar",
|
||
"showPassword": "Mostrar contraseña",
|
||
"hidePassword": "Ocultar contraseña",
|
||
"learnMore": "Más información",
|
||
"dismiss": "Descartar",
|
||
"moreInfo": "Más información",
|
||
"durationHoursMinutes": "{hours} h {minutes} min",
|
||
"durationMinutes": "{minutes} min",
|
||
"durationClockMinutes": "{time} min",
|
||
"durationClockHours": "{time} h",
|
||
"errorIdLabel": "ID de error",
|
||
"errorIdCopy": "Copiar ID de error",
|
||
"errorIdCopied": "ID de error copiado",
|
||
"readThrottled": "Hay demasiadas solicitudes ahora mismo, así que vuelve a intentarlo más tarde.",
|
||
"sessionEnded": "Tu sesión ha caducado, así que inicia sesión de nuevo para continuar.",
|
||
"signIn": "Iniciar sesión"
|
||
},
|
||
"apiErrors": {
|
||
"measurement": {
|
||
"create": {
|
||
"invalid": "Comprueba los datos de la medición e inténtalo de nuevo."
|
||
},
|
||
"duplicate_timestamp": "Ya existe una medición para esta hora."
|
||
},
|
||
"mood": {
|
||
"list": {
|
||
"invalid": "Los filtros de la lista de ánimo no son válidos."
|
||
},
|
||
"create": {
|
||
"invalid": "Comprueba la entrada de ánimo e inténtalo de nuevo."
|
||
},
|
||
"update": {
|
||
"invalid": "Comprueba la entrada de ánimo e inténtalo de nuevo."
|
||
},
|
||
"duplicate_timestamp": "Ya existe una entrada de ánimo para esta hora.",
|
||
"not_found": "Esta entrada de ánimo ya no está disponible.",
|
||
"ratedFactor": {
|
||
"out_of_range": "Una valoración está fuera del intervalo permitido."
|
||
}
|
||
},
|
||
"labs": {
|
||
"create": {
|
||
"invalid": "Comprueba el resultado de laboratorio e inténtalo de nuevo."
|
||
},
|
||
"result": {
|
||
"notFound": "Este resultado de laboratorio ya no está disponible."
|
||
},
|
||
"biomarker": {
|
||
"notFound": "Este biomarcador ya no está disponible.",
|
||
"duplicate": "Ya existe un biomarcador con este nombre.",
|
||
"create": {
|
||
"invalid": "Comprueba los datos del biomarcador e inténtalo de nuevo."
|
||
},
|
||
"update": {
|
||
"invalid": "Comprueba los datos del biomarcador e inténtalo de nuevo.",
|
||
"referenceRangeInvalid": "El valor de referencia inferior no puede superar al superior."
|
||
}
|
||
},
|
||
"update": {
|
||
"invalid": "Comprueba el resultado de laboratorio e inténtalo de nuevo.",
|
||
"linkedFieldsImmutable": "Edita el biomarcador para cambiar su nombre, unidad, panel o intervalo de referencia.",
|
||
"qualitativeExpected": "Introduce un resultado de texto para esta lectura cualitativa.",
|
||
"numericExpected": "Introduce un número para esta lectura numérica.",
|
||
"referenceRangeInvalid": "El valor de referencia inferior no puede superar al superior."
|
||
}
|
||
},
|
||
"onboarding": {
|
||
"disclaimer": {
|
||
"invalid": "Confirma de nuevo el aviso médico."
|
||
},
|
||
"tour": {
|
||
"invalid": "No se pudo guardar el progreso del recorrido."
|
||
},
|
||
"complete": {
|
||
"invalid": "Comprueba los datos del perfil e inténtalo de nuevo."
|
||
},
|
||
"user": {
|
||
"notFound": "No se pudo encontrar tu cuenta."
|
||
},
|
||
"step": {
|
||
"rateLimited": "Demasiados intentos. Espera e inténtalo de nuevo.",
|
||
"invalid": "No se pudo guardar este paso de la introducción.",
|
||
"completed": "La introducción ya está completada.",
|
||
"outOfOrder": "Tu progreso ha cambiado. Actualiza la página y continúa.",
|
||
"concurrent": "Tu progreso ha cambiado. Actualiza la página y continúa."
|
||
}
|
||
},
|
||
"profile": {
|
||
"update": {
|
||
"nothingSaved": "No se guardó nada. Revisa el campo marcado e inténtalo de nuevo.",
|
||
"invalidBody": "No se pudo leer la actualización del perfil.",
|
||
"emailInUse": "Esta dirección de correo ya está en uso.",
|
||
"emailRateLimited": "Demasiados cambios de dirección de correo. Inténtalo más tarde.",
|
||
"emailSecondFactorRequired": "Confirma con tu segundo factor o una clave de acceso para cambiar el correo electrónico."
|
||
}
|
||
},
|
||
"auth": {
|
||
"reproof": {
|
||
"required": "Confirma tu contraseña actual para cambiar esto.",
|
||
"failed": "La verificación ha fallado. No se ha cambiado nada."
|
||
}
|
||
},
|
||
"biomarkers": {
|
||
"unit": {
|
||
"locked": "Este marcador ya tiene valores, así que no puedes cambiar su unidad. Los valores guardados se mostrarían en la nueva unidad sin convertirse."
|
||
}
|
||
},
|
||
"symptoms": {
|
||
"definition": {
|
||
"limitReached": "Tienes 8 síntomas. Oculta uno para añadir otro.",
|
||
"notFound": "Este síntoma ya no existe."
|
||
},
|
||
"episode": {
|
||
"notOpen": "Esa enfermedad ya no está abierta. Elige otra o ninguna."
|
||
},
|
||
"event": {
|
||
"notFound": "Esta entrada ya no existe."
|
||
}
|
||
},
|
||
"medications": {
|
||
"notFound": "Este medicamento ya no está disponible.",
|
||
"ingredients": {
|
||
"invalid": "Revisa la composición e inténtalo de nuevo.",
|
||
"unitMismatch": "Esta unidad no está disponible para el nutriente.",
|
||
"extract": {
|
||
"fileType": "Sube un JPEG, PNG, WebP o PDF.",
|
||
"fileTooLarge": "El archivo supera los 10 MB.",
|
||
"rateLimited": "Demasiadas lecturas de etiquetas. Vuelve a intentarlo dentro de una hora.",
|
||
"budgetExceeded": "Has alcanzado tu presupuesto de IA de hoy.",
|
||
"failed": "No se pudo leer la etiqueta. Prueba con una foto más nítida."
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"doctorReport": {
|
||
"title": "Informe de salud",
|
||
"anamnesisTitle": "Perfil de salud",
|
||
"anamnesisNotRecorded": "No registrado",
|
||
"anamnesisUnreadable": "No se pudo leer el valor guardado",
|
||
"anamnesisConditions": "Enfermedades crónicas",
|
||
"anamnesisSmoking": "Tabaquismo",
|
||
"anamnesisAlcohol": "Patrón de consumo de alcohol",
|
||
"anamnesisShiftSchedule": "Horario de trabajo",
|
||
"anamnesisColFact": "Dato del perfil",
|
||
"anamnesisColValue": "Valor registrado",
|
||
"subtitle": "HealthLog: informe personal de salud",
|
||
"patient": "Paciente",
|
||
"dateOfBirth": "Fecha de nacimiento",
|
||
"gender": "Sexo",
|
||
"genderMale": "Hombre",
|
||
"genderFemale": "Mujer",
|
||
"genderOther": "No binario",
|
||
"height": "Altura",
|
||
"period": "Período del informe",
|
||
"createdOn": "Creado el",
|
||
"vitalsTitle": "Signos vitales: resumen",
|
||
"colParameter": "Parámetro",
|
||
"colCurrent": "Actual",
|
||
"colAvgPeriod": "Med. periodo",
|
||
"colMin": "Mín",
|
||
"colMax": "Máx",
|
||
"colN": "n",
|
||
"bpClassificationTitle": "Tensión arterial: clasificación ESH (2023)",
|
||
"avgBp": "Tensión arterial media",
|
||
"classification": "Clasificación",
|
||
"bmiTitle": "Índice de masa corporal (IMC)",
|
||
"bmiRow": "IMC:{bmi} kg/m², Classification: {class} (WHO)",
|
||
"complianceTitle": "Cumplimiento de medicación",
|
||
"glp1Title": "Terapia GLP-1",
|
||
"glp1WeightSummary": "Peso en el periodo del informe: {start} kg → {end} kg ({delta} kg)",
|
||
"glp1CurrentDose": "Dosis actual:{value} {unit} (since {since})",
|
||
"glp1Compliance": "Cumplimiento:{taken} / {total} ({rate}%)",
|
||
"glp1SideEffectsTitle": "Efectos secundarios registrados",
|
||
"colGlp1Date": "Fecha",
|
||
"colGlp1Dose": "Dosis",
|
||
"colGlp1Note": "Nota",
|
||
"colGlp1SideEffect": "Efecto secundario",
|
||
"colMedication": "Medicamento",
|
||
"colTaken": "Tomada",
|
||
"colSkipped": "Omitida",
|
||
"colMissed": "Perdida",
|
||
"colExpected": "Esperadas",
|
||
"colComplianceRate": "Tasa de cumplimiento",
|
||
"moodTitle": "Evolución del estado de ánimo",
|
||
"moodSummary": "Promedio {avg} / 5.0, {count} entradas, rango {min}–{max}",
|
||
"colMood": "Estado de ánimo",
|
||
"colCount": "Cantidad",
|
||
"colShare": "Porcentaje",
|
||
"footerDisclaimer1": "Este informe se generó automáticamente a partir de datos autorregistrados y está destinado a apoyar",
|
||
"footerDisclaimer2": "la conversación entre médico y paciente. No sustituye un diagnóstico médico. Las correlaciones no implican causalidad.",
|
||
"footerSource": "Fuente: HealthLog | Zona horaria: {timezone} | Creado: {timestamp}",
|
||
"unitSteps": "Pasos",
|
||
"bmiUnderweight": "Peso insuficiente",
|
||
"bmiNormal": "Peso normal",
|
||
"bmiOverweight": "Sobrepeso (preobesidad)",
|
||
"bmiObeseGrade1": "Obesidad grado I",
|
||
"bmiObeseGrade2": "Obesidad grado II",
|
||
"bmiObeseGrade3": "Obesidad grado III",
|
||
"bpOptimal": "Óptima",
|
||
"bpNormal": "Normal",
|
||
"bpHighNormal": "Normal-alta",
|
||
"bpHypertensionGrade1": "Hipertensión grado 1",
|
||
"bpHypertensionGrade2": "Hipertensión grado 2",
|
||
"bpHypertensionGrade3": "Hipertensión grado 3",
|
||
"moodAwful": "Muy mal",
|
||
"moodBad": "Mal",
|
||
"moodNeutral": "Neutral",
|
||
"moodGood": "Bien",
|
||
"moodGreat": "Muy bien",
|
||
"typeGlucoseFasting": "Glucosa (en ayunas)",
|
||
"typeGlucosePostprandial": "Glucosa (posprandial)",
|
||
"typeGlucoseRandom": "Glucosa (aleatoria)",
|
||
"typeGlucoseBedtime": "Glucosa (antes de dormir)",
|
||
"typeGlucoseUnspecified": "Glucosa (sin indicar)",
|
||
"glucoseClassificationTitle": "Glucemia: rangos de referencia (ADA 2024 / DDG)",
|
||
"glucoseRow": "{label}: med. {avg} {unit} (objetivo {rangeMin}–{rangeMax}), {class}",
|
||
"glucoseInTarget": "en objetivo",
|
||
"glucoseBelowTarget": "por debajo del objetivo",
|
||
"glucoseAboveTarget": "por encima del objetivo",
|
||
"practiceLabel": "Consulta",
|
||
"insurer": "Seguro médico",
|
||
"insuranceNumber": "N.º de asegurado",
|
||
"summaryTitle": "Resumen clínico",
|
||
"summaryReadings": "Registrado durante {days} días: {count} mediciones en {params} parámetros.",
|
||
"summaryTrend": "{label}: último {latest} {arrow}",
|
||
"summaryAdherence": "Adherencia a la medicación: {rate}% (media ponderada).",
|
||
"chartsTitle": "Gráficos de tendencia",
|
||
"packageReadme": "Historial de salud de HealthLog\n\nEste paquete contiene:\n- report.pdf: el informe de salud para su médico.\n- bundle.json: los mismos datos como Bundle de documento HL7 FHIR R4, compatible con ePA.\n\nGenerado con HealthLog.",
|
||
"wellnessTitle": "Resumen de bienestar",
|
||
"wellnessDisclaimer": "Son puntuaciones de bienestar descriptivas calculadas a partir de tus señales registradas (0–100). No son evaluaciones clínicas ni diagnósticos.",
|
||
"wellnessRecovery": "Recuperación",
|
||
"wellnessStress": "Estrés",
|
||
"wellnessStrain": "Esfuerzo",
|
||
"cycleTitle": "Ciclo menstrual",
|
||
"cycleLmp": "Última menstruación",
|
||
"cycleAvgLength": "Duración media del ciclo",
|
||
"cycleAvgPeriod": "Duración media del periodo",
|
||
"cyclePhase": "Fase actual",
|
||
"cycleDays": "días",
|
||
"cycleColStart": "Inicio del periodo",
|
||
"cycleColLength": "Duración del ciclo (días)",
|
||
"cycleColPeriod": "Duración del periodo (días)",
|
||
"cyclePhases": {
|
||
"MENSTRUAL": "Menstrual",
|
||
"FOLLICULAR": "Folicular",
|
||
"OVULATORY": "Ovulatoria",
|
||
"LUTEAL": "Lútea"
|
||
},
|
||
"labsTitle": "Resultados de análisis",
|
||
"labsColAnalyte": "Biomarcador",
|
||
"labsColValue": "Valor",
|
||
"labsColReference": "Referencia",
|
||
"labsColStatus": "Estado",
|
||
"labsColDate": "Fecha",
|
||
"glucoseClinical": {
|
||
"title": "Resumen de glucosa (clínico)",
|
||
"colMetric": "Métrica",
|
||
"colValue": "Valor",
|
||
"tirInRange": "Tiempo en rango ({low}–{high} {unit})",
|
||
"tirLow": "Bajo (< {low} {unit})",
|
||
"tirVeryLow": "Muy bajo (< {veryLow} {unit})",
|
||
"tirHigh": "Alto (> {high} {unit})",
|
||
"tirVeryHigh": "Muy alto (> {veryHigh} {unit})",
|
||
"mean": "Glucosa media",
|
||
"gmi": "Indicador de gestión de la glucosa (GMI)",
|
||
"eA1c": "A1C estimada",
|
||
"cv": "Variabilidad (CV%)",
|
||
"spotCaveat": "Son estimaciones a partir de mediciones puntuales, no un perfil de monitor continuo. Léelas como una tendencia, no como un veredicto clínico."
|
||
},
|
||
"illnessTitle": "Afecciones y enfermedades",
|
||
"illnessOngoing": "En curso",
|
||
"illnessColCondition": "Afección",
|
||
"illnessColBodySite": "Zona del cuerpo",
|
||
"illnessColType": "Tipo",
|
||
"illnessColLifecycle": "Curso",
|
||
"illnessColOnset": "Inicio",
|
||
"illnessColResolved": "Resuelta",
|
||
"allergiesTitle": "Alergias e intolerancias",
|
||
"reactionUnreadable": "Reacción registrada pero no se pudo descifrar",
|
||
"allergiesColSubstance": "Sustancia",
|
||
"allergiesColCategory": "Categoría",
|
||
"allergiesColKind": "Tipo",
|
||
"allergiesColSeverity": "Gravedad",
|
||
"allergiesColReaction": "Reacción",
|
||
"allergiesColStatus": "Estado",
|
||
"familyHistoryTitle": "Antecedentes familiares",
|
||
"familyHistoryColRelationship": "Parentesco",
|
||
"familyHistoryColCondition": "Afección",
|
||
"familyHistoryColAgeAtOnset": "Edad de inicio",
|
||
"labsSourceRangeNote": "* El rango de referencia procede del propio informe y difiere del rango guardado:",
|
||
"labsCatalogRangeLabel": "rango guardado",
|
||
"visitsTitle": "Visitas médicas",
|
||
"visitsColDate": "Fecha",
|
||
"visitsColPractice": "Consulta",
|
||
"visitsColKind": "Tipo",
|
||
"visitsColReason": "Motivo",
|
||
"visitsColOutcome": "Resultado",
|
||
"visitsColConditions": "Enfermedades",
|
||
"surgicalHistoryTitle": "Antecedentes quirúrgicos",
|
||
"surgicalHistoryColDate": "Fecha",
|
||
"surgicalHistoryColProcedure": "Procedimiento",
|
||
"surgicalHistoryColBodySite": "Zona del cuerpo",
|
||
"surgicalHistoryColOutcome": "Resultado",
|
||
"immunizationsTitle": "Vacunas",
|
||
"immunizationsColDate": "Fecha",
|
||
"immunizationsColVaccine": "Vacuna",
|
||
"immunizationsColDose": "Dosis",
|
||
"immunizationsColLot": "Lote",
|
||
"emergency": {
|
||
"title": "Información de emergencia",
|
||
"subtitle": "Para uso en una situación aguda. Autoinformado; confirmar cuando sea posible.",
|
||
"none": "No registrado",
|
||
"unreadable": "No se pudo leer el valor guardado",
|
||
"bloodType": "Grupo sanguíneo",
|
||
"bloodTypeUnknown": "Desconocido",
|
||
"bloodTypeValues": {
|
||
"A_POS": "A positivo",
|
||
"A_NEG": "A negativo",
|
||
"B_POS": "B positivo",
|
||
"B_NEG": "B negativo",
|
||
"AB_POS": "AB positivo",
|
||
"AB_NEG": "AB negativo",
|
||
"O_POS": "O positivo",
|
||
"O_NEG": "O negativo"
|
||
},
|
||
"severeAllergies": "Alergias graves",
|
||
"activeMedications": "Medicación actual",
|
||
"chronicConditions": "Enfermedades crónicas",
|
||
"implants": "Implantes y dispositivos",
|
||
"advanceDirective": "Voluntades anticipadas",
|
||
"advanceDirectiveValues": {
|
||
"EXISTS": "Existe",
|
||
"NONE": "Ninguna",
|
||
"UNKNOWN": "Sin indicar"
|
||
},
|
||
"organDonor": "Donante de órganos",
|
||
"organDonorValues": {
|
||
"YES": "Sí",
|
||
"NO": "No",
|
||
"UNKNOWN": "Sin indicar"
|
||
},
|
||
"contacts": "Contactos de emergencia",
|
||
"notes": "Notas adicionales"
|
||
},
|
||
"courseRange": "Tratamiento del {start} al {end}",
|
||
"courseSince": "Tratamiento desde el {start}",
|
||
"lifePackYears": "Paquetes-año",
|
||
"lifeAuditC": "AUDIT-C (cribado)",
|
||
"lifeAuditCScore": "{score} de 12 el {date}.",
|
||
"lifeAuditCAbove": "En o por encima del punto de corte de {cutoff} ({source}).",
|
||
"lifeAuditCBelow": "Por debajo del punto de corte de {cutoff} ({source}).",
|
||
"lifeAuditCNoCutoff": "Sin punto de corte específico por sexo.",
|
||
"lifeActivity": "Actividad física",
|
||
"lifeActivityValue": "{minutes} minutos a la semana, declarado",
|
||
"lifeSitting": "Tiempo sentado en día laborable",
|
||
"lifeSittingValue": "{hours} horas, declarado",
|
||
"lifeWork": "Trabajo",
|
||
"lifeNightWork": "trabajo nocturno",
|
||
"lifeExposures": "exposiciones: {list}",
|
||
"workouts": {
|
||
"title": "Entrenamientos",
|
||
"summary": "{sessions} sesiones, {hours} h en total; de media {perWeek} sesiones y {minutesPerWeek} minutos por semana.",
|
||
"colSport": "Deporte",
|
||
"colSessions": "Sesiones",
|
||
"colTime": "Tiempo",
|
||
"colDistance": "Distancia",
|
||
"colEnergy": "Energía",
|
||
"colHeartRate": "FC media",
|
||
"moreSports": "{count} deportes más se cuentan en los totales, pero no se enumeran."
|
||
},
|
||
"medicationEffect": {
|
||
"title": "Cambio en torno al inicio de cada medicamento",
|
||
"colMedication": "Medicamento / medida",
|
||
"colStart": "Inicio",
|
||
"colLevel": "Cambio de nivel (IC 95 %)",
|
||
"colSlope": "Cambio de tendencia (IC 95 %)",
|
||
"colDays": "Días antes / después",
|
||
"to": "a",
|
||
"week": "semana",
|
||
"reasonNoStart": "Sin fecha de inicio registrada",
|
||
"reasonBefore": "Muy pocos valores antes del inicio",
|
||
"reasonAfter": "Muy pocos valores desde el inicio",
|
||
"reasonFit": "No se pudo calcular",
|
||
"excludedAdherence": "{count} días después del inicio omitidos (menos del {floor} % de las dosis tomadas)",
|
||
"excludedNotTaking": "{count} días omitidos (en pausa o entre tandas)",
|
||
"notTracked": "toma no registrada, así que no se omitió ningún día por dosis olvidadas",
|
||
"endDoseChange": "el periodo termina el {date}, antes del primer cambio de dosis",
|
||
"days": "{before} días antes, {after} días después del inicio, {excluded} días omitidos",
|
||
"method": "Regresión segmentada sobre los valores diarios desde 90 días antes hasta como máximo 180 días después del inicio, con intervalos de Newey-West. Se omiten los días posteriores al inicio en los que se tomó menos del 80 % de las dosis de los 14 días anteriores. Describe una asociación en el tiempo, no un efecto demostrado del medicamento.",
|
||
"autocorrelation": "fuerte dependencia del día anterior, así que los rangos pueden seguir siendo demasiado estrechos",
|
||
"window": "analizado del {from} al {to}, puede ir más allá del periodo del informe",
|
||
"windowLine": "Analizado del {from} al {to}. Este intervalo puede ir más allá del periodo del informe."
|
||
}
|
||
},
|
||
"errorBoundary": {
|
||
"title": "Algo ha salido mal",
|
||
"description": "Se ha producido un error inesperado. Puedes reintentar, copiar los detalles técnicos o abrir un reporte de bug."
|
||
},
|
||
"notFound": {
|
||
"title": "Esta página no existe.",
|
||
"backToDashboard": "Volver al panel"
|
||
},
|
||
"offlineBanner": {
|
||
"message": "Sin conexión: los cambios no se pueden guardar hasta que vuelvas a estar en línea.",
|
||
"saveFailed": "No se pudo guardar porque estás sin conexión. Inténtalo de nuevo cuando vuelvas a estar en línea.",
|
||
"showingCached": "Mostrando tus últimos datos sincronizados."
|
||
},
|
||
"demoBanner": {
|
||
"message": "Modo demo: los cambios no se guardan."
|
||
},
|
||
"nav": {
|
||
"dashboard": "Panel",
|
||
"measurements": "Mediciones",
|
||
"medications": "Medicamentos",
|
||
"insights": "Insights",
|
||
"achievements": "Logros",
|
||
"settings": "Ajustes",
|
||
"admin": "Consola de administración",
|
||
"logout": "Cerrar sesión",
|
||
"login": "Iniciar sesión",
|
||
"notifications": "Notificaciones",
|
||
"theme": "Tema",
|
||
"themeSystem": "Sistema",
|
||
"themeDark": "Oscuro",
|
||
"themeLight": "Claro",
|
||
"collapseSidebar": "Contraer",
|
||
"expandSidebar": "Expandir",
|
||
"collapseSidebarLabel": "Contraer barra lateral",
|
||
"expandSidebarLabel": "Expandir barra lateral",
|
||
"userMenu": "Menú de usuario",
|
||
"accountSettings": "Ajustes de cuenta",
|
||
"mood": "Estado de ánimo",
|
||
"coach": "Coach",
|
||
"skipToContent": "Saltar al contenido",
|
||
"breadcrumb": "Estás aquí",
|
||
"sidebar": "Barra lateral",
|
||
"mainNavigation": "Navegación principal",
|
||
"mobileNavigation": "Navegación móvil",
|
||
"loadingScreen": "Cargando…",
|
||
"more": "Más",
|
||
"moreSheetTitle": "Más",
|
||
"moreSheetDescription": "Ve al resto de HealthLog.",
|
||
"capture": {
|
||
"title": "Registrar",
|
||
"description": "¿Qué quieres registrar?",
|
||
"measurement": "Medición",
|
||
"measurementDescription": "Peso, presión arterial, pulso y más",
|
||
"medication": "Medicamento",
|
||
"medicationDescription": "Marcar una dosis como tomada",
|
||
"mood": "Estado de ánimo",
|
||
"moodDescription": "Registra tu estado de ánimo y etiquetas",
|
||
"workout": "Entrenamiento",
|
||
"workoutDescription": "Una sesión que tus dispositivos no registraron",
|
||
"symptom": "Síntoma",
|
||
"symptomDescription": "Uno de tus propios síntomas, con su intensidad",
|
||
"lifeEventDescription": "Una mudanza, un nacimiento, un nuevo trabajo",
|
||
"lifeEvent": "Acontecimiento vital"
|
||
},
|
||
"cycle": "Ciclo",
|
||
"labs": "Análisis",
|
||
"profile": "Perfil",
|
||
"vorsorge": "Revisiones",
|
||
"illness": "Enfermedad",
|
||
"documents": "Documentos",
|
||
"vaccinations": "Vacunas",
|
||
"mentalWellbeing": "Bienestar mental",
|
||
"timeline": "Cronología"
|
||
},
|
||
"auth": {
|
||
"login": "Iniciar sesión",
|
||
"register": "Registrarse",
|
||
"username": "Nombre de usuario",
|
||
"password": "Contraseña",
|
||
"email": "Correo electrónico",
|
||
"emailPlaceholder": "nombre@ejemplo.com",
|
||
"emailOrUsername": "Correo electrónico o nombre de usuario",
|
||
"emailOrUsernamePlaceholder": "nombre@ejemplo.com o nombredeusuario",
|
||
"loginWithPasskey": "Iniciar sesión con passkey",
|
||
"loginWithPassword": "Iniciar sesión con contraseña",
|
||
"noAccount": "¿Aún no tienes cuenta?",
|
||
"hasAccount": "¿Ya tienes cuenta?",
|
||
"loginFailed": "No se ha podido iniciar sesión",
|
||
"registerFailed": "No se ha podido completar el registro",
|
||
"invitedBanner": "Te han invitado: crea tu cuenta aunque el registro esté cerrado.",
|
||
"alreadySignedIn": {
|
||
"title": "Ya has iniciado sesión",
|
||
"body": "Has iniciado sesión como {username}. Una invitación crea una cuenta nueva. Cierra la sesión para aceptarla.",
|
||
"signOut": "Cerrar sesión y aceptar la invitación"
|
||
},
|
||
"createAccount": "Crear cuenta",
|
||
"backToPasskey": "Volver a passkey",
|
||
"passkeySetupLater": "Puedes configurar passkeys más tarde en los ajustes.",
|
||
"passwordMinLength": "Mín. 12 caracteres",
|
||
"passwordTooShort": "La contraseña debe tener al menos {minLength} caracteres.",
|
||
"privacyPolicy": "Política de privacidad",
|
||
"passwordBreached": "Esta contraseña aparece en filtraciones de datos conocidas. Elige otra.",
|
||
"oidc": {
|
||
"signInDefault": "Iniciar sesión con SSO",
|
||
"errorDenied": "El inicio de sesión se canceló.",
|
||
"errorNoEmail": "Tu proveedor de identidad no compartió un correo electrónico verificado.",
|
||
"errorEmailUnverified": "Tu proveedor de identidad no marcó tu correo electrónico como verificado.",
|
||
"errorIdentityConflict": "Ese correo electrónico pertenece a una cuenta que ya está vinculada a otra identidad SSO.",
|
||
"errorRegistrationDisabled": "Ninguna cuenta coincide con esa identidad y los nuevos registros están cerrados actualmente.",
|
||
"errorFailed": "El inicio de sesión único falló. Inténtalo de nuevo.",
|
||
"errorLinkRequired": "Ya existe aquí una cuenta con esta dirección de correo. Inicia sesión en ella una vez con su contraseña o llave de acceso para conectarla al inicio de sesión único."
|
||
},
|
||
"native": {
|
||
"signingInToApp": "Iniciando sesión en la app de HealthLog"
|
||
},
|
||
"mfa": {
|
||
"title": "Autenticación de dos factores",
|
||
"totpHint": "Introduce el código de 6 dígitos de tu aplicación de autenticación.",
|
||
"recoveryHint": "Introduce uno de tus códigos de recuperación guardados.",
|
||
"securityKeyHint": "Usa tu llave de seguridad registrada para continuar.",
|
||
"codeLabel": "Código de autenticación",
|
||
"recoveryLabel": "Código de recuperación",
|
||
"verify": "Verificar",
|
||
"verifyFailed": "La verificación falló. Inténtalo de nuevo.",
|
||
"useSecurityKey": "Usar una llave de seguridad",
|
||
"useRecoveryCode": "Usar un código de recuperación",
|
||
"useAuthenticator": "Usar tu aplicación de autenticación",
|
||
"backToLogin": "Volver al inicio de sesión",
|
||
"rememberDevice": "Confiar en este dispositivo durante 30 días"
|
||
},
|
||
"enrollMfa": {
|
||
"title": "Configurar un segundo factor",
|
||
"body": "Tu administrador exige un segundo factor en esta cuenta. Añade una app de autenticación o una llave de seguridad para continuar.",
|
||
"signOut": "Cerrar sesión"
|
||
},
|
||
"confirmAccess": {
|
||
"title": "Confirma que eres tú",
|
||
"body": "Un asistente quiere conectarse a tus datos de HealthLog. Confirma que eres tú y después decidirás si lo permites.",
|
||
"action": "Confirmar",
|
||
"failed": "No ha funcionado. Inténtalo de nuevo.",
|
||
"nothingToConfirm": "Aquí no hay nada que confirmar. Vuelve a iniciar la conexión desde tu asistente."
|
||
},
|
||
"insecureTransport": {
|
||
"title": "No se puede completar el inicio de sesión en esta página",
|
||
"body": "Este servidor solo establece su cookie de sesión por https://, pero esta página se abrió por http://. El navegador descartaría la cookie, así que el inicio de sesión está desactivado aquí.",
|
||
"fixLan": "Servidor en una red doméstica sin TLS: pon SESSION_COOKIE_SECURE=false en su configuración y reinícialo.",
|
||
"fixHttps": "Servidor detrás de un proxy HTTPS: abre la dirección https:// y asegúrate de que el proxy reenvía X-Forwarded-Proto: https.",
|
||
"localhostNote": "Esta página está en http://localhost y el servidor solo establece su cookie de sesión para https://. La mayoría de los navegadores lo aceptan en localhost; si vuelves aquí tras iniciar sesión, pon SESSION_COOKIE_SECURE=false."
|
||
},
|
||
"claim": {
|
||
"title": "Asume tu historial de salud",
|
||
"titleNamed": "Te damos la bienvenida, {name}",
|
||
"description": "Hasta ahora otras personas han llevado tu historial de salud por ti. Elige cómo iniciar sesión y pasará a ser tu propia cuenta. No se copia ni se mueve nada.",
|
||
"loading": "Comprobando tu enlace…",
|
||
"invalid": "Este enlace ya no funciona",
|
||
"invalidHint": "Es desconocido, ha caducado, se ha retirado o ya se ha usado. Pide uno nuevo a quien te lo envió.",
|
||
"oidcOnly": "Este servidor solo permite el inicio de sesión único. Continúa con tu proveedor de identidad.",
|
||
"signedInTitle": "Cierra la sesión primero",
|
||
"signedInBody": "Has iniciado sesión como {username}. Este enlace crea un acceso para otra persona, así que cierra la sesión antes de usarlo.",
|
||
"signOut": "Cerrar sesión y continuar",
|
||
"guardiansTitle": "Quién conserva el acceso por ahora",
|
||
"guardiansHint": "Lo proponen las personas que llevaron tu historial. Tú decides justo después de iniciar sesión.",
|
||
"guardianUnnamed": "Una persona tutora",
|
||
"usernameHint": "De 3 a 30 letras, números, _ o -.",
|
||
"usernameReserved": "Los nombres de usuario que empiezan por managed- están reservados.",
|
||
"emailHint": "Obligatorio, para que puedas volver a entrar si olvidas tu contraseña.",
|
||
"consentNote": "Confirmas tú mismo el aviso y cualquier uso de IA. Hasta entonces, nada de tu historial se envía a un proveedor de IA.",
|
||
"expires": "Este enlace es válido hasta el {date}.",
|
||
"submit": "Asumir",
|
||
"submitting": "Asumiendo…",
|
||
"errorTaken": "Ese nombre de usuario o correo electrónico ya está en uso.",
|
||
"errorRateLimit": "Demasiados intentos. Espera unos minutos y vuelve a intentarlo.",
|
||
"errorFailed": "No ha funcionado. Vuelve a intentarlo en un momento.",
|
||
"errorOffline": "No se llegó al servidor. Comprueba tu conexión y vuelve a intentarlo.",
|
||
"ssoContinue": "Continuar con {provider}",
|
||
"ssoStarting": "Redirigiendo…",
|
||
"ssoHint": "A partir de entonces inicias sesión aquí con tu cuenta de {provider}.",
|
||
"ssoDivider": "o",
|
||
"ssoFallbackName": "inicio de sesión único",
|
||
"errorTitle": "La entrega no se ha completado",
|
||
"errorSubjectBound": "Este inicio de sesión ya pertenece a otra cuenta de este servidor. Vuelve a abrir el enlace y usa otra cuenta en tu proveedor de identidad.",
|
||
"errorEmailTaken": "Tu proveedor de identidad ha enviado una dirección de correo que ya usa otra cuenta aquí. Vuelve a abrir el enlace y usa otra cuenta, o pregunta a quien administra el servidor.",
|
||
"errorUsernameTaken": "Alguien ha cogido ese nombre de usuario mientras tanto. Vuelve a abrir el enlace y elige otro.",
|
||
"errorSignedIn": "Tenías una sesión iniciada al volver. Cierra la sesión y vuelve a abrir el enlace.",
|
||
"errorSso": "No se ha podido iniciar sesión con tu proveedor de identidad. Vuelve a abrir el enlace para intentarlo otra vez.",
|
||
"signInInstead": "Iniciar sesión en esa cuenta"
|
||
},
|
||
"inviteInvalid": {
|
||
"title": "Invitación no válida",
|
||
"description": "Este enlace de invitación está incompleto o se copió mal. Pide un enlace nuevo a la persona que te invitó.",
|
||
"toLogin": "Ir a iniciar sesión"
|
||
}
|
||
},
|
||
"dashboard": {
|
||
"title": "Panel",
|
||
"greeting": {
|
||
"morning": "Buenos días",
|
||
"day": "Hola",
|
||
"evening": "Buenas tardes"
|
||
},
|
||
"welcomeBack": "{greeting}, te damos la bienvenida de nuevo.",
|
||
"welcomeBackWithName": "{greeting}, {name}, te damos la bienvenida de nuevo.",
|
||
"greetingSalutation": "Hola, {name}",
|
||
"streakLabel": "días seguidos",
|
||
"weight": "Peso",
|
||
"bloodPressure": "Presión arterial",
|
||
"pulse": "Pulso",
|
||
"bodyFat": "Grasa corporal",
|
||
"sleep": "Sueño",
|
||
"steps": "Pasos",
|
||
"vo2Max": "VO₂ máx",
|
||
"vo2MaxUnit": "mL/(kg·min)",
|
||
"bpInTarget": "TA en rango objetivo",
|
||
"weightShort": "Peso",
|
||
"bloodPressureSysShort": "PA (Sys)",
|
||
"bloodPressureDiaShort": "PA (Dia)",
|
||
"pulseShort": "Pulso",
|
||
"bodyFatShort": "GC",
|
||
"moodShort": "Humor",
|
||
"sleepShort": "Sueño",
|
||
"stepsShort": "Pasos",
|
||
"vo2MaxShort": "VO₂ máx",
|
||
"bpInTargetWindow90": "PA-objetivo (90 d)",
|
||
"bpInTargetWindowDynamic": "PA-objetivo ({days} d)",
|
||
"bpInTargetCollecting": "recopilando datos",
|
||
"medications": "Medicamentos",
|
||
"quickAddMeasurement": "Registrar medición",
|
||
"quickAddMood": "Registrar estado de ánimo",
|
||
"quickAddMedicationIntake": "Registrar toma",
|
||
"quickAddWorkout": "Registrar entrenamiento",
|
||
"quickAddLifeEvent": "Registrar acontecimiento vital",
|
||
"customizeDashboard": "Personalizar panel",
|
||
"medicationIntakeQuickAdd": {
|
||
"sheetDescription": "Registra dosis, hora y medicamento en unos pocos toques.",
|
||
"medicationLabel": "Medicamento",
|
||
"medicationPlaceholder": "Selecciona un medicamento",
|
||
"doseLabel": "Dosis",
|
||
"dosePlaceholder": "p. ej. 5 mg",
|
||
"doseHint": "Precargado con la dosis estándar. Edítala para registrar una dosis diferente solo para esta toma.",
|
||
"timeLabel": "Hora de la toma",
|
||
"saveError": "No se ha podido guardar la toma.",
|
||
"emptyTitle": "Aún no hay medicamentos",
|
||
"emptyDescription": "Crea primero un medicamento con horario, después vuelve aquí para registrar la toma.",
|
||
"emptyCta": "Añadir medicamento",
|
||
"noneActionableTitle": "Nada que tomar hoy",
|
||
"noneActionableDescription": "Tus medicamentos están en pausa, se guardan solo como registro, o su tratamiento aún no ha empezado o ya ha terminado. Puedes seguir añadiendo una toma pasada desde el historial del medicamento.",
|
||
"noneActionableCta": "Abrir medicamentos"
|
||
},
|
||
"quickEntryDiscard": {
|
||
"title": "¿Descartar esta entrada?",
|
||
"description": "Tienes datos sin guardar. ¿Cerrar el formulario y perder lo que escribiste?",
|
||
"confirm": "Descartar",
|
||
"cancel": "Seguir editando"
|
||
},
|
||
"compliance7d": "Cumplimiento (7 días)",
|
||
"mood": "Estado de ánimo",
|
||
"customizeTitle": "Diseño del panel",
|
||
"heroItemsTitle": "Destacados de hoy",
|
||
"heroItemsDescription": "Elige qué tipos de elementos pueden aparecer en los destacados de hoy.",
|
||
"heroItemsNotificationNote": "Los ajustes de notificaciones se gestionan por separado.",
|
||
"heroContentTitle": "La tarjeta superior muestra",
|
||
"heroContentScore": "Puntuación de salud y resumen del día",
|
||
"heroContentReminders": "Destacados de hoy",
|
||
"heroItems": {
|
||
"coach_checkin": "Revisión con Coach",
|
||
"dose_window": "Dosis de medicamentos",
|
||
"preventive_care": "Atención preventiva",
|
||
"sync_issue": "Problemas de sincronización",
|
||
"milestone": "Hitos",
|
||
"ecg_new_recording": "Nuevos registros de ECG",
|
||
"tension_window": "Periodos de tensión",
|
||
"same_time_baseline": "Actividad a la misma hora",
|
||
"upcoming_visit": "Citas"
|
||
},
|
||
"layoutReset": "Restablecer valores por defecto",
|
||
"layoutResetTitle": "¿Restablecer el diseño del panel?",
|
||
"layoutResetBody": "El diseño de tus tarjetas y tus opciones para los destacados de hoy vuelven a los valores predeterminados.",
|
||
"layoutResetConfirm": "Restablecer diseño",
|
||
"layoutSaveSuccess": "Diseño del panel guardado",
|
||
"layoutSaveError": "No se ha podido guardar el diseño",
|
||
"layoutConflictReloaded": "Se ha recargado el diseño desde el servidor. Vuelve a aplicar tu cambio.",
|
||
"layoutResetSuccess": "Restablecido al diseño por defecto",
|
||
"layoutUsingDefaults": "Diseño por defecto activo",
|
||
"layoutCustomized": "Diseño personalizado activo",
|
||
"moveUp": "Subir",
|
||
"moveDown": "Bajar",
|
||
"layoutTileColumn": "Tarjeta",
|
||
"layoutChartColumn": "Gráfico",
|
||
"layoutNativeOnlyTitle": "Visible en la app móvil",
|
||
"layoutNativeOnlyHint": "Estos widgets los dibuja la app móvil, no esta página. Se guardan en el mismo diseño, así que aquí es donde se define su visibilidad.",
|
||
"dragHandle": "Arrastra para reordenar",
|
||
"dragHandleHint": "Arrastra el manejador para reordenar este widget. También puedes usar los botones de flecha Arriba y Abajo, o enfocar el manejador y pulsar Espacio más las flechas.",
|
||
"emptyTitle": "Tu panel está vacío",
|
||
"emptyDescription": "Registra tu primera medición o estado de ánimo. Las tarjetas y gráficas aparecerán automáticamente en cuanto haya datos.",
|
||
"emptyAddMeasurement": "Registrar la primera medición",
|
||
"staleHint": "Último valor hace {count} d",
|
||
"staleHintWeeksOne": "Último valor hace 1 semana",
|
||
"staleHintWeeksOther": "Último valor hace {count} semanas",
|
||
"staleHintWeeksFew": "Último valor hace {count} semanas",
|
||
"staleHintMonthsOne": "Último valor hace 1 mes",
|
||
"staleHintMonthsOther": "Último valor hace {count} meses",
|
||
"staleHintMonthsFew": "Último valor hace {count} meses",
|
||
"recentWorkouts": {
|
||
"title": "Entrenamientos recientes",
|
||
"viewAll": "Ver todos",
|
||
"empty": {
|
||
"title": "Aún no hay entrenamientos",
|
||
"cta": "Conecta una fuente de datos en los ajustes para ver aquí los entrenamientos."
|
||
}
|
||
},
|
||
"metric": {
|
||
"title": {
|
||
"weight": "Peso",
|
||
"bloodPressure": "Presión arterial",
|
||
"pulse": "Pulso",
|
||
"bodyFat": "Grasa corporal",
|
||
"glucose": "Glucemia",
|
||
"sleep": "Sueño",
|
||
"steps": "Pasos",
|
||
"totalBodyWater": "Agua corporal total",
|
||
"boneMass": "Masa ósea",
|
||
"oxygenSaturation": "Saturación de oxígeno",
|
||
"mood": "Estado de ánimo",
|
||
"bmi": "IMC"
|
||
},
|
||
"unit": {
|
||
"weight": "kg",
|
||
"bloodPressure": "mmHg",
|
||
"pulse": "bpm",
|
||
"bodyFat": "%",
|
||
"glucose": "mg/dL",
|
||
"sleep": "h",
|
||
"steps": "pasos",
|
||
"totalBodyWater": "kg",
|
||
"boneMass": "kg",
|
||
"oxygenSaturation": "%",
|
||
"mood": "/5",
|
||
"bmi": "kg/m²"
|
||
}
|
||
},
|
||
"keyBackupBanner": {
|
||
"title": "Haz una copia de tu clave de cifrado",
|
||
"body": "Sin una copia de la clave, tus datos no se pueden recuperar tras una reinstalación. Es cuestión de un minuto.",
|
||
"action": "Abrir el paso"
|
||
},
|
||
"quickAddSymptom": "Registrar síntoma",
|
||
"todayCardVisible": "Mostrar la tarjeta superior"
|
||
},
|
||
"measurements": {
|
||
"title": "Mediciones",
|
||
"subtitle": "Registra lecturas y consulta el historial completo.",
|
||
"addMeasurement": "Añadir",
|
||
"editMeasurement": "Editar medición",
|
||
"type": "Tipo",
|
||
"value": "Valor",
|
||
"date": "Fecha",
|
||
"source": "Fuente",
|
||
"notes": "Notas",
|
||
"typeWeight": "Peso",
|
||
"typeBloodPressure": "Presión arterial",
|
||
"typeBpSys": "Sis",
|
||
"typeBpDia": "Dia",
|
||
"typePulse": "Pulso",
|
||
"typeBodyFat": "Grasa corporal",
|
||
"typeSleep": "Sueño",
|
||
"typeSteps": "Pasos",
|
||
"typeBloodGlucose": "Glucemia",
|
||
"typeTotalBodyWater": "Agua corporal total",
|
||
"typeBoneMass": "Masa ósea",
|
||
"typeOxygenSaturation": "Saturación de oxígeno",
|
||
"typeHeartRateVariability": "Variabilidad de la frecuencia cardiaca",
|
||
"typeRestingHeartRate": "Frecuencia cardíaca en reposo",
|
||
"typeActiveEnergyBurned": "Energía activa",
|
||
"typeFlightsClimbed": "Escaleras",
|
||
"typeWalkingRunningDistance": "Distancia a pie y corriendo",
|
||
"typeVo2Max": "VO₂ máx",
|
||
"typeBodyTemperature": "Temperatura corporal",
|
||
"typeFatFreeMass": "Masa libre de grasa",
|
||
"typeFatMass": "Masa grasa",
|
||
"typeMuscleMass": "Masa muscular",
|
||
"typeSkinTemperature": "Temperatura de la piel",
|
||
"typePulseWaveVelocity": "Velocidad de la onda de pulso",
|
||
"typeVascularAge": "Edad vascular",
|
||
"typeVisceralFat": "Grasa visceral",
|
||
"typeAudioExposureEnv": "Exposición al ruido (ambiente)",
|
||
"typeAudioExposureHeadphone": "Exposición al ruido (auriculares)",
|
||
"typeTimeInDaylight": "Tiempo a la luz del día",
|
||
"typeWalkingSteadiness": "Estabilidad al caminar",
|
||
"typeAudioExposureEvent": "Evento de escucha alta",
|
||
"typeRespiratoryRate": "Frecuencia respiratoria",
|
||
"typeBodyMassIndex": "Índice de masa corporal",
|
||
"typeLeanBodyMass": "Masa magra",
|
||
"typeWalkingHeartRateAverage": "Frecuencia cardíaca al caminar (media)",
|
||
"typeWalkingAsymmetry": "Asimetría al caminar",
|
||
"typeWalkingDoubleSupport": "Doble apoyo al caminar",
|
||
"typeWalkingStepLength": "Longitud de zancada",
|
||
"typeWalkingSpeed": "Velocidad al caminar",
|
||
"glucoseContext": "Contexto",
|
||
"glucoseContextFasting": "En ayunas (≥8 h sin comer)",
|
||
"glucoseContextPostprandial": "Posprandial (2 h tras comer)",
|
||
"glucoseContextRandom": "Cualquiera / sin contexto",
|
||
"glucoseContextBedtime": "Antes de acostarse",
|
||
"unitHours": "Horas",
|
||
"unitSteps": "Pasos",
|
||
"sourceManual": "Manual",
|
||
"sourceWithings": "Withings",
|
||
"sourceImport": "Importar",
|
||
"sourceAppleHealth": "Apple Health",
|
||
"systolicLabel": "Sistólica (mmHg)",
|
||
"diastolicLabel": "Diastólica (mmHg)",
|
||
"pulseLabel": "Pulso (lpm)",
|
||
"valueWithUnit": "Valor ({unit})",
|
||
"timestamp": "Hora",
|
||
"timestampBackdateHint": "Ajusta la fecha y la hora para registrar una lectura pasada.",
|
||
"notesPlaceholder": "p. ej. después de comer",
|
||
"formReset": "Restablecer formulario",
|
||
"saveError": "Error al guardar",
|
||
"duplicateTimestamp": "Ya existe una medición de este tipo en la marca de tiempo seleccionada.",
|
||
"serverOwnedSource": "Los valores de una fuente conectada no se pueden editar, pero la fecha y la nota siguen siendo editables.",
|
||
"deleteError": "Error al eliminar",
|
||
"deletedToast": "Medición eliminada",
|
||
"restoredToast": "Medición restaurada",
|
||
"restoreError": "Error al restaurar",
|
||
"invalidValue": "Introduce un valor válido.",
|
||
"invalidTimestamp": "Selecciona una fecha y hora válidas.",
|
||
"loginRequired": "Inicia sesión para ver las mediciones.",
|
||
"allTypes": "Todos los tipos",
|
||
"measurementCount": "{count} mediciones",
|
||
"emptyTitle": "Aún no hay mediciones",
|
||
"emptyDescription": "Registra peso, tensión arterial, pulso u otros valores para detectar tendencias.",
|
||
"emptyFilteredTitle": "Ninguna medición coincide con el filtro",
|
||
"emptyFilteredDescription": "Elige otro tipo o quita el filtro para ver todas las mediciones.",
|
||
"emptyAddFirst": "Registrar la primera medición",
|
||
"emptyResetFilter": "Mostrar todos los tipos",
|
||
"comment": "Comentario",
|
||
"actions": "Acciones",
|
||
"deleteConfirmTitle": "¿Eliminar medición?",
|
||
"deleteConfirmDescription": "Esta medición se eliminará. Justo después podrás deshacerlo durante un breve momento.",
|
||
"pageInfo": "Página {page} de {total}",
|
||
"previousPage": "Página anterior",
|
||
"nextPage": "Página siguiente",
|
||
"dailyTotalCaption": "({count} muestras)",
|
||
"openMetricInsights": "Abrir análisis de {type}",
|
||
"sleepNapCaption": "incl. {count} siesta(s)",
|
||
"sleepAwakeningsCaption": "{count} despertar(es)",
|
||
"expandDay": "Mostrar las muestras de este día",
|
||
"collapseDay": "Ocultar las muestras de este día",
|
||
"loadError": "No se pudieron cargar las mediciones.",
|
||
"typeCardioRecovery": "Recuperación cardiaca",
|
||
"typeWristTemperature": "Temperatura de muñeca",
|
||
"typeFallCount": "Caídas",
|
||
"typeSixMinuteWalkDistance": "Distancia en marcha de 6 minutos",
|
||
"typeStairAscentSpeed": "Velocidad subiendo escaleras",
|
||
"typeStairDescentSpeed": "Velocidad bajando escaleras",
|
||
"typeBreathingDisturbances": "Alteraciones respiratorias del sueño",
|
||
"typeIrregularRhythmNotification": "Aviso de ritmo irregular",
|
||
"typeHighHeartRateEvent": "Aviso de frecuencia cardíaca alta",
|
||
"typeLowHeartRateEvent": "Aviso de frecuencia cardíaca baja",
|
||
"typeWalkingSteadinessEvent": "Aviso de estabilidad al caminar",
|
||
"typeBreathingDisturbanceEvent": "Alteración respiratoria",
|
||
"typeRecoveryScore": "Puntuación de recuperación",
|
||
"typeStressScore": "Puntuación de estrés",
|
||
"typeStrainScore": "Puntuación de esfuerzo",
|
||
"typeHrvRmssd": "VFC (RMSSD)",
|
||
"typeDayStrain": "Esfuerzo del día",
|
||
"typeWorkoutStrain": "Esfuerzo del entrenamiento",
|
||
"typeSleepPerformance": "Rendimiento del sueño",
|
||
"typeSleepEfficiency": "Eficiencia del sueño",
|
||
"typeSleepConsistency": "Consistencia del sueño",
|
||
"typeSleepNeed": "Necesidad de sueño",
|
||
"typeEnergyExpenditureKj": "Gasto energético",
|
||
"typeAverageHeartRate": "Frecuencia cardíaca media",
|
||
"typeMaxHeartRate": "Frecuencia cardíaca máxima",
|
||
"typeSleepDisturbanceCount": "Interrupciones del sueño",
|
||
"typeAnsCharge": "Carga del SNA",
|
||
"typeCardioLoad": "Carga cardio",
|
||
"typeSleepScore": "Puntuación de sueño",
|
||
"typeBodyTemperatureDeviation": "Desviación de temperatura corporal",
|
||
"typeResilience": "Resiliencia",
|
||
"sourceComputed": "Calculado",
|
||
"sourceWhoop": "WHOOP",
|
||
"sourceFitbit": "Fitbit",
|
||
"sourceNightscout": "Nightscout",
|
||
"sourcePolar": "Polar",
|
||
"sourceOura": "Oura",
|
||
"sourceTelegram": "Telegram",
|
||
"sourceMcp": "MCP",
|
||
"sourceGoogleHealth": "Google Health",
|
||
"sourceStrava": "Strava",
|
||
"sourceExternal": "Dispositivo externo",
|
||
"bulkDeleteSuccess": "{count} mediciones eliminadas",
|
||
"bulkDeleteSuccessOne": "Medición eliminada",
|
||
"bulkDeleteError": "Error al eliminar las mediciones seleccionadas",
|
||
"bulkDeleteConfirmTitle": "¿Eliminar {count} mediciones?",
|
||
"bulkDeleteConfirmTitleOne": "¿Eliminar esta medición?",
|
||
"bulkDeleteConfirmBody": "Las {count} mediciones seleccionadas se eliminarán. Justo después podrás deshacerlo durante un breve momento.",
|
||
"bulkDeleteConfirmBodyOne": "La medición seleccionada se eliminará. Justo después podrás deshacerlo durante un breve momento.",
|
||
"typePhq9Score": "Puntuación PHQ-9",
|
||
"typeGad7Score": "Puntuación GAD-7",
|
||
"typeGripStrength": "Fuerza de agarre",
|
||
"typePainNrs": "Dolor (0–10)",
|
||
"typeWaistCircumference": "Perímetro de cintura",
|
||
"typeWaistToHeight": "Índice cintura-altura",
|
||
"unitScore": "pts",
|
||
"unitRatio": "ratio",
|
||
"unitRating": "nivel",
|
||
"typeWho5Score": "Puntuación WHO-5",
|
||
"typeSciScore": "Puntuación SCI",
|
||
"typeExerciseMinutes": "Minutos de ejercicio",
|
||
"typeStandMinutes": "Minutos de pie",
|
||
"typeStandHours": "Horas de pie",
|
||
"typeMindfulMinutes": "Minutos de atención plena",
|
||
"typeStateOfMindValence": "Estado de ánimo",
|
||
"typeAfibBurden": "Carga de FA",
|
||
"typeIndoorCo2": "CO₂ interior",
|
||
"typeIndoorTemperature": "Temperatura interior",
|
||
"typeIndoorHumidity": "Humedad interior",
|
||
"durationReadAs": "Se lee como {duration}",
|
||
"durationHoursMinutes": "{hours} h {minutes} min",
|
||
"durationHoursOnly": "{hours} h",
|
||
"durationMinutesOnly": "{minutes} min",
|
||
"durationInvalid": "Escribe una duración como 7,5, 7:30 o 7h 30m.",
|
||
"durationTooLong": "Una entrada no puede durar más de 24 horas.",
|
||
"sourceHealthConnect": "Health Connect"
|
||
},
|
||
"metricCatalog": {
|
||
"title": "Lo que HealthLog puede registrar",
|
||
"description": "Todos los ámbitos de métricas que admite HealthLog, tengas datos o no todavía, y qué los proporciona.",
|
||
"statusPresent": "Registrado",
|
||
"statusAbsent": "Aún sin registrar",
|
||
"statusModuleOff": "Desactivado",
|
||
"loadError": "No se pudo cargar el estado de seguimiento.",
|
||
"connectCta": "Conectar una fuente",
|
||
"viewCta": "Ver",
|
||
"ecg": {
|
||
"source": "Tiras de ECG de una derivación desde un reloj compatible (hoy, Withings ScanWatch), sincronizadas automáticamente."
|
||
},
|
||
"watchdog": {
|
||
"title": "Supervisión automática",
|
||
"description": "HealthLog también vigila en segundo plano (notificaciones de ritmo irregular y alteraciones respiratorias de un reloj conectado, alertas de desviación de tu valor de referencia, y cambios destacables entre tus dos últimos paneles de laboratorio) y solo muestra una tarjeta cuando algo destaca. Si al menos una de esas fuentes está conectada, que no aparezca ninguna tarjeta es una buena señal, no una función ausente; si todavía no hay ninguna conectada, sencillamente no se está vigilando nada."
|
||
}
|
||
},
|
||
"mood": {
|
||
"title": "Estado de ánimo",
|
||
"subtitle": "Tendencia y registros de estado de ánimo",
|
||
"mentalWellbeingLink": "Hacer un chequeo de bienestar mental",
|
||
"addEntry": "Añadir",
|
||
"editEntry": "Editar entrada",
|
||
"moodLevel": "Estado de ánimo",
|
||
"heroQuestion": "¿Cómo estás?",
|
||
"factorYes": "Sí",
|
||
"factorNo": "No",
|
||
"factorRatingOption": "{label}: {value} de {max}",
|
||
"tags": "Etiquetas",
|
||
"tagsPlaceholder": "p. ej. deporte, trabajo, familia",
|
||
"tagsHelp": "Separa con comas",
|
||
"timestamp": "Hora",
|
||
"date": "Fecha",
|
||
"source": "Fuente",
|
||
"levelSuperGut": "Genial",
|
||
"levelGut": "Bien",
|
||
"levelOkay": "Bien",
|
||
"levelSchlecht": "Mal",
|
||
"levelLausig": "Pésimo",
|
||
"sourceMoodlog": "moodLog",
|
||
"allMoods": "Todos los estados",
|
||
"entryCount": "{count} entradas",
|
||
"emptyTitle": "Aún no hay entradas de estado de ánimo",
|
||
"emptyDescription": "Registra cómo te sientes hoy para descubrir patrones con el tiempo.",
|
||
"emptyFilteredTitle": "Ninguna entrada coincide con el filtro",
|
||
"emptyFilteredDescription": "Elige otro nivel o quita el filtro para ver todas las entradas.",
|
||
"emptyAddFirst": "Registrar primer estado",
|
||
"emptyResetFilter": "Mostrar todos los estados",
|
||
"actions": "Acciones",
|
||
"formReset": "Restablecer formulario",
|
||
"noteCharCount": "{count}/{max}",
|
||
"formResetConfirmTitle": "¿Restablecer este formulario?",
|
||
"formResetConfirmBody": "Esto borra el estado de ánimo, las etiquetas y la nota que has introducido. No se puede deshacer.",
|
||
"formResetConfirmAction": "Restablecer",
|
||
"saveError": "Error al guardar",
|
||
"tagsNotSaved": "Guardado. Se omitieron las etiquetas que ya no están disponibles.",
|
||
"deleteError": "Error al eliminar",
|
||
"deletedToast": "Entrada eliminada",
|
||
"restoredToast": "Entrada restaurada",
|
||
"restoreError": "Error al restaurar",
|
||
"invalidTimestamp": "Selecciona una fecha y hora válidas.",
|
||
"deleteConfirmTitle": "¿Eliminar entrada?",
|
||
"deleteConfirmDescription": "Esta entrada de estado de ánimo se eliminará. Justo después podrás deshacerlo durante un breve momento.",
|
||
"pageInfo": "Página {page} de {total}",
|
||
"previousPage": "Página anterior",
|
||
"nextPage": "Página siguiente",
|
||
"loginRequired": "Inicia sesión para ver tus estados de ánimo.",
|
||
"note": "Nota",
|
||
"noteCollapse": "Contraer nota",
|
||
"noteExpand": "Mostrar nota completa",
|
||
"notePlaceholder": "Añade una nota sobre cómo te sientes…",
|
||
"tagPicker": "Etiquetas",
|
||
"tagCategory": {
|
||
"feelings": "Sentimientos",
|
||
"sleep": "Sueño",
|
||
"health": "Salud",
|
||
"social": "Social",
|
||
"work": "Trabajo",
|
||
"hobbies": "Aficiones",
|
||
"factors": "Factores",
|
||
"custom": "Personalizadas"
|
||
},
|
||
"tag": {
|
||
"happy": "feliz",
|
||
"excited": "emocionado",
|
||
"grateful": "agradecido",
|
||
"relaxed": "relajado",
|
||
"content": "satisfecho",
|
||
"tired": "cansado",
|
||
"unsure": "inseguro",
|
||
"bored": "aburrido",
|
||
"tense": "tenso",
|
||
"angry": "enfadado",
|
||
"stressed": "estresado",
|
||
"sad": "triste",
|
||
"sleptWell": "dormí bien",
|
||
"sleptOk": "dormí regular",
|
||
"sleptPoorly": "dormí mal",
|
||
"earlyNight": "me acosté pronto",
|
||
"workedOut": "entrené",
|
||
"ateWell": "comí bien",
|
||
"hydrated": "bebí agua",
|
||
"walked": "caminé",
|
||
"alcohol": "alcohol",
|
||
"caffeine": "cafeína",
|
||
"nicotine": "nicotina",
|
||
"family": "familia",
|
||
"friends": "amigos",
|
||
"party": "fiesta",
|
||
"alone": "solo",
|
||
"productive": "productivo",
|
||
"overtime": "horas extra",
|
||
"dayOff": "día libre",
|
||
"travel": "viaje",
|
||
"sickDay": "día de baja",
|
||
"movies": "películas",
|
||
"reading": "lectura",
|
||
"gaming": "videojuegos",
|
||
"music": "música",
|
||
"outdoors": "aire libre",
|
||
"fastFood": "comida rápida",
|
||
"noSweets": "sin dulces",
|
||
"bigMeal": "comilona",
|
||
"factorWork": "trabajo",
|
||
"factorSocial": "vida social",
|
||
"factorSleepQuality": "calidad del sueño",
|
||
"factorStress": "estrés",
|
||
"factorConflict": "conflicto",
|
||
"factorFamily": "familia",
|
||
"factorSadness": "tristeza",
|
||
"praise": "elogio"
|
||
},
|
||
"sourceManual": "Manual",
|
||
"sourceWeb": "Web",
|
||
"sourceTelegram": "Telegram",
|
||
"sourceDaylio": "Daylio",
|
||
"bulkDeleteSuccess": "{count} entradas eliminadas",
|
||
"bulkDeleteSuccessOne": "Entrada eliminada",
|
||
"bulkDeleteError": "Error al eliminar las entradas seleccionadas",
|
||
"bulkDeleteConfirmTitle": "¿Eliminar {count} entradas?",
|
||
"bulkDeleteConfirmTitleOne": "¿Eliminar esta entrada?",
|
||
"bulkDeleteConfirmBody": "Las {count} entradas de estado de ánimo seleccionadas se eliminarán. Justo después podrás deshacerlo durante un breve momento.",
|
||
"bulkDeleteConfirmBodyOne": "La entrada de estado de ánimo seleccionada se eliminará. Justo después podrás deshacerlo durante un breve momento.",
|
||
"customize": "Personalizar etiquetas de ánimo",
|
||
"addTagInline": "Añadir etiqueta",
|
||
"manage": {
|
||
"groupsTitle": "Grupos",
|
||
"groupsDescription": "Crea tus propios grupos y define su orden en el selector.",
|
||
"newGroup": "Nuevo grupo",
|
||
"groupLabel": "Nombre del grupo",
|
||
"groupIcon": "Icono",
|
||
"groupCreated": "Grupo creado",
|
||
"groupRenamed": "Grupo guardado",
|
||
"groupDeleteTitle": "¿Eliminar grupo?",
|
||
"groupDeleteBody": "Las etiquetas de este grupo vuelven a su grupo original. No se elimina ninguna entrada.",
|
||
"groupDeleted": "Grupo eliminado",
|
||
"groupEmpty": "Aún no hay grupos propios.",
|
||
"groupLimitReached": "Límite de grupos alcanzado",
|
||
"tagsTitle": "Etiquetas",
|
||
"tagsDescription": "Oculta, reordena, mueve o edita las etiquetas del selector.",
|
||
"newTag": "Nueva etiqueta",
|
||
"tagLabel": "Nombre de la etiqueta",
|
||
"tagIcon": "Icono",
|
||
"tagGroup": "Grupo",
|
||
"usageCount": "{count} entradas",
|
||
"hideTag": "Ocultar etiqueta",
|
||
"showTag": "Mostrar etiqueta",
|
||
"moveToGroup": "Mover a grupo",
|
||
"archive": "Archivar",
|
||
"restore": "Restaurar",
|
||
"archivedTitle": "Etiquetas archivadas",
|
||
"archivedDescription": "Las etiquetas archivadas permanecen en tus entradas anteriores; solo desaparecen del selector.",
|
||
"archivedEmpty": "Nada archivado.",
|
||
"purgeTitle": "¿Eliminar etiqueta definitivamente?",
|
||
"purgeBody": "Esto elimina la etiqueta de {count} entradas anteriores. No se puede deshacer.",
|
||
"purgeAction": "Eliminar definitivamente",
|
||
"purged": "Etiqueta eliminada",
|
||
"tagLimitReached": "Límite de etiquetas alcanzado",
|
||
"iconPickerTitle": "Elegir icono",
|
||
"iconSearchPlaceholder": "Buscar iconos…",
|
||
"iconSearchEmpty": "Ningún icono coincide.",
|
||
"iconSearchClear": "Borrar búsqueda",
|
||
"orderSave": "Guardar orden",
|
||
"orderSaved": "Orden guardado",
|
||
"moveUp": "Subir",
|
||
"moveDown": "Bajar",
|
||
"iconGroupEmotions": "Emociones",
|
||
"iconGroupActivities": "Actividades",
|
||
"iconGroupHealth": "Salud",
|
||
"iconGroupFood": "Comida y bebida",
|
||
"iconGroupWeather": "Tiempo",
|
||
"iconGroupPlaces": "Lugares",
|
||
"iconGroupMisc": "Otros"
|
||
},
|
||
"sectionMoreTags": "Más etiquetas",
|
||
"sectionNoteDetails": "Nota y detalles",
|
||
"quickTagsHelp": "Tus etiquetas frecuentes: un toque",
|
||
"quickTagsExpand": "Más",
|
||
"loadError": "No se pudieron cargar tus registros de estado de ánimo.",
|
||
"sectionLevelA": "Estado emocional",
|
||
"sectionLevelAHelp": "Opcional. Lo que no toques queda vacío.",
|
||
"dimensionNotAnswered": "sin indicar",
|
||
"dimensionClear": "borrar",
|
||
"dimensionValueText": "{value} de {max}: {low} a {high}",
|
||
"dimension": {
|
||
"a1": {
|
||
"label": "Estado de ánimo",
|
||
"low": "muy desagradable",
|
||
"high": "muy agradable"
|
||
},
|
||
"a2": {
|
||
"label": "Estrés",
|
||
"low": "completamente relajado",
|
||
"high": "extremadamente tenso"
|
||
},
|
||
"a3": {
|
||
"label": "Energía",
|
||
"low": "agotado",
|
||
"high": "lleno de energía"
|
||
},
|
||
"a4": {
|
||
"label": "Conexión",
|
||
"low": "aislado",
|
||
"high": "comprendido y apoyado"
|
||
},
|
||
"a5": {
|
||
"label": "Estabilidad",
|
||
"low": "completamente desbordado",
|
||
"high": "con plena capacidad de acción"
|
||
}
|
||
},
|
||
"context": {
|
||
"section": {
|
||
"work": "Trabajo",
|
||
"contacts": "Contactos",
|
||
"leisure": "Tiempo libre",
|
||
"events": "Acontecimiento"
|
||
},
|
||
"field": {
|
||
"workStatus": "Jornada laboral",
|
||
"workMinutes": "Tiempo trabajado",
|
||
"overtimeMinutes": "Horas extra",
|
||
"workLoad": "Carga de trabajo",
|
||
"workSatisfaction": "Satisfacción con el trabajo",
|
||
"contactCircles": "Con quién hubo contacto",
|
||
"contactForm": "Forma de contacto",
|
||
"contactExtent": "Duración",
|
||
"contactQuality": "Calidad del contacto",
|
||
"contactSupport": "Apoyo percibido",
|
||
"leisureCategories": "En qué se empleó el tiempo libre",
|
||
"leisureMinutes": "Tiempo para ti",
|
||
"leisureJoy": "Disfrute",
|
||
"leisureRecovery": "Recuperación",
|
||
"eventType": "Qué ocurrió",
|
||
"eventValence": "Cómo sentó",
|
||
"eventAt": "Cuándo",
|
||
"notes": "Nota"
|
||
},
|
||
"workStatus": {
|
||
"off": "Sin trabajar",
|
||
"partial": "Parte del día",
|
||
"regular": "Jornada normal",
|
||
"overtime": "Más de lo habitual"
|
||
},
|
||
"contactCircles": {
|
||
"partner": "Pareja",
|
||
"child": "Hijo o hija",
|
||
"family": "Familia",
|
||
"friends": "Amistades",
|
||
"colleagues": "Colegas",
|
||
"acquaintances": "Conocidos",
|
||
"professional": "Apoyo profesional",
|
||
"other": "Otras personas"
|
||
},
|
||
"contactForm": {
|
||
"inPerson": "En persona",
|
||
"phone": "Teléfono",
|
||
"video": "Videollamada",
|
||
"written": "Por escrito"
|
||
},
|
||
"contactExtent": {
|
||
"brief": "Breve",
|
||
"medium": "Medio",
|
||
"extended": "Prolongado"
|
||
},
|
||
"leisureCategories": {
|
||
"film": "Cine o series",
|
||
"reading": "Lectura",
|
||
"gaming": "Videojuegos",
|
||
"music": "Música",
|
||
"creative": "Algo creativo",
|
||
"outing": "Salida",
|
||
"garden": "Jardín",
|
||
"cooking": "Cocinar",
|
||
"timeWithChild": "Tiempo con el hijo o la hija",
|
||
"relaxation": "Descanso",
|
||
"other": "Otra cosa"
|
||
},
|
||
"eventType": {
|
||
"goodNews": "Buenas noticias",
|
||
"badNews": "Malas noticias",
|
||
"success": "Algo salió bien",
|
||
"disappointment": "Una decepción",
|
||
"conflict": "Un conflicto",
|
||
"appointment": "Una cita",
|
||
"familyEvent": "Un acontecimiento familiar",
|
||
"change": "Un cambio",
|
||
"unexpected": "Algo inesperado"
|
||
},
|
||
"rating": {
|
||
"workLoad": {
|
||
"low": "sin presión",
|
||
"high": "bajo mucha presión"
|
||
},
|
||
"workSatisfaction": {
|
||
"low": "nada satisfecho",
|
||
"high": "muy satisfecho"
|
||
},
|
||
"contactQuality": {
|
||
"low": "no sentó bien",
|
||
"high": "sentó muy bien"
|
||
},
|
||
"contactSupport": {
|
||
"low": "sin apoyo",
|
||
"high": "muy apoyado"
|
||
},
|
||
"leisureJoy": {
|
||
"low": "sin disfrute",
|
||
"high": "mucho disfrute"
|
||
},
|
||
"leisureRecovery": {
|
||
"low": "nada reparador",
|
||
"high": "muy reparador"
|
||
},
|
||
"eventValence": {
|
||
"low": "claramente malo",
|
||
"high": "claramente bueno"
|
||
}
|
||
}
|
||
},
|
||
"dayContext": {
|
||
"minutesPlaceholder": "Minutos",
|
||
"contactsHelp": "Cuántas personas fueron no dice nada del día. Lo que cuenta es cómo se sintió el contacto.",
|
||
"notePlaceholder": "Cualquier otra cosa que forme parte de este día",
|
||
"notRecorded": "sin registrar",
|
||
"linkedTitle": "De tus otros módulos",
|
||
"linkedHelp": "Se lee de donde está guardado. Cámbialo allí y cambia aquí.",
|
||
"linkedSleep": "Dormido",
|
||
"linkedInBed": "En la cama",
|
||
"linkedSteps": "Pasos",
|
||
"linkedActiveEnergy": "Energía activa",
|
||
"linkedRestingHeartRate": "Pulso en reposo",
|
||
"linkedHrv": "Variabilidad cardiaca",
|
||
"bodyLogged": "Registrado en el diario de enfermedad: {count} síntomas",
|
||
"bodyNotLogged": "No hay nada registrado en el diario de enfermedad para este día",
|
||
"openIllness": "Abrir"
|
||
},
|
||
"sourceNotification": "Notificación",
|
||
"tagCatalogLoadError": "No se pudieron cargar las etiquetas."
|
||
},
|
||
"medications": {
|
||
"title": "Medicamentos",
|
||
"subtitle": "Medicación, horarios y tomas",
|
||
"loginRequired": "Inicia sesión para gestionar medicamentos.",
|
||
"addMedication": "Añadir",
|
||
"firstMedication": "Añadir el primer medicamento",
|
||
"addChoice": {
|
||
"logIntake": "Registrar una toma",
|
||
"newMedication": "Nuevo medicamento"
|
||
},
|
||
"takeAllDue": {
|
||
"button": "Tomar todas las pendientes",
|
||
"dialogTitle": "Tomar medicamentos pendientes",
|
||
"dialogDescription": "Estos medicamentos están pendientes ahora. Confirma para registrarlos todos como tomados.",
|
||
"confirm": "Tomar todos ({count})",
|
||
"successToast": "{count} tomas registradas",
|
||
"partialToast": "{taken} registradas, {failed} fallidas. Inténtalo de nuevo",
|
||
"failedToast": "No se registró ninguna toma. Inténtalo de nuevo"
|
||
},
|
||
"logIntake": {
|
||
"dialogTitle": "Registrar una toma",
|
||
"dialogDescription": "Registra una dosis de un medicamento existente. Puedes posfecharla a una fecha y hora pasadas.",
|
||
"medicationLabel": "Medicamento",
|
||
"slotLabel": "Franja del horario",
|
||
"slotNone": "Sin franja concreta",
|
||
"doseLabel": "Dosis",
|
||
"doseHint": "Precargado con la dosis del medicamento o de la franja. Edítala para registrar una dosis diferente solo para esta toma.",
|
||
"takenAtLabel": "Fecha y hora",
|
||
"takenAtHint": "Por defecto es ahora; elige una fecha y hora anteriores para registrar una dosis pasada.",
|
||
"skippedLabel": "Registrar como omitida",
|
||
"noMedications": "Añade primero un medicamento y luego podrás registrar tomas para él.",
|
||
"cancel": "Cancelar",
|
||
"submit": "Registrar toma",
|
||
"slotError": "No se pudo asignar una hora al intervalo seleccionado. Elige otro intervalo o «Sin intervalo específico»."
|
||
},
|
||
"emptyTitle": "Aún no hay medicamentos",
|
||
"emptyDescription": "Crea medicamentos, dosis y franjas horarias para registrar el cumplimiento.",
|
||
"loadFailed": "No se han podido cargar los medicamentos",
|
||
"retryLoad": "Reintentar",
|
||
"inactive": "En pausa",
|
||
"intakeHistory": "Historial de tomas",
|
||
"openDetailPage": "Abrir la página de detalle del medicamento",
|
||
"compliance": "Cumplimiento",
|
||
"importIntakes": "Importar tomas",
|
||
"importDescription": "Pega un array JSON con los datos de tomas. Formato esperado:",
|
||
"importUploadFile": "Subir archivo JSON",
|
||
"importPaste": "Pega el JSON aquí...",
|
||
"importSelected": "Seleccionado: {name}",
|
||
"importFileLoaded": "Archivo \"{name}\" cargado",
|
||
"importInvalidJson": "El archivo no contiene un JSON válido",
|
||
"importNoArray": "No se encontró ningún array",
|
||
"importFailed": "Falló la importación",
|
||
"importInvalidFormat": "Formato JSON no válido",
|
||
"requestExample": "Ejemplo de solicitud",
|
||
"categoryBloodPressure": "Presión arterial",
|
||
"categoryVitamin": "Vitaminas",
|
||
"categoryThyroid": "Tiroides",
|
||
"categoryHormone": "Hormonas",
|
||
"categorySupplement": "Suplemento",
|
||
"categoryPainRelief": "Analgésico",
|
||
"categoryAllergy": "Alergia",
|
||
"categoryDigestive": "Digestivo",
|
||
"categorySkin": "Cuidado de la piel",
|
||
"categorySleepAid": "Para dormir",
|
||
"categoryDiabetes": "Diabetes",
|
||
"categoryAntibiotic": "Antibiótico",
|
||
"categoryMentalHealth": "Salud mental",
|
||
"categoryOther": "Otros",
|
||
"daysSun": "Do",
|
||
"daysMon": "Lu",
|
||
"daysTue": "Ma",
|
||
"daysWed": "Mi",
|
||
"daysThu": "Ju",
|
||
"daysFri": "Vi",
|
||
"daysSat": "Sa",
|
||
"back": "Atrás",
|
||
"today": "Hoy",
|
||
"yesterday": "Ayer",
|
||
"tomorrow": "Mañana",
|
||
"asNeededMarker": "Según necesidad",
|
||
"recordOnlyBadge": "Solo registro",
|
||
"courseEndedBadge": "Finalizado",
|
||
"trackIntake": {
|
||
"title": "Registro de tomas",
|
||
"label": "Registrar tomas",
|
||
"helperOn": "Las dosis tocan según este horario, con recordatorios y adherencia.",
|
||
"helperOff": "Se guarda como registro: nada queda pendiente, sin recordatorios ni adherencia.",
|
||
"enabledToast": "Registro de tomas activado",
|
||
"disabledToast": "Registro de tomas desactivado",
|
||
"toggleFailed": "No se pudo cambiar el registro de tomas."
|
||
},
|
||
"autoMarkTaken": {
|
||
"label": "Registrar las tomas automáticamente",
|
||
"helper": "HealthLog registra cada dosis programada como tomada a su hora. Puedes seguir cambiando u omitiendo una dosis a mano. No se envían recordatorios.",
|
||
"cardHint": "Se registra automáticamente",
|
||
"enabledToast": "Las tomas se registran ahora automáticamente",
|
||
"disabledToast": "Las tomas ya no se registran automáticamente",
|
||
"toggleFailed": "No se pudo cambiar el registro automático."
|
||
},
|
||
"withoutNotification": "Sin notificación",
|
||
"pausedSince": "En pausa desde",
|
||
"takeNow": "Tomar ahora",
|
||
"lastDoseYesterday": "Última dosis ayer",
|
||
"lastDoseDaysAgo": "Última dosis hace {count} días",
|
||
"overdue": "Vencida",
|
||
"veryOverdue": "Muy vencida",
|
||
"complianceWindow": "Cumplimiento {days} días",
|
||
"complianceUnavailable": "No se pudo cargar el cumplimiento",
|
||
"complianceNotApplicable": "El cumplimiento no es aplicable",
|
||
"complianceNotApplicableReason": "No hay un horario local guardado en HealthLog.",
|
||
"complianceInfo": "Proporción de dosis registradas respecto a las esperadas. Las pautas semanales se cuentan semana a semana.",
|
||
"complianceInfoLabel": "¿Qué significa el cumplimiento?",
|
||
"lastIntake": "Última toma:",
|
||
"nextIntake": "Próxima toma:",
|
||
"nextIntakeOverdue": "Atrasada desde {time}, aún se puede tomar",
|
||
"dayStreak": "días de racha",
|
||
"dayStreakOne": "día de racha",
|
||
"cycleDueToday": "Pendiente hoy",
|
||
"cycleNoClosedCycles": "Aún no hay ciclos de dosis completados",
|
||
"taken": "Tomada",
|
||
"skipped": "Omitida",
|
||
"intakeToastTaken": "{name} registrada como tomada",
|
||
"intakeToastSkipped": "{name} omitida",
|
||
"intakeToastFailed": "No se pudo registrar {name}; inténtalo de nuevo",
|
||
"intakeUndo": "Deshacer",
|
||
"intakeUndone": "Entrada revertida",
|
||
"intakeUndoFailed": "No se pudo deshacer; corrígelo en el historial",
|
||
"glp1LastInjection": "{label}",
|
||
"glp1NextInjectionDays": "{label} (en {days} días)",
|
||
"glp1NextInjectionToday": "hoy",
|
||
"glp1NextInjectionTomorrow": "mañana",
|
||
"glp1RotationSuggested": "Sugerido: {site}",
|
||
"glp1LogSideEffect": "Registrar efecto secundario",
|
||
"sideEffects": {
|
||
"section": "Efectos secundarios",
|
||
"addCta": "Registrar",
|
||
"sheetTitle": "Registrar un efecto secundario",
|
||
"categoryLabel": "Categoría",
|
||
"entryLabel": "Síntoma",
|
||
"severityLabel": "Gravedad",
|
||
"severity": {
|
||
"mild": "Leve",
|
||
"moderate": "Moderado",
|
||
"significant": "Notable",
|
||
"severe": "Grave",
|
||
"verySevere": "Muy grave"
|
||
},
|
||
"notesLabel": "Notas (opcional)",
|
||
"notesPlaceholder": "Lo que merezca la pena anotar, máx. 280 caracteres",
|
||
"submitCta": "Guardar",
|
||
"cancelCta": "Cancelar",
|
||
"emptyState": "Aún no hay efectos secundarios registrados. Hacer seguimiento puede ayudar a tu médico y revelar patrones a lo largo del tiempo.",
|
||
"recentTitle": "Últimos 30 días",
|
||
"loading": "Cargando…",
|
||
"loadMore": "Cargar más",
|
||
"deleteCta": "Eliminar",
|
||
"deleteError": "No se pudo eliminar la entrada",
|
||
"errorSeverity": "La gravedad debe estar entre 1 y 5",
|
||
"errorEntry": "Elige un síntoma",
|
||
"categories": {
|
||
"gi": "Gastrointestinal",
|
||
"metabolic": "Metabólico",
|
||
"injectionSite": "Zona de inyección",
|
||
"cognitive": "Cognitivo",
|
||
"glp1Specific": "Específico de GLP-1"
|
||
},
|
||
"entries": {
|
||
"nausea": "Náuseas",
|
||
"vomiting": "Vómito",
|
||
"diarrhea": "Diarrea",
|
||
"constipation": "Estreñimiento",
|
||
"abdominalPain": "Dolor abdominal",
|
||
"hypoglycemiaSymptoms": "Síntomas de hipoglucemia",
|
||
"dehydration": "Deshidratación",
|
||
"anorexia": "Pérdida de apetito",
|
||
"electrolyteFatigue": "Fatiga por desequilibrio electrolítico",
|
||
"injectionRedness": "Enrojecimiento en la zona de inyección",
|
||
"injectionSwelling": "Hinchazón en la zona de inyección",
|
||
"injectionBruising": "Hematoma en la zona de inyección",
|
||
"injectionInduration": "Induración en la zona de inyección",
|
||
"brainFog": "Niebla mental",
|
||
"dizziness": "Mareo",
|
||
"lowMood": "Estado de ánimo bajo",
|
||
"lowEnergy": "Falta de energía",
|
||
"earlySatiety": "Saciedad precoz",
|
||
"gastroparesisLike": "Vaciado gástrico lento",
|
||
"dysgeusia": "Alteración del gusto",
|
||
"gallbladderDiscomfort": "Molestia en la vesícula biliar"
|
||
},
|
||
"deleteConfirmTitle": "¿Eliminar esta entrada?",
|
||
"deleteConfirmBody": "Esta entrada de efecto secundario se eliminará de forma permanente."
|
||
},
|
||
"scheduling": {
|
||
"naturalLanguage": {
|
||
"title": "Describe tu medicación",
|
||
"description": "Describe la medicación con tus propias palabras y completaremos el formulario por ti.",
|
||
"placeholder": "p. ej. Mounjaro 5 mg semanal los miércoles por la mañana a partir del próximo lunes",
|
||
"submit": "Extraer",
|
||
"submitBusy": "Extrayendo…",
|
||
"cancel": "Cancelar",
|
||
"examples": {
|
||
"label": "Prueba uno de estos ejemplos",
|
||
"weekly": "Mounjaro 5 mg semanal los miércoles por la mañana",
|
||
"daily": "Ibuprofeno 200 mg todos los días, 3 veces al día",
|
||
"rolling": "Metotrexato 7,5 mg cada 7 días desde la última inyección"
|
||
},
|
||
"error": {
|
||
"empty": "Escribe una descripción primero.",
|
||
"tooLong": "Mantén la descripción por debajo de 2000 caracteres.",
|
||
"rateLimit": "Demasiadas solicitudes. Espera un momento e inténtalo de nuevo.",
|
||
"noProvider": "Sin proveedor de IA configurado. Configúralo en Ajustes.",
|
||
"budget": "Se alcanzó el presupuesto diario de IA. Inténtalo de nuevo mañana.",
|
||
"network": "No se pudo contactar con el proveedor de IA. Inténtalo de nuevo.",
|
||
"consent": "Leer tu descripción con IA necesita primero tu consentimiento.",
|
||
"unavailable": "Leer descripciones con IA no está disponible aquí ahora mismo."
|
||
}
|
||
},
|
||
"cadence": {
|
||
"section": "Frecuencia",
|
||
"label": "Con qué frecuencia",
|
||
"kind": {
|
||
"daily": "Cada día",
|
||
"weekdays": "Determinados días de la semana",
|
||
"everyNWeeks": "Cada N semanas en determinados días",
|
||
"monthly": "Mensualmente un día concreto",
|
||
"everyNMonths": "Cada N meses un día concreto",
|
||
"yearly": "Una vez al año",
|
||
"rolling": "Cada N días desde la última toma (flexible)",
|
||
"rollingExplainer": "Cuenta desde tu última toma registrada y se pausa si te saltas una dosis.",
|
||
"oneShot": "Dosis única"
|
||
},
|
||
"weekdays": {
|
||
"label": "Días de la semana",
|
||
"short": {
|
||
"mo": "Lu",
|
||
"tu": "Ma",
|
||
"we": "Mi",
|
||
"th": "Ju",
|
||
"fr": "Vi",
|
||
"sa": "Sá",
|
||
"su": "Do"
|
||
},
|
||
"long": {
|
||
"mo": "Lunes",
|
||
"tu": "Martes",
|
||
"we": "Miércoles",
|
||
"th": "Jueves",
|
||
"fr": "Viernes",
|
||
"sa": "Sábado",
|
||
"su": "Domingo"
|
||
}
|
||
},
|
||
"intervalWeeks": {
|
||
"suffix": "semanas"
|
||
},
|
||
"dayOfMonth": {
|
||
"label": "Día"
|
||
},
|
||
"intervalMonths": {
|
||
"suffix": "meses",
|
||
"dayOnLabel": "el día"
|
||
},
|
||
"yearly": {
|
||
"date": {
|
||
"label": "Fecha"
|
||
}
|
||
},
|
||
"rollingDays": {
|
||
"suffix": "días"
|
||
}
|
||
},
|
||
"timesOfDay": {
|
||
"section": "Horas del día",
|
||
"label": "Horas del día",
|
||
"empty": {
|
||
"cta": "Añade la primera hora."
|
||
},
|
||
"add": "Añadir hora",
|
||
"remove": "Quitar",
|
||
"presets": {
|
||
"morning": "Mañana",
|
||
"noon": "Mediodía",
|
||
"evening": "Tarde",
|
||
"night": "Noche"
|
||
},
|
||
"max": {
|
||
"reached": "Máximo alcanzado: quita una hora antes de añadir otra."
|
||
}
|
||
},
|
||
"courseWindow": {
|
||
"section": "Periodo de tratamiento",
|
||
"startsOn": {
|
||
"label": "Empieza el"
|
||
},
|
||
"endsOn": {
|
||
"label": "Termina el"
|
||
},
|
||
"noEndDate": "Sin fecha de fin",
|
||
"oneShotCaption": "(dosis única)",
|
||
"invalidRange": "La fecha de fin debe ser igual o posterior a la de inicio."
|
||
}
|
||
},
|
||
"wizard": {
|
||
"header": {
|
||
"stepOf": "Paso {current} de {total}",
|
||
"createTitle": "Nuevo medicamento",
|
||
"editTitle": "Editar {name}"
|
||
},
|
||
"nav": {
|
||
"back": "Atrás",
|
||
"next": "Siguiente",
|
||
"save": "Guardar",
|
||
"saveEdit": "Guardar cambios",
|
||
"nextHint": "Siguiente: {step}",
|
||
"reviewHint": "Siguiente: Guardar",
|
||
"jumpFirst": "Ir al primer paso",
|
||
"jumpLast": "Ir a revisar y guardar"
|
||
},
|
||
"nl": {
|
||
"button": "Describir"
|
||
},
|
||
"steps": {
|
||
"step1": {
|
||
"title": "¿Cómo se llama el medicamento?",
|
||
"subline": "Exactamente como aparece en la caja.",
|
||
"label": "Name",
|
||
"placeholder": "p. ej. Ramipril",
|
||
"short": "Nombre"
|
||
},
|
||
"step2": {
|
||
"title": "¿Qué tipo de medicamento es?",
|
||
"subline": "Lo usamos para las plantillas y los análisis adecuados.",
|
||
"short": "Tipo"
|
||
},
|
||
"step3": {
|
||
"title": "¿Cuál es la dosis?",
|
||
"subline": "Una pastilla, una inhalación, una gota, según la forma.",
|
||
"amountLabel": "Cantidad",
|
||
"amountPlaceholder": "p. ej. 5",
|
||
"unitLabel": "Unidad",
|
||
"unit": {
|
||
"mg": "mg",
|
||
"ml": "ml",
|
||
"iu": "UI",
|
||
"mcg": "µg",
|
||
"g": "g",
|
||
"tablets": "comprimido(s)",
|
||
"capsules": "cápsula(s)",
|
||
"drops": "gotas",
|
||
"puffs": "inhalación",
|
||
"sprays": "pulverización",
|
||
"pieces": "unidades",
|
||
"other": "otro"
|
||
},
|
||
"deliveryFormLabel": "Vía",
|
||
"deliveryForm": {
|
||
"ORAL": "Oral",
|
||
"INJECTION": "Inyección",
|
||
"OTHER": "Otra"
|
||
},
|
||
"dosesPerUnitLabel": "Dosis por unidad",
|
||
"dosesPerUnitPlaceholder": "p. ej. 4",
|
||
"dosesPerUnitHint": "Dosis por pluma / vial. Déjalo vacío para no controlar el inventario.",
|
||
"short": "Dosis",
|
||
"unitsPerDoseLabel": "Unidades por dosis",
|
||
"unitsPerDoseHint": "p. ej., 2 comprimidos de 2 mg para una dosis de 4 mg, o ½ comprimido para una dosis partida"
|
||
},
|
||
"step4": {
|
||
"title": "¿Durante qué periodo lo tomas?",
|
||
"subline": "Por hoy basta con una fecha de inicio. Puedes añadir una fecha de fin más tarde.",
|
||
"short": "Cuándo"
|
||
},
|
||
"step5": {
|
||
"title": "¿Con qué frecuencia lo tomas?",
|
||
"subline": "Elige la frecuencia. Los detalles vienen en el siguiente paso.",
|
||
"short": "Frecuencia"
|
||
},
|
||
"step6": {
|
||
"title": "¿Cómo es exactamente?",
|
||
"subline": "Indica los días de la semana, los intervalos o el día del mes.",
|
||
"intervalWeeks": {
|
||
"label": "Cada",
|
||
"suffix": "semanas"
|
||
},
|
||
"dayOfMonth": {
|
||
"label": "El",
|
||
"suffix": "día del mes"
|
||
},
|
||
"rollingDays": {
|
||
"label": "Cada",
|
||
"suffix": "días desde la última toma"
|
||
},
|
||
"short": "Detalle"
|
||
},
|
||
"step7": {
|
||
"title": "¿Cuándo lo tomas?",
|
||
"subline": "Una o varias horas del día. Los recordatorios siguen esta lista.",
|
||
"presetsLabel": "Preajustes por hora del día",
|
||
"presets": {
|
||
"morning": "Mañana",
|
||
"noon": "Mediodía",
|
||
"evening": "Tarde",
|
||
"night": "Noche"
|
||
},
|
||
"overrideHint": "Opcional: define una dosis o un número de unidades distinto solo para esta hora. Déjalo en blanco para usar el valor predeterminado del medicamento.",
|
||
"doseOverrideLabel": "Dosis para esta hora (opcional)",
|
||
"doseOverridePlaceholder": "p. ej. media pastilla",
|
||
"unitsOverrideLabel": "Unidades consumidas a esta hora",
|
||
"unitsOverrideInherit": "Predeterminado",
|
||
"short": "Horas"
|
||
},
|
||
"step8": {
|
||
"title": "Listo. ¿Quieres que HealthLog te lo recuerde?",
|
||
"subline": "Revisa todo abajo antes de guardar.",
|
||
"remindersLabel": "Recordatorios activados",
|
||
"remindersDescription": "Push, Telegram o ntfy, según tus ajustes.",
|
||
"noChannelHint": "Los recordatorios necesitan un canal de notificaciones, pero ahora mismo no hay ninguno activo.",
|
||
"noChannelHintLink": "Configurar notificaciones",
|
||
"short": "Listo"
|
||
}
|
||
},
|
||
"classRow": {
|
||
"bloodPressure": "Presión arterial",
|
||
"diabetes": "Diabetes",
|
||
"hormone": "Hormonas",
|
||
"glp1": "Inyección de GLP-1",
|
||
"painRelief": "Dolor",
|
||
"allergy": "Alergia",
|
||
"vitamin": "Vitaminas",
|
||
"supplement": "Suplemento",
|
||
"antibiotic": "Antibiótico",
|
||
"mentalHealth": "Salud mental",
|
||
"thyroid": "Tiroides",
|
||
"digestive": "Digestivo",
|
||
"skin": "Cuidado de la piel",
|
||
"sleepAid": "Para dormir",
|
||
"other": "Otro"
|
||
},
|
||
"cadence": {
|
||
"daily": {
|
||
"label": "Diario",
|
||
"description": "Cada día a la misma hora."
|
||
},
|
||
"weekdays": {
|
||
"label": "Días concretos de la semana",
|
||
"description": "P. ej. lunes, miércoles, viernes."
|
||
},
|
||
"everyNWeeks": {
|
||
"label": "Cada pocas semanas",
|
||
"description": "P. ej. cada 2 semanas los jueves (GLP-1, biológicos)."
|
||
},
|
||
"monthly": {
|
||
"label": "Mensual",
|
||
"description": "Un día fijo cada mes (p. ej. siempre el 1)."
|
||
},
|
||
"rolling": {
|
||
"label": "Flexible desde la última dosis",
|
||
"description": "Deja abierta la próxima dosis. Cuando pulsas «tomada», el contador empieza de nuevo desde ese momento."
|
||
},
|
||
"oneShot": {
|
||
"label": "Dosis única",
|
||
"description": "Una sola administración, p. ej. una vacuna o un ciclo de antibiótico."
|
||
},
|
||
"asNeeded": {
|
||
"label": "Según necesidad",
|
||
"description": "Sin plan fijo: registra una toma cuando la necesites (p. ej. analgésicos)."
|
||
}
|
||
},
|
||
"summary": {
|
||
"title": "Resumen",
|
||
"cadence": {
|
||
"daily": "Cada día",
|
||
"weekdays": "En los días de la semana seleccionados",
|
||
"biweekly": "Cada dos semanas",
|
||
"monthly": "Mensual",
|
||
"quarterly": "Cada tres meses",
|
||
"yearly": "Una vez al año",
|
||
"rolling": "Cada {n} días desde tu última toma",
|
||
"oneShot": "Una dosis única",
|
||
"asNeeded": "Según necesidad",
|
||
"everyNWeeks": "Cada {n} semanas",
|
||
"everyNMonths": "Cada {n} meses"
|
||
},
|
||
"weekdaysDetail": ", los {days}",
|
||
"dayOfMonthDetail": ", el día {day}.",
|
||
"times": "a las {times}",
|
||
"startsOn": "Empieza: {date}",
|
||
"endsOn": "Termina: {date}",
|
||
"noEndDate": "Sin fecha de fin"
|
||
},
|
||
"compose": {
|
||
"scheduleIndex": "Horario {n} de {total}",
|
||
"list": {
|
||
"add": "Añadir otro horario",
|
||
"edit": "Editar",
|
||
"remove": "Quitar",
|
||
"removeDisabled": "Se requiere al menos un horario."
|
||
}
|
||
},
|
||
"errors": {
|
||
"submitFailed": "No se pudo guardar el medicamento. Inténtalo de nuevo."
|
||
}
|
||
},
|
||
"doseStrength": {
|
||
"title": "Dosis a lo largo del tiempo",
|
||
"axisLabel": "Dosis registrada ({unit})",
|
||
"tooltipLabel": "Dosis",
|
||
"currentDose": "Dosis actual: {dose} {unit}",
|
||
"noCurrentDose": "Aún no hay dosis registrada.",
|
||
"empty": "Aún no hay historial de titulación. Registra un cambio de dosis para ver la curva de dosis."
|
||
},
|
||
"titration": {
|
||
"title": "Plan de titulación",
|
||
"empty": "Aún no hay pasos de escalada de dosis registrados. Añade cambios de dosis con fecha para trazar el plan.",
|
||
"youAreHere": "Estás aquí",
|
||
"doseStep": "{dose} {unit}",
|
||
"plannedFor": "Previsto para {date}"
|
||
},
|
||
"injectionSiteBodyOutlineAriaLabel": "Silueta del cuerpo",
|
||
"injectionSitePickerAriaLabel": "Selector de sitio de inyección",
|
||
"injectionSiteRecommendedAriaLabel": "{site}: sitio siguiente recomendado",
|
||
"injectionSiteLegendAriaLabel": "Leyenda de marcadores",
|
||
"injectionSiteLegendRecommended": "Próximo sitio recomendado",
|
||
"injectionSiteLegendLastUsed": "Último sitio usado",
|
||
"siteAbdomenLeft": "Abdomen, inferior izquierdo",
|
||
"siteAbdomenRight": "Abdomen, inferior derecho",
|
||
"siteAbdomenUpperLeft": "Abdomen, superior izquierdo",
|
||
"siteAbdomenUpperRight": "Abdomen, superior derecho",
|
||
"siteThighLeft": "Muslo izquierdo",
|
||
"siteThighRight": "Muslo derecho",
|
||
"siteUpperArmLeft": "Brazo superior izquierdo",
|
||
"siteUpperArmRight": "Brazo superior derecho",
|
||
"sideEffectTagsHelp": "Toca un chip para añadirlo a las etiquetas de estado de ánimo.",
|
||
"sideEffectTagNausea": "Náuseas",
|
||
"sideEffectTagConstipation": "Estreñimiento",
|
||
"sideEffectTagDiarrhea": "Diarrea",
|
||
"sideEffectTagFatigue": "Fatiga",
|
||
"sideEffectTagAppetiteLoss": "Pérdida de apetito",
|
||
"sideEffectTagHeartburn": "Ardor de estómago",
|
||
"sideEffectTagHeadache": "Dolor de cabeza",
|
||
"phaseConfig": "Fases de recordatorio",
|
||
"phaseConfigDescription": "Configura los momentos de los recordatorios.",
|
||
"phaseGreen": "Verde",
|
||
"phaseYellow": "Amarillo",
|
||
"phaseOrange": "Naranja",
|
||
"phaseRed": "Rojo",
|
||
"phaseMinutes": "Mín",
|
||
"phasePercent": "%",
|
||
"phaseResetDefaults": "Restablecer valores por defecto",
|
||
"phaseSaved": "Fases de recordatorio guardadas",
|
||
"sourceWeb": "Web",
|
||
"sourceApi": "App de iOS",
|
||
"sourceReminder": "Recordatorio",
|
||
"sourceImport": "Importación",
|
||
"sourceAppleHealth": "Apple Health",
|
||
"intakeSourceVia": "vía {origin}",
|
||
"intakeRecordedAutomatically": "Registrada automáticamente",
|
||
"intakeHistoryEmptyTitle": "Aún no hay tomas",
|
||
"intakeHistoryEmptyDescription": "En cuanto registres una toma, aparecerá aquí con la hora y la fuente.",
|
||
"intakeHistoryEmptyAction": "Registrar toma",
|
||
"intakeHistoryColTaken": "Tomada",
|
||
"intakeHistoryColScheduled": "Programada",
|
||
"intakeHistoryColStatus": "Estado",
|
||
"intakeHistoryColSource": "Fuente",
|
||
"intakeHistoryStatusTaken": "Tomada",
|
||
"intakeHistoryStatusSkipped": "Omitida",
|
||
"intakeHistorySortByTaken": "Ordenar por hora de toma",
|
||
"intakeHistorySortByScheduled": "Ordenar por hora programada",
|
||
"intakeHistoryPageInfo": "Página {page} de {total}, {count} entradas",
|
||
"intakeHistoryPrev": "Anterior",
|
||
"intakeHistoryNext": "Siguiente",
|
||
"glp1": {
|
||
"drug": {
|
||
"tirzepatide": {
|
||
"name": "Tirzepatida"
|
||
},
|
||
"semaglutide": {
|
||
"name": "Semaglutida"
|
||
},
|
||
"liraglutide": {
|
||
"name": "Liraglutida"
|
||
},
|
||
"dulaglutide": {
|
||
"name": "Dulaglutida"
|
||
},
|
||
"exenatide": {
|
||
"name": "Exenatida"
|
||
}
|
||
}
|
||
},
|
||
"researchMode": {
|
||
"chart": {
|
||
"title": "Nivel de fármaco estimado",
|
||
"axisLabel": "Nivel estimado (relativo)",
|
||
"emptyState": "Sin tomas registradas todavía.",
|
||
"emptyStateCta": "Registra una dosis para ver la curva estimada cobrar forma.",
|
||
"estimateNote": "Estimación educativa a partir de la farmacocinética poblacional publicada por la EMA. No es una medición.",
|
||
"unknownDrug": "{name} no está en el catálogo de GLP-1 aprobado por la EMA, por lo que HealthLog no puede trazar una curva de farmacocinética poblacional."
|
||
}
|
||
},
|
||
"detail": {
|
||
"status": {
|
||
"active": "Activo",
|
||
"paused": "Pausado",
|
||
"ended": "Finalizado"
|
||
},
|
||
"cadence": {
|
||
"oneShotOn": "Dosis única el {date}.",
|
||
"oneShotPending": "Dosis única pendiente.",
|
||
"asNeeded": "Según necesidad, sin plan fijo."
|
||
},
|
||
"intake": {
|
||
"title": "Historial de tomas",
|
||
"importButton": "Importar",
|
||
"rowActions": {
|
||
"openMenu": "Abrir acciones de la fila",
|
||
"edit": "Editar",
|
||
"delete": "Eliminar"
|
||
},
|
||
"selection": {
|
||
"rowToggleLabel": "Seleccionar fila"
|
||
},
|
||
"bulkDelete": {
|
||
"selectionCount": "{count} entradas seleccionadas",
|
||
"deleteButton": "Eliminar selección",
|
||
"cancelButton": "Cancelar",
|
||
"confirmTitle": "¿Eliminar las entradas seleccionadas?",
|
||
"confirmBody": "Se eliminarán {count} entradas de forma permanente. El medicamento se conserva.",
|
||
"confirmAction": "Eliminar",
|
||
"toast": "Selección eliminada",
|
||
"failed": "No se pudo eliminar la selección."
|
||
},
|
||
"edit": {
|
||
"dialogTitle": "Editar toma",
|
||
"takenAtLabel": "Tomada a las",
|
||
"scheduledForHint": "Programada: {dateTime}",
|
||
"farFromScheduledWarning": "Está muy lejos de la hora programada; comprueba la fecha.",
|
||
"skippedLabel": "Omitida",
|
||
"save": "Guardar",
|
||
"cancel": "Cancelar",
|
||
"savedToast": "Toma actualizada",
|
||
"failed": "No se pudo actualizar la toma."
|
||
},
|
||
"deleteRow": {
|
||
"confirmTitle": "¿Eliminar esta toma?",
|
||
"confirmBody": "La entrada se elimina de forma permanente.",
|
||
"confirmAction": "Eliminar",
|
||
"toast": "Toma eliminada",
|
||
"failed": "No se pudo eliminar la toma."
|
||
},
|
||
"viewRecent90": "Últimos 90 días",
|
||
"viewAll": "Historial completo",
|
||
"viewToggleLabel": "Rango del historial"
|
||
},
|
||
"verlauf": {
|
||
"loading": "Cargando historial …",
|
||
"loadError": "No se pudo cargar el historial.",
|
||
"empty": "Aún no hay tomas en este periodo.",
|
||
"summaryEmpty": "Aún no hay dosis que evaluar.",
|
||
"adherenceLabel": "Adherencia",
|
||
"adherenceBarLabel": "{onTime} a tiempo, {late} con retraso, {missed} omitidas",
|
||
"add": "Entrada",
|
||
"markTaken": "Tomada",
|
||
"markSkipped": "Saltada",
|
||
"rowActionsLabel": "Acciones para {time}",
|
||
"markAsTaken": "Marcar como tomada",
|
||
"markAsSkipped": "Marcar como omitida",
|
||
"adHocTag": "fuera de horario",
|
||
"takenDetail": "prevista {planned}, tomada {taken}",
|
||
"doseTaken": "Dosis: {dose}",
|
||
"status": {
|
||
"taken_on_time": "a tiempo",
|
||
"taken_late": "con retraso",
|
||
"skipped": "saltada",
|
||
"missed": "perdida",
|
||
"upcoming": "pendiente",
|
||
"ad_hoc": "fuera de horario"
|
||
},
|
||
"addDialog": {
|
||
"title": "Añadir toma",
|
||
"description": "Registra una dosis, también retroactiva o fuera de horario.",
|
||
"takenAtLabel": "Tomada a las",
|
||
"skippedLabel": "Saltada",
|
||
"nudgeHint": "Cerca del horario {slot}: al guardar te preguntamos si asignarla.",
|
||
"cancel": "Cancelar",
|
||
"submit": "Guardar"
|
||
},
|
||
"nudge": {
|
||
"title": "¿Asignar a este horario?",
|
||
"body": "Esta toma queda justo fuera de la ventana de {slot}. ¿Asignarla a ese horario o guardarla como entrada fuera de horario?",
|
||
"keepAdHoc": "Fuera de horario",
|
||
"pin": "Asignar"
|
||
},
|
||
"pin": {
|
||
"action": "Asignar al horario de las {time}",
|
||
"release": "Quitar asignación",
|
||
"pinnedTag": "asignada",
|
||
"pinnedToast": "Toma asignada al horario",
|
||
"unpinnedToast": "Asignación quitada",
|
||
"dueContext": "prevista: {time} ({delta})",
|
||
"confirmTitle": "¿Asignar al horario de las {time}?",
|
||
"confirmBody": "La toma contará para este horario igual que si se hubiera registrado en él: a tiempo o con retraso según cuándo se tomó, así que el porcentaje no se maquilla. Puedes quitar la asignación en cualquier momento.",
|
||
"confirmCancel": "Cancelar",
|
||
"confirmAction": "Asignar"
|
||
}
|
||
},
|
||
"notifications": {
|
||
"title": "Recordatorios",
|
||
"switchLabel": "Enviar un recordatorio cuando toque esta dosis",
|
||
"helperOn": "Los recordatorios están activados.",
|
||
"helperOff": "Los recordatorios están desactivados.",
|
||
"enabledToast": "Recordatorios activados",
|
||
"disabledToast": "Recordatorios desactivados",
|
||
"toggleFailed": "No se pudo cambiar el ajuste de recordatorios.",
|
||
"clientManagedChip": "Gestionado por el iPhone",
|
||
"clientManagedHint": "Tu iPhone gestiona los recordatorios de este medicamento."
|
||
},
|
||
"settings": {
|
||
"title": "Ajustes",
|
||
"phases": {
|
||
"openButton": "Configurar fases",
|
||
"requiresCourseWindow": "Las fases están disponibles una vez fijado un periodo de tratamiento."
|
||
},
|
||
"grace": {
|
||
"label": "Ventana de recordatorio",
|
||
"appliesToAllNote": "Se aplica a todos los horarios de este medicamento.",
|
||
"unit": "minutos",
|
||
"saved": "Ventana de recordatorio guardada",
|
||
"failed": "No se pudo guardar la ventana de recordatorio."
|
||
},
|
||
"codes": {
|
||
"label": "Códigos clínicos (ATC / RxNorm)",
|
||
"note": "Opcional. Se usan en la exportación FHIR del historial de salud. Los códigos se toman tal cual se introducen; nunca se adivinan.",
|
||
"atcLabel": "ATC",
|
||
"rxNormLabel": "RxNorm",
|
||
"saved": "Códigos clínicos guardados",
|
||
"failed": "No se pudieron guardar los códigos clínicos."
|
||
}
|
||
},
|
||
"zone": {
|
||
"title": "Gestión y zona de peligro",
|
||
"pause": {
|
||
"title": "Pausar",
|
||
"helper": "Pausa los recordatorios hasta que los reactives. El historial se conserva.",
|
||
"pausedToast": "Recordatorios pausados",
|
||
"resumedToast": "Recordatorios reanudados",
|
||
"failed": "No se pudo cambiar el estado de pausa."
|
||
},
|
||
"end": {
|
||
"title": "Finalizar medicamento",
|
||
"helper": "Detiene los recordatorios y marca el medicamento como finalizado. El historial sigue siendo visible.",
|
||
"button": "Finalizar",
|
||
"dialogTitle": "Finalizar {name}: detiene los recordatorios, el historial sigue visible",
|
||
"dialogBody": "No habrá más recordatorios. Las entradas antiguas permanecen en la línea de tiempo.",
|
||
"toast": "Medicamento finalizado",
|
||
"failed": "No se pudo finalizar el medicamento."
|
||
},
|
||
"purge": {
|
||
"title": "Eliminar historial",
|
||
"helper": "Hay {count} tomas registradas para este medicamento.",
|
||
"button": "Eliminar historial",
|
||
"dialogTitle": "¿Eliminar realmente el historial?",
|
||
"dialogBody": "Las {count} tomas se eliminarán de forma permanente. El medicamento se conserva.",
|
||
"toast": "Historial eliminado",
|
||
"failed": "No se pudo eliminar el historial."
|
||
},
|
||
"delete": {
|
||
"title": "Eliminar medicamento",
|
||
"helper": "Elimina el medicamento y todos los registros relacionados.",
|
||
"button": "Eliminar",
|
||
"dialogTitle": "¿Eliminar {name}?",
|
||
"dialogBody": "El medicamento, sus horarios, el historial de tomas, los tokens de API, la configuración de fases y los recordatorios se eliminarán de forma permanente.",
|
||
"toast": "Medicamento eliminado",
|
||
"failed": "No se pudo eliminar el medicamento."
|
||
}
|
||
},
|
||
"phases": {
|
||
"modeLabel": "Modo de {phase}",
|
||
"saveFailed": "No se pudieron guardar las fases de recordatorio."
|
||
},
|
||
"api": {
|
||
"caption": "Endpoint para «{name}»",
|
||
"copyUrl": "Copiar URL",
|
||
"urlCopied": "URL copiada",
|
||
"mintToken": "Generar token",
|
||
"mintAnotherToken": "Generar otro token",
|
||
"mintFailed": "No se pudo generar un token.",
|
||
"copyFailed": "No se pudo copiar.",
|
||
"tokenCopied": "Token copiado",
|
||
"copyToken": "Copiar token",
|
||
"mintedHint": "Copia este token ahora. Solo se muestra una vez."
|
||
},
|
||
"advanced": {
|
||
"dataPortability": {
|
||
"import": {
|
||
"title": "Importar tomas",
|
||
"helper": "Carga tomas anteriores desde un archivo JSON o JSON pegado.",
|
||
"button": "Importar JSON"
|
||
},
|
||
"export": {
|
||
"title": "Exportar medicamento",
|
||
"helper": "Descarga este medicamento como archivo CSV.",
|
||
"includeIntake": "Incluir historial de tomas",
|
||
"button": "Exportar CSV"
|
||
}
|
||
}
|
||
},
|
||
"header": {
|
||
"historyLabel": "Ver historial de tomas"
|
||
},
|
||
"history": {
|
||
"plannedSuffix": "planificado"
|
||
},
|
||
"tabs": {
|
||
"uebersicht": "Resumen",
|
||
"zeitplan": "Horario",
|
||
"bestand": "Existencias",
|
||
"verlauf": "Historial",
|
||
"injektion": "Inyección",
|
||
"erweitert": "Avanzado",
|
||
"wirkung": "Efecto"
|
||
},
|
||
"shell": {
|
||
"loadFailed": "No se pudo cargar este medicamento.",
|
||
"tablistLabel": "Secciones de detalle del medicamento"
|
||
},
|
||
"uebersicht": {
|
||
"statusTitle": "Estado",
|
||
"nextDoseLabel": "Próxima dosis",
|
||
"nextDoseNone": "No hay dosis pendiente.",
|
||
"nextDoseAsNeeded": "Según necesidad, sin dosis programada.",
|
||
"nextDoseNotTracked": "Sin registro de tomas, se guarda como registro.",
|
||
"pausedHint": "En pausa, sin recordatorios.",
|
||
"reminderLabel": "Recordatorio",
|
||
"reminderOn": "Activado",
|
||
"reminderOff": "Desactivado",
|
||
"supplyLabel": "Existencias",
|
||
"supplyRunway": "Alcanza para unos {days} días más",
|
||
"jumpToZeitplan": "Ver horario",
|
||
"jumpToVerlauf": "Ver historial",
|
||
"jumpToBestand": "Ver existencias",
|
||
"complianceTitle": "Adherencia",
|
||
"complianceEmpty": "Aún no hay datos de adherencia."
|
||
},
|
||
"bestand": {
|
||
"title": "Existencias",
|
||
"summary": "{remaining} de {total} dosis restantes",
|
||
"itemsTitle": "Envases y recipientes",
|
||
"doses": "{remaining} / {total} dosis",
|
||
"unknown": "Desconocido",
|
||
"state": {
|
||
"ACTIVE": "Sin abrir",
|
||
"IN_USE": "En uso",
|
||
"EXPIRED": "Caducado",
|
||
"USED_UP": "Agotado"
|
||
},
|
||
"empty": "No hay existencias registradas.",
|
||
"emptyHelper": "Registra un envase o recipiente para hacer seguimiento de las existencias restantes y la autonomía.",
|
||
"emptyCta": "Registrar un envase",
|
||
"addButton": "Registrar",
|
||
"lowStockLinkOn": "Aviso de reserva baja: por debajo de {days} días",
|
||
"lowStockLinkOff": "Aviso de reserva baja: desactivado",
|
||
"addTitle": "Registrar un envase o recipiente",
|
||
"addDescription": "Registra una nueva existencia con su número de unidades; la fecha de caducidad es opcional.",
|
||
"addQuantityLabel": "Cantidad (unidades)",
|
||
"addQuantityHelper": "1–1000 unidades por envase o recipiente.",
|
||
"addExpiryLabel": "Fecha de caducidad (opcional)",
|
||
"addSubmit": "Registrar",
|
||
"addSuccess": "Existencias registradas",
|
||
"addFailed": "No se pudieron registrar las existencias.",
|
||
"adjustButton": "Ajustar",
|
||
"adjustTitle": "Corregir envase",
|
||
"adjustDescription": "Ajusta las unidades restantes y corrige las fechas de este envase. 0 unidades lo marca como agotado.",
|
||
"adjustQuantityLabel": "Unidades restantes",
|
||
"adjustHelper": "Capacidad: {total} unidades.",
|
||
"adjustSubmit": "Guardar",
|
||
"adjustSuccess": "Existencias actualizadas",
|
||
"adjustFailed": "No se pudieron actualizar las existencias.",
|
||
"deleteTitle": "¿Eliminar envase?",
|
||
"deleteDescription": "Elimina permanentemente este envase o recipiente de las existencias. Las tomas registradas no cambian.",
|
||
"deleteSuccess": "Entrada de existencias eliminada",
|
||
"deleteFailed": "No se pudo eliminar la entrada de existencias.",
|
||
"containerTypeLabel": "Tipo de envase",
|
||
"containerType": {
|
||
"PEN": "Pluma",
|
||
"AMPOULE": "Ampolla",
|
||
"BLISTER": "Envase de comprimidos",
|
||
"INHALER": "Inhalador",
|
||
"BOTTLE": "Frasco",
|
||
"OTHER": "Otro"
|
||
},
|
||
"unitsDetail": "{remaining} / {total} unidades",
|
||
"quantityModeDoses": "Dosis",
|
||
"quantityModeUnits": "Unidades",
|
||
"quantityInUnits": "= {units} unidades",
|
||
"quantityInDoses": "≈ {doses} dosis",
|
||
"quantityUnderOneDose": "< 1 dosis",
|
||
"expiredSuffix": "+ {units} unidades caducadas",
|
||
"packagingTitle": "Envase y dosis",
|
||
"packagingUnitsPerDose": "1 dosis = {units} unidades",
|
||
"packagingDefaultPack": "Tamaño de envase predeterminado: {units} unidades",
|
||
"packagingNoDefaultPack": "Sin tamaño de envase predeterminado",
|
||
"packagingEdit": "Editar",
|
||
"packagingDescription": "Define cuántas unidades consume una dosis y el tamaño habitual de un envase nuevo, p. ej. tras un cambio de fabricante con otro tamaño de blíster.",
|
||
"packagingUnitsPerDoseLabel": "Unidades por dosis",
|
||
"packagingUnitsPerDoseHelper": "P. ej. dos comprimidos de 2 mg para una dosis de 4 mg, o 1,5 para uno y medio (más de 0, hasta 100). Las tomas ya registradas no cambian.",
|
||
"packagingDefaultPackLabel": "Tamaño de envase predeterminado (unidades)",
|
||
"packagingDefaultPackHelper": "Rellena la cantidad al registrar envases nuevos (1–1000). Déjalo vacío si no aplica.",
|
||
"packagingSuccess": "Datos del envase guardados",
|
||
"packagingFailed": "Error al guardar",
|
||
"addManufacturerLabel": "Fabricante",
|
||
"addDoseStrengthLabel": "Concentración",
|
||
"addDoseStrengthHint": "Tal como aparece impreso en el envase, p. ej. 5 mg/0,5 ml.",
|
||
"openedOn": "Abierto el {date}",
|
||
"expiresOn": "Caduca el {date}",
|
||
"summaryAllExpired": "Sin existencias utilizables: {units} unidades marcadas como caducadas",
|
||
"editExpiryLabel": "Fecha de caducidad impresa",
|
||
"editExpiryHelper": "La fecha impresa en el envase. Déjalo vacío si no hay ninguna registrada.",
|
||
"editOpenedLabel": "Abierto el",
|
||
"editOpenedHelper": "Déjalo vacío si el envase sigue cerrado.",
|
||
"editOpenedHelperClock": "Una pluma o una ampolla caduca 30 días después de abrirse. Déjalo vacío si sigue cerrada."
|
||
},
|
||
"erweitert": {
|
||
"group": {
|
||
"lifecycle": "Ciclo de vida",
|
||
"externalApi": "API externa",
|
||
"data": "Datos",
|
||
"danger": "Zona de peligro"
|
||
},
|
||
"editor": {
|
||
"title": "Editar el medicamento en el editor",
|
||
"helper": "Cambia el nombre, la clase de tratamiento, la frecuencia y los horarios en el editor paso a paso.",
|
||
"button": "Abrir editor"
|
||
}
|
||
},
|
||
"zeitplan": {
|
||
"title": "Horario",
|
||
"timesTitle": "Horas de toma",
|
||
"timesNote": "Ajusta la hora y la ventana puntual de cada dosis. La frecuencia (diaria, semanal…) se cambia en el editor, en Avanzado.",
|
||
"scheduleLabel": "Horario {index}",
|
||
"fullEditNote": "La frecuencia, la clase de tratamiento y la ventana del curso se editan en el editor, en Avanzado → Ciclo de vida.",
|
||
"graceEcho": "Ventana de recordatorio: {minutes} minutos",
|
||
"reminderTitle": "Recordatorio",
|
||
"manageChannels": "Gestionar canales de notificación",
|
||
"history": {
|
||
"title": "Historial del plan",
|
||
"currentSince": "Plan actual desde {date}",
|
||
"noTimes": "Sin horas fijas",
|
||
"manualChip": "Añadida manualmente",
|
||
"showErasOne": "Mostrar 1 etapa anterior",
|
||
"showErasOther": "Mostrar {count} etapas anteriores",
|
||
"hideEras": "Ocultar etapas anteriores",
|
||
"addEra": "Añadir etapa anterior",
|
||
"addEraTitle": "Añadir etapa anterior",
|
||
"addEraDescription": "Registra a qué horas se tomaba antes este medicamento, por ejemplo antes de ajustarlo aquí.",
|
||
"editAria": "Editar etapa",
|
||
"editEraTitle": "Editar etapa",
|
||
"editEraDescription": "Ajusta las horas de toma y el periodo de esta etapa.",
|
||
"archivedEditHint": "Esta etapa se registró automáticamente: tu cambio corrige el historial registrado; el original se conserva internamente como constancia.",
|
||
"updatedToast": "Etapa actualizada",
|
||
"updateError": "No se pudo actualizar la etapa. No debe solaparse con otras etapas y debe terminar antes del plan actual.",
|
||
"timesLabel": "Horas de toma",
|
||
"fromLabel": "Desde",
|
||
"untilLabel": "Hasta",
|
||
"untilHint": "«Hasta» es el día en que empezó a regir el plan siguiente (exclusivo).",
|
||
"validationTimes": "Indica al menos una hora.",
|
||
"validationRangeMissing": "Indica las fechas de inicio y fin.",
|
||
"validationRangeOrder": "La fecha de inicio debe ser anterior a la fecha de fin.",
|
||
"cancel": "Cancelar",
|
||
"submit": "Guardar etapa",
|
||
"createdToast": "Etapa anterior guardada",
|
||
"createError": "No se pudo guardar la etapa. No debe solaparse con etapas existentes y debe terminar antes del plan actual.",
|
||
"deletedToast": "Etapa eliminada",
|
||
"deleteError": "No se pudo eliminar la etapa",
|
||
"deleteAria": "Eliminar etapa",
|
||
"deleteConfirmTitle": "¿Eliminar la etapa?",
|
||
"deleteConfirmBody": "El historial y la adherencia de este período volverán a calcularse con el plan actual.",
|
||
"deleteConfirmAction": "Eliminar",
|
||
"loadError": "No se pudo cargar el historial del plan"
|
||
},
|
||
"save": "Guardar horario",
|
||
"saved": "Horario guardado",
|
||
"failed": "No se pudo guardar el horario",
|
||
"window": {
|
||
"intro": "Para cada dosis, define cuándo una toma sigue siendo puntual: una hora exacta (±1h) o tu propia ventana como 07:00–09:00.",
|
||
"explicitToggle": "Ventana propia",
|
||
"startLabel": "Inicio de la ventana",
|
||
"endLabel": "Fin de la ventana",
|
||
"onTimeBand": "Puntual: {start}–{end}",
|
||
"lateUntil": "con retraso hasta las {time}",
|
||
"lateDays": "con retraso hasta {days} días después",
|
||
"orderError": "El inicio debe ser anterior al fin.",
|
||
"noTimes": "Aún no hay horas de toma definidas."
|
||
}
|
||
}
|
||
},
|
||
"logInjectionSiteTitle": "Registrar sitio de inyección",
|
||
"logInjectionSiteDescription": "¿Dónde te inyectaste {name}? Opcional: puedes omitirlo.",
|
||
"logInjectionSiteSkip": "Omitir",
|
||
"logInjectionSiteConfirm": "Guardar sitio",
|
||
"logInjectionSiteNoneAvailable": "No hay ningún sitio de inyección disponible: todos los sitios están excluidos en tu configuración.",
|
||
"logInjectionSiteSaveFailed": "No se pudo guardar el sitio de inyección. Inténtalo de nuevo.",
|
||
"perSlotUnits": "{units} por dosis",
|
||
"trackInjectionSitesToggle": "Registrar sitios de inyección",
|
||
"trackInjectionSitesHint": "Tras administrar una dosis, pregunta qué sitio se usó y sugiere la siguiente rotación.",
|
||
"allowedSitesLabel": "Sitios permitidos",
|
||
"allowedSitesHint": "Deja todos seleccionados para no aplicar restricciones. Los sitios que excluiste globalmente nunca se ofrecen.",
|
||
"viewToggleLabel": "Vista",
|
||
"viewToggleHint": "Elige si tus medicamentos se muestran como tarjetas o como tabla.",
|
||
"viewCards": "Vista de tarjetas",
|
||
"viewTable": "Vista de tabla",
|
||
"viewSaveFailed": "No se pudo guardar la vista",
|
||
"tableCaption": "Medicamentos en tabla con estado, próxima toma, adherencia y existencias",
|
||
"tableColName": "Nombre",
|
||
"tableColStatus": "Estado",
|
||
"tableColNextDose": "Próxima toma",
|
||
"tableColCompliance": "Adherencia",
|
||
"tableColStock": "Existencias",
|
||
"tableColActions": "Acciones",
|
||
"tableSortBy": "Ordenar por {column}",
|
||
"tableComplianceDays": "{days} d",
|
||
"tableStockDoseOne": "1 dosis",
|
||
"tableStockDoses": "{count} dosis",
|
||
"tableStockRunway": "≈ {days} días restantes",
|
||
"cardLowStockRunway": "Reserva: ≈ {days} días",
|
||
"takeActionFor": "Tomar: {name}",
|
||
"skipActionFor": "Omitir: {name}",
|
||
"reorderDescription": "Define el orden de tus medicamentos: se aplica a la vista de tarjetas y a la de tabla.",
|
||
"reorderSaved": "Orden guardado",
|
||
"reorderSaveFailed": "No se pudo guardar el orden",
|
||
"customize": "Personalizar medicamentos",
|
||
"efficacy": {
|
||
"title": "Efecto",
|
||
"intro": "Cómo han evolucionado las mediciones sobre las que actúa este medicamento en torno al momento en que empezaste a tomarlo. Muestra lo que coincide en el tiempo: una asociación, no una causa, y nunca un consejo sobre tu tratamiento o dosis.",
|
||
"notEligible": "No hay ninguna medición que relacionar con este medicamento.",
|
||
"startFallback": "No hay fecha de inicio, así que la comparación usa tu primera lectura registrada como referencia.",
|
||
"noStart": "Añade una fecha de inicio para comparar las lecturas antes y después de empezar.",
|
||
"disclaimer": "Solo asociación: estas cifras muestran lo que cambió en el mismo periodo, no que el medicamento causara el cambio. Consulta cualquier decisión sobre tu tratamiento con tu médico.",
|
||
"primaryBadge": "Objetivo principal",
|
||
"noSeries": "Aún no hay mediciones registradas para este objetivo.",
|
||
"startMarker": "Inicio",
|
||
"adherenceLane": "Adherencia",
|
||
"typicalRange": "Rango habitual",
|
||
"levelShift": "Se detectó un cambio de nivel en torno a {date}.",
|
||
"plateau": {
|
||
"title": "Meseta de peso con la dosis actual",
|
||
"evidence": "Variación de peso de {delta} {unit} en los últimos {window} días ({readings} mediciones), {days} días con {dose}."
|
||
},
|
||
"retarget": {
|
||
"label": "¿No es la medición correcta?",
|
||
"placeholder": "Seguir según…",
|
||
"apply": "Aplicar",
|
||
"reset": "Restablecer al valor predeterminado",
|
||
"error": "No se pudo guardar ese cambio. Inténtalo de nuevo."
|
||
},
|
||
"beforeAfter": {
|
||
"summary": "Ø {before} antes → Ø {after} desde entonces: un cambio de {delta}.",
|
||
"counts": "Basado en {beforeCount} lecturas antes y {afterCount} desde entonces.",
|
||
"needBefore": "Aún no hay suficientes lecturas antes del inicio: se necesitan unas {weeks} semanas antes y después para comparar.",
|
||
"needAfter": "Aún no hay suficientes lecturas desde el inicio: se necesitan unas {weeks} semanas antes y después para comparar.",
|
||
"needStart": "Añade una fecha de inicio para comparar las lecturas antes y después de empezar.",
|
||
"needData": "Aún no hay suficientes lecturas: se necesitan unas {weeks} semanas antes y después del inicio para comparar."
|
||
},
|
||
"insights": {
|
||
"title": "Efecto de la medicación",
|
||
"subtitle": "Lo que coincide con las mediciones que persiguen tus medicamentos: solo asociación, nunca un veredicto.",
|
||
"link": "Abrir la vista de efecto",
|
||
"empty": "Aún no hay suficientes datos para relacionar tus medicamentos con sus mediciones objetivo."
|
||
},
|
||
"scaleAbsolute": "Absoluto",
|
||
"scalePercentSinceStart": "% desde el inicio",
|
||
"scaleToggleLabel": "Escala del gráfico",
|
||
"segmented": {
|
||
"title": "Cambio al inicio",
|
||
"level": "Justo al inicio, el nivel se desplazó {value} {unit} (intervalo del 95 %: {low} a {high}).",
|
||
"slope": "Después del inicio, la tendencia semanal cambió {value} {unit} por semana (intervalo del 95 %: {low} a {high}).",
|
||
"preSlope": "Antes del inicio, la tendencia era de {value} {unit} por semana.",
|
||
"includesZero": "Cuando un intervalo incluye el cero, estos valores también son compatibles con ningún cambio.",
|
||
"basis": "Basado en {before} días antes y {after} días después del inicio ({from} a {to}).",
|
||
"excludedAdherence": "Se omitieron {count} días después del inicio porque en los {lookback} días anteriores se tomó menos del {floor} % de las dosis.",
|
||
"excludedNotTaking": "Se omitieron {count} días porque el medicamento estaba en pausa o entre dos tandas.",
|
||
"notTracked": "La toma de este medicamento no se registra, así que no se omitió ningún día por dosis olvidadas.",
|
||
"endDoseChange": "El periodo termina antes del primer cambio de dosis, así que describe la dosis inicial.",
|
||
"confoundersTitle": "Otros cambios de medicación en este periodo, que esta vista no puede separar de este:",
|
||
"confounderStarted": "{name} iniciado el {date}",
|
||
"confounderStopped": "{name} finalizado el {date}",
|
||
"confounderDoseChange": "{name}: dosis cambiada el {date}",
|
||
"confounderPaused": "{name} en pausa desde el {date}",
|
||
"confounderResumed": "{name} reanudado el {date}",
|
||
"method": "Cómo se calcula: se ajusta una recta a los valores diarios antes del inicio y otra a los posteriores. El salto entre ambas al inicio es el cambio de nivel y la diferencia de sus pendientes, el cambio de tendencia. Los intervalos tienen en cuenta que los valores de un día influyen en el siguiente.",
|
||
"needStart": "Indica una fecha de inicio para ver el cambio al inicio.",
|
||
"needBefore": "El cambio al inicio necesita valores de al menos {days} días repartidos en {span} días antes del inicio.",
|
||
"needAfter": "El cambio al inicio necesita valores de al menos {days} días repartidos en {span} días desde el inicio, en días con las dosis tomadas.",
|
||
"fitFailed": "No se pudieron ajustar estos valores, así que no se muestra el cambio al inicio.",
|
||
"autocorrelation": "Los valores diarios dependen mucho del día anterior, así que incluso estos rangos pueden ser demasiado estrechos."
|
||
}
|
||
},
|
||
"import": {
|
||
"resultSuccess": "{imported} tomas importadas",
|
||
"resultPartial": "{imported} importadas, {skipped} omitidas.",
|
||
"resultNothing": "No se importó nada: se omitieron las {skipped} entradas.",
|
||
"resultAlreadyRecorded": "{recorded} tomas ya están registradas. No se añadió nada nuevo.",
|
||
"resultEmpty": "Ese archivo no contenía ninguna toma.",
|
||
"showSkipDetails": "Mostrar filas omitidas ({count})",
|
||
"skipDetailLine": "Fila {line}: {reason}",
|
||
"skipDetailsOmitted": "No se muestran {count} filas omitidas más.",
|
||
"skipGroupOne": "{count} entrada omitida: {reason}",
|
||
"skipGroupFew": "{count} entradas omitidas: {reason}",
|
||
"skipGroupOther": "{count} entradas omitidas: {reason}",
|
||
"reasonDuplicateInFile": "otra entrada del mismo archivo tiene la misma fecha y hora",
|
||
"reasonAlreadyRecorded": "ya hay una toma registrada para esa fecha y hora",
|
||
"reasonUnknown": "motivo no registrado",
|
||
"reasonMedicationNotFound": "ningún medicamento registrado coincide con el nombre del archivo",
|
||
"reasonMedicationAmbiguous": "el nombre del archivo coincide con más de un medicamento",
|
||
"reasonMedicationIsMirrored": "el medicamento es una copia de solo lectura de otra aplicación",
|
||
"reasonStatusUnknown": "el estado del archivo no es uno de los que define el formato",
|
||
"reasonMissingTimestamp": "la fila no indica ninguna hora",
|
||
"reasonMissingOffset": "la hora no lleva desplazamiento UTC, así que el instante es desconocido",
|
||
"reasonUnreadableTimestamp": "la hora no tiene el formato que documenta la exportación",
|
||
"reasonImplausibleTimestamp": "la hora no nombra un instante real, o está en el futuro",
|
||
"reasonMissingMedication": "la fila no nombra ningún medicamento",
|
||
"reasonUnreadableDosage": "la dosis no es un número",
|
||
"reasonUnreadableRow": "la fila tiene menos columnas que la cabecera",
|
||
"reasonStatusNoDoseInformation": "el archivo no registra nada sobre esa dosis: nadie respondió y nada se anotó",
|
||
"reasonStatusReminderEvent": "la fila trata de un recordatorio postergado, que no dice nada sobre la dosis",
|
||
"reasonStatusNotificationNotSent": "la fila registra que no se envió ninguna notificación, lo cual habla de la aplicación y no de la dosis"
|
||
},
|
||
"unitsPerDoseField": {
|
||
"other": "Otro…",
|
||
"inputLabel": "Unidades por dosis, otro valor",
|
||
"placeholder": "p. ej., 1,5 o 1 1/2",
|
||
"invalid": "Introduce un número mayor que 0 y hasta 100, por ejemplo 1,5 o 1 1/2.",
|
||
"preview": "Cuenta como {value} por dosis"
|
||
},
|
||
"category": {
|
||
"custom": {
|
||
"add": "Nueva categoría",
|
||
"label": "Nombre de la categoría",
|
||
"labelPlaceholder": "p. ej. Botiquín de viaje",
|
||
"create": "Añadir",
|
||
"limitReached": "Has alcanzado el límite de 20 categorías propias.",
|
||
"saveFailed": "No se ha guardado. Inténtalo de nuevo.",
|
||
"bpGateNote": "El análisis de la presión arterial solo cuenta los medicamentos de la categoría integrada Presión arterial.",
|
||
"manage": "Gestionar categorías",
|
||
"manageDescription": "Tus propias categorías, junto a las integradas.",
|
||
"hidden": "Oculta",
|
||
"count": "{count} medicamentos",
|
||
"rename": "Renombrar",
|
||
"hide": "Ocultar en el selector",
|
||
"show": "Mostrar en el selector",
|
||
"delete": "Eliminar",
|
||
"deleteTitle": "¿Eliminar esta categoría?",
|
||
"deleteBody": "{count} medicamentos de esta categoría pasan a Otros. Los medicamentos se conservan.",
|
||
"movedToOther": "Categoría eliminada. {count} medicamentos pasan a Otros."
|
||
},
|
||
"filter": {
|
||
"label": "Categoría",
|
||
"all": "Todas las categorías"
|
||
}
|
||
},
|
||
"course": {
|
||
"endedOn": "El último tratamiento terminó el {date}",
|
||
"nth": "Tratamiento {n}",
|
||
"startNew": "Empezar un nuevo tratamiento",
|
||
"editTitle": "Editar tratamiento",
|
||
"startsOn": "Primer día",
|
||
"endsOn": "Último día (opcional)",
|
||
"note": "Nota (opcional)",
|
||
"notePlaceholder": "p. ej. la gripe de marzo",
|
||
"title": "Tratamientos",
|
||
"helper": "Cuándo lo tomaste. Solo se esperan tomas dentro de un tratamiento.",
|
||
"none": "Tomado de forma continua, sin tratamientos separados.",
|
||
"range": "Del {start} al {end}",
|
||
"since": "Desde el {start}",
|
||
"meta": "Tratamiento {n}, {status}, {taken} tomas",
|
||
"status": {
|
||
"current": "en curso",
|
||
"upcoming": "previsto",
|
||
"ended": "terminado"
|
||
},
|
||
"delete": "Eliminar tratamiento",
|
||
"deleteTitle": "¿Eliminar este tratamiento?",
|
||
"deleteBody": "Se eliminan las fechas; las tomas registradas siguen en el historial.",
|
||
"deleteLastConfirm": "Es el único tratamiento. Sin él, el medicamento cuenta como tomado de forma continua desde que lo añadiste. Las tomas registradas se conservan.",
|
||
"error": {
|
||
"overlap": "Este tratamiento coincide en días con otro.",
|
||
"currentOpen": "Termina el tratamiento en curso antes de añadir uno posterior.",
|
||
"oneShot": "Un medicamento de una sola vez tiene un único tratamiento.",
|
||
"invalidRange": "El último día no puede ser anterior al primero.",
|
||
"generic": "No se ha guardado. Inténtalo de nuevo."
|
||
}
|
||
},
|
||
"composition": {
|
||
"title": "Composición",
|
||
"empty": "Añade lo que contiene un comprimido o una cápsula para que cada dosis tomada cuente en tus micronutrientes.",
|
||
"perUnitNote": "Por comprimido o cápsula; cada dosis tomada se suma a los micronutrientes del día.",
|
||
"add": "Añadir",
|
||
"edit": "Editar",
|
||
"rowHelper": "Lo que contiene un comprimido o una cápsula, para los micronutrientes.",
|
||
"sheetTitle": "Lo que contiene una unidad",
|
||
"sheetDescription": "Introduce las cantidades por comprimido o cápsula tal como figuran en la etiqueta.",
|
||
"nutrientLabel": "Nutriente",
|
||
"amountLabel": "Cantidad",
|
||
"unitLabel": "Unidad",
|
||
"choose": "Elige un nutriente",
|
||
"addRow": "Añadir un nutriente",
|
||
"removeRow": "Quitar {name}",
|
||
"editorEmpty": "Aún no hay nutrientes. Añade uno por cada línea de la etiqueta.",
|
||
"labelPhoto": "Leer de una foto de la etiqueta",
|
||
"labelReading": "Leyendo la etiqueta…",
|
||
"labelWaiting": "El proceso en segundo plano aún no ha empezado con la etiqueta.",
|
||
"labelReviewNote": "Comprueba cada línea con la etiqueta antes de guardar.",
|
||
"lowConfidence": "Esta línea era difícil de leer; compruébala con la etiqueta.",
|
||
"unmatchedTitle": "Líneas sin nutriente correspondiente, para introducir a mano si hace falta:",
|
||
"servingNote": "La etiqueta indica: {note}. Las cantidades se muestran por unidad.",
|
||
"labelError": "No se pudo leer la etiqueta",
|
||
"saveError": "No se pudo guardar la composición",
|
||
"catalogError": "No se pudo cargar la lista de nutrientes",
|
||
"invalidRow": "Elige un nutriente e introduce una cantidad mayor que cero en cada línea."
|
||
}
|
||
},
|
||
"charts": {
|
||
"loadingLabel": "Cargando la gráfica…",
|
||
"loadingSlowHint": "Calculando los análisis. Puede tardar un momento.",
|
||
"weight": "Peso",
|
||
"bloodPressure": "Tensión arterial",
|
||
"pulse": "Pulso",
|
||
"bodyFat": "Grasa corporal",
|
||
"sleep": "Sueño",
|
||
"steps": "Pasos",
|
||
"hrv": "VFC",
|
||
"restingHeartRate": "FC en reposo",
|
||
"activeEnergy": "Energía activa",
|
||
"flights": "Pisos subidos",
|
||
"distance": "Distancia a pie + corriendo",
|
||
"vo2Max": "VO₂ máx",
|
||
"bodyTemperature": "Temperatura corporal",
|
||
"noData": "Sin datos en el periodo seleccionado",
|
||
"bucketWeekly": "Media semanal",
|
||
"bucketMonthly": "Media mensual",
|
||
"bucketWeeklyDaily": "Media diaria por semana",
|
||
"bucketMonthlyDaily": "Media diaria por mes",
|
||
"days7Label": "7 d",
|
||
"days7Title": "Últimos 7 días",
|
||
"days30Label": "30 d",
|
||
"daysNLabel": "{days} d",
|
||
"days30Title": "Últimos 30 días",
|
||
"days90Label": "90 d",
|
||
"days90Title": "Últimos 90 días",
|
||
"daysAllLabel": "Todos",
|
||
"daysAllTitle": "Todo el período",
|
||
"systolic": "Sistólica",
|
||
"diastolic": "Diastólica",
|
||
"bodyWater": "Agua corporal",
|
||
"boneMass": "Masa ósea",
|
||
"spo2": "SpO₂",
|
||
"movingAverage7d": "Tendencia 7 días",
|
||
"avg7dShort": "7D",
|
||
"avg30dShort": "30D",
|
||
"trend7dShort": "Tendencia 7 días",
|
||
"trend": "Tendencia",
|
||
"perWeek": "/semana",
|
||
"totalDelta": "Total",
|
||
"colorGreen": "Verde:",
|
||
"colorOrange": "Naranja:",
|
||
"colorRed": "Rojo:",
|
||
"mood": "Estado de ánimo",
|
||
"moodScore": "Puntuación de ánimo",
|
||
"weekdays": {
|
||
"mon": "Lun",
|
||
"wed": "Mié",
|
||
"fri": "Vie",
|
||
"sun": "Dom"
|
||
},
|
||
"months": {
|
||
"jan": "Ene",
|
||
"feb": "Feb",
|
||
"mar": "Mar",
|
||
"apr": "Abr",
|
||
"may": "May",
|
||
"jun": "Jun",
|
||
"jul": "Jul",
|
||
"aug": "Ago",
|
||
"sep": "Sep",
|
||
"oct": "Oct",
|
||
"nov": "Nov",
|
||
"dec": "Dic"
|
||
},
|
||
"heatmapOnTime": "a tiempo",
|
||
"heatmapLate": "tarde",
|
||
"heatmapVeryLate": "muy tarde",
|
||
"legendOnTime": "A tiempo",
|
||
"legendLate": "Tarde",
|
||
"legendVeryLate": "Muy tarde",
|
||
"legendMissed": "Omitida",
|
||
"emptyStateTitle": "Registra más mediciones para ver tendencias",
|
||
"emptyStateDescription": "Registra al menos 3 entradas para desbloquear la línea de tendencia.",
|
||
"needMoreDistinctDaysTitle": "Se necesitan más días distintos",
|
||
"needMoreDistinctDaysDescription": "Registra en más días para desbloquear la línea de tendencia.",
|
||
"noDataInRangeTitle": "Sin datos en este rango",
|
||
"noDataInRangeDescription": "No hay mediciones en el rango seleccionado. Cambia el rango o registra una nueva medición.",
|
||
"errorTitle": "No se pudieron cargar los datos",
|
||
"loadErrorTitle": "No se pudo cargar el gráfico",
|
||
"loadErrorReload": "Recargar",
|
||
"sparseDataCaption": "Más días completarán la tendencia.",
|
||
"tooltipHourlyMean": "{metric} (promedio de las horas)",
|
||
"dataTable": {
|
||
"toggle": "Puntos de datos ({count})",
|
||
"columnDate": "Fecha",
|
||
"noValue": "Sin valor",
|
||
"captionDay": "Una fila por día de {metric}: los mismos puntos que dibuja el gráfico.",
|
||
"captionWeek": "Una fila por semana de {metric}, la media de los días de esa semana: los mismos puntos que dibuja el gráfico.",
|
||
"captionMonth": "Una fila por mes de {metric}, la media de los días de ese mes: los mismos puntos que dibuja el gráfico.",
|
||
"hourlyMeanNote": "{metric} es el promedio de cada día, con cada hora contando una sola vez, para que un entrenamiento no pese más que el resto del día."
|
||
},
|
||
"personalBaseline": "Tu media",
|
||
"deltaVsBaseline": "{delta} vs. tu media",
|
||
"deltaUnchanged": "coincide con tu media",
|
||
"deltaVsTarget": "{delta} vs. objetivo",
|
||
"weekdaysFull": {
|
||
"mon": "Lunes",
|
||
"tue": "Martes",
|
||
"wed": "Miércoles",
|
||
"thu": "Jueves",
|
||
"fri": "Viernes",
|
||
"sat": "Sábado",
|
||
"sun": "Domingo"
|
||
},
|
||
"rangeBand": "Rango",
|
||
"a11y": {
|
||
"summary": "Gráfico de {metric}. Rango de {min} a {max}, último {latest}, tendencia {trend}.",
|
||
"noData": "Gráfico de {metric}. No hay datos disponibles.",
|
||
"trendUp": "en aumento",
|
||
"trendDown": "en descenso",
|
||
"trendFlat": "estable",
|
||
"scatterSummary": "Gráfico de correlación, {count} puntos que comparan {xLabel} con {yLabel}.",
|
||
"scatterNoData": "Gráfico de correlación de {xLabel} frente a {yLabel}. No hay datos disponibles.",
|
||
"moodHeatmap": "Mapa de calor de estado de ánimo de {start} a {end}, {days} días registrados.",
|
||
"moodHeatmapEmpty": "Mapa de calor de estado de ánimo, aún no hay días registrados.",
|
||
"complianceHeatmap": "Mapa de calor de cumplimiento de medicación de {start} a {end}, {days} días activos.",
|
||
"complianceHeatmapEmpty": "Mapa de calor de cumplimiento de medicación, aún no hay días activos."
|
||
},
|
||
"medicationsEmptyAction": "Añadir un medicamento",
|
||
"rangeLabel": "Periodo"
|
||
},
|
||
"chart": {
|
||
"overlay": {
|
||
"controls": {
|
||
"title": "Capas de la gráfica",
|
||
"trendIndicator": "Tendencia 7 días",
|
||
"trendArrow": "Flecha de tendencia",
|
||
"targetRange": "Rango objetivo",
|
||
"comparisonBaseline": "Comparación",
|
||
"comparisonUnavailable": "Sin periodo anterior disponible",
|
||
"tooltip": {
|
||
"openSettings": "Ajustes de capas de gráfica"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"comparison": {
|
||
"baseline": {
|
||
"none": "Desactivado",
|
||
"lastMonth": "Mes anterior",
|
||
"lastYear": "Año anterior"
|
||
},
|
||
"captionLastMonth": "vs. mes anterior",
|
||
"captionLastYear": "vs. año anterior",
|
||
"deltaVs": {
|
||
"lastMonth": "{delta} vs. mes anterior",
|
||
"lastYear": "{delta} vs. año anterior"
|
||
},
|
||
"tooltipPrior": "Periodo anterior",
|
||
"unavailable": {
|
||
"lastMonth": "Comparación no disponible: sin datos del mes anterior",
|
||
"lastYear": "Comparación no disponible: sin datos del año anterior"
|
||
},
|
||
"notAvailableForCompliance": "Comparación no disponible para el cumplimiento"
|
||
},
|
||
"insights": {
|
||
"pattern": {
|
||
"dismiss": "Descartar",
|
||
"dismissed": "Este patrón queda descartado hasta que cambie la evidencia.",
|
||
"restore": "Mostrar de nuevo",
|
||
"dismissError": "No se pudo descartar este patrón.",
|
||
"restoreError": "No se pudo restaurar este patrón.",
|
||
"loadError": "No se pudieron cargar los patrones.",
|
||
"empty": "Ningún patrón actual superó el umbral de evidencia.",
|
||
"seasonalNote": "Desde la versión 1.42, HealthLog descuenta la estación del año y la tendencia a largo plazo antes de comparar valores. Verás menos relaciones, pero las que quedan son más sólidas. Muchos de los patrones anteriores eran solo el calendario.",
|
||
"seasonalNoteDismiss": "Cerrar aviso"
|
||
},
|
||
"correlation": {
|
||
"direction": {
|
||
"higher": "subir",
|
||
"lower": "bajar"
|
||
},
|
||
"weekdayDirection": {
|
||
"above": "por encima de",
|
||
"below": "por debajo de"
|
||
},
|
||
"channelFactor": "la valoración de {factor}",
|
||
"channel": {
|
||
"WEIGHT": "el peso",
|
||
"BLOOD_GLUCOSE": "la glucosa en sangre",
|
||
"BLOOD_PRESSURE_SYS": "la presión sistólica",
|
||
"BLOOD_PRESSURE_DIA": "la presión diastólica",
|
||
"ACTIVITY_STEPS": "los pasos diarios",
|
||
"SLEEP_DURATION": "la duración del sueño",
|
||
"HEART_RATE_VARIABILITY": "la variabilidad de la frecuencia cardíaca",
|
||
"RESTING_HEART_RATE": "la frecuencia cardíaca en reposo",
|
||
"TIME_IN_DAYLIGHT": "el tiempo con luz natural",
|
||
"MOOD": "el estado de ánimo",
|
||
"PULSE": "el pulso en reposo",
|
||
"MEDICATION_COMPLIANCE": "la adherencia a la medicación",
|
||
"SYMPTOM_SEVERITY": "la intensidad de los síntomas",
|
||
"ENV_TEMP_MEAN": "la temperatura diaria",
|
||
"ENV_TEMP_MIN": "la temperatura mínima nocturna",
|
||
"ENV_SUNSHINE": "las horas de sol",
|
||
"ENV_DAYLIGHT": "la luz natural",
|
||
"ENV_PRECIP": "las precipitaciones",
|
||
"ENV_PRESSURE_MEAN": "la presión atmosférica",
|
||
"ENV_PRESSURE_DELTA": "la variación de presión del día",
|
||
"ENV_PM25": "las partículas finas (PM2,5)",
|
||
"ENV_OZONE_8H": "el ozono",
|
||
"ENV_POLLEN_MAX": "el polen",
|
||
"HRV_RMSSD": "la variabilidad de la frecuencia cardiaca (RMSSD)",
|
||
"HYDRATION": "la ingesta de agua",
|
||
"CAFFEINE": "la ingesta de cafeína",
|
||
"ALCOHOL": "el consumo de alcohol",
|
||
"WORKOUT_MINUTES": "los minutos de entrenamiento",
|
||
"TRAINING_LOAD": "la carga de entrenamiento",
|
||
"EXERCISE_MINUTES": "los minutos de ejercicio",
|
||
"STAND_MINUTES": "los minutos de pie",
|
||
"MINDFUL_MINUTES": "los minutos de atención plena",
|
||
"STATE_OF_MIND_VALENCE": "el estado de ánimo registrado",
|
||
"INDOOR_CO2": "el CO2 interior",
|
||
"INDOOR_TEMPERATURE": "la temperatura interior",
|
||
"INDOOR_HUMIDITY": "la humedad interior"
|
||
},
|
||
"daily": {
|
||
"high": "Cuando {behaviour} es mayor, {outcome} del día siguiente tiende a {direction} en tus datos. Es un patrón que conviene observar, no una causa.",
|
||
"moderate": "Cuando {behaviour} es mayor, {outcome} del día siguiente parece tender a {direction}, según los datos disponibles. Es un patrón que conviene observar, no una causa.",
|
||
"faint": "Cuando {behaviour} es mayor, como mucho se insinúa en tus datos que {outcome} del día siguiente tienda a {direction}. Es demasiado leve para fiarse y nunca una causa."
|
||
},
|
||
"lab": {
|
||
"default": "Unos valores de {lab} más altos coinciden con que {outcome} tienda a {direction} en los mismos periodos de tus datos, una asociación que conviene vigilar con tu médico, nunca una causa.",
|
||
"faint": "Unos valores de {lab} más altos apenas insinúan que {outcome} tienda a {direction} en los mismos periodos de tus datos. Es demasiado leve para fiarse y nunca una causa, pero conviene comentarlo con tu médico."
|
||
},
|
||
"hypothesis": {
|
||
"bpCompliance": {
|
||
"support": "Una mayor adherencia a la medicación coincide con valores sistólicos más bajos, un patrón que conviene observar.",
|
||
"surprising": "La adherencia y la sistólica se mueven juntas en tus datos, algo sorprendente. Consulta con tu médico antes de cambiar nada.",
|
||
"none": "La adherencia y la sistólica no se mueven juntas de forma marcada en este periodo."
|
||
},
|
||
"moodPulse": {
|
||
"support": "Los días de peor ánimo coinciden con un pulso en reposo más alto, un patrón que conviene observar.",
|
||
"surprising": "Los días de mejor ánimo coinciden con un pulso en reposo más alto en tus datos, algo sorprendente.",
|
||
"none": "El ánimo y el pulso en reposo no se mueven juntos de forma marcada en este periodo."
|
||
},
|
||
"weightWeekday": "El peso de los {weekday} está {delta} kg {direction} tu media de los demás días, un patrón que conviene observar."
|
||
},
|
||
"dailySameDay": {
|
||
"high": "Más {behaviour} el mismo día y el día anterior tiende a ir con {direction} {outcome} en tus datos: un patrón que conviene observar, no una causa.",
|
||
"moderate": "Más {behaviour} el mismo día y el día anterior parece ir con {direction} {outcome} en tus datos, según lo visto hasta ahora: un patrón que conviene observar, no una causa.",
|
||
"faint": "Más {behaviour} el mismo día y el día anterior muestra, como mucho, un leve indicio de {direction} {outcome} en tus datos: demasiado pequeño para fiarse, nunca una causa."
|
||
},
|
||
"channelNutrient": "la ingesta de {nutrient}",
|
||
"dailyOvernight": {
|
||
"high": "Más {behaviour} durante la noche tiende a ir con {direction} {outcome} esa misma noche en tus datos: un patrón que conviene observar, no una causa.",
|
||
"moderate": "Más {behaviour} durante la noche parece ir con {direction} {outcome} esa misma noche en tus datos, según lo visto hasta ahora: un patrón que conviene observar, no una causa.",
|
||
"faint": "Más {behaviour} durante la noche muestra, como mucho, un leve indicio de {direction} {outcome} esa misma noche en tus datos: demasiado pequeño para fiarse, nunca una causa."
|
||
}
|
||
},
|
||
"noAnalysisYet": "Aún no hay valoración.",
|
||
"assessmentPreparing": "Preparando tu valoración…",
|
||
"emptyTitle": "Aún no hay datos suficientes",
|
||
"emptyDescription": "Los insights aparecen en cuanto registres algunas mediciones. Empieza por peso o tensión arterial.",
|
||
"emptyAddMeasurement": "Registrar medición",
|
||
"editMode": {
|
||
"done": "Listo",
|
||
"reset": "Restablecer",
|
||
"resetTitle": "¿Restablecer la vista general?",
|
||
"resetBody": "El orden de las secciones y las que ocultaste vuelven a los valores predeterminados. Tu disposición no se guarda en ningún otro sitio.",
|
||
"resetConfirm": "Restablecer vista",
|
||
"title": "Personalizar resumen",
|
||
"description": "Arrastra para reordenar, toca el ojo para mostrar u ocultar.",
|
||
"dragHandle": "Arrastra para reordenar",
|
||
"show": "Mostrar",
|
||
"hide": "Ocultar",
|
||
"manageInSettings": "Gestionar pestañas y páginas de detalle en los ajustes",
|
||
"groupSleep": "Sueño",
|
||
"groupMood": "Estado de ánimo",
|
||
"groupEvents": "Eventos",
|
||
"gatedHint": "Aparece cuando haya datos o la función esté disponible",
|
||
"allHiddenHint": "Todas las secciones están ocultas. Muestra al menos una para ver tu resumen.",
|
||
"saveSuccess": "Resumen guardado",
|
||
"saveError": "No se pudo guardar tu resumen",
|
||
"resetSuccess": "Resumen restablecido a los valores predeterminados",
|
||
"emptyTitle": "Todas las tarjetas están ocultas",
|
||
"emptyDescription": "Has ocultado todas las secciones. Abre Personalizar para volver a mostrarlas."
|
||
},
|
||
"bmiEmptyTitle": "Añade tu altura para calcular el IMC",
|
||
"bmiEmptyDescription": "El IMC necesita tu altura. Guárdala en Ajustes → Cuenta.",
|
||
"bmiEmptyAction": "Abrir ajustes de cuenta",
|
||
"personalRecord": {
|
||
"badge": "PR",
|
||
"tooltip": "Récord personal: {value} {unit} el {date}",
|
||
"benchmark": "Lo típico a esa edad: de {low} a {high} {unit} ({source})"
|
||
},
|
||
"loadError": "No se han podido cargar los análisis",
|
||
"heroPersonalBaseline": "Basado en tus últimos 90 días",
|
||
"heroRegenerating": "Generando",
|
||
"regenerateAnalysis": "Volver a generar la valoración",
|
||
"regenerateSuccess": "Valoración regenerada",
|
||
"narrativeTitle": "Resumen",
|
||
"narrativeWeek": "Esta semana",
|
||
"narrativeMonth": "Este mes",
|
||
"narrativeUpdating": "Actualizando…",
|
||
"heroFallbackSubtitle": "Una mirada diaria a tus tendencias, directamente de los datos que registras.",
|
||
"heroGreetingMorning": "Buenos días",
|
||
"heroGreetingAfternoon": "Buenas tardes",
|
||
"heroGreetingEvening": "Buenas noches",
|
||
"heroActionAskCoach": "Preguntar al coach",
|
||
"healthScore": {
|
||
"label": "Puntuación de salud",
|
||
"band": {
|
||
"green": "Dentro del intervalo de referencia",
|
||
"yellow": "Algunos pilares requieren atención",
|
||
"red": "Uno o más pilares están fuera del intervalo de referencia"
|
||
},
|
||
"insufficient": "Todavía no hay datos recientes suficientes para puntuar nada. Con un solo ámbito de salud basta para empezar, y la puntuación dirá en qué ámbitos se basa.",
|
||
"basis": "Basado en {count} de {recommended} ámbitos de salud.",
|
||
"compositionNotice": {
|
||
"item": "{pillar} ({reason})",
|
||
"left": "Ya no cuenta para la puntuación: {pillars}.",
|
||
"joined": "Ahora cuenta para la puntuación: {pillars}."
|
||
},
|
||
"anatomyToggle": "Cómo se forma esta puntuación",
|
||
"notScored": "Aún sin puntuar ({count})",
|
||
"method": "La puntuación es la media con igual peso de los pilares que cuentan para ella, en una escala de 0 a 100. Cada pilar se compara con un rango de referencia publicado, y el pilar más débil puede fijar el rango general. Un pilar sin datos recientes suficientes queda fuera en lugar de contar como cero. Los rangos de referencia proceden de fuentes publicadas; qué pilares cuentan lo eliges tú, así que el número combinado no es en sí mismo un estándar clínico.",
|
||
"bandSetter": "Categoría general determinada por {pillar}",
|
||
"versionAndNoise": "Versión del método {version}. Umbral de comparación semanal: {noise} puntos.",
|
||
"methodVersion": "Versión del método {version}.",
|
||
"configured": "Tú has elegido qué pilares cuentan para esta puntuación.",
|
||
"none": "ninguno",
|
||
"delta": "{delta} frente al periodo comparable anterior",
|
||
"deltaReason": {
|
||
"algorithm_changed": "No hay comparación porque cambió el método de puntuación.",
|
||
"config_changed": "No hay comparación porque cambiaste lo que cuenta para tu puntuación.",
|
||
"composition_changed": "No hay comparación porque cambiaron los pilares incluidos.",
|
||
"first_eligibility_window": "No hay comparación porque este es el primer periodo apto.",
|
||
"below_noise_floor": "El cambio está dentro de la variación conjunta de las mediciones.",
|
||
"no_previous_window": "No hay un periodo anterior comparable.",
|
||
"no_current_score": "No hay comparación porque el periodo actual no es apto."
|
||
},
|
||
"restMode": "Modo de descanso activo desde {since}. La puntuación se muestra como contexto y no se penaliza.",
|
||
"pillar": {
|
||
"bloodPressure": "Presión arterial",
|
||
"glycaemia": "Glucemia",
|
||
"activity": "Actividad",
|
||
"sleep": "Sueño",
|
||
"adiposity": "Adiposidad",
|
||
"wellbeing": "Bienestar",
|
||
"lipids": "Lípidos"
|
||
},
|
||
"observed": "Observado: {value}",
|
||
"reference": "Referencia: {value}",
|
||
"fastingObserved": "Glucosa en ayunas: {value} {unit}",
|
||
"fastingReference": "{low} a {high} {unit} en ayunas",
|
||
"personalReference": "Tu objetivo: {value}",
|
||
"bpBasisAbove": "Determinante: {axis}, unos {offset} mmHg por encima de su límite de {boundary} mmHg.",
|
||
"bpBasisBelowFloor": "Determinante: {axis}, unos {offset} mmHg por debajo del límite de presión baja de {boundary} mmHg.",
|
||
"bpBasisInBand": "Ambos valores están en su límite de referencia o por debajo.",
|
||
"bpScale": "En el límite la puntuación es 85; 100 significa unos 12 mmHg por debajo.",
|
||
"bpRepresentative": "Se basa en un promedio de los últimos {days} días que pondera más las mediciones recientes, por lo que puede no coincidir con ninguna medición concreta.",
|
||
"source": "Fuente: {source}, a fecha de {date}",
|
||
"observedActivity": "{value} pasos al día",
|
||
"observedSleep": "{value} minutos por noche",
|
||
"observedAdiposity": "Relación cintura-altura {value}",
|
||
"referenceActivity": "El beneficio se estabiliza en {high} pasos al día",
|
||
"referenceSleep": "Al menos {low} minutos por noche; el sueño más largo no se penaliza",
|
||
"referenceAdiposity": "Relación cintura-altura inferior a {high}",
|
||
"referenceHba1c": "HbA1c de {low} a {high} %",
|
||
"referenceDetail": "{label}: de {low} a {high} ({kind}, {source})",
|
||
"openBound": "abierto",
|
||
"laboratoryReferenceSource": "Intervalos de referencia del laboratorio",
|
||
"personalTargetSource": "Objetivo personal",
|
||
"referenceKind": {
|
||
"clinical": "Umbral clínico",
|
||
"population": "Percentil poblacional",
|
||
"guideline": "Intervalo de la guía"
|
||
},
|
||
"reason": {
|
||
"readFailed": "No se pudieron cargar los datos",
|
||
"notTracked": "Sin seguimiento",
|
||
"missingProfile": "Falta la edad o el perfil de referencia",
|
||
"missingHeight": "Falta la altura",
|
||
"incompletePanel": "Se necesita un panel reciente completo con intervalos de referencia",
|
||
"crisis": "Se muestran indicaciones de seguridad en lugar de una puntuación",
|
||
"insufficientHistory": "No hay suficientes datos recientes aptos",
|
||
"unavailable": "Este pilar no reúne los requisitos actualmente"
|
||
},
|
||
"tension": "Las señales de preparación difieren. Favorables: {positive}. Con tensión: {negative}.",
|
||
"returnToBand": "{metric} lleva {days} días de nuevo dentro de tu intervalo habitual.",
|
||
"weightGoal": {
|
||
"title": "Objetivo personal de peso",
|
||
"value": "Ahora {current} {unit}. Objetivo de {min} a {max} {unit}. Distancia al objetivo: {distance} {unit}.",
|
||
"delta": "La distancia al objetivo cambió {delta} {unit} desde la lectura anterior.",
|
||
"noDelta": "No hay una lectura de peso anterior para comparar.",
|
||
"no_personal_goal": "Define un objetivo personal de peso para ver aquí el progreso.",
|
||
"weight_not_tracked": "Registra una lectura de peso para ver el progreso hacia tu objetivo.",
|
||
"read_failed": "No se pudieron cargar los datos de peso. Inténtalo de nuevo.",
|
||
"notScored": "El progreso del objetivo de peso es contexto personal y no afecta a la puntuación de salud."
|
||
},
|
||
"configureLink": "Elegir qué cuenta para tu puntuación",
|
||
"coverage": {
|
||
"recommendedMet": "Cubre los tres ámbitos que la puntuación recomienda",
|
||
"areas": "{present} de {required} ámbitos de salud"
|
||
},
|
||
"historyLink": "Evolución"
|
||
},
|
||
"dailyBriefing": {
|
||
"title": "Resumen del día",
|
||
"keyFindingsTitle": "Hallazgos clave",
|
||
"signalsTitle": "Señales del día",
|
||
"emptyTitle": "Aún no hay resumen",
|
||
"emptyDescription": "Genera el resumen de hoy para tener una vista rápida de tus tendencias.",
|
||
"emptyAction": "Generar resumen",
|
||
"loadingLabel": "Preparando el resumen",
|
||
"refreshFailedHint": "No se pudo actualizar el briefing: se muestra el anterior.",
|
||
"retryAction": "Reintentar",
|
||
"failedTitle": "No se pudo generar el briefing",
|
||
"failedDescription": "El proveedor de IA agotó el tiempo de espera o devolvió un error. Inténtalo de nuevo o aumenta el tiempo de espera de respuesta en los ajustes de IA para un modelo local lento.",
|
||
"failedDescriptionTimeout": "La solicitud de IA agotó el tiempo de espera antes de que el resumen estuviera listo. Para un modelo local lento, aumenta el tiempo de espera de respuesta en Ajustes y vuelve a intentarlo.",
|
||
"failedDescriptionProvider": "El proveedor de IA rechazó la solicitud. Revisa el proveedor y la clave de API en los ajustes de IA y vuelve a intentarlo.",
|
||
"failedDescriptionRateLimit": "El proveedor de IA está limitando las solicitudes en este momento. Vuelve a intentarlo en un rato.",
|
||
"omittedTitle": "Resumen retenido",
|
||
"omittedUngroundedDescription": "El resumen generado mencionaba una cifra que no se pudo verificar con tus datos, así que no se mostró. Inténtalo de nuevo."
|
||
},
|
||
"trendsRow": {
|
||
"title": "Tendencias",
|
||
"subtitle": "Los últimos 30 días de un vistazo",
|
||
"caption": {
|
||
"bp": "Valores sistólicos y diastólicos de los últimos 30 días.",
|
||
"weight": "Evolución del peso corporal de los últimos 30 días.",
|
||
"pulse": "Pulso en reposo de los últimos 30 días.",
|
||
"mood": "Puntuación diaria del estado de ánimo de los últimos 30 días.",
|
||
"sleep": "Duración del sueño nocturno de los últimos 30 días.",
|
||
"steps": "Recuento diario de pasos de los últimos 30 días.",
|
||
"hrv": "Variabilidad de la frecuencia cardíaca de los últimos 30 días.",
|
||
"resting_hr": "Frecuencia cardíaca en reposo de los últimos 30 días.",
|
||
"active_energy": "Energía activa quemada en los últimos 30 días.",
|
||
"flights": "Pisos subidos en los últimos 30 días.",
|
||
"distance": "Distancia caminando y corriendo de los últimos 30 días.",
|
||
"vo2_max": "VO₂ máx de los últimos 30 días.",
|
||
"body_temp": "Temperatura corporal de los últimos 30 días."
|
||
},
|
||
"viewDetail": "Ver detalles de {metric}"
|
||
},
|
||
"vo2Max": {
|
||
"cardioLinkTitle": "Forma cardiovascular (VO₂ máx)",
|
||
"cardioLinkBody": "El VO₂ máx es la medida principal de la forma aeróbica. El gráfico completo y la evaluación están en su propia página.",
|
||
"cardioLinkCta": "Abrir forma cardiovascular"
|
||
},
|
||
"trendAnnotation": {
|
||
"emptyBp": "Necesitamos más datos para comentar esta tendencia.",
|
||
"emptyWeight": "Necesitamos más datos para comentar esta tendencia.",
|
||
"emptyMood": "Necesitamos más datos para comentar esta tendencia.",
|
||
"confidenceHigh": "Confianza alta",
|
||
"confidenceModerate": "Confianza media",
|
||
"confidenceLow": "Confianza baja",
|
||
"pendingLabel": "Generando comentario de tendencia"
|
||
},
|
||
"correlationRow": {
|
||
"title": "Correlaciones",
|
||
"experimentCta": "Iniciar experimento de 7 días",
|
||
"experimentTooltip": "Próximamente",
|
||
"emptyTitle": "Necesitamos más datos para mostrar esta correlación",
|
||
"sourceChip": "basado en {n} mediciones pareadas ({window})",
|
||
"sourceWindowLast30": "Últimos 30 días",
|
||
"confidenceHigh": "Confianza alta",
|
||
"confidenceModerate": "Confianza media",
|
||
"confidenceLow": "Confianza baja",
|
||
"card": {
|
||
"bpComplianceTitle": "TA × cumplimiento medicación",
|
||
"bpComplianceSubtitle": "Sistólica diaria frente al % de cumplimiento",
|
||
"moodPulseTitle": "Ánimo × pulso en reposo",
|
||
"moodPulseSubtitle": "Estado de ánimo y pulso en reposo el mismo día",
|
||
"weightWeekdayTitle": "Peso × día de la semana",
|
||
"weightWeekdaySubtitle": "Peso agrupado por día de la semana"
|
||
}
|
||
},
|
||
"coach": {
|
||
"refusalOutOfScope": "Solo puedo ayudarte con los datos de salud de tu registro: mediciones, medicamentos, estado de ánimo, tendencias. Preguntas fuera de ese ámbito no las respondo.",
|
||
"refusalInjection": "Tu mensaje contiene instrucciones que pretenden sobrescribir mis indicaciones. Soy el coach de HealthLog y solo resumo tus propios datos de salud. Reformula tu pregunta dentro de ese marco.",
|
||
"errorBudget": "Has alcanzado el límite diario del coach. El cupo se reinicia a medianoche en tu zona horaria.",
|
||
"errorProvider": "El coach no ha podido contactar con un proveedor de análisis ahora mismo. Inténtalo en un momento.",
|
||
"errorDemo": "En la demo, el Coach no responde.",
|
||
"errorNoProvider": "El coach lee tus datos de salud registrados y responde preguntas sobre ellos (no es consejo médico). HealthLog necesita un proveedor de IA para ello: conecta tu propia clave o un modelo local.",
|
||
"errorNoProviderAction": "Conectar un proveedor de IA",
|
||
"errorNetwork": "Sin conexión a Internet. Inténtalo de nuevo cuando vuelvas a estar en línea.",
|
||
"prefsSaveError": "No se pudieron guardar tus preferencias del Coach. Inténtalo de nuevo.",
|
||
"errorCredentialExpired": "Tu conexión con el proveedor de IA ha caducado. Vuelve a conectarla en Ajustes para que el Coach siga funcionando.",
|
||
"tagline": "Coach personal de salud, apoyado en tus datos.",
|
||
"newChat": "Nueva conversación",
|
||
"docScope": {
|
||
"badge": "Documento",
|
||
"chattingAbout": "Hablando sobre: {title}",
|
||
"chattingAboutMore": "Hablando sobre: {titles} y {count} más",
|
||
"notIndexedHint": "Primero lee este documento con IA en el archivo para que el Coach pueda responder sobre él."
|
||
},
|
||
"actionsMenu": "Acciones",
|
||
"maximizeAriaLabel": "Abrir en pantalla completa",
|
||
"minimizeAriaLabel": "Volver al panel",
|
||
"send": "Enviar",
|
||
"stop": "Detener",
|
||
"thinking": "Pensando…",
|
||
"unverifiedFiguresNotice": "Algunas cifras no se pudieron contrastar con tus datos y se omitieron.",
|
||
"composerPlaceholder": "Pregúntame algo …",
|
||
"nudgeBubbleLabel": "Nuevo mensaje del coach: abrir el chat",
|
||
"fabLabel": "Abrir el coach",
|
||
"readAloud": "Leer en voz alta",
|
||
"readAloudStop": "Detener lectura",
|
||
"messageTimeLabel": "Mensaje enviado {time}",
|
||
"copyMessage": "Copiar",
|
||
"copyMessageError": "No se pudo copiar",
|
||
"regenerate": "Reintentar",
|
||
"selfContextAdopt": {
|
||
"offer": "¿Añadir esta respuesta a tu información personal?",
|
||
"confirm": "Añadir",
|
||
"dismiss": "Descartar",
|
||
"done": "Añadido a tu información personal",
|
||
"duplicate": "Ya está en tu información personal",
|
||
"failed": "No se pudo añadir. Inténtalo de nuevo."
|
||
},
|
||
"rememberMessage": {
|
||
"action": "Recordar",
|
||
"failed": "No se pudo guardar. Inténtalo de nuevo.",
|
||
"alreadyKept": "El Coach ya lo recuerda."
|
||
},
|
||
"guided": {
|
||
"offerTitle": "El Coach tiene {count} preguntas para ti",
|
||
"offerTitleOne": "El Coach tiene una pregunta para ti",
|
||
"offerBody": "Respuestas breves afinan tu información personal: una pregunta a la vez, aquí en el chat.",
|
||
"offerStart": "Responder ahora",
|
||
"offerLater": "Más tarde",
|
||
"offerDismiss": "No volver a preguntar",
|
||
"dismissError": "No se pudieron descartar las preguntas. Inténtalo de nuevo.",
|
||
"progress": "Pregunta {current} de {total}",
|
||
"skip": "Omitir",
|
||
"later": "Más tarde",
|
||
"dismissRemaining": "No volver a preguntar",
|
||
"answerPlaceholder": "Tu respuesta…",
|
||
"summaryTitle": "¡Listo, gracias por tus respuestas!",
|
||
"summaryAnswered": "{answered} de {total} respondidas",
|
||
"summaryAdopted": "{adopted} añadidas a tu información personal",
|
||
"summaryAdoptedNone": "no se añadió nada nuevo a tu información personal",
|
||
"summaryLink": "Ver tu información personal"
|
||
},
|
||
"threadEmpty": "Pregúntame algo sobre tus tendencias, medicamentos o mediciones para empezar.",
|
||
"historyTitle": "Conversaciones",
|
||
"historySearchPlaceholder": "Buscar en las conversaciones…",
|
||
"historyEmpty": "Tus conversaciones aparecen aquí. Lanza una pregunta para empezar.",
|
||
"historyDeleteAria": "Eliminar conversación",
|
||
"historyDeleted": "Conversación eliminada",
|
||
"historyDeleteFailed": "No se pudo eliminar la conversación.",
|
||
"rename": {
|
||
"action": "Renombrar conversación",
|
||
"input": "Título de la conversación",
|
||
"save": "Guardar título",
|
||
"cancel": "Cancelar cambio de nombre",
|
||
"error": "No se pudo guardar el título de la conversación."
|
||
},
|
||
"historySearchEmpty": "Ninguna conversación coincide con tu búsqueda.",
|
||
"historyLoadingMore": "Cargando más…",
|
||
"sourcesTitle": "A qué accedo",
|
||
"sourcesFresh": "Actuales",
|
||
"sourcesStale": "Desactualizados",
|
||
"sourcesFooter": "El coach solo lee los datos que has conectado.",
|
||
"metric": {
|
||
"bp": "Presión arterial",
|
||
"weight": "Peso",
|
||
"pulse": "Pulso",
|
||
"mood": "Estado de ánimo",
|
||
"compliance": "Cumplimiento",
|
||
"general": "General",
|
||
"hrv": "VFC",
|
||
"sleep": "Sueño",
|
||
"resting_hr": "Pulso en reposo",
|
||
"steps": "Pasos",
|
||
"active_energy": "Energía activa",
|
||
"flights": "Pisos",
|
||
"distance": "Distancia",
|
||
"vo2_max": "VO₂ máx",
|
||
"body_temp": "Temperatura corporal",
|
||
"medications": "Medicamentos",
|
||
"anthropometrics": "Perfil (altura, edad, sexo)",
|
||
"walking_hr": "Frecuencia cardiaca al caminar",
|
||
"respiratory_rate": "Frecuencia respiratoria",
|
||
"spo2": "Oxígeno en sangre",
|
||
"pulse_wave_velocity": "Velocidad de onda de pulso",
|
||
"vascular_age": "Edad vascular",
|
||
"body_fat": "Grasa corporal",
|
||
"fat_mass": "Masa grasa",
|
||
"fat_free_mass": "Masa libre de grasa",
|
||
"muscle_mass": "Masa muscular",
|
||
"lean_body_mass": "Masa corporal magra",
|
||
"bone_mass": "Masa ósea",
|
||
"total_body_water": "Agua corporal",
|
||
"bmi": "IMC",
|
||
"visceral_fat": "Grasa visceral",
|
||
"glucose": "Glucosa",
|
||
"walking_steadiness": "Estabilidad al caminar",
|
||
"walking_asymmetry": "Asimetría al caminar",
|
||
"walking_double_support": "Tiempo de doble apoyo",
|
||
"walking_step_length": "Longitud de paso",
|
||
"walking_speed": "Velocidad al caminar",
|
||
"audio_env": "Sonido ambiental",
|
||
"audio_headphone": "Audio de auriculares",
|
||
"audio_event": "Eventos de sonido fuerte",
|
||
"daylight": "Tiempo a la luz del día",
|
||
"skin_temp": "Temperatura de la piel",
|
||
"workouts": "Entrenamientos"
|
||
},
|
||
"settingsAriaLabel": "Ajustes del coach",
|
||
"settingsTitle": "Ajustes del coach",
|
||
"settingsDescription": "Configura cómo te habla el coach.",
|
||
"settingsToneLabel": "Tono",
|
||
"settingsToneWarm": "Cálido",
|
||
"settingsToneNeutral": "Neutro",
|
||
"settingsToneConcise": "Conciso",
|
||
"settingsVerbosityLabel": "Longitud de la respuesta",
|
||
"settingsVerbosityBrief": "Breve",
|
||
"settingsVerbosityDefault": "Estándar",
|
||
"settingsVerbosityDetailed": "Detallado",
|
||
"settingsVerbosityConciseHint": "El tono conciso ya mantiene las respuestas cortas: la extensión queda fijada en «Breve» mientras esté activo.",
|
||
"settingsSourcesSummary": "El coach ve {count} de {total} áreas de datos y mira {window} atrás.",
|
||
"settingsSourcesSummaryAll": "El coach ve {count} de {total} áreas de datos y todo el historial.",
|
||
"settingsSourcesPointerLink": "Abrir ajustes del coach",
|
||
"settingsExcludeLabel": "Excluir métricas",
|
||
"settingsExcludeHint": "El coach no verá los datos de las métricas seleccionadas.",
|
||
"settingsContextLabel": "Enviar contexto",
|
||
"settingsContextHint": "Bloques opcionales en los que el coach puede apoyarse. Si desactivas alguno, se omitirá en cada respuesta.",
|
||
"settingsEvidenceLabel": "Mostrar evidencia por defecto",
|
||
"settingsEvidenceHint": "Abre automáticamente el cuadro de evidencias bajo cada respuesta.",
|
||
"settingsDefaultWindowLabel": "Periodo de análisis por defecto",
|
||
"settingsDefaultWindowHint": "El coach lee este periodo por chat, salvo que elijas otro en la cabecera del cajón.",
|
||
"settingsSave": "Guardar",
|
||
"settingsSaved": "Guardado",
|
||
"settingsCancel": "Cancelar",
|
||
"dailyLimitTitle": "Límite diario alcanzado",
|
||
"dailyLimitBody": "Límite diario alcanzado. El cupo se reinicia a medianoche en tu zona horaria.",
|
||
"providerRateLimitTitle": "Proveedor con límite de tasa",
|
||
"providerRateLimitBody": "El proveedor está temporalmente saturado; reinicio en ~5 min.",
|
||
"cluster": {
|
||
"cardio": {
|
||
"label": "Cardiovascular",
|
||
"hint": "Presión, pulso, VFC, FC en reposo y al caminar"
|
||
},
|
||
"body": {
|
||
"label": "Composición corporal",
|
||
"hint": "Peso, grasa, músculo e IMC"
|
||
},
|
||
"activity": {
|
||
"label": "Actividad",
|
||
"hint": "Pasos, energía, distancia y VO₂ máx"
|
||
},
|
||
"workouts": {
|
||
"label": "Entrenamientos",
|
||
"hint": "Carreras, paseos y sesiones"
|
||
},
|
||
"sleep": {
|
||
"label": "Sueño",
|
||
"hint": "Duración y fases"
|
||
},
|
||
"mood": {
|
||
"label": "Estado de ánimo",
|
||
"hint": "Registros diarios de ánimo"
|
||
},
|
||
"glucose": {
|
||
"label": "Glucosa",
|
||
"hint": "Lecturas en ayunas y posprandiales"
|
||
},
|
||
"medication": {
|
||
"label": "Medicación",
|
||
"hint": "Adherencia y contexto GLP-1"
|
||
},
|
||
"mobility": {
|
||
"label": "Movilidad y marcha",
|
||
"hint": "Estabilidad, asimetría y marcha"
|
||
},
|
||
"environment": {
|
||
"label": "Entorno",
|
||
"hint": "Ruido, luz del día y temperatura de la piel"
|
||
}
|
||
},
|
||
"settingsClustersLabel": "Datos que ve el Coach",
|
||
"settingsClustersHint": "Elige qué grupos de datos puede leer el Coach. Más datos significan respuestas más ricas y un prompt mayor.",
|
||
"settingsClusterNoData": "Aún no hay datos",
|
||
"sourcesMemberCountOne": "1 métrica",
|
||
"sourcesMemberCountFew": "{count} métricas",
|
||
"sourcesMemberCountOther": "{count} métricas",
|
||
"lookback": {
|
||
"label": "Hasta dónde puede mirar atrás el Coach",
|
||
"option": {
|
||
"last7days": "{days} días",
|
||
"last30days": "{days} días",
|
||
"last90days": "{days} días",
|
||
"lastYear": "{months} meses",
|
||
"allTime": "{months} meses en detalle, más para los análisis"
|
||
},
|
||
"detailDays": "El Coach no lee nada con más de {days} días de antigüedad, en ninguna respuesta.",
|
||
"detailMonths": "El Coach no lee nada con más de {months} meses de antigüedad, en ninguna respuesta.",
|
||
"detailAll": "Sin límite, el Coach lee {dailyMonths} meses de mediciones al detalle diario y las más antiguas como valores mensuales hasta {years} años atrás. De los análisis lee el último valor de los marcadores medidos más recientemente y, de un marcador por el que preguntes, sus {labRecent} resultados anteriores; los más antiguos se resumen por año hasta {labYears} años atrás y los años anteriores solo se cuentan.",
|
||
"note": "Tu perfil, tu medicación actual, una enfermedad en curso y las próximas citas siguen visibles; los resúmenes que necesitan más historial se acortan o se omiten. Las respuestas que el Coach dio antes en conversaciones anteriores pueden seguir citando valores más antiguos."
|
||
},
|
||
"showConversations": "Mostrar conversaciones",
|
||
"hideConversations": "Ocultar conversaciones",
|
||
"heroGreeting": "Pregúntame lo que quieras sobre tus datos",
|
||
"heroSubline": "Pregunta por tus tendencias, medicamentos o mediciones.",
|
||
"thinkingDuration": "Pensó durante {seconds}s",
|
||
"thinkingExpandAria": "Mostrar lo que el Coach tuvo en cuenta",
|
||
"thinkingDetail": "Respondido a partir de tu resumen de salud.",
|
||
"tokensUsed": "{count} tokens",
|
||
"askAboutThis": "Pregúntale al coach sobre esto",
|
||
"readStrip": {
|
||
"label": "Rango habitual",
|
||
"baselineWithin": "Tu rango habitual es {low}–{high} {unit}; hoy {value} se sitúa dentro de él.",
|
||
"baselineAbove": "Tu rango habitual es {low}–{high} {unit}; hoy {value} se sitúa por encima.",
|
||
"baselineBelow": "Tu rango habitual es {low}–{high} {unit}; hoy {value} se sitúa por debajo.",
|
||
"sameHoursWithin": "Hasta esta hora del día sueles estar en {low}–{high} {unit}; hoy, por ahora, {value} está dentro.",
|
||
"sameHoursAbove": "Hasta esta hora del día sueles estar en {low}–{high} {unit}; hoy, por ahora, {value} está por encima.",
|
||
"sameHoursBelow": "Hasta esta hora del día sueles estar en {low}–{high} {unit}; hoy, por ahora, {value} está por debajo.",
|
||
"steadyWithin": "Tus valores suelen estar en {low} {unit}; hoy {value} coincide.",
|
||
"steadyAbove": "Tus valores suelen estar en {low} {unit}; hoy {value} está por encima.",
|
||
"steadyBelow": "Tus valores suelen estar en {low} {unit}; hoy {value} está por debajo.",
|
||
"latestWithin": "Tu rango habitual es {low}–{high} {unit}; tu última medición, del {date}, fue {value}, dentro de él.",
|
||
"latestAbove": "Tu rango habitual es {low}–{high} {unit}; tu última medición, del {date}, fue {value}, por encima.",
|
||
"latestBelow": "Tu rango habitual es {low}–{high} {unit}; tu última medición, del {date}, fue {value}, por debajo.",
|
||
"steadyLatestWithin": "Tus valores suelen estar en {low} {unit}; tu última medición, del {date}, fue {value} y coincide.",
|
||
"steadyLatestAbove": "Tus valores suelen estar en {low} {unit}; tu última medición, del {date}, fue {value}, por encima.",
|
||
"steadyLatestBelow": "Tus valores suelen estar en {low} {unit}; tu última medición, del {date}, fue {value}, por debajo.",
|
||
"insufficient": "Todavía estoy aprendiendo tu rango habitual. Sigue registrando unos días más.",
|
||
"driver": "{note}",
|
||
"loadError": "No se pudo cargar tu rango habitual."
|
||
},
|
||
"scope": {
|
||
"prefix": "El Coach ya está en {metric}"
|
||
},
|
||
"settings": "Ajustes",
|
||
"history": {
|
||
"groupToday": "Hoy",
|
||
"groupYesterday": "Ayer",
|
||
"groupThisWeek": "Esta semana",
|
||
"groupEarlier": "Anteriores"
|
||
},
|
||
"seed": {
|
||
"bloodPressure": "Repasa conmigo la tendencia de mi presión arterial de los últimos 30 días. ¿Hay algo que deba vigilar?",
|
||
"weight": "¿Cómo ha evolucionado mi peso últimamente y la dirección es algo sobre lo que actuar?",
|
||
"bmi": "¿Qué me dice mi tendencia de IMC y cómo debería interpretarla?",
|
||
"pulse": "Repasa conmigo mis lecturas de pulso. ¿Hay algo fuera de lo normal?",
|
||
"restingHr": "¿Cómo ha evolucionado mi frecuencia cardíaca en reposo y qué dice sobre mi forma física?",
|
||
"hrv": "¿Qué me dice mi variabilidad de la frecuencia cardíaca sobre la recuperación y el estrés últimamente?",
|
||
"sleep": "Repasa conmigo mi sueño reciente: duración, regularidad y cualquier cosa que valga la pena cambiar.",
|
||
"mood": "¿Qué patrones ves en mi estado de ánimo durante las últimas semanas?",
|
||
"medications": "¿Cómo va mi adherencia a la medicación y coincide con cómo me he sentido?",
|
||
"steps": "¿Qué tan activo he estado últimamente según mis pasos y cómo se compara con un nivel de referencia saludable?",
|
||
"activeEnergy": "¿Qué dice mi tendencia de energía activa sobre mi nivel de actividad últimamente?",
|
||
"cardioFitness": "¿Qué significa la tendencia de mi capacidad cardiorrespiratoria (VO₂ máx.) y cómo la llevo en la dirección correcta?",
|
||
"bloodGlucose": "Repasa conmigo mis últimas lecturas de glucosa. ¿Están en un rango saludable?",
|
||
"oxygenSaturation": "¿Qué me dice mi tendencia de oxígeno en sangre (SpO₂)?",
|
||
"respiratoryRate": "¿Qué dice mi tendencia de frecuencia respiratoria sobre mi salud?",
|
||
"workouts": "Repasa conmigo mis entrenamientos recientes: carga, frecuencia y cómo me recupero entre ellos.",
|
||
"recoveryPage": "¿Por qué mi recuperación está donde está ahora mismo y qué la está provocando?",
|
||
"briefing": "Repasa conmigo el resumen de hoy. ¿En qué debería centrarme y hay algo en lo que valga la pena actuar?",
|
||
"healthScore": "¿Por qué mi puntuación de salud es {score} de 100 y qué la mejoraría más?",
|
||
"periodWeek": "Repasa conmigo cómo fue mi última semana en mis métricas de salud. ¿Qué destaca?",
|
||
"periodMonth": "Repasa conmigo cómo fue mi último mes en mis métricas de salud. ¿Qué destaca?",
|
||
"correlationBpCompliance": "¿Cómo se relaciona mi adherencia a la medicación con mi presión arterial? Explícame qué significa esta correlación para mí.",
|
||
"correlationMoodPulse": "¿Existe una relación real entre mi estado de ánimo y mi pulso? Ayúdame a interpretar esta correlación.",
|
||
"correlationWeightWeekday": "¿Mi peso sigue un patrón semanal? ¿Qué me dice esta correlación por día de la semana?",
|
||
"recommendation": "Cuéntame más sobre esta recomendación: \"{text}\". ¿Por qué se aplica a mí y qué debería hacer al respecto?"
|
||
},
|
||
"assessmentPrompt": "Explícame mi evaluación de {metric}: ¿qué significa y qué debería hacer al respecto?",
|
||
"attach": {
|
||
"menuChooseFromDocuments": "Elegir de documentos",
|
||
"menuUploadNew": "Subir documento nuevo",
|
||
"trigger": "Adjuntar documentos",
|
||
"pickerTitle": "Adjuntar documentos",
|
||
"pickerDescription": "El coach solo lee los documentos que adjuntes, no tus datos de salud.",
|
||
"pickerSearchPlaceholder": "Buscar documentos…",
|
||
"pickerEmpty": "Aún no tienes documentos en tu archivo.",
|
||
"pickerNotIndexed": "Aún no indexado",
|
||
"pickerCap": "Puedes adjuntar hasta {max} más.",
|
||
"pickerConfirm": "Adjuntar ({count})",
|
||
"pillRemove": "Quitar {title}",
|
||
"indexing": "Indexando…",
|
||
"indexingHint": "Un documento aún se está indexando; podrás enviar cuando esté listo.",
|
||
"fencedHint": "Esta conversación se ejecuta sin acceso a tus datos de salud: el coach solo lee los documentos adjuntos.",
|
||
"documentsAttachedOne": "1 documento adjunto",
|
||
"documentsAttachedOther": "{count} documentos adjuntos",
|
||
"railBadge": "Chat de documento aislado",
|
||
"uploadError": "Error al subir. Inténtalo de nuevo.",
|
||
"notFoundError": "Ese enlace de documento ya no es válido: se iniciará un chat normal."
|
||
},
|
||
"interrupted": {
|
||
"note": "Esta respuesta se interrumpió antes de terminar.",
|
||
"retry": "Preguntar de nuevo"
|
||
},
|
||
"historyReadOnlyNote": "El Coach no está disponible ahora mismo, pero aún puedes leer y eliminar tus conversaciones.",
|
||
"transcriptYou": "Tú",
|
||
"transcriptCoach": "Coach",
|
||
"errorConsent": "El Coach necesita tu consentimiento de IA antes de poder responder. Puedes darlo en Ajustes, IA.",
|
||
"errorNotPermitted": "El Coach no está disponible dentro de un registro que alguien comparte contigo.",
|
||
"errorUnavailable": "El Coach no pudo comprobar su configuración ahora. Inténtalo de nuevo en un momento.",
|
||
"errorOperatorOff": "La IA está desactivada en este servidor, así que el Coach no puede responder.",
|
||
"errorCoachOff": "El Coach está desactivado. Puedes volver a activarlo en Ajustes, Módulos.",
|
||
"frame": {
|
||
"showPanel": "Mostrar conversaciones",
|
||
"hidePanel": "Ocultar conversaciones",
|
||
"panelDescription": "Tus conversaciones con el coach, las más recientes primero.",
|
||
"rowActions": "Acciones para {title}",
|
||
"rename": "Renombrar",
|
||
"delete": "Eliminar",
|
||
"modelSection": "Modelo",
|
||
"provider": "Responde con",
|
||
"modelManaged": "El modelo de este proveedor se configura en los ajustes de IA.",
|
||
"noProvider": "Ningún proveedor disponible",
|
||
"allSettings": "Todos los ajustes de IA",
|
||
"operatorCodex": "ChatGPT (compartido por el operador)",
|
||
"changeModel": "Cambiar en Ajustes > IA",
|
||
"saving": "Guardando…",
|
||
"saveFailed": "No se pudo guardar el cambio.",
|
||
"providerNotActive": "{provider} no pudo encargarse: no tiene un inicio de sesión ni una clave que funcionen. Configúralo en los ajustes de IA.",
|
||
"operatorManaged": "El operador de tu servidor gestiona esta conexión. Cuando configures uno de tus propios proveedores, responderá primero."
|
||
},
|
||
"answer": {
|
||
"scrollToBottom": "Ir al último mensaje",
|
||
"rememberDone": "Guardado",
|
||
"timeYesterday": "ayer {time}",
|
||
"timeEarlier": "{date}, {time}",
|
||
"info": "Detalles de la respuesta",
|
||
"infoModel": "Modelo: {model}"
|
||
},
|
||
"activity": {
|
||
"thinking": "Pensando…",
|
||
"fetching": "Consultando {domain}, {window}…",
|
||
"digestOne": "Resumiendo {count} valor…",
|
||
"digestFew": "Resumiendo {count} valores…",
|
||
"digestOther": "Resumiendo {count} valores…",
|
||
"digestDoneOne": "{count} valor de {areas}",
|
||
"digestDoneFew": "{count} valores de {areas}",
|
||
"digestDoneOther": "{count} valores de {areas}",
|
||
"areasOne": "{count} área",
|
||
"areasFew": "{count} áreas",
|
||
"areasOther": "{count} áreas",
|
||
"memoryOne": "Recuerda {count} cosa que le contaste",
|
||
"memoryFew": "Recuerda {count} cosas que le contaste",
|
||
"memoryOther": "Recuerda {count} cosas que le contaste",
|
||
"remember": "Recordando algo…",
|
||
"plan": "Preparando un plan…",
|
||
"asking": "Te pregunta…",
|
||
"answer": "Escribiendo la respuesta…",
|
||
"stop": {
|
||
"budget": "Presupuesto alcanzado, responde con lo que tiene",
|
||
"time": "Tiempo agotado, responde con lo que tiene",
|
||
"cap": "Muchos pasos, ahora lo resume",
|
||
"noProgress": "No hay datos nuevos, lo resume"
|
||
},
|
||
"thoughtProcessOne": "Razonamiento ({count} paso)",
|
||
"thoughtProcessFew": "Razonamiento ({count} pasos)",
|
||
"thoughtProcessOther": "Razonamiento ({count} pasos)",
|
||
"awaitingAnswer": "Se necesita tu respuesta"
|
||
},
|
||
"memory": {
|
||
"saved": "Recordado: {fact}",
|
||
"undo": "Deshacer",
|
||
"accept": "Sí, recuérdalo",
|
||
"decline": "No",
|
||
"confirmed": "Entendido, lo recordaré.",
|
||
"declined": "De acuerdo, no lo haré."
|
||
},
|
||
"plan": {
|
||
"accept": "Adoptar este plan",
|
||
"decline": "Ahora no",
|
||
"confirmed": "Anotado. Lo revisaremos juntos dentro de {days} días.",
|
||
"declined": "De acuerdo, ahora no."
|
||
},
|
||
"assumption": {
|
||
"line": "Supuesto: {value}",
|
||
"change": "Cambiar"
|
||
},
|
||
"suggestedReplies": {
|
||
"groupLabel": "Respuestas sugeridas"
|
||
},
|
||
"chart": {
|
||
"compare": {
|
||
"periods": "{a} frente a {b}"
|
||
}
|
||
},
|
||
"reasoning": {
|
||
"label": "Profundidad de razonamiento",
|
||
"hint": "Pensar más a fondo significa respuestas más precisas y un poco más de espera.",
|
||
"off": "Desactivado",
|
||
"minimal": "Mínimo",
|
||
"low": "Bajo",
|
||
"medium": "Medio",
|
||
"high": "Alto",
|
||
"capped": "(limitado por el administrador)",
|
||
"disabled": "El administrador ha desactivado el razonamiento profundo."
|
||
},
|
||
"memoryLink": "Memoria ({count})",
|
||
"newConversation": "Nueva conversación"
|
||
},
|
||
"relativeJustNow": "ahora mismo",
|
||
"relativeMinutesAgoOne": "hace {count} minuto",
|
||
"relativeMinutesAgoOther": "hace {count} minutos",
|
||
"relativeMinutesAgoFew": "hace {count} minutos",
|
||
"relativeHoursAgoOne": "hace {count} hora",
|
||
"relativeHoursAgoOther": "hace {count} horas",
|
||
"relativeHoursAgoFew": "hace {count} horas",
|
||
"relativeDaysAgoOne": "hace {count} día",
|
||
"relativeDaysAgoOther": "hace {count} días",
|
||
"relativeDaysAgoFew": "hace {count} días",
|
||
"navOverview": "Resumen",
|
||
"navCatalog": "Todas las métricas",
|
||
"navBloodPressure": "Presión arterial",
|
||
"navWeight": "Peso",
|
||
"navPulse": "Pulso",
|
||
"navMood": "Estado de ánimo",
|
||
"navMedication": "Medicamento",
|
||
"navNutrients": "Nutrientes",
|
||
"navBmi": "IMC",
|
||
"navSleep": "Sueño",
|
||
"navHrv": "VFC",
|
||
"navRestingHr": "FC reposo",
|
||
"navOxygenSaturation": "Oxígeno",
|
||
"navBodyTemperature": "Temperatura",
|
||
"navSteps": "Pasos",
|
||
"navActiveEnergy": "Energía activa",
|
||
"navAriaLabel": "Saltar a sección",
|
||
"pillScrollLeft": "Desplazar las pestañas a la izquierda",
|
||
"pillScrollRight": "Desplazar las pestañas a la derecha",
|
||
"tabStrip": {
|
||
"vitalsParent": {
|
||
"label": "Vitales",
|
||
"header": "Constantes vitales"
|
||
},
|
||
"bodyParent": {
|
||
"label": "Cuerpo",
|
||
"header": "Composición corporal"
|
||
},
|
||
"activityParent": {
|
||
"label": "Actividad",
|
||
"header": "Actividad y movilidad"
|
||
},
|
||
"heartParent": {
|
||
"label": "Corazón",
|
||
"header": "Salud cardíaca"
|
||
},
|
||
"hearingParent": {
|
||
"label": "Audición",
|
||
"header": "Audición y exposición sonora"
|
||
},
|
||
"environmentParent": {
|
||
"label": "Entorno",
|
||
"header": "Entorno"
|
||
},
|
||
"metabolicParent": {
|
||
"label": "Metabólico",
|
||
"header": "Metabólico"
|
||
}
|
||
},
|
||
"hrv": {
|
||
"title": "VFC",
|
||
"description": "Variabilidad de la frecuencia cardíaca a lo largo del tiempo: señal de recuperación del sistema nervioso, captada por la noche por Apple Watch y otros wearables compatibles.",
|
||
"chartTitle": "Variabilidad de la frecuencia cardíaca",
|
||
"emptyState": {
|
||
"title": "Aún no hay valores de VFC",
|
||
"description": "Los valores de VFC aparecerán aquí en cuanto Apple Watch (o un dispositivo Withings compatible) sincronice las mediciones nocturnas."
|
||
}
|
||
},
|
||
"restingHr": {
|
||
"title": "FC en reposo",
|
||
"description": "El nivel basal diario del corazón, distinto del pulso puntual de la página de pulso. Apple Salud aporta un valor al día.",
|
||
"chartTitle": "Frecuencia cardíaca en reposo",
|
||
"emptyState": {
|
||
"title": "Aún no hay FC en reposo",
|
||
"description": "La FC en reposo aparece cuando Apple Watch o un Withings compatible ha llevado puesto un día tranquilo."
|
||
},
|
||
"coachPrefill": "Aún no he registrado ninguna frecuencia cardíaca en reposo: ¿por qué el valor diario en reposo difiere de un pulso puntual y cómo puedo mejorarlo?"
|
||
},
|
||
"oxygenSaturation": {
|
||
"title": "Saturación de oxígeno",
|
||
"description": "Oxígeno en sangre (SpO₂): rango clínico normal 95–100 %, con zonas objetivo sombreadas en el gráfico.",
|
||
"chartTitle": "Saturación de oxígeno",
|
||
"emptyState": {
|
||
"title": "Aún no hay muestras de SpO₂",
|
||
"description": "Las muestras de SpO₂ llegan aquí en cuanto un wearable compatible (Apple Watch, Withings ScanWatch) capture una lectura."
|
||
}
|
||
},
|
||
"bodyTemperature": {
|
||
"title": "Temperatura corporal",
|
||
"description": "Tendencia de temperatura corporal central en grados Celsius. La temperatura cutánea de Withings vive en una métrica distinta.",
|
||
"chartTitle": "Temperatura corporal",
|
||
"emptyState": {
|
||
"title": "Aún no hay temperatura corporal",
|
||
"description": "Registra una lectura o deja que tu wearable sincronice una, y la tendencia aparecerá aquí.",
|
||
"cta": "Registrar temperatura corporal"
|
||
}
|
||
},
|
||
"steps": {
|
||
"title": "Pasos",
|
||
"description": "Recuento diario de pasos: una fila por día, desde Apple Salud o un dispositivo de actividad conectado.",
|
||
"chartTitle": "Pasos por día",
|
||
"emptyState": {
|
||
"title": "Aún no hay datos de pasos",
|
||
"description": "Los totales diarios de pasos aparecerán aquí en cuanto Apple Salud o un dispositivo de actividad sincronice un día completo."
|
||
}
|
||
},
|
||
"activeEnergy": {
|
||
"title": "Energía activa",
|
||
"description": "Total diario de energía activa en kilocalorías: una fila por día, desde Apple Salud o la actividad de Withings.",
|
||
"chartTitle": "Energía activa",
|
||
"emptyState": {
|
||
"title": "Aún no hay datos de energía activa",
|
||
"description": "Los totales de energía activa aparecerán aquí en cuanto Apple Salud o un dispositivo de actividad Withings sincronice un día completo."
|
||
}
|
||
},
|
||
"subPage": {
|
||
"loadError": "No se pudo cargar esta métrica ahora mismo.",
|
||
"blutdruckDescription": "Tu evolución sistólica/diastólica con rangos objetivo ajustados a la edad y una valoración en texto.",
|
||
"gewichtDescription": "Evolución del peso frente a la banda saludable derivada de tu altura, con valoración.",
|
||
"pulsDescription": "Pulso en reposo frente a una banda de referencia por edad y sexo basada en percentiles poblacionales de CDC/NCHS, con una valoración escrita.",
|
||
"stimmungDescription": "Valores diarios de estado de ánimo en el tiempo, con una valoración en texto.",
|
||
"medikamenteDescription": "Calendario de tomas por medicamento, más una valoración en texto.",
|
||
"bmiDescription": "IMC derivado de tu peso y altura, con valoración.",
|
||
"target": {
|
||
"adjustLink": "Ajustar el rango objetivo"
|
||
},
|
||
"explainer": {
|
||
"bloodPressureBody": "La presión arterial es la fuerza que ejerce la sangre sobre las paredes de las arterias, expresada como sistólica sobre diastólica (el pico durante un latido sobre el valor en reposo entre latidos). Los valores altos de forma constante sobrecargan el corazón y los vasos con el tiempo.",
|
||
"pulseBody": "El pulso es cuántas veces late el corazón por minuto. Una medición puntual refleja lo que hacías en ese momento: en reposo suele ser de 60 a 100 latidos por minuto y sube de forma natural con el movimiento, el estrés o la cafeína.",
|
||
"weightBody": "El peso corporal es una de las señales más simples del balance energético a largo plazo y de la salud general. La tendencia a lo largo de las semanas importa mucho más que cualquier lectura individual, que varía con la hidratación, la comida y la hora del día.",
|
||
"bmiBody": "El IMC es tu peso dividido por tu altura al cuadrado, un único número que te sitúa en una categoría amplia de peso. Es un cribado poblacional, no un diagnóstico, y no distingue el músculo de la grasa.",
|
||
"sleepBody": "La duración del sueño es cuánto dormiste realmente durante la noche, dividido en fases ligera, profunda y REM. La mayoría de los adultos necesita entre siete y nueve horas; tanto la cantidad como la calidad constantes favorecen la recuperación, el ánimo y el metabolismo.",
|
||
"moodBody": "El registro del estado de ánimo anota cómo te sientes con el tiempo en una escala sencilla. Anotarlo con regularidad revela patrones —cómo el sueño, la actividad o la medicación se relacionan con cómo te sientes— que un solo día nunca muestra.",
|
||
"medicationsBody": "La adherencia es la fiabilidad con la que tomas tu medicación según lo prescrito, aquí como la proporción de dosis previstas que registraste. Una toma constante suele ser lo que hace que un tratamiento funcione como se pretende.",
|
||
"restingHrBody": "La frecuencia cardíaca en reposo es tu ritmo cardíaco cuando estás completamente en reposo, normalmente medido durante la noche. Una frecuencia más baja suele indicar mejor forma cardiovascular, y una tendencia al alza puede ser una señal temprana de estrés o enfermedad.",
|
||
"hrvBody": "La VFC es la pequeña variación en el tiempo entre latidos consecutivos. Una mayor variabilidad suele reflejar un sistema nervioso bien recuperado y adaptable, mientras que una caída sostenida puede señalar fatiga, estrés o recuperación insuficiente.",
|
||
"oxygenSaturationBody": "La SpO₂ es el porcentaje de glóbulos rojos que transportan oxígeno. Los valores de 95 a 100 % son normales en reposo; los valores que se mantienen por debajo del 90 % merecen atención, aunque las bajadas breves nocturnas son frecuentes.",
|
||
"bodyTemperatureBody": "La temperatura corporal refleja tu estado térmico central, normalmente en torno a 37 °C con pequeñas variaciones diarias. Un aumento sostenido puede indicar una infección, mientras que las lecturas nocturnas en la muñeca reflejan sobre todo cambios relativos, no un valor clínico.",
|
||
"activeEnergyBody": "La energía activa son las calorías que quemas con el movimiento, además del consumo basal en reposo. Es una medida directa de lo físicamente activo que fue tu día.",
|
||
"workoutsBody": "Los entrenamientos son las sesiones de ejercicio estructurado que registran tus dispositivos, con tipo, duración y energía. Registrarlos muestra cómo el entrenamiento regular se acumula a lo largo de las semanas y cómo se relaciona con tus otras señales de salud.",
|
||
"respiratoryRateBody": "La frecuencia respiratoria es el número de respiraciones que haces por minuto. En reposo, la mayoría de los adultos respiran entre doce y veinte veces por minuto; un aumento sostenido puede acompañar a una enfermedad, el esfuerzo o el estrés.",
|
||
"bodyWaterBody": "El agua corporal total es la parte de tu peso compuesta por líquido, dentro y alrededor de las células. Varía con la hidratación, la comida y la actividad, así que la tendencia a lo largo de semanas dice más que una sola medición.",
|
||
"boneMassBody": "La masa ósea es el peso estimado del mineral de tu esqueleto. Las estimaciones de la báscula son aproximadas, pero una tendencia estable o al alza favorece la fortaleza ósea a largo plazo.",
|
||
"fatFreeMassBody": "La masa libre de grasa es todo lo que en tu cuerpo no es grasa: músculo, hueso, órganos y agua. Mantenerla o aumentarla mientras pierdes peso suele indicar una composición corporal más sana.",
|
||
"fatMassBody": "La masa grasa es el peso total de la grasa de tu cuerpo. Algo de grasa es esencial para las hormonas y la reserva de energía, pero un exceso —sobre todo en el abdomen— eleva el riesgo para la salud a largo plazo (WHO 2024).",
|
||
"bodyFatBody": "El porcentaje de grasa corporal es la parte de tu peso que es grasa. Los rangos saludables dependen del sexo y la edad, y las básculas lo estiman por bioimpedancia, así que la tendencia de varias semanas dice más que una sola lectura.",
|
||
"muscleMassBody": "La masa muscular es el peso estimado del músculo de tu cuerpo. Más músculo favorece la fuerza, el metabolismo y la movilidad, y suele requerir esfuerzo activo para conservarse con la edad.",
|
||
"visceralFatBody": "La grasa visceral es la grasa almacenada en lo profundo del abdomen, alrededor de los órganos. A diferencia de la grasa bajo la piel, un nivel alto se asocia estrechamente con enfermedad cardíaca y diabetes tipo 2, por lo que cuanto más baja, mejor.",
|
||
"leanBodyMassBody": "La masa magra corporal es tu peso total menos la grasa: músculo, hueso, órganos y agua en conjunto. Seguirla junto al peso muestra si los cambios vienen del músculo o de la grasa.",
|
||
"flightsClimbedBody": "Los pisos subidos cuentan las plantas que subes cada día, con un piso equivalente a unos tres metros de altura. Es un indicador sencillo de la actividad cotidiana y el esfuerzo del tren inferior.",
|
||
"walkingDistanceBody": "La distancia a pie y corriendo es el terreno que recorres caminando cada día. Complementa el recuento de pasos al reflejar cuánto te moviste, no solo con qué frecuencia diste pasos.",
|
||
"walkingSteadinessBody": "La estabilidad al caminar estima cuán estable y equilibrada es tu marcha, clasificada de correcta a baja. Un nivel bajo indica mayor probabilidad de caída y conviene comentarlo con un profesional.",
|
||
"walkingHeartRateBody": "La frecuencia cardíaca al caminar es tu pulso medio durante una caminata constante. Un valor más bajo con el tiempo suele reflejar una mejor forma cardiovascular para el mismo esfuerzo.",
|
||
"walkingAsymmetryBody": "La asimetría al caminar es la proporción de tiempo en que tus pasos son desiguales entre la pierna izquierda y la derecha. Un porcentaje más alto puede indicar dolor, lesión o un problema de marcha que conviene revisar.",
|
||
"doubleSupportTimeBody": "El tiempo de doble apoyo es la proporción de cada ciclo de marcha en que ambos pies tocan el suelo a la vez. Un porcentaje más alto suele indicar una marcha más cautelosa y menos estable.",
|
||
"stepLengthBody": "La longitud de zancada es la distancia media de una pisada a la siguiente. Una zancada más corta con el tiempo puede reflejar fatiga, cautela o un cambio en la movilidad.",
|
||
"walkingSpeedBody": "La velocidad al caminar es lo rápido que te mueves en terreno llano. Es un marcador bien estudiado de la salud general y la movilidad, y un ritmo estable o al alza es buena señal.",
|
||
"pulseWaveVelocityBody": "La velocidad de la onda de pulso mide la rapidez con que la onda de presión de cada latido viaja por tus arterias. Una onda más rápida indica arterias más rígidas, lo que se asocia a mayor riesgo cardiovascular.",
|
||
"vascularAgeBody": "La edad vascular estima qué edad aparentan tus arterias en comparación con tu edad real, según la rigidez arterial. Una edad vascular por debajo de la real sugiere vasos sanguíneos más sanos.",
|
||
"environmentalAudioBody": "Los niveles de sonido ambiental registran el volumen del entorno en decibelios. La exposición prolongada por encima de unos 70 dB puede dañar la audición con el tiempo, así que los promedios diarios más bajos son más seguros.",
|
||
"headphoneAudioBody": "Los niveles de audio con auriculares registran en decibelios el volumen al que escuchas con auriculares. Bajar el volumen y hacer pausas protege tu audición a largo plazo.",
|
||
"audioEventsBody": "Los eventos de sonido fuerte señalan momentos en que el ruido a tu alrededor alcanzó un nivel que puede dañar la audición con suficiente exposición. Los eventos frecuentes son una señal para buscar un entorno más silencioso o protección auditiva.",
|
||
"daylightBody": "El tiempo a la luz del día es cuánto pasas bajo luz exterior cada día. La luz diurna regular favorece un ritmo sueño-vigilia y un estado de ánimo saludables (CDC 2024), y el tiempo al aire libre se asocia con la salud ocular.",
|
||
"bloodGlucoseBody": "La glucosa en sangre es la cantidad de azúcar en tu sangre, la principal fuente de energía del cuerpo. Sube tras comer y se estabiliza entre comidas. Como orientación general para adultos sin diabetes, una glucosa en ayunas por debajo de {prediabetesFrom} {unit} es normal, entre {prediabetesFrom} y {prediabetesTo} es prediabetes, y a partir de {diabetesFrom} está en el rango de la diabetes (ADA 2024). Una sola lectura alta no es un diagnóstico; un profesional sanitario lo confirma con una prueba repetida, y quienes controlan una diabetes usan otros objetivos, fijados por su profesional sanitario.",
|
||
"skinTemperatureBody": "La temperatura de la piel aquí es el pequeño cambio nocturno de la temperatura de tu muñeca respecto a tu propio valor de referencia, no una medición absoluta de fiebre. Las variaciones pueden seguir el sueño, el entorno, una enfermedad o la fase del ciclo menstrual.",
|
||
"cardioFitnessBody": "El VO₂ máx es la cantidad de oxígeno que tu cuerpo puede usar al máximo esfuerzo: el mejor índice de laboratorio de la forma aeróbica, que los wearables estiman de forma indirecta. Una tendencia más alta o en aumento es una fuerte señal de salud cardiovascular.",
|
||
"cardioRecoveryBody": "La recuperación cardiaca es cuántas pulsaciones por minuto baja tu frecuencia cardiaca en el primer minuto tras parar un ejercicio intenso. Una caída mayor significa que tu corazón se calma más rápido, señal de buena forma física.",
|
||
"wristTemperatureBody": "La temperatura de muñeca se mide mientras duermes y se indica como la diferencia respecto a tu valor de referencia, no como un valor absoluto. Un valor estable es normal, mientras que una subida sostenida puede indicar enfermedad, entrenamiento intenso o un cambio del ciclo.",
|
||
"fallsBody": "Esto cuenta las caídas fuertes que detecta tu wearable. El objetivo es cero; un número creciente es una señal de riesgo de movilidad que conviene comentar con un profesional, sobre todo en personas mayores (CDC STEADI 2024).",
|
||
"sixMinuteWalkBody": "Es una estimación de cuánto podrías caminar en seis minutos, una prueba clínica clásica de movilidad y resistencia cardiopulmonar. El valor del wearable es una aproximación, no la prueba clínica supervisada; lo útil es la tendencia estable o en aumento.",
|
||
"stairAscentSpeedBody": "Es lo rápido que subes un tramo de escaleras. Es un marcador sensible de fuerza de piernas y movilidad: un ritmo estable o en aumento es buena señal y uno que baja conviene vigilar.",
|
||
"stairDescentSpeedBody": "Es lo rápido que bajas un tramo de escaleras. Junto con la velocidad de subida refleja el control de piernas y el equilibrio: un ritmo estable es buena señal y uno que baja conviene vigilar.",
|
||
"breathingDisturbancesBody": "Un wearable puede estimar con qué frecuencia se interrumpió tu respiración mientras dormías. Un índice más bajo es mejor; un nivel marcado como elevado, sobre todo durante muchas noches, conviene comentarlo con un profesional. Es una aproximación de cribado, no un diagnóstico de apnea del sueño.",
|
||
"stepsBody": "El recuento de pasos es el número total de pasos que das cada día: la medida más sencilla del movimiento cotidiano. Un hábito constante importa más que un único día destacado, y la meta redonda de 10.000 pasos es un eslogan publicitario, no una conclusión de la investigación.",
|
||
"readinessBody": "La disposición es una lectura diaria de lo listo que está tu cuerpo para afrontar el día, combinando la frecuencia cardíaca en reposo, la variabilidad de la frecuencia cardíaca y el sueño. Es una aproximación del dispositivo respecto a tu propia base, no una medida clínica: una puntuación más alta indica recuperación, una más baja es un aviso suave para bajar el ritmo.",
|
||
"sleepScoreBody": "Tu puntuación de sueño resume toda una noche en un solo número: duración, eficiencia, regularidad y el equilibrio entre sueño ligero, profundo y REM. Fíjate en el patrón a lo largo de las semanas en lugar de perseguir una puntuación perfecta una sola noche.",
|
||
"recoveryBody": "La recuperación refleja lo bien que tu cuerpo se ha repuesto, a partir de señales nocturnas como la variabilidad de la frecuencia cardíaca y la frecuencia en reposo. Una puntuación alta es luz verde para exigirte; una más baja sugiere que tu organismo aún se está reconstruyendo.",
|
||
"strainBody": "El esfuerzo capta cuánta carga cardiovascular y física le has impuesto a tu cuerpo, desde los entrenamientos hasta un día activo de pie. Cuando ya hay suficiente historial, se valora frente a tu propio esfuerzo habitual, no frente a un estándar ajeno.",
|
||
"stressBody": "El estrés aquí es una estimación de la carga fisiológica sobre tu sistema nervioso, leída sobre todo a partir de patrones de variabilidad de la frecuencia cardíaca y no de cómo te sientes conscientemente. Una puntuación más baja apunta a un estado calmado y bien regulado; una más alta es una invitación a incorporar recuperación.",
|
||
"recoveryPageBody": "La recuperación reúne las señales nocturnas que registra tu wearable —recarga, esfuerzo, carga y los totales de frecuencia cardiaca y energía del día— para mostrar cómo se ha recuperado tu cuerpo. Fíjate en el patrón a lo largo de los días más que en un solo número; un valor más bajo es una invitación a bajar el ritmo, no una alarma.",
|
||
"pulsePressureBody": "La presión de pulso es la diferencia entre tu valor sistólico y diastólico (sistólico menos diastólico). Como orientación general, unos 40 mmHg es lo típico en reposo; una diferencia amplia por encima de unos 60 mmHg en la mediana edad puede reflejar arterias más rígidas, mientras que una diferencia estrecha por debajo de unos 25 mmHg puede acompañar a un bajo volumen sistólico (StatPearls/NIH 2023). Es un motivo de conversación, no un diagnóstico.",
|
||
"meanArterialPressureBody": "La presión arterial media es la presión promedio que ven tus órganos a lo largo de un latido, aproximadamente la diastólica más un tercio de la diferencia con la sistólica. Como orientación general, un valor en reposo ronda los 70–100 mmHg (StatPearls/NIH 2023). El umbral de ~60 mmHg que se suele citar es un concepto de cuidados agudos, no una alarma para el autocontrol.",
|
||
"cycleEducationBody": "Tu ciclo atraviesa cuatro fases impulsadas por hormonas, y su duración y regularidad son una ventana accesible a la salud general. Como orientación general, los ciclos en personas adultas suelen durar 21–35 días (las referencias clínicas citan 24–38), con un sangrado de unos cinco días (ACOG 2015). La fase lútea es el ancla estable, así que la ovulación se estima mejor contando hacia atrás desde tu próxima regla prevista, nunca con un «día 14» fijo. Una ventana fértil predicha es una estimación que necesita varios ciclos registrados y sigue siendo aproximada, y la temperatura basal confirma la ovulación a posteriori en lugar de predecirla. No es un método anticonceptivo.",
|
||
"sleepHygieneBody": "Algunos hábitos con respaldo de evidencia favorecen el sueño: mantener horarios constantes de acostarse y levantarse incluso los fines de semana, recibir luz brillante por la mañana y atenuar las noches, una habitación fresca, oscura y silenciosa, y evitar la cafeína por la tarde, el alcohol tardío y las comidas copiosas a última hora (CDC 2024). La regularidad predice la salud al menos tanto como la duración, y el tiempo total de sueño de un wearable es mucho más fiable que su reparto entre sueño profundo, ligero y REM."
|
||
},
|
||
"bpDerived": {
|
||
"pulsePressure": "La presión de pulso (la diferencia entre tus valores) es de unos {value} mmHg; alrededor de 40 es lo típico en reposo.",
|
||
"meanArterialPressure": "La presión arterial media (el promedio que ven tus órganos) es de unos {value} mmHg, normalmente entre 70 y 100.",
|
||
"caveat": "Estos valores se derivan de tu última lectura como orientación general, no como diagnóstico."
|
||
},
|
||
"stats": {
|
||
"label": "Estadísticas resumidas",
|
||
"min": "Mín",
|
||
"max": "Máx",
|
||
"median": "Mediana",
|
||
"mean": "Media"
|
||
},
|
||
"showAllValues": "Mostrar todas las mediciones",
|
||
"valuesPageTitle": "{metric}: todas las mediciones",
|
||
"valuesPageDescription": "Cada medición detrás de esta métrica. Edita o elimina una entrada directamente.",
|
||
"diversity": {
|
||
"trigger": "Consejo de medición",
|
||
"weekday": "La mayoría de tus mediciones de {metric} caen en un mismo día de la semana. Registrar en otros días ofrece una imagen más completa.",
|
||
"timeOfDay": "La mayoría de tus mediciones de {metric} caen a una hora similar del día. Variar la hora ofrece una imagen más completa."
|
||
},
|
||
"valuesBack": "Volver a Insights",
|
||
"valuesBackToMetric": "Volver a {metric}",
|
||
"scoresBack": "Volver a Insights",
|
||
"ecgDescription": "Registros de ECG de una derivación de tu dispositivo, cada uno con el resultado del propio dispositivo."
|
||
},
|
||
"units": {
|
||
"steps": "pasos",
|
||
"flights": "pisos",
|
||
"falls": "caídas",
|
||
"years": "años",
|
||
"breathingEvents": "eventos",
|
||
"standHours": "horas",
|
||
"respiratoryRate": "respiraciones/min"
|
||
},
|
||
"sleep": {
|
||
"title": "Sueño",
|
||
"description": "Desglose por fases y duración nocturna, tomados de Apple Health.",
|
||
"mainSleep": "Sueño principal",
|
||
"totalSleep": "Sueño total",
|
||
"compositionTitle": "Distribución de fases",
|
||
"compositionSubtitle": "Últimas {nights} noches",
|
||
"compositionAriaLabel": "Distribución de fases del sueño en {nights} noches",
|
||
"sourceDiscrepancy": {
|
||
"tooltipTitle": "Las fuentes difieren"
|
||
},
|
||
"stages": {
|
||
"deep": "Profundo",
|
||
"rem": "REM",
|
||
"core": "Ligero",
|
||
"asleep": "Dormido",
|
||
"awake": "Despierto",
|
||
"inBed": "En la cama",
|
||
"nap": "Siesta",
|
||
"napCount": "{count} siestas",
|
||
"unavailable": "Aún no hay datos de fases. Las fases de sueño aparecerán aquí en cuanto una fuente conectada las proporcione."
|
||
},
|
||
"empty": {
|
||
"title": "Aún no hay datos de sueño",
|
||
"description": "Conecta una fuente como Apple Health o un wearable (o registra el sueño manualmente) y esta vista se llenará automáticamente.",
|
||
"action": "Gestionar dispositivos"
|
||
},
|
||
"debt": {
|
||
"title": "Deuda de sueño",
|
||
"value": "{hours} h {minutes} min de déficit",
|
||
"caption": "Balance pendiente de las últimas {nights} noches",
|
||
"clearValue": "Al día",
|
||
"clearCaption": "Nada pendiente en las últimas {nights} noches",
|
||
"learning": "Aún estamos midiendo tu sueño: {counted} noches hasta ahora, faltan {remaining} para un balance fiable.",
|
||
"computedInfo": "Esta es la estimación propia de HealthLog: un balance móvil de la necesidad menos el sueño de las últimas noches, que el sueño de recuperación va reduciendo. Puede diferir de la cifra de deuda de sueño nativa de un wearable, que usa su propio modelo de necesidad."
|
||
},
|
||
"average": {
|
||
"title": "Media por noche",
|
||
"value": "{hours} h {minutes} min",
|
||
"caption": "Sueño medio en las últimas {nights} noches",
|
||
"learning": "Aún estamos midiendo tu sueño: {counted} noches hasta ahora, faltan {remaining} para una media fiable."
|
||
},
|
||
"chronotype": {
|
||
"title": "Cronotipo",
|
||
"learning": "Aún estamos aprendiendo tu ritmo: {counted} de {total} noches libres. Un cronotipo necesita varias mañanas sin despertador para tener sentido.",
|
||
"advancedToggle": "Avanzado",
|
||
"socialJetlagValue": "{hours} h {minutes} min de jet lag social",
|
||
"socialJetlagCaption": "La diferencia entre el horario de sueño laboral y el de los días libres, como un pequeño cambio de huso horario semanal.",
|
||
"msfScValue": "Punto medio corregido {clock}",
|
||
"msfScCaption": "Ajustado por el sueño que recuperas el fin de semana (MSFsc).",
|
||
"dayTypeNote": "Se asume que los días libres son los fines de semana hasta que se añada el registro del tipo de día.",
|
||
"band": {
|
||
"extreme_early": "Matutino marcado",
|
||
"early": "Matutino",
|
||
"intermediate": "Intermedio",
|
||
"late": "Vespertino",
|
||
"extreme_late": "Vespertino marcado"
|
||
},
|
||
"midpointHeadline": "El punto medio natural de tu sueño ronda las {clock}."
|
||
},
|
||
"rhythm": {
|
||
"loadError": "Tu ritmo de sueño no pudo cargarse ahora mismo. Reaparecerá en cuanto se estabilice la conexión."
|
||
}
|
||
},
|
||
"medicationCompliance": "Cumplimiento de medicación",
|
||
"dayStreak": "{count} días de racha",
|
||
"dayStreakOne": "{count} día de racha",
|
||
"compliance7d": "Cumplimiento 7 días",
|
||
"compliance30d": "Cumplimiento 30 días",
|
||
"taken": "Tomada",
|
||
"skipped": "Omitida",
|
||
"missed": "Perdida",
|
||
"assessmentTitle": "Valoración",
|
||
"restMode": {
|
||
"title": "Modo descanso",
|
||
"body": "Hay un episodio de enfermedad o afección activo, por lo que esto refleja un periodo de recuperación. Tu puntuación no baja por ello.",
|
||
"bodySince": "Hay un episodio de enfermedad o afección activo desde el {since}, por lo que esto refleja un periodo de recuperación. Tu puntuación no baja por ello."
|
||
},
|
||
"bloodPressureSectionTitle": "Presión arterial",
|
||
"weightSectionTitle": "Peso",
|
||
"pulseSectionTitle": "Pulso",
|
||
"bmiSectionTitle": "IMC",
|
||
"complianceNoData": "Sin datos de cumplimiento disponibles",
|
||
"generate": "Generar análisis nuevo",
|
||
"moodSectionTitle": "Estado de ánimo",
|
||
"emptyState": {
|
||
"bloodPressure": {
|
||
"title": "Aún no hay registros de presión arterial",
|
||
"description": "Registra una medición de presión y aquí aparecerán la tendencia, el porcentaje en rango y la clasificación de la OMS.",
|
||
"cta": "Registrar presión"
|
||
},
|
||
"weight": {
|
||
"title": "Aún no hay registros de peso",
|
||
"description": "Registra un peso y aparecerán automáticamente la tendencia, la media móvil y la zona objetivo.",
|
||
"cta": "Registrar peso"
|
||
},
|
||
"pulse": {
|
||
"title": "Aún no hay registros de pulso",
|
||
"description": "Registra un pulso y aquí aparecerán pulso en reposo, VFC y VO₂ máx.",
|
||
"cta": "Registrar pulso"
|
||
},
|
||
"bmi": {
|
||
"title": "IMC aún no calculado",
|
||
"description": "Cuando haya altura y al menos un registro de peso, aquí aparecerá la tendencia del IMC con las zonas de la OMS.",
|
||
"cta": "Registrar peso"
|
||
},
|
||
"mood": {
|
||
"title": "Aún no hay entradas de estado de ánimo",
|
||
"description": "Registra un estado de ánimo y aparecerán la tendencia, la banda de estabilidad y las correlaciones.",
|
||
"cta": "Registrar ánimo"
|
||
},
|
||
"medication": {
|
||
"title": "Aún no hay medicamentos configurados",
|
||
"description": "Configura un medicamento y aquí aparecerán la adherencia, el nivel plasmático y la titulación.",
|
||
"cta": "Añadir medicamento"
|
||
},
|
||
"sleep": {
|
||
"title": "Aún no hay registros de sueño",
|
||
"description": "Una vez disponibles los datos de sueño (manual o vía Withings / Apple Health), aquí aparecerá el desglose por fases.",
|
||
"cta": "Conectar una fuente"
|
||
}
|
||
},
|
||
"navWorkouts": "Entrenamientos",
|
||
"navRecovery": "Recuperación",
|
||
"workouts": {
|
||
"title": "Entrenamientos",
|
||
"description": "Carreras, salidas en bici, paseos y sesiones de fuerza recientes, deduplicados entre Apple Watch y Withings.",
|
||
"emptyState": {
|
||
"title": "Aún no hay entrenamientos",
|
||
"description": "Los entrenamientos llegan desde Apple Salud en el iPhone y desde Withings. También puedes registrar uno a mano."
|
||
},
|
||
"detail": {
|
||
"backToList": "Volver a entrenamientos",
|
||
"statsTitle": "Estadísticas",
|
||
"statsDuration": "Duración",
|
||
"statsDistance": "Distancia",
|
||
"statsActiveEnergy": "Energía activa",
|
||
"statsAvgHr": "FC media",
|
||
"statsMaxHr": "FC máx.",
|
||
"statsMinHr": "FC mín.",
|
||
"statsStepCount": "Pasos",
|
||
"statsElevation": "Desnivel",
|
||
"statsPace": "Ritmo",
|
||
"routeTitle": "Ruta",
|
||
"hrChartTitle": "Frecuencia cardíaca",
|
||
"notFound": "Entrenamiento no encontrado.",
|
||
"hrFromPulse": "A partir de tus datos de frecuencia cardíaca en torno a esta sesión",
|
||
"hrAxisMinutes": "min",
|
||
"hrAvgMarker": "Media {bpm}",
|
||
"hrMaxMarker": "Máx. {bpm}",
|
||
"hrRangeValue": "{low} a {high} bpm",
|
||
"hrRangeLabel": "Rango",
|
||
"hrNoProfile": "No hay valores de pulso individuales que cubran esta sesión.",
|
||
"sportAverageLabel": "Tu promedio reciente:",
|
||
"zonesTitle": "Zonas de esfuerzo",
|
||
"zonesCaption": "Cómo se distribuyó tu esfuerzo entre las zonas de frecuencia cardíaca.",
|
||
"zonesCaptionDevice": "Tiempo por zona según tu dispositivo.",
|
||
"exportGpx": "Exportar GPX",
|
||
"elevationTitle": "Altitud",
|
||
"splitsTitle": "Parciales",
|
||
"splitsKm": "km",
|
||
"splitsTime": "Tiempo",
|
||
"splitsPace": "Ritmo",
|
||
"thatDayTitle": "Ese día",
|
||
"daySleepTitle": "La noche anterior",
|
||
"daySleepNone": "No hay sueño registrado esa noche",
|
||
"daySleepAwakeningsOne": "{count} despertar",
|
||
"daySleepAwakeningsMany": "{count} despertares",
|
||
"dayMoodTitle": "Ánimo ese día",
|
||
"dayMoodNone": "No hay ánimo registrado ese día",
|
||
"sleepTrendsLink": "Tendencias de sueño",
|
||
"moodHistoryLink": "Historial de ánimo",
|
||
"previousSessionLink": "Sesión anterior",
|
||
"insightTitle": "Análisis de la actividad"
|
||
},
|
||
"sport": {
|
||
"walking": "Caminar",
|
||
"running": "Correr",
|
||
"cycling": "Bici",
|
||
"hiking": "Senderismo",
|
||
"swimming": "Natación",
|
||
"rowing": "Remo",
|
||
"elliptical": "Elíptica",
|
||
"stairClimber": "Escalera",
|
||
"yoga": "Yoga",
|
||
"mindAndBody": "Mente y cuerpo",
|
||
"strength": "Fuerza",
|
||
"hiit": "HIIT",
|
||
"dance": "Baile",
|
||
"golf": "Golf",
|
||
"badminton": "Bádminton",
|
||
"tennis": "Tenis",
|
||
"basketball": "Baloncesto",
|
||
"soccer": "Fútbol",
|
||
"crossTraining": "Entreno cruzado",
|
||
"mixedCardio": "Cardio mixto",
|
||
"other": "Otro"
|
||
},
|
||
"loadError": "No se pudieron cargar tus entrenamientos",
|
||
"loadMore": "Cargar más entrenamientos",
|
||
"loadingMore": "Cargando más entrenamientos",
|
||
"loadMoreError": "No se pudieron cargar más entrenamientos",
|
||
"countOne": "{count} entrenamiento",
|
||
"countOther": "{count} entrenamientos",
|
||
"countFew": "{count} entrenamientos",
|
||
"filterLabel": "Filtrar por deporte",
|
||
"filterAll": "Todos los deportes",
|
||
"filterEmpty": "No hay sesiones de este deporte en tu historial.",
|
||
"manual": {
|
||
"logWorkout": "Registrar entrenamiento",
|
||
"sheetTitle": "Registrar entrenamiento",
|
||
"sheetDescription": "Introduce una sesión a mano: qué hiciste, cuándo y durante cuánto tiempo.",
|
||
"sportLabel": "Actividad",
|
||
"sportPlaceholder": "Elige una actividad",
|
||
"startLabel": "Inicio",
|
||
"startHint": "Déjalo vacío si acabas de terminar: se cuenta la duración hacia atrás desde ahora.",
|
||
"durationLabel": "Duración",
|
||
"distanceLabel": "Distancia ({unit})",
|
||
"energyLabel": "Energía activa (kcal)",
|
||
"alreadySaved": "Este entrenamiento ya está guardado",
|
||
"saveError": "No se pudo guardar el entrenamiento",
|
||
"deleteLabel": "Eliminar entrenamiento",
|
||
"deleteConfirmTitle": "¿Eliminar este entrenamiento?",
|
||
"deleteConfirmDescription": "Este entrenamiento que introdujiste a mano se eliminará de forma definitiva.",
|
||
"deleted": "Entrenamiento eliminado",
|
||
"deleteError": "No se pudo eliminar el entrenamiento",
|
||
"errors": {
|
||
"sportRequired": "Elige una actividad.",
|
||
"startRequired": "Introduce una fecha y una hora.",
|
||
"startInFuture": "El inicio no puede estar en el futuro.",
|
||
"durationRequired": "Indica cuánto duró el entrenamiento.",
|
||
"durationInvalid": "Introduce horas enteras y minutos de 0 a 59.",
|
||
"durationTooLong": "Un entrenamiento puede durar como máximo 24 horas.",
|
||
"endInFuture": "Terminaría en el futuro. Pon como inicio la hora en que empezó el entrenamiento.",
|
||
"distanceInvalid": "Introduce la distancia como un número dentro de un rango realista.",
|
||
"energyInvalid": "Introduce la energía activa como un número de hasta 20.000 kcal."
|
||
},
|
||
"editTitle": "Editar entrenamiento",
|
||
"editAction": "Editar",
|
||
"updated": "Entrenamiento actualizado"
|
||
},
|
||
"load": {
|
||
"title": "Carga de entrenamiento",
|
||
"fitness": "Forma de base",
|
||
"fatigue": "Fatiga",
|
||
"form": "Estado",
|
||
"explainer": "La forma de base es tu impulso de entrenamiento por frecuencia cardiaca promediado en unas seis semanas, la fatiga en una semana, y el estado es la diferencia. Las cifras se comparan con tu propio pasado, no con otras personas ni otras apps.",
|
||
"warmingUp": "Con {days} días hasta ahora: hasta cubrir seis semanas, la forma de base aparece más baja de lo que es.",
|
||
"coverage": "Se pudieron valorar {rated} de los últimos {days} días. Un día sin datos de actividad, o con un entrenamiento que no se pudo puntuar, se omite en lugar de contar como descanso.",
|
||
"asOf": "A fecha de {date}, el último día que se pudo valorar."
|
||
}
|
||
},
|
||
"bloodGlucose": {
|
||
"title": "Glucosa en sangre",
|
||
"description": "Tus lecturas de glucosa en el tiempo, en {unit}.",
|
||
"chartTitle": "Glucosa en sangre",
|
||
"medianLabel": "Glucosa mediana",
|
||
"emptyState": {
|
||
"title": "Aún no hay datos de glucosa",
|
||
"description": "Las lecturas de glucosa aparecen aquí cuando registras una o un dispositivo sincroniza."
|
||
},
|
||
"clinical": {
|
||
"title": "Resumen de glucosa",
|
||
"subtitle": "Una lectura de tus últimos {days} días, a partir de {count} mediciones.",
|
||
"spotCaveat": "Son estimaciones a partir de mediciones puntuales, no un perfil de un sensor continuo: léelas como una tendencia, no como un veredicto clínico.",
|
||
"labsLink": "¿Resultados de laboratorio? Registra una HbA1c o glucosa en ayunas de una analítica en Laboratorio.",
|
||
"learningTitle": "Aún conociendo tu glucosa",
|
||
"learningBody": "De momento son {count} en {days}. Con algo más de historial el panorama se aclara: sigue registrando o deja que lo complete un dispositivo conectado.",
|
||
"learningBodyEmpty": "En cuanto lleguen unas cuantas mediciones —registradas por ti o sincronizadas desde un dispositivo— tu tiempo en rango, promedio y variabilidad tomarán forma aquí.",
|
||
"readingsCount": "{count} mediciones",
|
||
"readingsCountOne": "1 medición",
|
||
"daysCount": "{days} días",
|
||
"daysCountOne": "1 día",
|
||
"tir": {
|
||
"title": "Tiempo en rango",
|
||
"caption": "Proporción de mediciones en cada banda ({low}–{high} {unit} es el objetivo).",
|
||
"veryLow": "Muy bajo",
|
||
"low": "Bajo",
|
||
"inRange": "En rango",
|
||
"high": "Alto",
|
||
"veryHigh": "Muy alto",
|
||
"ariaLabel": "Tiempo en rango: {tir}% en objetivo, {below}% por debajo, {above}% por encima.",
|
||
"empty": "Aún no hay mediciones para el gráfico."
|
||
},
|
||
"gmi": {
|
||
"label": "Indicador de gestión de la glucosa",
|
||
"help": "Una estimación tipo HbA1c derivada de tu glucosa promedio."
|
||
},
|
||
"eA1c": {
|
||
"label": "HbA1c estimada",
|
||
"help": "Una estimación de HbA1c a partir de tu glucosa media (ADAG)."
|
||
},
|
||
"mean": {
|
||
"label": "Glucosa promedio"
|
||
},
|
||
"cv": {
|
||
"label": "Variabilidad",
|
||
"steady": "Estable",
|
||
"unstable": "Inestable",
|
||
"help": "Coeficiente de variación. A partir del 36 % la glucosa se considera inestable; menos es más estable."
|
||
},
|
||
"advanced": {
|
||
"toggle": "Índices avanzados",
|
||
"intro": "Compuestos de nivel investigador para mirar más de cerca. Cada uno reduce tus mediciones a un único número ponderado por riesgo.",
|
||
"jIndex": {
|
||
"label": "Índice J",
|
||
"help": "Una puntuación única que combina tu promedio y su dispersión: cuanto más bajo, más ajustado el control."
|
||
},
|
||
"lbgi": {
|
||
"label": "Riesgo de hipoglucemia (LBGI)",
|
||
"help": "Índice de Kovatchev que pondera con qué frecuencia y profundidad bajan las lecturas."
|
||
},
|
||
"hbgi": {
|
||
"label": "Riesgo de hiperglucemia (HBGI)",
|
||
"help": "Índice de Kovatchev que pondera con qué frecuencia y altura suben las lecturas."
|
||
},
|
||
"byContext": {
|
||
"title": "Por contexto",
|
||
"fasting": "En ayunas",
|
||
"postprandial": "Después de comer",
|
||
"random": "Aleatorio",
|
||
"bedtime": "Antes de dormir",
|
||
"unspecified": "Sin indicar",
|
||
"readingsShort": "{count} mediciones",
|
||
"readingsShortOne": "1 medición"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"navBloodGlucose": "Glucosa",
|
||
"totalBodyWater": {
|
||
"title": "Agua corporal total",
|
||
"description": "Tu agua corporal total en el tiempo, en kilogramos.",
|
||
"chartTitle": "Agua corporal total",
|
||
"emptyState": {
|
||
"title": "Aún no hay datos de agua corporal",
|
||
"description": "Las lecturas de agua corporal aparecen aquí cuando una báscula de composición se sincroniza."
|
||
}
|
||
},
|
||
"navTotalBodyWater": "Agua corporal",
|
||
"boneMass": {
|
||
"title": "Masa ósea",
|
||
"description": "Tu masa ósea en el tiempo, en kilogramos.",
|
||
"chartTitle": "Masa ósea",
|
||
"emptyState": {
|
||
"title": "Aún no hay datos de masa ósea",
|
||
"description": "Las lecturas de masa ósea aparecen aquí cuando una báscula de composición se sincroniza."
|
||
}
|
||
},
|
||
"navBoneMass": "Masa ósea",
|
||
"flightsClimbed": {
|
||
"title": "Pisos subidos",
|
||
"description": "Tramos de escaleras que subiste cada día.",
|
||
"chartTitle": "Pisos subidos por día",
|
||
"emptyState": {
|
||
"title": "Aún no hay datos de pisos",
|
||
"description": "Los totales de pisos aparecen aquí cuando Apple Health sincroniza un día."
|
||
}
|
||
},
|
||
"navFlightsClimbed": "Pisos",
|
||
"walkingRunningDistance": {
|
||
"title": "Distancia a pie + corriendo",
|
||
"description": "Distancia caminando y corriendo cada día, en kilómetros.",
|
||
"chartTitle": "Distancia por día",
|
||
"emptyState": {
|
||
"title": "Aún no hay datos de distancia",
|
||
"description": "La distancia diaria aparece aquí cuando Apple Health sincroniza un día."
|
||
}
|
||
},
|
||
"navWalkingRunningDistance": "Distancia",
|
||
"fatFreeMass": {
|
||
"title": "Masa libre de grasa",
|
||
"description": "Tu masa libre de grasa en el tiempo, en kilogramos.",
|
||
"chartTitle": "Masa libre de grasa",
|
||
"emptyState": {
|
||
"title": "Aún no hay datos",
|
||
"description": "Las lecturas aparecen aquí cuando una báscula de composición se sincroniza."
|
||
}
|
||
},
|
||
"navFatFreeMass": "Masa magra",
|
||
"fatMass": {
|
||
"title": "Masa grasa",
|
||
"description": "Tu masa grasa en el tiempo, en kilogramos.",
|
||
"chartTitle": "Masa grasa",
|
||
"emptyState": {
|
||
"title": "Aún no hay datos de masa grasa",
|
||
"description": "Las lecturas aparecen aquí cuando una báscula de composición se sincroniza."
|
||
}
|
||
},
|
||
"bodyFat": {
|
||
"title": "Grasa corporal",
|
||
"description": "Tu porcentaje de grasa corporal en el tiempo.",
|
||
"chartTitle": "Grasa corporal",
|
||
"emptyState": {
|
||
"title": "Aún no hay datos de grasa corporal",
|
||
"description": "Las lecturas aparecen aquí cuando una báscula de composición se sincroniza o cuando registras una a mano.",
|
||
"cta": "Registrar grasa corporal"
|
||
}
|
||
},
|
||
"navFatMass": "Masa grasa",
|
||
"navBodyFat": "Grasa corporal",
|
||
"muscleMass": {
|
||
"title": "Masa muscular",
|
||
"description": "Tu masa muscular en el tiempo, en kilogramos.",
|
||
"chartTitle": "Masa muscular",
|
||
"emptyState": {
|
||
"title": "Aún no hay datos de masa muscular",
|
||
"description": "Las lecturas aparecen aquí cuando una báscula de composición se sincroniza."
|
||
}
|
||
},
|
||
"navMuscleMass": "Masa muscular",
|
||
"skinTemperature": {
|
||
"title": "Temperatura de la piel",
|
||
"description": "La temperatura de la piel de tu muñeca en el tiempo, en grados Celsius.",
|
||
"chartTitle": "Temperatura de la piel",
|
||
"emptyState": {
|
||
"title": "Aún no hay datos",
|
||
"description": "Las lecturas aparecen aquí cuando un wearable sincroniza la temperatura nocturna."
|
||
}
|
||
},
|
||
"navSkinTemperature": "Temp. piel",
|
||
"pulseWaveVelocity": {
|
||
"title": "Velocidad de onda de pulso",
|
||
"description": "Tu velocidad de onda de pulso arterial en el tiempo, en m/s. Valores más altos sugieren arterias más rígidas.",
|
||
"chartTitle": "Velocidad de onda de pulso",
|
||
"emptyState": {
|
||
"title": "Aún no hay datos",
|
||
"description": "Las lecturas aparecen aquí cuando un dispositivo Withings compatible se sincroniza."
|
||
}
|
||
},
|
||
"navPulseWaveVelocity": "Velocidad de onda de pulso",
|
||
"vascularAge": {
|
||
"title": "Edad vascular",
|
||
"description": "Tu edad vascular estimada en el tiempo, en años.",
|
||
"chartTitle": "Edad vascular",
|
||
"emptyState": {
|
||
"title": "Aún no hay datos",
|
||
"description": "Las estimaciones aparecen aquí cuando un dispositivo Withings compatible se sincroniza."
|
||
}
|
||
},
|
||
"navVascularAge": "Edad vascular",
|
||
"visceralFat": {
|
||
"title": "Grasa visceral",
|
||
"description": "Tu índice de grasa visceral en el tiempo.",
|
||
"chartTitle": "Grasa visceral",
|
||
"emptyState": {
|
||
"title": "Aún no hay datos",
|
||
"description": "Los índices aparecen aquí cuando una báscula de composición compatible se sincroniza."
|
||
}
|
||
},
|
||
"navVisceralFat": "Grasa visceral",
|
||
"audioExposureEnv": {
|
||
"title": "Ruido ambiental",
|
||
"description": "Tu exposición media diaria a sonido ambiental, en dBA.",
|
||
"chartTitle": "Exposición a sonido ambiental",
|
||
"emptyState": {
|
||
"title": "Aún no hay datos",
|
||
"description": "Las lecturas de nivel sonoro aparecen aquí cuando Apple Health sincroniza."
|
||
}
|
||
},
|
||
"navAudioExposureEnv": "Ruido ambiental",
|
||
"audioExposureHeadphone": {
|
||
"title": "Audio de auriculares",
|
||
"description": "Tu exposición media diaria con auriculares, en dBA.",
|
||
"chartTitle": "Exposición de auriculares",
|
||
"emptyState": {
|
||
"title": "Aún no hay datos",
|
||
"description": "Las lecturas aparecen aquí cuando Apple Health sincroniza."
|
||
}
|
||
},
|
||
"navAudioExposureHeadphone": "Audio auriculares",
|
||
"timeInDaylight": {
|
||
"title": "Tiempo con luz diurna",
|
||
"description": "Minutos al día con luz diurna.",
|
||
"chartTitle": "Luz diurna por día",
|
||
"emptyState": {
|
||
"title": "Aún no hay datos",
|
||
"description": "Los totales aparecen aquí cuando Apple Health sincroniza un día."
|
||
}
|
||
},
|
||
"navTimeInDaylight": "Luz diurna",
|
||
"walkingSteadiness": {
|
||
"title": "Estabilidad al andar",
|
||
"description": "Tu estabilidad al andar en el tiempo, en porcentaje.",
|
||
"chartTitle": "Estabilidad al andar",
|
||
"emptyState": {
|
||
"title": "Aún no hay datos",
|
||
"description": "Las lecturas aparecen aquí cuando Apple Health sincroniza."
|
||
}
|
||
},
|
||
"navWalkingSteadiness": "Estabilidad al andar",
|
||
"audioExposureEvent": {
|
||
"title": "Eventos de audio fuerte",
|
||
"description": "Días con un evento de exposición a ruido fuerte.",
|
||
"chartTitle": "Eventos de ruido por día",
|
||
"emptyState": {
|
||
"title": "Aún no hay datos",
|
||
"description": "Los eventos aparecen aquí cuando Apple Health sincroniza."
|
||
}
|
||
},
|
||
"navAudioExposureEvent": "Eventos de ruido",
|
||
"respiratoryRate": {
|
||
"title": "Frecuencia respiratoria",
|
||
"description": "Tu frecuencia respiratoria en el tiempo, en respiraciones por minuto.",
|
||
"chartTitle": "Frecuencia respiratoria",
|
||
"emptyState": {
|
||
"title": "Aún no hay datos",
|
||
"description": "Las lecturas aparecen aquí cuando Apple Health sincroniza la respiración del sueño o del entrenamiento."
|
||
}
|
||
},
|
||
"navRespiratoryRate": "Frecuencia respiratoria",
|
||
"leanBodyMass": {
|
||
"title": "Masa corporal magra",
|
||
"description": "Tu masa corporal magra en el tiempo, en kilogramos.",
|
||
"chartTitle": "Masa corporal magra",
|
||
"emptyState": {
|
||
"title": "Aún no hay datos",
|
||
"description": "Las lecturas aparecen aquí cuando una báscula de composición se sincroniza."
|
||
}
|
||
},
|
||
"navLeanBodyMass": "Masa corporal magra",
|
||
"walkingHeartRateAverage": {
|
||
"title": "Pulso al caminar",
|
||
"description": "Tu frecuencia cardíaca media al caminar, en lpm.",
|
||
"chartTitle": "Pulso medio al caminar",
|
||
"emptyState": {
|
||
"title": "Aún no hay datos",
|
||
"description": "Las lecturas aparecen aquí cuando Apple Health sincroniza."
|
||
}
|
||
},
|
||
"navWalkingHeartRateAverage": "Pulso al caminar",
|
||
"walkingAsymmetry": {
|
||
"title": "Asimetría al andar",
|
||
"description": "Tu asimetría al andar en el tiempo, en porcentaje.",
|
||
"chartTitle": "Asimetría al andar",
|
||
"emptyState": {
|
||
"title": "Aún no hay datos",
|
||
"description": "Las lecturas aparecen aquí cuando Apple Health sincroniza."
|
||
}
|
||
},
|
||
"navWalkingAsymmetry": "Asimetría al andar",
|
||
"walkingDoubleSupport": {
|
||
"title": "Tiempo de doble apoyo",
|
||
"description": "El porcentaje de cada zancada con ambos pies en el suelo.",
|
||
"chartTitle": "Tiempo de doble apoyo",
|
||
"emptyState": {
|
||
"title": "Aún no hay datos",
|
||
"description": "Las lecturas aparecen aquí cuando Apple Health sincroniza."
|
||
}
|
||
},
|
||
"navWalkingDoubleSupport": "Doble apoyo",
|
||
"walkingStepLength": {
|
||
"title": "Longitud de paso",
|
||
"description": "Tu longitud de paso media en el tiempo, en metros.",
|
||
"chartTitle": "Longitud de paso",
|
||
"emptyState": {
|
||
"title": "Aún no hay datos",
|
||
"description": "Las lecturas aparecen aquí cuando Apple Health sincroniza."
|
||
}
|
||
},
|
||
"navWalkingStepLength": "Longitud de paso",
|
||
"walkingSpeed": {
|
||
"title": "Velocidad al andar",
|
||
"description": "Tu velocidad media al andar en el tiempo, en km/h.",
|
||
"chartTitle": "Velocidad al andar",
|
||
"emptyState": {
|
||
"title": "Aún no hay datos",
|
||
"description": "Las lecturas aparecen aquí cuando Apple Health sincroniza."
|
||
}
|
||
},
|
||
"navWalkingSpeed": "Velocidad al andar",
|
||
"mood": {
|
||
"logLink": "Registrar un estado de ánimo",
|
||
"heatmapTitle": "Calendario de ánimo",
|
||
"heatmapNoEntry": "Sin registro",
|
||
"legendGreat": "Genial",
|
||
"legendGood": "Bien",
|
||
"legendOkay": "Regular",
|
||
"legendLow": "Bajo",
|
||
"distributionTitle": "Distribución del ánimo",
|
||
"distributionDaysUnit": "días",
|
||
"weekdayTitle": "Promedio por día de la semana",
|
||
"weekdayNoData": "Sin datos",
|
||
"weekdayBestWorst": "Mejor día: {best}, día más difícil: {worst}",
|
||
"tagsTitle": "Etiquetas y desencadenantes",
|
||
"tagAvgMood": "Ánimo promedio con esta etiqueta",
|
||
"correlationsTitle": "Ánimo y otras métricas",
|
||
"correlationsDescription": "Cómo se mueve tu ánimo con el sueño, la actividad y el pulso el mismo día.",
|
||
"correlation": {
|
||
"sleepTitle": "Ánimo vs. sueño",
|
||
"stepsTitle": "Ánimo vs. actividad",
|
||
"pulseTitle": "Ánimo vs. pulso",
|
||
"sleepAxis": "Sueño (min)",
|
||
"stepsAxis": "Pasos",
|
||
"pulseAxis": "Pulso (lpm)",
|
||
"strengthStrong": "Fuerte",
|
||
"strengthModerate": "Moderada",
|
||
"strengthWeak": "Débil",
|
||
"strengthNone": "Ninguna",
|
||
"source": "{n} días emparejados, r = {r}",
|
||
"emptyTitle": "Aún no hay suficientes datos emparejados",
|
||
"emptyDescription": "Registra el ánimo y esta métrica los mismos días para ver una correlación.",
|
||
"pendingDescription": "{n} de {needed} días emparejados. La correlación aparece cuando hay días suficientes para distinguir un patrón del azar.",
|
||
"noLinkTitle": "Sin relación clara",
|
||
"noLinkDescription": "{n} días emparejados, y nada destaca más allá de lo que produciría el azar.",
|
||
"weightTitle": "Ánimo vs. peso",
|
||
"bloodPressureTitle": "Ánimo vs. presión arterial",
|
||
"weightAxis": "Peso",
|
||
"bloodPressureAxis": "Sistólica (mmHg)",
|
||
"sourceLabel": "Cómo se calculó esto"
|
||
},
|
||
"structuredTagsTitle": "Desglose de etiquetas",
|
||
"inTargetValue": "{pct} %",
|
||
"inTargetCaption": "de los últimos días en tu rango de buen ánimo",
|
||
"narrative": {
|
||
"title": "Lo que destaca",
|
||
"weekdayDip": "Tu ánimo baja más el {weekday}: {delta} por debajo de tu semana.",
|
||
"weekdayPeak": "El {weekday} es siempre tu mejor día, con una media de {value}.",
|
||
"trendUp": "Tu ánimo va al alza en los últimos {days} días (+{delta} frente al periodo anterior).",
|
||
"trendDown": "Tu ánimo va a la baja en los últimos {days} días (-{delta} frente al periodo anterior).",
|
||
"weekendUp": "Te sientes mejor los fines de semana (+{delta} frente a entre semana).",
|
||
"weekendDown": "Tu ánimo es más bajo los fines de semana (-{delta} frente a entre semana).",
|
||
"tagLift": "Los días con la etiqueta «{tag}» promedian {delta} por encima de tu ánimo general.",
|
||
"tagDrop": "Los días con la etiqueta «{tag}» quedan {delta} por debajo de tu media.",
|
||
"inTarget": "Has estado en tu rango de buen ánimo el {pct} % de los últimos 30 días.",
|
||
"streak": "Has registrado tu ánimo {days} días seguidos: sigue así.",
|
||
"timeOfDay": "Te sientes mejor por la {bucket}, con una media de {value}."
|
||
},
|
||
"timeOfDay": {
|
||
"title": "Estado de ánimo por hora del día",
|
||
"morning": "Mañana",
|
||
"afternoon": "Tarde",
|
||
"evening": "Noche",
|
||
"night": "Madrugada",
|
||
"bestCaption": "Sueles sentirte mejor por la {bucket}."
|
||
},
|
||
"stability": {
|
||
"value": "{score}/100",
|
||
"bandVerySteady": "Tu estado de ánimo ha sido muy estable",
|
||
"bandSteady": "Tu estado de ánimo ha sido bastante estable",
|
||
"bandVariable": "Tu estado de ánimo ha sido notablemente variable",
|
||
"bandVeryVariable": "Tu estado de ánimo ha fluctuado mucho últimamente",
|
||
"title": "Estabilidad"
|
||
},
|
||
"influence": {
|
||
"title": "Influencia en el estado de ánimo",
|
||
"detail": "Promedio de {withAvg} en los {withDays} días que lo etiquetaste, frente a {withoutAvg} sin él.",
|
||
"confidenceLow": "Confianza baja",
|
||
"confidenceMedium": "Confianza media",
|
||
"confidenceHigh": "Confianza alta"
|
||
},
|
||
"betterDays": {
|
||
"title": "Qué acompaña a tus mejores días",
|
||
"description": "Etiquetas y métricas que coinciden con tus días de mejor y peor ánimo, ordenadas por la fuerza con que se mueven juntas."
|
||
},
|
||
"crosstab": {
|
||
"title": "Etiquetas y tus métricas de salud",
|
||
"description": "Cómo difiere una métrica de salud en los días que etiquetaste cada actividad, frente a los días que no.",
|
||
"pairLabel": "{metric} en días con {tag}",
|
||
"metricActiveEnergy": "Energía activa",
|
||
"metricSleepDuration": "Sueño",
|
||
"metricNextDayRecovery": "Recuperación al día siguiente",
|
||
"metricNextDayRestingHr": "Frecuencia cardíaca en reposo al día siguiente",
|
||
"metricNextDayHrv": "Variabilidad de la frecuencia cardíaca al día siguiente",
|
||
"detailSameDay": "Promedia {withAvg} en los {withDays} días que lo etiquetaste frente a {withoutAvg} sin él.",
|
||
"detailNextDay": "Promedia {withAvg} el día después de los {withDays} días que lo etiquetaste frente a {withoutAvg} el resto."
|
||
},
|
||
"factorCrosstab": {
|
||
"title": "Tus factores valorados y tus constantes",
|
||
"description": "Cómo difiere una constante en los días en que valoraste bajo cada factor frente a los días en que lo valoraste alto.",
|
||
"pairLabel": "{metric} en días con {factor}",
|
||
"metricSleepDuration": "Sueño",
|
||
"metricSteps": "Pasos",
|
||
"metricRestingHeartRate": "Frecuencia cardíaca en reposo",
|
||
"metricHrv": "Variabilidad de la frecuencia cardíaca",
|
||
"metricWeight": "Peso",
|
||
"metricBloodPressureSys": "Sistólica",
|
||
"detail": "Promedia {lowAvg} en los {lowDays} días que valoraste {factor} bajo frente a {highAvg} en los días que lo valoraste alto.",
|
||
"detailInverse": "Promedia {lowAvg} en tus {lowDays} peores días de {factor} frente a {highAvg} en los mejores."
|
||
},
|
||
"discovery": {
|
||
"title": "Lo que destaca",
|
||
"subheading": "Relaciones descubiertas",
|
||
"footer": "Extraídas de {tested} pares de un día a otro probados en todas tus métricas, tras la corrección de falsos descubrimientos.",
|
||
"disclaimer": "Filtrado estadísticamente, pero aún observacional: un patrón que vale la pena observar, no una causa.",
|
||
"moodUp": "Un mayor {factor} suele coincidir con mejor ánimo al día siguiente en tus datos.",
|
||
"moodDown": "Un mayor {factor} suele coincidir con peor ánimo al día siguiente en tus datos.",
|
||
"outcomeUp": "Mejor ánimo suele coincidir con un {factor} más alto al día siguiente en tus datos.",
|
||
"outcomeDown": "Mejor ánimo suele coincidir con un {factor} más bajo al día siguiente en tus datos.",
|
||
"stat": "{n} días emparejados, r = {r}, q = {q}",
|
||
"statLabel": "Cómo se calculó esto",
|
||
"explainerLabel": "Cómo se calculó esto",
|
||
"channel": {
|
||
"ALCOHOL": "consumo de alcohol",
|
||
"WORKOUT_MINUTES": "minutos de entrenamiento",
|
||
"TRAINING_LOAD": "carga de entrenamiento"
|
||
}
|
||
},
|
||
"inTargetTitle": "En tu rango",
|
||
"dimensions": {
|
||
"title": "Estado emocional",
|
||
"none": "Todavía no hay nada registrado sobre tu estado emocional.",
|
||
"window": "{days} días",
|
||
"noneInWindow": "nada en este periodo",
|
||
"higherIsMore": "más alto = {anchor}",
|
||
"notRecorded": "Sin registrar: {list}."
|
||
},
|
||
"contextComparison": {
|
||
"title": "Contexto del día y tu estado de ánimo",
|
||
"description": "Cómo se situó el valor de ánimo en los días registrados hasta ahora con esta entrada, frente al resto.",
|
||
"lower": "más bajo",
|
||
"higher": "más alto",
|
||
"statement": "En los días con «{label}» el ánimo promedió {direction}: {withAvg} frente a {withoutAvg}.",
|
||
"counts": "{withDays} días con, {withoutDays} días sin",
|
||
"caveat": "Esto muestra una relación, no una causa."
|
||
},
|
||
"prognosis": {
|
||
"title": "Tu autoevaluación",
|
||
"selfLabel": "Tu valoración",
|
||
"expectedLabel": "Esperado según tus propios patrones",
|
||
"band": "Rango de {low} a {high}",
|
||
"statement": "Según tus patrones hasta ahora, para {date} cabría esperar un valor en torno a {value}. Calculado a partir de {n} días comparables.",
|
||
"provisional": "Todavía provisional: el patrón se apoya en pocos días.",
|
||
"notToday": "Esto describe {date}, no hoy.",
|
||
"deviationWithin": "Tu propia valoración está dentro de ese rango.",
|
||
"deviationAbove": "Tu propia valoración está {amount} puntos por encima de ese rango.",
|
||
"deviationBelow": "Tu propia valoración está {amount} puntos por debajo de ese rango.",
|
||
"weightedTitle": "Lo que más pesó en la comparación de este día",
|
||
"weightedUp": "{label}: contó hacia un valor esperado más alto",
|
||
"weightedDown": "{label}: contó hacia un valor esperado más bajo",
|
||
"caveat": "Es una comparación con tus propios días anteriores, no una afirmación sobre cómo llegó a transcurrir un día.",
|
||
"learning": "Fase de aprendizaje: {entries} de {threshold} días registrados. La comparación aparece cuando haya suficientes.",
|
||
"noPattern": "En los {entries} días registrados hasta ahora no hay nada lo bastante constante para comparar un día. Cuando anotas también el contexto del día, se puede comparar una parte mayor.",
|
||
"featureValue": "{field}: {value}",
|
||
"loadError": "No se pudo cargar el valor esperado según tus propios patrones."
|
||
},
|
||
"patterns": {
|
||
"title": "Patrones en tu estado de ánimo",
|
||
"basedOn": "Basado en {subject} y {comparison} días. Un patrón, no una causa.",
|
||
"previousDayHigher": "Después de un día por debajo de lo habitual, el siguiente suele ser mejor ({subject} frente a {comparison} tras un día por encima).",
|
||
"previousDayLower": "Un día por debajo de lo habitual suele arrastrarse al siguiente ({subject} frente a {comparison} tras un día por encima).",
|
||
"weekendHigher": "Tu estado de ánimo suele ser mejor el fin de semana ({subject} frente a {comparison} entre semana).",
|
||
"weekendLower": "Tu estado de ánimo suele ser peor el fin de semana ({subject} frente a {comparison} entre semana).",
|
||
"bestWeekday": "{weekday} suele ser tu mejor día ({subject} frente a {comparison} el resto de días).",
|
||
"notesHigher": "Los días con una nota tu estado de ánimo suele ser mejor ({subject} frente a {comparison} sin nota).",
|
||
"notesLower": "Los días con una nota tu estado de ánimo suele ser peor ({subject} frente a {comparison} sin nota).",
|
||
"delayedTagHigher": "El día después de «{tag}», tu estado de ánimo suele ser mejor ({subject} frente a {comparison} en otros casos).",
|
||
"delayedTagLower": "El día después de «{tag}», tu estado de ánimo suele ser peor ({subject} frente a {comparison} en otros casos).",
|
||
"multipleEntriesHigher": "Los días que registras más de una vez, tu estado de ánimo suele ser mejor ({subject} frente a {comparison} con un solo registro).",
|
||
"multipleEntriesLower": "Los días que registras más de una vez, tu estado de ánimo suele ser peor ({subject} frente a {comparison} con un solo registro)."
|
||
}
|
||
},
|
||
"derived": {
|
||
"coverage": {
|
||
"summary": "{present} de {required} entradas ({percent}%)",
|
||
"ratioLabel": "{present}/{required}",
|
||
"historyDays": "Basado en {count} días de historial",
|
||
"missing": "Registra estos para afinar el valor: {list}",
|
||
"summaryLabelled": "{label} ({percent}%)"
|
||
},
|
||
"scoreRing": {
|
||
"aria": "Puntuación {score} de 100, {band}",
|
||
"ariaProvisional": "Puntuación aún no disponible: datos insuficientes",
|
||
"provisionalCaption": "Datos aún insuficientes",
|
||
"band": {
|
||
"green": "bueno",
|
||
"yellow": "medio",
|
||
"red": "bajo"
|
||
}
|
||
},
|
||
"provenance": {
|
||
"title": "Cómo se calcula esto",
|
||
"trigger": "Cómo se calcula esto",
|
||
"inputsLabel": "Entradas",
|
||
"noInputs": "Aún no hay entradas que respalden este valor.",
|
||
"methodLabel": "Método",
|
||
"window": "De tus últimos {days} días de datos de {source}",
|
||
"asOf": "a fecha de {date}",
|
||
"standardLink": "Estándar: {name}"
|
||
},
|
||
"vitals": {
|
||
"sectionTitle": "Tus constantes",
|
||
"sectionSubtitle": "Señales cardiovasculares y respiratorias en reposo frente a tu propia línea base",
|
||
"loadingLabel": "Cargando tus constantes",
|
||
"loadError": "No se pudieron cargar tus constantes en este momento.",
|
||
"infoLabel": "¿Cómo se calcula esto?",
|
||
"building": "Creando tu rango habitual: {count} de {target} días",
|
||
"typicalRange": "Habitual para ti: {low}–{high}",
|
||
"fitnessYounger": "Forma cardiovascular de alguien ~{years} años más joven",
|
||
"fitnessOlder": "Forma cardiovascular ~{years} años por encima de tu edad",
|
||
"fitnessTypical": "Forma cardiovascular típica para tu edad",
|
||
"fitnessNoNorm": "Añade tu edad y sexo para enmarcar esto",
|
||
"vascularBelow": "{years} años por debajo de tu edad",
|
||
"vascularAbove": "{years} años por encima de tu edad",
|
||
"vascularMatch": "Acorde con tu edad",
|
||
"vascularNoAge": "Añade tu fecha de nacimiento para enmarcar esto",
|
||
"hrvBand": {
|
||
"balanced": "Equilibrado para ti",
|
||
"unbalanced": "Por encima de tu rango habitual",
|
||
"low": "Por debajo de tu rango habitual"
|
||
},
|
||
"bmiCategory": {
|
||
"underweight": "Bajo peso (OMS)",
|
||
"normal": "Rango normal (OMS)",
|
||
"overweight": "Sobrepeso (OMS)",
|
||
"obese": "Obesidad (OMS)"
|
||
},
|
||
"sixMinuteBand": {
|
||
"green": "{percent}% de lo previsto para tu perfil",
|
||
"yellow": "{percent}% de lo previsto para tu perfil",
|
||
"red": "{percent}% de lo previsto para tu perfil"
|
||
},
|
||
"sixMinuteNoBand": "Añade tu edad, altura, peso y sexo para encuadrar esto",
|
||
"mobilitySectionTitle": "Movilidad y cuerpo"
|
||
},
|
||
"anatomy": {
|
||
"outOf": "/100",
|
||
"contributorsLabel": "Factores",
|
||
"contributorValue": "{value}, peso {weight}%",
|
||
"contributorMissing": "sin datos",
|
||
"insufficient": "Aún no hay datos suficientes para puntuarlo. Sigue registrando y aparecerá aquí."
|
||
},
|
||
"composite": {
|
||
"SLEEP_SCORE": {
|
||
"title": "Puntuación de sueño",
|
||
"description": "Una puntuación de calidad del sueño transparente con todos sus subvalores.",
|
||
"method": "Una mezcla de 0–100 de suficiencia (sueño frente a tu necesidad por edad), eficiencia (sueño ÷ tiempo en cama), consistencia (qué tan estable es tu punto medio de sueño), horario (frente a tu punto medio habitual) y composición (proporción de REM + sueño profundo). Los subvalores se reponderan en torno a los que tus datos no pueden sustentar; nada se inventa.",
|
||
"sub": {
|
||
"sufficiency": "Suficiencia",
|
||
"efficiency": "Eficiencia",
|
||
"consistency": "Consistencia",
|
||
"timing": "Horario",
|
||
"composition": "Composición"
|
||
},
|
||
"gap": {
|
||
"fewNights": "aún no hay suficientes noches ({count} de {needed})",
|
||
"noMainSleep": "el último día solo tuvo una siesta"
|
||
}
|
||
},
|
||
"READINESS": {
|
||
"title": "Disposición",
|
||
"description": "Un indicador diario de bienestar según cómo se sitúan tus señales frente a tu propia base.",
|
||
"method": "Una mezcla de 0–100 de desviación de la frecuencia cardíaca en reposo, desviación de la VFC (SDNN), calidad del sueño, estabilidad de la frecuencia respiratoria y estabilidad del estado de ánimo, cada una medida frente a tu base personal. Los pesos se renormalizan según los componentes que tus datos sustentan. Un indicador de bienestar, no una puntuación de recuperación ni clínica.",
|
||
"component": {
|
||
"rhr": "Frecuencia cardíaca en reposo",
|
||
"hrv": "VFC (SDNN)",
|
||
"sleep": "Sueño",
|
||
"respiratory": "Frecuencia respiratoria",
|
||
"mood": "Estabilidad del ánimo"
|
||
}
|
||
},
|
||
"VITALS_BASELINE": {
|
||
"method": "Tu rango típico personal es la mediana de tus valores diarios en el periodo, ± una dispersión robusta (desviación absoluta mediana, escalada). Sigue TUS lecturas, no una norma poblacional, así que un valor dentro de la banda es típico para ti."
|
||
},
|
||
"HRV_BALANCE": {
|
||
"method": "Tu media reciente de VFC (SDNN) frente a tu propia línea base móvil (mediana ± dispersión robusta). Equilibrada significa que está dentro de tu rango personal; la banda se construye con tus datos, nunca con un umbral poblacional."
|
||
},
|
||
"BMI": {
|
||
"method": "Peso ÷ altura², clasificado según las categorías de la OMS para adultos (bajo peso / normal / sobrepeso / obesidad). Solo es una proporción de cribado: no distingue músculo de grasa."
|
||
},
|
||
"FITNESS_AGE": {
|
||
"method": "Tu VO₂máx situado frente a percentiles de forma cardiorrespiratoria por edad y sexo, expresado como una diferencia de edad de forma física. El VO₂máx es la estimación de tu dispositivo, nunca se recalcula aquí."
|
||
},
|
||
"VASCULAR_AGE_DELTA": {
|
||
"method": "La estimación de edad vascular / velocidad de onda de pulso de tu dispositivo comparada con tu edad cronológica, expresada como una diferencia en años. La estimación es del dispositivo; HealthLog solo la reinterpreta.",
|
||
"caveat": "La propia estimación de tu dispositivo, solo reinterpretada: descriptiva, no una evaluación vascular clínica.",
|
||
"description": "Cómo se sitúa la estimación de edad vascular de tu dispositivo frente a tu edad cronológica."
|
||
},
|
||
"COINCIDENT_DEVIATION": {
|
||
"method": "Un aviso que aparece cuando dos o más de tus constantes quedan fuera de su rango típico personal el mismo día. Cada banda es la mediana robusta ± k·MAD de tu propio historial, así que se adapta a ti y no a un umbral poblacional.",
|
||
"caveat": "Un aviso a partir de tus propias líneas base: descriptivo, no un diagnóstico ni una alerta clínica."
|
||
},
|
||
"RECOVERY_SCORE": {
|
||
"method": "Un indicador nocturno de recuperación de 0 a 100 que combina tu VFC, frecuencia cardíaca en reposo y sueño frente a tu línea base. Más alto significa mejor recuperado. Se calcula una vez por noche y aquí solo se lee, nunca se recalcula al vuelo.",
|
||
"description": "Un indicador nocturno de recuperación a partir de tu VFC, frecuencia en reposo y sueño."
|
||
},
|
||
"STRESS_SCORE": {
|
||
"method": "Un indicador nocturno de estrés de 0 a 100 a partir de la forma de tu VFC a lo largo del día frente a tu línea base. Más alto significa más carga fisiológica.",
|
||
"description": "Un indicador nocturno de estrés a partir de la forma de tu VFC durante el día."
|
||
},
|
||
"STRAIN_SCORE": {
|
||
"method": "Un indicador nocturno de esfuerzo de 0 a 100 a partir de tu carga de actividad ponderada por frecuencia cardíaca (un modelo de impulso de entrenamiento tipo TRIMP). Más alto significa un día más exigente.",
|
||
"anchorPersonal": "Anclado a tu propia carga reciente de días de entrenamiento: se evalúa en relación con tu esfuerzo habitual, de modo que un día realmente duro para ti aparece alto.",
|
||
"anchorPopulation": "Se evalúa frente a una referencia general mientras acumulas historial de entrenamiento; cuando tengas suficiente, pasa a tu propio esfuerzo habitual.",
|
||
"description": "Un indicador nocturno de carga de actividad a partir de tu esfuerzo ponderado por frecuencia cardíaca, relativo a tu esfuerzo habitual.",
|
||
"deviceCaption": "Esfuerzo diario de tu dispositivo: {value} de {max}",
|
||
"deviceSource": "Hasta que HealthLog calcule su propio valor durante la noche, la tarjeta muestra el esfuerzo diario de tu dispositivo, convertido a 0–100."
|
||
},
|
||
"WRIST_TEMPERATURE_BASELINE": {
|
||
"method": "Tu temperatura típica de muñeca durante la noche es la mediana de tus lecturas nocturnas en el periodo, ± una dispersión robusta (desviación absoluta de la mediana, escalada). Sigue TUS lecturas: la noche pasada se muestra como una desviación respecto a tu propia base, no a una norma poblacional.",
|
||
"caveat": "Solo una banda de desviación personal: descriptiva, no una señal de enfermedad, fiebre ni fase del ciclo. Tú la interpretas."
|
||
},
|
||
"STAIR_ASCENT_SPEED_BASELINE": {
|
||
"method": "Tu ritmo típico al subir escaleras es la mediana de tus valores diarios en el periodo, ± una dispersión robusta (desviación absoluta de la mediana, escalada). La banda se construye con tus datos: no hay un umbral poblacional de velocidad en escaleras, porque el ritmo depende de la geometría de la escalera y la longitud de las piernas.",
|
||
"caveat": "Una banda personal de tendencia de movilidad: descriptiva, no una evaluación de fragilidad ni de riesgo de caídas."
|
||
},
|
||
"STAIR_DESCENT_SPEED_BASELINE": {
|
||
"method": "Tu ritmo típico al bajar escaleras es la mediana de tus valores diarios en el periodo, ± una dispersión robusta (desviación absoluta de la mediana, escalada). La banda se construye con tus datos: no hay un umbral poblacional de velocidad en escaleras, porque el ritmo depende de la geometría de la escalera y la longitud de las piernas.",
|
||
"caveat": "Una banda personal de tendencia de movilidad: descriptiva, no una evaluación de fragilidad ni de riesgo de caídas."
|
||
},
|
||
"SIX_MINUTE_WALK_BAND": {
|
||
"method": "La distancia ESTIMADA de marcha de seis minutos de tu dispositivo situada frente a la referencia de Enright y Sherrill para tu edad, estatura, peso y sexo, como porcentaje de lo previsto. La distancia es la estimación del dispositivo: nunca se recalcula aquí. Sin tu edad, estatura, peso y sexo se oculta el porcentaje y solo se muestran la distancia y la tendencia.",
|
||
"caveat": "Una estimación reformulada frente a una referencia publicada: una señal de capacidad funcional, no una prueba clínica de marcha de seis minutos ni un diagnóstico. La referencia se estableció para edades de 40 a 80 años; fuera de ese rango el valor previsto es una extrapolación."
|
||
},
|
||
"TRAJECTORY": {
|
||
"method": "Una recta de mínimos cuadrados ajustada a tus valores diarios recientes y proyectada hacia delante en un horizonte corto, con el intervalo de predicción clásico que se ensancha cuanto más lejos llega. Solo se calcula cuando la tendencia reciente es lo bastante marcada y tu historial es lo bastante largo y actual; de lo contrario no se traza ninguna línea.",
|
||
"caveat": "Una proyección de tu propia tendencia reciente, no una predicción, un objetivo ni un pronóstico clínico. Solo se cumple si el patrón reciente continúa; la banda sombreada muestra con qué rapidez se desvanece esa certeza."
|
||
},
|
||
"SAME_TIME_BASELINE": {
|
||
"method": "Tu total acumulado de hoy frente a la mediana de esa misma hora local durante tus últimas cuatro semanas, con una banda robusta de mediana ± MAD alrededor. Solo cuentan los días con suficiente detalle registrado, y no se muestra ninguna comparación hasta tener al menos catorce.",
|
||
"caveat": "Una comparación con tu propio historial reciente, no un objetivo. Indica dónde se sitúa hoy frente a tu patrón habitual a esta hora, y nada sobre si ese patrón es el adecuado para ti."
|
||
}
|
||
},
|
||
"scores": {
|
||
"sectionTitle": "Tus indicadores de salud",
|
||
"sectionSubtitle": "Valores combinados de recuperación, estrés y esfuerzo leídos de tus dispositivos conectados",
|
||
"loadError": "No se pudieron cargar tus puntuaciones de bienestar en este momento.",
|
||
"loadingLabel": "Cargando tus indicadores de salud",
|
||
"recovery": "Puntuación de recuperación",
|
||
"recoveryCrossLink": "Ver los datos de recuperación y esfuerzo de tu wearable",
|
||
"stress": "Estrés",
|
||
"strain": "Esfuerzo",
|
||
"historyTitle": "Evolución",
|
||
"historyWindow": "Últimos {days} días"
|
||
},
|
||
"coincident": {
|
||
"label": "Varias constantes fuera de la base",
|
||
"summary": "Hoy, {count} de tus constantes quedaron fuera de su rango personal.",
|
||
"vitals": "Fuera de rango: {list}",
|
||
"cardTitle": "Señales del día",
|
||
"allClear": "Hoy todas tus constantes están dentro de su rango personal.",
|
||
"allClearMeta": "Se revisaron {count} de tus constantes frente a tu propio rango habitual.",
|
||
"watch": "Hoy una constante está fuera de su rango habitual.",
|
||
"watchVital": "Fuera de rango: {vital}. A menudo es algo puntual; conviene vigilarlo los próximos días.",
|
||
"firedHeadline": "Hoy, {count} de tus constantes están fuera de su rango personal.",
|
||
"factors": "Posibles factores, nunca una causa: un entrenamiento intenso, dormir mal, alcohol, altitud, estrés o una enfermedad. Es un aviso a partir de tus propias bases, no un diagnóstico.",
|
||
"building": "Construyendo tus bases personales: registra unos días más y esto aparecerá.",
|
||
"illnessExplained": "Es probable que estas variaciones reflejen la afección que registraste."
|
||
},
|
||
"trajectory": {
|
||
"cardTitle": "Proyección a corto plazo",
|
||
"headline": "Si este patrón continúa: los próximos {days} días",
|
||
"range": "Proyectado en torno a {low}–{high} {unit} en {days} días.",
|
||
"caveat": "Una proyección de tu propia tendencia reciente, no una predicción. La banda sombreada se ensancha para mostrar la rapidez con que crece la incertidumbre.",
|
||
"insufficient": "Aún no hay una tendencia lo bastante clara para proyectar: sigue registrando y aparecerá una proyección cuando el patrón reciente sea lo bastante marcado.",
|
||
"daysNeeded": "Faltan unos {count} días más de registro para que pueda aparecer una proyección."
|
||
},
|
||
"sameTime": {
|
||
"sectionTitle": "Hoy hasta ahora",
|
||
"sectionSubtitle": "Tus totales acumulados frente a lo que es habitual en ti a esta hora",
|
||
"learning": "Aprendiendo tu día habitual: {count} de {target} días",
|
||
"framing": "Habitual a las {time}: {typical} {unit}",
|
||
"comparisonLabel": "Tu día habitual"
|
||
}
|
||
},
|
||
"cardioFitness": {
|
||
"title": "Condición física",
|
||
"description": "Tu VO₂ máx a lo largo del tiempo, la medida principal de la forma aeróbica.",
|
||
"chartTitle": "VO₂ máx (mL/(kg·min))",
|
||
"emptyState": {
|
||
"title": "Aún no hay datos de condición física",
|
||
"description": "Los valores de VO₂ máx aparecen aquí cuando Apple Health los sincroniza desde tus entrenamientos."
|
||
}
|
||
},
|
||
"navCardioFitness": "Condición física",
|
||
"cardioRecovery": {
|
||
"title": "Recuperación cardiaca",
|
||
"description": "Cuánto baja tu frecuencia cardiaca un minuto después del esfuerzo máximo.",
|
||
"chartTitle": "Recuperación cardiaca (lpm)",
|
||
"emptyState": {
|
||
"title": "Aún no hay datos de recuperación cardiaca",
|
||
"description": "Los valores de recuperación cardiaca aparecen aquí cuando Apple Health los sincroniza desde un entrenamiento."
|
||
}
|
||
},
|
||
"navCardioRecovery": "Recuperación cardiaca",
|
||
"wristTemperature": {
|
||
"title": "Temperatura de muñeca",
|
||
"description": "Tu temperatura de muñeca durante la noche, comparada con tu valor de referencia.",
|
||
"chartTitle": "Temperatura de muñeca",
|
||
"emptyState": {
|
||
"title": "Aún no hay datos de temperatura de muñeca",
|
||
"description": "Los valores aparecen aquí cuando Apple Health sincroniza el uso nocturno."
|
||
}
|
||
},
|
||
"navWristTemperature": "Temp. muñeca",
|
||
"falls": {
|
||
"title": "Caídas",
|
||
"description": "Caídas fuertes que detectó tu Apple Watch, contadas por día.",
|
||
"chartTitle": "Caídas por día",
|
||
"emptyState": {
|
||
"title": "Aún no hay datos de caídas",
|
||
"description": "Las caídas detectadas aparecen aquí cuando Apple Health se sincroniza. Cero caídas es el objetivo."
|
||
}
|
||
},
|
||
"navFalls": "Caídas",
|
||
"sixMinuteWalk": {
|
||
"title": "Marcha de 6 minutos",
|
||
"description": "La estimación de Apple de cuánto podrías caminar en seis minutos.",
|
||
"chartTitle": "Distancia en 6 minutos (m)",
|
||
"emptyState": {
|
||
"title": "Aún no hay datos de marcha de 6 minutos",
|
||
"description": "Las estimaciones aparecen aquí cuando Apple Health se sincroniza."
|
||
}
|
||
},
|
||
"navSixMinuteWalk": "Marcha 6 min",
|
||
"stairAscentSpeed": {
|
||
"title": "Velocidad subiendo escaleras",
|
||
"description": "Lo rápido que subes escaleras, medido por tu iPhone o Watch.",
|
||
"chartTitle": "Velocidad de subida (m/s)",
|
||
"emptyState": {
|
||
"title": "Aún no hay datos de subida de escaleras",
|
||
"description": "Los valores aparecen aquí cuando Apple Health se sincroniza."
|
||
}
|
||
},
|
||
"navStairAscentSpeed": "Subir escaleras",
|
||
"stairDescentSpeed": {
|
||
"title": "Velocidad bajando escaleras",
|
||
"description": "Lo rápido que bajas escaleras, medido por tu iPhone o Watch.",
|
||
"chartTitle": "Velocidad de bajada (m/s)",
|
||
"emptyState": {
|
||
"title": "Aún no hay datos de bajada de escaleras",
|
||
"description": "Los valores aparecen aquí cuando Apple Health se sincroniza."
|
||
}
|
||
},
|
||
"navStairDescentSpeed": "Bajar escaleras",
|
||
"breathingDisturbances": {
|
||
"title": "Alteraciones respiratorias",
|
||
"description": "Con qué frecuencia se alteró tu respiración durante el sueño.",
|
||
"chartTitle": "Alteraciones respiratorias del sueño",
|
||
"emptyState": {
|
||
"title": "Aún no hay datos de alteraciones respiratorias",
|
||
"description": "Los valores aparecen aquí cuando Apple Health los sincroniza desde un Apple Watch compatible."
|
||
}
|
||
},
|
||
"navBreathingDisturbances": "Respiración",
|
||
"rhythmEvents": {
|
||
"sectionTitle": "Notificaciones de salud del dispositivo",
|
||
"sectionIntro": "Notificaciones que tu reloj envió por su cuenta. HealthLog solo las muestra; no las detecta, confirma ni interpreta.",
|
||
"loadError": "No se pudieron cargar las notificaciones de tu dispositivo.",
|
||
"disclaimer": "Estas son alertas que tu dispositivo generó con su propia detección integrada. Se muestran aquí solo para tu información. No es una evaluación médica de HealthLog, y HealthLog no diagnostica ninguna afección. Si una notificación te preocupa, habla con tu médico.",
|
||
"event": {
|
||
"irregularRhythm": "Notificación de ritmo irregular",
|
||
"highHeartRate": "Notificación de frecuencia cardíaca alta",
|
||
"lowHeartRate": "Notificación de frecuencia cardíaca baja",
|
||
"walkingSteadiness": "Alerta de estabilidad al caminar",
|
||
"breathingDisturbance": "Alteración respiratoria durante el sueño"
|
||
},
|
||
"verdict": {
|
||
"irregular": "Tu dispositivo detectó un posible ritmo irregular.",
|
||
"notDetected": "Tu dispositivo no detectó un ritmo irregular.",
|
||
"inconclusive": "Tu dispositivo no pudo realizar una medición.",
|
||
"low": "Tu dispositivo detectó una estabilidad al caminar baja.",
|
||
"veryLow": "Tu dispositivo detectó una estabilidad al caminar muy baja.",
|
||
"fired": "Tu dispositivo señaló este evento."
|
||
}
|
||
},
|
||
"trendDescriptor": {
|
||
"rising": "Al alza en 30 días ({delta}{unit}).",
|
||
"falling": "A la baja en 30 días ({delta}{unit}).",
|
||
"stable": "Estable en los últimos 30 días.",
|
||
"moodImproved": "El estado de ánimo mejoró ligeramente en 30 días.",
|
||
"moodDeclined": "El estado de ánimo bajó ligeramente en 30 días.",
|
||
"moodStable": "El estado de ánimo se mantuvo estable en los últimos 30 días."
|
||
},
|
||
"target": {
|
||
"heading": "Objetivo"
|
||
},
|
||
"settings": {
|
||
"overviewTitle": "Organizar la vista general",
|
||
"overviewDescription": "Muestra u oculta secciones y define su orden en la vista general de Análisis."
|
||
},
|
||
"pillOrder": {
|
||
"title": "Ordenar las pestañas de navegación",
|
||
"description": "Arrastra las pestañas al orden que quieras y muéstralas u ocúltalas con el icono del ojo.",
|
||
"dragHandle": "Reordenar",
|
||
"saveSuccess": "Orden de las pestañas guardado",
|
||
"saveError": "No se pudo guardar el orden de las pestañas.",
|
||
"save": "Guardar",
|
||
"empty": "Aún no hay pestañas de navegación disponibles.",
|
||
"detail": "Las páginas de detalle ocultas también se quitan de la navegación superior."
|
||
},
|
||
"customize": "Personalizar Análisis",
|
||
"regenerateRateLimited": "Límite de actualizaciones alcanzado: inténtalo de nuevo más tarde.",
|
||
"regenerateUnavailable": "No llegó un análisis nuevo: inténtalo de nuevo más tarde.",
|
||
"regenerateError": "Aún se está actualizando: inténtalo de nuevo en un momento.",
|
||
"regenerateSettling": "La valoración todavía se está preparando",
|
||
"regenerateSettleFailed": "No se pudo completar la actualización. Inténtalo de nuevo más tarde.",
|
||
"deviceScore": {
|
||
"learning": "Aún estamos aprendiendo tu línea base: unas noches más completarán la tendencia.",
|
||
"average": "Media de 30 días {value}",
|
||
"unitScore": "puntos",
|
||
"unitMinutes": "min",
|
||
"unitBpm": "ppm",
|
||
"unitKj": "kJ"
|
||
},
|
||
"sleepQuality": {
|
||
"title": "Calidad del sueño",
|
||
"subtitle": "Puntuaciones nocturnas de tu wearable"
|
||
},
|
||
"recovery": {
|
||
"title": "Recuperación",
|
||
"description": "Cómo se ha recuperado tu cuerpo: las señales de recuperación, esfuerzo y carga que tu wearable registra durante la noche.",
|
||
"scoreCrossLink": "Ver la puntuación de recuperación combinada",
|
||
"emptyTitle": "Aún no hay datos de recuperación",
|
||
"empty": "Esta página se llena con los valores de recuperación, esfuerzo y carga de WHOOP o Polar y con el nivel de resiliencia de Oura.",
|
||
"emptyOuraPermission": "El nivel de resiliencia de Oura necesita el permiso de datos de estrés, así que vuelve a conectar Oura una vez en Integraciones y permítelo.",
|
||
"emptyOuraNoResilience": "Oura está conectado y su nivel de resiliencia aparecerá aquí en cuanto Oura proporcione uno.",
|
||
"emptyAction": "Abrir integraciones",
|
||
"block": {
|
||
"ansChargeExplainer": "Cuán cargado está tu sistema nervioso autónomo para el día: una lectura de recarga obtenida de tus señales nocturnas de corazón y respiración.",
|
||
"dayStrainExplainer": "La carga cardiovascular del día en la escala de esfuerzo de tu dispositivo. Léela en relación con tu recuperación, no como una meta en sí.",
|
||
"workoutStrainExplainer": "Cuán exigente fue un entrenamiento en la misma escala de esfuerzo: el coste cardiovascular de esa sesión.",
|
||
"cardioLoadExplainer": "Una aproximación de la carga de entrenamiento que sigue la carga cardiovascular acumulada. Compárala con tus propios días recientes.",
|
||
"averageHeartRateExplainer": "Tu frecuencia cardíaca media a lo largo de todo el día o ciclo, según informa tu wearable.",
|
||
"maxHeartRateExplainer": "Tu frecuencia cardíaca máxima a lo largo de todo el día o ciclo, según informa tu wearable.",
|
||
"energyExpenditureKjExplainer": "La energía que tu cuerpo gastó durante el día, en kilojulios, tal como tu dispositivo la informa de forma nativa."
|
||
},
|
||
"loadError": "No se pudieron cargar tus valores de recuperación."
|
||
},
|
||
"bodyTempDeviation": {
|
||
"title": "Desviación de la temperatura corporal",
|
||
"subtitle": "Variación nocturna respecto a tu línea base"
|
||
},
|
||
"resilience": {
|
||
"explainer": "Cómo equilibra tu cuerpo la carga diaria con la recuperación, leído a partir de tus señales nocturnas de los últimos días.",
|
||
"learning": "Aún estamos aprendiendo tu resiliencia. Unos días más asentarán el nivel.",
|
||
"band": {
|
||
"limited": "Limitada",
|
||
"adequate": "Adecuada",
|
||
"solid": "Sólida",
|
||
"strong": "Fuerte",
|
||
"exceptional": "Excepcional"
|
||
},
|
||
"trend": {
|
||
"above": "Por encima de tu media reciente.",
|
||
"steady": "En línea con tu media reciente.",
|
||
"below": "Por debajo de tu media reciente."
|
||
}
|
||
},
|
||
"briefing": {
|
||
"memory": {
|
||
"forwardWatch": "Conviene vigilar {metric}.",
|
||
"forwardHolding": "Por ahora todo se mantiene estable."
|
||
}
|
||
},
|
||
"updatedTodayAt": "Actualizado hoy, {time}",
|
||
"updatedYesterday": "Actualizado ayer",
|
||
"updatedOn": "Actualizado el {date}",
|
||
"healthStatus": {
|
||
"sectionTitle": "Qué ha cambiado",
|
||
"subtitle": "Señales que se desvían de tu rango habitual.",
|
||
"deviationAbove": "{vital} está por encima de tu rango habitual.",
|
||
"deviationBelow": "{vital} está por debajo de tu rango habitual.",
|
||
"shiftUp": "{vital} ha subido respecto a tu normal reciente.",
|
||
"shiftDown": "{vital} ha bajado respecto a tu normal reciente.",
|
||
"rangeContext": "Ahora {value}, normalmente {low}–{high}.",
|
||
"rangeContextTimeOfDay": "Ahora {value}, normalmente {low}–{high} a esta hora del día.",
|
||
"shiftContext": "Cerca de {before} antes, {after} desde entonces.",
|
||
"shiftDays": "Con {before} días antes y {after} desde entonces."
|
||
},
|
||
"breathingScreening": {
|
||
"sectionTitle": "Respiración durante el sueño",
|
||
"subtitle": "Una señal de cribado de tus datos de sueño.",
|
||
"classificationElevated": "Tu dispositivo detectó alteraciones respiratorias elevadas.",
|
||
"classificationNotElevated": "La clasificación de tu dispositivo no es elevada.",
|
||
"trendUp": "Con tendencia al alza respecto a noches anteriores.",
|
||
"trendDown": "Con tendencia a la baja respecto a noches anteriores.",
|
||
"trendStable": "Estable respecto a noches anteriores.",
|
||
"nights": "{count} noches registradas",
|
||
"indexLine": "índice medio reciente {value}",
|
||
"eventsFlagged": "{count} eventos detectados por tu dispositivo",
|
||
"disclaimer": "Es una señal de cribado, no un diagnóstico: consultalo con un profesional médico."
|
||
},
|
||
"labsChanges": {
|
||
"sectionTitle": "Desde tu último análisis",
|
||
"subtitle": "Cómo se comparan tus últimos resultados con el análisis anterior.",
|
||
"statusInRange": "dentro del rango",
|
||
"statusBelow": "por debajo del rango",
|
||
"statusAbove": "por encima del rango",
|
||
"directionFlat": "sin cambios"
|
||
},
|
||
"navGripStrength": "Fuerza de agarre",
|
||
"navPainNrs": "Dolor",
|
||
"navWaistCircumference": "Cintura",
|
||
"navWaistToHeight": "Cintura/altura",
|
||
"gripStrength": {
|
||
"title": "Fuerza de agarre",
|
||
"description": "Fuerza máxima de agarre de la mano: un indicador robusto de la fuerza de todo el cuerpo. Por debajo del umbral según el sexo (hombres 27 kg, mujeres 16 kg) indica probable sarcopenia; tu propia tendencia guía la lectura.",
|
||
"chartTitle": "Fuerza de agarre",
|
||
"emptyState": {
|
||
"title": "Aún no hay fuerza de agarre",
|
||
"description": "Registra una lectura con un dinamómetro de mano (anota el mejor de varios apretones) y la tendencia aparecerá aquí.",
|
||
"cta": "Registrar fuerza de agarre"
|
||
},
|
||
"coachPrefill": "Aún no he registrado la fuerza de agarre: ¿qué dice sobre mi salud muscular y cómo la mido y la mejoro?"
|
||
},
|
||
"pain": {
|
||
"title": "Dolor (0–10)",
|
||
"description": "Intensidad del dolor referida por el paciente en la escala numérica 0–10, donde 0 es sin dolor y 10 el peor imaginable. Un cambio sostenido de 2 puntos es la señal a vigilar.",
|
||
"chartTitle": "Dolor (0–10)",
|
||
"emptyState": {
|
||
"title": "Aún no hay puntuaciones de dolor",
|
||
"description": "Registra cómo sientes el dolor ahora mismo en la escala 0–10 y la tendencia aparecerá aquí.",
|
||
"cta": "Registrar una puntuación de dolor"
|
||
},
|
||
"coachPrefill": "Aún no he registrado puntuaciones de dolor: ¿cómo debo seguir el dolor en la escala 0–10 y qué cuenta como un cambio significativo?"
|
||
},
|
||
"waist": {
|
||
"title": "Perímetro de cintura",
|
||
"description": "Perímetro de la cintura en centímetros: un marcador de grasa central. El umbral de riesgo aumentado de la OMS depende del sexo (hombres 94 cm, mujeres 80 cm); tu propia tendencia guía la lectura.",
|
||
"chartTitle": "Perímetro de cintura",
|
||
"emptyState": {
|
||
"title": "Aún no hay medidas de cintura",
|
||
"description": "Mide tu cintura en el punto medio entre la costilla más baja y el hueso de la cadera, al final de una espiración normal, y regístrala aquí.",
|
||
"cta": "Registrar perímetro de cintura"
|
||
},
|
||
"coachPrefill": "Aún no he registrado medidas de cintura: ¿cómo mido la cintura correctamente y qué significa el número para mi salud?"
|
||
},
|
||
"waistToHeight": {
|
||
"title": "Índice cintura-altura",
|
||
"description": "Tu cintura dividida por tu altura: el número único más robusto entre poblaciones. Mantenerlo por debajo de 0,5 (cintura menor que la mitad de tu altura) es el objetivo sencillo.",
|
||
"chartTitle": "Índice cintura-altura",
|
||
"emptyState": {
|
||
"title": "Aún no hay índice cintura-altura",
|
||
"description": "Registra un índice cintura-altura y la tendencia aparecerá aquí. Regla práctica: mantén tu cintura por debajo de la mitad de tu altura.",
|
||
"cta": "Registrar índice cintura-altura"
|
||
},
|
||
"coachPrefill": "Aún no he registrado un índice cintura-altura: ¿por qué es un número útil y cómo lo mantengo por debajo de 0,5?"
|
||
},
|
||
"ecg": {
|
||
"sectionTitle": "Registros de ECG",
|
||
"loadError": "No se pudieron cargar tus registros de ECG.",
|
||
"backToList": "Volver a los registros",
|
||
"clinicianNote": "Si este resultado te preocupa, comenta este registro con un profesional médico.",
|
||
"resultAttribution": "Resultado registrado: {result}, según lo informado por el dispositivo de registro.",
|
||
"result": {
|
||
"irregular": "Fibrilación auricular detectada",
|
||
"notDetected": "Sin signos de fibrilación auricular",
|
||
"inconclusive": "Registro no concluyente",
|
||
"none": "Sin resultado informado"
|
||
},
|
||
"meta": {
|
||
"recorded": "Registrado",
|
||
"duration": "Duración",
|
||
"lead": "Derivación",
|
||
"averageHeartRate": "Frecuencia cardíaca media",
|
||
"samplingRate": "Frecuencia de muestreo",
|
||
"leadSingle": "Una sola derivación (derivación I)",
|
||
"durationValue": "{seconds} s",
|
||
"bpmValue": "{bpm} bpm",
|
||
"hzValue": "{hz} Hz",
|
||
"unknown": "—"
|
||
},
|
||
"waveform": {
|
||
"ariaLabel": "Tira de ECG registrada el {date}, duración {duration}, frecuencia cardíaca media {heartRate}, resultado registrado: {result}."
|
||
},
|
||
"crossLink": {
|
||
"title": "Registros de ECG",
|
||
"recordingsOne": "1 registro guardado.",
|
||
"recordingsMany": "{count} registros guardados.",
|
||
"latestResult": "Último resultado del dispositivo: {result}.",
|
||
"cta": "Ver registros"
|
||
},
|
||
"emptyTitle": "Aún no hay registros de ECG",
|
||
"emptyDescription": "Los registros de ECG se sincronizan desde un dispositivo de una derivación compatible. En cuanto tu dispositivo suba un registro, aparecerá aquí.",
|
||
"emptyCta": "Conectar un dispositivo"
|
||
},
|
||
"intradayPulse": {
|
||
"title": "Pulso a lo largo del día",
|
||
"caption": "Promediado en intervalos de 10 minutos.",
|
||
"hourlyNote": "Mostrando el promedio por hora de este día. Los días recientes muestran el detalle completo de 10 minutos.",
|
||
"empty": "Aún no hay suficientes lecturas para este día para mostrar su forma.",
|
||
"coverageOne": "Basado en 1 lectura a lo largo de {hours}h.",
|
||
"coverageMany": "Basado en {count} lecturas a lo largo de {hours}h.",
|
||
"baseline": "Reposo",
|
||
"today": "Hoy",
|
||
"previousDay": "Día anterior",
|
||
"nextDay": "Día siguiente",
|
||
"tension": {
|
||
"morning": "Un tramo elevado en reposo esta mañana; posiblemente algo de tensión.",
|
||
"afternoon": "Un tramo elevado en reposo esta tarde; posiblemente algo de tensión.",
|
||
"evening": "Un tramo elevado en reposo al anochecer; posiblemente algo de tensión.",
|
||
"night": "Un tramo elevado en reposo por la noche; posiblemente algo de tensión."
|
||
}
|
||
},
|
||
"navEcg": "ECG",
|
||
"sectionLoadError": "No se pudo cargar esta sección.",
|
||
"aiSetupHint": {
|
||
"title": "La IA es opcional",
|
||
"body": "Todo funciona aquí sin IA. Si quieres un resumen diario, notas breves sobre tus mediciones y el Coach, puedes conectar un proveedor de IA.",
|
||
"settingsBody": "HealthLog funciona por completo sin IA. Conecta un proveedor abajo si quieres un resumen diario, notas breves sobre tus mediciones y el Coach.",
|
||
"action": "Configurar IA",
|
||
"dismiss": "Ahora no"
|
||
},
|
||
"bmiHeight": {
|
||
"coachPrefill": "Todavía no he indicado mi altura: ¿por qué importa el IMC y qué debería saber antes de configurarla?"
|
||
},
|
||
"medicationsEmpty": {
|
||
"coachPrefill": "Todavía no he añadido medicamentos: ¿qué debería saber antes de empezar a seguir aquí la adherencia?"
|
||
},
|
||
"scoreHistory": {
|
||
"healthTitle": "Evolución de la puntuación de salud",
|
||
"healthDescription": "Tu puntuación de salud día a día, tal como se mostró cada día.",
|
||
"emptyDescription": "Todavía no hay ninguna puntuación registrada en este periodo.",
|
||
"usualRange": "Sombreado: tu rango habitual, de {lo} a {hi}.",
|
||
"seam": "La línea se interrumpe donde cambió lo que cuenta para la puntuación."
|
||
}
|
||
},
|
||
"thresholds": {
|
||
"defaultLabel": "Por defecto",
|
||
"overrideToggleLabel": "Valores propios",
|
||
"resetAction": "Restablecer valor por defecto",
|
||
"resetAllAction": "Restablecer todos los valores",
|
||
"resetAllTitle": "¿Restablecer todos los rangos personalizados?",
|
||
"resetAllBody": "Cada métrica vuelve a su rango predeterminado. Los valores que definiste no se guardan en ningún otro sitio y no se pueden recuperar.",
|
||
"resetAllConfirm": "Restablecer todo",
|
||
"resetTitle": "¿Restablecer este rango?",
|
||
"resetBody": "La métrica vuelve a su rango predeterminado. Los valores que definiste no se guardan en ningún otro sitio y no se pueden recuperar.",
|
||
"resetConfirm": "Restablecer rango",
|
||
"minLabel": "Mín",
|
||
"maxLabel": "Máx",
|
||
"unitSuffix": "({unit})",
|
||
"outOfBoundsHint": "Rango permitido: {min}–{max} {unit}",
|
||
"overrideWarning": "Los valores fuera de las guías clínicas pueden dar objetivos poco saludables. Personaliza solo tras consultar con tu médico.",
|
||
"saveSuccess": "Objetivos actualizados",
|
||
"saveError": "No se han podido guardar los objetivos",
|
||
"resetSuccess": "Restablecido al valor por defecto",
|
||
"sourceOverride": "Valor propio",
|
||
"metricWeight": "Peso",
|
||
"metricBpSys": "Tensión arterial (sistólica)",
|
||
"metricBpDia": "Tensión arterial (diastólica)",
|
||
"metricPulse": "Pulso en reposo",
|
||
"metricBodyFat": "Grasa corporal",
|
||
"metricSleep": "Duración del sueño",
|
||
"metricSteps": "Pasos/día",
|
||
"metricGlucoseFasting": "Glucemia (en ayunas)",
|
||
"metricGlucosePostprandial": "Glucemia (posprandial)",
|
||
"metricGlucoseRandom": "Glucemia (cualquiera)",
|
||
"metricGlucoseBedtime": "Glucemia (antes de dormir)",
|
||
"metricBodyWater": "Agua corporal",
|
||
"metricBoneMass": "Masa ósea",
|
||
"metricOxygenSaturation": "Saturación de oxígeno (SpO₂)",
|
||
"unsetExplanation": "Sin valor propio: se aplica el valor por defecto calculado.",
|
||
"cardTitle": "Rangos por métrica"
|
||
},
|
||
"onboarding": {
|
||
"errorGeneric": "Algo ha salido mal al finalizar la configuración. Inténtalo de nuevo.",
|
||
"tour": {
|
||
"stepOf": "Paso {current} de {total}",
|
||
"next": "Siguiente",
|
||
"back": "Atrás",
|
||
"skip": "Saltar tour",
|
||
"done": "Entendido",
|
||
"steps": {
|
||
"dashboardOverview": {
|
||
"title": "Tu panel",
|
||
"body": "El panel reúne todos los módulos de un vistazo. Mantén pulsada una tarjeta para reordenarla u ocultarla (Ajustes → Diseño del panel). Cada tarjeta vale tanto como los datos que tiene detrás: los módulos siguientes los rellenan."
|
||
},
|
||
"quickAdd": {
|
||
"title": "Registrado en segundos",
|
||
"body": "Con «+ Añadir» registras cualquier medición en segundos: peso, tensión, pulso, glucosa. Fuerza oculta: fechar valores olvidados. Todo lo que registras aquí alimenta las tendencias, la puntuación de salud y las ideas de IA."
|
||
},
|
||
"measurements": {
|
||
"title": "Mediciones y rangos objetivo",
|
||
"body": "Mediciones muestra el historial y el rango objetivo de cada métrica. Joya oculta: define un rango por valor para que las desviaciones resalten en color. Estas series son la base de las correlaciones del Coach y del informe médico."
|
||
},
|
||
"medications": {
|
||
"title": "Medicación y tomas",
|
||
"body": "Medicación gestiona horarios, tomas, existencias y titulación. Oculto: planes recurrentes (RRULE/rotativos) y avisos de poco stock. Tu tasa de tomas alimenta el pilar de cumplimiento del panel y el contexto de la IA."
|
||
},
|
||
"labs": {
|
||
"title": "Valores de laboratorio",
|
||
"body": "Laboratorio recoge biomarcadores con rangos de referencia: hemograma, colesterol, HbA1c. Fuerza: importación y exportación FHIR. Los valores fuera de rango reaparecen como pruebas en las ideas y en el informe médico."
|
||
},
|
||
"illness": {
|
||
"title": "Diario de enfermedades",
|
||
"body": "El diario de enfermedades registra episodios agudos y diagnósticos crónicos con sus brotes. Oculto: correlacionar un episodio con tus mediciones y el Modo descanso que pausa los recordatorios. Así el Coach entiende por qué los valores varían un tiempo."
|
||
},
|
||
"vorsorge": {
|
||
"title": "Revisiones",
|
||
"body": "Las revisiones te recuerdan controles y vacunas con su propio intervalo. Consejo: «Hecho» puede crear directamente una medición o un resultado de laboratorio. Lo pendiente aparece como recordatorio y en el informe médico."
|
||
},
|
||
"cycle": {
|
||
"title": "Ciclo",
|
||
"body": "El seguimiento del ciclo registra fases y síntomas. Oculto: comparar síntomas con el ánimo y el sueño. El ciclo aporta contexto a variaciones que de otro modo parecerían inexplicables."
|
||
},
|
||
"mood": {
|
||
"title": "Ánimo",
|
||
"body": "Ánimo capta cómo te sientes y etiquetas en dos segundos. Fuerza: tus propias etiquetas. Las tendencias de ánimo se correlacionan con el sueño, la medicación y el ciclo: el Coach detecta los patrones."
|
||
},
|
||
"insights": {
|
||
"title": "Ideas",
|
||
"body": "Ideas es el corazón: análisis dinámico y basado en pruebas en lugar de consejos genéricos; cada afirmación apunta a tus datos reales. Oculto: el diseño es personalizable. Ideas reúne todo lo que aportan los módulos anteriores."
|
||
},
|
||
"coach": {
|
||
"title": "Coach",
|
||
"body": "El Coach responde preguntas sobre tus datos en diálogo, usando tu historial, medicación y valores de laboratorio como contexto. Tú eliges el proveedor de IA (tu propia clave o local). No recalcula nada: lee las mismas cifras que el panel."
|
||
},
|
||
"integrations": {
|
||
"title": "Integraciones",
|
||
"body": "Las integraciones sincronizan Withings, WHOOP, Polar, Oura y Apple Health automáticamente. Peso, sueño y recuperación se rellenan sin teclear, y a su vez alimentan las ideas y el Coach."
|
||
},
|
||
"export": {
|
||
"title": "Informe médico",
|
||
"body": "El informe médico reúne mediciones, medicación, valores de laboratorio y revisiones en PDF o FHIR para la cita. Aquí convergen todos los módulos: un informe completo solo sale de datos bien cuidados."
|
||
},
|
||
"achievements": {
|
||
"title": "Logros",
|
||
"body": "Los logros premian la constancia: rachas e hitos. Un pequeño bucle de motivación que facilita seguir adelante."
|
||
},
|
||
"wrapUp": {
|
||
"title": "Esto es la visita",
|
||
"body": "Esta visita guiada se muestra una sola vez, no volverá a abrirse por sí sola. Todo lo que has visto sigue disponible, y puedes activar o desactivar funciones cuando quieras en Ajustes → Módulos."
|
||
}
|
||
}
|
||
},
|
||
"shell": {
|
||
"back": "Atrás",
|
||
"skip": "Omitir",
|
||
"next": "Continuar",
|
||
"stepOf": "Paso {current} de {total}",
|
||
"stepsLabel": "Pasos de la configuración"
|
||
},
|
||
"baseline": {
|
||
"title": "Cuéntanos sobre ti",
|
||
"body": "Cuatro campos opcionales afinan los valores objetivo, el IMC y los recordatorios. Podrás ajustarlo todo más tarde desde Ajustes.",
|
||
"displayNameLabel": "Nombre para mostrar",
|
||
"displayNamePlaceholder": "¿Cómo debería llamarte HealthLog?",
|
||
"displayNameHint": "Aparece en el saludo del panel y en los informes.",
|
||
"heightLabel": "Altura (cm)",
|
||
"heightLabelFtIn": "Altura (ft, in)",
|
||
"genderLabel": "Sexo",
|
||
"genderNone": "Prefiero no decirlo",
|
||
"genderMale": "Hombre",
|
||
"genderFemale": "Mujer",
|
||
"genderOther": "Otro",
|
||
"dateOfBirthLabel": "Fecha de nacimiento",
|
||
"dateOfBirthHint": "Se utiliza solo para análisis sensibles a la edad."
|
||
},
|
||
"done": {
|
||
"title": "Todo listo",
|
||
"body": "Bienvenido a bordo. Tu panel ya está preparado.",
|
||
"returnCta": "Abrir el panel",
|
||
"learning": "Algunas conclusiones —glucosa, ritmo de sueño, tendencias de presión arterial, ciclo— se afinan durante la primera semana o dos a medida que se acumulan tus datos. Las casillas vacías ahora solo significan que aún estamos aprendiendo tu línea base.",
|
||
"connectCta": "Conectar un dispositivo",
|
||
"logCta": "Registra tu primera medición",
|
||
"importCta": "Importar historial existente",
|
||
"modulesCta": "Elige tus módulos"
|
||
},
|
||
"welcomeBack": {
|
||
"title": "Bienvenido de nuevo",
|
||
"cta": "Abrir el panel"
|
||
},
|
||
"disclaimer": {
|
||
"acknowledge": "Lo entiendo: HealthLog es una herramienta privada de seguimiento, no una valoración clínica ni un diagnóstico. Si me preocupa algo, hablaré con mi médico, no con esta app.",
|
||
"learnMore": "Más información"
|
||
},
|
||
"anamnesis": {
|
||
"title": "Sobre tu salud (opcional)",
|
||
"subtitle": "Un poco de contexto para que HealthLog interprete tus valores de forma más justa.",
|
||
"intro": "Comparte lo que quieras: cada campo es opcional y puedes editarlo cuando quieras en Ajustes.",
|
||
"conditionsLabel": "Afecciones actuales",
|
||
"conditionsPlaceholder": "p. ej. hipertensión, diabetes tipo 2",
|
||
"conditionsHint": "Ayuda a HealthLog a interpretar tus lecturas en contexto en lugar de marcar lo esperado.",
|
||
"allergiesLabel": "Alergias o intolerancias",
|
||
"allergiesPlaceholder": "p. ej. penicilina, lactosa",
|
||
"privacyNote": "Se almacena cifrado y solo se usa para darte mejor contexto. Aquí no te pedimos tu medicación: puedes añadirla cuando quieras desde la página de Medicación."
|
||
},
|
||
"ai": {
|
||
"panelTitle": "Mira cómo son los insights",
|
||
"panelIntro": "Coach, el resumen diario y las lecturas por métrica convierten tus propios números en lenguaje claro. Así se ve, antes de conectar nada.",
|
||
"showSample": "Ver un resumen de ejemplo",
|
||
"sampleTitle": "Resumen diario",
|
||
"sampleTag": "Ejemplo",
|
||
"sampleAriaLabel": "Resumen diario de ejemplo",
|
||
"sampleBody": "Peso 1,2 kg menos en dos semanas. Pulso en reposo estable en 58 lpm. Tensión dentro del rango 6 de 7 días; la única lectura alta llegó tras una cena tardía y salada.",
|
||
"sampleCaption": "Solo un ejemplo, no son tus datos. Así se lee un resumen cuando los insights están activos.",
|
||
"ladderTitle": "Tres formas de activarlo",
|
||
"ladderLocalTitle": "Modelo local: las solicitudes de IA no salen de tu red",
|
||
"ladderLocalBody": "Apunta HealthLog a Ollama o LM Studio en tu propia máquina. Gratis y totalmente privado: la opción tranquila por defecto.",
|
||
"ladderByokTitle": "Usa tu propia clave",
|
||
"ladderByokBody": "Usa tu propia clave de OpenAI o Anthropic. Funciona con tu cuenta y facturación, y el nivel de API mantiene tus datos fuera del entrenamiento por defecto.",
|
||
"ladderOauthTitle": "Inicia sesión con una suscripción",
|
||
"ladderOauthBody": "Conecta una cuenta de ChatGPT. Sin coste por token, pero los términos del nivel de consumo pueden usar el contenido para entrenamiento, así que es una elección deliberada, nunca la opción por defecto para tus datos de salud.",
|
||
"keylessLine": "HealthLog es plenamente útil sin IA. Tus paneles, gráficos, tendencias y exportaciones funcionan; la IA solo añade la lectura en lenguaje claro por encima.",
|
||
"setupCta": "Configúralo (un minuto aprox.)",
|
||
"sharedKeyNote": "Esta instancia ya ofrece un proveedor de IA compartido, así que los insights funcionan para ti ahora mismo, sin configuración.",
|
||
"offer": {
|
||
"title": "Esta instancia ya puede escribir tu resumen en lenguaje claro.",
|
||
"body": "El operador ofrece un proveedor que funcionó por última vez en las últimas 24 horas. Con un toque activas el lenguaje claro; tus datos irán entonces a ese único proveedor y a nadie más.",
|
||
"cta": "Activar el lenguaje claro",
|
||
"granted": "Activado. El primer resumen aparecerá en tu panel.",
|
||
"error": "No se pudo activar. Vuelve a intentarlo en un momento."
|
||
},
|
||
"unavailable": {
|
||
"title": "El proveedor de esta instancia no responde en este momento.",
|
||
"body": "HealthLog es plenamente útil sin el lenguaje claro. Más adelante puedes añadir tu propio proveedor en los ajustes."
|
||
}
|
||
},
|
||
"steps": {
|
||
"who": "Para quién es este registro",
|
||
"areas": "Qué quieres vigilar",
|
||
"medication": "Medicación",
|
||
"sources": "De dónde vienen las mediciones",
|
||
"visit": "Visita médica",
|
||
"units": "Unidades",
|
||
"confirm": "Confirmar",
|
||
"first-result": "Primer resultado",
|
||
"done": "Listo"
|
||
},
|
||
"flow": {
|
||
"welcome": {
|
||
"title": "Bienvenido a HealthLog",
|
||
"body": "Cinco preguntas breves deciden qué te muestra HealthLog primero. Lleva unos dos minutos.",
|
||
"changeLater": "Nada es definitivo: cada elección se puede cambiar después en Ajustes.",
|
||
"setUp": "Configurar",
|
||
"skip": "Omitir por ahora",
|
||
"againBody": "Tu configuración está terminada. Responde de nuevo las preguntas para cambiar lo que HealthLog muestra primero, o ve al panel.",
|
||
"setUpAgain": "Configurar de nuevo"
|
||
},
|
||
"who": {
|
||
"title": "¿Para quién es este registro?",
|
||
"body": "Las respuestas siguientes se aplican a este registro.",
|
||
"options": {
|
||
"me": "Para mí",
|
||
"someone-else": "Para alguien a mi cargo",
|
||
"both": "Ambos"
|
||
},
|
||
"hints": {
|
||
"someone-else": "Un hijo o un padre, por ejemplo. Su perfil se crea al final.",
|
||
"both": "Configura ahora tu propio registro; el perfil de la otra persona se ofrece al final."
|
||
}
|
||
},
|
||
"areas": {
|
||
"title": "¿Qué quieres vigilar?",
|
||
"body": "Elige las que quieras. Deciden qué módulos se activan y qué muestra primero el panel.",
|
||
"options": {
|
||
"blood-pressure": "Presión arterial",
|
||
"weight-body": "Peso y cuerpo",
|
||
"glucose": "Glucosa en sangre",
|
||
"sleep": "Sueño y recuperación",
|
||
"mood": "Ánimo y bienestar mental",
|
||
"cycle": "Ciclo",
|
||
"activity": "Actividad y entrenamientos",
|
||
"labs": "Resultados de laboratorio",
|
||
"illness": "Enfermedades y síntomas"
|
||
}
|
||
},
|
||
"medication": {
|
||
"title": "¿Tomas medicación con un horario fijo?",
|
||
"body": "Un horario activa el módulo de medicación y los recordatorios.",
|
||
"options": {
|
||
"yes": "Sí",
|
||
"no": "No",
|
||
"sometimes": "A veces"
|
||
}
|
||
},
|
||
"sources": {
|
||
"title": "¿De dónde vienen hoy tus mediciones?",
|
||
"body": "Elige las que quieras. Al final se ofrece una conexión; ninguna es obligatoria.",
|
||
"options": {
|
||
"manual": "Las escribo a mano",
|
||
"apple-health": "Apple Health en mi iPhone",
|
||
"withings": "Withings",
|
||
"oura": "Oura",
|
||
"whoop": "WHOOP",
|
||
"polar": "Polar",
|
||
"fitbit": "Fitbit",
|
||
"strava": "Strava",
|
||
"nightscout": "Nightscout",
|
||
"file": "Un archivo que ya tengo"
|
||
},
|
||
"hints": {
|
||
"apple-health": "Sincronizado por la app de iOS o importado desde una exportación.",
|
||
"file": "Se importa en Ajustes cuando termines aquí."
|
||
}
|
||
},
|
||
"visit": {
|
||
"title": "¿Tienes una visita médica próximamente?",
|
||
"body": "Una visita activa el informe médico y añade su preparación a tu lista de tareas.",
|
||
"options": {
|
||
"within-a-month": "Sí, en menos de un mes",
|
||
"later": "Más adelante",
|
||
"no": "No"
|
||
}
|
||
},
|
||
"units": {
|
||
"title": "¿Qué unidades usas?",
|
||
"body": "Las mediciones se guardan una vez y se muestran en la unidad que elijas. Puedes cambiarla después en Ajustes.",
|
||
"glucoseLegend": "Glucosa en sangre",
|
||
"weightLegend": "Peso y altura",
|
||
"options": {
|
||
"metric": "kg y cm",
|
||
"imperial": "lb y ft/in"
|
||
}
|
||
},
|
||
"confirm": {
|
||
"title": "Esto es lo que activan tus respuestas",
|
||
"body": "Un vistazo y HealthLog queda configurado. Nada de esto es definitivo.",
|
||
"modulesTitle": "Módulos",
|
||
"switchedOn": "Activados: {modules}.",
|
||
"nothingExtra": "Tus respuestas no activan ningún módulo adicional; las mediciones básicas siempre están.",
|
||
"alwaysOn": "Siempre activos: {modules} y las mediciones básicas (peso, presión arterial, pulso).",
|
||
"everythingElse": "Todo lo demás queda a un clic en",
|
||
"modulesLink": "Ajustes, Módulos",
|
||
"switchesOff": "Fuera de la navegación: {modules}. Puedes volver a activarlos cuando quieras en Ajustes, Módulos.",
|
||
"glucoseUnit": "Glucosa en sangre",
|
||
"unitPreference": "Unidades",
|
||
"language": "Idioma",
|
||
"timezone": "Zona horaria",
|
||
"changeInSettings": "Cámbialo en Ajustes, Cuenta",
|
||
"cta": "Confirmar y continuar",
|
||
"managedTitle": "La persona a tu cargo",
|
||
"managedBody": "Su registro no tiene inicio de sesión propio; lo gestionas desde tu cuenta. Para crearlo hace falta un segundo factor o una llave de acceso en tu cuenta.",
|
||
"managedCreate": "Crear el perfil y terminar",
|
||
"managedLater": "También puedes crearlo después en Ajustes, Acceso compartido.",
|
||
"finishWithoutProfile": "Terminar sin el perfil"
|
||
},
|
||
"first-result": {
|
||
"connect-source": {
|
||
"title": "Conectar {target}",
|
||
"body": "Una conexión, elegida según tus respuestas. Después las mediciones llegan solas.",
|
||
"howTo": "La conexión con {target} se hace en la página de integraciones. Vuelve aquí después; esta pantalla detecta cuándo está lista.",
|
||
"cta": "Conectar {target}",
|
||
"checking": "Comprobando la conexión.",
|
||
"waiting": "Aún no conectado.",
|
||
"openSettings": "Abrir Ajustes → Integraciones",
|
||
"noDate": "desconocido",
|
||
"needsCredentials": {
|
||
"title": "Esta instancia aún no tiene una aplicación de {target} registrada.",
|
||
"detail": "Introduce tus propias credenciales en Ajustes → Integraciones y la conexión podrá empezar."
|
||
},
|
||
"state": {
|
||
"pending_first_sync": {
|
||
"title": "{target} está conectado.",
|
||
"detail": "La primera sincronización está en marcha. Los valores aparecerán en el panel en cuanto lleguen."
|
||
},
|
||
"fresh": {
|
||
"title": "{target} ya está conectado.",
|
||
"detail": "Último valor {when}. Aquí no queda nada por hacer."
|
||
},
|
||
"stale": {
|
||
"title": "{target} está conectado, pero ahora mismo no llega nada.",
|
||
"detail": "Último valor {when}. La conexión en sí está bien."
|
||
},
|
||
"stalled": {
|
||
"title": "{target} está conectado, pero ha dejado de sincronizar.",
|
||
"detail": "Último intento {when}. Revisa la conexión en Ajustes → Integraciones."
|
||
},
|
||
"failing": {
|
||
"title": "{target} está conectado, pero la sincronización falla.",
|
||
"detail": "No ha llegado nada desde {when}. Revisa la conexión en Ajustes → Integraciones."
|
||
},
|
||
"reauth_required": {
|
||
"title": "Hay que renovar la conexión con {target}.",
|
||
"detail": "Inicia sesión una vez más y los valores seguirán llegando."
|
||
},
|
||
"parked": {
|
||
"title": "La conexión con {target} está en pausa.",
|
||
"detail": "Revisa la conexión en Ajustes → Integraciones."
|
||
}
|
||
}
|
||
},
|
||
"add-medication": {
|
||
"title": "Añade tu primer medicamento",
|
||
"body": "Nombre, dosis y horario; el recordatorio sigue el horario que fijes.",
|
||
"howTo": "El medicamento se añade en unos pocos pasos. Puedes añadir más después en la página de medicación.",
|
||
"cta": "Añadir un medicamento",
|
||
"done": "{name} está añadido.",
|
||
"doneUnnamed": "Tu primer medicamento está añadido.",
|
||
"nextDose": "Próxima dosis: {when}.",
|
||
"reminders": "Los recordatorios siguen el horario que fijaste.",
|
||
"recordOnly": "Solo registro: sin recordatorios, nada queda pendiente.",
|
||
"asNeeded": "Según necesidad: sin recordatorios, registra cada toma cuando la hagas."
|
||
},
|
||
"log-reading": {
|
||
"title": "Registra una medición: {target}",
|
||
"body": "Una medición pone el primer valor en tu panel. La tendencia se dibuja sola a partir de la quinta.",
|
||
"done": "Tu primera medición está en su tarjeta.",
|
||
"doneElsewhere": "Tu primera entrada de {target} está registrada.",
|
||
"elsewhere": "{target} tiene su propia página. Ábrela, haz la primera entrada y vuelve aquí para marcarla como hecha.",
|
||
"open": "Abrir {target}",
|
||
"markDone": "Ya hice la entrada"
|
||
}
|
||
},
|
||
"done": {
|
||
"tourCta": "Hacer un recorrido breve",
|
||
"openRecord": "Abrir el registro de {name}",
|
||
"createProfile": "Crear el perfil de la persona a tu cargo"
|
||
}
|
||
}
|
||
},
|
||
"gettingStarted": {
|
||
"title": "Primeros pasos",
|
||
"subtitle": "Quick wins para sacar el máximo provecho a HealthLog.",
|
||
"progress": "{done} de {total} completados",
|
||
"dismissAll": "Ocultar la lista",
|
||
"dismissTooltip": "Ocultar este punto",
|
||
"items": {
|
||
"profileTitle": "Configurar el perfil",
|
||
"profileDescription": "Altura, fecha de nacimiento y sexo desbloquean objetivos personalizados.",
|
||
"profileCta": "Abrir perfil",
|
||
"measurementTitle": "Registrar la primera medición",
|
||
"measurementDescription": "Una medición activa la tarjeta; la tendencia se dibuja a partir de la 5.ª medición.",
|
||
"measurementCta": "Añadir medición",
|
||
"medicationTitle": "Añadir medicamento",
|
||
"medicationDescription": "Sigue el cumplimiento y recibe recordatorios justo cuando los necesites.",
|
||
"medicationCta": "Añadir medicamento",
|
||
"dataSourceTitle": "Conectar una fuente de datos (opcional)",
|
||
"dataSourceDescription": "Sincroniza peso, presión, sueño y más desde Withings, WHOOP, Oura, Polar, Nightscout, Fitbit o Apple Health.",
|
||
"dataSourceCta": "Conectar",
|
||
"notificationsTitle": "Configurar notificaciones",
|
||
"notificationsDescription": "Elige cómo te recuerda HealthLog: Telegram, ntfy o Web Push.",
|
||
"notificationsCta": "Abrir notificaciones",
|
||
"insightsTitle": "Activar insights (opcional)",
|
||
"insightsDescription": "Añade un modelo local o tu propia clave de IA para desbloquear el resumen diario y Coach.",
|
||
"insightsCta": "Activar insights",
|
||
"visitTitle": "Prepararse para la visita",
|
||
"visitDescription": "Anota la cita en el calendario; el informe médico reúne lo que debes llevar.",
|
||
"visitCta": "Abrir visitas",
|
||
"dataSourceNamedTitle": "Conectar {source}",
|
||
"managedProfileTitle": "Crear el perfil de la persona a tu cargo",
|
||
"managedProfileDescription": "Tus respuestas eran para el registro de otra persona; se crea en Acceso compartido.",
|
||
"managedProfileCta": "Crear el perfil"
|
||
}
|
||
},
|
||
"trendHints": {
|
||
"title": "Primera tendencia tras 5 mediciones",
|
||
"remainingOne": "Falta 1 medición para la tendencia.",
|
||
"remainingMany": "Faltan {count} mediciones para la tendencia."
|
||
},
|
||
"settings": {
|
||
"oauthCallbackPreflightItem": "{provider}: la dirección de retorno {configuredOrigin} no coincide con la dirección de esta aplicación {currentOrigin}.",
|
||
"shell": {
|
||
"sectionsNav": "Secciones de ajustes",
|
||
"groups": {
|
||
"account": "Cuenta",
|
||
"yourData": "Tus datos",
|
||
"healthProfile": "Perfil de salud",
|
||
"ai": "IA",
|
||
"connectivity": "Conectividad",
|
||
"system": "Sistema",
|
||
"tracking": "Seguimiento",
|
||
"arrangement": "Disposición",
|
||
"notifications": "Notificaciones",
|
||
"connections": "Conexiones",
|
||
"data": "Datos"
|
||
},
|
||
"allSections": "Todas las secciones"
|
||
},
|
||
"sharedRecord": {
|
||
"managedSettings": {
|
||
"saveError": "No se pudo guardar. Inténtalo de nuevo.",
|
||
"validationError": "Revisa tus datos.",
|
||
"profile": {
|
||
"title": "Perfil",
|
||
"displayName": "Nombre visible",
|
||
"height": "Altura (cm)",
|
||
"dateOfBirth": "Fecha de nacimiento",
|
||
"gender": "Género",
|
||
"notSpecified": "No especificado",
|
||
"male": "Hombre",
|
||
"female": "Mujer",
|
||
"other": "Otro",
|
||
"locale": "Idioma",
|
||
"systemDefault": "Predeterminado del sistema",
|
||
"timezone": "Zona horaria",
|
||
"units": "Unidades",
|
||
"metric": "Métrico",
|
||
"imperial": "Imperial",
|
||
"timeFormat": "Formato de hora",
|
||
"automatic": "Automático",
|
||
"hour12": "12 horas",
|
||
"hour24": "24 horas",
|
||
"dateFormat": "Formato de fecha",
|
||
"dateDmy": "Día / mes / año",
|
||
"dateMdy": "Mes / día / año",
|
||
"dateYmd": "Año / mes / día"
|
||
},
|
||
"modules": {
|
||
"title": "Módulos"
|
||
},
|
||
"notifications": {
|
||
"title": "Notificaciones",
|
||
"moodReminder": "Activar recordatorio de ánimo",
|
||
"reminderHour": "Hora del recordatorio de ánimo",
|
||
"lowStockRunwayDays": "Días hasta existencias bajas",
|
||
"reorderLeadDays": "Días de margen para reponer"
|
||
},
|
||
"thresholds": {
|
||
"title": "Objetivos",
|
||
"metric": "Métrica",
|
||
"minimum": "Mínimo",
|
||
"maximum": "Máximo"
|
||
},
|
||
"coach": {
|
||
"title": "Asistente",
|
||
"disable": "Desactivar asistente",
|
||
"tone": "Tono",
|
||
"warm": "Cálido",
|
||
"neutral": "Neutro",
|
||
"concise": "Conciso",
|
||
"verbosity": "Nivel de detalle",
|
||
"brief": "Breve",
|
||
"default": "Predeterminado",
|
||
"detailed": "Detallado",
|
||
"excludedMetrics": "Métricas excluidas",
|
||
"dataClusters": "Grupos de datos",
|
||
"customClusters": "Usar una selección personalizada de grupos",
|
||
"metrics": {
|
||
"bp": "Presión arterial",
|
||
"weight": "Peso",
|
||
"pulse": "Pulso",
|
||
"mood": "Ánimo",
|
||
"compliance": "Adherencia a la medicación",
|
||
"hrv": "Variabilidad de la frecuencia cardíaca",
|
||
"sleep": "Sueño",
|
||
"restingHr": "Frecuencia cardíaca en reposo",
|
||
"steps": "Pasos",
|
||
"medications": "Medicamentos",
|
||
"anthropometrics": "Medidas corporales"
|
||
},
|
||
"clusters": {
|
||
"cardio": "Salud cardiovascular",
|
||
"body": "Composición corporal",
|
||
"activity": "Actividad",
|
||
"workouts": "Entrenamientos",
|
||
"sleep": "Sueño",
|
||
"mood": "Ánimo",
|
||
"glucose": "Glucosa",
|
||
"medication": "Medicación",
|
||
"mobility": "Movilidad",
|
||
"environment": "Entorno"
|
||
}
|
||
},
|
||
"insights": {
|
||
"title": "Análisis",
|
||
"sections": "Secciones del resumen",
|
||
"tiles": "Mosaicos de navegación",
|
||
"order": "Orden",
|
||
"unknownItem": "Análisis no disponible",
|
||
"sectionLabels": {
|
||
"wellnessScores": "Puntuaciones de bienestar",
|
||
"dailyBriefing": "Resumen diario",
|
||
"vitals": "Signos vitales",
|
||
"trends": "Tendencias",
|
||
"periodReview": "Revisión del período",
|
||
"cycleSummary": "Resumen del ciclo",
|
||
"signals": "Señales",
|
||
"rhythmEvents": "Eventos de ritmo",
|
||
"healthStatus": "Estado de salud",
|
||
"breathing": "Respiración",
|
||
"labsChanges": "Cambios de laboratorio",
|
||
"ecg": "ECG"
|
||
}
|
||
}
|
||
},
|
||
"unavailableTitle": "No disponible en este registro compartido",
|
||
"unavailableDescription": "Esta sección de Ajustes no está disponible intencionadamente mientras consultas el registro de otra persona.",
|
||
"integrationStatusDescription": "Estado de conexión de este registro gestionado.",
|
||
"integrationStatusDetail": "Los servicios que conectes aquí envían sus datos al registro de {name}, no al tuyo. Si el perfil no tiene una app propia del proveedor, usa la tuya.",
|
||
"integrationStatusDocs": "Cómo funciona compartir",
|
||
"integrationConnectsFor": "Conecta para {name}",
|
||
"integrationConnectFor": "Conectar para {name}",
|
||
"integrationDisconnect": "Desconectar",
|
||
"integrationDisconnectTitle": "¿Desconectar {provider} de {name}?",
|
||
"integrationDisconnectBody": "Dejarán de llegar datos nuevos. Todo lo ya importado se queda en el registro de {name}.",
|
||
"integrationNoClientApp": "Ni {name} ni tu propia cuenta tienen todavía una app de {provider}. Configura una primero en tus propias integraciones.",
|
||
"integrationConnectFailed": "No se pudo empezar a conectar {provider}."
|
||
},
|
||
"sections": {
|
||
"account": {
|
||
"title": "Cuenta",
|
||
"subtitle": "Tu perfil, identidad y datos de acceso."
|
||
},
|
||
"integrations": {
|
||
"title": "Integraciones",
|
||
"subtitle": "Conecta y gestiona tus fuentes de datos y dispositivos.",
|
||
"connectionsHeading": "Conexiones",
|
||
"channelsHeading": "Canales de entrega",
|
||
"channelsDescription": "Dónde se entregan los recordatorios y avisos.",
|
||
"matrixLink": "Notificaciones por canal"
|
||
},
|
||
"notifications": {
|
||
"title": "Notificaciones",
|
||
"subtitle": "Elige qué recordatorios recibes y dónde se entregan.",
|
||
"remindersHeading": "Recordatorios",
|
||
"matrixLink": "Notificaciones por canal",
|
||
"channelsLink": "Canales de entrega",
|
||
"displayHeading": "En tu teléfono",
|
||
"elsewhere": {
|
||
"title": "Se ajustan donde corresponden",
|
||
"description": "Estos recordatorios se ajustan junto a aquello a lo que se refieren.",
|
||
"doses": {
|
||
"title": "Tomas de medicación",
|
||
"description": "Las horas de toma y los recordatorios se ajustan en cada medicamento.",
|
||
"link": "Abrir medicamentos"
|
||
},
|
||
"cycle": {
|
||
"title": "Ciclo",
|
||
"description": "Los recordatorios del periodo y de la ventana fértil se activan por canal en la matriz de notificaciones.",
|
||
"link": "Abrir la matriz de notificaciones"
|
||
}
|
||
}
|
||
},
|
||
"layout": {
|
||
"title": "Disposición",
|
||
"backToHub": "Volver a Disposición",
|
||
"dashboard": {
|
||
"title": "Panel",
|
||
"description": "Diseño y orden de los mosaicos."
|
||
},
|
||
"insights": {
|
||
"title": "Análisis",
|
||
"description": "Orden de la vista general y de las pestañas de navegación."
|
||
},
|
||
"subtitle": "Elige el orden y la vista de tu panel, tus análisis y tus listas de seguimiento.",
|
||
"medications": {
|
||
"title": "Medicamentos",
|
||
"description": "Vista de lista y orden manual."
|
||
},
|
||
"labs": {
|
||
"title": "Laboratorio",
|
||
"description": "Vista, orden y orden manual."
|
||
},
|
||
"illness": {
|
||
"title": "Diario de enfermedades",
|
||
"description": "Vista de lista y orden de episodios."
|
||
},
|
||
"vorsorge": {
|
||
"title": "Revisiones",
|
||
"description": "Vista de lista y orden de recordatorios."
|
||
},
|
||
"documents": {
|
||
"title": "Documentos",
|
||
"description": "Vista y disposición de los meses."
|
||
}
|
||
},
|
||
"dashboard": {
|
||
"subtitle": "Organiza los mosaicos de tu panel."
|
||
},
|
||
"thresholds": {
|
||
"title": "Objetivos",
|
||
"subtitle": "Define tus rangos objetivo personales por métrica."
|
||
},
|
||
"sources": {
|
||
"title": "Prioridad de fuentes",
|
||
"integrationsHint": "Conecta o desconecta fuentes de datos en la página de integraciones.",
|
||
"integrationsHintLink": "Abrir integraciones",
|
||
"cardTitle": "Orden por métrica",
|
||
"help": "Si varias fuentes entregan el mismo valor el mismo día, la fuente superior cuenta como canónica.",
|
||
"resetDefaults": "Restablecer valores predeterminados",
|
||
"resetDefaultsTitle": "¿Restablecer el orden de fuentes?",
|
||
"resetDefaultsBody": "Cada orden que configuraste vuelve al predeterminado, para todas las métricas y tipos de dispositivo a la vez. Se guarda de inmediato y no se puede recuperar.",
|
||
"resetDefaultsConfirm": "Restablecer orden",
|
||
"moveUp": "Subir",
|
||
"moveDown": "Bajar",
|
||
"saveSuccess": "Prioridad de fuentes guardada",
|
||
"saveError": "No se pudo guardar la prioridad de fuentes.",
|
||
"resetSuccess": "Prioridad de fuentes restablecida a los valores predeterminados",
|
||
"perMetricToggle": "Ajustes por métrica ({count})",
|
||
"perMetricHelp": "Métricas que has personalizado respecto al orden predeterminado. Usa esta lista para devolver cualquier métrica concreta a su valor predeterminado sin tocar las demás.",
|
||
"perMetricEmpty": "No hay ajustes por métrica. Todas las métricas usan el orden global de arriba.",
|
||
"resetMetric": "Restablecer",
|
||
"deviceTypeToggle": "Prioridad por tipo de dispositivo ({count})",
|
||
"deviceTypeHelp": "Dentro de una fuente, qué dispositivo prevalece. Cuando un Apple Watch y un iPhone registran ambos los pasos, el tipo de dispositivo mejor clasificado cuenta como la lectura canónica.",
|
||
"deviceTypeDefault": "Orden predeterminado por tipo de dispositivo",
|
||
"resetDeviceTypes": "Restablecer tipos de dispositivo",
|
||
"metrics": {
|
||
"steps": "Pasos",
|
||
"activeEnergy": "Energía activa",
|
||
"walkingRunningDistance": "Distancia a pie + corriendo",
|
||
"flightsClimbed": "Pisos subidos",
|
||
"sleep": "Sueño",
|
||
"weight": "Peso",
|
||
"bloodPressure": "Presión arterial",
|
||
"pulse": "Pulso",
|
||
"bodyFat": "Grasa corporal",
|
||
"bodyTemperature": "Temperatura corporal",
|
||
"spo2": "Saturación de oxígeno",
|
||
"hrv": "Variabilidad de la frecuencia cardíaca",
|
||
"restingHeartRate": "Frecuencia cardíaca en reposo",
|
||
"vo2Max": "VO2 máx.",
|
||
"skinTemperature": "Temperatura de la piel",
|
||
"respiratoryRate": "Frecuencia respiratoria",
|
||
"recovery": "Recuperación",
|
||
"stress": "Estrés",
|
||
"sleepDebt": "Deuda de sueño",
|
||
"hrvRmssd": "VFC (RMSSD)"
|
||
},
|
||
"sourceLabels": {
|
||
"WITHINGS": "Withings",
|
||
"APPLE_HEALTH": "Apple Health",
|
||
"MANUAL": "Entrada manual",
|
||
"IMPORT": "Importar",
|
||
"WHOOP": "WHOOP",
|
||
"FITBIT": "Fitbit",
|
||
"COMPUTED": "Calculado",
|
||
"NIGHTSCOUT": "Nightscout",
|
||
"POLAR": "Polar",
|
||
"OURA": "Oura",
|
||
"TELEGRAM": "Telegram",
|
||
"MCP": "MCP",
|
||
"GOOGLE_HEALTH": "Google Health",
|
||
"STRAVA": "Strava",
|
||
"EXTERNAL": "Dispositivo externo",
|
||
"HEALTH_CONNECT": "Health Connect"
|
||
},
|
||
"deviceLabels": {
|
||
"watch": "Reloj",
|
||
"band": "Pulsera",
|
||
"ring": "Anillo",
|
||
"phone": "Teléfono",
|
||
"scale": "Báscula",
|
||
"other": "Otro",
|
||
"unknown": "Desconocido"
|
||
},
|
||
"subtitle": "Decide qué fuente prevalece cuando dos informan la misma métrica.",
|
||
"nutrients": {
|
||
"title": "Ingesta de nutrientes sincronizada",
|
||
"description": "Totales diarios de los últimos {days} días: lo que sincronizó Apple Health más los suplementos que tomaste.",
|
||
"empty": "Todavía no se han sincronizado datos de nutrientes.",
|
||
"latest": "{amount} {unit} el {date}",
|
||
"daysWithData": "{count} de {days} días",
|
||
"moduleHint": "La sincronización se controla con el módulo de ingesta de nutrientes.",
|
||
"moduleHintLink": "Gestionar módulos",
|
||
"detail": "Solo lectura: la app de origen es la dueña de los valores."
|
||
},
|
||
"helpDetail": "Las demás se conservan para la traza de auditoría. Solo aparecen las fuentes que has conectado o de las que hay datos.",
|
||
"noneInUse": "Aún no hay fuentes que ordenar. Conecta una en Integraciones o registra un valor."
|
||
},
|
||
"ai": {
|
||
"title": "Proveedor de IA",
|
||
"subtitle": "Elige tu proveedor de IA y usa tu propia clave."
|
||
},
|
||
"api": {
|
||
"title": "API y tokens",
|
||
"subtitle": "Gestiona los endpoints de la API y los tokens de acceso."
|
||
},
|
||
"advanced": {
|
||
"title": "Avanzado",
|
||
"subtitle": "Restablecer datos y eliminar cuenta."
|
||
},
|
||
"export": {
|
||
"title": "Exportar e importar",
|
||
"otherOptionsHeading": "Otras opciones de exportación",
|
||
"downloadFailed": "No se pudo descargar la exportación. Inténtalo de nuevo.",
|
||
"actions": {
|
||
"download": "Descargar"
|
||
},
|
||
"filters": {
|
||
"since": "Desde",
|
||
"until": "Hasta"
|
||
},
|
||
"cards": {
|
||
"measurementsCsv": {
|
||
"title": "Mediciones",
|
||
"description": "Peso, presión arterial, pulso, glucosa y todas las demás mediciones como valores separados por comas."
|
||
},
|
||
"medicationsCsv": {
|
||
"title": "Medicamentos",
|
||
"description": "Tu lista de medicación con dosis, horarios y (opcionalmente) el historial completo de tomas.",
|
||
"includeIntake": "Incluir historial de tomas"
|
||
},
|
||
"moodCsv": {
|
||
"title": "Estado de ánimo",
|
||
"description": "Entradas de estado de ánimo diarias con puntuación, etiquetas y marcas de tiempo."
|
||
},
|
||
"fullBackup": {
|
||
"title": "Copia completa",
|
||
"description": "Todo tu historial en un archivo JSON.",
|
||
"scopeNote": "Los metadatos de los documentos y el resumen de IA, si existe, se incluyen en texto plano; los archivos originales de los documentos y los datos de rutas GPS/muestras de los entrenamientos no están incluidos. Descárgalos por separado desde el archivo de documentos o la exportación de entrenamientos.",
|
||
"encryptToggle": "Cifrar con una contraseña",
|
||
"passphrasePlaceholder": "Contraseña (mín. 12 caracteres)",
|
||
"passphraseHelp": "Deriva la clave del archivo con Argon2id y lo sella con AES-256-GCM. Guarda el archivo con la extensión .hlx.",
|
||
"noRecoveryWarning": "No hay recuperación: si pierdes esta contraseña, el archivo no se podrá abrir. Guárdala en un lugar seguro.",
|
||
"detail": "El mismo formato que la copia automática semanal. Algunos tipos de registro aún no se incluyen: el manifiesto del archivo indica qué contiene.",
|
||
"contents": "Tus mediciones, medicamentos, estado de ánimo, ciclo, analíticas, episodios de enfermedad, alergias, antecedentes familiares, nutrientes, entrenamientos, tu perfil de salud y tus métricas personalizadas en un archivo JSON."
|
||
}
|
||
},
|
||
"import": {
|
||
"heading": "Importar",
|
||
"description": "Importa datos a HealthLog desde una exportación de Apple Health o un archivo JSON. La importación omite las filas que ya existen, así que repetirla es seguro.",
|
||
"charCount": "{used} / {max} caracteres",
|
||
"appleHealth": {
|
||
"title": "Apple Health",
|
||
"description": "Sube el archivo export.zip de la app Salud del iPhone (Perfil → Exportar todos los datos de salud).",
|
||
"dropLabel": "Suelta export.zip aquí",
|
||
"dropHint": "o haz clic para elegir un archivo",
|
||
"fileInputLabel": "Elegir un archivo export.zip de Apple Health",
|
||
"choose": "Elegir archivo",
|
||
"idempotencyNote": "Volver a subir el mismo archivo lo fusiona; no crea duplicados. Los archivos grandes se procesan en segundo plano.",
|
||
"uploading": "Subiendo…",
|
||
"uploadFailed": "Error al subir. Inténtalo de nuevo.",
|
||
"rateLimited": "Demasiadas subidas. Espera un momento e inténtalo de nuevo.",
|
||
"tooLarge": "El archivo es demasiado grande (límite 1,5 GB).",
|
||
"failed": "La importación falló.",
|
||
"failureInterrupted": "La importación se interrumpió antes de terminar, normalmente por un reinicio del servidor o por falta de memoria. Tus datos están a salvo; vuelve a subir el archivo para reintentarlo.",
|
||
"failureInsufficientMemory": "El límite de memoria del servidor es demasiado bajo para un archivo de este tamaño. Pide a quien administra el servidor que aumente el límite de memoria de Node.js (NODE_OPTIONS=--max-old-space-size) y vuelve a subir el archivo.",
|
||
"rowsImported": "{count} filas importadas hasta ahora",
|
||
"doneSummary": "Listo: {imported} de {read} registros importados, {skipped} registros clínicos omitidos.",
|
||
"doneNothing": "No se importó nada de ese archivo: llegaron 0 de {read} registros.",
|
||
"writtenByHealthLogOne": "Se omitió {count} registro que HealthLog escribió en Apple Health, porque ya está en tus datos.",
|
||
"writtenByHealthLogOther": "Se omitieron {count} registros que HealthLog escribió en Apple Health, porque ya están en tus datos.",
|
||
"writtenByHealthLogFew": "Se omitieron {count} registros que HealthLog escribió en Apple Health, porque ya están en tus datos.",
|
||
"ecgResult": "ECG: {discovered} detectados, {imported} importados, {updated} actualizados, {skipped} omitidos y {failed} fallidos. Los errores de ECG no descartan los registros compatibles importados desde export.xml.",
|
||
"estimateWarning": "Los totales acumulados de {count} día(s) se estimaron a partir de la mayor fuente de la exportación. Las estadísticas nativas de Apple Health siguen siendo la referencia.",
|
||
"phase": {
|
||
"queued": "En cola…",
|
||
"unpacking": "Descomprimiendo el archivo…",
|
||
"parsing": "Leyendo la exportación…",
|
||
"upserting": "Importando registros…"
|
||
},
|
||
"skipUnsupported": "{count} muestras omitidas: tipos de datos que HealthLog no importa.",
|
||
"skipRefused": "{count} muestras no se pudieron escribir (ilegibles, fuera de rango o falló el guardado).",
|
||
"skipBreakdown": "Mostrar desglose ({count} tipos)",
|
||
"skipBreakdownMore": "+ {count} tipos más",
|
||
"cycleSummary": "{samples} muestras de ciclo combinadas en {days} registros diarios.",
|
||
"cycleModuleOff": "{count} muestras de ciclo omitidas: el seguimiento del ciclo está desactivado en esta cuenta.",
|
||
"cycleDaysFailed": "{count} días de ciclo no se pudieron escribir: {reason}"
|
||
},
|
||
"json": {
|
||
"title": "Archivo JSON",
|
||
"description": "Pega JSON o sube un archivo .json con mediciones y entradas de ánimo.",
|
||
"pasteLabel": "Pegar JSON",
|
||
"fileInputLabel": "Elegir un archivo JSON para importar",
|
||
"schemaHint": "Dos arrays: measurements y moodEntries.",
|
||
"docsLink": "Ver el esquema y un ejemplo.",
|
||
"uploadFile": "Subir archivo",
|
||
"downloadExample": "Descargar ejemplo",
|
||
"import": "Importar",
|
||
"invalidJson": "Eso no es JSON válido. Revisa la sintaxis e inténtalo de nuevo.",
|
||
"invalidPayload": "Los datos no coinciden con el esquema de importación.",
|
||
"rateLimited": "Demasiadas importaciones esta hora (límite 5). Inténtalo más tarde.",
|
||
"failed": "La importación falló. Inténtalo de nuevo.",
|
||
"readFailed": "No se pudo leer ese archivo.",
|
||
"resultSummary": "{measurements} mediciones y {moods} entradas de ánimo importadas, {skipped} omitidas.",
|
||
"resultSuccess": "{measurements} mediciones y {moods} entradas de ánimo importadas",
|
||
"resultNothing": "No se importó nada. Se omitieron las {skipped} entradas.",
|
||
"resultEmpty": "Ese archivo no contenía mediciones ni entradas de ánimo."
|
||
},
|
||
"csv": {
|
||
"title": "Archivo CSV",
|
||
"description": "Importa mediciones desde una hoja de cálculo o la exportación de un medidor.",
|
||
"pasteLabel": "Pegar CSV",
|
||
"fileInputLabel": "Elegir un archivo CSV para importar",
|
||
"schemaHint": "Columnas: type, value, unit, measuredAt (con desfase de zona horaria) y opcionales glucoseContext, notes, externalId.",
|
||
"docsLink": "Ver el esquema de columnas y un ejemplo.",
|
||
"uploadFile": "Subir archivo",
|
||
"downloadExample": "Descargar ejemplo",
|
||
"preview": "Vista previa",
|
||
"import": "Importar",
|
||
"empty": "Añade al menos una fila CSV antes de importar.",
|
||
"rateLimited": "Demasiadas importaciones esta hora (límite 5). Inténtalo más tarde.",
|
||
"tooLarge": "Ese archivo es demasiado grande (límite 16 MB).",
|
||
"invalidPayload": "No se pudo analizar el CSV. Revisa la fila de encabezado e inténtalo de nuevo.",
|
||
"failed": "La importación falló. Inténtalo de nuevo.",
|
||
"readFailed": "No se pudo leer ese archivo.",
|
||
"previewSummary": "Vista previa: {inserted} se importarían, {skipped} omitidas.",
|
||
"resultSummary": "{inserted} nuevas importadas y {updated} actualizadas, {skipped} omitidas.",
|
||
"rowError": "Línea {line}: {reason}",
|
||
"resultSuccess": "{inserted} nuevas importadas y {updated} actualizadas",
|
||
"resultNothing": "No se importó nada. Se omitieron las {skipped} filas.",
|
||
"resultEmpty": "Ese archivo tiene encabezado pero ninguna fila de datos.",
|
||
"previewSuccess": "Vista previa: {inserted} se importarían",
|
||
"previewNothing": "Vista previa: no se importaría nada. Se omitirían las {skipped} filas.",
|
||
"skipGroupOne": "{count} fila omitida: {reason}",
|
||
"skipGroupFew": "{count} filas omitidas: {reason}",
|
||
"skipGroupOther": "{count} filas omitidas: {reason}",
|
||
"skipDetails": "Mostrar todas las filas omitidas",
|
||
"reasonUnknownType": "tipo de medición desconocido",
|
||
"reasonInvalidValue": "el valor no es un número",
|
||
"reasonValueOutOfRange": "valor fuera del rango plausible",
|
||
"reasonUnknownUnit": "unidad no reconocida para este tipo",
|
||
"reasonMissingTimezoneOffset": "marca de tiempo sin desfase de zona horaria",
|
||
"reasonInvalidTimestamp": "no se pudo leer la marca de tiempo",
|
||
"reasonImplausibleTimestamp": "la marca de tiempo está en el futuro o es anterior a 1900",
|
||
"reasonUnexpectedGlucoseContext": "contexto de glucosa en una fila que no es de glucosa en sangre",
|
||
"reasonInvalidGlucoseContext": "el contexto de glucosa no es un valor permitido",
|
||
"reasonNotesTooLong": "la nota es demasiado larga",
|
||
"reasonExternalIdTooLong": "el ID externo es demasiado largo",
|
||
"reasonUnstableExternalId": "el ID externo no es estable entre exportaciones",
|
||
"reasonDuplicate": "ya importada",
|
||
"reasonUnknown": "omitida",
|
||
"detail": "Una fila por lectura."
|
||
},
|
||
"doseHistory": {
|
||
"title": "Historial de dosis",
|
||
"description": "Un historial de dosis exportado desde otra aplicación de seguimiento, leído tal cual.",
|
||
"pasteLabel": "Pega la exportación",
|
||
"fileInputLabel": "Elegir un archivo de historial de dosis",
|
||
"uploadFile": "Elegir archivo",
|
||
"preview": "Previsualizar",
|
||
"import": "Importar",
|
||
"empty": "Pega la exportación o elige un archivo primero.",
|
||
"readFailed": "No se pudo leer ese archivo.",
|
||
"rateLimited": "Máximo 5 importaciones por hora. Inténtalo más tarde.",
|
||
"tooLarge": "Ese archivo supera el límite de 16 MB.",
|
||
"inProgress": "Ya hay una importación de historial en curso. Espera a que termine.",
|
||
"workerUnavailable": "El proceso en segundo plano no está disponible, así que no se importó nada.",
|
||
"failed": "La importación falló. No se escribió nada.",
|
||
"columnsHeading": "Qué hace cada columna",
|
||
"jsonOnly": "solo JSON",
|
||
"previewLine": "{rows} filas leídas, {queued} se importarían, {refused} rechazadas",
|
||
"submittedLine": "{rows} filas leídas, {queued} en cola para importar",
|
||
"unmatched": "Ningún medicamento registrado coincide con: {names}",
|
||
"ambiguous": "Coincide con más de un medicamento: {names}",
|
||
"mirrored": "Copiado de otra aplicación, así que no se puede añadir ninguna dosis: {names}",
|
||
"unknownColumns": "Columnas sin regla en el importador, no leídas: {names}",
|
||
"codingsNotRead": "Filas con un valor de Codings no leído: {count}",
|
||
"archivedRowsPresent": "Filas marcadas como pertenecientes a medicamentos archivados: {count}. Esa marca no las omite ni reactiva los medicamentos; el resultado final indica qué se añadió.",
|
||
"verdict": {
|
||
"honoured": "usada",
|
||
"reported": "informada",
|
||
"ignored": "no leída"
|
||
},
|
||
"column": {
|
||
"date": "La hora en que se tomó realmente la dosis. Su desplazamiento UTC se lee tal como está escrito.",
|
||
"scheduledDate": "La franja a la que pertenecía la dosis, separada de la hora en que se tomó. Vacío significa que no pertenecía a ninguna franja.",
|
||
"medication": "Se empareja con un medicamento que ya está en tu registro. Nada se crea a partir del archivo.",
|
||
"nickname": "Se prueba como segundo nombre cuando el primero no coincide con nada.",
|
||
"dosage": "Se registra en la dosis solo cuando difiere de la cantidad prevista.",
|
||
"scheduledDosage": "Se compara con la cantidad real para decidir si esa dosis se desvió. Nunca se guarda por sí sola.",
|
||
"unit": "Se escribe con la cantidad, tal como la escribe el archivo. \"count\" significa múltiplos de la dosis configurada.",
|
||
"status": "\"Taken\" se convierte en una dosis y \"Skipped\" en una omisión deliberada. Cualquier otro valor no registra decisión alguna y la fila se rechaza.",
|
||
"archived": "Se cuenta y se informa. Una dosis que ocurrió no se deshace al archivar el medicamento después.",
|
||
"codings": "El CSV no documenta ninguna codificación para esta columna, así que se deja intacta en vez de adivinarla. Las celdas con contenido se cuentan.",
|
||
"form": "Describe el medicamento, no la dosis.",
|
||
"start": "La fecha en que empezaste el medicamento, no la hora de esta dosis.",
|
||
"end": "La fecha en que dejaste el medicamento, no la hora de esta dosis."
|
||
},
|
||
"fatal": {
|
||
"emptyFile": "Ese archivo no contiene filas.",
|
||
"missingColumns": "A ese archivo le falta una columna que el importador necesita: Date, Medication o Status.",
|
||
"unreadableJson": "Ese archivo no es JSON válido.",
|
||
"jsonNotAnArray": "Ese JSON no contiene ninguna lista de dosis.",
|
||
"jsonNoIntakeTime": "La exportación JSON registra cuándo tocaba una dosis pero no cuándo se tomó, y una hora prevista no se escribirá como si fuera la toma. Exporta el CSV, que lleva ambas.",
|
||
"tooManyRows": "Ese archivo tiene más filas de las que admite una importación. Divídelo e importa las partes."
|
||
},
|
||
"detail": "Un archivo abarca todos los medicamentos que contiene."
|
||
},
|
||
"healthConnect": {
|
||
"title": "Exportación de Health Connect",
|
||
"description": "Importa el archivo ZIP que crea la app Health Connect en Android al exportar tus datos.",
|
||
"choose": "Elegir archivo ZIP",
|
||
"uploading": "Subiendo…",
|
||
"uploadFailed": "La subida ha fallado. Inténtalo de nuevo.",
|
||
"tooLarge": "El archivo supera el tamaño que acepta este servidor.",
|
||
"doneSummary": "{count} valores importados.",
|
||
"failed": "La importación ha fallado: {reason}",
|
||
"phase": {
|
||
"queued": "Esperando para empezar",
|
||
"unpacking": "Descomprimiendo el archivo",
|
||
"parsing": "Leyendo los registros",
|
||
"upserting": "Guardando los valores",
|
||
"done": "Terminado",
|
||
"failed": "Fallido"
|
||
},
|
||
"steps": {
|
||
"export": "En tu teléfono Android, abre Health Connect, ve a Gestionar datos, luego a Exportar e importar, e inicia una exportación.",
|
||
"cloud": "Health Connect solo guarda la exportación en una app de almacenamiento en la nube como Google Drive, Dropbox o Nextcloud, nunca en el propio teléfono. Elige una allí.",
|
||
"upload": "Descarga el archivo ZIP de esa nube a este dispositivo y súbelo aquí."
|
||
},
|
||
"dropLabel": "Suelta aquí el ZIP de Health Connect",
|
||
"dropHint": "o haz clic para elegirlo. Hasta 1 GB.",
|
||
"fileInputLabel": "Archivo ZIP de la exportación de Health Connect",
|
||
"privacyNote": "El archivo se borra del servidor en cuanto termina la importación. Los registros de apps que ya conectas directamente, como Withings o Fitbit, se omiten para que nada llegue dos veces. Subir de nuevo el mismo archivo no cambia nada.",
|
||
"rateLimited": "Demasiadas subidas en poco tiempo. Espera un minuto y vuelve a intentarlo.",
|
||
"busy": "Ya hay una importación en curso para tu cuenta. Espera a que termine.",
|
||
"rowsSoFar": "{count} valores guardados hasta ahora",
|
||
"doneNothing": "La importación terminó, pero no había nada nuevo que añadir.",
|
||
"workouts": "Entrenamientos",
|
||
"leftOutConnected": "Se omitieron {count} registros de apps que ya conectas directamente.",
|
||
"nutrientsModuleOff": "Los totales de agua y nutrientes no se importaron porque el módulo Nutrientes está desactivado.",
|
||
"cycleModuleOff": "Los datos del periodo no se importaron porque el seguimiento del ciclo está desactivado.",
|
||
"failure": {
|
||
"unsupportedVersion": "Esta exportación de Health Connect es demasiado antigua para leerla. Actualiza Health Connect en el teléfono y vuelve a exportar.",
|
||
"notHealthConnect": "Este archivo no es una exportación de Health Connect. Elige el archivo ZIP que guardó Health Connect.",
|
||
"unsafeSchema": "Este archivo no tiene la estructura de una exportación de Health Connect y no se leyó.",
|
||
"tooLarge": "La exportación es mayor de lo que acepta este servidor.",
|
||
"stagingMissing": "El archivo subido ya no estaba en el servidor. Súbelo de nuevo.",
|
||
"interrupted": "Un reinicio del servidor interrumpió la importación. Sube el archivo de nuevo."
|
||
}
|
||
}
|
||
},
|
||
"subtitle": "Exporta tus datos o importa desde una copia de seguridad."
|
||
},
|
||
"about": {
|
||
"title": "Acerca de esta app",
|
||
"subtitle": "Versión, licencia y enlaces del proyecto."
|
||
},
|
||
"sharing": {
|
||
"title": "Compartir",
|
||
"subtitle": "Comparte acceso de solo lectura a tus datos."
|
||
},
|
||
"insights": {
|
||
"subtitle": "Organiza las secciones de tu resumen y el orden de las pestañas."
|
||
},
|
||
"medications": {
|
||
"subtitle": "Gestiona la vista y el orden de tu lista de medicamentos."
|
||
},
|
||
"mood": {
|
||
"subtitle": "Organiza tus etiquetas de ánimo, grupos y orden del selector."
|
||
},
|
||
"labs": {
|
||
"subtitle": "Gestiona la vista, el orden y los biomarcadores."
|
||
},
|
||
"illness": {
|
||
"subtitle": "Gestiona la vista y el orden de los episodios."
|
||
},
|
||
"vorsorge": {
|
||
"subtitle": "Gestiona la vista, el orden y los recordatorios individuales."
|
||
},
|
||
"modules": {
|
||
"title": "Módulos",
|
||
"saved": "Guardado",
|
||
"error": "No se pudo guardar. Inténtalo de nuevo.",
|
||
"toggleable": {
|
||
"title": "Qué registras",
|
||
"description": "Los módulos desactivados desaparecen de la navegación, los paneles y los análisis; tus datos se conservan."
|
||
},
|
||
"manageIn": "Gestionar en {section}",
|
||
"operatorDisabled": "Desactivado en todo el servidor",
|
||
"subtitle": "Elige qué áreas de seguimiento muestra HealthLog en la app.",
|
||
"backToHub": "Volver a Módulos",
|
||
"openModuleSettings": "Ajustes del módulo",
|
||
"pages": {
|
||
"medications": {
|
||
"title": "Medicamentos",
|
||
"description": "Zonas de inyección que la rotación omite."
|
||
},
|
||
"mood": {
|
||
"title": "Etiquetas de ánimo",
|
||
"description": "Grupos, tus propias etiquetas y las archivadas."
|
||
},
|
||
"labs": {
|
||
"title": "Laboratorio",
|
||
"description": "Biomarcadores y reconocimiento de texto en el dispositivo para informes de laboratorio."
|
||
},
|
||
"arrangementTitle": "Orden y vista",
|
||
"arrangementDescription": "Cómo se ordena y muestra esta lista se ajusta en Disposición.",
|
||
"openArrangement": "Abrir en Disposición",
|
||
"moduleSettingsTitle": "Ajustes del módulo",
|
||
"moduleSettingsDescription": "Todo lo demás está en la página del módulo, en Módulos."
|
||
}
|
||
},
|
||
"gesundheitsakte": {
|
||
"title": "Historial médico",
|
||
"subtitle": "Exporta un historial de salud completo, listo para el médico."
|
||
},
|
||
"coach": {
|
||
"title": "Coach",
|
||
"subtitle": "Ajusta el Coach, sus avisos proactivos y su memoria."
|
||
},
|
||
"security": {
|
||
"title": "Seguridad",
|
||
"subtitle": "Autenticación de dos factores, códigos de recuperación y claves de acceso."
|
||
},
|
||
"privacy": {
|
||
"title": "Datos y privacidad",
|
||
"subtitle": "Tus datos, su retención, el cifrado y la seguridad de la cuenta en un solo lugar."
|
||
},
|
||
"mcp": {
|
||
"title": "Conector MCP",
|
||
"subtitle": "Conecta un asistente externo a tus propios datos de salud."
|
||
},
|
||
"anamnesis": {
|
||
"title": "Antecedentes médicos",
|
||
"subtitle": "Tus antecedentes, tu estilo de vida, tus datos de emergencia y lo que la IA puede leer."
|
||
},
|
||
"environment": {
|
||
"title": "Ubicación y clima",
|
||
"subtitle": "Contexto de tiempo, luz diurna y ubicación.",
|
||
"disabledHint": "Activa el módulo Entorno para definir una ubicación principal e incorporar el tiempo y las horas de luz diarias.",
|
||
"searchPlaceholder": "Buscar una ciudad",
|
||
"search": "Buscar",
|
||
"searchError": "No se pudo buscar ese lugar.",
|
||
"use": "Usar",
|
||
"select": "Seleccionar",
|
||
"saveError": "No se pudo guardar el cambio.",
|
||
"homeSaved": "Ubicación principal guardada",
|
||
"travelAdded": "Periodo de ubicación añadido.",
|
||
"travelRemoved": "Periodo de ubicación eliminado.",
|
||
"backfillQueued": "Relleno programado.",
|
||
"backfillError": "No se pudo iniciar el relleno.",
|
||
"startDate": "Fecha de inicio",
|
||
"endDate": "Fecha de fin",
|
||
"storedDays": "{count} días de tiempo almacenados.",
|
||
"home": {
|
||
"title": "Ubicación principal",
|
||
"description": "Una ubicación aproximada a nivel de ciudad, nunca un rastro preciso. El tiempo y la luz diurna se obtienen para este lugar en los días sin un periodo de ubicación, desde la fecha en que lo configuras.",
|
||
"current": "Actual: {label}",
|
||
"none": "Aún no hay ubicación principal.",
|
||
"since": "Tiempo registrado desde {date}. Los días anteriores quedan vacíos hasta que añadas un periodo de ubicación."
|
||
},
|
||
"travel": {
|
||
"title": "Periodos de ubicación",
|
||
"description": "Añade un lugar y un rango de fechas: un viaje o un tramo de tu historial anterior. El periodo anula tu hogar en los días que cubre, para que el tiempo coincida con donde estuviste realmente. Así corriges el pasado.",
|
||
"none": "Aún no hay periodos de ubicación.",
|
||
"add": "Añadir {label}",
|
||
"remove": "Eliminar periodo de ubicación",
|
||
"removeConfirmTitle": "¿Quitar este viaje?",
|
||
"removeConfirmBody": "Las mediciones de ese periodo permanecen; solo desaparece la entrada del viaje.",
|
||
"range": "Del {start} al {end}",
|
||
"suggestionsIntro": "Dawarich encontró días en el extranjero que aún no cubre ningún periodo.",
|
||
"suggestionUse": "Usar",
|
||
"suggestionDismiss": "Descartar sugerencia"
|
||
},
|
||
"backfill": {
|
||
"title": "Rellenar días pasados",
|
||
"description": "Obtén y guarda el tiempo de un rango de fechas pasado para que los días antiguos entren en las correlaciones. El inicio toma por defecto la fecha de vigencia de tu hogar; para llegar más atrás, añade primero un periodo de ubicación para ese rango.",
|
||
"run": "Rellenar"
|
||
},
|
||
"noResults": "No se encontraron lugares coincidentes.",
|
||
"fetchFailedOne": "La última actualización meteorológica en segundo plano falló ({when}).",
|
||
"fetchFailedFew": "Las últimas {count} actualizaciones meteorológicas en segundo plano fallaron, la más reciente {when}.",
|
||
"fetchFailedOther": "Las últimas {count} actualizaciones meteorológicas en segundo plano fallaron, la más reciente {when}.",
|
||
"airQuality": {
|
||
"title": "Calidad del aire y polen",
|
||
"description": "Calidad del aire, polen y UV diarios para tu ubicación, del modelo CAMS a través de Open-Meteo.",
|
||
"toggle": "Incluir calidad del aire y polen",
|
||
"operatorDisabled": "La calidad del aire está desactivada en este servidor.",
|
||
"coverage": "{count} días con datos de calidad del aire",
|
||
"pollenEuropeOnly": "Los datos de polen solo cubren Europa.",
|
||
"historyProgress": "Completando la calidad del aire: {done} de {total} días",
|
||
"historyComplete": "La calidad del aire está completada para todos los días anteriores con registros que cubre la fuente ({total} días). Los días más antiguos quedan vacíos.",
|
||
"attribution": "Fuentes de datos y licencias",
|
||
"saveError": "No se pudo guardar el ajuste.",
|
||
"latest": "Día más reciente ({date})",
|
||
"modelNote": "Valores exteriores modelados para tu zona, no tu exposición personal."
|
||
}
|
||
},
|
||
"score": {
|
||
"title": "Puntuación de salud",
|
||
"subtitle": "Elige qué pilares cuentan para tu puntuación.",
|
||
"card": {
|
||
"title": "Qué cuenta para tu puntuación",
|
||
"description": "Cada pilar que registras cuenta, salvo que digas lo contrario aquí."
|
||
},
|
||
"threeAxes": "Registrar, mostrar y contar son tres cosas distintas. Esta página cambia solo la última. Un pilar que desactives aquí se sigue registrando y se sigue viendo en el resto de HealthLog, simplemente deja de mover el número.",
|
||
"recommendation": "Tres ámbitos de salud son la recomendación, no un requisito: cualquier selección con al menos un pilar se guarda. Una puntuación más estrecha se calcula igual y dice en la tarjeta en cuántos ámbitos se basa.",
|
||
"axis": {
|
||
"countsFor": "Contar {pillar} para la puntuación"
|
||
},
|
||
"state": {
|
||
"counting": "Cuenta para tu puntuación",
|
||
"waiting": "Seleccionado, esperando datos",
|
||
"crisis": "En lugar de una puntuación se muestra orientación de seguridad. Tu selección está bien.",
|
||
"readFailed": "Este pilar no se pudo leer en el último cálculo."
|
||
},
|
||
"presets": {
|
||
"label": "Punto de partida",
|
||
"all": "Todos los pilares",
|
||
"current": "Tu selección guardada"
|
||
},
|
||
"save": "Guardar",
|
||
"saved": "Guardado",
|
||
"error": "No se pudo guardar. Inténtalo de nuevo.",
|
||
"loadFailed": "No se pudo cargar tu selección.",
|
||
"eligibilityFailed": "No se pudo comprobar qué pilares tienen datos ahora mismo. Los interruptores de abajo siguen funcionando.",
|
||
"omitted": "{count} pilares no aparecen porque su seguimiento está desactivado. Vuelve a activar un módulo y su pilar regresa.",
|
||
"omittedLink": "Abrir módulos",
|
||
"refusal": {
|
||
"empty": "Una puntuación de salud necesita al menos un ámbito de salud que puntuar. Deja al menos uno seleccionado: la puntuación dirá en qué ámbitos se basa."
|
||
},
|
||
"notice": {
|
||
"upgrade": {
|
||
"title": "Ahora decides tú qué cuenta",
|
||
"body": "Qué pilares contaban para tu Health Score dependía antes de los módulos que tuvieras activados. Ahora es una decisión aparte, y aquí es donde la tomas. Tu número no se movió al llegar este cambio: sigue contando exactamente lo que contaba antes."
|
||
},
|
||
"changed": {
|
||
"title": "Has cambiado qué cuenta",
|
||
"body": "Desde el {date} tu puntuación se calcula con otro conjunto de pilares. Los días anteriores salen del conjunto antiguo, así que no se comparan entre sí y la variación semanal queda en pausa hasta que la ventana de comparación deje atrás el cambio. El historial de cada pilar sigue sin interrupción.",
|
||
"bodyUndated": "Tu puntuación se calcula con un conjunto de pilares distinto al anterior. Los días previos salen del conjunto antiguo, así que no se comparan entre sí y la variación semanal queda en pausa hasta que la ventana de comparación deje atrás el cambio. El historial de cada pilar sigue sin interrupción."
|
||
},
|
||
"composition": {
|
||
"title": "Lo que cuenta ha cambiado por su cuenta",
|
||
"left": "Ya no cuenta para tu puntuación: {pillars}. El número se movió por eso, no porque haya cambiado tu salud.",
|
||
"joined": "Ahora cuenta para tu puntuación: {pillars}."
|
||
},
|
||
"dismiss": "Entendido",
|
||
"dismissError": "No se pudo guardar. Inténtalo de nuevo."
|
||
}
|
||
},
|
||
"access": {
|
||
"title": "Acceso compartido",
|
||
"subtitle": "Quién puede abrir tu historial de salud y cuál puedes abrir tú."
|
||
}
|
||
},
|
||
"profile": "Perfil",
|
||
"language": "Idioma",
|
||
"languageDescription": "Elige el idioma de visualización de la aplicación.",
|
||
"timeFormat": {
|
||
"title": "Formato horario",
|
||
"description": "Determina si las horas se muestran en formato de 24 horas o de 12 horas (AM/PM).",
|
||
"auto": "Automático (idioma)",
|
||
"h24": "24 horas",
|
||
"h12": "12 horas (AM/PM)",
|
||
"saved": "Formato horario guardado",
|
||
"saveError": "No se pudo guardar el formato horario."
|
||
},
|
||
"dateFormat": {
|
||
"title": "Formato de fecha",
|
||
"description": "Determina el orden de día, mes y año al mostrar las fechas.",
|
||
"auto": "Automático (idioma)",
|
||
"dmy": "DD.MM.AAAA",
|
||
"mdy": "MM/DD/AAAA",
|
||
"ymd": "AAAA-MM-DD",
|
||
"saved": "Formato de fecha guardado",
|
||
"saveError": "No se pudo guardar el formato de fecha."
|
||
},
|
||
"username": "Nombre de usuario",
|
||
"height": "Altura (cm)",
|
||
"heightFtIn": "Altura (ft, in)",
|
||
"dateOfBirth": "Fecha de nacimiento",
|
||
"dateOfBirthHint": "Se usa para el cálculo automático de los objetivos de presión arterial.",
|
||
"gender": "Sexo",
|
||
"genderNone": "Sin especificar",
|
||
"genderMale": "Hombre",
|
||
"genderFemale": "Mujer",
|
||
"genderHint": "Se usa para valores objetivo específicos por sexo.",
|
||
"timezone": "Zona horaria",
|
||
"timezoneHint": "Se usa para las etiquetas de los ejes de los gráficos, las horas de recordatorio, las marcas de tiempo de exportación y el contexto del Coach. Los datos almacenados no cambian.",
|
||
"timezoneInvalid": "No es una zona horaria IANA válida.",
|
||
"profileSaved": "Perfil guardado",
|
||
"profilePartiallySaved": "Perfil guardado, pero no se pudo actualizar {field}.",
|
||
"profileNothingSaved": "No se guardó nada. Corrige {field} e inténtalo de nuevo.",
|
||
"profileRejection": {
|
||
"tooBig": "El valor está por encima del rango que acepta este campo.",
|
||
"tooSmall": "El valor está por debajo del rango que acepta este campo.",
|
||
"invalidValue": "Esa no es una de las respuestas que acepta este campo.",
|
||
"invalidFormat": "Eso no está escrito en un formato que este campo pueda leer.",
|
||
"invalidType": "El valor no llegó en un formato que este campo pueda guardar.",
|
||
"rateLimited": "Se ha cambiado demasiadas veces. Espera un poco e inténtalo de nuevo.",
|
||
"other": "No se aceptó este valor. Revísalo e inténtalo de nuevo.",
|
||
"reproofRequired": "Introduce tu contraseña actual para cambiar la dirección de correo.",
|
||
"reproofFailed": "La contraseña no es correcta, así que la dirección de correo no se ha cambiado.",
|
||
"secondFactorRequired": "Confirma con tu segundo factor o una clave de acceso para cambiar el correo electrónico."
|
||
},
|
||
"avatar": {
|
||
"title": "Foto de perfil",
|
||
"description": "Sube una foto que se almacena en tu propio servidor. Aparece en toda la aplicación en lugar de un servicio de avatares externo.",
|
||
"upload": "Subir foto",
|
||
"replace": "Reemplazar foto",
|
||
"remove": "Quitar",
|
||
"removeTitle": "¿Eliminar la foto de perfil?",
|
||
"removeBody": "La imagen se elimina de tu servidor y tus iniciales ocupan su lugar. Necesitarás el archivo original para volver a subirla.",
|
||
"removeConfirm": "Eliminar foto",
|
||
"hint": "JPEG, PNG o WebP. Hasta 2 MB y 2048×2048 píxeles.",
|
||
"uploaded": "Foto de perfil actualizada",
|
||
"removed": "Foto de perfil eliminada",
|
||
"invalidType": "Tipo de imagen no admitido. Usa JPEG, PNG o WebP.",
|
||
"tooLarge": "La imagen supera el límite de 2 MB.",
|
||
"error": "No se pudo actualizar la foto de perfil. Inténtalo de nuevo."
|
||
},
|
||
"changePassword": "Cambiar contraseña",
|
||
"changePasswordDescription": "Sustituye tu contraseña actual por una nueva.",
|
||
"currentPassword": "Contraseña actual",
|
||
"newPassword": "Nueva contraseña",
|
||
"confirmNewPassword": "Confirmar nueva contraseña",
|
||
"passwordMismatch": "Las nuevas contraseñas no coinciden",
|
||
"passwordUpdated": "Contraseña actualizada correctamente",
|
||
"passkeys": "Passkeys",
|
||
"passkeysDescription": "Las claves de acceso permiten iniciar sesión de forma segura sin contraseña.",
|
||
"passkeyReauth": {
|
||
"title": "Confirma tu identidad",
|
||
"description": "Verifica un método de inicio de sesión existente antes de añadir una nueva clave de acceso.",
|
||
"methodLabel": "Método de verificación",
|
||
"methods": {
|
||
"password": "Contraseña",
|
||
"totp": "Código del autenticador",
|
||
"passkey": "Clave de acceso",
|
||
"webauthn": "Llave de seguridad"
|
||
},
|
||
"currentPassword": "Contraseña actual",
|
||
"authenticatorCode": "Código del autenticador",
|
||
"authenticatorPlaceholder": "Código de seis dígitos del autenticador",
|
||
"verifyAndAdd": "Verificar y añadir",
|
||
"factorDescription": "Verifica un método de inicio de sesión existente antes de añadir un segundo factor.",
|
||
"verifyAndContinue": "Verificar y continuar"
|
||
},
|
||
"passkeyName": "Nombre",
|
||
"noPasskeys": "No hay claves de acceso registradas.",
|
||
"addPasskey": "Añadir clave de acceso",
|
||
"passkeyRegistrationFailed": "Falló el registro de la clave de acceso",
|
||
"passkeyRegistrationCancelled": "Registro de la clave de acceso cancelado",
|
||
"passkeyNotSupported": "Tu navegador o dispositivo aún no admite claves de acceso. Prueba con otro navegador o dispositivo.",
|
||
"passkeyAlreadyRegistered": "Este dispositivo ya está registrado como clave de acceso de tu cuenta.",
|
||
"passkeySecurityBlocked": "Tu navegador bloqueó la solicitud de clave de acceso por motivos de seguridad. Asegúrate de estar en un origen HTTPS de confianza e inténtalo de nuevo.",
|
||
"passkeyTimeout": "La solicitud de la clave de acceso expiró. Inténtalo de nuevo.",
|
||
"passkeyUnknownError": "Falló el registro de la clave de acceso: {message}",
|
||
"deletePasskey": "¿Eliminar clave de acceso?",
|
||
"deletePasskeyDescription": "La clave de acceso se eliminará de forma permanente.",
|
||
"singleDevice": "Un solo dispositivo",
|
||
"multiDevice": "Varios dispositivos",
|
||
"backedUp": "con copia de seguridad",
|
||
"telegram": "Telegram Notifications",
|
||
"telegramDescription": "Get reminders for missed medication intake via Telegram.",
|
||
"botToken": "Token del bot",
|
||
"chatId": "ID del chat",
|
||
"enableNotifications": "Activar notificaciones",
|
||
"telegramStep1": "Crea un bot con @BotFather en Telegram y copia el token.",
|
||
"telegramStep2": "Envía /start a tu bot para activar el chat.",
|
||
"telegramStep3": "Obtén tu ID del chat con @userinfobot o la API del bot.",
|
||
"ntfy": "ntfy",
|
||
"ntfyDescription": "Notificaciones a través de ntfy (autoalojado o ntfy.sh).",
|
||
"ntfyEnable": "Activar ntfy",
|
||
"ntfyServer": "URL del servidor",
|
||
"ntfyTopic": "Topic",
|
||
"ntfyAuthToken": "Token de autenticación (opcional)",
|
||
"ntfyAuthTokenHint": "Solo necesario para temas privados con control de acceso.",
|
||
"webhook": "Webhook",
|
||
"webhookDescription": "Envía notificaciones por POST a una URL: Discord, Slack, Gotify, Home Assistant, n8n o un relé que acepte JSON.",
|
||
"webhookEnable": "Activar webhook",
|
||
"webhookUrl": "URL del webhook",
|
||
"webhookUrlHint": "La URL completa para el POST. Una dirección de una red privada necesita la aprobación del administrador del servidor.",
|
||
"webhookHeaderName": "Nombre de cabecera (opcional)",
|
||
"webhookHeaderValue": "Valor de cabecera (opcional)",
|
||
"webhookFormat": "Formato del mensaje",
|
||
"webhookFormatGeneric": "JSON genérico",
|
||
"webhookFormatGenericHint": "Pega una URL de webhook de Discord o Slack tal cual. Home Assistant y n8n leen los campos title, message, eventType y priority.",
|
||
"webhookFormatGotify": "Gotify",
|
||
"webhookFormatGotifyHint": "Usa la URL que termina en /message y pon el token de la aplicación en la cabecera X-Gotify-Key.",
|
||
"email": "Correo electrónico",
|
||
"emailDescription": "Recibe alertas y recordatorios por correo electrónico.",
|
||
"emailEnable": "Activar correo electrónico",
|
||
"emailRecipient": "Dirección del destinatario",
|
||
"webPush": "Push del navegador",
|
||
"webPushDescription": "Recibe notificaciones directamente en tu navegador, incluso cuando HealthLog no está abierto.",
|
||
"webPushNotSupported": "Tu navegador no admite notificaciones push.",
|
||
"webPushDenied": "Las notificaciones push están bloqueadas. Permítelas en los ajustes de tu navegador.",
|
||
"webPushNotConfigured": "Web Push no está configurado en el servidor.",
|
||
"webPushSubscribe": "Activar push",
|
||
"webPushUnsubscribe": "Desactivar push",
|
||
"webPushSubscribed": "¡Notificaciones push activadas!",
|
||
"webPushUnsubscribed": "Notificaciones push desactivadas.",
|
||
"webPushSubscribeFailed": "Falló la activación",
|
||
"codexConnected": "¡ChatGPT conectado correctamente! Insights ya está activo.",
|
||
"codexDisconnected": "Conexión con ChatGPT eliminada.",
|
||
"codexConnectionFailed": "Falló la conexión con ChatGPT. Inténtalo de nuevo.",
|
||
"rawData": "Enviar historial detallado",
|
||
"rawDataOnDescription": "Además de los resúmenes, el proveedor recibe promedios de tus mediciones: por día de los últimos 90 días, por semana del año anterior y por mes hasta 5 años atrás, cada uno con su fecha y número de mediciones. No se envían mediciones sueltas, tu nombre ni tu correo electrónico.",
|
||
"rawDataOffDescription": "Solo se envían resúmenes: el último valor, promedios, tendencias, mínimo y máximo en ventanas fijas. Ninguna serie de mediciones.",
|
||
"rawDataWarning": "Historial detallado activado: cada análisis envía además promedios diarios de los últimos 90 días, promedios semanales del año anterior y promedios mensuales hasta 5 años atrás.",
|
||
"regenerateInsights": "Regenerar informes",
|
||
"regenerateSuccess": "Informes regenerados correctamente",
|
||
"regenerateRateLimit": "Espera un momento: has alcanzado el límite por hora de análisis.",
|
||
"lastGeneratedAt": "Generado por última vez",
|
||
"ai": {
|
||
"chatgptConnectedBadge": "ChatGPT conectado",
|
||
"adminAiActiveBadge": "Proveedor de administrador activo",
|
||
"connectionExpiredBadge": "Conexión caducada",
|
||
"connectedSince": "Conectado desde {when}.",
|
||
"deviceCodeHeading": "Termina de conectar en chatgpt.com",
|
||
"deviceCodeStep1": "Abre este enlace en cualquier dispositivo:",
|
||
"deviceCodeStep2": "Introduce este código de un solo uso:",
|
||
"deviceCodeStep3": "Aprueba la conexión. Esta página se actualiza automáticamente.",
|
||
"deviceCodeCopy": "Copiar",
|
||
"deviceCodeWaiting": "Esperando aprobación…",
|
||
"deviceCodeCancel": "Cancelar",
|
||
"oauthNotConfigured": "El OAuth de ChatGPT no está configurado en esta instancia. Usa tu propia clave de API a continuación.",
|
||
"modelLabel": "Modelo",
|
||
"modelOptionDefault": "— Predeterminado —",
|
||
"modelOptionCustom": "Personalizado…",
|
||
"customModelLabel": "Nombre del modelo personalizado",
|
||
"anthropicKeyLabel": "Clave de API de Anthropic",
|
||
"baseUrlLabel": "Base URL",
|
||
"localKeyLabel": "Clave de API (opcional)",
|
||
"localDescription": "Aquí funciona cualquier endpoint compatible con OpenAI: un modelo local (Ollama, LM Studio) o una pasarela como LiteLLM, OpenRouter o vLLM. La URL base termina en /v1; la clave de API es opcional.",
|
||
"savedPreview": "(guardada {preview})",
|
||
"savedShort": "(guardada)",
|
||
"saveCta": "Guardar",
|
||
"saved": "Guardado",
|
||
"errorGeneric": "Error",
|
||
"providerChain": {
|
||
"types": {
|
||
"codex": "ChatGPT (Codex)",
|
||
"openai": "OpenAI (tu clave)",
|
||
"anthropic": "Anthropic (Claude)",
|
||
"local": "Modelo local",
|
||
"openai-compatible": "Pasarela compatible con OpenAI",
|
||
"admin-openai": "OpenAI de administrador"
|
||
},
|
||
"title": "Cadena de respaldo",
|
||
"description": "Si el proveedor activo falla, HealthLog prueba el siguiente activado en este orden.",
|
||
"moveUp": "Subir",
|
||
"moveDown": "Bajar",
|
||
"removeFromChain": "Quitar de la cadena",
|
||
"addProvider": "Añadir proveedor",
|
||
"addNoneAvailable": "Todos los proveedores ya están en la cadena",
|
||
"saveOrder": "Guardar el orden de la cadena",
|
||
"saved": "Cadena guardada",
|
||
"saveFailed": "Falló el guardado de la cadena",
|
||
"resetDefaults": "Restablecer",
|
||
"resetConfirmTitle": "¿Restablecer la cadena a los valores predeterminados?",
|
||
"resetConfirmBody": "La cadena vuelve a Codex → OpenAI → Anthropic → Local → OpenAI de administrador. Tus credenciales guardadas no se modifican."
|
||
},
|
||
"activeProviderHeading": "Proveedor activo",
|
||
"activeProviderLabel": "Configurar un proveedor",
|
||
"providerSelect": {
|
||
"codex": "Cuenta de ChatGPT (Codex)",
|
||
"openai": "OpenAI (tu clave de API)",
|
||
"anthropic": "Anthropic (Claude)",
|
||
"local": "Modelo local (compatible con OpenAI)",
|
||
"openai-compatible": "Pasarela compatible con OpenAI",
|
||
"admin-openai": "OpenAI proporcionado por el administrador"
|
||
},
|
||
"compat": {
|
||
"description": "Un proveedor de pleno derecho para cualquier endpoint que hable la API /v1/chat/completions de OpenAI: LiteLLM, OpenRouter, vLLM u otra pasarela. La URL base termina en /v1, la clave de API es opcional y el modelo es el que enrute tu pasarela. Tu clave de OpenAI nunca llega a este endpoint: este proveedor tiene la suya.",
|
||
"keyLabel": "Clave de API (opcional)",
|
||
"modelHint": "El nombre de modelo que espera tu pasarela. Si lo dejas vacío, se usa el modelo guardado para tus otros proveedores; si tampoco hay uno, este proveedor se omite."
|
||
},
|
||
"openai": {
|
||
"modelSelect": "Modelo",
|
||
"modelOptionCustom": "Slug personalizado…",
|
||
"modelCustomLabel": "Slug del modelo personalizado",
|
||
"modelCustomPlaceholder": "gpt-5",
|
||
"baseUrlLabel": "URL base (avanzado)",
|
||
"baseUrlPlaceholder": "https://api.openai.com/v1",
|
||
"baseUrlHelp": "Sobrescribe solo cuando uses una pasarela compatible con OpenAI. Déjalo en blanco para OpenAI directamente.",
|
||
"showAdvanced": "Mostrar opciones avanzadas",
|
||
"hideAdvanced": "Ocultar opciones avanzadas",
|
||
"apiKey": "Clave de API",
|
||
"apiKeyPlaceholder": "sk-…"
|
||
},
|
||
"codex": {
|
||
"statusConnected": "Conectado",
|
||
"statusDisconnected": "No conectado",
|
||
"statusExpired": "Conexión caducada",
|
||
"connectButton": "Conectar con ChatGPT",
|
||
"disconnectButton": "Desconectar",
|
||
"disconnectTitle": "¿Desconectar ChatGPT?",
|
||
"disconnectBody": "Se descarta el inicio de sesión guardado junto con el texto de tus análisis en caché. Volver a conectar exige repetir el flujo de código de dispositivo.",
|
||
"disconnectConfirm": "Desconectar",
|
||
"modelSlugLabel": "Slug del modelo",
|
||
"modelSlugBody": "Codex usa el modelo al que enruta tu suscripción de ChatGPT. La variable de entorno CODEX_MODEL permite al operador sobrescribirlo en la instancia.",
|
||
"lastInsight": "Último análisis: {when}"
|
||
},
|
||
"adminOpenai": {
|
||
"title": "OpenAI de administrador",
|
||
"body": "Clave de OpenAI proporcionada por el operador, usada como último recurso sin proveedor personal. No hay nada que configurar aquí.",
|
||
"notConfigured": "El operador no ha configurado una clave de OpenAI compartida en esta instancia."
|
||
},
|
||
"testProvider": "Probar el proveedor activo",
|
||
"testSuccess": "OK: {provider} ({model})",
|
||
"testFailedShort": "Prueba fallida: {message}",
|
||
"testUnexpectedResponse": "Falló la conexión con el proveedor de IA: respuesta inesperada del servidor.",
|
||
"testReasonCredentials": "El proveedor rechazó las credenciales. Vuelve a autenticarte en los ajustes de IA.",
|
||
"testReasonRateLimited": "El proveedor limitó la solicitud. Inténtalo de nuevo en breve.",
|
||
"testReasonServerError": "El proveedor de IA devolvió un error del servidor.",
|
||
"testReasonBadRequest": "El proveedor rechazó la solicitud (HTTP {status}): el endpoint respondió, así que el problema está en el formato de la solicitud o en el nombre del modelo, no en la conexión.",
|
||
"testReasonUnreachable": "No se pudo contactar con el proveedor de IA.",
|
||
"coachMemory": {
|
||
"title": "Lo que el Coach recuerda",
|
||
"description": "Datos duraderos que le has contado al Coach.",
|
||
"empty": "El Coach aún no ha guardado ningún dato. A medida que conversas, recuerda detalles duraderos que compartes: tus objetivos, afecciones y preferencias, y puedes borrarlos aquí cuando quieras.",
|
||
"learnedPrefix": "aprendido {when}",
|
||
"categoryPreference": "Preferencias",
|
||
"categoryCondition": "Afecciones",
|
||
"categoryGoal": "Objetivos",
|
||
"categoryConstraint": "Restricciones",
|
||
"categoryContext": "Contexto",
|
||
"forgetAria": "Olvidar este dato",
|
||
"forgetTitle": "¿Olvidar este dato?",
|
||
"forgetBody": "El Coach dejará de usarlo a partir del próximo mensaje. Un dato olvidado no se puede recuperar.",
|
||
"forgetConfirm": "Olvidar",
|
||
"forgetAll": "Olvidar todo",
|
||
"forgetAllConfirmTitle": "¿Olvidar todo lo que recuerda el Coach?",
|
||
"forgetAllConfirmBody": "Esto elimina todos los datos guardados. El Coach empezará de cero la próxima vez que converses. No se puede deshacer.",
|
||
"forgetAllConfirmAction": "Olvidar todo",
|
||
"cancel": "Cancelar",
|
||
"summaryNote": "El Coach también puede mantener un breve resumen continuo de cada conversación. No hay un control individual para él: eliminar una conversación elimina su resumen.",
|
||
"loadError": "No se pudo cargar lo que recuerda el Coach.",
|
||
"forgotToast": "Dato olvidado.",
|
||
"forgotError": "No se pudo olvidar ese dato. Inténtalo de nuevo.",
|
||
"clearedToast": "Se olvidaron {count} datos guardados.",
|
||
"clearError": "No se pudieron borrar los datos guardados. Inténtalo de nuevo.",
|
||
"detail": "Los usa para que sus respuestas sigan siendo relevantes. Elimina lo que prefieras que olvide.",
|
||
"categoryMedication": "Medicamentos"
|
||
},
|
||
"coachReminders": {
|
||
"title": "Tus recordatorios",
|
||
"description": "Cosas que le pediste al Coach que retomara más tarde.",
|
||
"empty": "Aún no hay recordatorios. Pídele al Coach que te recuerde algo y aparecerá aquí.",
|
||
"loadError": "No se pudieron cargar tus recordatorios.",
|
||
"dueHeading": "Vencen ahora",
|
||
"allHeading": "Guardados",
|
||
"duePrefix": "vence {when}",
|
||
"confirm": "Conservar",
|
||
"markDone": "Hecho",
|
||
"dismiss": "Descartar",
|
||
"deleteAria": "Eliminar este recordatorio",
|
||
"note": "Los recordatorios se guardan cifrados. Elimina uno cuando quieras y desaparece de lo que el Coach puede ver.",
|
||
"status": {
|
||
"proposed": "Sugerido",
|
||
"active": "Guardado",
|
||
"due": "Vencido",
|
||
"surfaced": "Mostrado",
|
||
"done": "Hecho",
|
||
"dismissed": "Descartado"
|
||
},
|
||
"deleteConfirmTitle": "¿Eliminar este recordatorio?",
|
||
"deleteConfirmBody": "Deja de aparecer. Lo que ya has registrado no cambia.",
|
||
"deleteConfirmAction": "Eliminar",
|
||
"detail": "Las que vencen aparecen aquí y en el Coach.",
|
||
"readOnlyNote": "El Coach no está disponible ahora mismo, pero aún puedes leer y eliminar tus recordatorios."
|
||
},
|
||
"aboutMe": {
|
||
"title": "Sobre mí",
|
||
"description": "Contexto personal que el Coach y el informe diario leen junto con tus datos.",
|
||
"placeholder": "P. ej. trabajo por turnos, dieta vegetariana, lesión de rodilla, entrenamiento para una media maratón…",
|
||
"charCount": "{used} / {max} caracteres",
|
||
"clear": "Vaciar",
|
||
"clearTitle": "¿Vaciar la nota «Sobre mí»?",
|
||
"clearBody": "Solo se elimina el texto libre. Tus alergias e intolerancias permanecen tal cual.",
|
||
"clearConfirm": "Vaciar nota",
|
||
"save": "Guardar",
|
||
"savedToast": "Nota «Sobre mí» guardada",
|
||
"clearedToast": "Nota «Sobre mí» eliminada.",
|
||
"saveError": "No se pudo guardar. Inténtalo de nuevo.",
|
||
"loadError": "No se pudo cargar la nota.",
|
||
"hint": "Se envía al Coach y al informe diario como contexto adicional. Déjalo vacío para no enviar nada.",
|
||
"profileHint": "La edad y el género provienen de tu perfil y se incluyen automáticamente.",
|
||
"freeTextLabel": "Sobre mí (texto libre)",
|
||
"conditionsPlaceholder": "P. ej. hipertensión, diabetes tipo 2…",
|
||
"allergiesPlaceholder": "P. ej. intolerancia a la lactosa, alergia a la penicilina…",
|
||
"focusPlaceholder": "P. ej. vigila mi tensión arterial, motívame a moverme más…",
|
||
"questionsTitle": "El Coach tiene preguntas",
|
||
"questionsOpenCoach": "Responderlas en el Coach"
|
||
},
|
||
"responseTimeoutHeading": "Tiempo de espera de la respuesta",
|
||
"responseTimeoutBody": "Cuánto esperar a que responda la IA antes de cancelar. Aumenta el valor para un modelo local o autoalojado que necesita tiempo para cargarse en la primera solicitud. Si lo dejas vacío, una respuesta puede tardar {seconds} s; el resumen diario admite hasta {briefingSeconds} s.",
|
||
"responseTimeoutLabel": "Tiempo de espera de la respuesta (segundos)",
|
||
"responseTimeoutPlaceholder": "Predeterminado ({seconds} s)",
|
||
"responseTimeoutInvalid": "Introduce un número entre 10 y 600 segundos.",
|
||
"autoRead": {
|
||
"title": "Leer documentos automáticamente con IA",
|
||
"subLabel": "Los documentos son leídos e indexados por tu proveedor de IA configurado, sin confirmar cada documento.",
|
||
"honesty": "Cuando está activado, cada documento que subes se envía a tu proveedor de IA configurado para leerlo, describirlo e indexarlo para la búsqueda, sin confirmación por documento. Activarlo también actúa de forma retroactiva: los documentos que ya has subido y que aún no tienen resumen también se envían, hasta 200 cada vez que lo activas. Esto ocurre en el servidor y el contenido del documento sale de esta máquina hacia ese proveedor. Si tu proveedor configurado es una conexión de suscripción (una cuenta de IA con sesión iniciada en lugar de una clave de API), se aplican sus propios ajustes de datos: los proveedores de suscripción pueden usar el contenido para mejorar sus modelos, y ningún acuerdo de tratamiento de datos lo cubre. Los documentos leídos por un modelo local autoalojado nunca salen de tu servidor. Desactivado de forma predeterminada; actívalo solo si aceptas este compromiso para tus documentos.",
|
||
"confirm": "Entendido: activar",
|
||
"cancel": "Cancelar",
|
||
"restingFrugal": "En pausa en el nivel de ahorro de IA: los documentos solo se leen cuando lo pides."
|
||
},
|
||
"centralCodex": {
|
||
"title": "Usar el acceso de IA compartido del servidor",
|
||
"subLabel": "Las solicitudes de IA pasan por la conexión compartida del servidor, con tus propios proveedores como respaldo.",
|
||
"honesty": "El acceso compartido es una única cuenta de IA con sesión iniciada que el operador conectó para todos en este servidor, no tu propia clave. Las solicitudes que hagas se usan de forma predeterminada para entrenar los modelos del proveedor y ningún acuerdo de tratamiento de datos las cubre, los límites por hora y semanales de la cuenta se comparten con todos los demás que se han unido, y tus propios proveedores se prueban primero. Actívalo solo si aceptas este compromiso.",
|
||
"confirm": "Entendido: usar la conexión",
|
||
"cancel": "Cancelar"
|
||
},
|
||
"consent": {
|
||
"title": "Consentimiento de IA",
|
||
"activeSince": "Otorgado el {date}: tus datos de salud pueden enviarse al proveedor configurado para las funciones de IA.",
|
||
"withdraw": "Retirar el consentimiento",
|
||
"confirmBody": "Salvo que otro consentimiento tuyo los siga cubriendo, se detienen de inmediato: el Coach e Insights cuando usan el acceso de IA de este servidor, y la lectura de documentos con un modelo en línea. Con tu propia clave o un modelo local, el Coach e Insights siguen funcionando. Salvo que otro consentimiento siga cubriendo Insights, se eliminan las notas que un modelo escribió para ti: notas de estado, el resumen diario, los resúmenes de periodo escritos por un modelo, las líneas de llegada y las notas de entrenamiento. Tus conversaciones con el Coach, lo que el Coach recordaba, tus planes y los resúmenes de tus documentos se conservan, y puedes leerlos o eliminarlos tú mismo.",
|
||
"confirmWithdraw": "Retirar",
|
||
"grantError": "No se pudo guardar el consentimiento. Inténtalo de nuevo.",
|
||
"error": "No se pudo guardar la retirada. Inténtalo de nuevo.",
|
||
"documentReading": {
|
||
"title": "Consentimiento para leer documentos",
|
||
"activeSince": "Dado el {date}: documentos, análisis escaneados y textos de medicamentos pueden ir a tu servicio de IA para leerlos.",
|
||
"confirmBody": "Los documentos, los informes de laboratorio escaneados y las descripciones de medicamentos dejan de enviarse para leerlos. No se elimina nada de lo que ya tienes."
|
||
},
|
||
"activeSinceNamed": "Otorgado el {date}: tus datos de salud pueden enviarse a {providers} para las funciones de IA.",
|
||
"activeUndated": "Otorgado: tus datos de salud pueden enviarse al proveedor configurado para las funciones de IA.",
|
||
"request": {
|
||
"title": "Tu acuerdo antes de que empiece la IA",
|
||
"body": "La IA de este servidor funciona con un servicio que proporciona el operador: {providers}. Hasta que aceptes, nada de tus registros va allí.",
|
||
"data": "Cuando aceptes, HealthLog envía a ese servicio lo que necesitan las funciones de IA: mediciones como peso, presión arterial, pulso, sueño y actividad, tus medicamentos, estado de ánimo, valores de laboratorio y registros del ciclo si los llevas, lo que escribes en tu perfil y al Coach, y los documentos que decidas que se lean. El servicio lo usa para escribir tu resumen diario, las notas sobre tus mediciones y las respuestas del Coach.",
|
||
"withdrawHint": "Puedes retirar tu acuerdo en cualquier momento en Ajustes, IA. Desde ese momento no se envía nada más.",
|
||
"agree": "Aceptar",
|
||
"dismiss": "Ahora no"
|
||
}
|
||
},
|
||
"operatorOff": {
|
||
"allTitle": "La IA está desactivada en este servidor",
|
||
"allBody": "Quien gestiona este servidor ha desactivado la IA. HealthLog sigue funcionando con todos tus datos; las funciones que necesitan IA simplemente no se muestran.",
|
||
"someTitle": "Algunas funciones de IA están desactivadas en este servidor",
|
||
"someBody": "Quien gestiona este servidor ha desactivado: {switches}. Todo lo demás, incluidos todos tus datos, funciona como siempre.",
|
||
"testRefused": "La IA está desactivada en este servidor, así que no hay nada que probar.",
|
||
"autoRead": "Leer documentos con IA está desactivado en este servidor."
|
||
},
|
||
"coachConversations": {
|
||
"title": "Conversaciones con el Coach",
|
||
"description": "Abre una conversación para leerla o elimínala.",
|
||
"more": "Mostrar más",
|
||
"openAll": "Abrir todas las conversaciones"
|
||
},
|
||
"coachPlans": {
|
||
"title": "Planes del Coach",
|
||
"description": "Los planes que acordaste con el Coach, para leerlos o eliminarlos.",
|
||
"open": "Abrir planes"
|
||
},
|
||
"reasoning": {
|
||
"label": "Razonamiento",
|
||
"hint": "Los modelos de razonamiento como Gemma o Qwen piensan antes de responder. Si lo desactivas, todo el presupuesto de respuesta se queda para la respuesta.",
|
||
"options": {
|
||
"default": "Predeterminado",
|
||
"none": "Desactivado",
|
||
"low": "Bajo",
|
||
"medium": "Medio",
|
||
"high": "Alto"
|
||
},
|
||
"coachNote": "En el Coach se aplica la profundidad de pensamiento de los ajustes del Coach.",
|
||
"backgroundNote": "El trabajo en segundo plano, como el resumen diario, no usa este ajuste: piensa como máximo en Medio, menos si el operador fija un límite más bajo, y nada en el nivel Ahorro."
|
||
},
|
||
"providerCardDescription": "Configura la clave y el modelo de cada proveedor; el orden de abajo decide a cuál pregunta HealthLog primero.",
|
||
"runtimeTitle": "Comprobar y actualizar",
|
||
"usage": {
|
||
"title": "Uso de la IA",
|
||
"description": "Cuánto trabajo de IA se hace en segundo plano para ti, mientras el Coach sigue igual en todos los niveles.",
|
||
"levels": {
|
||
"frugal": {
|
||
"label": "Ahorro",
|
||
"hint": "Las tarjetas se actualizan como mucho una vez al día tras una sincronización, un resumen diario breve, los documentos solo se leen cuando lo pides."
|
||
},
|
||
"standard": {
|
||
"label": "Estándar",
|
||
"hint": "Las tarjetas se actualizan cada pocas horas tras una sincronización, el resumen diario completo."
|
||
},
|
||
"full": {
|
||
"label": "Completo",
|
||
"hint": "Las tarjetas se actualizan hasta cada hora con datos nuevos, como antes de existir este ajuste."
|
||
}
|
||
},
|
||
"limited": "Limitado por quien administra el servidor.",
|
||
"estimate": "unos {tokens} tokens al día, estimado",
|
||
"measured": "Medido: {tokens} tokens al día en los últimos {days} días, Coach incluido. Las cifras por nivel son estimaciones.",
|
||
"noEstimate": "La estimación por nivel aparece tras tres días de uso de la IA.",
|
||
"capped": "Elegiste {choice}, que el servidor no permite ahora mismo, así que se aplica {level}. Tu elección se conserva.",
|
||
"followsDefault": "Sigues el valor predeterminado del servidor ({level}).",
|
||
"useDefault": "Usar el valor predeterminado del servidor ({level})",
|
||
"saveError": "No se pudo guardar el nivel. Inténtalo de nuevo."
|
||
},
|
||
"removeKey": {
|
||
"label": "Quitar clave de API",
|
||
"title": "¿Quitar la clave de API guardada?",
|
||
"body": "HealthLog borra la clave guardada y no puede recuperarla. Vuelve a introducirla para seguir usándola.",
|
||
"confirm": "Quitar clave de API",
|
||
"done": "Clave de API quitada.",
|
||
"failed": "No se pudo quitar la clave de API."
|
||
}
|
||
},
|
||
"dashboard": {
|
||
"units": {
|
||
"title": "Unidades",
|
||
"description": "Elige cómo se muestran las distancias y velocidades en los gráficos y mosaicos.",
|
||
"metric": "Métrico",
|
||
"imperial": "Imperial",
|
||
"saved": "Preferencia de unidades guardada",
|
||
"saveError": "No se pudo guardar tu preferencia de unidades."
|
||
},
|
||
"glucoseUnit": {
|
||
"title": "Glucosa en sangre",
|
||
"description": "La unidad en la que se muestran las lecturas de glucosa. Se guardan igual en ambos casos.",
|
||
"saved": "Unidad de glucosa guardada",
|
||
"saveError": "No se pudo guardar la unidad de glucosa."
|
||
}
|
||
},
|
||
"withings": "Withings",
|
||
"withingsDescription": "Conecta tu báscula y tensiómetro Withings para sincronizar peso, composición corporal y tensión arterial automáticamente.",
|
||
"withingsCredentials": "Credenciales de API",
|
||
"withingsClientId": "ID de cliente",
|
||
"withingsClientSecret": "Secreto de cliente",
|
||
"withingsCredentialsSaved": "Credenciales guardadas",
|
||
"withingsCredentialsSavedPlaceholder": "Guardado. Introduce uno nuevo para reemplazarlo",
|
||
"withingsCredentialsSavedPlaceholderSecret": "Guardado. Introduce uno nuevo para reemplazarlo",
|
||
"withingsSaveCredentials": "Guardar",
|
||
"configured": "Configurado",
|
||
"withingsSync": "Sincronizar ahora",
|
||
"withingsFullSync": "Sincronizar todos los datos",
|
||
"withingsFullSyncTitle": "¿Sincronización completa?",
|
||
"withingsFullSyncDescription": "Se sincronizarán por completo todos los datos disponibles de Withings. Esto puede tardar un poco según tu historial.",
|
||
"withingsSyncResult": "{count} mediciones sincronizadas",
|
||
"syncOutcome": {
|
||
"empty": "No hay nada nuevo que importar. Todo está al día.",
|
||
"failed": "No se guardó nada. El próximo intento lo repetirá.",
|
||
"partial": "{count} mediciones sincronizadas. Parte de los datos no se pudo guardar; el próximo intento lo repetirá."
|
||
},
|
||
"withingsFullSyncResult": "{count} mediciones sincronizadas por completo",
|
||
"withingsSyncFailed": "Falló la sincronización",
|
||
"withingsOauthConnected": "Withings conectado. La primera sincronización comienza en segundo plano.",
|
||
"withingsOauthFailed": "Error al conectar con Withings",
|
||
"withingsOauthError": {
|
||
"csrf1": "La comprobación de seguridad falló porque faltaba la cookie del navegador. Inicia la conexión de nuevo en el mismo navegador.",
|
||
"replay": "Este enlace de confirmación ya se ha utilizado. Inicia la conexión de nuevo.",
|
||
"state": "La respuesta de Withings no coincide con ninguna solicitud de conexión abierta. Inicia la conexión de nuevo.",
|
||
"expired": "La solicitud de conexión ha caducado. Inicia la conexión de nuevo y completa la autorización en pocos minutos.",
|
||
"cross_user": "La respuesta pertenece a una solicitud de otra cuenta. Reinicia la conexión desde tu propia cuenta.",
|
||
"nocode": "Withings no devolvió ningún código de autorización. Inténtalo de nuevo y permite el acceso en el diálogo de Withings.",
|
||
"nocreds": "No hay credenciales de la API de Withings guardadas. Guarda primero el Client ID y el Client Secret y vuelve a conectar.",
|
||
"token": "El intercambio de tokens con Withings falló. Comprueba el Client ID y el Client Secret e inténtalo de nuevo.",
|
||
"generic": "Error desconocido al conectar. Inicia la conexión de nuevo.",
|
||
"already_linked": "Esta cuenta de Withings ya está conectada a otro perfil de HealthLog. Inicia sesión en Withings con la cuenta de este perfil o desconéctala primero del otro perfil."
|
||
},
|
||
"withingsSynchronize": "Sincronizar",
|
||
"withingsDisconnect": "Desconectar",
|
||
"withingsDisconnectTitle": "¿Desconectar Withings?",
|
||
"withingsDisconnectDescription": "Se desconectará la conexión con Withings. Los datos ya sincronizados se conservarán.",
|
||
"withingsConnect": "Conectar con Withings",
|
||
"withingsNoCredentials": "Introduce primero tus credenciales de API arriba para conectar Withings.",
|
||
"whoop": "WHOOP",
|
||
"whoopDescription": "Conecta tu banda WHOOP para sincronizar recuperación, sueño, esfuerzo y entrenamientos directamente en HealthLog.",
|
||
"whoopCredentials": "Credenciales de API",
|
||
"whoopClientId": "Client ID",
|
||
"whoopClientSecret": "Client Secret",
|
||
"whoopCredentialsSaved": "Credenciales guardadas",
|
||
"whoopCredentialsSavedPlaceholder": "Guardado. Introduce nuevas para reemplazar",
|
||
"whoopCredentialsSavedPlaceholderSecret": "Guardado. Introduce nuevas para reemplazar",
|
||
"whoopSaveCredentials": "Guardar",
|
||
"whoopSync": "Sincronizar ahora",
|
||
"whoopFullSync": "Sincronizar todos los datos",
|
||
"whoopFullSyncTitle": "¿Sincronización completa?",
|
||
"whoopFullSyncDescription": "Se sincronizará todo el historial de WHOOP disponible. Esto puede tardar según tu historial.",
|
||
"whoopSyncResult": "{count} mediciones sincronizadas",
|
||
"whoopSyncFailed": "Error de sincronización",
|
||
"whoopSynchronize": "Sincronizar",
|
||
"whoopDisconnect": "Desconectar",
|
||
"whoopDisconnectTitle": "¿Desconectar WHOOP?",
|
||
"whoopDisconnectDescription": "Se desconectará la conexión con WHOOP. Los datos ya sincronizados se conservarán.",
|
||
"whoopConnect": "Conectar con WHOOP",
|
||
"whoopNoCredentials": "Introduce tus credenciales de API arriba para conectar WHOOP.",
|
||
"whoopOauthConnected": "WHOOP conectado: la primera sincronización empieza en segundo plano.",
|
||
"whoopOauthFailed": "Error al conectar con WHOOP",
|
||
"whoopOauthError": {
|
||
"csrf1": "La verificación de seguridad falló porque faltaba la cookie del navegador. Inicia la conexión de nuevo en el mismo navegador.",
|
||
"state": "La respuesta de WHOOP no coincidió con ninguna solicitud de conexión abierta. Inicia la conexión de nuevo.",
|
||
"expired": "La solicitud de conexión caducó antes de completarse. Inicia la conexión de nuevo.",
|
||
"cross_user": "La respuesta pertenece a una solicitud de otra cuenta. Reinicia la conexión desde tu propia cuenta.",
|
||
"nocode": "WHOOP no devolvió un código de autorización. Inténtalo de nuevo y permite el acceso en el diálogo de WHOOP.",
|
||
"nocreds": "WHOOP no está configurado. Añade tus credenciales OAuth de WHOOP arriba e inténtalo de nuevo.",
|
||
"token": "El intercambio de token con WHOOP falló. Inicia la conexión de nuevo.",
|
||
"generic": "Error desconocido al conectar. Inicia la conexión de nuevo.",
|
||
"already_linked": "Esta cuenta de WHOOP ya está conectada a otro perfil de HealthLog. Inicia sesión en WHOOP con la cuenta de este perfil o desconéctala primero del otro perfil."
|
||
},
|
||
"fitbit": "Fitbit",
|
||
"fitbitTag": "Fitbit y Pixel",
|
||
"fitbitDescription": "Conecta Fitbit para sincronizar tus datos de Fitbit y Pixel Watch: peso, frecuencia cardíaca y más.",
|
||
"fitbitExperimentalBadge": "Experimental",
|
||
"fitbitCredentials": "Credenciales de API",
|
||
"fitbitClientId": "Client ID",
|
||
"fitbitClientSecret": "Client Secret",
|
||
"fitbitCredentialsSaved": "Credenciales guardadas",
|
||
"fitbitCredentialsSavedPlaceholder": "Guardado: introduce nuevas para reemplazar",
|
||
"fitbitCredentialsSavedPlaceholderSecret": "Guardado: introduce nuevas para reemplazar",
|
||
"fitbitSaveCredentials": "Guardar",
|
||
"fitbitSync": "Sincronizar ahora",
|
||
"fitbitFullSync": "Sincronizar todos los datos",
|
||
"fitbitFullSyncTitle": "¿Sincronización completa?",
|
||
"fitbitFullSyncDescription": "Se sincronizará por completo todo el historial disponible de Fitbit. Esto puede tardar un tiempo según tu historial.",
|
||
"fitbitSyncResult": "{count} mediciones sincronizadas",
|
||
"fitbitSyncFailed": "Error de sincronización",
|
||
"fitbitSynchronize": "Sincronizar",
|
||
"fitbitDisconnect": "Desconectar",
|
||
"fitbitDisconnectTitle": "¿Desconectar Fitbit?",
|
||
"fitbitDisconnectDescription": "Se desconectará la conexión con Fitbit. Los datos sincronizados previamente se conservarán.",
|
||
"fitbitConnect": "Conectar con Fitbit",
|
||
"fitbitNoCredentials": "Introduce tus credenciales de API arriba para conectar Fitbit.",
|
||
"fitbitOauthConnected": "Fitbit conectado: la primera sincronización empieza en segundo plano.",
|
||
"fitbitOauthFailed": "Error al conectar con Fitbit",
|
||
"googleHealth": "Google Health",
|
||
"googleHealthTag": "Fitbit y Pixel",
|
||
"googleHealthBetaBadge": "Beta",
|
||
"googleHealthDescription": "Conecta Fitbit, Pixel Watch y Fitbit Air a través de tu cuenta de Google: peso, frecuencia cardíaca, sueño y actividad. Sustituye a la conexión clásica de Fitbit, que Google retira en septiembre de 2026.",
|
||
"googleHealthCredentials": "Credenciales de API",
|
||
"googleHealthClientId": "ID de cliente",
|
||
"googleHealthClientSecret": "Secreto de cliente",
|
||
"googleHealthCredentialsSaved": "Credenciales guardadas",
|
||
"googleHealthCredentialsSavedPlaceholder": "Guardado. Introduce nuevas para reemplazar",
|
||
"googleHealthCredentialsSavedPlaceholderSecret": "Guardado. Introduce nuevas para reemplazar",
|
||
"googleHealthSaveCredentials": "Guardar",
|
||
"googleHealthSync": "Sincronizar ahora",
|
||
"googleHealthSyncCheckStatus": "Actualizar estado",
|
||
"googleHealthFullSync": "Sincronizar todos los datos",
|
||
"googleHealthFullSyncTitle": "¿Sincronización completa?",
|
||
"googleHealthFullSyncDescription": "Se sincronizará por completo todo el historial disponible de Google Health. Puede tardar según tu historial.",
|
||
"googleHealthSyncResult": "{count} mediciones sincronizadas",
|
||
"googleHealthSyncFailed": "Error de sincronización",
|
||
"googleHealthSyncInProgress": "Sincronización en curso: {count} mediciones guardadas, {completed} de {total} áreas procesadas.",
|
||
"googleHealthResourceFailuresTitle": "Estas áreas aún necesitan atención:",
|
||
"googleHealthResource": {
|
||
"workout": "Entrenamientos",
|
||
"sleep": "Sueño",
|
||
"boundedMetrics": "Mediciones de salud",
|
||
"activity": "Actividad",
|
||
"heartRate": "Frecuencia cardíaca",
|
||
"other": "Otros datos"
|
||
},
|
||
"googleHealthReason": {
|
||
"collectionFailed": "Google no pudo proporcionar estos datos. Vuelve a sincronizar más tarde.",
|
||
"tokenFailed": "La conexión ha caducado. Vuelve a conectar Google Health.",
|
||
"upsertFailed": "No se pudieron guardar los datos. Vuelve a sincronizar.",
|
||
"rollupFailed": "Los datos se recibieron, pero su resumen aún no se ha actualizado. Inténtalo más tarde.",
|
||
"pageLimit": "Solo se procesó una parte del historial disponible. Otra sincronización continuará.",
|
||
"generic": "Esta área no se sincronizó por completo. Vuelve a intentarlo."
|
||
},
|
||
"googleHealthSynchronize": "Sincronizar",
|
||
"googleHealthDisconnect": "Desconectar",
|
||
"googleHealthDisconnectTitle": "¿Desconectar Google Health?",
|
||
"googleHealthDisconnectDescription": "Se desconectará la conexión con Google Health. Los datos ya sincronizados se conservarán.",
|
||
"googleHealthConnect": "Conectar con Google",
|
||
"googleHealthNoCredentials": "Introduce tus credenciales de API arriba para conectar Google Health.",
|
||
"googleHealthOauthConnected": "Google Health conectado: la primera sincronización empieza en segundo plano.",
|
||
"googleHealthOauthFailed": "Error al conectar con Google Health",
|
||
"googleHealthOauthError": {
|
||
"csrf1": "La comprobación de seguridad falló porque faltaba la cookie del navegador. Vuelve a iniciar la conexión en el mismo navegador.",
|
||
"state": "La respuesta de Google no coincidió con ninguna solicitud de conexión abierta. Vuelve a iniciar la conexión.",
|
||
"expired": "La solicitud de conexión caducó antes de completarse. Vuelve a iniciar la conexión.",
|
||
"cross_user": "La respuesta pertenece a una solicitud de otra cuenta. Reinicia la conexión desde tu propia cuenta.",
|
||
"nocode": "Google no devolvió un código de autorización. Inténtalo de nuevo y concede el acceso en el diálogo de Google.",
|
||
"nocreds": "Google Health no está configurado. Añade arriba tus credenciales de OAuth de Google e inténtalo de nuevo.",
|
||
"token": "El intercambio de token con Google falló. Vuelve a iniciar la conexión.",
|
||
"generic": "Error desconocido al conectar. Vuelve a iniciar la conexión.",
|
||
"already_linked": "Esta cuenta de Google ya está conectada a otro perfil de HealthLog. Inicia sesión en Google con la cuenta de este perfil o desconéctala primero del otro perfil."
|
||
},
|
||
"fitbitOauthError": {
|
||
"csrf1": "La verificación de seguridad falló porque faltaba la cookie del navegador. Inicia la conexión de nuevo en el mismo navegador.",
|
||
"state": "La respuesta de Fitbit no coincidió con ninguna solicitud de conexión abierta. Inicia la conexión de nuevo.",
|
||
"expired": "La solicitud de conexión caducó antes de completarse. Inicia la conexión de nuevo.",
|
||
"cross_user": "La respuesta pertenece a una solicitud de otra cuenta. Reinicia la conexión desde tu propia cuenta.",
|
||
"nocode": "Fitbit no devolvió un código de autorización. Inténtalo de nuevo y permite el acceso en el diálogo de Fitbit.",
|
||
"nocreds": "Fitbit no está configurado. Añade tus credenciales OAuth de Fitbit arriba e inténtalo de nuevo.",
|
||
"token": "El intercambio de token con Fitbit falló. Inicia la conexión de nuevo.",
|
||
"generic": "Error desconocido al conectar. Inicia la conexión de nuevo.",
|
||
"retired": "Google desactivó la API web de Fitbit, así que ya no se puede crear una nueva conexión de Fitbit. Conecta Google Health, que lee los mismos dispositivos.",
|
||
"already_linked": "Esta cuenta de Fitbit ya está conectada a otro perfil de HealthLog. Inicia sesión en Fitbit con la cuenta de este perfil o desconéctala primero del otro perfil."
|
||
},
|
||
"integrations": {
|
||
"withings": {
|
||
"plan": {
|
||
"link": "Sobre los planes de API de Withings",
|
||
"items": {
|
||
"spo2": "SpO2",
|
||
"vascularAge": "edad vascular",
|
||
"pulseWaveVelocity": "velocidad de onda de pulso",
|
||
"vo2Max": "VO2 máx.",
|
||
"visceralFat": "grasa visceral",
|
||
"skinTemperature": "temperatura de la piel",
|
||
"ecg": "ECG y fibrilación auricular",
|
||
"sleepScore": "puntuación de sueño",
|
||
"sleepHrv": "VFC nocturna",
|
||
"sleepHeartRate": "frecuencia cardíaca nocturna",
|
||
"sleepRespiratoryRate": "frecuencia respiratoria nocturna",
|
||
"sleepSpo2": "SpO2 nocturna",
|
||
"bodyTemperature": "temperatura corporal",
|
||
"bodyFat": "grasa corporal",
|
||
"fatMass": "masa grasa",
|
||
"fatFreeMass": "masa libre de grasa",
|
||
"muscleMass": "masa muscular",
|
||
"bodyWater": "agua corporal",
|
||
"boneMass": "masa ósea",
|
||
"heartRate": "frecuencia cardíaca",
|
||
"bloodPressure": "presión arterial",
|
||
"weight": "peso"
|
||
}
|
||
}
|
||
},
|
||
"oura": {
|
||
"scope": {
|
||
"items": {
|
||
"vo2max": "VO2 máx.",
|
||
"cardio_age": "edad cardiovascular",
|
||
"resilience": "resiliencia",
|
||
"workout": "entrenamientos",
|
||
"heartrate": "frecuencia cardiaca"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"integrationPill": {
|
||
"justNow": "ahora mismo",
|
||
"minutesAgo": "hace {count} min",
|
||
"hoursAgo": "hace {count} h",
|
||
"daysAgo": "hace {count} d",
|
||
"resumeSuccess": "Integración reanudada",
|
||
"resumeError": "Reconexión fallida"
|
||
},
|
||
"integrationFreshness": {
|
||
"title": "Datos recibidos",
|
||
"summary": "{count} tipos de datos, más reciente {relative}",
|
||
"quiet": "{count} en silencio",
|
||
"workouts": "Entrenamientos",
|
||
"medicationDoses": "Tomas de medicación"
|
||
},
|
||
"integrationFallback": {
|
||
"description": "Configurado en esta cuenta pero sin tarjeta de ajustes propia."
|
||
},
|
||
"withingsViewData": "Ver tus mediciones",
|
||
"whoopViewData": "Ver tu recuperación",
|
||
"fitbitViewData": "Ver tu sueño",
|
||
"googleHealthViewData": "Ver tus pasos",
|
||
"apiTokens": "Tokens de API",
|
||
"apiTokensDescription": "Revisa y revoca los tokens de mediciones, entrenamientos, documentos y tomas de medicación.",
|
||
"measurementsToken": {
|
||
"title": "Tokens de mediciones",
|
||
"description": "Crea un token para que una báscula, un reloj o tu domótica añadan mediciones.",
|
||
"detail": "El token se muestra una sola vez.",
|
||
"scopeNote": "Solo puede añadir mediciones nuevas a tu propio historial: no puede leer tus datos, ni modificar o borrar nada, ni crear otro token. Las mediciones se marcan como procedentes de un dispositivo externo, así las distingues más tarde, y puedes corregirlas igualmente.",
|
||
"createFailed": "No se pudo crear el token. Inténtalo de nuevo.",
|
||
"namePlaceholder": "Nombre, p. ej. Home Assistant"
|
||
},
|
||
"workoutsToken": {
|
||
"title": "Tokens de entrenamientos",
|
||
"description": "Crea un token para que un puente de tu reloj o un script de sincronización añadan tus entrenamientos.",
|
||
"detail": "El token se muestra una sola vez.",
|
||
"scopeNote": "Solo puede añadir entrenamientos nuevos a tu propio historial. No puede leer tus datos, ni modificar o borrar nada, ni crear otro token. Los entrenamientos que añade se marcan como procedentes de un dispositivo externo, y si tu teléfono registró la misma sesión, ves la copia del teléfono.",
|
||
"createFailed": "No se pudo crear el token. Inténtalo de nuevo.",
|
||
"namePlaceholder": "Nombre, p. ej. Garmin"
|
||
},
|
||
"documentsToken": {
|
||
"title": "Tokens de documentos",
|
||
"description": "Crea un token para que Paperless-ngx, Papra o el script de importación añadan documentos a tu archivo.",
|
||
"detail": "El token se muestra una sola vez.",
|
||
"scopeNote": "Solo puede añadir documentos nuevos a tu propio archivo. No puede listar, abrir, descargar, modificar ni borrar nada, ni crear otro token. Lo único que recibe es si un archivo se guardó, no cómo lo archivaste.",
|
||
"createFailed": "No se pudo crear el token. Inténtalo de nuevo.",
|
||
"namePlaceholder": "Nombre, p. ej. Paperless-ngx"
|
||
},
|
||
"tokenMintMovedDescription": "Los tokens se emiten donde se aplican: arriba para las mediciones, los entrenamientos y los documentos, o en el endpoint de API de un medicamento para ese medicamento concreto.",
|
||
"tokenCreated": "Token creado. ¡Cópialo ahora! No se mostrará de nuevo.",
|
||
"tokenCopy": "Copiar token",
|
||
"tokenCopied": "Token copiado al portapapeles",
|
||
"tokenCopyFailed": "No se pudo copiar el token",
|
||
"tokenRevokeFailed": "No se pudo revocar el token. Inténtalo de nuevo.",
|
||
"tokenRevoke": "¿Revocar token?",
|
||
"tokenRevokeAction": "Revocar token",
|
||
"tokenRevokeDescription": "El token se desactivará de forma permanente. Las aplicaciones que lo usen perderán el acceso.",
|
||
"tokenRevoked": "Revocado",
|
||
"tokenExpired": "Caducado",
|
||
"tokenActive": "Activo",
|
||
"activeTokensTitle": "Tokens activos",
|
||
"revokedTokensTitle": "Tokens revocados ({count})",
|
||
"tokenTableName": "Nombre",
|
||
"tokenTablePermissions": "Permisos",
|
||
"tokenTableStatus": "Estado",
|
||
"tokenTableCreated": "Creado",
|
||
"tokenTableLastUsed": "Último uso",
|
||
"tokenTableActions": "Acciones",
|
||
"noActiveTokens": "No hay tokens activos.",
|
||
"tokenNeverUsed": "Nunca",
|
||
"apiEndpointsTitle": "Endpoints de API",
|
||
"apiEndpointsDescription": "Resumen de los endpoints externos disponibles actualmente para la ingesta basada en tokens.",
|
||
"apiEndpointMethod": "Método",
|
||
"apiEndpointPath": "Ruta",
|
||
"apiEndpointAuth": "Autenticación",
|
||
"apiEndpointExample": "Ejemplo de cuerpo",
|
||
"dangerZone": "Eliminar todos los datos",
|
||
"dangerZoneDescription": "Borra todo tu historial de salud y todas las conexiones de integración.",
|
||
"dangerZoneConfirm": "¿Eliminar todos los datos?",
|
||
"dangerZoneConfirmDescription": "Esto elimina de forma permanente todo lo que hay en tu historial: mediciones, medicamentos, entradas de ánimo, resultados de laboratorio, entradas de ciclo, documentos, conversaciones con la IA y todas las conexiones de integración, junto con todo lo derivado de ello y todo lo que eliminaste antes. Los enlaces compartidos que diste a una consulta dejan de funcionar de inmediato. Tu cuenta se mantiene, junto con las credenciales con las que inicias sesión y los ajustes de presentación como el idioma, la zona horaria y las unidades. Esto no se puede deshacer.",
|
||
"dangerZoneSuccess": "Se ha eliminado tu historial de salud. Tu cuenta y tu inicio de sesión no han cambiado.",
|
||
"dangerZoneDeleteFailed": "Falló la eliminación",
|
||
"finalDelete": "Eliminar permanentemente",
|
||
"deleteAccountCardTitle": "Eliminar la cuenta por completo",
|
||
"deleteAccountCardDescription": "Elimina tu cuenta junto con las claves de acceso, el registro de auditoría y las sesiones.",
|
||
"deleteAccountCta": "Eliminar cuenta",
|
||
"deleteAccountConfirmTitle": "¿Eliminar la cuenta de forma permanente?",
|
||
"deleteAccountConfirmDescription": "Tu cuenta, todos los datos de salud, las claves de acceso, las sesiones y las entradas de auditoría se eliminarán de forma permanente. Se cerrará tu sesión inmediatamente después.",
|
||
"deleteAccountSuccess": "Cuenta eliminada. Cerrando tu sesión.",
|
||
"deleteAccountFailed": "No se pudo eliminar la cuenta",
|
||
"deleteAccountFinal": "Eliminar permanentemente",
|
||
"saved": "Guardado",
|
||
"savingError": "Error al guardar",
|
||
"about": {
|
||
"version": "Versión de la app",
|
||
"gitSha": "Build",
|
||
"builtAtLabel": "Compilado",
|
||
"license": "Licencia",
|
||
"repository": "Código fuente",
|
||
"changelog": "Changelog",
|
||
"docs": "Documentación",
|
||
"credits": "Créditos y atribuciones de datos",
|
||
"linksHeading": "Fuentes y documentación",
|
||
"newerAvailable": "Nueva versión: {tag}",
|
||
"support": {
|
||
"title": "Soporte",
|
||
"description": "Un resumen para un informe de error, sin tu nombre, correo ni valores de salud.",
|
||
"copy": "Copiar información de soporte",
|
||
"copied": "Copiado",
|
||
"copyFailed": "No se pudo reunir la información de soporte."
|
||
}
|
||
},
|
||
"testConnection": {
|
||
"test": "Probar conexión",
|
||
"saveFirst": "Guarda primero tus cambios. La prueba usa los ajustes guardados.",
|
||
"testing": "Probando…",
|
||
"ok": "Conectado (latencia {latency} ms)",
|
||
"errors": {
|
||
"credentials_rejected": "Credenciales rechazadas: comprueba tu token",
|
||
"rate_limited": "Limitado por el servidor remoto",
|
||
"timeout": "La solicitud agotó el tiempo de espera",
|
||
"upstream_error": "El servidor remoto devolvió un error",
|
||
"upstream_rejected": "El servidor remoto rechazó el mensaje",
|
||
"connection_failed": "Falló la conexión",
|
||
"not_configured": "No configurado",
|
||
"url_not_public": "La URL no es un endpoint público",
|
||
"private_origin_not_approved": "Destino en una red privada. El operador debe añadir este origen a NOTIFICATION_PRIVATE_ORIGINS",
|
||
"private_origin_not_grantable": "Esta dirección es de enlace local, de metadatos o no especificada; ninguna autorización del operador puede abrirla. Usa la dirección en la que escucha el relay",
|
||
"url_invalid": "La URL no es válida",
|
||
"redirected": "El endpoint redirige: comprueba la URL",
|
||
"endpoint_not_found": "No se encontró el endpoint en la URL",
|
||
"credentials_unreadable": "Las credenciales no se pueden descifrar",
|
||
"upstream_invalid_json": "El servidor remoto envió un JSON no válido",
|
||
"vapid_not_configured": "Web Push no configurado (faltan las claves VAPID)",
|
||
"rate_limited_self": "Demasiadas solicitudes de prueba",
|
||
"generic": "Prueba fallida"
|
||
}
|
||
},
|
||
"notificationStatus": {
|
||
"title": "Fiabilidad de los canales",
|
||
"description": "Estado de cada canal; «Desactivado automáticamente» significa detenido tras errores permanentes.",
|
||
"emptyDescription": "Configura un canal en Ajustes › Integraciones › Canales de entrega.",
|
||
"stateActive": "Activo",
|
||
"stateAutoDisabled": "Desactivado automáticamente",
|
||
"stateSendingPaused": "Envío en pausa",
|
||
"stateManuallyDisabled": "Desactivado",
|
||
"lastSuccess": "Último envío correcto",
|
||
"lastFailure": "Último fallo",
|
||
"consecutiveFailures": "Fallos consecutivos",
|
||
"disabledReason": "Motivo",
|
||
"nextRetry": "Próximo intento",
|
||
"reEnable": "Reactivar",
|
||
"sendTest": "Enviar prueba",
|
||
"emptyTitle": "Aún no hay canales configurados"
|
||
},
|
||
"identity": {
|
||
"description": "Datos opcionales para la exportación del historial de salud (portada PDF + exportación FHIR). Todos los campos son opcionales.",
|
||
"fullName": "Nombre completo",
|
||
"fullNamePlaceholder": "p. ej. Ana García",
|
||
"insurer": "Seguro médico",
|
||
"insurerPlaceholder": "p. ej. AOK Bayern",
|
||
"insuranceNumber": "Número de asegurado (KVNR)",
|
||
"insuranceNumberHint": "10 caracteres: una letra + nueve dígitos (p. ej. A123456780)."
|
||
},
|
||
"healthRecord": {
|
||
"title": "Exportar historial de salud",
|
||
"description": "Un historial completo para tu médico: en PDF, en FHIR o ambos.",
|
||
"format": "Formato",
|
||
"format_pdf": "PDF",
|
||
"format_fhir": "Estructurado (FHIR)",
|
||
"format_package": "Paquete: PDF + FHIR",
|
||
"range": "Período",
|
||
"range90": "Últimos 90 días",
|
||
"range180": "Últimos 6 meses",
|
||
"range365": "Últimos 12 meses",
|
||
"practiceName": "Consulta (opcional)",
|
||
"practiceNamePlaceholder": "p. ej. Dr. García",
|
||
"includedData": "Datos incluidos",
|
||
"includeCharts": "Incrustar gráficos de tendencia (solo PDF)",
|
||
"fhirNote": "La salida estructurada sigue el estándar FHIR R4 (compatible con ePA).",
|
||
"generate": "Generar",
|
||
"documentsLink": "Documentos del período",
|
||
"range30": "Últimos 30 días",
|
||
"rangeCustom": "Periodo personalizado",
|
||
"rangeCustomStart": "Desde",
|
||
"rangeCustomEnd": "Hasta",
|
||
"errorGeneric": "No se pudo generar la exportación. Inténtelo de nuevo.",
|
||
"errorRateLimit": "Ha alcanzado el límite de exportaciones de esta hora.",
|
||
"errorModuleDisabled": "La exportación del expediente está desactivada para esta cuenta.",
|
||
"visitOffer": "El {when} hay una cita: {what}.",
|
||
"visitOfferApplyWindow": "Usar este periodo"
|
||
},
|
||
"globalExcludedInjectionSitesLabel": "Sitios de inyección excluidos globalmente",
|
||
"globalExcludedInjectionSitesHint": "Nunca se ofrecen y se rechazan al registrar una dosis, aunque un medicamento los prefiera.",
|
||
"sharing": {
|
||
"createTitle": "Nuevo enlace para compartir",
|
||
"createDescription": "El enlace es de solo lectura y limitado en el tiempo.",
|
||
"label": "Etiqueta",
|
||
"labelPlaceholder": "p. ej. Dra. García, revisión anual",
|
||
"range": "Días de historial",
|
||
"rangeHint": "Hasta cuándo se remonta la ventana compartida.",
|
||
"expiry": "Caduca en (días)",
|
||
"expiryHint": "Como máximo {max} días.",
|
||
"expiryInvalid": "La caducidad debe estar entre 1 y {max} días.",
|
||
"create": "Crear enlace",
|
||
"tokenCreated": "Enlace para compartir creado",
|
||
"copied": "Copiado al portapapeles",
|
||
"activeTitle": "Enlaces activos",
|
||
"noActive": "No hay enlaces para compartir activos.",
|
||
"created": "Creado",
|
||
"expires": "Caduca",
|
||
"accessCount": "Vistas",
|
||
"revoke": "Revocar",
|
||
"revokeDescription": "Revoca este enlace de inmediato. Quien lo tenga pierde el acceso al instante. Esto no se puede deshacer.",
|
||
"statusActive": "Activo",
|
||
"statusRevoked": "Revocado",
|
||
"statusExpired": "Caducado",
|
||
"inactiveTitle": "Revocados y caducados ({count})",
|
||
"shownOnce": "Se muestra una sola vez. Guarde ahora el código QR y la frase de acceso: no se pueden recuperar después.",
|
||
"qrAlt": "Código QR con el enlace para compartir y la frase de acceso",
|
||
"linkLabel": "Enlace",
|
||
"passphraseLabel": "Frase de acceso",
|
||
"passphraseHint": "El destinatario necesita el enlace y esta frase de acceso. El código QR contiene ambos.",
|
||
"copyLink": "Copiar enlace",
|
||
"copyPassphrase": "Copiar frase de acceso",
|
||
"protected": "Frase de acceso",
|
||
"attachTitle": "Adjuntar documentos",
|
||
"attachButton": "Elegir documentos",
|
||
"attachCount": "{count} de {max} seleccionados",
|
||
"attachFrozen": "El conjunto de documentos queda fijo al crear el enlace: después no se pueden añadir ni quitar documentos.",
|
||
"attachRemove": "Quitar {title}",
|
||
"exifNote": "Los metadatos de la cámara (EXIF/GPS) se eliminan de las imágenes JPEG, PNG y WebP al compartir. Los archivos PDF, TIFF, HEIC y Office se comparten sin cambios.",
|
||
"documentCount": "Documentos adjuntos: {count}",
|
||
"qrScanTitle": "Escanéalo para abrirlo en otro dispositivo",
|
||
"qrScanHint": "Apunta la cámara del teléfono al código para abrir el registro compartido: la frase de acceso ya está incluida.",
|
||
"pickerTitle": "Adjuntar documentos",
|
||
"pickerDescription": "Busca en tu archivo y selecciona documentos para compartir. Hasta {max}.",
|
||
"pickerSearch": "Buscar documentos",
|
||
"pickerEmpty": "No se encontraron documentos.",
|
||
"pickerDone": "Listo",
|
||
"pickerSelectedCount": "{count} de {max} seleccionados",
|
||
"pickerMaxReached": "Has alcanzado el máximo de {max} documentos.",
|
||
"scopeTitle": "Qué contiene este enlace",
|
||
"scopeInsuranceExcluded": "Los datos del seguro nunca se comparten por enlace.",
|
||
"statusNeedsReselect": "Elegir contenido de nuevo",
|
||
"reselectReason": "Este enlace mostraba un alcance que nadie eligió, por eso se cerró. Crea uno nuevo y elige su contenido.",
|
||
"reselectAction": "Crear un reemplazo",
|
||
"createDetail": "El token se muestra una sola vez al crearlo. Guárdalo entonces; no se puede recuperar.",
|
||
"activeDescription": "Los enlaces que has compartido, cuándo caducan y cuántas veces se abrieron.",
|
||
"revokedToast": "Enlace revocado.",
|
||
"revokeFailed": "No se pudo revocar el enlace."
|
||
},
|
||
"genderOther": "Otro",
|
||
"nightscout": "Nightscout",
|
||
"nightscoutTag": "CGM",
|
||
"nightscoutDescription": "Conecta tu propio sitio Nightscout para sincronizar lecturas continuas de glucosa en el panel de glucosa.",
|
||
"nightscoutViewData": "Ver tu glucosa",
|
||
"nightscoutUrl": "URL de Nightscout",
|
||
"nightscoutUrlSavedPlaceholder": "Guardado: introduce una URL nueva para reemplazarla",
|
||
"nightscoutToken": "Token de API",
|
||
"nightscoutTokenOptional": "Opcional para un sitio público",
|
||
"nightscoutTokenSavedPlaceholder": "Guardado: introduce un token nuevo para reemplazarlo",
|
||
"nightscoutTokenHelp": "Pega un token de acceso de las herramientas de administración de Nightscout. Déjalo vacío si tu sitio es de lectura pública.",
|
||
"nightscoutPrivateOperatorTitle": "El acceso privado a Nightscout requiere la aprobación del administrador del servidor.",
|
||
"nightscoutPrivateOperatorDescription": "Pide al administrador del servidor que apruebe exactamente este origen de Nightscout.",
|
||
"nightscoutConnect": "Conectar",
|
||
"nightscoutUpdate": "Guardar cambios",
|
||
"nightscoutConnected": "Nightscout conectado.",
|
||
"nightscoutConnectFailed": "No se pudo conectar con Nightscout.",
|
||
"nightscoutSync": "Sincronizar ahora",
|
||
"nightscoutSyncResult": "{count} mediciones sincronizadas",
|
||
"nightscoutSyncFailed": "Error de sincronización",
|
||
"nightscoutDisconnect": "Desconectar",
|
||
"nightscoutDisconnectTitle": "¿Desconectar Nightscout?",
|
||
"nightscoutDisconnectDescription": "Las sincronizaciones futuras se detienen. Las lecturas de glucosa ya importadas permanecen en tu historial.",
|
||
"polar": "Polar",
|
||
"polarDescription": "Conecta tu cuenta de Polar para sincronizar la recuperación Nightly Recharge, fases de sueño, actividad diaria y sesiones de entrenamiento.",
|
||
"polarViewData": "Ver tu sueño y recuperación",
|
||
"polarCredentials": "Credenciales de API",
|
||
"polarClientId": "Client ID",
|
||
"polarClientSecret": "Client Secret",
|
||
"polarCredentialsSaved": "Credenciales guardadas",
|
||
"polarCredentialsSavedPlaceholder": "Guardado. Introduce nuevas para reemplazar",
|
||
"polarSaveCredentials": "Guardar",
|
||
"polarUnavailable": "Polar no está configurado en este servidor. Añade arriba tus propias credenciales OAuth de Polar, o pide a tu administrador que configure la app compartida.",
|
||
"polarConnect": "Conectar Polar",
|
||
"polarSync": "Sincronizar ahora",
|
||
"polarSyncResult": "{count} mediciones sincronizadas",
|
||
"polarSyncFailed": "Error de sincronización",
|
||
"polarDisconnect": "Desconectar",
|
||
"polarDisconnectTitle": "¿Desconectar Polar?",
|
||
"polarDisconnectDescription": "Las sincronizaciones futuras se detienen. Las lecturas ya importadas permanecen en tu historial.",
|
||
"polarOauthConnected": "Polar conectado: la primera sincronización empieza en segundo plano.",
|
||
"polarOauthFailed": "Error al conectar con Polar",
|
||
"polarOauthError": {
|
||
"csrf1": "La verificación de seguridad falló porque faltaba la cookie del navegador. Inicia la conexión de nuevo en el mismo navegador.",
|
||
"state": "La respuesta de Polar no coincidió con ninguna solicitud de conexión abierta. Inicia la conexión de nuevo.",
|
||
"cross_user": "La respuesta pertenece a una solicitud de otra cuenta. Reinicia la conexión desde tu propia cuenta.",
|
||
"nocode": "Polar no devolvió un código de autorización. Inténtalo de nuevo y permite el acceso en el diálogo de Polar.",
|
||
"nocreds": "Polar no está configurado en este servidor. Pide a tu administrador que añada las credenciales OAuth de Polar.",
|
||
"token": "El intercambio de token con Polar falló. Inicia la conexión de nuevo.",
|
||
"rate_limited": "Demasiados intentos de conexión. Espera un momento e inténtalo de nuevo.",
|
||
"generic": "Error desconocido al conectar. Inicia la conexión de nuevo.",
|
||
"already_linked": "Esta cuenta de Polar ya está conectada a otro perfil de HealthLog. Inicia sesión en Polar con la cuenta de este perfil o desconéctala primero del otro perfil."
|
||
},
|
||
"oura": "Oura",
|
||
"ouraDescription": "Conecta tu cuenta de Oura para sincronizar disposición, fases de sueño, variabilidad cardíaca y actividad diaria.",
|
||
"ouraViewData": "Ver tu sueño y recuperación",
|
||
"ouraCredentials": "Credenciales de API",
|
||
"ouraClientId": "Client ID",
|
||
"ouraClientSecret": "Client Secret",
|
||
"ouraCredentialsSaved": "Credenciales guardadas",
|
||
"ouraCredentialsSavedPlaceholder": "Guardado. Introduce nuevas para reemplazar",
|
||
"ouraSaveCredentials": "Guardar",
|
||
"ouraUnavailable": "Oura no está configurado en este servidor. Añade arriba tus propias credenciales OAuth de Oura, o pide a tu administrador que configure la app compartida.",
|
||
"ouraConnect": "Conectar Oura",
|
||
"ouraSync": "Sincronizar ahora",
|
||
"ouraSyncResult": "{count} mediciones sincronizadas",
|
||
"ouraSyncFailed": "Error de sincronización",
|
||
"ouraDisconnect": "Desconectar",
|
||
"ouraDisconnectTitle": "¿Desconectar Oura?",
|
||
"ouraDisconnectDescription": "Las sincronizaciones futuras se detienen. Las lecturas ya importadas permanecen en tu historial.",
|
||
"ouraOauthConnected": "Oura conectado: la primera sincronización empieza en segundo plano.",
|
||
"ouraOauthFailed": "Error al conectar con Oura",
|
||
"ouraOauthError": {
|
||
"csrf1": "La verificación de seguridad falló porque faltaba la cookie del navegador. Inicia la conexión de nuevo en el mismo navegador.",
|
||
"state": "La respuesta de Oura no coincidió con ninguna solicitud de conexión abierta. Inicia la conexión de nuevo.",
|
||
"cross_user": "La respuesta pertenece a una solicitud de otra cuenta. Reinicia la conexión desde tu propia cuenta.",
|
||
"nocode": "Oura no devolvió un código de autorización. Inténtalo de nuevo y permite el acceso en el diálogo de Oura.",
|
||
"nocreds": "Oura no está configurado en este servidor. Pide a tu administrador que añada las credenciales OAuth de Oura.",
|
||
"token": "El intercambio de token con Oura falló. Inicia la conexión de nuevo.",
|
||
"rate_limited": "Demasiados intentos de conexión. Espera un momento e inténtalo de nuevo.",
|
||
"issuer": "La respuesta de inicio de sesión no procedía del servidor de autorización de Oura, así que la conexión se detuvo por tu seguridad. Vuelve a iniciar la conexión. Si sigue ocurriendo, avisa a tu administrador.",
|
||
"generic": "Error desconocido al conectar. Inicia la conexión de nuevo.",
|
||
"already_linked": "Esta cuenta de Oura ya está conectada a otro perfil de HealthLog. Inicia sesión en Oura con la cuenta de este perfil o desconéctala primero del otro perfil."
|
||
},
|
||
"integrationSetupGuide": "Guía de configuración",
|
||
"coach": {
|
||
"memory": {
|
||
"edit": "Editar",
|
||
"source": {
|
||
"user": "de ti",
|
||
"coach": "del Coach"
|
||
}
|
||
},
|
||
"state": {
|
||
"title": "Coach",
|
||
"description": "Si se muestran el botón y el panel del Coach. El interruptor está en Módulos."
|
||
},
|
||
"nudgesMoved": "Se ajustan con tus otros recordatorios en Notificaciones.",
|
||
"openNudges": "Abrir en Notificaciones"
|
||
},
|
||
"integrationRedirectGuide": {
|
||
"intro": "Esto se conecta mediante tu propia app de desarrollador de {provider}, con unos 5 minutos de configuración:",
|
||
"step1": "Crea una app en el portal de desarrolladores de {provider}.",
|
||
"step2": "Configura su URL de redirección/callback en:",
|
||
"step3": "Pega arriba el ID de cliente y el secreto de cliente que te da."
|
||
},
|
||
"security": {
|
||
"sessionsTitle": "Sesiones activas",
|
||
"sessionsDescription": "Dispositivos y navegadores con sesión iniciada en tu cuenta.",
|
||
"sessionsLoadError": "No se pudieron cargar las sesiones activas.",
|
||
"sessionsEmpty": "No hay sesiones activas.",
|
||
"currentSession": "Este dispositivo",
|
||
"lastActive": "Última actividad {time}",
|
||
"unknownLocation": "Ubicación desconocida",
|
||
"revokeSession": "Cerrar sesión",
|
||
"revokeError": "No se pudo completar la solicitud. Inténtalo de nuevo.",
|
||
"signOutEverywhere": "Cerrar sesión en los demás dispositivos",
|
||
"signOutEverywhereDone": "Se cerraron {count} sesión(es)",
|
||
"activityTitle": "Actividad de seguridad",
|
||
"activityDescription": "Inicios de sesión, cambios de seguridad y exportaciones recientes de tu cuenta.",
|
||
"activityEmpty": "Aún no hay actividad de seguridad.",
|
||
"activityLoadError": "No se pudo cargar la actividad de seguridad.",
|
||
"action": {
|
||
"newDevice": "Inicio desde nuevo dispositivo",
|
||
"loginFailed": "Inicio de sesión fallido",
|
||
"login": "Inicio de sesión",
|
||
"passwordChange": "Contraseña cambiada",
|
||
"mfa": "Cambio de doble factor",
|
||
"sessionRevoke": "Sesión cerrada",
|
||
"token": "Cambio de token de API",
|
||
"accountDelete": "Cuenta eliminada",
|
||
"dataClear": "Datos restablecidos",
|
||
"export": "Exportación de datos",
|
||
"other": "Evento de seguridad"
|
||
},
|
||
"active": "Activo",
|
||
"inactive": "Inactivo",
|
||
"stepUpRequired": "Por tu seguridad, vuelve a iniciar sesión para cambiar tu segundo factor.",
|
||
"useRecoveryCode": "Usar un código de recuperación en su lugar",
|
||
"useAuthenticator": "Usar tu aplicación de autenticación en su lugar",
|
||
"totp": {
|
||
"title": "Aplicación de autenticación",
|
||
"description": "Usa un código temporal de una aplicación de autenticación como segundo factor.",
|
||
"setUp": "Configurar",
|
||
"step1": "Escanea el código QR con tu aplicación de autenticación o introduce el secreto manualmente.",
|
||
"step2": "Introduce el código de 6 dígitos que muestra la aplicación para confirmar.",
|
||
"qrAlt": "Código QR para configurar la aplicación de autenticación",
|
||
"qrUnavailable": "Código QR no disponible",
|
||
"manualEntry": "O introduce este secreto manualmente",
|
||
"enterCode": "Introduce el código de 6 dígitos",
|
||
"verify": "Verificar",
|
||
"setupFailed": "No se pudo iniciar la configuración. Inténtalo de nuevo.",
|
||
"invalidCode": "Ese código no es válido. Inténtalo de nuevo.",
|
||
"disable": "Desactivar",
|
||
"disableTitle": "Desactivar la autenticación de dos factores",
|
||
"disableConfirm": "Introduce un código actual para desactivar tu segundo factor. Esto también elimina tus códigos de recuperación.",
|
||
"currentCode": "Código actual",
|
||
"disableFailed": "No se pudo desactivar el segundo factor."
|
||
},
|
||
"recovery": {
|
||
"saveNow": "Guarda ahora estos códigos de recuperación",
|
||
"saveNowHint": "Cada código funciona una sola vez. Solo se muestran esta vez: guárdalos en un lugar seguro. Si pierdes tu autenticador, un código de recuperación es la única forma de volver a entrar.",
|
||
"download": "Descargar",
|
||
"remainingOne": "Queda {count} código de recuperación.",
|
||
"remainingOther": "Quedan {count} códigos de recuperación.",
|
||
"regenerate": "Regenerar códigos",
|
||
"regenFailed": "No se pudieron regenerar los códigos de recuperación.",
|
||
"savedIt": "Los he guardado",
|
||
"regenerateTitle": "¿Regenerar los códigos de recuperación?",
|
||
"regenerateConfirm": "Esto reemplaza tus códigos de recuperación actuales. Tus códigos existentes dejarán de funcionar de inmediato y el nuevo conjunto se muestra solo una vez."
|
||
},
|
||
"keys": {
|
||
"title": "Llaves de seguridad",
|
||
"description": "Registra una llave de seguridad de hardware o de plataforma como segundo factor.",
|
||
"empty": "Aún no hay llaves de seguridad registradas.",
|
||
"add": "Añadir llave de seguridad",
|
||
"addFailed": "No se pudo registrar la llave de seguridad.",
|
||
"rename": "Cambiar nombre",
|
||
"renameFailed": "No se pudo cambiar el nombre de la llave de seguridad.",
|
||
"remove": "Quitar llave de seguridad",
|
||
"removeFailed": "No se pudo quitar la llave de seguridad.",
|
||
"removeConfirm": "Esta llave de seguridad dejará de funcionar como segundo factor.",
|
||
"lastUsed": "Usada por última vez el {date}",
|
||
"neverUsed": "Nunca usada",
|
||
"added": "añadida el {date}",
|
||
"nameLabel": "Nombre de la llave de seguridad",
|
||
"addedToast": "Llave de seguridad añadida.",
|
||
"removedToast": "Llave de seguridad eliminada."
|
||
},
|
||
"passkeyNudge": {
|
||
"title": "Añade una clave de acceso para iniciar sesión más rápido",
|
||
"body": "Las claves de acceso te permiten iniciar sesión con tu huella, tu cara o el PIN del dispositivo, sin contraseñas que recordar."
|
||
},
|
||
"trustedDevices": {
|
||
"title": "Dispositivos de confianza",
|
||
"description": "Los navegadores en los que confías omiten el segundo factor durante 30 días. La contraseña sigue siendo obligatoria. Revoca los que no reconozcas.",
|
||
"loadError": "No se pudieron cargar los dispositivos de confianza.",
|
||
"revokeError": "No se pudo revocar el dispositivo. Inténtalo de nuevo.",
|
||
"revoke": "Revocar",
|
||
"revokeAll": "Olvidar todos los dispositivos",
|
||
"revokeAllDone": "Se olvidaron {count} dispositivo(s) de confianza",
|
||
"unnamed": "Dispositivo desconocido",
|
||
"current": "Este dispositivo",
|
||
"expires": "De confianza hasta el {date}",
|
||
"revokeConfirmTitle": "¿Dejar de confiar en este dispositivo?",
|
||
"revokeConfirmBody": "Volverá a pedir tu segundo factor la próxima vez que inicies sesión desde él.",
|
||
"revokeAllConfirmTitle": "¿Dejar de confiar en todos los dispositivos?",
|
||
"revokeAllConfirmBody": "Todos los dispositivos volverán a pedir tu segundo factor la próxima vez que inicies sesión, incluido este."
|
||
},
|
||
"revokeSessionConfirmTitle": "¿Cerrar la sesión de este dispositivo?",
|
||
"revokeSessionConfirmBody": "{device} tendrá que iniciar sesión de nuevo. Lo registrado en él no se ve afectado.",
|
||
"signOutEverywhereConfirmTitle": "¿Cerrar la sesión en los demás dispositivos?",
|
||
"signOutEverywhereConfirmBody": "Todos los demás dispositivos, cada asistente de IA conectado y cada token de API tendrán que volver a iniciar sesión o configurarse de nuevo. Este dispositivo sigue con la sesión iniciada. Nada de lo que has registrado se ve afectado.",
|
||
"signOutEverywhereShareLinks": "Terminar también los enlaces compartidos con profesionales médicos",
|
||
"signOutEverywhereInvites": "Se retiran las invitaciones a tu historial que nadie ha aceptado todavía. Quien ya aceptó conserva el acceso; puedes quitárselo a continuación.",
|
||
"signOutEverywhereInvitesDone": "Se retiraron {count} invitación(es) que nadie había aceptado.",
|
||
"grantsKeptTitle": "Estas personas todavía pueden ver tu historial",
|
||
"grantsKeptBody": "Cerrar sesión no quita el acceso que diste a alguien. Quítalo aquí si no lo diste o si ya no quieres que lo tenga."
|
||
},
|
||
"privacy": {
|
||
"encryption": {
|
||
"title": "Cifrado en reposo",
|
||
"summary": "Tus datos sensibles se cifran en reposo con {algorithm} en {columns} campos de {models} tipos de registro.",
|
||
"statement": "Tus datos sensibles se cifran en reposo con AES-256-GCM."
|
||
},
|
||
"stored": {
|
||
"title": "Qué se almacena",
|
||
"measurements": "Mediciones: peso, presión arterial, pulso y cualquier otro valor que registres tú o un dispositivo",
|
||
"integrations": "Tokens de integración (cifrados)",
|
||
"security": "Actividad de la cuenta y de seguridad (sesiones, registro de inicio de sesión)",
|
||
"profile": "Tu perfil, tus antecedentes médicos y los datos del historial de salud",
|
||
"modules": "Registros de cada módulo: {list}"
|
||
},
|
||
"workoutRoutes": {
|
||
"title": "Rutas de entrenamiento",
|
||
"description": "Guardar el recorrido GPS de los entrenamientos nuevos de la app de iPhone y de la exportación de Apple Salud.",
|
||
"detail": "Desactivado en las cuentas nuevas. Una ruta muestra dónde vives, trabajas y entrenas, así que solo se guarda cuando lo activas. Los entrenamientos se guardan siempre y ninguna función de IA lee nunca una ruta. Al desactivarlo dejan de guardarse rutas nuevas; las ya guardadas se quedan hasta que borres el entrenamiento.",
|
||
"loadError": "No se pudo cargar el ajuste de rutas."
|
||
},
|
||
"retention": {
|
||
"title": "Retención",
|
||
"description": "Cuánto tiempo se conservan los registros con límite temporal antes de su limpieza automática.",
|
||
"coach": "Conversaciones con el asistente: {days} días",
|
||
"audit": "Registro de seguridad: {days} días",
|
||
"delivery": "Registro de envío de notificaciones: {days} días",
|
||
"unavailable": "Los detalles de retención no están disponibles en este momento."
|
||
},
|
||
"delete": {
|
||
"title": "Eliminar o restablecer",
|
||
"description": "Elimina tu cuenta por completo o borra tus registros de salud conservando la cuenta.",
|
||
"backupLag": "La eliminación borra tus datos de inmediato. Si este servidor guarda copias de seguridad cifradas externas, las copias de tus datos se borran de ese almacenamiento justo después, o en la siguiente ejecución nocturna si no está disponible.",
|
||
"openAdvanced": "Eliminar o restablecer"
|
||
},
|
||
"posture": {
|
||
"title": "Configuración de privacidad",
|
||
"description": "Controla cuántos de tus datos se comparten con las funciones de IA.",
|
||
"openAi": "Modo de privacidad de IA"
|
||
},
|
||
"sessions": {
|
||
"title": "Sesiones y dispositivos",
|
||
"description": "Dónde tienes la sesión iniciada, qué dispositivos omiten el segundo factor y la actividad de seguridad de tu cuenta.",
|
||
"open": "Abrir seguridad"
|
||
}
|
||
},
|
||
"mcp": {
|
||
"enableTitle": "Endpoint MCP remoto",
|
||
"enableDescription": "Permite que un asistente compatible con MCP (Claude.ai, ChatGPT) lea tus datos de salud mediante un token limitado.",
|
||
"endpointLabel": "URL del conector",
|
||
"connectDescription": "Pega esta URL en la configuración del conector personalizado de tu asistente y autoriza con el token de abajo o inicia sesión cuando se te solicite.",
|
||
"tokensTitle": "Tokens del conector",
|
||
"tokensDescription": "Genera un token para conectar un asistente: solo lectura, salvo que permitas el registro abajo.",
|
||
"scopeNote": "Los tokens nuevos solo pueden leer tus propios registros. El acceso de escritura (health:write) se concede por token con el interruptor de abajo. Un token nunca puede acceder a funciones de administración.",
|
||
"writeScopeToggleLabel": "Permitir registro (health:write)",
|
||
"writeScopeNote": "Añade el ámbito health:write para que el asistente pueda registrar nuevas mediciones y entradas de estado de ánimo en tu cuenta. Cada escritura se confirma antes. El token sigue sin poder eliminar ni editar entradas existentes, cambiar medicamentos ni acceder a funciones REST o de administración. Déjalo desactivado para acceso de solo lectura.",
|
||
"connectionsTitle": "Asistentes conectados",
|
||
"connectionsDescription": "Asistentes que autorizaste mediante el inicio de sesión.",
|
||
"noConnections": "No hay asistentes conectados.",
|
||
"connectionConnected": "Conectado",
|
||
"connectionLastUsed": "Último uso",
|
||
"connectionNeverUsed": "Nunca usado",
|
||
"connectionRevoke": "Desconectar",
|
||
"connectionRevokeDescription": "Esto finaliza el acceso del asistente de inmediato e impide su renovación. Será necesario autorizarlo de nuevo para volver a conectarlo.",
|
||
"connectionRevokeFailed": "No se pudo desconectar el asistente.",
|
||
"tokensDetail": "El token se muestra una sola vez.",
|
||
"connectionsDetail": "Revocar una conexión finaliza su acceso de inmediato, incluida su capacidad de renovación.",
|
||
"tokenNamePlaceholder": "Nombre, p. ej. Claude Desktop",
|
||
"offKeepsTokens": "Desactivarlo pausa el punto de acceso. Tus tokens y conexiones se mantienen y vuelven a funcionar al activarlo."
|
||
},
|
||
"strava": "Strava",
|
||
"stravaDescription": "Conecta tu cuenta de Strava para sincronizar tus actividades con tu historial de entrenamientos.",
|
||
"stravaViewData": "Ver tus entrenamientos",
|
||
"stravaCredentials": "Credenciales de API",
|
||
"stravaClientId": "ID de cliente",
|
||
"stravaClientSecret": "Secreto de cliente",
|
||
"stravaCredentialsSaved": "Credenciales guardadas",
|
||
"stravaCredentialsSavedPlaceholder": "Guardadas. Introduce nuevas para reemplazar",
|
||
"stravaSaveCredentials": "Guardar",
|
||
"stravaUnavailable": "Strava no está configurado en este servidor. Añade arriba tus propias credenciales de API de Strava o pide a tu administrador que configure la app compartida.",
|
||
"stravaConnect": "Conectar Strava",
|
||
"stravaSync": "Sincronizar ahora",
|
||
"stravaSyncResult": "{count} mediciones sincronizadas",
|
||
"stravaSyncFailed": "Error de sincronización",
|
||
"stravaDisconnect": "Desconectar",
|
||
"stravaDisconnectTitle": "¿Desconectar Strava?",
|
||
"stravaDisconnectDescription": "Las sincronizaciones futuras se detienen. Las actividades ya importadas permanecen en tu historial.",
|
||
"stravaOauthConnected": "Strava conectado: la primera sincronización comienza en segundo plano.",
|
||
"stravaOauthFailed": "La conexión con Strava falló",
|
||
"stravaOauthError": {
|
||
"csrf1": "La comprobación de seguridad falló porque faltaba la cookie del navegador. Inicia la conexión de nuevo en el mismo navegador.",
|
||
"state": "La respuesta de Strava no coincidió con ninguna solicitud de conexión abierta. Inicia la conexión de nuevo.",
|
||
"cross_user": "La respuesta pertenece a una solicitud de otra cuenta. Reinicia la conexión desde tu propia cuenta.",
|
||
"nocode": "Strava no devolvió un código de autorización. Inténtalo de nuevo y permite el acceso en el diálogo de Strava.",
|
||
"nocreds": "Strava no está configurado en este servidor. Pide a tu administrador que añada las credenciales de API de Strava.",
|
||
"token": "El intercambio de tokens con Strava falló. Inicia la conexión de nuevo.",
|
||
"rate_limited": "Demasiados intentos de conexión. Espera un momento e inténtalo de nuevo.",
|
||
"generic": "Error desconocido al conectar. Inicia la conexión de nuevo.",
|
||
"already_linked": "Esta cuenta de Strava ya está conectada a otro perfil de HealthLog. Inicia sesión en Strava con la cuenta de este perfil o desconéctala primero del otro perfil."
|
||
},
|
||
"appleHealth": {
|
||
"title": "Apple Health",
|
||
"description": "La sincronización en vivo se realiza desde la app HealthLog para iOS, no mediante una conexión web ni OAuth.",
|
||
"status": {
|
||
"unavailable": "Estado de Apple Health no disponible"
|
||
},
|
||
"setupTitle": "Activar la sincronización en vivo",
|
||
"permissionStep": "En la app HealthLog para iOS, abre Ajustes → Apple Health y permite las categorías de salud que quieras compartir.",
|
||
"backgroundStep": "Mantén activada la actualización en segundo plano. La app sincroniza datos nuevos automáticamente en primer plano y cuando iOS le concede tiempo en segundo plano.",
|
||
"importNote": "¿Necesitas un historial anterior o no puedes usar la app de iOS? La carga XML/ZIP de Apple Health es una alternativa puntual y no activa la sincronización en vivo.",
|
||
"importAction": "Abrir importación puntual",
|
||
"progress": {
|
||
"title": "Progreso de sincronización",
|
||
"receivedLabel": "Registros recibidos",
|
||
"oldestLabel": "Lectura más antigua alcanzada",
|
||
"flowing": "Han llegado datos en la última hora. La app del iPhone sigue enviando.",
|
||
"waiting": "Esperando a que la app del iPhone envíe más datos. La transferencia continúa cuando la app está abierta o cuando iOS le concede tiempo en segundo plano. Una pausa durante la primera sincronización grande es normal, no un error."
|
||
},
|
||
"delivery": {
|
||
"title": "Entrega",
|
||
"lastTriggerLabel": "La última sincronización llegó",
|
||
"lastBackgroundLabel": "Última sincronización en segundo plano",
|
||
"backgroundNever": "Nunca: hasta ahora todas las sincronizaciones llegaron con la app abierta",
|
||
"noSyncYet": "Aún no ha llegado ninguna sincronización, así que no hay nada que informar aquí.",
|
||
"trigger": {
|
||
"foreground": "con la app abierta",
|
||
"background": "en segundo plano",
|
||
"push": "desde un aviso push",
|
||
"unknown": "la app no informó del desencadenante",
|
||
"manual": "desde «Sincronizar todo»"
|
||
}
|
||
},
|
||
"freshness": {
|
||
"title": "Por tipo de dato",
|
||
"lastReceived": "Última recepción {relative}",
|
||
"lastNewValue": "Último valor nuevo {relative}",
|
||
"lastBackground": "Última vez en segundo plano {relative}",
|
||
"lastDuplicate": "Último reenvío sin datos nuevos {relative}",
|
||
"never": "Aún no recibido",
|
||
"lastBackfill": "Historial recuperado {relative}",
|
||
"lastEnteredHere": "Último registro aquí {relative}"
|
||
}
|
||
},
|
||
"garminInfo": {
|
||
"title": "Garmin",
|
||
"body": "Garmin no tiene conexión directa aquí. Conéctalo a través de Apple Health (iOS) o Google Health Connect (Android). Las métricas propias de Garmin (Body Battery, Training Load, estado de HRV, VO₂ máx.) no las comparte Garmin con ninguna de las dos plataformas.",
|
||
"docsLink": "Leer la guía"
|
||
},
|
||
"glucoseReference": {
|
||
"title": "Banda de referencia de glucosa",
|
||
"description": "Con qué banda se evalúan tus valores de glucosa en sangre.",
|
||
"enable": "Usar la banda objetivo para diabetes",
|
||
"explainer": "Desactivado, los valores se evalúan con la banda de referencia general no diabética. Activado, se evalúan con la banda objetivo glucémica más estrecha de los ADA Standards of Care, y el Coach fundamenta sus comentarios sobre glucosa en esa banda. Tus propios valores objetivo personalizados de abajo siguen teniendo prioridad.",
|
||
"disclaimer": "Esto selecciona una banda de referencia. No es un diagnóstico, nunca se deduce de una medición y la aplicación no actúa clínicamente en consecuencia. Qué objetivos se aplican a ti es una pregunta para tu profesional sanitario.",
|
||
"error": "No se pudo guardar el ajuste."
|
||
},
|
||
"dangerZoneDetail": "Tu cuenta y las credenciales con las que inicias sesión se conservan.",
|
||
"deleteAccountCardDetail": "Esto no se puede deshacer.",
|
||
"passkeyStepUpRequired": "Por seguridad, vuelve a iniciar sesión antes de quitar una clave de acceso.",
|
||
"setup": {
|
||
"title": "Configuración inicial",
|
||
"description": "Las preguntas que deciden qué muestra HealthLog primero, y la lista de primeros pasos del panel.",
|
||
"setUpAgain": "Configurar de nuevo",
|
||
"showChecklist": "Mostrar la lista de nuevo",
|
||
"checklistShown": "La lista vuelve a estar en el panel.",
|
||
"checklistNothingHidden": "La lista no estaba oculta; se abre en el panel."
|
||
},
|
||
"documentSources": {
|
||
"title": "Archivos de documentos",
|
||
"description": "Busca en Paperless-ngx o Papra desde HealthLog e importa los documentos que elijas.",
|
||
"explainer": "Aparece un botón de importar allí donde vinculas documentos: en visitas, vacunas y afecciones, y en Documentos. HealthLog guarda su propia copia cifrada de cada documento importado y solo consulta tu archivo cuando buscas o importas.",
|
||
"systemLabel": "Archivo",
|
||
"statusConnected": "Conectado",
|
||
"statusNotConnected": "No conectado",
|
||
"connectedSince": "Conectado, última comprobación el {date}",
|
||
"originRemoved": "Esta dirección ya no está en la lista de archivos permitidos del servidor. Consulta a la administración o guarda otra dirección.",
|
||
"baseUrl": "Dirección",
|
||
"allowedOrigins": "Permitido en este servidor: {origins}",
|
||
"organizationId": "Id de organización",
|
||
"organizationHelp": "La parte que sigue a /organizations/ en la barra de direcciones de Papra. Los id de organización de Papra tienen la forma org_ seguida de 24 letras y cifras.",
|
||
"token": "Token de la API",
|
||
"tokenSaved": "Guardado para esta dirección. Déjalo vacío para conservarlo.",
|
||
"tokenHelpPaperless": "En Paperless-ngx: Mi perfil, token de la API.",
|
||
"tokenHelpPapra": "En Papra: una clave de API con documents:read y tags:read.",
|
||
"save": "Guardar y probar",
|
||
"saving": "Probando…",
|
||
"saved": "Conectado. El archivo respondió.",
|
||
"test": "Probar",
|
||
"testOk": "El archivo respondió en {latency} ms.",
|
||
"disconnect": "Desconectar",
|
||
"disconnectTitle": "¿Desconectar {name}?",
|
||
"disconnectDescription": "HealthLog olvida la dirección y el token. Los documentos ya importados se quedan en HealthLog.",
|
||
"unavailableExplainer": "Este servidor ya no permite archivos de documentos, así que la conexión de abajo no se puede usar. Aún puedes eliminarla.",
|
||
"moduleOffExplainer": "Los documentos están desactivados, así que la conexión de abajo no se usa. Aún puedes eliminarla.",
|
||
"tokenNewAddress": "Una dirección nueva necesita de nuevo el token de la API."
|
||
},
|
||
"emailChangePassword": "Contraseña actual (necesaria para cambiar la dirección de correo)",
|
||
"reproof": {
|
||
"description": "Esto comparte o exporta tus datos de salud. Confirma que eres tú para continuar.",
|
||
"descriptionChange": "Esto cambia algo que solo tú deberías poder cambiar. Confirma que eres tú para continuar.",
|
||
"signInAgain": "Vuelve a iniciar sesión y inténtalo de nuevo. Tu cuenta no tiene contraseña ni llave de acceso que confirmar aquí.",
|
||
"failed": "No ha funcionado. Revisa lo que has introducido e inténtalo de nuevo."
|
||
},
|
||
"passwordTitle": "Contraseña",
|
||
"tokenNameLabel": "Nombre del token",
|
||
"displayCard": {
|
||
"title": "Visualización",
|
||
"description": "Idioma, unidades y formatos; se guardan en cuanto los cambias."
|
||
},
|
||
"integrationCard": {
|
||
"state": {
|
||
"ok": "Funciona",
|
||
"limited": "Limitada",
|
||
"degraded": "Con retraso",
|
||
"actionRequired": "Requiere acción"
|
||
},
|
||
"reason": {
|
||
"dataArriving": "Están llegando datos.",
|
||
"dataArrivingHistory": "Están llegando datos. El historial más antiguo se carga en segundo plano.",
|
||
"firstSyncPending": "Conectado. La primera sincronización se hará en breve.",
|
||
"planLimited": "Están llegando datos. Tu plan de {provider} no incluye {list}.",
|
||
"permissionLimited": "Están llegando datos. Falta el permiso para {list}.",
|
||
"providerErrors": "{provider} no responde de forma fiable desde {since}. HealthLog sigue intentándolo; no tienes que hacer nada.",
|
||
"providerErrorsNoSince": "{provider} no responde de forma fiable en este momento. HealthLog sigue intentándolo; no tienes que hacer nada.",
|
||
"syncStalled": "HealthLog no sincroniza desde {since}. Es cosa del servidor, no de tu dispositivo.",
|
||
"syncStalledNoSince": "HealthLog no está sincronizando en este momento. Es cosa del servidor, no de tu dispositivo.",
|
||
"noNewData": "No han llegado datos nuevos desde {since}.",
|
||
"noNewDataNoSince": "Hace tiempo que no llegan datos nuevos.",
|
||
"noNewDataApple": "No han llegado datos nuevos desde {since}. Abre HealthLog una vez en el iPhone.",
|
||
"noNewDataAppleNoSince": "Hace tiempo que no llegan datos nuevos. Abre HealthLog una vez en el iPhone.",
|
||
"unexpectedSilence": "No llega nada desde {since}, aunque {provider} suele enviar datos a diario.",
|
||
"unexpectedSilenceNoSince": "No llega nada, aunque {provider} suele enviar datos a diario.",
|
||
"reauthRequired": "La conexión con {provider} ha caducado. Vuelve a conectar para seguir recibiendo datos.",
|
||
"pausedAfterErrors": "{provider} está en pausa porque desde {since} solo ha habido errores.",
|
||
"pausedAfterErrorsNoSince": "{provider} está en pausa porque últimamente solo ha habido errores."
|
||
},
|
||
"when": {
|
||
"today": "hoy, {time}",
|
||
"yesterday": "ayer, {time}",
|
||
"date": "{date}, {time}"
|
||
},
|
||
"items": {
|
||
"activity": "actividad",
|
||
"sleep": "sueño"
|
||
},
|
||
"moreValuesOne": "{count} valor más",
|
||
"moreValuesFew": "{count} valores más",
|
||
"moreValuesOther": "{count} valores más",
|
||
"notConnected": "No conectado.",
|
||
"lastData": "Últimos datos: {when}",
|
||
"lastDataNone": "Últimos datos: todavía ninguno",
|
||
"reconnect": "Volver a conectar",
|
||
"resume": "Reanudar",
|
||
"menuLabel": "Más acciones para {provider}",
|
||
"menu": {
|
||
"credentials": "Cambiar credenciales",
|
||
"address": "Cambiar dirección y token"
|
||
},
|
||
"syncing": "Sincronizando…",
|
||
"details": {
|
||
"title": "Detalles para un informe de error",
|
||
"none": "ninguno",
|
||
"state": "Estado",
|
||
"since": "desde",
|
||
"lastSync": "Última sincronización",
|
||
"lastData": "Últimos datos",
|
||
"failingParts": "partes con fallos",
|
||
"recentCalls": "Últimas llamadas",
|
||
"unavailable": "No disponible",
|
||
"unavailableList": "No disponible: {list}",
|
||
"causePlan": "plan",
|
||
"causePermission": "permiso",
|
||
"failureStreak": "Racha de fallos: {count} de {threshold}",
|
||
"copyFailed": "No se pudo copiar. Selecciona el texto y cópialo a mano."
|
||
},
|
||
"historyEnds": {
|
||
"horizon": "{type}: importado hasta el {date}. Las lecturas más antiguas quedan fuera del límite de importación.",
|
||
"noProgress": "{type}: importado hasta el {date}. Google dejó de devolver lecturas más antiguas, así que la importación termina ahí."
|
||
}
|
||
},
|
||
"dawarich": "Dawarich",
|
||
"dawarichTag": "Movimiento",
|
||
"dawarichDescription": "Conecta tu instancia de Dawarich para traer la distancia diaria, el tiempo fuera de casa y los días de viaje.",
|
||
"dawarichUrl": "Dirección de Dawarich",
|
||
"dawarichApiKey": "Clave de API",
|
||
"dawarichApiKeyHelp": "Lo encuentras en Dawarich en Cuenta. HealthLog solo lee valores diarios con ella, nunca coordenadas ni nombres de lugares.",
|
||
"dawarichConnect": "Conectar",
|
||
"dawarichUpdate": "Guardar cambios",
|
||
"dawarichConnected": "Dawarich conectado. Se están cargando los últimos 30 días.",
|
||
"dawarichSync": "Obtener ahora",
|
||
"dawarichSyncQueued": "Los últimos siete días se obtendrán en breve.",
|
||
"dawarichSyncAlreadyQueued": "Ya hay una obtención en curso.",
|
||
"dawarichDisconnect": "Desconectar",
|
||
"dawarichDisconnectTitle": "¿Desconectar Dawarich?",
|
||
"dawarichDisconnectDescription": "Las próximas obtenciones se detienen. Los días ya guardados se conservan.",
|
||
"dawarichDisconnectDelete": "Desconectar y borrar los días",
|
||
"dawarichDisconnectDeleteTitle": "¿Desconectar y borrar todos los días?",
|
||
"dawarichDisconnectDeleteDescription": "Se eliminan la conexión y todos los días de movimiento guardados. No se puede deshacer.",
|
||
"dawarichHomePlaceSet": "El hogar está definido.",
|
||
"dawarichHomePlaceMissing": "Define tu hogar para poder medir el tiempo fuera de casa.",
|
||
"dawarichHomeCountryIs": "País de residencia: {country}.",
|
||
"dawarichHomeCountryMissing": "Aún no hay país de residencia, así que no hay días de viaje.",
|
||
"dawarichDaysStored": "Días guardados: {count}",
|
||
"dawarichHomePlace": "Hogar",
|
||
"dawarichHomePlaceChoose": "Elige un lugar de Dawarich",
|
||
"dawarichHomePlaceChange": "Elegir hogar",
|
||
"dawarichHomeCountry": "País de residencia",
|
||
"dawarichHomeCountryHelp": "Código de país de dos letras, como DE. Si lo dejas vacío, cuenta el país donde pasaste más días el último año.",
|
||
"dawarichHomeSave": "Guardar",
|
||
"dawarichHomeSaved": "Guardado.",
|
||
"dawarichErrors": {
|
||
"invalid": "Esa dirección no funciona. Usa la dirección de la instancia sin credenciales.",
|
||
"privateOrigin": "Esta instancia está en una red privada. Pide al operador del servidor que la autorice.",
|
||
"credentials": "Dawarich no aceptó la clave de API.",
|
||
"unreachable": "No se puede acceder a Dawarich. Comprueba la dirección y que la instancia esté en marcha.",
|
||
"rateLimited": "Demasiados intentos. Espera un momento y vuelve a intentarlo.",
|
||
"homePlaceUnknown": "La instancia de Dawarich ya no conoce este lugar.",
|
||
"notConnected": "Dawarich no está conectado.",
|
||
"generic": "No ha funcionado. Inténtalo de nuevo."
|
||
},
|
||
"fitbitRetirement": {
|
||
"ending": "Google desactivará la API web de Fitbit el {date}. A partir de entonces, esta conexión dejará de sincronizar.",
|
||
"ended": "Google desactivó la API web de Fitbit el {date}. Esta conexión ya no sincroniza.",
|
||
"move": "Google Health lee los mismos dispositivos Fitbit y Pixel. Conéctalo abajo para que tus datos sigan llegando. Google te pedirá tu consentimiento otra vez, porque la conexión de Fitbit no se puede transferir. Todo lo ya importado se conserva.",
|
||
"toCard": "Ir a Google Health",
|
||
"guide": "Cómo conectar Google Health",
|
||
"badgeEnding": "Se desactiva pronto",
|
||
"badgeEnded": "Desactivado"
|
||
},
|
||
"passkeyAddedToast": "Passkey añadida.",
|
||
"passkeyRemovedToast": "Passkey eliminada.",
|
||
"integrationDisconnected": "{provider} desconectado.",
|
||
"integrationDisconnectFailed": "No se pudo desconectar {provider}.",
|
||
"timezoneSaved": "Zona horaria guardada.",
|
||
"moduleState": {
|
||
"on": "Activado",
|
||
"off": "Desactivado",
|
||
"change": "Cambiar en Módulos"
|
||
},
|
||
"timezoneUseDevice": "Usar la zona horaria de este dispositivo ({zone})"
|
||
},
|
||
"admin": {
|
||
"title": "Administration",
|
||
"subtitle": "Estado del sistema, usuarios y ajustes",
|
||
"settingsSaveError": "No se pudieron guardar los ajustes",
|
||
"systemStatus": "Estado del sistema",
|
||
"systemStatusDescription": "Estado de ejecución de esta instancia: base de datos, worker y contadores.",
|
||
"database": "Base de datos",
|
||
"databaseConnected": "Conectada",
|
||
"databaseError": "Error",
|
||
"startedAt": "Iniciado",
|
||
"users": "Usuarios",
|
||
"measurementsCount": "Mediciones",
|
||
"activeTokens": "Tokens de API activos",
|
||
"activeSessions": "Sesiones activas",
|
||
"loadingStatus": "Cargando estado...",
|
||
"systemStatusLoadError": "No se pudo cargar el estado del sistema.",
|
||
"systemStatusRetry": "Reintentar",
|
||
"adminSettingsLoadError": "No se pudieron cargar los ajustes de administración. Los interruptores de abajo pueden no reflejar el estado actual: recarga la página.",
|
||
"hostMetrics": {
|
||
"title": "Carga del host",
|
||
"load1": "Carga (1m)",
|
||
"memUsedPercent": "Memoria",
|
||
"diskBusyPercent": "Disk I/O",
|
||
"last2hours": "Últimas 2 horas",
|
||
"empty": "Muestreo iniciado: los datos aparecen en 1–2 minutos.",
|
||
"loadError": "No se pudieron cargar las métricas del host. Prueba a recargar la página."
|
||
},
|
||
"aiServerKey": {
|
||
"title": "Clave de IA del servidor",
|
||
"description": "Una clave del operador para las cuentas que no tienen una propia.",
|
||
"byokHint": "La clave propia del usuario (BYOK, inicio de sesión de ChatGPT o proveedor local) siempre tiene prioridad; la clave del servidor es el último paso de la cadena de proveedores.",
|
||
"consentHint": "Las solicitudes con la clave del servidor requieren el consentimiento de IA activo del usuario; sin un recibo de consentimiento no se envía nada.",
|
||
"baseUrlHint": "La URL base determina la API: se reconoce una URL de Anthropic como https://api.anthropic.com/v1, cualquier otro host se llama a través de la API compatible con OpenAI.",
|
||
"statusConfigured": "Configurada",
|
||
"statusNotConfigured": "Sin configurar",
|
||
"keyLabel": "Clave de API",
|
||
"keyPlaceholder": "sk-...",
|
||
"keyPlaceholderSet": "Guardada ({preview}). Introduce una clave nueva para reemplazarla",
|
||
"modelLabel": "Modelo",
|
||
"baseUrlLabel": "URL base",
|
||
"save": "Guardar",
|
||
"remove": "Eliminar clave",
|
||
"removeTitle": "¿Eliminar la clave del servidor?",
|
||
"removeBody": "Las cuentas sin clave propia pierden las funciones de IA de inmediato. La clave no se muestra en ningún sitio una vez guardada, así que necesitarás el original para volver a ponerla.",
|
||
"removeConfirm": "Eliminar clave",
|
||
"saved": "Ajustes de la clave de IA del servidor guardados",
|
||
"error": "No se pudo guardar la clave de IA del servidor",
|
||
"legacyGrantTitle": "ALLOW_LOCAL_AI_PRIVATE_HOSTS=true está obsoleto",
|
||
"legacyGrantBody": "Sigue permitiendo que la clave del servidor de arriba y la configuración de IA guardada en una cuenta de administrador lleguen a tu red, y se eliminará en una versión posterior. Las demás cuentas ya necesitan su endpoint de IA en AI_PRIVATE_ORIGINS. Define AI_PRIVATE_ORIGINS en el entorno del servidor, reinicia y después elimina ALLOW_LOCAL_AI_PRIVATE_HOSTS.",
|
||
"legacyGrantOrigins": "Las URL de IA guardadas en esta instancia que apuntan a tu red:",
|
||
"legacyGrantNoOrigins": "Ninguna URL de IA guardada en esta instancia apunta a tu red, así que ya puedes eliminar ALLOW_LOCAL_AI_PRIVATE_HOSTS."
|
||
},
|
||
"providerHealth": {
|
||
"title": "Estado de los proveedores de IA",
|
||
"description": "Estado de entrega de cada proveedor de IA, agregado del registro de reintentos por usuario.",
|
||
"loading": "Cargando el estado de los proveedores…",
|
||
"loadError": "No se pudo cargar el estado de los proveedores.",
|
||
"empty": "Aún no se han registrado llamadas de IA.",
|
||
"trackedUsers": "{count} usuarios registrados",
|
||
"lastOk": "último éxito {at}",
|
||
"lastFailure": "último fallo {at}",
|
||
"lastFailureStatus": "HTTP {status}",
|
||
"statusHealthy": "Correcto",
|
||
"statusFailing": "{failing} de {tracked} fallan, {run} seguidos",
|
||
"typeAdminOpenai": "Clave del servidor (operador)",
|
||
"typeAdminCodex": "ChatGPT central (operador)",
|
||
"typeOpenai": "Clave de OpenAI (personal)",
|
||
"typeAnthropic": "Clave de Anthropic (personal)",
|
||
"typeCodex": "Inicio de sesión de ChatGPT (personal)",
|
||
"typeLocal": "Modelo local (personal)",
|
||
"typeGateway": "Pasarela compatible con OpenAI (personal)",
|
||
"spendToday": "Hoy, en el día natural de cada cuenta: {total} tokens, {operator} de ellos en la clave del operador (cuentas con consumo: {accounts}).",
|
||
"statusPaused": "En pausa",
|
||
"pausedHint": "En pausa tras fallos repetidos para {count} usuarios hasta {at}. Después se vuelve a intentar automáticamente.",
|
||
"modelNotServed": "El endpoint ya no ofrece el modelo {model}. Elige en los ajustes de IA un modelo que ofrezca.",
|
||
"usageLevels": "Cuentas por nivel de uso de la IA: {frugal} ahorro, {standard} estándar, {full} completo."
|
||
},
|
||
"aiQuality": {
|
||
"title": "Calidad de los análisis",
|
||
"loading": "Cargando resumen de comentarios...",
|
||
"loadError": "No se pudo cargar el resumen de calidad de los análisis. Prueba a recargar la página.",
|
||
"empty": "Aún no hay comentarios. El agregador se ejecuta a diario a las 04:00; en cuanto los usuarios valoren las recomendaciones, aquí aparecerán las tasas de utilidad.",
|
||
"windowLabel": "Últimos {days} días",
|
||
"generatedAtLabel": "Generado",
|
||
"colSeverity": "Gravedad",
|
||
"colMetric": "Métrica",
|
||
"colProvider": "Proveedor",
|
||
"colPromptVersion": "Prompt",
|
||
"colHelpful": "Útil",
|
||
"colNotHelpful": "No útil",
|
||
"colHelpfulRate": "Tasa de utilidad"
|
||
},
|
||
"coachFeedback": {
|
||
"title": "Comentarios del Coach",
|
||
"loading": "Cargando resumen de comentarios del Coach...",
|
||
"loadError": "No se pudo cargar el resumen de comentarios del Coach. Prueba a recargar la página.",
|
||
"empty": "Aún no hay comentarios del Coach. El agregador se ejecuta a diario a las 04:00; en cuanto los usuarios valoren las respuestas del Coach, aquí aparecerán las tasas de utilidad.",
|
||
"windowLabel": "Últimos {days} días",
|
||
"generatedAtLabel": "Generado",
|
||
"colPromptVersion": "Versión del prompt",
|
||
"colTone": "Tono",
|
||
"colVerbosity": "Nivel de detalle",
|
||
"colHelpful": "Útil",
|
||
"colNotHelpful": "No útil",
|
||
"colN": "n",
|
||
"colHelpfulRate": "Tasa de utilidad"
|
||
},
|
||
"workerStatus": "Worker de tareas",
|
||
"workerRunning": "En ejecución",
|
||
"workerStopped": "Detenido",
|
||
"lastReminderCheck": "Última comprobación de recordatorios",
|
||
"appSettings": "Ajustes de la aplicación",
|
||
"appSettingsDescription": "Valores globales por defecto para registro, idioma y zona horaria de cuentas nuevas.",
|
||
"registrationEnabled": "Permitir el registro",
|
||
"registrationEnabledDescription": "Cuando está desactivado, los nuevos usuarios no pueden registrarse.",
|
||
"registrationOpenHint": "El registro está abierto: cualquiera que pueda acceder a esta instancia puede crear una cuenta. Ciérralo aquí cuando todos tengan una cuenta.",
|
||
"defaultLanguage": "Idioma predeterminado",
|
||
"defaultLanguageDescription": "Se usa para los nuevos usuarios y como reserva.",
|
||
"defaultUserTimezone": "Zona horaria predeterminada para cuentas nuevas",
|
||
"defaultUserTimezoneDescription": "Se usa en cuentas nuevas sin zona detectada por el navegador; las cuentas existentes conservan la suya.",
|
||
"defaultUserTimezoneFallback": "Europe/Berlin (predeterminada)",
|
||
"servicesGlobal": "Canales y API",
|
||
"servicesGlobalDescription": "Los servicios desactivados no están disponibles para ningún usuario.",
|
||
"telegramGlobal": "Permitir notificaciones de Telegram.",
|
||
"ntfyGlobal": "Permitir notificaciones de ntfy.",
|
||
"webPushGlobal": "Permitir notificaciones push del navegador.",
|
||
"integrationWebPush": "Web Push",
|
||
"offlineGeoLabel": "Datos geográficos",
|
||
"offlineGeoEnabled": "Sin conexión (GeoLite2)",
|
||
"offlineGeoFallback": "En línea ({host}): monta las bases GeoLite2 y define GEOLITE2_DIR",
|
||
"heapLimitLabel": "Límite de heap",
|
||
"heapLimitValue": "{mb} MB",
|
||
"heapLimitLow": "{mb} MB, escaso: define APP_MEMORY_LIMIT=1536m en .env",
|
||
"memoryBelowFloor": "Contenedor {mb} MB, por debajo del mínimo admitido de {floor} MB: define APP_MEMORY_LIMIT={floor}m en .env",
|
||
"offlineGeoOff": "Desactivado",
|
||
"offlineGeoChosen": "En línea ({host})",
|
||
"apiGlobal": "Permitir endpoints de API y tokens de API.",
|
||
"umamiTitle": "Umami",
|
||
"umamiDescription": "Analítica web con Umami.",
|
||
"glitchtipTitle": "GlitchTip",
|
||
"glitchtipDescription": "Seguimiento de errores con GlitchTip.",
|
||
"webPushVapidTitle": "Web Push VAPID",
|
||
"umamiEnabled": "Activar el seguimiento de Umami",
|
||
"umamiScriptUrl": "URL del script de Umami",
|
||
"umamiScriptUrlPlaceholder": "https://analytics.example.com/script.js",
|
||
"umamiWebsiteId": "ID del sitio web de Umami",
|
||
"umamiWebsiteIdPlaceholder": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
|
||
"glitchtipEnabled": "Activar el seguimiento de errores de GlitchTip",
|
||
"glitchtipDsn": "GlitchTip DSN",
|
||
"glitchtipDsnPlaceholder": "https://<public-key>@glitchtip.example.com/<project-id>",
|
||
"glitchtipEnvironment": "Entorno de GlitchTip",
|
||
"glitchtipEnvironmentPlaceholder": "production",
|
||
"glitchtipTargetOn": "Los informes de errores van a {host}.",
|
||
"glitchtipTargetOff": "Los informes de errores se quedan en este host. No se envía nada.",
|
||
"glitchtipTargetNoTarget": "El seguimiento de errores está activado, pero no hay destino, así que no se envía nada.",
|
||
"glitchtipUnproven": "Sin confirmar",
|
||
"glitchtipDeliveryUnproven": "Hay un destino definido, pero ningún informe ha salido aún de este host. Pulsa Probar para ver si lo acepta.",
|
||
"glitchtipDeliveryStale": "Ningún informe ha salido de este host en las últimas {hours} h. Pulsa Probar para comprobar que el destino sigue aceptándolos.",
|
||
"glitchtipDeliveryFailed": "El último informe no llegó ({reason}).",
|
||
"webPushVapidDescription": "Configura aquí las claves VAPID y el subject para que el push del navegador funcione sin variables de entorno.",
|
||
"webPushVapidPublicKey": "Clave pública VAPID",
|
||
"webPushVapidPublicKeyPlaceholder": "BElx... (Base64URL)",
|
||
"webPushVapidPrivateKey": "Clave privada VAPID",
|
||
"webPushVapidPrivateKeyPlaceholder": "Opcional: introduce una nueva clave privada",
|
||
"webPushVapidSubject": "Subject de VAPID",
|
||
"webPushVapidSubjectPlaceholder": "mailto:you@example.com",
|
||
"webPushVapidGenerate": "Generar claves",
|
||
"webPushVapidGenerating": "Generando…",
|
||
"webPushVapidGenerated": "Claves VAPID generadas. Guarda el asunto para terminar.",
|
||
"webPushVapidGenerateFailed": "No se pudieron generar las claves VAPID.",
|
||
"webPushVapidGenerateConfirm": "Las claves VAPID ya están configuradas. Generar un par nuevo invalida todas las suscripciones push del navegador: cada dispositivo debe volver a suscribirse. ¿Continuar?",
|
||
"webPushVapidGenerateConfirmTitle": "¿Regenerar las claves VAPID?",
|
||
"webPushVapidRegenerate": "Regenerar",
|
||
"configured": "Configurado",
|
||
"monitoringTestSuccess": "Evento de prueba enviado",
|
||
"monitoringTestFailed": "La prueba de monitorización falló",
|
||
"assistant": {
|
||
"title": "Asistente",
|
||
"description": "Cada interruptor detiene el trabajo de IA que cubre y oculta su texto, mientras los datos y puntuaciones siguen cargándose.",
|
||
"master": {
|
||
"title": "Asistente activado",
|
||
"description": "Interruptor general de todas las funciones de IA. Si está desactivado, no se envía nada a ningún modelo y todos los interruptores de abajo quedan desactivados."
|
||
},
|
||
"coach": {
|
||
"title": "Coach",
|
||
"description": "Chat, mantenimiento de la memoria del Coach y avisos de IA. Las conversaciones guardadas se pueden seguir leyendo y borrando."
|
||
},
|
||
"briefing": {
|
||
"title": "Briefing diario",
|
||
"description": "El briefing diario, sus primeras líneas en otras partes de la app y los resúmenes de periodo escritos por un modelo."
|
||
},
|
||
"insightStatus": {
|
||
"title": "Notas de estado",
|
||
"description": "Notas breves que un modelo escribe por medición y métrica, notas de entrenamiento y líneas de reacción. La mayor parte del consumo de tokens."
|
||
},
|
||
"documentAi": {
|
||
"title": "Lectura de documentos",
|
||
"description": "Lectura con IA de documentos guardados, escaneo de informes de laboratorio y extracción de medicamentos a partir de texto. La mayor parte de los datos que salen del servidor."
|
||
},
|
||
"reasoning": {
|
||
"enabled": "Permitir razonamiento profundo",
|
||
"max": "Profundidad máxima de razonamiento",
|
||
"description": "Los modelos piensan antes de responder: el Coach, el resumen diario y los resúmenes por periodo. Más precisos, usan más tokens."
|
||
}
|
||
},
|
||
"modules": {
|
||
"title": "Disponibilidad de módulos",
|
||
"description": "Desactiva un módulo para todo el servidor.",
|
||
"saveError": "No se pudo actualizar la disponibilidad de módulos.",
|
||
"detail": "El peso, la presión arterial y el pulso son datos básicos y siempre están activos.",
|
||
"coachFollowsSwitch": "Sigue el interruptor del Coach en la sección Coach."
|
||
},
|
||
"invites": {
|
||
"title": "Enlaces de invitación",
|
||
"description": "Cada enlace permite un registro aunque el registro esté cerrado.",
|
||
"create": "Crear invitación",
|
||
"createTitle": "Crear invitación",
|
||
"createDescription": "El enlace permite registrarse incluso con el registro cerrado.",
|
||
"ttlLegend": "Válida durante",
|
||
"createDays": "{days} días",
|
||
"maxUsesLabel": "Usos máximos",
|
||
"maxUsesHint": "Cuántos registros admite este enlace (1–50).",
|
||
"createConfirm": "Crear invitación",
|
||
"createdToast": "Invitación creada",
|
||
"createError": "No se pudo crear la invitación.",
|
||
"tokenTitle": "Enlace de invitación",
|
||
"tokenOnceHint": "Solo se puede copiar ahora: copia el enlace o deja que escaneen el código QR.",
|
||
"hashExplainer": "Solo se guarda un hash del enlace, por lo que no se puede volver a mostrar. Si se pierde, revoca la invitación y crea una nueva.",
|
||
"copyLink": "Copiar enlace",
|
||
"copiedToast": "Enlace copiado",
|
||
"copyError": "No se pudo copiar.",
|
||
"qrAlt": "Código QR del enlace de invitación",
|
||
"loadError": "No se pudieron cargar las invitaciones.",
|
||
"emptyTitle": "Todavía no hay invitaciones",
|
||
"emptyDescription": "Crea un enlace de invitación para admitir a alguien con el registro cerrado.",
|
||
"colStatus": "Estado",
|
||
"colCreated": "Creada",
|
||
"colExpires": "Caduca",
|
||
"colUses": "Usos",
|
||
"colRedeemedBy": "Canjeada por",
|
||
"colActions": "Acciones",
|
||
"byCreator": "por {by}",
|
||
"expiresInDaysOne": "en 1 día",
|
||
"expiresInDaysOther": "en {count} días",
|
||
"statusActive": "Activa",
|
||
"statusExpired": "Caducada",
|
||
"statusExhausted": "Agotada",
|
||
"statusRevoked": "Revocada",
|
||
"redeemerDeleted": "cuenta eliminada",
|
||
"redeemedByMore": "{username} + {count} más",
|
||
"redemptionsTitle": "{count} canjes",
|
||
"revoke": "Revocar",
|
||
"revokeAria": "Revocar invitación",
|
||
"revokeConfirmTitle": "¿Revocar esta invitación?",
|
||
"revokeConfirmBody": "El enlace de invitación dejará de ser válido de inmediato. Las cuentas ya registradas con él se mantienen y el historial de canjes sigue visible.",
|
||
"revokeConfirmAction": "Revocar",
|
||
"cancel": "Cancelar",
|
||
"revokedToast": "Invitación revocada.",
|
||
"revokeError": "No se pudo revocar la invitación."
|
||
},
|
||
"userManagement": "Cuentas",
|
||
"userManagementDescription": "Roles, restablecimientos de contraseña y cierres de sesión forzados de cada cuenta.",
|
||
"userName": "Nombre",
|
||
"userEmail": "Correo electrónico",
|
||
"userRole": "Rol",
|
||
"userPasskeys": "Passkeys",
|
||
"userCreated": "Creado",
|
||
"userActions": "Acciones",
|
||
"editUser": "Editar usuario",
|
||
"editUserTitle": "Editar usuario: {name}",
|
||
"demoteToUser": "Degradar a usuario",
|
||
"promoteToAdmin": "Promover a administrador",
|
||
"toUser": "Convertir en usuario",
|
||
"toAdmin": "Convertir en administrador",
|
||
"ownRoleUnchangeable": "No puedes cambiar tu propio rol",
|
||
"resetPassword": "Restablecer contraseña",
|
||
"resetPasswordTitle": "Restablecer contraseña: {name}",
|
||
"newPassword": "Nueva contraseña",
|
||
"newPasswordPlaceholder": "Al menos 12 caracteres",
|
||
"passwordReset": "La contraseña se ha restablecido",
|
||
"reset": "Restablecer",
|
||
"loadingUsers": "Cargando usuarios...",
|
||
"apiTokens": "Tokens de API",
|
||
"apiTokensDescription": "Todos los tokens de API activos y revocados de todas las cuentas.",
|
||
"tokenUser": "Usuario",
|
||
"tokenName": "Nombre",
|
||
"tokenPermissions": "Permisos",
|
||
"tokenPermissionAll": "Todo",
|
||
"tokenPermissionAllTooltip": "Permiso comodín: este token puede llamar a cualquier ruta de la API.",
|
||
"tokenStatus": "Estado",
|
||
"tokenLastUsed": "Último uso",
|
||
"tokenCreated": "Creado",
|
||
"tokenNeverUsed": "Nunca",
|
||
"tokensEmptyTitle": "Aún no hay tokens de API",
|
||
"tokensEmptyDescription": "Los tokens se emiten cuando un cliente nativo inicia sesión o desde Ajustes → Cuenta.",
|
||
"loginOverviewDescription": "Eventos de inicio de sesión y autenticación de todas las cuentas, filtrables y exportables como CSV.",
|
||
"loginOverviewFilterLabel": "Filtrar eventos",
|
||
"allAuthEvents": "Todos los eventos de autenticación",
|
||
"failedOnly": "Solo fallidos",
|
||
"loginEmptyDescription": "Aquí aparecerán los inicios de sesión, los cierres de sesión y los cambios de passkey.",
|
||
"loginEmptyFailedTitle": "Sin intentos de inicio de sesión fallidos",
|
||
"loginEmptyFailedDescription": "Ese es el estado seguro. Cambia a todos los eventos para ver los inicios de sesión correctos.",
|
||
"loginEmptyResetFilter": "Mostrar todos los eventos",
|
||
"showingEntries": "Mostrando {count} de {total} entradas de autenticación",
|
||
"status": "Estado",
|
||
"action": "Acción",
|
||
"ip": "IP",
|
||
"location": "Ubicación",
|
||
"timestamp": "Hora",
|
||
"provider": "Proveedor",
|
||
"providerPassword": "Contraseña",
|
||
"providerPasskey": "Passkey",
|
||
"providerApiToken": "Token de API",
|
||
"providerWithings": "Withings",
|
||
"providerUnknown": "Desconocido",
|
||
"outcome": "Resultado",
|
||
"outcomeSuccess": "Éxito",
|
||
"outcomeFailed": "Fallido",
|
||
"auditDetails": "Detalles",
|
||
"deleteAllData": "Eliminar todos los datos globalmente",
|
||
"deleteAllDescription": "Elimina todos los registros de todas las cuentas; las cuentas y sus credenciales de inicio de sesión se conservan.",
|
||
"deleteAllConfirm": "¿Eliminar realmente todos los datos?",
|
||
"deleteAllConfirmDescription": "Esto elimina permanentemente todos los registros de todas las cuentas en toda la base de datos, no una selección de tablas. Se conservan: las cuentas de usuario y sus credenciales de inicio de sesión, la configuración de la instancia y las concesiones de acceso que mantienen accesibles los perfiles gestionados. Después se escribe un comprobante de este borrado en el registro de auditoría; el historial anterior se va con todo lo demás.",
|
||
"deleteButton": "Eliminar todos los datos",
|
||
"deleteAllPromptLabel": "Escribe {token} para continuar",
|
||
"finalDelete": "Eliminar permanentemente",
|
||
"deletedResult": "Eliminadas {rows} filas en {tables} tablas. Se conservaron las cuentas de usuario y las credenciales de inicio de sesión.",
|
||
"authRegister": "Registro",
|
||
"authClaim": "Perfil asumido",
|
||
"authLogin": "Iniciar sesión",
|
||
"authLoginPasskey": "Inicio de sesión con passkey",
|
||
"authLoginPassword": "Inicio de sesión con contraseña",
|
||
"authLoginFailed": "Fallido",
|
||
"authLogout": "Cerrar sesión",
|
||
"authPasskeyRegister": "Passkey añadida",
|
||
"authPasskeyDelete": "Passkey eliminada",
|
||
"authTokenAutoissueNative": "Token de cliente nativo emitido",
|
||
"authTokenRefresh": "Token renovado",
|
||
"authTokenRevoke": "Token revocado",
|
||
"medicationReminders": "Recordatorios de medicación",
|
||
"medicationRemindersDescription": "Umbrales para los cambios de color de las insignias de recordatorio en las tarjetas de medicación.",
|
||
"notificationHealth": {
|
||
"title": "Estado de entrega",
|
||
"description": "Resultados de entrega de todos los usuarios en las últimas 24 horas.",
|
||
"empty": "No se enviaron notificaciones en este periodo.",
|
||
"ok": "OK",
|
||
"error": "Fallidas",
|
||
"skipped": "Omitidas",
|
||
"autoDisabled": "Canales desactivados automáticamente"
|
||
},
|
||
"reminderLateMinutes": "Umbral de retraso (minutos)",
|
||
"reminderLateMinutesDescription": "Minutos tras el fin de la ventana hasta que la insignia cambia de amarillo a naranja.",
|
||
"reminderMissedMinutes": "Umbral de omisión (minutos)",
|
||
"reminderMissedMinutesDescription": "Minutos tras el fin de la ventana hasta que la toma se considera omitida.",
|
||
"notificationTestSend": "Enviar prueba",
|
||
"notificationTestSuccess": "Notificación de prueba enviada",
|
||
"notificationTestFailed": "No se pudo enviar la notificación de prueba",
|
||
"reminderCheckRun": "Ejecutar comprobación de recordatorios",
|
||
"reminderCheckSuccess": "Comprobación de recordatorios completada",
|
||
"reminderCheckFailed": "No se pudo ejecutar la comprobación de recordatorios",
|
||
"reminderCheckResults": "Resultados",
|
||
"reminderCheckNotifOn": "Notificaciones activadas",
|
||
"reminderCheckNotifOff": "Notificaciones desactivadas",
|
||
"reminderCheckEventsToday": "Eventos de hoy",
|
||
"reminderCheckNotifSent": "Enviadas",
|
||
"shell": {
|
||
"overview": "Resumen",
|
||
"sectionsNav": "Secciones de administración"
|
||
},
|
||
"overview": {
|
||
"snapshotTitle": "Instantánea del sistema",
|
||
"snapshotDatabase": "Base de datos",
|
||
"snapshotWorker": "Worker",
|
||
"snapshotStarted": "Iniciado",
|
||
"snapshotOfflineGeo": "Datos geográficos",
|
||
"snapshotOfflineGeoOn": "Sin conexión (GeoLite2)",
|
||
"snapshotOfflineGeoOff": "En línea ({host})",
|
||
"versionTileTitle": "Versión",
|
||
"versionTileVersion": "Versión en ejecución",
|
||
"versionTileBuildSha": "SHA de compilación",
|
||
"versionTileBuiltAt": "Compilado el",
|
||
"versionTileUpdateAvailable": "Actualización disponible: {tag}",
|
||
"versionTileUpToDate": "Actualizado",
|
||
"versionTileCheckOff": "Comprobación de actualizaciones desactivada",
|
||
"snapshotLoadError": "No se pudo cargar la instantánea del sistema.",
|
||
"snapshotLoading": "Cargando instantánea...",
|
||
"auditTitle": "Actividad reciente",
|
||
"auditEmpty": "No hay entradas de auditoría recientes.",
|
||
"auditLoadError": "No se pudo cargar la actividad reciente.",
|
||
"auditLoading": "Cargando actividad...",
|
||
"auditViewAll": "Ver todo"
|
||
},
|
||
"section": {
|
||
"system-status": {
|
||
"title": "Estado del sistema",
|
||
"subtitle": "Estado del worker, la base de datos y las integraciones de un vistazo."
|
||
},
|
||
"general": {
|
||
"title": "General",
|
||
"subtitle": "Registro, idioma predeterminado y otros interruptores de toda la aplicación."
|
||
},
|
||
"services": {
|
||
"title": "Servicios",
|
||
"subtitle": "Activa o desactiva los canales de notificación y la API en todo el servidor."
|
||
},
|
||
"integrations": {
|
||
"title": "Integraciones",
|
||
"subtitle": "Configura Umami, GlitchTip, Web Push e informes de errores."
|
||
},
|
||
"coach": {
|
||
"title": "Coach",
|
||
"subtitle": "Superficies del asistente, clave del servidor y calidad del feedback."
|
||
},
|
||
"reminders": {
|
||
"title": "Recordatorios",
|
||
"subtitle": "Ajusta los umbrales de los recordatorios de medicación y ejecuta una comprobación manual."
|
||
},
|
||
"users": {
|
||
"title": "Usuarios",
|
||
"subtitle": "Gestiona las cuentas de usuario, los roles y las sesiones activas.",
|
||
"filter": {
|
||
"all": "Todo",
|
||
"admin": "Administradores",
|
||
"user": "Usuarios"
|
||
},
|
||
"filterLabel": "Filtrar usuarios",
|
||
"forceLogout": "Forzar cierre de sesión",
|
||
"forceLogoutConfirmTitle": "¿Forzar el cierre de sesión de {name}?",
|
||
"forceLogoutConfirmBody": "Se revocarán todas las sesiones activas de este usuario. Tendrá que volver a iniciar sesión en todos los dispositivos.",
|
||
"forceLogoutSuccess": "Se cerró la sesión de {name} en {count} sesión(es)",
|
||
"forceLogoutFailed": "No se pudo forzar el cierre de sesión",
|
||
"cannotLogoutSelf": "No puedes forzar tu propio cierre de sesión",
|
||
"emptyTitle": "No hay usuarios en esta vista",
|
||
"emptyDescription": "No hay usuarios que coincidan con el filtro actual.",
|
||
"emptyResetFilter": "Mostrar todos los usuarios"
|
||
},
|
||
"invites": {
|
||
"title": "Invitaciones",
|
||
"subtitle": "Crear, seguir y revocar enlaces de invitación."
|
||
},
|
||
"api-tokens": {
|
||
"title": "Tokens de API",
|
||
"subtitle": "Tokens bearer activos emitidos a clientes nativos e integraciones."
|
||
},
|
||
"login-overview": {
|
||
"title": "Resumen de inicios de sesión",
|
||
"subtitle": "Registro de auditoría de eventos de autenticación y de administración."
|
||
},
|
||
"auditLog": {
|
||
"filterActor": "Actor (ID de usuario o nombre de usuario)",
|
||
"filterAction": "Acción",
|
||
"filterActionAll": "Todas las acciones",
|
||
"filterTarget": "Objetivo (ID o ruta)",
|
||
"filterDate": "Intervalo de fechas",
|
||
"range24h": "Últimas 24 horas",
|
||
"range7d": "Últimos 7 días",
|
||
"range30d": "Últimos 30 días",
|
||
"rangeAll": "Todo el tiempo",
|
||
"perPage": "Por página",
|
||
"prev": "Anterior",
|
||
"next": "Siguiente",
|
||
"pageOf": "Página {page} de {total}",
|
||
"export": "Exportar CSV",
|
||
"empty": "Ninguna entrada de auditoría coincide con los filtros actuales."
|
||
},
|
||
"app-logs": {
|
||
"title": "Registros de la app",
|
||
"subtitle": "Muestra los wide-events estructurados más recientes emitidos por este proceso.",
|
||
"processNote": "Solo se muestran los registros del proceso de la app; los registros del proceso del worker van a Loki cuando esa integración está configurada.",
|
||
"filterTraceId": "ID de traza",
|
||
"filterAction": "La acción contiene…",
|
||
"filterLevel": "Nivel",
|
||
"levelAll": "Todos los niveles",
|
||
"filterRange": "Ventana de tiempo",
|
||
"range15m": "Últimos 15 minutos",
|
||
"range1h": "Última hora",
|
||
"range6h": "Últimas 6 horas",
|
||
"rangeAll": "Búfer completo",
|
||
"colLevel": "Nivel",
|
||
"colTimestamp": "Marca de tiempo",
|
||
"colAction": "Acción",
|
||
"colDuration": "Duración",
|
||
"colTraceId": "Trace",
|
||
"viewDetails": "Ver detalles de {action} a las {timestamp}",
|
||
"showing": "Mostrando {count} de hasta {bufferMax} eventos en búfer",
|
||
"empty": "El búfer está vacío",
|
||
"emptyDescription": "Aún no hay eventos que coincidan con los filtros actuales. Pulsa actualizar tras generar algo de tráfico.",
|
||
"refresh": "Actualizar",
|
||
"eventDetails": "Detalles del evento",
|
||
"closeDetails": "Cerrar detalles",
|
||
"processDetail": "El búfer es volátil y está limitado a 500 entradas.",
|
||
"cardTitle": "Eventos recientes",
|
||
"filterErrorId": "ID de error"
|
||
},
|
||
"backups": {
|
||
"title": "Copias de seguridad",
|
||
"subtitle": "Instantáneas de datos semanales por usuario almacenadas en PostgreSQL.",
|
||
"description": "Cada usuario tiene una instantánea rotativa por tipo de copia. Los tamaños muestran el blob cifrado. Descargar descifra la instantánea para el administrador que la pide; el texto cifrado permanece en la base de datos.",
|
||
"runNow": "Hacer copia ahora",
|
||
"runEnqueued": "Tarea de copia de seguridad en cola",
|
||
"runFailed": "No se pudo poner en cola la copia de seguridad",
|
||
"loading": "Cargando copias de seguridad...",
|
||
"loadError": "No se pudieron cargar las copias de seguridad.",
|
||
"emptyTitle": "Aún no hay copias de seguridad",
|
||
"emptyDescription": "Las copias de seguridad se ejecutan automáticamente cada domingo a las 03:00, o inicia una ahora para crear la primera instantánea.",
|
||
"colUser": "Usuario",
|
||
"colType": "Tipo",
|
||
"typeWeeklyAuto": "Semanal (auto)",
|
||
"typeManual": "Manual",
|
||
"colSize": "Tamaño",
|
||
"colCreatedAt": "Última instantánea",
|
||
"colActions": "Acciones",
|
||
"retentionLabel": "Conservación: {days} días",
|
||
"scheduleStaleTitle": "La copia de seguridad semanal se ha detenido",
|
||
"scheduleStaleDescription": "La copia programada más reciente tiene {days} días. Una ejecución semanal que funciona nunca deja ninguna con más de {threshold} días.",
|
||
"scheduleFailedTitle": "La última ejecución programada de la copia de seguridad falló",
|
||
"scheduleFailedDescription": "{when}: {reason}",
|
||
"scheduleFailedNoReason": "sin motivo registrado",
|
||
"scheduleRemedy": "Ejecuta una copia ahora y comprueba que aparece una fila nueva. Si vuelve a fallar, el registro del worker indica la cuenta en la que se detuvo.",
|
||
"activity": {
|
||
"running": "En curso desde {when}.",
|
||
"interruptedTitle": "Una ejecución se detuvo a medias y no volvió",
|
||
"interruptedAccount": "{username}: empezó {when}, nunca terminó",
|
||
"interruptedRemedy": "Lo más probable es que la aplicación se reiniciara o se quedara sin memoria al escribir esta copia. La próxima ejecución deja estas cuentas para el final, así las demás reciben su copia primero. Si se repite, dale más memoria al contenedor."
|
||
},
|
||
"download": "Descargar",
|
||
"downloadAria": "Descargar copia de seguridad de {username}",
|
||
"downloadFailed": "La descarga falló",
|
||
"downloadStarted": "Descarga iniciada",
|
||
"uploadTitle": "Subir copia de seguridad",
|
||
"uploadDescription": "Valida un archivo de copia de seguridad y guárdalo como instantánea manual. La restauración es un paso aparte.",
|
||
"uploadButton": "Subir archivo",
|
||
"uploadHelp": "Una copia de seguridad de HealthLog en .json o .json.gz. El archivo se comprime antes de subirlo; comprimido puede ocupar hasta 512 MB.",
|
||
"uploadSuccess": "Copia de seguridad subida ({count} registros)",
|
||
"uploadFailed": "La subida falló",
|
||
"restore": "Restaurar",
|
||
"restoreAria": "Restaurar desde copia de seguridad de {username}",
|
||
"restoreTitle": "Restaurar desde copia de seguridad",
|
||
"restoreDescription": "Esto reemplazará TODOS los datos actuales de {username} con la instantánea del {when}. Se eliminarán las mediciones, los medicamentos, los eventos de toma, las entradas de ánimo, los canales de notificación, las suscripciones push y las eliminaciones de Telegram en cola existentes.",
|
||
"restoreInstanceSettingsLabel": "Restaurar también los ajustes de la instancia",
|
||
"restoreInstanceSettingsHint": "Registro, requisito de MFA, idioma predeterminado, disponibilidad de módulos, configuración de notificaciones e IA: se toman de la instantánea y se aplican a todos en esta instalación. Déjalo sin marcar para restaurar solo esta cuenta.",
|
||
"restorePromptLabel": "Escribe RESTORE para continuar",
|
||
"previewTitle": "Contenido de la copia",
|
||
"previewLoading": "Leyendo el contenido…",
|
||
"previewUnavailable": "No se pudo leer el contenido, pero restaurar sigue siendo posible.",
|
||
"previewStillReading": "Esta copia se hizo con una versión anterior, así que su contenido se está leyendo completo, y con un historial grande eso lleva un rato. Vuelve a abrir este diálogo en unos minutos para verlo. Restaurar no depende de ello.",
|
||
"previewEmpty": "El archivo no contiene registros.",
|
||
"previewOther": "Otros registros",
|
||
"previewMeasurements": "Mediciones",
|
||
"previewMedications": "Medicamentos y tomas",
|
||
"previewMood": "Registros de ánimo",
|
||
"previewLabs": "Resultados de laboratorio",
|
||
"previewDocuments": "Documentos",
|
||
"previewWorkouts": "Entrenamientos",
|
||
"previewCycles": "Datos del ciclo",
|
||
"previewVisits": "Visitas médicas",
|
||
"previewVaccinations": "Vacunas",
|
||
"previewReminders": "Recordatorios preventivos",
|
||
"previewCustomMetrics": "Métricas propias",
|
||
"previewHealthScores": "Historial de puntuación",
|
||
"restoreConfirm": "Restaurar ahora",
|
||
"restoreInProgress": "Restaurando...",
|
||
"restoreSuccess": "Restauración completada",
|
||
"restoreFailed": "La restauración falló",
|
||
"restoreSkippedToast": "Restauración completada, {links} vínculos de síntomas no se pudieron recuperar",
|
||
"restoreSkippedTitle": "{links} vínculos no se restauraron",
|
||
"restoreSkippedDescription": "El archivo hace referencia a entradas que esta instalación no conoce. Todo lo demás se restauró. La misma lista está en el registro de auditoría.",
|
||
"restoreSkippedLinks": "{count} vínculos",
|
||
"restoreSkippedCycleSymptom": "Síntoma del ciclo",
|
||
"restoreSkippedIllnessSymptom": "Síntoma de enfermedad",
|
||
"restoreSkippedMoodFactor": "Factor de ánimo",
|
||
"restoreSkippedMoodTag": "Etiqueta de ánimo",
|
||
"restoreSkippedVisitReference": "Referencia de visita",
|
||
"restoreSkippedVaccinationReference": "Referencia de vacunación",
|
||
"restoreSkippedCheckupClosure": "Cierre de revisión",
|
||
"restoreSkippedReminderReference": "Referencia de recordatorio",
|
||
"restoreSkippedCoachAttachment": "Enlace de documento del Coach",
|
||
"restoreSkippedCoachReference": "Referencia del Coach",
|
||
"restoreSkippedDocumentConditionLink": "Clasificación de documento",
|
||
"restoreSkippedRelationLink": "Vínculo entre registros",
|
||
"restoreSkippedExtractedFact": "Dato del documento",
|
||
"restoreSkippedFactCommitment": "Registro del dato",
|
||
"docsLink": "Documentación",
|
||
"restoreSkippedPersonalRecordReference": "Procedencia de un récord personal",
|
||
"restoreSkippedEcgReference": "Procedencia de un trazado de ECG",
|
||
"restoreSkippedMedicationTarget": "Analito objetivo de un medicamento",
|
||
"restoreSkippedScheduleRevisionLink": "Sucesión de periodos de pauta",
|
||
"restoreSkippedAccountSetting": "Ajuste de la cuenta",
|
||
"restoreMissingTitle": "Restauración rechazada: el archivo está incompleto",
|
||
"restoreMissingDescription": "El propio manifiesto del archivo dice que incluye la sección siguiente, y no la incluye. No se cambió nada: una restauración sustituye toda una clase de registros, así que una sección ausente la habría vaciado.",
|
||
"restoreMissingRemedy": "Usa una copia de recuperación ante desastres, o vuelve a exportar la cuenta y sube el archivo nuevo. Una sección que el manifiesto declara omitida es otra cosa y se restaura con normalidad.",
|
||
"restoreMissingDocuments": "Documentos",
|
||
"restoreMissingWorkouts": "Entrenamientos",
|
||
"restoreMissingMentalHealth": "Cuestionarios de salud mental",
|
||
"restoreMissingConsent": "Comprobantes de consentimiento",
|
||
"offhost": {
|
||
"title": "Copias fuera del host",
|
||
"description": "Cuándo puso este host por última vez la copia cifrada de cada cuenta en tu bucket.",
|
||
"loadError": "No se pudo cargar el estado fuera del host.",
|
||
"notConfiguredTitle": "La copia fuera del host no está configurada",
|
||
"notConfiguredDescription": "No hay bucket ni clave definidos, así que ninguna copia de seguridad sale de este host. Define BACKUP_S3_ENDPOINT, BACKUP_S3_BUCKET, BACKUP_S3_ACCESS_KEY, BACKUP_S3_SECRET_KEY y BACKUP_ENCRYPTION_KEY para activar la subida nocturna.",
|
||
"stateFresh": "Reciente",
|
||
"stateDue": "Pendiente",
|
||
"stateStale": "Obsoleta",
|
||
"stateNever": "Nunca",
|
||
"stateUnknown": "Sin registro aún",
|
||
"neverDetail": "No ha llegado nada para esta cuenta. Última comprobación {when}.",
|
||
"unknownDetail": "Ninguna ejecución nocturna ha registrado esta cuenta todavía.",
|
||
"age": "hace {hours} h",
|
||
"scheduleNote": "La subida se ejecuta cada {hours} h. Reciente significa dentro de una ejecución, pendiente que una no produjo nada, obsoleta que fueron dos.",
|
||
"lifecycleConfigured": "El bucket borra las copias a los {days} días con su propia regla de ciclo de vida.",
|
||
"lifecycleMissing": "El bucket no tiene regla de ciclo de vida, así que cada copia nocturna se guarda para siempre. Añade una regla que caduque los objetos tras BACKUP_RETENTION_DAYS.",
|
||
"lifecycleUnknown": "No se pudo leer si el bucket borra las copias antiguas: la credencial no puede leer su regla de ciclo de vida. Comprueba que una regla caduque los objetos tras BACKUP_RETENTION_DAYS.",
|
||
"pendingDeletions": "Aún quedan en el bucket copias de {count} cuentas eliminadas o vaciadas, y se están borrando.",
|
||
"pendingDeletionsFailing": "Aún quedan en el bucket copias de {count} cuentas eliminadas o vaciadas porque rechazó borrarlas ({error}). Da a la credencial el permiso DeleteObject; el borrado se reintenta cada noche."
|
||
},
|
||
"restoreStarted": "Restauración iniciada. Su progreso aparece encima de la lista.",
|
||
"restoreActive": "Ya hay una restauración en curso para esta cuenta. Espera a que termine.",
|
||
"restoreJobQueuedTitle": "La restauración de {username} está esperando para empezar",
|
||
"restoreJobQueuedNote": "Empieza en cuanto el proceso en segundo plano la recoja.",
|
||
"restoreJobRunningTitle": "Restaurando {username}",
|
||
"restoreJobRunningNote": "La cuenta sigue mostrando sus datos actuales hasta que termine la restauración. Puedes salir de esta página; la restauración continúa en el servidor.",
|
||
"restoreJobResumed": "Iniciada de nuevo tras reiniciarse el servidor.",
|
||
"restoreJobPhaseValidating": "Comprobando el archivo de copia: {checked} lecturas comprobadas",
|
||
"restoreJobPhaseClearing": "Borrando los datos actuales de la cuenta",
|
||
"restoreJobPhaseMeasurements": "Escribiendo lecturas: {done} de {total}",
|
||
"restoreJobPhaseSections": "Escribiendo el resto de registros: {done} de {total} secciones",
|
||
"restoreJobPhaseRebuilding": "Recalculando gráficos y resúmenes",
|
||
"restoreJobSucceededTitle": "Restauración de {username} terminada",
|
||
"restoreJobSucceededDescription": "{count} registros restaurados. Terminó {when}.",
|
||
"restoreJobFailedTitle": "La restauración de {username} no se completó",
|
||
"restoreJobFailedKept": "No se cambió nada. La copia se conserva, así que puedes volver a iniciar la restauración desde su fila sin subirla otra vez.",
|
||
"restoreFailureNotFound": "La copia se eliminó antes de que la restauración pudiera leerla.",
|
||
"restoreFailureChanged": "La copia se sustituyó por una más reciente mientras la restauración esperaba. Revisa la copia nueva y vuelve a iniciar la restauración.",
|
||
"restoreFailureUndecryptable": "No se pudo descifrar la copia. La clave con la que se escribió ya no está configurada, o la copia guardada se modificó.",
|
||
"restoreFailureSchema": "El archivo no es una copia de seguridad válida de HealthLog.",
|
||
"restoreFailureVersion": "La copia la escribió una versión más reciente de HealthLog. Actualiza primero este servidor.",
|
||
"restoreFailureOwnerMismatch": "El archivo de la copia pertenece a otra cuenta que la fila de la copia.",
|
||
"restoreFailureOwnerMissing": "La cuenta a la que pertenece esta copia ya no existe.",
|
||
"restoreFailureSectionMissing": "El archivo está incompleto: su manifiesto nombra una sección que no contiene.",
|
||
"restoreFailureDocument": "El archivo contiene documentos sin su contenido, como una exportación portátil. Usa una copia de recuperación ante desastres.",
|
||
"restoreFailureTimeBudget": "Esta copia es demasiado grande para restaurarse dentro del límite de tiempo del proceso en segundo plano.",
|
||
"restoreFailureTransaction": "La base de datos rechazó la restauración a mitad, así que se deshizo todo. El registro del servidor indica el error.",
|
||
"restoreFailureCauseTimeout": "La restauración tardó más de lo que permite la base de datos, así que se deshizo todo. Si el servidor de la base de datos estaba ocupado, vuelve a iniciarla cuando esté más tranquilo. El registro del servidor indica el paso.",
|
||
"restoreFailureCauseLock": "La restauración esperó a registros que otro proceso estaba modificando, así que se deshizo todo. Vuelve a iniciar la restauración.",
|
||
"restoreFailureCauseConstraint": "La base de datos rechazó un registro de la copia de seguridad, así que se deshizo todo. El registro del servidor indica la tabla y la regla.",
|
||
"restoreFailureCauseStorage": "La base de datos se quedó sin espacio en disco o sin memoria durante la restauración, así que se deshizo todo. Libera espacio en el servidor de la base de datos y vuelve a iniciar la restauración.",
|
||
"restoreFailureCauseConnection": "Se perdió la conexión con la base de datos durante la restauración, así que se deshizo todo. Comprueba que la base de datos está en marcha y vuelve a iniciar la restauración.",
|
||
"restoreFailureInterrupted": "La restauración se detuvo al reiniciarse el servidor y se deshizo. Si vuelve a detenerse, probablemente al servidor le falta memoria.",
|
||
"restoreFailureNotStarted": "El proceso en segundo plano no recogió la restauración. Comprueba que está en marcha.",
|
||
"restoreFailureEnqueue": "No se pudo entregar la restauración al proceso en segundo plano. Comprueba que está en marcha.",
|
||
"restoreFailureAfterCommit": "Los datos se restauraron, pero falló un paso posterior. Puede que los gráficos no se pongan al día hasta la próxima ejecución nocturna.",
|
||
"restoreFailureUnexpected": "La restauración se detuvo por un error inesperado y se deshizo. El registro del servidor indica el error.",
|
||
"restoreFailureKeyMissing": "La copia necesita la clave de cifrado {keys}, con la que este servidor no puede abrirla. Vuelve a añadir la clave a ENCRYPTION_KEYS, reinicia e inicia de nuevo la restauración.",
|
||
"restoreFailureForeignReference": "El archivo apunta a registros que pertenecen a otra cuenta. No se escribió nada.",
|
||
"previewKeyMissing": "Esta copia no se puede restaurar en este servidor: necesita la clave de cifrado {keys}. Vuelve a añadir la clave a ENCRYPTION_KEYS y reinicia primero.",
|
||
"restoreSkippedSymptomEpisodeReference": "Entrada de síntoma vinculada a una enfermedad que el archivo no contiene (se conserva sin el vínculo)",
|
||
"restoreSkippedCycleCiphertext": "Nota o etiqueta del ciclo cifrada con una clave que este servidor no tiene (el día o el síntoma se conserva sin ella)",
|
||
"restoreSkippedMoodLabelCiphertext": "Nombre de etiqueta o grupo de ánimo cifrado con una clave que este servidor no tiene (se conserva sin el nombre)",
|
||
"restoreSkippedVisitCiphertext": "Texto de visita o profesional cifrado con una clave que este servidor no tiene (se conserva sin él)",
|
||
"restoreSkippedVaccinationCiphertext": "Nota de vacunación cifrada con una clave que este servidor no tiene (la dosis se conserva sin ella)",
|
||
"restoreSkippedEnvironmentLocationCiphertext": "Ubicación de un periodo o día ambiental cifrada con una clave que este servidor no tiene (se conserva cifrada, esos días no se actualizan)"
|
||
},
|
||
"danger-zone": {
|
||
"title": "Zona de peligro",
|
||
"subtitle": "Operaciones destructivas en todo el sistema."
|
||
},
|
||
"about": {
|
||
"title": "Acerca de",
|
||
"subtitle": "Versión, licencia y estado de actualizaciones."
|
||
},
|
||
"module-availability": {
|
||
"title": "Módulos",
|
||
"subtitle": "Activa o desactiva módulos para todas las cuentas de este servidor."
|
||
},
|
||
"encryption": {
|
||
"title": "Cifrado",
|
||
"subtitle": "Cobertura de cifrado y estado de rotación de claves para los datos en reposo.",
|
||
"loadError": "No se pudo cargar el estado de cifrado.",
|
||
"coverageTitle": "Cobertura",
|
||
"coverageDescription": "Cuántas filas cifradas hay bajo cada id de clave.",
|
||
"activeKeyId": "Id de clave activa",
|
||
"configuredKeys": "Claves configuradas",
|
||
"totalRows": "Filas cifradas",
|
||
"staleRows": "Filas que no usan la clave activa",
|
||
"safeToDropLegacy": "Es seguro eliminar la clave antigua",
|
||
"rotationIncomplete": "Aún quedan {count} filas por rotar",
|
||
"rotationTitle": "Rotación de claves",
|
||
"rotationDescription": "Vuelve a cifrar cada columna cifrada con la clave activa.",
|
||
"rotationState": "Estado",
|
||
"lastRun": "Última ejecución: {scanned} revisadas, {rotated} rotadas, {errors} errores.",
|
||
"rotateNow": "Rotar ahora",
|
||
"rotateConfirmTitle": "¿Volver a cifrar todo el registro?",
|
||
"rotateConfirmDescription": "Vuelve a cifrar cada columna cifrada con la clave activa. Nunca añade ni elimina una clave y se puede repetir con seguridad. En cuentas grandes puede tardar un rato.",
|
||
"cancel": "Cancelar",
|
||
"rotateConfirm": "Iniciar rotación",
|
||
"rotateEnqueued": "Rotación iniciada.",
|
||
"rotateFailed": "No se pudo iniciar la rotación.",
|
||
"stepUpNeeded": "Se requiere un segundo factor reciente. Confirma tu segundo factor o usa la herramienta de línea de comandos si no tienes ninguno configurado.",
|
||
"cliNote": "Se necesita un segundo factor para usar este botón. Sin él, ejecuta scripts/rotate-encryption-key.ts desde una copia del código fuente de esta versión; los pasos están en docs/ops/encryption-key-rotation.md.",
|
||
"columnsTitle": "Cobertura por columna",
|
||
"columnsDescription": "Cada columna cifrada con sus recuentos de filas en la clave activa frente a claves anteriores.",
|
||
"colColumn": "Columna",
|
||
"colTotal": "Total",
|
||
"colActive": "En clave activa",
|
||
"colStale": "Obsoletas",
|
||
"state": {
|
||
"idle": "Inactivo",
|
||
"running": "En curso",
|
||
"completed": "Completado",
|
||
"failed": "Fallido"
|
||
},
|
||
"coverageDetail": "Solo se muestran los id de clave y los recuentos, nunca el material de la clave.",
|
||
"backupsTitle": "Claves que las copias aún necesitan",
|
||
"backupsDescription": "Una clave retirada sigue siendo necesaria mientras alguna copia de abajo la indique.",
|
||
"backupsStoredLine": "Clave {key}: {count} copias guardadas, la más antigua del {when}",
|
||
"backupsUnrecordedLine": "{count} copias guardadas se escribieron antes de que las copias registraran sus claves (la más antigua el {when}). Pueden necesitar cualquier clave que existiera entonces: conserva todas las claves antiguas hasta que se sustituyan o borren.",
|
||
"backupsOffhostLine": "Clave {key}: la última copia externa que la necesita entró en el bucket el {when}; necesaria allí hasta el {until}",
|
||
"backupsOffhostLineUnknown": "Clave {key}: la última copia externa que la necesita entró en el bucket el {when}. No se sabe cuándo caducan las copias en el bucket, así que conserva la clave hasta saber que esa copia ya no está.",
|
||
"backupsNone": "Ninguna copia ha registrado todavía las claves que necesita.",
|
||
"backupsStillNeed": "Todas las filas están rotadas, pero las copias aún necesitan {keys}",
|
||
"backupsUnrecordedBadge": "Todas las filas están rotadas, pero copias antiguas pueden necesitar aún una clave retirada",
|
||
"backupsDetail": "La rotación vuelve a cifrar cada fila, pero una copia conserva la clave con la que se escribió su contenido, y restaurarla necesita esa clave. Mantén una clave retirada en ENCRYPTION_KEYS hasta que no aparezca abajo.",
|
||
"columnsShow": "Mostrar la tabla ({count} con filas)",
|
||
"columnsHide": "Ocultar la tabla",
|
||
"columnsShowAll": "Mostrar las {count} columnas",
|
||
"columnsShowWithRows": "Solo columnas con filas",
|
||
"columnsNoneWithRows": "Ninguna columna cifrada contiene filas todavía."
|
||
},
|
||
"maintenance": {
|
||
"title": "Mantenimiento de la tabla de mediciones",
|
||
"description": "Libera el espacio que ocupaban los restos antiguos de sincronización, cuando la limpieza ya ha terminado.",
|
||
"body": "Ejecuta un vacuum de la tabla de mediciones y después reconstruye sus índices, uno a uno. Leer y guardar siguen funcionando mientras se ejecuta. Elige una hora tranquila y deja espacio libre en disco para una copia más del índice más grande.",
|
||
"tableSize": "Tabla con índices",
|
||
"indexSize": "Índices",
|
||
"loading": "Comprobando el estado del mantenimiento…",
|
||
"loadError": "No se pudo leer el estado del mantenimiento.",
|
||
"unavailable": "No hay ningún proceso en segundo plano conectado, así que el mantenimiento no puede ejecutarse aquí.",
|
||
"purgePending": "La limpieza de restos antiguos de sincronización sigue en marcha. El mantenimiento podrá empezar cuando termine.",
|
||
"state": {
|
||
"idle": "Aún no se ha ejecutado.",
|
||
"queued": "Esperando al proceso en segundo plano.",
|
||
"running": "En marcha desde las {since}. En una instancia grande puede tardar un rato.",
|
||
"completed": "Terminado el {at}.",
|
||
"refusedPurge": "No empezó porque la limpieza seguía en marcha. Vuelve a iniciarlo cuando la limpieza haya terminado.",
|
||
"alreadyRunning": "No empezó porque ya había otra ejecución trabajando.",
|
||
"failed": "Detenido el {at}. El registro de la aplicación indica el paso y el runbook explica qué revisar."
|
||
},
|
||
"start": "Iniciar mantenimiento",
|
||
"confirmTitle": "¿Iniciar el mantenimiento ahora?",
|
||
"confirmBody": "Se ejecuta en segundo plano, paso a paso, y puede tardar un rato. Si hoy aún no has hecho una copia de seguridad, hazla antes.",
|
||
"confirm": "Iniciar",
|
||
"cancel": "Cancelar",
|
||
"started": "Mantenimiento iniciado.",
|
||
"alreadyQueued": "Ya hay un mantenimiento en cola o en marcha.",
|
||
"startFailed": "No se pudo iniciar el mantenimiento."
|
||
},
|
||
"pulseDayMean": {
|
||
"title": "Media diaria del pulso",
|
||
"description": "Cómo cuentan las horas con pocas lecturas en el pulso de un día.",
|
||
"body": "Hasta ahora, cada hora con una lectura cuenta lo mismo, así que una sola lectura suelta puede mover un día entero. El método ponderado hace que una hora cuente por completo a partir de tres lecturas, y una lectura aislada un tercio. Ejecuta primero la prueba para ver cuántos días cambiarían. Al aplicarlo, los días de pulso guardados se recalculan en segundo plano.",
|
||
"method": {
|
||
"hourly": "Todas las horas igual",
|
||
"weighted": "Horas escasas ponderadas"
|
||
},
|
||
"loading": "Comprobando la media diaria del pulso…",
|
||
"loadError": "No se pudo leer el estado de la media diaria del pulso.",
|
||
"state": {
|
||
"idle": "Aún no hay ninguna prueba.",
|
||
"queued": "La prueba está esperando al proceso en segundo plano.",
|
||
"running": "La prueba está en curso.",
|
||
"done": "Prueba terminada el {at}.",
|
||
"failed": "La prueba se detuvo. El registro de la app indica la causa; vuelve a iniciarla."
|
||
},
|
||
"result": {
|
||
"days": "Días comparados",
|
||
"changed": "Días que cambian más de 1 bpm",
|
||
"max": "Mayor cambio",
|
||
"maxValue": "{value} bpm",
|
||
"bucket": "{range} bpm",
|
||
"account": "Cuenta {account}",
|
||
"accountDays": "Cambian {changed} de {days} días"
|
||
},
|
||
"appliedAt": "Método ponderado aplicado el {at}.",
|
||
"dryRun": "Prueba",
|
||
"apply": "Aplicar",
|
||
"confirmTitle": "¿Aplicar la media diaria del pulso ponderada?",
|
||
"confirmBody": "A partir de entonces, los días de pulso de todas las cuentas se calculan con las horas escasas ponderadas. Los días de pulso guardados se recalculan en segundo plano, lo que puede tardar en una instancia grande.",
|
||
"confirm": "Aplicar",
|
||
"cancel": "Cancelar",
|
||
"dryRunStarted": "Prueba iniciada.",
|
||
"applied": "Método ponderado aplicado. Los días de pulso se están recalculando.",
|
||
"appliedNoRebuild": "Método ponderado aplicado. Otro proceso sigue en marcha; vuelve a aplicarlo cuando termine para recalcular los días de pulso.",
|
||
"error": {
|
||
"busy": "Todavía hay una prueba o un recálculo en marcha. Inténtalo de nuevo cuando termine.",
|
||
"dryRunRequired": "Ejecuta primero una prueba. Para aplicar hace falta una terminada en los últimos siete días.",
|
||
"generic": "La solicitud no se completó."
|
||
},
|
||
"rebuild": {
|
||
"queued": "El recálculo espera al proceso en segundo plano.",
|
||
"running": "Se están recalculando los días de pulso.",
|
||
"done": "Días de pulso recalculados el {at} para {accounts} cuentas.",
|
||
"failed": "El recálculo se detuvo. El registro de la app indica la causa; vuelve a ejecutarlo."
|
||
},
|
||
"rebuildAgain": "Recalcular de nuevo",
|
||
"rebuildStarted": "Recálculo iniciado."
|
||
}
|
||
},
|
||
"carrier": "Operador",
|
||
"mfaRequired": "Exigir un segundo factor",
|
||
"mfaRequiredDescription": "Las cuentas sin segundo factor van a configurarlo tras iniciar sesión en la web; el acceso por API o nativo (Bearer) sigue abierto.",
|
||
"mfaEnforcedOn": "MFA activado",
|
||
"mfaEnforcedOff": "MFA desactivado",
|
||
"mfaEnforcedOnHint": "Este usuario debe usar un segundo factor. Haz clic para dejar de exigirlo.",
|
||
"mfaEnforcedOffHint": "Exigir un segundo factor a este usuario.",
|
||
"copyIp": "Copiar dirección IP",
|
||
"ipCopied": "Dirección IP copiada",
|
||
"copyFailed": "No se pudo copiar.",
|
||
"documentMaxFile": "Límite de subida de documentos",
|
||
"documentMaxFileDescription": "Tamaño máximo por archivo en el archivo de documentos (1–100 MB).",
|
||
"documentQuota": "Cuota de almacenamiento de documentos",
|
||
"documentQuotaDescription": "Almacenamiento de documentos por cuenta por defecto (0,1–1024 GB).",
|
||
"userDocumentQuota": "Cuota de documentos personalizada",
|
||
"userDocumentQuotaDefault": "Predeterminado",
|
||
"userDocumentQuotaHint": "Déjalo vacío para usar el valor predeterminado de la instancia.",
|
||
"centralCodex": {
|
||
"title": "Conexión de IA compartida",
|
||
"description": "Conecta una cuenta de ChatGPT con sesión iniciada que cualquier usuario de este servidor pueda activar para las funciones de IA.",
|
||
"honesty": "Es una única cuenta de IA compartida con sesión iniciada, no una clave de API. Todos los que se unen envían solicitudes a través de ella, por lo que los límites por hora y semanales de la cuenta se comparten entre ellos, y esos mismos límites ya alimentan al Coach. Los proveedores de suscripción pueden usar el contenido para mejorar sus modelos y ningún acuerdo de tratamiento de datos lo cubre, por lo que nunca es la opción predeterminada y queda por debajo de los proveedores sin entrenamiento al leer documentos. Conecta solo una cuenta que te sientas cómodo compartiendo así.",
|
||
"statusConnected": "Conectado",
|
||
"statusDisconnected": "No conectado",
|
||
"statusExpired": "Caducado",
|
||
"connectButton": "Conectar una cuenta de ChatGPT",
|
||
"disconnectButton": "Desconectar",
|
||
"disconnectTitle": "¿Desconectar la cuenta de IA compartida?",
|
||
"disconnectBody": "Todos los usuarios de este servidor que dependan de la conexión compartida pierden las funciones de IA hasta que alguien vuelva a vincular una cuenta. El inicio de sesión guardado no se puede recuperar.",
|
||
"disconnectConfirm": "Desconectar",
|
||
"connectedSince": "Conectado desde {when}",
|
||
"connected": "Conexión de IA compartida vinculada",
|
||
"disconnected": "Conexión de IA compartida eliminada",
|
||
"error": "Algo salió mal: inténtalo de nuevo"
|
||
},
|
||
"failingJobs": {
|
||
"title": "Trabajos en segundo plano",
|
||
"description": "Colas cuyos trabajos se rindieron tras agotar sus reintentos.",
|
||
"none": "Ningún trabajo ha fallado en las últimas {hours} horas.",
|
||
"unavailable": "No hay ninguna cola que consultar: este despliegue funciona sin el worker en segundo plano.",
|
||
"countOne": "{count} fallo",
|
||
"countFew": "{count} fallos",
|
||
"countOther": "{count} fallos",
|
||
"lastFailed": "Último fallo {when}"
|
||
},
|
||
"deleteAllDetail": "Las cuentas de usuario se conservarán.",
|
||
"cardError": {
|
||
"title": "Esta parte de la página no se pudo mostrar",
|
||
"description": "El resto de la página sigue funcionando; inténtalo de nuevo o recarga si el fallo continúa."
|
||
},
|
||
"keyBackup": {
|
||
"title": "Haz una copia de tu clave de cifrado",
|
||
"description": "Sin una copia de esta clave, tus datos cifrados y las copias de este servidor no se podrán volver a leer.",
|
||
"loading": "Cargando el estado de la copia de la clave…",
|
||
"loadError": "No se pudo cargar el estado de la copia de la clave.",
|
||
"badgeDue": "Pendiente",
|
||
"badgeDone": "Guardada",
|
||
"keyId": "ID de la clave activa",
|
||
"fingerprint": "Huella",
|
||
"whatIsLost": "Guarda una copia de la clave fuera de este servidor, por ejemplo en un gestor de contraseñas. Si el servidor se reinstala con otra clave, HealthLog no vuelve a funcionar hasta que la clave original esté de vuelta.",
|
||
"fingerprintHint": "La huella son los primeros 12 caracteres del hash SHA-256 de la clave. Identifica la clave sin revelarla, para que puedas compararla con tu copia.",
|
||
"checkLabel": "Comprobar mi copia",
|
||
"checkButton": "Comprobar",
|
||
"checkNote": "La clave que pegues se compara con la clave activa y después se descarta. Nunca se guarda ni se registra.",
|
||
"checkInsecureNote": "Esta página no se sirve por https://, así que la clave que pegues viaja por la red sin cifrar, igual que tu contraseña. Se compara y se descarta, nunca se guarda ni se registra.",
|
||
"checkMatches": "Tu copia coincide con la clave activa.",
|
||
"checkNoMatch": "Tu copia no coincide con la clave activa. Comprueba que copiaste el valor completo.",
|
||
"checkFailed": "La comprobación ha fallado.",
|
||
"confirmButton": "He guardado esta clave",
|
||
"confirmed": "Copia de la clave confirmada.",
|
||
"confirmFailed": "No se pudo guardar la confirmación.",
|
||
"stale": "La clave del servidor cambió desde que se cargó esta página. Revisa el nuevo ID y la huella, y vuelve a confirmar.",
|
||
"confirmedAt": "Confirmada el {date}.",
|
||
"confirmedAtBy": "Confirmada el {date} por {who}.",
|
||
"dueAgain": "Se confirmó una copia de la clave {keyId}, pero el servidor usa ahora otra clave. Guarda una copia de la actual.",
|
||
"tileLabel": "Copia de la clave de cifrado",
|
||
"tileDue": "Sin confirmar",
|
||
"tileDone": "Confirmada",
|
||
"platform": {
|
||
"composeLabel": "Compose",
|
||
"composeWhere": "La clave es ENCRYPTION_KEY (o ENCRYPTION_KEYS) en el archivo .env junto a docker-compose.yml.",
|
||
"truenasLabel": "TrueNAS",
|
||
"truenasWhere": "Abre Apps, selecciona HealthLog, elige Editar y copia ENCRYPTION_KEY de las variables de entorno.",
|
||
"coolifyLabel": "Coolify",
|
||
"coolifyWhere": "Abre la aplicación en Coolify y copia ENCRYPTION_KEY de sus Environment Variables.",
|
||
"unraidLabel": "Unraid",
|
||
"unraidWhere": "En la pestaña Docker, edita el contenedor de HealthLog y copia ENCRYPTION_KEY de la plantilla, o del .env de tu stack de Compose Manager.",
|
||
"portainerLabel": "Portainer",
|
||
"portainerWhere": "Abre el stack de HealthLog en Portainer y copia ENCRYPTION_KEY de sus variables de entorno."
|
||
}
|
||
},
|
||
"keyMismatch": {
|
||
"title": "HealthLog no puede abrir sus datos",
|
||
"body": "La clave de cifrado con la que se inició este servidor no es la clave con la que se escribió su base de datos. Para proteger tus datos, HealthLog no sirve nada hasta que se corrija.",
|
||
"fixTitle": "Cómo corregirlo",
|
||
"fixRestore": "Vuelve a poner la ENCRYPTION_KEY original (o la entrada de ENCRYPTION_KEYS) en la configuración del servidor.",
|
||
"fixDatabase": "O haz que DATABASE_URL apunte a la base de datos que corresponde a esta clave.",
|
||
"fixFresh": "O empieza de cero con una base de datos vacía. Los datos antiguos y sus copias solo se pueden leer con la clave antigua.",
|
||
"restartNote": "Reinicia HealthLog después del cambio.",
|
||
"lastResort": "Último recurso, solo si estás seguro de que la clave es correcta y ninguna de las tres opciones sirve: define {setting} y reinicia. HealthLog sirve igualmente y solo registra el hallazgo. Esto desactiva una comprobación de seguridad: con una clave incorrecta falla cada valor cifrado y los datos nuevos se escriben con esa clave.",
|
||
"codes": "Para el administrador: las peticiones a la API responden 503 con el código de error {code}, y /api/health indica el motivo {reason}."
|
||
},
|
||
"loginOverviewCardTitle": "Eventos de inicio de sesión",
|
||
"userColumn": "Usuario",
|
||
"supportReport": {
|
||
"title": "Informe de soporte",
|
||
"description": "Un resumen de esta instancia para un informe de error, sin correos, ID ni valores.",
|
||
"body": "Las cuentas aparecen como «Account 1», «Account 2», etc. Lee el informe antes de compartirlo.",
|
||
"copy": "Copiar",
|
||
"copied": "Copiado",
|
||
"download": "Descargar",
|
||
"loadError": "No se pudo crear el informe de soporte."
|
||
},
|
||
"aiUsage": {
|
||
"title": "Niveles de uso de la IA",
|
||
"description": "El nivel más alto que pueden elegir las cuentas y el nivel con el que empiezan.",
|
||
"maxLabel": "Nivel más alto",
|
||
"defaultLabel": "Nivel predeterminado",
|
||
"defaultAboveCeiling": "El nivel predeterminado no puede estar por encima del nivel más alto.",
|
||
"gapLabel": "Horas entre actualizaciones de tarjetas tras una sincronización (Estándar)",
|
||
"gapHint": "Horas enteras de 1 a 48. Déjalo vacío para usar AI_SYNC_REGEN_GAP_HOURS, si no 6. Vigente ahora: {hours} h."
|
||
}
|
||
},
|
||
"achievements": {
|
||
"title": "Logros",
|
||
"subtitle": "Consigue logros registrando tu salud y tomando tu medicación a tiempo.",
|
||
"loginRequired": "Inicia sesión para ver los logros.",
|
||
"points": "Puntos",
|
||
"unlocked": "Desbloqueado",
|
||
"nextGoal": "Próximo objetivo",
|
||
"allCompleted": "¡Todos los logros desbloqueados!",
|
||
"completed": "Completado",
|
||
"goalReached": "Objetivo alcanzado",
|
||
"remainingUnlocks": "Quedan {count} por desbloquear",
|
||
"noneUnlockedYet": "Aún no has desbloqueado ningún logro.",
|
||
"pointsValue": "{points} puntos",
|
||
"metricCount": "{count}",
|
||
"metricDaysOne": "{count} día",
|
||
"metricDaysFew": "{count} días",
|
||
"metricDaysOther": "{count} días",
|
||
"metricPercent": "{count}%",
|
||
"badges": {
|
||
"intakeTotal1": {
|
||
"title": "Primera toma",
|
||
"description": "Registra tu primera toma de medicación."
|
||
},
|
||
"intakeTotal10": {
|
||
"title": "Iniciado en las tomas",
|
||
"description": "Registra 10 tomas de medicación."
|
||
},
|
||
"intakeTotal50": {
|
||
"title": "Rutina de tomas",
|
||
"description": "Registra 50 tomas de medicación."
|
||
},
|
||
"intakeTotal150": {
|
||
"title": "Experto en tomas",
|
||
"description": "Registra 150 tomas de medicación."
|
||
},
|
||
"intakeTotal300": {
|
||
"title": "Leyenda de las tomas",
|
||
"description": "Registra 300 tomas de medicación."
|
||
},
|
||
"passkeyCreated1": {
|
||
"title": "Clave de acceso creada",
|
||
"description": "Crea tu primera clave de acceso."
|
||
},
|
||
"passkeyLogin1": {
|
||
"title": "Inicio con clave de acceso",
|
||
"description": "Inicia sesión al menos una vez con una clave de acceso."
|
||
},
|
||
"passwordLogin1": {
|
||
"title": "A la antigua",
|
||
"description": "Inicia sesión al menos una vez con usuario y contraseña."
|
||
},
|
||
"loginStreak7": {
|
||
"title": "Racha de inicios 7d",
|
||
"description": "Inicia sesión 7 días seguidos."
|
||
},
|
||
"loginStreak30": {
|
||
"title": "Racha de inicios 30d",
|
||
"description": "Inicia sesión 30 días seguidos."
|
||
},
|
||
"onTimePerfect1": {
|
||
"title": "Puntual 1d",
|
||
"description": "Toma todos los medicamentos a tiempo durante 1 día."
|
||
},
|
||
"compliance801": {
|
||
"title": "Adherencia del 80% durante 1 día",
|
||
"description": "Alcanza al menos un 80% de adherencia de 30 días durante 1 día."
|
||
},
|
||
"bmiGreen1": {
|
||
"title": "IMC en verde durante 1 día",
|
||
"description": "Mantén tu IMC en el rango normal durante 1 día."
|
||
},
|
||
"bpGreen1": {
|
||
"title": "Presión en verde durante 1 día",
|
||
"description": "Mantén tu presión arterial en el rango normal durante 1 día."
|
||
},
|
||
"pulseGreen1": {
|
||
"title": "Pulso en verde durante 1 día",
|
||
"description": "Mantén tu pulso en reposo en el rango normal durante 1 día."
|
||
},
|
||
"onTimePerfect7": {
|
||
"title": "Puntual 7d",
|
||
"description": "Toma todos los medicamentos a tiempo durante 7 días seguidos."
|
||
},
|
||
"compliance807": {
|
||
"title": "Adherencia del 80% durante 7 días",
|
||
"description": "Alcanza al menos un 80% de adherencia de 30 días durante 7 días seguidos."
|
||
},
|
||
"bmiGreen7": {
|
||
"title": "IMC en verde durante 7 días",
|
||
"description": "Mantén tu IMC en el rango normal durante 7 días seguidos."
|
||
},
|
||
"bpGreen7": {
|
||
"title": "Presión en verde durante 7 días",
|
||
"description": "Mantén tu presión arterial en el rango normal durante 7 días seguidos."
|
||
},
|
||
"pulseGreen7": {
|
||
"title": "Pulso en verde durante 7 días",
|
||
"description": "Mantén tu pulso en reposo en el rango normal durante 7 días seguidos."
|
||
},
|
||
"onTimePerfect30": {
|
||
"title": "Puntual 30d",
|
||
"description": "Toma todos los medicamentos a tiempo durante 30 días seguidos."
|
||
},
|
||
"compliance8030": {
|
||
"title": "Adherencia del 80% durante 30 días",
|
||
"description": "Alcanza al menos un 80% de adherencia de 30 días durante 30 días seguidos."
|
||
},
|
||
"bmiGreen30": {
|
||
"title": "IMC en verde durante 30 días",
|
||
"description": "Mantén tu IMC en el rango normal durante 30 días seguidos."
|
||
},
|
||
"bpGreen30": {
|
||
"title": "Presión en verde durante 30 días",
|
||
"description": "Mantén tu presión arterial en el rango normal durante 30 días seguidos."
|
||
},
|
||
"pulseGreen30": {
|
||
"title": "Pulso en verde durante 30 días",
|
||
"description": "Mantén tu pulso en reposo en el rango normal durante 30 días seguidos."
|
||
},
|
||
"onTimePerfect180": {
|
||
"title": "Puntual 180d",
|
||
"description": "Toma todos los medicamentos a tiempo durante 180 días seguidos."
|
||
},
|
||
"compliance80180": {
|
||
"title": "Adherencia del 80% durante 180 días",
|
||
"description": "Alcanza al menos un 80% de adherencia de 30 días durante 180 días seguidos."
|
||
},
|
||
"bmiGreen180": {
|
||
"title": "IMC en verde durante 180 días",
|
||
"description": "Mantén tu IMC en el rango normal durante 180 días seguidos."
|
||
},
|
||
"bpGreen180": {
|
||
"title": "Presión en verde durante 180 días",
|
||
"description": "Mantén tu presión arterial en el rango normal durante 180 días seguidos."
|
||
},
|
||
"pulseGreen180": {
|
||
"title": "Pulso en verde durante 180 días",
|
||
"description": "Mantén tu pulso en reposo en el rango normal durante 180 días seguidos."
|
||
},
|
||
"onTimePerfect360": {
|
||
"title": "Puntual 360d",
|
||
"description": "Toma todos los medicamentos a tiempo durante 360 días seguidos."
|
||
},
|
||
"compliance80360": {
|
||
"title": "Adherencia del 80% durante 360 días",
|
||
"description": "Alcanza al menos un 80% de adherencia de 30 días durante 360 días seguidos."
|
||
},
|
||
"bmiGreen360": {
|
||
"title": "IMC en verde durante 360 días",
|
||
"description": "Mantén tu IMC en el rango normal durante 360 días seguidos."
|
||
},
|
||
"bpGreen360": {
|
||
"title": "Presión en verde durante 360 días",
|
||
"description": "Mantén tu presión arterial en el rango normal durante 360 días seguidos."
|
||
},
|
||
"pulseGreen360": {
|
||
"title": "Pulso en verde durante 360 días",
|
||
"description": "Mantén tu pulso en reposo en el rango normal durante 360 días seguidos."
|
||
},
|
||
"moodFirst": {
|
||
"title": "Primer estado de ánimo",
|
||
"description": "Registra tu primera entrada de estado de ánimo."
|
||
},
|
||
"moodStreak7": {
|
||
"title": "Diario de ánimo 7d",
|
||
"description": "Registra una entrada de estado de ánimo 7 días seguidos."
|
||
},
|
||
"moodStreak30": {
|
||
"title": "Diario de ánimo 30d",
|
||
"description": "Registra una entrada de estado de ánimo 30 días seguidos."
|
||
},
|
||
"moodUp7": {
|
||
"title": "Semana más luminosa",
|
||
"description": "Tu media de ánimo de 7 días mejoró al menos 1,0 punto respecto a la semana anterior."
|
||
},
|
||
"weightFirst": {
|
||
"title": "Primer pesaje",
|
||
"description": "Registra tu primera medición de peso."
|
||
},
|
||
"weight50": {
|
||
"title": "Cincuenta pesajes",
|
||
"description": "Registra 50 mediciones de peso."
|
||
},
|
||
"weight200": {
|
||
"title": "200 pesajes",
|
||
"description": "Registra 200 mediciones de peso."
|
||
},
|
||
"bpFirst": {
|
||
"title": "Primera medición",
|
||
"description": "Registra tu primera medición de presión arterial."
|
||
},
|
||
"bp50": {
|
||
"title": "Cincuenta mediciones de presión",
|
||
"description": "Registra 50 mediciones de presión arterial."
|
||
},
|
||
"bp200": {
|
||
"title": "200 mediciones de presión",
|
||
"description": "Registra 200 mediciones de presión arterial."
|
||
},
|
||
"pulseFirst": {
|
||
"title": "Primer pulso",
|
||
"description": "Registra tu primera medición de pulso."
|
||
},
|
||
"consistentMonth": {
|
||
"title": "Mes constante",
|
||
"description": "Registra entradas en al menos 25 días distintos dentro de un mismo mes natural."
|
||
},
|
||
"entryStreak7": {
|
||
"title": "Racha de registros 7d",
|
||
"description": "Registra al menos una entrada 7 días seguidos."
|
||
},
|
||
"entryStreak30": {
|
||
"title": "Racha de registros 30d",
|
||
"description": "Registra al menos una entrada 30 días seguidos."
|
||
},
|
||
"weekendWarrior": {
|
||
"title": "Registrador de fin de semana",
|
||
"description": "Registra entradas en 4 fines de semana consecutivos (sábado y domingo)."
|
||
},
|
||
"hiddenNightOwl": {
|
||
"title": "Búho nocturno",
|
||
"description": "Registraste una entrada entre las 02:00 y las 04:00 de la madrugada."
|
||
},
|
||
"hiddenEarlyBird": {
|
||
"title": "Madrugador",
|
||
"description": "Registraste una entrada entre las 04:00 y las 06:00 de la mañana."
|
||
},
|
||
"hiddenLeapDay": {
|
||
"title": "Leyenda del año bisiesto",
|
||
"description": "Registraste una entrada el 29 de febrero."
|
||
},
|
||
"hiddenDoctorPdf": {
|
||
"title": "Visita a domicilio",
|
||
"description": "Exportaste tu primer informe médico en PDF."
|
||
},
|
||
"hiddenLocaleFlip": {
|
||
"title": "Políglota",
|
||
"description": "Cambiaste el idioma de la app al menos una vez."
|
||
},
|
||
"missFree7": {
|
||
"title": "Sin dosis perdidas en 7 días",
|
||
"description": "7 días consecutivos sin una dosis perdida."
|
||
},
|
||
"missFree30": {
|
||
"title": "Sin dosis perdidas en 30 días",
|
||
"description": "30 días consecutivos sin una dosis perdida."
|
||
},
|
||
"missFree90": {
|
||
"title": "Sin dosis perdidas en 90 días",
|
||
"description": "90 días consecutivos sin una dosis perdida."
|
||
},
|
||
"measurementWeeks4": {
|
||
"title": "Rutina de medición",
|
||
"description": "4 semanas consecutivas con mediciones en al menos 5 días cada una."
|
||
},
|
||
"selfContextComplete": {
|
||
"title": "Autoinforme al día",
|
||
"description": "Los cuatro campos del autoinforme completados: el Coach conoce tu contexto."
|
||
},
|
||
"sleepLog7": {
|
||
"title": "Registro de sueño durante 7 días",
|
||
"description": "Datos de sueño registrados durante 7 días consecutivos."
|
||
}
|
||
},
|
||
"nextProgressLabel": "Progreso para desbloquear",
|
||
"completedOn": "Completado el {date}",
|
||
"locked": "Bloqueado",
|
||
"criterionHint": "{current} / {target}",
|
||
"progressPercent": "{percent}%",
|
||
"categories": {
|
||
"medication": "Medicamento",
|
||
"vitals": "Constantes vitales",
|
||
"mood": "Estado de ánimo",
|
||
"security": "Cuenta y seguridad",
|
||
"engagement": "Engagement",
|
||
"hidden": "Oculto"
|
||
},
|
||
"hiddenCard": {
|
||
"title": "Logro oculto",
|
||
"description": "Sigue registrando y quizá te topes con él.",
|
||
"ariaLabel": "Logro oculto bloqueado"
|
||
},
|
||
"hiddenUnlockToast": {
|
||
"title": "¡Has desbloqueado un logro oculto!"
|
||
},
|
||
"dashboardCard": {
|
||
"title": "Desbloqueos recientes",
|
||
"viewAll": "Ver todo",
|
||
"empty": "Aún no hay logros. Sigue registrando para desbloquear el primero."
|
||
}
|
||
},
|
||
"notifications": {
|
||
"title": "Notificaciones",
|
||
"eventColumn": "Evento",
|
||
"subtitle": "Elige qué notificaciones recibes y por qué canal.",
|
||
"loadError": "No se han podido cargar los ajustes de notificación.",
|
||
"noChannels": "Configura primero un canal de notificación en Ajustes → Integraciones.",
|
||
"goToSettings": "Ir a los ajustes del canal",
|
||
"channelDisabled": "Desactivado",
|
||
"admin": {
|
||
"deployFailedTitle": "Despliegue fallido: {application}",
|
||
"deployFailedBody": "Se produjo un error al desplegar {application} (#{deployment}): {error}. Ver registros: {logsUrl}",
|
||
"testNotificationTitle": "HealthLog notificación de prueba",
|
||
"testNotificationBody": "Esta notificación de prueba se activó desde el panel de administración. Si la ves, el canal funciona.",
|
||
"reminderCheckMissedTitle": "Recordatorio perdido: {medication}",
|
||
"reminderCheckMissedBody": "{medication} ({dose}) no se registró en la ventana {window}.",
|
||
"reminderCheckOverdueTitle": "Dosis atrasada: {medication}",
|
||
"reminderCheckOverdueBody": "{medication} ({dose}) en la ventana {window} lleva {minutes} minutos de retraso.",
|
||
"offlineGeoUnavailableTitle": "Bases de datos de geolocalización sin conexión no cargadas",
|
||
"offlineGeoUnavailableBody": "HealthLog resuelve las ubicaciones de inicio de sesión mediante la consulta en línea a {host}, por lo que cada IP de inicio de sesión sale de este servidor. Para resolverlas localmente, descarga las bases GeoLite2-City y GeoLite2-ASN con una cuenta gratuita de MaxMind, monta el directorio en el contenedor y apunta GEOLITE2_DIR a él. Pasos: {docsUrl}",
|
||
"tlsPinChangedTitle": "Certificado de hoja TLS cambiado: {host}",
|
||
"tlsPinChangedBody": "La hoja TLS servida por {host} ahora tiene el pin SPKI {servedPin}, que no está en el conjunto de pines conocidos. Los clientes con pin fijo (la app nativa) no podrán conectarse una vez que desaparezca el pin antiguo. Vuelve a extraer el nuevo pin de la hoja, añádelo a TLS_LEAF_SPKI_PINS y al conjunto de pines del cliente nativo, y publica una versión antes de que este certificado caduque el {validTo}. Consulta docs/ops/tls-cert-pin.md."
|
||
},
|
||
"user": {
|
||
"telegramTestBody": "HealthLog: conexión correcta. Las notificaciones de Telegram están activas."
|
||
},
|
||
"moodReminder": {
|
||
"title": "Recordatorio diario de ánimo",
|
||
"description": "Aviso suave a la hora que elijas si aún no has registrado el ánimo del día.",
|
||
"toggleAria": "Alternar recordatorio diario de ánimo",
|
||
"statusOn": "Activo a la hora que elijas",
|
||
"statusOff": "Desactivado",
|
||
"enabledToast": "Recordatorio de ánimo activado.",
|
||
"disabledToast": "Recordatorio de ánimo desactivado.",
|
||
"saveError": "No se pudo guardar. Inténtalo de nuevo.",
|
||
"hourLabel": "Hora del recordatorio",
|
||
"hourAria": "Hora del recordatorio de ánimo",
|
||
"hourSavedToast": "Hora del recordatorio actualizada",
|
||
"detail": "Se envía solo por canales ya configurados (Telegram, ntfy, Web Push, Apple Push) y permanece en silencio una vez que has registrado el ánimo hoy."
|
||
},
|
||
"coachNudge": {
|
||
"title": "Coach proactivo",
|
||
"description": "Se pone en contacto cuando tus datos sugieren consultar al Coach.",
|
||
"toggleAria": "Activar o desactivar los avisos proactivos del Coach",
|
||
"statusOn": "Activo",
|
||
"groupsLabel": "Temas",
|
||
"groupMedication": "Medicación",
|
||
"groupMedicationDesc": "Tomas irregulares durante la última semana.",
|
||
"groupVitals": "Constantes vitales",
|
||
"groupVitalsDesc": "Tensión, recuperación, tendencia del peso, sueño.",
|
||
"groupRoutine": "Rutina",
|
||
"groupRoutineDesc": "Pausas bruscas en los registros y revisiones de la autodescripción.",
|
||
"frequencyLabel": "Frecuencia",
|
||
"frequencyWeekly": "Como máximo una vez por semana",
|
||
"frequencyBiweekly": "Como máximo cada dos semanas",
|
||
"frequencyAria": "Seleccionar la frecuencia de los avisos",
|
||
"statusOff": "Desactivado",
|
||
"enabledToast": "Avisos proactivos del Coach activados.",
|
||
"disabledToast": "Avisos proactivos del Coach desactivados.",
|
||
"saveError": "No se pudo guardar. Inténtalo de nuevo más tarde.",
|
||
"aiComposedLabel": "Deja que el Coach redacte el aviso",
|
||
"aiComposedDesc": "Cuando hay un proveedor disponible, el aviso proactivo lo redacta el modelo en lugar de la plantilla fija. Desactivado por defecto.",
|
||
"aiComposedAria": "Activar o desactivar el aviso proactivo redactado por IA"
|
||
},
|
||
"lowStock": {
|
||
"title": "Aviso de existencias bajas",
|
||
"description": "Avisa a diario cuando unas existencias cubren menos días que este umbral.",
|
||
"toggleAria": "Activar o desactivar los avisos de existencias bajas",
|
||
"statusOn": "Activo",
|
||
"statusOff": "Desactivado",
|
||
"daysLabel": "Avisar por debajo de (días)",
|
||
"daysAria": "Seleccionar el umbral de existencias en días",
|
||
"leadLabel": "Plazo de reposición (días)",
|
||
"leadAria": "Plazo de reposición en días",
|
||
"leadHelp": "El aviso se envía estos días más un intervalo de dosis antes, para que la reposición llegue antes de tu última dosis. Un medicamento concreto puede anular este valor en su pestaña de existencias.",
|
||
"leadSavedToast": "Plazo de reposición guardado",
|
||
"savedToast": "Umbral de existencias guardado",
|
||
"enabledToast": "Avisos de existencias bajas activados.",
|
||
"disabledToast": "Avisos de existencias bajas desactivados.",
|
||
"saveError": "No se pudo guardar. Inténtalo de nuevo.",
|
||
"medicationsLink": "Ir a tus medicamentos",
|
||
"detail": "Un aviso por escasez; se reactiva tras reponer."
|
||
},
|
||
"eventMedicationReminder": "Recordatorio de medicación",
|
||
"eventMedicationReminderDesc": "Se envía a cada hora de dosis programada.",
|
||
"eventMeasurementAnomaly": "Medición inusual",
|
||
"eventMeasurementAnomalyDesc": "Se envía cuando una lectura está claramente fuera de tu rango habitual.",
|
||
"eventComplianceLow": "Cumplimiento bajo",
|
||
"eventComplianceLowDesc": "Se envía cuando tu tasa de toma de los últimos días baja del 80 %.",
|
||
"eventWithingsSyncFailed": "Error de sincronización con Withings",
|
||
"eventWithingsSyncFailedDesc": "Se envía cuando la sincronización con Withings falla varios intentos seguidos.",
|
||
"eventSystemAlert": "Aviso del sistema",
|
||
"eventSystemAlertDesc": "Mensajes generales del servidor HealthLog, por ejemplo ventanas de mantenimiento o avisos de cuenta.",
|
||
"eventPersonalRecord": "Récord personal",
|
||
"eventPersonalRecordDesc": "Se envía cuando una lectura supera tu mejor marca anterior.",
|
||
"eventMoodReminder": "Recordatorio de ánimo",
|
||
"eventMoodReminderDesc": "Recordatorio diario para registrar tu ánimo actual.",
|
||
"eventCyclePeriodSoon": "Período próximo",
|
||
"eventCyclePeriodSoonDesc": "Se envía un par de días antes de tu próximo período previsto.",
|
||
"eventCyclePeriodConfirm": "¿Empezó tu período?",
|
||
"eventCyclePeriodConfirmDesc": "Un recordatorio suave en o después del inicio previsto mientras no se registre ningún período.",
|
||
"eventCycleFertileSoon": "Ventana fértil próxima",
|
||
"eventCycleFertileSoonDesc": "Se envía unos días antes de tu ventana fértil estimada cuando tu objetivo es concebir.",
|
||
"eventMedicationLowStock": "Existencias de medicación bajas",
|
||
"eventMedicationLowStockDesc": "Cuando unas existencias registradas cubren menos días que tu umbral de existencias",
|
||
"eventCoachNudge": "Aviso del Coach",
|
||
"eventCoachNudgeDesc": "Aviso ocasional de tu Coach cuando tus tendencias recientes justifican una revisión.",
|
||
"eventMeasurementReminder": "Recordatorio de medición",
|
||
"eventMeasurementReminderDesc": "Se envía cuando una medición registrada está pendiente.",
|
||
"eventMedicationIntakeSync": "Sincronización de tomas",
|
||
"eventMedicationIntakeSyncDesc": "Actualización entre dispositivos cuando se registra, toma u omite una dosis.",
|
||
"eventDailyBriefing": "Resumen diario",
|
||
"eventDailyBriefingDesc": "Un resumen matinal y tranquilo de tu día. Desactivado hasta que lo actives.",
|
||
"eventSecurityAlert": "Nuevo inicio de sesión",
|
||
"eventSecurityAlertDesc": "Se envía cuando se usa tu cuenta en un dispositivo o desde un lugar desconocidos.",
|
||
"eventSharedRecordIntake": "Alguien con acceso marca una dosis",
|
||
"eventSharedRecordIntakeDesc": "Solo se envía cuando lo hace otra persona, nunca con tus propias entradas.",
|
||
"security": {
|
||
"newDeviceTitle": "Nuevo inicio de sesión en tu cuenta",
|
||
"newDeviceBody": "Un nuevo inicio de sesión desde {device} ({location}). Si no fuiste tú, cambia tu contraseña de inmediato.",
|
||
"unknownLocation": "ubicación desconocida"
|
||
},
|
||
"sharedRecordIntake": {
|
||
"title": "{name} ha marcado una dosis",
|
||
"bodyTaken": "{medication}: marcada como tomada por {name}.",
|
||
"bodySkipped": "{medication}: marcada como omitida por {name}."
|
||
},
|
||
"loginRequired": "Inicia sesión para gestionar las notificaciones.",
|
||
"someChannelsGloballyDisabled": "Uno o más canales están desactivados en los ajustes y no recibirán notificaciones.",
|
||
"reminderSettingsLink": "Ajustes de recordatorios",
|
||
"channelsLink": "Canales",
|
||
"handover": {
|
||
"claimedTitle": "{name} ya tiene su propia cuenta",
|
||
"claimedEnd": "{name} ha asumido su historial de salud. Tu acceso ha terminado.",
|
||
"claimedRead": "{name} ha asumido su historial de salud. Puedes seguir viéndolo, pero ya no cambiarlo.",
|
||
"claimedManage": "{name} ha asumido su historial de salud. Puedes seguir gestionándolo hasta que decida otra cosa.",
|
||
"changedTitle": "{name} ha cambiado tu acceso",
|
||
"changedEnd": "Tu acceso al historial de salud de {name} ha terminado.",
|
||
"changedRead": "Ahora puedes ver el historial de salud de {name}, pero no cambiarlo.",
|
||
"changedManage": "Puedes gestionar el historial de salud de {name}.",
|
||
"unnamed": {
|
||
"claimedTitle": "La persona a la que cuidabas ya tiene su propia cuenta",
|
||
"claimedEnd": "La persona a la que cuidabas ha asumido su historial de salud. Tu acceso ha terminado.",
|
||
"claimedRead": "La persona a la que cuidabas ha asumido su historial de salud. Puedes seguir viéndolo, pero ya no modificarlo.",
|
||
"claimedManage": "La persona a la que cuidabas ha asumido su historial de salud. Puedes seguir gestionándolo hasta que decida otra cosa.",
|
||
"changedTitle": "Tu acceso a un historial de salud ha cambiado",
|
||
"changedEnd": "Tu acceso al historial de salud de la persona a la que cuidabas ha terminado.",
|
||
"changedRead": "Ahora puedes ver el historial de salud de la persona a la que cuidabas, pero no modificarlo.",
|
||
"changedManage": "Puedes gestionar el historial de salud de la persona a la que cuidabas."
|
||
}
|
||
},
|
||
"links": {
|
||
"open": "Abrir en HealthLog"
|
||
},
|
||
"quickActions": {
|
||
"moodGood": "Bien",
|
||
"moodOkay": "Normal",
|
||
"moodBad": "Mal"
|
||
},
|
||
"content": {
|
||
"title": "Valores de salud en las notificaciones",
|
||
"description": "Si una notificación puede mostrar valores como tu puntuación de la mañana.",
|
||
"detail": "Desactivado, una notificación solo dice de qué trata, así que la pantalla de bloqueo no muestra valores de salud. Activado, añade los valores, por ejemplo la puntuación de la mañana en el resumen. Al tocar una notificación se abre el lugar adecuado de la app en ambos casos.",
|
||
"toggleAria": "Mostrar valores de salud en las notificaciones",
|
||
"statusDetailed": "Con valores",
|
||
"statusGeneric": "Sin valores",
|
||
"detailedToast": "Las notificaciones ahora incluyen valores de salud.",
|
||
"genericToast": "Las notificaciones ya no incluyen valores de salud.",
|
||
"saveError": "No se pudo guardar. Inténtalo de nuevo más tarde."
|
||
},
|
||
"checkupReminders": {
|
||
"title": "Recordatorios de chequeos",
|
||
"description": "Activa o desactiva recordatorios de chequeos concretos."
|
||
}
|
||
},
|
||
"i18n": {
|
||
"maintainershipBanner": {
|
||
"notice": "Este idioma está traducido automáticamente, incluidas las instrucciones críticas para la seguridad del Coach. Un control de deriva automático se ejecuta en CI; informe de cualquier regresión del Coach en GitHub.",
|
||
"cta": "Informar en GitHub",
|
||
"dismiss": "Cerrar"
|
||
}
|
||
},
|
||
"targets": {
|
||
"bmi": "IMC",
|
||
"average30d": "Media 30 días:",
|
||
"consistency": {
|
||
"ariaLabel": "Últimos 7 días, estado dentro/fuera del rango por día",
|
||
"daysInRange": "{count} de {total} en rango",
|
||
"daysLogged": "{count} de {total} registrados",
|
||
"dotInRange": "en rango",
|
||
"dotNearRange": "cerca del rango",
|
||
"dotOutOfRange": "fuera",
|
||
"dotNotLogged": "no registrado",
|
||
"relativeDay": {
|
||
"today": "Hoy",
|
||
"yesterday": "Ayer",
|
||
"twoDaysAgo": "hace 2 días",
|
||
"threeDaysAgo": "hace 3 días",
|
||
"fourDaysAgo": "hace 4 días",
|
||
"fiveDaysAgo": "hace 5 días",
|
||
"sixDaysAgo": "hace 6 días"
|
||
}
|
||
},
|
||
"edit": {
|
||
"title": "Editar rango objetivo: {metric}",
|
||
"description": "Ajusta el rango objetivo usado en gráficas, insights y el informe médico. Valores en {unit}.",
|
||
"derivedHint": "Esta tarjeta se calcula a partir de otras métricas. Edita en su lugar los objetivos subyacentes (p. ej. tensión arterial o peso).",
|
||
"minLabel": "Mín",
|
||
"maxLabel": "Máx",
|
||
"systolicMin": "Sistólica mín",
|
||
"systolicMax": "Sistólica máx",
|
||
"diastolicMin": "Diastólica mín",
|
||
"diastolicMax": "Diastólica máx",
|
||
"boundsHint": "Rango permitido: {min}–{max} {unit}",
|
||
"resetToDefault": "Restablecer por defecto",
|
||
"resetTitle": "¿Restablecer este objetivo?",
|
||
"resetBody": "El rango vuelve al predeterminado. Los valores que definiste no se guardan en ningún otro sitio y no se pueden recuperar.",
|
||
"resetBodyBp": "Tanto el rango sistólico como el diastólico vuelven al predeterminado. Los valores que definiste no se guardan en ningún otro sitio y no se pueden recuperar.",
|
||
"resetConfirm": "Restablecer objetivo",
|
||
"saveSuccess": "Rango objetivo actualizado",
|
||
"saveError": "No se ha podido guardar el rango objetivo",
|
||
"resetSuccess": "Rango objetivo restablecido por defecto",
|
||
"validationOrder": "El mínimo debe ser inferior al máximo.",
|
||
"validationBounds": "Introduce valores dentro del rango permitido que se muestra debajo."
|
||
},
|
||
"currentValue": "Actual: {value} {unit}",
|
||
"targetRangeValue": "Rango objetivo: {min}–{max} {unit}",
|
||
"sourceLabel": "Fuente: {source}",
|
||
"sourceNames": {
|
||
"moodEntries": "Entradas de ánimo",
|
||
"sevenDays": "7 días"
|
||
},
|
||
"inTarget": "En rango objetivo",
|
||
"aboveTarget": "{delta} {unit} por encima del rango",
|
||
"belowTarget": "{delta} {unit} por debajo del rango",
|
||
"systolic": "Sistólica",
|
||
"diastolic": "Diastólica",
|
||
"glucoseFasting": "Glucemia (en ayunas)",
|
||
"glucosePostprandial": "Glucemia (posprandial)",
|
||
"glucoseRandom": "Glucemia (cualquiera)",
|
||
"glucoseBedtime": "Glucemia (antes de dormir)",
|
||
"glucoseUnspecified": "Glucemia (sin indicar)",
|
||
"status": {
|
||
"underweight": "Peso insuficiente",
|
||
"normal": "Normal",
|
||
"overweight": "Sobrepeso",
|
||
"obesityGrade1": "Obesidad grado I",
|
||
"obesityGrade2": "Obesidad grado II",
|
||
"obesityGrade3": "Obesidad grado III",
|
||
"optimal": "Óptima",
|
||
"highNormal": "Normal-alta",
|
||
"hypertensionGrade1": "Hipertensión grado 1",
|
||
"hypertensionGrade2": "Hipertensión grado 2",
|
||
"hypertensionGrade3": "Hipertensión grado 3",
|
||
"belowTypicalRange": "Por debajo del rango típico",
|
||
"elevated": "Elevado",
|
||
"aboveTypicalRange": "Por encima del rango típico",
|
||
"significantlyLow": "Significativamente bajo",
|
||
"slightlyLow": "Ligeramente bajo",
|
||
"onTarget": "En rango objetivo",
|
||
"slightlyElevated": "Ligeramente elevado",
|
||
"significantlyElevated": "Significativamente elevado",
|
||
"farTooShort": "Muy corto",
|
||
"tooShort": "Corto",
|
||
"slightlyLong": "Ligeramente largo",
|
||
"farTooLong": "Muy largo",
|
||
"belowEssential": "Por debajo de lo esencial",
|
||
"essential": "Esencial",
|
||
"athletic": "Atlético",
|
||
"fitness": "Fitness",
|
||
"acceptable": "Aceptable",
|
||
"obese": "Obeso",
|
||
"veryLow": "Muy bajo",
|
||
"lowActive": "Poco activo",
|
||
"moderatelyActive": "Moderadamente activo",
|
||
"active": "Activo",
|
||
"veryActive": "Muy activo",
|
||
"good": "Bueno",
|
||
"moderate": "Moderado",
|
||
"low": "Bajo",
|
||
"high": "Alto",
|
||
"veryGood": "Muy bueno",
|
||
"veryStable": "Muy estable",
|
||
"stable": "Estable",
|
||
"fluctuating": "Variable"
|
||
}
|
||
},
|
||
"passwordStrength": {
|
||
"veryWeak": "Muy débil",
|
||
"weak": "Débil",
|
||
"acceptable": "Aceptable",
|
||
"strong": "Fuerte",
|
||
"veryStrong": "Muy fuerte",
|
||
"tooShort": "Demasiado corta",
|
||
"characters": "caracteres",
|
||
"minLength": "Se requieren al menos {count} caracteres."
|
||
},
|
||
"telegram": {
|
||
"errorInvalidAction": "Acción no válida.",
|
||
"errorMedicationNotFound": "Medicamento no encontrado.",
|
||
"errorMedicationInactive": "Medicamento no encontrado o inactivo.",
|
||
"errorUnknownAction": "Acción desconocida.",
|
||
"snoozeOneHour": "1 hora",
|
||
"snoozeThreeHours": "3 horas",
|
||
"snoozedFor": "{name} pospuesto durante {duration}.",
|
||
"skipped": "{name} omitido.",
|
||
"alreadyRecorded": "{name} ya estaba registrado.",
|
||
"recordedAsTaken": "{name} registrado como tomado.",
|
||
"confirmed": "{name} confirmado.",
|
||
"genericConfirmed": "Confirmado.",
|
||
"cancelled": "Cancelado.",
|
||
"moodLogged": "Registrado: {score}/5",
|
||
"moodNotePrompt": "Añade una nota breve (opcional).",
|
||
"moodNoteSaved": "Nota guardada.",
|
||
"moodNoteExpired": "Esa solicitud ha caducado.",
|
||
"remindLater": "Recordatorio pospuesto {duration}.",
|
||
"measurementDone": "Marcado como hecho.",
|
||
"measurementNotFound": "Recordatorio no encontrado.",
|
||
"buttonMoodNote": "Nota…",
|
||
"buttonLater": "Más tarde",
|
||
"buttonDone": "Hecho",
|
||
"noActiveMedications": "No se han encontrado medicamentos activos.",
|
||
"whichMedication": "<b>¿Qué medicamento has tomado?</b>",
|
||
"cancelButton": "Cancelar",
|
||
"askMedicationName": "Indica el medicamento, p. ej. <b>tomado Ramipril</b>.",
|
||
"medicationNotFoundExact": "Medicamento no encontrado. Envía el nombre exactamente como aparece en HealthLog.",
|
||
"helpHeader": "<b>Comandos disponibles:</b>",
|
||
"helpBody": "/help: mostrar esta ayuda\n/add: registrar una toma\n/start: iniciar el bot\n\n<b>Comandos de texto:</b>\ntaken <nombre>: confirmar una toma\n\n<b>Botones en los recordatorios:</b>\n• Tomado: confirmar la toma\n• 🕐 1h / 🕐 3h: posponer el recordatorio\n• ⏭ Omitir: omitir la toma\n• ✓ Confirmar: confirmar una toma omitida",
|
||
"measureValuePrompt": "Responde con el valor para registrarlo (opcional).",
|
||
"buttonMeasureValue": "Valor…",
|
||
"measureValueSaved": "Lectura guardada.",
|
||
"measureValueInvalid": "Responde con un número para registrar una lectura.",
|
||
"measureValueOutOfRange": "Ese valor está fuera del rango plausible.",
|
||
"measureValueExpired": "Esa solicitud ha caducado."
|
||
},
|
||
"medicationReminders": {
|
||
"phaseGreenTitle": "🟢 Recordatorio: {medName}",
|
||
"phaseGreenMessage": "🟢 Reminder:\n<b>{medName}</b> ({doseInfo}, {timeWindow})\nWindow closes in {minutes} Mín.",
|
||
"phaseYellowTitle": "🟡 Pronto: {medName}",
|
||
"phaseYellowMessage": "🟡 Pronto:\n<b>{medName}</b> ({doseInfo}, {timeWindow})\nQuedan {minutes} min.",
|
||
"phaseOrangeTitle": "🟠 Atrasado: {medName}",
|
||
"phaseOrangeMessage": "🟠 Overdue:\n<b>{medName}</b> ({doseInfo}, {timeWindow})\nOverdue by {minutes} Mín.",
|
||
"phaseRedTitle": "🔴 Omitido: {medName}",
|
||
"phaseRedMessage": "🔴 Omitido:\n<b>{medName}</b> ({doseInfo}, {timeWindow})\nMarcado como omitido.",
|
||
"buttonTaken": "Tomado",
|
||
"buttonConfirm": "✓ Confirmar",
|
||
"buttonSnoozeOneHour": "🕐 1h",
|
||
"buttonSnoozeThreeHours": "🕐 3h",
|
||
"buttonSkip": "⏭ Omitir"
|
||
},
|
||
"lowStockReminders": {
|
||
"title": "Quedan pocas existencias: {medName}",
|
||
"bodyToday": "{medName}: quedan {units} unidades, menos de un día de suministro.",
|
||
"bodyReorder": "{medName}: quedan {units} unidades. Las existencias se agotan hacia el {runsOutOn}. Vuelve a pedir antes del {reorderBy}.",
|
||
"bodyLastDose": "{medName}: quedan {units} unidades, alrededor de tu última dosis. Las existencias se agotan hacia el {runsOutOn}.",
|
||
"bodyExpired": "{medName}: no quedan existencias utilizables. {units} unidades están marcadas como caducadas.",
|
||
"bodyAsNeeded": "{medName}: solo quedan {units} unidades. Vuelve a pedir antes de necesitar la próxima dosis."
|
||
},
|
||
"moodReminders": {
|
||
"dailyTitle": "Registrar el ánimo",
|
||
"dailyBody": "¿Cómo te sientes hoy?"
|
||
},
|
||
"coachNudges": {
|
||
"greetingMorning": "Buenos días",
|
||
"greetingMorningNamed": "Buenos días, {name}",
|
||
"greetingHey": "Hola",
|
||
"greetingHeyNamed": "Hola, {name}",
|
||
"complianceBody": "Esta semana tu rutina de tomas se descuadró un poco. Si quieres, vemos juntos qué te facilitaría mantenerla.",
|
||
"bpBody": "Tu tensión estuvo esta semana un poco por encima de tu rango habitual. Cuando te venga bien, la miro contigo encantado.",
|
||
"scoreBody": "Tu recuperación ha ido aflojando estos últimos días. Si tienes curiosidad por la causa, aquí estoy para hablarlo.",
|
||
"selfContextBody": "Hace tiempo que no actualizas tu autodescripción. Cuando tengas un momento, refrescarla me ayuda a entenderte mejor.",
|
||
"weightBody": "Tu peso se ha alejado un poco de tu rango objetivo últimamente. Si quieres, hacemos balance juntos, con calma.",
|
||
"sleepDebtBody": "Varias de tus noches se quedaron cortas esta semana. Si te apetece, buscamos un patrón juntos.",
|
||
"measurementGapBody": "Tu registro lleva una semana en silencio. Cuando te venga bien, una breve puesta al día ayuda a retomarlo.",
|
||
"focusNote": "También tiene que ver con eso que querías vigilar.",
|
||
"reminderSurfacedTitle": "Tu recordatorio",
|
||
"reminderSurfacedLeadOne": "Me pediste que hoy te recordara esto:",
|
||
"reminderSurfacedLeadMany": "Me pediste que hoy te recordara {count} cosas:",
|
||
"questionConditions": "¿Tienes enfermedades crónicas que el Coach deba conocer?",
|
||
"questionFocus": "¿Hay algo concreto en lo que el Coach deba fijarse?",
|
||
"questionAllergies": "¿Tienes alergias o intolerancias?",
|
||
"questionAboutMe": "¿Quieres contarle al Coach algo sobre ti: rutinas, objetivos, contexto?"
|
||
},
|
||
"clinicianView": {
|
||
"title": "Registro de salud compartido",
|
||
"period": "Período del informe: {start}–{end}",
|
||
"expires": "Este enlace caduca el {date}.",
|
||
"provenance": "Este es un resumen de solo lectura compartido por la persona a la que pertenece, exportado de sus datos de HealthLog autorregistrados. Los valores son autoinformados y pueden incluir lecturas sincronizadas desde dispositivos; trátelos como informados por el paciente, no como un examen clínico.",
|
||
"labs": "Valores de laboratorio",
|
||
"medications": "Medicamentos y adherencia",
|
||
"bmi": "Índice de masa corporal (IMC)",
|
||
"statSummary": "último {latest} (prom. {avg}, rango {min}–{max})",
|
||
"statSummaryWithUnit": "último {latest} {unit} (prom. {avg} {unit}, rango {min}–{max} {unit})",
|
||
"adherence": "{rate} de adherencia",
|
||
"noAdherence": "—",
|
||
"glucose": {
|
||
"FASTING": "Glucosa (en ayunas)",
|
||
"POSTPRANDIAL": "Glucosa (posprandial)",
|
||
"RANDOM": "Glucosa (aleatoria)",
|
||
"BEDTIME": "Glucosa (al acostarse)"
|
||
},
|
||
"wellness": {
|
||
"title": "Puntuaciones de bienestar",
|
||
"disclaimer": "Puntuaciones descriptivas (0–100) calculadas a partir de las señales registradas. No son una evaluación clínica ni un diagnóstico.",
|
||
"recovery": "Puntuación de recuperación",
|
||
"stress": "Puntuación de estrés",
|
||
"strain": "Puntuación de esfuerzo",
|
||
"score": "Puntuación de bienestar"
|
||
},
|
||
"footer": "Compartido desde HealthLog, un registro de salud autoalojado.",
|
||
"unlock": {
|
||
"title": "Introduzca la frase de acceso",
|
||
"description": "Este registro de salud compartido está protegido. Introduzca la frase de acceso que recibió para verlo.",
|
||
"label": "Frase de acceso",
|
||
"error": "Esa frase de acceso no es correcta.",
|
||
"submit": "Desbloquear"
|
||
},
|
||
"loadError": {
|
||
"title": "No se pudo cargar esta vista compartida",
|
||
"description": "Se produjo un error al abrir este registro de salud compartido. Puede que el enlace haya caducado o que haya habido un problema temporal. Inténtalo de nuevo o pide un enlace nuevo a la persona que lo compartió.",
|
||
"retry": "Intentar de nuevo"
|
||
},
|
||
"documents": {
|
||
"title": "Documentos",
|
||
"untitled": "Documento sin título",
|
||
"download": "Descargar",
|
||
"attachmentHint": "Este archivo se descarga en tu dispositivo (sin vista previa en la página).",
|
||
"exifNote": "Los metadatos de la cámara (EXIF/GPS) se han eliminado de las imágenes JPEG, PNG y WebP compartidas."
|
||
},
|
||
"downloadPdf": "Descargar como PDF",
|
||
"downloadFhir": "Descargar como FHIR",
|
||
"bmiSection": "Índice de masa corporal",
|
||
"sectionEmpty": "Incluido en este enlace, pero aquí no hay nada registrado.",
|
||
"sectionUnavailable": "Incluido en este enlace, pero esta parte del historial está desactivada en la cuenta de origen, así que no contiene datos.",
|
||
"lastInjection": "Última inyección",
|
||
"identity": {
|
||
"name": "Nombre"
|
||
},
|
||
"doses": {
|
||
"title": "Dosis registradas",
|
||
"showing": "Se muestran las {shown} dosis más recientes de {total} registradas."
|
||
},
|
||
"course": "Tratamiento {n}",
|
||
"courseRange": "del {start} al {end}",
|
||
"courseSince": "desde el {start}",
|
||
"unavailable": {
|
||
"title": "Enlace caducado o no válido",
|
||
"description": "Este enlace para compartir ha caducado, se ha revocado o está incompleto. Pide un enlace nuevo a la persona que lo compartió."
|
||
}
|
||
},
|
||
"cycle": {
|
||
"symptomCategory": {
|
||
"physical": "Físico",
|
||
"emotional": "Emocional",
|
||
"digestive": "Digestivo",
|
||
"custom": "Personalizado"
|
||
},
|
||
"symptom": {
|
||
"cramps": "Calambres",
|
||
"headache": "Dolor de cabeza",
|
||
"bloating": "Hinchazón",
|
||
"acne": "Acné",
|
||
"breastTenderness": "Sensibilidad en los senos",
|
||
"fatigue": "Fatiga",
|
||
"backPain": "Dolor de espalda",
|
||
"insomnia": "Insomnio",
|
||
"libidoHigh": "Libido alta",
|
||
"libidoLow": "Libido baja",
|
||
"moodSwings": "Cambios de humor",
|
||
"foodCravings": "Antojos",
|
||
"nausea": "Náuseas",
|
||
"diarrhea": "Diarrea",
|
||
"constipation": "Estreñimiento",
|
||
"custom": {
|
||
"add": "Añadir síntoma",
|
||
"label": "Nombre",
|
||
"labelPlaceholder": "p. ej. Mareo",
|
||
"icon": "Icono",
|
||
"limitReached": "Se alcanzó el límite de síntomas personalizados.",
|
||
"remove": "Eliminar {label}",
|
||
"removeTitle": "¿Eliminar este síntoma?",
|
||
"removeBody": "«{label}» desaparece de la lista de síntomas. Los días que ya lo tienen lo conservan, pero no podrás volver a elegirlo.",
|
||
"removeConfirm": "Eliminar",
|
||
"fallbackLabel": "Síntoma personalizado"
|
||
}
|
||
},
|
||
"prediction": {
|
||
"disclaimer": "Las predicciones son estimaciones basadas en tus datos registrados, no son consejo médico ni un método anticonceptivo. La precisión mejora a medida que registras más ciclos."
|
||
},
|
||
"insights": {
|
||
"headline": {
|
||
"title": "Tu ciclo y tu cuerpo",
|
||
"restingHeartRate": "Tu frecuencia cardíaca en reposo es unos {delta} {dir} en tu fase lútea que en tu fase folicular.",
|
||
"heartRateVariability": "Tu variabilidad de la frecuencia cardíaca es unos {delta} {dir} en tu fase lútea que en tu fase folicular.",
|
||
"generic": "Tu {metric} es unos {delta} {dir} en tu fase lútea que en tu fase folicular.",
|
||
"dirHigher": "más alta",
|
||
"dirLower": "más baja",
|
||
"empty": "Aún no hay suficientes ciclos ni registros para mostrar un patrón de fase. Sigue registrando: se completará a medida que crezca tu historial."
|
||
},
|
||
"crosstab": {
|
||
"description": "Cómo se compara cada medición entre tus fases lútea y folicular, con tus propios datos.",
|
||
"pairLabel": "{metric}: fase lútea vs. folicular",
|
||
"detail": "Lútea {lutealAvg} ({lutealDays} días) vs. folicular {follicularAvg} ({follicularDays} días).",
|
||
"metricRestingHeartRate": "Frecuencia cardíaca en reposo",
|
||
"metricHrv": "Variabilidad de la frecuencia cardíaca",
|
||
"metricSleepDuration": "Duración del sueño",
|
||
"metricSteps": "Pasos",
|
||
"metricWeight": "Peso",
|
||
"metricBasalBodyTemp": "Temperatura basal",
|
||
"metricWristTemperature": "Temperatura de la muñeca nocturna",
|
||
"metricSkinTemperature": "Temperatura de la piel",
|
||
"metricBloodGlucose": "Glucosa en sangre",
|
||
"metricMood": "Estado de ánimo"
|
||
},
|
||
"title": "Análisis del ciclo",
|
||
"symptomPatternsTitle": "Patrones de síntomas por fase",
|
||
"symptomPatternsEmpty": "Registra síntomas a lo largo de un ciclo para ver en qué fase se concentran.",
|
||
"symptomMostlyIn": "Sobre todo en {phase} ({count}/{total} días)"
|
||
},
|
||
"phaseEducation": {
|
||
"title": "Qué está pasando ahora",
|
||
"whatsHappening": {
|
||
"MENSTRUAL": "Tu menstruación es el inicio de un nuevo ciclo, mientras el revestimiento uterino se desprende. La energía y el ánimo suelen sentirse más bajos en estos primeros días.",
|
||
"FOLLICULAR": "Tras la menstruación, el estrógeno sube de forma gradual mientras el cuerpo prepara un óvulo. Muchas personas notan una energía más estable durante esta etapa.",
|
||
"OVULATORY": "Hacia la mitad del ciclo se libera un óvulo y la fertilidad alcanza su punto máximo durante una ventana corta. Esta fase es la más breve de las cuatro.",
|
||
"LUTEAL": "Después de la ovulación, la progesterona sube y el cuerpo se asienta. En los días previos a la siguiente menstruación, algunas personas notan cambios premenstruales."
|
||
},
|
||
"context": {
|
||
"MENSTRUAL": "Los niveles hormonales están en su punto más bajo, por eso estos días pueden sentirse como un reinicio tranquilo. Algunas personas notan cólicos, un sueño más ligero o ganas de bajar el ritmo; otras los atraviesan casi sin cambios. Todo ello entra dentro de lo normal, y cómo se siente puede variar de un ciclo a otro.",
|
||
"FOLLICULAR": "Con el estrógeno en aumento, muchas personas describen estos días como luminosos y abiertos: el sueño suele llegar con más facilidad y la mente se siente más despejada. La temperatura basal suele mantenerse en su franja más baja hasta justo antes de la ovulación. La duración de esta fase es la que más varía de una persona a otra y de un ciclo a otro.",
|
||
"OVULATORY": "El estrógeno alcanza su máximo justo antes de liberarse el óvulo, a menudo junto con un breve ánimo más alto y una ligera subida de la temperatura basal en el día o los dos días siguientes. El flujo cervical tiende a volverse más transparente y elástico en torno a esta ventana. Una breve punzada en un lado es algo que algunas personas notan; muchas no sienten nada, y ambas cosas son del todo normales.",
|
||
"LUTEAL": "La progesterona guía la segunda mitad y la temperatura basal suele asentarse algo más alta que al inicio del ciclo. Algunas personas notan cambios en el sueño, el apetito, el ánimo o la energía a medida que pasan los días, mientras que otras se sienten estables todo el tiempo. El patrón es personal y a menudo se ve distinto de un mes a otro."
|
||
},
|
||
"commonHere": "Esto lo notas a menudo aquí",
|
||
"stillLearning": "Aún estamos conociendo tu ciclo. Sigue registrando y esto se irá completando con patrones de tus propios días."
|
||
},
|
||
"insightsSummary": {
|
||
"title": "Tu ciclo",
|
||
"currentDay": "Día {day} de tu ciclo",
|
||
"noActiveCycle": "Aún no hay un ciclo activo",
|
||
"viewDetails": "Ver análisis del ciclo"
|
||
},
|
||
"wellnessRing": {
|
||
"label": "Ciclo",
|
||
"loadError": "No se pudo cargar tu ciclo."
|
||
},
|
||
"disclaimer": "Estas predicciones son estimaciones descriptivas a partir de tus datos registrados, no un método anticonceptivo ni un consejo médico. Nunca indican que sea seguro tener relaciones sin protección. Para anticoncepción o cualquier decisión médica, consulta a un profesional sanitario.",
|
||
"title": "Tu ciclo",
|
||
"subtitle": "Registra tu periodo y síntomas, y mira qué viene después.",
|
||
"tabs": {
|
||
"calendar": "Calendario",
|
||
"predictions": "Predicciones",
|
||
"insights": "Análisis",
|
||
"settings": "Ajustes"
|
||
},
|
||
"logToday": "Registrar hoy",
|
||
"startedPeriod": "Mi periodo empezó hoy",
|
||
"endedPeriod": "Mi periodo terminó hoy",
|
||
"phase": {
|
||
"MENSTRUAL": "Menstrual",
|
||
"FOLLICULAR": "Folicular",
|
||
"OVULATORY": "Ovulatoria",
|
||
"LUTEAL": "Lútea",
|
||
"none": "Sin fase",
|
||
"label": "Fase"
|
||
},
|
||
"flow": {
|
||
"NONE": "Ninguno",
|
||
"SPOTTING": "Manchado",
|
||
"LIGHT": "Ligero",
|
||
"MEDIUM": "Medio",
|
||
"HEAVY": "Abundante",
|
||
"label": "Flujo"
|
||
},
|
||
"ovulationTest": {
|
||
"NEGATIVE": "Negativo",
|
||
"POSITIVE_LH_SURGE": "Pico de LH",
|
||
"ESTROGEN_SURGE": "Pico de estrógeno",
|
||
"INDETERMINATE": "Indeterminado",
|
||
"label": "Test de ovulación"
|
||
},
|
||
"mucus": {
|
||
"DRY": "Seco",
|
||
"STICKY": "Pegajoso",
|
||
"CREAMY": "Cremoso",
|
||
"WATERY": "Acuoso",
|
||
"EGG_WHITE": "Clara de huevo",
|
||
"label": "Moco cervical"
|
||
},
|
||
"cervixPosition": {
|
||
"LOW": "Bajo",
|
||
"HIGH": "Alto"
|
||
},
|
||
"cervixFirmness": {
|
||
"FIRM": "Firme",
|
||
"SOFT": "Blando"
|
||
},
|
||
"cervixOpening": {
|
||
"CLOSED": "Cerrado",
|
||
"OPEN": "Abierto"
|
||
},
|
||
"goal": {
|
||
"GENERAL_HEALTH": "Salud general",
|
||
"AVOID_PREGNANCY": "Evitar el embarazo",
|
||
"TRYING_TO_CONCEIVE": "Buscando embarazo",
|
||
"PERIMENOPAUSE": "Perimenopausia",
|
||
"OFF": "Seguimiento desactivado",
|
||
"label": "¿Para qué haces seguimiento?",
|
||
"description": "Esto define el lenguaje y qué predicciones ves. La guía de ventana fértil solo aparece si buscas embarazo."
|
||
},
|
||
"ring": {
|
||
"dayOfCycle": "Día {day}",
|
||
"dayUnknown": "—",
|
||
"ariaPhase": "Día {day} del ciclo, fase {phase}",
|
||
"ariaUnknown": "Aún no hay ciclo activo",
|
||
"caption": "de tu ciclo",
|
||
"firstPeriodCta": "Registrar mi primer periodo",
|
||
"periodOverdue": "Tu período llega más tarde de lo habitual. El conteo de días se pausa hasta que registres el próximo período.",
|
||
"periodOverdueDays": "Tu período llega {days} días más tarde de lo habitual. El conteo de días se pausa hasta que registres el próximo período.",
|
||
"logPeriodCta": "Registrar período"
|
||
},
|
||
"calendar": {
|
||
"legendPeriod": "Periodo registrado",
|
||
"legendPredicted": "Periodo previsto",
|
||
"legendFertile": "Ventana fértil",
|
||
"legendOvulation": "Ovulación",
|
||
"legendSymptoms": "Síntomas registrados",
|
||
"prevMonth": "Mes anterior",
|
||
"nextMonth": "Mes siguiente",
|
||
"loading": "Cargando tu calendario…",
|
||
"learning": "Estamos aprendiendo tu ciclo: registra al menos tres ciclos completos y se completarán la ventana fértil, la ovulación y las fases. Hasta entonces, el calendario solo muestra lo que has registrado.",
|
||
"legendSymptom": "Síntomas",
|
||
"legendOvulationConfirmed": "Ovulación confirmada",
|
||
"flowSpotting": "manchado",
|
||
"flowLight": "ligero",
|
||
"flowMedium": "medio",
|
||
"flowHeavy": "abundante",
|
||
"legendIntercourse": "Relaciones",
|
||
"legendOtherEntries": "Otras entradas"
|
||
},
|
||
"predictions": {
|
||
"title": "Qué viene después",
|
||
"nextPeriod": "Próximo periodo",
|
||
"nextPeriodWindow": "{low}–{high}",
|
||
"fertileWindow": "Ventana fértil",
|
||
"ovulation": "Ovulación estimada",
|
||
"confidenceHigh": "Alta",
|
||
"confidenceMedium": "Media",
|
||
"confidenceLow": "Baja",
|
||
"stillLearning": "Aún aprendiendo",
|
||
"stillLearningBody": "Registra al menos tres ciclos completos y tus predicciones mejorarán. Hasta entonces es una estimación aproximada.",
|
||
"rawMode": "Predicción desactivada",
|
||
"rawModeBody": "Has desactivado las predicciones: solo se muestran tus datos registrados, sin pronóstico.",
|
||
"none": "Aún no hay predicción. Registra un periodo para empezar.",
|
||
"ovulationConfirmed": "Ovulación (confirmada)"
|
||
},
|
||
"history": {
|
||
"title": "Tus ciclos",
|
||
"avgLength": "Duración media",
|
||
"variability": "Variabilidad",
|
||
"avgPeriodLength": "Periodo medio",
|
||
"regularity": "Regularidad",
|
||
"regularityREGULAR": "Regular",
|
||
"regularityIRREGULAR": "Irregular",
|
||
"regularityLEARNING": "Aprendiendo",
|
||
"days": "{count} días",
|
||
"daysPlusMinus": "± {count} días",
|
||
"none": "Aún no hay ciclos registrados.",
|
||
"recentCycles": "Ciclos recientes",
|
||
"ongoing": "en curso",
|
||
"periodDays": "período {count} d",
|
||
"ovulationChip": "Ovulación",
|
||
"chartTitle": "Duración del ciclo en el tiempo",
|
||
"chartCaption": "Cada barra es un ciclo: la base rosa es tu periodo, el resto es la duración del ciclo.",
|
||
"chartAria": "Gráfico de duración de tus últimos {count} ciclos, con una media de {avg} días, clasificado como {regularity}.",
|
||
"legendPeriodSegment": "Días de periodo",
|
||
"legendRestSegment": "Resto del ciclo"
|
||
},
|
||
"sheet": {
|
||
"title": "Registrar tu día",
|
||
"description": "Flujo, síntomas y notas de este día.",
|
||
"flow": "Flujo",
|
||
"symptoms": "Síntomas",
|
||
"temperature": "Temperatura basal",
|
||
"temperatureDisturbed": "Marcar la medición como alterada",
|
||
"temperatureDisturbedHint": "Fiebre, enfermedad, alcohol o una medición tardía: se excluye de la evaluación de temperatura.",
|
||
"ovulationTest": "Test de ovulación",
|
||
"mucus": "Moco cervical",
|
||
"cervix": "Cuello uterino",
|
||
"cervixPosition": "Posición",
|
||
"cervixFirmness": "Firmeza",
|
||
"cervixOpening": "Apertura",
|
||
"intercourse": "Relaciones",
|
||
"protected": "Protegidas",
|
||
"note": "Nota",
|
||
"notePlaceholder": "Algo que quieras recordar de hoy…",
|
||
"save": "Guardar",
|
||
"saving": "Guardando…",
|
||
"cancel": "Cancelar",
|
||
"saveError": "No se pudo guardar. Inténtalo de nuevo.",
|
||
"emptyHint": "Elige un flujo o un síntoma para guardar este día, o usa arriba el botón de inicio del periodo.",
|
||
"intermenstrualBleeding": "Manchado entre periodos",
|
||
"pregnancyTest": "Prueba de embarazo",
|
||
"progesteroneTest": "Prueba de progesterona",
|
||
"contraceptive": "Anticonceptivo",
|
||
"severity": "Intensidad",
|
||
"severityLevel": "Intensidad {level} de 4",
|
||
"delete": "Eliminar",
|
||
"deleteTitle": "¿Eliminar este día?",
|
||
"deleteBody": "Se pierde todo lo registrado ese día: flujo, temperatura, síntomas y tu nota. No se puede recuperar.",
|
||
"deleteConfirm": "Eliminar día",
|
||
"temperatureSection": "Temperatura y ovulación",
|
||
"intimacySection": "Intimidad y anticoncepción",
|
||
"testsSection": "Pruebas",
|
||
"phaseDayHeader": "Día {day}, {phase}",
|
||
"bbtHint": "Mídela a primera hora de la mañana, antes de levantarte.",
|
||
"titleForDate": "Registro del {date}",
|
||
"descriptionToday": "Hoy. Flujo, síntomas y notas.",
|
||
"deleteBodyCycleStart": "Este día abre un ciclo. Al eliminarlo se va con él el inicio del periodo, de modo que el ciclo anterior continúa como antes. También se va todo lo registrado aquí: flujo, temperatura, síntomas y tu nota. No hay forma de recuperarlo."
|
||
},
|
||
"settings": {
|
||
"title": "Ajustes del ciclo",
|
||
"typicalCycleLength": "Duración típica del ciclo (días)",
|
||
"typicalPeriodLength": "Duración típica del periodo (días)",
|
||
"lutealPhaseLength": "Duración de la fase lútea (días)",
|
||
"priorsDescription": "Estos valores ayudan a tus predicciones antes de registrar muchos ciclos. Déjalos en blanco para usar los predeterminados.",
|
||
"rawChartMode": "Modo de gráfico en bruto",
|
||
"rawChartModeDescription": "Muestra solo tus datos registrados, sin predicciones ni interpretación.",
|
||
"secondarySymptomLabel": "Segundo signo de fertilidad",
|
||
"secondarySymptomDescription": "El segundo signo que se combina con tu temperatura para la doble comprobación sintotérmica. La mayoría observa el moco cervical; cambia a la observación del cuello uterino si lo prefieres.",
|
||
"secondarySymptomCitation": "Más sobre el método (estudio)",
|
||
"secondarySymptom": {
|
||
"MUCUS": "Moco cervical",
|
||
"CERVIX": "Cuello uterino"
|
||
},
|
||
"prediction": "Predicciones",
|
||
"predictionDescription": "Pronostica tu próximo periodo y, cuando corresponda, tu ventana fértil.",
|
||
"encryption": "Cifrar entradas sensibles",
|
||
"encryptionDescription": "Cifra en reposo los campos que revelan intención (test de embarazo, anticoncepción, relaciones), además de las notas siempre cifradas.",
|
||
"discreet": "Notificaciones discretas",
|
||
"discreetDescription": "Oculta los detalles del ciclo en el texto de las notificaciones de tu pantalla de bloqueo.",
|
||
"saved": "Ajustes guardados",
|
||
"saveError": "No se pudo guardar. Inténtalo de nuevo.",
|
||
"save": "Guardar",
|
||
"reminders": "Recordatorios",
|
||
"remindersDescription": "Activa los recordatorios de período por canal en los ajustes de notificaciones.",
|
||
"remindersLink": "Ajustes de notificaciones",
|
||
"fertileReminder": "Recordatorio de ventana fértil",
|
||
"fertileReminderDescription": "Recibe un aviso unos días antes de tu ventana fértil estimada. Desactivado por defecto: actívalo por canal en los ajustes de notificaciones."
|
||
},
|
||
"testResult": {
|
||
"POSITIVE": "Positivo",
|
||
"NEGATIVE": "Negativo",
|
||
"INDETERMINATE": "No claro"
|
||
},
|
||
"contraceptive": {
|
||
"NONE": "Ninguno",
|
||
"UNSPECIFIED": "Otro",
|
||
"IMPLANT": "Implante",
|
||
"INJECTION": "Inyección",
|
||
"IUD": "DIU",
|
||
"INTRAVAGINAL_RING": "Anillo",
|
||
"ORAL": "Píldora",
|
||
"PATCH": "Parche",
|
||
"EMERGENCY": "Emergencia"
|
||
},
|
||
"loadError": "No se pudieron cargar tus datos del ciclo.",
|
||
"saveError": "No se pudo guardar tu registro del ciclo.",
|
||
"deleteError": "No se pudo eliminar la entrada.",
|
||
"bbt": {
|
||
"title": "Temperatura basal",
|
||
"caption": "Tu temperatura matutina a lo largo de este ciclo. Una subida sostenida de unos 0,2 °C sigue a la ovulación.",
|
||
"empty": "Aún no hay mediciones de temperatura",
|
||
"emptyHint": "Registra tu temperatura basal cada mañana para ver el cambio de temperatura de tu ciclo.",
|
||
"ovulationEstimate": "Ovulación est.",
|
||
"tooltipTemp": "{temp} {unit}",
|
||
"ovulationConfirmed": "Ovulación confirmada"
|
||
},
|
||
"fieldInfo": {
|
||
"bbt": "Tu temperatura en reposo, medida a primera hora de la mañana antes de levantarte. Sube ligeramente (unos 0,2–0,3 °C) tras la ovulación.",
|
||
"bbtLabel": "¿Qué es la temperatura basal?",
|
||
"mucus": "El flujo vaginal cambia a lo largo del ciclo: de seco o pegajoso a cremoso, y luego acuoso y como clara de huevo en los días más fértiles.",
|
||
"mucusLabel": "¿Qué es el moco cervical?",
|
||
"ovulationTest": "Una prueba de orina casera que detecta el pico de LH, el aumento hormonal unas 24–36 h antes de la ovulación. Un positivo señala la ventana más fértil.",
|
||
"ovulationTestLabel": "¿Qué es una prueba de ovulación?",
|
||
"spotting": "Sangrado leve fuera de la menstruación.",
|
||
"spottingLabel": "¿Qué es el manchado entre periodos?",
|
||
"pregnancyTest": "Resultado de una prueba de embarazo casera (hCG).",
|
||
"pregnancyTestLabel": "¿Qué es una prueba de embarazo?",
|
||
"progesteroneTest": "Una prueba que confirma que ha ocurrido la ovulación: la progesterona sube después.",
|
||
"progesteroneTestLabel": "¿Qué es una prueba de progesterona?",
|
||
"intercourse": "Si hubo relaciones sexuales este día.",
|
||
"intercourseLabel": "¿Qué registra relaciones?",
|
||
"protected": "Si se usó anticoncepción durante las relaciones.",
|
||
"protectedLabel": "¿Qué significa protegido?"
|
||
},
|
||
"saveSuccess": "Entrada guardada",
|
||
"deleteSuccess": "Entrada eliminada",
|
||
"periodStartSaved": "Inicio del periodo guardado",
|
||
"periodEndSaved": "Fin del periodo guardado",
|
||
"startedPeriodOnDate": "Mi periodo empezó este día",
|
||
"endedPeriodOnDate": "Mi periodo terminó este día",
|
||
"startAbsorbed": "Inicio del periodo guardado. Tu inicio del {absorbed} se ha unido al del {date}.",
|
||
"startRestored": "Guardado. El inicio del {dates} vuelve a estar."
|
||
},
|
||
"cycleReminders": {
|
||
"periodSoonTitle": "El periodo llegará pronto",
|
||
"periodSoonBody": "Se prevé tu próximo periodo en unos dos días.",
|
||
"periodConfirmTitle": "¿Ha comenzado tu periodo?",
|
||
"periodConfirmBody": "Tu periodo estaba previsto para ahora. Regístralo para mantener las predicciones precisas.",
|
||
"fertileSoonTitle": "Ventana fértil próxima",
|
||
"fertileSoonBody": "Se prevé que tu ventana fértil estimada comience en unos dos días. Es una estimación, no una garantía médica ni anticonceptiva.",
|
||
"discreetTitle": "Recordatorio de HealthLog",
|
||
"discreetBody": "Tienes un recordatorio en HealthLog."
|
||
},
|
||
"dataList": {
|
||
"allSources": "Todas las fuentes",
|
||
"dateFrom": "Desde",
|
||
"dateTo": "Hasta",
|
||
"dateRange": "Periodo",
|
||
"valueRange": "Valor",
|
||
"valueMin": "Mín.",
|
||
"valueMax": "Máx.",
|
||
"typeLabel": "Tipo",
|
||
"sourceLabel": "Fuente",
|
||
"resetFilters": "Restablecer",
|
||
"clearFilter": "Quitar filtro: {label}",
|
||
"selectAll": "Seleccionar todo en esta página",
|
||
"selectRow": "Seleccionar fila",
|
||
"selected": "{count} seleccionados",
|
||
"deleteN": "Eliminar ({count})",
|
||
"clearSelection": "Borrar selección",
|
||
"selectionBarLabel": "Acciones de selección"
|
||
},
|
||
"measurementReminders": {
|
||
"sectionTitle": "Revisiones",
|
||
"sectionDescription": "Recordatorios de qué medir o revisar, cuándo y dónde.",
|
||
"markDone": "Hecho",
|
||
"delete": "Eliminar",
|
||
"deleteConfirmTitle": "¿Eliminar recordatorio?",
|
||
"deleteConfirmDescription": "Este recordatorio de revisión se eliminará de forma permanente.",
|
||
"postpone": {
|
||
"menuItem": "Aplazar…",
|
||
"title": "Aplazar vencimiento",
|
||
"description": "Solo mueve el vencimiento actual; el ritmo regular no cambia.",
|
||
"chip": "+{days} días",
|
||
"dateLabel": "Nueva fecha",
|
||
"confirm": "Aplazar"
|
||
},
|
||
"skip": {
|
||
"heading": "Omitir este vencimiento",
|
||
"explainer": "Se registra honestamente como omitido, no como hecho. El intervalo se reinicia desde hoy.",
|
||
"action": "Omitir",
|
||
"confirmTitle": "¿Omitir este vencimiento?"
|
||
},
|
||
"snoozedUntil": "Aplazado hasta {date}",
|
||
"skippedOn": "Omitido el {date}",
|
||
"skipCount": "omitido {count} veces",
|
||
"disabledBadge": "Apagado",
|
||
"nextDue": {
|
||
"none": "Sin programar",
|
||
"today": "Vence hoy",
|
||
"tomorrow": "Vence mañana",
|
||
"inDays": "En {days} días"
|
||
},
|
||
"overdueByDays": "Vencido hace {days} días",
|
||
"overdueSinceYesterday": "Vencido desde ayer",
|
||
"cadence": {
|
||
"everyNDays": "Cada {days} días",
|
||
"custom": "Programación personalizada",
|
||
"customInterval": "Personalizado (cada N días)",
|
||
"rruleOption": "Regla propia (RRULE)"
|
||
},
|
||
"location": {
|
||
"prefix": "En: {location}"
|
||
},
|
||
"types": {
|
||
"WEIGHT": "Peso",
|
||
"BLOOD_PRESSURE_SYS": "Presión arterial",
|
||
"PULSE": "Pulso",
|
||
"BLOOD_GLUCOSE": "Glucosa en sangre",
|
||
"OXYGEN_SATURATION": "Saturación de oxígeno",
|
||
"BODY_FAT": "Grasa corporal",
|
||
"BODY_TEMPERATURE": "Temperatura corporal",
|
||
"FAT_MASS": "Masa grasa",
|
||
"FAT_FREE_MASS": "Masa libre de grasa",
|
||
"MUSCLE_MASS": "Masa muscular",
|
||
"LEAN_BODY_MASS": "Masa magra",
|
||
"BONE_MASS": "Masa ósea",
|
||
"TOTAL_BODY_WATER": "Agua corporal",
|
||
"VISCERAL_FAT": "Grasa visceral",
|
||
"BODY_MASS_INDEX": "Índice de masa corporal (IMC)",
|
||
"WAIST_CIRCUMFERENCE": "Perímetro de cintura",
|
||
"PHQ9_SCORE": "PHQ-9 (ánimo)",
|
||
"GAD7_SCORE": "GAD-7 (preocupación)",
|
||
"WHO5_SCORE": "WHO-5 (bienestar)",
|
||
"SCI_SCORE": "SCI (sueño)"
|
||
},
|
||
"typeGroups": {
|
||
"vitals": "Constantes vitales",
|
||
"bodyComposition": "Composición corporal",
|
||
"mentalWellbeing": "Bienestar mental"
|
||
},
|
||
"empty": {
|
||
"title": "Aún no hay recordatorios",
|
||
"description": "Añade un recordatorio para medir la presión arterial con regularidad o programar un análisis de sangre anual."
|
||
},
|
||
"form": {
|
||
"label": "Etiqueta",
|
||
"labelPlaceholder": "p. ej. Medir la presión arterial",
|
||
"kind": "Tipo",
|
||
"kindType": "Vinculado a una medición",
|
||
"kindFreeText": "Comprobación de texto libre",
|
||
"measurementType": "Medición",
|
||
"cadence": "Repetir",
|
||
"notifyHour": "Recordar a las",
|
||
"location": "Dónde (opcional)",
|
||
"locationPlaceholder": "p. ej. Médico, Laboratorio",
|
||
"save": "Guardar",
|
||
"createTitle": "Nuevo recordatorio",
|
||
"editTitle": "Editar recordatorio",
|
||
"customInterval": "Repetir cada (días)",
|
||
"rrule": "Regla de recurrencia (RRULE)",
|
||
"rruleHint": "RFC-5545, p. ej. FREQ=YEARLY para una revisión anual.",
|
||
"firstDue": "Primer vencimiento (opcional)"
|
||
},
|
||
"pushTitle": "Recordatorio de revisión",
|
||
"pushBody": "Toca: {label}",
|
||
"pushLocation": "(en {location})",
|
||
"edit": "Editar",
|
||
"originCoach": "Coach",
|
||
"until": "Hasta {date}",
|
||
"selfPlanned": "Autoplanificado",
|
||
"captureValue": "Registrar valor",
|
||
"measureNow": "Medir ahora",
|
||
"startCheckIn": "Iniciar check-in",
|
||
"nextDueLabel": "Próximo vencimiento:",
|
||
"lastDoneLabel": "Última vez:",
|
||
"customize": "Personalizar revisiones",
|
||
"adherence": {
|
||
"label": "Dentro del intervalo",
|
||
"onTrack": "Al día",
|
||
"due": "Toca ahora"
|
||
},
|
||
"capture": {
|
||
"title": "Registrar medición",
|
||
"description": "Introduce el valor; el recordatorio se marca como hecho."
|
||
},
|
||
"manage": {
|
||
"empty": "Aún no hay recordatorios para personalizar."
|
||
},
|
||
"dashboard": {
|
||
"empty": "No hay revisiones próximas.",
|
||
"openLink": "Abrir revisiones"
|
||
},
|
||
"showMeasurements": "Ver mediciones",
|
||
"loadError": "No se pudieron cargar tus recordatorios.",
|
||
"fileVisit": "Registrar una cita"
|
||
},
|
||
"moduleList": {
|
||
"viewToggleLabel": "Vista",
|
||
"viewCards": "Vista de tarjetas",
|
||
"viewList": "Vista de lista",
|
||
"viewHeading": "Vista",
|
||
"viewDescription": "Elige si las entradas se muestran como tarjetas o como lista compacta.",
|
||
"reorder": {
|
||
"heading": "Orden",
|
||
"description": "Arrastra las entradas para definir el orden en que aparecen.",
|
||
"empty": "Aún no hay entradas para ordenar."
|
||
}
|
||
},
|
||
"labs": {
|
||
"title": "Resultados de análisis",
|
||
"subtitle": "Analíticas de sangre y biomarcadores",
|
||
"addResult": "Añadir valor",
|
||
"addDescription": "Registra un biomarcador a partir de un informe de laboratorio.",
|
||
"addFirst": "Añade tu primer resultado",
|
||
"emptyTitle": "Aún no hay resultados",
|
||
"emptyDescription": "Registra analíticas como HbA1c, LDL o ferritina para seguirlas a lo largo del tiempo y compartirlas con tu médico.",
|
||
"referenceLabel": "Referencia",
|
||
"readingsCount": "{count} mediciones",
|
||
"deleteConfirmTitle": "¿Eliminar resultado de laboratorio?",
|
||
"deleteConfirmDescription": "Este resultado de laboratorio se eliminará. Justo después podrás deshacerlo durante un breve momento.",
|
||
"deletedToast": "Resultado eliminado",
|
||
"deleteError": "No se pudo eliminar el resultado",
|
||
"loadError": "No se pudieron cargar los resultados",
|
||
"customize": "Personalizar laboratorio",
|
||
"localOcr": {
|
||
"heading": "Leer escaneos en este dispositivo",
|
||
"description": "Lee la foto en tu dispositivo y envía solo el texto extraído a tu proveedor.",
|
||
"detail": "Útil cuando tu proveedor de IA no puede leer imágenes. Menos preciso: revisa cada valor antes de guardar."
|
||
},
|
||
"sort": {
|
||
"heading": "Orden",
|
||
"label": "Orden de los valores",
|
||
"recentDesc": "Medición más reciente primero",
|
||
"recentAsc": "Medición más antigua primero",
|
||
"alphaAsc": "Nombre (A–Z)",
|
||
"alphaDesc": "Nombre (Z–A)",
|
||
"manual": "Ordenar manualmente",
|
||
"hint": "Con el orden manual puedes arrastrar los biomarcadores de abajo en tu propio orden."
|
||
},
|
||
"range": {
|
||
"inRange": "En rango",
|
||
"below": "Por debajo",
|
||
"above": "Por encima"
|
||
},
|
||
"form": {
|
||
"value": "Valor",
|
||
"takenAt": "Fecha de la muestra",
|
||
"note": "Nota",
|
||
"notePlaceholder": "Contexto opcional para este resultado",
|
||
"requiredError": "Introduce un valor.",
|
||
"save": "Guardar",
|
||
"saveAndAddAnother": "Guardar y añadir otro",
|
||
"savedToast": "Resultado guardado",
|
||
"saveError": "No se pudo guardar el resultado",
|
||
"biomarker": "Biomarcador",
|
||
"biomarkerPlaceholder": "Elige un biomarcador",
|
||
"defineNew": "+ Definir nuevo biomarcador",
|
||
"noBiomarkersHint": "Define primero un biomarcador para registrar un valor.",
|
||
"pickBiomarkerError": "Elige primero un biomarcador.",
|
||
"resultType": "Tipo de resultado",
|
||
"numeric": "Numérico",
|
||
"qualitative": "Cualitativo",
|
||
"qualitativeResult": "Resultado",
|
||
"qualitativePlaceholder": "p. ej. negativo",
|
||
"qualNegative": "negativo",
|
||
"qualPositive": "positivo",
|
||
"qualBorderline": "límite",
|
||
"sourceRange": "Rango impreso en el informe",
|
||
"sourceRangePlaceholder": "p. ej. 3,5 - 5,0 o < 5",
|
||
"sourceRangeAdd": "+ Añadir el rango del informe",
|
||
"sourceRangeHint": "Opcional. Se aplica solo a esta lectura; tu rango guardado no cambia.",
|
||
"sourceRangeUnparsed": "Se guarda tal cual: no se pudo leer un rango numérico."
|
||
},
|
||
"backToLabs": "Volver a los resultados",
|
||
"hasNote": "Nota",
|
||
"editTitle": "Editar medición",
|
||
"editDescription": "Corrige el valor, la fecha o la nota de esta medición.",
|
||
"editedToast": "Medición actualizada",
|
||
"editError": "No se pudo actualizar la medición",
|
||
"editTimestampError": "Introduce una fecha válida.",
|
||
"editReading": "Editar medición",
|
||
"deleteReading": "Eliminar medición",
|
||
"restoredToast": "Medición restaurada",
|
||
"restoreError": "No se pudo restaurar la medición",
|
||
"detail": {
|
||
"emptyTitle": "Aún no hay mediciones",
|
||
"emptyDescription": "Añade un valor para seguir este biomarcador con el tiempo.",
|
||
"title": "Biomarcador",
|
||
"genericDescription": "Un biomarcador de laboratorio que sigues. Añade lecturas para ver su evolución frente al rango de referencia.",
|
||
"valuesTitle": "{marker}: todas las lecturas",
|
||
"valuesDescription": "Cada lectura de este biomarcador. Edita o elimina una entrada directamente.",
|
||
"backToMarker": "Volver a {marker}",
|
||
"latestResult": "Último resultado"
|
||
},
|
||
"chart": {
|
||
"empty": "Sin mediciones en este periodo.",
|
||
"valueLabel": "Valor",
|
||
"range": {
|
||
"30": "30 d",
|
||
"90": "90 d",
|
||
"365": "1 a",
|
||
"all": "Todo"
|
||
},
|
||
"sourceRangeLabel": "Rango del informe",
|
||
"sourceBandLegend": "Segunda banda: el rango impreso en el informe del {date}.",
|
||
"sourceBandMixed": "Segunda banda: el rango impreso en el informe más reciente. Informes anteriores del periodo indican rangos distintos."
|
||
},
|
||
"biomarker": {
|
||
"manageTitle": "Biomarcadores",
|
||
"managerDescription": "Define un marcador una vez: su unidad y rango se reutilizan en cada medición.",
|
||
"define": "Definir",
|
||
"defineFirst": "Define tu primer biomarcador",
|
||
"defineTitle": "Definir biomarcador",
|
||
"defineDescription": "Configura el nombre, la unidad y el rango una vez. Eliges el marcador al añadir un valor.",
|
||
"editTitle": "Editar biomarcador",
|
||
"edit": "Editar",
|
||
"delete": "Eliminar",
|
||
"deletedToast": "Biomarcador eliminado",
|
||
"deleteError": "No se pudo eliminar el biomarcador",
|
||
"deleteConfirmTitle": "¿Eliminar biomarcador?",
|
||
"deleteConfirmDescription": "El biomarcador y todos sus valores registrados se eliminan de forma permanente. Esta acción no se puede deshacer.",
|
||
"emptyTitle": "Aún no hay biomarcadores",
|
||
"emptyDescription": "Define marcadores como LDL o HbA1c para registrar valores.",
|
||
"loadError": "No se pudieron cargar los biomarcadores",
|
||
"noRange": "Sin rango de referencia",
|
||
"form": {
|
||
"seedLabel": "Partir de un marcador común",
|
||
"seedPlaceholder": "Elige un marcador (opcional)",
|
||
"seedHint": "Al elegir uno se rellenan los campos: ajusta el rango a tu laboratorio.",
|
||
"name": "Nombre",
|
||
"namePlaceholder": "p. ej. Colesterol LDL",
|
||
"unit": "Unidad",
|
||
"unitPlaceholder": "p. ej. mg/dL",
|
||
"unitLockedHint": "Cuando este marcador ya tiene valores, su unidad no cambia. De lo contrario, los valores guardados se mostrarían en una unidad nueva sin convertirse.",
|
||
"panel": "Panel",
|
||
"panelPlaceholder": "p. ej. Lípidos",
|
||
"lowerBound": "Referencia mínima",
|
||
"upperBound": "Referencia máxima",
|
||
"lowerPlaceholder": "Límite inferior",
|
||
"upperPlaceholder": "Límite superior",
|
||
"context": "Contexto",
|
||
"contextPlaceholder": "Nota opcional sobre este marcador",
|
||
"rangeHint": "Ambos límites son opcionales: deja uno en blanco para un rango abierto (p. ej. LDL < 116).",
|
||
"requiredError": "El nombre y la unidad son obligatorios.",
|
||
"rangeOrderError": "El límite inferior no debe superar al superior.",
|
||
"save": "Guardar biomarcador",
|
||
"savedToast": "Biomarcador guardado",
|
||
"updatedToast": "Biomarcador actualizado",
|
||
"saveError": "No se pudo guardar el biomarcador"
|
||
},
|
||
"hide": "Ocultar",
|
||
"unhide": "Restaurar",
|
||
"hiddenToast": "Biomarcador ocultado",
|
||
"unhiddenToast": "Biomarcador restaurado",
|
||
"hideError": "No se pudo actualizar el biomarcador",
|
||
"allHidden": "Todos los biomarcadores están ocultos.",
|
||
"hiddenSection": "Ocultos"
|
||
},
|
||
"catalog": {
|
||
"total-cholesterol": "Colesterol total",
|
||
"ldl": "Colesterol LDL",
|
||
"hdl": "Colesterol HDL",
|
||
"triglycerides": "Triglicéridos",
|
||
"fasting-glucose": "Glucosa en ayunas",
|
||
"hba1c": "HbA1c",
|
||
"tsh": "TSH",
|
||
"ft3": "T3 libre",
|
||
"ft4": "T4 libre",
|
||
"ferritin": "Ferritina",
|
||
"transferrin-saturation": "Saturación de transferrina",
|
||
"vitamin-d": "Vitamina D (25-OH)",
|
||
"vitamin-b12": "Vitamina B12",
|
||
"folate": "Folato",
|
||
"hs-crp": "PCR ultrasensible",
|
||
"creatinine": "Creatinina",
|
||
"egfr": "TFGe",
|
||
"alt": "ALT",
|
||
"ast": "AST",
|
||
"ggt": "GGT",
|
||
"sodium": "Sodio",
|
||
"potassium": "Potasio",
|
||
"hemoglobin": "Hemoglobina",
|
||
"hematocrit": "Hematocrito",
|
||
"wbc": "Leucocitos",
|
||
"platelets": "Plaquetas",
|
||
"panel": {
|
||
"lipids": "Lípidos",
|
||
"glucose": "Metabolismo de la glucosa",
|
||
"thyroid": "Tiroides",
|
||
"iron": "Hierro",
|
||
"vitamins": "Vitaminas",
|
||
"inflammation": "Inflamación",
|
||
"renal": "Riñón",
|
||
"liver": "Hígado",
|
||
"electrolytes": "Electrolitos",
|
||
"bloodCount": "Hemograma"
|
||
},
|
||
"desc": {
|
||
"total-cholesterol": "El colesterol total es la suma del colesterol transportado por todas las partículas de lipoproteínas de la sangre, incluidas las fracciones LDL, HDL y remanentes. El colesterol es en sí mismo un componente esencial de las membranas celulares, las hormonas y los ácidos biliares. Como cifra única resulta una medida aproximada, porque tanto una proporción alta de HDL como una alta de LDL elevan el total, por lo que suele leerse junto con las fracciones individuales. Se registra sobre todo dentro de la evaluación del riesgo cardiovascular a largo plazo.",
|
||
"ldl": "El colesterol LDL es el colesterol transportado por las partículas de lipoproteína de baja densidad, la fracción que lleva el colesterol a los tejidos pero que también puede depositarlo en las paredes arteriales. A lo largo de los años, ese depósito contribuye a la placa aterosclerótica, por lo que el LDL es uno de los marcadores lipídicos más vigilados. Una menor exposición a largo plazo suele asociarse a un menor riesgo cardiovascular. Se interpreta por categoría de riesgo y no frente a un único valor normal fijo.",
|
||
"hdl": "El colesterol HDL es el colesterol transportado por las partículas de lipoproteína de alta densidad, que recogen el colesterol sobrante de los tejidos y lo devuelven al hígado para reciclarlo o eliminarlo. Por esa función de transporte se le suele llamar la fracción protectora. Los niveles muy bajos tienden a acompañar a un mayor riesgo cardiovascular, aunque elevarlo de forma artificial no ha reducido el riesgo de manera fiable, por lo que se lee como marcador y no como objetivo. Suele interpretarse junto con el LDL y los triglicéridos.",
|
||
"triglycerides": "Los triglicéridos son la principal forma de grasa que circula por la sangre, aportada tanto por la dieta como producida por el hígado, y constituyen una reserva clave de energía. Los niveles suben después de comer, por lo que la muestra suele tomarse en ayunas para que sea comparable. Unos triglicéridos altos de forma persistente se asocian a riesgo metabólico y cardiovascular y a menudo acompañan a la resistencia a la insulina y a un HDL bajo. Se leen como un componente del cuadro lipídico global.",
|
||
"fasting-glucose": "La glucosa en ayunas es la concentración de azúcar en la sangre medida tras un ayuno nocturno, y refleja cómo mantiene el cuerpo su nivel basal de azúcar sin comida reciente. La glucosa es el combustible inmediato principal del organismo, y la insulina la mantiene normalmente dentro de un rango estrecho. Una medición en ayunas elimina el efecto de las comidas recientes, lo que la convierte en un cribado estándar del funcionamiento de la regulación de la glucosa. Es uno de los marcadores con los que se evalúa la salud metabólica a lo largo del tiempo.",
|
||
"hba1c": "La HbA1c es la proporción de hemoglobina de los glóbulos rojos que se ha unido a la glucosa, y se acumula en proporción a la exposición media al azúcar en sangre. Como los glóbulos rojos viven unos tres meses, refleja la glucosa media de los dos o tres meses anteriores y no un instante concreto. Esto la convierte en una visión estable e independiente de las comidas del control de la glucosa. Su fiabilidad puede verse afectada por trastornos que alteran la vida de los glóbulos rojos.",
|
||
"tsh": "La TSH (hormona estimulante del tiroides) la libera la hipófisis para indicar al tiroides que produzca sus hormonas, y se ajusta al alza o a la baja para mantenerlas en equilibrio. Gracias a ese circuito de retroalimentación, la TSH es el cribado de primera línea más sensible de la función tiroidea: suele moverse antes de que las propias hormonas tiroideas se desvíen. Un valor elevado o reducido apunta a un tiroides hipo o hiperactivo y normalmente lleva a medir directamente las hormonas tiroideas. El embarazo y la edad desplazan el rango esperado.",
|
||
"ft3": "El T3 libre (triyodotironina) es la forma no unida y biológicamente activa de la hormona tiroidea más potente, la fracción disponible para actuar sobre los tejidos. La mayor parte del T3 circulante está unida a proteínas transportadoras e inactiva, de modo que la porción libre refleja la disponibilidad real de la hormona. Se mide para caracterizar la función tiroidea, sobre todo junto con la TSH y el T4 libre cuando los resultados no están claros. Los niveles dependen mucho del método de análisis y se leen en su contexto clínico.",
|
||
"ft4": "El T4 libre (tiroxina) es la forma no unida de la principal hormona que el tiroides libera a la sangre, y actúa como reserva que los tejidos convierten en el T3 más activo según lo necesiten. La fracción libre refleja lo que realmente está disponible para el cuerpo, con independencia del nivel de proteínas transportadoras. Suele medirse junto con la TSH para distinguir los problemas del tiroides de los de la señalización hipofisaria. El embarazo y ciertos medicamentos pueden desplazarlo.",
|
||
"ferritin": "La ferritina es la principal proteína de almacenamiento de hierro del cuerpo, y su nivel en sangre refleja a grandes rasgos las reservas totales de hierro. Un valor bajo apunta a unas reservas agotadas, mientras que uno alto puede reflejar una sobrecarga de hierro, o simplemente una inflamación, ya que la ferritina también sube como reactante de fase aguda. Por eso suele interpretarse junto con otros marcadores de hierro y signos de inflamación. Es una de las medidas centrales para evaluar el estado del hierro.",
|
||
"transferrin-saturation": "La saturación de transferrina es el porcentaje de transferrina —la proteína que transporta el hierro por la sangre— que está cargado de hierro en ese momento. Relaciona la cantidad de hierro en tránsito con la capacidad de transporte del cuerpo, ofreciendo una instantánea de la disponibilidad de hierro que complementa la visión de las reservas que da la ferritina. Una saturación baja sugiere que el hierro escasea, mientras que un valor alto puede indicar sobrecarga. Se lee junto con la ferritina y el perfil completo del hierro.",
|
||
"vitamin-d": "La vitamina D se mide como 25-hidroxivitamina D, la forma de almacenamiento circulante y el marcador estándar del estado global de vitamina D. El cuerpo la fabrica en la piel expuesta a la luz solar y absorbe una parte de los alimentos, y contribuye al equilibrio del calcio, la salud ósea y la función inmunitaria. Los niveles varían con la estación, la latitud, el tono de piel y la suplementación. Se registra para valorar a lo largo del tiempo si las reservas son adecuadas.",
|
||
"vitamin-b12": "La vitamina B12 (cobalamina) es una vitamina esencial que se obtiene sobre todo de alimentos de origen animal y se almacena en gran parte en el hígado. Es necesaria para la formación de glóbulos rojos, la síntesis de ADN y la salud del sistema nervioso. Una carencia prolongada —por baja ingesta o absorción deficiente— puede provocar anemia y síntomas neurológicos. Se mide para evaluar el estado nutricional, en especial cuando la ingesta o la absorción pueden estar limitadas.",
|
||
"folate": "El folato (vitamina B9) es una vitamina del grupo B presente en las verduras de hoja verde, las legumbres y los alimentos enriquecidos, central para la formación de glóbulos rojos y la síntesis de ADN. Trabaja en estrecha relación con la vitamina B12, y una carencia de cualquiera de las dos puede producir un tipo de anemia similar. Un folato adecuado es especialmente importante en torno al inicio del embarazo para el desarrollo sano del feto. Se mide para evaluar el estado nutricional y la causa de ciertas anemias.",
|
||
"hs-crp": "La PCR de alta sensibilidad mide la proteína C reactiva, un marcador que el hígado libera en respuesta a la inflamación, con una técnica afinada para detectar las bajas concentraciones relevantes para el riesgo cardiovascular. A diferencia de la PCR estándar usada para infecciones agudas, la versión de alta sensibilidad capta la inflamación sutil y crónica vinculada a la enfermedad vascular. Como cualquier infección o lesión reciente puede elevarla, se interpreta lejos de una enfermedad aguda y a menudo se confirma con una muestra repetida. Se lee como un factor más del riesgo cardiovascular global.",
|
||
"creatinine": "La creatinina es un producto de desecho del metabolismo muscular normal que los riñones filtran de la sangre a un ritmo bastante constante. Como la producción es relativamente estable, su nivel en sangre sirve de medida práctica de la eficacia con que los riñones eliminan los desechos. Los valores también dependen de la masa muscular, la hidratación y la dieta, por lo que suelen interpretarse junto con la tasa de filtración estimada. Es un marcador central de la función renal.",
|
||
"egfr": "La eGFR (tasa de filtración glomerular estimada) calcula cuánta sangre filtran los riñones cada minuto, a partir de la creatinina junto con la edad y el sexo. Traduce un valor bruto de creatinina en una medida de la función renal más fácil de interpretar. Un descenso de la eGFR con el tiempo es la principal forma de clasificar y seguir los cambios renales crónicos. Al ser una estimación, se lee como una tendencia y no como una cifra exacta única.",
|
||
"alt": "La ALT (alanina aminotransferasa) es una enzima concentrada en las células del hígado, que se libera a la sangre cuando esas células están estresadas o dañadas. Por ser relativamente específica del hígado, es uno de los principales marcadores para detectar lesión o inflamación hepática. Sus valores pueden subir con el hígado graso, la hepatitis viral, el alcohol o ciertos medicamentos. Suele leerse junto con la AST y el resto de los marcadores del perfil hepático.",
|
||
"ast": "La AST (aspartato aminotransferasa) es una enzima presente en el hígado, pero también en el músculo, el corazón y los glóbulos rojos, que se libera cuando cualquiera de esos tejidos sufre daño. Por ser menos específica del hígado que la ALT, ambas se interpretan juntas, y su cociente puede orientar sobre el origen y la naturaleza del problema. El ejercicio intenso o una lesión muscular pueden elevarla al margen del hígado. Es una de las enzimas estándar del perfil hepático.",
|
||
"ggt": "La GGT (gamma-glutamil transferasa) es una enzima del hígado y las vías biliares que sube en especial cuando se obstruye el flujo de la bilis o ante el consumo de alcohol. A menudo se usa para aclarar por qué está elevado otro marcador hepático, por ejemplo, para distinguir un origen hepático o biliar. Es sensible pero poco específica, por lo que se lee en el contexto del resto del perfil hepático. Es uno de los varios marcadores que se usan para valorar la salud hepática y biliar.",
|
||
"sodium": "El sodio es el principal electrolito del líquido que rodea las células del cuerpo y el motor fundamental del equilibrio de líquidos y del volumen sanguíneo. El organismo lo regula de forma estricta mediante la sed, las hormonas y los riñones, de modo que su nivel en sangre refleja más el equilibrio entre el agua y la sal que la ingesta por sí sola. Los valores anómalos suelen indicar una alteración del equilibrio de agua y no del propio sodio. Es una parte central del panel metabólico básico y de electrolitos.",
|
||
"potassium": "El potasio es el principal electrolito del interior de las células del cuerpo y es esencial para la transmisión nerviosa y el ritmo estable del músculo cardíaco. Su nivel en sangre se mantiene en un rango estrecho gracias a los riñones y a las señales hormonales, porque tanto los valores altos como los bajos pueden alterar la actividad eléctrica del corazón. Los niveles pueden verse afectados por la función renal, la hidratación y varios medicamentos habituales. Es una medida central del panel de electrolitos.",
|
||
"hemoglobin": "La hemoglobina es la proteína con hierro de los glóbulos rojos que fija el oxígeno en los pulmones y lo transporta a los tejidos. Su concentración es la principal medida de la capacidad de transporte de oxígeno de la sangre y el marcador central para detectar la anemia. Los valores bajos pueden reflejar pérdida de sangre, déficit de hierro o de vitaminas, o una producción reducida, mientras que los altos pueden seguir a la deshidratación o a condiciones de poco oxígeno. Es una piedra angular del hemograma completo.",
|
||
"hematocrit": "El hematocrito es la proporción del volumen de sangre formada por glóbulos rojos, expresada como porcentaje. Se mueve en estrecha relación con la hemoglobina y ofrece una visión complementaria de la masa de glóbulos rojos y de la capacidad de transporte de oxígeno de la sangre. La hidratación influye en él, ya que los cambios del volumen de plasma desplazan la proporción aunque el número de glóbulos rojos se mantenga estable. Se lee junto con la hemoglobina y el resto del hemograma.",
|
||
"wbc": "El recuento de leucocitos es el número total de células inmunitarias que circulan por la sangre, la defensa móvil del cuerpo frente a las infecciones. Sube en respuesta a infección, inflamación o estrés y puede bajar cuando la médula ósea está suprimida o en algunas enfermedades inmunitarias. Como reúne varios tipos de células distintas, un cambio notable suele completarse con una fórmula que lo desglosa. Es un componente central del hemograma completo.",
|
||
"platelets": "Las plaquetas son pequeños fragmentos celulares de la sangre que se agregan y forman el tapón inicial que detiene el sangrado de un vaso dañado. Su recuento refleja el equilibrio entre la producción en la médula ósea y el consumo o la destrucción. Un recuento bajo puede aumentar la tendencia al sangrado, mientras que uno alto puede seguir a una inflamación u otros estímulos. Forman parte del hemograma completo y son una medida básica de la capacidad de coagulación.",
|
||
"apob": "La apolipoproteína B es la proteína estructural que lleva cada una de las partículas de lipoproteína aterogénicas, de modo que medirla cuenta directamente esas partículas en lugar del colesterol que transportan. Como hay una molécula de ApoB en cada partícula de LDL, VLDL y afines, puede captar un riesgo cardiovascular que un valor de colesterol LDL pasa por alto, sobre todo cuando el número de partículas y su contenido de colesterol divergen. Por eso se usa cada vez más para afinar la evaluación del riesgo basada en los lípidos. Se interpreta junto con el perfil lipídico habitual.",
|
||
"lp-a": "La lipoproteína(a) es una partícula similar al LDL con una proteína adicional unida, cuyo nivel viene determinado en gran medida por la genética y se mantiene bastante estable a lo largo de la vida. Una Lp(a) elevada es un factor de riesgo independiente y hereditario de enfermedad cardiovascular y de estrechamiento de la válvula aórtica. Como cambia poco, suele medirse una sola vez para establecer el riesgo vital de una persona, en lugar de seguirla de forma repetida. Se expresa en unidades molares y se lee como parte del riesgo cardiovascular global.",
|
||
"fasting-insulin": "La insulina en ayunas es el nivel de insulina —la hormona que traslada la glucosa de la sangre a las células— medido tras un ayuno nocturno. Junto con la glucosa en ayunas, ayuda a estimar la resistencia a la insulina, el estado en el que el cuerpo necesita más insulina para mantener la glucosa dentro de su rango. Una insulina en ayunas alta con una glucosa normal puede ser un signo temprano de que esa compensación está en marcha. Se lee como parte de un cuadro de salud metabólica y no de forma aislada.",
|
||
"omega-3-index": "El índice omega-3 es la proporción de EPA y DHA —los dos ácidos grasos omega-3 marinos de cadena larga— entre los ácidos grasos de las membranas de los glóbulos rojos. Como los glóbulos rojos se renuevan despacio, refleja la ingesta de omega-3 a largo plazo y no una comida reciente. Un índice más alto se ha asociado en estudios observacionales a un menor riesgo cardiovascular. Se sigue como un marcador estable del estado de omega-3 que responde a la dieta a lo largo de meses.",
|
||
"alkaline-phosphatase": "La fosfatasa alcalina es una enzima presente sobre todo en el hígado, las vías biliares y el hueso. Sube cuando se obstruye el flujo de la bilis y en fases de formación ósea activa, como el crecimiento en niños y adolescentes o la consolidación de una fractura. Como la liberan ambos órganos, un valor alto suele leerse junto con la GGT y los demás marcadores hepáticos para distinguir un origen hepático de uno óseo. Es uno de los marcadores habituales del perfil hepático.",
|
||
"bilirubin-total": "La bilirrubina total es el producto amarillo de la degradación de la hemoglobina de los glóbulos rojos envejecidos, medido como la suma de sus formas no conjugada y conjugada. El hígado la capta, la conjuga y la elimina por la bilis, de modo que su nivel refleja cómo funciona esa vía. Puede subir con enfermedades del hígado, obstrucción de las vías biliares o mayor destrucción de glóbulos rojos, y de forma inofensiva en el síndrome de Gilbert. Se interpreta junto con los demás marcadores hepáticos."
|
||
},
|
||
"apob": "Apolipoproteína B (ApoB)",
|
||
"lp-a": "Lipoproteína(a)",
|
||
"fasting-insulin": "Insulina en ayunas",
|
||
"omega-3-index": "Índice omega-3",
|
||
"alkaline-phosphatase": "Fosfatasa alcalina",
|
||
"bilirubin-total": "Bilirrubina total"
|
||
},
|
||
"noteLoadFailed": "No se pudo cargar la nota; se mantendrá sin cambios al guardar.",
|
||
"showingLatestOf": "Mostrando los {shown} resultados más recientes de {total}",
|
||
"convertedFrom": "convertido desde {value} {unit}",
|
||
"ocr": {
|
||
"scanButton": "Escanear un informe",
|
||
"addScan": "Escanear un documento",
|
||
"addManual": "Añadir un valor manualmente",
|
||
"uploadHint": "Sube una foto o un PDF de un informe de laboratorio",
|
||
"acceptWithPdf": "JPEG, PNG, WebP o PDF",
|
||
"acceptImageOnly": "JPEG, PNG o WebP",
|
||
"extracting": "Leyendo tu informe…",
|
||
"readingOnDevice": "Leyendo en tu dispositivo…",
|
||
"localModeHint": "Se lee en tu dispositivo y se envía como texto. Menos preciso: revisa cada valor.",
|
||
"rangeFromScan": "Intervalo de referencia tomado del escaneo",
|
||
"rangeVerify": "Verifica el intervalo de referencia",
|
||
"reviewTitle": "Revisar antes de guardar",
|
||
"reviewHint": "Revisa cada valor y guarda los que quieras conservar.",
|
||
"foundCount": "{count} valores encontrados",
|
||
"pagesCapped": "Solo se leyeron las primeras {read} de {total} páginas. Los valores de las páginas siguientes no están en esta lista.",
|
||
"stoppedBudget": "Tu presupuesto de IA de hoy se agotó a mitad del informe, así que las páginas restantes no se leyeron.",
|
||
"stoppedUnavailable": "La IA se desactivó mientras se leía el informe, así que las páginas restantes no se leyeron.",
|
||
"stoppedError": "El escaneo no pudo continuar por un error del servidor, así que las páginas restantes no se leyeron. Inténtalo de nuevo más tarde.",
|
||
"tooLarge": "Este texto es demasiado largo para un escaneo. Escanea el informe página por página.",
|
||
"truncated": "El proveedor de IA alcanzó su límite de salida antes del final del informe. Pueden faltar valores a partir de ese punto, así que compara la lista con el informe.",
|
||
"truncatedPages": "El proveedor de IA alcanzó su límite de salida en estas páginas: {pages}. Pueden faltar valores más abajo en ellas, así que compáralos con el informe.",
|
||
"unreadPages": "No se pudieron leer estas páginas y sus valores no están en esta lista: {pages}.",
|
||
"unreadParts": "No se pudo leer una parte del informe y sus valores no están en esta lista.",
|
||
"rowsCapped": "El informe contiene {found} valores. Un escaneo admite {kept}, así que solo se muestran los primeros {kept}.",
|
||
"outputLimit": "El proveedor de IA alcanzó su límite de salida antes de devolver un solo valor. Prueba con una foto de una sola página o con un modelo que permita respuestas más largas.",
|
||
"errorTooLong": "Acórtalo a {max} caracteres.",
|
||
"confirmRow": "Incluir este valor",
|
||
"analyteLabel": "Nombre de la prueba",
|
||
"resultLabel": "Resultado",
|
||
"valueLabel": "Valor",
|
||
"unitLabel": "Unidad",
|
||
"dateLabel": "Fecha",
|
||
"refLowLabel": "Referencia inferior",
|
||
"refHighLabel": "Referencia superior",
|
||
"newBiomarker": "Nuevo biomarcador: se creará",
|
||
"linksExisting": "Se vincula a {name} existente",
|
||
"duplicateWarning": "Ya existe un valor coincidente",
|
||
"lowConfidence": "Verifica este valor",
|
||
"lowConfidenceBadge": "Confianza baja",
|
||
"valueUnreadable": "Valor ilegible: introdúcelo manualmente",
|
||
"saveSelected": "Guardar {count} seleccionados",
|
||
"discardAll": "Descartar todo",
|
||
"savedToast": "{count} resultados de laboratorio guardados",
|
||
"savedPartialToast": "{count} resultados de laboratorio guardados, {skipped} omitidos por duplicados",
|
||
"savedNothingToast": "No se guardó nada: {skipped} valores ya estaban registrados",
|
||
"savedEmptyToast": "No hay nada que guardar",
|
||
"noRows": "No se encontraron valores en este informe.",
|
||
"nothingToSave": "Selecciona al menos un valor para guardar.",
|
||
"validationSummary": "Lecturas que requieren atención: {count}. Completa los campos marcados o anula la selección de esas lecturas.",
|
||
"errorDate": "Añade la fecha de la muestra.",
|
||
"errorAnalyte": "Añade el nombre del biomarcador.",
|
||
"errorValue": "Añade un valor.",
|
||
"errorResult": "Añade un resultado.",
|
||
"errorUnit": "Añade una unidad.",
|
||
"errorUnitMismatch": "Este marcador se registra en {markerUnit}. Cambia la unidad si el informe se leyó mal o deselecciona este valor.",
|
||
"unitDiffersBadge": "Registrado en {markerUnit}; este informe indica {unit}",
|
||
"unitConvertedBadge": "Se guardará como {value} {markerUnit}, convertido desde {statedValue} {unit}",
|
||
"savedPartialUnitToast": "{count} resultados guardados. No guardados porque la unidad difiere de la del marcador: {analytes}",
|
||
"savedNothingUnitToast": "No se guardó nada: la unidad difiere de la del marcador en {analytes}",
|
||
"saveFailed": "No se pudieron guardar los valores. Inténtalo de nuevo.",
|
||
"providerUnsupported": "Tu proveedor de IA no puede leer imágenes. Configura un modelo con visión.",
|
||
"consentRequired": "Se requiere consentimiento de procesamiento de IA para escanear un informe.",
|
||
"rateLimited": "Demasiados escaneos. Inténtalo más tarde.",
|
||
"budgetExceeded": "Has alcanzado tu presupuesto de uso de IA de hoy.",
|
||
"fileTooLarge": "El archivo es demasiado grande (máx. 12 MB).",
|
||
"fileType": "Sube un JPEG, PNG, WebP o PDF.",
|
||
"extractFailed": "No se pudo leer el informe. Prueba con una foto más nítida.",
|
||
"pdfNeedsAnthropic": "El escaneo de PDF necesita un proveedor de visión de Claude; sube una foto en su lugar.",
|
||
"refTextLabel": "Rango tal como aparece",
|
||
"refTextPlaceholder": "p. ej. 3,5 - 5,0",
|
||
"aiUnavailable": "Escanear un informe con IA no está disponible aquí ahora mismo."
|
||
},
|
||
"loadMoreReadings": "Cargar más mediciones",
|
||
"documentsLink": "Documentos de resultados",
|
||
"notLinkedYet": "Aún no vinculado a un biomarcador",
|
||
"sourceRange": {
|
||
"fromReport": "Rango del informe {range}",
|
||
"catalogDiffers": "tu rango {range}",
|
||
"printed": "impreso en {unit}: {range}"
|
||
},
|
||
"match": {
|
||
"viaAlias": "por un nombre que elegiste antes",
|
||
"viaCatalog": "reconocido como una abreviatura habitual",
|
||
"chooseLabel": "Pertenece a",
|
||
"suggestionOption": "{name} ({unit})",
|
||
"newMarkerOption": "Un biomarcador nuevo",
|
||
"rememberHint": "Este nombre se recordará para el próximo informe.",
|
||
"chooseHint": "Elige un biomarcador si ya lo registras."
|
||
},
|
||
"aliases": {
|
||
"title": "También escrito como",
|
||
"taken": "{alias} ya pertenece a otro biomarcador.",
|
||
"saveError": "No se pudieron guardar los nombres. Inténtalo de nuevo.",
|
||
"remove": "Quitar {alias}",
|
||
"empty": "Añade los nombres que otros laboratorios imprimen para {name}, para que sus informes lleguen aquí.",
|
||
"placeholder": "p. ej. FA",
|
||
"addLabel": "Otro nombre para este biomarcador",
|
||
"add": "Añadir",
|
||
"alsoWritten": "También escrito como {aliases}"
|
||
},
|
||
"merge": {
|
||
"open": "Combinar",
|
||
"title": "Combinar biomarcadores",
|
||
"description": "Une los biomarcadores que son la misma prueba escrita de otra forma.",
|
||
"pickHint": "Selecciona al menos dos biomarcadores.",
|
||
"keepLabel": "Conservar",
|
||
"keepHint": "Los demás pasan a este y sus nombres se convierten en sus otros nombres.",
|
||
"showPreview": "Ver vista previa",
|
||
"back": "Atrás",
|
||
"confirm": "Combinar ahora",
|
||
"previewSummaryOne": "{count} medición pasa a {name} ({unit}).",
|
||
"previewSummaryFew": "{count} mediciones pasan a {name} ({unit}).",
|
||
"previewSummaryOther": "{count} mediciones pasan a {name} ({unit}).",
|
||
"movesOne": "{count} medición, ya en la misma unidad",
|
||
"movesFew": "{count} mediciones, ya en la misma unidad",
|
||
"movesOther": "{count} mediciones, ya en la misma unidad",
|
||
"convertedOne": "{count} medición, convertida de {unit} a {targetUnit}",
|
||
"convertedFew": "{count} mediciones, convertidas de {unit} a {targetUnit}",
|
||
"convertedOther": "{count} mediciones, convertidas de {unit} a {targetUnit}",
|
||
"refused": "{unit} no se puede convertir a {targetUnit}.",
|
||
"aliasesAdded": "Estos nombres llevarán al biomarcador conservado:",
|
||
"blocked": "No se combina nada mientras una unidad no se pueda convertir. Deja fuera ese biomarcador o conserva otro.",
|
||
"noUndo": "Una combinación no se puede deshacer.",
|
||
"doneToastOne": "Combinado en {name}, {count} medición movida",
|
||
"doneToastFew": "Combinado en {name}, {count} mediciones movidas",
|
||
"doneToastOther": "Combinado en {name}, {count} mediciones movidas",
|
||
"error": "No se pudieron combinar los biomarcadores. Inténtalo de nuevo."
|
||
},
|
||
"trend": {
|
||
"title": "Tendencia",
|
||
"slope": {
|
||
"rising": "Sube unos {amount} {unit} al año en {n} valores desde {since}.",
|
||
"falling": "Baja unos {amount} {unit} al año en {n} valores desde {since}.",
|
||
"flat": "Sin cambios en {n} valores desde {since}."
|
||
},
|
||
"projection": {
|
||
"exits": {
|
||
"high": "Si esta línea recta continuara, llegaría al límite superior de tu rango de referencia hacia el {date}. Es una proyección, no un pronóstico.",
|
||
"low": "Si esta línea recta continuara, llegaría al límite inferior de tu rango de referencia hacia el {date}. Es una proyección, no un pronóstico."
|
||
},
|
||
"beyond_horizon": "A este ritmo, la línea se mantiene dentro de tu rango de referencia más de {years} años, el periodo que cubren tus valores.",
|
||
"beyond_horizon_capped": "A este ritmo, la línea se mantiene dentro de tu rango de referencia más de {years} años, hasta donde llega la proyección.",
|
||
"no_exit": "La línea se aleja de los límites de tu rango de referencia.",
|
||
"already_outside": "La línea ya está fuera de tu rango de referencia.",
|
||
"no_clear_trend": "En estos valores, el cambio no se distingue con claridad de la ausencia de cambio, así que no se proyecta nada.",
|
||
"stale": "El valor más reciente es del {date}, hace más de un año. La línea se muestra a esa fecha, sin proyección."
|
||
},
|
||
"interval": "Intervalo del 95 % del cambio anual: de {lo} a {hi} {unit}."
|
||
}
|
||
},
|
||
"modules": {
|
||
"cycle": {
|
||
"label": "Ciclo",
|
||
"description": "Registra periodo, fases y predicciones."
|
||
},
|
||
"mood": {
|
||
"label": "Estado de ánimo",
|
||
"description": "Registra el ánimo diario y etiquetas."
|
||
},
|
||
"sleep": {
|
||
"label": "Sueño",
|
||
"description": "Duración, fases y cronología del sueño."
|
||
},
|
||
"glucose": {
|
||
"label": "Glucosa",
|
||
"description": "Lecturas de glucosa y tendencias."
|
||
},
|
||
"workouts": {
|
||
"label": "Entrenamientos",
|
||
"description": "Sesiones de entrenamiento y actividad."
|
||
},
|
||
"recovery": {
|
||
"label": "Recuperación",
|
||
"description": "Métricas de recuperación y carga de tus dispositivos."
|
||
},
|
||
"labs": {
|
||
"label": "Resultados de laboratorio",
|
||
"description": "Registra resultados de laboratorio y su historial."
|
||
},
|
||
"achievements": {
|
||
"label": "Logros",
|
||
"description": "Insignias y rachas para tu rutina."
|
||
},
|
||
"coach": {
|
||
"label": "Coach",
|
||
"description": "Chat de IA basado en tus propios datos."
|
||
},
|
||
"insights": {
|
||
"label": "Análisis con IA",
|
||
"description": "Briefing, notas de estado y notas de entrenamiento escritas por un modelo, nunca tus datos ni puntuaciones."
|
||
},
|
||
"doctorReport": {
|
||
"label": "Informe médico",
|
||
"description": "Exportación PDF y FHIR para tu consulta."
|
||
},
|
||
"medications": {
|
||
"label": "Medicamentos",
|
||
"description": "Pautas, tomas y cumplimiento."
|
||
},
|
||
"illness": {
|
||
"label": "Diario de enfermedad",
|
||
"description": "Registra episodios de enfermedad y dolencias con un historial diario de síntomas."
|
||
},
|
||
"mcp": {
|
||
"label": "Acceso de asistente externo (MCP)",
|
||
"description": "Acceso de lectura para un asistente compatible con MCP, mediante un token limitado."
|
||
},
|
||
"environment": {
|
||
"label": "Entorno",
|
||
"description": "El tiempo y las horas de luz diarias de tu ubicación, junto al ánimo, el sueño y las constantes."
|
||
},
|
||
"inboundDocuments": {
|
||
"label": "Documentos",
|
||
"description": "Cartas médicas, informes y escaneos en un lugar cifrado y con búsqueda."
|
||
},
|
||
"mentalHealth": {
|
||
"label": "Bienestar mental",
|
||
"description": "Cuatro cuestionarios opcionales, junto al registro de ánimo."
|
||
},
|
||
"nutrients": {
|
||
"label": "Ingesta de nutrientes",
|
||
"description": "Totales diarios de micronutrientes sincronizados desde Apple Health."
|
||
},
|
||
"vaccinations": {
|
||
"label": "Vacunas",
|
||
"description": "La cartilla de vacunación estructurada: dosis, serie, próximo refuerzo."
|
||
},
|
||
"timeline": {
|
||
"label": "Cronología",
|
||
"description": "Años de un vistazo: enfermedades, medicamentos y visitas junto a tus valores, además de tus propios acontecimientos vitales."
|
||
}
|
||
},
|
||
"moduleOff": {
|
||
"disabled": {
|
||
"description": "{module} está desactivado en este registro, así que sus páginas quedan ocultas. Vuelve a activarlo para recuperarlas.",
|
||
"title": "{module} está desactivado"
|
||
},
|
||
"notGranted": {
|
||
"description": "{module} queda fuera de las secciones que se han compartido contigo. Lo que abarca un registro compartido lo decide la persona propietaria.",
|
||
"title": "No forma parte del acceso compartido"
|
||
},
|
||
"unavailable": {
|
||
"description": "El operador ha desactivado {module} para todas las cuentas de este servidor. Ningún ajuste tuyo puede recuperarlo.",
|
||
"title": "No disponible en este servidor"
|
||
},
|
||
"openModules": "Abrir Ajustes, Módulos"
|
||
},
|
||
"vaccinations": {
|
||
"title": "Vacunas",
|
||
"subtitle": "Tu registro de vacunación, dosis a dosis.",
|
||
"listLoadError": "No se pudieron cargar las vacunas.",
|
||
"series": {
|
||
"booster": "Refuerzo",
|
||
"ofTotal": "Dosis {position} de {total}",
|
||
"doseN": "Dosis {position}"
|
||
},
|
||
"row": {
|
||
"lot": "Lote {lot}"
|
||
},
|
||
"form": {
|
||
"date": "Fecha",
|
||
"catalogLabel": "Vacuna",
|
||
"identityHint": "Elige una vacuna de la lista o escríbela abajo. Basta con una.",
|
||
"catalogNone": "Elegir una vacuna",
|
||
"catalogSearch": "Buscar vacunas",
|
||
"catalogNoMatch": "No se encontró ninguna entrada del catálogo",
|
||
"catalogClear": "Quitar selección",
|
||
"freeTextLabel": "Texto libre",
|
||
"freeTextPlaceholder": "tal como figura en la cartilla",
|
||
"seriesToggle": "Añadir datos de la serie",
|
||
"doseNumber": "N.º de dosis",
|
||
"seriesDoses": "Dosis en la serie",
|
||
"lot": "Número de lote",
|
||
"site": "Lugar de aplicación",
|
||
"siteNone": "Sin especificar",
|
||
"practitioner": "Consulta o médico",
|
||
"note": "Nota",
|
||
"linkDocuments": "Vincular un documento",
|
||
"linkNothingToOffer": "Aún no hay documentos."
|
||
},
|
||
"site": {
|
||
"LEFT_ARM": "Brazo izquierdo",
|
||
"RIGHT_ARM": "Brazo derecho",
|
||
"LEFT_THIGH": "Muslo izquierdo",
|
||
"RIGHT_THIGH": "Muslo derecho",
|
||
"ORAL": "Oral",
|
||
"NASAL": "Nasal",
|
||
"OTHER": "Otro"
|
||
},
|
||
"createTitle": "Registrar una vacuna",
|
||
"editTitle": "Editar vacuna",
|
||
"formDescription": "Bastan una fecha y la vacuna; todo lo demás es opcional.",
|
||
"created": "Vacuna guardada",
|
||
"updated": "Vacuna actualizada",
|
||
"saveFailed": "No se pudo guardar la vacuna.",
|
||
"deleteTitle": "¿Eliminar esta vacuna?",
|
||
"deleteDescription": "La entrada se elimina de tu registro. Un recordatorio de refuerzo programado se mantiene.",
|
||
"deleteFailed": "No se pudo eliminar la vacuna.",
|
||
"info": {
|
||
"primarySeriesOne": "Serie primaria: {count} dosis",
|
||
"primarySeriesFew": "Serie primaria: {count} dosis",
|
||
"primarySeriesOther": "Serie primaria: {count} dosis",
|
||
"yearly": "Vacunación anual",
|
||
"boosterYearsOne": "Refuerzo normalmente cada {count} año",
|
||
"boosterYearsFew": "Refuerzo normalmente cada {count} años",
|
||
"boosterYearsOther": "Refuerzo normalmente cada {count} años",
|
||
"boosterMonthsOne": "Refuerzo normalmente cada {count} mes",
|
||
"boosterMonthsFew": "Refuerzo normalmente cada {count} meses",
|
||
"boosterMonthsOther": "Refuerzo normalmente cada {count} meses",
|
||
"standard60": "Vacunación estándar a partir de los 60",
|
||
"sourceLabel": "Fuente: {source}",
|
||
"affordanceLabel": "Información del esquema"
|
||
},
|
||
"booster": {
|
||
"title": "¿Planificar un refuerzo?",
|
||
"body": "Puedes crear un recordatorio para el próximo refuerzo a partir de esta dosis. Cambia el intervalo o la etiqueta, o recházalo.",
|
||
"interval": "Intervalo",
|
||
"label": "Etiqueta",
|
||
"labelSuffix": "refuerzo",
|
||
"decline": "Ahora no",
|
||
"confirm": "Crear recordatorio",
|
||
"planned": "Refuerzo planificado",
|
||
"failed": "No se pudo crear el recordatorio.",
|
||
"everyYearsOne": "cada {count} año",
|
||
"everyYearsFew": "cada {count} años",
|
||
"everyYearsOther": "cada {count} años",
|
||
"everyMonthsOne": "cada {count} mes",
|
||
"everyMonthsFew": "cada {count} meses",
|
||
"everyMonthsOther": "cada {count} meses"
|
||
},
|
||
"suggestion": {
|
||
"single": "¿Asociar a esta vacuna?",
|
||
"choose": "¿A qué vacuna pertenece este escaneo?",
|
||
"linked": "Vinculado a la vacuna",
|
||
"failed": "No se pudo vincular.",
|
||
"unnamed": "Vacuna"
|
||
},
|
||
"empty": {
|
||
"title": "Aún no hay ninguna vacuna registrada",
|
||
"description": "Transcribe tu cartilla de vacunación línea por línea: bastan una fecha y la vacuna."
|
||
},
|
||
"catalog": {
|
||
"tetanus": "Tétanos",
|
||
"diphtheria": "Difteria",
|
||
"pertussis": "Tos ferina (pertussis)",
|
||
"polio": "Poliomielitis",
|
||
"measles": "Sarampión",
|
||
"mumps": "Paperas",
|
||
"rubella": "Rubéola",
|
||
"varicella": "Varicela",
|
||
"hib": "Hib (Haemophilus influenzae b)",
|
||
"hepatitis-a": "Hepatitis A",
|
||
"hepatitis-b": "Hepatitis B",
|
||
"influenza": "Gripe (influenza)",
|
||
"pneumococcal": "Neumococo",
|
||
"herpes-zoster": "Herpes zóster (culebrilla)",
|
||
"rsv": "VRS",
|
||
"covid-19": "COVID-19",
|
||
"fsme": "Encefalitis por garrapatas (TBE)",
|
||
"hpv": "VPH (virus del papiloma humano)",
|
||
"meningococcal-acwy": "Meningococo ACWY",
|
||
"meningococcal-b": "Meningococo B",
|
||
"rotavirus": "Rotavirus",
|
||
"typhoid": "Fiebre tifoidea",
|
||
"rabies": "Rabia",
|
||
"yellow-fever": "Fiebre amarilla",
|
||
"japanese-encephalitis": "Encefalitis japonesa",
|
||
"cholera": "Cólera",
|
||
"dengue": "Dengue",
|
||
"tuberculosis": "Tuberculosis",
|
||
"td": "Td (tétanos, difteria)",
|
||
"tdap": "Tdap (tétanos, difteria, tos ferina)",
|
||
"tdap-ipv": "Tdap-IPV (tetravalente)",
|
||
"dtap-ipv": "DTaP-IPV (tetravalente infantil)",
|
||
"hexavalent": "Hexavalente (DTaP-IPV-Hib-HepB)",
|
||
"mmr": "Triple vírica (sarampión, paperas, rubéola)",
|
||
"mmrv": "Tetravírica (sarampión, paperas, rubéola, varicela)",
|
||
"hepa-hepb": "Hepatitis A y B",
|
||
"hepa-typhoid": "Hepatitis A y fiebre tifoidea"
|
||
},
|
||
"renewal": {
|
||
"overdue": "Refuerzo pendiente desde el {date}",
|
||
"dueSoon": "Refuerzo previsto el {date}",
|
||
"current": "Próximo refuerzo el {date}"
|
||
},
|
||
"custom": {
|
||
"title": "Vacunas propias",
|
||
"add": "Añadir vacuna propia",
|
||
"name": "Nombre",
|
||
"components": "Protege contra",
|
||
"seriesDoses": "Dosis de la serie primaria",
|
||
"boosterMonths": "Refuerzo cada (meses)",
|
||
"saved": "Vacuna guardada",
|
||
"deleted": "Vacuna eliminada",
|
||
"deleteConfirm": "¿Eliminar esta vacuna? Las dosis ya registradas conservan su nombre.",
|
||
"saveFailed": "No se pudo guardar la vacuna.",
|
||
"nameTaken": "Ya tienes una vacuna con este nombre.",
|
||
"editTitle": "Editar vacuna propia",
|
||
"description": "Una vacuna que el catálogo no recoge, contada como cualquier entrada del catálogo.",
|
||
"componentsHint": "Elige todas las enfermedades de las que protege.",
|
||
"boosterHint": "Déjalo vacío si no hay refuerzo.",
|
||
"protectsAgainst": "Protege contra {list}.",
|
||
"deleteTitle": "¿Quitar la vacuna propia?",
|
||
"sectionDescription": "Vacunas que añadiste tú porque el catálogo no las recoge.",
|
||
"catalogGroup": "Catálogo"
|
||
}
|
||
},
|
||
"illness": {
|
||
"title": "Enfermedad",
|
||
"subtitle": "Un registro retrospectivo de tus episodios de enfermedad y dolencias.",
|
||
"settings": {
|
||
"viewDescription": "Elige si los episodios se muestran como tarjetas o como lista compacta.",
|
||
"orderDescription": "Arrastra tus episodios al orden en que quieres verlos."
|
||
},
|
||
"customize": "Personalizar diario de enfermedad",
|
||
"newEpisode": "Nuevo episodio",
|
||
"logDay": "Registrar un día",
|
||
"markRecovered": "Marcar como recuperado",
|
||
"deletedToast": "Episodio eliminado",
|
||
"restoreError": "No se pudo restaurar el episodio",
|
||
"onsetOn": "Comenzó el {date}",
|
||
"recoveredOn": "recuperado {date}",
|
||
"status": {
|
||
"active": "Activo",
|
||
"ongoing": "En curso",
|
||
"recovered": "Recuperado"
|
||
},
|
||
"empty": {
|
||
"title": "Aún no hay episodios",
|
||
"body": "Inicia un episodio para llevar un historial diario de síntomas y revisar cómo evolucionó."
|
||
},
|
||
"type": {
|
||
"INFECTION": "Infección",
|
||
"ALLERGY": "Alergia",
|
||
"INJURY": "Lesión",
|
||
"MENTAL_HEALTH": "Salud mental",
|
||
"AUTOIMMUNE": "Autoinmune",
|
||
"CHRONIC": "Crónica",
|
||
"OTHER": "Otro"
|
||
},
|
||
"lifecycle": {
|
||
"ACUTE": "Aguda",
|
||
"CHRONIC_ONGOING": "Crónica / en curso",
|
||
"RECURRING": "Recurrente",
|
||
"FLARE": "Brote"
|
||
},
|
||
"new": {
|
||
"title": "Nuevo episodio",
|
||
"description": "Registra una enfermedad o dolencia. Luego podrás anotar síntomas diarios.",
|
||
"label": "Nombre",
|
||
"labelPlaceholder": "p. ej. Resfriado común",
|
||
"type": "Tipo",
|
||
"lifecycle": "Curso",
|
||
"onset": "Comenzó el",
|
||
"note": "Nota",
|
||
"notePlaceholder": "Algo que valga la pena recordar (cifrado).",
|
||
"saveError": "No se pudo guardar el episodio. Inténtalo de nuevo.",
|
||
"parent": "Parte de",
|
||
"parentNone": "Sin vincular",
|
||
"resolved": "Finalizó el",
|
||
"resolvedHelp": "Déjalo vacío mientras el episodio siga en curso.",
|
||
"markOngoing": "Aún en curso",
|
||
"bodySiteHint": "Por ejemplo, rodilla o zona lumbar."
|
||
},
|
||
"sheet": {
|
||
"title": "Registrar {date}",
|
||
"description": "Anota los síntomas de hoy, cómo funcionas y la fiebre, si la hay.",
|
||
"symptoms": "Síntomas",
|
||
"functionalImpact": "Cómo funcionas",
|
||
"fever": "Temperatura",
|
||
"note": "Nota",
|
||
"noteSet": "Definida",
|
||
"notePlaceholder": "Cómo te sentiste hoy (cifrado).",
|
||
"severityFor": "Gravedad de {symptom}",
|
||
"saveError": "No se pudo guardar el día. Inténtalo de nuevo.",
|
||
"day": "Day"
|
||
},
|
||
"impact": {
|
||
"0": "Plenamente funcional",
|
||
"1": "Algo limitado",
|
||
"2": "Mayormente en reposo",
|
||
"3": "En cama"
|
||
},
|
||
"symptom": {
|
||
"runnyNose": "Goteo nasal",
|
||
"stuffyNose": "Congestión nasal",
|
||
"sneezing": "Estornudos",
|
||
"soreThroat": "Dolor de garganta",
|
||
"cough": "Tos",
|
||
"headache": "Dolor de cabeza",
|
||
"bodyAches": "Dolores musculares",
|
||
"fatigue": "Fatiga"
|
||
},
|
||
"correlation": {
|
||
"title": "Cómo se desarrolló",
|
||
"learning": "Aún aprendiendo: registra unos días más para ver patrones aquí.",
|
||
"preOnsetTitle": "Cómo se anunció",
|
||
"preOnsetBody": "Señales que se alejaron de tu base antes de marcar el inicio.",
|
||
"nadirTitle": "Qué cambió",
|
||
"nadirBody": "Cuánto se alejó cada señal registrada de tu rango habitual.",
|
||
"recoveryGapTitle": "Brecha de recuperación",
|
||
"recoveryGapLag": "Tus valores se estabilizaron {days} días después de sentirte mejor.",
|
||
"recoveryGapLead": "Tus valores se estabilizaron {days} días antes de marcar la recuperación.",
|
||
"recoveryGapLagSymptom": "Te sentiste mejor {days} días antes de que cedieran tus síntomas registrados.",
|
||
"recoveryGapLeadSymptom": "Tus síntomas registrados cedieron {days} días antes de marcar la recuperación.",
|
||
"recoveryGapSame": "Tus valores se estabilizaron el mismo día en que te sentiste mejor.",
|
||
"sleepContextMore": "Durante este episodio dormiste notablemente más de lo habitual (unas {hours} h/noche).",
|
||
"sleepContextLess": "Durante este episodio dormiste notablemente menos de lo habitual (unas {hours} h/noche).",
|
||
"redFlagTitle": "Conviene revisarlo",
|
||
"redFlagSpo2": "Tu saturación de oxígeno se mantuvo baja varios días. Si se repite, busca atención médica.",
|
||
"redFlagFever": "Tuviste fiebre sostenida. Si se repite, busca atención médica.",
|
||
"direction": {
|
||
"above": "por encima de lo habitual",
|
||
"below": "por debajo de lo habitual"
|
||
},
|
||
"settled": "Durante este episodio nada destacó respecto a tu rango habitual."
|
||
},
|
||
"insights": {
|
||
"title": "Tu historial de enfermedades",
|
||
"countOne": "Registraste 1 episodio en este período.",
|
||
"countOther": "Registraste {count} episodios en este período.",
|
||
"typicalGap": "Brecha de recuperación típica: {days} días entre sentirte mejor y la estabilización de tus valores.",
|
||
"typicalGapWithDriver": "Brecha de recuperación típica: {days} días: sueles sentirte mejor antes de que {vital} se estabilice.",
|
||
"typicalGapLearning": "Con unos pocos episodios resueltos más aparecerá aquí una brecha de recuperación típica.",
|
||
"none": "Sin episodios registrados en este período.",
|
||
"analyze": "Analizar la brecha de recuperación"
|
||
},
|
||
"section": {
|
||
"active": "Activos",
|
||
"resolved": "Resueltos"
|
||
},
|
||
"flares": {
|
||
"countOne": "1 brote",
|
||
"countOther": "{count} brotes"
|
||
},
|
||
"timeline": {
|
||
"title": "Cronología del día",
|
||
"error": "No se pudo cargar la cronología.",
|
||
"severity": "Intensidad {severity}",
|
||
"noSymptoms": "Sin síntomas registrados.",
|
||
"impact": "Cómo funcionaste: {impact}",
|
||
"fever": "Temperatura: {value} {unit}",
|
||
"empty": "Todavía no hay días registrados."
|
||
},
|
||
"loadError": "No se pudo cargar este episodio.",
|
||
"backToList": "Volver al diario",
|
||
"detail": {
|
||
"note": "Nota"
|
||
},
|
||
"edit": {
|
||
"title": "Editar episodio",
|
||
"description": "Actualiza los detalles de este episodio."
|
||
},
|
||
"menu": {
|
||
"label": "Acciones del episodio"
|
||
},
|
||
"deleteConfirm": {
|
||
"title": "¿Eliminar este episodio?",
|
||
"body": "«{label}» y todos sus registros diarios se eliminarán. Justo después podrás deshacerlo durante un breve momento."
|
||
},
|
||
"vital": {
|
||
"RESTING_HEART_RATE": "Frecuencia cardíaca en reposo",
|
||
"HEART_RATE_VARIABILITY": "Variabilidad de la frecuencia cardíaca",
|
||
"HRV_RMSSD": "VFC (RMSSD)",
|
||
"RECOVERY_SCORE": "Recovery",
|
||
"OXYGEN_SATURATION": "Saturación de oxígeno",
|
||
"BODY_TEMPERATURE": "Temperatura corporal",
|
||
"RESPIRATORY_RATE": "Frecuencia respiratoria",
|
||
"BLOOD_PRESSURE_SYS": "Presión arterial sistólica",
|
||
"BLOOD_PRESSURE_DIA": "Presión arterial diastólica",
|
||
"PULSE": "Pulse",
|
||
"WEIGHT": "Weight",
|
||
"FUNCTIONAL_IMPACT": "Impacto funcional"
|
||
},
|
||
"listLoadError": "No se pudieron cargar tus episodios."
|
||
},
|
||
"coach": {
|
||
"reminderSuggestion": {
|
||
"title": "¿Crear un recordatorio?",
|
||
"accept": "Crear recordatorio",
|
||
"dismiss": "Ahora no",
|
||
"stop": "Ya mido suficiente",
|
||
"accepted": "Recordatorio creado",
|
||
"dismissed": "De acuerdo, no lo volveré a sugerir",
|
||
"stopped": "Entendido, dejaré de sugerir recordatorios",
|
||
"failed": "No se pudo crear, inténtalo de nuevo",
|
||
"cadence": {
|
||
"weightDaily": "Pésate a diario, más o menos a la misma hora",
|
||
"bp722": "Mide tu tensión dos veces al día durante una semana",
|
||
"glucoseStructured": "Mide tu glucosa con un horario diario estructurado"
|
||
}
|
||
},
|
||
"suggestedAction": {
|
||
"apply": "Añadir",
|
||
"dismiss": "Ahora no",
|
||
"applied": "Añadido",
|
||
"dismissed": "Descartado",
|
||
"failed": "No se pudo añadir. Inténtalo de nuevo",
|
||
"checkup": {
|
||
"title": "¿Añadir un recordatorio de revisión?"
|
||
},
|
||
"note": {
|
||
"title": "¿Guardar un recordatorio?"
|
||
},
|
||
"interval": {
|
||
"yearly": "Cada año",
|
||
"halfYearly": "Cada seis meses",
|
||
"quarterly": "Cada tres meses",
|
||
"monthly": "Cada mes"
|
||
}
|
||
},
|
||
"settings": {
|
||
"reminderSuggestionsLabel": "Sugerencias de frecuencia",
|
||
"reminderSuggestionsDescription": "Permite que el Coach ofrezca de vez en cuando un recordatorio basado en evidencia para medir una métrica con más regularidad."
|
||
},
|
||
"plans": {
|
||
"title": "Planes",
|
||
"pageDescription": "Planes de tipo «si… entonces» acordados en tus conversaciones con el Coach. Confirma una propuesta para que el Coach la recuerde.",
|
||
"readOnlyNote": "El Coach no está disponible ahora mismo, pero aún puedes leer y eliminar tus planes.",
|
||
"proposalTitle": "Propuesta de plan",
|
||
"ifThen": "Si {cue}, entonces {action}.",
|
||
"targetPrefix": "Objetivo: {target}",
|
||
"reviewPrefix": "Revisión: {when}",
|
||
"accept": "Aceptar plan",
|
||
"decline": "Rechazar",
|
||
"accepted": "Plan aceptado: el Coach lo tendrá en cuenta.",
|
||
"declined": "Propuesta rechazada.",
|
||
"failed": "No ha funcionado; inténtalo de nuevo.",
|
||
"markMet": "Objetivo cumplido",
|
||
"abandon": "Finalizar plan",
|
||
"remove": "Eliminar",
|
||
"removeTitle": "¿Eliminar este plan?",
|
||
"removeBody": "El plan y cómo fue desaparecen de tu historial. No se puede recuperar.",
|
||
"removeConfirm": "Eliminar plan",
|
||
"empty": "Aún no hay planes. Cuando te comprometas con una intención concreta de tipo «si… entonces» en una conversación, el Coach la propondrá aquí para confirmarla.",
|
||
"groupProposed": "Propuestas",
|
||
"groupActive": "Activos",
|
||
"groupPast": "Completados",
|
||
"status": {
|
||
"proposed": "Propuesto",
|
||
"active": "Activo",
|
||
"met": "Cumplido",
|
||
"abandoned": "Finalizado",
|
||
"review_due": "Revisión pendiente",
|
||
"reviewed": "Revisado"
|
||
}
|
||
},
|
||
"refusal": {
|
||
"outOfScope": "Solo puedo ayudarte con los datos de salud de tu registro: mediciones, medicamentos, estado de ánimo, tendencias. No puedo responder preguntas fuera de ese ámbito.",
|
||
"promptInjection": "He detectado instrucciones que intentan anular mis directrices. Soy el Coach de HealthLog y solo resumo tus propios datos de salud; reformula tu pregunta en esos términos, por favor.",
|
||
"conversationPoisoned": "Un mensaje anterior de esta conversación contiene instrucciones que intentan anular mis directrices. Empieza una conversación nueva, por favor."
|
||
},
|
||
"noRecordedData": "No tienes ninguna medición registrada sobre lo que preguntas, así que no puedo darte ninguna cifra. Cuando registres algo, vuelve a preguntarme y trabajaré con tus propios datos.",
|
||
"step": {
|
||
"read": "Consultando: {domain}",
|
||
"readWindow": "Consultando: {domain}, {window}",
|
||
"snapshot": "Leyendo el resumen de tus datos",
|
||
"showResult": "Abriendo una tabla anterior",
|
||
"reuse": "Usando la tabla de antes",
|
||
"headerActive": "{label}…",
|
||
"listLabel": "Lo que consultó el Coach",
|
||
"toggleShow": "Mostrar lo que consultó el Coach",
|
||
"toggleHide": "Ocultar lo que consultó el Coach",
|
||
"announceDone": "Listo: {label}",
|
||
"readingsOne": "1 medición",
|
||
"readingsFew": "{count} mediciones",
|
||
"readingsOther": "{count} mediciones",
|
||
"rowsOne": "1 fila",
|
||
"rowsFew": "{count} filas",
|
||
"rowsOther": "{count} filas",
|
||
"metricsOne": "1 métrica",
|
||
"metricsFew": "{count} métricas",
|
||
"metricsOther": "{count} métricas",
|
||
"reason": {
|
||
"noData": "sin mediciones",
|
||
"outsideWindow": "sin mediciones en este periodo",
|
||
"moduleDisabled": "desactivado",
|
||
"retrievalFailed": "no se pudo leer",
|
||
"invalidArguments": "solicitud no entendida"
|
||
},
|
||
"domain": {
|
||
"labs": "Resultados de laboratorio",
|
||
"illness": "Enfermedad y recuperación",
|
||
"cycle": "Ciclo",
|
||
"correlations": "Relaciones entre métricas",
|
||
"snapshot": "Resumen de datos",
|
||
"environment": "Tiempo y aire",
|
||
"day": "Un día"
|
||
},
|
||
"window": {
|
||
"last7days": "últimos 7 días",
|
||
"last30days": "últimos 30 días",
|
||
"last90days": "últimos 90 días",
|
||
"lastYear": "últimos 12 meses",
|
||
"allTime": "todo el periodo"
|
||
},
|
||
"period": {
|
||
"current": "este periodo",
|
||
"previous": "el periodo anterior",
|
||
"yearAgo": "un año antes"
|
||
},
|
||
"granularity": {
|
||
"day": "por día",
|
||
"week": "por semana",
|
||
"month": "por mes"
|
||
}
|
||
},
|
||
"result": {
|
||
"title": {
|
||
"byDay": "{metric} por día",
|
||
"byWeek": "{metric} por semana",
|
||
"byMonth": "{metric} por mes",
|
||
"previousPeriod": "{metric}, periodo anterior",
|
||
"yearAgo": "{metric}, un año antes",
|
||
"workoutsBySport": "Entrenamientos por deporte",
|
||
"labsLatest": "Resultados de laboratorio más recientes",
|
||
"sleepByNight": "Sueño por noche",
|
||
"complianceByDay": "Adherencia a la medicación por día",
|
||
"distribution": "{metric}: con qué frecuencia apareció cada rango"
|
||
},
|
||
"column": {
|
||
"day": "Día",
|
||
"week": "Semana",
|
||
"month": "Mes",
|
||
"night": "Noche",
|
||
"sport": "Deporte",
|
||
"sessions": "Sesiones",
|
||
"analyte": "Prueba",
|
||
"value": "Valor",
|
||
"unit": "Unidad",
|
||
"date": "Fecha",
|
||
"referenceRange": "Rango de referencia",
|
||
"systolic": "Sistólica",
|
||
"diastolic": "Diastólica",
|
||
"mean": "Promedio",
|
||
"total": "Total",
|
||
"min": "Mínimo",
|
||
"max": "Máximo",
|
||
"readings": "Mediciones",
|
||
"rate": "Adherencia",
|
||
"duration": "Duración",
|
||
"range": "Rango",
|
||
"count": "Veces"
|
||
},
|
||
"other": "Otros",
|
||
"noReading": "sin medición",
|
||
"showAll": "Mostrar todo ({count})",
|
||
"showFewer": "Mostrar menos",
|
||
"copyMenu": "Copiar tabla",
|
||
"copyForSpreadsheet": "Copiar para hoja de cálculo",
|
||
"copyAsText": "Copiar como texto",
|
||
"copied": "Copiado",
|
||
"copyFailed": "No se pudo copiar la tabla",
|
||
"viewLabel": "Vista",
|
||
"viewChart": "Gráfico",
|
||
"viewTable": "Tabla",
|
||
"chartSummary": "{title}, mostrado como gráfico. La vista de tabla recoge cada valor.",
|
||
"dataUsed": "Datos usados ({count})",
|
||
"truncated": "Se muestran las últimas {shown} de {total} filas",
|
||
"withheld": {
|
||
"moduleDisabled": "Esta tabla está oculta porque su módulo está desactivado.",
|
||
"unavailable": "No se pudo cargar esta tabla."
|
||
},
|
||
"loading": "Cargando tabla…",
|
||
"loadFailed": "No se pudieron cargar las tablas.",
|
||
"reusedFrom": "De una respuesta anterior ({date})",
|
||
"reusedFromUndated": "De una respuesta anterior",
|
||
"histogramBin": "{from}–{to} {unit}"
|
||
},
|
||
"method": {
|
||
"label": "Cómo se obtuvo",
|
||
"entry": "{domain}, {window}: {detail}",
|
||
"entryNoWindow": "{domain}: {detail}",
|
||
"reused": "de una respuesta anterior",
|
||
"readingsOne": "1 medición",
|
||
"readingsFew": "{count} mediciones",
|
||
"readingsOther": "{count} mediciones",
|
||
"aggregation": {
|
||
"mean": "promedio",
|
||
"median": "mediana",
|
||
"latest": "última medición",
|
||
"sum": "suma",
|
||
"count": "recuento",
|
||
"rate": "tasa"
|
||
},
|
||
"averages": {
|
||
"day": "promedios diarios",
|
||
"week": "promedios semanales",
|
||
"month": "promedios mensuales"
|
||
},
|
||
"totals": {
|
||
"day": "totales diarios",
|
||
"week": "totales semanales",
|
||
"month": "totales mensuales"
|
||
},
|
||
"absent": {
|
||
"noData": "sin mediciones",
|
||
"outsideWindow": "sin mediciones en este periodo",
|
||
"moduleDisabled": "desactivado"
|
||
}
|
||
},
|
||
"followUp": {
|
||
"groupLabel": "Preguntas sugeridas",
|
||
"widenWindow": "Mirar más atrás",
|
||
"previousPeriod": "Comparar con el periodo anterior",
|
||
"yearAgo": "Comparar con un año antes",
|
||
"asChart": "Mostrar como gráfico",
|
||
"asTable": "Mostrar como tabla",
|
||
"relatedMetric": "Ver también: {metric}",
|
||
"continue": "Seguir buscando",
|
||
"settingLabel": "Sugerir preguntas de seguimiento",
|
||
"settingHint": "Muestra hasta tres sugerencias bajo la última respuesta del Coach.",
|
||
"changeAssumption": "En su lugar: {value}"
|
||
},
|
||
"clarify": {
|
||
"cardLabel": "El Coach tiene una pregunta",
|
||
"choicesLabel": "Respuestas posibles",
|
||
"freeTextHint": "También puedes escribir tu propia respuesta.",
|
||
"contextHint": "Escribe tu respuesta abajo.",
|
||
"window": {
|
||
"last7days": "Últimos 7 días",
|
||
"last30days": "Últimos 30 días",
|
||
"last90days": "Últimos 90 días",
|
||
"lastYear": "Últimos 12 meses",
|
||
"allTime": "Todo el periodo"
|
||
},
|
||
"comparison": {
|
||
"baseline90d": "Comparar con mis 90 días habituales"
|
||
},
|
||
"anchor": {
|
||
"illness": "Desde la enfermedad del {date}"
|
||
}
|
||
},
|
||
"reuse": {
|
||
"caption": "Aquí están las mismas cifras de mi última respuesta, sin cambios."
|
||
}
|
||
},
|
||
"safety": {
|
||
"floor": {
|
||
"bpHighTitle": "Presión arterial muy alta",
|
||
"bpHighDoctor": "Dos lecturas recientes fueron de {systolic}/{diastolic} mmHg o más. Descansa, vuelve a medir en unos minutos y contacta a tu médico cuanto antes si sigue así de alta.",
|
||
"bpHighEmergency": "Dos lecturas recientes fueron de {systolic}/{diastolic} mmHg o más e indicaste síntomas. Si tienes dolor en el pecho, falta de aire, debilidad o cambios en la visión o el habla, llama a emergencias ya.",
|
||
"bpLowTitle": "Presión arterial baja",
|
||
"bpLowDoctor": "Dos lecturas recientes tuvieron una sistólica por debajo de {systolic} mmHg. Si te mareas o te sientes débil, siéntate o recuéstate y contacta a tu médico si continúa.",
|
||
"bpLowEmergency": "Dos lecturas recientes tuvieron una sistólica por debajo de {systolic} mmHg e indicaste síntomas. Si te sientes a punto de desmayar, confuso o con piel fría y húmeda, llama a emergencias ya.",
|
||
"glucoseLowTitle": "Glucosa baja",
|
||
"glucoseLowDoctor": "Dos lecturas recientes estuvieron por debajo de {threshold} {unit} ({value} {unit}). Toma carbohidratos de acción rápida, vuelve a medir en 15 minutos y contacta a tu médico si los bajones continúan.",
|
||
"glucoseLowEmergency": "Dos lecturas recientes estuvieron por debajo de {threshold} {unit} ({value} {unit}) e indicaste síntomas. Trátalo ahora con azúcar rápida; si no puedes o te sientes muy mal, llama a emergencias.",
|
||
"glucoseLowSevereTitle": "Glucosa muy baja",
|
||
"glucoseLowSevereDoctor": "Dos lecturas recientes estuvieron por debajo de {threshold} {unit} ({value} {unit}). Trátalo de inmediato con carbohidratos de acción rápida, vuelve a medir en 15 minutos y contacta a tu médico.",
|
||
"glucoseLowSevereEmergency": "Dos lecturas recientes estuvieron por debajo de {threshold} {unit} ({value} {unit}) e indicaste síntomas. Trátalo ahora; si no retienes alimentos o te sientes muy mal, llama a emergencias.",
|
||
"glucoseHighTitle": "Glucosa muy alta",
|
||
"glucoseHighDoctor": "Dos lecturas recientes fueron de {value} {unit} o más. Vuelve a medir, hidrátate y contacta a tu médico cuanto antes si sigue así de alta.",
|
||
"glucoseHighEmergency": "Dos lecturas recientes fueron de {value} {unit} o más e indicaste síntomas. Si tienes vómitos, respiración rápida o confusión, llama a emergencias ya."
|
||
}
|
||
},
|
||
"version": {
|
||
"updateAvailable": {
|
||
"title": "Hay una nueva versión disponible",
|
||
"reload": "Recargar",
|
||
"dismiss": "Descartar"
|
||
}
|
||
},
|
||
"mentalHealth": {
|
||
"pageTitle": "Bienestar mental",
|
||
"pageDescription": "Cuatro autoevaluaciones validadas y voluntarias: cuenta la evolución, no un valor aislado.",
|
||
"attributionLabel": "Fuente",
|
||
"attributionShow": "Fuente y licencia de {instrument}",
|
||
"choosePrompt": "Elige una revisión",
|
||
"start": "Empezar",
|
||
"back": "Atrás",
|
||
"submit": "Ver mi resultado",
|
||
"submitting": "Guardando…",
|
||
"saved": "Guardado",
|
||
"error": "Algo salió mal. Inténtalo de nuevo.",
|
||
"instrument": {
|
||
"phq9": "PHQ-9 (ánimo)",
|
||
"gad7": "GAD-7 (preocupación)",
|
||
"who5": "WHO-5 (bienestar)",
|
||
"sci": "SCI (sueño)"
|
||
},
|
||
"instrumentSub": {
|
||
"phq9": "Cribado de depresión, 9 preguntas",
|
||
"gad7": "Cribado de ansiedad, 7 preguntas",
|
||
"who5": "Test de bienestar, 5 preguntas",
|
||
"sci": "Test de sueño, 8 preguntas"
|
||
},
|
||
"functionalOptionalHint": "Opcional: puedes enviar sin responder esta pregunta.",
|
||
"result": {
|
||
"title": "Tu resultado",
|
||
"totalLabel": "Puntuación total",
|
||
"bandLabel": "Rango para este cribado",
|
||
"takeAnother": "Hacer otra revisión",
|
||
"scoreOf": "de {max}",
|
||
"firstCheckIn": "Es tu primer resultado con este cuestionario. A partir del próximo verás aquí el cambio.",
|
||
"nextStep": "Puedes repetir este cuestionario dentro de dos semanas o más tarde para seguir el cambio. Si algo te preocupa, habla con un profesional de la salud en cualquier momento."
|
||
},
|
||
"band": {
|
||
"PHQ9": {
|
||
"minimal": "Ninguna / mínima",
|
||
"mild": "Leve",
|
||
"moderate": "Moderada",
|
||
"modSevere": "Moderadamente grave",
|
||
"severe": "Grave"
|
||
},
|
||
"GAD7": {
|
||
"minimal": "Ninguna / mínima",
|
||
"mild": "Leve",
|
||
"moderate": "Moderada",
|
||
"severe": "Grave"
|
||
},
|
||
"WHO5": {
|
||
"low": "Bienestar más bajo",
|
||
"good": "Buen bienestar"
|
||
},
|
||
"SCI": {
|
||
"belowThreshold": "Rango de posible insomnio",
|
||
"aboveThreshold": "Sin indicios de insomnio"
|
||
}
|
||
},
|
||
"history": {
|
||
"title": "Tu historial",
|
||
"empty": "Aún no hay revisiones. Tu tendencia aparecerá aquí cuando completes una.",
|
||
"flaggedBadge": "Apoyo mostrado",
|
||
"chartTitle": "Evolución de la puntuación",
|
||
"totalLabel": "Puntuación",
|
||
"bandLabel": "Categoría",
|
||
"answersToggle": "Respuestas",
|
||
"answersUnavailable": "Las respuestas guardadas de esta revisión no se pueden descifrar."
|
||
},
|
||
"crisis": {
|
||
"title": "No tienes que afrontar esto a solas",
|
||
"intro": "Indicaste pensamientos de estar mejor muerto o de hacerte daño. Hay apoyo disponible ahora mismo, y pedir ayuda es una señal de fortaleza.",
|
||
"ifDanger": "Si estás en peligro inmediato, llama ahora al {emergency}.",
|
||
"resourcesTitle": "Personas que pueden ayudar"
|
||
},
|
||
"crisisResource": {
|
||
"telefonSeelsorge": {
|
||
"name": "TelefonSeelsorge (24/7, gratuito y confidencial)"
|
||
},
|
||
"nummerGegenKummer": {
|
||
"name": "Nummer gegen Kummer (para jóvenes)"
|
||
},
|
||
"telefonSeelsorgeAt": {
|
||
"name": "Telefonseelsorge Österreich (24/7, gratuito y confidencial)"
|
||
},
|
||
"dargeboteneHand": {
|
||
"name": "Die Dargebotene Hand (24/7, gratuito y confidencial)"
|
||
},
|
||
"krisenchat": {
|
||
"name": "krisenchat (chat 24/7, para jóvenes)"
|
||
},
|
||
"findahelpline": {
|
||
"name": "Find a Helpline (directorio mundial)"
|
||
},
|
||
"euEmotionalSupport": {
|
||
"name": "Línea de apoyo emocional"
|
||
},
|
||
"lifeline988": {
|
||
"name": "988 Suicide & Crisis Lifeline"
|
||
},
|
||
"crisisTextLine": {
|
||
"name": "Crisis Text Line"
|
||
},
|
||
"cvv": {
|
||
"name": "CVV, Centro de Valorização da Vida (Brasil, 24/7, gratuito y confidencial)"
|
||
},
|
||
"samu": {
|
||
"name": "SAMU, urgencias médicas (Brasil)"
|
||
},
|
||
"sns24": {
|
||
"name": "SNS 24, asesoramiento psicológico (Portugal, 24/7, opción 4)"
|
||
},
|
||
"sosVozAmiga": {
|
||
"name": "SOS Voz Amiga (Portugal, todos los días de 15:30 a 0:30)"
|
||
}
|
||
},
|
||
"instrumentDescription": {
|
||
"phq9": "Cribado de depresión de 9 preguntas. Responde pensando en las últimas dos semanas.",
|
||
"gad7": "Cribado de ansiedad de 7 preguntas. Responde pensando en las últimas dos semanas.",
|
||
"who5": "Test de bienestar de 5 preguntas. Responde pensando en las últimas dos semanas; cifras mayores significan mayor bienestar.",
|
||
"sci": "Test de sueño de 8 preguntas. La mayoría se refiere al último mes; puntuaciones mayores significan mejor sueño."
|
||
},
|
||
"next": "Siguiente",
|
||
"lastResult": "Última prueba",
|
||
"lastScore": "Último resultado",
|
||
"noResultYet": "Aún sin check-in",
|
||
"backToList": "Vista general",
|
||
"followUpHint": {
|
||
"phq9": "Tu puntuación está en un rango en el que hablar con un profesional de salud puede ayudar. Es una sugerencia amable, no un diagnóstico.",
|
||
"gad7": "Tu puntuación está en un rango en el que hablar con un profesional de salud puede ayudar. Es una sugerencia amable, no un diagnóstico.",
|
||
"who5": "Una puntuación de bienestar de 50 o menos puede merecer una mirada más atenta. Si quieres, el PHQ-9 de esta página explora el estado de ánimo con más detalle. Es una sugerencia amable, no un diagnóstico.",
|
||
"sci": "En el estudio de este cuestionario, puntuaciones de 16 o menos se asociaron con insomnio probable. Si dormir mal te sigue afectando, hablar con un profesional de salud puede ayudar. No es un diagnóstico."
|
||
},
|
||
"openDetail": "Ver detalles",
|
||
"historyLoadError": "No se pudo cargar tu historial de evaluaciones",
|
||
"historyLoadErrorHint": "Esto no significa que no tengas resultados: no se pudo obtener la lista. Vuelve a intentarlo.",
|
||
"privacyNote": "Tus respuestas se guardan cifradas y nunca llegan al Coach de IA.",
|
||
"trend": {
|
||
"sincePrevious": "Desde tu revisión anterior del {date}: {change} puntos.",
|
||
"sinceFirst": "Desde tu primera revisión del {date}: {change} puntos.",
|
||
"verdict": {
|
||
"improved": "Alcanza el cambio de {threshold} puntos que los estudios consideran relevante, en la dirección favorable.",
|
||
"worsened": "Alcanza el cambio de {threshold} puntos que los estudios consideran relevante, en la dirección menos favorable.",
|
||
"within_threshold": "Es menor que el cambio de {threshold} puntos que los estudios consideran relevante."
|
||
}
|
||
},
|
||
"wizard": {
|
||
"progressLabel": "Pregunta {current} de {total}",
|
||
"followUpLabel": "Pregunta adicional (opcional)",
|
||
"keyboardHint": "Las teclas 1 a {count} eligen una respuesta.",
|
||
"allAnswered": "Las {total} preguntas tienen respuesta"
|
||
},
|
||
"review": {
|
||
"title": "Revisar respuestas",
|
||
"description": "No se guarda nada hasta que lo envíes, y cada respuesta todavía se puede cambiar.",
|
||
"change": "Cambiar",
|
||
"changeLabel": "Cambiar la respuesta a la pregunta {number}",
|
||
"notAnswered": "Sin respuesta",
|
||
"open": "Revisar respuestas"
|
||
},
|
||
"bandMeaning": {
|
||
"PHQ9": {
|
||
"minimal": "Tus respuestas apuntan a pocos o ningún síntoma depresivo en las últimas dos semanas.",
|
||
"mild": "Tus respuestas apuntan a síntomas depresivos leves en las últimas dos semanas.",
|
||
"moderate": "Tus respuestas apuntan a síntomas depresivos moderados en las últimas dos semanas.",
|
||
"modSevere": "Tus respuestas apuntan a síntomas depresivos moderadamente graves en las últimas dos semanas.",
|
||
"severe": "Tus respuestas apuntan a síntomas depresivos graves en las últimas dos semanas."
|
||
},
|
||
"GAD7": {
|
||
"minimal": "Tus respuestas apuntan a pocos o ningún síntoma de ansiedad en las últimas dos semanas.",
|
||
"mild": "Tus respuestas apuntan a síntomas de ansiedad leves en las últimas dos semanas.",
|
||
"moderate": "Tus respuestas apuntan a síntomas de ansiedad moderados en las últimas dos semanas.",
|
||
"severe": "Tus respuestas apuntan a síntomas de ansiedad graves en las últimas dos semanas."
|
||
},
|
||
"WHO5": {
|
||
"low": "Tu bienestar en las últimas dos semanas estuvo por debajo del rango que el WHO-5 considera bueno.",
|
||
"good": "Tu bienestar en las últimas dos semanas estuvo dentro del rango que el WHO-5 considera bueno."
|
||
},
|
||
"SCI": {
|
||
"belowThreshold": "Tu sueño del último mes estuvo en el rango en el que el estudio detrás de este cuestionario consideró probable un insomnio.",
|
||
"aboveThreshold": "Tu sueño del último mes estuvo fuera del rango que ese estudio asocia con el insomnio."
|
||
}
|
||
},
|
||
"wording": {
|
||
"unvalidatedNote": "Esta traducción no ha sido validada científicamente; toma el resultado como orientación.",
|
||
"showOriginal": "Ver el texto original en inglés",
|
||
"showTranslation": "Ver la traducción",
|
||
"resultUnvalidated": "Respondido con una traducción que no ha sido validada científicamente; toma el resultado como orientación.",
|
||
"historyUnvalidated": "Respondido con una traducción no validada científicamente"
|
||
}
|
||
},
|
||
"records": {
|
||
"aiInclusion": {
|
||
"cardTitle": "Acceso de la IA al perfil",
|
||
"cardDescription": "Elige qué partes de tu perfil de salud pueden usar el Coach y los informes completos.",
|
||
"sectionAboutMe": "Sobre mí",
|
||
"sectionConditions": "Enfermedades crónicas",
|
||
"sectionAllergies": "Alergias e intolerancias",
|
||
"sectionCoachFocus": "Prioridad del Coach",
|
||
"sectionFamilyHistory": "Antecedentes familiares",
|
||
"sectionSmoking": "Tabaquismo",
|
||
"sectionAlcohol": "Patrón de consumo de alcohol",
|
||
"sectionShiftSchedule": "Horario de trabajo",
|
||
"save": "Guardar acceso",
|
||
"savedToast": "Acceso de la IA al perfil guardado",
|
||
"saveError": "No se pudo guardar el acceso de la IA al perfil",
|
||
"loadError": "No se pudo cargar el acceso de la IA al perfil"
|
||
},
|
||
"profileFacts": {
|
||
"cardTitle": "Contexto del estilo de vida",
|
||
"smokingLabel": "Tabaquismo",
|
||
"alcoholLabel": "Patrón de consumo de alcohol",
|
||
"shiftLabel": "Horario de trabajo",
|
||
"notRecorded": "No registrado",
|
||
"remove": "Eliminar {kind}",
|
||
"values": {
|
||
"SMOKING_STATUS": {
|
||
"NEVER": "Nunca ha fumado",
|
||
"FORMER": "Exfumador",
|
||
"CURRENT": "Fuma actualmente"
|
||
},
|
||
"ALCOHOL_PATTERN": {
|
||
"NONE": "Ninguno",
|
||
"OCCASIONAL": "Ocasional",
|
||
"WEEKLY": "Semanal",
|
||
"MOST_DAYS": "La mayoría de los días"
|
||
},
|
||
"SHIFT_SCHEDULE": {
|
||
"NONE": "Sin trabajo por turnos",
|
||
"FIXED_SHIFT": "Turno fijo",
|
||
"ROTATING": "Turnos rotativos"
|
||
}
|
||
}
|
||
},
|
||
"disclaimer": "Son tus propios registros, no un diagnóstico médico. HealthLog no diagnostica, no trata ni los interpreta.",
|
||
"allergies": {
|
||
"cardTitle": "Alergias e intolerancias",
|
||
"cardDescription": "Sustancias a las que reaccionas, con la reacción y su gravedad.",
|
||
"description": "Registrar una alergia o intolerancia.",
|
||
"add": "Añadir alergia",
|
||
"addFirst": "Añade tu primera alergia",
|
||
"addTitle": "Añadir alergia",
|
||
"editTitle": "Editar alergia",
|
||
"formDescription": "La sustancia se guarda como texto; la reacción y la nota se cifran.",
|
||
"emptyTitle": "No hay alergias registradas",
|
||
"emptyDescription": "Añade sustancias a las que reaccionas y sus reacciones.",
|
||
"loadError": "No se han podido cargar tus alergias.",
|
||
"deletedToast": "Alergia eliminada",
|
||
"deleteError": "No se ha podido eliminar la alergia.",
|
||
"deleteConfirmTitle": "¿Eliminar esta alergia?",
|
||
"deleteConfirmDescription": "Esto elimina el registro. No se puede deshacer.",
|
||
"category": {
|
||
"FOOD": "Alimento",
|
||
"MEDICATION": "Medicamento",
|
||
"ENVIRONMENT": "Ambiental",
|
||
"BIOLOGIC": "Biológico",
|
||
"OTHER": "Otro"
|
||
},
|
||
"type": {
|
||
"ALLERGY": "Alergia",
|
||
"INTOLERANCE": "Intolerancia"
|
||
},
|
||
"severity": {
|
||
"NONE": "Sin evaluar",
|
||
"MILD": "Leve",
|
||
"MODERATE": "Moderada",
|
||
"SEVERE": "Grave"
|
||
},
|
||
"status": {
|
||
"ACTIVE": "Activa",
|
||
"INACTIVE": "Inactiva",
|
||
"RESOLVED": "Resuelta"
|
||
},
|
||
"form": {
|
||
"substance": "Sustancia",
|
||
"substancePlaceholder": "p. ej. Penicilina, Cacahuetes",
|
||
"category": "Categoría",
|
||
"type": "Tipo",
|
||
"severity": "Gravedad",
|
||
"status": "Estado",
|
||
"onset": "Primera vez observada",
|
||
"reaction": "Reacción",
|
||
"reactionPlaceholder": "p. ej. urticaria, hinchazón, anafilaxia",
|
||
"note": "Nota",
|
||
"notePlaceholder": "Cualquier otra cosa que merezca recordar",
|
||
"requiredError": "Introduce la sustancia.",
|
||
"savedToast": "Alergia guardada",
|
||
"updatedToast": "Alergia actualizada",
|
||
"saveError": "No se ha podido guardar la alergia."
|
||
},
|
||
"freeText": {
|
||
"label": "Nota de texto libre (alergias e intolerancias)",
|
||
"hint": "Un complemento de texto libre a la lista estructurada de arriba, para contexto que una entrada individual no puede reflejar.",
|
||
"savedToast": "Nota de alergias guardada",
|
||
"saveError": "No se pudo guardar. Inténtalo de nuevo."
|
||
}
|
||
},
|
||
"family": {
|
||
"cardTitle": "Antecedentes familiares",
|
||
"cardDescription": "Enfermedades de tus familiares, una entrada por enfermedad.",
|
||
"description": "Registrar una enfermedad de un familiar.",
|
||
"add": "Añadir entrada",
|
||
"addFirst": "Añade tu primera entrada",
|
||
"addTitle": "Añadir antecedente familiar",
|
||
"editTitle": "Editar antecedente familiar",
|
||
"formDescription": "El parentesco y la enfermedad se guardan como texto; la nota se cifra.",
|
||
"emptyTitle": "No hay antecedentes familiares",
|
||
"emptyDescription": "Añade enfermedades que aparecen en tu familia.",
|
||
"loadError": "No se han podido cargar tus antecedentes familiares.",
|
||
"deletedToast": "Entrada eliminada",
|
||
"deleteError": "No se ha podido eliminar la entrada.",
|
||
"deleteConfirmTitle": "¿Eliminar esta entrada?",
|
||
"deleteConfirmDescription": "Esto elimina el registro. No se puede deshacer.",
|
||
"ageAtOnsetShort": "Edad {age}",
|
||
"relationship": {
|
||
"MOTHER": "Madre",
|
||
"FATHER": "Padre",
|
||
"SISTER": "Hermana",
|
||
"BROTHER": "Hermano",
|
||
"DAUGHTER": "Hija",
|
||
"SON": "Hijo",
|
||
"GRANDMOTHER_MATERNAL": "Abuela (materna)",
|
||
"GRANDFATHER_MATERNAL": "Abuelo (materno)",
|
||
"GRANDMOTHER_PATERNAL": "Abuela (paterna)",
|
||
"GRANDFATHER_PATERNAL": "Abuelo (paterno)",
|
||
"AUNT": "Tía",
|
||
"UNCLE": "Tío",
|
||
"COUSIN": "Primo/a",
|
||
"HALF_SIBLING": "Medio hermano/a",
|
||
"OTHER": "Otro familiar"
|
||
},
|
||
"form": {
|
||
"relationship": "Familiar",
|
||
"condition": "Enfermedad",
|
||
"conditionPlaceholder": "p. ej. Diabetes tipo 2, Cáncer de mama",
|
||
"ageAtOnset": "Edad de inicio",
|
||
"ageAtOnsetPlaceholder": "p. ej. 55",
|
||
"note": "Nota",
|
||
"notePlaceholder": "Cualquier otra cosa que merezca recordar",
|
||
"requiredError": "Introduce la enfermedad.",
|
||
"ageError": "Introduce una edad entre 0 y 120.",
|
||
"savedToast": "Entrada guardada",
|
||
"updatedToast": "Entrada actualizada",
|
||
"saveError": "No se ha podido guardar la entrada."
|
||
}
|
||
},
|
||
"conditions": {
|
||
"cardTitle": "Enfermedades preexistentes",
|
||
"cardDescription": "Enfermedades crónicas y aquello que el Coach debe vigilar.",
|
||
"conditionsLabel": "Enfermedades crónicas",
|
||
"focusLabel": "Qué vigila el Coach",
|
||
"loadError": "No se pudieron cargar tus enfermedades.",
|
||
"savedToast": "Enfermedades guardadas",
|
||
"saveError": "No se pudo guardar. Inténtalo de nuevo."
|
||
},
|
||
"emergency": {
|
||
"cardTitle": "Información de emergencia",
|
||
"cardDescription": "Lo que un servicio de emergencia necesita primero: grupo sanguíneo, contactos, voluntades.",
|
||
"bloodType": "Grupo sanguíneo",
|
||
"organDonor": "Donante de órganos",
|
||
"advanceDirective": "Voluntades anticipadas",
|
||
"contacts": "Contactos de emergencia",
|
||
"implants": "Implantes y dispositivos",
|
||
"note": "Notas adicionales",
|
||
"notRecorded": "No registrado",
|
||
"bloodTypeValues": {
|
||
"A_POS": "A positivo",
|
||
"A_NEG": "A negativo",
|
||
"B_POS": "B positivo",
|
||
"B_NEG": "B negativo",
|
||
"AB_POS": "AB positivo",
|
||
"AB_NEG": "AB negativo",
|
||
"O_POS": "O positivo",
|
||
"O_NEG": "O negativo",
|
||
"UNKNOWN": "Desconocido"
|
||
},
|
||
"organDonorValues": {
|
||
"YES": "Sí",
|
||
"NO": "No",
|
||
"UNKNOWN": "Sin indicar"
|
||
},
|
||
"advanceDirectiveValues": {
|
||
"EXISTS": "Existe",
|
||
"NONE": "Ninguna",
|
||
"UNKNOWN": "Sin indicar"
|
||
},
|
||
"contactsPlaceholder": "Nombre y teléfono de a quién llamar",
|
||
"implantsPlaceholder": "p. ej. marcapasos, bomba de insulina, implante metálico",
|
||
"notePlaceholder": "Cualquier cosa que deba saber un profesional en una emergencia",
|
||
"reportHint": "Aparece en la primera página de tu informe médico.",
|
||
"save": "Guardar",
|
||
"savedToast": "Información de emergencia guardada",
|
||
"saveError": "No se pudo guardar la información de emergencia.",
|
||
"loadError": "No se pudo cargar la información de emergencia."
|
||
},
|
||
"life": {
|
||
"cardTitle": "Circunstancias de vida",
|
||
"cardDescription": "Tabaco, alcohol, actividad, trabajo, hábitos y objetivos, con fecha y siempre opcionales.",
|
||
"loadError": "No se pudieron cargar tus circunstancias de vida.",
|
||
"noAnswer": "Sin respuesta",
|
||
"yes": "Sí",
|
||
"no": "No",
|
||
"validSince": "Válido desde",
|
||
"month": "Mes",
|
||
"year": "Año",
|
||
"lastConfirmed": "Confirmado por última vez el {date}",
|
||
"notAnswered": "Aún sin responder",
|
||
"unreadable": "Esta respuesta no se puede leer en este servidor.",
|
||
"save": "Guardar sección",
|
||
"savedToast": "Sección guardada",
|
||
"saveError": "No se pudo guardar la sección.",
|
||
"review": {
|
||
"question": "¿Sigue siendo cierto? Tu última respuesta tiene más de un año.",
|
||
"confirm": "Sigue siendo cierto",
|
||
"confirmedToast": "Gracias, marcado como vigente",
|
||
"confirmError": "No se pudo guardar la confirmación."
|
||
},
|
||
"ai": {
|
||
"label": "Compartir esta sección con la IA",
|
||
"shiftLabel": "Compartir el trabajo por turnos con la IA",
|
||
"hint": "Desactivado, el Coach y los resúmenes nunca ven estas respuestas.",
|
||
"savedToast": "Uso por la IA actualizado",
|
||
"saveError": "No se pudo guardar el ajuste de la IA."
|
||
},
|
||
"sections": {
|
||
"tobacco": {
|
||
"title": "Tabaco y nicotina"
|
||
},
|
||
"alcohol": {
|
||
"title": "Alcohol"
|
||
},
|
||
"activity": {
|
||
"title": "Actividad y tiempo sentado"
|
||
},
|
||
"work": {
|
||
"title": "Trabajo y ritmo"
|
||
},
|
||
"habits": {
|
||
"title": "Sueño, alimentación y cafeína"
|
||
},
|
||
"goals": {
|
||
"title": "Objetivos"
|
||
}
|
||
},
|
||
"fields": {
|
||
"smokingStatus": "Consumo de tabaco",
|
||
"products": "Productos que usas",
|
||
"cigarettesPerDay": "Cigarrillos al día",
|
||
"startYear": "Año en que empezaste",
|
||
"quitMonth": "Cuándo lo dejaste",
|
||
"secondhandSmoke": "Humo ajeno con frecuencia",
|
||
"moderateDaysPerWeek": "Días por semana con actividad moderada o intensa, como caminar a paso rápido",
|
||
"moderateMinutesPerDay": "Minutos esos días, de media",
|
||
"sittingHoursWorkday": "Horas sentado en un día laborable",
|
||
"shiftSchedule": "Trabajo por turnos",
|
||
"situation": "Situación laboral",
|
||
"physicalNature": "Tipo de trabajo",
|
||
"nightWork": "Trabajo nocturno",
|
||
"exposures": "Exposiciones en el trabajo",
|
||
"freeWeekdays": "Días libres de la semana",
|
||
"napRegularly": "Siesta habitual",
|
||
"snoringReported": "Otros dicen que roncas",
|
||
"dietPattern": "Alimentación",
|
||
"dietSpecifics": "Particularidades",
|
||
"lateMealsPerWeek": "Comidas después de las 21 h por semana",
|
||
"fruitVegPortionsPerDay": "Raciones de fruta y verdura al día",
|
||
"caffeineDrinksPerDay": "Bebidas con cafeína al día",
|
||
"latestCaffeine": "Última cafeína del día",
|
||
"goals": "En qué quieres trabajar",
|
||
"goalsHint": "Como máximo tres."
|
||
},
|
||
"values": {
|
||
"products": {
|
||
"cigarettes": "Cigarrillos",
|
||
"cigars_pipe": "Puros o pipa",
|
||
"e_cigarette": "Cigarrillo electrónico",
|
||
"heated_tobacco": "Tabaco calentado",
|
||
"snus_pouches": "Snus o bolsas de nicotina"
|
||
},
|
||
"situation": {
|
||
"none": "Sin trabajo remunerado",
|
||
"indoor": "Sobre todo en interiores",
|
||
"outdoor": "Sobre todo al aire libre",
|
||
"mixed": "Dentro y fuera"
|
||
},
|
||
"physicalNature": {
|
||
"mostly_sitting": "Sobre todo sentado",
|
||
"standing_walking": "De pie o caminando",
|
||
"heavy_physical": "Trabajo físico pesado"
|
||
},
|
||
"exposures": {
|
||
"heat": "Calor",
|
||
"cold": "Frío",
|
||
"dust": "Polvo",
|
||
"fumes_solvents": "Humos o disolventes",
|
||
"noise": "Ruido"
|
||
},
|
||
"dietPattern": {
|
||
"mixed": "Dieta mixta",
|
||
"vegetarian": "Vegetariana",
|
||
"vegan": "Vegana",
|
||
"pescetarian": "Pescetariana",
|
||
"other": "Otra"
|
||
},
|
||
"dietSpecifics": {
|
||
"intermittent_fasting": "Ayuno intermitente",
|
||
"low_carb": "Baja en carbohidratos",
|
||
"prescribed_diet": "Dieta prescrita por el médico"
|
||
},
|
||
"latestCaffeine": {
|
||
"before_12": "Antes de las 12 h",
|
||
"12_15": "De 12 a 15 h",
|
||
"15_18": "De 15 a 18 h",
|
||
"after_18": "Después de las 18 h"
|
||
},
|
||
"goals": {
|
||
"weight": "Peso",
|
||
"blood_pressure": "Presión arterial",
|
||
"blood_sugar": "Glucosa",
|
||
"sleep": "Sueño",
|
||
"fitness": "Forma física",
|
||
"stress_recovery": "Estrés y recuperación",
|
||
"medication_routine": "Tomar la medicación con regularidad",
|
||
"quit_smoking": "Dejar de fumar",
|
||
"less_alcohol": "Beber menos alcohol"
|
||
},
|
||
"weekdays": {
|
||
"1": "lun",
|
||
"2": "mar",
|
||
"3": "mié",
|
||
"4": "jue",
|
||
"5": "vie",
|
||
"6": "sáb",
|
||
"7": "dom"
|
||
}
|
||
},
|
||
"derived": {
|
||
"packYears": "{value} paquetes-año",
|
||
"packYearsMissing": "Para los paquetes-año faltan los cigarrillos al día o el año en que empezaste.",
|
||
"activityMinutes": "{value} minutos a la semana.",
|
||
"meetsWho": "Cumple la recomendación de la OMS de 150 minutos semanales.",
|
||
"belowWho": "Está por debajo de la recomendación de la OMS de 150 minutos semanales.",
|
||
"measuredSteps": "Tus pasos medidos tienen prioridad; esta respuesta aporta contexto.",
|
||
"freeDaysDefault": "Sin respuesta, el sábado y el domingo cuentan como días libres."
|
||
},
|
||
"auditC": {
|
||
"intro": "Tres preguntas sobre alcohol del AUDIT de la OMS. Un cribado, no un diagnóstico.",
|
||
"start": "Responder las preguntas",
|
||
"again": "Responder de nuevo",
|
||
"offerDue": "Basta con revisarlo una vez al año.",
|
||
"notValidated": "Aún no hay una traducción validada para tu idioma, por eso las preguntas aparecen en inglés.",
|
||
"submit": "Guardar respuestas",
|
||
"savedToast": "Respuestas guardadas",
|
||
"saveError": "No se pudieron guardar las respuestas.",
|
||
"result": "{score} de 12 puntos",
|
||
"above": "En o por encima del punto de corte de cribado de {cutoff}.",
|
||
"below": "Por debajo del punto de corte de cribado de {cutoff}.",
|
||
"noCutoff": "Sin sexo en tu perfil solo se muestra la suma.",
|
||
"source": "Fuente: {source}",
|
||
"history": "Entradas anteriores",
|
||
"remove": "Eliminar entrada",
|
||
"removeConfirmTitle": "¿Eliminar esta entrada?",
|
||
"removeConfirmBody": "La entrada sale de tu historial. Aquí no se puede deshacer.",
|
||
"removedToast": "Entrada eliminada",
|
||
"removeError": "No se pudo eliminar la entrada.",
|
||
"historyEntry": "{date}: {score} de 12",
|
||
"legacyLabel": "Respuesta anterior: {value}",
|
||
"legacyHint": "De la pregunta breve sobre alcohol anterior a este cuestionario. En cuanto hay un resultado del cuestionario, el Coach deja de leerla.",
|
||
"legacyRemove": "Eliminar respuesta anterior",
|
||
"legacyRemoveConfirmTitle": "¿Eliminar la respuesta anterior?",
|
||
"legacyRemoveConfirmBody": "La respuesta anterior sale de tu registro. Los resultados del cuestionario se mantienen.",
|
||
"legacyRemovedToast": "Respuesta anterior eliminada",
|
||
"legacyRemoveError": "No se pudo eliminar la respuesta anterior."
|
||
},
|
||
"takeOver": {
|
||
"conditionsButton": "Pasar al diario de afecciones",
|
||
"allergiesButton": "Pasar a alergias",
|
||
"conditionsTitle": "Añadir una enfermedad crónica",
|
||
"allergiesTitle": "Añadir una alergia",
|
||
"description": "Tu texto libre se queda como está hasta que lo borres tú.",
|
||
"freeTextLabel": "Tu texto libre",
|
||
"conditionLabel": "Enfermedad",
|
||
"onset": "Desde",
|
||
"save": "Añadir",
|
||
"savedToast": "Entrada añadida",
|
||
"saveError": "No se pudo añadir la entrada.",
|
||
"clearQuestion": "La entrada está guardada. ¿Borrar ahora el texto libre?",
|
||
"clear": "Borrar texto libre",
|
||
"keep": "Conservarlo",
|
||
"clearedToast": "Texto libre borrado",
|
||
"clearError": "No se pudo borrar el texto libre."
|
||
},
|
||
"screening": {
|
||
"cardTitle": "Indicaciones de cribado",
|
||
"cardDescription": "A partir de tus circunstancias de vida, con la norma y el país de origen.",
|
||
"noReminder": "Es solo una indicación; si quieres un recordatorio, créalo tú.",
|
||
"source": "Fuente: {source}",
|
||
"titles": {
|
||
"lung_ldct": "TC de baja dosis para cáncer de pulmón",
|
||
"aaa_ultrasound": "Ecografía de la aorta abdominal"
|
||
},
|
||
"status": {
|
||
"suggested": "Podría aplicarse a ti",
|
||
"not_eligible": "No se aplica a ti",
|
||
"unknown": "Falta información"
|
||
},
|
||
"reasons": {
|
||
"never_smoked": "Nunca has fumado.",
|
||
"missing_birth_date": "Falta tu fecha de nacimiento.",
|
||
"age_out_of_range": "Tu edad está fuera del rango.",
|
||
"missing_smoking_status": "Falta tu consumo de tabaco.",
|
||
"no_cigarettes": "La norma solo cuenta cigarrillos.",
|
||
"missing_smoking_history": "Faltan los cigarrillos al día o el año de inicio.",
|
||
"pack_years_below_15": "Menos de 15 paquetes-año.",
|
||
"pack_years_below_20": "Menos de 20 paquetes-año.",
|
||
"smoked_years_below_25": "Menos de 25 años fumando.",
|
||
"missing_quit_date": "Falta la fecha en que lo dejaste.",
|
||
"quit_over_10_years": "Lo dejaste hace más de 10 años.",
|
||
"quit_over_15_years": "Lo dejaste hace más de 15 años.",
|
||
"missing_sex": "Falta el sexo en tu perfil.",
|
||
"sex_not_male": "La norma se aplica a hombres."
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"environment": {
|
||
"fields": {
|
||
"tempMean": "Temperatura diaria",
|
||
"tempMin": "Mínima nocturna",
|
||
"sunshine": "Sol",
|
||
"daylight": "Luz diurna",
|
||
"precip": "Precipitación",
|
||
"pressureMean": "Presión atmosférica",
|
||
"pressureDelta": "Variación de presión",
|
||
"pm25": "Partículas finas (PM2,5)",
|
||
"pm10": "Partículas (PM10)",
|
||
"no2": "Dióxido de nitrógeno",
|
||
"ozone8h": "Ozono (máximo de 8 horas)",
|
||
"europeanAqi": "Índice europeo de calidad del aire",
|
||
"uvIndexMax": "Índice UV (máximo)",
|
||
"dustMax": "Polvo del Sáhara",
|
||
"pollenMax": "Polen (valor más alto)"
|
||
},
|
||
"chip": {
|
||
"day": "Tiempo del {date}",
|
||
"pollenHigh": "Mucho polen: {kinds}",
|
||
"hotNight": "Noche cálida",
|
||
"veryPoorAir": "Aire muy malo"
|
||
},
|
||
"pollen": {
|
||
"alder": "aliso",
|
||
"birch": "abedul",
|
||
"grass": "gramíneas",
|
||
"mugwort": "artemisa",
|
||
"olive": "olivo",
|
||
"ragweed": "ambrosía"
|
||
},
|
||
"movement": {
|
||
"awayFromHome": "Tiempo fuera de casa",
|
||
"distance": "Distancia recorrida"
|
||
}
|
||
},
|
||
"documents": {
|
||
"title": "Documentos",
|
||
"subtitle": "Cada carta, informe y escaneo en un solo lugar con búsqueda, cifrado en reposo.",
|
||
"pageUpload": "Subir",
|
||
"ownerOnlyUpload": "Solo el titular del historial puede añadir documentos.",
|
||
"kind": {
|
||
"DOCTOR_REPORT": "Informe médico",
|
||
"DISCHARGE_LETTER": "Informe de alta",
|
||
"OTHER": "Otro",
|
||
"LAB_RESULT": "Resultado de laboratorio",
|
||
"IMAGING": "Imagen",
|
||
"PRESCRIPTION": "Receta",
|
||
"REFERRAL": "Derivación",
|
||
"INSURANCE": "Seguro",
|
||
"VACCINATION": "Vacunación",
|
||
"SICK_NOTE": "Baja médica"
|
||
},
|
||
"filter": {
|
||
"searchLabel": "Buscar documentos",
|
||
"searchPlaceholder": "Buscar por título o nombre de archivo…",
|
||
"typeGroup": "Tipo de documento",
|
||
"conditionGroup": "Afección",
|
||
"procedureGroup": "Procedimientos y cirugías",
|
||
"yearGroup": "Año",
|
||
"clear": "Borrar filtros",
|
||
"typeAll": "Todos los tipos",
|
||
"typeCount": "{count} tipos",
|
||
"conditionAll": "Todas las afecciones",
|
||
"procedureAll": "Todos los procedimientos",
|
||
"yearAll": "Todos los años"
|
||
},
|
||
"card": {
|
||
"untitled": "Documento sin título",
|
||
"selectLabel": "Seleccionar {title}",
|
||
"openLabel": "Abrir {title}",
|
||
"attachmentBadge": "Solo descarga",
|
||
"uploading": "Subiendo…",
|
||
"dismissFailed": "Descartar subida fallida",
|
||
"processing": "Procesando…",
|
||
"ready": "Listo",
|
||
"deleteKey": "Supr"
|
||
},
|
||
"error": {
|
||
"fileTooLarge": "Este archivo supera el límite de {maxSize}.",
|
||
"quotaExceeded": "El almacenamiento está lleno: {used} de {quota} usados.",
|
||
"unsupportedType": "Este tipo de archivo no es compatible.",
|
||
"purged": "Este documento se eliminó definitivamente y no se puede restaurar.",
|
||
"duplicateExists": "Ya hay guardado un documento idéntico.",
|
||
"rateLimited": "Demasiadas subidas. Inténtalo de nuevo en unos minutos.",
|
||
"generic": "La subida falló. Inténtalo de nuevo."
|
||
},
|
||
"toast": {
|
||
"duplicate": "Ya estaba guardado. Se resalta el documento existente.",
|
||
"deleted": "Documento eliminado",
|
||
"restoreFailed": "No se pudo restaurar el documento."
|
||
},
|
||
"timeline": {
|
||
"loadingMore": "Cargando más…",
|
||
"listLabel": "Cronología de documentos"
|
||
},
|
||
"upload": {
|
||
"browse": "Elegir archivos",
|
||
"quotaAlmostFull": "Almacenamiento casi lleno",
|
||
"quotaUsed": "{used} de {quota} usados",
|
||
"queuedAnnouncement": "{count} archivo(s) añadidos a la cola de subida"
|
||
},
|
||
"selection": {
|
||
"count": "{count} seleccionados",
|
||
"clear": "Borrar selección"
|
||
},
|
||
"list": {
|
||
"loadError": "No se pudieron cargar tus documentos."
|
||
},
|
||
"empty": {
|
||
"title": "Tu archivo de documentos está vacío",
|
||
"description": "Guarda cartas médicas, resultados de laboratorio, imágenes, recetas y certificados de vacunación. Se guardan cifrados y puedes buscarlos por tipo, afección y año.",
|
||
"action": "Subir un primer documento",
|
||
"noMatchesTitle": "No hay documentos coincidentes",
|
||
"noMatchesDescription": "Nada coincide con la búsqueda y los filtros actuales."
|
||
},
|
||
"detail": {
|
||
"title": "Detalles del documento",
|
||
"summary": {
|
||
"title": "Resumen",
|
||
"pending": "Se está preparando el resumen.",
|
||
"none": "Todavía no se ha generado ningún resumen para este documento.",
|
||
"withheld": "Se generó un resumen, pero no superó la comprobación de seguridad, así que no se muestra. Puedes intentarlo de nuevo o leer el documento.",
|
||
"unavailable": "No se pudo generar ningún resumen para este documento.",
|
||
"generate": "Generar resumen",
|
||
"generating": "Generando…"
|
||
},
|
||
"index": {
|
||
"outcome": {
|
||
"local-empty": "No se encontró texto legible. Parece un documento escaneado; un proveedor de visión de IA puede leerlo.",
|
||
"local-unsupported": "Este tipo de archivo no se puede leer para la búsqueda.",
|
||
"decrypt-error": "El archivo guardado no se pudo abrir para su lectura.",
|
||
"raster-failed": "Las páginas del PDF no se pudieron procesar para su lectura. Los formatos de compresión de fax escaneados son una causa conocida.",
|
||
"provider-error": "El proveedor de IA no pudo leer este documento en el último intento.",
|
||
"pdf-needs-anthropic": "El proveedor de IA configurado no puede leer archivos PDF. Un proveedor Claude o el OCR local sí pueden.",
|
||
"empty-transcription": "El proveedor de IA no devolvió texto para este documento."
|
||
}
|
||
},
|
||
"loadError": "No se pudo cargar este documento.",
|
||
"saveError": "No se pudo guardar el cambio.",
|
||
"deleteError": "No se pudo eliminar el documento.",
|
||
"download": "Descargar",
|
||
"openInNewTab": "Abrir en una pestaña nueva",
|
||
"delete": "Eliminar",
|
||
"titleLabel": "Título",
|
||
"titlePlaceholder": "Añadir un título",
|
||
"kindLabel": "Tipo",
|
||
"dateLabel": "Fecha del documento",
|
||
"conditionsLabel": "Afecciones vinculadas",
|
||
"linkCondition": "Vincular",
|
||
"noConditions": "Sin vincular a una afección",
|
||
"previewUnavailable": "Sin vista previa integrada para este tipo de archivo",
|
||
"uploadedMeta": "Añadido el {date}, {size}",
|
||
"importedFrom": "Importado de {system}",
|
||
"importedFromWithId": "Importado de {system}, ID {id}",
|
||
"sourceOther": "otro sistema",
|
||
"share": "Compartir",
|
||
"labValuesLink": "Ver {count} valores de laboratorio",
|
||
"visitsLabel": "Pertenece a la cita",
|
||
"vaccinationsLabel": "Vacunas",
|
||
"noVisitsToLink": "Aún no hay consultas registradas.",
|
||
"noVaccinationsToLink": "Aún no hay vacunas registradas."
|
||
},
|
||
"dropOverlay": {
|
||
"title": "Suelta los archivos para subirlos",
|
||
"hint": "Se guardan cifrados en tu archivo de documentos"
|
||
},
|
||
"bulk": {
|
||
"barLabel": "Acciones para los documentos seleccionados",
|
||
"setKind": "Cambiar tipo",
|
||
"linkCondition": "Vincular afección",
|
||
"delete": "Eliminar",
|
||
"updated": "{count} documento(s) actualizados",
|
||
"deleted": "{count} documento(s) eliminados",
|
||
"restored": "{count} documento(s) restaurados",
|
||
"partialFailure": "No se pudieron actualizar {failed} de {total}",
|
||
"failed": "No se pudo completar la acción",
|
||
"share": "Compartir",
|
||
"shareTooMany": "Un enlace para compartir admite como máximo {max} documentos. Deselecciona algunos e inténtalo de nuevo.",
|
||
"linkVisit": "Asignar a una cita"
|
||
},
|
||
"episodeCard": {
|
||
"title": "Documentos",
|
||
"link": "Vincular",
|
||
"upload": "Subir",
|
||
"viewAll": "Ver todos",
|
||
"emptyLine": "Aún no hay documentos vinculados a esta afección.",
|
||
"loadError": "No se pudieron cargar los documentos vinculados"
|
||
},
|
||
"linkPicker": {
|
||
"title": "Vincular documentos",
|
||
"description": "Elige documentos de tu archivo que pertenezcan a esta afección.",
|
||
"searchPlaceholder": "Buscar por título o nombre de archivo",
|
||
"empty": "No se encontraron documentos."
|
||
},
|
||
"assist": {
|
||
"suggest": "Sugerir detalles",
|
||
"suggesting": "Leyendo…",
|
||
"suggestedTitle": "Título sugerido",
|
||
"suggestedKind": "Tipo sugerido",
|
||
"suggestedDate": "Fecha sugerida",
|
||
"apply": "Aplicar",
|
||
"useTitle": "Usar título",
|
||
"applied": "Aplicado",
|
||
"dismiss": "Descartar",
|
||
"empty": "No se pudo leer nada de este documento.",
|
||
"unavailableBody": "Configura un proveedor de IA para sugerir título, tipo y fecha.",
|
||
"unavailableLocalOcr": "Activa el OCR local en los ajustes de IA para leer imágenes en este dispositivo.",
|
||
"unavailableAction": "Abrir ajustes de IA",
|
||
"errorGeneric": "No se pudo leer el documento. Inténtalo de nuevo.",
|
||
"errorOcr": "No se pudo leer texto de esta imagen.",
|
||
"errorRateLimited": "Se alcanzó el límite de lecturas de IA por hora. Inténtalo más tarde.",
|
||
"errorRateLimitedWaitOne": "Se alcanzó el límite de lecturas de IA por hora. Inténtalo en aproximadamente un minuto.",
|
||
"errorRateLimitedWaitFew": "Se alcanzó el límite de lecturas de IA por hora. Inténtalo en aproximadamente {count} minutos.",
|
||
"errorRateLimitedWaitOther": "Se alcanzó el límite de lecturas de IA por hora. Inténtalo en aproximadamente {count} minutos.",
|
||
"errorBudget": "Tu presupuesto de IA de hoy se ha agotado.",
|
||
"errorPdfNeedsVision": "Escanear PDF requiere un proveedor de visión Claude.",
|
||
"errorFileType": "Este tipo de archivo no se puede leer.",
|
||
"errorNotIndexed": "Primero lee el documento y luego extrae.",
|
||
"errorLocalOcrDisabled": "Activa primero el OCR local en los ajustes de IA.",
|
||
"errorProvider": "No hay ningún proveedor de IA configurado para esto.",
|
||
"errorTextImageOnly": "El OCR local solo lee imágenes, no este archivo.",
|
||
"errorConsent": "Leer documentos con IA necesita primero tu consentimiento.",
|
||
"errorUnavailable": "Leer documentos con IA no está disponible aquí ahora mismo."
|
||
},
|
||
"summary": {
|
||
"summarise": "Resumir",
|
||
"showText": "Mostrar texto extraído",
|
||
"summaryTitle": "Resumen",
|
||
"textTitle": "Texto extraído",
|
||
"close": "Ocultar"
|
||
},
|
||
"ai": {
|
||
"readDone": "La IA leyó tu documento.",
|
||
"readStagedOne": "La IA leyó tu documento. 1 valor de laboratorio espera tu revisión.",
|
||
"readStagedFew": "La IA leyó tu documento. {count} valores de laboratorio esperan tu revisión.",
|
||
"readStagedOther": "La IA leyó tu documento. {count} valores de laboratorio esperan tu revisión.",
|
||
"read": "Leer con IA",
|
||
"reread": "Leer de nuevo",
|
||
"reading": "Leyendo…",
|
||
"notReadYet": "Este documento aún no se ha leído."
|
||
},
|
||
"review": {
|
||
"title": "Revisar valores extraídos",
|
||
"hint": "Aprueba lo que coincida con el documento. Los valores sin marcar se descartan; nada se guarda sin tu confirmación.",
|
||
"openOne": "Revisar valor extraído",
|
||
"openFew": "Revisar valores extraídos ({count})",
|
||
"openOther": "Revisar valores extraídos ({count})",
|
||
"includeAria": "Incluir {value}",
|
||
"type": {
|
||
"OBSERVATION": "Valor de laboratorio",
|
||
"CONDITION": "Afección",
|
||
"MEDICATION_STATEMENT": "Medicamento"
|
||
},
|
||
"statedRange": "Rango indicado {range}",
|
||
"needsCheck": "Comprueba este valor contra el documento y luego guárdalo.",
|
||
"verify": "Comprobar",
|
||
"verifySave": "Guardar valor",
|
||
"verifyInvalid": "Indica un nombre y un valor numérico o un resultado en texto, no ambos.",
|
||
"verifyFailed": "No se pudo guardar la corrección. Inténtalo de nuevo.",
|
||
"fieldName": "Nombre",
|
||
"fieldDate": "Fecha",
|
||
"fieldValue": "Valor",
|
||
"fieldValueText": "Resultado (texto)",
|
||
"fieldUnit": "Unidad",
|
||
"fieldDose": "Dosis",
|
||
"unverifiedNoteOne": "1 valor aún necesita comprobación y queda pendiente.",
|
||
"unverifiedNoteFew": "{count} valores aún necesitan comprobación y quedan pendientes.",
|
||
"unverifiedNoteOther": "{count} valores aún necesitan comprobación y quedan pendientes.",
|
||
"finish": "Terminar revisión",
|
||
"confirmFailed": "No se pudo guardar la revisión. Inténtalo de nuevo.",
|
||
"savedToastOne": "1 valor guardado",
|
||
"savedToastFew": "{count} valores guardados",
|
||
"savedToastOther": "{count} valores guardados",
|
||
"nothingSavedToast": "Revisión guardada. No se añadió ningún valor.",
|
||
"extract": "Extraer valores de laboratorio",
|
||
"extracting": "Extrayendo…",
|
||
"extractHint": "Usa el texto ya leído de este documento. Los valores extraídos esperan tu revisión; nada se guarda automáticamente.",
|
||
"extractEmpty": "No se pudieron extraer valores de este documento.",
|
||
"failUnitRequired": "Un valor numérico necesita una unidad antes de poder guardarse.",
|
||
"failUnitMismatch": "La unidad indicada no coincide con la unidad guardada de este marcador. Ajústala y termina la revisión de nuevo.",
|
||
"failGeneric": "Este valor no se pudo guardar.",
|
||
"failUnknownBiomarker": "El biomarcador elegido ya no existe. Elige otro."
|
||
},
|
||
"contentIndex": {
|
||
"indexPrompt": "Haz que el contenido de los documentos sea buscable.",
|
||
"indexAll": "Indexar todo para búsqueda",
|
||
"indexAllPending": "Iniciando…",
|
||
"indexAllQueued": "Indexando {count} documento(s) en segundo plano.",
|
||
"indexAllNothing": "Todo ya está indexado.",
|
||
"indexAllError": "No se pudo iniciar la indexación."
|
||
},
|
||
"share": {
|
||
"title": "Compartir este documento",
|
||
"multiTitle": "Compartir estos documentos",
|
||
"multiLabel": "{count} documentos",
|
||
"description": "Crea un enlace de solo lectura para profesionales con este documento adjunto. El enlace y su frase de contraseña aparecen una sola vez."
|
||
},
|
||
"chat": {
|
||
"title": "Chatea sobre este documento",
|
||
"openButton": "Preguntar al Coach"
|
||
},
|
||
"readingConsent": {
|
||
"body": "Leer con IA envía esto a tu servicio de IA fuera de este servidor. ¿Permitir que HealthLog envíe documentos, informes de laboratorio y descripciones de medicamentos para leerlos?",
|
||
"grant": "Permitir lectura",
|
||
"error": "No se pudo guardar el consentimiento. Inténtalo de nuevo."
|
||
},
|
||
"sourcePicker": {
|
||
"open": "Importar desde archivo",
|
||
"openNamed": "Importar desde {name}",
|
||
"title": "Importar desde {name}",
|
||
"description": "Busca por nombre y marca los documentos que HealthLog debe copiar.",
|
||
"sourceLabel": "Archivo",
|
||
"searchLabel": "Nombre del documento",
|
||
"searchPlaceholder": "Buscar por nombre",
|
||
"tagLabel": "Etiqueta",
|
||
"tagAny": "Cualquier etiqueta",
|
||
"fromLabel": "Desde",
|
||
"toLabel": "Hasta",
|
||
"clearFilters": "Quitar etiqueta y fechas",
|
||
"rangeInvalid": "La fecha final es anterior a la inicial.",
|
||
"empty": "{name} no tiene documentos que mostrar.",
|
||
"noMatch": "Ningún documento coincide.",
|
||
"loadMore": "Cargar más",
|
||
"stateImported": "En HealthLog",
|
||
"stateDeleted": "Eliminado en HealthLog",
|
||
"selectedCount": "{count} de un máximo de {max} seleccionados",
|
||
"importAction": "Importar {count}",
|
||
"importing": "Importando, un documento tras otro…",
|
||
"done": "Hecho",
|
||
"summary": "Importados: {imported}. Ya estaban: {present}. No importados: {failed}.",
|
||
"stopped": "Detenido: {reason}",
|
||
"result": {
|
||
"waiting": "En espera",
|
||
"working": "Importando…",
|
||
"imported": "Importado",
|
||
"importedLinked": "Importado y vinculado",
|
||
"duplicate": "Ya está en HealthLog",
|
||
"duplicateLinked": "Ya está en HealthLog, ahora vinculado",
|
||
"deleted": "Eliminado en HealthLog, se deja así"
|
||
},
|
||
"errors": {
|
||
"unavailable": "Los archivos de documentos no están habilitados en este servidor.",
|
||
"notConnected": "Este archivo no está conectado. Conéctalo en Ajustes, Integraciones.",
|
||
"originNotAllowed": "Esta dirección no está en la lista de archivos permitidos del servidor. Pide a la administración que la añada.",
|
||
"unreachable": "No se pudo acceder al archivo. Comprueba que está en marcha y que la dirección es correcta.",
|
||
"redirected": "El archivo redirigió la solicitud. Introduce la dirección a la que redirige.",
|
||
"authRefused": "El archivo rechazó el token. Comprueba el token y sus permisos.",
|
||
"versionTooOld": "El archivo es demasiado antiguo. Se necesita Paperless-ngx 2.16 o posterior.",
|
||
"badResponse": "No se pudo leer la respuesta del archivo. Comprueba que la dirección apunta al propio archivo.",
|
||
"notFound": "El archivo no tiene ese documento, o el id de organización es incorrecto o no es tuyo.",
|
||
"linkTargetNotFound": "El registro que se iba a vincular ya no existe.",
|
||
"rateLimited": "Demasiadas solicitudes. Espera un minuto y vuelve a intentarlo.",
|
||
"browserOnly": "Los archivos de documentos solo se pueden usar en el navegador.",
|
||
"invalidAddress": "Introduce la dirección completa, empezando por https:// o http://.",
|
||
"organizationRequired": "Introduce el id de organización de Papra.",
|
||
"tokenRequired": "Introduce el token de la API. Una dirección nueva lo necesita de nuevo.",
|
||
"fileTooLarge": "El archivo supera el tamaño que acepta HealthLog.",
|
||
"quotaExceeded": "Tu almacenamiento de documentos está lleno.",
|
||
"fileType": "HealthLog no acepta este tipo de archivo.",
|
||
"uploadLimit": "Se alcanzó el límite de subidas por hora. Inténtalo más tarde.",
|
||
"uploadBusy": "Aún hay otras subidas en curso. Inténtalo en un momento.",
|
||
"moduleDisabled": "Los documentos están desactivados en Ajustes.",
|
||
"generic": "Algo salió mal. Inténtalo de nuevo.",
|
||
"permissionMissing": "La clave de Papra no puede leer etiquetas. Dale el permiso tags:read."
|
||
},
|
||
"pickMore": "Elegir más",
|
||
"finishedHint": "Busca de nuevo o cambia un filtro para elegir más documentos.",
|
||
"maxReached": "Puedes importar como máximo {max} documentos a la vez.",
|
||
"noMatchHint": "Prueba con parte del nombre o quita la etiqueta y las fechas."
|
||
},
|
||
"customize": "Personalizar vista",
|
||
"layout": {
|
||
"viewDescription": "Tarjetas con miniatura o una lista compacta.",
|
||
"arrangementHeading": "Disposición",
|
||
"arrangementDescription": "Cada mes en su propio bloque o todo seguido a lo ancho.",
|
||
"stacked": "Meses apilados",
|
||
"flow": "Continuo",
|
||
"saveFailed": "No se pudo guardar la vista."
|
||
},
|
||
"deleteConfirm": {
|
||
"titleOne": "¿Eliminar este documento?",
|
||
"titleMany": "¿Eliminar {count} documentos?",
|
||
"body": "Puedes deshacerlo justo después. A los 30 días se elimina definitivamente.",
|
||
"action": "Eliminar"
|
||
}
|
||
},
|
||
"selfDescription": {
|
||
"dataPosture": "HealthLog es autoalojado: tus datos de salud están en la base de datos de tu propia instancia. Las notas y otros textos libres, los documentos, las respuestas a cuestionarios, los textos escritos por la IA y los tokens de acceso se cifran en reposo; los valores de mediciones, los valores de laboratorio, los nombres de medicamentos y las puntuaciones de ánimo se guardan sin cifrar y dependen de la seguridad de tu servidor. Las funciones de IA envían datos solo al proveedor de IA configurado para tu cuenta, y no hay analítica de terceros sobre tus datos de salud."
|
||
},
|
||
"customMetrics": {
|
||
"sectionTitle": "Métricas personalizadas",
|
||
"sectionSubtitle": "Mediciones que defines y registras tú mismo.",
|
||
"add": "Añadir métrica personalizada",
|
||
"addValue": "Añadir valor",
|
||
"defineTitle": "Definir una métrica personalizada",
|
||
"defineDescription": "Da nombre a la medición, define su unidad y, opcionalmente, un rango objetivo.",
|
||
"editTitle": "Editar métrica personalizada",
|
||
"edit": "Editar",
|
||
"delete": "Eliminar",
|
||
"deleteConfirmTitle": "¿Eliminar esta métrica personalizada?",
|
||
"deleteConfirmDescription": "La métrica se quita de tu lista. Los valores registrados se conservan.",
|
||
"deletedToast": "Métrica personalizada eliminada",
|
||
"deleteError": "No se pudo eliminar la métrica personalizada",
|
||
"showAllValues": "Ver todos los valores",
|
||
"emptyDescription": "Define tus propias mediciones para registrarlas y representarlas.",
|
||
"noValuesYet": "Aún sin valores",
|
||
"loadError": "No se pudieron cargar las métricas personalizadas",
|
||
"loadMore": "Cargar más valores",
|
||
"showingLatestOf": "Mostrando los {shown} más recientes de {total}",
|
||
"backToMeasurements": "Volver a las mediciones",
|
||
"form": {
|
||
"name": "Nombre",
|
||
"namePlaceholder": "p. ej. Fuerza de agarre matinal",
|
||
"unit": "Unidad",
|
||
"unitPlaceholder": "p. ej. kg",
|
||
"decimals": "Decimales",
|
||
"decimalsPlaceholder": "p. ej. 1",
|
||
"targetLow": "Objetivo mínimo",
|
||
"targetLowPlaceholder": "Límite inferior",
|
||
"targetHigh": "Objetivo máximo",
|
||
"targetHighPlaceholder": "Límite superior",
|
||
"description": "Descripción",
|
||
"descriptionPlaceholder": "Qué mide esto (opcional)",
|
||
"targetHint": "El rango objetivo es opcional y se dibuja como una banda en el gráfico.",
|
||
"correlationEnabled": "Usar en el análisis de correlaciones",
|
||
"correlationEnabledHint": "Añade esta métrica como canal diario de conducta con un límite. Está desactivado por defecto.",
|
||
"requiredError": "El nombre y la unidad son obligatorios",
|
||
"rangeOrderError": "El objetivo mínimo no puede superar al máximo",
|
||
"save": "Guardar",
|
||
"savedToast": "Métrica personalizada guardada",
|
||
"updatedToast": "Métrica personalizada actualizada",
|
||
"saveError": "No se pudo guardar la métrica personalizada"
|
||
},
|
||
"entry": {
|
||
"value": "Valor",
|
||
"measuredAt": "Fecha",
|
||
"note": "Nota",
|
||
"addDescription": "Registra un valor para esta métrica.",
|
||
"edit": "Editar valor",
|
||
"editTitle": "Editar valor",
|
||
"editDescription": "Actualiza el valor, la fecha o la nota.",
|
||
"delete": "Eliminar valor",
|
||
"deleteConfirmTitle": "¿Eliminar este valor?",
|
||
"deleteConfirmDescription": "Este valor se elimina de forma permanente.",
|
||
"valueError": "Introduce un valor numérico",
|
||
"timestampError": "Introduce una fecha válida",
|
||
"savedToast": "Valor registrado",
|
||
"saveError": "No se pudo registrar el valor",
|
||
"editedToast": "Valor actualizado",
|
||
"editError": "No se pudo actualizar el valor",
|
||
"deletedToast": "Valor eliminado",
|
||
"restoredToast": "Valor restaurado",
|
||
"restoreError": "No se pudo restaurar",
|
||
"deleteError": "No se pudo eliminar el valor"
|
||
},
|
||
"chart": {
|
||
"empty": "Sin valores en este intervalo",
|
||
"valueLabel": "Valor",
|
||
"range": {
|
||
"30": "30d",
|
||
"90": "90d",
|
||
"365": "1a",
|
||
"all": "Todo"
|
||
}
|
||
},
|
||
"detail": {
|
||
"title": "Métrica personalizada",
|
||
"genericDescription": "Una medición que registras. Añade valores para seguirla con el tiempo.",
|
||
"emptyTitle": "Aún sin valores",
|
||
"emptyDescription": "Añade tu primer valor para empezar a representar esta métrica.",
|
||
"valuesTitle": "{metric}: todos los valores",
|
||
"valuesDescription": "Todos los valores registrados de esta métrica.",
|
||
"backToMetric": "Volver a {metric}"
|
||
}
|
||
},
|
||
"nutrients": {
|
||
"names": {
|
||
"vitamin_a": "Vitamina A",
|
||
"thiamin": "Tiamina (B1)",
|
||
"riboflavin": "Riboflavina (B2)",
|
||
"niacin": "Niacina (B3)",
|
||
"pantothenic_acid": "Ácido pantoténico (B5)",
|
||
"vitamin_b6": "Vitamina B6",
|
||
"biotin": "Biotina (B7)",
|
||
"folate": "Folato (B9)",
|
||
"vitamin_b12": "Vitamina B12",
|
||
"vitamin_c": "Vitamina C",
|
||
"vitamin_d": "Vitamina D",
|
||
"vitamin_e": "Vitamina E",
|
||
"vitamin_k": "Vitamina K",
|
||
"calcium": "Calcio",
|
||
"iron": "Hierro",
|
||
"magnesium": "Magnesio",
|
||
"phosphorus": "Fósforo",
|
||
"zinc": "Zinc",
|
||
"copper": "Cobre",
|
||
"manganese": "Manganeso",
|
||
"selenium": "Selenio",
|
||
"chromium": "Cromo",
|
||
"molybdenum": "Molibdeno",
|
||
"iodine": "Yodo",
|
||
"water": "Agua",
|
||
"caffeine": "Cafeína",
|
||
"dha": "DHA (ácido graso omega-3)",
|
||
"epa": "EPA (ácido graso omega-3)"
|
||
},
|
||
"page": {
|
||
"title": "Ingesta de nutrientes",
|
||
"description": "Hidratación e ingesta de vitaminas/minerales sincronizadas desde la app de salud de tu teléfono, más entradas manuales de agua.",
|
||
"moduleOffDescription": "Activa el módulo de nutrientes para ver aquí la hidratación y la ingesta de vitaminas/minerales. Los datos sincronizados pasarán a formar parte del registro que el Coach puede leer.",
|
||
"moduleOffCta": "Activar nutrientes",
|
||
"emptyTitle": "Aún no hay datos de nutrientes",
|
||
"emptyDescription": "Los datos llegan desde la sincronización de la app de salud de tu teléfono o desde una entrada manual de agua.",
|
||
"loadError": "No se pudieron cargar tus datos de nutrientes",
|
||
"lastAttemptTitle": "Se recibió una sincronización, pero no se pudo guardar nada",
|
||
"lastAttemptAt": "Último intento: {date}",
|
||
"lastAttemptReason": {
|
||
"unitMismatch": "Los valores recibidos no coincidían con las unidades que esta app espera para estos nutrientes, así que no se pudieron guardar.",
|
||
"valueOutOfRange": "Las cantidades recibidas eran superiores a lo que esta app puede almacenar de forma plausible, así que no se pudieron guardar.",
|
||
"dayInvalid": "Las entradas llevaban una fecha que el servidor no pudo aceptar. Esto puede ocurrir cuando el reloj o la zona horaria del lado que envía los datos están mal configurados; merece la pena revisarlo.",
|
||
"upsertFailed": "Estas entradas llegaron al servidor, pero un problema de nuestro lado impidió guardarlas. No tienes que hacer nada.",
|
||
"unknown": "Estas entradas llegaron, pero no se pudieron guardar."
|
||
}
|
||
},
|
||
"hydration": {
|
||
"referenceMeta": "Ingesta de referencia {value} {unit}/día (EFSA)",
|
||
"loadError": "No se pudo cargar el agua."
|
||
},
|
||
"caffeine": {
|
||
"ceilingMeta": "Límite de seguridad {value} {unit}/día (EFSA)",
|
||
"loadError": "No se pudo cargar la cafeína."
|
||
},
|
||
"micronutrients": {
|
||
"title": "Vitaminas y minerales",
|
||
"rowMeta": "{days} de {window} días, ref. {value} {unit} (EFSA)",
|
||
"rowMetaNoRef": "{days} de {window} días",
|
||
"footer": "{tracked} de {total} micronutrientes registrados tienen datos en este periodo.",
|
||
"emptyTitle": "Aún no hay datos de micronutrientes sincronizados",
|
||
"loadError": "No se pudieron cargar tus datos de nutrientes",
|
||
"sourcePart": "{source} {value} {unit}",
|
||
"aboveUpperLimit": "Por encima del nivel máximo tolerable para adultos de {value} {unit} al día ({source}).",
|
||
"aboveUpperLimitSupplemental": "La parte de los suplementos supera el nivel máximo tolerable para adultos de {value} {unit} al día para suplementos ({source}).",
|
||
"upperLimitForm": {
|
||
"retinol": "El nivel solo se aplica a la vitamina A preformada (retinol): si la cantidad procede de betacaroteno, no se aplica.",
|
||
"folic_acid": "El nivel se aplica al ácido fólico de suplementos y alimentos enriquecidos, no al folato de los alimentos habituales.",
|
||
"magnesium_salts": "El nivel se aplica a las sales de magnesio fácilmente disociables de los suplementos, no al magnesio de los alimentos.",
|
||
"alpha_tocopherol": "El nivel está fijado para el alfa-tocoferol."
|
||
}
|
||
},
|
||
"sparseNote": "Un valor bajo aquí suele significar un registro escaso, no una deficiencia: los totales diarios de Apple Health reflejan lo que registraron tus apps, no la ingesta dietética total.",
|
||
"units": {
|
||
"IU": "UI"
|
||
},
|
||
"sources": {
|
||
"APPLE_HEALTH": "Sincronizado",
|
||
"MANUAL": "Introducido",
|
||
"SUPPLEMENT": "Suplementos"
|
||
}
|
||
},
|
||
"daily": {
|
||
"line": {
|
||
"allClear": "Hoy nada necesita tu atención.",
|
||
"scoreReady": "Tu puntuación de salud de hoy está lista."
|
||
},
|
||
"push": {
|
||
"title": "Tu resumen matinal",
|
||
"bodyProvisional": "{line}\nEl sueño de anoche aún no está disponible.",
|
||
"titleScore": "Puntuación de la mañana {score}",
|
||
"band": {
|
||
"green": "Hoy todo parece estable.",
|
||
"yellow": "Hoy vale la pena revisar algunas cosas.",
|
||
"red": "Hoy algunas áreas necesitan atención."
|
||
}
|
||
},
|
||
"item": {
|
||
"doseWindow": {
|
||
"title": "Medicación pendiente",
|
||
"body": "Pronto toca una dosis.",
|
||
"bodyNamed": "Pronto toca {name}.",
|
||
"overdueTitle": "Medicación atrasada",
|
||
"overdueBody": "Una dosis está atrasada.",
|
||
"overdueBodyNamed": "{name} está atrasado."
|
||
},
|
||
"preventiveCare": {
|
||
"title": "Revisión pendiente",
|
||
"body": "{label} está pendiente.",
|
||
"bodyManyNamed": "Pendientes: {labels}"
|
||
},
|
||
"syncIssue": {
|
||
"title": "La sincronización necesita atención",
|
||
"body": "{integration} no se está sincronizando: vuelve a conectarlo para mantener tus datos al día."
|
||
},
|
||
"coachCheckin": {
|
||
"title": "Es buen momento para revisar un plan",
|
||
"body": "Ha pasado alrededor de una semana desde que definiste este plan: consérvalo, ajústalo o déjalo ir. Sin presión.",
|
||
"bodyPlan": "Hace aproximadamente una semana te propusiste: «{plan}». Consérvalo, ajústalo o déjalo ir, sin presión.",
|
||
"adjustPrompt": "Me gustaría ajustar mi plan de seguimiento.",
|
||
"adjustPromptPlan": "Me gustaría ajustar este plan: «{plan}»"
|
||
},
|
||
"tensionWindow": {
|
||
"title": "Quizá algo de tensión hoy",
|
||
"body": {
|
||
"morning": "Tu frecuencia cardíaca estuvo por encima de tu valor en reposo durante un buen rato esta mañana mientras estabas en calma; posiblemente algo de tensión.",
|
||
"afternoon": "Tu frecuencia cardíaca estuvo por encima de tu valor en reposo durante un buen rato esta tarde mientras estabas en calma; posiblemente algo de tensión.",
|
||
"evening": "Tu frecuencia cardíaca estuvo por encima de tu valor en reposo durante un buen rato al anochecer mientras estabas en calma; posiblemente algo de tensión.",
|
||
"night": "Tu frecuencia cardíaca estuvo por encima de tu valor en reposo durante un buen rato por la noche mientras estabas en calma; posiblemente algo de tensión."
|
||
}
|
||
},
|
||
"ecgNewRecording": {
|
||
"title": "Nuevo registro de ECG",
|
||
"body": "Tu dispositivo registró un nuevo ECG: está listo para verlo.",
|
||
"bodyVerdict": "Tu dispositivo registró un nuevo ECG e informó: {verdict}.",
|
||
"verdict": {
|
||
"irregular": "un posible ritmo irregular",
|
||
"notDetected": "ningún ritmo irregular",
|
||
"inconclusive": "un resultado no concluyente"
|
||
}
|
||
},
|
||
"sameTimeBaseline": {
|
||
"title": {
|
||
"below": "Por detrás de tu ritmo habitual",
|
||
"above": "Por delante de tu ritmo habitual"
|
||
},
|
||
"body": {
|
||
"below": "A las {time} llevas {today} pasos. En un día habitual rondas los {typical} a esta hora.",
|
||
"above": "A las {time} llevas {today} pasos, por encima de los {typical} habituales a esta hora."
|
||
}
|
||
},
|
||
"upcomingVisit": {
|
||
"title": "Cita próxima",
|
||
"bodyToday": "{what}: hoy",
|
||
"bodyTomorrow": "{what}: mañana",
|
||
"bodyDayAfterTomorrow": "{what}: pasado mañana"
|
||
}
|
||
},
|
||
"action": {
|
||
"logDose": "Registrar dosis",
|
||
"reconnect": "Reconectar",
|
||
"viewCheckups": "Ver revisiones",
|
||
"viewAppointment": "Ver cita",
|
||
"viewAppointments": "Ver citas",
|
||
"checkinKeep": "Conservar",
|
||
"checkinAdjust": "Ajustar",
|
||
"checkinLetGo": "Dejarlo ir",
|
||
"viewMilestone": "Ver",
|
||
"viewPulse": "Ver pulso",
|
||
"viewEcg": "Ver registro",
|
||
"viewSteps": "Ver pasos"
|
||
},
|
||
"today": {
|
||
"scoreLabel": "Puntuación de salud",
|
||
"deltaVsBaseline": "{delta} frente a tu valor de referencia",
|
||
"deltaFlat": "En línea con tu valor de referencia",
|
||
"sleepPending": "El sueño de anoche aún no ha llegado; la lectura de hoy es provisional.",
|
||
"worthALook": "Merece un vistazo",
|
||
"allClear": "Hoy nada necesita tu atención.",
|
||
"ringLink": "Abrir detalles de {metric}",
|
||
"heading": "Hoy",
|
||
"steadyWeeksOne": "Estable desde hace {count} semana",
|
||
"steadyWeeksFew": "Estable desde hace {count} semanas",
|
||
"steadyWeeksOther": "Estable desde hace {count} semanas",
|
||
"valueWithUnit": "{value} {unit}",
|
||
"rangeWithUnit": "{low} a {high} {unit}",
|
||
"rangeAtThisTime": "{range} para esta hora del día",
|
||
"vital": {
|
||
"RESTING_HEART_RATE": "Frecuencia cardíaca en reposo",
|
||
"HEART_RATE_VARIABILITY": "Variabilidad de la frecuencia cardíaca",
|
||
"RESPIRATORY_RATE": "Frecuencia respiratoria",
|
||
"OXYGEN_SATURATION": "Saturación de oxígeno",
|
||
"BODY_TEMPERATURE": "Temperatura corporal",
|
||
"SKIN_TEMPERATURE": "Temperatura de la piel",
|
||
"BLOOD_PRESSURE_SYS": "Presión arterial sistólica",
|
||
"BLOOD_PRESSURE_DIA": "Presión arterial diastólica",
|
||
"BLOOD_GLUCOSE": "Glucosa en sangre",
|
||
"PULSE": "Pulso",
|
||
"WEIGHT": "Peso",
|
||
"generic": "Un signo vital"
|
||
},
|
||
"steadyAtLeastWeeksOne": "Estable desde hace al menos {count} semana",
|
||
"steadyAtLeastWeeksFew": "Estable desde hace al menos {count} semanas",
|
||
"steadyAtLeastWeeksOther": "Estable desde hace al menos {count} semanas"
|
||
},
|
||
"milestone": {
|
||
"metric": {
|
||
"restingHeartRate": "frecuencia cardíaca en reposo",
|
||
"heartRateVariability": "variabilidad de la frecuencia cardíaca",
|
||
"respiratoryRate": "frecuencia respiratoria",
|
||
"weight": "peso",
|
||
"generic": "este valor"
|
||
},
|
||
"record": {
|
||
"title": "Nuevo récord: {metric}",
|
||
"body": "Hoy has alcanzado tu mejor marca de {metric}. Anotado con calma, sin nada que hacer."
|
||
},
|
||
"returnToBaseline": {
|
||
"title": "De nuevo en tu rango: {metric}",
|
||
"body": "Tu {metric} ha vuelto a tu rango habitual. Fuera lo que fuera, ya pasó."
|
||
},
|
||
"sustainedInRange": {
|
||
"week1": {
|
||
"title": "Una semana en rango",
|
||
"body": "Tu {metric} lleva una semana dentro de tu rango habitual. Con buena estabilidad."
|
||
},
|
||
"week2": {
|
||
"title": "Dos semanas en rango",
|
||
"body": "Tu {metric} lleva dos semanas dentro de tu rango habitual. Tranquilo y constante."
|
||
},
|
||
"week3": {
|
||
"title": "Tres semanas en rango",
|
||
"body": "Tres semanas con tu {metric} dentro de tu rango habitual. Un buen tramo de calma."
|
||
},
|
||
"week4": {
|
||
"title": "Un mes en rango",
|
||
"body": "Un mes entero con tu {metric} dentro de tu rango habitual. Maravillosamente estable."
|
||
}
|
||
}
|
||
},
|
||
"lead": {
|
||
"vitalOutside": {
|
||
"above": "{metric} está en {value}, por encima de tu rango habitual de {range}.",
|
||
"below": "{metric} está en {value}, por debajo de tu rango habitual de {range}."
|
||
},
|
||
"vitalsOutside": {
|
||
"aboveOne": "{metric} está en {value}, por encima de tu rango habitual de {range}, y {count} signo vital más también está fuera de su rango.",
|
||
"aboveFew": "{metric} está en {value}, por encima de tu rango habitual de {range}, y {count} signos vitales más también están fuera de su rango.",
|
||
"aboveOther": "{metric} está en {value}, por encima de tu rango habitual de {range}, y {count} signos vitales más también están fuera de su rango.",
|
||
"belowOne": "{metric} está en {value}, por debajo de tu rango habitual de {range}, y {count} signo vital más también está fuera de su rango.",
|
||
"belowFew": "{metric} está en {value}, por debajo de tu rango habitual de {range}, y {count} signos vitales más también están fuera de su rango.",
|
||
"belowOther": "{metric} está en {value}, por debajo de tu rango habitual de {range}, y {count} signos vitales más también están fuera de su rango."
|
||
},
|
||
"sleep": {
|
||
"more": "Anoche dormiste {duration}, {diff} más de lo habitual.",
|
||
"less": "Anoche dormiste {duration}, {diff} menos de lo habitual.",
|
||
"usual": "Anoche dormiste {duration}, cerca de lo habitual.",
|
||
"plain": "Anoche dormiste {duration}."
|
||
},
|
||
"vitalsInRangeOne": "Tu último signo vital está dentro de su rango habitual.",
|
||
"vitalsInRangeFew": "Tus {count} últimos signos vitales están dentro de su rango habitual.",
|
||
"vitalsInRangeOther": "Tus {count} últimos signos vitales están dentro de su rango habitual.",
|
||
"vitalInRange": "{metric} está en {value}, dentro de tu rango habitual de {range}."
|
||
},
|
||
"todayFact": {
|
||
"restMode": {
|
||
"label": "Modo descanso",
|
||
"value": "Día {day}"
|
||
},
|
||
"medications": {
|
||
"label": "Medicamentos",
|
||
"value": "{taken} de {scheduled} tomados"
|
||
},
|
||
"appointment": {
|
||
"label": "Cita",
|
||
"today": "Hoy {time}, {what}",
|
||
"tomorrow": "Mañana {time}, {what}"
|
||
},
|
||
"sleep": {
|
||
"label": "Anoche",
|
||
"plain": "{duration}",
|
||
"usual": "{duration}, cerca de lo habitual",
|
||
"more": "{duration}, {diff} más de lo habitual",
|
||
"less": "{duration}, {diff} menos de lo habitual"
|
||
},
|
||
"vitals": {
|
||
"label": "Signos vitales",
|
||
"allInOne": "{count} revisado, en tu rango",
|
||
"allInFew": "{count} revisados, todos en tu rango",
|
||
"allInOther": "{count} revisados, todos en tu rango",
|
||
"oneOut": {
|
||
"above": "{metric} por encima de tu rango",
|
||
"below": "{metric} por debajo de tu rango"
|
||
},
|
||
"someOut": "{count} de {total} fuera de tu rango"
|
||
},
|
||
"cycle": {
|
||
"label": "Ciclo",
|
||
"value": "{phase}, día {day}",
|
||
"dayOnly": "Día {day}"
|
||
}
|
||
}
|
||
},
|
||
"reportSelection": {
|
||
"leafAnamnesis": "Perfil de salud",
|
||
"groupIdentity": "Datos personales",
|
||
"groupVitals": "Signos vitales",
|
||
"groupCardio": "Corazón y circulación",
|
||
"groupBody": "Medidas corporales",
|
||
"groupSleepRecovery": "Sueño y recuperación",
|
||
"groupActivity": "Actividad",
|
||
"groupMobility": "Movilidad y marcha",
|
||
"groupEnvironment": "Entorno",
|
||
"groupGlucose": "Glucosa en sangre",
|
||
"groupLabs": "Resultados de laboratorio",
|
||
"groupMedications": "Medicamentos",
|
||
"groupHistory": "Antecedentes y alergias",
|
||
"groupSensitive": "Datos sensibles",
|
||
"leafPatientIdentity": "Nombre, fecha de nacimiento, sexo, altura",
|
||
"leafInsurance": "Aseguradora y número de seguro",
|
||
"leafGlucosePanel": "Panel de glucosa (tiempo en rango, GMI, variabilidad)",
|
||
"leafLabResults": "Resultados de laboratorio",
|
||
"leafMedicationList": "Lista de medicamentos",
|
||
"leafMedicationAdministrations": "Cada dosis registrada",
|
||
"leafMedicationCompliance": "Adherencia",
|
||
"leafGlp1Therapy": "Terapia GLP-1 (historial de dosis, efectos secundarios)",
|
||
"leafAllergies": "Alergias e intolerancias",
|
||
"leafIllnessEpisodes": "Episodios de enfermedad",
|
||
"leafFamilyHistory": "Antecedentes familiares",
|
||
"leafMood": "Estado de ánimo",
|
||
"leafCycle": "Ciclo menstrual",
|
||
"templateStandard": "Informe médico estándar",
|
||
"applyStandard": "Aplicar {template}",
|
||
"standardHint": "Un clic rellena lo que suele necesitar una consulta general. Cada entrada sigue siendo editable.",
|
||
"groupCount": "{on}/{total}",
|
||
"groupDisclosure": "Mostrar las entradas de {group}",
|
||
"sensitiveHint": "Aquí nunca hay nada preseleccionado. Elige cada entrada tú mismo.",
|
||
"scopeNone": "Nada seleccionado todavía. Elige qué incluir o aplica el informe estándar.",
|
||
"scopeCount": "{count} entradas de {groups} áreas",
|
||
"scopeSensitive": "incl. {names}",
|
||
"leafVisits": "Visitas médicas",
|
||
"leafSurgicalHistory": "Antecedentes quirúrgicos",
|
||
"leafImmunizations": "Vacunas",
|
||
"leafEmergency": "Información de emergencia (grupo sanguíneo, contactos, voluntades)",
|
||
"leafMedicationEffect": "Cambio en torno al inicio de cada medicamento (requiere la lista de medicamentos)",
|
||
"leafWorkouts": "Entrenamientos (resumen por deporte)",
|
||
"leafHrvSdnn": "VFC (SDNN)"
|
||
},
|
||
"recordSharing": {
|
||
"banner": {
|
||
"viewing": "Estás en el historial de {name}",
|
||
"readOnly": "Puedes leerlo, no modificarlo.",
|
||
"canAdd": "Puedes añadir cosas, pero no cambiar ni borrar lo que hay.",
|
||
"leave": "Volver a mi historial"
|
||
},
|
||
"switcher": {
|
||
"label": "Abrir un historial",
|
||
"ownRecord": "Mi propio historial"
|
||
},
|
||
"switch": {
|
||
"failed": "No se pudo abrir ese historial. Inténtalo de nuevo.",
|
||
"noLongerAvailable": "Ese historial ya no está compartido contigo."
|
||
},
|
||
"unavailable": {
|
||
"title": "No forma parte del acceso compartido",
|
||
"description": "Se comparte el historial de salud en sí, incluidos los antecedentes que hay en Anamnesis. Los ajustes de la cuenta, los servicios conectados, las notificaciones y las funciones de IA siguen siendo de la persona propietaria de la cuenta.",
|
||
"leave": "Volver a mi historial"
|
||
},
|
||
"state": {
|
||
"active": "Activo",
|
||
"pending": "Pendiente de aceptación",
|
||
"expired": "Caducado",
|
||
"revoked": "Finalizado"
|
||
},
|
||
"row": {
|
||
"readOnly": "Puede leer el historial",
|
||
"canWrite": "Puede leer y añadir entradas",
|
||
"canManage": "Puede leer el historial, añadir entradas y cambiar o eliminar lo que hay en él",
|
||
"entireRecord": "Cubre todo el historial",
|
||
"sections": "Cubre: {sections}",
|
||
"noSections": "No cubre nada: este acceso no abre ninguna parte del historial",
|
||
"invited": "Invitado",
|
||
"accepted": "Aceptado",
|
||
"expires": "Caduca",
|
||
"lastUsed": "Última apertura",
|
||
"neverUsed": "nunca",
|
||
"endedByYou": "Lo finalizaste tú",
|
||
"endedByOwner": "Retirado",
|
||
"handedBack": "Devuelto",
|
||
"ended": "Finalizado"
|
||
},
|
||
"invite": {
|
||
"title": "Invitar a alguien",
|
||
"description": "No se comparte nada hasta que acepte.",
|
||
"needsAccount": "La persona necesita su propia cuenta de HealthLog en esta instancia y encontrará la invitación en Ajustes → Acceso compartido.",
|
||
"identifierLabel": "Usuario o correo electrónico",
|
||
"identifierPlaceholder": "El nombre con el que inicia sesión",
|
||
"identifierHint": "Necesita una cuenta en esta instancia. No se pueden enviar invitaciones a una dirección que no se haya registrado.",
|
||
"accessLegend": "Qué puede hacer",
|
||
"accessReadLabel": "Puede ver",
|
||
"accessReadCapability": "Puede leer todo lo que este historial comparte. No puede añadir ni cambiar nada.",
|
||
"accessWriteLabel": "Puede ver y añadir",
|
||
"accessWriteCapability": "Puede añadir a la ficha, pero no puede editar ni borrar nada, ni siquiera lo que añadió.",
|
||
"accessWriteDetail": "Puede añadir mediciones, resultados de laboratorio, un nuevo analito a seguir, una entrada de enfermedad, un efecto secundario de un medicamento y un medicamento nuevo, y marcar una dosis como tomada u omitida. No puede editar ni borrar nada, ni siquiera lo que añadió, ni aplazar uno de tus recordatorios. Solo tú puedes.",
|
||
"accessManageLabel": "Puede gestionar",
|
||
"accessManageCapability": "Puede añadir, cambiar y eliminar entradas, incluidas las que has escrito tú.",
|
||
"accessManageDetail": "También puede leer los análisis generados a partir de tu ficha. No puede cambiar tu inicio de sesión, tus ajustes de seguridad, tus servicios conectados ni quién más tiene acceso. Puedes terminarlo cuando quieras.",
|
||
"manageStepUpNote": "Solo se puede hacer en un navegador, y pide tu segundo factor si tienes uno.",
|
||
"scopeLegend": "Qué puede abrir",
|
||
"scopeAllLabel": "Todo el historial",
|
||
"scopeAllCapability": "Todas sus partes, tal y como ha funcionado siempre el uso compartido.",
|
||
"scopeSomeLabel": "Solo las secciones que elijas",
|
||
"scopeSomeCapability": "Todo lo que no elijas le queda cerrado.",
|
||
"scopeManageNote": "El acceso de gestión siempre cubre todo el historial.",
|
||
"scopeLeakNote": "Una sección puede mencionar el resto de tu salud en sus notas y en sus nombres. Compartir una sección comparte todo lo que hay escrito en ella.",
|
||
"scopeAggregateNote": "El resumen del panel, la puntuación de salud y el resumen diario solo aparecen cuando se comparte todo el historial.",
|
||
"scopeDocumentsNote": "Un documento puede contener cualquier cosa. Comparte esta sección solo si esa persona puede leerlo todo.",
|
||
"scopeEmptyHint": "Elige al menos una sección o vuelve a compartir todo el historial.",
|
||
"scopeChooseHint": "Elige si compartir todo el historial o solo algunas secciones.",
|
||
"expiresLabel": "El acceso termina el (opcional)",
|
||
"expiresHint": "Déjalo vacío para un acceso que dure hasta que alguien lo termine. Una fecha aquí se comprueba en cada petición, así que el acceso se detiene solo al final de ese día.",
|
||
"submit": "Enviar invitación",
|
||
"submitting": "Enviando…",
|
||
"sent": "Invitación enviada a {name}.",
|
||
"errorNoAccount": "No hay ninguna cuenta con ese nombre en esta instancia.",
|
||
"errorDuplicate": "Esa cuenta ya tiene acceso a tu historial.",
|
||
"errorSelf": "Esa es tu propia cuenta.",
|
||
"errorInvalid": "Introduce un usuario o una dirección de correo.",
|
||
"errorRateLimited": "Demasiadas invitaciones. Inténtalo más tarde.",
|
||
"errorFailed": "No se pudo enviar la invitación. Inténtalo de nuevo.",
|
||
"errorScope": "Esas secciones no se pueden compartir así. Elige al menos una sección o comparte todo el historial.",
|
||
"errorManageBrowserOnly": "El acceso de gestión solo se puede ofrecer desde un navegador.",
|
||
"errorStepUp": "Confirma tu segundo factor o tu llave de acceso y vuelve a intentarlo.",
|
||
"errorOffline": "Esto no llegó al servidor. Tu invitación sigue aquí: comprueba tu conexión e inténtalo de nuevo."
|
||
},
|
||
"given": {
|
||
"title": "Quién puede abrir mi historial",
|
||
"description": "El acceso finalizado sigue en la lista, para que siempre veas quién lo tuvo y cuándo.",
|
||
"emptyTitle": "Nadie más puede abrir tu historial",
|
||
"emptyDescription": "Invita a alguien arriba si quieres que pueda leerlo.",
|
||
"loadError": "No se pudo cargar la lista.",
|
||
"revoke": "Finalizar acceso",
|
||
"withdrawInvite": "Retirar",
|
||
"revokeTitle": "¿Finalizar el acceso de {name}?",
|
||
"revokeBody": "Pierde el acceso de inmediato, incluido cualquier navegador donde tenga tu historial abierto. Lo que ya ha visto no se puede recuperar. Puedes volver a invitarle cuando quieras.",
|
||
"revokeEntriesStay": "Lo que haya añadido se queda en tu historial, y puedes eliminarlo tú cuando quieras.",
|
||
"revokeAttribution": "Quién añadió qué sigue visible en tu vista de actividad durante {days} días.",
|
||
"revokeConfirm": "Finalizar acceso"
|
||
},
|
||
"received": {
|
||
"title": "Historiales que puedo abrir",
|
||
"description": "Una invitación no te da nada hasta que la aceptas.",
|
||
"emptyTitle": "Nadie ha compartido un historial contigo",
|
||
"emptyDescription": "Cuando alguien te invite, la invitación aparecerá aquí.",
|
||
"loadError": "No se pudo cargar la lista.",
|
||
"accept": "Aceptar",
|
||
"accepting": "Aceptando…",
|
||
"writeConsent": "Si aceptas, lo que añadas pasa a formar parte del historial de {name}. Después no podrás cambiar ni eliminar entradas; solo {name} puede.",
|
||
"manageConsent": "Si aceptas, podrás añadir cosas al historial de {name} y también cambiar o eliminar lo que ya hay, incluidas las entradas del propio {name}. Todo lo que hagas queda registrado con tu nombre en su vista de actividad, y {name} puede terminar tu acceso cuando quiera.",
|
||
"open": "Abrir",
|
||
"renounce": "Devolver",
|
||
"renounceTitle": "¿Devolver el historial de {name}?",
|
||
"renounceBody": "Pierdes el acceso de inmediato. Esa persona puede volver a invitarte cuando quiera.",
|
||
"renounceConfirm": "Devolver",
|
||
"detail": "Puedes devolver el acceso cuando quieras."
|
||
},
|
||
"activity": {
|
||
"title": "Cuándo se abrió mi historial",
|
||
"description": "Cada vez que otra persona abrió tu historial.",
|
||
"retention": "Esto abarca los últimos {days} días. Las entradas más antiguas se eliminan.",
|
||
"emptyTitle": "Nadie ha abierto tu historial",
|
||
"emptyDescription": "Las aperturas de otras personas aparecen aquí, una línea por persona y día.",
|
||
"loadError": "No se pudo cargar la actividad.",
|
||
"opened": "{name} abrió tu historial {count}×",
|
||
"acted": "{name} hizo un cambio en tu historial",
|
||
"deletedAccount": "Una cuenta eliminada"
|
||
},
|
||
"delegate": {
|
||
"addOnlyNote": "Puedes añadir cosas a este historial. Modificar o borrar entradas solo lo puede hacer {name}."
|
||
},
|
||
"lookingAfter": {
|
||
"kindShared": "Registro compartido",
|
||
"kindManaged": "Perfil administrado"
|
||
},
|
||
"managed": {
|
||
"title": "Perfiles de los que te ocupas",
|
||
"description": "Historiales de salud sin inicio de sesión propio.",
|
||
"explainer": "Un perfil administrado es un historial de salud para alguien que no inicia sesión, como una criatura o una persona a la que cuidas. No tiene inicio de sesión ni dirección de correo, y tú pasas a ser su primera persona responsable. Más adelante puedes añadir otras, y cualquiera de vosotras puede entrar en el historial para mantenerlo al día.",
|
||
"nameLabel": "Nombre",
|
||
"namePlaceholder": "El nombre con el que reconocerás este historial",
|
||
"nameHint": "Hasta 80 caracteres. Se muestra allá donde aparezca este historial.",
|
||
"nameRequired": "Dale un nombre al historial.",
|
||
"nameTooLong": "Ese nombre tiene más de 80 caracteres.",
|
||
"dobLabel": "Fecha de nacimiento (opcional)",
|
||
"dobHint": "Déjala vacía si prefieres no registrarla. No se deduce nada a partir de un año.",
|
||
"localeLabel": "Idioma de este historial",
|
||
"localeHint": "El idioma de los textos que se escriben en este historial. Tus propias pantallas siguen en tu idioma.",
|
||
"genderLabel": "Sexo (opcional)",
|
||
"genderHint": "Determina si el seguimiento del ciclo empieza activado en este registro. Se puede cambiar cuando quieras.",
|
||
"genderNone": "Sin especificar",
|
||
"genderMale": "Hombre",
|
||
"genderFemale": "Mujer",
|
||
"genderOther": "Otro",
|
||
"timezoneHint": "La zona en la que se miden los días de este historial.",
|
||
"timezoneInvalid": "Este navegador no conoce esa zona horaria.",
|
||
"create": "Crear perfil",
|
||
"creating": "Creando…",
|
||
"created": "{name} ya está listo. Puedes entrar en ese historial desde el menú de la cuenta.",
|
||
"errorStepUp": "Confirma tu segundo factor o tu llave de acceso y vuelve a intentarlo.",
|
||
"errorOffline": "Esto no llegó al servidor. No ha cambiado nada. Revisa tu conexión y vuelve a intentarlo.",
|
||
"errorInvalid": "El servidor rechazó esos datos. Revisa el nombre, la fecha y la zona horaria.",
|
||
"errorFailed": "No se pudo crear el perfil.",
|
||
"edit": "Editar",
|
||
"editSave": "Guardar cambios",
|
||
"editSaving": "Guardando…",
|
||
"editLoadError": "No se han podido cargar esos datos.",
|
||
"editErrorGone": "Ese registro ya no existe, o ya no te ocupas de él.",
|
||
"editErrorFailed": "No se han podido guardar los cambios.",
|
||
"delete": "Eliminar perfil",
|
||
"deleteTitle": "¿Eliminar {name}?",
|
||
"deleteBody": "Todo lo registrado para {name} desaparece con el perfil: mediciones, medicamentos, documentos y notas. Esto no se puede deshacer.",
|
||
"deleteGuardiansOne": "{count} persona se ocupa hoy de este historial y lo perderá.",
|
||
"deleteGuardiansFew": "{count} personas se ocupan hoy de este historial y lo perderán.",
|
||
"deleteGuardiansOther": "{count} personas se ocupan hoy de este historial y lo perderán.",
|
||
"deleteFloorNote": "También es la salida cuando eres la última persona responsable: puedes terminar el historial, pero no dejarlo sin nadie que se ocupe de él.",
|
||
"deleteConfirm": "Eliminar perfil",
|
||
"guardiansTitle": "Quién se ocupa de {name}",
|
||
"guardianYou": "(tú)",
|
||
"guardianSince": "Se ocupa de este historial desde el {date}",
|
||
"guardianPending": "Invitada el {date}, aún sin aceptar",
|
||
"guardianRemove": "Terminar acceso",
|
||
"guardianRemoveTitle": "¿Terminar el acceso de {name}?",
|
||
"guardianRemoveBody": "{name} dejará de poder abrir {profile}. Lo que haya registrado se queda en el historial.",
|
||
"guardianWithdrawBody": "Se retira la invitación a {name}. Nunca abrió {profile}, así que en el historial no cambia nada.",
|
||
"guardianRemoveConfirm": "Terminar acceso",
|
||
"soleGuardian": "Eres la única persona que se ocupa de {name}, así que aquí no hay ningún acceso que puedas terminar. Invita a alguien y espera a que acepte, devuelve tu propio acceso en «Historiales que puedo abrir», o elimina el perfil.",
|
||
"guardianInviteLabel": "Invitar a otra persona responsable",
|
||
"guardianInvite": "Enviar invitación",
|
||
"guardianInviting": "Enviando…",
|
||
"guardianInvited": "Invitación enviada a {name}.",
|
||
"guardianExpiresHint": "Opcional. El acceso termina al final de ese día en tu zona horaria.",
|
||
"guardianPendingNote": "Una persona invitada solo cuenta cuando acepta. Hasta entonces sigues siendo la última, y devolver tu propio acceso se sigue rechazando.",
|
||
"guardianErrorDuplicate": "Esa cuenta ya tiene acceso a este historial.",
|
||
"guardianErrorManagedInvitee": "Un perfil administrado no puede ocuparse de otro historial. Invita a una cuenta que inicie sesión.",
|
||
"guardianErrorNoAccount": "En esta instancia no hay ninguna cuenta con ese nombre o correo.",
|
||
"guardianErrorRateLimit": "Demasiadas invitaciones en la última hora. Espera un poco y vuelve a intentarlo.",
|
||
"guardianErrorFailed": "No se pudo enviar la invitación.",
|
||
"errorMfaRequired": "Esto necesita un segundo factor o una llave de acceso, y tu cuenta aún no tiene ninguno. Configura uno en Ajustes → Seguridad y vuelve a intentarlo.",
|
||
"rosterLoadError": "No se pudo cargar quién se ocupa de este historial.",
|
||
"errorRateLimit": "Demasiados perfiles creados en la última hora. Espera un poco y vuelve a intentarlo.",
|
||
"handover": {
|
||
"action": "Entregar",
|
||
"title": "Entregar a {name}",
|
||
"description": "Da a {name} un acceso propio. No se copia ni se mueve nada: el historial pasa a ser su cuenta.",
|
||
"guardiansLabel": "Acceso después de la entrega",
|
||
"guardiansHint": "Tu propuesta. {name} la ve y decide después de iniciar sesión.",
|
||
"access": {
|
||
"end": "Sin acceso",
|
||
"read": "Solo ver",
|
||
"manage": "Gestionar"
|
||
},
|
||
"expiryLabel": "Enlace válido durante",
|
||
"expiry1": "1 día",
|
||
"expiry7": "7 días",
|
||
"expiry14": "14 días",
|
||
"minorHint": "{name} tiene menos de 16 años. Vale la pena conservar el acceso de lectura y hablar el paso juntos.",
|
||
"irreversible": "En cuanto {name} use el enlace, la entrega no se puede deshacer. El historial será suyo y decidirá quién conserva el acceso.",
|
||
"afterwards": "{name} confirma personalmente el aviso y cualquier consentimiento de IA. Los recordatorios de este historial dejarán de llegarte.",
|
||
"replaceNote": "Crear un enlace nuevo retira el que está abierto.",
|
||
"create": "Crear enlace",
|
||
"creating": "Creando…",
|
||
"linkOnce": "Este enlace solo se muestra ahora. Dáselo a {name} en persona o por un canal de confianza, o deja que escanee el código.",
|
||
"qrAlt": "Código QR del enlace de entrega para {name}",
|
||
"urlLabel": "Enlace de entrega",
|
||
"copy": "Copiar",
|
||
"copied": "Enlace copiado",
|
||
"copyError": "No se pudo copiar el enlace. Selecciónalo y cópialo a mano.",
|
||
"linkExpires": "Válido hasta el {date}.",
|
||
"done": "Listo",
|
||
"pending": "Hay un enlace de entrega abierto hasta el {date}.",
|
||
"replace": "Nuevo enlace",
|
||
"revoke": "Retirar enlace",
|
||
"revoked": "Enlace retirado",
|
||
"revokeFailed": "No se pudo retirar el enlace. Vuelve a intentarlo.",
|
||
"errorFailed": "No se pudo crear el enlace de entrega.",
|
||
"errorRosterChanged": "Mientras tanto ha cambiado quién se ocupa del historial. Cierra esto y vuelve a abrirlo.",
|
||
"oidcOnly": "En este servidor no se puede entregar un perfil.",
|
||
"loadError": "No se pudo cargar el estado de la entrega.",
|
||
"entryHint": "Cuando {name} quiera llevar este historial por su cuenta.",
|
||
"methodSso": "{name} inicia sesión con el inicio de sesión único cuando usa el enlace.",
|
||
"methodBoth": "{name} puede elegir una contraseña o iniciar sesión con el inicio de sesión único."
|
||
}
|
||
},
|
||
"toast": {
|
||
"savedTo": "Guardado en el historial de {name}"
|
||
},
|
||
"activityVerb": {
|
||
"measurementCreate": "{name} añadió una medición",
|
||
"labResultCreate": "{name} añadió un resultado de laboratorio",
|
||
"allergyCreate": "{name} añadió una alergia",
|
||
"familyHistoryCreate": "{name} añadió un antecedente familiar",
|
||
"illnessEpisodeCreate": "{name} añadió una enfermedad",
|
||
"biomarkerCreate": "{name} añadió un biomarcador",
|
||
"customMetricEntryCreate": "{name} registró un valor propio",
|
||
"medicationSideEffectCreate": "{name} anotó un efecto secundario",
|
||
"medicationCreate": "{name} añadió un medicamento",
|
||
"medicationIntake": "{name} registró una dosis",
|
||
"medicationIntakeRefused": "{name} intentó cambiar una dosis o aplazar un recordatorio, y fue rechazado",
|
||
"measurementUpdate": "{name} cambió una medición",
|
||
"measurementDelete": "{name} eliminó una medición",
|
||
"measurementDeleteBulk": "{name} eliminó varias mediciones a la vez",
|
||
"measurementRestore": "{name} restauró una medición",
|
||
"measurementReminderCreate": "{name} añadió un recordatorio de medición",
|
||
"measurementReminderUpdate": "{name} cambió un recordatorio de medición",
|
||
"measurementReminderDelete": "{name} eliminó un recordatorio de medición",
|
||
"measurementReminderComplete": "{name} completó un recordatorio de medición",
|
||
"measurementReminderSatisfy": "{name} cerró un recordatorio de medición",
|
||
"measurementReminderSkip": "{name} omitió un recordatorio de medición",
|
||
"measurementReminderSnooze": "{name} aplazó un recordatorio de medición",
|
||
"labResultUpdate": "{name} cambió un resultado de laboratorio",
|
||
"labResultDelete": "{name} eliminó un resultado de laboratorio",
|
||
"labResultRestore": "{name} restauró un resultado de laboratorio",
|
||
"biomarkerUpdate": "{name} cambió un biomarcador",
|
||
"biomarkerDelete": "{name} eliminó un biomarcador",
|
||
"allergyUpdate": "{name} cambió una alergia",
|
||
"allergyDelete": "{name} eliminó una alergia",
|
||
"familyHistoryUpdate": "{name} cambió un antecedente familiar",
|
||
"familyHistoryDelete": "{name} eliminó un antecedente familiar",
|
||
"illnessEpisodeUpdate": "{name} cambió una enfermedad",
|
||
"illnessEpisodeDelete": "{name} eliminó una enfermedad",
|
||
"illnessEpisodeResolve": "{name} marcó una enfermedad como terminada",
|
||
"illnessEpisodeRestore": "{name} restauró una enfermedad",
|
||
"encounterVisitCreate": "{name} añadió una visita médica",
|
||
"encounterVisitUpdate": "{name} editó una visita médica",
|
||
"encounterVisitDelete": "{name} eliminó una visita médica",
|
||
"encounterVisitRestore": "{name} restauró una visita médica",
|
||
"vaccinationRecordCreate": "{name} añadió una vacuna",
|
||
"vaccinationRecordUpdate": "{name} editó una vacuna",
|
||
"vaccinationRecordDelete": "{name} eliminó una vacuna",
|
||
"vaccinationRecordRestore": "{name} restauró una vacuna",
|
||
"practitionerContactCreate": "{name} añadió una consulta a la agenda",
|
||
"practitionerContactUpdate": "{name} editó una entrada de la agenda",
|
||
"practitionerContactDelete": "{name} eliminó una entrada de la agenda",
|
||
"practitionerContactRestore": "{name} restauró una entrada de la agenda",
|
||
"illnessDayLogUpsert": "{name} registró un día de enfermedad",
|
||
"medicationUpdate": "{name} cambió un medicamento",
|
||
"medicationDelete": "{name} eliminó un medicamento",
|
||
"medicationGlp1Update": "{name} cambió un tratamiento con GLP-1",
|
||
"medicationScheduleCreate": "{name} añadió una pauta de dosificación",
|
||
"medicationScheduleUpdate": "{name} cambió una pauta de dosificación",
|
||
"medicationScheduleDelete": "{name} eliminó una pauta de dosificación",
|
||
"medicationInventoryCreate": "{name} añadió un envase de medicamento",
|
||
"medicationInventoryUpdate": "{name} cambió un envase de medicamento",
|
||
"medicationInventoryDelete": "{name} eliminó un envase de medicamento",
|
||
"medicationSideEffectDelete": "{name} eliminó un efecto secundario",
|
||
"medicationIntakeUpdate": "{name} cambió una dosis",
|
||
"medicationIntakeDelete": "{name} eliminó una dosis",
|
||
"medicationIntakeBulkDelete": "{name} eliminó varias dosis a la vez",
|
||
"medicationIntakePurge": "{name} borró todo el historial de dosis de un medicamento",
|
||
"medicationIntakeImport": "{name} inició una importación de dosis de un medicamento",
|
||
"medicationIntakeHistoryImport": "{name} inició una importación del historial de dosis",
|
||
"moodEntryCreate": "{name} añadió una entrada de ánimo",
|
||
"moodEntryUpdate": "{name} cambió una entrada de ánimo",
|
||
"moodEntryDelete": "{name} eliminó una entrada de ánimo",
|
||
"moodDeleteBulk": "{name} eliminó varias entradas de ánimo a la vez",
|
||
"moodRestore": "{name} restauró una entrada de ánimo",
|
||
"mentalHealthCreate": "{name} registró el resultado de un cuestionario",
|
||
"cycleDelete": "{name} eliminó un ciclo",
|
||
"cycleDayLogUpsert": "{name} registró un día del ciclo",
|
||
"cycleDayLogUpdate": "{name} cambió un día del ciclo",
|
||
"cycleDayLogDelete": "{name} eliminó un día del ciclo",
|
||
"cyclePeriodBoundary": "{name} cambió el inicio o el final de una regla",
|
||
"cycleSymptomCreate": "{name} añadió un síntoma del ciclo",
|
||
"nutrientWaterWrite": "{name} registró la ingesta de agua",
|
||
"healthRecordExport": "{name} exportó el historial",
|
||
"rejectedMeasurementQuery": "{name} envió una búsqueda de mediciones que este historial no pudo leer",
|
||
"rejectedDoseQuery": "{name} envió una búsqueda de dosis que este historial no pudo leer",
|
||
"rejectedMoodQuery": "{name} envió una búsqueda de ánimo que este historial no pudo leer",
|
||
"rejectedMeasurementCreate": "{name} intentó añadir una medición y fue rechazado",
|
||
"rejectedMeasurementBatch": "{name} intentó añadir varias mediciones y fue rechazado",
|
||
"rejectedMeasurementUpdate": "{name} intentó cambiar una medición y fue rechazado",
|
||
"rejectedLabCreate": "{name} intentó añadir un resultado de laboratorio y fue rechazado",
|
||
"rejectedLabUpdate": "{name} intentó cambiar un resultado de laboratorio y fue rechazado",
|
||
"rejectedBiomarkerCreate": "{name} intentó añadir un biomarcador y fue rechazado",
|
||
"rejectedBiomarkerUpdate": "{name} intentó cambiar un biomarcador y fue rechazado",
|
||
"rejectedReminderCreate": "{name} intentó añadir un recordatorio de medición y fue rechazado",
|
||
"rejectedReminderUpdate": "{name} intentó cambiar un recordatorio de medición y fue rechazado",
|
||
"rejectedMoodCreate": "{name} intentó añadir una entrada de ánimo y fue rechazado",
|
||
"rejectedMoodUpdate": "{name} intentó cambiar una entrada de ánimo y fue rechazado",
|
||
"rejectedDoseCreate": "{name} intentó registrar una dosis y fue rechazado",
|
||
"rejectedDoseUpdate": "{name} intentó cambiar una dosis y fue rechazado",
|
||
"rejectedDoseImport": "{name} intentó importar dosis y fue rechazado",
|
||
"rejectedTrackedValue": "{name} intentó registrar un valor propio y fue rechazado",
|
||
"deniedDoseImport": "Una importación de dosis iniciada por {name} no se pudo poner en cola",
|
||
"anamnesisFactCreate": "{name} añadió un dato de antecedentes de salud",
|
||
"customMetricCreate": "{name} añadió un tipo de valor propio",
|
||
"customMetricUpdate": "{name} cambió un tipo de valor propio",
|
||
"customMetricDelete": "{name} eliminó un tipo de valor propio",
|
||
"documentStore": "{name} añadió un documento",
|
||
"documentUpdate": "{name} cambió un documento",
|
||
"documentDiscard": "{name} descartó un documento",
|
||
"medicationIntakeImportFinished": "La importación de dosis que inició {name} ha terminado",
|
||
"medicationOneShotReconciled": "Un medicamento de una sola toma se abrió o se cerró tras una dosis que registró {name}",
|
||
"vaccinationBoosterPlanned": "{name} planificó un refuerzo",
|
||
"medicationCategoryCreate": "{name} añadió una categoría de medicamentos",
|
||
"symptomEventCreate": "{name} registró un síntoma",
|
||
"symptomEventUpdate": "{name} editó una entrada de síntoma",
|
||
"symptomEventDelete": "{name} eliminó una entrada de síntoma",
|
||
"symptomDefinitionCreate": "{name} añadió un síntoma",
|
||
"symptomDefinitionUpdate": "{name} cambió un síntoma",
|
||
"symptomDefinitionDelete": "{name} quitó un síntoma",
|
||
"customVaccineCreate": "{name} añadió una vacuna propia",
|
||
"customVaccineUpdate": "{name} editó una vacuna propia",
|
||
"customVaccineDelete": "{name} quitó una vacuna propia",
|
||
"lifeEventCreate": "{name} añadió un acontecimiento vital",
|
||
"lifeEventUpdate": "{name} cambió un acontecimiento vital",
|
||
"lifeEventDelete": "{name} eliminó un acontecimiento vital",
|
||
"biomarkerMerge": "{name} combinó biomarcadores",
|
||
"medicationIngredientsUpdate": "{name} cambió la composición de un suplemento",
|
||
"auditCCreate": "{name} respondió el cuestionario AUDIT-C",
|
||
"auditCDelete": "{name} eliminó una entrada del AUDIT-C"
|
||
},
|
||
"section": {
|
||
"measurements": {
|
||
"label": "Mediciones",
|
||
"detail": "Peso, tensión arterial, pulso, glucosa, sueño, entrenamientos y los valores que sigues."
|
||
},
|
||
"medications": {
|
||
"label": "Medicamentos",
|
||
"detail": "La lista de medicamentos, sus pautas, las dosis tomadas, los efectos secundarios y las existencias."
|
||
},
|
||
"labs": {
|
||
"label": "Resultados de laboratorio",
|
||
"detail": "Los resultados de laboratorio y la lista de analitos que hay detrás."
|
||
},
|
||
"profile": {
|
||
"label": "Antecedentes de salud",
|
||
"detail": "Alergias, antecedentes familiares, los datos de tu perfil de salud, tus visitas médicas y consultas, y tu cartilla de vacunación."
|
||
},
|
||
"illness": {
|
||
"label": "Enfermedades",
|
||
"detail": "Los episodios de enfermedad y los registros diarios asociados."
|
||
},
|
||
"mind": {
|
||
"label": "Ánimo y bienestar mental",
|
||
"detail": "Las entradas de ánimo y el historial de los cuestionarios de salud mental. Un cuestionario completado también registra su puntuación total como una medición."
|
||
},
|
||
"cycle": {
|
||
"label": "Ciclo",
|
||
"detail": "El seguimiento del ciclo."
|
||
},
|
||
"documents": {
|
||
"label": "Documentos",
|
||
"detail": "Todo lo que está guardado en el archivo de documentos."
|
||
}
|
||
},
|
||
"actionError": {
|
||
"retry": "Inténtalo de nuevo",
|
||
"offline": "Esto no llegó al servidor. No ha cambiado nada: comprueba tu conexión e inténtalo de nuevo.",
|
||
"rateLimited": "Demasiados intentos seguidos. Espera un minuto e inténtalo de nuevo.",
|
||
"acceptExpired": "Esa invitación ha caducado. Pide una nueva.",
|
||
"acceptWithdrawn": "Esa invitación fue retirada.",
|
||
"acceptNotPending": "Esa invitación ya se aceptó.",
|
||
"acceptNotFound": "Esa invitación ya no existe.",
|
||
"acceptFailed": "No se pudo aceptar la invitación.",
|
||
"lastGuardian": "Esta es la única persona que cuida de ese perfil, así que este acceso todavía no puede terminar. Añade otra persona responsable primero, o elimina el perfil.",
|
||
"alreadyEnded": "Ese acceso ya ha terminado.",
|
||
"notFound": "Ese acceso ya no existe.",
|
||
"revokeFailed": "No se pudo terminar el acceso.",
|
||
"renounceFailed": "No se pudo devolver el acceso.",
|
||
"profileNotFound": "Ese perfil ya no está. Puede que se haya eliminado, o que tu acceso haya terminado.",
|
||
"deleteProfileFailed": "No se pudo eliminar el perfil.",
|
||
"removeGuardianFailed": "No se pudo terminar ese acceso."
|
||
},
|
||
"anamnesis": {
|
||
"relativeNote": "Una entrada de antecedentes familiares describe a los familiares de esta persona. Añádela solo si querría que quedara registrada aquí."
|
||
},
|
||
"handoverDecision": {
|
||
"title": "Quién conserva el acceso a tu historial",
|
||
"description": "Decide qué pueden hacer a partir de ahora las personas que llevaron tu historial.",
|
||
"proposed": "Propuesto: {access}",
|
||
"settled": "Ya cambiado en Acceso compartido",
|
||
"empty": "Nadie más tenía acceso a tu historial.",
|
||
"later": "Puedes cambiarlo cuando quieras en Ajustes, Acceso compartido.",
|
||
"save": "Confirmar",
|
||
"saving": "Guardando…",
|
||
"decideLater": "Más tarde",
|
||
"errorFailed": "No se pudo guardar tu decisión. Vuelve a intentarlo.",
|
||
"loadError": "No se pudo cargar quién llevaba tu historial.",
|
||
"notificationsTitle": "Configura tus propios recordatorios",
|
||
"notificationsBody": "Hasta ahora, los recordatorios de este historial llegaban a las personas que lo llevaban. A partir de ahora te llegan a ti, en cuanto añadas un canal de notificaciones.",
|
||
"notificationsAction": "Abrir notificaciones"
|
||
}
|
||
},
|
||
"encounters": {
|
||
"kind": {
|
||
"routine": "Visita de rutina",
|
||
"acute": "Visita por urgencia",
|
||
"specialist": "Visita al especialista",
|
||
"preventive": "Revisión preventiva",
|
||
"emergency": "Urgencia",
|
||
"hospital": "Hospital",
|
||
"therapy": "Sesión de terapia",
|
||
"other": "Cita médica",
|
||
"procedure": "Procedimiento o cirugía"
|
||
},
|
||
"laterality": {
|
||
"left": "Izquierda",
|
||
"right": "Derecha",
|
||
"both": "Ambos lados",
|
||
"none": "Sin indicar"
|
||
},
|
||
"bodySiteWithSide": "{site} ({side})",
|
||
"sectionTitle": "Citas",
|
||
"sectionDescription": "Visitas médicas y citas reservadas en un solo sitio.",
|
||
"add": "Cita",
|
||
"loadError": "No se pudieron cargar las citas.",
|
||
"emptyTitle": "Todavía no hay ninguna cita",
|
||
"emptyDescription": "Basta con una fecha. Todo lo demás es opcional.",
|
||
"upcomingHeading": "Próximas",
|
||
"pastHeading": "Pasadas",
|
||
"createTitle": "Registrar una cita",
|
||
"editTitle": "Editar la cita",
|
||
"formDescription": "Solo la fecha es obligatoria.",
|
||
"created": "Cita guardada",
|
||
"updated": "Cita actualizada",
|
||
"saveFailed": "No se pudo guardar la cita.",
|
||
"checkupNotClosed": "Cita guardada. La revisión sigue pendiente: tu acceso no lo permite.",
|
||
"status": {
|
||
"planned": "Prevista",
|
||
"done": "Realizada",
|
||
"cancelled": "Cancelada",
|
||
"noShow": "No acudida"
|
||
},
|
||
"card": {
|
||
"documentCount": "documentos vinculados",
|
||
"labCount": "resultados de laboratorio vinculados",
|
||
"conditionCount": "enfermedades vinculadas"
|
||
},
|
||
"form": {
|
||
"date": "Fecha y hora",
|
||
"dateDerivesStatusHint": "Una fecha futura es una cita reservada.",
|
||
"status": "Estado",
|
||
"practitioner": "Consulta o médico",
|
||
"practitionerHint": "Opcional: puedes añadir el nombre más tarde.",
|
||
"practitionerNone": "Sin indicar",
|
||
"practitionerSearch": "Buscar nombre o consulta",
|
||
"practitionerNoMatch": "No se encontró ninguna entrada.",
|
||
"practitionerAdd": "Añadir nueva",
|
||
"practitionerClear": "Quitar la selección",
|
||
"kind": "Tipo",
|
||
"reason": "Motivo",
|
||
"outcome": "Resultado",
|
||
"outcomeReveal": "Añadir un resultado",
|
||
"bodySite": "Zona del cuerpo",
|
||
"bodySiteHint": "Por ejemplo, rodilla o vesícula.",
|
||
"laterality": "Lado",
|
||
"linkDocuments": "Documentos",
|
||
"linkLabResults": "Resultados de laboratorio",
|
||
"linkConditions": "Enfermedades",
|
||
"linkNothingToOffer": "Todavía no hay nada que vincular."
|
||
},
|
||
"deleteTitle": "¿Eliminar esta cita?",
|
||
"deleteDescription": "Se elimina la entrada. Si la cita está reservada, su recordatorio también desaparece.",
|
||
"deleteFailed": "No se pudo eliminar la cita.",
|
||
"suggestion": {
|
||
"single": "¿Pertenece a esta cita?",
|
||
"choose": "¿A qué cita pertenece?"
|
||
},
|
||
"episodeCard": {
|
||
"title": "Citas relacionadas",
|
||
"emptyLine": "Todavía no hay ninguna cita vinculada a esta enfermedad.",
|
||
"add": "Añadir una cita"
|
||
},
|
||
"dashboard": {
|
||
"nextVisit": "Próxima cita: {what} el {when}"
|
||
},
|
||
"procedures": {
|
||
"title": "Procedimientos y cirugías",
|
||
"description": "Todos los procedimientos y cirugías que has tenido, del más reciente al más antiguo.",
|
||
"add": "Procedimiento",
|
||
"searchLabel": "Filtrar por zona del cuerpo",
|
||
"searchPlaceholder": "Por ejemplo, rodilla",
|
||
"sitesLabel": "Zonas del cuerpo",
|
||
"allSites": "Todas",
|
||
"count": "{shown} de {total}",
|
||
"emptyTitle": "Aún no hay ningún procedimiento registrado",
|
||
"emptyDescription": "Registra una cita del tipo Procedimiento o cirugía, o cambia una cita existente a ese tipo.",
|
||
"noMatchTitle": "Nada coincide con este filtro",
|
||
"clearFilter": "Quitar filtro",
|
||
"loadError": "No se pudieron cargar los procedimientos."
|
||
},
|
||
"preparation": {
|
||
"practitioner": "Desde tu última visita con {name} el {date}",
|
||
"specialty": "Desde tu última visita ({specialty}) el {date}",
|
||
"kind": "Desde tu última visita del mismo tipo ({kind}) el {date}",
|
||
"default": "Los últimos {days} días",
|
||
"defaultReason": "No hay ninguna visita anterior con la misma consulta, especialidad o tipo."
|
||
}
|
||
},
|
||
"checkups": {
|
||
"viewSwitchLabel": "Mostrar revisiones, citas, procedimientos o zonas del cuerpo",
|
||
"tabVorsorge": "Revisiones",
|
||
"tabVisits": "Citas",
|
||
"tabProcedures": "Procedimientos",
|
||
"tabBodySites": "Zonas del cuerpo"
|
||
},
|
||
"practitioners": {
|
||
"title": "Consultas y médicos",
|
||
"description": "Tu propia agenda: escribe una consulta una vez y elígela en todas partes.",
|
||
"linkLabel": "Agenda",
|
||
"searchPlaceholder": "Buscar nombre, consulta o especialidad",
|
||
"loadError": "No se pudo cargar la agenda.",
|
||
"emptyTitle": "Todavía no hay entradas",
|
||
"emptyDescription": "Añade una consulta para poder elegirla al registrar una cita.",
|
||
"noMatchTitle": "Sin coincidencias",
|
||
"noMatchDescription": "Ninguna entrada coincide con esta búsqueda.",
|
||
"createTitle": "Añadir una entrada",
|
||
"editTitle": "Editar la entrada",
|
||
"formDescription": "Solo el nombre es obligatorio.",
|
||
"name": "Nombre",
|
||
"specialty": "Especialidad",
|
||
"practice": "Consulta",
|
||
"location": "Dirección",
|
||
"phone": "Teléfono",
|
||
"note": "Nota",
|
||
"noteHint": "Se guarda cifrada.",
|
||
"saveFailed": "No se pudo guardar la entrada.",
|
||
"deleteTitle": "¿Eliminar esta entrada?",
|
||
"deleteDescription": "Tus citas anteriores se mantienen y conservan este nombre.",
|
||
"deleteFailed": "No se pudo eliminar la entrada.",
|
||
"noSpecialtyGroup": "Sin especialidad"
|
||
},
|
||
"links": {
|
||
"picker": {
|
||
"add": "Añadir",
|
||
"done": "Listo",
|
||
"selectAll": "Seleccionar todo",
|
||
"searchPlaceholder": "Buscar",
|
||
"searchNoMatch": "Sin coincidencias",
|
||
"suggested": "En torno a esta fecha",
|
||
"loadError": "No se pudo cargar la lista.",
|
||
"removeNamed": "Quitar {name}",
|
||
"removed": "Se desvinculó {name}",
|
||
"linked": "Vinculados",
|
||
"loadNewer": "Cargar más recientes",
|
||
"loadOlder": "Cargar anteriores",
|
||
"period": {
|
||
"showing": "Mostrando {period}"
|
||
}
|
||
},
|
||
"related": {
|
||
"title": "Relacionado",
|
||
"kind": {
|
||
"labResult": "Resultado de laboratorio",
|
||
"encounter": "Consulta",
|
||
"document": "Documento",
|
||
"conditionEpisode": "Enfermedad",
|
||
"medication": "Medicamento",
|
||
"vaccination": "Vacuna"
|
||
},
|
||
"via": {
|
||
"encounter": "a través de una consulta",
|
||
"efficacyTarget": "a través del objetivo de eficacia"
|
||
},
|
||
"pick": {
|
||
"conditionEpisode": "Enfermedades",
|
||
"document": "Documentos",
|
||
"encounter": "Consultas",
|
||
"medication": "Medicamentos",
|
||
"vaccination": "Vacunas"
|
||
},
|
||
"nothingToOffer": "Todavía no hay nada que vincular.",
|
||
"saveError": "No se pudo guardar el vínculo."
|
||
}
|
||
},
|
||
"bodySites": {
|
||
"title": "Zonas del cuerpo",
|
||
"description": "Procedimientos y enfermedades según la zona del cuerpo.",
|
||
"loadError": "No se pudieron cargar las zonas del cuerpo.",
|
||
"emptyTitle": "Aún no hay ninguna zona del cuerpo registrada",
|
||
"emptyDescription": "Añade una zona del cuerpo a un procedimiento o a una enfermedad y aparecerá aquí.",
|
||
"sitesLabel": "Zonas del cuerpo",
|
||
"sidesLabel": "Lado",
|
||
"allSides": "Todos los lados",
|
||
"pickPrompt": "Elige una zona para ver lo que hay registrado en ella.",
|
||
"noMatchTitle": "No hay nada registrado en este lado",
|
||
"visitsTitle": "Procedimientos y citas",
|
||
"conditionsTitle": "Enfermedades",
|
||
"hiddenDocument": "Un documento que no se ha compartido contigo",
|
||
"hiddenLabResult": "Un resultado de laboratorio que no se ha compartido contigo",
|
||
"hiddenCondition": "Una enfermedad que no se ha compartido contigo",
|
||
"hiddenVisit": "Una cita que no se ha compartido contigo",
|
||
"linkedLabel": "Registros vinculados",
|
||
"conditionSince": "Desde el {onset}",
|
||
"conditionDates": "Del {onset} al {resolved}"
|
||
},
|
||
"aiRuns": {
|
||
"backgroundDocument": "Leyendo en segundo plano. Puedes salir de esta página; el resultado se guarda con el documento.",
|
||
"backgroundScan": "Leyendo en segundo plano. Con un modelo lento puede tardar unos minutos.",
|
||
"waitingForWorker": "Esperando al proceso en segundo plano. Si no cambia, puede que el worker del servidor no esté en marcha.",
|
||
"errorWorkerUnavailable": "El proceso en segundo plano no está disponible ahora mismo. Inténtalo de nuevo en un momento o pide a quien administra el servidor que lo revise.",
|
||
"errorTimedOut": "La lectura tardó más de lo que permite tu tiempo de respuesta de IA. Inténtalo de nuevo o aumenta el tiempo de respuesta en los ajustes de IA."
|
||
},
|
||
"symptoms": {
|
||
"add": "Nuevo síntoma",
|
||
"nameLabel": "Nombre",
|
||
"namePlaceholder": "p. ej. Aura",
|
||
"iconLabel": "Icono",
|
||
"icons": {
|
||
"Tag": "Etiqueta",
|
||
"Activity": "Actividad",
|
||
"Heart": "Corazón",
|
||
"HeartPulse": "Latido",
|
||
"Brain": "Cerebro",
|
||
"Zap": "Rayo",
|
||
"Flame": "Llama",
|
||
"Snowflake": "Copo de nieve",
|
||
"Droplet": "Gota",
|
||
"CircleDot": "Punto",
|
||
"BatteryLow": "Batería baja",
|
||
"MoonStar": "Luna y estrella",
|
||
"PersonStanding": "Persona",
|
||
"Drama": "Máscaras",
|
||
"Frown": "Cara triste",
|
||
"Cookie": "Galleta",
|
||
"Soup": "Sopa",
|
||
"Pill": "Pastilla",
|
||
"Thermometer": "Termómetro",
|
||
"Stethoscope": "Estetoscopio"
|
||
},
|
||
"limitReached": "Tienes 8 síntomas. Oculta uno para añadir otro.",
|
||
"saveError": "No se pudo guardar el síntoma. Inténtalo de nuevo.",
|
||
"nameRequired": "Ponle un nombre al síntoma.",
|
||
"unreadableLabel": "Síntoma ilegible",
|
||
"intensityPill": "{value}/10",
|
||
"entry": {
|
||
"sheetDescription": "Uno de tus propios síntomas, su intensidad y cuándo.",
|
||
"symptom": "Síntoma",
|
||
"symptomRequired": "Elige un síntoma.",
|
||
"intensity": "Intensidad",
|
||
"intensityRequired": "Indica lo fuerte que fue.",
|
||
"intensityUnset": "Sin indicar",
|
||
"anchorLow": "Ninguna",
|
||
"anchorHigh": "La peor imaginable",
|
||
"intensityValueText": "{value} de {max} ({low} a {high})",
|
||
"when": "Cuándo",
|
||
"during": "Durante una enfermedad",
|
||
"duringNone": "Sin vincular",
|
||
"note": "Nota",
|
||
"notePlaceholder": "¿Qué más estaba pasando?",
|
||
"reset": "Restablecer formulario",
|
||
"emptyHint": "Añade tu primer síntoma, por ejemplo aura o dolor de cabeza.",
|
||
"emptyHintNoManage": "Este registro aún no tiene síntomas configurados.",
|
||
"limitHint": "Hasta {limit} síntomas. Oculta uno en la página de enfermedades para añadir otro."
|
||
},
|
||
"section": {
|
||
"title": "Tus síntomas",
|
||
"log": "Registrar",
|
||
"loadError": "No se pudieron cargar tus síntomas.",
|
||
"summaryOne": "Una vez en 30 días, {max}/10, la última {date}",
|
||
"summaryFew": "{count} veces en 30 días, hasta {max}/10, la última {date}",
|
||
"summaryOther": "{count} veces en 30 días, hasta {max}/10, la última {date}",
|
||
"summaryNoneRecent": "No en los últimos 30 días, la última {date}",
|
||
"summaryNever": "Aún sin registrar",
|
||
"menuLabel": "Opciones de {symptom}",
|
||
"eventMenuLabel": "Opciones de esta entrada de {symptom}",
|
||
"hide": "Ocultar",
|
||
"show": "Mostrar de nuevo",
|
||
"deleteTitle": "¿Eliminar síntoma?",
|
||
"deleteBody": "Se eliminarán «{symptom}» y todas sus entradas. Para conservar el historial, ocúltalo.",
|
||
"deleteEventTitle": "¿Eliminar entrada?",
|
||
"deleteEventBody": "Esta entrada se eliminará.",
|
||
"hiddenOne": "Ocultos (1)",
|
||
"hiddenFew": "Ocultos ({count})",
|
||
"hiddenOther": "Ocultos ({count})",
|
||
"recent": "Últimos 30 días",
|
||
"recentEmpty": "Nada registrado en los últimos 30 días.",
|
||
"editEventTitle": "Editar {symptom}",
|
||
"editSymptomTitle": "Editar síntoma"
|
||
},
|
||
"episode": {
|
||
"title": "Síntomas registrados",
|
||
"during": "durante {illness}"
|
||
}
|
||
},
|
||
"day": {
|
||
"scoreOfMax": "de {max}",
|
||
"cycleDay": "Día {n} del ciclo",
|
||
"cyclePhaseLine": {
|
||
"MENSTRUAL": "Día {n} del ciclo, fase menstrual",
|
||
"FOLLICULAR": "Día {n} del ciclo, fase folicular",
|
||
"OVULATORY": "Día {n} del ciclo, fase ovulatoria",
|
||
"LUTEAL": "Día {n} del ciclo, fase lútea"
|
||
},
|
||
"previousDay": "Día anterior",
|
||
"nextDay": "Día siguiente",
|
||
"close": "Cerrar día",
|
||
"hidePanel": "Ocultar día",
|
||
"showPanel": "Mostrar {date}",
|
||
"openDay": "Abrir día",
|
||
"viewWholeDay": "Ver el día completo",
|
||
"captureForDay": "Registrar para este día",
|
||
"empty": "No hay entradas para este día.",
|
||
"notShared": "Algunas áreas no están compartidas contigo.",
|
||
"inTimeline": "En la cronología",
|
||
"askCoach": "Preguntar al Coach por este día",
|
||
"loadFailed": "No se pudo cargar este día.",
|
||
"dayOf": "Día {n} de {m}",
|
||
"dayN": "Día {n}",
|
||
"usualRange": "Habitual de {lo} a {hi}",
|
||
"groups": {
|
||
"scores": "Puntuaciones",
|
||
"running": "En curso ese día",
|
||
"values": "Valores",
|
||
"happened": "Qué pasó",
|
||
"movement": "En movimiento"
|
||
},
|
||
"notable": {
|
||
"extremeHigh": "Valor diario más alto desde {since}",
|
||
"extremeLow": "Valor diario más bajo desde {since}",
|
||
"firstValue": "Primera medición de este tipo",
|
||
"gap": "{days} días sin medición"
|
||
},
|
||
"previousDayShortcut": "Día anterior (Alt + flecha izquierda)",
|
||
"nextDayShortcut": "Día siguiente (Alt + flecha derecha)",
|
||
"captureShort": "Registrar",
|
||
"inTimelineShort": "Cronología",
|
||
"askCoachPrompt": "¿Qué pasó el {date}?",
|
||
"coachChips": "Días en esta respuesta",
|
||
"description": "Todo lo que tus registros contienen para este día.",
|
||
"openDocument": "Abrir documento",
|
||
"previousReading": "Antes, {date}",
|
||
"sheetExpand": "Ampliar a toda la altura",
|
||
"sheetShrink": "Reducir",
|
||
"valuesLegend": "Punto para este día, barra para los 30 días anteriores",
|
||
"valuesAllOne": "Todos los valores",
|
||
"valuesAllFew": "Los {count} valores",
|
||
"valuesAllOther": "Los {count} valores",
|
||
"valuesFewer": "Menos valores",
|
||
"countEntriesOne": "1 entrada",
|
||
"countEntriesFew": "{count} entradas",
|
||
"countEntriesOther": "{count} entradas",
|
||
"meanOfReadingsOne": "Media de 1 medición",
|
||
"meanOfReadingsFew": "Media de {count} mediciones",
|
||
"meanOfReadingsOther": "Media de {count} mediciones",
|
||
"sinceLastVisit": {
|
||
"countOne": "1 entrada",
|
||
"countFew": "{count} entradas",
|
||
"countOther": "{count} entradas",
|
||
"allOne": "Mostrar todo",
|
||
"allFew": "Mostrar las {count}",
|
||
"allOther": "Mostrar las {count}",
|
||
"fewer": "Mostrar menos",
|
||
"note": "Reunido a partir de tus entradas, sin valoración. Cada fecha abre el día completo.",
|
||
"report": "Informe médico del {date} hasta hoy",
|
||
"loadError": "No se pudo cargar lo ocurrido desde la última visita."
|
||
},
|
||
"travel": "De viaje",
|
||
"event": {
|
||
"started": "Inicio: {label}",
|
||
"ended": "Fin: {label}",
|
||
"paused": "Pausa: {label}",
|
||
"resumed": "Reanudación: {label}",
|
||
"illnessBegan": "Inicio: {label}",
|
||
"illnessResolved": "Recuperación: {label}"
|
||
},
|
||
"pickDate": "Elegir una fecha",
|
||
"pickerTitle": "Ir a un día",
|
||
"today": "Hoy",
|
||
"hasEntries": "con entradas",
|
||
"dayNSince": "Día {n}, desde el {date}",
|
||
"sinceDate": "Desde el {date}",
|
||
"movement": {
|
||
"total": "Distancia",
|
||
"driving": "En coche",
|
||
"train": "En tren",
|
||
"places": "Lugares visitados",
|
||
"away": "Fuera de casa",
|
||
"travel": "Día de viaje",
|
||
"travelYes": "Sí",
|
||
"kilometres": "{value} km",
|
||
"miles": "{value} mi"
|
||
}
|
||
},
|
||
"timeline": {
|
||
"title": "Cronología",
|
||
"subtitle": "Qué pasó y cuándo, junto a tus valores.",
|
||
"standing": "Permanente",
|
||
"startUnknown": "inicio desconocido",
|
||
"zoom": {
|
||
"all": "Todo",
|
||
"year": "12 meses",
|
||
"quarter": "3 meses",
|
||
"range": "Periodo"
|
||
},
|
||
"lanes": {
|
||
"life": "Vida",
|
||
"illness": "Enfermedades",
|
||
"allergies": "Alergias",
|
||
"medications": "Medicamentos",
|
||
"vaccinations": "Vacunas",
|
||
"visits": "Médico e intervenciones",
|
||
"labs": "Laboratorio",
|
||
"documents": "Documentos",
|
||
"cycle": "Ciclo"
|
||
},
|
||
"readiness": {
|
||
"title": "Lo que tu cronología ya muestra",
|
||
"subtitle": "Un inventario honesto antes de abrirla.",
|
||
"menuEntry": "Cobertura de datos",
|
||
"hint": "Las pistas vacías permanecen ocultas hasta que haya algo. Los módulos desactivados nunca aparecen. Encontrarás este resumen más adelante en Cobertura de datos, dentro de la cronología.",
|
||
"later": "Más tarde",
|
||
"open": "Abrir cronología",
|
||
"verdict": {
|
||
"carries": "Ya tiene contenido.",
|
||
"thin": "Aún escasa. Por ahora la cronología muestra sobre todo tus valores."
|
||
},
|
||
"status": {
|
||
"carries": "completa",
|
||
"thin": "escasa",
|
||
"empty": "vacía"
|
||
},
|
||
"lanes": {
|
||
"values": "Valores",
|
||
"mood": "Estado de ánimo",
|
||
"environment": "Entorno",
|
||
"life": "Acontecimientos vitales"
|
||
},
|
||
"meter": "{carrying} de {total} pistas tienen contenido",
|
||
"carriesDetail": "{carrying} de {total} pistas dan una visión general desde {since}.",
|
||
"loadFailed": "No se pudo cargar el inventario.",
|
||
"card": {
|
||
"title": "Lo que la cronología ya muestra",
|
||
"summary": "Llega hasta {since}; {carrying} de {total} pistas ya tienen contenido.",
|
||
"dismiss": "Ocultar"
|
||
},
|
||
"detail": {
|
||
"valuesOne": "{count} medida desde {since}",
|
||
"valuesFew": "{count} medidas desde {since}",
|
||
"valuesOther": "{count} medidas desde {since}",
|
||
"illnessOne": "{count} episodio; crónicos: {chronic}",
|
||
"illnessFew": "{count} episodios; crónicos: {chronic}",
|
||
"illnessOther": "{count} episodios; crónicos: {chronic}",
|
||
"allergiesOne": "{count} alergia",
|
||
"allergiesFew": "{count} alergias",
|
||
"allergiesOther": "{count} alergias",
|
||
"medicationsOne": "{count} medicamento; sin fecha de inicio: {missingStart}",
|
||
"medicationsFew": "{count} medicamentos; sin fecha de inicio: {missingStart}",
|
||
"medicationsOther": "{count} medicamentos; sin fecha de inicio: {missingStart}",
|
||
"medicationsDatedOne": "{count} medicamento con fecha de inicio",
|
||
"medicationsDatedFew": "{count} medicamentos con fecha de inicio",
|
||
"medicationsDatedOther": "{count} medicamentos con fecha de inicio",
|
||
"vaccinationsOne": "{count} vacuna",
|
||
"vaccinationsFew": "{count} vacunas",
|
||
"vaccinationsOther": "{count} vacunas",
|
||
"visitsOne": "{count} visita, {procedures} con intervención",
|
||
"visitsFew": "{count} visitas, {procedures} con intervención",
|
||
"visitsOther": "{count} visitas, {procedures} con intervención",
|
||
"visitsPlannedOne": "{count} visita, solo planificada",
|
||
"visitsPlannedFew": "{count} visitas, solo planificadas",
|
||
"visitsPlannedOther": "{count} visitas, solo planificadas",
|
||
"labsOne": "{count} día con resultados",
|
||
"labsFew": "{count} días con resultados",
|
||
"labsOther": "{count} días con resultados",
|
||
"documentsOne": "{count} documento con fecha",
|
||
"documentsFew": "{count} documentos con fecha",
|
||
"documentsOther": "{count} documentos con fecha",
|
||
"lifeOne": "{count} acontecimiento vital",
|
||
"lifeFew": "{count} acontecimientos vitales",
|
||
"lifeOther": "{count} acontecimientos vitales",
|
||
"cycleOne": "{count} ciclo",
|
||
"cycleFew": "{count} ciclos",
|
||
"cycleOther": "{count} ciclos",
|
||
"moodOne": "{count} entrada desde {since}",
|
||
"moodFew": "{count} entradas desde {since}",
|
||
"moodOther": "{count} entradas desde {since}",
|
||
"environmentOne": "{count} día con datos ambientales",
|
||
"environmentFew": "{count} días con datos ambientales",
|
||
"environmentOther": "{count} días con datos ambientales",
|
||
"empty": "Aún ninguno"
|
||
},
|
||
"gap": {
|
||
"valuesEmpty": "Conectar fuentes",
|
||
"illnessEmpty": "Añadir episodio",
|
||
"medicationsWithoutStart": "Completar",
|
||
"visitsEmpty": "Añadir visita",
|
||
"documentsUndated": "Revisar",
|
||
"labsEmpty": "Añadir resultado",
|
||
"vaccinationsEmpty": "Añadir vacunas",
|
||
"lifeEventsEmpty": "Añadir"
|
||
},
|
||
"gapLine": {
|
||
"medicationsWithoutStartOne": "{count} medicamento sin fecha de inicio",
|
||
"medicationsWithoutStartFew": "{count} medicamentos sin fecha de inicio",
|
||
"medicationsWithoutStartOther": "{count} medicamentos sin fecha de inicio",
|
||
"documentsUndatedOne": "{count} documento sin fecha",
|
||
"documentsUndatedFew": "{count} documentos sin fecha",
|
||
"documentsUndatedOther": "{count} documentos sin fecha",
|
||
"valuesEmpty": "Aún no hay valores durante un periodo largo",
|
||
"illnessEmpty": "Aún no hay enfermedades con fecha de inicio",
|
||
"visitsEmpty": "Aún no hay visitas médicas realizadas",
|
||
"labsEmpty": "Aún no hay resultados de laboratorio",
|
||
"vaccinationsEmpty": "Aún no hay vacunas",
|
||
"lifeEventsEmpty": "Aún no hay acontecimientos vitales"
|
||
}
|
||
},
|
||
"legendSpan": "Periodo",
|
||
"legendEvent": "Evento",
|
||
"legendMeanQuarter": "Media trimestral",
|
||
"legendMeanMonth": "Media mensual",
|
||
"legendMeanWeek": "Media semanal",
|
||
"legendThin": "Menos de 3 mediciones",
|
||
"legendGap": "Hueco corto sin mediciones",
|
||
"today": "Hoy",
|
||
"noDataYet": "Aún sin datos",
|
||
"layers": "Capas",
|
||
"layersLanes": "Pistas",
|
||
"zoomLabel": "Rango de la vista",
|
||
"chartLabel": "Cronología de {from} a {to}",
|
||
"keyboardHint": "Las flechas mueven la selección, Inicio y Fin saltan a los extremos, Intro abre el día.",
|
||
"loadFailed": "No se pudo cargar la cronología.",
|
||
"empty": {
|
||
"title": "Aún no hay nada en la cronología",
|
||
"description": "Las entradas con fecha aparecerán aquí en cuanto haya alguna."
|
||
},
|
||
"values": {
|
||
"menuTitle": "Valores bajo los carriles",
|
||
"trigger": "Valores ({count})",
|
||
"noneInWindow": "Sin valores en este periodo",
|
||
"series": {
|
||
"BLOOD_PRESSURE_SYS": "Presión sistólica",
|
||
"BLOOD_PRESSURE_DIA": "Presión diastólica"
|
||
},
|
||
"noValue": "sin valor",
|
||
"bloodPressure": "Presión arterial",
|
||
"readingsOne": "1 medición",
|
||
"readingsFew": "media de {count} mediciones",
|
||
"readingsOther": "media de {count} mediciones"
|
||
},
|
||
"table": {
|
||
"caption": "Entradas de la cronología",
|
||
"lane": "Pista",
|
||
"entry": "Entrada",
|
||
"start": "Inicio",
|
||
"end": "Fin",
|
||
"seriesCaption": "Medias por periodo",
|
||
"period": "Periodo"
|
||
},
|
||
"selection": {
|
||
"empty": "No hay entradas en este periodo",
|
||
"since": "desde {date}",
|
||
"range": "{from} a {to}",
|
||
"mean": "Ø {values}",
|
||
"week": "Semana del {date}",
|
||
"hintClick": "Haz clic en un momento para verlo aquí",
|
||
"hintTap": "Toca un momento para verlo aquí"
|
||
},
|
||
"chronicle": {
|
||
"months": "Meses",
|
||
"years": "Años",
|
||
"groupingLabel": "Agrupación",
|
||
"empty": "Sin entradas de {from} a {to}",
|
||
"emptySingle": "Sin entradas en {period}",
|
||
"ended": "Fin: {label}",
|
||
"afterDaysOne": "después de 1 día",
|
||
"afterDaysFew": "después de {count} días",
|
||
"afterDaysOther": "después de {count} días",
|
||
"notable": {
|
||
"extremeHigh": "El valor más alto en mucho tiempo",
|
||
"extremeLow": "El valor más bajo en mucho tiempo",
|
||
"firstValue": "Primer valor de una medida",
|
||
"gap": "Un hueco largo en los valores"
|
||
},
|
||
"notableMeta": "Abre el día para ver detalles"
|
||
},
|
||
"standingAllergiesOne": "{count} alergia",
|
||
"standingAllergiesFew": "{count} alergias",
|
||
"standingAllergiesOther": "{count} alergias",
|
||
"legendMeanDay": "Media diaria",
|
||
"range": {
|
||
"from": "Desde",
|
||
"to": "Hasta",
|
||
"label": "Periodo elegido",
|
||
"open": "Elegir un periodo",
|
||
"clear": "Mostrar todo",
|
||
"apply": "Aplicar"
|
||
},
|
||
"item": {
|
||
"labValuesOne": "1 valor de laboratorio",
|
||
"labValuesFew": "{count} valores de laboratorio",
|
||
"labValuesOther": "{count} valores de laboratorio"
|
||
}
|
||
},
|
||
"lifeEvents": {
|
||
"title": "Acontecimiento vital",
|
||
"add": "Acontecimiento vital",
|
||
"privacy": "El título y la nota se guardan cifrados. No se envían a ninguna IA.",
|
||
"emptyHint": "Una mudanza, un nacimiento o un nuevo trabajo dan un ancla a los años.",
|
||
"save": "Guardar",
|
||
"cancel": "Cancelar",
|
||
"delete": "Eliminar acontecimiento vital",
|
||
"saved": "Acontecimiento vital guardado",
|
||
"deleted": "Acontecimiento vital eliminado",
|
||
"fields": {
|
||
"title": "¿Qué pasó?",
|
||
"category": "Tipo",
|
||
"when": "Cuándo",
|
||
"precision": "Precisión",
|
||
"addEnd": "Fecha de fin, si fue un periodo",
|
||
"endDate": "Hasta",
|
||
"note": "Nota",
|
||
"optionalTag": "opcional",
|
||
"notePlaceholder": "Algo que quieras saber más adelante",
|
||
"removeEnd": "Quitar fecha de fin"
|
||
},
|
||
"category": {
|
||
"FAMILY": "Familia",
|
||
"HOME": "Vivienda",
|
||
"WORK": "Trabajo",
|
||
"LOSS": "Pérdida",
|
||
"OTHER": "Otro"
|
||
},
|
||
"precision": {
|
||
"DAY": "Día",
|
||
"MONTH": "Mes",
|
||
"YEAR": "Año"
|
||
},
|
||
"edit": "Editar acontecimiento vital",
|
||
"errors": {
|
||
"titleRequired": "Ponle un nombre al acontecimiento.",
|
||
"titleTooLong": "Máximo 120 caracteres.",
|
||
"categoryRequired": "Elige un tipo.",
|
||
"dateRequired": "Introduce una fecha válida.",
|
||
"endBeforeStart": "El final es anterior al inicio.",
|
||
"noteTooLong": "Máximo 2000 caracteres."
|
||
},
|
||
"saveFailed": "No se pudo guardar.",
|
||
"deleteFailed": "No se pudo eliminar.",
|
||
"deleteConfirm": {
|
||
"title": "¿Eliminar este acontecimiento vital?",
|
||
"body": "Su título y su nota desaparecerán."
|
||
}
|
||
},
|
||
"palette": {
|
||
"title": "Buscar",
|
||
"description": "Encuentra una página, un ajuste, un módulo, una acción o una entrada de tus registros.",
|
||
"placeholder": "Buscar páginas, ajustes, tus registros…",
|
||
"results": "Resultados",
|
||
"noResults": "No hay resultados para «{query}».",
|
||
"moduleOn": "Activado",
|
||
"moduleOff": "Desactivado",
|
||
"hintMove": "Mover",
|
||
"hintOpen": "Abrir",
|
||
"hintClose": "Cerrar",
|
||
"groups": {
|
||
"recent": "Recientes",
|
||
"pages": "Páginas",
|
||
"insights": "Insights",
|
||
"settings": "Ajustes",
|
||
"modules": "Módulos",
|
||
"actions": "Acciones",
|
||
"records": "En tus registros"
|
||
},
|
||
"actions": {
|
||
"capture": "Nueva entrada",
|
||
"coach": "Preguntar al Coach",
|
||
"backup": "Crear una copia de seguridad",
|
||
"today": "Abrir hoy",
|
||
"shortcuts": "Mostrar atajos de teclado"
|
||
},
|
||
"records": {
|
||
"loading": "Buscando en tus registros…",
|
||
"empty": "Nada en tus registros para «{query}».",
|
||
"error": "No se pudo buscar en tus registros. Inténtalo de nuevo en un momento.",
|
||
"truncated": "Solo se buscaron las entradas más recientes.",
|
||
"kind": {
|
||
"visit": "Consulta",
|
||
"condition": "Enfermedad",
|
||
"document": "Documento",
|
||
"vaccination": "Vacuna",
|
||
"lab": "Resultado de laboratorio",
|
||
"medication": "Medicamento",
|
||
"symptom": "Síntoma",
|
||
"workout": "Entrenamiento",
|
||
"note": "Nota"
|
||
},
|
||
"source": {
|
||
"mood": "Nota de ánimo",
|
||
"measurement": "Nota de una medición",
|
||
"illness": "Diario de enfermedad"
|
||
}
|
||
}
|
||
},
|
||
"shortcuts": {
|
||
"title": "Atajos de teclado",
|
||
"description": "Teclas que funcionan en toda la aplicación, salvo mientras escribes en un campo.",
|
||
"menuEntry": "Atajos de teclado",
|
||
"then": "luego",
|
||
"search": "Buscar",
|
||
"help": "Mostrar esta lista",
|
||
"close": "Cerrar un diálogo o panel",
|
||
"previousDay": "Día anterior",
|
||
"nextDay": "Día siguiente",
|
||
"toggleDay": "Abrir o cerrar el día",
|
||
"dayHint": "Día anterior y siguiente funcionan mientras hay un día abierto.",
|
||
"groups": {
|
||
"navigation": "Navegación",
|
||
"actions": "Acciones",
|
||
"day": "Día"
|
||
}
|
||
},
|
||
"aboutPage": {
|
||
"eyebrow": "Información",
|
||
"title": "Acerca de HealthLog",
|
||
"lastUpdated": "Última actualización: {date}",
|
||
"project": "Proyecto",
|
||
"credits": "Créditos"
|
||
},
|
||
"series": {
|
||
"reference": {
|
||
"targetUpper": "Tu objetivo, límite superior",
|
||
"targetLower": "Tu objetivo, límite inferior",
|
||
"clinicalUpper": "Límite clínico superior",
|
||
"clinicalLower": "Límite clínico inferior"
|
||
}
|
||
},
|
||
"activityCalendar": {
|
||
"title": "Calendario de actividad",
|
||
"periodLabel": "Periodo del calendario",
|
||
"period": {
|
||
"week": "Semana",
|
||
"month": "Mes"
|
||
},
|
||
"weekRange": "{start} a {end}",
|
||
"previous": "Periodo anterior",
|
||
"next": "Periodo siguiente",
|
||
"metricLabel": "Colorear los días por",
|
||
"metric": {
|
||
"steps": "Pasos",
|
||
"activeMinutes": "Minutos activos",
|
||
"load": "Carga de entrenamiento"
|
||
},
|
||
"empty": "Todavía no hay pasos, minutos activos ni entrenamientos en este periodo.",
|
||
"loadError": "No se pudo cargar el calendario de actividad.",
|
||
"weekGoalsColumn": "Objetivos semanales",
|
||
"weekGoalsMet": "Todos los objetivos semanales cumplidos",
|
||
"weekGoalsNotMet": "No se cumplieron todos los objetivos semanales",
|
||
"cell": {
|
||
"steps": "{value} pasos",
|
||
"activeMinutes": "{value} minutos activos",
|
||
"workouts": "{value} entrenamientos: {sports}"
|
||
},
|
||
"level": {
|
||
"none": "Sin datos",
|
||
"unrated": "Aún no hay suficiente historial",
|
||
"low": "Muy por debajo de lo habitual",
|
||
"below": "Por debajo de lo habitual",
|
||
"usual": "Como de costumbre",
|
||
"above": "Por encima de lo habitual",
|
||
"high": "Muy por encima de lo habitual",
|
||
"in_progress": "Hoy, aún en curso"
|
||
},
|
||
"legend": "Comparado con tus 12 semanas anteriores:",
|
||
"noBaseline": "Tu rango habitual aparece tras 14 días con datos.",
|
||
"summary": {
|
||
"steps": "{value} pasos",
|
||
"activeMinutes": "{value} minutos activos",
|
||
"workouts": "{value} entrenamientos",
|
||
"load": "Carga de entrenamiento media {value}",
|
||
"usual": "Lo habitual hasta este punto: {value}",
|
||
"noUsual": "Aún no hay suficientes semanas o meses anteriores para comparar.",
|
||
"usualThroughYesterday": "Hasta ayer {value}, lo habitual para ti hasta entonces {usual}",
|
||
"firstDay": "Se compara con lo habitual cuando termine el primer día."
|
||
},
|
||
"sportCount": "{sport}: {count}",
|
||
"goal": {
|
||
"workoutsPerWeek": "Entrenamientos por semana",
|
||
"activeMinutesPerWeek": "Minutos activos por semana",
|
||
"stepsPerWeek": "Pasos por semana",
|
||
"stepsPerMonth": "Pasos por mes"
|
||
},
|
||
"goalOf": "{value} de {target}",
|
||
"setGoals": "Fijar objetivos",
|
||
"editGoals": "Cambiar objetivos",
|
||
"goalsSheet": {
|
||
"title": "Objetivos de actividad",
|
||
"description": "Deja un campo vacío si no quieres un objetivo.",
|
||
"none": "Sin objetivo",
|
||
"invalid": "Un número entero de {min} a {max}.",
|
||
"saveError": "No se pudieron guardar los objetivos."
|
||
},
|
||
"crossLink": {
|
||
"title": "Calendario de actividad",
|
||
"body": "Tus pasos por semana o por mes, frente a lo que es habitual para ti.",
|
||
"cta": "Abrir calendario"
|
||
}
|
||
},
|
||
"sourceProvenance": {
|
||
"title": "De dónde vienen los valores",
|
||
"description": "Qué fuente aportó un valor cada día y cuál usa tu prioridad de fuentes.",
|
||
"metric": "Medida",
|
||
"day": "Día",
|
||
"dayTitle": "Fuentes de este día",
|
||
"loadError": "No se pudieron cargar las fuentes.",
|
||
"dayEmpty": "No hay valores de esta medida en este día.",
|
||
"reason": {
|
||
"only_source": "{source} es la única fuente de este día.",
|
||
"highest_on_ladder": "Se usa {source}: es la más alta en tu prioridad de fuentes entre las fuentes de este día.",
|
||
"name_tiebreak": "Se usa {source}: ninguna fuente de este día está en tu prioridad, así que decidió el nombre.",
|
||
"not_ranked": "Esta medida no tiene prioridad de fuentes: cuentan los valores de todas las fuentes."
|
||
},
|
||
"pass": {
|
||
"lower_on_ladder": "Más abajo en tu prioridad de fuentes.",
|
||
"not_on_ladder": "No está en tu prioridad de fuentes para esta medida.",
|
||
"name_tiebreak": "Mismo rango que la fuente usada; decidió el nombre."
|
||
},
|
||
"used": "Usada",
|
||
"readings": "{count} mediciones, dispositivos: {devices}",
|
||
"ladder": "Tu orden para esta medida: {ladder}",
|
||
"utcNote": "La fuente se elige por día, de medianoche a medianoche UTC, igual que en los gráficos.",
|
||
"openSettings": "Cambiar el orden en Prioridad de fuentes",
|
||
"compareTitle": "Comparar dos fuentes",
|
||
"range": "Periodo",
|
||
"rangeDays": "{days} días",
|
||
"compareNeedsTwo": "Solo una fuente tiene valores de esta medida en este periodo.",
|
||
"side": {
|
||
"a": "Primera fuente",
|
||
"b": "Segunda fuente"
|
||
},
|
||
"daysBoth": "Días con ambas",
|
||
"meanOf": "Media de {source}",
|
||
"meanAbsDiff": "Diferencia media",
|
||
"pickedDays": "Días usados (primera / segunda)",
|
||
"pickedSplit": "{a} / {b}",
|
||
"compareNote": "Las medias solo cuentan los días en que ambas fuentes tienen valores, para comparar lo comparable. En negrita, el valor que usan los gráficos.",
|
||
"settingsHint": "Para ver lo que decide este orden día a día:",
|
||
"settingsHintLink": "De dónde vienen los valores",
|
||
"metricLink": "De dónde vienen estos valores"
|
||
},
|
||
"recordImport": {
|
||
"title": "Resultados de laboratorio y medicamentos desde una hoja de cálculo",
|
||
"description": "Trae años de resultados o una lista de medicamentos desde un archivo CSV.",
|
||
"detail": "Tú eliges qué columna contiene qué; HealthLog revisa cada fila antes y no importa nada hasta que confirmes. Las filas que ya están se omiten.",
|
||
"kind": {
|
||
"labs": "Resultados de laboratorio",
|
||
"medications": "Medicamentos"
|
||
},
|
||
"sheetTitle": {
|
||
"labs": "Importar resultados",
|
||
"medications": "Importar medicamentos"
|
||
},
|
||
"sheetDescription": {
|
||
"labs": "Los marcadores se asignan a los tuyos y las unidades se convierten cuando se conoce la conversión.",
|
||
"medications": "Nombre, dosis, horas diarias, a demanda, inicio y fin. Otros ritmos se configuran después en la app."
|
||
},
|
||
"file": "Archivo CSV",
|
||
"template": "Descargar plantilla",
|
||
"mapping": "Qué columna contiene qué",
|
||
"required": "(obligatorio)",
|
||
"notInFile": "No está en el archivo",
|
||
"column": "Columna {n}",
|
||
"delimiter": "Separador",
|
||
"delimiterOption": {
|
||
"comma": "Coma",
|
||
"semicolon": "Punto y coma",
|
||
"tab": "Tabulador"
|
||
},
|
||
"decimal": "Separador decimal",
|
||
"decimalOption": {
|
||
"dot": "Punto (5.4)",
|
||
"comma": "Coma (5,4)"
|
||
},
|
||
"dateOrder": "Formato de fecha",
|
||
"dateOrderOption": {
|
||
"iso": "2025-03-01",
|
||
"dmy": "01.03.2025 (día primero)",
|
||
"mdy": "03/01/2025 (mes primero)"
|
||
},
|
||
"header": "La primera fila contiene los nombres de columna",
|
||
"reminders": "Activar recordatorios para los medicamentos importados",
|
||
"timezoneNote": "Las horas sin zona horaria se leen en la zona de tu cuenta. Una fecha sin hora se guarda como ese día del calendario.",
|
||
"missing": "Falta elegir: {fields}",
|
||
"check": "Revisar archivo",
|
||
"runIdle": "Importar",
|
||
"run": "Importar {count} filas",
|
||
"close": "Cerrar",
|
||
"summaryCheck": "{rows} filas leídas: {inserted} se pueden importar, {duplicates} ya están, {failed} con un problema.",
|
||
"summaryDone": "{inserted} filas importadas. Omitidas: {duplicates} que ya estaban y {failed} con un problema.",
|
||
"markersMatched": "Asignados a tus marcadores:",
|
||
"markersCreated": "Marcadores nuevos:",
|
||
"line": "Línea {line}",
|
||
"errorsTruncated": "Solo se listan los primeros 500 problemas.",
|
||
"error": {
|
||
"tooLarge": "El archivo supera los 16 MB.",
|
||
"rateLimited": "Demasiadas importaciones en la última hora. Inténtalo más tarde.",
|
||
"invalid": "No se pudo leer el archivo o la elección de columnas.",
|
||
"failed": "La importación no se completó. Inténtalo de nuevo."
|
||
},
|
||
"reason": {
|
||
"missing_value": "Falta una celda obligatoria",
|
||
"invalid_number": "No es un número",
|
||
"ambiguous_number": "El número se puede leer de dos maneras; revisa el separador decimal",
|
||
"missing_unit": "Un número necesita una unidad",
|
||
"invalid_date": "No es una fecha en el formato elegido",
|
||
"invalid_time": "No es una hora",
|
||
"ambiguous_date": "La fecha se puede leer de dos maneras; usa un año de cuatro cifras y el formato elegido",
|
||
"future_date": "La fecha está en el futuro",
|
||
"text_too_long": "El texto es demasiado largo",
|
||
"unit_mismatch": "Esta unidad no se puede convertir a la del marcador",
|
||
"invalid_reference_range": "No se puede leer el rango de referencia",
|
||
"invalid_times": "No se pueden leer las horas (ej. 08:00 20:00)",
|
||
"missing_times": "Añade horas de toma o marca el medicamento como a demanda",
|
||
"invalid_yes_no": "Usa sí o no",
|
||
"as_needed_with_times": "Un medicamento a demanda no tiene horas fijas",
|
||
"end_before_start": "El fin es anterior al inicio",
|
||
"invalid_medication": "El medicamento no se puede guardar así",
|
||
"oversized_row": "La fila es demasiado larga o ancha",
|
||
"row_limit": "Supera el límite de filas por importación",
|
||
"duplicate": "Ya está, omitida"
|
||
},
|
||
"field": {
|
||
"analyte": "Marcador",
|
||
"value": "Resultado",
|
||
"unit": "Unidad",
|
||
"date": "Fecha",
|
||
"time": "Hora",
|
||
"referenceRange": "Rango de referencia",
|
||
"referenceLow": "Referencia mínima",
|
||
"referenceHigh": "Referencia máxima",
|
||
"panel": "Grupo",
|
||
"note": "Nota",
|
||
"name": "Nombre",
|
||
"dose": "Dosis",
|
||
"times": "Horas",
|
||
"asNeeded": "A demanda",
|
||
"startsOn": "Inicio",
|
||
"endsOn": "Fin"
|
||
}
|
||
}
|
||
}
|