diff --git a/src/mcp_feedback_enhanced/web/static/js/i18n.js b/src/mcp_feedback_enhanced/web/static/js/i18n.js index 40dc4e5..8bb2257 100644 --- a/src/mcp_feedback_enhanced/web/static/js/i18n.js +++ b/src/mcp_feedback_enhanced/web/static/js/i18n.js @@ -321,10 +321,10 @@ class I18nManager { } updateAudioSelectTranslations() { - // 更新音效選擇器的翻譯 + // 更新音效設定區域的所有翻譯 if (window.feedbackApp && window.feedbackApp.audioSettingsUI) { - if (typeof window.feedbackApp.audioSettingsUI.updateAudioSelectTranslations === 'function') { - window.feedbackApp.audioSettingsUI.updateAudioSelectTranslations(); + if (typeof window.feedbackApp.audioSettingsUI.updateTranslations === 'function') { + window.feedbackApp.audioSettingsUI.updateTranslations(); } } } diff --git a/src/mcp_feedback_enhanced/web/static/js/modules/audio/audio-settings-ui.js b/src/mcp_feedback_enhanced/web/static/js/modules/audio/audio-settings-ui.js index bc24e70..19d197e 100644 --- a/src/mcp_feedback_enhanced/web/static/js/modules/audio/audio-settings-ui.js +++ b/src/mcp_feedback_enhanced/web/static/js/modules/audio/audio-settings-ui.js @@ -58,7 +58,10 @@ this.createUI(); this.setupEventListeners(); this.refreshUI(); - + + // 主動應用翻譯到新創建的元素 + this.applyInitialTranslations(); + console.log('✅ AudioSettingsUI 初始化完成'); }; @@ -637,6 +640,48 @@ + /** + * 應用初始翻譯到新創建的元素 + */ + AudioSettingsUI.prototype.applyInitialTranslations = function() { + if (!this.container) return; + + // 對容器內所有有 data-i18n 屬性的元素應用翻譯 + const elements = this.container.querySelectorAll('[data-i18n]'); + elements.forEach(element => { + const key = element.getAttribute('data-i18n'); + const translation = this.t(key); + if (translation && translation !== key) { + element.textContent = translation; + } + }); + + // 對有 data-i18n-placeholder 屬性的元素應用翻譯 + const placeholderElements = this.container.querySelectorAll('[data-i18n-placeholder]'); + placeholderElements.forEach(element => { + const key = element.getAttribute('data-i18n-placeholder'); + const translation = this.t(key); + if (translation && translation !== key) { + element.placeholder = translation; + } + }); + + console.log('🌐 AudioSettingsUI 初始翻譯已應用'); + }; + + /** + * 更新所有翻譯(包括靜態文字和動態內容) + */ + AudioSettingsUI.prototype.updateTranslations = function() { + // 更新所有靜態文字元素 + this.applyInitialTranslations(); + + // 更新音效選擇器的翻譯 + this.updateAudioSelectTranslations(); + + console.log('🌐 AudioSettingsUI 翻譯已更新'); + }; + /** * 更新音效選擇器的翻譯 */