feat: add language selector

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

View File

@ -1,5 +1,6 @@
{
"$schema": "https://inlang.com/schema/inlang-message-format",
"language": "Deutsch - German",
"saved": {
"home": "Heim",
"school": "Schule",

View File

@ -1,5 +1,6 @@
{
"$schema": "https://inlang.com/schema/inlang-message-format",
"language": "English",
"save": "Save",
"cancel": "Cancel",
"loading": "Loading...",

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>