i18n(shell): translate onboarding, getting-started, bug-report, telegram into es/fr/it/pl

Localises the first-run shell (5-step onboarding tour, getting-started
checklist with 5 items × title/description/cta), the bug-report form,
and the Telegram bot prompts/confirmations. Polish, French, Spanish,
and Italian copy maintains the conversational professional register
used in the German source. Placeholders {current}, {total}, {done},
{name}, {duration}, {minLength} preserved.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Marc-André BombeckandClaude Opus 4.7 committed 2026-05-17 17:22:50 +02:00
1 parent 0cc9f55a4c
commit bc2bc65335
4 files changed
+334 -334

No files matched your search

+83 -83
View File
@@ -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": "<b>Which medication did you take?</b>",
"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": "<b>¿Qué medicamento has tomado?</b>",
"cancelButton": "Cancelar",
"askMedicationName": "Please specify a medication, e.g. <b>taken Ramipril</b>.",
"medicationNotFoundExact": "Medication not found. Please send the name exactly as in HealthLog.",
"askMedicationName": "Indica el medicamento, p. ej. <b>tomado Ramipril</b>.",
"medicationNotFoundExact": "Medicamento no encontrado. Envía el nombre exactamente como aparece en HealthLog.",
"helpHeader": "<b>Available commands:</b>",
"helpBody": "/help — show this help\n/add — record an intake\n/start — start the bot\n\n<b>Text commands:</b>\ntaken &lt;name&gt; — confirm an intake\n\n<b>Buttons in reminders:</b>\n• Taken — confirm intake\n• 🕐 1h / 🕐 3h — postpone reminder\n• ⏭ Skip — skip intake\n• ✓ Confirm — confirm a missed intake"
},
+83 -83
View File
@@ -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": "<b>Which medication did you take?</b>",
"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": "<b>Quel médicament as-tu pris ?</b>",
"cancelButton": "Annuler",
"askMedicationName": "Please specify a medication, e.g. <b>taken Ramipril</b>.",
"medicationNotFoundExact": "Medication not found. Please send the name exactly as in HealthLog.",
"askMedicationName": "Indique le médicament, p. ex. <b>pris Ramipril</b>.",
"medicationNotFoundExact": "Médicament introuvable. Envoie le nom exactement tel qu’il apparaît dans HealthLog.",
"helpHeader": "<b>Available commands:</b>",
"helpBody": "/help — show this help\n/add — record an intake\n/start — start the bot\n\n<b>Text commands:</b>\ntaken &lt;name&gt; — confirm an intake\n\n<b>Buttons in reminders:</b>\n• Taken — confirm intake\n• 🕐 1h / 🕐 3h — postpone reminder\n• ⏭ Skip — skip intake\n• ✓ Confirm — confirm a missed intake"
},
+84 -84
View File
@@ -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": "<b>Which medication did you take?</b>",
"errorInvalidAction": "Azione non valida.",
"errorMedicationNotFound": "Farmaco non trovato.",
"errorMedicationInactive": "Farmaco non trovato o inattivo.",
"errorUnknownAction": "Azione sconosciuta.",
"snoozeOneHour": "1 ora",
"snoozeThreeHours": "3 ore",
"snoozedFor": "{name} rinviato di {duration}.",
"skipped": "{name} saltato.",
"alreadyRecorded": "{name} era già registrato.",
"recordedAsTaken": "{name} registrato come assunto.",
"confirmed": "{name} confermato.",
"genericConfirmed": "Confermato.",
"cancelled": "Annullato.",
"noActiveMedications": "Nessun farmaco attivo trovato.",
"whichMedication": "<b>Quale farmaco hai assunto?</b>",
"cancelButton": "Annulla",
"askMedicationName": "Please specify a medication, e.g. <b>taken Ramipril</b>.",
"medicationNotFoundExact": "Medication not found. Please send the name exactly as in HealthLog.",
"askMedicationName": "Indica il farmaco, es. <b>preso Ramipril</b>.",
"medicationNotFoundExact": "Farmaco non trovato. Invia il nome esattamente come appare in HealthLog.",
"helpHeader": "<b>Available commands:</b>",
"helpBody": "/help — show this help\n/add — record an intake\n/start — start the bot\n\n<b>Text commands:</b>\ntaken &lt;name&gt; — confirm an intake\n\n<b>Buttons in reminders:</b>\n• Taken — confirm intake\n• 🕐 1h / 🕐 3h — postpone reminder\n• ⏭ Skip — skip intake\n• ✓ Confirm — confirm a missed intake"
},
+84 -84
View File
@@ -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": "<b>Which medication did you take?</b>",
"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": "<b>Który lek został przyjęty?</b>",
"cancelButton": "Anuluj",
"askMedicationName": "Please specify a medication, e.g. <b>taken Ramipril</b>.",
"medicationNotFoundExact": "Medication not found. Please send the name exactly as in HealthLog.",
"askMedicationName": "Podaj lek, np. <b>przyjęty Ramipril</b>.",
"medicationNotFoundExact": "Nie znaleziono leku. Wyślij nazwę dokładnie tak, jak w HealthLog.",
"helpHeader": "<b>Available commands:</b>",
"helpBody": "/help — show this help\n/add — record an intake\n/start — start the bot\n\n<b>Text commands:</b>\ntaken &lt;name&gt; — confirm an intake\n\n<b>Buttons in reminders:</b>\n• Taken — confirm intake\n• 🕐 1h / 🕐 3h — postpone reminder\n• ⏭ Skip — skip intake\n• ✓ Confirm — confirm a missed intake"
},