Browse Source

RHL-022 feat(auth): translate user-facing messages to German for login alerts and error handling

Code_Uwe 4 weeks ago
parent
commit
337a924bb7
2 changed files with 19 additions and 29 deletions
  1. 9 16
      lib/frontend/authMessages.js
  2. 10 13
      lib/frontend/authMessages.test.js

+ 9 - 16
lib/frontend/authMessages.js

@@ -1,9 +1,3 @@
-// ---------------------------------------------------------------------------
-// Folder: lib/frontend
-// File: authMessages.js
-// Relative Path: lib/frontend/authMessages.js
-// ---------------------------------------------------------------------------
-
 import { ApiClientError } from "@/lib/frontend/apiClient";
 import { LOGIN_REASONS } from "@/lib/frontend/authRedirect";
 
@@ -25,15 +19,16 @@ import { LOGIN_REASONS } from "@/lib/frontend/authRedirect";
 export function getLoginReasonAlert(reason) {
 	if (reason === LOGIN_REASONS.EXPIRED) {
 		return {
-			title: "Session expired",
-			description: "Your session has expired. Please log in again.",
+			title: "Sitzung abgelaufen",
+			description:
+				"Ihre Sitzung ist abgelaufen. Bitte melden Sie sich erneut an.",
 		};
 	}
 
 	if (reason === LOGIN_REASONS.LOGGED_OUT) {
 		return {
-			title: "Logged out",
-			description: "You have been logged out successfully.",
+			title: "Abgemeldet",
+			description: "Sie wurden erfolgreich abgemeldet.",
 		};
 	}
 
@@ -53,17 +48,15 @@ export function getLoginReasonAlert(reason) {
 export function getLoginErrorMessage(err) {
 	if (err instanceof ApiClientError) {
 		if (err.code === "AUTH_INVALID_CREDENTIALS") {
-			return "Invalid username or password.";
+			return "Benutzername oder Passwort ist falsch.";
 		}
 
 		if (err.code === "CLIENT_NETWORK_ERROR") {
-			return "Network error. Please check your connection and try again.";
+			return "Netzwerkfehler. Bitte prüfen Sie Ihre Verbindung und versuchen Sie es erneut.";
 		}
 
-		// Generic fallback for other known API client errors
-		return "Login failed. Please try again.";
+		return "Anmeldung fehlgeschlagen. Bitte erneut versuchen.";
 	}
 
-	// Unknown error type
-	return "Login failed. Please try again.";
+	return "Anmeldung fehlgeschlagen. Bitte erneut versuchen.";
 }

+ 10 - 13
lib/frontend/authMessages.test.js

@@ -1,11 +1,5 @@
 /* @vitest-environment node */
 
-// ---------------------------------------------------------------------------
-// Folder: lib/frontend
-// File: authMessages.test.js
-// Relative Path: lib/frontend/authMessages.test.js
-// ---------------------------------------------------------------------------
-
 import { describe, it, expect } from "vitest";
 import { ApiClientError } from "@/lib/frontend/apiClient";
 import { LOGIN_REASONS } from "@/lib/frontend/authRedirect";
@@ -15,15 +9,16 @@ describe("lib/frontend/authMessages", () => {
 	describe("getLoginReasonAlert", () => {
 		it("returns alert copy for reason=expired", () => {
 			expect(getLoginReasonAlert(LOGIN_REASONS.EXPIRED)).toEqual({
-				title: "Session expired",
-				description: "Your session has expired. Please log in again.",
+				title: "Sitzung abgelaufen",
+				description:
+					"Ihre Sitzung ist abgelaufen. Bitte melden Sie sich erneut an.",
 			});
 		});
 
 		it("returns alert copy for reason=logged-out", () => {
 			expect(getLoginReasonAlert(LOGIN_REASONS.LOGGED_OUT)).toEqual({
-				title: "Logged out",
-				description: "You have been logged out successfully.",
+				title: "Abgemeldet",
+				description: "Sie wurden erfolgreich abgemeldet.",
 			});
 		});
 
@@ -41,7 +36,9 @@ describe("lib/frontend/authMessages", () => {
 				message: "Invalid credentials",
 			});
 
-			expect(getLoginErrorMessage(err)).toBe("Invalid username or password.");
+			expect(getLoginErrorMessage(err)).toBe(
+				"Benutzername oder Passwort ist falsch."
+			);
 		});
 
 		it("maps CLIENT_NETWORK_ERROR to a friendly message", () => {
@@ -52,13 +49,13 @@ describe("lib/frontend/authMessages", () => {
 			});
 
 			expect(getLoginErrorMessage(err)).toBe(
-				"Network error. Please check your connection and try again."
+				"Netzwerkfehler. Bitte prüfen Sie Ihre Verbindung und versuchen Sie es erneut."
 			);
 		});
 
 		it("uses a generic message for other errors", () => {
 			expect(getLoginErrorMessage(new Error("boom"))).toBe(
-				"Login failed. Please try again."
+				"Anmeldung fehlgeschlagen. Bitte erneut versuchen."
 			);
 		});
 	});