diff options
Diffstat (limited to 'src/routes')
| -rw-r--r-- | src/routes/+layout.server.ts | 6 | ||||
| -rw-r--r-- | src/routes/+layout.svelte | 15 | ||||
| -rw-r--r-- | src/routes/+layout.ts | 14 | ||||
| -rw-r--r-- | src/routes/+page.svelte | 0 | ||||
| -rw-r--r-- | src/routes/[lang=lang]/+page.server.ts | 19 | ||||
| -rw-r--r-- | src/routes/[lang=lang]/+page.svelte | 17 | ||||
| -rw-r--r-- | src/routes/[lang=lang]/+page.ts | 18 |
7 files changed, 87 insertions, 2 deletions
diff --git a/src/routes/+layout.server.ts b/src/routes/+layout.server.ts new file mode 100644 index 0000000..fc087d8 --- /dev/null +++ b/src/routes/+layout.server.ts @@ -0,0 +1,6 @@ +import type { LayoutServerLoad } from './$types' + +export const load: LayoutServerLoad = ({ locals: { locale, LL } }) => { + // pass locale information from "server-context" to "shared server + client context" + return { locale } +} diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 30062ed..990dd94 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -1,8 +1,19 @@ <script lang="ts"> - import '../app.postcss'; - import type { LayoutData } from './$types'; + import { page } from "$app/stores"; + import "../app.postcss"; + import type { LayoutData } from "./$types"; + import { locales, baseLocale } from "$i18n/i18n-util"; + import { replaceLocaleInUrl } from "$lib/utils"; export let data: LayoutData; </script> +<svelte:head> + <title>{$page.data.title || "auroraklinikken.no"}</title> + {#each locales as l} + <link rel="alternate" hreflang={l} href={`${replaceLocaleInUrl($page.url, l, true)}`} /> + {/each} + <link rel="alternate" hreflang="x-default" href={`${replaceLocaleInUrl($page.url, baseLocale, true)}`} /> +</svelte:head> + <slot /> diff --git a/src/routes/+layout.ts b/src/routes/+layout.ts new file mode 100644 index 0000000..5a78ab1 --- /dev/null +++ b/src/routes/+layout.ts @@ -0,0 +1,14 @@ +import type { LayoutLoad } from './$types' +import { loadLocaleAsync } from '$i18n/i18n-util.async' +import { setLocale } from '$i18n/i18n-svelte' + +export const load = (async ({ data: { locale } }) => { + // load dictionary into memory + await loadLocaleAsync(locale) + + // if you need to output a localized string in a `load` function, + // you always need to call `setLocale` right before you access the `LL` store + setLocale(locale) + // pass locale to the "rendering context" + return { locale } +}) satisfies LayoutLoad<{ locale: Locales }>;
\ No newline at end of file diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte deleted file mode 100644 index e69de29..0000000 --- a/src/routes/+page.svelte +++ /dev/null diff --git a/src/routes/[lang=lang]/+page.server.ts b/src/routes/[lang=lang]/+page.server.ts new file mode 100644 index 0000000..d3a98a5 --- /dev/null +++ b/src/routes/[lang=lang]/+page.server.ts @@ -0,0 +1,19 @@ +import { sanity } from '$lib/sanity-client'; +import type { PageServerLoad } from './$types'; +import groq from "groq"; +import type { ContactModel } from '$components/contact.svelte'; +import { fromLocalizedString } from '$lib/utils'; + +export const load = (async ({ locals }) => { + const contactSection = await sanity.fetch(groq`*[_type == "contact"][0]`); + console.log(contactSection); + + return { + contact: { + phone: fromLocalizedString(contactSection.phone, locals.locale), + email: fromLocalizedString(contactSection.email, locals.locale), + phoneHours: fromLocalizedString(contactSection.phoneHours, locals.locale), + addressLines: contactSection.addressLines.map((el: string | object) => fromLocalizedString(el, locals.locale)), + } as ContactModel + }; +}) satisfies PageServerLoad;
\ No newline at end of file diff --git a/src/routes/[lang=lang]/+page.svelte b/src/routes/[lang=lang]/+page.svelte new file mode 100644 index 0000000..666aa80 --- /dev/null +++ b/src/routes/[lang=lang]/+page.svelte @@ -0,0 +1,17 @@ +<script lang="ts"> + import Contact, { type ContactModel } from "$components/contact.svelte"; + import type { PageData } from "./$types"; + + export let data: PageData; + + type Model = { + contact: ContactModel; + }; + + const M: Model = { + contact: data.contact, + }; + console.log(data); +</script> + +<Contact model={M.contact} /> diff --git a/src/routes/[lang=lang]/+page.ts b/src/routes/[lang=lang]/+page.ts new file mode 100644 index 0000000..fa3907b --- /dev/null +++ b/src/routes/[lang=lang]/+page.ts @@ -0,0 +1,18 @@ +import type { PageLoad } from './$types'; +import LL, { setLocale } from '$i18n/i18n-svelte' +import { get } from 'svelte/store' + +export const load = (async ({ parent, data }) => { + // wait for `+layout.ts` to load dictionary and pass locale information + const { locale } = await parent() + + // if you need to output a localized string in a `load` function, + // you always need to call `setLocale` right before you access the `LL` store + setLocale(locale) + // get the translation functions value from the store + const $LL = get(LL) + return { + title: $LL.homeTitle(), + contact: data.contact + } +}) satisfies PageLoad;
\ No newline at end of file |
