import { locales, type AppLocale } from "@/i18n/locales"; export function getBaseUrl(): string { const raw = process.env.NEXT_PUBLIC_BASE_URL || process.env.NEXTAUTH_URL || // fallback if ever added "http://localhost:3000"; return raw.replace(/\/+$/, ""); } export function toAbsoluteUrl(path: string): string { const base = getBaseUrl(); const normalized = path.startsWith("/") ? path : `/${path}`; return `${base}${normalized}`; } export function getLanguageAlternates(opts: { /** Path without locale prefix, e.g. "/projects" or "/projects/my-slug" or "" */ pathWithoutLocale: string; }): Record { const path = opts.pathWithoutLocale === "" ? "" : `/${opts.pathWithoutLocale}`.replace(/\/{2,}/g, "/"); const normalizedPath = path === "/" ? "" : path; return locales.reduce((acc, l) => { const url = toAbsoluteUrl(`/${l}${normalizedPath}`); acc[l] = url; return acc; }, {} as Record); }