Files
taiji-pda-v0/contexts/language-context.tsx
T
2025-12-22 08:01:53 +00:00

49 lines
1.2 KiB
TypeScript

"use client"
import type React from "react"
import { createContext, useContext, useState, useEffect } from "react"
type Language = "zh" | "en"
interface LanguageContextType {
language: Language
setLanguage: (lang: Language) => void
t: (zh: string, en: string) => string
}
const LanguageContext = createContext<LanguageContextType | undefined>(undefined)
export function LanguageProvider({ children }: { children: React.ReactNode }) {
const [language, setLanguage] = useState<Language>("zh")
useEffect(() => {
const savedLang = localStorage.getItem("language") as Language
if (savedLang) {
setLanguage(savedLang)
}
}, [])
const handleSetLanguage = (lang: Language) => {
setLanguage(lang)
localStorage.setItem("language", lang)
}
const t = (zh: string, en: string) => {
return language === "zh" ? zh : en
}
return (
<LanguageContext.Provider value={{ language, setLanguage: handleSetLanguage, t }}>
{children}
</LanguageContext.Provider>
)
}
export function useLanguage() {
const context = useContext(LanguageContext)
if (!context) {
throw new Error("useLanguage must be used within a LanguageProvider")
}
return context
}