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