How to add custom Accept-Languages to Chrome for pseudolocalization testing?

扶醉桌前 提交于 2019-12-28 08:08:35

问题


i am testing pseudo-localization of a web-site.

i can configure Internet Explorer to have custom accept languages:

  1. Click Tools, Internet Options
  2. On the General tab click Languages
  3. In the Language Preferences dialog click Add.
  4. Enter a user-defined language of qps-ploc (i.e. the Pseudo (Base) locale)
  5. Click OK

Now when Internet Explorer issues an http request, the accept languages will lead with 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

How do i perform the same change to Chrome? To Firefox?


Update

It should also be noted that Internet Explorer honors my Windows preferences. My Windows is configured to use Pseudo (Base) qps-ploc locale. By default Internet Explorer uses it.

Google Chrome ignores my Windows preferences, deciding instead to request en-US and en language:

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

回答1:


In Firefox

Use about:config

(There is a typo in qps-ploc in the screenshots, but you surely get the idea)

In Chrome

(Edit: refer to the comments for ways to avoid Chrome override the setting in new versions.)

Edit the file C:\Users\USERNAME\AppData\Local\Google\Chrome\User Data\Default\Preferences, and add:

{ ...

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

   ...
}

For example:




回答2:


You can also set this via the settings page.

Go to settings (cmd + , on mac, probably cntrl + , on windows) and search for language. Click the "manage languages" link and add your preferred language. After that just drag your language to the top of the list and you're done!

Or direct access to languages settings: chrome://settings/languages




回答3:


"intl.accept_languages" did not work on the latest version of Chrome, after go through the code of Advanced Page Language Switcher (https://chrome.google.com/webstore/detail/advanced-page-language-sw/mhgjlbolkmcookadjpolimbddngjgbol). You can change it using chrome.webRequest.onBeforeSendHeaders.addListener.

Some sample code was like the following (copied from the above extension's 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;
});



来源:https://stackoverflow.com/questions/7769061/how-to-add-custom-accept-languages-to-chrome-for-pseudolocalization-testing

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!