feat: add language selector

This commit is contained in:
2025-08-14 16:16:46 +02:00
parent 4e3f1b06b2
commit 8abf745135
5 changed files with 36 additions and 1 deletions

View File

@@ -32,6 +32,7 @@
import OfflineMapsSidebar from "./sidebar/settings/OfflineMapsSidebar.svelte";
import DeveloperSidebar from "./sidebar/settings/DeveloperSidebar.svelte";
import { m } from "$lang/messages";
import LanguageSidebar from "./sidebar/settings/LanguageSidebar.svelte";
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const views: Record<string, Component<any>> = {
@@ -45,6 +46,7 @@
about: AboutSidebar,
"offline-maps": OfflineMapsSidebar,
"dev-options": DeveloperSidebar,
language: LanguageSidebar
};
let isDragging = false;

View File

@@ -0,0 +1,31 @@
<script>
import { m } from "$lang/messages";
import { getLocale, locales, setLocale } from "$lang/runtime";
import { CheckIcon, LanguagesIcon } from "@lucide/svelte";
import SidebarHeader from "../SidebarHeader.svelte";
import SettingsButton from "./SettingsButton.svelte";
</script>
<SidebarHeader>
{m["sidebar.language.header"]()}
</SidebarHeader>
<div id="languages">
{#each locales as locale}
{#if locale == getLocale()}
<SettingsButton text={m.language()} icon={CheckIcon} disabled />
{:else}
<SettingsButton text={m.language({}, { locale })} icon={LanguagesIcon} onclick={() => {
setLocale(locale)
}} />
{/if}
{/each}
</div>
<style>
#languages {
display: flex;
flex-direction: column;
gap: 1rem;
}
</style>

View File

@@ -19,7 +19,7 @@
<div id="sections">
<section>
<h2>{m["sidebar.settings.general"]()}</h2>
<SettingsButton icon={LanguagesIcon} text={m["sidebar.language.header"]()} disabled />
<SettingsButton icon={LanguagesIcon} text={m["sidebar.language.header"]()} view="language" />
</section>
<section>