File size: 1,894 Bytes
03c1286
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// Shared navigation preferences across the project portal and leaderboard.
export function initSite({ onLanguageChange = () => {} } = {}) {
  let language = 'en', theme = 'light';
  try {
    language = localStorage.getItem('inferencenet-language') === 'zh' ? 'zh' : 'en';
    theme = localStorage.getItem('inferencenet-theme') === 'dark' ? 'dark' : 'light';
  } catch (_) { /* Storage is optional in embedded browsers. */ }
  const languageButton = document.getElementById('language');
  const themeButton = document.getElementById('theme');
  function render() {
    document.documentElement.lang = language === 'zh' ? 'zh-CN' : 'en';
    document.documentElement.dataset.theme = theme;
    document.querySelectorAll('[data-en][data-zh]').forEach(el => { el.textContent = el.dataset[language]; });
    languageButton.textContent = language === 'en' ? '中文' : 'EN';
    languageButton.setAttribute('aria-label', language === 'en' ? 'Switch to Chinese' : 'Switch to English');
    themeButton.setAttribute('aria-pressed', String(theme === 'dark'));
    document.getElementById('theme-label').textContent = language === 'zh' ? (theme === 'light' ? '浅色' : '深色') : (theme === 'light' ? 'Light' : 'Dark');
    themeButton.setAttribute('aria-label', language === 'zh' ? `切换到${theme === 'light' ? '深色' : '浅色'}主题` : `Switch to ${theme === 'light' ? 'dark' : 'light'} theme`);
  }
  languageButton.addEventListener('click', () => {
    language = language === 'en' ? 'zh' : 'en';
    try { localStorage.setItem('inferencenet-language', language); } catch (_) {}
    render();
    onLanguageChange(language);
  });
  themeButton.addEventListener('click', () => {
    theme = theme === 'light' ? 'dark' : 'light';
    try { localStorage.setItem('inferencenet-theme', theme); } catch (_) {}
    render();
  });
  render();
  return { get language() { return language; } };
}