# Simplest Possible Internationalization with Vanilla JavaScript

DOM elements (li) with language-dependent text are going to be marked with the data-i18 data attributes (or any attribute of your choice):



<ol>
    <li data-i18n>over</li>
    <li data-i18n>under</li>
    <li>duke</li>
</ol>


The internationalized values are maintained in a JavaScript object, which could be loaded from server with fetch as JSON:


const germanConfig = {
    under: "unter",
    over: "ueber"
}


Now the querySelectorAll 
function can be used to locate DOM elements with language-specific text contents:

const elements = document.querySelectorAll("[data-i18n]");    

...and replaced with the following function:

const replaceText = (el) => { 
    const key = el.innerText;
    el.innerText = germanConfig[key] || key;
}    
elements.forEach(el => replaceText(el));


See it in action and "from scratch":    






See you at Web, MicroProfile and Java EE Workshops at Munich Airport, Terminal 2 or Virtual Dedicated Workshops / consulting. Is Munich's airport too far? Learn from home: airhacks.io.
