forked from UKSOURCE/ipv6
42 lines
919 B
TypeScript
42 lines
919 B
TypeScript
"use client";
|
|
|
|
import React, { createContext, useContext, useEffect, useState } from "react";
|
|
|
|
export type Lang = "en" | "vi";
|
|
|
|
interface LanguageContextValue {
|
|
lang: Lang;
|
|
setLang: (l: Lang) => void;
|
|
}
|
|
|
|
const LanguageContext = createContext<LanguageContextValue>({
|
|
lang: "vi",
|
|
setLang: () => {},
|
|
});
|
|
|
|
export function LanguageProvider({ children }: { children: React.ReactNode }) {
|
|
const [lang, setLangState] = useState<Lang>("vi");
|
|
|
|
useEffect(() => {
|
|
const saved = localStorage.getItem("ipv6_lang") as Lang | null;
|
|
if (saved === "vi" || saved === "en") {
|
|
setLangState(saved);
|
|
}
|
|
}, []);
|
|
|
|
const setLang = (l: Lang) => {
|
|
setLangState(l);
|
|
localStorage.setItem("ipv6_lang", l);
|
|
};
|
|
|
|
return (
|
|
<LanguageContext.Provider value={{ lang, setLang }}>
|
|
{children}
|
|
</LanguageContext.Provider>
|
|
);
|
|
}
|
|
|
|
export function useLanguage() {
|
|
return useContext(LanguageContext);
|
|
}
|