mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-08 20:42:43 +00:00
Robustness sweep, perf hotspots, full localization, coach gate cascade closure. - /api/dashboard/summary cold-mount 4.6 s → ~500 ms via DAY-bucket sparkline + 60 s response cache. - Coach API gate inventory test surfaced and closed two orphan routes (chat[id] GET+DELETE, chat-message feedback POST). - Cross-tz fast-path runtime guard falls back to live for users more than ±3 h from UTC; proper bucket minting stays v1.5. - es / fr / it / pl coverage 27 % → 63 % (~3 400 new strings) plus three medication-cluster placeholder restorations. - IANA timezone validation closes the User.timezone self-DoS regression the new dashboard SQL would have surfaced. - Unit suite 4520 → 4524. See CHANGELOG.md for the full set.
2992 lines
133 KiB
JSON
2992 lines
133 KiB
JSON
{
|
||
"common": {
|
||
"save": "Salva",
|
||
"cancel": "Annulla",
|
||
"delete": "Elimina",
|
||
"edit": "Modifica",
|
||
"moreOptions": "Altre opzioni",
|
||
"create": "Crea",
|
||
"close": "Chiudi",
|
||
"loading": "Caricamento…...",
|
||
"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"
|
||
},
|
||
"format": {
|
||
"dateShort": "{day}/{month}/{year}",
|
||
"timeShort": "{hour}:{minute}",
|
||
"dateTime": "{day}/{month}/{year} {hour}:{minute}"
|
||
},
|
||
"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."
|
||
}
|
||
},
|
||
"errorBoundary": {
|
||
"title": "Qualcosa è andato storto",
|
||
"description": "Si è verificato un errore inatteso. Puoi riprovare, copiare i dettagli tecnici o aprire una segnalazione di bug."
|
||
},
|
||
"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",
|
||
"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."
|
||
}
|
||
}
|
||
},
|
||
"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",
|
||
"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"
|
||
},
|
||
"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."
|
||
},
|
||
"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",
|
||
"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",
|
||
"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",
|
||
"lastIntake": "Ultima assunzione:",
|
||
"nextIntake": "Prossima assunzione:",
|
||
"dayStreak": "giorni di serie",
|
||
"taken": "Assunta",
|
||
"skipped": "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": {
|
||
"section": "Programma",
|
||
"loading": "Caricamento dei dati del programma",
|
||
"loadFailed": "Impossibile caricare i dati del programma.",
|
||
"editCta": "Modifica",
|
||
"reminders": {
|
||
"on": "Promemoria attivi",
|
||
"off": "Promemoria disattivati"
|
||
},
|
||
"cadenceViz": {
|
||
"title": "Ultimi 30 giorni",
|
||
"ariaTimeline": "Cronologia delle dosi degli ultimi 30 giorni",
|
||
"emptyState": "Nessuna dose programmata in questo intervallo.",
|
||
"nextDoseLabel": "Prossima dose:",
|
||
"noNextDose": "Nessuna dose programmata in arrivo.",
|
||
"status": {
|
||
"taken": "Assunta",
|
||
"skipped": "Saltata",
|
||
"missed": "Mancata",
|
||
"upcoming": "In arrivo"
|
||
}
|
||
},
|
||
"compliance": {
|
||
"title": "Aderenza",
|
||
"noData": "Nessun dato",
|
||
"adherenceRate": "Aderenza",
|
||
"currentStreak": "Serie attuale",
|
||
"longestStreak": "Serie più lunga",
|
||
"missedLast30": "Mancate (30 g.)",
|
||
"unit": {
|
||
"days": "gg.",
|
||
"doses": "dosi"
|
||
},
|
||
"chips": {
|
||
"adherenceTooltip": "Quota di dosi assunte negli ultimi 30 giorni (le dosi saltate sono escluse dal denominatore).",
|
||
"streakTooltip": "Giorni consecutivi fino a oggi in cui ogni dose programmata è stata assunta o deliberatamente saltata.",
|
||
"longestTooltip": "Serie continua più lunga nella finestra di 30 giorni.",
|
||
"missedTooltip": "Numero di dosi mancate negli ultimi 30 giorni."
|
||
}
|
||
}
|
||
},
|
||
"titration": {
|
||
"section": "Scala di titolazione",
|
||
"loading": "Caricamento dati di titolazione",
|
||
"loadFailed": "Impossibile caricare i dati di titolazione.",
|
||
"drugLadderHeader": "Scala standard (riferimento EMA)",
|
||
"typicalWeeksOnStep": "≥ {weeks} sett. tipico",
|
||
"youAreHere": "Sei qui",
|
||
"nextStepCaption": "Prossimo gradino (tipico): {dose} mg dopo ~{weeks} settimane al gradino attuale.",
|
||
"ceilingMessage": "Sei al gradino più alto della scala standard.",
|
||
"escalationDueHint": "Sei su questo gradino da {weeks} settimane; lo schema prevede un avanzamento tipico dopo ~{typical} settimane.",
|
||
"currentStepDwell": "Su questo gradino da {weeks} settimane",
|
||
"doseUnitMg": "mg",
|
||
"emptyState": "Nessuna cronologia delle dosi. Registra una dose per vedere la tua posizione sulla scala.",
|
||
"nonStandardDose": "La dose attuale è fuori dai gradini standard.",
|
||
"disclaimer": "Valori di riferimento EMA. Consulta il tuo medico prima di cambiare la dose.",
|
||
"emaSourceCta": "Fonte EMA",
|
||
"stepLabel": "Gradino {n}"
|
||
},
|
||
"injectionSiteBodyOutlineAriaLabel": "Sagoma del corpo",
|
||
"injectionSitePickerAriaLabel": "Selettore del sito di iniezione",
|
||
"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": "API",
|
||
"sourceReminder": "Promemoria",
|
||
"sourceImport": "Importazione",
|
||
"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.",
|
||
"gatedTitle": "Modalità Ricerca disattivata",
|
||
"gatedBody": "Attiva la modalità Ricerca nelle impostazioni per vedere la curva stimata del livello del farmaco. La curva è opt-in perché è uno strumento di apprendimento, non una misura clinica.",
|
||
"gatedStaleTitle": "Il disclaimer richiede una nuova conferma",
|
||
"gatedStaleBody": "Il disclaimer della modalità Ricerca è stato aggiornato dall'ultima tua conferma. Rileggilo nelle impostazioni e conferma di nuovo per rivedere la curva.",
|
||
"gatedCta": "Apri la modalità Ricerca nelle impostazioni",
|
||
"unknownDrug": "{name} non è nel catalogo GLP-1 approvato dall'EMA, quindi HealthLog non può tracciare una curva di farmacocinetica di popolazione."
|
||
}
|
||
}
|
||
},
|
||
"charts": {
|
||
"loadingLabel": "Caricamento del grafico…",
|
||
"weight": "Peso",
|
||
"bloodPressure": "Pressione arteriosa",
|
||
"pulse": "Pulsazioni",
|
||
"bodyFat": "Massa grassa",
|
||
"sleep": "Sonno",
|
||
"steps": "Passi",
|
||
"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.",
|
||
"personalBaseline": "La tua media",
|
||
"deltaVsBaseline": "{delta} vs. la tua media",
|
||
"deltaUnchanged": "corrisponde alla tua media",
|
||
"deltaVsTarget": "{delta} vs. obiettivo"
|
||
},
|
||
"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.",
|
||
"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",
|
||
"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"
|
||
},
|
||
"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"
|
||
},
|
||
"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.",
|
||
"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)"
|
||
},
|
||
"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."
|
||
},
|
||
"relativeJustNow": "proprio ora",
|
||
"relativeMinutesAgo": "{count} minuti fa",
|
||
"relativeHoursAgo": "{count} ore fa",
|
||
"relativeDaysAgo": "{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"
|
||
}
|
||
},
|
||
"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."
|
||
},
|
||
"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"
|
||
}
|
||
}
|
||
},
|
||
"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"
|
||
}
|
||
},
|
||
"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": "Basta una misurazione per disegnare il primo tile di trend.",
|
||
"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": "Canali di notifica",
|
||
"description": "Live overview of every configured channel."
|
||
},
|
||
"dashboard": {
|
||
"title": "Cruscotto",
|
||
"description": "Tile layout and order."
|
||
},
|
||
"thresholds": {
|
||
"title": "Obiettivi e fonti",
|
||
"description": "Per metrica: il tuo intervallo target e quale fonte prevale quando più di una registra lo stesso valore lo stesso giorno."
|
||
},
|
||
"sources": {
|
||
"title": "Sources",
|
||
"description": "Pick which ingest source wins when more than one records the same metric for the same day.",
|
||
"redirectNotice": "Le fonti ora fanno parte di «Obiettivi e fonti».",
|
||
"cardTitle": "Source priority by metric",
|
||
"help": "When more than one source delivers the same value on the same day (e.g. Withings and Apple Health both report 1,200 steps), the top source counts as the canonical reading. Other sources stay stored for the audit trail.",
|
||
"resetDefaults": "Reset to defaults",
|
||
"moveUp": "Move up",
|
||
"moveDown": "Move down",
|
||
"saveSuccess": "Source priority saved.",
|
||
"saveError": "Saving the source priority failed.",
|
||
"resetSuccess": "Source priority reset to defaults.",
|
||
"perMetricToggle": "Per-metric overrides ({count})",
|
||
"perMetricHelp": "Metrics you have customised away from the default ladder. Use this list to roll any single metric back to its constant default without touching the rest.",
|
||
"perMetricEmpty": "No per-metric overrides set — every metric uses the global ladder above.",
|
||
"resetMetric": "Reimposta",
|
||
"deviceTypeToggle": "Device-type priority ({count})",
|
||
"deviceTypeHelp": "Within a source, which device wins. When an Apple Watch and an iPhone both record steps, the higher-ranked device-type counts as the canonical reading.",
|
||
"deviceTypeDefault": "Default device-type ladder",
|
||
"resetDeviceTypes": "Reset device-types",
|
||
"metrics": {
|
||
"steps": "Passi",
|
||
"activeEnergy": "Active energy",
|
||
"walkingRunningDistance": "Walking + running distance",
|
||
"flightsClimbed": "Flights climbed",
|
||
"sleep": "Sonno",
|
||
"weight": "Peso",
|
||
"bloodPressure": "Pressione arteriosa",
|
||
"pulse": "Polso",
|
||
"bodyFat": "Massa grassa",
|
||
"bodyTemperature": "Body temperature",
|
||
"spo2": "Oxygen saturation",
|
||
"hrv": "Heart-rate variability",
|
||
"restingHeartRate": "Frequenza cardiaca a riposo",
|
||
"vo2Max": "VO2 max"
|
||
},
|
||
"sourceLabels": {
|
||
"WITHINGS": "Withings",
|
||
"APPLE_HEALTH": "Apple Health",
|
||
"MANUAL": "Manual entry",
|
||
"IMPORT": "Importa"
|
||
},
|
||
"deviceLabels": {
|
||
"watch": "Watch",
|
||
"band": "Band",
|
||
"ring": "Ring",
|
||
"phone": "Phone",
|
||
"scale": "Scale",
|
||
"other": "Other",
|
||
"unknown": "Sconosciuto"
|
||
}
|
||
},
|
||
"ai": {
|
||
"title": "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",
|
||
"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}"
|
||
},
|
||
"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": "Connected",
|
||
"errorReconnect": "Error — reconnect",
|
||
"notConnected": "Not connected",
|
||
"justNow": "just now",
|
||
"minutesAgo": "{count} min ago",
|
||
"hoursAgo": "{count} h ago",
|
||
"daysAgo": "{count} d ago",
|
||
"ariaLabel": "Integration status"
|
||
},
|
||
"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",
|
||
"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",
|
||
"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": "Sources & docs",
|
||
"newerAvailable": "Newer version: {tag}"
|
||
},
|
||
"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"
|
||
}
|
||
},
|
||
"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.",
|
||
"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."
|
||
}
|
||
},
|
||
"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": {
|
||
"title": "Valori obiettivo",
|
||
"introText": "I tuoi valori attuali rispetto agli intervalli obiettivo consigliati. Le fonti delle linee guida sono collegate su ogni card.",
|
||
"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"
|
||
}
|
||
},
|
||
"card": {
|
||
"lastMet": "Ultima volta in obiettivo: {when}",
|
||
"streak": "{count} giorni di fila"
|
||
},
|
||
"relativeDay": {
|
||
"today": "Oggi",
|
||
"yesterday": "Ieri",
|
||
"daysAgo": "{count} giorni fa"
|
||
},
|
||
"summary": {
|
||
"weekTitle": "{met} di {total} obiettivi raggiunti questa settimana",
|
||
"weekTitleAll": "Tutto{total} targets met this week",
|
||
"streakHighlight": "{count} giorni di fila: {metric}"
|
||
},
|
||
"coach": {
|
||
"cta": "Chiedi al coach"
|
||
},
|
||
"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",
|
||
"noMeasurementYet": "Ancora nessuna misurazione",
|
||
"noMeasurementData": "Nessun dato di misurazione. Aggiungi misurazioni per vedere gli obiettivi.",
|
||
"profileIncomplete": "Profilo incompleto",
|
||
"profileIncompleteHeight": "Inserisci la tua altezza nel profilo per attivare gli obiettivi BMI.",
|
||
"profileIncompleteAge": "Inserisci la tua data di nascita nel profilo per attivare gli obiettivi legati all’età.",
|
||
"profileIncompleteHeightAge": "Inserisci altezza e data di nascita nel profilo per vedere obiettivi personalizzati.",
|
||
"compliancePerMedication": "Aderenza per farmaco",
|
||
"glucoseFasting": "Glicemia — a digiuno",
|
||
"glucosePostprandial": "Glicemia — postprandiale",
|
||
"glucoseRandom": "Glicemia — qualsiasi",
|
||
"glucoseBedtime": "Glicemia — prima di coricarsi",
|
||
"loadError": "Impossibile caricare i valori obiettivo",
|
||
"label": {
|
||
"WEIGHT": "Peso",
|
||
"BLOOD_PRESSURE": "Pressione arteriosa",
|
||
"BLOOD_PRESSURE_IN_TARGET": "Pressione nel range",
|
||
"PULSE": "Pulsazioni a riposo",
|
||
"SLEEP_DURATION": "Durata del sonno",
|
||
"BMI": "IMC",
|
||
"BODY_FAT": "Massa grassa",
|
||
"ACTIVITY_STEPS": "Passi/giorno",
|
||
"MEDICATION_COMPLIANCE": "Aderenza",
|
||
"MOOD_SCORE": "Umore",
|
||
"MOOD_STABILITY": "Stabilità umore"
|
||
},
|
||
"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 <name> — 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"
|
||
}
|
||
}
|