PennController for IBEX › Forums › Support › Translation for the explanatory messages of eye-tracking module › Reply To: Translation for the explanatory messages of eye-tracking module
September 17, 2021 at 12:31 pm
#7272
Keymaster
Hello,
All this is fetched from a distant page: you won’t find its content locally in your project on the PCIbex Farm
As a general solution, you can create a new .js file in your project’s Scripts folder, with this at the top:
function textNodesUnder(el){
var n, a=[], walk=document.createTreeWalker(el,NodeFilter.SHOW_TEXT,null,false);
while(n=walk.nextNode()) a.push(n);
return a;
}
const targetNode = document.documentElement;
const config = { attributes: false, childList: true, subtree: true };
const replaceTexts = new Map();
const callback = function(mutationsList, observer) {
if (!document.body) return;
for(const mutation of mutationsList) {
if (mutation.type === 'childList') {
const textNodes = textNodesUnder(document.body);
var key, keys = replaceTexts.keys();
while ((key=keys.next()) && !key.done)
for (let node of textNodes){
if (node.textContent)
node.textContent = node.textContent.replace(key.value, replaceTexts.get(key.value));
}
}
}
};
const observer = new MutationObserver(callback);
observer.observe(targetNode, config);
Then you can list texts to replace below that piece of code this way:
replaceTexts.set(
"It looks like we were not able to precisely calibrate the tracker:",
"Il semble que nous n'avons pas pu calibrer le tracker précisément"
).set(
/You calibration score is (\d+) and you need at least (\d+)/,
"Votre score est de $1 et vous avez besoin d'au moins $2"
)
As you can see, you can pass a simple string (first set command) or a regular expression (second set command)
Jeremy