Blob Blame History Raw
diff -up firefox-48.0.1/toolkit/mozapps/extensions/internal/XPIProvider.jsm.mydebug firefox-48.0.1/toolkit/mozapps/extensions/internal/XPIProvider.jsm
--- firefox-48.0.1/toolkit/mozapps/extensions/internal/XPIProvider.jsm.mydebug	2016-08-15 23:35:40.000000000 +0200
+++ firefox-48.0.1/toolkit/mozapps/extensions/internal/XPIProvider.jsm	2016-09-21 16:08:04.441220821 +0200
@@ -2724,6 +2724,11 @@ this.XPIProvider = {
         this.addAddonsToCrashReporter();
       }
 
+      // Save locale settings to compare it later to check whenever some addon
+      // changed it.
+      var previousLocale = Cc["@mozilla.org/chrome/chrome-registry;1"]
+                          .getService(Ci.nsIXULChromeRegistry).getSelectedLocale("global");
+
       try {
         AddonManagerPrivate.recordTimestamp("XPI_bootstrap_addons_begin");
         for (let id in this.bootstrappedAddons) {
@@ -2751,6 +2756,14 @@ this.XPIProvider = {
         AddonManagerPrivate.recordException("XPI-BOOTSTRAP", "startup failed", e);
       }
 
+      var currentLocale = Cc["@mozilla.org/chrome/chrome-registry;1"]
+                         .getService(Ci.nsIXULChromeRegistry).getSelectedLocale("global");
+      if (currentLocale != previousLocale) {
+        // We have to flush string cache if the locale was changed during loading
+        // of addons
+        Services.obs.notifyObservers(null, "chrome-flush-caches", null);
+      }
+
       // Let these shutdown a little earlier when they still have access to most
       // of XPCOM
       Services.obs.addObserver({