From f0cc9120bad9e44a99df16e9534e0ec815609574 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Wed, 17 Feb 2016 09:23:04 +0200 Subject: [PATCH 001/124] fix undefined next --- src/groups/membership.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/groups/membership.js b/src/groups/membership.js index a9ce84405f..cb37121a40 100644 --- a/src/groups/membership.js +++ b/src/groups/membership.js @@ -15,19 +15,19 @@ module.exports = function(Groups) { function join() { var tasks = [ async.apply(db.sortedSetAdd, 'group:' + groupName + ':members', Date.now(), uid), - async.apply(db.incrObjectField, 'group:' + groupName, 'memberCount') + async.apply(db.incrObjectField, 'group:' + groupName, 'memberCount') ]; async.waterfall([ function(next) { async.parallel({ isAdmin: function(next) { - user.isAdministrator(uid, next); + user.isAdministrator(uid, next); }, isHidden: function(next) { Groups.isHidden(groupName, next); } - }, next); + }, next); }, function(results, next) { if (results.isAdmin) { @@ -213,10 +213,10 @@ module.exports = function(Groups) { Groups.destroy(groupName, callback); } else { if (parseInt(groupData.hidden, 10) !== 1) { - db.sortedSetAdd('groups:visible:memberCount', groupData.memberCount, groupName, next); + db.sortedSetAdd('groups:visible:memberCount', groupData.memberCount, groupName, callback); } else { - callback(); - } + callback(); + } } }); }); From 3348d51f6949bee4c76d76d42bdb80c1d081f13d Mon Sep 17 00:00:00 2001 From: barisusakli Date: Wed, 17 Feb 2016 10:16:14 +0200 Subject: [PATCH 002/124] closes #4185 --- public/language/en_GB/users.json | 2 -- 1 file changed, 2 deletions(-) diff --git a/public/language/en_GB/users.json b/public/language/en_GB/users.json index 1232555be5..e693bf6333 100644 --- a/public/language/en_GB/users.json +++ b/public/language/en_GB/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter By", "online-only": "Online only", - "picture-only": "Picture only", "invite": "Invite", "invitation-email-sent": "An invitation email has been sent to %1", "user_list": "User List", @@ -17,6 +16,5 @@ "unread_topics": "Unread Topics", "categories": "Categories", "tags": "Tags", - "map": "Map", "no-users-found": "No users found!" } \ No newline at end of file From 3d4e058b6a76bcb9aa624bdd336725f183e006da Mon Sep 17 00:00:00 2001 From: barisusakli Date: Wed, 17 Feb 2016 17:56:37 +0200 Subject: [PATCH 003/124] closes #4192 --- src/routes/index.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/routes/index.js b/src/routes/index.js index 96ff880db0..7e84f29af1 100644 --- a/src/routes/index.js +++ b/src/routes/index.js @@ -173,11 +173,11 @@ function handle404(app, middleware) { res.status(404); if (res.locals.isAPI) { - return res.json({path: req.path.replace(/^\/api/, ''), title: '[[global:404.title]]'}); + return res.json({path: validator.escape(req.path.replace(/^\/api/, '') || ''), title: '[[global:404.title]]'}); } middleware.buildHeader(req, res, function() { - res.render('404', {path: req.path, title: '[[global:404.title]]'}); + res.render('404', {path: validator.escape(req.path || ''), title: '[[global:404.title]]'}); }); } else { res.status(404).type('txt').send('Not found'); @@ -201,10 +201,10 @@ function handleErrors(app, middleware) { res.status(err.status || 500); if (res.locals.isAPI) { - res.json({path: req.path, error: err.message}); + res.json({path: validator.escape(req.path || ''), error: err.message}); } else { middleware.buildHeader(req, res, function() { - res.render('500', {path: req.path, error: validator.escape(err.message)}); + res.render('500', {path: validator.escape(req.path || ''), error: validator.escape(err.message)}); }); } }); From 8c3b52ef368dc0f87e2f50e1ff758fb4b3fcc3b4 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Wed, 17 Feb 2016 18:24:58 +0200 Subject: [PATCH 004/124] closes #4096 --- public/less/admin/manage/groups.less | 6 ------ public/less/generics.less | 3 +-- public/src/admin/manage/group.js | 4 +++- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/public/less/admin/manage/groups.less b/public/less/admin/manage/groups.less index ceeba06df7..f0de916162 100644 --- a/public/less/admin/manage/groups.less +++ b/public/less/admin/manage/groups.less @@ -10,11 +10,5 @@ width: 100%; } } - - - img { - width: 32px; - height: 32px; - } } } \ No newline at end of file diff --git a/public/less/generics.less b/public/less/generics.less index e4cc7c8c43..5337609b4f 100644 --- a/public/less/generics.less +++ b/public/less/generics.less @@ -29,8 +29,7 @@ background: #eee; } - img, .user-icon { - .user-icon-style(36px, 1.8rem); + .avatar { float: left; margin-right: 1rem; } diff --git a/public/src/admin/manage/group.js b/public/src/admin/manage/group.js index 99bbbf2958..58c5017540 100644 --- a/public/src/admin/manage/group.js +++ b/public/src/admin/manage/group.js @@ -61,7 +61,9 @@ define('admin/manage/group', [ 'data-usericon-bgColor': results.users[x]['icon:bgColor'], 'data-usericon-text': results.users[x]['icon:text'] }) - .append(results.users[x].picture ? $('').attr('src', results.users[x].picture) : $('
').addClass('user-icon').css('background-color', results.users[x]['icon:bgColor']).html(results.users[x]['icon:text'])) + .append(results.users[x].picture ? + $('').addClass('avatar avatar-sm').attr('src', results.users[x].picture) : + $('
').addClass('avatar avatar-sm').css('background-color', results.users[x]['icon:bgColor']).html(results.users[x]['icon:text'])) .append($('').html(results.users[x].username)); groupDetailsSearchResults.append(foundUser); From 6a98758a013f365a6398a2cbf6c5a475e93b885d Mon Sep 17 00:00:00 2001 From: barisusakli Date: Wed, 17 Feb 2016 18:38:09 +0200 Subject: [PATCH 005/124] closes https://github.com/NodeBB/nodebb-theme-lavender/issues/60 --- public/src/app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/src/app.js b/public/src/app.js index db240575e7..aa6137f003 100644 --- a/public/src/app.js +++ b/public/src/app.js @@ -171,7 +171,7 @@ app.cacheBuster = null; app.createUserTooltips = function(els) { els = els || $('body'); - els.find('img[title].teaser-pic,img[title].user-img,div.user-icon,span.user-icon').each(function() { + els.find('.avatar,img[title].teaser-pic,img[title].user-img,div.user-icon,span.user-icon').each(function() { if (!utils.isTouchDevice()) { $(this).tooltip({ placement: 'top', From 58a8c8d205a166976e4883a2995e74dfdfa4beb5 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Wed, 17 Feb 2016 19:07:11 +0200 Subject: [PATCH 006/124] up themes widgets --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 0809a2d2de..cac28d5ab9 100644 --- a/package.json +++ b/package.json @@ -52,9 +52,9 @@ "nodebb-plugin-spam-be-gone": "0.4.5", "nodebb-rewards-essentials": "0.0.6", "nodebb-theme-lavender": "3.0.6", - "nodebb-theme-persona": "4.0.72", - "nodebb-theme-vanilla": "5.0.43", - "nodebb-widget-essentials": "2.0.5", + "nodebb-theme-persona": "4.0.73", + "nodebb-theme-vanilla": "5.0.44", + "nodebb-widget-essentials": "2.0.6", "nodemailer": "2.0.0", "nodemailer-sendmail-transport": "1.0.0", "passport": "^0.3.0", From 654961ca3b560e5a3225708aa52e9ad6183d0c1e Mon Sep 17 00:00:00 2001 From: barisusakli Date: Wed, 17 Feb 2016 20:15:14 +0200 Subject: [PATCH 007/124] style --- src/categories.js | 65 ++++++++++++++++++++++++----------------------- 1 file changed, 33 insertions(+), 32 deletions(-) diff --git a/src/categories.js b/src/categories.js index 1cfea81bda..cd2b18a787 100644 --- a/src/categories.js +++ b/src/categories.js @@ -1,15 +1,13 @@ 'use strict'; -var async = require('async'), - nconf = require('nconf'), +var async = require('async'); - db = require('./database'), - user = require('./user'), - Groups = require('./groups'), - plugins = require('./plugins'), - validator = require('validator'), - privileges = require('./privileges'); +var db = require('./database'); +var user = require('./user'); +var Groups = require('./groups'); +var plugins = require('./plugins'); +var privileges = require('./privileges'); (function(Categories) { @@ -27,37 +25,40 @@ var async = require('async'), }; Categories.getCategoryById = function(data, callback) { - Categories.getCategories([data.cid], data.uid, function(err, categories) { - if (err || !Array.isArray(categories) || !categories[0]) { - return callback(err || new Error('[[error:invalid-cid]]')); - } - var category = categories[0]; - - if (parseInt(data.uid, 10)) { - Categories.markAsRead([data.cid], data.uid); - } - - async.parallel({ - topics: function(next) { - Categories.getCategoryTopics(data, next); - }, - isIgnored: function(next) { - Categories.isIgnored([data.cid], data.uid, next); + var category; + async.waterfall([ + function (next) { + Categories.getCategories([data.cid], data.uid, next); + }, + function (categories, next) { + if (!Array.isArray(categories) || !categories[0]) { + return next(new Error('[[error:invalid-cid]]')); } - }, function(err, results) { - if(err) { - return callback(err); + category = categories[0]; + if (parseInt(data.uid, 10)) { + Categories.markAsRead([data.cid], data.uid); } + async.parallel({ + topics: function(next) { + Categories.getCategoryTopics(data, next); + }, + isIgnored: function(next) { + Categories.isIgnored([data.cid], data.uid, next); + } + }, next); + }, + function (results, next) { category.topics = results.topics.topics; category.nextStart = results.topics.nextStart; category.isIgnored = results.isIgnored[0]; - plugins.fireHook('filter:category.get', {category: category, uid: data.uid}, function(err, data) { - callback(err, data ? data.category : null); - }); - }); - }); + plugins.fireHook('filter:category.get', {category: category, uid: data.uid}, next); + }, + function (data, next) { + next(null, data.category); + } + ], callback); }; Categories.isIgnored = function(cids, uid, callback) { From e306194065768c814733b948eadfc4c75d534e1a Mon Sep 17 00:00:00 2001 From: barisusakli Date: Wed, 17 Feb 2016 20:22:00 +0200 Subject: [PATCH 008/124] style --- src/emailer.js | 46 ++++++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/src/emailer.js b/src/emailer.js index 7e2466b09f..ce8e182653 100644 --- a/src/emailer.js +++ b/src/emailer.js @@ -1,24 +1,26 @@ "use strict"; -var async = require('async'), - winston = require('winston'), - nconf = require('nconf'), - templates = require('templates.js'), - nodemailer = require('nodemailer'), - sendmailTransport = require('nodemailer-sendmail-transport'), - htmlToText = require('html-to-text'), - url = require('url'), - - User = require('./user'), - Plugins = require('./plugins'), - meta = require('./meta'), - translator = require('../public/src/modules/translator'), - - transports = { - sendmail: nodemailer.createTransport(sendmailTransport()), - gmail: undefined - }, - app, fallbackTransport; +var async = require('async'); +var winston = require('winston'); +var nconf = require('nconf'); +var templates = require('templates.js'); +var nodemailer = require('nodemailer'); +var sendmailTransport = require('nodemailer-sendmail-transport'); +var htmlToText = require('html-to-text'); +var url = require('url'); + +var User = require('./user'); +var Plugins = require('./plugins'); +var meta = require('./meta'); +var translator = require('../public/src/modules/translator'); + +var transports = { + sendmail: nodemailer.createTransport(sendmailTransport()), + gmail: undefined +}; + +var app; +var fallbackTransport; (function(Emailer) { Emailer.registerApp = function(expressApp) { @@ -152,11 +154,11 @@ var async = require('async'), } function getHostname() { - var configUrl = nconf.get('url'), - parsed = url.parse(configUrl); + var configUrl = nconf.get('url'); + var parsed = url.parse(configUrl); return parsed.hostname; - }; + } }(module.exports)); From 759b1839677d1ffb7ea57a780a773b66be44e711 Mon Sep 17 00:00:00 2001 From: psychobunny Date: Wed, 17 Feb 2016 18:49:07 -0500 Subject: [PATCH 009/124] fixes a bug in instant updates on category view --- public/src/client/categories.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/src/client/categories.js b/public/src/client/categories.js index 32f6af67c3..03885a4e23 100644 --- a/public/src/client/categories.js +++ b/public/src/client/categories.js @@ -59,7 +59,7 @@ define('forum/categories', ['components', 'translator'], function(components, tr } function parseAndTranslate(posts, callback) { - templates.parse('categories', 'posts', {categories: {posts: posts}}, function(html) { + templates.parse('categories', 'categories.posts', {categories: {posts: posts}}, function(html) { translator.translate(html, function(translatedHTML) { translatedHTML = $(translatedHTML); translatedHTML.find('img:not(.not-responsive)').addClass('img-responsive'); From 2fc385f723f3e8467e5a9fc20e5b9ed4dd4c919d Mon Sep 17 00:00:00 2001 From: barisusakli Date: Thu, 18 Feb 2016 18:32:08 +0200 Subject: [PATCH 010/124] closes #4141, closes #4149 --- public/src/client/topic.js | 5 ++-- public/src/client/topic/postTools.js | 25 +++++++--------- public/src/client/topic/posts.js | 6 ---- src/controllers/topics.js | 45 +++++++++++++++------------- src/notifications.js | 7 ++--- src/topics/data.js | 2 +- tests/topics.js | 27 +++++++++++++---- 7 files changed, 63 insertions(+), 54 deletions(-) diff --git a/public/src/client/topic.js b/public/src/client/topic.js index c1c58f2862..1179bdb331 100644 --- a/public/src/client/topic.js +++ b/public/src/client/topic.js @@ -215,10 +215,11 @@ define('forum/topic', [ } function updateTopicTitle() { + var span = components.get('navbar/title').find('span'); if ($(window).scrollTop() > 50) { - components.get('navbar/title').find('span').text(ajaxify.data.title).show(); + span.html(ajaxify.data.titleEscaped).show(); } else { - components.get('navbar/title').find('span').text('').hide(); + span.html('').hide(); } app.removeAlert('bookmark'); } diff --git a/public/src/client/topic/postTools.js b/public/src/client/topic/postTools.js index cf594041b6..33199f7f0b 100644 --- a/public/src/client/topic/postTools.js +++ b/public/src/client/topic/postTools.js @@ -4,17 +4,14 @@ define('forum/topic/postTools', ['share', 'navigator', 'components', 'translator'], function(share, navigator, components, translator) { - var PostTools = {}, - topicName; + var PostTools = {}; PostTools.init = function(tid) { - topicName = ajaxify.data.title; - renderMenu(); addPostHandlers(tid); - share.addShareHandlers(topicName); + share.addShareHandlers(ajaxify.data.title); addVoteHandler(); @@ -106,15 +103,15 @@ define('forum/topic/postTools', ['share', 'navigator', 'components', 'translator var postContainer = components.get('topic'); postContainer.on('click', '[component="post/quote"]', function() { - onQuoteClicked($(this), tid, topicName); + onQuoteClicked($(this), tid); }); postContainer.on('click', '[component="post/reply"]', function() { - onReplyClicked($(this), tid, topicName); + onReplyClicked($(this), tid); }); $('.topic').on('click', '[component="topic/reply"]', function() { - onReplyClicked($(this), tid, topicName); + onReplyClicked($(this), tid); }); $('.topic').on('click', '[component="topic/reply-as-topic"]', function() { @@ -174,7 +171,7 @@ define('forum/topic/postTools', ['share', 'navigator', 'components', 'translator }); } - function onReplyClicked(button, tid, topicName) { + function onReplyClicked(button, tid) { showStaleWarning(function(proceed) { if (!proceed) { var selectionText = '', @@ -197,7 +194,7 @@ define('forum/topic/postTools', ['share', 'navigator', 'components', 'translator slug: ajaxify.data.slug, index: getData(button, 'data-index'), pid: toPid, - topicName: topicName, + topicName: ajaxify.data.title, username: username, text: selectionText }); @@ -205,7 +202,7 @@ define('forum/topic/postTools', ['share', 'navigator', 'components', 'translator $(window).trigger('action:composer.post.new', { tid: tid, pid: toPid, - topicName: topicName, + topicName: ajaxify.data.title, text: username ? username + ' ' : '' }); } @@ -213,7 +210,7 @@ define('forum/topic/postTools', ['share', 'navigator', 'components', 'translator }); } - function onQuoteClicked(button, tid, topicName) { + function onQuoteClicked(button, tid) { showStaleWarning(function(proceed) { if (!proceed) { var username = getUserName(button), @@ -230,7 +227,7 @@ define('forum/topic/postTools', ['share', 'navigator', 'components', 'translator index: getData(button, 'data-index'), pid: pid, username: username, - topicName: topicName, + topicName: ajaxify.data.title, text: post }); }); @@ -368,7 +365,7 @@ define('forum/topic/postTools', ['share', 'navigator', 'components', 'translator }); topicId.on('keyup change', function() { - moveBtn.attr('disabled', !topicId.val()) + moveBtn.attr('disabled', !topicId.val()); }); moveBtn.on('click', function() { diff --git a/public/src/client/topic/posts.js b/public/src/client/topic/posts.js index 6182b4c554..e05017c767 100644 --- a/public/src/client/topic/posts.js +++ b/public/src/client/topic/posts.js @@ -138,12 +138,6 @@ define('forum/topic/posts', [ before = repliesSelector.first(); } - data.title = $('
').text(ajaxify.data.title).html(); - data.slug = ajaxify.data.slug; - data.tags = ajaxify.data.tags; - data.viewcount = ajaxify.data.viewcount; - data.isFollowing = ajaxify.data.isFollowing; - $(window).trigger('action:posts.loading', {posts: data.posts, after: after, before: before}); app.parseAndTranslate('topic', 'posts', data, function(html) { diff --git a/src/controllers/topics.js b/src/controllers/topics.js index 018d1e83eb..2690943247 100644 --- a/src/controllers/topics.js +++ b/src/controllers/topics.js @@ -1,26 +1,29 @@ "use strict"; -var topicsController = {}, - async = require('async'), - S = require('string'), - nconf = require('nconf'), - - user = require('../user'), - meta = require('../meta'), - topics = require('../topics'), - posts = require('../posts'), - privileges = require('../privileges'), - plugins = require('../plugins'), - helpers = require('./helpers'), - pagination = require('../pagination'), - utils = require('../../public/src/utils'); + +var async = require('async'); +var S = require('string'); +var nconf = require('nconf'); +var validator = require('validator'); + +var user = require('../user'); +var meta = require('../meta'); +var topics = require('../topics'); +var posts = require('../posts'); +var privileges = require('../privileges'); +var plugins = require('../plugins'); +var helpers = require('./helpers'); +var pagination = require('../pagination'); +var utils = require('../../public/src/utils'); + +var topicsController = {}; topicsController.get = function(req, res, callback) { - var tid = req.params.topic_id, - sort = req.query.sort, - currentPage = parseInt(req.query.page, 10) || 1, - pageCount = 1, - userPrivileges; + var tid = req.params.topic_id; + var sort = req.query.sort; + var currentPage = parseInt(req.query.page, 10) || 1; + var pageCount = 1; + var userPrivileges; if ((req.params.post_index && !utils.isNumber(req.params.post_index)) || !utils.isNumber(tid)) { return callback(); @@ -128,7 +131,7 @@ topicsController.get = function(req, res, callback) { url: nconf.get('relative_path') + '/category/' + data.topicData.category.slug }, { - text: data.topicData.title + text: validator.escape(data.topicData.title) } ]; @@ -187,7 +190,7 @@ topicsController.get = function(req, res, callback) { }, { property: 'og:title', - content: topicData.title.replace(/&/g, '&') + content: topicData.title }, { property: 'og:description', diff --git a/src/notifications.js b/src/notifications.js index cb68e347ff..8d984f11c3 100644 --- a/src/notifications.js +++ b/src/notifications.js @@ -44,9 +44,6 @@ var async = require('async'), return next(null, null); } - if (notification.bodyShort) { - notification.bodyShort = S(notification.bodyShort).escapeHTML().s; - } if (notification.bodyLong) { notification.bodyLong = S(notification.bodyLong).escapeHTML().s; } @@ -388,9 +385,9 @@ var async = require('async'), var numUsers = usernames.length; if (numUsers === 2) { - notifications[modifyIndex].bodyShort = '[[' + mergeId + '_dual, ' + usernames.join(', ') + ', ' + notifications[modifyIndex].topicTitle + ']]' + notifications[modifyIndex].bodyShort = '[[' + mergeId + '_dual, ' + usernames.join(', ') + ', ' + notifications[modifyIndex].topicTitle + ']]'; } else if (numUsers > 2) { - notifications[modifyIndex].bodyShort = '[[' + mergeId + '_multiple, ' + usernames[0] + ', ' + (numUsers-1) + ', ' + notifications[modifyIndex].topicTitle + ']]' + notifications[modifyIndex].bodyShort = '[[' + mergeId + '_multiple, ' + usernames[0] + ', ' + (numUsers-1) + ', ' + notifications[modifyIndex].topicTitle + ']]'; } break; } diff --git a/src/topics/data.js b/src/topics/data.js index 458aac2894..92a4a89355 100644 --- a/src/topics/data.js +++ b/src/topics/data.js @@ -58,7 +58,7 @@ module.exports = function(Topics) { if (!topic) { return; } - topic.title = validator.escape(topic.title); + topic.titleEscaped = validator.escape(topic.title); topic.relativeTime = utils.toISOString(topic.timestamp); topic.lastposttimeISO = utils.toISOString(topic.lastposttime); } diff --git a/tests/topics.js b/tests/topics.js index bdc15643ba..ff12d84375 100644 --- a/tests/topics.js +++ b/tests/topics.js @@ -1,11 +1,12 @@ 'use strict'; /*global require, before, beforeEach, after*/ -var assert = require('assert'), - db = require('./mocks/databasemock'), - topics = require('../src/topics'), - categories = require('../src/categories'), - User = require('../src/user'); +var assert = require('assert'); +var validator = require('validator'); +var db = require('./mocks/databasemock'); +var topics = require('../src/topics'); +var categories = require('../src/categories'); +var User = require('../src/user'); describe('Topic\'s', function() { var topic, @@ -144,6 +145,22 @@ describe('Topic\'s', function() { }); }); + describe('Title escaping', function() { + + it('should properly escape topic title', function(done) { + var title = '" new topic test'; + var titleEscaped = validator.escape(title); + topics.post({uid: topic.userId, title: title, content: topic.content, cid: topic.categoryId}, function(err, result) { + assert.ifError(err); + topics.getTopicData(result.topicData.tid, function(err, topicData) { + assert.ifError(err); + assert.strictEqual(topicData.titleEscaped, titleEscaped); + assert.strictEqual(topicData.title, title); + }); + }); + }); + }); + after(function() { db.flushdb(); }); From 5840a9db0234376ef20879e3b9da90c1aedf25dd Mon Sep 17 00:00:00 2001 From: barisusakli Date: Thu, 18 Feb 2016 18:39:30 +0200 Subject: [PATCH 011/124] up themes and composer --- package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index cac28d5ab9..4c5c6c617a 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "mongodb": "~2.1.3", "morgan": "^1.3.2", "nconf": "~0.8.2", - "nodebb-plugin-composer-default": "3.0.3", + "nodebb-plugin-composer-default": "3.0.4", "nodebb-plugin-dbsearch": "0.3.1", "nodebb-plugin-emoji-extended": "0.5.0", "nodebb-plugin-markdown": "4.0.16", @@ -51,9 +51,9 @@ "nodebb-plugin-soundpack-default": "0.1.5", "nodebb-plugin-spam-be-gone": "0.4.5", "nodebb-rewards-essentials": "0.0.6", - "nodebb-theme-lavender": "3.0.6", - "nodebb-theme-persona": "4.0.73", - "nodebb-theme-vanilla": "5.0.44", + "nodebb-theme-lavender": "3.0.7", + "nodebb-theme-persona": "4.0.74", + "nodebb-theme-vanilla": "5.0.45", "nodebb-widget-essentials": "2.0.6", "nodemailer": "2.0.0", "nodemailer-sendmail-transport": "1.0.0", From 4906fbf43a09c3447c8e39e7a557e2e1fb882005 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Thu, 18 Feb 2016 18:46:51 +0200 Subject: [PATCH 012/124] fix tests --- tests/topics.js | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/topics.js b/tests/topics.js index ff12d84375..076042d79c 100644 --- a/tests/topics.js +++ b/tests/topics.js @@ -156,6 +156,7 @@ describe('Topic\'s', function() { assert.ifError(err); assert.strictEqual(topicData.titleEscaped, titleEscaped); assert.strictEqual(topicData.title, title); + done(); }); }); }); From ef48b5d13ec88d21ca732c06c23cf4be55695dac Mon Sep 17 00:00:00 2001 From: barisusakli Date: Thu, 18 Feb 2016 18:52:07 +0200 Subject: [PATCH 013/124] up persona --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4c5c6c617a..7b77e38ded 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "nodebb-plugin-spam-be-gone": "0.4.5", "nodebb-rewards-essentials": "0.0.6", "nodebb-theme-lavender": "3.0.7", - "nodebb-theme-persona": "4.0.74", + "nodebb-theme-persona": "4.0.75", "nodebb-theme-vanilla": "5.0.45", "nodebb-widget-essentials": "2.0.6", "nodemailer": "2.0.0", From 573840ccbdc94d0b1442ed177c2a70f49b13233d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Thu, 18 Feb 2016 20:26:09 +0200 Subject: [PATCH 014/124] changed to title raw --- public/src/client/topic.js | 2 +- public/src/client/topic/postTools.js | 6 +++--- src/controllers/topics.js | 2 +- src/topics/data.js | 3 ++- tests/topics.js | 4 ++-- 5 files changed, 9 insertions(+), 8 deletions(-) diff --git a/public/src/client/topic.js b/public/src/client/topic.js index 1179bdb331..c3e228f9ae 100644 --- a/public/src/client/topic.js +++ b/public/src/client/topic.js @@ -217,7 +217,7 @@ define('forum/topic', [ function updateTopicTitle() { var span = components.get('navbar/title').find('span'); if ($(window).scrollTop() > 50) { - span.html(ajaxify.data.titleEscaped).show(); + span.html(ajaxify.data.title).show(); } else { span.html('').hide(); } diff --git a/public/src/client/topic/postTools.js b/public/src/client/topic/postTools.js index 33199f7f0b..037f3dd4cd 100644 --- a/public/src/client/topic/postTools.js +++ b/public/src/client/topic/postTools.js @@ -194,7 +194,7 @@ define('forum/topic/postTools', ['share', 'navigator', 'components', 'translator slug: ajaxify.data.slug, index: getData(button, 'data-index'), pid: toPid, - topicName: ajaxify.data.title, + topicName: ajaxify.data.titleRaw, username: username, text: selectionText }); @@ -202,7 +202,7 @@ define('forum/topic/postTools', ['share', 'navigator', 'components', 'translator $(window).trigger('action:composer.post.new', { tid: tid, pid: toPid, - topicName: ajaxify.data.title, + topicName: ajaxify.data.titleRaw, text: username ? username + ' ' : '' }); } @@ -227,7 +227,7 @@ define('forum/topic/postTools', ['share', 'navigator', 'components', 'translator index: getData(button, 'data-index'), pid: pid, username: username, - topicName: ajaxify.data.title, + topicName: ajaxify.data.titleRaw, text: post }); }); diff --git a/src/controllers/topics.js b/src/controllers/topics.js index 2690943247..616183aba2 100644 --- a/src/controllers/topics.js +++ b/src/controllers/topics.js @@ -131,7 +131,7 @@ topicsController.get = function(req, res, callback) { url: nconf.get('relative_path') + '/category/' + data.topicData.category.slug }, { - text: validator.escape(data.topicData.title) + text: data.topicData.title } ]; diff --git a/src/topics/data.js b/src/topics/data.js index 92a4a89355..48aa81419e 100644 --- a/src/topics/data.js +++ b/src/topics/data.js @@ -58,7 +58,8 @@ module.exports = function(Topics) { if (!topic) { return; } - topic.titleEscaped = validator.escape(topic.title); + topic.titleRaw = topic.title; + topic.title = validator.escape(topic.title); topic.relativeTime = utils.toISOString(topic.timestamp); topic.lastposttimeISO = utils.toISOString(topic.lastposttime); } diff --git a/tests/topics.js b/tests/topics.js index 076042d79c..a32f0fd37c 100644 --- a/tests/topics.js +++ b/tests/topics.js @@ -154,8 +154,8 @@ describe('Topic\'s', function() { assert.ifError(err); topics.getTopicData(result.topicData.tid, function(err, topicData) { assert.ifError(err); - assert.strictEqual(topicData.titleEscaped, titleEscaped); - assert.strictEqual(topicData.title, title); + assert.strictEqual(topicData.titleRaw, title); + assert.strictEqual(topicData.title, titleEscaped); done(); }); }); From b52286428865af72df37bcede23f3a74fc7d711b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Thu, 18 Feb 2016 20:40:03 +0200 Subject: [PATCH 015/124] up composer and themes --- package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 7b77e38ded..533d06b5ff 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "mongodb": "~2.1.3", "morgan": "^1.3.2", "nconf": "~0.8.2", - "nodebb-plugin-composer-default": "3.0.4", + "nodebb-plugin-composer-default": "3.0.5", "nodebb-plugin-dbsearch": "0.3.1", "nodebb-plugin-emoji-extended": "0.5.0", "nodebb-plugin-markdown": "4.0.16", @@ -51,9 +51,9 @@ "nodebb-plugin-soundpack-default": "0.1.5", "nodebb-plugin-spam-be-gone": "0.4.5", "nodebb-rewards-essentials": "0.0.6", - "nodebb-theme-lavender": "3.0.7", - "nodebb-theme-persona": "4.0.75", - "nodebb-theme-vanilla": "5.0.45", + "nodebb-theme-lavender": "3.0.8", + "nodebb-theme-persona": "4.0.76", + "nodebb-theme-vanilla": "5.0.46", "nodebb-widget-essentials": "2.0.6", "nodemailer": "2.0.0", "nodemailer-sendmail-transport": "1.0.0", From 42239e119d7b4222429b92b1c6d22c210b87a8d5 Mon Sep 17 00:00:00 2001 From: pichalite Date: Thu, 18 Feb 2016 22:30:42 +0000 Subject: [PATCH 016/124] search banned users only on /users/banned route --- public/src/client/users.js | 3 ++- src/socket.io/user/search.js | 1 + src/user/search.js | 10 +++++++++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/public/src/client/users.js b/public/src/client/users.js index d1a80279d9..4091390068 100644 --- a/public/src/client/users.js +++ b/public/src/client/users.js @@ -107,7 +107,8 @@ define('forum/users', ['translator'], function(translator) { page: page, searchBy: 'username', sortBy: $('.search select').val() || getSortBy(), - onlineOnly: $('.search .online-only').is(':checked') || (getActiveSection() === 'online') + onlineOnly: $('.search .online-only').is(':checked') || (getActiveSection() === 'online'), + bannedOnly: getActiveSection() === 'banned' }, function(err, data) { if (err) { return app.alertError(err.message); diff --git a/src/socket.io/user/search.js b/src/socket.io/user/search.js index 7cf4c0beac..ecef1127c2 100644 --- a/src/socket.io/user/search.js +++ b/src/socket.io/user/search.js @@ -19,6 +19,7 @@ module.exports = function(SocketUser) { searchBy: data.searchBy, sortBy: data.sortBy, onlineOnly: data.onlineOnly, + bannedOnly: data.bannedOnly, uid: socket.uid }, function(err, result) { if (err) { diff --git a/src/user/search.js b/src/user/search.js index 2d239163d1..db44e6eba6 100644 --- a/src/user/search.js +++ b/src/user/search.js @@ -84,7 +84,7 @@ module.exports = function(User) { function filterAndSortUids(uids, data, callback) { var sortBy = data.sortBy || 'joindate'; - var fields = ['uid', 'status', 'lastonline', sortBy]; + var fields = ['uid', 'status', 'lastonline', 'banned', sortBy]; User.getUsersFields(uids, fields, function(err, userData) { if (err) { @@ -96,6 +96,14 @@ module.exports = function(User) { return user && user.status !== 'offline' && (Date.now() - parseInt(user.lastonline, 10) < 300000); }); } + + console.log(userData); + + if(data.bannedOnly) { + userData = userData.filter(function(user) { + return user && user.banned; + }); + } sortUsers(userData, sortBy); From bd8b32b406c150faab65e90e431f2ba16787e2da Mon Sep 17 00:00:00 2001 From: pichalite Date: Thu, 18 Feb 2016 22:34:34 +0000 Subject: [PATCH 017/124] search banned users only on /users/banned route --- src/user/search.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/user/search.js b/src/user/search.js index db44e6eba6..b2a1e83a80 100644 --- a/src/user/search.js +++ b/src/user/search.js @@ -97,8 +97,6 @@ module.exports = function(User) { }); } - console.log(userData); - if(data.bannedOnly) { userData = userData.filter(function(user) { return user && user.banned; From dd050c81774f7ea17fdc7057f3ad74054e12212f Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Thu, 18 Feb 2016 20:42:59 -0500 Subject: [PATCH 018/124] added new hook that is called before templates are compiled --- src/meta/templates.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/meta/templates.js b/src/meta/templates.js index 9a5aa5c72b..8df981c572 100644 --- a/src/meta/templates.js +++ b/src/meta/templates.js @@ -42,10 +42,14 @@ Templates.compile = function(callback) { } } - plugins.getTemplates(function(err, pluginTemplates) { + async.waterfall([ + async.apply(plugins.fireHook, 'static:templates.precompile', {}), + async.apply(plugins.getTemplates) + ], function(err, pluginTemplates) { if (err) { return callback(err); } + winston.verbose('[meta/templates] Compiling templates'); rimraf.sync(viewsPath); mkdirp.sync(viewsPath); From 6b341a844d7bf028f28a8999ef4ea9187de29a89 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Fri, 19 Feb 2016 09:41:11 +0200 Subject: [PATCH 019/124] remove notifyTyping --- public/src/client/topic/events.js | 25 +------------------------ 1 file changed, 1 insertion(+), 24 deletions(-) diff --git a/public/src/client/topic/events.js b/public/src/client/topic/events.js index 21ad1958c3..43aebcfe73 100644 --- a/public/src/client/topic/events.js +++ b/public/src/client/topic/events.js @@ -44,10 +44,7 @@ define('forum/topic/events', [ 'posts.unvote': togglePostVote, 'event:new_notification': onNewNotification, - 'event:new_post': posts.onNewPost, - - 'event:topic.notifyTyping': onNotifyTyping, - 'event:topic.stopNotifyTyping': onStopNotifyTyping + 'event:new_post': posts.onNewPost }; Events.init = function() { @@ -219,25 +216,5 @@ define('forum/topic/events', [ } } - function onNotifyTyping(data) { - var userEl = $('.thread_active_users [data-uid="' + data.uid + '"]'); - userEl.addClass('replying'); - - var timeoutId = userEl.attr('timeoutId'); - if (timeoutId) { - clearTimeout(timeoutId); - timeoutId = 0; - } - timeoutId = setTimeout(function() { - userEl.removeClass('replying'); - }, 7000); - userEl.attr('timeoutId', timeoutId); - } - - function onStopNotifyTyping(data) { - $('.thread_active_users [data-uid="' + data.uid + '"]').removeClass('replying'); - } - return Events; - }); From 3b6623cceeef66fa9548ab0916ae4b23ad9a10dd Mon Sep 17 00:00:00 2001 From: barisusakli Date: Fri, 19 Feb 2016 10:43:08 +0200 Subject: [PATCH 020/124] up mentions --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 533d06b5ff..3bd92fba93 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "nodebb-plugin-dbsearch": "0.3.1", "nodebb-plugin-emoji-extended": "0.5.0", "nodebb-plugin-markdown": "4.0.16", - "nodebb-plugin-mentions": "1.0.14", + "nodebb-plugin-mentions": "1.0.15", "nodebb-plugin-soundpack-default": "0.1.5", "nodebb-plugin-spam-be-gone": "0.4.5", "nodebb-rewards-essentials": "0.0.6", From 6a481c176963c93c3ed900a8d1112b5717f87d7f Mon Sep 17 00:00:00 2001 From: barisusakli Date: Fri, 19 Feb 2016 10:45:08 +0200 Subject: [PATCH 021/124] up html to text --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3bd92fba93..d7078648f8 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "express": "^4.9.5", "express-session": "^1.8.2", "express-useragent": "0.2.4", - "html-to-text": "1.5.1", + "html-to-text": "1.6.1", "jimp": "0.2.21", "less": "^2.0.0", "logrotate-stream": "^0.2.3", From e39fda2b453bd40aa60c829f884d26b8ce3a25e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Fri, 19 Feb 2016 21:58:21 +0200 Subject: [PATCH 022/124] filter dupe tags, closes #4216 --- src/topics/tags.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/topics/tags.js b/src/topics/tags.js index 527913557a..1b47a5d0e6 100644 --- a/src/topics/tags.js +++ b/src/topics/tags.js @@ -24,8 +24,8 @@ module.exports = function(Topics) { }, function (data, next) { tags = data.tags.slice(0, meta.config.maximumTagsPerTopic || 5); - tags = tags.map(Topics.cleanUpTag).filter(function(tag) { - return tag && tag.length >= (meta.config.minimumTagLength || 3); + tags = tags.map(Topics.cleanUpTag).filter(function(tag, index, array) { + return tag && tag.length >= (meta.config.minimumTagLength || 3) && array.indexOf(tag) === index; }); var keys = tags.map(function(tag) { From 9f760f9b558543267f9c975c846738930a181339 Mon Sep 17 00:00:00 2001 From: pichalite Date: Fri, 19 Feb 2016 21:08:40 +0000 Subject: [PATCH 023/124] translate string in groups --- public/src/client/groups/list.js | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/public/src/client/groups/list.js b/public/src/client/groups/list.js index 4293d0de69..2b3f2bf468 100644 --- a/public/src/client/groups/list.js +++ b/public/src/client/groups/list.js @@ -1,7 +1,7 @@ "use strict"; /* globals app, define, ajaxify, socket, bootbox, utils, templates */ -define('forum/groups/list', ['forum/infinitescroll'], function(infinitescroll) { +define('forum/groups/list', ['forum/infinitescroll', 'translator'], function(infinitescroll, translator) { var Groups = {}; Groups.init = function() { @@ -17,18 +17,20 @@ define('forum/groups/list', ['forum/infinitescroll'], function(infinitescroll) { // Group creation $('button[data-action="new"]').on('click', function() { - bootbox.prompt('[[group:new-group.group_name]]', function(name) { - if (name && name.length) { - socket.emit('groups.create', { - name: name - }, function(err) { - if (!err) { - ajaxify.go('groups/' + utils.slugify(name)); - } else { - app.alertError(err.message); - } - }); - } + translator.translate('[[groups:new-group.group_name]]', function(translated) { + bootbox.prompt(translated, function(name) { + if (name && name.length) { + socket.emit('groups.create', { + name: name + }, function(err) { + if (!err) { + ajaxify.go('groups/' + utils.slugify(name)); + } else { + app.alertError(err.message); + } + }); + } + }); }); }); var params = utils.params(); From 2cf300f0e17a75db102cd071b9af51397f1e35f4 Mon Sep 17 00:00:00 2001 From: pichalite Date: Fri, 19 Feb 2016 22:17:09 +0000 Subject: [PATCH 024/124] set default option for allowPrivateGroups on setup --- install/data/defaults.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/install/data/defaults.json b/install/data/defaults.json index 9c6a6f0c06..5041ff83ea 100644 --- a/install/data/defaults.json +++ b/install/data/defaults.json @@ -29,5 +29,6 @@ "profileImageDimension": 128, "requireEmailConfirmation": 0, "allowProfileImageUploads": 1, - "teaserPost": "last" -} + "teaserPost": "last", + "allowPrivateGroups": 1 +} \ No newline at end of file From c80bd0c413199c365ac54e348f7e9f163a307f1d Mon Sep 17 00:00:00 2001 From: Timothy Fike Date: Fri, 19 Feb 2016 19:23:18 -0500 Subject: [PATCH 025/124] Added app.newTopic Make a new topic from anywhere. #4223 --- public/src/app.js | 46 +++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/public/src/app.js b/public/src/app.js index aa6137f003..dc66cfc462 100644 --- a/public/src/app.js +++ b/public/src/app.js @@ -34,7 +34,9 @@ app.cacheBuster = null; app.handleSearch(); } - handleNewTopic(); + $('#content').on('click', '#new_topic', function(){ + app.newTopic(); + }); require(['components'], function(components) { components.get('user/logout').on('click', app.logout); @@ -455,30 +457,28 @@ app.cacheBuster = null; }); }; - function handleNewTopic() { - $('#content').on('click', '#new_topic', function() { - var cid = ajaxify.data.cid; - if (cid) { - $(window).trigger('action:composer.topic.new', { - cid: cid + app.newTopic = function (cid) { + cid = cid || ajaxify.data.cid; + if (cid) { + $(window).trigger('action:composer.topic.new', { + cid: cid + }); + } else { + socket.emit('categories.getCategoriesByPrivilege', 'topics:create', function(err, categories) { + if (err) { + return app.alertError(err.message); + } + categories = categories.filter(function(category) { + return !category.link && !parseInt(category.parentCid, 10); }); - } else { - socket.emit('categories.getCategoriesByPrivilege', 'topics:create', function(err, categories) { - if (err) { - return app.alertError(err.message); - } - categories = categories.filter(function(category) { - return !category.link && !parseInt(category.parentCid, 10); + if (categories.length) { + $(window).trigger('action:composer.topic.new', { + cid: categories[0].cid }); - if (categories.length) { - $(window).trigger('action:composer.topic.new', { - cid: categories[0].cid - }); - } - }); - } - }); - } + } + }); + } + }; app.loadJQueryUI = function(callback) { if (typeof $().autocomplete === 'function') { From 2b7ed63236476656b9068ae48664ed07440c651e Mon Sep 17 00:00:00 2001 From: barisusakli Date: Sat, 20 Feb 2016 09:40:03 +0200 Subject: [PATCH 026/124] fix for groups that don't have private field --- src/groups.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/groups.js b/src/groups.js index c318db9942..db5974e54e 100644 --- a/src/groups.js +++ b/src/groups.js @@ -182,7 +182,7 @@ var utils = require('../public/src/utils'); results.base.deleted = !!parseInt(results.base.deleted, 10); results.base.hidden = !!parseInt(results.base.hidden, 10); results.base.system = !!parseInt(results.base.system, 10); - results.base.private = results.base.private ? !!parseInt(results.base.private, 10) : true; + results.base.private = (results.base.private === null || results.base.private === undefined) ? true : !!parseInt(results.base.private, 10); results.base.disableJoinRequests = parseInt(results.base.disableJoinRequests, 10) === 1; results.base.isMember = results.isMember; results.base.isPending = results.isPending; @@ -409,7 +409,7 @@ var utils = require('../public/src/utils'); group.createtimeISO = utils.toISOString(group.createtime); group.hidden = parseInt(group.hidden, 10) === 1; group.system = parseInt(group.system, 10) === 1; - group.private = parseInt(group.private, 10) === 1; + group.private = (group.private === null || group.private === undefined) ? true : !!parseInt(group.private, 10); group.disableJoinRequests = parseInt(group.disableJoinRequests) === 1; group['cover:url'] = group['cover:url'] || require('./coverPhoto').getDefaultGroupCover(group.name); From 6d35690cbb25b63065285f9d76799052293a8297 Mon Sep 17 00:00:00 2001 From: Ole R Date: Sat, 20 Feb 2016 19:52:26 +0100 Subject: [PATCH 027/124] Prevent breaking eventLoopLagThreshold value [This problem](https://community.nodebb.org/topic/7955/and-once-again-all-my-data-has-gone/4) occurs when you put a value less than `10`. --- src/views/admin/settings/advanced.tpl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/views/admin/settings/advanced.tpl b/src/views/admin/settings/advanced.tpl index a1a01e93cd..3fd617cf83 100644 --- a/src/views/admin/settings/advanced.tpl +++ b/src/views/admin/settings/advanced.tpl @@ -85,7 +85,7 @@
- +

Lowering this value decreases wait times for page loads, but will also show the "excessive load" message to more users. (Reload required) @@ -103,4 +103,4 @@

- \ No newline at end of file + From f6375211051ef63d89ad42ee96be857615b55c65 Mon Sep 17 00:00:00 2001 From: pichalite Date: Sun, 21 Feb 2016 05:19:53 +0000 Subject: [PATCH 028/124] chat edit fixes --- public/language/en_GB/error.json | 4 +++- public/src/client/chats.js | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/public/language/en_GB/error.json b/public/language/en_GB/error.json index dbf6c56925..e52b7767b1 100644 --- a/public/language/en_GB/error.json +++ b/public/language/en_GB/error.json @@ -106,6 +106,7 @@ "chat-message-too-long": "Chat message is too long", "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "Reputation system is disabled.", "downvoting-disabled": "Downvoting is disabled", @@ -122,5 +123,6 @@ "invite-maximum-met": "You have invited the maximum amount of people (%1 out of %2).", - "no-session-found": "No login session found!" + "no-session-found": "No login session found!", + "not-in-room": "User not in room" } diff --git a/public/src/client/chats.js b/public/src/client/chats.js index f29ff0cc3e..1508af97d3 100644 --- a/public/src/client/chats.js +++ b/public/src/client/chats.js @@ -392,6 +392,8 @@ define('forum/chats', ['components', 'string', 'sounds', 'forum/infinitescroll', Chats.onChatEdit = function() { socket.on('event:chats.edit', function(data) { data.messages.forEach(function(message) { + var self = parseInt(message.fromuid, 10) === parseInt(app.user.uid); + message.self = self ? 1 : 0; templates.parse('partials/chat_message', { messages: message }, function(html) { From 3e75c6f6a3940cde6c85412897a6bcb6ddd9def4 Mon Sep 17 00:00:00 2001 From: Terry Tate Date: Sun, 21 Feb 2016 17:13:44 +0000 Subject: [PATCH 029/124] Update to nodemailer 2.0 syntax for smtpTransport Fixes #4193 --- package.json | 1 + src/emailer.js | 11 +++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index d7078648f8..9c318d280e 100644 --- a/package.json +++ b/package.json @@ -57,6 +57,7 @@ "nodebb-widget-essentials": "2.0.6", "nodemailer": "2.0.0", "nodemailer-sendmail-transport": "1.0.0", + "nodemailer-smtp-transport": "1.0.0", "passport": "^0.3.0", "passport-local": "1.0.0", "postcss": "^5.0.13", diff --git a/src/emailer.js b/src/emailer.js index ce8e182653..522330f70b 100644 --- a/src/emailer.js +++ b/src/emailer.js @@ -1,11 +1,12 @@ "use strict"; -var async = require('async'); +var async = require('async'); var winston = require('winston'); var nconf = require('nconf'); var templates = require('templates.js'); var nodemailer = require('nodemailer'); var sendmailTransport = require('nodemailer-sendmail-transport'); +var smtpTransport = require('nodemailer-smtp-transport'); var htmlToText = require('html-to-text'); var url = require('url'); @@ -28,13 +29,15 @@ var fallbackTransport; // Enable Gmail transport if enabled in ACP if (parseInt(meta.config['email:GmailTransport:enabled'], 10) === 1) { - fallbackTransport = transports.gmail = nodemailer.createTransport('SMTP', { - service: 'Gmail', + fallbackTransport = transports.gmail = nodemailer.createTransport(smtpTransport({ + host: 'smtp.gmail.com', + port: 465, + secure: true, auth: { user: meta.config['email:GmailTransport:user'], pass: meta.config['email:GmailTransport:pass'] } - }); + })); } else { fallbackTransport = transports.sendmail; } From 3024d2e661f6b24f6ebb24cb32f318861257843f Mon Sep 17 00:00:00 2001 From: pichalite Date: Mon, 22 Feb 2016 03:22:02 +0000 Subject: [PATCH 030/124] don't mention guest on reply --- public/src/client/topic/postTools.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/src/client/topic/postTools.js b/public/src/client/topic/postTools.js index 037f3dd4cd..a9d1919f13 100644 --- a/public/src/client/topic/postTools.js +++ b/public/src/client/topic/postTools.js @@ -182,7 +182,7 @@ define('forum/topic/postTools', ['share', 'navigator', 'components', 'translator } var username = getUserName(selectionText ? $(selection.baseNode) : button); - if (getData(button, 'data-uid') === '0') { + if (getData(button, 'data-uid') === '0' || !getData(button, 'data-userslug')) { username = ''; } From a22d7290ecabdfcfa1b6714190a443565b015c42 Mon Sep 17 00:00:00 2001 From: pichalite Date: Mon, 22 Feb 2016 03:42:12 +0000 Subject: [PATCH 031/124] fix logout on user delete --- public/src/client/account/edit.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/src/client/account/edit.js b/public/src/client/account/edit.js index e239c142f2..cd97196ad0 100644 --- a/public/src/client/account/edit.js +++ b/public/src/client/account/edit.js @@ -172,7 +172,7 @@ define('forum/account/edit', ['forum/account/header', 'uploader', 'translator'], if (err) { app.alertError(err.message); } - app.logout(); + window.location.href = config.relative_path + '/'; }); } }); From ca3fa023e8aca97eff3c12e9e2916415f86dd3a5 Mon Sep 17 00:00:00 2001 From: pichalite Date: Mon, 22 Feb 2016 06:49:35 +0000 Subject: [PATCH 032/124] fixes #4159 --- public/src/client/chats.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/public/src/client/chats.js b/public/src/client/chats.js index 1508af97d3..f56dcf6d33 100644 --- a/public/src/client/chats.js +++ b/public/src/client/chats.js @@ -394,10 +394,8 @@ define('forum/chats', ['components', 'string', 'sounds', 'forum/infinitescroll', data.messages.forEach(function(message) { var self = parseInt(message.fromuid, 10) === parseInt(app.user.uid); message.self = self ? 1 : 0; - templates.parse('partials/chat_message', { - messages: message - }, function(html) { - var body = components.get('chat/message', message.messageId); + Chats.parseMessage(message, function(html) { + var body = components.get('chat/message', message.messageId); if (body.length) { body.replaceWith(html); components.get('chat/message', message.messageId).find('.timeago').timeago(); From f22b2182509eba447b00d2f39795fb0ed7aec6df Mon Sep 17 00:00:00 2001 From: pichalite Date: Mon, 22 Feb 2016 08:14:51 +0000 Subject: [PATCH 033/124] fixes #4235 --- public/src/client/topic/posts.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/public/src/client/topic/posts.js b/public/src/client/topic/posts.js index e05017c767..3059728e3b 100644 --- a/public/src/client/topic/posts.js +++ b/public/src/client/topic/posts.js @@ -138,6 +138,8 @@ define('forum/topic/posts', [ before = repliesSelector.first(); } + data.slug = ajaxify.data.slug; + $(window).trigger('action:posts.loading', {posts: data.posts, after: after, before: before}); app.parseAndTranslate('topic', 'posts', data, function(html) { From 60a5a1b422cb4126e4044f04d4f9be8daea0c690 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Mon, 22 Feb 2016 09:52:51 -0500 Subject: [PATCH 034/124] latest translations --- public/language/bg/error.json | 2 +- public/language/bg/global.json | 6 +- public/language/bg/groups.json | 2 +- public/language/bg/modules.json | 6 +- public/language/bg/notifications.json | 2 +- public/language/bg/pages.json | 6 +- public/language/bg/topic.json | 8 +- public/language/bg/user.json | 6 +- public/language/de/category.json | 4 +- public/language/de/error.json | 2 +- public/language/de/global.json | 6 +- public/language/de/notifications.json | 2 +- public/language/de/pages.json | 10 +- public/language/de/user.json | 6 +- public/language/es/error.json | 2 +- public/language/es/global.json | 6 +- public/language/es/notifications.json | 2 +- public/language/es/pages.json | 6 +- public/language/es/user.json | 6 +- public/language/et/user.json | 20 ++-- public/language/fr/error.json | 2 +- public/language/fr/global.json | 6 +- public/language/fr/notifications.json | 2 +- public/language/fr/pages.json | 6 +- public/language/fr/user.json | 6 +- public/language/gl/error.json | 6 +- public/language/gl/global.json | 8 +- public/language/gl/groups.json | 2 +- public/language/gl/modules.json | 8 +- public/language/gl/notifications.json | 14 +-- public/language/gl/pages.json | 6 +- public/language/gl/topic.json | 8 +- public/language/gl/user.json | 6 +- public/language/he/notifications.json | 8 +- public/language/he/register.json | 2 +- public/language/it/topic.json | 20 ++-- public/language/ja/category.json | 24 ++--- public/language/ja/email.json | 66 ++++++------- public/language/ja/error.json | 116 +++++++++++------------ public/language/ja/global.json | 40 ++++---- public/language/ja/groups.json | 30 +++--- public/language/ja/language.json | 2 +- public/language/ja/login.json | 10 +- public/language/ja/modules.json | 26 ++--- public/language/ja/notifications.json | 18 ++-- public/language/ja/pages.json | 26 ++--- public/language/ja/recent.json | 30 +++--- public/language/ja/register.json | 6 +- public/language/ja/reset_password.json | 14 +-- public/language/ja/search.json | 36 +++---- public/language/ja/success.json | 6 +- public/language/ja/tags.json | 10 +- public/language/ja/topic.json | 98 +++++++++---------- public/language/ja/unread.json | 6 +- public/language/ja/user.json | 102 ++++++++++---------- public/language/ja/users.json | 30 +++--- public/language/ms/groups.json | 2 +- public/language/ms/notifications.json | 22 ++--- public/language/nl/email.json | 4 +- public/language/nl/error.json | 2 +- public/language/nl/global.json | 6 +- public/language/nl/modules.json | 4 +- public/language/nl/notifications.json | 2 +- public/language/nl/pages.json | 6 +- public/language/nl/topic.json | 2 +- public/language/nl/user.json | 6 +- public/language/pt_BR/error.json | 2 +- public/language/pt_BR/global.json | 6 +- public/language/pt_BR/notifications.json | 4 +- public/language/pt_BR/pages.json | 6 +- public/language/pt_BR/user.json | 6 +- public/language/ro/error.json | 26 ++--- public/language/ro/login.json | 4 +- public/language/ro/search.json | 2 +- public/language/ru/global.json | 2 +- public/language/ru/groups.json | 2 +- public/language/ru/modules.json | 12 +-- public/language/ru/notifications.json | 20 ++-- public/language/ru/pages.json | 2 +- public/language/ru/topic.json | 10 +- public/language/sv/login.json | 6 +- public/language/tr/error.json | 2 +- public/language/tr/global.json | 12 +-- public/language/tr/groups.json | 2 +- public/language/tr/modules.json | 6 +- public/language/tr/notifications.json | 2 +- public/language/tr/pages.json | 6 +- public/language/tr/topic.json | 8 +- public/language/tr/user.json | 6 +- public/language/zh_CN/email.json | 6 +- public/language/zh_CN/error.json | 2 +- public/language/zh_CN/global.json | 8 +- public/language/zh_CN/groups.json | 2 +- public/language/zh_CN/modules.json | 6 +- public/language/zh_CN/notifications.json | 2 +- public/language/zh_CN/pages.json | 6 +- public/language/zh_CN/topic.json | 8 +- public/language/zh_CN/users.json | 2 +- 98 files changed, 584 insertions(+), 584 deletions(-) diff --git a/public/language/bg/error.json b/public/language/bg/error.json index 9a57b41d7d..f70f4adcc2 100644 --- a/public/language/bg/error.json +++ b/public/language/bg/error.json @@ -24,7 +24,7 @@ "confirm-email-already-sent": "Е-писмото за потвърждение вече е изпратено. Моля, почакайте още %1 минута/и, преди да изпратите ново.", "username-too-short": "Потребителското име е твърде кратко", "username-too-long": "Потребителското име е твърде дълго", - "password-too-long": "Password too long", + "password-too-long": "Паролата е твърде дълга", "user-banned": "Потребителят е блокиран", "user-too-new": "Съжаляваме, но трябва да изчакате поне %1 секунда/и, преди да направите първата си публикация", "no-category": "Категорията не съществува", diff --git a/public/language/bg/global.json b/public/language/bg/global.json index 970dd2dc4a..443636d3b8 100644 --- a/public/language/bg/global.json +++ b/public/language/bg/global.json @@ -49,9 +49,9 @@ "users": "Потребители", "topics": "Теми", "posts": "Публ.", - "best": "Best", - "upvoted": "Upvoted", - "downvoted": "Downvoted", + "best": "Най-добри", + "upvoted": "С положителни гласове", + "downvoted": "С отрицателни гласове", "views": "Прегл.", "reputation": "Репутация", "read_more": "още", diff --git a/public/language/bg/groups.json b/public/language/bg/groups.json index f2d246af57..75870b4fdd 100644 --- a/public/language/bg/groups.json +++ b/public/language/bg/groups.json @@ -24,7 +24,7 @@ "details.has_no_posts": "Членовете на тази група не са публикували нищо.", "details.latest_posts": "Скорошни публикации", "details.private": "Частна", - "details.disableJoinRequests": "Disable join requests", + "details.disableJoinRequests": "Забраняване на заявките за присъединяване", "details.grant": "Даване/отнемане на собственост", "details.kick": "Изгонване", "details.owner_options": "Администрация на групата", diff --git a/public/language/bg/modules.json b/public/language/bg/modules.json index c4e651efc4..1ed5cb50ef 100644 --- a/public/language/bg/modules.json +++ b/public/language/bg/modules.json @@ -7,7 +7,7 @@ "chat.user_has_messaged_you": "%1 Ви написа съобщение.", "chat.see_all": "Вижте всички разговори", "chat.no-messages": "Моля, изберете получател, за да видите историята на съобщенията", - "chat.no-users-in-room": "No users in this room", + "chat.no-users-in-room": "Няма потребители в тази стая", "chat.recent-chats": "Скорошни разговори", "chat.contacts": "Контакти", "chat.message-history": "История на съобщенията", @@ -17,8 +17,8 @@ "chat.thirty_days": "30 дни", "chat.three_months": "3 месеца", "chat.delete_message_confirm": "Сигурен/а ли сте, че искате да изтриете това съобщение?", - "chat.roomname": "Chat Room %1", - "chat.add-users-to-room": "Add users to room", + "chat.roomname": "Стая за разговори %1", + "chat.add-users-to-room": "Добавяне на потребители към стаята", "composer.compose": "Писане", "composer.show_preview": "Показване на прегледа", "composer.hide_preview": "Скриване на прегледа", diff --git a/public/language/bg/notifications.json b/public/language/bg/notifications.json index f3066afd0f..89a389d387 100644 --- a/public/language/bg/notifications.json +++ b/public/language/bg/notifications.json @@ -5,7 +5,7 @@ "mark_all_read": "Отбелязване на всички известия като прочетени", "back_to_home": "Назад към %1", "outgoing_link": "Външна връзка", - "outgoing_link_message": "You are now leaving %1", + "outgoing_link_message": "Напускате %1", "continue_to": "Продължаване към %1", "return_to": "Връщане към %1", "new_notification": "Ново известие", diff --git a/public/language/bg/pages.json b/public/language/bg/pages.json index 5a1a63dc4a..2dfe60234d 100644 --- a/public/language/bg/pages.json +++ b/public/language/bg/pages.json @@ -35,9 +35,9 @@ "account/favourites": "Любимите публикации на %1", "account/settings": "Потребителски настройки", "account/watched": "Теми, следени от %1", - "account/upvoted": "Posts upvoted by %1", - "account/downvoted": "Posts downvoted by %1", - "account/best": "Best posts made by %1", + "account/upvoted": "Публикации, получили положителен глас от %1", + "account/downvoted": "Публикации, получили отрицателен глас от %1", + "account/best": "Най-добрите публикации от %1", "maintenance.text": "%1 в момента е в профилактика. Моля, върнете се по-късно.", "maintenance.messageIntro": "В допълнение, администраторът е оставил това съобщение:", "throttled.text": "%1 в момента е недостъпен, поради прекомерно натоварване. Моля, върнете се отново по-късно." diff --git a/public/language/bg/topic.json b/public/language/bg/topic.json index 0e97217aa2..ff2d42c83f 100644 --- a/public/language/bg/topic.json +++ b/public/language/bg/topic.json @@ -13,7 +13,7 @@ "notify_me": "Получавайте известия за новите отговори в тази тема", "quote": "Цитат", "reply": "Отговор", - "reply-as-topic": "Reply as topic", + "reply-as-topic": "Отговор в нова тема", "guest-login-reply": "Влезте, за да отговорите", "edit": "Редактиране", "delete": "Изтриване", @@ -34,7 +34,7 @@ "not_following_topic.message": "Вече няма да получавате известия за тази тема.", "login_to_subscribe": "Моля, регистрирайте се или влезте, за да се абонирате за тази тема.", "markAsUnreadForAll.success": "Темата е отбелязана като непрочетена за всички.", - "mark_unread": "Mark unread", + "mark_unread": "Отбелязване като непрочетена", "watch": "Наблюдаване", "unwatch": "Спиране на наблюдаването", "watch.title": "Получавайте известия за новите отговори в тази тема", @@ -50,7 +50,7 @@ "thread_tools.move_all": "Преместване на всички", "thread_tools.fork": "Разделяне на темата", "thread_tools.delete": "Изтриване на темата", - "thread_tools.delete-posts": "Delete Posts", + "thread_tools.delete-posts": "Изтриване на публикациите", "thread_tools.delete_confirm": "Сигурен/а ли сте, че искате да изтриете тази тема?", "thread_tools.restore": "Възстановяване на темата", "thread_tools.restore_confirm": "Сигурен/а ли сте, че искате да възстановите тази тема?", @@ -77,7 +77,7 @@ "fork_topic_instruction": "Натиснете публикациите, които искате да отделите", "fork_no_pids": "Няма избрани публикации!", "fork_success": "Темата е разделена успешно! Натиснете тук, за да преминете към отделената тема.", - "delete_posts_instruction": "Click the posts you want to delete/purge", + "delete_posts_instruction": "Натиснете публикациите, които искате да изтриете/изчистите", "composer.title_placeholder": "Въведете заглавието на темата си тук...", "composer.handle_placeholder": "Име", "composer.discard": "Отхвърляне", diff --git a/public/language/bg/user.json b/public/language/bg/user.json index 7a39af47ca..01ee3779ae 100644 --- a/public/language/bg/user.json +++ b/public/language/bg/user.json @@ -77,9 +77,9 @@ "has_no_posts": "Този потребител не е публикувал нищо досега.", "has_no_topics": "Този потребител не е създавал теми досега.", "has_no_watched_topics": "Този потребител не е следил нито една тема досега.", - "has_no_upvoted_posts": "This user hasn't upvoted any posts yet.", - "has_no_downvoted_posts": "This user hasn't downvoted any posts yet.", - "has_no_voted_posts": "This user has no voted posts", + "has_no_upvoted_posts": "Този потребител не е гласувал положително досега.", + "has_no_downvoted_posts": "Този потребител не е гласувал отрицателно досега.", + "has_no_voted_posts": "Този потребител не е гласувал досега.", "email_hidden": "Е-пощата е скрита", "hidden": "скрито", "paginate_description": "Разделяне на темите и публикациите на страници, вместо да се превърта безкрайно", diff --git a/public/language/de/category.json b/public/language/de/category.json index e4e9b673de..3ca129e561 100644 --- a/public/language/de/category.json +++ b/public/language/de/category.json @@ -2,11 +2,11 @@ "category": "Kategorie", "subcategories": "Unterkategorien", "new_topic_button": "Neues Thema", - "guest-login-post": "Anmelden um einen Beitrag zu erstellen", + "guest-login-post": "Anmelden, um einen Beitrag zu erstellen", "no_topics": "Es gibt noch keine Themen in dieser Kategorie.
Warum beginnst du nicht eins?", "browsing": "Aktiv", "no_replies": "Niemand hat geantwortet", - "no_new_posts": "Keine neue Beiträge.", + "no_new_posts": "Keine neuen Beiträge.", "share_this_category": "Teile diese Kategorie", "watch": "Beobachten", "ignore": "Ignorieren", diff --git a/public/language/de/error.json b/public/language/de/error.json index e337f023e2..e070e816f9 100644 --- a/public/language/de/error.json +++ b/public/language/de/error.json @@ -24,7 +24,7 @@ "confirm-email-already-sent": "Die Bestätigungsmail wurde verschickt, bitte warte %1 Minute(n) um eine Weitere zu verschicken.", "username-too-short": "Benutzername ist zu kurz", "username-too-long": "Benutzername ist zu lang", - "password-too-long": "Password too long", + "password-too-long": "Passwort ist zu lang", "user-banned": "Benutzer ist gesperrt", "user-too-new": "Entschuldigung, du musst %1 Sekunde(n) warten, bevor du deinen ersten Beitrag schreiben kannst.", "no-category": "Die Kategorie existiert nicht", diff --git a/public/language/de/global.json b/public/language/de/global.json index 210aacc771..ffc67cc724 100644 --- a/public/language/de/global.json +++ b/public/language/de/global.json @@ -49,9 +49,9 @@ "users": "Benutzer", "topics": "Themen", "posts": "Beiträge", - "best": "Best", - "upvoted": "Upvoted", - "downvoted": "Downvoted", + "best": "Bestbewertet", + "upvoted": "Positiv bewertet", + "downvoted": "Negativ bewertet", "views": "Aufrufe", "reputation": "Ansehen", "read_more": "weiterlesen", diff --git a/public/language/de/notifications.json b/public/language/de/notifications.json index f9a4d8fd96..1657269f9a 100644 --- a/public/language/de/notifications.json +++ b/public/language/de/notifications.json @@ -5,7 +5,7 @@ "mark_all_read": "Alle Benachrichtigungen als gelesen markieren", "back_to_home": "Zurück zu %1", "outgoing_link": "Externer Link", - "outgoing_link_message": "You are now leaving %1", + "outgoing_link_message": "Du verlässt nun %1", "continue_to": "Fortfahren zu %1", "return_to": "Kehre zurück zu %1", "new_notification": "Neue Benachrichtigung", diff --git a/public/language/de/pages.json b/public/language/de/pages.json index c82dd0e216..51fadacf93 100644 --- a/public/language/de/pages.json +++ b/public/language/de/pages.json @@ -20,7 +20,7 @@ "reset": "Passwort zurücksetzen", "categories": "Kategorien", "groups": "Gruppen", - "group": "%1's Gruppen", + "group": "%1 Gruppe", "chats": "Chats", "chat": "Chatte mit %1", "account/edit": "Bearbeite %1", @@ -31,13 +31,13 @@ "account/followers": "Nutzer, die %1 folgen", "account/posts": "Beiträge von %1", "account/topics": "Themen verfasst von %1", - "account/groups": "%1's Gruppen", + "account/groups": "Gruppen von %1", "account/favourites": "Von %1 favorisierte Beiträge", "account/settings": "Benutzer-Einstellungen", "account/watched": "Themen angeschaut von %1", - "account/upvoted": "Posts upvoted by %1", - "account/downvoted": "Posts downvoted by %1", - "account/best": "Best posts made by %1", + "account/upvoted": "Von %1 positiv bewertete Beiträge", + "account/downvoted": "Von %1 negativ bewertete Beiträge", + "account/best": "Bestbewertete Beiträge von %1", "maintenance.text": "%1 befindet sich derzeit in der Wartung. Bitte komme später wieder.", "maintenance.messageIntro": "Zusätzlich hat der Administrator diese Nachricht hinterlassen:", "throttled.text": "%1 ist momentan aufgrund von Überlastung nicht verfügbar. Bitte komm später wieder." diff --git a/public/language/de/user.json b/public/language/de/user.json index 98f7d00641..21456e633e 100644 --- a/public/language/de/user.json +++ b/public/language/de/user.json @@ -77,9 +77,9 @@ "has_no_posts": "Dieser Nutzer hat noch nichts gepostet.", "has_no_topics": "Dieser Nutzer hat noch keine Themen gepostet.", "has_no_watched_topics": "Dieser Nutzer beobachtet keine Themen.", - "has_no_upvoted_posts": "This user hasn't upvoted any posts yet.", - "has_no_downvoted_posts": "This user hasn't downvoted any posts yet.", - "has_no_voted_posts": "This user has no voted posts", + "has_no_upvoted_posts": "Dieser Benutzer hat bisher keine Beiträge positiv bewertet.", + "has_no_downvoted_posts": "Dieser Benutzer hat bisher keine Beiträge negativ bewertet.", + "has_no_voted_posts": "Dieser Benutzer hat keine bewerteten Beiträge", "email_hidden": "E-Mail Adresse versteckt", "hidden": "versteckt", "paginate_description": "Themen und Beiträge in Seiten aufteilen, anstelle unendlich zu scrollen", diff --git a/public/language/es/error.json b/public/language/es/error.json index 0a81952c51..603469e81a 100644 --- a/public/language/es/error.json +++ b/public/language/es/error.json @@ -24,7 +24,7 @@ "confirm-email-already-sent": "El email de confirmación ya ha sido enviado, por favor espera %1 minuto(s) para enviar otro.", "username-too-short": "Nombre de usuario es demasiado corto", "username-too-long": "Nombre de usuario demasiado largo", - "password-too-long": "Password too long", + "password-too-long": "Contraseña muy corta", "user-banned": "Usuario baneado", "user-too-new": "Lo sentimos, es necesario que esperes %1 segundo(s) antes poder hacer tu primera publicación", "no-category": "La categoría no existe", diff --git a/public/language/es/global.json b/public/language/es/global.json index 5bf7dc3740..92ccced7df 100644 --- a/public/language/es/global.json +++ b/public/language/es/global.json @@ -49,9 +49,9 @@ "users": "Usuarios", "topics": "Temas", "posts": "Posts", - "best": "Best", - "upvoted": "Upvoted", - "downvoted": "Downvoted", + "best": "Mejor", + "upvoted": "Votado positivamente", + "downvoted": "Votado negativamente", "views": "Visitas", "reputation": "Reputación", "read_more": "leer más", diff --git a/public/language/es/notifications.json b/public/language/es/notifications.json index 93c2fc23b2..96390cb0e5 100644 --- a/public/language/es/notifications.json +++ b/public/language/es/notifications.json @@ -5,7 +5,7 @@ "mark_all_read": "Marcar todas las notificaciones como leídas", "back_to_home": "Volver a %1", "outgoing_link": "Enlace externo", - "outgoing_link_message": "You are now leaving %1", + "outgoing_link_message": "Ahora estás saliendo %1", "continue_to": "Continuar a %1", "return_to": "Regresar a %1", "new_notification": "Nueva notificación", diff --git a/public/language/es/pages.json b/public/language/es/pages.json index a4cf8a1d0d..ce04976d80 100644 --- a/public/language/es/pages.json +++ b/public/language/es/pages.json @@ -35,9 +35,9 @@ "account/favourites": "Favoritos de %1", "account/settings": "Preferencias", "account/watched": "Temas seguidos por %1", - "account/upvoted": "Posts upvoted by %1", - "account/downvoted": "Posts downvoted by %1", - "account/best": "Best posts made by %1", + "account/upvoted": "Publicaciones votadas positivamente %1", + "account/downvoted": "Publicaciones votadas negativamente %1", + "account/best": "Mejores publicaciones hechas por %1", "maintenance.text": "%1 está en mantenimiento actualmente. Por favor vuelva en otro momento.", "maintenance.messageIntro": "Además, la administración ha dejado este mensaje:", "throttled.text": "%1 no está disponible debido a una carga excesiva. Por favor vuelva en otro momento" diff --git a/public/language/es/user.json b/public/language/es/user.json index ed4d23b3f2..77f0084c52 100644 --- a/public/language/es/user.json +++ b/public/language/es/user.json @@ -77,9 +77,9 @@ "has_no_posts": "Este usuario no ha publicado nada aún.", "has_no_topics": "Este usuario no ha publicado ninguna tema todavía.", "has_no_watched_topics": "Este usuario no esta suscrito a ningún tema aún.", - "has_no_upvoted_posts": "This user hasn't upvoted any posts yet.", - "has_no_downvoted_posts": "This user hasn't downvoted any posts yet.", - "has_no_voted_posts": "This user has no voted posts", + "has_no_upvoted_posts": "Este usuario todavía no ha votado ninguna publicación positivamente.", + "has_no_downvoted_posts": "Este usuario todavía no ha votado ninguna publicación negativamente.", + "has_no_voted_posts": "Este usuario no ha votado ninguna publicación", "email_hidden": "Correo electrónico oculto", "hidden": "oculto", "paginate_description": "Paginar hilos y mensajes en lugar de usar desplazamiento infinito", diff --git a/public/language/et/user.json b/public/language/et/user.json index 46b4f2297e..3f35e25477 100644 --- a/public/language/et/user.json +++ b/public/language/et/user.json @@ -30,16 +30,16 @@ "signature": "Allkiri", "birthday": "Sünnipäev", "chat": "Vestlus", - "chat_with": "Chat with %1", + "chat_with": "Vestle kasutajaga %1", "follow": "Jälgi", "unfollow": "Ära jälgi enam", "more": "Rohkem", "profile_update_success": "Profiil edukalt uuendatud!", "change_picture": "Vaheta pilti", - "change_username": "Change Username", - "change_email": "Change Email", + "change_username": "Vaheta kasutajanime", + "change_email": "Vaheta emaili", "edit": "Muuda", - "default_picture": "Default Icon", + "default_picture": "Algne ikoon", "uploaded_picture": "Üleslaetud pilt", "upload_new_picture": "Laadi uus pilt", "upload_new_picture_from_url": "Lae uus pilt üles URL'ilt", @@ -58,7 +58,7 @@ "upload_picture": "Laadi pilt", "upload_a_picture": "Lae pilt üles", "remove_uploaded_picture": "Eemalda üleslaetud pilt", - "image_spec": "You may only upload PNG, JPG, or BMP files", + "image_spec": "Sa saad üles laadida ainult PNG, JPG või BMP vormingus faile.", "settings": "Seaded", "show_email": "Näita minu emaili", "show_fullname": "Näita minu täisnime", @@ -77,9 +77,9 @@ "has_no_posts": "Antud kasutaja pole veel midagi postitanud.", "has_no_topics": "Antud kasutaja pole veel ühtegi teemat postitanud.", "has_no_watched_topics": "Antud kasutaja pole veel ühtegi teemat vaadanud.", - "has_no_upvoted_posts": "This user hasn't upvoted any posts yet.", - "has_no_downvoted_posts": "This user hasn't downvoted any posts yet.", - "has_no_voted_posts": "This user has no voted posts", + "has_no_upvoted_posts": "Antud kasutaja pole veel ühtegi postitust kiitnud.", + "has_no_downvoted_posts": "Antud kasutaja pole veel ühtegi postitust laitnud.", + "has_no_voted_posts": "Antud kasutaja pole veel ühtegi postitust hinnanud.", "email_hidden": "Peidetud email", "hidden": "peidetud", "paginate_description": "Nummerda leheküljed ja postitused ning ära kasuta lõputut kerimist", @@ -95,8 +95,8 @@ "grouptitle": "Vali grupile tiitel mida kuvada soovid", "no-group-title": "Grupi tiitel puudub", "select-skin": "Vali välimus", - "select-homepage": "Select a Homepage", - "homepage": "Homepage", + "select-homepage": "Vali avaleht", + "homepage": "Avaleht", "homepage_description": "Select a page to use as the forum homepage or 'None' to use the default homepage.", "custom_route": "Custom Homepage Route", "custom_route_help": "Enter a route name here, without any preceding slash (e.g. \"recent\", or \"popular\")", diff --git a/public/language/fr/error.json b/public/language/fr/error.json index f36ecc0b42..98dcef980a 100644 --- a/public/language/fr/error.json +++ b/public/language/fr/error.json @@ -24,7 +24,7 @@ "confirm-email-already-sent": "L'email de confirmation a déjà été envoyé. Veuillez attendre %1 minute(s) avant de redemander un nouvel envoi.", "username-too-short": "Nom d'utilisateur trop court", "username-too-long": "Nom d'utilisateur trop long", - "password-too-long": "Password too long", + "password-too-long": "Mot de passe trop long", "user-banned": "Utilisateur banni", "user-too-new": "Désolé, vous devez attendre encore %1 seconde(s) avant d'envoyer votre premier message", "no-category": "Cette catégorie n'existe pas", diff --git a/public/language/fr/global.json b/public/language/fr/global.json index acb0951f89..6663719e74 100644 --- a/public/language/fr/global.json +++ b/public/language/fr/global.json @@ -49,9 +49,9 @@ "users": "Utilisateurs", "topics": "Sujets", "posts": "Messages", - "best": "Best", - "upvoted": "Upvoted", - "downvoted": "Downvoted", + "best": "Meilleurs", + "upvoted": "Votes pour", + "downvoted": "Votes contre", "views": "Vues", "reputation": "Réputation", "read_more": "En lire plus", diff --git a/public/language/fr/notifications.json b/public/language/fr/notifications.json index d62bdb3d54..02dbd67398 100644 --- a/public/language/fr/notifications.json +++ b/public/language/fr/notifications.json @@ -5,7 +5,7 @@ "mark_all_read": "Marquer toutes les notifications comme lues", "back_to_home": "Revenir à %1", "outgoing_link": "Lien sortant", - "outgoing_link_message": "You are now leaving %1", + "outgoing_link_message": "Vous quittez %1", "continue_to": "Continuer vers %1", "return_to": "Revenir à %1", "new_notification": "Nouvelle notification", diff --git a/public/language/fr/pages.json b/public/language/fr/pages.json index 069bf659a7..796d1de71a 100644 --- a/public/language/fr/pages.json +++ b/public/language/fr/pages.json @@ -35,9 +35,9 @@ "account/favourites": "Messages favoris de %1", "account/settings": "Paramètres d'utilisateur", "account/watched": "Sujets surveillés par %1", - "account/upvoted": "Posts upvoted by %1", - "account/downvoted": "Posts downvoted by %1", - "account/best": "Best posts made by %1", + "account/upvoted": "Messages pour lesquels %1 a voté", + "account/downvoted": "Messages contre lesquels %1 a voté", + "account/best": "Meilleurs messages postés par %1", "maintenance.text": "%1 est en maintenance. Veuillez revenir un peu plus tard.", "maintenance.messageIntro": "De plus, l'administrateur a laissé ce message:", "throttled.text": "%1 est actuellement indisponible en raison d'une charge excessive. Merci de réessayer plus tard." diff --git a/public/language/fr/user.json b/public/language/fr/user.json index 5240b34eaa..f11322f2c9 100644 --- a/public/language/fr/user.json +++ b/public/language/fr/user.json @@ -77,9 +77,9 @@ "has_no_posts": "Cet utilisateur n'a encore rien posté.", "has_no_topics": "Cet utilisateur n'a encore créé aucun sujet.", "has_no_watched_topics": "Cet utilisateur n'a encore consulté aucun sujet.", - "has_no_upvoted_posts": "This user hasn't upvoted any posts yet.", - "has_no_downvoted_posts": "This user hasn't downvoted any posts yet.", - "has_no_voted_posts": "This user has no voted posts", + "has_no_upvoted_posts": "Cet utilisateur n'a voté pour aucun message", + "has_no_downvoted_posts": "Cet utilisateur n'a voté contre aucun message", + "has_no_voted_posts": "Personne n'a voté pour des messages de cet utilisateur", "email_hidden": "Email masqué", "hidden": "masqué", "paginate_description": "Utiliser la pagination des sujets et des messages à la place du défilement infini", diff --git a/public/language/gl/error.json b/public/language/gl/error.json index 71ec424be4..fae1d6a446 100644 --- a/public/language/gl/error.json +++ b/public/language/gl/error.json @@ -24,7 +24,7 @@ "confirm-email-already-sent": "O correo de confirmación foi enviado, agarda %1 minute(s) para enviar outro.", "username-too-short": "Nome de usuario demasiado curto", "username-too-long": "Nome de usuario demasiado longo.", - "password-too-long": "Password too long", + "password-too-long": "Contrasinal moi longa", "user-banned": "Usuario expulsado", "user-too-new": "Desculpa, agarda %1 second(s) antes de facer a túa primeira publicación.", "no-category": "A categoría non existe", @@ -49,7 +49,7 @@ "too-many-tags": "Moitas etiquetas. Os temas non poden ter máis de %1 etiqueta(s).", "still-uploading": "Por favor, agarda a que remate a subida.", "file-too-big": "O tamaño máximo permitido é %1 kB - por favor, sube un arquivo máis pequeno", - "guest-upload-disabled": "Guest uploading has been disabled", + "guest-upload-disabled": "As subidas están deshabilitadas para os convidados", "already-favourited": "Marcache como favorita esta publicación", "already-unfavourited": "Desmarcache como favorita esta publicación", "cant-ban-other-admins": "Non podes botar outros administradores!", @@ -94,5 +94,5 @@ "wrong-login-type-email": "Por favor, emprega o teu correo para contectarte", "wrong-login-type-username": "Por favor, usa o teu nome de usuario para conectarte", "invite-maximum-met": "Convidaches á cantidade máxima de persoas (%1 de %2).", - "no-session-found": "No login session found!" + "no-session-found": "Non se atopa ningún inicio de sesión!" } \ No newline at end of file diff --git a/public/language/gl/global.json b/public/language/gl/global.json index 718e9bb08f..7f38d75154 100644 --- a/public/language/gl/global.json +++ b/public/language/gl/global.json @@ -49,9 +49,9 @@ "users": "Usuarios ", "topics": "Temas", "posts": "Publicacións", - "best": "Best", - "upvoted": "Upvoted", - "downvoted": "Downvoted", + "best": "Mellor", + "upvoted": "Votado positivamente", + "downvoted": "Votado negativamente", "views": "Vistas", "reputation": "Reputación", "read_more": "ler máis", @@ -87,6 +87,6 @@ "unfollow": "Deixar de seguir", "delete_all": "Borrar todo", "map": "Mapa", - "sessions": "Login Sessions", + "sessions": "Inicios de sesión", "ip_address": "Enderezo IP" } \ No newline at end of file diff --git a/public/language/gl/groups.json b/public/language/gl/groups.json index bc9daf348a..cf974c1089 100644 --- a/public/language/gl/groups.json +++ b/public/language/gl/groups.json @@ -24,7 +24,7 @@ "details.has_no_posts": "Non hai publicacións neste grupo", "details.latest_posts": "Últimas Publicacións", "details.private": "Privado", - "details.disableJoinRequests": "Disable join requests", + "details.disableJoinRequests": "Desactivar as peticións de unión", "details.grant": "Outorgar/Rescindir propiedade", "details.kick": "Expulsar", "details.owner_options": "Administración do Grupo", diff --git a/public/language/gl/modules.json b/public/language/gl/modules.json index 2bb17a3a1b..73ca840bdb 100644 --- a/public/language/gl/modules.json +++ b/public/language/gl/modules.json @@ -7,7 +7,7 @@ "chat.user_has_messaged_you": "%1 enviouche unha mensaxe.", "chat.see_all": "Ver tódalas chamadas", "chat.no-messages": "Por favor, seleccione un destinatario para ver o historial das mensaxes ", - "chat.no-users-in-room": "No users in this room", + "chat.no-users-in-room": "Non hai usuarios nesta sala", "chat.recent-chats": "Charlas Recentes", "chat.contacts": "Contactos", "chat.message-history": "Historial de mensaxes", @@ -16,9 +16,9 @@ "chat.seven_days": "7 Días", "chat.thirty_days": "30 Días", "chat.three_months": "3 Meses", - "chat.delete_message_confirm": "Are you sure you wish to delete this message?", - "chat.roomname": "Chat Room %1", - "chat.add-users-to-room": "Add users to room", + "chat.delete_message_confirm": "Estás seguro de que desexas eliminar esta mensaxe?", + "chat.roomname": "Sala de chat %1", + "chat.add-users-to-room": "Engadir usuarios á sala", "composer.compose": "Elaborar", "composer.show_preview": "Amosar vista previa", "composer.hide_preview": "Agochar vista previa", diff --git a/public/language/gl/notifications.json b/public/language/gl/notifications.json index f2d9fcecc3..4bc6bcc706 100644 --- a/public/language/gl/notifications.json +++ b/public/language/gl/notifications.json @@ -5,7 +5,7 @@ "mark_all_read": "Marcar tódalas notificacións como lidas", "back_to_home": "Volver ao %1", "outgoing_link": "Ligazón saínte", - "outgoing_link_message": "You are now leaving %1", + "outgoing_link_message": "Estás saíndo %1", "continue_to": "Continuar a %1", "return_to": "Volver a %1", "new_notification": "Nova Notificación", @@ -17,14 +17,14 @@ "moved_your_post": "%1 moveu a túa publicación a%2", "moved_your_topic": "%1 foi movido %2", "favourited_your_post_in": "%1 marcou favorita a túa publicación en %2.", - "favourited_your_post_in_dual": "%1 and %2 have favourited your post in %3.", - "favourited_your_post_in_multiple": "%1 and %2 others have favourited your post in %3.", + "favourited_your_post_in_dual": "%1 y %2 marcaron como favorita a túa mensaxe en %3.", + "favourited_your_post_in_multiple": "%1 e outras %2 persoas marcaron como favorita a túa mensaxe en %3.", "user_flagged_post_in": "%1 reportou unha mensaxe en %2", - "user_flagged_post_in_dual": "%1 and %2 flagged a post in %3", - "user_flagged_post_in_multiple": "%1 and %2 others flagged a post in %3", + "user_flagged_post_in_dual": "%1 e %2 reportaron a túa mensaxe en %3", + "user_flagged_post_in_multiple": "%1 e outras %2 persoas reportaron unha mensaxe en %3", "user_posted_to": "%1 publicou unha resposta en: %2", - "user_posted_to_dual": "%1 and %2 have posted replies to: %3", - "user_posted_to_multiple": "%1 and %2 others have posted replies to: %3", + "user_posted_to_dual": "%1 e %2 responderon a %3", + "user_posted_to_multiple": "%1 e outras %2 persoas responderon a: %3", "user_posted_topic": "%1 publicou un novo tema: %2", "user_started_following_you": "%1 comezou a seguirte.", "user_started_following_you_dual": "%1 e %2 comezaron a seguirte.", diff --git a/public/language/gl/pages.json b/public/language/gl/pages.json index ac62711113..59a065b460 100644 --- a/public/language/gl/pages.json +++ b/public/language/gl/pages.json @@ -35,9 +35,9 @@ "account/favourites": "%1's Publicacións Favoritas", "account/settings": "Opcións de Usuario", "account/watched": "Temas vistos por %1", - "account/upvoted": "Posts upvoted by %1", - "account/downvoted": "Posts downvoted by %1", - "account/best": "Best posts made by %1", + "account/upvoted": "Mensaxes votadas positivamente por %1", + "account/downvoted": "Mensaxes votadas negativamente por %1", + "account/best": "Mellores mensaxes escritas por %1", "maintenance.text": "%1 está baixo mantemento. Por favor, volve máis tarde.", "maintenance.messageIntro": "A máis, o administrador deixou esta mensaxe: ", "throttled.text": "&1 non está dispoñible debido a unha carga excesiva. Por favor, volva noutro momento" diff --git a/public/language/gl/topic.json b/public/language/gl/topic.json index 242f053fb5..596e4298fa 100644 --- a/public/language/gl/topic.json +++ b/public/language/gl/topic.json @@ -13,7 +13,7 @@ "notify_me": "Serás notificado canto haxa novas respostas neste tema", "quote": "Citar", "reply": "Responder", - "reply-as-topic": "Reply as topic", + "reply-as-topic": "Responder como tema", "guest-login-reply": "Identifícate para responder", "edit": "Editar", "delete": "Borrar", @@ -34,7 +34,7 @@ "not_following_topic.message": "Non recibirás notificacións deste tema.", "login_to_subscribe": "Por favor, identifícate para subscribirte a este tema.", "markAsUnreadForAll.success": "Publicación marcada como non lida para todos.", - "mark_unread": "Mark unread", + "mark_unread": "Marcar coma non lido", "watch": "Vixiar", "unwatch": "Deixar de vixiar", "watch.title": "Serás notificado canto haxa novas respostas neste tema", @@ -50,7 +50,7 @@ "thread_tools.move_all": "Mover todo", "thread_tools.fork": "Dividir Tema", "thread_tools.delete": "Borrar Tema", - "thread_tools.delete-posts": "Delete Posts", + "thread_tools.delete-posts": "Eliminar publicacións", "thread_tools.delete_confirm": "Estás seguro de que desexas eliminar este tema?", "thread_tools.restore": "Restaurar Tema", "thread_tools.restore_confirm": "Estás seguro de que desexas restaurar este tema?", @@ -77,7 +77,7 @@ "fork_topic_instruction": "Fai clic nas publicacións que queiras dividir", "fork_no_pids": "Non seleccionaches ninguna publicación!", "fork_success": "Creouse un novo tema a partir do orixinal! Fai clic aquí para ir ó novo tema.", - "delete_posts_instruction": "Click the posts you want to delete/purge", + "delete_posts_instruction": "Fai clic nas mensaxes que queres eliminar/limpar", "composer.title_placeholder": "Introduce o título do teu tema", "composer.handle_placeholder": "Nome", "composer.discard": "Descartar", diff --git a/public/language/gl/user.json b/public/language/gl/user.json index 391eb80c12..c5ffff6012 100644 --- a/public/language/gl/user.json +++ b/public/language/gl/user.json @@ -77,9 +77,9 @@ "has_no_posts": "Este usuario aínda non posteu.", "has_no_topics": "Este usuario aínda non publicou ningún tema.", "has_no_watched_topics": "Este usuario aínda non viu ningún tema.", - "has_no_upvoted_posts": "This user hasn't upvoted any posts yet.", - "has_no_downvoted_posts": "This user hasn't downvoted any posts yet.", - "has_no_voted_posts": "This user has no voted posts", + "has_no_upvoted_posts": "Este usuario aínda non votou positivamente ningunha mensaxe.", + "has_no_downvoted_posts": "Este usuario aínda non votou negativamente ninguna mensaxe.", + "has_no_voted_posts": "Este usuario non votou ninguna mensaxe", "email_hidden": "Correo Agochado", "hidden": "Agochado", "paginate_description": "Paxinar temas e publicacións no canto de usar scroll infinito", diff --git a/public/language/he/notifications.json b/public/language/he/notifications.json index e085b85ce0..8e2d9cf165 100644 --- a/public/language/he/notifications.json +++ b/public/language/he/notifications.json @@ -1,18 +1,18 @@ { "title": "התראות", "no_notifs": "אין התראות", - "see_all": "See all notifications", - "mark_all_read": "Mark all notifications read", + "see_all": "צפה בכל ההתראות", + "mark_all_read": "סמן את כל ההתראות כנקראו", "back_to_home": "חזרה ל%1", "outgoing_link": "לינק", - "outgoing_link_message": "You are now leaving %1", + "outgoing_link_message": "אתה עוזב עכשיו את %1", "continue_to": "המשך ל %1", "return_to": "חזור ל %1", "new_notification": "התראה חדשה", "you_have_unread_notifications": "יש לך התראות שלא נקראו.", "new_message_from": "הודעה חדשה מ %1", "upvoted_your_post_in": "%1 הצביע בעד הפוסט שלך ב %2", - "upvoted_your_post_in_dual": "%1 and %2 have upvoted your post in %3.", + "upvoted_your_post_in_dual": "%1 הצביע בעד הפוסט שלך ב %2", "upvoted_your_post_in_multiple": "%1 and %2 others have upvoted your post in %3.", "moved_your_post": "%1 has moved your post to %2", "moved_your_topic": "%1 has moved %2", diff --git a/public/language/he/register.json b/public/language/he/register.json index 83d7581079..752a5f85e7 100644 --- a/public/language/he/register.json +++ b/public/language/he/register.json @@ -15,5 +15,5 @@ "alternative_registration": "הרשם באמצעות...", "terms_of_use": "תנאי שימוש", "agree_to_terms_of_use": "אני מסכים לתנאי השימוש", - "registration-added-to-queue": "Your registration has been added to the approval queue. You will receive an email when it is accepted by an administrator." + "registration-added-to-queue": "הבקשה שלך להרשמה נשלחה. תקבל בקרוב מייל אישור לכתובת האימייל שהכנסת כשמנהל יאשר את הבקשה." } \ No newline at end of file diff --git a/public/language/it/topic.json b/public/language/it/topic.json index abf1608b9d..82eae5fe49 100644 --- a/public/language/it/topic.json +++ b/public/language/it/topic.json @@ -13,7 +13,7 @@ "notify_me": "Ricevi notifiche di nuove risposte in questa discussione", "quote": "Cita", "reply": "Rispondi", - "reply-as-topic": "Reply as topic", + "reply-as-topic": "Topic risposta", "guest-login-reply": "Effettua il Log in per rispondere", "edit": "Modifica", "delete": "Cancella", @@ -34,7 +34,7 @@ "not_following_topic.message": "Non riceverai più notifiche da questa discussione.", "login_to_subscribe": "Si prega di accedere o registrarsi per potersi iscrivere a questa discussione.", "markAsUnreadForAll.success": "Discussione segnata come non letta per tutti.", - "mark_unread": "Mark unread", + "mark_unread": "Segna come non letto", "watch": "Osserva", "unwatch": "Non osservare più", "watch.title": "Ricevi notifiche di nuove risposte in questa discussione", @@ -50,7 +50,7 @@ "thread_tools.move_all": "Sposta Tutto", "thread_tools.fork": "Dividi Discussione", "thread_tools.delete": "Elimina Discussione", - "thread_tools.delete-posts": "Delete Posts", + "thread_tools.delete-posts": "Cancella post", "thread_tools.delete_confirm": "Sei sicuro di voler cancellare questa discussione?", "thread_tools.restore": "Ripristina Discussione", "thread_tools.restore_confirm": "Sei sicuro di voler ripristinare questa discussione?", @@ -77,7 +77,7 @@ "fork_topic_instruction": "Clicca sui post che vuoi dividere", "fork_no_pids": "Nessun post selezionato!", "fork_success": "Topic Diviso con successo ! Clicca qui per andare al Topic Diviso.", - "delete_posts_instruction": "Click the posts you want to delete/purge", + "delete_posts_instruction": "Clicca sui post che vuoi cancellare/eliminare", "composer.title_placeholder": "Inserisci qui il titolo della discussione...", "composer.handle_placeholder": "Nome", "composer.discard": "Annulla", @@ -100,12 +100,12 @@ "newest_to_oldest": "Da Nuovi a Vecchi", "most_votes": "Più votati", "most_posts": "Ulteriori post", - "stale.title": "Create new topic instead?", - "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", - "stale.create": "Create a new topic", - "stale.reply_anyway": "Reply to this topic anyway", + "stale.title": "Preferisci creare un nuovo topic?", + "stale.warning": "Il topic al quale stai rispondendo è abbastanza vecchio. Vorresti piuttosto creare un nuovo topic in riferimento a questo nella tua risposta?", + "stale.create": "Crea un topic nuovo", + "stale.reply_anyway": "Rispondi a questo topic comunque", "stale.link_back": "Re: [%1](%2)", "spam": "Spam", - "offensive": "Offensive", - "custom-flag-reason": "Enter a flagging reason" + "offensive": "Offensivo", + "custom-flag-reason": "Inserisci il motivo per flaggare" } \ No newline at end of file diff --git a/public/language/ja/category.json b/public/language/ja/category.json index 4af653afc9..33cf774f14 100644 --- a/public/language/ja/category.json +++ b/public/language/ja/category.json @@ -1,16 +1,16 @@ { - "category": "Category", - "subcategories": "Subcategories", - "new_topic_button": "新規スレッド", - "guest-login-post": "Log in to post", - "no_topics": "まだスレッドはありません.
一番目のスレッドを書いてみないか?", + "category": "カテゴリ", + "subcategories": "サブカテゴリ", + "new_topic_button": "新規トピック", + "guest-login-post": "投稿するにはログインしてください", + "no_topics": "まだトピックはありません.
一番目のトピックを書いてみませんか?", "browsing": "閲覧中", "no_replies": "返事はまだありません", - "no_new_posts": "No new posts.", - "share_this_category": "この板を共有", - "watch": "Watch", - "ignore": "Ignore", - "watch.message": "You are now watching updates from this category", - "ignore.message": "You are now ignoring updates from this category", - "watched-categories": "Watched categories" + "no_new_posts": "新しい投稿はありません", + "share_this_category": "このカテゴリを共有する", + "watch": "ウォッチする", + "ignore": "無視する", + "watch.message": "このカテゴリの更新をウォッチする", + "ignore.message": "このカテゴリの更新を無視する", + "watched-categories": "ウォッチ中のカテゴリ" } \ No newline at end of file diff --git a/public/language/ja/email.json b/public/language/ja/email.json index 1b8d512945..86af5f6131 100644 --- a/public/language/ja/email.json +++ b/public/language/ja/email.json @@ -1,35 +1,35 @@ { - "password-reset-requested": "Password Reset Requested - %1!", - "welcome-to": "Welcome to %1", - "invite": "Invitation from %1", - "greeting_no_name": "Hello", - "greeting_with_name": "Hello %1", - "welcome.text1": "Thank you for registering with %1!", - "welcome.text2": "To fully activate your account, we need to verify that you own the email address you registered with.", - "welcome.text3": "An administrator has accepted your registration application. You can login with your username/password now.", - "welcome.cta": "Click here to confirm your email address", - "invitation.text1": "%1 has invited you to join %2", - "invitation.ctr": "Click here to create your account.", - "reset.text1": "We received a request to reset your password, possibly because you have forgotten it. If this is not the case, please ignore this email.", - "reset.text2": "To continue with the password reset, please click on the following link:", - "reset.cta": "Click here to reset your password", - "reset.notify.subject": "Password successfully changed", - "reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.", - "reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.", - "digest.notifications": "You have unread notifications from %1:", - "digest.latest_topics": "Latest topics from %1", - "digest.cta": "Click here to visit %1", - "digest.unsub.info": "This digest was sent to you due to your subscription settings.", - "digest.no_topics": "There have been no active topics in the past %1", - "digest.day": "day", - "digest.week": "week", - "digest.month": "month", - "notif.chat.subject": "New chat message received from %1", - "notif.chat.cta": "Click here to continue the conversation", - "notif.chat.unsub.info": "This chat notification was sent to you due to your subscription settings.", - "notif.post.cta": "Click here to read the full topic", - "notif.post.unsub.info": "This post notification was sent to you due to your subscription settings.", - "test.text1": "This is a test email to verify that the emailer is set up correctly for your NodeBB.", - "unsub.cta": "Click here to alter those settings", - "closing": "Thanks!" + "password-reset-requested": "パスワードのリセットをリクエストしました - %1!", + "welcome-to": "%1へようこそ!", + "invite": "%1からの招待です", + "greeting_no_name": "こんにちは", + "greeting_with_name": "%1さん、こんにちは", + "welcome.text1": "%1に登録していただきありがとうございます!", + "welcome.text2": "あなたのアカウントを完全に有効化するには、アドレスが正しいことを確認する必要があります。", + "welcome.text3": "管理者があなたの登録申請を承認しました。これから、自分のユーザ名とパスワードでログインできます。", + "welcome.cta": "ここをクリックしてメールアドレスの確認を行ってください", + "invitation.text1": "%1さんがあなたを%2に招待しました", + "invitation.ctr": "アカウントを作成するにはここをクリックしてください。", + "reset.text1": "パスワードリセットのリクエストを受け付けました。リクエストしていない場合はこのメールは無視してください。", + "reset.text2": "パスワードをリセットするには、次のリンクにクリックしてください:", + "reset.cta": "パスワードをリセットするには、ここをクリックしてください", + "reset.notify.subject": "パスワードをリセットしました", + "reset.notify.text1": "%1にてパスワードのリセットが行われたことをお知らせします。", + "reset.notify.text2": "もしあなたがリセットを行っていない場合は、すぐに管理者に通報してください。", + "digest.notifications": "%1さんからの未読通知があります:", + "digest.latest_topics": "%1からの新しいトピック", + "digest.cta": "クリックで%1を見る", + "digest.unsub.info": "このまとめはあなたの購読設定により送られました。", + "digest.no_topics": "%1にはアクティブなトピックがありません。", + "digest.day": "日", + "digest.week": "週", + "digest.month": "月", + "notif.chat.subject": "%1さんからの新しいチャットメッセージがあります。", + "notif.chat.cta": "クリックして会話を続ける", + "notif.chat.unsub.info": "このチャットの通知はあなたの購読設定により送られました。", + "notif.post.cta": "ここをクリックして全て読みます", + "notif.post.unsub.info": "この投稿の通知はあなたの申し込み設定により送られました。", + "test.text1": "このメールはNodeBBのメーラー(emailer)が正しく設定されているか確認をするためのメールです。", + "unsub.cta": "ここをクリックして設定を変更する", + "closing": "ありがとうございます!" } \ No newline at end of file diff --git a/public/language/ja/error.json b/public/language/ja/error.json index 85193734b8..fc707f9a26 100644 --- a/public/language/ja/error.json +++ b/public/language/ja/error.json @@ -1,80 +1,80 @@ { "invalid-data": "無効なデータ", - "not-logged-in": "ログインしていていないようです。", - "account-locked": "Your account has been locked temporarily", - "search-requires-login": "Searching requires an account - please login or register.", - "invalid-cid": "無効な板ID", - "invalid-tid": "無効なスレッドID", + "not-logged-in": "ログインしていません。", + "account-locked": "あなたのアカウントは一時的にロックされています", + "search-requires-login": "検索するにはアカウントが必要です - ログインするかアカウントを作成してください。", + "invalid-cid": "無効なカテゴリID", + "invalid-tid": "無効なトピックID", "invalid-pid": "無効なポストID", "invalid-uid": "無効なユーザーID", "invalid-username": "無効なユーザー名", "invalid-email": "無効なメール", - "invalid-title": "Invalid title!", + "invalid-title": "無効なタイトル!", "invalid-user-data": "無効なユーザーデータ", "invalid-password": "無効なパスワード", - "invalid-username-or-password": "Please specify both a username and password", - "invalid-search-term": "Invalid search term", + "invalid-username-or-password": "ユーザー名とパスワードの両方を指定してください", + "invalid-search-term": "無効な検索ワード", "invalid-pagination-value": "無効な改ページ設定値", - "username-taken": "ユーザー名が取られた", - "email-taken": "メールアドレスが使用された", - "email-not-confirmed": "Your email has not been confirmed yet, please click here to confirm your email.", - "email-not-confirmed-chat": "You are unable to chat until your email is confirmed, please click here to confirm your email.", - "no-email-to-confirm": "This forum requires email confirmation, please click here to enter an email", - "email-confirm-failed": "We could not confirm your email, please try again later.", - "confirm-email-already-sent": "Confirmation email already sent, please wait %1 minute(s) to send another one.", - "username-too-short": "Username too short", - "username-too-long": "Username too long", - "password-too-long": "Password too long", - "user-banned": "ユーザーが停止された", - "user-too-new": "Sorry, you are required to wait %1 second(s) before making your first post", - "no-category": "Category does not exist", - "no-topic": "Topic does not exist", - "no-post": "Post does not exist", - "no-group": "Group does not exist", - "no-user": "User does not exist", - "no-teaser": "Teaser does not exist", - "no-privileges": "You do not have enough privileges for this action.", + "username-taken": "ユーザー名は既に使われています", + "email-taken": "メールアドレスは既に使われています", + "email-not-confirmed": "あなたのメールアドレスはまだ確認されていません。メールアドレスを確認するためにはここをクリックしてください。", + "email-not-confirmed-chat": "チャットを行うにはメールアドレスの確認を行う必要があります。メールアドレスを確認するためにはここをクリックしてください。", + "no-email-to-confirm": "このフォーラムを利用するにはメールアドレスの確認を行う必要があります。メールアドレスを確認するためにはここをクリックしてください。", + "email-confirm-failed": "メールアドレスの確認が出来ませんでした。再度お試しください。", + "confirm-email-already-sent": "確認のメールは既に送信されています。再度送信するには、%1分後に再度お試しください。", + "username-too-short": "ユーザー名が短すぎます", + "username-too-long": "ユーザー名が長すぎます", + "password-too-long": "パスワードが長すぎます", + "user-banned": "ユーザーは停止されています", + "user-too-new": "申し訳ありません。登録後に投稿を行うには%1秒お待ち下さい。", + "no-category": "カテゴリは存在しません", + "no-topic": "トピックは存在しません", + "no-post": "投稿は存在しません", + "no-group": "グループは存在しません", + "no-user": "ユーザーは存在しません", + "no-teaser": "ティーザーが存在しません", + "no-privileges": "あなたがこの行為する権利がありません。", "category-disabled": "この板は無効された", "topic-locked": "スレッドがロックされた", - "post-edit-duration-expired": "You are only allowed to edit posts for %1 second(s) after posting", - "content-too-short": "Please enter a longer post. Posts should contain at least %1 character(s).", - "content-too-long": "Please enter a shorter post. Posts can't be longer than %1 character(s).", - "title-too-short": "Please enter a longer title. Titles should contain at least %1 character(s).", - "title-too-long": "Please enter a shorter title. Titles can't be longer than %1 character(s).", - "too-many-posts": "You can only post once every %1 second(s) - please wait before posting again", - "too-many-posts-newbie": "As a new user, you can only post once every %1 second(s) until you have earned %2 reputation - please wait before posting again", - "tag-too-short": "Please enter a longer tag. Tags should contain at least %1 character(s)", - "tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 character(s)", - "not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)", - "too-many-tags": "Too many tags. Topics can't have more than %1 tag(s)", + "post-edit-duration-expired": "あなたが%1秒後に投稿を編集する事が許されます", + "content-too-short": "より長く投稿を書いて下さい。投稿にはせめて%1文字が必要です。", + "content-too-long": "より短く投稿を書いて下さい。投稿が%1文字以上が許されません。", + "title-too-short": "より長くタイトルを書いて下さい。タイトルはせめて%1文字が必要です。", + "title-too-long": "より短くタイトルを書いて下さい。タイトルは%1文字以上が許されません。", + "too-many-posts": "あなたは%1秒間に一つの投稿しか許されます-少し待ってまた投稿してください", + "too-many-posts-newbie": "あなたは%2評判を得ているまで、新しいユーザーとしては、一度だけごとに%1秒を投稿することができます - 再び投稿する前にお待ちください", + "tag-too-short": "より長くタグを入力して下さい。タグはせめて%1文字が必要です。", + "tag-too-long": "より短くタグを入力して下さい。タグは%1文字以上が許されません。", + "not-enough-tags": "タグが足りません。トピックはせめて%1タグが必要です。", + "too-many-tags": "タグが多すぎます。トピックは%1のタグ以上が許されません。", "still-uploading": "アップロードが完成するまでお待ちください。", - "file-too-big": "Maximum allowed file size is %1 kB - please upload a smaller file", - "guest-upload-disabled": "Guest uploading has been disabled", - "already-favourited": "You have already favourited this post", - "already-unfavourited": "You have already unfavourited this post", + "file-too-big": "%1kBより大きいサイズファイルが許されません-より小さいファイルをアップして下さい。", + "guest-upload-disabled": "ゲストさんからのアップを無効にしています", + "already-favourited": "あなたはこの投稿をお気に入りにしました", + "already-unfavourited": "あなたはこの投稿をお気に入り解除しました", "cant-ban-other-admins": "ほかの管理者を停止することはできません!", - "cant-remove-last-admin": "You are the only administrator. Add another user as an administrator before removing yourself as admin", - "invalid-image-type": "Invalid image type. Allowed types are: %1", - "invalid-image-extension": "Invalid image extension", - "invalid-file-type": "Invalid file type. Allowed types are: %1", + "cant-remove-last-admin": "あなたが唯一の管理者です。管理者としてあなた自身を削除する前に、管理者として別のユーザーを追加します。", + "invalid-image-type": "無効なイメージタイプです。許可された種類は: %1", + "invalid-image-extension": "無効なイメージのエクステンション", + "invalid-file-type": "無効なファイルタイプです。許可された種類は: %1", "group-name-too-short": "グループ名は短すぎます。", "group-already-exists": "グループ名はすでに存在しています", "group-name-change-not-allowed": "グループ名の修正はできません", - "group-already-member": "Already part of this group", - "group-not-member": "Not a member of this group", - "group-needs-owner": "This group requires at least one owner", - "group-already-invited": "This user has already been invited", - "group-already-requested": "Your membership request has already been submitted", - "post-already-deleted": "This post has already been deleted", - "post-already-restored": "This post has already been restored", - "topic-already-deleted": "This topic has already been deleted", - "topic-already-restored": "This topic has already been restored", - "cant-purge-main-post": "You can't purge the main post, please delete the topic instead", + "group-already-member": "既にこのグループの一部であります", + "group-not-member": "このグループの一部ではありません", + "group-needs-owner": "このグループには少なくとも一人のオーナーが必要です", + "group-already-invited": "このユーザーが既に招待されました", + "group-already-requested": "あなたのメンバーシップの要求が既に提出されました", + "post-already-deleted": "この投稿が既に削除されました", + "post-already-restored": "この投稿が既に復元されました", + "topic-already-deleted": "このトピックが既に削除されました", + "topic-already-restored": "このトピックが既に復元されました", + "cant-purge-main-post": "あなたはこの主な投稿をパージできませんので、削除して下さい", "topic-thumbnails-are-disabled": "スレッドのサムネイルが無効された", "invalid-file": "無効なファイル", "uploads-are-disabled": "アップロードが無効された", - "signature-too-long": "Sorry, your signature cannot be longer than %1 character(s).", - "about-me-too-long": "Sorry, your about me cannot be longer than %1 character(s).", + "signature-too-long": "申し訳ありませんが、あなたの署名が%1文字より長くすることができません。", + "about-me-too-long": "申し訳ありませんが、あなたの私についての項目が%1より長くすることができません。", "cant-chat-with-yourself": "自分にチャットすることはできません!", "chat-restricted": "This user has restricted their chat messages. They must follow you before you can chat with them", "chat-disabled": "Chat system disabled", diff --git a/public/language/ja/global.json b/public/language/ja/global.json index 2a16a39511..80452889c5 100644 --- a/public/language/ja/global.json +++ b/public/language/ja/global.json @@ -3,65 +3,65 @@ "search": "検索", "buttons.close": "閉じる", "403.title": "アクセス拒否", - "403.message": "You seem to have stumbled upon a page that you do not have access to.", - "403.login": "Perhaps you should try logging in?", + "403.message": "アクセス権限が無いページを閲覧しようとしています。", + "403.login": "権限を持っている場合はログインすると閲覧出来ます。", "404.title": "見つかりません", - "404.message": "You seem to have stumbled upon a page that does not exist. Return to the home page.", + "404.message": "あなたは存在してないページを訪問してます。ホームページに戻ります。", "500.title": "内部エラー", - "500.message": "何とも言えない障害が発生しているようです.m(_ _)m", + "500.message": "何か問題が発生しているようです。", "register": "登録", "login": "ログイン", "please_log_in": "ログインください", "logout": "ログアウト", "posting_restriction_info": "登録ユーザーのみが投稿可能となります.こちらからログインください。", - "welcome_back": "Welcome Back", + "welcome_back": "おかえりなさい", "you_have_successfully_logged_in": "ログインできました", "save_changes": "保存する", "close": "閉じる", "pagination": "ページ", - "pagination.out_of": "%1 out of %2", + "pagination.out_of": "%2部の%1", "pagination.enter_index": "Enter index", "header.admin": "管理", - "header.categories": "Categories", + "header.categories": "カテゴリ", "header.recent": "最近", "header.unread": "未読", "header.tags": "Tags", "header.popular": "人気", "header.users": "ユーザー", - "header.groups": "Groups", + "header.groups": "グループ", "header.chats": "チャット", "header.notifications": "通知", "header.search": "検索", "header.profile": "プロフィール", - "header.navigation": "Navigation", + "header.navigation": "ナビゲーション", "notifications.loading": "通知をロード中", "chats.loading": "チャットをロード中", - "motd.welcome": "次世代の掲示板システム NodeBB へようこそ!", + "motd.welcome": "次世代の掲示板システムNodeBBへようこそ!", "previouspage": "前のページ", "nextpage": "次のページ", "alert.success": "成功", "alert.error": "エラー", "alert.banned": "停止した", - "alert.banned.message": "You have just been banned, you will now be logged out.", + "alert.banned.message": "あなたが禁止されていましたので、今すぐログアウトされます", "alert.unfollow": "%1へのフォローを停止しました!", "alert.follow": "%1をフォローしています!", "online": "オンライン", "users": "ユーザー", "topics": "スレッド", "posts": "ポスト", - "best": "Best", - "upvoted": "Upvoted", - "downvoted": "Downvoted", + "best": "最高", + "upvoted": "投票増加", + "downvoted": "投票減少", "views": "閲覧数", "reputation": "評価", "read_more": "続きを読む", - "more": "More", + "more": "つづき", "posted_ago_by_guest": "%1にゲストが投稿", - "posted_ago_by": "%1に %2 が投稿", + "posted_ago_by": "%1に%2が投稿", "posted_ago": "%1に投稿された", - "posted_in": "posted in %1", - "posted_in_by": "posted in %1 by %2", - "posted_in_ago": "posted in %1 %2", + "posted_in": "%1に投稿されました", + "posted_in_by": "%1に%2に投稿されました", + "posted_in_ago": "%1に投稿されました %2", "posted_in_ago_by": "%1 %2に %3 が投稿", "posted_in_ago_by_guest": "%1に %2 ゲストが投稿", "replied_ago": "%1 に返答", @@ -73,7 +73,7 @@ "recentposts": "最近のポスト", "recentips": "最近ログインしたIPアドレス", "away": "不在", - "dnd": "Do not disturb", + "dnd": "ご遠慮下さい", "invisible": "不可視", "offline": "オフライン", "email": "メール", diff --git a/public/language/ja/groups.json b/public/language/ja/groups.json index 2ac271a4c5..a3793e5a72 100644 --- a/public/language/ja/groups.json +++ b/public/language/ja/groups.json @@ -1,18 +1,18 @@ { - "groups": "Groups", - "view_group": "View Group", - "owner": "Group Owner", - "new_group": "Create New Group", - "no_groups_found": "There are no groups to see", - "pending.accept": "Accept", - "pending.reject": "Reject", - "pending.accept_all": "Accept All", - "pending.reject_all": "Reject All", - "pending.none": "There are no pending members at this time", - "invited.none": "There are no invited members at this time", - "invited.uninvite": "Rescind Invitation", - "invited.search": "Search for a user to invite to this group", - "invited.notification_title": "You have been invited to join %1", + "groups": "グループ", + "view_group": "グループを閲覧", + "owner": "グループオーナー", + "new_group": "新しいグループを作成", + "no_groups_found": "グループはありません", + "pending.accept": "承認", + "pending.reject": "拒否", + "pending.accept_all": "すべて承認", + "pending.reject_all": "すべて拒否", + "pending.none": "保留中のメンバーは現在居ません", + "invited.none": "招待しているメンバーは現在居ません。", + "invited.uninvite": "招待を取り消す", + "invited.search": "このグループに招待しているユーザーを検索", + "invited.notification_title": "%1に招待されました", "request.notification_title": "Group Membership Request from %1", "request.notification_text": "%1 has requested to become a member of %2", "cover-save": "Save", @@ -47,6 +47,6 @@ "membership.invitation-pending": "Invitation Pending", "membership.join-group": "Join Group", "membership.leave-group": "Leave Group", - "membership.reject": "Reject", + "membership.reject": "拒否", "new-group.group_name": "Group Name:" } \ No newline at end of file diff --git a/public/language/ja/language.json b/public/language/ja/language.json index ecd635ee30..e210a4285a 100644 --- a/public/language/ja/language.json +++ b/public/language/ja/language.json @@ -1,5 +1,5 @@ { "name": "日本語", - "code": "ja", + "code": "ja_JP", "dir": "ltr" } \ No newline at end of file diff --git a/public/language/ja/login.json b/public/language/ja/login.json index 82a18ea9b1..916593a30d 100644 --- a/public/language/ja/login.json +++ b/public/language/ja/login.json @@ -1,11 +1,11 @@ { - "username-email": "Username / Email", - "username": "Username", - "email": "Email", + "username-email": "ユーザー名またはメールアドレス", + "username": "ユーザー名", + "email": "メール", "remember_me": "ログイン情報を記憶", - "forgot_password": "パスワードがわからない?", + "forgot_password": "パスワードを忘れましたか?", "alternative_logins": "ほかのログイン方法", "failed_login_attempt": "ログインに失敗しました.ユーザー名やパスワードをご確認ください。", "login_successful": "ログインしました!", - "dont_have_account": "Don't have an account?" + "dont_have_account": "アカウントをもっていませんか?" } \ No newline at end of file diff --git a/public/language/ja/modules.json b/public/language/ja/modules.json index 9d21ffd816..701f6aa753 100644 --- a/public/language/ja/modules.json +++ b/public/language/ja/modules.json @@ -1,20 +1,20 @@ { "chat.chatting_with": "とチャット", - "chat.placeholder": "Type chat message here, press enter to send", + "chat.placeholder": "ここにメッセージを入力し、Enterで送信", "chat.send": "送信", "chat.no_active": "チャットはありません。", - "chat.user_typing": "%1 は入力中 ...", - "chat.user_has_messaged_you": "%1 has messaged you.", - "chat.see_all": "See all chats", - "chat.no-messages": "Please select a recipient to view chat message history", - "chat.no-users-in-room": "No users in this room", - "chat.recent-chats": "Recent Chats", - "chat.contacts": "Contacts", - "chat.message-history": "Message History", - "chat.pop-out": "Pop out chat", - "chat.maximize": "Maximize", - "chat.seven_days": "7 Days", - "chat.thirty_days": "30 Days", + "chat.user_typing": "%1 が入力中 ...", + "chat.user_has_messaged_you": "%1さんからメッセージが届いています。", + "chat.see_all": "すべてのチャットを見る", + "chat.no-messages": "チャットメッセージの履歴を表示するには、受信者を選択してください", + "chat.no-users-in-room": "ルームには誰も居ません", + "chat.recent-chats": "最近のチャット", + "chat.contacts": "お問い合わせ", + "chat.message-history": "メッセージ履歴", + "chat.pop-out": "チャットを別ウィンドウで表示する", + "chat.maximize": "最大化", + "chat.seven_days": "7日間", + "chat.thirty_days": "30日間", "chat.three_months": "3 Months", "chat.delete_message_confirm": "Are you sure you wish to delete this message?", "chat.roomname": "Chat Room %1", diff --git a/public/language/ja/notifications.json b/public/language/ja/notifications.json index 2c83fa3afa..25cb5e89e6 100644 --- a/public/language/ja/notifications.json +++ b/public/language/ja/notifications.json @@ -1,18 +1,18 @@ { - "title": "通知センター", + "title": "お知らせ", "no_notifs": "新しい通知はありません", - "see_all": "See all notifications", - "mark_all_read": "Mark all notifications read", - "back_to_home": "Back to %1", + "see_all": "すべての通知を見る", + "mark_all_read": "すべての通知を既読にする", + "back_to_home": "%1へ戻る", "outgoing_link": "外部サイトへのリンク", - "outgoing_link_message": "You are now leaving %1", - "continue_to": "Continue to %1", - "return_to": "Return to %1", + "outgoing_link_message": "%1から離れようとしています", + "continue_to": "%1へ行く", + "return_to": "%1へ戻る", "new_notification": "新しい通知", "you_have_unread_notifications": "未読の通知があります。", "new_message_from": "%1からの新しいメッセージ", - "upvoted_your_post_in": "%1 has upvoted your post in %2.", - "upvoted_your_post_in_dual": "%1 and %2 have upvoted your post in %3.", + "upvoted_your_post_in": "%1さんが%2に高評価をつけました。", + "upvoted_your_post_in_dual": "%1さんと%2さんが%3に高評価をつけました。", "upvoted_your_post_in_multiple": "%1 and %2 others have upvoted your post in %3.", "moved_your_post": "%1 has moved your post to %2", "moved_your_topic": "%1 has moved %2", diff --git a/public/language/ja/pages.json b/public/language/ja/pages.json index bb63ccdd89..31a3e6d858 100644 --- a/public/language/ja/pages.json +++ b/public/language/ja/pages.json @@ -1,25 +1,25 @@ { "home": "ホーム", - "unread": "未読スレッド", - "popular-day": "Popular topics today", - "popular-week": "Popular topics this week", - "popular-month": "Popular topics this month", - "popular-alltime": "All time popular topics", + "unread": "未読トピック", + "popular-day": "今日人気のトピック", + "popular-week": "今週人気のトピック", + "popular-month": "今月人気のトピック", + "popular-alltime": "人気のトピック", "recent": "最新スレッド", - "users/online": "Online Users", - "users/latest": "Latest Users", - "users/sort-posts": "Users with the most posts", - "users/sort-reputation": "Users with the most reputation", - "users/map": "User Map", - "users/search": "User Search", + "users/online": "オンラインのユーザー", + "users/latest": "最近のユーザー", + "users/sort-posts": "ほとんどの投稿を持つユーザー", + "users/sort-reputation": "一番評価の高いユーザー", + "users/map": "ユーザーマップ", + "users/search": "ユーザーを検索", "notifications": "通知", "tags": "Tags", "tag": "Topics tagged under \"%1\"", "register": "Register an account", "login": "Login to your account", "reset": "Reset your account password", - "categories": "Categories", - "groups": "Groups", + "categories": "カテゴリ", + "groups": "グループ", "group": "%1 group", "chats": "Chats", "chat": "Chatting with %1", diff --git a/public/language/ja/recent.json b/public/language/ja/recent.json index 5b76f5d6fc..cf4a7fa52b 100644 --- a/public/language/ja/recent.json +++ b/public/language/ja/recent.json @@ -1,19 +1,19 @@ { "title": "最近の更新", - "day": "最近 1 日", - "week": "最近 1 週", - "month": "最近 1 ヶ月", - "year": "Year", - "alltime": "All Time", + "day": "最近1日", + "week": "最近1週", + "month": "最近1ヶ月", + "year": "年", + "alltime": "全て", "no_recent_topics": "最近のスレッドはありません。", - "no_popular_topics": "There are no popular topics.", - "there-is-a-new-topic": "There is a new topic.", - "there-is-a-new-topic-and-a-new-post": "There is a new topic and a new post.", - "there-is-a-new-topic-and-new-posts": "There is a new topic and %1 new posts.", - "there-are-new-topics": "There are %1 new topics.", - "there-are-new-topics-and-a-new-post": "There are %1 new topics and a new post.", - "there-are-new-topics-and-new-posts": "There are %1 new topics and %2 new posts.", - "there-is-a-new-post": "There is a new post.", - "there-are-new-posts": "There are %1 new posts.", - "click-here-to-reload": "Click here to reload." + "no_popular_topics": "人気トピックはありません。", + "there-is-a-new-topic": "新しいトピックがあります。", + "there-is-a-new-topic-and-a-new-post": "新しいトピックと新しい投稿があります。", + "there-is-a-new-topic-and-new-posts": "新しいトピックが一つありまして、新しい投稿が%1個あります。", + "there-are-new-topics": "新しいトピックが%1個あります。", + "there-are-new-topics-and-a-new-post": "新しいトピックが%1個ありまして、新しい投稿が一つあります。", + "there-are-new-topics-and-new-posts": "新しいトピックが%1個ありまして、新しい投稿が%1個あります。", + "there-is-a-new-post": "新しい投稿が一個あります。", + "there-are-new-posts": "新しい投稿が%1あります。", + "click-here-to-reload": "ここを押して、更新します。" } \ No newline at end of file diff --git a/public/language/ja/register.json b/public/language/ja/register.json index a6c43fa915..a19fd68a34 100644 --- a/public/language/ja/register.json +++ b/public/language/ja/register.json @@ -1,7 +1,7 @@ { "register": "登録", - "help.email": "デフォルト設定ではメールアドレスは公開されません。", - "help.username_restrictions": "%1 から %2 文字までのユニークなユーザー名.Twitter の @username 方式でメンションすることができます。", + "help.email": "初期設定ではメールアドレスは公開されません。", + "help.username_restrictions": "%1から%2 文字までのユニークなユーザー名.ツイッター(twitter)の@username 方式でメンションすることができます。", "help.minimum_password_length": "パスワードには最小 %1 文字が必要です。", "email_address": "メールアドレス", "email_address_placeholder": "メールアドレスを入力ください", @@ -15,5 +15,5 @@ "alternative_registration": "ほかの登録方法", "terms_of_use": "利用規約", "agree_to_terms_of_use": "利用規約に同意する", - "registration-added-to-queue": "Your registration has been added to the approval queue. You will receive an email when it is accepted by an administrator." + "registration-added-to-queue": "あなたの登録申請は承認キューに追加されました。管理者によって受け入れられた時に、メールを受信します。" } \ No newline at end of file diff --git a/public/language/ja/reset_password.json b/public/language/ja/reset_password.json index e446d505e6..f90bbf0a68 100644 --- a/public/language/ja/reset_password.json +++ b/public/language/ja/reset_password.json @@ -3,15 +3,15 @@ "update_password": "パスワードを更新", "password_changed.title": "パスワードを更新しました", "password_changed.message": "

パスワードをリセットできました.こちらでログインしてください。", - "wrong_reset_code.title": "リセットコードは正しくありません", - "wrong_reset_code.message": "リセットコードは正しくありません.もう一度入力するか、新しいリセットコードを請求することができます。", + "wrong_reset_code.title": "リセットコードが正しくありません", + "wrong_reset_code.message": "リセットコードは正しくありません。もう一度入力するか、新しいリセットコードをリクエストすることができます。", "new_password": "新しいパスワード", - "repeat_password": "パスワード再入力", - "enter_email": "メールアドレスを入力してください.パスワードリセットの指示をメールでご送付します。", + "repeat_password": "パスワードを再入力", + "enter_email": "メールアドレスを入力してください。パスワードをリセットする方法をメールで送信します。", "enter_email_address": "メールアドレスを入力してください", "password_reset_sent": "パスワードリセットのメールを送信しました", "invalid_email": "このメールアドレスは存在しません", - "password_too_short": "The password entered is too short, please pick a different password.", - "passwords_do_not_match": "The two passwords you've entered do not match.", - "password_expired": "Your password has expired, please choose a new password" + "password_too_short": "パスワードが短すぎますので、違うパスワードを選んでください。", + "passwords_do_not_match": "パスワードが一致しません。", + "password_expired": "パスワードが期限切れですので、新しいパスワードを選んでください。" } \ No newline at end of file diff --git a/public/language/ja/search.json b/public/language/ja/search.json index 277c0a32bc..74eaf202a7 100644 --- a/public/language/ja/search.json +++ b/public/language/ja/search.json @@ -1,20 +1,20 @@ { "results_matching": "%1 result(s) matching \"%2\", (%3 seconds)", - "no-matches": "No matches found", - "advanced-search": "Advanced Search", - "in": "In", - "titles": "Titles", - "titles-posts": "Titles and Posts", - "posted-by": "Posted by", - "in-categories": "In Categories", - "search-child-categories": "Search child categories", - "reply-count": "Reply Count", - "at-least": "At least", - "at-most": "At most", - "post-time": "Post time", - "newer-than": "Newer than", - "older-than": "Older than", - "any-date": "Any date", + "no-matches": "見つかりませんでした", + "advanced-search": "高度な検索", + "in": "で", + "titles": "タイトル", + "titles-posts": "タイトルと投稿", + "posted-by": "投稿者:", + "in-categories": "カテゴリ", + "search-child-categories": "チャイルドカテゴリを検索する", + "reply-count": "返信数", + "at-least": "最低", + "at-most": "一番", + "post-time": "投稿時間", + "newer-than": "より新しい", + "older-than": "より古い", + "any-date": "すべて", "yesterday": "Yesterday", "one-week": "One week", "two-weeks": "Two weeks", @@ -22,14 +22,14 @@ "three-months": "Three months", "six-months": "Six months", "one-year": "One year", - "sort-by": "Sort by", + "sort-by": "並び替え", "last-reply-time": "Last reply time", "topic-title": "Topic title", "number-of-replies": "Number of replies", "number-of-views": "Number of views", "topic-start-date": "Topic start date", - "username": "Username", - "category": "Category", + "username": "ユーザー名", + "category": "カテゴリ", "descending": "In descending order", "ascending": "In ascending order", "save-preferences": "Save preferences", diff --git a/public/language/ja/success.json b/public/language/ja/success.json index cad5ecb03f..c47e3f9003 100644 --- a/public/language/ja/success.json +++ b/public/language/ja/success.json @@ -1,6 +1,6 @@ { - "success": "成功", - "topic-post": "成功に投稿しました。", - "authentication-successful": "認証が成功しました", + "success": "成功しました", + "topic-post": "投稿に成功しました", + "authentication-successful": "認証に成功しました", "settings-saved": "設定を保存しました。" } \ No newline at end of file diff --git a/public/language/ja/tags.json b/public/language/ja/tags.json index c416d8d4ec..1dcf2c6dcd 100644 --- a/public/language/ja/tags.json +++ b/public/language/ja/tags.json @@ -1,7 +1,7 @@ { - "no_tag_topics": "There are no topics with this tag.", - "tags": "Tags", - "enter_tags_here": "Enter tags here, between %1 and %2 characters each.", - "enter_tags_here_short": "Enter tags...", - "no_tags": "There are no tags yet." + "no_tag_topics": "このタグに関連するトピックはありません。", + "tags": "タグ", + "enter_tags_here": "ここにタグを入れます。一つのタグが%1から%2までの文字にして下さい。", + "enter_tags_here_short": "タグを入れます…", + "no_tags": "タグがありません" } \ No newline at end of file diff --git a/public/language/ja/topic.json b/public/language/ja/topic.json index efddad3710..d70e73276b 100644 --- a/public/language/ja/topic.json +++ b/public/language/ja/topic.json @@ -1,23 +1,23 @@ { - "topic": "スレッド", - "topic_id": "スレッド ID", - "topic_id_placeholder": "スレッド ID を入力してください", - "no_topics_found": "スレッドが見つかりません!", - "no_posts_found": "ポストはありません!", - "post_is_deleted": "このポストが削除されます!", - "topic_is_deleted": "This topic is deleted!", + "topic": "トピック", + "topic_id": "トピックID", + "topic_id_placeholder": "トピックIDを入力してください", + "no_topics_found": "トピックが見つかりません!", + "no_posts_found": "投稿はありません!", + "post_is_deleted": "この投稿が削除されました!", + "topic_is_deleted": "このトピックは削除されました!", "profile": "プロフィール", - "posted_by": "%1 のポスト", - "posted_by_guest": "Posted by Guest", + "posted_by": "%1さんが投稿", + "posted_by_guest": "ゲストさんが投稿", "chat": "チャット", - "notify_me": "このスレッドに新しいポストが投稿された際に通知する", + "notify_me": "このトピックに新しく投稿された時に通知する", "quote": "引用", - "reply": "返答", - "reply-as-topic": "Reply as topic", - "guest-login-reply": "Log in to reply", + "reply": "返信", + "reply-as-topic": "トピックとして返信する", + "guest-login-reply": "投稿するのにログインして下さい", "edit": "編集", "delete": "削除", - "purge": "Purge", + "purge": "粛清", "restore": "リストア", "move": "移動", "fork": "フォーク", @@ -25,22 +25,22 @@ "share": "シェア", "tools": "ツール", "flag": "フラグ", - "locked": "Locked", - "bookmark_instructions": "Click here to return to the last unread post in this thread.", + "locked": "ロック", + "bookmark_instructions": "ここを押して、最後の未読の投稿戻ります", "flag_title": "リポートする", "flag_success": "このポストをリポートしました。", - "deleted_message": "This topic has been deleted. Only users with topic management privileges can see it.", + "deleted_message": "このトピックが削除されました。トピック管理権を持っているユーザーにしか読めません。", "following_topic.message": "このスレッドが更新された際に通知を受け取ります。", "not_following_topic.message": "このスレッドの更新通知を停止しました。", "login_to_subscribe": "このスレッドを購読するためにログインが必要です。", "markAsUnreadForAll.success": "すべてのスレッドを未読にしました。", - "mark_unread": "Mark unread", + "mark_unread": "未読として示す", "watch": "ウオッチ", - "unwatch": "Unwatch", + "unwatch": "ウオッチ解除", "watch.title": "新しいポストの通知を受ける", - "unwatch.title": "Stop watching this topic", + "unwatch.title": "このトピックの通知を停止します", "share_this_post": "ポストを共有", - "thread_tools.title": "Topic Tools", + "thread_tools.title": "トピックのツール", "thread_tools.markAsUnreadForAll": "未読にする", "thread_tools.pin": "スレッドを最上部に固定", "thread_tools.unpin": "スレッドの固定を解除", @@ -50,16 +50,16 @@ "thread_tools.move_all": "すべてを移動", "thread_tools.fork": "スレッドをフォーク", "thread_tools.delete": "スレッドを削除", - "thread_tools.delete-posts": "Delete Posts", - "thread_tools.delete_confirm": "Are you sure you want to delete this topic?", + "thread_tools.delete-posts": "投稿を削除します", + "thread_tools.delete_confirm": "本当にこの投稿を削除しますか?", "thread_tools.restore": "スレッドをリストア", - "thread_tools.restore_confirm": "Are you sure you want to restore this topic?", - "thread_tools.purge": "Purge Topic", - "thread_tools.purge_confirm": "Are you sure you want to purge this topic?", - "topic_move_success": "このスレッドを %1 に移動しました。", + "thread_tools.restore_confirm": "本当にこのトピックを戻しますか?", + "thread_tools.purge": "トピックを粛清します", + "thread_tools.purge_confirm": "本当にこのトピックを粛清しますか?", + "topic_move_success": "このスレッドを%1に移動しました。", "post_delete_confirm": "本当にポストを削除しますか?", "post_restore_confirm": "本当にポストをリストアしますか?", - "post_purge_confirm": "Are you sure you want to purge this post?", + "post_purge_confirm": "本当にこの投稿を粛清しますか?", "load_categories": "板をローディング中...", "disabled_categories_note": "使用不可の板はグレーに表示されます。", "confirm_move": "移動", @@ -69,17 +69,17 @@ "favourites.has_no_favourites": "お気に入りはまだありません!", "loading_more_posts": "もっと見る", "move_topic": "スレッドを移動", - "move_topics": "Move Topics", + "move_topics": "トピックを移動する", "move_post": "ポストを移動", "post_moved": "ポストを移動しました!", "fork_topic": "スレッドをフォーク", "topic_will_be_moved_to": "スレッドはこちらのカテゴリへ移動", "fork_topic_instruction": "フォークしたいポストをクリックして", "fork_no_pids": "ポストが選択されていません!", - "fork_success": "Successfully forked topic! Click here to go to the forked topic.", - "delete_posts_instruction": "Click the posts you want to delete/purge", + "fork_success": "トピックをフォークするのに成功しました。ここを押して、このフォークしたトピックに行きます。", + "delete_posts_instruction": "削除または粛清するには、当てはまる投稿を押してください", "composer.title_placeholder": "スレッドのタイトルを入力して...", - "composer.handle_placeholder": "Name", + "composer.handle_placeholder": "名前", "composer.discard": "破棄する", "composer.submit": "保存する", "composer.replying_to": "%1へ返答中", @@ -91,21 +91,21 @@ "composer.thumb_file_label": "またはファイルをアップロード", "composer.thumb_remove": "入力をクリア", "composer.drag_and_drop_images": "こちらへ画像をドラッグ&ドロップ", - "more_users_and_guests": "%1 more user(s) and %2 guest(s)", - "more_users": "%1 more user(s)", - "more_guests": "%1 more guest(s)", - "users_and_others": "%1 and %2 others", - "sort_by": "Sort by", - "oldest_to_newest": "Oldest to Newest", - "newest_to_oldest": "Newest to Oldest", - "most_votes": "Most votes", - "most_posts": "Most posts", - "stale.title": "Create new topic instead?", - "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", - "stale.create": "Create a new topic", - "stale.reply_anyway": "Reply to this topic anyway", - "stale.link_back": "Re: [%1](%2)", - "spam": "Spam", - "offensive": "Offensive", - "custom-flag-reason": "Enter a flagging reason" + "more_users_and_guests": "ユーザーが%1人でゲストさんが%2人", + "more_users": "ユーザーが%1人", + "more_guests": "ゲストさんが%1人", + "users_and_others": "%1と他は%2", + "sort_by": "並び替え", + "oldest_to_newest": "新しい順に", + "newest_to_oldest": "古い順に", + "most_votes": "最高票", + "most_posts": "最高投稿", + "stale.title": "新しいトピックを作りますか?", + "stale.warning": "あなたが返信しようとしてるトピックが古いトピックです。新しいトピックを作って、そしてこのトピックが参考として入れた方を勧めます。そうしますか?", + "stale.create": "新しいトピックを作ります。", + "stale.reply_anyway": "とにかく、このトピックに返信します", + "stale.link_back": "返信: [%1](%2)", + "spam": "スパム", + "offensive": "攻撃", + "custom-flag-reason": "フラグを入れた理由" } \ No newline at end of file diff --git a/public/language/ja/unread.json b/public/language/ja/unread.json index f35c0c4d4c..66a8e02906 100644 --- a/public/language/ja/unread.json +++ b/public/language/ja/unread.json @@ -1,10 +1,10 @@ { "title": "未読", - "no_unread_topics": "未読のスレッドがあります。", + "no_unread_topics": "未読のトピックがあります。", "load_more": "もっと見る", "mark_as_read": "既読にする", "selected": "選択済み", - "all": "すべて", - "all_categories": "All categories", + "all": "全て", + "all_categories": "全てのカテゴリ", "topics_marked_as_read.success": "すべてのスレッドを既読にしました。" } \ No newline at end of file diff --git a/public/language/ja/user.json b/public/language/ja/user.json index 0a1b0cc7f5..174930b30c 100644 --- a/public/language/ja/user.json +++ b/public/language/ja/user.json @@ -1,18 +1,18 @@ { - "banned": "停止された", + "banned": "BANされた", "offline": "オフライン", "username": "ユーザー名", - "joindate": "Join Date", - "postcount": "Post Count", + "joindate": "参加日付", + "postcount": "投稿数", "email": "メール", - "confirm_email": "Confirm Email", - "ban_account": "Ban Account", - "ban_account_confirm": "Do you really want to ban this user?", - "unban_account": "Unban Account", - "delete_account": "Delete Account", - "delete_account_confirm": "Are you sure you want to delete your account?
This action is irreversible and you will not be able to recover any of your data

Enter your username to confirm that you wish to destroy this account.", - "delete_this_account_confirm": "Are you sure you want to delete this account?
This action is irreversible and you will not be able to recover any data

", - "account-deleted": "Account deleted", + "confirm_email": "メールアドレスを確認", + "ban_account": "BANアカウント", + "ban_account_confirm": "本当にこのユーザーをBANしますか?", + "unban_account": "禁止アカウント解除します", + "delete_account": "アカウント削除します", + "delete_account_confirm": "本当に自分のアカウントを削除しますか?
これは、あなたのデータをすべて削除することになります。

続けるには自分のユーザー名を入力してください。", + "delete_this_account_confirm": "本当にこのアカウントを削除しますか?
実行するとアカウントのデータは全て削除されます。

", + "account-deleted": "アカウントが解除されました", "fullname": "フルネーム", "website": "ウェブサイト", "location": "ロケーション", @@ -30,19 +30,19 @@ "signature": "署名", "birthday": "誕生日", "chat": "チャット", - "chat_with": "Chat with %1", + "chat_with": "%1とチャットのします", "follow": "フォロー", - "unfollow": "フォローしない", - "more": "More", + "unfollow": "フォロー解除", + "more": "つづき", "profile_update_success": "プロフィールを更新しました!", "change_picture": "画像を変更", - "change_username": "Change Username", - "change_email": "Change Email", + "change_username": "ユーザー名の変更", + "change_email": "メール変更", "edit": "編集", - "default_picture": "Default Icon", + "default_picture": "元のアイコン", "uploaded_picture": "アップロード済みの画像", "upload_new_picture": "新しい画像をアップロード", - "upload_new_picture_from_url": "Upload New Picture From URL", + "upload_new_picture_from_url": "URLにより新しい写真をアップします", "current_password": "現在のパスワード", "change_password": "パスワードを変更", "change_password_error": "無効のパスワード!", @@ -54,53 +54,53 @@ "confirm_password": "パスワードを再入力", "password": "パスワード", "username_taken_workaround": "このユーザー名はすでに使用されています。いまのユーザー名は %1 です。", - "password_same_as_username": "Your password is the same as your username, please select another password.", + "password_same_as_username": "パスワードがユーザー名と同じですから、他のパスワードを使って下さい。", "upload_picture": "画像をアップロード", "upload_a_picture": "画像をアップロード", - "remove_uploaded_picture": "Remove Uploaded Picture", - "image_spec": "You may only upload PNG, JPG, or BMP files", + "remove_uploaded_picture": "アップした写真を取り消します", + "image_spec": "PNG、JPGとBMPのファイルしかアップできません", "settings": "設定", "show_email": "メールアドレスを表示", - "show_fullname": "Show My Full Name", - "restrict_chats": "Only allow chat messages from users I follow", + "show_fullname": "フルネームを示します", + "restrict_chats": "私がフォローしたユーザーからのチャットメッセージだけ許可します", "digest_label": "ダイジェストを購読", "digest_description": "この掲示板のアップデートを受信する", "digest_off": "オフ", "digest_daily": "デイリー", "digest_weekly": "ウィークリー", "digest_monthly": "マンスリー", - "send_chat_notifications": "Send an email if a new chat message arrives and I am not online", - "send_post_notifications": "Send an email when replies are made to topics I am subscribed to", - "settings-require-reload": "Some setting changes require a reload. Click here to reload the page.", + "send_chat_notifications": "もしチャットのメッセージがあって、そして私が留守だったら、メールを送ってください。", + "send_post_notifications": "私が購読するトピックに返信があったら、メールを送ってください", + "settings-require-reload": "変化がありましてブラウザを更新する必要があります。ここを押して、ページ更新します。", "has_no_follower": "フォロワーはまだいません :(", "follows_no_one": "フォロー中のユーザーはまだいません :(", - "has_no_posts": "This user hasn't posted anything yet.", - "has_no_topics": "This user hasn't posted any topics yet.", - "has_no_watched_topics": "This user hasn't watched any topics yet.", - "has_no_upvoted_posts": "This user hasn't upvoted any posts yet.", - "has_no_downvoted_posts": "This user hasn't downvoted any posts yet.", - "has_no_voted_posts": "This user has no voted posts", + "has_no_posts": "このユーザーはまだ一つも投稿していません", + "has_no_topics": "このユーザーはまだ一つもトピックを作っていません", + "has_no_watched_topics": "このユーザーはまだ一つもトピックをウオッチしていません", + "has_no_upvoted_posts": "このユーザーはまだ一つも投稿に増加票をいれていません", + "has_no_downvoted_posts": "このユーザーはまだ一つも投稿に減少票をいれていません", + "has_no_voted_posts": "このユーザーは投稿に投票をいれていません", "email_hidden": "メールアドレスを非表示", "hidden": "非表示", - "paginate_description": "Paginate topics and posts instead of using infinite scroll", + "paginate_description": "トピックと投稿を無限スクロールよりページ別に示します", "topics_per_page": "ページ毎のスレッド数", "posts_per_page": "ページ毎のポスト数", - "notification_sounds": "Play a sound when you receive a notification", - "browsing": "Browsing Settings", - "open_links_in_new_tab": "Open outgoing links in new tab", - "enable_topic_searching": "Enable In-Topic Searching", - "topic_search_help": "If enabled, in-topic searching will override the browser's default page search behaviour and allow you to search through the entire topic, instead of what is only shown on screen", - "follow_topics_you_reply_to": "Follow topics that you reply to", - "follow_topics_you_create": "Follow topics you create", - "grouptitle": "Select the group title you would like to display", - "no-group-title": "No group title", - "select-skin": "Select a Skin", - "select-homepage": "Select a Homepage", - "homepage": "Homepage", - "homepage_description": "Select a page to use as the forum homepage or 'None' to use the default homepage.", - "custom_route": "Custom Homepage Route", - "custom_route_help": "Enter a route name here, without any preceding slash (e.g. \"recent\", or \"popular\")", - "sso.title": "Single Sign-on Services", - "sso.associated": "Associated with", - "sso.not-associated": "Click here to associate with" + "notification_sounds": "通知の時に音を鳴らします", + "browsing": "ブラウジングの設定", + "open_links_in_new_tab": "外リンクを新しいタブに開きます", + "enable_topic_searching": "インートピックの検索を有効にします", + "topic_search_help": "有効にしたら、インートピックの検索はブラウザの既定機能を無視して、スクリーンに示したよりトピック内からの全部を検索します", + "follow_topics_you_reply_to": "返信したトピックをフォローします", + "follow_topics_you_create": "投稿したトピックをフォローします", + "grouptitle": "好きなグループ名を選んで下さい", + "no-group-title": "グループ名がありません", + "select-skin": "スキンを選んで下さい", + "select-homepage": "ホームページを選んで下さい", + "homepage": "ホームページ", + "homepage_description": "フォルムホームページにするページを選んで下さい又は既定ホームページを使用する場合’None’を選んで下さい。", + "custom_route": "カスタムホームページルート", + "custom_route_help": "ここにルート名を入れます。手前にスラッシュを入れないこと(例:\"recent\"、\"popular\"など)", + "sso.title": "シングルサインオンサービス", + "sso.associated": "関連付けられています", + "sso.not-associated": "ここを押して、関連付けられています" } \ No newline at end of file diff --git a/public/language/ja/users.json b/public/language/ja/users.json index 0629269a9b..2fadd17482 100644 --- a/public/language/ja/users.json +++ b/public/language/ja/users.json @@ -1,21 +1,21 @@ { - "latest_users": "最新ユーザー", + "latest_users": "新しいユーザー", "top_posters": "最も投稿したユーザー", "most_reputation": "最も評価されたユーザー", "search": "検索", "enter_username": "検索するユーザー名を入力してください", - "load_more": "もっと表示", - "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", - "filter-by": "Filter By", - "online-only": "Online only", - "picture-only": "Picture only", - "invite": "Invite", - "invitation-email-sent": "An invitation email has been sent to %1", - "user_list": "User List", - "recent_topics": "Recent Topics", - "popular_topics": "Popular Topics", - "unread_topics": "Unread Topics", - "categories": "Categories", - "tags": "Tags", - "map": "Map" + "load_more": "もっと見る", + "users-found-search-took": "%1人のユーザーを見つけました!(検索まで%2秒掛かりました。)", + "filter-by": "フィルタ", + "online-only": "オンラインのみ", + "picture-only": "写真のみ", + "invite": "招待", + "invitation-email-sent": "招待メールが%1に送られました。", + "user_list": "ユーザー一覧", + "recent_topics": "最新トピック", + "popular_topics": "人気トピック", + "unread_topics": "未読トピック", + "categories": "カテゴリ", + "tags": "タグ", + "map": "マプ" } \ No newline at end of file diff --git a/public/language/ms/groups.json b/public/language/ms/groups.json index c97cf40235..876b702f74 100644 --- a/public/language/ms/groups.json +++ b/public/language/ms/groups.json @@ -24,7 +24,7 @@ "details.has_no_posts": "Kumpulan ahli kumpulan ini belum membuat sebarang kiriman.", "details.latest_posts": "Kiriman Terkini", "details.private": "Privasi", - "details.disableJoinRequests": "Disable join requests", + "details.disableJoinRequests": "Batalkan permintaan sertai", "details.grant": "Pemberian/Pembatalan pemilikan", "details.kick": "Tendang", "details.owner_options": "Pentadbiran Kumpulan", diff --git a/public/language/ms/notifications.json b/public/language/ms/notifications.json index 15092939a4..e0900929f0 100644 --- a/public/language/ms/notifications.json +++ b/public/language/ms/notifications.json @@ -5,30 +5,30 @@ "mark_all_read": "Tandakan semua pemberitahuan sudah dibaca", "back_to_home": "Kembali ke %1", "outgoing_link": "Sambungan luar", - "outgoing_link_message": "You are now leaving %1", + "outgoing_link_message": "Anda sedang meninggalkan %1", "continue_to": "Sambung ke %1", "return_to": "Kembali ke %1", "new_notification": "Pemberitahuan baru", "you_have_unread_notifications": "Ada pemberitahuan yang belum dibaca", "new_message_from": "Pesanan baru daripada %1", "upvoted_your_post_in": "%1 telah mengundi naik kiriman and di %2.", - "upvoted_your_post_in_dual": "%1 and %2 have upvoted your post in %3.", - "upvoted_your_post_in_multiple": "%1 and %2 others have upvoted your post in %3.", + "upvoted_your_post_in_dual": "%1dan %2 telah menambah undi pada kiriman anda di %3.", + "upvoted_your_post_in_multiple": "%1 dan %2 lagi telah menambah undi pada kiriman anda di %3. ", "moved_your_post": "%1 telah memindahkan kiriman anda ke %2", "moved_your_topic": "%1 telah memindahkan %2", "favourited_your_post_in": "%1 menggemari kiriman and di %2.", - "favourited_your_post_in_dual": "%1 and %2 have favourited your post in %3.", - "favourited_your_post_in_multiple": "%1 and %2 others have favourited your post in %3.", + "favourited_your_post_in_dual": "%1 dan %2 telah menggemari kiriman anda di %3.", + "favourited_your_post_in_multiple": "%1, %2 dan lain-lain telah menggemari kirimian anda pada %3.", "user_flagged_post_in": "%1 menanda kiriman anda di %2", - "user_flagged_post_in_dual": "%1 and %2 flagged a post in %3", - "user_flagged_post_in_multiple": "%1 and %2 others flagged a post in %3", + "user_flagged_post_in_dual": "%1 dan %2 telah menanda kiriman anda pada %3", + "user_flagged_post_in_multiple": "%1 dan %2 lagi telah mendanda kiriman anda pada %3", "user_posted_to": "%1 telah membalas kiriman kepada: %2", - "user_posted_to_dual": "%1 and %2 have posted replies to: %3", - "user_posted_to_multiple": "%1 and %2 others have posted replies to: %3", + "user_posted_to_dual": "%1 dan %2 membalas kiriman : %3", + "user_posted_to_multiple": "%1 dan %2 lagu membalas kiriman: %3", "user_posted_topic": "%1 membuka topik baru : %2", "user_started_following_you": "%1 mula mengikut anda.", - "user_started_following_you_dual": "%1 and %2 started following you.", - "user_started_following_you_multiple": "%1 and %2 others started following you.", + "user_started_following_you_dual": "%1 dan %2 mula mengikuti anda.", + "user_started_following_you_multiple": "%1 dan %2 lagi mula mengikuti anda.", "new_register": "%1 menghantar jemputan pendaftaran.", "email-confirmed": "Emel Disahkan", "email-confirmed-message": "Terima kasih kerana mengesahkan emel anda. Akaun anda telah diaktifkan sepenuhnya.", diff --git a/public/language/nl/email.json b/public/language/nl/email.json index 593afe0220..8723ae98aa 100644 --- a/public/language/nl/email.json +++ b/public/language/nl/email.json @@ -21,9 +21,9 @@ "digest.cta": "Klik hier om deze website te bezoeken %1 ", "digest.unsub.info": "Deze samenvatting is vanwege instellingen voor abonnementen van de gebruikersaccount door ons verzonden.", "digest.no_topics": "Er zijn geen actieve onderwerpen geweest %1", - "digest.day": "day", + "digest.day": "dag", "digest.week": "week", - "digest.month": "month", + "digest.month": "maand", "notif.chat.subject": "Nieuw chatbericht ontvangen van %1", "notif.chat.cta": "Klik hier om het gesprek te hervatten", "notif.chat.unsub.info": "Deze notificatie is verzonden vanwege de gebruikersinstellingen voor abonnementen.", diff --git a/public/language/nl/error.json b/public/language/nl/error.json index 9c2fe6035f..9ac1bc2260 100644 --- a/public/language/nl/error.json +++ b/public/language/nl/error.json @@ -24,7 +24,7 @@ "confirm-email-already-sent": "Bevestigingsbericht per e-mail al zojuist verzonden, wacht even een %1 tal minuutjes voordat opnieuw een bericht verzonden wordt.", "username-too-short": "Gebruikersnaam bevat niet voldoende tekens", "username-too-long": "Gebruikersnaam bevat meer dan het toegestane aantal tekens", - "password-too-long": "Password too long", + "password-too-long": "Wachtwoord te lang", "user-banned": "Gebruiker verbannen", "user-too-new": "Helaas, het is een vereiste om %1 seconde(n) te wachten voordat het eerste bericht geplaatst kan worden.", "no-category": "Categorie bestaat niet", diff --git a/public/language/nl/global.json b/public/language/nl/global.json index 51e5c5d5b7..92a3a90380 100644 --- a/public/language/nl/global.json +++ b/public/language/nl/global.json @@ -49,9 +49,9 @@ "users": "Gebruikers", "topics": "Onderwerpen", "posts": "Berichten", - "best": "Best", - "upvoted": "Upvoted", - "downvoted": "Downvoted", + "best": "Beste", + "upvoted": "Omhoog gestemd", + "downvoted": "Omlaag gestemd", "views": "Gezien", "reputation": "Reputatie", "read_more": "Lees meer", diff --git a/public/language/nl/modules.json b/public/language/nl/modules.json index 7a7a36ef1e..e9649e27a2 100644 --- a/public/language/nl/modules.json +++ b/public/language/nl/modules.json @@ -7,7 +7,7 @@ "chat.user_has_messaged_you": "%1 heeft een bericht gestuurd", "chat.see_all": "Laat alle chats zien", "chat.no-messages": "Selecteer een ontvanger om de chatgeschiedenis in te zien", - "chat.no-users-in-room": "No users in this room", + "chat.no-users-in-room": "Geen gebruikers in deze chat room", "chat.recent-chats": "Recent gevoerde gesprekken", "chat.contacts": "Contacten", "chat.message-history": "Berichtengeschiedenis", @@ -18,7 +18,7 @@ "chat.three_months": "3 maanden", "chat.delete_message_confirm": "Weet u het zeker dat u dit bericht wilt verwijderen?", "chat.roomname": "Chat Room %1", - "chat.add-users-to-room": "Add users to room", + "chat.add-users-to-room": "Voeg gebruikers toe aan deze chat room", "composer.compose": "Samenstellen", "composer.show_preview": "Voorbeeldweergave", "composer.hide_preview": "Verberg voorbeeld", diff --git a/public/language/nl/notifications.json b/public/language/nl/notifications.json index eef36d4bb0..a047b2fad8 100644 --- a/public/language/nl/notifications.json +++ b/public/language/nl/notifications.json @@ -5,7 +5,7 @@ "mark_all_read": "Markeer alles als gelezen", "back_to_home": "Terug naar %1", "outgoing_link": "Uitgaande Link", - "outgoing_link_message": "You are now leaving %1", + "outgoing_link_message": "U verlaat nu %1", "continue_to": "Door naar %1", "return_to": "Terug naar %1", "new_notification": "Nieuwe melding", diff --git a/public/language/nl/pages.json b/public/language/nl/pages.json index 5ac0cc120b..0c4a7eb9c5 100644 --- a/public/language/nl/pages.json +++ b/public/language/nl/pages.json @@ -35,9 +35,9 @@ "account/favourites": "Favoriete berichten van %1", "account/settings": "Gebruikersinstellingen", "account/watched": "Berichten die door %1 bekeken worden", - "account/upvoted": "Posts upvoted by %1", - "account/downvoted": "Posts downvoted by %1", - "account/best": "Best posts made by %1", + "account/upvoted": "Berichten omhoog gestemd door %1", + "account/downvoted": "Berichten omlaag gestemd door %1", + "account/best": "Beste berichten geplaast door %1", "maintenance.text": "%1 is momenteel in onderhoud. Excuses voor het ongemak en probeer het later nog eens.", "maintenance.messageIntro": "Daarnaast heeft de beheerder het volgende bericht achtergelaten:", "throttled.text": "%1 is momenteel niet beschikbaar door overmatig gebruikt. Excuses voor het ongemak en probeer het later nog eens." diff --git a/public/language/nl/topic.json b/public/language/nl/topic.json index caf1e87426..d5c3666bcd 100644 --- a/public/language/nl/topic.json +++ b/public/language/nl/topic.json @@ -77,7 +77,7 @@ "fork_topic_instruction": "Klik op de berichten die afgesplitst moeten worden", "fork_no_pids": "Geen berichten geselecteerd!", "fork_success": "Onderwerp is succesvol afgesplitst. Klik hier om het nieuwe onderwerp te zien.", - "delete_posts_instruction": "Click the posts you want to delete/purge", + "delete_posts_instruction": "Klik op de berichten die verwijderd moeten worden", "composer.title_placeholder": "Voer hier de titel van het onderwerp in...", "composer.handle_placeholder": "Naam", "composer.discard": "Annuleren", diff --git a/public/language/nl/user.json b/public/language/nl/user.json index 5ff74acad1..b19040a6a2 100644 --- a/public/language/nl/user.json +++ b/public/language/nl/user.json @@ -77,9 +77,9 @@ "has_no_posts": "Deze gebruiker heeft nog geen berichten geplaatst", "has_no_topics": "Deze gebruiker heeft nog geen onderwerpen gestart.", "has_no_watched_topics": "Deze gebruiker heeft nog geen onderwerpen gevolgd.", - "has_no_upvoted_posts": "This user hasn't upvoted any posts yet.", - "has_no_downvoted_posts": "This user hasn't downvoted any posts yet.", - "has_no_voted_posts": "This user has no voted posts", + "has_no_upvoted_posts": "Deze gebruiker heeft nog geen berichten omhoog gestemd.", + "has_no_downvoted_posts": "Deze gebruiker heeft nog geen berichten omlaag gestemd.", + "has_no_voted_posts": "Deze gebruiker heeft nog niet op berichten gestemd", "email_hidden": "E-mail niet beschikbaar", "hidden": "verborgen", "paginate_description": "Blader door onderwerpen en berichten in plaats van oneindig scrollen.", diff --git a/public/language/pt_BR/error.json b/public/language/pt_BR/error.json index d499a302e9..26d04b2dd2 100644 --- a/public/language/pt_BR/error.json +++ b/public/language/pt_BR/error.json @@ -24,7 +24,7 @@ "confirm-email-already-sent": "O email de confirmação já foi enviado, por favor aguarde %1 minuto(s) para enviar outro.", "username-too-short": "Nome de usuário muito curto", "username-too-long": "Nome de usuário muito longo", - "password-too-long": "Password too long", + "password-too-long": "A senha é muito grande", "user-banned": "Usuário banido", "user-too-new": "Desculpe, é necessário que você aguarde %1 segundo(s) antes de fazer o seu primeiro post.", "no-category": "A categoria não existe", diff --git a/public/language/pt_BR/global.json b/public/language/pt_BR/global.json index 295a86ce8f..6b59e54553 100644 --- a/public/language/pt_BR/global.json +++ b/public/language/pt_BR/global.json @@ -49,9 +49,9 @@ "users": "Usuários", "topics": "Tópicos", "posts": "Posts", - "best": "Best", - "upvoted": "Upvoted", - "downvoted": "Downvoted", + "best": "Melhor", + "upvoted": "Votado positivamente", + "downvoted": "Votado negativamente", "views": "Visualizações", "reputation": "Reputação", "read_more": "ler mais", diff --git a/public/language/pt_BR/notifications.json b/public/language/pt_BR/notifications.json index 073c993db3..b1f5f21914 100644 --- a/public/language/pt_BR/notifications.json +++ b/public/language/pt_BR/notifications.json @@ -5,7 +5,7 @@ "mark_all_read": "Marcas todas as notificações como lidas", "back_to_home": "Voltar para %1", "outgoing_link": "Link Externo", - "outgoing_link_message": "You are now leaving %1", + "outgoing_link_message": "Você está saindo de %1", "continue_to": "Continuar para %1", "return_to": "Voltar para %1", "new_notification": "Nova Notificação", @@ -15,7 +15,7 @@ "upvoted_your_post_in_dual": "%1 e %2 deram voto positivo ao seu post em %3.", "upvoted_your_post_in_multiple": "%1 e %2 outros deram voto positivo ao seu post em %3.", "moved_your_post": "%1 moveu seu post para %2", - "moved_your_topic": "%1 moveu %2", + "moved_your_topic": "%1 se mudou %2", "favourited_your_post_in": "%1 adicionou seu tópico aos favoritos em %2.", "favourited_your_post_in_dual": "%1 e %2 adicionaram seu post aos favoritos em %3.", "favourited_your_post_in_multiple": "%1 e %2 outros adicionaram seu post aos favoritos em %3.", diff --git a/public/language/pt_BR/pages.json b/public/language/pt_BR/pages.json index b810f128bc..f3dc8d1779 100644 --- a/public/language/pt_BR/pages.json +++ b/public/language/pt_BR/pages.json @@ -35,9 +35,9 @@ "account/favourites": "Posts Favoritos de %1", "account/settings": "Configurações de Usuário", "account/watched": "Tópicos assistidos por %1", - "account/upvoted": "Posts upvoted by %1", - "account/downvoted": "Posts downvoted by %1", - "account/best": "Best posts made by %1", + "account/upvoted": "Posts votados positivamente por %1", + "account/downvoted": "Posts votados negativamente por %1", + "account/best": "Melhores posts de %1", "maintenance.text": "%1 está atualmente sob manutenção. Por favor retorne em outro momento.", "maintenance.messageIntro": "Adicionalmente, o administrador deixou esta mensagem:", "throttled.text": "%1 está atualmente indisponível devido a excesso de contingente. Por favor retorne em outro momento." diff --git a/public/language/pt_BR/user.json b/public/language/pt_BR/user.json index 960ce1941c..5f01d4eeeb 100644 --- a/public/language/pt_BR/user.json +++ b/public/language/pt_BR/user.json @@ -77,9 +77,9 @@ "has_no_posts": "Esse usuário ainda não postou nada.", "has_no_topics": "Esse usuário ainda não postou quaisquer tópicos.", "has_no_watched_topics": "Esse usuário ainda não acompanhou quaisquer tópicos.", - "has_no_upvoted_posts": "This user hasn't upvoted any posts yet.", - "has_no_downvoted_posts": "This user hasn't downvoted any posts yet.", - "has_no_voted_posts": "This user has no voted posts", + "has_no_upvoted_posts": "Este usuário ainda não votou quaisquer posts positivamente.", + "has_no_downvoted_posts": "Este usuário ainda não votou quaisquer posts negativamente.", + "has_no_voted_posts": "Este usuário não tem posts votados", "email_hidden": "Email Escondido", "hidden": "escondido", "paginate_description": "Paginar tópicos ao invés de utilizar em vez de usar rolagem infinita.", diff --git a/public/language/ro/error.json b/public/language/ro/error.json index df6466aec7..e75c08a521 100644 --- a/public/language/ro/error.json +++ b/public/language/ro/error.json @@ -2,7 +2,7 @@ "invalid-data": "Date invalide", "not-logged-in": "Se pare ca nu ești logat.", "account-locked": "Contul tău a fost blocat temporar", - "search-requires-login": "Searching requires an account - please login or register.", + "search-requires-login": "Pentru a cauta ai nevoie de un cont. Logheaza-te sau autentifica-te.", "invalid-cid": "ID Categorie Invalid", "invalid-tid": "ID Subiect Invalid", "invalid-pid": "ID Mesaj Invalid", @@ -17,21 +17,21 @@ "invalid-pagination-value": "Date paginație invalide", "username-taken": "Numele de utilizator este deja folosit", "email-taken": "Adresa de email este deja folostă", - "email-not-confirmed": "Your email has not been confirmed yet, please click here to confirm your email.", - "email-not-confirmed-chat": "You are unable to chat until your email is confirmed, please click here to confirm your email.", - "no-email-to-confirm": "This forum requires email confirmation, please click here to enter an email", - "email-confirm-failed": "We could not confirm your email, please try again later.", - "confirm-email-already-sent": "Confirmation email already sent, please wait %1 minute(s) to send another one.", + "email-not-confirmed": "Adresa ta de email nu a fost inca confirmata, click aici ca sa o confirmi.", + "email-not-confirmed-chat": "Nu vei putea trimite mesaje daca email-ul tau nu e confirmat, click aici sa il confirmi.", + "no-email-to-confirm": "Ca sa accesezi forumul trebuie sa iti confirmi email-ul, click aici ca sa intri in mail.", + "email-confirm-failed": "Mail-ul tau nu a putut fi confirmat, te rog incearca mai tarziu.", + "confirm-email-already-sent": "Email-ul de confirmare ti-a fost trimis, asteapta te rog %1 minut(e) ca sa trimiti inca unul.", "username-too-short": "Numele de utilizator este prea scurt", "username-too-long": "Numele de utilizator este prea lung", - "password-too-long": "Password too long", + "password-too-long": "Parola prea lunga.", "user-banned": "Utilizator banat", - "user-too-new": "Sorry, you are required to wait %1 second(s) before making your first post", - "no-category": "Category does not exist", - "no-topic": "Topic does not exist", - "no-post": "Post does not exist", - "no-group": "Group does not exist", - "no-user": "User does not exist", + "user-too-new": "Imi pare rau dar trebuie sa astepti %1 secunda(e) pentru a posta prima oara.", + "no-category": "Categoria nu exista.", + "no-topic": "Topicul nu exista.", + "no-post": "Post-ul nu exista.", + "no-group": "Grupul nu exista.", + "no-user": "Utilizatorul nu exista.", "no-teaser": "Teaser does not exist", "no-privileges": "You do not have enough privileges for this action.", "category-disabled": "Categorie dezactivată", diff --git a/public/language/ro/login.json b/public/language/ro/login.json index 31504eb1c1..479e3a83be 100644 --- a/public/language/ro/login.json +++ b/public/language/ro/login.json @@ -1,6 +1,6 @@ { - "username-email": "Username / Email", - "username": "Username", + "username-email": "Utilizator/Email", + "username": "Utilizator", "email": "Email", "remember_me": "Autentifică-mă automat la fiecare vizită", "forgot_password": "Ai uitat parola?", diff --git a/public/language/ro/search.json b/public/language/ro/search.json index 6ba92e0b84..aa22397fd6 100644 --- a/public/language/ro/search.json +++ b/public/language/ro/search.json @@ -28,7 +28,7 @@ "number-of-replies": "Number of replies", "number-of-views": "Number of views", "topic-start-date": "Topic start date", - "username": "Username", + "username": "Utilizator", "category": "Category", "descending": "In descending order", "ascending": "In ascending order", diff --git a/public/language/ru/global.json b/public/language/ru/global.json index c5479f8ecc..d2be43a7b7 100644 --- a/public/language/ru/global.json +++ b/public/language/ru/global.json @@ -59,7 +59,7 @@ "posted_ago_by_guest": "создано %1 Гостем", "posted_ago_by": "сообщений %1 от %2", "posted_ago": "написал %1", - "posted_in": "posted in %1", + "posted_in": "написал в %1", "posted_in_by": "posted in %1 by %2", "posted_in_ago": "написал в %1 %2", "posted_in_ago_by": "%3 написал в %1 %2", diff --git a/public/language/ru/groups.json b/public/language/ru/groups.json index 1f6429cc8b..c9d711a028 100644 --- a/public/language/ru/groups.json +++ b/public/language/ru/groups.json @@ -24,7 +24,7 @@ "details.has_no_posts": "Пользователями этой группы не публиковали никаких записей", "details.latest_posts": "Последние записи", "details.private": "Приватная", - "details.disableJoinRequests": "Disable join requests", + "details.disableJoinRequests": "Отключить запросы на приглашение", "details.grant": "Выдать/забрать администратора", "details.kick": "Исключить", "details.owner_options": "Настройки группы", diff --git a/public/language/ru/modules.json b/public/language/ru/modules.json index 9d634dda8d..e6f53b3f79 100644 --- a/public/language/ru/modules.json +++ b/public/language/ru/modules.json @@ -7,7 +7,7 @@ "chat.user_has_messaged_you": "%1 отправил вам сообщение.", "chat.see_all": "Посмотреть все чаты", "chat.no-messages": "Пожалуйста, выберите собеседника для просмотра истории сообщений", - "chat.no-users-in-room": "No users in this room", + "chat.no-users-in-room": "В этой комнате нет пользователей", "chat.recent-chats": "Последние переписки", "chat.contacts": "Контакты", "chat.message-history": "История сообщений", @@ -17,8 +17,8 @@ "chat.thirty_days": "30 дней", "chat.three_months": "3 месяца", "chat.delete_message_confirm": "Вы уверены, что хотите удалить это сообщение?", - "chat.roomname": "Chat Room %1", - "chat.add-users-to-room": "Add users to room", + "chat.roomname": "Комната %1", + "chat.add-users-to-room": "Добавить пользователей в комнату", "composer.compose": "Редактор", "composer.show_preview": "Показать предпросмотр", "composer.hide_preview": "Скрыть предпросмотр", @@ -31,7 +31,7 @@ "bootbox.ok": "ОК", "bootbox.cancel": "Отмена", "bootbox.confirm": "Подтвердить", - "cover.dragging_title": "Cover Photo Positioning", - "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"", - "cover.saved": "Cover photo image and position saved" + "cover.dragging_title": "Позиционирование обложки", + "cover.dragging_message": "Перетащите обложку на желаемое положение и нажмите \"Сохранить\"", + "cover.saved": "Обложка и расположение сохранены" } \ No newline at end of file diff --git a/public/language/ru/notifications.json b/public/language/ru/notifications.json index 5c021a2a31..a6c76e8aaa 100644 --- a/public/language/ru/notifications.json +++ b/public/language/ru/notifications.json @@ -5,30 +5,30 @@ "mark_all_read": "Отметить все уведомления как прочитанные", "back_to_home": "Назад к %1", "outgoing_link": "Внешняя ссылка", - "outgoing_link_message": "You are now leaving %1", + "outgoing_link_message": "Вы сейчас читаете: %1", "continue_to": "Перейти на %1", "return_to": "Вернуться к %1", "new_notification": "Новое Уведомление", "you_have_unread_notifications": "У вас есть непрочитанные уведомления.", "new_message_from": "Новое сообщение от %1", "upvoted_your_post_in": "%1 проголосовал за Ваше сообщение в %2.", - "upvoted_your_post_in_dual": "%1 and %2 have upvoted your post in %3.", - "upvoted_your_post_in_multiple": "%1 and %2 others have upvoted your post in %3.", + "upvoted_your_post_in_dual": "%1 и %2 проголосовали за ваше сообщение в %3.", + "upvoted_your_post_in_multiple": "%1 и %2 другие проголосовали за ваше сообщение в %3", "moved_your_post": "%1 переместил Ваше сообщение в %2", "moved_your_topic": "%1 переместил %2", "favourited_your_post_in": "%1 добавил в избранное Ваше сообщение в %2.", "favourited_your_post_in_dual": "%1 и %2 добавили в избранное Ваше сообщение в %3.", - "favourited_your_post_in_multiple": "%1 and %2 others have favourited your post in %3.", + "favourited_your_post_in_multiple": "%1 и %2 другие добавили в избранное ваше сообщение в %3.", "user_flagged_post_in": "%1 пометил сообщение в %2", - "user_flagged_post_in_dual": "%1 and %2 flagged a post in %3", - "user_flagged_post_in_multiple": "%1 and %2 others flagged a post in %3", + "user_flagged_post_in_dual": "%1 и %2 пометили ваше сообщение в %3", + "user_flagged_post_in_multiple": "%1 и %2 другие пометили ваше сообщение %3", "user_posted_to": "%1 ответил на запись: %2", - "user_posted_to_dual": "%1 and %2 have posted replies to: %3", - "user_posted_to_multiple": "%1 and %2 others have posted replies to: %3", + "user_posted_to_dual": "%1 и %2 ответили на вашу запись: %3", + "user_posted_to_multiple": "%1 и %2 другие ответили на вашу запись: %3", "user_posted_topic": "%1 открыл новую тему: %2", "user_started_following_you": "%1 подписался на Вас.", - "user_started_following_you_dual": "%1 and %2 started following you.", - "user_started_following_you_multiple": "%1 and %2 others started following you.", + "user_started_following_you_dual": "%1 и %2 подписались на вас.", + "user_started_following_you_multiple": "%1 и %2 подписались на вас.", "new_register": "%1 отправил запрос на регистрацию.", "email-confirmed": "Email подтвержден", "email-confirmed-message": "Спасибо за подтверждение Вашего Email-адреса. Ваш аккаунт активирован.", diff --git a/public/language/ru/pages.json b/public/language/ru/pages.json index 7ffbde9faf..def5a3b818 100644 --- a/public/language/ru/pages.json +++ b/public/language/ru/pages.json @@ -25,7 +25,7 @@ "chat": "Чат с %1", "account/edit": "Редактирование \"%1\"", "account/edit/password": "Редактирование пароля \"%1\"", - "account/edit/username": "Editing username of \"%1\"", + "account/edit/username": "Редактирование имени пользователя \"%1\"", "account/edit/email": "Редактирование email \"%1\"", "account/following": "Наблюдают %1", "account/followers": "Кто наблюдает %1", diff --git a/public/language/ru/topic.json b/public/language/ru/topic.json index 54c556b48b..dfe25ff7a8 100644 --- a/public/language/ru/topic.json +++ b/public/language/ru/topic.json @@ -1,6 +1,6 @@ { "topic": "Тема", - "topic_id": "ID Темы", + "topic_id": "ID темы", "topic_id_placeholder": "Введите ID темы", "no_topics_found": "Тем не найдено!", "no_posts_found": "Сообщения не найдены!", @@ -13,7 +13,7 @@ "notify_me": "Сообщать мне об ответах в этой теме", "quote": "Цитировать", "reply": "Ответить", - "reply-as-topic": "Reply as topic", + "reply-as-topic": "Ответить создав тему", "guest-login-reply": "Войдите чтобы оставить сообщение", "edit": "Редактировать", "delete": "Удалить", @@ -34,7 +34,7 @@ "not_following_topic.message": "Вы больше не будете получать уведомления из этой темы.", "login_to_subscribe": "Пожалуйста зарегистрируйтесь, или войдите под своим аккаунтом, чтобы подписаться на эту тему.", "markAsUnreadForAll.success": "Тема помечена как непрочитанная для всех.", - "mark_unread": "Mark unread", + "mark_unread": "Отметить как непрочитанное", "watch": "Следить", "unwatch": "Не следить", "watch.title": "Сообщать мне об ответах в этой теме", @@ -50,7 +50,7 @@ "thread_tools.move_all": "Переместить все", "thread_tools.fork": "Ответвить тему", "thread_tools.delete": "Удалить тему", - "thread_tools.delete-posts": "Delete Posts", + "thread_tools.delete-posts": "Удалить сообщения", "thread_tools.delete_confirm": "Вы уверены, что хотите удалить тему?", "thread_tools.restore": "Восстановить тему", "thread_tools.restore_confirm": "Вы уверены, что хотите восстановить тему?", @@ -77,7 +77,7 @@ "fork_topic_instruction": "Отметьте сообщения для ответвления", "fork_no_pids": "Сообщения не отмечены!", "fork_success": "Готово! Нажмите для перехода в отделённую тему.", - "delete_posts_instruction": "Click the posts you want to delete/purge", + "delete_posts_instruction": "Отметьте сообщения, которые Вы хотите удалить/очистить", "composer.title_placeholder": "Введите название темы...", "composer.handle_placeholder": "Название", "composer.discard": "Отменить", diff --git a/public/language/sv/login.json b/public/language/sv/login.json index 5709db59f0..67478a02ca 100644 --- a/public/language/sv/login.json +++ b/public/language/sv/login.json @@ -1,7 +1,7 @@ { - "username-email": "Användarnamn / Epostadress", - "username": "Användarnamn", - "email": "Epostadress", + "username-email": "Namn / Epost", + "username": "Namn", + "email": "Epost", "remember_me": "Kom ihåg mig?", "forgot_password": "Glömt lösenord?", "alternative_logins": "Alternativa inloggningssätt", diff --git a/public/language/tr/error.json b/public/language/tr/error.json index 761a9cdc37..04704bf936 100644 --- a/public/language/tr/error.json +++ b/public/language/tr/error.json @@ -24,7 +24,7 @@ "confirm-email-already-sent": "E-mail onayı zaten gönderilmiş, yeni bir onay göndermek için lütfen 1 dakika bekleyin.", "username-too-short": "Kullanıcı ismi çok kısa", "username-too-long": "Kullanıcı ismi çok uzun.", - "password-too-long": "Password too long", + "password-too-long": "Parola çok uzun", "user-banned": "Kullanıcı Yasaklı", "user-too-new": "Özür dileriz, ilk iletinizi yapmadan önce %1 saniye beklemeniz gerekiyor", "no-category": "Kategori Yok", diff --git a/public/language/tr/global.json b/public/language/tr/global.json index b4a30911cc..f5fe31c00b 100644 --- a/public/language/tr/global.json +++ b/public/language/tr/global.json @@ -46,12 +46,12 @@ "alert.unfollow": "Artık %1'i takip etmiyorsunuz!", "alert.follow": "%1'i takip ediyorsunuz!", "online": "Çevrimiçi", - "users": "Kullanıcılar", - "topics": "Başlıklar", - "posts": "İletiler", - "best": "Best", - "upvoted": "Upvoted", - "downvoted": "Downvoted", + "users": "Kullanıcı", + "topics": "Başlık", + "posts": "İleti", + "best": "En İyi", + "upvoted": "Artı", + "downvoted": "Eksi", "views": "Görünüm", "reputation": "Saygınlık", "read_more": "daha fazla oku", diff --git a/public/language/tr/groups.json b/public/language/tr/groups.json index 182dfaffd1..afb293df5c 100644 --- a/public/language/tr/groups.json +++ b/public/language/tr/groups.json @@ -24,7 +24,7 @@ "details.has_no_posts": "Bu grubun üyeleri henüz bir ileti göndermedi.", "details.latest_posts": "En son iletiler", "details.private": "Özel", - "details.disableJoinRequests": "Disable join requests", + "details.disableJoinRequests": "Katılma isteklerini devre dışı bırak", "details.grant": "Gurup sahibi yap/yapma", "details.kick": "Dışarı at", "details.owner_options": "Grup Yöneticisi", diff --git a/public/language/tr/modules.json b/public/language/tr/modules.json index 537b0187b4..c0edbdc1d8 100644 --- a/public/language/tr/modules.json +++ b/public/language/tr/modules.json @@ -7,7 +7,7 @@ "chat.user_has_messaged_you": "%1 size bir mesaj gönderdi.", "chat.see_all": "Bütün sohbetleri gör", "chat.no-messages": "Lütfen sohbet geçmişini görmek için bir kontak seçin", - "chat.no-users-in-room": "No users in this room", + "chat.no-users-in-room": "Bu odada hiç kullanıcı yok", "chat.recent-chats": "Güncel Sohbetler", "chat.contacts": "Kontaklar", "chat.message-history": "Mesaj Geçmişi", @@ -17,8 +17,8 @@ "chat.thirty_days": "30 Gün", "chat.three_months": "3 Ay", "chat.delete_message_confirm": "Bu mesajı silmek istediğinden emin misin?", - "chat.roomname": "Chat Room %1", - "chat.add-users-to-room": "Add users to room", + "chat.roomname": "Sohbet Odası %1", + "chat.add-users-to-room": "Odaya Kullanıcı Ekle", "composer.compose": "Yaz", "composer.show_preview": "Önizleme Göster", "composer.hide_preview": "Önizleme Sakla", diff --git a/public/language/tr/notifications.json b/public/language/tr/notifications.json index eb372f16ff..e378b748e7 100644 --- a/public/language/tr/notifications.json +++ b/public/language/tr/notifications.json @@ -5,7 +5,7 @@ "mark_all_read": "Bütün bildirileri okunmuş say", "back_to_home": "Geri dön %1", "outgoing_link": "Harici Link", - "outgoing_link_message": "You are now leaving %1", + "outgoing_link_message": "%1 ayrılıyorsunuz", "continue_to": "Devam et", "return_to": "Geri dön.", "new_notification": "Yeni bildirim", diff --git a/public/language/tr/pages.json b/public/language/tr/pages.json index 9b3700fb70..6a6e9da7c9 100644 --- a/public/language/tr/pages.json +++ b/public/language/tr/pages.json @@ -35,9 +35,9 @@ "account/favourites": "%1'in Favori İletileri", "account/settings": "Kullanıcı Ayarları", "account/watched": "%1 tarafından izlenen konular", - "account/upvoted": "Posts upvoted by %1", - "account/downvoted": "Posts downvoted by %1", - "account/best": "Best posts made by %1", + "account/upvoted": "%1 tarafından artılanan gönderiler", + "account/downvoted": "%1 tarafından eksilenen gönderiler", + "account/best": "%1 tarafından en iyi gönderiler", "maintenance.text": "%1 şu anda bakımda. Lütfen bir süre sonra tekrar deneyin.", "maintenance.messageIntro": "Ayrıca, yönetici şu mesaji bıraktı:", "throttled.text": "%1 şu anda kullanılamıyor. Lütfen daha sonra tekrar dene." diff --git a/public/language/tr/topic.json b/public/language/tr/topic.json index 6469d7798f..9d22dbfbcf 100644 --- a/public/language/tr/topic.json +++ b/public/language/tr/topic.json @@ -13,7 +13,7 @@ "notify_me": "Bu konudaki cevaplardan haberdar ol", "quote": "Alıntı", "reply": "Cevap", - "reply-as-topic": "Reply as topic", + "reply-as-topic": "İletiye Cevap Ver", "guest-login-reply": "Cevaplamak için giriş yapın", "edit": "Düzenle", "delete": "Sil", @@ -34,7 +34,7 @@ "not_following_topic.message": "Artık bu başlık için bildirim almayacaksınız.", "login_to_subscribe": "Lütfen bu iletiyi başlığa üye olmak için giriş yapın.", "markAsUnreadForAll.success": "Başlık herkes için okunmadı olarak işaretlendi.", - "mark_unread": "Mark unread", + "mark_unread": "Okunmadı olarak işaretle", "watch": "İzle", "unwatch": "İzleme", "watch.title": "Bu başlığa gelen yeni iletilerden haberdar ol", @@ -50,7 +50,7 @@ "thread_tools.move_all": "Hepsini Taşı", "thread_tools.fork": "Başlığı Ayır", "thread_tools.delete": "Başlığı Sil", - "thread_tools.delete-posts": "Delete Posts", + "thread_tools.delete-posts": "İletileri Sil", "thread_tools.delete_confirm": "Bu konuyu gerçekten silmek istiyor musun?", "thread_tools.restore": "Başlığı Geri Getir", "thread_tools.restore_confirm": "Bu konuyu gerçekten geri getirmek istiyor musun?", @@ -77,7 +77,7 @@ "fork_topic_instruction": "Ayırmak istediğiniz iletileri tıklayın", "fork_no_pids": "Hiç bir ileti seçilmedi!", "fork_success": "Başlık başarıyla ayrıldı!", - "delete_posts_instruction": "Click the posts you want to delete/purge", + "delete_posts_instruction": "Silmek/temizlemek istediğiniz iletilere tıklayın.", "composer.title_placeholder": "Başlık ismini buraya girin...", "composer.handle_placeholder": "İsim", "composer.discard": "Vazgeç", diff --git a/public/language/tr/user.json b/public/language/tr/user.json index b198c9333f..b7b5a65d10 100644 --- a/public/language/tr/user.json +++ b/public/language/tr/user.json @@ -77,9 +77,9 @@ "has_no_posts": "Bu kullanıcı henüz herhangi bir ileti yazmamış.", "has_no_topics": "Bu kullanıcı henüz hiç bir başlık açmamış.", "has_no_watched_topics": "Bu kullanıcı henüz hiç bir başlık okumamış.", - "has_no_upvoted_posts": "This user hasn't upvoted any posts yet.", - "has_no_downvoted_posts": "This user hasn't downvoted any posts yet.", - "has_no_voted_posts": "This user has no voted posts", + "has_no_upvoted_posts": "Bu kullanıcı henüz hiç bir gönderiyi artılamamış.", + "has_no_downvoted_posts": "Bu kullanıcı henüz hiç bir gönderiyi eksilememiş.", + "has_no_voted_posts": "Bu kullanıcının hiç oylanmış gönderisi yok.", "email_hidden": "E-posta gizli", "hidden": "gizli", "paginate_description": "Sonsuz yükleme yerine konu ve iletileri sayfalara böl", diff --git a/public/language/zh_CN/email.json b/public/language/zh_CN/email.json index 6282f09cd9..4d4534bf72 100644 --- a/public/language/zh_CN/email.json +++ b/public/language/zh_CN/email.json @@ -21,9 +21,9 @@ "digest.cta": "点击这里访问 %1", "digest.unsub.info": "根据您的订阅设置,为您发送此摘要。", "digest.no_topics": "最近 %1 没有活跃的主题", - "digest.day": "day", - "digest.week": "week", - "digest.month": "month", + "digest.day": "天", + "digest.week": "周", + "digest.month": "月", "notif.chat.subject": "收到来自 %1 的新聊天消息", "notif.chat.cta": "点击这里继续会话", "notif.chat.unsub.info": "根据您的订阅设置,为您发送此聊天提醒。", diff --git a/public/language/zh_CN/error.json b/public/language/zh_CN/error.json index 87fd97b6fe..35d83301ad 100644 --- a/public/language/zh_CN/error.json +++ b/public/language/zh_CN/error.json @@ -24,7 +24,7 @@ "confirm-email-already-sent": "确认邮件已发出,如需重新发送请等待 %1 分钟后再试。", "username-too-short": "用户名太短", "username-too-long": "用户名太长", - "password-too-long": "Password too long", + "password-too-long": "密码太长", "user-banned": "用户已禁止", "user-too-new": "抱歉,您需要等待 %1 秒后,才可以发帖!", "no-category": "版块不存在", diff --git a/public/language/zh_CN/global.json b/public/language/zh_CN/global.json index eb417b00b0..1c42f1a5a3 100644 --- a/public/language/zh_CN/global.json +++ b/public/language/zh_CN/global.json @@ -4,9 +4,9 @@ "buttons.close": "关闭", "403.title": "禁止访问", "403.message": "您遇到了没有权限访问的页面。", - "403.login": "或许您应该 试试登入?", + "403.login": "或许您应该 试试登录?", "404.title": "未找到", - "404.message": "您遇到了不存在的页面。返回首页。", + "404.message": "您访问的页面不存在。返回首页。", "500.title": "内部错误。", "500.message": "哎呀!看来是哪里出错了!", "register": "注册", @@ -49,7 +49,7 @@ "users": "会员", "topics": "主题", "posts": "帖子", - "best": "Best", + "best": "最佳", "upvoted": "Upvoted", "downvoted": "Downvoted", "views": "浏览", @@ -87,6 +87,6 @@ "unfollow": "取消关注", "delete_all": "全部删除", "map": "地图", - "sessions": "已登陆的会话", + "sessions": "已登录的会话", "ip_address": "IP地址" } \ No newline at end of file diff --git a/public/language/zh_CN/groups.json b/public/language/zh_CN/groups.json index 3ae5e62887..81e38901cb 100644 --- a/public/language/zh_CN/groups.json +++ b/public/language/zh_CN/groups.json @@ -24,7 +24,7 @@ "details.has_no_posts": "此小组的会员尚未发表任何帖子。", "details.latest_posts": "最新帖子", "details.private": "私有", - "details.disableJoinRequests": "Disable join requests", + "details.disableJoinRequests": "禁止申请加入小组", "details.grant": "授予/取消管理权", "details.kick": "踢出小组", "details.owner_options": "小组管理", diff --git a/public/language/zh_CN/modules.json b/public/language/zh_CN/modules.json index 9528cbc22a..4dd7bd27d2 100644 --- a/public/language/zh_CN/modules.json +++ b/public/language/zh_CN/modules.json @@ -7,7 +7,7 @@ "chat.user_has_messaged_you": "%1 向您发送了消息。", "chat.see_all": "查看所有对话", "chat.no-messages": "请选择接收人,以查看聊天消息历史", - "chat.no-users-in-room": "No users in this room", + "chat.no-users-in-room": "此聊天室中没有用户", "chat.recent-chats": "最近聊天", "chat.contacts": "联系人", "chat.message-history": "消息历史", @@ -17,8 +17,8 @@ "chat.thirty_days": "30天", "chat.three_months": "3个月", "chat.delete_message_confirm": "确认删除此消息吗?", - "chat.roomname": "Chat Room %1", - "chat.add-users-to-room": "Add users to room", + "chat.roomname": "%1 号聊天室", + "chat.add-users-to-room": "向此聊天室中添加成员", "composer.compose": "编写", "composer.show_preview": "显示预览", "composer.hide_preview": "隐藏预览", diff --git a/public/language/zh_CN/notifications.json b/public/language/zh_CN/notifications.json index 2fae60013d..2880311394 100644 --- a/public/language/zh_CN/notifications.json +++ b/public/language/zh_CN/notifications.json @@ -5,7 +5,7 @@ "mark_all_read": "标记全部为已读", "back_to_home": "返回 %1", "outgoing_link": "站外链接", - "outgoing_link_message": "You are now leaving %1", + "outgoing_link_message": "您正在离开 %1", "continue_to": "继续前往 %1", "return_to": "返回 %1", "new_notification": "新通知", diff --git a/public/language/zh_CN/pages.json b/public/language/zh_CN/pages.json index 8e6ba0ac3c..410cbe11ae 100644 --- a/public/language/zh_CN/pages.json +++ b/public/language/zh_CN/pages.json @@ -35,9 +35,9 @@ "account/favourites": "%1 收藏的帖子", "account/settings": "用户设置", "account/watched": "主题已被 %1 关注", - "account/upvoted": "Posts upvoted by %1", - "account/downvoted": "Posts downvoted by %1", - "account/best": "Best posts made by %1", + "account/upvoted": "帖子被 %1 顶过", + "account/downvoted": "帖子被 %1 踩过", + "account/best": "%1 发布的最佳帖子", "maintenance.text": "%1 正在进行维护。请稍后再来。", "maintenance.messageIntro": "此外,管理员留下的消息:", "throttled.text": "%1 因负荷超载暂不可用。请稍后再来。" diff --git a/public/language/zh_CN/topic.json b/public/language/zh_CN/topic.json index ac3208fef2..25f8710b8a 100644 --- a/public/language/zh_CN/topic.json +++ b/public/language/zh_CN/topic.json @@ -13,7 +13,7 @@ "notify_me": "此主题有新回复时通知我", "quote": "引用", "reply": "回复", - "reply-as-topic": "Reply as topic", + "reply-as-topic": "在新帖中回复", "guest-login-reply": "登录后回复", "edit": "编辑", "delete": "删除", @@ -34,7 +34,7 @@ "not_following_topic.message": "您已停止接收此主题的通知。", "login_to_subscribe": "请注册或登录后,再订阅此主题。", "markAsUnreadForAll.success": "将全部主题标为未读。", - "mark_unread": "Mark unread", + "mark_unread": "标记为未读", "watch": "关注", "unwatch": "取消关注", "watch.title": "当此主题有新回复时,通知我", @@ -50,7 +50,7 @@ "thread_tools.move_all": "移动全部", "thread_tools.fork": "分割主题", "thread_tools.delete": "删除主题", - "thread_tools.delete-posts": "Delete Posts", + "thread_tools.delete-posts": "删除这些帖子", "thread_tools.delete_confirm": "确定要删除此主题吗?", "thread_tools.restore": "恢复主题", "thread_tools.restore_confirm": "确定要恢复此主题吗?", @@ -77,7 +77,7 @@ "fork_topic_instruction": "点击将分割的帖子", "fork_no_pids": "未选中帖子!", "fork_success": "成功分割主题! 点这里跳转到分割后的主题。", - "delete_posts_instruction": "Click the posts you want to delete/purge", + "delete_posts_instruction": "点击想要删除/永久删除的帖子", "composer.title_placeholder": "在此输入您主题的标题...", "composer.handle_placeholder": "姓名", "composer.discard": "撤销", diff --git a/public/language/zh_CN/users.json b/public/language/zh_CN/users.json index 9a4c25724e..1f970cb15f 100644 --- a/public/language/zh_CN/users.json +++ b/public/language/zh_CN/users.json @@ -5,7 +5,7 @@ "search": "搜索", "enter_username": "输入用户名搜索", "load_more": "加载更多", - "users-found-search-took": "找到 %1 位用户!搜索耗时 %2 毫秒。", + "users-found-search-took": "找到 %1 位用户!耗时 %2 毫秒。", "filter-by": "过滤选项", "online-only": "只看在线", "picture-only": "只看图片", From 30d980b01a355bc1fb78489d8b7dff2c4c0a303a Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Mon, 22 Feb 2016 10:19:28 -0500 Subject: [PATCH 035/124] updated theme and plugin minvers --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 9c318d280e..5a604c5941 100644 --- a/package.json +++ b/package.json @@ -46,13 +46,13 @@ "nodebb-plugin-composer-default": "3.0.5", "nodebb-plugin-dbsearch": "0.3.1", "nodebb-plugin-emoji-extended": "0.5.0", - "nodebb-plugin-markdown": "4.0.16", + "nodebb-plugin-markdown": "4.0.17", "nodebb-plugin-mentions": "1.0.15", "nodebb-plugin-soundpack-default": "0.1.5", "nodebb-plugin-spam-be-gone": "0.4.5", "nodebb-rewards-essentials": "0.0.6", "nodebb-theme-lavender": "3.0.8", - "nodebb-theme-persona": "4.0.76", + "nodebb-theme-persona": "4.0.77", "nodebb-theme-vanilla": "5.0.46", "nodebb-widget-essentials": "2.0.6", "nodemailer": "2.0.0", From c551e0fd82541b441e238d7c393f671739e60861 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Mon, 22 Feb 2016 11:02:39 -0500 Subject: [PATCH 036/124] updated to latest nodemailer smtp transport --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5a604c5941..b60bf32e07 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "nodebb-widget-essentials": "2.0.6", "nodemailer": "2.0.0", "nodemailer-sendmail-transport": "1.0.0", - "nodemailer-smtp-transport": "1.0.0", + "nodemailer-smtp-transport": "^2.4.1", "passport": "^0.3.0", "passport-local": "1.0.0", "postcss": "^5.0.13", From 872b33f0cc8e29ad6a85fe65a57a252533ae5f54 Mon Sep 17 00:00:00 2001 From: pichalite Date: Mon, 22 Feb 2016 10:46:10 -0800 Subject: [PATCH 037/124] fix typo --- public/src/client/groups/list.js | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/public/src/client/groups/list.js b/public/src/client/groups/list.js index 2b3f2bf468..40d31b5556 100644 --- a/public/src/client/groups/list.js +++ b/public/src/client/groups/list.js @@ -17,20 +17,18 @@ define('forum/groups/list', ['forum/infinitescroll', 'translator'], function(inf // Group creation $('button[data-action="new"]').on('click', function() { - translator.translate('[[groups:new-group.group_name]]', function(translated) { - bootbox.prompt(translated, function(name) { - if (name && name.length) { - socket.emit('groups.create', { - name: name - }, function(err) { - if (!err) { - ajaxify.go('groups/' + utils.slugify(name)); - } else { - app.alertError(err.message); - } - }); - } - }); + bootbox.prompt('[[groups:new-group.group_name]]', function(name) { + if (name && name.length) { + socket.emit('groups.create', { + name: name + }, function(err) { + if (!err) { + ajaxify.go('groups/' + utils.slugify(name)); + } else { + app.alertError(err.message); + } + }); + } }); }); var params = utils.params(); @@ -98,4 +96,4 @@ define('forum/groups/list', ['forum/infinitescroll', 'translator'], function(inf }; return Groups; -}); \ No newline at end of file +}); From fba4e93cfeac44684c557e3aad9e1014bd930eb0 Mon Sep 17 00:00:00 2001 From: pichalite Date: Mon, 22 Feb 2016 10:47:29 -0800 Subject: [PATCH 038/124] remove translator --- public/src/client/groups/list.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/src/client/groups/list.js b/public/src/client/groups/list.js index 40d31b5556..7d444bfd87 100644 --- a/public/src/client/groups/list.js +++ b/public/src/client/groups/list.js @@ -1,7 +1,7 @@ "use strict"; /* globals app, define, ajaxify, socket, bootbox, utils, templates */ -define('forum/groups/list', ['forum/infinitescroll', 'translator'], function(infinitescroll, translator) { +define('forum/groups/list', ['forum/infinitescroll'], function(infinitescroll) { var Groups = {}; Groups.init = function() { From da5494fdf1216a5bcb5bd15b4ce7f40891dc9ed1 Mon Sep 17 00:00:00 2001 From: psychobunny Date: Mon, 22 Feb 2016 14:20:50 -0500 Subject: [PATCH 039/124] allow recursive base templates ex. custom theme based off lavender which is based off vanilla --- src/meta/templates.js | 73 ++++++++++++++++++++++++++----------------- 1 file changed, 45 insertions(+), 28 deletions(-) diff --git a/src/meta/templates.js b/src/meta/templates.js index 9a5aa5c72b..06e4efbe74 100644 --- a/src/meta/templates.js +++ b/src/meta/templates.js @@ -12,7 +12,8 @@ var mkdirp = require('mkdirp'), plugins = require('../plugins'), utils = require('../../public/src/utils'), - Templates = {}; + Templates = {}, + searchIndex = {}; Templates.compile = function(callback) { callback = callback || function() {}; @@ -27,21 +28,32 @@ Templates.compile = function(callback) { return callback(); } - var coreTemplatesPath = nconf.get('core_templates_path'), - baseTemplatesPath = nconf.get('base_templates_path'), - viewsPath = nconf.get('views_dir'), - themeTemplatesPath = nconf.get('theme_templates_path'), - themeConfig = require(nconf.get('theme_config')); + compile(callback); +}; - if (themeConfig.baseTheme) { - var pathToBaseTheme = path.join(nconf.get('themes_path'), themeConfig.baseTheme); - baseTemplatesPath = require(path.join(pathToBaseTheme, 'theme.json')).templates; - if (!baseTemplatesPath){ - baseTemplatesPath = path.join(pathToBaseTheme, 'templates'); - } +function getBaseTemplates(theme) { + var baseTemplatesPaths = [], + baseThemePath, baseThemeConfig; + + while (theme) { + baseThemePath = path.join(nconf.get('themes_path'), theme); + baseThemeConfig = require(path.join(baseThemePath, 'theme.json')); + + baseTemplatesPaths.push(path.join(baseThemePath, baseThemeConfig.templates || 'templates')); + theme = baseThemeConfig.baseTheme; } + return baseTemplatesPaths.reverse(); +} + +function compile(callback) { + var coreTemplatesPath = nconf.get('core_templates_path'), + themeConfig = require(nconf.get('theme_config')), + baseTemplatesPaths = themeConfig.baseTheme ? getBaseTemplates(themeConfig.baseTheme) : [nconf.get('base_templates_path')], + viewsPath = nconf.get('views_dir'); + + plugins.getTemplates(function(err, pluginTemplates) { if (err) { return callback(err); @@ -54,27 +66,33 @@ Templates.compile = function(callback) { coreTpls: function(next) { utils.walk(coreTemplatesPath, next); }, - baseTpls: function(next) { - utils.walk(baseTemplatesPath, next); + baseThemes: function(next) { + async.map(baseTemplatesPaths, function(baseTemplatePath, next) { + utils.walk(baseTemplatePath, function(err, paths) { + paths = paths.map(function(tpl) { + return { + base: baseTemplatePath, + path: tpl.replace(baseTemplatePath, '') + }; + }); + + next(err, paths); + }); + }, next); } }, function(err, data) { - var coreTpls = data.coreTpls, - baseTpls = data.baseTpls, + var baseThemes = data.baseThemes, + coreTpls = data.coreTpls, paths = {}; - if (!baseTpls) { - winston.warn('[meta/templates] Could not find base template files at: ' + baseTemplatesPath); - } - - coreTpls = !coreTpls ? [] : coreTpls.map(function(tpl) { return tpl.replace(coreTemplatesPath, ''); }); - baseTpls = !baseTpls ? [] : baseTpls.map(function(tpl) { return tpl.replace(baseTemplatesPath, ''); }); - coreTpls.forEach(function(el, i) { - paths[coreTpls[i]] = path.join(coreTemplatesPath, coreTpls[i]); + paths[coreTpls[i].replace(coreTemplatesPath, '')] = path.join(coreTemplatesPath, coreTpls[i]); }); - baseTpls.forEach(function(el, i) { - paths[baseTpls[i]] = path.join(baseTemplatesPath, baseTpls[i]); + baseThemes.forEach(function(baseTpls) { + baseTpls.forEach(function(el, i) { + paths[baseTpls[i].path] = path.join(baseTpls[i].base, baseTpls[i].path); + }); }); for (var tpl in pluginTemplates) { @@ -125,9 +143,8 @@ Templates.compile = function(callback) { }); }); }); -}; +} -var searchIndex = {}; function addIndex(path, file) { searchIndex[path] = file; From 914fc1543e4903b00c26f98ebd76a3a9e8ab4067 Mon Sep 17 00:00:00 2001 From: psychobunny Date: Mon, 22 Feb 2016 14:25:04 -0500 Subject: [PATCH 040/124] meta/templates.js refactor --- src/meta/templates.js | 87 +++++++++++++++++++++++++------------------ 1 file changed, 50 insertions(+), 37 deletions(-) diff --git a/src/meta/templates.js b/src/meta/templates.js index 06e4efbe74..01c7aca70e 100644 --- a/src/meta/templates.js +++ b/src/meta/templates.js @@ -47,17 +47,15 @@ function getBaseTemplates(theme) { return baseTemplatesPaths.reverse(); } -function compile(callback) { +function preparePaths(baseTemplatesPaths, callback) { var coreTemplatesPath = nconf.get('core_templates_path'), - themeConfig = require(nconf.get('theme_config')), - baseTemplatesPaths = themeConfig.baseTheme ? getBaseTemplates(themeConfig.baseTheme) : [nconf.get('base_templates_path')], viewsPath = nconf.get('views_dir'); - plugins.getTemplates(function(err, pluginTemplates) { if (err) { return callback(err); } + winston.verbose('[meta/templates] Compiling templates'); rimraf.sync(viewsPath); mkdirp.sync(viewsPath); @@ -86,7 +84,7 @@ function compile(callback) { paths = {}; coreTpls.forEach(function(el, i) { - paths[coreTpls[i].replace(coreTemplatesPath, '')] = path.join(coreTemplatesPath, coreTpls[i]); + paths[coreTpls[i].replace(coreTemplatesPath, '')] = coreTpls[i]; }); baseThemes.forEach(function(baseTpls) { @@ -101,45 +99,60 @@ function compile(callback) { } } - async.each(Object.keys(paths), function(relativePath, next) { - var file = fs.readFileSync(paths[relativePath]).toString(), - matches = null, - regex = /[ \t]*[ \t]*/; + callback(err, paths); + }); + }); +} - while((matches = file.match(regex)) !== null) { - var partial = "/" + matches[1]; +function compile(callback) { + var themeConfig = require(nconf.get('theme_config')), + baseTemplatesPaths = themeConfig.baseTheme ? getBaseTemplates(themeConfig.baseTheme) : [nconf.get('base_templates_path')], + viewsPath = nconf.get('views_dir'); + - if (paths[partial] && relativePath !== partial) { - file = file.replace(regex, fs.readFileSync(paths[partial]).toString()); - } else { - winston.warn('[meta/templates] Partial not loaded: ' + matches[1]); - file = file.replace(regex, ""); - } - } + preparePaths(baseTemplatesPaths, function(err, paths) { + if (err) { + return callback(err); + } - if (relativePath.match(/^\/admin\/[\s\S]*?/)) { - addIndex(relativePath, file); - } + async.each(Object.keys(paths), function(relativePath, next) { + var file = fs.readFileSync(paths[relativePath]).toString(), + matches = null, + regex = /[ \t]*[ \t]*/; + + while((matches = file.match(regex)) !== null) { + var partial = "/" + matches[1]; - mkdirp.sync(path.join(viewsPath, relativePath.split('/').slice(0, -1).join('/'))); - fs.writeFile(path.join(viewsPath, relativePath), file, next); - }, function(err) { - if (err) { - winston.error('[meta/templates] ' + err.stack); - return callback(err); + if (paths[partial] && relativePath !== partial) { + file = file.replace(regex, fs.readFileSync(paths[partial]).toString()); + } else { + winston.warn('[meta/templates] Partial not loaded: ' + matches[1]); + file = file.replace(regex, ""); } + } - compileIndex(viewsPath, function() { - winston.verbose('[meta/templates] Successfully compiled templates.'); + if (relativePath.match(/^\/admin\/[\s\S]*?/)) { + addIndex(relativePath, file); + } - emitter.emit('templates:compiled'); - if (process.send) { - process.send({ - action: 'templates:compiled' - }); - } - callback(); - }); + mkdirp.sync(path.join(viewsPath, relativePath.split('/').slice(0, -1).join('/'))); + fs.writeFile(path.join(viewsPath, relativePath), file, next); + }, function(err) { + if (err) { + winston.error('[meta/templates] ' + err.stack); + return callback(err); + } + + compileIndex(viewsPath, function() { + winston.verbose('[meta/templates] Successfully compiled templates.'); + + emitter.emit('templates:compiled'); + if (process.send) { + process.send({ + action: 'templates:compiled' + }); + } + callback(); }); }); }); From 2cf42f55f5f94648d1404f0257b067b7f5812ecc Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Mon, 22 Feb 2016 14:37:46 -0500 Subject: [PATCH 041/124] latest translation --- public/language/zh_CN/category.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/public/language/zh_CN/category.json b/public/language/zh_CN/category.json index 1fd04156a6..6023490c13 100644 --- a/public/language/zh_CN/category.json +++ b/public/language/zh_CN/category.json @@ -1,6 +1,6 @@ { - "category": "版面", - "subcategories": "子版面", + "category": "版块", + "subcategories": "子版块", "new_topic_button": "新主题", "guest-login-post": "登录后发表", "no_topics": "此版块还没有任何内容。
赶紧来发帖吧!", @@ -12,5 +12,5 @@ "ignore": "忽略", "watch.message": "您现在已经关注了此版块", "ignore.message": "您现在已经取消了此版块的关注", - "watched-categories": "已关注的版面" + "watched-categories": "已关注的版块" } \ No newline at end of file From 6ecc05afd4f037dfc9e12e8e81f80559611075dd Mon Sep 17 00:00:00 2001 From: pichalite Date: Tue, 23 Feb 2016 00:52:43 +0000 Subject: [PATCH 042/124] throw error in chat if no users in room --- public/language/en_GB/error.json | 3 ++- src/messaging.js | 10 +++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/public/language/en_GB/error.json b/public/language/en_GB/error.json index e52b7767b1..bc54182a36 100644 --- a/public/language/en_GB/error.json +++ b/public/language/en_GB/error.json @@ -124,5 +124,6 @@ "invite-maximum-met": "You have invited the maximum amount of people (%1 out of %2).", "no-session-found": "No login session found!", - "not-in-room": "User not in room" + "not-in-room": "User not in room", + "no-users-in-room": "No users in this room" } diff --git a/src/messaging.js b/src/messaging.js index e78664d6d0..e39e9f0d3b 100644 --- a/src/messaging.js +++ b/src/messaging.js @@ -359,7 +359,7 @@ var async = require('async'), if (parseInt(meta.config.disableChat) === 1 || !uid) { return callback(new Error('[[error:chat-disabled]]')); } - + async.waterfall([ function (next) { Messaging.isUserInRoom(uid, roomId, next); @@ -368,6 +368,14 @@ var async = require('async'), if (!inRoom) { return next(new Error('[[error:not-in-room]]')); } + + Messaging.getUserCountInRoom(roomId, next); + }, + function(count, next) { + if (count < 2) { + return next(new Error('[[error:no-users-in-room]]')); + } + user.getUserFields(uid, ['banned', 'email:confirmed'], next); }, function (userData, next) { From 46c8101c5c03cc7fe8359aaee00a3534aa8527ae Mon Sep 17 00:00:00 2001 From: barisusakli Date: Tue, 23 Feb 2016 13:08:38 +0200 Subject: [PATCH 043/124] closes #4152 --- src/posts/delete.js | 116 ++++++++++++++++++++++++-------------------- src/posts/parse.js | 4 +- src/posts/tools.js | 37 ++++++-------- 3 files changed, 81 insertions(+), 76 deletions(-) diff --git a/src/posts/delete.js b/src/posts/delete.js index 44d969b8ab..a77c153cb2 100644 --- a/src/posts/delete.js +++ b/src/posts/delete.js @@ -1,31 +1,32 @@ 'use strict'; -var async = require('async'), - _ = require('underscore'), +var async = require('async'); +var _ = require('underscore'); - db = require('../database'), - topics = require('../topics'), - user = require('../user'), - plugins = require('../plugins'); +var db = require('../database'); +var topics = require('../topics'); +var user = require('../user'); +var plugins = require('../plugins'); module.exports = function(Posts) { - Posts.delete = function(pid, callback) { + Posts.delete = function(pid, uid, callback) { var postData; async.waterfall([ - function(next) { + function (next) { + plugins.fireHook('filter:post.delete', {pid: pid, uid: uid}, next); + }, + function (data, next) { Posts.setPostField(pid, 'deleted', 1, next); }, - function(next) { + function (next) { Posts.getPostFields(pid, ['pid', 'tid', 'uid', 'timestamp'], next); }, - function(_post, next) { + function (_post, next) { postData = _post; topics.getTopicField(_post.tid, 'cid', next); }, - function(cid, next) { - plugins.fireHook('action:post.delete', pid); - + function (cid, next) { async.parallel([ function(next) { updateTopicTimestamp(postData.tid, next); @@ -40,29 +41,31 @@ module.exports = function(Posts) { topics.updateTeaser(postData.tid, next); } ], function(err) { + plugins.fireHook('action:post.delete', pid); next(err, postData); }); } ], callback); }; - Posts.restore = function(pid, callback) { + Posts.restore = function(pid, uid, callback) { var postData; async.waterfall([ - function(next) { + function (next) { + plugins.fireHook('filter:post.restore', {pid: pid, uid: uid}, next); + }, + function (data, next) { Posts.setPostField(pid, 'deleted', 0, next); }, - function(next) { + function (next) { Posts.getPostFields(pid, ['pid', 'tid', 'uid', 'content', 'timestamp'], next); }, - function(_post, next) { + function (_post, next) { postData = _post; topics.getTopicField(_post.tid, 'cid', next); }, - function(cid, next) { + function (cid, next) { postData.cid = cid; - plugins.fireHook('action:post.restore', _.clone(postData)); - async.parallel([ function(next) { updateTopicTimestamp(postData.tid, next); @@ -74,6 +77,7 @@ module.exports = function(Posts) { topics.updateTeaser(postData.tid, next); } ], function(err) { + plugins.fireHook('action:post.restore', _.clone(postData)); next(err, postData); }); } @@ -99,40 +103,46 @@ module.exports = function(Posts) { }); } - Posts.purge = function(pid, callback) { - Posts.exists(pid, function(err, exists) { - if (err || !exists) { - return callback(err); - } - - async.parallel([ - function(next) { - deletePostFromTopicAndUser(pid, next); - }, - function(next) { - deletePostFromCategoryRecentPosts(pid, next); - }, - function(next) { - deletePostFromUsersFavourites(pid, next); - }, - function(next) { - deletePostFromUsersVotes(pid, next); - }, - function(next) { - db.sortedSetsRemove(['posts:pid', 'posts:flagged'], pid, next); - }, - function(next) { - Posts.dismissFlag(pid, next); - } - ], function(err) { - if (err) { - return callback(err); + Posts.purge = function(pid, uid, callback) { + async.waterfall([ + function (next) { + Posts.exists(pid, next); + }, + function (exists, next) { + if (!exists) { + return callback(); } - - plugins.fireHook('action:post.purge', pid); - db.delete('post:' + pid, callback); - }); - }); + plugins.fireHook('filter:post.purge', {pid: pid, uid: uid}, next); + }, + function (data, next) { + async.parallel([ + function (next) { + deletePostFromTopicAndUser(pid, next); + }, + function (next) { + deletePostFromCategoryRecentPosts(pid, next); + }, + function (next) { + deletePostFromUsersFavourites(pid, next); + }, + function (next) { + deletePostFromUsersVotes(pid, next); + }, + function (next) { + db.sortedSetsRemove(['posts:pid', 'posts:flagged'], pid, next); + }, + function (next) { + Posts.dismissFlag(pid, next); + } + ], function(err) { + if (err) { + return next(err); + } + plugins.fireHook('action:post.purge', pid); + db.delete('post:' + pid, next); + }); + } + ], callback); }; function deletePostFromTopicAndUser(pid, callback) { diff --git a/src/posts/parse.js b/src/posts/parse.js index 4317f024b3..efa5667ccc 100644 --- a/src/posts/parse.js +++ b/src/posts/parse.js @@ -1,8 +1,8 @@ 'use strict'; -var cache = require('./cache'), - plugins = require('../plugins'); +var cache = require('./cache'); +var plugins = require('../plugins'); module.exports = function(Posts) { diff --git a/src/posts/tools.js b/src/posts/tools.js index 11b01b785a..64ddf155d7 100644 --- a/src/posts/tools.js +++ b/src/posts/tools.js @@ -1,9 +1,9 @@ 'use strict'; -var async = require('async'), +var async = require('async'); - privileges = require('../privileges'), - cache = require('./cache'); +var privileges = require('../privileges'); +var cache = require('./cache'); module.exports = function(Posts) { Posts.tools = {}; @@ -40,25 +40,20 @@ module.exports = function(Posts) { if (!canEdit) { return next(new Error('[[error:no-privileges]]')); } - next(); - } - ], function (err) { - if (err) { - return callback(err); - } - if (isDelete) { - cache.del(pid); - Posts.delete(pid, callback); - } else { - Posts.restore(pid, function(err, postData) { - if (err) { - return callback(err); - } - Posts.parsePost(postData, callback); - }); + if (isDelete) { + cache.del(pid); + Posts.delete(pid, uid, next); + } else { + Posts.restore(pid, uid, function(err, postData) { + if (err) { + return next(err); + } + Posts.parsePost(postData, next); + }); + } } - }); + ], callback); } Posts.tools.purge = function(uid, pid, callback) { @@ -71,7 +66,7 @@ module.exports = function(Posts) { return next(new Error('[[error:no-privileges]]')); } cache.del(pid); - Posts.purge(pid, next); + Posts.purge(pid, uid, next); } ], callback); }; From 4608b8f07b068562935c14390f8f70dba32cb58b Mon Sep 17 00:00:00 2001 From: barisusakli Date: Tue, 23 Feb 2016 13:34:16 +0200 Subject: [PATCH 044/124] closes #4183 --- public/language/en_GB/error.json | 2 +- src/user/settings.js | 14 ++++++-------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/public/language/en_GB/error.json b/public/language/en_GB/error.json index e52b7767b1..e028997eea 100644 --- a/public/language/en_GB/error.json +++ b/public/language/en_GB/error.json @@ -18,7 +18,7 @@ "invalid-username-or-password": "Please specify both a username and password", "invalid-search-term": "Invalid search term", - "invalid-pagination-value": "Invalid pagination value", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Username taken", "email-taken": "Email taken", diff --git a/src/user/settings.js b/src/user/settings.js index 7adc79829e..6d9cf7d36a 100644 --- a/src/user/settings.js +++ b/src/user/settings.js @@ -91,8 +91,12 @@ module.exports = function(User) { } User.saveSettings = function(uid, data, callback) { - if (invalidPaginationSettings(data)) { - return callback(new Error('[[error:invalid-pagination-value]]')); + if (!data.postsPerPage || parseInt(data.postsPerPage, 10) <= 1 || parseInt(data.postsPerPage, 10) > meta.config.postsPerPage) { + return callback(new Error('[[error:invalid-pagination-value, 2, ' + meta.config.postsPerPage + ']]')); + } + + if (!data.topicsPerPage || parseInt(data.topicsPerPage, 10) <= 1 || parseInt(data.topicsPerPage, 10) > meta.config.topicsPerPage) { + return callback(new Error('[[error:invalid-pagination-value, 2, ' + meta.config.topicsPerPage + ']]')); } data.userLang = data.userLang || meta.config.defaultLang; @@ -136,12 +140,6 @@ module.exports = function(User) { ], callback); }; - function invalidPaginationSettings(data) { - return !data.topicsPerPage || !data.postsPerPage || - parseInt(data.topicsPerPage, 10) <= 0 || parseInt(data.postsPerPage, 10) <= 0 || - parseInt(data.topicsPerPage, 10) > meta.config.topicsPerPage || parseInt(data.postsPerPage, 10) > meta.config.postsPerPage; - } - function updateDigestSetting(uid, dailyDigestFreq, callback) { async.waterfall([ function(next) { From 738b8920747bfc989eea24e4aa87fea57108c4e3 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Tue, 23 Feb 2016 14:41:15 +0200 Subject: [PATCH 045/124] closes #4217 --- src/controllers/tags.js | 59 +++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 34 deletions(-) diff --git a/src/controllers/tags.js b/src/controllers/tags.js index 89fb4e3311..60f4c1d028 100644 --- a/src/controllers/tags.js +++ b/src/controllers/tags.js @@ -1,48 +1,44 @@ "use strict"; -var tagsController = {}, - async = require('async'), - nconf = require('nconf'), - validator = require('validator'), - meta = require('../meta'), - user = require('../user'), - topics = require('../topics'), - helpers = require('./helpers'); + +var async = require('async'); +var nconf = require('nconf'); +var validator = require('validator'); + +var meta = require('../meta'); +var topics = require('../topics'); +var helpers = require('./helpers'); + +var tagsController = {}; tagsController.getTag = function(req, res, next) { var tag = validator.escape(req.params.tag); var stop = (parseInt(meta.config.topicsPerList, 10) || 20) - 1; + var templateData = { + topics: [], + tag: tag, + breadcrumbs: helpers.buildBreadcrumbs([{text: '[[tags:tags]]', url: '/tags'}, {text: tag}]), + title: '[[pages:tag, ' + tag + ']]' + }; + async.waterfall([ - function(next) { + function (next) { topics.getTagTids(req.params.tag, 0, stop, next); }, - function(tids, next) { + function (tids, next) { if (Array.isArray(tids) && !tids.length) { topics.deleteTag(req.params.tag); - return res.render('tag', { - topics: [], - tag: tag, - breadcrumbs: helpers.buildBreadcrumbs([{text: '[[tags:tags]]', url: '/tags'}, {text: tag}]) - }); + return res.render('tag', templateData); } - async.parallel({ - isAdmin: async.apply(user.isAdministrator, req.uid), - topics: async.apply(topics.getTopics, tids, req.uid) - }, next); + topics.getTopics(tids, req.uid, next); } - ], function(err, results) { + ], function(err, topics) { if (err) { return next(err); } - if (!results.isAdmin) { - results.topics = results.topics.filter(function(topic) { - return topic && !topic.deleted; - }); - } - res.locals.metaTags = [ { name: 'title', @@ -57,15 +53,10 @@ tagsController.getTag = function(req, res, next) { content: nconf.get('url') + '/tags/' + tag } ]; + templateData.topics = topics; + templateData.nextStart = stop + 1; - var data = { - topics: results.topics, - tag: tag, - nextStart: stop + 1, - breadcrumbs: helpers.buildBreadcrumbs([{text: '[[tags:tags]]', url: '/tags'}, {text: tag}]), - title: '[[pages:tag, ' + tag + ']]' - }; - res.render('tag', data); + res.render('tag', templateData); }); }; From 58a849f2060a1b8f1d7f24001da44dea63577e0e Mon Sep 17 00:00:00 2001 From: barisusakli Date: Tue, 23 Feb 2016 14:52:42 +0200 Subject: [PATCH 046/124] up composer default --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b60bf32e07..9508cf07ec 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "mongodb": "~2.1.3", "morgan": "^1.3.2", "nconf": "~0.8.2", - "nodebb-plugin-composer-default": "3.0.5", + "nodebb-plugin-composer-default": "3.0.6", "nodebb-plugin-dbsearch": "0.3.1", "nodebb-plugin-emoji-extended": "0.5.0", "nodebb-plugin-markdown": "4.0.17", From 6951dc1fe2b643d347b13c841eaecca23a24a965 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Tue, 23 Feb 2016 15:35:16 +0200 Subject: [PATCH 047/124] closes #4211 --- public/src/client/account/edit/username.js | 3 ++- src/user/profile.js | 10 +++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/public/src/client/account/edit/username.js b/public/src/client/account/edit/username.js index 4fcddf81f5..4448568157 100644 --- a/public/src/client/account/edit/username.js +++ b/public/src/client/account/edit/username.js @@ -20,7 +20,7 @@ define('forum/account/edit/username', ['forum/account/header'], function(header) } var btn = $(this); btn.addClass('disabled').find('i').removeClass('hide'); - socket.emit('user.changeUsernameEmail', userData, function(err) { + socket.emit('user.changeUsernameEmail', userData, function(err, data) { btn.removeClass('disabled').find('i').addClass('hide'); if (err) { return app.alertError(err.message); @@ -30,6 +30,7 @@ define('forum/account/edit/username', ['forum/account/header'], function(header) if (userData.username && userslug && parseInt(userData.uid, 10) === parseInt(app.user.uid, 10)) { $('[component="header/profilelink"]').attr('href', config.relative_path + '/user/' + userslug); $('[component="header/username"]').text(userData.username); + $('[component="header/usericon"]').css('background-color', data['icon:bgColor']).text(data['icon:text']); } ajaxify.go('user/' + userslug); diff --git a/src/user/profile.js b/src/user/profile.js index e157a99671..50aa92c1d0 100644 --- a/src/user/profile.js +++ b/src/user/profile.js @@ -74,10 +74,6 @@ module.exports = function(User) { var userslug = utils.slugify(data.username); - if (userslug === userData.userslug) { - return next(); - } - if (data.username.length < meta.config.minimumUsernameLength) { return next(new Error('[[error:username-too-short]]')); } @@ -90,6 +86,10 @@ module.exports = function(User) { return next(new Error('[[error:invalid-username]]')); } + if (userslug === userData.userslug) { + return next(); + } + User.existsBySlug(userslug, function(err, exists) { if (err) { return next(err); @@ -110,7 +110,7 @@ module.exports = function(User) { return callback(err); } plugins.fireHook('action:user.updateProfile', {data: data, uid: uid}); - User.getUserFields(uid, ['email', 'username', 'userslug', 'picture'], callback); + User.getUserFields(uid, ['email', 'username', 'userslug', 'picture', 'icon:text', 'icon:bgColor'], callback); }); }); From 2b90040c31d04c147c344e79ee988d42e20ebabc Mon Sep 17 00:00:00 2001 From: barisusakli Date: Tue, 23 Feb 2016 16:46:10 +0200 Subject: [PATCH 048/124] closes #4236 --- src/socket.io/helpers.js | 4 +--- src/topics/create.js | 10 +++++----- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/socket.io/helpers.js b/src/socket.io/helpers.js index 789ec1660a..3aeaaf0bf3 100644 --- a/src/socket.io/helpers.js +++ b/src/socket.io/helpers.js @@ -3,7 +3,6 @@ var async = require('async'); var winston = require('winston'); var nconf = require('nconf'); -var validator = require('validator'); var websockets = require('./index'); var user = require('../user'); @@ -16,13 +15,12 @@ var plugins = require('../plugins'); var SocketHelpers = {}; SocketHelpers.notifyOnlineUsers = function(uid, result) { - var cid = result.posts[0].topic.cid; async.waterfall([ function(next) { user.getUidsFromSet('users:online', 0, -1, next); }, function(uids, next) { - privileges.categories.filterUids('read', cid, uids, next); + privileges.topics.filterUids('read', result.posts[0].topic.tid, uids, next); }, function(uids, next) { plugins.fireHook('filter:sockets.sendNewPostToUids', {uidsTo: uids, uidFrom: uid, type: 'newPost'}, next); diff --git a/src/topics/create.js b/src/topics/create.js index 5c8698dbe1..931e862b13 100644 --- a/src/topics/create.js +++ b/src/topics/create.js @@ -186,12 +186,12 @@ module.exports = function(Topics) { }; Topics.reply = function(data, callback) { - var tid = data.tid, - uid = data.uid, - content = data.content, - postData; - + var tid = data.tid; + var uid = data.uid; + var content = data.content; + var postData; var cid; + async.waterfall([ function(next) { Topics.getTopicField(tid, 'cid', next); From 3b76b0343bf01416e78a8b930263ee7353411648 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Tue, 23 Feb 2016 11:07:32 -0500 Subject: [PATCH 049/124] Revert "fixes NodeBB/nodebb-theme-persona#218" This reverts commit ee529d92d34db6421f0c6e9187a9434d5d9f8e9f. --- public/src/modules/chat.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/src/modules/chat.js b/public/src/modules/chat.js index 94db933ede..d3d1ff0e02 100644 --- a/public/src/modules/chat.js +++ b/public/src/modules/chat.js @@ -348,7 +348,7 @@ define('chat', ['components', 'taskbar', 'string', 'sounds', 'forum/chats', 'tra socket.emit('modules.chats.markRead', chatModal.attr('roomId')); var env = utils.findBootstrapEnvironment(); - if (env === 'xs') { + if (env === 'xs' || env === 'sm') { module.enableMobileBehaviour(chatModal); } }; From d0862911d388b90dedd870e804699aca2ddc501a Mon Sep 17 00:00:00 2001 From: psychobunny Date: Tue, 23 Feb 2016 12:21:11 -0500 Subject: [PATCH 050/124] closes #4181 --- src/views/admin/manage/groups.tpl | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/views/admin/manage/groups.tpl b/src/views/admin/manage/groups.tpl index 72ad905427..363a123ec1 100644 --- a/src/views/admin/manage/groups.tpl +++ b/src/views/admin/manage/groups.tpl @@ -1,11 +1,7 @@

-
Groups List
- -
- @@ -38,10 +34,9 @@
-
Groups Control Panel
- +
@@ -78,4 +73,6 @@
- + From 4a12a0674519f42d53e05deb8549a25de6cff41c Mon Sep 17 00:00:00 2001 From: psychobunny Date: Tue, 23 Feb 2016 12:42:21 -0500 Subject: [PATCH 051/124] closes #4252 --- app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app.js b/app.js index 35138f6f54..445b21c845 100644 --- a/app.js +++ b/app.js @@ -279,7 +279,7 @@ function upgrade() { function activate() { require('./src/database').init(function(err) { - var plugin = nconf.get('activate'), + var plugin = nconf.get('_')[1] ? nconf.get('_')[1] : nconf.get('activate'), db = require('./src/database'); winston.info('Activating plugin %s', plugin); From a0a98e64b7826883be5796e34ff58284528f5100 Mon Sep 17 00:00:00 2001 From: psychobunny Date: Tue, 23 Feb 2016 12:55:46 -0500 Subject: [PATCH 052/124] closes #4220 --- public/language/en_GB/topic.json | 3 ++- public/src/client/topic/postTools.js | 9 ++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/public/language/en_GB/topic.json b/public/language/en_GB/topic.json index 78513c5256..b9963b63a6 100644 --- a/public/language/en_GB/topic.json +++ b/public/language/en_GB/topic.json @@ -125,7 +125,8 @@ "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", "stale.create": "Create a new topic", "stale.reply_anyway": "Reply to this topic anyway", - "stale.link_back": "Re: [%1](%2)\n\n", + + "link_back": "Re: [%1](%2)\n\n", "spam": "Spam", "offensive": "Offensive", diff --git a/public/src/client/topic/postTools.js b/public/src/client/topic/postTools.js index a9d1919f13..f5c648ca24 100644 --- a/public/src/client/topic/postTools.js +++ b/public/src/client/topic/postTools.js @@ -115,8 +115,11 @@ define('forum/topic/postTools', ['share', 'navigator', 'components', 'translator }); $('.topic').on('click', '[component="topic/reply-as-topic"]', function() { - $(window).trigger('action:composer.topic.new', { - cid: ajaxify.data.cid, + translator.translate('[[topic:link_back, ' + ajaxify.data.title + ', ' + config.relative_path + '/topic/' + ajaxify.data.slug + ']]', function(body) { + $(window).trigger('action:composer.topic.new', { + cid: ajaxify.data.cid, + body: body + }); }); }); @@ -434,7 +437,7 @@ define('forum/topic/postTools', ['share', 'navigator', 'components', 'translator label: '[[topic:stale.create]]', className: 'btn-primary', callback: function() { - translator.translate('[[topic:stale.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 + ']]', function(body) { $(window).trigger('action:composer.topic.new', { cid: ajaxify.data.cid, body: body From 322d4052b06dca33bf3fd495ef4a5d4228e55dd3 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Tue, 23 Feb 2016 13:01:29 -0500 Subject: [PATCH 053/124] chat controls now hidden instead of taking up space in chat modal --- package.json | 4 ++-- public/src/modules/chat.js | 9 ++++++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 9508cf07ec..00759d5780 100644 --- a/package.json +++ b/package.json @@ -52,8 +52,8 @@ "nodebb-plugin-spam-be-gone": "0.4.5", "nodebb-rewards-essentials": "0.0.6", "nodebb-theme-lavender": "3.0.8", - "nodebb-theme-persona": "4.0.77", - "nodebb-theme-vanilla": "5.0.46", + "nodebb-theme-persona": "4.0.78", + "nodebb-theme-vanilla": "5.0.47", "nodebb-widget-essentials": "2.0.6", "nodemailer": "2.0.0", "nodemailer-sendmail-transport": "1.0.0", diff --git a/public/src/modules/chat.js b/public/src/modules/chat.js index d3d1ff0e02..8cd0e45d1c 100644 --- a/public/src/modules/chat.js +++ b/public/src/modules/chat.js @@ -277,6 +277,13 @@ define('chat', ['components', 'taskbar', 'string', 'sounds', 'forum/chats', 'tra Chats.delete(messageId, data.roomId); }); + chatModal.find('[component="chat/controlsToggle"]').on('click', function() { + var messagesEl = chatModal.find('[component="chat/messages"]'); + + chatModal.find('[component="chat/controls"]').toggle(); + messagesEl.css('height', module.calculateChatListHeight(chatModal)); + }); + Chats.addSinceHandler(chatModal.attr('roomId'), chatModal.find('.chat-content'), chatModal.find('[data-since]')); Chats.addRenameHandler(chatModal.attr('roomId'), chatModal.find('[component="chat/room/name"]')); @@ -375,7 +382,7 @@ define('chat', ['components', 'taskbar', 'string', 'sounds', 'forum/chats', 'tra sinceHeight = modalEl.find('.since-bar').outerHeight(true), inputGroupHeight = modalEl.find('.input-group').outerHeight(); - return totalHeight - padding - contentMargin - sinceHeight - inputGroupHeight; + return totalHeight - padding - contentMargin - inputGroupHeight; }; module.minimize = function(uuid) { From ff8e1b52e0c40ecd99046db0b642afdf87fdb59a Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Tue, 23 Feb 2016 13:15:45 -0500 Subject: [PATCH 054/124] fixed #4251 --- src/user/notifications.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/user/notifications.js b/src/user/notifications.js index 4e66afd606..c8197c785e 100644 --- a/src/user/notifications.js +++ b/src/user/notifications.js @@ -123,7 +123,7 @@ var async = require('async'), return null; } - notification.path = pidToPaths[notification.pid] || notification.path || ''; + notification.path = pidToPaths[notification.pid] || notification.path || null; if (notification.nid.startsWith('follow')) { notification.path = '/user/' + notification.user.userslug; @@ -131,6 +131,9 @@ var async = require('async'), notification.datetimeISO = utils.toISOString(notification.datetime); return notification; + }).filter(function(notification) { + // Remove notifications that do not resolve to a path + return notification.path !== null; }); callback(null, notifications); @@ -157,7 +160,7 @@ var async = require('async'), posts.getPostIndices(postData, uid, next); }, topics: function(next) { - db.getObjectsFields(topicKeys, ['slug'], next); + db.getObjectsFields(topicKeys, ['slug', 'deleted'], next); } }, function(err, results) { if (err) { @@ -166,6 +169,11 @@ var async = require('async'), var pidToPaths = {}; pids.forEach(function(pid, index) { + if (parseInt(results.topics[index].deleted, 10) === 1) { + pidToPaths[pid] = null; + return; + } + var slug = results.topics[index] ? results.topics[index].slug : null; var postIndex = utils.isNumber(results.indices[index]) ? parseInt(results.indices[index], 10) + 1 : null; From cd0cb5c5f1946a360a85d3ab7c83df65dc040040 Mon Sep 17 00:00:00 2001 From: psychobunny Date: Tue, 23 Feb 2016 13:16:28 -0500 Subject: [PATCH 055/124] closes #4237 --- src/notifications.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/notifications.js b/src/notifications.js index 8d984f11c3..86feff02b4 100644 --- a/src/notifications.js +++ b/src/notifications.js @@ -55,6 +55,11 @@ var async = require('async'), } notification.image = userData.picture || null; notification.user = userData; + + if (userData.username === '[[global:guest]]') { + notification.bodyShort = notification.bodyShort.replace(/([\s\S]*?),[\s\S]*?,([\s\S]*?)/, '$1, [[global:guest]], $2'); + } + next(null, notification); }); return; From 92810527ea6900b4810cff690b5cdbaab8114d6e Mon Sep 17 00:00:00 2001 From: psychobunny Date: Tue, 23 Feb 2016 13:22:55 -0500 Subject: [PATCH 056/124] closes #4191 --- nodebb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/nodebb b/nodebb index d6ceaf1d44..233dbd350f 100755 --- a/nodebb +++ b/nodebb @@ -72,8 +72,9 @@ switch(process.argv[2]) { getRunningPid(function(err, pid) { if (!err) { process.kill(pid, 'SIGHUP'); + process.stdout.write('\nRestarting NodeBB\n'.bold); } else { - process.stdout.write('NodeBB could not be restarted, as a running instance could not be found.'); + process.stdout.write('NodeBB could not be restarted, as a running instance could not be found.\n'); } }); break; @@ -83,7 +84,7 @@ switch(process.argv[2]) { if (!err) { process.kill(pid, 'SIGUSR2'); } else { - process.stdout.write('NodeBB could not be reloaded, as a running instance could not be found.'); + process.stdout.write('NodeBB could not be reloaded, as a running instance could not be found.\n'); } }); break; From 1dba781923d24a70472c76958e89f7fc4331eed7 Mon Sep 17 00:00:00 2001 From: psychobunny Date: Tue, 23 Feb 2016 13:25:44 -0500 Subject: [PATCH 057/124] closes #4203 --- public/language/en_GB/user.json | 1 + public/src/client/register.js | 2 ++ 2 files changed, 3 insertions(+) diff --git a/public/language/en_GB/user.json b/public/language/en_GB/user.json index 4c44138524..2f40887067 100644 --- a/public/language/en_GB/user.json +++ b/public/language/en_GB/user.json @@ -58,6 +58,7 @@ "password": "Password", "username_taken_workaround": "The username you requested was already taken, so we have altered it slightly. You are now known as %1", "password_same_as_username": "Your password is the same as your username, please select another password.", + "password_same_as_email": "Your password is the same as your email, please select another password.", "upload_picture": "Upload picture", "upload_a_picture": "Upload a picture", diff --git a/public/src/client/register.js b/public/src/client/register.js index 92cf47da13..f5096376c2 100644 --- a/public/src/client/register.js +++ b/public/src/client/register.js @@ -185,6 +185,8 @@ define('forum/register', ['csrf', 'translator'], function(csrf, translator) { showError(password_notify, '[[user:change_password_error]]'); } else if (password === $('#username').val()) { showError(password_notify, '[[user:password_same_as_username]]'); + } else if (password === $('#email').val()) { + showError(password_notify, '[[user:password_same_as_email]]'); } else { showSuccess(password_notify, successIcon); } From 75917e25b3b5ad7bed8ed0c36433fb35c9ab33eb Mon Sep 17 00:00:00 2001 From: psychobunny Date: Tue, 23 Feb 2016 13:33:46 -0500 Subject: [PATCH 058/124] closes #4026 --- src/emailer.js | 19 +++++-------------- src/views/emails/digest.tpl | 2 +- src/views/emails/invitation.tpl | 2 +- src/views/emails/notif_chat.tpl | 2 +- src/views/emails/notif_post.tpl | 2 +- .../emails/partials/footer_plaintext.tpl | 2 -- src/views/emails/registration_accepted.tpl | 2 +- src/views/emails/reset.tpl | 2 +- src/views/emails/reset_notify.tpl | 2 +- src/views/emails/test.tpl | 2 +- src/views/emails/welcome.tpl | 2 +- 11 files changed, 14 insertions(+), 25 deletions(-) delete mode 100644 src/views/emails/partials/footer_plaintext.tpl diff --git a/src/emailer.js b/src/emailer.js index 522330f70b..34b5250908 100644 --- a/src/emailer.js +++ b/src/emailer.js @@ -140,20 +140,11 @@ var fallbackTransport; } function renderAndTranslate(tpl, params, lang, callback) { - async.waterfall([ - function(next) { - render('emails/partials/footer' + (tpl.indexOf('_plaintext') !== -1 ? '_plaintext' : ''), params, next); - }, - function(footer, next) { - params.footer = footer; - render(tpl, params, next); - }, - function(html, next) { - translator.translate(html, lang, function(translated) { - next(null, translated); - }); - } - ], callback); + render(tpl, params, function(err, html) { + translator.translate(html, lang, function(translated) { + callback(err, translated); + }); + }); } function getHostname() { diff --git a/src/views/emails/digest.tpl b/src/views/emails/digest.tpl index 23677120de..23d20a89c9 100644 --- a/src/views/emails/digest.tpl +++ b/src/views/emails/digest.tpl @@ -42,7 +42,7 @@ [[email:digest.cta, {site_title}]]

-{footer} +

diff --git a/src/views/emails/invitation.tpl b/src/views/emails/invitation.tpl index 7323a37d01..1b574dde08 100644 --- a/src/views/emails/invitation.tpl +++ b/src/views/emails/invitation.tpl @@ -8,4 +8,4 @@ [[email:invitation.ctr]] -{footer} \ No newline at end of file + \ No newline at end of file diff --git a/src/views/emails/notif_chat.tpl b/src/views/emails/notif_chat.tpl index 13216a43c5..a0669f3bac 100644 --- a/src/views/emails/notif_chat.tpl +++ b/src/views/emails/notif_chat.tpl @@ -5,7 +5,7 @@ [[email:notif.chat.cta]] -{footer} +


diff --git a/src/views/emails/notif_post.tpl b/src/views/emails/notif_post.tpl index db870b1bc0..4fd360575f 100644 --- a/src/views/emails/notif_post.tpl +++ b/src/views/emails/notif_post.tpl @@ -5,7 +5,7 @@ [[email:notif.post.cta]] -{footer} +


diff --git a/src/views/emails/partials/footer_plaintext.tpl b/src/views/emails/partials/footer_plaintext.tpl deleted file mode 100644 index 1d2e2860dc..0000000000 --- a/src/views/emails/partials/footer_plaintext.tpl +++ /dev/null @@ -1,2 +0,0 @@ -[[email:closing]] -{site_title} diff --git a/src/views/emails/registration_accepted.tpl b/src/views/emails/registration_accepted.tpl index 8975e33631..c025be0330 100644 --- a/src/views/emails/registration_accepted.tpl +++ b/src/views/emails/registration_accepted.tpl @@ -6,4 +6,4 @@

[[email:welcome.text3]]

-{footer} + \ No newline at end of file diff --git a/src/views/emails/reset.tpl b/src/views/emails/reset.tpl index dc861a7d70..7e71d067a5 100644 --- a/src/views/emails/reset.tpl +++ b/src/views/emails/reset.tpl @@ -8,4 +8,4 @@ [[email:reset.cta]] -{footer} \ No newline at end of file + \ No newline at end of file diff --git a/src/views/emails/reset_notify.tpl b/src/views/emails/reset_notify.tpl index 0f9da5beb1..0a825d3c31 100644 --- a/src/views/emails/reset_notify.tpl +++ b/src/views/emails/reset_notify.tpl @@ -4,4 +4,4 @@

[[email:reset.notify.text2]]

-{footer} \ No newline at end of file + \ No newline at end of file diff --git a/src/views/emails/test.tpl b/src/views/emails/test.tpl index f46069fe20..75c1519ea1 100644 --- a/src/views/emails/test.tpl +++ b/src/views/emails/test.tpl @@ -2,4 +2,4 @@

[[email:test.text1]]

-{footer} \ No newline at end of file + \ No newline at end of file diff --git a/src/views/emails/welcome.tpl b/src/views/emails/welcome.tpl index ed19359d08..c7a78c9056 100644 --- a/src/views/emails/welcome.tpl +++ b/src/views/emails/welcome.tpl @@ -10,4 +10,4 @@ [[email:welcome.cta]] -{footer} + \ No newline at end of file From b8eb19b9917cd8d91535b41df81bd912fbff76b3 Mon Sep 17 00:00:00 2001 From: psychobunny Date: Tue, 23 Feb 2016 13:57:00 -0500 Subject: [PATCH 059/124] closes #3993 --- src/user/password.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/user/password.js b/src/user/password.js index e116edb867..e60ae9b753 100644 --- a/src/user/password.js +++ b/src/user/password.js @@ -19,17 +19,21 @@ module.exports = function(User) { User.isPasswordCorrect = function(uid, password, callback) { password = password || ''; async.waterfall([ - function (next) { - User.isPasswordValid(password, next); - }, function (next) { db.getObjectField('user:' + uid, 'password', next); }, function (hashedPassword, next) { if (!hashedPassword) { - return callback(); + return callback(null, true); } - Password.compare(password, hashedPassword, next); + + User.isPasswordValid(password, function(err) { + if (err) { + return next(err); + } + + Password.compare(password, hashedPassword, next); + }); } ], callback); }; From 072089e39c5c9882fe1c423b7b9e4b750677ddea Mon Sep 17 00:00:00 2001 From: psychobunny Date: Tue, 23 Feb 2016 14:01:17 -0500 Subject: [PATCH 060/124] up persona --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 00759d5780..afe7528a29 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "nodebb-plugin-spam-be-gone": "0.4.5", "nodebb-rewards-essentials": "0.0.6", "nodebb-theme-lavender": "3.0.8", - "nodebb-theme-persona": "4.0.78", + "nodebb-theme-persona": "4.0.79", "nodebb-theme-vanilla": "5.0.47", "nodebb-widget-essentials": "2.0.6", "nodemailer": "2.0.0", From 946a082eaa5edf8eef35b9b8b75cd5130ce59f3b Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Tue, 23 Feb 2016 14:11:11 -0500 Subject: [PATCH 061/124] latest translations and fallbacks --- public/language/ar/error.json | 6 ++- public/language/ar/global.json | 4 +- public/language/ar/pages.json | 3 +- public/language/ar/topic.json | 3 +- public/language/ar/users.json | 3 +- public/language/bg/error.json | 6 ++- public/language/bg/global.json | 4 +- public/language/bg/pages.json | 3 +- public/language/bg/topic.json | 3 +- public/language/bg/users.json | 3 +- public/language/bn/error.json | 6 ++- public/language/bn/global.json | 4 +- public/language/bn/pages.json | 3 +- public/language/bn/topic.json | 3 +- public/language/bn/users.json | 3 +- public/language/cs/error.json | 6 ++- public/language/cs/global.json | 4 +- public/language/cs/pages.json | 3 +- public/language/cs/topic.json | 3 +- public/language/cs/users.json | 3 +- public/language/da/error.json | 6 ++- public/language/da/global.json | 4 +- public/language/da/pages.json | 3 +- public/language/da/topic.json | 3 +- public/language/da/users.json | 3 +- public/language/de/error.json | 6 ++- public/language/de/global.json | 4 +- public/language/de/pages.json | 3 +- public/language/de/topic.json | 3 +- public/language/de/users.json | 3 +- public/language/el/error.json | 6 ++- public/language/el/global.json | 4 +- public/language/el/pages.json | 3 +- public/language/el/topic.json | 3 +- public/language/el/users.json | 3 +- public/language/en@pirate/error.json | 6 ++- public/language/en@pirate/global.json | 4 +- public/language/en@pirate/pages.json | 3 +- public/language/en@pirate/topic.json | 3 +- public/language/en@pirate/users.json | 3 +- public/language/en_US/error.json | 6 ++- public/language/en_US/global.json | 4 +- public/language/en_US/pages.json | 3 +- public/language/en_US/topic.json | 3 +- public/language/en_US/users.json | 3 +- public/language/es/error.json | 6 ++- public/language/es/global.json | 4 +- public/language/es/pages.json | 3 +- public/language/es/topic.json | 3 +- public/language/es/users.json | 3 +- public/language/et/email.json | 6 +-- public/language/et/error.json | 22 ++++----- public/language/et/global.json | 18 ++++---- public/language/et/groups.json | 2 +- public/language/et/modules.json | 16 +++---- public/language/et/notifications.json | 26 +++++------ public/language/et/pages.json | 17 +++---- public/language/et/topic.json | 25 ++++++----- public/language/et/user.json | 6 +-- public/language/et/users.json | 3 +- public/language/fa_IR/error.json | 6 ++- public/language/fa_IR/global.json | 4 +- public/language/fa_IR/pages.json | 3 +- public/language/fa_IR/topic.json | 3 +- public/language/fa_IR/users.json | 3 +- public/language/fi/error.json | 6 ++- public/language/fi/global.json | 4 +- public/language/fi/pages.json | 3 +- public/language/fi/topic.json | 3 +- public/language/fi/users.json | 3 +- public/language/fr/error.json | 6 ++- public/language/fr/global.json | 4 +- public/language/fr/pages.json | 3 +- public/language/fr/topic.json | 3 +- public/language/fr/users.json | 3 +- public/language/gl/error.json | 6 ++- public/language/gl/global.json | 4 +- public/language/gl/pages.json | 3 +- public/language/gl/topic.json | 3 +- public/language/gl/users.json | 3 +- public/language/he/email.json | 6 +-- public/language/he/error.json | 50 +++++++++++---------- public/language/he/global.json | 18 ++++---- public/language/he/groups.json | 40 ++++++++--------- public/language/he/language.json | 2 +- public/language/he/modules.json | 20 ++++----- public/language/he/notifications.json | 14 +++--- public/language/he/pages.json | 19 ++++---- public/language/he/reset_password.json | 2 +- public/language/he/search.json | 12 ++--- public/language/he/tags.json | 2 +- public/language/he/topic.json | 25 ++++++----- public/language/he/unread.json | 2 +- public/language/he/user.json | 62 +++++++++++++------------- public/language/he/users.json | 15 +++---- public/language/hu/error.json | 6 ++- public/language/hu/global.json | 4 +- public/language/hu/pages.json | 3 +- public/language/hu/topic.json | 3 +- public/language/hu/users.json | 3 +- public/language/id/error.json | 6 ++- public/language/id/global.json | 4 +- public/language/id/pages.json | 3 +- public/language/id/topic.json | 3 +- public/language/id/users.json | 3 +- public/language/it/error.json | 6 ++- public/language/it/global.json | 4 +- public/language/it/pages.json | 3 +- public/language/it/topic.json | 3 +- public/language/it/users.json | 3 +- public/language/ja/error.json | 6 ++- public/language/ja/global.json | 4 +- public/language/ja/pages.json | 3 +- public/language/ja/topic.json | 3 +- public/language/ja/users.json | 3 +- public/language/ko/error.json | 6 ++- public/language/ko/global.json | 4 +- public/language/ko/pages.json | 3 +- public/language/ko/topic.json | 3 +- public/language/ko/users.json | 3 +- public/language/lt/error.json | 6 ++- public/language/lt/global.json | 4 +- public/language/lt/pages.json | 3 +- public/language/lt/topic.json | 3 +- public/language/lt/users.json | 3 +- public/language/ms/error.json | 6 ++- public/language/ms/global.json | 4 +- public/language/ms/pages.json | 3 +- public/language/ms/topic.json | 3 +- public/language/ms/users.json | 3 +- public/language/nb/error.json | 6 ++- public/language/nb/global.json | 4 +- public/language/nb/pages.json | 3 +- public/language/nb/topic.json | 3 +- public/language/nb/users.json | 3 +- public/language/nl/error.json | 6 ++- public/language/nl/global.json | 4 +- public/language/nl/pages.json | 3 +- public/language/nl/topic.json | 3 +- public/language/nl/users.json | 3 +- public/language/pl/error.json | 6 ++- public/language/pl/global.json | 4 +- public/language/pl/pages.json | 3 +- public/language/pl/topic.json | 3 +- public/language/pl/users.json | 3 +- public/language/pt_BR/error.json | 6 ++- public/language/pt_BR/global.json | 4 +- public/language/pt_BR/pages.json | 3 +- public/language/pt_BR/topic.json | 3 +- public/language/pt_BR/users.json | 3 +- public/language/ro/error.json | 6 ++- public/language/ro/global.json | 4 +- public/language/ro/pages.json | 3 +- public/language/ro/topic.json | 3 +- public/language/ro/users.json | 3 +- public/language/ru/error.json | 6 ++- public/language/ru/global.json | 4 +- public/language/ru/pages.json | 3 +- public/language/ru/topic.json | 3 +- public/language/ru/users.json | 3 +- public/language/rw/error.json | 6 ++- public/language/rw/global.json | 4 +- public/language/rw/pages.json | 3 +- public/language/rw/topic.json | 3 +- public/language/rw/users.json | 3 +- public/language/sc/error.json | 6 ++- public/language/sc/global.json | 4 +- public/language/sc/pages.json | 3 +- public/language/sc/topic.json | 3 +- public/language/sc/users.json | 3 +- public/language/sk/error.json | 6 ++- public/language/sk/global.json | 4 +- public/language/sk/pages.json | 3 +- public/language/sk/topic.json | 3 +- public/language/sk/users.json | 3 +- public/language/sl/error.json | 6 ++- public/language/sl/global.json | 4 +- public/language/sl/pages.json | 3 +- public/language/sl/topic.json | 3 +- public/language/sl/users.json | 3 +- public/language/sr/error.json | 6 ++- public/language/sr/global.json | 4 +- public/language/sr/pages.json | 3 +- public/language/sr/topic.json | 3 +- public/language/sr/users.json | 3 +- public/language/sv/error.json | 6 ++- public/language/sv/global.json | 4 +- public/language/sv/pages.json | 3 +- public/language/sv/topic.json | 3 +- public/language/sv/users.json | 3 +- public/language/th/error.json | 6 ++- public/language/th/global.json | 4 +- public/language/th/pages.json | 3 +- public/language/th/topic.json | 3 +- public/language/th/users.json | 3 +- public/language/tr/error.json | 6 ++- public/language/tr/global.json | 4 +- public/language/tr/pages.json | 3 +- public/language/tr/topic.json | 3 +- public/language/tr/users.json | 3 +- public/language/vi/error.json | 6 ++- public/language/vi/global.json | 4 +- public/language/vi/pages.json | 3 +- public/language/vi/topic.json | 3 +- public/language/vi/users.json | 3 +- public/language/zh_CN/error.json | 6 ++- public/language/zh_CN/global.json | 10 ++--- public/language/zh_CN/pages.json | 3 +- public/language/zh_CN/topic.json | 3 +- public/language/zh_CN/users.json | 3 +- public/language/zh_TW/error.json | 6 ++- public/language/zh_TW/global.json | 4 +- public/language/zh_TW/pages.json | 3 +- public/language/zh_TW/topic.json | 3 +- public/language/zh_TW/users.json | 3 +- 215 files changed, 599 insertions(+), 559 deletions(-) diff --git a/public/language/ar/error.json b/public/language/ar/error.json index 729b67bbf7..d4c19bc98a 100644 --- a/public/language/ar/error.json +++ b/public/language/ar/error.json @@ -14,7 +14,7 @@ "invalid-password": "كلمة السر غير مقبولة", "invalid-username-or-password": "المرجود تحديد اسم مستخدم و كلمة مرور", "invalid-search-term": "كلمة البحث غير صحيحة", - "invalid-pagination-value": "رقم الصفحة غير موجود", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "اسم المستخدم مأخوذ", "email-taken": "البريد الالكتروني مأخوذ", "email-not-confirmed": "عنوان بريدك الإلكتروني غير مفعل بعد. انقر هنا لتفعيله من فضلك.", @@ -83,6 +83,7 @@ "chat-message-too-long": "Chat message is too long", "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "نظام السمعة معطل", "downvoting-disabled": "التصويتات السلبية معطلة", "not-enough-reputation-to-downvote": "ليس لديك سمعة تكفي لإضافة صوت سلبي لهذا الموضوع", @@ -94,5 +95,6 @@ "wrong-login-type-email": "الرجاء استعمال بريدك اﻹلكتروني للدخول", "wrong-login-type-username": "الرجاء استعمال اسم المستخدم الخاص بك للدخول", "invite-maximum-met": "You have invited the maximum amount of people (%1 out of %2).", - "no-session-found": "No login session found!" + "no-session-found": "No login session found!", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/ar/global.json b/public/language/ar/global.json index 5e51c03352..6a40d450e3 100644 --- a/public/language/ar/global.json +++ b/public/language/ar/global.json @@ -63,11 +63,9 @@ "posted_in_by": "posted in %1 by %2", "posted_in_ago": "كتب في %1 %2", "posted_in_ago_by": "كتب في %1 %2 من طرف %3", - "posted_in_ago_by_guest": "كتب في %1 %2 من طرف زائر", - "replied_ago": "رد %1", "user_posted_ago": "%1 كتب %2", "guest_posted_ago": "كتب زائر %1", - "last_edited_by_ago": "آخر تعديل من طرف %1 %2", + "last_edited_by": "last edited by %1", "norecentposts": "لاوجود لمشاركات جديدة", "norecenttopics": "لاوجود لمواضيع جديدة", "recentposts": "آخر المشاركات", diff --git a/public/language/ar/pages.json b/public/language/ar/pages.json index 5955303c7e..eb40c3e50a 100644 --- a/public/language/ar/pages.json +++ b/public/language/ar/pages.json @@ -6,11 +6,12 @@ "popular-month": "Popular topics this month", "popular-alltime": "All time popular topics", "recent": "المواضيع الحديثة", + "flagged-posts": "Flagged Posts", "users/online": "اﻷعضاء المتصلون", "users/latest": "أحدث اﻷعضاء", "users/sort-posts": "Users with the most posts", "users/sort-reputation": "Users with the most reputation", - "users/map": "User Map", + "users/banned": "Banned Users", "users/search": "User Search", "notifications": "التنبيهات", "tags": "الكلمات الدلالية", diff --git a/public/language/ar/topic.json b/public/language/ar/topic.json index 2fe3249835..f83c82c767 100644 --- a/public/language/ar/topic.json +++ b/public/language/ar/topic.json @@ -35,6 +35,7 @@ "login_to_subscribe": "المرجو إنشاء حساب أو تسجيل الدخول حتى يمكنك متابعة هذا الموضوع.", "markAsUnreadForAll.success": "تم تحديد الموضوع على أنه غير مقروء.", "mark_unread": "Mark unread", + "mark_unread.success": "Topic marked as unread.", "watch": "مراقبة", "unwatch": "الغاء المراقبة", "watch.title": "استلم تنبيها بالردود الجديدة في هذا الموضوع", @@ -104,7 +105,7 @@ "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", "stale.create": "Create a new topic", "stale.reply_anyway": "Reply to this topic anyway", - "stale.link_back": "Re: [%1](%2)", + "link_back": "Re: [%1](%2)", "spam": "Spam", "offensive": "Offensive", "custom-flag-reason": "Enter a flagging reason" diff --git a/public/language/ar/users.json b/public/language/ar/users.json index 8745782c4d..24e7416521 100644 --- a/public/language/ar/users.json +++ b/public/language/ar/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "تم إيجاد %1 مستخدمـ(ين)! استغرق البحث %2 ثانية.", "filter-by": "Filter By", "online-only": "المتصلون فقط", - "picture-only": "صورة فقط", "invite": "دعوة", "invitation-email-sent": "An invitation email has been sent to %1", "user_list": "قائمة اﻷعضاء", @@ -17,5 +16,5 @@ "unread_topics": "المواضيع الغير مقروءة", "categories": "الفئات", "tags": "الكلمات الدلالية", - "map": "Map" + "no-users-found": "No users found!" } \ No newline at end of file diff --git a/public/language/bg/error.json b/public/language/bg/error.json index f70f4adcc2..7c91315b51 100644 --- a/public/language/bg/error.json +++ b/public/language/bg/error.json @@ -14,7 +14,7 @@ "invalid-password": "Невалидна парола", "invalid-username-or-password": "Моля, посочете потребителско име и парола", "invalid-search-term": "Невалиден текст за търсене", - "invalid-pagination-value": "Невалиден номер на страница", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Потребителското име е заето", "email-taken": "Е-пощата е заета", "email-not-confirmed": "Вашата е-поща все още не е потвърдена. Моля, натиснете тук, за да потвърдите е-пощата си.", @@ -83,6 +83,7 @@ "chat-message-too-long": "Съобщението е твърде дълго", "cant-edit-chat-message": "Нямате право да редактирате това съобщение", "cant-remove-last-user": "Не можете да премахнете последния потребител", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "Системата за репутация е изключена.", "downvoting-disabled": "Отрицателното гласуване е изключено", "not-enough-reputation-to-downvote": "Нямате достатъчно репутация, за да гласувате отрицателно за тази публикация", @@ -94,5 +95,6 @@ "wrong-login-type-email": "Моля, използвайте е-пощата си, за да влезете", "wrong-login-type-username": "Моля, използвайте потребителското си име, за да влезете", "invite-maximum-met": "Вие сте поканили максимално позволения брой хора (%1 от %2).", - "no-session-found": "Не е открита сесия за вход!" + "no-session-found": "Не е открита сесия за вход!", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/bg/global.json b/public/language/bg/global.json index 443636d3b8..547ae7e519 100644 --- a/public/language/bg/global.json +++ b/public/language/bg/global.json @@ -63,11 +63,9 @@ "posted_in_by": "публикувано в %1 от %2", "posted_in_ago": "публикувано в %1 %2", "posted_in_ago_by": "публикувано в %1 %2 от %3", - "posted_in_ago_by_guest": "публикувано в %1 %2 от гост", - "replied_ago": "отговори %1", "user_posted_ago": "%1 публикува %2", "guest_posted_ago": "гост публикува %1", - "last_edited_by_ago": "последно редактирано от %1 %2", + "last_edited_by": "last edited by %1", "norecentposts": "Няма скорошни публикации", "norecenttopics": "Няма скорошни теми", "recentposts": "Скорошни публикации", diff --git a/public/language/bg/pages.json b/public/language/bg/pages.json index 2dfe60234d..90685e0bef 100644 --- a/public/language/bg/pages.json +++ b/public/language/bg/pages.json @@ -6,11 +6,12 @@ "popular-month": "Популярните теми този месец", "popular-alltime": "Популярните теми за всички времена", "recent": "Скорошни теми", + "flagged-posts": "Flagged Posts", "users/online": "Потребители на линия", "users/latest": "Последни потребители", "users/sort-posts": "Потребители с най-много публикации", "users/sort-reputation": "Потребители с най-висока репутация", - "users/map": "Карта на потребителите", + "users/banned": "Banned Users", "users/search": "Търсене на потребители", "notifications": "Известия", "tags": "Етикети", diff --git a/public/language/bg/topic.json b/public/language/bg/topic.json index ff2d42c83f..e96fb796b9 100644 --- a/public/language/bg/topic.json +++ b/public/language/bg/topic.json @@ -35,6 +35,7 @@ "login_to_subscribe": "Моля, регистрирайте се или влезте, за да се абонирате за тази тема.", "markAsUnreadForAll.success": "Темата е отбелязана като непрочетена за всички.", "mark_unread": "Отбелязване като непрочетена", + "mark_unread.success": "Topic marked as unread.", "watch": "Наблюдаване", "unwatch": "Спиране на наблюдаването", "watch.title": "Получавайте известия за новите отговори в тази тема", @@ -104,7 +105,7 @@ "stale.warning": "Темата, в която отговаряте, е доста стара. Искате ли вместо това да създадете нова и да направите препратка към тази в отговора си?", "stale.create": "Създаване на нова тема", "stale.reply_anyway": "Отговаряне в тази тема въпреки това", - "stale.link_back": "Отговор: [%1](%2)", + "link_back": "Re: [%1](%2)", "spam": "Спам", "offensive": "Обидно", "custom-flag-reason": "Изберете причина за докладване" diff --git a/public/language/bg/users.json b/public/language/bg/users.json index 9a442eed88..4a3a288614 100644 --- a/public/language/bg/users.json +++ b/public/language/bg/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "Намерени са %1 потребител(и)! Търсенето отне %2 секунди.", "filter-by": "Филтриране", "online-only": "Само тези на линия", - "picture-only": "Само със снимка", "invite": "Канене", "invitation-email-sent": "Беше изпратено е-писмо за потвърждение до %1", "user_list": "Списък от потребители", @@ -17,5 +16,5 @@ "unread_topics": "Непрочетени теми", "categories": "Категории", "tags": "Етикети", - "map": "Карта" + "no-users-found": "No users found!" } \ No newline at end of file diff --git a/public/language/bn/error.json b/public/language/bn/error.json index e088d9aba9..ca60095dd2 100644 --- a/public/language/bn/error.json +++ b/public/language/bn/error.json @@ -14,7 +14,7 @@ "invalid-password": "ভুল পাসওয়ার্ড", "invalid-username-or-password": "অনুগ্রহ পূর্বক ইউজারনেম এবং পাসওয়ার্ড উভয়ই প্রদান করুন", "invalid-search-term": "অগ্রহনযোগ্য সার্চ টার্ম", - "invalid-pagination-value": "ভুল পৃষ্ঠা নাম্বার", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "ইউজারনেম আগেই ব্যবহৃত", "email-taken": "ইমেইল আগেই ব্যবহৃত", "email-not-confirmed": "আপনার ইমেইল এড্রেস নিশ্চিত করা হয় নি, নিশ্চিত করতে এখানে ক্লিক করুন।", @@ -83,6 +83,7 @@ "chat-message-too-long": "Chat message is too long", "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "সম্মাননা ব্যাবস্থা নিস্ক্রীয় রাখা হয়েছে", "downvoting-disabled": "ঋণাত্মক ভোট নিস্ক্রীয় রাখা হয়েছে।", "not-enough-reputation-to-downvote": "আপনার এই পোস্ট downvote করার জন্য পর্যাপ্ত সম্মাননা নেই", @@ -94,5 +95,6 @@ "wrong-login-type-email": "Please use your email to login", "wrong-login-type-username": "Please use your username to login", "invite-maximum-met": "You have invited the maximum amount of people (%1 out of %2).", - "no-session-found": "No login session found!" + "no-session-found": "No login session found!", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/bn/global.json b/public/language/bn/global.json index 3be6fdfb9e..da099cd8e3 100644 --- a/public/language/bn/global.json +++ b/public/language/bn/global.json @@ -63,11 +63,9 @@ "posted_in_by": "posted in %1 by %2", "posted_in_ago": "%1 বিভাগে পোস্ট করা হয়েছে %2 আগে", "posted_in_ago_by": "%3 %1 বিভাগে পোস্ট করেছেন %2", - "posted_in_ago_by_guest": "%1 বিভাগে অতিথি পোস্ট করেছেন %2", - "replied_ago": "উত্তর দেয়া হয়েছে %1 ", "user_posted_ago": "%1 পোস্ট করেছেন %2", "guest_posted_ago": "অতিথি পোস্ট করেছেন %1", - "last_edited_by_ago": "সর্বশেষ সম্পাদনা করেছেন %1 %2", + "last_edited_by": "last edited by %1", "norecentposts": "কোনও সাম্প্রতিক পোস্ট নেই", "norecenttopics": "কোনও সাম্প্রতিক টপিক নেই", "recentposts": "সাম্প্রতিক পোস্ট", diff --git a/public/language/bn/pages.json b/public/language/bn/pages.json index ff661e67b2..f59157d907 100644 --- a/public/language/bn/pages.json +++ b/public/language/bn/pages.json @@ -6,11 +6,12 @@ "popular-month": "Popular topics this month", "popular-alltime": "All time popular topics", "recent": "সাম্প্রতিক টপিক", + "flagged-posts": "Flagged Posts", "users/online": "Online Users", "users/latest": "Latest Users", "users/sort-posts": "Users with the most posts", "users/sort-reputation": "Users with the most reputation", - "users/map": "User Map", + "users/banned": "Banned Users", "users/search": "User Search", "notifications": "বিজ্ঞপ্তি", "tags": "ট্যাগসমূহ", diff --git a/public/language/bn/topic.json b/public/language/bn/topic.json index ce1d6cf9fb..0c7eedeb73 100644 --- a/public/language/bn/topic.json +++ b/public/language/bn/topic.json @@ -35,6 +35,7 @@ "login_to_subscribe": "এই টপিকে সাবস্ক্রাইব করতে চাইলে অনুগ্রহ করে নিবন্ধণ করুন অথবা প্রবেশ করুন।", "markAsUnreadForAll.success": "টপিকটি সবার জন্য অপঠিত হিসাবে মার্ক করুন।", "mark_unread": "Mark unread", + "mark_unread.success": "Topic marked as unread.", "watch": "দেখা", "unwatch": "অদেখা", "watch.title": "এই টপিকে নতুন উত্তর এলে বিজ্ঞাপণের মাধ্যমে জানুন।", @@ -104,7 +105,7 @@ "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", "stale.create": "Create a new topic", "stale.reply_anyway": "Reply to this topic anyway", - "stale.link_back": "Re: [%1](%2)", + "link_back": "Re: [%1](%2)", "spam": "Spam", "offensive": "Offensive", "custom-flag-reason": "Enter a flagging reason" diff --git a/public/language/bn/users.json b/public/language/bn/users.json index 23a50d5880..4fca6b9a27 100644 --- a/public/language/bn/users.json +++ b/public/language/bn/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "%1 জন সদস্য(দের) খুঁজে পাওয়া গেছে। খুঁজতে সময় লেগেছে %2 সেকেন্ড ", "filter-by": "ফিল্টার করার ধরন", "online-only": "শুধুমাত্র অনলাইন", - "picture-only": "শুধুমাত্র ছবি", "invite": "ইনভাইট", "invitation-email-sent": "%1 কে একটি ইনভাইটেশন ইমেইল পাঠানো হয়েছে", "user_list": "সদস্য তালিকা", @@ -17,5 +16,5 @@ "unread_topics": "অপঠিত টপিক", "categories": "বিভাগ", "tags": "ট্যাগসমূহ", - "map": "ম্যাপ" + "no-users-found": "No users found!" } \ No newline at end of file diff --git a/public/language/cs/error.json b/public/language/cs/error.json index ba749d007e..d3e6559a65 100644 --- a/public/language/cs/error.json +++ b/public/language/cs/error.json @@ -14,7 +14,7 @@ "invalid-password": "Neplatné heslo", "invalid-username-or-password": "Stanovte, prosím, oboje, jak uživatelské jméno, tak heslo", "invalid-search-term": "Neplatný výraz pro vyhledávání", - "invalid-pagination-value": "Neplatná hodnota pro stránkování", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Uživatelské jméno je již použito", "email-taken": "Email je již použit", "email-not-confirmed": "Vaše emailová adresa zatím nebyla potvrzena. Kliknutím zde svůj email potvrdíte.", @@ -83,6 +83,7 @@ "chat-message-too-long": "Chat message is too long", "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "Systém reputací je zakázán.", "downvoting-disabled": "Downvoting is disabled", "not-enough-reputation-to-downvote": "You do not have enough reputation to downvote this post", @@ -94,5 +95,6 @@ "wrong-login-type-email": "Please use your email to login", "wrong-login-type-username": "Please use your username to login", "invite-maximum-met": "You have invited the maximum amount of people (%1 out of %2).", - "no-session-found": "No login session found!" + "no-session-found": "No login session found!", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/cs/global.json b/public/language/cs/global.json index 06284c0eda..6b0d59a86a 100644 --- a/public/language/cs/global.json +++ b/public/language/cs/global.json @@ -63,11 +63,9 @@ "posted_in_by": "posted in %1 by %2", "posted_in_ago": "posted in %1 %2", "posted_in_ago_by": "posted in %1 %2 by %3", - "posted_in_ago_by_guest": "posted in %1 %2 by Guest", - "replied_ago": "replied %1", "user_posted_ago": "%1 posted %2", "guest_posted_ago": "Guest posted %1", - "last_edited_by_ago": "last edited by %1 %2", + "last_edited_by": "last edited by %1", "norecentposts": "Žádné nedávné příspěvky", "norecenttopics": "Žádné nedávné témata", "recentposts": "Nedávné příspěvky", diff --git a/public/language/cs/pages.json b/public/language/cs/pages.json index fdc34d375d..bcae168282 100644 --- a/public/language/cs/pages.json +++ b/public/language/cs/pages.json @@ -6,11 +6,12 @@ "popular-month": "Popular topics this month", "popular-alltime": "All time popular topics", "recent": "Recent Topics", + "flagged-posts": "Flagged Posts", "users/online": "Online Users", "users/latest": "Latest Users", "users/sort-posts": "Users with the most posts", "users/sort-reputation": "Users with the most reputation", - "users/map": "User Map", + "users/banned": "Banned Users", "users/search": "User Search", "notifications": "Notifications", "tags": "Tags", diff --git a/public/language/cs/topic.json b/public/language/cs/topic.json index 39bad4e50b..e6da76341e 100644 --- a/public/language/cs/topic.json +++ b/public/language/cs/topic.json @@ -35,6 +35,7 @@ "login_to_subscribe": "Please register or log in in order to subscribe to this topic.", "markAsUnreadForAll.success": "Topic marked as unread for all.", "mark_unread": "Mark unread", + "mark_unread.success": "Topic marked as unread.", "watch": "Watch", "unwatch": "Unwatch", "watch.title": "Be notified of new replies in this topic", @@ -104,7 +105,7 @@ "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", "stale.create": "Create a new topic", "stale.reply_anyway": "Reply to this topic anyway", - "stale.link_back": "Re: [%1](%2)", + "link_back": "Re: [%1](%2)", "spam": "Spam", "offensive": "Offensive", "custom-flag-reason": "Enter a flagging reason" diff --git a/public/language/cs/users.json b/public/language/cs/users.json index 4d53504d8e..6145c20f2a 100644 --- a/public/language/cs/users.json +++ b/public/language/cs/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter By", "online-only": "Online only", - "picture-only": "Picture only", "invite": "Invite", "invitation-email-sent": "An invitation email has been sent to %1", "user_list": "User List", @@ -17,5 +16,5 @@ "unread_topics": "Unread Topics", "categories": "Categories", "tags": "Tags", - "map": "Map" + "no-users-found": "No users found!" } \ No newline at end of file diff --git a/public/language/da/error.json b/public/language/da/error.json index 3ef2c0ac7f..fb66628ba2 100644 --- a/public/language/da/error.json +++ b/public/language/da/error.json @@ -14,7 +14,7 @@ "invalid-password": "Ugyldig Adgangskode", "invalid-username-or-password": "Venligst angiv både brugernavn og adgangskode", "invalid-search-term": "Ugyldig søgeterm", - "invalid-pagination-value": "Ugyldig sidetalsværdi", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Brugernavn optaget", "email-taken": "Emailadresse allerede i brug", "email-not-confirmed": "Din email adresse er ikke blevet bekræftet endnu, venligst klik her for at bekrætige den.", @@ -83,6 +83,7 @@ "chat-message-too-long": "Chat beskeden er for lang", "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "Vurderingssystem er slået fra.", "downvoting-disabled": "Nedvurdering er slået fra", "not-enough-reputation-to-downvote": "Du har ikke nok omdømme til at nedstemme dette indlæg", @@ -94,5 +95,6 @@ "wrong-login-type-email": "Brug venligt din email til login", "wrong-login-type-username": "Brug venligt dit brugernavn til login", "invite-maximum-met": "You have invited the maximum amount of people (%1 out of %2).", - "no-session-found": "No login session found!" + "no-session-found": "No login session found!", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/da/global.json b/public/language/da/global.json index e348adfe88..a6a29873ab 100644 --- a/public/language/da/global.json +++ b/public/language/da/global.json @@ -63,11 +63,9 @@ "posted_in_by": "skrevet i %1 af %2", "posted_in_ago": "skrivet i %1 %2", "posted_in_ago_by": "skrevet i %1 %2 af %3", - "posted_in_ago_by_guest": "insendt i %1 %2 siden af gæst", - "replied_ago": "svaret for %1", "user_posted_ago": "%1 skrev for %2", "guest_posted_ago": "Gæst skrev for %1", - "last_edited_by_ago": "sidst redigeret af %1 for %2", + "last_edited_by": "last edited by %1", "norecentposts": "Ingen seneste indlæg", "norecenttopics": "Ingen seneste tråde", "recentposts": "Seneste indlæg", diff --git a/public/language/da/pages.json b/public/language/da/pages.json index 9e1230b827..11409c5109 100644 --- a/public/language/da/pages.json +++ b/public/language/da/pages.json @@ -6,11 +6,12 @@ "popular-month": "Populære tråde denne måned", "popular-alltime": "Top populære tråde", "recent": "Seneste tråde", + "flagged-posts": "Flagged Posts", "users/online": "Online brugere", "users/latest": "Seneste brugere", "users/sort-posts": "Brugere med de fleste indlæg", "users/sort-reputation": "Brugere med mest omdømme", - "users/map": "Bruger kort", + "users/banned": "Banned Users", "users/search": "Bruger søgning", "notifications": "Notifikationer", "tags": "Tags", diff --git a/public/language/da/topic.json b/public/language/da/topic.json index 434a71457a..3ad278b495 100644 --- a/public/language/da/topic.json +++ b/public/language/da/topic.json @@ -35,6 +35,7 @@ "login_to_subscribe": "Venligt registrer eller login for at abbonere på dette emne.", "markAsUnreadForAll.success": "Emnet er market ulæst for alle.", "mark_unread": "Mark unread", + "mark_unread.success": "Topic marked as unread.", "watch": "Overvåg", "unwatch": "Fjern overvågning", "watch.title": "Bliv notificeret ved nye indlæg i dette emne", @@ -104,7 +105,7 @@ "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", "stale.create": "Create a new topic", "stale.reply_anyway": "Reply to this topic anyway", - "stale.link_back": "Re: [%1](%2)", + "link_back": "Re: [%1](%2)", "spam": "Spam", "offensive": "Stødende", "custom-flag-reason": "Enter a flagging reason" diff --git a/public/language/da/users.json b/public/language/da/users.json index 9facf52cea..8ec326f45f 100644 --- a/public/language/da/users.json +++ b/public/language/da/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "%1 bruger(e) fundet! Søgning tog %2 sekunder.", "filter-by": "Filtre Efter", "online-only": "Kun online", - "picture-only": "Kun billeder", "invite": "Invitér", "invitation-email-sent": "En invitations email er blevet sendt til %1", "user_list": "Bruger Liste", @@ -17,5 +16,5 @@ "unread_topics": "Ulæste Tråde", "categories": "Kategorier", "tags": "Tags", - "map": "Kort" + "no-users-found": "No users found!" } \ No newline at end of file diff --git a/public/language/de/error.json b/public/language/de/error.json index e070e816f9..32a56b5d64 100644 --- a/public/language/de/error.json +++ b/public/language/de/error.json @@ -14,7 +14,7 @@ "invalid-password": "Ungültiges Passwort", "invalid-username-or-password": "Bitte gebe einen Benutzernamen und ein Passwort an", "invalid-search-term": "Ungültige Suchanfrage", - "invalid-pagination-value": "Die Nummerierung ist ungültig", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Der Benutzername ist bereits vergeben", "email-taken": "Die E-Mail-Adresse ist bereits vergeben", "email-not-confirmed": "Deine E-Mail wurde noch nicht bestätigt, bitte klicke hier, um deine E-Mail zu bestätigen.", @@ -83,6 +83,7 @@ "chat-message-too-long": "Die Nachricht ist zu lang", "cant-edit-chat-message": "Du darfst diese Nachricht nicht ändern", "cant-remove-last-user": "Du kannst den letzten Benutzer nicht entfernen", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "Das Reputationssystem ist deaktiviert.", "downvoting-disabled": "Downvotes sind deaktiviert.", "not-enough-reputation-to-downvote": "Dein Ansehen ist zu niedrig, um diesen Beitrag negativ zu bewerten.", @@ -94,5 +95,6 @@ "wrong-login-type-email": "Bitte nutze deine E-Mail-Adresse zum einloggen", "wrong-login-type-username": "Bitte nutze deinen Benutzernamen zum einloggen", "invite-maximum-met": "Du hast bereits die maximale Anzahl an Personen eingeladen (%1 von %2).", - "no-session-found": "Keine Login-Sitzung gefunden!" + "no-session-found": "Keine Login-Sitzung gefunden!", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/de/global.json b/public/language/de/global.json index ffc67cc724..0cd14600ce 100644 --- a/public/language/de/global.json +++ b/public/language/de/global.json @@ -63,11 +63,9 @@ "posted_in_by": "verfasst in %1 von %2", "posted_in_ago": "Verfasst in %1 %2", "posted_in_ago_by": "Verfasst in %1 %2 von %3", - "posted_in_ago_by_guest": "verfasst in %1 %2 von einem Gast", - "replied_ago": "antwortete %1", "user_posted_ago": "%1 schrieb %2", "guest_posted_ago": "Gast schrieb %1", - "last_edited_by_ago": "zuletzt editiert von %1 %2", + "last_edited_by": "last edited by %1", "norecentposts": "Keine aktuellen Beiträge", "norecenttopics": "Keine aktuellen Themen", "recentposts": "Aktuelle Beiträge", diff --git a/public/language/de/pages.json b/public/language/de/pages.json index 51fadacf93..42fc17b802 100644 --- a/public/language/de/pages.json +++ b/public/language/de/pages.json @@ -6,11 +6,12 @@ "popular-month": "Beliebte Themen dieses Monats", "popular-alltime": "Beliebteste Themen", "recent": "Neueste Themen", + "flagged-posts": "Flagged Posts", "users/online": "Benutzer online", "users/latest": "Neuste Benutzer", "users/sort-posts": "Benutzer mit den meisten Beiträgen", "users/sort-reputation": "Benutzer mit dem höchsten Ansehen", - "users/map": "Benutzer Karte", + "users/banned": "Banned Users", "users/search": "Benutzer Suche", "notifications": "Benachrichtigungen", "tags": "Markierungen", diff --git a/public/language/de/topic.json b/public/language/de/topic.json index d2fa3d56c7..3e31768859 100644 --- a/public/language/de/topic.json +++ b/public/language/de/topic.json @@ -35,6 +35,7 @@ "login_to_subscribe": "Bitte registrieren oder einloggen um dieses Thema zu abonnieren", "markAsUnreadForAll.success": "Thema für Alle als ungelesen markiert.", "mark_unread": "Als ungelesen markieren", + "mark_unread.success": "Topic marked as unread.", "watch": "Beobachten", "unwatch": "Nicht mehr beobachten", "watch.title": "Bei neuen Antworten benachrichtigen", @@ -104,7 +105,7 @@ "stale.warning": "Das Thema auf das du antworten möchtest ist ziemlich alt. Möchtest du stattdessen ein neues Thema erstellen und auf dieses in deiner Antwort hinweisen?", "stale.create": "Ein neues Thema erstellen", "stale.reply_anyway": "Auf dieses Thema trotzdem antworten", - "stale.link_back": "Re: [%1](%2)", + "link_back": "Re: [%1](%2)", "spam": "Spam", "offensive": "Beleidigend", "custom-flag-reason": "Gib einen Grund für die Markierung ein" diff --git a/public/language/de/users.json b/public/language/de/users.json index 5c9d5214de..3dc0d1e78b 100644 --- a/public/language/de/users.json +++ b/public/language/de/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "%1 Benutzer gefunden! Die Suche dauerte %2 ms.", "filter-by": "Filtern nach", "online-only": "Nur Online", - "picture-only": "Nur mit Bildern", "invite": "Einladen", "invitation-email-sent": "Eine Einladungsemail wurde an %1 verschickt", "user_list": "Nutzerliste", @@ -17,5 +16,5 @@ "unread_topics": "Ungelesen Themen", "categories": "Kategorien", "tags": "Schlagworte", - "map": "Karte" + "no-users-found": "No users found!" } \ No newline at end of file diff --git a/public/language/el/error.json b/public/language/el/error.json index 23380dd7bf..b5d58d9eed 100644 --- a/public/language/el/error.json +++ b/public/language/el/error.json @@ -14,7 +14,7 @@ "invalid-password": "Άκυρος Κωδικός", "invalid-username-or-password": "Παρακαλώ γράψε το όνομα χρήστη και τον κωδικό", "invalid-search-term": "Άκυρος όρος αναζήτησης", - "invalid-pagination-value": "Άκυρη τιμή σελιδοποίησης", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Το όνομα χρήστη είναι πιασμένο", "email-taken": "Το email είναι πιασμένο", "email-not-confirmed": "Your email has not been confirmed yet, please click here to confirm your email.", @@ -83,6 +83,7 @@ "chat-message-too-long": "Chat message is too long", "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "Το σύστημα φήμης έχει απενεργοποιηθεί.", "downvoting-disabled": "Η καταψήφιση έχει απενεργοποιηθεί", "not-enough-reputation-to-downvote": "Δεν έχεις αρκετή φήμη για να καταψηφίσεις αυτή την δημοσίευση", @@ -94,5 +95,6 @@ "wrong-login-type-email": "Please use your email to login", "wrong-login-type-username": "Please use your username to login", "invite-maximum-met": "You have invited the maximum amount of people (%1 out of %2).", - "no-session-found": "No login session found!" + "no-session-found": "No login session found!", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/el/global.json b/public/language/el/global.json index c91df52655..debb319dfe 100644 --- a/public/language/el/global.json +++ b/public/language/el/global.json @@ -63,11 +63,9 @@ "posted_in_by": "posted in %1 by %2", "posted_in_ago": "δημοσιεύτηκε στο %1 πριν από %2", "posted_in_ago_by": "δημοσιεύτηκε στο %1 πριν από %2 από τον/την %3", - "posted_in_ago_by_guest": "δημοσιεύτηκε στο %1 πριν από %2 από Επισκέπτη", - "replied_ago": "απαντήθηκε πριν από %1", "user_posted_ago": "Ο/Η %1 δημοσίευσε πριν από %2", "guest_posted_ago": "Επισκέπτης δημοσίευσε πριν από %1", - "last_edited_by_ago": "επεξεργάστηκε τελευταία φορά από τον/την %1 πριν από %2", + "last_edited_by": "last edited by %1", "norecentposts": "Δεν υπάρχουν πρόσφατες δημοσιεύσεις", "norecenttopics": "Δεν υπάρχουν πρόσφατα θέματα", "recentposts": "Πρόσφατες Δημοσιεύσεις", diff --git a/public/language/el/pages.json b/public/language/el/pages.json index ce71b8e35b..18fafd820c 100644 --- a/public/language/el/pages.json +++ b/public/language/el/pages.json @@ -6,11 +6,12 @@ "popular-month": "Popular topics this month", "popular-alltime": "All time popular topics", "recent": "Πρόσφατα Θέματα", + "flagged-posts": "Flagged Posts", "users/online": "Online Users", "users/latest": "Latest Users", "users/sort-posts": "Users with the most posts", "users/sort-reputation": "Users with the most reputation", - "users/map": "User Map", + "users/banned": "Banned Users", "users/search": "User Search", "notifications": "Ειδοποιήσεις", "tags": "Tags", diff --git a/public/language/el/topic.json b/public/language/el/topic.json index ff866bf8d1..703e1e4f57 100644 --- a/public/language/el/topic.json +++ b/public/language/el/topic.json @@ -35,6 +35,7 @@ "login_to_subscribe": "Παρακαλώ εγγράψου ή συνδέσου για για γραφτείς σε αυτό το θέμα.", "markAsUnreadForAll.success": "Το θέμα σημειώθηκε ως μη αναγνωσμένο για όλους.", "mark_unread": "Mark unread", + "mark_unread.success": "Topic marked as unread.", "watch": "Παρακολούθηση", "unwatch": "Ξεπαρακολούθηση", "watch.title": "Να ειδοποιούμαι για νέες απαντήσεις σε αυτό το θέμα", @@ -104,7 +105,7 @@ "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", "stale.create": "Create a new topic", "stale.reply_anyway": "Reply to this topic anyway", - "stale.link_back": "Re: [%1](%2)", + "link_back": "Re: [%1](%2)", "spam": "Spam", "offensive": "Offensive", "custom-flag-reason": "Enter a flagging reason" diff --git a/public/language/el/users.json b/public/language/el/users.json index 3eda51f303..39bba616e6 100644 --- a/public/language/el/users.json +++ b/public/language/el/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter By", "online-only": "Online only", - "picture-only": "Picture only", "invite": "Invite", "invitation-email-sent": "An invitation email has been sent to %1", "user_list": "User List", @@ -17,5 +16,5 @@ "unread_topics": "Unread Topics", "categories": "Categories", "tags": "Tags", - "map": "Map" + "no-users-found": "No users found!" } \ No newline at end of file diff --git a/public/language/en@pirate/error.json b/public/language/en@pirate/error.json index d10734c6ea..ca4533474d 100644 --- a/public/language/en@pirate/error.json +++ b/public/language/en@pirate/error.json @@ -14,7 +14,7 @@ "invalid-password": "Invalid Password", "invalid-username-or-password": "Please specify both a username and password", "invalid-search-term": "Invalid search term", - "invalid-pagination-value": "Invalid pagination value", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Username taken", "email-taken": "Email taken", "email-not-confirmed": "Your email has not been confirmed yet, please click here to confirm your email.", @@ -83,6 +83,7 @@ "chat-message-too-long": "Chat message is too long", "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "Reputation system is disabled.", "downvoting-disabled": "Downvoting is disabled", "not-enough-reputation-to-downvote": "You do not have enough reputation to downvote this post", @@ -94,5 +95,6 @@ "wrong-login-type-email": "Please use your email to login", "wrong-login-type-username": "Please use your username to login", "invite-maximum-met": "You have invited the maximum amount of people (%1 out of %2).", - "no-session-found": "No login session found!" + "no-session-found": "No login session found!", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/en@pirate/global.json b/public/language/en@pirate/global.json index adc1da2824..8b7fa92380 100644 --- a/public/language/en@pirate/global.json +++ b/public/language/en@pirate/global.json @@ -63,11 +63,9 @@ "posted_in_by": "posted in %1 by %2", "posted_in_ago": "posted in %1 %2", "posted_in_ago_by": "posted in %1 %2 by %3", - "posted_in_ago_by_guest": "posted in %1 %2 by Guest", - "replied_ago": "replied %1", "user_posted_ago": "%1 posted %2", "guest_posted_ago": "Guest posted %1", - "last_edited_by_ago": "last edited by %1 %2", + "last_edited_by": "last edited by %1", "norecentposts": "No Recent Posts", "norecenttopics": "No Recent Topics", "recentposts": "Recent Messages", diff --git a/public/language/en@pirate/pages.json b/public/language/en@pirate/pages.json index fdc34d375d..bcae168282 100644 --- a/public/language/en@pirate/pages.json +++ b/public/language/en@pirate/pages.json @@ -6,11 +6,12 @@ "popular-month": "Popular topics this month", "popular-alltime": "All time popular topics", "recent": "Recent Topics", + "flagged-posts": "Flagged Posts", "users/online": "Online Users", "users/latest": "Latest Users", "users/sort-posts": "Users with the most posts", "users/sort-reputation": "Users with the most reputation", - "users/map": "User Map", + "users/banned": "Banned Users", "users/search": "User Search", "notifications": "Notifications", "tags": "Tags", diff --git a/public/language/en@pirate/topic.json b/public/language/en@pirate/topic.json index 5dbc467270..f78f1d49bb 100644 --- a/public/language/en@pirate/topic.json +++ b/public/language/en@pirate/topic.json @@ -35,6 +35,7 @@ "login_to_subscribe": "Please register or log in in order to subscribe to this topic.", "markAsUnreadForAll.success": "Topic marked as unread for all.", "mark_unread": "Mark unread", + "mark_unread.success": "Topic marked as unread.", "watch": "Watch", "unwatch": "Unwatch", "watch.title": "Be notified of new replies in this topic", @@ -104,7 +105,7 @@ "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", "stale.create": "Create a new topic", "stale.reply_anyway": "Reply to this topic anyway", - "stale.link_back": "Re: [%1](%2)", + "link_back": "Re: [%1](%2)", "spam": "Spam", "offensive": "Offensive", "custom-flag-reason": "Enter a flagging reason" diff --git a/public/language/en@pirate/users.json b/public/language/en@pirate/users.json index 41f51b97a4..738f85d740 100644 --- a/public/language/en@pirate/users.json +++ b/public/language/en@pirate/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter By", "online-only": "Online only", - "picture-only": "Picture only", "invite": "Invite", "invitation-email-sent": "An invitation email has been sent to %1", "user_list": "User List", @@ -17,5 +16,5 @@ "unread_topics": "Unread Topics", "categories": "Categories", "tags": "Tags", - "map": "Map" + "no-users-found": "No users found!" } \ No newline at end of file diff --git a/public/language/en_US/error.json b/public/language/en_US/error.json index 38d5474a20..f75bdad526 100644 --- a/public/language/en_US/error.json +++ b/public/language/en_US/error.json @@ -14,7 +14,7 @@ "invalid-password": "Invalid Password", "invalid-username-or-password": "Please specify both a username and password", "invalid-search-term": "Invalid search term", - "invalid-pagination-value": "Invalid pagination value", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Username taken", "email-taken": "Email taken", "email-not-confirmed": "Your email has not been confirmed yet, please click here to confirm your email.", @@ -83,6 +83,7 @@ "chat-message-too-long": "Chat message is too long", "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "Reputation system is disabled.", "downvoting-disabled": "Downvoting is disabled", "not-enough-reputation-to-downvote": "You do not have enough reputation to downvote this post", @@ -94,5 +95,6 @@ "wrong-login-type-email": "Please use your email to login", "wrong-login-type-username": "Please use your username to login", "invite-maximum-met": "You have invited the maximum amount of people (%1 out of %2).", - "no-session-found": "No login session found!" + "no-session-found": "No login session found!", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/en_US/global.json b/public/language/en_US/global.json index 984a7f8a14..7579fecc9e 100644 --- a/public/language/en_US/global.json +++ b/public/language/en_US/global.json @@ -63,11 +63,9 @@ "posted_in_by": "posted in %1 by %2", "posted_in_ago": "posted in %1 %2", "posted_in_ago_by": "posted in %1 %2 by %3", - "posted_in_ago_by_guest": "posted in %1 %2 by Guest", - "replied_ago": "replied %1", "user_posted_ago": "%1 posted %2", "guest_posted_ago": "Guest posted %1", - "last_edited_by_ago": "last edited by %1 %2", + "last_edited_by": "last edited by %1", "norecentposts": "No Recent Posts", "norecenttopics": "No Recent Topics", "recentposts": "Recent Posts", diff --git a/public/language/en_US/pages.json b/public/language/en_US/pages.json index 2fc7c80d45..48d10023a2 100644 --- a/public/language/en_US/pages.json +++ b/public/language/en_US/pages.json @@ -6,11 +6,12 @@ "popular-month": "Popular topics this month", "popular-alltime": "All time popular topics", "recent": "Recent Topics", + "flagged-posts": "Flagged Posts", "users/online": "Online Users", "users/latest": "Latest Users", "users/sort-posts": "Users with the most posts", "users/sort-reputation": "Users with the most reputation", - "users/map": "User Map", + "users/banned": "Banned Users", "users/search": "User Search", "notifications": "Notifications", "tags": "Tags", diff --git a/public/language/en_US/topic.json b/public/language/en_US/topic.json index ed42474aac..b4179826fb 100644 --- a/public/language/en_US/topic.json +++ b/public/language/en_US/topic.json @@ -35,6 +35,7 @@ "login_to_subscribe": "Please register or log in in order to subscribe to this topic.", "markAsUnreadForAll.success": "Topic marked as unread for all.", "mark_unread": "Mark unread", + "mark_unread.success": "Topic marked as unread.", "watch": "Watch", "unwatch": "Unwatch", "watch.title": "Be notified of new replies in this topic", @@ -104,7 +105,7 @@ "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", "stale.create": "Create a new topic", "stale.reply_anyway": "Reply to this topic anyway", - "stale.link_back": "Re: [%1](%2)", + "link_back": "Re: [%1](%2)", "spam": "Spam", "offensive": "Offensive", "custom-flag-reason": "Enter a flagging reason" diff --git a/public/language/en_US/users.json b/public/language/en_US/users.json index 52e4c7dc46..ae39f26f66 100644 --- a/public/language/en_US/users.json +++ b/public/language/en_US/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter By", "online-only": "Online only", - "picture-only": "Picture only", "invite": "Invite", "invitation-email-sent": "An invitation email has been sent to %1", "user_list": "User List", @@ -17,5 +16,5 @@ "unread_topics": "Unread Topics", "categories": "Categories", "tags": "Tags", - "map": "Map" + "no-users-found": "No users found!" } \ No newline at end of file diff --git a/public/language/es/error.json b/public/language/es/error.json index 603469e81a..9251615b8d 100644 --- a/public/language/es/error.json +++ b/public/language/es/error.json @@ -14,7 +14,7 @@ "invalid-password": "Contraseña no válida", "invalid-username-or-password": "Por favor especifica tanto un usuario como contraseña", "invalid-search-term": "Término de búsqueda inválido", - "invalid-pagination-value": "Valor de paginación no válido.", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Nombre de usuario ocupado", "email-taken": "Correo electrónico ocupado", "email-not-confirmed": "Su cuenta de correo electrónico no ha sido confirmada aún, por favor haga click aquí para confirmarla.", @@ -83,6 +83,7 @@ "chat-message-too-long": "Mensaje de Chat es demasiado largo", "cant-edit-chat-message": "No tienes permiso para editar este mensaje", "cant-remove-last-user": "No puedes eliminar el último usuario", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "El sistema de reputación está deshabilitado.", "downvoting-disabled": "La votación negativa está deshabilitada.", "not-enough-reputation-to-downvote": "No tienes suficiente reputación para votar negativo este post", @@ -94,5 +95,6 @@ "wrong-login-type-email": "Por favor emplea tu email para acceder", "wrong-login-type-username": "Por favor introduce tu nombre de usuario para acceder", "invite-maximum-met": "Has alcanzado el número máximo de personas invitadas (%1 de %2).", - "no-session-found": "¡No se ha encontrado ningún inicio de sesión!" + "no-session-found": "¡No se ha encontrado ningún inicio de sesión!", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/es/global.json b/public/language/es/global.json index 92ccced7df..83c24ff95e 100644 --- a/public/language/es/global.json +++ b/public/language/es/global.json @@ -63,11 +63,9 @@ "posted_in_by": "publicado en %1 por %2", "posted_in_ago": "publicado en %1 %2", "posted_in_ago_by": "publicado en %1 %2 por %3", - "posted_in_ago_by_guest": "publicado en %1 %2 por", - "replied_ago": "contestado %1", "user_posted_ago": "%1 publicó %2", "guest_posted_ago": "Invitado publicó %1", - "last_edited_by_ago": "última edición por %1 %2", + "last_edited_by": "last edited by %1", "norecentposts": "No hay publicaciones recientes", "norecenttopics": "No hay temas recientes", "recentposts": "Publicaciones recientes", diff --git a/public/language/es/pages.json b/public/language/es/pages.json index ce04976d80..a4d13047d1 100644 --- a/public/language/es/pages.json +++ b/public/language/es/pages.json @@ -6,11 +6,12 @@ "popular-month": "Temas populares del mes", "popular-alltime": "Temas populares de siempre", "recent": "Temas recientes", + "flagged-posts": "Flagged Posts", "users/online": "Conectados", "users/latest": "Últimos usuarios", "users/sort-posts": "Top por mensajes", "users/sort-reputation": "Más reputados", - "users/map": "Actividad", + "users/banned": "Banned Users", "users/search": "Buscar", "notifications": "Notificaciones", "tags": "Etiquetas", diff --git a/public/language/es/topic.json b/public/language/es/topic.json index 4754cc3cf1..927570f32b 100644 --- a/public/language/es/topic.json +++ b/public/language/es/topic.json @@ -35,6 +35,7 @@ "login_to_subscribe": "Por favor, conéctate para subscribirte a este tema.", "markAsUnreadForAll.success": "Publicación marcada como no leída para todos.", "mark_unread": "Marcar como no leído", + "mark_unread.success": "Topic marked as unread.", "watch": "Seguir", "unwatch": "Dejar de seguir", "watch.title": "Serás notificado cuando haya nuevas respuestas en este tema", @@ -104,7 +105,7 @@ "stale.warning": "El hilo al que estás respondiendo es muy antiguo. ¿Quieres crear un nuevo hilo en su lugar y añadir una referencia a este en tu mensaje?", "stale.create": "Crear un nuevo hilo", "stale.reply_anyway": "Publicar este hilo de todos modos.", - "stale.link_back": "Re: [%1](%2)", + "link_back": "Re: [%1](%2)", "spam": "SPAM", "offensive": "Ofensivo", "custom-flag-reason": "Introduzca una razón indicatoria." diff --git a/public/language/es/users.json b/public/language/es/users.json index e329a4352c..cf8bdaefff 100644 --- a/public/language/es/users.json +++ b/public/language/es/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "¡%1 usuario(s) encontrado! La búsqueda ha llevado %2 segundos.", "filter-by": "Filtrar Por", "online-only": "Sólo en línea", - "picture-only": "Sólo imagen", "invite": "Invitar", "invitation-email-sent": "Un correo de invitación ha sido enviado a %1", "user_list": "Lista de Usuarios", @@ -17,5 +16,5 @@ "unread_topics": "Temas no leídos", "categories": "Categorías ", "tags": "Etiquetas", - "map": "Actividad" + "no-users-found": "No users found!" } \ No newline at end of file diff --git a/public/language/et/email.json b/public/language/et/email.json index 4422036fe4..a1d3d4371b 100644 --- a/public/language/et/email.json +++ b/public/language/et/email.json @@ -21,9 +21,9 @@ "digest.cta": "Vajuta siia et külastada %1", "digest.unsub.info": "See uudiskiri on saadetud teile tellimuse seadistuse tõttu.", "digest.no_topics": "Viimase %1 jooksul ei ole olnud ühtegi aktiivset teemat", - "digest.day": "day", - "digest.week": "week", - "digest.month": "month", + "digest.day": "päev", + "digest.week": "nädal", + "digest.month": "kuu", "notif.chat.subject": "Sulle on saabunud uus sõnum kasutajalt %1", "notif.chat.cta": "Vajuta siia, et jätkata vestlusega", "notif.chat.unsub.info": "See chat teavitus on saadetud teile tellimuse seadistuse tõttu.", diff --git a/public/language/et/error.json b/public/language/et/error.json index e494b5177c..5520d6f965 100644 --- a/public/language/et/error.json +++ b/public/language/et/error.json @@ -14,7 +14,7 @@ "invalid-password": "Vigane parool", "invalid-username-or-password": "Palun täpsusta kasutajanime ja parooli", "invalid-search-term": "Vigane otsingusõna", - "invalid-pagination-value": "Vigane lehe väärtus", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Kasutajanimi on juba võetud", "email-taken": "Email on võetud", "email-not-confirmed": "Su emaili aadress ei ole kinnitatud, vajuta siia et kinnitada.", @@ -24,7 +24,7 @@ "confirm-email-already-sent": "Kinnituskiri on juba saadetud, palun oota %1 minut(it) uue kirja saatmiseks.", "username-too-short": "Kasutajanimi on liiga lühike", "username-too-long": "Kasutajanimi on liiga pikk", - "password-too-long": "Password too long", + "password-too-long": "Parool liiga pikk", "user-banned": "Kasutaja bannitud", "user-too-new": "Vabandust, te peate ootama %1 sekund(it) enne esimese postituse loomist.", "no-category": "Kategooriat ei eksisteeri", @@ -49,7 +49,7 @@ "too-many-tags": "Liiga palju märksõnu. Teemadel ei tohi olla rohkem kui %1 märksõna", "still-uploading": "Palun oota, kuni üleslaadimised on laetud.", "file-too-big": "Maksimaalne üleslaetava faili suurus on %1 kB - valige väiksema mahuga fail.", - "guest-upload-disabled": "Guest uploading has been disabled", + "guest-upload-disabled": "Külaliste üleslaadimine on keelatud.", "already-favourited": "Sa juba märkisid selle postituse lemmikuks", "already-unfavourited": "Sa juba eemaldasid selle postituse lemmikute hulgast", "cant-ban-other-admins": "Sa ei saa bannida teisi administraatoreid!", @@ -60,8 +60,8 @@ "group-name-too-short": "Grupi nimi liiga lühike", "group-already-exists": "Grupp juba eksisteerib", "group-name-change-not-allowed": "Grupi nimevahetus ei ole lubatud", - "group-already-member": "Already part of this group", - "group-not-member": "Not a member of this group", + "group-already-member": "Oled juba selles grupis", + "group-not-member": "Ei ole selle grupi liige", "group-needs-owner": "See grupp nõuab vähemalt ühte omanikku", "group-already-invited": "Antud kasutaja on juba kutsutud.", "group-already-requested": "Teie liikmetaotlus on juba saadetud.", @@ -77,12 +77,13 @@ "about-me-too-long": "Vabandage, teie tutvustus ei saa olaa pikem kui %1 tähemärk(i).", "cant-chat-with-yourself": "Sa ei saa endaga vestelda!", "chat-restricted": "Kasutaja on piiranud sõnumite saatmist. Privaatsõnumi saatmiseks peab kasutaja sind jälgima", - "chat-disabled": "Chat system disabled", + "chat-disabled": "Vestlus süsteem keelatud", "too-many-messages": "Oled saatnud liiga palju sõnumeid, oota natukene.", "invalid-chat-message": "Vigane vestluse sõnum", "chat-message-too-long": "Vestluse sõnum on liiga pikk", - "cant-edit-chat-message": "You are not allowed to edit this message", - "cant-remove-last-user": "You can't remove the last user", + "cant-edit-chat-message": "Sul ei ole lubatud antud sõnumit muuta", + "cant-remove-last-user": "Sa ei saa viimast kasutajat eemaldada", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "Reputatsiooni süsteem ei ole aktiveeritud", "downvoting-disabled": "Negatiivsete häälte andmine ei ole võimaldatud", "not-enough-reputation-to-downvote": "Sul ei ole piisavalt reputatsiooni, et anda negatiivset hinnangut sellele postitusele.", @@ -93,6 +94,7 @@ "parse-error": "Midagi läks valesti...", "wrong-login-type-email": "Sisse logimiseks kasuta oma emaili", "wrong-login-type-username": "Sisse logimiseks kasuta oma kasutajanime", - "invite-maximum-met": "You have invited the maximum amount of people (%1 out of %2).", - "no-session-found": "No login session found!" + "invite-maximum-met": "Sa oled kutsunud maksimaalse lubatud inimeste arvu (%1 %2 'st).", + "no-session-found": "Sisse logimis sessiooni ei leitud!", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/et/global.json b/public/language/et/global.json index e87c75b8c8..608274ff50 100644 --- a/public/language/et/global.json +++ b/public/language/et/global.json @@ -49,9 +49,9 @@ "users": "Kasutajad", "topics": "Teemat", "posts": "Postitust", - "best": "Best", - "upvoted": "Upvoted", - "downvoted": "Downvoted", + "best": "Parim", + "upvoted": "Kiideti heaks", + "downvoted": "Hääletas vastu", "views": "Vaatamist", "reputation": "Reputatsioon", "read_more": "loe veel", @@ -59,15 +59,13 @@ "posted_ago_by_guest": "postitas %1 külaline", "posted_ago_by": "postitas %1 kasutaja %2", "posted_ago": "postitatud %1", - "posted_in": "posted in %1", - "posted_in_by": "posted in %1 by %2", + "posted_in": "postitas %1 'sse", + "posted_in_by": "postitati: %1 %2 poolt", "posted_in_ago": "postitas kategooriasse %1 %2", "posted_in_ago_by": "%3 postitas %2 kategooriasse %1", - "posted_in_ago_by_guest": "külaline postitas kategooriasse %1 %2 ", - "replied_ago": "vastas %1", "user_posted_ago": "%1 postitas %2", "guest_posted_ago": "Külaline postitas %1", - "last_edited_by_ago": "viimati muutis %1 %2", + "last_edited_by": "last edited by %1", "norecentposts": "Hiljutisi postitusi ei ole", "norecenttopics": "Hiljutisi teemasid ei ole", "recentposts": "Hiljutised postitused", @@ -87,6 +85,6 @@ "unfollow": "Ära jälgi", "delete_all": "Kustuta kõik", "map": "Kaart", - "sessions": "Login Sessions", - "ip_address": "IP Address" + "sessions": "Logitud Sessioonid", + "ip_address": "IP Aadress" } \ No newline at end of file diff --git a/public/language/et/groups.json b/public/language/et/groups.json index e4f47f699e..786ff6489a 100644 --- a/public/language/et/groups.json +++ b/public/language/et/groups.json @@ -24,7 +24,7 @@ "details.has_no_posts": "Selle grupi liikmed ei ole teinud ühtegi postitust.", "details.latest_posts": "Viimased postitused", "details.private": "Privaatne", - "details.disableJoinRequests": "Disable join requests", + "details.disableJoinRequests": "Keela ühinemis taotlused", "details.grant": "Anna/võta omanikuõigused", "details.kick": "Viska välja", "details.owner_options": "Grupi haldamine", diff --git a/public/language/et/modules.json b/public/language/et/modules.json index a06e87ae64..10749826f7 100644 --- a/public/language/et/modules.json +++ b/public/language/et/modules.json @@ -7,7 +7,7 @@ "chat.user_has_messaged_you": "%1 saatis sulle sõnumi.", "chat.see_all": "Vaata kõiki vestluseid", "chat.no-messages": "Vali sõnumisaaja, et vaadata sõnumite ajalugu.", - "chat.no-users-in-room": "No users in this room", + "chat.no-users-in-room": "Ühtki kasutajat selles ruumis", "chat.recent-chats": "Hiljutised vestlused", "chat.contacts": "Kontaktid", "chat.message-history": "Sõnumite ajalugu", @@ -16,9 +16,9 @@ "chat.seven_days": "7 Päeva", "chat.thirty_days": "30 Päeva", "chat.three_months": "3 Kuud", - "chat.delete_message_confirm": "Are you sure you wish to delete this message?", - "chat.roomname": "Chat Room %1", - "chat.add-users-to-room": "Add users to room", + "chat.delete_message_confirm": "Oled kindel, et soovid selle sõnumi kustutada?", + "chat.roomname": "Vestlustuba %1", + "chat.add-users-to-room": "Lisa kasutajaid ruumi", "composer.compose": "Koosta", "composer.show_preview": "Kuva eelvaadet", "composer.hide_preview": "Peida eelvaade", @@ -27,11 +27,11 @@ "composer.discard": "Oled kindel, et soovid selle postituse tühistada?", "composer.submit_and_lock": "Kinnita ja Lukusta", "composer.toggle_dropdown": "Aktiveeri rippmenüü", - "composer.uploading": "Uploading %1", + "composer.uploading": "%1 Üleslaadimine", "bootbox.ok": "Olgu", "bootbox.cancel": "Katkesta", "bootbox.confirm": "Kinnita", - "cover.dragging_title": "Cover Photo Positioning", - "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"", - "cover.saved": "Cover photo image and position saved" + "cover.dragging_title": "Kaanefoto Positsioneerimine", + "cover.dragging_message": "Vea kaanefoto soovitud kohta ja klikka \"Salvesta\"", + "cover.saved": "Kaanefoto ja paiknemine salvestatud" } \ No newline at end of file diff --git a/public/language/et/notifications.json b/public/language/et/notifications.json index 25137b1ad3..1dc8c61a6b 100644 --- a/public/language/et/notifications.json +++ b/public/language/et/notifications.json @@ -5,30 +5,30 @@ "mark_all_read": "Märgi kõik teavitused loetuks", "back_to_home": "Tagasi %1", "outgoing_link": "Väljaminev link", - "outgoing_link_message": "You are now leaving %1", + "outgoing_link_message": "Lahkud %1", "continue_to": "Jätka %1", "return_to": "Pöördu tagasi %1", "new_notification": "Uus teade", "you_have_unread_notifications": "Sul ei ole lugemata teateid.", "new_message_from": "Uus sõnum kasutajalt %1", "upvoted_your_post_in": "%1 hääletas sinu postituse poolt teemas %2.", - "upvoted_your_post_in_dual": "%1 and %2 have upvoted your post in %3.", - "upvoted_your_post_in_multiple": "%1 and %2 others have upvoted your post in %3.", - "moved_your_post": "%1 has moved your post to %2", - "moved_your_topic": "%1 has moved %2", + "upvoted_your_post_in_dual": "%1 ja %2 kiitsid sinu postituse heaks: %3.", + "upvoted_your_post_in_multiple": "%1 ja %2 teist on kiitnud sinu postituse heaks: %3.", + "moved_your_post": "%1 liigutas sinu postituse %2 'sse", + "moved_your_topic": "%1 liigutas %2", "favourited_your_post_in": "%1 märgistas sinu postituse lemmikuks teemas %2.", - "favourited_your_post_in_dual": "%1 and %2 have favourited your post in %3.", - "favourited_your_post_in_multiple": "%1 and %2 others have favourited your post in %3.", + "favourited_your_post_in_dual": "%1 'le ja %2 'le meeldis sinu postitus: %3.", + "favourited_your_post_in_multiple": "%1 'le ja %2 'le teisele meeldis sinu postitus: %3.", "user_flagged_post_in": "%1 raporteeris postitust %2", - "user_flagged_post_in_dual": "%1 and %2 flagged a post in %3", - "user_flagged_post_in_multiple": "%1 and %2 others flagged a post in %3", + "user_flagged_post_in_dual": "%1 ja %2 märgistasid postituse: %3", + "user_flagged_post_in_multiple": "%1 ja %2 teist märgistasid postituse: %3", "user_posted_to": "Kasutaja %1 postitas vastuse teemasse %2", - "user_posted_to_dual": "%1 and %2 have posted replies to: %3", - "user_posted_to_multiple": "%1 and %2 others have posted replies to: %3", + "user_posted_to_dual": "%1 ja %2 on postitanud vastused: %3", + "user_posted_to_multiple": "%1 ja %2 teist on postitanud vastused: %3", "user_posted_topic": "%1 on postitanud uue teema: %2", "user_started_following_you": "%1 hakkas sind jälgima.", - "user_started_following_you_dual": "%1 and %2 started following you.", - "user_started_following_you_multiple": "%1 and %2 others started following you.", + "user_started_following_you_dual": "%1 ja %2 hakkasid sind jälgima.", + "user_started_following_you_multiple": "%1 ja %2 hakkasid sind jälgima.", "new_register": "%1 saatis registreerimistaotluse.", "email-confirmed": "Emaili aadress kinnitatud", "email-confirmed-message": "Täname, et kinnitasite oma emaili aadressi. Teie kasutaja on nüüd täielikult aktiveeritud.", diff --git a/public/language/et/pages.json b/public/language/et/pages.json index 1441f402f6..6c2d826b95 100644 --- a/public/language/et/pages.json +++ b/public/language/et/pages.json @@ -6,11 +6,12 @@ "popular-month": "Populaarsed teemad sel kuul", "popular-alltime": "Populaarseimad teemad üldse", "recent": "Hiljutised teemad", + "flagged-posts": "Flagged Posts", "users/online": "Sisseloginud kasutajad", "users/latest": "Hiljutised kasutajad", "users/sort-posts": "Kasutajad, kel on enim postitusi", "users/sort-reputation": "Suurima reputatsiooniga kasutajad", - "users/map": "Kasutajate kaart", + "users/banned": "Banned Users", "users/search": "Kasutajate otsing", "notifications": "Teated", "tags": "Märksõnad", @@ -24,9 +25,9 @@ "chats": "Vestlused", "chat": "Vestlus kasutajaga %1", "account/edit": "Muudan \"%1\"", - "account/edit/password": "Editing password of \"%1\"", - "account/edit/username": "Editing username of \"%1\"", - "account/edit/email": "Editing email of \"%1\"", + "account/edit/password": "Redigeerid \"%1\" parooli", + "account/edit/username": "Redigeerid \"%1\" kasutajanime", + "account/edit/email": "Redigeerid \"%1\" emaili", "account/following": "Kasutaja %1 jälgib", "account/followers": "Kasutajad, kes jälgivad %1", "account/posts": "Postitused, mis on tehtud kasutaja %1 poolt", @@ -35,10 +36,10 @@ "account/favourites": "Kasutaja %1 lemmikud postitused", "account/settings": "Kasutaja sätted", "account/watched": "Teemasid jälgib %1 kasutajat", - "account/upvoted": "Posts upvoted by %1", - "account/downvoted": "Posts downvoted by %1", - "account/best": "Best posts made by %1", + "account/upvoted": "Postitused %1 poolt heaks kiidetud", + "account/downvoted": "Postitused %1 poolt vastu hääletatud", + "account/best": "Parimad postitused %1 poolt", "maintenance.text": "%1 foorumil on käimas hooldustööd. Palun külastage meid mõne aja pärast uuesti.", "maintenance.messageIntro": "Administraator on jätnud ka omaltpoolt sõnumi:", - "throttled.text": "%1 is currently unavailable due to excessive load. Please come back another time." + "throttled.text": "%1 ei ole hetkel kättesaadav liigse koormuse tõttu. Palun tulge tagasi mõni teine kord." } \ No newline at end of file diff --git a/public/language/et/topic.json b/public/language/et/topic.json index be076e2e21..880709a196 100644 --- a/public/language/et/topic.json +++ b/public/language/et/topic.json @@ -13,7 +13,7 @@ "notify_me": "Saa teateid uutest postitustest selles teemas", "quote": "Tsiteeri", "reply": "Vasta", - "reply-as-topic": "Reply as topic", + "reply-as-topic": "Vasta teemana", "guest-login-reply": "Logi sisse, et vastata", "edit": "Muuda", "delete": "Kustuta", @@ -34,7 +34,8 @@ "not_following_topic.message": "Sulle ei edastata enam teateid uutest postitustest siin teemas.", "login_to_subscribe": "Palun registreeru kasutajaks või logi sisse, et tellida teateid selle postituse kohta.", "markAsUnreadForAll.success": "Teema märgitud mitte-loetuks kõikidele.", - "mark_unread": "Mark unread", + "mark_unread": "Märgi lugematuks", + "mark_unread.success": "Topic marked as unread.", "watch": "Vaata", "unwatch": "Ära järgi", "watch.title": "Saa teateid uutest postitustest siin teemas", @@ -50,7 +51,7 @@ "thread_tools.move_all": "Liiguta kõik", "thread_tools.fork": "Fork Topic", "thread_tools.delete": "Kustuta teema", - "thread_tools.delete-posts": "Delete Posts", + "thread_tools.delete-posts": "Kustuta Postitusi", "thread_tools.delete_confirm": "Oled kindel, et soovid selle teema kustutada?", "thread_tools.restore": "Taasta teema", "thread_tools.restore_confirm": "Oled kindel, et soovid selle teema taastada?", @@ -77,7 +78,7 @@ "fork_topic_instruction": "Vajuta postitustele, mida soovid forkida", "fork_no_pids": "Sa ei ole postitusi valinud!", "fork_success": "Edukalt ''forkisid'' teema! Vajuta siia, et vaadata loodud teemat.", - "delete_posts_instruction": "Click the posts you want to delete/purge", + "delete_posts_instruction": "Klikka postitustel, mida tahad kustutada/puhastada", "composer.title_placeholder": "Sisesta teema pealkiri siia...", "composer.handle_placeholder": "Nimi", "composer.discard": "Katkesta", @@ -100,12 +101,12 @@ "newest_to_oldest": "Uuematest vanemateni", "most_votes": "Kõige rohkem hääli", "most_posts": "Kõige rohkem postitusi", - "stale.title": "Create new topic instead?", - "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", - "stale.create": "Create a new topic", - "stale.reply_anyway": "Reply to this topic anyway", - "stale.link_back": "Re: [%1](%2)", - "spam": "Spam", - "offensive": "Offensive", - "custom-flag-reason": "Enter a flagging reason" + "stale.title": "Loo uus teema selle asemel?", + "stale.warning": "Teema, millele vastad on küllaltki vana. Kas sooviksid hoopiski uue teema luua ning viidata sellele sinu vastuses?", + "stale.create": "Loo uus teema/alapealkiri", + "stale.reply_anyway": "Vasta sellele teemale siiski", + "link_back": "Re: [%1](%2)", + "spam": "Rämpspost", + "offensive": "Solvav", + "custom-flag-reason": "Sisesta teavitamise põhjus" } \ No newline at end of file diff --git a/public/language/et/user.json b/public/language/et/user.json index 3f35e25477..45af939288 100644 --- a/public/language/et/user.json +++ b/public/language/et/user.json @@ -97,9 +97,9 @@ "select-skin": "Vali välimus", "select-homepage": "Vali avaleht", "homepage": "Avaleht", - "homepage_description": "Select a page to use as the forum homepage or 'None' to use the default homepage.", - "custom_route": "Custom Homepage Route", - "custom_route_help": "Enter a route name here, without any preceding slash (e.g. \"recent\", or \"popular\")", + "homepage_description": "Valige leht, mida kasutada foorumi esilehena või 'None', et kasutada vaikimisi esilehte.", + "custom_route": "Kohandatud Esilehe Teekond", + "custom_route_help": "Sisestage tee nimi siia, ilma eelnevate kaldkriipsudeta (nt. \"recent\", või \"popular\")", "sso.title": "Ühekordse sisselogimisega teenused", "sso.associated": "Seotud koos", "sso.not-associated": "Kliki siia, et siduda koos" diff --git a/public/language/et/users.json b/public/language/et/users.json index af22195a76..a1dd6ba266 100644 --- a/public/language/et/users.json +++ b/public/language/et/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "%1 kasutaja(t) leiti! Otsing kestis %2 sekundit.", "filter-by": "Filtreeri", "online-only": "Ainult seesolevad", - "picture-only": "Ainult pilt", "invite": "Kutsuge", "invitation-email-sent": "Kutse on saadetud e-mailile %1", "user_list": "Kasutajate list", @@ -17,5 +16,5 @@ "unread_topics": "Lugemata teemad", "categories": "Kategooriad", "tags": "Märksõnad", - "map": "Kaart" + "no-users-found": "No users found!" } \ No newline at end of file diff --git a/public/language/fa_IR/error.json b/public/language/fa_IR/error.json index 45f1d7e76a..d1ff0894f9 100644 --- a/public/language/fa_IR/error.json +++ b/public/language/fa_IR/error.json @@ -14,7 +14,7 @@ "invalid-password": "کلمه عبور نامعتبر است.", "invalid-username-or-password": "لطفا هم نام کاربری و هم کلمه عبور را مشخص کنید", "invalid-search-term": "کلمه جستجو نامعتبر است", - "invalid-pagination-value": "عدد صفحه‌بندی نامعتبر است.", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "این نام کاربری گرفته شده است.", "email-taken": "این ایمیل گرفته شده است.", "email-not-confirmed": "ایمیل شما تاکنون تایید نشده است، برای تایید ایمیل خود را اینجا را کلیک کنید.", @@ -83,6 +83,7 @@ "chat-message-too-long": "پیام طولانی تر از حد مجاز است", "cant-edit-chat-message": "شما اجازه ی ویرایش این پیام را ندارید", "cant-remove-last-user": "You can't remove the last user", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "سیستم اعتبار غیر فعال شده است", "downvoting-disabled": "رأی منفی غیر فعال شده است", "not-enough-reputation-to-downvote": "شما اعتبار کافی برای دادن رأی منفی به این پست را ندارید.", @@ -94,5 +95,6 @@ "wrong-login-type-email": "لطفا از ایمیل خود برای ورود استفاده کنید", "wrong-login-type-username": "لطفا از نام کاربری خود برای ورود استفاده کنید", "invite-maximum-met": "You have invited the maximum amount of people (%1 out of %2).", - "no-session-found": "No login session found!" + "no-session-found": "No login session found!", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/fa_IR/global.json b/public/language/fa_IR/global.json index c85c6c902b..a11d36a14e 100644 --- a/public/language/fa_IR/global.json +++ b/public/language/fa_IR/global.json @@ -63,11 +63,9 @@ "posted_in_by": "پشت شده در %1 توسط 2%", "posted_in_ago": "ارسال شده در %1 %2", "posted_in_ago_by": "ارسال شده در %1 %2 توسط %3", - "posted_in_ago_by_guest": "ارسال شده در %1 %2 توسط مهمان", - "replied_ago": "پاسخ داده شده در %1", "user_posted_ago": "%1 در %2 ارسال کرده است", "guest_posted_ago": "مهمان در %1 ارسال کرده است", - "last_edited_by_ago": "آخرین ویرایش توسط %1 %2", + "last_edited_by": "last edited by %1", "norecentposts": "هیچ دیدگاه تازه‌ای نیست", "norecenttopics": "هیچ جستار تازه‌ای نیست", "recentposts": "دیدگاه‌های تازه", diff --git a/public/language/fa_IR/pages.json b/public/language/fa_IR/pages.json index ee17466405..050764ba2e 100644 --- a/public/language/fa_IR/pages.json +++ b/public/language/fa_IR/pages.json @@ -6,11 +6,12 @@ "popular-month": "موضوعات پربازدید این ماه", "popular-alltime": "پربازدیدترین موضوعات", "recent": "جستارهای تازه", + "flagged-posts": "Flagged Posts", "users/online": "کاربران آنلاین", "users/latest": "آخرین کاربران", "users/sort-posts": "کاربران با بیش‌ترین پست", "users/sort-reputation": "کاربران دارای بیشترین اعتبار", - "users/map": "نقشه ی کاربر", + "users/banned": "Banned Users", "users/search": "جستجوی کاربر", "notifications": "آگاه‌سازی‌ها", "tags": "برچسب‌ها", diff --git a/public/language/fa_IR/topic.json b/public/language/fa_IR/topic.json index cee6a418c1..74dabdce53 100644 --- a/public/language/fa_IR/topic.json +++ b/public/language/fa_IR/topic.json @@ -35,6 +35,7 @@ "login_to_subscribe": "برای دنبال کردن این موضوع، لطفا ثبت نام کنید و یا با نام کاربری خود وارد شوید", "markAsUnreadForAll.success": "موضوع برای همگان نخوانده در نظر گرفته شد.", "mark_unread": "Mark unread", + "mark_unread.success": "Topic marked as unread.", "watch": "پیگیری", "unwatch": "عدم پیگیری", "watch.title": "از پاسخ‌های تازه به این موضوع آگاه شوید.", @@ -104,7 +105,7 @@ "stale.warning": "موضوعی که شما در حال پاسخگویی به آن هستید قدیمی می باشد. آیا میلید به جای آن یک موضوع جدید ایجاد کنید و در آن به این موضوع ارجاع دهید؟", "stale.create": "ایجاد یک موضوع جدید", "stale.reply_anyway": "در هر صورت می خواهم به این موضوع پاسخ دهم", - "stale.link_back": "پاسخ : [%1](2%)", + "link_back": "Re: [%1](%2)", "spam": "اسپم", "offensive": "توهین آمیز", "custom-flag-reason": "وارد کردن دلیل پرچمگذاری" diff --git a/public/language/fa_IR/users.json b/public/language/fa_IR/users.json index 237e45600e..3cd0087dcf 100644 --- a/public/language/fa_IR/users.json +++ b/public/language/fa_IR/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "%1 کاربر(ها) یافت شد! جستجو %2 ثانیه طولید", "filter-by": "فیلتر با", "online-only": "فقط آنلاین", - "picture-only": "عکس فقط", "invite": "دعوت", "invitation-email-sent": "ایمیل ی دعوتنامه به %1 ارسال شد", "user_list": "فهرست کاربران", @@ -17,5 +16,5 @@ "unread_topics": "موضوع های خوانده نشده", "categories": "دسته ها", "tags": "برچسب‌ها", - "map": "نقشه" + "no-users-found": "No users found!" } \ No newline at end of file diff --git a/public/language/fi/error.json b/public/language/fi/error.json index 059820d897..2a07ffd56d 100644 --- a/public/language/fi/error.json +++ b/public/language/fi/error.json @@ -14,7 +14,7 @@ "invalid-password": "Virheellinen salasana", "invalid-username-or-password": "Ole hyvä ja anna sekä käyttäjänimi että salasana", "invalid-search-term": "Virheellinen hakutermi", - "invalid-pagination-value": "Virheellinen taittoarvo", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Käyttäjänimi varattu", "email-taken": "Sähköpostiosoite varattu", "email-not-confirmed": "Sähköpostiasi ei ole vielä vahvistettu, ole hyvä ja napsauta tätä vahvistaaksesi sen.", @@ -83,6 +83,7 @@ "chat-message-too-long": "Chat message is too long", "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "Reputation system is disabled.", "downvoting-disabled": "Downvoting is disabled", "not-enough-reputation-to-downvote": "You do not have enough reputation to downvote this post", @@ -94,5 +95,6 @@ "wrong-login-type-email": "Please use your email to login", "wrong-login-type-username": "Please use your username to login", "invite-maximum-met": "You have invited the maximum amount of people (%1 out of %2).", - "no-session-found": "No login session found!" + "no-session-found": "No login session found!", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/fi/global.json b/public/language/fi/global.json index b0c705681c..882b22c137 100644 --- a/public/language/fi/global.json +++ b/public/language/fi/global.json @@ -63,11 +63,9 @@ "posted_in_by": "posted in %1 by %2", "posted_in_ago": "posted in %1 %2", "posted_in_ago_by": "posted in %1 %2 by %3", - "posted_in_ago_by_guest": "posted in %1 %2 by Guest", - "replied_ago": "vastattu %1", "user_posted_ago": "%1 lähetti %2", "guest_posted_ago": "Vieras kirjoitti %1", - "last_edited_by_ago": "last edited by %1 %2", + "last_edited_by": "last edited by %1", "norecentposts": "Ei viimeaikaisia viestejä", "norecenttopics": "Ei viimeaikaisia aiheita", "recentposts": "Viimeisimmät viestit", diff --git a/public/language/fi/pages.json b/public/language/fi/pages.json index 40030b5e07..e25e4f740e 100644 --- a/public/language/fi/pages.json +++ b/public/language/fi/pages.json @@ -6,11 +6,12 @@ "popular-month": "Popular topics this month", "popular-alltime": "All time popular topics", "recent": "Viimeisimmät aiheet", + "flagged-posts": "Flagged Posts", "users/online": "Online Users", "users/latest": "Latest Users", "users/sort-posts": "Users with the most posts", "users/sort-reputation": "Users with the most reputation", - "users/map": "User Map", + "users/banned": "Banned Users", "users/search": "User Search", "notifications": "Ilmoitukset", "tags": "Tags", diff --git a/public/language/fi/topic.json b/public/language/fi/topic.json index a2f489d5f4..066d0256a5 100644 --- a/public/language/fi/topic.json +++ b/public/language/fi/topic.json @@ -35,6 +35,7 @@ "login_to_subscribe": "Ole hyvä ja rekisteröidy tai kirjaudu sisään tilataksesi tämän aiheen.", "markAsUnreadForAll.success": "Aihe merkitty lukemattomaksi kaikille.", "mark_unread": "Mark unread", + "mark_unread.success": "Topic marked as unread.", "watch": "Tarkkaile", "unwatch": "Älä seuraa", "watch.title": "Ilmoita, kun tähän keskusteluun tulee uusia viestejä", @@ -104,7 +105,7 @@ "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", "stale.create": "Create a new topic", "stale.reply_anyway": "Reply to this topic anyway", - "stale.link_back": "Re: [%1](%2)", + "link_back": "Re: [%1](%2)", "spam": "Spam", "offensive": "Offensive", "custom-flag-reason": "Enter a flagging reason" diff --git a/public/language/fi/users.json b/public/language/fi/users.json index f17d4c996b..1885be650e 100644 --- a/public/language/fi/users.json +++ b/public/language/fi/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "%1 käyttäjä(ä) löytyi! Haku kesti %2 sekuntia.", "filter-by": "Suodata", "online-only": "Vain verkossa olevat", - "picture-only": "Picture only", "invite": "Invite", "invitation-email-sent": "An invitation email has been sent to %1", "user_list": "User List", @@ -17,5 +16,5 @@ "unread_topics": "Unread Topics", "categories": "Categories", "tags": "Tags", - "map": "Map" + "no-users-found": "No users found!" } \ No newline at end of file diff --git a/public/language/fr/error.json b/public/language/fr/error.json index 98dcef980a..b372224e92 100644 --- a/public/language/fr/error.json +++ b/public/language/fr/error.json @@ -14,7 +14,7 @@ "invalid-password": "Mot de passe invalide", "invalid-username-or-password": "Veuillez entrer un nom d'utilisateur et un mot de passe", "invalid-search-term": "Données de recherche invalides", - "invalid-pagination-value": "Valeur de pagination invalide", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Nom d’utilisateur déjà utilisé", "email-taken": "Email déjà utilisé", "email-not-confirmed": "Votre adresse email n'est pas confirmée, cliquez ici pour la valider.", @@ -83,6 +83,7 @@ "chat-message-too-long": "Le message de Chat est trop long", "cant-edit-chat-message": "Vous n'avez pas l'autorisation de modifier ce message", "cant-remove-last-user": "Vous ne pouvez pas supprimer le dernier utilisateur", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "Le système de réputation est désactivé", "downvoting-disabled": "Les votes négatifs ne sont pas autorisés", "not-enough-reputation-to-downvote": "Vous n'avez pas une réputation assez élevée pour noter négativement ce message", @@ -94,5 +95,6 @@ "wrong-login-type-email": "Veuillez utiliser votre adresse email pour vous connecter", "wrong-login-type-username": "Veuillez utiliser votre identifiant pour vous connecter", "invite-maximum-met": "Vous avez invité la quantité maximale de personnes (%1 de %2).", - "no-session-found": "Pas de session de connexion trouvé!" + "no-session-found": "Pas de session de connexion trouvé!", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/fr/global.json b/public/language/fr/global.json index 6663719e74..aaabd06939 100644 --- a/public/language/fr/global.json +++ b/public/language/fr/global.json @@ -63,11 +63,9 @@ "posted_in_by": "posté dans %1 par %2", "posted_in_ago": "posté dans %1 %2", "posted_in_ago_by": "posté dans %1 %2 par %3", - "posted_in_ago_by_guest": "posté dans %1 %2 par un invité", - "replied_ago": "a répondu %1", "user_posted_ago": "%1 a posté %2", "guest_posted_ago": "Un invité a posté %1", - "last_edited_by_ago": "dernière édition par %1 %2", + "last_edited_by": "last edited by %1", "norecentposts": "Aucun message récent", "norecenttopics": "Aucun sujet récent", "recentposts": "Messages récents", diff --git a/public/language/fr/pages.json b/public/language/fr/pages.json index 796d1de71a..5726e2d1cb 100644 --- a/public/language/fr/pages.json +++ b/public/language/fr/pages.json @@ -6,11 +6,12 @@ "popular-month": "Sujets populaires ce mois-ci", "popular-alltime": "Sujets populaires depuis toujours", "recent": "Sujets récents", + "flagged-posts": "Flagged Posts", "users/online": "Utilisateurs en ligne", "users/latest": "Derniers inscrits", "users/sort-posts": "Utilisateurs avec le plus de messages", "users/sort-reputation": "Utilisateurs avec la plus grande réputation", - "users/map": "Carte des utilisateurs", + "users/banned": "Banned Users", "users/search": "Rechercher des utilisateurs", "notifications": "Notifications", "tags": "Mots-clés", diff --git a/public/language/fr/topic.json b/public/language/fr/topic.json index 43ce155808..318acf7f65 100644 --- a/public/language/fr/topic.json +++ b/public/language/fr/topic.json @@ -35,6 +35,7 @@ "login_to_subscribe": "Veuillez vous enregistrer ou vous connecter afin de vous abonner à ce sujet.", "markAsUnreadForAll.success": "Sujet marqué comme non lu pour tout le monde.", "mark_unread": "Marquer comme non-lu", + "mark_unread.success": "Topic marked as unread.", "watch": "Surveiller", "unwatch": "Ne plus surveiller", "watch.title": "Être notifié des nouvelles réponses dans ce sujet", @@ -104,7 +105,7 @@ "stale.warning": "Le sujet auquel vous répondez est assez ancien. Ne voudriez-vous pas créer un nouveau sujet à la place et placer une référence vers celui-ci dans votre réponse ?", "stale.create": "Créer un nouveau sujet", "stale.reply_anyway": "Répondre à ce sujet quand même", - "stale.link_back": "Re : [%1](%2)", + "link_back": "Re: [%1](%2)", "spam": "Spam", "offensive": "Offensif", "custom-flag-reason": "Entrez une raison pour laquelle vous signalez ce message" diff --git a/public/language/fr/users.json b/public/language/fr/users.json index fdcd16a1d8..9a19daf831 100644 --- a/public/language/fr/users.json +++ b/public/language/fr/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "%1 utilisateur(s) trouvé(s)! La recherche a pris %2 secondes.", "filter-by": "Filtrer par", "online-only": "En ligne uniquement", - "picture-only": "Avec image uniquement", "invite": "Invitation", "invitation-email-sent": "Un email d'invitation a été envoyé à %1", "user_list": "Liste d'Utilisateurs", @@ -17,5 +16,5 @@ "unread_topics": "Sujets Non-Lus", "categories": "Catégories", "tags": "Mots-clés", - "map": "Carte" + "no-users-found": "No users found!" } \ No newline at end of file diff --git a/public/language/gl/error.json b/public/language/gl/error.json index fae1d6a446..f17f526582 100644 --- a/public/language/gl/error.json +++ b/public/language/gl/error.json @@ -14,7 +14,7 @@ "invalid-password": "Contrasinal Inválido", "invalid-username-or-password": "Especifica ámbolos dous por favor, nome de usuario e contrasinal", "invalid-search-term": "Termo de búsqueda inválido", - "invalid-pagination-value": "Valor de paxinación Inválido", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Nome de usuario en uso", "email-taken": "Correo en uso", "email-not-confirmed": "O teu correo aínda non está confirmado, por favor pica aquí para confirmalo.", @@ -83,6 +83,7 @@ "chat-message-too-long": "Mensaxe moi longa", "cant-edit-chat-message": "Non tes permitido editar esta mensaxe.", "cant-remove-last-user": "Non podes quitar o último usuario", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "O sistema de reputación está deshabilitado", "downvoting-disabled": "Os votos negativos están deshabilitados", "not-enough-reputation-to-downvote": "Non tes reputación dabonda para esta acción", @@ -94,5 +95,6 @@ "wrong-login-type-email": "Por favor, emprega o teu correo para contectarte", "wrong-login-type-username": "Por favor, usa o teu nome de usuario para conectarte", "invite-maximum-met": "Convidaches á cantidade máxima de persoas (%1 de %2).", - "no-session-found": "Non se atopa ningún inicio de sesión!" + "no-session-found": "Non se atopa ningún inicio de sesión!", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/gl/global.json b/public/language/gl/global.json index 7f38d75154..ccb30d5d1f 100644 --- a/public/language/gl/global.json +++ b/public/language/gl/global.json @@ -63,11 +63,9 @@ "posted_in_by": "publicado en %1 por %2", "posted_in_ago": "Publicado en %1 %2", "posted_in_ago_by": "Publicado en %1 %2 por %3", - "posted_in_ago_by_guest": "Publicado en %1 %2 por Invitado", - "replied_ago": "respostou %1", "user_posted_ago": "%1 publicado %2", "guest_posted_ago": "Invitado publicou %1", - "last_edited_by_ago": "última edición por %1 %2", + "last_edited_by": "last edited by %1", "norecentposts": "Non hai mensaxes recentes", "norecenttopics": "Non hai temas recentes", "recentposts": "Mensaxes recentes", diff --git a/public/language/gl/pages.json b/public/language/gl/pages.json index 59a065b460..d9ac21ded1 100644 --- a/public/language/gl/pages.json +++ b/public/language/gl/pages.json @@ -6,11 +6,12 @@ "popular-month": "Temas populares do mes", "popular-alltime": "Temas populares de tódolos tempos", "recent": "Temas recentes", + "flagged-posts": "Flagged Posts", "users/online": "Usuarios conectados", "users/latest": "Últimos usuarios", "users/sort-posts": "Usuarios con máis temas", "users/sort-reputation": "Usuarios máis reputados", - "users/map": "Mapa do usuario", + "users/banned": "Banned Users", "users/search": "Búsqueda de usuarios", "notifications": "Notificacións", "tags": "Etiquetas", diff --git a/public/language/gl/topic.json b/public/language/gl/topic.json index 596e4298fa..2994d605d8 100644 --- a/public/language/gl/topic.json +++ b/public/language/gl/topic.json @@ -35,6 +35,7 @@ "login_to_subscribe": "Por favor, identifícate para subscribirte a este tema.", "markAsUnreadForAll.success": "Publicación marcada como non lida para todos.", "mark_unread": "Marcar coma non lido", + "mark_unread.success": "Topic marked as unread.", "watch": "Vixiar", "unwatch": "Deixar de vixiar", "watch.title": "Serás notificado canto haxa novas respostas neste tema", @@ -104,7 +105,7 @@ "stale.warning": "O tema no que queres publicar é bastante vello. Queres crear un novo tema no seu lugar e incluir unha referencia a este na túa mensaxe?", "stale.create": "Crear un novo tema", "stale.reply_anyway": "Publicar neste tema de tódolos xeitos", - "stale.link_back": "Re: [%1](%2)", + "link_back": "Re: [%1](%2)", "spam": "Spam", "offensive": "Ofensivo", "custom-flag-reason": "Describe o motivo do reporte" diff --git a/public/language/gl/users.json b/public/language/gl/users.json index e4955d2862..0162c1c350 100644 --- a/public/language/gl/users.json +++ b/public/language/gl/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "%1 usuario(s) atopado! A procura tomou %2 segundos.", "filter-by": "Filtrar por", "online-only": "Só conectados", - "picture-only": "Só imaxe", "invite": "Convidar", "invitation-email-sent": "A invitación foi enviada a %1", "user_list": "Lista de Usuarios", @@ -17,5 +16,5 @@ "unread_topics": "Temas non lidos", "categories": "Categorías", "tags": "Etiquetas", - "map": "Mapa" + "no-users-found": "No users found!" } \ No newline at end of file diff --git a/public/language/he/email.json b/public/language/he/email.json index 43fa1f26d0..9ca8de27a9 100644 --- a/public/language/he/email.json +++ b/public/language/he/email.json @@ -21,9 +21,9 @@ "digest.cta": "לחץ כאן כדי לבקר ב %1", "digest.unsub.info": "תקציר זה נשלח אליך על-פי הגדרות החשבון שלך.", "digest.no_topics": "אין נושאים פעילים ב%1 האחרון/ים", - "digest.day": "day", - "digest.week": "week", - "digest.month": "month", + "digest.day": "יום", + "digest.week": "שבוע", + "digest.month": "חודש", "notif.chat.subject": "הודעת צ'אט חדשה התקבלה מ%1", "notif.chat.cta": "לחץ כאן כדי להמשיך את השיחה", "notif.chat.unsub.info": "התראה הצ'אט הזו נשלחה אליך על-פי הגדרות החשבון שלך.", diff --git a/public/language/he/error.json b/public/language/he/error.json index 341f637d7b..ff63886ec9 100644 --- a/public/language/he/error.json +++ b/public/language/he/error.json @@ -14,17 +14,17 @@ "invalid-password": "סיסמא שגויה", "invalid-username-or-password": "אנא הגדר שם משתמש וסיסמה", "invalid-search-term": "מילת חיפוש לא תקינה", - "invalid-pagination-value": "ערך דפדוף שגוי", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "שם משתמש תפוס", "email-taken": "כתובת אימייל תפוסה", "email-not-confirmed": "כתובת המייל שלך עוד לא אושרה, לחץ כאן על-מנת לאשר את המייל שלך.", "email-not-confirmed-chat": "אין באפשרותך לשוחח עד שהדוא\"ל שלך יאושר, אנא לחץ כאן כדי לאשר את הדוא\"ל שלך.", "no-email-to-confirm": "פורום זה דורש אישור בדוא\"ל, אנא לחץ כאן כדי להכניס לדואר אלקטרוני", "email-confirm-failed": "לא הצלחנו לאשר את הדוא\"ל שלך, תנסה שוב אחר כך", - "confirm-email-already-sent": "Confirmation email already sent, please wait %1 minute(s) to send another one.", + "confirm-email-already-sent": "מייל האישור כבר נשלח, אנא המתן %1 דקות כדי לשלוח מייל נוסף.", "username-too-short": "שם משתמש קצר מדי", "username-too-long": "שם משתמש ארוך מדי", - "password-too-long": "Password too long", + "password-too-long": "הסיסמה ארוכה מדי", "user-banned": "המשתמש מושעה", "user-too-new": "אנא המתן %1 שניות לפני פרסום ההודעה", "no-category": "קטגוריה אינה קיימת", @@ -36,10 +36,10 @@ "no-privileges": "ההרשאות שלך אינן מספיקות לביצוע פעולה זו", "category-disabled": "קטגוריה לא פעילה", "topic-locked": "נושא נעול", - "post-edit-duration-expired": "You are only allowed to edit posts for %1 second(s) after posting", - "content-too-short": "Please enter a longer post. Posts should contain at least %1 character(s).", - "content-too-long": "Please enter a shorter post. Posts can't be longer than %1 character(s).", - "title-too-short": "Please enter a longer title. Titles should contain at least %1 character(s).", + "post-edit-duration-expired": "אתה רשאי לערוך פוסטים רק ל-%1 שניות לאחר הפרסום", + "content-too-short": "אנא הכנס פוסט ארוך יותר. פוסטים חייבים להכיל לפחות %1 תווים.", + "content-too-long": "אנא הכנס פוסט קצר יותר. פוסטים חייבים להיות קצרים יותר מ-%1 תווים.", + "title-too-short": "אנא הכנס כותרת ארוכה יותר. כותרות חייבות להכיל לפחות %1 תווים.", "title-too-long": "Please enter a shorter title. Titles can't be longer than %1 character(s).", "too-many-posts": "You can only post once every %1 second(s) - please wait before posting again", "too-many-posts-newbie": "As a new user, you can only post once every %1 second(s) until you have earned %2 reputation - please wait before posting again", @@ -49,21 +49,21 @@ "too-many-tags": "Too many tags. Topics can't have more than %1 tag(s)", "still-uploading": "אנא המתן לסיום ההעלאות", "file-too-big": "Maximum allowed file size is %1 kB - please upload a smaller file", - "guest-upload-disabled": "Guest uploading has been disabled", + "guest-upload-disabled": "העלאת אורחים אינה מאופשרת", "already-favourited": "כבר הוספת פוסט זה למועדפים", "already-unfavourited": "כבר הסרת פוסט זה מהמועדפים", "cant-ban-other-admins": "אינך יכול לחסום מנהלים אחרים!", - "cant-remove-last-admin": "You are the only administrator. Add another user as an administrator before removing yourself as admin", + "cant-remove-last-admin": "אתה המנהל היחיד. הוסף משתמש אחר לניהול לפני שאתה מוריד את עצמך מניהול", "invalid-image-type": "פורמט תמונה לא תקין. הפורמטים המורשים הם: %1", "invalid-image-extension": "פורמט תמונה לא תקין", - "invalid-file-type": "Invalid file type. Allowed types are: %1", + "invalid-file-type": "פורמט הקובץ לא תקין. הפורמטים המורשים הם: %1", "group-name-too-short": "שם הקבוצה קצר מדי", "group-already-exists": "הקבוצה כבר קיימת", "group-name-change-not-allowed": "לא ניתן לשנות את שם הקבוצה", - "group-already-member": "Already part of this group", - "group-not-member": "Not a member of this group", + "group-already-member": "כבר חבר בקבוצה זו", + "group-not-member": "לא חבר בקבוצה זו", "group-needs-owner": "קבוצה זו חייבת לפחות מנהל אחד", - "group-already-invited": "This user has already been invited", + "group-already-invited": "משתמש זה כבר הוזמן", "group-already-requested": "Your membership request has already been submitted", "post-already-deleted": "פוסט זה כבר נמחק", "post-already-restored": "פוסט זה כבר שוחזר", @@ -74,25 +74,27 @@ "invalid-file": "קובץ לא תקין", "uploads-are-disabled": "העלאת קבצים אינה מאופשרת", "signature-too-long": "Sorry, your signature cannot be longer than %1 character(s).", - "about-me-too-long": "Sorry, your about me cannot be longer than %1 character(s).", + "about-me-too-long": "מצטערים, דף האודות שלך לא יכול להיות ארוך מ-%1 תווים.", "cant-chat-with-yourself": "לא ניתן לעשות צ'אט עם עצמך!", "chat-restricted": "משתמש זה חסם את הודעות הצ'אט שלו ממשתמשים זרים. המשתמש חייב לעקוב אחריך לפני שתוכל לשוחח איתו בצ'אט", - "chat-disabled": "Chat system disabled", + "chat-disabled": "מערכת הצ'אט לא פעילה", "too-many-messages": "שלחת יותר מדי הודעות, אנא המתן לזמן מה.", - "invalid-chat-message": "Invalid chat message", - "chat-message-too-long": "Chat message is too long", - "cant-edit-chat-message": "You are not allowed to edit this message", - "cant-remove-last-user": "You can't remove the last user", + "invalid-chat-message": "הודעת צ'אט לא תקינה", + "chat-message-too-long": "הודעת הצ'אט ארוכה מדי", + "cant-edit-chat-message": "אתה לא רשאי לערוך הודעה זו", + "cant-remove-last-user": "אינך יכול למחוק את המשתמש האחרון", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "מערכת המוניטין לא פעילה.", "downvoting-disabled": "היכולת להצביע נגד לא פעילה", "not-enough-reputation-to-downvote": "אין לך מספיק מוניטין כדי להוריד את הדירוג של פוסט זה", "not-enough-reputation-to-flag": "אין לך מוניטין מספק על מנת לסמן את הפוסט הזה", - "already-flagged": "You have already flagged this post", + "already-flagged": "כבר סימנת את הפוסט הזה", "reload-failed": "אירעה תקלה ב NodeBB בזמן הטעינה של: \"%1\". המערכת תמשיך להגיש דפים קיימים, אבל כדאי שתשחזר את הפעולות שלך מהפעם האחרונה שהמערכת עבדה כראוי.", "registration-error": "שגיאה בהרשמה", "parse-error": "אירעה שגיאה בעת בעת ניתוח תגובת השרת", - "wrong-login-type-email": "Please use your email to login", - "wrong-login-type-username": "Please use your username to login", - "invite-maximum-met": "You have invited the maximum amount of people (%1 out of %2).", - "no-session-found": "No login session found!" + "wrong-login-type-email": "בבקשה השתמש בכתובת המייל שלך להתחברות", + "wrong-login-type-username": "בבקשה השתמש בשם המשתמש שלך להתחברות", + "invite-maximum-met": "הזמנת את הכמות המירבית של אנשים (%1 מתוך %2).", + "no-session-found": "לא נמצאו סשני התחברות!", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/he/global.json b/public/language/he/global.json index 185b6916fc..f38444f7cc 100644 --- a/public/language/he/global.json +++ b/public/language/he/global.json @@ -49,9 +49,9 @@ "users": "משתמשים", "topics": "נושאים", "posts": "פוסטים", - "best": "Best", - "upvoted": "Upvoted", - "downvoted": "Downvoted", + "best": "הגבוה ביותר", + "upvoted": "הוצבע בעד", + "downvoted": "הוצבע נגד", "views": "צפיות", "reputation": "מוניטין", "read_more": "קרא עוד", @@ -59,15 +59,13 @@ "posted_ago_by_guest": "הפוסט הועלה ב %1 על ידי אורח", "posted_ago_by": "הפוסט עלה ב %1 על ידי %2", "posted_ago": "הפוסט הועלה ב %1", - "posted_in": "posted in %1", - "posted_in_by": "posted in %1 by %2", + "posted_in": "פורסם ב%1", + "posted_in_by": "פורסם ב%1 על ידי %2", "posted_in_ago": "הפוסט הועלה ב %1 %2", "posted_in_ago_by": "הפוסט הועלה ב %1 %2 על ידי %3", - "posted_in_ago_by_guest": "הפוסט הועלה ב %1 %2 על ידי אורח", - "replied_ago": "נענה %1", "user_posted_ago": "%1 העלה פוסט %2", "guest_posted_ago": "אורח העלה פוסט %1", - "last_edited_by_ago": "נערך לאחרונה על ידי %1 %2", + "last_edited_by": "last edited by %1", "norecentposts": "אין פוסטים מהזמן האחרון", "norecenttopics": "אין נושאים מהזמן החרון", "recentposts": "פוסטים אחרונים", @@ -87,6 +85,6 @@ "unfollow": "הפסק לעקוב", "delete_all": "מחק הכל", "map": "מפה", - "sessions": "Login Sessions", - "ip_address": "IP Address" + "sessions": "סשני התחברות", + "ip_address": "כתובת IP" } \ No newline at end of file diff --git a/public/language/he/groups.json b/public/language/he/groups.json index 963efa87a6..31788099a0 100644 --- a/public/language/he/groups.json +++ b/public/language/he/groups.json @@ -8,13 +8,13 @@ "pending.reject": "דחה", "pending.accept_all": "אשר הכל", "pending.reject_all": "דחה הכל", - "pending.none": "There are no pending members at this time", - "invited.none": "There are no invited members at this time", + "pending.none": "אין משתמשים ממתינים כרגע", + "invited.none": "אין משתמשים מוזמנים כרגע", "invited.uninvite": "בטל הזמנה", - "invited.search": "Search for a user to invite to this group", - "invited.notification_title": "You have been invited to join %1", - "request.notification_title": "Group Membership Request from %1", - "request.notification_text": "%1 has requested to become a member of %2", + "invited.search": "חפש משתמש להזמנה לקבוצה זו", + "invited.notification_title": "הוזמנת להצטרף ל%1", + "request.notification_title": "בקשת חברות קבוצתית מ%1", + "request.notification_text": "%1 ביקש להיות חבר ב%2", "cover-save": "שמור", "cover-saving": "שומר", "details.title": "פרטי הקבוצה", @@ -24,27 +24,27 @@ "details.has_no_posts": "חברי הקבוצה הזו לא העלו אף פוסט.", "details.latest_posts": "פוסטים אחרונים", "details.private": "פרטי", - "details.disableJoinRequests": "Disable join requests", + "details.disableJoinRequests": "בטל בקשות הצטרפות", "details.grant": "Grant/Rescind Ownership", - "details.kick": "Kick", + "details.kick": "גרש", "details.owner_options": "ניהול הקבוצה", - "details.group_name": "Group Name", - "details.member_count": "Member Count", - "details.creation_date": "Creation Date", - "details.description": "Description", - "details.badge_preview": "Badge Preview", - "details.change_icon": "Change Icon", - "details.change_colour": "Change Colour", - "details.badge_text": "Badge Text", - "details.userTitleEnabled": "Show Badge", - "details.private_help": "If enabled, joining of groups requires approval from a group owner", + "details.group_name": "שם הקבוצה", + "details.member_count": "כמות משתמשים", + "details.creation_date": "תאריך יצירה", + "details.description": "תיאור", + "details.badge_preview": "תצוגה מקדימה של הסמל", + "details.change_icon": "שנה אייקון", + "details.change_colour": "שנה צבע", + "details.badge_text": "טקסט הסמל", + "details.userTitleEnabled": "הצג סמל", + "details.private_help": "אם מאופשר, הצטרפות לקבוצות דורשות אישור מבעל הקבוצה", "details.hidden": "מוסתר", "details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually", "details.delete_group": "מחק קבוצה", "event.updated": "פרטי הקבוצה עודכנו", "event.deleted": "קבוצת \"%1\" נמחקה", - "membership.accept-invitation": "Accept Invitation", - "membership.invitation-pending": "Invitation Pending", + "membership.accept-invitation": "קבל הזמנה", + "membership.invitation-pending": "הזמנה ממתינה", "membership.join-group": "הצטרף לקבוצה", "membership.leave-group": "עזוב קבוצה", "membership.reject": "דחה", diff --git a/public/language/he/language.json b/public/language/he/language.json index 2c12710abf..203ee90e04 100644 --- a/public/language/he/language.json +++ b/public/language/he/language.json @@ -1,5 +1,5 @@ { - "name": "עברית (ישראל)", + "name": "אנגלית (הממלכה המאוחדת/קנדה)", "code": "he", "dir": "rtl" } \ No newline at end of file diff --git a/public/language/he/modules.json b/public/language/he/modules.json index b3b0c9b462..bf5598adf7 100644 --- a/public/language/he/modules.json +++ b/public/language/he/modules.json @@ -5,9 +5,9 @@ "chat.no_active": "אין לך צ'אטים פעילים", "chat.user_typing": "%1 מקליד ...", "chat.user_has_messaged_you": "ל%1 יש הודעה עבורך.", - "chat.see_all": "See all chats", + "chat.see_all": "צפה בכל הצ'אטים", "chat.no-messages": "אנא בחר נמען על מנת לראות את היסטוריית הצ'אט איתו", - "chat.no-users-in-room": "No users in this room", + "chat.no-users-in-room": "אין משתמשים בחדר הזה", "chat.recent-chats": "צ'אטים אחרונים", "chat.contacts": "אנשי קשר", "chat.message-history": "היסטוריית הודעות", @@ -16,22 +16,22 @@ "chat.seven_days": "7 ימים", "chat.thirty_days": "30 ימים", "chat.three_months": "3 חודשים", - "chat.delete_message_confirm": "Are you sure you wish to delete this message?", - "chat.roomname": "Chat Room %1", - "chat.add-users-to-room": "Add users to room", - "composer.compose": "Compose", + "chat.delete_message_confirm": "האם אתה בטוח שברצונך למחוק הודעה זו?", + "chat.roomname": "צ'אט %1", + "chat.add-users-to-room": "הוסף משתמשים לצ'אט", + "composer.compose": "צור", "composer.show_preview": "הצג תצוגה מקדימה", "composer.hide_preview": "הסתר תצוגה מקדימה", "composer.user_said_in": "%1 אמר ב%2:", "composer.user_said": "%1 אמר:", "composer.discard": "האם למחוק פוסט זה?", - "composer.submit_and_lock": "Submit and Lock", + "composer.submit_and_lock": "אשר ונעל", "composer.toggle_dropdown": "Toggle Dropdown", "composer.uploading": "העלאה %1", "bootbox.ok": "בסדר", "bootbox.cancel": "בטל", "bootbox.confirm": "אשר", - "cover.dragging_title": "Cover Photo Positioning", - "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"", - "cover.saved": "Cover photo image and position saved" + "cover.dragging_title": "מיקום תמונת הנושא", + "cover.dragging_message": "גרור את תמונת הנושא למיקום הרצוי ולחץ על \"שמור\"", + "cover.saved": "תמונת הנושא ומיקומה נשמרו" } \ No newline at end of file diff --git a/public/language/he/notifications.json b/public/language/he/notifications.json index 8e2d9cf165..d60e3513d0 100644 --- a/public/language/he/notifications.json +++ b/public/language/he/notifications.json @@ -13,15 +13,15 @@ "new_message_from": "הודעה חדשה מ %1", "upvoted_your_post_in": "%1 הצביע בעד הפוסט שלך ב %2", "upvoted_your_post_in_dual": "%1 הצביע בעד הפוסט שלך ב %2", - "upvoted_your_post_in_multiple": "%1 and %2 others have upvoted your post in %3.", - "moved_your_post": "%1 has moved your post to %2", - "moved_your_topic": "%1 has moved %2", + "upvoted_your_post_in_multiple": "%1 ו%2 אחרים הצביעו לפוסט שלך ב%3.", + "moved_your_post": "%1 העביר את הפוסט שלך ל%2", + "moved_your_topic": "%1 הוזז ל%2", "favourited_your_post_in": "%1 הוסיף את הפוסט שלך ב %2 למועדפים שלו.", - "favourited_your_post_in_dual": "%1 and %2 have favourited your post in %3.", - "favourited_your_post_in_multiple": "%1 and %2 others have favourited your post in %3.", + "favourited_your_post_in_dual": "%1 ו%2 הוסיפו את הפוסט שלך למועדפים ב%3.", + "favourited_your_post_in_multiple": "%1 ו%2 אחרים הוסיפו את הפוסט שלך למועדפים שלהם ב%3.", "user_flagged_post_in": "%1 דיווח על פוסט ב %2", - "user_flagged_post_in_dual": "%1 and %2 flagged a post in %3", - "user_flagged_post_in_multiple": "%1 and %2 others flagged a post in %3", + "user_flagged_post_in_dual": "%1 ו%2 סימנו פוסט ב%3", + "user_flagged_post_in_multiple": "%1 ו%2 נוספים סימנו פוסט ב%3", "user_posted_to": "%1 פרסם תגובה ל: %2", "user_posted_to_dual": "%1 and %2 have posted replies to: %3", "user_posted_to_multiple": "%1 and %2 others have posted replies to: %3", diff --git a/public/language/he/pages.json b/public/language/he/pages.json index a21fc5185d..8344a86f2f 100644 --- a/public/language/he/pages.json +++ b/public/language/he/pages.json @@ -6,11 +6,12 @@ "popular-month": "נושאים חמים החודש", "popular-alltime": "הנושאים החמים בכל הזמנים", "recent": "נושאים אחרונים", + "flagged-posts": "Flagged Posts", "users/online": "משתמשים מחוברים", "users/latest": "משתמשים אחרונים", "users/sort-posts": "משתמשים עם המונה הגבוה ביותר", "users/sort-reputation": "משתמשים עם המוניטין הגבוה ביותר", - "users/map": "מפת משתמשים", + "users/banned": "Banned Users", "users/search": "חיפוש משתמשים", "notifications": "התראות", "tags": "תגיות", @@ -20,13 +21,13 @@ "reset": "איפוס סיסמה למשתמש", "categories": "קטגוריות", "groups": "קבוצות", - "group": "%1 group", + "group": "קבוצת %1", "chats": "הודעות פרטיות", "chat": "שלחו הודעה פרטית ל%1", "account/edit": "לערוך את \"%1\"", - "account/edit/password": "Editing password of \"%1\"", - "account/edit/username": "Editing username of \"%1\"", - "account/edit/email": "Editing email of \"%1\"", + "account/edit/password": "עורך את הסיסמה של \"%1\"", + "account/edit/username": "עורך את שם המשתמש של \"%1\"", + "account/edit/email": "עורך את כתובת המייל של \"%1\"", "account/following": "אנשים ש%1 עוקב אחריהם", "account/followers": "אנשים שעוקבים אחרי %1", "account/posts": "הודעות שפורסמו על ידי %1", @@ -35,10 +36,10 @@ "account/favourites": "הנושאים האהובים על %1", "account/settings": "הגדרות משתמש", "account/watched": "נושאים שנצפו על ידי %1", - "account/upvoted": "Posts upvoted by %1", - "account/downvoted": "Posts downvoted by %1", - "account/best": "Best posts made by %1", + "account/upvoted": "פוסטים שהוצבעו לטובה על ידי %1", + "account/downvoted": "פוסטים שהוצבעו לרעה על ידי %1", + "account/best": "הפוסטים הטובים ביותר שנוצרו על ידי %1", "maintenance.text": "%1 כרגע תחת עבודות תחזוקה. אנא חזור בזמן מאוחר יותר.", "maintenance.messageIntro": "בנוסף, המנהל השאיר את ההודעה הזו:", - "throttled.text": "%1 is currently unavailable due to excessive load. Please come back another time." + "throttled.text": "%1 לא זמן כעת עקב טעינת יתר. אנא חזור מאוחר יותר." } \ No newline at end of file diff --git a/public/language/he/reset_password.json b/public/language/he/reset_password.json index 854ae07ffe..b3033821b2 100644 --- a/public/language/he/reset_password.json +++ b/public/language/he/reset_password.json @@ -13,5 +13,5 @@ "invalid_email": "מייל שגוי / כתובת מייל לא נמצאה", "password_too_short": "הסיסמה שבחרת קצרה מדי, אנא בחר סיסמה שונה.", "passwords_do_not_match": "הסיסמאות שהזנת אינן תואמות.", - "password_expired": "Your password has expired, please choose a new password" + "password_expired": "הסיסמא שבחרת פגת תוקף, אנא בחר סיסמא חדשה." } \ No newline at end of file diff --git a/public/language/he/search.json b/public/language/he/search.json index 5de6fe4b86..48553e3d68 100644 --- a/public/language/he/search.json +++ b/public/language/he/search.json @@ -1,7 +1,7 @@ { "results_matching": "נמצאו %1 תוצאות עבור החיפוש \"%2\", (%3 שניות)", "no-matches": "לא נמצאו תוצאות", - "advanced-search": "Advanced Search", + "advanced-search": "חיפוש מתקדם", "in": "ב", "titles": "כותרות", "titles-posts": "כותרות ופוסטים", @@ -32,9 +32,9 @@ "category": "קטגוריה", "descending": "בסדר יורד", "ascending": "בסדר עולה", - "save-preferences": "Save preferences", - "clear-preferences": "Clear preferences", - "search-preferences-saved": "Search preferences saved", - "search-preferences-cleared": "Search preferences cleared", - "show-results-as": "Show results as" + "save-preferences": "שמור העדפות", + "clear-preferences": "נקה העדפות", + "search-preferences-saved": "חפש העדפות שנשמרו", + "search-preferences-cleared": "חפש העדפות שנוקו", + "show-results-as": "צפה בתוצאות בתור" } \ No newline at end of file diff --git a/public/language/he/tags.json b/public/language/he/tags.json index 3061057672..496fe5999f 100644 --- a/public/language/he/tags.json +++ b/public/language/he/tags.json @@ -1,7 +1,7 @@ { "no_tag_topics": "אין פוסטים עם תגית זו.", "tags": "תגיות", - "enter_tags_here": "Enter tags here, between %1 and %2 characters each.", + "enter_tags_here": "הכנס תגים כאן, כאשר כל אחד בין %1 ל%2 תווים.", "enter_tags_here_short": "הכנס תגיות", "no_tags": "אין עדיין תגיות." } \ No newline at end of file diff --git a/public/language/he/topic.json b/public/language/he/topic.json index 15dadeb8f0..f68e532e56 100644 --- a/public/language/he/topic.json +++ b/public/language/he/topic.json @@ -13,7 +13,7 @@ "notify_me": "קבל התראה כאשר יש תגובות חדשות בנושא זה", "quote": "ציטוט", "reply": "תגובה", - "reply-as-topic": "Reply as topic", + "reply-as-topic": "הגב כנושא", "guest-login-reply": "התחבר כדי לפרסם תגובה", "edit": "עריכה", "delete": "מחק", @@ -34,7 +34,8 @@ "not_following_topic.message": "לא תקבל הודעות נוספות בנושא זה.", "login_to_subscribe": "אנא הרשם או התחבר על-מנת לעקוב אחר נושא זה.", "markAsUnreadForAll.success": "נושא זה סומן כלא נקרא לכולם.", - "mark_unread": "Mark unread", + "mark_unread": "סמן כלא נקרא", + "mark_unread.success": "Topic marked as unread.", "watch": "עקוב", "unwatch": "הפסק לעקוב", "watch.title": "קבל התראה כאשר יש תגובות חדשות בנושא זה", @@ -50,7 +51,7 @@ "thread_tools.move_all": "הזז הכל", "thread_tools.fork": "שכפל נושא", "thread_tools.delete": "מחק נושא", - "thread_tools.delete-posts": "Delete Posts", + "thread_tools.delete-posts": "מחק פוסטים", "thread_tools.delete_confirm": "אתה בטוח שאתה רוצה למחוק את הנושא הזה?", "thread_tools.restore": "שחזר נושא", "thread_tools.restore_confirm": "אתה בטוח שאתה רוצה לשחזר את הנושא הזה?", @@ -77,7 +78,7 @@ "fork_topic_instruction": "לחץ על הפוסטים שברצונך לשכפל", "fork_no_pids": "לא בחרת אף פוסט!", "fork_success": "הפוסט שוכפל בהצלחה! לחץ כאן על מנת לעבור לפוסט המשוכפל.", - "delete_posts_instruction": "Click the posts you want to delete/purge", + "delete_posts_instruction": "לחץ על הפוסטים שברצונך למחוק", "composer.title_placeholder": "הכנס את כותרת הנושא כאן...", "composer.handle_placeholder": "שם", "composer.discard": "מחק", @@ -100,12 +101,12 @@ "newest_to_oldest": "מהחדש לישן", "most_votes": "הכי הרבה הצבעות", "most_posts": "הכי הרבה פוסטים", - "stale.title": "Create new topic instead?", - "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", - "stale.create": "Create a new topic", - "stale.reply_anyway": "Reply to this topic anyway", - "stale.link_back": "Re: [%1](%2)", - "spam": "Spam", - "offensive": "Offensive", - "custom-flag-reason": "Enter a flagging reason" + "stale.title": "פתח נושא חדש במקום?", + "stale.warning": "הנושא בו אתה מגיב הוא דיי ישן. האם ברצונך לפתוח נושא חדש, ולהזכיר את הנושא הזה בתגובתך?", + "stale.create": "צור נושא חדש", + "stale.reply_anyway": "הגב לנושא זה בכל מקרה", + "link_back": "Re: [%1](%2)", + "spam": "ספאם", + "offensive": "פוגעני", + "custom-flag-reason": "הכנס סיבה מסמנת" } \ No newline at end of file diff --git a/public/language/he/unread.json b/public/language/he/unread.json index 5b4fd51ead..587071777b 100644 --- a/public/language/he/unread.json +++ b/public/language/he/unread.json @@ -5,6 +5,6 @@ "mark_as_read": "סמן כנקרא", "selected": "נבחר", "all": "הכל", - "all_categories": "All categories", + "all_categories": "כל הקטגוריות", "topics_marked_as_read.success": "נושאים שמסומנים כנקרא!" } \ No newline at end of file diff --git a/public/language/he/user.json b/public/language/he/user.json index 06a09d9c8e..f63645e7fb 100644 --- a/public/language/he/user.json +++ b/public/language/he/user.json @@ -6,13 +6,13 @@ "postcount": "כמות פוסטים", "email": "כתובת אימייל", "confirm_email": "אשר מייל", - "ban_account": "Ban Account", - "ban_account_confirm": "Do you really want to ban this user?", - "unban_account": "Unban Account", + "ban_account": "הרחק חשבון", + "ban_account_confirm": "אתה בטוח שברצונך להרחיק את המשתמש הזה?", + "unban_account": "בטל את הרחקת החשבון", "delete_account": "מחק חשבון", "delete_account_confirm": "אתה בטוח שאתה רוצה למחוק את חשבונך?
פעולה זו לא ניתנת לשחזור ולא תוכל לגשת למידע שלך

הזן את שם המשתמש שלך על מנת לאשר שברצונך למחוק את חשבונך.", - "delete_this_account_confirm": "Are you sure you want to delete this account?
This action is irreversible and you will not be able to recover any data

", - "account-deleted": "Account deleted", + "delete_this_account_confirm": "האם אתה בטוח שברצונך למחוק חשבון זה?
אפשרות זו לא ניתנת לביטול ולא תוכל לשחזר אף מידע

", + "account-deleted": "החשבון נמחק", "fullname": "שם מלא", "website": "אתר", "location": "מיקום", @@ -26,20 +26,20 @@ "watched": "נצפה", "followers": "עוקבים", "following": "עוקב אחרי", - "aboutme": "About me", + "aboutme": "עליי", "signature": "חתימה", "birthday": "יום הולדת", "chat": "צ'אט", - "chat_with": "Chat with %1", + "chat_with": "צ'אט עם %1", "follow": "עקוב", "unfollow": "הפסק לעקוב", "more": "עוד", "profile_update_success": "הפרופיל עודכן בהצלחה!", "change_picture": "שנה תמונה", - "change_username": "Change Username", - "change_email": "Change Email", + "change_username": "שנה שם משתמש", + "change_email": "שנה מייל", "edit": "ערוך", - "default_picture": "Default Icon", + "default_picture": "אייקון ברירת מחדל", "uploaded_picture": "התמונה הועלתה", "upload_new_picture": "העלה תמונה חדשה", "upload_new_picture_from_url": "העלה תמונה חדשה מ URL", @@ -54,11 +54,11 @@ "confirm_password": "אמת סיסמה", "password": "סיסמה", "username_taken_workaround": "שם המשתמש שבחרת כבר תפוס, אז שינינו אותו מעט. שם המשתמש שלך כעת הוא %1", - "password_same_as_username": "Your password is the same as your username, please select another password.", + "password_same_as_username": "הסיסמה שלך זהה לשם המשתמש, אנא בחר סיסמה שונה.", "upload_picture": "העלה תמונה", "upload_a_picture": "העלה תמונה", - "remove_uploaded_picture": "Remove Uploaded Picture", - "image_spec": "You may only upload PNG, JPG, or BMP files", + "remove_uploaded_picture": "מחק את התמונה שהועלתה", + "image_spec": "עלייך להעלות רק תמונות מפורמט PNG, JPG או BMP", "settings": "הגדרות", "show_email": "פרסם את כתובת האימייל שלי", "show_fullname": "הצג את שמי המלא", @@ -74,33 +74,33 @@ "settings-require-reload": "Some setting changes require a reload. Click here to reload the page.", "has_no_follower": "למשתמש זה אין עוקבים :(", "follows_no_one": "משתמש זה אינו עוקב אחרי אחרים :(", - "has_no_posts": "This user hasn't posted anything yet.", - "has_no_topics": "This user hasn't posted any topics yet.", - "has_no_watched_topics": "This user hasn't watched any topics yet.", - "has_no_upvoted_posts": "This user hasn't upvoted any posts yet.", - "has_no_downvoted_posts": "This user hasn't downvoted any posts yet.", - "has_no_voted_posts": "This user has no voted posts", + "has_no_posts": "המשתמש טרם יצר פוסטים כלשהם.", + "has_no_topics": "המשתמש טרם יצר נושאים כלשהם.", + "has_no_watched_topics": "המשתמש טרם צפה בנושאים כלשהם.", + "has_no_upvoted_posts": "המשתמש טרם הצביע בעד פוסטים כלשהם.", + "has_no_downvoted_posts": "המשתמש טרם הצביע נגד פוסטים כלשהם.", + "has_no_voted_posts": "למשתמש אין פוסטים שהוצבעו", "email_hidden": "כתובת אימייל מוסתרת", "hidden": "מוסתר", "paginate_description": "Paginate topics and posts instead of using infinite scroll", "topics_per_page": "כמות נושאים בעמוד", "posts_per_page": "כמות פוסטים בעמוד", - "notification_sounds": "Play a sound when you receive a notification", + "notification_sounds": "נגן סאונד כשמתקבלת התראה", "browsing": "הגדרות צפייה", - "open_links_in_new_tab": "Open outgoing links in new tab", + "open_links_in_new_tab": "פתח קישורים חיצוניים בכרטיסייה חדשה", "enable_topic_searching": "הפעל חיפוש בתוך נושא", "topic_search_help": "If enabled, in-topic searching will override the browser's default page search behaviour and allow you to search through the entire topic, instead of what is only shown on screen", - "follow_topics_you_reply_to": "Follow topics that you reply to", - "follow_topics_you_create": "Follow topics you create", - "grouptitle": "Select the group title you would like to display", - "no-group-title": "No group title", - "select-skin": "Select a Skin", - "select-homepage": "Select a Homepage", - "homepage": "Homepage", - "homepage_description": "Select a page to use as the forum homepage or 'None' to use the default homepage.", + "follow_topics_you_reply_to": "עקוב אחרת נושאים שהגבת בהם", + "follow_topics_you_create": "עקוב אחר נושאים שיצרת", + "grouptitle": "בחר את כותרת הקבוצה שברצונך להציג", + "no-group-title": "ללא כותרת לקבוצה", + "select-skin": "בחר מראה", + "select-homepage": "בחר דף בית", + "homepage": "דף הבית", + "homepage_description": "בחר דף שיהיה דף הבית של הפורום או \"כלום\" על מנת להשתמש בדף הבית ברירת המחדל.", "custom_route": "Custom Homepage Route", "custom_route_help": "Enter a route name here, without any preceding slash (e.g. \"recent\", or \"popular\")", "sso.title": "Single Sign-on Services", - "sso.associated": "Associated with", - "sso.not-associated": "Click here to associate with" + "sso.associated": "משוייך עם", + "sso.not-associated": "לחץ כאן כדי לשייך" } \ No newline at end of file diff --git a/public/language/he/users.json b/public/language/he/users.json index 64179f1a30..30c141ca8e 100644 --- a/public/language/he/users.json +++ b/public/language/he/users.json @@ -8,14 +8,13 @@ "users-found-search-took": "%1 משתמשים נמצאו! החיפוש ערך %2 שניות.", "filter-by": "פלטר על-פי", "online-only": "אונליין בלבד", - "picture-only": "תמונה בלבד", - "invite": "Invite", - "invitation-email-sent": "An invitation email has been sent to %1", - "user_list": "User List", - "recent_topics": "Recent Topics", - "popular_topics": "Popular Topics", - "unread_topics": "Unread Topics", + "invite": "הזמן", + "invitation-email-sent": "מייל הזמנה נשלח ל%1", + "user_list": "רשימת משתמשים", + "recent_topics": "נושאים אחרונים", + "popular_topics": "נושאים פופולריים", + "unread_topics": "נושאים שלא נקראו", "categories": "קטגוריות", "tags": "תגיות", - "map": "מפה" + "no-users-found": "No users found!" } \ No newline at end of file diff --git a/public/language/hu/error.json b/public/language/hu/error.json index 4b983ce848..48bc10ed16 100644 --- a/public/language/hu/error.json +++ b/public/language/hu/error.json @@ -14,7 +14,7 @@ "invalid-password": "Érvénytelen jelszó", "invalid-username-or-password": "Kérlek adj meg egy felhasználónevet és egy jelszót", "invalid-search-term": "Érvénytelen keresési feltétel", - "invalid-pagination-value": "Érvénytelen lapozó érték", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Foglalt felhasználónév", "email-taken": "Foglalt e-mail", "email-not-confirmed": "Az e-mail címed még nem lett ellenőrizve, kérlek kattints ide az e-mail címed ellenőrzéséhez!", @@ -83,6 +83,7 @@ "chat-message-too-long": "Chat message is too long", "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "Hírnév funkció kikapcsolva.", "downvoting-disabled": "Leszavazás funkció kikapcsolva", "not-enough-reputation-to-downvote": "Nem rendelkezel elég Hírnév ponttal, hogy leszavazhasd ezt a hozzászólást", @@ -94,5 +95,6 @@ "wrong-login-type-email": "Kérlek az e-mail címedet használd a belépéshez", "wrong-login-type-username": "Kérlek a felhasználónevedet használd a belépéshez", "invite-maximum-met": "You have invited the maximum amount of people (%1 out of %2).", - "no-session-found": "No login session found!" + "no-session-found": "No login session found!", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/hu/global.json b/public/language/hu/global.json index ed9f3efe36..ef85232149 100644 --- a/public/language/hu/global.json +++ b/public/language/hu/global.json @@ -63,11 +63,9 @@ "posted_in_by": "posted in %1 by %2", "posted_in_ago": "posted in %1 %2", "posted_in_ago_by": "posted in %1 %2 by %3", - "posted_in_ago_by_guest": "posted in %1 %2 by Guest", - "replied_ago": "replied %1", "user_posted_ago": "%1 posted %2", "guest_posted_ago": "Guest posted %1", - "last_edited_by_ago": "last edited by %1 %2", + "last_edited_by": "last edited by %1", "norecentposts": "Nincs legutóbbi hozzászólás", "norecenttopics": "Nincs friss téma", "recentposts": "Friss hozzászólások", diff --git a/public/language/hu/pages.json b/public/language/hu/pages.json index ac0e823a2d..8bb9535fac 100644 --- a/public/language/hu/pages.json +++ b/public/language/hu/pages.json @@ -6,11 +6,12 @@ "popular-month": "Popular topics this month", "popular-alltime": "All time popular topics", "recent": "Friss Topikok", + "flagged-posts": "Flagged Posts", "users/online": "Online Users", "users/latest": "Latest Users", "users/sort-posts": "Users with the most posts", "users/sort-reputation": "Users with the most reputation", - "users/map": "User Map", + "users/banned": "Banned Users", "users/search": "User Search", "notifications": "Értesítések", "tags": "Tags", diff --git a/public/language/hu/topic.json b/public/language/hu/topic.json index e9578dfa8d..504121693a 100644 --- a/public/language/hu/topic.json +++ b/public/language/hu/topic.json @@ -35,6 +35,7 @@ "login_to_subscribe": "Please register or log in in order to subscribe to this topic.", "markAsUnreadForAll.success": "Topic marked as unread for all.", "mark_unread": "Mark unread", + "mark_unread.success": "Topic marked as unread.", "watch": "Követés", "unwatch": "Unwatch", "watch.title": "Be notified of new replies in this topic", @@ -104,7 +105,7 @@ "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", "stale.create": "Create a new topic", "stale.reply_anyway": "Reply to this topic anyway", - "stale.link_back": "Re: [%1](%2)", + "link_back": "Re: [%1](%2)", "spam": "Spam", "offensive": "Offensive", "custom-flag-reason": "Enter a flagging reason" diff --git a/public/language/hu/users.json b/public/language/hu/users.json index cbaabd7015..faedac9f35 100644 --- a/public/language/hu/users.json +++ b/public/language/hu/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter By", "online-only": "Online only", - "picture-only": "Picture only", "invite": "Invite", "invitation-email-sent": "An invitation email has been sent to %1", "user_list": "User List", @@ -17,5 +16,5 @@ "unread_topics": "Unread Topics", "categories": "Categories", "tags": "Tags", - "map": "Map" + "no-users-found": "No users found!" } \ No newline at end of file diff --git a/public/language/id/error.json b/public/language/id/error.json index 1bf37aa05d..2d10453279 100644 --- a/public/language/id/error.json +++ b/public/language/id/error.json @@ -14,7 +14,7 @@ "invalid-password": "Password Salah", "invalid-username-or-password": "Mohon spesifikasikan username dan password", "invalid-search-term": "Kata pencarian salah", - "invalid-pagination-value": "Nilai halaman salah", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Username sudah terdaftar", "email-taken": "Email sudah terdaftar", "email-not-confirmed": "Email kamu belum dikonfirmasi, klik disini untuk mengkonfirmasi email.", @@ -83,6 +83,7 @@ "chat-message-too-long": "Chat message is too long", "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "Sistem reputasi ditiadakan.", "downvoting-disabled": "Downvoting ditiadakan", "not-enough-reputation-to-downvote": "Tidak cukup reputation untuk downvote post ini", @@ -94,5 +95,6 @@ "wrong-login-type-email": "Please use your email to login", "wrong-login-type-username": "Please use your username to login", "invite-maximum-met": "You have invited the maximum amount of people (%1 out of %2).", - "no-session-found": "No login session found!" + "no-session-found": "No login session found!", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/id/global.json b/public/language/id/global.json index 55e055b558..7b6b19afa8 100644 --- a/public/language/id/global.json +++ b/public/language/id/global.json @@ -63,11 +63,9 @@ "posted_in_by": "posted in %1 by %2", "posted_in_ago": "dibuat di %1 %2", "posted_in_ago_by": "dibuat di %1 %2 oleh %3", - "posted_in_ago_by_guest": "dibuat di %1 %2 oleh Tamu", - "replied_ago": "dibalas %1", "user_posted_ago": "Dibuat oleh %1 %2", "guest_posted_ago": "Dibuat oleh Tamu %1", - "last_edited_by_ago": "Terakhir diubah oleh %1 %2", + "last_edited_by": "last edited by %1", "norecentposts": "Tidak ada post terbaru", "norecenttopics": "Tidak ada topik terbaru", "recentposts": "Post Terbaru", diff --git a/public/language/id/pages.json b/public/language/id/pages.json index 2c4c22a2fd..3c791e897d 100644 --- a/public/language/id/pages.json +++ b/public/language/id/pages.json @@ -6,11 +6,12 @@ "popular-month": "Popular topics this month", "popular-alltime": "All time popular topics", "recent": "Topik Terkini", + "flagged-posts": "Flagged Posts", "users/online": "Online Users", "users/latest": "Latest Users", "users/sort-posts": "Users with the most posts", "users/sort-reputation": "Users with the most reputation", - "users/map": "User Map", + "users/banned": "Banned Users", "users/search": "User Search", "notifications": "Pemberitahuan", "tags": "Tags", diff --git a/public/language/id/topic.json b/public/language/id/topic.json index 8a054a5265..8040d55ae4 100644 --- a/public/language/id/topic.json +++ b/public/language/id/topic.json @@ -35,6 +35,7 @@ "login_to_subscribe": "Daftar atau login untuk berlangganan topik ini.", "markAsUnreadForAll.success": "Topik ditandai Belum Dibaca seluruhnya", "mark_unread": "Mark unread", + "mark_unread.success": "Topic marked as unread.", "watch": "Pantau", "unwatch": "Batalkan Pantau", "watch.title": "Beritahukan balasan baru untuk topik ini", @@ -104,7 +105,7 @@ "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", "stale.create": "Create a new topic", "stale.reply_anyway": "Reply to this topic anyway", - "stale.link_back": "Re: [%1](%2)", + "link_back": "Re: [%1](%2)", "spam": "Spam", "offensive": "Offensive", "custom-flag-reason": "Enter a flagging reason" diff --git a/public/language/id/users.json b/public/language/id/users.json index 2c6a6c0b40..7beb3ead46 100644 --- a/public/language/id/users.json +++ b/public/language/id/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter By", "online-only": "Online only", - "picture-only": "Picture only", "invite": "Invite", "invitation-email-sent": "An invitation email has been sent to %1", "user_list": "User List", @@ -17,5 +16,5 @@ "unread_topics": "Unread Topics", "categories": "Categories", "tags": "Tags", - "map": "Map" + "no-users-found": "No users found!" } \ No newline at end of file diff --git a/public/language/it/error.json b/public/language/it/error.json index a386680f85..f498726867 100644 --- a/public/language/it/error.json +++ b/public/language/it/error.json @@ -14,7 +14,7 @@ "invalid-password": "Password non valida", "invalid-username-or-password": "Si prega di specificare sia un nome utente che una password", "invalid-search-term": "Termine di ricerca non valido", - "invalid-pagination-value": "Valore di paginazione non valido", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Nome utente già preso", "email-taken": "Email già esistente", "email-not-confirmed": "La tua Email deve essere ancora confermata, per favore clicca qui per confermare la tua Email.", @@ -83,6 +83,7 @@ "chat-message-too-long": "Il messaggio chat è troppo lungo", "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "Il sistema di reputazione è disabilitato.", "downvoting-disabled": "Il Downvoting è disabilitato", "not-enough-reputation-to-downvote": "Non hai i privilegi per votare negativamente questo post", @@ -94,5 +95,6 @@ "wrong-login-type-email": "Per favore usa la tua email per accedere", "wrong-login-type-username": "Per favore usa il tuo nome utente per accedere", "invite-maximum-met": "You have invited the maximum amount of people (%1 out of %2).", - "no-session-found": "No login session found!" + "no-session-found": "No login session found!", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/it/global.json b/public/language/it/global.json index 967d90d1f4..722cad0af7 100644 --- a/public/language/it/global.json +++ b/public/language/it/global.json @@ -63,11 +63,9 @@ "posted_in_by": "posted in %1 by %2", "posted_in_ago": "postato in %1 %2", "posted_in_ago_by": "postato in %1 %2 da %3", - "posted_in_ago_by_guest": "postato in %1 %2 da Ospite", - "replied_ago": "risposto %1", "user_posted_ago": "%1 ha postato %2", "guest_posted_ago": "Ospite ha scritto %1", - "last_edited_by_ago": "ultima modifica di %1 %2", + "last_edited_by": "last edited by %1", "norecentposts": "Nessun Post Recente", "norecenttopics": "Nessun Argomento Recente", "recentposts": "Post Recenti", diff --git a/public/language/it/pages.json b/public/language/it/pages.json index 2675ab7522..836a6d5181 100644 --- a/public/language/it/pages.json +++ b/public/language/it/pages.json @@ -6,11 +6,12 @@ "popular-month": "Discussioni popolari questo mese", "popular-alltime": "Discussioni più popolari di sempre", "recent": "Discussioni Recenti", + "flagged-posts": "Flagged Posts", "users/online": "Utenti Online", "users/latest": "Ultimi Utenti", "users/sort-posts": "Utenti maggiori contributori", "users/sort-reputation": "Utenti con la reputazione più alta", - "users/map": "Mappa Utenti", + "users/banned": "Banned Users", "users/search": "Ricerca Utenti", "notifications": "Notifiche", "tags": "Tags", diff --git a/public/language/it/topic.json b/public/language/it/topic.json index 82eae5fe49..0f7ab7fc1d 100644 --- a/public/language/it/topic.json +++ b/public/language/it/topic.json @@ -35,6 +35,7 @@ "login_to_subscribe": "Si prega di accedere o registrarsi per potersi iscrivere a questa discussione.", "markAsUnreadForAll.success": "Discussione segnata come non letta per tutti.", "mark_unread": "Segna come non letto", + "mark_unread.success": "Topic marked as unread.", "watch": "Osserva", "unwatch": "Non osservare più", "watch.title": "Ricevi notifiche di nuove risposte in questa discussione", @@ -104,7 +105,7 @@ "stale.warning": "Il topic al quale stai rispondendo è abbastanza vecchio. Vorresti piuttosto creare un nuovo topic in riferimento a questo nella tua risposta?", "stale.create": "Crea un topic nuovo", "stale.reply_anyway": "Rispondi a questo topic comunque", - "stale.link_back": "Re: [%1](%2)", + "link_back": "Re: [%1](%2)", "spam": "Spam", "offensive": "Offensivo", "custom-flag-reason": "Inserisci il motivo per flaggare" diff --git a/public/language/it/users.json b/public/language/it/users.json index 5fc544d8ac..b4770d2df5 100644 --- a/public/language/it/users.json +++ b/public/language/it/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "%1 utente(i) trovati! La ricerca ha impiegato %2 secondi.", "filter-by": "Filtra per", "online-only": "Solo online", - "picture-only": "Solo con foto", "invite": "Invita", "invitation-email-sent": "Una mail di invito è stata inviata a %1", "user_list": "Lista utenti", @@ -17,5 +16,5 @@ "unread_topics": "Discussioni non lette", "categories": "Categorie", "tags": "Tag", - "map": "Mappa" + "no-users-found": "No users found!" } \ No newline at end of file diff --git a/public/language/ja/error.json b/public/language/ja/error.json index fc707f9a26..0fd0029421 100644 --- a/public/language/ja/error.json +++ b/public/language/ja/error.json @@ -14,7 +14,7 @@ "invalid-password": "無効なパスワード", "invalid-username-or-password": "ユーザー名とパスワードの両方を指定してください", "invalid-search-term": "無効な検索ワード", - "invalid-pagination-value": "無効な改ページ設定値", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "ユーザー名は既に使われています", "email-taken": "メールアドレスは既に使われています", "email-not-confirmed": "あなたのメールアドレスはまだ確認されていません。メールアドレスを確認するためにはここをクリックしてください。", @@ -83,6 +83,7 @@ "chat-message-too-long": "Chat message is too long", "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "Reputation system is disabled.", "downvoting-disabled": "Downvoting is disabled", "not-enough-reputation-to-downvote": "You do not have enough reputation to downvote this post", @@ -94,5 +95,6 @@ "wrong-login-type-email": "Please use your email to login", "wrong-login-type-username": "Please use your username to login", "invite-maximum-met": "You have invited the maximum amount of people (%1 out of %2).", - "no-session-found": "No login session found!" + "no-session-found": "No login session found!", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/ja/global.json b/public/language/ja/global.json index 80452889c5..97696d28b6 100644 --- a/public/language/ja/global.json +++ b/public/language/ja/global.json @@ -63,11 +63,9 @@ "posted_in_by": "%1に%2に投稿されました", "posted_in_ago": "%1に投稿されました %2", "posted_in_ago_by": "%1 %2に %3 が投稿", - "posted_in_ago_by_guest": "%1に %2 ゲストが投稿", - "replied_ago": "%1 に返答", "user_posted_ago": "%1 が%2に投稿", "guest_posted_ago": "ゲストが%1に投稿", - "last_edited_by_ago": "%1が%2に最終編集", + "last_edited_by": "last edited by %1", "norecentposts": "最近のポストはありません", "norecenttopics": "最近のスレッドはありません", "recentposts": "最近のポスト", diff --git a/public/language/ja/pages.json b/public/language/ja/pages.json index 31a3e6d858..63e409692c 100644 --- a/public/language/ja/pages.json +++ b/public/language/ja/pages.json @@ -6,11 +6,12 @@ "popular-month": "今月人気のトピック", "popular-alltime": "人気のトピック", "recent": "最新スレッド", + "flagged-posts": "Flagged Posts", "users/online": "オンラインのユーザー", "users/latest": "最近のユーザー", "users/sort-posts": "ほとんどの投稿を持つユーザー", "users/sort-reputation": "一番評価の高いユーザー", - "users/map": "ユーザーマップ", + "users/banned": "Banned Users", "users/search": "ユーザーを検索", "notifications": "通知", "tags": "Tags", diff --git a/public/language/ja/topic.json b/public/language/ja/topic.json index d70e73276b..746897fdeb 100644 --- a/public/language/ja/topic.json +++ b/public/language/ja/topic.json @@ -35,6 +35,7 @@ "login_to_subscribe": "このスレッドを購読するためにログインが必要です。", "markAsUnreadForAll.success": "すべてのスレッドを未読にしました。", "mark_unread": "未読として示す", + "mark_unread.success": "Topic marked as unread.", "watch": "ウオッチ", "unwatch": "ウオッチ解除", "watch.title": "新しいポストの通知を受ける", @@ -104,7 +105,7 @@ "stale.warning": "あなたが返信しようとしてるトピックが古いトピックです。新しいトピックを作って、そしてこのトピックが参考として入れた方を勧めます。そうしますか?", "stale.create": "新しいトピックを作ります。", "stale.reply_anyway": "とにかく、このトピックに返信します", - "stale.link_back": "返信: [%1](%2)", + "link_back": "Re: [%1](%2)", "spam": "スパム", "offensive": "攻撃", "custom-flag-reason": "フラグを入れた理由" diff --git a/public/language/ja/users.json b/public/language/ja/users.json index 2fadd17482..feb467657d 100644 --- a/public/language/ja/users.json +++ b/public/language/ja/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "%1人のユーザーを見つけました!(検索まで%2秒掛かりました。)", "filter-by": "フィルタ", "online-only": "オンラインのみ", - "picture-only": "写真のみ", "invite": "招待", "invitation-email-sent": "招待メールが%1に送られました。", "user_list": "ユーザー一覧", @@ -17,5 +16,5 @@ "unread_topics": "未読トピック", "categories": "カテゴリ", "tags": "タグ", - "map": "マプ" + "no-users-found": "No users found!" } \ No newline at end of file diff --git a/public/language/ko/error.json b/public/language/ko/error.json index 544471ec50..cf908e8447 100644 --- a/public/language/ko/error.json +++ b/public/language/ko/error.json @@ -14,7 +14,7 @@ "invalid-password": "올바르지 않은 비밀번호입니다.", "invalid-username-or-password": "사용자 이름과 패스워드를 모두 설정해주세요.", "invalid-search-term": "올바르지 않은 검색어입니다.", - "invalid-pagination-value": "올바르지 않은 페이지입니다.", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "이미 사용 중인 사용자 이름입니다.", "email-taken": "이미 사용 중인 이메일입니다.", "email-not-confirmed": "아직 이메일이 인증되지 않았습니다. 여기를 누르면 인증 메일을 발송할 수 있습니다.", @@ -83,6 +83,7 @@ "chat-message-too-long": "메시지가 너무 깁니다.", "cant-edit-chat-message": "편집 할 수 있는 권한이 없습니다.", "cant-remove-last-user": "마지막 사용자를 삭제할 수 없습니다.", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "인지도 기능이 비활성 상태입니다.", "downvoting-disabled": "비추천 기능이 비활성 상태입니다.", "not-enough-reputation-to-downvote": "인지도가 낮아 이 게시물에 반대할 수 없습니다.", @@ -94,5 +95,6 @@ "wrong-login-type-email": "이메일 주소를 통해 로그인하세요.", "wrong-login-type-username": "사용자명을 통해 로그인하세요.", "invite-maximum-met": "초대가능한 사용자를 모두 초대했습니다. (%2명 중 %1을 초대)", - "no-session-found": "로그인 세션을 찾을 수 없습니다." + "no-session-found": "로그인 세션을 찾을 수 없습니다.", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/ko/global.json b/public/language/ko/global.json index fed619f2da..b112c196fd 100644 --- a/public/language/ko/global.json +++ b/public/language/ko/global.json @@ -63,11 +63,9 @@ "posted_in_by": "posted in %1 by %2", "posted_in_ago": "%2 %1에 작성되었습니다. ", "posted_in_ago_by": "%3님이 %2 %1에 작성했습니다.", - "posted_in_ago_by_guest": "%2, 익명 사용자가 %1에 작성했습니다.", - "replied_ago": "%1에 답글이 작성되었습니다.", "user_posted_ago": "%1님이 %2에 작성했습니다.", "guest_posted_ago": "익명 사용자가 %1에 작성했습니다.", - "last_edited_by_ago": "%1님이 %2에 마지막으로 수정했습니다.", + "last_edited_by": "last edited by %1", "norecentposts": "최근 작성된 게시물이 없습니다.", "norecenttopics": "최근 생성된 생성된 주제가 없습니다.", "recentposts": "최근 게시물", diff --git a/public/language/ko/pages.json b/public/language/ko/pages.json index 012c0e161f..2f9ceae518 100644 --- a/public/language/ko/pages.json +++ b/public/language/ko/pages.json @@ -6,11 +6,12 @@ "popular-month": "인기있는 주제 (월간)", "popular-alltime": "인기있는 주제", "recent": "최근 주제", + "flagged-posts": "Flagged Posts", "users/online": "온라인 사용자", "users/latest": "최근 사용자", "users/sort-posts": "가장 많은 게시물을 작성한 사용자", "users/sort-reputation": "가장 높은 인지도를 가진 사용자", - "users/map": "User Map", + "users/banned": "Banned Users", "users/search": "사용자 검색", "notifications": "알림", "tags": "태그", diff --git a/public/language/ko/topic.json b/public/language/ko/topic.json index 07f3d95ae5..a4110c5839 100644 --- a/public/language/ko/topic.json +++ b/public/language/ko/topic.json @@ -35,6 +35,7 @@ "login_to_subscribe": "이 주제의 알림을 받기 위해서는 로그인해야 합니다.", "markAsUnreadForAll.success": "모든 사용자에 대해 읽지 않음으로 표시했습니다.", "mark_unread": "읽지 않음으로 표시", + "mark_unread.success": "Topic marked as unread.", "watch": "관심 주제", "unwatch": "관심 주제 해제", "watch.title": "이 주제의 새 답글 알리기", @@ -104,7 +105,7 @@ "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", "stale.create": "새로운 주제를 작성", "stale.reply_anyway": "아무튼 이 주제에 답변해주세요.", - "stale.link_back": "Re: [%1](%2)", + "link_back": "Re: [%1](%2)", "spam": "스팸", "offensive": "공격적인", "custom-flag-reason": "신고 사유를 입력하세요." diff --git a/public/language/ko/users.json b/public/language/ko/users.json index 7f397ada71..4436acc08d 100644 --- a/public/language/ko/users.json +++ b/public/language/ko/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "%1명의 사용자를 찾았습니다. 검색 소요 시간 %2 초", "filter-by": "에 의해 분류", "online-only": "온라인 전용", - "picture-only": "사진 전용", "invite": "초대", "invitation-email-sent": "%1님에게 초대 메일을 송신하였습니다.", "user_list": "사용자 목록", @@ -17,5 +16,5 @@ "unread_topics": "읽지 않은 주제", "categories": "카테고리", "tags": "태그", - "map": "Map" + "no-users-found": "No users found!" } \ No newline at end of file diff --git a/public/language/lt/error.json b/public/language/lt/error.json index 8dc2ebaea0..b124eff563 100644 --- a/public/language/lt/error.json +++ b/public/language/lt/error.json @@ -14,7 +14,7 @@ "invalid-password": "Klaidingas slaptažodis", "invalid-username-or-password": "Prašome nurodyti tiek vartotojo vardą, tiek ir slaptažodį", "invalid-search-term": "Neteisingas paieškos terminas", - "invalid-pagination-value": "Klaidinga puslapiavimo reikšmė", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Vartotojo vardas jau užimtas", "email-taken": "El. pašto adresas jau užimtas", "email-not-confirmed": "Jūsų el. paštas nepatvirtintas, prašome paspausti čia norint jį patvirtinti.", @@ -83,6 +83,7 @@ "chat-message-too-long": "Chat message is too long", "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "Reputacijos sistema išjungta.", "downvoting-disabled": "Downvoting yra išjungtas", "not-enough-reputation-to-downvote": "Jūs neturite pakankamai reputacijos balsuoti prieš šį pranešimą", @@ -94,5 +95,6 @@ "wrong-login-type-email": "Prisijungimui prašom naudoti jūsų el. adresą", "wrong-login-type-username": "Prisijungimui prašome naudoti vartotojo vardą", "invite-maximum-met": "You have invited the maximum amount of people (%1 out of %2).", - "no-session-found": "No login session found!" + "no-session-found": "No login session found!", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/lt/global.json b/public/language/lt/global.json index 18c66a7bd3..aca3f94cfe 100644 --- a/public/language/lt/global.json +++ b/public/language/lt/global.json @@ -63,11 +63,9 @@ "posted_in_by": "posted in %1 by %2", "posted_in_ago": "parašyta temoje %1 %2", "posted_in_ago_by": "parašyta temoje %1 %2 nuo %3", - "posted_in_ago_by_guest": "parašyta temoje %1 %2 nuo svečio", - "replied_ago": "atsakyta %1", "user_posted_ago": "%1 parašė %2", "guest_posted_ago": "Svečias parašė %1", - "last_edited_by_ago": "paskutinį kartą redagavo %1 %2", + "last_edited_by": "last edited by %1", "norecentposts": "Paskutinių pranešimų nėra.", "norecenttopics": "Paskutinių temų nėra", "recentposts": "Paskutiniai pranešimai", diff --git a/public/language/lt/pages.json b/public/language/lt/pages.json index 26800020ea..7e87980eb1 100644 --- a/public/language/lt/pages.json +++ b/public/language/lt/pages.json @@ -6,11 +6,12 @@ "popular-month": "Popular topics this month", "popular-alltime": "All time popular topics", "recent": "Paskutinės temos", + "flagged-posts": "Flagged Posts", "users/online": "Online Users", "users/latest": "Latest Users", "users/sort-posts": "Users with the most posts", "users/sort-reputation": "Users with the most reputation", - "users/map": "User Map", + "users/banned": "Banned Users", "users/search": "User Search", "notifications": "Pranešimai", "tags": "Žymos", diff --git a/public/language/lt/topic.json b/public/language/lt/topic.json index 08fc7a4078..2972a90118 100644 --- a/public/language/lt/topic.json +++ b/public/language/lt/topic.json @@ -35,6 +35,7 @@ "login_to_subscribe": "Norėdami prenumeruoti šią temą, prašome prisiregistruoti arba prisijungti.", "markAsUnreadForAll.success": "Tema visiems vartotojams pažymėta kaip neskaityta.", "mark_unread": "Mark unread", + "mark_unread.success": "Topic marked as unread.", "watch": "Žiūrėti", "unwatch": "Nebesekti", "watch.title": "Gauti pranešimą apie naujus įrašus šioje temoje", @@ -104,7 +105,7 @@ "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", "stale.create": "Create a new topic", "stale.reply_anyway": "Reply to this topic anyway", - "stale.link_back": "Re: [%1](%2)", + "link_back": "Re: [%1](%2)", "spam": "Spam", "offensive": "Offensive", "custom-flag-reason": "Enter a flagging reason" diff --git a/public/language/lt/users.json b/public/language/lt/users.json index a04cdd5093..e349dc32b6 100644 --- a/public/language/lt/users.json +++ b/public/language/lt/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "Rasta %1 vartotojas(-ai)! Paieška užtruko %2 sekundes.", "filter-by": "Filtruoti pagal", "online-only": "Tik prisijunge", - "picture-only": "Tik paveikslėlis", "invite": "Pakviesti", "invitation-email-sent": "Pakvietimas el.paštu buvo išsiųstas į %1!", "user_list": "Vartotojų sąrašas", @@ -17,5 +16,5 @@ "unread_topics": "Neperskaitytos temos", "categories": "Kategorijos", "tags": "Žymos", - "map": "Žemėlapis" + "no-users-found": "No users found!" } \ No newline at end of file diff --git a/public/language/ms/error.json b/public/language/ms/error.json index 79de80fde9..176782b812 100644 --- a/public/language/ms/error.json +++ b/public/language/ms/error.json @@ -14,7 +14,7 @@ "invalid-password": "Kata laluan salah!", "invalid-username-or-password": "Sila tentukan kedua-dua nama pengguna dan kata laluan", "invalid-search-term": "Terma pencarian tak sah", - "invalid-pagination-value": "Nilai halaman tak sah", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Nama pengguna telah digunakan", "email-taken": "Emel telah digunakan", "email-not-confirmed": "Emel anda belum disahkan lagi, sila klik sini untuk mengesahkan emel anda.", @@ -83,6 +83,7 @@ "chat-message-too-long": "Mesej borak terlalu panjang", "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "Sistem reputasi dilumpuhkan.", "downvoting-disabled": "Undi turun dilumpuhkan", "not-enough-reputation-to-downvote": "Anda tidak mempunyai reputasi mencukupi untuk mengundi turun kiriman ini", @@ -94,5 +95,6 @@ "wrong-login-type-email": "Sila guna emel anda untuk log masuk", "wrong-login-type-username": "Sila guna nama pengguna anda untuk log masuk", "invite-maximum-met": "You have invited the maximum amount of people (%1 out of %2).", - "no-session-found": "No login session found!" + "no-session-found": "No login session found!", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/ms/global.json b/public/language/ms/global.json index ffdccaf8cf..866e0f17f2 100644 --- a/public/language/ms/global.json +++ b/public/language/ms/global.json @@ -63,11 +63,9 @@ "posted_in_by": "dikirim pada %1 oleh %2", "posted_in_ago": "dikirim pada %1 %2", "posted_in_ago_by": "dikirim pada %1 %2 oleh %3", - "posted_in_ago_by_guest": "dikirim pada %1 %2 oleh pelawat", - "replied_ago": "dibalas %1", "user_posted_ago": "%1 mengirim %2", "guest_posted_ago": "Pelawat mengirim %1", - "last_edited_by_ago": "terakhir disunting oleh %1 %2", + "last_edited_by": "last edited by %1", "norecentposts": "Tiada kiriman terkini", "norecenttopics": "Tiada topik terkini", "recentposts": "Kiriman terkini", diff --git a/public/language/ms/pages.json b/public/language/ms/pages.json index 022c5386d3..57368ebc06 100644 --- a/public/language/ms/pages.json +++ b/public/language/ms/pages.json @@ -6,11 +6,12 @@ "popular-month": "Topik Popular Bulan Ini", "popular-alltime": "Topik Popular Sepanjang Masa", "recent": "Topik Baru", + "flagged-posts": "Flagged Posts", "users/online": "Pengguna Atas Talian", "users/latest": "Pengguna Terkini", "users/sort-posts": "Pengguna Mengikut Kiriman Terbanyak", "users/sort-reputation": "Pengguna Mengikut Reputasi Terbanyak", - "users/map": "Peta Pengguna", + "users/banned": "Banned Users", "users/search": "Carian Pengguna", "notifications": "Makluman", "tags": "Tag", diff --git a/public/language/ms/topic.json b/public/language/ms/topic.json index 9e6ed91ffe..057b3de204 100644 --- a/public/language/ms/topic.json +++ b/public/language/ms/topic.json @@ -35,6 +35,7 @@ "login_to_subscribe": "Sila daftar atau log masuk untuk melanggani topik ini", "markAsUnreadForAll.success": "Topik ditanda sebagai belum dibaca untuk semua", "mark_unread": "Mark unread", + "mark_unread.success": "Topic marked as unread.", "watch": "Lihat", "unwatch": "Batal lihat", "watch.title": "Akan dimaklumkan sekiranya ada balasan dalam topik ini", @@ -104,7 +105,7 @@ "stale.warning": "Topik yang anda nak balas agak lapuk. Adakah anda ingin buka topik baru dan rujukkan topik ini dalam balasan anda?", "stale.create": "Buka topik baru", "stale.reply_anyway": "Tetap balas topik ini", - "stale.link_back": "Bls: [%1](%2)", + "link_back": "Re: [%1](%2)", "spam": "Spam", "offensive": "Menyinggung", "custom-flag-reason": "Nyatakan alasan anda" diff --git a/public/language/ms/users.json b/public/language/ms/users.json index 92f95319c7..feb8d17edc 100644 --- a/public/language/ms/users.json +++ b/public/language/ms/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "%1 pengguna dijumpai! Pencarian ambil masa %2 saat.", "filter-by": "Saring dengan", "online-only": "Atas talian sahaja", - "picture-only": "Gambar sahaja", "invite": "Jemput", "invitation-email-sent": "Emel jemputan telah dihantar ke %1", "user_list": "Senarai Pengguna", @@ -17,5 +16,5 @@ "unread_topics": "Topik Belum Dibaca", "categories": "Kategori", "tags": "Tag", - "map": "Peta" + "no-users-found": "No users found!" } \ No newline at end of file diff --git a/public/language/nb/error.json b/public/language/nb/error.json index 2ec8f2ecc8..400ac52998 100644 --- a/public/language/nb/error.json +++ b/public/language/nb/error.json @@ -14,7 +14,7 @@ "invalid-password": "Ugyldig passord", "invalid-username-or-password": "Vennligst spesifiser både et brukernavn og passord", "invalid-search-term": "Ugyldig søkeord", - "invalid-pagination-value": "Ugyldig pagineringsverdi", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Brukernavn opptatt", "email-taken": "E-post opptatt", "email-not-confirmed": "E-posten din har ikke blitt bekreftet enda, vennligst klikk for å bekrefte din e-post.", @@ -83,6 +83,7 @@ "chat-message-too-long": "Samtalemeldingen er for lang", "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "Ryktesystemet er deaktivert.", "downvoting-disabled": "Nedstemming er deaktivert", "not-enough-reputation-to-downvote": "Du har ikke nok rykte til å nedstemme det innlegget", @@ -94,5 +95,6 @@ "wrong-login-type-email": "Vennligst benytt e-posten din for å logge inn", "wrong-login-type-username": "Vennligst benytt brukernavnet ditt for å logge inn", "invite-maximum-met": "You have invited the maximum amount of people (%1 out of %2).", - "no-session-found": "No login session found!" + "no-session-found": "No login session found!", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/nb/global.json b/public/language/nb/global.json index 31141205e8..d2b6a90c7d 100644 --- a/public/language/nb/global.json +++ b/public/language/nb/global.json @@ -63,11 +63,9 @@ "posted_in_by": "posted in %1 by %2", "posted_in_ago": "skrevet i %1 %2", "posted_in_ago_by": "skrevet i %1 %2 av %3", - "posted_in_ago_by_guest": "skrevet i %1 %2 av Gjest", - "replied_ago": "svarte %1", "user_posted_ago": "%1 skrev %2", "guest_posted_ago": "Gjest skrev den %1", - "last_edited_by_ago": "sist endret av %1 %2", + "last_edited_by": "last edited by %1", "norecentposts": "Ingen nylige innlegg", "norecenttopics": "Ingen nye emner", "recentposts": "Seneste innlegg", diff --git a/public/language/nb/pages.json b/public/language/nb/pages.json index 453f4934ff..a586c6d11f 100644 --- a/public/language/nb/pages.json +++ b/public/language/nb/pages.json @@ -6,11 +6,12 @@ "popular-month": "Populære emner denne måneden", "popular-alltime": "Mest populære emner for all tid", "recent": "Nylige emner", + "flagged-posts": "Flagged Posts", "users/online": "Påloggede Brukere", "users/latest": "Nyeste Brukere", "users/sort-posts": "Brukere med flest innlegg", "users/sort-reputation": "Brukere med best rykte", - "users/map": "Brukerkart", + "users/banned": "Banned Users", "users/search": "Brukersøk", "notifications": "Varsler", "tags": "Emneord", diff --git a/public/language/nb/topic.json b/public/language/nb/topic.json index 0e3f9c4acb..5a31251834 100644 --- a/public/language/nb/topic.json +++ b/public/language/nb/topic.json @@ -35,6 +35,7 @@ "login_to_subscribe": "Vennligst registrer deg eller logg inn for å abonnere på denne tråden.", "markAsUnreadForAll.success": "Tråd markert som ulest for alle.", "mark_unread": "Mark unread", + "mark_unread.success": "Topic marked as unread.", "watch": "Overvåk", "unwatch": "Ikke overvåk", "watch.title": "Bli varslet om nye svar i dette emnet", @@ -104,7 +105,7 @@ "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", "stale.create": "Create a new topic", "stale.reply_anyway": "Reply to this topic anyway", - "stale.link_back": "Re: [%1](%2)", + "link_back": "Re: [%1](%2)", "spam": "Spam", "offensive": "Offensive", "custom-flag-reason": "Enter a flagging reason" diff --git a/public/language/nb/users.json b/public/language/nb/users.json index 23898fad37..0cfb6f31fa 100644 --- a/public/language/nb/users.json +++ b/public/language/nb/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "%1 bruker(e) funnet. Søket tok %2 sekunder.", "filter-by": "Filtrer etter", "online-only": "Bare påloggede", - "picture-only": "Bare bilde", "invite": "Invitér", "invitation-email-sent": "En invitasjons-epost ble sendt til %1", "user_list": "Brukerliste", @@ -17,5 +16,5 @@ "unread_topics": "Uleste emner", "categories": "Kategorier", "tags": "Tagger", - "map": "Kart" + "no-users-found": "No users found!" } \ No newline at end of file diff --git a/public/language/nl/error.json b/public/language/nl/error.json index 9ac1bc2260..6c12e80542 100644 --- a/public/language/nl/error.json +++ b/public/language/nl/error.json @@ -14,7 +14,7 @@ "invalid-password": "Ongeldig wachtwoord", "invalid-username-or-password": "Geef zowel een gebruikersnaam als wachtwoord op", "invalid-search-term": "Ongeldig zoekopdracht, een of meerdere termen", - "invalid-pagination-value": "Ongeldig waarde voor paginering", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Gebruikersnaam is al in gebruik ", "email-taken": "E-mailadres is al eens eerder gebruikt", "email-not-confirmed": "Het e-mailadres van dit account is nog niet bevestigd. Klik hier om het e-mailadres te bevestigen en de registratie af te ronden.", @@ -83,6 +83,7 @@ "chat-message-too-long": "Het chatbericht is te lang", "cant-edit-chat-message": "Het is niet toegestaan om dit bericht aan te passen", "cant-remove-last-user": "Je kan de laatste gebruiker niet verwijderen", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "Reputatie systeem is uitgeschakeld.", "downvoting-disabled": "Negatief stemmen staat uitgeschakeld.", "not-enough-reputation-to-downvote": "Dit gebruikersaccount beschikt over onvoldoende reputatie om een negatieve stem uit te mogen brengen.", @@ -94,5 +95,6 @@ "wrong-login-type-email": "Gebruik het e-mailadres voor aanmelden", "wrong-login-type-username": "Geef de gebruikersnaam voor aanmelden", "invite-maximum-met": "Je heb het maximum aantal mensen uitgenodigd (%1 van de %2).", - "no-session-found": "Geen login sessie gevonden!" + "no-session-found": "Geen login sessie gevonden!", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/nl/global.json b/public/language/nl/global.json index 92a3a90380..4940d479ec 100644 --- a/public/language/nl/global.json +++ b/public/language/nl/global.json @@ -63,11 +63,9 @@ "posted_in_by": "geplaatst in %1 door %2", "posted_in_ago": "geplaatst in %1 %2", "posted_in_ago_by": "geplaatst in %1 %2 door %3", - "posted_in_ago_by_guest": "geplaatst in %1 %2 door gast", - "replied_ago": "gereageerd %1", "user_posted_ago": "%1 plaatste %2", "guest_posted_ago": "Gast plaatste %1", - "last_edited_by_ago": "voor het laatst aangepast door %1 %2", + "last_edited_by": "last edited by %1", "norecentposts": "Geen recente berichten", "norecenttopics": "Geen recente onderwerpen", "recentposts": "Recente berichten", diff --git a/public/language/nl/pages.json b/public/language/nl/pages.json index 0c4a7eb9c5..1e709dec0e 100644 --- a/public/language/nl/pages.json +++ b/public/language/nl/pages.json @@ -6,11 +6,12 @@ "popular-month": "De populaire onderwerpen van deze maand", "popular-alltime": "De populaire onderwerpen", "recent": "Recente onderwerpen", + "flagged-posts": "Flagged Posts", "users/online": "Online Gebruikers", "users/latest": "Meest recente gebruikers", "users/sort-posts": "Gebruikers met de meeste berichten", "users/sort-reputation": "Gebruikers met de meeste reputatie", - "users/map": "Gebruikersmap", + "users/banned": "Banned Users", "users/search": "Zoek Gebruiker", "notifications": "Notificaties", "tags": "Tags", diff --git a/public/language/nl/topic.json b/public/language/nl/topic.json index d5c3666bcd..c1202c9e9e 100644 --- a/public/language/nl/topic.json +++ b/public/language/nl/topic.json @@ -35,6 +35,7 @@ "login_to_subscribe": "Log in or registreer om dit onderwerp te volgen.", "markAsUnreadForAll.success": "Onderwerp is voor iedereen als 'gelezen' gemarkeerd.", "mark_unread": "Ongelezen markeren", + "mark_unread.success": "Topic marked as unread.", "watch": "Volgen", "unwatch": "Niet meer volgen", "watch.title": "Krijg meldingen van nieuwe reacties op dit onderwerp", @@ -104,7 +105,7 @@ "stale.warning": "Het onderwerp waar je op antwoord is vrij oud. Zou je graag een nieuw onderwerp maken met een referentie naar dit onderwerp in je antwoord?", "stale.create": "Maak een nieuw onderwerp", "stale.reply_anyway": "Antwoord toch op dit onderwerp", - "stale.link_back": "Re: [%1](%2)", + "link_back": "Re: [%1](%2)", "spam": "Spam", "offensive": "Onbeleefd", "custom-flag-reason": "Geef een reden voor de melding." diff --git a/public/language/nl/users.json b/public/language/nl/users.json index 275b0b4d5f..a00d246ab7 100644 --- a/public/language/nl/users.json +++ b/public/language/nl/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "%1 gebruiker(s) gevonden! Zoekactie duurde %2 seconden.", "filter-by": "Filter op", "online-only": "Online ", - "picture-only": "Alleen een afbeelding", "invite": "Uitnodigen", "invitation-email-sent": "Een uitnodiging email is verstuurd naar %1 ", "user_list": "Ledenlijst", @@ -17,5 +16,5 @@ "unread_topics": "Ongelezen onderwerpen", "categories": "Categorieën", "tags": "Tags", - "map": "Map" + "no-users-found": "No users found!" } \ No newline at end of file diff --git a/public/language/pl/error.json b/public/language/pl/error.json index 22baba3f27..1e7438c4a2 100644 --- a/public/language/pl/error.json +++ b/public/language/pl/error.json @@ -14,7 +14,7 @@ "invalid-password": "Błędne Hasło", "invalid-username-or-password": "Proszę podać nazwę użytkownika i hasło", "invalid-search-term": "Błędne wyszukiwane wyrażenie", - "invalid-pagination-value": "Błędna wartość paginacji", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Login zajęty", "email-taken": "Email zajęty", "email-not-confirmed": "Twój email nie został jeszcze potwierdzony. Proszę kliknąć tutaj by go potwierdzić.", @@ -83,6 +83,7 @@ "chat-message-too-long": "Wiadomość jest zbyt długa", "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "System reputacji jest wyłączony.", "downvoting-disabled": "Negatywna ocena postów jest wyłączona", "not-enough-reputation-to-downvote": "Masz za mało reputacji, aby negatywnie ocenić ten post", @@ -94,5 +95,6 @@ "wrong-login-type-email": "Zaloguj się używając adresu email", "wrong-login-type-username": "Zaloguj się używając nazwy użytkownika", "invite-maximum-met": "You have invited the maximum amount of people (%1 out of %2).", - "no-session-found": "No login session found!" + "no-session-found": "No login session found!", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/pl/global.json b/public/language/pl/global.json index 9669da3753..03bd0ac844 100644 --- a/public/language/pl/global.json +++ b/public/language/pl/global.json @@ -63,11 +63,9 @@ "posted_in_by": "posted in %1 by %2", "posted_in_ago": "wysłany w %1 %2", "posted_in_ago_by": "wysłany w %1 %2 przez %3", - "posted_in_ago_by_guest": "wysłany w %1 %2 przez Gościa", - "replied_ago": "odpowiedziano %1", "user_posted_ago": "%1 wysłał %2", "guest_posted_ago": "Gość wysłał %1", - "last_edited_by_ago": "ostatnio zmieniany przez %1 %2", + "last_edited_by": "last edited by %1", "norecentposts": "Brak ostatnich postów", "norecenttopics": "Brak Ostatnich Tematów", "recentposts": "Ostatnie posty", diff --git a/public/language/pl/pages.json b/public/language/pl/pages.json index 062e7c369a..a2550c5a43 100644 --- a/public/language/pl/pages.json +++ b/public/language/pl/pages.json @@ -6,11 +6,12 @@ "popular-month": "Tematy popularne w tym miesiącu", "popular-alltime": "Wszystkie popularne tematy", "recent": "Ostatnie Tematy", + "flagged-posts": "Flagged Posts", "users/online": "Dostępni Użytkownicy", "users/latest": "Nowi Użytkownicy", "users/sort-posts": "Użytkownicy z największą liczbą postów", "users/sort-reputation": "Użytkownicy z najwyższą reputacją", - "users/map": "Mapa Użytkowników", + "users/banned": "Banned Users", "users/search": "Wyszukiwanie Użytkownków", "notifications": "Powiadomienia", "tags": "Tagi", diff --git a/public/language/pl/topic.json b/public/language/pl/topic.json index 6ea32ff6ef..6280c7ddd0 100644 --- a/public/language/pl/topic.json +++ b/public/language/pl/topic.json @@ -35,6 +35,7 @@ "login_to_subscribe": "Zaloguj się, aby subskrybować ten temat.", "markAsUnreadForAll.success": "Temat oznaczony jako nieprzeczytany dla wszystkich.", "mark_unread": "Mark unread", + "mark_unread.success": "Topic marked as unread.", "watch": "Obserwuj", "unwatch": "Nie obserwuj", "watch.title": "Otrzymuj powiadomienia o nowych odpowiedziach w tym temacie", @@ -104,7 +105,7 @@ "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", "stale.create": "Create a new topic", "stale.reply_anyway": "Reply to this topic anyway", - "stale.link_back": "Re: [%1](%2)", + "link_back": "Re: [%1](%2)", "spam": "Spam", "offensive": "Offensive", "custom-flag-reason": "Enter a flagging reason" diff --git a/public/language/pl/users.json b/public/language/pl/users.json index d587a4957e..f21c62380a 100644 --- a/public/language/pl/users.json +++ b/public/language/pl/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "Znaleziono %1 użytkownik(ów). Szukanie zajęło %2 sek.", "filter-by": "Filtruj", "online-only": "Tylko dostępny", - "picture-only": "Tylko ze zdjęciem", "invite": "Zaproś", "invitation-email-sent": "Email z zaproszeniem został wysłany do %1", "user_list": "Lista Użytkowników", @@ -17,5 +16,5 @@ "unread_topics": "Nieprzeczytane Tematy", "categories": "Kategorie", "tags": "Tagi", - "map": "Mapa" + "no-users-found": "No users found!" } \ No newline at end of file diff --git a/public/language/pt_BR/error.json b/public/language/pt_BR/error.json index 26d04b2dd2..59ae2a5047 100644 --- a/public/language/pt_BR/error.json +++ b/public/language/pt_BR/error.json @@ -14,7 +14,7 @@ "invalid-password": "Senha Inválida", "invalid-username-or-password": "Por favor especifique ambos nome de usuário e senha", "invalid-search-term": "Termo de pesquisa inválido", - "invalid-pagination-value": "Valor de paginação inválido", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Nome de usuário já existe", "email-taken": "Email já cadastrado", "email-not-confirmed": "O seu email ainda não foi confirmado, por favor clique aqui para confirmar seu email.", @@ -83,6 +83,7 @@ "chat-message-too-long": "A mensagem de chat é muito longa", "cant-edit-chat-message": "Você não tem permissão para editar esta mensagem", "cant-remove-last-user": "Você não pode excluir o último usuário", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "O sistema de reputação está desabilitado.", "downvoting-disabled": "Negativação está desabilitada", "not-enough-reputation-to-downvote": "Você não possui reputação suficiente para negativar este post", @@ -94,5 +95,6 @@ "wrong-login-type-email": "Por favor use seu email para fazer login", "wrong-login-type-username": "Por favor use o seu nome de usuário para fazer login", "invite-maximum-met": "Você já convidou o número máximo de pessoas (%1 de %2).", - "no-session-found": "Nenhuma sessão de login encontrada!" + "no-session-found": "Nenhuma sessão de login encontrada!", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/pt_BR/global.json b/public/language/pt_BR/global.json index 6b59e54553..fe803d80f6 100644 --- a/public/language/pt_BR/global.json +++ b/public/language/pt_BR/global.json @@ -63,11 +63,9 @@ "posted_in_by": "postado em %1 por %2", "posted_in_ago": "postado em %1 %2", "posted_in_ago_by": "postado em %1 %2 por %3", - "posted_in_ago_by_guest": "postado em %1 %2 por Visitante", - "replied_ago": "respondeu %1", "user_posted_ago": "%1 postou %2", "guest_posted_ago": "Visitante postou %1", - "last_edited_by_ago": "última vez editado por %1 %2", + "last_edited_by": "last edited by %1", "norecentposts": "Nenhum Post Recente", "norecenttopics": "Sem Tópicos Recentes", "recentposts": "Posts Recentes", diff --git a/public/language/pt_BR/pages.json b/public/language/pt_BR/pages.json index f3dc8d1779..cbbecbf80b 100644 --- a/public/language/pt_BR/pages.json +++ b/public/language/pt_BR/pages.json @@ -6,11 +6,12 @@ "popular-month": "Tópicos populares deste mês", "popular-alltime": "Tópicos populares de todos os tempos", "recent": "Tópicos Recentes", + "flagged-posts": "Flagged Posts", "users/online": "Usuários Online", "users/latest": "Últimos Usuários", "users/sort-posts": "Usuários com mais posts", "users/sort-reputation": "Usuários com maior reputação", - "users/map": "Mapa de Usuários", + "users/banned": "Banned Users", "users/search": "Pesquisa de Usuários", "notifications": "Notificações", "tags": "Tags", diff --git a/public/language/pt_BR/topic.json b/public/language/pt_BR/topic.json index d354fa3433..0601402aa0 100644 --- a/public/language/pt_BR/topic.json +++ b/public/language/pt_BR/topic.json @@ -35,6 +35,7 @@ "login_to_subscribe": "Por favor se cadastre ou entre para assinar à este tópico.", "markAsUnreadForAll.success": "Tópico marcado como não lido para todos.", "mark_unread": "Marcar como não lidas", + "mark_unread.success": "Topic marked as unread.", "watch": "Acompanhar", "unwatch": "Desacompanhar", "watch.title": "Seja notificado sobre novas respostas neste tópico", @@ -104,7 +105,7 @@ "stale.warning": "O tópico que você está respondendo é bem antigo. Você gostaria de criar um novo tópico ao invés disso, e referenciá-lo em sua resposta?", "stale.create": "Criar um novo tópico", "stale.reply_anyway": "Responder à este tópico assim mesmo", - "stale.link_back": "Re: [%1](%2)", + "link_back": "Re: [%1](%2)", "spam": "Spam", "offensive": "Ofensivo", "custom-flag-reason": "Informe um motivo para a sinalização" diff --git a/public/language/pt_BR/users.json b/public/language/pt_BR/users.json index 63e5b4cbf4..635d5fdb34 100644 --- a/public/language/pt_BR/users.json +++ b/public/language/pt_BR/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "%1 usuário(s) encontrado(s)! A pesquisa levou %2 segundos.", "filter-by": "Filtrar Por", "online-only": "Apenas Online", - "picture-only": "Apenas foto", "invite": "Convidar", "invitation-email-sent": "Um email de convite foi enviado para %1", "user_list": "Lista de Usuários", @@ -17,5 +16,5 @@ "unread_topics": "Topicos Não-Lidos", "categories": "Categorias", "tags": "Tags", - "map": "Mapa" + "no-users-found": "No users found!" } \ No newline at end of file diff --git a/public/language/ro/error.json b/public/language/ro/error.json index e75c08a521..82407bac70 100644 --- a/public/language/ro/error.json +++ b/public/language/ro/error.json @@ -14,7 +14,7 @@ "invalid-password": "Parolă Invalidă", "invalid-username-or-password": "Te rugăm să specifici atât un nume de utilizator cât si o parolă", "invalid-search-term": "Cuvânt de căutare invalid", - "invalid-pagination-value": "Date paginație invalide", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Numele de utilizator este deja folosit", "email-taken": "Adresa de email este deja folostă", "email-not-confirmed": "Adresa ta de email nu a fost inca confirmata, click aici ca sa o confirmi.", @@ -83,6 +83,7 @@ "chat-message-too-long": "Chat message is too long", "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "Sistemul de reputație este dezactivat.", "downvoting-disabled": "Votarea negativă este dezactivată", "not-enough-reputation-to-downvote": "Nu ai destulă reputație pentru a vota negativ acest post.", @@ -94,5 +95,6 @@ "wrong-login-type-email": "Please use your email to login", "wrong-login-type-username": "Please use your username to login", "invite-maximum-met": "You have invited the maximum amount of people (%1 out of %2).", - "no-session-found": "No login session found!" + "no-session-found": "No login session found!", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/ro/global.json b/public/language/ro/global.json index 0163db3109..280a6dfb2b 100644 --- a/public/language/ro/global.json +++ b/public/language/ro/global.json @@ -63,11 +63,9 @@ "posted_in_by": "postat în %1 de %2", "posted_in_ago": "postat în %1 %2", "posted_in_ago_by": "postat în %1 %2 de %3", - "posted_in_ago_by_guest": "postat în %1 %2 de Vizitator", - "replied_ago": "a răspuns %1", "user_posted_ago": "%1 a postat %2", "guest_posted_ago": "Vizitator a postat %1", - "last_edited_by_ago": "ultima editare de %1 %2", + "last_edited_by": "last edited by %1", "norecentposts": "Nici un mesaj recent", "norecenttopics": "Nici un subiect recent", "recentposts": "Mesaje Recente", diff --git a/public/language/ro/pages.json b/public/language/ro/pages.json index f655488915..13a8e26fb1 100644 --- a/public/language/ro/pages.json +++ b/public/language/ro/pages.json @@ -6,11 +6,12 @@ "popular-month": "Popular topics this month", "popular-alltime": "All time popular topics", "recent": "Subiecte Noi", + "flagged-posts": "Flagged Posts", "users/online": "Online Users", "users/latest": "Latest Users", "users/sort-posts": "Users with the most posts", "users/sort-reputation": "Users with the most reputation", - "users/map": "User Map", + "users/banned": "Banned Users", "users/search": "User Search", "notifications": "Notificări", "tags": "Taguri", diff --git a/public/language/ro/topic.json b/public/language/ro/topic.json index e24bd88060..e6186c8225 100644 --- a/public/language/ro/topic.json +++ b/public/language/ro/topic.json @@ -35,6 +35,7 @@ "login_to_subscribe": "Te rugăm să te înregistrezi sau să te autentifici ca să te poți abona la acest subiect.", "markAsUnreadForAll.success": "Subiect marcat ca citit pentru toți.", "mark_unread": "Mark unread", + "mark_unread.success": "Topic marked as unread.", "watch": "Urmărește", "unwatch": "Oprire urmărire", "watch.title": "Abonează-te la notificări legate de acest subiect", @@ -104,7 +105,7 @@ "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", "stale.create": "Create a new topic", "stale.reply_anyway": "Reply to this topic anyway", - "stale.link_back": "Re: [%1](%2)", + "link_back": "Re: [%1](%2)", "spam": "Spam", "offensive": "Offensive", "custom-flag-reason": "Enter a flagging reason" diff --git a/public/language/ro/users.json b/public/language/ro/users.json index d7a1a72fc4..8f2cf6914c 100644 --- a/public/language/ro/users.json +++ b/public/language/ro/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter By", "online-only": "Online only", - "picture-only": "Picture only", "invite": "Invită", "invitation-email-sent": "An invitation email has been sent to %1", "user_list": "Listă utilizatori", @@ -17,5 +16,5 @@ "unread_topics": "Subiecte Necitite", "categories": "Categorii", "tags": "Taguri", - "map": "Hartă" + "no-users-found": "No users found!" } \ No newline at end of file diff --git a/public/language/ru/error.json b/public/language/ru/error.json index ef859bdd85..907a8f9f83 100644 --- a/public/language/ru/error.json +++ b/public/language/ru/error.json @@ -14,7 +14,7 @@ "invalid-password": "Неверный пароль", "invalid-username-or-password": "Пожалуйста, укажите и имя пользователя и пароль", "invalid-search-term": "Неверный поисковой запрос", - "invalid-pagination-value": "Неверное значение пагинации", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Имя пользователя занято", "email-taken": "Email занят", "email-not-confirmed": "Ваш email не подтвержден, нажмите для подтверждения.", @@ -83,6 +83,7 @@ "chat-message-too-long": "Слишком длинное сообщение чата", "cant-edit-chat-message": "У вас нет доступа для редактирования этого сообщения", "cant-remove-last-user": "Вы не можете убрать последнего пользователя", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "Система репутации отключена.", "downvoting-disabled": "Понижение оценки отключено", "not-enough-reputation-to-downvote": "У Вас недостаточно репутации для понижения оценки сообщения", @@ -94,5 +95,6 @@ "wrong-login-type-email": "Пожалуйста, используйте свой E-mail для входа.", "wrong-login-type-username": "Пожалуйста, используйте своё имя пользователя для входа.", "invite-maximum-met": "Вы пригласили максимальное количество людей (%1 из %2).", - "no-session-found": "Сессия входа не найдена!" + "no-session-found": "Сессия входа не найдена!", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/ru/global.json b/public/language/ru/global.json index d2be43a7b7..f6f1703c69 100644 --- a/public/language/ru/global.json +++ b/public/language/ru/global.json @@ -63,11 +63,9 @@ "posted_in_by": "posted in %1 by %2", "posted_in_ago": "написал в %1 %2", "posted_in_ago_by": "%3 написал в %1 %2", - "posted_in_ago_by_guest": "Гость написал в %1 %2", - "replied_ago": "ответил %1", "user_posted_ago": "%1 написал %2", "guest_posted_ago": "Гость написал %1", - "last_edited_by_ago": "последнее изменение %1 %2", + "last_edited_by": "last edited by %1", "norecentposts": "Нет новых сообщений", "norecenttopics": "Нету новых тем", "recentposts": "Свежие записи", diff --git a/public/language/ru/pages.json b/public/language/ru/pages.json index def5a3b818..61718d5a69 100644 --- a/public/language/ru/pages.json +++ b/public/language/ru/pages.json @@ -6,11 +6,12 @@ "popular-month": "Популярные темы этого месяца", "popular-alltime": "Популярные темы за все время", "recent": "Последние темы", + "flagged-posts": "Flagged Posts", "users/online": "В сети", "users/latest": "Новые пользователи", "users/sort-posts": "Пользователи по кол-ву сообщений", "users/sort-reputation": "Пользователи по кол-ву репутации", - "users/map": "Карта пользователей", + "users/banned": "Banned Users", "users/search": "Поиск пользователей", "notifications": "Уведомления", "tags": "Теги", diff --git a/public/language/ru/topic.json b/public/language/ru/topic.json index dfe25ff7a8..04a3c5894d 100644 --- a/public/language/ru/topic.json +++ b/public/language/ru/topic.json @@ -35,6 +35,7 @@ "login_to_subscribe": "Пожалуйста зарегистрируйтесь, или войдите под своим аккаунтом, чтобы подписаться на эту тему.", "markAsUnreadForAll.success": "Тема помечена как непрочитанная для всех.", "mark_unread": "Отметить как непрочитанное", + "mark_unread.success": "Topic marked as unread.", "watch": "Следить", "unwatch": "Не следить", "watch.title": "Сообщать мне об ответах в этой теме", @@ -104,7 +105,7 @@ "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", "stale.create": "Создать новую тему", "stale.reply_anyway": "Всё равно ответить в этой теме", - "stale.link_back": "Re: [%1](%2)", + "link_back": "Re: [%1](%2)", "spam": "Спам", "offensive": "Offensive", "custom-flag-reason": "Enter a flagging reason" diff --git a/public/language/ru/users.json b/public/language/ru/users.json index 5f3a997f60..6ab7df5038 100644 --- a/public/language/ru/users.json +++ b/public/language/ru/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "Найдено %1 пользователя(ей). Поиск занял %2 секунд.", "filter-by": "Сортировать по", "online-only": "Только онлайн", - "picture-only": "Только с аватаром", "invite": "Пригласить", "invitation-email-sent": "По электронной почте было отправлено приглашение для %1", "user_list": "Список пользователей", @@ -17,5 +16,5 @@ "unread_topics": "Непрочитанные темы", "categories": "Категории", "tags": "Теги", - "map": "Карта" + "no-users-found": "No users found!" } \ No newline at end of file diff --git a/public/language/rw/error.json b/public/language/rw/error.json index cc8a363323..5584e6b5f3 100644 --- a/public/language/rw/error.json +++ b/public/language/rw/error.json @@ -14,7 +14,7 @@ "invalid-password": "Ijambobanga Ntiryemewe", "invalid-username-or-password": "Tanga izina ukoresha n'ijambobanga", "invalid-search-term": "Icyashatswe nticyemewe", - "invalid-pagination-value": "Umubare wa paji watanzwe ntiwemewe", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Izina ryarafashwe mbere", "email-taken": "Email yarafashwe mbere", "email-not-confirmed": "Email yawe ntabwo iremezwa. Kanda hano kugirango wemeze email yawe.", @@ -83,6 +83,7 @@ "chat-message-too-long": "Chat message is too long", "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "Ibijyanye n'itangwa ry'amanota ntibyemerewe. ", "downvoting-disabled": "Kwambura amanota ntibyemerewe", "not-enough-reputation-to-downvote": "Ntabwo ufite amanota ahagije ngo ube wakwemererwa kugira uwo wambura amanota", @@ -94,5 +95,6 @@ "wrong-login-type-email": "Koresha email yawe kugirango winjiremo", "wrong-login-type-username": "Koresha izina ry'umukoresha ryawe kugirango winjiremo", "invite-maximum-met": "You have invited the maximum amount of people (%1 out of %2).", - "no-session-found": "No login session found!" + "no-session-found": "No login session found!", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/rw/global.json b/public/language/rw/global.json index eb4c293ac1..e543582ea0 100644 --- a/public/language/rw/global.json +++ b/public/language/rw/global.json @@ -63,11 +63,9 @@ "posted_in_by": "posted in %1 by %2", "posted_in_ago": "%2 bishyizwe muri %1", "posted_in_ago_by": "%2 bishyizwe muri %1 na %3", - "posted_in_ago_by_guest": "%2 bishyizwe muri %1 na Umushyitsi", - "replied_ago": "%1 asubije", "user_posted_ago": "%2 %1 ashyizeho", "guest_posted_ago": "%1 Umushyitsi ashyizeho", - "last_edited_by_ago": "%2 bihinduweho na %1", + "last_edited_by": "last edited by %1", "norecentposts": "Nta Biherutseho", "norecenttopics": "Nta Biganiro Biherutse", "recentposts": "Ibiherutseho", diff --git a/public/language/rw/pages.json b/public/language/rw/pages.json index 7e86499775..26c0ac71e9 100644 --- a/public/language/rw/pages.json +++ b/public/language/rw/pages.json @@ -6,11 +6,12 @@ "popular-month": "Popular topics this month", "popular-alltime": "All time popular topics", "recent": "Ibiganiro Biheruka", + "flagged-posts": "Flagged Posts", "users/online": "Online Users", "users/latest": "Latest Users", "users/sort-posts": "Users with the most posts", "users/sort-reputation": "Users with the most reputation", - "users/map": "User Map", + "users/banned": "Banned Users", "users/search": "User Search", "notifications": "Amatangazo", "tags": "Ibimenyetso", diff --git a/public/language/rw/topic.json b/public/language/rw/topic.json index 82873ee4cd..2f3e53b21d 100644 --- a/public/language/rw/topic.json +++ b/public/language/rw/topic.json @@ -35,6 +35,7 @@ "login_to_subscribe": "Ba umunyamuryango cyangwa winjiremo niba ushaka kwiyandikisha kuri iki kiganiro. ", "markAsUnreadForAll.success": "Ikiganiro kigizwe nk'icyasomwe na bose", "mark_unread": "Mark unread", + "mark_unread.success": "Topic marked as unread.", "watch": "Cunga", "unwatch": "Rekeraho Gucunga", "watch.title": "Ujye umenyeshwa ibyongerwaho bishya kuri iki kiganiro", @@ -104,7 +105,7 @@ "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", "stale.create": "Create a new topic", "stale.reply_anyway": "Reply to this topic anyway", - "stale.link_back": "Re: [%1](%2)", + "link_back": "Re: [%1](%2)", "spam": "Spam", "offensive": "Offensive", "custom-flag-reason": "Enter a flagging reason" diff --git a/public/language/rw/users.json b/public/language/rw/users.json index 944183afcb..67afa61e34 100644 --- a/public/language/rw/users.json +++ b/public/language/rw/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "Habonetse abantu (umuntu) %1! Byatwaye amasegonda %2 gusa.", "filter-by": "Yungurura Ukurikije", "online-only": "Abari ku murongo gusa", - "picture-only": "Ifoto gusa", "invite": "Tumira", "invitation-email-sent": "Ubutumire bwa email bwohererejwe %1", "user_list": "Urutonde rw'Abantu", @@ -17,5 +16,5 @@ "unread_topics": "Ibiganiro Bitarasomwa", "categories": "Ibyiciro", "tags": "Ibimenyetso", - "map": "Ikarita" + "no-users-found": "No users found!" } \ No newline at end of file diff --git a/public/language/sc/error.json b/public/language/sc/error.json index d10734c6ea..ca4533474d 100644 --- a/public/language/sc/error.json +++ b/public/language/sc/error.json @@ -14,7 +14,7 @@ "invalid-password": "Invalid Password", "invalid-username-or-password": "Please specify both a username and password", "invalid-search-term": "Invalid search term", - "invalid-pagination-value": "Invalid pagination value", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Username taken", "email-taken": "Email taken", "email-not-confirmed": "Your email has not been confirmed yet, please click here to confirm your email.", @@ -83,6 +83,7 @@ "chat-message-too-long": "Chat message is too long", "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "Reputation system is disabled.", "downvoting-disabled": "Downvoting is disabled", "not-enough-reputation-to-downvote": "You do not have enough reputation to downvote this post", @@ -94,5 +95,6 @@ "wrong-login-type-email": "Please use your email to login", "wrong-login-type-username": "Please use your username to login", "invite-maximum-met": "You have invited the maximum amount of people (%1 out of %2).", - "no-session-found": "No login session found!" + "no-session-found": "No login session found!", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/sc/global.json b/public/language/sc/global.json index df66cc0b50..09c4882bd4 100644 --- a/public/language/sc/global.json +++ b/public/language/sc/global.json @@ -63,11 +63,9 @@ "posted_in_by": "posted in %1 by %2", "posted_in_ago": "posted in %1 %2", "posted_in_ago_by": "posted in %1 %2 by %3", - "posted_in_ago_by_guest": "posted in %1 %2 by Guest", - "replied_ago": "replied %1", "user_posted_ago": "%1 posted %2", "guest_posted_ago": "Guest posted %1", - "last_edited_by_ago": "last edited by %1 %2", + "last_edited_by": "last edited by %1", "norecentposts": "No Recent Posts", "norecenttopics": "No Recent Topics", "recentposts": "Ùrtimos Arresonos", diff --git a/public/language/sc/pages.json b/public/language/sc/pages.json index 7ffe443741..8af7d8e199 100644 --- a/public/language/sc/pages.json +++ b/public/language/sc/pages.json @@ -6,11 +6,12 @@ "popular-month": "Popular topics this month", "popular-alltime": "All time popular topics", "recent": "Ùrtimas Arresonadas", + "flagged-posts": "Flagged Posts", "users/online": "Online Users", "users/latest": "Latest Users", "users/sort-posts": "Users with the most posts", "users/sort-reputation": "Users with the most reputation", - "users/map": "User Map", + "users/banned": "Banned Users", "users/search": "User Search", "notifications": "Notìficas", "tags": "Tags", diff --git a/public/language/sc/topic.json b/public/language/sc/topic.json index 8067a34872..5dd4e78fa4 100644 --- a/public/language/sc/topic.json +++ b/public/language/sc/topic.json @@ -35,6 +35,7 @@ "login_to_subscribe": "Pro praghere registra·ti o intra pro sutascrìere custa arresonada.", "markAsUnreadForAll.success": "Arresonada marcada comente de lèghere pro totus.", "mark_unread": "Mark unread", + "mark_unread.success": "Topic marked as unread.", "watch": "Càstia", "unwatch": "Unwatch", "watch.title": "Be notified of new replies in this topic", @@ -104,7 +105,7 @@ "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", "stale.create": "Create a new topic", "stale.reply_anyway": "Reply to this topic anyway", - "stale.link_back": "Re: [%1](%2)", + "link_back": "Re: [%1](%2)", "spam": "Spam", "offensive": "Offensive", "custom-flag-reason": "Enter a flagging reason" diff --git a/public/language/sc/users.json b/public/language/sc/users.json index d96c53ea9c..93913a20a3 100644 --- a/public/language/sc/users.json +++ b/public/language/sc/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter By", "online-only": "Online only", - "picture-only": "Picture only", "invite": "Invite", "invitation-email-sent": "An invitation email has been sent to %1", "user_list": "User List", @@ -17,5 +16,5 @@ "unread_topics": "Unread Topics", "categories": "Categories", "tags": "Tags", - "map": "Map" + "no-users-found": "No users found!" } \ No newline at end of file diff --git a/public/language/sk/error.json b/public/language/sk/error.json index be5e30337e..3ad3058253 100644 --- a/public/language/sk/error.json +++ b/public/language/sk/error.json @@ -14,7 +14,7 @@ "invalid-password": "Nesprávne heslo", "invalid-username-or-password": "Please specify both a username and password", "invalid-search-term": "Invalid search term", - "invalid-pagination-value": "Nesprávna hodnota stránkovania", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Užívateľske meno je obsadené", "email-taken": "Email je obsadený", "email-not-confirmed": "Your email has not been confirmed yet, please click here to confirm your email.", @@ -83,6 +83,7 @@ "chat-message-too-long": "Chat message is too long", "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "Reputation system is disabled.", "downvoting-disabled": "Downvoting is disabled", "not-enough-reputation-to-downvote": "You do not have enough reputation to downvote this post", @@ -94,5 +95,6 @@ "wrong-login-type-email": "Please use your email to login", "wrong-login-type-username": "Please use your username to login", "invite-maximum-met": "You have invited the maximum amount of people (%1 out of %2).", - "no-session-found": "No login session found!" + "no-session-found": "No login session found!", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/sk/global.json b/public/language/sk/global.json index 1e750d3ea8..b3dd3aa13a 100644 --- a/public/language/sk/global.json +++ b/public/language/sk/global.json @@ -63,11 +63,9 @@ "posted_in_by": "posted in %1 by %2", "posted_in_ago": "publikované v %1 %2", "posted_in_ago_by": "publikované v %1 %2 od %3", - "posted_in_ago_by_guest": "publikované v %1 %2 od hosťa", - "replied_ago": "odpovedal %1", "user_posted_ago": "%1 publikoval %2", "guest_posted_ago": "Hosť publikoval %1", - "last_edited_by_ago": "naposledy upravené %1 %2", + "last_edited_by": "last edited by %1", "norecentposts": "Žiadne posledné príspevky", "norecenttopics": "Žiadne posledné témy", "recentposts": "Posledné príspevky", diff --git a/public/language/sk/pages.json b/public/language/sk/pages.json index c8db15d258..53d8874789 100644 --- a/public/language/sk/pages.json +++ b/public/language/sk/pages.json @@ -6,11 +6,12 @@ "popular-month": "Popular topics this month", "popular-alltime": "All time popular topics", "recent": "Najnovšie príspevky", + "flagged-posts": "Flagged Posts", "users/online": "Online Users", "users/latest": "Latest Users", "users/sort-posts": "Users with the most posts", "users/sort-reputation": "Users with the most reputation", - "users/map": "User Map", + "users/banned": "Banned Users", "users/search": "User Search", "notifications": "Notifikácie", "tags": "Tagy", diff --git a/public/language/sk/topic.json b/public/language/sk/topic.json index 65041560f2..8096d584e7 100644 --- a/public/language/sk/topic.json +++ b/public/language/sk/topic.json @@ -35,6 +35,7 @@ "login_to_subscribe": "Prosím Zaregistrujte sa alebo sa Prihláste, aby ste mohli odoberať túto Tému", "markAsUnreadForAll.success": "Téma označená ako neprečítaná pre všetkých.", "mark_unread": "Mark unread", + "mark_unread.success": "Topic marked as unread.", "watch": "Sledovať", "unwatch": "Unwatch", "watch.title": "Buďte informovaní o nových odpovediach k tejto téme", @@ -104,7 +105,7 @@ "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", "stale.create": "Create a new topic", "stale.reply_anyway": "Reply to this topic anyway", - "stale.link_back": "Re: [%1](%2)", + "link_back": "Re: [%1](%2)", "spam": "Spam", "offensive": "Offensive", "custom-flag-reason": "Enter a flagging reason" diff --git a/public/language/sk/users.json b/public/language/sk/users.json index 1de5062fac..73b24c1744 100644 --- a/public/language/sk/users.json +++ b/public/language/sk/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter By", "online-only": "Online only", - "picture-only": "Picture only", "invite": "Invite", "invitation-email-sent": "An invitation email has been sent to %1", "user_list": "User List", @@ -17,5 +16,5 @@ "unread_topics": "Unread Topics", "categories": "Categories", "tags": "Tagy", - "map": "Map" + "no-users-found": "No users found!" } \ No newline at end of file diff --git a/public/language/sl/error.json b/public/language/sl/error.json index 61266aeb42..a450802630 100644 --- a/public/language/sl/error.json +++ b/public/language/sl/error.json @@ -14,7 +14,7 @@ "invalid-password": "Napačno geslo", "invalid-username-or-password": "Prosimo vpišite uporabniško ime in geslo", "invalid-search-term": "Napačna iskalna poizvedba", - "invalid-pagination-value": "Napačna številka strani", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Uporabniško ime je že zasedeno", "email-taken": "E-mail naslov je že zaseden", "email-not-confirmed": "Vaš e-mail naslov še ni bil potrjen. Prosimo kliknite tu za potrditev vašega e-mail naslova.", @@ -83,6 +83,7 @@ "chat-message-too-long": "Chat message is too long", "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "Možnost ugleda je onemogočena.", "downvoting-disabled": "Negativno glasovanje je onemogočeno", "not-enough-reputation-to-downvote": "Nimate dovolj ugleda za negativno glasovanje", @@ -94,5 +95,6 @@ "wrong-login-type-email": "Uporabite svoj e-mail naslov za prijavo", "wrong-login-type-username": "Uporabite svoje uporabniško ime za prijavo", "invite-maximum-met": "You have invited the maximum amount of people (%1 out of %2).", - "no-session-found": "No login session found!" + "no-session-found": "No login session found!", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/sl/global.json b/public/language/sl/global.json index 6799bc0f61..3f5101bdd4 100644 --- a/public/language/sl/global.json +++ b/public/language/sl/global.json @@ -63,11 +63,9 @@ "posted_in_by": "posted in %1 by %2", "posted_in_ago": "objavljeno v %1 %2", "posted_in_ago_by": "objavil v %1 %2 kot %3", - "posted_in_ago_by_guest": "objavil v %1 %2 kot Gost", - "replied_ago": "odgovorjeno %1", "user_posted_ago": "%1 objavil %2", "guest_posted_ago": "Gost je objavil %1", - "last_edited_by_ago": "nazadnje popravljeno od %1 %2", + "last_edited_by": "last edited by %1", "norecentposts": "Ni nedavnih objav", "norecenttopics": "Ni nedavnih tem", "recentposts": "Zadnje objave", diff --git a/public/language/sl/pages.json b/public/language/sl/pages.json index bf03c45612..134a6e6f3e 100644 --- a/public/language/sl/pages.json +++ b/public/language/sl/pages.json @@ -6,11 +6,12 @@ "popular-month": "Popularne teme tega meseca", "popular-alltime": "Najbolj popularne teme vseh časov", "recent": "Zadnje teme", + "flagged-posts": "Flagged Posts", "users/online": "Uporabnikov na strani", "users/latest": "Zadnji uporabniki", "users/sort-posts": "Uporabniki z največ objavami", "users/sort-reputation": "Uporabniki najbolj vredni zaupanja", - "users/map": "Zemljevid uporabnikov", + "users/banned": "Banned Users", "users/search": "Iskanje uporabnikov", "notifications": "Obvestila", "tags": "Oznake", diff --git a/public/language/sl/topic.json b/public/language/sl/topic.json index 478e36382c..1d842fe0fb 100644 --- a/public/language/sl/topic.json +++ b/public/language/sl/topic.json @@ -35,6 +35,7 @@ "login_to_subscribe": "Prosimo prijavite ali registrirajte se za naročanje o tej temi.", "markAsUnreadForAll.success": "Tema označena kot neprebrana za vse.", "mark_unread": "Mark unread", + "mark_unread.success": "Topic marked as unread.", "watch": "Spremljaj", "unwatch": "Ne spremljaj", "watch.title": "Bodi obveščen o novih odgovorih v tej temi", @@ -104,7 +105,7 @@ "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", "stale.create": "Create a new topic", "stale.reply_anyway": "Reply to this topic anyway", - "stale.link_back": "Re: [%1](%2)", + "link_back": "Re: [%1](%2)", "spam": "Spam", "offensive": "Offensive", "custom-flag-reason": "Enter a flagging reason" diff --git a/public/language/sl/users.json b/public/language/sl/users.json index 598573e781..4441c34e62 100644 --- a/public/language/sl/users.json +++ b/public/language/sl/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "%1 uporabnik(ov) najdenih! Iskanje je potrebovalo %2 sekunde.", "filter-by": "Filtriraj po", "online-only": "Samo dosegljivi", - "picture-only": "Samo s sliko", "invite": "Povabi", "invitation-email-sent": "Povabilo je bilo poslano na e-mail naslov %1", "user_list": "Lista uporabnikov", @@ -17,5 +16,5 @@ "unread_topics": "Neprebrane teme", "categories": "Kategorije", "tags": "Oznake", - "map": "Zemljevid" + "no-users-found": "No users found!" } \ No newline at end of file diff --git a/public/language/sr/error.json b/public/language/sr/error.json index 7b77db430f..e9e7ce0a01 100644 --- a/public/language/sr/error.json +++ b/public/language/sr/error.json @@ -14,7 +14,7 @@ "invalid-password": "Неисправна лозинка", "invalid-username-or-password": "Молимо наведите и корисничко име и лозинку", "invalid-search-term": "Неисправан упит за претрагу", - "invalid-pagination-value": "Invalid pagination value", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Корисничко име је заузето", "email-taken": "Адреса е-поште је заусета", "email-not-confirmed": "Ваша адреса е-поште жоуш увек није оверена, кликните овде да би сте то учинили.", @@ -83,6 +83,7 @@ "chat-message-too-long": "Chat message is too long", "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "Reputation system is disabled.", "downvoting-disabled": "Downvoting is disabled", "not-enough-reputation-to-downvote": "You do not have enough reputation to downvote this post", @@ -94,5 +95,6 @@ "wrong-login-type-email": "Please use your email to login", "wrong-login-type-username": "Please use your username to login", "invite-maximum-met": "You have invited the maximum amount of people (%1 out of %2).", - "no-session-found": "No login session found!" + "no-session-found": "No login session found!", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/sr/global.json b/public/language/sr/global.json index 358dea5913..aadbb16820 100644 --- a/public/language/sr/global.json +++ b/public/language/sr/global.json @@ -63,11 +63,9 @@ "posted_in_by": "постављено у %1 од стране %2", "posted_in_ago": "постављено у %1 %2", "posted_in_ago_by": "постављено у %1 %2 од стране %3", - "posted_in_ago_by_guest": "постављено у %1 %2 од стране Госта", - "replied_ago": "одговорено %1", "user_posted_ago": "%1 постављено %2", "guest_posted_ago": "Гост је поставио %2", - "last_edited_by_ago": "измењено од стране %1 %2", + "last_edited_by": "last edited by %1", "norecentposts": "Нема недавних порука", "norecenttopics": "Нема скорашњих тема", "recentposts": "Скорашње теме", diff --git a/public/language/sr/pages.json b/public/language/sr/pages.json index bb086843f6..e3eae6f34b 100644 --- a/public/language/sr/pages.json +++ b/public/language/sr/pages.json @@ -6,11 +6,12 @@ "popular-month": "Popular topics this month", "popular-alltime": "All time popular topics", "recent": "Скорашње теме", + "flagged-posts": "Flagged Posts", "users/online": "Online Users", "users/latest": "Latest Users", "users/sort-posts": "Users with the most posts", "users/sort-reputation": "Users with the most reputation", - "users/map": "User Map", + "users/banned": "Banned Users", "users/search": "User Search", "notifications": "Обавештења", "tags": "Ознаке", diff --git a/public/language/sr/topic.json b/public/language/sr/topic.json index eb3f4f52f1..cf7b76fc3e 100644 --- a/public/language/sr/topic.json +++ b/public/language/sr/topic.json @@ -35,6 +35,7 @@ "login_to_subscribe": "Please register or log in in order to subscribe to this topic.", "markAsUnreadForAll.success": "Topic marked as unread for all.", "mark_unread": "Mark unread", + "mark_unread.success": "Topic marked as unread.", "watch": "Прати", "unwatch": "Не прати", "watch.title": "Be notified of new replies in this topic", @@ -104,7 +105,7 @@ "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", "stale.create": "Create a new topic", "stale.reply_anyway": "Reply to this topic anyway", - "stale.link_back": "Re: [%1](%2)", + "link_back": "Re: [%1](%2)", "spam": "Spam", "offensive": "Offensive", "custom-flag-reason": "Enter a flagging reason" diff --git a/public/language/sr/users.json b/public/language/sr/users.json index c3b9d4aba4..6308354310 100644 --- a/public/language/sr/users.json +++ b/public/language/sr/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "Нађено је %1 корисника! Претрага је завршена за %2 секунде.", "filter-by": "Филтрирај према", "online-only": "Само корисници на вези", - "picture-only": "Само слике", "invite": "Позови", "invitation-email-sent": "Активациони емејл је послат на %1", "user_list": "Листа корисника", @@ -17,5 +16,5 @@ "unread_topics": "Непрочитане теме", "categories": "Категорије", "tags": "Ознаке", - "map": "Мапа" + "no-users-found": "No users found!" } \ No newline at end of file diff --git a/public/language/sv/error.json b/public/language/sv/error.json index 140db38d19..8f3513edaf 100644 --- a/public/language/sv/error.json +++ b/public/language/sv/error.json @@ -14,7 +14,7 @@ "invalid-password": "Ogiltigt lösenord", "invalid-username-or-password": "Specificera både användarnamn och lösenord", "invalid-search-term": "Ogiltig sökterm", - "invalid-pagination-value": "Ogiltigt sidnummer", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Användarnamn upptaget", "email-taken": "Epostadress upptagen", "email-not-confirmed": "Din epostadress är ännu inte bekräftad. Klicka här för att bekräfta din epostadress.", @@ -83,6 +83,7 @@ "chat-message-too-long": "Chattmeddelande är för långt", "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "Ryktessystemet är inaktiverat.", "downvoting-disabled": "Nedröstning är inaktiverat", "not-enough-reputation-to-downvote": "Du har inte tillräckligt förtroende för att rösta ner det här meddelandet", @@ -94,5 +95,6 @@ "wrong-login-type-email": "Använd din e-post adress för att logga in", "wrong-login-type-username": "Använd ditt användarnamn för att logga in", "invite-maximum-met": "You have invited the maximum amount of people (%1 out of %2).", - "no-session-found": "No login session found!" + "no-session-found": "No login session found!", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/sv/global.json b/public/language/sv/global.json index 978b2a3b45..d984b99cc5 100644 --- a/public/language/sv/global.json +++ b/public/language/sv/global.json @@ -63,11 +63,9 @@ "posted_in_by": "posted in %1 by %2", "posted_in_ago": "inskickad i %1 %2", "posted_in_ago_by": "inskickad i %1 %2 av %3", - "posted_in_ago_by_guest": "inskickad i %1 %2 av anonym", - "replied_ago": "besvarad %1", "user_posted_ago": "%1 skickades in %2", "guest_posted_ago": "Anonym skickade in %1", - "last_edited_by_ago": "senast redigerad av %1 %2", + "last_edited_by": "last edited by %1", "norecentposts": "Inga nya inlägg", "norecenttopics": "Inga nya ämnen", "recentposts": "Senaste ämnena", diff --git a/public/language/sv/pages.json b/public/language/sv/pages.json index 5cf664730a..1e8f24f5cb 100644 --- a/public/language/sv/pages.json +++ b/public/language/sv/pages.json @@ -6,11 +6,12 @@ "popular-month": "Populära ämnen denna månad", "popular-alltime": "All time popular topics", "recent": "Senaste ämnena", + "flagged-posts": "Flagged Posts", "users/online": "Användare online", "users/latest": "Senaste Användare", "users/sort-posts": "Användare med flest inlägg", "users/sort-reputation": "Users with the most reputation", - "users/map": "Användar Karta", + "users/banned": "Banned Users", "users/search": "Användar Sök", "notifications": "Notiser", "tags": "Etiketter", diff --git a/public/language/sv/topic.json b/public/language/sv/topic.json index e2a1292067..119caa86e5 100644 --- a/public/language/sv/topic.json +++ b/public/language/sv/topic.json @@ -35,6 +35,7 @@ "login_to_subscribe": "Var god registrera eller logga in för att kunna prenumerera på detta ämne.", "markAsUnreadForAll.success": "Ämne markerat som oläst av alla.", "mark_unread": "Mark unread", + "mark_unread.success": "Topic marked as unread.", "watch": "Bevaka", "unwatch": "Sluta bevaka", "watch.title": "Få notis om nya svar till det här ämnet", @@ -104,7 +105,7 @@ "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", "stale.create": "Create a new topic", "stale.reply_anyway": "Reply to this topic anyway", - "stale.link_back": "Re: [%1](%2)", + "link_back": "Re: [%1](%2)", "spam": "Spam", "offensive": "Offensive", "custom-flag-reason": "Enter a flagging reason" diff --git a/public/language/sv/users.json b/public/language/sv/users.json index 5acd1b0f84..29f91b76c0 100644 --- a/public/language/sv/users.json +++ b/public/language/sv/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "%1 användare hittades! Sökningen tog %2 sekunder.", "filter-by": "Filtrera på", "online-only": "Endast online", - "picture-only": "Endast bild", "invite": "Bjud in", "invitation-email-sent": "En inbjudan har skickats till %1", "user_list": "Användarlista", @@ -17,5 +16,5 @@ "unread_topics": "Olästa ämnen", "categories": "Kategorier", "tags": "Märkord", - "map": "Karta" + "no-users-found": "No users found!" } \ No newline at end of file diff --git a/public/language/th/error.json b/public/language/th/error.json index 30196c1289..7d046a412b 100644 --- a/public/language/th/error.json +++ b/public/language/th/error.json @@ -14,7 +14,7 @@ "invalid-password": "รหัสผ่านไม่ถูกต้อง", "invalid-username-or-password": "กรุณาระบุชื่อผู้ใช้และรหัสผ่าน", "invalid-search-term": "ข้อความค้นหาไม่ถูกต้อง", - "invalid-pagination-value": "Invalid pagination value", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "ชื่อผู้ใช้นี้มีการใช้แล้ว", "email-taken": "อีเมลนี้มีการใช้แล้ว", "email-not-confirmed": "ยังไม่มีการยืนยันอีเมลของคุณ, โปรดกดยืนยันอีเมลของคุณตรงนี้", @@ -83,6 +83,7 @@ "chat-message-too-long": "Chat message is too long", "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "Reputation system is disabled.", "downvoting-disabled": "Downvoting is disabled", "not-enough-reputation-to-downvote": "You do not have enough reputation to downvote this post", @@ -94,5 +95,6 @@ "wrong-login-type-email": "Please use your email to login", "wrong-login-type-username": "Please use your username to login", "invite-maximum-met": "You have invited the maximum amount of people (%1 out of %2).", - "no-session-found": "No login session found!" + "no-session-found": "No login session found!", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/th/global.json b/public/language/th/global.json index 951b3d1c78..f655109acb 100644 --- a/public/language/th/global.json +++ b/public/language/th/global.json @@ -63,11 +63,9 @@ "posted_in_by": "posted in %1 by %2", "posted_in_ago": "posted in %1 %2", "posted_in_ago_by": "posted in %1 %2 by %3", - "posted_in_ago_by_guest": "posted in %1 %2 by Guest", - "replied_ago": "replied %1", "user_posted_ago": "%1 posted %2", "guest_posted_ago": "Guest posted %1", - "last_edited_by_ago": "last edited by %1 %2", + "last_edited_by": "last edited by %1", "norecentposts": "ไม่มีกระทู้ล่าสุด", "norecenttopics": "ไม่มีกระทู้ล่าสุด", "recentposts": "กระทู้ล่าสุด", diff --git a/public/language/th/pages.json b/public/language/th/pages.json index 3352377ae0..5534337e1e 100644 --- a/public/language/th/pages.json +++ b/public/language/th/pages.json @@ -6,11 +6,12 @@ "popular-month": "Popular topics this month", "popular-alltime": "All time popular topics", "recent": "กระทู้ล่าสุด", + "flagged-posts": "Flagged Posts", "users/online": "Online Users", "users/latest": "Latest Users", "users/sort-posts": "Users with the most posts", "users/sort-reputation": "Users with the most reputation", - "users/map": "User Map", + "users/banned": "Banned Users", "users/search": "User Search", "notifications": "แจ้งเตือน", "tags": "Tags", diff --git a/public/language/th/topic.json b/public/language/th/topic.json index a7b41995ac..6e979ef48c 100644 --- a/public/language/th/topic.json +++ b/public/language/th/topic.json @@ -35,6 +35,7 @@ "login_to_subscribe": "กรุณาลงทะเบียนหรือเข้าสู่ระบบเพื่อที่จะติดตามกระทู้นี้", "markAsUnreadForAll.success": "ทำเครื่องหมายว่ายังไม่ได้อ่านทั้งหมด", "mark_unread": "Mark unread", + "mark_unread.success": "Topic marked as unread.", "watch": "ติดตาม", "unwatch": "ยังไม่ได้ติดตาม", "watch.title": "ให้แจ้งเตือนเมื่อมีการตอบกลับ Topic นี้", @@ -104,7 +105,7 @@ "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", "stale.create": "Create a new topic", "stale.reply_anyway": "Reply to this topic anyway", - "stale.link_back": "Re: [%1](%2)", + "link_back": "Re: [%1](%2)", "spam": "Spam", "offensive": "Offensive", "custom-flag-reason": "Enter a flagging reason" diff --git a/public/language/th/users.json b/public/language/th/users.json index cdeb6d897a..a3f7bcb85e 100644 --- a/public/language/th/users.json +++ b/public/language/th/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter By", "online-only": "Online only", - "picture-only": "Picture only", "invite": "Invite", "invitation-email-sent": "An invitation email has been sent to %1", "user_list": "User List", @@ -17,5 +16,5 @@ "unread_topics": "Unread Topics", "categories": "Categories", "tags": "Tags", - "map": "Map" + "no-users-found": "No users found!" } \ No newline at end of file diff --git a/public/language/tr/error.json b/public/language/tr/error.json index 04704bf936..3e9a52baef 100644 --- a/public/language/tr/error.json +++ b/public/language/tr/error.json @@ -14,7 +14,7 @@ "invalid-password": "Geçersiz Şifre", "invalid-username-or-password": "Lütfen kullanıcı ismi ve parola girin.", "invalid-search-term": "Geçersiz arama", - "invalid-pagination-value": "Geçersiz Sayfa Değeri", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Kullanıcı İsmi Alınmış", "email-taken": "E-posta Alınmış", "email-not-confirmed": "E-postanız onaylanmamış, onaylamak için lütfen buraya tıklayın.", @@ -83,6 +83,7 @@ "chat-message-too-long": "Sohbet mesajı çok uzun", "cant-edit-chat-message": "Bu mesajı düzenlemek için izin verilmez", "cant-remove-last-user": "Son kullanıcıyı silemezsiniz", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "Saygınlık sistemi kapatılmış.", "downvoting-disabled": "Aşagı oylama kapatılmış", "not-enough-reputation-to-downvote": "Bu iletiyi aşagı oylamak için yeterince saygınlığınız yok.", @@ -94,5 +95,6 @@ "wrong-login-type-email": "Lütfen giriş için e-posta adresinizi kullanın", "wrong-login-type-username": "Lütfen giriş için kullanıcı adınızı kullanın", "invite-maximum-met": "Sen maksimum miktarda insanı davet ettin (%2 üzerinden %1).", - "no-session-found": "Giriş yapılmış bir oturum bulunamadı!" + "no-session-found": "Giriş yapılmış bir oturum bulunamadı!", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/tr/global.json b/public/language/tr/global.json index f5fe31c00b..7c99284277 100644 --- a/public/language/tr/global.json +++ b/public/language/tr/global.json @@ -63,11 +63,9 @@ "posted_in_by": "%2 tarafından %1 yayınlandı", "posted_in_ago": "%1 içinde %2 yayımlandı", "posted_in_ago_by": "%1 içinde %3 tarafından %2 yayımlandı", - "posted_in_ago_by_guest": "%1 içinde Ziyaretçi tarafından %2 yayımlandı", - "replied_ago": "%1 yanıtlandı", "user_posted_ago": "%1 %2 yayımladı", "guest_posted_ago": "Ziyaretçi %1 yayımladı", - "last_edited_by_ago": "en son %1 tarafından %2 düzenlendi", + "last_edited_by": "last edited by %1", "norecentposts": "Güncel İletiler Yok", "norecenttopics": "Güncel Başlıklar Yok", "recentposts": "Güncel İletiler", diff --git a/public/language/tr/pages.json b/public/language/tr/pages.json index 6a6e9da7c9..5f6856b98f 100644 --- a/public/language/tr/pages.json +++ b/public/language/tr/pages.json @@ -6,11 +6,12 @@ "popular-month": "Bu ayki popüler başlıklar", "popular-alltime": "En popüler başlıklar", "recent": "Güncel Konular", + "flagged-posts": "Flagged Posts", "users/online": "Çevrimiçi Kullanıcılar", "users/latest": "En Yeni Kullanıcılar", "users/sort-posts": "En çok ileti gönderen kullanıcılar", "users/sort-reputation": "En çok saygınlığı olan kullanıcılar", - "users/map": "Kullanıcı Haritası", + "users/banned": "Banned Users", "users/search": "Kullanıcı Ara", "notifications": "Bildirimler", "tags": "Etiketler", diff --git a/public/language/tr/topic.json b/public/language/tr/topic.json index 9d22dbfbcf..b6616f0624 100644 --- a/public/language/tr/topic.json +++ b/public/language/tr/topic.json @@ -35,6 +35,7 @@ "login_to_subscribe": "Lütfen bu iletiyi başlığa üye olmak için giriş yapın.", "markAsUnreadForAll.success": "Başlık herkes için okunmadı olarak işaretlendi.", "mark_unread": "Okunmadı olarak işaretle", + "mark_unread.success": "Topic marked as unread.", "watch": "İzle", "unwatch": "İzleme", "watch.title": "Bu başlığa gelen yeni iletilerden haberdar ol", @@ -104,7 +105,7 @@ "stale.warning": "Yanıtlamak istediğin konu oldukca eskidir. Bu konuya referans oluşturacak yeni bir konu oluşturmak ister misin?", "stale.create": "Yeni bir başlık yarat", "stale.reply_anyway": "Bu konuyu cevapla", - "stale.link_back": "Cevap: [%1](%2)", + "link_back": "Re: [%1](%2)", "spam": "Gereksiz", "offensive": "Saldırgan", "custom-flag-reason": "Şikayetinizin nedenini girin" diff --git a/public/language/tr/users.json b/public/language/tr/users.json index 00c8b00be9..b4b5afe4e4 100644 --- a/public/language/tr/users.json +++ b/public/language/tr/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "%1 kullanıcı(lar) bulundu! Arama %2 saniye sürdü.", "filter-by": "Şu şekilde filtrele", "online-only": "Sadece çevrimiçi", - "picture-only": "Sadece resim", "invite": "Davet et", "invitation-email-sent": "%1'e bir davet maili gönderildi", "user_list": "Kullanıcı Listesi", @@ -17,5 +16,5 @@ "unread_topics": "Okunmamış Başlıklar", "categories": "Kategoriler", "tags": "Etiketler", - "map": "Harita" + "no-users-found": "No users found!" } \ No newline at end of file diff --git a/public/language/vi/error.json b/public/language/vi/error.json index 1b4aa88b32..2d3f6d74dc 100644 --- a/public/language/vi/error.json +++ b/public/language/vi/error.json @@ -14,7 +14,7 @@ "invalid-password": "Mật khẩu không hợp lệ", "invalid-username-or-password": "Xin hãy nhập cả tên đăng nhập và mật khẩu", "invalid-search-term": "Từ khóa không hợp lệ", - "invalid-pagination-value": "Số trang không hợp lệ", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Tên đăng nhập đã tồn tại", "email-taken": "Email đã được đăng kí", "email-not-confirmed": "Email của bạn chưa được xác nhận, xin hãy nhấn vào đây để xác nhận địa chỉ này là của bạn", @@ -83,6 +83,7 @@ "chat-message-too-long": "Chat message is too long", "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "Hệ thống tín nhiệm đã bị vô hiệu hóa.", "downvoting-disabled": "Downvote đã bị tắt", "not-enough-reputation-to-downvote": "Bạn không có đủ phiếu tín nhiệm để downvote bài này", @@ -94,5 +95,6 @@ "wrong-login-type-email": "Please use your email to login", "wrong-login-type-username": "Please use your username to login", "invite-maximum-met": "You have invited the maximum amount of people (%1 out of %2).", - "no-session-found": "No login session found!" + "no-session-found": "No login session found!", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/vi/global.json b/public/language/vi/global.json index afe9dfa539..55d850c49d 100644 --- a/public/language/vi/global.json +++ b/public/language/vi/global.json @@ -63,11 +63,9 @@ "posted_in_by": "posted in %1 by %2", "posted_in_ago": "được đăng trong %1 %2", "posted_in_ago_by": "Đã viết trong %1 %2 bởi %3", - "posted_in_ago_by_guest": "Đã viết trong %1 %2 bởi Khách", - "replied_ago": "Đã trả lời %1", "user_posted_ago": "%1 đã viết %2", "guest_posted_ago": "Khách đã viết %1", - "last_edited_by_ago": "Được chỉnh sửa lần cuối bởi %1 %2", + "last_edited_by": "last edited by %1", "norecentposts": "Không có bài viết nào gần đây", "norecenttopics": "Không có chủ đề gần đây", "recentposts": "Số bài viết gần đây", diff --git a/public/language/vi/pages.json b/public/language/vi/pages.json index 2e0a832280..ea0217f9aa 100644 --- a/public/language/vi/pages.json +++ b/public/language/vi/pages.json @@ -6,11 +6,12 @@ "popular-month": "Popular topics this month", "popular-alltime": "All time popular topics", "recent": "Chủ đề gần đây", + "flagged-posts": "Flagged Posts", "users/online": "Online Users", "users/latest": "Latest Users", "users/sort-posts": "Users with the most posts", "users/sort-reputation": "Users with the most reputation", - "users/map": "User Map", + "users/banned": "Banned Users", "users/search": "User Search", "notifications": "Thông báo", "tags": "Tags", diff --git a/public/language/vi/topic.json b/public/language/vi/topic.json index 25aead85cd..0248c39aad 100644 --- a/public/language/vi/topic.json +++ b/public/language/vi/topic.json @@ -35,6 +35,7 @@ "login_to_subscribe": "Xin hãy đăng ký hoặc đăng nhập để theo dõi topic này", "markAsUnreadForAll.success": "Chủ đề đã được đánh dấu là chưa đọc toàn bộ", "mark_unread": "Mark unread", + "mark_unread.success": "Topic marked as unread.", "watch": "Theo dõi", "unwatch": "Ngừng theo dõi", "watch.title": "Được thông báo khi có trả lời mới trong chủ đề này", @@ -104,7 +105,7 @@ "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", "stale.create": "Create a new topic", "stale.reply_anyway": "Reply to this topic anyway", - "stale.link_back": "Re: [%1](%2)", + "link_back": "Re: [%1](%2)", "spam": "Spam", "offensive": "Offensive", "custom-flag-reason": "Enter a flagging reason" diff --git a/public/language/vi/users.json b/public/language/vi/users.json index 9da6a2e3f1..adf12ca433 100644 --- a/public/language/vi/users.json +++ b/public/language/vi/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter By", "online-only": "Online only", - "picture-only": "Picture only", "invite": "Invite", "invitation-email-sent": "An invitation email has been sent to %1", "user_list": "User List", @@ -17,5 +16,5 @@ "unread_topics": "Unread Topics", "categories": "Categories", "tags": "Tags", - "map": "Map" + "no-users-found": "No users found!" } \ No newline at end of file diff --git a/public/language/zh_CN/error.json b/public/language/zh_CN/error.json index 35d83301ad..730af9e35d 100644 --- a/public/language/zh_CN/error.json +++ b/public/language/zh_CN/error.json @@ -14,7 +14,7 @@ "invalid-password": "无效密码", "invalid-username-or-password": "请确认用户名和密码", "invalid-search-term": "无效的搜索关键字", - "invalid-pagination-value": "无效页码", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "此用户名已被占用", "email-taken": "此电子邮箱已被占用", "email-not-confirmed": "您的电子邮箱尚未确认,请点击这里确认您的电子邮箱。", @@ -83,6 +83,7 @@ "chat-message-too-long": "聊天信息太长", "cant-edit-chat-message": "您不能编辑这条信息", "cant-remove-last-user": "您不能移除这个用户", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "威望系统已禁用。", "downvoting-disabled": "扣分功能已禁用", "not-enough-reputation-to-downvote": "您的威望不足以给此帖扣分", @@ -94,5 +95,6 @@ "wrong-login-type-email": "请输入您的电子邮箱地址登录", "wrong-login-type-username": "请输入您的用户名登录", "invite-maximum-met": "您的邀请人数超出了上限 (%1 超过了 %2)。", - "no-session-found": "未登录!" + "no-session-found": "未登录!", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/zh_CN/global.json b/public/language/zh_CN/global.json index 1c42f1a5a3..0b11cde25a 100644 --- a/public/language/zh_CN/global.json +++ b/public/language/zh_CN/global.json @@ -3,8 +3,8 @@ "search": "搜索", "buttons.close": "关闭", "403.title": "禁止访问", - "403.message": "您遇到了没有权限访问的页面。", - "403.login": "或许您应该 试试登录?", + "403.message": "你似乎没有访问此页面的权限。", + "403.login": "或许您应该先 登录试试?", "404.title": "未找到", "404.message": "您访问的页面不存在。返回首页。", "500.title": "内部错误。", @@ -22,7 +22,7 @@ "pagination.out_of": "%1 / %2", "pagination.enter_index": "输入索引", "header.admin": "管理", - "header.categories": "版面", + "header.categories": "版块", "header.recent": "最新", "header.unread": "未读", "header.tags": "话题", @@ -63,11 +63,9 @@ "posted_in_by": "%2 发布于 %1", "posted_in_ago": "于 %2 发布到 %1 版", "posted_in_ago_by": "%3 于 %1 发布到 %2", - "posted_in_ago_by_guest": "游客于 %1 发布到 %2", - "replied_ago": "回复于 %1", "user_posted_ago": "%1 发布于 %2", "guest_posted_ago": "游客发布于 %1", - "last_edited_by_ago": "%1 于 %2 编辑了帖子", + "last_edited_by": "last edited by %1", "norecentposts": "暂无新帖", "norecenttopics": "暂无新主题", "recentposts": "新帖", diff --git a/public/language/zh_CN/pages.json b/public/language/zh_CN/pages.json index 410cbe11ae..1b8ffa7227 100644 --- a/public/language/zh_CN/pages.json +++ b/public/language/zh_CN/pages.json @@ -6,11 +6,12 @@ "popular-month": "当月热门话题", "popular-alltime": "热门主题", "recent": "最新主题", + "flagged-posts": "Flagged Posts", "users/online": "在线会员", "users/latest": "最新会员", "users/sort-posts": "最多发帖的会员", "users/sort-reputation": "最多积分的会员", - "users/map": "会员地图", + "users/banned": "Banned Users", "users/search": "会员搜索", "notifications": "提醒", "tags": "话题", diff --git a/public/language/zh_CN/topic.json b/public/language/zh_CN/topic.json index 25f8710b8a..eb76dc0eaf 100644 --- a/public/language/zh_CN/topic.json +++ b/public/language/zh_CN/topic.json @@ -35,6 +35,7 @@ "login_to_subscribe": "请注册或登录后,再订阅此主题。", "markAsUnreadForAll.success": "将全部主题标为未读。", "mark_unread": "标记为未读", + "mark_unread.success": "Topic marked as unread.", "watch": "关注", "unwatch": "取消关注", "watch.title": "当此主题有新回复时,通知我", @@ -104,7 +105,7 @@ "stale.warning": "您回复的主题已经非常老了。开个新帖,然后在新帖中引用这个老帖的内容,可以吗?", "stale.create": "创建新主题", "stale.reply_anyway": "仍然回复此帖", - "stale.link_back": "回复: [%1](%2)", + "link_back": "Re: [%1](%2)", "spam": "垃圾帖", "offensive": "人身攻击", "custom-flag-reason": "输入举报原因" diff --git a/public/language/zh_CN/users.json b/public/language/zh_CN/users.json index 1f970cb15f..51e8d6d3d9 100644 --- a/public/language/zh_CN/users.json +++ b/public/language/zh_CN/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "找到 %1 位用户!耗时 %2 毫秒。", "filter-by": "过滤选项", "online-only": "只看在线", - "picture-only": "只看图片", "invite": "邀请注册", "invitation-email-sent": "已发送邀请给 %1", "user_list": "会员列表", @@ -17,5 +16,5 @@ "unread_topics": "未读主题", "categories": "版面", "tags": "话题", - "map": "地图" + "no-users-found": "No users found!" } \ No newline at end of file diff --git a/public/language/zh_TW/error.json b/public/language/zh_TW/error.json index e044f4fa43..c36a4ed0bb 100644 --- a/public/language/zh_TW/error.json +++ b/public/language/zh_TW/error.json @@ -14,7 +14,7 @@ "invalid-password": "無效的密碼", "invalid-username-or-password": "請指定用戶名和密碼", "invalid-search-term": "無效的搜索字詞", - "invalid-pagination-value": "無效的分頁數值", + "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "該使用者名稱已被使用", "email-taken": "該信箱已被使用", "email-not-confirmed": "您的電郵尚未得到確認,請點擊此處確認您的電子郵件。", @@ -83,6 +83,7 @@ "chat-message-too-long": "Chat message is too long", "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", + "cant-delete-chat-message": "You are not allowed to delete this message", "reputation-system-disabled": "信譽系統已停用。", "downvoting-disabled": "Downvoting已停用", "not-enough-reputation-to-downvote": "你沒有足夠的信譽downvote這個帖子", @@ -94,5 +95,6 @@ "wrong-login-type-email": "請使用您的電子郵件進行登錄", "wrong-login-type-username": "請使用您的使用者名稱進行登錄", "invite-maximum-met": "You have invited the maximum amount of people (%1 out of %2).", - "no-session-found": "No login session found!" + "no-session-found": "No login session found!", + "not-in-room": "User not in room" } \ No newline at end of file diff --git a/public/language/zh_TW/global.json b/public/language/zh_TW/global.json index 7792a1963a..82d1ff0589 100644 --- a/public/language/zh_TW/global.json +++ b/public/language/zh_TW/global.json @@ -63,11 +63,9 @@ "posted_in_by": "posted in %1 by %2", "posted_in_ago": "posted in %1", "posted_in_ago_by": "posted in %1 %2 by %3", - "posted_in_ago_by_guest": "posted in %1 %2 by Guest", - "replied_ago": "回覆 %1", "user_posted_ago": "%1 posted %2", "guest_posted_ago": "Guest posted %1", - "last_edited_by_ago": "最後由 %1 %2 所編輯", + "last_edited_by": "last edited by %1", "norecentposts": "最近沒新文章", "norecenttopics": "最近沒新主題", "recentposts": "最近的文章", diff --git a/public/language/zh_TW/pages.json b/public/language/zh_TW/pages.json index c9d53693d5..be4eda4d90 100644 --- a/public/language/zh_TW/pages.json +++ b/public/language/zh_TW/pages.json @@ -6,11 +6,12 @@ "popular-month": "Popular topics this month", "popular-alltime": "All time popular topics", "recent": "近期的主題", + "flagged-posts": "Flagged Posts", "users/online": "Online Users", "users/latest": "Latest Users", "users/sort-posts": "Users with the most posts", "users/sort-reputation": "Users with the most reputation", - "users/map": "User Map", + "users/banned": "Banned Users", "users/search": "User Search", "notifications": "新訊息通知", "tags": "標籤", diff --git a/public/language/zh_TW/topic.json b/public/language/zh_TW/topic.json index af8b24ef3d..39184aa828 100644 --- a/public/language/zh_TW/topic.json +++ b/public/language/zh_TW/topic.json @@ -35,6 +35,7 @@ "login_to_subscribe": "請先註冊或登錄, 才可訂閱此主題.", "markAsUnreadForAll.success": "將全部的主題設為未讀.", "mark_unread": "Mark unread", + "mark_unread.success": "Topic marked as unread.", "watch": "關注", "unwatch": "取消關注", "watch.title": "當主題有新回覆時將收到通知", @@ -104,7 +105,7 @@ "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", "stale.create": "Create a new topic", "stale.reply_anyway": "Reply to this topic anyway", - "stale.link_back": "Re: [%1](%2)", + "link_back": "Re: [%1](%2)", "spam": "Spam", "offensive": "Offensive", "custom-flag-reason": "Enter a flagging reason" diff --git a/public/language/zh_TW/users.json b/public/language/zh_TW/users.json index 783eb62781..9d42c05416 100644 --- a/public/language/zh_TW/users.json +++ b/public/language/zh_TW/users.json @@ -8,7 +8,6 @@ "users-found-search-took": "發現 %1 用戶!搜尋只用 %2 秒。", "filter-by": "Filter By", "online-only": "線上僅有", - "picture-only": "圖片僅有", "invite": "Invite", "invitation-email-sent": "An invitation email has been sent to %1", "user_list": "User List", @@ -17,5 +16,5 @@ "unread_topics": "Unread Topics", "categories": "Categories", "tags": "Tags", - "map": "Map" + "no-users-found": "No users found!" } \ No newline at end of file From 637c20f44deee5abd3013893ca0a0699d02881be Mon Sep 17 00:00:00 2001 From: psychobunny Date: Tue, 23 Feb 2016 14:16:42 -0500 Subject: [PATCH 062/124] closes #3526 --- public/src/admin/extend/plugins.js | 10 ++++++++++ src/views/admin/extend/plugins.tpl | 16 +++++++++------- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/public/src/admin/extend/plugins.js b/public/src/admin/extend/plugins.js index f3bbe030d5..6062cd8695 100644 --- a/public/src/admin/extend/plugins.js +++ b/public/src/admin/extend/plugins.js @@ -139,6 +139,8 @@ define('admin/extend/plugins', function() { $('#order-active-plugins-modal').modal('hide'); }); }); + + populateUpgradeablePlugins(); }; function confirmInstall(pluginID, callback) { @@ -225,5 +227,13 @@ define('admin/extend/plugins', function() { }).fail(callback); }; + function populateUpgradeablePlugins() { + $('#installed ul li').each(function() { + if ($(this).children('[data-action="upgrade"]').length) { + $('#upgrade ul').append($(this)); + } + }); + } + return Plugins; }); diff --git a/src/views/admin/extend/plugins.tpl b/src/views/admin/extend/plugins.tpl index 2f786c0622..ac6781c66b 100644 --- a/src/views/admin/extend/plugins.tpl +++ b/src/views/admin/extend/plugins.tpl @@ -1,6 +1,7 @@
@@ -15,13 +16,14 @@
-
-
    - - - -
-
+
    + + + +
+
+
+
    From b18052210da226a516b06b186f58a779fb64e2bf Mon Sep 17 00:00:00 2001 From: psychobunny Date: Tue, 23 Feb 2016 14:23:57 -0500 Subject: [PATCH 063/124] closes #3146 --- src/widgets/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/widgets/index.js b/src/widgets/index.js index f031f47e11..c1421b44b6 100644 --- a/src/widgets/index.js +++ b/src/widgets/index.js @@ -128,7 +128,9 @@ widgets.setArea = function(area, callback) { widgets.reset = function(callback) { var defaultAreas = [ - { name: 'Draft Zone', template: 'global', location: 'drafts' } + { name: 'Draft Zone', template: 'global', location: 'header' }, + { name: 'Draft Zone', template: 'global', location: 'footer' }, + { name: 'Draft Zone', template: 'global', location: 'sidebar' } ]; plugins.fireHook('filter:widgets.getAreas', defaultAreas, function(err, areas) { From efb6a9fe7eef0f6c63b0a5ec62e9fffe5bbe4cd8 Mon Sep 17 00:00:00 2001 From: psychobunny Date: Tue, 23 Feb 2016 14:26:16 -0500 Subject: [PATCH 064/124] added option to skip asset compilation on initial grunt startup with --skip flag --- Gruntfile.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Gruntfile.js b/Gruntfile.js index cb765776be..36c054445f 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -69,7 +69,13 @@ module.exports = function(grunt) { }); grunt.loadNpmTasks('grunt-contrib-watch'); - grunt.registerTask('default', ['watch']); + + if (grunt.option('skip')) { + grunt.registerTask('default', ['watch:serverUpdated']); + } else { + grunt.registerTask('default', ['watch']); + } + env.NODE_ENV = 'development'; From 991d85cae2a8caaa1605f928f1a4a5fd35f98696 Mon Sep 17 00:00:00 2001 From: pichalite Date: Tue, 23 Feb 2016 20:30:25 +0000 Subject: [PATCH 065/124] account for search input when calculating recent list height on expanded chats --- public/src/client/chats.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/public/src/client/chats.js b/public/src/client/chats.js index f56dcf6d33..58e5afe904 100644 --- a/public/src/client/chats.js +++ b/public/src/client/chats.js @@ -411,10 +411,13 @@ define('forum/chats', ['components', 'string', 'sounds', 'forum/infinitescroll', if (messagesList.length) { var margin = $('.expanded-chat ul').outerHeight(true) - $('.expanded-chat ul').height(), inputHeight = $('.chat-input').outerHeight(true), - fromTop = messagesList.offset().top; + fromTop = messagesList.offset().top, + searchHeight = $('.chat-search').height(), + searchListHeight = $('[component="chat/search/list"]').outerHeight(true) - $('[component="chat/search/list"]').height(); messagesList.height($(window).height() - (fromTop + inputHeight + (margin * 4))); - components.get('chat/recent').height($('.expanded-chat').height()); + components.get('chat/recent').height($('.expanded-chat').height() - (searchHeight + searchListHeight)); + $('[component="chat/search/list"]').css('max-height', components.get('chat/recent').height()/2 + 'px'); } Chats.setActive(); From e069150625705651a36227e568d8a3a526a59e22 Mon Sep 17 00:00:00 2001 From: psychobunny Date: Tue, 23 Feb 2016 16:06:02 -0500 Subject: [PATCH 066/124] closes #2165 --- public/src/admin/settings.js | 7 +- src/controllers/admin/uploads.js | 29 ++++++++ src/meta/sounds.js | 111 ++++++++++++++++------------ src/routes/admin.js | 1 + src/views/admin/general/sounds.tpl | 112 +++++++++++++++++------------ 5 files changed, 169 insertions(+), 91 deletions(-) diff --git a/public/src/admin/settings.js b/public/src/admin/settings.js index 117857d5ec..273b7be0a3 100644 --- a/public/src/admin/settings.js +++ b/public/src/admin/settings.js @@ -116,7 +116,12 @@ define('admin/settings', ['uploader', 'sounds'], function(uploader, sounds) { fileSize: 0, showHelp: uploadBtn.attr('data-help') ? uploadBtn.attr('data-help') === 1 : undefined }, function(image) { - $('#' + uploadBtn.attr('data-target')).val(image); + // need to move these into template, ex data-callback + if (ajaxify.currentPage === 'admin/general/sounds') { + ajaxify.refresh(); + } else { + $('#' + uploadBtn.attr('data-target')).val(image); + } }); }); }); diff --git a/src/controllers/admin/uploads.js b/src/controllers/admin/uploads.js index eb6a4a59f4..5f582bc117 100644 --- a/src/controllers/admin/uploads.js +++ b/src/controllers/admin/uploads.js @@ -93,6 +93,33 @@ uploadsController.uploadLogo = function(req, res, next) { upload('site-logo', req, res, next); }; +uploadsController.uploadSound = function(req, res, next) { + var uploadedFile = req.files.files[0]; + + file.saveFileToLocal(uploadedFile.name, 'sounds', uploadedFile.path, function(err) { + if (err) { + return next(err); + } + + var soundsPath = path.join(__dirname, '../../../public/sounds'), + filePath = path.join(__dirname, '../../../public/uploads/sounds', uploadedFile.name); + + if (process.platform === 'win32') { + fs.link(filePath, path.join(soundsPath, path.basename(filePath))); + } else { + fs.symlink(filePath, path.join(soundsPath, path.basename(filePath)), 'file'); + } + + fs.unlink(uploadedFile.path, function(err) { + if (err) { + return next(err); + } + + res.json([{}]); + }); + }); +}; + uploadsController.uploadDefaultAvatar = function(req, res, next) { upload('avatar-default', req, res, next); }; @@ -131,7 +158,9 @@ function uploadImage(filename, folder, uploadedFile, req, res, next) { if (err) { return next(err); } + res.json([{name: uploadedFile.name, url: image.url.startsWith('http') ? image.url : nconf.get('relative_path') + image.url}]); + next(); } if (plugins.hasListeners('filter:uploadImage')) { diff --git a/src/meta/sounds.js b/src/meta/sounds.js index 30f1f9e165..d13ecd70cd 100644 --- a/src/meta/sounds.js +++ b/src/meta/sounds.js @@ -17,48 +17,7 @@ module.exports = function(Meta) { Meta.sounds.init = function(callback) { if (nconf.get('isPrimary') === 'true') { - var soundsPath = path.join(__dirname, '../../public/sounds'); - - plugins.fireHook('filter:sounds.get', [], function(err, filePaths) { - if (err) { - winston.error('Could not initialise sound files:' + err.message); - return; - } - - // Clear the sounds directory - async.series([ - function(next) { - rimraf(soundsPath, next); - }, - function(next) { - mkdirp(soundsPath, next); - } - ], function(err) { - if (err) { - winston.error('Could not initialise sound files:' + err.message); - return; - } - - // Link paths - async.each(filePaths, function(filePath, next) { - if (process.platform === 'win32') { - fs.link(filePath, path.join(soundsPath, path.basename(filePath)), next); - } else { - fs.symlink(filePath, path.join(soundsPath, path.basename(filePath)), 'file', next); - } - }, function(err) { - if (!err) { - winston.verbose('[sounds] Sounds OK'); - } else { - winston.error('[sounds] Could not initialise sounds: ' + err.message); - } - - if (typeof callback === 'function') { - callback(); - } - }); - }); - }); + setupSounds(callback); } else { if (typeof callback === 'function') { callback(); @@ -67,8 +26,16 @@ module.exports = function(Meta) { }; Meta.sounds.getFiles = function(callback) { - // todo: Possibly move these into a bundled module? - fs.readdir(path.join(__dirname, '../../public/sounds'), function(err, files) { + async.waterfall([ + function(next) { + fs.readdir(path.join(__dirname, '../../public/sounds'), next); + }, + function(sounds, next) { + fs.readdir(path.join(__dirname, '../../public/uploads/sounds'), function(err, uploaded) { + next(err, sounds.concat(uploaded)); + }); + } + ], function(err, files) { var localList = {}; if (err) { @@ -102,4 +69,60 @@ module.exports = function(Meta) { callback(null, sounds); }); }; + + function setupSounds(callback) { + var soundsPath = path.join(__dirname, '../../public/sounds'); + + async.waterfall([ + function(next) { + fs.readdir(path.join(__dirname, '../../public/uploads/sounds'), next); + }, + function(uploaded, next) { + uploaded = uploaded.map(function(filename) { + return path.join(__dirname, '../../public/uploads/sounds', filename); + }); + + plugins.fireHook('filter:sounds.get', uploaded, function(err, filePaths) { + if (err) { + winston.error('Could not initialise sound files:' + err.message); + return; + } + + // Clear the sounds directory + async.series([ + function(next) { + rimraf(soundsPath, next); + }, + function(next) { + mkdirp(soundsPath, next); + } + ], function(err) { + if (err) { + winston.error('Could not initialise sound files:' + err.message); + return; + } + + // Link paths + async.each(filePaths, function(filePath, next) { + if (process.platform === 'win32') { + fs.link(filePath, path.join(soundsPath, path.basename(filePath)), next); + } else { + fs.symlink(filePath, path.join(soundsPath, path.basename(filePath)), 'file', next); + } + }, function(err) { + if (!err) { + winston.verbose('[sounds] Sounds OK'); + } else { + winston.error('[sounds] Could not initialise sounds: ' + err.message); + } + + if (typeof callback === 'function') { + callback(); + } + }); + }); + }); + } + ], callback); + } }; \ No newline at end of file diff --git a/src/routes/admin.js b/src/routes/admin.js index e5121ac0f9..9424a1cda3 100644 --- a/src/routes/admin.js +++ b/src/routes/admin.js @@ -15,6 +15,7 @@ function apiRoutes(router, middleware, controllers) { router.post('/uploadfavicon', middlewares, controllers.admin.uploads.uploadFavicon); router.post('/uploadTouchIcon', middlewares, controllers.admin.uploads.uploadTouchIcon); router.post('/uploadlogo', middlewares, controllers.admin.uploads.uploadLogo); + router.post('/upload/sound', middlewares, controllers.admin.uploads.uploadSound); router.post('/uploadDefaultAvatar', middlewares, controllers.admin.uploads.uploadDefaultAvatar); } diff --git a/src/views/admin/general/sounds.tpl b/src/views/admin/general/sounds.tpl index 13156c9ce4..b0e4ce071e 100644 --- a/src/views/admin/general/sounds.tpl +++ b/src/views/admin/general/sounds.tpl @@ -1,62 +1,82 @@
    -
    -
    -
    Notifications
    -
    - -
    -
    - -
    -
    - +
    + +
    +
    Notifications
    +
    + +
    +
    + +
    +
    + +
    -
    -
    -
    Chat Messages
    -
    - -
    -
    - +
    +
    Chat Messages
    +
    + +
    +
    + +
    +
    + +
    -
    - + + +
    +
    + +
    +
    + +
    +
    + +
    - -
    -
    - -
    -
    - -
    +
    +
    +
    +
    + + +
    - +
    \ No newline at end of file + + + \ No newline at end of file From 99719414feb1526cd18f6b5d5f76b1dedd6146e7 Mon Sep 17 00:00:00 2001 From: psychobunny Date: Tue, 23 Feb 2016 17:10:34 -0500 Subject: [PATCH 067/124] closes #4052 --- src/user/create.js | 7 +++++++ src/views/admin/settings/general.tpl | 20 ++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/src/user/create.js b/src/user/create.js index 1d1543e863..fe67b4a728 100644 --- a/src/user/create.js +++ b/src/user/create.js @@ -75,6 +75,13 @@ module.exports = function(User) { userData.uid = uid; db.setObject('user:' + uid, userData, next); }, + function(next) { + if (parseInt(meta.config['sounds:default_enabled'], 10) === 1) { + return User.setSetting(userData.uid, 'notificationSounds', 1, next); + } + + next(); + }, function(next) { async.parallel([ function(next) { diff --git a/src/views/admin/settings/general.tpl b/src/views/admin/settings/general.tpl index 147657195e..a9ab0a96ff 100644 --- a/src/views/admin/settings/general.tpl +++ b/src/views/admin/settings/general.tpl @@ -64,6 +64,26 @@
    + +
    +
    + Sounds +
    +
    +
    +
    + +
    +

    + Users can toggle this setting in their profile settings page. +

    +
    +
    +
    +
    Favicon From 911892c5b0ff8589cfadf9902f47720bdd4aa98f Mon Sep 17 00:00:00 2001 From: psychobunny Date: Tue, 23 Feb 2016 17:17:55 -0500 Subject: [PATCH 068/124] closes #3870 --- src/controllers/accounts/settings.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/controllers/accounts/settings.js b/src/controllers/accounts/settings.js index 7d6ebfdeef..3631f85db9 100644 --- a/src/controllers/accounts/settings.js +++ b/src/controllers/accounts/settings.js @@ -21,7 +21,13 @@ settingsController.get = function(req, res, callback) { var userData; async.waterfall([ function(next) { - accountHelpers.getBaseUser(req.params.userslug, req.uid, next); + user.getIPs(req.uid, 4, next); + }, + function(ips, next) { + accountHelpers.getBaseUser(req.params.userslug, req.uid, function(err, data) { + data.ips = ips; + next(err, data); + }); }, function(_userData, next) { userData = _userData; From 27d4426e06987f7e1e1d70a928ec721c0f00dffd Mon Sep 17 00:00:00 2001 From: psychobunny Date: Tue, 23 Feb 2016 17:19:06 -0500 Subject: [PATCH 069/124] up persona --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index afe7528a29..d608c34a4f 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "nodebb-plugin-spam-be-gone": "0.4.5", "nodebb-rewards-essentials": "0.0.6", "nodebb-theme-lavender": "3.0.8", - "nodebb-theme-persona": "4.0.79", + "nodebb-theme-persona": "4.0.80", "nodebb-theme-vanilla": "5.0.47", "nodebb-widget-essentials": "2.0.6", "nodemailer": "2.0.0", From b74022689f190ef9fd3303101133ad8f584af4e8 Mon Sep 17 00:00:00 2001 From: psychobunny Date: Tue, 23 Feb 2016 17:29:57 -0500 Subject: [PATCH 070/124] closes #4174 --- public/less/admin/mobile.less | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/less/admin/mobile.less b/public/less/admin/mobile.less index 2d664a5b9c..a324072679 100644 --- a/public/less/admin/mobile.less +++ b/public/less/admin/mobile.less @@ -6,7 +6,7 @@ } -@media (max-width: 980px) { +@media (max-width: 991px) { body { height: 100%; } From f51698804ae0ab16043005caad98247a376c266a Mon Sep 17 00:00:00 2001 From: psychobunny Date: Tue, 23 Feb 2016 17:41:06 -0500 Subject: [PATCH 071/124] closes #4177 --- public/vendor/bootbox/bootbox.min.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/public/vendor/bootbox/bootbox.min.js b/public/vendor/bootbox/bootbox.min.js index 1ce83d9ddd..1f85a1cf9e 100644 --- a/public/vendor/bootbox/bootbox.min.js +++ b/public/vendor/bootbox/bootbox.min.js @@ -1,6 +1,7 @@ /** - * bootbox.js v4.0.0 + * bootbox.js v4.4.0 * * http://bootboxjs.com/license.txt + * psychobunny - Removed require.js requirement */ -window.bootbox=window.bootbox||function a(b,c){"use strict";function d(a){var b=s[q.locale];return b?b[a]:s.en[a]}function e(a,c,d){a.preventDefault();var e=b.isFunction(d)&&d(a)===!1;e||c.modal("hide")}function f(a){var b,c=0;for(b in a)c++;return c}function g(a,c){var d=0;b.each(a,function(a,b){c(a,b,d++)})}function h(a){var c,d;if("object"!=typeof a)throw new Error("Please supply an object of options");if(!a.message)throw new Error("Please specify a message");return a=b.extend({},q,a),a.buttons||(a.buttons={}),a.backdrop=a.backdrop?"static":!1,c=a.buttons,d=f(c),g(c,function(a,e,f){if(b.isFunction(e)&&(e=c[a]={callback:e}),"object"!==b.type(e))throw new Error("button with key "+a+" must be an object");e.label||(e.label=a),e.className||(e.className=2>=d&&f===d-1?"btn-primary":"btn-default")}),a}function i(a,b){var c=a.length,d={};if(1>c||c>2)throw new Error("Invalid argument length");return 2===c||"string"==typeof a[0]?(d[b[0]]=a[0],d[b[1]]=a[1]):d=a[0],d}function j(a,c,d){return b.extend(!0,{},a,i(c,d))}function k(a,b,c){return n(j(m.apply(null,a),b,c),a)}function l(){for(var a={},b=0,c=arguments.length;c>b;b++){var e=arguments[b],f=e.toLowerCase(),g=e.toUpperCase();a[f]={label:d(g)}}return a}function m(){return{buttons:l.apply(null,arguments)}}function n(a,b){var d={};return g(b,function(a,b){d[b]=!0}),g(a.buttons,function(a){if(d[a]===c)throw new Error("button key "+a+" is not allowed (options are "+b.join("\n")+")")}),a}var o={dialog:"",header:"",footer:"",closeButton:"",form:"
    ",inputs:{text:""}},p=b("body"),q={locale:"en",backdrop:!0,animate:!0,className:null,closeButton:!0,show:!0},r={};r.alert=function(){var a;if(a=k(["ok"],arguments,["message","callback"]),a.callback&&!b.isFunction(a.callback))throw new Error("alert requires callback property to be a function when provided");return a.buttons.ok.callback=a.onEscape=function(){return b.isFunction(a.callback)?a.callback():!0},r.dialog(a)},r.confirm=function(){var a;if(a=k(["cancel","confirm"],arguments,["message","callback"]),a.buttons.cancel.callback=a.onEscape=function(){return a.callback(!1)},a.buttons.confirm.callback=function(){return a.callback(!0)},!b.isFunction(a.callback))throw new Error("confirm requires a callback");return r.dialog(a)},r.prompt=function(){var a,d,e,f,g,h;if(f=b(o.form),d={buttons:l("cancel","confirm"),value:""},a=n(j(d,arguments,["title","callback"]),["cancel","confirm"]),h=a.show===c?!0:a.show,a.message=f,a.buttons.cancel.callback=a.onEscape=function(){return a.callback(null)},a.buttons.confirm.callback=function(){return a.callback(g.val())},a.show=!1,!a.title)throw new Error("prompt requires a title");if(!b.isFunction(a.callback))throw new Error("prompt requires a callback");return g=b(o.inputs.text),g.val(a.value),f.append(g),f.on("submit",function(a){a.preventDefault(),e.find(".btn-primary").click()}),e=r.dialog(a),e.off("shown.bs.modal"),e.on("shown.bs.modal",function(){g.focus()}),h===!0&&e.modal("show"),e},r.dialog=function(a){a=h(a);var c=b(o.dialog),d=c.find(".modal-body"),f=a.buttons,i="",j={onEscape:a.onEscape};if(g(f,function(a,b){i+="",j[a]=b.callback}),d.find(".bootbox-body").html(a.message),a.animate===!0&&c.addClass("fade"),a.className&&c.addClass(a.className),a.title&&d.before(o.header),a.closeButton){var k=b(o.closeButton);a.title?c.find(".modal-header").prepend(k):k.css("margin-top","-10px").prependTo(d)}return a.title&&c.find(".modal-title").html(a.title),i.length&&(d.after(o.footer),c.find(".modal-footer").html(i)),c.on("hidden.bs.modal",function(a){a.target===this&&c.remove()}),c.on("shown.bs.modal",function(){c.find(".btn-primary:first").focus()}),c.on("escape.close.bb",function(a){j.onEscape&&e(a,c,j.onEscape)}),c.on("click",".modal-footer button",function(a){var d=b(this).data("bb-handler");e(a,c,j[d])}),c.on("click",".bootbox-close-button",function(a){e(a,c,j.onEscape)}),c.on("keyup",function(a){27===a.which&&c.trigger("escape.close.bb")}),p.append(c),c.modal({backdrop:a.backdrop,keyboard:!1,show:!1}),a.show&&c.modal("show"),c},r.setDefaults=function(a){b.extend(q,a)},r.hideAll=function(){b(".bootbox").modal("hide")};var s={br:{OK:"OK",CANCEL:"Cancelar",CONFIRM:"Sim"},da:{OK:"OK",CANCEL:"Annuller",CONFIRM:"Accepter"},de:{OK:"OK",CANCEL:"Abbrechen",CONFIRM:"Akzeptieren"},en:{OK:"[[modules:bootbox.ok]]",CANCEL:"[[modules:bootbox.cancel]]",CONFIRM:"[[modules:bootbox.confirm]]"},es:{OK:"OK",CANCEL:"Cancelar",CONFIRM:"Aceptar"},fi:{OK:"OK",CANCEL:"Peruuta",CONFIRM:"OK"},fr:{OK:"OK",CANCEL:"Annuler",CONFIRM:"D'accord"},it:{OK:"OK",CANCEL:"Annulla",CONFIRM:"Conferma"},nl:{OK:"OK",CANCEL:"Annuleren",CONFIRM:"Accepteren"},pl:{OK:"OK",CANCEL:"Anuluj",CONFIRM:"Potwierdź"},ru:{OK:"OK",CANCEL:"Отмена",CONFIRM:"Применить"},zh_CN:{OK:"OK",CANCEL:"取消",CONFIRM:"确认"},zh_TW:{OK:"OK",CANCEL:"取消",CONFIRM:"確認"}};return r.init=function(c){window.bootbox=a(c||b)},r}(window.jQuery); \ No newline at end of file +!function(a,b){"use strict";a.bootbox=b(a.jQuery)}(this,function a(b,c){"use strict";function d(a){var b=q[o.locale];return b?b[a]:q.en[a]}function e(a,c,d){a.stopPropagation(),a.preventDefault();var e=b.isFunction(d)&&d.call(c,a)===!1;e||c.modal("hide")}function f(a){var b,c=0;for(b in a)c++;return c}function g(a,c){var d=0;b.each(a,function(a,b){c(a,b,d++)})}function h(a){var c,d;if("object"!=typeof a)throw new Error("Please supply an object of options");if(!a.message)throw new Error("Please specify a message");return a=b.extend({},o,a),a.buttons||(a.buttons={}),c=a.buttons,d=f(c),g(c,function(a,e,f){if(b.isFunction(e)&&(e=c[a]={callback:e}),"object"!==b.type(e))throw new Error("button with key "+a+" must be an object");e.label||(e.label=a),e.className||(e.className=2>=d&&f===d-1?"btn-primary":"btn-default")}),a}function i(a,b){var c=a.length,d={};if(1>c||c>2)throw new Error("Invalid argument length");return 2===c||"string"==typeof a[0]?(d[b[0]]=a[0],d[b[1]]=a[1]):d=a[0],d}function j(a,c,d){return b.extend(!0,{},a,i(c,d))}function k(a,b,c,d){var e={className:"bootbox-"+a,buttons:l.apply(null,b)};return m(j(e,d,c),b)}function l(){for(var a={},b=0,c=arguments.length;c>b;b++){var e=arguments[b],f=e.toLowerCase(),g=e.toUpperCase();a[f]={label:d(g)}}return a}function m(a,b){var d={};return g(b,function(a,b){d[b]=!0}),g(a.buttons,function(a){if(d[a]===c)throw new Error("button key "+a+" is not allowed (options are "+b.join("\n")+")")}),a}var n={dialog:"",header:"",footer:"",closeButton:"",form:"
    ",inputs:{text:"",textarea:"",email:"",select:"",checkbox:"
    ",date:"",time:"",number:"",password:""}},o={locale:"en",backdrop:"static",animate:!0,className:null,closeButton:!0,show:!0,container:"body"},p={};p.alert=function(){var a;if(a=k("alert",["ok"],["message","callback"],arguments),a.callback&&!b.isFunction(a.callback))throw new Error("alert requires callback property to be a function when provided");return a.buttons.ok.callback=a.onEscape=function(){return b.isFunction(a.callback)?a.callback.call(this):!0},p.dialog(a)},p.confirm=function(){var a;if(a=k("confirm",["cancel","confirm"],["message","callback"],arguments),a.buttons.cancel.callback=a.onEscape=function(){return a.callback.call(this,!1)},a.buttons.confirm.callback=function(){return a.callback.call(this,!0)},!b.isFunction(a.callback))throw new Error("confirm requires a callback");return p.dialog(a)},p.prompt=function(){var a,d,e,f,h,i,k;if(f=b(n.form),d={className:"bootbox-prompt",buttons:l("cancel","confirm"),value:"",inputType:"text"},a=m(j(d,arguments,["title","callback"]),["cancel","confirm"]),i=a.show===c?!0:a.show,a.message=f,a.buttons.cancel.callback=a.onEscape=function(){return a.callback.call(this,null)},a.buttons.confirm.callback=function(){var c;switch(a.inputType){case"text":case"textarea":case"email":case"select":case"date":case"time":case"number":case"password":c=h.val();break;case"checkbox":var d=h.find("input:checked");c=[],g(d,function(a,d){c.push(b(d).val())})}return a.callback.call(this,c)},a.show=!1,!a.title)throw new Error("prompt requires a title");if(!b.isFunction(a.callback))throw new Error("prompt requires a callback");if(!n.inputs[a.inputType])throw new Error("invalid prompt type");switch(h=b(n.inputs[a.inputType]),a.inputType){case"text":case"textarea":case"email":case"date":case"time":case"number":case"password":h.val(a.value);break;case"select":var o={};if(k=a.inputOptions||[],!b.isArray(k))throw new Error("Please pass an array of input options");if(!k.length)throw new Error("prompt with select requires options");g(k,function(a,d){var e=h;if(d.value===c||d.text===c)throw new Error("given options in wrong format");d.group&&(o[d.group]||(o[d.group]=b("").attr("label",d.group)),e=o[d.group]),e.append("")}),g(o,function(a,b){h.append(b)}),h.val(a.value);break;case"checkbox":var q=b.isArray(a.value)?a.value:[a.value];if(k=a.inputOptions||[],!k.length)throw new Error("prompt with checkbox requires options");if(!k[0].value||!k[0].text)throw new Error("given options in wrong format");h=b("
    "),g(k,function(c,d){var e=b(n.inputs[a.inputType]);e.find("input").attr("value",d.value),e.find("label").append(d.text),g(q,function(a,b){b===d.value&&e.find("input").prop("checked",!0)}),h.append(e)})}return a.placeholder&&h.attr("placeholder",a.placeholder),a.pattern&&h.attr("pattern",a.pattern),a.maxlength&&h.attr("maxlength",a.maxlength),f.append(h),f.on("submit",function(a){a.preventDefault(),a.stopPropagation(),e.find(".btn-primary").click()}),e=p.dialog(a),e.off("shown.bs.modal"),e.on("shown.bs.modal",function(){h.focus()}),i===!0&&e.modal("show"),e},p.dialog=function(a){a=h(a);var d=b(n.dialog),f=d.find(".modal-dialog"),i=d.find(".modal-body"),j=a.buttons,k="",l={onEscape:a.onEscape};if(b.fn.modal===c)throw new Error("$.fn.modal is not defined; please double check you have included the Bootstrap JavaScript library. See http://getbootstrap.com/javascript/ for more details.");if(g(j,function(a,b){k+="",l[a]=b.callback}),i.find(".bootbox-body").html(a.message),a.animate===!0&&d.addClass("fade"),a.className&&d.addClass(a.className),"large"===a.size?f.addClass("modal-lg"):"small"===a.size&&f.addClass("modal-sm"),a.title&&i.before(n.header),a.closeButton){var m=b(n.closeButton);a.title?d.find(".modal-header").prepend(m):m.css("margin-top","-10px").prependTo(i)}return a.title&&d.find(".modal-title").html(a.title),k.length&&(i.after(n.footer),d.find(".modal-footer").html(k)),d.on("hidden.bs.modal",function(a){a.target===this&&d.remove()}),d.on("shown.bs.modal",function(){d.find(".btn-primary:first").focus()}),"static"!==a.backdrop&&d.on("click.dismiss.bs.modal",function(a){d.children(".modal-backdrop").length&&(a.currentTarget=d.children(".modal-backdrop").get(0)),a.target===a.currentTarget&&d.trigger("escape.close.bb")}),d.on("escape.close.bb",function(a){l.onEscape&&e(a,d,l.onEscape)}),d.on("click",".modal-footer button",function(a){var c=b(this).data("bb-handler");e(a,d,l[c])}),d.on("click",".bootbox-close-button",function(a){e(a,d,l.onEscape)}),d.on("keyup",function(a){27===a.which&&d.trigger("escape.close.bb")}),b(a.container).append(d),d.modal({backdrop:a.backdrop?"static":!1,keyboard:!1,show:!1}),a.show&&d.modal("show"),d},p.setDefaults=function(){var a={};2===arguments.length?a[arguments[0]]=arguments[1]:a=arguments[0],b.extend(o,a)},p.hideAll=function(){return b(".bootbox").modal("hide"),p};var q={bg_BG:{OK:"Ок",CANCEL:"Отказ",CONFIRM:"Потвърждавам"},br:{OK:"OK",CANCEL:"Cancelar",CONFIRM:"Sim"},cs:{OK:"OK",CANCEL:"Zrušit",CONFIRM:"Potvrdit"},da:{OK:"OK",CANCEL:"Annuller",CONFIRM:"Accepter"},de:{OK:"OK",CANCEL:"Abbrechen",CONFIRM:"Akzeptieren"},el:{OK:"Εντάξει",CANCEL:"Ακύρωση",CONFIRM:"Επιβεβαίωση"},en:{OK:"OK",CANCEL:"Cancel",CONFIRM:"OK"},es:{OK:"OK",CANCEL:"Cancelar",CONFIRM:"Aceptar"},et:{OK:"OK",CANCEL:"Katkesta",CONFIRM:"OK"},fa:{OK:"قبول",CANCEL:"لغو",CONFIRM:"تایید"},fi:{OK:"OK",CANCEL:"Peruuta",CONFIRM:"OK"},fr:{OK:"OK",CANCEL:"Annuler",CONFIRM:"D'accord"},he:{OK:"אישור",CANCEL:"ביטול",CONFIRM:"אישור"},hu:{OK:"OK",CANCEL:"Mégsem",CONFIRM:"Megerősít"},hr:{OK:"OK",CANCEL:"Odustani",CONFIRM:"Potvrdi"},id:{OK:"OK",CANCEL:"Batal",CONFIRM:"OK"},it:{OK:"OK",CANCEL:"Annulla",CONFIRM:"Conferma"},ja:{OK:"OK",CANCEL:"キャンセル",CONFIRM:"確認"},lt:{OK:"Gerai",CANCEL:"Atšaukti",CONFIRM:"Patvirtinti"},lv:{OK:"Labi",CANCEL:"Atcelt",CONFIRM:"Apstiprināt"},nl:{OK:"OK",CANCEL:"Annuleren",CONFIRM:"Accepteren"},no:{OK:"OK",CANCEL:"Avbryt",CONFIRM:"OK"},pl:{OK:"OK",CANCEL:"Anuluj",CONFIRM:"Potwierdź"},pt:{OK:"OK",CANCEL:"Cancelar",CONFIRM:"Confirmar"},ru:{OK:"OK",CANCEL:"Отмена",CONFIRM:"Применить"},sq:{OK:"OK",CANCEL:"Anulo",CONFIRM:"Prano"},sv:{OK:"OK",CANCEL:"Avbryt",CONFIRM:"OK"},th:{OK:"ตกลง",CANCEL:"ยกเลิก",CONFIRM:"ยืนยัน"},tr:{OK:"Tamam",CANCEL:"İptal",CONFIRM:"Onayla"},zh_CN:{OK:"OK",CANCEL:"取消",CONFIRM:"确认"},zh_TW:{OK:"OK",CANCEL:"取消",CONFIRM:"確認"}};return p.addLocale=function(a,c){return b.each(["OK","CANCEL","CONFIRM"],function(a,b){if(!c[b])throw new Error("Please supply a translation for '"+b+"'")}),q[a]={OK:c.OK,CANCEL:c.CANCEL,CONFIRM:c.CONFIRM},p},p.removeLocale=function(a){return delete q[a],p},p.setLocale=function(a){return p.setDefaults("locale",a)},p.init=function(c){return a(c||b)},p}); \ No newline at end of file From afbf7de92a4ac4352b8ba16cba025bfa7ec1dd8a Mon Sep 17 00:00:00 2001 From: psychobunny Date: Tue, 23 Feb 2016 17:57:27 -0500 Subject: [PATCH 072/124] up persona --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d608c34a4f..cd65584657 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "nodebb-plugin-spam-be-gone": "0.4.5", "nodebb-rewards-essentials": "0.0.6", "nodebb-theme-lavender": "3.0.8", - "nodebb-theme-persona": "4.0.80", + "nodebb-theme-persona": "4.0.81", "nodebb-theme-vanilla": "5.0.47", "nodebb-widget-essentials": "2.0.6", "nodemailer": "2.0.0", From e8b1903586658524f9bba97b6efa5e0fd0125e0d Mon Sep 17 00:00:00 2001 From: psychobunny Date: Tue, 23 Feb 2016 18:05:54 -0500 Subject: [PATCH 073/124] #4102 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index cd65584657..be63e4e120 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "nodebb-plugin-spam-be-gone": "0.4.5", "nodebb-rewards-essentials": "0.0.6", "nodebb-theme-lavender": "3.0.8", - "nodebb-theme-persona": "4.0.81", + "nodebb-theme-persona": "4.0.82", "nodebb-theme-vanilla": "5.0.47", "nodebb-widget-essentials": "2.0.6", "nodemailer": "2.0.0", From e37cbca97717b132bb0858c3a18886670d9c6556 Mon Sep 17 00:00:00 2001 From: psychobunny Date: Tue, 23 Feb 2016 18:35:37 -0500 Subject: [PATCH 074/124] closes #3320 --- public/language/en_GB/error.json | 4 ++-- public/language/en_GB/notifications.json | 6 +++--- public/language/en_GB/pages.json | 2 +- public/language/en_GB/topic.json | 6 +++--- public/language/en_GB/user.json | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/public/language/en_GB/error.json b/public/language/en_GB/error.json index b969d5f3c0..2921a55a35 100644 --- a/public/language/en_GB/error.json +++ b/public/language/en_GB/error.json @@ -64,8 +64,8 @@ "file-too-big": "Maximum allowed file size is %1 kB - please upload a smaller file", "guest-upload-disabled": "Guest uploading has been disabled", - "already-favourited": "You have already favourited this post", - "already-unfavourited": "You have already unfavourited this post", + "already-favourited": "You have already bookmarked this post", + "already-unfavourited": "You have already unbookmarked this post", "cant-ban-other-admins": "You can't ban other admins!", "cant-remove-last-admin": "You are the only administrator. Add another user as an administrator before removing yourself as admin", diff --git a/public/language/en_GB/notifications.json b/public/language/en_GB/notifications.json index 0c6cfeab2a..a02cada4a6 100644 --- a/public/language/en_GB/notifications.json +++ b/public/language/en_GB/notifications.json @@ -18,9 +18,9 @@ "upvoted_your_post_in_multiple": "%1 and %2 others have upvoted your post in %3.", "moved_your_post": "%1 has moved your post to %2", "moved_your_topic": "%1 has moved %2", - "favourited_your_post_in": "%1 has favourited your post in %2.", - "favourited_your_post_in_dual": "%1 and %2 have favourited your post in %3.", - "favourited_your_post_in_multiple": "%1 and %2 others have favourited your post in %3.", + "favourited_your_post_in": "%1 has bookmarked your post in %2.", + "favourited_your_post_in_dual": "%1 and %2 have bookmarked your post in %3.", + "favourited_your_post_in_multiple": "%1 and %2 others have bookmarked your post in %3.", "user_flagged_post_in": "%1 flagged a post in %2", "user_flagged_post_in_dual": "%1 and %2 flagged a post in %3", "user_flagged_post_in_multiple": "%1 and %2 others flagged a post in %3", diff --git a/public/language/en_GB/pages.json b/public/language/en_GB/pages.json index 64b4d4a576..6d87cb70c5 100644 --- a/public/language/en_GB/pages.json +++ b/public/language/en_GB/pages.json @@ -38,7 +38,7 @@ "account/posts": "Posts made by %1", "account/topics": "Topics created by %1", "account/groups": "%1's Groups", - "account/favourites": "%1's Favourite Posts", + "account/favourites": "%1's Bookmarked Posts", "account/settings": "User Settings", "account/watched": "Topics watched by %1", "account/upvoted": "Posts upvoted by %1", diff --git a/public/language/en_GB/topic.json b/public/language/en_GB/topic.json index b9963b63a6..e99e90b96c 100644 --- a/public/language/en_GB/topic.json +++ b/public/language/en_GB/topic.json @@ -79,9 +79,9 @@ "confirm_move": "Move", "confirm_fork": "Fork", - "favourite": "Favourite", - "favourites": "Favourites", - "favourites.has_no_favourites": "You don't have any favourites, favourite some posts to see them here!", + "favourite": "Bookmark", + "favourites": "Bookmarks", + "favourites.has_no_favourites": "You haven't bookmarked any posts yet.", "loading_more_posts": "Loading More Posts", "move_topic": "Move Topic", diff --git a/public/language/en_GB/user.json b/public/language/en_GB/user.json index 2f40887067..3351e8aa23 100644 --- a/public/language/en_GB/user.json +++ b/public/language/en_GB/user.json @@ -24,7 +24,7 @@ "profile": "Profile", "profile_views": "Profile views", "reputation": "Reputation", - "favourites":"Favourites", + "favourites":"Bookmarks", "watched": "Watched", "followers": "Followers", "following": "Following", From eba107cef46a5e62c7a441b5707c8dcefa6507ef Mon Sep 17 00:00:00 2001 From: pichalite Date: Tue, 23 Feb 2016 23:17:25 -0800 Subject: [PATCH 075/124] fix Mac platform case --- public/src/modules/helpers.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/src/modules/helpers.js b/public/src/modules/helpers.js index a585f0cc9a..38737ceaa1 100644 --- a/public/src/modules/helpers.js +++ b/public/src/modules/helpers.js @@ -203,7 +203,7 @@ case 'Microsoft Windows': icons += ''; break; - case 'Mac': + case 'Apple Mac': icons += ''; break; case 'Android': From e4cae9391cd1b3c97c3c88038208e9955911f936 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Wed, 24 Feb 2016 09:58:14 +0200 Subject: [PATCH 076/124] moved ips down --- src/controllers/accounts/settings.js | 36 +++++++++++++--------------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/src/controllers/accounts/settings.js b/src/controllers/accounts/settings.js index 3631f85db9..7028972491 100644 --- a/src/controllers/accounts/settings.js +++ b/src/controllers/accounts/settings.js @@ -1,17 +1,17 @@ 'use strict'; -var async = require('async'), +var async = require('async'); - user = require('../../user'), - groups = require('../../groups'), - languages = require('../../languages'), - meta = require('../../meta'), - plugins = require('../../plugins'), - privileges = require('../../privileges'), - categories = require('../../categories'), - db = require('../../database'), - helpers = require('../helpers'), - accountHelpers = require('./helpers'); +var user = require('../../user'); +var groups = require('../../groups'); +var languages = require('../../languages'); +var meta = require('../../meta'); +var plugins = require('../../plugins'); +var privileges = require('../../privileges'); +var categories = require('../../categories'); +var db = require('../../database'); +var helpers = require('../helpers'); +var accountHelpers = require('./helpers'); var settingsController = {}; @@ -21,13 +21,7 @@ settingsController.get = function(req, res, callback) { var userData; async.waterfall([ function(next) { - user.getIPs(req.uid, 4, next); - }, - function(ips, next) { - accountHelpers.getBaseUser(req.params.userslug, req.uid, function(err, data) { - data.ips = ips; - next(err, data); - }); + accountHelpers.getBaseUser(req.params.userslug, req.uid, next); }, function(_userData, next) { userData = _userData; @@ -47,14 +41,18 @@ settingsController.get = function(req, res, callback) { homePageRoutes: function(next) { getHomePageRoutes(next); }, + ips: function (next) { + user.getIPs(req.uid, 4, next); + }, sessions: async.apply(user.auth.getSessions, userData.uid, req.sessionID) }, next); }, function(results, next) { userData.settings = results.settings; - userData.languages = results.languages; userData.userGroups = results.userGroups[0]; + userData.languages = results.languages; userData.homePageRoutes = results.homePageRoutes; + userData.ips = results.ips; userData.sessions = results.sessions; plugins.fireHook('filter:user.customSettings', {settings: results.settings, customSettings: [], uid: req.uid}, next); }, From 878b7b21ee0f0fee368fedbcc467e9dae7715059 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Wed, 24 Feb 2016 11:35:53 +0200 Subject: [PATCH 077/124] closes #4170 --- src/categories/topics.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/categories/topics.js b/src/categories/topics.js index 9edc388f52..b38a861f91 100644 --- a/src/categories/topics.js +++ b/src/categories/topics.js @@ -47,6 +47,7 @@ module.exports = function(Categories) { topic.slug = topic.tid; topic.teaser = null; topic.noAnchor = true; + topic.tags = []; } }); }; From f512cb543f26b08cbe7b4898e2d71037e66059d6 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Wed, 24 Feb 2016 11:44:18 +0200 Subject: [PATCH 078/124] closes #4256 --- .gitignore | 2 -- public/uploads/sounds/.gitignore | 0 2 files changed, 2 deletions(-) create mode 100644 public/uploads/sounds/.gitignore diff --git a/.gitignore b/.gitignore index ca99d725e5..cfeae10f68 100644 --- a/.gitignore +++ b/.gitignore @@ -22,9 +22,7 @@ pidfile # templates /public/templates -/public/sounds -/public/uploads # compiled files /public/stylesheet.css diff --git a/public/uploads/sounds/.gitignore b/public/uploads/sounds/.gitignore new file mode 100644 index 0000000000..e69de29bb2 From 92fba4f396d51feaf20c1c82de3e377a362ad08e Mon Sep 17 00:00:00 2001 From: barisusakli Date: Wed, 24 Feb 2016 12:07:02 +0200 Subject: [PATCH 079/124] closes #4248 --- src/socket.io/index.js | 101 +++++++++++++++++++++++------------------ src/user/auth.js | 2 +- 2 files changed, 59 insertions(+), 44 deletions(-) diff --git a/src/socket.io/index.js b/src/socket.io/index.js index 826e5db452..a67ca29869 100644 --- a/src/socket.io/index.js +++ b/src/socket.io/index.js @@ -1,19 +1,19 @@ "use strict"; -var SocketIO = require('socket.io'), - socketioWildcard = require('socketio-wildcard')(), - async = require('async'), - nconf = require('nconf'), - cookieParser = require('cookie-parser')(nconf.get('secret')), - winston = require('winston'), +var SocketIO = require('socket.io'); +var socketioWildcard = require('socketio-wildcard')(); +var async = require('async'); +var nconf = require('nconf'); +var cookieParser = require('cookie-parser')(nconf.get('secret')); +var winston = require('winston'); - db = require('../database'), - user = require('../user'), - logger = require('../logger'), - ratelimit = require('../middleware/ratelimit'), +var db = require('../database'); +var user = require('../user'); +var logger = require('../logger'); +var ratelimit = require('../middleware/ratelimit'); - Sockets = {}, - Namespaces = {}; +var Sockets = {}; +var Namespaces = {}; var io; @@ -95,15 +95,15 @@ function onMessage(socket, payload) { return winston.warn('[socket.io] Empty method name'); } - var parts = eventName.toString().split('.'), - namespace = parts[0], - methodToCall = parts.reduce(function(prev, cur) { - if (prev !== null && prev[cur]) { - return prev[cur]; - } else { - return null; - } - }, Namespaces); + var parts = eventName.toString().split('.'); + var namespace = parts[0]; + var methodToCall = parts.reduce(function(prev, cur) { + if (prev !== null && prev[cur]) { + return prev[cur]; + } else { + return null; + } + }, Namespaces); if(!methodToCall) { if (process.env.NODE_ENV === 'development') { @@ -123,16 +123,23 @@ function onMessage(socket, payload) { return socket.disconnect(); } - if (Namespaces[namespace].before) { - Namespaces[namespace].before(socket, eventName, params, function(err) { - if (err) { - return callback({message: err.message}); + async.waterfall([ + function (next) { + validateSession(socket, next); + }, + function (next) { + if (Namespaces[namespace].before) { + Namespaces[namespace].before(socket, eventName, params, next); + } else { + next(); } - callMethod(methodToCall, socket, params, callback); - }); - } else { - callMethod(methodToCall, socket, params, callback); - } + }, + function (next) { + methodToCall(socket, params, next); + } + ], function(err, result) { + callback(err ? {message: err.message} : null, result); + }); } function requireModules() { @@ -145,19 +152,33 @@ function requireModules() { }); } +function validateSession(socket, callback) { + var req = socket.request; + if (!req.signedCookies || !req.signedCookies['express.sid']) { + return callback(new Error('[[error:invalid-session]]')); + } + db.sessionStore.get(req.signedCookies['express.sid'], function(err, sessionData) { + if (err || !sessionData) { + return callback(err || new Error('[[error:invalid-session]]')); + } + + callback(); + }); +} + function authorize(socket, callback) { - var handshake = socket.request; + var request = socket.request; - if (!handshake) { + if (!request) { return callback(new Error('[[error:not-authorized]]')); } async.waterfall([ function(next) { - cookieParser(handshake, {}, next); + cookieParser(request, {}, next); }, function(next) { - db.sessionStore.get(handshake.signedCookies['express.sid'], function(err, sessionData) { + db.sessionStore.get(request.signedCookies['express.sid'], function(err, sessionData) { if (err) { return next(err); } @@ -185,12 +206,6 @@ function addRedisAdapter(io) { } } -function callMethod(method, socket, params, callback) { - method(socket, params, function(err, result) { - callback(err ? {message: err.message} : null, result); - }); -} - Sockets.in = function(room) { return io.in(room); }; @@ -228,9 +243,9 @@ Sockets.getOnlineAnonCount = function () { }; Sockets.reqFromSocket = function(socket) { - var headers = socket.request.headers, - host = headers.host, - referer = headers.referer || ''; + var headers = socket.request.headers; + var host = headers.host; + var referer = headers.referer || ''; return { ip: headers['x-forwarded-for'] || socket.ip, diff --git a/src/user/auth.js b/src/user/auth.js index d883f02f80..99bdfb8c94 100644 --- a/src/user/auth.js +++ b/src/user/auth.js @@ -70,7 +70,7 @@ module.exports = function(User) { } async.waterfall([ - async.apply(db.getSortedSetRange, 'uid:' + uid + ':sessions', 0, -1), + async.apply(db.getSortedSetRevRange, 'uid:' + uid + ':sessions', 0, -1), function (sids, next) { _sids = sids; async.map(sids, db.sessionStore.get.bind(db.sessionStore), next); From e9c488d4891f81d8adeb333a6c49f64cb9622e65 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Wed, 24 Feb 2016 13:09:53 +0200 Subject: [PATCH 080/124] closes #4166 --- src/controllers/users.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/controllers/users.js b/src/controllers/users.js index 4fae38907c..b014ac3452 100644 --- a/src/controllers/users.js +++ b/src/controllers/users.js @@ -17,14 +17,17 @@ usersController.getOnlineUsers = function(req, res, next) { if (err) { return next(err); } - + var hiddenCount = 0; if (!userData.isAdminOrGlobalMod) { userData.users = userData.users.filter(function(user) { + if (user && user.status === 'offline') { + hiddenCount ++; + } return user && user.status !== 'offline'; }); } - userData.anonymousUserCount = require('../socket.io').getOnlineAnonCount(); + userData.anonymousUserCount = require('../socket.io').getOnlineAnonCount() + hiddenCount; render(req, res, userData, next); }); From 46b1756c97848e87e758ff56072a50b491205e69 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Wed, 24 Feb 2016 18:05:40 +0200 Subject: [PATCH 081/124] up deps --- package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index be63e4e120..6a30e39cc2 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "express": "^4.9.5", "express-session": "^1.8.2", "express-useragent": "0.2.4", - "html-to-text": "1.6.1", + "html-to-text": "2.0.0", "jimp": "0.2.21", "less": "^2.0.0", "logrotate-stream": "^0.2.3", @@ -61,7 +61,7 @@ "passport": "^0.3.0", "passport-local": "1.0.0", "postcss": "^5.0.13", - "prompt": "^0.2.14", + "prompt": "^1.0.0", "redis": "~2.4.2", "request": "^2.44.0", "rimraf": "~2.5.0", @@ -79,9 +79,9 @@ "uglify-js": "^2.6.0", "underscore": "~1.8.3", "underscore.deep": "^0.5.1", - "validator": "^4.7.1", + "validator": "^5.0.0", "winston": "^2.1.0", - "xregexp": "~3.0.0" + "xregexp": "~3.1.0" }, "devDependencies": { "mocha": "~1.13.0", From e3db66d29a599de5cc8248543655a2d3fc7bab6f Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Wed, 24 Feb 2016 11:08:34 -0500 Subject: [PATCH 082/124] updated versioning for v0.9.4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6a30e39cc2..d3db05d299 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "nodebb", "license": "GPL-3.0", "description": "NodeBB Forum", - "version": "0.9.3", + "version": "0.9.4", "homepage": "http://www.nodebb.org", "repository": { "type": "git", From 9d045e70f542f93bd9d0b737ea5696efb8fca1ad Mon Sep 17 00:00:00 2001 From: barisusakli Date: Wed, 24 Feb 2016 18:11:42 +0200 Subject: [PATCH 083/124] change xregexp --- public/src/utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/src/utils.js b/public/src/utils.js index d214370d8a..a5c7827635 100644 --- a/public/src/utils.js +++ b/public/src/utils.js @@ -5,7 +5,7 @@ if ('undefined' === typeof window) { fs = require('fs'); - XRegExp = require('xregexp').XRegExp; + XRegExp = require('xregexp'); process.profile = function(operation, start) { console.log('%s took %d milliseconds', operation, process.elapsedTimeSince(start)); From 5f17e327cef5f1f85a459cba43eacb443961e8cb Mon Sep 17 00:00:00 2001 From: barisusakli Date: Wed, 24 Feb 2016 20:10:06 +0200 Subject: [PATCH 084/124] possible fix for https://github.com/akhoury/nodebb-plugin-import/issues/173 --- src/topics/posts.js | 2 +- src/user/posts.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/topics/posts.js b/src/topics/posts.js index 64f9fd1392..f40b0a5e0a 100644 --- a/src/topics/posts.js +++ b/src/topics/posts.js @@ -15,7 +15,7 @@ var async = require('async'), module.exports = function(Topics) { Topics.onNewPostMade = function(postData, callback) { - async.parallel([ + async.series([ function(next) { Topics.increasePostCount(postData.tid, next); }, diff --git a/src/user/posts.js b/src/user/posts.js index 97be04513e..e9f64ef073 100644 --- a/src/user/posts.js +++ b/src/user/posts.js @@ -63,7 +63,7 @@ module.exports = function(User) { }; User.onNewPostMade = function(postData, callback) { - async.parallel([ + async.series([ function(next) { User.addPostIdToUser(postData.uid, postData.pid, postData.timestamp, next); }, From 51b963712e53468cfeb6b9e644d244fdb4216e76 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Wed, 24 Feb 2016 20:13:44 +0200 Subject: [PATCH 085/124] up mentions --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d3db05d299..b7b92f7ed4 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "nodebb-plugin-dbsearch": "0.3.1", "nodebb-plugin-emoji-extended": "0.5.0", "nodebb-plugin-markdown": "4.0.17", - "nodebb-plugin-mentions": "1.0.15", + "nodebb-plugin-mentions": "1.0.16", "nodebb-plugin-soundpack-default": "0.1.5", "nodebb-plugin-spam-be-gone": "0.4.5", "nodebb-rewards-essentials": "0.0.6", From 2b8ecfbb94ec6474fd278a867185a2440010ff3c Mon Sep 17 00:00:00 2001 From: barisusakli Date: Wed, 24 Feb 2016 21:35:35 +0200 Subject: [PATCH 086/124] dont add topic to `topics:recent` if its deleted --- src/topics/recent.js | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/topics/recent.js b/src/topics/recent.js index ded097f222..7139f58991 100644 --- a/src/topics/recent.js +++ b/src/topics/recent.js @@ -2,9 +2,8 @@ 'use strict'; -var async = require('async'), - winston = require('winston'), - db = require('../database'); +var async = require('async'); +var db = require('../database'); module.exports = function(Topics) { var terms = { @@ -42,12 +41,22 @@ module.exports = function(Topics) { Topics.updateTimestamp = function(tid, timestamp, callback) { async.parallel([ function(next) { - Topics.updateRecent(tid, timestamp, next); + async.waterfall([ + function (next) { + Topics.getTopicField(tid, 'deleted', next); + }, + function (deleted, next) { + if (parseInt(deleted, 10) === 1) { + return next(); + } + Topics.updateRecent(tid, timestamp, next); + } + ], next); }, function(next) { Topics.setTopicField(tid, 'lastposttime', timestamp, next); } - ], function(err, results) { + ], function(err) { callback(err); }); }; From 1349c4907d76a2c6c0b3abcdcd046903e5e1676f Mon Sep 17 00:00:00 2001 From: barisusakli Date: Wed, 24 Feb 2016 22:05:14 +0200 Subject: [PATCH 087/124] fix notification crash --- src/user/notifications.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/user/notifications.js b/src/user/notifications.js index c8197c785e..64feddda54 100644 --- a/src/user/notifications.js +++ b/src/user/notifications.js @@ -133,7 +133,7 @@ var async = require('async'), return notification; }).filter(function(notification) { // Remove notifications that do not resolve to a path - return notification.path !== null; + return notification && notification.path !== null; }); callback(null, notifications); From 34f68a029ae5ff34872047744c0467025d667b3d Mon Sep 17 00:00:00 2001 From: barisusakli Date: Wed, 24 Feb 2016 22:15:37 +0200 Subject: [PATCH 088/124] closes #4204 --- public/src/client/topic/events.js | 1 + src/topics/posts.js | 1 + 2 files changed, 2 insertions(+) diff --git a/public/src/client/topic/events.js b/public/src/client/topic/events.js index 43aebcfe73..ba8c77598e 100644 --- a/public/src/client/topic/events.js +++ b/public/src/client/topic/events.js @@ -182,6 +182,7 @@ define('forum/topic/events', [ postTools.toggle(data.pid, isDeleted); if (!app.user.isAdmin && parseInt(data.uid, 10) !== parseInt(app.user.uid, 10)) { + postEl.find('[component="post/tools"]').toggleClass('hidden', isDeleted); if (isDeleted) { postEl.find('[component="post/content"]').translateHtml('[[topic:post_is_deleted]]'); } else { diff --git a/src/topics/posts.js b/src/topics/posts.js index f40b0a5e0a..85f2979513 100644 --- a/src/topics/posts.js +++ b/src/topics/posts.js @@ -143,6 +143,7 @@ module.exports = function(Topics) { if (post) { post.display_moderator_tools = topicPrivileges.isAdminOrMod || post.selfPost; post.display_move_tools = topicPrivileges.isAdminOrMod && post.index !== 0; + post.display_post_menu = topicPrivileges.isAdminOrMod || post.selfPost || !post.deleted; if (post.deleted && !(topicPrivileges.isAdminOrMod || post.selfPost)) { post.content = '[[topic:post_is_deleted]]'; } From c317f85dd07fb579bbdba8dcacdcbfee109612f7 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Wed, 24 Feb 2016 22:18:50 +0200 Subject: [PATCH 089/124] up themes --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index b7b92f7ed4..8cd7494146 100644 --- a/package.json +++ b/package.json @@ -52,8 +52,8 @@ "nodebb-plugin-spam-be-gone": "0.4.5", "nodebb-rewards-essentials": "0.0.6", "nodebb-theme-lavender": "3.0.8", - "nodebb-theme-persona": "4.0.82", - "nodebb-theme-vanilla": "5.0.47", + "nodebb-theme-persona": "4.0.83", + "nodebb-theme-vanilla": "5.0.48", "nodebb-widget-essentials": "2.0.6", "nodemailer": "2.0.0", "nodemailer-sendmail-transport": "1.0.0", From 211311214e1aba12dd6ddf049b37bd7a9981df45 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Wed, 24 Feb 2016 22:47:31 +0200 Subject: [PATCH 090/124] https://github.com/NodeBB/NodeBB/issues/4204 --- src/controllers/topics.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/controllers/topics.js b/src/controllers/topics.js index 616183aba2..5c3728a428 100644 --- a/src/controllers/topics.js +++ b/src/controllers/topics.js @@ -70,8 +70,8 @@ topicsController.get = function(req, res, callback) { return callback(); } - var set = 'tid:' + tid + ':posts', - reverse = false; + var set = 'tid:' + tid + ':posts'; + var reverse = false; // `sort` qs has priority over user setting if (sort === 'newest_to_oldest') { @@ -93,6 +93,7 @@ topicsController.get = function(req, res, callback) { req.params.post_index = 0; } if (!settings.usePagination) { + currentPage = 1; if (reverse) { postIndex = Math.max(0, postCount - (req.params.post_index || postCount) - Math.ceil(settings.postsPerPage / 2)); } else { From c6982f7cdb4cb674c4d8161b1c5aaa99b8ae09f2 Mon Sep 17 00:00:00 2001 From: psychobunny Date: Wed, 24 Feb 2016 17:43:54 -0500 Subject: [PATCH 091/124] fixed .gitignore #4256 --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index cfeae10f68..ddb37093ba 100644 --- a/.gitignore +++ b/.gitignore @@ -23,6 +23,8 @@ pidfile # templates /public/templates +/public/uploads +/public/sounds # compiled files /public/stylesheet.css From fae5fe5c50e4c224ea1c3825f2bf9df0b96a578c Mon Sep 17 00:00:00 2001 From: psychobunny Date: Wed, 24 Feb 2016 18:04:14 -0500 Subject: [PATCH 092/124] closes #3837 --- src/controllers/accounts/edit.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/controllers/accounts/edit.js b/src/controllers/accounts/edit.js index 06eb2126b7..09e824ecd9 100644 --- a/src/controllers/accounts/edit.js +++ b/src/controllers/accounts/edit.js @@ -8,6 +8,7 @@ var winston = require('winston'); var db = require('../../database'); var user = require('../../user'); var meta = require('../../meta'); +var plugins = require('../../plugins'); var helpers = require('../helpers'); var accountHelpers = require('./helpers'); @@ -28,8 +29,15 @@ editController.get = function(req, res, callback) { userData.title = '[[pages:account/edit, ' + userData.username + ']]'; userData.breadcrumbs = helpers.buildBreadcrumbs([{text: userData.username, url: '/user/' + userData.userslug}, {text: '[[user:edit]]'}]); + userData.editButtons = []; - res.render('account/edit', userData); + plugins.fireHook('filter:user.account.edit', userData, function(err, userData) { + if (err) { + return next(err); + } + + res.render('account/edit', userData); + }); }); }; From 617edb4fd49b79c2d5d38bd3d24a10b57d114e0d Mon Sep 17 00:00:00 2001 From: psychobunny Date: Wed, 24 Feb 2016 18:08:34 -0500 Subject: [PATCH 093/124] up themes --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 8cd7494146..b36ca14266 100644 --- a/package.json +++ b/package.json @@ -52,8 +52,8 @@ "nodebb-plugin-spam-be-gone": "0.4.5", "nodebb-rewards-essentials": "0.0.6", "nodebb-theme-lavender": "3.0.8", - "nodebb-theme-persona": "4.0.83", - "nodebb-theme-vanilla": "5.0.48", + "nodebb-theme-persona": "4.0.84", + "nodebb-theme-vanilla": "5.0.49", "nodebb-widget-essentials": "2.0.6", "nodemailer": "2.0.0", "nodemailer-sendmail-transport": "1.0.0", From ffc08facbd87de81756192c97a3777078b12385b Mon Sep 17 00:00:00 2001 From: psychobunny Date: Thu, 25 Feb 2016 01:02:19 -0500 Subject: [PATCH 094/124] .github folder --- CONTRIBUTING.md => .github/CONTRIBUTING.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename CONTRIBUTING.md => .github/CONTRIBUTING.md (100%) diff --git a/CONTRIBUTING.md b/.github/CONTRIBUTING.md similarity index 100% rename from CONTRIBUTING.md rename to .github/CONTRIBUTING.md From ac0903615684b936c3148d376487c1b5ef225e79 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Thu, 25 Feb 2016 11:41:28 +0200 Subject: [PATCH 095/124] closes #4053 --- src/user/create.js | 7 ------- src/user/settings.js | 8 ++++---- src/views/admin/settings/general.tpl | 20 ------------------- src/views/admin/settings/user.tpl | 29 ++++++++++++++++++++++++++++ 4 files changed, 33 insertions(+), 31 deletions(-) diff --git a/src/user/create.js b/src/user/create.js index fe67b4a728..1d1543e863 100644 --- a/src/user/create.js +++ b/src/user/create.js @@ -75,13 +75,6 @@ module.exports = function(User) { userData.uid = uid; db.setObject('user:' + uid, userData, next); }, - function(next) { - if (parseInt(meta.config['sounds:default_enabled'], 10) === 1) { - return User.setSetting(userData.uid, 'notificationSounds', 1, next); - } - - next(); - }, function(next) { async.parallel([ function(next) { diff --git a/src/user/settings.js b/src/user/settings.js index 6d9cf7d36a..f1c4081b50 100644 --- a/src/user/settings.js +++ b/src/user/settings.js @@ -58,14 +58,14 @@ module.exports = function(User) { var defaultTopicsPerPage = parseInt(meta.config.topicsPerPage, 10) || 20; var defaultPostsPerPage = parseInt(meta.config.postsPerPage, 10) || 20; - settings.showemail = parseInt(settings.showemail, 10) === 1; - settings.showfullname = parseInt(settings.showfullname, 10) === 1; + settings.showemail = parseInt(getSetting(settings, 'showemail', 0), 10) === 1; + settings.showfullname = parseInt(getSetting(settings, 'showfullname', 0), 10) === 1; settings.openOutgoingLinksInNewTab = parseInt(getSetting(settings, 'openOutgoingLinksInNewTab', 0), 10) === 1; settings.dailyDigestFreq = getSetting(settings, 'dailyDigestFreq', 'off'); settings.usePagination = parseInt(getSetting(settings, 'usePagination', 0), 10) === 1; settings.topicsPerPage = Math.min(settings.topicsPerPage ? parseInt(settings.topicsPerPage, 10) : defaultTopicsPerPage, defaultTopicsPerPage); settings.postsPerPage = Math.min(settings.postsPerPage ? parseInt(settings.postsPerPage, 10) : defaultPostsPerPage, defaultPostsPerPage); - settings.notificationSounds = parseInt(settings.notificationSounds, 10) === 1; + settings.notificationSounds = parseInt(getSetting(settings, 'notificationSounds', 0), 10) === 1; settings.userLang = settings.userLang || meta.config.defaultLang || 'en_GB'; settings.topicPostSort = getSetting(settings, 'topicPostSort', 'oldest_to_newest'); settings.categoryTopicSort = getSetting(settings, 'categoryTopicSort', 'newest_to_oldest'); @@ -73,7 +73,7 @@ module.exports = function(User) { settings.followTopicsOnReply = parseInt(getSetting(settings, 'followTopicsOnReply', 0), 10) === 1; settings.sendChatNotifications = parseInt(getSetting(settings, 'sendChatNotifications', 0), 10) === 1; settings.sendPostNotifications = parseInt(getSetting(settings, 'sendPostNotifications', 0), 10) === 1; - settings.restrictChat = parseInt(settings.restrictChat, 10) === 1; + settings.restrictChat = parseInt(getSetting(settings, 'restrictChat', 0), 10) === 1; settings.topicSearchEnabled = parseInt(getSetting(settings, 'topicSearchEnabled', 0), 10) === 1; settings.bootswatchSkin = settings.bootswatchSkin || 'default'; diff --git a/src/views/admin/settings/general.tpl b/src/views/admin/settings/general.tpl index a9ab0a96ff..147657195e 100644 --- a/src/views/admin/settings/general.tpl +++ b/src/views/admin/settings/general.tpl @@ -64,26 +64,6 @@
    - -
    -
    - Sounds -
    -
    -
    -
    - -
    -

    - Users can toggle this setting in their profile settings page. -

    -
    -
    -
    -
    Favicon diff --git a/src/views/admin/settings/user.tpl b/src/views/admin/settings/user.tpl index 9852b133e2..cf5360d5fb 100644 --- a/src/views/admin/settings/user.tpl +++ b/src/views/admin/settings/user.tpl @@ -174,6 +174,28 @@
    Default User Settings
    + +
    + +
    + +
    + +
    + +
    + +
    +
    +
    + +
    +
    From 66c6c47b7c7780b3f6fdb755d480ac4727fc251a Mon Sep 17 00:00:00 2001 From: barisusakli Date: Thu, 25 Feb 2016 16:12:46 +0200 Subject: [PATCH 096/124] closes #4213 --- src/controllers/accounts/profile.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/controllers/accounts/profile.js b/src/controllers/accounts/profile.js index 278211e94e..d734ebe142 100644 --- a/src/controllers/accounts/profile.js +++ b/src/controllers/accounts/profile.js @@ -36,8 +36,10 @@ profileController.get = function(req, res, callback) { } userData = _userData; - if (req.uid !== parseInt(userData.uid, 10)) { + req.session.uids_viewed = req.session.uids_viewed || {}; + if (req.uid !== parseInt(userData.uid, 10) && (!req.session.uids_viewed[userData.uid] || req.session.uids_viewed[userData.uid] < Date.now() - 3600000)) { user.incrementUserFieldBy(userData.uid, 'profileviews', 1); + req.session.uids_viewed[userData.uid] = Date.now(); } async.parallel({ From 2fdb8fc5e1a9e525a4707fceb7067a77939dac42 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Thu, 25 Feb 2016 16:30:02 +0200 Subject: [PATCH 097/124] closes #3709 --- public/language/en_GB/global.json | 3 ++- public/src/client/pagination.js | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/public/language/en_GB/global.json b/public/language/en_GB/global.json index ba597a57b2..1b2cea5bd4 100644 --- a/public/language/en_GB/global.json +++ b/public/language/en_GB/global.json @@ -110,5 +110,6 @@ "delete_all": "Delete All", "map": "Map", "sessions": "Login Sessions", - "ip_address": "IP Address" + "ip_address": "IP Address", + "enter_page_number": "Enter page number" } diff --git a/public/src/client/pagination.js b/public/src/client/pagination.js index 534b4e27f2..3bac155dc5 100644 --- a/public/src/client/pagination.js +++ b/public/src/client/pagination.js @@ -5,11 +5,11 @@ define('forum/pagination', function() { var pagination = {}; pagination.init = function() { - $('body').on('click', '.pagination .select-page', function(e) { - e.preventDefault(); - bootbox.prompt('Enter page number:', function(pageNum) { + $('body').on('click', '[component="pagination/select-page"]', function() { + bootbox.prompt('[[global:enter_page_number]]', function(pageNum) { pagination.loadPage(pageNum); }); + return false; }); }; From edba2dda21b01aadeca186a2127a26d5e8b26bd5 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Thu, 25 Feb 2016 16:33:31 +0200 Subject: [PATCH 098/124] up themes --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index b36ca14266..77dc93432b 100644 --- a/package.json +++ b/package.json @@ -52,8 +52,8 @@ "nodebb-plugin-spam-be-gone": "0.4.5", "nodebb-rewards-essentials": "0.0.6", "nodebb-theme-lavender": "3.0.8", - "nodebb-theme-persona": "4.0.84", - "nodebb-theme-vanilla": "5.0.49", + "nodebb-theme-persona": "4.0.85", + "nodebb-theme-vanilla": "5.0.50", "nodebb-widget-essentials": "2.0.6", "nodemailer": "2.0.0", "nodemailer-sendmail-transport": "1.0.0", From 3567f2ad5521456e11a0de74d56298fcd605a4af Mon Sep 17 00:00:00 2001 From: barisusakli Date: Thu, 25 Feb 2016 17:09:38 +0200 Subject: [PATCH 099/124] closes #4208 --- public/src/modules/translator.js | 6 +++++- tests/translator.js | 10 ++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/public/src/modules/translator.js b/public/src/modules/translator.js index 01ba6d2df6..fcf6553768 100644 --- a/public/src/modules/translator.js +++ b/public/src/modules/translator.js @@ -164,7 +164,7 @@ if (!count) { return callback(text); } - + if (S === null) { // browser environment and S not yet initialized // we need to wait for async require call stringDefer.then(function () { translateKeys(keys, text, language, callback); }); @@ -205,6 +205,10 @@ if (value) { var variable; for (var i = 1, ii = variables.length; i < ii; i++) { + + // see https://github.com/NodeBB/NodeBB/issues/1951 + variables[i] = variables[i].replace(/%/g, '%').replace(/,/g, ','); + variable = S(variables[i]).chompRight(']]').collapseWhitespace().escapeHTML().s; value = value.replace('%' + i, variable); } diff --git a/tests/translator.js b/tests/translator.js index 788fa3b31d..7546ec1d90 100644 --- a/tests/translator.js +++ b/tests/translator.js @@ -85,5 +85,15 @@ describe('Translator', function(){ }); }); + it('should properly escape % and ,', function(done) { + var title = 'Test 1, 2, 3 % salmon'; + title = title.replace(/%/g, '%').replace(/,/g, ','); + var key = "[[topic:composer.replying_to, " + title + "]]"; + translator.translate(key, function(translated) { + assert.strictEqual(translated, 'Replying to Test 1, 2, 3 % salmon'); + done(); + }); + }); + }); }); From ebcd892aee939a90a1d86d856850c65761001507 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Thu, 25 Feb 2016 18:01:59 +0200 Subject: [PATCH 100/124] closes #4259 --- src/categories/delete.js | 4 ++-- src/socket.io/admin/categories.js | 2 +- src/topics/delete.js | 8 +++++--- src/topics/tools.js | 2 +- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/categories/delete.js b/src/categories/delete.js index ea3b567085..8d99bb60d1 100644 --- a/src/categories/delete.js +++ b/src/categories/delete.js @@ -8,10 +8,10 @@ var async = require('async'), module.exports = function(Categories) { - Categories.purge = function(cid, callback) { + Categories.purge = function(cid, uid, callback) { batch.processSortedSet('cid:' + cid + ':tids', function(tids, next) { async.eachLimit(tids, 10, function(tid, next) { - topics.purgePostsAndTopic(tid, next); + topics.purgePostsAndTopic(tid, uid, next); }, next); }, {alwaysStartAt: 0}, function(err) { if (err) { diff --git a/src/socket.io/admin/categories.js b/src/socket.io/admin/categories.js index a3d929e5c2..288e395837 100644 --- a/src/socket.io/admin/categories.js +++ b/src/socket.io/admin/categories.js @@ -42,7 +42,7 @@ Categories.getNames = function(socket, data, callback) { }; Categories.purge = function(socket, cid, callback) { - categories.purge(cid, callback); + categories.purge(cid, socket.uid, callback); }; Categories.update = function(socket, data, callback) { diff --git a/src/topics/delete.js b/src/topics/delete.js index b7bb2ea71e..8f2794fa17 100644 --- a/src/topics/delete.js +++ b/src/topics/delete.js @@ -85,7 +85,7 @@ module.exports = function(Topics) { }); }; - Topics.purgePostsAndTopic = function(tid, callback) { + Topics.purgePostsAndTopic = function(tid, uid, callback) { var mainPid; async.waterfall([ function (next) { @@ -94,11 +94,13 @@ module.exports = function(Topics) { function (_mainPid, next) { mainPid = _mainPid; batch.processSortedSet('tid:' + tid + ':posts', function(pids, next) { - async.eachLimit(pids, 10, posts.purge, next); + async.eachLimit(pids, 10, function(pid, next) { + posts.purge(pid, uid, next); + }, next); }, {alwaysStartAt: 0}, next); }, function (next) { - posts.purge(mainPid, next); + posts.purge(mainPid, uid, next); }, function (next) { Topics.purge(tid, next); diff --git a/src/topics/tools.js b/src/topics/tools.js index f7ceab6931..3deea91b46 100644 --- a/src/topics/tools.js +++ b/src/topics/tools.js @@ -94,7 +94,7 @@ module.exports = function(Topics) { function (_cid, next) { cid = _cid; - Topics.purgePostsAndTopic(tid, next); + Topics.purgePostsAndTopic(tid, uid, next); }, function (next) { next(null, {tid: tid, cid: cid, uid: uid}); From 5d9373730aa8926b706197e1dfa63da3eb605654 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Thu, 25 Feb 2016 18:04:32 +0200 Subject: [PATCH 101/124] added delete purge test --- tests/topics.js | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/tests/topics.js b/tests/topics.js index a32f0fd37c..bf30147573 100644 --- a/tests/topics.js +++ b/tests/topics.js @@ -162,6 +162,32 @@ describe('Topic\'s', function() { }); }); + describe('.purge/.delete', function() { + var newTopic; + + before(function(done) { + topics.post({uid: topic.userId, title: topic.title, content: topic.content, cid: topic.categoryId}, function(err, result) { + newTopic = result.topicData; + done(); + }); + }); + + it('should delete the topic', function(done) { + topics.delete(newTopic.tid, function(err) { + assert.ifError(err); + done(); + }); + }); + + it('should purge the topic', function(done) { + topics.purge(newTopic.tid, function(err) { + assert.ifError(err); + done(); + }); + }); + }); + + after(function() { db.flushdb(); }); From 78bb4776df82eaf1f2c7242091494de713f2cb7c Mon Sep 17 00:00:00 2001 From: barisusakli Date: Thu, 25 Feb 2016 18:11:45 +0200 Subject: [PATCH 102/124] fix crazy indents --- public/src/client/chats.js | 99 +++++++++++++++++++------------------- 1 file changed, 49 insertions(+), 50 deletions(-) diff --git a/public/src/client/chats.js b/public/src/client/chats.js index 58e5afe904..2df0601dd3 100644 --- a/public/src/client/chats.js +++ b/public/src/client/chats.js @@ -29,7 +29,7 @@ define('forum/chats', ['components', 'string', 'sounds', 'forum/infinitescroll', Chats.scrollToBottom($('.expanded-chat ul')); Chats.initialised = true; - + Chats.handleSearch(); if (ajaxify.data.hasOwnProperty('roomId')) { @@ -535,71 +535,70 @@ define('forum/chats', ['components', 'string', 'sounds', 'forum/infinitescroll', callback(); }); } - + Chats.handleSearch = function() { var timeoutId = 0; - + components.get('chat/search').on('keyup', function() { if (timeoutId) { clearTimeout(timeoutId); timeoutId = 0; } - timeoutId = setTimeout(doSearch, 250); + timeoutId = setTimeout(doSearch, 250); }); - + function doSearch() { - var username = components.get('chat/search').val(); - var chatsListEl = $('[component="chat/search/list"]'); + var username = components.get('chat/search').val(); + var chatsListEl = $('[component="chat/search/list"]'); if (!username) { - return chatsListEl.empty(); + return chatsListEl.empty(); } - socket.emit('user.search', { - query: username, - searchBy: 'username' - }, function(err, data) { - if (err) { - return app.alertError(err.message); - } - - chatsListEl.empty(); - - if (data.users.length === 0) { - chatsListEl.translateHtml('
  • [[users:no-users-found]]
  • '); - } else { - data.users.forEach(function(userObj) { - function createUserImage() { - return (userObj.picture ? - '' : - '
    ' + userObj['icon:text'] + '
    ') + - ' ' + userObj.username; - } - - var chatEl = $('
  • ') + socket.emit('user.search', { + query: username, + searchBy: 'username' + }, function(err, data) { + if (err) { + return app.alertError(err.message); + } + + chatsListEl.empty(); + + if (data.users.length === 0) { + return chatsListEl.translateHtml('
  • [[users:no-users-found]]
  • '); + } + + data.users.forEach(function(userObj) { + function createUserImage() { + return (userObj.picture ? + '' : + '
    ' + userObj['icon:text'] + '
    ') + + ' ' + userObj.username; + } + + var chatEl = $('
  • ') .attr('data-uid', userObj.uid) .appendTo(chatsListEl); - - chatEl.append(createUserImage()); - - chatEl.click(function() { - socket.emit('modules.chats.hasPrivateChat', userObj.uid, function(err, roomId) { - if (err) { - return app.alertError(err.message); - } - if (roomId) { - ajaxify.go('chats/' + roomId); - } else { - app.newChat(userObj.uid); - } - }); - }); - }); - } - - }); - } + + chatEl.append(createUserImage()); + + chatEl.on('click', function() { + socket.emit('modules.chats.hasPrivateChat', userObj.uid, function(err, roomId) { + if (err) { + return app.alertError(err.message); + } + if (roomId) { + ajaxify.go('chats/' + roomId); + } else { + app.newChat(userObj.uid); + } + }); + }); + }); + }); + } }; return Chats; }); From 8bc80abde6f4f06b051f6d15297d5291aee2f9f9 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Thu, 25 Feb 2016 18:21:24 +0200 Subject: [PATCH 103/124] removed notify typing code, not even working --- public/src/client/chats.js | 18 ------------------ public/src/modules/chat.js | 21 --------------------- src/socket.io/modules.js | 25 ------------------------- 3 files changed, 64 deletions(-) diff --git a/public/src/client/chats.js b/public/src/client/chats.js index 2df0601dd3..21da307713 100644 --- a/public/src/client/chats.js +++ b/public/src/client/chats.js @@ -204,7 +204,6 @@ define('forum/chats', ['components', 'string', 'sounds', 'forum/infinitescroll', return; } - Chats.notifyTyping(roomId, val); $(this).attr('data-typing', val); }); @@ -370,14 +369,6 @@ define('forum/chats', ['components', 'string', 'sounds', 'forum/infinitescroll', } }); - socket.on('event:chats.userStartTyping', function(withUid) { - $('.chats-list li[data-uid="' + withUid + '"]').addClass('typing'); - }); - - socket.on('event:chats.userStopTyping', function(withUid) { - $('.chats-list li[data-uid="' + withUid + '"]').removeClass('typing'); - }); - socket.on('event:user_status_change', function(data) { app.updateUserStatus($('.chats-list [data-uid="' + data.uid + '"] [component="user/status"]'), data.status); }); @@ -423,13 +414,6 @@ define('forum/chats', ['components', 'string', 'sounds', 'forum/infinitescroll', Chats.setActive(); }; - Chats.notifyTyping = function(roomId, typing) { - socket.emit('modules.chats.user' + (typing ? 'Start' : 'Stop') + 'Typing', { - roomId: roomId, - fromUid: app.user.uid - }); - }; - Chats.sendMessage = function(roomId, inputEl) { var msg = inputEl.val(); var mid = inputEl.attr('data-mid'); @@ -458,7 +442,6 @@ define('forum/chats', ['components', 'string', 'sounds', 'forum/infinitescroll', } sounds.play('chat-outgoing'); - Chats.notifyTyping(roomId, false); }); } else { socket.emit('modules.chats.edit', { @@ -470,7 +453,6 @@ define('forum/chats', ['components', 'string', 'sounds', 'forum/infinitescroll', return app.alertError(err.message); } - Chats.notifyTyping(roomId, false); }); } }; diff --git a/public/src/modules/chat.js b/public/src/modules/chat.js index 8cd0e45d1c..7721b6e70a 100644 --- a/public/src/modules/chat.js +++ b/public/src/modules/chat.js @@ -65,25 +65,6 @@ define('chat', ['components', 'taskbar', 'string', 'sounds', 'forum/chats', 'tra } }); - socket.on('event:chats.userStartTyping', function(withUid) { - var modal = module.getModal(withUid); - var chatContent = modal.find('.chat-content'); - if (!chatContent.length) { - return; - } - var atBottom = chatContent[0].scrollHeight - chatContent.scrollTop() === chatContent.innerHeight(); - - modal.find('.user-typing').removeClass('hide'); - if (atBottom) { - Chats.scrollToBottom(chatContent); - } - }); - - socket.on('event:chats.userStopTyping', function(withUid) { - var modal = module.getModal(withUid); - modal.find('.user-typing').addClass('hide'); - }); - socket.on('event:user_status_change', function(data) { var modal = module.getModal(data.uid); app.updateUserStatus(modal.find('[component="user/status"]'), data.status); @@ -322,7 +303,6 @@ define('chat', ['components', 'taskbar', 'string', 'sounds', 'forum/chats', 'tra chatModal.remove(); chatModal.data('modal', null); taskbar.discard('chat', chatModal.attr('UUID')); - Chats.notifyTyping(chatModal.attr('roomId'), false); if (chatModal.attr('data-mobile')) { module.disableMobileBehaviour(chatModal); @@ -391,7 +371,6 @@ define('chat', ['components', 'taskbar', 'string', 'sounds', 'forum/chats', 'tra taskbar.minimize('chat', uuid); clearInterval(chatModal.attr('intervalId')); chatModal.attr('intervalId', 0); - Chats.notifyTyping(chatModal.attr('roomId'), false); }; module.toggleNew = taskbar.toggleNew; diff --git a/src/socket.io/modules.js b/src/socket.io/modules.js index 62f4b4d2e3..26426b9f9f 100644 --- a/src/socket.io/modules.js +++ b/src/socket.io/modules.js @@ -266,31 +266,6 @@ SocketModules.chats.renameRoom = function(socket, data, callback) { ], callback); }; -SocketModules.chats.userStartTyping = function(socket, data, callback) { - sendTypingNotification('event:chats.userStartTyping', socket, data, callback); -}; - -SocketModules.chats.userStopTyping = function(socket, data, callback) { - sendTypingNotification('event:chats.userStopTyping', socket, data, callback); -}; - -function sendTypingNotification(event, socket, data, callback) { - if (!socket.uid || !data || !data.roomId) { - return; - } - - Messaging.getUidsInRoom(data.roomId, 0, -1, function(err, uids) { - if (err) { - return callback(err); - } - uids.forEach(function(uid) { - if (socket.uid !== parseInt(uid, 10)) { - server.in('uid_' + uid).emit(event, data.fromUid); - } - }); - }); -} - SocketModules.chats.getRecentChats = function(socket, data, callback) { if (!data || !utils.isNumber(data.after)) { return callback(new Error('[[error:invalid-data]]')); From 9e832e006a1ddd7e0a5994139e41f81b10799a82 Mon Sep 17 00:00:00 2001 From: psychobunny Date: Thu, 25 Feb 2016 14:05:48 -0500 Subject: [PATCH 104/124] closes #2920 --- public/src/admin/general/social.js | 27 +++++++++++++ public/src/client/topic/postTools.js | 2 + public/src/modules/share.js | 8 ++-- src/controllers/admin.js | 1 + src/controllers/admin/social.js | 20 ++++++++++ src/routes/admin.js | 1 + src/social.js | 58 ++++++++++++++++++++++++++++ src/socket.io/admin.js | 1 + src/socket.io/admin/social.js | 10 +++++ src/socket.io/posts/tools.js | 4 ++ src/upgrade.js | 30 +++++++++++++- src/views/admin/general/social.tpl | 24 ++++++++++++ src/views/admin/partials/menu.tpl | 2 + 13 files changed, 184 insertions(+), 4 deletions(-) create mode 100644 public/src/admin/general/social.js create mode 100644 src/controllers/admin/social.js create mode 100644 src/social.js create mode 100644 src/socket.io/admin/social.js create mode 100644 src/views/admin/general/social.tpl diff --git a/public/src/admin/general/social.js b/public/src/admin/general/social.js new file mode 100644 index 0000000000..6816eb3909 --- /dev/null +++ b/public/src/admin/general/social.js @@ -0,0 +1,27 @@ +"use strict"; +/*global define, socket*/ + +define('admin/general/social', [], function() { + var social = {}; + + social.init = function() { + $('#save').on('click', function() { + var networks = []; + $('#postSharingNetworks input[type="checkbox"]').each(function() { + if ($(this).prop('checked')) { + networks.push($(this).attr('id')); + } + }); + + socket.emit('admin.social.savePostSharingNetworks', networks, function(err) { + if (err) { + return app.alertError(err); + } + + app.alertSuccess('Successfully saved Post Sharing Networks!'); + }); + }); + }; + + return social; +}); diff --git a/public/src/client/topic/postTools.js b/public/src/client/topic/postTools.js index f5c648ca24..d59cd38371 100644 --- a/public/src/client/topic/postTools.js +++ b/public/src/client/topic/postTools.js @@ -33,6 +33,8 @@ define('forum/topic/postTools', ['share', 'navigator', 'components', 'translator return app.alertError(err); } data.posts.display_move_tools = data.posts.display_move_tools && index !== 0; + data.postSharing = data.postSharing.filter(function(share) { return share.activated === true; }); + templates.parse('partials/topic/post-menu-list', data, function(html) { translator.translate(html, function(html) { dropdownMenu.html(html); diff --git a/public/src/modules/share.js b/public/src/modules/share.js index 1413921fc9..c0648009f0 100644 --- a/public/src/modules/share.js +++ b/public/src/modules/share.js @@ -31,17 +31,19 @@ define('share', function() { return false; }); - addHandler('.twitter-share', function () { + addHandler('[component="share/twitter"]', function () { return openShare('https://twitter.com/intent/tweet?text=' + encodeURIComponent(name) + '&url=', getPostUrl($(this)), 550, 420); }); - addHandler('.facebook-share', function () { + addHandler('[component="share/facebook"]', function () { return openShare('https://www.facebook.com/sharer/sharer.php?u=', getPostUrl($(this)), 626, 436); }); - addHandler('.google-share', function () { + addHandler('[component="share/google"]', function () { return openShare('https://plus.google.com/share?url=', getPostUrl($(this)), 500, 570); }); + + $(window).trigger('action:share.addHandlers', {openShare: openShare}); }; function addHandler(selector, callback) { diff --git a/src/controllers/admin.js b/src/controllers/admin.js index 0580bd42a4..8b9b1cafc7 100644 --- a/src/controllers/admin.js +++ b/src/controllers/admin.js @@ -22,6 +22,7 @@ var adminController = { sounds: require('./admin/sounds'), homepage: require('./admin/homepage'), navigation: require('./admin/navigation'), + social: require('./admin/social'), themes: require('./admin/themes'), users: require('./admin/users'), uploads: require('./admin/uploads'), diff --git a/src/controllers/admin/social.js b/src/controllers/admin/social.js new file mode 100644 index 0000000000..d8f87af060 --- /dev/null +++ b/src/controllers/admin/social.js @@ -0,0 +1,20 @@ +'use strict'; + +var social = require('../../social'); + +var socialController = {}; + + +socialController.get = function(req, res, next) { + social.getPostSharing(function(err, posts) { + if (err) { + return next(err); + } + + res.render('admin/general/social', { + posts: posts + }); + }); +}; + +module.exports = socialController; \ No newline at end of file diff --git a/src/routes/admin.js b/src/routes/admin.js index 9424a1cda3..f5d4d039a1 100644 --- a/src/routes/admin.js +++ b/src/routes/admin.js @@ -48,6 +48,7 @@ function addRoutes(router, middleware, controllers) { router.get('/general/sounds', middlewares, controllers.admin.sounds.get); router.get('/general/navigation', middlewares, controllers.admin.navigation.get); router.get('/general/homepage', middlewares, controllers.admin.homepage.get); + router.get('/general/social', middlewares, controllers.admin.social.get); router.get('/manage/categories', middlewares, controllers.admin.categories.getAll); router.get('/manage/categories/:category_id', middlewares, controllers.admin.categories.get); diff --git a/src/social.js b/src/social.js new file mode 100644 index 0000000000..c450421dcb --- /dev/null +++ b/src/social.js @@ -0,0 +1,58 @@ +"use strict"; + +var plugins = require('./plugins'); +var db = require('./database'); +var async = require('async'); + +var social = {}; + +social.getPostSharing = function(callback) { + var networks = [ + { + id: "facebook", + name: "Facebook", + class: "fa-facebook" + }, + { + id: "twitter", + name: "Twitter", + class: "fa-twitter" + }, + { + id: "google", + name: "Google+", + class: "fa-google-plus" + } + ]; + + async.waterfall([ + function(next) { + plugins.fireHook('filter:social.posts', networks, next); + }, + function(networks, next) { + db.getSetMembers('social:posts.activated', function(err, activated) { + if (err) { + return next(err); + } + + networks.forEach(function(network, i) { + networks[i].activated = (activated.indexOf(network.id) !== -1); + }); + + next(null, networks); + }); + } + ], callback); +}; + +social.setActivePostSharingNetworks = function(networkIDs, callback) { + db.delete('social:posts.activated', function(err) { + if (!networkIDs.length) { + return callback(err); + } + + db.setAdd('social:posts.activated', networkIDs, callback); + }); +}; + +module.exports = social; \ No newline at end of file diff --git a/src/socket.io/admin.js b/src/socket.io/admin.js index 03f971b166..ec863e4c39 100644 --- a/src/socket.io/admin.js +++ b/src/socket.io/admin.js @@ -25,6 +25,7 @@ var async = require('async'), rewards: require('./admin/rewards'), navigation: require('./admin/navigation'), rooms: require('./admin/rooms'), + social: require('./admin/social'), themes: {}, plugins: {}, widgets: {}, diff --git a/src/socket.io/admin/social.js b/src/socket.io/admin/social.js new file mode 100644 index 0000000000..68b3241c64 --- /dev/null +++ b/src/socket.io/admin/social.js @@ -0,0 +1,10 @@ +"use strict"; + +var social = require('../../social'), + SocketSocial = {}; + +SocketSocial.savePostSharingNetworks = function(socket, data, callback) { + social.setActivePostSharingNetworks(data, callback); +}; + +module.exports = SocketSocial; \ No newline at end of file diff --git a/src/socket.io/posts/tools.js b/src/socket.io/posts/tools.js index 8c63385baf..c3f08461fe 100644 --- a/src/socket.io/posts/tools.js +++ b/src/socket.io/posts/tools.js @@ -8,6 +8,7 @@ var websockets = require('../index'); var socketTopics = require('../topics'); var privileges = require('../../privileges'); var plugins = require('../../plugins'); +var social = require('../../social'); var favourites = require('../../favourites'); module.exports = function(SocketPosts) { @@ -29,6 +30,9 @@ module.exports = function(SocketPosts) { }, tools: function(next) { plugins.fireHook('filter:post.tools', {pid: data.pid, uid: socket.uid, tools: []}, next); + }, + postSharing: function(next) { + social.getPostSharing(next); } }, function(err, results) { if (err) { diff --git a/src/upgrade.js b/src/upgrade.js index 59d5e6b954..2d2001fc41 100644 --- a/src/upgrade.js +++ b/src/upgrade.js @@ -10,7 +10,7 @@ var db = require('./database'), schemaDate, thisSchemaDate, // IMPORTANT: REMEMBER TO UPDATE VALUE OF latestSchema - latestSchema = Date.UTC(2016, 0, 23); + latestSchema = Date.UTC(2016, 1, 25); Upgrade.check = function(callback) { db.get('schemaDate', function(err, value) { @@ -410,6 +410,34 @@ Upgrade.upgrade = function(callback) { winston.info('[2016/01/23] Creating Global moderators group skipped!'); next(); } + }, + function(next) { + thisSchemaDate = Date.UTC(2016, 1, 25); + + if (schemaDate < thisSchemaDate) { + updatesMade = true; + winston.info('[2016/02/25] Social: Post Sharing'); + + var social = require('./social'); + async.parallel([ + function (next) { + social.setActivePostSharingNetworks(['facebook', 'google', 'twitter'], next); + }, + function (next) { + db.deleteObjectField('config', 'disableSocialButtons', next); + } + ], function(err) { + if (err) { + return next(err); + } + + winston.info('[2016/02/25] Social: Post Sharing done!'); + Upgrade.update(thisSchemaDate, next); + }); + } else { + winston.info('[2016/02/25] Social: Post Sharing skipped!'); + next(); + } } // Add new schema updates here // IMPORTANT: REMEMBER TO UPDATE VALUE OF latestSchema IN LINE 24!!! diff --git a/src/views/admin/general/social.tpl b/src/views/admin/general/social.tpl new file mode 100644 index 0000000000..5ce9ccfc84 --- /dev/null +++ b/src/views/admin/general/social.tpl @@ -0,0 +1,24 @@ + + + \ No newline at end of file diff --git a/src/views/admin/partials/menu.tpl b/src/views/admin/partials/menu.tpl index cb4efad079..a0027c0621 100644 --- a/src/views/admin/partials/menu.tpl +++ b/src/views/admin/partials/menu.tpl @@ -7,6 +7,7 @@
  • Navigation
  • Languages
  • Sounds
  • +
  • Social
  • @@ -160,6 +161,7 @@
  • Navigation
  • Languages
  • Sounds
  • +
  • Social
  • + +
    +
    +
    +
    +

    + Figure 1 – Hourly page views for this category +

    +
    +
    +
    +

    + Figure 2 – Daily page views for this category +

    +
    +
    +
    +
    +
    +

    + Figure 3 – Daily topics created in this category +

    +
    +
    +
    +

    + Figure 4 – Daily posts made in this category +

    +
    +
    +
    From db3446b1ca82b9978f164ad82d4021f789f7f2f2 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Thu, 25 Feb 2016 16:21:46 -0500 Subject: [PATCH 108/124] updated some of the graph colours --- public/src/admin/manage/category.js | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/public/src/admin/manage/category.js b/public/src/admin/manage/category.js index b4eb876591..a845b59790 100644 --- a/public/src/admin/manage/category.js +++ b/public/src/admin/manage/category.js @@ -373,12 +373,12 @@ define('admin/manage/category', [ datasets: [ { label: "", - fillColor: "rgba(220,220,220,0.2)", - strokeColor: "rgba(220,220,220,1)", - pointColor: "rgba(220,220,220,1)", + fillColor: "rgba(186,139,175,0.2)", + strokeColor: "rgba(186,139,175,1)", + pointColor: "rgba(186,139,175,1)", pointStrokeColor: "#fff", pointHighlightFill: "#fff", - pointHighlightStroke: "rgba(220,220,220,1)", + pointHighlightStroke: "rgba(186,139,175,1)", data: ajaxify.data.analytics['pageviews:hourly'] } ] @@ -403,12 +403,12 @@ define('admin/manage/category', [ datasets: [ { label: "", - fillColor: "rgba(151,187,205,0.2)", - strokeColor: "rgba(151,187,205,1)", - pointColor: "rgba(151,187,205,1)", + fillColor: "rgba(171,70,66,0.2)", + strokeColor: "rgba(171,70,66,1)", + pointColor: "rgba(171,70,66,1)", pointStrokeColor: "#fff", pointHighlightFill: "#fff", - pointHighlightStroke: "rgba(151,187,205,1)", + pointHighlightStroke: "rgba(171,70,66,1)", data: ajaxify.data.analytics['topics:daily'] } ] @@ -418,12 +418,12 @@ define('admin/manage/category', [ datasets: [ { label: "", - fillColor: "rgba(151,187,205,0.2)", - strokeColor: "rgba(151,187,205,1)", - pointColor: "rgba(151,187,205,1)", + fillColor: "rgba(161,181,108,0.2)", + strokeColor: "rgba(161,181,108,1)", + pointColor: "rgba(161,181,108,1)", pointStrokeColor: "#fff", pointHighlightFill: "#fff", - pointHighlightStroke: "rgba(151,187,205,1)", + pointHighlightStroke: "rgba(161,181,108,1)", data: ajaxify.data.analytics['posts:daily'] } ] From dd3f1b9ba83d96d4a4ec50073d825ef0242d6ed5 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Thu, 25 Feb 2016 16:22:35 -0500 Subject: [PATCH 109/124] removed console.log --- src/analytics.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/analytics.js b/src/analytics.js index 67b82c8d5e..c907d784a8 100644 --- a/src/analytics.js +++ b/src/analytics.js @@ -84,7 +84,6 @@ var db = require('./database'); if (Object.keys(counters).length > 0) { for(var key in counters) { - console.log('flushing', key, 'with a value of', counters[key]); dbQueue.push(async.apply(db.sortedSetIncrBy, 'analytics:' + key, counters[key], today.getTime())); delete counters[key]; } From 5f6a1a0acdd6d076bb80fb680a27bd66cf4b7668 Mon Sep 17 00:00:00 2001 From: pichalite Date: Fri, 26 Feb 2016 00:04:56 +0000 Subject: [PATCH 110/124] complete fixes for #4144 --- public/src/modules/notifications.js | 2 +- public/vendor/tinycon/tinycon.js | 2 +- src/topics/unread.js | 2 +- src/user/notifications.js | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/public/src/modules/notifications.js b/public/src/modules/notifications.js index ec54fc0812..7b57651867 100644 --- a/public/src/modules/notifications.js +++ b/public/src/modules/notifications.js @@ -148,7 +148,7 @@ define('notifications', ['sounds', 'translator', 'components'], function(sound, $(window).trigger('action:notification.updateCount', payload); if (payload.updateFavicon) { - Tinycon.setBubble(count); + Tinycon.setBubble(count > 99 ? '99+' : count); } }; diff --git a/public/vendor/tinycon/tinycon.js b/public/vendor/tinycon/tinycon.js index c1164fa22d..3317cc0d03 100644 --- a/public/vendor/tinycon/tinycon.js +++ b/public/vendor/tinycon/tinycon.js @@ -20,7 +20,7 @@ var defaults = { width: 7, height: 9, - font: 10 * r + 'px arial', + font: 9 * r + 'px arial', colour: '#ffffff', background: '#F03D25', fallback: true, diff --git a/src/topics/unread.js b/src/topics/unread.js index 2627f5e78f..28846640b7 100644 --- a/src/topics/unread.js +++ b/src/topics/unread.js @@ -15,7 +15,7 @@ var utils = require('../../public/src/utils'); module.exports = function(Topics) { Topics.getTotalUnread = function(uid, callback) { - Topics.getUnreadTids(0, uid, 0, 20, function(err, tids) { + Topics.getUnreadTids(0, uid, 0, 99, function(err, tids) { callback(err, tids ? tids.length : 0); }); }; diff --git a/src/user/notifications.js b/src/user/notifications.js index 64feddda54..6c7634362a 100644 --- a/src/user/notifications.js +++ b/src/user/notifications.js @@ -208,7 +208,7 @@ var async = require('async'), if (!parseInt(uid, 10)) { return callback(null, 0); } - db.getSortedSetRevRange('uid:' + uid + ':notifications:unread', 0, 20, function(err, nids) { + db.getSortedSetRevRange('uid:' + uid + ':notifications:unread', 0, 99, function(err, nids) { callback(err, Array.isArray(nids) ? nids.length : 0); }); }; From 2b10ef97b230c2a8780bda69c5b2e531dce596e0 Mon Sep 17 00:00:00 2001 From: psychobunny Date: Thu, 25 Feb 2016 23:04:19 -0500 Subject: [PATCH 111/124] closes #4262 --- public/language/en_GB/pages.json | 2 ++ src/controllers/index.js | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/public/language/en_GB/pages.json b/public/language/en_GB/pages.json index 6d87cb70c5..bbdf3cdc47 100644 --- a/public/language/en_GB/pages.json +++ b/public/language/en_GB/pages.json @@ -45,6 +45,8 @@ "account/downvoted": "Posts downvoted by %1", "account/best": "Best posts made by %1", + "confirm": "Email Confirmed", + "maintenance.text": "%1 is currently undergoing maintenance. Please come back another time.", "maintenance.messageIntro": "Additionally, the administrator has left this message:", diff --git a/src/controllers/index.js b/src/controllers/index.js index 8ff28bd50e..cc83f0727a 100644 --- a/src/controllers/index.js +++ b/src/controllers/index.js @@ -182,7 +182,8 @@ Controllers.compose = function(req, res, next) { Controllers.confirmEmail = function(req, res, next) { user.email.confirm(req.params.code, function (err) { res.render('confirm', { - error: err ? err.message : '' + error: err ? err.message : '', + title: '[[pages:confirm]]', }); }); }; From ee6d16c3d8d5d7ef8c027d43763b5b729cbb0975 Mon Sep 17 00:00:00 2001 From: psychobunny Date: Thu, 25 Feb 2016 23:06:00 -0500 Subject: [PATCH 112/124] closes #4266 --- src/views/admin/general/sounds.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/admin/general/sounds.tpl b/src/views/admin/general/sounds.tpl index b0e4ce071e..72036f72cc 100644 --- a/src/views/admin/general/sounds.tpl +++ b/src/views/admin/general/sounds.tpl @@ -63,7 +63,7 @@
    - +
    From 5997f2f5c4087134f35125375cb75c8fa1f54d0d Mon Sep 17 00:00:00 2001 From: barisusakli Date: Fri, 26 Feb 2016 14:24:21 +0200 Subject: [PATCH 113/124] up mentions --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8fbb73f131..5dcb5e8cf8 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "nodebb-plugin-dbsearch": "0.3.1", "nodebb-plugin-emoji-extended": "0.5.0", "nodebb-plugin-markdown": "4.0.17", - "nodebb-plugin-mentions": "1.0.16", + "nodebb-plugin-mentions": "1.0.17", "nodebb-plugin-soundpack-default": "0.1.5", "nodebb-plugin-spam-be-gone": "0.4.5", "nodebb-rewards-essentials": "0.0.6", From c8ee1b4c5849e3950deda695c446380fb1510ad8 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Fri, 26 Feb 2016 16:45:44 +0200 Subject: [PATCH 114/124] closes #4261 --- src/controllers/authentication.js | 65 +++++++++++++++++-------------- 1 file changed, 36 insertions(+), 29 deletions(-) diff --git a/src/controllers/authentication.js b/src/controllers/authentication.js index 841be5cceb..fa6cc6fd8c 100644 --- a/src/controllers/authentication.js +++ b/src/controllers/authentication.js @@ -87,8 +87,7 @@ function registerAndLoginUser(req, res, userData, callback) { function(_uid, next) { uid = _uid; if (res.locals.processLogin === true) { - user.logIP(uid, req.ip); - req.login({uid: uid}, next); + doLogin(req, uid, next); } else { next(); } @@ -172,37 +171,11 @@ function continueLogin(req, res, next) { res.status(200).send(nconf.get('relative_path') + '/reset/' + code); }); } else { - req.login({ - uid: userData.uid - }, function(err) { + doLogin(req, userData.uid, function(err) { if (err) { return res.status(403).send(err.message); } - if (userData.uid) { - var uuid = utils.generateUUID(); - req.session.meta = {}; - - // Associate IP used during login with user account - user.logIP(userData.uid, req.ip); - req.session.meta.ip = req.ip; - - // Associate metadata retrieved via user-agent - req.session.meta = _.extend(req.session.meta, { - uuid: uuid, - datetime: Date.now(), - platform: req.useragent.platform, - browser: req.useragent.browser, - version: req.useragent.version - }); - - // Associate login session with user - user.auth.addSession(userData.uid, req.sessionID); - db.setObjectField('uid:' + userData.uid + 'sessionUUID:sessionId', uuid, req.sessionID); - - plugins.fireHook('action:user.loggedIn', userData.uid); - } - if (!req.session.returnTo) { res.status(200).send(nconf.get('relative_path') + '/'); } else { @@ -216,6 +189,40 @@ function continueLogin(req, res, next) { })(req, res, next); } +function doLogin(req, uid, callback) { + req.login({uid: uid}, function(err) { + if (err) { + return callback(err); + } + + if (uid) { + var uuid = utils.generateUUID(); + req.session.meta = {}; + + // Associate IP used during login with user account + user.logIP(uid, req.ip); + req.session.meta.ip = req.ip; + + // Associate metadata retrieved via user-agent + req.session.meta = _.extend(req.session.meta, { + uuid: uuid, + datetime: Date.now(), + platform: req.useragent.platform, + browser: req.useragent.browser, + version: req.useragent.version + }); + + // Associate login session with user + user.auth.addSession(uid, req.sessionID); + db.setObjectField('uid:' + uid + 'sessionUUID:sessionId', uuid, req.sessionID); + + plugins.fireHook('action:user.loggedIn', uid); + } + + callback(); + }); +} + authenticationController.localLogin = function(req, username, password, next) { if (!username) { return next(new Error('[[error:invalid-username]]')); From 7ffbf35bcf024898dc25b24ee02d3eace09802f8 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Fri, 26 Feb 2016 17:06:03 +0200 Subject: [PATCH 115/124] closes #4273 --- public/src/client/register.js | 67 +++++++++++++++++++---------------- 1 file changed, 36 insertions(+), 31 deletions(-) diff --git a/public/src/client/register.js b/public/src/client/register.js index f5096376c2..da86c0231d 100644 --- a/public/src/client/register.js +++ b/public/src/client/register.js @@ -1,6 +1,6 @@ 'use strict'; -/* globals define, app, utils, socket, config */ +/* globals define, app, utils, socket, config, ajaxify, bootbox */ define('forum/register', ['csrf', 'translator'], function(csrf, translator) { @@ -67,41 +67,44 @@ define('forum/register', ['csrf', 'translator'], function(csrf, translator) { register.on('click', function(e) { var registerBtn = $(this); + var errorEl = $('#register-error-notify'); + errorEl.addClass('hidden'); e.preventDefault(); validateForm(function() { - if (!validationError) { - registerBtn.addClass('disabled'); - - registerBtn.parents('form').ajaxSubmit({ - headers: { - 'x-csrf-token': csrf.get() - }, - success: function(data, status) { - registerBtn.removeClass('disabled'); - if (!data) { - return; - } - 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('/'); - }); + if (validationError) { + return; + } + + registerBtn.addClass('disabled'); + + registerBtn.parents('form').ajaxSubmit({ + headers: { + 'x-csrf-token': csrf.get() + }, + success: function(data) { + registerBtn.removeClass('disabled'); + if (!data) { + return; + } + 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('/'); }); - } - }, - error: function(data, status) { - var errorEl = $('#register-error-notify'); - translator.translate(data.responseText, config.defaultLang, function(translated) { - errorEl.find('p').text(translated); - errorEl.show(); - registerBtn.removeClass('disabled'); }); } - }); - } + }, + error: function(data) { + translator.translate(data.responseText, config.defaultLang, function(translated) { + errorEl.find('p').text(translated); + errorEl.removeClass('hidden'); + registerBtn.removeClass('disabled'); + }); + } + }); }); }); @@ -181,6 +184,8 @@ define('forum/register', ['csrf', 'translator'], function(csrf, translator) { if (password.length < ajaxify.data.minimumPasswordLength) { showError(password_notify, '[[user:change_password_error_length]]'); + } else if (password.length > 4096) { + showError(password_notify, '[[error:password-too-long]]'); } else if (!utils.isPasswordValid(password)) { showError(password_notify, '[[user:change_password_error]]'); } else if (password === $('#username').val()) { From 5f7cc00b44df122ae7aa18e2015d26583a123af7 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Fri, 26 Feb 2016 17:10:00 +0200 Subject: [PATCH 116/124] up themes --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 5dcb5e8cf8..8774b80911 100644 --- a/package.json +++ b/package.json @@ -52,8 +52,8 @@ "nodebb-plugin-spam-be-gone": "0.4.5", "nodebb-rewards-essentials": "0.0.6", "nodebb-theme-lavender": "3.0.8", - "nodebb-theme-persona": "4.0.86", - "nodebb-theme-vanilla": "5.0.51", + "nodebb-theme-persona": "4.0.87", + "nodebb-theme-vanilla": "5.0.52", "nodebb-widget-essentials": "2.0.6", "nodemailer": "2.0.0", "nodemailer-sendmail-transport": "1.0.0", From 7bc9e4439a198cb89c623d8822f7fd3007a5028d Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Fri, 26 Feb 2016 12:37:51 -0500 Subject: [PATCH 117/124] removed .gitignore from list of sound files --- src/meta/sounds.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/meta/sounds.js b/src/meta/sounds.js index d13ecd70cd..4b85f681cb 100644 --- a/src/meta/sounds.js +++ b/src/meta/sounds.js @@ -38,6 +38,11 @@ module.exports = function(Meta) { ], function(err, files) { var localList = {}; + // Filter out hidden files + files = files.filter(function(filename) { + return !filename.startsWith('.'); + }); + if (err) { winston.error('Could not get local sound files:' + err.message); console.log(err.stack); From 5556c49f7442563ae46a6bbc50debda5a7daf139 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Fri, 26 Feb 2016 20:44:58 +0200 Subject: [PATCH 118/124] removed extra next --- src/controllers/admin/uploads.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/controllers/admin/uploads.js b/src/controllers/admin/uploads.js index 5f582bc117..aea79e3934 100644 --- a/src/controllers/admin/uploads.js +++ b/src/controllers/admin/uploads.js @@ -160,7 +160,6 @@ function uploadImage(filename, folder, uploadedFile, req, res, next) { } res.json([{name: uploadedFile.name, url: image.url.startsWith('http') ? image.url : nconf.get('relative_path') + image.url}]); - next(); } if (plugins.hasListeners('filter:uploadImage')) { From 13623a620b677a453612aa6b8f92a4e80fa1c3dc Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Fri, 26 Feb 2016 14:27:03 -0500 Subject: [PATCH 119/124] fixed #4277 --- public/src/client/account/edit.js | 29 ++++++++++++++++++++--------- src/socket.io/user/picture.js | 18 ++++++++++-------- 2 files changed, 30 insertions(+), 17 deletions(-) diff --git a/public/src/client/account/edit.js b/public/src/client/account/edit.js index cd97196ad0..a436b2c6dd 100644 --- a/public/src/client/account/edit.js +++ b/public/src/client/account/edit.js @@ -78,10 +78,15 @@ define('forum/account/edit', ['forum/account/header', 'uploader', 'translator'], if (err) { return app.alertError(err.message); } + + // boolean to signify whether an uploaded picture is present in the pictures list + var uploaded = pictures.reduce(function(memo, cur) { + return memo || cur.type === 'uploaded' + }, false); templates.parse('partials/modals/change_picture_modal', { pictures: pictures, - uploaded: !!ajaxify.data.uploadedpicture, + uploaded: uploaded, allowProfileImageUploads: ajaxify.data.allowProfileImageUploads }, function(html) { translator.translate(html, function(html) { @@ -189,15 +194,21 @@ define('forum/account/edit', ['forum/account/header', 'uploader', 'translator'], function onUploadComplete(urlOnServer) { urlOnServer = urlOnServer + '?' + new Date().getTime(); - $('#user-current-picture, img.avatar').attr('src', urlOnServer); updateHeader(urlOnServer); - uploadedPicture = urlOnServer; + + if (ajaxify.data.picture.length) { + $('#user-current-picture, img.avatar').attr('src', urlOnServer); + uploadedPicture = urlOnServer; + } else { + ajaxify.refresh(); + } } - function onRemoveComplete(urlOnServer) { - $('#user-current-picture').attr('src', urlOnServer); - updateHeader(urlOnServer); - uploadedPicture = ''; + function onRemoveComplete() { + if (ajaxify.data.uploadedpicture === ajaxify.data.picture) { + ajaxify.refresh(); + updateHeader(); + } } modal.find('[data-action="upload"]').on('click', function() { @@ -239,12 +250,12 @@ define('forum/account/edit', ['forum/account/header', 'uploader', 'translator'], }); modal.find('[data-action="remove-uploaded"]').on('click', function() { - socket.emit('user.removeUploadedPicture', {uid: ajaxify.data.theirid}, function(err, imageUrlOnServer) { + socket.emit('user.removeUploadedPicture', {uid: ajaxify.data.theirid}, function(err) { modal.modal('hide'); if (err) { return app.alertError(err.message); } - onRemoveComplete(imageUrlOnServer); + onRemoveComplete(); }); }); } diff --git a/src/socket.io/user/picture.js b/src/socket.io/user/picture.js index 6149eff50d..55caa37857 100644 --- a/src/socket.io/user/picture.js +++ b/src/socket.io/user/picture.js @@ -2,6 +2,7 @@ var async = require('async'); var winston = require('winston'); +var path = require('path'); var user = require('../../user'); var plugins = require('../../plugins'); @@ -73,20 +74,21 @@ module.exports = function(SocketUser) { user.isAdminOrSelf(socket.uid, data.uid, next); }, function (next) { - user.getUserField(data.uid, 'uploadedpicture', next); + user.getUserFields(data.uid, ['uploadedpicture', 'picture'], next); }, - function(uploadedPicture, next) { - if (!uploadedPicture.startsWith('http')) { - require('fs').unlink(uploadedPicture, function(err) { + function(userData, next) { + if (!userData.uploadedpicture.startsWith('http')) { + require('fs').unlink(path.join(__dirname, '../../../public', userData.uploadedpicture), function(err) { if (err) { winston.error(err); } }); } - user.setUserField(data.uid, 'uploadedpicture', '', next); - }, - function(next) { - user.getUserField(data.uid, 'picture', next); + + user.setUserFields(data.uid, { + uploadedpicture: '', + picture: userData.uploadedpicture === userData.picture ? '' : userData.picture // if current picture is uploaded picture, reset to user icon + }, next); } ], callback); }; From 3e46ef8c3534855e10ecfe139f5fd149cfcadcec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Fri, 26 Feb 2016 21:34:57 +0200 Subject: [PATCH 120/124] closes #4276 --- public/src/modules/notifications.js | 36 +++++++++++++++++++---------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/public/src/modules/notifications.js b/public/src/modules/notifications.js index 7b57651867..35f1e677dd 100644 --- a/public/src/modules/notifications.js +++ b/public/src/modules/notifications.js @@ -1,10 +1,12 @@ 'use strict'; -/* globals define, socket, utils, config, app, ajaxify, templates, Tinycon*/ +/* globals define, socket, app, ajaxify, templates, Tinycon*/ define('notifications', ['sounds', 'translator', 'components'], function(sound, translator, components) { var Notifications = {}; + var unreadNotifs = {}; + Notifications.prepareDOM = function() { var notifContainer = components.get('notifications'), notifTrigger = notifContainer.children('a'), @@ -29,34 +31,40 @@ define('notifications', ['sounds', 'translator', 'components'], function(sound, notifList.on('click', '[data-nid]', function() { var unread = $(this).hasClass('unread'); + var nid = $(this).attr('data-nid'); if (!unread) { return; } - socket.emit('notifications.markRead', $(this).attr('data-nid'), function(err) { + socket.emit('notifications.markRead', nid, function(err) { if (err) { return app.alertError(err.message); } incrementNotifCount(-1); + if (unreadNotifs[nid]) { + delete unreadNotifs[nid]; + } }); }); notifContainer.on('click', '.mark-all-read', Notifications.markAllRead); - notifList.on('click', '.mark-read', function(e) { - var liEl = $(this).parent(), - unread = liEl.hasClass('unread'); - - e.preventDefault(); - e.stopPropagation(); + notifList.on('click', '.mark-read', function() { + var liEl = $(this).parent(); + var unread = liEl.hasClass('unread'); + var nid = liEl.attr('data-nid'); - socket.emit('notifications.mark' + (unread ? 'Read' : 'Unread'), liEl.attr('data-nid'), function(err) { + socket.emit('notifications.mark' + (unread ? 'Read' : 'Unread'), nid, function(err) { if (err) { return app.alertError(err.message); } liEl.toggleClass('unread'); incrementNotifCount(unread ? -1 : 1); + if (unread && unreadNotifs[nid]) { + delete unreadNotifs[nid]; + } }); + return false; }); function incrementNotifCount(delta) { @@ -96,10 +104,13 @@ define('notifications', ['sounds', 'translator', 'components'], function(sound, if (ajaxify.currentPage === 'notifications') { ajaxify.refresh(); } + + if (!unreadNotifs[notifData.nid]) { + incrementNotifCount(1); - incrementNotifCount(1); - - sound.play('notification'); + sound.play('notification'); + unreadNotifs[notifData.nid] = true; + } }); socket.on('event:notifications.updateCount', function(count) { @@ -158,6 +169,7 @@ define('notifications', ['sounds', 'translator', 'components'], function(sound, app.alertError(err.message); } Notifications.updateNotifCount(0); + unreadNotifs = {}; }); }; From 99e95081316f528ffac2d678708796db7e3581f0 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Fri, 26 Feb 2016 14:47:30 -0500 Subject: [PATCH 121/124] fixed #4270 --- public/src/client/topic/move.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/public/src/client/topic/move.js b/public/src/client/topic/move.js index d013e1c09d..d16eb9bc41 100644 --- a/public/src/client/topic/move.js +++ b/public/src/client/topic/move.js @@ -6,8 +6,7 @@ define('forum/topic/move', function() { var Move = {}, modal, - targetCid, - targetCategoryLabel; + selectedEl; Move.init = function(tids, currentCid, onComplete) { Move.tids = tids; @@ -70,6 +69,8 @@ define('forum/topic/move', function() { } categoryEl.toggleClass('disabled', !!category.disabled); categoryEl.attr('data-cid', category.cid); + categoryEl.attr('data-icon', category.icon); + categoryEl.attr('data-name', category.name); categoryEl.html(' ' + category.name); parentEl.append(level); @@ -88,15 +89,14 @@ define('forum/topic/move', function() { modal.find('#confirm-category-name').html(category.html()); modal.find('#move-confirm').removeClass('hide'); - targetCid = category.attr('data-cid'); - targetCategoryLabel = category.html(); + selectedEl = category; modal.find('#move_thread_commit').prop('disabled', false); } function onCommitClicked() { var commitEl = modal.find('#move_thread_commit'); - if (!commitEl.prop('disabled') && targetCid) { + if (!commitEl.prop('disabled') && selectedEl.attr('data-cid')) { commitEl.prop('disabled', true); moveTopics(); @@ -106,7 +106,7 @@ define('forum/topic/move', function() { function moveTopics() { socket.emit(Move.moveAll ? 'topics.moveAll' : 'topics.move', { tids: Move.tids, - cid: targetCid, + cid: selectedEl.attr('data-cid'), currentCid: Move.currentCid }, function(err) { modal.modal('hide'); @@ -115,7 +115,7 @@ define('forum/topic/move', function() { return app.alertError(err.message); } - app.alertSuccess('[[topic:topic_move_success, ' + targetCategoryLabel + ']]'); + app.alertSuccess('[[topic:topic_move_success, ' + selectedEl.attr('data-name') + ']] '); if (typeof Move.onComplete === 'function') { Move.onComplete(); } From 4c5ebe49852b64eb7466c7ff9ee622940a0f3bcf Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Fri, 26 Feb 2016 15:26:24 -0500 Subject: [PATCH 122/124] fixed #4020 --- public/vendor/autosize.js | 293 +++++++++++++++++++++++++------------- 1 file changed, 196 insertions(+), 97 deletions(-) diff --git a/public/vendor/autosize.js b/public/vendor/autosize.js index b6a5c39af8..aa51c70572 100644 --- a/public/vendor/autosize.js +++ b/public/vendor/autosize.js @@ -1,155 +1,254 @@ /*! - Autosize 2.0.0 + Autosize 3.0.15 license: MIT http://www.jacklmoore.com/autosize */ -'use strict'; -/*globals define*/ -(function (root, factory) { +(function (global, factory) { if (typeof define === 'function' && define.amd) { - // AMD. Register as an anonymous module. - define('autosize', factory); - } else if (typeof exports === 'object') { - // Node. Does not work with strict CommonJS, but - // only CommonJS-like environments that support module.exports, - // like Node. - module.exports = factory(); + define('autosize', ['exports', 'module'], factory); + } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { + factory(exports, module); } else { - // Browser globals (root is window) - root.autosize = factory(); - } -}(this, function () { - function main(ta) { - if (!ta || !ta.nodeName || ta.nodeName !== 'TEXTAREA' || ta.hasAttribute('data-autosize-on')) { return; } + var mod = { + exports: {} + }; + factory(mod.exports, mod); + global.autosize = mod.exports; + } +})(this, function (exports, module) { + 'use strict'; + + var set = typeof Set === 'function' ? new Set() : (function () { + var list = []; + + return { + has: function has(key) { + return Boolean(list.indexOf(key) > -1); + }, + add: function add(key) { + list.push(key); + }, + 'delete': function _delete(key) { + list.splice(list.indexOf(key), 1); + } }; + })(); + + var createEvent = function createEvent(name) { + return new Event(name); + }; + try { + new Event('test'); + } catch (e) { + // IE does not support `new Event()` + createEvent = function (name) { + var evt = document.createEvent('Event'); + evt.initEvent(name, true, false); + return evt; + }; + } - var maxHeight; - var heightOffset; - var amountOfCR; + function assign(ta) { + var _ref = arguments[1] === undefined ? {} : arguments[1]; + + var _ref$setOverflowX = _ref.setOverflowX; + var setOverflowX = _ref$setOverflowX === undefined ? true : _ref$setOverflowX; + var _ref$setOverflowY = _ref.setOverflowY; + var setOverflowY = _ref$setOverflowY === undefined ? true : _ref$setOverflowY; + + if (!ta || !ta.nodeName || ta.nodeName !== 'TEXTAREA' || set.has(ta)) return; + + var heightOffset = null; + var overflowY = null; + var clientWidth = ta.clientWidth; function init() { var style = window.getComputedStyle(ta, null); + overflowY = style.overflowY; + if (style.resize === 'vertical') { ta.style.resize = 'none'; } else if (style.resize === 'both') { ta.style.resize = 'horizontal'; } - // horizontal overflow is hidden, so break-word is necessary for handling words longer than the textarea width - ta.style.wordWrap = 'break-word'; - - // Chrome/Safari-specific fix: - // When the textarea y-overflow is hidden, Chrome/Safari doesn't reflow the text to account for the space - // made available by removing the scrollbar. This workaround will cause the text to reflow. - var width = ta.style.width; - ta.style.width = '0px'; - // Force reflow: - /* jshint ignore:start */ - ta.offsetWidth; - /* jshint ignore:end */ - ta.style.width = width; - - maxHeight = style.maxHeight !== 'none' ? parseFloat(style.maxHeight) : false; - if (style.boxSizing === 'content-box') { - heightOffset = -(parseFloat(style.paddingTop)+parseFloat(style.paddingBottom)); + heightOffset = -(parseFloat(style.paddingTop) + parseFloat(style.paddingBottom)); } else { - heightOffset = parseFloat(style.borderTopWidth)+parseFloat(style.borderBottomWidth); + heightOffset = parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth); + } + // Fix when a textarea is not on document body and heightOffset is Not a Number + if (isNaN(heightOffset)) { + heightOffset = 0; } - amountOfCR = (ta.value.match(/\n/g) || []).length; - adjust(); + update(); } - function adjust() { - var startHeight = ta.style.height; - var htmlTop = document.documentElement.scrollTop; - var bodyTop = document.body.scrollTop; + function changeOverflow(value) { + { + // Chrome/Safari-specific fix: + // When the textarea y-overflow is hidden, Chrome/Safari do not reflow the text to account for the space + // made available by removing the scrollbar. The following forces the necessary text reflow. + var width = ta.style.width; + ta.style.width = '0px'; + // Force reflow: + /* jshint ignore:start */ + ta.offsetWidth; + /* jshint ignore:end */ + ta.style.width = width; + } - var newAmountOfCR = (ta.value.match(/\n/g) || []).length; - if (newAmountOfCR === amountOfCR) { - return; + overflowY = value; + + if (setOverflowY) { + ta.style.overflowY = value; } - amountOfCR = newAmountOfCR; - + resize(); + } + + function resize() { + var htmlTop = window.pageYOffset; + var bodyTop = document.body.scrollTop; + var originalHeight = ta.style.height; + ta.style.height = 'auto'; - var endHeight = ta.scrollHeight+heightOffset; + var endHeight = ta.scrollHeight + heightOffset; - if (maxHeight !== false && maxHeight < endHeight) { - endHeight = maxHeight; - if (ta.style.overflowY !== 'scroll') { - ta.style.overflowY = 'scroll'; - } - } else if (ta.style.overflowY !== 'hidden') { - ta.style.overflowY = 'hidden'; + if (ta.scrollHeight === 0) { + // If the scrollHeight is 0, then the element probably has display:none or is detached from the DOM. + ta.style.height = originalHeight; + return; } - ta.style.height = endHeight+'px'; + ta.style.height = endHeight + 'px'; + + // used to check if an update is actually necessary on window.resize + clientWidth = ta.clientWidth; // prevents scroll-position jumping document.documentElement.scrollTop = htmlTop; document.body.scrollTop = bodyTop; + } + + function update() { + var startHeight = ta.style.height; + + resize(); + + var style = window.getComputedStyle(ta, null); + + if (style.height !== ta.style.height) { + if (overflowY !== 'visible') { + changeOverflow('visible'); + } + } else { + if (overflowY !== 'hidden') { + changeOverflow('hidden'); + } + } if (startHeight !== ta.style.height) { - var evt = document.createEvent('Event'); - evt.initEvent('autosize.resized', true, false); + var evt = createEvent('autosize:resized'); ta.dispatchEvent(evt); } } + var pageResize = function pageResize() { + if (ta.clientWidth !== clientWidth) { + update(); + } + }; + + var destroy = (function (style) { + window.removeEventListener('resize', pageResize, false); + ta.removeEventListener('input', update, false); + ta.removeEventListener('keyup', update, false); + ta.removeEventListener('autosize:destroy', destroy, false); + ta.removeEventListener('autosize:update', update, false); + set['delete'](ta); + + Object.keys(style).forEach(function (key) { + ta.style[key] = style[key]; + }); + }).bind(ta, { + height: ta.style.height, + resize: ta.style.resize, + overflowY: ta.style.overflowY, + overflowX: ta.style.overflowX, + wordWrap: ta.style.wordWrap }); + + ta.addEventListener('autosize:destroy', destroy, false); + // IE9 does not fire onpropertychange or oninput for deletions, // so binding to onkeyup to catch most of those events. // There is no way that I know of to detect something like 'cut' in IE9. if ('onpropertychange' in ta && 'oninput' in ta) { - ta.addEventListener('keyup', adjust); + ta.addEventListener('keyup', update, false); } - window.addEventListener('resize', adjust); - ta.addEventListener('input', adjust); - - ta.addEventListener('autosize.update', adjust); + window.addEventListener('resize', pageResize, false); + ta.addEventListener('input', update, false); + ta.addEventListener('autosize:update', update, false); + set.add(ta); - ta.addEventListener('autosize.destroy', function(style){ - window.removeEventListener('resize', adjust); - ta.removeEventListener('input', adjust); - ta.removeEventListener('keyup', adjust); - ta.removeEventListener('autosize.destroy'); - - Object.keys(style).forEach(function(key){ - ta.style[key] = style[key]; - }); + if (setOverflowX) { + ta.style.overflowX = 'hidden'; + ta.style.wordWrap = 'break-word'; + } - ta.removeAttribute('data-autosize-on'); - }.bind(ta, { - height: ta.style.height, - overflow: ta.style.overflow, - overflowY: ta.style.overflowY, - wordWrap: ta.style.wordWrap, - resize: ta.style.resize - })); + init(); + } - ta.setAttribute('data-autosize-on', true); - ta.style.overflow = 'hidden'; - ta.style.overflowY = 'hidden'; + function destroy(ta) { + if (!(ta && ta.nodeName && ta.nodeName === 'TEXTAREA')) return; + var evt = createEvent('autosize:destroy'); + ta.dispatchEvent(evt); + } - init(); + function update(ta) { + if (!(ta && ta.nodeName && ta.nodeName === 'TEXTAREA')) return; + var evt = createEvent('autosize:update'); + ta.dispatchEvent(evt); } - // Do nothing in IE8 or lower - if (typeof window.getComputedStyle !== 'function') { - return function(elements) { - return elements; + var autosize = null; + + // Do nothing in Node.js environment and IE8 (or lower) + if (typeof window === 'undefined' || typeof window.getComputedStyle !== 'function') { + autosize = function (el) { + return el; + }; + autosize.destroy = function (el) { + return el; + }; + autosize.update = function (el) { + return el; }; } else { - return function(elements) { - if (elements && elements.length) { - Array.prototype.forEach.call(elements, main); - } else if (elements && elements.nodeName) { - main(elements); + autosize = function (el, options) { + if (el) { + Array.prototype.forEach.call(el.length ? el : [el], function (x) { + return assign(x, options); + }); + } + return el; + }; + autosize.destroy = function (el) { + if (el) { + Array.prototype.forEach.call(el.length ? el : [el], destroy); } - return elements; + return el; + }; + autosize.update = function (el) { + if (el) { + Array.prototype.forEach.call(el.length ? el : [el], update); + } + return el; }; } -})); \ No newline at end of file + + module.exports = autosize; +}); \ No newline at end of file From 5f3473142e017918c32286466187e73ceefe0d7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Fri, 26 Feb 2016 22:40:22 +0200 Subject: [PATCH 123/124] fix reply as topic quoting --- public/src/client/topic/postTools.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/src/client/topic/postTools.js b/public/src/client/topic/postTools.js index d59cd38371..803955c092 100644 --- a/public/src/client/topic/postTools.js +++ b/public/src/client/topic/postTools.js @@ -117,7 +117,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.title + ', ' + config.relative_path + '/topic/' + ajaxify.data.slug + ']]', function(body) { + translator.translate('[[topic:link_back, ' + ajaxify.data.titleRaw + ', ' + config.relative_path + '/topic/' + ajaxify.data.slug + ']]', function(body) { $(window).trigger('action:composer.topic.new', { cid: ajaxify.data.cid, body: body From 571f364922ed8871ad996e9110d63111b7022246 Mon Sep 17 00:00:00 2001 From: pichalite Date: Fri, 26 Feb 2016 21:50:44 +0000 Subject: [PATCH 124/124] fix for post menu display on newPost --- public/src/client/topic/posts.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/public/src/client/topic/posts.js b/public/src/client/topic/posts.js index 3059728e3b..8f8bf4ca7d 100644 --- a/public/src/client/topic/posts.js +++ b/public/src/client/topic/posts.js @@ -24,8 +24,9 @@ define('forum/topic/posts', [ data.loggedIn = app.user.uid ? true : false; data.posts.forEach(function(post) { post.selfPost = !!app.user.uid && parseInt(post.uid, 10) === parseInt(app.user.uid, 10); - post.display_moderator_tools = post.selfPost || ajaxify.data.isAdminOrMod; - post.display_move_tools = ajaxify.data.isAdminOrMod; + post.display_moderator_tools = post.selfPost || ajaxify.data.privileges.isAdminOrMod; + post.display_move_tools = ajaxify.data.privileges.isAdminOrMod; + post.display_post_menu = post.selfPost || ajaxify.data.privileges.isAdminOrMod; }); updatePostCounts(data.posts);
    Group Name