alienet's picture
first commit
e636070
const translations = {
en: {
start: "Start",
pause: "Pause",
stop: "Stop",
exportStory: "Export Story",
switchLang: "中/EN",
inputPlaceholder: "Enter your message",
status: "Status",
settings: "Settings",
scenes: "Scenes",
scenesList: "Scenes",
currentEvent: "Current Event",
currentLocation: "Current Location",
currentGroup: "Current Group",
map: "Map",
characterProfiles: "Character Profiles",
apiProvider: "API Provider:",
model: "Model:",
saveSettings: "Save Settings"
},
zh: {
start: "开始",
pause: "暂停",
stop: "停止",
exportStory: "输出故事",
switchLang: "中/EN",
inputPlaceholder: "输入你的消息",
status: "状态",
settings: "设定",
scenes: "场景",
scenesList: "场景列表",
currentEvent: "当前事件",
currentLocation: "当前地点",
currentGroup: "当前分组",
map: "地图",
characterProfiles: "角色档案",
apiProvider: "API提供商:",
model: "模型:",
saveSettings: "保存设置"
}
};
class I18nManager {
constructor() {
this.currentLang = 'zh';
this.init();
}
init() {
this.bindLanguageButton();
this.updateTexts();
}
bindLanguageButton() {
const langBtn = document.getElementById('languageBtn');
langBtn.addEventListener('click', () => {
this.currentLang = this.currentLang === 'zh' ? 'en' : 'zh';
this.updateTexts();
this.saveLanguagePreference();
});
}
updateTexts() {
const elements = document.querySelectorAll('[data-i18n]');
elements.forEach(element => {
const key = element.getAttribute('data-i18n');
if (translations[this.currentLang][key]) {
element.textContent = translations[this.currentLang][key];
}
});
// 更新输入框占位符
const textarea = document.querySelector('.input-area textarea');
textarea.placeholder = translations[this.currentLang].inputPlaceholder;
// 触发语言变更事件
window.dispatchEvent(new CustomEvent('language-changed'));
}
saveLanguagePreference() {
localStorage.setItem('preferredLanguage', this.currentLang);
}
loadLanguagePreference() {
const savedLang = localStorage.getItem('preferredLanguage');
if (savedLang) {
this.currentLang = savedLang;
this.updateTexts();
}
}
}
// 初始化语言管理器
document.addEventListener('DOMContentLoaded', () => {
window.i18n = new I18nManager();
window.i18n.loadLanguagePreference();
});