Umlaute statt Umschreibungen

Oberflaeche, Fehlermeldungen und Kommentare schrieben durchgehend ae, oe, ue
und ss. Dafuer gab es keinen Grund - die Anwendung ist deutschsprachig und
laeuft durchgehend in UTF-8.

Betroffen waren 55 Dateien, darunter alle sichtbaren Texte: Guthaben-Zaehler,
Import, Nutzerverwaltung, Passwortwechsel und die Zwei-Faktor-Einrichtung.

Der Name einer Migration bleibt im README-Beispiel bewusst bei ASCII, weil
daraus ein Verzeichnisname wird.
This commit is contained in:
2026-09-18 16:57:39 +02:00
parent b9364151b0
commit 724f68644b
49 changed files with 256 additions and 254 deletions
+6 -6
View File
@@ -18,7 +18,7 @@ let audit: Audit;
let db: Db;
let ctx: { actorId: number; actorName: string };
// Ein Export, wie ihn ein Shop liefern koennte: mehr Spalten als die App braucht.
// Ein Export, wie ihn ein Shop liefern könnte: mehr Spalten als die App braucht.
const CSV = [
'Bestellnummer;Steam-ID;Produkt;Email;Rechnungsadresse;Zahlungsart',
'P-1;76561198000000501;CC-Paket;spieler@example.com;Musterweg 1, 12345 Musterstadt;PayPal',
@@ -45,7 +45,7 @@ before(async () => {
audit = await import('../src/services/audit.js');
const user = await db.prisma.user.create({
data: { username: 'datenschuetzer', passwordHash: 'x', role: 'ADMIN' },
data: { username: 'datenschützer', passwordHash: 'x', role: 'ADMIN' },
});
ctx = { actorId: user.id, actorName: user.username };
@@ -80,7 +80,7 @@ describe('Datenminimierung beim Import', () => {
assert.equal(rawAfter['Steam-ID'], '76561198000000501', 'die zugeordnete Spalte bleibt');
});
it('raeumt auch einen verworfenen Import auf', async () => {
it('räumt auch einen verworfenen Import auf', async () => {
const parsed = imports.parseUpload('shop2.csv', Buffer.from(CSV, 'utf8'));
const importId = await imports.createImport('shop2.csv', parsed, ctx);
await imports.applyMapping(importId, MAPPING, ctx);
@@ -116,7 +116,7 @@ describe('Fehlgeschlagene Anmeldung', () => {
});
});
describe('Loeschung eines Spielers', () => {
describe('Löschung eines Spielers', () => {
it('entfernt auch Spuren in Import-Zeilen und Audit-Details', async () => {
// Eigene Bestellnummer, sonst greift zu Recht die Dedup-Logik.
const csv = [
@@ -152,7 +152,7 @@ describe('Loeschung eines Spielers', () => {
const auditEntries = await db.prisma.auditLog.findMany({
where: { targetType: 'player', targetId: String(player.id) },
});
assert.ok(auditEntries.length > 0, 'die Vorgaenge selbst bleiben nachvollziehbar');
assert.ok(auditEntries.length > 0, 'die Vorgänge selbst bleiben nachvollziehbar');
for (const entry of auditEntries) {
const details = JSON.stringify(entry.details ?? {});
assert.ok(
@@ -164,7 +164,7 @@ describe('Loeschung eines Spielers', () => {
});
describe('Aufbewahrung des Audit-Logs', () => {
it('loescht Eintraege jenseits der Frist, neuere bleiben', async () => {
it('löscht Einträge jenseits der Frist, neuere bleiben', async () => {
const alt = new Date(Date.now() - 400 * 24 * 3600 * 1000);
const veraltet = await db.prisma.auditLog.create({