Files
HealthLog/messages/it.json
T
Marc-André Bombeck 107a111545 fix(insights): polish range pills, zero-delta caption, scrollbar gutter, mood tiles
- Range pills: make the radiogroup a single tab stop with roving tabindex and
  Arrow / Home / End key handling, matching the WAI-ARIA radiogroup pattern.
  Previously every pill was its own tab stop and the arrow keys were dead.
- Range delta caption: render a neutral dash + "no change" for a perfectly
  stable metric instead of a down-arrow with "−0%". Adds the `noChange`
  string across all six locales.
- Scrollbar gutter: scope the document-level `scrollbar-gutter: stable` to the
  body-scrolled shells (login / register / onboarding / legal) via a
  `data-scroll` attribute the shell sets, so the height-locked authenticated
  branch no longer reserves a second, never-painted gutter on classic
  scrollbar platforms.
- Mood tiles: a lone in-target / stability tile now spans full width instead
  of leaving a half-width orphan beside it.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
(cherry picked from commit 12b434a0c262e29ced1ac0aaf631db6678c3ad05)
2026-06-02 17:34:52 +02:00

4201 lines
188 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"common": {
"save": "Salva",
"cancel": "Annulla",
"delete": "Elimina",
"edit": "Modifica",
"moreOptions": "Altre opzioni",
"create": "Crea",
"close": "Chiudi",
"loading": "Caricamento…...",
"loadFailed": "Could not load",
"error": "Errore",
"saved": "Salvato",
"no": "No",
"noData": "Nessun dato disponibile",
"optional": "Opzionale",
"active": "Attivo",
"inactive": "Inattivo",
"enabled": "Abilitato",
"disabled": "Disabilitato",
"networkError": "Errore di rete",
"unknownError": "Errore sconosciuto",
"copied": "Copiato!",
"or": "o",
"unknown": "Sconosciuto",
"add": "Aggiungi",
"import": "Importa",
"test": "Verifica",
"reset": "Reimposta",
"copy": "Copia",
"copyDetails": "Copia dettagli",
"retry": "Riprova",
"reportIssue": "Segnala un problema",
"showPassword": "Mostra password",
"hidePassword": "Nascondi password"
},
"doctorReport": {
"title": "Rapporto sanitario",
"subtitle": "HealthLog — Rapporto personale di salute",
"patient": "Paziente",
"dateOfBirth": "Data di nascita",
"gender": "Sesso",
"genderMale": "Uomo",
"genderFemale": "Donna",
"genderOther": "Non binario",
"height": "Altezza",
"period": "Periodo del rapporto",
"createdOn": "Creato il",
"vitalsTitle": "Parametri vitali — Riepilogo",
"colParameter": "Parametro",
"colCurrent": "Attuale",
"colAvgPeriod": "Media periodo",
"colMin": "Min",
"colMax": "Max",
"colN": "n",
"bpClassificationTitle": "Pressione arteriosa — Classificazione ESH (2023)",
"avgBp": "Pressione arteriosa media",
"classification": "Classificazione",
"bmiTitle": "Indice di massa corporea (BMI)",
"bmiRow": "IMC:{bmi} kg/m² — Classification: {class} (WHO)",
"complianceTitle": "Aderenza ai farmaci",
"glp1Title": "Terapia GLP-1",
"glp1WeightSummary": "Peso nel periodo del referto: {start} kg → {end} kg ({delta} kg)",
"glp1CurrentDose": "Dose attuale:{value} {unit} (since {since})",
"glp1Compliance": "Aderenza:{taken} / {total} ({rate}%)",
"glp1SideEffectsTitle": "Effetti collaterali registrati",
"colGlp1Date": "Data",
"colGlp1Dose": "Dose",
"colGlp1Note": "Nota",
"colGlp1SideEffect": "Effetto collaterale",
"colMedication": "Farmaco",
"colTaken": "Assunta",
"colSkipped": "Saltata",
"colMissed": "Persa",
"colTotal": "Totale",
"colComplianceRate": "Tasso di aderenza",
"moodTitle": "Andamento dell’umore",
"moodSummary": "Media:{avg} / 5.0 · Entries: {count} · Range: {min}–{max}",
"colMood": "Umore",
"colCount": "Quantità",
"colShare": "Quota",
"footerDisclaimer1": "Questo rapporto è stato generato automaticamente da dati auto-registrati ed è destinato a supportare",
"footerDisclaimer2": "il dialogo medico-paziente. Non sostituisce una diagnosi medica. Le correlazioni non implicano causalità.",
"footerSource": "Fonte: HealthLog | Fuso orario: Europe/Berlin | Creato: {timestamp}",
"typeWeight": "Peso corporeo",
"typeBpSys": "Pressione arteriosa sistolica",
"typeBpDia": "Pressione arteriosa diastolica",
"typePulse": "Pulsazioni a riposo",
"typeBodyFat": "Massa grassa",
"typeSleep": "Durata del sonno",
"typeSteps": "Attività (passi)",
"typeTotalBodyWater": "Acqua corporea totale",
"typeBoneMass": "Massa ossea",
"typeOxygenSaturation": "Saturazione di ossigeno",
"unitSteps": "Passi",
"bmiUnderweight": "Sottopeso",
"bmiNormal": "Peso normale",
"bmiOverweight": "Sovrappeso (preobesità)",
"bmiObeseGrade1": "Obesità di grado I",
"bmiObeseGrade2": "Obesità di grado II",
"bmiObeseGrade3": "Obesità di grado III",
"bpOptimal": "Ottimale",
"bpNormal": "Normale",
"bpHighNormal": "Normale-alta",
"bpHypertensionGrade1": "Ipertensione grado 1",
"bpHypertensionGrade2": "Ipertensione grado 2",
"bpHypertensionGrade3": "Ipertensione grado 3",
"moodAwful": "Molto cattivo",
"moodBad": "Male",
"moodNeutral": "Neutro",
"moodGood": "Bene",
"moodGreat": "Molto buono",
"typeGlucoseFasting": "Glicemia (a digiuno)",
"typeGlucosePostprandial": "Glicemia (postprandiale)",
"typeGlucoseRandom": "Glicemia (qualsiasi)",
"typeGlucoseBedtime": "Glicemia (prima di coricarsi)",
"glucoseClassificationTitle": "Glicemia — Intervalli di riferimento (ADA 2024 / DDG)",
"glucoseRow": "{label}: media {avg} {unit} (obiettivo {rangeMin}–{rangeMax}) — {class}",
"glucoseInTarget": "in obiettivo",
"glucoseBelowTarget": "sotto obiettivo",
"glucoseAboveTarget": "sopra obiettivo",
"practiceLabel": "Studio",
"dialog": {
"title": "Referto medico (PDF)",
"description": "Imposta il periodo di analisi e (opzionale) il nome dello studio — entrambi compaiono in copertina.",
"startLabel": "Dal",
"endLabel": "Al",
"practiceLabel": "Studio / clinica (opzionale)",
"practicePlaceholder": "es. Dr. Müller — Medicina generale",
"preset90d": "Ultimi 90 giorni",
"preset180d": "Ultimi 6 mesi",
"preset365d": "Ultimi 12 mesi",
"submit": "Genera PDF",
"cancel": "Annulla",
"errorEndBeforeStart": "La data di fine non può essere antecedente a quella di inizio.",
"errorRangeTooLong": "Il periodo di analisi non può superare i 2 anni.",
"errorInvalidDate": "Scegli una data di inizio e di fine valide."
},
"sections": {
"title": "Seleziona contenuti",
"bp": "Pressione arteriosa",
"weight": "Peso",
"pulse": "Pulsazioni a riposo",
"bmi": "Indice di massa corporea (BMI)",
"mood": "Umore",
"moodSensitive": "Sensibile — disattivato per default.",
"compliance": "Aderenza ai farmaci",
"sleep": "Durata del sonno",
"empty": "Nessun dato per il periodo selezionato. Il referto manterrà comunque la copertina.",
"unavailableHint": "Nessun dato in questo periodo"
},
"insurer": "Assicurazione sanitaria",
"insuranceNumber": "N. assicurato",
"summaryTitle": "Riepilogo clinico",
"summaryReadings": "Registrato in {days} giorni: {count} misurazioni su {params} parametri.",
"summaryTrend": "{label}: ultimo {latest} {arrow}",
"summaryAdherence": "Aderenza ai farmaci: {rate}% (media ponderata).",
"chartsTitle": "Grafici di tendenza",
"aiSummaryTitle": "Riepilogo IA — non validato clinicamente",
"aiSummaryDisclaimer": "Questa sezione è stata generata automaticamente da un modello di IA e non è validata clinicamente. Non sostituisce una valutazione medica.",
"packageReadme": "Cartella clinica HealthLog\n\nQuesto pacchetto contiene:\n- report.pdf: il referto sanitario per il medico.\n- bundle.json: gli stessi dati come Bundle documento HL7 FHIR R4, compatibile ePA.\n\nGenerato con HealthLog."
},
"errorBoundary": {
"title": "Qualcosa è andato storto",
"description": "Si è verificato un errore inatteso. Puoi riprovare, copiare i dettagli tecnici o aprire una segnalazione di bug."
},
"notFound": {
"title": "Questa pagina non esiste.",
"backToDashboard": "Torna alla dashboard"
},
"offlineBanner": {
"message": "Nessuna connessione — le tue modifiche verranno salvate appena torni online."
},
"nav": {
"dashboard": "Dashboard",
"measurements": "Misurazioni",
"medications": "Farmaci",
"insights": "Insights",
"targets": "Obiettivi",
"achievements": "Traguardi",
"settings": "Impostazioni",
"bugreport": "Segnalazione bug",
"admin": "Console di amministrazione",
"logout": "Esci",
"login": "Accedi",
"about": "Informazioni su HealthLog",
"notifications": "Centro notifiche",
"theme": "Aspetto",
"themeSystem": "Sistema",
"themeDark": "Scuro",
"themeLight": "Chiaro",
"collapseSidebar": "Riduci",
"userMenu": "Menu utente",
"mood": "Umore",
"skipToContent": "Vai al contenuto",
"sidebar": "Barra laterale",
"mainNavigation": "Navigazione principale",
"mobileNavigation": "Navigazione mobile",
"breadcrumb": "Navigazione breadcrumb",
"loadingScreen": "Caricamento…",
"more": "Altro",
"moreSheetTitle": "Altro",
"moreSheetDescription": "Pagine che non entrano nella barra inferiore."
},
"auth": {
"login": "Accedi",
"register": "Registrati",
"username": "Nome utente",
"password": "Password",
"email": "Indirizzo e-mail",
"emailPlaceholder": "nome@esempio.it",
"emailOrUsername": "Indirizzo e-mail o nome utente",
"emailOrUsernamePlaceholder": "nome@esempio.it o nomeutente",
"loginWithPasskey": "Accedi con passkey",
"loginWithPassword": "Accedi con password",
"noAccount": "Non hai ancora un account?",
"hasAccount": "Hai già un account?",
"loginFailed": "Accesso non riuscito",
"registerFailed": "Registrazione non riuscita",
"createAccount": "Crea account",
"newAccount": "Crea un nuovo account",
"backToPasskey": "Torna a passkey",
"passkeySetupLater": "Puoi configurare le passkey più tardi dalle impostazioni.",
"passwordMinLength": "Min. 12 caratteri",
"passwordTooShort": "La password deve avere almeno {minLength} caratteri.",
"privacyPolicy": "Informativa sulla privacy"
},
"dashboard": {
"title": "Cruscotto",
"greeting": {
"morning": "Buongiorno",
"day": "Ciao",
"evening": "Buonasera"
},
"welcomeBack": "{greeting}, bentornato.",
"welcomeBackWithName": "{greeting} {name}, bentornato.",
"greetingSalutation": "Ciao, {name}",
"streakLabel": "giorni di fila",
"weight": "Peso",
"bloodPressure": "Pressione arteriosa",
"pulse": "Polso",
"bodyFat": "Massa grassa",
"sleep": "Sonno",
"steps": "Passi",
"vo2Max": "VO₂ max",
"vo2MaxUnit": "mL/(kg·min)",
"bpInTarget": "PA nel range obiettivo",
"weightShort": "Peso",
"bloodPressureSysShort": "PA (Sys)",
"bloodPressureDiaShort": "PA (Dia)",
"pulseShort": "Polso",
"bodyFatShort": "GC",
"moodShort": "Umore",
"sleepShort": "Sonno",
"stepsShort": "Passi",
"vo2MaxShort": "VO₂ max",
"bpInTargetShort": "PA-target",
"medications": "Farmaci",
"quickAddMeasurement": "Registra misurazione",
"quickAddMood": "Registra umore",
"quickAddMedicationIntake": "Registra assunzione",
"medicationIntakeQuickAdd": {
"sheetTitle": "Registra assunzione del farmaco",
"sheetDescription": "Registra dose, orario e farmaco con pochi tap.",
"medicationLabel": "Farmaco",
"medicationPlaceholder": "Seleziona un farmaco",
"doseLabel": "Dose",
"dosePlaceholder": "es. 5 mg",
"doseHint": "Al momento viene registrata la dose standard. Le dosi variabili arriveranno in una prossima versione.",
"timeLabel": "Orario di assunzione",
"saveError": "Impossibile salvare l’assunzione.",
"emptyTitle": "Ancora nessun farmaco",
"emptyDescription": "Crea prima un farmaco con un orario, poi torna qui per registrarne l’assunzione.",
"emptyCta": "Aggiungi farmaco"
},
"compliance7d": "Aderenza (7 giorni)",
"mood": "Umore",
"customizeTitle": "Layout della dashboard",
"layoutReset": "Ripristina i valori predefiniti",
"layoutSaveSuccess": "Layout della dashboard salvato",
"layoutSaveError": "Impossibile salvare il layout",
"layoutResetSuccess": "Layout predefinito ripristinato",
"layoutUsingDefaults": "Layout predefinito attivo",
"layoutCustomized": "Layout personalizzato attivo",
"moveUp": "Sposta su",
"moveDown": "Sposta giù",
"layoutTileColumn": "Tile",
"layoutChartColumn": "Grafico",
"dragHandle": "Trascina per riordinare",
"dragHandleHint": "Trascina la maniglia per riordinare questo widget. Puoi anche usare i pulsanti freccia Su e Giù, oppure mettere a fuoco la maniglia e premere Spazio e i tasti freccia.",
"emptyTitle": "La tua dashboard è vuota",
"emptyDescription": "Registra la prima misurazione o un umore. Tile e grafici appaiono automaticamente non appena ci sono dati.",
"emptyAddMeasurement": "Registra la prima misurazione",
"staleHint": "Ultimo valore {count} g fa",
"staleHintWeeksOne": "Ultimo valore 1 settimana fa",
"staleHintWeeksOther": "Ultimo valore {count} settimane fa",
"staleHintMonthsOne": "Ultimo valore 1 mese fa",
"staleHintMonthsOther": "Ultimo valore {count} mesi fa",
"coachCta": "Chiedi al coach",
"recentWorkouts": {
"title": "Allenamenti recenti",
"viewAll": "Vedi tutti",
"loading": "Caricamento allenamenti…",
"empty": {
"title": "Nessun allenamento",
"cta": "Apri l'app Salute di Apple sull'iPhone per sincronizzare gli allenamenti."
}
},
"metric": {
"title": {
"weight": "Peso",
"bloodPressure": "Pressione arteriosa",
"pulse": "Polso",
"bodyFat": "Massa grassa",
"glucose": "Glicemia",
"sleep": "Sonno",
"steps": "Passi",
"totalBodyWater": "Acqua corporea totale",
"boneMass": "Massa ossea",
"oxygenSaturation": "Saturazione di ossigeno"
},
"unit": {
"weight": "kg",
"bloodPressure": "mmHg",
"pulse": "bpm",
"bodyFat": "%",
"glucose": "mg/dL",
"sleep": "h",
"steps": "passi",
"totalBodyWater": "kg",
"boneMass": "kg",
"oxygenSaturation": "%"
}
}
},
"measurements": {
"title": "Misurazioni",
"subtitle": "Peso, pressione arteriosa, pulsazioni e altro",
"addMeasurement": "Aggiungi",
"editMeasurement": "Modifica misurazione",
"type": "Tipo",
"value": "Valore",
"date": "Data",
"source": "Sorgente",
"notes": "Note",
"typeWeight": "Peso",
"typeBloodPressure": "Pressione arteriosa",
"typeBpSys": "Sis",
"typeBpDia": "Dia",
"typePulse": "Polso",
"typeBodyFat": "Massa grassa",
"typeSleep": "Sonno",
"typeSteps": "Passi",
"typeBloodGlucose": "Glicemia",
"typeTotalBodyWater": "Acqua corporea totale",
"typeBoneMass": "Massa ossea",
"typeOxygenSaturation": "Saturazione di ossigeno",
"typeHeartRateVariability": "Variabilità della frequenza cardiaca",
"typeRestingHeartRate": "Frequenza cardiaca a riposo",
"typeActiveEnergyBurned": "Energia attiva",
"typeFlightsClimbed": "Piani saliti",
"typeWalkingRunningDistance": "Distanza a piedi e di corsa",
"typeVo2Max": "VO₂ max",
"typeBodyTemperature": "Temperatura corporea",
"typeFatFreeMass": "Massa magra",
"typeFatMass": "Massa grassa",
"typeMuscleMass": "Massa muscolare",
"typeSkinTemperature": "Temperatura cutanea",
"typePulseWaveVelocity": "Velocità dell’onda di polso",
"typeVascularAge": "Età vascolare",
"typeVisceralFat": "Grasso viscerale",
"typeAudioExposureEnv": "Esposizione al rumore (ambiente)",
"typeAudioExposureHeadphone": "Esposizione al rumore (cuffie)",
"typeTimeInDaylight": "Tempo alla luce del giorno",
"typeWalkingSteadiness": "Stabilità nel cammino",
"typeAudioExposureEvent": "Evento di ascolto forte",
"typeRespiratoryRate": "Frequenza respiratoria",
"typeBodyMassIndex": "Indice di massa corporea",
"typeLeanBodyMass": "Massa magra",
"typeWalkingHeartRateAverage": "Frequenza cardiaca a passo (media)",
"typeWalkingAsymmetry": "Asimmetria del cammino",
"typeWalkingDoubleSupport": "Doppio appoggio nel cammino",
"typeWalkingStepLength": "Lunghezza del passo",
"typeWalkingSpeed": "Velocità del cammino",
"glucoseContext": "Contesto",
"glucoseContextFasting": "A digiuno (≥8 h senza cibo)",
"glucoseContextPostprandial": "Postprandiale (2 h dopo il pasto)",
"glucoseContextRandom": "Qualsiasi / senza contesto",
"glucoseContextBedtime": "Prima di coricarsi",
"unitHours": "Ore",
"unitSteps": "Passi",
"sourceManual": "Manuale",
"sourceWithings": "Withings",
"sourceImport": "Importa",
"sourceAppleHealth": "Apple Health",
"systolicLabel": "Sistolica (mmHg)",
"diastolicLabel": "Diastolica (mmHg)",
"pulseLabel": "Pulsazioni (bpm)",
"valueWithUnit": "Valore ({unit})",
"timestamp": "Ora",
"notesPlaceholder": "es. dopo il pasto",
"formReset": "Reimposta modulo",
"saveError": "Errore durante il salvataggio",
"duplicateTimestamp": "Esiste già una misurazione di questo tipo a questa marca temporale.",
"deleteError": "Errore durante l’eliminazione",
"invalidValue": "Inserisci un valore valido.",
"invalidTimestamp": "Scegli una data e un’ora valide.",
"loginRequired": "Accedi per vedere le misurazioni.",
"allTypes": "Tutti i tipi",
"filterByType": "Filtra per tipo",
"measurementCount": "{count} misurazioni",
"emptyTitle": "Ancora nessuna misurazione",
"emptyDescription": "Registra peso, pressione, pulsazioni o altri valori per individuare i trend.",
"emptyFilteredTitle": "Nessuna misurazione corrisponde al filtro",
"emptyFilteredDescription": "Scegli un altro tipo o rimuovi il filtro per vedere tutte le misurazioni.",
"emptyAddFirst": "Registra la prima misurazione",
"emptyResetFilter": "Mostra tutti i tipi",
"comment": "Commento",
"actions": "Azioni",
"deleteConfirmTitle": "Eliminare la misurazione?",
"deleteConfirmDescription": "Questa misurazione sarà eliminata in modo definitivo.",
"pageInfo": "Pagina {page} di {total}",
"previousPage": "Pagina precedente",
"nextPage": "Pagina successiva",
"dailyTotalCaption": "({count} campioni)",
"expandDay": "Mostra i campioni di questa giornata",
"collapseDay": "Nascondi i campioni di questa giornata",
"loadError": "Impossibile caricare le misurazioni."
},
"mood": {
"title": "Umore",
"subtitle": "Andamento e voci dell’umore",
"addEntry": "Aggiungi",
"editEntry": "Modifica voce",
"moodLevel": "Umore",
"tags": "Tag",
"tagsPlaceholder": "es. sport, lavoro, famiglia",
"tagsHelp": "Separa con virgole",
"timestamp": "Ora",
"date": "Data",
"source": "Sorgente",
"levelSuperGut": "Ottimo",
"levelGut": "Bene",
"levelOkay": "Discreto",
"levelSchlecht": "Male",
"levelLausig": "Pessimo",
"sourceMoodlog": "moodLog",
"allMoods": "Tutti gli umori",
"entryCount": "{count} voci",
"emptyTitle": "Ancora nessuna voce di umore",
"emptyDescription": "Annota come ti senti oggi per individuare pattern nel tempo.",
"emptyFilteredTitle": "Nessuna voce corrisponde al filtro",
"emptyFilteredDescription": "Scegli un altro livello o rimuovi il filtro per vedere tutte le voci.",
"emptyAddFirst": "Registra il primo umore",
"emptyResetFilter": "Mostra tutti gli umori",
"actions": "Azioni",
"formReset": "Reimposta modulo",
"saveError": "Errore durante il salvataggio",
"deleteError": "Errore durante l’eliminazione",
"invalidTimestamp": "Scegli una data e un’ora valide.",
"deleteConfirmTitle": "Eliminare la voce?",
"deleteConfirmDescription": "Questa voce dell’umore sarà eliminata in modo definitivo.",
"pageInfo": "Pagina {page} di {total}",
"loginRequired": "Accedi per vedere le voci dell’umore.",
"note": "Nota",
"notePlaceholder": "Aggiungi una nota su come ti senti…",
"tagPicker": "Etichette",
"tagCategory": {
"feelings": "Emozioni",
"sleep": "Sonno",
"health": "Salute",
"social": "Sociale",
"work": "Lavoro"
},
"tag": {
"happy": "felice",
"excited": "entusiasta",
"grateful": "grato",
"relaxed": "rilassato",
"content": "soddisfatto",
"tired": "stanco",
"unsure": "incerto",
"bored": "annoiato",
"tense": "teso",
"angry": "arrabbiato",
"stressed": "stressato",
"sad": "triste",
"sleptWell": "dormito bene",
"sleptOk": "dormito così così",
"sleptPoorly": "dormito male",
"earlyNight": "a letto presto",
"workedOut": "allenato",
"ateWell": "mangiato bene",
"hydrated": "bevuto acqua",
"walked": "camminato",
"alcohol": "alcol",
"family": "famiglia",
"friends": "amici",
"party": "festa",
"alone": "da solo",
"productive": "produttivo",
"overtime": "straordinari",
"dayOff": "giorno libero",
"travel": "viaggio",
"sickDay": "giorno di malattia"
}
},
"medications": {
"title": "Farmaci",
"subtitle": "Farmaci, orari e assunzioni",
"loginRequired": "Accedi per gestire i farmaci.",
"addMedication": "Aggiungi",
"editMedication": "Modifica farmaco",
"newMedication": "Nuovo farmaco",
"firstMedication": "Aggiungi il primo farmaco",
"emptyTitle": "Ancora nessun farmaco",
"emptyDescription": "Crea farmaci, dosi e fasce orarie per registrare l’aderenza.",
"loadFailed": "Impossibile caricare i farmaci",
"retryLoad": "Riprova",
"name": "Nome",
"dose": "Dose",
"scheduleFrom": "Da",
"scheduleTo": "A",
"scheduleLabel": "Etichetta",
"scheduleDays": "Giorni",
"scheduleDaily": "Quotidiano",
"inactive": "In pausa",
"intakeHistory": "Cronologia assunzioni",
"openDetailPage": "Open medication detail page",
"deleteConfirm": "Eliminare il farmaco?",
"compliance": "Aderenza",
"importIntakes": "Import intakes",
"importDescription": "Paste a JSON array with intake data. Expected format:",
"importUploadFile": "Upload JSON file",
"importPaste": "Paste JSON here...",
"importSelected": "Selected: {name}",
"importFileLoaded": "File \"{name}\" loaded",
"importInvalidJson": "File does not contain valid JSON",
"importNoArray": "No array found",
"importResult": "{imported} intakes imported",
"importDuplicatesSkipped": "{count} duplicates skipped",
"importInvalidSkipped": "{count} invalid entries skipped",
"importFailed": "Import failed",
"importInvalidFormat": "Invalid JSON format",
"apiEndpointTitle": "API Endpoint: {name}",
"apiEndpointDescription": "Use this endpoint to record intakes via API (e.g., iPhone Shortcut or cron job).",
"apiEndpointActive": "API endpoint active",
"apiEndpointActivated": "API endpoint activated",
"apiEndpointDeactivated": "API endpoint deactivated",
"apiTokenCount": "Active ({count} tokens)",
"apiToken": "API Token",
"apiTokenActiveHint": "Endpoint is active. Existing tokens remain valid but cannot be shown in plain text again.",
"apiTokenActivateHint": "Activate the endpoint to create a new token.",
"apiTokenOnceHint": "The token is only shown in plain text once at creation.",
"requestExample": "Request example",
"statusLoadFailed": "Could not load status",
"changeFailed": "Change failed",
"categoryBloodPressure": "Pressione arteriosa",
"categoryVitamin": "Vitamine",
"categoryThyroid": "Tiroide",
"categoryHormone": "Ormoni",
"categorySupplement": "Integratore",
"categoryPainRelief": "Antidolorifico",
"categoryAllergy": "Allergia",
"categoryDigestive": "Digestivo",
"categorySkin": "Cura della pelle",
"categorySleepAid": "Per dormire",
"categoryDiabetes": "Diabetes",
"categoryAntibiotic": "Antibiotic",
"categoryOther": "Altro",
"daysSun": "Dom",
"daysMon": "Lun",
"daysTue": "Mar",
"daysWed": "Mer",
"daysThu": "Gio",
"daysFri": "Ven",
"daysSat": "Sab",
"back": "Indietro",
"today": "Oggi",
"yesterday": "Ieri",
"tomorrow": "Domani",
"withoutNotification": "Senza notifica",
"pausedSince": "In pausa dal",
"takeNow": "Assumi ora",
"overdue": "In ritardo",
"veryOverdue": "Molto in ritardo",
"compliance7d": "Aderenza 7 giorni",
"compliance30d": "Aderenza 30 giorni",
"complianceWindow": "Aderenza {days} giorni",
"lastIntake": "Ultima assunzione:",
"nextIntake": "Prossima assunzione:",
"dayStreak": "giorni di serie",
"taken": "Assunta",
"skipped": "Saltata",
"intakeToastTaken": "{name} registrata come assunta",
"intakeToastSkipped": "{name} saltata",
"weekdaySunday": "Domenica",
"weekdayMonday": "Lunedì",
"weekdayTuesday": "Martedì",
"weekdayWednesday": "Mercoledì",
"weekdayThursday": "Giovedì",
"weekdayFriday": "Venerdì",
"weekdaySaturday": "Sabato",
"weekdaySundayPlural": "Domeniche",
"weekdayMondayPlural": "Lunedì",
"weekdayTuesdayPlural": "Martedì",
"weekdayWednesdayPlural": "Mercoledì",
"weekdayThursdayPlural": "Giovedì",
"weekdayFridayPlural": "Venerdì",
"weekdaySaturdayPlural": "Sabati",
"formType": "Tipo",
"formDose": "Dose",
"formUnit": "Unità",
"formSchedule": "Fascia oraria",
"formTreatmentClass": "Classe di trattamento",
"formTreatmentClassHelp": "Scegli \"Iniezione GLP-1\" per iniezioni settimanali come Mounjaro, Ozempic, Wegovy, Zepbound. Attiva la card del corpo e il diario GLP-1.",
"treatmentClassGeneric": "Farmaco standard",
"treatmentClassGlp1": "Iniezione GLP-1",
"glp1WeeklyPresetTitle": "Una volta a settimana, di…",
"glp1WeeklyPresetHelp": "La maggior parte degli agonisti del recettore GLP-1 viene iniettata una volta a settimana. Tocca un giorno per impostare il ritmo.",
"glp1WeeklyPresetSuggest": "Riprendi l’ultimo giorno scelto",
"glp1DosesPerUnit": "Dosi per penna / fiala",
"glp1DosesPerUnitPlaceholder": "es. 4 per una penna Mounjaro KwikPen",
"glp1DosesPerUnitHelp": "Opzionale — Mounjaro KwikPen = 4, Ozempic 0,25/0,5 mg = 4, Wegovy penna monouso = 1. Lascia vuoto se non vuoi monitorare le dosi per penna.",
"glp1LastInjection": "Ultimo appuntamento: {label}",
"glp1LastInjectionWithSite": "Ultimo appuntamento: {label} · {site}",
"glp1NextInjectionDays": "Prossimo: {label} (tra {days} giorni)",
"glp1NextInjectionToday": "Prossimo appuntamento: oggi",
"glp1NextInjectionTomorrow": "Prossimo appuntamento: domani",
"glp1RotationLast": "Ultima sede: {site}",
"glp1RotationSuggested": "Suggerita: {site}",
"glp1LogSideEffect": "Registra effetto collaterale",
"sideEffects": {
"section": "Effetti collaterali",
"addCta": "Registra",
"sheetTitle": "Registra un effetto collaterale",
"categoryLabel": "Categoria",
"entryLabel": "Sintomo",
"severityLabel": "Gravità",
"severity": {
"mild": "Lieve",
"moderate": "Moderato",
"significant": "Marcato",
"severe": "Grave",
"verySevere": "Molto grave"
},
"notesLabel": "Note (facoltativo)",
"notesPlaceholder": "Qualcosa che vale la pena ricordare, max 280 caratteri",
"submitCta": "Salva",
"cancelCta": "Annulla",
"emptyState": "Nessun effetto collaterale registrato. Tracciarli può aiutare il medico e far emergere schemi nel tempo.",
"recentTitle": "Ultimi 30 giorni",
"loading": "Caricamento…",
"deleteCta": "Elimina",
"deleteConfirm": "Eliminare questa voce?",
"errorSeverity": "La gravità deve essere tra 1 e 5",
"errorEntry": "Scegli un sintomo",
"categories": {
"gi": "Gastrointestinale",
"metabolic": "Metabolico",
"injectionSite": "Sito di iniezione",
"cognitive": "Cognitivo",
"glp1Specific": "Specifico GLP-1"
},
"entries": {
"nausea": "Nausea",
"vomiting": "Vomito",
"diarrhea": "Diarrea",
"constipation": "Stitichezza",
"abdominalPain": "Dolore addominale",
"hypoglycemiaSymptoms": "Sintomi da ipoglicemia",
"dehydration": "Disidratazione",
"anorexia": "Perdita di appetito",
"electrolyteFatigue": "Stanchezza da squilibrio elettrolitico",
"injectionRedness": "Arrossamento al sito di iniezione",
"injectionSwelling": "Gonfiore al sito di iniezione",
"injectionBruising": "Livido al sito di iniezione",
"injectionInduration": "Indurimento al sito di iniezione",
"brainFog": "Annebbiamento mentale",
"dizziness": "Vertigini",
"lowMood": "Umore basso",
"lowEnergy": "Poca energia",
"earlySatiety": "Sazietà precoce",
"gastroparesisLike": "Svuotamento gastrico lento",
"dysgeusia": "Alterazione del gusto",
"gallbladderDiscomfort": "Fastidio alla cistifellea"
}
},
"scheduling": {
"naturalLanguage": {
"title": "Descrivi il farmaco",
"description": "Descrivi il farmaco con parole tue e il modulo verrà precompilato per te.",
"placeholder": "es. Mounjaro 5 mg settimanale il mercoledì mattina a partire da lunedì prossimo",
"submit": "Estrai",
"submitBusy": "Estrazione in corso…",
"cancel": "Annulla",
"examples": {
"label": "Prova uno di questi esempi",
"weekly": "Mounjaro 5 mg settimanale il mercoledì mattina",
"daily": "Ibuprofene 200 mg ogni giorno, 3 volte al giorno",
"rolling": "Metotrexato 7,5 mg ogni 7 giorni dall'ultima iniezione"
},
"error": {
"empty": "Scrivi prima una descrizione.",
"tooLong": "Mantieni la descrizione entro 2000 caratteri.",
"rateLimit": "Troppe richieste — attendi un momento e riprova.",
"noProvider": "Nessun provider IA configurato — configurane uno in Impostazioni.",
"budget": "Budget IA giornaliero raggiunto — riprova domani.",
"network": "Impossibile contattare il provider IA — riprova."
}
},
"cadence": {
"section": "Cadence",
"label": "How often",
"kind": {
"daily": "Every day",
"weekdays": "Certain days of the week",
"everyNWeeks": "Every N weeks on certain days",
"monthly": "Monthly on a specific day",
"everyNMonths": "Every N months on a specific day",
"yearly": "Once a year",
"rolling": "Every N days from when I last took it (flexible)",
"rollingExplainer": "Counts from your last logged intake — pauses if you skip a dose.",
"oneShot": "One-time dose"
},
"weekdays": {
"label": "Days of the week",
"short": {
"mo": "Mo",
"tu": "Tu",
"we": "We",
"th": "Th",
"fr": "Fr",
"sa": "Sa",
"su": "Su"
},
"long": {
"mo": "Monday",
"tu": "Tuesday",
"we": "Wednesday",
"th": "Thursday",
"fr": "Friday",
"sa": "Saturday",
"su": "Sunday"
}
},
"intervalWeeks": {
"suffix": "weeks"
},
"dayOfMonth": {
"label": "Day"
},
"intervalMonths": {
"suffix": "months",
"dayOnLabel": "on day"
},
"yearly": {
"date": {
"label": "Date"
}
},
"rollingDays": {
"suffix": "days"
}
},
"timesOfDay": {
"section": "Times of day",
"label": "Times of day",
"empty": {
"cta": "Add the first time."
},
"add": "Add time",
"remove": "Remove",
"presets": {
"morning": "Morning",
"noon": "Noon",
"evening": "Evening",
"night": "Night"
},
"max": {
"reached": "Maximum reached — remove a time before adding another."
}
},
"courseWindow": {
"section": "Course window",
"startsOn": {
"label": "Starts on"
},
"endsOn": {
"label": "Ends on"
},
"noEndDate": "No end date",
"oneShotCaption": "(one-time dose)",
"invalidRange": "End date must be on or after the start date."
}
},
"wizard": {
"header": {
"stepOf": "Step {current} of {total}",
"createTitle": "New medication",
"editTitle": "Edit {name}"
},
"nav": {
"back": "Back",
"next": "Next",
"save": "Save",
"saveEdit": "Save changes",
"nextHint": "Avanti: {step}",
"reviewHint": "Avanti: Salva",
"jumpFirst": "Vai al primo passaggio",
"jumpLast": "Vai a revisione e salvataggio"
},
"nl": {
"button": "Describe"
},
"steps": {
"step1": {
"title": "What's the medication called?",
"subline": "Exactly as it appears on the box.",
"label": "Name",
"placeholder": "e.g. Ramipril",
"short": "Nome"
},
"step2": {
"title": "What kind of medication is it?",
"subline": "We use this for the right templates and analytics.",
"short": "Tipo"
},
"step3": {
"title": "What's the dose?",
"subline": "A tablet, a puff, a drop — depending on the form.",
"amountLabel": "Amount",
"amountPlaceholder": "e.g. 5",
"unitLabel": "Unit",
"unit": {
"mg": "mg",
"ml": "ml",
"iu": "IU",
"mcg": "µg",
"g": "g",
"tablets": "tablet(s)",
"capsules": "capsule(s)",
"drops": "drops",
"puffs": "puff",
"sprays": "spray",
"pieces": "pieces",
"other": "other"
},
"deliveryFormLabel": "Via",
"deliveryForm": {
"ORAL": "Orale",
"INJECTION": "Iniezione",
"OTHER": "Altro"
},
"dosesPerUnitLabel": "Dosi per unità",
"dosesPerUnitPlaceholder": "es. 4",
"dosesPerUnitHint": "Dosi per penna / fiala — lascia vuoto per non tracciare le scorte.",
"injectionSiteToggle": "Rotazione del sito di iniezione",
"injectionSiteHint": "Guida alla rotazione facoltativa. Il sito di ogni dose viene registrato al momento della registrazione dell'assunzione.",
"short": "Dose"
},
"step4": {
"title": "Over what period are you taking it?",
"subline": "A start date is enough for today. You can add an end date later.",
"short": "Quando"
},
"step5": {
"title": "How often do you take it?",
"subline": "Pick the cadence — the details follow on the next step.",
"short": "Frequenza"
},
"step6": {
"title": "What does that look like in detail?",
"subline": "Set weekdays, intervals, or the day of the month.",
"intervalWeeks": {
"label": "Every",
"suffix": "weeks"
},
"dayOfMonth": {
"label": "On",
"suffix": "day of the month"
},
"rollingDays": {
"label": "Every",
"suffix": "days from the last intake"
},
"short": "Dettaglio"
},
"step7": {
"title": "When do you take it?",
"subline": "One or more times of day — reminders follow this list.",
"presetsLabel": "Time-of-day presets",
"presets": {
"morning": "Morning",
"noon": "Noon",
"evening": "Evening",
"night": "Night"
},
"short": "Orari"
},
"step8": {
"title": "All done — should HealthLog remind you?",
"subline": "Review everything below before you save.",
"remindersLabel": "Reminders on",
"remindersDescription": "Push, Telegram or ntfy — based on your settings.",
"multiScheduleNote": "This medication has multiple schedules. The detailed editor returns in a later release.",
"short": "Fatto"
}
},
"classRow": {
"bloodPressure": "Blood pressure",
"diabetes": "Diabetes",
"hormone": "Hormones",
"glp1": "GLP-1 injection",
"painRelief": "Pain",
"allergy": "Allergy",
"vitamin": "Vitamins",
"supplement": "Supplement",
"antibiotic": "Antibiotic",
"other": "Other"
},
"cadence": {
"daily": {
"label": "Daily",
"description": "Every day at the same time."
},
"weekdays": {
"label": "Specific weekdays",
"description": "E.g. Monday, Wednesday, Friday."
},
"everyNWeeks": {
"label": "Every few weeks",
"description": "E.g. every 2 weeks on Thursdays (GLP-1, biologics)."
},
"monthly": {
"label": "Monthly",
"description": "On a fixed day each month (e.g. always the 1st)."
},
"rolling": {
"label": "Flexible from last dose",
"description": "Leave the next dose open. When you tap 'taken', the counter starts again from that moment."
},
"oneShot": {
"label": "Single dose",
"description": "One administration, e.g. a vaccine or an antibiotic course."
}
},
"summary": {
"title": "Summary",
"cadence": {
"daily": "Every day",
"weekdays": "On selected days of the week",
"biweekly": "Every two weeks",
"monthly": "Monthly",
"quarterly": "Every three months",
"yearly": "Once a year",
"rolling": "Every {n} days from your last intake",
"oneShot": "A single dose",
"everyNWeeks": "Every {n} weeks",
"everyNMonths": "Every {n} months"
},
"weekdaysDetail": ", on {days}",
"dayOfMonthDetail": ", on day {day}.",
"times": "at {times}",
"startsOn": "Starts: {date}",
"endsOn": "Ends: {date}",
"noEndDate": "No end date"
},
"compose": {
"scheduleIndex": "Schedule {n} of {total}",
"list": {
"add": "Add another schedule",
"edit": "Edit",
"remove": "Remove",
"removeDisabled": "At least one schedule is required.",
"empty": "No schedule yet."
}
},
"errors": {
"submitFailed": "Could not save the medication — please retry."
}
},
"doseStrength": {
"title": "Dose nel tempo",
"axisLabel": "Dose registrata ({unit})",
"tooltipLabel": "Dose",
"currentDose": "Dose attuale: {dose} {unit}",
"noCurrentDose": "Nessuna dose ancora registrata.",
"empty": "Nessuna cronologia di titolazione. Registra un cambio di dose per vedere la curva della dose."
},
"injectionSiteBodyOutlineAriaLabel": "Sagoma del corpo",
"injectionSitePickerAriaLabel": "Selettore del sito di iniezione",
"injectionSiteRecommendedAriaLabel": "{site} — prossimo sito consigliato",
"siteAbdomenLeft": "Addome, basso a sinistra",
"siteAbdomenRight": "Addome, basso a destra",
"siteAbdomenUpperLeft": "Addome, alto a sinistra",
"siteAbdomenUpperRight": "Addome, alto a destra",
"siteThighLeft": "Coscia sinistra",
"siteThighRight": "Coscia destra",
"siteUpperArmLeft": "Braccio sinistro",
"siteUpperArmRight": "Braccio destro",
"sideEffectTagsHelp": "Tocca un chip per aggiungerlo ai tag dell’umore.",
"sideEffectTagNausea": "Nausea",
"sideEffectTagConstipation": "Stitichezza",
"sideEffectTagDiarrhea": "Diarrea",
"sideEffectTagFatigue": "Affaticamento",
"sideEffectTagAppetiteLoss": "Perdita di appetito",
"sideEffectTagHeartburn": "Bruciore di stomaco",
"sideEffectTagHeadache": "Mal di testa",
"newSchedule": "Nuova fascia oraria",
"removeSchedule": "Rimuovi fascia oraria",
"advancedEditing": "Modifica avanzata",
"advancedEditingHide": "Nascondi modifica avanzata",
"scheduleInterval": "Intervallo",
"scheduleEveryWeek": "ogni settimana",
"scheduleEveryNWeeks": "ogni {n} settimane",
"scheduleIntervalPrefix": "Intervallo:",
"nextSchedulePrefix": "Prossima fascia:",
"nextScheduleDaily": "quotidiano",
"importIntakesAction": "Importa assunzioni",
"apiEndpointAction": "Endpoint API",
"pause": "Metti in pausa",
"activate": "Attiva",
"disableNotifications": "Disattiva le notifiche",
"enableNotifications": "Attiva le notifiche",
"purgeRecords": "Elimina i record",
"formReset": "Reimposta modulo",
"createMedication": "Crea farmaco",
"deleteConfirmDescription": "Questo farmaco e tutte le sue assunzioni saranno eliminati in modo definitivo.",
"purgeConfirmTitle": "Eliminare tutte le assunzioni?",
"purgeConfirmDescription": "Tutte le assunzioni registrate per questo farmaco saranno eliminate in modo definitivo.",
"saveError": "Errore durante il salvataggio",
"deleteError": "Errore durante l’eliminazione",
"purgeError": "Errore durante l’eliminazione dei record",
"invalidTimestamp": "Scegli una data e un’ora valide.",
"noIntakesYet": "Ancora nessuna assunzione registrata.",
"actions": "Azioni",
"pageInfo": "Pagina {page} di {total}",
"previousPage": "Pagina precedente",
"nextPage": "Pagina successiva",
"loginRequiredIntakes": "Accedi per vedere la cronologia delle assunzioni.",
"phaseConfig": "Fasi di promemoria",
"phaseConfigDescription": "Configura i momenti dei promemoria.",
"phaseGreen": "Verde",
"phaseYellow": "Giallo",
"phaseOrange": "Arancione",
"phaseRed": "Rosso",
"phaseMinutes": "Min",
"phasePercent": "%",
"phaseBeforeEnd": "prima della fine",
"phaseAfterEnd": "dopo la fine",
"phaseResetDefaults": "Ripristina predefiniti",
"phaseSaved": "Fasi di promemoria salvate",
"phaseReset": "Ripristinate ai valori predefiniti",
"sourceWeb": "Web",
"sourceApi": "App iOS",
"sourceReminder": "Promemoria",
"sourceImport": "Importazione",
"intakeSourceVia": "tramite {origin}",
"intakeHistoryEmptyTitle": "Ancora nessuna assunzione",
"intakeHistoryEmptyDescription": "Appena registrerai un’assunzione, comparirà qui con orario e sorgente.",
"intakeHistoryEmptyAction": "Registra un’assunzione",
"intakeHistoryColTaken": "Assunta",
"intakeHistoryColScheduled": "Programmata",
"intakeHistoryColStatus": "Stato",
"intakeHistoryColSource": "Sorgente",
"intakeHistoryStatusTaken": "Assunta",
"intakeHistoryStatusSkipped": "Saltata",
"intakeHistorySortByTaken": "Ordina per ora di assunzione",
"intakeHistorySortByScheduled": "Ordina per orario programmato",
"intakeHistoryPageInfo": "Pagina {page} di {total} · {count} voci",
"intakeHistoryPrev": "Precedente",
"intakeHistoryNext": "Successiva",
"unitDrops": "gocce",
"unitTablets": "compresse",
"unitCapsules": "capsule",
"unitPieces": "pezzi",
"namePlaceholder": "es. Ramipril",
"dosePlaceholder": "es. 5 mg",
"labelPlaceholder": "es. Al mattino",
"defaultDose": "Dose standard",
"dayDeactivate": "Disattiva {day}",
"dayActivate": "Attiva {day}",
"glp1": {
"drug": {
"tirzepatide": {
"name": "Tirzepatide"
},
"semaglutide": {
"name": "Semaglutide"
},
"liraglutide": {
"name": "Liraglutide"
},
"dulaglutide": {
"name": "Dulaglutide"
},
"exenatide": {
"name": "Exenatide"
}
}
},
"researchMode": {
"dialog": {
"title": "Attiva la modalità Ricerca",
"intro": "La modalità Ricerca aggiunge un grafico stimato del livello del farmaco alla tua pagina GLP-1. Leggi il limite qui sotto prima di attivarla: il grafico è uno strumento di apprendimento, mai una misura, mai un consiglio medico.",
"whatItIsHeader": "Cosa è",
"whatItIs": "Una curva a dente di sega che simula la sovrapposizione delle dosi registrate nel tempo, usando il modello Bateman a un compartimento con i parametri di assorbimento e di emivita pubblicati nell'EPAR EMA di ogni agonista GLP-1 approvato. L'asse verticale è privo di unità ed etichette. La forma, non il numero, è ciò che il grafico mostra.",
"whatItIsntHeader": "Cosa non è",
"whatItIsnt": "Non è un livello ematico. Non è una misura. Non è una previsione della risposta reale del tuo corpo. Non è una base per alcuna decisione di dose, di tempistica o di escalation. Per qualunque cosa riguardi come assumi il tuo farmaco, parla con il medico che te lo prescrive.",
"whyEstimateHeader": "Perché è una stima",
"whyEstimate": "La farmacocinetica di popolazione descrive il paziente tipico. La variabilità individuale è ampia: il modello Schneck/Urva 2024 del tirzepatide riporta circa il 22 % di variabilità interindividuale sull'assorbimento e circa il 49 % sul volume di distribuzione. Una curva da manuale non può catturare il tuo peso, la tua funzione renale, la tua tecnica di iniezione o la precisione degli orari. Leggi la curva come il ritmo del tuo dosaggio, non come il tuo livello.",
"mdrBoundaryHeader": "Limite regolatorio",
"mdrBoundary": "HealthLog mostra dati regolatori pubblici e le tue registrazioni. L'app non predice, non diagnostica, non tratta e non raccomanda alcuna terapia. Il Regolamento UE 2017/745 (Medical Device Regulation, MDR) e il documento di orientamento MDCG 2021-24 tracciano la linea sul software che interpreta dati per scopi medici: questa curva rimane decisamente sul lato educativo di quella linea. Se in qualunque momento ti sembra spingere verso una decisione clinica, chiudila.",
"citationsHeader": "Fonti",
"citations": "European Public Assessment Reports EMA per Mounjaro, Ozempic, Wegovy, Saxenda, Trulicity, Byetta e Bydureon (Sezione 5.2). Schneck K, Urva S. Population pharmacokinetics of the GIP/GLP receptor agonist tirzepatide. CPT Pharmacometrics Syst Pharmacol 2024;13(3):494-503 (DOI 10.1002/psp4.13099).",
"versionLine": "Versione del disclaimer: {version}",
"acknowledgeCta": "Ho capito — attiva",
"cancelCta": "Annulla",
"successToast": "Modalità Ricerca attivata. La curva del livello del farmaco è ora visibile sulla tua pagina GLP-1.",
"errorToast": "Impossibile attivare la modalità Ricerca. Riprova.",
"staleVersionToast": "Il disclaimer è stato aggiornato dal caricamento di questa pagina. Ricarica per leggere la versione attuale."
},
"chart": {
"title": "Livello stimato del farmaco",
"axisLabel": "Livello stimato (relativo)",
"emptyState": "Nessuna assunzione registrata.",
"emptyStateCta": "Registra una dose per vedere prendere forma la curva stimata.",
"estimateNote": "Stima educativa dalla farmacocinetica di popolazione pubblicata dall'EMA. Non è una misura.",
"unknownDrug": "{name} non è nel catalogo GLP-1 approvato dall'EMA, quindi HealthLog non può tracciare una curva di farmacocinetica di popolazione."
}
},
"detail": {
"status": {
"active": "Active",
"paused": "Paused",
"ended": "Ended"
},
"today": {
"groupLabel": "Today's dose",
"taken": "Taken",
"skipped": "Skipped",
"toastTaken": "Today's dose logged",
"toastSkipped": "Today's dose skipped",
"recordedTaken": "Taken today at {time}",
"recordedSkipped": "Skipped today at {time}",
"recordedOneShot": "One-shot dose taken at {time}",
"noneScheduled": "No dose scheduled for today.",
"pausedHint": "Paused — no reminder today.",
"error": "Could not log the dose."
},
"cadence": {
"oneShotOn": "One-time dose on {date}.",
"oneShotPending": "One-time dose pending."
},
"intake": {
"title": "Intake history",
"importButton": "Import",
"rowActions": {
"openMenu": "Open row actions",
"edit": "Edit",
"delete": "Delete"
},
"selection": {
"rowToggleLabel": "Select row"
},
"bulkDelete": {
"selectionCount": "{count} entries selected",
"deleteButton": "Delete selection",
"cancelButton": "Cancel",
"confirmTitle": "Delete the selected entries?",
"confirmBody": "{count} entries will be removed permanently. The medication itself stays.",
"confirmAction": "Delete",
"toast": "Selection deleted",
"failed": "Could not delete the selection."
},
"edit": {
"dialogTitle": "Edit intake",
"takenAtLabel": "Taken at",
"skippedLabel": "Skipped",
"noteLabel": "Note",
"save": "Save",
"cancel": "Cancel",
"savedToast": "Intake updated",
"failed": "Could not update the intake."
},
"deleteRow": {
"confirmTitle": "Delete this intake?",
"confirmBody": "The entry is removed permanently.",
"confirmAction": "Delete",
"toast": "Intake deleted",
"failed": "Could not delete the intake."
}
},
"notifications": {
"title": "Notifications",
"switchLabel": "Send a reminder when this dose is due",
"helperOn": "Reminders are on.",
"helperOff": "Reminders are off.",
"enabledToast": "Reminders on",
"disabledToast": "Reminders off",
"toggleFailed": "Could not change the reminder setting.",
"clientManagedChip": "Your iPhone manages reminders for this medication."
},
"settings": {
"title": "Settings",
"phases": {
"openButton": "Configure phases",
"requiresCourseWindow": "Phases are available once a course window is set."
},
"grace": {
"label": "Reminder window — applies to your primary schedule",
"primaryScheduleNote": "Multi-schedule medications keep their other schedules' default window.",
"unit": "minutes",
"saved": "Reminder window saved",
"failed": "Could not save the reminder window."
},
"codes": {
"label": "Codici clinici (ATC / RxNorm)",
"note": "Facoltativo. Usati nell'esportazione FHIR della cartella sanitaria. I codici vengono presi esattamente come inseriti — mai indovinati.",
"atcLabel": "ATC",
"rxNormLabel": "RxNorm",
"saved": "Codici clinici salvati",
"failed": "Impossibile salvare i codici clinici."
}
},
"zone": {
"title": "Manage & danger zone",
"pause": {
"title": "Pause",
"helper": "Pause reminders until you turn them back on. History stays intact.",
"pausedToast": "Reminders paused",
"resumedToast": "Reminders resumed",
"failed": "Could not change the paused state."
},
"end": {
"title": "End medication",
"helper": "Stop reminders and mark the medication as ended. History stays visible.",
"button": "End",
"dialogTitle": "End {name} — stop reminders, history stays visible",
"dialogBody": "No more reminders. Old entries remain in the timeline.",
"toast": "Medication ended",
"failed": "Could not end the medication."
},
"purge": {
"title": "Delete history",
"helper": "{count} intake events are stored for this medication.",
"button": "Delete history",
"dialogTitle": "Really delete the history?",
"dialogBody": "The {count} intake events will be removed permanently. The medication itself stays.",
"toast": "History deleted",
"failed": "Could not delete the history."
},
"delete": {
"title": "Delete medication",
"helper": "Removes the medication and every related record.",
"button": "Delete",
"dialogTitle": "Delete {name}?",
"dialogBody": "The medication, its schedules, intake history, API tokens, phase config and reminders will be removed permanently.",
"toast": "Medication deleted",
"failed": "Could not delete the medication."
}
},
"phases": {
"modeLabel": "{phase} mode",
"saveFailed": "Could not save the reminder phases."
},
"api": {
"caption": "Endpoint for \"{name}\"",
"copyUrl": "Copy URL",
"urlCopied": "URL copied",
"mintToken": "Mint token",
"mintAnotherToken": "Mint another token",
"mintFailed": "Could not mint a token.",
"copyFailed": "Could not copy.",
"tokenCopied": "Token copied",
"copyToken": "Copy token",
"mintedHint": "Copy this token now — it is shown only once."
},
"edit": {
"planOption": "Modifica piano",
"advancedOption": "Impostazioni avanzate"
},
"advanced": {
"title": "Impostazioni avanzate",
"group": {
"data": "Dati",
"reminders": "Promemoria",
"lifecycle": "Ciclo di vita",
"externalApi": "API esterna"
},
"dataPortability": {
"import": {
"title": "Importa assunzioni",
"helper": "Carica le assunzioni passate da un file JSON o da JSON incollato.",
"button": "Importa JSON"
},
"export": {
"title": "Esporta farmaco",
"helper": "Scarica questo farmaco come file CSV.",
"includeIntake": "Includi cronologia delle assunzioni",
"button": "Esporta CSV"
}
}
},
"header": {
"historyLabel": "Visualizza cronologia assunzioni",
"advancedLabel": "Impostazioni avanzate"
},
"history": {
"back": "Torna al farmaco",
"subtitle": "Cronologia completa delle assunzioni",
"plannedSuffix": "pianificato"
}
},
"logInjectionSiteTitle": "Registra il sito di iniezione",
"logInjectionSiteDescription": "Dove hai iniettato {name}? Facoltativo — puoi saltarlo.",
"logInjectionSiteSkip": "Salta",
"logInjectionSiteConfirm": "Salva il sito",
"logInjectionSiteNoneAvailable": "Nessun sito di iniezione disponibile: tutti i siti sono esclusi nelle tue impostazioni.",
"trackInjectionSitesToggle": "Registra i siti di iniezione",
"trackInjectionSitesHint": "Dopo l'assunzione di una dose, chiedi quale sito è stato usato e suggerisci la rotazione successiva.",
"allowedSitesLabel": "Siti consentiti",
"allowedSitesHint": "Lascia tutti selezionati per nessuna restrizione. I siti esclusi globalmente non vengono mai proposti."
},
"charts": {
"loadingLabel": "Caricamento del grafico…",
"loadingSlowHint": "Calcolo delle analisi — può richiedere un momento.",
"weight": "Peso",
"bloodPressure": "Pressione arteriosa",
"pulse": "Pulsazioni",
"bodyFat": "Massa grassa",
"sleep": "Sonno",
"steps": "Passi",
"hrv": "HRV",
"restingHeartRate": "FC a riposo",
"activeEnergy": "Energia attiva",
"flights": "Piani saliti",
"distance": "Distanza camminata + corsa",
"vo2Max": "VO₂ max",
"bodyTemperature": "Temperatura corporea",
"noData": "Nessun dato nel periodo selezionato",
"bucketWeekly": "Media settimanale",
"bucketMonthly": "Media mensile",
"points7Label": "7 pti",
"points7Title": "Ultimi 7 punti",
"points30Label": "30 pti",
"points30Title": "Ultimi 30 punti",
"points90Label": "90 pti",
"points90Title": "Ultimi 90 punti",
"pointsAllLabel": "Tutti",
"pointsAllTitle": "Tutti i punti disponibili",
"systolic": "Sistolica",
"diastolic": "Diastolica",
"bodyWater": "Acqua corporea",
"boneMass": "Massa ossea",
"spo2": "SpO₂",
"movingAverage7d": "Trend 7 giorni",
"avg7dShort": "7G",
"avg30dShort": "30G",
"trend7dShort": "Trend 7 giorni",
"trend": "Trend",
"perWeek": "/settimana",
"totalDelta": "Totale",
"colorGreen": "Verde:",
"colorOrange": "Arancione:",
"colorRed": "Rosso:",
"mood": "Umore",
"moodScore": "Punteggio umore",
"weekdays": {
"mon": "Lun",
"wed": "Mer",
"fri": "Ven",
"sun": "Dom"
},
"months": {
"jan": "Gen",
"feb": "Feb",
"mar": "Mar",
"apr": "Apr",
"may": "Mag",
"jun": "Giu",
"jul": "Lug",
"aug": "Ago",
"sep": "Set",
"oct": "Ott",
"nov": "Nov",
"dec": "Dic"
},
"heatmapOnTime": "in orario",
"heatmapLate": "in ritardo",
"heatmapVeryLate": "molto in ritardo",
"legendOnTime": "In orario",
"legendLate": "In ritardo",
"legendVeryLate": "Molto in ritardo",
"legendMissed": "Mancata",
"emptyStateTitle": "Registra altre misurazioni per vedere i trend",
"emptyStateDescription": "Registra almeno 3 voci per sbloccare la linea di tendenza.",
"needMoreDistinctDaysTitle": "Servono più giorni distinti",
"needMoreDistinctDaysDescription": "Registra in più giorni per sbloccare la linea di tendenza.",
"noDataInRangeTitle": "Nessun dato in questo intervallo",
"noDataInRangeDescription": "Nessuna misurazione rientra nell'intervallo selezionato. Cambia intervallo o registra una nuova misurazione.",
"personalBaseline": "La tua media",
"deltaVsBaseline": "{delta} vs. la tua media",
"deltaUnchanged": "corrisponde alla tua media",
"deltaVsTarget": "{delta} vs. obiettivo",
"weekdaysFull": {
"mon": "Lunedì",
"tue": "Martedì",
"wed": "Mercoledì",
"thu": "Giovedì",
"fri": "Venerdì",
"sat": "Sabato",
"sun": "Domenica"
},
"rangeBand": "Intervallo"
},
"chart": {
"overlay": {
"controls": {
"title": "Sovrapposizioni del grafico",
"trendIndicator": "Trend 7 giorni",
"trendArrow": "Freccia di trend",
"targetRange": "Range obiettivo",
"comparisonBaseline": "Confronto",
"comparisonUnavailable": "Nessun periodo precedente disponibile",
"tooltip": {
"openSettings": "Impostazioni sovrapposizioni del grafico"
}
}
}
},
"comparison": {
"toggleLabel": "Confronta con",
"toggleHint": "Confronta il periodo attuale con lo stesso periodo dell’anno precedente.",
"baseline": {
"none": "Disattivato",
"lastMonth": "Mese precedente",
"lastYear": "Anno precedente"
},
"captionLastMonth": "vs. mese precedente",
"captionLastYear": "vs. anno precedente",
"deltaVs": {
"lastMonth": "{delta} vs. mese precedente",
"lastYear": "{delta} vs. anno precedente"
},
"tooltipPrior": "Periodo precedente",
"unavailable": {
"lastMonth": "Confronto non disponibile — nessun dato del mese precedente",
"lastYear": "Confronto non disponibile — nessun dato dell’anno precedente"
},
"notAvailableForCompliance": "Confronto non disponibile per l’aderenza"
},
"insights": {
"noAnalysisYet": "Ancora nessuna analisi.",
"assessmentPreparing": "Preparazione della valutazione…",
"emptyTitle": "Dati ancora insufficienti",
"emptyDescription": "Gli insights compaiono appena registri qualche misurazione. Inizia da peso o pressione.",
"emptyAddMeasurement": "Registra misurazione",
"bmiEmptyTitle": "Aggiungi l’altezza per il BMI",
"bmiEmptyDescription": "Per il BMI serve la tua altezza. Salvala in Impostazioni → Account.",
"bmiEmptyAction": "Apri impostazioni account",
"noProviderConfigured": "Analisi non disponibile.",
"startAnalysis": "Avvia analisi",
"refreshAnalysis": "Aggiorna analisi",
"keyTakeaway": "Ciò che conta",
"findingsTitle": "Riscontri",
"heroFindingPositive": "Riscontro principale",
"heroFindingNeutral": "Riscontro principale",
"heroFindingAttention": "Da tenere d’occhio",
"heroFindingWarning": "Avviso principale",
"correlationsTitle": "Correlazioni",
"recommendationsTitle": "Raccomandazioni",
"personalRecord": {
"badge": "PR",
"tooltip": "Record personale: {value} {unit} il {date}"
},
"recommendation": {
"source": "Fonte",
"viewSource": "Apri la linea guida in una nuova scheda",
"rationale": "Perché questo consiglio",
"rationaleWindow": "Finestra",
"rationaleComparedTo": "Confrontato con",
"rationaleDeviation": "Scostamento",
"rationaleExpand": "Mostra motivazione",
"rationaleCollapse": "Nascondi motivazione",
"legacyPayloadCta": "Insights aggiornati — rigenera per attivare le nuove spiegazioni",
"feedbackHelpful": "Utile",
"feedbackNotHelpful": "Poco utile",
"feedbackThanks": "Grazie per il riscontro",
"feedbackConfirmed": "Feedback salvato",
"feedbackAlreadyRated": "Già valutato",
"confidence": "Confidenza",
"confidenceAria": "Confidenza: {value} su 100",
"confidenceHigh": "Confidenza alta",
"confidenceMedium": "Confidenza media",
"confidenceLow": "Confidenza bassa — pochi dati",
"confidenceDraft": "Bozza"
},
"dataFoundation": "Base dati",
"dataGaps": "Lacune dati:",
"lastUpdated": "Ultimo aggiornamento",
"confidenceHoch": "Alta",
"confidenceMittel": "Media",
"confidenceGering": "Bassa",
"loadError": "Impossibile caricare le analisi",
"heroGenerated": "Generato {time}",
"heroPersonalBaseline": "Basato sugli ultimi 90 giorni",
"heroRegenerate": "Rigenera",
"heroRegenerating": "Generazione in corso",
"regenerateAnalysis": "Riavvia l’analisi",
"regenerateSuccess": "Analisi rigenerata",
"warmAssessments": "Prepara le valutazioni",
"warmStarted": "Le valutazioni vengono preparate in background",
"heroFallbackSubtitle": "Uno sguardo quotidiano ai tuoi trend — direttamente dai numeri che registri.",
"heroGreetingMorning": "Buongiorno",
"heroGreetingAfternoon": "Buon pomeriggio",
"heroGreetingEvening": "Buonasera",
"heroComingSoonTooltip": "In arrivo",
"heroActionAskCoach": "Chiedi al coach",
"healthScore": {
"label": "Punteggio di salute",
"progressAria": "Avanzamento del punteggio di salute",
"deltaVsLastWeek": "{delta} rispetto alla settimana scorsa",
"deltaUnavailable": "Ancora nessuno storico — ripassa la prossima settimana.",
"componentBp": "PA",
"componentWeight": "Peso",
"componentMood": "Umore",
"componentCompliance": "Aderenza",
"disclaimer": "Indicazione — non è una valutazione medica.",
"deltaExplainer": {
"trigger": "Cosa significa questa variazione?",
"title": "Come si calcola la variazione",
"description": "Variazione rispetto alla settimana scorsa: {delta}",
"body": "Il punteggio combina PA, peso, umore e aderenza. Confrontiamo il punteggio di oggi con quello dello stesso momento della settimana scorsa. Registra una nuova misurazione o una nota di umore per spingerlo verso l'alto."
},
"provenance": {
"toggle": "Composto da",
"weightLabel": "peso",
"mixedBanner": "Alcuni componenti combinano più fonti. Il dettaglio mostra il valore più recente per componente.",
"footnote": "I pesi sono ricalcolati in base ai dati effettivamente disponibili.",
"asOfLabel": "al {date}",
"provisional": "Provvisorio — solo {count} di {total} valori disponibili",
"provisionalBadge": "Provvisorio",
"sourceAria": "Fonte: {source}",
"sources": {
"manual": "Manuale",
"withings": "Withings",
"appleHealth": "Apple Health",
"mixed": "Misto",
"none": "Nessun dato"
}
}
},
"suggestedPrompts": {
"label": "Chiedimi",
"whyMonday": "Perché la mia pressione era più alta lunedì?",
"weightVsPulse": "Come ha inciso il calo di peso sulle mie pulsazioni?",
"weekVsMonth": "Confronta questa settimana con il mese scorso",
"tellMyDoctor": "Cosa dovrei dire al mio medico?",
"medicationWorking": "Il mio farmaco sta funzionando?"
},
"dailyBriefing": {
"title": "Briefing del giorno",
"keyFindingsTitle": "Riscontri principali",
"emptyTitle": "Ancora nessun briefing",
"emptyDescription": "Genera il briefing di oggi per avere un riepilogo dei tuoi trend.",
"emptyAction": "Genera briefing",
"loadingLabel": "Preparazione del briefing"
},
"therapyTimeline": {
"title": "Cronologia terapia GLP-1",
"description": "Elenco cronologico: cambi di dose, iniezioni, scorte e giorni con effetti collaterali.",
"empty": "Nessun evento GLP-1 negli ultimi 90 giorni.",
"doseTo": "Dose a",
"pens": "Penne",
"sideEffects": "Effetti collaterali"
},
"trendsRow": {
"title": "Tendenze",
"subtitle": "Gli ultimi 30 giorni a colpo d’occhio",
"caption": {
"bp": "Valori sistolici e diastolici degli ultimi 30 giorni.",
"weight": "Andamento del peso corporeo degli ultimi 30 giorni.",
"pulse": "Battito a riposo degli ultimi 30 giorni.",
"mood": "Punteggio giornaliero dell'umore degli ultimi 30 giorni.",
"sleep": "Durata del sonno notturno degli ultimi 30 giorni.",
"steps": "Conteggio giornaliero dei passi degli ultimi 30 giorni.",
"hrv": "Variabilità della frequenza cardiaca degli ultimi 30 giorni.",
"resting_hr": "Frequenza cardiaca a riposo degli ultimi 30 giorni.",
"active_energy": "Energia attiva bruciata negli ultimi 30 giorni.",
"flights": "Piani saliti negli ultimi 30 giorni.",
"distance": "Distanza a piedi e di corsa degli ultimi 30 giorni.",
"vo2_max": "VO₂ max degli ultimi 30 giorni.",
"body_temp": "Temperatura corporea degli ultimi 30 giorni."
}
},
"vo2Max": {
"statLatest": "Attuale",
"statMin": "Min",
"statMax": "Max",
"empty": "Ancora nessun dato VO₂ max — sincronizza Apple Health per riempire questa vista."
},
"trendAnnotation": {
"emptyBp": "Servono più dati per commentare questo trend.",
"emptyWeight": "Servono più dati per commentare questo trend.",
"emptyMood": "Servono più dati per commentare questo trend.",
"confidenceHigh": "Confidenza alta",
"confidenceModerate": "Confidenza media",
"confidenceLow": "Confidenza bassa",
"pendingLabel": "Commento di trend in generazione"
},
"range": {
"label": "Periodo",
"noPriorData": "nessun dato nel periodo precedente",
"option": {
"7d": "7g",
"30d": "30g",
"90d": "90g",
"1y": "1a"
},
"priorLabel": {
"7d": "vs 7g precedenti",
"30d": "vs 30g precedenti",
"90d": "vs 90g precedenti",
"1y": "vs anno precedente"
},
"noChange": "nessuna variazione"
},
"correlationRow": {
"title": "Correlazioni",
"subtitle": "Ipotesi predefinite, vincolate a n ≥ 14 e p < 0,05",
"disclaimer": "Le correlazioni sono osservazionali, non causali — parla con il medico se la pressione è alta.",
"experimentCta": "Avvia esperimento di 7 giorni",
"experimentTooltip": "In arrivo",
"emptyTitle": "Servono più dati per mostrare questa correlazione",
"sourceChip": "su {n} misurazioni appaiate · {window}",
"sourceWindowLast30": "Ultimi 30 giorni",
"confidenceHigh": "Confidenza alta",
"confidenceModerate": "Confidenza media",
"confidenceLow": "Confidenza bassa",
"card": {
"bpComplianceTitle": "PA × aderenza farmaci",
"bpComplianceSubtitle": "Sistolica giornaliera contro % di aderenza",
"moodPulseTitle": "Umore × pulsazioni a riposo",
"moodPulseSubtitle": "Umore e pulsazioni a riposo nello stesso giorno",
"weightWeekdayTitle": "Peso × giorno della settimana",
"weightWeekdaySubtitle": "Peso raggruppato per giorno della settimana"
}
},
"coach": {
"refusalOutOfScope": "Posso aiutarti solo con i dati di salute del tuo log — misurazioni, farmaci, umore, trend. Domande fuori da questo ambito non le rispondo.",
"refusalInjection": "Nel tuo messaggio ci sono istruzioni che cercano di sovrascrivere le mie indicazioni. Sono il coach di HealthLog e riassumo solo i tuoi dati di salute — riformula la domanda in questo perimetro.",
"errorBudget": "Hai raggiunto il limite giornaliero del coach. Il budget si reimposta a mezzanotte (UTC).",
"errorProvider": "Il coach non è riuscito a contattare un provider di analisi ora. Riprova fra poco.",
"errorNetwork": "Nessuna connessione Internet — riprova quando sei di nuovo online.",
"tagline": "Coach personale di salute, basato sui tuoi dati.",
"newChat": "Nuova chat",
"send": "Invia",
"thinking": "Sto pensando…",
"composerPlaceholder": "Chiedimi qualcosa sui tuoi dati…",
"composerHint": "Invio per inviare, Shift+Invio per una nuova riga.",
"composerDisclaimer": "Le risposte sono generate. Le decisioni cliniche restano al tuo medico.",
"voiceComingSoon": "L’input vocale arriva con l’app iOS in v1.5.",
"threadEmpty": "Chiedimi qualcosa sui tuoi trend, farmaci o misurazioni per iniziare.",
"historyTitle": "Conversazioni",
"historySearchPlaceholder": "Cerca nelle conversazioni…",
"historyEmpty": "Le tue conversazioni compaiono qui. Fai una domanda per iniziare.",
"historyDeleteAria": "Elimina conversazione",
"historyDeleteConfirm": "Eliminare questa conversazione? Non si può annullare.",
"sourcesTitle": "A cosa accedo",
"sourcesFresh": "Aggiornate",
"sourcesStale": "Datate",
"sourcesFooter": "Il coach legge solo i dati che hai collegato.",
"evidenceLabel": "Su cosa si basa?",
"metric": {
"bp": "Pressione arteriosa",
"weight": "Peso",
"pulse": "Polso",
"mood": "Umore",
"compliance": "Aderenza",
"general": "Generale",
"hrv": "HRV",
"sleep": "Sonno",
"resting_hr": "Pulsazioni a riposo",
"steps": "Passi",
"active_energy": "Energia attiva",
"flights": "Piani",
"distance": "Distanza",
"vo2_max": "VO₂ max",
"body_temp": "Temperatura corporea",
"medications": "Farmaci",
"anthropometrics": "Profilo (altezza, età, sesso)",
"walking_hr": "Frequenza cardiaca camminando",
"respiratory_rate": "Frequenza respiratoria",
"spo2": "Ossigeno nel sangue",
"pulse_wave_velocity": "Velocità dell'onda di polso",
"vascular_age": "Età vascolare",
"body_fat": "Grasso corporeo",
"fat_mass": "Massa grassa",
"fat_free_mass": "Massa magra",
"muscle_mass": "Massa muscolare",
"lean_body_mass": "Massa corporea magra",
"bone_mass": "Massa ossea",
"total_body_water": "Acqua corporea",
"bmi": "IMC",
"visceral_fat": "Grasso viscerale",
"glucose": "Glicemia",
"walking_steadiness": "Stabilità del cammino",
"walking_asymmetry": "Asimmetria del cammino",
"walking_double_support": "Tempo di doppio appoggio",
"walking_step_length": "Lunghezza del passo",
"walking_speed": "Velocità del cammino",
"audio_env": "Suono ambientale",
"audio_headphone": "Audio cuffie",
"audio_event": "Eventi sonori forti",
"daylight": "Tempo alla luce del giorno",
"skin_temp": "Temperatura cutanea",
"workouts": "Allenamenti"
},
"window": {
"last7days": "Ultimi 7 giorni",
"last30days": "Ultimi 30 giorni",
"last90days": "Ultimi 90 giorni",
"lastYear": "anno in corso",
"allTime": "Tutto il tempo"
},
"windowLabel": "Periodo",
"settingsAriaLabel": "Impostazioni del coach",
"settingsTitle": "Impostazioni del coach",
"settingsDescription": "Imposta come il coach ti parla.",
"settingsToneLabel": "Tono",
"settingsToneWarm": "Caloroso",
"settingsToneNeutral": "Neutro",
"settingsToneConcise": "Conciso",
"settingsVerbosityLabel": "Lunghezza della risposta",
"settingsVerbosityBrief": "Breve",
"settingsVerbosityDefault": "Standard",
"settingsVerbosityDetailed": "Dettagliata",
"settingsExcludeLabel": "Escludi metriche",
"settingsExcludeHint": "Il coach non vede i dati delle metriche selezionate.",
"settingsEvidenceLabel": "Mostra le evidenze per default",
"settingsEvidenceHint": "Apre automaticamente il riquadro delle evidenze sotto ogni risposta.",
"settingsDefaultWindowLabel": "Periodo di analisi predefinito",
"settingsDefaultWindowHint": "Il coach legge questo periodo per chat, salvo che tu non scelga diversamente nell’intestazione del drawer.",
"settingsSave": "Salva",
"settingsSaved": "Salvato.",
"settingsCancel": "Annulla",
"feedbackHelpful": "Utile",
"feedbackUnhelpful": "Poco utile",
"feedbackThanks": "Grazie per il segnale.",
"dailyLimitTitle": "Limite giornaliero raggiunto",
"dailyLimitBody": "Limite giornaliero raggiunto; reset alle 00:00 UTC.",
"providerRateLimitTitle": "Provider con rate-limit",
"providerRateLimitBody": "Il provider è temporaneamente sovraccarico; reset in ~5 min.",
"settingsContextLabel": "Invia contesto",
"settingsContextHint": "Blocchi opzionali su cui il coach può basarsi. Disattivandone uno, viene omesso da ogni risposta.",
"cluster": {
"cardio": {
"label": "Cardiovascolare",
"hint": "Pressione · polso · HRV · FC riposo e cammino"
},
"body": {
"label": "Composizione corporea",
"hint": "Peso · grasso · muscoli · IMC"
},
"activity": {
"label": "Attività",
"hint": "Passi · energia · distanza · VO₂ max"
},
"workouts": {
"label": "Allenamenti",
"hint": "Corse · uscite · sessioni"
},
"sleep": {
"label": "Sonno",
"hint": "Durata · fasi"
},
"mood": {
"label": "Umore",
"hint": "Voci di umore giornaliere"
},
"glucose": {
"label": "Glicemia",
"hint": "Valori a digiuno e postprandiali"
},
"medication": {
"label": "Farmaci",
"hint": "Aderenza · contesto GLP-1"
},
"mobility": {
"label": "Mobilità e andatura",
"hint": "Stabilità · asimmetria · andatura"
},
"environment": {
"label": "Ambiente",
"hint": "Rumore · luce · temp. cutanea"
}
},
"settingsClustersLabel": "Dati che il Coach vede",
"settingsClustersHint": "Scegli quali gruppi di dati il Coach può leggere. Più dati significano risposte più ricche e un prompt più grande.",
"settingsClusterNoData": "Ancora nessun dato",
"sourcesMemberCount": "{count} metriche"
},
"relativeJustNow": "proprio ora",
"relativeMinutesAgoOne": "{count} minuto fa",
"relativeMinutesAgoOther": "{count} minuti fa",
"relativeHoursAgoOne": "{count} ora fa",
"relativeHoursAgoOther": "{count} ore fa",
"relativeDaysAgoOne": "{count} giorno fa",
"relativeDaysAgoOther": "{count} giorni fa",
"navOverview": "Panoramica",
"navBloodPressure": "Pressione arteriosa",
"navWeight": "Peso",
"navPulse": "Polso",
"navMood": "Umore",
"navMedication": "Farmaco",
"navBmi": "IMC",
"navSleep": "Sonno",
"navHrv": "HRV",
"navRestingHr": "FC riposo",
"navOxygenSaturation": "Ossigeno",
"navBodyTemperature": "Temperatura",
"navActiveEnergy": "Energia attiva",
"navAriaLabel": "Vai alla sezione",
"tabStrip": {
"vitalsParent": {
"label": "Vitali",
"header": "Parametri vitali"
},
"bodyParent": {
"label": "Corpo",
"header": "Composizione corporea"
},
"activityParent": {
"label": "Attività",
"header": "Attività e mobilità"
},
"cardiovascularParent": {
"label": "Cardiovascolare",
"header": "Marcatori cardiovascolari"
},
"hearingParent": {
"label": "Udito",
"header": "Udito ed esposizione sonora"
},
"environmentParent": {
"label": "Ambiente",
"header": "Ambiente"
},
"metabolicParent": {
"label": "Metabolico",
"header": "Metabolico"
}
},
"hrv": {
"title": "HRV",
"description": "Variabilità della frequenza cardiaca nel tempo — segnale di recupero del sistema nervoso, captato di notte da Apple Watch e altri wearable compatibili.",
"chartTitle": "Variabilità della frequenza cardiaca",
"emptyState": {
"title": "Ancora nessun valore HRV",
"description": "I valori HRV appariranno qui non appena Apple Watch (o un dispositivo Withings compatibile) sincronizza le misurazioni notturne."
}
},
"restingHr": {
"title": "FC a riposo",
"description": "Il livello cardiaco di base sulla giornata — distinto dalle frequenze puntuali della pagina Polso. Apple Salute fornisce un valore al giorno.",
"chartTitle": "Frequenza cardiaca a riposo",
"emptyState": {
"title": "Ancora nessuna FC a riposo",
"description": "La FC a riposo arriva quando Apple Watch o un Withings compatibile ha indossato una giornata tranquilla."
}
},
"oxygenSaturation": {
"title": "Saturazione di ossigeno",
"description": "Ossigeno nel sangue (SpO₂) — intervallo clinico normale 95–100 %, con zone obiettivo ombreggiate sul grafico.",
"chartTitle": "Saturazione di ossigeno",
"emptyState": {
"title": "Ancora nessun campione SpO₂",
"description": "I campioni SpO₂ appariranno qui non appena un wearable compatibile (Apple Watch, Withings ScanWatch) cattura una lettura."
}
},
"bodyTemperature": {
"title": "Temperatura corporea",
"description": "Andamento della temperatura corporea centrale in Celsius. La temperatura cutanea di Withings vive su una metrica separata.",
"chartTitle": "Temperatura corporea",
"emptyState": {
"title": "Ancora nessuna temperatura corporea",
"description": "Registra una misura o lascia che il tuo wearable ne sincronizzi una — l'andamento apparirà qui.",
"cta": "Registra temperatura corporea"
}
},
"activeEnergy": {
"title": "Energia attiva",
"description": "Totale giornaliero di energia attiva in kilocalorie — una riga al giorno, da Apple Salute o dall'attività Withings.",
"chartTitle": "Energia attiva",
"emptyState": {
"title": "Ancora nessun dato di energia attiva",
"description": "I totali di energia attiva appariranno qui non appena Apple Salute o un dispositivo di attività Withings sincronizza un'intera giornata."
}
},
"subPage": {
"blutdruckDescription": "Il tuo andamento sistolico/diastolico con range obiettivo adattati all’età e una valutazione testuale.",
"gewichtDescription": "Andamento del peso rispetto alla fascia sana derivata dalla tua altezza, con valutazione.",
"pulsDescription": "Resting pulse vs. the personalised Karvonen target band, plus a written assessment.",
"stimmungDescription": "Valori giornalieri di umore nel tempo, con una valutazione testuale.",
"stimmungEmptyTitle": "Registra il primo umore",
"stimmungEmptyDescription": "Gli insights dell’umore compaiono appena registri qualche voce. Tocca sotto per iniziare.",
"stimmungEmptyAction": "Apri diario umore",
"medikamenteDescription": "Calendario delle assunzioni per farmaco e una valutazione testuale.",
"medikamenteEmptyTitle": "Aggiungi il primo farmaco",
"medikamenteEmptyDescription": "Gli insights di aderenza richiedono almeno un farmaco registrato.",
"medikamenteEmptyAction": "Apri farmaci",
"therapyTimelineDescription": "Protocollo cronologico della terapia GLP-1 — cambi di dose, iniezioni, scorte, effetti collaterali.",
"bmiDescription": "BMI derivato dal tuo peso e dalla tua altezza, con valutazione.",
"target": {
"range": "Obiettivo: {min}–{max} {unit}",
"bpRange": "Obiettivo: {sysMin}–{sysMax} / {diaMin}–{diaMax} {unit}",
"inTargetShare": "{pct}% dei giorni registrati nell'obiettivo",
"adjustLink": "Modifica l'intervallo obiettivo"
},
"explainer": {
"trigger": "Che cos'è {title}?",
"bloodPressureTitle": "Pressione arteriosa",
"bloodPressureBody": "La pressione arteriosa è la forza che il sangue esercita sulle pareti delle arterie, indicata come sistolica su diastolica (il picco durante un battito sul valore a riposo tra i battiti). Valori costantemente alti affaticano il cuore e i vasi nel tempo.",
"pulseTitle": "Polso",
"pulseBody": "Il polso indica quante volte il cuore batte al minuto. Una misurazione singola riflette ciò che stavi facendo in quel momento: a riposo è di solito tra 60 e 100 battiti al minuto e aumenta naturalmente con il movimento, lo stress o la caffeina.",
"weightTitle": "Peso",
"weightBody": "Il peso corporeo è uno dei segnali più semplici dell'equilibrio energetico a lungo termine e della salute generale. L'andamento nelle settimane conta molto più di una singola misurazione, che varia con l'idratazione, il cibo e l'ora del giorno.",
"bmiTitle": "Indice di massa corporea (IMC)",
"bmiBody": "L'IMC è il peso diviso per l'altezza al quadrato, un singolo numero che ti colloca in un'ampia categoria di peso. È uno screening di popolazione, non una diagnosi, e non distingue il muscolo dal grasso.",
"sleepTitle": "Sonno",
"sleepBody": "La durata del sonno è quanto hai effettivamente dormito nella notte, suddivisa in fasi leggera, profonda e REM. La maggior parte degli adulti necessita di circa sette-nove ore; quantità e qualità costanti favoriscono recupero, umore e metabolismo.",
"moodTitle": "Umore",
"moodBody": "Il monitoraggio dell'umore registra come ti senti nel tempo su una scala semplice. Annotarlo con regolarità rivela schemi — come sonno, attività o farmaci si allineano a come ti senti — che un singolo giorno non mostra mai.",
"medicationsTitle": "Aderenza alla terapia",
"medicationsBody": "L'aderenza misura quanto regolarmente assumi i farmaci come prescritto, qui come quota delle dosi previste che hai registrato. Un'assunzione costante è spesso ciò che fa funzionare una terapia come previsto.",
"restingHrTitle": "Frequenza cardiaca a riposo",
"restingHrBody": "La frequenza cardiaca a riposo è il battito quando sei completamente a riposo, di solito misurato durante la notte. Una frequenza più bassa indica in genere una migliore forma cardiovascolare, mentre un andamento in aumento può essere un segnale precoce di stress o malattia.",
"hrvTitle": "Variabilità della frequenza cardiaca (HRV)",
"hrvBody": "L'HRV è la piccola variazione del tempo tra battiti consecutivi. Una variabilità più alta riflette di solito un sistema nervoso ben recuperato e adattabile, mentre un calo prolungato può segnalare affaticamento, stress o recupero insufficiente.",
"oxygenSaturationTitle": "Saturazione di ossigeno (SpO₂)",
"oxygenSaturationBody": "La SpO₂ è la percentuale di globuli rossi che trasportano ossigeno. Valori tra 95 e 100% sono normali a riposo; valori che restano sotto il 90% meritano attenzione, anche se brevi cali notturni sono comuni.",
"bodyTemperatureTitle": "Temperatura corporea",
"bodyTemperatureBody": "La temperatura corporea riflette il tuo stato termico centrale, normalmente intorno ai 37 °C con piccole oscillazioni giornaliere. Un aumento prolungato può indicare un'infezione, mentre le misurazioni notturne al polso seguono soprattutto variazioni relative, non un valore clinico.",
"activeEnergyTitle": "Energia attiva",
"activeEnergyBody": "L'energia attiva sono le calorie che bruci con il movimento, oltre al consumo di base a riposo. È una misura diretta di quanto è stata fisicamente attiva la tua giornata.",
"workoutsTitle": "Allenamenti",
"workoutsBody": "Gli allenamenti sono le sessioni di esercizio strutturato che i tuoi dispositivi registrano, con tipo, durata ed energia. Tracciarli mostra come l'allenamento regolare si accumula nel corso delle settimane e come si collega agli altri segnali di salute.",
"respiratoryRateTitle": "Frequenza respiratoria",
"respiratoryRateBody": "La frequenza respiratoria è il numero di respiri che fai al minuto. A riposo la maggior parte degli adulti respira circa dodici-venti volte al minuto; un aumento prolungato può accompagnare malattia, sforzo o stress.",
"bodyWaterTitle": "Acqua corporea totale",
"bodyWaterBody": "L'acqua corporea totale è la quota del tuo peso costituita da liquido, dentro e intorno alle cellule. Varia con l'idratazione, l'alimentazione e l'attività, quindi l'andamento nelle settimane dice più di una singola misura.",
"boneMassTitle": "Massa ossea",
"boneMassBody": "La massa ossea è il peso stimato dei minerali del tuo scheletro. Le stime da bilancia sono approssimative, ma un andamento stabile o in aumento sostiene la robustezza ossea a lungo termine.",
"fatFreeMassTitle": "Massa magra",
"fatFreeMassBody": "La massa magra è tutto ciò che nel corpo non è grasso: muscoli, ossa, organi e acqua. Mantenerla o aumentarla mentre si perde peso indica di solito una composizione corporea più sana.",
"fatMassTitle": "Massa grassa",
"fatMassBody": "La massa grassa è il peso totale del grasso nel corpo. Un po' di grasso è essenziale per gli ormoni e le riserve di energia, ma un eccesso — soprattutto sull'addome — aumenta il rischio per la salute a lungo termine.",
"muscleMassTitle": "Massa muscolare",
"muscleMassBody": "La massa muscolare è il peso stimato dei muscoli del corpo. Più muscolo sostiene forza, metabolismo e mobilità, e di solito richiede impegno attivo per essere mantenuto con l'età.",
"visceralFatTitle": "Grasso viscerale",
"visceralFatBody": "Il grasso viscerale è il grasso depositato in profondità nell'addome, intorno agli organi. A differenza del grasso sottocutaneo, un livello elevato è strettamente legato a malattie cardiache e diabete di tipo 2, quindi più basso è in genere meglio.",
"leanBodyMassTitle": "Massa magra corporea",
"leanBodyMassBody": "La massa magra corporea è il peso totale meno il grasso: muscoli, ossa, organi e acqua insieme. Seguirla accanto al peso mostra se i cambiamenti derivano dal muscolo o dal grasso.",
"flightsClimbedTitle": "Piani saliti",
"flightsClimbedBody": "I piani saliti contano i livelli che sali ogni giorno, dove un piano corrisponde a circa tre metri di dislivello. È un indicatore semplice dell'attività quotidiana e dello sforzo degli arti inferiori.",
"walkingDistanceTitle": "Distanza a piedi e di corsa",
"walkingDistanceBody": "La distanza a piedi e di corsa è il percorso che copri a piedi ogni giorno. Integra il conteggio dei passi mostrando quanto ti sei mosso, non solo quanto spesso hai mosso il passo.",
"walkingSteadinessTitle": "Stabilità del cammino",
"walkingSteadinessBody": "La stabilità del cammino stima quanto è stabile ed equilibrata la tua andatura, classificata da buona a bassa. Un livello basso indica una maggiore probabilità di caduta ed è opportuno parlarne con un medico.",
"walkingHeartRateTitle": "Frequenza cardiaca in camminata",
"walkingHeartRateBody": "La frequenza cardiaca in camminata è il battito medio durante una camminata costante. Un valore più basso nel tempo riflette spesso una migliore forma cardiovascolare a parità di sforzo.",
"walkingAsymmetryTitle": "Asimmetria del cammino",
"walkingAsymmetryBody": "L'asimmetria del cammino è la quota di tempo in cui i tuoi passi sono diseguali tra gamba sinistra e destra. Una percentuale più alta può indicare dolore, un infortunio o un problema di andatura da approfondire.",
"doubleSupportTimeTitle": "Tempo di doppio appoggio",
"doubleSupportTimeBody": "Il tempo di doppio appoggio è la quota di ogni ciclo del passo in cui entrambi i piedi toccano terra contemporaneamente. Una percentuale più alta indica di solito un'andatura più prudente e meno stabile.",
"stepLengthTitle": "Lunghezza del passo",
"stepLengthBody": "La lunghezza del passo è la distanza media da un appoggio del piede al successivo. Un passo più corto nel tempo può riflettere stanchezza, prudenza o un cambiamento nella mobilità.",
"walkingSpeedTitle": "Velocità del cammino",
"walkingSpeedBody": "La velocità del cammino è quanto rapidamente ti muovi in piano. È un marcatore ben studiato della salute generale e della mobilità, e un ritmo stabile o in aumento è un buon segno.",
"pulseWaveVelocityTitle": "Velocità dell'onda di polso",
"pulseWaveVelocityBody": "La velocità dell'onda di polso misura la rapidità con cui l'onda di pressione di ogni battito percorre le arterie. Un'onda più veloce indica arterie più rigide, associate a un rischio cardiovascolare più alto.",
"vascularAgeTitle": "Età vascolare",
"vascularAgeBody": "L'età vascolare stima quanto si comportano vecchie le tue arterie rispetto alla tua età reale, in base alla rigidità arteriosa. Un'età vascolare inferiore a quella reale suggerisce vasi sanguigni più sani.",
"environmentalAudioTitle": "Livelli sonori ambientali",
"environmentalAudioBody": "I livelli sonori ambientali rilevano il volume dell'ambiente intorno a te in decibel. Un'esposizione prolungata sopra i 70 dB circa può danneggiare l'udito nel tempo, quindi medie giornaliere più basse sono più sicure.",
"headphoneAudioTitle": "Livelli audio in cuffia",
"headphoneAudioBody": "I livelli audio in cuffia rilevano in decibel quanto forte ascolti con auricolari o cuffie. Tenere basso il volume e fare pause protegge l'udito nel lungo periodo.",
"audioEventsTitle": "Eventi sonori intensi",
"audioEventsBody": "Gli eventi sonori intensi segnalano i momenti in cui il rumore intorno a te ha raggiunto un livello che può danneggiare l'udito con esposizione sufficiente. Eventi frequenti sono un invito a cercare un ambiente più silenzioso o protezioni acustiche.",
"daylightTitle": "Tempo alla luce del giorno",
"daylightBody": "Il tempo alla luce del giorno è quanto trascorri sotto la luce esterna ogni giorno. La luce diurna regolare sostiene un sano ritmo sonno-veglia e l'umore, e il tempo all'aperto è collegato alla salute degli occhi.",
"bloodGlucoseTitle": "Glicemia",
"bloodGlucoseBody": "La glicemia è la quantità di zucchero nel sangue, la principale fonte di energia del corpo. Sale dopo i pasti e si stabilizza tra un pasto e l'altro; valori che restano alti nel tempo possono indicare diabete o prediabete.",
"skinTemperatureTitle": "Temperatura cutanea",
"skinTemperatureBody": "La temperatura cutanea qui è la piccola variazione notturna della temperatura del polso rispetto al tuo valore di riferimento, non una misura assoluta della febbre. Le variazioni possono seguire sonno, ambiente, malattia o fase del ciclo mestruale."
},
"stats": {
"label": "Statistiche riepilogative",
"min": "Min",
"max": "Max",
"median": "Mediana",
"mean": "Media"
},
"showAllValues": "Mostra tutte le misurazioni",
"valuesPageTitle": "{metric} — tutte le misurazioni",
"valuesPageDescription": "Ogni misurazione dietro questa metrica. Modifica o rimuovi una voce direttamente.",
"diversity": {
"trigger": "Suggerimento di misurazione",
"weekday": "La maggior parte delle tue misurazioni di {metric} cade in un solo giorno della settimana. Registrare in altri giorni offre un quadro più completo.",
"timeOfDay": "La maggior parte delle tue misurazioni di {metric} cade in un orario simile della giornata. Variare l'orario offre un quadro più completo."
},
"valuesBack": "Torna a Insights"
},
"sleep": {
"title": "Sonno",
"description": "Suddivisione per fasi e durata notturna, da Apple Health.",
"headlineTitle": "Media per notte",
"headlineCaption": "Mediato su {count} notti — {suffix}",
"headlineCaptionSuffix": "per notte",
"compositionTitle": "Distribuzione delle fasi",
"compositionSubtitle": "Ultime {nights} notti",
"compositionAriaLabel": "Distribuzione delle fasi del sonno su {nights} notti",
"stages": {
"deep": "Profondo",
"rem": "REM",
"core": "Leggero",
"asleep": "Addormentato",
"awake": "Sveglio",
"inBed": "A letto",
"unavailable": "Ancora nessun dato sulle fasi — la sync delle fasi via Apple Health arriva con v1.5."
},
"empty": {
"title": "Ancora nessun dato sul sonno",
"description": "La sync con Apple Health arriva con v1.5 e riempirà questa vista in automatico.",
"action": "Gestisci dispositivi"
}
},
"correlations": "Correlazioni",
"medicationCompliance": "Aderenza ai farmaci",
"dayStreak": "{count} giorni di serie",
"compliance7d": "Aderenza 7 giorni",
"compliance30d": "Aderenza 30 giorni",
"taken": "Assunta",
"skipped": "Saltata",
"missed": "Persa",
"generalStatusBadge": {
"good": "Bene",
"watch": "Osservare",
"critical": "Critico"
},
"assessmentTitle": "Valutazione",
"bloodPressureSectionTitle": "Pressione arteriosa",
"weightSectionTitle": "Peso",
"pulseSectionTitle": "Polso",
"bmiSectionTitle": "IMC",
"complianceNoData": "Nessun dato di aderenza disponibile",
"generate": "Genera nuova analisi",
"moodSectionTitle": "Umore",
"confidence": "Confidenza",
"cached": "In cache",
"emptyState": {
"bloodPressure": {
"title": "Nessuna misurazione della pressione",
"description": "Registra una misurazione e qui appariranno l'andamento, la percentuale in target e la classificazione OMS.",
"cta": "Registra pressione"
},
"weight": {
"title": "Nessuna misurazione del peso",
"description": "Registra un peso: andamento, media mobile e fascia obiettivo appariranno automaticamente.",
"cta": "Registra peso"
},
"pulse": {
"title": "Nessuna misurazione del polso",
"description": "Registra una misurazione: polso a riposo, HRV e VO₂ max appariranno in questa vista.",
"cta": "Registra polso"
},
"bmi": {
"title": "BMI non ancora calcolato",
"description": "Una volta inseriti altezza e almeno un peso, qui apparirà l'andamento del BMI con le zone OMS.",
"cta": "Registra peso"
},
"mood": {
"title": "Nessuna voce d'umore",
"description": "Registra un umore: appariranno andamento, fascia di stabilità e correlazioni.",
"cta": "Registra umore"
},
"medication": {
"title": "Nessun farmaco configurato",
"description": "Configura un farmaco: aderenza, livello plasmatico e titolazione appariranno qui.",
"cta": "Aggiungi farmaco"
},
"sleep": {
"title": "Nessuna voce di sonno",
"description": "Quando saranno disponibili dati sul sonno (manuale o tramite Withings / Apple Health), qui apparirà la suddivisione per fase.",
"cta": "Collega Withings"
}
},
"navWorkouts": "Allenamenti",
"workouts": {
"title": "Allenamenti",
"description": "Corse, uscite in bici, camminate e sessioni di forza recenti, deduplicati tra Apple Watch e Withings.",
"emptyState": {
"title": "Nessun allenamento",
"description": "Apri l'app Salute di Apple sull'iPhone per sincronizzare gli allenamenti. L'import di attività di Withings porta dentro anche camminate e uscite in bici."
},
"row": {
"duration": "Durata",
"distance": "Distanza",
"energy": "Energia attiva"
},
"detail": {
"backToList": "Torna agli allenamenti",
"statsTitle": "Statistiche",
"statsDuration": "Durata",
"statsDistance": "Distanza",
"statsActiveEnergy": "Energia attiva",
"statsAvgHr": "FC media",
"statsMaxHr": "FC max",
"statsMinHr": "FC min",
"statsStepCount": "Passi",
"statsElevation": "Dislivello",
"statsPace": "Passo",
"statsSource": "Fonte",
"routeTitle": "Percorso",
"routeUnavailable": "Nessun tracciato GPS registrato per questo allenamento.",
"hrChartTitle": "Frequenza cardiaca",
"hrChartUnavailable": "I campioni di frequenza cardiaca al secondo non vengono salvati per questo allenamento.",
"notFound": "Allenamento non trovato.",
"loading": "Caricamento allenamento…"
},
"sport": {
"walking": "Camminata",
"running": "Corsa",
"cycling": "Bici",
"hiking": "Escursionismo",
"swimming": "Nuoto",
"rowing": "Canottaggio",
"elliptical": "Ellittica",
"stairClimber": "Stepper",
"yoga": "Yoga",
"mindAndBody": "Mente e corpo",
"strength": "Forza",
"hiit": "HIIT",
"dance": "Danza",
"golf": "Golf",
"tennis": "Tennis",
"basketball": "Pallacanestro",
"soccer": "Calcio",
"crossTraining": "Cross-training",
"mixedCardio": "Cardio misto",
"other": "Altro"
}
},
"bloodGlucose": {
"title": "Glicemia",
"description": "Le tue letture di glicemia nel tempo, in mg/dL.",
"chartTitle": "Glicemia",
"emptyState": {
"title": "Nessun dato di glicemia",
"description": "Le letture di glicemia appaiono qui quando ne registri una o un dispositivo si sincronizza."
}
},
"navBloodGlucose": "Glucosio",
"totalBodyWater": {
"title": "Acqua corporea totale",
"description": "La tua acqua corporea totale nel tempo, in chilogrammi.",
"chartTitle": "Acqua corporea totale",
"emptyState": {
"title": "Nessun dato di acqua corporea",
"description": "Le letture di acqua corporea appaiono qui quando una bilancia impedenziometrica si sincronizza."
}
},
"navTotalBodyWater": "Acqua corporea",
"boneMass": {
"title": "Massa ossea",
"description": "La tua massa ossea nel tempo, in chilogrammi.",
"chartTitle": "Massa ossea",
"emptyState": {
"title": "Nessun dato di massa ossea",
"description": "Le letture di massa ossea appaiono qui quando una bilancia impedenziometrica si sincronizza."
}
},
"navBoneMass": "Massa ossea",
"flightsClimbed": {
"title": "Piani saliti",
"description": "Rampe di scale salite ogni giorno.",
"chartTitle": "Piani saliti al giorno",
"emptyState": {
"title": "Nessun dato sui piani",
"description": "I totali dei piani appaiono qui quando Apple Health sincronizza una giornata."
}
},
"navFlightsClimbed": "Piani",
"walkingRunningDistance": {
"title": "Distanza camminata + corsa",
"description": "Distanza di cammino e corsa percorsa ogni giorno, in chilometri.",
"chartTitle": "Distanza al giorno",
"emptyState": {
"title": "Nessun dato di distanza",
"description": "La distanza giornaliera appare qui quando Apple Health sincronizza una giornata."
}
},
"navWalkingRunningDistance": "Distanza",
"fatFreeMass": {
"title": "Massa magra",
"description": "La tua massa magra nel tempo, in chilogrammi.",
"chartTitle": "Massa magra",
"emptyState": {
"title": "Nessun dato",
"description": "Le letture appaiono qui quando una bilancia impedenziometrica si sincronizza."
}
},
"navFatFreeMass": "Massa magra",
"fatMass": {
"title": "Massa grassa",
"description": "La tua massa grassa nel tempo, in chilogrammi.",
"chartTitle": "Massa grassa",
"emptyState": {
"title": "Nessun dato di massa grassa",
"description": "Le letture appaiono qui quando una bilancia impedenziometrica si sincronizza."
}
},
"navFatMass": "Massa grassa",
"muscleMass": {
"title": "Massa muscolare",
"description": "La tua massa muscolare nel tempo, in chilogrammi.",
"chartTitle": "Massa muscolare",
"emptyState": {
"title": "Nessun dato muscolare",
"description": "Le letture appaiono qui quando una bilancia impedenziometrica si sincronizza."
}
},
"navMuscleMass": "Massa muscolare",
"skinTemperature": {
"title": "Temperatura cutanea",
"description": "La temperatura cutanea del polso nel tempo, in gradi Celsius.",
"chartTitle": "Temperatura cutanea",
"emptyState": {
"title": "Nessun dato",
"description": "Le letture appaiono qui quando un dispositivo sincronizza la temperatura notturna."
}
},
"navSkinTemperature": "Temp. pelle",
"pulseWaveVelocity": {
"title": "Velocità dell’onda di polso",
"description": "La tua velocità dell’onda di polso arteriosa nel tempo, in m/s — valori più alti indicano arterie più rigide.",
"chartTitle": "Velocità dell’onda di polso",
"emptyState": {
"title": "Nessun dato",
"description": "Le letture appaiono qui quando un dispositivo Withings compatibile si sincronizza."
}
},
"navPulseWaveVelocity": "Velocità onda di polso",
"vascularAge": {
"title": "Età vascolare",
"description": "La tua età vascolare stimata nel tempo, in anni.",
"chartTitle": "Età vascolare",
"emptyState": {
"title": "Nessun dato",
"description": "Le stime appaiono qui quando un dispositivo Withings compatibile si sincronizza."
}
},
"navVascularAge": "Età vascolare",
"visceralFat": {
"title": "Grasso viscerale",
"description": "Il tuo indice di grasso viscerale nel tempo.",
"chartTitle": "Grasso viscerale",
"emptyState": {
"title": "Nessun dato",
"description": "Gli indici appaiono qui quando una bilancia impedenziometrica compatibile si sincronizza."
}
},
"navVisceralFat": "Grasso viscerale",
"audioExposureEnv": {
"title": "Audio ambientale",
"description": "La tua esposizione media giornaliera al suono ambientale, in dBA.",
"chartTitle": "Esposizione al suono ambientale",
"emptyState": {
"title": "Nessun dato",
"description": "I livelli sonori appaiono qui quando Apple Health si sincronizza."
}
},
"navAudioExposureEnv": "Audio ambientale",
"audioExposureHeadphone": {
"title": "Audio cuffie",
"description": "La tua esposizione media giornaliera con le cuffie, in dBA.",
"chartTitle": "Esposizione cuffie",
"emptyState": {
"title": "Nessun dato",
"description": "I livelli appaiono qui quando Apple Health si sincronizza."
}
},
"navAudioExposureHeadphone": "Audio cuffie",
"timeInDaylight": {
"title": "Tempo alla luce del giorno",
"description": "Minuti trascorsi alla luce del giorno ogni giorno.",
"chartTitle": "Luce diurna al giorno",
"emptyState": {
"title": "Nessun dato",
"description": "I totali appaiono qui quando Apple Health sincronizza una giornata."
}
},
"navTimeInDaylight": "Luce diurna",
"walkingSteadiness": {
"title": "Stabilità del cammino",
"description": "La tua stabilità del cammino nel tempo, in percentuale.",
"chartTitle": "Stabilità del cammino",
"emptyState": {
"title": "Nessun dato",
"description": "Le letture appaiono qui quando Apple Health si sincronizza."
}
},
"navWalkingSteadiness": "Stabilità del cammino",
"audioExposureEvent": {
"title": "Eventi audio forti",
"description": "Giorni con un evento di esposizione a rumore forte.",
"chartTitle": "Eventi rumorosi al giorno",
"emptyState": {
"title": "Nessun dato",
"description": "Gli eventi appaiono qui quando Apple Health si sincronizza."
}
},
"navAudioExposureEvent": "Eventi rumorosi",
"respiratoryRate": {
"title": "Frequenza respiratoria",
"description": "La tua frequenza respiratoria nel tempo, in respiri al minuto.",
"chartTitle": "Frequenza respiratoria",
"emptyState": {
"title": "Nessun dato",
"description": "Le letture appaiono qui quando Apple Health sincronizza la respirazione del sonno o dell’allenamento."
}
},
"navRespiratoryRate": "Frequenza respiratoria",
"leanBodyMass": {
"title": "Massa corporea magra",
"description": "La tua massa corporea magra nel tempo, in chilogrammi.",
"chartTitle": "Massa corporea magra",
"emptyState": {
"title": "Nessun dato",
"description": "Le letture appaiono qui quando una bilancia impedenziometrica si sincronizza."
}
},
"navLeanBodyMass": "Massa corporea magra",
"walkingHeartRateAverage": {
"title": "Battito camminando",
"description": "La tua frequenza cardiaca media camminando, in bpm.",
"chartTitle": "Battito medio camminando",
"emptyState": {
"title": "Nessun dato",
"description": "Le letture appaiono qui quando Apple Health si sincronizza."
}
},
"navWalkingHeartRateAverage": "Battito camminando",
"walkingAsymmetry": {
"title": "Asimmetria del cammino",
"description": "La tua asimmetria del cammino nel tempo, in percentuale.",
"chartTitle": "Asimmetria del cammino",
"emptyState": {
"title": "Nessun dato",
"description": "Le letture appaiono qui quando Apple Health si sincronizza."
}
},
"navWalkingAsymmetry": "Asimmetria del cammino",
"walkingDoubleSupport": {
"title": "Tempo di doppio appoggio",
"description": "La percentuale di ogni passo con entrambi i piedi a terra.",
"chartTitle": "Tempo di doppio appoggio",
"emptyState": {
"title": "Nessun dato",
"description": "Le letture appaiono qui quando Apple Health si sincronizza."
}
},
"navWalkingDoubleSupport": "Doppio appoggio",
"walkingStepLength": {
"title": "Lunghezza del passo",
"description": "La tua lunghezza media del passo nel tempo, in metri.",
"chartTitle": "Lunghezza del passo",
"emptyState": {
"title": "Nessun dato",
"description": "Le letture appaiono qui quando Apple Health si sincronizza."
}
},
"navWalkingStepLength": "Lunghezza del passo",
"walkingSpeed": {
"title": "Velocità di cammino",
"description": "La tua velocità media di cammino nel tempo, in km/h.",
"chartTitle": "Velocità di cammino (km/h)",
"emptyState": {
"title": "Nessun dato",
"description": "Le letture appaiono qui quando Apple Health si sincronizza."
}
},
"navWalkingSpeed": "Velocità di cammino",
"mood": {
"heatmapTitle": "Calendario dell'umore",
"heatmapNoEntry": "Nessun dato",
"legendGreat": "Ottimo",
"legendGood": "Buono",
"legendOkay": "Discreto",
"legendLow": "Basso",
"distributionTitle": "Distribuzione dell'umore",
"distributionDaysUnit": "giorni",
"weekdayTitle": "Media per giorno della settimana",
"weekdayNoData": "Nessun dato",
"weekdayBestWorst": "Giorno migliore: {best} · Giorno più difficile: {worst}",
"tagsTitle": "Tag e fattori scatenanti",
"tagAvgMood": "Umore medio con questo tag",
"correlationsTitle": "Umore e altre metriche",
"correlationsDescription": "Come il tuo umore si muove con sonno, attività e battito nello stesso giorno.",
"correlation": {
"sleepTitle": "Umore vs. sonno",
"stepsTitle": "Umore vs. attività",
"pulseTitle": "Umore vs. battito",
"sleepAxis": "Sonno (min)",
"stepsAxis": "Passi",
"pulseAxis": "Battito (bpm)",
"strengthStrong": "Forte",
"strengthModerate": "Moderata",
"strengthWeak": "Debole",
"strengthNone": "Nessuna",
"source": "{n} giorni appaiati · r = {r}",
"emptyTitle": "Non ci sono ancora abbastanza dati appaiati",
"emptyDescription": "Registra umore e questa metrica negli stessi giorni per vedere una correlazione.",
"weightTitle": "Umore vs. peso",
"bloodPressureTitle": "Umore vs. pressione sanguigna",
"weightAxis": "Peso",
"bloodPressureAxis": "Sistolica (mmHg)"
},
"structuredTagsTitle": "Analisi etichette",
"inTargetValue": "{pct} %",
"inTargetCaption": "degli ultimi giorni nel tuo intervallo di buon umore",
"narrative": {
"title": "Cosa risalta",
"weekdayDip": "Il tuo umore cala di più il {weekday}: {delta} sotto la tua settimana.",
"weekdayPeak": "Il {weekday} è sempre il tuo giorno migliore, con una media di {value}.",
"trendUp": "Il tuo umore è in crescita negli ultimi {days} giorni (+{delta} rispetto al periodo precedente).",
"trendDown": "Il tuo umore è in calo negli ultimi {days} giorni (-{delta} rispetto al periodo precedente).",
"weekendUp": "Ti senti meglio nel weekend (+{delta} rispetto ai giorni feriali).",
"weekendDown": "Il tuo umore è più basso nel weekend (-{delta} rispetto ai giorni feriali).",
"tagLift": "I giorni con l'etichetta «{tag}» superano in media il tuo umore generale di {delta}.",
"tagDrop": "I giorni con l'etichetta «{tag}» restano {delta} sotto la tua media.",
"inTarget": "Sei stato nel tuo intervallo di buon umore il {pct} % degli ultimi 30 giorni.",
"streak": "Hai registrato il tuo umore per {days} giorni di fila — continua così.",
"timeOfDay": "Ti senti meglio di {bucket}, con una media di {value}."
},
"timeOfDay": {
"title": "Umore per fascia oraria",
"morning": "Mattina",
"afternoon": "Pomeriggio",
"evening": "Sera",
"night": "Notte",
"bestCaption": "Tendi a sentirti meglio di {bucket}."
},
"stability": {
"value": "{score}/100",
"bandVerySteady": "Il tuo umore è stato molto stabile",
"bandSteady": "Il tuo umore è stato abbastanza stabile",
"bandVariable": "Il tuo umore è stato notevolmente variabile",
"bandVeryVariable": "Il tuo umore ha oscillato molto di recente"
}
}
},
"thresholds": {
"defaultLabel": "Predefinito",
"autoModeLabel": "Auto",
"overrideModeLabel": "Personalizzato",
"overrideToggleLabel": "Valori personali",
"resetAction": "Ripristina predefinito",
"resetAllAction": "Ripristina tutti ai predefiniti",
"minLabel": "Min",
"maxLabel": "Max",
"unitSuffix": "({unit})",
"outOfBoundsHint": "Range consentito: {min}–{max} {unit}",
"overrideWarning": "Valori al di fuori delle linee guida possono produrre obiettivi non salutari. Personalizza solo dopo consulto medico.",
"saveSuccess": "Obiettivi aggiornati",
"saveError": "Impossibile salvare gli obiettivi",
"resetSuccess": "Ripristinato al valore predefinito",
"sourceOverride": "Valore personale",
"metricWeight": "Peso",
"metricBpSys": "Pressione arteriosa (sistolica)",
"metricBpDia": "Pressione arteriosa (diastolica)",
"metricPulse": "Pulsazioni a riposo",
"metricBodyFat": "Massa grassa",
"metricSleep": "Durata del sonno",
"metricSteps": "Passi/giorno",
"metricGlucoseFasting": "Glicemia — a digiuno",
"metricGlucosePostprandial": "Glicemia — postprandiale",
"metricGlucoseRandom": "Glicemia — qualsiasi",
"metricGlucoseBedtime": "Glicemia — prima di coricarsi",
"metricBodyWater": "Acqua corporea",
"metricBoneMass": "Massa ossea",
"metricOxygenSaturation": "Saturazione di ossigeno (SpO₂)",
"unsetExplanation": "Nessun valore personale — è attivo il predefinito calcolato."
},
"onboarding": {
"errorGeneric": "Qualcosa è andato storto durante il completamento della configurazione. Riprova.",
"tour": {
"stepOf": "Passaggio {current} di {total}",
"next": "Avanti",
"back": "Indietro",
"skip": "Salta tour",
"done": "Ho capito",
"restart": "Riavvia tour",
"restartHint": "Mostra di nuovo il tour della dashboard alla prossima apertura.",
"restartConfirmation": "Il tour ripartirà alla tua prossima visita alla dashboard.",
"steps": {
"tileStrip": {
"title": "I tuoi valori di oggi",
"body": "La striscia di tile mostra l’ultimo valore e il trend a 7 giorni di ogni metrica — peso, pressione, pulsazioni, umore. Nascondi ciò che non ti serve in Impostazioni → Dashboard."
},
"quickAdd": {
"title": "Registrato in due tap",
"body": "Con il pulsante Aggiungi registri misurazioni o voci di umore senza lasciare la dashboard. Il modulo ricorda il contesto e i tag più recenti."
},
"insights": {
"title": "Insights automatici",
"body": "Insights trasforma i tuoi valori in un riepilogo chiaro della salute, con inquadramento di pressione, peso e umore. Chiave personale o predefinita — scegli tu."
},
"integrations": {
"title": "Collegare dispositivi",
"body": "Dalle impostazioni colleghi Withings (sincronizzazione automatica di peso, pressione e pulsazioni), moodLog o il tuo provider di analisi. Tutto resta opzionale e cifrato."
},
"achievements": {
"title": "Accumula serie e badge",
"body": "La pagina Traguardi tiene traccia delle serie di registrazioni giornaliere, dei traguardi di pressione e dei badge di costanza. Un piccolo incentivo per non mollare."
}
}
},
"shell": {
"back": "Indietro",
"skip": "Salta",
"next": "Continua",
"step1of4": "Passo 1 di 4",
"step2of4": "Passo 2 di 4",
"step3of4": "Passo 3 di 4",
"step4of4": "Passo 4 di 4"
},
"goals": {
"title": "Cosa vuoi monitorare?",
"body": "Scegli gli ambiti che ti interessano. Dashboard e promemoria si adatteranno alle tue scelte.",
"helpHint": "Da una a tre priorità funzionano di solito meglio — potrai aggiungerne altre in qualsiasi momento.",
"options": {
"weightManagement": "Gestione del peso",
"bpTracking": "Pressione arteriosa",
"glucoseTracking": "Glicemia",
"sleepImprovement": "Sonno migliore",
"medicationCompliance": "Farmaci",
"generalWellness": "Benessere generale"
}
},
"source": {
"title": "Connetti una sorgente",
"body": "Importa le misurazioni in automatico oppure resta sull'inserimento manuale, decidi tu.",
"recommended": "Consigliato",
"manual": {
"title": "Inserimento manuale",
"body": "Registra tu stesso le misurazioni, quando ti è comodo. Funziona su qualsiasi dispositivo, senza account di terzi."
},
"withings": {
"title": "Withings",
"body": "Bilance, misuratori di pressione e tracker Withings si sincronizzano automaticamente.",
"cta": "Connetti Withings"
},
"appleHealth": {
"title": "Apple Health",
"body": "I dati di iPhone e Apple Watch arrivano tramite l'app HealthLog per iOS.",
"badge": "Con la v1.5 (iOS)",
"disabledHint": "Disponibile al rilascio dell'app iOS."
}
},
"baseline": {
"title": "Qualcosa su di te",
"body": "Quattro campi facoltativi affinano gli intervalli, l'IMC e i promemoria. Puoi modificarli tutti in qualsiasi momento dalle impostazioni.",
"displayNameLabel": "Nome visualizzato",
"displayNamePlaceholder": "Come deve chiamarti HealthLog?",
"displayNameHint": "Compare nel saluto della dashboard e nei report.",
"heightLabel": "Altezza (cm)",
"genderLabel": "Sesso",
"genderNone": "Preferisco non specificare",
"genderMale": "Maschile",
"genderFemale": "Femminile",
"dateOfBirthLabel": "Data di nascita",
"dateOfBirthHint": "Usata solo per le analisi che tengono conto dell'età.",
"saveCta": "Salva e continua"
},
"done": {
"title": "Tutto pronto",
"body": "Benvenuto a bordo. La tua dashboard è pronta.",
"returnCta": "Apri la dashboard"
},
"welcomeBack": {
"title": "Bentornato",
"body": "Hai già completato l'onboarding. Per modificare qualcosa apri le impostazioni — tutto ciò che hai configurato è ancora modificabile.",
"cta": "Apri la dashboard"
},
"welcome": {
"title": "Benvenuto in HealthLog",
"carouselLabel": "Carosello di benvenuto",
"slideOf": "Diapositiva {current} di {total}",
"prevSlide": "Diapositiva precedente",
"nextSlide": "Diapositiva successiva",
"gotoSlide": "Vai alla diapositiva {index}",
"cta": "Inizia",
"slide1": {
"title": "Tieni traccia di ogni segnale",
"body": "Peso, pressione, glicemia, sonno, umore — un unico registro che è tuo."
},
"slide2": {
"title": "Collega le tue sorgenti",
"body": "Sincronizza con Apple Health e Withings o aggiungi le misurazioni a mano. I tuoi dati restano sul tuo server."
},
"slide3": {
"title": "Scopri lo schema",
"body": "Riepiloghi giornalieri, grafici di tendenza e un coach che evidenzia i cambiamenti — tutto sul tuo dispositivo."
}
}
},
"gettingStarted": {
"title": "Primi passi",
"subtitle": "Quick win per sfruttare al massimo HealthLog.",
"progress": "{done} di {total} completati",
"dismissAll": "Nascondi la checklist",
"dismissTooltip": "Nascondi questa voce",
"items": {
"profileTitle": "Configura il profilo",
"profileDescription": "Altezza, data di nascita e sesso sbloccano obiettivi personalizzati.",
"profileCta": "Apri profilo",
"measurementTitle": "Registra la prima misurazione",
"measurementDescription": "Una misurazione attiva il tile — il trend si disegna dalla 5ª misurazione.",
"measurementCta": "Aggiungi misurazione",
"medicationTitle": "Aggiungi un farmaco",
"medicationDescription": "Monitora l’aderenza e ricevi promemoria proprio quando ti servono.",
"medicationCta": "Aggiungi farmaco",
"withingsTitle": "Collega Withings (opzionale)",
"withingsDescription": "Sincronizza peso, pressione e pulsazioni automaticamente dai tuoi dispositivi Withings.",
"withingsCta": "Collega",
"notificationsTitle": "Configura le notifiche",
"notificationsDescription": "Scegli come HealthLog ti ricorda — Telegram, ntfy o Web Push.",
"notificationsCta": "Apri notifiche"
}
},
"trendHints": {
"title": "Primo trend dopo 5 misurazioni",
"remainingOne": "Manca 1 misurazione al trend.",
"remainingMany": "Mancano {count} misurazioni al trend."
},
"settings": {
"researchMode": {
"sectionTitle": "Modalità Ricerca",
"subtitle": "Visualizzazione opzionale di una curva stimata del livello del farmaco GLP-1, derivata dalla farmacocinetica di popolazione pubblicata dall'EMA. Solo lettura: mai una misurazione né un consiglio medico.",
"toggleLabel": "Mostra la curva stimata del livello del farmaco",
"disabledStatus": "Disattivata. La curva è nascosta.",
"enabledStaleStatus": "Il disclaimer è stato aggiornato. Riconferma sotto per rivedere la curva.",
"acknowledgedOn": "Confermato il {date}.",
"rePromptTitle": "Disclaimer aggiornato",
"rePromptBody": "Il disclaimer della modalità Ricerca è stato aggiornato dall'ultima tua conferma. Rileggilo e riconferma per mantenere visibile la curva.",
"rePromptCta": "Riconferma disclaimer",
"disableError": "Impossibile disattivare la modalità Ricerca. Riprova."
},
"shell": {
"sectionsNav": "Settings sections"
},
"sections": {
"account": {
"title": "Account",
"description": "Profile, password, passkeys, and your onboarding tour."
},
"integrations": {
"title": "Integrazioni",
"description": "Withings, moodLog, and other connected services."
},
"notifications": {
"title": "Notifiche",
"description": "Live overview of every configured channel."
},
"dashboard": {
"title": "Cruscotto",
"description": "Tile layout and order."
},
"thresholds": {
"title": "Obiettivi",
"description": "Per metrica: il tuo intervallo target per valori sani."
},
"sources": {
"title": "Fonti",
"description": "Scegli quale fonte prevale quando più di una registra la stessa metrica lo stesso giorno.",
"cardTitle": "Priorità delle fonti per metrica",
"help": "Quando più fonti forniscono lo stesso valore nello stesso giorno (ad es. Withings e Apple Health riportano entrambe 1.200 passi), la fonte in cima conta come lettura canonica. Le altre fonti restano memorizzate per la traccia di controllo.",
"resetDefaults": "Ripristina i valori predefiniti",
"moveUp": "Sposta su",
"moveDown": "Sposta giù",
"saveSuccess": "Priorità delle fonti salvata.",
"saveError": "Salvataggio della priorità delle fonti non riuscito.",
"resetSuccess": "Priorità delle fonti ripristinata ai valori predefiniti.",
"perMetricToggle": "Personalizzazioni per metrica ({count})",
"perMetricHelp": "Metriche che hai personalizzato rispetto all’ordine predefinito. Usa questo elenco per riportare una singola metrica al suo valore predefinito senza toccare le altre.",
"perMetricEmpty": "Nessuna personalizzazione per metrica — ogni metrica usa l’ordine globale qui sopra.",
"resetMetric": "Reimposta",
"deviceTypeToggle": "Priorità per tipo di dispositivo ({count})",
"deviceTypeHelp": "All’interno di una fonte, quale dispositivo prevale. Quando un Apple Watch e un iPhone registrano entrambi i passi, il tipo di dispositivo più in alto conta come lettura canonica.",
"deviceTypeDefault": "Ordine predefinito per tipo di dispositivo",
"resetDeviceTypes": "Reimposta i tipi di dispositivo",
"metrics": {
"steps": "Passi",
"activeEnergy": "Energia attiva",
"walkingRunningDistance": "Distanza a piedi + corsa",
"flightsClimbed": "Piani saliti",
"sleep": "Sonno",
"weight": "Peso",
"bloodPressure": "Pressione arteriosa",
"pulse": "Polso",
"bodyFat": "Massa grassa",
"bodyTemperature": "Temperatura corporea",
"spo2": "Saturazione di ossigeno",
"hrv": "Variabilità della frequenza cardiaca",
"restingHeartRate": "Frequenza cardiaca a riposo",
"vo2Max": "VO2 max"
},
"sourceLabels": {
"WITHINGS": "Withings",
"APPLE_HEALTH": "Apple Health",
"MANUAL": "Inserimento manuale",
"IMPORT": "Importa"
},
"deviceLabels": {
"watch": "Orologio",
"band": "Bracciale",
"ring": "Anello",
"phone": "Telefono",
"scale": "Bilancia",
"other": "Altro",
"unknown": "Sconosciuto"
}
},
"ai": {
"title": "AI Insights",
"description": "Provider, model, key."
},
"api": {
"title": "API & Tokens",
"description": "Bearer tokens for your own scripts and apps — log measurements or medication intake from anywhere."
},
"advanced": {
"title": "Avanzate",
"description": "Interruttore opt-in della modalità Ricerca e zona pericolosa per cancellare in modo irrevocabile tutti i dati di salute."
},
"export": {
"title": "Esporta",
"description": "Download your health data as PDF, CSV, or a full JSON backup.",
"otherOptionsHeading": "Altre opzioni di esportazione",
"hero": {
"eyebrow": "Visita medica",
"valueStatement": "Un referto PDF stampabile per la visita medica — parametri vitali, BMI, classificazione della pressione, aderenza alla terapia e (facoltativamente) l'andamento dell'umore, in poche pagine.",
"cta": "Configura e genera il referto",
"formatHint": "PDF · pronto per la stampa"
},
"actions": {
"download": "Download"
},
"filters": {
"since": "Da",
"until": "Until"
},
"cards": {
"doctorReport": {
"title": "Doctor Report",
"description": "Printable PDF for the doctor's appointment — vitals, BMI, BP classification, medication compliance, mood."
},
"measurementsCsv": {
"title": "Measurements",
"description": "Weight, blood pressure, pulse, glucose, and every other measurement as comma-separated values."
},
"medicationsCsv": {
"title": "Farmaci",
"description": "Your medication list with dosage, schedules, and (optionally) the full intake history.",
"includeIntake": "Include intake history"
},
"moodCsv": {
"title": "Umore",
"description": "Daily mood entries with score, tags, and timestamps."
},
"fullBackup": {
"title": "Full backup",
"description": "Single JSON file with everything — same shape as the weekly auto-backup. Useful for self-restore via admin upload."
}
}
},
"about": {
"title": "About",
"description": "Version, license, links."
}
},
"profile": "Profilo",
"language": "Lingua",
"languageDescription": "Choose the display language of the application.",
"username": "Nome utente",
"height": "Height (cm)",
"dateOfBirth": "Data di nascita",
"dateOfBirthHint": "Used for automatic blood pressure target calculations.",
"gender": "Sesso",
"genderNone": "Not specified",
"genderMale": "Uomo",
"genderFemale": "Donna",
"genderHint": "Used for gender-specific target values.",
"timezone": "Fuso orario",
"timezoneHint": "Used for chart axis labels, reminder times, export timestamps, and Coach context. Stored data is unchanged.",
"timezoneInvalid": "Not a valid IANA timezone.",
"profileSaved": "Profile saved",
"avatar": {
"title": "Foto del profilo",
"description": "Carica una foto archiviata sul tuo server. Appare in tutta l'app al posto di un servizio di avatar esterno.",
"upload": "Carica foto",
"replace": "Sostituisci foto",
"remove": "Rimuovi",
"hint": "JPEG, PNG o WebP. Fino a 2 MB e 2048×2048 pixel.",
"uploaded": "Foto del profilo aggiornata",
"removed": "Foto del profilo rimossa",
"invalidType": "Tipo di immagine non supportato. Usa JPEG, PNG o WebP.",
"tooLarge": "L'immagine supera il limite di 2 MB.",
"error": "Impossibile aggiornare la foto del profilo. Riprova."
},
"changePassword": "Change password",
"changePasswordDescription": "Replace your current password with a new one.",
"passwordReset": "Password reset",
"currentPassword": "Current password",
"newPassword": "New password",
"confirmNewPassword": "Confirm new password",
"passwordMismatch": "New passwords do not match",
"passwordUpdated": "Password updated successfully",
"passkeys": "Passkeys",
"registeredPasskeys": "Registered Passkeys",
"passkeysDescription": "Passkeys allow secure login without a password.",
"passkeyName": "Nome",
"passkeyDevice": "Device",
"passkeyBackup": "Backup",
"passkeyCreated": "Created",
"passkeyActions": "Azioni",
"noPasskeys": "No passkeys registered.",
"addPasskey": "Add passkey",
"passkeyAdded": "Passkey added successfully!",
"passkeyOptionsError": "Could not load passkey options",
"passkeyRegistrationFailed": "Passkey registration failed",
"passkeyRegistrationCancelled": "Passkey registration cancelled",
"passkeyNotSupported": "Your browser or device doesn't support passkeys yet. Try a different browser or device.",
"passkeyAlreadyRegistered": "This device is already registered as a passkey for your account.",
"passkeySecurityBlocked": "Your browser blocked the passkey request for security reasons. Make sure you're on a trusted HTTPS origin and try again.",
"passkeyTimeout": "The passkey prompt timed out. Please try again.",
"passkeyUnknownError": "Passkey registration failed: {message}",
"deletePasskey": "Delete passkey?",
"deletePasskeyDescription": "The passkey will be permanently deleted.",
"singleDevice": "Single device",
"multiDevice": "Multi-device",
"backedUp": "backed up",
"telegram": "Telegram Notifications",
"telegramDescription": "Get reminders for missed medication intake via Telegram.",
"telegramSaved": "Telegram settings saved",
"botToken": "Bot Token",
"chatId": "Chat ID",
"enableNotifications": "Enable notifications",
"testMessage": "Test message",
"testSent": "Test message sent!",
"telegramStep1": "1. Create a bot via @BotFather in Telegram and copy the token.",
"telegramStep2": "2. Send /start to your bot to activate the chat.",
"telegramStep3": "3. Find your Chat ID via @userinfobot or the Bot API.",
"ntfy": "ntfy",
"ntfyDescription": "Notifications via ntfy (self-hosted or ntfy.sh).",
"ntfyEnable": "Enable ntfy",
"ntfyServer": "Server URL",
"ntfyTopic": "Topic",
"ntfyAuthToken": "Auth Token (optional)",
"ntfyAuthTokenHint": "Only needed for private topics with access control.",
"webPush": "Browser Push",
"webPushDescription": "Receive notifications directly in your browser, even when HealthLog is not open.",
"webPushNotSupported": "Your browser does not support push notifications.",
"webPushDenied": "Push notifications are blocked. Allow them in your browser settings.",
"webPushNotConfigured": "Web Push is not configured on the server.",
"webPushSubscribe": "Enable push",
"webPushUnsubscribe": "Disable push",
"webPushSubscribed": "Push notifications enabled!",
"webPushUnsubscribed": "Push notifications disabled.",
"webPushSubscribeFailed": "Activation failed",
"webPushActive": "Attivo",
"kiInsightsDescription": "Optional: Save your OpenAI key for daily, automatic evaluations in Insights.",
"codexConnected": "ChatGPT connected successfully! Insights are now active.",
"codexDisconnected": "ChatGPT connection removed.",
"codexConnectionFailed": "ChatGPT connection failed. Please try again.",
"rawData": "Send raw data",
"rawDataOnDescription": "Aggregated metrics plus anonymized raw points from the last 30 days are sent. This includes per-metric measurements (for example weight, blood pressure, pulse) with time context so the provider can detect patterns, outliers, and correlations more reliably. Name, email, and direct account identifiers are not transmitted.",
"rawDataOffDescription": "Only summarized metrics are sent (for example averages, trends, minimum/maximum). No individual points and no exact time context. This is more privacy-preserving, but the provider can be less precise for short-term patterns and fluctuations.",
"rawDataWarning": "Raw mode enabled: the provider receives additional anonymized points from the last 30 days for higher analysis accuracy.",
"regenerateInsights": "Regenerate reports",
"regenerateSuccess": "Reports regenerated successfully",
"regenerateRateLimit": "Please wait — you've hit the hourly limit for analyses.",
"lastGeneratedAt": "Last generated",
"ai": {
"chatgptConnectedBadge": "ChatGPT connected",
"adminAiActiveBadge": "Admin provider active",
"connectionExpiredBadge": "Connection expired",
"connectedSince": "Connected since {when}.",
"deviceCodeHeading": "Finish connecting on chatgpt.com",
"deviceCodeStep1": "Open this link on any device:",
"deviceCodeStep2": "Enter this one-time code:",
"deviceCodeStep3": "Approve the connection — this page updates automatically.",
"deviceCodeCopy": "Copia",
"deviceCodeWaiting": "Waiting for approval…",
"deviceCodeCancel": "Annulla",
"oauthNotConfigured": "ChatGPT OAuth is not configured on this instance — use your own API key below instead.",
"modelLabel": "Model",
"modelOptionDefault": "— Default —",
"modelOptionCustom": "Custom…",
"customModelLabel": "Custom model name",
"anthropicKeyLabel": "Anthropic API key",
"baseUrlLabel": "Base URL",
"localKeyLabel": "API key (optional)",
"savedPreview": "(saved {preview})",
"savedShort": "(saved)",
"saveCta": "Salva",
"saved": "Salvato",
"saveFailed": "Save failed",
"errorGeneric": "Errore",
"providerChain": {
"types": {
"codex": "ChatGPT (Codex)",
"openai": "OpenAI (your key)",
"anthropic": "Anthropic (Claude)",
"local": "Local model",
"admin-openai": "Admin OpenAI"
},
"title": "Fallback chain",
"description": "If the primary provider fails, HealthLog walks the chain in order. Drag the rows to reorder, toggle the switch to disable a provider without removing it.",
"moveUp": "Move up",
"moveDown": "Move down",
"removeFromChain": "Remove from chain",
"addProvider": "Add provider",
"addNoneAvailable": "All providers already in chain",
"saveOrder": "Save chain order",
"saved": "Chain saved",
"saveFailed": "Saving the chain failed",
"resetDefaults": "Reset to defaults",
"resetConfirmTitle": "Reset chain to defaults?",
"resetConfirmBody": "The chain reverts to Codex → OpenAI → Anthropic → Local → Admin OpenAI. Your saved credentials are not touched."
},
"activeProviderHeading": "Active provider",
"activeProviderBody": "Pick the provider you want to use first. The form below configures only the selected provider; the fallback chain at the bottom decides what happens if it fails.",
"activeProviderLabel": "Primary provider",
"providerConfigTitle": "Provider configuration",
"providerSelect": {
"codex": "ChatGPT account (Codex)",
"openai": "OpenAI (your API key)",
"anthropic": "Anthropic (Claude)",
"local": "Local model (OpenAI-compatible)",
"admin-openai": "Admin-provided OpenAI"
},
"openai": {
"modelSelect": "Model",
"modelOptionCustom": "Custom slug…",
"modelCustomLabel": "Custom model slug",
"modelCustomPlaceholder": "gpt-5",
"baseUrlLabel": "Base URL (advanced)",
"baseUrlPlaceholder": "https://api.openai.com/v1",
"baseUrlHelp": "Override only when using an OpenAI-compatible gateway. Leave blank for OpenAI itself.",
"showAdvanced": "Show advanced",
"hideAdvanced": "Hide advanced",
"apiKey": "API key",
"apiKeyPlaceholder": "sk-…"
},
"codex": {
"statusConnected": "Connected",
"statusDisconnected": "Not connected",
"statusExpired": "Connection expired",
"connectButton": "Connect with ChatGPT",
"disconnectButton": "Disconnect",
"modelSlugLabel": "Model slug",
"modelSlugBody": "Codex uses the model your ChatGPT subscription routes to. The CODEX_MODEL environment variable lets ops override this on the instance.",
"lastInsight": "Last insight: {when}"
},
"adminOpenai": {
"title": "Admin OpenAI",
"body": "Operator-provided OpenAI key. Used as a last-ditch fallback when no personal provider is configured. There is nothing to configure on this row — visibility means the operator has set it up.",
"notConfigured": "The operator has not configured a shared OpenAI key on this instance."
},
"testProvider": "Test active provider",
"testSuccess": "OK — {provider} ({model})",
"testFailedShort": "Test failed: {message}",
"disableCoach": {
"title": "Nascondi il Coach",
"description": "Nasconde il pulsante e il pannello del Coach su tutte le pagine.",
"toggleAria": "Nascondi il pulsante e il pannello del Coach",
"savedHidden": "Coach nascosto.",
"savedShown": "Coach visibile.",
"saveError": "Impossibile salvare la modifica. Riprova."
}
},
"dashboard": {
"units": {
"title": "Unità",
"description": "Scegli come vengono mostrate distanze e velocità nei grafici e nei riquadri.",
"metric": "Metrico",
"imperial": "Imperiale",
"saved": "Preferenza unità salvata.",
"saveError": "Impossibile salvare la preferenza delle unità."
}
},
"withings": "Withings",
"withingsDescription": "Connect your Withings scale and blood pressure monitors.",
"withingsCredentials": "API Credentials",
"withingsClientId": "Client ID",
"withingsClientSecret": "Client Secret",
"withingsCredentialsSaved": "Credentials saved",
"withingsCredentialsSavedPlaceholder": "Saved — enter new to replace",
"withingsCredentialsSavedPlaceholderSecret": "Saved — enter new to replace",
"withingsSaveCredentials": "Save credentials",
"configured": "Configured",
"withingsSync": "Sync now",
"withingsFullSync": "Sync all data",
"withingsFullSyncTitle": "Full synchronization?",
"withingsFullSyncDescription": "All available Withings data will be fully synchronized. This may take some time depending on your history.",
"withingsSyncResult": "{count} measurements synchronized",
"withingsFullSyncResult": "{count} measurements fully synchronized",
"withingsSyncFailed": "Sync failed",
"withingsSynchronize": "Synchronize",
"withingsDisconnect": "Disconnect",
"withingsDisconnectTitle": "Disconnect Withings?",
"withingsDisconnectDescription": "The connection to Withings will be disconnected. Previously synced data will be preserved.",
"withingsConnect": "Connect with Withings",
"withingsNoCredentials": "Please enter your API credentials above to connect Withings.",
"integrations": {
"withings": {
"reconnect": {
"banner": {
"title": "Activity sync available",
"body": "Your Withings connection was authorised before activity sync was added. Reconnect once to enable steps, active energy, walking + running distance, and floors-climbed ingest from your Withings devices.",
"action": "Reconnect Withings"
}
}
}
},
"integrationPill": {
"connected": "Connesso",
"errorReconnect": "Errore — riconnetti",
"warningServerError": "Connesso, errore del server",
"parkedReconnect": "In pausa — riconnettere manualmente",
"notConnected": "Non connesso",
"justNow": "just now",
"minutesAgo": "{count} min ago",
"hoursAgo": "{count} h ago",
"daysAgo": "{count} d ago",
"ariaLabel": "Integration status",
"resumeCta": "Riconnetti",
"resumeSuccess": "Integrazione ripresa",
"resumeError": "Riconnessione fallita"
},
"apiTokens": "API Tokens",
"apiTokensDescription": "Create API tokens for external medication intake (e.g., Shortcuts, automations).",
"tokenNamePlaceholder": "Token name (e.g., iPhone Shortcut)",
"tokenCreated": "Token created — copy it now! It won't be shown again.",
"tokenRevoke": "Revoke token?",
"tokenRevokeDescription": "The token will be permanently deactivated. Applications using it will lose access.",
"tokenRevoked": "Revoked",
"tokenExpired": "Expired",
"tokenActive": "Attivo",
"activeTokensTitle": "Active tokens",
"revokedTokensTitle": "Revoked tokens ({count})",
"tokenTableName": "Nome",
"tokenTablePermissions": "Permissions",
"tokenTableStatus": "Stato",
"tokenTableCreated": "Created",
"tokenTableLastUsed": "Last used",
"tokenTableActions": "Azioni",
"noActiveTokens": "No active tokens available.",
"tokenNeverUsed": "Never",
"apiEndpointsTitle": "API endpoints",
"apiEndpointsDescription": "Overview of currently available external endpoint(s) for token-based ingestion.",
"apiEndpointMethod": "Method",
"apiEndpointPath": "Path",
"apiEndpointAuth": "Authentication",
"apiEndpointExample": "Body example",
"collapse": "Collapse",
"expand": "Expand",
"dangerZone": "Delete All Data",
"dangerZoneTitle": "Danger zone",
"dangerZoneDescription": "Deletes all your health data and integrations. Your user account will be preserved.",
"dangerZoneConfirm": "Delete all data?",
"dangerZoneConfirmDescription": "This will permanently delete all your health data and integrations. Your user account will be preserved.",
"dangerZoneSuccess": "All personal data has been deleted",
"dangerZoneDeleteFailed": "Deletion failed",
"finalDelete": "Delete permanently",
"deleteAccountCardTitle": "Delete account entirely",
"deleteAccountCardDescription": "Deletes your account along with passkeys, audit log, and sessions. This cannot be undone.",
"deleteAccountCta": "Delete account",
"deleteAccountConfirmTitle": "Delete account permanently?",
"deleteAccountConfirmDescription": "Your account, all health data, passkeys, sessions, and audit entries will be permanently deleted. You will be signed out immediately after.",
"deleteAccountSuccess": "Account deleted — signing you out.",
"deleteAccountFailed": "Account could not be deleted",
"deleteAccountFinal": "Delete permanently",
"saved": "Salvato",
"savingError": "Error saving",
"moodLogTitle": "moodLog",
"moodLogDescription": "Import mood data from moodLog",
"moodLogUrl": "moodLog URL",
"moodLogUrlPlaceholder": "https://mood.example.com",
"moodLogApiKey": "API Key",
"moodLogApiKeyPlaceholder": "ml_...",
"moodLogWebhookSecret": "Webhook Secret",
"moodLogWebhookSecretHelp": "Enter this secret in moodLog as webhook secret",
"moodLogSync": "Start sync",
"moodLogFullSync": "Full sync",
"moodLogFullSyncConfirm": "Synchronize fully",
"moodLogFullSyncTitle": "Full sync?",
"moodLogFullSyncDescription": "All available mood data will be fully synchronized.",
"moodLogDisconnect": "Disconnect",
"moodLogDisconnectTitle": "Disconnect moodLog?",
"moodLogDisconnectDescription": "The connection will be removed and all imported mood data will be deleted.",
"moodLogEntries": "Entries",
"moodLogSyncResult": "{count} entries synchronized",
"moodLogSyncFailed": "Sync failed",
"moodLogSaved": "moodLog connection saved",
"moodLogDisconnected": "moodLog disconnected",
"about": {
"version": "App version",
"gitSha": "Build",
"builtAt": "Built {time}",
"builtAtLabel": "Built",
"license": "License",
"repository": "Source code",
"changelog": "Changelog",
"docs": "Documentation",
"linksHeading": "Fonti e documentazione",
"newerAvailable": "Nuova versione: {tag}",
"tourReplay": "Rivedi il tour",
"tourReplayHint": "Guarda il tour della dashboard — utile se l'hai saltato alla prima visita."
},
"testConnection": {
"test": "Test connection",
"testing": "Testing…",
"ok": "Connected (latency {latency} ms)",
"errors": {
"credentials_rejected": "Credentials rejected — check your token",
"rate_limited": "Rate-limited by the upstream",
"timeout": "Request timed out",
"upstream_error": "Upstream returned an error",
"connection_failed": "Connection failed",
"not_configured": "Not configured",
"url_not_public": "URL is not a public endpoint",
"url_invalid": "URL is invalid",
"redirected": "Endpoint redirects — check the URL",
"endpoint_not_found": "Endpoint not found at the URL",
"credentials_unreadable": "Credentials cannot be decrypted",
"upstream_invalid_json": "Upstream sent invalid JSON",
"vapid_not_configured": "Web Push not configured (VAPID keys missing)",
"rate_limited_self": "Too many test requests",
"generic": "Test failed"
}
},
"notificationStatus": {
"title": "Channel reliability",
"description": "Live status of every notification channel — Auto-disabled means HealthLog stopped retrying after a permanent error.",
"emptyDescription": "No channels configured yet. Add a channel below to start tracking its delivery health.",
"stateActive": "Attivo",
"stateAutoDisabled": "Auto-disabled",
"stateSendingPaused": "Sending paused",
"stateManuallyDisabled": "Disabilitato",
"lastSuccess": "Last successful send",
"lastFailure": "Last failure",
"consecutiveFailures": "Consecutive failures",
"disabledReason": "Reason",
"nextRetry": "Next retry",
"reEnable": "Re-enable",
"sendTest": "Send test"
},
"identity": {
"description": "Dati facoltativi per l’esportazione della cartella clinica (copertina PDF + esportazione FHIR). Tutti i campi sono facoltativi.",
"fullName": "Nome completo",
"fullNamePlaceholder": "es. Maria Rossi",
"insurer": "Assicurazione sanitaria",
"insurerPlaceholder": "es. AOK Bayern",
"insuranceNumber": "Numero di assicurato (KVNR)",
"insuranceNumberHint": "10 caratteri: una lettera + nove cifre (es. A123456780)."
},
"healthRecord": {
"title": "Esporta cartella clinica",
"description": "Genera una cartella clinica completa per il medico — come PDF, strutturata (FHIR) o pacchetto combinato.",
"format": "Formato",
"format_pdf": "PDF",
"format_fhir": "Strutturato (FHIR)",
"format_package": "Pacchetto: PDF + FHIR",
"range": "Periodo",
"range90": "Ultimi 90 giorni",
"range180": "Ultimi 6 mesi",
"range365": "Ultimi 12 mesi",
"practiceName": "Studio (facoltativo)",
"practiceNamePlaceholder": "es. Dr. Rossi",
"includedData": "Dati inclusi",
"groupVitals": "Parametri vitali",
"groupCardio": "Cuore & fitness",
"groupActivity": "Attività & sonno",
"weight": "Peso",
"bp": "Pressione sanguigna",
"pulse": "Polso",
"oxygenSaturation": "Saturazione di ossigeno",
"bodyFat": "Massa grassa",
"bodyComposition": "Composizione corporea",
"restingHeartRate": "Frequenza a riposo",
"hrv": "Variabilità della frequenza cardiaca",
"vo2max": "VO₂max",
"steps": "Passi",
"distance": "Distanza",
"sleep": "Sonno",
"glucose": "Glicemia",
"medications": "Farmaci e aderenza",
"mood": "Umore (disattivato di default — dati sensibili)",
"bmi": "BMI",
"includeCharts": "Incorpora grafici di tendenza (solo PDF)",
"includeAiSummary": "Aggiungi riepilogo IA (non validato clinicamente)",
"fhirNote": "L’output strutturato segue lo standard FHIR R4 (compatibile ePA).",
"generate": "Genera",
"error": "Esportazione non riuscita ({code})."
},
"globalExcludedInjectionSitesLabel": "Siti di iniezione esclusi globalmente",
"globalExcludedInjectionSitesHint": "I siti elencati qui non vengono proposti per alcun farmaco e vengono rifiutati al momento della registrazione di una dose, anche se un farmaco li preferisce."
},
"admin": {
"title": "Administration",
"subtitle": "System status, users, and settings",
"settingsSaveError": "Failed to save settings",
"systemStatus": "System Status",
"database": "Database",
"databaseConnected": "Connected",
"databaseError": "Errore",
"startedAt": "Started",
"users": "Users",
"measurementsCount": "Measurements",
"activeTokens": "Active API Tokens",
"activeSessions": "Active Sessions",
"loadingStatus": "Loading status...",
"systemStatusLoadError": "Failed to load system status.",
"systemStatusRetry": "Riprova",
"adminSettingsLoadError": "Failed to load admin settings. Toggles below may not reflect the live state — refresh the page.",
"hostMetrics": {
"title": "Host load",
"load1": "Load (1m)",
"memUsedPercent": "Memory",
"diskBusyPercent": "Disk I/O",
"last2hours": "Last 2 hours",
"empty": "Sampling started — data appears in 1–2 minutes.",
"loadError": "Failed to load host metrics. Try refreshing the page."
},
"aiQuality": {
"title": "Insights Quality",
"loading": "Loading feedback summary...",
"loadError": "Failed to load Insights quality summary. Try refreshing the page.",
"empty": "No feedback yet. The aggregator runs daily at 04:00 — once users start rating recommendations, helpful-rate bands appear here.",
"windowLabel": "Last {days} days",
"generatedAtLabel": "Generated",
"colSeverity": "Severity",
"colMetric": "Metric",
"colProvider": "Provider",
"colPromptVersion": "Prompt",
"colHelpful": "Helpful",
"colNotHelpful": "Not helpful",
"colHelpfulRate": "Helpful rate"
},
"coachFeedback": {
"title": "Coach Feedback",
"loading": "Loading Coach feedback summary...",
"loadError": "Failed to load Coach feedback summary. Try refreshing the page.",
"empty": "No Coach feedback yet. The aggregator runs daily at 04:00 — once users rate Coach replies, helpful-rate bands appear here.",
"windowLabel": "Last {days} days",
"generatedAtLabel": "Generated",
"colPromptVersion": "Prompt version",
"colTone": "Tone",
"colVerbosity": "Verbosity",
"colHelpful": "Helpful",
"colNotHelpful": "Not helpful",
"colN": "n",
"colHelpfulRate": "Helpful rate"
},
"workerStatus": "Job Worker",
"workerRunning": "Running",
"workerStopped": "Stopped",
"lastReminderCheck": "Last Reminder Check",
"appSettings": "Application Settings",
"registrationEnabled": "Allow registration",
"registrationEnabledDescription": "When disabled, new users cannot register.",
"defaultLanguage": "Default language",
"defaultLanguageDescription": "Used for new users and as fallback.",
"defaultUserTimezone": "Default timezone for new accounts",
"defaultUserTimezoneDescription": "Used for new accounts that don't carry a browser-detected zone. Does not affect existing users.",
"defaultUserTimezoneFallback": "Europe/Berlin (default)",
"servicesGlobal": "Services (global)",
"servicesGlobalDescription": "Disabled services are not available to any user.",
"telegramGlobal": "Allow Telegram notifications.",
"ntfyGlobal": "Allow ntfy notifications.",
"webPushGlobal": "Allow browser push notifications.",
"moodLogGlobal": "Allow mood-log reminders.",
"integrationWebPush": "Web Push",
"integrationBugReport": "Bug Report",
"offlineGeoLabel": "Dati geografici",
"offlineGeoEnabled": "Offline (GeoLite2)",
"offlineGeoFallback": "Fallback (ipwho.is) — imposta MAXMIND_LICENSE_KEY in CI",
"apiGlobal": "Allow API endpoints and API tokens.",
"umamiTitle": "Umami",
"umamiDescription": "Web analytics with Umami",
"glitchtipTitle": "GlitchTip",
"glitchtipDescription": "Error tracking with GlitchTip",
"webPushVapidTitle": "Web Push VAPID",
"umamiEnabled": "Enable Umami tracking.",
"umamiScriptUrl": "Umami script URL",
"umamiScriptUrlPlaceholder": "https://analytics.example.com/script.js",
"umamiWebsiteId": "Umami website ID",
"umamiWebsiteIdPlaceholder": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"glitchtipEnabled": "Enable GlitchTip error tracking.",
"glitchtipDsn": "GlitchTip DSN",
"glitchtipDsnPlaceholder": "https://<public-key>@glitchtip.example.com/<project-id>",
"glitchtipEnvironment": "GlitchTip environment",
"glitchtipEnvironmentPlaceholder": "production",
"webPushVapidDescription": "Configure VAPID keys and subject here so browser push works without environment variables.",
"webPushVapidPublicKey": "VAPID public key",
"webPushVapidPublicKeyPlaceholder": "BElx... (Base64URL)",
"webPushVapidPrivateKey": "VAPID private key",
"webPushVapidPrivateKeyPlaceholder": "Optional: enter a new private key",
"webPushVapidSubject": "VAPID subject",
"webPushVapidSubjectPlaceholder": "mailto:you@example.com",
"configured": "Configured",
"monitoringTestSuccess": "Test event sent",
"monitoringTestFailed": "Monitoring test failed",
"bugReportGithub": "Bug report (GitHub Issues)",
"bugReportGithubDescription": "Configure GitHub issue token and repository for incoming bug reports.",
"bugReportEnabledLabel": "Bug reports enabled",
"bugReportEnabledDescription": "When off, the in-app report button hides — token and repository stay configured.",
"assistant": {
"title": "Superfici dell'assistente",
"description": "Ogni interruttore nasconde una superficie guidata dal modello in tutta l'app senza rimuovere la configurazione del provider. Il master forza ogni opzione secondaria su off.",
"master": {
"title": "Assistente attivo",
"description": "Interruttore master per ogni superficie guidata dal modello. Quando spento, ogni opzione secondaria qui sotto è forzata su off."
},
"coach": {
"title": "Coach",
"description": "Drawer chat, pulsante di lancio e FAB mobile su ogni pagina Insights."
},
"briefing": {
"title": "Briefing giornaliero",
"description": "Scheda briefing, narrazione hero strip, griglia raccomandazioni e l'azione Rigenera."
},
"insightStatus": {
"title": "Schede di stato",
"description": "Schede di stato per metrica su ogni sotto-pagina /insights."
},
"correlations": {
"title": "Correlazioni",
"description": "Narrazione del tile di correlazione sulla panoramica Insights."
},
"healthScoreExplainer": {
"title": "Spiegatore Health-Score",
"description": "L'icona ? accanto alla riga del delta dell'Health-Score. La cifra del delta resta visibile in ogni caso."
}
},
"bugReportRepo": "Repository",
"bugReportRepoPlaceholder": "owner/repo",
"bugReportToken": "Issue token",
"bugReportTokenPlaceholder": "ghp_...",
"userManagement": "User Management",
"userName": "Nome",
"userEmail": "E-mail",
"userRole": "Role",
"userPasskeys": "Passkeys",
"userCreated": "Created",
"userActions": "Azioni",
"editUser": "Edit user",
"editUserTitle": "Edit user: {name}",
"demoteToUser": "Demote to user",
"promoteToAdmin": "Promote to admin",
"toUser": "Make user",
"toAdmin": "Make admin",
"ownRoleUnchangeable": "Cannot change own role",
"resetPassword": "Reset password",
"resetPasswordTitle": "Reset password: {name}",
"newPassword": "New password",
"newPasswordPlaceholder": "At least 12 characters",
"passwordReset": "Password has been reset",
"reset": "Reimposta",
"loadingUsers": "Loading users...",
"apiTokens": "API Tokens",
"tokenUser": "User",
"tokenName": "Nome",
"tokenPermissions": "Permissions",
"tokenPermissionAll": "Tutto",
"tokenPermissionAllTooltip": "Wildcard permission — this token can call every API route.",
"tokenStatus": "Stato",
"tokenLastUsed": "Last used",
"tokenCreated": "Created",
"tokenNeverUsed": "Never",
"tokensEmptyTitle": "No API tokens yet",
"tokensEmptyDescription": "Tokens are issued when a native client signs in or via Settings → Account.",
"loginOverview": "Login Overview",
"allAuthEvents": "All auth events",
"failedOnly": "Failed only",
"loginEmptyDescription": "Sign-ins, sign-outs, and passkey changes will show up here.",
"loginEmptyFailedTitle": "No failed sign-in attempts",
"loginEmptyFailedDescription": "That's the safe state. Switch to all events to see successful sign-ins.",
"loginEmptyResetFilter": "Show all events",
"showingEntries": "Mostrando {count} di {total} voci di autenticazione",
"status": "Stato",
"action": "Action",
"ip": "IP",
"location": "Location",
"timestamp": "Ora",
"provider": "Provider",
"providerPassword": "Password",
"providerPasskey": "Passkey",
"providerApiToken": "API token",
"providerWithings": "Withings",
"providerUnknown": "Sconosciuto",
"outcome": "Outcome",
"outcomeSuccess": "Successo",
"outcomeFailed": "Failed",
"auditDetails": "Details",
"deleteAllData": "Delete all data globally",
"deleteAllDescription": "Deletes all measurement, medication, integration, and log data for all users. User accounts will be preserved.",
"deleteAllConfirm": "Really delete all data?",
"deleteAllConfirmDescription": "This will permanently delete all measurements, medications, intake events, API tokens, Withings connections, open authentication challenges, notification channels (Telegram, ntfy, Web Push), push subscriptions, and queued Telegram message deletions for all users. User accounts, the audit log, and submitted feedback are preserved so the wipe itself remains traceable and bug reports stay triageable.",
"deleteButton": "Delete all data",
"finalDelete": "Delete permanently",
"deletedResult": "Deleted: {measurements} measurements, {medications} Farmaci,{intakeEvents} intakes, {apiTokens} API tokens, {withingsConnections} Withings connections, {authChallenges} auth challenges, {notificationChannels} notification channels, {pushSubscriptions} push subscriptions, {telegramScheduledDeletions} queued Telegram deletions. Feedback rows preserved.",
"authRegister": "Registration",
"authLogin": "Accedi",
"authLoginPasskey": "Passkey login",
"authLoginPassword": "Password login",
"authLoginFailed": "Failed",
"authLogout": "Disconnetti",
"authPasskeyRegister": "Passkey added",
"authPasskeyDelete": "Passkey deleted",
"authTokenAutoissueNative": "Native client token issued",
"authTokenRefresh": "Token refreshed",
"authTokenRevoke": "Token revoked",
"medicationReminders": "Medication Reminders",
"medicationRemindersDescription": "Thresholds for reminder badge color transitions on medication cards.",
"reminderLateMinutes": "Late threshold (minutes)",
"reminderLateMinutesDescription": "Minutes after window end until the badge changes from yellow to orange.",
"reminderMissedMinutes": "Missed threshold (minutes)",
"reminderMissedMinutesDescription": "Minutes after window end until the intake is considered missed.",
"notificationTestSend": "Send test",
"notificationTestSuccess": "Test notification sent",
"notificationTestFailed": "Failed to send test notification",
"reminderCheckRun": "Run reminder check",
"reminderCheckSuccess": "Reminder check completed",
"reminderCheckFailed": "Failed to run reminder check",
"reminderCheckResults": "Results",
"reminderCheckNotifOn": "Notifications on",
"reminderCheckNotifOff": "Notifications off",
"reminderCheckEventsToday": "Events today",
"reminderCheckNotifSent": "Sent",
"feedback": {
"tabOpen": "Open",
"tabAcknowledged": "Acknowledged",
"tabResolved": "Resolved",
"tabArchived": "Archived",
"subject": "Subject",
"category": "Category",
"user": "User",
"createdAt": "Submitted",
"actions": "Azioni",
"details": "Details",
"emptyTitle": "All caught up",
"emptyDescription": "No user feedback in this status. Submitted bugs, questions, and feature requests will appear here.",
"loading": "Loading feedback...",
"anonymous": "anonymous",
"categoryBug": "Bug",
"categoryFeature": "Feature",
"categoryQuestion": "Question",
"categoryOther": "Other",
"metadataHeading": "Metadata",
"metaUrl": "URL",
"metaLocale": "Locale",
"metaUserAgent": "User agent",
"metaAppVersion": "App version",
"screenshotHeading": "Screenshot",
"adminNote": "Admin note",
"adminNotePlaceholder": "Internal note (not visible to user)",
"saveNote": "Save note",
"noteSaved": "Note saved",
"actionAcknowledge": "Acknowledge",
"actionResolve": "Resolve",
"actionArchive": "Archive",
"actionPublishGithub": "Publish to GitHub",
"publishedToGithub": "Published to GitHub",
"viewIssue": "View issue",
"publishSuccess": "Issue created",
"publishFailed": "GitHub publish failed",
"updateFailed": "Update failed",
"archiveConfirm": "Archive this feedback entry?",
"submittedBy": "Submitted by"
},
"shell": {
"overview": "Panoramica",
"sectionsNav": "Admin sections"
},
"overview": {
"welcomeTitle": "Benvenuto,{name}",
"welcomeSubtitle": "You are signed in as administrator. Pick a section to manage HealthLog.",
"snapshotTitle": "System snapshot",
"snapshotVersion": "Version",
"snapshotDatabase": "Database",
"snapshotWorker": "Worker",
"snapshotStarted": "Started",
"snapshotBuildSha": "Build SHA",
"snapshotBuiltAt": "Built at",
"snapshotOfflineGeo": "Dati geografici",
"snapshotOfflineGeoOn": "Offline (GeoLite2)",
"snapshotOfflineGeoOff": "Fallback (ipwho.is)",
"snapshotLoadError": "Failed to load system snapshot.",
"snapshotLoading": "Loading snapshot...",
"auditTitle": "Recent activity",
"auditEmpty": "No recent audit entries.",
"auditLoadError": "Failed to load recent activity.",
"auditLoading": "Loading activity...",
"auditViewAll": "View all"
},
"section": {
"system-status": {
"title": "System Status",
"subtitle": "Worker, database, and integration health at a glance."
},
"general": {
"title": "General",
"subtitle": "Registration, default language, and other app-wide toggles."
},
"services": {
"title": "Services",
"subtitle": "Enable or disable notification channels and integrations system-wide."
},
"integrations": {
"title": "Integrazioni",
"subtitle": "Configure Umami, GlitchTip, Web Push, and bug reports."
},
"ai-quality": {
"title": "Insights Quality",
"subtitle": "Helpfulness scores grouped by severity and provider, from the last 30 days of user feedback."
},
"assistant": {
"title": "Superfici dell'assistente",
"subtitle": "Attiva o disattiva ciascuna superficie guidata dal modello senza rimuovere la configurazione del provider."
},
"coach-feedback": {
"title": "Coach Feedback",
"subtitle": "Helpful-rate per Coach prompt version, tone, and verbosity from the last 30 days."
},
"feedback": {
"title": "Feedback",
"subtitle": "Triage user feedback, bug reports, and feature requests."
},
"reminders": {
"title": "Reminders",
"subtitle": "Tune medication reminder thresholds and run a manual check."
},
"users": {
"title": "Users",
"subtitle": "Manage user accounts, roles, and active sessions.",
"filter": {
"all": "Tutto",
"admin": "Admins",
"user": "Users"
},
"forceLogout": "Force logout",
"forceLogoutConfirmTitle": "Force logout {name}?",
"forceLogoutConfirmBody": "All active sessions for this user will be revoked. They will need to sign in again on every device.",
"forceLogoutSuccess": "Logged {name} out of {count} session(s)",
"forceLogoutFailed": "Failed to force logout",
"cannotLogoutSelf": "Cannot force-logout yourself",
"emptyTitle": "No users in this view",
"emptyDescription": "There are no users matching the current filter.",
"emptyResetFilter": "Show all users"
},
"api-tokens": {
"title": "API Tokens",
"subtitle": "Active bearer tokens issued to native clients and integrations."
},
"login-overview": {
"title": "Login Overview",
"subtitle": "Audit trail of authentication and admin events."
},
"auditLog": {
"filterActor": "Actor (user id or username)",
"filterAction": "Action",
"filterActionAll": "All actions",
"filterTarget": "Target (id or path)",
"filterDate": "Date range",
"range24h": "Last 24 hours",
"range7d": "Ultimi 7 giorni",
"range30d": "Ultimi 30 giorni",
"rangeAll": "Tutto il tempo",
"perPage": "Per page",
"prev": "Previous",
"next": "Avanti",
"pageOf": "Pagina {page} di {total}",
"export": "Export CSV",
"empty": "No audit entries match the current filters."
},
"app-logs": {
"title": "App Logs",
"subtitle": "Tail the most recent structured wide-events emitted by this process.",
"processNote": "Showing app-process logs only — worker-process logs go to Loki when that integration is configured. Buffer is volatile and capped at 500 entries.",
"filterTraceId": "Trace ID",
"filterAction": "Action contains…",
"filterLevel": "Level",
"levelAll": "All levels",
"filterRange": "Time window",
"range15m": "Last 15 minutes",
"range1h": "Last hour",
"range6h": "Last 6 hours",
"rangeAll": "Whole buffer",
"colLevel": "Level",
"colTimestamp": "Timestamp",
"colAction": "Action",
"colDuration": "Duration",
"colTraceId": "Trace",
"showing": "Showing {count} of up to {bufferMax} buffered events",
"empty": "Buffer is empty",
"emptyDescription": "No events match the current filters yet. Hit refresh after triggering some traffic.",
"refresh": "Refresh",
"eventDetails": "Event details",
"closeDetails": "Close details"
},
"backups": {
"title": "Backups",
"subtitle": "Weekly per-user data snapshots stored in PostgreSQL.",
"description": "Each user gets one rolling snapshot per backup type. Sizes show the encrypted blob — payloads are not downloadable from this page.",
"runNow": "Backup now",
"runEnqueued": "Backup job enqueued",
"runFailed": "Failed to enqueue backup",
"loading": "Loading backups...",
"loadError": "Failed to load backups.",
"emptyTitle": "No backups yet",
"emptyDescription": "Backups run automatically every Sunday at 03:00 — or trigger one now to create the first snapshot.",
"colUser": "User",
"colType": "Tipo",
"typeWeeklyAuto": "Weekly (auto)",
"typeManual": "Manual",
"colSize": "Size",
"colCreatedAt": "Last snapshot",
"colActions": "Azioni",
"retentionLabel": "Retention: {days} days",
"download": "Download",
"downloadAria": "Download backup for {username}",
"downloadFailed": "Download failed",
"downloadStarted": "Download started",
"uploadTitle": "Upload backup",
"uploadDescription": "Validate a backup file and store it as a manual snapshot. Restoring is a separate step.",
"uploadButton": "Upload file",
"uploadHelp": "JSON file matching the current backup schema. Max 10 MB.",
"uploadSuccess": "Backup uploaded ({count} records)",
"uploadFailed": "Upload failed",
"restore": "Restore",
"restoreAria": "Restore from backup for {username}",
"restoreTitle": "Restore from backup",
"restoreDescription": "This will replace ALL current data for {username} with the snapshot from {when}. Existing measurements, medications, intake events, mood entries, notification channels, push subscriptions and queued Telegram deletions will be deleted.",
"restorePromptLabel": "Type RESTORE to continue",
"restoreConfirm": "Restore now",
"restoreInProgress": "Restoring...",
"restoreSuccess": "Restore complete",
"restoreFailed": "Restore failed",
"docsLink": "Documentation"
},
"danger-zone": {
"title": "Danger Zone",
"subtitle": "Destructive system-wide operations."
},
"about": {
"title": "About",
"subtitle": "Version, license, source, and update check."
}
},
"carrier": "Operatore",
"carrierUnknown": "Operatore sconosciuto",
"carrierUnavailableGeoFallback": "{location} — carrier unavailable"
},
"achievements": {
"title": "Achievements",
"subtitle": "Earn achievements by tracking your health and taking your meds on time.",
"loginRequired": "Please sign in to view achievements.",
"points": "Points",
"unlocked": "Unlocked",
"nextGoal": "Next goal",
"allCompleted": "All achievements unlocked!",
"completed": "Completed",
"goalReached": "Goal reached",
"remainingUnlocks": "{count} still unlockable",
"noneUnlockedYet": "No achievements unlocked yet.",
"pointsValue": "{points} points",
"metricCount": "{count}",
"metricDays": "{count} days",
"metricPercent": "{count}%",
"badges": {
"intakeTotal1": {
"title": "First intake",
"description": "Record your first taken medication event."
},
"intakeTotal10": {
"title": "Intake starter",
"description": "Record 10 taken medication events."
},
"intakeTotal50": {
"title": "Intake routine",
"description": "Record 50 taken medication events."
},
"intakeTotal150": {
"title": "Intake expert",
"description": "Record 150 taken medication events."
},
"intakeTotal300": {
"title": "Intake legend",
"description": "Record 300 taken medication events."
},
"overIntake1": {
"title": "Double take",
"description": "Take medication at least once more than planned."
},
"skippedIntake1": {
"title": "Stepped back",
"description": "Skip at least one planned intake."
},
"passkeyCreated1": {
"title": "Passkey set up",
"description": "Create your first passkey."
},
"passkeyLogin1": {
"title": "Passkey login",
"description": "Sign in at least once with a passkey."
},
"passwordLogin1": {
"title": "Old school",
"description": "Sign in at least once with username and password."
},
"bugReport1": {
"title": "Bug hunter",
"description": "Submit a bug report."
},
"loginStreak7": {
"title": "Login streak 7d",
"description": "Sign in on 7 consecutive days."
},
"loginStreak30": {
"title": "Login streak 30d",
"description": "Sign in on 30 consecutive days."
},
"onTimePerfect1": {
"title": "On-time 1d",
"description": "Take all medications on time for 1 day."
},
"compliance801": {
"title": "80% adherence · 1d",
"description": "Reach at least 80% 30-day adherence for 1 day."
},
"bmiGreen1": {
"title": "BMI green · 1d",
"description": "Keep your BMI in the normal range for 1 day."
},
"bpGreen1": {
"title": "BP green · 1d",
"description": "Keep your blood pressure in the normal range for 1 day."
},
"pulseGreen1": {
"title": "Pulse green · 1d",
"description": "Keep your resting pulse in the normal range for 1 day."
},
"onTimePerfect7": {
"title": "On-time 7d",
"description": "Take all medications on time for 7 consecutive days."
},
"compliance807": {
"title": "80% adherence · 7d",
"description": "Reach at least 80% 30-day adherence for 7 consecutive days."
},
"bmiGreen7": {
"title": "BMI green · 7d",
"description": "Keep your BMI in the normal range for 7 consecutive days."
},
"bpGreen7": {
"title": "BP green · 7d",
"description": "Keep your blood pressure in the normal range for 7 consecutive days."
},
"pulseGreen7": {
"title": "Pulse green · 7d",
"description": "Keep your resting pulse in the normal range for 7 consecutive days."
},
"onTimePerfect30": {
"title": "On-time 30d",
"description": "Take all medications on time for 30 consecutive days."
},
"compliance8030": {
"title": "80% adherence · 30d",
"description": "Reach at least 80% 30-day adherence for 30 consecutive days."
},
"bmiGreen30": {
"title": "BMI green · 30d",
"description": "Keep your BMI in the normal range for 30 consecutive days."
},
"bpGreen30": {
"title": "BP green · 30d",
"description": "Keep your blood pressure in the normal range for 30 consecutive days."
},
"pulseGreen30": {
"title": "Pulse green · 30d",
"description": "Keep your resting pulse in the normal range for 30 consecutive days."
},
"onTimePerfect180": {
"title": "On-time 180d",
"description": "Take all medications on time for 180 consecutive days."
},
"compliance80180": {
"title": "80% adherence · 180d",
"description": "Reach at least 80% 30-day adherence for 180 consecutive days."
},
"bmiGreen180": {
"title": "BMI green · 180d",
"description": "Keep your BMI in the normal range for 180 consecutive days."
},
"bpGreen180": {
"title": "BP green · 180d",
"description": "Keep your blood pressure in the normal range for 180 consecutive days."
},
"pulseGreen180": {
"title": "Pulse green · 180d",
"description": "Keep your resting pulse in the normal range for 180 consecutive days."
},
"onTimePerfect360": {
"title": "On-time 360d",
"description": "Take all medications on time for 360 consecutive days."
},
"compliance80360": {
"title": "80% adherence · 360d",
"description": "Reach at least 80% 30-day adherence for 360 consecutive days."
},
"bmiGreen360": {
"title": "BMI green · 360d",
"description": "Keep your BMI in the normal range for 360 consecutive days."
},
"bpGreen360": {
"title": "BP green · 360d",
"description": "Keep your blood pressure in the normal range for 360 consecutive days."
},
"pulseGreen360": {
"title": "Pulse green · 360d",
"description": "Keep your resting pulse in the normal range for 360 consecutive days."
},
"moodFirst": {
"title": "First mood",
"description": "Log your first mood entry."
},
"moodStreak7": {
"title": "Mood diarist 7d",
"description": "Log a mood entry on 7 consecutive days."
},
"moodStreak30": {
"title": "Mood diarist 30d",
"description": "Log a mood entry on 30 consecutive days."
},
"moodUp7": {
"title": "Brighter week",
"description": "Your 7-day mood average improved by at least 1.0 point compared to the previous week."
},
"weightFirst": {
"title": "First weigh-in",
"description": "Record your first weight measurement."
},
"weight50": {
"title": "Fifty weigh-ins",
"description": "Record 50 weight measurements."
},
"weight200": {
"title": "200 weigh-ins",
"description": "Record 200 weight measurements."
},
"bpFirst": {
"title": "First reading",
"description": "Record your first blood-pressure measurement."
},
"bp50": {
"title": "Fifty BP readings",
"description": "Record 50 blood-pressure measurements."
},
"bp200": {
"title": "200 BP readings",
"description": "Record 200 blood-pressure measurements."
},
"pulseFirst": {
"title": "First pulse",
"description": "Record your first pulse measurement."
},
"consistentMonth": {
"title": "Consistent month",
"description": "Log entries on at least 25 distinct days within a single calendar month."
},
"entryStreak7": {
"title": "Tracker streak 7d",
"description": "Log at least one entry on 7 consecutive days."
},
"entryStreak30": {
"title": "Tracker streak 30d",
"description": "Log at least one entry on 30 consecutive days."
},
"weekendWarrior": {
"title": "Weekend tracker",
"description": "Log entries on 4 consecutive Saturday + Sunday weekend pairs."
},
"hiddenNightOwl": {
"title": "Night owl",
"description": "Logged an entry between 02:00 and 04:00 in the morning."
},
"hiddenEarlyBird": {
"title": "Early bird",
"description": "Logged an entry between 04:00 and 06:00 in the morning."
},
"hiddenLeapDay": {
"title": "Leap-day legend",
"description": "Logged an entry on February 29."
},
"hiddenDoctorPdf": {
"title": "House call",
"description": "Exported your first doctor-report PDF."
},
"hiddenLocaleFlip": {
"title": "Polyglot",
"description": "Switched the app language at least once."
},
"hiddenBugBuddy": {
"title": "Bug buddy",
"description": "Submitted at least 5 bug reports — the project loves you."
}
},
"nextProgressLabel": "Progress to unlock",
"completedOn": "Completed on {date}",
"locked": "Locked",
"criterionHint": "{current} / {target}",
"progressPercent": "{percent}%",
"categories": {
"medication": "Farmaco",
"vitals": "Vitals",
"mood": "Umore",
"security": "Account & security",
"engagement": "Engagement",
"hidden": "Hidden"
},
"hiddenCard": {
"title": "Hidden achievement",
"description": "Keep tracking — you might just stumble across it.",
"ariaLabel": "Hidden locked achievement"
},
"hiddenUnlockToast": {
"title": "You unlocked a hidden achievement!"
},
"dashboardCard": {
"title": "Recent unlocks",
"viewAll": "View all",
"empty": "No achievements yet — keep logging to unlock your first."
}
},
"bugreport": {
"title": "Segnalazione bug",
"subtitle": "Invia un bug, un’idea o una domanda. L’amministratore del server vedrà la tua segnalazione.",
"loginRequired": "Accedi per segnalare un bug.",
"bugTitle": "Titolo",
"description": "Descrizione",
"submit": "Invia",
"success": "Grazie! La tua segnalazione è stata inviata.",
"errorCreating": "Errore durante la creazione",
"category": "Tipo",
"categoryBug": "Bug",
"categoryFeature": "Suggerimento",
"categoryQuestion": "Domanda",
"categoryOther": "Altro feedback",
"bugTitlePlaceholder": "Riassunto breve (opzionale)",
"githubEscalationNote": "Il feedback viene salvato localmente. Se l’amministratore attiva l’integrazione GitHub, può essere pubblicato come issue pubblico su richiesta.",
"internalOnlyNote": "Il feedback viene salvato localmente ed è visibile solo all’amministratore di questo server.",
"disabledTitle": "Bug reports are turned off",
"disabledBody": "The administrator has disabled bug reports on this server."
},
"notifications": {
"title": "Centro notifiche",
"breadcrumbInbox": "Centro notifiche",
"breadcrumbChannels": "Canali di notifica",
"breadcrumbSettings": "Impostazioni",
"eventColumn": "Evento",
"subtitle": "Scegli quali notifiche ricevere e su quale canale.",
"loadError": "Impossibile caricare le impostazioni di notifica.",
"noChannels": "Configura prima un canale di notifica nelle impostazioni.",
"goToSettings": "Vai alle impostazioni del canale",
"channelDisabled": "Disabilitato",
"admin": {
"deployFailedTitle": "Distribuzione fallita: {application}",
"deployFailedBody": "Si è verificato un errore durante la distribuzione di {application} (#{deployment}): {error}. Vedi log: {logsUrl}",
"testNotificationTitle": "HealthLog notifica di prova",
"testNotificationBody": "Questa notifica di prova è stata attivata dal pannello di amministrazione. Se la vedi, il canale funziona.",
"reminderCheckMissedTitle": "Promemoria perso: {medication}",
"reminderCheckMissedBody": "{medication} ({dose}) non è stato registrato nella finestra {window}.",
"reminderCheckOverdueTitle": "Dose in ritardo: {medication}",
"reminderCheckOverdueBody": "{medication} ({dose}) nella finestra {window} è in ritardo di {minutes} minuti.",
"offlineGeoUnavailableTitle": "Database di geolocalizzazione offline non caricati",
"offlineGeoUnavailableBody": "HealthLog sta risolvendo le posizioni di accesso tramite il fallback online ipwho.is. Per abilitare i database offline GeoLite2-City e GeoLite2-ASN, imposta MAXMIND_LICENSE_KEY nei secret di GitHub Actions su {secretsUrl} e ridistribuisci. Fino ad allora la colonna operatore nella panoramica degli accessi rimane vuota."
},
"user": {
"telegramTestBody": "HealthLog: connessione riuscita. Le notifiche Telegram sono attive."
},
"moodReminder": {
"title": "Promemoria quotidiano dell’umore",
"description": "Promemoria leggero all’orario che scegli se non hai ancora registrato l’umore di oggi. Usa solo i canali già configurati (Telegram, ntfy, Web Push, Apple Push) e tace una volta registrato l’umore di oggi.",
"toggleAria": "Attiva o disattiva il promemoria quotidiano dell’umore",
"statusOn": "Attivo all’orario che scegli",
"statusOff": "Disattivato",
"enabledToast": "Promemoria dell’umore attivato.",
"disabledToast": "Promemoria dell’umore disattivato.",
"saveError": "Salvataggio non riuscito. Riprova.",
"hourLabel": "Ora del promemoria",
"hourAria": "Ora del promemoria dell’umore",
"hourSavedToast": "Ora del promemoria aggiornata."
},
"eventMedicationReminder": "Promemoria farmaco",
"eventMedicationReminderDesc": "Inviato a ogni orario di dose programmato.",
"eventMeasurementAnomaly": "Misurazione insolita",
"eventMeasurementAnomalyDesc": "Inviato quando un valore esce nettamente dal tuo intervallo abituale.",
"eventComplianceLow": "Aderenza bassa",
"eventComplianceLowDesc": "Inviato quando il tuo tasso di assunzione degli ultimi giorni scende sotto l'80 %.",
"eventWithingsSyncFailed": "Sincronizzazione Withings non riuscita",
"eventWithingsSyncFailedDesc": "Inviato quando la sincronizzazione Withings fallisce per più tentativi consecutivi.",
"eventSystemAlert": "Avviso di sistema",
"eventSystemAlertDesc": "Messaggi generali dal server HealthLog, ad esempio finestre di manutenzione o note sull'account.",
"eventPersonalRecord": "Record personale",
"eventPersonalRecordDesc": "Inviato quando una misurazione supera il tuo precedente record.",
"eventMoodReminder": "Promemoria umore",
"eventMoodReminderDesc": "Promemoria quotidiano per registrare il tuo umore attuale."
},
"i18n": {
"maintainershipBanner": {
"notice": "Questa lingua è tradotta automaticamente, incluse le istruzioni critiche per la sicurezza del Coach. Un controllo di deriva automatico gira in CI; segnali qualsiasi regressione del Coach su GitHub.",
"cta": "Segnala su GitHub",
"dismiss": "Chiudi"
}
},
"targets": {
"bmi": "IMC",
"average30d": "Media 30 giorni:",
"consistency": {
"ariaLabel": "Ultimi 7 giorni, stato dentro/fuori range per giorno",
"daysInRange": "{count} di {total} nell'intervallo",
"daysLogged": "{count} di {total} registrati",
"dotInRange": "nel range",
"dotNearRange": "vicino al range",
"dotOutOfRange": "fuori range",
"dotNotLogged": "non registrato",
"insufficientData": "Ancora pochi dati — continua a registrare.",
"relativeDay": {
"today": "Oggi",
"yesterday": "Ieri",
"twoDaysAgo": "2 giorni fa",
"threeDaysAgo": "3 giorni fa",
"fourDaysAgo": "4 giorni fa",
"fiveDaysAgo": "5 giorni fa",
"sixDaysAgo": "6 giorni fa"
}
},
"relativeDay": {
"today": "Oggi",
"yesterday": "Ieri",
"daysAgo": "{count} giorni fa"
},
"edit": {
"openLabel": "Modifica il range obiettivo per {metric}",
"title": "Modifica range obiettivo — {metric}",
"description": "Regola il range obiettivo usato in grafici, insights e referto medico. Valori in {unit}.",
"derivedHint": "Questa card è derivata da altre metriche. Modifica gli obiettivi sottostanti (es. pressione o peso).",
"minLabel": "Min",
"maxLabel": "Max",
"systolicMin": "Sistolica min",
"systolicMax": "Sistolica max",
"diastolicMin": "Diastolica min",
"diastolicMax": "Diastolica max",
"boundsHint": "Range consentito: {min}–{max} {unit}",
"resetToDefault": "Ripristina predefinito",
"saveSuccess": "Range obiettivo aggiornato",
"saveError": "Impossibile salvare il range obiettivo",
"resetSuccess": "Range obiettivo ripristinato"
},
"mood": {
"stability": {
"stable": "stabile",
"variable": "variabile",
"highlyVariable": "molto variabile"
}
},
"currentValue": "Attuale: {value} {unit}",
"targetRangeValue": "Range obiettivo: {min}–{max} {unit}",
"sourceLabel": "Fonte: {source}",
"inTarget": "Nel range obiettivo",
"aboveTarget": "{delta} {unit} sopra il range",
"belowTarget": "{delta} {unit} sotto il range",
"diastolic": "Diastolica",
"glucoseFasting": "Glicemia — a digiuno",
"glucosePostprandial": "Glicemia — postprandiale",
"glucoseRandom": "Glicemia — qualsiasi",
"glucoseBedtime": "Glicemia — prima di coricarsi",
"status": {
"underweight": "Sottopeso",
"normal": "Normal",
"overweight": "Sovrappeso",
"obesityGrade1": "Obesità grado I",
"obesityGrade2": "Obesità grado II",
"obesityGrade3": "Obesità grado III",
"optimal": "Ottimale",
"highNormal": "Normale-alta",
"hypertensionGrade1": "Ipertensione grado 1",
"hypertensionGrade2": "Ipertensione grado 2",
"hypertensionGrade3": "Ipertensione grado 3",
"bradycardia": "Bradicardia",
"elevated": "Elevato",
"tachycardia": "Tachicardia",
"significantlyLow": "Significativamente basso",
"slightlyLow": "Lievemente basso",
"onTarget": "Nel range obiettivo",
"slightlyElevated": "Lievemente elevato",
"significantlyElevated": "Significativamente elevato",
"farTooShort": "Decisamente corto",
"tooShort": "Corto",
"slightlyLong": "Lievemente lungo",
"farTooLong": "Decisamente lungo",
"belowEssential": "Sotto l’essenziale",
"essential": "Essenziale",
"athletic": "Atletico",
"fitness": "Fitness",
"acceptable": "Accettabile",
"obese": "Obeso",
"veryLow": "Molto basso",
"lowActive": "Poco attivo",
"moderatelyActive": "Moderatamente attivo",
"active": "Attivo",
"veryActive": "Molto attivo",
"good": "Buono",
"moderate": "Moderato",
"low": "Basso",
"high": "Alto",
"veryGood": "Molto buono",
"veryStable": "Molto stabile",
"stable": "Stabile",
"fluctuating": "Fluttuante"
}
},
"passwordStrength": {
"veryWeak": "Molto debole",
"weak": "Debole",
"acceptable": "Accettabile",
"strong": "Forte",
"veryStrong": "Molto forte",
"tooShort": "Troppo corta",
"characters": "caratteri",
"minLength": "Servono almeno {count} caratteri."
},
"telegram": {
"errorInvalidAction": "Azione non valida.",
"errorMedicationNotFound": "Farmaco non trovato.",
"errorMedicationInactive": "Farmaco non trovato o inattivo.",
"errorUnknownAction": "Azione sconosciuta.",
"snoozeOneHour": "1 ora",
"snoozeThreeHours": "3 ore",
"snoozedFor": "{name} rinviato di {duration}.",
"skipped": "{name} saltato.",
"alreadyRecorded": "{name} era già registrato.",
"recordedAsTaken": "{name} registrato come assunto.",
"confirmed": "{name} confermato.",
"genericConfirmed": "Confermato.",
"cancelled": "Annullato.",
"noActiveMedications": "Nessun farmaco attivo trovato.",
"whichMedication": "<b>Quale farmaco hai assunto?</b>",
"cancelButton": "Annulla",
"askMedicationName": "Indica il farmaco, es. <b>preso Ramipril</b>.",
"medicationNotFoundExact": "Farmaco non trovato. Invia il nome esattamente come appare in HealthLog.",
"helpHeader": "<b>Available commands:</b>",
"helpBody": "/help — show this help\n/add — record an intake\n/start — start the bot\n\n<b>Text commands:</b>\ntaken &lt;name&gt; — confirm an intake\n\n<b>Buttons in reminders:</b>\n• Taken — confirm intake\n• 🕐 1h / 🕐 3h — postpone reminder\n• ⏭ Skip — skip intake\n• ✓ Confirm — confirm a missed intake"
},
"medicationReminders": {
"phaseGreenTitle": "🟢 Reminder: {medName}",
"phaseGreenMessage": "🟢 Reminder:\n<b>{medName}</b> ({doseInfo}, {timeWindow})\nWindow closes in {minutes} Min.",
"phaseYellowTitle": "🟡 Due soon: {medName}",
"phaseYellowMessage": "🟡 Due soon:\n<b>{medName}</b> ({doseInfo}, {timeWindow})\n{minutes} min left.",
"phaseOrangeTitle": "🟠 Overdue: {medName}",
"phaseOrangeMessage": "🟠 Overdue:\n<b>{medName}</b> ({doseInfo}, {timeWindow})\nOverdue by {minutes} Min.",
"phaseRedTitle": "🔴 Missed: {medName}",
"phaseRedMessage": "🔴 Missed:\n<b>{medName}</b> ({doseInfo}, {timeWindow})\nMarked as missed.",
"buttonTaken": "Assunto",
"buttonConfirm": "✓ Conferma",
"buttonSnoozeOneHour": "🕐 1h",
"buttonSnoozeThreeHours": "🕐 3h",
"buttonSkip": "⏭ Salta"
},
"moodReminders": {
"dailyTitle": "Registra il tuo umore",
"dailyBody": "Come ti senti oggi?"
}
}