Index: lib/notification.js |
=================================================================== |
--- a/lib/notification.js |
+++ b/lib/notification.js |
@@ -24,6 +24,7 @@ |
let {TimeLine} = require("timeline"); |
let {Prefs} = require("prefs"); |
let {Downloader, Downloadable, MILLIS_IN_MINUTE, MILLIS_IN_HOUR, MILLIS_IN_DAY} = require("downloader"); |
+let {Utils} = require("utils"); |
let INITIAL_DELAY = 12 * MILLIS_IN_MINUTE; |
let CHECK_INTERVAL = 1 * MILLIS_IN_HOUR; |
@@ -41,6 +42,19 @@ |
Prefs.notificationdata = JSON.parse(JSON.stringify(Prefs.notificationdata)); |
} |
+function localize(translations, locale) |
+{ |
+ if (locale in translations) |
+ return translations[locale]; |
+ |
+ let languagePart = locale.substring(0, locale.indexOf("-")); |
+ if (languagePart && languagePart in translations) |
+ return translations[languagePart]; |
+ |
+ let defaultLocale = "en-US"; |
+ return translations[defaultLocale]; |
+} |
+ |
/** |
* The object providing actual downloading functionality. |
* @type Downloader |
@@ -175,6 +189,26 @@ |
} |
return notificationToShow; |
+ }, |
+ |
+ /** |
+ * Localizes the texts of the supplied notification. |
+ * @param {Object} notification notification to translate |
+ * @param {String} locale the target locale (optional, defaults to the |
+ * application locale) |
+ * @return {Object} the translated texts |
+ */ |
+ getLocalizedTexts: function(notification, locale) |
+ { |
+ locale = locale || Utils.appLocale; |
+ let textKeys = ["title", "message"]; |
+ let localizedTexts = []; |
+ for each (let key in textKeys) |
+ { |
+ if (key in notification) |
+ localizedTexts[key] = localize(notification[key], locale); |
+ } |
+ return localizedTexts; |
} |
}; |
Notification.init(); |