Merged in feat/LOY-156-localize-user-languages (pull request #1452)

feat(LOY-156): Improve language handling and localization in profile page

* feat(LOY-156): Improve language handling and localization in profile page

* refactor(LOY-156): Improve language display using Intl.DisplayNames

* feat(LOY-156): Enhance country display with localized country names

* refactor(LOY-156): Move countries data to a dedicated constants file & more type safe country mapping

* feat(LOY-156): Update isValidLang to use languageSchema + German translation for membership terms and conditions

* chore(LOY-156): language handling in profile component


Approved-by: Christian Andolf
This commit is contained in:
Chuma Mcphoy (We Ahead)
2025-03-03 12:55:05 +00:00
parent c04bb20021
commit 738c0e223f
9 changed files with 50 additions and 23 deletions

View File

@@ -2,20 +2,20 @@ import { z } from "zod"
import { Lang } from "@/constants/languages"
export function findLang(pathname: string) {
const langFromPath = Object.values(Lang).find(
(l) => pathname.startsWith(`/${l}/`) || pathname === `/${l}`
)
const parsedLang = languageSchema.safeParse(langFromPath)
if (!parsedLang.success) {
return undefined
}
return parsedLang.data
}
export const languageSchema = z.preprocess(
(arg) => (typeof arg === "string" ? arg.toLowerCase() : arg),
z.nativeEnum(Lang)
)
export function isValidLang(lang?: string): lang is Lang {
const result = languageSchema.safeParse(lang)
return result.success
}
export function findLang(pathname: string): Lang | undefined {
const langFromPath = Object.values(Lang).find(
(l) => pathname.startsWith(`/${l}/`) || pathname === `/${l}`
)
return isValidLang(langFromPath) ? langFromPath : undefined
}