From b776daf546767bc0ba2459c5727eb370a474a4de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Bombeck?= Date: Sun, 17 May 2026 17:29:18 +0200 Subject: [PATCH] i18n(insights): translate hero, recommendation, health-score, daily-briefing, coach into es/fr/it/pl Localises the user-visible insights surface: hero finding banners, recommendation card (rationale, confidence bands, feedback chips), health-score panel (label, delta-vs-last-week, provenance sources, disclaimer), suggested-prompts cluster, daily-briefing empty/loading states, therapy-timeline GLP-1 strings, vo2-max stats, trend-annotation confidence labels, correlation-row predefined hypotheses, and the coach surface (refusal copy, error states, composer, history drawer, sources panel, metric dictionary). Skips the deep coach settings (verbosity, exclude, context, evidence-by-default, default-window) for a later pass. Co-Authored-By: Claude Opus 4.7 (1M context) --- messages/es.json | 288 +++++++++++++++++++++++------------------------ messages/fr.json | 280 ++++++++++++++++++++++----------------------- messages/it.json | 282 +++++++++++++++++++++++----------------------- messages/pl.json | 288 +++++++++++++++++++++++------------------------ 4 files changed, 569 insertions(+), 569 deletions(-) diff --git a/messages/es.json b/messages/es.json index 8331bfd1b..f4183ec28 100644 --- a/messages/es.json +++ b/messages/es.json @@ -899,22 +899,22 @@ "notAvailableForCompliance": "Comparación no disponible para el cumplimiento" }, "insights": { - "noAnalysisYet": "No analysis yet.", - "emptyTitle": "Not enough data yet", - "emptyDescription": "Insights light up once you've logged a handful of measurements. Start with weight or blood pressure.", - "emptyAddMeasurement": "Add a measurement", - "bmiEmptyTitle": "Set your height to see BMI", - "bmiEmptyDescription": "BMI needs your height. Add it under Settings → Account.", - "bmiEmptyAction": "Open account settings", - "noProviderConfigured": "Assessment unavailable.", - "startAnalysis": "Start analysis", - "refreshAnalysis": "Refresh analysis", - "keyTakeaway": "Key Takeaway", - "findingsTitle": "Findings", - "heroFindingPositive": "Top finding", - "heroFindingNeutral": "Top finding", - "heroFindingAttention": "Worth attention", - "heroFindingWarning": "Top alert", + "noAnalysisYet": "Aún no hay análisis.", + "emptyTitle": "Aún no hay datos suficientes", + "emptyDescription": "Los insights aparecen en cuanto registres algunas mediciones. Empieza por peso o tensión arterial.", + "emptyAddMeasurement": "Registrar medición", + "bmiEmptyTitle": "Añade tu altura para calcular el IMC", + "bmiEmptyDescription": "El IMC necesita tu altura. Guárdala en Ajustes → Cuenta.", + "bmiEmptyAction": "Abrir ajustes de cuenta", + "noProviderConfigured": "Análisis no disponible.", + "startAnalysis": "Iniciar análisis", + "refreshAnalysis": "Actualizar análisis", + "keyTakeaway": "Lo más importante", + "findingsTitle": "Hallazgos", + "heroFindingPositive": "Hallazgo principal", + "heroFindingNeutral": "Hallazgo principal", + "heroFindingAttention": "A tener en cuenta", + "heroFindingWarning": "Alerta principal", "correlationsTitle": "Correlaciones", "recommendationsTitle": "Recomendaciones", "personalRecord": { @@ -922,56 +922,56 @@ "tooltip": "Récord personal: {value} {unit} el {date}" }, "recommendation": { - "source": "Source", - "viewSource": "Open guideline in a new tab", - "rationale": "Why this recommendation", - "rationaleWindow": "Window", - "rationaleComparedTo": "Compared to", - "rationaleDeviation": "Deviation", - "rationaleExpand": "Show why", - "rationaleCollapse": "Hide why", - "legacyPayloadCta": "Insights updated — regenerate for new explainability features", - "feedbackHelpful": "Helpful", - "feedbackNotHelpful": "Not helpful", - "feedbackThanks": "Thanks for your feedback", - "feedbackConfirmed": "Feedback recorded", - "feedbackAlreadyRated": "Already rated", - "confidence": "Confidence", - "confidenceAria": "Confidence: {value} of 100", - "confidenceHigh": "High confidence", - "confidenceMedium": "Moderate confidence", - "confidenceLow": "Low confidence — based on limited data", - "confidenceDraft": "Draft" + "source": "Fuente", + "viewSource": "Abrir guía en una pestaña nueva", + "rationale": "Por qué esta recomendación", + "rationaleWindow": "Ventana", + "rationaleComparedTo": "Comparado con", + "rationaleDeviation": "Desviación", + "rationaleExpand": "Mostrar justificación", + "rationaleCollapse": "Ocultar justificación", + "legacyPayloadCta": "Insights actualizados — vuelve a generar para activar las nuevas explicaciones", + "feedbackHelpful": "Útil", + "feedbackNotHelpful": "No útil", + "feedbackThanks": "Gracias por tu opinión", + "feedbackConfirmed": "Opinión guardada", + "feedbackAlreadyRated": "Ya valorado", + "confidence": "Confianza", + "confidenceAria": "Confianza: {value} de 100", + "confidenceHigh": "Confianza alta", + "confidenceMedium": "Confianza media", + "confidenceLow": "Confianza baja — pocos datos", + "confidenceDraft": "Borrador" }, - "dataFoundation": "Data coverage", - "dataGaps": "Data gaps:", - "lastUpdated": "Last updated", - "confidenceHoch": "High", - "confidenceMittel": "Medium", - "confidenceGering": "Low", - "loadError": "Failed to load insights", - "heroGenerated": "Generated {time}", - "heroPersonalBaseline": "Based on your last 90 days", - "heroRegenerate": "Regenerate", - "heroRegenerating": "Regenerating", - "regenerateAnalysis": "Re-run analysis", - "regenerateSuccess": "Analysis refreshed", - "heroFallbackSubtitle": "A daily read of your trends, drawn straight from the numbers you've logged.", - "heroGreetingMorning": "Good morning", - "heroGreetingAfternoon": "Good afternoon", - "heroGreetingEvening": "Good evening", - "heroComingSoonTooltip": "Coming soon", - "heroActionAskCoach": "Ask the coach", + "dataFoundation": "Base de datos", + "dataGaps": "Vacíos de datos:", + "lastUpdated": "Última actualización", + "confidenceHoch": "Alta", + "confidenceMittel": "Media", + "confidenceGering": "Baja", + "loadError": "No se han podido cargar los análisis", + "heroGenerated": "Generado {time}", + "heroPersonalBaseline": "Basado en tus últimos 90 días", + "heroRegenerate": "Regenerar", + "heroRegenerating": "Generando", + "regenerateAnalysis": "Volver a iniciar el análisis", + "regenerateSuccess": "Análisis regenerado", + "heroFallbackSubtitle": "Una mirada diaria a tus tendencias — directamente de los datos que registras.", + "heroGreetingMorning": "Buenos días", + "heroGreetingAfternoon": "Buenas tardes", + "heroGreetingEvening": "Buenas noches", + "heroComingSoonTooltip": "Próximamente", + "heroActionAskCoach": "Preguntar al coach", "healthScore": { - "label": "Health Score", - "progressAria": "Health Score progress", - "deltaVsLastWeek": "{delta} vs last week", - "deltaUnavailable": "No history yet — check back next week.", + "label": "Puntuación de salud", + "progressAria": "Progreso de la puntuación de salud", + "deltaVsLastWeek": "{delta} respecto a la semana anterior", + "deltaUnavailable": "Aún no hay historial — vuelve la semana que viene.", "componentBp": "PA", "componentWeight": "Peso", "componentMood": "Estado de ánimo", - "componentCompliance": "Meds", - "disclaimer": "Indicative — not a clinical assessment.", + "componentCompliance": "Cumplimiento", + "disclaimer": "Orientación — no es valoración médica.", "deltaExplainer": { "trigger": "¿Qué significa este cambio?", "title": "Cómo se calcula el cambio", @@ -997,93 +997,93 @@ } }, "suggestedPrompts": { - "label": "Try asking", - "whyMonday": "Why was BP higher on Monday?", - "weightVsPulse": "How did weight loss affect my pulse?", - "weekVsMonth": "Compare this week to last month", - "tellMyDoctor": "What should I tell my doctor?", - "medicationWorking": "Is my medication working?" + "label": "Pregúntame", + "whyMonday": "¿Por qué fue más alta mi tensión el lunes?", + "weightVsPulse": "¿Cómo ha afectado la pérdida de peso a mi pulso?", + "weekVsMonth": "Compara esta semana con el mes pasado", + "tellMyDoctor": "¿Qué debería contarle a mi médico?", + "medicationWorking": "¿Está funcionando mi medicamento?" }, "dailyBriefing": { - "title": "Daily Briefing", - "keyFindingsTitle": "Key findings", - "emptyTitle": "No briefing yet", - "emptyDescription": "Generate today's briefing to get a narrative read of your trends.", - "emptyAction": "Generate briefing", - "loadingLabel": "Synthesising today's briefing" + "title": "Resumen del día", + "keyFindingsTitle": "Hallazgos clave", + "emptyTitle": "Aún no hay resumen", + "emptyDescription": "Genera el resumen de hoy para tener una vista rápida de tus tendencias.", + "emptyAction": "Generar resumen", + "loadingLabel": "Preparando el resumen" }, "therapyTimeline": { - "title": "GLP-1 therapy timeline", - "description": "Chronological log of dose changes, injections, inventory events, and side-effect days.", - "empty": "No GLP-1 therapy events logged in the last 90 days.", - "doseTo": "dose set to", - "pens": "pens", - "sideEffects": "Side effects" + "title": "Historial de terapia GLP-1", + "description": "Lista cronológica: cambios de dosis, inyecciones, existencias y días con efectos secundarios.", + "empty": "Sin eventos GLP-1 en los últimos 90 días.", + "doseTo": "Dosis a", + "pens": "Plumas", + "sideEffects": "Efectos secundarios" }, "trendsRow": { "title": "Tendencias", - "subtitle": "Last 30 days at a glance" + "subtitle": "Los últimos 30 días de un vistazo" }, "vo2Max": { - "statLatest": "Latest", - "statMin": "Min", - "statMax": "Max", - "empty": "No VO₂ max data yet — sync Apple Health to populate this view." + "statLatest": "Actual", + "statMin": "Mín", + "statMax": "Máx", + "empty": "Aún no hay datos de VO₂ máx — sincroniza Apple Health para llenar esta vista." }, "trendAnnotation": { - "emptyBp": "Awaiting more data to annotate this trend.", - "emptyWeight": "Awaiting more data to annotate this trend.", - "emptyMood": "Awaiting more data to annotate this trend.", - "confidenceHigh": "High confidence", - "confidenceModerate": "Moderate confidence", - "confidenceLow": "Low confidence", - "pendingLabel": "Generating trend commentary" + "emptyBp": "Necesitamos más datos para comentar esta tendencia.", + "emptyWeight": "Necesitamos más datos para comentar esta tendencia.", + "emptyMood": "Necesitamos más datos para comentar esta tendencia.", + "confidenceHigh": "Confianza alta", + "confidenceModerate": "Confianza media", + "confidenceLow": "Confianza baja", + "pendingLabel": "Generando comentario de tendencia" }, "correlationRow": { - "title": "Relationships", - "subtitle": "Pre-defined hypotheses, gated on n ≥ 14 and p < 0.05", - "disclaimer": "Relationships are observational, not causal — talk to your doctor if BP runs high.", - "experimentCta": "Try a 7-day experiment", - "experimentTooltip": "Coming soon", - "emptyTitle": "Need more data to see this relationship", - "sourceChip": "based on {n} paired readings · {window}", + "title": "Correlaciones", + "subtitle": "Hipótesis predefinidas, con umbral n ≥ 14 y p < 0,05", + "disclaimer": "Las correlaciones son observacionales, no causales — habla con tu médico si tu tensión es alta.", + "experimentCta": "Iniciar experimento de 7 días", + "experimentTooltip": "Próximamente", + "emptyTitle": "Necesitamos más datos para mostrar esta correlación", + "sourceChip": "basado en {n} mediciones pareadas · {window}", "sourceWindowLast30": "Últimos 30 días", - "confidenceHigh": "High confidence", - "confidenceModerate": "Moderate confidence", - "confidenceLow": "Low confidence", + "confidenceHigh": "Confianza alta", + "confidenceModerate": "Confianza media", + "confidenceLow": "Confianza baja", "card": { - "bpComplianceTitle": "BP × medication compliance", - "bpComplianceSubtitle": "Daily systolic against compliance %", - "moodPulseTitle": "Mood × resting pulse", - "moodPulseSubtitle": "Same-day mood and resting pulse", - "weightWeekdayTitle": "Weight × weekday", - "weightWeekdaySubtitle": "Weight grouped by day of week" + "bpComplianceTitle": "TA × cumplimiento medicación", + "bpComplianceSubtitle": "Sistólica diaria frente al % de cumplimiento", + "moodPulseTitle": "Ánimo × pulso en reposo", + "moodPulseSubtitle": "Estado de ánimo y pulso en reposo el mismo día", + "weightWeekdayTitle": "Peso × día de la semana", + "weightWeekdaySubtitle": "Peso agrupado por día de la semana" } }, "coach": { - "refusalOutOfScope": "I can only help with the health metrics in your log — measurements, medications, mood, trends. I cannot answer questions outside that scope.", - "refusalInjection": "I noticed wording that tries to override my instructions. I am the HealthLog Coach and only summarise your own health data — please rephrase your question in those terms.", - "errorBudget": "You've reached today's Coach usage limit. The budget refreshes at midnight UTC.", - "errorProvider": "The Coach could not reach an Insights provider just now. Please try again in a moment.", - "tagline": "Personal health coach, grounded in your data.", - "newChat": "New chat", - "send": "Send", - "thinking": "Thinking…", - "composerPlaceholder": "Ask anything about your data…", - "composerHint": "Press Enter to send, Shift+Enter for a new line.", - "composerDisclaimer": "Coach replies are generated. Clinical decisions belong with your doctor.", - "voiceComingSoon": "Voice input arrives with the iOS app in v1.5.", - "threadEmpty": "Ask anything about your trends, medications, or readings to start a conversation.", - "historyTitle": "Conversations", - "historySearchPlaceholder": "Search conversations…", - "historyEmpty": "Your conversations will appear here. Ask anything to start.", - "historyDeleteAria": "Delete conversation", - "historyDeleteConfirm": "Delete this conversation? This cannot be undone.", - "sourcesTitle": "What I can see", - "sourcesFresh": "Fresh", - "sourcesStale": "Stale", - "sourcesFooter": "The Coach reads only the data you've connected.", - "evidenceLabel": "What I'm looking at", + "refusalOutOfScope": "Solo puedo ayudarte con los datos de salud de tu registro — mediciones, medicamentos, estado de ánimo, tendencias. Preguntas fuera de ese ámbito no las respondo.", + "refusalInjection": "Tu mensaje contiene instrucciones que pretenden sobrescribir mis indicaciones. Soy el coach de HealthLog y solo resumo tus propios datos de salud — reformula tu pregunta dentro de ese marco.", + "errorBudget": "Has alcanzado el límite diario del coach. El cupo se reinicia a medianoche (UTC).", + "errorProvider": "El coach no ha podido contactar con un proveedor de análisis ahora mismo. Inténtalo en un momento.", + "tagline": "Coach personal de salud, apoyado en tus datos.", + "newChat": "Nueva conversación", + "send": "Enviar", + "thinking": "Pensando…", + "composerPlaceholder": "Pregúntame sobre tus datos…", + "composerHint": "Intro para enviar, Mayús+Intro para una nueva línea.", + "composerDisclaimer": "Las respuestas son generadas. Las decisiones clínicas las toma tu médico.", + "voiceComingSoon": "La entrada por voz llega con la app de iOS en la v1.5.", + "threadEmpty": "Pregúntame algo sobre tus tendencias, medicamentos o mediciones para empezar.", + "historyTitle": "Conversaciones", + "historySearchPlaceholder": "Buscar en las conversaciones…", + "historyEmpty": "Tus conversaciones aparecen aquí. Lanza una pregunta para empezar.", + "historyDeleteAria": "Eliminar conversación", + "historyDeleteConfirm": "¿Eliminar esta conversación? No se puede deshacer.", + "sourcesTitle": "A qué accedo", + "sourcesFresh": "Actuales", + "sourcesStale": "Desactualizados", + "sourcesFooter": "El coach solo lee los datos que has conectado.", + "evidenceLabel": "¿En qué se basa esto?", "metric": { "bp": "Presión arterial", "weight": "Peso", @@ -1091,17 +1091,17 @@ "mood": "Estado de ánimo", "compliance": "Cumplimiento", "general": "General", - "hrv": "HRV", + "hrv": "VFC", "sleep": "Sueño", - "resting_hr": "Resting HR", + "resting_hr": "Pulso en reposo", "steps": "Pasos", - "active_energy": "Active energy", - "flights": "Flights climbed", - "distance": "Distance", - "vo2_max": "VO₂ max", - "body_temp": "Body temperature", - "medications": "Medications", - "anthropometrics": "Profile (height, age, gender)" + "active_energy": "Energía activa", + "flights": "Pisos", + "distance": "Distancia", + "vo2_max": "VO₂ máx", + "body_temp": "Temperatura corporal", + "medications": "Medicamentos", + "anthropometrics": "Perfil (altura, edad, sexo)" }, "window": { "last7days": "Últimos 7 días", @@ -1110,11 +1110,11 @@ "lastYear": "lo que va de año", "allTime": "Todo el tiempo" }, - "windowLabel": "Window", - "settingsAriaLabel": "Coach settings", - "settingsTitle": "Coach settings", - "settingsDescription": "Tune how the Coach talks with you.", - "settingsToneLabel": "Tone", + "windowLabel": "Periodo", + "settingsAriaLabel": "Ajustes del coach", + "settingsTitle": "Ajustes del coach", + "settingsDescription": "Configura cómo te habla el coach.", + "settingsToneLabel": "Tono", "settingsToneWarm": "Warm", "settingsToneNeutral": "Neutral", "settingsToneConcise": "Concise", diff --git a/messages/fr.json b/messages/fr.json index d6c79115c..3bf8a5410 100644 --- a/messages/fr.json +++ b/messages/fr.json @@ -899,22 +899,22 @@ "notAvailableForCompliance": "Comparaison indisponible pour l’observance" }, "insights": { - "noAnalysisYet": "No analysis yet.", - "emptyTitle": "Not enough data yet", - "emptyDescription": "Insights light up once you've logged a handful of measurements. Start with weight or blood pressure.", - "emptyAddMeasurement": "Add a measurement", - "bmiEmptyTitle": "Set your height to see BMI", - "bmiEmptyDescription": "BMI needs your height. Add it under Settings → Account.", - "bmiEmptyAction": "Open account settings", - "noProviderConfigured": "Assessment unavailable.", - "startAnalysis": "Start analysis", - "refreshAnalysis": "Refresh analysis", - "keyTakeaway": "Key Takeaway", - "findingsTitle": "Findings", - "heroFindingPositive": "Top finding", - "heroFindingNeutral": "Top finding", - "heroFindingAttention": "Worth attention", - "heroFindingWarning": "Top alert", + "noAnalysisYet": "Pas encore d’analyse.", + "emptyTitle": "Pas encore assez de données", + "emptyDescription": "Les insights apparaissent dès que tu auras saisi quelques mesures. Commence par le poids ou la tension.", + "emptyAddMeasurement": "Saisir une mesure", + "bmiEmptyTitle": "Ajoute ta taille pour l’IMC", + "bmiEmptyDescription": "L’IMC nécessite ta taille. Renseigne-la dans Paramètres → Compte.", + "bmiEmptyAction": "Ouvrir les paramètres du compte", + "noProviderConfigured": "Analyse indisponible.", + "startAnalysis": "Lancer l’analyse", + "refreshAnalysis": "Actualiser l’analyse", + "keyTakeaway": "L’essentiel", + "findingsTitle": "Constats", + "heroFindingPositive": "Constat principal", + "heroFindingNeutral": "Constat principal", + "heroFindingAttention": "À surveiller", + "heroFindingWarning": "Alerte principale", "correlationsTitle": "Corrélations", "recommendationsTitle": "Recommandations", "personalRecord": { @@ -923,55 +923,55 @@ }, "recommendation": { "source": "Source", - "viewSource": "Open guideline in a new tab", - "rationale": "Why this recommendation", - "rationaleWindow": "Window", - "rationaleComparedTo": "Compared to", - "rationaleDeviation": "Deviation", - "rationaleExpand": "Show why", - "rationaleCollapse": "Hide why", - "legacyPayloadCta": "Insights updated — regenerate for new explainability features", - "feedbackHelpful": "Helpful", - "feedbackNotHelpful": "Not helpful", - "feedbackThanks": "Thanks for your feedback", - "feedbackConfirmed": "Feedback recorded", - "feedbackAlreadyRated": "Already rated", - "confidence": "Confidence", - "confidenceAria": "Confidence: {value} of 100", - "confidenceHigh": "High confidence", - "confidenceMedium": "Moderate confidence", - "confidenceLow": "Low confidence — based on limited data", - "confidenceDraft": "Draft" + "viewSource": "Ouvrir la recommandation dans un nouvel onglet", + "rationale": "Pourquoi cette recommandation", + "rationaleWindow": "Fenêtre", + "rationaleComparedTo": "Comparé à", + "rationaleDeviation": "Écart", + "rationaleExpand": "Afficher la justification", + "rationaleCollapse": "Masquer la justification", + "legacyPayloadCta": "Insights mis à jour — regénère pour activer les nouvelles explications", + "feedbackHelpful": "Utile", + "feedbackNotHelpful": "Peu utile", + "feedbackThanks": "Merci pour ton retour", + "feedbackConfirmed": "Retour enregistré", + "feedbackAlreadyRated": "Déjà noté", + "confidence": "Confiance", + "confidenceAria": "Confiance : {value} sur 100", + "confidenceHigh": "Confiance élevée", + "confidenceMedium": "Confiance moyenne", + "confidenceLow": "Confiance faible — peu de points de données", + "confidenceDraft": "Brouillon" }, - "dataFoundation": "Data coverage", - "dataGaps": "Data gaps:", - "lastUpdated": "Last updated", - "confidenceHoch": "High", - "confidenceMittel": "Medium", - "confidenceGering": "Low", - "loadError": "Failed to load insights", - "heroGenerated": "Generated {time}", - "heroPersonalBaseline": "Based on your last 90 days", - "heroRegenerate": "Regenerate", - "heroRegenerating": "Regenerating", - "regenerateAnalysis": "Re-run analysis", - "regenerateSuccess": "Analysis refreshed", - "heroFallbackSubtitle": "A daily read of your trends, drawn straight from the numbers you've logged.", - "heroGreetingMorning": "Good morning", - "heroGreetingAfternoon": "Good afternoon", - "heroGreetingEvening": "Good evening", - "heroComingSoonTooltip": "Coming soon", - "heroActionAskCoach": "Ask the coach", + "dataFoundation": "Base de données", + "dataGaps": "Lacunes :", + "lastUpdated": "Dernière mise à jour", + "confidenceHoch": "Élevée", + "confidenceMittel": "Moyenne", + "confidenceGering": "Faible", + "loadError": "Impossible de charger les analyses", + "heroGenerated": "Généré {time}", + "heroPersonalBaseline": "Basé sur tes 90 derniers jours", + "heroRegenerate": "Régénérer", + "heroRegenerating": "Génération en cours", + "regenerateAnalysis": "Relancer l’analyse", + "regenerateSuccess": "Analyse regénérée", + "heroFallbackSubtitle": "Un coup d’œil quotidien sur tes tendances — directement issu des chiffres que tu saisis.", + "heroGreetingMorning": "Bonjour", + "heroGreetingAfternoon": "Bonjour", + "heroGreetingEvening": "Bonsoir", + "heroComingSoonTooltip": "Bientôt disponible", + "heroActionAskCoach": "Demander au coach", "healthScore": { - "label": "Health Score", - "progressAria": "Health Score progress", - "deltaVsLastWeek": "{delta} vs last week", - "deltaUnavailable": "No history yet — check back next week.", + "label": "Score de santé", + "progressAria": "Progression du score de santé", + "deltaVsLastWeek": "{delta} par rapport à la semaine précédente", + "deltaUnavailable": "Pas encore d’historique — reviens la semaine prochaine.", "componentBp": "TA", "componentWeight": "Poids", "componentMood": "Humeur", - "componentCompliance": "Meds", - "disclaimer": "Indicative — not a clinical assessment.", + "componentCompliance": "Observance", + "disclaimer": "Repère — pas un avis médical.", "deltaExplainer": { "trigger": "Que signifie cet écart ?", "title": "Comment l'écart est calculé", @@ -988,7 +988,7 @@ "provisionalBadge": "Provisoire", "sourceAria": "Source : {source}", "sources": { - "manual": "Manuel", + "manual": "Manuelle", "withings": "Withings", "appleHealth": "Apple Health", "mixed": "Mixte", @@ -997,111 +997,111 @@ } }, "suggestedPrompts": { - "label": "Try asking", - "whyMonday": "Why was BP higher on Monday?", - "weightVsPulse": "How did weight loss affect my pulse?", - "weekVsMonth": "Compare this week to last month", - "tellMyDoctor": "What should I tell my doctor?", - "medicationWorking": "Is my medication working?" + "label": "Demande-moi", + "whyMonday": "Pourquoi ma tension était-elle plus haute lundi ?", + "weightVsPulse": "Comment la perte de poids a-t-elle influé sur mon pouls ?", + "weekVsMonth": "Compare cette semaine avec le mois dernier", + "tellMyDoctor": "Que devrais-je dire à mon médecin ?", + "medicationWorking": "Mon médicament fonctionne-t-il ?" }, "dailyBriefing": { - "title": "Daily Briefing", - "keyFindingsTitle": "Key findings", - "emptyTitle": "No briefing yet", - "emptyDescription": "Generate today's briefing to get a narrative read of your trends.", - "emptyAction": "Generate briefing", - "loadingLabel": "Synthesising today's briefing" + "title": "Briefing du jour", + "keyFindingsTitle": "Constats clés", + "emptyTitle": "Pas encore de briefing", + "emptyDescription": "Génère le briefing du jour pour obtenir un récap de tes tendances.", + "emptyAction": "Générer le briefing", + "loadingLabel": "Préparation du briefing" }, "therapyTimeline": { - "title": "GLP-1 therapy timeline", - "description": "Chronological log of dose changes, injections, inventory events, and side-effect days.", - "empty": "No GLP-1 therapy events logged in the last 90 days.", - "doseTo": "dose set to", - "pens": "pens", - "sideEffects": "Side effects" + "title": "Historique du traitement GLP-1", + "description": "Liste chronologique : changements de dose, injections, stock et jours d’effets secondaires.", + "empty": "Aucun événement GLP-1 sur les 90 derniers jours.", + "doseTo": "Dose à", + "pens": "Stylos", + "sideEffects": "Effets secondaires" }, "trendsRow": { "title": "Tendances", - "subtitle": "Last 30 days at a glance" + "subtitle": "Les 30 derniers jours en un coup d’œil" }, "vo2Max": { - "statLatest": "Latest", + "statLatest": "Actuel", "statMin": "Min", "statMax": "Max", - "empty": "No VO₂ max data yet — sync Apple Health to populate this view." + "empty": "Pas encore de données VO₂ max — synchronise Apple Health pour remplir cette vue." }, "trendAnnotation": { - "emptyBp": "Awaiting more data to annotate this trend.", - "emptyWeight": "Awaiting more data to annotate this trend.", - "emptyMood": "Awaiting more data to annotate this trend.", - "confidenceHigh": "High confidence", - "confidenceModerate": "Moderate confidence", - "confidenceLow": "Low confidence", - "pendingLabel": "Generating trend commentary" + "emptyBp": "Il faut plus de données pour commenter cette tendance.", + "emptyWeight": "Il faut plus de données pour commenter cette tendance.", + "emptyMood": "Il faut plus de données pour commenter cette tendance.", + "confidenceHigh": "Confiance élevée", + "confidenceModerate": "Confiance moyenne", + "confidenceLow": "Confiance faible", + "pendingLabel": "Commentaire de tendance en cours de génération" }, "correlationRow": { - "title": "Relationships", - "subtitle": "Pre-defined hypotheses, gated on n ≥ 14 and p < 0.05", - "disclaimer": "Relationships are observational, not causal — talk to your doctor if BP runs high.", - "experimentCta": "Try a 7-day experiment", - "experimentTooltip": "Coming soon", - "emptyTitle": "Need more data to see this relationship", - "sourceChip": "based on {n} paired readings · {window}", + "title": "Corrélations", + "subtitle": "Hypothèses prédéfinies, validées si n ≥ 14 et p < 0,05", + "disclaimer": "Les corrélations sont observationnelles, pas causales — parle à ton médecin si ta tension est élevée.", + "experimentCta": "Lancer une expérience de 7 jours", + "experimentTooltip": "Bientôt disponible", + "emptyTitle": "Il faut plus de données pour afficher cette corrélation", + "sourceChip": "sur la base de {n} mesures appariées · {window}", "sourceWindowLast30": "30 derniers jours", - "confidenceHigh": "High confidence", - "confidenceModerate": "Moderate confidence", - "confidenceLow": "Low confidence", + "confidenceHigh": "Confiance élevée", + "confidenceModerate": "Confiance moyenne", + "confidenceLow": "Confiance faible", "card": { - "bpComplianceTitle": "BP × medication compliance", - "bpComplianceSubtitle": "Daily systolic against compliance %", - "moodPulseTitle": "Mood × resting pulse", - "moodPulseSubtitle": "Same-day mood and resting pulse", - "weightWeekdayTitle": "Weight × weekday", - "weightWeekdaySubtitle": "Weight grouped by day of week" + "bpComplianceTitle": "TA × observance médicaments", + "bpComplianceSubtitle": "Systolique quotidienne face au % d’observance", + "moodPulseTitle": "Humeur × pouls au repos", + "moodPulseSubtitle": "Humeur et pouls au repos le même jour", + "weightWeekdayTitle": "Poids × jour de la semaine", + "weightWeekdaySubtitle": "Poids groupé par jour de la semaine" } }, "coach": { - "refusalOutOfScope": "I can only help with the health metrics in your log — measurements, medications, mood, trends. I cannot answer questions outside that scope.", - "refusalInjection": "I noticed wording that tries to override my instructions. I am the HealthLog Coach and only summarise your own health data — please rephrase your question in those terms.", - "errorBudget": "You've reached today's Coach usage limit. The budget refreshes at midnight UTC.", - "errorProvider": "The Coach could not reach an Insights provider just now. Please try again in a moment.", - "tagline": "Personal health coach, grounded in your data.", - "newChat": "New chat", - "send": "Send", - "thinking": "Thinking…", - "composerPlaceholder": "Ask anything about your data…", - "composerHint": "Press Enter to send, Shift+Enter for a new line.", - "composerDisclaimer": "Coach replies are generated. Clinical decisions belong with your doctor.", - "voiceComingSoon": "Voice input arrives with the iOS app in v1.5.", - "threadEmpty": "Ask anything about your trends, medications, or readings to start a conversation.", + "refusalOutOfScope": "Je ne peux aider que pour les données de santé de ton journal — mesures, médicaments, humeur, tendances. Les questions hors de ce périmètre ne sont pas traitées.", + "refusalInjection": "Ton message contient des instructions qui cherchent à remplacer mes consignes. Je suis le coach HealthLog et je ne résume que tes propres données de santé — reformule ta question dans ce cadre.", + "errorBudget": "Tu as atteint la limite quotidienne du coach. Le quota se réinitialise à minuit (UTC).", + "errorProvider": "Le coach n’a pas pu joindre un fournisseur d’analyse maintenant. Réessaie dans un instant.", + "tagline": "Coach personnel de santé, ancré sur tes données.", + "newChat": "Nouvelle conversation", + "send": "Envoyer", + "thinking": "Réflexion en cours…", + "composerPlaceholder": "Pose-moi une question sur tes données…", + "composerHint": "Entrée pour envoyer, Maj+Entrée pour une nouvelle ligne.", + "composerDisclaimer": "Les réponses sont générées. Les décisions cliniques relèvent de ton médecin.", + "voiceComingSoon": "La saisie vocale arrive avec l’app iOS en v1.5.", + "threadEmpty": "Pose une question sur tes tendances, médicaments ou mesures pour démarrer.", "historyTitle": "Conversations", - "historySearchPlaceholder": "Search conversations…", - "historyEmpty": "Your conversations will appear here. Ask anything to start.", - "historyDeleteAria": "Delete conversation", - "historyDeleteConfirm": "Delete this conversation? This cannot be undone.", - "sourcesTitle": "What I can see", - "sourcesFresh": "Fresh", - "sourcesStale": "Stale", - "sourcesFooter": "The Coach reads only the data you've connected.", - "evidenceLabel": "What I'm looking at", + "historySearchPlaceholder": "Rechercher dans les conversations…", + "historyEmpty": "Tes conversations s’affichent ici. Lance une question pour commencer.", + "historyDeleteAria": "Supprimer la conversation", + "historyDeleteConfirm": "Supprimer cette conversation ? Action irréversible.", + "sourcesTitle": "Ce à quoi j’accède", + "sourcesFresh": "À jour", + "sourcesStale": "Obsolètes", + "sourcesFooter": "Le coach ne lit que les données que tu as connectées.", + "evidenceLabel": "Sur quoi est-ce fondé ?", "metric": { "bp": "Tension artérielle", "weight": "Poids", "pulse": "Pouls", "mood": "Humeur", "compliance": "Observance", - "general": "General", - "hrv": "HRV", + "general": "Général", + "hrv": "VFC", "sleep": "Sommeil", - "resting_hr": "Resting HR", + "resting_hr": "Pouls au repos", "steps": "Pas", - "active_energy": "Active energy", - "flights": "Flights climbed", + "active_energy": "Énergie active", + "flights": "Étages", "distance": "Distance", "vo2_max": "VO₂ max", - "body_temp": "Body temperature", - "medications": "Medications", - "anthropometrics": "Profile (height, age, gender)" + "body_temp": "Température corporelle", + "medications": "Médicaments", + "anthropometrics": "Profil (taille, âge, sexe)" }, "window": { "last7days": "7 derniers jours", @@ -1110,11 +1110,11 @@ "lastYear": "depuis le début de l'année", "allTime": "Toute la période" }, - "windowLabel": "Window", - "settingsAriaLabel": "Coach settings", - "settingsTitle": "Coach settings", - "settingsDescription": "Tune how the Coach talks with you.", - "settingsToneLabel": "Tone", + "windowLabel": "Période", + "settingsAriaLabel": "Paramètres du coach", + "settingsTitle": "Paramètres du coach", + "settingsDescription": "Configure comment le coach te parle.", + "settingsToneLabel": "Ton", "settingsToneWarm": "Warm", "settingsToneNeutral": "Neutre", "settingsToneConcise": "Concise", diff --git a/messages/it.json b/messages/it.json index a023d19c8..e3c914ab3 100644 --- a/messages/it.json +++ b/messages/it.json @@ -899,22 +899,22 @@ "notAvailableForCompliance": "Confronto non disponibile per l’aderenza" }, "insights": { - "noAnalysisYet": "No analysis yet.", - "emptyTitle": "Not enough data yet", - "emptyDescription": "Insights light up once you've logged a handful of measurements. Start with weight or blood pressure.", - "emptyAddMeasurement": "Add a measurement", - "bmiEmptyTitle": "Set your height to see BMI", - "bmiEmptyDescription": "BMI needs your height. Add it under Settings → Account.", - "bmiEmptyAction": "Open account settings", - "noProviderConfigured": "Assessment unavailable.", - "startAnalysis": "Start analysis", - "refreshAnalysis": "Refresh analysis", - "keyTakeaway": "Key Takeaway", - "findingsTitle": "Findings", - "heroFindingPositive": "Top finding", - "heroFindingNeutral": "Top finding", - "heroFindingAttention": "Worth attention", - "heroFindingWarning": "Top alert", + "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": { @@ -922,56 +922,56 @@ "tooltip": "Record personale: {value} {unit} il {date}" }, "recommendation": { - "source": "Source", - "viewSource": "Open guideline in a new tab", - "rationale": "Why this recommendation", - "rationaleWindow": "Window", - "rationaleComparedTo": "Compared to", - "rationaleDeviation": "Deviation", - "rationaleExpand": "Show why", - "rationaleCollapse": "Hide why", - "legacyPayloadCta": "Insights updated — regenerate for new explainability features", - "feedbackHelpful": "Helpful", - "feedbackNotHelpful": "Not helpful", - "feedbackThanks": "Thanks for your feedback", - "feedbackConfirmed": "Feedback recorded", - "feedbackAlreadyRated": "Already rated", - "confidence": "Confidence", - "confidenceAria": "Confidence: {value} of 100", - "confidenceHigh": "High confidence", - "confidenceMedium": "Moderate confidence", - "confidenceLow": "Low confidence — based on limited data", - "confidenceDraft": "Draft" + "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": "Data coverage", - "dataGaps": "Data gaps:", - "lastUpdated": "Last updated", - "confidenceHoch": "High", - "confidenceMittel": "Medium", - "confidenceGering": "Low", - "loadError": "Failed to load insights", - "heroGenerated": "Generated {time}", - "heroPersonalBaseline": "Based on your last 90 days", - "heroRegenerate": "Regenerate", - "heroRegenerating": "Regenerating", - "regenerateAnalysis": "Re-run analysis", - "regenerateSuccess": "Analysis refreshed", - "heroFallbackSubtitle": "A daily read of your trends, drawn straight from the numbers you've logged.", - "heroGreetingMorning": "Good morning", - "heroGreetingAfternoon": "Good afternoon", - "heroGreetingEvening": "Good evening", - "heroComingSoonTooltip": "Coming soon", - "heroActionAskCoach": "Ask the coach", + "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": "Health Score", - "progressAria": "Health Score progress", - "deltaVsLastWeek": "{delta} vs last week", - "deltaUnavailable": "No history yet — check back next week.", + "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": "Meds", - "disclaimer": "Indicative — not a clinical assessment.", + "componentCompliance": "Aderenza", + "disclaimer": "Indicazione — non è una valutazione medica.", "deltaExplainer": { "trigger": "Cosa significa questa variazione?", "title": "Come si calcola la variazione", @@ -997,111 +997,111 @@ } }, "suggestedPrompts": { - "label": "Try asking", - "whyMonday": "Why was BP higher on Monday?", - "weightVsPulse": "How did weight loss affect my pulse?", - "weekVsMonth": "Compare this week to last month", - "tellMyDoctor": "What should I tell my doctor?", - "medicationWorking": "Is my medication working?" + "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": "Daily Briefing", - "keyFindingsTitle": "Key findings", - "emptyTitle": "No briefing yet", - "emptyDescription": "Generate today's briefing to get a narrative read of your trends.", - "emptyAction": "Generate briefing", - "loadingLabel": "Synthesising today's briefing" + "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": "GLP-1 therapy timeline", - "description": "Chronological log of dose changes, injections, inventory events, and side-effect days.", - "empty": "No GLP-1 therapy events logged in the last 90 days.", - "doseTo": "dose set to", - "pens": "pens", - "sideEffects": "Side effects" + "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": "Last 30 days at a glance" + "subtitle": "Gli ultimi 30 giorni a colpo d’occhio" }, "vo2Max": { - "statLatest": "Latest", + "statLatest": "Attuale", "statMin": "Min", "statMax": "Max", - "empty": "No VO₂ max data yet — sync Apple Health to populate this view." + "empty": "Ancora nessun dato VO₂ max — sincronizza Apple Health per riempire questa vista." }, "trendAnnotation": { - "emptyBp": "Awaiting more data to annotate this trend.", - "emptyWeight": "Awaiting more data to annotate this trend.", - "emptyMood": "Awaiting more data to annotate this trend.", - "confidenceHigh": "High confidence", - "confidenceModerate": "Moderate confidence", - "confidenceLow": "Low confidence", - "pendingLabel": "Generating trend commentary" + "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": "Relationships", - "subtitle": "Pre-defined hypotheses, gated on n ≥ 14 and p < 0.05", - "disclaimer": "Relationships are observational, not causal — talk to your doctor if BP runs high.", - "experimentCta": "Try a 7-day experiment", - "experimentTooltip": "Coming soon", - "emptyTitle": "Need more data to see this relationship", - "sourceChip": "based on {n} paired readings · {window}", + "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": "High confidence", - "confidenceModerate": "Moderate confidence", - "confidenceLow": "Low confidence", + "confidenceHigh": "Confidenza alta", + "confidenceModerate": "Confidenza media", + "confidenceLow": "Confidenza bassa", "card": { - "bpComplianceTitle": "BP × medication compliance", - "bpComplianceSubtitle": "Daily systolic against compliance %", - "moodPulseTitle": "Mood × resting pulse", - "moodPulseSubtitle": "Same-day mood and resting pulse", - "weightWeekdayTitle": "Weight × weekday", - "weightWeekdaySubtitle": "Weight grouped by day of week" + "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": "I can only help with the health metrics in your log — measurements, medications, mood, trends. I cannot answer questions outside that scope.", - "refusalInjection": "I noticed wording that tries to override my instructions. I am the HealthLog Coach and only summarise your own health data — please rephrase your question in those terms.", - "errorBudget": "You've reached today's Coach usage limit. The budget refreshes at midnight UTC.", - "errorProvider": "The Coach could not reach an Insights provider just now. Please try again in a moment.", - "tagline": "Personal health coach, grounded in your data.", - "newChat": "New chat", - "send": "Send", - "thinking": "Thinking…", - "composerPlaceholder": "Ask anything about your data…", - "composerHint": "Press Enter to send, Shift+Enter for a new line.", - "composerDisclaimer": "Coach replies are generated. Clinical decisions belong with your doctor.", - "voiceComingSoon": "Voice input arrives with the iOS app in v1.5.", - "threadEmpty": "Ask anything about your trends, medications, or readings to start a conversation.", - "historyTitle": "Conversations", - "historySearchPlaceholder": "Search conversations…", - "historyEmpty": "Your conversations will appear here. Ask anything to start.", - "historyDeleteAria": "Delete conversation", - "historyDeleteConfirm": "Delete this conversation? This cannot be undone.", - "sourcesTitle": "What I can see", - "sourcesFresh": "Fresh", - "sourcesStale": "Stale", - "sourcesFooter": "The Coach reads only the data you've connected.", - "evidenceLabel": "What I'm looking at", + "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": "General", + "general": "Generale", "hrv": "HRV", "sleep": "Sonno", - "resting_hr": "Resting HR", + "resting_hr": "Pulsazioni a riposo", "steps": "Passi", - "active_energy": "Active energy", - "flights": "Flights climbed", - "distance": "Distance", + "active_energy": "Energia attiva", + "flights": "Piani", + "distance": "Distanza", "vo2_max": "VO₂ max", - "body_temp": "Body temperature", - "medications": "Medications", - "anthropometrics": "Profile (height, age, gender)" + "body_temp": "Temperatura corporea", + "medications": "Farmaci", + "anthropometrics": "Profilo (altezza, età, sesso)" }, "window": { "last7days": "Ultimi 7 giorni", @@ -1110,11 +1110,11 @@ "lastYear": "anno in corso", "allTime": "Tutto il tempo" }, - "windowLabel": "Window", - "settingsAriaLabel": "Coach settings", - "settingsTitle": "Coach settings", - "settingsDescription": "Tune how the Coach talks with you.", - "settingsToneLabel": "Tone", + "windowLabel": "Periodo", + "settingsAriaLabel": "Impostazioni del coach", + "settingsTitle": "Impostazioni del coach", + "settingsDescription": "Imposta come il coach ti parla.", + "settingsToneLabel": "Tono", "settingsToneWarm": "Warm", "settingsToneNeutral": "Neutro", "settingsToneConcise": "Concise", diff --git a/messages/pl.json b/messages/pl.json index 65f0ce6af..c1088fada 100644 --- a/messages/pl.json +++ b/messages/pl.json @@ -899,22 +899,22 @@ "notAvailableForCompliance": "Porównanie niedostępne dla przestrzegania" }, "insights": { - "noAnalysisYet": "No analysis yet.", - "emptyTitle": "Not enough data yet", - "emptyDescription": "Insights light up once you've logged a handful of measurements. Start with weight or blood pressure.", - "emptyAddMeasurement": "Add a measurement", - "bmiEmptyTitle": "Set your height to see BMI", - "bmiEmptyDescription": "BMI needs your height. Add it under Settings → Account.", - "bmiEmptyAction": "Open account settings", - "noProviderConfigured": "Assessment unavailable.", - "startAnalysis": "Start analysis", - "refreshAnalysis": "Refresh analysis", - "keyTakeaway": "Key Takeaway", - "findingsTitle": "Findings", - "heroFindingPositive": "Top finding", - "heroFindingNeutral": "Top finding", - "heroFindingAttention": "Worth attention", - "heroFindingWarning": "Top alert", + "noAnalysisYet": "Brak analizy.", + "emptyTitle": "Jeszcze za mało danych", + "emptyDescription": "Insights pojawią się, gdy zarejestrujesz kilka pomiarów. Zacznij od wagi lub ciśnienia.", + "emptyAddMeasurement": "Zarejestruj pomiar", + "bmiEmptyTitle": "Dodaj wzrost, aby obliczyć BMI", + "bmiEmptyDescription": "BMI wymaga twojego wzrostu. Zapisz go w Ustawieniach → Konto.", + "bmiEmptyAction": "Otwórz ustawienia konta", + "noProviderConfigured": "Analiza niedostępna.", + "startAnalysis": "Uruchom analizę", + "refreshAnalysis": "Odśwież analizę", + "keyTakeaway": "Najważniejsze", + "findingsTitle": "Wnioski", + "heroFindingPositive": "Najważniejszy wniosek", + "heroFindingNeutral": "Najważniejszy wniosek", + "heroFindingAttention": "Do uwagi", + "heroFindingWarning": "Najważniejszy alert", "correlationsTitle": "Korelacje", "recommendationsTitle": "Rekomendacje", "personalRecord": { @@ -922,56 +922,56 @@ "tooltip": "Rekord osobisty: {value} {unit} dnia {date}" }, "recommendation": { - "source": "Source", - "viewSource": "Open guideline in a new tab", - "rationale": "Why this recommendation", - "rationaleWindow": "Window", - "rationaleComparedTo": "Compared to", - "rationaleDeviation": "Deviation", - "rationaleExpand": "Show why", - "rationaleCollapse": "Hide why", - "legacyPayloadCta": "Insights updated — regenerate for new explainability features", - "feedbackHelpful": "Helpful", - "feedbackNotHelpful": "Not helpful", - "feedbackThanks": "Thanks for your feedback", - "feedbackConfirmed": "Feedback recorded", - "feedbackAlreadyRated": "Already rated", - "confidence": "Confidence", - "confidenceAria": "Confidence: {value} of 100", - "confidenceHigh": "High confidence", - "confidenceMedium": "Moderate confidence", - "confidenceLow": "Low confidence — based on limited data", - "confidenceDraft": "Draft" + "source": "Źródło", + "viewSource": "Otwórz wytyczne w nowej karcie", + "rationale": "Dlaczego ta rekomendacja", + "rationaleWindow": "Okno", + "rationaleComparedTo": "W porównaniu z", + "rationaleDeviation": "Odchylenie", + "rationaleExpand": "Pokaż uzasadnienie", + "rationaleCollapse": "Ukryj uzasadnienie", + "legacyPayloadCta": "Insights zaktualizowane — wygeneruj ponownie, aby aktywować nowe wyjaśnienia", + "feedbackHelpful": "Przydatne", + "feedbackNotHelpful": "Mało przydatne", + "feedbackThanks": "Dzięki za opinię", + "feedbackConfirmed": "Opinia zapisana", + "feedbackAlreadyRated": "Już ocenione", + "confidence": "Pewność", + "confidenceAria": "Pewność: {value} na 100", + "confidenceHigh": "Wysoka pewność", + "confidenceMedium": "Średnia pewność", + "confidenceLow": "Niska pewność — mało danych", + "confidenceDraft": "Wersja robocza" }, - "dataFoundation": "Data coverage", - "dataGaps": "Data gaps:", - "lastUpdated": "Last updated", - "confidenceHoch": "High", - "confidenceMittel": "Medium", - "confidenceGering": "Low", - "loadError": "Failed to load insights", - "heroGenerated": "Generated {time}", - "heroPersonalBaseline": "Based on your last 90 days", - "heroRegenerate": "Regenerate", - "heroRegenerating": "Regenerating", - "regenerateAnalysis": "Re-run analysis", - "regenerateSuccess": "Analysis refreshed", - "heroFallbackSubtitle": "A daily read of your trends, drawn straight from the numbers you've logged.", - "heroGreetingMorning": "Good morning", - "heroGreetingAfternoon": "Good afternoon", - "heroGreetingEvening": "Good evening", - "heroComingSoonTooltip": "Coming soon", - "heroActionAskCoach": "Ask the coach", + "dataFoundation": "Podstawa danych", + "dataGaps": "Braki danych:", + "lastUpdated": "Ostatnia aktualizacja", + "confidenceHoch": "Wysoka", + "confidenceMittel": "Średnia", + "confidenceGering": "Niska", + "loadError": "Nie udało się załadować analiz", + "heroGenerated": "Wygenerowano {time}", + "heroPersonalBaseline": "Na podstawie ostatnich 90 dni", + "heroRegenerate": "Wygeneruj ponownie", + "heroRegenerating": "Generowanie", + "regenerateAnalysis": "Uruchom analizę ponownie", + "regenerateSuccess": "Analiza wygenerowana ponownie", + "heroFallbackSubtitle": "Codzienne spojrzenie na twoje trendy — prosto z liczb, które rejestrujesz.", + "heroGreetingMorning": "Dzień dobry", + "heroGreetingAfternoon": "Dzień dobry", + "heroGreetingEvening": "Dobry wieczór", + "heroComingSoonTooltip": "Wkrótce", + "heroActionAskCoach": "Zapytaj coacha", "healthScore": { - "label": "Health Score", - "progressAria": "Health Score progress", - "deltaVsLastWeek": "{delta} vs last week", - "deltaUnavailable": "No history yet — check back next week.", + "label": "Wynik zdrowia", + "progressAria": "Postęp wyniku zdrowia", + "deltaVsLastWeek": "{delta} w porównaniu z ubiegłym tygodniem", + "deltaUnavailable": "Brak historii — zajrzyj w przyszłym tygodniu.", "componentBp": "RR", "componentWeight": "Waga", "componentMood": "Nastrój", - "componentCompliance": "Meds", - "disclaimer": "Indicative — not a clinical assessment.", + "componentCompliance": "Przestrzeganie", + "disclaimer": "Wskazówka — nie ocena medyczna.", "deltaExplainer": { "trigger": "Co oznacza ta zmiana?", "title": "Jak liczona jest ta zmiana", @@ -985,10 +985,10 @@ "footnote": "Wagi są przeskalowywane do dostępnych danych.", "asOfLabel": "stan na {date}", "provisional": "Wstępny — dostępne {count} z {total} danych", - "provisionalBadge": "Wstępny", + "provisionalBadge": "Wstępne", "sourceAria": "Źródło: {source}", "sources": { - "manual": "Ręcznie", + "manual": "Ręczne", "withings": "Withings", "appleHealth": "Apple Health", "mixed": "Mieszane", @@ -997,111 +997,111 @@ } }, "suggestedPrompts": { - "label": "Try asking", - "whyMonday": "Why was BP higher on Monday?", - "weightVsPulse": "How did weight loss affect my pulse?", - "weekVsMonth": "Compare this week to last month", - "tellMyDoctor": "What should I tell my doctor?", - "medicationWorking": "Is my medication working?" + "label": "Zapytaj mnie", + "whyMonday": "Dlaczego moje ciśnienie było wyższe w poniedziałek?", + "weightVsPulse": "Jak spadek wagi wpłynął na moje tętno?", + "weekVsMonth": "Porównaj ten tydzień z poprzednim miesiącem", + "tellMyDoctor": "Co powinienem powiedzieć lekarzowi?", + "medicationWorking": "Czy mój lek działa?" }, "dailyBriefing": { - "title": "Daily Briefing", - "keyFindingsTitle": "Key findings", - "emptyTitle": "No briefing yet", - "emptyDescription": "Generate today's briefing to get a narrative read of your trends.", - "emptyAction": "Generate briefing", - "loadingLabel": "Synthesising today's briefing" + "title": "Briefing dnia", + "keyFindingsTitle": "Kluczowe wnioski", + "emptyTitle": "Jeszcze brak briefingu", + "emptyDescription": "Wygeneruj dzisiejszy briefing, aby zobaczyć podsumowanie trendów.", + "emptyAction": "Wygeneruj briefing", + "loadingLabel": "Przygotowanie briefingu" }, "therapyTimeline": { - "title": "GLP-1 therapy timeline", - "description": "Chronological log of dose changes, injections, inventory events, and side-effect days.", - "empty": "No GLP-1 therapy events logged in the last 90 days.", - "doseTo": "dose set to", - "pens": "pens", - "sideEffects": "Side effects" + "title": "Historia terapii GLP-1", + "description": "Chronologiczna lista: zmiany dawki, iniekcje, zapasy i dni z działaniami niepożądanymi.", + "empty": "Brak zdarzeń GLP-1 w ostatnich 90 dniach.", + "doseTo": "Dawka na", + "pens": "Peny", + "sideEffects": "Działania niepożądane" }, "trendsRow": { "title": "Trendy", - "subtitle": "Last 30 days at a glance" + "subtitle": "Ostatnie 30 dni w skrócie" }, "vo2Max": { - "statLatest": "Latest", + "statLatest": "Aktualne", "statMin": "Min", - "statMax": "Max", - "empty": "No VO₂ max data yet — sync Apple Health to populate this view." + "statMax": "Maks", + "empty": "Brak danych VO₂ max — zsynchronizuj Apple Health, aby uzupełnić ten widok." }, "trendAnnotation": { - "emptyBp": "Awaiting more data to annotate this trend.", - "emptyWeight": "Awaiting more data to annotate this trend.", - "emptyMood": "Awaiting more data to annotate this trend.", - "confidenceHigh": "High confidence", - "confidenceModerate": "Moderate confidence", - "confidenceLow": "Low confidence", - "pendingLabel": "Generating trend commentary" + "emptyBp": "Potrzeba więcej danych, aby skomentować ten trend.", + "emptyWeight": "Potrzeba więcej danych, aby skomentować ten trend.", + "emptyMood": "Potrzeba więcej danych, aby skomentować ten trend.", + "confidenceHigh": "Wysoka pewność", + "confidenceModerate": "Średnia pewność", + "confidenceLow": "Niska pewność", + "pendingLabel": "Komentarz trendu jest generowany" }, "correlationRow": { - "title": "Relationships", - "subtitle": "Pre-defined hypotheses, gated on n ≥ 14 and p < 0.05", - "disclaimer": "Relationships are observational, not causal — talk to your doctor if BP runs high.", - "experimentCta": "Try a 7-day experiment", - "experimentTooltip": "Coming soon", - "emptyTitle": "Need more data to see this relationship", - "sourceChip": "based on {n} paired readings · {window}", + "title": "Korelacje", + "subtitle": "Hipotezy zdefiniowane wcześniej, z progiem n ≥ 14 i p < 0,05", + "disclaimer": "Korelacje są obserwacyjne, nie przyczynowe — porozmawiaj z lekarzem, jeśli ciśnienie jest wysokie.", + "experimentCta": "Uruchom 7-dniowy eksperyment", + "experimentTooltip": "Wkrótce", + "emptyTitle": "Potrzeba więcej danych, aby pokazać tę korelację", + "sourceChip": "na podstawie {n} sparowanych pomiarów · {window}", "sourceWindowLast30": "Ostatnie 30 dni", - "confidenceHigh": "High confidence", - "confidenceModerate": "Moderate confidence", - "confidenceLow": "Low confidence", + "confidenceHigh": "Wysoka pewność", + "confidenceModerate": "Średnia pewność", + "confidenceLow": "Niska pewność", "card": { - "bpComplianceTitle": "BP × medication compliance", - "bpComplianceSubtitle": "Daily systolic against compliance %", - "moodPulseTitle": "Mood × resting pulse", - "moodPulseSubtitle": "Same-day mood and resting pulse", - "weightWeekdayTitle": "Weight × weekday", - "weightWeekdaySubtitle": "Weight grouped by day of week" + "bpComplianceTitle": "RR × przestrzeganie leków", + "bpComplianceSubtitle": "Dzienne skurczowe wobec % przestrzegania", + "moodPulseTitle": "Nastrój × tętno spoczynkowe", + "moodPulseSubtitle": "Nastrój i tętno spoczynkowe w tym samym dniu", + "weightWeekdayTitle": "Waga × dzień tygodnia", + "weightWeekdaySubtitle": "Waga pogrupowana wg dnia tygodnia" } }, "coach": { - "refusalOutOfScope": "I can only help with the health metrics in your log — measurements, medications, mood, trends. I cannot answer questions outside that scope.", - "refusalInjection": "I noticed wording that tries to override my instructions. I am the HealthLog Coach and only summarise your own health data — please rephrase your question in those terms.", - "errorBudget": "You've reached today's Coach usage limit. The budget refreshes at midnight UTC.", - "errorProvider": "The Coach could not reach an Insights provider just now. Please try again in a moment.", - "tagline": "Personal health coach, grounded in your data.", - "newChat": "New chat", - "send": "Send", - "thinking": "Thinking…", - "composerPlaceholder": "Ask anything about your data…", - "composerHint": "Press Enter to send, Shift+Enter for a new line.", - "composerDisclaimer": "Coach replies are generated. Clinical decisions belong with your doctor.", - "voiceComingSoon": "Voice input arrives with the iOS app in v1.5.", - "threadEmpty": "Ask anything about your trends, medications, or readings to start a conversation.", - "historyTitle": "Conversations", - "historySearchPlaceholder": "Search conversations…", - "historyEmpty": "Your conversations will appear here. Ask anything to start.", - "historyDeleteAria": "Delete conversation", - "historyDeleteConfirm": "Delete this conversation? This cannot be undone.", - "sourcesTitle": "What I can see", - "sourcesFresh": "Fresh", - "sourcesStale": "Stale", - "sourcesFooter": "The Coach reads only the data you've connected.", - "evidenceLabel": "What I'm looking at", + "refusalOutOfScope": "Mogę pomóc tylko w sprawach danych zdrowotnych z twojego logu — pomiarów, leków, nastroju, trendów. Pytań spoza tego zakresu nie podejmuję.", + "refusalInjection": "Twoja wiadomość zawiera instrukcje, które próbują nadpisać moje wytyczne. Jestem coachem HealthLog i podsumowuję wyłącznie twoje własne dane zdrowotne — przeformułuj pytanie w tych ramach.", + "errorBudget": "Osiągnięto dzienny limit coacha. Limit resetuje się o północy (UTC).", + "errorProvider": "Coach nie mógł teraz skontaktować się z dostawcą analizy. Spróbuj za chwilę.", + "tagline": "Osobisty coach zdrowia, oparty na twoich danych.", + "newChat": "Nowa rozmowa", + "send": "Wyślij", + "thinking": "Myślę…", + "composerPlaceholder": "Zapytaj o swoje dane…", + "composerHint": "Enter wysyła, Shift+Enter przechodzi do nowej linii.", + "composerDisclaimer": "Odpowiedzi są generowane. Decyzje kliniczne należą do lekarza.", + "voiceComingSoon": "Wejście głosowe pojawi się z aplikacją iOS w v1.5.", + "threadEmpty": "Zapytaj o swoje trendy, leki lub pomiary, aby zacząć.", + "historyTitle": "Rozmowy", + "historySearchPlaceholder": "Szukaj w rozmowach…", + "historyEmpty": "Twoje rozmowy pojawią się tutaj. Zadaj pytanie, aby zacząć.", + "historyDeleteAria": "Usuń rozmowę", + "historyDeleteConfirm": "Usunąć tę rozmowę? Tego nie da się cofnąć.", + "sourcesTitle": "Do czego mam dostęp", + "sourcesFresh": "Aktualne", + "sourcesStale": "Nieaktualne", + "sourcesFooter": "Coach czyta tylko dane, które podłączyłeś.", + "evidenceLabel": "Na czym to się opiera?", "metric": { "bp": "Ciśnienie krwi", "weight": "Waga", "pulse": "Tętno", "mood": "Nastrój", "compliance": "Przestrzeganie zaleceń", - "general": "General", + "general": "Ogólne", "hrv": "HRV", "sleep": "Sen", - "resting_hr": "Resting HR", + "resting_hr": "Tętno spoczynkowe", "steps": "Kroki", - "active_energy": "Active energy", - "flights": "Flights climbed", - "distance": "Distance", + "active_energy": "Aktywna energia", + "flights": "Piętra", + "distance": "Dystans", "vo2_max": "VO₂ max", - "body_temp": "Body temperature", - "medications": "Medications", - "anthropometrics": "Profile (height, age, gender)" + "body_temp": "Temperatura ciała", + "medications": "Leki", + "anthropometrics": "Profil (wzrost, wiek, płeć)" }, "window": { "last7days": "Ostatnie 7 dni", @@ -1110,11 +1110,11 @@ "lastYear": "od początku roku", "allTime": "Cały okres" }, - "windowLabel": "Window", - "settingsAriaLabel": "Coach settings", - "settingsTitle": "Coach settings", - "settingsDescription": "Tune how the Coach talks with you.", - "settingsToneLabel": "Tone", + "windowLabel": "Okres", + "settingsAriaLabel": "Ustawienia coacha", + "settingsTitle": "Ustawienia coacha", + "settingsDescription": "Ustaw, jak coach do ciebie mówi.", + "settingsToneLabel": "Ton", "settingsToneWarm": "Warm", "settingsToneNeutral": "Neutralnie", "settingsToneConcise": "Concise",