From 7850976b99e9b358b51f85718ea64bc5eb97aae8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Bombeck?= Date: Fri, 15 May 2026 20:57:47 +0200 Subject: [PATCH] chore(i18n): replace remaining assistant-product references with neutral terms across six locales MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rewrite two strings that still leaked the forbidden assistant-product vocabulary across every locale bundle: - `account.timezoneHint` — drop "AI Coach context" / "AI-Coach-Kontext" in favour of "Coach context" / "Coach-Kontext". - `i18n.maintainershipBanner.notice` — recast the AI-authorship disclosure as "machine-translated" / "maschinell übersetzt" / "traduit automatiquement" / "traducido automáticamente" / "tradotta automaticamente" / "tłumaczona maszynowo" so the operational meaning is preserved without surfacing assistant-product naming. Document the two exempt-by-necessity vendor labels in `docs/audit/v1427-summary.md`: the provider-chooser dropdown options that render `Anthropic (Claude)` because the user is selecting the actual vendor product, and the GitHub source-URL on `/about` whose username segment is an irreducible technical identifier. --- docs/audit/v1427-summary.md | 26 ++++++++++++++++++++++++++ messages/de.json | 4 ++-- messages/en.json | 4 ++-- messages/es.json | 4 ++-- messages/fr.json | 4 ++-- messages/it.json | 4 ++-- messages/pl.json | 4 ++-- 7 files changed, 38 insertions(+), 12 deletions(-) diff --git a/docs/audit/v1427-summary.md b/docs/audit/v1427-summary.md index cbf8255a1..a2e23f3b2 100644 --- a/docs/audit/v1427-summary.md +++ b/docs/audit/v1427-summary.md @@ -70,3 +70,29 @@ The two MMDB files add ~80 MB to the production image. The `tzdata`-bearing Alpine runner stage already sits at ~330 MB compressed; the v1.4.27 image lands well under the 90 MB image-size delta budget set out in the fix plan. + +## Convention-compliance exemptions + +The release-wide convention forbids the substrings `AI`, `Claude`, +`agent`, `marathon`, `wave`, `phase`, `session`, `subagent`, and +`Anthropic` in user-facing artifacts. Two exemptions remain by +necessity and are recorded here so future audits can stop re-opening +the same finding: + +- **Vendor-name dropdown options.** The Coach provider chooser in + `/settings/ai` renders the literal vendor names so the operator can + recognise which third-party service is being configured. The keys + `settings.ai.providerOptions.anthropic` and + `settings.ai.activeProviderOptions.anthropic` therefore render + `Anthropic (Claude)` across all six locale bundles. Rebranding + these would break the recognition the dropdown exists to provide. + The exemption applies to any vendor label whose product is the + setting being chosen, e.g. `OpenAI`, `Anthropic`, `Codex`. +- **GitHub repository URL on `/about`.** The source-link on the + public about page renders + `https://github.com/MBombeck/HealthLog`. The username segment is an + irreducible technical identifier for the URL and cannot be hidden + without breaking the link. The directive's spirit — never surface + the maintainer's full name in prose — is honoured: the `/about` + page never spells "Marc" or "Bombeck" in body copy, only inside + the URL. diff --git a/messages/de.json b/messages/de.json index 62dc7c435..8bbc4178f 100644 --- a/messages/de.json +++ b/messages/de.json @@ -1595,7 +1595,7 @@ "genderFemale": "Weiblich", "genderHint": "Wird für geschlechtsspezifische Zielwerte verwendet.", "timezone": "Zeitzone", - "timezoneHint": "Wird für Diagrammachsen, Erinnerungszeiten, Export-Zeitstempel und den AI-Coach-Kontext verwendet. Gespeicherte Daten bleiben unverändert.", + "timezoneHint": "Wird für Diagrammachsen, Erinnerungszeiten, Export-Zeitstempel und den Coach-Kontext verwendet. Gespeicherte Daten bleiben unverändert.", "timezoneDetect": "Browser-Zeitzone übernehmen ({tz})", "timezoneInvalid": "Keine gültige IANA-Zeitzone.", "profileSaved": "Profil gespeichert", @@ -2658,7 +2658,7 @@ }, "i18n": { "maintainershipBanner": { - "notice": "Diese Sprachversion ist KI-entworfen, inklusive der sicherheitskritischen Coach-Anweisungen. Automatisierte Validierung läuft in CI; KI-Coach-Regressionen bitte auf GitHub melden.", + "notice": "Diese Sprachversion ist maschinell übersetzt, inklusive der sicherheitskritischen Coach-Anweisungen. Eine automatische Drift-Prüfung läuft in CI; Coach-Regressionen bitte auf GitHub melden.", "cta": "Auf GitHub melden", "dismiss": "Schließen" } diff --git a/messages/en.json b/messages/en.json index 71cd53ab0..82651a8a5 100644 --- a/messages/en.json +++ b/messages/en.json @@ -1595,7 +1595,7 @@ "genderFemale": "Female", "genderHint": "Used for gender-specific target values.", "timezone": "Timezone", - "timezoneHint": "Used for chart axis labels, reminder times, export timestamps, and AI Coach context. Stored data is unchanged.", + "timezoneHint": "Used for chart axis labels, reminder times, export timestamps, and Coach context. Stored data is unchanged.", "timezoneDetect": "Use browser timezone ({tz})", "timezoneInvalid": "Not a valid IANA timezone.", "profileSaved": "Profile saved", @@ -2658,7 +2658,7 @@ }, "i18n": { "maintainershipBanner": { - "notice": "This locale is AI-drafted including the Coach's safety-critical instructions. Automated validation runs in CI; please report any AI Coach regressions on GitHub.", + "notice": "This locale is machine-translated including the Coach's safety-critical instructions. Automated drift-guard runs in CI; please report any Coach regressions on GitHub.", "cta": "Report on GitHub", "dismiss": "Dismiss" } diff --git a/messages/es.json b/messages/es.json index e6a5f57b3..afbc64c07 100644 --- a/messages/es.json +++ b/messages/es.json @@ -1595,7 +1595,7 @@ "genderFemale": "Mujer", "genderHint": "Used for gender-specific target values.", "timezone": "Zona horaria", - "timezoneHint": "Used for chart axis labels, reminder times, export timestamps, and AI Coach context. Stored data is unchanged.", + "timezoneHint": "Used for chart axis labels, reminder times, export timestamps, and Coach context. Stored data is unchanged.", "timezoneDetect": "Use browser timezone ({tz})", "timezoneInvalid": "Not a valid IANA timezone.", "profileSaved": "Profile saved", @@ -2658,7 +2658,7 @@ }, "i18n": { "maintainershipBanner": { - "notice": "Este idioma está redactado por IA, incluidas las instrucciones críticas para la seguridad del Coach. La validación automática se ejecuta en CI; informe de cualquier regresión del Coach IA en GitHub.", + "notice": "Este idioma está traducido automáticamente, incluidas las instrucciones críticas para la seguridad del Coach. Un control de deriva automático se ejecuta en CI; informe de cualquier regresión del Coach en GitHub.", "cta": "Informar en GitHub", "dismiss": "Cerrar" } diff --git a/messages/fr.json b/messages/fr.json index 44a062bc5..3e47756f6 100644 --- a/messages/fr.json +++ b/messages/fr.json @@ -1595,7 +1595,7 @@ "genderFemale": "Femme", "genderHint": "Used for gender-specific target values.", "timezone": "Fuseau horaire", - "timezoneHint": "Used for chart axis labels, reminder times, export timestamps, and AI Coach context. Stored data is unchanged.", + "timezoneHint": "Used for chart axis labels, reminder times, export timestamps, and Coach context. Stored data is unchanged.", "timezoneDetect": "Use browser timezone ({tz})", "timezoneInvalid": "Not a valid IANA timezone.", "profileSaved": "Profile saved", @@ -2658,7 +2658,7 @@ }, "i18n": { "maintainershipBanner": { - "notice": "Cette langue est rédigée par IA, y compris les instructions critiques pour la sécurité du Coach. Une validation automatique tourne en CI ; signalez toute régression du Coach IA sur GitHub.", + "notice": "Cette langue est traduite automatiquement, y compris les instructions critiques pour la sécurité du Coach. Un contrôle de dérive automatique tourne en CI ; signalez toute régression du Coach sur GitHub.", "cta": "Signaler sur GitHub", "dismiss": "Ignorer" } diff --git a/messages/it.json b/messages/it.json index 34b127a51..a5e488e07 100644 --- a/messages/it.json +++ b/messages/it.json @@ -1595,7 +1595,7 @@ "genderFemale": "Donna", "genderHint": "Used for gender-specific target values.", "timezone": "Fuso orario", - "timezoneHint": "Used for chart axis labels, reminder times, export timestamps, and AI Coach context. Stored data is unchanged.", + "timezoneHint": "Used for chart axis labels, reminder times, export timestamps, and Coach context. Stored data is unchanged.", "timezoneDetect": "Use browser timezone ({tz})", "timezoneInvalid": "Not a valid IANA timezone.", "profileSaved": "Profile saved", @@ -2658,7 +2658,7 @@ }, "i18n": { "maintainershipBanner": { - "notice": "Questa lingua è redatta tramite IA, incluse le istruzioni critiche per la sicurezza del Coach. La validazione automatica gira in CI; segnali qualsiasi regressione del Coach IA su GitHub.", + "notice": "Questa lingua è tradotta automaticamente, incluse le istruzioni critiche per la sicurezza del Coach. Un controllo di deriva automatico gira in CI; segnali qualsiasi regressione del Coach su GitHub.", "cta": "Segnala su GitHub", "dismiss": "Chiudi" } diff --git a/messages/pl.json b/messages/pl.json index cd44d861a..47380cb0e 100644 --- a/messages/pl.json +++ b/messages/pl.json @@ -1595,7 +1595,7 @@ "genderFemale": "Kobieta", "genderHint": "Used for gender-specific target values.", "timezone": "Strefa czasowa", - "timezoneHint": "Used for chart axis labels, reminder times, export timestamps, and AI Coach context. Stored data is unchanged.", + "timezoneHint": "Used for chart axis labels, reminder times, export timestamps, and Coach context. Stored data is unchanged.", "timezoneDetect": "Use browser timezone ({tz})", "timezoneInvalid": "Not a valid IANA timezone.", "profileSaved": "Profile saved", @@ -2658,7 +2658,7 @@ }, "i18n": { "maintainershipBanner": { - "notice": "Ta wersja językowa jest opracowana przez AI, w tym instrukcje krytyczne dla bezpieczeństwa Coacha. Walidacja automatyczna działa w CI; proszę zgłaszać wszelkie regresje Coacha AI na GitHubie.", + "notice": "Ta wersja językowa jest tłumaczona maszynowo, w tym instrukcje krytyczne dla bezpieczeństwa Coacha. Automatyczna kontrola dryftu działa w CI; proszę zgłaszać wszelkie regresje Coacha na GitHubie.", "cta": "Zgłoś na GitHubie", "dismiss": "Zamknij" }