refactor(i18n): ask the catalogue for a sentence in one helper

`t()` answers a missing key with the key, so "does this code have a
sentence" was a comparison written inline at every site that wanted a
code's sentence or a fallback, twenty-odd times in several spellings.
translateOrNull, translateCodeOrNull and translateCode in
src/lib/i18n/translate-code.ts now hold that probe, every site uses
them, and a guard refuses the inline comparison anywhere else.
This commit is contained in:
Marc-André Bombeck committed 2026-10-20 09:53:31 +02:00
1 parent 2f7f04ecab
commit 6e54f33901
32 files changed
+291 -119

No files matched your search

+6 -10
View File
@@ -1,4 +1,5 @@
import { ApiError } from "./api-fetch";
import { translateCode } from "@/lib/i18n/translate-code";
type Translate = (key: string) => string;
@@ -12,14 +13,9 @@ export function localizedApiError(
t: Translate,
fallbackKey: string,
): string {
if (error instanceof ApiError) {
const errorCode = error.meta?.errorCode;
if (typeof errorCode === "string") {
const key = `apiErrors.${errorCode}`;
const translated = t(key);
if (translated !== key) return translated;
}
}
return t(fallbackKey);
const errorCode =
error instanceof ApiError && typeof error.meta?.errorCode === "string"
? error.meta.errorCode
: null;
return translateCode(t, "apiErrors", errorCode, fallbackKey);
}