Translating registration form texts on the old event site
Last updated: March 3, 2026
The old event site’s registration form displays UI texts and error messages in English only. There is no built-in translation support for these texts, but you can use a JavaScript snippet to replace them with your own language.
This is a workaround for the old event site. If you need help, contact support@videosync.fi.
How to add the snippet
- Open the code editor in your event
-
Add the snippet below into the JavaScript section
-
Press Save
The snippet
Modify the translations in the snippet to match your language. Keep everything else exactly as it is.
<script>
/*
USAGE INSTRUCTIONS
1. Add this JavaScript snippet in custom JavaScript of the event.
2. Modify translations if needed. Keep other parts exactly as they are.
MODIFICATION INSTRUCTIONS
You can modify translations by editing the text inside quotes after the colon.
You can also add missing texts by adding a new row with this syntax:
"Original text": "Translated text",
Make sure that a colon is between the texts, quotes match, and there is a comma at the end.
*/
(function () {
const translations = {
// STATIC TEXTS
"Please register": "Ilmoittaudu",
"Register": "Rekisteröidy",
"Required fields": "Pakolliset kentät",
// DYNAMIC ERROR TRANSLATIONS
"This field is required.": "Tämä kenttä on pakollinen.",
"The email address is invalid.": "Sähköpostiosoite on virheellinen.",
"Failed to submit registration. Please check the fields above.": "Rekisteröinti epäonnistui. Tarkista kentät yllä.",
"Thank you for registering.": "Kiitos ilmoittautumisesta.",
"We have sent you a personal participation link to access this event.": "Olemme lähettäneet sinulle henkilökohtaisen osallistumislinkin tapahtumaan."
};
function translateText(text) {
return translations[text.trim()] || null;
}
function translateNodeText(node) {
const newText = translateText(node.textContent);
if (newText) node.textContent = newText;
}
function traverseAndTranslate(root = document.body) {
const treeWalker = document.createTreeWalker(
root,
NodeFilter.SHOW_TEXT,
{
acceptNode: (node) => {
const translated = translateText(node.textContent);
return translated ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;
}
}
);
let currentNode;
while ((currentNode = treeWalker.nextNode())) {
translateNodeText(currentNode);
}
}
function observeDOMChanges() {
const observer = new MutationObserver((mutations) => {
for (const mutation of mutations) {
mutation.addedNodes.forEach((node) => {
if (node.nodeType === Node.TEXT_NODE) {
translateNodeText(node);
} else if (node.nodeType === Node.ELEMENT_NODE) {
traverseAndTranslate(node);
}
});
}
});
observer.observe(document.body, {
childList: true,
subtree: true
});
}
// Initial run
traverseAndTranslate();
// Watch for dynamic changes
observeDOMChanges();
})();
</script> Can't find what you're looking for?
Our AI assistant is here to help you find the information you need.