Adapters
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;
}