diff --git a/public/src/forum/categoryTools.js b/public/src/forum/categoryTools.js
index dc66fe02f6..f40fb26b2f 100644
--- a/public/src/forum/categoryTools.js
+++ b/public/src/forum/categoryTools.js
@@ -129,18 +129,9 @@ define('forum/categoryTools', ['forum/topic/move', 'topicSelect'], function(move
var isAnyPinned = isAny(isTopicPinned, tids);
var isAnyLocked = isAny(isTopicLocked, tids);
- translator.translate(' [[topic:thread_tools.' + (isAnyDeleted ? 'restore' : 'delete') + ']]', function(translated) {
- $('.delete_thread span').html(translated);
- });
-
- translator.translate(' [[topic:thread_tools.' + (isAnyPinned ? 'unpin' : 'pin') + ']]', function(translated) {
- $('.pin_thread').html(translated);
- });
-
- translator.translate(' [[topic:thread_tools.' + (isAnyLocked ? 'un': '') + 'lock]]', function(translated) {
- $('.lock_thread').html(translated);
- });
-
+ $('.delete_thread span').translateHtml(' [[topic:thread_tools.' + (isAnyDeleted ? 'restore' : 'delete') + ']]');
+ $('.pin_thread').translateHtml(' [[topic:thread_tools.' + (isAnyPinned ? 'unpin' : 'pin') + ']]');
+ $('.lock_thread').translateHtml(' [[topic:thread_tools.' + (isAnyLocked ? 'un': '') + 'lock]]');
$('.purge_thread').toggleClass('none', !areAllDeleted);
}
diff --git a/public/src/forum/topic/events.js b/public/src/forum/topic/events.js
index 7241318380..e1d7becc8c 100644
--- a/public/src/forum/topic/events.js
+++ b/public/src/forum/topic/events.js
@@ -134,9 +134,7 @@ define('forum/topic/events', ['forum/topic/browsing', 'forum/topic/postTools', '
if (!app.isAdmin && parseInt(data.uid, 10) !== parseInt(app.uid, 10)) {
if (isDeleted) {
- translator.translate('[[topic:post_is_deleted]]', function(translated) {
- postEl.find('.post-content').html(translated);
- });
+ postEl.find('.post-content').translateHtml('[[topic:post_is_deleted]]');
} else {
postEl.find('.post-content').html(data.content);
}
diff --git a/public/src/forum/topic/fork.js b/public/src/forum/topic/fork.js
index dde247baa7..38052fa35b 100644
--- a/public/src/forum/topic/fork.js
+++ b/public/src/forum/topic/fork.js
@@ -90,9 +90,7 @@ define('forum/topic/fork', function() {
}
function showNoPostsSelected() {
- translator.translate('[[topic:fork_no_pids]]', function(translated) {
- forkModal.find('#fork-pids').html(translated);
- });
+ forkModal.find('#fork-pids').translateHtml('[[topic:fork_no_pids]]');
}
function checkForkButtonEnable() {
diff --git a/public/src/forum/topic/move.js b/public/src/forum/topic/move.js
index 1027f44ff1..c94dfb40f2 100644
--- a/public/src/forum/topic/move.js
+++ b/public/src/forum/topic/move.js
@@ -21,9 +21,7 @@ define('forum/topic/move', function() {
$('#move-confirm').hide();
if (Move.moveAll || (tids && tids.length > 1)) {
- translator.translate('[[topic:move_topics]]', function(translated) {
- modal.find('.modal-header h3').text(translated);
- });
+ modal.find('.modal-header h3').translateText('[[topic:move_topics]]');
}
modal.modal('show');
diff --git a/public/src/forum/topic/postTools.js b/public/src/forum/topic/postTools.js
index cdb44dc5e4..f27a3ef320 100644
--- a/public/src/forum/topic/postTools.js
+++ b/public/src/forum/topic/postTools.js
@@ -22,11 +22,8 @@ define('forum/topic/postTools', ['composer', 'share', 'navigator'], function(com
postEl.find('.quote, .favourite, .post_reply, .chat').toggleClass('none', isDeleted);
postEl.find('.purge').toggleClass('none', !isDeleted);
-
- translator.translate(isDeleted ? ' [[topic:restore]]' : ' [[topic:delete]]', function(translated) {
- postEl.find('.delete').find('i').toggleClass('fa-trash-o', !isDeleted).toggleClass('fa-history', isDeleted);
- postEl.find('.delete').find('span').html(translated);
- });
+ postEl.find('.delete .i').toggleClass('fa-trash-o', !isDeleted).toggleClass('fa-history', isDeleted);
+ postEl.find('.delete span').translateHtml(isDeleted ? ' [[topic:restore]]' : ' [[topic:delete]]');
};
PostTools.updatePostCount = function() {
diff --git a/public/src/forum/topic/threadTools.js b/public/src/forum/topic/threadTools.js
index 30f2f11a66..1e8e63b14f 100644
--- a/public/src/forum/topic/threadTools.js
+++ b/public/src/forum/topic/threadTools.js
@@ -104,10 +104,8 @@ define('forum/topic/threadTools', ['forum/topic/fork', 'forum/topic/move'], func
var threadEl = $('#post-container');
if (parseInt(data.tid, 10) === parseInt(threadEl.attr('data-tid'), 10)) {
var isLocked = data.isLocked && !app.isAdmin;
- translator.translate(' [[topic:thread_tools.' + (data.isLocked ? 'un': '') + 'lock]]', function(translated) {
- $('.lock_thread').html(translated);
- });
+ $('.lock_thread').translateHtml(' [[topic:thread_tools.' + (data.isLocked ? 'un': '') + 'lock]]');
translator.translate(isLocked ? '[[topic:locked]]' : '[[topic:reply]]', function(translated) {
var className = isLocked ? 'fa-lock' : 'fa-reply';
@@ -127,9 +125,7 @@ define('forum/topic/threadTools', ['forum/topic/fork', 'forum/topic/move'], func
return;
}
- translator.translate(' [[topic:thread_tools.' + (data.isDelete ? 'restore' : 'delete') + ']]', function(translated) {
- $('.delete_thread span').html(translated);
- });
+ $('.delete_thread span').translateHtml(' [[topic:thread_tools.' + (data.isDelete ? 'restore' : 'delete') + ']]');
threadEl.toggleClass('deleted', data.isDelete);
ThreadTools.threadState.deleted = data.isDelete;
diff --git a/public/src/modules/chat.js b/public/src/modules/chat.js
index 5e305d8525..5143179a6d 100644
--- a/public/src/modules/chat.js
+++ b/public/src/modules/chat.js
@@ -210,10 +210,7 @@ define('chat', ['taskbar', 'string', 'sounds'], function(taskbar, S, sounds) {
checkOnlineStatus(chatModal);
});
- translator.translate('[[modules:chat.user_typing, ' + username + ']]', function(translated) {
- chatModal.find('.user-typing .text').text(translated);
- });
-
+ chatModal.find('.user-typing .text').translateText('[[modules:chat.user_typing, ' + username + ']]');
taskbar.push('chat', chatModal.attr('UUID'), {
title: username,
diff --git a/public/src/modules/composer.js b/public/src/modules/composer.js
index f10629db59..84ad64c8b1 100644
--- a/public/src/modules/composer.js
+++ b/public/src/modules/composer.js
@@ -297,9 +297,7 @@ define('composer', dependencies, function(taskbar, controls, uploads, formatting
var titleEl = postContainer.find('.title');
if (parseInt(postData.tid, 10) > 0) {
- translator.translate('[[topic:composer.replying_to, ' + postData.title + ']]', function(newTitle) {
- titleEl.val(newTitle);
- });
+ titleEl.translateVal('[[topic:composer.replying_to, ' + postData.title + ']]');
titleEl.prop('disabled', true);
} else if (parseInt(postData.pid, 10) > 0) {
titleEl.val(postData.title);
diff --git a/public/src/modules/navigator.js b/public/src/modules/navigator.js
index 72869c5912..4f8d57895b 100644
--- a/public/src/modules/navigator.js
+++ b/public/src/modules/navigator.js
@@ -91,10 +91,8 @@ define('navigator', ['forum/topic/pagination'], function(pagination) {
navigator.updateTextAndProgressBar = function() {
index = index > count ? count : index;
- translator.translate('[[global:pagination.out_of, ' + index + ', ' + count + ']]', function(translated) {
- $('#pagination').html(translated);
- });
+ $('#pagination').translateHtml('[[global:pagination.out_of, ' + index + ', ' + count + ']]');
$('.pagination-block .progress-bar').width((index / count * 100) + '%');
};
diff --git a/public/src/modules/notifications.js b/public/src/modules/notifications.js
index bf257c2e20..ef00636f45 100644
--- a/public/src/modules/notifications.js
+++ b/public/src/modules/notifications.js
@@ -52,10 +52,7 @@ define('notifications', ['sounds'], function(sound) {
}
- translator.translate(html, function(translated) {
- notifList.html(translated);
- });
-
+ notifList.translateHtml(html);
updateNotifCount(data.unread.length);
diff --git a/public/src/overrides.js b/public/src/overrides.js
index f3b36e54d2..978dea0720 100644
--- a/public/src/overrides.js
+++ b/public/src/overrides.js
@@ -51,6 +51,27 @@ if ('undefined' !== typeof window) {
});
};
+ $.fn.translateHtml = function(str) {
+ return translate(this, 'html', str);
+ };
+
+ $.fn.translateText = function(str) {
+ return translate(this, 'text', str);
+ };
+
+ $.fn.translateVal = function(str) {
+ return translate(this, 'val', str);
+ };
+
+ function translate(elements, type, str) {
+ return elements.each(function() {
+ var el = $(this);
+ translator.translate(str, function(translated) {
+ el[type](translated);
+ });
+ });
+ }
+
})(jQuery || {fn:{}});