如何使用Javascript更改浏览器语言

时间:2010-09-20 17:49:39

标签: javascript browser

我想访问用户浏览器设置并更改浏览器语言,这是否可以使用Javascript?

如果可能,我该如何访问? (请提供示例代码)

6 个答案:

答案 0 :(得分:6)

您可以检测,但无法设置。

var lang = navigator.language || navigator.userLanguage;

// navigator.language     : Netscape & Firefox
// navigator.userLanguage : Internet Explorer


如果要输出不同的语言,最好的方法是在服务器端执行。之一:

  • 使用AJAX调用动态加载适当的页面
  • 使用会话变量正确加载初始页面

答案 1 :(得分:5)

不,这是不可能的。如果你打开一个页面,你的浏览器会变成阿拉伯语(或其他一些你看不懂的语言),你会怎么找到它?

答案 2 :(得分:4)

这是不可能的,也是一个坏主意。更好的想法是检测浏览器的语言,这可能做得相当好,并要求用户更改它(假设更改是绝对必要的)。

答案 3 :(得分:2)

如果您真正想要做的是检测用户正在使用的语言,这就是您想要做的事情,因为在服务器端,没有任何内容会让访问者更多地惹恼他们的浏览器偏好设置,请阅读{ {1}}所有现代浏览器发送的HTTP请求标头,它应包含您需要的所有信息。如果没有,请假设您最大的受众语言。

查看RFC2616 Section 14.4以获取有关Accept-Language及其使用的更多信息。

答案 4 :(得分:1)

在网页上使用JavaScript绝对不可能。

浏览器扩展程序可能有权更改此权限 - 我不确定,它还取决于浏览器。但是,建立这样的扩展需要相当多的技能和工作。

答案 5 :(得分:0)

如果您是通过Chrome扩展程序执行此操作,则可以这样做。

this answer选中与contentScript.js中的类似问题和locale-switcher Chrome extension

let locale = null;

chrome.storage.local.get(["locale"], result => {
  if (result) {
    locale = result.locale;
  }

  if (locale) embedScript();
});

const embedScript = () => {
  const code = `
    (() => {
      Object.defineProperties(Navigator.prototype, {
        language: {
          value: '${locale}',
          configurable: false,
          enumerable: true,
          writable: false
        },
        languages: {
          value: ['${locale}'],
          configurable: false,
          enumerable: true,
          writable: false
        }
      });
    })();`;

  const script = document.createElement("script");
  script.textContent = code;
  document.documentElement.prepend(script);
  script.remove();
};

我知道时机(此问题在此答案问了10年之前问过),如果您是此扩展的作者,那将特别有趣。