Files

66 lines
5.4 KiB
JavaScript

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()
}