Search code examples
javascripthtmlbrowserswitch-statementgetelementbyid

How to display different texts depending on the browser language?


let language = navigator.language;

switch (language) {
    case es :
        document.getElementById("demo").innerText =  "Hola ";
        break;
    case en :
        document.getElementById("demo").innerText =  "Hello ";          
}

Am not receiving anything back. I would appreciate if someone knows why it isn't working


Solution

  • You will need to wrap quotes around the possible values and you need to parse the language value to look like the values in your switch case:

    let language = navigator.language;
    let dashIndex = language.indexOf('-');
    if (dashIndex >= 0) {
        language = language.substring(0, dashIndex);
    }
    
    switch (language) {
                    case 'es' :
                    document.getElementById("demo").innerText =  "Hola ";
                    break;
                    case 'en' :
                    document.getElementById("demo").innerText =  "Hello ";
                    
                    }
    <h1 id="demo"></h1>

    Note that instead of case 'en' : you could use default : which would use the English language as a default even if the language has a value that your code did not expect.