| 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(); |