mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-13 05:15:45 +00:00
Bug 1362225 - Speed up i18n.getMessage. r=aswan
MozReview-Commit-ID: EcadiurI7tu --HG-- extra : rebase_source : 746051a46e2824f662e25d4ed1b3e3fa05f226ff
This commit is contained in:
parent
9f6940d77e
commit
8a35020652
@ -37,6 +37,7 @@ var {
|
||||
EventEmitter,
|
||||
ExtensionError,
|
||||
SpreadArgs,
|
||||
defineLazyGetter,
|
||||
getConsole,
|
||||
getInnerWindowID,
|
||||
getUniqueId,
|
||||
@ -1160,15 +1161,17 @@ LocaleData.prototype = {
|
||||
// https://developer.chrome.com/extensions/i18n
|
||||
localizeMessage(message, substitutions = [], options = {}) {
|
||||
let defaultOptions = {
|
||||
locale: this.selectedLocale,
|
||||
defaultValue: "",
|
||||
cloneScope: null,
|
||||
};
|
||||
|
||||
options = Object.assign(defaultOptions, options);
|
||||
let locales = this.availableLocales;
|
||||
if (options.locale) {
|
||||
locales = new Set([this.BUILTIN, options.locale, this.defaultLocale]
|
||||
.filter(locale => this.messages.has(locale)));
|
||||
}
|
||||
|
||||
let locales = new Set([this.BUILTIN, options.locale, this.defaultLocale]
|
||||
.filter(locale => this.messages.has(locale)));
|
||||
options = Object.assign(defaultOptions, options);
|
||||
|
||||
// Message names are case-insensitive, so normalize them to lower-case.
|
||||
message = message.toLowerCase();
|
||||
@ -1177,6 +1180,10 @@ LocaleData.prototype = {
|
||||
if (messages.has(message)) {
|
||||
let str = messages.get(message);
|
||||
|
||||
if (!str.includes("$")) {
|
||||
return str;
|
||||
}
|
||||
|
||||
if (!Array.isArray(substitutions)) {
|
||||
substitutions = [substitutions];
|
||||
}
|
||||
@ -1311,6 +1318,11 @@ LocaleData.prototype = {
|
||||
},
|
||||
};
|
||||
|
||||
defineLazyGetter(LocaleData.prototype, "availableLocales", function() {
|
||||
return new Set([this.BUILTIN, this.selectedLocale, this.defaultLocale]
|
||||
.filter(locale => this.messages.has(locale)));
|
||||
});
|
||||
|
||||
// This is a generic class for managing event listeners. Example usage:
|
||||
//
|
||||
// new SingletonEventManager(context, "api.subAPI", fire => {
|
||||
|
Loading…
Reference in New Issue
Block a user