diff --git a/public/src/modules/notifications.js b/public/src/modules/notifications.js index a215c19475..8ce876eebe 100644 --- a/public/src/modules/notifications.js +++ b/public/src/modules/notifications.js @@ -137,14 +137,14 @@ define('notifications', ['sounds', 'translator', 'components', 'navigator', 'ben return parseInt(a.datetime, 10) > parseInt(b.datetime, 10) ? -1 : 1; }); - translator.toggleTimeagoShorthand(); - for (var i = 0; i < notifs.length; i += 1) { - notifs[i].timeago = $.timeago(new Date(parseInt(notifs[i].datetime, 10))); - } - translator.toggleTimeagoShorthand(); - - Benchpress.parse('partials/notifications_list', { notifications: notifs }, function (html) { - notifList.translateHtml(html); + translator.toggleTimeagoShorthand(function () { + for (var i = 0; i < notifs.length; i += 1) { + notifs[i].timeago = $.timeago(new Date(parseInt(notifs[i].datetime, 10))); + } + translator.toggleTimeagoShorthand(); + Benchpress.parse('partials/notifications_list', { notifications: notifs }, function (html) { + notifList.translateHtml(html); + }); }); }); }; diff --git a/public/src/modules/translator.js b/public/src/modules/translator.js index 817f6095b6..6376d9e4d0 100644 --- a/public/src/modules/translator.js +++ b/public/src/modules/translator.js @@ -576,23 +576,29 @@ adaptor.getTranslations(language, namespace, callback); }, - toggleTimeagoShorthand: function toggleTimeagoShorthand() { - var tmp = assign({}, jQuery.timeago.settings.strings); - jQuery.timeago.settings.strings = assign({}, adaptor.timeagoShort); - adaptor.timeagoShort = assign({}, tmp); + toggleTimeagoShorthand: function toggleTimeagoShorthand(callback) { + function toggle() { + var tmp = assign({}, jQuery.timeago.settings.strings); + jQuery.timeago.settings.strings = assign({}, adaptor.timeagoShort); + adaptor.timeagoShort = assign({}, tmp); + if (typeof callback === 'function') { + callback(); + } + } + + if (!adaptor.timeagoShort) { + var languageCode = utils.userLangToTimeagoCode(config.userLang); + var originalSettings = assign({}, jQuery.timeago.settings.strings); + jQuery.getScript(config.relative_path + '/assets/vendor/jquery/timeago/locales/jquery.timeago.' + languageCode + '-short.js').done(function () { + adaptor.timeagoShort = assign({}, jQuery.timeago.settings.strings); + jQuery.timeago.settings.strings = assign({}, originalSettings); + toggle(); + }); + } else { + toggle(); + } }, prepareDOM: function prepareDOM() { - // Load the appropriate timeago locale file, - // and correct NodeBB language codes to timeago codes, if necessary - var languageCode = utils.userLangToTimeagoCode(config.userLang); - - adaptor.timeagoShort = assign({}, jQuery.timeago.settings.strings); - - jQuery.getScript(config.relative_path + '/assets/vendor/jquery/timeago/locales/jquery.timeago.' + languageCode + '-short.js').done(function () { - // Switch back to long-form - adaptor.toggleTimeagoShorthand(); - }); - // Add directional code if necessary adaptor.translate('[[language:dir]]', function (value) { if (value && !$('html').attr('data-dir')) {