mirror of
https://github.com/eliasstepanik/vdo.ninja.git
synced 2026-01-16 16:18:30 +00:00
65 lines
1.9 KiB
JavaScript
65 lines
1.9 KiB
JavaScript
// Copy and paste this code into OBS.Ninja's developer's console to generate new Translation files
|
|
|
|
function downloadTranslation(filename, trans={}){ // downloads the current translation to a file
|
|
allItems.forEach(function(ele){
|
|
trans[ele.dataset.translate] = ele.innerHTML;
|
|
});
|
|
|
|
var textDoc = JSON.stringify(trans, null, 2);
|
|
|
|
var hiddenElement = document.createElement('a');
|
|
hiddenElement.href = 'data:text/html,' + encodeURIComponent(textDoc);
|
|
hiddenElement.target = '_blank';
|
|
hiddenElement.download = filename+".json";
|
|
hiddenElement.click();
|
|
return trans;
|
|
}
|
|
|
|
|
|
function updateTranslation(filename){ // updates the website with a specific translation
|
|
var request = new XMLHttpRequest();
|
|
request.open('GET', "./translations/"+filename+'.json?'+(Math.random()*100).toString(), false); // `false` makes the request synchronous
|
|
request.send(null);
|
|
|
|
if (request.status !== 200) {
|
|
return;
|
|
}
|
|
try{
|
|
data = JSON.parse(request.responseText);
|
|
} catch(e){
|
|
console.log(request.responseText);
|
|
console.error(e);
|
|
return false;
|
|
}
|
|
allItems.forEach(function(ele){
|
|
if (ele.dataset.translate in data){
|
|
ele.innerHTML = data[ele.dataset.translate];
|
|
}
|
|
});
|
|
return [filename, data];
|
|
}
|
|
|
|
var updateList = ["en", "de", "es", "ru", "fr", "pl", "ja", "ar", "it", "nl", "pt"]; // list of languages to update. Update this if you add a new language.
|
|
var allItems = document.querySelectorAll('[data-translate]');
|
|
var defaultTrans = {};
|
|
allItems.forEach(function(ele){
|
|
defaultTrans[ele.dataset.translate] = ele.innerHTML;
|
|
});
|
|
|
|
console.log(defaultTrans);
|
|
|
|
for (var i in updateList){
|
|
var ln = updateList[i];
|
|
res = updateTranslation(ln);
|
|
if (res==false){continue;}
|
|
if (res[0]){
|
|
console.log(res[0]);
|
|
downloadTranslation(res[0], res[1]);
|
|
}
|
|
|
|
allItems.forEach(function(ele){
|
|
if (ele.dataset.translate in defaultTrans){
|
|
ele.innerHTML = defaultTrans[ele.dataset.translate];
|
|
}
|
|
});
|
|
} |