aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/utils.ts
blob: 4ec8b01cdd2e9ed18c2fc4889793cc4eae2c823f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// Replaces the locale slug in a URL.
//
// If the `full` argument is set to `true`, the full URL is returned as a string.
// e.g. https://mywebsite.com/en/blog/article-1 => https://mywebsite.com/de/blog/article-1
//
// Otherwise (default) the URL relative to the base is returned.
// e.g. https://mywebsite.com/en/blog/article-1 => /de/blog/article-1
export const replaceLocaleInUrl = (url: URL, locale: string, full = false): string => {
    const [, , ...rest] = url.pathname.split('/')
    const new_pathname = `/${[locale, ...rest].join('/')}`
    if (!full) {
        return `${new_pathname}${url.search}`
    }
    const newUrl = new URL(url.toString())
    newUrl.pathname = new_pathname
    return newUrl.toString()
}

export function fromLocalizedString(localizedString: string | object, locale: Locales) {
    if (typeof localizedString === "string") return localizedString;
    // @ts-ignore
    if (localizedString[locale]) return localizedString[locale];
    // @ts-ignore
    if (localizedString["nb"]) return localizedString["nb"];
    // @ts-ignore
    if (localizedString["en"]) return localizedString["en"];
}