From 9b2c63d92ff77ebce0f90a7be05437504422bf45 Mon Sep 17 00:00:00 2001 From: ivarlovlie Date: Sat, 11 Feb 2023 23:37:12 +0100 Subject: feat: Render localized content from sanity --- src/lib/sanity-client.ts | 9 +++++++++ src/lib/utils.ts | 27 +++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 src/lib/sanity-client.ts create mode 100644 src/lib/utils.ts (limited to 'src/lib') diff --git a/src/lib/sanity-client.ts b/src/lib/sanity-client.ts new file mode 100644 index 0000000..70be363 --- /dev/null +++ b/src/lib/sanity-client.ts @@ -0,0 +1,9 @@ +import { env } from "$env/dynamic/private"; +import sanityClient from "@sanity/client"; + +export const sanity = sanityClient({ + projectId: env.SANITY_STUDIO_API_PROJECT_ID, + dataset: env.SANITY_STUDIO_API_DATASET, + apiVersion: "2022-03-24", + useCdn: true, +}); \ No newline at end of file diff --git a/src/lib/utils.ts b/src/lib/utils.ts new file mode 100644 index 0000000..4ec8b01 --- /dev/null +++ b/src/lib/utils.ts @@ -0,0 +1,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"]; +} -- cgit v1.3