LanguageContext.tsx 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import React, { createContext, useState, useContext, ReactNode } from 'react';
  2. import { Language } from '../types.ts';
  3. interface LanguageContextType {
  4. language: Language;
  5. setLanguage: (lang: Language) => void;
  6. toggleLanguage: () => void;
  7. t: (key: string) => string;
  8. }
  9. const LanguageContext = createContext<LanguageContextType | undefined>(undefined);
  10. export const LanguageProvider: React.FC<{ children: ReactNode }> = ({ children }) => {
  11. const [language, setLanguage] = useState<Language>('zh');
  12. const toggleLanguage = () => {
  13. setLanguage(prev => prev === 'zh' ? 'en' : 'zh');
  14. };
  15. // Simple translation helper placeholder
  16. // Real translations will be handled by selecting data objects in components
  17. const t = (key: string) => key;
  18. return (
  19. <LanguageContext.Provider value={{ language, setLanguage, toggleLanguage, t }}>
  20. {children}
  21. </LanguageContext.Provider>
  22. );
  23. };
  24. export const useLanguage = () => {
  25. const context = useContext(LanguageContext);
  26. if (!context) {
  27. throw new Error('useLanguage must be used within a LanguageProvider');
  28. }
  29. return context;
  30. };