160 lines
5.4 KiB
JavaScript
160 lines
5.4 KiB
JavaScript
|
const headerLangData = {
|
|||
|
zh: {
|
|||
|
nav: {
|
|||
|
home: "首页",
|
|||
|
business: "主营业务",
|
|||
|
products: "产品案例",
|
|||
|
support: "技术支持",
|
|||
|
future: "展望未来",
|
|||
|
about: "关于我们"
|
|||
|
},
|
|||
|
btn: "English",
|
|||
|
logo: "../imgs/svg/logo.svg"
|
|||
|
},
|
|||
|
en: {
|
|||
|
nav: {
|
|||
|
home: "Home",
|
|||
|
business: "Business",
|
|||
|
products: "Products",
|
|||
|
support: "Support",
|
|||
|
future: "Future",
|
|||
|
about: "About Us"
|
|||
|
},
|
|||
|
btn: "简体中文",
|
|||
|
logo: "../imgs/svg/logo_en.svg"
|
|||
|
}
|
|||
|
};
|
|||
|
|
|||
|
// 语言显示更新函数
|
|||
|
function updateHeaderLanguageDisplay(lang) {
|
|||
|
const currentFlag = document.getElementById('current-flag');
|
|||
|
const currentLangText = document.getElementById('current-lang');
|
|||
|
|
|||
|
if (currentFlag && currentLangText) {
|
|||
|
// 检查图片路径是否需要调整
|
|||
|
const isRootPage = window.location.pathname.includes('index.html') ||
|
|||
|
window.location.pathname.endsWith('/');
|
|||
|
const imgPathPrefix = isRootPage ? './imgs/flags/' : '../imgs/flags/';
|
|||
|
|
|||
|
if (lang === 'en') {
|
|||
|
currentFlag.src = `${imgPathPrefix}en.svg`;
|
|||
|
currentLangText.textContent = 'English';
|
|||
|
} else {
|
|||
|
currentFlag.src = `${imgPathPrefix}zh.svg`;
|
|||
|
currentLangText.textContent = '简体中文';
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
function setHeaderLang(lang) {
|
|||
|
const data = headerLangData[lang];
|
|||
|
|
|||
|
// 导航文本
|
|||
|
const navHome = document.getElementById("nav-home");
|
|||
|
if (navHome) navHome.textContent = data.nav.home;
|
|||
|
|
|||
|
const navBusiness = document.getElementById("nav-business");
|
|||
|
if (navBusiness) navBusiness.textContent = data.nav.business;
|
|||
|
|
|||
|
const navProducts = document.getElementById("nav-products");
|
|||
|
if (navProducts) navProducts.textContent = data.nav.products;
|
|||
|
|
|||
|
const navSupport = document.getElementById("nav-support");
|
|||
|
if (navSupport) navSupport.textContent = data.nav.support;
|
|||
|
|
|||
|
const navFuture = document.getElementById("nav-future");
|
|||
|
if (navFuture) navFuture.textContent = data.nav.future;
|
|||
|
|
|||
|
const navAbout = document.getElementById("nav-about");
|
|||
|
if (navAbout) navAbout.textContent = data.nav.about;
|
|||
|
|
|||
|
// logo
|
|||
|
// const logoImg = document.getElementById("logo-img");
|
|||
|
// if (logoImg) logoImg.src = data.logo;
|
|||
|
|
|||
|
// 更新语言显示
|
|||
|
updateHeaderLanguageDisplay(lang);
|
|||
|
}
|
|||
|
|
|||
|
// 处理语言切换
|
|||
|
function handleHeaderLangToggle(lang) {
|
|||
|
window.currentLang = lang;
|
|||
|
localStorage.setItem('siteLang', lang);
|
|||
|
setHeaderLang(lang);
|
|||
|
|
|||
|
// 如果有页面特定的语言处理函数,也调用它
|
|||
|
if (typeof applyLang === 'function') {
|
|||
|
applyLang(lang);
|
|||
|
}
|
|||
|
|
|||
|
// 如果在aboutUs页面,还需要更新地图信息
|
|||
|
if (typeof updateMapInfo === 'function') {
|
|||
|
updateMapInfo(lang);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
document.addEventListener('DOMContentLoaded', () => {
|
|||
|
let currentLang = localStorage.getItem('siteLang') || "zh";
|
|||
|
|
|||
|
// 初始化语言
|
|||
|
setHeaderLang(currentLang);
|
|||
|
|
|||
|
// 获取语言切换相关的DOM元素
|
|||
|
const langBtn = document.getElementById('lang-btn');
|
|||
|
const langDropdown = document.getElementById('lang-dropdown');
|
|||
|
const langItems = document.querySelectorAll('.lang-item');
|
|||
|
|
|||
|
if (langBtn) {
|
|||
|
// 切换下拉菜单显示/隐藏
|
|||
|
langBtn.addEventListener('click', function(e) {
|
|||
|
e.stopPropagation(); // 阻止事件冒泡
|
|||
|
langDropdown.classList.toggle('show');
|
|||
|
const arrow = langBtn.querySelector('.arrow');
|
|||
|
if (arrow) {
|
|||
|
arrow.style.transform = langDropdown.classList.contains('show') ? 'rotate(180deg)' : 'rotate(0)';
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
// 点击其他区域关闭下拉菜单
|
|||
|
document.addEventListener('click', function(event) {
|
|||
|
if (!event.target.closest('.lang-dropdown') && langDropdown) {
|
|||
|
langDropdown.classList.remove('show');
|
|||
|
const arrow = langBtn.querySelector('.arrow');
|
|||
|
if (arrow) {
|
|||
|
arrow.style.transform = 'rotate(0)';
|
|||
|
}
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
// 语言选择事件
|
|||
|
langItems.forEach(item => {
|
|||
|
item.addEventListener('click', function() {
|
|||
|
const lang = this.getAttribute('data-lang');
|
|||
|
if (lang !== currentLang) {
|
|||
|
currentLang = lang;
|
|||
|
handleHeaderLangToggle(lang);
|
|||
|
}
|
|||
|
langDropdown.classList.remove('show');
|
|||
|
const arrow = langBtn.querySelector('.arrow');
|
|||
|
if (arrow) {
|
|||
|
arrow.style.transform = 'rotate(0)';
|
|||
|
}
|
|||
|
});
|
|||
|
});
|
|||
|
} else {
|
|||
|
// 兼容旧版切换按钮
|
|||
|
const langToggle = document.getElementById("lang-toggle");
|
|||
|
if (langToggle) {
|
|||
|
langToggle.addEventListener("click", () => {
|
|||
|
currentLang = currentLang === "zh" ? "en" : "zh";
|
|||
|
handleHeaderLangToggle(currentLang);
|
|||
|
});
|
|||
|
langToggle.addEventListener("keydown", e => {
|
|||
|
if (e.key === "Enter" || e.key === " ") {
|
|||
|
currentLang = currentLang === "zh" ? "en" : "zh";
|
|||
|
handleHeaderLangToggle(currentLang);
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
}
|
|||
|
});
|