diff options
| author | Adam Soltys <[email protected]> | 2024-01-26 00:06:00 -0800 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2024-01-26 00:33:50 -0800 |
| commit | 3444b3c0fb349395a02d6db1eeaef57460b1a37f (patch) | |
| tree | af815eafd6c6075d49c8231efd955531376d993e /src/routes | |
| parent | 01fdad8ee4e6bb4213c0c81a8876cda67ad3085a (diff) | |
| download | coinos-ui-3444b3c0fb349395a02d6db1eeaef57460b1a37f.tar.gz coinos-ui-3444b3c0fb349395a02d6db1eeaef57460b1a37f.zip | |
update translations
Diffstat (limited to 'src/routes')
| -rw-r--r-- | src/routes/(app)/+layout.svelte | 1 | ||||
| -rw-r--r-- | src/routes/(app)/[username]/settings/[...tab]/+page.server.js | 4 | ||||
| -rw-r--r-- | src/routes/(app)/[username]/settings/[...tab]/+page.svelte | 1 | ||||
| -rw-r--r-- | src/routes/(app)/[username]/settings/[...tab]/_pos.svelte | 5 | ||||
| -rw-r--r-- | src/routes/(app)/login/+page.server.js | 2 | ||||
| -rw-r--r-- | src/routes/(app)/login/+page.svelte | 3 | ||||
| -rw-r--r-- | src/routes/(app)/logout/+page.server.js | 4 | ||||
| -rw-r--r-- | src/routes/+layout.js | 14 | ||||
| -rw-r--r-- | src/routes/+layout.server.js | 40 | ||||
| -rw-r--r-- | src/routes/+page.svelte | 2 |
10 files changed, 62 insertions, 14 deletions
diff --git a/src/routes/(app)/+layout.svelte b/src/routes/(app)/+layout.svelte index d853dd9e..d33aa193 100644 --- a/src/routes/(app)/+layout.svelte +++ b/src/routes/(app)/+layout.svelte @@ -39,7 +39,6 @@ $: update(data); let update = (data) => { ({ rate, user, subject, token, rates } = data); - $locale = user?.language || "en"; }; onMount(async () => { diff --git a/src/routes/(app)/[username]/settings/[...tab]/+page.server.js b/src/routes/(app)/[username]/settings/[...tab]/+page.server.js index 3c10d897..8b44f452 100644 --- a/src/routes/(app)/[username]/settings/[...tab]/+page.server.js +++ b/src/routes/(app)/[username]/settings/[...tab]/+page.server.js @@ -5,7 +5,7 @@ export function load({ cookies, params, url }) { if (url.pathname.endsWith("settings")) redirect(307, url.pathname + "/account"); params.cookies = cookies.getAll(); - return { cookies: cookies.getAll(), tab: params.tab } + return { cookies: cookies.getAll(), tab: params.tab }; } export const actions = { @@ -26,6 +26,8 @@ export const actions = { return fail(400, { message: e.message }); } + if (user.language) cookies.set("lang", user.language, { path: "/" }); + return { user, success: true }; }, }; diff --git a/src/routes/(app)/[username]/settings/[...tab]/+page.svelte b/src/routes/(app)/[username]/settings/[...tab]/+page.svelte index 0a08a4b1..383785ec 100644 --- a/src/routes/(app)/[username]/settings/[...tab]/+page.svelte +++ b/src/routes/(app)/[username]/settings/[...tab]/+page.svelte @@ -43,7 +43,6 @@ let justUpdated; let throttledSuccess = () => { - console.log("justUpdated", justUpdated); if (!justUpdated) { justUpdated = true; success($t("user.settings.saved"), false); diff --git a/src/routes/(app)/[username]/settings/[...tab]/_pos.svelte b/src/routes/(app)/[username]/settings/[...tab]/_pos.svelte index 80ae3ad9..4fd61918 100644 --- a/src/routes/(app)/[username]/settings/[...tab]/_pos.svelte +++ b/src/routes/(app)/[username]/settings/[...tab]/_pos.svelte @@ -2,20 +2,21 @@ import Icon from "$comp/Icon.svelte"; import LocaleSelector from "$comp/LocaleSelector.svelte"; import Toggle from "$comp/Toggle.svelte"; - import { t } from "$lib/translations"; + import { locale, t } from "$lib/translations"; import { success, fail } from "$lib/utils"; import { page } from "$app/stores"; export let user, rates, submit; let fiats = Object.keys(rates); + $: user.language = $locale </script> <div> <label for="language" class="font-bold block mb-1" >{$t("user.settings.locale")}</label > - <LocaleSelector style="select-styles block py-3 w-full" bind:user /> + <LocaleSelector style="select-styles block py-3 w-full" /> </div> <div> diff --git a/src/routes/(app)/login/+page.server.js b/src/routes/(app)/login/+page.server.js index 7b977024..7fb1a6b3 100644 --- a/src/routes/(app)/login/+page.server.js +++ b/src/routes/(app)/login/+page.server.js @@ -1,7 +1,7 @@ import { fail, redirect } from "@sveltejs/kit"; import { login, fd } from "$lib/utils"; -export const load = async ({ parent }) => { +export const load = async ({ parent, url }) => { let { user } = await parent(); if (user?.pubkey) redirect(307, `/${user.username}`); }; diff --git a/src/routes/(app)/login/+page.svelte b/src/routes/(app)/login/+page.svelte index cebbf41c..0afcad44 100644 --- a/src/routes/(app)/login/+page.svelte +++ b/src/routes/(app)/login/+page.svelte @@ -18,6 +18,9 @@ $pin = undefined; localStorage.clear(); sessionStorage.clear(); + + let lang = $page.url.searchParams.get("lang"); + if (lang) document.cookie = `lang=${lang} ;`; }); export let form; diff --git a/src/routes/(app)/logout/+page.server.js b/src/routes/(app)/logout/+page.server.js index 97bb1e73..ab5df7b9 100644 --- a/src/routes/(app)/logout/+page.server.js +++ b/src/routes/(app)/logout/+page.server.js @@ -6,7 +6,9 @@ const opts = { }; export async function load({ cookies }) { + let lang = cookies.get("lang"); + cookies.set("lang", "", opts); cookies.set("username", "", opts); cookies.set("token", "", opts); - redirect(307, "/login"); + redirect(307, `/login?lang=${lang}`); } diff --git a/src/routes/+layout.js b/src/routes/+layout.js new file mode 100644 index 00000000..03c7ec49 --- /dev/null +++ b/src/routes/+layout.js @@ -0,0 +1,14 @@ +import { addTranslations, setLocale, setRoute } from '$lib/translations'; + +/** @type {import('@sveltejs/kit').Load} */ +export const load = async ({ data }) => { + const { i18n, translations } = data; + const { locale, route } = i18n; + + addTranslations(translations); + + await setRoute(route); + await setLocale(locale); + + return i18n; +}; diff --git a/src/routes/+layout.server.js b/src/routes/+layout.server.js index 91d24d3d..5d1688fc 100644 --- a/src/routes/+layout.server.js +++ b/src/routes/+layout.server.js @@ -1,7 +1,13 @@ import { auth, get } from "$lib/utils"; -import { loadTranslations, locale } from "$lib/translations"; +import { + locales, + loadTranslations, + translations, + defaultLocale, +} from "$lib/translations"; -export let load = async ({ cookies, url }) => { +export let load = async ({ cookies, request, url }) => { + let { host, pathname } = url; let user; let token = cookies.get("token"); if (token) { @@ -10,8 +16,30 @@ export let load = async ({ cookies, url }) => { } catch (e) {} } - let { host, pathname } = url; - let locale = user?.language || "en"; - await loadTranslations(locale, pathname); - return { host, pathname }; + // Try to get the locale from cookie + let locale = user?.language || (cookies.get("lang") || "").toLowerCase(); + + // Get user preferred locale + if (!locale) { + locale = `${`${request.headers.get("accept-language")}`.match( + /[a-zA-Z]+?(?=-|_|,|;)/ + )}`.toLowerCase(); + } + + // Get defined locales + let supportedLocales = locales.get().map((l) => l.toLowerCase()); + + // Use default locale if current locale is not supported + if (!supportedLocales.includes(locale)) { + locale = defaultLocale; + } + + await loadTranslations(locale, pathname); // keep this just before the `return` + + return { + host, + pathname, + i18n: { locale, route: pathname }, + translations: translations.get(), + }; }; diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 3cffea21..b06c4fb5 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -7,7 +7,7 @@ import Image from "$comp/Image.svelte"; import Footer from "$comp/Footer.svelte"; - import { t } from "$lib/translations"; + import { locale, t } from "$lib/translations"; import { onDestroy, onMount, tick } from "svelte"; export let data; |
