mirror of
https://github.com/swissmakers/fail2ban-ui.git
synced 2026-04-19 06:53:14 +02:00
Reorganize the whole javascript part as seperate files, for better maintainabillity
This commit is contained in:
46
pkg/web/static/js/translations.js
Normal file
46
pkg/web/static/js/translations.js
Normal file
@@ -0,0 +1,46 @@
|
||||
// Translation functions for Fail2ban UI
|
||||
"use strict";
|
||||
|
||||
// Loads translation JSON file for given language (e.g., en, de, etc.)
|
||||
function loadTranslations(lang) {
|
||||
$.getJSON('/locales/' + lang + '.json')
|
||||
.done(function(data) {
|
||||
translations = data;
|
||||
updateTranslations();
|
||||
})
|
||||
.fail(function() {
|
||||
console.error('Failed to load translations for language:', lang);
|
||||
});
|
||||
}
|
||||
|
||||
// Updates all elements with data-i18n attribute with corresponding translation.
|
||||
function updateTranslations() {
|
||||
$('[data-i18n]').each(function() {
|
||||
var key = $(this).data('i18n');
|
||||
if (translations[key]) {
|
||||
$(this).text(translations[key]);
|
||||
}
|
||||
});
|
||||
// Updates placeholders.
|
||||
$('[data-i18n-placeholder]').each(function() {
|
||||
var key = $(this).data('i18n-placeholder');
|
||||
if (translations[key]) {
|
||||
$(this).attr('placeholder', translations[key]);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function getTranslationsSettingsOnPageload() {
|
||||
return fetch('/api/settings')
|
||||
.then(function(res) { return res.json(); })
|
||||
.then(function(data) {
|
||||
var lang = data.language || 'en';
|
||||
$('#languageSelect').val(lang);
|
||||
loadTranslations(lang);
|
||||
})
|
||||
.catch(function(err) {
|
||||
console.error('Error loading initial settings:', err);
|
||||
loadTranslations('en');
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user