KRITISCH: echten Ursprung der "rohen Übersetzungs-Schlüssel"-Bugs gefunden und behoben

Beide heutigen Meldungen ("pr_quote_open...", "ts_profil_ansehen") waren
KEIN Caching-Problem, sondern ein echter Bug in main.js: nach Klick auf
einen internen Link und dann "Zurück" (oder generell jede zweite Seite
innerhalb einer Browser-Sitzung) wurde die seiteneigene i18n-*.js-Datei
nie erneut ausgeführt -> window.I18N_PAGE blieb auf null -> jede
Übersetzung fiel auf den rohen Schlüsselnamen zurück.

Ursache: skripteUebernehmen() erkennt i18n-Dateien am Muster ".js$"
(String-Ende). Seit die Cache-Busting-Version ("?v=...") an jede
Skript-URL angehängt wird, endet der echte src-Wert aber nie mehr auf
".js", sondern auf ".js?v=...". Der Test schlug seitdem für JEDE
i18n-Datei fehl und sie wurde wie eine normale, schon geladene Datei
behandelt und beim nächsten Seitenwechsel übersprungen.

Mit Playwright reproduziert (Klick auf Profil-Kachel + Zurück-Button)
und nach dem Fix erneut verifiziert -- betraf praktisch jede Seite mit
eigenem i18n-*.js beim Navigieren per Klick, nicht nur team-scouts.html.

Cache-Busting-Version auf 20260821i erhöht.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
2026-08-21 02:12:24 +02:00
co-authored by Claude Sonnet 5
parent fbd11b7be4
commit 8ead1b750b
36 changed files with 251 additions and 236 deletions
+16 -1
View File
@@ -925,7 +925,22 @@
// erneut laufen, sonst bleibt window.I18N_PAGE nach einem
// Zwischenstopp auf einer anderen Seite (die es zurückgesetzt hat)
// fälschlich leer, wenn man z.B. zur Startseite zurückkehrt.
const istSprachDatei = /\/i18n-[^/]+\.js$/.test(src);
//
// BUGFIX 21.08.2026 (Nutzer-Report: rohe Übersetzungs-Schlüssel wie
// "ts_profil_ansehen" sichtbar, aber NUR nachdem man auf einen Link
// geklickt und dann "Zurück" gedrückt hat): das Muster endete bisher
// auf ".js$" (striktes String-Ende). Seit die Cache-Busting-Version
// ("?v=20260821...") an JEDE Skript-URL angehängt wird, endet der
// echte src-Wert aber nie mehr auf ".js", sondern auf ".js?v=...".
// Der Test schlug dadurch für JEDE i18n-Datei fehl -> istSprachDatei
// war immer false -> die i18n-Datei wurde wie eine normale, schon
// geladene Datei übersprungen und NIE erneut ausgeführt, sobald man
// per Klick auf eine andere Seite und wieder zurück navigiert ist.
// window.I18N_PAGE blieb dadurch dauerhaft auf null (von der
// Zwischenseite zurückgesetzt) stehen -- jede Übersetzung fiel auf
// den rohen Schlüsselnamen zurück. Fix: ".js" darf jetzt auch von
// einem "?..." gefolgt werden, nicht nur vom exakten String-Ende.
const istSprachDatei = /\/i18n-[^/]+\.js(\?.*)?$/.test(src);
// Schon vorhanden (z.B. main.js oder eine bereits geladene Datendatei):
// nicht erneut ausführen — sonst gäbe es doppelte Deklarationen.