i18n(shell): translate auth, nav, password-strength, and trend-hints into es/fr/it/pl

Localises the user-facing shell strings: auth (sign-in / sign-up,
passkey fallback, password validation), nav (sidebar labels, theme
toggle), password-strength meter, trend-hints countdown, notifications
breadcrumbs, common copy/unknownError, format.dateShort with locale
date order (dd/mm/yyyy for es/fr/it, dd.mm.yyyy for pl), and the
errorBoundary fallback title. Placeholders {minLength}, {count} all
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:17:33 +02:00
1 parent 31895fcea9
commit 1e9bde7b60
4 files changed
+145 -145

No files matched your search

+36 -36
View File
@@ -19,7 +19,7 @@
"disabled": "Desactivado",
"networkError": "Error de red",
"unknownError": "Error desconocido",
"copied": "Copied!",
"copied": "¡Copiado!",
"or": "o",
"unknown": "Desconocido",
"add": "Añadir",
@@ -154,20 +154,20 @@
}
},
"errorBoundary": {
"title": "Algo salió mal",
"title": "Algo ha salido mal",
"description": "An unexpected error occurred. You can retry, copy the technical details, or open a bug report."
},
"nav": {
"dashboard": "Panel",
"measurements": "Measurements",
"measurements": "Mediciones",
"medications": "Medicamentos",
"insights": "Análisis",
"targets": "Targets",
"achievements": "Achievements",
"insights": "Insights",
"targets": "Objetivos",
"achievements": "Logros",
"settings": "Ajustes",
"bugreport": "Bug Report",
"admin": "Admin Console",
"logout": "Sign out",
"admin": "Consola de administración",
"logout": "Cerrar sesión",
"login": "Iniciar sesión",
"about": "Acerca de HealthLog",
"notifications": "Centro de notificaciones",
@@ -193,22 +193,22 @@
"register": "Registrarse",
"username": "Nombre de usuario",
"password": "Contraseña",
"email": "Email address",
"emailPlaceholder": "name@example.com",
"emailOrUsername": "Email address or username",
"emailOrUsernamePlaceholder": "name@example.com or username",
"loginWithPasskey": "Sign in with Passkey",
"loginWithPassword": "Sign in with password",
"noAccount": "Don't have an account?",
"hasAccount": "Already have an account?",
"loginFailed": "Login failed",
"registerFailed": "Registration failed",
"createAccount": "Create account",
"newAccount": "Create new account",
"backToPasskey": "Back to Passkey",
"passkeySetupLater": "You can set up passkeys at any time in Settings.",
"passwordMinLength": "Min. 12 characters",
"passwordTooShort": "Password must be at least {minLength} characters long.",
"email": "Correo electrónico",
"emailPlaceholder": "nombre@ejemplo.com",
"emailOrUsername": "Correo electrónico o nombre de usuario",
"emailOrUsernamePlaceholder": "nombre@ejemplo.com o nombredeusuario",
"loginWithPasskey": "Iniciar sesión con passkey",
"loginWithPassword": "Iniciar sesión con contraseña",
"noAccount": "¿Aún no tienes cuenta?",
"hasAccount": "¿Ya tienes cuenta?",
"loginFailed": "No se ha podido iniciar sesión",
"registerFailed": "No se ha podido completar el registro",
"createAccount": "Crear cuenta",
"newAccount": "Crear cuenta nueva",
"backToPasskey": "Volver a passkey",
"passkeySetupLater": "Puedes configurar passkeys más tarde en los ajustes.",
"passwordMinLength": "Mín. 12 caracteres",
"passwordTooShort": "La contraseña debe tener al menos {minLength} caracteres.",
"privacyPolicy": "Política de privacidad"
},
"dashboard": {
@@ -1526,9 +1526,9 @@
}
},
"trendHints": {
"title": "First trend after 5 readings",
"remainingOne": "1 more reading to go.",
"remainingMany": "{count} more readings to go."
"title": "Primera tendencia tras 5 mediciones",
"remainingOne": "Falta 1 medición para la tendencia.",
"remainingMany": "Faltan {count} mediciones para la tendencia."
},
"settings": {
"researchMode": {
@@ -2770,7 +2770,7 @@
"breadcrumbInbox": "Centro de notificaciones",
"breadcrumbChannels": "Canales de notificación",
"breadcrumbSettings": "Ajustes",
"eventColumn": "Event",
"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.",
@@ -2942,14 +2942,14 @@
}
},
"passwordStrength": {
"veryWeak": "Very weak",
"weak": "Weak",
"acceptable": "Acceptable",
"strong": "Strong",
"veryStrong": "Very strong",
"tooShort": "Too short",
"characters": "characters",
"minLength": "At least {count} characters required."
"veryWeak": "Muy débil",
"weak": "Débil",
"acceptable": "Aceptable",
"strong": "Fuerte",
"veryStrong": "Muy fuerte",
"tooShort": "Demasiado corta",
"characters": "caracteres",
"minLength": "Se requieren al menos {count} caracteres."
},
"telegram": {
"errorInvalidAction": "Invalid action.",
+35 -35
View File
@@ -19,7 +19,7 @@
"disabled": "Désactivé",
"networkError": "Erreur réseau",
"unknownError": "Erreur inconnue",
"copied": "Copied!",
"copied": "Copié !",
"or": "ou",
"unknown": "Inconnu",
"add": "Ajouter",
@@ -159,15 +159,15 @@
},
"nav": {
"dashboard": "Tableau de bord",
"measurements": "Measurements",
"measurements": "Mesures",
"medications": "Médicaments",
"insights": "Analyses",
"targets": "Targets",
"achievements": "Achievements",
"insights": "Insights",
"targets": "Objectifs",
"achievements": "Succès",
"settings": "Paramètres",
"bugreport": "Bug Report",
"admin": "Admin Console",
"logout": "Sign out",
"admin": "Console d’administration",
"logout": "Se déconnecter",
"login": "Se connecter",
"about": "À propos de HealthLog",
"notifications": "Centre de notifications",
@@ -193,22 +193,22 @@
"register": "S'inscrire",
"username": "Nom d'utilisateur",
"password": "Mot de passe",
"email": "Email address",
"emailPlaceholder": "name@example.com",
"emailOrUsername": "Email address or username",
"emailOrUsernamePlaceholder": "name@example.com or username",
"loginWithPasskey": "Sign in with Passkey",
"loginWithPassword": "Sign in with password",
"noAccount": "Don't have an account?",
"hasAccount": "Already have an account?",
"loginFailed": "Login failed",
"registerFailed": "Registration failed",
"createAccount": "Create account",
"newAccount": "Create new account",
"backToPasskey": "Back to Passkey",
"passkeySetupLater": "You can set up passkeys at any time in Settings.",
"passwordMinLength": "Min. 12 characters",
"passwordTooShort": "Password must be at least {minLength} characters long.",
"email": "Adresse e-mail",
"emailPlaceholder": "nom@exemple.fr",
"emailOrUsername": "Adresse e-mail ou nom d’utilisateur",
"emailOrUsernamePlaceholder": "nom@exemple.fr ou nomdutilisateur",
"loginWithPasskey": "Se connecter avec une passkey",
"loginWithPassword": "Se connecter avec un mot de passe",
"noAccount": "Pas encore de compte ?",
"hasAccount": "Déjà un compte ?",
"loginFailed": "Échec de la connexion",
"registerFailed": "Échec de l’inscription",
"createAccount": "Créer un compte",
"newAccount": "Créer un nouveau compte",
"backToPasskey": "Revenir à la passkey",
"passkeySetupLater": "Tu peux configurer les passkeys plus tard dans les paramètres.",
"passwordMinLength": "Min. 12 caractères",
"passwordTooShort": "Le mot de passe doit comporter au moins {minLength} caractères.",
"privacyPolicy": "Politique de confidentialité"
},
"dashboard": {
@@ -1526,9 +1526,9 @@
}
},
"trendHints": {
"title": "First trend after 5 readings",
"remainingOne": "1 more reading to go.",
"remainingMany": "{count} more readings to go."
"title": "Première tendance après 5 mesures",
"remainingOne": "Encore 1 mesure avant la tendance.",
"remainingMany": "Encore {count} mesures avant la tendance."
},
"settings": {
"researchMode": {
@@ -2769,8 +2769,8 @@
"title": "Centre de notifications",
"breadcrumbInbox": "Centre de notifications",
"breadcrumbChannels": "Canaux de notification",
"breadcrumbSettings": "Réglages",
"eventColumn": "Event",
"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.",
@@ -2942,14 +2942,14 @@
}
},
"passwordStrength": {
"veryWeak": "Very weak",
"weak": "Weak",
"veryWeak": "Très faible",
"weak": "Faible",
"acceptable": "Acceptable",
"strong": "Strong",
"veryStrong": "Very strong",
"tooShort": "Too short",
"characters": "characters",
"minLength": "At least {count} characters required."
"strong": "Fort",
"veryStrong": "Très fort",
"tooShort": "Trop court",
"characters": "caractères",
"minLength": "Au moins {count} caractères requis."
},
"telegram": {
"errorInvalidAction": "Invalid action.",
+37 -37
View File
@@ -19,7 +19,7 @@
"disabled": "Disabilitato",
"networkError": "Errore di rete",
"unknownError": "Errore sconosciuto",
"copied": "Copied!",
"copied": "Copiato!",
"or": "o",
"unknown": "Sconosciuto",
"add": "Aggiungi",
@@ -154,20 +154,20 @@
}
},
"errorBoundary": {
"title": "Si è verificato un errore",
"title": "Qualcosa è andato storto",
"description": "An unexpected error occurred. You can retry, copy the technical details, or open a bug report."
},
"nav": {
"dashboard": "Cruscotto",
"measurements": "Measurements",
"dashboard": "Dashboard",
"measurements": "Misurazioni",
"medications": "Farmaci",
"insights": "Analisi",
"targets": "Targets",
"achievements": "Achievements",
"insights": "Insights",
"targets": "Obiettivi",
"achievements": "Traguardi",
"settings": "Impostazioni",
"bugreport": "Bug Report",
"admin": "Admin Console",
"logout": "Sign out",
"admin": "Console di amministrazione",
"logout": "Esci",
"login": "Accedi",
"about": "Informazioni su HealthLog",
"notifications": "Centro notifiche",
@@ -193,22 +193,22 @@
"register": "Registrati",
"username": "Nome utente",
"password": "Password",
"email": "Email address",
"emailPlaceholder": "name@example.com",
"emailOrUsername": "Email address or username",
"emailOrUsernamePlaceholder": "name@example.com or username",
"loginWithPasskey": "Sign in with Passkey",
"loginWithPassword": "Sign in with password",
"noAccount": "Don't have an account?",
"hasAccount": "Already have an account?",
"loginFailed": "Login failed",
"registerFailed": "Registration failed",
"createAccount": "Create account",
"newAccount": "Create new account",
"backToPasskey": "Back to Passkey",
"passkeySetupLater": "You can set up passkeys at any time in Settings.",
"passwordMinLength": "Min. 12 characters",
"passwordTooShort": "Password must be at least {minLength} characters long.",
"email": "Indirizzo e-mail",
"emailPlaceholder": "nome@esempio.it",
"emailOrUsername": "Indirizzo e-mail o nome utente",
"emailOrUsernamePlaceholder": "nome@esempio.it o nomeutente",
"loginWithPasskey": "Accedi con passkey",
"loginWithPassword": "Accedi con password",
"noAccount": "Non hai ancora un account?",
"hasAccount": "Hai già un account?",
"loginFailed": "Accesso non riuscito",
"registerFailed": "Registrazione non riuscita",
"createAccount": "Crea account",
"newAccount": "Crea un nuovo account",
"backToPasskey": "Torna a passkey",
"passkeySetupLater": "Puoi configurare le passkey più tardi dalle impostazioni.",
"passwordMinLength": "Min. 12 caratteri",
"passwordTooShort": "La password deve avere almeno {minLength} caratteri.",
"privacyPolicy": "Informativa sulla privacy"
},
"dashboard": {
@@ -1526,9 +1526,9 @@
}
},
"trendHints": {
"title": "First trend after 5 readings",
"remainingOne": "1 more reading to go.",
"remainingMany": "{count} more readings to go."
"title": "Primo trend dopo 5 misurazioni",
"remainingOne": "Manca 1 misurazione al trend.",
"remainingMany": "Mancano {count} misurazioni al trend."
},
"settings": {
"researchMode": {
@@ -2770,7 +2770,7 @@
"breadcrumbInbox": "Centro notifiche",
"breadcrumbChannels": "Canali di notifica",
"breadcrumbSettings": "Impostazioni",
"eventColumn": "Event",
"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.",
@@ -2942,14 +2942,14 @@
}
},
"passwordStrength": {
"veryWeak": "Very weak",
"weak": "Weak",
"acceptable": "Acceptable",
"strong": "Strong",
"veryStrong": "Very strong",
"tooShort": "Too short",
"characters": "characters",
"minLength": "At least {count} characters required."
"veryWeak": "Molto debole",
"weak": "Debole",
"acceptable": "Accettabile",
"strong": "Forte",
"veryStrong": "Molto forte",
"tooShort": "Troppo corta",
"characters": "caratteri",
"minLength": "Servono almeno {count} caratteri."
},
"telegram": {
"errorInvalidAction": "Invalid action.",
+37 -37
View File
@@ -19,7 +19,7 @@
"disabled": "Wyłączone",
"networkError": "Błąd sieci",
"unknownError": "Nieznany błąd",
"copied": "Copied!",
"copied": "Skopiowano!",
"or": "lub",
"unknown": "Nieznane",
"add": "Dodaj",
@@ -158,17 +158,17 @@
"description": "An unexpected error occurred. You can retry, copy the technical details, or open a bug report."
},
"nav": {
"dashboard": "Pulpit",
"measurements": "Measurements",
"dashboard": "Panel",
"measurements": "Pomiary",
"medications": "Leki",
"insights": "Statystyki",
"targets": "Targets",
"achievements": "Achievements",
"insights": "Insights",
"targets": "Cele",
"achievements": "Osiągnięcia",
"settings": "Ustawienia",
"bugreport": "Bug Report",
"admin": "Admin Console",
"logout": "Sign out",
"login": "Zaloguj się",
"admin": "Konsola administratora",
"logout": "Wyloguj",
"login": "Zaloguj",
"about": "O HealthLog",
"notifications": "Centrum powiadomień",
"theme": "Wygląd",
@@ -193,22 +193,22 @@
"register": "Zarejestruj się",
"username": "Nazwa użytkownika",
"password": "Hasło",
"email": "Email address",
"emailPlaceholder": "name@example.com",
"emailOrUsername": "Email address or username",
"emailOrUsernamePlaceholder": "name@example.com or username",
"loginWithPasskey": "Sign in with Passkey",
"loginWithPassword": "Sign in with password",
"noAccount": "Don't have an account?",
"hasAccount": "Already have an account?",
"loginFailed": "Login failed",
"registerFailed": "Registration failed",
"createAccount": "Create account",
"newAccount": "Create new account",
"backToPasskey": "Back to Passkey",
"passkeySetupLater": "You can set up passkeys at any time in Settings.",
"passwordMinLength": "Min. 12 characters",
"passwordTooShort": "Password must be at least {minLength} characters long.",
"email": "Adres e-mail",
"emailPlaceholder": "imie@przyklad.pl",
"emailOrUsername": "Adres e-mail lub nazwa użytkownika",
"emailOrUsernamePlaceholder": "imie@przyklad.pl lub nazwauzytkownika",
"loginWithPasskey": "Zaloguj się za pomocą passkey",
"loginWithPassword": "Zaloguj się hasłem",
"noAccount": "Nie masz jeszcze konta?",
"hasAccount": "Masz już konto?",
"loginFailed": "Logowanie nie powiodło się",
"registerFailed": "Rejestracja nie powiodła się",
"createAccount": "Utwórz konto",
"newAccount": "Utwórz nowe konto",
"backToPasskey": "Wróć do passkey",
"passkeySetupLater": "Passkey możesz skonfigurować później w ustawieniach.",
"passwordMinLength": "Min. 12 znaków",
"passwordTooShort": "Hasło musi mieć co najmniej {minLength} znaków.",
"privacyPolicy": "Polityka prywatności"
},
"dashboard": {
@@ -1526,9 +1526,9 @@
}
},
"trendHints": {
"title": "First trend after 5 readings",
"remainingOne": "1 more reading to go.",
"remainingMany": "{count} more readings to go."
"title": "Pierwszy trend po 5 pomiarach",
"remainingOne": "Jeszcze 1 pomiar do trendu.",
"remainingMany": "Jeszcze {count} pomiarów do trendu."
},
"settings": {
"researchMode": {
@@ -2770,7 +2770,7 @@
"breadcrumbInbox": "Centrum powiadomień",
"breadcrumbChannels": "Kanały powiadomień",
"breadcrumbSettings": "Ustawienia",
"eventColumn": "Event",
"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.",
@@ -2942,14 +2942,14 @@
}
},
"passwordStrength": {
"veryWeak": "Very weak",
"weak": "Weak",
"acceptable": "Acceptable",
"strong": "Strong",
"veryStrong": "Very strong",
"tooShort": "Too short",
"characters": "characters",
"minLength": "At least {count} characters required."
"veryWeak": "Bardzo słabe",
"weak": "Słabe",
"acceptable": "Akceptowalne",
"strong": "Silne",
"veryStrong": "Bardzo silne",
"tooShort": "Za krótkie",
"characters": "znaków",
"minLength": "Wymagane co najmniej {count} znaków."
},
"telegram": {
"errorInvalidAction": "Invalid action.",