diff --git a/src/components/Nav/AuthModal.tsx b/src/components/Nav/AuthModal.tsx index 85424ef8..d64e2043 100644 --- a/src/components/Nav/AuthModal.tsx +++ b/src/components/Nav/AuthModal.tsx @@ -135,9 +135,11 @@ export default (props: { code?: string; mode?: string }) => { // hiding itself if finished console.log('[auth] success, hiding modal') hideModal() - } else if (session().error) { + } else if (session()?.error) { console.log('[auth] failure, showing error') setError(t(statuses[session().error || 'unknown error'])) + } else { + console.log('[auth] session', session()) } }, [session()]) return ( diff --git a/src/components/Root.tsx b/src/components/Root.tsx index d0ff19ae..bd1c619c 100644 --- a/src/components/Root.tsx +++ b/src/components/Root.tsx @@ -1,9 +1,10 @@ // FIXME: breaks on vercel, research // import 'solid-devtools' -import { Component, createMemo, lazy } from 'solid-js' +import { setLocale } from '../stores/ui' +import { Component, createEffect, createMemo, lazy } from 'solid-js' import { Routes, useRouter } from '../stores/router' -import { Dynamic } from 'solid-js/web' +import { Dynamic, isServer } from 'solid-js/web' import { getLogger } from '../utils/logger' import type { PageProps } from './types' @@ -76,6 +77,14 @@ export const Root = (props: PageProps) => { return result }) - // TODO: move MainLayout here + + if (!isServer) { + createEffect(() => { + const lang = new URLSearchParams(window.location.search).get('lang') || 'ru' + console.log('[root] client locale is', lang) + setLocale(lang) + }, [window.location.search]) + } + return } diff --git a/src/layouts/zine.astro b/src/layouts/zine.astro index 293e41c5..41be19e4 100644 --- a/src/layouts/zine.astro +++ b/src/layouts/zine.astro @@ -1,8 +1,12 @@ --- +import { setLocale } from '../stores/ui'; import '../styles/app.scss' import { t } from '../utils/intl' -const lang = Astro.url.searchParams.get('lang') +const lang = Astro.url.searchParams.get('lang') || 'ru' +console.log('[layout] server locale is', lang) +setLocale(lang) + ---