Skip to content

Commit

Permalink
fix: add localstorag,fix language reset on refresh
Browse files Browse the repository at this point in the history
  • Loading branch information
Buffett111 committed Feb 18, 2025
1 parent 3bcd78b commit 160e7b1
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 7 deletions.
18 changes: 12 additions & 6 deletions src/lib/components/Navbar.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import { onMount } from 'svelte';
import { page } from '$app/state';
import { language } from '$lib/stores/language'; // Import the global language store
import { browser } from '$app/environment';
let hinagiku = $state('Hinagiku');
let highlight = $state(0);
Expand All @@ -27,6 +28,16 @@
}
};
import { derived } from 'svelte/store';
const flagSrc = derived(language, ($language) => {
return browser
? $language === 'zh'
? '/icons/flag-zh.jpg'
: '/icons/flag-us.png'
: '/icons/flag-us.png';
});
onMount(() => {
const interval = setInterval(() => {
let newHighlight;
Expand Down Expand Up @@ -77,12 +88,7 @@
{/if}

<!-- Remove the old toggle button and add a dropdown for language selection(PM requested) -->
<Avatar
id="language-menu"
src={$language === 'en' ? '/icons/flag-us.png' : '/icons/flag-zh.jpg'}
alt="Lang"
class="ml-2 cursor-pointer"
/>
<Avatar id="language-menu" src={$flagSrc} alt="$language" class="ml-2 cursor-pointer" />
<Dropdown triggeredBy="#language-menu" class="w-36">
<DropdownItem class="flex items-center" on:click={() => setLanguage('en')}>
<img src="/icons/flag-us.png" alt="English" class="mr-2 h-4 w-4" />
Expand Down
19 changes: 18 additions & 1 deletion src/lib/stores/language.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,20 @@
import { browser } from '$app/environment';
import { writable } from 'svelte/store';

export const language = writable<'en' | 'zh'>('en');
function getSavedLanguage() {
if (browser) {
const saved = localStorage.getItem('language');
if (saved === 'en' || saved === 'zh') {
return saved;
}
}
return 'en';
}

export const language = writable<'en' | 'zh'>(getSavedLanguage());

if (browser) {
language.subscribe((value) => {
localStorage.setItem('language', value);
});
}

0 comments on commit 160e7b1

Please sign in to comment.