diff --git a/src/material/BottomSheet.css b/src/material/BottomSheet.css index c0f2803..5dbd799 100644 --- a/src/material/BottomSheet.css +++ b/src/material/BottomSheet.css @@ -50,8 +50,8 @@ height: 100vh; height: 100dvh; - contain-intrinsic-size: auto 100vw 100vh; - contain-intrinsic-size: auto 100dvw 100dvh; + contain-intrinsic-size: 100% 100vh; + contain-intrinsic-size: 100% 100dvh; } } diff --git a/src/platform/i18n.tsx b/src/platform/i18n.tsx index 70db7f3..ff03e14 100644 --- a/src/platform/i18n.tsx +++ b/src/platform/i18n.tsx @@ -11,11 +11,7 @@ import { $settings } from "../settings/stores"; import { enGB } from "date-fns/locale/en-GB"; import { useStore } from "@nanostores/solid"; import type { Locale } from "date-fns"; -import { - resolveTemplate, - translator, - type Template, -} from "@solid-primitives/i18n"; +import { resolveTemplate, translator, type Template } from "@solid-primitives/i18n"; async function synchronised( name: string, @@ -38,35 +34,29 @@ export function autoMatchLangTag() { return match(Array.from(navigator.languages), SUPPORTED_LANGS, DEFAULT_LANG); } -const DateFnLocaleCx = /* __@PURE__ */ createContext>( - () => enGB, -); +const DateFnLocaleCx = /* __@PURE__ */createContext>(() => enGB); const cachedDateFnLocale: Record = { enGB, }; export function autoMatchRegion() { - const specifiers = navigator.languages.map((x) => x.split("-")); - - for (const s of specifiers) { - if (s.length === 1) { - const lang = s[0]; - for (const available of SUPPORTED_REGIONS) { - if (available.toLowerCase().startsWith(lang.toLowerCase())) { - return available; - } + const regions = navigator.languages + .map((x) => { + const parts = x.split("_"); + if (parts.length > 1) { + return parts[1]; } - } else if (s.length === 2) { - const [lang, region] = s[1]; - for (const available of SUPPORTED_REGIONS) { - if (available.toLowerCase() === `${lang}_${region}`.toLowerCase()) { - return available; - } + return undefined; + }) + .filter((x): x is string => !!x); + for (const r of regions) { + for (const available of SUPPORTED_REGIONS) { + if (available.toLowerCase().endsWith(r.toLowerCase())) { + return available; } } } - return "en_GB"; } @@ -158,17 +148,14 @@ export function useLanguage() { return () => settings().language || autoMatchLangTag(); } -type ImportFn = (name: string) => Promise<{ default: T }>; +type ImportFn = (name: string) => Promise<{default: T}> -type ImportedModule = F extends ImportFn ? T : never; +type ImportedModule = F extends ImportFn ? T: never -type MergedImportedModule = T extends [] - ? {} - : T extends [infer I] - ? ImportedModule - : T extends [infer I, ...infer J] - ? ImportedModule & MergedImportedModule - : never; +type MergedImportedModule = + T extends [] ? {} : + T extends [infer I] ? ImportedModule : + T extends [infer I, ...infer J] ? ImportedModule & MergedImportedModule : never export function createStringResource< T extends ImportFn | undefined>>[], @@ -183,11 +170,9 @@ export function createStringResource< return cache[nlang]; } - const results = await Promise.all( - importFns.map((x) => x(nlang).then((v) => v.default)), - ); + const results = await Promise.all(importFns.map(x => x(nlang).then(v => v.default))) - const merged: MergedImportedModule = Object.assign({}, ...results); + const merged: MergedImportedModule = Object.assign({}, ...results) cache[nlang] = merged; @@ -196,10 +181,8 @@ export function createStringResource< ); } -export function createTranslator< - T extends ImportFn | undefined>>[], ->(...importFns: T) { - const res = createStringResource(...importFns); +export function createTranslator | undefined>>[],>(...importFns: T) { + const res = createStringResource(...importFns) - return [translator(res[0], resolveTemplate), res] as const; + return [translator(res[0], resolveTemplate), res] as const } diff --git a/src/settings/Region.tsx b/src/settings/Region.tsx index 130ef1f..1ae1a62 100644 --- a/src/settings/Region.tsx +++ b/src/settings/Region.tsx @@ -57,7 +57,7 @@ const ChooseRegion: Component = () => { - {t("Choose Region")} + {t("Choose Language")} }