41

我正在测试网站的伪本地化

我可以将 Internet Explorer 配置为具有自定义接受语言:

  1. 单击工具Internet 选项
  2. 常规选项卡上单击语言
  3. 语言首选项对话框中单击添加
  4. 输入用户定义的语言qps-ploc(即伪(基本)语言环境)
  5. 点击确定

在此处输入图像描述

现在,当 Internet Explorer 发出 http 请求时,接受语言将以qpc-ploc:

GET https://stackoverflow.com/ HTTP/1.1
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */*
Accept-Language: qps-ploc,en-US;q=0.5
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E)
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Host: stackoverflow.com

如何对 Chrome 执行相同的更改?火狐?


更新

还应该注意的是,Internet Explorer尊重我的 Windows 偏好。我的 Windows 配置为使用伪(基本) qps-ploc语言环境。默认情况下,Internet Explorer 使用它。

谷歌浏览器忽略了我的 Windows 偏好,而是决定请求en-USen语言:

GET https://stackoverflow.com/ HTTP/1.1
Host: stackoverflow.com
Connection: keep-alive
Cache-Control: max-age=0
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.220 Safari/535.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
4

3 回答 3

45

在火狐中

采用about:config

在此处输入图像描述

在此处输入图像描述

(屏幕截图中的 qps-ploc 有错字,但你肯定明白)

在 Chrome 中

编辑:有关避免 Chrome 覆盖新版本中的设置的方法,请参阅评论。

编辑文件C:\Users\USERNAME\AppData\Local\Google\Chrome\User Data\Default\Preferences,并添加:

{ ...

   "intl": {
      "accept_languages": "qps-ploc,en-us,en"
   },

   ...
}

例如:

在此处输入图像描述

在此处输入图像描述

于 2011-10-14T16:26:35.110 回答
41

您也可以通过设置页面进行设置。

转到设置( cmd + ,在 mac 上,可能是 cntrl + ,在 windows 上)并搜索语言。单击“管理语言”链接并添加您的首选语言。之后,只需将您的语言拖到列表顶部即可!

搜索结果和管理语言链接

或直接访问语言设置:chrome://settings/languages

语言列表

于 2013-10-21T11:28:25.967 回答
1

“intl.accept_languages”在最新版本的 Chrome 上不起作用,经过高级页面语言切换器的代码(https://chrome.google.com/webstore/detail/advanced-page-language-sw/mhgjlbolkmcookadjpolimbddngjgbol) . 您可以使用chrome.webRequest.onBeforeSendHeaders.addListener.

一些示例代码如下所示(从上述扩展的 backgroud.js 复制)。

var locale = "",
    ulrLocation = "",
  contentLang = "";

let extraInfoSpec = ["blocking", "requestHeaders"];
if (chrome.webRequest.OnBeforeSendHeadersOptions.hasOwnProperty('EXTRA_HEADERS')) {
  extraInfoSpec.push('extraHeaders');
} 
chrome.webRequest.onBeforeSendHeaders.addListener(function(HEADERS_INFO){
  for (var header of HEADERS_INFO.requestHeaders) {
    if (header.name == "Accept-Language") {
        header.value = locale;
    }
  }

  chrome.tabs.query({ active: true, currentWindow: true }, function(tabs) {
    chrome.tabs.sendMessage(tabs[0].id, {language: locale});
  });

  return {  requestHeaders: HEADERS_INFO.requestHeaders };
},{ urls: ["<all_urls>"] }, extraInfoSpec );

var setLocale = function(x) {
  locale = x;
}
var setCasinoLocation = function(y, z) {
  ulrLocation = y;
  contentLang = z;
}
//Listen for redirect requests
chrome.runtime.onMessage.addListener(function(request, sender) {
  chrome.tabs.update(sender.tab.id, {url: request.redirect});
  return;
});

于 2019-12-17T05:18:14.090 回答