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

63.6k views Asked by At

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

enter image description here

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
3

There are 3 answers

9
Eduardo Molteni On BEST ANSWER

In Firefox

Use about:config

enter image description here

enter image description here

(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:

enter image description here

enter image description here

0
Donghua Liu On

"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;
});

4
Allard Stijnman On

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!

The search results and the manage languages link

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

The languages list