Skip to content

Instantly share code, notes, and snippets.

@el3um4s
Created October 19, 2022 10:33
Show Gist options
  • Save el3um4s/cbeb3bb1bec50a9209a9020ea7dbfbd8 to your computer and use it in GitHub Desktop.
Save el3um4s/cbeb3bb1bec50a9209a9020ea7dbfbd8 to your computer and use it in GitHub Desktop.
MEDIUM - Implementing Multi Language Without Any Library in Svelte - 05
import { get, set, createStore } from "idb-keyval";
import type { LangSupported } from "./Languages";
import { isOfTypeLangSupported } from "./Languages";
const customDbName = "idb-lang";
const customStoreName = "idb-lang-store";
const customStore = createStore(customDbName, customStoreName);
export const setLang = async (l: LangSupported) => {
await set("lang", l, customStore);
};
export const getLang = async () => {
const lang = await get("lang", customStore);
let l = getBrowserLanguage();
if (lang === undefined) {
await setLang(l);
return l;
}
return lang;
};
function getBrowserLanguage(): LangSupported {
const lang = navigator.language.split("-")[0].toLowerCase();
const result = isOfTypeLangSupported(lang) ? lang : "en";
return result;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment