2025-04-19 15:31:22 +08:00

71 lines
1.8 KiB
JavaScript

var ischangelanguage = window.localStorage.getItem("languageNow");
class I18n {
constructor() {
this.currentLang = ischangelanguage ? ischangelanguage : "en";
this.translations = translations;
}
// 修改t方法以处理嵌套的键
t(key) {
const keys = key.split('.');
let value = this.translations[this.currentLang];
// 遍历嵌套的键
for (const k of keys) {
if (value && value[k]) {
value = value[k];
} else {
return key; // 如果找不到翻译,返回原始键
}
}
return value;
}
setLanguage(lang) {
if (this.translations[lang]) {
this.currentLang = lang;
}
}
toggleLanguage() {
ischangelanguage = this.currentLang = this.currentLang === 'en' ? 'zh' : 'en';
window.localStorage.setItem("languageNow", this.currentLang)
this.translatePage();
}
translatePage() {
document.querySelectorAll('[data-i18n]').forEach(element => {
const key = element.getAttribute('data-i18n');
element.textContent = this.t(key);
});
}
}
// 创建i18n实例
const i18n = new I18n();
if (ischangelanguage == 'zh') {
console.log("进来了")
i18n.translatePage()
}
// 页面加载完成后初始化
document.addEventListener('DOMContentLoaded', () => {
// 初始化页面翻译
i18n.translatePage();
// 添加语言切换按钮事件监听
const langToggle = document.getElementById('langToggle');
if (langToggle) {
langToggle.addEventListener('click', () => {
i18n.toggleLanguage();
});
}
});
function mobileLang() {
i18n.toggleLanguage();
return ischangelanguage
}