如何根据浏览器语言显示不同的文字?

问题描述 投票:0回答:2
let language = navigator.language;

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

我没有收到任何回复。 如果有人知道为什么它不起作用,我将不胜感激

javascript html browser switch-statement getelementbyid
2个回答
0
投票

我假设你的 html 看起来像这样:

<body>
    <h1 id="demo">Hello World</h1>
</body>
<script src="app.js"></script>

和我的js文件:

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

您需要在语言切换案例周围添加引号'es'而不是es ...因为navigator.language返回一个字符串,如果您不使用引号,javascript将寻找一个变量或函数调用。

当我进行这些修改时,您的代码工作得很好。


0
投票

您需要将可能的值用引号括起来,并且需要解析

language
值以使其看起来像 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>

请注意,您可以使用

case 'en' :
而不是
default :
,即使该语言具有您的代码未预期的值,它也会使用英语作为默认值。

© www.soinside.com 2019 - 2024. All rights reserved.