Kundenansicht neu P7: bekannte Fehlertexte der Dienste in der neuen Ansicht in du
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
d17520c4f5
commit
9166e023c5
4 files changed
+196
No files matched your search
@@ -29,6 +29,7 @@ import { neueAnsicht } from '../services/kundenansicht/schalter.js'
|
||||
import { FEHLER_BEDINGUNGEN, FEHLER_NACHWEIS, FEHLER_UNVOLLSTAENDIG, WECHSEL_GESPERRT, bestelltexteFuerClient, bestellZeile, nachweisTexte } from '../services/bestelltexte.js'
|
||||
import { kundenartWirksam } from '../services/kundenart.js'
|
||||
import { fassungDerAnfrage, istNeueFassung, speichereNachweisFuerRoute } from '../services/vertragsNachweis.js'
|
||||
import { duFehlerAntworten } from '../services/duFehler.js'
|
||||
import { PRODUCT_KEYS, contractAttachmentFor, describeItems, isTermsV4OrNewer, productLabel, productView, termsDocFor } from '../services/products.js'
|
||||
import {
|
||||
ACTIVE_STATUSES,
|
||||
@@ -47,6 +48,7 @@ import {
|
||||
} from '../services/stripeBilling.js'
|
||||
|
||||
const router = Router()
|
||||
router.use(duFehlerAntworten) // neue Ansicht: bekannte Fehlertexte in du (duFehler.js), sonst unverändert
|
||||
|
||||
const fmtDate = (iso) =>
|
||||
iso
|
||||
|
||||
@@ -7,6 +7,7 @@ import { withLocks } from '../services/keyedLock.js'
|
||||
import { nachweisTexte } from '../services/bestelltexte.js'
|
||||
import { kundenartWirksam } from '../services/kundenart.js'
|
||||
import { fassungDerAnfrage, speichereNachweisFuerRoute } from '../services/vertragsNachweis.js'
|
||||
import { duFehlerAntworten } from '../services/duFehler.js'
|
||||
import {
|
||||
answerQuestion,
|
||||
applyTakeoverCredit,
|
||||
@@ -55,6 +56,7 @@ function sendError(res, err, fallback) {
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
const router = Router()
|
||||
router.use(duFehlerAntworten) // neue Ansicht: bekannte Fehlertexte in du (duFehler.js), sonst unverändert
|
||||
router.use(requireSession)
|
||||
|
||||
router.get('/', async (req, res) => {
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
import { neueAnsicht } from './kundenansicht/schalter.js'
|
||||
|
||||
/**
|
||||
* Fehlertexte der Dienste in der neuen Ansicht in „du“ (Kundenansicht neu, P7, N37).
|
||||
*
|
||||
* planSwitch.js, mailStorage.js, stripeBilling.js und die Antworten der Abo-Routen werfen ihre Texte im Quelltext in der Sie-Form; die
|
||||
* alte Ansicht zeigt sie unveraendert. Fuer Sitzungen mit neuer Ansicht uebersetzt duFehlerAntworten bekannte Saetze vor der Antwort.
|
||||
* Unbekannte Texte bleiben unveraendert; test/knDuFehler.test.js sucht in den drei Diensten nach Sie-Saetzen ohne Uebersetzung.
|
||||
* Bewusst nicht uebersetzt (Mail-/Textrunde, N37): Pruefsaetze in takeoverCredits.js ausser den zwei Saetzen unten und der custom_text
|
||||
* der Stripe-Zahlungsseite.
|
||||
*/
|
||||
|
||||
export const DU_FEHLER = Object.freeze({
|
||||
// planSwitch.js
|
||||
'Der Wechsel ist erst nach Beginn Ihres Hosting-Abos möglich und nicht, solange eine Zahlung offen ist.': 'Der Wechsel ist erst nach Beginn deines Hosting-Abos möglich und nicht, solange eine Zahlung offen ist.',
|
||||
'Ihr Hosting-Abo ist gekündigt. Ein Wechsel ist deshalb nicht möglich.': 'Dein Hosting-Abo ist gekündigt. Ein Wechsel ist deshalb nicht möglich.',
|
||||
'Die Vorschau fehlt. Bitte laden Sie die Seite neu.': 'Die Vorschau fehlt. Bitte lade die Seite neu.',
|
||||
'Die Vorschau ist ungültig. Bitte laden Sie die Seite neu.': 'Die Vorschau ist ungültig. Bitte lade die Seite neu.',
|
||||
'Bitte stimmen Sie den Vertragsbedingungen zu, um zu wechseln.': 'Bitte stimme den Vertragsbedingungen zu, um zu wechseln.',
|
||||
'Bitte bestätigen Sie, dass wir sofort mit dem Wartungs-Abo beginnen sollen.': 'Bitte bestätige, dass wir sofort mit dem Wartungs-Abo beginnen sollen.',
|
||||
'Ihr Wechsel wird gerade verarbeitet.': 'Dein Wechsel wird gerade verarbeitet.',
|
||||
'Ihr Abrechnungsmonat hat seit der Vorschau neu begonnen. Bitte Seite neu laden.': 'Dein Abrechnungsmonat hat seit der Vorschau neu begonnen. Bitte Seite neu laden.',
|
||||
// mailStorage.js
|
||||
'Ihr Speicherstand hat sich geändert. Bitte Seite neu laden und der Bestellung zustimmen.': 'Dein Speicherstand hat sich geändert. Bitte Seite neu laden und der Bestellung zustimmen.',
|
||||
'Bitte stimmen Sie den Regeln zum Zusatzspeicher zu.': 'Bitte stimme den Regeln zum Zusatzspeicher zu.',
|
||||
'Ihr Abo ist gekündigt. Der Zusatzspeicher endet mit dem Abo.': 'Dein Abo ist gekündigt. Der Zusatzspeicher endet mit dem Abo.',
|
||||
'Ihr Wechsel wartet noch auf die Zahlung. Bitte versuchen Sie es danach erneut.': 'Dein Wechsel wartet noch auf die Zahlung. Bitte versuche es danach erneut.',
|
||||
'Eine Änderung läuft bereits. Bitte warten Sie einen Moment und laden Sie die Seite neu.': 'Eine Änderung läuft bereits. Bitte warte einen Moment und lade die Seite neu.',
|
||||
'Die Änderung konnte bei Stripe nicht gespeichert werden. Es wurde nichts berechnet. Bitte versuchen Sie es später erneut.': 'Die Änderung konnte bei Stripe nicht gespeichert werden. Es wurde nichts berechnet. Bitte versuche es später erneut.',
|
||||
// stripeBilling.js
|
||||
'Sie haben bereits ein laufendes Abo abgeschlossen.': 'Du hast bereits ein laufendes Abo abgeschlossen.',
|
||||
// abo.js
|
||||
'Bitte wählen Sie ein Abo (Hosting-Abo oder Wartungs-Abo).': 'Bitte wähle ein Abo (Hosting-Abo oder Wartungs-Abo).',
|
||||
'Bitte stimmen Sie den Vertragsbedingungen zu, um zu bestellen.': 'Bitte stimme den Vertragsbedingungen zu, um zu bestellen.',
|
||||
'Bitte wählen Sie, wann wir mit der Leistung beginnen sollen.': 'Bitte wähle, wann wir mit der Leistung beginnen sollen.',
|
||||
'Ihr Angebot gilt für ein anderes Abo. Bitte laden Sie die Seite neu.': 'Dein Angebot gilt für ein anderes Abo. Bitte lade die Seite neu.',
|
||||
'Ihr Angebot hat sich geändert. Bitte laden Sie die Seite neu.': 'Dein Angebot hat sich geändert. Bitte lade die Seite neu.',
|
||||
'Der Leistungsbeginn hat sich durch den Datumswechsel verschoben. Bitte laden Sie die Seite neu.': 'Der Leistungsbeginn hat sich durch den Datumswechsel verschoben. Bitte lade die Seite neu.',
|
||||
'Die Bestellung ist unvollständig. Bitte laden Sie die Seite neu.': 'Die Bestellung ist unvollständig. Bitte lade die Seite neu.',
|
||||
// takeoverCredits.js (die zwei Sätze, die die Seite nicht vorab prüft)
|
||||
'Die Übernahmegutschrift können Sie beantragen, sobald Ihr Abo läuft.': 'Die Übernahmegutschrift kannst du beantragen, sobald dein Abo läuft.',
|
||||
'Sie haben bereits mehrere offene Anträge. Bitte warten Sie unsere Antwort ab.': 'Du hast bereits mehrere offene Anträge. Bitte warte auf unsere Antwort.',
|
||||
})
|
||||
|
||||
const PAKETZAHL = /^Bitte wählen Sie zwischen 0 und (\d+) Paketen Zusatzspeicher\.$/
|
||||
|
||||
/** Bekannter Satz → du-Satz; das Muster der Paketzahl dazu; alles andere (auch kein Text) unverändert. */
|
||||
export function duText(message) {
|
||||
if (typeof message !== 'string') return message
|
||||
if (Object.hasOwn(DU_FEHLER, message)) return DU_FEHLER[message]
|
||||
const treffer = PAKETZAHL.exec(message)
|
||||
return treffer ? `Bitte wähle zwischen 0 und ${treffer[1]} Paketen Zusatzspeicher.` : message
|
||||
}
|
||||
|
||||
/**
|
||||
* Express-Middleware: gilt die neue Ansicht (neueAnsicht(req)), ersetzt sie in res.json den Text body.error durch duText(body.error);
|
||||
* sonst reicht sie die Anfrage unveraendert durch. Andere Antworten (kein Objekt, kein Text) laufen unveraendert.
|
||||
*/
|
||||
export function duFehlerAntworten(req, res, next) {
|
||||
if (neueAnsicht(req)) {
|
||||
const json = res.json.bind(res)
|
||||
res.json = (body) => json(body !== null && typeof body === 'object' && typeof body.error === 'string' ? { ...body, error: duText(body.error) } : body)
|
||||
}
|
||||
next()
|
||||
}
|
||||
Reference in new issue
Block a user