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
771 KiB
JSON
13769 lines
771 KiB
JSON
{
|
||
"common": {
|
||
"listCapped": "Seuls les {count} derniers sont affichés ; les entrées plus anciennes ne figurent pas ici.",
|
||
"save": "Enregistrer",
|
||
"conflictReloaded": "Rechargé depuis le serveur. Refais ta modification.",
|
||
"cancel": "Annuler",
|
||
"delete": "Supprimer",
|
||
"undo": "Annuler",
|
||
"edit": "Modifier",
|
||
"moreOptions": "Plus d'options",
|
||
"create": "Créer",
|
||
"close": "Fermer",
|
||
"loading": "Chargement…...",
|
||
"loadFailed": "Impossible de charger",
|
||
"error": "Erreur",
|
||
"saved": "Enregistré",
|
||
"pullToRefresh": "Actualisation…",
|
||
"no": "Non",
|
||
"noData": "Aucune donnée disponible",
|
||
"optional": "Facultatif",
|
||
"active": "Actif",
|
||
"inactive": "Inactif",
|
||
"disabled": "Désactivé",
|
||
"networkError": "Erreur réseau",
|
||
"openDatePicker": "Ouvrir le sélecteur de date",
|
||
"openTimePicker": "Ouvrir le sélecteur d’heure",
|
||
"hours": "Heures",
|
||
"minutes": "Minutes",
|
||
"feet": "ft",
|
||
"inches": "in",
|
||
"heightFeet": "Taille en pieds",
|
||
"heightInches": "Taille en pouces",
|
||
"period": "AM/PM",
|
||
"am": "AM",
|
||
"pm": "PM",
|
||
"unknownError": "Erreur inconnue",
|
||
"copied": "Copié !",
|
||
"or": "ou",
|
||
"unknown": "Inconnu",
|
||
"add": "Ajouter",
|
||
"import": "Importer",
|
||
"test": "Tester",
|
||
"reset": "Réinitialiser",
|
||
"copy": "Copier",
|
||
"copyDetails": "Copier les détails",
|
||
"retry": "Réessayer",
|
||
"showPassword": "Afficher le mot de passe",
|
||
"hidePassword": "Masquer le mot de passe",
|
||
"learnMore": "En savoir plus",
|
||
"dismiss": "Ignorer",
|
||
"moreInfo": "Plus d'informations",
|
||
"durationHoursMinutes": "{hours} h {minutes} min",
|
||
"durationMinutes": "{minutes} min",
|
||
"durationClockMinutes": "{time} min",
|
||
"durationClockHours": "{time} h",
|
||
"errorIdLabel": "ID d'erreur",
|
||
"errorIdCopy": "Copier l'ID d'erreur",
|
||
"errorIdCopied": "ID d'erreur copié",
|
||
"readThrottled": "Il y a trop de requêtes pour le moment, réessayez plus tard.",
|
||
"sessionEnded": "Votre session a expiré, reconnectez-vous pour continuer.",
|
||
"signIn": "Se connecter"
|
||
},
|
||
"apiErrors": {
|
||
"measurement": {
|
||
"create": {
|
||
"invalid": "Vérifiez les données de la mesure et réessayez."
|
||
},
|
||
"duplicate_timestamp": "Une mesure existe déjà pour cette heure."
|
||
},
|
||
"mood": {
|
||
"list": {
|
||
"invalid": "Les filtres de la liste d’humeur ne sont pas valides."
|
||
},
|
||
"create": {
|
||
"invalid": "Vérifiez l’entrée d’humeur et réessayez."
|
||
},
|
||
"update": {
|
||
"invalid": "Vérifiez l’entrée d’humeur et réessayez."
|
||
},
|
||
"duplicate_timestamp": "Une entrée d’humeur existe déjà pour cette heure.",
|
||
"not_found": "Cette entrée d’humeur n’est plus disponible.",
|
||
"ratedFactor": {
|
||
"out_of_range": "Une évaluation est hors de la plage autorisée."
|
||
}
|
||
},
|
||
"labs": {
|
||
"create": {
|
||
"invalid": "Vérifiez le résultat de laboratoire et réessayez."
|
||
},
|
||
"result": {
|
||
"notFound": "Ce résultat de laboratoire n’est plus disponible."
|
||
},
|
||
"biomarker": {
|
||
"notFound": "Ce biomarqueur n’est plus disponible.",
|
||
"duplicate": "Un biomarqueur portant ce nom existe déjà.",
|
||
"create": {
|
||
"invalid": "Vérifiez les informations du biomarqueur et réessayez."
|
||
},
|
||
"update": {
|
||
"invalid": "Vérifiez les informations du biomarqueur et réessayez.",
|
||
"referenceRangeInvalid": "La valeur de référence basse ne doit pas dépasser la valeur haute."
|
||
}
|
||
},
|
||
"update": {
|
||
"invalid": "Vérifiez le résultat de laboratoire et réessayez.",
|
||
"linkedFieldsImmutable": "Modifiez le biomarqueur pour changer son nom, son unité, son panel ou sa plage de référence.",
|
||
"qualitativeExpected": "Saisissez un résultat textuel pour cette mesure qualitative.",
|
||
"numericExpected": "Saisissez un nombre pour cette mesure numérique.",
|
||
"referenceRangeInvalid": "La valeur de référence basse ne doit pas dépasser la valeur haute."
|
||
}
|
||
},
|
||
"onboarding": {
|
||
"disclaimer": {
|
||
"invalid": "Veuillez confirmer à nouveau l’avertissement médical."
|
||
},
|
||
"tour": {
|
||
"invalid": "La progression de la visite n’a pas pu être enregistrée."
|
||
},
|
||
"complete": {
|
||
"invalid": "Vérifiez les informations du profil et réessayez."
|
||
},
|
||
"user": {
|
||
"notFound": "Votre compte est introuvable."
|
||
},
|
||
"step": {
|
||
"rateLimited": "Trop de tentatives. Patientez puis réessayez.",
|
||
"invalid": "Cette étape d’accueil n’a pas pu être enregistrée.",
|
||
"completed": "L’accueil est déjà terminé.",
|
||
"outOfOrder": "Votre progression a changé. Actualisez la page et continuez.",
|
||
"concurrent": "Votre progression a changé. Actualisez la page et continuez."
|
||
}
|
||
},
|
||
"profile": {
|
||
"update": {
|
||
"nothingSaved": "Rien n'a été enregistré. Corrigez le champ signalé et réessayez.",
|
||
"invalidBody": "La mise à jour du profil n'a pas pu être lue.",
|
||
"emailInUse": "Cette adresse e-mail est déjà utilisée.",
|
||
"emailRateLimited": "Trop de changements d'adresse e-mail. Réessayez plus tard.",
|
||
"emailSecondFactorRequired": "Confirmez avec votre second facteur ou une clé d'accès pour changer l'adresse e-mail."
|
||
}
|
||
},
|
||
"auth": {
|
||
"reproof": {
|
||
"required": "Confirmez votre mot de passe actuel pour modifier ceci.",
|
||
"failed": "La vérification a échoué. Rien n'a été modifié."
|
||
}
|
||
},
|
||
"biomarkers": {
|
||
"unit": {
|
||
"locked": "Ce marqueur a déjà des valeurs, son unité ne peut donc pas être modifiée. Les valeurs enregistrées s'afficheraient dans la nouvelle unité sans être converties."
|
||
}
|
||
},
|
||
"symptoms": {
|
||
"definition": {
|
||
"limitReached": "Tu as 8 symptômes. Masques-en un pour en ajouter un autre.",
|
||
"notFound": "Ce symptôme n'existe plus."
|
||
},
|
||
"episode": {
|
||
"notOpen": "Cette maladie n'est plus ouverte. Choisis-en une autre ou aucune."
|
||
},
|
||
"event": {
|
||
"notFound": "Cette entrée n'existe plus."
|
||
}
|
||
},
|
||
"medications": {
|
||
"notFound": "Ce médicament n’est plus disponible.",
|
||
"ingredients": {
|
||
"invalid": "Vérifiez la composition et réessayez.",
|
||
"unitMismatch": "Cette unité n’est pas proposée pour ce nutriment.",
|
||
"extract": {
|
||
"fileType": "Importez un JPEG, PNG, WebP ou PDF.",
|
||
"fileTooLarge": "Le fichier dépasse 10 Mo.",
|
||
"rateLimited": "Trop de lectures d’étiquettes. Réessayez dans une heure.",
|
||
"budgetExceeded": "Votre budget d’IA du jour est atteint.",
|
||
"failed": "L’étiquette n’a pas pu être lue. Essayez une photo plus nette."
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"doctorReport": {
|
||
"title": "Rapport de santé",
|
||
"anamnesisTitle": "Profil de santé",
|
||
"anamnesisNotRecorded": "Non renseigné",
|
||
"anamnesisUnreadable": "La valeur enregistrée n'a pas pu être lue",
|
||
"anamnesisConditions": "Maladies chroniques",
|
||
"anamnesisSmoking": "Tabagisme",
|
||
"anamnesisAlcohol": "Habitudes de consommation d'alcool",
|
||
"anamnesisShiftSchedule": "Organisation du travail",
|
||
"anamnesisColFact": "Élément du profil",
|
||
"anamnesisColValue": "Valeur enregistrée",
|
||
"subtitle": "HealthLog : rapport personnel de santé",
|
||
"patient": "Patient",
|
||
"dateOfBirth": "Date de naissance",
|
||
"gender": "Sexe",
|
||
"genderMale": "Homme",
|
||
"genderFemale": "Femme",
|
||
"genderOther": "Non-binaire",
|
||
"height": "Taille",
|
||
"period": "Période du rapport",
|
||
"createdOn": "Créé le",
|
||
"vitalsTitle": "Signes vitaux : résumé",
|
||
"colParameter": "Paramètre",
|
||
"colCurrent": "Actuel",
|
||
"colAvgPeriod": "Moy. période",
|
||
"colMin": "Min",
|
||
"colMax": "Max",
|
||
"colN": "n",
|
||
"bpClassificationTitle": "Tension artérielle : classification ESH (2023)",
|
||
"avgBp": "Tension artérielle moyenne",
|
||
"classification": "Classification",
|
||
"bmiTitle": "Indice de masse corporelle (IMC)",
|
||
"bmiRow": "IMC:{bmi} kg/m², classification: {class} (WHO)",
|
||
"complianceTitle": "Observance des médicaments",
|
||
"glp1Title": "Traitement GLP-1",
|
||
"glp1WeightSummary": "Poids sur la période du rapport : {start} kg → {end} kg ({delta} kg)",
|
||
"glp1CurrentDose": "Dose actuelle:{value} {unit} (since {since})",
|
||
"glp1Compliance": "Observance:{taken} / {total} ({rate}%)",
|
||
"glp1SideEffectsTitle": "Effets secondaires consignés",
|
||
"colGlp1Date": "Date",
|
||
"colGlp1Dose": "Dose",
|
||
"colGlp1Note": "Note",
|
||
"colGlp1SideEffect": "Effet secondaire",
|
||
"colMedication": "Médicament",
|
||
"colTaken": "Pris",
|
||
"colSkipped": "Sauté",
|
||
"colMissed": "Manqué",
|
||
"colExpected": "Attendues",
|
||
"colComplianceRate": "Taux d'observance",
|
||
"moodTitle": "Évolution de l’humeur",
|
||
"moodSummary": "Moyenne {avg} / 5.0, {count} entrées, plage {min}–{max}",
|
||
"colMood": "Humeur",
|
||
"colCount": "Nombre",
|
||
"colShare": "Part",
|
||
"footerDisclaimer1": "Ce rapport a été généré automatiquement à partir de données auto-déclarées et vise à soutenir",
|
||
"footerDisclaimer2": "la conversation médecin-patient. Il ne remplace pas un diagnostic médical. Les corrélations n'impliquent pas la causalité.",
|
||
"footerSource": "Source : HealthLog | Fuseau horaire : {timezone} | Créé : {timestamp}",
|
||
"unitSteps": "Pas",
|
||
"bmiUnderweight": "Insuffisance pondérale",
|
||
"bmiNormal": "Poids normal",
|
||
"bmiOverweight": "Surpoids (préobésité)",
|
||
"bmiObeseGrade1": "Obésité grade I",
|
||
"bmiObeseGrade2": "Obésité grade II",
|
||
"bmiObeseGrade3": "Obésité grade III",
|
||
"bpOptimal": "Optimale",
|
||
"bpNormal": "Normale",
|
||
"bpHighNormal": "Normale haute",
|
||
"bpHypertensionGrade1": "Hypertension de grade 1",
|
||
"bpHypertensionGrade2": "Hypertension de grade 2",
|
||
"bpHypertensionGrade3": "Hypertension de grade 3",
|
||
"moodAwful": "Très mauvaise",
|
||
"moodBad": "Mauvais",
|
||
"moodNeutral": "Neutre",
|
||
"moodGood": "Bien",
|
||
"moodGreat": "Très bonne",
|
||
"typeGlucoseFasting": "Glycémie (à jeun)",
|
||
"typeGlucosePostprandial": "Glycémie (postprandiale)",
|
||
"typeGlucoseRandom": "Glycémie (indifférente)",
|
||
"typeGlucoseBedtime": "Glycémie (avant le coucher)",
|
||
"typeGlucoseUnspecified": "Glycémie (non précisée)",
|
||
"glucoseClassificationTitle": "Glycémie : plages de référence (ADA 2024 / DDG)",
|
||
"glucoseRow": "{label} : moy. {avg} {unit} (cible {rangeMin}–{rangeMax}), {class}",
|
||
"glucoseInTarget": "dans la cible",
|
||
"glucoseBelowTarget": "sous la cible",
|
||
"glucoseAboveTarget": "au-dessus de la cible",
|
||
"practiceLabel": "Cabinet",
|
||
"insurer": "Assurance maladie",
|
||
"insuranceNumber": "N° d’assuré",
|
||
"summaryTitle": "Résumé clinique",
|
||
"summaryReadings": "Enregistré sur {days} jours : {count} mesures sur {params} paramètres.",
|
||
"summaryTrend": "{label} : dernier {latest} {arrow}",
|
||
"summaryAdherence": "Observance médicamenteuse : {rate}% (moyenne pondérée).",
|
||
"chartsTitle": "Graphiques de tendance",
|
||
"packageReadme": "Dossier de santé HealthLog\n\nCe paquet contient :\n- report.pdf : le rapport de santé pour votre médecin.\n- bundle.json : les mêmes données sous forme de Bundle document HL7 FHIR R4, compatible ePA.\n\nGénéré avec HealthLog.",
|
||
"wellnessTitle": "Résumé de bien-être",
|
||
"wellnessDisclaimer": "Ce sont des scores de bien-être descriptifs calculés à partir de vos signaux suivis (0–100). Ce ne sont pas des évaluations cliniques ni des diagnostics.",
|
||
"wellnessRecovery": "Récupération",
|
||
"wellnessStress": "Stress",
|
||
"wellnessStrain": "Effort",
|
||
"cycleTitle": "Cycle menstruel",
|
||
"cycleLmp": "Dernières règles",
|
||
"cycleAvgLength": "Durée moyenne du cycle",
|
||
"cycleAvgPeriod": "Durée moyenne des règles",
|
||
"cyclePhase": "Phase actuelle",
|
||
"cycleDays": "jours",
|
||
"cycleColStart": "Début des règles",
|
||
"cycleColLength": "Durée du cycle (jours)",
|
||
"cycleColPeriod": "Durée des règles (jours)",
|
||
"cyclePhases": {
|
||
"MENSTRUAL": "Menstruelle",
|
||
"FOLLICULAR": "Folliculaire",
|
||
"OVULATORY": "Ovulatoire",
|
||
"LUTEAL": "Lutéale"
|
||
},
|
||
"labsTitle": "Résultats d'analyses",
|
||
"labsColAnalyte": "Biomarqueur",
|
||
"labsColValue": "Valeur",
|
||
"labsColReference": "Référence",
|
||
"labsColStatus": "Statut",
|
||
"labsColDate": "Date",
|
||
"glucoseClinical": {
|
||
"title": "Aperçu glycémique (clinique)",
|
||
"colMetric": "Indicateur",
|
||
"colValue": "Valeur",
|
||
"tirInRange": "Temps dans la cible ({low}–{high} {unit})",
|
||
"tirLow": "Bas (< {low} {unit})",
|
||
"tirVeryLow": "Très bas (< {veryLow} {unit})",
|
||
"tirHigh": "Élevé (> {high} {unit})",
|
||
"tirVeryHigh": "Très élevé (> {veryHigh} {unit})",
|
||
"mean": "Glycémie moyenne",
|
||
"gmi": "Indicateur de gestion du glucose (GMI)",
|
||
"eA1c": "HbA1c estimée",
|
||
"cv": "Variabilité (CV%)",
|
||
"spotCaveat": "Ce sont des estimations issues de mesures ponctuelles, et non un profil de capteur continu. À lire comme une tendance, pas comme un verdict clinique."
|
||
},
|
||
"illnessTitle": "Affections et maladies",
|
||
"illnessOngoing": "En cours",
|
||
"illnessColCondition": "Affection",
|
||
"illnessColBodySite": "Partie du corps",
|
||
"illnessColType": "Type",
|
||
"illnessColLifecycle": "Évolution",
|
||
"illnessColOnset": "Début",
|
||
"illnessColResolved": "Résolue",
|
||
"allergiesTitle": "Allergies et intolérances",
|
||
"reactionUnreadable": "Réaction enregistrée mais impossible à déchiffrer",
|
||
"allergiesColSubstance": "Substance",
|
||
"allergiesColCategory": "Catégorie",
|
||
"allergiesColKind": "Type",
|
||
"allergiesColSeverity": "Sévérité",
|
||
"allergiesColReaction": "Réaction",
|
||
"allergiesColStatus": "Statut",
|
||
"familyHistoryTitle": "Antécédents familiaux",
|
||
"familyHistoryColRelationship": "Lien de parenté",
|
||
"familyHistoryColCondition": "Affection",
|
||
"familyHistoryColAgeAtOnset": "Âge au début",
|
||
"labsSourceRangeNote": "* La plage de référence provient du compte rendu lui-même et diffère de la plage enregistrée :",
|
||
"labsCatalogRangeLabel": "plage enregistrée",
|
||
"visitsTitle": "Consultations",
|
||
"visitsColDate": "Date",
|
||
"visitsColPractice": "Cabinet",
|
||
"visitsColKind": "Type",
|
||
"visitsColReason": "Motif",
|
||
"visitsColOutcome": "Résultat",
|
||
"visitsColConditions": "Maladies",
|
||
"surgicalHistoryTitle": "Antécédents chirurgicaux",
|
||
"surgicalHistoryColDate": "Date",
|
||
"surgicalHistoryColProcedure": "Intervention",
|
||
"surgicalHistoryColBodySite": "Partie du corps",
|
||
"surgicalHistoryColOutcome": "Résultat",
|
||
"immunizationsTitle": "Vaccinations",
|
||
"immunizationsColDate": "Date",
|
||
"immunizationsColVaccine": "Vaccin",
|
||
"immunizationsColDose": "Dose",
|
||
"immunizationsColLot": "Lot",
|
||
"emergency": {
|
||
"title": "Informations d'urgence",
|
||
"subtitle": "À utiliser en situation aiguë. Déclaré par le patient ; à confirmer si possible.",
|
||
"none": "Non renseigné",
|
||
"unreadable": "La valeur enregistrée n'a pas pu être lue",
|
||
"bloodType": "Groupe sanguin",
|
||
"bloodTypeUnknown": "Inconnu",
|
||
"bloodTypeValues": {
|
||
"A_POS": "A positif",
|
||
"A_NEG": "A négatif",
|
||
"B_POS": "B positif",
|
||
"B_NEG": "B négatif",
|
||
"AB_POS": "AB positif",
|
||
"AB_NEG": "AB négatif",
|
||
"O_POS": "O positif",
|
||
"O_NEG": "O négatif"
|
||
},
|
||
"severeAllergies": "Allergies graves",
|
||
"activeMedications": "Médicaments actuels",
|
||
"chronicConditions": "Maladies chroniques",
|
||
"implants": "Implants et dispositifs",
|
||
"advanceDirective": "Directives anticipées",
|
||
"advanceDirectiveValues": {
|
||
"EXISTS": "Existent",
|
||
"NONE": "Aucune",
|
||
"UNKNOWN": "Non précisé"
|
||
},
|
||
"organDonor": "Don d'organes",
|
||
"organDonorValues": {
|
||
"YES": "Oui",
|
||
"NO": "Non",
|
||
"UNKNOWN": "Non précisé"
|
||
},
|
||
"contacts": "Contacts d'urgence",
|
||
"notes": "Notes complémentaires"
|
||
},
|
||
"courseRange": "Traitement du {start} au {end}",
|
||
"courseSince": "Traitement depuis le {start}",
|
||
"lifePackYears": "Paquets-années",
|
||
"lifeAuditC": "AUDIT-C (dépistage)",
|
||
"lifeAuditCScore": "{score} sur 12 le {date}.",
|
||
"lifeAuditCAbove": "Au seuil de {cutoff} ou au-dessus ({source}).",
|
||
"lifeAuditCBelow": "Sous le seuil de {cutoff} ({source}).",
|
||
"lifeAuditCNoCutoff": "Aucun seuil propre au sexe appliqué.",
|
||
"lifeActivity": "Activité physique",
|
||
"lifeActivityValue": "{minutes} minutes par semaine, déclaré",
|
||
"lifeSitting": "Temps assis un jour de travail",
|
||
"lifeSittingValue": "{hours} heures, déclaré",
|
||
"lifeWork": "Travail",
|
||
"lifeNightWork": "travail de nuit",
|
||
"lifeExposures": "expositions : {list}",
|
||
"workouts": {
|
||
"title": "Entraînements",
|
||
"summary": "{sessions} séances, {hours} h au total ; en moyenne {perWeek} séances et {minutesPerWeek} minutes par semaine.",
|
||
"colSport": "Sport",
|
||
"colSessions": "Séances",
|
||
"colTime": "Durée",
|
||
"colDistance": "Distance",
|
||
"colEnergy": "Énergie",
|
||
"colHeartRate": "FC moyenne",
|
||
"moreSports": "{count} autres sports sont inclus dans les totaux, sans être listés."
|
||
},
|
||
"medicationEffect": {
|
||
"title": "Changement autour du démarrage des médicaments",
|
||
"colMedication": "Médicament / mesure",
|
||
"colStart": "Début",
|
||
"colLevel": "Changement de niveau (IC 95 %)",
|
||
"colSlope": "Changement de tendance (IC 95 %)",
|
||
"colDays": "Jours avant / après",
|
||
"to": "à",
|
||
"week": "semaine",
|
||
"reasonNoStart": "Aucune date de début enregistrée",
|
||
"reasonBefore": "Trop peu de valeurs avant le démarrage",
|
||
"reasonAfter": "Trop peu de valeurs depuis le démarrage",
|
||
"reasonFit": "Calcul impossible",
|
||
"excludedAdherence": "{count} jours après le démarrage écartés (moins de {floor} % des doses prises)",
|
||
"excludedNotTaking": "{count} jours écartés (en pause ou entre deux périodes de prise)",
|
||
"notTracked": "prises non suivies, aucun jour écarté pour des doses manquées",
|
||
"endDoseChange": "la période s'arrête le {date}, avant le premier changement de dose",
|
||
"days": "{before} jours avant, {after} jours après le démarrage, {excluded} jours écartés",
|
||
"method": "Régression segmentée sur les valeurs quotidiennes, de 90 jours avant à 180 jours au plus après le démarrage, intervalles de Newey-West. Les jours après le démarrage où moins de 80 % des doses des 14 jours précédents ont été prises sont écartés. Décrit une association dans le temps, pas un effet démontré du médicament.",
|
||
"autocorrelation": "forte dépendance à la veille, les plages peuvent donc rester trop étroites",
|
||
"window": "analysé du {from} au {to}, ce qui peut dépasser la période du rapport",
|
||
"windowLine": "Analysé du {from} au {to}. Cette fenêtre peut dépasser la période du rapport."
|
||
}
|
||
},
|
||
"errorBoundary": {
|
||
"title": "Une erreur est survenue",
|
||
"description": "Une erreur inattendue est survenue. Tu peux réessayer, copier les détails techniques ou ouvrir un rapport de bug."
|
||
},
|
||
"notFound": {
|
||
"title": "Cette page n'existe pas.",
|
||
"backToDashboard": "Retour au tableau de bord"
|
||
},
|
||
"offlineBanner": {
|
||
"message": "Pas de connexion : les modifications ne peuvent pas être enregistrées tant que tu n'es pas de nouveau en ligne.",
|
||
"saveFailed": "Enregistrement impossible : tu es hors ligne. Réessaie une fois de nouveau en ligne.",
|
||
"showingCached": "Affichage de tes dernières données synchronisées."
|
||
},
|
||
"demoBanner": {
|
||
"message": "Mode démo : les modifications ne sont pas enregistrées."
|
||
},
|
||
"nav": {
|
||
"dashboard": "Tableau de bord",
|
||
"measurements": "Mesures",
|
||
"medications": "Médicaments",
|
||
"insights": "Insights",
|
||
"achievements": "Succès",
|
||
"settings": "Paramètres",
|
||
"admin": "Console d’administration",
|
||
"logout": "Se déconnecter",
|
||
"login": "Se connecter",
|
||
"notifications": "Notifications",
|
||
"theme": "Thème",
|
||
"themeSystem": "Système",
|
||
"themeDark": "Sombre",
|
||
"themeLight": "Clair",
|
||
"collapseSidebar": "Réduire",
|
||
"expandSidebar": "Développer",
|
||
"collapseSidebarLabel": "Réduire la barre latérale",
|
||
"expandSidebarLabel": "Développer la barre latérale",
|
||
"userMenu": "Menu utilisateur",
|
||
"accountSettings": "Paramètres du compte",
|
||
"mood": "Humeur",
|
||
"coach": "Coach",
|
||
"skipToContent": "Aller au contenu",
|
||
"breadcrumb": "Vous êtes ici",
|
||
"sidebar": "Barre latérale",
|
||
"mainNavigation": "Navigation principale",
|
||
"mobileNavigation": "Navigation mobile",
|
||
"loadingScreen": "Chargement…",
|
||
"more": "Plus",
|
||
"moreSheetTitle": "Plus",
|
||
"moreSheetDescription": "Accédez au reste de HealthLog.",
|
||
"capture": {
|
||
"title": "Enregistrer",
|
||
"description": "Que souhaitez-vous enregistrer ?",
|
||
"measurement": "Mesure",
|
||
"measurementDescription": "Poids, tension artérielle, pouls et plus",
|
||
"medication": "Médicament",
|
||
"medicationDescription": "Marquer une dose comme prise",
|
||
"mood": "Humeur",
|
||
"moodDescription": "Enregistrez votre humeur et des étiquettes",
|
||
"workout": "Entraînement",
|
||
"workoutDescription": "Une séance que vos appareils n’ont pas enregistrée",
|
||
"symptom": "Symptôme",
|
||
"symptomDescription": "L'un de tes propres symptômes, avec son intensité",
|
||
"lifeEventDescription": "Un déménagement, une naissance, un nouvel emploi",
|
||
"lifeEvent": "Événement de vie"
|
||
},
|
||
"cycle": "Cycle",
|
||
"labs": "Analyses",
|
||
"profile": "Profil",
|
||
"vorsorge": "Examens",
|
||
"illness": "Maladie",
|
||
"documents": "Documents",
|
||
"vaccinations": "Vaccinations",
|
||
"mentalWellbeing": "Bien-être mental",
|
||
"timeline": "Chronologie"
|
||
},
|
||
"auth": {
|
||
"login": "Se connecter",
|
||
"register": "S'inscrire",
|
||
"username": "Nom d'utilisateur",
|
||
"password": "Mot de passe",
|
||
"email": "Adresse e-mail",
|
||
"emailPlaceholder": "nom@exemple.fr",
|
||
"emailOrUsername": "Adresse e-mail ou nom d’utilisateur",
|
||
"emailOrUsernamePlaceholder": "nom@exemple.fr ou nomdutilisateur",
|
||
"loginWithPasskey": "Se connecter avec une passkey",
|
||
"loginWithPassword": "Se connecter avec un mot de passe",
|
||
"noAccount": "Pas encore de compte ?",
|
||
"hasAccount": "Déjà un compte ?",
|
||
"loginFailed": "Échec de la connexion",
|
||
"registerFailed": "Échec de l’inscription",
|
||
"invitedBanner": "Vous avez été invité. Créez votre compte même si les inscriptions sont fermées.",
|
||
"alreadySignedIn": {
|
||
"title": "Tu es déjà connecté",
|
||
"body": "Tu es connecté en tant que {username}. Une invitation crée un nouveau compte. Déconnecte-toi pour l'accepter.",
|
||
"signOut": "Se déconnecter et accepter l'invitation"
|
||
},
|
||
"createAccount": "Créer un compte",
|
||
"backToPasskey": "Revenir à la passkey",
|
||
"passkeySetupLater": "Tu peux configurer les passkeys plus tard dans les paramètres.",
|
||
"passwordMinLength": "Min. 12 caractères",
|
||
"passwordTooShort": "Le mot de passe doit comporter au moins {minLength} caractères.",
|
||
"privacyPolicy": "Politique de confidentialité",
|
||
"passwordBreached": "Ce mot de passe figure dans des fuites de données connues. Choisissez-en un autre.",
|
||
"oidc": {
|
||
"signInDefault": "Se connecter avec le SSO",
|
||
"errorDenied": "La connexion a été annulée.",
|
||
"errorNoEmail": "Votre fournisseur d'identité n'a pas transmis d'adresse e-mail vérifiée.",
|
||
"errorEmailUnverified": "Votre fournisseur d'identité n'a pas marqué votre adresse e-mail comme vérifiée.",
|
||
"errorIdentityConflict": "Cette adresse e-mail appartient à un compte déjà lié à une autre identité SSO.",
|
||
"errorRegistrationDisabled": "Aucun compte ne correspond à cette identité et les nouvelles inscriptions sont actuellement fermées.",
|
||
"errorFailed": "L'authentification unique a échoué. Veuillez réessayer.",
|
||
"errorLinkRequired": "Un compte avec cette adresse e-mail existe déjà ici. Connectez-vous-y une fois avec son mot de passe ou sa clé d'accès pour le relier à l'authentification unique."
|
||
},
|
||
"native": {
|
||
"signingInToApp": "Connexion à l'application HealthLog"
|
||
},
|
||
"mfa": {
|
||
"title": "Authentification à deux facteurs",
|
||
"totpHint": "Saisissez le code à 6 chiffres de votre application d'authentification.",
|
||
"recoveryHint": "Saisissez l'un de vos codes de récupération enregistrés.",
|
||
"securityKeyHint": "Utilisez votre clé de sécurité enregistrée pour continuer.",
|
||
"codeLabel": "Code d'authentification",
|
||
"recoveryLabel": "Code de récupération",
|
||
"verify": "Vérifier",
|
||
"verifyFailed": "Échec de la vérification. Veuillez réessayer.",
|
||
"useSecurityKey": "Utiliser une clé de sécurité",
|
||
"useRecoveryCode": "Utiliser un code de récupération",
|
||
"useAuthenticator": "Utiliser votre application d'authentification",
|
||
"backToLogin": "Retour à la connexion",
|
||
"rememberDevice": "Faire confiance à cet appareil pendant 30 jours"
|
||
},
|
||
"enrollMfa": {
|
||
"title": "Configurer un second facteur",
|
||
"body": "Votre administrateur exige un second facteur sur ce compte. Ajoutez une application d'authentification ou une clé de sécurité pour continuer.",
|
||
"signOut": "Se déconnecter"
|
||
},
|
||
"confirmAccess": {
|
||
"title": "Confirmez que c'est bien vous",
|
||
"body": "Un assistant demande à se connecter à vos données HealthLog. Confirmez que c'est bien vous, puis vous déciderez si vous l'autorisez.",
|
||
"action": "Confirmer",
|
||
"failed": "Cela n'a pas fonctionné. Veuillez réessayer.",
|
||
"nothingToConfirm": "Il n'y a rien à confirmer ici. Relancez la connexion depuis votre assistant."
|
||
},
|
||
"insecureTransport": {
|
||
"title": "La connexion ne peut pas aboutir sur cette page",
|
||
"body": "Ce serveur ne pose son cookie de connexion qu'en https://, mais cette page a été ouverte en http://. Le navigateur rejetterait le cookie, la connexion est donc désactivée ici.",
|
||
"fixLan": "Serveur sur un réseau domestique sans TLS : mets SESSION_COOKIE_SECURE=false dans ses paramètres et redémarre-le.",
|
||
"fixHttps": "Serveur derrière un proxy HTTPS : ouvre plutôt l'adresse https:// et vérifie que le proxy transmet X-Forwarded-Proto: https.",
|
||
"localhostNote": "Cette page est sur http://localhost alors que le serveur ne pose son cookie de connexion qu'en https://. La plupart des navigateurs l'acceptent sur localhost ; si tu reviens ici après la connexion, mets SESSION_COOKIE_SECURE=false."
|
||
},
|
||
"claim": {
|
||
"title": "Reprenez votre dossier de santé",
|
||
"titleNamed": "Bienvenue, {name}",
|
||
"description": "Jusqu'ici, votre dossier de santé a été tenu pour vous. Choisissez comment vous connecter et il deviendra votre propre compte. Rien n'est copié ni déplacé.",
|
||
"loading": "Vérification de votre lien…",
|
||
"invalid": "Ce lien ne fonctionne plus",
|
||
"invalidHint": "Il est inconnu, expiré, retiré ou déjà utilisé. Demandez-en un nouveau à la personne qui vous l'a envoyé.",
|
||
"oidcOnly": "Ce serveur n'autorise que l'authentification unique. Continuez plutôt avec votre fournisseur d'identité.",
|
||
"signedInTitle": "Déconnectez-vous d'abord",
|
||
"signedInBody": "Vous êtes connecté en tant que {username}. Ce lien crée une connexion pour quelqu'un d'autre, déconnectez-vous donc avant de l'utiliser.",
|
||
"signOut": "Se déconnecter et continuer",
|
||
"guardiansTitle": "Qui garde l'accès pour l'instant",
|
||
"guardiansHint": "Proposé par les personnes qui ont tenu votre dossier. Vous décidez juste après la connexion.",
|
||
"guardianUnnamed": "Un tuteur",
|
||
"usernameHint": "3 à 30 lettres, chiffres, _ ou -.",
|
||
"usernameReserved": "Les noms d'utilisateur commençant par managed- sont réservés.",
|
||
"emailHint": "Obligatoire, pour pouvoir revenir si vous oubliez votre mot de passe.",
|
||
"consentNote": "Vous confirmez vous-même l'avertissement et toute utilisation de l'IA. D'ici là, rien de votre dossier n'est envoyé à un fournisseur d'IA.",
|
||
"expires": "Ce lien est valable jusqu'au {date}.",
|
||
"submit": "Reprendre",
|
||
"submitting": "Reprise en cours…",
|
||
"errorTaken": "Ce nom d'utilisateur ou cette adresse e-mail est déjà utilisé.",
|
||
"errorRateLimit": "Trop de tentatives. Attendez quelques minutes puis réessayez.",
|
||
"errorFailed": "Cela n'a pas fonctionné. Réessayez dans un instant.",
|
||
"errorOffline": "Le serveur n'a pas été atteint. Vérifiez votre connexion et réessayez.",
|
||
"ssoContinue": "Continuer avec {provider}",
|
||
"ssoStarting": "Redirection…",
|
||
"ssoHint": "Ensuite, vous vous connectez ici avec votre compte {provider}.",
|
||
"ssoDivider": "ou",
|
||
"ssoFallbackName": "l'authentification unique",
|
||
"errorTitle": "La transmission n'a pas abouti",
|
||
"errorSubjectBound": "Cette connexion appartient déjà à un autre compte sur ce serveur. Rouvrez le lien et utilisez un autre compte chez votre fournisseur d'identité.",
|
||
"errorEmailTaken": "Votre fournisseur d'identité a transmis une adresse e-mail déjà utilisée par un autre compte ici. Rouvrez le lien et utilisez un autre compte, ou contactez la personne qui administre le serveur.",
|
||
"errorUsernameTaken": "Quelqu'un a pris ce nom d'utilisateur entre-temps. Rouvrez le lien et choisissez-en un autre.",
|
||
"errorSignedIn": "Vous étiez connecté à votre retour. Déconnectez-vous, puis rouvrez le lien.",
|
||
"errorSso": "La connexion avec votre fournisseur d'identité n'a pas fonctionné. Rouvrez le lien pour réessayer.",
|
||
"signInInstead": "Se connecter à ce compte"
|
||
},
|
||
"inviteInvalid": {
|
||
"title": "Invitation invalide",
|
||
"description": "Ce lien d’invitation est incomplet ou a été mal copié. Demandez un nouveau lien à la personne qui vous a invité.",
|
||
"toLogin": "Aller à la connexion"
|
||
}
|
||
},
|
||
"dashboard": {
|
||
"title": "Tableau de bord",
|
||
"greeting": {
|
||
"morning": "Bonjour",
|
||
"day": "Bonjour",
|
||
"evening": "Bonsoir"
|
||
},
|
||
"welcomeBack": "{greeting}, content de te revoir.",
|
||
"welcomeBackWithName": "{greeting}, {name}, content de te revoir.",
|
||
"greetingSalutation": "Bonjour, {name}",
|
||
"streakLabel": "jours d’affilée",
|
||
"weight": "Poids",
|
||
"bloodPressure": "Tension artérielle",
|
||
"pulse": "Pouls",
|
||
"bodyFat": "Masse grasse",
|
||
"sleep": "Sommeil",
|
||
"steps": "Pas",
|
||
"vo2Max": "VO₂ max",
|
||
"vo2MaxUnit": "mL/(kg·min)",
|
||
"bpInTarget": "TA dans la cible",
|
||
"weightShort": "Poids",
|
||
"bloodPressureSysShort": "TA (Sys)",
|
||
"bloodPressureDiaShort": "TA (Dia)",
|
||
"pulseShort": "Pouls",
|
||
"bodyFatShort": "TG",
|
||
"moodShort": "Humeur",
|
||
"sleepShort": "Sommeil",
|
||
"stepsShort": "Pas",
|
||
"vo2MaxShort": "VO₂ max",
|
||
"bpInTargetWindow90": "TA-cible (90 j)",
|
||
"bpInTargetWindowDynamic": "TA-cible ({days} j)",
|
||
"bpInTargetCollecting": "collecte de données",
|
||
"medications": "Médicaments",
|
||
"quickAddMeasurement": "Saisir une mesure",
|
||
"quickAddMood": "Saisir une humeur",
|
||
"quickAddMedicationIntake": "Saisir une prise",
|
||
"quickAddWorkout": "Saisir un entraînement",
|
||
"quickAddLifeEvent": "Enregistrer un événement de vie",
|
||
"customizeDashboard": "Personnaliser le tableau de bord",
|
||
"medicationIntakeQuickAdd": {
|
||
"sheetDescription": "Enregistre la dose, l’heure et le médicament en quelques touches.",
|
||
"medicationLabel": "Médicament",
|
||
"medicationPlaceholder": "Sélectionner un médicament",
|
||
"doseLabel": "Dose",
|
||
"dosePlaceholder": "p. ex. 5 mg",
|
||
"doseHint": "Prérempli avec la dose standard. Modifiez-la pour enregistrer une dose différente pour cette prise uniquement.",
|
||
"timeLabel": "Heure de la prise",
|
||
"saveError": "Impossible d’enregistrer la prise.",
|
||
"emptyTitle": "Aucun médicament pour l’instant",
|
||
"emptyDescription": "Crée d’abord un médicament avec un horaire, puis reviens ici pour saisir la prise.",
|
||
"emptyCta": "Ajouter un médicament",
|
||
"noneActionableTitle": "Rien à prendre aujourd’hui",
|
||
"noneActionableDescription": "Tes médicaments sont en pause, conservés comme simple fiche, ou leur traitement n’a pas encore commencé ou est déjà terminé. Tu peux toujours ajouter une prise passée depuis l’historique du médicament.",
|
||
"noneActionableCta": "Ouvrir les médicaments"
|
||
},
|
||
"quickEntryDiscard": {
|
||
"title": "Abandonner cette saisie ?",
|
||
"description": "Vous avez des données non enregistrées. Fermer le formulaire et perdre ce que vous avez saisi ?",
|
||
"confirm": "Abandonner",
|
||
"cancel": "Continuer la saisie"
|
||
},
|
||
"compliance7d": "Observance (7 jours)",
|
||
"mood": "Humeur",
|
||
"customizeTitle": "Mise en page du tableau",
|
||
"heroItemsTitle": "Temps forts du jour",
|
||
"heroItemsDescription": "Choisis les types d’éléments qui peuvent apparaître dans les temps forts du jour.",
|
||
"heroItemsNotificationNote": "Les réglages des notifications sont gérés séparément.",
|
||
"heroContentTitle": "La carte du haut affiche",
|
||
"heroContentScore": "Score de santé et résumé du jour",
|
||
"heroContentReminders": "Temps forts du jour",
|
||
"heroItems": {
|
||
"coach_checkin": "Bilan avec Coach",
|
||
"dose_window": "Doses de médicaments",
|
||
"preventive_care": "Prévention",
|
||
"sync_issue": "Problèmes de synchronisation",
|
||
"milestone": "Étapes franchies",
|
||
"ecg_new_recording": "Nouveaux enregistrements ECG",
|
||
"tension_window": "Périodes de tension",
|
||
"same_time_baseline": "Activité à la même heure",
|
||
"upcoming_visit": "Rendez-vous"
|
||
},
|
||
"layoutReset": "Rétablir les valeurs par défaut",
|
||
"layoutResetTitle": "Réinitialiser la disposition du tableau de bord ?",
|
||
"layoutResetBody": "La disposition de tes tuiles et tes choix pour les temps forts du jour reviennent aux valeurs par défaut.",
|
||
"layoutResetConfirm": "Réinitialiser la disposition",
|
||
"layoutSaveSuccess": "Mise en page enregistrée",
|
||
"layoutSaveError": "Impossible d’enregistrer la mise en page",
|
||
"layoutConflictReloaded": "Mise en page rechargée depuis le serveur. Veuillez refaire votre modification.",
|
||
"layoutResetSuccess": "Mise en page par défaut restaurée",
|
||
"layoutUsingDefaults": "Mise en page par défaut active",
|
||
"layoutCustomized": "Mise en page personnalisée active",
|
||
"moveUp": "Monter",
|
||
"moveDown": "Descendre",
|
||
"layoutTileColumn": "Tuile",
|
||
"layoutChartColumn": "Graphique",
|
||
"layoutNativeOnlyTitle": "Affiché dans l'application mobile",
|
||
"layoutNativeOnlyHint": "Ces widgets sont dessinés par l'application mobile, pas par cette page. Ils sont enregistrés dans la même disposition : c'est ici que leur visibilité se règle.",
|
||
"dragHandle": "Glisser pour réordonner",
|
||
"dragHandleHint": "Glisse la poignée pour réordonner ce widget. Tu peux aussi utiliser les flèches Haut et Bas, ou cibler la poignée puis appuyer sur Espace plus les flèches.",
|
||
"emptyTitle": "Ton tableau de bord est vide",
|
||
"emptyDescription": "Saisis ta première mesure ou humeur. Les tuiles et graphiques apparaissent automatiquement dès qu’il y a des données.",
|
||
"emptyAddMeasurement": "Saisir la première mesure",
|
||
"staleHint": "Dernière valeur il y a {count} j",
|
||
"staleHintWeeksOne": "Dernière valeur il y a 1 semaine",
|
||
"staleHintWeeksOther": "Dernière valeur il y a {count} semaines",
|
||
"staleHintWeeksFew": "Dernière valeur il y a {count} semaines",
|
||
"staleHintMonthsOne": "Dernière valeur il y a 1 mois",
|
||
"staleHintMonthsOther": "Dernière valeur il y a {count} mois",
|
||
"staleHintMonthsFew": "Dernière valeur il y a {count} mois",
|
||
"recentWorkouts": {
|
||
"title": "Entraînements récents",
|
||
"viewAll": "Tout voir",
|
||
"empty": {
|
||
"title": "Aucun entraînement",
|
||
"cta": "Connecte une source de données dans les réglages pour afficher les entraînements ici."
|
||
}
|
||
},
|
||
"metric": {
|
||
"title": {
|
||
"weight": "Poids",
|
||
"bloodPressure": "Tension artérielle",
|
||
"pulse": "Pouls",
|
||
"bodyFat": "Masse grasse",
|
||
"glucose": "Glycémie",
|
||
"sleep": "Sommeil",
|
||
"steps": "Pas",
|
||
"totalBodyWater": "Eau corporelle totale",
|
||
"boneMass": "Masse osseuse",
|
||
"oxygenSaturation": "Saturation en oxygène",
|
||
"mood": "Humeur",
|
||
"bmi": "IMC"
|
||
},
|
||
"unit": {
|
||
"weight": "kg",
|
||
"bloodPressure": "mmHg",
|
||
"pulse": "bpm",
|
||
"bodyFat": "%",
|
||
"glucose": "mg/dL",
|
||
"sleep": "h",
|
||
"steps": "pas",
|
||
"totalBodyWater": "kg",
|
||
"boneMass": "kg",
|
||
"oxygenSaturation": "%",
|
||
"mood": "/5",
|
||
"bmi": "kg/m²"
|
||
}
|
||
},
|
||
"keyBackupBanner": {
|
||
"title": "Sauvegarde ta clé de chiffrement",
|
||
"body": "Sans copie de la clé, tes données ne peuvent pas être récupérées après une réinstallation. Ça prend une minute.",
|
||
"action": "Ouvrir l'étape"
|
||
},
|
||
"quickAddSymptom": "Noter un symptôme",
|
||
"todayCardVisible": "Afficher la carte du haut"
|
||
},
|
||
"measurements": {
|
||
"title": "Mesures",
|
||
"subtitle": "Saisis tes mesures et consulte l'historique complet.",
|
||
"addMeasurement": "Ajouter",
|
||
"editMeasurement": "Modifier la mesure",
|
||
"type": "Type",
|
||
"value": "Valeur",
|
||
"date": "Date",
|
||
"source": "Source",
|
||
"notes": "Notes",
|
||
"typeWeight": "Poids",
|
||
"typeBloodPressure": "Tension artérielle",
|
||
"typeBpSys": "Sys",
|
||
"typeBpDia": "Dia",
|
||
"typePulse": "Pouls",
|
||
"typeBodyFat": "Graisse corporelle",
|
||
"typeSleep": "Sommeil",
|
||
"typeSteps": "Pas",
|
||
"typeBloodGlucose": "Glycémie",
|
||
"typeTotalBodyWater": "Eau corporelle totale",
|
||
"typeBoneMass": "Masse osseuse",
|
||
"typeOxygenSaturation": "Saturation en oxygène",
|
||
"typeHeartRateVariability": "Variabilité de la fréquence cardiaque",
|
||
"typeRestingHeartRate": "Fréquence cardiaque au repos",
|
||
"typeActiveEnergyBurned": "Énergie active",
|
||
"typeFlightsClimbed": "Étages",
|
||
"typeWalkingRunningDistance": "Distance à pied et en course",
|
||
"typeVo2Max": "VO₂ max",
|
||
"typeBodyTemperature": "Température corporelle",
|
||
"typeFatFreeMass": "Masse non grasse",
|
||
"typeFatMass": "Masse grasse",
|
||
"typeMuscleMass": "Masse musculaire",
|
||
"typeSkinTemperature": "Température cutanée",
|
||
"typePulseWaveVelocity": "Vitesse de l’onde de pouls",
|
||
"typeVascularAge": "Âge vasculaire",
|
||
"typeVisceralFat": "Graisse viscérale",
|
||
"typeAudioExposureEnv": "Exposition au bruit (environnement)",
|
||
"typeAudioExposureHeadphone": "Exposition au bruit (écouteurs)",
|
||
"typeTimeInDaylight": "Temps à la lumière du jour",
|
||
"typeWalkingSteadiness": "Stabilité à la marche",
|
||
"typeAudioExposureEvent": "Événement d’écoute forte",
|
||
"typeRespiratoryRate": "Fréquence respiratoire",
|
||
"typeBodyMassIndex": "Indice de masse corporelle",
|
||
"typeLeanBodyMass": "Masse maigre",
|
||
"typeWalkingHeartRateAverage": "Fréquence cardiaque à la marche (moy.)",
|
||
"typeWalkingAsymmetry": "Asymétrie de la marche",
|
||
"typeWalkingDoubleSupport": "Double appui à la marche",
|
||
"typeWalkingStepLength": "Longueur du pas",
|
||
"typeWalkingSpeed": "Vitesse de marche",
|
||
"glucoseContext": "Contexte",
|
||
"glucoseContextFasting": "À jeun (≥8 h sans repas)",
|
||
"glucoseContextPostprandial": "Postprandial (2 h après le repas)",
|
||
"glucoseContextRandom": "Indifférent / sans contexte",
|
||
"glucoseContextBedtime": "Avant le coucher",
|
||
"unitHours": "Heures",
|
||
"unitSteps": "Pas",
|
||
"sourceManual": "Manuelle",
|
||
"sourceWithings": "Withings",
|
||
"sourceImport": "Importer",
|
||
"sourceAppleHealth": "Apple Health",
|
||
"systolicLabel": "Systolique (mmHg)",
|
||
"diastolicLabel": "Diastolique (mmHg)",
|
||
"pulseLabel": "Pouls (bpm)",
|
||
"valueWithUnit": "Valeur ({unit})",
|
||
"timestamp": "Heure",
|
||
"timestampBackdateHint": "Ajustez la date et l'heure pour enregistrer un relevé passé.",
|
||
"notesPlaceholder": "p. ex. après le repas",
|
||
"formReset": "Réinitialiser le formulaire",
|
||
"saveError": "Erreur lors de l’enregistrement",
|
||
"duplicateTimestamp": "Une mesure de ce type existe déjà à cet horodatage.",
|
||
"serverOwnedSource": "Les valeurs provenant d’une source connectée ne peuvent pas être modifiées, mais l’horodatage et la note restent modifiables.",
|
||
"deleteError": "Erreur lors de la suppression",
|
||
"deletedToast": "Mesure supprimée",
|
||
"restoredToast": "Mesure restaurée",
|
||
"restoreError": "Échec de la restauration",
|
||
"invalidValue": "Saisis une valeur valide.",
|
||
"invalidTimestamp": "Choisis une date et une heure valides.",
|
||
"loginRequired": "Connecte-toi pour voir tes mesures.",
|
||
"allTypes": "Tous les types",
|
||
"measurementCount": "{count} mesures",
|
||
"emptyTitle": "Aucune mesure pour l’instant",
|
||
"emptyDescription": "Saisis du poids, de la tension, du pouls ou d’autres valeurs pour repérer les tendances.",
|
||
"emptyFilteredTitle": "Aucune mesure ne correspond au filtre",
|
||
"emptyFilteredDescription": "Choisis un autre type ou supprime le filtre pour voir toutes les mesures.",
|
||
"emptyAddFirst": "Saisir la première mesure",
|
||
"emptyResetFilter": "Afficher tous les types",
|
||
"comment": "Commentaire",
|
||
"actions": "Actions",
|
||
"deleteConfirmTitle": "Supprimer la mesure ?",
|
||
"deleteConfirmDescription": "Cette mesure sera supprimée. Vous pourrez annuler cette action pendant un court instant juste après.",
|
||
"pageInfo": "Page {page} sur {total}",
|
||
"previousPage": "Page précédente",
|
||
"nextPage": "Page suivante",
|
||
"dailyTotalCaption": "({count} échantillons)",
|
||
"openMetricInsights": "Ouvrir l'analyse {type}",
|
||
"sleepNapCaption": "dont {count} sieste(s)",
|
||
"sleepAwakeningsCaption": "{count} réveil(s)",
|
||
"expandDay": "Afficher les échantillons de ce jour",
|
||
"collapseDay": "Masquer les échantillons de ce jour",
|
||
"loadError": "Impossible de charger les mesures.",
|
||
"typeCardioRecovery": "Récupération cardiaque",
|
||
"typeWristTemperature": "Température du poignet",
|
||
"typeFallCount": "Chutes",
|
||
"typeSixMinuteWalkDistance": "Distance de marche de 6 minutes",
|
||
"typeStairAscentSpeed": "Vitesse en montée d'escaliers",
|
||
"typeStairDescentSpeed": "Vitesse en descente d'escaliers",
|
||
"typeBreathingDisturbances": "Troubles respiratoires du sommeil",
|
||
"typeIrregularRhythmNotification": "Notification de rythme irrégulier",
|
||
"typeHighHeartRateEvent": "Notification de fréquence cardiaque élevée",
|
||
"typeLowHeartRateEvent": "Notification de fréquence cardiaque basse",
|
||
"typeWalkingSteadinessEvent": "Alerte de stabilité de la marche",
|
||
"typeBreathingDisturbanceEvent": "Trouble respiratoire",
|
||
"typeRecoveryScore": "Score de récupération",
|
||
"typeStressScore": "Score de stress",
|
||
"typeStrainScore": "Score d'effort",
|
||
"typeHrvRmssd": "VFC (RMSSD)",
|
||
"typeDayStrain": "Effort du jour",
|
||
"typeWorkoutStrain": "Effort de la séance",
|
||
"typeSleepPerformance": "Performance du sommeil",
|
||
"typeSleepEfficiency": "Efficacité du sommeil",
|
||
"typeSleepConsistency": "Régularité du sommeil",
|
||
"typeSleepNeed": "Besoin de sommeil",
|
||
"typeEnergyExpenditureKj": "Dépense énergétique",
|
||
"typeAverageHeartRate": "Fréquence cardiaque moyenne",
|
||
"typeMaxHeartRate": "Fréquence cardiaque maximale",
|
||
"typeSleepDisturbanceCount": "Perturbations du sommeil",
|
||
"typeAnsCharge": "Charge SNA",
|
||
"typeCardioLoad": "Charge cardio",
|
||
"typeSleepScore": "Score de sommeil",
|
||
"typeBodyTemperatureDeviation": "Écart de température corporelle",
|
||
"typeResilience": "Résilience",
|
||
"sourceComputed": "Calculé",
|
||
"sourceWhoop": "WHOOP",
|
||
"sourceFitbit": "Fitbit",
|
||
"sourceNightscout": "Nightscout",
|
||
"sourcePolar": "Polar",
|
||
"sourceOura": "Oura",
|
||
"sourceTelegram": "Telegram",
|
||
"sourceMcp": "MCP",
|
||
"sourceGoogleHealth": "Google Health",
|
||
"sourceStrava": "Strava",
|
||
"sourceExternal": "Appareil externe",
|
||
"bulkDeleteSuccess": "{count} mesures supprimées",
|
||
"bulkDeleteSuccessOne": "Mesure supprimée",
|
||
"bulkDeleteError": "Erreur lors de la suppression des mesures sélectionnées",
|
||
"bulkDeleteConfirmTitle": "Supprimer {count} mesures ?",
|
||
"bulkDeleteConfirmTitleOne": "Supprimer cette mesure ?",
|
||
"bulkDeleteConfirmBody": "Les {count} mesures sélectionnées seront supprimées. Vous pourrez annuler cette action pendant un court instant juste après.",
|
||
"bulkDeleteConfirmBodyOne": "La mesure sélectionnée sera supprimée. Vous pourrez annuler cette action pendant un court instant juste après.",
|
||
"typePhq9Score": "Score PHQ-9",
|
||
"typeGad7Score": "Score GAD-7",
|
||
"typeGripStrength": "Force de préhension",
|
||
"typePainNrs": "Douleur (0–10)",
|
||
"typeWaistCircumference": "Tour de taille",
|
||
"typeWaistToHeight": "Rapport taille-taille",
|
||
"unitScore": "pts",
|
||
"unitRatio": "ratio",
|
||
"unitRating": "niveau",
|
||
"typeWho5Score": "Score WHO-5",
|
||
"typeSciScore": "Score SCI",
|
||
"typeExerciseMinutes": "Minutes d’exercice",
|
||
"typeStandMinutes": "Minutes debout",
|
||
"typeStandHours": "Heures debout",
|
||
"typeMindfulMinutes": "Minutes de pleine conscience",
|
||
"typeStateOfMindValence": "État d’esprit",
|
||
"typeAfibBurden": "Charge de FA",
|
||
"typeIndoorCo2": "CO₂ intérieur",
|
||
"typeIndoorTemperature": "Température intérieure",
|
||
"typeIndoorHumidity": "Humidité intérieure",
|
||
"durationReadAs": "Compris comme {duration}",
|
||
"durationHoursMinutes": "{hours} h {minutes} min",
|
||
"durationHoursOnly": "{hours} h",
|
||
"durationMinutesOnly": "{minutes} min",
|
||
"durationInvalid": "Saisis une durée comme 7,5, 7:30 ou 7h 30m.",
|
||
"durationTooLong": "Une saisie ne peut pas dépasser 24 heures.",
|
||
"sourceHealthConnect": "Health Connect"
|
||
},
|
||
"metricCatalog": {
|
||
"title": "Ce que HealthLog peut suivre",
|
||
"description": "Tous les domaines de mesures pris en charge par HealthLog, que tu aies déjà des données ou non, et ce qui les fournirait.",
|
||
"statusPresent": "Suivi",
|
||
"statusAbsent": "Pas encore suivi",
|
||
"statusModuleOff": "Désactivé",
|
||
"loadError": "Impossible de charger l'état de suivi.",
|
||
"connectCta": "Connecter une source",
|
||
"viewCta": "Voir",
|
||
"ecg": {
|
||
"source": "Tracés ECG à une dérivation depuis une montre compatible (Withings ScanWatch aujourd'hui), synchronisés automatiquement."
|
||
},
|
||
"watchdog": {
|
||
"title": "Surveillance automatique",
|
||
"description": "HealthLog surveille aussi discrètement en arrière-plan (notifications de rythme irrégulier et de perturbations respiratoires envoyées par une montre connectée, alertes d'écart par rapport à ta valeur de référence, ainsi que des changements notables entre tes deux derniers bilans de laboratoire) et n'affiche une carte que si quelque chose se démarque. Si au moins une de ces sources est connectée, l'absence de carte est bon signe, pas une fonctionnalité manquante ; si aucune ne l'est encore, c'est simplement qu'il n'y a rien à surveiller."
|
||
}
|
||
},
|
||
"mood": {
|
||
"title": "Humeur",
|
||
"subtitle": "Tendance et entrées d’humeur",
|
||
"mentalWellbeingLink": "Faire un bilan de bien-être mental",
|
||
"addEntry": "Ajouter",
|
||
"editEntry": "Modifier l’entrée",
|
||
"moodLevel": "Humeur",
|
||
"heroQuestion": "Comment vas-tu ?",
|
||
"factorYes": "Oui",
|
||
"factorNo": "Non",
|
||
"factorRatingOption": "{label} : {value} sur {max}",
|
||
"tags": "Étiquettes",
|
||
"tagsPlaceholder": "p. ex. sport, travail, famille",
|
||
"tagsHelp": "Sépare par des virgules",
|
||
"timestamp": "Heure",
|
||
"date": "Date",
|
||
"source": "Source",
|
||
"levelSuperGut": "Excellent",
|
||
"levelGut": "Bien",
|
||
"levelOkay": "Correct",
|
||
"levelSchlecht": "Mauvais",
|
||
"levelLausig": "Pénible",
|
||
"sourceMoodlog": "moodLog",
|
||
"allMoods": "Toutes les humeurs",
|
||
"entryCount": "{count} entrées",
|
||
"emptyTitle": "Pas encore d’entrée d’humeur",
|
||
"emptyDescription": "Note comment tu te sens aujourd’hui pour repérer des tendances au fil du temps.",
|
||
"emptyFilteredTitle": "Aucune entrée ne correspond au filtre",
|
||
"emptyFilteredDescription": "Choisis un autre niveau ou supprime le filtre pour voir toutes les entrées.",
|
||
"emptyAddFirst": "Saisir la première humeur",
|
||
"emptyResetFilter": "Afficher toutes les humeurs",
|
||
"actions": "Actions",
|
||
"formReset": "Réinitialiser le formulaire",
|
||
"noteCharCount": "{count}/{max}",
|
||
"formResetConfirmTitle": "Réinitialiser ce formulaire ?",
|
||
"formResetConfirmBody": "Cela efface l’humeur, les tags et la note que vous avez saisis. Cette action est irréversible.",
|
||
"formResetConfirmAction": "Réinitialiser",
|
||
"saveError": "Erreur lors de l’enregistrement",
|
||
"tagsNotSaved": "Enregistré. Les étiquettes qui ne sont plus disponibles ont été omises.",
|
||
"deleteError": "Erreur lors de la suppression",
|
||
"deletedToast": "Entrée supprimée",
|
||
"restoredToast": "Entrée restaurée",
|
||
"restoreError": "Échec de la restauration",
|
||
"invalidTimestamp": "Choisis une date et une heure valides.",
|
||
"deleteConfirmTitle": "Supprimer l’entrée ?",
|
||
"deleteConfirmDescription": "Cette entrée d’humeur sera supprimée. Vous pourrez annuler cette action pendant un court instant juste après.",
|
||
"pageInfo": "Page {page} sur {total}",
|
||
"previousPage": "Page précédente",
|
||
"nextPage": "Page suivante",
|
||
"loginRequired": "Connecte-toi pour voir tes entrées d’humeur.",
|
||
"note": "Note",
|
||
"noteCollapse": "Réduire la note",
|
||
"noteExpand": "Afficher la note complète",
|
||
"notePlaceholder": "Ajoutez une note sur votre ressenti…",
|
||
"tagPicker": "Étiquettes",
|
||
"tagCategory": {
|
||
"feelings": "Émotions",
|
||
"sleep": "Sommeil",
|
||
"health": "Santé",
|
||
"social": "Social",
|
||
"work": "Travail",
|
||
"hobbies": "Loisirs",
|
||
"factors": "Facteurs",
|
||
"custom": "Personnalisées"
|
||
},
|
||
"tag": {
|
||
"happy": "heureux",
|
||
"excited": "enthousiaste",
|
||
"grateful": "reconnaissant",
|
||
"relaxed": "détendu",
|
||
"content": "satisfait",
|
||
"tired": "fatigué",
|
||
"unsure": "incertain",
|
||
"bored": "ennuyé",
|
||
"tense": "tendu",
|
||
"angry": "en colère",
|
||
"stressed": "stressé",
|
||
"sad": "triste",
|
||
"sleptWell": "bien dormi",
|
||
"sleptOk": "sommeil moyen",
|
||
"sleptPoorly": "mal dormi",
|
||
"earlyNight": "couché tôt",
|
||
"workedOut": "fait du sport",
|
||
"ateWell": "bien mangé",
|
||
"hydrated": "bu de l'eau",
|
||
"walked": "marché",
|
||
"alcohol": "alcool",
|
||
"caffeine": "caféine",
|
||
"nicotine": "nicotine",
|
||
"family": "famille",
|
||
"friends": "amis",
|
||
"party": "fête",
|
||
"alone": "seul",
|
||
"productive": "productif",
|
||
"overtime": "heures sup",
|
||
"dayOff": "jour de repos",
|
||
"travel": "voyage",
|
||
"sickDay": "jour de maladie",
|
||
"movies": "films",
|
||
"reading": "lecture",
|
||
"gaming": "jeux vidéo",
|
||
"music": "musique",
|
||
"outdoors": "plein air",
|
||
"fastFood": "fast-food",
|
||
"noSweets": "sans sucreries",
|
||
"bigMeal": "gros repas",
|
||
"factorWork": "travail",
|
||
"factorSocial": "vie sociale",
|
||
"factorSleepQuality": "qualité du sommeil",
|
||
"factorStress": "stress",
|
||
"factorConflict": "conflit",
|
||
"factorFamily": "famille",
|
||
"factorSadness": "tristesse",
|
||
"praise": "compliment"
|
||
},
|
||
"sourceManual": "Manuel",
|
||
"sourceWeb": "Web",
|
||
"sourceTelegram": "Telegram",
|
||
"sourceDaylio": "Daylio",
|
||
"bulkDeleteSuccess": "{count} entrées supprimées",
|
||
"bulkDeleteSuccessOne": "Entrée supprimée",
|
||
"bulkDeleteError": "Erreur lors de la suppression des entrées sélectionnées",
|
||
"bulkDeleteConfirmTitle": "Supprimer {count} entrées ?",
|
||
"bulkDeleteConfirmTitleOne": "Supprimer cette entrée ?",
|
||
"bulkDeleteConfirmBody": "Les {count} entrées d'humeur sélectionnées seront supprimées. Vous pourrez annuler cette action pendant un court instant juste après.",
|
||
"bulkDeleteConfirmBodyOne": "L'entrée d'humeur sélectionnée sera supprimée. Vous pourrez annuler cette action pendant un court instant juste après.",
|
||
"customize": "Personnaliser les étiquettes d’humeur",
|
||
"addTagInline": "Ajouter une étiquette",
|
||
"manage": {
|
||
"groupsTitle": "Groupes",
|
||
"groupsDescription": "Crée tes propres groupes et définis leur ordre dans le sélecteur.",
|
||
"newGroup": "Nouveau groupe",
|
||
"groupLabel": "Nom du groupe",
|
||
"groupIcon": "Icône",
|
||
"groupCreated": "Groupe créé",
|
||
"groupRenamed": "Groupe enregistré",
|
||
"groupDeleteTitle": "Supprimer le groupe ?",
|
||
"groupDeleteBody": "Les étiquettes de ce groupe reviennent dans leur groupe d’origine. Aucune saisie n’est supprimée.",
|
||
"groupDeleted": "Groupe supprimé",
|
||
"groupEmpty": "Pas encore de groupe personnel.",
|
||
"groupLimitReached": "Limite de groupes atteinte",
|
||
"tagsTitle": "Étiquettes",
|
||
"tagsDescription": "Masque, réordonne, déplace ou modifie les étiquettes du sélecteur.",
|
||
"newTag": "Nouvelle étiquette",
|
||
"tagLabel": "Nom de l’étiquette",
|
||
"tagIcon": "Icône",
|
||
"tagGroup": "Groupe",
|
||
"usageCount": "{count} saisies",
|
||
"hideTag": "Masquer l’étiquette",
|
||
"showTag": "Afficher l’étiquette",
|
||
"moveToGroup": "Déplacer vers un groupe",
|
||
"archive": "Archiver",
|
||
"restore": "Restaurer",
|
||
"archivedTitle": "Étiquettes archivées",
|
||
"archivedDescription": "Les étiquettes archivées restent dans tes saisies passées. Elles disparaissent seulement du sélecteur.",
|
||
"archivedEmpty": "Rien d’archivé.",
|
||
"purgeTitle": "Supprimer l’étiquette définitivement ?",
|
||
"purgeBody": "L’étiquette sera retirée de {count} saisies passées. Cette action est irréversible.",
|
||
"purgeAction": "Supprimer définitivement",
|
||
"purged": "Étiquette supprimée",
|
||
"tagLimitReached": "Limite d’étiquettes atteinte",
|
||
"iconPickerTitle": "Choisir une icône",
|
||
"iconSearchPlaceholder": "Rechercher des icônes…",
|
||
"iconSearchEmpty": "Aucune icône ne correspond.",
|
||
"iconSearchClear": "Effacer la recherche",
|
||
"orderSave": "Enregistrer l’ordre",
|
||
"orderSaved": "Ordre enregistré",
|
||
"moveUp": "Monter",
|
||
"moveDown": "Descendre",
|
||
"iconGroupEmotions": "Émotions",
|
||
"iconGroupActivities": "Activités",
|
||
"iconGroupHealth": "Santé",
|
||
"iconGroupFood": "Nourriture et boissons",
|
||
"iconGroupWeather": "Météo",
|
||
"iconGroupPlaces": "Lieux",
|
||
"iconGroupMisc": "Autres"
|
||
},
|
||
"sectionMoreTags": "Plus de tags",
|
||
"sectionNoteDetails": "Note et détails",
|
||
"quickTagsHelp": "Vos tags fréquents, en un geste",
|
||
"quickTagsExpand": "Plus",
|
||
"loadError": "Impossible de charger vos entrées d'humeur.",
|
||
"sectionLevelA": "État d'esprit",
|
||
"sectionLevelAHelp": "Facultatif. Ce que vous ne touchez pas reste vide.",
|
||
"dimensionNotAnswered": "non renseigné",
|
||
"dimensionClear": "effacer",
|
||
"dimensionValueText": "{value} sur {max} : {low} à {high}",
|
||
"dimension": {
|
||
"a1": {
|
||
"label": "Humeur",
|
||
"low": "très désagréable",
|
||
"high": "très agréable"
|
||
},
|
||
"a2": {
|
||
"label": "Stress",
|
||
"low": "parfaitement détendu",
|
||
"high": "extrêmement tendu"
|
||
},
|
||
"a3": {
|
||
"label": "Énergie",
|
||
"low": "épuisé",
|
||
"high": "plein d'énergie"
|
||
},
|
||
"a4": {
|
||
"label": "Lien social",
|
||
"low": "isolé",
|
||
"high": "compris et soutenu"
|
||
},
|
||
"a5": {
|
||
"label": "Stabilité",
|
||
"low": "complètement dépassé",
|
||
"high": "pleinement capable d'agir"
|
||
}
|
||
},
|
||
"context": {
|
||
"section": {
|
||
"work": "Travail",
|
||
"contacts": "Contacts",
|
||
"leisure": "Temps libre",
|
||
"events": "Événement"
|
||
},
|
||
"field": {
|
||
"workStatus": "Journée de travail",
|
||
"workMinutes": "Temps travaillé",
|
||
"overtimeMinutes": "Heures supplémentaires",
|
||
"workLoad": "Charge de travail",
|
||
"workSatisfaction": "Satisfaction au travail",
|
||
"contactCircles": "Avec qui le contact a eu lieu",
|
||
"contactForm": "Forme du contact",
|
||
"contactExtent": "Durée",
|
||
"contactQuality": "Qualité du contact",
|
||
"contactSupport": "Soutien ressenti",
|
||
"leisureCategories": "À quoi le temps libre a servi",
|
||
"leisureMinutes": "Temps pour soi",
|
||
"leisureJoy": "Plaisir",
|
||
"leisureRecovery": "Récupération",
|
||
"eventType": "Ce qui s'est passé",
|
||
"eventValence": "Comment cela a été vécu",
|
||
"eventAt": "Quand",
|
||
"notes": "Note"
|
||
},
|
||
"workStatus": {
|
||
"off": "Pas de travail",
|
||
"partial": "Une partie de la journée",
|
||
"regular": "Journée normale",
|
||
"overtime": "Plus longtemps que d'habitude"
|
||
},
|
||
"contactCircles": {
|
||
"partner": "Partenaire",
|
||
"child": "Enfant",
|
||
"family": "Famille",
|
||
"friends": "Amis",
|
||
"colleagues": "Collègues",
|
||
"acquaintances": "Connaissances",
|
||
"professional": "Accompagnement professionnel",
|
||
"other": "Autres"
|
||
},
|
||
"contactForm": {
|
||
"inPerson": "En personne",
|
||
"phone": "Téléphone",
|
||
"video": "Appel vidéo",
|
||
"written": "Par écrit"
|
||
},
|
||
"contactExtent": {
|
||
"brief": "Bref",
|
||
"medium": "Moyen",
|
||
"extended": "Prolongé"
|
||
},
|
||
"leisureCategories": {
|
||
"film": "Film ou série",
|
||
"reading": "Lecture",
|
||
"gaming": "Jeux vidéo",
|
||
"music": "Musique",
|
||
"creative": "Activité créative",
|
||
"outing": "Sortie",
|
||
"garden": "Jardin",
|
||
"cooking": "Cuisine",
|
||
"timeWithChild": "Temps avec l'enfant",
|
||
"relaxation": "Repos",
|
||
"other": "Autre chose"
|
||
},
|
||
"eventType": {
|
||
"goodNews": "Bonne nouvelle",
|
||
"badNews": "Mauvaise nouvelle",
|
||
"success": "Quelque chose a réussi",
|
||
"disappointment": "Une déception",
|
||
"conflict": "Un conflit",
|
||
"appointment": "Un rendez-vous",
|
||
"familyEvent": "Un événement familial",
|
||
"change": "Un changement",
|
||
"unexpected": "Quelque chose d'inattendu"
|
||
},
|
||
"rating": {
|
||
"workLoad": {
|
||
"low": "aucune pression",
|
||
"high": "sous forte pression"
|
||
},
|
||
"workSatisfaction": {
|
||
"low": "pas du tout satisfait",
|
||
"high": "très satisfait"
|
||
},
|
||
"contactQuality": {
|
||
"low": "ne m'a pas fait de bien",
|
||
"high": "m'a fait beaucoup de bien"
|
||
},
|
||
"contactSupport": {
|
||
"low": "pas soutenu",
|
||
"high": "bien soutenu"
|
||
},
|
||
"leisureJoy": {
|
||
"low": "aucun plaisir",
|
||
"high": "beaucoup de plaisir"
|
||
},
|
||
"leisureRecovery": {
|
||
"low": "pas reposant",
|
||
"high": "très reposant"
|
||
},
|
||
"eventValence": {
|
||
"low": "nettement négatif",
|
||
"high": "nettement positif"
|
||
}
|
||
}
|
||
},
|
||
"dayContext": {
|
||
"minutesPlaceholder": "Minutes",
|
||
"contactsHelp": "Le nombre de personnes ne dit rien de la journée. Ce qui compte, c'est le ressenti du contact.",
|
||
"notePlaceholder": "Ce qui appartient encore à cette journée",
|
||
"notRecorded": "non enregistré",
|
||
"linkedTitle": "Depuis tes autres modules",
|
||
"linkedHelp": "Lu là où c'est enregistré. Modifie-le là-bas et cela change ici.",
|
||
"linkedSleep": "Sommeil",
|
||
"linkedInBed": "Au lit",
|
||
"linkedSteps": "Pas",
|
||
"linkedActiveEnergy": "Énergie active",
|
||
"linkedRestingHeartRate": "Fréquence cardiaque au repos",
|
||
"linkedHrv": "Variabilité cardiaque",
|
||
"bodyLogged": "Consigné dans le journal de maladie : {count} symptômes",
|
||
"bodyNotLogged": "Rien n'est consigné dans le journal de maladie pour cette journée",
|
||
"openIllness": "Ouvrir"
|
||
},
|
||
"sourceNotification": "Notification",
|
||
"tagCatalogLoadError": "Impossible de charger les étiquettes."
|
||
},
|
||
"medications": {
|
||
"title": "Médicaments",
|
||
"subtitle": "Médication, horaires et prises",
|
||
"loginRequired": "Connecte-toi pour gérer tes médicaments.",
|
||
"addMedication": "Ajouter",
|
||
"firstMedication": "Ajouter le premier médicament",
|
||
"addChoice": {
|
||
"logIntake": "Enregistrer une prise",
|
||
"newMedication": "Nouveau médicament"
|
||
},
|
||
"takeAllDue": {
|
||
"button": "Prendre toutes les doses dues",
|
||
"dialogTitle": "Prendre les médicaments dus",
|
||
"dialogDescription": "Ces médicaments sont à prendre maintenant. Confirmez pour les enregistrer tous comme pris.",
|
||
"confirm": "Tout prendre ({count})",
|
||
"successToast": "{count} prises enregistrées",
|
||
"partialToast": "{taken} enregistrées, {failed} échouées. Veuillez réessayer",
|
||
"failedToast": "Aucune prise enregistrée. Veuillez réessayer"
|
||
},
|
||
"logIntake": {
|
||
"dialogTitle": "Enregistrer une prise",
|
||
"dialogDescription": "Enregistrez une dose pour un médicament existant. Vous pouvez l’antidater à une date et une heure passées.",
|
||
"medicationLabel": "Médicament",
|
||
"slotLabel": "Créneau du planning",
|
||
"slotNone": "Aucun créneau précis",
|
||
"doseLabel": "Dose",
|
||
"doseHint": "Prérempli avec la dose du médicament ou du créneau. Modifiez-la pour enregistrer une dose différente pour cette prise uniquement.",
|
||
"takenAtLabel": "Date et heure",
|
||
"takenAtHint": "Par défaut maintenant ; choisissez une date et une heure antérieures pour enregistrer une dose passée.",
|
||
"skippedLabel": "Enregistrer comme ignorée",
|
||
"noMedications": "Ajoutez d’abord un médicament, puis vous pourrez enregistrer des prises pour celui-ci.",
|
||
"cancel": "Annuler",
|
||
"submit": "Enregistrer la prise",
|
||
"slotError": "Le créneau sélectionné n’a pas pu être associé à une heure. Choisissez un autre créneau ou « Aucun créneau précis »."
|
||
},
|
||
"emptyTitle": "Aucun médicament pour l’instant",
|
||
"emptyDescription": "Crée des médicaments, des doses et des fenêtres horaires pour suivre l’observance.",
|
||
"loadFailed": "Impossible de charger les médicaments",
|
||
"retryLoad": "Réessayer",
|
||
"inactive": "En pause",
|
||
"intakeHistory": "Historique des prises",
|
||
"openDetailPage": "Ouvrir la page de détail du médicament",
|
||
"compliance": "Observance",
|
||
"importIntakes": "Importer les prises",
|
||
"importDescription": "Collez un tableau JSON contenant les données de prises. Format attendu :",
|
||
"importUploadFile": "Téléverser un fichier JSON",
|
||
"importPaste": "Collez le JSON ici...",
|
||
"importSelected": "Sélectionné : {name}",
|
||
"importFileLoaded": "Fichier « {name} » chargé",
|
||
"importInvalidJson": "Le fichier ne contient pas de JSON valide",
|
||
"importNoArray": "Aucun tableau trouvé",
|
||
"importFailed": "Échec de l’importation",
|
||
"importInvalidFormat": "Format JSON non valide",
|
||
"requestExample": "Exemple de requête",
|
||
"categoryBloodPressure": "Tension artérielle",
|
||
"categoryVitamin": "Vitamines",
|
||
"categoryThyroid": "Thyroïde",
|
||
"categoryHormone": "Hormones",
|
||
"categorySupplement": "Complément",
|
||
"categoryPainRelief": "Antalgique",
|
||
"categoryAllergy": "Allergie",
|
||
"categoryDigestive": "Digestif",
|
||
"categorySkin": "Soin de la peau",
|
||
"categorySleepAid": "Aide au sommeil",
|
||
"categoryDiabetes": "Diabetes",
|
||
"categoryAntibiotic": "Antibiotique",
|
||
"categoryMentalHealth": "Santé mentale",
|
||
"categoryOther": "Autres",
|
||
"daysSun": "Dim",
|
||
"daysMon": "Lun",
|
||
"daysTue": "Mar",
|
||
"daysWed": "Mer",
|
||
"daysThu": "Jeu",
|
||
"daysFri": "Ven",
|
||
"daysSat": "Sam",
|
||
"back": "Retour",
|
||
"today": "Aujourd'hui",
|
||
"yesterday": "Hier",
|
||
"tomorrow": "Demain",
|
||
"asNeededMarker": "Au besoin",
|
||
"recordOnlyBadge": "Pour mémoire",
|
||
"courseEndedBadge": "Terminé",
|
||
"trackIntake": {
|
||
"title": "Suivi des prises",
|
||
"label": "Suivre les prises",
|
||
"helperOn": "Les doses sont dues selon cet horaire, avec rappels et observance.",
|
||
"helperOff": "Conservé pour mémoire : rien n’est dû, pas de rappel, pas d’observance.",
|
||
"enabledToast": "Suivi des prises activé",
|
||
"disabledToast": "Suivi des prises désactivé",
|
||
"toggleFailed": "Impossible de modifier le suivi des prises."
|
||
},
|
||
"autoMarkTaken": {
|
||
"label": "Enregistrer les prises automatiquement",
|
||
"helper": "HealthLog enregistre chaque dose prévue comme prise à son heure. Vous pouvez toujours modifier ou sauter une dose à la main. Aucun rappel n'est envoyé.",
|
||
"cardHint": "Enregistré automatiquement",
|
||
"enabledToast": "Les prises sont désormais enregistrées automatiquement",
|
||
"disabledToast": "Les prises ne sont plus enregistrées automatiquement",
|
||
"toggleFailed": "Impossible de modifier l'enregistrement automatique."
|
||
},
|
||
"withoutNotification": "Sans notification",
|
||
"pausedSince": "En pause depuis",
|
||
"takeNow": "Prendre maintenant",
|
||
"lastDoseYesterday": "Dernière dose hier",
|
||
"lastDoseDaysAgo": "Dernière dose il y a {count} jours",
|
||
"overdue": "En retard",
|
||
"veryOverdue": "Très en retard",
|
||
"complianceWindow": "Observance {days} jours",
|
||
"complianceUnavailable": "Impossible de charger l'observance",
|
||
"complianceNotApplicable": "Observance non applicable",
|
||
"complianceNotApplicableReason": "Aucun planning local n’est enregistré dans HealthLog.",
|
||
"complianceInfo": "Part des doses attendues que vous avez enregistrées. Les plans hebdomadaires comptent semaine par semaine.",
|
||
"complianceInfoLabel": "Que signifie l'observance ?",
|
||
"lastIntake": "Dernière prise :",
|
||
"nextIntake": "Prochaine prise :",
|
||
"nextIntakeOverdue": "En retard depuis {time}, encore rattrapable",
|
||
"dayStreak": "jours de série",
|
||
"dayStreakOne": "jour de série",
|
||
"cycleDueToday": "À prendre aujourd'hui",
|
||
"cycleNoClosedCycles": "Aucun cycle de dose terminé pour l'instant",
|
||
"taken": "Pris",
|
||
"skipped": "Sauté",
|
||
"intakeToastTaken": "{name} enregistré comme pris",
|
||
"intakeToastSkipped": "{name} sauté",
|
||
"intakeToastFailed": "Impossible d'enregistrer {name}. Réessayez",
|
||
"intakeUndo": "Annuler",
|
||
"intakeUndone": "Entrée annulée",
|
||
"intakeUndoFailed": "Annulation impossible. Corrigez dans l'historique",
|
||
"glp1LastInjection": "{label}",
|
||
"glp1NextInjectionDays": "{label} (dans {days} jours)",
|
||
"glp1NextInjectionToday": "aujourd’hui",
|
||
"glp1NextInjectionTomorrow": "demain",
|
||
"glp1RotationSuggested": "Conseillé : {site}",
|
||
"glp1LogSideEffect": "Consigner un effet secondaire",
|
||
"sideEffects": {
|
||
"section": "Effets secondaires",
|
||
"addCta": "Consigner",
|
||
"sheetTitle": "Consigner un effet secondaire",
|
||
"categoryLabel": "Catégorie",
|
||
"entryLabel": "Symptôme",
|
||
"severityLabel": "Sévérité",
|
||
"severity": {
|
||
"mild": "Léger",
|
||
"moderate": "Modéré",
|
||
"significant": "Notable",
|
||
"severe": "Sévère",
|
||
"verySevere": "Très sévère"
|
||
},
|
||
"notesLabel": "Notes (facultatif)",
|
||
"notesPlaceholder": "Ce qui vaut la peine d'être noté, 280 caractères max.",
|
||
"submitCta": "Enregistrer",
|
||
"cancelCta": "Annuler",
|
||
"emptyState": "Aucun effet secondaire consigné. Le suivi peut aider votre médecin et révéler des tendances dans le temps.",
|
||
"recentTitle": "30 derniers jours",
|
||
"loading": "Chargement…",
|
||
"loadMore": "Charger plus",
|
||
"deleteCta": "Supprimer",
|
||
"deleteError": "Impossible de supprimer l'entrée",
|
||
"errorSeverity": "La sévérité doit être entre 1 et 5",
|
||
"errorEntry": "Choisissez un symptôme",
|
||
"categories": {
|
||
"gi": "Gastro-intestinal",
|
||
"metabolic": "Métabolique",
|
||
"injectionSite": "Site d'injection",
|
||
"cognitive": "Cognitif",
|
||
"glp1Specific": "Spécifique GLP-1"
|
||
},
|
||
"entries": {
|
||
"nausea": "Nausées",
|
||
"vomiting": "Vomissement",
|
||
"diarrhea": "Diarrhée",
|
||
"constipation": "Constipation",
|
||
"abdominalPain": "Douleur abdominale",
|
||
"hypoglycemiaSymptoms": "Symptômes d'hypoglycémie",
|
||
"dehydration": "Déshydratation",
|
||
"anorexia": "Perte d'appétit",
|
||
"electrolyteFatigue": "Fatigue électrolytique",
|
||
"injectionRedness": "Rougeur au site d'injection",
|
||
"injectionSwelling": "Gonflement au site d'injection",
|
||
"injectionBruising": "Ecchymose au site d'injection",
|
||
"injectionInduration": "Induration au site d'injection",
|
||
"brainFog": "Brouillard mental",
|
||
"dizziness": "Vertiges",
|
||
"lowMood": "Humeur basse",
|
||
"lowEnergy": "Faible énergie",
|
||
"earlySatiety": "Satiété précoce",
|
||
"gastroparesisLike": "Vidange gastrique lente",
|
||
"dysgeusia": "Altération du goût",
|
||
"gallbladderDiscomfort": "Inconfort de la vésicule biliaire"
|
||
},
|
||
"deleteConfirmTitle": "Supprimer cette entrée ?",
|
||
"deleteConfirmBody": "Cette entrée d’effet secondaire sera définitivement supprimée."
|
||
},
|
||
"scheduling": {
|
||
"naturalLanguage": {
|
||
"title": "Décris ton médicament",
|
||
"description": "Décris le médicament avec tes propres mots et le formulaire sera pré-rempli pour toi.",
|
||
"placeholder": "p. ex. Mounjaro 5 mg par semaine le mercredi matin à partir de lundi prochain",
|
||
"submit": "Extraire",
|
||
"submitBusy": "Extraction…",
|
||
"cancel": "Annuler",
|
||
"examples": {
|
||
"label": "Essayer un de ces exemples",
|
||
"weekly": "Mounjaro 5 mg par semaine le mercredi matin",
|
||
"daily": "Ibuprofène 200 mg tous les jours, 3 fois par jour",
|
||
"rolling": "Méthotrexate 7,5 mg tous les 7 jours depuis la dernière injection"
|
||
},
|
||
"error": {
|
||
"empty": "Saisis d'abord une description.",
|
||
"tooLong": "Garde la description sous 2000 caractères.",
|
||
"rateLimit": "Trop de requêtes. Attends un instant et réessaie.",
|
||
"noProvider": "Aucun fournisseur d'IA configuré. Configure-le dans les Paramètres.",
|
||
"budget": "Budget IA quotidien atteint. Réessaie demain.",
|
||
"network": "Impossible de joindre le fournisseur d'IA. Réessaie.",
|
||
"consent": "La lecture de votre description par IA nécessite d'abord votre consentement.",
|
||
"unavailable": "La lecture de descriptions par IA n'est pas disponible ici pour le moment."
|
||
}
|
||
},
|
||
"cadence": {
|
||
"section": "Cadence",
|
||
"label": "À quelle fréquence",
|
||
"kind": {
|
||
"daily": "Chaque jour",
|
||
"weekdays": "Certains jours de la semaine",
|
||
"everyNWeeks": "Toutes les N semaines certains jours",
|
||
"monthly": "Chaque mois un jour précis",
|
||
"everyNMonths": "Tous les N mois un jour précis",
|
||
"yearly": "Une fois par an",
|
||
"rolling": "Tous les N jours depuis la dernière prise (flexible)",
|
||
"rollingExplainer": "Compte à partir de votre dernière prise enregistrée ; se met en pause si vous sautez une dose.",
|
||
"oneShot": "Dose unique"
|
||
},
|
||
"weekdays": {
|
||
"label": "Jours de la semaine",
|
||
"short": {
|
||
"mo": "Lu",
|
||
"tu": "Ma",
|
||
"we": "Me",
|
||
"th": "Je",
|
||
"fr": "Ve",
|
||
"sa": "Sa",
|
||
"su": "Di"
|
||
},
|
||
"long": {
|
||
"mo": "Lundi",
|
||
"tu": "Mardi",
|
||
"we": "Mercredi",
|
||
"th": "Jeudi",
|
||
"fr": "Vendredi",
|
||
"sa": "Samedi",
|
||
"su": "Dimanche"
|
||
}
|
||
},
|
||
"intervalWeeks": {
|
||
"suffix": "semaines"
|
||
},
|
||
"dayOfMonth": {
|
||
"label": "Jour"
|
||
},
|
||
"intervalMonths": {
|
||
"suffix": "mois",
|
||
"dayOnLabel": "le jour"
|
||
},
|
||
"yearly": {
|
||
"date": {
|
||
"label": "Date"
|
||
}
|
||
},
|
||
"rollingDays": {
|
||
"suffix": "jours"
|
||
}
|
||
},
|
||
"timesOfDay": {
|
||
"section": "Heures de la journée",
|
||
"label": "Heures de la journée",
|
||
"empty": {
|
||
"cta": "Ajoutez la première heure."
|
||
},
|
||
"add": "Ajouter une heure",
|
||
"remove": "Retirer",
|
||
"presets": {
|
||
"morning": "Matin",
|
||
"noon": "Midi",
|
||
"evening": "Soir",
|
||
"night": "Nuit"
|
||
},
|
||
"max": {
|
||
"reached": "Maximum atteint : retirez une heure avant d’en ajouter une autre."
|
||
}
|
||
},
|
||
"courseWindow": {
|
||
"section": "Période de traitement",
|
||
"startsOn": {
|
||
"label": "Commence le"
|
||
},
|
||
"endsOn": {
|
||
"label": "Se termine le"
|
||
},
|
||
"noEndDate": "Pas de date de fin",
|
||
"oneShotCaption": "(dose unique)",
|
||
"invalidRange": "La date de fin doit être égale ou postérieure à la date de début."
|
||
}
|
||
},
|
||
"wizard": {
|
||
"header": {
|
||
"stepOf": "Étape {current} sur {total}",
|
||
"createTitle": "Nouveau médicament",
|
||
"editTitle": "Modifier {name}"
|
||
},
|
||
"nav": {
|
||
"back": "Retour",
|
||
"next": "Suivant",
|
||
"save": "Enregistrer",
|
||
"saveEdit": "Enregistrer les modifications",
|
||
"nextHint": "Suivant : {step}",
|
||
"reviewHint": "Suivant : Enregistrer",
|
||
"jumpFirst": "Aller à la première étape",
|
||
"jumpLast": "Aller à la vérification et à l’enregistrement"
|
||
},
|
||
"nl": {
|
||
"button": "Décrire"
|
||
},
|
||
"steps": {
|
||
"step1": {
|
||
"title": "Comment s’appelle le médicament ?",
|
||
"subline": "Exactement comme indiqué sur la boîte.",
|
||
"label": "Name",
|
||
"placeholder": "par exemple Ramipril",
|
||
"short": "Nom"
|
||
},
|
||
"step2": {
|
||
"title": "De quel type de médicament s’agit-il ?",
|
||
"subline": "Nous l’utilisons pour les bons modèles et analyses.",
|
||
"short": "Type"
|
||
},
|
||
"step3": {
|
||
"title": "Quelle est la dose ?",
|
||
"subline": "Un comprimé, une bouffée, une goutte, selon la forme.",
|
||
"amountLabel": "Quantité",
|
||
"amountPlaceholder": "par exemple 5",
|
||
"unitLabel": "Unité",
|
||
"unit": {
|
||
"mg": "mg",
|
||
"ml": "ml",
|
||
"iu": "UI",
|
||
"mcg": "µg",
|
||
"g": "g",
|
||
"tablets": "comprimé(s)",
|
||
"capsules": "gélule(s)",
|
||
"drops": "gouttes",
|
||
"puffs": "bouffée",
|
||
"sprays": "pulvérisation",
|
||
"pieces": "pièces",
|
||
"other": "autre"
|
||
},
|
||
"deliveryFormLabel": "Voie",
|
||
"deliveryForm": {
|
||
"ORAL": "Orale",
|
||
"INJECTION": "Injection",
|
||
"OTHER": "Autre"
|
||
},
|
||
"dosesPerUnitLabel": "Doses par unité",
|
||
"dosesPerUnitPlaceholder": "p. ex. 4",
|
||
"dosesPerUnitHint": "Doses par stylo / flacon. Laisser vide pour ne pas suivre le stock.",
|
||
"short": "Dose",
|
||
"unitsPerDoseLabel": "Unités par dose",
|
||
"unitsPerDoseHint": "p. ex. 2 comprimés de 2 mg pour une dose de 4 mg, ou ½ comprimé pour une dose fractionnée"
|
||
},
|
||
"step4": {
|
||
"title": "Sur quelle période le prenez-vous ?",
|
||
"subline": "Une date de début suffit pour aujourd’hui. Vous pourrez ajouter une date de fin plus tard.",
|
||
"short": "Quand"
|
||
},
|
||
"step5": {
|
||
"title": "À quelle fréquence le prenez-vous ?",
|
||
"subline": "Choisissez la cadence. Les détails suivent à l’étape suivante.",
|
||
"short": "Fréquence"
|
||
},
|
||
"step6": {
|
||
"title": "À quoi cela ressemble-t-il en détail ?",
|
||
"subline": "Indiquez les jours de la semaine, les intervalles ou le jour du mois.",
|
||
"intervalWeeks": {
|
||
"label": "Toutes les",
|
||
"suffix": "semaines"
|
||
},
|
||
"dayOfMonth": {
|
||
"label": "Le",
|
||
"suffix": "jour du mois"
|
||
},
|
||
"rollingDays": {
|
||
"label": "Tous les",
|
||
"suffix": "jours depuis la dernière prise"
|
||
},
|
||
"short": "Détail"
|
||
},
|
||
"step7": {
|
||
"title": "Quand le prenez-vous ?",
|
||
"subline": "Une ou plusieurs heures de la journée. Les rappels suivent cette liste.",
|
||
"presetsLabel": "Préréglages par moment de la journée",
|
||
"presets": {
|
||
"morning": "Matin",
|
||
"noon": "Midi",
|
||
"evening": "Soir",
|
||
"night": "Nuit"
|
||
},
|
||
"overrideHint": "Facultatif : définissez une dose ou un nombre d'unités différent pour cet horaire uniquement. Laissez vide pour utiliser la valeur par défaut du médicament.",
|
||
"doseOverrideLabel": "Dose pour cet horaire (facultatif)",
|
||
"doseOverridePlaceholder": "ex. un demi-comprimé",
|
||
"unitsOverrideLabel": "Unités consommées à cet horaire",
|
||
"unitsOverrideInherit": "Par défaut",
|
||
"short": "Heures"
|
||
},
|
||
"step8": {
|
||
"title": "Terminé ! HealthLog doit-il vous le rappeler ?",
|
||
"subline": "Vérifiez tout ci-dessous avant d’enregistrer.",
|
||
"remindersLabel": "Rappels activés",
|
||
"remindersDescription": "Push, Telegram ou ntfy, selon vos réglages.",
|
||
"noChannelHint": "Les rappels nécessitent un canal de notification, et aucun n'est actif pour le moment.",
|
||
"noChannelHintLink": "Configurer les notifications",
|
||
"short": "Fini"
|
||
}
|
||
},
|
||
"classRow": {
|
||
"bloodPressure": "Tension artérielle",
|
||
"diabetes": "Diabetes",
|
||
"hormone": "Hormones",
|
||
"glp1": "Injection de GLP-1",
|
||
"painRelief": "Douleur",
|
||
"allergy": "Allergie",
|
||
"vitamin": "Vitamines",
|
||
"supplement": "Complément",
|
||
"antibiotic": "Antibiotique",
|
||
"mentalHealth": "Santé mentale",
|
||
"thyroid": "Thyroïde",
|
||
"digestive": "Digestif",
|
||
"skin": "Soin de la peau",
|
||
"sleepAid": "Aide au sommeil",
|
||
"other": "Autre"
|
||
},
|
||
"cadence": {
|
||
"daily": {
|
||
"label": "Quotidien",
|
||
"description": "Chaque jour à la même heure."
|
||
},
|
||
"weekdays": {
|
||
"label": "Jours précis de la semaine",
|
||
"description": "Par exemple lundi, mercredi, vendredi."
|
||
},
|
||
"everyNWeeks": {
|
||
"label": "Toutes les quelques semaines",
|
||
"description": "Par exemple toutes les 2 semaines le jeudi (GLP-1, biologiques)."
|
||
},
|
||
"monthly": {
|
||
"label": "Mensuel",
|
||
"description": "Un jour fixe chaque mois (par exemple toujours le 1er)."
|
||
},
|
||
"rolling": {
|
||
"label": "Flexible depuis la dernière dose",
|
||
"description": "Laissez la prochaine dose ouverte. Quand vous appuyez sur « pris », le compteur repart à partir de ce moment."
|
||
},
|
||
"oneShot": {
|
||
"label": "Dose unique",
|
||
"description": "Une seule administration, par exemple un vaccin ou une cure d’antibiotique."
|
||
},
|
||
"asNeeded": {
|
||
"label": "Au besoin",
|
||
"description": "Pas de plan fixe : enregistrez une prise quand vous en avez besoin (p. ex. antidouleur)."
|
||
}
|
||
},
|
||
"summary": {
|
||
"title": "Résumé",
|
||
"cadence": {
|
||
"daily": "Chaque jour",
|
||
"weekdays": "Les jours de la semaine sélectionnés",
|
||
"biweekly": "Toutes les deux semaines",
|
||
"monthly": "Mensuel",
|
||
"quarterly": "Tous les trois mois",
|
||
"yearly": "Une fois par an",
|
||
"rolling": "Tous les {n} jours depuis votre dernière prise",
|
||
"oneShot": "Une dose unique",
|
||
"asNeeded": "Au besoin",
|
||
"everyNWeeks": "Toutes les {n} semaines",
|
||
"everyNMonths": "Tous les {n} mois"
|
||
},
|
||
"weekdaysDetail": ", le {days}",
|
||
"dayOfMonthDetail": ", le {day}.",
|
||
"times": "à {times}",
|
||
"startsOn": "Début : {date}",
|
||
"endsOn": "Fin : {date}",
|
||
"noEndDate": "Pas de date de fin"
|
||
},
|
||
"compose": {
|
||
"scheduleIndex": "Horaire {n} sur {total}",
|
||
"list": {
|
||
"add": "Ajouter un autre horaire",
|
||
"edit": "Modifier",
|
||
"remove": "Retirer",
|
||
"removeDisabled": "Au moins un horaire est requis."
|
||
}
|
||
},
|
||
"errors": {
|
||
"submitFailed": "Impossible d’enregistrer le médicament. Veuillez réessayer."
|
||
}
|
||
},
|
||
"doseStrength": {
|
||
"title": "Dose au fil du temps",
|
||
"axisLabel": "Dose enregistrée ({unit})",
|
||
"tooltipLabel": "Dose",
|
||
"currentDose": "Dose actuelle : {dose} {unit}",
|
||
"noCurrentDose": "Aucune dose enregistrée pour l'instant.",
|
||
"empty": "Aucun historique de titration. Enregistrez un changement de dose pour voir la courbe de dose."
|
||
},
|
||
"titration": {
|
||
"title": "Plan de titration",
|
||
"empty": "Aucune étape d'escalade de dose enregistrée pour le moment. Ajoutez des changements de dose datés pour tracer le plan.",
|
||
"youAreHere": "Vous êtes ici",
|
||
"doseStep": "{dose} {unit}",
|
||
"plannedFor": "Prévu pour {date}"
|
||
},
|
||
"injectionSiteBodyOutlineAriaLabel": "Silhouette du corps",
|
||
"injectionSitePickerAriaLabel": "Sélecteur de site d'injection",
|
||
"injectionSiteRecommendedAriaLabel": "{site}, prochain site recommandé",
|
||
"injectionSiteLegendAriaLabel": "Légende des repères",
|
||
"injectionSiteLegendRecommended": "Prochain site recommandé",
|
||
"injectionSiteLegendLastUsed": "Dernier site utilisé",
|
||
"siteAbdomenLeft": "Abdomen, en bas à gauche",
|
||
"siteAbdomenRight": "Abdomen, en bas à droite",
|
||
"siteAbdomenUpperLeft": "Abdomen, en haut à gauche",
|
||
"siteAbdomenUpperRight": "Abdomen, en haut à droite",
|
||
"siteThighLeft": "Cuisse gauche",
|
||
"siteThighRight": "Cuisse droite",
|
||
"siteUpperArmLeft": "Bras gauche",
|
||
"siteUpperArmRight": "Bras droit",
|
||
"sideEffectTagsHelp": "Touche un chip pour l’ajouter aux étiquettes d’humeur.",
|
||
"sideEffectTagNausea": "Nausées",
|
||
"sideEffectTagConstipation": "Constipation",
|
||
"sideEffectTagDiarrhea": "Diarrhée",
|
||
"sideEffectTagFatigue": "Fatigue",
|
||
"sideEffectTagAppetiteLoss": "Perte d’appétit",
|
||
"sideEffectTagHeartburn": "Brûlures d’estomac",
|
||
"sideEffectTagHeadache": "Maux de tête",
|
||
"phaseConfig": "Phases de rappel",
|
||
"phaseConfigDescription": "Configure les moments des rappels.",
|
||
"phaseGreen": "Vert",
|
||
"phaseYellow": "Jaune",
|
||
"phaseOrange": "Orange",
|
||
"phaseRed": "Rouge",
|
||
"phaseMinutes": "Min",
|
||
"phasePercent": "%",
|
||
"phaseResetDefaults": "Rétablir les valeurs par défaut",
|
||
"phaseSaved": "Phases de rappel enregistrées",
|
||
"sourceWeb": "Web",
|
||
"sourceApi": "App iOS",
|
||
"sourceReminder": "Rappel",
|
||
"sourceImport": "Import",
|
||
"sourceAppleHealth": "Apple Health",
|
||
"intakeSourceVia": "via {origin}",
|
||
"intakeRecordedAutomatically": "Enregistrée automatiquement",
|
||
"intakeHistoryEmptyTitle": "Aucune prise pour l’instant",
|
||
"intakeHistoryEmptyDescription": "Dès que tu enregistreras une prise, elle apparaîtra ici avec l’heure et la source.",
|
||
"intakeHistoryEmptyAction": "Enregistrer une prise",
|
||
"intakeHistoryColTaken": "Prise",
|
||
"intakeHistoryColScheduled": "Programmée",
|
||
"intakeHistoryColStatus": "Statut",
|
||
"intakeHistoryColSource": "Source",
|
||
"intakeHistoryStatusTaken": "Prise",
|
||
"intakeHistoryStatusSkipped": "Ignorée",
|
||
"intakeHistorySortByTaken": "Trier par heure de prise",
|
||
"intakeHistorySortByScheduled": "Trier par heure programmée",
|
||
"intakeHistoryPageInfo": "Page {page} sur {total}, {count} entrées",
|
||
"intakeHistoryPrev": "Précédent",
|
||
"intakeHistoryNext": "Suivant",
|
||
"glp1": {
|
||
"drug": {
|
||
"tirzepatide": {
|
||
"name": "Tirzépatide"
|
||
},
|
||
"semaglutide": {
|
||
"name": "Sémaglutide"
|
||
},
|
||
"liraglutide": {
|
||
"name": "Liraglutide"
|
||
},
|
||
"dulaglutide": {
|
||
"name": "Dulaglutide"
|
||
},
|
||
"exenatide": {
|
||
"name": "Exénatide"
|
||
}
|
||
}
|
||
},
|
||
"researchMode": {
|
||
"chart": {
|
||
"title": "Niveau de médicament estimé",
|
||
"axisLabel": "Niveau estimé (relatif)",
|
||
"emptyState": "Aucune prise enregistrée.",
|
||
"emptyStateCta": "Enregistrez une dose pour voir la courbe estimée prendre forme.",
|
||
"estimateNote": "Estimation éducative à partir de la pharmacocinétique de population publiée par l'EMA. Pas une mesure.",
|
||
"unknownDrug": "{name} n'est pas dans le catalogue GLP-1 approuvé par l'EMA, donc HealthLog ne peut pas tracer de courbe de pharmacocinétique de population."
|
||
}
|
||
},
|
||
"detail": {
|
||
"status": {
|
||
"active": "Actif",
|
||
"paused": "En pause",
|
||
"ended": "Terminé"
|
||
},
|
||
"cadence": {
|
||
"oneShotOn": "Dose unique le {date}.",
|
||
"oneShotPending": "Dose unique en attente.",
|
||
"asNeeded": "Au besoin, pas de plan fixe."
|
||
},
|
||
"intake": {
|
||
"title": "Historique des prises",
|
||
"importButton": "Importer",
|
||
"rowActions": {
|
||
"openMenu": "Ouvrir les actions de la ligne",
|
||
"edit": "Modifier",
|
||
"delete": "Supprimer"
|
||
},
|
||
"selection": {
|
||
"rowToggleLabel": "Sélectionner la ligne"
|
||
},
|
||
"bulkDelete": {
|
||
"selectionCount": "{count} entrées sélectionnées",
|
||
"deleteButton": "Supprimer la sélection",
|
||
"cancelButton": "Annuler",
|
||
"confirmTitle": "Supprimer les entrées sélectionnées ?",
|
||
"confirmBody": "{count} entrées seront supprimées définitivement. Le médicament est conservé.",
|
||
"confirmAction": "Supprimer",
|
||
"toast": "Sélection supprimée",
|
||
"failed": "Impossible de supprimer la sélection."
|
||
},
|
||
"edit": {
|
||
"dialogTitle": "Modifier la prise",
|
||
"takenAtLabel": "Prise à",
|
||
"scheduledForHint": "Prévue : {dateTime}",
|
||
"farFromScheduledWarning": "Très éloignée de l’heure prévue. Vérifiez la date.",
|
||
"skippedLabel": "Sautée",
|
||
"save": "Enregistrer",
|
||
"cancel": "Annuler",
|
||
"savedToast": "Prise mise à jour",
|
||
"failed": "Impossible de mettre à jour la prise."
|
||
},
|
||
"deleteRow": {
|
||
"confirmTitle": "Supprimer cette prise ?",
|
||
"confirmBody": "L’entrée est supprimée définitivement.",
|
||
"confirmAction": "Supprimer",
|
||
"toast": "Prise supprimée",
|
||
"failed": "Impossible de supprimer la prise."
|
||
},
|
||
"viewRecent90": "90 derniers jours",
|
||
"viewAll": "Historique complet",
|
||
"viewToggleLabel": "Plage de l'historique"
|
||
},
|
||
"verlauf": {
|
||
"loading": "Chargement de l'historique …",
|
||
"loadError": "Impossible de charger l'historique.",
|
||
"empty": "Aucune prise sur cette période pour l'instant.",
|
||
"summaryEmpty": "Aucune dose à évaluer pour l'instant.",
|
||
"adherenceLabel": "Observance",
|
||
"adherenceBarLabel": "{onTime} à l'heure, {late} en retard, {missed} manquées",
|
||
"add": "Entrée",
|
||
"markTaken": "Prise",
|
||
"markSkipped": "Sautée",
|
||
"rowActionsLabel": "Actions pour {time}",
|
||
"markAsTaken": "Marquer comme prise",
|
||
"markAsSkipped": "Marquer comme sautée",
|
||
"adHocTag": "hors planning",
|
||
"takenDetail": "prévue {planned}, prise {taken}",
|
||
"doseTaken": "Dose : {dose}",
|
||
"status": {
|
||
"taken_on_time": "à l'heure",
|
||
"taken_late": "en retard",
|
||
"skipped": "sautée",
|
||
"missed": "manquée",
|
||
"upcoming": "à venir",
|
||
"ad_hoc": "hors planning"
|
||
},
|
||
"addDialog": {
|
||
"title": "Ajouter une prise",
|
||
"description": "Enregistrez une dose, même rétroactive ou hors planning.",
|
||
"takenAtLabel": "Prise à",
|
||
"skippedLabel": "Sautée",
|
||
"nudgeHint": "Proche du créneau {slot} : à l'enregistrement, nous demandons s'il faut l'y rattacher.",
|
||
"cancel": "Annuler",
|
||
"submit": "Enregistrer"
|
||
},
|
||
"nudge": {
|
||
"title": "Rattacher à ce créneau ?",
|
||
"body": "Cette prise se situe juste en dehors de la fenêtre de {slot}. La rattacher à ce créneau ou la conserver comme entrée hors planning ?",
|
||
"keepAdHoc": "Hors planning",
|
||
"pin": "Rattacher"
|
||
},
|
||
"pin": {
|
||
"action": "Rattacher au créneau de {time}",
|
||
"release": "Détacher du créneau",
|
||
"pinnedTag": "rattachée",
|
||
"pinnedToast": "Prise rattachée au créneau",
|
||
"unpinnedToast": "Prise détachée du créneau",
|
||
"dueContext": "prévue à {time} ({delta})",
|
||
"confirmTitle": "Rattacher au créneau de {time} ?",
|
||
"confirmBody": "La prise comptera pour ce créneau exactement comme si elle y avait été enregistrée : à l'heure ou en retard selon le moment où elle a été prise. Le taux n'est donc pas embelli. Le rattachement peut être retiré à tout moment.",
|
||
"confirmCancel": "Annuler",
|
||
"confirmAction": "Rattacher"
|
||
}
|
||
},
|
||
"notifications": {
|
||
"title": "Rappels",
|
||
"switchLabel": "Envoyer un rappel lorsque cette dose est due",
|
||
"helperOn": "Les rappels sont activés.",
|
||
"helperOff": "Les rappels sont désactivés.",
|
||
"enabledToast": "Rappels activés",
|
||
"disabledToast": "Rappels désactivés",
|
||
"toggleFailed": "Impossible de modifier le réglage des rappels.",
|
||
"clientManagedChip": "Géré par l’iPhone",
|
||
"clientManagedHint": "Votre iPhone gère les rappels de ce médicament."
|
||
},
|
||
"settings": {
|
||
"title": "Réglages",
|
||
"phases": {
|
||
"openButton": "Configurer les phases",
|
||
"requiresCourseWindow": "Les phases sont disponibles une fois une période de traitement définie."
|
||
},
|
||
"grace": {
|
||
"label": "Fenêtre de rappel",
|
||
"appliesToAllNote": "S’applique à tous les horaires de ce médicament.",
|
||
"unit": "minutes",
|
||
"saved": "Fenêtre de rappel enregistrée",
|
||
"failed": "Impossible d’enregistrer la fenêtre de rappel."
|
||
},
|
||
"codes": {
|
||
"label": "Codes cliniques (ATC / RxNorm)",
|
||
"note": "Facultatif. Utilisés lors de l'export FHIR du dossier de santé. Les codes sont repris tels qu'ils sont saisis, jamais devinés.",
|
||
"atcLabel": "ATC",
|
||
"rxNormLabel": "RxNorm",
|
||
"saved": "Codes cliniques enregistrés",
|
||
"failed": "Impossible d'enregistrer les codes cliniques."
|
||
}
|
||
},
|
||
"zone": {
|
||
"title": "Gestion et zone à risque",
|
||
"pause": {
|
||
"title": "Mettre en pause",
|
||
"helper": "Mettez les rappels en pause jusqu’à ce que vous les réactiviez. L’historique est conservé.",
|
||
"pausedToast": "Rappels mis en pause",
|
||
"resumedToast": "Rappels réactivés",
|
||
"failed": "Impossible de modifier l’état de pause."
|
||
},
|
||
"end": {
|
||
"title": "Terminer le médicament",
|
||
"helper": "Arrête les rappels et marque le médicament comme terminé. L’historique reste visible.",
|
||
"button": "Terminer",
|
||
"dialogTitle": "Terminer {name} : arrête les rappels, l’historique reste visible",
|
||
"dialogBody": "Plus de rappels. Les anciennes entrées restent dans la chronologie.",
|
||
"toast": "Médicament terminé",
|
||
"failed": "Impossible de terminer le médicament."
|
||
},
|
||
"purge": {
|
||
"title": "Supprimer l’historique",
|
||
"helper": "{count} prises sont enregistrées pour ce médicament.",
|
||
"button": "Supprimer l’historique",
|
||
"dialogTitle": "Supprimer vraiment l’historique ?",
|
||
"dialogBody": "Les {count} prises seront supprimées définitivement. Le médicament est conservé.",
|
||
"toast": "Historique supprimé",
|
||
"failed": "Impossible de supprimer l’historique."
|
||
},
|
||
"delete": {
|
||
"title": "Supprimer le médicament",
|
||
"helper": "Supprime le médicament et tous les enregistrements associés.",
|
||
"button": "Supprimer",
|
||
"dialogTitle": "Supprimer {name} ?",
|
||
"dialogBody": "Le médicament, ses horaires, l’historique des prises, les jetons API, la configuration des phases et les rappels seront supprimés définitivement.",
|
||
"toast": "Médicament supprimé",
|
||
"failed": "Impossible de supprimer le médicament."
|
||
}
|
||
},
|
||
"phases": {
|
||
"modeLabel": "Mode {phase}",
|
||
"saveFailed": "Impossible d’enregistrer les phases de rappel."
|
||
},
|
||
"api": {
|
||
"caption": "Point de terminaison pour « {name} »",
|
||
"copyUrl": "Copier l’URL",
|
||
"urlCopied": "URL copiée",
|
||
"mintToken": "Générer un jeton",
|
||
"mintAnotherToken": "Générer un autre jeton",
|
||
"mintFailed": "Impossible de générer un jeton.",
|
||
"copyFailed": "Impossible de copier.",
|
||
"tokenCopied": "Jeton copié",
|
||
"copyToken": "Copier le jeton",
|
||
"mintedHint": "Copiez ce jeton maintenant : il n’est affiché qu’une seule fois."
|
||
},
|
||
"advanced": {
|
||
"dataPortability": {
|
||
"import": {
|
||
"title": "Importer les prises",
|
||
"helper": "Chargez les prises passées depuis un fichier JSON ou du JSON collé.",
|
||
"button": "Importer JSON"
|
||
},
|
||
"export": {
|
||
"title": "Exporter le médicament",
|
||
"helper": "Téléchargez ce médicament au format CSV.",
|
||
"includeIntake": "Inclure l'historique des prises",
|
||
"button": "Exporter CSV"
|
||
}
|
||
}
|
||
},
|
||
"header": {
|
||
"historyLabel": "Voir l'historique des prises"
|
||
},
|
||
"history": {
|
||
"plannedSuffix": "prévu"
|
||
},
|
||
"tabs": {
|
||
"uebersicht": "Aperçu",
|
||
"zeitplan": "Horaire",
|
||
"bestand": "Stock",
|
||
"verlauf": "Historique",
|
||
"injektion": "Injection",
|
||
"erweitert": "Avancé",
|
||
"wirkung": "Effet"
|
||
},
|
||
"shell": {
|
||
"loadFailed": "Ce médicament n'a pas pu être chargé.",
|
||
"tablistLabel": "Sections de détail du médicament"
|
||
},
|
||
"uebersicht": {
|
||
"statusTitle": "Statut",
|
||
"nextDoseLabel": "Prochaine dose",
|
||
"nextDoseNone": "Aucune dose à venir.",
|
||
"nextDoseAsNeeded": "Au besoin, aucune dose planifiée.",
|
||
"nextDoseNotTracked": "Prises non suivies, conservé pour mémoire.",
|
||
"pausedHint": "En pause, aucun rappel.",
|
||
"reminderLabel": "Rappel",
|
||
"reminderOn": "Activé",
|
||
"reminderOff": "Désactivé",
|
||
"supplyLabel": "Stock",
|
||
"supplyRunway": "Couvre encore environ {days} jours",
|
||
"jumpToZeitplan": "Voir l'horaire",
|
||
"jumpToVerlauf": "Voir l'historique",
|
||
"jumpToBestand": "Voir le stock",
|
||
"complianceTitle": "Observance",
|
||
"complianceEmpty": "Aucune donnée d'observance pour l'instant."
|
||
},
|
||
"bestand": {
|
||
"title": "Stock",
|
||
"summary": "{remaining} doses restantes sur {total}",
|
||
"itemsTitle": "Boîtes et contenants",
|
||
"doses": "{remaining} / {total} doses",
|
||
"unknown": "Inconnu",
|
||
"state": {
|
||
"ACTIVE": "Non ouvert",
|
||
"IN_USE": "En cours",
|
||
"EXPIRED": "Expiré",
|
||
"USED_UP": "Épuisé"
|
||
},
|
||
"empty": "Aucun stock enregistré.",
|
||
"emptyHelper": "Enregistrez une boîte ou un contenant pour suivre le stock restant et l'autonomie.",
|
||
"emptyCta": "Enregistrer une boîte",
|
||
"addButton": "Enregistrer",
|
||
"lowStockLinkOn": "Alerte de stock bas : en dessous de {days} jours",
|
||
"lowStockLinkOff": "Alerte de stock bas : désactivée",
|
||
"addTitle": "Enregistrer une boîte ou un contenant",
|
||
"addDescription": "Enregistrez un nouveau stock avec son nombre d'unités ; la date de péremption est facultative.",
|
||
"addQuantityLabel": "Quantité (unités)",
|
||
"addQuantityHelper": "1–1000 unités par boîte ou contenant.",
|
||
"addExpiryLabel": "Date de péremption (facultatif)",
|
||
"addSubmit": "Enregistrer",
|
||
"addSuccess": "Stock enregistré",
|
||
"addFailed": "Le stock n'a pas pu être enregistré.",
|
||
"adjustButton": "Ajuster",
|
||
"adjustTitle": "Corriger le contenant",
|
||
"adjustDescription": "Ajustez les unités restantes et corrigez les dates de ce contenant. 0 unité le marque comme épuisé.",
|
||
"adjustQuantityLabel": "Unités restantes",
|
||
"adjustHelper": "Capacité : {total} unités.",
|
||
"adjustSubmit": "Enregistrer",
|
||
"adjustSuccess": "Stock mis à jour",
|
||
"adjustFailed": "Le stock n'a pas pu être mis à jour.",
|
||
"deleteTitle": "Supprimer le contenant ?",
|
||
"deleteDescription": "Supprime définitivement cette boîte ou ce contenant du stock. Les prises enregistrées restent inchangées.",
|
||
"deleteSuccess": "Entrée de stock supprimée",
|
||
"deleteFailed": "L'entrée de stock n'a pas pu être supprimée.",
|
||
"containerTypeLabel": "Type de contenant",
|
||
"containerType": {
|
||
"PEN": "Stylo",
|
||
"AMPOULE": "Ampoule",
|
||
"BLISTER": "Plaquette de comprimés",
|
||
"INHALER": "Inhalateur",
|
||
"BOTTLE": "Flacon",
|
||
"OTHER": "Autre"
|
||
},
|
||
"unitsDetail": "{remaining} / {total} unités",
|
||
"quantityModeDoses": "Doses",
|
||
"quantityModeUnits": "Unités",
|
||
"quantityInUnits": "= {units} unités",
|
||
"quantityInDoses": "≈ {doses} doses",
|
||
"quantityUnderOneDose": "< 1 dose",
|
||
"expiredSuffix": "+ {units} unités périmées",
|
||
"packagingTitle": "Conditionnement et dose",
|
||
"packagingUnitsPerDose": "1 dose = {units} unités",
|
||
"packagingDefaultPack": "Taille de boîte par défaut : {units} unités",
|
||
"packagingNoDefaultPack": "Aucune taille de boîte par défaut",
|
||
"packagingEdit": "Modifier",
|
||
"packagingDescription": "Définis combien d’unités consomme une dose et la taille habituelle d’une nouvelle boîte, p. ex. après un changement de fabricant avec une autre taille de plaquette.",
|
||
"packagingUnitsPerDoseLabel": "Unités par dose",
|
||
"packagingUnitsPerDoseHelper": "P. ex. deux comprimés de 2 mg pour une dose de 4 mg, ou 1,5 pour un et demi (plus de 0, jusqu’à 100). Les prises déjà enregistrées restent inchangées.",
|
||
"packagingDefaultPackLabel": "Taille de boîte par défaut (unités)",
|
||
"packagingDefaultPackHelper": "Préremplit la quantité lors de l’enregistrement de nouvelles boîtes (1–1000). Laisse vide si aucune ne s’applique.",
|
||
"packagingSuccess": "Conditionnement enregistré",
|
||
"packagingFailed": "Échec de l’enregistrement",
|
||
"addManufacturerLabel": "Fabricant",
|
||
"addDoseStrengthLabel": "Dosage",
|
||
"addDoseStrengthHint": "Tel qu'imprimé sur le contenant, par ex. 5 mg/0,5 ml.",
|
||
"openedOn": "Ouvert le {date}",
|
||
"expiresOn": "Périme le {date}",
|
||
"summaryAllExpired": "Aucun stock utilisable : {units} unités marquées périmées",
|
||
"editExpiryLabel": "Date de péremption imprimée",
|
||
"editExpiryHelper": "La date imprimée sur la boîte. Laissez vide si aucune n'est enregistrée.",
|
||
"editOpenedLabel": "Ouvert le",
|
||
"editOpenedHelper": "Laissez vide si le contenant est encore scellé.",
|
||
"editOpenedHelperClock": "Un stylo ou une ampoule périme 30 jours après ouverture. Laissez vide s'il est encore scellé."
|
||
},
|
||
"erweitert": {
|
||
"group": {
|
||
"lifecycle": "Cycle de vie",
|
||
"externalApi": "API externe",
|
||
"data": "Données",
|
||
"danger": "Zone de danger"
|
||
},
|
||
"editor": {
|
||
"title": "Modifier le médicament dans l'éditeur",
|
||
"helper": "Modifiez le nom, la classe de traitement, la fréquence et les horaires dans l'éditeur pas à pas.",
|
||
"button": "Ouvrir l'éditeur"
|
||
}
|
||
},
|
||
"zeitplan": {
|
||
"title": "Horaire",
|
||
"timesTitle": "Heures de prise",
|
||
"timesNote": "Ajustez l'heure et la fenêtre à l'heure de chaque dose. La fréquence (quotidienne, hebdomadaire…) se modifie dans l'éditeur, sous Avancé.",
|
||
"scheduleLabel": "Horaire {index}",
|
||
"fullEditNote": "La fréquence, la classe de traitement et la fenêtre de cure se modifient dans l'éditeur, sous Avancé → Cycle de vie.",
|
||
"graceEcho": "Fenêtre de rappel : {minutes} minutes",
|
||
"reminderTitle": "Rappel",
|
||
"manageChannels": "Gérer les canaux de notification",
|
||
"history": {
|
||
"title": "Historique du plan",
|
||
"currentSince": "Plan actuel depuis {date}",
|
||
"noTimes": "Aucune heure fixe",
|
||
"manualChip": "Ajoutée manuellement",
|
||
"showErasOne": "Afficher 1 période antérieure",
|
||
"showErasOther": "Afficher {count} périodes antérieures",
|
||
"hideEras": "Masquer les périodes antérieures",
|
||
"addEra": "Ajouter une période antérieure",
|
||
"addEraTitle": "Ajouter une période antérieure",
|
||
"addEraDescription": "Notez à quelles heures ce médicament était pris auparavant, par exemple avant de l'ajuster ici.",
|
||
"editAria": "Modifier la période",
|
||
"editEraTitle": "Modifier la période",
|
||
"editEraDescription": "Ajustez les heures de prise et la plage de dates de cette période.",
|
||
"archivedEditHint": "Cette période a été enregistrée automatiquement. Votre modification corrige l'historique enregistré ; l'original est conservé en interne comme trace.",
|
||
"updatedToast": "Période mise à jour",
|
||
"updateError": "Impossible de mettre à jour la période. Elle ne doit pas chevaucher d'autres périodes et doit se terminer avant le plan actuel.",
|
||
"timesLabel": "Heures de prise",
|
||
"fromLabel": "Du",
|
||
"untilLabel": "Jusqu'au",
|
||
"untilHint": "« Jusqu'au » est le jour où le plan suivant a pris effet (exclusif).",
|
||
"validationTimes": "Indiquez au moins une heure.",
|
||
"validationRangeMissing": "Indiquez les dates de début et de fin.",
|
||
"validationRangeOrder": "La date de début doit précéder la date de fin.",
|
||
"cancel": "Annuler",
|
||
"submit": "Enregistrer la période",
|
||
"createdToast": "Période antérieure enregistrée",
|
||
"createError": "Impossible d'enregistrer la période. Elle ne doit pas chevaucher des périodes existantes et doit se terminer avant le plan actuel.",
|
||
"deletedToast": "Période supprimée",
|
||
"deleteError": "Impossible de supprimer la période",
|
||
"deleteAria": "Supprimer la période",
|
||
"deleteConfirmTitle": "Supprimer la période ?",
|
||
"deleteConfirmBody": "L'historique et l'observance de cette période seront recalculés selon le plan actuel.",
|
||
"deleteConfirmAction": "Supprimer",
|
||
"loadError": "Impossible de charger l'historique du plan"
|
||
},
|
||
"save": "Enregistrer l'horaire",
|
||
"saved": "Horaire enregistré",
|
||
"failed": "Impossible d'enregistrer l'horaire",
|
||
"window": {
|
||
"intro": "Pour chaque dose, définissez quand une prise reste à l'heure : un horaire précis (±1 h) ou votre propre fenêtre comme 07:00–09:00.",
|
||
"explicitToggle": "Fenêtre personnalisée",
|
||
"startLabel": "Début de la fenêtre",
|
||
"endLabel": "Fin de la fenêtre",
|
||
"onTimeBand": "À l'heure : {start}–{end}",
|
||
"lateUntil": "en retard jusqu'à {time}",
|
||
"lateDays": "en retard jusqu'à {days} jours après",
|
||
"orderError": "Le début doit précéder la fin.",
|
||
"noTimes": "Aucune heure de prise définie pour l'instant."
|
||
}
|
||
}
|
||
},
|
||
"logInjectionSiteTitle": "Enregistrer le site d'injection",
|
||
"logInjectionSiteDescription": "Où avez-vous injecté {name} ? Facultatif, vous pouvez l'ignorer.",
|
||
"logInjectionSiteSkip": "Ignorer",
|
||
"logInjectionSiteConfirm": "Enregistrer le site",
|
||
"logInjectionSiteNoneAvailable": "Aucun site d'injection disponible : tous les sites sont exclus dans vos réglages.",
|
||
"logInjectionSiteSaveFailed": "Impossible d’enregistrer le site d’injection. Veuillez réessayer.",
|
||
"perSlotUnits": "{units} par dose",
|
||
"trackInjectionSitesToggle": "Suivre les sites d'injection",
|
||
"trackInjectionSitesHint": "Après la prise d'une dose, demander quel site a été utilisé et suggérer la prochaine rotation.",
|
||
"allowedSitesLabel": "Sites autorisés",
|
||
"allowedSitesHint": "Laissez tout sélectionné pour aucune restriction. Les sites exclus globalement ne sont jamais proposés.",
|
||
"viewToggleLabel": "Affichage",
|
||
"viewToggleHint": "Choisis si tes médicaments s'affichent sous forme de cartes ou de tableau.",
|
||
"viewCards": "Vue cartes",
|
||
"viewTable": "Vue tableau",
|
||
"viewSaveFailed": "L'affichage n'a pas pu être enregistré",
|
||
"tableCaption": "Médicaments sous forme de tableau avec statut, prochaine prise, observance et stock",
|
||
"tableColName": "Nom",
|
||
"tableColStatus": "Statut",
|
||
"tableColNextDose": "Prochaine prise",
|
||
"tableColCompliance": "Observance",
|
||
"tableColStock": "Stock",
|
||
"tableColActions": "Actions",
|
||
"tableSortBy": "Trier par {column}",
|
||
"tableComplianceDays": "{days} j",
|
||
"tableStockDoseOne": "1 dose",
|
||
"tableStockDoses": "{count} doses",
|
||
"tableStockRunway": "≈ {days} jours restants",
|
||
"cardLowStockRunway": "Réserve : ≈ {days} jours",
|
||
"takeActionFor": "Prendre : {name}",
|
||
"skipActionFor": "Passer : {name}",
|
||
"reorderDescription": "Définis l'ordre de tes médicaments pour la vue cartes et la vue tableau.",
|
||
"reorderSaved": "Ordre enregistré",
|
||
"reorderSaveFailed": "L'ordre n'a pas pu être enregistré",
|
||
"customize": "Personnaliser les médicaments",
|
||
"efficacy": {
|
||
"title": "Effet",
|
||
"intro": "Comment les mesures que ce médicament vise ont évolué autour du moment où vous avez commencé à le prendre. Cela montre ce qui coïncide dans le temps : une association, pas une cause, et jamais un conseil sur votre traitement ou votre dose.",
|
||
"notEligible": "Aucune mesure à relier à ce médicament.",
|
||
"startFallback": "Aucune date de début n'est renseignée ; la comparaison utilise donc votre première mesure enregistrée comme référence.",
|
||
"noStart": "Renseignez une date de début pour comparer les mesures avant et après le début.",
|
||
"disclaimer": "Association seulement : ces chiffres montrent ce qui a changé sur la même période, pas que le médicament a causé ce changement. Discutez de toute décision concernant votre traitement avec votre médecin.",
|
||
"primaryBadge": "Cible principale",
|
||
"noSeries": "Aucune mesure enregistrée pour cette cible pour le moment.",
|
||
"startMarker": "Début",
|
||
"adherenceLane": "Observance",
|
||
"typicalRange": "Plage habituelle",
|
||
"levelShift": "Un changement de niveau a été détecté autour du {date}.",
|
||
"plateau": {
|
||
"title": "Plateau de poids à la dose actuelle",
|
||
"evidence": "Variation de poids de {delta} {unit} sur les {window} derniers jours ({readings} mesures), {days} jours sous {dose}."
|
||
},
|
||
"retarget": {
|
||
"label": "Ce n'est pas la bonne mesure ?",
|
||
"placeholder": "Suivre selon…",
|
||
"apply": "Appliquer",
|
||
"reset": "Réinitialiser par défaut",
|
||
"error": "Impossible d'enregistrer cette modification. Réessaie."
|
||
},
|
||
"beforeAfter": {
|
||
"summary": "Ø {before} avant → Ø {after} depuis, soit un écart de {delta}.",
|
||
"counts": "D'après {beforeCount} mesures avant et {afterCount} depuis.",
|
||
"needBefore": "Pas encore assez de mesures avant le début. Il faut environ {weeks} semaines avant et après pour comparer.",
|
||
"needAfter": "Pas encore assez de mesures depuis le début. Il faut environ {weeks} semaines avant et après pour comparer.",
|
||
"needStart": "Renseignez une date de début pour comparer les mesures avant et après le début.",
|
||
"needData": "Pas encore assez de mesures. Il faut environ {weeks} semaines avant et après le début pour comparer."
|
||
},
|
||
"insights": {
|
||
"title": "Effet des médicaments",
|
||
"subtitle": "Ce qui coïncide avec les mesures visées par vos médicaments : association seulement, jamais un verdict.",
|
||
"link": "Ouvrir la vue Effet",
|
||
"empty": "Pas encore assez de données pour relier vos médicaments à leurs mesures cibles."
|
||
},
|
||
"scaleAbsolute": "Absolu",
|
||
"scalePercentSinceStart": "% depuis le début",
|
||
"scaleToggleLabel": "Échelle du graphique",
|
||
"segmented": {
|
||
"title": "Changement au démarrage",
|
||
"level": "Dès le démarrage, le niveau s'est déplacé de {value} {unit} (intervalle à 95 % : {low} à {high}).",
|
||
"slope": "Après le démarrage, la tendance hebdomadaire a changé de {value} {unit} par semaine (intervalle à 95 % : {low} à {high}).",
|
||
"preSlope": "Avant le démarrage, la tendance était de {value} {unit} par semaine.",
|
||
"includesZero": "Lorsqu'un intervalle inclut zéro, ces valeurs sont aussi compatibles avec une absence de changement.",
|
||
"basis": "Sur la base de {before} jours avant et {after} jours après le démarrage ({from} au {to}).",
|
||
"excludedAdherence": "{count} jours après le démarrage ont été écartés, car moins de {floor} % des doses ont été prises dans les {lookback} jours précédents.",
|
||
"excludedNotTaking": "{count} jours ont été écartés, car le médicament était en pause ou entre deux périodes de prise.",
|
||
"notTracked": "Les prises de ce médicament ne sont pas suivies, aucun jour n'a donc été écarté pour des doses manquées.",
|
||
"endDoseChange": "La période s'arrête avant le premier changement de dose et décrit donc la dose de départ.",
|
||
"confoundersTitle": "Autres changements de médicaments sur cette période, que cette vue ne peut pas distinguer de celui-ci :",
|
||
"confounderStarted": "{name} commencé le {date}",
|
||
"confounderStopped": "{name} arrêté le {date}",
|
||
"confounderDoseChange": "{name} : dose modifiée le {date}",
|
||
"confounderPaused": "{name} mis en pause le {date}",
|
||
"confounderResumed": "{name} repris le {date}",
|
||
"method": "Méthode : une droite est ajustée aux valeurs quotidiennes avant le démarrage, une autre à celles d'après. Le saut entre les deux au démarrage est le changement de niveau, l'écart de leurs pentes le changement de tendance. Les intervalles tiennent compte du fait que les valeurs d'un jour influencent le lendemain.",
|
||
"needStart": "Indique une date de début pour voir le changement au démarrage.",
|
||
"needBefore": "Le changement au démarrage demande des valeurs sur au moins {days} jours répartis sur {span} jours avant le démarrage.",
|
||
"needAfter": "Le changement au démarrage demande des valeurs sur au moins {days} jours répartis sur {span} jours depuis le démarrage, les jours où les doses ont été prises.",
|
||
"fitFailed": "Ces valeurs n'ont pas pu être ajustées, aucun changement au démarrage n'est donc affiché.",
|
||
"autocorrelation": "Les valeurs quotidiennes dépendent fortement de la veille, donc même ces plages peuvent être trop étroites."
|
||
}
|
||
},
|
||
"import": {
|
||
"resultSuccess": "{imported} prises importées",
|
||
"resultPartial": "{imported} importées, {skipped} ignorées.",
|
||
"resultNothing": "Rien n’a été importé : les {skipped} entrées ont été ignorées.",
|
||
"resultAlreadyRecorded": "{recorded} prises sont déjà enregistrées. Rien de nouveau n’a été ajouté.",
|
||
"resultEmpty": "Ce fichier ne contenait aucune prise.",
|
||
"showSkipDetails": "Afficher les lignes ignorées ({count})",
|
||
"skipDetailLine": "Ligne {line} : {reason}",
|
||
"skipDetailsOmitted": "{count} autres lignes ignorées ne sont pas affichées.",
|
||
"skipGroupOne": "{count} entrée ignorée : {reason}",
|
||
"skipGroupFew": "{count} entrées ignorées : {reason}",
|
||
"skipGroupOther": "{count} entrées ignorées : {reason}",
|
||
"reasonDuplicateInFile": "une autre entrée du même fichier porte les mêmes date et heure",
|
||
"reasonAlreadyRecorded": "une prise est déjà enregistrée pour cette date et cette heure",
|
||
"reasonUnknown": "motif non enregistré",
|
||
"reasonMedicationNotFound": "aucun médicament enregistré ne correspond au nom du fichier",
|
||
"reasonMedicationAmbiguous": "le nom du fichier correspond à plusieurs médicaments",
|
||
"reasonMedicationIsMirrored": "le médicament est une copie en lecture seule provenant d'une autre application",
|
||
"reasonStatusUnknown": "le statut du fichier ne fait pas partie de ceux que définit le format",
|
||
"reasonMissingTimestamp": "la ligne n'indique aucune heure",
|
||
"reasonMissingOffset": "l'heure ne porte pas de décalage UTC, l'instant est donc inconnu",
|
||
"reasonUnreadableTimestamp": "l'heure n'est pas au format documenté par l'export",
|
||
"reasonImplausibleTimestamp": "l'heure ne désigne aucun instant réel, ou se situe dans le futur",
|
||
"reasonMissingMedication": "la ligne ne nomme aucun médicament",
|
||
"reasonUnreadableDosage": "la dose n'est pas un nombre",
|
||
"reasonUnreadableRow": "la ligne a moins de colonnes que l'en-tête",
|
||
"reasonStatusNoDoseInformation": "le fichier ne consigne rien sur cette dose : personne n'a répondu et rien n'a été noté",
|
||
"reasonStatusReminderEvent": "la ligne concerne un rappel reporté, ce qui ne dit rien de la dose",
|
||
"reasonStatusNotificationNotSent": "la ligne consigne qu'aucune notification n'a été envoyée, ce qui parle de l'application et non de la dose"
|
||
},
|
||
"unitsPerDoseField": {
|
||
"other": "Autre…",
|
||
"inputLabel": "Unités par dose, autre valeur",
|
||
"placeholder": "p. ex. 1,5 ou 1 1/2",
|
||
"invalid": "Saisissez un nombre supérieur à 0 et jusqu’à 100, par exemple 1,5 ou 1 1/2.",
|
||
"preview": "Compte comme {value} par dose"
|
||
},
|
||
"category": {
|
||
"custom": {
|
||
"add": "Nouvelle catégorie",
|
||
"label": "Nom de la catégorie",
|
||
"labelPlaceholder": "p. ex. Trousse de voyage",
|
||
"create": "Ajouter",
|
||
"limitReached": "Tu as atteint la limite de 20 catégories personnelles.",
|
||
"saveFailed": "L'enregistrement a échoué. Réessaie.",
|
||
"bpGateNote": "L'analyse de la tension ne compte que les médicaments de la catégorie intégrée Tension artérielle.",
|
||
"manage": "Gérer les catégories",
|
||
"manageDescription": "Tes propres catégories, à côté des catégories intégrées.",
|
||
"hidden": "Masquée",
|
||
"count": "{count} médicaments",
|
||
"rename": "Renommer",
|
||
"hide": "Masquer dans le sélecteur",
|
||
"show": "Afficher dans le sélecteur",
|
||
"delete": "Supprimer",
|
||
"deleteTitle": "Supprimer cette catégorie ?",
|
||
"deleteBody": "{count} médicaments de cette catégorie passent dans Autre. Les médicaments eux-mêmes restent.",
|
||
"movedToOther": "Catégorie supprimée. {count} médicaments passent dans Autre."
|
||
},
|
||
"filter": {
|
||
"label": "Catégorie",
|
||
"all": "Toutes les catégories"
|
||
}
|
||
},
|
||
"course": {
|
||
"endedOn": "Dernier traitement terminé le {date}",
|
||
"nth": "Traitement {n}",
|
||
"startNew": "Commencer un nouveau traitement",
|
||
"editTitle": "Modifier le traitement",
|
||
"startsOn": "Premier jour",
|
||
"endsOn": "Dernier jour (facultatif)",
|
||
"note": "Note (facultatif)",
|
||
"notePlaceholder": "p. ex. la grippe de mars",
|
||
"title": "Traitements",
|
||
"helper": "Quand tu l’as pris. Les prises ne sont attendues que pendant un traitement.",
|
||
"none": "Pris en continu, sans traitements séparés.",
|
||
"range": "Du {start} au {end}",
|
||
"since": "Depuis le {start}",
|
||
"meta": "Traitement {n}, {status}, {taken} prises",
|
||
"status": {
|
||
"current": "en cours",
|
||
"upcoming": "à venir",
|
||
"ended": "terminé"
|
||
},
|
||
"delete": "Supprimer le traitement",
|
||
"deleteTitle": "Supprimer ce traitement ?",
|
||
"deleteBody": "Les dates disparaissent ; les prises enregistrées restent dans l’historique.",
|
||
"deleteLastConfirm": "C’est le seul traitement. Sans lui, le médicament compte comme pris en continu depuis son ajout. Les prises enregistrées restent.",
|
||
"error": {
|
||
"overlap": "Ce traitement chevauche un autre.",
|
||
"currentOpen": "Termine le traitement en cours avant d’en ajouter un après.",
|
||
"oneShot": "Un médicament ponctuel n’a qu’un seul traitement.",
|
||
"invalidRange": "Le dernier jour ne peut pas précéder le premier.",
|
||
"generic": "L’enregistrement a échoué. Réessaie."
|
||
}
|
||
},
|
||
"composition": {
|
||
"title": "Composition",
|
||
"empty": "Indiquez ce que contient un comprimé ou une gélule pour que chaque prise compte dans vos micronutriments.",
|
||
"perUnitNote": "Par comprimé ou gélule ; chaque prise s’ajoute aux micronutriments du jour.",
|
||
"add": "Ajouter",
|
||
"edit": "Modifier",
|
||
"rowHelper": "Ce que contient un comprimé ou une gélule, pour les micronutriments.",
|
||
"sheetTitle": "Ce que contient une unité",
|
||
"sheetDescription": "Saisissez les quantités par comprimé ou gélule telles qu’indiquées sur l’étiquette.",
|
||
"nutrientLabel": "Nutriment",
|
||
"amountLabel": "Quantité",
|
||
"unitLabel": "Unité",
|
||
"choose": "Choisissez un nutriment",
|
||
"addRow": "Ajouter un nutriment",
|
||
"removeRow": "Retirer {name}",
|
||
"editorEmpty": "Aucun nutriment pour l’instant. Ajoutez-en un par ligne de l’étiquette.",
|
||
"labelPhoto": "Lire depuis une photo de l’étiquette",
|
||
"labelReading": "Lecture de l’étiquette…",
|
||
"labelWaiting": "Le service en arrière-plan n’a pas encore pris l’étiquette en charge.",
|
||
"labelReviewNote": "Vérifiez chaque ligne avec l’étiquette avant d’enregistrer.",
|
||
"lowConfidence": "Cette ligne était difficile à lire ; vérifiez-la avec l’étiquette.",
|
||
"unmatchedTitle": "Lignes sans nutriment correspondant, à saisir à la main si besoin :",
|
||
"servingNote": "L’étiquette indique : {note}. Les quantités sont données par unité.",
|
||
"labelError": "L’étiquette n’a pas pu être lue",
|
||
"saveError": "La composition n’a pas pu être enregistrée",
|
||
"catalogError": "La liste des nutriments n’a pas pu être chargée",
|
||
"invalidRow": "Choisissez un nutriment et saisissez une quantité supérieure à zéro sur chaque ligne."
|
||
}
|
||
},
|
||
"charts": {
|
||
"loadingLabel": "Chargement du graphique…",
|
||
"loadingSlowHint": "Calcul des analyses, cela peut prendre un instant.",
|
||
"weight": "Poids",
|
||
"bloodPressure": "Tension artérielle",
|
||
"pulse": "Pouls",
|
||
"bodyFat": "Masse grasse",
|
||
"sleep": "Sommeil",
|
||
"steps": "Pas",
|
||
"hrv": "VFC",
|
||
"restingHeartRate": "FC au repos",
|
||
"activeEnergy": "Énergie active",
|
||
"flights": "Étages gravis",
|
||
"distance": "Distance marche + course",
|
||
"vo2Max": "VO₂ max",
|
||
"bodyTemperature": "Température corporelle",
|
||
"noData": "Aucune donnée sur la période sélectionnée",
|
||
"bucketWeekly": "Moyenne hebdomadaire",
|
||
"bucketMonthly": "Moyenne mensuelle",
|
||
"bucketWeeklyDaily": "Moyenne par jour, par semaine",
|
||
"bucketMonthlyDaily": "Moyenne par jour, par mois",
|
||
"days7Label": "7 j",
|
||
"days7Title": "7 derniers jours",
|
||
"days30Label": "30 j",
|
||
"daysNLabel": "{days} j",
|
||
"days30Title": "30 derniers jours",
|
||
"days90Label": "90 j",
|
||
"days90Title": "90 derniers jours",
|
||
"daysAllLabel": "Tous",
|
||
"daysAllTitle": "Toute la période",
|
||
"systolic": "Systolique",
|
||
"diastolic": "Diastolique",
|
||
"bodyWater": "Eau corporelle",
|
||
"boneMass": "Masse osseuse",
|
||
"spo2": "SpO₂",
|
||
"movingAverage7d": "Tendance 7 jours",
|
||
"avg7dShort": "7J",
|
||
"avg30dShort": "30J",
|
||
"trend7dShort": "Tendance 7 jours",
|
||
"trend": "Tendance",
|
||
"perWeek": "/semaine",
|
||
"totalDelta": "Total",
|
||
"colorGreen": "Vert :",
|
||
"colorOrange": "Orange :",
|
||
"colorRed": "Rouge :",
|
||
"mood": "Humeur",
|
||
"moodScore": "Score d’humeur",
|
||
"weekdays": {
|
||
"mon": "Lun",
|
||
"wed": "Mer",
|
||
"fri": "Ven",
|
||
"sun": "Dim"
|
||
},
|
||
"months": {
|
||
"jan": "Jan",
|
||
"feb": "Fév",
|
||
"mar": "Mar",
|
||
"apr": "Avr",
|
||
"may": "Mai",
|
||
"jun": "Juin",
|
||
"jul": "Juil",
|
||
"aug": "Août",
|
||
"sep": "Sept",
|
||
"oct": "Oct",
|
||
"nov": "Nov",
|
||
"dec": "Déc"
|
||
},
|
||
"heatmapOnTime": "à l’heure",
|
||
"heatmapLate": "en retard",
|
||
"heatmapVeryLate": "très en retard",
|
||
"legendOnTime": "À l’heure",
|
||
"legendLate": "En retard",
|
||
"legendVeryLate": "Très en retard",
|
||
"legendMissed": "Manquée",
|
||
"emptyStateTitle": "Saisis plus de mesures pour voir les tendances",
|
||
"emptyStateDescription": "Saisis au moins 3 entrées pour débloquer la courbe de tendance.",
|
||
"needMoreDistinctDaysTitle": "Plus de jours distincts requis",
|
||
"needMoreDistinctDaysDescription": "Saisis sur plusieurs jours pour débloquer la courbe de tendance.",
|
||
"noDataInRangeTitle": "Aucune donnée sur cette période",
|
||
"noDataInRangeDescription": "Aucune mesure ne tombe dans la plage sélectionnée. Change de plage ou saisis une nouvelle mesure.",
|
||
"errorTitle": "Impossible de charger les données",
|
||
"loadErrorTitle": "Impossible de charger le graphique",
|
||
"loadErrorReload": "Recharger",
|
||
"sparseDataCaption": "Davantage de jours étofferont la tendance.",
|
||
"tooltipHourlyMean": "{metric} (moyenne des heures)",
|
||
"dataTable": {
|
||
"toggle": "Points de données ({count})",
|
||
"columnDate": "Date",
|
||
"noValue": "Aucune valeur",
|
||
"captionDay": "Une ligne par jour pour {metric} : les mêmes points que ceux tracés par le graphique.",
|
||
"captionWeek": "Une ligne par semaine pour {metric}, la moyenne des jours de cette semaine : les mêmes points que ceux tracés par le graphique.",
|
||
"captionMonth": "Une ligne par mois pour {metric}, la moyenne des jours de ce mois : les mêmes points que ceux tracés par le graphique.",
|
||
"hourlyMeanNote": "{metric} est la moyenne de chaque jour, chaque heure comptant une seule fois, afin qu'un entraînement ne pèse pas plus que le reste de la journée."
|
||
},
|
||
"personalBaseline": "Ta moyenne",
|
||
"deltaVsBaseline": "{delta} vs. ta moyenne",
|
||
"deltaUnchanged": "correspond à ta moyenne",
|
||
"deltaVsTarget": "{delta} vs. cible",
|
||
"weekdaysFull": {
|
||
"mon": "Lundi",
|
||
"tue": "Mardi",
|
||
"wed": "Mercredi",
|
||
"thu": "Jeudi",
|
||
"fri": "Vendredi",
|
||
"sat": "Samedi",
|
||
"sun": "Dimanche"
|
||
},
|
||
"rangeBand": "Plage",
|
||
"a11y": {
|
||
"summary": "Graphique {metric}. Plage de {min} à {max}, dernier {latest}, tendance {trend}.",
|
||
"noData": "Graphique {metric}. Aucune donnée disponible.",
|
||
"trendUp": "en hausse",
|
||
"trendDown": "en baisse",
|
||
"trendFlat": "stable",
|
||
"scatterSummary": "Graphique de corrélation, {count} points comparant {xLabel} et {yLabel}.",
|
||
"scatterNoData": "Graphique de corrélation de {xLabel} et {yLabel}. Aucune donnée disponible.",
|
||
"moodHeatmap": "Carte thermique de l'humeur du {start} au {end}, {days} jours enregistrés.",
|
||
"moodHeatmapEmpty": "Carte thermique de l'humeur, aucun jour enregistré pour l'instant.",
|
||
"complianceHeatmap": "Carte thermique d'observance des médicaments du {start} au {end}, {days} jours actifs.",
|
||
"complianceHeatmapEmpty": "Carte thermique d'observance des médicaments, aucun jour actif pour l'instant."
|
||
},
|
||
"medicationsEmptyAction": "Ajouter un médicament",
|
||
"rangeLabel": "Période"
|
||
},
|
||
"chart": {
|
||
"overlay": {
|
||
"controls": {
|
||
"title": "Calques du graphique",
|
||
"trendIndicator": "Tendance 7 jours",
|
||
"trendArrow": "Flèche de tendance",
|
||
"targetRange": "Plage cible",
|
||
"comparisonBaseline": "Comparaison",
|
||
"comparisonUnavailable": "Aucune période antérieure disponible",
|
||
"tooltip": {
|
||
"openSettings": "Paramètres des calques de graphique"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"comparison": {
|
||
"baseline": {
|
||
"none": "Désactivé",
|
||
"lastMonth": "Mois précédent",
|
||
"lastYear": "Année précédente"
|
||
},
|
||
"captionLastMonth": "vs. mois précédent",
|
||
"captionLastYear": "vs. année précédente",
|
||
"deltaVs": {
|
||
"lastMonth": "{delta} vs. mois précédent",
|
||
"lastYear": "{delta} vs. année précédente"
|
||
},
|
||
"tooltipPrior": "Période précédente",
|
||
"unavailable": {
|
||
"lastMonth": "Comparaison indisponible : pas de données du mois précédent",
|
||
"lastYear": "Comparaison indisponible : pas de données de l’année précédente"
|
||
},
|
||
"notAvailableForCompliance": "Comparaison indisponible pour l’observance"
|
||
},
|
||
"insights": {
|
||
"pattern": {
|
||
"dismiss": "Ignorer",
|
||
"dismissed": "Ce schéma reste ignoré jusqu’à ce que les données changent.",
|
||
"restore": "Afficher à nouveau",
|
||
"dismissError": "Impossible d’ignorer ce schéma.",
|
||
"restoreError": "Impossible de restaurer ce schéma.",
|
||
"loadError": "Impossible de charger les schémas.",
|
||
"empty": "Aucun schéma actuel n’a franchi le seuil de preuve.",
|
||
"seasonalNote": "Depuis la version 1.42, HealthLog retire la saison et la tendance de fond avant de comparer les valeurs. Vous verrez moins de liens, mais ceux qui restent sont plus solides. Beaucoup des schémas d’avant n’étaient que le calendrier.",
|
||
"seasonalNoteDismiss": "Fermer la remarque"
|
||
},
|
||
"correlation": {
|
||
"direction": {
|
||
"higher": "augmenter",
|
||
"lower": "diminuer"
|
||
},
|
||
"weekdayDirection": {
|
||
"above": "au-dessus de",
|
||
"below": "en dessous de"
|
||
},
|
||
"channelFactor": "l'évaluation de {factor}",
|
||
"channel": {
|
||
"WEIGHT": "le poids",
|
||
"BLOOD_GLUCOSE": "la glycémie",
|
||
"BLOOD_PRESSURE_SYS": "la pression systolique",
|
||
"BLOOD_PRESSURE_DIA": "la pression diastolique",
|
||
"ACTIVITY_STEPS": "le nombre de pas quotidien",
|
||
"SLEEP_DURATION": "la durée de sommeil",
|
||
"HEART_RATE_VARIABILITY": "la variabilité de la fréquence cardiaque",
|
||
"RESTING_HEART_RATE": "la fréquence cardiaque au repos",
|
||
"TIME_IN_DAYLIGHT": "le temps passé à la lumière du jour",
|
||
"MOOD": "l'humeur",
|
||
"PULSE": "le pouls au repos",
|
||
"MEDICATION_COMPLIANCE": "l'observance des médicaments",
|
||
"SYMPTOM_SEVERITY": "la sévérité des symptômes",
|
||
"ENV_TEMP_MEAN": "la température quotidienne",
|
||
"ENV_TEMP_MIN": "la température minimale nocturne",
|
||
"ENV_SUNSHINE": "l'ensoleillement",
|
||
"ENV_DAYLIGHT": "la lumière du jour",
|
||
"ENV_PRECIP": "les précipitations",
|
||
"ENV_PRESSURE_MEAN": "la pression atmosphérique",
|
||
"ENV_PRESSURE_DELTA": "la variation de pression sur la journée",
|
||
"ENV_PM25": "les particules fines (PM2,5)",
|
||
"ENV_OZONE_8H": "l’ozone",
|
||
"ENV_POLLEN_MAX": "le pollen",
|
||
"HRV_RMSSD": "la variabilité de la fréquence cardiaque (RMSSD)",
|
||
"HYDRATION": "l'apport en eau",
|
||
"CAFFEINE": "l'apport en caféine",
|
||
"ALCOHOL": "la consommation d'alcool",
|
||
"WORKOUT_MINUTES": "les minutes d'entraînement",
|
||
"TRAINING_LOAD": "la charge d'entraînement",
|
||
"EXERCISE_MINUTES": "les minutes d'exercice",
|
||
"STAND_MINUTES": "les minutes debout",
|
||
"MINDFUL_MINUTES": "les minutes de pleine conscience",
|
||
"STATE_OF_MIND_VALENCE": "l'état d'esprit noté",
|
||
"INDOOR_CO2": "le CO2 intérieur",
|
||
"INDOOR_TEMPERATURE": "la température intérieure",
|
||
"INDOOR_HUMIDITY": "l'humidité intérieure"
|
||
},
|
||
"daily": {
|
||
"high": "Quand {behaviour} monte, {outcome} du lendemain tend à {direction} dans tes données. C'est une tendance à surveiller, pas une cause.",
|
||
"moderate": "Quand {behaviour} monte, {outcome} du lendemain semble avoir tendance à {direction}, au vu des données actuelles. C'est une tendance à surveiller, pas une cause.",
|
||
"faint": "Quand {behaviour} monte, tout au plus se dessine un faible indice que {outcome} du lendemain tende à {direction} dans tes données. C'est trop ténu pour s'y fier et jamais une cause."
|
||
},
|
||
"lab": {
|
||
"default": "Des valeurs de {lab} plus élevées vont de pair avec {outcome} qui tend à {direction} sur les mêmes périodes dans tes données, une association à surveiller avec ton médecin, jamais une cause.",
|
||
"faint": "Des valeurs de {lab} plus élevées laissent tout au plus entrevoir que {outcome} tende à {direction} sur les mêmes périodes dans tes données. C'est trop ténu pour s'y fier et jamais une cause, mais à évoquer avec ton médecin."
|
||
},
|
||
"hypothesis": {
|
||
"bpCompliance": {
|
||
"support": "Une meilleure observance des médicaments va de pair avec des valeurs systoliques plus basses, une tendance à surveiller.",
|
||
"surprising": "L'observance et la systolique évoluent ensemble dans tes données, ce qui est surprenant. Parles-en à ton médecin avant de changer quoi que ce soit.",
|
||
"none": "L'observance et la systolique n'évoluent pas nettement ensemble sur cette période."
|
||
},
|
||
"moodPulse": {
|
||
"support": "Les jours de moral plus bas vont de pair avec un pouls au repos plus élevé, une tendance à surveiller.",
|
||
"surprising": "Les jours de meilleur moral vont de pair avec un pouls au repos plus élevé dans tes données, ce qui est surprenant.",
|
||
"none": "L'humeur et le pouls au repos n'évoluent pas nettement ensemble sur cette période."
|
||
},
|
||
"weightWeekday": "Le poids du {weekday} est {delta} kg {direction} ta moyenne des autres jours, une tendance à surveiller."
|
||
},
|
||
"dailySameDay": {
|
||
"high": "Plus de {behaviour} le jour même et la veille va souvent de pair avec {direction} {outcome} dans tes données : un schéma à surveiller, pas une cause.",
|
||
"moderate": "Plus de {behaviour} le jour même et la veille semble aller de pair avec {direction} {outcome} dans tes données, d’après ce qu’on voit jusqu’ici : un schéma à surveiller, pas une cause.",
|
||
"faint": "Plus de {behaviour} le jour même et la veille ne montre, au mieux, qu’un faible indice de {direction} {outcome} dans tes données : trop peu pour s’y fier, jamais une cause."
|
||
},
|
||
"channelNutrient": "l'apport en {nutrient}",
|
||
"dailyOvernight": {
|
||
"high": "Plus de {behaviour} pendant la nuit va souvent de pair avec {direction} {outcome} cette nuit-là dans tes données : un schéma à surveiller, pas une cause.",
|
||
"moderate": "Plus de {behaviour} pendant la nuit semble aller de pair avec {direction} {outcome} cette nuit-là dans tes données, d’après ce qu’on voit jusqu’ici : un schéma à surveiller, pas une cause.",
|
||
"faint": "Plus de {behaviour} pendant la nuit ne montre, au mieux, qu’un faible indice de {direction} {outcome} cette nuit-là dans tes données : trop peu pour s’y fier, jamais une cause."
|
||
}
|
||
},
|
||
"noAnalysisYet": "Pas encore d’évaluation.",
|
||
"assessmentPreparing": "Préparation de votre évaluation…",
|
||
"emptyTitle": "Pas encore assez de données",
|
||
"emptyDescription": "Les insights apparaissent dès que tu auras saisi quelques mesures. Commence par le poids ou la tension.",
|
||
"emptyAddMeasurement": "Saisir une mesure",
|
||
"editMode": {
|
||
"done": "Terminé",
|
||
"reset": "Réinitialiser",
|
||
"resetTitle": "Réinitialiser la vue d’ensemble ?",
|
||
"resetBody": "L’ordre des sections et celles que vous avez masquées reviennent aux valeurs par défaut. Votre disposition n’est conservée nulle part ailleurs.",
|
||
"resetConfirm": "Réinitialiser la vue",
|
||
"title": "Personnaliser l’aperçu",
|
||
"description": "Fais glisser pour réorganiser, touche l’œil pour afficher ou masquer.",
|
||
"dragHandle": "Fais glisser pour réorganiser",
|
||
"show": "Afficher",
|
||
"hide": "Masquer",
|
||
"manageInSettings": "Gérer les onglets et les pages de détail dans les réglages",
|
||
"groupSleep": "Sommeil",
|
||
"groupMood": "Humeur",
|
||
"groupEvents": "Événements",
|
||
"gatedHint": "Apparaît dès que des données ou la fonction sont disponibles",
|
||
"allHiddenHint": "Toutes les sections sont masquées. Affiches-en au moins une pour voir ton aperçu.",
|
||
"saveSuccess": "Aperçu enregistré",
|
||
"saveError": "Impossible d’enregistrer ton aperçu",
|
||
"resetSuccess": "Aperçu réinitialisé aux valeurs par défaut",
|
||
"emptyTitle": "Toutes les cartes sont masquées",
|
||
"emptyDescription": "Tu as masqué toutes les sections. Ouvre Personnaliser pour les réafficher."
|
||
},
|
||
"bmiEmptyTitle": "Ajoute ta taille pour l’IMC",
|
||
"bmiEmptyDescription": "L’IMC nécessite ta taille. Renseigne-la dans Paramètres → Compte.",
|
||
"bmiEmptyAction": "Ouvrir les paramètres du compte",
|
||
"personalRecord": {
|
||
"badge": "PR",
|
||
"tooltip": "Record personnel : {value} {unit} le {date}",
|
||
"benchmark": "Valeur typique à cet âge : de {low} à {high} {unit} ({source})"
|
||
},
|
||
"loadError": "Impossible de charger les analyses",
|
||
"heroPersonalBaseline": "Basé sur tes 90 derniers jours",
|
||
"heroRegenerating": "Génération en cours",
|
||
"regenerateAnalysis": "Relancer l’évaluation",
|
||
"regenerateSuccess": "Évaluation regénérée",
|
||
"narrativeTitle": "Rétrospective",
|
||
"narrativeWeek": "Cette semaine",
|
||
"narrativeMonth": "Ce mois-ci",
|
||
"narrativeUpdating": "Mise à jour…",
|
||
"heroFallbackSubtitle": "Un coup d’œil quotidien sur tes tendances, directement issu des chiffres que tu saisis.",
|
||
"heroGreetingMorning": "Bonjour",
|
||
"heroGreetingAfternoon": "Bonjour",
|
||
"heroGreetingEvening": "Bonsoir",
|
||
"heroActionAskCoach": "Demander au coach",
|
||
"healthScore": {
|
||
"label": "Score de santé",
|
||
"band": {
|
||
"green": "Dans la plage de référence",
|
||
"yellow": "Certains piliers demandent une attention",
|
||
"red": "Un ou plusieurs piliers sont hors de la plage de référence"
|
||
},
|
||
"insufficient": "Rien ne dispose encore d'assez de données récentes pour être noté. Un seul domaine de santé suffit pour commencer, et le score indiquera sur quels domaines il repose.",
|
||
"basis": "Basé sur {count} domaines de santé sur {recommended}.",
|
||
"compositionNotice": {
|
||
"item": "{pillar} ({reason})",
|
||
"left": "Ne compte plus dans le score : {pillars}.",
|
||
"joined": "Compte désormais dans le score : {pillars}."
|
||
},
|
||
"anatomyToggle": "Comment ce score est établi",
|
||
"notScored": "Pas encore évalué ({count})",
|
||
"method": "Le score est la moyenne à poids égal des piliers qui comptent pour lui, sur une échelle de 0 à 100. Chaque pilier est comparé à une plage de référence publiée, et le pilier le plus faible peut déterminer la plage globale. Un pilier sans données récentes suffisantes est écarté plutôt que compté comme un zéro. Les plages de référence proviennent de sources publiées ; les piliers qui comptent sont ceux que vous choisissez, donc le nombre combiné n'est pas lui-même une norme clinique.",
|
||
"bandSetter": "Catégorie globale fixée par {pillar}",
|
||
"versionAndNoise": "Version de la méthode {version}. Seuil de comparaison hebdomadaire : {noise} points.",
|
||
"methodVersion": "Version de la méthode {version}.",
|
||
"configured": "Vous avez choisi les piliers qui comptent pour ce score.",
|
||
"none": "aucun",
|
||
"delta": "{delta} par rapport à la période comparable précédente",
|
||
"deltaReason": {
|
||
"algorithm_changed": "Aucune comparaison car la méthode de calcul a changé.",
|
||
"config_changed": "Aucune comparaison car vous avez modifié ce qui compte dans votre score.",
|
||
"composition_changed": "Aucune comparaison car les piliers inclus ont changé.",
|
||
"first_eligibility_window": "Aucune comparaison car il s'agit de la première période admissible.",
|
||
"below_noise_floor": "La variation reste dans la marge de fluctuation combinée des mesures.",
|
||
"no_previous_window": "Aucune période comparable antérieure n'est disponible.",
|
||
"no_current_score": "Aucune comparaison car la période actuelle n'est pas admissible."
|
||
},
|
||
"restMode": "Mode repos actif depuis {since}. Le score est affiché pour contexte et n'est pas pénalisé.",
|
||
"pillar": {
|
||
"bloodPressure": "Tension artérielle",
|
||
"glycaemia": "Glycémie",
|
||
"activity": "Activité",
|
||
"sleep": "Sommeil",
|
||
"adiposity": "Adiposité",
|
||
"wellbeing": "Bien-être",
|
||
"lipids": "Lipides"
|
||
},
|
||
"observed": "Observé : {value}",
|
||
"reference": "Référence : {value}",
|
||
"fastingObserved": "Glycémie à jeun : {value} {unit}",
|
||
"fastingReference": "{low} à {high} {unit} à jeun",
|
||
"personalReference": "Votre objectif : {value}",
|
||
"bpBasisAbove": "Déterminant : {axis}, environ {offset} mmHg au-dessus de son plafond de {boundary} mmHg.",
|
||
"bpBasisBelowFloor": "Déterminant : {axis}, environ {offset} mmHg sous le seuil de basse pression de {boundary} mmHg.",
|
||
"bpBasisInBand": "Les deux valeurs sont à leur plafond de référence ou en dessous.",
|
||
"bpScale": "Au plafond, le score est de 85 ; 100 correspond à environ 12 mmHg en dessous.",
|
||
"bpRepresentative": "Repose sur une moyenne des {days} derniers jours qui pèse davantage les mesures récentes, et peut donc ne correspondre à aucune mesure isolée.",
|
||
"source": "Source : {source}, au {date}",
|
||
"observedActivity": "{value} pas par jour",
|
||
"observedSleep": "{value} minutes par nuit",
|
||
"observedAdiposity": "Rapport taille-hauteur {value}",
|
||
"referenceActivity": "Le bénéfice se stabilise à {high} pas par jour",
|
||
"referenceSleep": "Au moins {low} minutes par nuit ; un sommeil plus long n'est pas pénalisé",
|
||
"referenceAdiposity": "Rapport taille-hauteur inférieur à {high}",
|
||
"referenceHba1c": "HbA1c de {low} à {high} %",
|
||
"referenceDetail": "{label} : de {low} à {high} ({kind}, {source})",
|
||
"openBound": "ouvert",
|
||
"laboratoryReferenceSource": "Plages de référence du laboratoire",
|
||
"personalTargetSource": "Objectif personnel",
|
||
"referenceKind": {
|
||
"clinical": "Seuil clinique",
|
||
"population": "Percentile de population",
|
||
"guideline": "Plage recommandée"
|
||
},
|
||
"reason": {
|
||
"readFailed": "Les données n'ont pas pu être chargées",
|
||
"notTracked": "Non suivi",
|
||
"missingProfile": "L'âge ou le profil de référence manque",
|
||
"missingHeight": "La taille manque",
|
||
"incompletePanel": "Un bilan récent complet avec plages de référence est requis",
|
||
"crisis": "Des consignes de sécurité sont affichées à la place d'un score",
|
||
"insufficientHistory": "Pas assez de données récentes admissibles",
|
||
"unavailable": "Ce pilier n'est pas admissible actuellement"
|
||
},
|
||
"tension": "Les signaux de préparation diffèrent. Favorables : {positive}. Sous tension : {negative}.",
|
||
"returnToBand": "{metric} est revenu dans ta plage habituelle depuis {days} jours.",
|
||
"weightGoal": {
|
||
"title": "Objectif de poids personnel",
|
||
"value": "{current} {unit} actuellement. Objectif de {min} à {max} {unit}. Écart à l'objectif : {distance} {unit}.",
|
||
"delta": "L'écart à l'objectif a changé de {delta} {unit} depuis la mesure précédente.",
|
||
"noDelta": "Aucune mesure de poids antérieure n'est disponible pour la comparaison.",
|
||
"no_personal_goal": "Définis un objectif de poids personnel pour suivre ta progression ici.",
|
||
"weight_not_tracked": "Enregistre ton poids pour suivre ta progression vers ton objectif.",
|
||
"read_failed": "Les données de poids n'ont pas pu être chargées. Réessaie.",
|
||
"notScored": "La progression vers l'objectif de poids est un contexte personnel et ne modifie pas le score de santé."
|
||
},
|
||
"configureLink": "Choisir ce qui compte dans votre score",
|
||
"coverage": {
|
||
"recommendedMet": "Couvre les trois domaines recommandés par le score",
|
||
"areas": "{present} domaines de santé sur {required}"
|
||
},
|
||
"historyLink": "Évolution"
|
||
},
|
||
"dailyBriefing": {
|
||
"title": "Briefing du jour",
|
||
"keyFindingsTitle": "Constats clés",
|
||
"signalsTitle": "Signaux du jour",
|
||
"emptyTitle": "Pas encore de briefing",
|
||
"emptyDescription": "Génère le briefing du jour pour obtenir un récap de tes tendances.",
|
||
"emptyAction": "Générer le briefing",
|
||
"loadingLabel": "Préparation du briefing",
|
||
"refreshFailedHint": "Impossible d'actualiser le briefing. Affichage du précédent.",
|
||
"retryAction": "Réessayer",
|
||
"failedTitle": "Impossible de générer le briefing",
|
||
"failedDescription": "Le fournisseur d'IA a dépassé le délai ou renvoyé une erreur. Réessayez ou augmentez le délai de réponse dans les paramètres d'IA pour un modèle local lent.",
|
||
"failedDescriptionTimeout": "La requête IA a dépassé le délai avant que le briefing soit prêt. Pour un modèle local lent, augmentez le délai de réponse dans les Paramètres, puis réessayez.",
|
||
"failedDescriptionProvider": "Le fournisseur d'IA a rejeté la requête. Vérifiez le fournisseur et la clé API dans les paramètres d'IA, puis réessayez.",
|
||
"failedDescriptionRateLimit": "Le fournisseur d'IA limite les requêtes pour le moment. Réessayez dans un instant.",
|
||
"omittedTitle": "Briefing non affiché",
|
||
"omittedUngroundedDescription": "Le briefing généré mentionnait un chiffre qui n'a pas pu être vérifié avec tes données, il n'a donc pas été affiché. Réessaie."
|
||
},
|
||
"trendsRow": {
|
||
"title": "Tendances",
|
||
"subtitle": "Les 30 derniers jours en un coup d’œil",
|
||
"caption": {
|
||
"bp": "Valeurs systoliques et diastoliques des 30 derniers jours.",
|
||
"weight": "Évolution du poids corporel sur les 30 derniers jours.",
|
||
"pulse": "Pouls au repos des 30 derniers jours.",
|
||
"mood": "Score d'humeur quotidien des 30 derniers jours.",
|
||
"sleep": "Durée du sommeil nocturne des 30 derniers jours.",
|
||
"steps": "Nombre de pas quotidiens des 30 derniers jours.",
|
||
"hrv": "Variabilité de la fréquence cardiaque des 30 derniers jours.",
|
||
"resting_hr": "Fréquence cardiaque au repos des 30 derniers jours.",
|
||
"active_energy": "Énergie active dépensée sur les 30 derniers jours.",
|
||
"flights": "Étages gravis sur les 30 derniers jours.",
|
||
"distance": "Distance de marche et de course des 30 derniers jours.",
|
||
"vo2_max": "VO₂ max des 30 derniers jours.",
|
||
"body_temp": "Température corporelle des 30 derniers jours."
|
||
},
|
||
"viewDetail": "Voir le détail de {metric}"
|
||
},
|
||
"vo2Max": {
|
||
"cardioLinkTitle": "Condition cardio (VO₂ max)",
|
||
"cardioLinkBody": "Le VO₂ max est la mesure de référence de la condition aérobie. Le graphique complet et l’évaluation se trouvent sur leur propre page.",
|
||
"cardioLinkCta": "Ouvrir la condition cardio"
|
||
},
|
||
"trendAnnotation": {
|
||
"emptyBp": "Il faut plus de données pour commenter cette tendance.",
|
||
"emptyWeight": "Il faut plus de données pour commenter cette tendance.",
|
||
"emptyMood": "Il faut plus de données pour commenter cette tendance.",
|
||
"confidenceHigh": "Confiance élevée",
|
||
"confidenceModerate": "Confiance moyenne",
|
||
"confidenceLow": "Confiance faible",
|
||
"pendingLabel": "Commentaire de tendance en cours de génération"
|
||
},
|
||
"correlationRow": {
|
||
"title": "Corrélations",
|
||
"experimentCta": "Lancer une expérience de 7 jours",
|
||
"experimentTooltip": "Bientôt disponible",
|
||
"emptyTitle": "Il faut plus de données pour afficher cette corrélation",
|
||
"sourceChip": "sur la base de {n} mesures appariées ({window})",
|
||
"sourceWindowLast30": "30 derniers jours",
|
||
"confidenceHigh": "Confiance élevée",
|
||
"confidenceModerate": "Confiance moyenne",
|
||
"confidenceLow": "Confiance faible",
|
||
"card": {
|
||
"bpComplianceTitle": "TA × observance médicaments",
|
||
"bpComplianceSubtitle": "Systolique quotidienne face au % d’observance",
|
||
"moodPulseTitle": "Humeur × pouls au repos",
|
||
"moodPulseSubtitle": "Humeur et pouls au repos le même jour",
|
||
"weightWeekdayTitle": "Poids × jour de la semaine",
|
||
"weightWeekdaySubtitle": "Poids groupé par jour de la semaine"
|
||
}
|
||
},
|
||
"coach": {
|
||
"refusalOutOfScope": "Je ne peux aider que pour les données de santé de ton journal : mesures, médicaments, humeur, tendances. Les questions hors de ce périmètre ne sont pas traitées.",
|
||
"refusalInjection": "Ton message contient des instructions qui cherchent à remplacer mes consignes. Je suis le coach HealthLog et je ne résume que tes propres données de santé. Reformule ta question dans ce cadre.",
|
||
"errorBudget": "Tu as atteint la limite quotidienne du coach. Le quota se réinitialise à minuit dans ton fuseau horaire.",
|
||
"errorProvider": "Le coach n’a pas pu joindre un fournisseur d’analyse maintenant. Réessaie dans un instant.",
|
||
"errorDemo": "Dans la démo, le Coach ne répond pas.",
|
||
"errorNoProvider": "Le coach lit tes données de santé enregistrées et répond aux questions à leur sujet (pas un avis médical). HealthLog a besoin d'un fournisseur d'IA pour cela : connecte ta propre clé ou un modèle local.",
|
||
"errorNoProviderAction": "Connecter un fournisseur d'IA",
|
||
"errorNetwork": "Pas de connexion Internet. Réessaie une fois reconnecté.",
|
||
"prefsSaveError": "Impossible d’enregistrer vos préférences du Coach. Réessayez.",
|
||
"errorCredentialExpired": "Ta connexion au fournisseur d'IA a expiré. Reconnecte-la dans les Réglages pour que le Coach continue de fonctionner.",
|
||
"tagline": "Coach personnel de santé, ancré sur tes données.",
|
||
"newChat": "Nouvelle conversation",
|
||
"docScope": {
|
||
"badge": "Document",
|
||
"chattingAbout": "Discussion sur : {title}",
|
||
"chattingAboutMore": "Discussion sur : {titles} et {count} de plus",
|
||
"notIndexedHint": "Lis d'abord ce document avec l'IA dans le coffre pour que le Coach puisse y répondre."
|
||
},
|
||
"actionsMenu": "Actions",
|
||
"maximizeAriaLabel": "Ouvrir en pleine page",
|
||
"minimizeAriaLabel": "Revenir au panneau",
|
||
"send": "Envoyer",
|
||
"stop": "Arrêter",
|
||
"thinking": "Réflexion en cours…",
|
||
"unverifiedFiguresNotice": "Certains chiffres n'ont pas pu être vérifiés avec tes données et ont été omis.",
|
||
"composerPlaceholder": "Pose ta question …",
|
||
"nudgeBubbleLabel": "Nouveau message du coach : ouvrir le chat",
|
||
"fabLabel": "Ouvrir le coach",
|
||
"readAloud": "Lire à voix haute",
|
||
"readAloudStop": "Arrêter la lecture",
|
||
"messageTimeLabel": "Message envoyé {time}",
|
||
"copyMessage": "Copier",
|
||
"copyMessageError": "Copie impossible",
|
||
"regenerate": "Réessayer",
|
||
"selfContextAdopt": {
|
||
"offer": "Ajouter cette réponse à vos informations personnelles ?",
|
||
"confirm": "Ajouter",
|
||
"dismiss": "Ignorer",
|
||
"done": "Ajouté à vos informations personnelles",
|
||
"duplicate": "Déjà présent dans vos informations personnelles",
|
||
"failed": "Échec de l’ajout. Veuillez réessayer."
|
||
},
|
||
"rememberMessage": {
|
||
"action": "Mémoriser",
|
||
"failed": "Échec de l’enregistrement. Veuillez réessayer.",
|
||
"alreadyKept": "Le Coach s'en souvient déjà."
|
||
},
|
||
"guided": {
|
||
"offerTitle": "Le Coach a {count} questions pour vous",
|
||
"offerTitleOne": "Le Coach a une question pour vous",
|
||
"offerBody": "De courtes réponses affinent vos informations personnelles : une question à la fois, ici dans le chat.",
|
||
"offerStart": "Répondre maintenant",
|
||
"offerLater": "Plus tard",
|
||
"offerDismiss": "Ne plus demander",
|
||
"dismissError": "Impossible d’écarter les questions. Veuillez réessayer.",
|
||
"progress": "Question {current} sur {total}",
|
||
"skip": "Passer",
|
||
"later": "Plus tard",
|
||
"dismissRemaining": "Ne plus demander",
|
||
"answerPlaceholder": "Votre réponse…",
|
||
"summaryTitle": "C’est fait, merci pour vos réponses !",
|
||
"summaryAnswered": "{answered} sur {total} répondues",
|
||
"summaryAdopted": "{adopted} ajoutées à vos informations personnelles",
|
||
"summaryAdoptedNone": "rien de nouveau ajouté à vos informations personnelles",
|
||
"summaryLink": "Voir vos informations personnelles"
|
||
},
|
||
"threadEmpty": "Pose une question sur tes tendances, médicaments ou mesures pour démarrer.",
|
||
"historyTitle": "Conversations",
|
||
"historySearchPlaceholder": "Rechercher dans les conversations…",
|
||
"historyEmpty": "Tes conversations s’affichent ici. Lance une question pour commencer.",
|
||
"historyDeleteAria": "Supprimer la conversation",
|
||
"historyDeleted": "Conversation supprimée",
|
||
"historyDeleteFailed": "La conversation n’a pas pu être supprimée.",
|
||
"rename": {
|
||
"action": "Renommer la conversation",
|
||
"input": "Titre de la conversation",
|
||
"save": "Enregistrer le titre",
|
||
"cancel": "Annuler le renommage",
|
||
"error": "Impossible d’enregistrer le titre de la conversation."
|
||
},
|
||
"historySearchEmpty": "Aucune conversation ne correspond à ta recherche.",
|
||
"historyLoadingMore": "Chargement…",
|
||
"sourcesTitle": "Ce à quoi j’accède",
|
||
"sourcesFresh": "À jour",
|
||
"sourcesStale": "Obsolètes",
|
||
"sourcesFooter": "Le coach ne lit que les données que tu as connectées.",
|
||
"metric": {
|
||
"bp": "Tension artérielle",
|
||
"weight": "Poids",
|
||
"pulse": "Pouls",
|
||
"mood": "Humeur",
|
||
"compliance": "Observance",
|
||
"general": "Général",
|
||
"hrv": "VFC",
|
||
"sleep": "Sommeil",
|
||
"resting_hr": "Pouls au repos",
|
||
"steps": "Pas",
|
||
"active_energy": "Énergie active",
|
||
"flights": "Étages",
|
||
"distance": "Distance",
|
||
"vo2_max": "VO₂ max",
|
||
"body_temp": "Température corporelle",
|
||
"medications": "Médicaments",
|
||
"anthropometrics": "Profil (taille, âge, sexe)",
|
||
"walking_hr": "Fréquence cardiaque à la marche",
|
||
"respiratory_rate": "Fréquence respiratoire",
|
||
"spo2": "Oxygène sanguin",
|
||
"pulse_wave_velocity": "Vitesse de l'onde de pouls",
|
||
"vascular_age": "Âge vasculaire",
|
||
"body_fat": "Masse grasse",
|
||
"fat_mass": "Masse grasse",
|
||
"fat_free_mass": "Masse sans graisse",
|
||
"muscle_mass": "Masse musculaire",
|
||
"lean_body_mass": "Masse maigre",
|
||
"bone_mass": "Masse osseuse",
|
||
"total_body_water": "Eau corporelle",
|
||
"bmi": "IMC",
|
||
"visceral_fat": "Graisse viscérale",
|
||
"glucose": "Glycémie",
|
||
"walking_steadiness": "Stabilité à la marche",
|
||
"walking_asymmetry": "Asymétrie de marche",
|
||
"walking_double_support": "Temps de double appui",
|
||
"walking_step_length": "Longueur de foulée",
|
||
"walking_speed": "Vitesse de marche",
|
||
"audio_env": "Son ambiant",
|
||
"audio_headphone": "Audio du casque",
|
||
"audio_event": "Événements sonores forts",
|
||
"daylight": "Temps à la lumière du jour",
|
||
"skin_temp": "Température cutanée",
|
||
"workouts": "Entraînements"
|
||
},
|
||
"settingsAriaLabel": "Paramètres du coach",
|
||
"settingsTitle": "Paramètres du coach",
|
||
"settingsDescription": "Configure comment le coach te parle.",
|
||
"settingsToneLabel": "Ton",
|
||
"settingsToneWarm": "Chaleureux",
|
||
"settingsToneNeutral": "Neutre",
|
||
"settingsToneConcise": "Concis",
|
||
"settingsVerbosityLabel": "Longueur de réponse",
|
||
"settingsVerbosityBrief": "Bref",
|
||
"settingsVerbosityDefault": "Standard",
|
||
"settingsVerbosityDetailed": "Détaillé",
|
||
"settingsVerbosityConciseHint": "Le ton concis garde déjà les réponses courtes : la longueur reste fixée sur « Bref » tant qu'il est actif.",
|
||
"settingsSourcesSummary": "Le coach voit {count} domaines de données sur {total} et remonte sur {window}.",
|
||
"settingsSourcesSummaryAll": "Le coach voit {count} domaines de données sur {total} et tout l’historique.",
|
||
"settingsSourcesPointerLink": "Ouvrir les paramètres du coach",
|
||
"settingsExcludeLabel": "Exclure des métriques",
|
||
"settingsExcludeHint": "Le coach ne verra pas les données des métriques sélectionnées.",
|
||
"settingsContextLabel": "Envoyer le contexte",
|
||
"settingsContextHint": "Blocs optionnels sur lesquels le coach peut s’appuyer. Si tu en désactives un, il sera omis dans chaque réponse.",
|
||
"settingsEvidenceLabel": "Afficher les preuves par défaut",
|
||
"settingsEvidenceHint": "Ouvre automatiquement l’encadré preuves sous chaque réponse.",
|
||
"settingsDefaultWindowLabel": "Période d’analyse par défaut",
|
||
"settingsDefaultWindowHint": "Le coach lit cette période par chat, sauf si tu en choisis une autre dans l’en-tête du panneau.",
|
||
"settingsSave": "Enregistrer",
|
||
"settingsSaved": "Enregistré",
|
||
"settingsCancel": "Annuler",
|
||
"dailyLimitTitle": "Limite quotidienne atteinte",
|
||
"dailyLimitBody": "Limite quotidienne atteinte. Le quota se réinitialise à minuit dans ton fuseau horaire.",
|
||
"providerRateLimitTitle": "Fournisseur limité en débit",
|
||
"providerRateLimitBody": "Le fournisseur est temporairement saturé ; réinitialisation dans ~5 min.",
|
||
"cluster": {
|
||
"cardio": {
|
||
"label": "Cardiovasculaire",
|
||
"hint": "TA, pouls, VFC, FC au repos et à la marche"
|
||
},
|
||
"body": {
|
||
"label": "Composition corporelle",
|
||
"hint": "Poids, masse grasse, muscle et IMC"
|
||
},
|
||
"activity": {
|
||
"label": "Activité",
|
||
"hint": "Pas, énergie, distance et VO₂ max"
|
||
},
|
||
"workouts": {
|
||
"label": "Entraînements",
|
||
"hint": "Courses, sorties et séances"
|
||
},
|
||
"sleep": {
|
||
"label": "Sommeil",
|
||
"hint": "Durée et phases"
|
||
},
|
||
"mood": {
|
||
"label": "Humeur",
|
||
"hint": "Entrées d'humeur quotidiennes"
|
||
},
|
||
"glucose": {
|
||
"label": "Glycémie",
|
||
"hint": "Mesures à jeun & postprandiales"
|
||
},
|
||
"medication": {
|
||
"label": "Médication",
|
||
"hint": "Observance et contexte GLP-1"
|
||
},
|
||
"mobility": {
|
||
"label": "Mobilité & démarche",
|
||
"hint": "Stabilité, asymétrie et démarche"
|
||
},
|
||
"environment": {
|
||
"label": "Environnement",
|
||
"hint": "Bruit, lumière du jour et température cutanée"
|
||
}
|
||
},
|
||
"settingsClustersLabel": "Données vues par le Coach",
|
||
"settingsClustersHint": "Choisissez les groupes de données que le Coach peut lire. Plus de données, des réponses plus riches et un prompt plus grand.",
|
||
"settingsClusterNoData": "Pas encore de données",
|
||
"sourcesMemberCountOne": "1 mesure",
|
||
"sourcesMemberCountFew": "{count} mesures",
|
||
"sourcesMemberCountOther": "{count} mesures",
|
||
"lookback": {
|
||
"label": "Jusqu’où le Coach peut remonter",
|
||
"option": {
|
||
"last7days": "{days} jours",
|
||
"last30days": "{days} jours",
|
||
"last90days": "{days} jours",
|
||
"lastYear": "{months} mois",
|
||
"allTime": "{months} mois en détail, plus pour les analyses"
|
||
},
|
||
"detailDays": "Le Coach ne lit rien de plus ancien que {days} jours, dans aucune réponse.",
|
||
"detailMonths": "Le Coach ne lit rien de plus ancien que {months} mois, dans aucune réponse.",
|
||
"detailAll": "Sans limite, le Coach lit {dailyMonths} mois de mesures au jour près et les mesures plus anciennes en valeurs mensuelles jusqu’à {years} ans en arrière. Pour les analyses, il lit la dernière valeur des marqueurs mesurés le plus récemment et, pour un marqueur sur lequel vous l’interrogez, ses {labRecent} résultats précédents ; les plus anciens sont résumés par année jusqu’à {labYears} ans en arrière, les années antérieures sont seulement comptées.",
|
||
"note": "Votre profil, vos médicaments actuels, une maladie en cours et vos prochains rendez-vous restent visibles ; les synthèses qui demandent plus d’historique sont raccourcies ou omises. Les réponses données plus tôt par le Coach dans d’anciennes conversations peuvent encore citer des valeurs plus anciennes."
|
||
},
|
||
"showConversations": "Afficher les conversations",
|
||
"hideConversations": "Masquer les conversations",
|
||
"heroGreeting": "Pose-moi une question sur tes données",
|
||
"heroSubline": "Pose une question sur tes tendances, médicaments ou mesures.",
|
||
"thinkingDuration": "A réfléchi pendant {seconds}s",
|
||
"thinkingExpandAria": "Montrer ce que le Coach a pris en compte",
|
||
"thinkingDetail": "Réponse établie à partir de ton aperçu santé.",
|
||
"tokensUsed": "{count} jetons",
|
||
"askAboutThis": "Interroger le coach à ce sujet",
|
||
"readStrip": {
|
||
"label": "Plage habituelle",
|
||
"baselineWithin": "Ta plage habituelle est de {low}–{high} {unit} ; aujourd'hui, {value} s'y situe.",
|
||
"baselineAbove": "Ta plage habituelle est de {low}–{high} {unit} ; aujourd'hui, {value} se situe au-dessus.",
|
||
"baselineBelow": "Ta plage habituelle est de {low}–{high} {unit} ; aujourd'hui, {value} se situe en dessous.",
|
||
"sameHoursWithin": "À ce moment de la journée, tu es habituellement à {low}–{high} {unit} ; aujourd'hui jusqu'ici, {value} s'y situe.",
|
||
"sameHoursAbove": "À ce moment de la journée, tu es habituellement à {low}–{high} {unit} ; aujourd'hui jusqu'ici, {value} se situe au-dessus.",
|
||
"sameHoursBelow": "À ce moment de la journée, tu es habituellement à {low}–{high} {unit} ; aujourd'hui jusqu'ici, {value} se situe en dessous.",
|
||
"steadyWithin": "Tes valeurs sont habituellement à {low} {unit} ; aujourd'hui, {value} correspond.",
|
||
"steadyAbove": "Tes valeurs sont habituellement à {low} {unit} ; aujourd'hui, {value} se situe au-dessus.",
|
||
"steadyBelow": "Tes valeurs sont habituellement à {low} {unit} ; aujourd'hui, {value} se situe en dessous.",
|
||
"latestWithin": "Ta plage habituelle est de {low}–{high} {unit} ; ta dernière mesure, du {date}, était de {value}, dans cette plage.",
|
||
"latestAbove": "Ta plage habituelle est de {low}–{high} {unit} ; ta dernière mesure, du {date}, était de {value}, au-dessus.",
|
||
"latestBelow": "Ta plage habituelle est de {low}–{high} {unit} ; ta dernière mesure, du {date}, était de {value}, en dessous.",
|
||
"steadyLatestWithin": "Tes valeurs sont habituellement à {low} {unit} ; ta dernière mesure, du {date}, était de {value}, comme d'habitude.",
|
||
"steadyLatestAbove": "Tes valeurs sont habituellement à {low} {unit} ; ta dernière mesure, du {date}, était de {value}, au-dessus.",
|
||
"steadyLatestBelow": "Tes valeurs sont habituellement à {low} {unit} ; ta dernière mesure, du {date}, était de {value}, en dessous.",
|
||
"insufficient": "J'apprends encore ta plage habituelle. Continue à enregistrer quelques jours de plus.",
|
||
"driver": "{note}",
|
||
"loadError": "Impossible de charger ta plage habituelle."
|
||
},
|
||
"scope": {
|
||
"prefix": "Le Coach est déjà sur {metric}"
|
||
},
|
||
"settings": "Paramètres",
|
||
"history": {
|
||
"groupToday": "Aujourd'hui",
|
||
"groupYesterday": "Hier",
|
||
"groupThisWeek": "Cette semaine",
|
||
"groupEarlier": "Plus tôt"
|
||
},
|
||
"seed": {
|
||
"bloodPressure": "Passe en revue avec moi la tendance de ma tension artérielle sur les 30 derniers jours. Y a-t-il quelque chose à surveiller ?",
|
||
"weight": "Comment mon poids a-t-il évolué ces derniers temps, et la tendance mérite-t-elle d'agir ?",
|
||
"bmi": "Que m'indique la tendance de mon IMC, et comment dois-je l'interpréter ?",
|
||
"pulse": "Passe en revue avec moi mes mesures de pouls. Y a-t-il quelque chose d'inhabituel ?",
|
||
"restingHr": "Comment ma fréquence cardiaque au repos a-t-elle évolué, et que dit-elle de ma condition physique ?",
|
||
"hrv": "Que m'indique ma variabilité de la fréquence cardiaque sur ma récupération et mon stress ces derniers temps ?",
|
||
"sleep": "Passe en revue avec moi mon sommeil récent : durée, régularité et tout ce qui mériterait d'être changé.",
|
||
"mood": "Quels schémas observes-tu dans mon humeur ces dernières semaines ?",
|
||
"medications": "Où en est mon observance médicamenteuse, et correspond-elle à la façon dont je me sens ?",
|
||
"steps": "À quel point ai-je été actif ces derniers temps d'après mes pas, et comment cela se compare-t-il à un niveau de référence sain ?",
|
||
"activeEnergy": "Que dit ma tendance de dépense énergétique active sur mon niveau d'activité ces derniers temps ?",
|
||
"cardioFitness": "Que signifie la tendance de ma condition cardio (VO₂ max), et comment la faire évoluer dans le bon sens ?",
|
||
"bloodGlucose": "Passe en revue avec moi mes dernières mesures de glycémie. Sont-elles dans une fourchette saine ?",
|
||
"oxygenSaturation": "Que m'indique ma tendance de saturation en oxygène (SpO₂) ?",
|
||
"respiratoryRate": "Que dit ma tendance de fréquence respiratoire sur ma santé ?",
|
||
"workouts": "Passe en revue avec moi mes séances d'entraînement récentes : charge, fréquence et comment je récupère entre elles.",
|
||
"recoveryPage": "Pourquoi ma récupération en est-elle là en ce moment, et qu'est-ce qui l'explique ?",
|
||
"briefing": "Passe en revue avec moi le briefing d'aujourd'hui. Sur quoi devrais-je me concentrer, et y a-t-il quelque chose à entreprendre ?",
|
||
"healthScore": "Pourquoi mon score de santé est-il de {score} sur 100, et qu'est-ce qui le ferait le plus progresser ?",
|
||
"periodWeek": "Passe en revue avec moi comment s'est déroulée ma dernière semaine sur mes indicateurs de santé. Qu'est-ce qui ressort ?",
|
||
"periodMonth": "Passe en revue avec moi comment s'est déroulé mon dernier mois sur mes indicateurs de santé. Qu'est-ce qui ressort ?",
|
||
"correlationBpCompliance": "Quel est le lien entre mon observance médicamenteuse et ma tension artérielle ? Explique-moi ce que cette corrélation signifie pour moi.",
|
||
"correlationMoodPulse": "Y a-t-il un lien réel entre mon humeur et mon pouls ? Aide-moi à interpréter cette corrélation.",
|
||
"correlationWeightWeekday": "Mon poids suit-il un schéma hebdomadaire ? Que m'indique cette corrélation selon le jour de la semaine ?",
|
||
"recommendation": "Parle-moi davantage de cette recommandation : \"{text}\". Pourquoi s'applique-t-elle à moi, et que devrais-je faire ?"
|
||
},
|
||
"assessmentPrompt": "Explique-moi mon évaluation de {metric} : qu'est-ce que cela signifie et que dois-je faire ?",
|
||
"attach": {
|
||
"menuChooseFromDocuments": "Choisir parmi les documents",
|
||
"menuUploadNew": "Téléverser un nouveau document",
|
||
"trigger": "Joindre des documents",
|
||
"pickerTitle": "Joindre des documents",
|
||
"pickerDescription": "Le coach lit uniquement les documents que vous joignez, pas vos données de santé.",
|
||
"pickerSearchPlaceholder": "Rechercher des documents…",
|
||
"pickerEmpty": "Aucun document dans votre coffre pour l'instant.",
|
||
"pickerNotIndexed": "Pas encore indexé",
|
||
"pickerCap": "Vous pouvez encore en joindre jusqu'à {max}.",
|
||
"pickerConfirm": "Joindre ({count})",
|
||
"pillRemove": "Retirer {title}",
|
||
"indexing": "Indexation…",
|
||
"indexingHint": "Un document est encore en cours d'indexation ; vous pourrez envoyer une fois prêt.",
|
||
"fencedHint": "Cette conversation s'exécute sans accès à vos données de santé : le coach lit uniquement les documents joints.",
|
||
"documentsAttachedOne": "1 document joint",
|
||
"documentsAttachedOther": "{count} documents joints",
|
||
"railBadge": "Chat de document cloisonné",
|
||
"uploadError": "Échec du téléversement. Veuillez réessayer.",
|
||
"notFoundError": "Ce lien de document n'est plus valide : une conversation normale démarre à la place."
|
||
},
|
||
"interrupted": {
|
||
"note": "Cette réponse a été interrompue avant la fin.",
|
||
"retry": "Reposer la question"
|
||
},
|
||
"historyReadOnlyNote": "Le Coach n'est pas disponible pour le moment, mais vous pouvez toujours lire et supprimer vos conversations.",
|
||
"transcriptYou": "Vous",
|
||
"transcriptCoach": "Coach",
|
||
"errorConsent": "Le Coach a besoin de votre consentement à l'IA avant de pouvoir répondre. Vous pouvez le donner dans Réglages, IA.",
|
||
"errorNotPermitted": "Le Coach n'est pas disponible dans un dossier que quelqu'un partage avec vous.",
|
||
"errorUnavailable": "Le Coach n'a pas pu vérifier ses réglages pour l'instant. Réessayez dans un instant.",
|
||
"errorOperatorOff": "L'IA est désactivée sur ce serveur, le Coach ne peut donc pas répondre.",
|
||
"errorCoachOff": "Le Coach est désactivé. Vous pouvez le réactiver dans Réglages, Modules.",
|
||
"frame": {
|
||
"showPanel": "Afficher les conversations",
|
||
"hidePanel": "Masquer les conversations",
|
||
"panelDescription": "Tes conversations avec le coach, les plus récentes d’abord.",
|
||
"rowActions": "Actions pour {title}",
|
||
"rename": "Renommer",
|
||
"delete": "Supprimer",
|
||
"modelSection": "Modèle",
|
||
"provider": "Répond avec",
|
||
"modelManaged": "Le modèle de ce fournisseur se règle dans les paramètres IA.",
|
||
"noProvider": "Aucun fournisseur disponible",
|
||
"allSettings": "Tous les paramètres IA",
|
||
"operatorCodex": "ChatGPT (partagé par l'opérateur)",
|
||
"changeModel": "Modifier dans Réglages > IA",
|
||
"saving": "Enregistrement…",
|
||
"saveFailed": "Impossible d’enregistrer cette modification.",
|
||
"providerNotActive": "{provider} n'a pas pu prendre le relais : aucune connexion ni clé valide. Configurez-le dans les réglages IA.",
|
||
"operatorManaged": "L'opérateur de votre serveur gère cette connexion. Dès qu'un de vos propres fournisseurs est configuré, c'est lui qui répond en premier."
|
||
},
|
||
"answer": {
|
||
"scrollToBottom": "Aller au dernier message",
|
||
"rememberDone": "Mémorisé",
|
||
"timeYesterday": "hier {time}",
|
||
"timeEarlier": "{date}, {time}",
|
||
"info": "Détails de la réponse",
|
||
"infoModel": "Modèle : {model}"
|
||
},
|
||
"activity": {
|
||
"thinking": "Réfléchit…",
|
||
"fetching": "Récupère {domain}, {window}…",
|
||
"digestOne": "Résume {count} mesure…",
|
||
"digestFew": "Résume {count} mesures…",
|
||
"digestOther": "Résume {count} mesures…",
|
||
"digestDoneOne": "{count} mesure sur {areas}",
|
||
"digestDoneFew": "{count} mesures sur {areas}",
|
||
"digestDoneOther": "{count} mesures sur {areas}",
|
||
"areasOne": "{count} domaine",
|
||
"areasFew": "{count} domaines",
|
||
"areasOther": "{count} domaines",
|
||
"memoryOne": "Se souvient de {count} chose que tu lui as dite",
|
||
"memoryFew": "Se souvient de {count} choses que tu lui as dites",
|
||
"memoryOther": "Se souvient de {count} choses que tu lui as dites",
|
||
"remember": "Retient quelque chose…",
|
||
"plan": "Propose un plan…",
|
||
"asking": "Te pose une question…",
|
||
"answer": "Rédige la réponse…",
|
||
"stop": {
|
||
"budget": "Budget atteint, répond avec ce qu'il a",
|
||
"time": "Temps écoulé, répond avec ce qu'il a",
|
||
"cap": "Beaucoup d'étapes, conclut maintenant",
|
||
"noProgress": "Plus de nouvelles données, conclut"
|
||
},
|
||
"thoughtProcessOne": "Raisonnement ({count} étape)",
|
||
"thoughtProcessFew": "Raisonnement ({count} étapes)",
|
||
"thoughtProcessOther": "Raisonnement ({count} étapes)",
|
||
"awaitingAnswer": "Réponse attendue"
|
||
},
|
||
"memory": {
|
||
"saved": "Retenu : {fact}",
|
||
"undo": "Annuler",
|
||
"accept": "Oui, retiens-le",
|
||
"decline": "Non",
|
||
"confirmed": "C'est noté, je m'en souviendrai.",
|
||
"declined": "D'accord, je ne le ferai pas."
|
||
},
|
||
"plan": {
|
||
"accept": "Adopter ce plan",
|
||
"decline": "Pas maintenant",
|
||
"confirmed": "C'est noté. On fait le point ensemble dans {days} jours.",
|
||
"declined": "D'accord, pas maintenant."
|
||
},
|
||
"assumption": {
|
||
"line": "Hypothèse : {value}",
|
||
"change": "Modifier"
|
||
},
|
||
"suggestedReplies": {
|
||
"groupLabel": "Réponses suggérées"
|
||
},
|
||
"chart": {
|
||
"compare": {
|
||
"periods": "{a} contre {b}"
|
||
}
|
||
},
|
||
"reasoning": {
|
||
"label": "Profondeur de réflexion",
|
||
"hint": "Réfléchir plus en profondeur donne des réponses plus précises, avec un peu plus d'attente.",
|
||
"off": "Désactivé",
|
||
"minimal": "Minimale",
|
||
"low": "Faible",
|
||
"medium": "Moyenne",
|
||
"high": "Élevée",
|
||
"capped": "(limité par l'administrateur)",
|
||
"disabled": "L'administrateur a désactivé la réflexion approfondie."
|
||
},
|
||
"memoryLink": "Mémoire ({count})",
|
||
"newConversation": "Nouvelle conversation"
|
||
},
|
||
"relativeJustNow": "à l’instant",
|
||
"relativeMinutesAgoOne": "il y a {count} minute",
|
||
"relativeMinutesAgoOther": "il y a {count} minutes",
|
||
"relativeMinutesAgoFew": "il y a {count} minutes",
|
||
"relativeHoursAgoOne": "il y a {count} heure",
|
||
"relativeHoursAgoOther": "il y a {count} heures",
|
||
"relativeHoursAgoFew": "il y a {count} heures",
|
||
"relativeDaysAgoOne": "il y a {count} jour",
|
||
"relativeDaysAgoOther": "il y a {count} jours",
|
||
"relativeDaysAgoFew": "il y a {count} jours",
|
||
"navOverview": "Vue d'ensemble",
|
||
"navCatalog": "Toutes les mesures",
|
||
"navBloodPressure": "Tension artérielle",
|
||
"navWeight": "Poids",
|
||
"navPulse": "Pouls",
|
||
"navMood": "Humeur",
|
||
"navMedication": "Médicament",
|
||
"navNutrients": "Nutriments",
|
||
"navBmi": "IMC",
|
||
"navSleep": "Sommeil",
|
||
"navHrv": "VFC",
|
||
"navRestingHr": "FC repos",
|
||
"navOxygenSaturation": "Oxygène",
|
||
"navBodyTemperature": "Température",
|
||
"navSteps": "Pas",
|
||
"navActiveEnergy": "Énergie active",
|
||
"navAriaLabel": "Aller à la section",
|
||
"pillScrollLeft": "Faire défiler les onglets vers la gauche",
|
||
"pillScrollRight": "Faire défiler les onglets vers la droite",
|
||
"tabStrip": {
|
||
"vitalsParent": {
|
||
"label": "Constantes",
|
||
"header": "Constantes vitales"
|
||
},
|
||
"bodyParent": {
|
||
"label": "Corps",
|
||
"header": "Composition corporelle"
|
||
},
|
||
"activityParent": {
|
||
"label": "Activité",
|
||
"header": "Activité et mobilité"
|
||
},
|
||
"heartParent": {
|
||
"label": "Cœur",
|
||
"header": "Santé cardiaque"
|
||
},
|
||
"hearingParent": {
|
||
"label": "Audition",
|
||
"header": "Audition et exposition sonore"
|
||
},
|
||
"environmentParent": {
|
||
"label": "Environnement",
|
||
"header": "Environnement"
|
||
},
|
||
"metabolicParent": {
|
||
"label": "Métabolique",
|
||
"header": "Métabolique"
|
||
}
|
||
},
|
||
"hrv": {
|
||
"title": "VFC",
|
||
"description": "Variabilité de la fréquence cardiaque dans le temps : signal de récupération du système nerveux, capté la nuit par l'Apple Watch et d'autres wearables compatibles.",
|
||
"chartTitle": "Variabilité de la fréquence cardiaque",
|
||
"emptyState": {
|
||
"title": "Aucune mesure de VFC",
|
||
"description": "Les mesures de VFC apparaîtront ici dès que l'Apple Watch (ou un appareil Withings compatible) synchronisera des relevés nocturnes."
|
||
}
|
||
},
|
||
"restingHr": {
|
||
"title": "FC au repos",
|
||
"description": "La fréquence cardiaque de base sur la journée, distincte des pointages ponctuels de la page Pulse. Apple Santé fournit une valeur par jour.",
|
||
"chartTitle": "Fréquence cardiaque au repos",
|
||
"emptyState": {
|
||
"title": "Aucune FC au repos",
|
||
"description": "La FC au repos arrive dès que l'Apple Watch ou un appareil Withings compatible a porté une journée calme."
|
||
},
|
||
"coachPrefill": "Je n'ai pas encore enregistré de fréquence cardiaque au repos. Pourquoi la valeur quotidienne au repos diffère-t-elle d'un pouls ponctuel, et comment l'améliorer ?"
|
||
},
|
||
"oxygenSaturation": {
|
||
"title": "Saturation en oxygène",
|
||
"description": "Oxygène sanguin (SpO₂) : plage clinique normale 95–100 %, avec zones cibles ombrées sur le graphique.",
|
||
"chartTitle": "Saturation en oxygène",
|
||
"emptyState": {
|
||
"title": "Aucune mesure SpO₂",
|
||
"description": "Les mesures SpO₂ apparaîtront dès qu'un wearable compatible (Apple Watch, Withings ScanWatch) en capturera une."
|
||
}
|
||
},
|
||
"bodyTemperature": {
|
||
"title": "Température corporelle",
|
||
"description": "Tendance de température corporelle centrale en Celsius. La température cutanée Withings vit sur une métrique distincte.",
|
||
"chartTitle": "Température corporelle",
|
||
"emptyState": {
|
||
"title": "Aucune température corporelle",
|
||
"description": "Enregistre une mesure ou laisse ton wearable en synchroniser une, et la tendance apparaîtra ici.",
|
||
"cta": "Enregistrer la température"
|
||
}
|
||
},
|
||
"steps": {
|
||
"title": "Pas",
|
||
"description": "Nombre de pas quotidien : une ligne par jour, depuis Apple Santé ou un appareil d'activité connecté.",
|
||
"chartTitle": "Pas par jour",
|
||
"emptyState": {
|
||
"title": "Aucune donnée de pas",
|
||
"description": "Les totaux de pas quotidiens apparaîtront ici dès qu'Apple Santé ou un appareil d'activité synchronise une journée complète."
|
||
}
|
||
},
|
||
"activeEnergy": {
|
||
"title": "Énergie active",
|
||
"description": "Total quotidien d'énergie active en kilocalories : une ligne par jour, depuis Apple Santé ou Withings activité.",
|
||
"chartTitle": "Énergie active",
|
||
"emptyState": {
|
||
"title": "Aucune donnée d'énergie active",
|
||
"description": "Les totaux d'énergie active apparaîtront dès qu'Apple Santé ou un appareil Withings activité synchronise une journée complète."
|
||
}
|
||
},
|
||
"subPage": {
|
||
"loadError": "Impossible de charger cette mesure pour le moment.",
|
||
"blutdruckDescription": "Ton évolution systolique/diastolique avec des plages cibles adaptées à l’âge et une évaluation textuelle.",
|
||
"gewichtDescription": "Évolution du poids face à la bande saine dérivée de ta taille, avec évaluation.",
|
||
"pulsDescription": "Pouls au repos comparé à une plage de référence selon l'âge et le sexe, issue des percentiles de population CDC/NCHS, avec une évaluation rédigée.",
|
||
"stimmungDescription": "Valeurs d’humeur quotidiennes dans le temps, avec une évaluation textuelle.",
|
||
"medikamenteDescription": "Calendrier des prises par médicament, ainsi qu’une évaluation textuelle.",
|
||
"bmiDescription": "IMC dérivé de ton poids et de ta taille, avec évaluation.",
|
||
"target": {
|
||
"adjustLink": "Ajuster la plage cible"
|
||
},
|
||
"explainer": {
|
||
"bloodPressureBody": "La tension artérielle est la force exercée par le sang sur les parois des artères, exprimée en systolique sur diastolique (le pic lors d'un battement sur la valeur de repos entre les battements). Des valeurs durablement élevées sollicitent le cœur et les vaisseaux à la longue.",
|
||
"pulseBody": "Le pouls correspond au nombre de battements du cœur par minute. Une mesure ponctuelle reflète ce que vous faisiez à l'instant : au repos, il est généralement de 60 à 100 battements par minute et augmente naturellement avec le mouvement, le stress ou la caféine.",
|
||
"weightBody": "Le poids corporel est l'un des signaux les plus simples de l'équilibre énergétique à long terme et de la santé globale. La tendance sur plusieurs semaines compte bien plus qu'une mesure isolée, qui varie avec l'hydratation, l'alimentation et l'heure de la journée.",
|
||
"bmiBody": "L'IMC correspond à votre poids divisé par votre taille au carré, un seul chiffre qui vous situe dans une large catégorie de poids. C'est un dépistage de population, pas un diagnostic, et il ne distingue pas le muscle de la graisse.",
|
||
"sleepBody": "La durée du sommeil est le temps réellement dormi au cours de la nuit, réparti entre sommeil léger, profond et paradoxal. La plupart des adultes ont besoin d'environ sept à neuf heures ; une quantité et une qualité régulières soutiennent la récupération, l'humeur et le métabolisme.",
|
||
"moodBody": "Le suivi de l'humeur consigne ce que vous ressentez au fil du temps sur une échelle simple. Le noter régulièrement révèle des tendances (comment le sommeil, l'activité ou les médicaments s'alignent sur votre ressenti) qu'une seule journée ne montre jamais.",
|
||
"medicationsBody": "L'observance mesure la fiabilité avec laquelle vous prenez votre traitement comme prescrit, ici sous forme de la part des doses attendues que vous avez enregistrées. Une prise régulière est souvent ce qui permet à un traitement d'agir comme prévu.",
|
||
"restingHrBody": "La fréquence cardiaque au repos est votre rythme cardiaque lorsque vous êtes totalement au repos, généralement mesuré la nuit. Une fréquence plus basse indique souvent une meilleure forme cardiovasculaire, et une tendance à la hausse peut être un signe précoce de stress ou de maladie.",
|
||
"hrvBody": "La VFC est la petite variation du temps entre des battements consécutifs. Une variabilité plus élevée reflète généralement un système nerveux bien récupéré et adaptable, tandis qu'une baisse durable peut signaler de la fatigue, du stress ou une récupération insuffisante.",
|
||
"oxygenSaturationBody": "La SpO₂ est le pourcentage de globules rouges transportant de l'oxygène. Des valeurs de 95 à 100 % sont normales au repos ; des valeurs qui restent sous 90 % méritent attention, bien que de brèves baisses nocturnes soient fréquentes.",
|
||
"bodyTemperatureBody": "La température corporelle reflète votre état thermique central, normalement autour de 37 °C avec de petites variations quotidiennes. Une hausse durable peut indiquer une infection, tandis que les mesures nocturnes au poignet suivent surtout des variations relatives plutôt qu'une valeur clinique.",
|
||
"activeEnergyBody": "L'énergie active correspond aux calories que vous brûlez par le mouvement, en plus de la dépense de base au repos. C'est une mesure directe du niveau d'activité physique de votre journée.",
|
||
"workoutsBody": "Les entraînements sont les séances d'exercice structurées que vos appareils enregistrent, avec le type, la durée et l'énergie. Les suivre montre comment un entraînement régulier s'accumule au fil des semaines et comment il se relie à vos autres signaux de santé.",
|
||
"respiratoryRateBody": "La fréquence respiratoire est le nombre de respirations que vous prenez par minute. Au repos, la plupart des adultes respirent environ douze à vingt fois par minute ; une hausse durable peut accompagner une maladie, un effort ou du stress.",
|
||
"bodyWaterBody": "L'eau corporelle totale est la part de votre poids constituée de liquide, à l'intérieur et autour des cellules. Elle varie avec l'hydratation, l'alimentation et l'activité, si bien que la tendance sur plusieurs semaines en dit plus qu'une seule mesure.",
|
||
"boneMassBody": "La masse osseuse est le poids estimé des minéraux de votre squelette. Les estimations sur balance sont approximatives, mais une tendance stable ou en hausse soutient la solidité osseuse à long terme.",
|
||
"fatFreeMassBody": "La masse non grasse est tout ce qui, dans votre corps, n'est pas de la graisse : muscle, os, organes et eau. La maintenir ou la développer tout en perdant du poids signale en général une composition corporelle plus saine.",
|
||
"fatMassBody": "La masse grasse est le poids total de la graisse de votre corps. Une part de graisse est indispensable aux hormones et au stockage d'énergie, mais un excès, surtout au niveau de l'abdomen, augmente le risque pour la santé à long terme (WHO 2024).",
|
||
"bodyFatBody": "Le taux de masse grasse est la part de votre poids constituée de graisse. Les plages saines dépendent du sexe et de l'âge, et les balances l'estiment par bio-impédance : la tendance sur plusieurs semaines en dit plus qu'une mesure isolée.",
|
||
"muscleMassBody": "La masse musculaire est le poids estimé des muscles de votre corps. Plus de muscle soutient la force, le métabolisme et la mobilité, et demande généralement un effort actif pour être préservé avec l'âge.",
|
||
"visceralFatBody": "La graisse viscérale est la graisse stockée au plus profond de l'abdomen, autour des organes. Contrairement à la graisse sous la peau, un niveau élevé est étroitement lié aux maladies cardiaques et au diabète de type 2 : plus elle est basse, mieux c'est.",
|
||
"leanBodyMassBody": "La masse maigre est votre poids total moins la graisse corporelle : muscle, os, organes et eau réunis. La suivre en parallèle du poids montre si les variations viennent du muscle ou de la graisse.",
|
||
"flightsClimbedBody": "Les étages montés comptent les niveaux que vous gravissez chaque jour, un étage correspondant à environ trois mètres de dénivelé. C'est un indicateur simple de l'activité du quotidien et de l'effort des jambes.",
|
||
"walkingDistanceBody": "La distance à pied et en course est le trajet que vous parcourez à pied chaque jour. Elle complète le nombre de pas en reflétant la distance parcourue, pas seulement la fréquence des pas.",
|
||
"walkingSteadinessBody": "La stabilité de la marche estime à quel point votre démarche est stable et équilibrée, classée d'acceptable à faible. Un niveau bas indique un risque de chute plus élevé et mérite d'être évoqué avec un professionnel de santé.",
|
||
"walkingHeartRateBody": "La fréquence cardiaque à la marche est votre pouls moyen lors d'une marche régulière. Une valeur plus basse au fil du temps reflète souvent une meilleure forme cardiovasculaire pour le même effort.",
|
||
"walkingAsymmetryBody": "L'asymétrie de la marche est la part du temps où vos pas sont inégaux entre la jambe gauche et la droite. Un pourcentage plus élevé peut signaler une douleur, une blessure ou un trouble de la marche à examiner.",
|
||
"doubleSupportTimeBody": "Le temps de double appui est la part de chaque cycle de marche où les deux pieds touchent le sol en même temps. Un pourcentage plus élevé traduit en général une démarche plus prudente et moins stable.",
|
||
"stepLengthBody": "La longueur de pas est la distance moyenne d'une foulée à la suivante. Un pas plus court au fil du temps peut traduire de la fatigue, de la prudence ou un changement de mobilité.",
|
||
"walkingSpeedBody": "La vitesse de marche est la rapidité de votre déplacement sur terrain plat. C'est un marqueur bien étudié de la santé générale et de la mobilité, et une allure stable ou en hausse est bon signe.",
|
||
"pulseWaveVelocityBody": "La vitesse de l'onde de pouls mesure la rapidité avec laquelle l'onde de pression de chaque battement parcourt vos artères. Une onde plus rapide indique des artères plus rigides, liées à un risque cardiovasculaire accru.",
|
||
"vascularAgeBody": "L'âge vasculaire estime, d'après la rigidité artérielle, l'âge apparent de vos artères par rapport à votre âge réel. Un âge vasculaire inférieur à votre âge réel suggère des vaisseaux sanguins en meilleure santé.",
|
||
"environmentalAudioBody": "Les niveaux sonores ambiants suivent le volume de votre environnement en décibels. Une exposition prolongée au-delà d'environ 70 dB peut endommager l'audition avec le temps : des moyennes journalières plus basses sont plus sûres.",
|
||
"headphoneAudioBody": "Les niveaux audio au casque suivent, en décibels, le volume auquel vous écoutez avec des écouteurs ou un casque. Baisser le volume et faire des pauses protège votre audition sur le long terme.",
|
||
"audioEventsBody": "Les événements sonores forts signalent les moments où le bruit autour de vous a atteint un niveau pouvant nuire à l'audition en cas d'exposition suffisante. Des événements fréquents invitent à rechercher un environnement plus calme ou une protection auditive.",
|
||
"daylightBody": "Le temps à la lumière du jour correspond à la durée passée en lumière extérieure chaque jour. Une lumière naturelle régulière soutient un rythme veille-sommeil et une humeur sains (CDC 2024), et le temps passé dehors est lié à la santé oculaire.",
|
||
"bloodGlucoseBody": "La glycémie est la quantité de sucre dans votre sang, principale source d'énergie de l'organisme. Elle augmente après les repas et se stabilise entre eux. À titre indicatif pour les adultes sans diabète, une glycémie à jeun inférieure à {prediabetesFrom} {unit} est normale, de {prediabetesFrom} à {prediabetesTo} elle correspond au prédiabète, et à partir de {diabetesFrom} elle se situe dans la zone du diabète (ADA 2024). Une seule valeur élevée ne suffit pas à poser un diagnostic : un médecin la confirme par un nouveau test, et les personnes qui suivent un diabète ont d'autres objectifs, fixés avec leur médecin.",
|
||
"skinTemperatureBody": "La température cutanée correspond ici à la petite variation nocturne de la température de votre poignet par rapport à votre propre référence, et non à une mesure absolue de fièvre. Les variations peuvent suivre le sommeil, l'environnement, une maladie ou la phase du cycle menstruel.",
|
||
"cardioFitnessBody": "Le VO₂ max correspond à la quantité d'oxygène que votre corps peut utiliser à l'effort maximal. C'est le meilleur indice de laboratoire de la forme aérobie, que les wearables estiment de façon indirecte. Une tendance plus élevée ou en hausse est un fort signe de santé cardiovasculaire.",
|
||
"cardioRecoveryBody": "La récupération cardiaque correspond au nombre de battements par minute dont votre fréquence cardiaque diminue dans la première minute après l'arrêt d'un effort intense. Une baisse plus forte signifie que votre cœur se calme plus vite, signe d'une bonne condition physique.",
|
||
"wristTemperatureBody": "La température du poignet est mesurée pendant votre sommeil et indiquée comme l'écart par rapport à votre valeur de référence, et non comme une valeur absolue. Une valeur stable est normale, tandis qu'une hausse durable peut signaler une maladie, un entraînement intense ou un changement de cycle.",
|
||
"fallsBody": "Ceci compte les chutes lourdes détectées par votre wearable. L'objectif est zéro ; un nombre en hausse est un signal de risque de mobilité à évoquer avec un professionnel, surtout pour les personnes âgées (CDC STEADI 2024).",
|
||
"sixMinuteWalkBody": "C'est une estimation de la distance que vous pourriez parcourir en six minutes, un test clinique classique de mobilité et d'endurance cardiopulmonaire. La valeur du wearable est une approximation, pas le test clinique encadré ; c'est la tendance stable ou en hausse qui compte.",
|
||
"stairAscentSpeedBody": "C'est la vitesse à laquelle vous montez une volée de marches. C'est un marqueur sensible de la force des jambes et de la mobilité : un rythme stable ou en hausse est bon signe, un rythme en baisse mérite attention.",
|
||
"stairDescentSpeedBody": "C'est la vitesse à laquelle vous descendez une volée de marches. Avec la vitesse de montée, elle reflète le contrôle des jambes et l'équilibre : un rythme stable est bon signe, un rythme en baisse mérite attention.",
|
||
"breathingDisturbancesBody": "Un wearable peut estimer à quelle fréquence votre respiration a été interrompue pendant le sommeil. Un indice plus bas est préférable ; un niveau signalé comme élevé, surtout sur plusieurs nuits, mérite d'être évoqué avec un professionnel. C'est une approximation de dépistage, pas un diagnostic d'apnée du sommeil.",
|
||
"stepsBody": "Le nombre de pas correspond au total de pas que vous faites chaque jour : la mesure la plus simple de l'activité quotidienne. Une habitude régulière compte plus qu'une seule grosse journée, et l'objectif rond de 10 000 pas est un slogan publicitaire, pas un résultat de recherche.",
|
||
"readinessBody": "La disponibilité est une lecture quotidienne de la disposition de votre corps à affronter la journée, mêlant fréquence cardiaque au repos, variabilité de la fréquence cardiaque et sommeil. C'est une approximation de l'appareil rapportée à votre propre référence, pas une mesure clinique : un score élevé signifie récupéré, un score plus bas invite à lever le pied.",
|
||
"sleepScoreBody": "Votre score de sommeil résume toute une nuit en un seul chiffre : durée, efficacité, régularité des horaires et équilibre entre sommeil léger, profond et paradoxal. Observez la tendance sur plusieurs semaines plutôt que de courir après un score parfait sur une seule nuit.",
|
||
"recoveryBody": "La récupération reflète la qualité du rétablissement de votre corps, à partir de signaux nocturnes comme la variabilité de la fréquence cardiaque et la fréquence au repos. Un score élevé est un feu vert pour pousser ; un score plus bas suggère que votre organisme se reconstruit encore.",
|
||
"strainBody": "La charge mesure l'effort cardiovasculaire et physique que vous avez imposé à votre corps, des entraînements à une journée active debout. Dès qu'il y a assez d'historique, elle est évaluée par rapport à votre propre effort habituel, pas à un standard extérieur.",
|
||
"stressBody": "Le stress est ici une estimation de la charge physiologique sur votre système nerveux, lue surtout à partir des schémas de variabilité de la fréquence cardiaque et non de ce que vous ressentez consciemment. Un score plus bas indique un état calme et bien régulé ; un score plus élevé invite à prévoir de la récupération.",
|
||
"recoveryPageBody": "La récupération rassemble les signaux nocturnes enregistrés par votre wearable (recharge, effort, charge ainsi que vos totaux de fréquence cardiaque et d'énergie du jour) pour montrer à quel point votre corps a récupéré. Observez la tendance sur plusieurs jours plutôt qu'un seul chiffre ; une valeur plus faible invite à lever le pied, ce n'est pas une alarme.",
|
||
"pulsePressureBody": "La pression pulsée est l'écart entre votre valeur systolique et diastolique (systolique moins diastolique). À titre indicatif général, environ 40 mmHg est typique au repos ; un écart large au-dessus d'environ 60 mmHg à l'âge moyen peut refléter des artères rigidifiées, tandis qu'un écart étroit en dessous d'environ 25 mmHg peut accompagner un faible volume d'éjection (StatPearls/NIH 2023). C'est un sujet de discussion, pas un diagnostic.",
|
||
"meanArterialPressureBody": "La pression artérielle moyenne est la pression moyenne que voient vos organes sur un battement, soit grosso modo la diastolique plus un tiers de l'écart avec la systolique. À titre indicatif général, une valeur au repos se situe autour de 70–100 mmHg (StatPearls/NIH 2023). Le seuil de ~60 mmHg souvent cité est un concept de soins aigus, pas une alarme pour l'autosurveillance.",
|
||
"cycleEducationBody": "Votre cycle traverse quatre phases pilotées par les hormones, et sa durée et sa régularité sont une fenêtre accessible sur la santé globale. À titre indicatif général, les cycles chez l'adulte durent typiquement 21–35 jours (les références cliniques citent 24–38), avec des règles d'environ cinq jours (ACOG 2015). La phase lutéale est l'ancrage stable, donc l'ovulation s'estime au mieux en comptant à rebours depuis vos prochaines règles prévues, jamais à un « jour 14 » fixe. Une fenêtre fertile prédite est une estimation qui demande plusieurs cycles enregistrés et reste approximative, et la température basale confirme l'ovulation après coup plutôt qu'elle ne la prédit. Ce n'est pas une méthode de contraception.",
|
||
"sleepHygieneBody": "Quelques habitudes fondées sur les preuves favorisent le sommeil : des heures de coucher et de lever régulières, week-ends compris, une lumière vive le matin et des soirées tamisées, une chambre fraîche, sombre et calme, et éviter la caféine l'après-midi, l'alcool tardif et les repas copieux tard le soir (CDC 2024). La régularité prédit la santé au moins autant que la durée, et le temps de sommeil total d'un wearable est bien plus fiable que sa répartition entre sommeil profond, léger et paradoxal."
|
||
},
|
||
"bpDerived": {
|
||
"pulsePressure": "La pression pulsée (l'écart entre vos valeurs) est d'environ {value} mmHg ; environ 40 est typique au repos.",
|
||
"meanArterialPressure": "La pression artérielle moyenne (la moyenne que voient vos organes) est d'environ {value} mmHg, normalement autour de 70–100.",
|
||
"caveat": "Ces valeurs sont dérivées de votre dernière mesure à titre indicatif général, pas comme un diagnostic."
|
||
},
|
||
"stats": {
|
||
"label": "Statistiques récapitulatives",
|
||
"min": "Min",
|
||
"max": "Max",
|
||
"median": "Médiane",
|
||
"mean": "Moyenne"
|
||
},
|
||
"showAllValues": "Afficher toutes les mesures",
|
||
"valuesPageTitle": "{metric} : toutes les mesures",
|
||
"valuesPageDescription": "Chaque mesure derrière cette métrique. Modifiez ou supprimez une entrée directement.",
|
||
"diversity": {
|
||
"trigger": "Conseil de mesure",
|
||
"weekday": "La plupart de vos mesures de {metric} tombent le même jour de la semaine. Enregistrer d'autres jours donne une image plus complète.",
|
||
"timeOfDay": "La plupart de vos mesures de {metric} tombent à une heure similaire de la journée. Varier l'heure donne une image plus complète."
|
||
},
|
||
"valuesBack": "Retour aux Insights",
|
||
"valuesBackToMetric": "Retour à {metric}",
|
||
"scoresBack": "Retour aux Insights",
|
||
"ecgDescription": "Enregistrements ECG à dérivation unique de votre appareil, chacun accompagné du résultat de l'appareil."
|
||
},
|
||
"units": {
|
||
"steps": "pas",
|
||
"flights": "étages",
|
||
"falls": "chutes",
|
||
"years": "ans",
|
||
"breathingEvents": "événements",
|
||
"standHours": "heures",
|
||
"respiratoryRate": "respirations/min"
|
||
},
|
||
"sleep": {
|
||
"title": "Sommeil",
|
||
"description": "Répartition des phases et durée nocturne, issues d’Apple Health.",
|
||
"mainSleep": "Sommeil principal",
|
||
"totalSleep": "Sommeil total",
|
||
"compositionTitle": "Répartition des phases",
|
||
"compositionSubtitle": "{nights} dernières nuits",
|
||
"compositionAriaLabel": "Répartition des phases de sommeil sur {nights} nuits",
|
||
"sourceDiscrepancy": {
|
||
"tooltipTitle": "Les sources divergent"
|
||
},
|
||
"stages": {
|
||
"deep": "Profond",
|
||
"rem": "REM",
|
||
"core": "Léger",
|
||
"asleep": "Endormi",
|
||
"awake": "Éveillé",
|
||
"inBed": "Au lit",
|
||
"nap": "Sieste",
|
||
"napCount": "{count} siestes",
|
||
"unavailable": "Pas encore de données de phases. Les phases de sommeil apparaîtront ici dès qu’une source connectée les fournira."
|
||
},
|
||
"empty": {
|
||
"title": "Pas encore de données de sommeil",
|
||
"description": "Connecte une source comme Apple Health ou un objet connecté (ou enregistre ton sommeil manuellement) et cette vue se remplira automatiquement.",
|
||
"action": "Gérer les appareils"
|
||
},
|
||
"debt": {
|
||
"title": "Dette de sommeil",
|
||
"value": "{hours} h {minutes} min de déficit",
|
||
"caption": "Solde restant sur les {nights} dernières nuits",
|
||
"clearValue": "À jour",
|
||
"clearCaption": "Rien en attente sur les {nights} dernières nuits",
|
||
"learning": "Votre sommeil est encore en cours d'analyse : {counted} nuits jusqu'ici, encore {remaining} pour un bilan fiable.",
|
||
"computedInfo": "Il s'agit de l'estimation propre à HealthLog : un solde glissant entre le besoin et le sommeil des dernières nuits, que le sommeil de récupération réduit. Elle peut différer de la dette de sommeil native d'un wearable, qui utilise son propre modèle de besoin."
|
||
},
|
||
"average": {
|
||
"title": "Moyenne par nuit",
|
||
"value": "{hours} h {minutes} min",
|
||
"caption": "Sommeil moyen sur les {nights} dernières nuits",
|
||
"learning": "Votre sommeil est encore en cours d'analyse : {counted} nuits jusqu'ici, encore {remaining} pour une moyenne fiable."
|
||
},
|
||
"chronotype": {
|
||
"title": "Chronotype",
|
||
"learning": "Votre rythme est encore en cours d'analyse : {counted} sur {total} nuits libres. Un chronotype a besoin de quelques matins sans réveil pour avoir du sens.",
|
||
"advancedToggle": "Avancé",
|
||
"socialJetlagValue": "{hours} h {minutes} min de jet lag social",
|
||
"socialJetlagCaption": "L'écart entre vos horaires de sommeil les jours travaillés et les jours libres, comme un petit décalage horaire hebdomadaire.",
|
||
"msfScValue": "Milieu de sommeil corrigé {clock}",
|
||
"msfScCaption": "Ajusté pour le sommeil rattrapé le week-end (MSFsc).",
|
||
"dayTypeNote": "Les jours libres sont supposés être les week-ends jusqu'à l'ajout du suivi du type de jour.",
|
||
"band": {
|
||
"extreme_early": "Type du matin marqué",
|
||
"early": "Type du matin",
|
||
"intermediate": "Type intermédiaire",
|
||
"late": "Type du soir",
|
||
"extreme_late": "Type du soir marqué"
|
||
},
|
||
"midpointHeadline": "Le milieu naturel de votre sommeil se situe vers {clock}."
|
||
},
|
||
"rhythm": {
|
||
"loadError": "Votre rythme de sommeil n'a pas pu se charger pour l'instant. Il réapparaîtra dès que la connexion sera rétablie."
|
||
}
|
||
},
|
||
"medicationCompliance": "Observance des médicaments",
|
||
"dayStreak": "{count} jours de série",
|
||
"dayStreakOne": "{count} jour de série",
|
||
"compliance7d": "Observance 7 jours",
|
||
"compliance30d": "Observance 30 jours",
|
||
"taken": "Pris",
|
||
"skipped": "Sauté",
|
||
"missed": "Manqué",
|
||
"assessmentTitle": "Évaluation",
|
||
"restMode": {
|
||
"title": "Mode repos",
|
||
"body": "Un épisode de maladie ou d'affection est en cours, ceci reflète donc une période de récupération. Votre score n'en est pas pénalisé.",
|
||
"bodySince": "Un épisode de maladie ou d'affection est en cours depuis le {since}, ceci reflète donc une période de récupération. Votre score n'en est pas pénalisé."
|
||
},
|
||
"bloodPressureSectionTitle": "Tension artérielle",
|
||
"weightSectionTitle": "Poids",
|
||
"pulseSectionTitle": "Pouls",
|
||
"bmiSectionTitle": "IMC",
|
||
"complianceNoData": "Aucune donnée d’observance disponible",
|
||
"generate": "Générer une nouvelle analyse",
|
||
"moodSectionTitle": "Humeur",
|
||
"emptyState": {
|
||
"bloodPressure": {
|
||
"title": "Aucune mesure de tension artérielle",
|
||
"description": "Enregistrez une mesure de tension : la tendance, la part dans la cible et la classification OMS s'afficheront ici.",
|
||
"cta": "Enregistrer une tension"
|
||
},
|
||
"weight": {
|
||
"title": "Aucune mesure de poids",
|
||
"description": "Enregistrez un poids : la tendance, la moyenne glissante et la zone cible apparaîtront automatiquement.",
|
||
"cta": "Enregistrer un poids"
|
||
},
|
||
"pulse": {
|
||
"title": "Aucune mesure de pouls",
|
||
"description": "Enregistrez un pouls : pouls au repos, VFC et VO₂ max apparaîtront dans cette vue.",
|
||
"cta": "Enregistrer un pouls"
|
||
},
|
||
"bmi": {
|
||
"title": "IMC pas encore calculé",
|
||
"description": "Dès qu'une taille et au moins un poids sont enregistrés, la tendance IMC avec les zones OMS s'affichera ici.",
|
||
"cta": "Enregistrer un poids"
|
||
},
|
||
"mood": {
|
||
"title": "Aucune entrée d'humeur",
|
||
"description": "Enregistrez une humeur : la tendance, la bande de stabilité et les corrélations s'afficheront.",
|
||
"cta": "Enregistrer une humeur"
|
||
},
|
||
"medication": {
|
||
"title": "Aucun médicament configuré",
|
||
"description": "Configurez un médicament : observance, taux plasmatique et titration apparaîtront ici.",
|
||
"cta": "Ajouter un médicament"
|
||
},
|
||
"sleep": {
|
||
"title": "Aucune donnée de sommeil",
|
||
"description": "Dès que des données de sommeil sont disponibles (manuel ou via Withings / Apple Health), la répartition par stade apparaîtra ici.",
|
||
"cta": "Connecter une source"
|
||
}
|
||
},
|
||
"navWorkouts": "Entraînements",
|
||
"navRecovery": "Récupération",
|
||
"workouts": {
|
||
"title": "Entraînements",
|
||
"description": "Courses, sorties à vélo, marches et séances de musculation récentes, dédupliquées entre Apple Watch et Withings.",
|
||
"emptyState": {
|
||
"title": "Aucun entraînement",
|
||
"description": "Tes entraînements arrivent d'Apple Santé sur l'iPhone et de Withings. Tu peux aussi en saisir un à la main."
|
||
},
|
||
"detail": {
|
||
"backToList": "Retour aux entraînements",
|
||
"statsTitle": "Statistiques",
|
||
"statsDuration": "Durée",
|
||
"statsDistance": "Distance",
|
||
"statsActiveEnergy": "Énergie active",
|
||
"statsAvgHr": "FC moyenne",
|
||
"statsMaxHr": "FC max",
|
||
"statsMinHr": "FC min",
|
||
"statsStepCount": "Pas",
|
||
"statsElevation": "Dénivelé",
|
||
"statsPace": "Allure",
|
||
"routeTitle": "Parcours",
|
||
"hrChartTitle": "Fréquence cardiaque",
|
||
"notFound": "Entraînement introuvable.",
|
||
"hrFromPulse": "À partir de vos données de fréquence cardiaque autour de cette séance",
|
||
"hrAxisMinutes": "min",
|
||
"hrAvgMarker": "Moy. {bpm}",
|
||
"hrMaxMarker": "Max. {bpm}",
|
||
"hrRangeValue": "{low} à {high} bpm",
|
||
"hrRangeLabel": "Plage",
|
||
"hrNoProfile": "Aucune valeur de pouls détaillée ne couvre cette séance.",
|
||
"sportAverageLabel": "Votre moyenne récente :",
|
||
"zonesTitle": "Zones d'effort",
|
||
"zonesCaption": "Répartition de votre effort entre les zones de fréquence cardiaque.",
|
||
"zonesCaptionDevice": "Temps par zone indiqué par votre appareil.",
|
||
"exportGpx": "Exporter le GPX",
|
||
"elevationTitle": "Dénivelé",
|
||
"splitsTitle": "Temps par kilomètre",
|
||
"splitsKm": "km",
|
||
"splitsTime": "Temps",
|
||
"splitsPace": "Allure",
|
||
"thatDayTitle": "Ce jour-là",
|
||
"daySleepTitle": "La nuit précédente",
|
||
"daySleepNone": "Aucun sommeil enregistré cette nuit-là",
|
||
"daySleepAwakeningsOne": "{count} réveil",
|
||
"daySleepAwakeningsMany": "{count} réveils",
|
||
"dayMoodTitle": "Humeur ce jour-là",
|
||
"dayMoodNone": "Aucune humeur enregistrée ce jour-là",
|
||
"sleepTrendsLink": "Tendances du sommeil",
|
||
"moodHistoryLink": "Historique d'humeur",
|
||
"previousSessionLink": "Séance précédente",
|
||
"insightTitle": "Analyse de l'activité"
|
||
},
|
||
"sport": {
|
||
"walking": "Marche",
|
||
"running": "Course",
|
||
"cycling": "Vélo",
|
||
"hiking": "Randonnée",
|
||
"swimming": "Natation",
|
||
"rowing": "Aviron",
|
||
"elliptical": "Elliptique",
|
||
"stairClimber": "Stepper",
|
||
"yoga": "Yoga",
|
||
"mindAndBody": "Mind and Body",
|
||
"strength": "Musculation",
|
||
"hiit": "HIIT",
|
||
"dance": "Danse",
|
||
"golf": "Golf",
|
||
"badminton": "Badminton",
|
||
"tennis": "Tennis",
|
||
"basketball": "Basket",
|
||
"soccer": "Football",
|
||
"crossTraining": "Cross-training",
|
||
"mixedCardio": "Cardio mixte",
|
||
"other": "Autre"
|
||
},
|
||
"loadError": "Tes séances n'ont pas pu être chargées",
|
||
"loadMore": "Charger plus de séances",
|
||
"loadingMore": "Chargement de séances supplémentaires",
|
||
"loadMoreError": "Les séances supplémentaires n'ont pas pu être chargées",
|
||
"countOne": "{count} séance",
|
||
"countOther": "{count} séances",
|
||
"countFew": "{count} séances",
|
||
"filterLabel": "Filtrer par sport",
|
||
"filterAll": "Tous les sports",
|
||
"filterEmpty": "Aucune séance de ce sport dans votre historique.",
|
||
"manual": {
|
||
"logWorkout": "Saisir un entraînement",
|
||
"sheetTitle": "Saisir un entraînement",
|
||
"sheetDescription": "Saisissez une séance à la main : ce que vous avez fait, quand et combien de temps.",
|
||
"sportLabel": "Activité",
|
||
"sportPlaceholder": "Choisir une activité",
|
||
"startLabel": "Début",
|
||
"startHint": "Laissez vide si vous venez de terminer : la durée est comptée à rebours depuis maintenant.",
|
||
"durationLabel": "Durée",
|
||
"distanceLabel": "Distance ({unit})",
|
||
"energyLabel": "Énergie active (kcal)",
|
||
"alreadySaved": "Cet entraînement est déjà enregistré",
|
||
"saveError": "L’entraînement n’a pas pu être enregistré",
|
||
"deleteLabel": "Supprimer l’entraînement",
|
||
"deleteConfirmTitle": "Supprimer cet entraînement ?",
|
||
"deleteConfirmDescription": "Cet entraînement saisi à la main sera supprimé définitivement.",
|
||
"deleted": "Entraînement supprimé",
|
||
"deleteError": "L’entraînement n’a pas pu être supprimé",
|
||
"errors": {
|
||
"sportRequired": "Choisissez une activité.",
|
||
"startRequired": "Saisissez une date et une heure.",
|
||
"startInFuture": "Le début ne peut pas être dans le futur.",
|
||
"durationRequired": "Indiquez la durée de l’entraînement.",
|
||
"durationInvalid": "Saisissez des heures entières et des minutes de 0 à 59.",
|
||
"durationTooLong": "Un entraînement dure au maximum 24 heures.",
|
||
"endInFuture": "Il se terminerait dans le futur. Indiquez comme début l’heure à laquelle l’entraînement a commencé.",
|
||
"distanceInvalid": "Saisissez la distance sous forme de nombre, dans une plage réaliste.",
|
||
"energyInvalid": "Saisissez l’énergie active sous forme de nombre, jusqu’à 20 000 kcal."
|
||
},
|
||
"editTitle": "Modifier l’entraînement",
|
||
"editAction": "Modifier",
|
||
"updated": "Entraînement mis à jour"
|
||
},
|
||
"load": {
|
||
"title": "Charge d'entraînement",
|
||
"fitness": "Condition",
|
||
"fatigue": "Fatigue",
|
||
"form": "Fraîcheur",
|
||
"explainer": "La condition est ton impulsion d'entraînement par fréquence cardiaque moyennée sur environ six semaines, la fatigue sur environ une semaine, et la fraîcheur est la différence. Les chiffres se comparent à ton propre passé, pas à d'autres personnes ni à d'autres apps.",
|
||
"warmingUp": "Sur {days} jours pour l'instant : tant que six semaines ne sont pas couvertes, la condition paraît plus basse qu'elle ne l'est.",
|
||
"coverage": "{rated} des {days} derniers jours ont pu être évalués. Un jour sans données d'activité, ou avec un entraînement qui n'a pas pu être évalué, est écarté au lieu de compter comme repos.",
|
||
"asOf": "Au {date}, le dernier jour qui a pu être évalué."
|
||
}
|
||
},
|
||
"bloodGlucose": {
|
||
"title": "Glycémie",
|
||
"description": "Vos relevés de glycémie au fil du temps, en {unit}.",
|
||
"chartTitle": "Glycémie",
|
||
"medianLabel": "Glycémie médiane",
|
||
"emptyState": {
|
||
"title": "Aucune donnée de glycémie",
|
||
"description": "Les relevés de glycémie apparaissent ici dès que vous en saisissez un ou qu’un appareil se synchronise."
|
||
},
|
||
"clinical": {
|
||
"title": "Aperçu du glucose",
|
||
"subtitle": "Un point sur vos {days} derniers jours, à partir de {count} mesures.",
|
||
"spotCaveat": "Ce sont des estimations issues de mesures ponctuelles, pas le profil d’un capteur continu : lisez-les comme une tendance, non comme un verdict clinique.",
|
||
"labsLink": "Résultats de laboratoire ? Saisis une HbA1c ou une glycémie à jeun issue d'une prise de sang dans Laboratoire.",
|
||
"learningTitle": "Votre glucose se découvre encore",
|
||
"learningBody": "Pour l’instant, cela fait {count} sur {days}. Avec un peu plus d’historique, le tableau se précise : continuez à enregistrer ou laissez un appareil connecté compléter.",
|
||
"learningBodyEmpty": "Dès que quelques mesures arrivent (saisies par vous ou synchronisées depuis un appareil), votre temps dans la cible, votre moyenne et votre variabilité prennent forme ici.",
|
||
"readingsCount": "{count} mesures",
|
||
"readingsCountOne": "1 mesure",
|
||
"daysCount": "{days} jours",
|
||
"daysCountOne": "1 jour",
|
||
"tir": {
|
||
"title": "Temps dans la cible",
|
||
"caption": "Part des mesures dans chaque plage ({low}–{high} {unit} est la cible).",
|
||
"veryLow": "Très bas",
|
||
"low": "Bas",
|
||
"inRange": "Dans la cible",
|
||
"high": "Élevé",
|
||
"veryHigh": "Très élevé",
|
||
"ariaLabel": "Temps dans la cible : {tir}% dans la cible, {below}% en dessous, {above}% au-dessus.",
|
||
"empty": "Pas encore de mesures à afficher."
|
||
},
|
||
"gmi": {
|
||
"label": "Indicateur de gestion du glucose",
|
||
"help": "Une estimation de type HbA1c dérivée de votre glucose moyen."
|
||
},
|
||
"eA1c": {
|
||
"label": "HbA1c estimée",
|
||
"help": "Une estimation d’HbA1c à partir de votre glucose moyen (ADAG)."
|
||
},
|
||
"mean": {
|
||
"label": "Glucose moyen"
|
||
},
|
||
"cv": {
|
||
"label": "Variabilité",
|
||
"steady": "Stable",
|
||
"unstable": "Instable",
|
||
"help": "Coefficient de variation. À partir de 36 %, le glucose est considéré comme instable ; plus bas est plus stable."
|
||
},
|
||
"advanced": {
|
||
"toggle": "Indices avancés",
|
||
"intro": "Des indicateurs de niveau recherche pour regarder de plus près. Chacun condense vos mesures en un seul chiffre pondéré par le risque.",
|
||
"jIndex": {
|
||
"label": "Indice J",
|
||
"help": "Un score unique mêlant votre moyenne et sa dispersion : plus il est bas, plus le contrôle est serré."
|
||
},
|
||
"lbgi": {
|
||
"label": "Risque d’hypoglycémie (LBGI)",
|
||
"help": "Indice de Kovatchev pondérant la fréquence et la profondeur des baisses."
|
||
},
|
||
"hbgi": {
|
||
"label": "Risque d’hyperglycémie (HBGI)",
|
||
"help": "Indice de Kovatchev pondérant la fréquence et la hauteur des hausses."
|
||
},
|
||
"byContext": {
|
||
"title": "Par contexte",
|
||
"fasting": "À jeun",
|
||
"postprandial": "Après les repas",
|
||
"random": "Aléatoire",
|
||
"bedtime": "Au coucher",
|
||
"unspecified": "Non précisée",
|
||
"readingsShort": "{count} mesures",
|
||
"readingsShortOne": "1 mesure"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"navBloodGlucose": "Glucose",
|
||
"totalBodyWater": {
|
||
"title": "Eau corporelle totale",
|
||
"description": "Votre eau corporelle totale au fil du temps, en kilogrammes.",
|
||
"chartTitle": "Eau corporelle totale",
|
||
"emptyState": {
|
||
"title": "Aucune donnée d’eau corporelle",
|
||
"description": "Les relevés d’eau corporelle apparaissent ici dès qu’une balance à impédance se synchronise."
|
||
}
|
||
},
|
||
"navTotalBodyWater": "Eau corporelle",
|
||
"boneMass": {
|
||
"title": "Masse osseuse",
|
||
"description": "Votre masse osseuse au fil du temps, en kilogrammes.",
|
||
"chartTitle": "Masse osseuse",
|
||
"emptyState": {
|
||
"title": "Aucune donnée de masse osseuse",
|
||
"description": "Les relevés de masse osseuse apparaissent ici dès qu’une balance à impédance se synchronise."
|
||
}
|
||
},
|
||
"navBoneMass": "Masse osseuse",
|
||
"flightsClimbed": {
|
||
"title": "Étages gravis",
|
||
"description": "Volées d’escaliers gravies chaque jour.",
|
||
"chartTitle": "Étages gravis par jour",
|
||
"emptyState": {
|
||
"title": "Aucune donnée d’étages",
|
||
"description": "Les totaux d’étages apparaissent ici dès qu’Apple Health synchronise une journée."
|
||
}
|
||
},
|
||
"navFlightsClimbed": "Étages",
|
||
"walkingRunningDistance": {
|
||
"title": "Distance marche + course",
|
||
"description": "Distance de marche et de course parcourue chaque jour, en kilomètres.",
|
||
"chartTitle": "Distance par jour",
|
||
"emptyState": {
|
||
"title": "Aucune donnée de distance",
|
||
"description": "La distance quotidienne apparaît ici dès qu’Apple Health synchronise une journée."
|
||
}
|
||
},
|
||
"navWalkingRunningDistance": "Distance",
|
||
"fatFreeMass": {
|
||
"title": "Masse sans graisse",
|
||
"description": "Votre masse sans graisse au fil du temps, en kilogrammes.",
|
||
"chartTitle": "Masse sans graisse",
|
||
"emptyState": {
|
||
"title": "Aucune donnée",
|
||
"description": "Les relevés apparaissent ici dès qu’une balance à impédance se synchronise."
|
||
}
|
||
},
|
||
"navFatFreeMass": "Masse maigre",
|
||
"fatMass": {
|
||
"title": "Masse grasse",
|
||
"description": "Votre masse grasse au fil du temps, en kilogrammes.",
|
||
"chartTitle": "Masse grasse",
|
||
"emptyState": {
|
||
"title": "Aucune donnée de masse grasse",
|
||
"description": "Les relevés apparaissent ici dès qu’une balance à impédance se synchronise."
|
||
}
|
||
},
|
||
"bodyFat": {
|
||
"title": "Taux de masse grasse",
|
||
"description": "Votre taux de masse grasse au fil du temps.",
|
||
"chartTitle": "Taux de masse grasse",
|
||
"emptyState": {
|
||
"title": "Aucune donnée de taux de masse grasse",
|
||
"description": "Les relevés apparaissent ici dès qu'une balance à impédance se synchronise ou que vous en saisissez un à la main.",
|
||
"cta": "Enregistrer le taux de masse grasse"
|
||
}
|
||
},
|
||
"navFatMass": "Masse grasse",
|
||
"navBodyFat": "Taux de masse grasse",
|
||
"muscleMass": {
|
||
"title": "Masse musculaire",
|
||
"description": "Votre masse musculaire au fil du temps, en kilogrammes.",
|
||
"chartTitle": "Masse musculaire",
|
||
"emptyState": {
|
||
"title": "Aucune donnée musculaire",
|
||
"description": "Les relevés apparaissent ici dès qu’une balance à impédance se synchronise."
|
||
}
|
||
},
|
||
"navMuscleMass": "Masse musculaire",
|
||
"skinTemperature": {
|
||
"title": "Température cutanée",
|
||
"description": "La température cutanée de votre poignet au fil du temps, en degrés Celsius.",
|
||
"chartTitle": "Température cutanée",
|
||
"emptyState": {
|
||
"title": "Aucune donnée",
|
||
"description": "Les relevés apparaissent ici dès qu’un appareil synchronise la température nocturne."
|
||
}
|
||
},
|
||
"navSkinTemperature": "Temp. peau",
|
||
"pulseWaveVelocity": {
|
||
"title": "Vitesse de l’onde de pouls",
|
||
"description": "Votre vitesse d’onde de pouls artérielle au fil du temps, en m/s. Des valeurs plus élevées suggèrent des artères plus rigides.",
|
||
"chartTitle": "Vitesse de l’onde de pouls",
|
||
"emptyState": {
|
||
"title": "Aucune donnée",
|
||
"description": "Les relevés apparaissent ici dès qu’un appareil Withings compatible se synchronise."
|
||
}
|
||
},
|
||
"navPulseWaveVelocity": "Vitesse onde de pouls",
|
||
"vascularAge": {
|
||
"title": "Âge vasculaire",
|
||
"description": "Votre âge vasculaire estimé au fil du temps, en années.",
|
||
"chartTitle": "Âge vasculaire",
|
||
"emptyState": {
|
||
"title": "Aucune donnée",
|
||
"description": "Les estimations apparaissent ici dès qu’un appareil Withings compatible se synchronise."
|
||
}
|
||
},
|
||
"navVascularAge": "Âge vasculaire",
|
||
"visceralFat": {
|
||
"title": "Graisse viscérale",
|
||
"description": "Votre indice de graisse viscérale au fil du temps.",
|
||
"chartTitle": "Graisse viscérale",
|
||
"emptyState": {
|
||
"title": "Aucune donnée",
|
||
"description": "Les indices apparaissent ici dès qu’une balance à impédance compatible se synchronise."
|
||
}
|
||
},
|
||
"navVisceralFat": "Graisse viscérale",
|
||
"audioExposureEnv": {
|
||
"title": "Audio ambiant",
|
||
"description": "Votre exposition quotidienne moyenne au son ambiant, en dBA.",
|
||
"chartTitle": "Exposition au son ambiant",
|
||
"emptyState": {
|
||
"title": "Aucune donnée",
|
||
"description": "Les niveaux sonores apparaissent ici dès qu’Apple Health se synchronise."
|
||
}
|
||
},
|
||
"navAudioExposureEnv": "Audio ambiant",
|
||
"audioExposureHeadphone": {
|
||
"title": "Audio du casque",
|
||
"description": "Votre exposition quotidienne moyenne au casque, en dBA.",
|
||
"chartTitle": "Exposition au casque",
|
||
"emptyState": {
|
||
"title": "Aucune donnée",
|
||
"description": "Les niveaux apparaissent ici dès qu’Apple Health se synchronise."
|
||
}
|
||
},
|
||
"navAudioExposureHeadphone": "Audio casque",
|
||
"timeInDaylight": {
|
||
"title": "Temps à la lumière du jour",
|
||
"description": "Minutes passées à la lumière du jour chaque jour.",
|
||
"chartTitle": "Lumière du jour par jour",
|
||
"emptyState": {
|
||
"title": "Aucune donnée",
|
||
"description": "Les totaux apparaissent ici dès qu’Apple Health synchronise une journée."
|
||
}
|
||
},
|
||
"navTimeInDaylight": "Lumière du jour",
|
||
"walkingSteadiness": {
|
||
"title": "Stabilité de la marche",
|
||
"description": "Votre stabilité de marche au fil du temps, en pourcentage.",
|
||
"chartTitle": "Stabilité de la marche",
|
||
"emptyState": {
|
||
"title": "Aucune donnée",
|
||
"description": "Les relevés apparaissent ici dès qu’Apple Health se synchronise."
|
||
}
|
||
},
|
||
"navWalkingSteadiness": "Stabilité de marche",
|
||
"audioExposureEvent": {
|
||
"title": "Événements sonores forts",
|
||
"description": "Jours avec un événement d’exposition sonore forte.",
|
||
"chartTitle": "Événements sonores par jour",
|
||
"emptyState": {
|
||
"title": "Aucune donnée",
|
||
"description": "Les événements apparaissent ici dès qu’Apple Health se synchronise."
|
||
}
|
||
},
|
||
"navAudioExposureEvent": "Événements sonores",
|
||
"respiratoryRate": {
|
||
"title": "Fréquence respiratoire",
|
||
"description": "Votre fréquence respiratoire au fil du temps, en respirations par minute.",
|
||
"chartTitle": "Fréquence respiratoire",
|
||
"emptyState": {
|
||
"title": "Aucune donnée",
|
||
"description": "Les relevés apparaissent ici dès qu’Apple Health synchronise la respiration du sommeil ou de l’entraînement."
|
||
}
|
||
},
|
||
"navRespiratoryRate": "Fréquence respiratoire",
|
||
"leanBodyMass": {
|
||
"title": "Masse maigre corporelle",
|
||
"description": "Votre masse maigre corporelle au fil du temps, en kilogrammes.",
|
||
"chartTitle": "Masse maigre corporelle",
|
||
"emptyState": {
|
||
"title": "Aucune donnée",
|
||
"description": "Les relevés apparaissent ici dès qu’une balance à impédance se synchronise."
|
||
}
|
||
},
|
||
"navLeanBodyMass": "Masse maigre corporelle",
|
||
"walkingHeartRateAverage": {
|
||
"title": "Pouls en marchant",
|
||
"description": "Votre fréquence cardiaque moyenne en marchant, en bpm.",
|
||
"chartTitle": "Pouls moyen en marchant",
|
||
"emptyState": {
|
||
"title": "Aucune donnée",
|
||
"description": "Les relevés apparaissent ici dès qu’Apple Health se synchronise."
|
||
}
|
||
},
|
||
"navWalkingHeartRateAverage": "Pouls en marchant",
|
||
"walkingAsymmetry": {
|
||
"title": "Asymétrie de la marche",
|
||
"description": "Votre asymétrie de marche au fil du temps, en pourcentage.",
|
||
"chartTitle": "Asymétrie de la marche",
|
||
"emptyState": {
|
||
"title": "Aucune donnée",
|
||
"description": "Les relevés apparaissent ici dès qu’Apple Health se synchronise."
|
||
}
|
||
},
|
||
"navWalkingAsymmetry": "Asymétrie de marche",
|
||
"walkingDoubleSupport": {
|
||
"title": "Temps de double appui",
|
||
"description": "Le pourcentage de chaque foulée avec les deux pieds au sol.",
|
||
"chartTitle": "Temps de double appui",
|
||
"emptyState": {
|
||
"title": "Aucune donnée",
|
||
"description": "Les relevés apparaissent ici dès qu’Apple Health se synchronise."
|
||
}
|
||
},
|
||
"navWalkingDoubleSupport": "Double appui",
|
||
"walkingStepLength": {
|
||
"title": "Longueur de pas",
|
||
"description": "Votre longueur de pas moyenne au fil du temps, en mètres.",
|
||
"chartTitle": "Longueur de pas",
|
||
"emptyState": {
|
||
"title": "Aucune donnée",
|
||
"description": "Les relevés apparaissent ici dès qu’Apple Health se synchronise."
|
||
}
|
||
},
|
||
"navWalkingStepLength": "Longueur de pas",
|
||
"walkingSpeed": {
|
||
"title": "Vitesse de marche",
|
||
"description": "Votre vitesse de marche moyenne au fil du temps, en km/h.",
|
||
"chartTitle": "Vitesse de marche",
|
||
"emptyState": {
|
||
"title": "Aucune donnée",
|
||
"description": "Les relevés apparaissent ici dès qu’Apple Health se synchronise."
|
||
}
|
||
},
|
||
"navWalkingSpeed": "Vitesse de marche",
|
||
"mood": {
|
||
"logLink": "Enregistrer une humeur",
|
||
"heatmapTitle": "Calendrier d'humeur",
|
||
"heatmapNoEntry": "Aucune entrée",
|
||
"legendGreat": "Excellent",
|
||
"legendGood": "Bien",
|
||
"legendOkay": "Correct",
|
||
"legendLow": "Bas",
|
||
"distributionTitle": "Répartition de l'humeur",
|
||
"distributionDaysUnit": "jours",
|
||
"weekdayTitle": "Moyenne par jour de la semaine",
|
||
"weekdayNoData": "Aucune donnée",
|
||
"weekdayBestWorst": "Meilleur jour : {best}, jour le plus difficile : {worst}",
|
||
"tagsTitle": "Étiquettes et déclencheurs",
|
||
"tagAvgMood": "Humeur moyenne avec cette étiquette",
|
||
"correlationsTitle": "Humeur et autres mesures",
|
||
"correlationsDescription": "Comment votre humeur évolue avec le sommeil, l'activité et le pouls le même jour.",
|
||
"correlation": {
|
||
"sleepTitle": "Humeur vs. sommeil",
|
||
"stepsTitle": "Humeur vs. activité",
|
||
"pulseTitle": "Humeur vs. pouls",
|
||
"sleepAxis": "Sommeil (min)",
|
||
"stepsAxis": "Pas",
|
||
"pulseAxis": "Pouls (bpm)",
|
||
"strengthStrong": "Forte",
|
||
"strengthModerate": "Modérée",
|
||
"strengthWeak": "Faible",
|
||
"strengthNone": "Aucune",
|
||
"source": "{n} jours appariés, r = {r}",
|
||
"emptyTitle": "Pas encore assez de données appariées",
|
||
"emptyDescription": "Enregistrez l'humeur et cette mesure les mêmes jours pour voir une corrélation.",
|
||
"pendingDescription": "{n} jours appariés sur {needed}. Une corrélation apparaît dès qu'il y a assez de jours pour distinguer un motif du hasard.",
|
||
"noLinkTitle": "Aucun lien net",
|
||
"noLinkDescription": "{n} jours appariés, et rien ne se démarque de ce que le hasard produirait.",
|
||
"weightTitle": "Humeur vs. poids",
|
||
"bloodPressureTitle": "Humeur vs. tension artérielle",
|
||
"weightAxis": "Poids",
|
||
"bloodPressureAxis": "Systolique (mmHg)",
|
||
"sourceLabel": "Comment ceci est calculé"
|
||
},
|
||
"structuredTagsTitle": "Répartition des étiquettes",
|
||
"inTargetValue": "{pct} %",
|
||
"inTargetCaption": "des derniers jours dans votre plage de bonne humeur",
|
||
"narrative": {
|
||
"title": "Ce qui ressort",
|
||
"weekdayDip": "Votre humeur baisse surtout le {weekday}, {delta} sous votre semaine.",
|
||
"weekdayPeak": "Le {weekday} est toujours votre meilleur jour, avec une moyenne de {value}.",
|
||
"trendUp": "Votre humeur progresse sur les {days} derniers jours (+{delta} par rapport à la période précédente).",
|
||
"trendDown": "Votre humeur recule sur les {days} derniers jours (-{delta} par rapport à la période précédente).",
|
||
"weekendUp": "Vous vous sentez mieux le week-end (+{delta} par rapport à la semaine).",
|
||
"weekendDown": "Votre humeur est plus basse le week-end (-{delta} par rapport à la semaine).",
|
||
"tagLift": "Les jours marqués « {tag} » dépassent votre humeur générale de {delta} en moyenne.",
|
||
"tagDrop": "Les jours marqués « {tag} » sont {delta} sous votre moyenne.",
|
||
"inTarget": "Vous avez été dans votre plage de bonne humeur {pct} % des 30 derniers jours.",
|
||
"streak": "Vous avez noté votre humeur {days} jours d'affilée. Continuez.",
|
||
"timeOfDay": "Vous vous sentez mieux le {bucket}, en moyenne {value}."
|
||
},
|
||
"timeOfDay": {
|
||
"title": "Humeur selon l'heure de la journée",
|
||
"morning": "Matin",
|
||
"afternoon": "Après-midi",
|
||
"evening": "Soir",
|
||
"night": "Nuit",
|
||
"bestCaption": "Vous vous sentez généralement mieux le {bucket}."
|
||
},
|
||
"stability": {
|
||
"value": "{score}/100",
|
||
"bandVerySteady": "Votre humeur a été très stable",
|
||
"bandSteady": "Votre humeur a été plutôt stable",
|
||
"bandVariable": "Votre humeur a été nettement variable",
|
||
"bandVeryVariable": "Votre humeur a beaucoup fluctué récemment",
|
||
"title": "Stabilité"
|
||
},
|
||
"influence": {
|
||
"title": "Influence sur l'humeur",
|
||
"detail": "Moyenne de {withAvg} les {withDays} jours où vous l'avez indiqué, contre {withoutAvg} sans.",
|
||
"confidenceLow": "Confiance faible",
|
||
"confidenceMedium": "Confiance moyenne",
|
||
"confidenceHigh": "Confiance élevée"
|
||
},
|
||
"betterDays": {
|
||
"title": "Ce qui accompagne vos meilleurs jours",
|
||
"description": "Les tags et mesures qui coïncident avec vos jours de meilleure et de moins bonne humeur, classés selon la force du lien."
|
||
},
|
||
"crosstab": {
|
||
"title": "Tags et vos métriques de santé",
|
||
"description": "Comment une métrique de santé diffère les jours où vous avez ajouté chaque tag, par rapport aux jours sans.",
|
||
"pairLabel": "{metric} les jours avec {tag}",
|
||
"metricActiveEnergy": "Énergie active",
|
||
"metricSleepDuration": "Sommeil",
|
||
"metricNextDayRecovery": "Récupération le lendemain",
|
||
"metricNextDayRestingHr": "Fréquence cardiaque au repos le lendemain",
|
||
"metricNextDayHrv": "Variabilité de la fréquence cardiaque le lendemain",
|
||
"detailSameDay": "En moyenne {withAvg} les {withDays} jours avec ce tag contre {withoutAvg} sans.",
|
||
"detailNextDay": "En moyenne {withAvg} le lendemain des {withDays} jours avec ce tag contre {withoutAvg} sinon."
|
||
},
|
||
"factorCrosstab": {
|
||
"title": "Vos facteurs notés et vos constantes",
|
||
"description": "Comment une constante diffère les jours où vous avez noté un facteur bas par rapport aux jours où vous l'avez noté haut.",
|
||
"pairLabel": "{metric} les jours avec {factor}",
|
||
"metricSleepDuration": "Sommeil",
|
||
"metricSteps": "Pas",
|
||
"metricRestingHeartRate": "Fréquence cardiaque au repos",
|
||
"metricHrv": "Variabilité de la fréquence cardiaque",
|
||
"metricWeight": "Poids",
|
||
"metricBloodPressureSys": "Systolique",
|
||
"detail": "En moyenne {lowAvg} les {lowDays} jours où vous avez noté {factor} bas contre {highAvg} les jours où vous l'avez noté haut.",
|
||
"detailInverse": "En moyenne {lowAvg} sur vos {lowDays} pires jours de {factor} contre {highAvg} sur les meilleurs."
|
||
},
|
||
"discovery": {
|
||
"title": "Ce qui ressort",
|
||
"subheading": "Relations découvertes",
|
||
"footer": "Issues de {tested} paires d'un jour à l'autre testées sur l'ensemble de vos mesures, après correction des fausses découvertes.",
|
||
"disclaimer": "Filtré statistiquement, mais toujours observationnel : une tendance à surveiller, pas une cause.",
|
||
"moodUp": "Un {factor} plus élevé tend à coïncider avec une meilleure humeur le lendemain dans vos données.",
|
||
"moodDown": "Un {factor} plus élevé tend à coïncider avec une moins bonne humeur le lendemain dans vos données.",
|
||
"outcomeUp": "Une meilleure humeur tend à coïncider avec un {factor} plus élevé le lendemain dans vos données.",
|
||
"outcomeDown": "Une meilleure humeur tend à coïncider avec un {factor} plus bas le lendemain dans vos données.",
|
||
"stat": "{n} jours appariés, r = {r}, q = {q}",
|
||
"statLabel": "Comment ceci est calculé",
|
||
"explainerLabel": "Comment ceci est calculé",
|
||
"channel": {
|
||
"ALCOHOL": "consommation d'alcool",
|
||
"WORKOUT_MINUTES": "minutes d'entraînement",
|
||
"TRAINING_LOAD": "charge d'entraînement"
|
||
}
|
||
},
|
||
"inTargetTitle": "Dans votre plage",
|
||
"dimensions": {
|
||
"title": "État d'esprit",
|
||
"none": "Rien n'est encore enregistré pour l'état d'esprit.",
|
||
"window": "{days} jours",
|
||
"noneInWindow": "rien sur cette période",
|
||
"higherIsMore": "plus haut = {anchor}",
|
||
"notRecorded": "Non renseigné : {list}."
|
||
},
|
||
"contextComparison": {
|
||
"title": "Contexte de la journée et ton humeur",
|
||
"description": "Où se situait la valeur d'humeur les jours enregistrés jusqu'ici avec cette entrée, par rapport aux autres.",
|
||
"lower": "plus bas",
|
||
"higher": "plus haut",
|
||
"statement": "Les jours avec « {label} », l'humeur était en moyenne {direction} : {withAvg} contre {withoutAvg}.",
|
||
"counts": "{withDays} jours avec, {withoutDays} jours sans",
|
||
"caveat": "Cela montre un lien, pas une cause."
|
||
},
|
||
"prognosis": {
|
||
"title": "Ton auto-évaluation",
|
||
"selfLabel": "Ton évaluation",
|
||
"expectedLabel": "Attendu selon tes propres habitudes",
|
||
"band": "Plage de {low} à {high}",
|
||
"statement": "D'après tes habitudes jusqu'ici, une valeur autour de {value} aurait été attendue pour {date}. Établi à partir de {n} journées comparables.",
|
||
"provisional": "Encore provisoire : le motif repose sur une courte série de journées.",
|
||
"notToday": "Cela décrit {date}, pas aujourd'hui.",
|
||
"deviationWithin": "Ta propre évaluation se situe dans cette plage.",
|
||
"deviationAbove": "Ta propre évaluation se situe {amount} points au-dessus de cette plage.",
|
||
"deviationBelow": "Ta propre évaluation se situe {amount} points en dessous de cette plage.",
|
||
"weightedTitle": "Ce qui a le plus pesé dans la comparaison de cette journée",
|
||
"weightedUp": "{label} : comptait vers une valeur attendue plus élevée",
|
||
"weightedDown": "{label} : comptait vers une valeur attendue plus basse",
|
||
"caveat": "C'est une comparaison avec tes propres journées passées, pas une affirmation sur la manière dont une journée s'est déroulée.",
|
||
"learning": "Phase d'apprentissage : {entries} journées sur {threshold} enregistrées. La comparaison apparaît une fois qu'il y en a assez.",
|
||
"noPattern": "Dans les {entries} journées enregistrées jusqu'ici, rien n'est assez régulier pour comparer une journée. Quand tu notes aussi le contexte d'une journée, tu en rends davantage comparable.",
|
||
"featureValue": "{field} : {value}",
|
||
"loadError": "Impossible de charger la valeur attendue selon tes propres habitudes."
|
||
},
|
||
"patterns": {
|
||
"title": "Tendances de votre humeur",
|
||
"basedOn": "Sur la base de {subject} et {comparison} jours. Une tendance, pas une cause.",
|
||
"previousDayHigher": "Après une journée en dessous de l’habitude, le lendemain est souvent meilleur ({subject} contre {comparison} après une journée au-dessus).",
|
||
"previousDayLower": "Une journée en dessous de l’habitude a tendance à se prolonger le lendemain ({subject} contre {comparison} après une journée au-dessus).",
|
||
"weekendHigher": "Votre humeur a tendance à être meilleure le week-end ({subject} contre {comparison} en semaine).",
|
||
"weekendLower": "Votre humeur a tendance à être plus basse le week-end ({subject} contre {comparison} en semaine).",
|
||
"bestWeekday": "{weekday} est souvent votre meilleur jour ({subject} contre {comparison} les autres jours).",
|
||
"notesHigher": "Les jours avec une note, votre humeur a tendance à être meilleure ({subject} contre {comparison} sans note).",
|
||
"notesLower": "Les jours avec une note, votre humeur a tendance à être plus basse ({subject} contre {comparison} sans note).",
|
||
"delayedTagHigher": "Le lendemain de « {tag} », votre humeur a tendance à être meilleure ({subject} contre {comparison} sinon).",
|
||
"delayedTagLower": "Le lendemain de « {tag} », votre humeur a tendance à être plus basse ({subject} contre {comparison} sinon).",
|
||
"multipleEntriesHigher": "Les jours où vous notez plusieurs fois, votre humeur a tendance à être meilleure ({subject} contre {comparison} avec une seule saisie).",
|
||
"multipleEntriesLower": "Les jours où vous notez plusieurs fois, votre humeur a tendance à être plus basse ({subject} contre {comparison} avec une seule saisie)."
|
||
}
|
||
},
|
||
"derived": {
|
||
"coverage": {
|
||
"summary": "{present} entrées sur {required} ({percent}%)",
|
||
"ratioLabel": "{present}/{required}",
|
||
"historyDays": "Basé sur {count} jours d'historique",
|
||
"missing": "Enregistre ceci pour affiner la valeur : {list}",
|
||
"summaryLabelled": "{label} ({percent}%)"
|
||
},
|
||
"scoreRing": {
|
||
"aria": "Score {score} sur 100, {band}",
|
||
"ariaProvisional": "Score pas encore disponible : données insuffisantes",
|
||
"provisionalCaption": "Données encore insuffisantes",
|
||
"band": {
|
||
"green": "bon",
|
||
"yellow": "moyen",
|
||
"red": "faible"
|
||
}
|
||
},
|
||
"provenance": {
|
||
"title": "Comment c'est calculé",
|
||
"trigger": "Comment c'est calculé",
|
||
"inputsLabel": "Entrées",
|
||
"noInputs": "Aucune entrée ne soutient encore cette valeur.",
|
||
"methodLabel": "Méthode",
|
||
"window": "Sur tes {days} derniers jours de données {source}",
|
||
"asOf": "au {date}",
|
||
"standardLink": "Norme : {name}"
|
||
},
|
||
"vitals": {
|
||
"sectionTitle": "Vos constantes",
|
||
"sectionSubtitle": "Signaux cardiovasculaires et respiratoires au repos par rapport à ta propre référence",
|
||
"loadingLabel": "Chargement de vos constantes",
|
||
"loadError": "Impossible de charger vos constantes pour le moment.",
|
||
"infoLabel": "Comment ce résultat est-il calculé ?",
|
||
"building": "Construction de votre plage habituelle : {count} sur {target} jours",
|
||
"typicalRange": "Habituel pour vous : {low}–{high}",
|
||
"fitnessYounger": "Forme cardio d'une personne ~{years} ans plus jeune",
|
||
"fitnessOlder": "Forme cardio ~{years} ans au-dessus de votre âge",
|
||
"fitnessTypical": "Forme cardio typique pour votre âge",
|
||
"fitnessNoNorm": "Ajoutez votre âge et votre sexe pour situer cela",
|
||
"vascularBelow": "{years} ans en dessous de votre âge",
|
||
"vascularAbove": "{years} ans au-dessus de votre âge",
|
||
"vascularMatch": "En phase avec votre âge",
|
||
"vascularNoAge": "Ajoutez votre date de naissance pour situer cela",
|
||
"hrvBand": {
|
||
"balanced": "Équilibré pour vous",
|
||
"unbalanced": "Au-dessus de votre plage habituelle",
|
||
"low": "En dessous de votre plage habituelle"
|
||
},
|
||
"bmiCategory": {
|
||
"underweight": "Insuffisance pondérale (OMS)",
|
||
"normal": "Plage normale (OMS)",
|
||
"overweight": "Surpoids (OMS)",
|
||
"obese": "Obésité (OMS)"
|
||
},
|
||
"sixMinuteBand": {
|
||
"green": "{percent}% de la valeur prédite pour votre profil",
|
||
"yellow": "{percent}% de la valeur prédite pour votre profil",
|
||
"red": "{percent}% de la valeur prédite pour votre profil"
|
||
},
|
||
"sixMinuteNoBand": "Ajoutez votre âge, taille, poids et sexe pour cadrer ceci",
|
||
"mobilitySectionTitle": "Mobilité et corps"
|
||
},
|
||
"anatomy": {
|
||
"outOf": "/100",
|
||
"contributorsLabel": "Facteurs",
|
||
"contributorValue": "{value}, pondération {weight}%",
|
||
"contributorMissing": "aucune donnée",
|
||
"insufficient": "Pas encore assez de données pour l’évaluer. Continuez à enregistrer et cela apparaîtra ici."
|
||
},
|
||
"composite": {
|
||
"SLEEP_SCORE": {
|
||
"title": "Score de sommeil",
|
||
"description": "Un score de qualité du sommeil transparent avec chaque sous-score affiché.",
|
||
"method": "Un mélange de 0–100 entre suffisance (sommeil vs votre besoin selon l’âge), efficacité (sommeil ÷ temps au lit), régularité (stabilité de votre milieu de sommeil), timing (vs votre milieu habituel) et composition (part de REM + sommeil profond). Les sous-scores sont repondérés autour de ceux que vos données ne peuvent pas étayer ; rien n’est inventé.",
|
||
"sub": {
|
||
"sufficiency": "Suffisance",
|
||
"efficiency": "Efficacité",
|
||
"consistency": "Régularité",
|
||
"timing": "Timing",
|
||
"composition": "Composition"
|
||
},
|
||
"gap": {
|
||
"fewNights": "pas encore assez de nuits ({count} sur {needed})",
|
||
"noMainSleep": "le dernier jour n'a eu qu'une sieste"
|
||
}
|
||
},
|
||
"READINESS": {
|
||
"title": "Disponibilité",
|
||
"description": "Un indicateur quotidien de bien-être selon la position de vos signaux par rapport à votre propre référence.",
|
||
"method": "Un mélange de 0–100 entre l’écart de la fréquence cardiaque au repos, l’écart de la VFC (SDNN), la qualité du sommeil, la stabilité de la fréquence respiratoire et la stabilité de l’humeur, chacun mesuré par rapport à votre référence personnelle. Les poids sont renormalisés sur les composantes que vos données étayent. Un indicateur de bien-être, pas un score de récupération ni clinique.",
|
||
"component": {
|
||
"rhr": "Fréquence cardiaque au repos",
|
||
"hrv": "VFC (SDNN)",
|
||
"sleep": "Sommeil",
|
||
"respiratory": "Fréquence respiratoire",
|
||
"mood": "Stabilité de l’humeur"
|
||
}
|
||
},
|
||
"VITALS_BASELINE": {
|
||
"method": "Votre plage typique personnelle est la médiane de vos valeurs quotidiennes sur la période, ± une dispersion robuste (écart absolu médian, mis à l’échelle). Elle suit VOS mesures, pas une norme de population : une valeur dans la bande est donc typique pour vous."
|
||
},
|
||
"HRV_BALANCE": {
|
||
"method": "Votre moyenne récente de VFC (SDNN) comparée à votre propre référence glissante (médiane ± dispersion robuste). Équilibrée signifie qu’elle se situe dans votre plage personnelle ; la bande est construite à partir de vos données, jamais d’un seuil de population."
|
||
},
|
||
"BMI": {
|
||
"method": "Poids ÷ taille², classé selon les catégories adultes de l’OMS (maigreur / normal / surpoids / obésité). Un simple ratio de dépistage : il ne distingue pas le muscle de la graisse."
|
||
},
|
||
"FITNESS_AGE": {
|
||
"method": "Votre VO₂max situé par rapport aux percentiles de condition cardiorespiratoire selon l’âge et le sexe, exprimé comme un écart d’âge de forme. Le VO₂max est l’estimation de votre appareil, jamais recalculée ici."
|
||
},
|
||
"VASCULAR_AGE_DELTA": {
|
||
"method": "L’estimation d’âge vasculaire / vitesse de l’onde de pouls de votre appareil comparée à votre âge chronologique, exprimée comme un écart en années. L’estimation vient de l’appareil ; HealthLog ne fait que la reformuler.",
|
||
"caveat": "La propre estimation de votre appareil, simplement reformulée : descriptive, pas une évaluation vasculaire clinique.",
|
||
"description": "Comment l’estimation d’âge vasculaire de votre appareil se situe par rapport à votre âge chronologique."
|
||
},
|
||
"COINCIDENT_DEVIATION": {
|
||
"method": "Un indicateur qui se déclenche lorsque deux de vos constantes ou plus sortent de leur plage typique personnelle le même jour. Chaque bande est la médiane robuste ± k·MAD de votre propre historique : elle s’adapte à vous et non à un seuil de population.",
|
||
"caveat": "Un indicateur issu de vos propres références : descriptif, ni un diagnostic ni une alerte clinique."
|
||
},
|
||
"RECOVERY_SCORE": {
|
||
"method": "Un indice de récupération nocturne de 0 à 100 combinant votre VFC, votre fréquence cardiaque au repos et votre sommeil par rapport à votre référence. Plus élevé signifie mieux récupéré. Calculé une fois par nuit et seulement relu ici, jamais recalculé à la volée.",
|
||
"description": "Un indice de récupération nocturne à partir de votre VFC, fréquence au repos et sommeil."
|
||
},
|
||
"STRESS_SCORE": {
|
||
"method": "Un indice de stress nocturne de 0 à 100 à partir de la forme de votre VFC au cours de la journée par rapport à votre référence. Plus élevé signifie une charge physiologique plus forte.",
|
||
"description": "Un indice de stress nocturne à partir de la forme de votre VFC sur la journée."
|
||
},
|
||
"STRAIN_SCORE": {
|
||
"method": "Un indice d’effort nocturne de 0 à 100 à partir de votre charge d’activité pondérée par la fréquence cardiaque (un modèle d’impulsion d’entraînement de type TRIMP). Plus élevé signifie une journée plus exigeante.",
|
||
"anchorPersonal": "Calé sur votre propre charge récente des jours d’entraînement : évalué par rapport à votre effort habituel, de sorte qu’une journée vraiment difficile pour vous ressort élevée.",
|
||
"anchorPopulation": "Évalué par rapport à une référence générale pendant que vous constituez votre historique d’entraînement ; dès que vous en avez assez, le calcul passe à votre propre effort habituel.",
|
||
"description": "Un indice de charge d’activité nocturne à partir de votre effort pondéré par la fréquence cardiaque, relatif à votre effort habituel.",
|
||
"deviceCaption": "Effort du jour de votre appareil : {value} sur {max}",
|
||
"deviceSource": "Tant que HealthLog n’a pas calculé sa propre valeur pendant la nuit, la carte affiche l’effort du jour de votre appareil, ramené sur 0–100."
|
||
},
|
||
"WRIST_TEMPERATURE_BASELINE": {
|
||
"method": "Votre température nocturne typique au poignet est la médiane de vos relevés nocturnes sur la période, ± une dispersion robuste (écart absolu médian, mis à l’échelle). Elle suit VOS relevés : la nuit dernière est affichée comme un écart par rapport à votre propre référence, pas à une norme de population.",
|
||
"caveat": "Une simple bande d’écart personnel, descriptive, ni un signe de maladie, de fièvre ou de phase du cycle. À vous de l’interpréter."
|
||
},
|
||
"STAIR_ASCENT_SPEED_BASELINE": {
|
||
"method": "Votre allure typique en montant les escaliers est la médiane de vos valeurs quotidiennes sur la période, ± une dispersion robuste (écart absolu médian, mis à l’échelle). La bande est construite à partir de vos données : il n’existe pas de seuil de population pour l’allure dans les escaliers, car elle dépend de la géométrie des marches et de la longueur des jambes.",
|
||
"caveat": "Une bande personnelle de tendance de mobilité, descriptive, ni une évaluation de fragilité ni de risque de chute."
|
||
},
|
||
"STAIR_DESCENT_SPEED_BASELINE": {
|
||
"method": "Votre allure typique en descendant les escaliers est la médiane de vos valeurs quotidiennes sur la période, ± une dispersion robuste (écart absolu médian, mis à l’échelle). La bande est construite à partir de vos données : il n’existe pas de seuil de population pour l’allure dans les escaliers, car elle dépend de la géométrie des marches et de la longueur des jambes.",
|
||
"caveat": "Une bande personnelle de tendance de mobilité, descriptive, ni une évaluation de fragilité ni de risque de chute."
|
||
},
|
||
"SIX_MINUTE_WALK_BAND": {
|
||
"method": "La distance de marche de six minutes ESTIMÉE par votre appareil, située par rapport à la référence d’Enright et Sherrill pour votre âge, votre taille, votre poids et votre sexe, en pourcentage de la valeur prédite. La distance est l’estimation de l’appareil, jamais recalculée ici. Sans votre âge, taille, poids et sexe, le pourcentage est masqué et seules la distance et la tendance sont affichées.",
|
||
"caveat": "Une estimation reformulée par rapport à une référence publiée : un indicateur de capacité fonctionnelle, ni un test de marche de six minutes clinique ni un diagnostic. La référence a été établie pour les âges de 40 à 80 ans ; en dehors de cette plage, la valeur prédite est une extrapolation."
|
||
},
|
||
"TRAJECTORY": {
|
||
"method": "Une droite des moindres carrés ajustée à vos valeurs journalières récentes et projetée sur un court horizon, avec l’intervalle de prédiction classique qui s’élargit à mesure qu’il s’éloigne. Calculée uniquement lorsque la tendance récente est suffisamment marquée et que votre historique est assez long et récent ; sinon aucune ligne n’est tracée.",
|
||
"caveat": "Une projection de votre propre tendance récente, ni une prédiction, ni un objectif, ni un pronostic clinique. Elle ne tient que si le schéma récent se poursuit ; la bande ombrée montre la vitesse à laquelle cette certitude s’estompe."
|
||
},
|
||
"SAME_TIME_BASELINE": {
|
||
"method": "Votre total cumulé du jour comparé à la médiane de cette même heure locale sur vos quatre dernières semaines, avec une bande robuste médiane ± MAD autour. Seuls les jours suffisamment détaillés comptent, et aucune comparaison n'apparaît avant d'en avoir au moins quatorze.",
|
||
"caveat": "Une comparaison avec votre propre historique récent, pas un objectif. Elle dit où se situe aujourd'hui par rapport à votre habitude à cette heure, et rien sur le fait que cette habitude vous convienne."
|
||
}
|
||
},
|
||
"scores": {
|
||
"sectionTitle": "Tes indicateurs de santé",
|
||
"sectionSubtitle": "Valeurs combinées de récupération, de stress et d'effort issues de tes appareils connectés",
|
||
"loadError": "Impossible de charger vos scores de bien-être pour le moment.",
|
||
"loadingLabel": "Chargement de tes indicateurs de santé",
|
||
"recovery": "Score de récupération",
|
||
"recoveryCrossLink": "Voir les données de récupération et d'effort de votre wearable",
|
||
"stress": "Stress",
|
||
"strain": "Effort",
|
||
"historyTitle": "Évolution",
|
||
"historyWindow": "{days} derniers jours"
|
||
},
|
||
"coincident": {
|
||
"label": "Plusieurs constantes hors référence",
|
||
"summary": "Aujourd’hui, {count} de vos constantes sont sorties de leur plage personnelle.",
|
||
"vitals": "Hors plage : {list}",
|
||
"cardTitle": "Signaux du jour",
|
||
"allClear": "Aujourd’hui, toutes vos constantes sont dans leur plage personnelle.",
|
||
"allClearMeta": "{count} de vos constantes vérifiées par rapport à votre propre plage habituelle.",
|
||
"watch": "Aujourd’hui, une constante est hors de sa plage habituelle.",
|
||
"watchVital": "Hors plage : {vital}. Souvent ponctuel, à surveiller ces prochains jours.",
|
||
"firedHeadline": "Aujourd’hui, {count} de vos constantes sont hors de leur plage personnelle.",
|
||
"factors": "Facteurs possibles, jamais une cause : un entraînement intense, un mauvais sommeil, l’alcool, l’altitude, le stress ou une maladie. C’est un repère issu de vos propres références, pas un diagnostic.",
|
||
"building": "Construction de vos références personnelles. Enregistrez quelques jours de plus et cela apparaîtra.",
|
||
"illnessExplained": "Ces écarts reflètent probablement l’affection que vous avez consignée."
|
||
},
|
||
"trajectory": {
|
||
"cardTitle": "Projection à court terme",
|
||
"headline": "Si ce schéma se poursuit : les {days} prochains jours",
|
||
"range": "Projeté autour de {low}–{high} {unit} dans {days} jours.",
|
||
"caveat": "Une projection de votre propre tendance récente, pas une prédiction. La bande ombrée s’élargit pour montrer la vitesse à laquelle l’incertitude augmente.",
|
||
"insufficient": "Pas encore de tendance assez nette pour projeter. Continuez à enregistrer et une projection apparaîtra dès que le schéma récent sera suffisamment marqué.",
|
||
"daysNeeded": "Encore environ {count} jours d’enregistrement nécessaires avant qu’une projection puisse apparaître."
|
||
},
|
||
"sameTime": {
|
||
"sectionTitle": "Aujourd'hui jusqu'ici",
|
||
"sectionSubtitle": "Vos totaux cumulés face à ce qui est habituel chez vous à cette heure",
|
||
"learning": "Apprentissage de votre journée habituelle : {count} jours sur {target}",
|
||
"framing": "Habituel à {time} : {typical} {unit}",
|
||
"comparisonLabel": "Votre journée habituelle"
|
||
}
|
||
},
|
||
"cardioFitness": {
|
||
"title": "Condition physique",
|
||
"description": "Votre VO₂ max au fil du temps, la principale mesure de la forme aérobie.",
|
||
"chartTitle": "VO₂ max (mL/(kg·min))",
|
||
"emptyState": {
|
||
"title": "Pas encore de données de condition physique",
|
||
"description": "Les valeurs de VO₂ max apparaissent ici dès qu'Apple Santé les synchronise depuis vos entraînements."
|
||
}
|
||
},
|
||
"navCardioFitness": "Condition physique",
|
||
"cardioRecovery": {
|
||
"title": "Récupération cardiaque",
|
||
"description": "De combien votre fréquence cardiaque baisse une minute après l'effort maximal.",
|
||
"chartTitle": "Récupération cardiaque (bpm)",
|
||
"emptyState": {
|
||
"title": "Pas encore de données de récupération cardiaque",
|
||
"description": "Les valeurs de récupération cardiaque apparaissent ici dès qu'Apple Santé les synchronise depuis un entraînement."
|
||
}
|
||
},
|
||
"navCardioRecovery": "Récupération cardiaque",
|
||
"wristTemperature": {
|
||
"title": "Température du poignet",
|
||
"description": "Votre température du poignet pendant la nuit, comparée à votre valeur de référence.",
|
||
"chartTitle": "Température du poignet",
|
||
"emptyState": {
|
||
"title": "Pas encore de données de température du poignet",
|
||
"description": "Les valeurs apparaissent ici dès qu'Apple Santé synchronise le port nocturne."
|
||
}
|
||
},
|
||
"navWristTemperature": "Temp. poignet",
|
||
"falls": {
|
||
"title": "Chutes",
|
||
"description": "Chutes lourdes détectées par votre Apple Watch, comptées par jour.",
|
||
"chartTitle": "Chutes par jour",
|
||
"emptyState": {
|
||
"title": "Pas encore de données de chutes",
|
||
"description": "Les chutes détectées apparaissent ici dès qu'Apple Santé se synchronise. L'objectif est zéro chute."
|
||
}
|
||
},
|
||
"navFalls": "Chutes",
|
||
"sixMinuteWalk": {
|
||
"title": "Marche de 6 minutes",
|
||
"description": "L'estimation d'Apple de la distance que vous pourriez parcourir en six minutes.",
|
||
"chartTitle": "Distance sur 6 minutes (m)",
|
||
"emptyState": {
|
||
"title": "Pas encore de données de marche de 6 minutes",
|
||
"description": "Les estimations apparaissent ici dès qu'Apple Santé se synchronise."
|
||
}
|
||
},
|
||
"navSixMinuteWalk": "Marche 6 min",
|
||
"stairAscentSpeed": {
|
||
"title": "Vitesse en montée d'escaliers",
|
||
"description": "À quelle vitesse vous montez les escaliers, mesurée par votre iPhone ou Watch.",
|
||
"chartTitle": "Vitesse de montée (m/s)",
|
||
"emptyState": {
|
||
"title": "Pas encore de données de montée d'escaliers",
|
||
"description": "Les valeurs apparaissent ici dès qu'Apple Santé se synchronise."
|
||
}
|
||
},
|
||
"navStairAscentSpeed": "Montée escaliers",
|
||
"stairDescentSpeed": {
|
||
"title": "Vitesse en descente d'escaliers",
|
||
"description": "À quelle vitesse vous descendez les escaliers, mesurée par votre iPhone ou Watch.",
|
||
"chartTitle": "Vitesse de descente (m/s)",
|
||
"emptyState": {
|
||
"title": "Pas encore de données de descente d'escaliers",
|
||
"description": "Les valeurs apparaissent ici dès qu'Apple Santé se synchronise."
|
||
}
|
||
},
|
||
"navStairDescentSpeed": "Descente escaliers",
|
||
"breathingDisturbances": {
|
||
"title": "Troubles respiratoires",
|
||
"description": "À quelle fréquence votre respiration a été perturbée pendant le sommeil.",
|
||
"chartTitle": "Troubles respiratoires du sommeil",
|
||
"emptyState": {
|
||
"title": "Pas encore de données de troubles respiratoires",
|
||
"description": "Les valeurs apparaissent ici dès qu'Apple Santé les synchronise depuis une Apple Watch compatible."
|
||
}
|
||
},
|
||
"navBreathingDisturbances": "Respiration",
|
||
"rhythmEvents": {
|
||
"sectionTitle": "Notifications de santé de l’appareil",
|
||
"sectionIntro": "Notifications que votre montre a envoyées d’elle-même. HealthLog se contente de les afficher : il ne les détecte, ne les confirme ni ne les interprète.",
|
||
"loadError": "Impossible de charger les notifications de votre appareil.",
|
||
"disclaimer": "Ce sont des alertes que votre appareil a produites avec sa propre détection intégrée. Elles sont affichées ici uniquement à titre informatif. Il ne s’agit pas d’une évaluation médicale de HealthLog, et HealthLog ne pose aucun diagnostic. Si une notification vous inquiète, parlez-en à votre médecin.",
|
||
"event": {
|
||
"irregularRhythm": "Notification de rythme irrégulier",
|
||
"highHeartRate": "Notification de fréquence cardiaque élevée",
|
||
"lowHeartRate": "Notification de fréquence cardiaque basse",
|
||
"walkingSteadiness": "Alerte de stabilité à la marche",
|
||
"breathingDisturbance": "Trouble respiratoire pendant le sommeil"
|
||
},
|
||
"verdict": {
|
||
"irregular": "Votre appareil a détecté un possible rythme irrégulier.",
|
||
"notDetected": "Votre appareil n’a pas détecté de rythme irrégulier.",
|
||
"inconclusive": "Votre appareil n’a pas pu effectuer de mesure.",
|
||
"low": "Votre appareil a détecté une faible stabilité à la marche.",
|
||
"veryLow": "Votre appareil a détecté une très faible stabilité à la marche.",
|
||
"fired": "Votre appareil a signalé cet événement."
|
||
}
|
||
},
|
||
"trendDescriptor": {
|
||
"rising": "En hausse sur 30 jours ({delta}{unit}).",
|
||
"falling": "En baisse sur 30 jours ({delta}{unit}).",
|
||
"stable": "Stable sur les 30 derniers jours.",
|
||
"moodImproved": "Humeur en légère hausse sur 30 jours.",
|
||
"moodDeclined": "Humeur en légère baisse sur 30 jours.",
|
||
"moodStable": "Humeur stable sur les 30 derniers jours."
|
||
},
|
||
"target": {
|
||
"heading": "Objectif"
|
||
},
|
||
"settings": {
|
||
"overviewTitle": "Organiser la vue d'ensemble",
|
||
"overviewDescription": "Affichez ou masquez des sections et définissez leur ordre sur la vue d'ensemble des Analyses."
|
||
},
|
||
"pillOrder": {
|
||
"title": "Trier les onglets de navigation",
|
||
"description": "Faites glisser les onglets dans l'ordre souhaité et affichez-les ou masquez-les via l'icône en forme d'œil.",
|
||
"dragHandle": "Réorganiser",
|
||
"saveSuccess": "Ordre des onglets enregistré",
|
||
"saveError": "L'enregistrement de l'ordre des onglets a échoué.",
|
||
"save": "Enregistrer",
|
||
"empty": "Aucun onglet de navigation disponible pour le moment.",
|
||
"detail": "Les pages de détail masquées disparaissent aussi de la navigation supérieure."
|
||
},
|
||
"customize": "Personnaliser les Analyses",
|
||
"regenerateRateLimited": "Limite d'actualisation atteinte. Réessayez plus tard.",
|
||
"regenerateUnavailable": "Aucune nouvelle analyse reçue. Réessayez plus tard.",
|
||
"regenerateError": "Actualisation en cours. Réessayez dans un instant.",
|
||
"regenerateSettling": "L’évaluation est encore en cours de préparation",
|
||
"regenerateSettleFailed": "L’actualisation n’a pas pu aboutir. Réessayez plus tard.",
|
||
"deviceScore": {
|
||
"learning": "Nous apprenons encore votre référence : quelques nuits de plus compléteront la tendance.",
|
||
"average": "Moyenne sur 30 jours {value}",
|
||
"unitScore": "points",
|
||
"unitMinutes": "min",
|
||
"unitBpm": "bpm",
|
||
"unitKj": "kJ"
|
||
},
|
||
"sleepQuality": {
|
||
"title": "Qualité du sommeil",
|
||
"subtitle": "Scores nocturnes de votre wearable"
|
||
},
|
||
"recovery": {
|
||
"title": "Récupération",
|
||
"description": "À quel point votre corps a récupéré : les signaux de récupération, de charge et d'effort que votre wearable enregistre la nuit.",
|
||
"scoreCrossLink": "Voir le score de récupération composite",
|
||
"emptyTitle": "Pas encore de données de récupération",
|
||
"empty": "Cette page se remplit avec les valeurs de récupération, d'effort et de charge de WHOOP ou Polar et avec le niveau de résilience d'Oura.",
|
||
"emptyOuraPermission": "Le niveau de résilience d'Oura demande l'autorisation d'accès aux données de stress : reconnectez Oura une fois dans Intégrations et autorisez-la.",
|
||
"emptyOuraNoResilience": "Oura est connecté, et son niveau de résilience apparaîtra ici dès qu'Oura en fournira un.",
|
||
"emptyAction": "Ouvrir les intégrations",
|
||
"block": {
|
||
"ansChargeExplainer": "À quel point votre système nerveux autonome est rechargé pour la journée : une mesure de recharge issue de vos signaux nocturnes de cœur et de respiration.",
|
||
"dayStrainExplainer": "La charge cardiovasculaire de la journée sur l'échelle d'effort de votre appareil. Lisez-la au regard de votre récupération, pas comme un objectif en soi.",
|
||
"workoutStrainExplainer": "À quel point une séance a été exigeante sur la même échelle d'effort : le coût cardiovasculaire de cette séance.",
|
||
"cardioLoadExplainer": "Une estimation de la charge d'entraînement qui suit la charge cardiovasculaire accumulée. Comparez-la à vos propres journées récentes.",
|
||
"averageHeartRateExplainer": "Votre fréquence cardiaque moyenne sur toute la journée ou le cycle, telle que rapportée par votre wearable.",
|
||
"maxHeartRateExplainer": "Votre fréquence cardiaque maximale sur toute la journée ou le cycle, telle que rapportée par votre wearable.",
|
||
"energyExpenditureKjExplainer": "L'énergie que votre corps a dépensée sur la journée, en kilojoules, telle que votre appareil la rapporte nativement."
|
||
},
|
||
"loadError": "Vos valeurs de récupération n'ont pas pu être chargées."
|
||
},
|
||
"bodyTempDeviation": {
|
||
"title": "Écart de température corporelle",
|
||
"subtitle": "Écart nocturne par rapport à votre référence"
|
||
},
|
||
"resilience": {
|
||
"explainer": "Comment votre corps équilibre la charge quotidienne et la récupération, d'après vos signaux nocturnes des derniers jours.",
|
||
"learning": "Votre résilience est encore en cours d'apprentissage. Quelques jours de plus stabiliseront le niveau.",
|
||
"band": {
|
||
"limited": "Limitée",
|
||
"adequate": "Adéquate",
|
||
"solid": "Solide",
|
||
"strong": "Forte",
|
||
"exceptional": "Exceptionnelle"
|
||
},
|
||
"trend": {
|
||
"above": "Au-dessus de votre moyenne récente.",
|
||
"steady": "Conforme à votre moyenne récente.",
|
||
"below": "En dessous de votre moyenne récente."
|
||
}
|
||
},
|
||
"briefing": {
|
||
"memory": {
|
||
"forwardWatch": "{metric} est à surveiller.",
|
||
"forwardHolding": "Pour l'instant, tout reste stable."
|
||
}
|
||
},
|
||
"updatedTodayAt": "Mis à jour aujourd'hui, {time}",
|
||
"updatedYesterday": "Mis à jour hier",
|
||
"updatedOn": "Mis à jour le {date}",
|
||
"healthStatus": {
|
||
"sectionTitle": "Ce qui a changé",
|
||
"subtitle": "Signaux s'écartant de votre plage habituelle.",
|
||
"deviationAbove": "{vital} est au-dessus de votre plage habituelle.",
|
||
"deviationBelow": "{vital} est en dessous de votre plage habituelle.",
|
||
"shiftUp": "{vital} a augmenté par rapport à votre normale récente.",
|
||
"shiftDown": "{vital} a diminué par rapport à votre normale récente.",
|
||
"rangeContext": "Actuellement {value}, habituellement {low}–{high}.",
|
||
"rangeContextTimeOfDay": "Actuellement {value}, habituellement {low}–{high} à ce moment de la journée.",
|
||
"shiftContext": "Environ {before} avant, {after} depuis.",
|
||
"shiftDays": "Sur {before} jours avant et {after} depuis."
|
||
},
|
||
"breathingScreening": {
|
||
"sectionTitle": "Respiration pendant le sommeil",
|
||
"subtitle": "Un signal de dépistage issu de vos données de sommeil.",
|
||
"classificationElevated": "Votre appareil a signalé des perturbations respiratoires élevées.",
|
||
"classificationNotElevated": "La classification de votre appareil n'est pas élevée.",
|
||
"trendUp": "En hausse par rapport à vos nuits précédentes.",
|
||
"trendDown": "En baisse par rapport à vos nuits précédentes.",
|
||
"trendStable": "Stable par rapport à vos nuits précédentes.",
|
||
"nights": "{count} nuits suivies",
|
||
"indexLine": "indice moyen récent {value}",
|
||
"eventsFlagged": "{count} événements signalés par votre appareil",
|
||
"disclaimer": "Il s'agit d'un signal de dépistage, pas d'un diagnostic. Parlez-en à un professionnel de santé."
|
||
},
|
||
"labsChanges": {
|
||
"sectionTitle": "Depuis votre dernier bilan",
|
||
"subtitle": "Comparaison de vos derniers résultats avec le bilan précédent.",
|
||
"statusInRange": "dans la plage",
|
||
"statusBelow": "sous la plage",
|
||
"statusAbove": "au-dessus de la plage",
|
||
"directionFlat": "aucun changement"
|
||
},
|
||
"navGripStrength": "Force de préhension",
|
||
"navPainNrs": "Douleur",
|
||
"navWaistCircumference": "Tour de taille",
|
||
"navWaistToHeight": "Taille/hauteur",
|
||
"gripStrength": {
|
||
"title": "Force de préhension",
|
||
"description": "Force maximale de préhension de la main : un indicateur robuste de la force corporelle globale. Sous le seuil selon le sexe (hommes 27 kg, femmes 16 kg), elle signale une sarcopénie probable ; votre propre tendance guide la lecture.",
|
||
"chartTitle": "Force de préhension",
|
||
"emptyState": {
|
||
"title": "Pas encore de force de préhension",
|
||
"description": "Enregistrez une mesure avec un dynamomètre à main (notez le meilleur de plusieurs serrages) et la tendance apparaîtra ici.",
|
||
"cta": "Enregistrer la force de préhension"
|
||
},
|
||
"coachPrefill": "Je n'ai pas encore enregistré de force de préhension. Que dit-elle sur ma santé musculaire, et comment la mesurer et l'améliorer ?"
|
||
},
|
||
"pain": {
|
||
"title": "Douleur (0–10)",
|
||
"description": "Intensité de la douleur rapportée par le patient sur l'échelle numérique 0–10, où 0 signifie aucune douleur et 10 la pire imaginable. Une variation soutenue de 2 points est le signal à surveiller.",
|
||
"chartTitle": "Douleur (0–10)",
|
||
"emptyState": {
|
||
"title": "Pas encore de scores de douleur",
|
||
"description": "Enregistrez votre douleur actuelle sur l'échelle 0–10 et la tendance apparaîtra ici.",
|
||
"cta": "Enregistrer un score de douleur"
|
||
},
|
||
"coachPrefill": "Je n'ai pas encore enregistré de score de douleur. Comment suivre la douleur sur l'échelle 0–10, et qu'est-ce qu'un changement significatif ?"
|
||
},
|
||
"waist": {
|
||
"title": "Tour de taille",
|
||
"description": "Tour de taille en centimètres : un marqueur de la graisse abdominale. Le seuil de risque accru de l'OMS dépend du sexe (hommes 94 cm, femmes 80 cm) ; votre propre tendance guide la lecture.",
|
||
"chartTitle": "Tour de taille",
|
||
"emptyState": {
|
||
"title": "Pas encore de mesures de tour de taille",
|
||
"description": "Mesurez votre tour de taille à mi-chemin entre la dernière côte et l'os de la hanche, en fin d'expiration normale, et enregistrez-le ici.",
|
||
"cta": "Enregistrer le tour de taille"
|
||
},
|
||
"coachPrefill": "Je n'ai pas encore enregistré de tour de taille. Comment le mesurer correctement, et que signifie ce chiffre pour ma santé ?"
|
||
},
|
||
"waistToHeight": {
|
||
"title": "Rapport taille-hauteur",
|
||
"description": "Votre tour de taille divisé par votre taille : le nombre unique le plus robuste selon les populations. Le maintenir sous 0,5 (tour de taille inférieur à la moitié de votre taille) est l'objectif simple.",
|
||
"chartTitle": "Rapport taille-hauteur",
|
||
"emptyState": {
|
||
"title": "Pas encore de rapport taille-hauteur",
|
||
"description": "Enregistrez un rapport taille-hauteur et la tendance apparaîtra ici. Règle simple : gardez votre tour de taille sous la moitié de votre taille.",
|
||
"cta": "Enregistrer le rapport taille-hauteur"
|
||
},
|
||
"coachPrefill": "Je n'ai pas encore enregistré de rapport taille-hauteur. Pourquoi est-ce un chiffre utile, et comment le maintenir sous 0,5 ?"
|
||
},
|
||
"ecg": {
|
||
"sectionTitle": "Enregistrements ECG",
|
||
"loadError": "Impossible de charger vos enregistrements ECG.",
|
||
"backToList": "Retour aux enregistrements",
|
||
"clinicianNote": "Si ce résultat vous préoccupe, parlez de cet enregistrement à un professionnel de santé.",
|
||
"resultAttribution": "Résultat enregistré : {result}, tel que signalé par l'appareil d'enregistrement.",
|
||
"result": {
|
||
"irregular": "Fibrillation auriculaire détectée",
|
||
"notDetected": "Aucun signe de fibrillation auriculaire",
|
||
"inconclusive": "Enregistrement non concluant",
|
||
"none": "Aucun résultat signalé"
|
||
},
|
||
"meta": {
|
||
"recorded": "Enregistré",
|
||
"duration": "Durée",
|
||
"lead": "Dérivation",
|
||
"averageHeartRate": "Fréquence cardiaque moyenne",
|
||
"samplingRate": "Fréquence d'échantillonnage",
|
||
"leadSingle": "Une seule dérivation (dérivation I)",
|
||
"durationValue": "{seconds} s",
|
||
"bpmValue": "{bpm} bpm",
|
||
"hzValue": "{hz} Hz",
|
||
"unknown": "—"
|
||
},
|
||
"waveform": {
|
||
"ariaLabel": "Tracé ECG enregistré le {date}, durée {duration}, fréquence cardiaque moyenne {heartRate}, résultat enregistré : {result}."
|
||
},
|
||
"crossLink": {
|
||
"title": "Enregistrements ECG",
|
||
"recordingsOne": "1 enregistrement disponible.",
|
||
"recordingsMany": "{count} enregistrements disponibles.",
|
||
"latestResult": "Dernier résultat de l’appareil : {result}.",
|
||
"cta": "Voir les enregistrements"
|
||
},
|
||
"emptyTitle": "Aucun enregistrement ECG pour l'instant",
|
||
"emptyDescription": "Les enregistrements ECG se synchronisent depuis un appareil à dérivation unique compatible. Dès que votre appareil transfère un enregistrement, il apparaît ici.",
|
||
"emptyCta": "Connecter un appareil"
|
||
},
|
||
"intradayPulse": {
|
||
"title": "Pouls au fil de la journée",
|
||
"caption": "Moyenné par tranches de 10 minutes.",
|
||
"hourlyNote": "Moyenne horaire affichée pour cette journée. Les jours récents affichent le détail complet par tranches de 10 minutes.",
|
||
"empty": "Pas encore assez de mesures pour cette journée pour en afficher le rythme.",
|
||
"coverageOne": "Basé sur 1 mesure sur {hours}h.",
|
||
"coverageMany": "Basé sur {count} mesures sur {hours}h.",
|
||
"baseline": "Repos",
|
||
"today": "Aujourd'hui",
|
||
"previousDay": "Jour précédent",
|
||
"nextDay": "Jour suivant",
|
||
"tension": {
|
||
"morning": "Une période élevée au repos ce matin, peut-être un peu de tension.",
|
||
"afternoon": "Une période élevée au repos cet après-midi, peut-être un peu de tension.",
|
||
"evening": "Une période élevée au repos ce soir, peut-être un peu de tension.",
|
||
"night": "Une période élevée au repos cette nuit, peut-être un peu de tension."
|
||
}
|
||
},
|
||
"navEcg": "ECG",
|
||
"sectionLoadError": "Cette section n'a pas pu être chargée.",
|
||
"aiSetupHint": {
|
||
"title": "L'IA est facultative",
|
||
"body": "Tout fonctionne ici sans IA. Si vous voulez un briefing quotidien, de courtes notes sur vos mesures et le Coach, vous pouvez connecter un fournisseur d'IA.",
|
||
"settingsBody": "HealthLog fonctionne entièrement sans IA. Connectez un fournisseur ci-dessous si vous voulez un briefing quotidien, de courtes notes sur vos mesures et le Coach.",
|
||
"action": "Configurer l'IA",
|
||
"dismiss": "Pas maintenant"
|
||
},
|
||
"bmiHeight": {
|
||
"coachPrefill": "Je n’ai pas encore indiqué ma taille. Pourquoi l’IMC compte-t-il, et que dois-je savoir avant de la renseigner ?"
|
||
},
|
||
"medicationsEmpty": {
|
||
"coachPrefill": "Je n’ai encore ajouté aucun médicament. Que dois-je savoir avant de suivre ici l’observance ?"
|
||
},
|
||
"scoreHistory": {
|
||
"healthTitle": "Évolution du score de santé",
|
||
"healthDescription": "Ton score de santé jour après jour, tel qu’il s’affichait chaque jour.",
|
||
"emptyDescription": "Aucun score n’a encore été enregistré sur cette période.",
|
||
"usualRange": "En grisé : ta plage habituelle, de {lo} à {hi}.",
|
||
"seam": "La ligne s’interrompt là où ce qui compte pour le score a changé."
|
||
}
|
||
},
|
||
"thresholds": {
|
||
"defaultLabel": "Par défaut",
|
||
"overrideToggleLabel": "Valeurs personnelles",
|
||
"resetAction": "Restaurer la valeur par défaut",
|
||
"resetAllAction": "Tout restaurer aux valeurs par défaut",
|
||
"resetAllTitle": "Réinitialiser toutes les plages personnalisées ?",
|
||
"resetAllBody": "Chaque mesure revient à sa plage par défaut. Les valeurs que vous avez définies ne sont conservées nulle part ailleurs et ne peuvent pas être récupérées.",
|
||
"resetAllConfirm": "Tout réinitialiser",
|
||
"resetTitle": "Réinitialiser cette plage ?",
|
||
"resetBody": "La mesure revient à sa plage par défaut. Les valeurs que vous avez définies ne sont conservées nulle part ailleurs et ne peuvent pas être récupérées.",
|
||
"resetConfirm": "Réinitialiser la plage",
|
||
"minLabel": "Min",
|
||
"maxLabel": "Max",
|
||
"unitSuffix": "({unit})",
|
||
"outOfBoundsHint": "Plage autorisée : {min}–{max} {unit}",
|
||
"overrideWarning": "Des valeurs en dehors des recommandations peuvent conduire à des objectifs malsains. Ne personnalise qu’après avis médical.",
|
||
"saveSuccess": "Objectifs mis à jour",
|
||
"saveError": "Impossible d’enregistrer les objectifs",
|
||
"resetSuccess": "Valeur par défaut restaurée",
|
||
"sourceOverride": "Valeur personnelle",
|
||
"metricWeight": "Poids",
|
||
"metricBpSys": "Tension artérielle (systolique)",
|
||
"metricBpDia": "Tension artérielle (diastolique)",
|
||
"metricPulse": "Pouls au repos",
|
||
"metricBodyFat": "Masse grasse",
|
||
"metricSleep": "Durée du sommeil",
|
||
"metricSteps": "Pas/jour",
|
||
"metricGlucoseFasting": "Glycémie (à jeun)",
|
||
"metricGlucosePostprandial": "Glycémie (postprandiale)",
|
||
"metricGlucoseRandom": "Glycémie (indifférente)",
|
||
"metricGlucoseBedtime": "Glycémie (avant le coucher)",
|
||
"metricBodyWater": "Eau corporelle",
|
||
"metricBoneMass": "Masse osseuse",
|
||
"metricOxygenSaturation": "Saturation en oxygène (SpO₂)",
|
||
"unsetExplanation": "Pas de valeur personnelle : la valeur par défaut calculée s’applique.",
|
||
"cardTitle": "Plages par métrique"
|
||
},
|
||
"onboarding": {
|
||
"errorGeneric": "Une erreur est survenue à la fin de la configuration. Réessaie.",
|
||
"tour": {
|
||
"stepOf": "Étape {current} sur {total}",
|
||
"next": "Suivant",
|
||
"back": "Précédent",
|
||
"skip": "Passer la visite",
|
||
"done": "Compris",
|
||
"steps": {
|
||
"dashboardOverview": {
|
||
"title": "Votre tableau de bord",
|
||
"body": "Le tableau de bord rassemble tous les modules d’un coup d’œil. Appuyez longuement sur une tuile pour la réorganiser ou la masquer (Réglages → Disposition du tableau de bord). Une tuile ne vaut que par les données derrière elle, et les modules suivants les remplissent."
|
||
},
|
||
"quickAdd": {
|
||
"title": "Saisi en quelques secondes",
|
||
"body": "Avec « + Ajouter », saisissez n’importe quelle mesure en quelques secondes : poids, tension, pouls, glycémie. Atout caché : antidater les valeurs oubliées. Tout ce que vous saisissez ici alimente les tendances, le score santé et les analyses IA."
|
||
},
|
||
"measurements": {
|
||
"title": "Mesures et plages cibles",
|
||
"body": "Mesures affiche l’historique et la plage cible de chaque métrique. Astuce cachée : définir une plage par valeur pour que les écarts ressortent en couleur. Ces séries sont la base des corrélations du Coach et du rapport médical."
|
||
},
|
||
"medications": {
|
||
"title": "Médicaments et prises",
|
||
"body": "Médicaments gère plannings, prises, stock et titration. Caché : plans récurrents (RRULE/glissants) et alertes de stock bas. Votre taux de prise alimente le pilier d’observance du tableau de bord et le contexte de l’IA."
|
||
},
|
||
"labs": {
|
||
"title": "Valeurs de laboratoire",
|
||
"body": "Laboratoire recense les biomarqueurs avec plages de référence : hémogramme, cholestérol, HbA1c. Atout : import et export FHIR. Les valeurs hors plage réapparaissent comme preuves dans les analyses et le rapport médical."
|
||
},
|
||
"illness": {
|
||
"title": "Journal des maladies",
|
||
"body": "Le journal des maladies consigne les épisodes aigus et les diagnostics chroniques avec leurs poussées. Caché : corréler un épisode à vos mesures et le Mode repos qui suspend les rappels. Le Coach comprend ainsi pourquoi les valeurs dérivent un temps."
|
||
},
|
||
"vorsorge": {
|
||
"title": "Examens",
|
||
"body": "Les examens vous rappellent dépistages et vaccins selon leur propre intervalle. Astuce : « Fait » peut créer directement une mesure ou un résultat de laboratoire. Les échéances apparaissent en rappels et dans le rapport médical."
|
||
},
|
||
"cycle": {
|
||
"title": "Cycle",
|
||
"body": "Le suivi du cycle consigne phases et symptômes. Caché : comparer les symptômes à l’humeur et au sommeil. Le cycle donne du contexte aux variations qui paraîtraient autrement inexpliquées."
|
||
},
|
||
"mood": {
|
||
"title": "Humeur",
|
||
"body": "Humeur saisit votre ressenti et des tags en deux secondes. Atout : vos propres tags. Les tendances d’humeur se corrèlent au sommeil, aux médicaments et au cycle, et le Coach repère les schémas."
|
||
},
|
||
"insights": {
|
||
"title": "Analyses",
|
||
"body": "Analyses, c’est le cœur : une analyse dynamique et fondée sur des preuves plutôt que des conseils génériques, où chaque affirmation pointe vos données réelles. Caché : la disposition est personnalisable. Analyses réunit tout ce que les modules ci-dessus fournissent."
|
||
},
|
||
"coach": {
|
||
"title": "Coach",
|
||
"body": "Le Coach répond à vos questions sur vos données en dialogue, en utilisant antécédents, médicaments et résultats comme contexte. Vous choisissez le fournisseur IA (votre clé ou local). Il ne recalcule rien : il lit les mêmes chiffres que le tableau de bord."
|
||
},
|
||
"integrations": {
|
||
"title": "Intégrations",
|
||
"body": "Les intégrations synchronisent Withings, WHOOP, Polar, Oura et Apple Santé automatiquement. Poids, sommeil et récupération se remplissent sans saisie, et alimentent à leur tour les analyses et le Coach."
|
||
},
|
||
"export": {
|
||
"title": "Rapport médical",
|
||
"body": "Le rapport médical regroupe mesures, médicaments, valeurs de laboratoire et examens en PDF ou FHIR pour le rendez-vous. Tous les modules convergent ici : un rapport complet ne vient que de données bien tenues."
|
||
},
|
||
"achievements": {
|
||
"title": "Réussites",
|
||
"body": "Les réussites récompensent la régularité : séries et jalons. Une petite boucle de motivation qui aide à tenir bon."
|
||
},
|
||
"wrapUp": {
|
||
"title": "C’est la fin de la visite",
|
||
"body": "Cette visite guidée ne s'affiche qu'une fois et ne se rouvrira pas d'elle-même. Tout ce qu'elle a montré reste en place, et vous pouvez activer ou désactiver des fonctionnalités à tout moment dans Réglages → Modules."
|
||
}
|
||
}
|
||
},
|
||
"shell": {
|
||
"back": "Retour",
|
||
"skip": "Ignorer",
|
||
"next": "Continuer",
|
||
"stepOf": "Étape {current} sur {total}",
|
||
"stepsLabel": "Étapes de la configuration"
|
||
},
|
||
"baseline": {
|
||
"title": "Quelques informations",
|
||
"body": "Quatre champs facultatifs affinent vos seuils cibles, l'IMC et les rappels. Tout reste modifiable plus tard dans les paramètres.",
|
||
"displayNameLabel": "Nom d'affichage",
|
||
"displayNamePlaceholder": "Comment HealthLog doit-il vous appeler ?",
|
||
"displayNameHint": "Apparaît dans le message d'accueil du tableau de bord et dans les rapports.",
|
||
"heightLabel": "Taille (cm)",
|
||
"heightLabelFtIn": "Taille (ft, in)",
|
||
"genderLabel": "Genre",
|
||
"genderNone": "Préfère ne pas le préciser",
|
||
"genderMale": "Homme",
|
||
"genderFemale": "Femme",
|
||
"genderOther": "Autre",
|
||
"dateOfBirthLabel": "Date de naissance",
|
||
"dateOfBirthHint": "Utilisée uniquement pour les analyses qui tiennent compte de l'âge."
|
||
},
|
||
"done": {
|
||
"title": "Tout est prêt",
|
||
"body": "Bienvenue à bord. Votre tableau de bord vous attend.",
|
||
"returnCta": "Ouvrir le tableau de bord",
|
||
"learning": "Certaines analyses (glycémie, rythme de sommeil, tendances de tension, cycle) s'affinent au cours de la première semaine ou deux à mesure que vos données s'accumulent. Des tuiles vides signifient simplement que nous apprenons encore votre référence.",
|
||
"connectCta": "Connecter un appareil",
|
||
"logCta": "Enregistrez votre première mesure",
|
||
"importCta": "Importer un historique existant",
|
||
"modulesCta": "Choisir vos modules"
|
||
},
|
||
"welcomeBack": {
|
||
"title": "Bon retour",
|
||
"cta": "Ouvrir le tableau de bord"
|
||
},
|
||
"disclaimer": {
|
||
"acknowledge": "Je comprends : HealthLog est un outil de suivi privé, pas une évaluation clinique ni un diagnostic. En cas d'inquiétude, je consulte mon médecin, pas cette application.",
|
||
"learnMore": "En savoir plus"
|
||
},
|
||
"anamnesis": {
|
||
"title": "À propos de votre santé (facultatif)",
|
||
"subtitle": "Un peu de contexte pour que HealthLog interprète vos valeurs plus justement.",
|
||
"intro": "Partagez autant ou aussi peu que vous le souhaitez : chaque champ est facultatif et modifiable à tout moment dans les Réglages.",
|
||
"conditionsLabel": "Affections en cours",
|
||
"conditionsPlaceholder": "p. ex. hypertension, diabète de type 2",
|
||
"conditionsHint": "Aide HealthLog à replacer vos mesures dans leur contexte plutôt que de signaler l'attendu.",
|
||
"allergiesLabel": "Allergies ou intolérances",
|
||
"allergiesPlaceholder": "p. ex. pénicilline, lactose",
|
||
"privacyNote": "Stocké chiffré et utilisé uniquement pour un meilleur contexte. Nous ne demandons pas vos médicaments ici : ajoutez-les quand vous voulez depuis la page Médicaments."
|
||
},
|
||
"ai": {
|
||
"panelTitle": "Voyez à quoi ressemblent les insights",
|
||
"panelIntro": "Coach, le briefing quotidien et les lectures par mesure traduisent vos propres chiffres en langage clair. Voici l'idée, avant de connecter quoi que ce soit.",
|
||
"showSample": "Voir un exemple de briefing",
|
||
"sampleTitle": "Briefing quotidien",
|
||
"sampleTag": "Exemple",
|
||
"sampleAriaLabel": "Exemple de briefing quotidien",
|
||
"sampleBody": "Poids en baisse de 1,2 kg en deux semaines. Pouls au repos stable à 58 bpm. Tension dans la plage 6 jours sur 7 ; la seule valeur élevée a suivi un dîner tardif et salé.",
|
||
"sampleCaption": "Exemple uniquement, pas vos données. Voilà à quoi ressemble un briefing une fois les insights activés.",
|
||
"ladderTitle": "Trois façons de l'activer",
|
||
"ladderLocalTitle": "Modèle local : les requêtes d’IA restent sur votre réseau",
|
||
"ladderLocalBody": "Pointez HealthLog vers Ollama ou LM Studio sur votre propre machine. Gratuit et totalement privé, le choix calme par défaut.",
|
||
"ladderByokTitle": "Apportez votre clé",
|
||
"ladderByokBody": "Utilisez votre propre clé OpenAI ou Anthropic. Elle fonctionne avec votre compte et votre facturation, et le niveau API exclut vos données de l'entraînement par défaut.",
|
||
"ladderOauthTitle": "Connectez-vous avec un abonnement",
|
||
"ladderOauthBody": "Reliez un compte ChatGPT, sans coût par jeton, mais les conditions du niveau grand public peuvent utiliser le contenu pour l'entraînement : c'est donc un choix délibéré, jamais l'option par défaut pour vos données de santé.",
|
||
"keylessLine": "HealthLog est pleinement utile sans IA. Vos tuiles, graphiques, tendances et exports fonctionnent tous ; l'IA n'ajoute que la lecture en langage clair par-dessus.",
|
||
"setupCta": "Configurez-le (environ une minute)",
|
||
"sharedKeyNote": "Cette instance fournit déjà un fournisseur d'IA partagé : les insights fonctionnent pour vous dès maintenant, aucune configuration nécessaire.",
|
||
"offer": {
|
||
"title": "Cette instance peut rédiger votre résumé en langage clair.",
|
||
"body": "L’exploitant met à disposition un fournisseur qui a fonctionné au cours des dernières 24 heures. Une seule touche active le langage clair ; vos données partent alors vers ce seul fournisseur et vers personne d’autre.",
|
||
"cta": "Activer le langage clair",
|
||
"granted": "Activé. Le premier résumé apparaîtra sur votre tableau de bord.",
|
||
"error": "L’activation n’a pas abouti. Réessayez dans un instant."
|
||
},
|
||
"unavailable": {
|
||
"title": "Le fournisseur de cette instance ne répond pas pour le moment.",
|
||
"body": "HealthLog reste pleinement utile sans le langage clair. Vous pourrez ajouter votre propre fournisseur plus tard dans les paramètres."
|
||
}
|
||
},
|
||
"steps": {
|
||
"who": "À qui appartient ce dossier",
|
||
"areas": "Ce que vous voulez suivre",
|
||
"medication": "Médicaments",
|
||
"sources": "D'où viennent les mesures",
|
||
"visit": "Visite médicale",
|
||
"units": "Unités",
|
||
"confirm": "Confirmer",
|
||
"first-result": "Premier résultat",
|
||
"done": "Terminé"
|
||
},
|
||
"flow": {
|
||
"welcome": {
|
||
"title": "Bienvenue dans HealthLog",
|
||
"body": "Cinq questions rapides décident de ce que HealthLog vous montre en premier. Cela prend environ deux minutes.",
|
||
"changeLater": "Rien n'est définitif : chaque choix peut être modifié plus tard dans les réglages.",
|
||
"setUp": "Configurer",
|
||
"skip": "Passer pour l'instant",
|
||
"againBody": "Votre configuration est terminée. Répondez à nouveau aux questions pour changer ce que HealthLog montre en premier, ou allez au tableau de bord.",
|
||
"setUpAgain": "Reconfigurer"
|
||
},
|
||
"who": {
|
||
"title": "À qui appartient ce dossier ?",
|
||
"body": "Les réponses qui suivent s'appliquent à ce dossier.",
|
||
"options": {
|
||
"me": "À moi",
|
||
"someone-else": "À une personne dont je m'occupe",
|
||
"both": "Les deux"
|
||
},
|
||
"hints": {
|
||
"someone-else": "Un enfant ou un parent, par exemple. Son profil est créé à la fin.",
|
||
"both": "Configurez d'abord votre propre dossier ; le profil de l'autre personne vous est proposé à la fin."
|
||
}
|
||
},
|
||
"areas": {
|
||
"title": "Que voulez-vous suivre ?",
|
||
"body": "Choisissez autant d'options que vous voulez. Elles décident des modules activés et de ce que le tableau de bord montre en premier.",
|
||
"options": {
|
||
"blood-pressure": "Tension artérielle",
|
||
"weight-body": "Poids et corps",
|
||
"glucose": "Glycémie",
|
||
"sleep": "Sommeil et récupération",
|
||
"mood": "Humeur et bien-être mental",
|
||
"cycle": "Cycle",
|
||
"activity": "Activité et entraînements",
|
||
"labs": "Résultats d'analyses",
|
||
"illness": "Maladies et symptômes"
|
||
}
|
||
},
|
||
"medication": {
|
||
"title": "Prenez-vous des médicaments selon un horaire fixe ?",
|
||
"body": "Un horaire active le module médicaments et les rappels.",
|
||
"options": {
|
||
"yes": "Oui",
|
||
"no": "Non",
|
||
"sometimes": "Parfois"
|
||
}
|
||
},
|
||
"sources": {
|
||
"title": "D'où viennent vos mesures aujourd'hui ?",
|
||
"body": "Choisissez autant d'options que vous voulez. Une connexion est proposée à la fin ; aucune n'est obligatoire.",
|
||
"options": {
|
||
"manual": "Je les saisis moi-même",
|
||
"apple-health": "Apple Santé sur mon iPhone",
|
||
"withings": "Withings",
|
||
"oura": "Oura",
|
||
"whoop": "WHOOP",
|
||
"polar": "Polar",
|
||
"fitbit": "Fitbit",
|
||
"strava": "Strava",
|
||
"nightscout": "Nightscout",
|
||
"file": "Un fichier que j'ai déjà"
|
||
},
|
||
"hints": {
|
||
"apple-health": "Synchronisé par l'app iOS, ou importé depuis un export.",
|
||
"file": "À importer dans les réglages une fois cette étape terminée."
|
||
}
|
||
},
|
||
"visit": {
|
||
"title": "Une visite médicale est-elle prévue ?",
|
||
"body": "Une visite active le rapport médical et ajoute sa préparation à votre liste de départ.",
|
||
"options": {
|
||
"within-a-month": "Oui, d'ici un mois",
|
||
"later": "Plus tard",
|
||
"no": "Non"
|
||
}
|
||
},
|
||
"units": {
|
||
"title": "Quelles unités utilisez-vous ?",
|
||
"body": "Les mesures sont enregistrées une fois et affichées dans l'unité de votre choix. Vous pourrez la changer plus tard dans les réglages.",
|
||
"glucoseLegend": "Glycémie",
|
||
"weightLegend": "Poids et taille",
|
||
"options": {
|
||
"metric": "kg et cm",
|
||
"imperial": "lb et ft/in"
|
||
}
|
||
},
|
||
"confirm": {
|
||
"title": "Voici ce que vos réponses activent",
|
||
"body": "Un coup d'œil, et HealthLog est configuré. Rien ici n'est définitif.",
|
||
"modulesTitle": "Modules",
|
||
"switchedOn": "Activés : {modules}.",
|
||
"nothingExtra": "Vos réponses n'activent aucun module supplémentaire ; les mesures de base sont toujours là.",
|
||
"alwaysOn": "Toujours actifs : {modules}, et les mesures de base (poids, tension, pouls).",
|
||
"everythingElse": "Tout le reste reste à un clic dans",
|
||
"modulesLink": "Réglages, Modules",
|
||
"switchesOff": "Hors de la navigation : {modules}. Tu peux les réactiver à tout moment dans Réglages, Modules.",
|
||
"glucoseUnit": "Glycémie",
|
||
"unitPreference": "Unités",
|
||
"language": "Langue",
|
||
"timezone": "Fuseau horaire",
|
||
"changeInSettings": "À modifier dans Réglages, Compte",
|
||
"cta": "Confirmer et continuer",
|
||
"managedTitle": "La personne dont vous vous occupez",
|
||
"managedBody": "Son dossier n'a pas d'identifiant propre ; vous le gérez depuis votre compte. Un second facteur ou une clé d'accès sur votre compte est nécessaire pour le créer.",
|
||
"managedCreate": "Créer le profil et terminer",
|
||
"managedLater": "Vous pouvez aussi le créer plus tard dans Réglages, Accès partagé.",
|
||
"finishWithoutProfile": "Terminer sans le profil"
|
||
},
|
||
"first-result": {
|
||
"connect-source": {
|
||
"title": "Connecter {target}",
|
||
"body": "Une seule connexion, choisie d'après vos réponses. Les mesures arrivent ensuite d'elles-mêmes.",
|
||
"howTo": "La connexion à {target} se fait sur la page des intégrations. Revenez ici ensuite ; cet écran détecte quand elle est établie.",
|
||
"cta": "Connecter {target}",
|
||
"checking": "Vérification de la connexion.",
|
||
"waiting": "Pas encore connecté.",
|
||
"openSettings": "Ouvrir Paramètres → Intégrations",
|
||
"noDate": "inconnue",
|
||
"needsCredentials": {
|
||
"title": "Cette instance n’a pas encore d’application {target} enregistrée.",
|
||
"detail": "Saisissez vos propres identifiants dans Paramètres → Intégrations, la connexion pourra alors démarrer."
|
||
},
|
||
"state": {
|
||
"pending_first_sync": {
|
||
"title": "{target} est connecté.",
|
||
"detail": "La première synchronisation est en cours. Les valeurs apparaîtront sur le tableau de bord dès leur arrivée."
|
||
},
|
||
"fresh": {
|
||
"title": "{target} est déjà connecté.",
|
||
"detail": "Dernière valeur {when}. Il n’y a plus rien à faire ici."
|
||
},
|
||
"stale": {
|
||
"title": "{target} est connecté, mais rien n’arrive en ce moment.",
|
||
"detail": "Dernière valeur {when}. La connexion elle-même est en ordre."
|
||
},
|
||
"stalled": {
|
||
"title": "{target} est connecté, mais la synchronisation ne tourne plus.",
|
||
"detail": "Dernière tentative {when}. Vérifiez la connexion dans Paramètres → Intégrations."
|
||
},
|
||
"failing": {
|
||
"title": "{target} est connecté, mais la synchronisation échoue.",
|
||
"detail": "Plus rien n’est arrivé depuis {when}. Vérifiez la connexion dans Paramètres → Intégrations."
|
||
},
|
||
"reauth_required": {
|
||
"title": "La connexion à {target} doit être renouvelée.",
|
||
"detail": "Reconnectez-vous une fois et les valeurs reprendront."
|
||
},
|
||
"parked": {
|
||
"title": "La connexion à {target} est en pause.",
|
||
"detail": "Vérifiez la connexion dans Paramètres → Intégrations."
|
||
}
|
||
}
|
||
},
|
||
"add-medication": {
|
||
"title": "Ajoutez votre premier médicament",
|
||
"body": "Nom, dose et horaire ; le rappel suit l'horaire que vous définissez.",
|
||
"howTo": "Le médicament s'ajoute en quelques étapes courtes. Vous pourrez en ajouter d'autres plus tard sur la page des médicaments.",
|
||
"cta": "Ajouter un médicament",
|
||
"done": "{name} est ajouté.",
|
||
"doneUnnamed": "Votre premier médicament est ajouté.",
|
||
"nextDose": "Prochaine prise : {when}.",
|
||
"reminders": "Les rappels suivent l'horaire que vous avez défini.",
|
||
"recordOnly": "Conservé pour mémoire : pas de rappel, rien n’est dû.",
|
||
"asNeeded": "Au besoin : pas de rappel, notez une prise quand vous la prenez."
|
||
},
|
||
"log-reading": {
|
||
"title": "Saisir une mesure : {target}",
|
||
"body": "Une mesure place la première valeur sur votre tableau de bord. La tendance se dessine d'elle-même à partir de la cinquième.",
|
||
"done": "Votre première mesure est sur sa tuile.",
|
||
"doneElsewhere": "Votre première entrée pour {target} est enregistrée.",
|
||
"elsewhere": "{target} a sa propre page. Ouvrez-la, faites la première entrée, puis revenez ici la marquer comme faite.",
|
||
"open": "Ouvrir {target}",
|
||
"markDone": "J'ai fait l'entrée"
|
||
}
|
||
},
|
||
"done": {
|
||
"tourCta": "Faire une courte visite guidée",
|
||
"openRecord": "Ouvrir le dossier de {name}",
|
||
"createProfile": "Créer le profil de la personne dont vous vous occupez"
|
||
}
|
||
}
|
||
},
|
||
"gettingStarted": {
|
||
"title": "Premiers pas",
|
||
"subtitle": "Petites victoires pour tirer le meilleur de HealthLog.",
|
||
"progress": "{done} sur {total} faits",
|
||
"dismissAll": "Masquer la liste",
|
||
"dismissTooltip": "Masquer ce point",
|
||
"items": {
|
||
"profileTitle": "Configurer le profil",
|
||
"profileDescription": "Taille, date de naissance et sexe débloquent des objectifs personnalisés.",
|
||
"profileCta": "Ouvrir le profil",
|
||
"measurementTitle": "Saisir la première mesure",
|
||
"measurementDescription": "Une mesure suffit à activer la tuile ; la tendance se dessine à partir de la 5ᵉ mesure.",
|
||
"measurementCta": "Ajouter une mesure",
|
||
"medicationTitle": "Ajouter un médicament",
|
||
"medicationDescription": "Suis l’observance et reçois des rappels au moment où tu en as besoin.",
|
||
"medicationCta": "Ajouter un médicament",
|
||
"dataSourceTitle": "Connecter une source de données (facultatif)",
|
||
"dataSourceDescription": "Synchronisez poids, tension, sommeil et plus depuis Withings, WHOOP, Oura, Polar, Nightscout, Fitbit ou Apple Health.",
|
||
"dataSourceCta": "Connecter",
|
||
"notificationsTitle": "Configurer les notifications",
|
||
"notificationsDescription": "Choisis comment HealthLog te prévient : Telegram, ntfy ou Web Push.",
|
||
"notificationsCta": "Ouvrir les notifications",
|
||
"insightsTitle": "Activer les insights (facultatif)",
|
||
"insightsDescription": "Ajoutez un modèle local ou votre propre clé IA pour débloquer le briefing quotidien et Coach.",
|
||
"insightsCta": "Activer les insights",
|
||
"visitTitle": "Préparer la visite",
|
||
"visitDescription": "Notez le rendez-vous dans le calendrier ; le rapport médical rassemble ce qu'il faut apporter.",
|
||
"visitCta": "Ouvrir les visites",
|
||
"dataSourceNamedTitle": "Connecter {source}",
|
||
"managedProfileTitle": "Créer le profil de la personne dont vous vous occupez",
|
||
"managedProfileDescription": "Vos réponses concernaient le dossier d'une autre personne ; il se crée dans Accès partagé.",
|
||
"managedProfileCta": "Créer le profil"
|
||
}
|
||
},
|
||
"trendHints": {
|
||
"title": "Première tendance après 5 mesures",
|
||
"remainingOne": "Encore 1 mesure avant la tendance.",
|
||
"remainingMany": "Encore {count} mesures avant la tendance."
|
||
},
|
||
"settings": {
|
||
"oauthCallbackPreflightItem": "{provider} : l'adresse de rappel {configuredOrigin} diffère de l'adresse de cette application {currentOrigin}.",
|
||
"shell": {
|
||
"sectionsNav": "Sections des réglages",
|
||
"groups": {
|
||
"account": "Compte",
|
||
"yourData": "Vos données",
|
||
"healthProfile": "Profil de santé",
|
||
"ai": "IA",
|
||
"connectivity": "Connectivité",
|
||
"system": "Système",
|
||
"tracking": "Suivi",
|
||
"arrangement": "Disposition",
|
||
"notifications": "Notifications",
|
||
"connections": "Connexions",
|
||
"data": "Données"
|
||
},
|
||
"allSections": "Toutes les sections"
|
||
},
|
||
"sharedRecord": {
|
||
"managedSettings": {
|
||
"saveError": "Échec de l'enregistrement. Réessayez.",
|
||
"validationError": "Vérifiez vos saisies.",
|
||
"profile": {
|
||
"title": "Profil",
|
||
"displayName": "Nom affiché",
|
||
"height": "Taille (cm)",
|
||
"dateOfBirth": "Date de naissance",
|
||
"gender": "Genre",
|
||
"notSpecified": "Non précisé",
|
||
"male": "Homme",
|
||
"female": "Femme",
|
||
"other": "Autre",
|
||
"locale": "Langue",
|
||
"systemDefault": "Valeur système",
|
||
"timezone": "Fuseau horaire",
|
||
"units": "Unités",
|
||
"metric": "Métrique",
|
||
"imperial": "Impérial",
|
||
"timeFormat": "Format de l’heure",
|
||
"automatic": "Automatique",
|
||
"hour12": "12 heures",
|
||
"hour24": "24 heures",
|
||
"dateFormat": "Format de date",
|
||
"dateDmy": "Jour / mois / année",
|
||
"dateMdy": "Mois / jour / année",
|
||
"dateYmd": "Année / mois / jour"
|
||
},
|
||
"modules": {
|
||
"title": "Modules"
|
||
},
|
||
"notifications": {
|
||
"title": "Notifications",
|
||
"moodReminder": "Activer le rappel d’humeur",
|
||
"reminderHour": "Heure du rappel d’humeur",
|
||
"lowStockRunwayDays": "Jours avant stock faible",
|
||
"reorderLeadDays": "Délai de réapprovisionnement"
|
||
},
|
||
"thresholds": {
|
||
"title": "Objectifs",
|
||
"metric": "Mesure",
|
||
"minimum": "Minimum",
|
||
"maximum": "Maximum"
|
||
},
|
||
"coach": {
|
||
"title": "Coach",
|
||
"disable": "Désactiver le Coach",
|
||
"tone": "Ton",
|
||
"warm": "Chaleureux",
|
||
"neutral": "Neutre",
|
||
"concise": "Concis",
|
||
"verbosity": "Niveau de détail",
|
||
"brief": "Bref",
|
||
"default": "Par défaut",
|
||
"detailed": "Détaillé",
|
||
"excludedMetrics": "Mesures exclues",
|
||
"dataClusters": "Groupes de données",
|
||
"customClusters": "Utiliser une sélection personnalisée de groupes",
|
||
"metrics": {
|
||
"bp": "Tension artérielle",
|
||
"weight": "Poids",
|
||
"pulse": "Pouls",
|
||
"mood": "Humeur",
|
||
"compliance": "Adhérence aux médicaments",
|
||
"hrv": "Variabilité de la fréquence cardiaque",
|
||
"sleep": "Sommeil",
|
||
"restingHr": "Fréquence cardiaque au repos",
|
||
"steps": "Pas",
|
||
"medications": "Médicaments",
|
||
"anthropometrics": "Mesures corporelles"
|
||
},
|
||
"clusters": {
|
||
"cardio": "Santé cardiovasculaire",
|
||
"body": "Composition corporelle",
|
||
"activity": "Activité",
|
||
"workouts": "Entraînements",
|
||
"sleep": "Sommeil",
|
||
"mood": "Humeur",
|
||
"glucose": "Glucose",
|
||
"medication": "Médicaments",
|
||
"mobility": "Mobilité",
|
||
"environment": "Environnement"
|
||
}
|
||
},
|
||
"insights": {
|
||
"title": "Analyses",
|
||
"sections": "Sections d’aperçu",
|
||
"tiles": "Tuiles de navigation",
|
||
"order": "Ordre",
|
||
"unknownItem": "Analyse indisponible",
|
||
"sectionLabels": {
|
||
"wellnessScores": "Scores de bien-être",
|
||
"dailyBriefing": "Brief quotidien",
|
||
"vitals": "Signes vitaux",
|
||
"trends": "Tendances",
|
||
"periodReview": "Bilan de période",
|
||
"cycleSummary": "Résumé du cycle",
|
||
"signals": "Signaux",
|
||
"rhythmEvents": "Événements de rythme",
|
||
"healthStatus": "État de santé",
|
||
"breathing": "Respiration",
|
||
"labsChanges": "Évolutions de laboratoire",
|
||
"ecg": "ECG"
|
||
}
|
||
}
|
||
},
|
||
"unavailableTitle": "Indisponible dans ce dossier partagé",
|
||
"unavailableDescription": "Cette section des réglages est volontairement indisponible lorsque vous consultez le dossier d’une autre personne.",
|
||
"integrationStatusDescription": "État de connexion pour ce dossier géré.",
|
||
"integrationStatusDetail": "Les services que vous connectez ici envoient leurs données dans le dossier de {name}, pas dans le vôtre. Sans application propre chez le fournisseur, le profil utilise la vôtre.",
|
||
"integrationStatusDocs": "Comment fonctionne le partage",
|
||
"integrationConnectsFor": "Connecte pour {name}",
|
||
"integrationConnectFor": "Connecter pour {name}",
|
||
"integrationDisconnect": "Déconnecter",
|
||
"integrationDisconnectTitle": "Déconnecter {provider} de {name} ?",
|
||
"integrationDisconnectBody": "Les nouvelles données n’arriveront plus. Tout ce qui a déjà été importé reste dans le dossier de {name}.",
|
||
"integrationNoClientApp": "Ni {name} ni votre propre compte n’ont encore d’application {provider}. Configurez-en d’abord une dans vos propres intégrations.",
|
||
"integrationConnectFailed": "Impossible de lancer la connexion à {provider}."
|
||
},
|
||
"sections": {
|
||
"account": {
|
||
"title": "Compte",
|
||
"subtitle": "Votre profil, votre identité et vos identifiants."
|
||
},
|
||
"integrations": {
|
||
"title": "Intégrations",
|
||
"subtitle": "Connectez et gérez vos sources de données et appareils.",
|
||
"connectionsHeading": "Connexions",
|
||
"channelsHeading": "Canaux de diffusion",
|
||
"channelsDescription": "Où sont envoyés les rappels et alertes.",
|
||
"matrixLink": "Notifications par canal"
|
||
},
|
||
"notifications": {
|
||
"title": "Notifications",
|
||
"subtitle": "Choisissez les rappels que vous recevez et où ils sont envoyés.",
|
||
"remindersHeading": "Rappels",
|
||
"matrixLink": "Notifications par canal",
|
||
"channelsLink": "Canaux de diffusion",
|
||
"displayHeading": "Sur ton téléphone",
|
||
"elsewhere": {
|
||
"title": "Réglés là où ils se rattachent",
|
||
"description": "Ces rappels se règlent à côté de ce qu’ils concernent.",
|
||
"doses": {
|
||
"title": "Prises de médicaments",
|
||
"description": "Les heures de prise et les rappels se règlent sur chaque médicament.",
|
||
"link": "Ouvrir les médicaments"
|
||
},
|
||
"cycle": {
|
||
"title": "Cycle",
|
||
"description": "Les rappels de règles et de fenêtre fertile s’activent par canal dans la grille des notifications.",
|
||
"link": "Ouvrir la grille des notifications"
|
||
}
|
||
}
|
||
},
|
||
"layout": {
|
||
"title": "Disposition",
|
||
"backToHub": "Retour à Disposition",
|
||
"dashboard": {
|
||
"title": "Tableau de bord",
|
||
"description": "Disposition et ordre des tuiles."
|
||
},
|
||
"insights": {
|
||
"title": "Analyses",
|
||
"description": "Ordre de la vue d'ensemble et des onglets de navigation."
|
||
},
|
||
"subtitle": "Choisissez l’ordre et l’affichage du tableau de bord, des analyses et des listes de suivi.",
|
||
"medications": {
|
||
"title": "Médicaments",
|
||
"description": "Vue en liste et ordre manuel."
|
||
},
|
||
"labs": {
|
||
"title": "Analyses de labo",
|
||
"description": "Vue, tri et ordre manuel."
|
||
},
|
||
"illness": {
|
||
"title": "Journal des maladies",
|
||
"description": "Vue en liste et ordre des épisodes."
|
||
},
|
||
"vorsorge": {
|
||
"title": "Examens",
|
||
"description": "Vue en liste et ordre des rappels."
|
||
},
|
||
"documents": {
|
||
"title": "Documents",
|
||
"description": "Affichage et disposition des mois."
|
||
}
|
||
},
|
||
"dashboard": {
|
||
"subtitle": "Organisez les tuiles de votre tableau de bord."
|
||
},
|
||
"thresholds": {
|
||
"title": "Objectifs",
|
||
"subtitle": "Définissez vos plages cibles personnelles par mesure."
|
||
},
|
||
"sources": {
|
||
"title": "Priorité des sources",
|
||
"integrationsHint": "Connectez ou déconnectez des sources de données sur la page Intégrations.",
|
||
"integrationsHintLink": "Ouvrir les intégrations",
|
||
"cardTitle": "Classement par métrique",
|
||
"help": "Si plusieurs sources fournissent la même valeur le même jour, la source en tête compte comme canonique.",
|
||
"resetDefaults": "Rétablir les valeurs par défaut",
|
||
"resetDefaultsTitle": "Réinitialiser l’ordre des sources ?",
|
||
"resetDefaultsBody": "Chaque classement que vous avez défini revient à l’ordre par défaut, pour toutes les mesures et tous les types d’appareil à la fois. L’enregistrement est immédiat et irréversible.",
|
||
"resetDefaultsConfirm": "Réinitialiser l’ordre",
|
||
"moveUp": "Monter",
|
||
"moveDown": "Descendre",
|
||
"saveSuccess": "Priorité des sources enregistrée",
|
||
"saveError": "Échec de l’enregistrement de la priorité des sources.",
|
||
"resetSuccess": "Priorité des sources rétablie aux valeurs par défaut",
|
||
"perMetricToggle": "Réglages par métrique ({count})",
|
||
"perMetricHelp": "Métriques que vous avez personnalisées par rapport à l’ordre par défaut. Utilisez cette liste pour rétablir une métrique donnée à sa valeur par défaut sans toucher aux autres.",
|
||
"perMetricEmpty": "Aucun réglage par métrique : chaque métrique utilise l’ordre global ci-dessus.",
|
||
"resetMetric": "Réinitialiser",
|
||
"deviceTypeToggle": "Priorité par type d’appareil ({count})",
|
||
"deviceTypeHelp": "Au sein d’une source, quel appareil l’emporte. Lorsqu’une Apple Watch et un iPhone enregistrent tous deux les pas, le type d’appareil le mieux classé compte comme la lecture canonique.",
|
||
"deviceTypeDefault": "Ordre par défaut des types d’appareil",
|
||
"resetDeviceTypes": "Réinitialiser les types d’appareil",
|
||
"metrics": {
|
||
"steps": "Pas",
|
||
"activeEnergy": "Énergie active",
|
||
"walkingRunningDistance": "Distance marche + course",
|
||
"flightsClimbed": "Étages gravis",
|
||
"sleep": "Sommeil",
|
||
"weight": "Poids",
|
||
"bloodPressure": "Tension artérielle",
|
||
"pulse": "Pouls",
|
||
"bodyFat": "Masse grasse",
|
||
"bodyTemperature": "Température corporelle",
|
||
"spo2": "Saturation en oxygène",
|
||
"hrv": "Variabilité de la fréquence cardiaque",
|
||
"restingHeartRate": "Fréquence cardiaque au repos",
|
||
"vo2Max": "VO2 max",
|
||
"skinTemperature": "Température cutanée",
|
||
"respiratoryRate": "Fréquence respiratoire",
|
||
"recovery": "Récupération",
|
||
"stress": "Stress",
|
||
"sleepDebt": "Dette de sommeil",
|
||
"hrvRmssd": "VFC (RMSSD)"
|
||
},
|
||
"sourceLabels": {
|
||
"WITHINGS": "Withings",
|
||
"APPLE_HEALTH": "Apple Health",
|
||
"MANUAL": "Saisie manuelle",
|
||
"IMPORT": "Importer",
|
||
"WHOOP": "WHOOP",
|
||
"FITBIT": "Fitbit",
|
||
"COMPUTED": "Calculé",
|
||
"NIGHTSCOUT": "Nightscout",
|
||
"POLAR": "Polar",
|
||
"OURA": "Oura",
|
||
"TELEGRAM": "Telegram",
|
||
"MCP": "MCP",
|
||
"GOOGLE_HEALTH": "Google Health",
|
||
"STRAVA": "Strava",
|
||
"EXTERNAL": "Appareil externe",
|
||
"HEALTH_CONNECT": "Health Connect"
|
||
},
|
||
"deviceLabels": {
|
||
"watch": "Montre",
|
||
"band": "Bracelet",
|
||
"ring": "Bague",
|
||
"phone": "Téléphone",
|
||
"scale": "Balance",
|
||
"other": "Autre",
|
||
"unknown": "Inconnu"
|
||
},
|
||
"subtitle": "Choisissez la source prioritaire en cas de doublon de mesure.",
|
||
"nutrients": {
|
||
"title": "Apports en nutriments synchronisés",
|
||
"description": "Totaux quotidiens sur les {days} derniers jours : ce qu’Apple Health a synchronisé, plus les compléments que vous avez pris.",
|
||
"empty": "Aucune donnée de nutriments synchronisée pour l'instant.",
|
||
"latest": "{amount} {unit} le {date}",
|
||
"daysWithData": "{count} jours sur {days}",
|
||
"moduleHint": "La synchronisation est contrôlée par le module Apports en nutriments.",
|
||
"moduleHintLink": "Gérer les modules",
|
||
"detail": "Lecture seule : l'app source reste propriétaire des valeurs."
|
||
},
|
||
"helpDetail": "Les autres restent enregistrées pour la piste d’audit. Seules les sources connectées ou ayant fourni des données sont listées.",
|
||
"noneInUse": "Aucune source à classer pour l'instant. Connectez-en une dans Intégrations ou saisissez une valeur."
|
||
},
|
||
"ai": {
|
||
"title": "Fournisseur d'IA",
|
||
"subtitle": "Choisissez votre fournisseur d'IA et utilisez votre propre clé."
|
||
},
|
||
"api": {
|
||
"title": "API et jetons",
|
||
"subtitle": "Gérez les points d'accès API et les jetons d'accès."
|
||
},
|
||
"advanced": {
|
||
"title": "Avancé",
|
||
"subtitle": "Réinitialisation des données et suppression du compte."
|
||
},
|
||
"export": {
|
||
"title": "Export et import",
|
||
"otherOptionsHeading": "Autres options d'export",
|
||
"downloadFailed": "Échec du téléchargement de l'export. Veuillez réessayer.",
|
||
"actions": {
|
||
"download": "Télécharger"
|
||
},
|
||
"filters": {
|
||
"since": "De",
|
||
"until": "Jusqu’au"
|
||
},
|
||
"cards": {
|
||
"measurementsCsv": {
|
||
"title": "Mesures",
|
||
"description": "Poids, tension artérielle, pouls, glycémie et toutes les autres mesures en valeurs séparées par des virgules."
|
||
},
|
||
"medicationsCsv": {
|
||
"title": "Médicaments",
|
||
"description": "Votre liste de médicaments avec posologie, horaires et (en option) l’historique complet des prises.",
|
||
"includeIntake": "Inclure l’historique des prises"
|
||
},
|
||
"moodCsv": {
|
||
"title": "Humeur",
|
||
"description": "Entrées d’humeur quotidiennes avec score, étiquettes et horodatages."
|
||
},
|
||
"fullBackup": {
|
||
"title": "Sauvegarde complète",
|
||
"description": "L'ensemble de votre dossier dans un fichier JSON.",
|
||
"scopeNote": "Les métadonnées des documents et le résumé IA, s'il existe, sont inclus en texte clair ; les fichiers originaux des documents ainsi que les tracés GPS/données d'échantillons des entraînements ne le sont pas. Téléchargez-les séparément depuis le coffre de documents ou l'export des entraînements.",
|
||
"encryptToggle": "Chiffrer avec une phrase secrète",
|
||
"passphrasePlaceholder": "Phrase secrète (12 caractères min.)",
|
||
"passphraseHelp": "Dérive la clé de l'archive avec Argon2id et la scelle avec AES-256-GCM. Enregistrez le fichier avec l'extension .hlx.",
|
||
"noRecoveryWarning": "Aucune récupération possible : si vous perdez cette phrase secrète, l'archive ne pourra pas être ouverte. Conservez-la en lieu sûr.",
|
||
"detail": "Même format que la sauvegarde automatique hebdomadaire. Certains types d'enregistrement ne sont pas encore inclus : le manifeste du fichier indique ce qu'il contient.",
|
||
"contents": "Vos mesures, médicaments, humeur, cycle, analyses, épisodes de maladie, allergies, antécédents familiaux, nutriments, séances, votre profil de santé et vos mesures personnalisées dans un seul fichier JSON."
|
||
}
|
||
},
|
||
"import": {
|
||
"heading": "Import",
|
||
"description": "Importez des données dans HealthLog depuis un export Apple Santé ou un fichier JSON. L'import ignore les lignes déjà présentes : le relancer est sans risque.",
|
||
"charCount": "{used} / {max} caractères",
|
||
"appleHealth": {
|
||
"title": "Apple Santé",
|
||
"description": "Importez le fichier export.zip de l'app Santé sur iPhone (Profil → Exporter toutes les données de santé).",
|
||
"dropLabel": "Déposez export.zip ici",
|
||
"dropHint": "ou cliquez pour choisir un fichier",
|
||
"fileInputLabel": "Choisir un fichier export.zip d'Apple Santé",
|
||
"choose": "Choisir un fichier",
|
||
"idempotencyNote": "Réimporter la même archive fusionne les données ; aucun doublon n'est créé. Les grandes archives sont traitées en arrière-plan.",
|
||
"uploading": "Envoi…",
|
||
"uploadFailed": "Échec de l'envoi. Veuillez réessayer.",
|
||
"rateLimited": "Trop d'envois. Patientez un instant et réessayez.",
|
||
"tooLarge": "Ce fichier est trop volumineux (limite 1,5 Go).",
|
||
"failed": "L'import a échoué.",
|
||
"failureInterrupted": "L'import a été interrompu avant la fin, généralement par un redémarrage du serveur ou un manque de mémoire. Vos données sont en sécurité ; renvoyez l'archive pour réessayer.",
|
||
"failureInsufficientMemory": "La limite de mémoire du serveur est trop basse pour une archive de cette taille. Demandez à la personne qui administre le serveur d'augmenter la limite de mémoire de Node.js (NODE_OPTIONS=--max-old-space-size), puis renvoyez l'archive.",
|
||
"rowsImported": "{count} lignes importées jusqu'ici",
|
||
"doneSummary": "Terminé : {imported} enregistrements sur {read} importés, {skipped} enregistrements cliniques ignorés.",
|
||
"doneNothing": "Rien n'a été importé de cette archive : 0 enregistrement sur {read} est arrivé.",
|
||
"writtenByHealthLogOne": "{count} enregistrement que HealthLog a écrit lui-même dans Santé a été ignoré, car il figure déjà dans vos données.",
|
||
"writtenByHealthLogOther": "{count} enregistrements que HealthLog a écrits lui-même dans Santé ont été ignorés, car ils figurent déjà dans vos données.",
|
||
"writtenByHealthLogFew": "{count} enregistrements que HealthLog a écrits lui-même dans Santé ont été ignorés, car ils figurent déjà dans vos données.",
|
||
"ecgResult": "ECG : {discovered} détectés, {imported} importés, {updated} mis à jour, {skipped} ignorés et {failed} échoués. Les erreurs d’ECG n’annulent pas les enregistrements compatibles importés depuis export.xml.",
|
||
"estimateWarning": "Les totaux cumulés de {count} jour(s) ont été estimés à partir de la source d’export la plus élevée. Les statistiques Apple Santé natives restent la référence.",
|
||
"phase": {
|
||
"queued": "En file d'attente…",
|
||
"unpacking": "Décompression de l'archive…",
|
||
"parsing": "Lecture de l'export…",
|
||
"upserting": "Import des enregistrements…"
|
||
},
|
||
"skipUnsupported": "{count} échantillons ignorés : des types de données que HealthLog n'importe pas.",
|
||
"skipRefused": "{count} échantillons n'ont pas pu être écrits (illisibles, hors plage ou échec de l'enregistrement).",
|
||
"skipBreakdown": "Afficher le détail ({count} types)",
|
||
"skipBreakdownMore": "+ {count} autres types",
|
||
"cycleSummary": "{samples} échantillons de cycle fusionnés en {days} journaux quotidiens.",
|
||
"cycleModuleOff": "{count} échantillons de cycle ignorés, car le suivi du cycle est désactivé pour ce compte.",
|
||
"cycleDaysFailed": "{count} jours de cycle n'ont pas pu être écrits : {reason}"
|
||
},
|
||
"json": {
|
||
"title": "Fichier JSON",
|
||
"description": "Collez du JSON ou importez un fichier .json contenant des mesures et des entrées d'humeur.",
|
||
"pasteLabel": "Coller du JSON",
|
||
"fileInputLabel": "Choisir un fichier JSON à importer",
|
||
"schemaHint": "Deux tableaux : measurements et moodEntries.",
|
||
"docsLink": "Voir le schéma et un exemple.",
|
||
"uploadFile": "Importer un fichier",
|
||
"downloadExample": "Télécharger l'exemple",
|
||
"import": "Importer",
|
||
"invalidJson": "Ce n'est pas du JSON valide. Vérifiez la syntaxe et réessayez.",
|
||
"invalidPayload": "Les données ne correspondent pas au schéma d'import.",
|
||
"rateLimited": "Trop d'imports cette heure-ci (limite 5). Réessayez plus tard.",
|
||
"failed": "L'import a échoué. Veuillez réessayer.",
|
||
"readFailed": "Impossible de lire ce fichier.",
|
||
"resultSummary": "{measurements} mesures et {moods} entrées d'humeur importées, {skipped} ignorées.",
|
||
"resultSuccess": "{measurements} mesures et {moods} entrées d'humeur importées",
|
||
"resultNothing": "Rien n'a été importé. Les {skipped} entrées ont toutes été ignorées.",
|
||
"resultEmpty": "Ce fichier ne contenait ni mesures ni entrées d'humeur."
|
||
},
|
||
"csv": {
|
||
"title": "Fichier CSV",
|
||
"description": "Importez des mesures depuis un tableur ou l'export d'un appareil.",
|
||
"pasteLabel": "Coller le CSV",
|
||
"fileInputLabel": "Choisir un fichier CSV à importer",
|
||
"schemaHint": "Colonnes : type, value, unit, measuredAt (avec décalage horaire) et, en option, glucoseContext, notes, externalId.",
|
||
"docsLink": "Voir le schéma des colonnes et un exemple.",
|
||
"uploadFile": "Téléverser un fichier",
|
||
"downloadExample": "Télécharger un exemple",
|
||
"preview": "Aperçu",
|
||
"import": "Importer",
|
||
"empty": "Ajoutez au moins une ligne CSV avant d'importer.",
|
||
"rateLimited": "Trop d'imports cette heure (limite 5). Veuillez réessayer plus tard.",
|
||
"tooLarge": "Ce fichier est trop volumineux (limite 16 Mo).",
|
||
"invalidPayload": "Le CSV n'a pas pu être analysé. Vérifiez la ligne d'en-tête et réessayez.",
|
||
"failed": "L'import a échoué. Veuillez réessayer.",
|
||
"readFailed": "Impossible de lire ce fichier.",
|
||
"previewSummary": "Aperçu : {inserted} seraient importées, {skipped} ignorées.",
|
||
"resultSummary": "{inserted} nouvelles importées et {updated} mises à jour, {skipped} ignorées.",
|
||
"rowError": "Ligne {line} : {reason}",
|
||
"resultSuccess": "{inserted} nouvelles importées et {updated} mises à jour",
|
||
"resultNothing": "Rien n'a été importé. Les {skipped} lignes ont toutes été ignorées.",
|
||
"resultEmpty": "Ce fichier a un en-tête mais aucune ligne de données.",
|
||
"previewSuccess": "Aperçu : {inserted} seraient importées",
|
||
"previewNothing": "Aperçu : rien ne serait importé. Les {skipped} lignes seraient toutes ignorées.",
|
||
"skipGroupOne": "{count} ligne ignorée : {reason}",
|
||
"skipGroupFew": "{count} lignes ignorées : {reason}",
|
||
"skipGroupOther": "{count} lignes ignorées : {reason}",
|
||
"skipDetails": "Afficher toutes les lignes ignorées",
|
||
"reasonUnknownType": "type de mesure inconnu",
|
||
"reasonInvalidValue": "la valeur n'est pas un nombre",
|
||
"reasonValueOutOfRange": "valeur hors de la plage plausible",
|
||
"reasonUnknownUnit": "unité non reconnue pour ce type",
|
||
"reasonMissingTimezoneOffset": "horodatage sans décalage horaire",
|
||
"reasonInvalidTimestamp": "horodatage illisible",
|
||
"reasonImplausibleTimestamp": "horodatage dans le futur ou antérieur à 1900",
|
||
"reasonUnexpectedGlucoseContext": "contexte glycémique sur une ligne qui n'est pas une glycémie",
|
||
"reasonInvalidGlucoseContext": "le contexte glycémique n'est pas une valeur autorisée",
|
||
"reasonNotesTooLong": "la note est trop longue",
|
||
"reasonExternalIdTooLong": "l'identifiant externe est trop long",
|
||
"reasonUnstableExternalId": "l'identifiant externe n'est pas stable d'un export à l'autre",
|
||
"reasonDuplicate": "déjà importée",
|
||
"reasonUnknown": "ignorée",
|
||
"detail": "Une ligne par relevé."
|
||
},
|
||
"doseHistory": {
|
||
"title": "Historique des prises",
|
||
"description": "Un historique de prises exporté depuis une autre application de suivi, lu tel quel.",
|
||
"pasteLabel": "Coller l'export",
|
||
"fileInputLabel": "Choisir un fichier d'historique des prises",
|
||
"uploadFile": "Choisir un fichier",
|
||
"preview": "Aperçu",
|
||
"import": "Importer",
|
||
"empty": "Collez d'abord l'export ou choisissez un fichier.",
|
||
"readFailed": "Ce fichier n'a pas pu être lu.",
|
||
"rateLimited": "Maximum 5 imports par heure. Réessayez plus tard.",
|
||
"tooLarge": "Ce fichier dépasse la limite de 16 Mo.",
|
||
"inProgress": "Un import d'historique est déjà en cours. Attendez qu'il se termine.",
|
||
"workerUnavailable": "Le service d'arrière-plan est indisponible, rien n'a été importé.",
|
||
"failed": "L'import a échoué. Rien n'a été écrit.",
|
||
"columnsHeading": "Ce que devient chaque colonne",
|
||
"jsonOnly": "JSON uniquement",
|
||
"previewLine": "{rows} lignes lues, {queued} seraient importées, {refused} refusées",
|
||
"submittedLine": "{rows} lignes lues, {queued} en file d'import",
|
||
"unmatched": "Aucun médicament enregistré ne correspond à : {names}",
|
||
"ambiguous": "Correspond à plusieurs médicaments : {names}",
|
||
"mirrored": "Copié depuis une autre application, aucune prise ne peut y être ajoutée : {names}",
|
||
"unknownColumns": "Colonnes sans règle dans l'importeur, non lues : {names}",
|
||
"codingsNotRead": "Lignes portant une valeur Codings non lue : {count}",
|
||
"archivedRowsPresent": "Lignes marquées comme appartenant à des médicaments archivés : {count}. Ce marqueur ne les ignore pas et ne réactive pas les médicaments ; le résultat final indique ce qui a été ajouté.",
|
||
"verdict": {
|
||
"honoured": "utilisée",
|
||
"reported": "signalée",
|
||
"ignored": "non lue"
|
||
},
|
||
"column": {
|
||
"date": "L'heure à laquelle la dose a réellement été prise. Son décalage UTC est lu exactement tel qu'il est écrit.",
|
||
"scheduledDate": "Le créneau auquel la dose appartenait, distinct de l'heure de prise. Vide signifie qu'elle n'appartenait à aucun créneau.",
|
||
"medication": "Rapproché d'un médicament déjà présent dans votre dossier. Rien n'est créé à partir du fichier.",
|
||
"nickname": "Essayé comme second nom lorsque le premier ne correspond à rien.",
|
||
"dosage": "Consigné sur la dose uniquement lorsqu'il diffère de la quantité prévue.",
|
||
"scheduledDosage": "Comparé à la quantité réelle pour décider s'il y a eu écart. Jamais conservé seul.",
|
||
"unit": "Écrit avec la quantité, orthographié comme dans le fichier. « count » signifie des multiples de la dose configurée.",
|
||
"status": "« Taken » devient une prise et « Skipped » une omission délibérée. Toute autre valeur ne consigne aucune décision et la ligne est refusée.",
|
||
"archived": "Compté et signalé. Une prise qui a eu lieu n'est pas annulée parce que le médicament a été archivé ensuite.",
|
||
"codings": "Le CSV ne documente aucun encodage pour cette colonne, elle est donc laissée telle quelle plutôt que devinée. Les cellules remplies sont comptées.",
|
||
"form": "Décrit le médicament, pas la prise.",
|
||
"start": "La date de début du traitement, pas l'heure de cette prise.",
|
||
"end": "La date d'arrêt du traitement, pas l'heure de cette prise."
|
||
},
|
||
"fatal": {
|
||
"emptyFile": "Ce fichier ne contient aucune ligne.",
|
||
"missingColumns": "Il manque à ce fichier une colonne dont l'importeur a besoin : Date, Medication ou Status.",
|
||
"unreadableJson": "Ce fichier n'est pas du JSON valide.",
|
||
"jsonNotAnArray": "Ce JSON ne contient aucune liste de prises.",
|
||
"jsonNoIntakeTime": "L'export JSON consigne le moment où une dose était due, pas celui où elle a été prise, et une heure prévue ne sera pas écrite comme si c'était la prise. Exportez le CSV, qui porte les deux.",
|
||
"tooManyRows": "Ce fichier contient plus de lignes qu'un import peut en prendre. Découpez-le et importez les parties."
|
||
},
|
||
"detail": "Un fichier couvre tous les médicaments qu'il contient."
|
||
},
|
||
"healthConnect": {
|
||
"title": "Export Health Connect",
|
||
"description": "Importe le fichier ZIP que l’app Health Connect sur Android crée lors de l’export de tes données.",
|
||
"choose": "Choisir le fichier ZIP",
|
||
"uploading": "Envoi en cours…",
|
||
"uploadFailed": "L’envoi a échoué. Réessaie.",
|
||
"tooLarge": "Le fichier dépasse la taille acceptée par ce serveur.",
|
||
"doneSummary": "{count} valeurs importées.",
|
||
"failed": "L’import a échoué : {reason}",
|
||
"phase": {
|
||
"queued": "En attente de démarrage",
|
||
"unpacking": "Décompression du fichier",
|
||
"parsing": "Lecture des enregistrements",
|
||
"upserting": "Enregistrement des valeurs",
|
||
"done": "Terminé",
|
||
"failed": "Échec"
|
||
},
|
||
"steps": {
|
||
"export": "Sur ton téléphone Android, ouvre Health Connect, va dans Gérer les données, puis Exporter et importer, et lance une exportation.",
|
||
"cloud": "Health Connect enregistre l’exportation uniquement dans une app de stockage cloud comme Google Drive, Dropbox ou Nextcloud, jamais sur le téléphone lui-même. Choisis-en une.",
|
||
"upload": "Télécharge le fichier ZIP de ce cloud sur cet appareil et importe-le ici."
|
||
},
|
||
"dropLabel": "Dépose ici le ZIP de Health Connect",
|
||
"dropHint": "ou clique pour le choisir. Jusqu’à 1 Go.",
|
||
"fileInputLabel": "Fichier ZIP de l’exportation Health Connect",
|
||
"privacyNote": "Le fichier est supprimé du serveur dès la fin de l’importation. Les enregistrements des apps que tu connectes déjà directement, comme Withings ou Fitbit, sont ignorés pour que rien n’arrive en double. Importer à nouveau le même fichier ne change rien.",
|
||
"rateLimited": "Trop d’envois en peu de temps. Attends une minute et réessaie.",
|
||
"busy": "Une importation est déjà en cours pour ton compte. Attends qu’elle soit terminée.",
|
||
"rowsSoFar": "{count} valeurs enregistrées jusqu’ici",
|
||
"doneNothing": "L’importation est terminée, mais il n’y avait rien de nouveau à ajouter.",
|
||
"workouts": "Entraînements",
|
||
"leftOutConnected": "{count} enregistrements d’apps que tu connectes déjà directement ont été ignorés.",
|
||
"nutrientsModuleOff": "Les totaux d’eau et de nutriments n’ont pas été importés, car le module Nutriments est désactivé.",
|
||
"cycleModuleOff": "Les données de règles n’ont pas été importées, car le suivi du cycle est désactivé.",
|
||
"failure": {
|
||
"unsupportedVersion": "Cette exportation Health Connect est trop ancienne pour être lue. Mets à jour Health Connect sur le téléphone et exporte à nouveau.",
|
||
"notHealthConnect": "Ce fichier n’est pas une exportation Health Connect. Choisis le fichier ZIP enregistré par Health Connect.",
|
||
"unsafeSchema": "Ce fichier n’a pas la structure d’une exportation Health Connect et n’a pas été lu.",
|
||
"tooLarge": "L’exportation est plus volumineuse que ce que ce serveur accepte.",
|
||
"stagingMissing": "Le fichier envoyé n’était plus sur le serveur. Envoie-le à nouveau.",
|
||
"interrupted": "Un redémarrage du serveur a interrompu l’importation. Envoie le fichier à nouveau."
|
||
}
|
||
}
|
||
},
|
||
"subtitle": "Exportez vos données ou importez depuis une sauvegarde."
|
||
},
|
||
"about": {
|
||
"title": "À propos de cette app",
|
||
"subtitle": "Version, licence et liens du projet."
|
||
},
|
||
"sharing": {
|
||
"title": "Partage",
|
||
"subtitle": "Partagez un accès en lecture seule à vos données."
|
||
},
|
||
"insights": {
|
||
"subtitle": "Organisez les sections d'aperçu et l'ordre des onglets."
|
||
},
|
||
"medications": {
|
||
"subtitle": "Gérez l'affichage et l'ordre de votre liste de médicaments."
|
||
},
|
||
"mood": {
|
||
"subtitle": "Organisez vos tags d'humeur, groupes et ordre du sélecteur."
|
||
},
|
||
"labs": {
|
||
"subtitle": "Gérez l’affichage, le tri et les biomarqueurs."
|
||
},
|
||
"illness": {
|
||
"subtitle": "Gérez l’affichage et l’ordre des épisodes."
|
||
},
|
||
"vorsorge": {
|
||
"subtitle": "Gérez l’affichage, l’ordre et les rappels individuels."
|
||
},
|
||
"modules": {
|
||
"title": "Modules",
|
||
"saved": "Enregistré",
|
||
"error": "Échec de l'enregistrement. Veuillez réessayer.",
|
||
"toggleable": {
|
||
"title": "Ce que vous suivez",
|
||
"description": "Les modules désactivés disparaissent de la navigation, des tuiles et des analyses ; vos données sont conservées."
|
||
},
|
||
"manageIn": "Gérer dans {section}",
|
||
"operatorDisabled": "Désactivé sur tout le serveur",
|
||
"subtitle": "Choisissez les domaines de suivi affichés par HealthLog.",
|
||
"backToHub": "Retour à Modules",
|
||
"openModuleSettings": "Réglages du module",
|
||
"pages": {
|
||
"medications": {
|
||
"title": "Médicaments",
|
||
"description": "Sites d’injection que la rotation laisse de côté."
|
||
},
|
||
"mood": {
|
||
"title": "Étiquettes d’humeur",
|
||
"description": "Groupes, vos propres étiquettes et les étiquettes archivées."
|
||
},
|
||
"labs": {
|
||
"title": "Analyses",
|
||
"description": "Biomarqueurs et reconnaissance de texte sur l’appareil pour les comptes rendus d’analyses."
|
||
},
|
||
"arrangementTitle": "Ordre et affichage",
|
||
"arrangementDescription": "Le tri et l’affichage de cette liste se règlent dans Disposition.",
|
||
"openArrangement": "Ouvrir dans Disposition",
|
||
"moduleSettingsTitle": "Réglages du module",
|
||
"moduleSettingsDescription": "Tout le reste se trouve sur la page du module, dans Modules."
|
||
}
|
||
},
|
||
"gesundheitsakte": {
|
||
"title": "Dossier médical",
|
||
"subtitle": "Exportez un dossier de santé complet, prêt pour le médecin."
|
||
},
|
||
"coach": {
|
||
"title": "Coach",
|
||
"subtitle": "Réglez le Coach, ses suggestions proactives et sa mémoire."
|
||
},
|
||
"security": {
|
||
"title": "Sécurité",
|
||
"subtitle": "Authentification à deux facteurs, codes de récupération et clés d'accès."
|
||
},
|
||
"privacy": {
|
||
"title": "Données et confidentialité",
|
||
"subtitle": "Vos données, leur conservation, le chiffrement et la sécurité du compte au même endroit."
|
||
},
|
||
"mcp": {
|
||
"title": "Connecteur MCP",
|
||
"subtitle": "Connectez un assistant externe à vos propres données de santé."
|
||
},
|
||
"anamnesis": {
|
||
"title": "Antécédents médicaux",
|
||
"subtitle": "Vos antécédents, votre mode de vie, vos informations d’urgence et ce que l’IA peut lire."
|
||
},
|
||
"environment": {
|
||
"title": "Localisation et météo",
|
||
"subtitle": "Contexte météo, lumière du jour et lieu.",
|
||
"disabledHint": "Activez le module Environnement pour définir un lieu de référence et intégrer la météo et la durée du jour quotidiennes.",
|
||
"searchPlaceholder": "Rechercher une ville",
|
||
"search": "Rechercher",
|
||
"searchError": "Impossible de rechercher ce lieu.",
|
||
"use": "Utiliser",
|
||
"select": "Sélectionner",
|
||
"saveError": "Impossible d'enregistrer la modification.",
|
||
"homeSaved": "Lieu de référence enregistré",
|
||
"travelAdded": "Période de localisation ajoutée.",
|
||
"travelRemoved": "Période de localisation supprimée.",
|
||
"backfillQueued": "Récupération planifiée.",
|
||
"backfillError": "Impossible de lancer la récupération.",
|
||
"startDate": "Date de début",
|
||
"endDate": "Date de fin",
|
||
"storedDays": "{count} jours de météo enregistrés.",
|
||
"home": {
|
||
"title": "Lieu de référence",
|
||
"description": "Une localisation approximative à l'échelle de la ville, jamais un tracé précis. La météo et la lumière du jour sont récupérées pour ce lieu les jours sans période de localisation, à partir de la date où vous le définissez.",
|
||
"current": "Actuel : {label}",
|
||
"none": "Aucun lieu de référence défini.",
|
||
"since": "Météo enregistrée à partir du {date}. Les jours antérieurs restent vides jusqu'à ce que vous ajoutiez une période de localisation."
|
||
},
|
||
"travel": {
|
||
"title": "Périodes de localisation",
|
||
"description": "Ajoutez un lieu et une plage de dates : un voyage ou une portion de votre historique passé. La période remplace votre domicile pour les jours qu'elle couvre, afin que la météo corresponde à l'endroit où vous étiez réellement. C'est ainsi que vous corrigez le passé.",
|
||
"none": "Aucune période de localisation pour l'instant.",
|
||
"add": "Ajouter {label}",
|
||
"remove": "Supprimer la période de localisation",
|
||
"removeConfirmTitle": "Retirer ce voyage ?",
|
||
"removeConfirmBody": "Les mesures de cette période restent dans ton dossier ; seule l'entrée du voyage disparaît.",
|
||
"range": "Du {start} au {end}",
|
||
"suggestionsIntro": "Dawarich a trouvé des jours à l’étranger qu’aucune période ne couvre encore.",
|
||
"suggestionUse": "Utiliser",
|
||
"suggestionDismiss": "Ignorer la suggestion"
|
||
},
|
||
"backfill": {
|
||
"title": "Récupérer les jours passés",
|
||
"description": "Récupérez et enregistrez la météo d'une plage de dates passée pour que les jours anciens rejoignent les corrélations. Le début reprend par défaut la date d'effet de votre domicile ; pour remonter plus loin, ajoutez d'abord une période de localisation pour cette plage.",
|
||
"run": "Récupérer"
|
||
},
|
||
"noResults": "Aucun lieu correspondant trouvé.",
|
||
"fetchFailedOne": "La dernière mise à jour météo en arrière-plan a échoué ({when}).",
|
||
"fetchFailedFew": "Les {count} dernières mises à jour météo en arrière-plan ont échoué, la plus récente {when}.",
|
||
"fetchFailedOther": "Les {count} dernières mises à jour météo en arrière-plan ont échoué, la plus récente {when}.",
|
||
"airQuality": {
|
||
"title": "Qualité de l’air et pollen",
|
||
"description": "Qualité de l’air, pollen et UV quotidiens pour ton lieu, issus du modèle CAMS via Open-Meteo.",
|
||
"toggle": "Inclure la qualité de l’air et le pollen",
|
||
"operatorDisabled": "La qualité de l’air est désactivée sur ce serveur.",
|
||
"coverage": "{count} jours avec des données de qualité de l’air",
|
||
"pollenEuropeOnly": "Les données de pollen ne couvrent que l’Europe.",
|
||
"historyProgress": "Récupération de la qualité de l’air : {done} jours sur {total}",
|
||
"historyComplete": "La qualité de l’air est complétée pour tous les jours passés avec des saisies que la source couvre ({total} jours). Les jours plus anciens restent vides.",
|
||
"attribution": "Sources de données et licences",
|
||
"saveError": "Le réglage n’a pas pu être enregistré.",
|
||
"latest": "Jour le plus récent ({date})",
|
||
"modelNote": "Valeurs extérieures modélisées pour ta zone, pas ton exposition personnelle."
|
||
}
|
||
},
|
||
"score": {
|
||
"title": "Score de santé",
|
||
"subtitle": "Choisissez les piliers qui comptent dans votre score.",
|
||
"card": {
|
||
"title": "Ce qui compte dans votre score",
|
||
"description": "Chaque pilier que vous enregistrez compte, sauf indication contraire ici."
|
||
},
|
||
"threeAxes": "Enregistrer, afficher et compter sont trois choses distinctes. Cette page ne change que la dernière. Un pilier désactivé ici continue d'être enregistré et reste visible partout ailleurs dans HealthLog, il cesse simplement de faire bouger le chiffre.",
|
||
"recommendation": "Trois domaines de santé sont une recommandation, pas une exigence : toute sélection comportant au moins un pilier est enregistrée. Un score plus étroit est calculé de la même façon et indique sur la carte sur combien de domaines il repose.",
|
||
"axis": {
|
||
"countsFor": "Compter {pillar} dans le score"
|
||
},
|
||
"state": {
|
||
"counting": "Compte dans votre score",
|
||
"waiting": "Sélectionné, en attente de données",
|
||
"crisis": "Un message de sécurité s'affiche à la place d'un score. Votre sélection n'est pas en cause.",
|
||
"readFailed": "Ce pilier n'a pas pu être lu lors du dernier calcul."
|
||
},
|
||
"presets": {
|
||
"label": "Point de départ",
|
||
"all": "Tous les piliers",
|
||
"current": "Votre sélection enregistrée"
|
||
},
|
||
"save": "Enregistrer",
|
||
"saved": "Enregistré",
|
||
"error": "Enregistrement impossible. Veuillez réessayer.",
|
||
"loadFailed": "Impossible de charger votre sélection.",
|
||
"eligibilityFailed": "Impossible de vérifier quels piliers disposent de données. Les interrupteurs ci-dessous fonctionnent quand même.",
|
||
"omitted": "{count} piliers ne sont pas listés parce que leur suivi est désactivé. Réactivez un module et son pilier revient.",
|
||
"omittedLink": "Ouvrir les modules",
|
||
"refusal": {
|
||
"empty": "Un score de santé a besoin d'au moins un domaine de santé à évaluer. Gardez-en au moins un sélectionné : le score indiquera sur quels domaines il repose."
|
||
},
|
||
"notice": {
|
||
"upgrade": {
|
||
"title": "Ce qui compte, c'est vous qui le décidez",
|
||
"body": "Les piliers qui comptaient dans votre Health Score suivaient auparavant les modules que vous aviez activés. C'est désormais un choix à part, et c'est ici que vous le faites. Votre chiffre n'a pas bougé pour autant : il compte exactement ce qu'il comptait avant."
|
||
},
|
||
"changed": {
|
||
"title": "Vous avez changé ce qui compte",
|
||
"body": "Depuis le {date}, votre score est calculé à partir d'un autre ensemble de piliers. Les jours antérieurs viennent de l'ancien ensemble, les deux ne sont donc pas comparés et la variation hebdomadaire reste suspendue tant que la fenêtre de comparaison n'a pas dépassé le changement. L'historique de chaque pilier, lui, se poursuit sans rupture.",
|
||
"bodyUndated": "Votre score est calculé à partir d'un autre ensemble de piliers qu'auparavant. Les jours antérieurs viennent de l'ancien ensemble, les deux ne sont donc pas comparés et la variation hebdomadaire reste suspendue tant que la fenêtre de comparaison n'a pas dépassé le changement. L'historique de chaque pilier, lui, se poursuit sans rupture."
|
||
},
|
||
"composition": {
|
||
"title": "Ce qui compte a changé tout seul",
|
||
"left": "Ne compte plus dans votre score : {pillars}. Le chiffre a bougé pour cette raison, et non parce que votre santé a changé.",
|
||
"joined": "Compte désormais dans votre score : {pillars}."
|
||
},
|
||
"dismiss": "Compris",
|
||
"dismissError": "Enregistrement impossible. Veuillez réessayer."
|
||
}
|
||
},
|
||
"access": {
|
||
"title": "Accès partagé",
|
||
"subtitle": "Qui peut ouvrir votre dossier de santé, et lequel vous pouvez ouvrir."
|
||
}
|
||
},
|
||
"profile": "Profil",
|
||
"language": "Langue",
|
||
"languageDescription": "Choisissez la langue d’affichage de l’application.",
|
||
"timeFormat": {
|
||
"title": "Format horaire",
|
||
"description": "Détermine si les heures s’affichent au format 24 heures ou 12 heures (AM/PM).",
|
||
"auto": "Automatique (langue)",
|
||
"h24": "24 heures",
|
||
"h12": "12 heures (AM/PM)",
|
||
"saved": "Format horaire enregistré",
|
||
"saveError": "Échec de l’enregistrement du format horaire."
|
||
},
|
||
"dateFormat": {
|
||
"title": "Format de date",
|
||
"description": "Détermine l’ordre du jour, du mois et de l’année lors de l’affichage des dates.",
|
||
"auto": "Automatique (langue)",
|
||
"dmy": "JJ.MM.AAAA",
|
||
"mdy": "MM/JJ/AAAA",
|
||
"ymd": "AAAA-MM-JJ",
|
||
"saved": "Format de date enregistré",
|
||
"saveError": "Échec de l’enregistrement du format de date."
|
||
},
|
||
"username": "Nom d'utilisateur",
|
||
"height": "Taille (cm)",
|
||
"heightFtIn": "Taille (ft, in)",
|
||
"dateOfBirth": "Date de naissance",
|
||
"dateOfBirthHint": "Utilisé pour le calcul automatique des objectifs de tension artérielle.",
|
||
"gender": "Sexe",
|
||
"genderNone": "Non précisé",
|
||
"genderMale": "Homme",
|
||
"genderFemale": "Femme",
|
||
"genderHint": "Utilisé pour des valeurs cibles spécifiques au sexe.",
|
||
"timezone": "Fuseau horaire",
|
||
"timezoneHint": "Utilisé pour les libellés des axes des graphiques, les heures de rappel, les horodatages d’export et le contexte du Coach. Les données stockées restent inchangées.",
|
||
"timezoneInvalid": "Fuseau horaire IANA non valide.",
|
||
"profileSaved": "Profil enregistré",
|
||
"profilePartiallySaved": "Profil enregistré, mais {field} n'a pas pu être mis à jour.",
|
||
"profileNothingSaved": "Rien n'a été enregistré. Corrigez {field} et réessayez.",
|
||
"profileRejection": {
|
||
"tooBig": "La valeur dépasse la plage acceptée par ce champ.",
|
||
"tooSmall": "La valeur est en dessous de la plage acceptée par ce champ.",
|
||
"invalidValue": "Ce n'est pas une des réponses acceptées par ce champ.",
|
||
"invalidFormat": "Ce n'est pas écrit dans un format que ce champ peut lire.",
|
||
"invalidType": "La valeur n'est pas arrivée dans un format que ce champ peut enregistrer.",
|
||
"rateLimited": "Modifié trop souvent. Patientez un peu et réessayez.",
|
||
"other": "Cette valeur n'a pas été acceptée. Vérifiez-la et réessayez.",
|
||
"reproofRequired": "Saisissez votre mot de passe actuel pour changer l'adresse e-mail.",
|
||
"reproofFailed": "Ce mot de passe est incorrect, l'adresse e-mail n'a donc pas été modifiée.",
|
||
"secondFactorRequired": "Confirmez avec votre second facteur ou une clé d'accès pour changer l'adresse e-mail."
|
||
},
|
||
"avatar": {
|
||
"title": "Photo de profil",
|
||
"description": "Téléverse une photo stockée sur ton propre serveur. Elle apparaît dans toute l'application à la place d'un service d'avatar externe.",
|
||
"upload": "Téléverser une photo",
|
||
"replace": "Remplacer la photo",
|
||
"remove": "Supprimer",
|
||
"removeTitle": "Supprimer la photo de profil ?",
|
||
"removeBody": "L’image est supprimée de votre serveur et vos initiales prennent sa place. Il vous faudra le fichier d’origine pour la téléverser à nouveau.",
|
||
"removeConfirm": "Supprimer la photo",
|
||
"hint": "JPEG, PNG ou WebP. Jusqu'à 2 Mo et 2048×2048 pixels.",
|
||
"uploaded": "Photo de profil mise à jour",
|
||
"removed": "Photo de profil supprimée",
|
||
"invalidType": "Type d'image non pris en charge. Utilise JPEG, PNG ou WebP.",
|
||
"tooLarge": "L'image dépasse la limite de 2 Mo.",
|
||
"error": "Impossible de mettre à jour la photo de profil. Réessaie."
|
||
},
|
||
"changePassword": "Changer le mot de passe",
|
||
"changePasswordDescription": "Remplacez votre mot de passe actuel par un nouveau.",
|
||
"currentPassword": "Mot de passe actuel",
|
||
"newPassword": "Nouveau mot de passe",
|
||
"confirmNewPassword": "Confirmer le nouveau mot de passe",
|
||
"passwordMismatch": "Les nouveaux mots de passe ne correspondent pas",
|
||
"passwordUpdated": "Mot de passe mis à jour",
|
||
"passkeys": "Passkeys",
|
||
"passkeysDescription": "Les clés d’accès permettent une connexion sécurisée sans mot de passe.",
|
||
"passkeyReauth": {
|
||
"title": "Confirmez votre identité",
|
||
"description": "Vérifiez une méthode de connexion existante avant d’ajouter une nouvelle clé d’accès.",
|
||
"methodLabel": "Méthode de vérification",
|
||
"methods": {
|
||
"password": "Mot de passe",
|
||
"totp": "Code d’authentification",
|
||
"passkey": "Clé d’accès",
|
||
"webauthn": "Clé de sécurité"
|
||
},
|
||
"currentPassword": "Mot de passe actuel",
|
||
"authenticatorCode": "Code d’authentification",
|
||
"authenticatorPlaceholder": "Code d’authentification à 6 chiffres",
|
||
"verifyAndAdd": "Vérifier et ajouter",
|
||
"factorDescription": "Vérifiez une méthode de connexion existante avant d'ajouter un second facteur.",
|
||
"verifyAndContinue": "Vérifier et continuer"
|
||
},
|
||
"passkeyName": "Nom",
|
||
"noPasskeys": "Aucune clé d’accès enregistrée.",
|
||
"addPasskey": "Ajouter une clé d’accès",
|
||
"passkeyRegistrationFailed": "Échec de l’enregistrement de la clé d’accès",
|
||
"passkeyRegistrationCancelled": "Enregistrement de la clé d’accès annulé",
|
||
"passkeyNotSupported": "Votre navigateur ou appareil ne prend pas encore en charge les clés d’accès. Essayez un autre navigateur ou appareil.",
|
||
"passkeyAlreadyRegistered": "Cet appareil est déjà enregistré comme clé d’accès de votre compte.",
|
||
"passkeySecurityBlocked": "Votre navigateur a bloqué la demande de clé d’accès pour des raisons de sécurité. Assurez-vous d’être sur une origine HTTPS de confiance et réessayez.",
|
||
"passkeyTimeout": "La demande de clé d’accès a expiré. Veuillez réessayer.",
|
||
"passkeyUnknownError": "Échec de l’enregistrement de la clé d’accès : {message}",
|
||
"deletePasskey": "Supprimer la clé d’accès ?",
|
||
"deletePasskeyDescription": "La clé d’accès sera définitivement supprimée.",
|
||
"singleDevice": "Appareil unique",
|
||
"multiDevice": "Multi-appareils",
|
||
"backedUp": "sauvegardée",
|
||
"telegram": "Telegram Notifications",
|
||
"telegramDescription": "Get reminders for missed medication intake via Telegram.",
|
||
"botToken": "Jeton du bot",
|
||
"chatId": "ID du chat",
|
||
"enableNotifications": "Activer les notifications",
|
||
"telegramStep1": "Créez un bot via @BotFather dans Telegram et copiez le jeton.",
|
||
"telegramStep2": "Envoyez /start à votre bot pour activer le chat.",
|
||
"telegramStep3": "Trouvez votre ID de chat via @userinfobot ou l’API du bot.",
|
||
"ntfy": "ntfy",
|
||
"ntfyDescription": "Notifications via ntfy (auto-hébergé ou ntfy.sh).",
|
||
"ntfyEnable": "Activer ntfy",
|
||
"ntfyServer": "URL du serveur",
|
||
"ntfyTopic": "Topic",
|
||
"ntfyAuthToken": "Jeton d’authentification (facultatif)",
|
||
"ntfyAuthTokenHint": "Nécessaire uniquement pour les sujets privés avec contrôle d’accès.",
|
||
"webhook": "Webhook",
|
||
"webhookDescription": "Notifications par POST vers une URL : Discord, Slack, Gotify, Home Assistant, n8n ou tout relais acceptant du JSON.",
|
||
"webhookEnable": "Activer le webhook",
|
||
"webhookUrl": "URL du webhook",
|
||
"webhookUrlHint": "L’URL complète pour le POST. Une adresse sur un réseau privé doit être autorisée par l’administrateur du serveur.",
|
||
"webhookHeaderName": "Nom d’en-tête (facultatif)",
|
||
"webhookHeaderValue": "Valeur d’en-tête (facultatif)",
|
||
"webhookFormat": "Format du message",
|
||
"webhookFormatGeneric": "JSON générique",
|
||
"webhookFormatGenericHint": "Collez telle quelle une URL de webhook Discord ou Slack. Home Assistant et n8n lisent les champs title, message, eventType et priority.",
|
||
"webhookFormatGotify": "Gotify",
|
||
"webhookFormatGotifyHint": "Utilisez l’URL se terminant par /message et placez le jeton de l’application dans l’en-tête X-Gotify-Key.",
|
||
"email": "E-mail",
|
||
"emailDescription": "Recevoir les alertes et les rappels par e-mail.",
|
||
"emailEnable": "Activer l’e-mail",
|
||
"emailRecipient": "Adresse du destinataire",
|
||
"webPush": "Push navigateur",
|
||
"webPushDescription": "Recevez des notifications directement dans votre navigateur, même lorsque HealthLog n’est pas ouvert.",
|
||
"webPushNotSupported": "Votre navigateur ne prend pas en charge les notifications push.",
|
||
"webPushDenied": "Les notifications push sont bloquées. Autorisez-les dans les réglages de votre navigateur.",
|
||
"webPushNotConfigured": "Web Push n’est pas configuré sur le serveur.",
|
||
"webPushSubscribe": "Activer le push",
|
||
"webPushUnsubscribe": "Désactiver le push",
|
||
"webPushSubscribed": "Notifications push activées !",
|
||
"webPushUnsubscribed": "Notifications push désactivées.",
|
||
"webPushSubscribeFailed": "Échec de l’activation",
|
||
"codexConnected": "ChatGPT connecté ! Insights est maintenant actif.",
|
||
"codexDisconnected": "Connexion à ChatGPT supprimée.",
|
||
"codexConnectionFailed": "Échec de la connexion à ChatGPT. Veuillez réessayer.",
|
||
"rawData": "Envoyer l’historique détaillé",
|
||
"rawDataOnDescription": "En plus des résumés, le fournisseur reçoit des moyennes de vos mesures : par jour sur les 90 derniers jours, par semaine sur l’année précédente et par mois jusqu’à 5 ans en arrière, chacune avec sa date et son nombre de mesures. Les mesures individuelles, votre nom et votre e-mail ne sont pas envoyés.",
|
||
"rawDataOffDescription": "Seuls des résumés sont envoyés : la dernière valeur, des moyennes, des tendances, le minimum et le maximum sur des fenêtres fixes. Aucune série de mesures.",
|
||
"rawDataWarning": "Historique détaillé activé : chaque analyse envoie aussi les moyennes journalières des 90 derniers jours, les moyennes hebdomadaires de l’année précédente et les moyennes mensuelles jusqu’à 5 ans en arrière.",
|
||
"regenerateInsights": "Régénérer les rapports",
|
||
"regenerateSuccess": "Rapports régénérés",
|
||
"regenerateRateLimit": "Veuillez patienter : vous avez atteint la limite horaire d’analyses.",
|
||
"lastGeneratedAt": "Dernière génération",
|
||
"ai": {
|
||
"chatgptConnectedBadge": "ChatGPT connecté",
|
||
"adminAiActiveBadge": "Fournisseur administrateur actif",
|
||
"connectionExpiredBadge": "Connexion expirée",
|
||
"connectedSince": "Connecté depuis {when}.",
|
||
"deviceCodeHeading": "Terminez la connexion sur chatgpt.com",
|
||
"deviceCodeStep1": "Ouvrez ce lien sur n’importe quel appareil :",
|
||
"deviceCodeStep2": "Saisissez ce code à usage unique :",
|
||
"deviceCodeStep3": "Approuvez la connexion. Cette page se met à jour automatiquement.",
|
||
"deviceCodeCopy": "Copier",
|
||
"deviceCodeWaiting": "En attente d’approbation…",
|
||
"deviceCodeCancel": "Annuler",
|
||
"oauthNotConfigured": "L’OAuth ChatGPT n’est pas configuré sur cette instance. Utilisez plutôt votre propre clé API ci-dessous.",
|
||
"modelLabel": "Modèle",
|
||
"modelOptionDefault": "— Par défaut —",
|
||
"modelOptionCustom": "Personnalisé…",
|
||
"customModelLabel": "Nom du modèle personnalisé",
|
||
"anthropicKeyLabel": "Clé API Anthropic",
|
||
"baseUrlLabel": "Base URL",
|
||
"localKeyLabel": "Clé API (facultative)",
|
||
"localDescription": "Tout point de terminaison compatible OpenAI fonctionne ici : un modèle local (Ollama, LM Studio) comme une passerelle telle que LiteLLM, OpenRouter ou vLLM. L'URL de base se termine par /v1 ; la clé API est facultative.",
|
||
"savedPreview": "(enregistrée {preview})",
|
||
"savedShort": "(enregistrée)",
|
||
"saveCta": "Enregistrer",
|
||
"saved": "Enregistré",
|
||
"errorGeneric": "Erreur",
|
||
"providerChain": {
|
||
"types": {
|
||
"codex": "ChatGPT (Codex)",
|
||
"openai": "OpenAI (votre clé)",
|
||
"anthropic": "Anthropic (Claude)",
|
||
"local": "Modèle local",
|
||
"openai-compatible": "Passerelle compatible OpenAI",
|
||
"admin-openai": "OpenAI administrateur"
|
||
},
|
||
"title": "Chaîne de secours",
|
||
"description": "Si le fournisseur actif échoue, HealthLog essaie le suivant activé, dans cet ordre.",
|
||
"moveUp": "Monter",
|
||
"moveDown": "Descendre",
|
||
"removeFromChain": "Retirer de la chaîne",
|
||
"addProvider": "Ajouter un fournisseur",
|
||
"addNoneAvailable": "Tous les fournisseurs sont déjà dans la chaîne",
|
||
"saveOrder": "Enregistrer l’ordre de la chaîne",
|
||
"saved": "Chaîne enregistrée",
|
||
"saveFailed": "Échec de l’enregistrement de la chaîne",
|
||
"resetDefaults": "Réinitialiser",
|
||
"resetConfirmTitle": "Réinitialiser la chaîne aux valeurs par défaut ?",
|
||
"resetConfirmBody": "La chaîne revient à Codex → OpenAI → Anthropic → Local → OpenAI administrateur. Vos identifiants enregistrés ne sont pas affectés."
|
||
},
|
||
"activeProviderHeading": "Fournisseur actif",
|
||
"activeProviderLabel": "Configurer un fournisseur",
|
||
"providerSelect": {
|
||
"codex": "Compte ChatGPT (Codex)",
|
||
"openai": "OpenAI (votre clé API)",
|
||
"anthropic": "Anthropic (Claude)",
|
||
"local": "Modèle local (compatible OpenAI)",
|
||
"openai-compatible": "Passerelle compatible OpenAI",
|
||
"admin-openai": "OpenAI fourni par l’administrateur"
|
||
},
|
||
"compat": {
|
||
"description": "Un fournisseur à part entière pour tout point de terminaison qui parle l'API /v1/chat/completions d'OpenAI : LiteLLM, OpenRouter, vLLM ou une autre passerelle. L'URL de base se termine par /v1, la clé API est facultative et le modèle est celui que votre passerelle achemine. Votre clé OpenAI n'atteint jamais ce point de terminaison : ce fournisseur a la sienne.",
|
||
"keyLabel": "Clé API (facultative)",
|
||
"modelHint": "Le nom de modèle attendu par votre passerelle. Laissé vide, le modèle enregistré pour vos autres fournisseurs est utilisé ; si aucun n'est défini, ce fournisseur est ignoré."
|
||
},
|
||
"openai": {
|
||
"modelSelect": "Modèle",
|
||
"modelOptionCustom": "Slug personnalisé…",
|
||
"modelCustomLabel": "Slug du modèle personnalisé",
|
||
"modelCustomPlaceholder": "gpt-5",
|
||
"baseUrlLabel": "URL de base (avancé)",
|
||
"baseUrlPlaceholder": "https://api.openai.com/v1",
|
||
"baseUrlHelp": "À remplacer uniquement si vous utilisez une passerelle compatible OpenAI. Laissez vide pour OpenAI lui-même.",
|
||
"showAdvanced": "Afficher les options avancées",
|
||
"hideAdvanced": "Masquer les options avancées",
|
||
"apiKey": "Clé API",
|
||
"apiKeyPlaceholder": "sk-…"
|
||
},
|
||
"codex": {
|
||
"statusConnected": "Connecté",
|
||
"statusDisconnected": "Non connecté",
|
||
"statusExpired": "Connexion expirée",
|
||
"connectButton": "Se connecter avec ChatGPT",
|
||
"disconnectButton": "Déconnecter",
|
||
"disconnectTitle": "Déconnecter ChatGPT ?",
|
||
"disconnectBody": "La connexion enregistrée est supprimée, ainsi que le texte de vos analyses en cache. Se reconnecter suppose de refaire l’authentification par code d’appareil.",
|
||
"disconnectConfirm": "Déconnecter",
|
||
"modelSlugLabel": "Slug du modèle",
|
||
"modelSlugBody": "Codex utilise le modèle vers lequel votre abonnement ChatGPT route. La variable d’environnement CODEX_MODEL permet à l’opérateur de le remplacer sur l’instance.",
|
||
"lastInsight": "Dernière analyse : {when}"
|
||
},
|
||
"adminOpenai": {
|
||
"title": "OpenAI administrateur",
|
||
"body": "Clé OpenAI fournie par l’opérateur, utilisée en dernier recours sans fournisseur personnel. Rien à configurer ici.",
|
||
"notConfigured": "L’opérateur n’a pas configuré de clé OpenAI partagée sur cette instance."
|
||
},
|
||
"testProvider": "Tester le fournisseur actif",
|
||
"testSuccess": "OK : {provider} ({model})",
|
||
"testFailedShort": "Échec du test : {message}",
|
||
"testUnexpectedResponse": "Échec de la connexion au fournisseur d’IA : réponse inattendue du serveur.",
|
||
"testReasonCredentials": "Le fournisseur a rejeté les identifiants. Réauthentifiez-vous dans les réglages IA.",
|
||
"testReasonRateLimited": "Le fournisseur a limité la requête. Réessayez sous peu.",
|
||
"testReasonServerError": "Le fournisseur d’IA a renvoyé une erreur serveur.",
|
||
"testReasonBadRequest": "Le fournisseur a rejeté la requête (HTTP {status}). Le point de terminaison a répondu ; le problème vient donc du format de la requête ou du nom du modèle, pas de la connexion.",
|
||
"testReasonUnreachable": "Impossible de joindre le fournisseur d’IA.",
|
||
"coachMemory": {
|
||
"title": "Ce dont le Coach se souvient",
|
||
"description": "Les informations durables que vous avez confiées au Coach.",
|
||
"empty": "Le Coach n'a encore enregistré aucune information. Au fil de vos échanges, il retient les détails durables que vous partagez (vos objectifs, vos affections, vos préférences) et vous pouvez les effacer ici à tout moment.",
|
||
"learnedPrefix": "appris {when}",
|
||
"categoryPreference": "Préférences",
|
||
"categoryCondition": "Affections",
|
||
"categoryGoal": "Objectifs",
|
||
"categoryConstraint": "Contraintes",
|
||
"categoryContext": "Contexte",
|
||
"forgetAria": "Oublier cette information",
|
||
"forgetTitle": "Oublier ce fait ?",
|
||
"forgetBody": "Le Coach cesse de l’utiliser dès le message suivant. Un fait oublié ne peut pas être récupéré.",
|
||
"forgetConfirm": "Oublier",
|
||
"forgetAll": "Tout oublier",
|
||
"forgetAllConfirmTitle": "Oublier tout ce dont le Coach se souvient ?",
|
||
"forgetAllConfirmBody": "Cela supprime toutes les informations enregistrées. Le Coach repartira de zéro lors de votre prochaine conversation. Cette action est irréversible.",
|
||
"forgetAllConfirmAction": "Tout oublier",
|
||
"cancel": "Annuler",
|
||
"summaryNote": "Le Coach peut aussi conserver un bref résumé évolutif de chaque conversation. Il n'existe pas de commande individuelle pour cela : supprimer une conversation supprime son résumé.",
|
||
"loadError": "Impossible de charger ce dont le Coach se souvient.",
|
||
"forgotToast": "Information oubliée.",
|
||
"forgotError": "Impossible d'oublier cette information. Veuillez réessayer.",
|
||
"clearedToast": "{count} informations enregistrées oubliées.",
|
||
"clearError": "Impossible d'effacer les informations enregistrées. Veuillez réessayer.",
|
||
"detail": "Il s'en sert pour garder ses réponses pertinentes. Supprimez tout ce qu'il vaut mieux qu'il oublie.",
|
||
"categoryMedication": "Médicaments"
|
||
},
|
||
"coachReminders": {
|
||
"title": "Tes rappels",
|
||
"description": "Les choses que tu as demandé au Coach de te rappeler plus tard.",
|
||
"empty": "Aucun rappel pour l'instant. Demande au Coach de te rappeler quelque chose et cela apparaîtra ici.",
|
||
"loadError": "Impossible de charger tes rappels.",
|
||
"dueHeading": "À échéance",
|
||
"allHeading": "Enregistrés",
|
||
"duePrefix": "à échéance {when}",
|
||
"confirm": "Garder",
|
||
"markDone": "Terminé",
|
||
"dismiss": "Ignorer",
|
||
"deleteAria": "Supprimer ce rappel",
|
||
"note": "Les rappels sont stockés chiffrés. Supprime-en un à tout moment : il disparaît de ce que le Coach peut voir.",
|
||
"status": {
|
||
"proposed": "Suggéré",
|
||
"active": "Enregistré",
|
||
"due": "À échéance",
|
||
"surfaced": "Affiché",
|
||
"done": "Terminé",
|
||
"dismissed": "Ignoré"
|
||
},
|
||
"deleteConfirmTitle": "Supprimer ce rappel ?",
|
||
"deleteConfirmBody": "Il ne se déclenchera plus. Ce que tu as déjà enregistré reste intact.",
|
||
"deleteConfirmAction": "Supprimer",
|
||
"detail": "Celles qui arrivent à échéance apparaissent ici et chez le Coach.",
|
||
"readOnlyNote": "Le Coach n'est pas disponible pour le moment, mais tu peux toujours lire et supprimer tes rappels."
|
||
},
|
||
"aboutMe": {
|
||
"title": "À propos de moi",
|
||
"description": "Contexte personnel que le Coach et le briefing quotidien lisent en plus de vos données.",
|
||
"placeholder": "Ex. travail posté, régime végétarien, blessure au genou, entraînement pour un semi-marathon…",
|
||
"charCount": "{used} / {max} caractères",
|
||
"clear": "Vider",
|
||
"clearTitle": "Vider la note « À propos de moi » ?",
|
||
"clearBody": "Seul le texte libre est supprimé. Vos allergies et intolérances restent inchangées.",
|
||
"clearConfirm": "Vider la note",
|
||
"save": "Enregistrer",
|
||
"savedToast": "Note « À propos de moi » enregistrée",
|
||
"clearedToast": "Note « À propos de moi » supprimée.",
|
||
"saveError": "Impossible d'enregistrer. Veuillez réessayer.",
|
||
"loadError": "Impossible de charger la note.",
|
||
"hint": "Transmis au Coach et au briefing quotidien comme contexte supplémentaire. Laissez vide pour ne rien envoyer.",
|
||
"profileHint": "L'âge et le genre proviennent de votre profil et sont inclus automatiquement.",
|
||
"freeTextLabel": "À propos de moi (texte libre)",
|
||
"conditionsPlaceholder": "P. ex. hypertension, diabète de type 2…",
|
||
"allergiesPlaceholder": "P. ex. intolérance au lactose, allergie à la pénicilline…",
|
||
"focusPlaceholder": "P. ex. surveille ma tension, motive-moi à bouger davantage…",
|
||
"questionsTitle": "Le Coach a des questions",
|
||
"questionsOpenCoach": "Y répondre dans le Coach"
|
||
},
|
||
"responseTimeoutHeading": "Délai de réponse",
|
||
"responseTimeoutBody": "Durée d'attente de la réponse de l'IA avant d'abandonner. Augmentez-la pour un modèle local ou auto-hébergé qui a besoin de temps pour se charger à la première requête. Sans valeur, une réponse peut prendre {seconds} s ; le briefing quotidien jusqu'à {briefingSeconds} s.",
|
||
"responseTimeoutLabel": "Délai de réponse (secondes)",
|
||
"responseTimeoutPlaceholder": "Par défaut ({seconds} s)",
|
||
"responseTimeoutInvalid": "Saisissez un nombre entre 10 et 600 secondes.",
|
||
"autoRead": {
|
||
"title": "Lire les documents automatiquement avec l'IA",
|
||
"subLabel": "Les documents sont lus et indexés par votre fournisseur d'IA configuré, sans validation document par document.",
|
||
"honesty": "Lorsque cette option est activée, chaque document que vous téléversez est envoyé à votre fournisseur d'IA configuré pour être lu, décrit et indexé pour la recherche, sans confirmation par document. L'activation agit aussi rétroactivement : les documents que vous avez déjà téléversés et qui n'ont pas encore de résumé sont envoyés eux aussi, jusqu'à 200 à chaque activation. Cela se produit sur le serveur et le contenu du document quitte cette machine vers ce fournisseur. Si votre fournisseur configuré est une connexion par abonnement (un compte d'IA connecté plutôt qu'une clé API), ses propres paramètres de données s'appliquent : les fournisseurs par abonnement peuvent utiliser le contenu pour améliorer leurs modèles, et aucun accord de traitement des données ne le couvre. Les documents lus par un modèle local auto-hébergé ne quittent jamais votre serveur. Désactivé par défaut ; activez-le uniquement si vous acceptez ce compromis pour vos documents.",
|
||
"confirm": "Compris, activer",
|
||
"cancel": "Annuler",
|
||
"restingFrugal": "En pause au niveau d'IA économe : les documents ne sont lus qu'à votre demande."
|
||
},
|
||
"centralCodex": {
|
||
"title": "Utiliser l'accès IA partagé du serveur",
|
||
"subLabel": "Les requêtes IA passent par la connexion partagée du serveur, vos propres fournisseurs servant de repli.",
|
||
"honesty": "L'accès partagé est un unique compte IA connecté que l'opérateur a relié pour tout le monde sur ce serveur, et non votre propre clé. Les requêtes que vous y faites servent par défaut à entraîner les modèles du fournisseur et aucun accord de traitement des données ne les couvre, les limites horaires et hebdomadaires du compte sont partagées avec tous les autres qui ont accepté, et vos propres fournisseurs sont essayés en premier. Ne l'activez que si vous acceptez ce compromis.",
|
||
"confirm": "Compris, utiliser la connexion",
|
||
"cancel": "Annuler"
|
||
},
|
||
"consent": {
|
||
"title": "Consentement IA",
|
||
"activeSince": "Donné le {date} : vos données de santé peuvent être transmises au fournisseur configuré pour les fonctions IA.",
|
||
"withdraw": "Retirer le consentement",
|
||
"confirmBody": "Sauf si un autre consentement les couvre encore, ceci s'arrête immédiatement : le Coach et Insights lorsqu'ils utilisent l'accès IA fourni par ce serveur, et la lecture de documents par un modèle en ligne. Avec votre propre clé ou un modèle local, le Coach et Insights continuent de fonctionner. Sauf si un autre consentement couvre encore Insights, les notes qu'un modèle a écrites pour vous sont supprimées : notes d'état, briefing quotidien, résumés de période écrits par un modèle, lignes d'arrivée et notes d'entraînement. Vos conversations avec le Coach, ce que le Coach a retenu, vos plans et les résumés de vos documents sont conservés, et vous pouvez les lire ou les supprimer vous-même.",
|
||
"confirmWithdraw": "Retirer",
|
||
"grantError": "Le consentement n'a pas pu être enregistré. Réessaie.",
|
||
"error": "Le retrait n'a pas pu être enregistré. Réessaie.",
|
||
"documentReading": {
|
||
"title": "Consentement à la lecture de documents",
|
||
"activeSince": "Donné le {date} : documents, analyses numérisées et textes de médicaments peuvent être lus par votre service d'IA.",
|
||
"confirmBody": "Les documents, les comptes rendus d'analyses numérisés et les descriptions de médicaments ne sont plus envoyés pour lecture. Rien de ce que vous avez déjà n'est supprimé."
|
||
},
|
||
"activeSinceNamed": "Donné le {date} : vos données de santé peuvent être transmises à {providers} pour les fonctions IA.",
|
||
"activeUndated": "Donné : vos données de santé peuvent être transmises au fournisseur configuré pour les fonctions IA.",
|
||
"request": {
|
||
"title": "Votre accord avant que l'IA ne démarre",
|
||
"body": "L'IA de ce serveur passe par un service fourni par l'opérateur : {providers}. Rien de vos données n'y part tant que vous n'avez pas donné votre accord.",
|
||
"data": "Une fois votre accord donné, HealthLog envoie à ce service ce dont les fonctions IA ont besoin : mesures comme le poids, la tension, le pouls, le sommeil et l'activité, vos médicaments, votre humeur, vos résultats d'analyses et votre cycle si vous les suivez, ce que vous écrivez dans votre profil et au Coach, et les documents que vous choisissez de faire lire. Le service s'en sert pour rédiger votre briefing du jour, les notes sur vos mesures et les réponses du Coach.",
|
||
"withdrawHint": "Vous pouvez retirer votre accord à tout moment dans Réglages, IA. Plus rien n'est envoyé à partir de là.",
|
||
"agree": "J'accepte",
|
||
"dismiss": "Pas maintenant"
|
||
}
|
||
},
|
||
"operatorOff": {
|
||
"allTitle": "L'IA est désactivée sur ce serveur",
|
||
"allBody": "La personne qui gère ce serveur a désactivé l'IA. HealthLog continue de fonctionner avec toutes vos données ; les fonctions qui ont besoin de l'IA ne sont simplement pas affichées.",
|
||
"someTitle": "Certaines fonctions d'IA sont désactivées sur ce serveur",
|
||
"someBody": "La personne qui gère ce serveur a désactivé : {switches}. Tout le reste, y compris toutes vos données, fonctionne normalement.",
|
||
"testRefused": "L'IA est désactivée sur ce serveur, il n'y a donc rien à tester.",
|
||
"autoRead": "La lecture de documents par IA est désactivée sur ce serveur."
|
||
},
|
||
"coachConversations": {
|
||
"title": "Conversations avec le Coach",
|
||
"description": "Ouvrez une conversation pour la lire, ou supprimez-la.",
|
||
"more": "Afficher plus",
|
||
"openAll": "Ouvrir toutes les conversations"
|
||
},
|
||
"coachPlans": {
|
||
"title": "Plans du Coach",
|
||
"description": "Les plans convenus avec le Coach, à lire ou à supprimer.",
|
||
"open": "Ouvrir les plans"
|
||
},
|
||
"reasoning": {
|
||
"label": "Raisonnement",
|
||
"hint": "Les modèles de raisonnement comme Gemma ou Qwen réfléchissent avant de répondre. Désactivé, tout le budget de réponse sert à la réponse elle-même.",
|
||
"options": {
|
||
"default": "Par défaut",
|
||
"none": "Désactivé",
|
||
"low": "Faible",
|
||
"medium": "Moyen",
|
||
"high": "Élevé"
|
||
},
|
||
"coachNote": "Dans le Coach, c'est la profondeur de réflexion des réglages du Coach qui s'applique.",
|
||
"backgroundNote": "Les tâches de fond comme le briefing quotidien n'utilisent pas ce réglage : elles réfléchissent au plus en Moyen, moins si l'opérateur fixe une limite plus basse, et pas du tout au niveau Économe."
|
||
},
|
||
"providerCardDescription": "Configurez la clé et le modèle de chaque fournisseur ; l’ordre ci-dessous décide lequel HealthLog sollicite en premier.",
|
||
"runtimeTitle": "Vérifier et actualiser",
|
||
"usage": {
|
||
"title": "Usage de l'IA",
|
||
"description": "La quantité de travail d'IA effectuée en arrière-plan pour vous, le Coach restant le même à chaque niveau.",
|
||
"levels": {
|
||
"frugal": {
|
||
"label": "Économe",
|
||
"hint": "Les cartes se mettent à jour au plus une fois par jour après une synchronisation, un bilan quotidien court, les documents ne sont lus qu'à votre demande."
|
||
},
|
||
"standard": {
|
||
"label": "Standard",
|
||
"hint": "Les cartes se mettent à jour toutes les quelques heures après une synchronisation, le bilan quotidien complet."
|
||
},
|
||
"full": {
|
||
"label": "Complet",
|
||
"hint": "Les cartes se mettent à jour jusqu'à chaque heure avec de nouvelles données, comme avant ce réglage."
|
||
}
|
||
},
|
||
"limited": "Limité par l'administrateur du serveur.",
|
||
"estimate": "environ {tokens} jetons par jour, estimation",
|
||
"measured": "Mesuré : {tokens} jetons par jour sur les {days} derniers jours, Coach compris. Les chiffres par niveau sont des estimations.",
|
||
"noEstimate": "Une estimation par niveau apparaît après trois jours d'utilisation de l'IA.",
|
||
"capped": "Vous avez choisi {choice}, que le serveur n'autorise pas pour le moment, donc {level} s'applique. Votre choix est conservé.",
|
||
"followsDefault": "Vous suivez le réglage par défaut du serveur ({level}).",
|
||
"useDefault": "Utiliser le réglage par défaut du serveur ({level})",
|
||
"saveError": "Le niveau n'a pas pu être enregistré. Réessaie."
|
||
},
|
||
"removeKey": {
|
||
"label": "Supprimer la clé API",
|
||
"title": "Supprimer la clé API enregistrée ?",
|
||
"body": "HealthLog efface la clé enregistrée et ne peut pas la récupérer. Saisissez-la de nouveau pour continuer à l’utiliser.",
|
||
"confirm": "Supprimer la clé API",
|
||
"done": "Clé API supprimée.",
|
||
"failed": "Impossible de supprimer la clé API."
|
||
}
|
||
},
|
||
"dashboard": {
|
||
"units": {
|
||
"title": "Unités",
|
||
"description": "Choisissez l'affichage des distances et des vitesses dans les graphiques et les tuiles.",
|
||
"metric": "Métrique",
|
||
"imperial": "Impérial",
|
||
"saved": "Préférence d'unités enregistrée",
|
||
"saveError": "Impossible d'enregistrer votre préférence d'unités."
|
||
},
|
||
"glucoseUnit": {
|
||
"title": "Glycémie",
|
||
"description": "L'unité dans laquelle les mesures de glycémie sont affichées. L'enregistrement est le même dans les deux cas.",
|
||
"saved": "Unité de glycémie enregistrée",
|
||
"saveError": "Impossible d'enregistrer l'unité de glycémie."
|
||
}
|
||
},
|
||
"withings": "Withings",
|
||
"withingsDescription": "Connecte ta balance et ton tensiomètre Withings pour synchroniser automatiquement poids, composition corporelle et tension.",
|
||
"withingsCredentials": "Identifiants API",
|
||
"withingsClientId": "ID client",
|
||
"withingsClientSecret": "Secret client",
|
||
"withingsCredentialsSaved": "Identifiants enregistrés",
|
||
"withingsCredentialsSavedPlaceholder": "Enregistré. Saisissez-en un nouveau pour remplacer",
|
||
"withingsCredentialsSavedPlaceholderSecret": "Enregistré. Saisissez-en un nouveau pour remplacer",
|
||
"withingsSaveCredentials": "Enregistrer",
|
||
"configured": "Configuré",
|
||
"withingsSync": "Synchroniser maintenant",
|
||
"withingsFullSync": "Synchroniser toutes les données",
|
||
"withingsFullSyncTitle": "Synchronisation complète ?",
|
||
"withingsFullSyncDescription": "Toutes les données Withings disponibles seront entièrement synchronisées. Cela peut prendre un certain temps selon votre historique.",
|
||
"withingsSyncResult": "{count} mesures synchronisées",
|
||
"syncOutcome": {
|
||
"empty": "Rien de nouveau à importer. Tout est à jour.",
|
||
"failed": "Rien n'a été enregistré. La prochaine synchronisation réessaiera.",
|
||
"partial": "{count} mesures synchronisées. Une partie des données n'a pas pu être enregistrée ; la prochaine synchronisation réessaiera."
|
||
},
|
||
"withingsFullSyncResult": "{count} mesures entièrement synchronisées",
|
||
"withingsSyncFailed": "Échec de la synchronisation",
|
||
"withingsOauthConnected": "Withings connecté. La première synchronisation démarre en arrière-plan.",
|
||
"withingsOauthFailed": "Échec de la connexion Withings",
|
||
"withingsOauthError": {
|
||
"csrf1": "Le contrôle de sécurité a échoué car le cookie du navigateur manquait. Relancez la connexion dans le même navigateur.",
|
||
"replay": "Ce lien de confirmation a déjà été utilisé. Relancez la connexion.",
|
||
"state": "La réponse de Withings ne correspond à aucune demande de connexion en cours. Relancez la connexion.",
|
||
"expired": "La demande de connexion a expiré. Relancez la connexion et terminez l'autorisation en quelques minutes.",
|
||
"cross_user": "La réponse appartient à une demande d'un autre compte. Relancez la connexion depuis votre propre compte.",
|
||
"nocode": "Withings n'a renvoyé aucun code d'autorisation. Réessayez et autorisez l'accès dans la fenêtre Withings.",
|
||
"nocreds": "Aucun identifiant d'API Withings n'est enregistré. Enregistrez d'abord le Client ID et le Client Secret, puis reconnectez.",
|
||
"token": "L'échange de jetons avec Withings a échoué. Vérifiez le Client ID et le Client Secret, puis réessayez.",
|
||
"generic": "Erreur inconnue lors de la connexion. Relancez la connexion.",
|
||
"already_linked": "Ce compte Withings est déjà connecté à un autre profil HealthLog. Connecte-toi à Withings avec le compte de ce profil, ou déconnecte-le d'abord de l'autre profil."
|
||
},
|
||
"withingsSynchronize": "Synchroniser",
|
||
"withingsDisconnect": "Déconnecter",
|
||
"withingsDisconnectTitle": "Déconnecter Withings ?",
|
||
"withingsDisconnectDescription": "La connexion à Withings sera déconnectée. Les données déjà synchronisées seront conservées.",
|
||
"withingsConnect": "Se connecter avec Withings",
|
||
"withingsNoCredentials": "Saisissez d’abord vos identifiants API ci-dessus pour connecter Withings.",
|
||
"whoop": "WHOOP",
|
||
"whoopDescription": "Connecte ton bracelet WHOOP pour synchroniser récupération, sommeil, charge et entraînements directement dans HealthLog.",
|
||
"whoopCredentials": "Identifiants API",
|
||
"whoopClientId": "Client ID",
|
||
"whoopClientSecret": "Client Secret",
|
||
"whoopCredentialsSaved": "Identifiants enregistrés",
|
||
"whoopCredentialsSavedPlaceholder": "Enregistré. Saisir de nouveaux pour remplacer",
|
||
"whoopCredentialsSavedPlaceholderSecret": "Enregistré. Saisir de nouveaux pour remplacer",
|
||
"whoopSaveCredentials": "Enregistrer",
|
||
"whoopSync": "Synchroniser",
|
||
"whoopFullSync": "Synchroniser toutes les données",
|
||
"whoopFullSyncTitle": "Synchronisation complète ?",
|
||
"whoopFullSyncDescription": "Tout l'historique WHOOP disponible sera entièrement synchronisé. Cela peut prendre du temps selon votre historique.",
|
||
"whoopSyncResult": "{count} mesures synchronisées",
|
||
"whoopSyncFailed": "Échec de la synchronisation",
|
||
"whoopSynchronize": "Synchroniser",
|
||
"whoopDisconnect": "Déconnecter",
|
||
"whoopDisconnectTitle": "Déconnecter WHOOP ?",
|
||
"whoopDisconnectDescription": "La connexion à WHOOP sera déconnectée. Les données déjà synchronisées seront conservées.",
|
||
"whoopConnect": "Se connecter avec WHOOP",
|
||
"whoopNoCredentials": "Veuillez saisir vos identifiants API ci-dessus pour connecter WHOOP.",
|
||
"whoopOauthConnected": "WHOOP connecté. La première synchronisation démarre en arrière-plan.",
|
||
"whoopOauthFailed": "Échec de la connexion à WHOOP",
|
||
"whoopOauthError": {
|
||
"csrf1": "La vérification de sécurité a échoué car le cookie du navigateur était absent. Veuillez relancer la connexion dans le même navigateur.",
|
||
"state": "La réponse de WHOOP ne correspondait à aucune demande de connexion en cours. Veuillez relancer la connexion.",
|
||
"expired": "La demande de connexion a expiré avant d'aboutir. Veuillez relancer la connexion.",
|
||
"cross_user": "La réponse appartient à une demande d'un autre compte. Veuillez relancer la connexion depuis votre propre compte.",
|
||
"nocode": "WHOOP n'a pas renvoyé de code d'autorisation. Réessayez et autorisez l'accès dans la fenêtre WHOOP.",
|
||
"nocreds": "WHOOP n'est pas configuré. Ajoutez vos identifiants OAuth WHOOP ci-dessus et réessayez.",
|
||
"token": "L'échange de jeton avec WHOOP a échoué. Veuillez relancer la connexion.",
|
||
"generic": "Erreur inconnue lors de la connexion. Veuillez relancer la connexion.",
|
||
"already_linked": "Ce compte WHOOP est déjà connecté à un autre profil HealthLog. Connecte-toi à WHOOP avec le compte de ce profil, ou déconnecte-le d'abord de l'autre profil."
|
||
},
|
||
"fitbit": "Fitbit",
|
||
"fitbitTag": "Fitbit et Pixel",
|
||
"fitbitDescription": "Connecte Fitbit pour synchroniser tes données Fitbit et Pixel Watch : poids, fréquence cardiaque et plus.",
|
||
"fitbitExperimentalBadge": "Expérimental",
|
||
"fitbitCredentials": "Identifiants d'API",
|
||
"fitbitClientId": "Client ID",
|
||
"fitbitClientSecret": "Client Secret",
|
||
"fitbitCredentialsSaved": "Identifiants enregistrés",
|
||
"fitbitCredentialsSavedPlaceholder": "Enregistré. Saisissez-en de nouveaux pour remplacer",
|
||
"fitbitCredentialsSavedPlaceholderSecret": "Enregistré. Saisissez-en de nouveaux pour remplacer",
|
||
"fitbitSaveCredentials": "Enregistrer",
|
||
"fitbitSync": "Synchroniser maintenant",
|
||
"fitbitFullSync": "Tout synchroniser",
|
||
"fitbitFullSyncTitle": "Synchronisation complète ?",
|
||
"fitbitFullSyncDescription": "Tout l'historique Fitbit disponible sera entièrement synchronisé. Cela peut prendre un certain temps selon votre historique.",
|
||
"fitbitSyncResult": "{count} mesures synchronisées",
|
||
"fitbitSyncFailed": "Échec de la synchronisation",
|
||
"fitbitSynchronize": "Synchroniser",
|
||
"fitbitDisconnect": "Déconnecter",
|
||
"fitbitDisconnectTitle": "Déconnecter Fitbit ?",
|
||
"fitbitDisconnectDescription": "La connexion à Fitbit sera déconnectée. Les données déjà synchronisées seront conservées.",
|
||
"fitbitConnect": "Se connecter à Fitbit",
|
||
"fitbitNoCredentials": "Veuillez saisir vos identifiants d'API ci-dessus pour connecter Fitbit.",
|
||
"fitbitOauthConnected": "Fitbit connecté. La première synchronisation démarre en arrière-plan.",
|
||
"fitbitOauthFailed": "Échec de la connexion à Fitbit",
|
||
"googleHealth": "Google Health",
|
||
"googleHealthTag": "Fitbit et Pixel",
|
||
"googleHealthBetaBadge": "Bêta",
|
||
"googleHealthDescription": "Connecte Fitbit, Pixel Watch et Fitbit Air via ton compte Google : poids, fréquence cardiaque, sommeil et activité. Cela remplace la connexion Fitbit classique, que Google arrête en septembre 2026.",
|
||
"googleHealthCredentials": "Identifiants d'API",
|
||
"googleHealthClientId": "ID client",
|
||
"googleHealthClientSecret": "Secret client",
|
||
"googleHealthCredentialsSaved": "Identifiants enregistrés",
|
||
"googleHealthCredentialsSavedPlaceholder": "Enregistré. Saisir de nouveaux pour remplacer",
|
||
"googleHealthCredentialsSavedPlaceholderSecret": "Enregistré. Saisir de nouveaux pour remplacer",
|
||
"googleHealthSaveCredentials": "Enregistrer",
|
||
"googleHealthSync": "Synchroniser maintenant",
|
||
"googleHealthSyncCheckStatus": "Actualiser le statut",
|
||
"googleHealthFullSync": "Synchroniser toutes les données",
|
||
"googleHealthFullSyncTitle": "Synchronisation complète ?",
|
||
"googleHealthFullSyncDescription": "Tout l'historique Google Health disponible sera entièrement synchronisé. Cela peut prendre un certain temps selon ton historique.",
|
||
"googleHealthSyncResult": "{count} mesures synchronisées",
|
||
"googleHealthSyncFailed": "Échec de la synchronisation",
|
||
"googleHealthSyncInProgress": "Synchronisation en cours : {count} mesures enregistrées, {completed} zones traitées sur {total}.",
|
||
"googleHealthResourceFailuresTitle": "Ces zones nécessitent encore votre attention :",
|
||
"googleHealthResource": {
|
||
"workout": "Entraînements",
|
||
"sleep": "Sommeil",
|
||
"boundedMetrics": "Mesures de santé",
|
||
"activity": "Activité",
|
||
"heartRate": "Fréquence cardiaque",
|
||
"other": "Autres données"
|
||
},
|
||
"googleHealthReason": {
|
||
"collectionFailed": "Google n’a pas pu fournir ces données. Réessayez la synchronisation plus tard.",
|
||
"tokenFailed": "La connexion a expiré. Reconnectez Google Health.",
|
||
"upsertFailed": "Les données n’ont pas pu être enregistrées. Réessayez la synchronisation.",
|
||
"rollupFailed": "Les données ont été reçues, mais leur synthèse n’est pas encore actualisée. Réessayez plus tard.",
|
||
"pageLimit": "Seule une partie de l’historique disponible a été traitée. Une autre synchronisation continuera.",
|
||
"generic": "Cette zone n’a pas été entièrement synchronisée. Réessayez."
|
||
},
|
||
"googleHealthSynchronize": "Synchroniser",
|
||
"googleHealthDisconnect": "Déconnecter",
|
||
"googleHealthDisconnectTitle": "Déconnecter Google Health ?",
|
||
"googleHealthDisconnectDescription": "La connexion à Google Health sera déconnectée. Les données déjà synchronisées seront conservées.",
|
||
"googleHealthConnect": "Se connecter avec Google",
|
||
"googleHealthNoCredentials": "Saisis tes identifiants d'API ci-dessus pour connecter Google Health.",
|
||
"googleHealthOauthConnected": "Google Health connecté. La première synchronisation démarre en arrière-plan.",
|
||
"googleHealthOauthFailed": "Échec de la connexion à Google Health",
|
||
"googleHealthOauthError": {
|
||
"csrf1": "La vérification de sécurité a échoué car le cookie du navigateur était manquant. Relance la connexion dans le même navigateur.",
|
||
"state": "La réponse de Google ne correspondait à aucune demande de connexion ouverte. Relance la connexion.",
|
||
"expired": "La demande de connexion a expiré avant d'aboutir. Relance la connexion.",
|
||
"cross_user": "La réponse appartient à une demande d'un autre compte. Relance la connexion depuis ton propre compte.",
|
||
"nocode": "Google n'a pas renvoyé de code d'autorisation. Réessaie et autorise l'accès dans la fenêtre Google.",
|
||
"nocreds": "Google Health n'est pas configuré. Ajoute tes identifiants OAuth Google ci-dessus et réessaie.",
|
||
"token": "L'échange de jeton avec Google a échoué. Relance la connexion.",
|
||
"generic": "Erreur inconnue lors de la connexion. Relance la connexion.",
|
||
"already_linked": "Ce compte Google est déjà connecté à un autre profil HealthLog. Connecte-toi à Google avec le compte de ce profil, ou déconnecte-le d'abord de l'autre profil."
|
||
},
|
||
"fitbitOauthError": {
|
||
"csrf1": "La vérification de sécurité a échoué car le cookie du navigateur était absent. Veuillez relancer la connexion dans le même navigateur.",
|
||
"state": "La réponse de Fitbit ne correspondait à aucune demande de connexion en cours. Veuillez relancer la connexion.",
|
||
"expired": "La demande de connexion a expiré avant d'aboutir. Veuillez relancer la connexion.",
|
||
"cross_user": "La réponse appartient à une demande d'un autre compte. Veuillez relancer la connexion depuis votre propre compte.",
|
||
"nocode": "Fitbit n'a pas renvoyé de code d'autorisation. Réessayez et autorisez l'accès dans la fenêtre Fitbit.",
|
||
"nocreds": "Fitbit n'est pas configuré. Ajoutez vos identifiants OAuth Fitbit ci-dessus et réessayez.",
|
||
"token": "L'échange de jeton avec Fitbit a échoué. Veuillez relancer la connexion.",
|
||
"generic": "Erreur inconnue lors de la connexion. Veuillez relancer la connexion.",
|
||
"retired": "Google a désactivé l'API Web Fitbit : il n'est plus possible de créer une nouvelle connexion Fitbit. Connectez plutôt Google Health, qui lit les mêmes appareils.",
|
||
"already_linked": "Ce compte Fitbit est déjà connecté à un autre profil HealthLog. Connecte-toi à Fitbit avec le compte de ce profil, ou déconnecte-le d'abord de l'autre profil."
|
||
},
|
||
"integrations": {
|
||
"withings": {
|
||
"plan": {
|
||
"link": "En savoir plus sur les offres API de Withings",
|
||
"items": {
|
||
"spo2": "la SpO2",
|
||
"vascularAge": "l’âge vasculaire",
|
||
"pulseWaveVelocity": "la vitesse de l’onde de pouls",
|
||
"vo2Max": "la VO2 max",
|
||
"visceralFat": "la graisse viscérale",
|
||
"skinTemperature": "la température cutanée",
|
||
"ecg": "l’ECG et la fibrillation auriculaire",
|
||
"sleepScore": "le score de sommeil",
|
||
"sleepHrv": "la VFC nocturne",
|
||
"sleepHeartRate": "la fréquence cardiaque nocturne",
|
||
"sleepRespiratoryRate": "la fréquence respiratoire nocturne",
|
||
"sleepSpo2": "la SpO2 nocturne",
|
||
"bodyTemperature": "la température corporelle",
|
||
"bodyFat": "le taux de graisse corporelle",
|
||
"fatMass": "la masse grasse",
|
||
"fatFreeMass": "la masse maigre",
|
||
"muscleMass": "la masse musculaire",
|
||
"bodyWater": "l’eau corporelle",
|
||
"boneMass": "la masse osseuse",
|
||
"heartRate": "la fréquence cardiaque",
|
||
"bloodPressure": "la tension artérielle",
|
||
"weight": "le poids"
|
||
}
|
||
}
|
||
},
|
||
"oura": {
|
||
"scope": {
|
||
"items": {
|
||
"vo2max": "la VO2 max",
|
||
"cardio_age": "l’âge cardiovasculaire",
|
||
"resilience": "la résilience",
|
||
"workout": "les entraînements",
|
||
"heartrate": "la fréquence cardiaque"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"integrationPill": {
|
||
"justNow": "à l’instant",
|
||
"minutesAgo": "il y a {count} min",
|
||
"hoursAgo": "il y a {count} h",
|
||
"daysAgo": "il y a {count} j",
|
||
"resumeSuccess": "Intégration reprise",
|
||
"resumeError": "Échec de la reconnexion"
|
||
},
|
||
"integrationFreshness": {
|
||
"title": "Données reçues",
|
||
"summary": "{count} types de données, plus récent {relative}",
|
||
"quiet": "{count} silencieux",
|
||
"workouts": "Séances",
|
||
"medicationDoses": "Prises de médicaments"
|
||
},
|
||
"integrationFallback": {
|
||
"description": "Configuré sur ce compte sans carte de réglages dédiée."
|
||
},
|
||
"withingsViewData": "Voir vos mesures",
|
||
"whoopViewData": "Voir votre récupération",
|
||
"fitbitViewData": "Voir votre sommeil",
|
||
"googleHealthViewData": "Voir vos pas",
|
||
"apiTokens": "Jetons API",
|
||
"apiTokensDescription": "Consultez et révoquez les jetons des mesures, entraînements, documents et prises de médicaments.",
|
||
"measurementsToken": {
|
||
"title": "Jetons de mesures",
|
||
"description": "Créez un jeton pour qu'une balance, une montre ou votre domotique ajoutent des mesures.",
|
||
"detail": "Le jeton n'est affiché qu'une fois.",
|
||
"scopeNote": "Il peut uniquement ajouter de nouvelles mesures à votre propre dossier : il ne peut pas lire vos données, ni modifier ou supprimer quoi que ce soit, ni créer un autre jeton. Les mesures sont signalées comme provenant d'un appareil externe, ce qui vous permet de les reconnaître plus tard, et vous pouvez toujours les corriger.",
|
||
"createFailed": "Le jeton n'a pas pu être créé. Veuillez réessayer.",
|
||
"namePlaceholder": "Nom, p. ex. Home Assistant"
|
||
},
|
||
"workoutsToken": {
|
||
"title": "Jetons d'entraînements",
|
||
"description": "Créez un jeton pour qu'une passerelle de montre ou un script de synchronisation ajoutent vos entraînements.",
|
||
"detail": "Le jeton n'est affiché qu'une fois.",
|
||
"scopeNote": "Il peut uniquement ajouter de nouveaux entraînements à votre propre dossier. Il ne peut pas lire vos données, ni modifier ou supprimer quoi que ce soit, ni créer un autre jeton. Les entraînements qu'il ajoute sont signalés comme provenant d'un appareil externe, et si votre téléphone a enregistré la même séance, c'est la copie du téléphone que vous voyez.",
|
||
"createFailed": "Le jeton n'a pas pu être créé. Veuillez réessayer.",
|
||
"namePlaceholder": "Nom, p. ex. Garmin"
|
||
},
|
||
"documentsToken": {
|
||
"title": "Jetons de documents",
|
||
"description": "Créez un jeton pour que Paperless-ngx, Papra ou le script d'import ajoutent des documents à votre coffre.",
|
||
"detail": "Le jeton n'est affiché qu'une fois.",
|
||
"scopeNote": "Il peut uniquement ajouter de nouveaux documents à votre propre coffre. Il ne peut rien lister, ouvrir, télécharger, modifier ou supprimer, ni créer un autre jeton. Il apprend seulement si un fichier a été enregistré, pas comment vous l'avez classé.",
|
||
"createFailed": "Le jeton n'a pas pu être créé. Veuillez réessayer.",
|
||
"namePlaceholder": "Nom, p. ex. Paperless-ngx"
|
||
},
|
||
"tokenMintMovedDescription": "Les jetons sont émis là où ils s'appliquent : ci-dessus pour les mesures, les entraînements et les documents, ou dans le point de terminaison API d'un médicament pour ce seul médicament.",
|
||
"tokenCreated": "Jeton créé, copiez-le maintenant ! Il ne sera plus affiché.",
|
||
"tokenCopy": "Copier le jeton",
|
||
"tokenCopied": "Jeton copié dans le presse-papiers",
|
||
"tokenCopyFailed": "Impossible de copier le jeton",
|
||
"tokenRevokeFailed": "Impossible de révoquer le jeton. Veuillez réessayer.",
|
||
"tokenRevoke": "Révoquer le jeton ?",
|
||
"tokenRevokeAction": "Révoquer le jeton",
|
||
"tokenRevokeDescription": "Le jeton sera désactivé définitivement. Les applications qui l’utilisent perdront l’accès.",
|
||
"tokenRevoked": "Révoqué",
|
||
"tokenExpired": "Expiré",
|
||
"tokenActive": "Actif",
|
||
"activeTokensTitle": "Jetons actifs",
|
||
"revokedTokensTitle": "Jetons révoqués ({count})",
|
||
"tokenTableName": "Nom",
|
||
"tokenTablePermissions": "Autorisations",
|
||
"tokenTableStatus": "Statut",
|
||
"tokenTableCreated": "Créé",
|
||
"tokenTableLastUsed": "Dernière utilisation",
|
||
"tokenTableActions": "Actions",
|
||
"noActiveTokens": "Aucun jeton actif disponible.",
|
||
"tokenNeverUsed": "Jamais",
|
||
"apiEndpointsTitle": "Points de terminaison API",
|
||
"apiEndpointsDescription": "Aperçu des points de terminaison externes actuellement disponibles pour l’ingestion par jeton.",
|
||
"apiEndpointMethod": "Méthode",
|
||
"apiEndpointPath": "Chemin",
|
||
"apiEndpointAuth": "Authentification",
|
||
"apiEndpointExample": "Exemple de corps",
|
||
"dangerZone": "Supprimer toutes les données",
|
||
"dangerZoneDescription": "Efface l’intégralité de votre dossier de santé et toutes les connexions d’intégration.",
|
||
"dangerZoneConfirm": "Supprimer toutes les données ?",
|
||
"dangerZoneConfirmDescription": "Cette action supprime définitivement tout ce que contient votre dossier : mesures, médicaments, entrées d’humeur, résultats de laboratoire, entrées de cycle, documents, conversations avec l’IA et toutes les connexions d’intégration, ainsi que tout ce qui en découle et tout ce que vous aviez supprimé auparavant. Les liens de partage remis à un cabinet cessent aussitôt de fonctionner. Votre compte reste en place, de même que vos identifiants de connexion et vos réglages d’affichage comme la langue, le fuseau horaire et les unités. Cette action est irréversible.",
|
||
"dangerZoneSuccess": "Votre dossier de santé a été supprimé. Votre compte et votre connexion sont inchangés.",
|
||
"dangerZoneDeleteFailed": "Échec de la suppression",
|
||
"finalDelete": "Supprimer définitivement",
|
||
"deleteAccountCardTitle": "Supprimer entièrement le compte",
|
||
"deleteAccountCardDescription": "Supprime votre compte ainsi que les clés d’accès, le journal d’audit et les sessions.",
|
||
"deleteAccountCta": "Supprimer le compte",
|
||
"deleteAccountConfirmTitle": "Supprimer définitivement le compte ?",
|
||
"deleteAccountConfirmDescription": "Votre compte, toutes vos données de santé, vos clés d’accès, vos sessions et vos entrées d’audit seront définitivement supprimés. Vous serez déconnecté immédiatement après.",
|
||
"deleteAccountSuccess": "Compte supprimé, déconnexion en cours.",
|
||
"deleteAccountFailed": "Le compte n’a pas pu être supprimé",
|
||
"deleteAccountFinal": "Supprimer définitivement",
|
||
"saved": "Enregistré",
|
||
"savingError": "Erreur lors de l’enregistrement",
|
||
"about": {
|
||
"version": "Version de l’app",
|
||
"gitSha": "Build",
|
||
"builtAtLabel": "Compilé",
|
||
"license": "Licence",
|
||
"repository": "Code source",
|
||
"changelog": "Changelog",
|
||
"docs": "Documentation",
|
||
"credits": "Crédits et attributions de données",
|
||
"linksHeading": "Sources et documentation",
|
||
"newerAvailable": "Nouvelle version : {tag}",
|
||
"support": {
|
||
"title": "Assistance",
|
||
"description": "Un résumé pour un signalement de bug, sans votre nom, votre e-mail ni vos valeurs de santé.",
|
||
"copy": "Copier les infos d'assistance",
|
||
"copied": "Copié",
|
||
"copyFailed": "Les infos d'assistance n'ont pas pu être rassemblées."
|
||
}
|
||
},
|
||
"testConnection": {
|
||
"test": "Tester la connexion",
|
||
"saveFirst": "Enregistrez d’abord vos modifications. Le test utilise les réglages enregistrés.",
|
||
"testing": "Test en cours…",
|
||
"ok": "Connecté (latence {latency} ms)",
|
||
"errors": {
|
||
"credentials_rejected": "Identifiants rejetés : vérifiez votre jeton",
|
||
"rate_limited": "Limité par le service en amont",
|
||
"timeout": "Délai de la requête dépassé",
|
||
"upstream_error": "Le service en amont a renvoyé une erreur",
|
||
"upstream_rejected": "Le service distant a refusé le message",
|
||
"connection_failed": "Échec de la connexion",
|
||
"not_configured": "Non configuré",
|
||
"url_not_public": "L’URL n’est pas un point de terminaison public",
|
||
"private_origin_not_approved": "Cible sur un réseau privé. L’opérateur doit ajouter cette origine à NOTIFICATION_PRIVATE_ORIGINS",
|
||
"private_origin_not_grantable": "Cette adresse est une adresse de lien local, de métadonnées ou non spécifiée ; aucune autorisation de l’opérateur ne peut l’ouvrir. Utilisez l’adresse sur laquelle le relais écoute",
|
||
"url_invalid": "L’URL n’est pas valide",
|
||
"redirected": "Le point de terminaison redirige : vérifiez l’URL",
|
||
"endpoint_not_found": "Point de terminaison introuvable à l’URL",
|
||
"credentials_unreadable": "Les identifiants ne peuvent pas être déchiffrés",
|
||
"upstream_invalid_json": "Le service en amont a envoyé un JSON non valide",
|
||
"vapid_not_configured": "Web Push non configuré (clés VAPID manquantes)",
|
||
"rate_limited_self": "Trop de requêtes de test",
|
||
"generic": "Échec du test"
|
||
}
|
||
},
|
||
"notificationStatus": {
|
||
"title": "Fiabilité des canaux",
|
||
"description": "État de chaque canal ; « Désactivé automatiquement » signifie arrêté après des erreurs permanentes.",
|
||
"emptyDescription": "Ajoutez un canal dans Paramètres › Intégrations › Canaux de diffusion.",
|
||
"stateActive": "Actif",
|
||
"stateAutoDisabled": "Désactivé automatiquement",
|
||
"stateSendingPaused": "Envoi en pause",
|
||
"stateManuallyDisabled": "Désactivé",
|
||
"lastSuccess": "Dernier envoi réussi",
|
||
"lastFailure": "Dernier échec",
|
||
"consecutiveFailures": "Échecs consécutifs",
|
||
"disabledReason": "Raison",
|
||
"nextRetry": "Prochaine tentative",
|
||
"reEnable": "Réactiver",
|
||
"sendTest": "Envoyer un test",
|
||
"emptyTitle": "Aucun canal configuré pour l’instant"
|
||
},
|
||
"identity": {
|
||
"description": "Informations facultatives pour l’export du dossier de santé (couverture PDF + export FHIR). Tous les champs sont facultatifs.",
|
||
"fullName": "Nom complet",
|
||
"fullNamePlaceholder": "p. ex. Jeanne Dupont",
|
||
"insurer": "Assurance maladie",
|
||
"insurerPlaceholder": "p. ex. AOK Bayern",
|
||
"insuranceNumber": "Numéro d’assuré (KVNR)",
|
||
"insuranceNumberHint": "10 caractères : une lettre + neuf chiffres (p. ex. A123456780)."
|
||
},
|
||
"healthRecord": {
|
||
"title": "Exporter le dossier de santé",
|
||
"description": "Un dossier complet pour votre médecin, en PDF, en FHIR ou les deux.",
|
||
"format": "Format",
|
||
"format_pdf": "PDF",
|
||
"format_fhir": "Structuré (FHIR)",
|
||
"format_package": "Paquet : PDF + FHIR",
|
||
"range": "Période",
|
||
"range90": "90 derniers jours",
|
||
"range180": "6 derniers mois",
|
||
"range365": "12 derniers mois",
|
||
"practiceName": "Cabinet (facultatif)",
|
||
"practiceNamePlaceholder": "p. ex. Dr Dupont",
|
||
"includedData": "Données incluses",
|
||
"includeCharts": "Intégrer les graphiques de tendance (PDF uniquement)",
|
||
"fhirNote": "La sortie structurée suit la norme FHIR R4 (compatible ePA).",
|
||
"generate": "Générer",
|
||
"documentsLink": "Documents de la période",
|
||
"range30": "30 derniers jours",
|
||
"rangeCustom": "Période personnalisée",
|
||
"rangeCustomStart": "Du",
|
||
"rangeCustomEnd": "Au",
|
||
"errorGeneric": "L'export n'a pas pu être généré. Veuillez réessayer.",
|
||
"errorRateLimit": "Vous avez atteint la limite d'exports pour cette heure.",
|
||
"errorModuleDisabled": "L'export du dossier est désactivé pour ce compte.",
|
||
"visitOffer": "Un rendez-vous est prévu le {when} : {what}.",
|
||
"visitOfferApplyWindow": "Utiliser cette période"
|
||
},
|
||
"globalExcludedInjectionSitesLabel": "Sites d'injection exclus globalement",
|
||
"globalExcludedInjectionSitesHint": "Jamais proposés et refusés à l'enregistrement, même si un médicament les privilégie.",
|
||
"sharing": {
|
||
"createTitle": "Nouveau lien de partage",
|
||
"createDescription": "Le lien est en lecture seule et limité dans le temps.",
|
||
"label": "Libellé",
|
||
"labelPlaceholder": "ex. Dr Martin, bilan annuel",
|
||
"range": "Jours d'historique",
|
||
"rangeHint": "Jusqu'où remonte la fenêtre partagée.",
|
||
"expiry": "Expire dans (jours)",
|
||
"expiryHint": "Au plus {max} jours.",
|
||
"expiryInvalid": "L'expiration doit être comprise entre 1 et {max} jours.",
|
||
"create": "Créer le lien",
|
||
"tokenCreated": "Lien de partage créé",
|
||
"copied": "Copié dans le presse-papiers",
|
||
"activeTitle": "Liens actifs",
|
||
"noActive": "Aucun lien de partage actif.",
|
||
"created": "Créé",
|
||
"expires": "Expire",
|
||
"accessCount": "Vues",
|
||
"revoke": "Révoquer",
|
||
"revokeDescription": "Révoquez ce lien immédiatement. Quiconque le détient perd l'accès aussitôt. Action irréversible.",
|
||
"statusActive": "Actif",
|
||
"statusRevoked": "Révoqué",
|
||
"statusExpired": "Expiré",
|
||
"inactiveTitle": "Révoqués et expirés ({count})",
|
||
"shownOnce": "Affiché une seule fois. Enregistrez le code QR et la phrase secrète maintenant : ils ne pourront pas être récupérés ensuite.",
|
||
"qrAlt": "Code QR contenant le lien de partage et la phrase secrète",
|
||
"linkLabel": "Lien",
|
||
"passphraseLabel": "Phrase secrète",
|
||
"passphraseHint": "Le destinataire a besoin du lien et de cette phrase secrète. Le code QR contient les deux.",
|
||
"copyLink": "Copier le lien",
|
||
"copyPassphrase": "Copier la phrase secrète",
|
||
"protected": "Phrase secrète",
|
||
"attachTitle": "Joindre des documents",
|
||
"attachButton": "Choisir des documents",
|
||
"attachCount": "{count} sur {max} sélectionnés",
|
||
"attachFrozen": "La sélection de documents est figée à la création du lien : impossible d'ajouter ou de retirer des documents ensuite.",
|
||
"attachRemove": "Retirer {title}",
|
||
"exifNote": "Les métadonnées de l'appareil photo (EXIF/GPS) sont supprimées des images JPEG, PNG et WebP lors du partage. Les fichiers PDF, TIFF, HEIC et Office sont transmis tels quels.",
|
||
"documentCount": "Documents joints : {count}",
|
||
"qrScanTitle": "Scannez pour ouvrir sur un autre appareil",
|
||
"qrScanHint": "Pointez l'appareil photo d'un téléphone vers le code pour ouvrir le dossier partagé. La phrase secrète est déjà incluse.",
|
||
"pickerTitle": "Joindre des documents",
|
||
"pickerDescription": "Recherchez dans votre coffre et sélectionnez les documents à partager. Jusqu'à {max}.",
|
||
"pickerSearch": "Rechercher des documents",
|
||
"pickerEmpty": "Aucun document trouvé.",
|
||
"pickerDone": "Terminé",
|
||
"pickerSelectedCount": "{count} sur {max} sélectionnés",
|
||
"pickerMaxReached": "Vous avez atteint le maximum de {max} documents.",
|
||
"scopeTitle": "Ce que contient ce lien",
|
||
"scopeInsuranceExcluded": "Les données d'assurance ne sont jamais partagées via un lien.",
|
||
"statusNeedsReselect": "Choisir à nouveau le contenu",
|
||
"reselectReason": "Ce lien diffusait un périmètre que personne n'avait choisi ; il a donc été fermé. Créez-en un nouveau et choisissez son contenu.",
|
||
"reselectAction": "Créer un remplacement",
|
||
"createDetail": "Le jeton n'est affiché qu'une fois à la création. Conservez-le alors ; il ne peut pas être récupéré.",
|
||
"activeDescription": "Les liens que vous avez partagés, leur expiration et le nombre d'ouvertures.",
|
||
"revokedToast": "Lien révoqué.",
|
||
"revokeFailed": "Impossible de révoquer le lien."
|
||
},
|
||
"genderOther": "Autre",
|
||
"nightscout": "Nightscout",
|
||
"nightscoutTag": "CGM",
|
||
"nightscoutDescription": "Connecte ton propre site Nightscout pour synchroniser les mesures de glucose en continu dans le panneau glucose.",
|
||
"nightscoutViewData": "Voir votre glycémie",
|
||
"nightscoutUrl": "URL Nightscout",
|
||
"nightscoutUrlSavedPlaceholder": "Enregistré. Saisissez une nouvelle URL pour la remplacer",
|
||
"nightscoutToken": "Jeton d'API",
|
||
"nightscoutTokenOptional": "Facultatif pour un site public",
|
||
"nightscoutTokenSavedPlaceholder": "Enregistré. Saisissez un nouveau jeton pour le remplacer",
|
||
"nightscoutTokenHelp": "Collez un jeton d'accès depuis les outils d'administration de Nightscout. Laissez vide si votre site est lisible publiquement.",
|
||
"nightscoutPrivateOperatorTitle": "L’accès à un Nightscout privé nécessite l’autorisation de l’administrateur du serveur.",
|
||
"nightscoutPrivateOperatorDescription": "Demandez à l’administrateur du serveur d’autoriser précisément cette origine Nightscout.",
|
||
"nightscoutConnect": "Connecter",
|
||
"nightscoutUpdate": "Enregistrer les modifications",
|
||
"nightscoutConnected": "Nightscout connecté.",
|
||
"nightscoutConnectFailed": "Impossible de se connecter à Nightscout.",
|
||
"nightscoutSync": "Synchroniser",
|
||
"nightscoutSyncResult": "{count} mesures synchronisées",
|
||
"nightscoutSyncFailed": "Échec de la synchronisation",
|
||
"nightscoutDisconnect": "Déconnecter",
|
||
"nightscoutDisconnectTitle": "Déconnecter Nightscout ?",
|
||
"nightscoutDisconnectDescription": "Les synchronisations futures s'arrêtent. Les mesures de glycémie déjà importées restent dans votre historique.",
|
||
"polar": "Polar",
|
||
"polarDescription": "Connecte ton compte Polar pour synchroniser la récupération Nightly Recharge, les phases de sommeil, l'activité et les séances d'entraînement.",
|
||
"polarViewData": "Voir votre sommeil et récupération",
|
||
"polarCredentials": "Identifiants API",
|
||
"polarClientId": "Client ID",
|
||
"polarClientSecret": "Client Secret",
|
||
"polarCredentialsSaved": "Identifiants enregistrés",
|
||
"polarCredentialsSavedPlaceholder": "Enregistré. Saisir de nouveaux pour remplacer",
|
||
"polarSaveCredentials": "Enregistrer",
|
||
"polarUnavailable": "Polar n'est pas configuré sur ce serveur. Ajoutez vos propres identifiants OAuth Polar ci-dessus, ou demandez à votre administrateur de configurer l'application partagée.",
|
||
"polarConnect": "Connecter Polar",
|
||
"polarSync": "Synchroniser",
|
||
"polarSyncResult": "{count} mesures synchronisées",
|
||
"polarSyncFailed": "Échec de la synchronisation",
|
||
"polarDisconnect": "Déconnecter",
|
||
"polarDisconnectTitle": "Déconnecter Polar ?",
|
||
"polarDisconnectDescription": "Les synchronisations futures s'arrêtent. Les mesures déjà importées restent dans votre historique.",
|
||
"polarOauthConnected": "Polar connecté. La première synchronisation démarre en arrière-plan.",
|
||
"polarOauthFailed": "Échec de la connexion à Polar",
|
||
"polarOauthError": {
|
||
"csrf1": "La vérification de sécurité a échoué car le cookie du navigateur était absent. Veuillez relancer la connexion dans le même navigateur.",
|
||
"state": "La réponse de Polar ne correspondait à aucune demande de connexion en cours. Veuillez relancer la connexion.",
|
||
"cross_user": "La réponse appartient à une demande d'un autre compte. Veuillez relancer la connexion depuis votre propre compte.",
|
||
"nocode": "Polar n'a pas renvoyé de code d'autorisation. Réessayez et autorisez l'accès dans la fenêtre Polar.",
|
||
"nocreds": "Polar n'est pas configuré sur ce serveur. Demandez à votre administrateur d'ajouter les identifiants OAuth Polar.",
|
||
"token": "L'échange de jeton avec Polar a échoué. Veuillez relancer la connexion.",
|
||
"rate_limited": "Trop de tentatives de connexion. Patientez un instant et réessayez.",
|
||
"generic": "Erreur inconnue lors de la connexion. Veuillez relancer la connexion.",
|
||
"already_linked": "Ce compte Polar est déjà connecté à un autre profil HealthLog. Connecte-toi à Polar avec le compte de ce profil, ou déconnecte-le d'abord de l'autre profil."
|
||
},
|
||
"oura": "Oura",
|
||
"ouraDescription": "Connecte ton compte Oura pour synchroniser readiness, phases de sommeil, variabilité cardiaque et activité quotidienne.",
|
||
"ouraViewData": "Voir votre sommeil et récupération",
|
||
"ouraCredentials": "Identifiants API",
|
||
"ouraClientId": "Client ID",
|
||
"ouraClientSecret": "Client Secret",
|
||
"ouraCredentialsSaved": "Identifiants enregistrés",
|
||
"ouraCredentialsSavedPlaceholder": "Enregistré. Saisir de nouveaux pour remplacer",
|
||
"ouraSaveCredentials": "Enregistrer",
|
||
"ouraUnavailable": "Oura n'est pas configuré sur ce serveur. Ajoutez vos propres identifiants OAuth Oura ci-dessus, ou demandez à votre administrateur de configurer l'application partagée.",
|
||
"ouraConnect": "Connecter Oura",
|
||
"ouraSync": "Synchroniser",
|
||
"ouraSyncResult": "{count} mesures synchronisées",
|
||
"ouraSyncFailed": "Échec de la synchronisation",
|
||
"ouraDisconnect": "Déconnecter",
|
||
"ouraDisconnectTitle": "Déconnecter Oura ?",
|
||
"ouraDisconnectDescription": "Les synchronisations futures s'arrêtent. Les mesures déjà importées restent dans votre historique.",
|
||
"ouraOauthConnected": "Oura connecté. La première synchronisation démarre en arrière-plan.",
|
||
"ouraOauthFailed": "Échec de la connexion à Oura",
|
||
"ouraOauthError": {
|
||
"csrf1": "La vérification de sécurité a échoué car le cookie du navigateur était absent. Veuillez relancer la connexion dans le même navigateur.",
|
||
"state": "La réponse d'Oura ne correspondait à aucune demande de connexion en cours. Veuillez relancer la connexion.",
|
||
"cross_user": "La réponse appartient à une demande d'un autre compte. Veuillez relancer la connexion depuis votre propre compte.",
|
||
"nocode": "Oura n'a pas renvoyé de code d'autorisation. Réessayez et autorisez l'accès dans la fenêtre Oura.",
|
||
"nocreds": "Oura n'est pas configuré sur ce serveur. Demandez à votre administrateur d'ajouter les identifiants OAuth Oura.",
|
||
"token": "L'échange de jeton avec Oura a échoué. Veuillez relancer la connexion.",
|
||
"rate_limited": "Trop de tentatives de connexion. Patientez un instant et réessayez.",
|
||
"issuer": "La réponse de connexion ne provenait pas du serveur d'autorisation d'Oura, la connexion a donc été interrompue par sécurité. Veuillez relancer la connexion. Si cela se reproduit, prévenez votre administrateur.",
|
||
"generic": "Erreur inconnue lors de la connexion. Veuillez relancer la connexion.",
|
||
"already_linked": "Ce compte Oura est déjà connecté à un autre profil HealthLog. Connecte-toi à Oura avec le compte de ce profil, ou déconnecte-le d'abord de l'autre profil."
|
||
},
|
||
"integrationSetupGuide": "Guide de configuration",
|
||
"coach": {
|
||
"memory": {
|
||
"edit": "Modifier",
|
||
"source": {
|
||
"user": "de toi",
|
||
"coach": "du Coach"
|
||
}
|
||
},
|
||
"state": {
|
||
"title": "Coach",
|
||
"description": "Si le bouton et le panneau du Coach s’affichent. L’interrupteur se trouve dans Modules."
|
||
},
|
||
"nudgesMoved": "Se règlent avec vos autres rappels dans Notifications.",
|
||
"openNudges": "Ouvrir dans Notifications"
|
||
},
|
||
"integrationRedirectGuide": {
|
||
"intro": "Cette connexion passe par votre propre application développeur {provider}, environ 5 minutes de configuration :",
|
||
"step1": "Créez une application dans le portail développeur {provider}.",
|
||
"step2": "Réglez son URL de redirection/callback sur :",
|
||
"step3": "Collez ci-dessus l'ID client et le secret client fournis."
|
||
},
|
||
"security": {
|
||
"sessionsTitle": "Sessions actives",
|
||
"sessionsDescription": "Appareils et navigateurs actuellement connectés à votre compte.",
|
||
"sessionsLoadError": "Impossible de charger les sessions actives.",
|
||
"sessionsEmpty": "Aucune session active.",
|
||
"currentSession": "Cet appareil",
|
||
"lastActive": "Dernière activité {time}",
|
||
"unknownLocation": "Lieu inconnu",
|
||
"revokeSession": "Déconnecter",
|
||
"revokeError": "Impossible de traiter la demande. Veuillez réessayer.",
|
||
"signOutEverywhere": "Se déconnecter partout ailleurs",
|
||
"signOutEverywhereDone": "{count} autre(s) session(s) déconnectée(s)",
|
||
"activityTitle": "Activité de sécurité",
|
||
"activityDescription": "Connexions récentes, modifications de sécurité et exports de données de votre compte.",
|
||
"activityEmpty": "Aucune activité de sécurité pour l'instant.",
|
||
"activityLoadError": "Impossible de charger l'activité de sécurité.",
|
||
"action": {
|
||
"newDevice": "Connexion depuis un nouvel appareil",
|
||
"loginFailed": "Échec de connexion",
|
||
"login": "Connexion",
|
||
"passwordChange": "Mot de passe modifié",
|
||
"mfa": "Modification de la double authentification",
|
||
"sessionRevoke": "Session déconnectée",
|
||
"token": "Modification de jeton API",
|
||
"accountDelete": "Compte supprimé",
|
||
"dataClear": "Données réinitialisées",
|
||
"export": "Export de données",
|
||
"other": "Événement de sécurité"
|
||
},
|
||
"active": "Actif",
|
||
"inactive": "Inactif",
|
||
"stepUpRequired": "Pour votre sécurité, reconnectez-vous pour modifier votre second facteur.",
|
||
"useRecoveryCode": "Utiliser plutôt un code de récupération",
|
||
"useAuthenticator": "Utiliser plutôt votre application d'authentification",
|
||
"totp": {
|
||
"title": "Application d'authentification",
|
||
"description": "Utilisez un code temporaire d'une application d'authentification comme second facteur.",
|
||
"setUp": "Configurer",
|
||
"step1": "Scannez le code QR avec votre application d'authentification, ou saisissez le secret manuellement.",
|
||
"step2": "Saisissez le code à 6 chiffres affiché par l'application pour confirmer.",
|
||
"qrAlt": "Code QR pour configurer l'application d'authentification",
|
||
"qrUnavailable": "Code QR indisponible",
|
||
"manualEntry": "Ou saisissez ce secret manuellement",
|
||
"enterCode": "Saisissez le code à 6 chiffres",
|
||
"verify": "Vérifier",
|
||
"setupFailed": "Impossible de démarrer la configuration. Veuillez réessayer.",
|
||
"invalidCode": "Ce code n'est pas valide. Veuillez réessayer.",
|
||
"disable": "Désactiver",
|
||
"disableTitle": "Désactiver l'authentification à deux facteurs",
|
||
"disableConfirm": "Saisissez un code actuel pour désactiver votre second facteur. Cela supprime aussi vos codes de récupération.",
|
||
"currentCode": "Code actuel",
|
||
"disableFailed": "Impossible de désactiver le second facteur."
|
||
},
|
||
"recovery": {
|
||
"saveNow": "Enregistrez ces codes de récupération maintenant",
|
||
"saveNowHint": "Chaque code ne fonctionne qu'une fois. Ils ne sont affichés que cette fois : conservez-les en lieu sûr. Si vous perdez votre authentificateur, un code de récupération est le seul moyen de revenir.",
|
||
"download": "Télécharger",
|
||
"remainingOne": "{count} code de récupération restant.",
|
||
"remainingOther": "{count} codes de récupération restants.",
|
||
"regenerate": "Régénérer les codes",
|
||
"regenFailed": "Impossible de régénérer les codes de récupération.",
|
||
"savedIt": "Je les ai enregistrés",
|
||
"regenerateTitle": "Régénérer les codes de récupération ?",
|
||
"regenerateConfirm": "Cela remplace vos codes de récupération actuels. Vos codes existants cesseront de fonctionner immédiatement et le nouveau jeu n'est affiché qu'une seule fois."
|
||
},
|
||
"keys": {
|
||
"title": "Clés de sécurité",
|
||
"description": "Enregistrez une clé de sécurité matérielle ou de plateforme comme second facteur.",
|
||
"empty": "Aucune clé de sécurité enregistrée pour le moment.",
|
||
"add": "Ajouter une clé de sécurité",
|
||
"addFailed": "Impossible d'enregistrer la clé de sécurité.",
|
||
"rename": "Renommer",
|
||
"renameFailed": "Impossible de renommer la clé de sécurité.",
|
||
"remove": "Supprimer la clé de sécurité",
|
||
"removeFailed": "Impossible de supprimer la clé de sécurité.",
|
||
"removeConfirm": "Cette clé de sécurité ne fonctionnera plus comme second facteur.",
|
||
"lastUsed": "Dernière utilisation le {date}",
|
||
"neverUsed": "Jamais utilisée",
|
||
"added": "ajoutée le {date}",
|
||
"nameLabel": "Nom de la clé de sécurité",
|
||
"addedToast": "Clé de sécurité ajoutée.",
|
||
"removedToast": "Clé de sécurité supprimée."
|
||
},
|
||
"passkeyNudge": {
|
||
"title": "Ajoutez une clé d'accès pour une connexion plus rapide",
|
||
"body": "Les clés d'accès vous permettent de vous connecter avec votre empreinte, votre visage ou le code de votre appareil, sans mot de passe à retenir."
|
||
},
|
||
"trustedDevices": {
|
||
"title": "Appareils de confiance",
|
||
"description": "Les navigateurs auxquels vous faites confiance ignorent le second facteur pendant 30 jours. Le mot de passe reste requis. Révoquez ceux que vous ne reconnaissez pas.",
|
||
"loadError": "Impossible de charger les appareils de confiance.",
|
||
"revokeError": "Impossible de révoquer l'appareil. Veuillez réessayer.",
|
||
"revoke": "Révoquer",
|
||
"revokeAll": "Oublier tous les appareils",
|
||
"revokeAllDone": "{count} appareil(s) de confiance oublié(s)",
|
||
"unnamed": "Appareil inconnu",
|
||
"current": "Cet appareil",
|
||
"expires": "De confiance jusqu'au {date}",
|
||
"revokeConfirmTitle": "Ne plus faire confiance à cet appareil ?",
|
||
"revokeConfirmBody": "Il redemandera ton deuxième facteur à la prochaine connexion depuis cet appareil.",
|
||
"revokeAllConfirmTitle": "Ne plus faire confiance à aucun appareil ?",
|
||
"revokeAllConfirmBody": "Chaque appareil redemandera ton deuxième facteur à la prochaine connexion, celui-ci compris."
|
||
},
|
||
"revokeSessionConfirmTitle": "Déconnecter cet appareil ?",
|
||
"revokeSessionConfirmBody": "{device} devra se reconnecter. Ce qui y est enregistré n'est pas affecté.",
|
||
"signOutEverywhereConfirmTitle": "Déconnecter tous les autres appareils ?",
|
||
"signOutEverywhereConfirmBody": "Tous les autres appareils, chaque assistant IA connecté et chaque jeton d'API devront se reconnecter ou être reconfigurés. Cet appareil reste connecté. Rien de ce que vous avez enregistré n'est touché.",
|
||
"signOutEverywhereShareLinks": "Mettre fin aussi aux liens de partage avec les médecins",
|
||
"signOutEverywhereInvites": "Les invitations à votre dossier que personne n'a encore acceptées sont retirées. Les personnes qui ont déjà accepté gardent leur accès ; vous pourrez y mettre fin ensuite.",
|
||
"signOutEverywhereInvitesDone": "{count} invitation(s) non acceptée(s) retirée(s).",
|
||
"grantsKeptTitle": "Ces personnes peuvent toujours voir votre dossier",
|
||
"grantsKeptBody": "Se déconnecter ne met pas fin à l'accès que vous avez donné à quelqu'un. Mettez-y fin ici si vous ne l'avez pas donné ou si vous ne le souhaitez plus."
|
||
},
|
||
"privacy": {
|
||
"encryption": {
|
||
"title": "Chiffré au repos",
|
||
"summary": "Vos données sensibles sont chiffrées au repos avec {algorithm} sur {columns} champs dans {models} types d'enregistrement.",
|
||
"statement": "Vos données sensibles sont chiffrées au repos avec AES-256-GCM."
|
||
},
|
||
"stored": {
|
||
"title": "Ce qui est stocké",
|
||
"measurements": "Mesures : poids, tension, pouls et toute autre valeur enregistrée par vous ou un appareil",
|
||
"integrations": "Jetons d'intégration (chiffrés)",
|
||
"security": "Activité du compte et de sécurité (sessions, journal de connexion)",
|
||
"profile": "Votre profil, vos antécédents médicaux et les informations du dossier de santé",
|
||
"modules": "Données de chaque module : {list}"
|
||
},
|
||
"workoutRoutes": {
|
||
"title": "Parcours d’entraînement",
|
||
"description": "Conserver le tracé GPS des nouveaux entraînements de l’app iPhone et de l’export Apple Santé.",
|
||
"detail": "Désactivé pour les nouveaux comptes. Un parcours montre où vous habitez, travaillez et vous entraînez : il n’est donc conservé qu’une fois l’option activée. Les entraînements sont conservés dans tous les cas, et aucune fonction d’IA ne lit jamais un parcours. Désactiver l’option arrête les nouveaux parcours ; ceux déjà conservés restent jusqu’à la suppression de l’entraînement.",
|
||
"loadError": "Impossible de charger le réglage des parcours."
|
||
},
|
||
"retention": {
|
||
"title": "Conservation",
|
||
"description": "Durée de conservation des enregistrements limités dans le temps avant le nettoyage automatique.",
|
||
"coach": "Conversations avec le coach : {days} jours",
|
||
"audit": "Journal de sécurité : {days} jours",
|
||
"delivery": "Journal d'envoi des notifications : {days} jours",
|
||
"unavailable": "Les détails de conservation sont indisponibles pour le moment."
|
||
},
|
||
"delete": {
|
||
"title": "Supprimer ou réinitialiser",
|
||
"description": "Supprimez complètement votre compte, ou effacez vos données de santé tout en conservant le compte.",
|
||
"backupLag": "La suppression efface vos données immédiatement. Si ce serveur conserve des sauvegardes externes chiffrées, les copies de vos données sont supprimées de ce stockage juste après, ou lors du prochain passage nocturne s'il est injoignable.",
|
||
"openAdvanced": "Supprimer ou réinitialiser"
|
||
},
|
||
"posture": {
|
||
"title": "Posture de confidentialité",
|
||
"description": "Contrôlez la quantité de données partagées avec les fonctions d'IA.",
|
||
"openAi": "Mode confidentialité IA"
|
||
},
|
||
"sessions": {
|
||
"title": "Sessions et appareils",
|
||
"description": "Où tu es connecté, les appareils qui sautent le second facteur et l'activité de sécurité de ton compte.",
|
||
"open": "Ouvrir la sécurité"
|
||
}
|
||
},
|
||
"mcp": {
|
||
"enableTitle": "Point de terminaison MCP distant",
|
||
"enableDescription": "Autorisez un assistant compatible MCP (Claude.ai, ChatGPT) à lire vos données de santé via un jeton restreint.",
|
||
"endpointLabel": "URL du connecteur",
|
||
"connectDescription": "Collez cette URL dans la configuration du connecteur personnalisé de votre assistant, puis autorisez avec le jeton ci-dessous ou connectez-vous lorsque vous y êtes invité.",
|
||
"tokensTitle": "Jetons du connecteur",
|
||
"tokensDescription": "Générez un jeton pour connecter un assistant, en lecture seule sauf si vous autorisez l'écriture ci-dessous.",
|
||
"scopeNote": "Les nouveaux jetons ne peuvent que lire vos propres données. L'accès en écriture (health:write) s'accorde par jeton avec le commutateur ci-dessous. Un jeton ne peut jamais atteindre les fonctions d'administration.",
|
||
"writeScopeToggleLabel": "Autoriser l'enregistrement (health:write)",
|
||
"writeScopeNote": "Ajoute la portée health:write pour que l'assistant puisse enregistrer de nouvelles mesures et entrées d'humeur dans votre compte. Chaque écriture est d'abord confirmée. Le jeton ne peut toujours pas supprimer ni modifier des entrées existantes, changer les médicaments, ni atteindre les fonctions REST ou d'administration. Laissez désactivé pour un accès en lecture seule.",
|
||
"connectionsTitle": "Assistants connectés",
|
||
"connectionsDescription": "Assistants que vous avez autorisés via la connexion.",
|
||
"noConnections": "Aucun assistant connecté.",
|
||
"connectionConnected": "Connecté",
|
||
"connectionLastUsed": "Dernière utilisation",
|
||
"connectionNeverUsed": "Jamais utilisé",
|
||
"connectionRevoke": "Déconnecter",
|
||
"connectionRevokeDescription": "Cela met fin immédiatement à l'accès de l'assistant et l'empêche de se renouveler. Une nouvelle autorisation sera nécessaire pour le reconnecter.",
|
||
"connectionRevokeFailed": "Impossible de déconnecter l'assistant.",
|
||
"tokensDetail": "Le jeton n'est affiché qu'une seule fois.",
|
||
"connectionsDetail": "Révoquer une connexion met fin à son accès immédiatement, y compris sa capacité à se renouveler.",
|
||
"tokenNamePlaceholder": "Nom, p. ex. Claude Desktop",
|
||
"offKeepsTokens": "Le désactiver met le point d’accès en pause. Vos jetons et connexions restent et fonctionnent de nouveau dès sa réactivation."
|
||
},
|
||
"strava": "Strava",
|
||
"stravaDescription": "Connecte ton compte Strava pour synchroniser tes activités avec ton historique d'entraînement.",
|
||
"stravaViewData": "Voir tes entraînements",
|
||
"stravaCredentials": "Identifiants API",
|
||
"stravaClientId": "ID client",
|
||
"stravaClientSecret": "Secret client",
|
||
"stravaCredentialsSaved": "Identifiants enregistrés",
|
||
"stravaCredentialsSavedPlaceholder": "Enregistrés. Saisis-en de nouveaux pour remplacer",
|
||
"stravaSaveCredentials": "Enregistrer",
|
||
"stravaUnavailable": "Strava n'est pas configuré sur ce serveur. Ajoute tes propres identifiants API Strava ci-dessus ou demande à ton administrateur de configurer l'application partagée.",
|
||
"stravaConnect": "Connecter Strava",
|
||
"stravaSync": "Synchroniser",
|
||
"stravaSyncResult": "{count} mesures synchronisées",
|
||
"stravaSyncFailed": "Échec de la synchronisation",
|
||
"stravaDisconnect": "Déconnecter",
|
||
"stravaDisconnectTitle": "Déconnecter Strava ?",
|
||
"stravaDisconnectDescription": "Les synchronisations futures s'arrêtent. Les activités déjà importées restent dans ton historique.",
|
||
"stravaOauthConnected": "Strava connecté. La première synchronisation démarre en arrière-plan.",
|
||
"stravaOauthFailed": "La connexion à Strava a échoué",
|
||
"stravaOauthError": {
|
||
"csrf1": "Le contrôle de sécurité a échoué car le cookie du navigateur était manquant. Relance la connexion dans le même navigateur.",
|
||
"state": "La réponse de Strava ne correspondait à aucune demande de connexion ouverte. Relance la connexion.",
|
||
"cross_user": "La réponse appartient à une demande d'un autre compte. Relance la connexion depuis ton propre compte.",
|
||
"nocode": "Strava n'a pas renvoyé de code d'autorisation. Réessaie et autorise l'accès dans la boîte de dialogue Strava.",
|
||
"nocreds": "Strava n'est pas configuré sur ce serveur. Demande à ton administrateur d'ajouter les identifiants API Strava.",
|
||
"token": "L'échange de jeton avec Strava a échoué. Relance la connexion.",
|
||
"rate_limited": "Trop de tentatives de connexion. Attends un instant et réessaie.",
|
||
"generic": "Erreur inconnue lors de la connexion. Relance la connexion.",
|
||
"already_linked": "Ce compte Strava est déjà connecté à un autre profil HealthLog. Connecte-toi à Strava avec le compte de ce profil, ou déconnecte-le d'abord de l'autre profil."
|
||
},
|
||
"appleHealth": {
|
||
"title": "Apple Health",
|
||
"description": "La synchronisation en direct passe par l’app HealthLog pour iOS, et non par une connexion web ou OAuth.",
|
||
"status": {
|
||
"unavailable": "Statut Apple Health indisponible"
|
||
},
|
||
"setupTitle": "Activer la synchronisation en direct",
|
||
"permissionStep": "Dans l’app HealthLog pour iOS, ouvre Réglages → Apple Health et autorise les catégories de santé que tu souhaites partager.",
|
||
"backgroundStep": "Laisse l’actualisation en arrière-plan activée. L’app synchronise automatiquement les nouvelles données au premier plan et lorsque iOS lui accorde du temps en arrière-plan.",
|
||
"importNote": "Besoin d’un ancien historique ou impossible d’utiliser l’app iOS ? L’envoi XML/ZIP Apple Health est une solution ponctuelle et n’active pas la synchronisation en direct.",
|
||
"importAction": "Ouvrir l’import ponctuel",
|
||
"progress": {
|
||
"title": "Progression de la synchronisation",
|
||
"receivedLabel": "Enregistrements reçus",
|
||
"oldestLabel": "Mesure la plus ancienne atteinte",
|
||
"flowing": "Des données sont arrivées au cours de la dernière heure. L'app iPhone continue d'envoyer.",
|
||
"waiting": "En attente de nouvelles données de l'app iPhone. Le transfert reprend quand l'app est ouverte ou quand iOS lui accorde du temps en arrière-plan. Une accalmie pendant le premier grand rattrapage est normale, pas une erreur."
|
||
},
|
||
"delivery": {
|
||
"title": "Livraison",
|
||
"lastTriggerLabel": "La dernière synchronisation est arrivée",
|
||
"lastBackgroundLabel": "Dernière synchronisation en arrière-plan",
|
||
"backgroundNever": "Jamais : jusqu'ici chaque synchronisation est arrivée avec l'app ouverte",
|
||
"noSyncYet": "Aucune synchronisation n'est encore arrivée, il n'y a donc rien à signaler ici.",
|
||
"trigger": {
|
||
"foreground": "avec l'app ouverte",
|
||
"background": "en arrière-plan",
|
||
"push": "depuis un réveil push",
|
||
"unknown": "déclencheur non signalé par l'app",
|
||
"manual": "via « Tout synchroniser »"
|
||
}
|
||
},
|
||
"freshness": {
|
||
"title": "Par type de donnée",
|
||
"lastReceived": "Dernière réception {relative}",
|
||
"lastNewValue": "Dernière nouvelle valeur {relative}",
|
||
"lastBackground": "Dernière fois en arrière-plan {relative}",
|
||
"lastDuplicate": "Dernier renvoi sans nouvelle donnée {relative}",
|
||
"never": "Pas encore reçu",
|
||
"lastBackfill": "Historique rattrapé {relative}",
|
||
"lastEnteredHere": "Dernière saisie ici {relative}"
|
||
}
|
||
},
|
||
"garminInfo": {
|
||
"title": "Garmin",
|
||
"body": "Garmin n'a pas de connexion directe ici. Connecte-le via Apple Health (iOS) ou Google Health Connect (Android). Les scores propriétaires de Garmin (Body Battery, Training Load, statut VFC, VO₂ max) ne sont partagés par Garmin avec aucune des deux plateformes.",
|
||
"docsLink": "Lire le guide"
|
||
},
|
||
"glucoseReference": {
|
||
"title": "Plage de référence du glucose",
|
||
"description": "La plage à laquelle vos glycémies sont comparées.",
|
||
"enable": "Utiliser la plage cible diabète",
|
||
"explainer": "Désactivé, les valeurs sont comparées à la plage de référence générale non diabétique. Activé, elles sont comparées à la plage cible glycémique plus stricte des ADA Standards of Care, et le Coach fonde ses remarques sur le glucose sur cette plage. Vos propres valeurs cibles personnalisées ci-dessous restent prioritaires.",
|
||
"disclaimer": "Ceci sélectionne une plage de référence. Ce n'est pas un diagnostic, ce n'est jamais déduit d'une mesure, et l'application n'en tire aucune conséquence clinique. Les cibles qui s'appliquent à vous relèvent de votre médecin.",
|
||
"error": "Le réglage n'a pas pu être enregistré."
|
||
},
|
||
"dangerZoneDetail": "Votre compte et vos identifiants de connexion sont conservés.",
|
||
"deleteAccountCardDetail": "Cette action est irréversible.",
|
||
"passkeyStepUpRequired": "Par sécurité, reconnecte-toi avant de supprimer une clé d'accès.",
|
||
"setup": {
|
||
"title": "Configuration",
|
||
"description": "Les questions qui décident de ce que HealthLog montre en premier, et la liste de départ du tableau de bord.",
|
||
"setUpAgain": "Reconfigurer",
|
||
"showChecklist": "Réafficher la liste de départ",
|
||
"checklistShown": "La liste de départ est de retour sur le tableau de bord.",
|
||
"checklistNothingHidden": "La liste n'était pas masquée ; elle s'ouvre sur le tableau de bord."
|
||
},
|
||
"documentSources": {
|
||
"title": "Archives de documents",
|
||
"description": "Cherchez dans Paperless-ngx ou Papra depuis HealthLog et importez les documents choisis.",
|
||
"explainer": "Un bouton d'import apparaît partout où vous liez des documents : consultations, vaccinations, affections et Documents. HealthLog garde sa propre copie chiffrée de chaque document importé et n'interroge votre archive que lorsque vous cherchez ou importez.",
|
||
"systemLabel": "Archive",
|
||
"statusConnected": "Connecté",
|
||
"statusNotConnected": "Non connecté",
|
||
"connectedSince": "Connecté, dernière vérification le {date}",
|
||
"originRemoved": "Cette adresse ne figure plus dans la liste des archives autorisées du serveur. Voyez avec l'administration ou enregistrez une autre adresse.",
|
||
"baseUrl": "Adresse",
|
||
"allowedOrigins": "Autorisé sur ce serveur : {origins}",
|
||
"organizationId": "Identifiant d'organisation",
|
||
"organizationHelp": "La partie après /organizations/ dans la barre d'adresse de Papra. Les identifiants d'organisation Papra ont la forme org_ suivi de 24 lettres et chiffres.",
|
||
"token": "Jeton d'API",
|
||
"tokenSaved": "Enregistré pour cette adresse. Laissez vide pour le conserver.",
|
||
"tokenHelpPaperless": "Dans Paperless-ngx : Mon profil, jeton d'API.",
|
||
"tokenHelpPapra": "Dans Papra : une clé d'API avec documents:read et tags:read.",
|
||
"save": "Enregistrer et tester",
|
||
"saving": "Test en cours…",
|
||
"saved": "Connecté. L'archive a répondu.",
|
||
"test": "Tester",
|
||
"testOk": "L'archive a répondu en {latency} ms.",
|
||
"disconnect": "Déconnecter",
|
||
"disconnectTitle": "Déconnecter {name} ?",
|
||
"disconnectDescription": "HealthLog oublie l'adresse et le jeton. Les documents déjà importés restent dans HealthLog.",
|
||
"unavailableExplainer": "Ce serveur n'autorise plus les archives de documents ; la connexion ci-dessous ne peut donc pas servir. Vous pouvez toujours la supprimer.",
|
||
"moduleOffExplainer": "Les documents sont désactivés ; la connexion ci-dessous n'est donc pas utilisée. Vous pouvez toujours la supprimer.",
|
||
"tokenNewAddress": "Une nouvelle adresse demande de saisir à nouveau le jeton d'API."
|
||
},
|
||
"emailChangePassword": "Mot de passe actuel (nécessaire pour changer l'adresse e-mail)",
|
||
"reproof": {
|
||
"description": "Cette action partage ou exporte vos données de santé. Confirmez qu'il s'agit bien de vous pour continuer.",
|
||
"descriptionChange": "Cela modifie quelque chose que vous seul devriez pouvoir modifier. Confirmez qu'il s'agit bien de vous pour continuer.",
|
||
"signInAgain": "Reconnectez-vous, puis réessayez. Votre compte n'a ni mot de passe ni clé d'accès à confirmer ici.",
|
||
"failed": "Cela n'a pas fonctionné. Vérifiez votre saisie et réessayez."
|
||
},
|
||
"passwordTitle": "Mot de passe",
|
||
"tokenNameLabel": "Nom du jeton",
|
||
"displayCard": {
|
||
"title": "Affichage",
|
||
"description": "Langue, unités et formats, enregistrés dès que vous les modifiez."
|
||
},
|
||
"integrationCard": {
|
||
"state": {
|
||
"ok": "Fonctionne",
|
||
"limited": "Limitée",
|
||
"degraded": "Retardée",
|
||
"actionRequired": "Action requise"
|
||
},
|
||
"reason": {
|
||
"dataArriving": "Les données arrivent.",
|
||
"dataArrivingHistory": "Les données arrivent. L’historique plus ancien se charge en arrière-plan.",
|
||
"firstSyncPending": "Connecté. La première synchronisation aura lieu sous peu.",
|
||
"planLimited": "Les données arrivent. Votre forfait {provider} n’inclut pas {list}.",
|
||
"permissionLimited": "Les données arrivent. L’autorisation manque pour {list}.",
|
||
"providerErrors": "{provider} ne répond plus de façon fiable depuis {since}. HealthLog continue d’essayer, vous n’avez rien à faire.",
|
||
"providerErrorsNoSince": "{provider} ne répond pas de façon fiable en ce moment. HealthLog continue d’essayer, vous n’avez rien à faire.",
|
||
"syncStalled": "HealthLog n’a plus synchronisé depuis {since}. Le problème vient du serveur, pas de votre appareil.",
|
||
"syncStalledNoSince": "HealthLog ne synchronise pas en ce moment. Le problème vient du serveur, pas de votre appareil.",
|
||
"noNewData": "Aucune nouvelle donnée depuis {since}.",
|
||
"noNewDataNoSince": "Aucune nouvelle donnée depuis un moment.",
|
||
"noNewDataApple": "Aucune nouvelle donnée depuis {since}. Ouvrez HealthLog une fois sur votre iPhone.",
|
||
"noNewDataAppleNoSince": "Aucune nouvelle donnée depuis un moment. Ouvrez HealthLog une fois sur votre iPhone.",
|
||
"unexpectedSilence": "Rien n’est arrivé depuis {since}, alors que {provider} envoie d’habitude des données chaque jour.",
|
||
"unexpectedSilenceNoSince": "Rien n’arrive, alors que {provider} envoie d’habitude des données chaque jour.",
|
||
"reauthRequired": "La connexion à {provider} a expiré. Reconnectez-vous pour continuer à recevoir des données.",
|
||
"pausedAfterErrors": "{provider} est en pause, car il n’y a eu que des erreurs depuis {since}.",
|
||
"pausedAfterErrorsNoSince": "{provider} est en pause, car il n’y a eu que des erreurs récemment."
|
||
},
|
||
"when": {
|
||
"today": "aujourd’hui, {time}",
|
||
"yesterday": "hier, {time}",
|
||
"date": "{date}, {time}"
|
||
},
|
||
"items": {
|
||
"activity": "l’activité",
|
||
"sleep": "le sommeil"
|
||
},
|
||
"moreValuesOne": "{count} autre valeur",
|
||
"moreValuesFew": "{count} autres valeurs",
|
||
"moreValuesOther": "{count} autres valeurs",
|
||
"notConnected": "Non connecté.",
|
||
"lastData": "Dernières données : {when}",
|
||
"lastDataNone": "Dernières données : aucune pour l’instant",
|
||
"reconnect": "Reconnecter",
|
||
"resume": "Reprendre",
|
||
"menuLabel": "Plus d’actions pour {provider}",
|
||
"menu": {
|
||
"credentials": "Modifier les identifiants",
|
||
"address": "Modifier l’adresse et le jeton"
|
||
},
|
||
"syncing": "Synchronisation en cours…",
|
||
"details": {
|
||
"title": "Détails pour un rapport de bug",
|
||
"none": "aucune",
|
||
"state": "État",
|
||
"since": "depuis",
|
||
"lastSync": "Dernière synchronisation",
|
||
"lastData": "Dernières données",
|
||
"failingParts": "parties en échec",
|
||
"recentCalls": "Derniers appels",
|
||
"unavailable": "Non disponible",
|
||
"unavailableList": "Non disponible : {list}",
|
||
"causePlan": "forfait",
|
||
"causePermission": "autorisation",
|
||
"failureStreak": "Série d’échecs : {count} sur {threshold}",
|
||
"copyFailed": "La copie a échoué. Sélectionnez le texte et copiez-le à la main."
|
||
},
|
||
"historyEnds": {
|
||
"horizon": "{type} : importé jusqu'au {date}. Les mesures plus anciennes dépassent la limite d'import.",
|
||
"noProgress": "{type} : importé jusqu'au {date}. Google ne renvoyait plus de mesures plus anciennes, l'import s'arrête donc là."
|
||
}
|
||
},
|
||
"dawarich": "Dawarich",
|
||
"dawarichTag": "Déplacements",
|
||
"dawarichDescription": "Connecte ton instance Dawarich pour récupérer la distance du jour, le temps hors de chez toi et les jours de voyage.",
|
||
"dawarichUrl": "Adresse Dawarich",
|
||
"dawarichApiKey": "Clé d’API",
|
||
"dawarichApiKeyHelp": "Tu la trouves dans Dawarich sous Compte. HealthLog ne lit que des valeurs journalières, jamais de coordonnées ni de noms de lieux.",
|
||
"dawarichConnect": "Connecter",
|
||
"dawarichUpdate": "Enregistrer les modifications",
|
||
"dawarichConnected": "Dawarich connecté. Les 30 derniers jours sont en cours de chargement.",
|
||
"dawarichSync": "Récupérer maintenant",
|
||
"dawarichSyncQueued": "Les sept derniers jours seront récupérés sous peu.",
|
||
"dawarichSyncAlreadyQueued": "Une récupération est déjà en cours.",
|
||
"dawarichDisconnect": "Déconnecter",
|
||
"dawarichDisconnectTitle": "Déconnecter Dawarich ?",
|
||
"dawarichDisconnectDescription": "Les prochaines récupérations s’arrêtent. Les jours déjà enregistrés restent.",
|
||
"dawarichDisconnectDelete": "Déconnecter et supprimer les jours",
|
||
"dawarichDisconnectDeleteTitle": "Déconnecter et supprimer tous les jours ?",
|
||
"dawarichDisconnectDeleteDescription": "La connexion et tous les jours de déplacement enregistrés sont supprimés. C’est irréversible.",
|
||
"dawarichHomePlaceSet": "Le domicile est défini.",
|
||
"dawarichHomePlaceMissing": "Définis ton domicile pour que le temps hors de chez toi puisse être mesuré.",
|
||
"dawarichHomeCountryIs": "Pays de résidence : {country}.",
|
||
"dawarichHomeCountryMissing": "Pas encore de pays de résidence, donc pas de jours de voyage.",
|
||
"dawarichDaysStored": "Jours enregistrés : {count}",
|
||
"dawarichHomePlace": "Domicile",
|
||
"dawarichHomePlaceChoose": "Choisis un lieu dans Dawarich",
|
||
"dawarichHomePlaceChange": "Choisir le domicile",
|
||
"dawarichHomeCountry": "Pays de résidence",
|
||
"dawarichHomeCountryHelp": "Code pays à deux lettres, par exemple DE. Laissé vide, c’est le pays où tu as passé le plus de jours l’an dernier qui compte.",
|
||
"dawarichHomeSave": "Enregistrer",
|
||
"dawarichHomeSaved": "Enregistré.",
|
||
"dawarichErrors": {
|
||
"invalid": "Cette adresse ne fonctionne pas. Utilise l’adresse de l’instance sans identifiants.",
|
||
"privateOrigin": "Cette instance est sur un réseau privé. Demande à l’opérateur du serveur de l’autoriser.",
|
||
"credentials": "Dawarich n’a pas accepté la clé d’API.",
|
||
"unreachable": "Dawarich est injoignable. Vérifie l’adresse et que l’instance fonctionne.",
|
||
"rateLimited": "Trop de tentatives. Patiente un instant, puis réessaie.",
|
||
"homePlaceUnknown": "L’instance Dawarich ne connaît plus ce lieu.",
|
||
"notConnected": "Dawarich n’est pas connecté.",
|
||
"generic": "Ça n’a pas marché. Réessaie."
|
||
},
|
||
"fitbitRetirement": {
|
||
"ending": "Google désactive l'API Web Fitbit le {date}. Ensuite, cette connexion ne se synchronisera plus.",
|
||
"ended": "Google a désactivé l'API Web Fitbit le {date}. Cette connexion ne se synchronise plus.",
|
||
"move": "Google Health lit les mêmes appareils Fitbit et Pixel. Connectez-le ci-dessous pour continuer à recevoir vos données. Google vous demandera de nouveau votre consentement, car la connexion Fitbit ne peut pas être transférée. Tout ce qui a déjà été importé est conservé.",
|
||
"toCard": "Aller à Google Health",
|
||
"guide": "Comment connecter Google Health",
|
||
"badgeEnding": "Bientôt désactivé",
|
||
"badgeEnded": "Désactivé"
|
||
},
|
||
"passkeyAddedToast": "Passkey ajoutée.",
|
||
"passkeyRemovedToast": "Passkey supprimée.",
|
||
"integrationDisconnected": "{provider} déconnecté.",
|
||
"integrationDisconnectFailed": "Impossible de déconnecter {provider}.",
|
||
"timezoneSaved": "Fuseau horaire enregistré.",
|
||
"moduleState": {
|
||
"on": "Activé",
|
||
"off": "Désactivé",
|
||
"change": "Modifier dans Modules"
|
||
},
|
||
"timezoneUseDevice": "Utiliser le fuseau horaire de cet appareil ({zone})"
|
||
},
|
||
"admin": {
|
||
"title": "Administration",
|
||
"subtitle": "État du système, utilisateurs et paramètres",
|
||
"settingsSaveError": "Échec de l'enregistrement des paramètres",
|
||
"systemStatus": "État du système",
|
||
"systemStatusDescription": "État d’exécution de cette instance : base de données, worker et compteurs.",
|
||
"database": "Base de données",
|
||
"databaseConnected": "Connectée",
|
||
"databaseError": "Erreur",
|
||
"startedAt": "Démarré",
|
||
"users": "Utilisateurs",
|
||
"measurementsCount": "Mesures",
|
||
"activeTokens": "Jetons d'API actifs",
|
||
"activeSessions": "Sessions actives",
|
||
"loadingStatus": "Chargement de l'état...",
|
||
"systemStatusLoadError": "Échec du chargement de l'état du système.",
|
||
"systemStatusRetry": "Réessayer",
|
||
"adminSettingsLoadError": "Échec du chargement des paramètres d'administration. Les commutateurs ci-dessous peuvent ne pas refléter l'état actuel : actualisez la page.",
|
||
"hostMetrics": {
|
||
"title": "Charge de l'hôte",
|
||
"load1": "Charge (1 min)",
|
||
"memUsedPercent": "Mémoire",
|
||
"diskBusyPercent": "Disk I/O",
|
||
"last2hours": "2 dernières heures",
|
||
"empty": "Échantillonnage démarré. Les données apparaissent dans 1 à 2 minutes.",
|
||
"loadError": "Échec du chargement des métriques de l'hôte. Essayez d'actualiser la page."
|
||
},
|
||
"aiServerKey": {
|
||
"title": "Clé IA du serveur",
|
||
"description": "Une clé de l'opérateur pour les comptes qui n'en ont pas configuré une.",
|
||
"byokHint": "La clé personnelle de l'utilisateur (BYOK, connexion ChatGPT ou fournisseur local) a toujours la priorité ; la clé du serveur est la dernière étape de la chaîne de fournisseurs.",
|
||
"consentHint": "Les requêtes via la clé du serveur nécessitent le consentement IA actif de l'utilisateur ; sans justificatif de consentement, rien n'est envoyé.",
|
||
"baseUrlHint": "L'URL de base détermine l'API : une URL Anthropic telle que https://api.anthropic.com/v1 est reconnue, tout autre hôte est appelé via l'API compatible OpenAI.",
|
||
"statusConfigured": "Configurée",
|
||
"statusNotConfigured": "Non configurée",
|
||
"keyLabel": "Clé API",
|
||
"keyPlaceholder": "sk-...",
|
||
"keyPlaceholderSet": "Enregistrée ({preview}). Saisissez une nouvelle clé pour la remplacer",
|
||
"modelLabel": "Modèle",
|
||
"baseUrlLabel": "URL de base",
|
||
"save": "Enregistrer",
|
||
"remove": "Supprimer la clé",
|
||
"removeTitle": "Supprimer la clé du serveur ?",
|
||
"removeBody": "Les comptes sans clé personnelle perdent aussitôt les fonctions IA. La clé n’est affichée nulle part une fois enregistrée : il vous faudra l’original pour la remettre.",
|
||
"removeConfirm": "Supprimer la clé",
|
||
"saved": "Paramètres de la clé IA du serveur enregistrés",
|
||
"error": "Échec de l'enregistrement de la clé IA du serveur",
|
||
"legacyGrantTitle": "ALLOW_LOCAL_AI_PRIVATE_HOSTS=true est obsolète",
|
||
"legacyGrantBody": "Ce réglage permet encore à la clé serveur ci-dessus et aux réglages d'IA enregistrés sur un compte administrateur d'atteindre votre réseau, et sera supprimé dans une version ultérieure. Les autres comptes ont déjà besoin que leur point d'accès IA figure dans AI_PRIVATE_ORIGINS. Définissez AI_PRIVATE_ORIGINS dans l'environnement du serveur, redémarrez, puis supprimez ALLOW_LOCAL_AI_PRIVATE_HOSTS.",
|
||
"legacyGrantOrigins": "Les URL d'IA enregistrées sur cette instance qui pointent vers votre réseau :",
|
||
"legacyGrantNoOrigins": "Aucune URL d'IA enregistrée sur cette instance ne pointe vers votre réseau, vous pouvez donc supprimer ALLOW_LOCAL_AI_PRIVATE_HOSTS dès maintenant."
|
||
},
|
||
"providerHealth": {
|
||
"title": "État des fournisseurs d'IA",
|
||
"description": "État de livraison de chaque fournisseur d'IA, agrégé depuis le registre de reprise par utilisateur.",
|
||
"loading": "Chargement de l'état des fournisseurs…",
|
||
"loadError": "Impossible de charger l'état des fournisseurs.",
|
||
"empty": "Aucun appel d'IA n'a encore été enregistré.",
|
||
"trackedUsers": "{count} utilisateurs suivis",
|
||
"lastOk": "dernier succès {at}",
|
||
"lastFailure": "dernier échec {at}",
|
||
"lastFailureStatus": "HTTP {status}",
|
||
"statusHealthy": "En bon état",
|
||
"statusFailing": "{failing} sur {tracked} en échec, {run} d'affilée",
|
||
"typeAdminOpenai": "Clé du serveur (opérateur)",
|
||
"typeAdminCodex": "ChatGPT central (opérateur)",
|
||
"typeOpenai": "Clé OpenAI (personnelle)",
|
||
"typeAnthropic": "Clé Anthropic (personnelle)",
|
||
"typeCodex": "Connexion ChatGPT (personnelle)",
|
||
"typeLocal": "Modèle local (personnel)",
|
||
"typeGateway": "Passerelle compatible OpenAI (personnelle)",
|
||
"spendToday": "Aujourd'hui, selon le jour civil de chaque compte : {total} jetons, dont {operator} sur la clé de l'opérateur (comptes avec consommation : {accounts}).",
|
||
"statusPaused": "En pause",
|
||
"pausedHint": "En pause après des échecs répétés pour {count} utilisateurs jusqu’au {at}. Il sera ensuite réessayé automatiquement.",
|
||
"modelNotServed": "Le point d’accès ne propose plus le modèle {model}. Choisissez dans les réglages IA un modèle qu’il propose.",
|
||
"usageLevels": "Comptes par niveau d'usage de l'IA : {frugal} économe, {standard} standard, {full} complet."
|
||
},
|
||
"aiQuality": {
|
||
"title": "Qualité des analyses",
|
||
"loading": "Chargement du résumé des retours...",
|
||
"loadError": "Échec du chargement du résumé de qualité des analyses. Essayez d'actualiser la page.",
|
||
"empty": "Aucun retour pour l'instant. L'agrégateur s'exécute chaque jour à 04:00 ; dès que les utilisateurs évaluent les recommandations, les taux d'utilité apparaissent ici.",
|
||
"windowLabel": "{days} derniers jours",
|
||
"generatedAtLabel": "Généré",
|
||
"colSeverity": "Gravité",
|
||
"colMetric": "Métrique",
|
||
"colProvider": "Fournisseur",
|
||
"colPromptVersion": "Prompt",
|
||
"colHelpful": "Utile",
|
||
"colNotHelpful": "Pas utile",
|
||
"colHelpfulRate": "Taux d'utilité"
|
||
},
|
||
"coachFeedback": {
|
||
"title": "Retours sur le Coach",
|
||
"loading": "Chargement du résumé des retours sur le Coach...",
|
||
"loadError": "Échec du chargement du résumé des retours sur le Coach. Essayez d'actualiser la page.",
|
||
"empty": "Aucun retour sur le Coach pour l'instant. L'agrégateur s'exécute chaque jour à 04:00 ; dès que les utilisateurs évaluent les réponses du Coach, les taux d'utilité apparaissent ici.",
|
||
"windowLabel": "{days} derniers jours",
|
||
"generatedAtLabel": "Généré",
|
||
"colPromptVersion": "Version du prompt",
|
||
"colTone": "Ton",
|
||
"colVerbosity": "Niveau de détail",
|
||
"colHelpful": "Utile",
|
||
"colNotHelpful": "Pas utile",
|
||
"colN": "n",
|
||
"colHelpfulRate": "Taux d'utilité"
|
||
},
|
||
"workerStatus": "Worker de tâches",
|
||
"workerRunning": "En cours",
|
||
"workerStopped": "Arrêté",
|
||
"lastReminderCheck": "Dernière vérification des rappels",
|
||
"appSettings": "Paramètres de l'application",
|
||
"appSettingsDescription": "Valeurs globales par défaut pour l’inscription, la langue et le fuseau horaire des nouveaux comptes.",
|
||
"registrationEnabled": "Autoriser l'inscription",
|
||
"registrationEnabledDescription": "Lorsque cette option est désactivée, les nouveaux utilisateurs ne peuvent pas s'inscrire.",
|
||
"registrationOpenHint": "L'inscription est ouverte : toute personne pouvant accéder à cette instance peut créer un compte. Fermez-la ici une fois que tout le monde a un compte.",
|
||
"defaultLanguage": "Langue par défaut",
|
||
"defaultLanguageDescription": "Utilisé pour les nouveaux utilisateurs et comme solution de repli.",
|
||
"defaultUserTimezone": "Fuseau horaire par défaut pour les nouveaux comptes",
|
||
"defaultUserTimezoneDescription": "Utilisé pour les nouveaux comptes sans fuseau détecté par le navigateur ; les comptes existants gardent le leur.",
|
||
"defaultUserTimezoneFallback": "Europe/Berlin (par défaut)",
|
||
"servicesGlobal": "Canaux et API",
|
||
"servicesGlobalDescription": "Les services désactivés ne sont disponibles pour aucun utilisateur.",
|
||
"telegramGlobal": "Autoriser les notifications Telegram.",
|
||
"ntfyGlobal": "Autoriser les notifications ntfy.",
|
||
"webPushGlobal": "Autoriser les notifications push du navigateur.",
|
||
"integrationWebPush": "Web Push",
|
||
"offlineGeoLabel": "Données géographiques",
|
||
"offlineGeoEnabled": "Hors ligne (GeoLite2)",
|
||
"offlineGeoFallback": "En ligne ({host}) : montez les bases GeoLite2 et définissez GEOLITE2_DIR",
|
||
"heapLimitLabel": "Limite du tas",
|
||
"heapLimitValue": "{mb} Mo",
|
||
"heapLimitLow": "{mb} Mo, trop juste : définissez APP_MEMORY_LIMIT=1536m dans .env",
|
||
"memoryBelowFloor": "Conteneur {mb} Mo, sous le minimum pris en charge de {floor} Mo : définissez APP_MEMORY_LIMIT={floor}m dans .env",
|
||
"offlineGeoOff": "Désactivé",
|
||
"offlineGeoChosen": "En ligne ({host})",
|
||
"apiGlobal": "Autoriser les points de terminaison d'API et les jetons d'API.",
|
||
"umamiTitle": "Umami",
|
||
"umamiDescription": "Analyse web avec Umami.",
|
||
"glitchtipTitle": "GlitchTip",
|
||
"glitchtipDescription": "Suivi des erreurs avec GlitchTip.",
|
||
"webPushVapidTitle": "Web Push VAPID",
|
||
"umamiEnabled": "Activer le suivi Umami",
|
||
"umamiScriptUrl": "URL du script Umami",
|
||
"umamiScriptUrlPlaceholder": "https://analytics.example.com/script.js",
|
||
"umamiWebsiteId": "ID du site web Umami",
|
||
"umamiWebsiteIdPlaceholder": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
|
||
"glitchtipEnabled": "Activer le suivi des erreurs GlitchTip",
|
||
"glitchtipDsn": "GlitchTip DSN",
|
||
"glitchtipDsnPlaceholder": "https://<public-key>@glitchtip.example.com/<project-id>",
|
||
"glitchtipEnvironment": "Environnement GlitchTip",
|
||
"glitchtipEnvironmentPlaceholder": "production",
|
||
"glitchtipTargetOn": "Les rapports d'erreur vont vers {host}.",
|
||
"glitchtipTargetOff": "Les rapports d'erreur restent sur cet hôte. Rien n'est envoyé.",
|
||
"glitchtipTargetNoTarget": "Le suivi des erreurs est activé, mais aucune cible n'est définie, donc rien n'est envoyé.",
|
||
"glitchtipUnproven": "Non confirmé",
|
||
"glitchtipDeliveryUnproven": "Une cible est définie, mais aucun rapport n'a encore quitté cet hôte. Appuyez sur Tester pour voir si elle en accepte un.",
|
||
"glitchtipDeliveryStale": "Aucun rapport n'a quitté cet hôte depuis {hours} h. Appuyez sur Tester pour vérifier que la cible en accepte toujours.",
|
||
"glitchtipDeliveryFailed": "Le dernier rapport n'est pas passé ({reason}).",
|
||
"webPushVapidDescription": "Configurez ici les clés VAPID et le subject pour que le push du navigateur fonctionne sans variables d'environnement.",
|
||
"webPushVapidPublicKey": "Clé publique VAPID",
|
||
"webPushVapidPublicKeyPlaceholder": "BElx... (Base64URL)",
|
||
"webPushVapidPrivateKey": "Clé privée VAPID",
|
||
"webPushVapidPrivateKeyPlaceholder": "Facultatif : saisissez une nouvelle clé privée",
|
||
"webPushVapidSubject": "Subject VAPID",
|
||
"webPushVapidSubjectPlaceholder": "mailto:you@example.com",
|
||
"webPushVapidGenerate": "Générer les clés",
|
||
"webPushVapidGenerating": "Génération…",
|
||
"webPushVapidGenerated": "Clés VAPID générées. Enregistrez le sujet pour terminer.",
|
||
"webPushVapidGenerateFailed": "Impossible de générer les clés VAPID.",
|
||
"webPushVapidGenerateConfirm": "Les clés VAPID sont déjà configurées. Générer une nouvelle paire invalide tous les abonnements push du navigateur : chaque appareil doit se réabonner. Continuer ?",
|
||
"webPushVapidGenerateConfirmTitle": "Régénérer les clés VAPID ?",
|
||
"webPushVapidRegenerate": "Régénérer",
|
||
"configured": "Configuré",
|
||
"monitoringTestSuccess": "Événement de test envoyé",
|
||
"monitoringTestFailed": "Échec du test de surveillance",
|
||
"assistant": {
|
||
"title": "Assistant",
|
||
"description": "Chaque interrupteur arrête le travail d'IA qu'il couvre et masque son texte, tandis que données et scores continuent de se charger.",
|
||
"master": {
|
||
"title": "Assistant activé",
|
||
"description": "Interrupteur principal de toutes les fonctions d'IA. Désactivé, rien n'est envoyé à un modèle et tous les interrupteurs ci-dessous sont désactivés."
|
||
},
|
||
"coach": {
|
||
"title": "Coach",
|
||
"description": "Chat, entretien de la mémoire du Coach et rappels d'IA. Les conversations enregistrées restent lisibles et supprimables."
|
||
},
|
||
"briefing": {
|
||
"title": "Briefing quotidien",
|
||
"description": "Le briefing quotidien, ses premières lignes ailleurs dans l'application et les synthèses de période écrites par un modèle."
|
||
},
|
||
"insightStatus": {
|
||
"title": "Notes d'état",
|
||
"description": "Notes courtes qu'un modèle écrit par mesure et par indicateur, notes d'entraînement et lignes de réaction. La plus grande part de la consommation de jetons."
|
||
},
|
||
"documentAi": {
|
||
"title": "Lecture de documents",
|
||
"description": "Lecture par IA des documents enregistrés, scan des comptes rendus de laboratoire et extraction de médicaments à partir de texte. La plus grande part des données qui quittent le serveur."
|
||
},
|
||
"reasoning": {
|
||
"enabled": "Autoriser la réflexion approfondie",
|
||
"max": "Profondeur de réflexion maximale",
|
||
"description": "Les modèles réfléchissent avant de répondre : le Coach, le briefing quotidien et les synthèses de période. Plus précis, plus de jetons."
|
||
}
|
||
},
|
||
"modules": {
|
||
"title": "Disponibilité des modules",
|
||
"description": "Désactivez un module pour tout le serveur.",
|
||
"saveError": "Impossible de mettre à jour la disponibilité des modules.",
|
||
"detail": "Le poids, la tension et le pouls sont des mesures essentielles et restent toujours actifs.",
|
||
"coachFollowsSwitch": "Suit l'interrupteur Coach de la section Coach."
|
||
},
|
||
"invites": {
|
||
"title": "Liens d'invitation",
|
||
"description": "Chaque lien permet une inscription même lorsque les inscriptions sont fermées.",
|
||
"create": "Créer une invitation",
|
||
"createTitle": "Créer une invitation",
|
||
"createDescription": "Le lien permet une inscription même lorsque les inscriptions sont fermées.",
|
||
"ttlLegend": "Valable pendant",
|
||
"createDays": "{days} jours",
|
||
"maxUsesLabel": "Utilisations maximales",
|
||
"maxUsesHint": "Nombre d'inscriptions que ce lien autorise (1–50).",
|
||
"createConfirm": "Créer l'invitation",
|
||
"createdToast": "Invitation créée",
|
||
"createError": "Impossible de créer l'invitation.",
|
||
"tokenTitle": "Lien d'invitation",
|
||
"tokenOnceHint": "Copiable uniquement maintenant : copiez le lien ou faites scanner le code QR.",
|
||
"hashExplainer": "Seul un hachage du lien est stocké : il ne pourra plus être affiché. En cas de perte, révoquez l'invitation et créez-en une nouvelle.",
|
||
"copyLink": "Copier le lien",
|
||
"copiedToast": "Lien copié",
|
||
"copyError": "Échec de la copie.",
|
||
"qrAlt": "Code QR du lien d'invitation",
|
||
"loadError": "Impossible de charger les invitations.",
|
||
"emptyTitle": "Aucune invitation pour l'instant",
|
||
"emptyDescription": "Créez un lien d'invitation pour admettre quelqu'un malgré des inscriptions fermées.",
|
||
"colStatus": "Statut",
|
||
"colCreated": "Créée",
|
||
"colExpires": "Expire",
|
||
"colUses": "Utilisations",
|
||
"colRedeemedBy": "Utilisée par",
|
||
"colActions": "Actions",
|
||
"byCreator": "par {by}",
|
||
"expiresInDaysOne": "dans 1 jour",
|
||
"expiresInDaysOther": "dans {count} jours",
|
||
"statusActive": "Active",
|
||
"statusExpired": "Expirée",
|
||
"statusExhausted": "Épuisée",
|
||
"statusRevoked": "Révoquée",
|
||
"redeemerDeleted": "compte supprimé",
|
||
"redeemedByMore": "{username} + {count} autres",
|
||
"redemptionsTitle": "{count} utilisations",
|
||
"revoke": "Révoquer",
|
||
"revokeAria": "Révoquer l'invitation",
|
||
"revokeConfirmTitle": "Révoquer cette invitation ?",
|
||
"revokeConfirmBody": "Le lien d'invitation devient immédiatement invalide. Les comptes déjà créés avec ce lien sont conservés et l'historique des utilisations reste visible.",
|
||
"revokeConfirmAction": "Révoquer",
|
||
"cancel": "Annuler",
|
||
"revokedToast": "Invitation révoquée.",
|
||
"revokeError": "Impossible de révoquer l'invitation."
|
||
},
|
||
"userManagement": "Comptes",
|
||
"userManagementDescription": "Rôles, réinitialisations de mot de passe et déconnexions forcées pour chaque compte.",
|
||
"userName": "Nom",
|
||
"userEmail": "E-mail",
|
||
"userRole": "Rôle",
|
||
"userPasskeys": "Passkeys",
|
||
"userCreated": "Créé",
|
||
"userActions": "Actions",
|
||
"editUser": "Modifier l'utilisateur",
|
||
"editUserTitle": "Modifier l'utilisateur : {name}",
|
||
"demoteToUser": "Rétrograder en utilisateur",
|
||
"promoteToAdmin": "Promouvoir administrateur",
|
||
"toUser": "Définir comme utilisateur",
|
||
"toAdmin": "Définir comme administrateur",
|
||
"ownRoleUnchangeable": "Impossible de modifier son propre rôle",
|
||
"resetPassword": "Réinitialiser le mot de passe",
|
||
"resetPasswordTitle": "Réinitialiser le mot de passe : {name}",
|
||
"newPassword": "Nouveau mot de passe",
|
||
"newPasswordPlaceholder": "Au moins 12 caractères",
|
||
"passwordReset": "Le mot de passe a été réinitialisé",
|
||
"reset": "Réinitialiser",
|
||
"loadingUsers": "Chargement des utilisateurs...",
|
||
"apiTokens": "Jetons d'API",
|
||
"apiTokensDescription": "Tous les jetons d’API actifs et révoqués de l’ensemble des comptes.",
|
||
"tokenUser": "Utilisateur",
|
||
"tokenName": "Nom",
|
||
"tokenPermissions": "Autorisations",
|
||
"tokenPermissionAll": "Tout",
|
||
"tokenPermissionAllTooltip": "Autorisation joker : ce jeton peut appeler toutes les routes de l'API.",
|
||
"tokenStatus": "Statut",
|
||
"tokenLastUsed": "Dernière utilisation",
|
||
"tokenCreated": "Créé",
|
||
"tokenNeverUsed": "Jamais",
|
||
"tokensEmptyTitle": "Aucun jeton d'API pour l'instant",
|
||
"tokensEmptyDescription": "Les jetons sont émis lorsqu'un client natif se connecte ou via Paramètres → Compte.",
|
||
"loginOverviewDescription": "Événements de connexion et d’authentification de tous les comptes, filtrables et exportables en CSV.",
|
||
"loginOverviewFilterLabel": "Filtrer les événements",
|
||
"allAuthEvents": "Tous les événements d'authentification",
|
||
"failedOnly": "Échecs uniquement",
|
||
"loginEmptyDescription": "Les connexions, déconnexions et modifications de passkey apparaîtront ici.",
|
||
"loginEmptyFailedTitle": "Aucune tentative de connexion échouée",
|
||
"loginEmptyFailedDescription": "C'est l'état sûr. Passez à tous les événements pour voir les connexions réussies.",
|
||
"loginEmptyResetFilter": "Afficher tous les événements",
|
||
"showingEntries": "Affichage de {count} sur {total} entrées d'authentification",
|
||
"status": "Statut",
|
||
"action": "Action",
|
||
"ip": "IP",
|
||
"location": "Emplacement",
|
||
"timestamp": "Heure",
|
||
"provider": "Fournisseur",
|
||
"providerPassword": "Mot de passe",
|
||
"providerPasskey": "Passkey",
|
||
"providerApiToken": "Jeton d'API",
|
||
"providerWithings": "Withings",
|
||
"providerUnknown": "Inconnu",
|
||
"outcome": "Résultat",
|
||
"outcomeSuccess": "Succès",
|
||
"outcomeFailed": "Échec",
|
||
"auditDetails": "Détails",
|
||
"deleteAllData": "Supprimer toutes les données globalement",
|
||
"deleteAllDescription": "Supprime tous les enregistrements de tous les comptes ; les comptes et leurs identifiants de connexion sont conservés.",
|
||
"deleteAllConfirm": "Vraiment supprimer toutes les données ?",
|
||
"deleteAllConfirmDescription": "Cette action supprime définitivement tous les enregistrements de tous les comptes dans l'ensemble de la base de données, et non une sélection de tables. Sont conservés : les comptes utilisateurs et leurs identifiants de connexion, la configuration de l'instance et les délégations qui gardent les profils gérés accessibles. Un reçu de cet effacement est ensuite écrit dans le journal d'audit ; l'historique antérieur part avec le reste.",
|
||
"deleteButton": "Supprimer toutes les données",
|
||
"deleteAllPromptLabel": "Tapez {token} pour continuer",
|
||
"finalDelete": "Supprimer définitivement",
|
||
"deletedResult": "{rows} lignes supprimées dans {tables} tables. Les comptes utilisateurs et les identifiants de connexion ont été conservés.",
|
||
"authRegister": "Inscription",
|
||
"authClaim": "Profil repris",
|
||
"authLogin": "Connexion",
|
||
"authLoginPasskey": "Connexion par passkey",
|
||
"authLoginPassword": "Connexion par mot de passe",
|
||
"authLoginFailed": "Échec",
|
||
"authLogout": "Déconnexion",
|
||
"authPasskeyRegister": "Passkey ajoutée",
|
||
"authPasskeyDelete": "Passkey supprimée",
|
||
"authTokenAutoissueNative": "Jeton de client natif émis",
|
||
"authTokenRefresh": "Jeton renouvelé",
|
||
"authTokenRevoke": "Jeton révoqué",
|
||
"medicationReminders": "Rappels de médicaments",
|
||
"medicationRemindersDescription": "Seuils des transitions de couleur des badges de rappel sur les fiches de médicaments.",
|
||
"notificationHealth": {
|
||
"title": "État de distribution",
|
||
"description": "Résultats de distribution de tous les utilisateurs sur les dernières 24 heures.",
|
||
"empty": "Aucune notification envoyée sur cette période.",
|
||
"ok": "OK",
|
||
"error": "Échecs",
|
||
"skipped": "Ignorées",
|
||
"autoDisabled": "Canaux désactivés automatiquement"
|
||
},
|
||
"reminderLateMinutes": "Seuil de retard (minutes)",
|
||
"reminderLateMinutesDescription": "Minutes après la fin de la fenêtre avant que le badge passe du jaune à l'orange.",
|
||
"reminderMissedMinutes": "Seuil d'oubli (minutes)",
|
||
"reminderMissedMinutesDescription": "Minutes après la fin de la fenêtre avant que la prise soit considérée comme manquée.",
|
||
"notificationTestSend": "Envoyer un test",
|
||
"notificationTestSuccess": "Notification de test envoyée",
|
||
"notificationTestFailed": "Échec de l'envoi de la notification de test",
|
||
"reminderCheckRun": "Lancer la vérification des rappels",
|
||
"reminderCheckSuccess": "Vérification des rappels terminée",
|
||
"reminderCheckFailed": "Échec de la vérification des rappels",
|
||
"reminderCheckResults": "Résultats",
|
||
"reminderCheckNotifOn": "Notifications activées",
|
||
"reminderCheckNotifOff": "Notifications désactivées",
|
||
"reminderCheckEventsToday": "Événements aujourd'hui",
|
||
"reminderCheckNotifSent": "Envoyées",
|
||
"shell": {
|
||
"overview": "Vue d'ensemble",
|
||
"sectionsNav": "Sections d'administration"
|
||
},
|
||
"overview": {
|
||
"snapshotTitle": "Instantané du système",
|
||
"snapshotDatabase": "Base de données",
|
||
"snapshotWorker": "Worker",
|
||
"snapshotStarted": "Démarré",
|
||
"snapshotOfflineGeo": "Données géographiques",
|
||
"snapshotOfflineGeoOn": "Hors ligne (GeoLite2)",
|
||
"snapshotOfflineGeoOff": "En ligne ({host})",
|
||
"versionTileTitle": "Version",
|
||
"versionTileVersion": "Version en cours",
|
||
"versionTileBuildSha": "SHA de build",
|
||
"versionTileBuiltAt": "Compilé le",
|
||
"versionTileUpdateAvailable": "Mise à jour disponible : {tag}",
|
||
"versionTileUpToDate": "À jour",
|
||
"versionTileCheckOff": "Vérification des mises à jour désactivée",
|
||
"snapshotLoadError": "Échec du chargement de l'instantané du système.",
|
||
"snapshotLoading": "Chargement de l'instantané...",
|
||
"auditTitle": "Activité récente",
|
||
"auditEmpty": "Aucune entrée d'audit récente.",
|
||
"auditLoadError": "Échec du chargement de l'activité récente.",
|
||
"auditLoading": "Chargement de l'activité...",
|
||
"auditViewAll": "Tout afficher"
|
||
},
|
||
"section": {
|
||
"system-status": {
|
||
"title": "État du système",
|
||
"subtitle": "État du worker, de la base de données et des intégrations en un coup d'œil."
|
||
},
|
||
"general": {
|
||
"title": "Général",
|
||
"subtitle": "Inscription, langue par défaut et autres commutateurs applicables à toute l'application."
|
||
},
|
||
"services": {
|
||
"title": "Services",
|
||
"subtitle": "Activez ou désactivez les canaux de notification et l'API pour tout le serveur."
|
||
},
|
||
"integrations": {
|
||
"title": "Intégrations",
|
||
"subtitle": "Configurez Umami, GlitchTip, Web Push et les rapports de bug."
|
||
},
|
||
"coach": {
|
||
"title": "Coach",
|
||
"subtitle": "Surfaces d'assistance, clé du serveur et qualité des retours."
|
||
},
|
||
"reminders": {
|
||
"title": "Rappels",
|
||
"subtitle": "Réglez les seuils des rappels de médicaments et lancez une vérification manuelle."
|
||
},
|
||
"users": {
|
||
"title": "Utilisateurs",
|
||
"subtitle": "Gérez les comptes utilisateurs, les rôles et les sessions actives.",
|
||
"filter": {
|
||
"all": "Tout",
|
||
"admin": "Administrateurs",
|
||
"user": "Utilisateurs"
|
||
},
|
||
"filterLabel": "Filtrer les utilisateurs",
|
||
"forceLogout": "Forcer la déconnexion",
|
||
"forceLogoutConfirmTitle": "Forcer la déconnexion de {name} ?",
|
||
"forceLogoutConfirmBody": "Toutes les sessions actives de cet utilisateur seront révoquées. Il devra se reconnecter sur chaque appareil.",
|
||
"forceLogoutSuccess": "{name} déconnecté de {count} session(s)",
|
||
"forceLogoutFailed": "Échec de la déconnexion forcée",
|
||
"cannotLogoutSelf": "Impossible de forcer votre propre déconnexion",
|
||
"emptyTitle": "Aucun utilisateur dans cette vue",
|
||
"emptyDescription": "Aucun utilisateur ne correspond au filtre actuel.",
|
||
"emptyResetFilter": "Afficher tous les utilisateurs"
|
||
},
|
||
"invites": {
|
||
"title": "Invitations",
|
||
"subtitle": "Créer, suivre et révoquer les liens d'invitation."
|
||
},
|
||
"api-tokens": {
|
||
"title": "Jetons d'API",
|
||
"subtitle": "Jetons bearer actifs émis aux clients natifs et aux intégrations."
|
||
},
|
||
"login-overview": {
|
||
"title": "Aperçu des connexions",
|
||
"subtitle": "Journal d'audit des événements d'authentification et d'administration."
|
||
},
|
||
"auditLog": {
|
||
"filterActor": "Acteur (ID utilisateur ou nom d'utilisateur)",
|
||
"filterAction": "Action",
|
||
"filterActionAll": "Toutes les actions",
|
||
"filterTarget": "Cible (ID ou chemin)",
|
||
"filterDate": "Plage de dates",
|
||
"range24h": "Dernières 24 heures",
|
||
"range7d": "7 derniers jours",
|
||
"range30d": "30 derniers jours",
|
||
"rangeAll": "Toute la période",
|
||
"perPage": "Par page",
|
||
"prev": "Précédent",
|
||
"next": "Suivant",
|
||
"pageOf": "Page {page} sur {total}",
|
||
"export": "Exporter en CSV",
|
||
"empty": "Aucune entrée d'audit ne correspond aux filtres actuels."
|
||
},
|
||
"app-logs": {
|
||
"title": "Journaux de l'app",
|
||
"subtitle": "Affichez les wide-events structurés les plus récents émis par ce processus.",
|
||
"processNote": "Seuls les journaux du processus de l'app sont affichés ; ceux du processus worker vont vers Loki lorsque cette intégration est configurée.",
|
||
"filterTraceId": "ID de trace",
|
||
"filterAction": "L'action contient…",
|
||
"filterLevel": "Niveau",
|
||
"levelAll": "Tous les niveaux",
|
||
"filterRange": "Fenêtre temporelle",
|
||
"range15m": "15 dernières minutes",
|
||
"range1h": "Dernière heure",
|
||
"range6h": "6 dernières heures",
|
||
"rangeAll": "Tampon entier",
|
||
"colLevel": "Niveau",
|
||
"colTimestamp": "Horodatage",
|
||
"colAction": "Action",
|
||
"colDuration": "Durée",
|
||
"colTraceId": "Trace",
|
||
"viewDetails": "Voir les détails de {action} à {timestamp}",
|
||
"showing": "Affichage de {count} sur jusqu'à {bufferMax} événements en mémoire tampon",
|
||
"empty": "Le tampon est vide",
|
||
"emptyDescription": "Aucun événement ne correspond encore aux filtres actuels. Cliquez sur Actualiser après avoir généré du trafic.",
|
||
"refresh": "Actualiser",
|
||
"eventDetails": "Détails de l'événement",
|
||
"closeDetails": "Fermer les détails",
|
||
"processDetail": "Le tampon est volatil et limité à 500 entrées.",
|
||
"cardTitle": "Événements récents",
|
||
"filterErrorId": "ID d'erreur"
|
||
},
|
||
"backups": {
|
||
"title": "Sauvegardes",
|
||
"subtitle": "Instantanés de données hebdomadaires par utilisateur stockés dans PostgreSQL.",
|
||
"description": "Chaque utilisateur dispose d'un instantané glissant par type de sauvegarde. Les tailles indiquent le blob chiffré. Télécharger déchiffre l'instantané pour l'administrateur qui le demande ; le texte chiffré reste dans la base de données.",
|
||
"runNow": "Sauvegarder maintenant",
|
||
"runEnqueued": "Tâche de sauvegarde mise en file d'attente",
|
||
"runFailed": "Échec de la mise en file d'attente de la sauvegarde",
|
||
"loading": "Chargement des sauvegardes...",
|
||
"loadError": "Échec du chargement des sauvegardes.",
|
||
"emptyTitle": "Aucune sauvegarde pour l'instant",
|
||
"emptyDescription": "Les sauvegardes s'exécutent automatiquement chaque dimanche à 03:00, ou lancez-en une maintenant pour créer le premier instantané.",
|
||
"colUser": "Utilisateur",
|
||
"colType": "Type",
|
||
"typeWeeklyAuto": "Hebdomadaire (auto)",
|
||
"typeManual": "Manuelle",
|
||
"colSize": "Taille",
|
||
"colCreatedAt": "Dernier instantané",
|
||
"colActions": "Actions",
|
||
"retentionLabel": "Conservation : {days} jours",
|
||
"scheduleStaleTitle": "La sauvegarde hebdomadaire s'est arrêtée",
|
||
"scheduleStaleDescription": "La copie planifiée la plus récente date de {days} jours. Une exécution hebdomadaire qui fonctionne n'en laisse jamais une dépasser {threshold} jours.",
|
||
"scheduleFailedTitle": "La dernière exécution planifiée de la sauvegarde a échoué",
|
||
"scheduleFailedDescription": "{when} : {reason}",
|
||
"scheduleFailedNoReason": "aucune raison enregistrée",
|
||
"scheduleRemedy": "Lancez une sauvegarde maintenant et vérifiez qu'une nouvelle ligne apparaît. Si elle échoue à nouveau, le journal du worker indique le compte sur lequel elle s'est arrêtée.",
|
||
"activity": {
|
||
"running": "En cours depuis {when}.",
|
||
"interruptedTitle": "Une exécution s'est arrêtée en cours de route sans reprendre",
|
||
"interruptedAccount": "{username} : commencée {when}, jamais terminée",
|
||
"interruptedRemedy": "L'application a très probablement redémarré ou manqué de mémoire pendant l'écriture de cette copie. La prochaine exécution traite ces comptes en dernier, afin que tous les autres reçoivent leur copie d'abord. Si cela se reproduit, donnez plus de mémoire au conteneur."
|
||
},
|
||
"download": "Télécharger",
|
||
"downloadAria": "Télécharger la sauvegarde de {username}",
|
||
"downloadFailed": "Échec du téléchargement",
|
||
"downloadStarted": "Téléchargement démarré",
|
||
"uploadTitle": "Téléverser une sauvegarde",
|
||
"uploadDescription": "Validez un fichier de sauvegarde et stockez-le comme instantané manuel. La restauration est une étape distincte.",
|
||
"uploadButton": "Téléverser un fichier",
|
||
"uploadHelp": "Une sauvegarde HealthLog au format .json ou .json.gz. Le fichier est compressé avant l’envoi ; compressé, il peut atteindre 512 Mo.",
|
||
"uploadSuccess": "Sauvegarde téléversée ({count} enregistrements)",
|
||
"uploadFailed": "Échec du téléversement",
|
||
"restore": "Restaurer",
|
||
"restoreAria": "Restaurer à partir de la sauvegarde de {username}",
|
||
"restoreTitle": "Restaurer à partir d'une sauvegarde",
|
||
"restoreDescription": "Cette action remplacera TOUTES les données actuelles de {username} par l'instantané du {when}. Les mesures, médicaments, événements de prise, entrées d'humeur, canaux de notification, abonnements push et suppressions Telegram en file d'attente existants seront supprimés.",
|
||
"restoreInstanceSettingsLabel": "Restaurer aussi les paramètres de l'instance",
|
||
"restoreInstanceSettingsHint": "Inscription, exigence MFA, langue par défaut, disponibilité des modules, configuration des notifications et de l'IA : repris de l'instantané et appliqués à tout le monde sur cette installation. Laissez décoché pour ne restaurer que ce compte.",
|
||
"restorePromptLabel": "Tapez RESTORE pour continuer",
|
||
"previewTitle": "Contenu de la sauvegarde",
|
||
"previewLoading": "Lecture du contenu…",
|
||
"previewUnavailable": "Le contenu n'a pas pu être lu, mais la restauration reste possible.",
|
||
"previewStillReading": "Cette sauvegarde a été créée par une version antérieure, son contenu est donc lu en entier, ce qui prend un moment pour un gros dossier. Rouvrez cette fenêtre dans quelques minutes pour le voir. La restauration n'en dépend pas.",
|
||
"previewEmpty": "Le fichier ne contient aucun enregistrement.",
|
||
"previewOther": "Autres enregistrements",
|
||
"previewMeasurements": "Mesures",
|
||
"previewMedications": "Médicaments et prises",
|
||
"previewMood": "Entrées d'humeur",
|
||
"previewLabs": "Résultats de laboratoire",
|
||
"previewDocuments": "Documents",
|
||
"previewWorkouts": "Entraînements",
|
||
"previewCycles": "Données de cycle",
|
||
"previewVisits": "Visites médicales",
|
||
"previewVaccinations": "Vaccinations",
|
||
"previewReminders": "Rappels de prévention",
|
||
"previewCustomMetrics": "Mesures personnalisées",
|
||
"previewHealthScores": "Historique du score",
|
||
"restoreConfirm": "Restaurer maintenant",
|
||
"restoreInProgress": "Restauration en cours...",
|
||
"restoreSuccess": "Restauration terminée",
|
||
"restoreFailed": "Échec de la restauration",
|
||
"restoreSkippedToast": "Restauration terminée, {links} liens de symptômes n'ont pas pu être rétablis",
|
||
"restoreSkippedTitle": "{links} liens n'ont pas été restaurés",
|
||
"restoreSkippedDescription": "Le fichier référence des entrées que cette installation ne connaît pas. Tout le reste a été restauré. La même liste figure dans le journal d'audit.",
|
||
"restoreSkippedLinks": "{count} liens",
|
||
"restoreSkippedCycleSymptom": "Symptôme de cycle",
|
||
"restoreSkippedIllnessSymptom": "Symptôme de maladie",
|
||
"restoreSkippedMoodFactor": "Facteur d'humeur",
|
||
"restoreSkippedMoodTag": "Étiquette d'humeur",
|
||
"restoreSkippedVisitReference": "Référence de visite",
|
||
"restoreSkippedVaccinationReference": "Référence de vaccination",
|
||
"restoreSkippedCheckupClosure": "Clôture d'un examen",
|
||
"restoreSkippedReminderReference": "Référence de rappel",
|
||
"restoreSkippedCoachAttachment": "Lien de document du Coach",
|
||
"restoreSkippedCoachReference": "Référence du Coach",
|
||
"restoreSkippedDocumentConditionLink": "Classement du document",
|
||
"restoreSkippedRelationLink": "Lien entre entrées",
|
||
"restoreSkippedExtractedFact": "Donnée du document",
|
||
"restoreSkippedFactCommitment": "Enregistrement de la donnée",
|
||
"docsLink": "Documentation",
|
||
"restoreSkippedPersonalRecordReference": "Provenance d'un record personnel",
|
||
"restoreSkippedEcgReference": "Provenance d'un tracé ECG",
|
||
"restoreSkippedMedicationTarget": "Analyte cible d'un médicament",
|
||
"restoreSkippedScheduleRevisionLink": "Succession des périodes de schéma",
|
||
"restoreSkippedAccountSetting": "Réglage du compte",
|
||
"restoreMissingTitle": "Restauration refusée : le fichier est incomplet",
|
||
"restoreMissingDescription": "Le manifeste du fichier indique qu'il contient la section ci-dessous, et il ne la contient pas. Rien n'a été modifié : une restauration remplace toute une classe d'enregistrements, une section absente l'aurait donc vidée.",
|
||
"restoreMissingRemedy": "Utilise une sauvegarde de reprise après sinistre, ou réexporte le compte et téléverse le nouveau fichier. Une section que le manifeste déclare omise est autre chose et se restaure normalement.",
|
||
"restoreMissingDocuments": "Documents",
|
||
"restoreMissingWorkouts": "Séances",
|
||
"restoreMissingMentalHealth": "Questionnaires de santé mentale",
|
||
"restoreMissingConsent": "Preuves de consentement",
|
||
"offhost": {
|
||
"title": "Copies hors hôte",
|
||
"description": "Quand cet hôte a déposé pour la dernière fois la copie chiffrée de chaque compte dans votre bucket.",
|
||
"loadError": "Impossible de charger l'état hors hôte.",
|
||
"notConfiguredTitle": "La sauvegarde hors hôte n'est pas configurée",
|
||
"notConfiguredDescription": "Aucun bucket ni clé ne sont définis, donc aucune sauvegarde ne quitte cet hôte. Définissez BACKUP_S3_ENDPOINT, BACKUP_S3_BUCKET, BACKUP_S3_ACCESS_KEY, BACKUP_S3_SECRET_KEY et BACKUP_ENCRYPTION_KEY pour activer l'envoi nocturne.",
|
||
"stateFresh": "Récente",
|
||
"stateDue": "Attendue",
|
||
"stateStale": "Périmée",
|
||
"stateNever": "Jamais",
|
||
"stateUnknown": "Pas encore d'enregistrement",
|
||
"neverDetail": "Rien n'est arrivé pour ce compte. Dernière vérification {when}.",
|
||
"unknownDetail": "Aucun cycle nocturne n'a encore enregistré ce compte.",
|
||
"age": "il y a {hours} h",
|
||
"scheduleNote": "L'envoi tourne toutes les {hours} h. Récente signifie dans un cycle, attendue qu'un cycle n'a rien produit, périmée que deux n'ont rien produit.",
|
||
"lifecycleConfigured": "Le bucket supprime les copies après {days} jours grâce à sa propre règle de cycle de vie.",
|
||
"lifecycleMissing": "Le bucket n'a aucune règle de cycle de vie : chaque copie nocturne est donc conservée indéfiniment. Ajoutez une règle qui fait expirer les objets après BACKUP_RETENTION_DAYS.",
|
||
"lifecycleUnknown": "Impossible de savoir si le bucket supprime les anciennes copies : l'identifiant ne peut pas lire sa règle de cycle de vie. Vérifiez qu'une règle fait expirer les objets après BACKUP_RETENTION_DAYS.",
|
||
"pendingDeletions": "Des copies de {count} comptes supprimés ou vidés sont encore dans le bucket et sont en cours de suppression.",
|
||
"pendingDeletionsFailing": "Des copies de {count} comptes supprimés ou vidés sont encore dans le bucket, qui a refusé de les supprimer ({error}). Accordez DeleteObject à l'identifiant ; la suppression est retentée chaque nuit."
|
||
},
|
||
"restoreStarted": "Restauration lancée. Sa progression s'affiche au-dessus de la liste.",
|
||
"restoreActive": "Une restauration de ce compte est déjà en cours. Attends qu'elle se termine.",
|
||
"restoreJobQueuedTitle": "La restauration de {username} attend de démarrer",
|
||
"restoreJobQueuedNote": "Elle démarre dès que le processus en arrière-plan la prend en charge.",
|
||
"restoreJobRunningTitle": "Restauration de {username} en cours",
|
||
"restoreJobRunningNote": "Le compte affiche ses données actuelles jusqu'à la fin de la restauration. Tu peux quitter cette page ; la restauration continue sur le serveur.",
|
||
"restoreJobResumed": "Relancée après le redémarrage du serveur.",
|
||
"restoreJobPhaseValidating": "Vérification du fichier de sauvegarde : {checked} mesures vérifiées",
|
||
"restoreJobPhaseClearing": "Suppression des données actuelles du compte",
|
||
"restoreJobPhaseMeasurements": "Écriture des mesures : {done} sur {total}",
|
||
"restoreJobPhaseSections": "Écriture des autres entrées : {done} sections sur {total}",
|
||
"restoreJobPhaseRebuilding": "Recalcul des graphiques et des résumés",
|
||
"restoreJobSucceededTitle": "Restauration de {username} terminée",
|
||
"restoreJobSucceededDescription": "{count} entrées restaurées. Terminée {when}.",
|
||
"restoreJobFailedTitle": "La restauration de {username} n'a pas abouti",
|
||
"restoreJobFailedKept": "Rien n'a été modifié. La sauvegarde est conservée : tu peux relancer la restauration depuis sa ligne sans la téléverser à nouveau.",
|
||
"restoreFailureNotFound": "La sauvegarde a été supprimée avant que la restauration puisse la lire.",
|
||
"restoreFailureChanged": "La sauvegarde a été remplacée par une copie plus récente pendant l'attente. Vérifie la nouvelle copie, puis relance la restauration.",
|
||
"restoreFailureUndecryptable": "La sauvegarde n'a pas pu être déchiffrée. La clé qui l'a écrite n'est plus configurée, ou la copie stockée a été modifiée.",
|
||
"restoreFailureSchema": "Le fichier n'est pas une sauvegarde HealthLog valide.",
|
||
"restoreFailureVersion": "La sauvegarde a été écrite par une version plus récente de HealthLog. Mets d'abord ce serveur à jour.",
|
||
"restoreFailureOwnerMismatch": "Le fichier de la sauvegarde appartient à un autre compte que la ligne de sauvegarde.",
|
||
"restoreFailureOwnerMissing": "Le compte auquel appartient cette sauvegarde n'existe plus.",
|
||
"restoreFailureSectionMissing": "Le fichier est incomplet : son manifeste nomme une section qu'il ne contient pas.",
|
||
"restoreFailureDocument": "Le fichier contient des documents sans leur contenu, comme un export portable. Utilise une sauvegarde de reprise après sinistre.",
|
||
"restoreFailureTimeBudget": "Cette sauvegarde est trop volumineuse pour être restaurée dans le temps imparti au processus en arrière-plan.",
|
||
"restoreFailureTransaction": "La base de données a refusé la restauration en cours de route, tout a donc été annulé. Le journal du serveur indique l'erreur.",
|
||
"restoreFailureCauseTimeout": "La restauration a duré plus longtemps que la base de données ne l'autorise, tout a donc été annulé. Si l'hôte de la base était chargé, relancez-la quand il est plus calme. Le journal du serveur indique l'étape.",
|
||
"restoreFailureCauseLock": "La restauration a attendu des enregistrements qu'un autre processus modifiait, tout a donc été annulé. Relancez la restauration.",
|
||
"restoreFailureCauseConstraint": "La base de données a refusé un enregistrement de la sauvegarde, tout a donc été annulé. Le journal du serveur indique la table et la règle.",
|
||
"restoreFailureCauseStorage": "La base de données a manqué d'espace disque ou de mémoire pendant la restauration, tout a donc été annulé. Libérez de l'espace sur l'hôte de la base, puis relancez la restauration.",
|
||
"restoreFailureCauseConnection": "La connexion à la base de données a été perdue pendant la restauration, tout a donc été annulé. Vérifiez que la base de données tourne, puis relancez la restauration.",
|
||
"restoreFailureInterrupted": "La restauration s'est arrêtée au redémarrage du serveur et a été annulée. Si elle s'arrête encore, le serveur manque probablement de mémoire.",
|
||
"restoreFailureNotStarted": "Le processus en arrière-plan n'a pas pris la restauration en charge. Vérifie qu'il tourne.",
|
||
"restoreFailureEnqueue": "La restauration n'a pas pu être transmise au processus en arrière-plan. Vérifie qu'il tourne.",
|
||
"restoreFailureAfterCommit": "Les données ont été restaurées, mais une étape suivante a échoué. Les graphiques ne seront peut-être à jour qu'après la prochaine exécution nocturne.",
|
||
"restoreFailureUnexpected": "La restauration s'est arrêtée sur une erreur inattendue et a été annulée. Le journal du serveur indique l'erreur.",
|
||
"restoreFailureKeyMissing": "La sauvegarde a besoin de la clé de chiffrement {keys}, avec laquelle ce serveur ne peut pas l'ouvrir. Remettez la clé dans ENCRYPTION_KEYS, redémarrez, puis relancez la restauration.",
|
||
"restoreFailureForeignReference": "Le fichier renvoie à des éléments qui appartiennent à un autre compte. Rien n'a été écrit.",
|
||
"previewKeyMissing": "Cette sauvegarde ne peut pas être restaurée sur ce serveur : elle a besoin de la clé de chiffrement {keys}. Remettez d'abord la clé dans ENCRYPTION_KEYS et redémarrez.",
|
||
"restoreSkippedSymptomEpisodeReference": "Entrée de symptôme liée à une maladie absente du fichier (conservée sans le lien)",
|
||
"restoreSkippedCycleCiphertext": "Note ou libellé du cycle chiffré avec une clé que ce serveur ne possède pas (jour ou symptôme conservé sans)",
|
||
"restoreSkippedMoodLabelCiphertext": "Nom d’étiquette ou de groupe d’humeur chiffré avec une clé que ce serveur ne possède pas (conservé sans son nom)",
|
||
"restoreSkippedVisitCiphertext": "Texte de consultation ou de praticien chiffré avec une clé que ce serveur ne possède pas (conservé sans)",
|
||
"restoreSkippedVaccinationCiphertext": "Note de vaccination chiffrée avec une clé que ce serveur ne possède pas (dose conservée sans)",
|
||
"restoreSkippedEnvironmentLocationCiphertext": "Lieu d'une période ou d'un jour environnemental chiffré avec une clé que ce serveur ne possède pas (conservé chiffré, ces jours ne sont pas actualisés)"
|
||
},
|
||
"danger-zone": {
|
||
"title": "Zone de danger",
|
||
"subtitle": "Opérations destructrices à l'échelle du système."
|
||
},
|
||
"about": {
|
||
"title": "À propos",
|
||
"subtitle": "Version, licence et état des mises à jour."
|
||
},
|
||
"module-availability": {
|
||
"title": "Modules",
|
||
"subtitle": "Activez ou désactivez les modules pour tous les comptes de ce serveur."
|
||
},
|
||
"encryption": {
|
||
"title": "Chiffrement",
|
||
"subtitle": "Couverture du chiffrement et état de la rotation des clés pour les données au repos.",
|
||
"loadError": "Échec du chargement de l'état du chiffrement.",
|
||
"coverageTitle": "Couverture",
|
||
"coverageDescription": "Combien de lignes chiffrées relèvent de chaque id de clé.",
|
||
"activeKeyId": "Id de clé active",
|
||
"configuredKeys": "Clés configurées",
|
||
"totalRows": "Lignes chiffrées",
|
||
"staleRows": "Lignes hors de la clé active",
|
||
"safeToDropLegacy": "La clé ancienne peut être retirée",
|
||
"rotationIncomplete": "{count} lignes restent à faire tourner",
|
||
"rotationTitle": "Rotation des clés",
|
||
"rotationDescription": "Re-chiffre chaque colonne chiffrée avec la clé active.",
|
||
"rotationState": "État",
|
||
"lastRun": "Dernière exécution : {scanned} analysées, {rotated} tournées, {errors} erreurs.",
|
||
"rotateNow": "Faire tourner maintenant",
|
||
"rotateConfirmTitle": "Re-chiffrer tout le dossier ?",
|
||
"rotateConfirmDescription": "Re-chiffre chaque colonne chiffrée avec la clé active. Cela n'ajoute ni ne retire jamais de clé et peut être relancé sans risque. Cela peut prendre du temps sur les gros comptes.",
|
||
"cancel": "Annuler",
|
||
"rotateConfirm": "Démarrer la rotation",
|
||
"rotateEnqueued": "Rotation démarrée.",
|
||
"rotateFailed": "Impossible de démarrer la rotation.",
|
||
"stepUpNeeded": "Un second facteur récent est requis. Confirmez votre second facteur, ou utilisez l'outil en ligne de commande si aucun n'est configuré.",
|
||
"cliNote": "Un second facteur est requis pour ce bouton. Sans lui, lancez scripts/rotate-encryption-key.ts depuis une copie des sources de cette version ; les étapes sont dans docs/ops/encryption-key-rotation.md.",
|
||
"columnsTitle": "Couverture par colonne",
|
||
"columnsDescription": "Chaque colonne chiffrée avec ses décomptes de lignes sur la clé active par rapport aux clés plus anciennes.",
|
||
"colColumn": "Colonne",
|
||
"colTotal": "Total",
|
||
"colActive": "Sur clé active",
|
||
"colStale": "Obsolètes",
|
||
"state": {
|
||
"idle": "Au repos",
|
||
"running": "En cours",
|
||
"completed": "Terminé",
|
||
"failed": "Échoué"
|
||
},
|
||
"coverageDetail": "Seuls les id de clé et les décomptes sont affichés, jamais le matériel de clé.",
|
||
"backupsTitle": "Clés dont les sauvegardes ont encore besoin",
|
||
"backupsDescription": "Une clé retirée reste nécessaire tant qu'une sauvegarde ci-dessous la mentionne.",
|
||
"backupsStoredLine": "Clé {key} : {count} copies stockées, la plus ancienne du {when}",
|
||
"backupsUnrecordedLine": "{count} copies stockées ont été écrites avant que les sauvegardes n'enregistrent leurs clés (la plus ancienne le {when}). Elles peuvent avoir besoin de n'importe quelle clé de l'époque : gardez toutes les anciennes clés jusqu'à leur remplacement ou suppression.",
|
||
"backupsOffhostLine": "Clé {key} : la dernière copie externe qui en a besoin est arrivée dans le bucket le {when} ; nécessaire jusqu'au {until}",
|
||
"backupsOffhostLineUnknown": "Clé {key} : la dernière copie externe qui en a besoin est arrivée dans le bucket le {when}. La durée de conservation du bucket est inconnue : gardez la clé jusqu'à être sûr que cette copie a disparu.",
|
||
"backupsNone": "Aucune sauvegarde n'a encore enregistré les clés dont elle a besoin.",
|
||
"backupsStillNeed": "Toutes les lignes sont renouvelées, mais des sauvegardes ont encore besoin de {keys}",
|
||
"backupsUnrecordedBadge": "Toutes les lignes sont renouvelées, mais d'anciennes sauvegardes peuvent encore avoir besoin d'une clé retirée",
|
||
"backupsDetail": "La rotation rechiffre chaque ligne, mais une sauvegarde garde la clé sous laquelle son contenu a été écrit, et sa restauration en a besoin. Gardez une clé retirée dans ENCRYPTION_KEYS tant qu'elle figure ci-dessous.",
|
||
"columnsShow": "Afficher le tableau ({count} avec des lignes)",
|
||
"columnsHide": "Masquer le tableau",
|
||
"columnsShowAll": "Afficher les {count} colonnes",
|
||
"columnsShowWithRows": "Seulement les colonnes avec des lignes",
|
||
"columnsNoneWithRows": "Aucune colonne chiffrée ne contient encore de lignes."
|
||
},
|
||
"maintenance": {
|
||
"title": "Maintenance de la table des mesures",
|
||
"description": "Libère la place qu'occupaient les anciens restes de synchronisation, une fois le nettoyage terminé.",
|
||
"body": "Elle exécute un vacuum de la table des mesures puis reconstruit ses index, un par un. La lecture et l'enregistrement continuent de fonctionner pendant ce temps. Choisissez une heure calme et prévoyez de l'espace disque libre pour une copie supplémentaire du plus grand index.",
|
||
"tableSize": "Table avec index",
|
||
"indexSize": "Index",
|
||
"loading": "Vérification de l'état de la maintenance…",
|
||
"loadError": "Impossible de lire l'état de la maintenance.",
|
||
"unavailable": "Aucun processus d'arrière-plan n'est connecté, la maintenance ne peut donc pas s'exécuter ici.",
|
||
"purgePending": "Le nettoyage des anciens restes de synchronisation est toujours en cours. La maintenance pourra démarrer une fois qu'il sera terminé.",
|
||
"state": {
|
||
"idle": "Pas encore exécutée.",
|
||
"queued": "En attente du processus d'arrière-plan.",
|
||
"running": "En cours depuis {since}. Sur une grande instance, cela peut prendre un moment.",
|
||
"completed": "Terminée le {at}.",
|
||
"refusedPurge": "Pas démarrée, car le nettoyage était encore en cours. Relancez-la une fois le nettoyage terminé.",
|
||
"alreadyRunning": "Pas démarrée, car une autre exécution était déjà en cours.",
|
||
"failed": "Arrêtée le {at}. Le journal de l'application indique l'étape et le runbook explique quoi vérifier."
|
||
},
|
||
"start": "Lancer la maintenance",
|
||
"confirmTitle": "Lancer la maintenance maintenant ?",
|
||
"confirmBody": "Elle s'exécute en arrière-plan, étape par étape, et peut prendre un moment. Si vous n'avez pas encore fait de sauvegarde aujourd'hui, faites-en une d'abord.",
|
||
"confirm": "Lancer",
|
||
"cancel": "Annuler",
|
||
"started": "Maintenance lancée.",
|
||
"alreadyQueued": "Une maintenance est déjà en file d'attente ou en cours.",
|
||
"startFailed": "Impossible de lancer la maintenance."
|
||
},
|
||
"pulseDayMean": {
|
||
"title": "Moyenne journalière du pouls",
|
||
"description": "Comment les heures avec peu de mesures comptent dans le pouls d'une journée.",
|
||
"body": "Jusqu'ici, chaque heure avec une mesure compte autant, si bien qu'une seule mesure isolée peut déplacer toute une journée. La méthode pondérée fait compter une heure pleinement à partir de trois mesures, et une mesure isolée pour un tiers. Lancez d'abord la simulation pour voir combien de jours changeraient. L'application recalcule en arrière-plan les journées de pouls enregistrées.",
|
||
"method": {
|
||
"hourly": "Toutes les heures à égalité",
|
||
"weighted": "Heures clairsemées pondérées"
|
||
},
|
||
"loading": "Vérification de la moyenne journalière du pouls…",
|
||
"loadError": "Impossible de lire l'état de la moyenne journalière du pouls.",
|
||
"state": {
|
||
"idle": "Aucune simulation pour l'instant.",
|
||
"queued": "La simulation attend le processus d'arrière-plan.",
|
||
"running": "La simulation est en cours.",
|
||
"done": "Simulation terminée le {at}.",
|
||
"failed": "La simulation s'est arrêtée. Le journal de l'application en indique la cause ; relancez-la."
|
||
},
|
||
"result": {
|
||
"days": "Jours comparés",
|
||
"changed": "Jours qui bougent de plus de 1 bpm",
|
||
"max": "Plus grand écart",
|
||
"maxValue": "{value} bpm",
|
||
"bucket": "{range} bpm",
|
||
"account": "Compte {account}",
|
||
"accountDays": "{changed} jours sur {days} changent"
|
||
},
|
||
"appliedAt": "Méthode pondérée appliquée le {at}.",
|
||
"dryRun": "Simulation",
|
||
"apply": "Appliquer",
|
||
"confirmTitle": "Appliquer la moyenne journalière pondérée du pouls ?",
|
||
"confirmBody": "Les journées de pouls de tous les comptes sont alors calculées avec les heures clairsemées pondérées. Les journées enregistrées sont recalculées en arrière-plan, ce qui peut prendre un moment sur une grande instance.",
|
||
"confirm": "Appliquer",
|
||
"cancel": "Annuler",
|
||
"dryRunStarted": "Simulation lancée.",
|
||
"applied": "Méthode pondérée appliquée. Les journées de pouls sont en cours de recalcul.",
|
||
"appliedNoRebuild": "Méthode pondérée appliquée. Une autre exécution est encore en cours ; appliquez de nouveau une fois terminée pour recalculer les journées de pouls.",
|
||
"error": {
|
||
"busy": "Une simulation ou un recalcul est encore en cours. Réessayez une fois terminé.",
|
||
"dryRunRequired": "Lancez d'abord une simulation. L'application en exige une terminée au cours des sept derniers jours.",
|
||
"generic": "La requête n'a pas abouti."
|
||
},
|
||
"rebuild": {
|
||
"queued": "Le recalcul attend le processus en arrière-plan.",
|
||
"running": "Les jours de pouls sont en cours de recalcul.",
|
||
"done": "Jours de pouls recalculés le {at} pour {accounts} comptes.",
|
||
"failed": "Le recalcul s’est arrêté. Le journal de l’app en indique la cause ; relancez-le."
|
||
},
|
||
"rebuildAgain": "Recalculer à nouveau",
|
||
"rebuildStarted": "Recalcul lancé."
|
||
}
|
||
},
|
||
"carrier": "Opérateur",
|
||
"mfaRequired": "Exiger un second facteur",
|
||
"mfaRequiredDescription": "Les comptes sans deuxième facteur sont dirigés vers sa configuration après une connexion web ; l'accès par API ou natif (Bearer) reste ouvert.",
|
||
"mfaEnforcedOn": "MFA activé",
|
||
"mfaEnforcedOff": "MFA désactivé",
|
||
"mfaEnforcedOnHint": "Un second facteur est requis pour cet utilisateur. Cliquez pour ne plus l'exiger.",
|
||
"mfaEnforcedOffHint": "Exiger un second facteur pour cet utilisateur.",
|
||
"copyIp": "Copier l’adresse IP",
|
||
"ipCopied": "Adresse IP copiée",
|
||
"copyFailed": "Impossible de copier.",
|
||
"documentMaxFile": "Limite de téléversement de documents",
|
||
"documentMaxFileDescription": "Taille maximale par fichier dans les documents (1–100 Mo).",
|
||
"documentQuota": "Quota de stockage des documents",
|
||
"documentQuotaDescription": "Stockage de documents par compte par défaut (0,1–1024 Go).",
|
||
"userDocumentQuota": "Quota de documents personnalisé",
|
||
"userDocumentQuotaDefault": "Par défaut",
|
||
"userDocumentQuotaHint": "Laisser vide pour utiliser la valeur par défaut de l'instance.",
|
||
"centralCodex": {
|
||
"title": "Connexion IA partagée",
|
||
"description": "Reliez un compte ChatGPT connecté que chaque utilisateur de ce serveur peut activer pour les fonctions IA.",
|
||
"honesty": "Il s'agit d'un unique compte IA partagé et connecté, pas d'une clé d'API. Chaque personne qui l'active envoie ses requêtes par ce biais : les limites horaires et hebdomadaires du compte sont donc partagées entre elles, et ces mêmes limites alimentent déjà le Coach. Les fournisseurs par abonnement peuvent utiliser le contenu pour améliorer leurs modèles et aucun accord de traitement des données ne le couvre. Ce n'est donc jamais l'option par défaut et cela reste après les fournisseurs sans entraînement pour la lecture de documents. Ne reliez qu'un compte que vous êtes prêt à partager ainsi.",
|
||
"statusConnected": "Connecté",
|
||
"statusDisconnected": "Non connecté",
|
||
"statusExpired": "Expiré",
|
||
"connectButton": "Relier un compte ChatGPT",
|
||
"disconnectButton": "Déconnecter",
|
||
"disconnectTitle": "Déconnecter le compte IA partagé ?",
|
||
"disconnectBody": "Tous les utilisateurs de ce serveur qui s’appuient sur la connexion partagée perdent les fonctions IA jusqu’à ce qu’un compte soit relié à nouveau. La connexion enregistrée est irrécupérable.",
|
||
"disconnectConfirm": "Déconnecter",
|
||
"connectedSince": "Connecté depuis le {when}",
|
||
"connected": "Connexion IA partagée reliée",
|
||
"disconnected": "Connexion IA partagée supprimée",
|
||
"error": "Une erreur s'est produite. Veuillez réessayer"
|
||
},
|
||
"failingJobs": {
|
||
"title": "Tâches en arrière-plan",
|
||
"description": "Files dont les tâches ont abandonné après avoir épuisé leurs tentatives.",
|
||
"none": "Aucune tâche n’a échoué au cours des {hours} dernières heures.",
|
||
"unavailable": "Aucune file à consulter : ce déploiement fonctionne sans le worker en arrière-plan.",
|
||
"countOne": "{count} échec",
|
||
"countFew": "{count} échecs",
|
||
"countOther": "{count} échecs",
|
||
"lastFailed": "Dernier échec {when}"
|
||
},
|
||
"deleteAllDetail": "Les comptes utilisateurs sont conservés.",
|
||
"cardError": {
|
||
"title": "Cette partie de la page n’a pas pu s’afficher",
|
||
"description": "Le reste de la page fonctionne ; réessayez ou rechargez si le problème persiste."
|
||
},
|
||
"keyBackup": {
|
||
"title": "Sauvegarde ta clé de chiffrement",
|
||
"description": "Sans copie de cette clé, tes données chiffrées et les sauvegardes de ce serveur ne pourront plus être lues.",
|
||
"loading": "Chargement de l'état de la sauvegarde de la clé…",
|
||
"loadError": "Impossible de charger l'état de la sauvegarde de la clé.",
|
||
"badgeDue": "À faire",
|
||
"badgeDone": "Sauvegardée",
|
||
"keyId": "ID de la clé active",
|
||
"fingerprint": "Empreinte",
|
||
"whatIsLost": "Garde une copie de la clé en dehors de ce serveur, par exemple dans un gestionnaire de mots de passe. Si le serveur est réinstallé avec une autre clé, HealthLog ne sert plus rien tant que la clé d'origine n'est pas revenue.",
|
||
"fingerprintHint": "L'empreinte correspond aux 12 premiers caractères du hachage SHA-256 de la clé. Elle identifie la clé sans la révéler, pour que tu puisses la comparer à ta copie.",
|
||
"checkLabel": "Vérifier ma copie",
|
||
"checkButton": "Vérifier",
|
||
"checkNote": "La clé collée est comparée à la clé active puis oubliée. Elle n'est jamais stockée ni journalisée.",
|
||
"checkInsecureNote": "Cette page n'est pas servie en https://, donc la clé collée traverse le réseau en clair, comme ton mot de passe. Elle est comparée puis oubliée, jamais stockée ni journalisée.",
|
||
"checkMatches": "Ta copie correspond à la clé active.",
|
||
"checkNoMatch": "Ta copie ne correspond pas à la clé active. Vérifie que tu as copié toute la valeur.",
|
||
"checkFailed": "La vérification a échoué.",
|
||
"confirmButton": "J'ai sauvegardé cette clé",
|
||
"confirmed": "Sauvegarde de la clé confirmée.",
|
||
"confirmFailed": "Impossible d'enregistrer la confirmation.",
|
||
"stale": "La clé du serveur a changé depuis le chargement de cette page. Vérifie le nouvel ID et l'empreinte, puis confirme à nouveau.",
|
||
"confirmedAt": "Confirmée le {date}.",
|
||
"confirmedAtBy": "Confirmée le {date} par {who}.",
|
||
"dueAgain": "Une sauvegarde a été confirmée pour la clé {keyId}, mais le serveur utilise maintenant une autre clé. Sauvegarde la clé actuelle.",
|
||
"tileLabel": "Sauvegarde de la clé de chiffrement",
|
||
"tileDue": "Non confirmée",
|
||
"tileDone": "Confirmée",
|
||
"platform": {
|
||
"composeLabel": "Compose",
|
||
"composeWhere": "La clé est ENCRYPTION_KEY (ou ENCRYPTION_KEYS) dans le fichier .env à côté de docker-compose.yml.",
|
||
"truenasLabel": "TrueNAS",
|
||
"truenasWhere": "Ouvre Apps, sélectionne HealthLog, choisis Modifier et copie ENCRYPTION_KEY dans les variables d'environnement.",
|
||
"coolifyLabel": "Coolify",
|
||
"coolifyWhere": "Ouvre l'application dans Coolify et copie ENCRYPTION_KEY depuis ses Environment Variables.",
|
||
"unraidLabel": "Unraid",
|
||
"unraidWhere": "Dans l'onglet Docker, modifie le conteneur HealthLog et copie ENCRYPTION_KEY depuis le modèle, ou depuis le .env de ta pile Compose Manager.",
|
||
"portainerLabel": "Portainer",
|
||
"portainerWhere": "Ouvre la pile HealthLog dans Portainer et copie ENCRYPTION_KEY depuis ses variables d'environnement."
|
||
}
|
||
},
|
||
"keyMismatch": {
|
||
"title": "HealthLog ne peut pas ouvrir ses données",
|
||
"body": "La clé de chiffrement avec laquelle ce serveur a démarré n'est pas celle avec laquelle sa base de données a été écrite. Pour protéger tes données, HealthLog ne sert rien tant que ce n'est pas corrigé.",
|
||
"fixTitle": "Comment corriger",
|
||
"fixRestore": "Remets la ENCRYPTION_KEY d'origine (ou l'entrée de ENCRYPTION_KEYS) dans les paramètres du serveur.",
|
||
"fixDatabase": "Ou fais pointer DATABASE_URL vers la base de données qui correspond à cette clé.",
|
||
"fixFresh": "Ou repars de zéro avec une base vide. Les anciennes données et leurs sauvegardes ne se lisent qu'avec l'ancienne clé.",
|
||
"restartNote": "Redémarre HealthLog après la modification.",
|
||
"lastResort": "Dernier recours, seulement si tu es sûr que la clé est la bonne et qu'aucune des trois solutions ne convient : définis {setting} et redémarre. HealthLog sert alors quand même et se contente de journaliser le constat. Cela désactive une vérification de sécurité : avec une mauvaise clé, chaque valeur chiffrée échoue et les nouvelles données sont écrites sous cette clé.",
|
||
"codes": "Pour l'administrateur : les requêtes API répondent 503 avec le code d'erreur {code}, et /api/health indique la raison {reason}."
|
||
},
|
||
"loginOverviewCardTitle": "Événements de connexion",
|
||
"userColumn": "Utilisateur",
|
||
"supportReport": {
|
||
"title": "Rapport d'assistance",
|
||
"description": "Un résumé de cette instance pour un signalement de bug, sans e-mails, identifiants ni valeurs.",
|
||
"body": "Les comptes apparaissent comme « Account 1 », « Account 2 », etc. Lisez le rapport avant de le partager.",
|
||
"copy": "Copier",
|
||
"copied": "Copié",
|
||
"download": "Télécharger",
|
||
"loadError": "Le rapport d'assistance n'a pas pu être créé."
|
||
},
|
||
"aiUsage": {
|
||
"title": "Niveaux d'usage de l'IA",
|
||
"description": "Le niveau le plus élevé que les comptes peuvent choisir et le niveau de départ.",
|
||
"maxLabel": "Niveau le plus élevé",
|
||
"defaultLabel": "Niveau par défaut",
|
||
"defaultAboveCeiling": "Le niveau par défaut ne peut pas dépasser le niveau le plus élevé.",
|
||
"gapLabel": "Heures entre deux mises à jour des cartes après une synchronisation (Standard)",
|
||
"gapHint": "Heures entières de 1 à 48. Laissez vide pour utiliser AI_SYNC_REGEN_GAP_HOURS, sinon 6. En vigueur : {hours} h."
|
||
}
|
||
},
|
||
"achievements": {
|
||
"title": "Réussites",
|
||
"subtitle": "Débloquez des réussites en suivant votre santé et en prenant vos médicaments à temps.",
|
||
"loginRequired": "Connectez-vous pour voir les réussites.",
|
||
"points": "Points",
|
||
"unlocked": "Débloqué",
|
||
"nextGoal": "Prochain objectif",
|
||
"allCompleted": "Toutes les réussites débloquées !",
|
||
"completed": "Terminé",
|
||
"goalReached": "Objectif atteint",
|
||
"remainingUnlocks": "{count} encore à débloquer",
|
||
"noneUnlockedYet": "Aucune réussite débloquée pour l’instant.",
|
||
"pointsValue": "{points} points",
|
||
"metricCount": "{count}",
|
||
"metricDaysOne": "{count} jour",
|
||
"metricDaysFew": "{count} jours",
|
||
"metricDaysOther": "{count} jours",
|
||
"metricPercent": "{count}%",
|
||
"badges": {
|
||
"intakeTotal1": {
|
||
"title": "Première prise",
|
||
"description": "Enregistrez votre première prise de médicament."
|
||
},
|
||
"intakeTotal10": {
|
||
"title": "Débutant des prises",
|
||
"description": "Enregistrez 10 prises de médicaments."
|
||
},
|
||
"intakeTotal50": {
|
||
"title": "Routine des prises",
|
||
"description": "Enregistrez 50 prises de médicaments."
|
||
},
|
||
"intakeTotal150": {
|
||
"title": "Expert des prises",
|
||
"description": "Enregistrez 150 prises de médicaments."
|
||
},
|
||
"intakeTotal300": {
|
||
"title": "Légende des prises",
|
||
"description": "Enregistrez 300 prises de médicaments."
|
||
},
|
||
"passkeyCreated1": {
|
||
"title": "Clé d’accès configurée",
|
||
"description": "Créez votre première clé d’accès."
|
||
},
|
||
"passkeyLogin1": {
|
||
"title": "Connexion par clé d’accès",
|
||
"description": "Connectez-vous au moins une fois avec une clé d’accès."
|
||
},
|
||
"passwordLogin1": {
|
||
"title": "À l’ancienne",
|
||
"description": "Connectez-vous au moins une fois avec un identifiant et un mot de passe."
|
||
},
|
||
"loginStreak7": {
|
||
"title": "Série de connexions 7j",
|
||
"description": "Connectez-vous 7 jours d’affilée."
|
||
},
|
||
"loginStreak30": {
|
||
"title": "Série de connexions 30j",
|
||
"description": "Connectez-vous 30 jours d’affilée."
|
||
},
|
||
"onTimePerfect1": {
|
||
"title": "À l’heure 1j",
|
||
"description": "Prenez tous vos médicaments à l’heure pendant 1 jour."
|
||
},
|
||
"compliance801": {
|
||
"title": "Observance de 80% pendant 1 jour",
|
||
"description": "Atteignez au moins 80% d’observance sur 30 jours pendant 1 jour."
|
||
},
|
||
"bmiGreen1": {
|
||
"title": "IMC au vert pendant 1 jour",
|
||
"description": "Maintenez votre IMC dans la plage normale pendant 1 jour."
|
||
},
|
||
"bpGreen1": {
|
||
"title": "Tension au vert pendant 1 jour",
|
||
"description": "Maintenez votre tension dans la plage normale pendant 1 jour."
|
||
},
|
||
"pulseGreen1": {
|
||
"title": "Pouls au vert pendant 1 jour",
|
||
"description": "Maintenez votre pouls au repos dans la plage normale pendant 1 jour."
|
||
},
|
||
"onTimePerfect7": {
|
||
"title": "À l’heure 7j",
|
||
"description": "Prenez tous vos médicaments à l’heure pendant 7 jours d’affilée."
|
||
},
|
||
"compliance807": {
|
||
"title": "Observance de 80% pendant 7 jours",
|
||
"description": "Atteignez au moins 80% d’observance sur 30 jours pendant 7 jours d’affilée."
|
||
},
|
||
"bmiGreen7": {
|
||
"title": "IMC au vert pendant 7 jours",
|
||
"description": "Maintenez votre IMC dans la plage normale pendant 7 jours d’affilée."
|
||
},
|
||
"bpGreen7": {
|
||
"title": "Tension au vert pendant 7 jours",
|
||
"description": "Maintenez votre tension dans la plage normale pendant 7 jours d’affilée."
|
||
},
|
||
"pulseGreen7": {
|
||
"title": "Pouls au vert pendant 7 jours",
|
||
"description": "Maintenez votre pouls au repos dans la plage normale pendant 7 jours d’affilée."
|
||
},
|
||
"onTimePerfect30": {
|
||
"title": "À l’heure 30j",
|
||
"description": "Prenez tous vos médicaments à l’heure pendant 30 jours d’affilée."
|
||
},
|
||
"compliance8030": {
|
||
"title": "Observance de 80% pendant 30 jours",
|
||
"description": "Atteignez au moins 80% d’observance sur 30 jours pendant 30 jours d’affilée."
|
||
},
|
||
"bmiGreen30": {
|
||
"title": "IMC au vert pendant 30 jours",
|
||
"description": "Maintenez votre IMC dans la plage normale pendant 30 jours d’affilée."
|
||
},
|
||
"bpGreen30": {
|
||
"title": "Tension au vert pendant 30 jours",
|
||
"description": "Maintenez votre tension dans la plage normale pendant 30 jours d’affilée."
|
||
},
|
||
"pulseGreen30": {
|
||
"title": "Pouls au vert pendant 30 jours",
|
||
"description": "Maintenez votre pouls au repos dans la plage normale pendant 30 jours d’affilée."
|
||
},
|
||
"onTimePerfect180": {
|
||
"title": "À l’heure 180j",
|
||
"description": "Prenez tous vos médicaments à l’heure pendant 180 jours d’affilée."
|
||
},
|
||
"compliance80180": {
|
||
"title": "Observance de 80% pendant 180 jours",
|
||
"description": "Atteignez au moins 80% d’observance sur 30 jours pendant 180 jours d’affilée."
|
||
},
|
||
"bmiGreen180": {
|
||
"title": "IMC au vert pendant 180 jours",
|
||
"description": "Maintenez votre IMC dans la plage normale pendant 180 jours d’affilée."
|
||
},
|
||
"bpGreen180": {
|
||
"title": "Tension au vert pendant 180 jours",
|
||
"description": "Maintenez votre tension dans la plage normale pendant 180 jours d’affilée."
|
||
},
|
||
"pulseGreen180": {
|
||
"title": "Pouls au vert pendant 180 jours",
|
||
"description": "Maintenez votre pouls au repos dans la plage normale pendant 180 jours d’affilée."
|
||
},
|
||
"onTimePerfect360": {
|
||
"title": "À l’heure 360j",
|
||
"description": "Prenez tous vos médicaments à l’heure pendant 360 jours d’affilée."
|
||
},
|
||
"compliance80360": {
|
||
"title": "Observance de 80% pendant 360 jours",
|
||
"description": "Atteignez au moins 80% d’observance sur 30 jours pendant 360 jours d’affilée."
|
||
},
|
||
"bmiGreen360": {
|
||
"title": "IMC au vert pendant 360 jours",
|
||
"description": "Maintenez votre IMC dans la plage normale pendant 360 jours d’affilée."
|
||
},
|
||
"bpGreen360": {
|
||
"title": "Tension au vert pendant 360 jours",
|
||
"description": "Maintenez votre tension dans la plage normale pendant 360 jours d’affilée."
|
||
},
|
||
"pulseGreen360": {
|
||
"title": "Pouls au vert pendant 360 jours",
|
||
"description": "Maintenez votre pouls au repos dans la plage normale pendant 360 jours d’affilée."
|
||
},
|
||
"moodFirst": {
|
||
"title": "Première humeur",
|
||
"description": "Enregistrez votre première entrée d’humeur."
|
||
},
|
||
"moodStreak7": {
|
||
"title": "Journal d’humeur 7j",
|
||
"description": "Enregistrez une humeur 7 jours d’affilée."
|
||
},
|
||
"moodStreak30": {
|
||
"title": "Journal d’humeur 30j",
|
||
"description": "Enregistrez une humeur 30 jours d’affilée."
|
||
},
|
||
"moodUp7": {
|
||
"title": "Semaine plus lumineuse",
|
||
"description": "Votre moyenne d’humeur sur 7 jours s’est améliorée d’au moins 1,0 point par rapport à la semaine précédente."
|
||
},
|
||
"weightFirst": {
|
||
"title": "Première pesée",
|
||
"description": "Enregistrez votre première mesure de poids."
|
||
},
|
||
"weight50": {
|
||
"title": "Cinquante pesées",
|
||
"description": "Enregistrez 50 mesures de poids."
|
||
},
|
||
"weight200": {
|
||
"title": "200 pesées",
|
||
"description": "Enregistrez 200 mesures de poids."
|
||
},
|
||
"bpFirst": {
|
||
"title": "Première mesure",
|
||
"description": "Enregistrez votre première mesure de tension."
|
||
},
|
||
"bp50": {
|
||
"title": "Cinquante mesures de tension",
|
||
"description": "Enregistrez 50 mesures de tension."
|
||
},
|
||
"bp200": {
|
||
"title": "200 mesures de tension",
|
||
"description": "Enregistrez 200 mesures de tension."
|
||
},
|
||
"pulseFirst": {
|
||
"title": "Premier pouls",
|
||
"description": "Enregistrez votre première mesure de pouls."
|
||
},
|
||
"consistentMonth": {
|
||
"title": "Mois régulier",
|
||
"description": "Enregistrez des entrées sur au moins 25 jours différents au cours d’un même mois calendaire."
|
||
},
|
||
"entryStreak7": {
|
||
"title": "Série de suivis 7j",
|
||
"description": "Enregistrez au moins une entrée 7 jours d’affilée."
|
||
},
|
||
"entryStreak30": {
|
||
"title": "Série de suivis 30j",
|
||
"description": "Enregistrez au moins une entrée 30 jours d’affilée."
|
||
},
|
||
"weekendWarrior": {
|
||
"title": "Suivi du week-end",
|
||
"description": "Enregistrez des entrées sur 4 week-ends consécutifs (samedi + dimanche)."
|
||
},
|
||
"hiddenNightOwl": {
|
||
"title": "Oiseau de nuit",
|
||
"description": "Vous avez enregistré une entrée entre 02h00 et 04h00 du matin."
|
||
},
|
||
"hiddenEarlyBird": {
|
||
"title": "Lève-tôt",
|
||
"description": "Vous avez enregistré une entrée entre 04h00 et 06h00 du matin."
|
||
},
|
||
"hiddenLeapDay": {
|
||
"title": "Légende du jour bissextile",
|
||
"description": "Vous avez enregistré une entrée le 29 février."
|
||
},
|
||
"hiddenDoctorPdf": {
|
||
"title": "Visite à domicile",
|
||
"description": "Vous avez exporté votre premier rapport médical en PDF."
|
||
},
|
||
"hiddenLocaleFlip": {
|
||
"title": "Polyglotte",
|
||
"description": "Vous avez changé la langue de l’application au moins une fois."
|
||
},
|
||
"missFree7": {
|
||
"title": "Aucune dose oubliée en 7 jours",
|
||
"description": "7 jours consécutifs sans dose oubliée."
|
||
},
|
||
"missFree30": {
|
||
"title": "Aucune dose oubliée en 30 jours",
|
||
"description": "30 jours consécutifs sans dose oubliée."
|
||
},
|
||
"missFree90": {
|
||
"title": "Aucune dose oubliée en 90 jours",
|
||
"description": "90 jours consécutifs sans dose oubliée."
|
||
},
|
||
"measurementWeeks4": {
|
||
"title": "Routine de mesure",
|
||
"description": "4 semaines consécutives avec des mesures au moins 5 jours par semaine."
|
||
},
|
||
"selfContextComplete": {
|
||
"title": "Auto-déclaration à jour",
|
||
"description": "Les quatre champs de l’auto-déclaration sont remplis : le Coach connaît votre contexte."
|
||
},
|
||
"sleepLog7": {
|
||
"title": "Journal de sommeil pendant 7 jours",
|
||
"description": "Données de sommeil enregistrées pendant 7 jours consécutifs."
|
||
}
|
||
},
|
||
"nextProgressLabel": "Progression avant déblocage",
|
||
"completedOn": "Terminé le {date}",
|
||
"locked": "Verrouillé",
|
||
"criterionHint": "{current} / {target}",
|
||
"progressPercent": "{percent}%",
|
||
"categories": {
|
||
"medication": "Médicament",
|
||
"vitals": "Constantes vitales",
|
||
"mood": "Humeur",
|
||
"security": "Compte et sécurité",
|
||
"engagement": "Engagement",
|
||
"hidden": "Caché"
|
||
},
|
||
"hiddenCard": {
|
||
"title": "Réussite cachée",
|
||
"description": "Continuez à suivre, vous pourriez bien tomber dessus.",
|
||
"ariaLabel": "Réussite cachée verrouillée"
|
||
},
|
||
"hiddenUnlockToast": {
|
||
"title": "Vous avez débloqué une réussite cachée !"
|
||
},
|
||
"dashboardCard": {
|
||
"title": "Débloqués récemment",
|
||
"viewAll": "Tout voir",
|
||
"empty": "Pas encore de réussites. Continuez à suivre pour débloquer la première."
|
||
}
|
||
},
|
||
"notifications": {
|
||
"title": "Notifications",
|
||
"eventColumn": "Événement",
|
||
"subtitle": "Choisis quelles notifications tu reçois et par quel canal.",
|
||
"loadError": "Impossible de charger les paramètres de notification.",
|
||
"noChannels": "Configure d’abord un canal de notification dans Paramètres → Intégrations.",
|
||
"goToSettings": "Aller aux paramètres du canal",
|
||
"channelDisabled": "Désactivé",
|
||
"admin": {
|
||
"deployFailedTitle": "Échec du déploiement : {application}",
|
||
"deployFailedBody": "Une erreur est survenue lors du déploiement de {application} (#{deployment}) : {error}. Voir les journaux : {logsUrl}",
|
||
"testNotificationTitle": "HealthLog notification de test",
|
||
"testNotificationBody": "Cette notification de test a été déclenchée depuis le panneau d'administration. Si vous la voyez, le canal fonctionne.",
|
||
"reminderCheckMissedTitle": "Rappel manqué : {medication}",
|
||
"reminderCheckMissedBody": "{medication} ({dose}) n'a pas été enregistré dans la fenêtre {window}.",
|
||
"reminderCheckOverdueTitle": "Prise en retard : {medication}",
|
||
"reminderCheckOverdueBody": "{medication} ({dose}) dans la fenêtre {window} est en retard de {minutes} minutes.",
|
||
"offlineGeoUnavailableTitle": "Bases de géolocalisation hors ligne non chargées",
|
||
"offlineGeoUnavailableBody": "HealthLog résout les localisations de connexion via la requête en ligne vers {host}, donc chaque adresse IP de connexion quitte ce serveur. Pour les résoudre localement, téléchargez les bases GeoLite2-City et GeoLite2-ASN avec un compte MaxMind gratuit, montez le répertoire dans le conteneur et faites-y pointer GEOLITE2_DIR. Étapes : {docsUrl}",
|
||
"tlsPinChangedTitle": "Certificat feuille TLS modifié : {host}",
|
||
"tlsPinChangedBody": "La feuille TLS servie par {host} a maintenant le pin SPKI {servedPin}, qui ne figure pas dans l'ensemble de pins connus. Les clients épinglés (l'app native) ne pourront plus se connecter une fois l'ancien pin disparu. Réextrayez le nouveau pin de la feuille, ajoutez-le à TLS_LEAF_SPKI_PINS et à l'ensemble de pins du client natif, et publiez une version avant l'expiration de ce certificat le {validTo}. Voir docs/ops/tls-cert-pin.md."
|
||
},
|
||
"user": {
|
||
"telegramTestBody": "HealthLog: connexion réussie. Les notifications Telegram sont actives."
|
||
},
|
||
"moodReminder": {
|
||
"title": "Rappel quotidien d’humeur",
|
||
"description": "Petit rappel à l’heure que tu as choisie si tu n’as pas encore noté ton humeur du jour.",
|
||
"toggleAria": "Activer / désactiver le rappel quotidien d’humeur",
|
||
"statusOn": "Actif à l’heure que tu as choisie",
|
||
"statusOff": "Désactivé",
|
||
"enabledToast": "Rappel d’humeur activé.",
|
||
"disabledToast": "Rappel d’humeur désactivé.",
|
||
"saveError": "Échec de l’enregistrement. Réessayez.",
|
||
"hourLabel": "Heure du rappel",
|
||
"hourAria": "Heure du rappel d’humeur",
|
||
"hourSavedToast": "Heure du rappel mise à jour",
|
||
"detail": "Utilise uniquement les canaux déjà configurés (Telegram, ntfy, Web Push, Apple Push) et reste silencieux dès que tu as noté ton humeur aujourd’hui."
|
||
},
|
||
"coachNudge": {
|
||
"title": "Coach proactif",
|
||
"description": "Vous contacte lorsque vos données suggèrent de consulter le Coach.",
|
||
"toggleAria": "Activer ou désactiver les rappels proactifs du Coach",
|
||
"statusOn": "Actif",
|
||
"groupsLabel": "Thèmes",
|
||
"groupMedication": "Médication",
|
||
"groupMedicationDesc": "Prises irrégulières au cours de la dernière semaine.",
|
||
"groupVitals": "Constantes vitales",
|
||
"groupVitalsDesc": "Tension, récupération, tendance du poids, sommeil.",
|
||
"groupRoutine": "Routine",
|
||
"groupRoutineDesc": "Arrêts brusques des mesures et bilans de l'auto-description.",
|
||
"frequencyLabel": "Fréquence",
|
||
"frequencyWeekly": "Au plus une fois par semaine",
|
||
"frequencyBiweekly": "Au plus toutes les deux semaines",
|
||
"frequencyAria": "Choisir la fréquence des rappels",
|
||
"statusOff": "Désactivé",
|
||
"enabledToast": "Rappels proactifs du Coach activés.",
|
||
"disabledToast": "Rappels proactifs du Coach désactivés.",
|
||
"saveError": "Impossible d'enregistrer. Veuillez réessayer plus tard.",
|
||
"aiComposedLabel": "Laisser le Coach rédiger le message",
|
||
"aiComposedDesc": "Quand un fournisseur est disponible, le message proactif est rédigé par le modèle plutôt que par le modèle de texte fixe. Désactivé par défaut.",
|
||
"aiComposedAria": "Activer ou désactiver le message proactif rédigé par l'IA"
|
||
},
|
||
"lowStock": {
|
||
"title": "Alerte de stock faible",
|
||
"description": "Signale chaque jour un stock couvrant moins de jours que ce seuil.",
|
||
"toggleAria": "Activer ou désactiver les alertes de stock faible",
|
||
"statusOn": "Actif",
|
||
"statusOff": "Désactivé",
|
||
"daysLabel": "Prévenir en dessous de (jours)",
|
||
"daysAria": "Choisir le seuil de stock en jours",
|
||
"leadLabel": "Délai de réapprovisionnement (jours)",
|
||
"leadAria": "Délai de réapprovisionnement en jours",
|
||
"leadHelp": "L’alerte est envoyée ce nombre de jours plus un intervalle de dose plus tôt, pour qu’un réapprovisionnement arrive avant ta dernière dose. Un médicament donné peut remplacer cette valeur dans son onglet stock.",
|
||
"leadSavedToast": "Délai de réapprovisionnement enregistré",
|
||
"savedToast": "Seuil de stock enregistré",
|
||
"enabledToast": "Alertes de stock faible activées.",
|
||
"disabledToast": "Alertes de stock faible désactivées.",
|
||
"saveError": "Échec de l’enregistrement. Réessayez.",
|
||
"medicationsLink": "Voir tes médicaments",
|
||
"detail": "Une notification par pénurie ; elle se réarme après un réapprovisionnement."
|
||
},
|
||
"eventMedicationReminder": "Rappel de médicament",
|
||
"eventMedicationReminderDesc": "Envoyé à chaque heure de prise prévue.",
|
||
"eventMeasurementAnomaly": "Mesure inhabituelle",
|
||
"eventMeasurementAnomalyDesc": "Envoyé quand une valeur sort nettement de votre plage habituelle.",
|
||
"eventComplianceLow": "Observance faible",
|
||
"eventComplianceLowDesc": "Envoyé quand votre taux de prise des derniers jours passe sous les 80 %.",
|
||
"eventWithingsSyncFailed": "Échec de la synchronisation Withings",
|
||
"eventWithingsSyncFailedDesc": "Envoyé quand la synchronisation Withings échoue plusieurs fois d'affilée.",
|
||
"eventSystemAlert": "Notification système",
|
||
"eventSystemAlertDesc": "Messages généraux du serveur HealthLog, par exemple maintenance ou avis de compte.",
|
||
"eventPersonalRecord": "Record personnel",
|
||
"eventPersonalRecordDesc": "Envoyé quand une valeur dépasse votre meilleur précédent.",
|
||
"eventMoodReminder": "Rappel d'humeur",
|
||
"eventMoodReminderDesc": "Rappel quotidien pour noter votre humeur du moment.",
|
||
"eventCyclePeriodSoon": "Règles à venir",
|
||
"eventCyclePeriodSoonDesc": "Envoyé quelques jours avant vos prochaines règles prévues.",
|
||
"eventCyclePeriodConfirm": "Vos règles ont-elles commencé ?",
|
||
"eventCyclePeriodConfirmDesc": "Un rappel discret le jour prévu ou après, tant qu'aucune règle n'est enregistrée.",
|
||
"eventCycleFertileSoon": "Fenêtre fertile à venir",
|
||
"eventCycleFertileSoonDesc": "Envoyé quelques jours avant votre fenêtre fertile estimée lorsque votre objectif est de concevoir.",
|
||
"eventMedicationLowStock": "Stock de médicament faible",
|
||
"eventMedicationLowStockDesc": "Quand un stock suivi couvre moins de jours que votre seuil de stock",
|
||
"eventCoachNudge": "Rappel du Coach",
|
||
"eventCoachNudgeDesc": "Message ponctuel de votre Coach quand vos tendances récentes justifient un point.",
|
||
"eventMeasurementReminder": "Rappel de mesure",
|
||
"eventMeasurementReminderDesc": "Envoyé lorsqu'une mesure suivie est due.",
|
||
"eventMedicationIntakeSync": "Synchronisation des prises",
|
||
"eventMedicationIntakeSyncDesc": "Mise à jour entre appareils quand une dose est enregistrée, prise ou ignorée.",
|
||
"eventDailyBriefing": "Résumé quotidien",
|
||
"eventDailyBriefingDesc": "Un résumé matinal et posé de votre journée. Désactivé jusqu'à ce que vous l'activiez.",
|
||
"eventSecurityAlert": "Nouvelle connexion",
|
||
"eventSecurityAlertDesc": "Envoyé quand votre compte est utilisé sur un appareil ou depuis un lieu inconnus.",
|
||
"eventSharedRecordIntake": "Une personne avec accès marque une dose",
|
||
"eventSharedRecordIntakeDesc": "Envoyé uniquement quand une autre personne le fait, jamais pour vos propres saisies.",
|
||
"security": {
|
||
"newDeviceTitle": "Nouvelle connexion à votre compte",
|
||
"newDeviceBody": "Une nouvelle connexion depuis {device} ({location}). Si ce n'était pas vous, changez votre mot de passe immédiatement.",
|
||
"unknownLocation": "lieu inconnu"
|
||
},
|
||
"sharedRecordIntake": {
|
||
"title": "{name} a marqué une dose",
|
||
"bodyTaken": "{medication} : marquée comme prise par {name}.",
|
||
"bodySkipped": "{medication} : marquée comme ignorée par {name}."
|
||
},
|
||
"loginRequired": "Connecte-toi pour gérer les notifications.",
|
||
"someChannelsGloballyDisabled": "Un ou plusieurs canaux sont désactivés dans les paramètres et ne recevront pas de notifications.",
|
||
"reminderSettingsLink": "Réglages des rappels",
|
||
"channelsLink": "Canaux",
|
||
"handover": {
|
||
"claimedTitle": "{name} a maintenant son propre compte",
|
||
"claimedEnd": "{name} a repris son dossier de santé. Votre accès a pris fin.",
|
||
"claimedRead": "{name} a repris son dossier de santé. Vous pouvez encore le consulter, mais plus le modifier.",
|
||
"claimedManage": "{name} a repris son dossier de santé. Vous pouvez encore le gérer jusqu'à nouvelle décision.",
|
||
"changedTitle": "{name} a modifié votre accès",
|
||
"changedEnd": "Votre accès au dossier de santé de {name} a pris fin.",
|
||
"changedRead": "Vous pouvez désormais consulter le dossier de santé de {name}, sans le modifier.",
|
||
"changedManage": "Vous pouvez gérer le dossier de santé de {name}.",
|
||
"unnamed": {
|
||
"claimedTitle": "La personne dont vous vous occupiez a maintenant son propre compte",
|
||
"claimedEnd": "La personne dont vous vous occupiez a repris son dossier de santé. Votre accès a pris fin.",
|
||
"claimedRead": "La personne dont vous vous occupiez a repris son dossier de santé. Vous pouvez toujours le consulter, mais plus le modifier.",
|
||
"claimedManage": "La personne dont vous vous occupiez a repris son dossier de santé. Vous pouvez toujours le gérer jusqu'à ce qu'elle en décide autrement.",
|
||
"changedTitle": "Votre accès à un dossier de santé a changé",
|
||
"changedEnd": "Votre accès au dossier de santé de la personne dont vous vous occupiez a pris fin.",
|
||
"changedRead": "Vous pouvez désormais consulter le dossier de santé de la personne dont vous vous occupiez, mais pas le modifier.",
|
||
"changedManage": "Vous pouvez gérer le dossier de santé de la personne dont vous vous occupiez."
|
||
}
|
||
},
|
||
"links": {
|
||
"open": "Ouvrir dans HealthLog"
|
||
},
|
||
"quickActions": {
|
||
"moodGood": "Bien",
|
||
"moodOkay": "Moyen",
|
||
"moodBad": "Mal"
|
||
},
|
||
"content": {
|
||
"title": "Valeurs de santé dans les notifications",
|
||
"description": "Si une notification peut afficher des valeurs comme ton score du matin.",
|
||
"detail": "Désactivé, une notification dit seulement de quoi il s'agit, l'écran verrouillé n'affiche donc aucune valeur de santé. Activé, elle ajoute les valeurs, par exemple le score du matin dans le récapitulatif. Toucher une notification ouvre le bon endroit de l'app dans les deux cas.",
|
||
"toggleAria": "Afficher les valeurs de santé dans les notifications",
|
||
"statusDetailed": "Avec valeurs",
|
||
"statusGeneric": "Sans valeurs",
|
||
"detailedToast": "Les notifications incluent désormais des valeurs de santé.",
|
||
"genericToast": "Les notifications n'incluent plus de valeurs de santé.",
|
||
"saveError": "Enregistrement impossible. Réessaie plus tard."
|
||
},
|
||
"checkupReminders": {
|
||
"title": "Rappels de bilans",
|
||
"description": "Activez ou désactivez chaque rappel de bilan."
|
||
}
|
||
},
|
||
"i18n": {
|
||
"maintainershipBanner": {
|
||
"notice": "Cette langue est traduite automatiquement, y compris les instructions critiques pour la sécurité du Coach. Un contrôle de dérive automatique tourne en CI ; signalez toute régression du Coach sur GitHub.",
|
||
"cta": "Signaler sur GitHub",
|
||
"dismiss": "Ignorer"
|
||
}
|
||
},
|
||
"targets": {
|
||
"bmi": "IMC",
|
||
"average30d": "Moy. 30 jours :",
|
||
"consistency": {
|
||
"ariaLabel": "7 derniers jours, statut dans/hors plage par jour",
|
||
"daysInRange": "{count} sur {total} dans la cible",
|
||
"daysLogged": "{count} sur {total} enregistrés",
|
||
"dotInRange": "dans la plage",
|
||
"dotNearRange": "proche de la plage",
|
||
"dotOutOfRange": "hors plage",
|
||
"dotNotLogged": "non saisi",
|
||
"relativeDay": {
|
||
"today": "Aujourd'hui",
|
||
"yesterday": "Hier",
|
||
"twoDaysAgo": "il y a 2 jours",
|
||
"threeDaysAgo": "il y a 3 jours",
|
||
"fourDaysAgo": "il y a 4 jours",
|
||
"fiveDaysAgo": "il y a 5 jours",
|
||
"sixDaysAgo": "il y a 6 jours"
|
||
}
|
||
},
|
||
"edit": {
|
||
"title": "Modifier la plage cible : {metric}",
|
||
"description": "Ajuste la plage cible utilisée dans les graphiques, les insights et le rapport médical. Valeurs en {unit}.",
|
||
"derivedHint": "Cette carte est dérivée d’autres métriques. Modifie plutôt les objectifs sous-jacents (p. ex. tension ou poids).",
|
||
"minLabel": "Min",
|
||
"maxLabel": "Max",
|
||
"systolicMin": "Systolique min",
|
||
"systolicMax": "Systolique max",
|
||
"diastolicMin": "Diastolique min",
|
||
"diastolicMax": "Diastolique max",
|
||
"boundsHint": "Plage autorisée : {min}–{max} {unit}",
|
||
"resetToDefault": "Restaurer la valeur par défaut",
|
||
"resetTitle": "Réinitialiser cet objectif ?",
|
||
"resetBody": "La plage revient à la valeur par défaut. Les valeurs que vous avez définies ne sont conservées nulle part ailleurs et ne peuvent pas être récupérées.",
|
||
"resetBodyBp": "La plage systolique et la plage diastolique reviennent toutes deux à la valeur par défaut. Les valeurs que vous avez définies ne sont conservées nulle part ailleurs et ne peuvent pas être récupérées.",
|
||
"resetConfirm": "Réinitialiser l’objectif",
|
||
"saveSuccess": "Plage cible mise à jour",
|
||
"saveError": "Impossible d’enregistrer la plage cible",
|
||
"resetSuccess": "Plage cible réinitialisée",
|
||
"validationOrder": "Le minimum doit être inférieur au maximum.",
|
||
"validationBounds": "Saisissez des valeurs dans la plage autorisée indiquée ci-dessous."
|
||
},
|
||
"currentValue": "Actuel : {value} {unit}",
|
||
"targetRangeValue": "Plage cible : {min}–{max} {unit}",
|
||
"sourceLabel": "Source : {source}",
|
||
"sourceNames": {
|
||
"moodEntries": "Entrées d’humeur",
|
||
"sevenDays": "7 jours"
|
||
},
|
||
"inTarget": "Dans la plage cible",
|
||
"aboveTarget": "{delta} {unit} au-dessus de la plage",
|
||
"belowTarget": "{delta} {unit} en dessous de la plage",
|
||
"systolic": "Systolique",
|
||
"diastolic": "Diastolique",
|
||
"glucoseFasting": "Glycémie (à jeun)",
|
||
"glucosePostprandial": "Glycémie (postprandiale)",
|
||
"glucoseRandom": "Glycémie (indifférente)",
|
||
"glucoseBedtime": "Glycémie (avant le coucher)",
|
||
"glucoseUnspecified": "Glycémie (non précisée)",
|
||
"status": {
|
||
"underweight": "Insuffisance pondérale",
|
||
"normal": "Normal",
|
||
"overweight": "Surpoids",
|
||
"obesityGrade1": "Obésité grade I",
|
||
"obesityGrade2": "Obésité grade II",
|
||
"obesityGrade3": "Obésité grade III",
|
||
"optimal": "Optimale",
|
||
"highNormal": "Normale haute",
|
||
"hypertensionGrade1": "Hypertension grade 1",
|
||
"hypertensionGrade2": "Hypertension grade 2",
|
||
"hypertensionGrade3": "Hypertension grade 3",
|
||
"belowTypicalRange": "En dessous de la plage habituelle",
|
||
"elevated": "Élevé",
|
||
"aboveTypicalRange": "Au-dessus de la plage habituelle",
|
||
"significantlyLow": "Nettement bas",
|
||
"slightlyLow": "Légèrement bas",
|
||
"onTarget": "Dans la plage cible",
|
||
"slightlyElevated": "Légèrement élevé",
|
||
"significantlyElevated": "Nettement élevé",
|
||
"farTooShort": "Bien trop court",
|
||
"tooShort": "Trop court",
|
||
"slightlyLong": "Légèrement long",
|
||
"farTooLong": "Bien trop long",
|
||
"belowEssential": "Sous l’essentiel",
|
||
"essential": "Essentiel",
|
||
"athletic": "Athlétique",
|
||
"fitness": "Fitness",
|
||
"acceptable": "Acceptable",
|
||
"obese": "Obèse",
|
||
"veryLow": "Très bas",
|
||
"lowActive": "Peu actif",
|
||
"moderatelyActive": "Modérément actif",
|
||
"active": "Actif",
|
||
"veryActive": "Très actif",
|
||
"good": "Bon",
|
||
"moderate": "Modéré",
|
||
"low": "Bas",
|
||
"high": "Élevé",
|
||
"veryGood": "Très bon",
|
||
"veryStable": "Très stable",
|
||
"stable": "Stable",
|
||
"fluctuating": "Fluctuant"
|
||
}
|
||
},
|
||
"passwordStrength": {
|
||
"veryWeak": "Très faible",
|
||
"weak": "Faible",
|
||
"acceptable": "Acceptable",
|
||
"strong": "Fort",
|
||
"veryStrong": "Très fort",
|
||
"tooShort": "Trop court",
|
||
"characters": "caractères",
|
||
"minLength": "Au moins {count} caractères requis."
|
||
},
|
||
"telegram": {
|
||
"errorInvalidAction": "Action invalide.",
|
||
"errorMedicationNotFound": "Médicament introuvable.",
|
||
"errorMedicationInactive": "Médicament introuvable ou inactif.",
|
||
"errorUnknownAction": "Action inconnue.",
|
||
"snoozeOneHour": "1 heure",
|
||
"snoozeThreeHours": "3 heures",
|
||
"snoozedFor": "{name} reporté de {duration}.",
|
||
"skipped": "{name} ignoré.",
|
||
"alreadyRecorded": "{name} était déjà enregistré.",
|
||
"recordedAsTaken": "{name} enregistré comme pris.",
|
||
"confirmed": "{name} confirmé.",
|
||
"genericConfirmed": "Confirmé.",
|
||
"cancelled": "Annulé.",
|
||
"moodLogged": "Enregistré : {score}/5",
|
||
"moodNotePrompt": "Ajoutez une note brève (facultatif).",
|
||
"moodNoteSaved": "Note enregistrée.",
|
||
"moodNoteExpired": "Cette invite a expiré.",
|
||
"remindLater": "Rappel reporté de {duration}.",
|
||
"measurementDone": "Marqué comme fait.",
|
||
"measurementNotFound": "Rappel introuvable.",
|
||
"buttonMoodNote": "Note…",
|
||
"buttonLater": "Plus tard",
|
||
"buttonDone": "Fait",
|
||
"noActiveMedications": "Aucun médicament actif trouvé.",
|
||
"whichMedication": "<b>Quel médicament as-tu pris ?</b>",
|
||
"cancelButton": "Annuler",
|
||
"askMedicationName": "Indique le médicament, p. ex. <b>pris Ramipril</b>.",
|
||
"medicationNotFoundExact": "Médicament introuvable. Envoie le nom exactement tel qu’il apparaît dans HealthLog.",
|
||
"helpHeader": "<b>Commandes disponibles :</b>",
|
||
"helpBody": "/help : afficher cette aide\n/add : enregistrer une prise\n/start : démarrer le bot\n\n<b>Commandes texte :</b>\ntaken <nom> : confirmer une prise\n\n<b>Boutons dans les rappels :</b>\n• Pris : confirmer la prise\n• 🕐 1h / 🕐 3h : reporter le rappel\n• ⏭ Ignorer : ignorer la prise\n• ✓ Confirmer : confirmer une prise manquée",
|
||
"measureValuePrompt": "Répondez avec la valeur pour l’enregistrer (facultatif).",
|
||
"buttonMeasureValue": "Valeur…",
|
||
"measureValueSaved": "Mesure enregistrée.",
|
||
"measureValueInvalid": "Répondez avec un nombre pour enregistrer une mesure.",
|
||
"measureValueOutOfRange": "Cette valeur est en dehors de la plage plausible.",
|
||
"measureValueExpired": "Cette invite a expiré."
|
||
},
|
||
"medicationReminders": {
|
||
"phaseGreenTitle": "🟢 Rappel : {medName}",
|
||
"phaseGreenMessage": "🟢 Reminder:\n<b>{medName}</b> ({doseInfo}, {timeWindow})\nWindow closes in {minutes} Min.",
|
||
"phaseYellowTitle": "🟡 Bientôt due : {medName}",
|
||
"phaseYellowMessage": "🟡 Bientôt due :\n<b>{medName}</b> ({doseInfo}, {timeWindow})\nIl reste {minutes} min.",
|
||
"phaseOrangeTitle": "🟠 En retard : {medName}",
|
||
"phaseOrangeMessage": "🟠 Overdue:\n<b>{medName}</b> ({doseInfo}, {timeWindow})\nOverdue by {minutes} Min.",
|
||
"phaseRedTitle": "🔴 Manquée : {medName}",
|
||
"phaseRedMessage": "🔴 Manquée :\n<b>{medName}</b> ({doseInfo}, {timeWindow})\nMarquée comme manquée.",
|
||
"buttonTaken": "Pris",
|
||
"buttonConfirm": "✓ Confirmer",
|
||
"buttonSnoozeOneHour": "🕐 1h",
|
||
"buttonSnoozeThreeHours": "🕐 3h",
|
||
"buttonSkip": "⏭ Ignorer"
|
||
},
|
||
"lowStockReminders": {
|
||
"title": "Stock faible : {medName}",
|
||
"bodyToday": "{medName} : {units} unités restantes, moins d’un jour de réserve.",
|
||
"bodyReorder": "{medName} : {units} unités restantes. Le stock sera épuisé vers le {runsOutOn}, recommandez avant le {reorderBy}.",
|
||
"bodyLastDose": "{medName} : {units} unités restantes, environ votre dernière dose. Le stock sera épuisé vers le {runsOutOn}.",
|
||
"bodyExpired": "{medName} : plus de stock utilisable. {units} unités sont marquées périmées.",
|
||
"bodyAsNeeded": "{medName} : plus que {units} unités. Recommandez avant d’avoir besoin de la prochaine dose."
|
||
},
|
||
"moodReminders": {
|
||
"dailyTitle": "Enregistrer votre humeur",
|
||
"dailyBody": "Comment vous sentez-vous aujourd’hui ?"
|
||
},
|
||
"coachNudges": {
|
||
"greetingMorning": "Bonjour",
|
||
"greetingMorningNamed": "Bonjour, {name}",
|
||
"greetingHey": "Salut",
|
||
"greetingHeyNamed": "Salut {name}",
|
||
"complianceBody": "Vos prises se sont un peu déréglées cette semaine. Si vous voulez, on regarde ensemble ce qui les rendrait plus faciles à suivre.",
|
||
"bpBody": "Votre tension est restée un peu au-dessus de votre plage habituelle cette semaine. Quand vous voulez, je la regarde volontiers avec vous.",
|
||
"scoreBody": "Votre récupération s'essouffle depuis quelques jours. Si vous êtes curieux d'en connaître la cause, je suis là pour en parler.",
|
||
"selfContextBody": "Votre auto-description n'a pas été mise à jour depuis un moment. Quand vous aurez un instant, la rafraîchir m'aide à mieux vous comprendre.",
|
||
"weightBody": "Votre poids s'est un peu éloigné de votre zone cible ces derniers temps. Si vous le souhaitez, on fait le point ensemble, tranquillement.",
|
||
"sleepDebtBody": "Plusieurs de vos nuits ont été un peu courtes cette semaine. Si vous voulez, on cherche une régularité ensemble.",
|
||
"measurementGapBody": "Votre journal est silencieux depuis environ une semaine. Quand cela vous convient, un petit point aide à reprendre.",
|
||
"focusNote": "Cela rejoint aussi ce que vous vouliez garder à l'œil.",
|
||
"reminderSurfacedTitle": "Ton rappel",
|
||
"reminderSurfacedLeadOne": "Tu m'as demandé de te rappeler ceci aujourd'hui :",
|
||
"reminderSurfacedLeadMany": "Tu m'as demandé de te rappeler {count} choses aujourd'hui :",
|
||
"questionConditions": "Avez-vous des maladies chroniques que le Coach devrait connaître ?",
|
||
"questionFocus": "Y a-t-il quelque chose de précis auquel le Coach devrait veiller ?",
|
||
"questionAllergies": "Avez-vous des allergies ou des intolérances ?",
|
||
"questionAboutMe": "Envie de parler un peu de vous au Coach (habitudes, objectifs, contexte) ?"
|
||
},
|
||
"clinicianView": {
|
||
"title": "Dossier de santé partagé",
|
||
"period": "Période couverte : {start}–{end}",
|
||
"expires": "Ce lien expire le {date}.",
|
||
"provenance": "Il s'agit d'un résumé en lecture seule partagé par la personne concernée, exporté de ses données HealthLog auto-enregistrées. Les valeurs sont auto-déclarées et peuvent inclure des mesures synchronisées depuis des appareils ; à considérer comme rapportées par le patient, non comme un examen clinique.",
|
||
"labs": "Valeurs de laboratoire",
|
||
"medications": "Médicaments et observance",
|
||
"bmi": "Indice de masse corporelle (IMC)",
|
||
"statSummary": "dernier {latest} (moy. {avg}, plage {min}–{max})",
|
||
"statSummaryWithUnit": "dernier {latest} {unit} (moy. {avg} {unit}, plage {min}–{max} {unit})",
|
||
"adherence": "{rate} d'observance",
|
||
"noAdherence": "—",
|
||
"glucose": {
|
||
"FASTING": "Glycémie (à jeun)",
|
||
"POSTPRANDIAL": "Glycémie (postprandiale)",
|
||
"RANDOM": "Glycémie (aléatoire)",
|
||
"BEDTIME": "Glycémie (au coucher)"
|
||
},
|
||
"wellness": {
|
||
"title": "Scores de bien-être",
|
||
"disclaimer": "Scores descriptifs (0–100) calculés à partir des signaux suivis. Ce n'est ni une évaluation clinique ni un diagnostic.",
|
||
"recovery": "Score de récupération",
|
||
"stress": "Score de stress",
|
||
"strain": "Score de charge",
|
||
"score": "Score de bien-être"
|
||
},
|
||
"footer": "Partagé depuis HealthLog, un suivi de santé auto-hébergé.",
|
||
"unlock": {
|
||
"title": "Saisir la phrase secrète",
|
||
"description": "Ce dossier de santé partagé est protégé. Saisissez la phrase secrète qui vous a été communiquée pour le consulter.",
|
||
"label": "Phrase secrète",
|
||
"error": "Cette phrase secrète est incorrecte.",
|
||
"submit": "Déverrouiller"
|
||
},
|
||
"loadError": {
|
||
"title": "Impossible de charger cette vue partagée",
|
||
"description": "Une erreur s'est produite lors de l'ouverture de ce dossier de santé partagé. Le lien a peut-être expiré, ou un problème temporaire est survenu. Réessayez ou demandez un nouveau lien à la personne qui l'a partagé.",
|
||
"retry": "Réessayer"
|
||
},
|
||
"documents": {
|
||
"title": "Documents",
|
||
"untitled": "Document sans titre",
|
||
"download": "Télécharger",
|
||
"attachmentHint": "Ce fichier se télécharge sur votre appareil (pas d'aperçu dans la page).",
|
||
"exifNote": "Les métadonnées de l'appareil photo (EXIF/GPS) ont été supprimées des images JPEG, PNG et WebP partagées."
|
||
},
|
||
"downloadPdf": "Télécharger en PDF",
|
||
"downloadFhir": "Télécharger en FHIR",
|
||
"bmiSection": "Indice de masse corporelle",
|
||
"sectionEmpty": "Inclus dans ce lien, mais rien n'est enregistré ici.",
|
||
"sectionUnavailable": "Inclus dans ce lien, mais cette partie du dossier est désactivée dans le compte d'origine et ne contient donc aucune donnée.",
|
||
"lastInjection": "Dernière injection",
|
||
"identity": {
|
||
"name": "Nom"
|
||
},
|
||
"doses": {
|
||
"title": "Doses enregistrées",
|
||
"showing": "Affichage des {shown} doses les plus récentes sur {total} enregistrées."
|
||
},
|
||
"course": "Traitement {n}",
|
||
"courseRange": "du {start} au {end}",
|
||
"courseSince": "depuis le {start}",
|
||
"unavailable": {
|
||
"title": "Lien expiré ou invalide",
|
||
"description": "Ce lien de partage a expiré, a été révoqué ou est incomplet. Demandez un nouveau lien à la personne qui l’a partagé."
|
||
}
|
||
},
|
||
"cycle": {
|
||
"symptomCategory": {
|
||
"physical": "Physique",
|
||
"emotional": "Émotionnel",
|
||
"digestive": "Digestif",
|
||
"custom": "Personnalisé"
|
||
},
|
||
"symptom": {
|
||
"cramps": "Crampes",
|
||
"headache": "Mal de tête",
|
||
"bloating": "Ballonnements",
|
||
"acne": "Acné",
|
||
"breastTenderness": "Sensibilité des seins",
|
||
"fatigue": "Fatigue",
|
||
"backPain": "Mal de dos",
|
||
"insomnia": "Insomnie",
|
||
"libidoHigh": "Libido élevée",
|
||
"libidoLow": "Libido faible",
|
||
"moodSwings": "Sautes d'humeur",
|
||
"foodCravings": "Fringales",
|
||
"nausea": "Nausées",
|
||
"diarrhea": "Diarrhée",
|
||
"constipation": "Constipation",
|
||
"custom": {
|
||
"add": "Ajouter un symptôme",
|
||
"label": "Nom",
|
||
"labelPlaceholder": "ex. Vertige",
|
||
"icon": "Icône",
|
||
"limitReached": "Limite de symptômes personnalisés atteinte.",
|
||
"remove": "Supprimer {label}",
|
||
"removeTitle": "Supprimer ce symptôme ?",
|
||
"removeBody": "« {label} » disparaît de la liste des symptômes. Les journées déjà marquées le conservent, mais vous ne pourrez plus le sélectionner.",
|
||
"removeConfirm": "Supprimer",
|
||
"fallbackLabel": "Symptôme personnalisé"
|
||
}
|
||
},
|
||
"prediction": {
|
||
"disclaimer": "Les prévisions sont des estimations issues de tes données enregistrées, et non un avis médical ou un moyen de contraception. La précision s'améliore à mesure que tu enregistres des cycles."
|
||
},
|
||
"insights": {
|
||
"headline": {
|
||
"title": "Ton cycle et ton corps",
|
||
"restingHeartRate": "Ta fréquence cardiaque au repos est d'environ {delta} {dir} en phase lutéale qu'en phase folliculaire.",
|
||
"heartRateVariability": "Ta variabilité de la fréquence cardiaque est d'environ {delta} {dir} en phase lutéale qu'en phase folliculaire.",
|
||
"generic": "Ton/ta {metric} est d'environ {delta} {dir} en phase lutéale qu'en phase folliculaire.",
|
||
"dirHigher": "plus élevée",
|
||
"dirLower": "plus basse",
|
||
"empty": "Pas encore assez de cycles et de relevés pour faire ressortir un schéma de phase. Continue à enregistrer : cela se complétera à mesure que ton historique grandit."
|
||
},
|
||
"crosstab": {
|
||
"description": "Comment chaque mesure se compare entre tes phases lutéale et folliculaire, sur tes propres données.",
|
||
"pairLabel": "{metric} : phase lutéale vs folliculaire",
|
||
"detail": "Lutéale {lutealAvg} ({lutealDays} jours) vs folliculaire {follicularAvg} ({follicularDays} jours).",
|
||
"metricRestingHeartRate": "Fréquence cardiaque au repos",
|
||
"metricHrv": "Variabilité de la fréquence cardiaque",
|
||
"metricSleepDuration": "Durée du sommeil",
|
||
"metricSteps": "Pas",
|
||
"metricWeight": "Poids",
|
||
"metricBasalBodyTemp": "Température basale",
|
||
"metricWristTemperature": "Température du poignet la nuit",
|
||
"metricSkinTemperature": "Température de la peau",
|
||
"metricBloodGlucose": "Glycémie",
|
||
"metricMood": "Humeur"
|
||
},
|
||
"title": "Analyses du cycle",
|
||
"symptomPatternsTitle": "Tendances des symptômes par phase",
|
||
"symptomPatternsEmpty": "Notez vos symptômes sur un cycle pour voir dans quelle phase ils se regroupent.",
|
||
"symptomMostlyIn": "Surtout en {phase} ({count}/{total} jours)"
|
||
},
|
||
"phaseEducation": {
|
||
"title": "Ce qui se passe maintenant",
|
||
"whatsHappening": {
|
||
"MENSTRUAL": "Tes règles marquent le début d'un nouveau cycle, lorsque la muqueuse utérine se détache. L'énergie et l'humeur semblent souvent plus basses durant ces premiers jours.",
|
||
"FOLLICULAR": "Après les règles, l'œstrogène augmente progressivement pendant que le corps prépare un ovule. Beaucoup ressentent une énergie plus stable durant cette période.",
|
||
"OVULATORY": "Vers le milieu du cycle, un ovule est libéré et la fertilité culmine sur une courte fenêtre. Cette phase est la plus brève des quatre.",
|
||
"LUTEAL": "Après l'ovulation, la progestérone augmente et le corps se pose. Dans les jours précédant les prochaines règles, certaines personnes remarquent des changements prémenstruels."
|
||
},
|
||
"context": {
|
||
"MENSTRUAL": "Les taux hormonaux sont au plus bas, ce qui peut donner à ces jours des airs de remise à zéro tranquille. Certaines personnes remarquent des crampes, un sommeil plus léger ou l'envie de lever le pied ; d'autres les traversent presque sans changement. Tout cela reste dans la normale, et le ressenti peut varier d'un cycle à l'autre.",
|
||
"FOLLICULAR": "Avec l'œstrogène qui monte, beaucoup décrivent ces jours comme lumineux et ouverts : le sommeil vient souvent plus facilement et l'esprit semble plus clair. La température basale reste en général dans sa plage basse jusqu'à juste avant l'ovulation. La durée de cette phase est ce qui varie le plus d'une personne à l'autre, et d'un cycle à l'autre.",
|
||
"OVULATORY": "L'œstrogène culmine juste avant la libération de l'ovule, souvent accompagné d'un bref regain d'humeur et d'une légère hausse de la température basale dans le jour ou les deux qui suivent. La glaire cervicale tend à devenir plus claire et plus filante autour de cette fenêtre. Un bref tiraillement d'un côté, certaines personnes le remarquent ; beaucoup ne ressentent rien, et les deux sont tout à fait normaux.",
|
||
"LUTEAL": "La progestérone mène la seconde moitié et la température basale se stabilise en général un peu plus haut qu'au début du cycle. Certaines personnes remarquent des variations du sommeil, de l'appétit, de l'humeur ou de l'énergie au fil des jours, tandis que d'autres se sentent stables tout du long. Le schéma est personnel, et il se présente souvent différemment d'un mois à l'autre."
|
||
},
|
||
"commonHere": "Tu le remarques souvent ici",
|
||
"stillLearning": "On apprend encore ton cycle. Continue à noter et cela se remplira avec les tendances de tes propres journées."
|
||
},
|
||
"insightsSummary": {
|
||
"title": "Ton cycle",
|
||
"currentDay": "Jour {day} de ton cycle",
|
||
"noActiveCycle": "Aucun cycle actif pour l'instant",
|
||
"viewDetails": "Voir les analyses du cycle"
|
||
},
|
||
"wellnessRing": {
|
||
"label": "Cycle",
|
||
"loadError": "Impossible de charger ton cycle."
|
||
},
|
||
"disclaimer": "Ces prévisions sont des estimations descriptives issues de vos données enregistrées, ni une méthode de contraception ni un avis médical. Elles n'indiquent jamais qu'il est sûr d'avoir des rapports non protégés. Pour la contraception ou toute décision médicale, consultez un professionnel de santé.",
|
||
"title": "Ton cycle",
|
||
"subtitle": "Enregistre tes règles et symptômes, et vois ce qui arrive ensuite.",
|
||
"tabs": {
|
||
"calendar": "Calendrier",
|
||
"predictions": "Prévisions",
|
||
"insights": "Analyses",
|
||
"settings": "Réglages"
|
||
},
|
||
"logToday": "Enregistrer aujourd'hui",
|
||
"startedPeriod": "Mes règles ont commencé aujourd'hui",
|
||
"endedPeriod": "Mes règles se sont terminées aujourd'hui",
|
||
"phase": {
|
||
"MENSTRUAL": "Menstruelle",
|
||
"FOLLICULAR": "Folliculaire",
|
||
"OVULATORY": "Ovulatoire",
|
||
"LUTEAL": "Lutéale",
|
||
"none": "Aucune phase",
|
||
"label": "Phase"
|
||
},
|
||
"flow": {
|
||
"NONE": "Aucun",
|
||
"SPOTTING": "Spotting",
|
||
"LIGHT": "Léger",
|
||
"MEDIUM": "Moyen",
|
||
"HEAVY": "Abondant",
|
||
"label": "Flux"
|
||
},
|
||
"ovulationTest": {
|
||
"NEGATIVE": "Négatif",
|
||
"POSITIVE_LH_SURGE": "Pic de LH",
|
||
"ESTROGEN_SURGE": "Pic d'œstrogène",
|
||
"INDETERMINATE": "Indéterminé",
|
||
"label": "Test d'ovulation"
|
||
},
|
||
"mucus": {
|
||
"DRY": "Sec",
|
||
"STICKY": "Collant",
|
||
"CREAMY": "Crémeux",
|
||
"WATERY": "Aqueux",
|
||
"EGG_WHITE": "Blanc d'œuf",
|
||
"label": "Glaire cervicale"
|
||
},
|
||
"cervixPosition": {
|
||
"LOW": "Bas",
|
||
"HIGH": "Haut"
|
||
},
|
||
"cervixFirmness": {
|
||
"FIRM": "Ferme",
|
||
"SOFT": "Souple"
|
||
},
|
||
"cervixOpening": {
|
||
"CLOSED": "Fermé",
|
||
"OPEN": "Ouvert"
|
||
},
|
||
"goal": {
|
||
"GENERAL_HEALTH": "Santé générale",
|
||
"AVOID_PREGNANCY": "Éviter une grossesse",
|
||
"TRYING_TO_CONCEIVE": "Désir d'enfant",
|
||
"PERIMENOPAUSE": "Périménopause",
|
||
"OFF": "Suivi désactivé",
|
||
"label": "Pourquoi fais-tu ce suivi ?",
|
||
"description": "Cela adapte le langage et les prévisions affichées. Les conseils sur la fenêtre fertile n'apparaissent qu'en cas de désir d'enfant."
|
||
},
|
||
"ring": {
|
||
"dayOfCycle": "Jour {day}",
|
||
"dayUnknown": "—",
|
||
"ariaPhase": "Jour {day} du cycle, phase {phase}",
|
||
"ariaUnknown": "Pas encore de cycle actif",
|
||
"caption": "de ton cycle",
|
||
"firstPeriodCta": "Enregistrer mes premières règles",
|
||
"periodOverdue": "Tes règles arrivent plus tard que d’habitude. Le compteur de jours est en pause jusqu’à ce que les prochaines règles soient enregistrées.",
|
||
"periodOverdueDays": "Tes règles arrivent {days} jours plus tard que d’habitude. Le compteur de jours est en pause jusqu’à ce que les prochaines règles soient enregistrées.",
|
||
"logPeriodCta": "Enregistrer les règles"
|
||
},
|
||
"calendar": {
|
||
"legendPeriod": "Règles enregistrées",
|
||
"legendPredicted": "Règles prévues",
|
||
"legendFertile": "Fenêtre fertile",
|
||
"legendOvulation": "Ovulation",
|
||
"legendSymptoms": "Symptômes enregistrés",
|
||
"prevMonth": "Mois précédent",
|
||
"nextMonth": "Mois suivant",
|
||
"loading": "Chargement de ton calendrier…",
|
||
"learning": "Nous apprenons ton cycle : enregistre au moins trois cycles complets et la fenêtre fertile, l'ovulation et les phases se compléteront. D'ici là, le calendrier n'affiche que ce que tu as enregistré.",
|
||
"legendSymptom": "Symptômes",
|
||
"legendOvulationConfirmed": "Ovulation confirmée",
|
||
"flowSpotting": "spotting",
|
||
"flowLight": "léger",
|
||
"flowMedium": "moyen",
|
||
"flowHeavy": "abondant",
|
||
"legendIntercourse": "Rapports",
|
||
"legendOtherEntries": "Autres saisies"
|
||
},
|
||
"predictions": {
|
||
"title": "Ce qui arrive ensuite",
|
||
"nextPeriod": "Prochaines règles",
|
||
"nextPeriodWindow": "{low}–{high}",
|
||
"fertileWindow": "Fenêtre fertile",
|
||
"ovulation": "Ovulation estimée",
|
||
"confidenceHigh": "Élevée",
|
||
"confidenceMedium": "Moyenne",
|
||
"confidenceLow": "Faible",
|
||
"stillLearning": "Encore en apprentissage",
|
||
"stillLearningBody": "Enregistre au moins trois cycles complets et tes prévisions s'affineront. D'ici là, ceci reste une estimation approximative.",
|
||
"rawMode": "Prévision désactivée",
|
||
"rawModeBody": "Tu as désactivé les prévisions : seules tes données enregistrées sont affichées, sans prévision.",
|
||
"none": "Pas encore de prévision. Enregistre des règles pour commencer.",
|
||
"ovulationConfirmed": "Ovulation (confirmée)"
|
||
},
|
||
"history": {
|
||
"title": "Tes cycles",
|
||
"avgLength": "Durée moyenne",
|
||
"variability": "Variabilité",
|
||
"avgPeriodLength": "Règles moyennes",
|
||
"regularity": "Régularité",
|
||
"regularityREGULAR": "Régulier",
|
||
"regularityIRREGULAR": "Irrégulier",
|
||
"regularityLEARNING": "En apprentissage",
|
||
"days": "{count} jours",
|
||
"daysPlusMinus": "± {count} jours",
|
||
"none": "Aucun cycle enregistré pour l'instant.",
|
||
"recentCycles": "Cycles récents",
|
||
"ongoing": "en cours",
|
||
"periodDays": "règles {count} j",
|
||
"ovulationChip": "Ovulation",
|
||
"chartTitle": "Durée du cycle au fil du temps",
|
||
"chartCaption": "Chaque barre est un cycle : la base rose est vos règles, le reste est la durée du cycle.",
|
||
"chartAria": "Graphique de durée de vos {count} derniers cycles, d'une moyenne de {avg} jours, classé comme {regularity}.",
|
||
"legendPeriodSegment": "Jours de règles",
|
||
"legendRestSegment": "Reste du cycle"
|
||
},
|
||
"sheet": {
|
||
"title": "Enregistrer ta journée",
|
||
"description": "Flux, symptômes et notes de cette journée.",
|
||
"flow": "Flux",
|
||
"symptoms": "Symptômes",
|
||
"temperature": "Température basale",
|
||
"temperatureDisturbed": "Marquer la mesure comme perturbée",
|
||
"temperatureDisturbedHint": "Fièvre, maladie, alcool ou mesure tardive : exclue de l'évaluation de la température.",
|
||
"ovulationTest": "Test d'ovulation",
|
||
"mucus": "Glaire cervicale",
|
||
"cervix": "Col de l'utérus",
|
||
"cervixPosition": "Position",
|
||
"cervixFirmness": "Fermeté",
|
||
"cervixOpening": "Ouverture",
|
||
"intercourse": "Rapports",
|
||
"protected": "Protégés",
|
||
"note": "Note",
|
||
"notePlaceholder": "Ce que tu veux retenir d'aujourd'hui…",
|
||
"save": "Enregistrer",
|
||
"saving": "Enregistrement…",
|
||
"cancel": "Annuler",
|
||
"saveError": "Enregistrement impossible. Réessaie.",
|
||
"emptyHint": "Choisis un flux ou un symptôme pour enregistrer cette journée, ou utilise le bouton de début des règles ci-dessus.",
|
||
"intermenstrualBleeding": "Saignements entre les règles",
|
||
"pregnancyTest": "Test de grossesse",
|
||
"progesteroneTest": "Test de progestérone",
|
||
"contraceptive": "Contraception",
|
||
"severity": "Intensité",
|
||
"severityLevel": "Intensité {level} sur 4",
|
||
"delete": "Supprimer",
|
||
"deleteTitle": "Supprimer cette journée ?",
|
||
"deleteBody": "Tout ce qui est enregistré pour cette journée disparaît : flux, température, symptômes et votre note. Impossible de le récupérer.",
|
||
"deleteConfirm": "Supprimer la journée",
|
||
"temperatureSection": "Température et ovulation",
|
||
"intimacySection": "Intimité et contraception",
|
||
"testsSection": "Tests",
|
||
"phaseDayHeader": "Jour {day}, {phase}",
|
||
"bbtHint": "Prends-la dès le matin, avant de te lever.",
|
||
"titleForDate": "Saisie du {date}",
|
||
"descriptionToday": "Aujourd'hui. Flux, symptômes et notes.",
|
||
"deleteBodyCycleStart": "Cette journée ouvre un cycle. La supprimer emporte le début des règles, si bien que le cycle précédent se poursuit comme avant. Tout ce qui est saisi ici disparaît aussi : flux, température, symptômes et ta note. Rien ne peut être récupéré."
|
||
},
|
||
"settings": {
|
||
"title": "Réglages du cycle",
|
||
"typicalCycleLength": "Durée typique du cycle (jours)",
|
||
"typicalPeriodLength": "Durée typique des règles (jours)",
|
||
"lutealPhaseLength": "Durée de la phase lutéale (jours)",
|
||
"priorsDescription": "Ces valeurs aident tes prévisions avant d'avoir enregistré beaucoup de cycles. Laisse vide pour utiliser les valeurs par défaut.",
|
||
"rawChartMode": "Mode graphique brut",
|
||
"rawChartModeDescription": "Affiche uniquement tes données enregistrées, sans prévision ni interprétation.",
|
||
"secondarySymptomLabel": "Deuxième signe de fertilité",
|
||
"secondarySymptomDescription": "Le deuxième signe associé à ta température pour la double vérification sympto-thermique. La plupart des personnes observent la glaire cervicale ; passe à l'observation du col de l'utérus si tu préfères.",
|
||
"secondarySymptomCitation": "En savoir plus sur la méthode (étude)",
|
||
"secondarySymptom": {
|
||
"MUCUS": "Glaire cervicale",
|
||
"CERVIX": "Col de l'utérus"
|
||
},
|
||
"prediction": "Prévisions",
|
||
"predictionDescription": "Prévois tes prochaines règles et, le cas échéant, ta fenêtre fertile.",
|
||
"encryption": "Chiffrer les entrées sensibles",
|
||
"encryptionDescription": "Chiffre au repos les champs révélant l'intention (tests de grossesse, contraception, rapports), en plus des notes toujours chiffrées.",
|
||
"discreet": "Notifications discrètes",
|
||
"discreetDescription": "Masque les détails du cycle dans le texte des notifications sur ton écran verrouillé.",
|
||
"saved": "Réglages enregistrés",
|
||
"saveError": "Enregistrement impossible. Réessaie.",
|
||
"save": "Enregistrer",
|
||
"reminders": "Rappels",
|
||
"remindersDescription": "Activez les rappels de règles par canal dans les paramètres de notification.",
|
||
"remindersLink": "Paramètres de notification",
|
||
"fertileReminder": "Rappel de fenêtre fertile",
|
||
"fertileReminderDescription": "Recevez un avertissement quelques jours avant votre fenêtre fertile estimée. Désactivé par défaut : activez-le par canal dans les paramètres de notification."
|
||
},
|
||
"testResult": {
|
||
"POSITIVE": "Positif",
|
||
"NEGATIVE": "Négatif",
|
||
"INDETERMINATE": "Incertain"
|
||
},
|
||
"contraceptive": {
|
||
"NONE": "Aucune",
|
||
"UNSPECIFIED": "Autre",
|
||
"IMPLANT": "Implant",
|
||
"INJECTION": "Injection",
|
||
"IUD": "DIU",
|
||
"INTRAVAGINAL_RING": "Anneau",
|
||
"ORAL": "Pilule",
|
||
"PATCH": "Patch",
|
||
"EMERGENCY": "Urgence"
|
||
},
|
||
"loadError": "Impossible de charger vos données de cycle.",
|
||
"saveError": "Impossible d’enregistrer votre saisie de cycle.",
|
||
"deleteError": "Impossible de supprimer l’entrée.",
|
||
"bbt": {
|
||
"title": "Température basale",
|
||
"caption": "Votre température matinale sur ce cycle. Une hausse durable d'environ 0,2 °C suit l'ovulation.",
|
||
"empty": "Pas encore de relevés de température",
|
||
"emptyHint": "Notez votre température basale chaque matin pour voir le décalage de température de votre cycle.",
|
||
"ovulationEstimate": "Ovulation est.",
|
||
"tooltipTemp": "{temp} {unit}",
|
||
"ovulationConfirmed": "Ovulation confirmée"
|
||
},
|
||
"fieldInfo": {
|
||
"bbt": "Ta température au repos, prise dès le matin avant de te lever. Elle augmente légèrement (environ 0,2–0,3 °C) après l'ovulation.",
|
||
"bbtLabel": "Qu'est-ce que la température basale ?",
|
||
"mucus": "Les pertes vaginales évoluent au fil du cycle, de sèches ou collantes à crémeuses, puis aqueuses et comme du blanc d'œuf autour des jours les plus fertiles.",
|
||
"mucusLabel": "Qu'est-ce que la glaire cervicale ?",
|
||
"ovulationTest": "Un test urinaire à domicile qui détecte le pic de LH, la montée hormonale environ 24–36 h avant l'ovulation. Un test positif signale la période la plus fertile.",
|
||
"ovulationTestLabel": "Qu'est-ce qu'un test d'ovulation ?",
|
||
"spotting": "Léger saignement en dehors des règles.",
|
||
"spottingLabel": "Qu'est-ce que le spotting entre les règles ?",
|
||
"pregnancyTest": "Résultat d'un test de grossesse (hCG) à domicile.",
|
||
"pregnancyTestLabel": "Qu'est-ce qu'un test de grossesse ?",
|
||
"progesteroneTest": "Un test confirmant que l'ovulation a eu lieu : la progestérone augmente ensuite.",
|
||
"progesteroneTestLabel": "Qu'est-ce qu'un test de progestérone ?",
|
||
"intercourse": "Si un rapport sexuel a eu lieu ce jour-là.",
|
||
"intercourseLabel": "Que suit le rapport ?",
|
||
"protected": "Si une contraception a été utilisée pendant le rapport.",
|
||
"protectedLabel": "Que signifie protégé ?"
|
||
},
|
||
"saveSuccess": "Entrée enregistrée",
|
||
"deleteSuccess": "Entrée supprimée",
|
||
"periodStartSaved": "Début des règles enregistré",
|
||
"periodEndSaved": "Fin des règles enregistrée",
|
||
"startedPeriodOnDate": "Mes règles ont commencé ce jour-là",
|
||
"endedPeriodOnDate": "Mes règles se sont terminées ce jour-là",
|
||
"startAbsorbed": "Début des règles enregistré. Votre début du {absorbed} a été fusionné avec celui du {date}.",
|
||
"startRestored": "Enregistré. Le début du {dates} est de retour."
|
||
},
|
||
"cycleReminders": {
|
||
"periodSoonTitle": "Règles probablement bientôt",
|
||
"periodSoonBody": "Vos prochaines règles sont prévues dans environ deux jours.",
|
||
"periodConfirmTitle": "Vos règles ont-elles commencé ?",
|
||
"periodConfirmBody": "Vos règles étaient prévues pour maintenant. Enregistrez-les pour garder des prévisions précises.",
|
||
"fertileSoonTitle": "Fenêtre fertile à venir",
|
||
"fertileSoonBody": "Votre fenêtre fertile estimée devrait commencer dans environ deux jours. Il s'agit d'une estimation, et non d'une garantie médicale ou contraceptive.",
|
||
"discreetTitle": "Rappel HealthLog",
|
||
"discreetBody": "Vous avez un rappel dans HealthLog."
|
||
},
|
||
"dataList": {
|
||
"allSources": "Toutes les sources",
|
||
"dateFrom": "Du",
|
||
"dateTo": "Au",
|
||
"dateRange": "Période",
|
||
"valueRange": "Valeur",
|
||
"valueMin": "Min.",
|
||
"valueMax": "Max.",
|
||
"typeLabel": "Type",
|
||
"sourceLabel": "Source",
|
||
"resetFilters": "Réinitialiser",
|
||
"clearFilter": "Supprimer le filtre : {label}",
|
||
"selectAll": "Tout sélectionner sur cette page",
|
||
"selectRow": "Sélectionner la ligne",
|
||
"selected": "{count} sélectionné(s)",
|
||
"deleteN": "Supprimer ({count})",
|
||
"clearSelection": "Effacer la sélection",
|
||
"selectionBarLabel": "Actions de sélection"
|
||
},
|
||
"measurementReminders": {
|
||
"sectionTitle": "Examens",
|
||
"sectionDescription": "Rappels de ce qu'il faut mesurer ou vérifier, quand et où.",
|
||
"markDone": "Terminé",
|
||
"delete": "Supprimer",
|
||
"deleteConfirmTitle": "Supprimer le rappel ?",
|
||
"deleteConfirmDescription": "Ce rappel d’examen sera définitivement supprimé.",
|
||
"postpone": {
|
||
"menuItem": "Reporter…",
|
||
"title": "Reporter l'échéance",
|
||
"description": "Ne déplace que l'échéance actuelle ; le rythme régulier reste inchangé.",
|
||
"chip": "+{days} jours",
|
||
"dateLabel": "Nouvelle date",
|
||
"confirm": "Reporter"
|
||
},
|
||
"skip": {
|
||
"heading": "Passer cette échéance",
|
||
"explainer": "Enregistré honnêtement comme passé, pas comme fait. L'intervalle redémarre à partir d'aujourd'hui.",
|
||
"action": "Passer",
|
||
"confirmTitle": "Passer cette échéance ?"
|
||
},
|
||
"snoozedUntil": "Reporté au {date}",
|
||
"skippedOn": "Passé le {date}",
|
||
"skipCount": "passé {count} fois",
|
||
"disabledBadge": "Désactivé",
|
||
"nextDue": {
|
||
"none": "Non planifié",
|
||
"today": "À faire aujourd'hui",
|
||
"tomorrow": "À faire demain",
|
||
"inDays": "Dans {days} jours"
|
||
},
|
||
"overdueByDays": "En retard de {days} jours",
|
||
"overdueSinceYesterday": "En retard depuis hier",
|
||
"cadence": {
|
||
"everyNDays": "Tous les {days} jours",
|
||
"custom": "Planning personnalisé",
|
||
"customInterval": "Personnalisé (tous les N jours)",
|
||
"rruleOption": "Règle personnalisée (RRULE)"
|
||
},
|
||
"location": {
|
||
"prefix": "Chez : {location}"
|
||
},
|
||
"types": {
|
||
"WEIGHT": "Poids",
|
||
"BLOOD_PRESSURE_SYS": "Tension artérielle",
|
||
"PULSE": "Pouls",
|
||
"BLOOD_GLUCOSE": "Glycémie",
|
||
"OXYGEN_SATURATION": "Saturation en oxygène",
|
||
"BODY_FAT": "Masse grasse",
|
||
"BODY_TEMPERATURE": "Température corporelle",
|
||
"FAT_MASS": "Masse grasse",
|
||
"FAT_FREE_MASS": "Masse maigre totale",
|
||
"MUSCLE_MASS": "Masse musculaire",
|
||
"LEAN_BODY_MASS": "Masse maigre",
|
||
"BONE_MASS": "Masse osseuse",
|
||
"TOTAL_BODY_WATER": "Eau corporelle",
|
||
"VISCERAL_FAT": "Graisse viscérale",
|
||
"BODY_MASS_INDEX": "Indice de masse corporelle (IMC)",
|
||
"WAIST_CIRCUMFERENCE": "Tour de taille",
|
||
"PHQ9_SCORE": "PHQ-9 (humeur)",
|
||
"GAD7_SCORE": "GAD-7 (inquiétude)",
|
||
"WHO5_SCORE": "WHO-5 (bien-être)",
|
||
"SCI_SCORE": "SCI (sommeil)"
|
||
},
|
||
"typeGroups": {
|
||
"vitals": "Constantes vitales",
|
||
"bodyComposition": "Composition corporelle",
|
||
"mentalWellbeing": "Bien-être mental"
|
||
},
|
||
"empty": {
|
||
"title": "Aucun rappel pour l'instant",
|
||
"description": "Ajoutez un rappel pour mesurer régulièrement votre tension ou planifier un bilan sanguin annuel."
|
||
},
|
||
"form": {
|
||
"label": "Libellé",
|
||
"labelPlaceholder": "ex. Mesurer la tension",
|
||
"kind": "Type",
|
||
"kindType": "Lié à une mesure",
|
||
"kindFreeText": "Vérification libre",
|
||
"measurementType": "Mesure",
|
||
"cadence": "Répétition",
|
||
"notifyHour": "Rappeler à",
|
||
"location": "Où (facultatif)",
|
||
"locationPlaceholder": "ex. Médecin, Laboratoire",
|
||
"save": "Enregistrer",
|
||
"createTitle": "Nouveau rappel",
|
||
"editTitle": "Modifier le rappel",
|
||
"customInterval": "Répéter tous les (jours)",
|
||
"rrule": "Règle de récurrence (RRULE)",
|
||
"rruleHint": "RFC-5545, p. ex. FREQ=YEARLY pour un contrôle annuel.",
|
||
"firstDue": "Première échéance (facultatif)"
|
||
},
|
||
"pushTitle": "Rappel d’examen",
|
||
"pushBody": "C'est l'heure : {label}",
|
||
"pushLocation": "(chez {location})",
|
||
"edit": "Modifier",
|
||
"originCoach": "Coach",
|
||
"until": "Jusqu'au {date}",
|
||
"selfPlanned": "Auto-planifié",
|
||
"captureValue": "Enregistrer la valeur",
|
||
"measureNow": "Mesurer maintenant",
|
||
"startCheckIn": "Commencer le check-in",
|
||
"nextDueLabel": "Prochaine échéance :",
|
||
"lastDoneLabel": "Dernière fois :",
|
||
"customize": "Personnaliser les examens",
|
||
"adherence": {
|
||
"label": "Dans l'intervalle",
|
||
"onTrack": "Dans les temps",
|
||
"due": "À faire maintenant"
|
||
},
|
||
"capture": {
|
||
"title": "Enregistrer une mesure",
|
||
"description": "Saisissez la valeur ; le rappel est marqué comme fait."
|
||
},
|
||
"manage": {
|
||
"empty": "Aucun rappel à personnaliser pour l'instant."
|
||
},
|
||
"dashboard": {
|
||
"empty": "Aucun rappel d’examen à venir.",
|
||
"openLink": "Ouvrir les examens"
|
||
},
|
||
"showMeasurements": "Afficher les mesures",
|
||
"loadError": "Impossible de charger vos rappels.",
|
||
"fileVisit": "Enregistrer un rendez-vous"
|
||
},
|
||
"moduleList": {
|
||
"viewToggleLabel": "Affichage",
|
||
"viewCards": "Vue en cartes",
|
||
"viewList": "Vue en liste",
|
||
"viewHeading": "Affichage",
|
||
"viewDescription": "Choisissez si les entrées s'affichent en cartes ou en liste compacte.",
|
||
"reorder": {
|
||
"heading": "Ordre",
|
||
"description": "Faites glisser les entrées pour définir leur ordre d'affichage.",
|
||
"empty": "Aucune entrée à réordonner pour l'instant."
|
||
}
|
||
},
|
||
"labs": {
|
||
"title": "Résultats d'analyses",
|
||
"subtitle": "Analyses sanguines et biomarqueurs",
|
||
"addResult": "Ajouter une valeur",
|
||
"addDescription": "Enregistrez un biomarqueur à partir d'un compte rendu de laboratoire.",
|
||
"addFirst": "Ajouter votre premier résultat",
|
||
"emptyTitle": "Aucun résultat pour l'instant",
|
||
"emptyDescription": "Enregistrez des analyses comme l'HbA1c, le LDL ou la ferritine pour les suivre dans le temps et les partager avec votre médecin.",
|
||
"referenceLabel": "Référence",
|
||
"readingsCount": "{count} mesures",
|
||
"deleteConfirmTitle": "Supprimer le résultat d'analyse ?",
|
||
"deleteConfirmDescription": "Ce résultat d'analyse sera supprimé. Vous pourrez annuler cette action pendant un court instant juste après.",
|
||
"deletedToast": "Résultat supprimé",
|
||
"deleteError": "Impossible de supprimer le résultat",
|
||
"loadError": "Impossible de charger les résultats",
|
||
"customize": "Personnaliser les analyses",
|
||
"localOcr": {
|
||
"heading": "Lire les scans sur cet appareil",
|
||
"description": "Lit la photo sur votre appareil et n'envoie que le texte extrait à votre fournisseur.",
|
||
"detail": "Utile quand votre fournisseur d'IA ne lit pas les images. Moins précis : vérifiez chaque valeur avant d'enregistrer."
|
||
},
|
||
"sort": {
|
||
"heading": "Tri",
|
||
"label": "Ordre des valeurs",
|
||
"recentDesc": "Mesure la plus récente d'abord",
|
||
"recentAsc": "Mesure la plus ancienne d'abord",
|
||
"alphaAsc": "Nom (A–Z)",
|
||
"alphaDesc": "Nom (Z–A)",
|
||
"manual": "Trier manuellement",
|
||
"hint": "En tri manuel, vous pouvez glisser les biomarqueurs ci-dessous dans votre propre ordre."
|
||
},
|
||
"range": {
|
||
"inRange": "Dans la norme",
|
||
"below": "Sous la norme",
|
||
"above": "Au-dessus de la norme"
|
||
},
|
||
"form": {
|
||
"value": "Valeur",
|
||
"takenAt": "Date du prélèvement",
|
||
"note": "Note",
|
||
"notePlaceholder": "Contexte facultatif pour ce résultat",
|
||
"requiredError": "Saisissez une valeur.",
|
||
"save": "Enregistrer",
|
||
"saveAndAddAnother": "Enregistrer et ajouter un autre",
|
||
"savedToast": "Résultat enregistré",
|
||
"saveError": "Impossible d'enregistrer le résultat",
|
||
"biomarker": "Biomarqueur",
|
||
"biomarkerPlaceholder": "Choisir un biomarqueur",
|
||
"defineNew": "+ Définir un nouveau biomarqueur",
|
||
"noBiomarkersHint": "Définissez d'abord un biomarqueur pour enregistrer une valeur.",
|
||
"pickBiomarkerError": "Choisissez d'abord un biomarqueur.",
|
||
"resultType": "Type de résultat",
|
||
"numeric": "Numérique",
|
||
"qualitative": "Qualitatif",
|
||
"qualitativeResult": "Résultat",
|
||
"qualitativePlaceholder": "p. ex. négatif",
|
||
"qualNegative": "négatif",
|
||
"qualPositive": "positif",
|
||
"qualBorderline": "limite",
|
||
"sourceRange": "Plage imprimée sur le compte rendu",
|
||
"sourceRangePlaceholder": "p. ex. 3,5 - 5,0 ou < 5",
|
||
"sourceRangeAdd": "+ Ajouter la plage du compte rendu",
|
||
"sourceRangeHint": "Facultatif. Ne vaut que pour cette mesure ; votre plage enregistrée reste inchangée.",
|
||
"sourceRangeUnparsed": "Conservé tel quel : aucune plage numérique n'a pu en être lue."
|
||
},
|
||
"backToLabs": "Retour aux résultats",
|
||
"hasNote": "Note",
|
||
"editTitle": "Modifier la mesure",
|
||
"editDescription": "Corrigez la valeur, la date ou la note de cette mesure.",
|
||
"editedToast": "Mesure mise à jour",
|
||
"editError": "Impossible de mettre à jour la mesure",
|
||
"editTimestampError": "Saisissez une date valide.",
|
||
"editReading": "Modifier la mesure",
|
||
"deleteReading": "Supprimer la mesure",
|
||
"restoredToast": "Mesure restaurée",
|
||
"restoreError": "Impossible de restaurer la mesure",
|
||
"detail": {
|
||
"emptyTitle": "Aucune mesure pour l'instant",
|
||
"emptyDescription": "Ajoutez une valeur pour suivre ce biomarqueur dans le temps.",
|
||
"title": "Biomarqueur",
|
||
"genericDescription": "Un biomarqueur biologique que vous suivez. Ajoutez des mesures pour observer son évolution par rapport à la plage de référence.",
|
||
"valuesTitle": "{marker} : toutes les valeurs",
|
||
"valuesDescription": "Chaque mesure de ce biomarqueur. Modifiez ou supprimez une entrée directement.",
|
||
"backToMarker": "Retour à {marker}",
|
||
"latestResult": "Dernier résultat"
|
||
},
|
||
"chart": {
|
||
"empty": "Aucune mesure sur cette période.",
|
||
"valueLabel": "Valeur",
|
||
"range": {
|
||
"30": "30 j",
|
||
"90": "90 j",
|
||
"365": "1 a",
|
||
"all": "Tout"
|
||
},
|
||
"sourceRangeLabel": "Plage du compte rendu",
|
||
"sourceBandLegend": "Deuxième bande : la plage imprimée sur le compte rendu du {date}.",
|
||
"sourceBandMixed": "Deuxième bande : la plage imprimée sur le compte rendu le plus récent. Des comptes rendus antérieurs de la période indiquent d'autres plages."
|
||
},
|
||
"biomarker": {
|
||
"manageTitle": "Biomarqueurs",
|
||
"managerDescription": "Définissez un marqueur une fois : son unité et sa plage sont réutilisées pour chaque mesure.",
|
||
"define": "Définir",
|
||
"defineFirst": "Définir votre premier biomarqueur",
|
||
"defineTitle": "Définir un biomarqueur",
|
||
"defineDescription": "Réglez le nom, l'unité et la plage une fois. Vous choisissez le marqueur à l'ajout d'une valeur.",
|
||
"editTitle": "Modifier le biomarqueur",
|
||
"edit": "Modifier",
|
||
"delete": "Supprimer",
|
||
"deletedToast": "Biomarqueur supprimé",
|
||
"deleteError": "Impossible de supprimer le biomarqueur",
|
||
"deleteConfirmTitle": "Supprimer le biomarqueur ?",
|
||
"deleteConfirmDescription": "Le biomarqueur et toutes ses valeurs enregistrées sont définitivement supprimés. Cette action est irréversible.",
|
||
"emptyTitle": "Aucun biomarqueur pour l'instant",
|
||
"emptyDescription": "Définissez des marqueurs comme LDL ou HbA1c pour enregistrer des valeurs.",
|
||
"loadError": "Impossible de charger les biomarqueurs",
|
||
"noRange": "Pas de plage de référence",
|
||
"form": {
|
||
"seedLabel": "Partir d'un marqueur courant",
|
||
"seedPlaceholder": "Choisir un marqueur (facultatif)",
|
||
"seedHint": "En choisir un remplit les champs. Ajustez la plage à votre laboratoire.",
|
||
"name": "Nom",
|
||
"namePlaceholder": "ex. Cholestérol LDL",
|
||
"unit": "Unité",
|
||
"unitPlaceholder": "ex. mg/dL",
|
||
"unitLockedHint": "Dès que ce marqueur a des valeurs, son unité reste la même. Sinon, les valeurs enregistrées s'afficheraient dans une nouvelle unité sans être converties.",
|
||
"panel": "Panel",
|
||
"panelPlaceholder": "ex. Lipides",
|
||
"lowerBound": "Référence basse",
|
||
"upperBound": "Référence haute",
|
||
"lowerPlaceholder": "Borne inférieure",
|
||
"upperPlaceholder": "Borne supérieure",
|
||
"context": "Contexte",
|
||
"contextPlaceholder": "Note facultative sur ce marqueur",
|
||
"rangeHint": "Les deux bornes sont facultatives. Laissez-en une vide pour une plage ouverte (ex. LDL < 116).",
|
||
"requiredError": "Le nom et l'unité sont requis.",
|
||
"rangeOrderError": "La borne inférieure ne doit pas dépasser la borne supérieure.",
|
||
"save": "Enregistrer le biomarqueur",
|
||
"savedToast": "Biomarqueur enregistré",
|
||
"updatedToast": "Biomarqueur mis à jour",
|
||
"saveError": "Impossible d'enregistrer le biomarqueur"
|
||
},
|
||
"hide": "Masquer",
|
||
"unhide": "Restaurer",
|
||
"hiddenToast": "Biomarqueur masqué",
|
||
"unhiddenToast": "Biomarqueur restauré",
|
||
"hideError": "Impossible de mettre à jour le biomarqueur",
|
||
"allHidden": "Tous les biomarqueurs sont masqués.",
|
||
"hiddenSection": "Masqués"
|
||
},
|
||
"catalog": {
|
||
"total-cholesterol": "Cholestérol total",
|
||
"ldl": "Cholestérol LDL",
|
||
"hdl": "Cholestérol HDL",
|
||
"triglycerides": "Triglycérides",
|
||
"fasting-glucose": "Glycémie à jeun",
|
||
"hba1c": "HbA1c",
|
||
"tsh": "TSH",
|
||
"ft3": "T3 libre",
|
||
"ft4": "T4 libre",
|
||
"ferritin": "Ferritine",
|
||
"transferrin-saturation": "Saturation de la transferrine",
|
||
"vitamin-d": "Vitamine D (25-OH)",
|
||
"vitamin-b12": "Vitamine B12",
|
||
"folate": "Folate",
|
||
"hs-crp": "CRP us",
|
||
"creatinine": "Créatinine",
|
||
"egfr": "DFGe",
|
||
"alt": "ALAT",
|
||
"ast": "ASAT",
|
||
"ggt": "GGT",
|
||
"sodium": "Sodium",
|
||
"potassium": "Potassium",
|
||
"hemoglobin": "Hémoglobine",
|
||
"hematocrit": "Hématocrite",
|
||
"wbc": "Leucocytes",
|
||
"platelets": "Plaquettes",
|
||
"panel": {
|
||
"lipids": "Lipides",
|
||
"glucose": "Métabolisme du glucose",
|
||
"thyroid": "Thyroïde",
|
||
"iron": "Fer",
|
||
"vitamins": "Vitamines",
|
||
"inflammation": "Inflammation",
|
||
"renal": "Rein",
|
||
"liver": "Foie",
|
||
"electrolytes": "Électrolytes",
|
||
"bloodCount": "Numération sanguine"
|
||
},
|
||
"desc": {
|
||
"total-cholesterol": "Le cholestérol total est la somme du cholestérol transporté par l'ensemble des particules de lipoprotéines du sang, y compris les fractions LDL, HDL et les résidus. Le cholestérol est lui-même un constituant essentiel des membranes cellulaires, des hormones et des acides biliaires. En tant que chiffre unique, il reste une mesure grossière, car une part élevée de HDL comme une part élevée de LDL font monter le total ; on le lit donc généralement avec les fractions individuelles. Il est suivi surtout dans le cadre de l'évaluation du risque cardiovasculaire à long terme.",
|
||
"ldl": "Le cholestérol LDL est le cholestérol transporté par les particules de lipoprotéines de basse densité, la fraction qui livre le cholestérol aux tissus mais peut aussi le déposer dans la paroi des artères. Au fil des années, ce dépôt contribue à la plaque d'athérosclérose, ce qui fait du LDL l'un des marqueurs lipidiques les plus surveillés. Une exposition plus faible sur le long terme s'accompagne en général d'un risque cardiovasculaire moindre. Il s'interprète par catégorie de risque, et non face à une seule valeur normale fixe.",
|
||
"hdl": "Le cholestérol HDL est le cholestérol transporté par les particules de lipoprotéines de haute densité, qui récupèrent le cholestérol en excès dans les tissus et le ramènent au foie pour le recycler ou l'éliminer. En raison de ce rôle de transport, on le qualifie souvent de fraction protectrice. Des taux très bas tendent à accompagner un risque cardiovasculaire plus élevé, mais l'augmenter artificiellement n'a pas réduit le risque de façon fiable ; on le lit donc comme un marqueur et non comme une cible. Il s'interprète habituellement avec le LDL et les triglycérides.",
|
||
"triglycerides": "Les triglycérides sont la principale forme de graisse circulant dans le sang, apportée à la fois par l'alimentation et produite par le foie, et ils constituent une réserve d'énergie essentielle. Les taux montent après les repas ; le prélèvement se fait donc généralement à jeun pour être comparable. Des triglycérides durablement élevés sont associés à un risque métabolique et cardiovasculaire et accompagnent souvent une résistance à l'insuline et un HDL bas. Ils se lisent comme une composante du bilan lipidique global.",
|
||
"fasting-glucose": "La glycémie à jeun est la concentration de sucre dans le sang mesurée après un jeûne nocturne, reflétant la façon dont le corps maintient son niveau de base sans repas récent. Le glucose est le carburant immédiat principal de l'organisme, et l'insuline le maintient normalement dans une plage étroite. Une mesure à jeun écarte l'effet des repas récents, ce qui en fait un dépistage standard du fonctionnement de la régulation du glucose. C'est l'un des marqueurs utilisés pour évaluer la santé métabolique dans le temps.",
|
||
"hba1c": "L'HbA1c est la part de l'hémoglobine des globules rouges qui s'est liée au glucose, et qui s'accumule proportionnellement à l'exposition moyenne au sucre dans le sang. Comme les globules rouges vivent environ trois mois, elle reflète la glycémie moyenne des deux à trois mois précédents plutôt qu'un instant donné. Cela en fait une vue stable et indépendante des repas du contrôle de la glycémie. Sa fiabilité peut être altérée par des affections qui modifient la durée de vie des globules rouges.",
|
||
"tsh": "La TSH (hormone thyréostimulante) est libérée par l'hypophyse pour signaler à la thyroïde de produire ses hormones, et elle s'ajuste à la hausse ou à la baisse pour les maintenir en équilibre. Grâce à cette boucle de rétroaction, la TSH est le dépistage de première intention le plus sensible de la fonction thyroïdienne : elle bouge généralement avant que les hormones thyroïdiennes elles-mêmes ne dévient. Une valeur élevée ou abaissée oriente vers une thyroïde hypo ou hyperactive et conduit habituellement à doser directement les hormones thyroïdiennes. La grossesse et l'âge décalent la plage attendue.",
|
||
"ft3": "La T3 libre (triiodothyronine) est la forme non liée et biologiquement active de l'hormone thyroïdienne la plus puissante, la fraction disponible pour agir sur les tissus. La majeure partie de la T3 circulante est liée à des protéines de transport et inactive ; la part libre reflète donc la disponibilité réelle de l'hormone. Elle est mesurée pour caractériser la fonction thyroïdienne, surtout avec la TSH et la T4 libre lorsque les résultats sont incertains. Les taux dépendent fortement de la technique de dosage et se lisent dans leur contexte clinique.",
|
||
"ft4": "La T4 libre (thyroxine) est la forme non liée de la principale hormone que la thyroïde libère dans le sang ; elle sert de réservoir que les tissus convertissent en T3 plus active selon les besoins. La fraction libre reflète ce qui est réellement disponible pour le corps, indépendamment du taux de protéines de transport. On la mesure généralement avec la TSH pour distinguer un problème de la thyroïde d'un trouble de la signalisation hypophysaire. La grossesse et certains médicaments peuvent la décaler.",
|
||
"ferritin": "La ferritine est la principale protéine de stockage du fer de l'organisme, et son taux sanguin reflète globalement les réserves totales en fer. Une valeur basse oriente vers des réserves épuisées, tandis qu'une valeur élevée peut traduire une surcharge en fer, ou simplement une inflammation, car la ferritine monte aussi comme protéine de la phase aiguë. Pour cette raison, elle s'interprète souvent avec d'autres marqueurs du fer et des signes d'inflammation. C'est l'une des mesures centrales pour évaluer le statut en fer.",
|
||
"transferrin-saturation": "Le coefficient de saturation de la transferrine est le pourcentage de transferrine (la protéine qui transporte le fer dans le sang) actuellement chargé en fer. Il relie la quantité de fer en circulation à la capacité de transport de l'organisme, offrant un instantané de la disponibilité du fer qui complète la vue des réserves donnée par la ferritine. Une saturation basse suggère un fer en quantité insuffisante, tandis qu'une valeur élevée peut indiquer une surcharge. Elle se lit avec la ferritine et le bilan martial complet.",
|
||
"vitamin-d": "La vitamine D se mesure sous forme de 25-hydroxyvitamine D, la forme de stockage circulante et le marqueur standard du statut global en vitamine D. Le corps la fabrique dans la peau exposée à la lumière du soleil et en absorbe une partie par l'alimentation ; elle soutient l'équilibre du calcium, la santé osseuse et la fonction immunitaire. Les taux varient selon la saison, la latitude, le teint de peau et la supplémentation. Elle est suivie pour estimer dans le temps si les réserves sont suffisantes.",
|
||
"vitamin-b12": "La vitamine B12 (cobalamine) est une vitamine essentielle, obtenue surtout à partir d'aliments d'origine animale et stockée en grande partie dans le foie. Elle est nécessaire à la formation des globules rouges, à la synthèse de l'ADN et à la santé du système nerveux. Une carence prolongée, par faible apport ou absorption altérée, peut entraîner une anémie et des symptômes neurologiques. Elle est mesurée pour évaluer le statut nutritionnel, en particulier lorsque l'apport ou l'absorption peuvent être limités.",
|
||
"folate": "Le folate (vitamine B9) est une vitamine du groupe B présente dans les légumes à feuilles vertes, les légumineuses et les aliments enrichis, centrale pour la formation des globules rouges et la synthèse de l'ADN. Il travaille en étroite collaboration avec la vitamine B12, et une carence de l'un ou de l'autre peut produire un type d'anémie similaire. Un apport suffisant en folate est particulièrement important autour du début de la grossesse pour un développement sain du fœtus. Il est mesuré pour évaluer le statut nutritionnel et la cause de certaines anémies.",
|
||
"hs-crp": "La CRP ultrasensible mesure la protéine C-réactive, un marqueur que le foie libère en réponse à l'inflammation, avec une technique affinée pour détecter les faibles concentrations pertinentes pour le risque cardiovasculaire. Contrairement à la CRP standard utilisée pour les infections aiguës, la version ultrasensible capte l'inflammation discrète et chronique liée à la maladie vasculaire. Comme toute infection ou blessure récente peut l'élever, elle s'interprète à distance d'une affection aiguë et se confirme souvent par un prélèvement répété. Elle se lit comme un facteur parmi d'autres du risque cardiovasculaire global.",
|
||
"creatinine": "La créatinine est un déchet du métabolisme musculaire normal que les reins filtrent du sang à un rythme assez constant. Comme la production est relativement stable, son taux sanguin sert de jauge pratique de la capacité des reins à éliminer les déchets. Les valeurs dépendent aussi de la masse musculaire, de l'hydratation et de l'alimentation ; on les interprète donc généralement avec le débit de filtration estimé. C'est un marqueur central de la fonction rénale.",
|
||
"egfr": "Le DFG estimé (débit de filtration glomérulaire) estime la quantité de sang que les reins filtrent chaque minute, calculée à partir de la créatinine, de l'âge et du sexe. Il traduit une valeur brute de créatinine en une mesure plus directement interprétable de la fonction rénale. Un DFG qui baisse au fil du temps est le principal moyen de classer et de suivre les atteintes rénales chroniques. En tant qu'estimation, il se lit comme une tendance plutôt que comme un chiffre exact unique.",
|
||
"alt": "L'ALAT (alanine aminotransférase) est une enzyme concentrée dans les cellules du foie, libérée dans le sang lorsque ces cellules sont stressées ou endommagées. Comme elle est relativement spécifique du foie, c'est l'un des principaux marqueurs pour détecter une atteinte ou une inflammation hépatique. Les valeurs peuvent monter avec la stéatose hépatique, une hépatite virale, l'alcool ou certains médicaments. On la lit généralement avec l'ASAT et les autres marqueurs du bilan hépatique.",
|
||
"ast": "L'ASAT (aspartate aminotransférase) est une enzyme présente dans le foie, mais aussi dans le muscle, le cœur et les globules rouges, libérée lorsque l'un de ces tissus est lésé. Comme elle est moins spécifique du foie que l'ALAT, les deux s'interprètent ensemble, et leur rapport peut orienter sur l'origine et la nature du problème. Un exercice intense ou une lésion musculaire peuvent l'élever indépendamment du foie. C'est l'une des enzymes standard du bilan hépatique.",
|
||
"ggt": "La GGT (gamma-glutamyl transférase) est une enzyme du foie et des voies biliaires qui monte en particulier lorsque l'écoulement de la bile est entravé ou en cas d'exposition à l'alcool. Elle sert souvent à clarifier pourquoi un autre marqueur hépatique est élevé, par exemple pour distinguer une origine hépatique ou biliaire. Elle est sensible mais peu spécifique ; on la lit donc dans le contexte du reste du bilan hépatique. C'est l'un des marqueurs utilisés pour évaluer la santé du foie et des voies biliaires.",
|
||
"sodium": "Le sodium est le principal électrolyte du liquide situé à l'extérieur des cellules et le moteur essentiel de l'équilibre hydrique et du volume sanguin. Le corps le régule étroitement par la soif, les hormones et les reins, de sorte que son taux sanguin reflète davantage l'équilibre entre l'eau et le sel que le seul apport alimentaire. Des valeurs anormales signalent généralement un trouble de l'équilibre de l'eau plutôt que du sodium lui-même. C'est un élément central du bilan métabolique de base et des électrolytes.",
|
||
"potassium": "Le potassium est le principal électrolyte à l'intérieur des cellules et il est essentiel à la transmission nerveuse et au rythme régulier du muscle cardiaque. Son taux sanguin est maintenu dans une plage étroite par les reins et les signaux hormonaux, car des valeurs hautes comme basses peuvent perturber l'activité électrique du cœur. Les taux peuvent être influencés par la fonction rénale, l'hydratation et plusieurs médicaments courants. C'est une mesure centrale du bilan des électrolytes.",
|
||
"hemoglobin": "L'hémoglobine est la protéine contenant du fer des globules rouges, qui fixe l'oxygène dans les poumons et le transporte vers les tissus. Sa concentration est la principale mesure de la capacité du sang à transporter l'oxygène et le marqueur central pour détecter l'anémie. Des valeurs basses peuvent refléter une perte de sang, un manque de fer ou de vitamines, ou une production réduite, tandis que des valeurs élevées peuvent suivre une déshydratation ou des conditions pauvres en oxygène. C'est une pierre angulaire de la numération formule sanguine.",
|
||
"hematocrit": "L'hématocrite est la proportion du volume sanguin constituée de globules rouges, exprimée en pourcentage. Il évolue étroitement avec l'hémoglobine et offre une vue complémentaire de la masse de globules rouges et de la capacité du sang à transporter l'oxygène. L'hydratation l'influence, car les variations du volume de plasma déplacent la proportion même lorsque le nombre de globules rouges reste stable. Il se lit avec l'hémoglobine et le reste de la numération sanguine.",
|
||
"wbc": "La numération des globules blancs est le nombre total de cellules immunitaires circulant dans le sang, la défense mobile du corps contre les infections. Elle augmente en réponse à une infection, une inflammation ou un stress et peut baisser lorsque la moelle osseuse est freinée ou dans certaines maladies immunitaires. Comme elle additionne plusieurs types de cellules distincts, une variation notable est souvent complétée par une formule qui la détaille. C'est une composante centrale de la numération formule sanguine.",
|
||
"platelets": "Les plaquettes sont de petits fragments cellulaires du sang qui s'agrègent et forment le bouchon initial arrêtant le saignement d'un vaisseau lésé. Leur nombre reflète l'équilibre entre la production dans la moelle osseuse et la consommation ou la destruction. Un nombre bas peut accroître la tendance au saignement, tandis qu'un nombre élevé peut suivre une inflammation ou d'autres stimuli. Elles font partie de la numération formule sanguine et constituent une jauge de base de la capacité de coagulation.",
|
||
"apob": "L'apolipoprotéine B est la protéine structurale portée par chacune des particules de lipoprotéines athérogènes ; la doser revient donc à compter directement ces particules plutôt que le cholestérol qu'elles transportent. Comme il y a une molécule d'ApoB sur chaque particule de LDL, de VLDL et apparentée, elle peut capter un risque cardiovasculaire qu'une valeur de cholestérol LDL manque, en particulier lorsque le nombre de particules et leur teneur en cholestérol divergent. C'est pourquoi elle est de plus en plus utilisée pour affiner l'évaluation du risque fondée sur les lipides. Elle s'interprète avec le bilan lipidique habituel.",
|
||
"lp-a": "La lipoprotéine(a) est une particule semblable au LDL avec une protéine supplémentaire attachée, dont le taux est en grande partie déterminé par la génétique et reste assez stable toute la vie. Une Lp(a) élevée est un facteur de risque indépendant et héréditaire de maladie cardiovasculaire et de rétrécissement de la valve aortique. Comme elle varie peu, on la mesure généralement une seule fois pour établir le risque à vie d'une personne, plutôt que de la suivre de façon répétée. Elle s'exprime en unités molaires et se lit dans le cadre du risque cardiovasculaire global.",
|
||
"fasting-insulin": "L'insuline à jeun est le taux d'insuline (l'hormone qui fait passer le glucose du sang vers les cellules) mesuré après un jeûne nocturne. Associée à la glycémie à jeun, elle aide à estimer la résistance à l'insuline, l'état dans lequel le corps a besoin de plus d'insuline pour maintenir le glucose dans sa plage. Une insuline à jeun élevée avec une glycémie normale peut être un signe précoce que cette compensation est en cours. Elle se lit dans le cadre d'un bilan de santé métabolique et non isolément.",
|
||
"omega-3-index": "L'indice oméga-3 est la part d'EPA et de DHA (les deux acides gras oméga-3 marins à longue chaîne) parmi les acides gras des membranes des globules rouges. Comme les globules rouges se renouvellent lentement, il reflète l'apport en oméga-3 sur le long terme plutôt qu'un repas récent. Un indice plus élevé a été associé, dans des études d'observation, à un risque cardiovasculaire moindre. Il est suivi comme un marqueur stable du statut en oméga-3, qui répond à l'alimentation sur plusieurs mois.",
|
||
"alkaline-phosphatase": "Les phosphatases alcalines (PAL) sont des enzymes présentes surtout dans le foie, les voies biliaires et l'os. Elles augmentent lorsque l'écoulement de la bile est entravé et pendant les phases de formation osseuse active, comme la croissance chez l'enfant et l'adolescent ou la consolidation d'une fracture. Comme les deux organes les libèrent, une valeur élevée se lit en général avec la GGT et les autres marqueurs hépatiques pour distinguer une origine hépatique d'une origine osseuse. Elles font partie du bilan hépatique habituel.",
|
||
"bilirubin-total": "La bilirubine totale est le produit jaune de la dégradation de l'hémoglobine des globules rouges usés, mesuré comme la somme de ses formes non conjuguée et conjuguée. Le foie la capte, la conjugue et l'élimine dans la bile, si bien que son taux reflète le bon fonctionnement de cette voie. Elle peut augmenter en cas de maladie du foie, d'obstruction des voies biliaires ou de destruction accrue des globules rouges, et sans gravité dans le syndrome de Gilbert. Elle se lit avec les autres marqueurs hépatiques."
|
||
},
|
||
"apob": "Apolipoprotéine B (ApoB)",
|
||
"lp-a": "Lipoprotéine(a)",
|
||
"fasting-insulin": "Insuline à jeun",
|
||
"omega-3-index": "Indice oméga-3",
|
||
"alkaline-phosphatase": "Phosphatases alcalines (PAL)",
|
||
"bilirubin-total": "Bilirubine totale"
|
||
},
|
||
"noteLoadFailed": "La note n’a pas pu être chargée ; elle restera inchangée à l’enregistrement.",
|
||
"showingLatestOf": "Affichage des {shown} derniers résultats sur {total}",
|
||
"convertedFrom": "converti depuis {value} {unit}",
|
||
"ocr": {
|
||
"scanButton": "Scanner un compte rendu",
|
||
"addScan": "Scanner un document",
|
||
"addManual": "Ajouter une valeur manuellement",
|
||
"uploadHint": "Importez une photo ou un PDF d'un compte rendu de laboratoire",
|
||
"acceptWithPdf": "JPEG, PNG, WebP ou PDF",
|
||
"acceptImageOnly": "JPEG, PNG ou WebP",
|
||
"extracting": "Lecture de votre compte rendu…",
|
||
"readingOnDevice": "Lecture sur votre appareil…",
|
||
"localModeHint": "Lu sur votre appareil, puis envoyé sous forme de texte. Moins précis : vérifiez chaque valeur.",
|
||
"rangeFromScan": "Valeurs de référence issues du scan",
|
||
"rangeVerify": "Vérifiez les valeurs de référence",
|
||
"reviewTitle": "Vérifier avant d'enregistrer",
|
||
"reviewHint": "Vérifiez chaque valeur, puis enregistrez celles à conserver.",
|
||
"foundCount": "{count} valeurs trouvées",
|
||
"pagesCapped": "Seules les {read} premières pages sur {total} ont été lues. Les valeurs des pages suivantes ne figurent pas dans cette liste.",
|
||
"stoppedBudget": "Votre budget d'IA du jour a été épuisé en cours de lecture, les pages restantes n'ont donc pas été lues.",
|
||
"stoppedUnavailable": "L'IA a été désactivée pendant la lecture du compte rendu, les pages restantes n'ont donc pas été lues.",
|
||
"stoppedError": "Le scan n'a pas pu continuer à cause d'une erreur du serveur, les pages restantes n'ont donc pas été lues. Réessayez plus tard.",
|
||
"tooLarge": "Ce texte est trop long pour un seul scan. Scannez le compte rendu page par page.",
|
||
"truncated": "Le fournisseur d'IA a atteint sa limite de sortie avant la fin du compte rendu. Des valeurs peuvent manquer après ce point : comparez la liste avec le compte rendu.",
|
||
"truncatedPages": "Le fournisseur d'IA a atteint sa limite de sortie sur ces pages : {pages}. Des valeurs plus bas sur ces pages peuvent manquer : comparez-les avec le compte rendu.",
|
||
"unreadPages": "Ces pages n'ont pas pu être lues et leurs valeurs ne figurent pas dans cette liste : {pages}.",
|
||
"unreadParts": "Une partie du compte rendu n'a pas pu être lue et ses valeurs ne figurent pas dans cette liste.",
|
||
"rowsCapped": "Le compte rendu contient {found} valeurs. Un scan en prend {kept}, seules les {kept} premières sont donc affichées.",
|
||
"outputLimit": "Le fournisseur d'IA a atteint sa limite de sortie avant de renvoyer la moindre valeur. Essayez une photo d'une seule page, ou un modèle qui accepte des réponses plus longues.",
|
||
"errorTooLong": "Raccourcissez à {max} caractères.",
|
||
"confirmRow": "Inclure cette valeur",
|
||
"analyteLabel": "Nom de l'analyse",
|
||
"resultLabel": "Résultat",
|
||
"valueLabel": "Valeur",
|
||
"unitLabel": "Unité",
|
||
"dateLabel": "Date",
|
||
"refLowLabel": "Référence basse",
|
||
"refHighLabel": "Référence haute",
|
||
"newBiomarker": "Nouveau biomarqueur, sera créé",
|
||
"linksExisting": "Lié au {name} existant",
|
||
"duplicateWarning": "Une valeur correspondante existe déjà",
|
||
"lowConfidence": "Veuillez vérifier cette valeur",
|
||
"lowConfidenceBadge": "Confiance faible",
|
||
"valueUnreadable": "Valeur illisible : saisissez-la manuellement",
|
||
"saveSelected": "Enregistrer {count} sélectionnées",
|
||
"discardAll": "Tout abandonner",
|
||
"savedToast": "{count} résultats de laboratoire enregistrés",
|
||
"savedPartialToast": "{count} résultats de laboratoire enregistrés, {skipped} ignorés car en double",
|
||
"savedNothingToast": "Rien enregistré : {skipped} valeurs étaient déjà présentes",
|
||
"savedEmptyToast": "Rien à enregistrer",
|
||
"noRows": "Aucune valeur n'a pu être trouvée dans ce compte rendu.",
|
||
"nothingToSave": "Sélectionnez au moins une valeur à enregistrer.",
|
||
"validationSummary": "Valeurs à compléter : {count}. Complétez les champs signalés ou désélectionnez ces valeurs.",
|
||
"errorDate": "Indiquez la date du prélèvement.",
|
||
"errorAnalyte": "Indiquez le nom du biomarqueur.",
|
||
"errorValue": "Indiquez une valeur.",
|
||
"errorResult": "Indiquez un résultat.",
|
||
"errorUnit": "Indiquez une unité.",
|
||
"errorUnitMismatch": "Ce marqueur est suivi en {markerUnit}. Modifiez l’unité si le compte rendu a été mal lu, ou désélectionnez cette valeur.",
|
||
"unitDiffersBadge": "Suivi en {markerUnit} ; ce compte rendu indique {unit}",
|
||
"unitConvertedBadge": "Enregistré comme {value} {markerUnit}, converti depuis {statedValue} {unit}",
|
||
"savedPartialUnitToast": "{count} résultats enregistrés. Non enregistrés, car l’unité diffère de celle du marqueur : {analytes}",
|
||
"savedNothingUnitToast": "Rien n’a été enregistré : l’unité diffère de celle du marqueur pour {analytes}",
|
||
"saveFailed": "Impossible d'enregistrer les valeurs. Veuillez réessayer.",
|
||
"providerUnsupported": "Votre fournisseur d'IA ne peut pas lire les images. Configurez un modèle capable de vision.",
|
||
"consentRequired": "Le consentement au traitement par IA est requis pour scanner un compte rendu.",
|
||
"rateLimited": "Trop de scans. Réessayez plus tard.",
|
||
"budgetExceeded": "Votre budget d'utilisation de l'IA pour aujourd'hui est atteint.",
|
||
"fileTooLarge": "Le fichier est trop volumineux (max. 12 Mo).",
|
||
"fileType": "Importez un JPEG, PNG, WebP ou PDF.",
|
||
"extractFailed": "Impossible de lire le compte rendu. Essayez une photo plus nette.",
|
||
"pdfNeedsAnthropic": "Le scan PDF nécessite un fournisseur de vision Claude ; importez plutôt une photo.",
|
||
"refTextLabel": "Plage telle qu'imprimée",
|
||
"refTextPlaceholder": "p. ex. 3,5 - 5,0",
|
||
"aiUnavailable": "La numérisation d'un compte rendu par IA n'est pas disponible ici pour le moment."
|
||
},
|
||
"loadMoreReadings": "Charger plus de mesures",
|
||
"documentsLink": "Documents de résultats",
|
||
"notLinkedYet": "Pas encore lié à un biomarqueur",
|
||
"sourceRange": {
|
||
"fromReport": "Plage du compte rendu {range}",
|
||
"catalogDiffers": "votre plage {range}",
|
||
"printed": "imprimé en {unit} : {range}"
|
||
},
|
||
"match": {
|
||
"viaAlias": "par un nom que tu as choisi auparavant",
|
||
"viaCatalog": "reconnu comme une abréviation courante",
|
||
"chooseLabel": "Correspond à",
|
||
"suggestionOption": "{name} ({unit})",
|
||
"newMarkerOption": "Un nouveau biomarqueur",
|
||
"rememberHint": "Ce nom sera retenu pour le prochain compte rendu.",
|
||
"chooseHint": "Choisis un biomarqueur si tu le suis déjà."
|
||
},
|
||
"aliases": {
|
||
"title": "Aussi écrit",
|
||
"taken": "{alias} appartient déjà à un autre biomarqueur.",
|
||
"saveError": "Les noms n'ont pas pu être enregistrés. Réessaie.",
|
||
"remove": "Retirer {alias}",
|
||
"empty": "Ajoute les noms que d'autres laboratoires impriment pour {name}, pour que leurs comptes rendus arrivent ici.",
|
||
"placeholder": "p. ex. PAL",
|
||
"addLabel": "Autre nom pour ce biomarqueur",
|
||
"add": "Ajouter",
|
||
"alsoWritten": "Aussi écrit {aliases}"
|
||
},
|
||
"merge": {
|
||
"open": "Fusionner",
|
||
"title": "Fusionner des biomarqueurs",
|
||
"description": "Réunis les biomarqueurs qui sont le même examen écrit autrement.",
|
||
"pickHint": "Sélectionne au moins deux biomarqueurs.",
|
||
"keepLabel": "Conserver",
|
||
"keepHint": "Les autres sont fondus dans celui-ci et leurs noms deviennent ses autres noms.",
|
||
"showPreview": "Voir l'aperçu",
|
||
"back": "Retour",
|
||
"confirm": "Fusionner maintenant",
|
||
"previewSummaryOne": "{count} mesure passe à {name} ({unit}).",
|
||
"previewSummaryFew": "{count} mesures passent à {name} ({unit}).",
|
||
"previewSummaryOther": "{count} mesures passent à {name} ({unit}).",
|
||
"movesOne": "{count} mesure, déjà dans la même unité",
|
||
"movesFew": "{count} mesures, déjà dans la même unité",
|
||
"movesOther": "{count} mesures, déjà dans la même unité",
|
||
"convertedOne": "{count} mesure, convertie de {unit} en {targetUnit}",
|
||
"convertedFew": "{count} mesures, converties de {unit} en {targetUnit}",
|
||
"convertedOther": "{count} mesures, converties de {unit} en {targetUnit}",
|
||
"refused": "{unit} ne peut pas être converti en {targetUnit}.",
|
||
"aliasesAdded": "Ces noms mèneront au biomarqueur conservé :",
|
||
"blocked": "Rien n'est fusionné tant qu'une unité ne peut pas être convertie. Laisse ce biomarqueur de côté ou conserve-en un autre.",
|
||
"noUndo": "Une fusion ne peut pas être annulée.",
|
||
"doneToastOne": "Fusionné dans {name}, {count} mesure déplacée",
|
||
"doneToastFew": "Fusionné dans {name}, {count} mesures déplacées",
|
||
"doneToastOther": "Fusionné dans {name}, {count} mesures déplacées",
|
||
"error": "Les biomarqueurs n'ont pas pu être fusionnés. Réessaie."
|
||
},
|
||
"trend": {
|
||
"title": "Tendance",
|
||
"slope": {
|
||
"rising": "Augmente d'environ {amount} {unit} par an sur {n} valeurs depuis le {since}.",
|
||
"falling": "Diminue d'environ {amount} {unit} par an sur {n} valeurs depuis le {since}.",
|
||
"flat": "Aucune variation sur {n} valeurs depuis le {since}."
|
||
},
|
||
"projection": {
|
||
"exits": {
|
||
"high": "Si cette droite se prolongeait, elle atteindrait la limite haute de ta plage de référence vers le {date}. C'est une projection, pas une prévision.",
|
||
"low": "Si cette droite se prolongeait, elle atteindrait la limite basse de ta plage de référence vers le {date}. C'est une projection, pas une prévision."
|
||
},
|
||
"beyond_horizon": "À ce rythme, la droite reste dans ta plage de référence plus de {years} ans, la durée couverte par tes valeurs.",
|
||
"beyond_horizon_capped": "À ce rythme, la droite reste dans ta plage de référence plus de {years} ans, aussi loin que porte la projection.",
|
||
"no_exit": "La droite s'éloigne des limites de ta plage de référence.",
|
||
"already_outside": "La droite est déjà hors de ta plage de référence.",
|
||
"no_clear_trend": "Sur ces valeurs, la variation ne se distingue pas clairement d'une absence de variation, donc aucune projection n'est tracée.",
|
||
"stale": "La valeur la plus récente date du {date}, il y a plus d’un an. La droite est montrée à cette date, sans projection."
|
||
},
|
||
"interval": "Intervalle à 95 % de la variation annuelle : de {lo} à {hi} {unit}."
|
||
}
|
||
},
|
||
"modules": {
|
||
"cycle": {
|
||
"label": "Cycle",
|
||
"description": "Suivez règles, phases et prévisions."
|
||
},
|
||
"mood": {
|
||
"label": "Humeur",
|
||
"description": "Notez l'humeur quotidienne et les tags."
|
||
},
|
||
"sleep": {
|
||
"label": "Sommeil",
|
||
"description": "Durée, phases et chronologie du sommeil."
|
||
},
|
||
"glucose": {
|
||
"label": "Glycémie",
|
||
"description": "Mesures de glycémie et tendances."
|
||
},
|
||
"workouts": {
|
||
"label": "Entraînements",
|
||
"description": "Séances d'entraînement et activité."
|
||
},
|
||
"recovery": {
|
||
"label": "Récupération",
|
||
"description": "Indicateurs de récupération et de charge de vos appareils."
|
||
},
|
||
"labs": {
|
||
"label": "Résultats de labo",
|
||
"description": "Enregistrez les résultats de laboratoire et leur historique."
|
||
},
|
||
"achievements": {
|
||
"label": "Réussites",
|
||
"description": "Badges et séries pour votre routine."
|
||
},
|
||
"coach": {
|
||
"label": "Coach",
|
||
"description": "Chat IA fondé sur vos propres données."
|
||
},
|
||
"insights": {
|
||
"label": "Analyse IA",
|
||
"description": "Briefing, notes d'état et notes d'entraînement écrites par un modèle, jamais vos données ni vos scores."
|
||
},
|
||
"doctorReport": {
|
||
"label": "Rapport médical",
|
||
"description": "Export PDF et FHIR pour votre cabinet."
|
||
},
|
||
"medications": {
|
||
"label": "Médicaments",
|
||
"description": "Schémas, prises et observance."
|
||
},
|
||
"illness": {
|
||
"label": "Journal de maladie",
|
||
"description": "Suivez les épisodes de maladie et d'affections avec un historique quotidien des symptômes."
|
||
},
|
||
"mcp": {
|
||
"label": "Accès assistant externe (MCP)",
|
||
"description": "Accès en lecture pour un assistant compatible MCP, via un jeton limité."
|
||
},
|
||
"environment": {
|
||
"label": "Environnement",
|
||
"description": "Météo et durée du jour quotidiennes de votre lieu, à côté de l'humeur, du sommeil et des constantes."
|
||
},
|
||
"inboundDocuments": {
|
||
"label": "Documents",
|
||
"description": "Courriers médicaux, comptes rendus et scans dans un espace chiffré et consultable."
|
||
},
|
||
"mentalHealth": {
|
||
"label": "Bien-être mental",
|
||
"description": "Quatre questionnaires facultatifs, à côté du suivi de l'humeur."
|
||
},
|
||
"nutrients": {
|
||
"label": "Apports en nutriments",
|
||
"description": "Totaux quotidiens de micronutriments synchronisés depuis Apple Health."
|
||
},
|
||
"vaccinations": {
|
||
"label": "Vaccinations",
|
||
"description": "Le carnet de vaccination structuré : dose, série, prochain rappel."
|
||
},
|
||
"timeline": {
|
||
"label": "Chronologie",
|
||
"description": "Des années d’un coup d’œil : maladies, médicaments et consultations à côté de vos valeurs, ainsi que vos propres événements de vie."
|
||
}
|
||
},
|
||
"moduleOff": {
|
||
"disabled": {
|
||
"description": "{module} est désactivé pour ce dossier, ses pages restent donc masquées. Réactivez le module pour les retrouver.",
|
||
"title": "{module} est désactivé"
|
||
},
|
||
"notGranted": {
|
||
"description": "{module} se trouve en dehors des sections partagées avec vous. Ce que couvre un dossier partagé est décidé par la personne à qui il appartient.",
|
||
"title": "Ne fait pas partie de l'accès partagé"
|
||
},
|
||
"unavailable": {
|
||
"description": "L'exploitant a désactivé {module} pour tous les comptes de ce serveur. Aucun réglage de votre côté ne peut le rétablir.",
|
||
"title": "Non disponible sur ce serveur"
|
||
},
|
||
"openModules": "Ouvrir Réglages, Modules"
|
||
},
|
||
"vaccinations": {
|
||
"title": "Vaccinations",
|
||
"subtitle": "Votre carnet de vaccination, dose par dose.",
|
||
"listLoadError": "Impossible de charger les vaccinations.",
|
||
"series": {
|
||
"booster": "Rappel",
|
||
"ofTotal": "Dose {position} sur {total}",
|
||
"doseN": "Dose {position}"
|
||
},
|
||
"row": {
|
||
"lot": "Lot {lot}"
|
||
},
|
||
"form": {
|
||
"date": "Date",
|
||
"catalogLabel": "Vaccin",
|
||
"identityHint": "Choisissez un vaccin dans la liste ou saisissez-le ci-dessous. L'un suffit.",
|
||
"catalogNone": "Choisir un vaccin",
|
||
"catalogSearch": "Rechercher des vaccins",
|
||
"catalogNoMatch": "Aucune entrée du catalogue trouvée",
|
||
"catalogClear": "Effacer la sélection",
|
||
"freeTextLabel": "Texte libre",
|
||
"freeTextPlaceholder": "comme indiqué sur le carnet",
|
||
"seriesToggle": "Ajouter les détails de la série",
|
||
"doseNumber": "N° de dose",
|
||
"seriesDoses": "Doses dans la série",
|
||
"lot": "Numéro de lot",
|
||
"site": "Site d'injection",
|
||
"siteNone": "Non précisé",
|
||
"practitioner": "Cabinet ou médecin",
|
||
"note": "Note",
|
||
"linkDocuments": "Associer un document",
|
||
"linkNothingToOffer": "Aucun document pour l'instant."
|
||
},
|
||
"site": {
|
||
"LEFT_ARM": "Bras gauche",
|
||
"RIGHT_ARM": "Bras droit",
|
||
"LEFT_THIGH": "Cuisse gauche",
|
||
"RIGHT_THIGH": "Cuisse droite",
|
||
"ORAL": "Oral",
|
||
"NASAL": "Nasal",
|
||
"OTHER": "Autre"
|
||
},
|
||
"createTitle": "Enregistrer une vaccination",
|
||
"editTitle": "Modifier la vaccination",
|
||
"formDescription": "Une date et le vaccin suffisent ; tout le reste est facultatif.",
|
||
"created": "Vaccination enregistrée",
|
||
"updated": "Vaccination mise à jour",
|
||
"saveFailed": "La vaccination n'a pas pu être enregistrée.",
|
||
"deleteTitle": "Supprimer cette vaccination ?",
|
||
"deleteDescription": "L'entrée est retirée de votre carnet. Un rappel programmé est conservé.",
|
||
"deleteFailed": "La vaccination n'a pas pu être supprimée.",
|
||
"info": {
|
||
"primarySeriesOne": "Primovaccination : {count} dose",
|
||
"primarySeriesFew": "Primovaccination : {count} doses",
|
||
"primarySeriesOther": "Primovaccination : {count} doses",
|
||
"yearly": "Vaccination annuelle",
|
||
"boosterYearsOne": "Rappel généralement tous les {count} an",
|
||
"boosterYearsFew": "Rappel généralement tous les {count} ans",
|
||
"boosterYearsOther": "Rappel généralement tous les {count} ans",
|
||
"boosterMonthsOne": "Rappel généralement tous les {count} mois",
|
||
"boosterMonthsFew": "Rappel généralement tous les {count} mois",
|
||
"boosterMonthsOther": "Rappel généralement tous les {count} mois",
|
||
"standard60": "Vaccination standard à partir de 60 ans",
|
||
"sourceLabel": "Source : {source}",
|
||
"affordanceLabel": "Infos sur le schéma"
|
||
},
|
||
"booster": {
|
||
"title": "Planifier un rappel ?",
|
||
"body": "Vous pouvez créer un rappel pour le prochain rappel à partir de cette dose. Modifiez l'intervalle ou le libellé, ou refusez.",
|
||
"interval": "Intervalle",
|
||
"label": "Libellé",
|
||
"labelSuffix": "rappel",
|
||
"decline": "Pas maintenant",
|
||
"confirm": "Créer le rappel",
|
||
"planned": "Rappel planifié",
|
||
"failed": "Le rappel n'a pas pu être créé.",
|
||
"everyYearsOne": "tous les {count} an",
|
||
"everyYearsFew": "tous les {count} ans",
|
||
"everyYearsOther": "tous les {count} ans",
|
||
"everyMonthsOne": "tous les {count} mois",
|
||
"everyMonthsFew": "tous les {count} mois",
|
||
"everyMonthsOther": "tous les {count} mois"
|
||
},
|
||
"suggestion": {
|
||
"single": "Associer à cette vaccination ?",
|
||
"choose": "À quelle vaccination appartient ce scan ?",
|
||
"linked": "Associé à la vaccination",
|
||
"failed": "L'association a échoué.",
|
||
"unnamed": "Vaccination"
|
||
},
|
||
"empty": {
|
||
"title": "Aucune vaccination enregistrée",
|
||
"description": "Recopiez votre carnet de vaccination ligne par ligne : une date et le vaccin suffisent."
|
||
},
|
||
"catalog": {
|
||
"tetanus": "Tétanos",
|
||
"diphtheria": "Diphtérie",
|
||
"pertussis": "Coqueluche",
|
||
"polio": "Poliomyélite",
|
||
"measles": "Rougeole",
|
||
"mumps": "Oreillons",
|
||
"rubella": "Rubéole",
|
||
"varicella": "Varicelle",
|
||
"hib": "Hib (Haemophilus influenzae b)",
|
||
"hepatitis-a": "Hépatite A",
|
||
"hepatitis-b": "Hépatite B",
|
||
"influenza": "Grippe",
|
||
"pneumococcal": "Pneumocoque",
|
||
"herpes-zoster": "Zona (herpès zoster)",
|
||
"rsv": "VRS",
|
||
"covid-19": "COVID-19",
|
||
"fsme": "Encéphalite à tiques (TBE)",
|
||
"hpv": "HPV (papillomavirus humain)",
|
||
"meningococcal-acwy": "Méningocoque ACWY",
|
||
"meningococcal-b": "Méningocoque B",
|
||
"rotavirus": "Rotavirus",
|
||
"typhoid": "Typhoïde",
|
||
"rabies": "Rage",
|
||
"yellow-fever": "Fièvre jaune",
|
||
"japanese-encephalitis": "Encéphalite japonaise",
|
||
"cholera": "Choléra",
|
||
"dengue": "Dengue",
|
||
"tuberculosis": "Tuberculose",
|
||
"td": "dT (tétanos, diphtérie)",
|
||
"tdap": "dTca (tétanos, diphtérie, coqueluche)",
|
||
"tdap-ipv": "dTca-VPI (quadruple)",
|
||
"dtap-ipv": "DTCa-VPI (quadruple, enfance)",
|
||
"hexavalent": "Hexavalent (DTCa-VPI-Hib-VHB)",
|
||
"mmr": "ROR (rougeole, oreillons, rubéole)",
|
||
"mmrv": "RORV (rougeole, oreillons, rubéole, varicelle)",
|
||
"hepa-hepb": "Hépatite A et B",
|
||
"hepa-typhoid": "Hépatite A et typhoïde"
|
||
},
|
||
"renewal": {
|
||
"overdue": "Rappel en retard depuis le {date}",
|
||
"dueSoon": "Rappel prévu le {date}",
|
||
"current": "Prochain rappel le {date}"
|
||
},
|
||
"custom": {
|
||
"title": "Vaccins personnels",
|
||
"add": "Ajouter un vaccin personnel",
|
||
"name": "Nom",
|
||
"components": "Protège contre",
|
||
"seriesDoses": "Doses de la primovaccination",
|
||
"boosterMonths": "Rappel tous les (mois)",
|
||
"saved": "Vaccin enregistré",
|
||
"deleted": "Vaccin supprimé",
|
||
"deleteConfirm": "Supprimer ce vaccin ? Les doses déjà saisies gardent leur nom.",
|
||
"saveFailed": "Le vaccin n’a pas pu être enregistré.",
|
||
"nameTaken": "Tu as déjà un vaccin portant ce nom.",
|
||
"editTitle": "Modifier le vaccin personnel",
|
||
"description": "Un vaccin absent du catalogue, compté comme n'importe quelle entrée du catalogue.",
|
||
"componentsHint": "Choisissez chaque maladie contre laquelle il protège.",
|
||
"boosterHint": "Laissez vide s'il n'y a pas de rappel.",
|
||
"protectsAgainst": "Protège contre {list}.",
|
||
"deleteTitle": "Retirer ce vaccin personnel ?",
|
||
"sectionDescription": "Les vaccins que vous avez ajoutés parce que le catalogue ne les connaît pas.",
|
||
"catalogGroup": "Catalogue"
|
||
}
|
||
},
|
||
"illness": {
|
||
"title": "Maladie",
|
||
"subtitle": "Un suivi rétrospectif de vos épisodes de maladie et d'affections.",
|
||
"settings": {
|
||
"viewDescription": "Choisis si les épisodes s'affichent en cartes ou en liste compacte.",
|
||
"orderDescription": "Fais glisser tes épisodes dans l'ordre où tu veux les voir."
|
||
},
|
||
"customize": "Personnaliser le journal de maladie",
|
||
"newEpisode": "Nouvel épisode",
|
||
"logDay": "Enregistrer un jour",
|
||
"markRecovered": "Marquer comme rétabli",
|
||
"deletedToast": "Épisode supprimé",
|
||
"restoreError": "Impossible de restaurer l'épisode",
|
||
"onsetOn": "Débuté le {date}",
|
||
"recoveredOn": "rétabli {date}",
|
||
"status": {
|
||
"active": "En cours",
|
||
"ongoing": "Persistant",
|
||
"recovered": "Rétabli"
|
||
},
|
||
"empty": {
|
||
"title": "Aucun épisode pour l'instant",
|
||
"body": "Démarrez un épisode pour tenir un historique quotidien des symptômes et revoir son évolution."
|
||
},
|
||
"type": {
|
||
"INFECTION": "Infection",
|
||
"ALLERGY": "Allergie",
|
||
"INJURY": "Blessure",
|
||
"MENTAL_HEALTH": "Santé mentale",
|
||
"AUTOIMMUNE": "Auto-immune",
|
||
"CHRONIC": "Chronique",
|
||
"OTHER": "Autre"
|
||
},
|
||
"lifecycle": {
|
||
"ACUTE": "Aiguë",
|
||
"CHRONIC_ONGOING": "Chronique / persistante",
|
||
"RECURRING": "Récurrente",
|
||
"FLARE": "Poussée"
|
||
},
|
||
"new": {
|
||
"title": "Nouvel épisode",
|
||
"description": "Enregistrez une maladie ou une affection. Vous pourrez ensuite noter les symptômes au quotidien.",
|
||
"label": "Nom",
|
||
"labelPlaceholder": "p. ex. Rhume",
|
||
"type": "Type",
|
||
"lifecycle": "Évolution",
|
||
"onset": "Débuté le",
|
||
"note": "Note",
|
||
"notePlaceholder": "Ce qui mérite d'être noté (chiffré).",
|
||
"saveError": "Impossible d'enregistrer l'épisode. Veuillez réessayer.",
|
||
"parent": "Fait partie de",
|
||
"parentNone": "Non lié",
|
||
"resolved": "Terminée le",
|
||
"resolvedHelp": "Laissez vide tant que l'épisode est en cours.",
|
||
"markOngoing": "Toujours en cours",
|
||
"bodySiteHint": "Par exemple genou ou bas du dos."
|
||
},
|
||
"sheet": {
|
||
"title": "Enregistrer {date}",
|
||
"description": "Notez les symptômes du jour, votre forme et une éventuelle fièvre.",
|
||
"symptoms": "Symptômes",
|
||
"functionalImpact": "Votre forme",
|
||
"fever": "Température",
|
||
"note": "Note",
|
||
"noteSet": "Définie",
|
||
"notePlaceholder": "Comment s'est passée la journée (chiffré).",
|
||
"severityFor": "Intensité de {symptom}",
|
||
"saveError": "Impossible d'enregistrer la journée. Veuillez réessayer.",
|
||
"day": "Day"
|
||
},
|
||
"impact": {
|
||
"0": "Pleinement fonctionnel",
|
||
"1": "Légèrement limité",
|
||
"2": "Surtout au repos",
|
||
"3": "Alité"
|
||
},
|
||
"symptom": {
|
||
"runnyNose": "Nez qui coule",
|
||
"stuffyNose": "Nez bouché",
|
||
"sneezing": "Éternuements",
|
||
"soreThroat": "Mal de gorge",
|
||
"cough": "Toux",
|
||
"headache": "Mal de tête",
|
||
"bodyAches": "Courbatures",
|
||
"fatigue": "Fatigue"
|
||
},
|
||
"correlation": {
|
||
"title": "Comment cela s'est déroulé",
|
||
"learning": "Encore en apprentissage. Enregistre quelques jours de plus pour voir des tendances ici.",
|
||
"preOnsetTitle": "Comment cela s'est annoncé",
|
||
"preOnsetBody": "Signaux qui se sont écartés de ta base avant le début que tu as noté.",
|
||
"nadirTitle": "Ce qui a changé",
|
||
"nadirBody": "À quel point chaque signal suivi s'est écarté de ta plage habituelle.",
|
||
"recoveryGapTitle": "Écart de récupération",
|
||
"recoveryGapLag": "Tes valeurs se sont stabilisées {days} jours après que tu te sois senti mieux.",
|
||
"recoveryGapLead": "Tes valeurs se sont stabilisées {days} jours avant que tu notes la guérison.",
|
||
"recoveryGapLagSymptom": "Tu t'es senti mieux {days} jours avant que tes symptômes consignés s'apaisent.",
|
||
"recoveryGapLeadSymptom": "Tes symptômes consignés se sont apaisés {days} jours avant que tu notes la guérison.",
|
||
"recoveryGapSame": "Tes valeurs se sont stabilisées le jour même où tu t'es senti mieux.",
|
||
"sleepContextMore": "Pendant cet épisode, tu as dormi nettement plus que d'habitude (environ {hours} h/nuit).",
|
||
"sleepContextLess": "Pendant cet épisode, tu as dormi nettement moins que d'habitude (environ {hours} h/nuit).",
|
||
"redFlagTitle": "À examiner de plus près",
|
||
"redFlagSpo2": "Ta saturation en oxygène est restée basse plusieurs jours. Si cela se reproduit, consulte un médecin.",
|
||
"redFlagFever": "Tu as eu une fièvre persistante. Si cela se reproduit, consulte un médecin.",
|
||
"direction": {
|
||
"above": "au-dessus de ton habituel",
|
||
"below": "en dessous de ton habituel"
|
||
},
|
||
"settled": "Rien de notable ne s'est écarté de ta plage habituelle pendant cet épisode."
|
||
},
|
||
"insights": {
|
||
"title": "Ton historique de maladies",
|
||
"countOne": "Tu as enregistré 1 épisode sur cette période.",
|
||
"countOther": "Tu as enregistré {count} épisodes sur cette période.",
|
||
"typicalGap": "Écart de récupération typique : {days} jours entre le mieux-être et la stabilisation de tes valeurs.",
|
||
"typicalGapWithDriver": "Écart de récupération typique : {days} jours. Tu te sens généralement mieux avant que {vital} ne se stabilise.",
|
||
"typicalGapLearning": "Encore quelques épisodes résolus et un écart de récupération typique apparaîtra ici.",
|
||
"none": "Aucun épisode enregistré sur cette période.",
|
||
"analyze": "Analyser l'écart de récupération"
|
||
},
|
||
"section": {
|
||
"active": "Actifs",
|
||
"resolved": "Résolus"
|
||
},
|
||
"flares": {
|
||
"countOne": "1 poussée",
|
||
"countOther": "{count} poussées"
|
||
},
|
||
"timeline": {
|
||
"title": "Chronologie du jour",
|
||
"error": "Impossible de charger la chronologie.",
|
||
"severity": "Intensité {severity}",
|
||
"noSymptoms": "Aucun symptôme enregistré.",
|
||
"impact": "Votre forme : {impact}",
|
||
"fever": "Température : {value} {unit}",
|
||
"empty": "Aucun jour enregistré pour l’instant."
|
||
},
|
||
"loadError": "Impossible de charger cet épisode.",
|
||
"backToList": "Retour au journal",
|
||
"detail": {
|
||
"note": "Note"
|
||
},
|
||
"edit": {
|
||
"title": "Modifier l'épisode",
|
||
"description": "Mettez à jour les détails de cet épisode."
|
||
},
|
||
"menu": {
|
||
"label": "Actions de l'épisode"
|
||
},
|
||
"deleteConfirm": {
|
||
"title": "Supprimer cet épisode ?",
|
||
"body": "« {label} » et tous ses relevés quotidiens seront supprimés. Vous pourrez annuler cette action pendant un court instant juste après."
|
||
},
|
||
"vital": {
|
||
"RESTING_HEART_RATE": "Fréquence cardiaque au repos",
|
||
"HEART_RATE_VARIABILITY": "Variabilité de la fréquence cardiaque",
|
||
"HRV_RMSSD": "VFC (RMSSD)",
|
||
"RECOVERY_SCORE": "Recovery",
|
||
"OXYGEN_SATURATION": "Saturation en oxygène",
|
||
"BODY_TEMPERATURE": "Température corporelle",
|
||
"RESPIRATORY_RATE": "Fréquence respiratoire",
|
||
"BLOOD_PRESSURE_SYS": "Pression artérielle systolique",
|
||
"BLOOD_PRESSURE_DIA": "Pression artérielle diastolique",
|
||
"PULSE": "Pulse",
|
||
"WEIGHT": "Weight",
|
||
"FUNCTIONAL_IMPACT": "Retentissement fonctionnel"
|
||
},
|
||
"listLoadError": "Impossible de charger vos épisodes."
|
||
},
|
||
"coach": {
|
||
"reminderSuggestion": {
|
||
"title": "Créer un rappel ?",
|
||
"accept": "Créer le rappel",
|
||
"dismiss": "Pas maintenant",
|
||
"stop": "Je mesure assez",
|
||
"accepted": "Rappel créé",
|
||
"dismissed": "D'accord, je ne le proposerai plus",
|
||
"stopped": "Compris, j'arrête de proposer des rappels",
|
||
"failed": "Échec de la création, veuillez réessayer",
|
||
"cadence": {
|
||
"weightDaily": "Pesez-vous chaque jour, à peu près à la même heure",
|
||
"bp722": "Mesurez votre tension deux fois par jour pendant une semaine",
|
||
"glucoseStructured": "Mesurez votre glycémie selon un horaire quotidien structuré"
|
||
}
|
||
},
|
||
"suggestedAction": {
|
||
"apply": "Ajouter",
|
||
"dismiss": "Pas maintenant",
|
||
"applied": "Ajouté",
|
||
"dismissed": "Ignoré",
|
||
"failed": "Impossible d'ajouter. Réessaie",
|
||
"checkup": {
|
||
"title": "Ajouter un rappel d'examen ?"
|
||
},
|
||
"note": {
|
||
"title": "Enregistrer un rappel ?"
|
||
},
|
||
"interval": {
|
||
"yearly": "Tous les ans",
|
||
"halfYearly": "Tous les six mois",
|
||
"quarterly": "Tous les trois mois",
|
||
"monthly": "Tous les mois"
|
||
}
|
||
},
|
||
"settings": {
|
||
"reminderSuggestionsLabel": "Suggestions de fréquence",
|
||
"reminderSuggestionsDescription": "Laissez le Coach proposer de temps en temps un rappel fondé sur des preuves pour mesurer une donnée plus régulièrement."
|
||
},
|
||
"plans": {
|
||
"title": "Plans",
|
||
"pageDescription": "Plans « si… alors » convenus dans vos conversations avec le Coach. Confirmez une proposition pour que le Coach s'en souvienne.",
|
||
"readOnlyNote": "Le Coach n'est pas disponible pour le moment, mais vous pouvez toujours lire et supprimer vos plans.",
|
||
"proposalTitle": "Proposition de plan",
|
||
"ifThen": "Si {cue}, alors {action}.",
|
||
"targetPrefix": "Objectif : {target}",
|
||
"reviewPrefix": "Point d'étape : {when}",
|
||
"accept": "Adopter le plan",
|
||
"decline": "Refuser",
|
||
"accepted": "Plan adopté : le Coach le gardera en tête.",
|
||
"declined": "Proposition refusée.",
|
||
"failed": "Échec de l'action. Veuillez réessayer.",
|
||
"markMet": "Objectif atteint",
|
||
"abandon": "Terminer le plan",
|
||
"remove": "Supprimer",
|
||
"removeTitle": "Supprimer ce plan ?",
|
||
"removeBody": "Le plan et son déroulement disparaissent de votre historique. Il est impossible de le récupérer.",
|
||
"removeConfirm": "Supprimer le plan",
|
||
"empty": "Aucun plan pour l'instant. Lorsque vous vous engagez sur une intention concrète « si… alors » dans une conversation, le Coach la propose ici pour confirmation.",
|
||
"groupProposed": "Propositions",
|
||
"groupActive": "Actifs",
|
||
"groupPast": "Terminés",
|
||
"status": {
|
||
"proposed": "Proposé",
|
||
"active": "Actif",
|
||
"met": "Atteint",
|
||
"abandoned": "Terminé",
|
||
"review_due": "Point d'étape dû",
|
||
"reviewed": "Évalué"
|
||
}
|
||
},
|
||
"refusal": {
|
||
"outOfScope": "Je peux uniquement t'aider avec les données de santé de ton journal : mesures, médicaments, humeur, tendances. Je ne réponds pas aux questions en dehors de ce cadre.",
|
||
"promptInjection": "J'ai repéré des instructions qui cherchent à contourner mes consignes. Je suis le Coach HealthLog et je résume uniquement tes propres données de santé. Reformule ta question dans ce cadre, s'il te plaît.",
|
||
"conversationPoisoned": "Un message précédent de cette conversation contient des instructions qui cherchent à contourner mes consignes. Démarre une nouvelle conversation, s'il te plaît."
|
||
},
|
||
"noRecordedData": "Aucune mesure n'est enregistrée pour ce que tu demandes, je ne peux donc te donner aucun chiffre. Dès que tu en auras saisi, repose-moi la question et je partirai de tes propres valeurs.",
|
||
"step": {
|
||
"read": "Lecture : {domain}",
|
||
"readWindow": "Lecture : {domain}, {window}",
|
||
"snapshot": "Lecture du résumé de tes données",
|
||
"showResult": "Ouverture d'un tableau précédent",
|
||
"reuse": "Reprise du tableau précédent",
|
||
"headerActive": "{label}…",
|
||
"listLabel": "Ce que le Coach a consulté",
|
||
"toggleShow": "Afficher ce que le Coach a consulté",
|
||
"toggleHide": "Masquer ce que le Coach a consulté",
|
||
"announceDone": "Terminé : {label}",
|
||
"readingsOne": "1 mesure",
|
||
"readingsFew": "{count} mesures",
|
||
"readingsOther": "{count} mesures",
|
||
"rowsOne": "1 ligne",
|
||
"rowsFew": "{count} lignes",
|
||
"rowsOther": "{count} lignes",
|
||
"metricsOne": "1 indicateur",
|
||
"metricsFew": "{count} indicateurs",
|
||
"metricsOther": "{count} indicateurs",
|
||
"reason": {
|
||
"noData": "aucune mesure",
|
||
"outsideWindow": "aucune mesure sur cette période",
|
||
"moduleDisabled": "désactivé",
|
||
"retrievalFailed": "lecture impossible",
|
||
"invalidArguments": "demande non comprise"
|
||
},
|
||
"domain": {
|
||
"labs": "Résultats d'analyses",
|
||
"illness": "Maladie et récupération",
|
||
"cycle": "Cycle",
|
||
"correlations": "Liens entre indicateurs",
|
||
"snapshot": "Résumé des données",
|
||
"environment": "Météo et air",
|
||
"day": "Une journée"
|
||
},
|
||
"window": {
|
||
"last7days": "7 derniers jours",
|
||
"last30days": "30 derniers jours",
|
||
"last90days": "90 derniers jours",
|
||
"lastYear": "12 derniers mois",
|
||
"allTime": "toute la période"
|
||
},
|
||
"period": {
|
||
"current": "cette période",
|
||
"previous": "la période précédente",
|
||
"yearAgo": "un an plus tôt"
|
||
},
|
||
"granularity": {
|
||
"day": "par jour",
|
||
"week": "par semaine",
|
||
"month": "par mois"
|
||
}
|
||
},
|
||
"result": {
|
||
"title": {
|
||
"byDay": "{metric} par jour",
|
||
"byWeek": "{metric} par semaine",
|
||
"byMonth": "{metric} par mois",
|
||
"previousPeriod": "{metric}, période précédente",
|
||
"yearAgo": "{metric}, un an plus tôt",
|
||
"workoutsBySport": "Entraînements par sport",
|
||
"labsLatest": "Derniers résultats d'analyses",
|
||
"sleepByNight": "Sommeil par nuit",
|
||
"complianceByDay": "Observance des médicaments par jour",
|
||
"distribution": "{metric} : fréquence de chaque plage"
|
||
},
|
||
"column": {
|
||
"day": "Jour",
|
||
"week": "Semaine",
|
||
"month": "Mois",
|
||
"night": "Nuit",
|
||
"sport": "Sport",
|
||
"sessions": "Séances",
|
||
"analyte": "Analyse",
|
||
"value": "Valeur",
|
||
"unit": "Unité",
|
||
"date": "Date",
|
||
"referenceRange": "Plage de référence",
|
||
"systolic": "Systolique",
|
||
"diastolic": "Diastolique",
|
||
"mean": "Moyenne",
|
||
"total": "Total",
|
||
"min": "Minimum",
|
||
"max": "Maximum",
|
||
"readings": "Mesures",
|
||
"rate": "Observance",
|
||
"duration": "Durée",
|
||
"range": "Plage",
|
||
"count": "Occurrences"
|
||
},
|
||
"other": "Autres",
|
||
"noReading": "aucune mesure",
|
||
"showAll": "Tout afficher ({count})",
|
||
"showFewer": "Afficher moins",
|
||
"copyMenu": "Copier le tableau",
|
||
"copyForSpreadsheet": "Copier pour un tableur",
|
||
"copyAsText": "Copier en texte",
|
||
"copied": "Copié",
|
||
"copyFailed": "Impossible de copier le tableau",
|
||
"viewLabel": "Affichage",
|
||
"viewChart": "Graphique",
|
||
"viewTable": "Tableau",
|
||
"chartSummary": "{title}, sous forme de graphique. La vue tableau liste chaque valeur.",
|
||
"dataUsed": "Données utilisées ({count})",
|
||
"truncated": "Affichage des {shown} dernières lignes sur {total}",
|
||
"withheld": {
|
||
"moduleDisabled": "Ce tableau est masqué car son module est désactivé.",
|
||
"unavailable": "Impossible de charger ce tableau."
|
||
},
|
||
"loading": "Chargement du tableau…",
|
||
"loadFailed": "Impossible de charger les tableaux.",
|
||
"reusedFrom": "D'une réponse précédente ({date})",
|
||
"reusedFromUndated": "D'une réponse précédente",
|
||
"histogramBin": "{from}–{to} {unit}"
|
||
},
|
||
"method": {
|
||
"label": "Comment cela a été calculé",
|
||
"entry": "{domain}, {window} : {detail}",
|
||
"entryNoWindow": "{domain} : {detail}",
|
||
"reused": "d'une réponse précédente",
|
||
"readingsOne": "1 mesure",
|
||
"readingsFew": "{count} mesures",
|
||
"readingsOther": "{count} mesures",
|
||
"aggregation": {
|
||
"mean": "moyenne",
|
||
"median": "médiane",
|
||
"latest": "dernière mesure",
|
||
"sum": "somme",
|
||
"count": "nombre",
|
||
"rate": "taux"
|
||
},
|
||
"averages": {
|
||
"day": "moyennes journalières",
|
||
"week": "moyennes hebdomadaires",
|
||
"month": "moyennes mensuelles"
|
||
},
|
||
"totals": {
|
||
"day": "totaux journaliers",
|
||
"week": "totaux hebdomadaires",
|
||
"month": "totaux mensuels"
|
||
},
|
||
"absent": {
|
||
"noData": "aucune mesure",
|
||
"outsideWindow": "aucune mesure sur cette période",
|
||
"moduleDisabled": "désactivé"
|
||
}
|
||
},
|
||
"followUp": {
|
||
"groupLabel": "Questions suggérées",
|
||
"widenWindow": "Remonter plus loin",
|
||
"previousPeriod": "Comparer avec la période précédente",
|
||
"yearAgo": "Comparer avec l'an dernier",
|
||
"asChart": "Afficher en graphique",
|
||
"asTable": "Afficher en tableau",
|
||
"relatedMetric": "Voir aussi : {metric}",
|
||
"continue": "Continuer à chercher",
|
||
"settingLabel": "Suggérer des questions de suivi",
|
||
"settingHint": "Affiche jusqu'à trois suggestions sous la dernière réponse du Coach.",
|
||
"changeAssumption": "À la place : {value}"
|
||
},
|
||
"clarify": {
|
||
"cardLabel": "Le Coach a une question",
|
||
"choicesLabel": "Réponses possibles",
|
||
"freeTextHint": "Tu peux aussi écrire ta propre réponse.",
|
||
"contextHint": "Écris ta réponse ci-dessous.",
|
||
"window": {
|
||
"last7days": "7 derniers jours",
|
||
"last30days": "30 derniers jours",
|
||
"last90days": "90 derniers jours",
|
||
"lastYear": "12 derniers mois",
|
||
"allTime": "Toute la période"
|
||
},
|
||
"comparison": {
|
||
"baseline90d": "Comparer avec mes 90 jours habituels"
|
||
},
|
||
"anchor": {
|
||
"illness": "Depuis la maladie du {date}"
|
||
}
|
||
},
|
||
"reuse": {
|
||
"caption": "Voici les mêmes chiffres que dans ma dernière réponse, sans changement."
|
||
}
|
||
},
|
||
"safety": {
|
||
"floor": {
|
||
"bpHighTitle": "Tension artérielle très élevée",
|
||
"bpHighDoctor": "Deux mesures récentes étaient à {systolic}/{diastolic} mmHg ou plus. Repose-toi, remesure dans quelques minutes et contacte ton médecin dès que possible si cela reste aussi élevé.",
|
||
"bpHighEmergency": "Deux mesures récentes étaient à {systolic}/{diastolic} mmHg ou plus et tu as signalé des symptômes. En cas de douleur thoracique, d'essoufflement, de faiblesse ou de troubles de la vision ou de la parole, appelle les secours immédiatement.",
|
||
"bpLowTitle": "Tension artérielle basse",
|
||
"bpLowDoctor": "Deux mesures récentes avaient une systolique inférieure à {systolic} mmHg. Si tu te sens étourdi ou faible, assieds-toi ou allonge-toi et contacte ton médecin si cela persiste.",
|
||
"bpLowEmergency": "Deux mesures récentes avaient une systolique inférieure à {systolic} mmHg et tu as signalé des symptômes. Si tu te sens près de t'évanouir, confus ou as la peau froide et moite, appelle les secours immédiatement.",
|
||
"glucoseLowTitle": "Glycémie basse",
|
||
"glucoseLowDoctor": "Deux mesures récentes étaient en dessous de {threshold} {unit} ({value} {unit}). Prends des glucides à action rapide, remesure dans 15 minutes et contacte ton médecin si les baisses persistent.",
|
||
"glucoseLowEmergency": "Deux mesures récentes étaient en dessous de {threshold} {unit} ({value} {unit}) et tu as signalé des symptômes. Traite maintenant avec du sucre rapide ; si tu ne peux pas ou te sens très mal, appelle les secours.",
|
||
"glucoseLowSevereTitle": "Glycémie très basse",
|
||
"glucoseLowSevereDoctor": "Deux mesures récentes étaient en dessous de {threshold} {unit} ({value} {unit}). Traite immédiatement avec des glucides à action rapide, remesure dans 15 minutes et contacte ton médecin.",
|
||
"glucoseLowSevereEmergency": "Deux mesures récentes étaient en dessous de {threshold} {unit} ({value} {unit}) et tu as signalé des symptômes. Traite maintenant ; si tu ne gardes pas la nourriture ou te sens très mal, appelle les secours.",
|
||
"glucoseHighTitle": "Glycémie très élevée",
|
||
"glucoseHighDoctor": "Deux mesures récentes étaient à {value} {unit} ou plus. Remesure, hydrate-toi et contacte ton médecin dès que possible si cela reste aussi élevé.",
|
||
"glucoseHighEmergency": "Deux mesures récentes étaient à {value} {unit} ou plus et tu as signalé des symptômes. En cas de vomissements, de respiration rapide ou de confusion, appelle les secours immédiatement."
|
||
}
|
||
},
|
||
"version": {
|
||
"updateAvailable": {
|
||
"title": "Une nouvelle version est disponible",
|
||
"reload": "Recharger",
|
||
"dismiss": "Ignorer"
|
||
}
|
||
},
|
||
"mentalHealth": {
|
||
"pageTitle": "Bien-être mental",
|
||
"pageDescription": "Quatre auto-évaluations validées et facultatives : l’évolution compte plus qu’un score isolé.",
|
||
"attributionLabel": "Source",
|
||
"attributionShow": "Source et licence pour {instrument}",
|
||
"choosePrompt": "Choisis un bilan",
|
||
"start": "Commencer",
|
||
"back": "Retour",
|
||
"submit": "Voir mon résultat",
|
||
"submitting": "Enregistrement…",
|
||
"saved": "Enregistré",
|
||
"error": "Une erreur est survenue. Réessaie.",
|
||
"instrument": {
|
||
"phq9": "PHQ-9 (humeur)",
|
||
"gad7": "GAD-7 (inquiétude)",
|
||
"who5": "WHO-5 (bien-être)",
|
||
"sci": "SCI (sommeil)"
|
||
},
|
||
"instrumentSub": {
|
||
"phq9": "Dépistage de la dépression, 9 questions",
|
||
"gad7": "Dépistage de l'anxiété, 7 questions",
|
||
"who5": "Test de bien-être, 5 questions",
|
||
"sci": "Test de sommeil, 8 questions"
|
||
},
|
||
"functionalOptionalHint": "Facultatif : tu peux envoyer sans répondre à cette question.",
|
||
"result": {
|
||
"title": "Ton résultat",
|
||
"totalLabel": "Score total",
|
||
"bandLabel": "Plage pour ce dépistage",
|
||
"takeAnother": "Faire un autre bilan",
|
||
"scoreOf": "sur {max}",
|
||
"firstCheckIn": "C’est votre premier résultat pour ce questionnaire. À partir du prochain, l’évolution s’affichera ici.",
|
||
"nextStep": "Vous pouvez refaire ce questionnaire dans deux semaines ou plus tard pour suivre l’évolution. Si quelque chose vous inquiète, parlez-en à tout moment à un professionnel de santé."
|
||
},
|
||
"band": {
|
||
"PHQ9": {
|
||
"minimal": "Aucune / minimale",
|
||
"mild": "Légère",
|
||
"moderate": "Modérée",
|
||
"modSevere": "Modérément sévère",
|
||
"severe": "Sévère"
|
||
},
|
||
"GAD7": {
|
||
"minimal": "Aucune / minimale",
|
||
"mild": "Légère",
|
||
"moderate": "Modérée",
|
||
"severe": "Sévère"
|
||
},
|
||
"WHO5": {
|
||
"low": "Bien-être plus faible",
|
||
"good": "Bon bien-être"
|
||
},
|
||
"SCI": {
|
||
"belowThreshold": "Zone d'insomnie possible",
|
||
"aboveThreshold": "Pas d'indice d'insomnie"
|
||
}
|
||
},
|
||
"history": {
|
||
"title": "Ton historique",
|
||
"empty": "Aucun bilan pour le moment. Ta tendance apparaîtra ici dès que tu en auras terminé un.",
|
||
"flaggedBadge": "Aide affichée",
|
||
"chartTitle": "Évolution du score",
|
||
"totalLabel": "Score",
|
||
"bandLabel": "Catégorie",
|
||
"answersToggle": "Réponses",
|
||
"answersUnavailable": "Les réponses enregistrées de ce bilan ne peuvent pas être déchiffrées."
|
||
},
|
||
"crisis": {
|
||
"title": "Tu n'as pas à affronter cela seul(e)",
|
||
"intro": "Tu as indiqué des pensées qu'il vaudrait mieux être mort(e) ou de te faire du mal. De l'aide est disponible dès maintenant, et demander de l'aide est un signe de force.",
|
||
"ifDanger": "Si tu es en danger immédiat, appelle le {emergency} maintenant.",
|
||
"resourcesTitle": "Des personnes qui peuvent aider"
|
||
},
|
||
"crisisResource": {
|
||
"telefonSeelsorge": {
|
||
"name": "TelefonSeelsorge (24h/24, 7j/7, gratuit et confidentiel)"
|
||
},
|
||
"nummerGegenKummer": {
|
||
"name": "Nummer gegen Kummer (pour les jeunes)"
|
||
},
|
||
"telefonSeelsorgeAt": {
|
||
"name": "Telefonseelsorge Österreich (24h/24, 7j/7, gratuit et confidentiel)"
|
||
},
|
||
"dargeboteneHand": {
|
||
"name": "Die Dargebotene Hand (24h/24, 7j/7, gratuit et confidentiel)"
|
||
},
|
||
"krisenchat": {
|
||
"name": "krisenchat (chat 24h/24, 7j/7, pour les jeunes)"
|
||
},
|
||
"findahelpline": {
|
||
"name": "Find a Helpline (annuaire mondial)"
|
||
},
|
||
"euEmotionalSupport": {
|
||
"name": "Ligne d'écoute et de soutien émotionnel"
|
||
},
|
||
"lifeline988": {
|
||
"name": "988 Suicide & Crisis Lifeline"
|
||
},
|
||
"crisisTextLine": {
|
||
"name": "Crisis Text Line"
|
||
},
|
||
"cvv": {
|
||
"name": "CVV, Centro de Valorização da Vida (Brésil, 24h/24, 7j/7, gratuit et confidentiel)"
|
||
},
|
||
"samu": {
|
||
"name": "SAMU, urgences médicales (Brésil)"
|
||
},
|
||
"sns24": {
|
||
"name": "SNS 24, soutien psychologique (Portugal, 24h/24, 7j/7, option 4)"
|
||
},
|
||
"sosVozAmiga": {
|
||
"name": "SOS Voz Amiga (Portugal, tous les jours de 15h30 à 0h30)"
|
||
}
|
||
},
|
||
"instrumentDescription": {
|
||
"phq9": "Dépistage de la dépression en 9 questions. Répondez en pensant aux deux dernières semaines.",
|
||
"gad7": "Dépistage de l'anxiété en 7 questions. Répondez en pensant aux deux dernières semaines.",
|
||
"who5": "Test de bien-être en 5 questions. Répondez en pensant aux deux dernières semaines ; des chiffres plus élevés signifient un meilleur bien-être.",
|
||
"sci": "Test de sommeil en 8 questions. La plupart des questions portent sur le dernier mois ; des scores plus élevés signifient un meilleur sommeil."
|
||
},
|
||
"next": "Suivant",
|
||
"lastResult": "Dernier test",
|
||
"lastScore": "Dernier résultat",
|
||
"noResultYet": "Pas encore de check-in",
|
||
"backToList": "Vue d'ensemble",
|
||
"followUpHint": {
|
||
"phq9": "Ton score se situe dans une plage où parler à un professionnel de santé peut aider. C'est une suggestion bienveillante, pas un diagnostic.",
|
||
"gad7": "Ton score se situe dans une plage où parler à un professionnel de santé peut aider. C'est une suggestion bienveillante, pas un diagnostic.",
|
||
"who5": "Un score de bien-être de 50 ou moins peut mériter un regard plus attentif. Si tu le souhaites, le PHQ-9 sur cette page explore l'humeur plus en détail. C'est une suggestion bienveillante, pas un diagnostic.",
|
||
"sci": "Dans l'étude de ce questionnaire, des scores de 16 ou moins étaient associés à une insomnie probable. Si un mauvais sommeil continue de te peser, parler à un professionnel de santé peut aider. Ce n'est pas un diagnostic."
|
||
},
|
||
"openDetail": "Voir les détails",
|
||
"historyLoadError": "Ton historique d'évaluations n'a pas pu être chargé",
|
||
"historyLoadErrorHint": "Cela ne veut pas dire que tu n'as aucun résultat : la liste n'a pas pu être récupérée. Réessaie.",
|
||
"privacyNote": "Vos réponses sont stockées chiffrées et n'atteignent jamais le Coach IA.",
|
||
"trend": {
|
||
"sincePrevious": "Depuis ton bilan précédent du {date} : {change} points.",
|
||
"sinceFirst": "Depuis ton premier bilan du {date} : {change} points.",
|
||
"verdict": {
|
||
"improved": "Cela atteint la variation de {threshold} points que les études jugent significative, dans le bon sens.",
|
||
"worsened": "Cela atteint la variation de {threshold} points que les études jugent significative, dans le sens moins favorable.",
|
||
"within_threshold": "C'est moins que la variation de {threshold} points que les études jugent significative."
|
||
}
|
||
},
|
||
"wizard": {
|
||
"progressLabel": "Question {current} sur {total}",
|
||
"followUpLabel": "Question complémentaire (facultative)",
|
||
"keyboardHint": "Les touches 1 à {count} choisissent une réponse.",
|
||
"allAnswered": "Les {total} questions ont une réponse"
|
||
},
|
||
"review": {
|
||
"title": "Vérifier les réponses",
|
||
"description": "Rien n’est enregistré avant l’envoi, et chaque réponse peut encore être modifiée.",
|
||
"change": "Modifier",
|
||
"changeLabel": "Modifier la réponse à la question {number}",
|
||
"notAnswered": "Sans réponse",
|
||
"open": "Vérifier les réponses"
|
||
},
|
||
"bandMeaning": {
|
||
"PHQ9": {
|
||
"minimal": "Vos réponses indiquent peu ou pas de symptômes dépressifs au cours des deux dernières semaines.",
|
||
"mild": "Vos réponses indiquent des symptômes dépressifs légers au cours des deux dernières semaines.",
|
||
"moderate": "Vos réponses indiquent des symptômes dépressifs modérés au cours des deux dernières semaines.",
|
||
"modSevere": "Vos réponses indiquent des symptômes dépressifs modérément sévères au cours des deux dernières semaines.",
|
||
"severe": "Vos réponses indiquent des symptômes dépressifs sévères au cours des deux dernières semaines."
|
||
},
|
||
"GAD7": {
|
||
"minimal": "Vos réponses indiquent peu ou pas de symptômes d’anxiété au cours des deux dernières semaines.",
|
||
"mild": "Vos réponses indiquent des symptômes d’anxiété légers au cours des deux dernières semaines.",
|
||
"moderate": "Vos réponses indiquent des symptômes d’anxiété modérés au cours des deux dernières semaines.",
|
||
"severe": "Vos réponses indiquent des symptômes d’anxiété sévères au cours des deux dernières semaines."
|
||
},
|
||
"WHO5": {
|
||
"low": "Votre bien-être des deux dernières semaines était en dessous de la zone que le WHO-5 considère comme bonne.",
|
||
"good": "Votre bien-être des deux dernières semaines était dans la zone que le WHO-5 considère comme bonne."
|
||
},
|
||
"SCI": {
|
||
"belowThreshold": "Votre sommeil du dernier mois se situait dans la zone où l’étude à l’origine de ce questionnaire jugeait une insomnie probable.",
|
||
"aboveThreshold": "Votre sommeil du dernier mois se situait en dehors de la zone que cette étude associe à l’insomnie."
|
||
}
|
||
},
|
||
"wording": {
|
||
"unvalidatedNote": "Cette traduction n’a pas été validée scientifiquement ; considérez le résultat comme une indication.",
|
||
"showOriginal": "Afficher le texte original en anglais",
|
||
"showTranslation": "Afficher la traduction",
|
||
"resultUnvalidated": "Réponses données dans une traduction qui n’a pas été validée scientifiquement ; considérez le résultat comme une indication.",
|
||
"historyUnvalidated": "Réponses données dans une traduction non validée scientifiquement"
|
||
}
|
||
},
|
||
"records": {
|
||
"aiInclusion": {
|
||
"cardTitle": "Accès du profil par l'IA",
|
||
"cardDescription": "Choisissez les parties de votre profil de santé que le Coach et les synthèses complètes peuvent utiliser.",
|
||
"sectionAboutMe": "À propos de moi",
|
||
"sectionConditions": "Maladies chroniques",
|
||
"sectionAllergies": "Allergies et intolérances",
|
||
"sectionCoachFocus": "Priorité du Coach",
|
||
"sectionFamilyHistory": "Antécédents familiaux",
|
||
"sectionSmoking": "Tabagisme",
|
||
"sectionAlcohol": "Habitudes de consommation d'alcool",
|
||
"sectionShiftSchedule": "Organisation du travail",
|
||
"save": "Enregistrer l'accès",
|
||
"savedToast": "Accès du profil par l'IA enregistré",
|
||
"saveError": "Impossible d'enregistrer l'accès du profil par l'IA",
|
||
"loadError": "Impossible de charger l'accès du profil par l'IA"
|
||
},
|
||
"profileFacts": {
|
||
"cardTitle": "Contexte du mode de vie",
|
||
"smokingLabel": "Tabagisme",
|
||
"alcoholLabel": "Habitudes de consommation d'alcool",
|
||
"shiftLabel": "Organisation du travail",
|
||
"notRecorded": "Non renseigné",
|
||
"remove": "Supprimer : {kind}",
|
||
"values": {
|
||
"SMOKING_STATUS": {
|
||
"NEVER": "N'a jamais fumé",
|
||
"FORMER": "A arrêté de fumer",
|
||
"CURRENT": "Fume actuellement"
|
||
},
|
||
"ALCOHOL_PATTERN": {
|
||
"NONE": "Aucune consommation",
|
||
"OCCASIONAL": "Occasionnelle",
|
||
"WEEKLY": "Hebdomadaire",
|
||
"MOST_DAYS": "La plupart des jours"
|
||
},
|
||
"SHIFT_SCHEDULE": {
|
||
"NONE": "Pas de travail posté",
|
||
"FIXED_SHIFT": "Poste fixe",
|
||
"ROTATING": "Postes tournants"
|
||
}
|
||
}
|
||
},
|
||
"disclaimer": "Ce sont vos propres informations, pas un diagnostic médical. HealthLog ne diagnostique pas, ne traite pas et ne les interprète pas.",
|
||
"allergies": {
|
||
"cardTitle": "Allergies & intolérances",
|
||
"cardDescription": "Substances auxquelles vous réagissez, avec la réaction et sa gravité.",
|
||
"description": "Enregistrer une allergie ou une intolérance.",
|
||
"add": "Ajouter une allergie",
|
||
"addFirst": "Ajoutez votre première allergie",
|
||
"addTitle": "Ajouter une allergie",
|
||
"editTitle": "Modifier l'allergie",
|
||
"formDescription": "La substance est stockée en clair ; la réaction et la note sont chiffrées.",
|
||
"emptyTitle": "Aucune allergie enregistrée",
|
||
"emptyDescription": "Ajoutez les substances auxquelles vous réagissez et leurs réactions.",
|
||
"loadError": "Impossible de charger vos allergies.",
|
||
"deletedToast": "Allergie supprimée",
|
||
"deleteError": "Impossible de supprimer l'allergie.",
|
||
"deleteConfirmTitle": "Supprimer cette allergie ?",
|
||
"deleteConfirmDescription": "Cela supprime l'enregistrement. C'est irréversible.",
|
||
"category": {
|
||
"FOOD": "Aliment",
|
||
"MEDICATION": "Médicament",
|
||
"ENVIRONMENT": "Environnement",
|
||
"BIOLOGIC": "Biologique",
|
||
"OTHER": "Autre"
|
||
},
|
||
"type": {
|
||
"ALLERGY": "Allergie",
|
||
"INTOLERANCE": "Intolérance"
|
||
},
|
||
"severity": {
|
||
"NONE": "Non évaluée",
|
||
"MILD": "Légère",
|
||
"MODERATE": "Modérée",
|
||
"SEVERE": "Sévère"
|
||
},
|
||
"status": {
|
||
"ACTIVE": "Active",
|
||
"INACTIVE": "Inactive",
|
||
"RESOLVED": "Résolue"
|
||
},
|
||
"form": {
|
||
"substance": "Substance",
|
||
"substancePlaceholder": "p. ex. Pénicilline, Arachides",
|
||
"category": "Catégorie",
|
||
"type": "Type",
|
||
"severity": "Gravité",
|
||
"status": "Statut",
|
||
"onset": "Première fois remarquée",
|
||
"reaction": "Réaction",
|
||
"reactionPlaceholder": "p. ex. urticaire, gonflement, anaphylaxie",
|
||
"note": "Note",
|
||
"notePlaceholder": "Tout autre élément à retenir",
|
||
"requiredError": "Saisissez la substance.",
|
||
"savedToast": "Allergie enregistrée",
|
||
"updatedToast": "Allergie mise à jour",
|
||
"saveError": "Impossible d'enregistrer l'allergie."
|
||
},
|
||
"freeText": {
|
||
"label": "Note en texte libre (allergies et intolérances)",
|
||
"hint": "Un complément en texte libre à la liste structurée ci-dessus, pour un contexte qu'une entrée seule ne peut pas refléter.",
|
||
"savedToast": "Note d'allergies enregistrée",
|
||
"saveError": "Impossible d'enregistrer. Veuillez réessayer."
|
||
}
|
||
},
|
||
"family": {
|
||
"cardTitle": "Antécédents familiaux",
|
||
"cardDescription": "Maladies de vos proches, une entrée par maladie.",
|
||
"description": "Enregistrer une maladie d'un proche.",
|
||
"add": "Ajouter une entrée",
|
||
"addFirst": "Ajoutez votre première entrée",
|
||
"addTitle": "Ajouter un antécédent familial",
|
||
"editTitle": "Modifier l'antécédent familial",
|
||
"formDescription": "Le lien de parenté et la maladie sont stockés en clair ; la note est chiffrée.",
|
||
"emptyTitle": "Aucun antécédent familial",
|
||
"emptyDescription": "Ajoutez les maladies présentes dans votre famille.",
|
||
"loadError": "Impossible de charger vos antécédents familiaux.",
|
||
"deletedToast": "Entrée supprimée",
|
||
"deleteError": "Impossible de supprimer l'entrée.",
|
||
"deleteConfirmTitle": "Supprimer cette entrée ?",
|
||
"deleteConfirmDescription": "Cela supprime l'enregistrement. C'est irréversible.",
|
||
"ageAtOnsetShort": "Âge {age}",
|
||
"relationship": {
|
||
"MOTHER": "Mère",
|
||
"FATHER": "Père",
|
||
"SISTER": "Sœur",
|
||
"BROTHER": "Frère",
|
||
"DAUGHTER": "Fille",
|
||
"SON": "Fils",
|
||
"GRANDMOTHER_MATERNAL": "Grand-mère (maternelle)",
|
||
"GRANDFATHER_MATERNAL": "Grand-père (maternel)",
|
||
"GRANDMOTHER_PATERNAL": "Grand-mère (paternelle)",
|
||
"GRANDFATHER_PATERNAL": "Grand-père (paternel)",
|
||
"AUNT": "Tante",
|
||
"UNCLE": "Oncle",
|
||
"COUSIN": "Cousin/cousine",
|
||
"HALF_SIBLING": "Demi-frère/demi-sœur",
|
||
"OTHER": "Autre proche"
|
||
},
|
||
"form": {
|
||
"relationship": "Proche",
|
||
"condition": "Maladie",
|
||
"conditionPlaceholder": "p. ex. Diabète de type 2, Cancer du sein",
|
||
"ageAtOnset": "Âge d'apparition",
|
||
"ageAtOnsetPlaceholder": "p. ex. 55",
|
||
"note": "Note",
|
||
"notePlaceholder": "Tout autre élément à retenir",
|
||
"requiredError": "Saisissez la maladie.",
|
||
"ageError": "Saisissez un âge entre 0 et 120.",
|
||
"savedToast": "Entrée enregistrée",
|
||
"updatedToast": "Entrée mise à jour",
|
||
"saveError": "Impossible d'enregistrer l'entrée."
|
||
}
|
||
},
|
||
"conditions": {
|
||
"cardTitle": "Affections préexistantes",
|
||
"cardDescription": "Affections chroniques et ce que le Coach doit surveiller.",
|
||
"conditionsLabel": "Affections chroniques",
|
||
"focusLabel": "Ce que le Coach surveille",
|
||
"loadError": "Impossible de charger vos antécédents.",
|
||
"savedToast": "Affections enregistrées",
|
||
"saveError": "Impossible d'enregistrer. Veuillez réessayer."
|
||
},
|
||
"emergency": {
|
||
"cardTitle": "Informations d'urgence",
|
||
"cardDescription": "Ce qu'un secouriste doit savoir d'abord : groupe sanguin, contacts, directives.",
|
||
"bloodType": "Groupe sanguin",
|
||
"organDonor": "Don d'organes",
|
||
"advanceDirective": "Directives anticipées",
|
||
"contacts": "Contacts d'urgence",
|
||
"implants": "Implants et dispositifs",
|
||
"note": "Notes complémentaires",
|
||
"notRecorded": "Non renseigné",
|
||
"bloodTypeValues": {
|
||
"A_POS": "A positif",
|
||
"A_NEG": "A négatif",
|
||
"B_POS": "B positif",
|
||
"B_NEG": "B négatif",
|
||
"AB_POS": "AB positif",
|
||
"AB_NEG": "AB négatif",
|
||
"O_POS": "O positif",
|
||
"O_NEG": "O négatif",
|
||
"UNKNOWN": "Inconnu"
|
||
},
|
||
"organDonorValues": {
|
||
"YES": "Oui",
|
||
"NO": "Non",
|
||
"UNKNOWN": "Non précisé"
|
||
},
|
||
"advanceDirectiveValues": {
|
||
"EXISTS": "Existent",
|
||
"NONE": "Aucune",
|
||
"UNKNOWN": "Non précisé"
|
||
},
|
||
"contactsPlaceholder": "Nom et numéro de téléphone à appeler",
|
||
"implantsPlaceholder": "ex. stimulateur cardiaque, pompe à insuline, implant métallique",
|
||
"notePlaceholder": "Tout ce qu'un soignant devrait savoir en urgence",
|
||
"reportHint": "Ceci apparaît sur la première page de votre rapport médical.",
|
||
"save": "Enregistrer",
|
||
"savedToast": "Informations d'urgence enregistrées",
|
||
"saveError": "Impossible d'enregistrer vos informations d'urgence.",
|
||
"loadError": "Impossible de charger vos informations d'urgence."
|
||
},
|
||
"life": {
|
||
"cardTitle": "Conditions de vie",
|
||
"cardDescription": "Tabac, alcool, activité, travail, habitudes et objectifs, datés et tous facultatifs.",
|
||
"loadError": "Impossible de charger vos conditions de vie.",
|
||
"noAnswer": "Pas de réponse",
|
||
"yes": "Oui",
|
||
"no": "Non",
|
||
"validSince": "Valable depuis",
|
||
"month": "Mois",
|
||
"year": "Année",
|
||
"lastConfirmed": "Confirmé pour la dernière fois le {date}",
|
||
"notAnswered": "Pas encore répondu",
|
||
"unreadable": "Cette réponse ne peut pas être lue sur ce serveur.",
|
||
"save": "Enregistrer la section",
|
||
"savedToast": "Section enregistrée",
|
||
"saveError": "Impossible d'enregistrer la section.",
|
||
"review": {
|
||
"question": "Est-ce toujours vrai ? Votre dernière réponse date de plus d'un an.",
|
||
"confirm": "Toujours vrai",
|
||
"confirmedToast": "Merci, noté comme toujours valable",
|
||
"confirmError": "Impossible d'enregistrer la confirmation."
|
||
},
|
||
"ai": {
|
||
"label": "Partager cette section avec l'IA",
|
||
"shiftLabel": "Partager le travail posté avec l'IA",
|
||
"hint": "Désactivé, le Coach et les synthèses ne voient jamais ces réponses.",
|
||
"savedToast": "Partage avec l'IA mis à jour",
|
||
"saveError": "Impossible d'enregistrer le réglage de l'IA."
|
||
},
|
||
"sections": {
|
||
"tobacco": {
|
||
"title": "Tabac et nicotine"
|
||
},
|
||
"alcohol": {
|
||
"title": "Alcool"
|
||
},
|
||
"activity": {
|
||
"title": "Activité et position assise"
|
||
},
|
||
"work": {
|
||
"title": "Travail et rythme"
|
||
},
|
||
"habits": {
|
||
"title": "Sommeil, alimentation et caféine"
|
||
},
|
||
"goals": {
|
||
"title": "Objectifs"
|
||
}
|
||
},
|
||
"fields": {
|
||
"smokingStatus": "Statut tabagique",
|
||
"products": "Produits utilisés",
|
||
"cigarettesPerDay": "Cigarettes par jour",
|
||
"startYear": "Année de début",
|
||
"quitMonth": "Date d'arrêt",
|
||
"secondhandSmoke": "Fumée passive régulière",
|
||
"moderateDaysPerWeek": "Jours par semaine avec une activité modérée à intense, comme la marche rapide",
|
||
"moderateMinutesPerDay": "Minutes ces jours-là, en moyenne",
|
||
"sittingHoursWorkday": "Heures assis un jour de travail",
|
||
"shiftSchedule": "Travail posté",
|
||
"situation": "Situation de travail",
|
||
"physicalNature": "Type de travail",
|
||
"nightWork": "Travail de nuit",
|
||
"exposures": "Expositions au travail",
|
||
"freeWeekdays": "Jours libres de la semaine",
|
||
"napRegularly": "Sieste régulière",
|
||
"snoringReported": "D'autres disent que vous ronflez",
|
||
"dietPattern": "Alimentation",
|
||
"dietSpecifics": "Particularités",
|
||
"lateMealsPerWeek": "Repas après 21 h par semaine",
|
||
"fruitVegPortionsPerDay": "Portions de fruits et légumes par jour",
|
||
"caffeineDrinksPerDay": "Boissons caféinées par jour",
|
||
"latestCaffeine": "Dernière caféine de la journée",
|
||
"goals": "Ce sur quoi vous voulez travailler",
|
||
"goalsHint": "Trois au maximum."
|
||
},
|
||
"values": {
|
||
"products": {
|
||
"cigarettes": "Cigarettes",
|
||
"cigars_pipe": "Cigare ou pipe",
|
||
"e_cigarette": "Cigarette électronique",
|
||
"heated_tobacco": "Tabac chauffé",
|
||
"snus_pouches": "Snus ou sachets de nicotine"
|
||
},
|
||
"situation": {
|
||
"none": "Sans activité rémunérée",
|
||
"indoor": "Surtout en intérieur",
|
||
"outdoor": "Surtout en extérieur",
|
||
"mixed": "Intérieur et extérieur"
|
||
},
|
||
"physicalNature": {
|
||
"mostly_sitting": "Surtout assis",
|
||
"standing_walking": "Debout ou en marchant",
|
||
"heavy_physical": "Travail physique lourd"
|
||
},
|
||
"exposures": {
|
||
"heat": "Chaleur",
|
||
"cold": "Froid",
|
||
"dust": "Poussière",
|
||
"fumes_solvents": "Fumées ou solvants",
|
||
"noise": "Bruit"
|
||
},
|
||
"dietPattern": {
|
||
"mixed": "Alimentation mixte",
|
||
"vegetarian": "Végétarienne",
|
||
"vegan": "Végane",
|
||
"pescetarian": "Pescétarienne",
|
||
"other": "Autre"
|
||
},
|
||
"dietSpecifics": {
|
||
"intermittent_fasting": "Jeûne intermittent",
|
||
"low_carb": "Pauvre en glucides",
|
||
"prescribed_diet": "Régime prescrit par un médecin"
|
||
},
|
||
"latestCaffeine": {
|
||
"before_12": "Avant midi",
|
||
"12_15": "De midi à 15 h",
|
||
"15_18": "De 15 h à 18 h",
|
||
"after_18": "Après 18 h"
|
||
},
|
||
"goals": {
|
||
"weight": "Poids",
|
||
"blood_pressure": "Tension artérielle",
|
||
"blood_sugar": "Glycémie",
|
||
"sleep": "Sommeil",
|
||
"fitness": "Forme physique",
|
||
"stress_recovery": "Stress et récupération",
|
||
"medication_routine": "Prendre ses médicaments régulièrement",
|
||
"quit_smoking": "Arrêter de fumer",
|
||
"less_alcohol": "Boire moins d'alcool"
|
||
},
|
||
"weekdays": {
|
||
"1": "lun.",
|
||
"2": "mar.",
|
||
"3": "mer.",
|
||
"4": "jeu.",
|
||
"5": "ven.",
|
||
"6": "sam.",
|
||
"7": "dim."
|
||
}
|
||
},
|
||
"derived": {
|
||
"packYears": "{value} paquets-années",
|
||
"packYearsMissing": "Pour les paquets-années, il manque les cigarettes par jour ou l'année de début.",
|
||
"activityMinutes": "{value} minutes par semaine.",
|
||
"meetsWho": "Cela atteint la recommandation de l'OMS de 150 minutes par semaine.",
|
||
"belowWho": "C'est en dessous de la recommandation de l'OMS de 150 minutes par semaine.",
|
||
"measuredSteps": "Vos pas mesurés passent en premier ; cette réponse apporte du contexte.",
|
||
"freeDaysDefault": "Sans réponse, le samedi et le dimanche comptent comme jours libres."
|
||
},
|
||
"auditC": {
|
||
"intro": "Trois questions sur l'alcool tirées de l'AUDIT de l'OMS. Un dépistage, pas un diagnostic.",
|
||
"start": "Répondre aux questions",
|
||
"again": "Répondre à nouveau",
|
||
"offerDue": "Un rapide coup d'œil une fois par an suffit.",
|
||
"notValidated": "Il n'existe pas encore de traduction validée pour votre langue, les questions sont donc en anglais.",
|
||
"submit": "Enregistrer les réponses",
|
||
"savedToast": "Réponses enregistrées",
|
||
"saveError": "Impossible d'enregistrer les réponses.",
|
||
"result": "{score} points sur 12",
|
||
"above": "Au seuil de dépistage de {cutoff} ou au-dessus.",
|
||
"below": "Sous le seuil de dépistage de {cutoff}.",
|
||
"noCutoff": "Sans sexe dans votre profil, seule la somme est affichée.",
|
||
"source": "Source : {source}",
|
||
"history": "Entrées précédentes",
|
||
"remove": "Supprimer l'entrée",
|
||
"removeConfirmTitle": "Supprimer cette entrée ?",
|
||
"removeConfirmBody": "L'entrée quitte votre historique. Impossible d'annuler ici.",
|
||
"removedToast": "Entrée supprimée",
|
||
"removeError": "Impossible de supprimer l'entrée.",
|
||
"historyEntry": "{date} : {score} sur 12",
|
||
"legacyLabel": "Réponse précédente : {value}",
|
||
"legacyHint": "Issue de la courte question sur l’alcool posée avant ce questionnaire. Dès qu’un résultat du questionnaire existe, le Coach ne la lit plus.",
|
||
"legacyRemove": "Supprimer la réponse précédente",
|
||
"legacyRemoveConfirmTitle": "Supprimer la réponse précédente ?",
|
||
"legacyRemoveConfirmBody": "La réponse précédente quitte votre dossier. Les résultats du questionnaire restent.",
|
||
"legacyRemovedToast": "Réponse précédente supprimée",
|
||
"legacyRemoveError": "La réponse précédente n’a pas pu être supprimée."
|
||
},
|
||
"takeOver": {
|
||
"conditionsButton": "Reprendre dans le journal des affections",
|
||
"allergiesButton": "Reprendre dans les allergies",
|
||
"conditionsTitle": "Ajouter une maladie chronique",
|
||
"allergiesTitle": "Ajouter une allergie",
|
||
"description": "Votre texte libre reste tel quel jusqu'à ce que vous l'effaciez vous-même.",
|
||
"freeTextLabel": "Votre texte libre",
|
||
"conditionLabel": "Maladie",
|
||
"onset": "Depuis",
|
||
"save": "Ajouter",
|
||
"savedToast": "Entrée ajoutée",
|
||
"saveError": "Impossible d'ajouter l'entrée.",
|
||
"clearQuestion": "L'entrée est enregistrée. Effacer le texte libre maintenant ?",
|
||
"clear": "Effacer le texte libre",
|
||
"keep": "Le garder",
|
||
"clearedToast": "Texte libre effacé",
|
||
"clearError": "Impossible d'effacer le texte libre."
|
||
},
|
||
"screening": {
|
||
"cardTitle": "Indications de dépistage",
|
||
"cardDescription": "Tirées de vos conditions de vie, avec la règle et le pays d'origine.",
|
||
"noReminder": "Ce n'est qu'une indication ; créez vous-même un rappel si vous en voulez un.",
|
||
"source": "Source : {source}",
|
||
"titles": {
|
||
"lung_ldct": "Scanner faible dose pour le cancer du poumon",
|
||
"aaa_ultrasound": "Échographie de l'aorte abdominale"
|
||
},
|
||
"status": {
|
||
"suggested": "Pourrait vous concerner",
|
||
"not_eligible": "Ne vous concerne pas",
|
||
"unknown": "Informations insuffisantes"
|
||
},
|
||
"reasons": {
|
||
"never_smoked": "Vous n'avez jamais fumé.",
|
||
"missing_birth_date": "Votre date de naissance manque.",
|
||
"age_out_of_range": "Votre âge est hors de la tranche.",
|
||
"missing_smoking_status": "Votre statut tabagique manque.",
|
||
"no_cigarettes": "La règle ne compte que les cigarettes.",
|
||
"missing_smoking_history": "Il manque les cigarettes par jour ou l'année de début.",
|
||
"pack_years_below_15": "Moins de 15 paquets-années.",
|
||
"pack_years_below_20": "Moins de 20 paquets-années.",
|
||
"smoked_years_below_25": "Moins de 25 ans de tabagisme.",
|
||
"missing_quit_date": "La date d'arrêt manque.",
|
||
"quit_over_10_years": "Arrêt il y a plus de 10 ans.",
|
||
"quit_over_15_years": "Arrêt il y a plus de 15 ans.",
|
||
"missing_sex": "Le sexe manque dans votre profil.",
|
||
"sex_not_male": "La règle s'applique aux hommes."
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"environment": {
|
||
"fields": {
|
||
"tempMean": "Température quotidienne",
|
||
"tempMin": "Minimale nocturne",
|
||
"sunshine": "Ensoleillement",
|
||
"daylight": "Durée du jour",
|
||
"precip": "Précipitations",
|
||
"pressureMean": "Pression atmosphérique",
|
||
"pressureDelta": "Variation de pression",
|
||
"pm25": "Particules fines (PM2,5)",
|
||
"pm10": "Particules (PM10)",
|
||
"no2": "Dioxyde d’azote",
|
||
"ozone8h": "Ozone (maximum sur 8 heures)",
|
||
"europeanAqi": "Indice européen de qualité de l’air",
|
||
"uvIndexMax": "Indice UV (maximum)",
|
||
"dustMax": "Poussières du Sahara",
|
||
"pollenMax": "Pollen (valeur la plus élevée)"
|
||
},
|
||
"chip": {
|
||
"day": "Météo du {date}",
|
||
"pollenHigh": "Beaucoup de pollen : {kinds}",
|
||
"hotNight": "Nuit chaude",
|
||
"veryPoorAir": "Air très mauvais"
|
||
},
|
||
"pollen": {
|
||
"alder": "aulne",
|
||
"birch": "bouleau",
|
||
"grass": "graminées",
|
||
"mugwort": "armoise",
|
||
"olive": "olivier",
|
||
"ragweed": "ambroisie"
|
||
},
|
||
"movement": {
|
||
"awayFromHome": "Temps hors de chez soi",
|
||
"distance": "Distance parcourue"
|
||
}
|
||
},
|
||
"documents": {
|
||
"title": "Documents",
|
||
"subtitle": "Chaque courrier, compte rendu et scan au même endroit, consultable et chiffré au repos.",
|
||
"pageUpload": "Téléverser",
|
||
"ownerOnlyUpload": "Seul le titulaire du dossier peut ajouter des documents.",
|
||
"kind": {
|
||
"DOCTOR_REPORT": "Compte rendu médical",
|
||
"DISCHARGE_LETTER": "Lettre de sortie",
|
||
"OTHER": "Autre",
|
||
"LAB_RESULT": "Résultat de laboratoire",
|
||
"IMAGING": "Imagerie",
|
||
"PRESCRIPTION": "Ordonnance",
|
||
"REFERRAL": "Lettre d'adressage",
|
||
"INSURANCE": "Assurance",
|
||
"VACCINATION": "Vaccination",
|
||
"SICK_NOTE": "Arrêt de travail"
|
||
},
|
||
"filter": {
|
||
"searchLabel": "Rechercher des documents",
|
||
"searchPlaceholder": "Rechercher un titre ou un nom de fichier…",
|
||
"typeGroup": "Type de document",
|
||
"conditionGroup": "Affection",
|
||
"procedureGroup": "Interventions et chirurgies",
|
||
"yearGroup": "Année",
|
||
"clear": "Effacer les filtres",
|
||
"typeAll": "Tous les types",
|
||
"typeCount": "{count} types",
|
||
"conditionAll": "Toutes les affections",
|
||
"procedureAll": "Toutes les interventions",
|
||
"yearAll": "Toutes les années"
|
||
},
|
||
"card": {
|
||
"untitled": "Document sans titre",
|
||
"selectLabel": "Sélectionner {title}",
|
||
"openLabel": "Ouvrir {title}",
|
||
"attachmentBadge": "Téléchargement uniquement",
|
||
"uploading": "Téléversement…",
|
||
"dismissFailed": "Ignorer le téléversement échoué",
|
||
"processing": "Traitement en cours…",
|
||
"ready": "Prêt",
|
||
"deleteKey": "Suppr"
|
||
},
|
||
"error": {
|
||
"fileTooLarge": "Ce fichier dépasse la limite de {maxSize}.",
|
||
"quotaExceeded": "Le stockage est plein : {used} sur {quota} utilisés.",
|
||
"unsupportedType": "Ce type de fichier n'est pas pris en charge.",
|
||
"purged": "Ce document a été définitivement supprimé et ne peut pas être restauré.",
|
||
"duplicateExists": "Un document identique est déjà enregistré.",
|
||
"rateLimited": "Trop de téléversements. Réessayez dans quelques minutes.",
|
||
"generic": "Le téléversement a échoué. Veuillez réessayer."
|
||
},
|
||
"toast": {
|
||
"duplicate": "Déjà enregistré. Le document existant est mis en évidence.",
|
||
"deleted": "Document supprimé",
|
||
"restoreFailed": "Impossible de restaurer le document."
|
||
},
|
||
"timeline": {
|
||
"loadingMore": "Chargement…",
|
||
"listLabel": "Chronologie des documents"
|
||
},
|
||
"upload": {
|
||
"browse": "Choisir des fichiers",
|
||
"quotaAlmostFull": "Stockage presque plein",
|
||
"quotaUsed": "{used} sur {quota} utilisés",
|
||
"queuedAnnouncement": "{count} fichier(s) ajoutés à la file de téléversement"
|
||
},
|
||
"selection": {
|
||
"count": "{count} sélectionnés",
|
||
"clear": "Effacer la sélection"
|
||
},
|
||
"list": {
|
||
"loadError": "Impossible de charger vos documents."
|
||
},
|
||
"empty": {
|
||
"title": "Votre coffre à documents est vide",
|
||
"description": "Conservez courriers médicaux, résultats de laboratoire, imagerie, ordonnances et carnets de vaccination. Ils sont chiffrés et consultables par type, affection et année.",
|
||
"action": "Téléverser un premier document",
|
||
"noMatchesTitle": "Aucun document correspondant",
|
||
"noMatchesDescription": "Rien ne correspond à la recherche et aux filtres actuels."
|
||
},
|
||
"detail": {
|
||
"title": "Détails du document",
|
||
"summary": {
|
||
"title": "Résumé",
|
||
"pending": "Le résumé est en cours de préparation.",
|
||
"none": "Aucun résumé n’a encore été généré pour ce document.",
|
||
"withheld": "Un résumé a été généré mais n’a pas passé le contrôle de sécurité, il n’est donc pas affiché. Vous pouvez réessayer ou lire le document lui-même.",
|
||
"unavailable": "Aucun résumé n’a pu être généré pour ce document.",
|
||
"generate": "Générer le résumé",
|
||
"generating": "Génération…"
|
||
},
|
||
"index": {
|
||
"outcome": {
|
||
"local-empty": "Aucun texte lisible n’a été trouvé. Cela ressemble à un scan ; un fournisseur de vision IA peut le lire.",
|
||
"local-unsupported": "Ce type de fichier ne peut pas être lu pour la recherche.",
|
||
"decrypt-error": "Le fichier stocké n’a pas pu être ouvert pour la lecture.",
|
||
"raster-failed": "Les pages du PDF n’ont pas pu être rendues pour la lecture. Les formats de compression de fax numérisés en sont une cause connue.",
|
||
"provider-error": "Le fournisseur d’IA n’a pas pu lire ce document lors de la dernière tentative.",
|
||
"pdf-needs-anthropic": "Le fournisseur d’IA configuré ne peut pas lire les fichiers PDF. Un fournisseur Claude ou l’OCR local le peut.",
|
||
"empty-transcription": "Le fournisseur d’IA n’a renvoyé aucun texte pour ce document."
|
||
}
|
||
},
|
||
"loadError": "Impossible de charger ce document.",
|
||
"saveError": "Impossible d'enregistrer la modification.",
|
||
"deleteError": "Impossible de supprimer le document.",
|
||
"download": "Télécharger",
|
||
"openInNewTab": "Ouvrir dans un nouvel onglet",
|
||
"delete": "Supprimer",
|
||
"titleLabel": "Titre",
|
||
"titlePlaceholder": "Ajouter un titre",
|
||
"kindLabel": "Type",
|
||
"dateLabel": "Date du document",
|
||
"conditionsLabel": "Affections liées",
|
||
"linkCondition": "Lier",
|
||
"noConditions": "Lié à aucune affection",
|
||
"previewUnavailable": "Pas d'aperçu intégré pour ce type de fichier",
|
||
"uploadedMeta": "Ajouté le {date}, {size}",
|
||
"importedFrom": "Importé depuis {system}",
|
||
"importedFromWithId": "Importé depuis {system}, ID {id}",
|
||
"sourceOther": "un autre système",
|
||
"share": "Partager",
|
||
"labValuesLink": "Voir {count} valeurs de laboratoire",
|
||
"visitsLabel": "Rattaché au rendez-vous",
|
||
"vaccinationsLabel": "Vaccinations",
|
||
"noVisitsToLink": "Aucune consultation enregistrée pour l’instant.",
|
||
"noVaccinationsToLink": "Aucune vaccination enregistrée pour l’instant."
|
||
},
|
||
"dropOverlay": {
|
||
"title": "Déposez les fichiers pour les téléverser",
|
||
"hint": "Ils sont enregistrés chiffrés dans vos documents"
|
||
},
|
||
"bulk": {
|
||
"barLabel": "Actions pour les documents sélectionnés",
|
||
"setKind": "Changer le type",
|
||
"linkCondition": "Lier une affection",
|
||
"delete": "Supprimer",
|
||
"updated": "{count} document(s) mis à jour",
|
||
"deleted": "{count} document(s) supprimés",
|
||
"restored": "{count} document(s) restaurés",
|
||
"partialFailure": "Impossible de mettre à jour {failed} sur {total}",
|
||
"failed": "L'action n'a pas pu être effectuée",
|
||
"share": "Partager",
|
||
"shareTooMany": "Un lien de partage contient au maximum {max} documents. Désélectionnez-en quelques-uns et réessayez.",
|
||
"linkVisit": "Classer sous un rendez-vous"
|
||
},
|
||
"episodeCard": {
|
||
"title": "Documents",
|
||
"link": "Lier",
|
||
"upload": "Téléverser",
|
||
"viewAll": "Tout afficher",
|
||
"emptyLine": "Aucun document n'est encore lié à cette affection.",
|
||
"loadError": "Impossible de charger les documents liés"
|
||
},
|
||
"linkPicker": {
|
||
"title": "Lier des documents",
|
||
"description": "Choisissez dans vos documents ceux qui concernent cette affection.",
|
||
"searchPlaceholder": "Rechercher par titre ou nom de fichier",
|
||
"empty": "Aucun document trouvé."
|
||
},
|
||
"assist": {
|
||
"suggest": "Suggérer des détails",
|
||
"suggesting": "Lecture…",
|
||
"suggestedTitle": "Titre suggéré",
|
||
"suggestedKind": "Type suggéré",
|
||
"suggestedDate": "Date suggérée",
|
||
"apply": "Appliquer",
|
||
"useTitle": "Utiliser le titre",
|
||
"applied": "Appliqué",
|
||
"dismiss": "Ignorer",
|
||
"empty": "Impossible de lire ce document.",
|
||
"unavailableBody": "Configurez un fournisseur d'IA pour suggérer un titre, un type et une date.",
|
||
"unavailableLocalOcr": "Activez l'OCR local dans les paramètres d'IA pour lire les images sur cet appareil.",
|
||
"unavailableAction": "Ouvrir les paramètres d'IA",
|
||
"errorGeneric": "Impossible de lire le document. Réessayez.",
|
||
"errorOcr": "Impossible de lire le texte de cette image.",
|
||
"errorRateLimited": "La limite horaire de lectures IA est atteinte. Réessayez plus tard.",
|
||
"errorRateLimitedWaitOne": "La limite horaire de lectures IA est atteinte. Réessayez dans environ une minute.",
|
||
"errorRateLimitedWaitFew": "La limite horaire de lectures IA est atteinte. Réessayez dans environ {count} minutes.",
|
||
"errorRateLimitedWaitOther": "La limite horaire de lectures IA est atteinte. Réessayez dans environ {count} minutes.",
|
||
"errorBudget": "Votre budget IA du jour est épuisé.",
|
||
"errorPdfNeedsVision": "La lecture des PDF nécessite un fournisseur de vision Claude.",
|
||
"errorFileType": "Ce type de fichier ne peut pas être lu.",
|
||
"errorNotIndexed": "Lisez d’abord le document, puis extrayez.",
|
||
"errorLocalOcrDisabled": "Activez d'abord l'OCR local dans les paramètres d'IA.",
|
||
"errorProvider": "Aucun fournisseur d'IA n'est configuré pour cela.",
|
||
"errorTextImageOnly": "L'OCR local ne lit que les images, pas ce fichier.",
|
||
"errorConsent": "La lecture de documents par IA nécessite d'abord votre consentement.",
|
||
"errorUnavailable": "La lecture de documents par IA n'est pas disponible ici pour le moment."
|
||
},
|
||
"summary": {
|
||
"summarise": "Résumer",
|
||
"showText": "Afficher le texte extrait",
|
||
"summaryTitle": "Résumé",
|
||
"textTitle": "Texte extrait",
|
||
"close": "Masquer"
|
||
},
|
||
"ai": {
|
||
"readDone": "L’IA a lu votre document.",
|
||
"readStagedOne": "L’IA a lu votre document. 1 valeur de laboratoire attend votre vérification.",
|
||
"readStagedFew": "L’IA a lu votre document. {count} valeurs de laboratoire attendent votre vérification.",
|
||
"readStagedOther": "L’IA a lu votre document. {count} valeurs de laboratoire attendent votre vérification.",
|
||
"read": "Lire avec l’IA",
|
||
"reread": "Relire",
|
||
"reading": "Lecture…",
|
||
"notReadYet": "Ce document n’a pas encore été lu."
|
||
},
|
||
"review": {
|
||
"title": "Vérifier les valeurs extraites",
|
||
"hint": "Approuvez ce qui correspond au document. Les valeurs non cochées sont écartées ; rien n’est enregistré sans votre confirmation.",
|
||
"openOne": "Vérifier la valeur extraite",
|
||
"openFew": "Vérifier les valeurs extraites ({count})",
|
||
"openOther": "Vérifier les valeurs extraites ({count})",
|
||
"includeAria": "Inclure {value}",
|
||
"type": {
|
||
"OBSERVATION": "Valeur de laboratoire",
|
||
"CONDITION": "Affection",
|
||
"MEDICATION_STATEMENT": "Médicament"
|
||
},
|
||
"statedRange": "Plage indiquée {range}",
|
||
"needsCheck": "Vérifiez cette valeur par rapport au document, puis enregistrez-la.",
|
||
"verify": "Vérifier",
|
||
"verifySave": "Enregistrer la valeur",
|
||
"verifyInvalid": "Indiquez un nom et soit une valeur numérique, soit un résultat en texte, pas les deux.",
|
||
"verifyFailed": "La correction n’a pas pu être enregistrée. Réessayez.",
|
||
"fieldName": "Nom",
|
||
"fieldDate": "Date",
|
||
"fieldValue": "Valeur",
|
||
"fieldValueText": "Résultat (texte)",
|
||
"fieldUnit": "Unité",
|
||
"fieldDose": "Dose",
|
||
"unverifiedNoteOne": "1 valeur reste à vérifier et demeure en attente.",
|
||
"unverifiedNoteFew": "{count} valeurs restent à vérifier et demeurent en attente.",
|
||
"unverifiedNoteOther": "{count} valeurs restent à vérifier et demeurent en attente.",
|
||
"finish": "Terminer la vérification",
|
||
"confirmFailed": "La vérification n’a pas pu être enregistrée. Réessayez.",
|
||
"savedToastOne": "1 valeur enregistrée",
|
||
"savedToastFew": "{count} valeurs enregistrées",
|
||
"savedToastOther": "{count} valeurs enregistrées",
|
||
"nothingSavedToast": "Vérification enregistrée. Aucune valeur n’a été ajoutée.",
|
||
"extract": "Extraire les valeurs de laboratoire",
|
||
"extracting": "Extraction…",
|
||
"extractHint": "Utilise le texte déjà lu de ce document. Les valeurs extraites attendent votre vérification ; rien n’est enregistré automatiquement.",
|
||
"extractEmpty": "Aucune valeur n’a pu être extraite de ce document.",
|
||
"failUnitRequired": "Une valeur numérique a besoin d’une unité avant de pouvoir être enregistrée.",
|
||
"failUnitMismatch": "L’unité indiquée ne correspond pas à l’unité enregistrée pour ce marqueur. Ajustez-la, puis terminez à nouveau la vérification.",
|
||
"failGeneric": "Cette valeur n’a pas pu être enregistrée.",
|
||
"failUnknownBiomarker": "Le biomarqueur choisi n'existe plus. Choisis-en un autre."
|
||
},
|
||
"contentIndex": {
|
||
"indexPrompt": "Rendre le contenu des documents consultable.",
|
||
"indexAll": "Tout indexer pour la recherche",
|
||
"indexAllPending": "Démarrage…",
|
||
"indexAllQueued": "Indexation de {count} document(s) en arrière-plan.",
|
||
"indexAllNothing": "Tout est déjà indexé.",
|
||
"indexAllError": "Impossible de démarrer l'indexation."
|
||
},
|
||
"share": {
|
||
"title": "Partager ce document",
|
||
"multiTitle": "Partager ces documents",
|
||
"multiLabel": "{count} documents",
|
||
"description": "Créez un lien clinicien en lecture seule avec ce document joint. Le lien et sa phrase secrète n’apparaissent qu’une seule fois."
|
||
},
|
||
"chat": {
|
||
"title": "Discuter de ce document",
|
||
"openButton": "Demander au Coach"
|
||
},
|
||
"readingConsent": {
|
||
"body": "La lecture par IA envoie ceci à votre service d'IA hors de ce serveur. Autoriser HealthLog à envoyer des documents, des résultats d'analyses et des descriptions de médicaments pour lecture ?",
|
||
"grant": "Autoriser la lecture",
|
||
"error": "Le consentement n'a pas pu être enregistré. Veuillez réessayer."
|
||
},
|
||
"sourcePicker": {
|
||
"open": "Importer depuis une archive",
|
||
"openNamed": "Importer depuis {name}",
|
||
"title": "Importer depuis {name}",
|
||
"description": "Cherchez par nom, puis cochez les documents que HealthLog doit copier.",
|
||
"sourceLabel": "Archive",
|
||
"searchLabel": "Nom du document",
|
||
"searchPlaceholder": "Chercher par nom",
|
||
"tagLabel": "Étiquette",
|
||
"tagAny": "Toutes les étiquettes",
|
||
"fromLabel": "Du",
|
||
"toLabel": "Au",
|
||
"clearFilters": "Effacer l'étiquette et les dates",
|
||
"rangeInvalid": "La date de fin précède la date de début.",
|
||
"empty": "{name} n'a aucun document à afficher.",
|
||
"noMatch": "Aucun document ne correspond.",
|
||
"loadMore": "Charger plus",
|
||
"stateImported": "Dans HealthLog",
|
||
"stateDeleted": "Supprimé dans HealthLog",
|
||
"selectedCount": "{count} sélectionnés sur {max} au plus",
|
||
"importAction": "Importer {count}",
|
||
"importing": "Import en cours, un document après l'autre…",
|
||
"done": "Terminé",
|
||
"summary": "Importés : {imported}. Déjà présents : {present}. Non importés : {failed}.",
|
||
"stopped": "Arrêté : {reason}",
|
||
"result": {
|
||
"waiting": "En attente",
|
||
"working": "Import en cours…",
|
||
"imported": "Importé",
|
||
"importedLinked": "Importé et lié",
|
||
"duplicate": "Déjà dans HealthLog",
|
||
"duplicateLinked": "Déjà dans HealthLog, désormais lié",
|
||
"deleted": "Supprimé dans HealthLog, laissé tel quel"
|
||
},
|
||
"errors": {
|
||
"unavailable": "Les archives de documents ne sont pas activées sur ce serveur.",
|
||
"notConnected": "Cette archive n'est pas connectée. Connectez-la dans Réglages, Intégrations.",
|
||
"originNotAllowed": "Cette adresse ne figure pas dans la liste des archives autorisées du serveur. Demandez à l'administration de l'ajouter.",
|
||
"unreachable": "L'archive est injoignable. Vérifiez qu'elle fonctionne et que l'adresse est juste.",
|
||
"redirected": "L'archive a redirigé la requête. Saisissez l'adresse vers laquelle elle redirige.",
|
||
"authRefused": "L'archive a refusé le jeton. Vérifiez le jeton et ses droits.",
|
||
"versionTooOld": "L'archive est trop ancienne. Paperless-ngx 2.16 ou plus récent est nécessaire.",
|
||
"badResponse": "La réponse de l'archive est illisible. Vérifiez que l'adresse pointe vers l'archive elle-même.",
|
||
"notFound": "L'archive ne connaît pas ce document, ou l'identifiant d'organisation est faux ou n'est pas le vôtre.",
|
||
"linkTargetNotFound": "L'élément auquel lier le document n'existe plus.",
|
||
"rateLimited": "Trop de requêtes. Patientez une minute et réessayez.",
|
||
"browserOnly": "Les archives de documents ne s'utilisent que dans le navigateur.",
|
||
"invalidAddress": "Saisissez l'adresse complète, commençant par https:// ou http://.",
|
||
"organizationRequired": "Saisissez l'identifiant d'organisation Papra.",
|
||
"tokenRequired": "Saisissez le jeton d'API. Une nouvelle adresse le demande à nouveau.",
|
||
"fileTooLarge": "Le fichier dépasse la taille acceptée par HealthLog.",
|
||
"quotaExceeded": "Votre espace de documents est plein.",
|
||
"fileType": "HealthLog n'accepte pas ce type de fichier.",
|
||
"uploadLimit": "La limite horaire d'envois est atteinte. Réessayez plus tard.",
|
||
"uploadBusy": "D'autres envois sont en cours. Réessayez dans un instant.",
|
||
"moduleDisabled": "Les documents sont désactivés dans les réglages.",
|
||
"generic": "Un problème est survenu. Réessayez.",
|
||
"permissionMissing": "La clé Papra ne peut pas lire les étiquettes. Donnez-lui le droit tags:read."
|
||
},
|
||
"pickMore": "En choisir d'autres",
|
||
"finishedHint": "Cherchez à nouveau ou changez un filtre pour choisir d'autres documents.",
|
||
"maxReached": "Vous pouvez importer au plus {max} documents à la fois.",
|
||
"noMatchHint": "Essayez une partie du nom, ou effacez l'étiquette et les dates."
|
||
},
|
||
"customize": "Personnaliser l'affichage",
|
||
"layout": {
|
||
"viewDescription": "Des cartes avec aperçu ou une liste compacte.",
|
||
"arrangementHeading": "Disposition",
|
||
"arrangementDescription": "Chaque mois dans son propre bloc, ou tout à la suite sur toute la largeur.",
|
||
"stacked": "Mois empilés",
|
||
"flow": "En continu",
|
||
"saveFailed": "Impossible d'enregistrer l'affichage."
|
||
},
|
||
"deleteConfirm": {
|
||
"titleOne": "Supprimer ce document ?",
|
||
"titleMany": "Supprimer {count} documents ?",
|
||
"body": "Vous pouvez annuler juste après. Au bout de 30 jours, la suppression est définitive.",
|
||
"action": "Supprimer"
|
||
}
|
||
},
|
||
"selfDescription": {
|
||
"dataPosture": "HealthLog est auto-hébergé : vos données de santé se trouvent dans la base de données de votre propre instance. Les notes et autres textes libres, les documents, les réponses aux questionnaires, les textes rédigés par l'IA et les jetons d'accès sont chiffrés au repos ; les valeurs de mesure, les résultats de laboratoire, les noms de médicaments et les scores d'humeur sont stockés en clair et dépendent de la sécurité de votre serveur. Les fonctions d'IA n'envoient des données qu'au fournisseur d'IA configuré pour votre compte, et il n'y a aucune analyse tierce de vos données de santé."
|
||
},
|
||
"customMetrics": {
|
||
"sectionTitle": "Mesures personnalisées",
|
||
"sectionSubtitle": "Des mesures que vous définissez et suivez vous-même.",
|
||
"add": "Ajouter une mesure personnalisée",
|
||
"addValue": "Ajouter une valeur",
|
||
"defineTitle": "Définir une mesure personnalisée",
|
||
"defineDescription": "Nommez la mesure, définissez son unité et éventuellement une plage cible.",
|
||
"editTitle": "Modifier la mesure personnalisée",
|
||
"edit": "Modifier",
|
||
"delete": "Supprimer",
|
||
"deleteConfirmTitle": "Supprimer cette mesure personnalisée ?",
|
||
"deleteConfirmDescription": "La mesure est retirée de votre liste. Les valeurs enregistrées sont conservées.",
|
||
"deletedToast": "Mesure personnalisée supprimée",
|
||
"deleteError": "Impossible de supprimer la mesure personnalisée",
|
||
"showAllValues": "Afficher toutes les valeurs",
|
||
"emptyDescription": "Définissez vos propres mesures pour les suivre et les représenter.",
|
||
"noValuesYet": "Aucune valeur pour l'instant",
|
||
"loadError": "Impossible de charger les mesures personnalisées",
|
||
"loadMore": "Charger plus de valeurs",
|
||
"showingLatestOf": "Affichage des {shown} dernières sur {total}",
|
||
"backToMeasurements": "Retour aux mesures",
|
||
"form": {
|
||
"name": "Nom",
|
||
"namePlaceholder": "p. ex. Force de préhension du matin",
|
||
"unit": "Unité",
|
||
"unitPlaceholder": "p. ex. kg",
|
||
"decimals": "Décimales",
|
||
"decimalsPlaceholder": "p. ex. 1",
|
||
"targetLow": "Cible basse",
|
||
"targetLowPlaceholder": "Borne inférieure",
|
||
"targetHigh": "Cible haute",
|
||
"targetHighPlaceholder": "Borne supérieure",
|
||
"description": "Description",
|
||
"descriptionPlaceholder": "Ce que cela mesure (facultatif)",
|
||
"targetHint": "La plage cible est facultative et s'affiche comme une bande sur le graphique.",
|
||
"correlationEnabled": "Utiliser dans l’analyse des corrélations",
|
||
"correlationEnabledHint": "Ajoute cette mesure comme canal comportemental quotidien plafonné. Désactivé par défaut.",
|
||
"requiredError": "Le nom et l'unité sont obligatoires",
|
||
"rangeOrderError": "La cible basse ne doit pas dépasser la cible haute",
|
||
"save": "Enregistrer",
|
||
"savedToast": "Mesure personnalisée enregistrée",
|
||
"updatedToast": "Mesure personnalisée mise à jour",
|
||
"saveError": "Impossible d'enregistrer la mesure personnalisée"
|
||
},
|
||
"entry": {
|
||
"value": "Valeur",
|
||
"measuredAt": "Date",
|
||
"note": "Note",
|
||
"addDescription": "Enregistrez une valeur pour cette mesure.",
|
||
"edit": "Modifier la valeur",
|
||
"editTitle": "Modifier la valeur",
|
||
"editDescription": "Mettez à jour la valeur, la date ou la note.",
|
||
"delete": "Supprimer la valeur",
|
||
"deleteConfirmTitle": "Supprimer cette valeur ?",
|
||
"deleteConfirmDescription": "Cette valeur est supprimée définitivement.",
|
||
"valueError": "Saisissez une valeur numérique",
|
||
"timestampError": "Saisissez une date valide",
|
||
"savedToast": "Valeur enregistrée",
|
||
"saveError": "Impossible d'enregistrer la valeur",
|
||
"editedToast": "Valeur mise à jour",
|
||
"editError": "Impossible de mettre à jour la valeur",
|
||
"deletedToast": "Valeur supprimée",
|
||
"restoredToast": "Valeur restaurée",
|
||
"restoreError": "Échec de la restauration",
|
||
"deleteError": "Impossible de supprimer la valeur"
|
||
},
|
||
"chart": {
|
||
"empty": "Aucune valeur sur cette période",
|
||
"valueLabel": "Valeur",
|
||
"range": {
|
||
"30": "30j",
|
||
"90": "90j",
|
||
"365": "1a",
|
||
"all": "Tout"
|
||
}
|
||
},
|
||
"detail": {
|
||
"title": "Mesure personnalisée",
|
||
"genericDescription": "Une mesure que vous suivez. Ajoutez des valeurs pour la suivre dans le temps.",
|
||
"emptyTitle": "Aucune valeur pour l'instant",
|
||
"emptyDescription": "Ajoutez votre première valeur pour commencer à représenter cette mesure.",
|
||
"valuesTitle": "{metric} : toutes les valeurs",
|
||
"valuesDescription": "Toutes les valeurs enregistrées pour cette mesure.",
|
||
"backToMetric": "Retour à {metric}"
|
||
}
|
||
},
|
||
"nutrients": {
|
||
"names": {
|
||
"vitamin_a": "Vitamine A",
|
||
"thiamin": "Thiamine (B1)",
|
||
"riboflavin": "Riboflavine (B2)",
|
||
"niacin": "Niacine (B3)",
|
||
"pantothenic_acid": "Acide pantothénique (B5)",
|
||
"vitamin_b6": "Vitamine B6",
|
||
"biotin": "Biotine (B7)",
|
||
"folate": "Folates (B9)",
|
||
"vitamin_b12": "Vitamine B12",
|
||
"vitamin_c": "Vitamine C",
|
||
"vitamin_d": "Vitamine D",
|
||
"vitamin_e": "Vitamine E",
|
||
"vitamin_k": "Vitamine K",
|
||
"calcium": "Calcium",
|
||
"iron": "Fer",
|
||
"magnesium": "Magnésium",
|
||
"phosphorus": "Phosphore",
|
||
"zinc": "Zinc",
|
||
"copper": "Cuivre",
|
||
"manganese": "Manganèse",
|
||
"selenium": "Sélénium",
|
||
"chromium": "Chrome",
|
||
"molybdenum": "Molybdène",
|
||
"iodine": "Iode",
|
||
"water": "Eau",
|
||
"caffeine": "Caféine",
|
||
"dha": "DHA (oméga-3)",
|
||
"epa": "EPA (oméga-3)"
|
||
},
|
||
"page": {
|
||
"title": "Apports en nutriments",
|
||
"description": "Hydratation et apports en vitamines/minéraux synchronisés depuis l'appli santé de votre téléphone, plus les entrées manuelles d'eau.",
|
||
"moduleOffDescription": "Activez le module nutriments pour voir ici l'hydratation et les apports en vitamines/minéraux. Les données synchronisées feront partie du dossier que le Coach peut lire.",
|
||
"moduleOffCta": "Activer les nutriments",
|
||
"emptyTitle": "Pas encore de données nutritionnelles",
|
||
"emptyDescription": "Les données proviennent de la synchronisation de l'appli santé de votre téléphone ou d'une saisie manuelle d'eau.",
|
||
"loadError": "Tes données de nutriments n'ont pas pu être chargées",
|
||
"lastAttemptTitle": "Une synchronisation est arrivée, mais rien n'a pu être enregistré",
|
||
"lastAttemptAt": "Dernière tentative : {date}",
|
||
"lastAttemptReason": {
|
||
"unitMismatch": "Les valeurs reçues ne correspondaient pas aux unités attendues par l'appli pour ces nutriments, elles n'ont donc pas pu être enregistrées.",
|
||
"valueOutOfRange": "Les quantités reçues étaient supérieures à ce que l'appli peut raisonnablement enregistrer, elles n'ont donc pas pu être sauvegardées.",
|
||
"dayInvalid": "Les entrées portaient une date que le serveur n'a pas pu accepter. Cela peut arriver quand l'horloge ou le fuseau horaire du côté qui envoie les données est incorrect ; cela vaut la peine de vérifier.",
|
||
"upsertFailed": "Ces entrées sont arrivées jusqu'au serveur, mais un problème de notre côté a empêché leur enregistrement. Tu n'as rien à faire.",
|
||
"unknown": "Ces entrées sont arrivées mais n'ont pas pu être enregistrées."
|
||
}
|
||
},
|
||
"hydration": {
|
||
"referenceMeta": "Apport de référence {value} {unit}/jour (EFSA)",
|
||
"loadError": "Impossible de charger l'eau."
|
||
},
|
||
"caffeine": {
|
||
"ceilingMeta": "Plafond de sécurité {value} {unit}/jour (EFSA)",
|
||
"loadError": "Impossible de charger la caféine."
|
||
},
|
||
"micronutrients": {
|
||
"title": "Vitamines et minéraux",
|
||
"rowMeta": "{days} sur {window} jours, réf. {value} {unit} (EFSA)",
|
||
"rowMetaNoRef": "{days} sur {window} jours",
|
||
"footer": "{tracked} des {total} micronutriments suivis ont des données sur cette période.",
|
||
"emptyTitle": "Aucune donnée de micronutriments synchronisée pour l'instant",
|
||
"loadError": "Tes données de nutriments n'ont pas pu être chargées",
|
||
"sourcePart": "{source} {value} {unit}",
|
||
"aboveUpperLimit": "Au-dessus de la limite supérieure de sécurité pour les adultes de {value} {unit} par jour ({source}).",
|
||
"aboveUpperLimitSupplemental": "La part des compléments dépasse la limite supérieure de sécurité pour les adultes de {value} {unit} par jour pour les compléments ({source}).",
|
||
"upperLimitForm": {
|
||
"retinol": "La limite ne concerne que la vitamine A préformée (rétinol) : si la quantité provient du bêta-carotène, elle ne s'applique pas.",
|
||
"folic_acid": "La limite concerne l'acide folique des compléments et des aliments enrichis, pas les folates de l'alimentation courante.",
|
||
"magnesium_salts": "La limite concerne les sels de magnésium facilement dissociables des compléments, pas le magnésium des aliments.",
|
||
"alpha_tocopherol": "La limite est fixée pour l'alpha-tocophérol."
|
||
}
|
||
},
|
||
"sparseNote": "Une valeur basse ici signifie généralement un suivi partiel, pas une carence : les totaux journaliers Apple Health reflètent ce que vos applis ont enregistré, pas l'apport alimentaire total.",
|
||
"units": {
|
||
"IU": "UI"
|
||
},
|
||
"sources": {
|
||
"APPLE_HEALTH": "Synchronisé",
|
||
"MANUAL": "Saisi",
|
||
"SUPPLEMENT": "Compléments"
|
||
}
|
||
},
|
||
"daily": {
|
||
"line": {
|
||
"allClear": "Rien ne requiert ton attention aujourd'hui.",
|
||
"scoreReady": "Ton score de santé du jour est prêt."
|
||
},
|
||
"push": {
|
||
"title": "Votre résumé du matin",
|
||
"bodyProvisional": "{line}\nLe sommeil de la nuit dernière n'est pas encore disponible.",
|
||
"titleScore": "Score du matin {score}",
|
||
"band": {
|
||
"green": "Tout semble stable aujourd'hui.",
|
||
"yellow": "Quelques points méritent un coup d'œil aujourd'hui.",
|
||
"red": "Certains domaines demandent de l'attention aujourd'hui."
|
||
}
|
||
},
|
||
"item": {
|
||
"doseWindow": {
|
||
"title": "Médicament à prendre",
|
||
"body": "Une dose est bientôt à prendre.",
|
||
"bodyNamed": "{name} est bientôt à prendre.",
|
||
"overdueTitle": "Médicament en retard",
|
||
"overdueBody": "Une dose est en retard.",
|
||
"overdueBodyNamed": "{name} est en retard."
|
||
},
|
||
"preventiveCare": {
|
||
"title": "Examen à faire",
|
||
"body": "{label} est à faire.",
|
||
"bodyManyNamed": "À faire : {labels}"
|
||
},
|
||
"syncIssue": {
|
||
"title": "La synchronisation demande votre attention",
|
||
"body": "{integration} ne se synchronise pas. Reconnecte-le pour garder tes données à jour."
|
||
},
|
||
"coachCheckin": {
|
||
"title": "Il est temps de revoir un plan",
|
||
"body": "Cela fait environ une semaine que vous avez défini ce plan : gardez-le, ajustez-le ou laissez-le. Sans pression.",
|
||
"bodyPlan": "Il y a environ une semaine, vous vous étiez fixé : « {plan} ». Gardez-le, ajustez-le ou laissez-le, sans pression.",
|
||
"adjustPrompt": "J'aimerais ajuster mon plan de suivi.",
|
||
"adjustPromptPlan": "J'aimerais ajuster ce plan : « {plan} »"
|
||
},
|
||
"tensionWindow": {
|
||
"title": "Peut-être un peu de tension",
|
||
"body": {
|
||
"morning": "Votre fréquence cardiaque est restée au-dessus de votre valeur de repos un bon moment ce matin alors que vous étiez au calme, peut-être un peu de tension.",
|
||
"afternoon": "Votre fréquence cardiaque est restée au-dessus de votre valeur de repos un bon moment cet après-midi alors que vous étiez au calme, peut-être un peu de tension.",
|
||
"evening": "Votre fréquence cardiaque est restée au-dessus de votre valeur de repos un bon moment ce soir alors que vous étiez au calme, peut-être un peu de tension.",
|
||
"night": "Votre fréquence cardiaque est restée au-dessus de votre valeur de repos un bon moment cette nuit alors que vous étiez au calme, peut-être un peu de tension."
|
||
}
|
||
},
|
||
"ecgNewRecording": {
|
||
"title": "Nouvel enregistrement ECG",
|
||
"body": "Votre appareil a enregistré un nouvel ECG : prêt à être consulté.",
|
||
"bodyVerdict": "Votre appareil a enregistré un nouvel ECG et a signalé : {verdict}.",
|
||
"verdict": {
|
||
"irregular": "un possible rythme irrégulier",
|
||
"notDetected": "aucun rythme irrégulier",
|
||
"inconclusive": "un résultat non concluant"
|
||
}
|
||
},
|
||
"sameTimeBaseline": {
|
||
"title": {
|
||
"below": "En retrait de votre rythme habituel",
|
||
"above": "En avance sur votre rythme habituel"
|
||
},
|
||
"body": {
|
||
"below": "À {time} vous en êtes à {today} pas. Un jour habituel, vous tournez autour de {typical} à cette heure.",
|
||
"above": "À {time} vous en êtes à {today} pas, au-dessus des {typical} habituels à cette heure."
|
||
}
|
||
},
|
||
"upcomingVisit": {
|
||
"title": "Rendez-vous à venir",
|
||
"bodyToday": "{what}, aujourd'hui",
|
||
"bodyTomorrow": "{what}, demain",
|
||
"bodyDayAfterTomorrow": "{what}, après-demain"
|
||
}
|
||
},
|
||
"action": {
|
||
"logDose": "Enregistrer la dose",
|
||
"reconnect": "Reconnecter",
|
||
"viewCheckups": "Voir les examens",
|
||
"viewAppointment": "Voir le rendez-vous",
|
||
"viewAppointments": "Voir les rendez-vous",
|
||
"checkinKeep": "Garder",
|
||
"checkinAdjust": "Ajuster",
|
||
"checkinLetGo": "Laisser tomber",
|
||
"viewMilestone": "Voir",
|
||
"viewPulse": "Voir le pouls",
|
||
"viewEcg": "Voir l’enregistrement",
|
||
"viewSteps": "Voir les pas"
|
||
},
|
||
"today": {
|
||
"scoreLabel": "Score de santé",
|
||
"deltaVsBaseline": "{delta} par rapport à ta référence",
|
||
"deltaFlat": "Conforme à ta référence",
|
||
"sleepPending": "Le sommeil de la nuit dernière n'est pas encore arrivé : la lecture du jour est provisoire.",
|
||
"worthALook": "À regarder",
|
||
"allClear": "Rien ne requiert ton attention aujourd'hui.",
|
||
"ringLink": "Ouvrir les détails de {metric}",
|
||
"heading": "Aujourd'hui",
|
||
"steadyWeeksOne": "Stable depuis {count} semaine",
|
||
"steadyWeeksFew": "Stable depuis {count} semaines",
|
||
"steadyWeeksOther": "Stable depuis {count} semaines",
|
||
"valueWithUnit": "{value} {unit}",
|
||
"rangeWithUnit": "{low} à {high} {unit}",
|
||
"rangeAtThisTime": "{range} pour ce moment de la journée",
|
||
"vital": {
|
||
"RESTING_HEART_RATE": "Fréquence cardiaque au repos",
|
||
"HEART_RATE_VARIABILITY": "Variabilité de la fréquence cardiaque",
|
||
"RESPIRATORY_RATE": "Fréquence respiratoire",
|
||
"OXYGEN_SATURATION": "Saturation en oxygène",
|
||
"BODY_TEMPERATURE": "Température corporelle",
|
||
"SKIN_TEMPERATURE": "Température cutanée",
|
||
"BLOOD_PRESSURE_SYS": "Tension systolique",
|
||
"BLOOD_PRESSURE_DIA": "Tension diastolique",
|
||
"BLOOD_GLUCOSE": "Glycémie",
|
||
"PULSE": "Pouls",
|
||
"WEIGHT": "Poids",
|
||
"generic": "Un signe vital"
|
||
},
|
||
"steadyAtLeastWeeksOne": "Stable depuis au moins {count} semaine",
|
||
"steadyAtLeastWeeksFew": "Stable depuis au moins {count} semaines",
|
||
"steadyAtLeastWeeksOther": "Stable depuis au moins {count} semaines"
|
||
},
|
||
"milestone": {
|
||
"metric": {
|
||
"restingHeartRate": "fréquence cardiaque au repos",
|
||
"heartRateVariability": "variabilité de la fréquence cardiaque",
|
||
"respiratoryRate": "fréquence respiratoire",
|
||
"weight": "poids",
|
||
"generic": "cette valeur"
|
||
},
|
||
"record": {
|
||
"title": "Nouveau record : {metric}",
|
||
"body": "Vous avez atteint un record personnel de {metric} aujourd'hui. Noté en toute tranquillité, rien à faire."
|
||
},
|
||
"returnToBaseline": {
|
||
"title": "De retour dans votre plage : {metric}",
|
||
"body": "Votre {metric} est revenue dans votre plage habituelle. Quoi que ce fût, c'est passé."
|
||
},
|
||
"sustainedInRange": {
|
||
"week1": {
|
||
"title": "Une semaine dans la plage",
|
||
"body": "Votre {metric} reste dans votre plage habituelle depuis une semaine. Bien régulier."
|
||
},
|
||
"week2": {
|
||
"title": "Deux semaines dans la plage",
|
||
"body": "Votre {metric} reste dans votre plage habituelle depuis deux semaines. Calme et régulier."
|
||
},
|
||
"week3": {
|
||
"title": "Trois semaines dans la plage",
|
||
"body": "Trois semaines avec votre {metric} dans votre plage habituelle. Une vraie période de stabilité."
|
||
},
|
||
"week4": {
|
||
"title": "Un mois dans la plage",
|
||
"body": "Un mois entier avec votre {metric} dans votre plage habituelle. Merveilleusement stable."
|
||
}
|
||
}
|
||
},
|
||
"lead": {
|
||
"vitalOutside": {
|
||
"above": "{metric} est à {value}, au-dessus de ta plage habituelle de {range}.",
|
||
"below": "{metric} est à {value}, en dessous de ta plage habituelle de {range}."
|
||
},
|
||
"vitalsOutside": {
|
||
"aboveOne": "{metric} est à {value}, au-dessus de ta plage habituelle de {range}, et {count} autre signe vital sort aussi de sa plage.",
|
||
"aboveFew": "{metric} est à {value}, au-dessus de ta plage habituelle de {range}, et {count} autres signes vitaux sortent aussi de leur plage.",
|
||
"aboveOther": "{metric} est à {value}, au-dessus de ta plage habituelle de {range}, et {count} autres signes vitaux sortent aussi de leur plage.",
|
||
"belowOne": "{metric} est à {value}, en dessous de ta plage habituelle de {range}, et {count} autre signe vital sort aussi de sa plage.",
|
||
"belowFew": "{metric} est à {value}, en dessous de ta plage habituelle de {range}, et {count} autres signes vitaux sortent aussi de leur plage.",
|
||
"belowOther": "{metric} est à {value}, en dessous de ta plage habituelle de {range}, et {count} autres signes vitaux sortent aussi de leur plage."
|
||
},
|
||
"sleep": {
|
||
"more": "La nuit dernière, tu as dormi {duration}, {diff} de plus que d'habitude.",
|
||
"less": "La nuit dernière, tu as dormi {duration}, {diff} de moins que d'habitude.",
|
||
"usual": "La nuit dernière, tu as dormi {duration}, proche de ton habitude.",
|
||
"plain": "La nuit dernière, tu as dormi {duration}."
|
||
},
|
||
"vitalsInRangeOne": "Ton dernier signe vital est dans sa plage habituelle.",
|
||
"vitalsInRangeFew": "Tes {count} derniers signes vitaux sont tous dans leur plage habituelle.",
|
||
"vitalsInRangeOther": "Tes {count} derniers signes vitaux sont tous dans leur plage habituelle.",
|
||
"vitalInRange": "{metric} est à {value}, dans ta plage habituelle de {range}."
|
||
},
|
||
"todayFact": {
|
||
"restMode": {
|
||
"label": "Mode repos",
|
||
"value": "Jour {day}"
|
||
},
|
||
"medications": {
|
||
"label": "Médicaments",
|
||
"value": "{taken} sur {scheduled} pris"
|
||
},
|
||
"appointment": {
|
||
"label": "Rendez-vous",
|
||
"today": "Aujourd'hui {time}, {what}",
|
||
"tomorrow": "Demain {time}, {what}"
|
||
},
|
||
"sleep": {
|
||
"label": "La nuit dernière",
|
||
"plain": "{duration}",
|
||
"usual": "{duration}, proche de ton habitude",
|
||
"more": "{duration}, {diff} de plus que d'habitude",
|
||
"less": "{duration}, {diff} de moins que d'habitude"
|
||
},
|
||
"vitals": {
|
||
"label": "Signes vitaux",
|
||
"allInOne": "{count} vérifié, dans ta plage",
|
||
"allInFew": "{count} vérifiés, tous dans ta plage",
|
||
"allInOther": "{count} vérifiés, tous dans ta plage",
|
||
"oneOut": {
|
||
"above": "{metric} au-dessus de ta plage",
|
||
"below": "{metric} en dessous de ta plage"
|
||
},
|
||
"someOut": "{count} sur {total} hors de ta plage"
|
||
},
|
||
"cycle": {
|
||
"label": "Cycle",
|
||
"value": "{phase}, jour {day}",
|
||
"dayOnly": "Jour {day}"
|
||
}
|
||
}
|
||
},
|
||
"reportSelection": {
|
||
"leafAnamnesis": "Profil de santé",
|
||
"groupIdentity": "Données personnelles",
|
||
"groupVitals": "Signes vitaux",
|
||
"groupCardio": "Cœur et circulation",
|
||
"groupBody": "Mensurations",
|
||
"groupSleepRecovery": "Sommeil et récupération",
|
||
"groupActivity": "Activité",
|
||
"groupMobility": "Mobilité et marche",
|
||
"groupEnvironment": "Environnement",
|
||
"groupGlucose": "Glycémie",
|
||
"groupLabs": "Résultats de laboratoire",
|
||
"groupMedications": "Médicaments",
|
||
"groupHistory": "Antécédents et allergies",
|
||
"groupSensitive": "Données sensibles",
|
||
"leafPatientIdentity": "Nom, date de naissance, sexe, taille",
|
||
"leafInsurance": "Assurance et numéro d'assuré",
|
||
"leafGlucosePanel": "Bilan glycémique (temps dans la cible, GMI, variabilité)",
|
||
"leafLabResults": "Résultats de laboratoire",
|
||
"leafMedicationList": "Liste des médicaments",
|
||
"leafMedicationAdministrations": "Chaque prise enregistrée",
|
||
"leafMedicationCompliance": "Observance",
|
||
"leafGlp1Therapy": "Traitement GLP-1 (historique des doses, effets indésirables)",
|
||
"leafAllergies": "Allergies et intolérances",
|
||
"leafIllnessEpisodes": "Épisodes de maladie",
|
||
"leafFamilyHistory": "Antécédents familiaux",
|
||
"leafMood": "Humeur",
|
||
"leafCycle": "Cycle menstruel",
|
||
"templateStandard": "Compte rendu médical standard",
|
||
"applyStandard": "Appliquer {template}",
|
||
"standardHint": "Un clic remplit ce dont une consultation générale a généralement besoin. Chaque élément reste modifiable.",
|
||
"groupCount": "{on}/{total}",
|
||
"groupDisclosure": "Afficher les éléments de {group}",
|
||
"sensitiveHint": "Rien n'est jamais présélectionné ici. Choisissez chaque élément vous-même.",
|
||
"scopeNone": "Rien de sélectionné pour l'instant. Choisissez ce qui doit figurer, ou appliquez le compte rendu standard.",
|
||
"scopeCount": "{count} éléments issus de {groups} domaines",
|
||
"scopeSensitive": "dont {names}",
|
||
"leafVisits": "Consultations",
|
||
"leafSurgicalHistory": "Antécédents chirurgicaux",
|
||
"leafImmunizations": "Vaccinations",
|
||
"leafEmergency": "Informations d'urgence (groupe sanguin, contacts, directives)",
|
||
"leafMedicationEffect": "Changement autour du démarrage de chaque médicament (nécessite la liste des médicaments)",
|
||
"leafWorkouts": "Entraînements (résumé par sport)",
|
||
"leafHrvSdnn": "VFC (SDNN)"
|
||
},
|
||
"recordSharing": {
|
||
"banner": {
|
||
"viewing": "Vous êtes dans le dossier de {name}",
|
||
"readOnly": "Vous pouvez le lire, pas le modifier.",
|
||
"canAdd": "Vous pouvez y ajouter, mais pas modifier ni supprimer ce qui s'y trouve.",
|
||
"leave": "Revenir à mon dossier"
|
||
},
|
||
"switcher": {
|
||
"label": "Ouvrir un dossier",
|
||
"ownRecord": "Mon propre dossier"
|
||
},
|
||
"switch": {
|
||
"failed": "Impossible d'ouvrir ce dossier. Veuillez réessayer.",
|
||
"noLongerAvailable": "Ce dossier n'est plus partagé avec vous."
|
||
},
|
||
"unavailable": {
|
||
"title": "Ne fait pas partie de l'accès partagé",
|
||
"description": "Le partage porte sur le dossier de santé lui-même, y compris les antécédents dans Anamnèse. Les réglages du compte, les services connectés, les notifications et les fonctions d'IA restent à la personne propriétaire du compte.",
|
||
"leave": "Revenir à mon dossier"
|
||
},
|
||
"state": {
|
||
"active": "Actif",
|
||
"pending": "En attente d'acceptation",
|
||
"expired": "Expiré",
|
||
"revoked": "Terminé"
|
||
},
|
||
"row": {
|
||
"readOnly": "Peut lire le dossier",
|
||
"canWrite": "Peut lire et ajouter des entrées",
|
||
"canManage": "Peut lire le dossier, y ajouter des entrées et modifier ou supprimer ce qui s'y trouve",
|
||
"entireRecord": "Couvre l'intégralité du dossier",
|
||
"sections": "Couvre : {sections}",
|
||
"noSections": "Ne couvre rien : cet accès n'ouvre aucune partie du dossier",
|
||
"invited": "Invité le",
|
||
"accepted": "Accepté le",
|
||
"expires": "Expire le",
|
||
"lastUsed": "Dernière ouverture",
|
||
"neverUsed": "jamais",
|
||
"endedByYou": "Vous y avez mis fin",
|
||
"endedByOwner": "Retiré",
|
||
"handedBack": "Rendu",
|
||
"ended": "Terminé"
|
||
},
|
||
"invite": {
|
||
"title": "Inviter quelqu'un",
|
||
"description": "Rien n'est partagé avant son acceptation.",
|
||
"needsAccount": "La personne a besoin de son propre compte HealthLog sur cette instance et trouvera l'invitation dans Paramètres → Accès partagé.",
|
||
"identifierLabel": "Nom d'utilisateur ou e-mail",
|
||
"identifierPlaceholder": "Le nom avec lequel elle se connecte",
|
||
"identifierHint": "Cette personne a besoin d'un compte sur cette instance. Une invitation ne peut pas être envoyée à une adresse non inscrite.",
|
||
"accessLegend": "Ce que cette personne peut faire",
|
||
"accessReadLabel": "Peut consulter",
|
||
"accessReadCapability": "Elle peut lire tout ce que ce dossier partage. Elle ne peut rien ajouter ni rien modifier.",
|
||
"accessWriteLabel": "Peut consulter et ajouter",
|
||
"accessWriteCapability": "Elle peut ajouter au dossier, mais ne peut rien modifier ni supprimer, pas même ce qu'elle a ajouté.",
|
||
"accessWriteDetail": "Elle peut ajouter des mesures, des résultats de laboratoire, un nouvel analyte à suivre, une entrée de maladie, un effet indésirable lié à un médicament et un nouveau médicament, et marquer une dose comme prise ou sautée. Elle ne peut rien modifier ni supprimer, pas même ce qu'elle a ajouté, et elle ne peut pas reporter un de vos rappels. Vous seul le pouvez.",
|
||
"accessManageLabel": "Peut gérer",
|
||
"accessManageCapability": "Elle peut ajouter, modifier et supprimer des entrées, y compris celles que vous avez saisies vous-même.",
|
||
"accessManageDetail": "Elle peut aussi lire les analyses tirées de votre dossier. Elle ne peut modifier ni votre connexion, ni vos paramètres de sécurité, ni vos services connectés, ni la liste des personnes qui ont accès. Vous pouvez y mettre fin à tout moment.",
|
||
"manageStepUpNote": "Cette offre n'est possible que dans un navigateur, et demande votre deuxième facteur si vous en avez un.",
|
||
"scopeLegend": "Ce que cette personne peut ouvrir",
|
||
"scopeAllLabel": "Dossier complet",
|
||
"scopeAllCapability": "Toutes ses parties, comme le partage a toujours fonctionné.",
|
||
"scopeSomeLabel": "Seulement les rubriques que vous choisissez",
|
||
"scopeSomeCapability": "Tout ce que vous ne choisissez pas lui reste fermé.",
|
||
"scopeManageNote": "Un accès de gestion couvre toujours l'intégralité du dossier.",
|
||
"scopeLeakNote": "Une rubrique peut évoquer le reste de votre santé dans ses notes et ses intitulés. Partager une rubrique, c'est partager tout ce qui y est écrit.",
|
||
"scopeAggregateNote": "La vue d'ensemble du tableau de bord, le score de santé et le résumé quotidien n'apparaissent que si le dossier entier est partagé.",
|
||
"scopeDocumentsNote": "Un document peut contenir n'importe quoi. Ne partagez cette rubrique que si la personne peut tout lire.",
|
||
"scopeEmptyHint": "Choisissez au moins une rubrique, ou revenez au partage du dossier complet.",
|
||
"scopeChooseHint": "Choisissez de partager le dossier complet ou seulement certaines rubriques.",
|
||
"expiresLabel": "L'accès prend fin le (facultatif)",
|
||
"expiresHint": "Laissez ce champ vide pour un accès qui dure jusqu'à ce que quelqu'un y mette fin. Une date ici est vérifiée à chaque requête, l'accès s'arrête donc de lui-même à la fin de cette journée.",
|
||
"submit": "Envoyer l'invitation",
|
||
"submitting": "Envoi…",
|
||
"sent": "Invitation envoyée à {name}.",
|
||
"errorNoAccount": "Aucun compte de cette instance ne porte ce nom.",
|
||
"errorDuplicate": "Ce compte a déjà accès à votre dossier.",
|
||
"errorSelf": "C'est votre propre compte.",
|
||
"errorInvalid": "Saisissez un nom d'utilisateur ou une adresse e-mail.",
|
||
"errorRateLimited": "Trop d'invitations. Veuillez réessayer plus tard.",
|
||
"errorFailed": "L'invitation n'a pas pu être envoyée. Veuillez réessayer.",
|
||
"errorScope": "Ces rubriques ne peuvent pas être partagées ainsi. Choisissez au moins une rubrique, ou partagez le dossier complet.",
|
||
"errorManageBrowserOnly": "Un accès de gestion ne peut être proposé que depuis un navigateur.",
|
||
"errorStepUp": "Confirmez votre deuxième facteur ou votre clé d'accès, puis réessayez.",
|
||
"errorOffline": "Cela n'a pas atteint le serveur. Votre invitation est toujours là : vérifiez votre connexion et réessayez."
|
||
},
|
||
"given": {
|
||
"title": "Qui peut ouvrir mon dossier",
|
||
"description": "Les accès terminés restent dans la liste, pour que vous voyiez toujours qui l'a eu et quand.",
|
||
"emptyTitle": "Personne d'autre ne peut ouvrir votre dossier",
|
||
"emptyDescription": "Invitez quelqu'un ci-dessus si vous voulez qu'il puisse le lire.",
|
||
"loadError": "La liste n'a pas pu être chargée.",
|
||
"revoke": "Mettre fin à l'accès",
|
||
"withdrawInvite": "Retirer",
|
||
"revokeTitle": "Mettre fin à l'accès de {name} ?",
|
||
"revokeBody": "L'accès cesse immédiatement, y compris dans tout navigateur où votre dossier est ouvert. Ce qui a déjà été vu ne peut pas être repris. Vous pouvez inviter de nouveau à tout moment.",
|
||
"revokeEntriesStay": "Ce que cette personne a saisi reste dans votre dossier, et vous pouvez en supprimer ce que vous voulez.",
|
||
"revokeAttribution": "Qui a saisi quoi reste visible dans votre vue d'activité pendant {days} jours.",
|
||
"revokeConfirm": "Mettre fin à l'accès"
|
||
},
|
||
"received": {
|
||
"title": "Dossiers que je peux ouvrir",
|
||
"description": "Une invitation ne vous donne rien avant que vous l'acceptiez.",
|
||
"emptyTitle": "Personne n'a partagé de dossier avec vous",
|
||
"emptyDescription": "Quand quelqu'un vous invite, l'invitation apparaît ici.",
|
||
"loadError": "La liste n'a pas pu être chargée.",
|
||
"accept": "Accepter",
|
||
"accepting": "Acceptation…",
|
||
"writeConsent": "Si vous acceptez, ce que vous ajoutez fait partie du dossier de {name}. Vous ne pourrez plus modifier ni supprimer vos entrées ensuite ; {name} est la seule personne à pouvoir le faire.",
|
||
"manageConsent": "Si vous acceptez, vous pourrez compléter le dossier de {name} mais aussi modifier ou supprimer ce qui s'y trouve déjà, y compris les entrées de {name}. Tout ce que vous faites apparaît à votre nom dans son journal d'activité, et {name} peut mettre fin à votre accès à tout moment.",
|
||
"open": "Ouvrir",
|
||
"renounce": "Rendre",
|
||
"renounceTitle": "Rendre le dossier de {name} ?",
|
||
"renounceBody": "Vous perdez l'accès immédiatement. Cette personne peut vous inviter de nouveau à tout moment.",
|
||
"renounceConfirm": "Rendre",
|
||
"detail": "Vous pouvez rendre l'accès quand vous voulez."
|
||
},
|
||
"activity": {
|
||
"title": "Quand mon dossier a été ouvert",
|
||
"description": "Chaque fois que quelqu'un d'autre a ouvert votre dossier.",
|
||
"retention": "Cela couvre les {days} derniers jours. Les entrées plus anciennes sont supprimées.",
|
||
"emptyTitle": "Personne n'a ouvert votre dossier",
|
||
"emptyDescription": "Les ouvertures par d'autres apparaissent ici, une ligne par personne et par jour.",
|
||
"loadError": "L'activité n'a pas pu être chargée.",
|
||
"opened": "{name} a ouvert votre dossier {count}×",
|
||
"acted": "{name} a fait une modification dans votre dossier",
|
||
"deletedAccount": "Un compte supprimé"
|
||
},
|
||
"delegate": {
|
||
"addOnlyNote": "Vous pouvez ajouter des éléments à ce dossier. Seul {name} peut modifier ou supprimer des entrées."
|
||
},
|
||
"lookingAfter": {
|
||
"kindShared": "Dossier partagé",
|
||
"kindManaged": "Profil géré"
|
||
},
|
||
"managed": {
|
||
"title": "Profils dont vous vous occupez",
|
||
"description": "Dossiers de santé sans identifiants propres.",
|
||
"explainer": "Un profil géré est un dossier de santé pour quelqu'un qui ne se connecte pas lui-même, comme un enfant ou une personne dont vous vous occupez. Il n'a ni identifiants ni adresse e-mail, et vous en devenez la première personne responsable. Vous pourrez en ajouter d'autres plus tard, et chacune pourra entrer dans le dossier pour le tenir à jour.",
|
||
"nameLabel": "Nom",
|
||
"namePlaceholder": "Le nom sous lequel vous reconnaîtrez ce dossier",
|
||
"nameHint": "Jusqu'à 80 caractères. Affiché partout où ce dossier apparaît.",
|
||
"nameRequired": "Donnez un nom au dossier.",
|
||
"nameTooLong": "Ce nom dépasse 80 caractères.",
|
||
"dobLabel": "Date de naissance (facultatif)",
|
||
"dobHint": "Laissez le champ vide si vous préférez ne pas en enregistrer. Rien n'est déduit d'une année.",
|
||
"localeLabel": "Langue de ce dossier",
|
||
"localeHint": "La langue des textes écrits dans ce dossier. Vos propres écrans restent dans votre langue.",
|
||
"genderLabel": "Sexe (facultatif)",
|
||
"genderHint": "Détermine si le suivi du cycle est activé au départ pour ce dossier. Modifiable à tout moment.",
|
||
"genderNone": "Non précisé",
|
||
"genderMale": "Homme",
|
||
"genderFemale": "Femme",
|
||
"genderOther": "Autre",
|
||
"timezoneHint": "Le fuseau dans lequel les journées de ce dossier sont comptées.",
|
||
"timezoneInvalid": "Ce navigateur ne connaît pas ce fuseau horaire.",
|
||
"create": "Créer le profil",
|
||
"creating": "Création…",
|
||
"created": "{name} est en place. Vous pouvez entrer dans ce dossier depuis le menu du compte.",
|
||
"errorStepUp": "Confirmez votre deuxième facteur ou votre clé d'accès, puis réessayez.",
|
||
"errorOffline": "Cela n'a pas atteint le serveur. Rien n'a changé. Vérifiez votre connexion et réessayez.",
|
||
"errorInvalid": "Le serveur a refusé ces informations. Vérifiez le nom, la date et le fuseau horaire.",
|
||
"errorFailed": "Le profil n'a pas pu être créé.",
|
||
"edit": "Modifier",
|
||
"editSave": "Enregistrer les modifications",
|
||
"editSaving": "Enregistrement…",
|
||
"editLoadError": "Ces informations n'ont pas pu être chargées.",
|
||
"editErrorGone": "Ce dossier n'existe plus, ou vous ne vous en occupez plus.",
|
||
"editErrorFailed": "Les modifications n'ont pas pu être enregistrées.",
|
||
"delete": "Supprimer le profil",
|
||
"deleteTitle": "Supprimer {name} ?",
|
||
"deleteBody": "Tout ce qui a été enregistré pour {name} disparaît avec le profil : mesures, médicaments, documents et notes. Cette action est irréversible.",
|
||
"deleteGuardiansOne": "{count} personne s'occupe aujourd'hui de ce dossier et le perdra.",
|
||
"deleteGuardiansFew": "{count} personnes s'occupent aujourd'hui de ce dossier et le perdront.",
|
||
"deleteGuardiansOther": "{count} personnes s'occupent aujourd'hui de ce dossier et le perdront.",
|
||
"deleteFloorNote": "C'est aussi l'issue lorsque vous êtes la dernière personne responsable : vous pouvez mettre fin au dossier, mais pas le laisser sans personne.",
|
||
"deleteConfirm": "Supprimer le profil",
|
||
"guardiansTitle": "Qui s'occupe de {name}",
|
||
"guardianYou": "(vous)",
|
||
"guardianSince": "S'occupe de ce dossier depuis le {date}",
|
||
"guardianPending": "Invitée le {date}, pas encore acceptée",
|
||
"guardianRemove": "Mettre fin à l'accès",
|
||
"guardianRemoveTitle": "Mettre fin à l'accès de {name} ?",
|
||
"guardianRemoveBody": "{name} ne pourra plus ouvrir {profile}. Ce qu'elle a saisi reste dans le dossier.",
|
||
"guardianWithdrawBody": "L'invitation adressée à {name} est retirée. Cette personne n'a jamais ouvert {profile}, rien ne change dans le dossier.",
|
||
"guardianRemoveConfirm": "Mettre fin à l'accès",
|
||
"soleGuardian": "Vous êtes la seule personne à vous occuper de {name} : il n'y a donc ici aucun accès auquel mettre fin. Invitez quelqu'un et attendez son acceptation, rendez votre propre accès sous « Dossiers que je peux ouvrir », ou supprimez le profil.",
|
||
"guardianInviteLabel": "Inviter une autre personne responsable",
|
||
"guardianInvite": "Envoyer l'invitation",
|
||
"guardianInviting": "Envoi…",
|
||
"guardianInvited": "Invitation envoyée à {name}.",
|
||
"guardianExpiresHint": "Facultatif. L'accès prend fin à la fin de cette journée dans votre fuseau horaire.",
|
||
"guardianPendingNote": "Une personne invitée ne compte qu'une fois qu'elle a accepté. D'ici là vous êtes toujours la dernière, et rendre votre propre accès reste refusé.",
|
||
"guardianErrorDuplicate": "Ce compte a déjà accès à ce dossier.",
|
||
"guardianErrorManagedInvitee": "Un profil géré ne peut pas s'occuper d'un autre dossier. Invitez un compte qui se connecte.",
|
||
"guardianErrorNoAccount": "Aucun compte de cette instance ne porte ce nom ou cette adresse e-mail.",
|
||
"guardianErrorRateLimit": "Trop d'invitations dans la dernière heure. Patientez un peu et réessayez.",
|
||
"guardianErrorFailed": "L'invitation n'a pas pu être envoyée.",
|
||
"errorMfaRequired": "Cela demande un deuxième facteur ou une clé d'accès, et votre compte n'a encore ni l'un ni l'autre. Configurez-en un dans Réglages → Sécurité, puis réessayez.",
|
||
"rosterLoadError": "Impossible de charger qui s'occupe de ce dossier.",
|
||
"errorRateLimit": "Trop de profils créés dans la dernière heure. Patientez un peu et réessayez.",
|
||
"handover": {
|
||
"action": "Transmettre",
|
||
"title": "Transmettre à {name}",
|
||
"description": "Donnez à {name} sa propre connexion. Rien n'est copié ni déplacé : le dossier devient son compte.",
|
||
"guardiansLabel": "Accès après la transmission",
|
||
"guardiansHint": "Votre proposition. {name} la voit et décide après la connexion.",
|
||
"access": {
|
||
"end": "Aucun accès",
|
||
"read": "Lecture seule",
|
||
"manage": "Gérer"
|
||
},
|
||
"expiryLabel": "Lien valable pendant",
|
||
"expiry1": "1 jour",
|
||
"expiry7": "7 jours",
|
||
"expiry14": "14 jours",
|
||
"minorHint": "{name} a moins de 16 ans. Garder l'accès en lecture et parler de cette étape ensemble vaut la peine.",
|
||
"irreversible": "Dès que {name} utilise le lien, la transmission ne peut plus être annulée. Le dossier lui appartient et c'est à elle ou lui de décider qui garde l'accès.",
|
||
"afterwards": "{name} confirme personnellement l'avertissement et tout consentement à l'IA. Les rappels de ce dossier ne vous parviennent plus.",
|
||
"replaceNote": "Créer un nouveau lien retire celui qui est ouvert.",
|
||
"create": "Créer le lien",
|
||
"creating": "Création…",
|
||
"linkOnce": "Ce lien n'est affiché que maintenant. Donnez-le à {name} en personne ou par un canal de confiance, ou laissez scanner le code.",
|
||
"qrAlt": "Code QR du lien de transmission pour {name}",
|
||
"urlLabel": "Lien de transmission",
|
||
"copy": "Copier",
|
||
"copied": "Lien copié",
|
||
"copyError": "Le lien n'a pas pu être copié. Sélectionnez-le et copiez-le à la main.",
|
||
"linkExpires": "Valable jusqu'au {date}.",
|
||
"done": "Terminé",
|
||
"pending": "Un lien de transmission est ouvert jusqu'au {date}.",
|
||
"replace": "Nouveau lien",
|
||
"revoke": "Retirer le lien",
|
||
"revoked": "Lien retiré",
|
||
"revokeFailed": "Le lien n'a pas pu être retiré. Réessayez.",
|
||
"errorFailed": "Le lien de transmission n'a pas pu être créé.",
|
||
"errorRosterChanged": "Entre-temps, les personnes qui s'occupent du dossier ont changé. Fermez ceci et rouvrez-le.",
|
||
"oidcOnly": "Transmettre un profil n'est pas possible sur ce serveur.",
|
||
"loadError": "L'état de la transmission n'a pas pu être chargé.",
|
||
"entryHint": "Quand {name} souhaite tenir ce dossier de façon autonome.",
|
||
"methodSso": "{name} se connecte par authentification unique en utilisant le lien.",
|
||
"methodBoth": "{name} peut définir un mot de passe ou se connecter par authentification unique."
|
||
}
|
||
},
|
||
"toast": {
|
||
"savedTo": "Enregistré dans le dossier de {name}"
|
||
},
|
||
"activityVerb": {
|
||
"measurementCreate": "{name} a ajouté une mesure",
|
||
"labResultCreate": "{name} a ajouté un résultat de laboratoire",
|
||
"allergyCreate": "{name} a ajouté une allergie",
|
||
"familyHistoryCreate": "{name} a ajouté un antécédent familial",
|
||
"illnessEpisodeCreate": "{name} a ajouté une maladie",
|
||
"biomarkerCreate": "{name} a ajouté un biomarqueur",
|
||
"customMetricEntryCreate": "{name} a enregistré une valeur personnalisée",
|
||
"medicationSideEffectCreate": "{name} a noté un effet indésirable",
|
||
"medicationCreate": "{name} a ajouté un médicament",
|
||
"medicationIntake": "{name} a enregistré une prise",
|
||
"medicationIntakeRefused": "{name} a tenté de modifier une dose ou de reporter un rappel, et a été refusé",
|
||
"measurementUpdate": "{name} a modifié une mesure",
|
||
"measurementDelete": "{name} a supprimé une mesure",
|
||
"measurementDeleteBulk": "{name} a supprimé plusieurs mesures d'un coup",
|
||
"measurementRestore": "{name} a restauré une mesure",
|
||
"measurementReminderCreate": "{name} a ajouté un rappel de mesure",
|
||
"measurementReminderUpdate": "{name} a modifié un rappel de mesure",
|
||
"measurementReminderDelete": "{name} a supprimé un rappel de mesure",
|
||
"measurementReminderComplete": "{name} a terminé un rappel de mesure",
|
||
"measurementReminderSatisfy": "{name} a clôturé un rappel de mesure",
|
||
"measurementReminderSkip": "{name} a passé un rappel de mesure",
|
||
"measurementReminderSnooze": "{name} a reporté un rappel de mesure",
|
||
"labResultUpdate": "{name} a modifié un résultat de laboratoire",
|
||
"labResultDelete": "{name} a supprimé un résultat de laboratoire",
|
||
"labResultRestore": "{name} a restauré un résultat de laboratoire",
|
||
"biomarkerUpdate": "{name} a modifié un biomarqueur",
|
||
"biomarkerDelete": "{name} a supprimé un biomarqueur",
|
||
"allergyUpdate": "{name} a modifié une allergie",
|
||
"allergyDelete": "{name} a supprimé une allergie",
|
||
"familyHistoryUpdate": "{name} a modifié un antécédent familial",
|
||
"familyHistoryDelete": "{name} a supprimé un antécédent familial",
|
||
"illnessEpisodeUpdate": "{name} a modifié une maladie",
|
||
"illnessEpisodeDelete": "{name} a supprimé une maladie",
|
||
"illnessEpisodeResolve": "{name} a marqué une maladie comme terminée",
|
||
"illnessEpisodeRestore": "{name} a restauré une maladie",
|
||
"encounterVisitCreate": "{name} a ajouté une consultation",
|
||
"encounterVisitUpdate": "{name} a modifié une consultation",
|
||
"encounterVisitDelete": "{name} a supprimé une consultation",
|
||
"encounterVisitRestore": "{name} a restauré une consultation",
|
||
"vaccinationRecordCreate": "{name} a ajouté une vaccination",
|
||
"vaccinationRecordUpdate": "{name} a modifié une vaccination",
|
||
"vaccinationRecordDelete": "{name} a supprimé une vaccination",
|
||
"vaccinationRecordRestore": "{name} a restauré une vaccination",
|
||
"practitionerContactCreate": "{name} a ajouté un cabinet au carnet d'adresses",
|
||
"practitionerContactUpdate": "{name} a modifié une entrée du carnet d'adresses",
|
||
"practitionerContactDelete": "{name} a supprimé une entrée du carnet d'adresses",
|
||
"practitionerContactRestore": "{name} a restauré une entrée du carnet d'adresses",
|
||
"illnessDayLogUpsert": "{name} a enregistré une journée de maladie",
|
||
"medicationUpdate": "{name} a modifié un médicament",
|
||
"medicationDelete": "{name} a supprimé un médicament",
|
||
"medicationGlp1Update": "{name} a modifié un traitement GLP-1",
|
||
"medicationScheduleCreate": "{name} a ajouté un schéma de prise",
|
||
"medicationScheduleUpdate": "{name} a modifié un schéma de prise",
|
||
"medicationScheduleDelete": "{name} a supprimé un schéma de prise",
|
||
"medicationInventoryCreate": "{name} a ajouté une boîte de médicament",
|
||
"medicationInventoryUpdate": "{name} a modifié une boîte de médicament",
|
||
"medicationInventoryDelete": "{name} a supprimé une boîte de médicament",
|
||
"medicationSideEffectDelete": "{name} a supprimé un effet indésirable",
|
||
"medicationIntakeUpdate": "{name} a modifié une prise",
|
||
"medicationIntakeDelete": "{name} a supprimé une prise",
|
||
"medicationIntakeBulkDelete": "{name} a supprimé plusieurs prises d'un coup",
|
||
"medicationIntakePurge": "{name} a effacé tout l'historique des prises d'un médicament",
|
||
"medicationIntakeImport": "{name} a lancé un import des prises d'un médicament",
|
||
"medicationIntakeHistoryImport": "{name} a lancé un import de l'historique des prises",
|
||
"moodEntryCreate": "{name} a ajouté une entrée d'humeur",
|
||
"moodEntryUpdate": "{name} a modifié une entrée d'humeur",
|
||
"moodEntryDelete": "{name} a supprimé une entrée d'humeur",
|
||
"moodDeleteBulk": "{name} a supprimé plusieurs entrées d'humeur d'un coup",
|
||
"moodRestore": "{name} a restauré une entrée d'humeur",
|
||
"mentalHealthCreate": "{name} a enregistré le résultat d'un questionnaire",
|
||
"cycleDelete": "{name} a supprimé un cycle",
|
||
"cycleDayLogUpsert": "{name} a enregistré un jour du cycle",
|
||
"cycleDayLogUpdate": "{name} a modifié un jour du cycle",
|
||
"cycleDayLogDelete": "{name} a supprimé un jour du cycle",
|
||
"cyclePeriodBoundary": "{name} a modifié le début ou la fin de règles",
|
||
"cycleSymptomCreate": "{name} a ajouté un symptôme de cycle",
|
||
"nutrientWaterWrite": "{name} a enregistré la consommation d'eau",
|
||
"healthRecordExport": "{name} a exporté le dossier",
|
||
"rejectedMeasurementQuery": "{name} a envoyé une recherche de mesures que ce dossier n'a pas pu lire",
|
||
"rejectedDoseQuery": "{name} a envoyé une recherche de prises que ce dossier n'a pas pu lire",
|
||
"rejectedMoodQuery": "{name} a envoyé une recherche d'humeur que ce dossier n'a pas pu lire",
|
||
"rejectedMeasurementCreate": "{name} a tenté d'ajouter une mesure et a été refusé",
|
||
"rejectedMeasurementBatch": "{name} a tenté d'ajouter plusieurs mesures et a été refusé",
|
||
"rejectedMeasurementUpdate": "{name} a tenté de modifier une mesure et a été refusé",
|
||
"rejectedLabCreate": "{name} a tenté d'ajouter un résultat de laboratoire et a été refusé",
|
||
"rejectedLabUpdate": "{name} a tenté de modifier un résultat de laboratoire et a été refusé",
|
||
"rejectedBiomarkerCreate": "{name} a tenté d'ajouter un biomarqueur et a été refusé",
|
||
"rejectedBiomarkerUpdate": "{name} a tenté de modifier un biomarqueur et a été refusé",
|
||
"rejectedReminderCreate": "{name} a tenté d'ajouter un rappel de mesure et a été refusé",
|
||
"rejectedReminderUpdate": "{name} a tenté de modifier un rappel de mesure et a été refusé",
|
||
"rejectedMoodCreate": "{name} a tenté d'ajouter une entrée d'humeur et a été refusé",
|
||
"rejectedMoodUpdate": "{name} a tenté de modifier une entrée d'humeur et a été refusé",
|
||
"rejectedDoseCreate": "{name} a tenté d'enregistrer une prise et a été refusé",
|
||
"rejectedDoseUpdate": "{name} a tenté de modifier une prise et a été refusé",
|
||
"rejectedDoseImport": "{name} a tenté d'importer des prises et a été refusé",
|
||
"rejectedTrackedValue": "{name} a tenté d'enregistrer une valeur personnalisée et a été refusé",
|
||
"deniedDoseImport": "Un import de prises lancé par {name} n'a pas pu être mis en file",
|
||
"anamnesisFactCreate": "{name} a ajouté un élément d'antécédents de santé",
|
||
"customMetricCreate": "{name} a ajouté un type de valeur personnalisée",
|
||
"customMetricUpdate": "{name} a modifié un type de valeur personnalisée",
|
||
"customMetricDelete": "{name} a supprimé un type de valeur personnalisée",
|
||
"documentStore": "{name} a ajouté un document",
|
||
"documentUpdate": "{name} a modifié un document",
|
||
"documentDiscard": "{name} a écarté un document",
|
||
"medicationIntakeImportFinished": "L'import de prises lancé par {name} est terminé",
|
||
"medicationOneShotReconciled": "Un médicament à prise unique a été rouvert ou clos après une prise enregistrée par {name}",
|
||
"vaccinationBoosterPlanned": "{name} a planifié un rappel",
|
||
"medicationCategoryCreate": "{name} a ajouté une catégorie de médicaments",
|
||
"symptomEventCreate": "{name} a noté un symptôme",
|
||
"symptomEventUpdate": "{name} a modifié une entrée de symptôme",
|
||
"symptomEventDelete": "{name} a supprimé une entrée de symptôme",
|
||
"symptomDefinitionCreate": "{name} a ajouté un symptôme",
|
||
"symptomDefinitionUpdate": "{name} a modifié un symptôme",
|
||
"symptomDefinitionDelete": "{name} a retiré un symptôme",
|
||
"customVaccineCreate": "{name} a ajouté un vaccin personnel",
|
||
"customVaccineUpdate": "{name} a modifié un vaccin personnel",
|
||
"customVaccineDelete": "{name} a retiré un vaccin personnel",
|
||
"lifeEventCreate": "{name} a ajouté un événement de vie",
|
||
"lifeEventUpdate": "{name} a modifié un événement de vie",
|
||
"lifeEventDelete": "{name} a supprimé un événement de vie",
|
||
"biomarkerMerge": "{name} a fusionné des biomarqueurs",
|
||
"medicationIngredientsUpdate": "{name} a modifié la composition d’un complément",
|
||
"auditCCreate": "{name} a répondu au questionnaire AUDIT-C",
|
||
"auditCDelete": "{name} a supprimé une entrée AUDIT-C"
|
||
},
|
||
"section": {
|
||
"measurements": {
|
||
"label": "Mesures",
|
||
"detail": "Poids, tension artérielle, pouls, glycémie, sommeil, séances et les valeurs que vous suivez."
|
||
},
|
||
"medications": {
|
||
"label": "Médicaments",
|
||
"detail": "La liste des médicaments, leurs horaires, les prises, les effets indésirables et les stocks."
|
||
},
|
||
"labs": {
|
||
"label": "Résultats de laboratoire",
|
||
"detail": "Les résultats de laboratoire et la liste des analytes correspondants."
|
||
},
|
||
"profile": {
|
||
"label": "Antécédents de santé",
|
||
"detail": "Allergies, antécédents familiaux, les informations de votre profil de santé, vos consultations et cabinets ainsi que votre carnet de vaccination."
|
||
},
|
||
"illness": {
|
||
"label": "Maladies",
|
||
"detail": "Les épisodes de maladie et les journaux quotidiens qui s'y rattachent."
|
||
},
|
||
"mind": {
|
||
"label": "Humeur et santé mentale",
|
||
"detail": "Les entrées d'humeur et l'historique des questionnaires de santé mentale. Un questionnaire rempli enregistre aussi son score total comme une mesure."
|
||
},
|
||
"cycle": {
|
||
"label": "Cycle",
|
||
"detail": "Le suivi du cycle."
|
||
},
|
||
"documents": {
|
||
"label": "Documents",
|
||
"detail": "Tout ce qui est conservé dans le coffre à documents."
|
||
}
|
||
},
|
||
"actionError": {
|
||
"retry": "Réessayer",
|
||
"offline": "Cela n'a pas atteint le serveur. Rien n'a changé : vérifiez votre connexion et réessayez.",
|
||
"rateLimited": "Trop de tentatives d'affilée. Attendez une minute et réessayez.",
|
||
"acceptExpired": "Cette invitation a expiré. Demandez-en une nouvelle.",
|
||
"acceptWithdrawn": "Cette invitation a été retirée.",
|
||
"acceptNotPending": "Cette invitation a déjà été acceptée.",
|
||
"acceptNotFound": "Cette invitation n'existe plus.",
|
||
"acceptFailed": "L'invitation n'a pas pu être acceptée.",
|
||
"lastGuardian": "Cette personne est la seule à s'occuper de ce profil, donc cet accès ne peut pas encore prendre fin. Ajoutez d'abord une autre personne responsable, ou supprimez le profil.",
|
||
"alreadyEnded": "Cet accès a déjà pris fin.",
|
||
"notFound": "Cet accès n'existe plus.",
|
||
"revokeFailed": "L'accès n'a pas pu être terminé.",
|
||
"renounceFailed": "L'accès n'a pas pu être rendu.",
|
||
"profileNotFound": "Ce profil n'existe plus. Il a peut-être été supprimé, ou votre accès a pris fin.",
|
||
"deleteProfileFailed": "Le profil n'a pas pu être supprimé.",
|
||
"removeGuardianFailed": "Cet accès n'a pas pu prendre fin."
|
||
},
|
||
"anamnesis": {
|
||
"relativeNote": "Un antécédent familial décrit les proches de cette personne. Ne l'ajoutez que si elle voudrait le voir consigné ici."
|
||
},
|
||
"handoverDecision": {
|
||
"title": "Qui garde l'accès à votre dossier",
|
||
"description": "Décidez ce que les personnes qui ont tenu votre dossier peuvent faire désormais.",
|
||
"proposed": "Proposé : {access}",
|
||
"settled": "Déjà modifié dans Accès partagé",
|
||
"empty": "Personne d'autre n'avait accès à votre dossier.",
|
||
"later": "Vous pouvez le modifier à tout moment dans Paramètres, Accès partagé.",
|
||
"save": "Confirmer",
|
||
"saving": "Enregistrement…",
|
||
"decideLater": "Plus tard",
|
||
"errorFailed": "Votre décision n'a pas pu être enregistrée. Réessayez.",
|
||
"loadError": "Les personnes qui tenaient votre dossier n'ont pas pu être chargées.",
|
||
"notificationsTitle": "Configurez vos propres rappels",
|
||
"notificationsBody": "Jusqu'ici, les rappels de ce dossier parvenaient aux personnes qui le tenaient. Désormais, ils vous parviennent dès que vous ajoutez un canal de notification.",
|
||
"notificationsAction": "Ouvrir les notifications"
|
||
}
|
||
},
|
||
"encounters": {
|
||
"kind": {
|
||
"routine": "Consultation de routine",
|
||
"acute": "Consultation urgente",
|
||
"specialist": "Consultation spécialisée",
|
||
"preventive": "Examen de prévention",
|
||
"emergency": "Urgence",
|
||
"hospital": "Hôpital",
|
||
"therapy": "Séance de thérapie",
|
||
"other": "Rendez-vous médical",
|
||
"procedure": "Intervention ou chirurgie"
|
||
},
|
||
"laterality": {
|
||
"left": "Gauche",
|
||
"right": "Droite",
|
||
"both": "Des deux côtés",
|
||
"none": "Non précisé"
|
||
},
|
||
"bodySiteWithSide": "{site} ({side})",
|
||
"sectionTitle": "Rendez-vous",
|
||
"sectionDescription": "Consultations et rendez-vous pris, au même endroit.",
|
||
"add": "Rendez-vous",
|
||
"loadError": "Impossible de charger les rendez-vous.",
|
||
"emptyTitle": "Aucun rendez-vous enregistré",
|
||
"emptyDescription": "Une date suffit. Le reste est facultatif.",
|
||
"upcomingHeading": "À venir",
|
||
"pastHeading": "Passés",
|
||
"createTitle": "Enregistrer un rendez-vous",
|
||
"editTitle": "Modifier le rendez-vous",
|
||
"formDescription": "Seule la date est obligatoire.",
|
||
"created": "Rendez-vous enregistré",
|
||
"updated": "Rendez-vous mis à jour",
|
||
"saveFailed": "Le rendez-vous n'a pas pu être enregistré.",
|
||
"checkupNotClosed": "Rendez-vous enregistré. Le dépistage reste ouvert : votre accès ne le couvre pas.",
|
||
"status": {
|
||
"planned": "Prévu",
|
||
"done": "Effectué",
|
||
"cancelled": "Annulé",
|
||
"noShow": "Non honoré"
|
||
},
|
||
"card": {
|
||
"documentCount": "documents liés",
|
||
"labCount": "résultats de laboratoire liés",
|
||
"conditionCount": "maladies liées"
|
||
},
|
||
"form": {
|
||
"date": "Date et heure",
|
||
"dateDerivesStatusHint": "Une date à venir correspond à un rendez-vous pris.",
|
||
"status": "Statut",
|
||
"practitioner": "Cabinet ou médecin",
|
||
"practitionerHint": "Facultatif : vous pourrez ajouter le nom plus tard.",
|
||
"practitionerNone": "Non précisé",
|
||
"practitionerSearch": "Rechercher un nom ou un cabinet",
|
||
"practitionerNoMatch": "Aucune entrée trouvée.",
|
||
"practitionerAdd": "Créer une entrée",
|
||
"practitionerClear": "Retirer la sélection",
|
||
"kind": "Type",
|
||
"reason": "Motif",
|
||
"outcome": "Résultat",
|
||
"outcomeReveal": "Ajouter un résultat",
|
||
"bodySite": "Partie du corps",
|
||
"bodySiteHint": "Par exemple genou ou vésicule biliaire.",
|
||
"laterality": "Côté",
|
||
"linkDocuments": "Documents",
|
||
"linkLabResults": "Résultats de laboratoire",
|
||
"linkConditions": "Maladies",
|
||
"linkNothingToOffer": "Rien à lier pour le moment."
|
||
},
|
||
"deleteTitle": "Supprimer ce rendez-vous ?",
|
||
"deleteDescription": "L'entrée est supprimée. Si le rendez-vous est pris, son rappel disparaît avec elle.",
|
||
"deleteFailed": "Le rendez-vous n'a pas pu être supprimé.",
|
||
"suggestion": {
|
||
"single": "Cela concerne-t-il ce rendez-vous ?",
|
||
"choose": "À quel rendez-vous cela se rattache-t-il ?"
|
||
},
|
||
"episodeCard": {
|
||
"title": "Rendez-vous liés",
|
||
"emptyLine": "Aucun rendez-vous n'est encore rattaché à cette maladie.",
|
||
"add": "Ajouter un rendez-vous"
|
||
},
|
||
"dashboard": {
|
||
"nextVisit": "Prochain rendez-vous : {what} le {when}"
|
||
},
|
||
"procedures": {
|
||
"title": "Interventions et chirurgies",
|
||
"description": "Toutes les interventions et chirurgies que vous avez eues, les plus récentes d’abord.",
|
||
"add": "Intervention",
|
||
"searchLabel": "Filtrer par partie du corps",
|
||
"searchPlaceholder": "Par exemple genou",
|
||
"sitesLabel": "Parties du corps",
|
||
"allSites": "Toutes",
|
||
"count": "{shown} sur {total}",
|
||
"emptyTitle": "Aucune intervention enregistrée",
|
||
"emptyDescription": "Enregistrez un rendez-vous du type Intervention ou chirurgie, ou passez un rendez-vous existant à ce type.",
|
||
"noMatchTitle": "Rien ne correspond à ce filtre",
|
||
"clearFilter": "Effacer le filtre",
|
||
"loadError": "Les interventions n’ont pas pu être chargées."
|
||
},
|
||
"preparation": {
|
||
"practitioner": "Depuis votre dernière visite chez {name} le {date}",
|
||
"specialty": "Depuis votre dernière visite ({specialty}) le {date}",
|
||
"kind": "Depuis votre dernière visite du même type ({kind}) le {date}",
|
||
"default": "Les {days} derniers jours",
|
||
"defaultReason": "Aucune visite antérieure au même cabinet, dans la même spécialité ou du même type."
|
||
}
|
||
},
|
||
"checkups": {
|
||
"viewSwitchLabel": "Afficher les dépistages, les rendez-vous, les interventions ou les parties du corps",
|
||
"tabVorsorge": "Dépistages",
|
||
"tabVisits": "Rendez-vous",
|
||
"tabProcedures": "Interventions",
|
||
"tabBodySites": "Parties du corps"
|
||
},
|
||
"practitioners": {
|
||
"title": "Cabinets et médecins",
|
||
"description": "Votre carnet d'adresses : saisissez un cabinet une fois, choisissez-le partout.",
|
||
"linkLabel": "Carnet d'adresses",
|
||
"searchPlaceholder": "Rechercher un nom, un cabinet ou une spécialité",
|
||
"loadError": "Impossible de charger le carnet d'adresses.",
|
||
"emptyTitle": "Aucune entrée",
|
||
"emptyDescription": "Ajoutez un cabinet pour pouvoir le choisir lors d'un rendez-vous.",
|
||
"noMatchTitle": "Aucun résultat",
|
||
"noMatchDescription": "Aucune entrée ne correspond à cette recherche.",
|
||
"createTitle": "Ajouter une entrée",
|
||
"editTitle": "Modifier l'entrée",
|
||
"formDescription": "Seul le nom est obligatoire.",
|
||
"name": "Nom",
|
||
"specialty": "Spécialité",
|
||
"practice": "Cabinet",
|
||
"location": "Adresse",
|
||
"phone": "Téléphone",
|
||
"note": "Note",
|
||
"noteHint": "Enregistrée chiffrée.",
|
||
"saveFailed": "L'entrée n'a pas pu être enregistrée.",
|
||
"deleteTitle": "Supprimer cette entrée ?",
|
||
"deleteDescription": "Vos rendez-vous existants restent et conservent ce nom.",
|
||
"deleteFailed": "L'entrée n'a pas pu être supprimée.",
|
||
"noSpecialtyGroup": "Sans spécialité"
|
||
},
|
||
"links": {
|
||
"picker": {
|
||
"add": "Ajouter",
|
||
"done": "Terminé",
|
||
"selectAll": "Tout sélectionner",
|
||
"searchPlaceholder": "Rechercher",
|
||
"searchNoMatch": "Aucun résultat",
|
||
"suggested": "Autour de cette date",
|
||
"loadError": "Impossible de charger la liste.",
|
||
"removeNamed": "Retirer {name}",
|
||
"removed": "{name} dissocié",
|
||
"linked": "Liés",
|
||
"loadNewer": "Charger les plus récents",
|
||
"loadOlder": "Charger les plus anciens",
|
||
"period": {
|
||
"showing": "Période : {period}"
|
||
}
|
||
},
|
||
"related": {
|
||
"title": "Liés",
|
||
"kind": {
|
||
"labResult": "Résultat d’analyse",
|
||
"encounter": "Consultation",
|
||
"document": "Document",
|
||
"conditionEpisode": "Maladie",
|
||
"medication": "Médicament",
|
||
"vaccination": "Vaccination"
|
||
},
|
||
"via": {
|
||
"encounter": "via une consultation",
|
||
"efficacyTarget": "via la cible d’efficacité"
|
||
},
|
||
"pick": {
|
||
"conditionEpisode": "Maladies",
|
||
"document": "Documents",
|
||
"encounter": "Consultations",
|
||
"medication": "Médicaments",
|
||
"vaccination": "Vaccinations"
|
||
},
|
||
"nothingToOffer": "Rien à lier pour l’instant.",
|
||
"saveError": "Le lien n’a pas pu être enregistré."
|
||
}
|
||
},
|
||
"bodySites": {
|
||
"title": "Parties du corps",
|
||
"description": "Interventions et maladies selon la partie du corps concernée.",
|
||
"loadError": "Les parties du corps n’ont pas pu être chargées.",
|
||
"emptyTitle": "Aucune partie du corps enregistrée pour l’instant",
|
||
"emptyDescription": "Indiquez une partie du corps sur une intervention ou une maladie pour la retrouver ici.",
|
||
"sitesLabel": "Parties du corps",
|
||
"sidesLabel": "Côté",
|
||
"allSides": "Tous les côtés",
|
||
"pickPrompt": "Choisissez une partie du corps pour voir ce qui y est enregistré.",
|
||
"noMatchTitle": "Rien n’est enregistré de ce côté",
|
||
"visitsTitle": "Interventions et rendez-vous",
|
||
"conditionsTitle": "Maladies",
|
||
"hiddenDocument": "Un document qui ne vous est pas partagé",
|
||
"hiddenLabResult": "Un résultat d’analyse qui ne vous est pas partagé",
|
||
"hiddenCondition": "Une maladie qui ne vous est pas partagée",
|
||
"hiddenVisit": "Un rendez-vous qui ne vous est pas partagé",
|
||
"linkedLabel": "Éléments liés",
|
||
"conditionSince": "Depuis le {onset}",
|
||
"conditionDates": "Du {onset} au {resolved}"
|
||
},
|
||
"aiRuns": {
|
||
"backgroundDocument": "Lecture en arrière-plan. Vous pouvez quitter cette page ; le résultat est enregistré avec le document.",
|
||
"backgroundScan": "Lecture en arrière-plan. Avec un modèle lent, cela peut prendre quelques minutes.",
|
||
"waitingForWorker": "En attente du traitement en arrière-plan. Si rien ne change, le worker du serveur n'est peut-être pas lancé.",
|
||
"errorWorkerUnavailable": "Le traitement en arrière-plan n'est pas disponible pour le moment. Réessayez dans un instant ou demandez à la personne qui gère le serveur de le vérifier.",
|
||
"errorTimedOut": "La lecture a pris plus de temps que votre délai de réponse IA ne le permet. Réessayez ou augmentez ce délai dans les réglages IA."
|
||
},
|
||
"symptoms": {
|
||
"add": "Nouveau symptôme",
|
||
"nameLabel": "Nom",
|
||
"namePlaceholder": "p. ex. Aura",
|
||
"iconLabel": "Icône",
|
||
"icons": {
|
||
"Tag": "Étiquette",
|
||
"Activity": "Activité",
|
||
"Heart": "Cœur",
|
||
"HeartPulse": "Battement de cœur",
|
||
"Brain": "Cerveau",
|
||
"Zap": "Éclair",
|
||
"Flame": "Flamme",
|
||
"Snowflake": "Flocon de neige",
|
||
"Droplet": "Goutte",
|
||
"CircleDot": "Point",
|
||
"BatteryLow": "Batterie faible",
|
||
"MoonStar": "Lune et étoile",
|
||
"PersonStanding": "Personne",
|
||
"Drama": "Masques",
|
||
"Frown": "Visage triste",
|
||
"Cookie": "Biscuit",
|
||
"Soup": "Soupe",
|
||
"Pill": "Comprimé",
|
||
"Thermometer": "Thermomètre",
|
||
"Stethoscope": "Stéthoscope"
|
||
},
|
||
"limitReached": "Tu as 8 symptômes. Masques-en un pour en ajouter un autre.",
|
||
"saveError": "Impossible d'enregistrer le symptôme. Réessaie.",
|
||
"nameRequired": "Donne un nom au symptôme.",
|
||
"unreadableLabel": "Symptôme illisible",
|
||
"intensityPill": "{value}/10",
|
||
"entry": {
|
||
"sheetDescription": "L'un de tes propres symptômes, son intensité et quand.",
|
||
"symptom": "Symptôme",
|
||
"symptomRequired": "Choisis un symptôme.",
|
||
"intensity": "Intensité",
|
||
"intensityRequired": "Indique à quel point c'était fort.",
|
||
"intensityUnset": "Non renseignée",
|
||
"anchorLow": "Aucune",
|
||
"anchorHigh": "La pire imaginable",
|
||
"intensityValueText": "{value} sur {max} ({low} à {high})",
|
||
"when": "Quand",
|
||
"during": "Pendant une maladie",
|
||
"duringNone": "Non lié",
|
||
"note": "Note",
|
||
"notePlaceholder": "Qu'est-ce qui se passait d'autre ?",
|
||
"reset": "Réinitialiser le formulaire",
|
||
"emptyHint": "Ajoute ton premier symptôme, par exemple aura ou mal de tête.",
|
||
"emptyHintNoManage": "Aucun symptôme n'est encore configuré pour ce dossier.",
|
||
"limitHint": "Jusqu'à {limit} symptômes. Masques-en un sur la page des maladies pour en ajouter un autre."
|
||
},
|
||
"section": {
|
||
"title": "Tes symptômes",
|
||
"log": "Noter",
|
||
"loadError": "Impossible de charger tes symptômes.",
|
||
"summaryOne": "Une fois en 30 jours, {max}/10, la dernière {date}",
|
||
"summaryFew": "{count} fois en 30 jours, jusqu'à {max}/10, la dernière {date}",
|
||
"summaryOther": "{count} fois en 30 jours, jusqu'à {max}/10, la dernière {date}",
|
||
"summaryNoneRecent": "Pas dans les 30 derniers jours, la dernière {date}",
|
||
"summaryNever": "Pas encore noté",
|
||
"menuLabel": "Options pour {symptom}",
|
||
"eventMenuLabel": "Options pour cette entrée {symptom}",
|
||
"hide": "Masquer",
|
||
"show": "Afficher à nouveau",
|
||
"deleteTitle": "Supprimer le symptôme ?",
|
||
"deleteBody": "« {symptom} » et toutes ses entrées seront supprimés. Pour garder l'historique, masque-le plutôt.",
|
||
"deleteEventTitle": "Supprimer l'entrée ?",
|
||
"deleteEventBody": "Cette entrée sera supprimée.",
|
||
"hiddenOne": "Masqués (1)",
|
||
"hiddenFew": "Masqués ({count})",
|
||
"hiddenOther": "Masqués ({count})",
|
||
"recent": "30 derniers jours",
|
||
"recentEmpty": "Rien de noté ces 30 derniers jours.",
|
||
"editEventTitle": "Modifier {symptom}",
|
||
"editSymptomTitle": "Modifier le symptôme"
|
||
},
|
||
"episode": {
|
||
"title": "Symptômes notés",
|
||
"during": "pendant {illness}"
|
||
}
|
||
},
|
||
"day": {
|
||
"scoreOfMax": "sur {max}",
|
||
"cycleDay": "Jour {n} du cycle",
|
||
"cyclePhaseLine": {
|
||
"MENSTRUAL": "Jour {n} du cycle, phase menstruelle",
|
||
"FOLLICULAR": "Jour {n} du cycle, phase folliculaire",
|
||
"OVULATORY": "Jour {n} du cycle, phase ovulatoire",
|
||
"LUTEAL": "Jour {n} du cycle, phase lutéale"
|
||
},
|
||
"previousDay": "Jour précédent",
|
||
"nextDay": "Jour suivant",
|
||
"close": "Fermer le jour",
|
||
"hidePanel": "Masquer le jour",
|
||
"showPanel": "Afficher {date}",
|
||
"openDay": "Ouvrir le jour",
|
||
"viewWholeDay": "Voir toute la journée",
|
||
"captureForDay": "Saisir pour ce jour",
|
||
"empty": "Aucune entrée pour ce jour.",
|
||
"notShared": "Certaines rubriques ne sont pas partagées avec vous.",
|
||
"inTimeline": "Dans la chronologie",
|
||
"askCoach": "Interroger le Coach sur ce jour",
|
||
"loadFailed": "Impossible de charger ce jour.",
|
||
"dayOf": "Jour {n} sur {m}",
|
||
"dayN": "Jour {n}",
|
||
"usualRange": "Habituellement de {lo} à {hi}",
|
||
"groups": {
|
||
"scores": "Scores",
|
||
"running": "En cours ce jour-là",
|
||
"values": "Valeurs",
|
||
"happened": "Ce qui s’est passé",
|
||
"movement": "En déplacement"
|
||
},
|
||
"notable": {
|
||
"extremeHigh": "Valeur journalière la plus haute depuis {since}",
|
||
"extremeLow": "Valeur journalière la plus basse depuis {since}",
|
||
"firstValue": "Première mesure de ce type",
|
||
"gap": "{days} jours sans mesure"
|
||
},
|
||
"previousDayShortcut": "Jour précédent (Alt + flèche gauche)",
|
||
"nextDayShortcut": "Jour suivant (Alt + flèche droite)",
|
||
"captureShort": "Enregistrer",
|
||
"inTimelineShort": "Chronologie",
|
||
"askCoachPrompt": "Que s’est-il passé le {date} ?",
|
||
"coachChips": "Jours dans cette réponse",
|
||
"description": "Tout ce que vos entrées contiennent pour ce jour.",
|
||
"openDocument": "Ouvrir le document",
|
||
"previousReading": "Avant, {date}",
|
||
"sheetExpand": "Agrandir en pleine hauteur",
|
||
"sheetShrink": "Réduire",
|
||
"valuesLegend": "Point pour ce jour, barre pour les 30 jours précédents",
|
||
"valuesAllOne": "Toutes les valeurs",
|
||
"valuesAllFew": "Les {count} valeurs",
|
||
"valuesAllOther": "Les {count} valeurs",
|
||
"valuesFewer": "Moins de valeurs",
|
||
"countEntriesOne": "1 entrée",
|
||
"countEntriesFew": "{count} entrées",
|
||
"countEntriesOther": "{count} entrées",
|
||
"meanOfReadingsOne": "Moyenne de 1 mesure",
|
||
"meanOfReadingsFew": "Moyenne de {count} mesures",
|
||
"meanOfReadingsOther": "Moyenne de {count} mesures",
|
||
"sinceLastVisit": {
|
||
"countOne": "1 entrée",
|
||
"countFew": "{count} entrées",
|
||
"countOther": "{count} entrées",
|
||
"allOne": "Tout afficher",
|
||
"allFew": "Afficher les {count}",
|
||
"allOther": "Afficher les {count}",
|
||
"fewer": "Afficher moins",
|
||
"note": "Établi à partir de vos entrées, sans évaluation. Chaque date ouvre la journée entière.",
|
||
"report": "Rapport médical du {date} à aujourd’hui",
|
||
"loadError": "Impossible de charger ce qui s’est passé depuis la dernière visite."
|
||
},
|
||
"travel": "En déplacement",
|
||
"event": {
|
||
"started": "Début : {label}",
|
||
"ended": "Fin : {label}",
|
||
"paused": "Pause : {label}",
|
||
"resumed": "Reprise : {label}",
|
||
"illnessBegan": "Début : {label}",
|
||
"illnessResolved": "Guérison : {label}"
|
||
},
|
||
"pickDate": "Choisir une date",
|
||
"pickerTitle": "Aller à un jour",
|
||
"today": "Aujourd’hui",
|
||
"hasEntries": "avec des entrées",
|
||
"dayNSince": "Jour {n}, depuis le {date}",
|
||
"sinceDate": "Depuis le {date}",
|
||
"movement": {
|
||
"total": "Distance",
|
||
"driving": "En voiture",
|
||
"train": "En train",
|
||
"places": "Lieux visités",
|
||
"away": "Hors de chez toi",
|
||
"travel": "Jour de voyage",
|
||
"travelYes": "Oui",
|
||
"kilometres": "{value} km",
|
||
"miles": "{value} mi"
|
||
}
|
||
},
|
||
"timeline": {
|
||
"title": "Chronologie",
|
||
"subtitle": "Ce qui s’est passé et quand, à côté de vos valeurs.",
|
||
"standing": "Permanent",
|
||
"startUnknown": "début inconnu",
|
||
"zoom": {
|
||
"all": "Tout",
|
||
"year": "12 mois",
|
||
"quarter": "3 mois",
|
||
"range": "Période"
|
||
},
|
||
"lanes": {
|
||
"life": "Vie",
|
||
"illness": "Maladies",
|
||
"allergies": "Allergies",
|
||
"medications": "Médicaments",
|
||
"vaccinations": "Vaccinations",
|
||
"visits": "Médecin et interventions",
|
||
"labs": "Analyses",
|
||
"documents": "Documents",
|
||
"cycle": "Cycle"
|
||
},
|
||
"readiness": {
|
||
"title": "Ce que votre chronologie contient déjà",
|
||
"subtitle": "Un état des lieux honnête avant de l’ouvrir.",
|
||
"menuEntry": "Couverture des données",
|
||
"hint": "Les pistes vides restent masquées tant qu’elles ne contiennent rien. Les modules désactivés n’apparaissent jamais. Vous retrouverez cet aperçu plus tard sous Couverture des données, dans la chronologie.",
|
||
"later": "Plus tard",
|
||
"open": "Ouvrir la chronologie",
|
||
"verdict": {
|
||
"carries": "Elle est déjà bien remplie.",
|
||
"thin": "Encore maigre. Pour l’instant, la chronologie montre surtout vos valeurs."
|
||
},
|
||
"status": {
|
||
"carries": "remplie",
|
||
"thin": "maigre",
|
||
"empty": "vide"
|
||
},
|
||
"lanes": {
|
||
"values": "Valeurs",
|
||
"mood": "Humeur",
|
||
"environment": "Environnement",
|
||
"life": "Événements de vie"
|
||
},
|
||
"meter": "{carrying} pistes sur {total} sont remplies",
|
||
"carriesDetail": "{carrying} pistes sur {total} donnent une vue d’ensemble depuis {since}.",
|
||
"loadFailed": "L’inventaire n’a pas pu être chargé.",
|
||
"card": {
|
||
"title": "Ce que la chronologie contient déjà",
|
||
"summary": "Elle remonte à {since} ; {carrying} pistes sur {total} sont déjà remplies.",
|
||
"dismiss": "Masquer"
|
||
},
|
||
"detail": {
|
||
"valuesOne": "{count} mesure depuis {since}",
|
||
"valuesFew": "{count} mesures depuis {since}",
|
||
"valuesOther": "{count} mesures depuis {since}",
|
||
"illnessOne": "{count} épisode ; chroniques : {chronic}",
|
||
"illnessFew": "{count} épisodes ; chroniques : {chronic}",
|
||
"illnessOther": "{count} épisodes ; chroniques : {chronic}",
|
||
"allergiesOne": "{count} allergie",
|
||
"allergiesFew": "{count} allergies",
|
||
"allergiesOther": "{count} allergies",
|
||
"medicationsOne": "{count} médicament ; sans date de début : {missingStart}",
|
||
"medicationsFew": "{count} médicaments ; sans date de début : {missingStart}",
|
||
"medicationsOther": "{count} médicaments ; sans date de début : {missingStart}",
|
||
"medicationsDatedOne": "{count} médicament avec date de début",
|
||
"medicationsDatedFew": "{count} médicaments avec date de début",
|
||
"medicationsDatedOther": "{count} médicaments avec date de début",
|
||
"vaccinationsOne": "{count} vaccin",
|
||
"vaccinationsFew": "{count} vaccins",
|
||
"vaccinationsOther": "{count} vaccins",
|
||
"visitsOne": "{count} consultation, dont {procedures} avec intervention",
|
||
"visitsFew": "{count} consultations, dont {procedures} avec intervention",
|
||
"visitsOther": "{count} consultations, dont {procedures} avec intervention",
|
||
"visitsPlannedOne": "{count} consultation, seulement prévue",
|
||
"visitsPlannedFew": "{count} consultations, seulement prévues",
|
||
"visitsPlannedOther": "{count} consultations, seulement prévues",
|
||
"labsOne": "{count} jour avec résultats",
|
||
"labsFew": "{count} jours avec résultats",
|
||
"labsOther": "{count} jours avec résultats",
|
||
"documentsOne": "{count} document daté",
|
||
"documentsFew": "{count} documents datés",
|
||
"documentsOther": "{count} documents datés",
|
||
"lifeOne": "{count} événement de vie",
|
||
"lifeFew": "{count} événements de vie",
|
||
"lifeOther": "{count} événements de vie",
|
||
"cycleOne": "{count} cycle",
|
||
"cycleFew": "{count} cycles",
|
||
"cycleOther": "{count} cycles",
|
||
"moodOne": "{count} entrée depuis {since}",
|
||
"moodFew": "{count} entrées depuis {since}",
|
||
"moodOther": "{count} entrées depuis {since}",
|
||
"environmentOne": "{count} jour avec données d’environnement",
|
||
"environmentFew": "{count} jours avec données d’environnement",
|
||
"environmentOther": "{count} jours avec données d’environnement",
|
||
"empty": "Rien pour l’instant"
|
||
},
|
||
"gap": {
|
||
"valuesEmpty": "Connecter des sources",
|
||
"illnessEmpty": "Ajouter un épisode",
|
||
"medicationsWithoutStart": "Compléter",
|
||
"visitsEmpty": "Ajouter une visite",
|
||
"documentsUndated": "Vérifier",
|
||
"labsEmpty": "Ajouter un résultat",
|
||
"vaccinationsEmpty": "Ajouter des vaccins",
|
||
"lifeEventsEmpty": "Ajouter"
|
||
},
|
||
"gapLine": {
|
||
"medicationsWithoutStartOne": "{count} médicament sans date de début",
|
||
"medicationsWithoutStartFew": "{count} médicaments sans date de début",
|
||
"medicationsWithoutStartOther": "{count} médicaments sans date de début",
|
||
"documentsUndatedOne": "{count} document sans date",
|
||
"documentsUndatedFew": "{count} documents sans date",
|
||
"documentsUndatedOther": "{count} documents sans date",
|
||
"valuesEmpty": "Pas encore de valeurs sur une longue période",
|
||
"illnessEmpty": "Pas encore de maladies avec une date de début",
|
||
"visitsEmpty": "Pas encore de consultations effectuées",
|
||
"labsEmpty": "Pas encore de résultats d’analyses",
|
||
"vaccinationsEmpty": "Pas encore de vaccins",
|
||
"lifeEventsEmpty": "Aucun événement de vie pour l’instant"
|
||
}
|
||
},
|
||
"legendSpan": "Période",
|
||
"legendEvent": "Événement",
|
||
"legendMeanQuarter": "Moyenne trimestrielle",
|
||
"legendMeanMonth": "Moyenne mensuelle",
|
||
"legendMeanWeek": "Moyenne hebdomadaire",
|
||
"legendThin": "Moins de 3 mesures",
|
||
"legendGap": "Courte période sans mesures",
|
||
"today": "Aujourd’hui",
|
||
"noDataYet": "Pas encore de données",
|
||
"layers": "Calques",
|
||
"layersLanes": "Pistes",
|
||
"zoomLabel": "Période affichée",
|
||
"chartLabel": "Chronologie de {from} à {to}",
|
||
"keyboardHint": "Les flèches déplacent la sélection, Début et Fin vont aux extrémités, Entrée ouvre le jour.",
|
||
"loadFailed": "La chronologie n’a pas pu être chargée.",
|
||
"empty": {
|
||
"title": "Rien dans la chronologie pour l’instant",
|
||
"description": "Les entrées datées apparaîtront ici dès qu’il y en aura."
|
||
},
|
||
"values": {
|
||
"menuTitle": "Valeurs sous les lignes",
|
||
"trigger": "Valeurs ({count})",
|
||
"noneInWindow": "Aucune valeur sur cette période",
|
||
"series": {
|
||
"BLOOD_PRESSURE_SYS": "Tension systolique",
|
||
"BLOOD_PRESSURE_DIA": "Tension diastolique"
|
||
},
|
||
"noValue": "aucune valeur",
|
||
"bloodPressure": "Tension artérielle",
|
||
"readingsOne": "1 mesure",
|
||
"readingsFew": "moyenne de {count} mesures",
|
||
"readingsOther": "moyenne de {count} mesures"
|
||
},
|
||
"table": {
|
||
"caption": "Entrées de la chronologie",
|
||
"lane": "Piste",
|
||
"entry": "Entrée",
|
||
"start": "Début",
|
||
"end": "Fin",
|
||
"seriesCaption": "Moyennes par période",
|
||
"period": "Période"
|
||
},
|
||
"selection": {
|
||
"empty": "Aucune entrée sur cette période",
|
||
"since": "depuis le {date}",
|
||
"range": "{from} au {to}",
|
||
"mean": "Ø {values}",
|
||
"week": "Semaine du {date}",
|
||
"hintClick": "Cliquez sur un moment pour le voir ici",
|
||
"hintTap": "Touchez un moment pour le voir ici"
|
||
},
|
||
"chronicle": {
|
||
"months": "Mois",
|
||
"years": "Années",
|
||
"groupingLabel": "Regroupement",
|
||
"empty": "Aucune entrée de {from} à {to}",
|
||
"emptySingle": "Aucune entrée en {period}",
|
||
"ended": "Fin : {label}",
|
||
"afterDaysOne": "après 1 jour",
|
||
"afterDaysFew": "après {count} jours",
|
||
"afterDaysOther": "après {count} jours",
|
||
"notable": {
|
||
"extremeHigh": "Valeur la plus haute depuis longtemps",
|
||
"extremeLow": "Valeur la plus basse depuis longtemps",
|
||
"firstValue": "Première valeur d’une mesure",
|
||
"gap": "Une longue interruption des valeurs"
|
||
},
|
||
"notableMeta": "Ouvrez le jour pour les détails"
|
||
},
|
||
"standingAllergiesOne": "{count} allergie",
|
||
"standingAllergiesFew": "{count} allergies",
|
||
"standingAllergiesOther": "{count} allergies",
|
||
"legendMeanDay": "Moyenne journalière",
|
||
"range": {
|
||
"from": "Du",
|
||
"to": "Au",
|
||
"label": "Période choisie",
|
||
"open": "Choisir une période",
|
||
"clear": "Tout afficher",
|
||
"apply": "Appliquer"
|
||
},
|
||
"item": {
|
||
"labValuesOne": "1 valeur de laboratoire",
|
||
"labValuesFew": "{count} valeurs de laboratoire",
|
||
"labValuesOther": "{count} valeurs de laboratoire"
|
||
}
|
||
},
|
||
"lifeEvents": {
|
||
"title": "Événement de vie",
|
||
"add": "Événement de vie",
|
||
"privacy": "Le titre et la note sont chiffrés. Ils ne sont envoyés à aucune IA.",
|
||
"emptyHint": "Un déménagement, une naissance ou un nouvel emploi donnent un repère aux années.",
|
||
"save": "Enregistrer",
|
||
"cancel": "Annuler",
|
||
"delete": "Supprimer l’événement de vie",
|
||
"saved": "Événement de vie enregistré",
|
||
"deleted": "Événement de vie supprimé",
|
||
"fields": {
|
||
"title": "Que s’est-il passé ?",
|
||
"category": "Type",
|
||
"when": "Quand",
|
||
"precision": "Précision",
|
||
"addEnd": "Date de fin, s’il s’agissait d’une période",
|
||
"endDate": "Jusqu’au",
|
||
"note": "Note",
|
||
"optionalTag": "facultatif",
|
||
"notePlaceholder": "Quelque chose que vous voudrez savoir plus tard",
|
||
"removeEnd": "Retirer la date de fin"
|
||
},
|
||
"category": {
|
||
"FAMILY": "Famille",
|
||
"HOME": "Logement",
|
||
"WORK": "Travail",
|
||
"LOSS": "Deuil",
|
||
"OTHER": "Autre"
|
||
},
|
||
"precision": {
|
||
"DAY": "Jour",
|
||
"MONTH": "Mois",
|
||
"YEAR": "Année"
|
||
},
|
||
"edit": "Modifier l’événement de vie",
|
||
"errors": {
|
||
"titleRequired": "Donnez un nom à l’événement.",
|
||
"titleTooLong": "120 caractères au maximum.",
|
||
"categoryRequired": "Choisissez un type.",
|
||
"dateRequired": "Indiquez une date valide.",
|
||
"endBeforeStart": "La fin précède le début.",
|
||
"noteTooLong": "2000 caractères au maximum."
|
||
},
|
||
"saveFailed": "L’enregistrement a échoué.",
|
||
"deleteFailed": "La suppression a échoué.",
|
||
"deleteConfirm": {
|
||
"title": "Supprimer cet événement de vie ?",
|
||
"body": "Son titre et sa note disparaîtront."
|
||
}
|
||
},
|
||
"palette": {
|
||
"title": "Recherche",
|
||
"description": "Trouver une page, un réglage, un module, une action ou une entrée de votre dossier.",
|
||
"placeholder": "Rechercher des pages, réglages, votre dossier…",
|
||
"results": "Résultats",
|
||
"noResults": "Aucun résultat pour « {query} ».",
|
||
"moduleOn": "Activé",
|
||
"moduleOff": "Désactivé",
|
||
"hintMove": "Naviguer",
|
||
"hintOpen": "Ouvrir",
|
||
"hintClose": "Fermer",
|
||
"groups": {
|
||
"recent": "Récents",
|
||
"pages": "Pages",
|
||
"insights": "Insights",
|
||
"settings": "Paramètres",
|
||
"modules": "Modules",
|
||
"actions": "Actions",
|
||
"records": "Dans votre dossier"
|
||
},
|
||
"actions": {
|
||
"capture": "Nouvelle saisie",
|
||
"coach": "Demander au Coach",
|
||
"backup": "Créer une sauvegarde",
|
||
"today": "Ouvrir aujourd’hui",
|
||
"shortcuts": "Afficher les raccourcis clavier"
|
||
},
|
||
"records": {
|
||
"loading": "Recherche dans votre dossier…",
|
||
"empty": "Rien dans votre dossier pour « {query} ».",
|
||
"error": "Votre dossier n’a pas pu être parcouru. Réessayez dans un instant.",
|
||
"truncated": "Seules les entrées les plus récentes ont été parcourues.",
|
||
"kind": {
|
||
"visit": "Consultation",
|
||
"condition": "Maladie",
|
||
"document": "Document",
|
||
"vaccination": "Vaccination",
|
||
"lab": "Résultat d’analyse",
|
||
"medication": "Médicament",
|
||
"symptom": "Symptôme",
|
||
"workout": "Entraînement",
|
||
"note": "Note"
|
||
},
|
||
"source": {
|
||
"mood": "Note d’humeur",
|
||
"measurement": "Note sur une mesure",
|
||
"illness": "Journal de maladie"
|
||
}
|
||
}
|
||
},
|
||
"shortcuts": {
|
||
"title": "Raccourcis clavier",
|
||
"description": "Des touches qui fonctionnent partout dans l’application, sauf pendant la saisie dans un champ.",
|
||
"menuEntry": "Raccourcis clavier",
|
||
"then": "puis",
|
||
"search": "Rechercher",
|
||
"help": "Afficher cette liste",
|
||
"close": "Fermer une boîte de dialogue ou un panneau",
|
||
"previousDay": "Jour précédent",
|
||
"nextDay": "Jour suivant",
|
||
"toggleDay": "Ouvrir ou fermer le jour",
|
||
"dayHint": "Jour précédent et suivant fonctionnent quand un jour est ouvert.",
|
||
"groups": {
|
||
"navigation": "Navigation",
|
||
"actions": "Actions",
|
||
"day": "Jour"
|
||
}
|
||
},
|
||
"aboutPage": {
|
||
"eyebrow": "À propos",
|
||
"title": "À propos de HealthLog",
|
||
"lastUpdated": "Dernière mise à jour : {date}",
|
||
"project": "Projet",
|
||
"credits": "Crédits"
|
||
},
|
||
"series": {
|
||
"reference": {
|
||
"targetUpper": "Votre objectif, limite haute",
|
||
"targetLower": "Votre objectif, limite basse",
|
||
"clinicalUpper": "Limite clinique haute",
|
||
"clinicalLower": "Limite clinique basse"
|
||
}
|
||
},
|
||
"activityCalendar": {
|
||
"title": "Calendrier d'activité",
|
||
"periodLabel": "Période du calendrier",
|
||
"period": {
|
||
"week": "Semaine",
|
||
"month": "Mois"
|
||
},
|
||
"weekRange": "{start} au {end}",
|
||
"previous": "Période précédente",
|
||
"next": "Période suivante",
|
||
"metricLabel": "Colorer les jours selon",
|
||
"metric": {
|
||
"steps": "Pas",
|
||
"activeMinutes": "Minutes actives",
|
||
"load": "Charge d'entraînement"
|
||
},
|
||
"empty": "Aucun pas, aucune minute active ni aucun entraînement sur cette période pour l'instant.",
|
||
"loadError": "Le calendrier d'activité n'a pas pu être chargé.",
|
||
"weekGoalsColumn": "Objectifs hebdomadaires",
|
||
"weekGoalsMet": "Tous les objectifs hebdomadaires atteints",
|
||
"weekGoalsNotMet": "Objectifs hebdomadaires pas tous atteints",
|
||
"cell": {
|
||
"steps": "{value} pas",
|
||
"activeMinutes": "{value} minutes actives",
|
||
"workouts": "{value} entraînements : {sports}"
|
||
},
|
||
"level": {
|
||
"none": "Aucune donnée",
|
||
"unrated": "Pas encore assez d'historique",
|
||
"low": "Bien en dessous de ton habitude",
|
||
"below": "En dessous de ton habitude",
|
||
"usual": "Comme d'habitude",
|
||
"above": "Au-dessus de ton habitude",
|
||
"high": "Bien au-dessus de ton habitude",
|
||
"in_progress": "Aujourd’hui, en cours"
|
||
},
|
||
"legend": "Comparé à tes 12 semaines précédentes :",
|
||
"noBaseline": "Ta plage habituelle apparaît après 14 jours avec des données.",
|
||
"summary": {
|
||
"steps": "{value} pas",
|
||
"activeMinutes": "{value} minutes actives",
|
||
"workouts": "{value} entraînements",
|
||
"load": "Charge d'entraînement moyenne {value}",
|
||
"usual": "Ton habitude à ce stade : {value}",
|
||
"noUsual": "Pas encore assez de semaines ou de mois précédents pour comparer.",
|
||
"usualThroughYesterday": "Jusqu’à hier {value}, ton habitude à ce stade {usual}",
|
||
"firstDay": "Comparé à ton habitude dès que le premier jour est terminé."
|
||
},
|
||
"sportCount": "{sport} : {count}",
|
||
"goal": {
|
||
"workoutsPerWeek": "Entraînements par semaine",
|
||
"activeMinutesPerWeek": "Minutes actives par semaine",
|
||
"stepsPerWeek": "Pas par semaine",
|
||
"stepsPerMonth": "Pas par mois"
|
||
},
|
||
"goalOf": "{value} sur {target}",
|
||
"setGoals": "Définir des objectifs",
|
||
"editGoals": "Modifier les objectifs",
|
||
"goalsSheet": {
|
||
"title": "Objectifs d'activité",
|
||
"description": "Laisse un champ vide pour ne pas fixer d'objectif.",
|
||
"none": "Aucun objectif",
|
||
"invalid": "Un nombre entier de {min} à {max}.",
|
||
"saveError": "Les objectifs n'ont pas pu être enregistrés."
|
||
},
|
||
"crossLink": {
|
||
"title": "Calendrier d'activité",
|
||
"body": "Tes pas par semaine ou par mois, comparés à ton habitude.",
|
||
"cta": "Ouvrir le calendrier"
|
||
}
|
||
},
|
||
"sourceProvenance": {
|
||
"title": "D'où viennent les valeurs",
|
||
"description": "Quelle source a fourni une valeur chaque jour, et laquelle ta priorité des sources utilise.",
|
||
"metric": "Mesure",
|
||
"day": "Jour",
|
||
"dayTitle": "Sources de ce jour",
|
||
"loadError": "Les sources n'ont pas pu être chargées.",
|
||
"dayEmpty": "Aucune valeur de cette mesure ce jour-là.",
|
||
"reason": {
|
||
"only_source": "{source} est la seule source ce jour-là.",
|
||
"highest_on_ladder": "{source} est utilisée : c'est la plus haute dans ta priorité des sources parmi celles de ce jour.",
|
||
"name_tiebreak": "{source} est utilisée : aucune source de ce jour n'est dans ta priorité, le nom a donc décidé.",
|
||
"not_ranked": "Cette mesure n'a pas de priorité des sources : les valeurs de toutes les sources comptent."
|
||
},
|
||
"pass": {
|
||
"lower_on_ladder": "Plus bas dans ta priorité des sources.",
|
||
"not_on_ladder": "Absente de ta priorité des sources pour cette mesure.",
|
||
"name_tiebreak": "Même rang que la source utilisée ; le nom a décidé."
|
||
},
|
||
"used": "Utilisée",
|
||
"readings": "{count} mesures, appareils : {devices}",
|
||
"ladder": "Ton ordre pour cette mesure : {ladder}",
|
||
"utcNote": "La source est choisie par jour, de minuit à minuit UTC, comme pour les graphiques.",
|
||
"openSettings": "Modifier l'ordre dans Priorité des sources",
|
||
"compareTitle": "Comparer deux sources",
|
||
"range": "Période",
|
||
"rangeDays": "{days} jours",
|
||
"compareNeedsTwo": "Une seule source a des valeurs de cette mesure sur cette période.",
|
||
"side": {
|
||
"a": "Première source",
|
||
"b": "Deuxième source"
|
||
},
|
||
"daysBoth": "Jours avec les deux",
|
||
"meanOf": "Moyenne de {source}",
|
||
"meanAbsDiff": "Écart moyen",
|
||
"pickedDays": "Jours utilisés (première / deuxième)",
|
||
"pickedSplit": "{a} / {b}",
|
||
"compareNote": "Les moyennes ne comptent que les jours où les deux sources ont des valeurs, pour comparer ce qui est comparable. En gras, la valeur utilisée par les graphiques.",
|
||
"settingsHint": "Pour voir ce que cet ordre décide jour après jour :",
|
||
"settingsHintLink": "D'où viennent les valeurs",
|
||
"metricLink": "D'où viennent ces valeurs"
|
||
},
|
||
"recordImport": {
|
||
"title": "Résultats d'analyses et médicaments depuis un tableur",
|
||
"description": "Importe des années de résultats ou une liste de médicaments depuis un fichier CSV.",
|
||
"detail": "Tu choisis quelle colonne contient quoi ; HealthLog vérifie chaque ligne d'abord et n'importe rien avant ta confirmation. Les lignes déjà présentes sont ignorées.",
|
||
"kind": {
|
||
"labs": "Résultats d'analyses",
|
||
"medications": "Médicaments"
|
||
},
|
||
"sheetTitle": {
|
||
"labs": "Importer des résultats",
|
||
"medications": "Importer des médicaments"
|
||
},
|
||
"sheetDescription": {
|
||
"labs": "Les marqueurs sont rattachés aux tiens, les unités converties quand la conversion est connue.",
|
||
"medications": "Nom, dose, heures quotidiennes, si besoin, début et fin. Les autres rythmes se règlent ensuite dans l'app."
|
||
},
|
||
"file": "Fichier CSV",
|
||
"template": "Télécharger le modèle",
|
||
"mapping": "Quelle colonne contient quoi",
|
||
"required": "(obligatoire)",
|
||
"notInFile": "Absent du fichier",
|
||
"column": "Colonne {n}",
|
||
"delimiter": "Séparateur",
|
||
"delimiterOption": {
|
||
"comma": "Virgule",
|
||
"semicolon": "Point-virgule",
|
||
"tab": "Tabulation"
|
||
},
|
||
"decimal": "Séparateur décimal",
|
||
"decimalOption": {
|
||
"dot": "Point (5.4)",
|
||
"comma": "Virgule (5,4)"
|
||
},
|
||
"dateOrder": "Format de date",
|
||
"dateOrderOption": {
|
||
"iso": "2025-03-01",
|
||
"dmy": "01.03.2025 (jour d'abord)",
|
||
"mdy": "03/01/2025 (mois d'abord)"
|
||
},
|
||
"header": "La première ligne contient les noms de colonnes",
|
||
"reminders": "Activer les rappels pour les médicaments importés",
|
||
"timezoneNote": "Les heures sans fuseau sont lues dans le fuseau de ton compte. Une date sans heure reste ce jour du calendrier.",
|
||
"missing": "Encore à choisir : {fields}",
|
||
"check": "Vérifier le fichier",
|
||
"runIdle": "Importer",
|
||
"run": "Importer {count} lignes",
|
||
"close": "Fermer",
|
||
"summaryCheck": "{rows} lignes lues : {inserted} importables, {duplicates} déjà présentes, {failed} avec un problème.",
|
||
"summaryDone": "{inserted} lignes importées. Ignorées : {duplicates} déjà présentes et {failed} avec un problème.",
|
||
"markersMatched": "Rattachés à tes marqueurs :",
|
||
"markersCreated": "Nouveaux marqueurs :",
|
||
"line": "Ligne {line}",
|
||
"errorsTruncated": "Seuls les 500 premiers problèmes sont listés.",
|
||
"error": {
|
||
"tooLarge": "Le fichier dépasse 16 Mo.",
|
||
"rateLimited": "Trop d'importations au cours de la dernière heure. Réessaie plus tard.",
|
||
"invalid": "Le fichier ou le choix des colonnes n'a pas pu être lu.",
|
||
"failed": "L'importation n'a pas abouti. Réessaie."
|
||
},
|
||
"reason": {
|
||
"missing_value": "Une cellule obligatoire est vide",
|
||
"invalid_number": "Ce n'est pas un nombre",
|
||
"ambiguous_number": "Le nombre se lit de deux façons ; vérifie le séparateur décimal",
|
||
"missing_unit": "Un nombre a besoin d'une unité",
|
||
"invalid_date": "Ce n'est pas une date au format choisi",
|
||
"invalid_time": "Ce n'est pas une heure",
|
||
"ambiguous_date": "La date se lit de deux façons ; utilise une année à quatre chiffres et le format choisi",
|
||
"future_date": "La date est dans le futur",
|
||
"text_too_long": "Le texte est trop long",
|
||
"unit_mismatch": "Cette unité ne se convertit pas dans celle du marqueur",
|
||
"invalid_reference_range": "La plage de référence est illisible",
|
||
"invalid_times": "Les heures sont illisibles (ex. 08:00 20:00)",
|
||
"missing_times": "Ajoute des heures de prise ou marque le médicament si besoin",
|
||
"invalid_yes_no": "Utilise oui ou non",
|
||
"as_needed_with_times": "Un médicament si besoin n'a pas d'heures fixes",
|
||
"end_before_start": "La fin précède le début",
|
||
"invalid_medication": "Le médicament ne peut pas être enregistré ainsi",
|
||
"oversized_row": "La ligne est trop longue ou trop large",
|
||
"row_limit": "Au-delà de la limite de lignes par importation",
|
||
"duplicate": "Déjà présente, ignorée"
|
||
},
|
||
"field": {
|
||
"analyte": "Marqueur",
|
||
"value": "Résultat",
|
||
"unit": "Unité",
|
||
"date": "Date",
|
||
"time": "Heure",
|
||
"referenceRange": "Plage de référence",
|
||
"referenceLow": "Référence basse",
|
||
"referenceHigh": "Référence haute",
|
||
"panel": "Groupe",
|
||
"note": "Note",
|
||
"name": "Nom",
|
||
"dose": "Dose",
|
||
"times": "Heures",
|
||
"asNeeded": "Si besoin",
|
||
"startsOn": "Début",
|
||
"endsOn": "Fin"
|
||
}
|
||
}
|
||
}
|