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
+19 -19
View File
@@ -15,13 +15,13 @@ export interface CharacterResult {
character: Character;
balances: Balances;
// Zeigt an, dass ein Topf nach der Buchung im Minus steht. Die Aktion wird
// trotzdem ausgefuehrt, das Ergebnis gehoert aber sichtbar gemacht.
// trotzdem ausgeführt, das Ergebnis gehört aber sichtbar gemacht.
overdrawn: boolean;
}
// Fuer ein Redesign zaehlen nur die beiden Redesign-Toepfe.
// Für ein Redesign zählen nur die beiden Redesign-Töpfe.
const REDESIGN_KINDS = [CreditKind.REDESIGN_PAID, CreditKind.REDESIGN_KULANZ] as const;
// Beim Wiederbeleben eines reworkten CCs darf zusaetzlich CC-Guthaben gezogen werden.
// Beim Wiederbeleben eines reworkten CCs darf zusätzlich CC-Guthaben gezogen werden.
const REVIVE_KINDS = [CreditKind.CC, ...REDESIGN_KINDS] as const;
export type RedesignKind = (typeof REDESIGN_KINDS)[number];
@@ -37,7 +37,7 @@ async function loadCharacter(id: number): Promise<Character> {
return character;
}
/** Neuer CC. Kostet ein CC-Guthaben, Kulanz ist dafuer nicht einsetzbar. */
/** Neuer CC. Kostet ein CC-Guthaben, Kulanz ist dafür nicht einsetzbar. */
export async function createCharacter(
playerId: number,
input: { name: string; loreText?: string | undefined; note?: string | undefined },
@@ -87,8 +87,8 @@ export async function createCharacter(
/**
* Redesign als Lineage: der alte CC geht auf INACTIVE/REWORKED, der neue
* entsteht als eigener Datensatz in derselben Kette. Damit greift spaeter
* automatisch die Regel, dass ein reworkter CC nur bezahlt zurueckkommt.
* entsteht als eigener Datensatz in derselben Kette. Damit greift später
* automatisch die Regel, dass ein reworkter CC nur bezahlt zurückkommt.
*/
export async function redesignCharacter(
characterId: number,
@@ -165,7 +165,7 @@ export async function redesignCharacter(
};
}
/** Deaktivierung ohne Guthaben-Effekt, etwa beim Serverputz wegen Inaktivitaet. */
/** Deaktivierung ohne Guthaben-Effekt, etwa beim Serverputz wegen Inaktivität. */
export async function deactivateCharacter(
characterId: number,
reason: InactiveReason,
@@ -179,7 +179,7 @@ export async function deactivateCharacter(
if (reason === InactiveReason.REWORKED) {
throw badRequest(
'USE_REDESIGN',
'Ein Rework entsteht ueber die Redesign-Aktion, nicht ueber eine Deaktivierung',
'Ein Rework entsteht über die Redesign-Aktion, nicht über eine Deaktivierung',
);
}
@@ -208,9 +208,9 @@ export async function deactivateCharacter(
}
/**
* Gratis-Reaktivierung. Moeglich, solange der CC nicht redesignt wurde. Der
* Grund des Verschwindens spielt dabei keine Rolle - ob Spieler-Inaktivitaet
* oder eine zeitweise entfernte Einheit: der CC existiert unveraendert weiter
* Gratis-Reaktivierung. Möglich, solange der CC nicht redesignt wurde. Der
* Grund des Verschwindens spielt dabei keine Rolle - ob Spieler-Inaktivität
* oder eine zeitweise entfernte Einheit: der CC existiert unverändert weiter
* und kostet deshalb kein Guthaben.
*/
export async function reactivateFree(
@@ -250,7 +250,7 @@ export async function reactivateFree(
}
/**
* Bezahlte Reaktivierung, ausschliesslich fuer redesignte CCs: deren Original
* Bezahlte Reaktivierung, ausschließlich für redesignte CCs: deren Original
* existiert nicht mehr, es muss also neu erschaffen werden. Kostet ein
* Redesign- oder ein CC-Guthaben, der Nutzer entscheidet welches.
*/
@@ -268,11 +268,11 @@ export async function reactivatePaid(
if (existing.inactiveReason !== InactiveReason.REWORKED) {
throw conflict(
'IS_FREE',
'Dieser CC existiert unveraendert weiter und kommt gratis zurueck. Eine Guthaben-Buchung waere hier falsch.',
'Dieser CC existiert unverändert weiter und kommt gratis zurück. Eine Guthaben-Buchung wäre hier falsch.',
);
}
if (!REVIVE_KINDS.includes(useKind)) {
throw badRequest('INVALID_KIND', 'Ungueltige Guthaben-Art fuer eine Reaktivierung');
throw badRequest('INVALID_KIND', 'Ungültige Guthaben-Art für eine Reaktivierung');
}
const character = await prisma.$transaction(async (tx) => {
@@ -341,9 +341,9 @@ export async function updateCharacter(
}
/**
* Nimmt einen irrtuemlich angelegten CC komplett zurueck: Verbrauchsbuchungen
* werden gegengebucht und ein durch das Redesign deaktivierter Vorgaenger
* kehrt in den aktiven Zustand zurueck.
* Nimmt einen irrtümlich angelegten CC komplett zurück: Verbrauchsbuchungen
* werden gegengebucht und ein durch das Redesign deaktivierter Vorgänger
* kehrt in den aktiven Zustand zurück.
*/
export async function revertCharacter(
characterId: number,
@@ -359,7 +359,7 @@ export async function revertCharacter(
if (existing.successors.length > 0) {
throw conflict(
'HAS_SUCCESSORS',
'Dieser CC hat Nachfolger in der Redesign-Kette. Bitte zuerst den juengsten CC zuruecknehmen.',
'Dieser CC hat Nachfolger in der Redesign-Kette. Bitte zuerst den jüngsten CC zurücknehmen.',
);
}
@@ -384,7 +384,7 @@ export async function revertCharacter(
amount: -entry.amount,
source: CreditSource.REVERSAL,
groupId: entry.groupId,
note: `Ruecknahme "${existing.name}": ${reason}`,
note: `Rücknahme "${existing.name}": ${reason}`,
reversalOfId: entry.id,
createdById: ctx.actorId,
},