71 lines
1.8 KiB
JavaScript
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
|
|
}
|
|
|