document.addEventListener('DOMContentLoaded', () => {
I18n.init();
I18n.updatePageContent();
updateSlashCommands();
updateLanguageMenu();
});
function updateSlashCommands() {
SLASH_COMMANDS.forEach(cmd => {
const key = 'cmd.' + cmd.cmd.replace(/\s+/g, '').replace(/\//g, '') + '.desc';
const translated = I18n.t(key);
if (translated !== key) {
cmd.desc = translated;
}
});
}
function toggleLanguageMenu() {
const menu = document.getElementById('language-menu');
if (menu) {
menu.style.display = menu.style.display === 'none' ? 'block' : 'none';
}
}
function switchLanguage(lang) {
if (I18n.setLanguage(lang)) {
updateSlashCommands();
updateLanguageMenu();
if (typeof renderProviders === 'function' && typeof _configLoaded !== 'undefined' && _configLoaded) {
renderProviders();
}
if (typeof loadInferenceSettings === 'function') {
var inferencePanel = document.getElementById('settings-inference');
if (inferencePanel && inferencePanel.classList.contains('active')) {
loadInferenceSettings();
}
}
const menu = document.getElementById('language-menu');
if (menu) {
menu.style.display = 'none';
}
showToast(I18n.t('language.switch') + ': ' + (lang === 'zh-CN' ? '简体中文' : 'English'));
}
}
function updateLanguageMenu() {
const currentLang = I18n.getCurrentLang();
document.querySelectorAll('.language-option').forEach(option => {
if (option.getAttribute('data-lang') === currentLang) {
option.classList.add('active');
} else {
option.classList.remove('active');
}
});
}
document.addEventListener('click', (e) => {
if (!e.target.closest('.language-switcher')) {
const menu = document.getElementById('language-menu');
if (menu) {
menu.style.display = 'none';
}
}
});