aboutsummaryrefslogtreecommitdiffstats
path: root/apps/kit/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'apps/kit/src/lib')
-rw-r--r--apps/kit/src/lib/components/locale-switcher.svelte37
1 files changed, 25 insertions, 12 deletions
diff --git a/apps/kit/src/lib/components/locale-switcher.svelte b/apps/kit/src/lib/components/locale-switcher.svelte
index 477e2d7..2e2d339 100644
--- a/apps/kit/src/lib/components/locale-switcher.svelte
+++ b/apps/kit/src/lib/components/locale-switcher.svelte
@@ -2,37 +2,50 @@
import { browser } from "$app/environment";
import { page } from "$app/stores";
import { CookieNames } from "$lib/configuration";
- import { set_cookie } from "$lib/helpers";
import { setLocale, locale } from "$lib/i18n/i18n-svelte";
import type { Locales } from "$lib/i18n/i18n-types";
import { locales } from "$lib/i18n/i18n-util";
import { loadLocaleAsync } from "$lib/i18n/i18n-util.async";
import Cookies from "js-cookie";
- const switchLocale = async (newLocale: Locales) => {
+ async function switch_locale(newLocale: Locales) {
if (!newLocale || $locale === newLocale) return;
await loadLocaleAsync(newLocale);
setLocale(newLocale);
document.querySelector("html")?.setAttribute("lang", newLocale);
- set_cookie(CookieNames.locale, newLocale);
Cookies.set(CookieNames.locale, newLocale, {
sameSite: "strict",
domain: location.hostname,
});
console.log("Switched to: " + newLocale);
- };
+ }
+
+ function on_change(event: Event) {
+ const target = event.target as HTMLSelectElement;
+ switch_locale(target.options[target.selectedIndex].value as Locales);
+ }
$: if (browser) {
- switchLocale($page.params.lang as Locales);
+ switch_locale($page.params.lang as Locales);
+ }
+
+ function get_locale_name(iso: string) {
+ switch (iso) {
+ case "nb": {
+ return "Norsk Bokmål";
+ }
+ case "en": {
+ return "English";
+ }
+ }
}
</script>
-<ul>
+<select
+ on:change={on_change}
+ class="mt-1 mr-1 block border-none py-2 pl-3 pr-10 text-base rounded-md right-0 absolute focus:outline-none focus:ring-teal-500 sm:text-sm"
+>
{#each locales as aLocale}
- <li>
- <button type="button" class:active={aLocale === $locale} on:click={() => switchLocale(aLocale)}>
- {aLocale}
- </button>
- </li>
+ <option value={aLocale}>{get_locale_name(aLocale)}</option>
{/each}
-</ul>
+</select>