1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
Description: Fix broken locale useragent string
Bug: https://trac.torproject.org/projects/tor/ticket/1911
Bug-Debian: http://bugs.debian.org/595375
Author: Jérémy Bobbio <lunar@debian.org>
Acked-by: Mike Perry <mikeperry-git@fscked.org>
Applied-Upstream: commit:651be65f349a3ba608a7e8f4385c24d7771bd619
diff --git a/src/chrome/content/torbutton.js b/src/chrome/content/torbutton.js
index 89c6297..3abea15 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(4, "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);
|