feat(i18n): persist Bokmal preference globally

This commit is contained in:
cesnimda
2026-08-28 12:44:02 +02:00
parent b6dcc7c760
commit 5805c1a621
21 changed files with 359 additions and 66 deletions
+14 -2
View File
@@ -6,6 +6,8 @@ import {
Badge,
Box,
Breadcrumbs,
Button,
ButtonGroup,
Chip,
Divider,
Drawer,
@@ -112,7 +114,7 @@ export default function AppShell({
rightActions?: React.ReactNode;
children: React.ReactNode;
}) {
const { t } = useI18n();
const { language, setLanguage, t } = useI18n();
const isMobile = useMediaQuery("(max-width:767.95px)");
const [desktopNavCollapsed, setDesktopNavCollapsed] = useState(() => {
try {
@@ -309,6 +311,7 @@ export default function AppShell({
{buildBadge}
</Box>
<StackLanguageToggle language={language} setLanguage={setLanguage} />
{user ? (
<IconButton
size="small"
@@ -388,6 +391,7 @@ export default function AppShell({
}}
>
{buildBadge}
<StackLanguageToggle language={language} setLanguage={setLanguage} />
<IconButton
color="secondary"
size="small"
@@ -438,7 +442,6 @@ export default function AppShell({
</Box>
</>
)}
<Menu
anchorEl={userMenuAnchor}
open={userMenuOpen}
@@ -552,3 +555,12 @@ export default function AppShell({
</Box>
);
}
function StackLanguageToggle({ language, setLanguage }: { language: "en" | "nb"; setLanguage: (language: "en" | "nb") => void }) {
return (
<ButtonGroup size="small" variant="outlined" aria-label="Application language" sx={{ flex: "0 0 auto", "& .MuiButton-root": { minWidth: 36, px: 0.6, fontWeight: 800 } }}>
<Button aria-label="English" aria-pressed={language === "en"} variant={language === "en" ? "contained" : "outlined"} onClick={() => setLanguage("en")}>EN</Button>
<Button aria-label="Norsk" aria-pressed={language === "nb"} variant={language === "nb" ? "contained" : "outlined"} onClick={() => setLanguage("nb")}>NO</Button>
</ButtonGroup>
);
}