Fix Firefox 55 breakage (and remove unnecessary locale lookups)

We were manually looking up the current locale in various places and
passing it to nsIStringBundleService::createBundle(), but that hasn't
even been a supported argument for years. (I assume it was a long time
ago?)
This commit is contained in:
Dan Stillman 2017-07-09 06:56:56 -04:00
parent 59edca783e
commit 55b2dc39bf
5 changed files with 32 additions and 64 deletions

View File

@ -257,20 +257,10 @@ function getTooltipText(button) {
// Use defaults if necessary // Use defaults if necessary
if (!text) { if (!text) {
// Get the stringbundle manually
Components.utils.import("resource://gre/modules/Services.jsm");
let appLocale;
if (Services.locale.getAppLocale) {
appLocale = Services.locale.getAppLocale();
}
// Fx <=53
else {
appLocale = Services.locale.getApplicationLocale();
}
let src = 'chrome://zotero/locale/zotero.properties'; let src = 'chrome://zotero/locale/zotero.properties';
let stringBundleService = Components.classes["@mozilla.org/intl/stringbundle;1"] let stringBundleService = Components.classes["@mozilla.org/intl/stringbundle;1"]
.getService(Components.interfaces.nsIStringBundleService); .getService(Components.interfaces.nsIStringBundleService);
let stringBundle = stringBundleService.createBundle(src, appLocale); let stringBundle = stringBundleService.createBundle(src);
text = stringBundle.GetStringFromName('startupError'); text = stringBundle.GetStringFromName('startupError');
} }
} }

View File

@ -240,24 +240,13 @@ Services.scriptloader.loadSubScript("resource://zotero/polyfill.js");
this.locale = this.locale + '-' + this.locale.toUpperCase(); this.locale = this.locale + '-' + this.locale.toUpperCase();
} }
// Load in the localization stringbundle for use by getString(name) _localizedStringBundle = Services.strings.createBundle("chrome://zotero/locale/zotero.properties");
if (Services.locale.getAppLocale) {
var appLocale = Services.locale.getAppLocale();
}
// Fx <=53
else {
var appLocale = Services.locale.getApplicationLocale();
}
_localizedStringBundle = Services.strings.createBundle(
"chrome://zotero/locale/zotero.properties", appLocale);
// Fix logged error in PluralForm.jsm when numForms() is called before get(), as it is in // Fix logged error in PluralForm.jsm when numForms() is called before get(), as it is in
// getString() when a number is based // getString() when a number is based
PluralForm.get(1, '1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16') PluralForm.get(1, '1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16')
// Also load the brand as appName // Also load the brand as appName
var brandBundle = Services.strings.createBundle( var brandBundle = Services.strings.createBundle("chrome://branding/locale/brand.properties");
"chrome://branding/locale/brand.properties", appLocale);
this.appName = brandBundle.GetStringFromName("brandShortName"); this.appName = brandBundle.GetStringFromName("brandShortName");
// Set the locale direction to Zotero.dir // Set the locale direction to Zotero.dir
@ -1313,19 +1302,33 @@ Services.scriptloader.loadSubScript("resource://zotero/polyfill.js");
return this.collation; return this.collation;
} }
try {
// DEBUG: Is this necessary, or will Intl.Collator just default to the same locales we're
// passing manually?
let locales;
// Fx55+
if (Services.locale.getAppLocalesAsBCP47) {
locales = Services.locale.getAppLocalesAsBCP47();
}
else {
let locale;
// Fx54
if (Services.locale.getAppLocale) { if (Services.locale.getAppLocale) {
var locale = Services.locale.getAppLocale(); locale = Services.locale.getAppLocale();
} }
// Fx <=53 // Fx <=53
else { else {
var locale = Services.locale.getApplicationLocale(); locale = Services.locale.getApplicationLocale();
locale = locale.getCategory('NSILOCALE_COLLATE'); locale = locale.getCategory('NSILOCALE_COLLATE');
} }
try {
// Extract a valid language tag // Extract a valid language tag
locale = locale.match(/^[a-z]{2}(\-[A-Z]{2})?/)[0]; locale = locale.match(/^[a-z]{2}(\-[A-Z]{2})?/)[0];
var collator = new Intl.Collator(locale, { locales = [locale];
}
var collator = new Intl.Collator(locales, {
ignorePunctuation: true, ignorePunctuation: true,
numeric: true, numeric: true,
sensitivity: 'base' sensitivity: 'base'

View File

@ -4697,18 +4697,10 @@ var ZoteroPane = new function()
var errFunc = Zotero.startupErrorHandler; var errFunc = Zotero.startupErrorHandler;
} }
// Get the stringbundle manually
if (Services.locale.getAppLocale) {
var appLocale = Services.locale.getAppLocale();
}
// Fx <=53
else {
var appLocale = Services.locale.getApplicationLocale();
}
var stringBundleService = Components.classes["@mozilla.org/intl/stringbundle;1"] var stringBundleService = Components.classes["@mozilla.org/intl/stringbundle;1"]
.getService(Components.interfaces.nsIStringBundleService); .getService(Components.interfaces.nsIStringBundleService);
var src = 'chrome://zotero/locale/zotero.properties'; var src = 'chrome://zotero/locale/zotero.properties';
var stringBundle = stringBundleService.createBundle(src, appLocale); var stringBundle = stringBundleService.createBundle(src);
var title = stringBundle.GetStringFromName('general.error'); var title = stringBundle.GetStringFromName('general.error');
if (!errMsg) { if (!errMsg) {

View File

@ -6,19 +6,10 @@ var lastJumpToYearValue;
* Set up the localization string bundle from timeline.properties * Set up the localization string bundle from timeline.properties
*/ */
function initLocaleBundle() { function initLocaleBundle() {
Components.utils.import("resource://gre/modules/Services.jsm");
if (Services.locale.getAppLocale) {
var appLocale = Services.locale.getAppLocale();
}
// Fx <=53
else {
var appLocale = Services.locale.getApplicationLocale();
}
var src = 'chrome://zotero/locale/timeline.properties'; var src = 'chrome://zotero/locale/timeline.properties';
var stringBundleService = Components.classes["@mozilla.org/intl/stringbundle;1"] var stringBundleService = Components.classes["@mozilla.org/intl/stringbundle;1"]
.getService(Components.interfaces.nsIStringBundleService); .getService(Components.interfaces.nsIStringBundleService);
return stringBundleService.createBundle(src, appLocale); return stringBundleService.createBundle(src);
} }
/* /*

View File

@ -378,18 +378,10 @@ function ZoteroService() {
let quitStr = "Quit"; let quitStr = "Quit";
let checkForUpdateStr = "Check for Update"; let checkForUpdateStr = "Check for Update";
try { try {
let appLocale;
if (Services.locale.getAppLocale) {
appLocale = Services.locale.getAppLocale();
}
// Fx <=53
else {
appLocale = Services.locale.getApplicationLocale();
}
let src = 'chrome://zotero/locale/zotero.properties'; let src = 'chrome://zotero/locale/zotero.properties';
let stringBundleService = Components.classes["@mozilla.org/intl/stringbundle;1"] let stringBundleService = Components.classes["@mozilla.org/intl/stringbundle;1"]
.getService(Components.interfaces.nsIStringBundleService); .getService(Components.interfaces.nsIStringBundleService);
let stringBundle = stringBundleService.createBundle(src, appLocale); let stringBundle = stringBundleService.createBundle(src);
errorStr = stringBundle.GetStringFromName('general.error'); errorStr = stringBundle.GetStringFromName('general.error');
checkForUpdateStr = stringBundle.GetStringFromName('general.checkForUpdate'); checkForUpdateStr = stringBundle.GetStringFromName('general.checkForUpdate');
quitStr = stringBundle.GetStringFromName('general.quit'); quitStr = stringBundle.GetStringFromName('general.quit');