fix(website): language-specific pages not properly determined

This commit is contained in:
Elian Doran 2025-10-27 16:30:03 +02:00
parent c4c8fe23a9
commit 86aaa97809
No known key found for this signature in database
2 changed files with 8 additions and 1 deletions

View File

@ -19,6 +19,7 @@ describe("swapLocale", () => {
expect(swapLocaleInUrl("/ro/get-started", "ro")).toStrictEqual("/ro/get-started"); expect(swapLocaleInUrl("/ro/get-started", "ro")).toStrictEqual("/ro/get-started");
expect(swapLocaleInUrl("/en/get-started", "ro")).toStrictEqual("/ro/get-started"); expect(swapLocaleInUrl("/en/get-started", "ro")).toStrictEqual("/ro/get-started");
expect(swapLocaleInUrl("/ro/", "en")).toStrictEqual("/en/"); expect(swapLocaleInUrl("/ro/", "en")).toStrictEqual("/en/");
expect(swapLocaleInUrl("/ro", "en")).toStrictEqual("/en");
}); });
}); });

View File

@ -35,7 +35,13 @@ export function mapLocale(locale: string) {
export function swapLocaleInUrl(url: string, newLocale: string) { export function swapLocaleInUrl(url: string, newLocale: string) {
const components = url.split("/"); const components = url.split("/");
if (components.length === 2) { if (components.length === 2) {
return `/${newLocale}${url}`; const potentialLocale = components[1];
const correspondingLocale = LOCALES.find(l => l.id === potentialLocale);
if (correspondingLocale) {
return `/${newLocale}`;
} else {
return `/${newLocale}${url}`;
}
} else { } else {
components[1] = newLocale; components[1] = newLocale;
return components.join("/"); return components.join("/");