MCPcopy Create free account
hub / github.com/AsyncFuncAI/deepwiki-open / loadLanguage

Function loadLanguage

src/contexts/LanguageContext.tsx:103–146  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

101 useEffect(() => {
102 if (Object.keys(supportedLanguages).length > 0) {
103 const loadLanguage = async () => {
104 try {
105 // Only access localStorage in the browser
106 let storedLanguage;
107 if (typeof window !== 'undefined') {
108 storedLanguage = localStorage.getItem('language');
109
110 // If no language is stored, detect browser language
111 if (!storedLanguage) {
112 console.log('No language in localStorage, detecting browser language');
113 storedLanguage = detectBrowserLanguage();
114
115 // Store the detected language
116 localStorage.setItem('language', storedLanguage);
117 }
118 } else {
119 console.log('Running on server-side, using default language');
120 storedLanguage = 'en';
121 }
122
123 console.log('Supported languages loaded, validating language:', storedLanguage);
124 const validLanguage = Object.keys(supportedLanguages).includes(storedLanguage as any) ? storedLanguage : defaultLanguage;
125 console.log('Valid language determined:', validLanguage);
126
127 // Load messages for the language
128 const langMessages = (await import(`../messages/${validLanguage}.json`)).default;
129
130 setLanguageState(validLanguage);
131 setMessages(langMessages);
132
133 // Update HTML lang attribute (only in browser)
134 if (typeof document !== 'undefined') {
135 document.documentElement.lang = validLanguage;
136 }
137 } catch (error) {
138 console.error('Failed to load language:', error);
139 // Fallback to English
140 console.log('Falling back to English due to error');
141 const enMessages = (await import('../messages/en.json')).default;
142 setMessages(enMessages);
143 } finally {
144 setIsLoading(false);
145 }
146 };
147
148 loadLanguage();
149 }

Callers 1

LanguageProviderFunction · 0.85

Calls 1

detectBrowserLanguageFunction · 0.85

Tested by

no test coverage detected