(() => { const root = document.documentElement; const title = { cn: 'DBC 世界杯竞猜官网|新材料应用创新平台 · BIOTEN 博碳生物', en: 'DBC | Advanced-Material Application Platform · BIOTEN' }; const description = { cn: '世界杯竞猜官网连接材料研发、应用工程、验证交付与产业协同;BIOTEN 围绕 PHA 水性材料开展纸基包装、农业科技、日化个护与水性涂层应用开发。', en: 'DBC connects materials R&D, application engineering, validation delivery and industrial collaboration. BIOTEN develops PHA waterborne-material applications across paper packaging, agricultural technology, personal care and waterborne coatings.' }; let applying = false; function isEnglish() { return root.dataset.lang === 'en' || root.lang.toLowerCase().startsWith('en'); } function applyLanguage() { if (applying) return; applying = true; const language = isEnglish() ? 'en' : 'cn'; document.querySelectorAll('[data-nav-cn][data-nav-en]').forEach((element) => { const value = element.dataset[language === 'en' ? 'navEn' : 'navCn']; if (typeof value === 'string' && element.textContent !== value) { element.textContent = value; } }); document.querySelectorAll('[data-aria-cn][data-aria-en]').forEach((element) => { const value = element.dataset[language === 'en' ? 'ariaEn' : 'ariaCn']; if (value && element.getAttribute('aria-label') !== value) element.setAttribute('aria-label', value); }); document.querySelectorAll('[data-alt-cn][data-alt-en]').forEach((element) => { const value = element.dataset[language === 'en' ? 'altEn' : 'altCn']; if (value && element.getAttribute('alt') !== value) element.setAttribute('alt', value); }); if (document.title !== title[language]) document.title = title[language]; const metaDescription = document.querySelector('meta[name="description"]'); if (metaDescription && metaDescription.content !== description[language]) { metaDescription.content = description[language]; } applying = false; } function scheduleApply() { window.requestAnimationFrame(applyLanguage); window.setTimeout(applyLanguage, 60); window.setTimeout(applyLanguage, 260); } const languageObserver = new MutationObserver(scheduleApply); languageObserver.observe(root, { attributes: true, attributeFilter: ['lang', 'data-lang'] }); if (document.head) { const headObserver = new MutationObserver(scheduleApply); headObserver.observe(document.head, { childList: true, characterData: true, subtree: true }); } document.addEventListener('click', (event) => { if (event.target.closest('.language-toggle, [data-language-toggle], [aria-label*="English"], [aria-label*="中文"]')) { scheduleApply(); } }); if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', scheduleApply, { once: true }); } else { scheduleApply(); } })();