Manus
Checkpoint: Complete multilingual Impulso Digital website with full i18n support. Includes language switcher component in header with Portuguese (π§π·), English (πΊπΈ), and Spanish (πͺπΈ) options. All content translated across all sections: Hero, Aurora Ecosystem, Drex Digital Partnership, Digital Sovereignty, Consumer Journey, and Contact. Language preference saved to localStorage. Maintains futuristic cyberpunk design with neon accents, interactive slides, premium icons, and institutional messaging. Fully responsive and optimized for government and investor presentations.
b2b0280 | import { createContext, useContext, useState, useEffect, ReactNode } from 'react'; | |
| import { Language } from '@/lib/translations'; | |
| interface LanguageContextType { | |
| language: Language; | |
| setLanguage: (lang: Language) => void; | |
| } | |
| const LanguageContext = createContext<LanguageContextType | undefined>(undefined); | |
| export function LanguageProvider({ children }: { children: ReactNode }) { | |
| const [language, setLanguageState] = useState<Language>(() => { | |
| // Try to get from localStorage | |
| const saved = localStorage.getItem('language'); | |
| if (saved === 'pt' || saved === 'en' || saved === 'es') { | |
| return saved; | |
| } | |
| // Default to English | |
| return 'en'; | |
| }); | |
| const setLanguage = (lang: Language) => { | |
| setLanguageState(lang); | |
| localStorage.setItem('language', lang); | |
| }; | |
| useEffect(() => { | |
| // Set HTML lang attribute for accessibility | |
| document.documentElement.lang = language; | |
| }, [language]); | |
| return ( | |
| <LanguageContext.Provider value={{ language, setLanguage }}> | |
| {children} | |
| </LanguageContext.Provider> | |
| ); | |
| } | |
| export function useLanguage() { | |
| const context = useContext(LanguageContext); | |
| if (context === undefined) { | |
| throw new Error('useLanguage must be used within a LanguageProvider'); | |
| } | |
| return context; | |
| } | |