From 6f5935aeb46fdd15341eebeab13bbb7227208175 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Bombeck?= Date: Thu, 30 Jul 2026 23:16:26 +0200 Subject: [PATCH] i18n(profile): add strings for the partial-save and nothing-saved cases apiErrors.profile.update.{nothingSaved,invalidBody} let the web client resolve applyProfileUpdate's new errorCode into a localized sentence. settings.profilePartiallySaved / profileNothingSaved carry a {field} placeholder so the account settings screen can name the specific field that blocked or was skipped, in the active locale, instead of a raw validator string. All six locales. --- messages/de.json | 8 ++++++++ messages/en.json | 8 ++++++++ messages/es.json | 8 ++++++++ messages/fr.json | 8 ++++++++ messages/it.json | 8 ++++++++ messages/pl.json | 8 ++++++++ 6 files changed, 48 insertions(+) diff --git a/messages/de.json b/messages/de.json index f160729ef..b0ffcfca7 100644 --- a/messages/de.json +++ b/messages/de.json @@ -120,6 +120,12 @@ "outOfOrder": "Dein Onboarding-Fortschritt hat sich geändert. Lade die Seite neu und fahre fort.", "concurrent": "Dein Onboarding-Fortschritt hat sich geändert. Lade die Seite neu und fahre fort." } + }, + "profile": { + "update": { + "nothingSaved": "Es wurde nichts gespeichert. Bitte das markierte Feld korrigieren und erneut versuchen.", + "invalidBody": "Die Profilaktualisierung konnte nicht gelesen werden." + } } }, "doctorReport": { @@ -4920,6 +4926,8 @@ "timezoneHint": "Wird für Diagrammachsen, Erinnerungszeiten, Export-Zeitstempel und den Coach-Kontext verwendet. Gespeicherte Daten bleiben unverändert.", "timezoneInvalid": "Keine gültige IANA-Zeitzone.", "profileSaved": "Profil gespeichert", + "profilePartiallySaved": "Profil gespeichert, aber {field} konnte nicht aktualisiert werden.", + "profileNothingSaved": "Es wurde nichts gespeichert. Bitte {field} korrigieren und erneut versuchen.", "avatar": { "title": "Profilfoto", "description": "Lade ein Foto hoch, das auf deinem eigenen Server gespeichert wird. Es erscheint überall in der App anstelle eines externen Avatar-Dienstes.", diff --git a/messages/en.json b/messages/en.json index 8f7151461..829b2e9ee 100644 --- a/messages/en.json +++ b/messages/en.json @@ -120,6 +120,12 @@ "outOfOrder": "Your onboarding progress changed. Refresh and continue.", "concurrent": "Your onboarding progress changed. Refresh and continue." } + }, + "profile": { + "update": { + "nothingSaved": "Nothing was saved. Check the highlighted field and try again.", + "invalidBody": "The profile update could not be read." + } } }, "doctorReport": { @@ -4920,6 +4926,8 @@ "timezoneHint": "Used for chart axis labels, reminder times, export timestamps, and Coach context. Stored data is unchanged.", "timezoneInvalid": "Not a valid IANA timezone.", "profileSaved": "Profile saved", + "profilePartiallySaved": "Profile saved, but {field} could not be updated.", + "profileNothingSaved": "Nothing was saved. Fix {field} and try again.", "avatar": { "title": "Profile photo", "description": "Upload a photo stored on your own server. It appears across the app in place of an external avatar service.", diff --git a/messages/es.json b/messages/es.json index b1fcfe95a..d87b49edf 100644 --- a/messages/es.json +++ b/messages/es.json @@ -120,6 +120,12 @@ "outOfOrder": "Tu progreso ha cambiado. Actualiza la página y continúa.", "concurrent": "Tu progreso ha cambiado. Actualiza la página y continúa." } + }, + "profile": { + "update": { + "nothingSaved": "No se guardó nada. Revisa el campo marcado e inténtalo de nuevo.", + "invalidBody": "No se pudo leer la actualización del perfil." + } } }, "doctorReport": { @@ -4920,6 +4926,8 @@ "timezoneHint": "Se usa para las etiquetas de los ejes de los gráficos, las horas de recordatorio, las marcas de tiempo de exportación y el contexto del Coach. Los datos almacenados no cambian.", "timezoneInvalid": "No es una zona horaria IANA válida.", "profileSaved": "Perfil guardado", + "profilePartiallySaved": "Perfil guardado, pero no se pudo actualizar {field}.", + "profileNothingSaved": "No se guardó nada. Corrige {field} e inténtalo de nuevo.", "avatar": { "title": "Foto de perfil", "description": "Sube una foto que se almacena en tu propio servidor. Aparece en toda la aplicación en lugar de un servicio de avatares externo.", diff --git a/messages/fr.json b/messages/fr.json index 7a1347db0..40c969126 100644 --- a/messages/fr.json +++ b/messages/fr.json @@ -120,6 +120,12 @@ "outOfOrder": "Votre progression a changé. Actualisez la page et continuez.", "concurrent": "Votre progression a changé. Actualisez la page et continuez." } + }, + "profile": { + "update": { + "nothingSaved": "Rien n'a été enregistré. Corrigez le champ signalé et réessayez.", + "invalidBody": "La mise à jour du profil n'a pas pu être lue." + } } }, "doctorReport": { @@ -4920,6 +4926,8 @@ "timezoneHint": "Utilisé pour les libellés des axes des graphiques, les heures de rappel, les horodatages d’export et le contexte du Coach. Les données stockées restent inchangées.", "timezoneInvalid": "Fuseau horaire IANA non valide.", "profileSaved": "Profil enregistré", + "profilePartiallySaved": "Profil enregistré, mais {field} n'a pas pu être mis à jour.", + "profileNothingSaved": "Rien n'a été enregistré. Corrigez {field} et réessayez.", "avatar": { "title": "Photo de profil", "description": "Téléverse une photo stockée sur ton propre serveur. Elle apparaît dans toute l'application à la place d'un service d'avatar externe.", diff --git a/messages/it.json b/messages/it.json index 8e10f6b2e..be78b2f4f 100644 --- a/messages/it.json +++ b/messages/it.json @@ -120,6 +120,12 @@ "outOfOrder": "I tuoi progressi sono cambiati. Aggiorna la pagina e continua.", "concurrent": "I tuoi progressi sono cambiati. Aggiorna la pagina e continua." } + }, + "profile": { + "update": { + "nothingSaved": "Non è stato salvato nulla. Controlla il campo evidenziato e riprova.", + "invalidBody": "Impossibile leggere l'aggiornamento del profilo." + } } }, "doctorReport": { @@ -4920,6 +4926,8 @@ "timezoneHint": "Usato per le etichette degli assi dei grafici, gli orari dei promemoria, gli orari di esportazione e il contesto del Coach. I dati memorizzati restano invariati.", "timezoneInvalid": "Non è un fuso orario IANA valido.", "profileSaved": "Profilo salvato", + "profilePartiallySaved": "Profilo salvato, ma non è stato possibile aggiornare {field}.", + "profileNothingSaved": "Non è stato salvato nulla. Correggi {field} e riprova.", "avatar": { "title": "Foto del profilo", "description": "Carica una foto archiviata sul tuo server. Appare in tutta l'app al posto di un servizio di avatar esterno.", diff --git a/messages/pl.json b/messages/pl.json index 80e659f65..8ceb216a9 100644 --- a/messages/pl.json +++ b/messages/pl.json @@ -120,6 +120,12 @@ "outOfOrder": "Twój postęp się zmienił. Odśwież stronę i kontynuuj.", "concurrent": "Twój postęp się zmienił. Odśwież stronę i kontynuuj." } + }, + "profile": { + "update": { + "nothingSaved": "Nic nie zostało zapisane. Sprawdź oznaczone pole i spróbuj ponownie.", + "invalidBody": "Nie udało się odczytać aktualizacji profilu." + } } }, "doctorReport": { @@ -4920,6 +4926,8 @@ "timezoneHint": "Używane do etykiet osi wykresów, godzin przypomnień, znaczników czasu eksportu i kontekstu Coacha. Zapisane dane pozostają niezmienione.", "timezoneInvalid": "To nie jest prawidłowa strefa czasowa IANA.", "profileSaved": "Profil zapisany", + "profilePartiallySaved": "Profil zapisany, ale nie udało się zaktualizować pola {field}.", + "profileNothingSaved": "Nic nie zostało zapisane. Popraw {field} i spróbuj ponownie.", "avatar": { "title": "Zdjęcie profilowe", "description": "Prześlij zdjęcie przechowywane na własnym serwerze. Pojawia się w całej aplikacji zamiast zewnętrznej usługi awatarów.",