mirror of
https://github.com/amiayweb/Hytale-F2P.git
synced 2026-02-26 07:21:46 -03:00
* - Implemented i18n. - Updated UI elements to use localized strings for various messages and confirmations. - Added language selection functionality in settings with appropriate event handling. - Created English localization file with translations for all new strings. - Updated backend to save and load user-selected language preferences. * Add Spanish localization for the GUI * Add Portuguese (Brazil) localization for the GUI * update main branch to release/v2.0.2b (#86) * add more linux pkgs, create auto-release and pre-release feature for Github Actions * removed package-lock from gitignore * update .gitignore for local build * add package-lock.json to maintain stability development * update version to 2.0.2b also add deps for rpm and arch * update 2.0.2b: add arm64 support, product and executable name, maintainers; remove snap; * update 2.0.2b: add latest.yml for win & linux, arm64 support; remove snap * fix release build naming * Prepare release v2.0.2b * Update localization for game repair and GPU settings Added new localization entries for game repair and GPU preferences. * Update spanish localization for game repair and GPU settings * Update portuguese (brazil) for game repair and GPU settings * Update localization for system logs in English, Spanish, and Portuguese --------- Co-authored-by: Fazri Gading <fazrigading@gmail.com>
82 lines
2.4 KiB
JavaScript
82 lines
2.4 KiB
JavaScript
import './ui.js';
|
|
import './install.js';
|
|
import './launcher.js';
|
|
import './news.js';
|
|
import './mods.js';
|
|
import './players.js';
|
|
import './chat.js';
|
|
import './settings.js';
|
|
import './logs.js';
|
|
|
|
// Initialize i18n immediately (before DOMContentLoaded)
|
|
let i18nInitialized = false;
|
|
(async () => {
|
|
const savedLang = await window.electronAPI?.loadLanguage();
|
|
await i18n.init(savedLang);
|
|
i18nInitialized = true;
|
|
|
|
// Update language selector if DOM is already loaded
|
|
if (document.readyState === 'complete' || document.readyState === 'interactive') {
|
|
updateLanguageSelector();
|
|
}
|
|
})();
|
|
|
|
function updateLanguageSelector() {
|
|
const langSelect = document.getElementById('languageSelect');
|
|
if (langSelect) {
|
|
// Clear existing options
|
|
langSelect.innerHTML = '';
|
|
|
|
const languages = i18n.getAvailableLanguages();
|
|
const currentLang = i18n.getCurrentLanguage();
|
|
|
|
languages.forEach(lang => {
|
|
const option = document.createElement('option');
|
|
option.value = lang.code;
|
|
option.textContent = lang.name;
|
|
if (lang.code === currentLang) {
|
|
option.selected = true;
|
|
}
|
|
langSelect.appendChild(option);
|
|
});
|
|
|
|
// Handle language change (add listener only once)
|
|
if (!langSelect.hasAttribute('data-listener-added')) {
|
|
langSelect.addEventListener('change', async (e) => {
|
|
await i18n.setLanguage(e.target.value);
|
|
});
|
|
langSelect.setAttribute('data-listener-added', 'true');
|
|
}
|
|
}
|
|
}
|
|
|
|
document.addEventListener('DOMContentLoaded', () => {
|
|
// Populate language selector (wait for i18n if needed)
|
|
if (i18nInitialized) {
|
|
updateLanguageSelector();
|
|
}
|
|
|
|
// Discord notification
|
|
const notification = document.getElementById('discordNotification');
|
|
if (notification) {
|
|
const dismissed = localStorage.getItem('discordNotificationDismissed');
|
|
if (!dismissed) {
|
|
setTimeout(() => {
|
|
notification.style.display = 'flex';
|
|
}, 3000);
|
|
} else {
|
|
notification.style.display = 'none';
|
|
}
|
|
}
|
|
});
|
|
|
|
window.closeDiscordNotification = function() {
|
|
const notification = document.getElementById('discordNotification');
|
|
if (notification) {
|
|
notification.classList.add('hidden');
|
|
setTimeout(() => {
|
|
notification.style.display = 'none';
|
|
}, 300);
|
|
}
|
|
localStorage.setItem('discordNotificationDismissed', 'true');
|
|
}; |