From 38a07e3dfbda798010cc7f219abec911f747eaf7 Mon Sep 17 00:00:00 2001 From: ivarlovlie Date: Mon, 3 Oct 2022 16:45:26 +0800 Subject: feat: Fully functioning i18n --- apps/kit/src/routes/(main)/+layout.server.ts | 15 +++++++++++++-- apps/kit/src/routes/(main)/+layout.svelte | 23 ++++++++--------------- apps/kit/src/routes/(main)/+layout.ts | 22 ++++++++++++++-------- 3 files changed, 35 insertions(+), 25 deletions(-) (limited to 'apps/kit/src/routes/(main)') diff --git a/apps/kit/src/routes/(main)/+layout.server.ts b/apps/kit/src/routes/(main)/+layout.server.ts index 6bc7071..d2eb2eb 100644 --- a/apps/kit/src/routes/(main)/+layout.server.ts +++ b/apps/kit/src/routes/(main)/+layout.server.ts @@ -3,8 +3,9 @@ import { logError } from "$lib/logger"; import { error, redirect } from "@sveltejs/kit"; import type { LayoutServerLoad } from "./$types"; -export const load: LayoutServerLoad = async ({ routeId, cookies }) => { - const isPublicRoute = routeId?.startsWith("(main)/(public)") ?? true; +export const load: LayoutServerLoad = async ({ routeId, cookies, locals }) => { + const isPublicRoute = (routeId?.startsWith("(main)/(public)") || routeId === "(main)") ?? true; + let sessionIsValid = (await fetch(api_base("_/valid-session"), { headers: { Cookie: CookieNames.session + "=" + cookies.get(CookieNames.session) @@ -15,9 +16,19 @@ export const load: LayoutServerLoad = async ({ routeId, cookies }) => { message: "We are experiencing a service distruption! Have patience while we resolve the issue." }) })).ok; + + console.log("Base Layout loaded", { + sessionIsValid, + isPublicRoute, + routeId + }); + if (sessionIsValid && isPublicRoute) { throw redirect(302, "/home"); } else if (!sessionIsValid && !isPublicRoute) { throw redirect(302, "/sign-in"); } + return { + locale: locals.locale + } }; \ No newline at end of file diff --git a/apps/kit/src/routes/(main)/+layout.svelte b/apps/kit/src/routes/(main)/+layout.svelte index 5354f02..236cd75 100644 --- a/apps/kit/src/routes/(main)/+layout.svelte +++ b/apps/kit/src/routes/(main)/+layout.svelte @@ -1,32 +1,23 @@ + {#if !online} -
+
- +

You seem to be offline, please check your internet connection.

@@ -34,4 +25,6 @@
{/if} + + diff --git a/apps/kit/src/routes/(main)/+layout.ts b/apps/kit/src/routes/(main)/+layout.ts index 13837be..5d0e005 100644 --- a/apps/kit/src/routes/(main)/+layout.ts +++ b/apps/kit/src/routes/(main)/+layout.ts @@ -1,9 +1,15 @@ -import type { Locales } from "$lib/i18n/i18n-types"; -import { loadLocaleAsync } from "$lib/i18n/i18n-util.async"; -import type { LayoutLoad } from "./$types"; +import type { LayoutLoad } from './$types' +import type { Locales } from '$lib/i18n/i18n-types' +import { loadLocaleAsync } from '$lib/i18n/i18n-util.async' +import { setLocale } from '$lib/i18n/i18n-svelte' -export const load: LayoutLoad<{ locale: Locales }> = async ({ url, params }) => { - let lang = "en" as Locales; - await loadLocaleAsync(lang); - return { locale: lang }; -}; +export const load: LayoutLoad<{ locale: Locales }> = 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 } +} \ No newline at end of file -- cgit v1.3