- 删除资源管理中的假数据,改为从API获取 - 添加删除Agent和模型供应商功能 - 完善创建渠道、资源管理、审批申请等功能的API集成 - 修复计费统计功能,接入后端API - 添加缺失API接口清单文档 - 优化API响应格式处理,支持多种响应结构 - 修复审批申请对话框,添加供应商申请审批功能
51 lines
1.4 KiB
TypeScript
51 lines
1.4 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 }) {
|
|
// 始终从 "zh" 开始,确保服务器端和客户端初始状态一致
|
|
const [language, setLanguage] = useState<Language>("zh")
|
|
|
|
useEffect(() => {
|
|
// 只在客户端挂载后读取 localStorage
|
|
const savedLang = localStorage.getItem("language") as Language
|
|
if (savedLang && (savedLang === "zh" || savedLang === "en")) {
|
|
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
|
|
}
|