mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-01-20 22:43:01 +01:00
Use new translator API where it makes sense
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
"use strict";
|
||||
/*global config, translator, componentHandler, define, socket, app, ajaxify, utils, bootbox, Slideout, NProgress, RELATIVE_PATH*/
|
||||
/*global config, componentHandler, socket, app, bootbox, Slideout, NProgress*/
|
||||
|
||||
require(['translator'], function (trans) {
|
||||
var translator = trans.Translator.create();
|
||||
|
||||
(function() {
|
||||
var logoutTimer = 0;
|
||||
function startLogoutTimer() {
|
||||
if (logoutTimer) {
|
||||
@@ -9,15 +11,13 @@
|
||||
}
|
||||
|
||||
logoutTimer = setTimeout(function() {
|
||||
require(['translator'], function(translator) {
|
||||
translator.translate('[[login:logged-out-due-to-inactivity]]', function(translated) {
|
||||
bootbox.alert({
|
||||
closeButton: false,
|
||||
message: translated,
|
||||
callback: function(){
|
||||
window.location.reload();
|
||||
}
|
||||
});
|
||||
translator.translate('[[login:logged-out-due-to-inactivity]]').then(function(translated) {
|
||||
bootbox.alert({
|
||||
closeButton: false,
|
||||
message: translated,
|
||||
callback: function(){
|
||||
window.location.reload();
|
||||
}
|
||||
});
|
||||
});
|
||||
}, 3600000);
|
||||
@@ -52,8 +52,6 @@
|
||||
});
|
||||
|
||||
$(window).on('action:ajaxify.contentLoaded', function(ev, data) {
|
||||
var url = data.url;
|
||||
|
||||
selectMenuItem(data.url);
|
||||
setupRestartLinks();
|
||||
|
||||
@@ -65,7 +63,7 @@
|
||||
NProgress.set(0.7);
|
||||
});
|
||||
|
||||
$(window).on('action:ajaxify.end', function(ev, data) {
|
||||
$(window).on('action:ajaxify.end', function() {
|
||||
NProgress.done();
|
||||
});
|
||||
}
|
||||
@@ -82,7 +80,7 @@
|
||||
socket.emit('admin.restart');
|
||||
});
|
||||
|
||||
mousetrap.bind('/', function(event) {
|
||||
mousetrap.bind('/', function() {
|
||||
$('#acp-search input').focus();
|
||||
|
||||
return false;
|
||||
@@ -145,19 +143,16 @@
|
||||
|
||||
function launchSnackbar(params) {
|
||||
var message = (params.title ? "<strong>" + params.title + "</strong>" : '') + (params.message ? params.message : '');
|
||||
|
||||
require(['translator'], function(translator) {
|
||||
translator.translate(message, function(html) {
|
||||
var bar = $.snackbar({
|
||||
content: html,
|
||||
timeout: 3000,
|
||||
htmlAllowed: true
|
||||
});
|
||||
|
||||
if (params.clickfn) {
|
||||
bar.on('click', params.clickfn);
|
||||
}
|
||||
translator.translate(message).then(function(html) {
|
||||
var bar = $.snackbar({
|
||||
content: html,
|
||||
timeout: 3000,
|
||||
htmlAllowed: true
|
||||
});
|
||||
|
||||
if (params.clickfn) {
|
||||
bar.on('click', params.clickfn);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -199,4 +194,4 @@
|
||||
});
|
||||
});
|
||||
}
|
||||
}());
|
||||
});
|
||||
@@ -1,7 +1,7 @@
|
||||
"use strict";
|
||||
/* global define, app, socket, bootbox, templates, config */
|
||||
|
||||
define('admin/appearance/themes', function() {
|
||||
define('admin/appearance/themes', ['translator'], function(translator) {
|
||||
var Themes = {};
|
||||
|
||||
Themes.init = function() {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
"use strict";
|
||||
/* global define, app, ajaxify, socket, templates */
|
||||
/* global define, app, ajaxify, socket, templates, componentHandler */
|
||||
|
||||
define('admin/general/navigation', ['translator', 'iconSelect', 'jqueryui'], function(translator, iconSelect, jqueryui) {
|
||||
define('admin/general/navigation', ['translator', 'iconSelect', 'jqueryui'], function(translator, iconSelect) {
|
||||
var navigation = {},
|
||||
available;
|
||||
|
||||
@@ -77,7 +77,7 @@ define('admin/general/navigation', ['translator', 'iconSelect', 'jqueryui'], fun
|
||||
templates.parse('admin/general/navigation', 'enabled', {enabled: [data]}, function(li) {
|
||||
li = $(translator.unescape(li));
|
||||
$('#enabled').append(li);
|
||||
componentHandler.upgradeDom()
|
||||
componentHandler.upgradeDom();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
"use strict";
|
||||
/*global define, socket, app, bootbox, templates, ajaxify, Sortable */
|
||||
|
||||
define('admin/manage/categories', ['vendor/jquery/serializeObject/jquery.ba-serializeobject.min'], function() {
|
||||
define('admin/manage/categories', ['translator', 'vendor/jquery/serializeObject/jquery.ba-serializeobject.min'], function(translator) {
|
||||
var Categories = {}, newCategoryId = -1, sortables;
|
||||
|
||||
Categories.init = function() {
|
||||
@@ -121,10 +121,10 @@ define('admin/manage/categories', ['vendor/jquery/serializeObject/jquery.ba-seri
|
||||
}
|
||||
|
||||
function itemDragDidEnd(e) {
|
||||
var isCategoryUpdate = (newCategoryId != -1);
|
||||
var isCategoryUpdate = parseInt(newCategoryId, 10) !== -1;
|
||||
|
||||
//Update needed?
|
||||
if((e.newIndex != undefined && e.oldIndex != e.newIndex) || isCategoryUpdate){
|
||||
if((typeof e.newIndex !== 'undefined' && parseInt(e.oldIndex, 10) !== parseInt(e.newIndex), 10) || isCategoryUpdate){
|
||||
var parentCategory = isCategoryUpdate ? sortables[newCategoryId] : sortables[e.from.dataset.cid],
|
||||
modified = {}, i = 0, list = parentCategory.toArray(), len = list.length;
|
||||
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
"use strict";
|
||||
/*global define, templates, socket, ajaxify, app, admin, bootbox, utils, config */
|
||||
/*global define, templates, socket, ajaxify, app, bootbox, utils, config */
|
||||
|
||||
define('admin/manage/groups', [
|
||||
'translator',
|
||||
'components'
|
||||
], function(translator, components) {
|
||||
'translator'
|
||||
], function(translator) {
|
||||
var Groups = {};
|
||||
|
||||
var intervalId = 0;
|
||||
@@ -32,10 +31,9 @@ define('admin/manage/groups', [
|
||||
|
||||
createModalGo.on('click', function() {
|
||||
var submitObj = {
|
||||
name: createGroupName.val(),
|
||||
description: $('#create-group-desc').val()
|
||||
},
|
||||
errorText;
|
||||
name: createGroupName.val(),
|
||||
description: $('#create-group-desc').val()
|
||||
};
|
||||
|
||||
socket.emit('admin.groups.create', submitObj, function(err) {
|
||||
if (err) {
|
||||
@@ -68,7 +66,7 @@ define('admin/manage/groups', [
|
||||
if (confirm) {
|
||||
socket.emit('groups.delete', {
|
||||
groupName: groupName
|
||||
}, function(err, data) {
|
||||
}, function(err) {
|
||||
if(err) {
|
||||
return app.alertError(err.message);
|
||||
}
|
||||
|
||||
@@ -130,28 +130,6 @@ app.cacheBuster = null;
|
||||
});
|
||||
};
|
||||
|
||||
app.handleInvalidSession = function() {
|
||||
if (app.flags && app.flags._sessionRefresh) {
|
||||
return;
|
||||
}
|
||||
|
||||
app.flags = app.flags || {};
|
||||
app.flags._sessionRefresh = true;
|
||||
|
||||
require(['translator'], function(translator) {
|
||||
translator.translate('[[error:invalid-session-text]]', function(translated) {
|
||||
bootbox.alert({
|
||||
title: '[[error:invalid-session]]',
|
||||
message: translated,
|
||||
closeButton: false,
|
||||
callback: function() {
|
||||
window.location.reload();
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
app.enterRoom = function (room, callback) {
|
||||
callback = callback || function() {};
|
||||
if (socket && app.user.uid && app.currentRoom !== room) {
|
||||
@@ -309,63 +287,6 @@ app.cacheBuster = null;
|
||||
});
|
||||
};
|
||||
|
||||
var titleObj = {
|
||||
active: false,
|
||||
interval: undefined,
|
||||
titles: []
|
||||
};
|
||||
|
||||
app.alternatingTitle = function (title) {
|
||||
if (typeof title !== 'string') {
|
||||
return;
|
||||
}
|
||||
|
||||
if (title.length > 0 && !app.isFocused) {
|
||||
if (!titleObj.titles[0]) {
|
||||
titleObj.titles[0] = window.document.title;
|
||||
}
|
||||
|
||||
require(['translator'], function(translator) {
|
||||
translator.translate(title, function(translated) {
|
||||
titleObj.titles[1] = translated;
|
||||
if (titleObj.interval) {
|
||||
clearInterval(titleObj.interval);
|
||||
}
|
||||
|
||||
titleObj.interval = setInterval(function() {
|
||||
var title = titleObj.titles[titleObj.titles.indexOf(window.document.title) ^ 1];
|
||||
if (title) {
|
||||
window.document.title = $('<div/>').html(title).text();
|
||||
}
|
||||
}, 2000);
|
||||
});
|
||||
});
|
||||
} else {
|
||||
if (titleObj.interval) {
|
||||
clearInterval(titleObj.interval);
|
||||
}
|
||||
if (titleObj.titles[0]) {
|
||||
window.document.title = $('<div/>').html(titleObj.titles[0]).text();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
app.refreshTitle = function(title) {
|
||||
if (!title) {
|
||||
return;
|
||||
}
|
||||
require(['translator'], function(translator) {
|
||||
title = config.titleLayout.replace(/{/g, '{').replace(/}/g, '}')
|
||||
.replace('{pageTitle}', function() { return title; })
|
||||
.replace('{browserTitle}', function() { return config.browserTitle; });
|
||||
|
||||
translator.translate(title, function(translated) {
|
||||
titleObj.titles[0] = translated;
|
||||
app.alternatingTitle('');
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
app.toggleNavbar = function(state) {
|
||||
var navbarEl = $('.navbar');
|
||||
if (navbarEl) {
|
||||
@@ -473,21 +394,6 @@ app.cacheBuster = null;
|
||||
});
|
||||
}
|
||||
|
||||
app.updateUserStatus = function(el, status) {
|
||||
if (!el.length) {
|
||||
return;
|
||||
}
|
||||
|
||||
require(['translator'], function(translator) {
|
||||
translator.translate('[[global:' + status + ']]', function(translated) {
|
||||
el.removeClass('online offline dnd away')
|
||||
.addClass(status)
|
||||
.attr('title', translated)
|
||||
.attr('data-original-title', translated);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
app.newTopic = function (cid) {
|
||||
$(window).trigger('action:composer.topic.new', {
|
||||
cid: cid || ajaxify.data.cid || 0
|
||||
@@ -542,10 +448,20 @@ app.cacheBuster = null;
|
||||
}
|
||||
};
|
||||
|
||||
app.parseAndTranslate = function(template, blockName, data, callback) {
|
||||
require(['translator'], function(translator) {
|
||||
app.loadProgressiveStylesheet = function() {
|
||||
var linkEl = document.createElement('link');
|
||||
linkEl.rel = 'stylesheet';
|
||||
linkEl.href = config.relative_path + '/js-enabled.css';
|
||||
|
||||
document.head.appendChild(linkEl);
|
||||
};
|
||||
|
||||
require(['translator'], function(trans) {
|
||||
var translator = trans.Translator.create();
|
||||
|
||||
app.parseAndTranslate = function(template, blockName, data, callback) {
|
||||
function translate(html, callback) {
|
||||
translator.translate(html, function(translatedHTML) {
|
||||
translator.translate(html).then(function(translatedHTML) {
|
||||
translatedHTML = translator.unescape(translatedHTML);
|
||||
callback($(translatedHTML));
|
||||
});
|
||||
@@ -562,14 +478,93 @@ app.cacheBuster = null;
|
||||
translate(html, callback);
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
};
|
||||
|
||||
app.loadProgressiveStylesheet = function() {
|
||||
var linkEl = document.createElement('link');
|
||||
linkEl.rel = 'stylesheet';
|
||||
linkEl.href = config.relative_path + '/js-enabled.css';
|
||||
app.handleInvalidSession = function() {
|
||||
if (app.flags && app.flags._sessionRefresh) {
|
||||
return;
|
||||
}
|
||||
|
||||
document.head.appendChild(linkEl);
|
||||
};
|
||||
app.flags = app.flags || {};
|
||||
app.flags._sessionRefresh = true;
|
||||
|
||||
translator.translate('[[error:invalid-session-text]]').then(function(translated) {
|
||||
bootbox.alert({
|
||||
title: '[[error:invalid-session]]',
|
||||
message: translated,
|
||||
closeButton: false,
|
||||
callback: function() {
|
||||
window.location.reload();
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
var titleObj = {
|
||||
active: false,
|
||||
interval: undefined,
|
||||
titles: []
|
||||
};
|
||||
|
||||
app.alternatingTitle = function (title) {
|
||||
if (typeof title !== 'string') {
|
||||
return;
|
||||
}
|
||||
|
||||
if (title.length > 0 && !app.isFocused) {
|
||||
if (!titleObj.titles[0]) {
|
||||
titleObj.titles[0] = window.document.title;
|
||||
}
|
||||
|
||||
|
||||
translator.translate(title).then(function(translated) {
|
||||
titleObj.titles[1] = translated;
|
||||
if (titleObj.interval) {
|
||||
clearInterval(titleObj.interval);
|
||||
}
|
||||
|
||||
titleObj.interval = setInterval(function() {
|
||||
var title = titleObj.titles[titleObj.titles.indexOf(window.document.title) ^ 1];
|
||||
if (title) {
|
||||
window.document.title = $('<div/>').html(title).text();
|
||||
}
|
||||
}, 2000);
|
||||
});
|
||||
} else {
|
||||
if (titleObj.interval) {
|
||||
clearInterval(titleObj.interval);
|
||||
}
|
||||
if (titleObj.titles[0]) {
|
||||
window.document.title = $('<div/>').html(titleObj.titles[0]).text();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
app.refreshTitle = function(title) {
|
||||
if (!title) {
|
||||
return;
|
||||
}
|
||||
title = config.titleLayout.replace(/{/g, '{').replace(/}/g, '}')
|
||||
.replace('{pageTitle}', function() { return title; })
|
||||
.replace('{browserTitle}', function() { return config.browserTitle; });
|
||||
|
||||
translator.translate(title).then(function(translated) {
|
||||
titleObj.titles[0] = translated;
|
||||
app.alternatingTitle('');
|
||||
});
|
||||
};
|
||||
|
||||
app.updateUserStatus = function(el, status) {
|
||||
if (!el.length) {
|
||||
return;
|
||||
}
|
||||
|
||||
translator.translate('[[global:' + status + ']]').then(function(translated) {
|
||||
el.removeClass('online offline dnd away')
|
||||
.addClass(status)
|
||||
.attr('title', translated)
|
||||
.attr('data-original-title', translated);
|
||||
});
|
||||
};
|
||||
});
|
||||
}());
|
||||
|
||||
@@ -2,7 +2,9 @@
|
||||
|
||||
/* globals define, ajaxify, socket, app, config, templates, bootbox */
|
||||
|
||||
define('forum/account/edit', ['forum/account/header', 'uploader', 'translator', 'components'], function(header, uploader, translator, components) {
|
||||
define('forum/account/edit', ['forum/account/header', 'uploader', 'translator', 'components'], function(header, uploader, trans, components) {
|
||||
var translator = trans.Translator.create();
|
||||
|
||||
var AccountEdit = {};
|
||||
|
||||
AccountEdit.init = function() {
|
||||
@@ -86,7 +88,7 @@ define('forum/account/edit', ['forum/account/header', 'uploader', 'translator',
|
||||
uploaded: uploaded,
|
||||
allowProfileImageUploads: ajaxify.data.allowProfileImageUploads
|
||||
}, function(html) {
|
||||
translator.translate(html, function(html) {
|
||||
translator.translate(html).then(function(html) {
|
||||
var modal = bootbox.dialog({
|
||||
className: 'picture-switcher',
|
||||
title: '[[user:change_picture]]',
|
||||
@@ -158,7 +160,7 @@ define('forum/account/edit', ['forum/account/header', 'uploader', 'translator',
|
||||
|
||||
function handleAccountDelete() {
|
||||
$('#deleteAccountBtn').on('click', function() {
|
||||
translator.translate('[[user:delete_account_confirm]]', function(translated) {
|
||||
translator.translate('[[user:delete_account_confirm]]').then(function(translated) {
|
||||
var modal = bootbox.confirm(translated + '<p><input type="text" class="form-control" id="confirm-username" /></p>', function(confirm) {
|
||||
if (!confirm) {
|
||||
return;
|
||||
@@ -229,7 +231,7 @@ define('forum/account/edit', ['forum/account/header', 'uploader', 'translator',
|
||||
modal.find('[data-action="upload-url"]').on('click', function() {
|
||||
modal.modal('hide');
|
||||
templates.parse('partials/modals/upload_picture_from_url_modal', {}, function(html) {
|
||||
translator.translate(html, function(html) {
|
||||
translator.translate(html).then(function(html) {
|
||||
var uploadModal = $(html);
|
||||
uploadModal.modal('show');
|
||||
|
||||
|
||||
@@ -36,7 +36,6 @@ define('forum/categories', ['components', 'translator'], function(components, tr
|
||||
}
|
||||
|
||||
var recentPosts = category.find('[component="category/posts"]');
|
||||
var insertBefore = recentPosts.first();
|
||||
|
||||
parseAndTranslate([post], function(html) {
|
||||
html.hide();
|
||||
|
||||
@@ -99,7 +99,7 @@ define('forum/category', [
|
||||
});
|
||||
};
|
||||
|
||||
Category.navigatorCallback = function(topIndex, bottomIndex, elementCount) {
|
||||
Category.navigatorCallback = function(topIndex, bottomIndex) {
|
||||
return bottomIndex;
|
||||
};
|
||||
|
||||
|
||||
@@ -2,7 +2,8 @@
|
||||
|
||||
/* globals define, socket, app, ajaxify, templates, bootbox */
|
||||
|
||||
define('forum/chats/messages', ['components', 'sounds', 'translator'], function(components, sounds, translator) {
|
||||
define('forum/chats/messages', ['components', 'sounds', 'translator'], function(components, sounds, trans) {
|
||||
var translator = trans.Translator.create();
|
||||
|
||||
var messages = {};
|
||||
|
||||
@@ -74,7 +75,7 @@ define('forum/chats/messages', ['components', 'sounds', 'translator'], function(
|
||||
templates.parse('partials/chat_message' + (Array.isArray(data) ? 's' : ''), {
|
||||
messages: data
|
||||
}, function(html) {
|
||||
translator.translate(html, callback);
|
||||
translator.translate(html).then(callback);
|
||||
});
|
||||
};
|
||||
|
||||
@@ -119,7 +120,7 @@ define('forum/chats/messages', ['components', 'sounds', 'translator'], function(
|
||||
};
|
||||
|
||||
messages.delete = function(messageId, roomId) {
|
||||
translator.translate('[[modules:chat.delete_message_confirm]]', function(translated) {
|
||||
translator.translate('[[modules:chat.delete_message_confirm]]').then(function(translated) {
|
||||
bootbox.confirm(translated, function(ok) {
|
||||
if (!ok) {
|
||||
return;
|
||||
|
||||
@@ -3,7 +3,9 @@
|
||||
/* globals define, app, utils, socket, config, ajaxify, bootbox */
|
||||
|
||||
|
||||
define('forum/register', ['translator'], function(translator) {
|
||||
define('forum/register', ['translator'], function(trans) {
|
||||
var translator = trans.Translator.create();
|
||||
|
||||
var Register = {},
|
||||
validationError = false,
|
||||
successIcon = '';
|
||||
@@ -88,16 +90,14 @@ define('forum/register', ['translator'], function(translator) {
|
||||
if (data.referrer) {
|
||||
window.location.href = data.referrer;
|
||||
} else if (data.message) {
|
||||
require(['translator'], function(translator) {
|
||||
translator.translate(data.message, function(msg) {
|
||||
bootbox.alert(msg);
|
||||
ajaxify.go('/');
|
||||
});
|
||||
translator.translate(data.message).then(function(msg) {
|
||||
bootbox.alert(msg);
|
||||
ajaxify.go('/');
|
||||
});
|
||||
}
|
||||
},
|
||||
error: function(data) {
|
||||
translator.translate(data.responseText, config.defaultLang, function(translated) {
|
||||
translator.translate(data.responseText).then(function(translated) {
|
||||
if (data.status === 403 && data.responseText === 'Forbidden') {
|
||||
window.location.href = config.relative_path + '/register?error=csrf-invalid';
|
||||
} else {
|
||||
@@ -208,7 +208,7 @@ define('forum/register', ['translator'], function(translator) {
|
||||
}
|
||||
|
||||
function showError(element, msg) {
|
||||
translator.translate(msg, function(msg) {
|
||||
translator.translate(msg).then(function(msg) {
|
||||
element.html(msg);
|
||||
element.parent()
|
||||
.removeClass('register-success')
|
||||
@@ -219,7 +219,7 @@ define('forum/register', ['translator'], function(translator) {
|
||||
}
|
||||
|
||||
function showSuccess(element, msg) {
|
||||
translator.translate(msg, function(msg) {
|
||||
translator.translate(msg).then(function(msg) {
|
||||
element.html(msg);
|
||||
element.parent()
|
||||
.removeClass('register-danger')
|
||||
|
||||
@@ -2,7 +2,8 @@
|
||||
|
||||
/* globals define, app, ajaxify, bootbox, socket, templates, utils, config */
|
||||
|
||||
define('forum/topic/postTools', ['share', 'navigator', 'components', 'translator'], function(share, navigator, components, translator) {
|
||||
define('forum/topic/postTools', ['share', 'navigator', 'components', 'translator'], function(share, navigator, components, trans) {
|
||||
var translator = trans.Translator.create();
|
||||
|
||||
var PostTools = {};
|
||||
|
||||
@@ -40,7 +41,7 @@ define('forum/topic/postTools', ['share', 'navigator', 'components', 'translator
|
||||
data.posts.display_move_tools = data.posts.display_move_tools && index !== 0;
|
||||
|
||||
templates.parse('partials/topic/post-menu-list', data, function(html) {
|
||||
translator.translate(html, function(html) {
|
||||
translator.translate(html).then(function(html) {
|
||||
dropdownMenu.html(html);
|
||||
$(window).trigger('action:post.tools.load');
|
||||
});
|
||||
@@ -115,7 +116,7 @@ define('forum/topic/postTools', ['share', 'navigator', 'components', 'translator
|
||||
}
|
||||
if (usernames.length + data.otherCount > 6) {
|
||||
usernames = usernames.join(', ').replace(/,/g, '|');
|
||||
translator.translate('[[topic:users_and_others, ' + usernames + ', ' + data.otherCount + ']]', function(translated) {
|
||||
translator.translate('[[topic:users_and_others, ' + usernames + ', ' + data.otherCount + ']]').then(function(translated) {
|
||||
translated = translated.replace(/\|/g, ',');
|
||||
doCreateTooltip(translated);
|
||||
});
|
||||
@@ -141,7 +142,7 @@ define('forum/topic/postTools', ['share', 'navigator', 'components', 'translator
|
||||
});
|
||||
|
||||
$('.topic').on('click', '[component="topic/reply-as-topic"]', function() {
|
||||
translator.translate('[[topic:link_back, ' + ajaxify.data.titleRaw + ', ' + config.relative_path + '/topic/' + ajaxify.data.slug + ']]', function(body) {
|
||||
translator.translate('[[topic:link_back, ' + ajaxify.data.titleRaw + ', ' + config.relative_path + '/topic/' + ajaxify.data.slug + ']]').then(function(body) {
|
||||
$(window).trigger('action:composer.topic.new', {
|
||||
cid: ajaxify.data.cid,
|
||||
body: body
|
||||
@@ -377,7 +378,7 @@ define('forum/topic/postTools', ['share', 'navigator', 'components', 'translator
|
||||
}
|
||||
|
||||
templates.parse('partials/modals/votes_modal', data, function(html) {
|
||||
translator.translate(html, function(translated) {
|
||||
translator.translate(html).then(function(translated) {
|
||||
var dialog = bootbox.dialog({
|
||||
title: 'Voters',
|
||||
message: translated,
|
||||
@@ -429,7 +430,7 @@ define('forum/topic/postTools', ['share', 'navigator', 'components', 'translator
|
||||
}
|
||||
|
||||
function postAction(action, pid, tid) {
|
||||
translator.translate('[[topic:post_' + action + '_confirm]]', function(msg) {
|
||||
translator.translate('[[topic:post_' + action + '_confirm]]').then(function(msg) {
|
||||
bootbox.confirm(msg, function(confirm) {
|
||||
if (!confirm) {
|
||||
return;
|
||||
@@ -480,7 +481,7 @@ define('forum/topic/postTools', ['share', 'navigator', 'components', 'translator
|
||||
|
||||
function parseMoveModal(callback) {
|
||||
templates.parse('partials/move_post_modal', {}, function(html) {
|
||||
translator.translate(html, callback);
|
||||
translator.translate(html).then(callback);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -521,7 +522,7 @@ define('forum/topic/postTools', ['share', 'navigator', 'components', 'translator
|
||||
return callback();
|
||||
}
|
||||
|
||||
translator.translate('[[topic:stale.warning]]', function(translated) {
|
||||
translator.translate('[[topic:stale.warning]]').then(function(translated) {
|
||||
var warning = bootbox.dialog({
|
||||
title: '[[topic:stale.title]]',
|
||||
message: translated,
|
||||
@@ -538,7 +539,7 @@ define('forum/topic/postTools', ['share', 'navigator', 'components', 'translator
|
||||
label: '[[topic:stale.create]]',
|
||||
className: 'btn-primary',
|
||||
callback: function() {
|
||||
translator.translate('[[topic:link_back, ' + ajaxify.data.title + ', ' + config.relative_path + '/topic/' + ajaxify.data.slug + ']]', function(body) {
|
||||
translator.translate('[[topic:link_back, ' + ajaxify.data.title + ', ' + config.relative_path + '/topic/' + ajaxify.data.slug + ']]').then(function(body) {
|
||||
$(window).trigger('action:composer.topic.new', {
|
||||
cid: ajaxify.data.cid,
|
||||
body: body
|
||||
|
||||
@@ -8,7 +8,8 @@ define('forum/topic/threadTools', [
|
||||
'forum/topic/delete-posts',
|
||||
'components',
|
||||
'translator'
|
||||
], function(fork, move, deletePosts, components, translator) {
|
||||
], function(fork, move, deletePosts, components, trans) {
|
||||
var translator = trans.Translator.create();
|
||||
|
||||
var ThreadTools = {};
|
||||
|
||||
@@ -142,7 +143,7 @@ define('forum/topic/threadTools', [
|
||||
}
|
||||
|
||||
templates.parse('partials/topic/topic-menu-list', data, function(html) {
|
||||
translator.translate(html, function(html) {
|
||||
translator.translate(html).then(function(html) {
|
||||
dropdownMenu.html(html);
|
||||
$(window).trigger('action:topic.tools.load');
|
||||
});
|
||||
@@ -152,7 +153,7 @@ define('forum/topic/threadTools', [
|
||||
}
|
||||
|
||||
function topicCommand(command, tid) {
|
||||
translator.translate('[[topic:thread_tools.' + command + '_confirm]]', function(msg) {
|
||||
translator.translate('[[topic:thread_tools.' + command + '_confirm]]').then(function(msg) {
|
||||
bootbox.confirm(msg, function(confirm) {
|
||||
if (!confirm) {
|
||||
return;
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
'use strict';
|
||||
/* globals define, templates */
|
||||
|
||||
define('alerts', ['translator', 'components'], function(translator, components) {
|
||||
define('alerts', ['translator', 'components'], function(trans, components) {
|
||||
var translator = trans.Translator.create();
|
||||
var module = {};
|
||||
|
||||
module.alert = function (params) {
|
||||
@@ -20,7 +21,7 @@ define('alerts', ['translator', 'components'], function(translator, components)
|
||||
|
||||
function createNew(params) {
|
||||
templates.parse('alert', params, function(alertTpl) {
|
||||
translator.translate(alertTpl, function(translatedHTML) {
|
||||
translator.translate(alertTpl).then(function(translatedHTML) {
|
||||
var alert = $('#' + params.alert_id);
|
||||
if (alert.length) {
|
||||
return updateAlert(alert, params);
|
||||
@@ -71,7 +72,7 @@ define('alerts', ['translator', 'components'], function(translator, components)
|
||||
}
|
||||
|
||||
alert.children().fadeOut(100);
|
||||
translator.translate(alert.html(), function(translatedHTML) {
|
||||
translator.translate(alert.html()).then(function(translatedHTML) {
|
||||
alert.children().fadeIn(100);
|
||||
alert.html(translatedHTML);
|
||||
});
|
||||
|
||||
@@ -9,7 +9,8 @@ define('chat', [
|
||||
'forum/chats',
|
||||
'forum/chats/messages',
|
||||
'translator'
|
||||
], function(components, taskbar, S, sounds, Chats, ChatsMessages, translator) {
|
||||
], function(components, taskbar, S, sounds, Chats, ChatsMessages, trans) {
|
||||
var translator = trans.Translator.create();
|
||||
|
||||
var module = {};
|
||||
var newMessage = false;
|
||||
@@ -116,7 +117,7 @@ define('chat', [
|
||||
templates.parse('partials/chat_dropdown', {
|
||||
rooms: rooms
|
||||
}, function(html) {
|
||||
translator.translate(html, function(translated) {
|
||||
translator.translate(html).then(function(translated) {
|
||||
chatsListEl.empty().html(translated);
|
||||
app.createUserTooltips(chatsListEl, 'right');
|
||||
});
|
||||
@@ -162,7 +163,7 @@ define('chat', [
|
||||
|
||||
module.createModal = function(data, callback) {
|
||||
templates.parse('chat', data, function(chatTpl) {
|
||||
translator.translate(chatTpl, function (chatTpl) {
|
||||
translator.translate(chatTpl).then(function (chatTpl) {
|
||||
|
||||
var chatModal = $(chatTpl),
|
||||
uuid = utils.generateUUID(),
|
||||
@@ -337,7 +338,7 @@ define('chat', [
|
||||
});
|
||||
};
|
||||
|
||||
module.disableMobileBehaviour = function(modalEl) {
|
||||
module.disableMobileBehaviour = function() {
|
||||
app.toggleNavbar(true);
|
||||
};
|
||||
|
||||
@@ -345,7 +346,6 @@ define('chat', [
|
||||
var totalHeight = modalEl.find('.modal-content').outerHeight() - modalEl.find('.modal-header').outerHeight();
|
||||
var padding = parseInt(modalEl.find('.modal-body').css('padding-top'), 10) + parseInt(modalEl.find('.modal-body').css('padding-bottom'), 10);
|
||||
var contentMargin = parseInt(modalEl.find('.chat-content').css('margin-top'), 10) + parseInt(modalEl.find('.chat-content').css('margin-bottom'), 10);
|
||||
var sinceHeight = modalEl.find('.since-bar').outerHeight(true);
|
||||
var inputGroupHeight = modalEl.find('.input-group').outerHeight();
|
||||
|
||||
return totalHeight - padding - contentMargin - inputGroupHeight;
|
||||
|
||||
106
public/src/modules/translator.d.ts
vendored
Normal file
106
public/src/modules/translator.d.ts
vendored
Normal file
@@ -0,0 +1,106 @@
|
||||
|
||||
/// <reference path="../../../node_modules/@types/es6-promise/index.d.ts" />
|
||||
|
||||
interface Translator {
|
||||
/**
|
||||
* Parse the translation instructions into the language of the Translator instance
|
||||
* @param str - Source string
|
||||
*/
|
||||
translate(str: string): Promise<string>;
|
||||
|
||||
/**
|
||||
* Translates a specific key and array of arguments
|
||||
* @param name - Translation key (ex. 'global:home')
|
||||
* @param args - Arguments for `%1`, `%2`, etc
|
||||
*/
|
||||
translateKey(name: string, args: string[]): Promise<string>;
|
||||
|
||||
/**
|
||||
* Load translation file (or use a cached version), and optionally return the translation of a certain key
|
||||
* @param namespace - The file name of the translation namespace
|
||||
* @param key - The key of the specific translation to getJSON
|
||||
*/
|
||||
getTranslation(namespace: string, key?:string): Promise<Object|string>;
|
||||
}
|
||||
|
||||
interface TranslatorFactory {
|
||||
/**
|
||||
* Construct a new Translator object
|
||||
* @param language - Language code for this Translator instance
|
||||
*/
|
||||
new(language: string): Translator;
|
||||
|
||||
/**
|
||||
* Get the language of the current environment, falling back to defaults
|
||||
*/
|
||||
getLanguage(): string;
|
||||
|
||||
/**
|
||||
* Create and cache a new Translator instance, or return a cached one
|
||||
* @param language - Language code
|
||||
*/
|
||||
create(language?: string): Translator;
|
||||
|
||||
cache: { [key: string]: Translator; };
|
||||
}
|
||||
|
||||
interface Callback {
|
||||
(err: Error, data: any): void;
|
||||
}
|
||||
|
||||
interface TranslatorAdaptor {
|
||||
/**
|
||||
* The Translator class
|
||||
*/
|
||||
Translator: TranslatorFactory;
|
||||
|
||||
/**
|
||||
* Legacy translator function for backwards compatibility
|
||||
*/
|
||||
translate(text: string, language: string, callback: Callback);
|
||||
translate(text: string, callback: Callback);
|
||||
|
||||
/**
|
||||
* Construct a translator pattern
|
||||
* @param name - Translation name
|
||||
* @param args - Optional arguments for the pattern
|
||||
*/
|
||||
compile(name: string, ...args: string[]): string;
|
||||
|
||||
/**
|
||||
* Escape translation patterns from text
|
||||
*/
|
||||
escape(text): string;
|
||||
|
||||
/**
|
||||
* Unescape translation patterns from text
|
||||
*/
|
||||
unescape(text): string;
|
||||
|
||||
/**
|
||||
* Add translations to the cache
|
||||
*/
|
||||
addTranslation(language: string, filename: string, translation: { [key: string]: string });
|
||||
|
||||
/**
|
||||
* Get the translations object
|
||||
*/
|
||||
getTranslations(language: string, filename: string, callback?: Callback);
|
||||
|
||||
/**
|
||||
* Alias of TranslatorAdaptor.getTranslations
|
||||
*/
|
||||
load(language: string, filename: string, callback?: Callback);
|
||||
|
||||
/**
|
||||
* Get the language of the current environment, falling back to defaults
|
||||
*/
|
||||
getLanguage(): string;
|
||||
|
||||
toggleTimeagoShorthand();
|
||||
prepareDOM();
|
||||
}
|
||||
|
||||
declare var adaptor: TranslatorAdaptor;
|
||||
|
||||
export = adaptor;
|
||||
Reference in New Issue
Block a user