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" },