зеркало из https://github.com/mozilla/pjs.git
Bug 142623: No reload of Language strings due to XUL FastLoad. Patch by John Morrison <jrgm@netscape.com>, r=ben, sr=brendan, a=chofmann.
This commit is contained in:
Родитель
92f63c30fb
Коммит
87d0125b59
|
@ -67,6 +67,7 @@
|
||||||
//Switch the Content pack if necessary
|
//Switch the Content pack if necessary
|
||||||
var oldContentPack = parent.hPrefWindow.getPref( "localizedstring", "general.useragent.contentlocale");
|
var oldContentPack = parent.hPrefWindow.getPref( "localizedstring", "general.useragent.contentlocale");
|
||||||
var newContentPack;
|
var newContentPack;
|
||||||
|
var shouldRemoveFaslFile;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
var listbox = document.getElementById("contentPackList");
|
var listbox = document.getElementById("contentPackList");
|
||||||
|
@ -86,6 +87,7 @@
|
||||||
try {
|
try {
|
||||||
var chromeRegistry = Components.classes["@mozilla.org/chrome/chrome-registry;1"].getService(Components.interfaces.nsIXULChromeRegistry);
|
var chromeRegistry = Components.classes["@mozilla.org/chrome/chrome-registry;1"].getService(Components.interfaces.nsIXULChromeRegistry);
|
||||||
chromeRegistry.selectLocale(newContentPack, true);
|
chromeRegistry.selectLocale(newContentPack, true);
|
||||||
|
shouldRemoveFaslFile = true;
|
||||||
var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
|
var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
|
||||||
observerService.notifyObservers(null, "locale-selected", null);
|
observerService.notifyObservers(null, "locale-selected", null);
|
||||||
}
|
}
|
||||||
|
@ -115,6 +117,7 @@
|
||||||
try {
|
try {
|
||||||
var chromeRegistry = Components.classes["@mozilla.org/chrome/chrome-registry;1"].getService(Components.interfaces.nsIXULChromeRegistry);
|
var chromeRegistry = Components.classes["@mozilla.org/chrome/chrome-registry;1"].getService(Components.interfaces.nsIXULChromeRegistry);
|
||||||
chromeRegistry.selectLocale(newLanguagePack, true);
|
chromeRegistry.selectLocale(newLanguagePack, true);
|
||||||
|
shouldRemoveFaslFile = true;
|
||||||
var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
|
var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
|
||||||
observerService.notifyObservers(null, "locale-selected", null);
|
observerService.notifyObservers(null, "locale-selected", null);
|
||||||
}
|
}
|
||||||
|
@ -122,6 +125,27 @@
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If we changed locale, we need to destroy the fastload file so that it
|
||||||
|
// will load the language strings from the new locale jars. No one should
|
||||||
|
// have the fastload file open at this moment, so the remove should succeed.
|
||||||
|
// (XXX actually there is a small window where this is possible, in which
|
||||||
|
// case we're screwed).
|
||||||
|
// XXX This should really be done in the chrome registry itself, not be in
|
||||||
|
// front-end code, but this patch is only to get this mostly working for 1.1b
|
||||||
|
// The code below must die before 1.1final!!
|
||||||
|
if (shouldRemoveFaslFile) {
|
||||||
|
try {
|
||||||
|
const XUL_FASTLOAD_FILE_BASENAME = "XUL";
|
||||||
|
var faslService = Components.classes['@mozilla.org/fast-load-service;1']
|
||||||
|
.getService(Components.interfaces.nsIFastLoadService);
|
||||||
|
var faslFile = faslService.newFastLoadFile(XUL_FASTLOAD_FILE_BASENAME);
|
||||||
|
faslFile.remove(false);
|
||||||
|
} catch(e) {
|
||||||
|
dump("remove of fastload file failed: " + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function SelectContentPack()
|
function SelectContentPack()
|
||||||
|
|
Загрузка…
Ссылка в новой задаче