diff --git a/messages/es.json b/messages/es.json
index a908caf5e..2d7101793 100644
--- a/messages/es.json
+++ b/messages/es.json
@@ -155,7 +155,7 @@
},
"errorBoundary": {
"title": "Algo ha salido mal",
- "description": "An unexpected error occurred. You can retry, copy the technical details, or open a bug report."
+ "description": "Se ha producido un error inesperado. Puedes reintentar, copiar los detalles técnicos o abrir un reporte de bug."
},
"nav": {
"dashboard": "Panel",
@@ -165,7 +165,7 @@
"targets": "Objetivos",
"achievements": "Logros",
"settings": "Ajustes",
- "bugreport": "Bug Report",
+ "bugreport": "Reporte de bug",
"admin": "Consola de administración",
"logout": "Cerrar sesión",
"login": "Iniciar sesión",
@@ -175,18 +175,18 @@
"themeSystem": "Sistema",
"themeDark": "Oscuro",
"themeLight": "Claro",
- "collapseSidebar": "Collapse",
- "userMenu": "User menu",
+ "collapseSidebar": "Contraer",
+ "userMenu": "Menú de usuario",
"mood": "Estado de ánimo",
- "skipToContent": "Skip to content",
- "sidebar": "Sidebar",
- "mainNavigation": "Main navigation",
- "mobileNavigation": "Mobile navigation",
+ "skipToContent": "Saltar al contenido",
+ "sidebar": "Barra lateral",
+ "mainNavigation": "Navegación principal",
+ "mobileNavigation": "Navegación móvil",
"breadcrumb": "Ruta de navegación",
- "loadingScreen": "Loading…",
- "more": "More",
- "moreSheetTitle": "More",
- "moreSheetDescription": "Pages that don't fit the bottom bar."
+ "loadingScreen": "Cargando…",
+ "more": "Más",
+ "moreSheetTitle": "Más",
+ "moreSheetDescription": "Páginas que no caben en la barra inferior."
},
"auth": {
"login": "Iniciar sesión",
@@ -1400,36 +1400,36 @@
"unsetExplanation": "Sin valor propio — se aplica el valor por defecto calculado."
},
"onboarding": {
- "errorGeneric": "Something went wrong while finishing setup. Please try again.",
+ "errorGeneric": "Algo ha salido mal al finalizar la configuración. Inténtalo de nuevo.",
"tour": {
"stepOf": "Paso {current} de {total}",
"next": "Siguiente",
"back": "Atrás",
- "skip": "Skip tour",
- "done": "Got it",
- "restart": "Restart onboarding tour",
- "restartHint": "Replay the dashboard walkthrough from the start.",
- "restartConfirmation": "Tour will restart on your next dashboard visit.",
+ "skip": "Saltar tour",
+ "done": "Entendido",
+ "restart": "Reiniciar tour",
+ "restartHint": "Vuelve a mostrar el tour del panel la próxima vez.",
+ "restartConfirmation": "El tour se reiniciará en tu próxima visita al panel.",
"steps": {
"tileStrip": {
- "title": "Your daily numbers",
- "body": "The tile strip shows the latest reading and a 7-day trend for every metric you log — weight, blood pressure, pulse, mood. Hide what you don't need from Settings → Dashboard."
+ "title": "Tus valores del día",
+ "body": "La fila de tarjetas muestra el último valor y la tendencia de 7 días de cada métrica — peso, tensión arterial, pulso, ánimo. Oculta lo que no necesites en Ajustes → Panel."
},
"quickAdd": {
- "title": "Log anything in two taps",
- "body": "Use the Add button to drop a measurement or mood entry without leaving the dashboard. The form remembers your last context and tags."
+ "title": "Registrado en dos toques",
+ "body": "Con el botón Añadir puedes registrar mediciones o entradas de ánimo sin salir del panel. El formulario recuerda tu último contexto y etiquetas."
},
"insights": {
- "title": "Automatic insights",
- "body": "Insights turns your readings into a plain-English health summary, with classifications for blood pressure, weight trend and mood. Bring your own provider key or use the built-in default."
+ "title": "Insights automáticos",
+ "body": "Insights convierte tus valores en un resumen claro de salud, con interpretación de tensión arterial, peso y ánimo. Clave propia o por defecto — tú eliges."
},
"integrations": {
- "title": "Connect your devices",
- "body": "Open Settings to link Withings (auto-sync weight, BP and pulse), moodLog, or your Insights provider. Everything stays optional and encrypted."
+ "title": "Conectar dispositivos",
+ "body": "En Ajustes conectas Withings (sincronización automática de peso, tensión y pulso), moodLog o tu proveedor de análisis. Todo es opcional y queda cifrado."
},
"achievements": {
- "title": "Earn streaks and badges",
- "body": "The Achievements page tracks daily logging streaks, blood-pressure milestones and consistency badges. A small nudge to keep going."
+ "title": "Acumula rachas e insignias",
+ "body": "La página de Logros lleva la cuenta de rachas de registro diario, hitos de tensión arterial e insignias de constancia. Un pequeño empujón para no abandonar."
}
}
},
@@ -1502,27 +1502,27 @@
}
},
"gettingStarted": {
- "title": "Getting started",
- "subtitle": "Quick wins to get the most out of HealthLog.",
- "progress": "{done} de {total} hecho",
- "dismissAll": "Hide checklist",
- "dismissTooltip": "Hide this item",
+ "title": "Primeros pasos",
+ "subtitle": "Quick wins para sacar el máximo provecho a HealthLog.",
+ "progress": "{done} de {total} completados",
+ "dismissAll": "Ocultar la lista",
+ "dismissTooltip": "Ocultar este punto",
"items": {
- "profileTitle": "Set your profile",
- "profileDescription": "Height, date of birth and gender unlock personalised targets.",
- "profileCta": "Open profile",
- "measurementTitle": "Log your first measurement",
- "measurementDescription": "One reading is enough to draw your first trend tile.",
- "measurementCta": "Add measurement",
- "medicationTitle": "Add a medication",
- "medicationDescription": "Track compliance and get reminders right when you need them.",
- "medicationCta": "Add medication",
- "withingsTitle": "Connect Withings (optional)",
- "withingsDescription": "Auto-sync weight, BP and pulse from your Withings devices.",
- "withingsCta": "Connect",
- "notificationsTitle": "Configure notifications",
- "notificationsDescription": "Choose how HealthLog should remind you — Telegram, ntfy or Web Push.",
- "notificationsCta": "Open notifications"
+ "profileTitle": "Configurar el perfil",
+ "profileDescription": "Altura, fecha de nacimiento y sexo desbloquean objetivos personalizados.",
+ "profileCta": "Abrir perfil",
+ "measurementTitle": "Registrar la primera medición",
+ "measurementDescription": "Basta una medición para trazar tu primera tarjeta de tendencia.",
+ "measurementCta": "Añadir medición",
+ "medicationTitle": "Añadir medicamento",
+ "medicationDescription": "Sigue el cumplimiento y recibe recordatorios justo cuando los necesites.",
+ "medicationCta": "Añadir medicamento",
+ "withingsTitle": "Conectar Withings (opcional)",
+ "withingsDescription": "Sincroniza peso, tensión arterial y pulso automáticamente desde tus dispositivos Withings.",
+ "withingsCta": "Conectar",
+ "notificationsTitle": "Configurar notificaciones",
+ "notificationsDescription": "Elige cómo te recuerda HealthLog — Telegram, ntfy o Web Push.",
+ "notificationsCta": "Abrir notificaciones"
}
},
"trendHints": {
@@ -2746,22 +2746,22 @@
}
},
"bugreport": {
- "title": "Bug Report",
- "subtitle": "Send a bug report, feature request, or question. The server administrator will see your submission.",
- "loginRequired": "Please sign in to report a bug.",
- "bugTitle": "Title",
+ "title": "Reporte de bug",
+ "subtitle": "Envía un fallo, una sugerencia o una pregunta. El administrador del servidor verá tu envío.",
+ "loginRequired": "Inicia sesión para reportar un bug.",
+ "bugTitle": "Título",
"description": "Descripción",
- "submit": "Send",
- "success": "Thank you! Your bug report has been submitted successfully.",
- "errorCreating": "Error creating report",
+ "submit": "Enviar",
+ "success": "¡Gracias! Tu reporte se ha enviado correctamente.",
+ "errorCreating": "Error al crear",
"category": "Tipo",
- "categoryBug": "Bug report",
- "categoryFeature": "Feature request",
- "categoryQuestion": "Question",
- "categoryOther": "Other feedback",
- "bugTitlePlaceholder": "Short summary (optional)",
- "githubEscalationNote": "Your feedback is stored locally. If the admin enables GitHub integration, it can be promoted to a public issue on request.",
- "internalOnlyNote": "Your feedback is stored locally and only visible to the administrator of this server.",
+ "categoryBug": "Fallo",
+ "categoryFeature": "Sugerencia",
+ "categoryQuestion": "Pregunta",
+ "categoryOther": "Otro feedback",
+ "bugTitlePlaceholder": "Resumen breve (opcional)",
+ "githubEscalationNote": "Tu feedback se guarda localmente. Si el administrador activa la integración con GitHub, puede publicarse como issue público a petición.",
+ "internalOnlyNote": "Tu feedback se guarda localmente y solo es visible para el administrador de este servidor.",
"disabledTitle": "Bug reports are turned off",
"disabledBody": "The administrator has disabled bug reports on this server."
},
@@ -2771,10 +2771,10 @@
"breadcrumbChannels": "Canales de notificación",
"breadcrumbSettings": "Ajustes",
"eventColumn": "Evento",
- "subtitle": "Choose which notifications you want to receive through which channel.",
- "loadError": "Notification preferences could not be loaded.",
- "noChannels": "Configure a notification channel in Settings first.",
- "goToSettings": "Go to channel settings",
+ "subtitle": "Elige qué notificaciones recibes y por qué canal.",
+ "loadError": "No se han podido cargar los ajustes de notificación.",
+ "noChannels": "Configura primero un canal de notificación en los ajustes.",
+ "goToSettings": "Ir a los ajustes del canal",
"channelDisabled": "Desactivado",
"admin": {
"deployFailedTitle": "Despliegue fallido: {application}",
@@ -2952,24 +2952,24 @@
"minLength": "Se requieren al menos {count} caracteres."
},
"telegram": {
- "errorInvalidAction": "Invalid action.",
- "errorMedicationNotFound": "Medication not found.",
- "errorMedicationInactive": "Medication not found or inactive.",
- "errorUnknownAction": "Unknown action.",
- "snoozeOneHour": "1 hour",
- "snoozeThreeHours": "3 hours",
- "snoozedFor": "{name} snoozed for {duration}.",
- "skipped": "{name} Omitida.",
- "alreadyRecorded": "{name} was already recorded.",
- "recordedAsTaken": "{name} recorded as taken.",
- "confirmed": "{name} confirmed.",
- "genericConfirmed": "Confirmed.",
- "cancelled": "Cancelled.",
- "noActiveMedications": "No active medications found.",
- "whichMedication": "Which medication did you take?",
+ "errorInvalidAction": "Acción no válida.",
+ "errorMedicationNotFound": "Medicamento no encontrado.",
+ "errorMedicationInactive": "Medicamento no encontrado o inactivo.",
+ "errorUnknownAction": "Acción desconocida.",
+ "snoozeOneHour": "1 hora",
+ "snoozeThreeHours": "3 horas",
+ "snoozedFor": "{name} pospuesto durante {duration}.",
+ "skipped": "{name} omitido.",
+ "alreadyRecorded": "{name} ya estaba registrado.",
+ "recordedAsTaken": "{name} registrado como tomado.",
+ "confirmed": "{name} confirmado.",
+ "genericConfirmed": "Confirmado.",
+ "cancelled": "Cancelado.",
+ "noActiveMedications": "No se han encontrado medicamentos activos.",
+ "whichMedication": "¿Qué medicamento has tomado?",
"cancelButton": "Cancelar",
- "askMedicationName": "Please specify a medication, e.g. taken Ramipril.",
- "medicationNotFoundExact": "Medication not found. Please send the name exactly as in HealthLog.",
+ "askMedicationName": "Indica el medicamento, p. ej. tomado Ramipril.",
+ "medicationNotFoundExact": "Medicamento no encontrado. Envía el nombre exactamente como aparece en HealthLog.",
"helpHeader": "Available commands:",
"helpBody": "/help — show this help\n/add — record an intake\n/start — start the bot\n\nText commands:\ntaken <name> — confirm an intake\n\nButtons in reminders:\n• Taken — confirm intake\n• 🕐 1h / 🕐 3h — postpone reminder\n• ⏭ Skip — skip intake\n• ✓ Confirm — confirm a missed intake"
},
diff --git a/messages/fr.json b/messages/fr.json
index 76ce1b82e..f72a10a61 100644
--- a/messages/fr.json
+++ b/messages/fr.json
@@ -155,7 +155,7 @@
},
"errorBoundary": {
"title": "Une erreur est survenue",
- "description": "An unexpected error occurred. You can retry, copy the technical details, or open a bug report."
+ "description": "Une erreur inattendue est survenue. Tu peux réessayer, copier les détails techniques ou ouvrir un rapport de bug."
},
"nav": {
"dashboard": "Tableau de bord",
@@ -165,7 +165,7 @@
"targets": "Objectifs",
"achievements": "Succès",
"settings": "Paramètres",
- "bugreport": "Bug Report",
+ "bugreport": "Rapport de bug",
"admin": "Console d’administration",
"logout": "Se déconnecter",
"login": "Se connecter",
@@ -175,18 +175,18 @@
"themeSystem": "Système",
"themeDark": "Sombre",
"themeLight": "Clair",
- "collapseSidebar": "Collapse",
- "userMenu": "User menu",
+ "collapseSidebar": "Réduire",
+ "userMenu": "Menu utilisateur",
"mood": "Humeur",
- "skipToContent": "Skip to content",
- "sidebar": "Sidebar",
- "mainNavigation": "Main navigation",
- "mobileNavigation": "Mobile navigation",
+ "skipToContent": "Aller au contenu",
+ "sidebar": "Barre latérale",
+ "mainNavigation": "Navigation principale",
+ "mobileNavigation": "Navigation mobile",
"breadcrumb": "Fil d'Ariane",
- "loadingScreen": "Loading…",
- "more": "More",
- "moreSheetTitle": "More",
- "moreSheetDescription": "Pages that don't fit the bottom bar."
+ "loadingScreen": "Chargement…",
+ "more": "Plus",
+ "moreSheetTitle": "Plus",
+ "moreSheetDescription": "Pages qui ne tiennent pas dans la barre du bas."
},
"auth": {
"login": "Se connecter",
@@ -1400,36 +1400,36 @@
"unsetExplanation": "Pas de valeur personnelle — la valeur par défaut calculée s’applique."
},
"onboarding": {
- "errorGeneric": "Something went wrong while finishing setup. Please try again.",
+ "errorGeneric": "Une erreur est survenue à la fin de la configuration. Réessaie.",
"tour": {
"stepOf": "Étape {current} sur {total}",
"next": "Suivant",
- "back": "Retour",
- "skip": "Skip tour",
- "done": "Got it",
- "restart": "Restart onboarding tour",
- "restartHint": "Replay the dashboard walkthrough from the start.",
- "restartConfirmation": "Tour will restart on your next dashboard visit.",
+ "back": "Précédent",
+ "skip": "Passer la visite",
+ "done": "Compris",
+ "restart": "Relancer la visite",
+ "restartHint": "Affiche à nouveau la visite du tableau de bord à la prochaine ouverture.",
+ "restartConfirmation": "La visite redémarrera lors de ta prochaine visite du tableau de bord.",
"steps": {
"tileStrip": {
- "title": "Your daily numbers",
- "body": "The tile strip shows the latest reading and a 7-day trend for every metric you log — weight, blood pressure, pulse, mood. Hide what you don't need from Settings → Dashboard."
+ "title": "Tes valeurs du jour",
+ "body": "La barre de tuiles affiche la dernière valeur et la tendance 7 jours de chaque métrique — poids, tension, pouls, humeur. Masque ce qui ne te sert pas dans Paramètres → Tableau de bord."
},
"quickAdd": {
- "title": "Log anything in two taps",
- "body": "Use the Add button to drop a measurement or mood entry without leaving the dashboard. The form remembers your last context and tags."
+ "title": "Saisi en deux tapotements",
+ "body": "Via le bouton Ajouter, tu saisis des mesures ou des humeurs sans quitter le tableau de bord. Le formulaire mémorise le dernier contexte et les étiquettes."
},
"insights": {
- "title": "Automatic insights",
- "body": "Insights turns your readings into a plain-English health summary, with classifications for blood pressure, weight trend and mood. Bring your own provider key or use the built-in default."
+ "title": "Insights automatiques",
+ "body": "Insights transforme tes valeurs en un résumé santé clair, avec un classement de la tension, du poids et de l’humeur. Clé personnelle ou par défaut — c’est toi qui choisis."
},
"integrations": {
- "title": "Connect your devices",
- "body": "Open Settings to link Withings (auto-sync weight, BP and pulse), moodLog, or your Insights provider. Everything stays optional and encrypted."
+ "title": "Connecter des appareils",
+ "body": "Dans les paramètres, tu connectes Withings (synchronisation automatique du poids, de la tension et du pouls), moodLog ou ton fournisseur d’analyse. Tout reste optionnel et chiffré."
},
"achievements": {
- "title": "Earn streaks and badges",
- "body": "The Achievements page tracks daily logging streaks, blood-pressure milestones and consistency badges. A small nudge to keep going."
+ "title": "Collecter séries et badges",
+ "body": "La page Succès suit les séries de saisie quotidienne, les paliers de tension et les badges de constance. Un petit coup de pouce pour rester régulier."
}
}
},
@@ -1502,27 +1502,27 @@
}
},
"gettingStarted": {
- "title": "Getting started",
- "subtitle": "Quick wins to get the most out of HealthLog.",
- "progress": "{done} sur {total} terminé",
- "dismissAll": "Hide checklist",
- "dismissTooltip": "Hide this item",
+ "title": "Premiers pas",
+ "subtitle": "Petites victoires pour tirer le meilleur de HealthLog.",
+ "progress": "{done} sur {total} faits",
+ "dismissAll": "Masquer la liste",
+ "dismissTooltip": "Masquer ce point",
"items": {
- "profileTitle": "Set your profile",
- "profileDescription": "Height, date of birth and gender unlock personalised targets.",
- "profileCta": "Open profile",
- "measurementTitle": "Log your first measurement",
- "measurementDescription": "One reading is enough to draw your first trend tile.",
- "measurementCta": "Add measurement",
- "medicationTitle": "Add a medication",
- "medicationDescription": "Track compliance and get reminders right when you need them.",
- "medicationCta": "Add medication",
- "withingsTitle": "Connect Withings (optional)",
- "withingsDescription": "Auto-sync weight, BP and pulse from your Withings devices.",
- "withingsCta": "Connect",
- "notificationsTitle": "Configure notifications",
- "notificationsDescription": "Choose how HealthLog should remind you — Telegram, ntfy or Web Push.",
- "notificationsCta": "Open notifications"
+ "profileTitle": "Configurer le profil",
+ "profileDescription": "Taille, date de naissance et sexe débloquent des objectifs personnalisés.",
+ "profileCta": "Ouvrir le profil",
+ "measurementTitle": "Saisir la première mesure",
+ "measurementDescription": "Une mesure suffit pour tracer ta première tuile de tendance.",
+ "measurementCta": "Ajouter une mesure",
+ "medicationTitle": "Ajouter un médicament",
+ "medicationDescription": "Suis l’observance et reçois des rappels au moment où tu en as besoin.",
+ "medicationCta": "Ajouter un médicament",
+ "withingsTitle": "Connecter Withings (optionnel)",
+ "withingsDescription": "Synchronise automatiquement poids, tension et pouls depuis tes appareils Withings.",
+ "withingsCta": "Connecter",
+ "notificationsTitle": "Configurer les notifications",
+ "notificationsDescription": "Choisis comment HealthLog te prévient — Telegram, ntfy ou Web Push.",
+ "notificationsCta": "Ouvrir les notifications"
}
},
"trendHints": {
@@ -2746,22 +2746,22 @@
}
},
"bugreport": {
- "title": "Bug Report",
- "subtitle": "Send a bug report, feature request, or question. The server administrator will see your submission.",
- "loginRequired": "Please sign in to report a bug.",
- "bugTitle": "Title",
+ "title": "Rapport de bug",
+ "subtitle": "Envoie un bug, une suggestion ou une question. L’administrateur du serveur verra ton envoi.",
+ "loginRequired": "Connecte-toi pour signaler un bug.",
+ "bugTitle": "Titre",
"description": "Description",
- "submit": "Send",
- "success": "Thank you! Your bug report has been submitted successfully.",
- "errorCreating": "Error creating report",
+ "submit": "Envoyer",
+ "success": "Merci ! Ton rapport a bien été envoyé.",
+ "errorCreating": "Erreur lors de la création",
"category": "Type",
- "categoryBug": "Bug report",
- "categoryFeature": "Feature request",
+ "categoryBug": "Bug",
+ "categoryFeature": "Suggestion",
"categoryQuestion": "Question",
- "categoryOther": "Other feedback",
- "bugTitlePlaceholder": "Short summary (optional)",
- "githubEscalationNote": "Your feedback is stored locally. If the admin enables GitHub integration, it can be promoted to a public issue on request.",
- "internalOnlyNote": "Your feedback is stored locally and only visible to the administrator of this server.",
+ "categoryOther": "Autre retour",
+ "bugTitlePlaceholder": "Résumé court (optionnel)",
+ "githubEscalationNote": "Ton retour est stocké localement. Si l’administrateur active l’intégration GitHub, il pourra être publié comme issue public à la demande.",
+ "internalOnlyNote": "Ton retour est stocké localement et n’est visible que par l’administrateur de ce serveur.",
"disabledTitle": "Bug reports are turned off",
"disabledBody": "The administrator has disabled bug reports on this server."
},
@@ -2771,10 +2771,10 @@
"breadcrumbChannels": "Canaux de notification",
"breadcrumbSettings": "Paramètres",
"eventColumn": "Événement",
- "subtitle": "Choose which notifications you want to receive through which channel.",
- "loadError": "Notification preferences could not be loaded.",
- "noChannels": "Configure a notification channel in Settings first.",
- "goToSettings": "Go to channel settings",
+ "subtitle": "Choisis quelles notifications tu reçois et par quel canal.",
+ "loadError": "Impossible de charger les paramètres de notification.",
+ "noChannels": "Configure d’abord un canal de notification dans les paramètres.",
+ "goToSettings": "Aller aux paramètres du canal",
"channelDisabled": "Désactivé",
"admin": {
"deployFailedTitle": "Échec du déploiement : {application}",
@@ -2952,24 +2952,24 @@
"minLength": "Au moins {count} caractères requis."
},
"telegram": {
- "errorInvalidAction": "Invalid action.",
- "errorMedicationNotFound": "Medication not found.",
- "errorMedicationInactive": "Medication not found or inactive.",
- "errorUnknownAction": "Unknown action.",
- "snoozeOneHour": "1 hour",
- "snoozeThreeHours": "3 hours",
- "snoozedFor": "{name} snoozed for {duration}.",
- "skipped": "{name} Sauté.",
- "alreadyRecorded": "{name} was already recorded.",
- "recordedAsTaken": "{name} recorded as taken.",
- "confirmed": "{name} confirmed.",
- "genericConfirmed": "Confirmed.",
- "cancelled": "Cancelled.",
- "noActiveMedications": "No active medications found.",
- "whichMedication": "Which medication did you take?",
+ "errorInvalidAction": "Action invalide.",
+ "errorMedicationNotFound": "Médicament introuvable.",
+ "errorMedicationInactive": "Médicament introuvable ou inactif.",
+ "errorUnknownAction": "Action inconnue.",
+ "snoozeOneHour": "1 heure",
+ "snoozeThreeHours": "3 heures",
+ "snoozedFor": "{name} reporté de {duration}.",
+ "skipped": "{name} ignoré.",
+ "alreadyRecorded": "{name} était déjà enregistré.",
+ "recordedAsTaken": "{name} enregistré comme pris.",
+ "confirmed": "{name} confirmé.",
+ "genericConfirmed": "Confirmé.",
+ "cancelled": "Annulé.",
+ "noActiveMedications": "Aucun médicament actif trouvé.",
+ "whichMedication": "Quel médicament as-tu pris ?",
"cancelButton": "Annuler",
- "askMedicationName": "Please specify a medication, e.g. taken Ramipril.",
- "medicationNotFoundExact": "Medication not found. Please send the name exactly as in HealthLog.",
+ "askMedicationName": "Indique le médicament, p. ex. pris Ramipril.",
+ "medicationNotFoundExact": "Médicament introuvable. Envoie le nom exactement tel qu’il apparaît dans HealthLog.",
"helpHeader": "Available commands:",
"helpBody": "/help — show this help\n/add — record an intake\n/start — start the bot\n\nText commands:\ntaken <name> — confirm an intake\n\nButtons in reminders:\n• Taken — confirm intake\n• 🕐 1h / 🕐 3h — postpone reminder\n• ⏭ Skip — skip intake\n• ✓ Confirm — confirm a missed intake"
},
diff --git a/messages/it.json b/messages/it.json
index 2d917435b..60d592d5e 100644
--- a/messages/it.json
+++ b/messages/it.json
@@ -155,7 +155,7 @@
},
"errorBoundary": {
"title": "Qualcosa è andato storto",
- "description": "An unexpected error occurred. You can retry, copy the technical details, or open a bug report."
+ "description": "Si è verificato un errore inatteso. Puoi riprovare, copiare i dettagli tecnici o aprire una segnalazione di bug."
},
"nav": {
"dashboard": "Dashboard",
@@ -165,7 +165,7 @@
"targets": "Obiettivi",
"achievements": "Traguardi",
"settings": "Impostazioni",
- "bugreport": "Bug Report",
+ "bugreport": "Segnalazione bug",
"admin": "Console di amministrazione",
"logout": "Esci",
"login": "Accedi",
@@ -175,18 +175,18 @@
"themeSystem": "Sistema",
"themeDark": "Scuro",
"themeLight": "Chiaro",
- "collapseSidebar": "Collapse",
- "userMenu": "User menu",
+ "collapseSidebar": "Riduci",
+ "userMenu": "Menu utente",
"mood": "Umore",
- "skipToContent": "Skip to content",
- "sidebar": "Sidebar",
- "mainNavigation": "Main navigation",
- "mobileNavigation": "Mobile navigation",
+ "skipToContent": "Vai al contenuto",
+ "sidebar": "Barra laterale",
+ "mainNavigation": "Navigazione principale",
+ "mobileNavigation": "Navigazione mobile",
"breadcrumb": "Navigazione breadcrumb",
- "loadingScreen": "Loading…",
- "more": "More",
- "moreSheetTitle": "More",
- "moreSheetDescription": "Pages that don't fit the bottom bar."
+ "loadingScreen": "Caricamento…",
+ "more": "Altro",
+ "moreSheetTitle": "Altro",
+ "moreSheetDescription": "Pagine che non entrano nella barra inferiore."
},
"auth": {
"login": "Accedi",
@@ -1400,36 +1400,36 @@
"unsetExplanation": "Nessun valore personale — è attivo il predefinito calcolato."
},
"onboarding": {
- "errorGeneric": "Something went wrong while finishing setup. Please try again.",
+ "errorGeneric": "Qualcosa è andato storto durante il completamento della configurazione. Riprova.",
"tour": {
- "stepOf": "Passo {current} di {total}",
+ "stepOf": "Passaggio {current} di {total}",
"next": "Avanti",
"back": "Indietro",
- "skip": "Skip tour",
- "done": "Got it",
- "restart": "Restart onboarding tour",
- "restartHint": "Replay the dashboard walkthrough from the start.",
- "restartConfirmation": "Tour will restart on your next dashboard visit.",
+ "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": "Your daily numbers",
- "body": "The tile strip shows the latest reading and a 7-day trend for every metric you log — weight, blood pressure, pulse, mood. Hide what you don't need from Settings → Dashboard."
+ "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": "Log anything in two taps",
- "body": "Use the Add button to drop a measurement or mood entry without leaving the dashboard. The form remembers your last context and tags."
+ "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": "Automatic insights",
- "body": "Insights turns your readings into a plain-English health summary, with classifications for blood pressure, weight trend and mood. Bring your own provider key or use the built-in default."
+ "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": "Connect your devices",
- "body": "Open Settings to link Withings (auto-sync weight, BP and pulse), moodLog, or your Insights provider. Everything stays optional and encrypted."
+ "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": "Earn streaks and badges",
- "body": "The Achievements page tracks daily logging streaks, blood-pressure milestones and consistency badges. A small nudge to keep going."
+ "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."
}
}
},
@@ -1502,27 +1502,27 @@
}
},
"gettingStarted": {
- "title": "Getting started",
- "subtitle": "Quick wins to get the most out of HealthLog.",
- "progress": "{done} di {total} fatto",
- "dismissAll": "Hide checklist",
- "dismissTooltip": "Hide this item",
+ "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": "Set your profile",
- "profileDescription": "Height, date of birth and gender unlock personalised targets.",
- "profileCta": "Open profile",
- "measurementTitle": "Log your first measurement",
- "measurementDescription": "One reading is enough to draw your first trend tile.",
- "measurementCta": "Add measurement",
- "medicationTitle": "Add a medication",
- "medicationDescription": "Track compliance and get reminders right when you need them.",
- "medicationCta": "Add medication",
- "withingsTitle": "Connect Withings (optional)",
- "withingsDescription": "Auto-sync weight, BP and pulse from your Withings devices.",
- "withingsCta": "Connect",
- "notificationsTitle": "Configure notifications",
- "notificationsDescription": "Choose how HealthLog should remind you — Telegram, ntfy or Web Push.",
- "notificationsCta": "Open notifications"
+ "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": {
@@ -2746,22 +2746,22 @@
}
},
"bugreport": {
- "title": "Bug Report",
- "subtitle": "Send a bug report, feature request, or question. The server administrator will see your submission.",
- "loginRequired": "Please sign in to report a bug.",
- "bugTitle": "Title",
+ "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": "Send",
- "success": "Thank you! Your bug report has been submitted successfully.",
- "errorCreating": "Error creating report",
+ "submit": "Invia",
+ "success": "Grazie! La tua segnalazione è stata inviata.",
+ "errorCreating": "Errore durante la creazione",
"category": "Tipo",
- "categoryBug": "Bug report",
- "categoryFeature": "Feature request",
- "categoryQuestion": "Question",
- "categoryOther": "Other feedback",
- "bugTitlePlaceholder": "Short summary (optional)",
- "githubEscalationNote": "Your feedback is stored locally. If the admin enables GitHub integration, it can be promoted to a public issue on request.",
- "internalOnlyNote": "Your feedback is stored locally and only visible to the administrator of this server.",
+ "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."
},
@@ -2771,10 +2771,10 @@
"breadcrumbChannels": "Canali di notifica",
"breadcrumbSettings": "Impostazioni",
"eventColumn": "Evento",
- "subtitle": "Choose which notifications you want to receive through which channel.",
- "loadError": "Notification preferences could not be loaded.",
- "noChannels": "Configure a notification channel in Settings first.",
- "goToSettings": "Go to channel settings",
+ "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}",
@@ -2952,24 +2952,24 @@
"minLength": "Servono almeno {count} caratteri."
},
"telegram": {
- "errorInvalidAction": "Invalid action.",
- "errorMedicationNotFound": "Medication not found.",
- "errorMedicationInactive": "Medication not found or inactive.",
- "errorUnknownAction": "Unknown action.",
- "snoozeOneHour": "1 hour",
- "snoozeThreeHours": "3 hours",
- "snoozedFor": "{name} snoozed for {duration}.",
- "skipped": "{name} Saltata.",
- "alreadyRecorded": "{name} was already recorded.",
- "recordedAsTaken": "{name} recorded as taken.",
- "confirmed": "{name} confirmed.",
- "genericConfirmed": "Confirmed.",
- "cancelled": "Cancelled.",
- "noActiveMedications": "No active medications found.",
- "whichMedication": "Which medication did you take?",
+ "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": "Quale farmaco hai assunto?",
"cancelButton": "Annulla",
- "askMedicationName": "Please specify a medication, e.g. taken Ramipril.",
- "medicationNotFoundExact": "Medication not found. Please send the name exactly as in HealthLog.",
+ "askMedicationName": "Indica il farmaco, es. preso Ramipril.",
+ "medicationNotFoundExact": "Farmaco non trovato. Invia il nome esattamente come appare in HealthLog.",
"helpHeader": "Available commands:",
"helpBody": "/help — show this help\n/add — record an intake\n/start — start the bot\n\nText commands:\ntaken <name> — confirm an intake\n\nButtons in reminders:\n• Taken — confirm intake\n• 🕐 1h / 🕐 3h — postpone reminder\n• ⏭ Skip — skip intake\n• ✓ Confirm — confirm a missed intake"
},
diff --git a/messages/pl.json b/messages/pl.json
index 755b16415..2f3f6c4cf 100644
--- a/messages/pl.json
+++ b/messages/pl.json
@@ -155,7 +155,7 @@
},
"errorBoundary": {
"title": "Coś poszło nie tak",
- "description": "An unexpected error occurred. You can retry, copy the technical details, or open a bug report."
+ "description": "Wystąpił nieoczekiwany błąd. Możesz spróbować ponownie, skopiować szczegóły techniczne lub otworzyć zgłoszenie błędu."
},
"nav": {
"dashboard": "Panel",
@@ -165,7 +165,7 @@
"targets": "Cele",
"achievements": "Osiągnięcia",
"settings": "Ustawienia",
- "bugreport": "Bug Report",
+ "bugreport": "Zgłoszenie błędu",
"admin": "Konsola administratora",
"logout": "Wyloguj",
"login": "Zaloguj",
@@ -175,18 +175,18 @@
"themeSystem": "Systemowy",
"themeDark": "Ciemny",
"themeLight": "Jasny",
- "collapseSidebar": "Collapse",
- "userMenu": "User menu",
+ "collapseSidebar": "Zwiń",
+ "userMenu": "Menu użytkownika",
"mood": "Nastrój",
- "skipToContent": "Skip to content",
- "sidebar": "Sidebar",
- "mainNavigation": "Main navigation",
- "mobileNavigation": "Mobile navigation",
+ "skipToContent": "Przejdź do treści",
+ "sidebar": "Pasek boczny",
+ "mainNavigation": "Nawigacja główna",
+ "mobileNavigation": "Nawigacja mobilna",
"breadcrumb": "Nawigacja okruszkami",
- "loadingScreen": "Loading…",
- "more": "More",
- "moreSheetTitle": "More",
- "moreSheetDescription": "Pages that don't fit the bottom bar."
+ "loadingScreen": "Ładowanie…",
+ "more": "Więcej",
+ "moreSheetTitle": "Więcej",
+ "moreSheetDescription": "Strony, które nie mieszczą się w dolnym pasku."
},
"auth": {
"login": "Zaloguj się",
@@ -1400,36 +1400,36 @@
"unsetExplanation": "Brak własnej wartości — aktywna jest wartość domyślna."
},
"onboarding": {
- "errorGeneric": "Something went wrong while finishing setup. Please try again.",
+ "errorGeneric": "Coś poszło nie tak podczas kończenia konfiguracji. Spróbuj ponownie.",
"tour": {
"stepOf": "Krok {current} z {total}",
"next": "Dalej",
"back": "Wstecz",
- "skip": "Skip tour",
- "done": "Got it",
- "restart": "Restart onboarding tour",
- "restartHint": "Replay the dashboard walkthrough from the start.",
- "restartConfirmation": "Tour will restart on your next dashboard visit.",
+ "skip": "Pomiń tour",
+ "done": "Rozumiem",
+ "restart": "Uruchom tour ponownie",
+ "restartHint": "Pokaż tour panelu przy następnym wejściu.",
+ "restartConfirmation": "Tour ruszy ponownie przy twojej następnej wizycie w panelu.",
"steps": {
"tileStrip": {
- "title": "Your daily numbers",
- "body": "The tile strip shows the latest reading and a 7-day trend for every metric you log — weight, blood pressure, pulse, mood. Hide what you don't need from Settings → Dashboard."
+ "title": "Twoje wartości dzienne",
+ "body": "Pasek kafelków pokazuje ostatnią wartość i 7-dniowy trend dla każdej metryki — waga, ciśnienie, tętno, nastrój. Niepotrzebne wyłączysz w Ustawienia → Panel."
},
"quickAdd": {
- "title": "Log anything in two taps",
- "body": "Use the Add button to drop a measurement or mood entry without leaving the dashboard. The form remembers your last context and tags."
+ "title": "Zarejestrowane w dwóch stuknięciach",
+ "body": "Przyciskiem Dodaj zapisujesz pomiary lub nastroje bez opuszczania panelu. Formularz zapamiętuje ostatni kontekst i tagi."
},
"insights": {
- "title": "Automatic insights",
- "body": "Insights turns your readings into a plain-English health summary, with classifications for blood pressure, weight trend and mood. Bring your own provider key or use the built-in default."
+ "title": "Automatyczne insights",
+ "body": "Insights zamienia twoje wartości w przejrzysty przegląd zdrowia, z oceną ciśnienia, wagi i nastroju. Własny klucz lub domyślny — ty decydujesz."
},
"integrations": {
- "title": "Connect your devices",
- "body": "Open Settings to link Withings (auto-sync weight, BP and pulse), moodLog, or your Insights provider. Everything stays optional and encrypted."
+ "title": "Połącz urządzenia",
+ "body": "W ustawieniach łączysz Withings (auto-sync wagi, ciśnienia i tętna), moodLog lub dostawcę analizy. Wszystko zostaje opcjonalne i zaszyfrowane."
},
"achievements": {
- "title": "Earn streaks and badges",
- "body": "The Achievements page tracks daily logging streaks, blood-pressure milestones and consistency badges. A small nudge to keep going."
+ "title": "Zbieraj serie i odznaki",
+ "body": "Strona Osiągnięć śledzi codzienne serie zapisów, kamienie milowe ciśnienia i odznaki konsekwencji. Drobna motywacja do trzymania się planu."
}
}
},
@@ -1502,27 +1502,27 @@
}
},
"gettingStarted": {
- "title": "Getting started",
- "subtitle": "Quick wins to get the most out of HealthLog.",
- "progress": "{done} z {total} ukończone",
- "dismissAll": "Hide checklist",
- "dismissTooltip": "Hide this item",
+ "title": "Pierwsze kroki",
+ "subtitle": "Szybkie zwycięstwa, aby wycisnąć z HealthLog maksimum.",
+ "progress": "{done} z {total} wykonanych",
+ "dismissAll": "Ukryj listę",
+ "dismissTooltip": "Ukryj ten punkt",
"items": {
- "profileTitle": "Set your profile",
- "profileDescription": "Height, date of birth and gender unlock personalised targets.",
- "profileCta": "Open profile",
- "measurementTitle": "Log your first measurement",
- "measurementDescription": "One reading is enough to draw your first trend tile.",
- "measurementCta": "Add measurement",
- "medicationTitle": "Add a medication",
- "medicationDescription": "Track compliance and get reminders right when you need them.",
- "medicationCta": "Add medication",
- "withingsTitle": "Connect Withings (optional)",
- "withingsDescription": "Auto-sync weight, BP and pulse from your Withings devices.",
- "withingsCta": "Connect",
- "notificationsTitle": "Configure notifications",
- "notificationsDescription": "Choose how HealthLog should remind you — Telegram, ntfy or Web Push.",
- "notificationsCta": "Open notifications"
+ "profileTitle": "Skonfiguruj profil",
+ "profileDescription": "Wzrost, data urodzenia i płeć odblokowują spersonalizowane cele.",
+ "profileCta": "Otwórz profil",
+ "measurementTitle": "Zarejestruj pierwszy pomiar",
+ "measurementDescription": "Jeden pomiar wystarczy, aby narysować pierwszy kafelek trendu.",
+ "measurementCta": "Dodaj pomiar",
+ "medicationTitle": "Dodaj lek",
+ "medicationDescription": "Śledź przestrzeganie i otrzymuj przypomnienia dokładnie wtedy, kiedy ich potrzebujesz.",
+ "medicationCta": "Dodaj lek",
+ "withingsTitle": "Połącz Withings (opcjonalnie)",
+ "withingsDescription": "Automatycznie synchronizuj wagę, ciśnienie i tętno z urządzeń Withings.",
+ "withingsCta": "Połącz",
+ "notificationsTitle": "Skonfiguruj powiadomienia",
+ "notificationsDescription": "Wybierz, jak HealthLog ma ci przypominać — Telegram, ntfy lub Web Push.",
+ "notificationsCta": "Otwórz powiadomienia"
}
},
"trendHints": {
@@ -2746,22 +2746,22 @@
}
},
"bugreport": {
- "title": "Bug Report",
- "subtitle": "Send a bug report, feature request, or question. The server administrator will see your submission.",
- "loginRequired": "Please sign in to report a bug.",
- "bugTitle": "Title",
+ "title": "Zgłoszenie błędu",
+ "subtitle": "Wyślij zgłoszenie błędu, sugestię funkcji lub pytanie. Administrator serwera zobaczy twoje zgłoszenie.",
+ "loginRequired": "Zaloguj się, aby zgłosić błąd.",
+ "bugTitle": "Tytuł",
"description": "Opis",
- "submit": "Send",
- "success": "Thank you! Your bug report has been submitted successfully.",
- "errorCreating": "Error creating report",
- "category": "Typ",
- "categoryBug": "Bug report",
- "categoryFeature": "Feature request",
- "categoryQuestion": "Question",
- "categoryOther": "Other feedback",
- "bugTitlePlaceholder": "Short summary (optional)",
- "githubEscalationNote": "Your feedback is stored locally. If the admin enables GitHub integration, it can be promoted to a public issue on request.",
- "internalOnlyNote": "Your feedback is stored locally and only visible to the administrator of this server.",
+ "submit": "Wyślij",
+ "success": "Dziękujemy! Twoje zgłoszenie zostało wysłane.",
+ "errorCreating": "Błąd tworzenia",
+ "category": "Rodzaj",
+ "categoryBug": "Błąd",
+ "categoryFeature": "Propozycja funkcji",
+ "categoryQuestion": "Pytanie",
+ "categoryOther": "Inna opinia",
+ "bugTitlePlaceholder": "Krótkie podsumowanie (opcjonalnie)",
+ "githubEscalationNote": "Twoja opinia zapisuje się lokalnie. Jeśli administrator włączy integrację z GitHubem, może zostać opublikowana jako publiczne issue na życzenie.",
+ "internalOnlyNote": "Twoja opinia zapisuje się lokalnie i jest widoczna tylko dla administratora tego serwera.",
"disabledTitle": "Bug reports are turned off",
"disabledBody": "The administrator has disabled bug reports on this server."
},
@@ -2771,10 +2771,10 @@
"breadcrumbChannels": "Kanały powiadomień",
"breadcrumbSettings": "Ustawienia",
"eventColumn": "Zdarzenie",
- "subtitle": "Choose which notifications you want to receive through which channel.",
- "loadError": "Notification preferences could not be loaded.",
- "noChannels": "Configure a notification channel in Settings first.",
- "goToSettings": "Go to channel settings",
+ "subtitle": "Wybierz, które powiadomienia chcesz otrzymywać i którym kanałem.",
+ "loadError": "Nie udało się załadować ustawień powiadomień.",
+ "noChannels": "Najpierw skonfiguruj kanał powiadomień w ustawieniach.",
+ "goToSettings": "Przejdź do ustawień kanału",
"channelDisabled": "Wyłączone",
"admin": {
"deployFailedTitle": "Wdrożenie nie powiodło się: {application}",
@@ -2952,24 +2952,24 @@
"minLength": "Wymagane co najmniej {count} znaków."
},
"telegram": {
- "errorInvalidAction": "Invalid action.",
- "errorMedicationNotFound": "Medication not found.",
- "errorMedicationInactive": "Medication not found or inactive.",
- "errorUnknownAction": "Unknown action.",
- "snoozeOneHour": "1 hour",
- "snoozeThreeHours": "3 hours",
- "snoozedFor": "{name} snoozed for {duration}.",
- "skipped": "{name} Pominięte.",
- "alreadyRecorded": "{name} was already recorded.",
- "recordedAsTaken": "{name} recorded as taken.",
- "confirmed": "{name} confirmed.",
- "genericConfirmed": "Confirmed.",
- "cancelled": "Cancelled.",
- "noActiveMedications": "No active medications found.",
- "whichMedication": "Which medication did you take?",
+ "errorInvalidAction": "Nieprawidłowa akcja.",
+ "errorMedicationNotFound": "Nie znaleziono leku.",
+ "errorMedicationInactive": "Nie znaleziono leku lub jest nieaktywny.",
+ "errorUnknownAction": "Nieznana akcja.",
+ "snoozeOneHour": "1 godzina",
+ "snoozeThreeHours": "3 godziny",
+ "snoozedFor": "{name} odłożone o {duration}.",
+ "skipped": "{name} pominięte.",
+ "alreadyRecorded": "{name} było już zarejestrowane.",
+ "recordedAsTaken": "{name} zarejestrowane jako przyjęte.",
+ "confirmed": "{name} potwierdzone.",
+ "genericConfirmed": "Potwierdzone.",
+ "cancelled": "Anulowane.",
+ "noActiveMedications": "Nie znaleziono aktywnych leków.",
+ "whichMedication": "Który lek został przyjęty?",
"cancelButton": "Anuluj",
- "askMedicationName": "Please specify a medication, e.g. taken Ramipril.",
- "medicationNotFoundExact": "Medication not found. Please send the name exactly as in HealthLog.",
+ "askMedicationName": "Podaj lek, np. przyjęty Ramipril.",
+ "medicationNotFoundExact": "Nie znaleziono leku. Wyślij nazwę dokładnie tak, jak w HealthLog.",
"helpHeader": "Available commands:",
"helpBody": "/help — show this help\n/add — record an intake\n/start — start the bot\n\nText commands:\ntaken <name> — confirm an intake\n\nButtons in reminders:\n• Taken — confirm intake\n• 🕐 1h / 🕐 3h — postpone reminder\n• ⏭ Skip — skip intake\n• ✓ Confirm — confirm a missed intake"
},