tags 595375 + patch thanks On Sat, Sep 04, 2010 at 09:16:53PM +0200, Jérémy Bobbio wrote: > On Fri, Sep 03, 2010 at 12:51:38AM +0200, intrigeri+deb...@boum.org wrote: > > What does not work > > ================== > > > > When extensions.torbutton.spoof_english is set to true the reported > > User-Agent is: > > > > "Mozilla/5.0 (Windows; U; Windows NT 6.1; > > chrome://global/locale/intl.properties; rv:1.9.2.3) Gecko/20100401 > > Firefox/3.6.3" > > > > One can see the LANG placeholder is wrongly replaced with > > "chrome://global/locale/intl.properties" instead of what is expected > > i.e. the value of the "general.useragent.locale" preference setting. > > I will spend some time to investigate a little bit more before opening a > ticket on upstream bugtracker.
The attached patch fixed the issue during my tests. It would be great if you could try it to see if it's better for you as well. Cheers, -- Jérémy Bobbio .''`. lu...@debian.org : :Ⓐ : # apt-get install anarchism `. `'` `-
diff --git a/src/chrome/content/torbutton.js b/src/chrome/content/torbutton.js index 7b80da8..bc754db 100644 --- a/src/chrome/content/torbutton.js +++ b/src/chrome/content/torbutton.js @@ -926,22 +926,38 @@ function torbutton_set_timezone(mode, startup) { } } +function torbutton_get_general_useragent_locale() { + try { + var locale = m_tb_prefs.getCharPref("general.useragent.locale"); + if (locale != "chrome://global/locale/intl.properties") { + return locale; + } + + var bundle = Components.classes["@mozilla.org/intl/stringbundle;1"] + .getService(Components.interfaces.nsIStringBundleService); + var stringbundle = bundle.createBundle(locale); + return stringbundle.GetStringFromName("general.useragent.locale"); + } catch(err) { + torbutton_log(2, "error while getting general.useragent.locale:" + err); + return 'en-US'; + } +} + function torbutton_set_uagent() { try { var torprefs = torbutton_get_prefbranch('extensions.torbutton.'); var lang = new RegExp("LANG", "gm"); var appname = torprefs.getCharPref("appname_override"); var appvers = torprefs.getCharPref("appversion_override"); + var generalLocale = torbutton_get_general_useragent_locale(); if(torprefs.getBoolPref("spoof_english")) { appname = appname.replace(lang, torprefs.getCharPref("spoof_locale")); appvers = appvers.replace(lang, torprefs.getCharPref("spoof_locale")); } else { - appname = appname.replace(lang, - m_tb_prefs.getCharPref("general.useragent.locale")); - appvers = appvers.replace(lang, - m_tb_prefs.getCharPref("general.useragent.locale")); + appname = appname.replace(lang, generalLocale); + appvers = appvers.replace(lang, generalLocale); } m_tb_prefs.setCharPref("general.appname.override", appname); @@ -955,8 +971,7 @@ function torbutton_set_uagent() { agent = agent.replace(lang, torprefs.getCharPref("spoof_locale")); } else { - agent = agent.replace(lang, - m_tb_prefs.getCharPref("general.useragent.locale")); + agent = agent.replace(lang, generalLocale); } m_tb_prefs.setCharPref("general.useragent.override", agent);
signature.asc
Description: Digital signature