import { createMemo, For, type Component, type JSX } from "solid-js"; import Scaffold from "../material/Scaffold"; import { AppBar, IconButton, List, ListItemButton, ListItemSecondaryAction, ListItemText, ListSubheader, Radio, Switch, Toolbar, } from "@suid/material"; import { Close as CloseIcon } from "@suid/icons-material"; import iso639_1 from "iso-639-1"; import { autoMatchRegion, createTranslator, SUPPORTED_REGIONS, } from "../platform/i18n"; import { Title } from "../material/typography"; import type { Template } from "@solid-primitives/i18n"; type ChooseRegionProps = { code?: string; onCodeChange: (ncode?: string) => void; onClose?: JSX.EventHandlerUnion; }; const ChooseRegion: Component = (props) => { const [t] = createTranslator( () => import("./i18n/lang-names.json"), (code) => import(`./i18n/${code}.json`) as Promise<{ default: Record & { ["lang.auto"]: Template<{ detected: string }>; }; }>, ); const unsupportedLangCodes = createMemo(() => { return iso639_1.getAllCodes().filter((x) => !["zh", "en"].includes(x)); }); const matchedRegionCode = createMemo(() => autoMatchRegion()); return ( {t("Choose Language")} } > { props.onCodeChange(props.code ? undefined : matchedRegionCode()); }} > {t("region.auto", { detected: t(`region.${matchedRegionCode()}`) ?? matchedRegionCode(), })} {t("Supported")}}> {(code) => ( {t(`region.${code}`)} )} ); }; export default ChooseRegion;