(function() { var btn = document.getElementById('lang-float'); var menu = document.getElementById('lang-menu'); var flagEl = document.getElementById('lang-current-flag'); var codeEl = document.getElementById('lang-current-code'); var items = document.querySelectorAll('.lang-item'); function getCookie(name) { var m = document.cookie.match(new RegExp('(?:^|;\\s*)' + name + '=([^;]*)')); return m ? decodeURIComponent(m[1]) : null; } function setCookie(name, value, days) { var d = new Date(); d.setTime(d.getTime() + (days * 24 * 60 * 60 * 1000)); document.cookie = name + '=' + value + '; path=/; expires=' + d.toUTCString() + '; samesite=lax'; } function getLang() { // Priority: URL param > cookie > 'en' var url = new URL(window.location.href); var p = url.searchParams.get('lang'); if (p) return p; var c = getCookie('site_lang'); if (c) return c; return 'en'; } var T = null; var LANGS = null; var current = getLang(); // Validate if (!T[current]) current = 'en'; // Highlight current + set button label function paint() { for (var i = 0; i < items.length; i++) { var code = items[i].getAttribute('data-lang'); if (code === current) { items[i].classList.add('current'); flagEl.innerHTML = items[i].querySelector('.flag').innerHTML; codeEl.textContent = code.toUpperCase(); } else { items[i].classList.remove('current'); } } document.documentElement.lang = (current === 'zh') ? 'zh-CN' : (current === 'ja' ? 'ja' : current); } paint(); // Click switch for (var i = 0; i < items.length; i++) { items[i].onclick = function(e) { e.preventDefault(); var lang = this.getAttribute('data-lang'); setCookie('site_lang', lang, 365); var url = new URL(window.location.href); url.searchParams.set('lang', lang); window.location.href = url.toString(); return false; }; } // Toggle menu btn.onclick = function(e) { e.stopPropagation(); btn.classList.toggle('open'); menu.classList.toggle('open'); }; document.addEventListener('click', function(e) { if (!btn.contains(e.target) && !menu.contains(e.target)) { btn.classList.remove('open'); menu.classList.remove('open'); } }); document.addEventListener('keydown', function(e) { if (e.key === 'Escape') { btn.classList.remove('open'); menu.classList.remove('open'); } }); // Translate page text function translatePage() { if (current === 'en') return; // No translation needed for English (source language) var dict = T[current]; if (!dict) return; var walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT, { acceptNode: function(node) { if (!node.nodeValue || !node.nodeValue.trim()) return NodeFilter.FILTER_REJECT; var p = node.parentNode; if (!p) return NodeFilter.FILTER_REJECT; var tag = p.tagName; if (tag === 'SCRIPT' || tag === 'STYLE' || tag === 'CODE' || tag === 'PRE' || tag === 'NOSCRIPT') return NodeFilter.FILTER_REJECT; return NodeFilter.FILTER_ACCEPT; } }); var node; while (node = walker.nextNode()) { var txt = node.nodeValue; var trimmed = txt.trim(); if (!trimmed || trimmed.length > 250) continue; if (dict[trimmed]) { node.nodeValue = txt.replace(trimmed, dict[trimmed]); } } if (dict[document.title]) document.title = dict[document.title]; } if (document.readyState === 'complete') { translatePage(); } else { window.addEventListener('load', function() { setTimeout(translatePage, 100); }); } })(); https://flanson.com/wp-sitemap-posts-post-1.xmlhttps://flanson.com/wp-sitemap-posts-page-1.xmlhttps://flanson.com/wp-sitemap-posts-product-1.xmlhttps://flanson.com/wp-sitemap-taxonomies-category-1.xml