Files
dogfather-universe/assets/js/i18n-links.js
T
DogFatherGitandClaude Opus 5 5a67ef2948 Die Rabattcodes haengen am Konto, nicht mehr am Abo
Filipe: "die partner codes sollen auch schon fuer die leute sichtbar sein
die angemeldet sind." Umgestellt, und auf Nachfrage dauerhaft: Rabattcodes
sind ab jetzt ein Konto-Vorteil, kein Abo-Vorteil.

WARUM DAS MEHR IST ALS EINE BEQUEMLICHKEIT

Der alte Riegel verlangte einen Abo-Status. Nachgesehen, statt vermutet:
Die Bezahlung auf abonnieren.html steht auf "Coming soon", bis Dogis
PayPal-Business-Zugang da ist (der Kommentar dort nennt es beim Namen).
Registrieren geht, bezahlen nicht. Der erste echte Partnercode lag damit
seit gestern hinter einer Tuer, die sich gar nicht oeffnen laesst -- er
waere fuer NIEMANDEN sichtbar gewesen ausser fuer Dogi und VanVan ueber
die Rollenvorschau.

Entschieden wird jetzt an "supporterToken" (beim Login gesetzt, beim
Logout entfernt, supporter.js). Der Abo-Stand wird als Sicherheitsnetz
weiter mitgelesen: Niemand soll Zugang verlieren, den er gestern hatte.

BEIDE STELLEN, NICHT EINE

Die Bedingung steht doppelt im Haus -- an der Kachel auf links.html und
an der Seite selbst. Nur eine davon umzustellen erzeugt einen Fehler, den
keine der beiden fuer sich zeigt: Man kaeme mit Konto auf die Seite und
saehe dort die Sperre. Beide sind umgestellt, tragen den Hinweis
aufeinander, und die Pruefung vergleicht sie in jedem Anmeldezustand
gegeneinander.

TEXTE, DIE SONST GELOGEN HAETTEN

"Nur fuer Supporter" auf einer Seite, die ein kostenloses Konto oeffnet,
schickt Leute zum Bezahlen fuer etwas, das sie umsonst bekommen. Kopf,
Vorspann, Kachelband, Beschreibung und Sperrtext sagen jetzt "Konto", in
allen fuenf Sprachen. Die Sperre bietet auf Filipes Wunsch beide Wege an:
den kostenlosen zuerst, das Abo daneben -- mit einer Zeile darunter, dass
es erst startet, wenn es offiziell live geht. Ohne die waere der zweite
Knopf eine Falle.

EIN FEHLER, DER SEIT DEM 03.08.2026 DRINSTAND

Die Pruefung meldete auf der FREIGESCHALTETEN Kachel weiter "Nur mit
Konto" statt "Freigeschaltet". Ursache: Das Skript setzte den Text
(`badge.textContent = ...`), aber applyTranslations() schreibt aus dem
data-i18n-Attribut zurueck -- und es laeuft danach noch einmal, weil
dogiSiteTexteLaden() die Texte aus der Verwaltung holt und dann neu
uebersetzt.

NACHGEMESSEN STATT HERGELEITET, und die erste Erklaerung war zu schnell:
Der Text war schon nach 50 ms falsch, also nicht "irgendwann spaeter
ueberschrieben". Der Grund ist, dass TEAM_API_BASIS auf den ECHTEN Worker
zeigt -- der Abruf gelingt selbst aus einer lokalen Testseite. Kontroll-
versuch mit blockiertem Abruf: derselbe alte Code, und das Band bleibt
korrekt. Ursache weg, Fehler weg.

Behoben, indem der SCHLUESSEL getauscht wird statt des Textes. Damit
schreibt jeder weitere Uebersetzungslauf von selbst das Richtige hin --
auch bei Sprachwechsel, wo die alte Fassung ebenfalls zurueckfiel.
Aufgefallen ist es nie, weil bis gestern niemand in den freigeschalteten
Zustand kommen konnte.

NEBENBEFUND, NICHT ANGEFASST: index.html hat dieselbe Bauart beim
Live-Status (#live-text mit data-i18n, Text per Skript gesetzt).
Gemessen ist es dort ein Wettlauf zweier Abrufe -- in meinem Lauf gewann
der Status um Haaresbreite, und ein Sprachwechsel repariert es dort
ohnehin (dogi-sprache-geaendert). Kleiner, aber echt. Auf Ansage.

pruef-rabattcodes EXIT=0 (63 Pruefungen, vorher 42). Neu darunter: drei
Anmeldezustaende statt zweier -- ausgeloggt, angemeldet ohne Abo,
angemeldet mit Abo --, jeder auf BEIDEN Seiten, dazu der Klick auf die
Kachel (fuehrt sie wirklich weiter?), die Beschriftung des Bands und als
Gegenprobe ein erzwungener Uebersetzungslauf, der den alten Fehler
zuverlaessig ausloest.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-08 21:49:16 +02:00

95 lines
4.5 KiB
JavaScript

/* =====================================================================
i18n-links.js — Übersetzungs-Wörterbuch NUR für links.html
Alle 5 Sprachen vollständig gepflegt (de, de-CH, en, fr, pt).
===================================================================== */
window.I18N_PAGE = {
lk_eyebrow: {
de: "🩵 Alle Links", "de-CH": "🩵 Alli Links",
en: "🩵 All Links", fr: "🩵 Tous les liens", pt: "🩵 Todos os links",
},
lk_h1: {
de: "Alles an einem Ort", "de-CH": "Alles an eim Ort",
en: "Everything in One Place", fr: "Tout au même endroit", pt: "Tudo em um só lugar",
},
lk_lead: {
de: "Ersatz für die Wonderlink-Seite — direkt Teil vom DOGFATHER UNIVERSE.",
"de-CH": "Ersatz für d Wonderlink-Site — direkt Teil vom DOGFATHER UNIVERSE.",
en: "A replacement for the Wonderlink page — built right into the DOGFATHER UNIVERSE.",
fr: "Remplace la page Wonderlink — directement intégré à l'univers DOGFATHER.",
pt: "Substitui a página Wonderlink — direto no DOGFATHER UNIVERSE.",
},
lk_discord_hint: {
de: "Nur auf Anfrage", "de-CH": "Nur uf Aafrag",
en: "By request only", fr: "Uniquement sur demande", pt: "Somente mediante solicitação",
},
lk_rabatt_badge: {
de: "🔒 Nur mit Konto", "de-CH": "🔒 Nur mit Konto",
en: "🔒 Account required", fr: "🔒 Compte requis", pt: "🔒 Requer conta",
},
lk_rabatt_badge_frei: {
de: "✓ Freigeschaltet", "de-CH": "✓ Freigschalte",
en: "✓ Unlocked", fr: "✓ Débloqué", pt: "✓ Desbloqueado",
},
lk_rabatt_h3: {
de: "Rabattcodes", "de-CH": "Rabattcodes",
en: "Discount Codes", fr: "Codes de réduction", pt: "Códigos de desconto",
},
lk_rabatt_desc: {
de: "Codes von Dogis Partnern — für alle mit einem Konto.",
"de-CH": "Codes vo Dogis Partner — für alli mit eme Konto.",
en: "Codes from Dogi's partners — for everyone with an account.",
fr: "Des codes chez les partenaires de Dogi — pour toute personne ayant un compte.",
pt: "Códigos dos parceiros do Dogi — para todos com uma conta.",
},
/* Seit 08.09.2026 hängt die Kachel am Konto, nicht mehr am Abo (siehe
den Kommentar im <style>-Kopf von links.html). Der alte Text schickte
Ausgeloggte zum Abo — das ist noch gar nicht bezahlbar, und für die
Codes reicht ein kostenloses Konto. */
lk_rabatt_gesperrt_hinweis: {
de: "🔒 Die Rabattcodes gibt es für alle mit einem Konto. Melde dich an oder registriere dich kostenlos — dann sind sie da.",
"de-CH": "🔒 D Rabattcodes gits für alli mit eme Konto. Meld di aa oder registrier di gratis — denn sind si da.",
en: "🔒 Discount codes are there for everyone with an account. Sign in or register for free — then they're yours.",
fr: "🔒 Les codes de réduction sont là pour toute personne ayant un compte. Connecte-toi ou inscris-toi gratuitement — et ils sont à toi.",
pt: "🔒 Os códigos de desconto existem para todos com uma conta. Inicia sessão ou regista-te gratuitamente — e são teus.",
},
lk_rabatt_btn_anmelden: {
de: "Anmelden oder registrieren", "de-CH": "Aamelde oder registriere",
en: "Sign in or register", fr: "Se connecter ou s'inscrire", pt: "Iniciar sessão ou registar",
},
lk_rabatt_btn_abo: {
de: "Supporter werden 👑", "de-CH": "Supporter werde 👑",
en: "Become a supporter 👑", fr: "Devenir Supporter 👑", pt: "Tornar-se apoiador 👑",
},
lk_shop_hint: {
de: "Folgt in Kürze", "de-CH": "Chunnt bald",
en: "Coming soon", fr: "Bientôt disponible", pt: "Em breve",
},
lk_shop_h3: {
de: "Merchandise / Shop", "de-CH": "Merchandise / Shop",
en: "Merchandise / Shop", fr: "Produits dérivés / Boutique", pt: "Produtos / Loja",
},
lk_bewerben_h3: {
de: "Bewerben", "de-CH": "Bewärbe",
en: "Apply", fr: "Postuler", pt: "Candidatar-se",
},
lk_bewerben_p: {
de: "Modi, Scout, Creator oder Kooperation",
"de-CH": "Modi, Scout, Creator oder Kooperation",
en: "Moderator, scout, creator, or collaboration",
fr: "Modérateur, recruteur, créateur ou collaboration",
pt: "Moderador, olheiro, criador ou parceria",
},
lk_qr_h2: {
de: "QR-Codes", "de-CH": "QR-Codes",
en: "QR Codes", fr: "Codes QR", pt: "Códigos QR",
},
lk_qr_teilen: {
de: "Dogis persönlicher Teilen-Baustein",
"de-CH": "Dogis persönlicher Teile-Baustein",
en: "Dogi's personal share block",
fr: "Le bloc de partage personnel de Dogi",
pt: "Bloco de compartilhamento pessoal do Dogi",
},
};