Files
agentic-studio/network-poc/frontend/node_modules/astro/dist/i18n/fallback.js
Jaakko Vanhala a8c4af0975 Frontend uudelleenrakennettu: Astro-komponentit, Wasm pääsäikeessä, ei Workeria
Vanha frontend siirretty temp/. Uusi rakenne:
- StatusBar.astro, Terminal.astro, Editor.astro, Guide.astro
- global.css erillinen
- Wasm pääsäikeessä (ei Worker — yksinkertainen, debugattava)
- Tab-completion, dropdown, projektikortti, Monaco, GUIDE.md
- Ei tokenisointia eikä koodilaboratoriota

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 20:17:39 +03:00

59 lines
1.5 KiB
JavaScript

import { getPathByLocale } from "./index.js";
function computeFallbackRoute(options) {
const {
pathname,
responseStatus,
fallback,
fallbackType,
locales,
defaultLocale,
strategy,
base
} = options;
if (responseStatus !== 404) {
return { type: "none" };
}
if (!fallback || Object.keys(fallback).length === 0) {
return { type: "none" };
}
const segments = pathname.split("/");
const urlLocale = segments.find((segment) => {
for (const locale of locales) {
if (typeof locale === "string") {
if (locale === segment) {
return true;
}
} else if (locale.path === segment) {
return true;
}
}
return false;
});
if (!urlLocale) {
return { type: "none" };
}
const fallbackKeys = Object.keys(fallback);
if (!fallbackKeys.includes(urlLocale)) {
return { type: "none" };
}
const fallbackLocale = fallback[urlLocale];
const pathFallbackLocale = getPathByLocale(fallbackLocale, locales);
let newPathname;
if (pathFallbackLocale === defaultLocale && strategy === "pathname-prefix-other-locales") {
if (pathname.includes(`${base}`)) {
newPathname = pathname.replace(`/${urlLocale}`, ``);
} else {
newPathname = pathname.replace(`/${urlLocale}`, `/`);
}
} else {
newPathname = pathname.replace(`/${urlLocale}`, `/${pathFallbackLocale}`);
}
return {
type: fallbackType,
pathname: newPathname
};
}
export {
computeFallbackRoute
};