diff --git a/Gruntfile.js b/Gruntfile.js
index a6aca2083a..eb3cdc7417 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -7,15 +7,16 @@ var fork = require('child_process').fork,
module.exports = function(grunt) {
+ var args = [];
+ if (!grunt.option('verbose')) {
+ args.push('--log-level=info');
+ }
+
function update(action, filepath, target) {
- var args = [],
+ var updateArgs = args.slice(),
fromFile = '',
compiling = '',
time = Date.now();
-
- if (!grunt.option('verbose')) {
- args.push('--log-level=info');
- }
if (target === 'lessUpdated_Client') {
fromFile = ['js', 'tpl', 'acpLess'];
@@ -37,11 +38,11 @@ module.exports = function(grunt) {
return incomplete.indexOf(ext) === -1;
});
- args.push('--from-file=' + fromFile.join(','));
+ updateArgs.push('--from-file=' + fromFile.join(','));
incomplete.push(compiling);
worker.kill();
- worker = fork('app.js', args, { env: env });
+ worker = fork('app.js', updateArgs, { env: env });
worker.on('message', function() {
if (incomplete.length) {
@@ -101,6 +102,6 @@ module.exports = function(grunt) {
env.NODE_ENV = 'development';
- worker = fork('app.js', [], { env: env });
+ worker = fork('app.js', args, { env: env });
grunt.event.on('watch', update);
};
\ No newline at end of file
diff --git a/nodebb b/nodebb
index 417c6a9d80..fb8d0a6911 100755
--- a/nodebb
+++ b/nodebb
@@ -118,12 +118,13 @@ var getRunningPid = function(callback) {
version: async.apply(getCurrentVersion)
}),
function(payload, next) {
- if (!payload.plugins.length) {
+ var toCheck = Object.keys(payload.plugins);
+
+ if (!toCheck.length) {
process.stdout.write('OK'.green + '\n'.reset);
return next(null, []); // no extraneous plugins installed
}
- var toCheck = Object.keys(payload.plugins);
request({
method: 'GET',
url: 'https://packages.nodebb.org/api/v1/suggest?version=' + payload.version + '&package[]=' + toCheck.join('&package[]='),
@@ -195,7 +196,7 @@ var getRunningPid = function(callback) {
description: 'Proceed with upgrade (y|n)?'.reset,
type: 'string'
}, function(err, result) {
- if (result.upgrade === 'y' || result.upgrade === 'yes') {
+ if (['y', 'Y', 'yes', 'YES'].indexOf(result.upgrade) !== -1) {
process.stdout.write('\nUpgrading packages...');
var args = ['npm', 'i'];
found.forEach(function(suggestObj) {
diff --git a/package.json b/package.json
index 67993c27a3..f925c9b50b 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "nodebb",
"license": "GPL-3.0",
"description": "NodeBB Forum",
- "version": "1.0.3-auto.3",
+ "version": "1.0.3",
"homepage": "http://www.nodebb.org",
"repository": {
"type": "git",
@@ -46,7 +46,7 @@
"morgan": "^1.3.2",
"mousetrap": "^1.5.3",
"nconf": "~0.8.2",
- "nodebb-plugin-composer-default": "3.0.21",
+ "nodebb-plugin-composer-default": "3.0.22",
"nodebb-plugin-dbsearch": "1.0.1",
"nodebb-plugin-emoji-one": "1.1.0",
"nodebb-plugin-emoji-extended": "1.1.0",
@@ -56,8 +56,8 @@
"nodebb-plugin-spam-be-gone": "0.4.6",
"nodebb-rewards-essentials": "0.0.8",
"nodebb-theme-lavender": "3.0.9",
- "nodebb-theme-persona": "4.0.118",
- "nodebb-theme-vanilla": "5.0.63",
+ "nodebb-theme-persona": "4.0.122",
+ "nodebb-theme-vanilla": "5.0.66",
"nodebb-widget-essentials": "2.0.9",
"nodemailer": "2.0.0",
"nodemailer-sendmail-transport": "1.0.0",
@@ -115,4 +115,4 @@
"url": "https://github.com/barisusakli"
}
]
-}
\ No newline at end of file
+}
diff --git a/public/language/ar/email.json b/public/language/ar/email.json
index 0799f8892e..6e2a809e4b 100644
--- a/public/language/ar/email.json
+++ b/public/language/ar/email.json
@@ -24,6 +24,7 @@
"digest.day": "day",
"digest.week": "week",
"digest.month": "month",
+ "digest.subject": "Digest for %1",
"notif.chat.subject": "هناك محادثة جديدة من %1",
"notif.chat.cta": "انقر هنا لمتابعة المحادثة",
"notif.chat.unsub.info": "تم إرسال هذا الإشعار بوجودة محادثة جديدة وفقا لخيارات تسجيلك.",
diff --git a/public/language/ar/error.json b/public/language/ar/error.json
index 635f404c8c..505831c652 100644
--- a/public/language/ar/error.json
+++ b/public/language/ar/error.json
@@ -85,6 +85,7 @@
"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",
+ "already-voting-for-this-post": "You have already voted for this post.",
"reputation-system-disabled": "نظام السمعة معطل",
"downvoting-disabled": "التصويتات السلبية معطلة",
"not-enough-reputation-to-downvote": "ليس لديك سمعة تكفي لإضافة صوت سلبي لهذا الموضوع",
diff --git a/public/language/ar/topic.json b/public/language/ar/topic.json
index 1e66ad91eb..81cf19d677 100644
--- a/public/language/ar/topic.json
+++ b/public/language/ar/topic.json
@@ -26,7 +26,7 @@
"tools": "أدوات",
"flag": "تبليغ",
"locked": "مقفل",
- "bookmark_instructions": "Click here to return to the last unread post in this thread.",
+ "bookmark_instructions": "Click here to return to the last read post in this thread.",
"flag_title": "إشعار بمشاركة مخلة.",
"flag_success": "تم الإشعار بهذه المشاركة على أنها مخلة",
"deleted_message": "هذه المشاركة محذوفة. فقط من لهم صلاحية الإشراف على ا لمشاركات يمكنهم معاينتها.",
diff --git a/public/language/ar/user.json b/public/language/ar/user.json
index 23519da3a5..15740e1f14 100644
--- a/public/language/ar/user.json
+++ b/public/language/ar/user.json
@@ -92,10 +92,12 @@
"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",
+ "delay_image_loading": "Delay Image Loading",
+ "image_load_delay_help": "If enabled, images in topics will not load until they are scrolled into view",
"scroll_to_my_post": "After posting a reply, show the new post",
"follow_topics_you_reply_to": "متابعة المواضيع التي تقوم بالرد فيها",
"follow_topics_you_create": "متابعة المواضيع التي تنشئها",
- "grouptitle": "حدد عنوان المجموعة الذي تريد عرضه",
+ "grouptitle": "Group Title",
"no-group-title": "لا يوجد عنوان للمجموعة",
"select-skin": "Select a Skin",
"select-homepage": "Select a Homepage",
diff --git a/public/language/bg/email.json b/public/language/bg/email.json
index 12ebb52350..480dd09fff 100644
--- a/public/language/bg/email.json
+++ b/public/language/bg/email.json
@@ -24,6 +24,7 @@
"digest.day": "ден",
"digest.week": "месец",
"digest.month": "година",
+ "digest.subject": "Резюме за %1",
"notif.chat.subject": "Получено е ново съобщение от %1",
"notif.chat.cta": "Натиснете тук, за да продължите разговора",
"notif.chat.unsub.info": "Това известие за разговор беше изпратено до Вас поради настройките Ви за абонаментите.",
diff --git a/public/language/bg/error.json b/public/language/bg/error.json
index 0eaeb842d2..5a1e1a5e75 100644
--- a/public/language/bg/error.json
+++ b/public/language/bg/error.json
@@ -85,6 +85,7 @@
"cant-edit-chat-message": "Нямате право да редактирате това съобщение",
"cant-remove-last-user": "Не можете да премахнете последния потребител",
"cant-delete-chat-message": "Нямате право да изтриете това съобщение",
+ "already-voting-for-this-post": "Вече сте дали глас за тази публикация.",
"reputation-system-disabled": "Системата за репутация е изключена.",
"downvoting-disabled": "Отрицателното гласуване е изключено",
"not-enough-reputation-to-downvote": "Нямате достатъчно репутация, за да гласувате отрицателно за тази публикация",
diff --git a/public/language/bg/topic.json b/public/language/bg/topic.json
index dbe44a1541..53a0f49d56 100644
--- a/public/language/bg/topic.json
+++ b/public/language/bg/topic.json
@@ -26,7 +26,7 @@
"tools": "Инструменти",
"flag": "Докладване",
"locked": "Заключена",
- "bookmark_instructions": "Натиснете тук, за да се върнете на последната непрочетена публикация в тази тема.",
+ "bookmark_instructions": "Щракнете тук, за да се върнете към последно прочетената публикация в тази тема.",
"flag_title": "Докладване на тази публикация до модератор",
"flag_success": "Тази публикация е била докладвана до модератор.",
"deleted_message": "Тази тема е била изтрита. Само потребители с права за управление на темите могат да я видят.",
diff --git a/public/language/bg/user.json b/public/language/bg/user.json
index 6e16e70603..89d096cb42 100644
--- a/public/language/bg/user.json
+++ b/public/language/bg/user.json
@@ -92,10 +92,12 @@
"open_links_in_new_tab": "Отваряне на външните връзки в нов подпрозорец",
"enable_topic_searching": "Включване на търсенето в темите",
"topic_search_help": "Ако е включено, търсенето в темата ще замени стандартното поведение на браузъра при търсене в страницата и ще Ви позволи да претърсвате цялата тема, а не само това, което се вижда на екрана",
+ "delay_image_loading": "Отлагане на зареждането на изображения",
+ "image_load_delay_help": "Ако е включено, изображенията в темите няма да бъдат зареждани, докато не превъртите страницата до тях",
"scroll_to_my_post": "След публикуване на отговор, да се показва новата публикация",
"follow_topics_you_reply_to": "Следване на темите, на които отговаряте",
"follow_topics_you_create": "Следване на темите, които създавате",
- "grouptitle": "Изберете заглавието на групата, което искате да се показва",
+ "grouptitle": "Заглавие на групата",
"no-group-title": "Няма заглавие на група",
"select-skin": "Изберете облик",
"select-homepage": "Изберете начална страница",
diff --git a/public/language/bn/email.json b/public/language/bn/email.json
index a2411a99a7..525460a206 100644
--- a/public/language/bn/email.json
+++ b/public/language/bn/email.json
@@ -24,6 +24,7 @@
"digest.day": "day",
"digest.week": "week",
"digest.month": "month",
+ "digest.subject": "Digest for %1",
"notif.chat.subject": "%1 এর থেকে নতুন মেসেজ এসেছে।",
"notif.chat.cta": "কথপোকথন চালিয়ে যেতে এখানে ক্লিক করুন",
"notif.chat.unsub.info": "আপনার সাবস্ক্রীপশন সেটিংসের কারনে আপনার এই নোটিফিকেশন পাঠানো হয়েছে",
diff --git a/public/language/bn/error.json b/public/language/bn/error.json
index 7f363517cc..b95faf8f70 100644
--- a/public/language/bn/error.json
+++ b/public/language/bn/error.json
@@ -85,6 +85,7 @@
"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",
+ "already-voting-for-this-post": "You have already voted for this post.",
"reputation-system-disabled": "সম্মাননা ব্যাবস্থা নিস্ক্রীয় রাখা হয়েছে",
"downvoting-disabled": "ঋণাত্মক ভোট নিস্ক্রীয় রাখা হয়েছে।",
"not-enough-reputation-to-downvote": "আপনার এই পোস্ট downvote করার জন্য পর্যাপ্ত সম্মাননা নেই",
diff --git a/public/language/bn/topic.json b/public/language/bn/topic.json
index 9fea972e71..053cff1d7e 100644
--- a/public/language/bn/topic.json
+++ b/public/language/bn/topic.json
@@ -26,7 +26,7 @@
"tools": "টুলস",
"flag": "ফ্ল্যাগ",
"locked": "বন্ধ",
- "bookmark_instructions": "Click here to return to the last unread post in this thread.",
+ "bookmark_instructions": "Click here to return to the last read post in this thread.",
"flag_title": "মডারেশনের জন্য এই পোস্টটি ফ্ল্যাগ করুন",
"flag_success": "এই পোস্টটি মডারেশনের জন্য ফ্ল্যাগ করা হয়েছে।",
"deleted_message": "এই টপিকটি মুছে ফেলা হয়েছে। শুধুমাত্র টপিক ব্যবস্থাপনার ক্ষমতাপ্রাপ্ত সদস্যগণ এটি দেখতে পারবেন।",
diff --git a/public/language/bn/user.json b/public/language/bn/user.json
index 9e26660f70..ffdda322d6 100644
--- a/public/language/bn/user.json
+++ b/public/language/bn/user.json
@@ -92,10 +92,12 @@
"open_links_in_new_tab": "আউটগোয়িং লিংকগুলো নতুন ট্যাবে খুলুন",
"enable_topic_searching": "In-Topic সার্চ সক্রীয় করো",
"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",
+ "delay_image_loading": "Delay Image Loading",
+ "image_load_delay_help": "If enabled, images in topics will not load until they are scrolled into view",
"scroll_to_my_post": "After posting a reply, show the new post",
"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",
+ "grouptitle": "Group Title",
"no-group-title": "No group title",
"select-skin": "Select a Skin",
"select-homepage": "Select a Homepage",
diff --git a/public/language/cs/email.json b/public/language/cs/email.json
index bcb35b58ae..b31b6dea73 100644
--- a/public/language/cs/email.json
+++ b/public/language/cs/email.json
@@ -24,6 +24,7 @@
"digest.day": "day",
"digest.week": "week",
"digest.month": "month",
+ "digest.subject": "Digest for %1",
"notif.chat.subject": "Nová zpráva z chatu od %1",
"notif.chat.cta": "Chcete-li pokračovat v konverzaci, klikněte zde.",
"notif.chat.unsub.info": "Toto oznámení z chatu vám bylo zasláno, protože jste si to nastavili ve vašich odběrech.",
diff --git a/public/language/cs/error.json b/public/language/cs/error.json
index dfec525151..7dae341dc3 100644
--- a/public/language/cs/error.json
+++ b/public/language/cs/error.json
@@ -85,6 +85,7 @@
"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",
+ "already-voting-for-this-post": "You have already voted for this post.",
"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",
diff --git a/public/language/cs/topic.json b/public/language/cs/topic.json
index 3bced7f182..8bdef36acc 100644
--- a/public/language/cs/topic.json
+++ b/public/language/cs/topic.json
@@ -26,7 +26,7 @@
"tools": "Nástroje",
"flag": "Flag",
"locked": "Locked",
- "bookmark_instructions": "Click here to return to the last unread post in this thread.",
+ "bookmark_instructions": "Click here to return to the last read post in this thread.",
"flag_title": "Flag this post for moderation",
"flag_success": "This post has been flagged for moderation.",
"deleted_message": "This topic has been deleted. Only users with topic management privileges can see it.",
diff --git a/public/language/cs/user.json b/public/language/cs/user.json
index 35fdc4db9b..e380634dfc 100644
--- a/public/language/cs/user.json
+++ b/public/language/cs/user.json
@@ -92,10 +92,12 @@
"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",
+ "delay_image_loading": "Delay Image Loading",
+ "image_load_delay_help": "If enabled, images in topics will not load until they are scrolled into view",
"scroll_to_my_post": "After posting a reply, show the new post",
"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",
+ "grouptitle": "Group Title",
"no-group-title": "No group title",
"select-skin": "Select a Skin",
"select-homepage": "Select a Homepage",
diff --git a/public/language/da/email.json b/public/language/da/email.json
index 0ed8b77a53..d5591d698d 100644
--- a/public/language/da/email.json
+++ b/public/language/da/email.json
@@ -24,6 +24,7 @@
"digest.day": "dag",
"digest.week": "uge",
"digest.month": "måned",
+ "digest.subject": "Digest for %1",
"notif.chat.subject": "Ny chat besked modtaget fra %1",
"notif.chat.cta": "Klik her for at forsætte med samtalen",
"notif.chat.unsub.info": "Denne chat notifikation blev sendt til dig pga. indstillingerne i dit abonnement.",
diff --git a/public/language/da/error.json b/public/language/da/error.json
index 148f312c98..70ac398753 100644
--- a/public/language/da/error.json
+++ b/public/language/da/error.json
@@ -85,6 +85,7 @@
"cant-edit-chat-message": "Du har ikke tilladelse til at redigere denne besked",
"cant-remove-last-user": "Du kan ikke fjerne den sidste bruger",
"cant-delete-chat-message": "Du har ikke tilladelse til at slette denne besked",
+ "already-voting-for-this-post": "You have already voted for this post.",
"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",
diff --git a/public/language/da/topic.json b/public/language/da/topic.json
index 888384ced3..67ab4e6174 100644
--- a/public/language/da/topic.json
+++ b/public/language/da/topic.json
@@ -26,7 +26,7 @@
"tools": "Værktøjer",
"flag": "Marker",
"locked": "Låst",
- "bookmark_instructions": "Klik her for at returnere til det seneste ulæste indlæg i denne tråd.",
+ "bookmark_instructions": "Click here to return to the last read post in this thread.",
"flag_title": "Meld dette indlæg til moderation",
"flag_success": "Dette indlæg er blevet meldt til moderation.",
"deleted_message": "Denne tråd er blevet slettet. Kun brugere med emne behandlings privilegier kan se den.",
diff --git a/public/language/da/user.json b/public/language/da/user.json
index ebc1cba887..9637ad7afa 100644
--- a/public/language/da/user.json
+++ b/public/language/da/user.json
@@ -92,10 +92,12 @@
"open_links_in_new_tab": "Åben udgående link i en ny tab",
"enable_topic_searching": "Slå In-Topic søgning til",
"topic_search_help": "Hvis slået til, så vil in-topic søgning overskrive browserens almindelige søge function og tillade dig at søge hele emnet, istedet for kun det der er vist på skærmen",
+ "delay_image_loading": "Delay Image Loading",
+ "image_load_delay_help": "If enabled, images in topics will not load until they are scrolled into view",
"scroll_to_my_post": "After posting a reply, show the new post",
"follow_topics_you_reply_to": "Følg emner du har skrevet indlæg i",
"follow_topics_you_create": "Følg emner du opretter",
- "grouptitle": "Vælg gruppe titlen du gerne vil fremvise",
+ "grouptitle": "Group Title",
"no-group-title": "Ingen gruppe titel",
"select-skin": "Vælg et skin",
"select-homepage": "Vælg en hjemmeside",
diff --git a/public/language/de/email.json b/public/language/de/email.json
index 459cb40156..7ba24003a7 100644
--- a/public/language/de/email.json
+++ b/public/language/de/email.json
@@ -24,6 +24,7 @@
"digest.day": "des letzten Tages",
"digest.week": "der letzten Woche",
"digest.month": "des letzen Monats",
+ "digest.subject": "Übersicht für %1",
"notif.chat.subject": "Neue Chatnachricht von %1 erhalten",
"notif.chat.cta": "Klicke hier, um die Unterhaltung fortzusetzen",
"notif.chat.unsub.info": "Diese Chat-Benachrichtigung wurde dir aufgrund deiner Abonnement-Einstellungen gesendet.",
diff --git a/public/language/de/error.json b/public/language/de/error.json
index 40615e0e2e..52009800ba 100644
--- a/public/language/de/error.json
+++ b/public/language/de/error.json
@@ -85,6 +85,7 @@
"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": "Du darfst diese Nachricht nicht löschen",
+ "already-voting-for-this-post": "Du hast diesen Beitrag bereits bewertet.",
"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.",
diff --git a/public/language/de/topic.json b/public/language/de/topic.json
index 2b34c42911..2269c91ae5 100644
--- a/public/language/de/topic.json
+++ b/public/language/de/topic.json
@@ -26,7 +26,7 @@
"tools": "Werkzeuge",
"flag": "Markieren",
"locked": "Gesperrt",
- "bookmark_instructions": "Klicke hier um zum letzten ungelesenen Beitrag in diesem Thema zu springen.",
+ "bookmark_instructions": "Klicke hier, um zum letzten gelesenen Beitrag des Themas zurückzukehren.",
"flag_title": "Diesen Beitrag zur Moderation markieren",
"flag_success": "Dieser Beitrag wurde erfolgreich für die Moderation markiert.",
"deleted_message": "Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.",
diff --git a/public/language/de/user.json b/public/language/de/user.json
index e4fd8b8f8e..fd456b65d9 100644
--- a/public/language/de/user.json
+++ b/public/language/de/user.json
@@ -92,10 +92,12 @@
"open_links_in_new_tab": "Ausgehende Links in neuem Tab öffnen",
"enable_topic_searching": "Suchen innerhalb von Themen aktivieren",
"topic_search_help": "Wenn aktiviert, ersetzt die im-Thema-Suche die Standardsuche des Browsers. Dadurch kannst du im ganzen Thema suchen, nicht nur im sichtbaren Abschnitt.",
+ "delay_image_loading": "Bilder nachladen",
+ "image_load_delay_help": "Wenn aktiviert, werden Bilder in Themen erst dann geladen, wenn sie in den sichtbaren Bereich gescrollt werden",
"scroll_to_my_post": "Zeige eigene Antwort nach dem Erstellen im Thema an",
- "follow_topics_you_reply_to": "Themen folgen, in denen auf dich geantwortet wird",
+ "follow_topics_you_reply_to": "Themen folgen, auf die du antwortest",
"follow_topics_you_create": "Themen folgen, die du erstellst",
- "grouptitle": "Wähle den anzuzeigenden Gruppen Titel aus",
+ "grouptitle": "Gruppentitel",
"no-group-title": "Kein Gruppentitel",
"select-skin": "Einen Skin auswählen",
"select-homepage": "Startseite",
diff --git a/public/language/el/email.json b/public/language/el/email.json
index 936eabdd43..3f5adb3021 100644
--- a/public/language/el/email.json
+++ b/public/language/el/email.json
@@ -24,6 +24,7 @@
"digest.day": "day",
"digest.week": "week",
"digest.month": "month",
+ "digest.subject": "Digest for %1",
"notif.chat.subject": "Νέο μήνυμα συνομιλίας από τον/την %1",
"notif.chat.cta": "Κάνε κλικ εδώ για να πας στην συνομιλία",
"notif.chat.unsub.info": "Αυτή η ειδοποίηση για συνομιλία σου στάλθηκε λόγω των ρυθμίσεών σου. ",
diff --git a/public/language/el/error.json b/public/language/el/error.json
index 388ec06c89..030e5497f1 100644
--- a/public/language/el/error.json
+++ b/public/language/el/error.json
@@ -85,6 +85,7 @@
"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",
+ "already-voting-for-this-post": "You have already voted for this post.",
"reputation-system-disabled": "Το σύστημα φήμης έχει απενεργοποιηθεί.",
"downvoting-disabled": "Η καταψήφιση έχει απενεργοποιηθεί",
"not-enough-reputation-to-downvote": "Δεν έχεις αρκετή φήμη για να καταψηφίσεις αυτή την δημοσίευση",
diff --git a/public/language/el/topic.json b/public/language/el/topic.json
index a2f1d0fcd7..67ac6e5ef7 100644
--- a/public/language/el/topic.json
+++ b/public/language/el/topic.json
@@ -26,7 +26,7 @@
"tools": "Εργαλεία",
"flag": "Σημαία",
"locked": "Κλειδωμένο",
- "bookmark_instructions": "Click here to return to the last unread post in this thread.",
+ "bookmark_instructions": "Click here to return to the last read post in this thread.",
"flag_title": "Επισήμανση αυτής της δημοσίευσης για συντονισμό",
"flag_success": "Αυτή η δημοσίευση έχει επισημανθεί για συντονισμό.",
"deleted_message": "Το θέμα αυτό έχει διαγραφεί. Μόνο οι χρήστες με δικαιώματα διαχειριστή θεμάτων μπορούν να το δουν.",
diff --git a/public/language/el/user.json b/public/language/el/user.json
index 7b6eed3269..e9d00b4522 100644
--- a/public/language/el/user.json
+++ b/public/language/el/user.json
@@ -92,10 +92,12 @@
"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",
+ "delay_image_loading": "Delay Image Loading",
+ "image_load_delay_help": "If enabled, images in topics will not load until they are scrolled into view",
"scroll_to_my_post": "After posting a reply, show the new post",
"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",
+ "grouptitle": "Group Title",
"no-group-title": "No group title",
"select-skin": "Select a Skin",
"select-homepage": "Select a Homepage",
diff --git a/public/language/en@pirate/email.json b/public/language/en@pirate/email.json
index 1b8d512945..691e6309a2 100644
--- a/public/language/en@pirate/email.json
+++ b/public/language/en@pirate/email.json
@@ -24,6 +24,7 @@
"digest.day": "day",
"digest.week": "week",
"digest.month": "month",
+ "digest.subject": "Digest for %1",
"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.",
diff --git a/public/language/en@pirate/error.json b/public/language/en@pirate/error.json
index 0709e823b6..56a5530e02 100644
--- a/public/language/en@pirate/error.json
+++ b/public/language/en@pirate/error.json
@@ -85,6 +85,7 @@
"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",
+ "already-voting-for-this-post": "You have already voted for this post.",
"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",
diff --git a/public/language/en@pirate/topic.json b/public/language/en@pirate/topic.json
index c7ce76e07b..bdf6d77f91 100644
--- a/public/language/en@pirate/topic.json
+++ b/public/language/en@pirate/topic.json
@@ -26,7 +26,7 @@
"tools": "Tools",
"flag": "Flag",
"locked": "Locked",
- "bookmark_instructions": "Click here to return to the last unread post in this thread.",
+ "bookmark_instructions": "Click here to return to the last read post in this thread.",
"flag_title": "Flag this post for moderation",
"flag_success": "This post has been flagged for moderation.",
"deleted_message": "This topic has been deleted. Only users with topic management privileges can see it.",
diff --git a/public/language/en@pirate/user.json b/public/language/en@pirate/user.json
index 0b5959462f..fc3e408a13 100644
--- a/public/language/en@pirate/user.json
+++ b/public/language/en@pirate/user.json
@@ -92,10 +92,12 @@
"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",
+ "delay_image_loading": "Delay Image Loading",
+ "image_load_delay_help": "If enabled, images in topics will not load until they are scrolled into view",
"scroll_to_my_post": "After posting a reply, show the new post",
"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",
+ "grouptitle": "Group Title",
"no-group-title": "No group title",
"select-skin": "Select a Skin",
"select-homepage": "Select a Homepage",
diff --git a/public/language/en_GB/error.json b/public/language/en_GB/error.json
index 65e2c584df..a77cf6cb06 100644
--- a/public/language/en_GB/error.json
+++ b/public/language/en_GB/error.json
@@ -27,6 +27,7 @@
"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.",
+ "sendmail-not-found": "The sendmail executable could not be found, please ensure it is installed and executable by the user running NodeBB.",
"username-too-short": "Username too short",
"username-too-long": "Username too long",
diff --git a/public/language/en_GB/unread.json b/public/language/en_GB/unread.json
index 0af9a2cdf6..4a449a53f5 100644
--- a/public/language/en_GB/unread.json
+++ b/public/language/en_GB/unread.json
@@ -6,5 +6,8 @@
"selected": "Selected",
"all": "All",
"all_categories": "All categories",
- "topics_marked_as_read.success": "Topics marked as read!"
+ "topics_marked_as_read.success": "Topics marked as read!",
+ "all-topics": "All Topics",
+ "new-topics": "New Topics",
+ "watched-topics": "Watched Topics"
}
\ No newline at end of file
diff --git a/public/language/en_GB/user.json b/public/language/en_GB/user.json
index a6ae357177..cb0f3d27e0 100644
--- a/public/language/en_GB/user.json
+++ b/public/language/en_GB/user.json
@@ -112,7 +112,7 @@
"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",
+ "grouptitle": "Group Title",
"no-group-title": "No group title",
"select-skin": "Select a Skin",
diff --git a/public/language/en_US/email.json b/public/language/en_US/email.json
index 1b8d512945..691e6309a2 100644
--- a/public/language/en_US/email.json
+++ b/public/language/en_US/email.json
@@ -24,6 +24,7 @@
"digest.day": "day",
"digest.week": "week",
"digest.month": "month",
+ "digest.subject": "Digest for %1",
"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.",
diff --git a/public/language/en_US/error.json b/public/language/en_US/error.json
index 0709e823b6..56a5530e02 100644
--- a/public/language/en_US/error.json
+++ b/public/language/en_US/error.json
@@ -85,6 +85,7 @@
"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",
+ "already-voting-for-this-post": "You have already voted for this post.",
"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",
diff --git a/public/language/en_US/user.json b/public/language/en_US/user.json
index 86d31e818d..c1ac375d20 100644
--- a/public/language/en_US/user.json
+++ b/public/language/en_US/user.json
@@ -92,10 +92,12 @@
"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 behavior and allow you to search through the entire topic, instead of what is only shown on screen",
+ "delay_image_loading": "Delay Image Loading",
+ "image_load_delay_help": "If enabled, images in topics will not load until they are scrolled into view",
"scroll_to_my_post": "After posting a reply, show the new post",
"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",
+ "grouptitle": "Group Title",
"no-group-title": "No group title",
"select-skin": "Select a Skin",
"select-homepage": "Select a Homepage",
diff --git a/public/language/es/email.json b/public/language/es/email.json
index 04c27bd68f..dd8e64791d 100644
--- a/public/language/es/email.json
+++ b/public/language/es/email.json
@@ -24,6 +24,7 @@
"digest.day": "día",
"digest.week": "semana",
"digest.month": "mes",
+ "digest.subject": "Digest for %1",
"notif.chat.subject": "Nuevo mensaje de chat recibido de %1",
"notif.chat.cta": "Haz click aquí para continuar la conversación",
"notif.chat.unsub.info": "Esta notificación de chat se te envió debido a tus ajustes de suscripción.",
diff --git a/public/language/es/error.json b/public/language/es/error.json
index 630475a16f..9178e18ff1 100644
--- a/public/language/es/error.json
+++ b/public/language/es/error.json
@@ -85,6 +85,7 @@
"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": "No tienes permiso para eliminar este mensaje",
+ "already-voting-for-this-post": "You have already voted for this post.",
"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",
diff --git a/public/language/es/topic.json b/public/language/es/topic.json
index 1f13a9e8e9..272a8180a0 100644
--- a/public/language/es/topic.json
+++ b/public/language/es/topic.json
@@ -26,7 +26,7 @@
"tools": "Herramientas",
"flag": "Reportar",
"locked": "Cerrado",
- "bookmark_instructions": "Clic aquí para regresar al último aporte sin leer en este hilo.",
+ "bookmark_instructions": "Click here to return to the last read post in this thread.",
"flag_title": "Reportar este mensaje",
"flag_success": "Este mensaje ha sido reportado para moderación.",
"deleted_message": "Este tema ha sido borrado. Solo los usuarios que tengan privilegios de administración de temas pueden verlo.",
@@ -35,7 +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.",
+ "mark_unread.success": "Tema marcado como no leído.",
"watch": "Seguir",
"unwatch": "Dejar de seguir",
"watch.title": "Serás notificado cuando haya nuevas respuestas en este tema",
@@ -65,9 +65,9 @@
"disabled_categories_note": "Las categorías deshabilitadas están en gris",
"confirm_move": "Mover",
"confirm_fork": "Dividir",
- "favourite": "Bookmark",
- "favourites": "Bookmarks",
- "favourites.has_no_favourites": "You haven't bookmarked any posts yet.",
+ "favourite": "Marcador",
+ "favourites": "Marcadores",
+ "favourites.has_no_favourites": "No has marcado ningún tema aún.",
"loading_more_posts": "Cargando más publicaciones",
"move_topic": "Mover tema",
"move_topics": "Mover temas",
diff --git a/public/language/es/uploads.json b/public/language/es/uploads.json
index 1622cb5693..9dac954194 100644
--- a/public/language/es/uploads.json
+++ b/public/language/es/uploads.json
@@ -1,6 +1,6 @@
{
- "uploading-file": "Uploading the file...",
- "select-file-to-upload": "Select a file to upload!",
- "upload-success": "File uploaded successfully!",
- "maximum-file-size": "Maximum %1 kb"
+ "uploading-file": "Subiendo el archivo...",
+ "select-file-to-upload": "¡Selecciona un archivo para subir!",
+ "upload-success": "¡Archivo subido correctamente!",
+ "maximum-file-size": "Máximo %1 kb"
}
\ No newline at end of file
diff --git a/public/language/es/user.json b/public/language/es/user.json
index b518f7c38c..ebd854ddfa 100644
--- a/public/language/es/user.json
+++ b/public/language/es/user.json
@@ -22,7 +22,7 @@
"profile": "Perfil",
"profile_views": "Visitas",
"reputation": "Reputación",
- "favourites": "Bookmarks",
+ "favourites": "Marcadores",
"watched": "Suscritos",
"followers": "Seguidores",
"following": "Siguiendo",
@@ -39,7 +39,7 @@
"change_username": "Cambiar nombre de usuario",
"change_email": "Cambiar email",
"edit": "Editar",
- "edit-profile": "Edit Profile",
+ "edit-profile": "Editar Perfil",
"default_picture": "Icono por defecto",
"uploaded_picture": "Imagen subida",
"upload_new_picture": "Subir nueva imagen",
@@ -56,11 +56,11 @@
"password": "Contraseña",
"username_taken_workaround": "El nombre de usuario que has solicitada ya está siendo usado, por tanto lo hemos alterado ligeramente. Ahora eres conocido como %1.",
"password_same_as_username": "Tu Constraseña es igual al nombre de Usuario, por favor seleccione otra Constraseña.",
- "password_same_as_email": "Your password is the same as your email, please select another password.",
+ "password_same_as_email": "Tu contraseña es igual que tu dirección de correo, por favor elige otra contraseña.",
"upload_picture": "Subir foto",
"upload_a_picture": "Subir una foto",
"remove_uploaded_picture": "Borrar Imagen subida",
- "upload_cover_picture": "Upload cover picture",
+ "upload_cover_picture": "Subir imagen de portada",
"settings": "Opciones",
"show_email": "Mostrar mi correo electrónico",
"show_fullname": "Mostrar mi nombre completo",
@@ -92,10 +92,12 @@
"open_links_in_new_tab": "Abrir los enlaces externos en una nueva pestaña",
"enable_topic_searching": "Activar la búsqueda \"in-topic\"",
"topic_search_help": "Si está activada, la búsqueda 'in-topic' sustituirá el comportamiento por defecto del navegador y le permitirá buscar en el tema al completo, en vez de hacer una búsqueda únicamente sobre el contenido mostrado en pantalla",
- "scroll_to_my_post": "After posting a reply, show the new post",
+ "delay_image_loading": "Retrasar la carga de imágenes",
+ "image_load_delay_help": "Si se habilita, las imágenes no cargarán hasta que se vean en pantalla",
+ "scroll_to_my_post": "Luego de enviar una respuesta, mostrar el nuevo mensaje",
"follow_topics_you_reply_to": "Seguir los temas en los que respondes",
"follow_topics_you_create": "Seguir publicaciones que creas",
- "grouptitle": "Selecciona el título del grupo que deseas visualizar",
+ "grouptitle": "Group Title",
"no-group-title": "Sin título de grupo",
"select-skin": "Seleccionar una plantilla",
"select-homepage": "Seleccione una Página de inicio",
diff --git a/public/language/es/users.json b/public/language/es/users.json
index cf8bdaefff..61bac3bc05 100644
--- a/public/language/es/users.json
+++ b/public/language/es/users.json
@@ -16,5 +16,5 @@
"unread_topics": "Temas no leídos",
"categories": "Categorías ",
"tags": "Etiquetas",
- "no-users-found": "No users found!"
+ "no-users-found": "¡No se encontraron usuarios!"
}
\ No newline at end of file
diff --git a/public/language/et/email.json b/public/language/et/email.json
index a1d3d4371b..e87b35e247 100644
--- a/public/language/et/email.json
+++ b/public/language/et/email.json
@@ -24,6 +24,7 @@
"digest.day": "päev",
"digest.week": "nädal",
"digest.month": "kuu",
+ "digest.subject": "Digest for %1",
"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 013db49d04..05682e9068 100644
--- a/public/language/et/error.json
+++ b/public/language/et/error.json
@@ -85,6 +85,7 @@
"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": "Sul ei ole lubatud antud sõnumit kustutada",
+ "already-voting-for-this-post": "You have already voted for this post.",
"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.",
diff --git a/public/language/et/topic.json b/public/language/et/topic.json
index d6aba7fb7a..e8fd5f3249 100644
--- a/public/language/et/topic.json
+++ b/public/language/et/topic.json
@@ -26,7 +26,7 @@
"tools": "Tööriistad",
"flag": "Märgista",
"locked": "Lukustatud",
- "bookmark_instructions": "Kliki siia, et naasta viimasele lugemata postitusele selles teemas.",
+ "bookmark_instructions": "Click here to return to the last read post in this thread.",
"flag_title": "Märgista see postitus modereerimiseks",
"flag_success": "See postitus on nüüd märgistatud modereerimiseks.",
"deleted_message": "See teema on kustutatud. Ainult kasutajad kellel on piisavalt õigusi saavad seda näha.",
diff --git a/public/language/et/user.json b/public/language/et/user.json
index 463b4c5e8e..ee556ae4e1 100644
--- a/public/language/et/user.json
+++ b/public/language/et/user.json
@@ -92,10 +92,12 @@
"open_links_in_new_tab": "Ava väljaminevad lingid uues aknas",
"enable_topic_searching": "Võimalda teemasisene otsing",
"topic_search_help": "Kui see on sisse lükatud, siis teemasisene otsing võtab üle brauseri tavapärase otsingu ning võimaldab otsida ainult ekraanile mahtuva teema asemel terve teema ulatuses.",
+ "delay_image_loading": "Delay Image Loading",
+ "image_load_delay_help": "If enabled, images in topics will not load until they are scrolled into view",
"scroll_to_my_post": "After posting a reply, show the new post",
"follow_topics_you_reply_to": "Järgi teemasid, millele olete vastanud.",
"follow_topics_you_create": "Järgi teemasi, mis on teie loodud.",
- "grouptitle": "Vali grupile tiitel mida kuvada soovid",
+ "grouptitle": "Group Title",
"no-group-title": "Grupi tiitel puudub",
"select-skin": "Vali välimus",
"select-homepage": "Vali avaleht",
diff --git a/public/language/fa_IR/email.json b/public/language/fa_IR/email.json
index 1ec13b4a26..05b628ed9f 100644
--- a/public/language/fa_IR/email.json
+++ b/public/language/fa_IR/email.json
@@ -24,6 +24,7 @@
"digest.day": "روز",
"digest.week": "هفته",
"digest.month": "ماه",
+ "digest.subject": "Digest for %1",
"notif.chat.subject": "پیام چتی جدیدی از %1 دریافت شد",
"notif.chat.cta": "برای ادامهی چت اینجا کلیک کنید",
"notif.chat.unsub.info": "این اطلاعیه ی چتیی که برای شما فرستاده شده به علت تنظیمات اشترک شماست.",
diff --git a/public/language/fa_IR/error.json b/public/language/fa_IR/error.json
index c6651bc9d8..44dc7935e0 100644
--- a/public/language/fa_IR/error.json
+++ b/public/language/fa_IR/error.json
@@ -85,6 +85,7 @@
"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",
+ "already-voting-for-this-post": "You have already voted for this post.",
"reputation-system-disabled": "سیستم اعتبار غیر فعال شده است",
"downvoting-disabled": "رأی منفی غیر فعال شده است",
"not-enough-reputation-to-downvote": "شما اعتبار کافی برای دادن رأی منفی به این پست را ندارید.",
diff --git a/public/language/fa_IR/topic.json b/public/language/fa_IR/topic.json
index f3265b1ca9..335bef6af9 100644
--- a/public/language/fa_IR/topic.json
+++ b/public/language/fa_IR/topic.json
@@ -26,7 +26,7 @@
"tools": "ابزارها",
"flag": "پرچم",
"locked": "قفل شده است",
- "bookmark_instructions": "برای بازگشت به آخرین پست خوانده نشده در این دسته اینجا کلیک کنید",
+ "bookmark_instructions": "Click here to return to the last read post in this thread.",
"flag_title": "پرچمگذاری این موضوع برای بررسی ناظران",
"flag_success": "این موضوع برای بررسی ناظران پرچم گذاشته شد.",
"deleted_message": "این موضوع پاک شده است. تنها کاربرانِ با حق مدیریت موضوع میتوانند آن را ببینند.",
diff --git a/public/language/fa_IR/user.json b/public/language/fa_IR/user.json
index 57d8e534b7..4b4fcbaf74 100644
--- a/public/language/fa_IR/user.json
+++ b/public/language/fa_IR/user.json
@@ -92,10 +92,12 @@
"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",
+ "delay_image_loading": "Delay Image Loading",
+ "image_load_delay_help": "If enabled, images in topics will not load until they are scrolled into view",
"scroll_to_my_post": "After posting a reply, show the new post",
"follow_topics_you_reply_to": "تاپیک هایی که پاسخ داده ای را دنبال کن",
"follow_topics_you_create": "موضوع هایی که ایجاد کرده ای را دنبال کن",
- "grouptitle": "عنوان گروهی که میخواهید نشان داده شود را انتخاب کنید.",
+ "grouptitle": "Group Title",
"no-group-title": "عنوان گروهی نیست",
"select-skin": "Select a Skin",
"select-homepage": "Select a Homepage",
diff --git a/public/language/fi/email.json b/public/language/fi/email.json
index 92002dae56..105dc065a1 100644
--- a/public/language/fi/email.json
+++ b/public/language/fi/email.json
@@ -24,6 +24,7 @@
"digest.day": "päivä",
"digest.week": "viikko",
"digest.month": "kuukausi",
+ "digest.subject": "Digest for %1",
"notif.chat.subject": "Uusi chatviesti henkilöltä %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.",
diff --git a/public/language/fi/error.json b/public/language/fi/error.json
index dbb4fd10c2..701277e694 100644
--- a/public/language/fi/error.json
+++ b/public/language/fi/error.json
@@ -85,6 +85,7 @@
"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",
+ "already-voting-for-this-post": "You have already voted for this post.",
"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",
diff --git a/public/language/fi/topic.json b/public/language/fi/topic.json
index 37b9b98e80..ce37bb1954 100644
--- a/public/language/fi/topic.json
+++ b/public/language/fi/topic.json
@@ -26,7 +26,7 @@
"tools": "Työkalut",
"flag": "Ilmianna",
"locked": "Lukittu",
- "bookmark_instructions": "Click here to return to the last unread post in this thread.",
+ "bookmark_instructions": "Click here to return to the last read post in this thread.",
"flag_title": "Ilmianna tämä viesti moderaattoreille",
"flag_success": "Tämä viesti ilmiannettiin moderaattoreille.",
"deleted_message": "Tämä aihe on poistettu. Vain käyttäjät, joilla on aiheen hallintaoikeudet, voivat nähdä sen.",
diff --git a/public/language/fi/user.json b/public/language/fi/user.json
index f7218528a3..8e08f3dc54 100644
--- a/public/language/fi/user.json
+++ b/public/language/fi/user.json
@@ -92,10 +92,12 @@
"open_links_in_new_tab": "Open outgoing links in new tab",
"enable_topic_searching": "Salli aiheen sisäiset haut",
"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",
+ "delay_image_loading": "Delay Image Loading",
+ "image_load_delay_help": "If enabled, images in topics will not load until they are scrolled into view",
"scroll_to_my_post": "After posting a reply, show the new post",
"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",
+ "grouptitle": "Group Title",
"no-group-title": "No group title",
"select-skin": "Select a Skin",
"select-homepage": "Select a Homepage",
diff --git a/public/language/fr/email.json b/public/language/fr/email.json
index 5de03234d8..329b338d11 100644
--- a/public/language/fr/email.json
+++ b/public/language/fr/email.json
@@ -24,6 +24,7 @@
"digest.day": "jour",
"digest.week": "semaine",
"digest.month": "mois",
+ "digest.subject": "Compte-rendu pour %1",
"notif.chat.subject": "Nouveau message de chat reçu de %1",
"notif.chat.cta": "Cliquez ici pour continuer la conversation",
"notif.chat.unsub.info": "Cette notification de chat a été envoyé en raison de vos paramètres d'abonnement.",
diff --git a/public/language/fr/error.json b/public/language/fr/error.json
index d80c43277e..6dddeafd53 100644
--- a/public/language/fr/error.json
+++ b/public/language/fr/error.json
@@ -85,6 +85,7 @@
"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": "Vous n'avez pas l'autorisation de supprimer ce message",
+ "already-voting-for-this-post": "Vous avez déjà voté pour ce 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",
diff --git a/public/language/fr/topic.json b/public/language/fr/topic.json
index 8a71ff511a..fa172c1cfd 100644
--- a/public/language/fr/topic.json
+++ b/public/language/fr/topic.json
@@ -26,7 +26,7 @@
"tools": "Outils",
"flag": "Signaler",
"locked": "Verrouillé",
- "bookmark_instructions": "Cliquez ici pour retourner au dernier message non lu dans ce fil de discussion.",
+ "bookmark_instructions": "Cliquez ici pour retourner au dernier message lu de ce fil.",
"flag_title": "Signaler ce message à la modération",
"flag_success": "Ce message a bien été signalé aux modérateurs.",
"deleted_message": "Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.",
diff --git a/public/language/fr/user.json b/public/language/fr/user.json
index 0a6450fdd3..77af69be58 100644
--- a/public/language/fr/user.json
+++ b/public/language/fr/user.json
@@ -92,10 +92,12 @@
"open_links_in_new_tab": "Ouvrir les liens externes dans un nouvel onglet",
"enable_topic_searching": "Activer la recherche dans les sujets",
"topic_search_help": "Une fois activé, la recherche dans les sujets va remplacer la recherche de page du navigateur et vous permettra de rechercher dans l'intégralité d'un sujet au lieu des seuls posts affichés à l'écran.",
+ "delay_image_loading": "Délayer le chargement des images",
+ "image_load_delay_help": "Lorsque cette option est activée, les images des sujets ne seront pas chargées avant qu'elles soient visibles dans la fenêtre.",
"scroll_to_my_post": "Après avoir répondu, montrer le nouveau message",
"follow_topics_you_reply_to": "Suivre les sujets auxquels vous répondez",
"follow_topics_you_create": "Suivre les sujets que vous créez",
- "grouptitle": "Sélectionnez le titre de groupe que vous souhaitez afficher",
+ "grouptitle": "Nom du groupe",
"no-group-title": "Aucun titre de groupe",
"select-skin": "Sélectionner un thème",
"select-homepage": "Sélectionner une page d'accueil",
diff --git a/public/language/gl/email.json b/public/language/gl/email.json
index 340dd326e1..6f0be26023 100644
--- a/public/language/gl/email.json
+++ b/public/language/gl/email.json
@@ -24,6 +24,7 @@
"digest.day": "día",
"digest.week": "semana",
"digest.month": "mes",
+ "digest.subject": "Digest for %1",
"notif.chat.subject": "Nova charla recibida de %1",
"notif.chat.cta": "Pica aquí para continuar a conversación",
"notif.chat.unsub.info": "Esta notificación de charla foiche enviada polas túas opcións de subscrición.",
diff --git a/public/language/gl/error.json b/public/language/gl/error.json
index 5a5619eaf0..862bdbcda3 100644
--- a/public/language/gl/error.json
+++ b/public/language/gl/error.json
@@ -85,6 +85,7 @@
"cant-edit-chat-message": "Non tes permitido editar esta mensaxe.",
"cant-remove-last-user": "Non podes quitar o último usuario",
"cant-delete-chat-message": "Non tes permitido borrar esta mensaxe.",
+ "already-voting-for-this-post": "You have already voted for this post.",
"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",
diff --git a/public/language/gl/topic.json b/public/language/gl/topic.json
index e892d34146..0e92d43b08 100644
--- a/public/language/gl/topic.json
+++ b/public/language/gl/topic.json
@@ -26,7 +26,7 @@
"tools": "Ferramentas",
"flag": "Reportar",
"locked": "Pechado",
- "bookmark_instructions": "Clic aquí para ir á última publicación sen ler neste tema. ",
+ "bookmark_instructions": "Click here to return to the last read post in this thread.",
"flag_title": "Reportar esta mensaxe",
"flag_success": "Esta mensaxe foi reportada para moderación.",
"deleted_message": "Este tema foi borrado. Só os usuarios con privilexios administrativos poden velo.",
diff --git a/public/language/gl/user.json b/public/language/gl/user.json
index 014b7aead3..ce8498bb1a 100644
--- a/public/language/gl/user.json
+++ b/public/language/gl/user.json
@@ -92,10 +92,12 @@
"open_links_in_new_tab": "Abrir ligazóns externos nunca nova pestaña",
"enable_topic_searching": "Permitir buscar dentro dun tema",
"topic_search_help": "Se se activa, o buscador do NodeBB superporase ao propio do navegador dentro de cada tema, permitindo buscar en todo o tema e non só naquilo que se presenta na pantalla.",
+ "delay_image_loading": "Delay Image Loading",
+ "image_load_delay_help": "If enabled, images in topics will not load until they are scrolled into view",
"scroll_to_my_post": "After posting a reply, show the new post",
"follow_topics_you_reply_to": "Segui-los temas nos que respostas",
"follow_topics_you_create": "Segui-los temas que ti fas",
- "grouptitle": "Escolle o título de grupo que che gustaría amosar",
+ "grouptitle": "Group Title",
"no-group-title": "Sen titulo de grupo",
"select-skin": "Seleccionar apariencia",
"select-homepage": "Escolla unha páxina de inicio",
diff --git a/public/language/he/email.json b/public/language/he/email.json
index 9ca8de27a9..48ff8f4a50 100644
--- a/public/language/he/email.json
+++ b/public/language/he/email.json
@@ -24,6 +24,7 @@
"digest.day": "יום",
"digest.week": "שבוע",
"digest.month": "חודש",
+ "digest.subject": "Digest for %1",
"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 33972d8246..3386b8a054 100644
--- a/public/language/he/error.json
+++ b/public/language/he/error.json
@@ -85,6 +85,7 @@
"cant-edit-chat-message": "אתה לא רשאי לערוך הודעה זו",
"cant-remove-last-user": "אינך יכול למחוק את המשתמש האחרון",
"cant-delete-chat-message": "אתה לא רשאי למחוק הודעה זו",
+ "already-voting-for-this-post": "You have already voted for this post.",
"reputation-system-disabled": "מערכת המוניטין לא פעילה.",
"downvoting-disabled": "היכולת להצביע נגד לא פעילה",
"not-enough-reputation-to-downvote": "אין לך מספיק מוניטין כדי להוריד את הדירוג של פוסט זה",
diff --git a/public/language/he/topic.json b/public/language/he/topic.json
index 49ca0e5bba..49191ba202 100644
--- a/public/language/he/topic.json
+++ b/public/language/he/topic.json
@@ -26,7 +26,7 @@
"tools": "כלים",
"flag": "דווח",
"locked": "נעול",
- "bookmark_instructions": "לחץ כאן כדי לחזור לפוסט האחרון שלא קראת באשכול זה",
+ "bookmark_instructions": "Click here to return to the last read post in this thread.",
"flag_title": "דווח על פוסט זה למנהל",
"flag_success": "התקבל דיווח על פוסט זה.",
"deleted_message": "נושא זה נמחק. רק משתמשים עם ההרשאות המתאימות יכולים לצפות בו.",
diff --git a/public/language/he/user.json b/public/language/he/user.json
index a442d5fd10..df7d72d110 100644
--- a/public/language/he/user.json
+++ b/public/language/he/user.json
@@ -92,10 +92,12 @@
"open_links_in_new_tab": "פתח קישורים חיצוניים בכרטיסייה חדשה",
"enable_topic_searching": "הפעל חיפוש בתוך נושא",
"topic_search_help": "אם מאופשר, החיפוש בתוך הנושא יעקוף את שיטת החיפוש של הדפדפן, ויאפשר לך לחפש בכל הנושא - ולא רק במה שמוצג על המסך",
+ "delay_image_loading": "Delay Image Loading",
+ "image_load_delay_help": "If enabled, images in topics will not load until they are scrolled into view",
"scroll_to_my_post": "After posting a reply, show the new post",
"follow_topics_you_reply_to": "עקוב אחרת נושאים שהגבת בהם",
"follow_topics_you_create": "עקוב אחר נושאים שיצרת",
- "grouptitle": "בחר את כותרת הקבוצה שברצונך להציג",
+ "grouptitle": "Group Title",
"no-group-title": "ללא כותרת לקבוצה",
"select-skin": "בחר מראה",
"select-homepage": "בחר דף בית",
diff --git a/public/language/hu/email.json b/public/language/hu/email.json
index 729de1a530..15a689ac13 100644
--- a/public/language/hu/email.json
+++ b/public/language/hu/email.json
@@ -24,6 +24,7 @@
"digest.day": "day",
"digest.week": "week",
"digest.month": "month",
+ "digest.subject": "Digest for %1",
"notif.chat.subject": "Új chat üzenet érkezett a következőtől: %1",
"notif.chat.cta": "Kattints ide a beszélgetés folytatásához",
"notif.chat.unsub.info": "Ez a chat-értesítés a feliratkozási beállításaid miatt lett kiküldve.",
diff --git a/public/language/hu/error.json b/public/language/hu/error.json
index e0744b39ca..db1c8cd322 100644
--- a/public/language/hu/error.json
+++ b/public/language/hu/error.json
@@ -85,6 +85,7 @@
"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",
+ "already-voting-for-this-post": "You have already voted for this post.",
"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",
diff --git a/public/language/hu/topic.json b/public/language/hu/topic.json
index 189f065bde..be4895f558 100644
--- a/public/language/hu/topic.json
+++ b/public/language/hu/topic.json
@@ -26,7 +26,7 @@
"tools": "Eszközök",
"flag": "Jelentés",
"locked": "Locked",
- "bookmark_instructions": "Click here to return to the last unread post in this thread.",
+ "bookmark_instructions": "Click here to return to the last read post in this thread.",
"flag_title": "A hozzászólás jelentése a moderátoroknál",
"flag_success": "This post has been flagged for moderation.",
"deleted_message": "This topic has been deleted. Only users with topic management privileges can see it.",
diff --git a/public/language/hu/user.json b/public/language/hu/user.json
index fd2a183e03..26c4316754 100644
--- a/public/language/hu/user.json
+++ b/public/language/hu/user.json
@@ -92,10 +92,12 @@
"open_links_in_new_tab": "Open outgoing links in new tab",
"enable_topic_searching": "Témán belüli keresés bekapcsolása",
"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",
+ "delay_image_loading": "Delay Image Loading",
+ "image_load_delay_help": "If enabled, images in topics will not load until they are scrolled into view",
"scroll_to_my_post": "After posting a reply, show the new post",
"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",
+ "grouptitle": "Group Title",
"no-group-title": "No group title",
"select-skin": "Select a Skin",
"select-homepage": "Select a Homepage",
diff --git a/public/language/id/email.json b/public/language/id/email.json
index 4b3a591c23..4f778999a4 100644
--- a/public/language/id/email.json
+++ b/public/language/id/email.json
@@ -24,6 +24,7 @@
"digest.day": "day",
"digest.week": "week",
"digest.month": "month",
+ "digest.subject": "Digest for %1",
"notif.chat.subject": "Pesan yang baru diterima dari %1",
"notif.chat.cta": "Klik di sini untuk melanjutkan percakapan",
"notif.chat.unsub.info": "Sesuai pengaturan langganan anda, notifikasi obrolan ini dikirmkan kepada anda",
diff --git a/public/language/id/error.json b/public/language/id/error.json
index de932ffac2..d3cc609cfe 100644
--- a/public/language/id/error.json
+++ b/public/language/id/error.json
@@ -85,6 +85,7 @@
"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",
+ "already-voting-for-this-post": "You have already voted for this post.",
"reputation-system-disabled": "Sistem reputasi ditiadakan.",
"downvoting-disabled": "Downvoting ditiadakan",
"not-enough-reputation-to-downvote": "Tidak cukup reputation untuk downvote post ini",
diff --git a/public/language/id/topic.json b/public/language/id/topic.json
index 6ba52cacce..07a4b79bcd 100644
--- a/public/language/id/topic.json
+++ b/public/language/id/topic.json
@@ -26,7 +26,7 @@
"tools": "Perangkat",
"flag": "Tandai",
"locked": "Terkunci",
- "bookmark_instructions": "Click here to return to the last unread post in this thread.",
+ "bookmark_instructions": "Click here to return to the last read post in this thread.",
"flag_title": "Tandai posting ini untuk moderasi",
"flag_success": "Posting ini telah ditandai untuk moderasi",
"deleted_message": "Topik ini telah dihapus. Hanya pengguna dengan hak manajemen topik yang dapat melihatnya.",
diff --git a/public/language/id/user.json b/public/language/id/user.json
index 4610dd8f43..d486152450 100644
--- a/public/language/id/user.json
+++ b/public/language/id/user.json
@@ -92,10 +92,12 @@
"open_links_in_new_tab": "Open outgoing links in new tab",
"enable_topic_searching": "Gunakan Pencarian Di dalam Topik",
"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",
+ "delay_image_loading": "Delay Image Loading",
+ "image_load_delay_help": "If enabled, images in topics will not load until they are scrolled into view",
"scroll_to_my_post": "After posting a reply, show the new post",
"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",
+ "grouptitle": "Group Title",
"no-group-title": "No group title",
"select-skin": "Select a Skin",
"select-homepage": "Select a Homepage",
diff --git a/public/language/it/email.json b/public/language/it/email.json
index 6dc40a7a16..347f0d6f1d 100644
--- a/public/language/it/email.json
+++ b/public/language/it/email.json
@@ -24,6 +24,7 @@
"digest.day": "day",
"digest.week": "week",
"digest.month": "month",
+ "digest.subject": "Digest for %1",
"notif.chat.subject": "Nuovo messaggio in chat da %1",
"notif.chat.cta": "Clicca qui per continuare la conversazione",
"notif.chat.unsub.info": "Questa notifica di chat ti è stata inviata perché l'hai scelta nelle impostazioni.",
diff --git a/public/language/it/error.json b/public/language/it/error.json
index 25358c4310..23135607f1 100644
--- a/public/language/it/error.json
+++ b/public/language/it/error.json
@@ -85,6 +85,7 @@
"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",
+ "already-voting-for-this-post": "You have already voted for this post.",
"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",
diff --git a/public/language/it/topic.json b/public/language/it/topic.json
index 8bbcf4c4c2..11809f9697 100644
--- a/public/language/it/topic.json
+++ b/public/language/it/topic.json
@@ -26,7 +26,7 @@
"tools": "Strumenti",
"flag": "Segnala",
"locked": "Bloccato",
- "bookmark_instructions": "Clicca qui per tornare all'ultimo post non letto in questo thread",
+ "bookmark_instructions": "Click here to return to the last read post in this thread.",
"flag_title": "Segnala questo post per la moderazione",
"flag_success": "Questo post è stato contrassegnato per la moderazione.",
"deleted_message": "Questa discussione è stata cancellata. Solo gli utenti con diritti di gestione possono vederla.",
diff --git a/public/language/it/user.json b/public/language/it/user.json
index 6202ea0bd8..3bde55d516 100644
--- a/public/language/it/user.json
+++ b/public/language/it/user.json
@@ -92,10 +92,12 @@
"open_links_in_new_tab": "Apri i link web in una nuova pagina",
"enable_topic_searching": "Abilita la ricerca negli argomenti",
"topic_search_help": "Se abilitata, la ricerca negli argomenti ignorerà il comportamento predefinito del browser per consentirti di cercare all'interno delle discussioni, anziché soltanto nel contenuto visibile a schermo",
+ "delay_image_loading": "Delay Image Loading",
+ "image_load_delay_help": "If enabled, images in topics will not load until they are scrolled into view",
"scroll_to_my_post": "After posting a reply, show the new post",
"follow_topics_you_reply_to": "Segui le discussioni a cui hai risposto",
"follow_topics_you_create": "Segui le discussioni che hai iniziato",
- "grouptitle": "Seleziona il titolo del gruppo che vorresti vedere",
+ "grouptitle": "Group Title",
"no-group-title": "Nessun titolo al gruppo",
"select-skin": "Seleziona uno Skin",
"select-homepage": "Select a Homepage",
diff --git a/public/language/ja/email.json b/public/language/ja/email.json
index 86af5f6131..5cfeeb34f1 100644
--- a/public/language/ja/email.json
+++ b/public/language/ja/email.json
@@ -24,6 +24,7 @@
"digest.day": "日",
"digest.week": "週",
"digest.month": "月",
+ "digest.subject": "Digest for %1",
"notif.chat.subject": "%1さんからの新しいチャットメッセージがあります。",
"notif.chat.cta": "クリックして会話を続ける",
"notif.chat.unsub.info": "このチャットの通知はあなたの購読設定により送られました。",
diff --git a/public/language/ja/error.json b/public/language/ja/error.json
index 7deddf6c53..a6147ee989 100644
--- a/public/language/ja/error.json
+++ b/public/language/ja/error.json
@@ -85,6 +85,7 @@
"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",
+ "already-voting-for-this-post": "You have already voted for this post.",
"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",
diff --git a/public/language/ja/language.json b/public/language/ja/language.json
index e210a4285a..ecd635ee30 100644
--- a/public/language/ja/language.json
+++ b/public/language/ja/language.json
@@ -1,5 +1,5 @@
{
"name": "日本語",
- "code": "ja_JP",
+ "code": "ja",
"dir": "ltr"
}
\ No newline at end of file
diff --git a/public/language/ja/topic.json b/public/language/ja/topic.json
index f24579e205..3bb4bfe0a7 100644
--- a/public/language/ja/topic.json
+++ b/public/language/ja/topic.json
@@ -26,7 +26,7 @@
"tools": "ツール",
"flag": "フラグ",
"locked": "ロック",
- "bookmark_instructions": "ここを押して、最後の未読の投稿戻ります",
+ "bookmark_instructions": "Click here to return to the last read post in this thread.",
"flag_title": "リポートする",
"flag_success": "このポストをリポートしました。",
"deleted_message": "このトピックが削除されました。トピック管理権を持っているユーザーにしか読めません。",
diff --git a/public/language/ja/user.json b/public/language/ja/user.json
index 539809537d..2d539862dd 100644
--- a/public/language/ja/user.json
+++ b/public/language/ja/user.json
@@ -92,10 +92,12 @@
"open_links_in_new_tab": "外リンクを新しいタブに開きます",
"enable_topic_searching": "インートピックの検索を有効にします",
"topic_search_help": "有効にしたら、インートピックの検索はブラウザの既定機能を無視して、スクリーンに示したよりトピック内からの全部を検索します",
+ "delay_image_loading": "Delay Image Loading",
+ "image_load_delay_help": "If enabled, images in topics will not load until they are scrolled into view",
"scroll_to_my_post": "After posting a reply, show the new post",
"follow_topics_you_reply_to": "返信したトピックをフォローします",
"follow_topics_you_create": "投稿したトピックをフォローします",
- "grouptitle": "好きなグループ名を選んで下さい",
+ "grouptitle": "Group Title",
"no-group-title": "グループ名がありません",
"select-skin": "スキンを選んで下さい",
"select-homepage": "ホームページを選んで下さい",
diff --git a/public/language/ko/email.json b/public/language/ko/email.json
index ff07b4a927..10eec4722d 100644
--- a/public/language/ko/email.json
+++ b/public/language/ko/email.json
@@ -24,6 +24,7 @@
"digest.day": "일",
"digest.week": "주",
"digest.month": "월",
+ "digest.subject": "Digest for %1",
"notif.chat.subject": "%1님이 대화 메시지를 보냈습니다.",
"notif.chat.cta": "대화를 계속하려면 여기를 클릭하세요.",
"notif.chat.unsub.info": "이 대화 알림은 사용자의 구독 설정에 따라 전송되었습니다.",
diff --git a/public/language/ko/error.json b/public/language/ko/error.json
index edb0a3a88d..748cc05084 100644
--- a/public/language/ko/error.json
+++ b/public/language/ko/error.json
@@ -85,6 +85,7 @@
"cant-edit-chat-message": "편집 할 수 있는 권한이 없습니다.",
"cant-remove-last-user": "마지막 사용자를 삭제할 수 없습니다.",
"cant-delete-chat-message": "메세지를 지울 권한이 없습니다.",
+ "already-voting-for-this-post": "You have already voted for this post.",
"reputation-system-disabled": "인지도 기능이 비활성 상태입니다.",
"downvoting-disabled": "비추천 기능이 비활성 상태입니다.",
"not-enough-reputation-to-downvote": "인지도가 낮아 이 게시물에 반대할 수 없습니다.",
diff --git a/public/language/ko/topic.json b/public/language/ko/topic.json
index 056ccb5a8f..cfa5504880 100644
--- a/public/language/ko/topic.json
+++ b/public/language/ko/topic.json
@@ -26,7 +26,7 @@
"tools": "도구",
"flag": "신고",
"locked": "잠김",
- "bookmark_instructions": "여기를 누르면 마지막으로 읽지 않은 포스트로 이동합니다.",
+ "bookmark_instructions": "Click here to return to the last read post in this thread.",
"flag_title": "이 게시물을 신고",
"flag_success": "이 게시물은 신고되었습니다.",
"deleted_message": "이 주제는 삭제되었습니다. 주제 관리 권한이 있는 사용자만 볼 수 있습니다.",
diff --git a/public/language/ko/user.json b/public/language/ko/user.json
index b86ed76b19..20cbf236a9 100644
--- a/public/language/ko/user.json
+++ b/public/language/ko/user.json
@@ -92,10 +92,12 @@
"open_links_in_new_tab": "외부 링크를 새로운 탭을 사용하여 열람",
"enable_topic_searching": "주제 내 검색 허용",
"topic_search_help": "활성화 된후 브라우저의 기본 페이지 검색 기능을 연관 주제 검색 기능으로 대신하고 화면에 보여지는 것 뿐만 아니라 주제와 연관된 모든것을 검색합니다.",
+ "delay_image_loading": "이미지 로딩 지연",
+ "image_load_delay_help": "활성화 되면 이미지 위치로 스크롤을 움직이기 전까지 이미지가 로드 되지 않습니다.",
"scroll_to_my_post": "답글 게시 후 새 포스트 보여주기",
"follow_topics_you_reply_to": "답글 단 게시물을 팔로우 합니다.",
"follow_topics_you_create": "생성한 주제를 팔로우 합니다.",
- "grouptitle": "표시할 그룹 이름을 선택하세요.",
+ "grouptitle": "Group Title",
"no-group-title": "그룹 이름이 없습니다.",
"select-skin": "스킨 선택",
"select-homepage": "홈페이지 선택",
diff --git a/public/language/lt/email.json b/public/language/lt/email.json
index cd68d27182..f183b346f2 100644
--- a/public/language/lt/email.json
+++ b/public/language/lt/email.json
@@ -24,6 +24,7 @@
"digest.day": "day",
"digest.week": "week",
"digest.month": "month",
+ "digest.subject": "Digest for %1",
"notif.chat.subject": "Nauja pokalbio žinutė gauta iš %1",
"notif.chat.cta": "Pokalbio pratęsimui spauskite čia",
"notif.chat.unsub.info": "Šios žinutės perpėjimas buvo išsiųstas į tavo prenumeratos nustatymus",
diff --git a/public/language/lt/error.json b/public/language/lt/error.json
index e23088894e..fa04fa5803 100644
--- a/public/language/lt/error.json
+++ b/public/language/lt/error.json
@@ -85,6 +85,7 @@
"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",
+ "already-voting-for-this-post": "You have already voted for this post.",
"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ą",
diff --git a/public/language/lt/topic.json b/public/language/lt/topic.json
index a12bdd4c4e..d6094a6e83 100644
--- a/public/language/lt/topic.json
+++ b/public/language/lt/topic.json
@@ -26,7 +26,7 @@
"tools": "Įrankiai",
"flag": "Pažymėti",
"locked": "Užrakinta",
- "bookmark_instructions": "Click here to return to the last unread post in this thread.",
+ "bookmark_instructions": "Click here to return to the last read post in this thread.",
"flag_title": "Pažymėti ši pranešimą moderatoriams",
"flag_success": "Šis pranešimas buvo pažymėtas moderatorių patikrinimui.",
"deleted_message": "Ši tema buvo ištrinta. Tik Vartotojai su temos redagavimo privilegijomis gali matyti ja",
diff --git a/public/language/lt/user.json b/public/language/lt/user.json
index 13f3b36b7b..ee3e009c10 100644
--- a/public/language/lt/user.json
+++ b/public/language/lt/user.json
@@ -92,10 +92,12 @@
"open_links_in_new_tab": "Atidaryti išeinančias nuorodas naujam skirtuke",
"enable_topic_searching": "Įjungti Temų Ieškojimą ",
"topic_search_help": "Jeigu įjungtas, temų ieškojimas, nepaisys naršyklės puslapio ieškojimo, ir pradės ieškoti tik toje temoje kuri bus rodoma ekrane",
+ "delay_image_loading": "Delay Image Loading",
+ "image_load_delay_help": "If enabled, images in topics will not load until they are scrolled into view",
"scroll_to_my_post": "After posting a reply, show the new post",
"follow_topics_you_reply_to": "Sekti tas temas kur atrašai tu",
"follow_topics_you_create": "Sekti tas temas kurias sukuri tu",
- "grouptitle": "Pasirinkite grupės pavadinimą kurį norėtumėte kad atvaizduotu",
+ "grouptitle": "Group Title",
"no-group-title": "Nėra grupės pavadinimo",
"select-skin": "Select a Skin",
"select-homepage": "Select a Homepage",
diff --git a/public/language/ms/email.json b/public/language/ms/email.json
index 01dc9523e3..eb5affbabd 100644
--- a/public/language/ms/email.json
+++ b/public/language/ms/email.json
@@ -24,6 +24,7 @@
"digest.day": "day",
"digest.week": "week",
"digest.month": "month",
+ "digest.subject": "Digest for %1",
"notif.chat.subject": "Pesanan baru diterima dari %1",
"notif.chat.cta": "Klik sini untuk meneruskan perbualan",
"notif.chat.unsub.info": "Pemberitahuan sembang ini dihantar berdasarkan tetapan langganan anda.",
diff --git a/public/language/ms/error.json b/public/language/ms/error.json
index 7840393a92..8466ee6bbe 100644
--- a/public/language/ms/error.json
+++ b/public/language/ms/error.json
@@ -85,6 +85,7 @@
"cant-edit-chat-message": "Anda tidak dibenarkan menyunting mesej ini",
"cant-remove-last-user": "Anda tidak boleh membuang pengguna akhir",
"cant-delete-chat-message": "Anda tidak dibenarkan memadamkan mesej ini",
+ "already-voting-for-this-post": "You have already voted for this post.",
"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",
diff --git a/public/language/ms/topic.json b/public/language/ms/topic.json
index 8c12c5a409..c568eb5fc0 100644
--- a/public/language/ms/topic.json
+++ b/public/language/ms/topic.json
@@ -26,7 +26,7 @@
"tools": "Perkakas",
"flag": "Tanda",
"locked": "Kunci",
- "bookmark_instructions": "Klik disini untuk kembali ke kiriman terakhir yang anda telah baca di thread ini.",
+ "bookmark_instructions": "Click here to return to the last read post in this thread.",
"flag_title": "Tanda kiriman ini untuk diselia",
"flag_success": "Kiriman ini telah ditandakan untuk diselia",
"deleted_message": "Topik ini telah dipadam. Hanya pengguna dengan kuasa pengurusan boleh melihatnya.",
diff --git a/public/language/ms/user.json b/public/language/ms/user.json
index 39d38cc538..15483532a3 100644
--- a/public/language/ms/user.json
+++ b/public/language/ms/user.json
@@ -92,10 +92,12 @@
"open_links_in_new_tab": "Buka pautan luar di tab yang baru",
"enable_topic_searching": "Aktifkan Pencarian Dalam-Topik",
"topic_search_help": "Jika diaktifkan, pencarian dalam-topik akan membatalkan fungsi asal pencarian pelayan dan membenarkan anda untuk mencari seluruh topik, daripada menunjukkan apa yang terdapat pada skrin sahaja",
+ "delay_image_loading": "Delay Image Loading",
+ "image_load_delay_help": "If enabled, images in topics will not load until they are scrolled into view",
"scroll_to_my_post": "After posting a reply, show the new post",
"follow_topics_you_reply_to": "Ikut topik yang anda balas",
"follow_topics_you_create": "Ikut topik yang anda buat",
- "grouptitle": "Pilih nama kumpulan yang anda ingin tunjukkan",
+ "grouptitle": "Group Title",
"no-group-title": "Tiada nama kumpulan",
"select-skin": "Pilih skin",
"select-homepage": "Pilih Laman Utama",
diff --git a/public/language/nb/email.json b/public/language/nb/email.json
index 4e542e97a7..6377d85fbf 100644
--- a/public/language/nb/email.json
+++ b/public/language/nb/email.json
@@ -24,6 +24,7 @@
"digest.day": "day",
"digest.week": "week",
"digest.month": "month",
+ "digest.subject": "Digest for %1",
"notif.chat.subject": "Ny samtalemelding mottatt fra %1",
"notif.chat.cta": "Klikk her for å fortsette samtalen",
"notif.chat.unsub.info": "Denne samtale-varselen ble sendt til deg basert på dine innstillinger for abonnering.",
diff --git a/public/language/nb/error.json b/public/language/nb/error.json
index 773e406837..ab24f7cf2b 100644
--- a/public/language/nb/error.json
+++ b/public/language/nb/error.json
@@ -85,6 +85,7 @@
"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",
+ "already-voting-for-this-post": "You have already voted for this post.",
"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",
diff --git a/public/language/nb/topic.json b/public/language/nb/topic.json
index 3e37dc2ba7..c5171e064f 100644
--- a/public/language/nb/topic.json
+++ b/public/language/nb/topic.json
@@ -26,7 +26,7 @@
"tools": "Verktøy",
"flag": "Rapporter",
"locked": "Låst",
- "bookmark_instructions": "Klikk her for å returnere til siste uleste emne i denne tråden.",
+ "bookmark_instructions": "Click here to return to the last read post in this thread.",
"flag_title": "Rapporter dette innlegget for granskning",
"flag_success": "Dette innlegget har blitt rapportert.",
"deleted_message": "Dette emnet har blitt slettet. Bare brukere med emnehåndterings-privilegier kan se den.",
diff --git a/public/language/nb/user.json b/public/language/nb/user.json
index 48cc0e0359..f55c24b20c 100644
--- a/public/language/nb/user.json
+++ b/public/language/nb/user.json
@@ -92,10 +92,12 @@
"open_links_in_new_tab": "Åpne utgående lenker i en ny fane",
"enable_topic_searching": "Aktiver søk-i-emne",
"topic_search_help": "Hvis søk-i-emne er aktivert, overstyres nettleserens standard sidesøk og gir mulighet til å søke gjennom hele emnet, ikke bare det som vises på skjermen",
+ "delay_image_loading": "Delay Image Loading",
+ "image_load_delay_help": "If enabled, images in topics will not load until they are scrolled into view",
"scroll_to_my_post": "After posting a reply, show the new post",
"follow_topics_you_reply_to": "Følg emner du besvarer",
"follow_topics_you_create": "Følg emner du oppretter",
- "grouptitle": "Velg gruppetittelen du vil vise",
+ "grouptitle": "Group Title",
"no-group-title": "Ingen gruppetittel",
"select-skin": "Velg et skin",
"select-homepage": "Select a Homepage",
diff --git a/public/language/nl/email.json b/public/language/nl/email.json
index 829ad4fcdc..c010b77769 100644
--- a/public/language/nl/email.json
+++ b/public/language/nl/email.json
@@ -24,6 +24,7 @@
"digest.day": "dag",
"digest.week": "week",
"digest.month": "maand",
+ "digest.subject": "Samenvatting voor %1",
"notif.chat.subject": "Nieuw chatbericht 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 9b6c912a23..6b042d72e0 100644
--- a/public/language/nl/error.json
+++ b/public/language/nl/error.json
@@ -85,6 +85,7 @@
"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": "Het is niet toegestaan om dit bericht te verwijderen",
+ "already-voting-for-this-post": "Je hebt al gestemd voor deze post.",
"reputation-system-disabled": "Reputatie systeem is uitgeschakeld.",
"downvoting-disabled": "Negatief stemmen is uitgeschakeld",
"not-enough-reputation-to-downvote": "Je hebt onvoldoende reputatie om een negatieve stem uit te mogen brengen",
diff --git a/public/language/nl/groups.json b/public/language/nl/groups.json
index 2bf421bd5b..e146a2d29c 100644
--- a/public/language/nl/groups.json
+++ b/public/language/nl/groups.json
@@ -41,7 +41,7 @@
"details.hidden": "Niet getoond",
"details.hidden_help": "Indien geactiveerd zal deze groep niet getoond worden in de groepslijst en zullen gebruikers handmatig uitgenodigd moeten worden.",
"details.delete_group": "Groep verwijderen",
- "details.private_system_help": "Private groups is disabled at system level, this option does not do anything",
+ "details.private_system_help": "Private groepen zijn op systeemniveau uitgeschakeld, deze optie doet niets.",
"event.updated": "Groepsdetails zijn bijgewerkt",
"event.deleted": "De groep \"%1\" is verwijderd",
"membership.accept-invitation": "Uitnodiging accepteren",
diff --git a/public/language/nl/topic.json b/public/language/nl/topic.json
index 5bff87a78c..99eb3edb16 100644
--- a/public/language/nl/topic.json
+++ b/public/language/nl/topic.json
@@ -26,7 +26,7 @@
"tools": "Extra",
"flag": "Markeren",
"locked": "Gesloten",
- "bookmark_instructions": "Klik hier om naar het nieuwste ongelezen bericht te gaan.",
+ "bookmark_instructions": "Klik hier om terug te keren naar de laatst gelezen post in deze thread.",
"flag_title": "Bericht aan beheerders melden",
"flag_success": "Dit bericht is gerapporteerd aan de beheerder.",
"deleted_message": "Dit onderwerp is verwijderd. Alleen gebruikers met beheerrechten op onderwerpniveau kunnen dit inzien.",
diff --git a/public/language/nl/uploads.json b/public/language/nl/uploads.json
index 1622cb5693..490bf49529 100644
--- a/public/language/nl/uploads.json
+++ b/public/language/nl/uploads.json
@@ -1,6 +1,6 @@
{
- "uploading-file": "Uploading the file...",
- "select-file-to-upload": "Select a file to upload!",
- "upload-success": "File uploaded successfully!",
- "maximum-file-size": "Maximum %1 kb"
+ "uploading-file": "Bestond word geüpload...",
+ "select-file-to-upload": "Selecteer een bestand om te uploaden!",
+ "upload-success": "Bestand succesvol geüpload!",
+ "maximum-file-size": "Maximaal %1 kb"
}
\ No newline at end of file
diff --git a/public/language/nl/user.json b/public/language/nl/user.json
index 70d646156b..e2a0399640 100644
--- a/public/language/nl/user.json
+++ b/public/language/nl/user.json
@@ -92,10 +92,12 @@
"open_links_in_new_tab": "Open uitgaande links naar een externe site in een nieuw tabblad",
"enable_topic_searching": "Inschakelen mogelijkheid op onderwerp te kunnen zoeken",
"topic_search_help": "Wanneer ingeschakeld zal de standaard zoekfunctie, met een aangepaste methode voor onderwerpen, overschreven worden",
+ "delay_image_loading": "Afbeeldingen Laden Uitstellen",
+ "image_load_delay_help": "Indien ingeschakeld zullen afbeeldingen in topics niet laden totdat ze in het scherm scrollen",
"scroll_to_my_post": "Toon het nieuwe bericht na het plaatsen van een antwoord",
"follow_topics_you_reply_to": "Volg de onderwerpen waarop ik gereageerd heb",
"follow_topics_you_create": "Volg de onderwerpen waarvan ik de oorspronkelijke auteur ben",
- "grouptitle": "Selecteer de groepstitel voor weergave",
+ "grouptitle": "Groepstitel",
"no-group-title": "Geen groepstitel",
"select-skin": "Selecteer een skin",
"select-homepage": "Selecteer een startpagina",
diff --git a/public/language/pl/email.json b/public/language/pl/email.json
index c33233781e..d48e458ece 100644
--- a/public/language/pl/email.json
+++ b/public/language/pl/email.json
@@ -24,6 +24,7 @@
"digest.day": "day",
"digest.week": "week",
"digest.month": "month",
+ "digest.subject": "Digest for %1",
"notif.chat.subject": "Nowa wiadomość czatu od %1",
"notif.chat.cta": "Kliknij tutaj, by kontynuować konwersację",
"notif.chat.unsub.info": "To powiadomienie o czacie zostało Ci wysłane zgodnie z ustawieniami Twojego konta.",
diff --git a/public/language/pl/error.json b/public/language/pl/error.json
index 196a9e6c77..cf4959c461 100644
--- a/public/language/pl/error.json
+++ b/public/language/pl/error.json
@@ -85,6 +85,7 @@
"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",
+ "already-voting-for-this-post": "You have already voted for this post.",
"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",
diff --git a/public/language/pl/topic.json b/public/language/pl/topic.json
index 974a61dd94..4b77e033e6 100644
--- a/public/language/pl/topic.json
+++ b/public/language/pl/topic.json
@@ -26,7 +26,7 @@
"tools": "Narzędzia",
"flag": "Zgłoś",
"locked": "Zablokowany",
- "bookmark_instructions": "Kliknij tutaj, aby powrócic do ostatniego nieprzeczytanego postu w tym wątku.",
+ "bookmark_instructions": "Click here to return to the last read post in this thread.",
"flag_title": "Zgłoś post do moderacji",
"flag_success": "Ten post został oznaczony do moderacji.",
"deleted_message": "Ten temat został skasowany. Tylko użytkownicy z uprawnieniami do zarządzania mogą go zobaczyć.",
diff --git a/public/language/pl/user.json b/public/language/pl/user.json
index a5f79daab8..a8fb571c64 100644
--- a/public/language/pl/user.json
+++ b/public/language/pl/user.json
@@ -92,10 +92,12 @@
"open_links_in_new_tab": "Otwieraj linki wychodzące w nowej karcie",
"enable_topic_searching": "Odblokuj szukanie w temacie",
"topic_search_help": "Jeśli włączone, wyszukiwanie w tematach zastąpi przeglądarkowe przeszukiwanie strony i pozwoli na przeszukanie całego tematu, zamiast ograniczonej zawartości aktualnie wyświetlonej na ekranie",
+ "delay_image_loading": "Delay Image Loading",
+ "image_load_delay_help": "If enabled, images in topics will not load until they are scrolled into view",
"scroll_to_my_post": "After posting a reply, show the new post",
"follow_topics_you_reply_to": "Śledź tematy, na które odpowiadasz",
"follow_topics_you_create": "Śledź tematy, które tworzysz",
- "grouptitle": "Wybierz tytuł grupy, który chcesz wyświetlać",
+ "grouptitle": "Group Title",
"no-group-title": "Brak tytułu grupy",
"select-skin": "Wybierz Skórkę",
"select-homepage": "Select a Homepage",
diff --git a/public/language/pt_BR/email.json b/public/language/pt_BR/email.json
index c773f3236b..64ef3928a9 100644
--- a/public/language/pt_BR/email.json
+++ b/public/language/pt_BR/email.json
@@ -24,6 +24,7 @@
"digest.day": "dia",
"digest.week": "semana",
"digest.month": "mês",
+ "digest.subject": "Resumo de %1",
"notif.chat.subject": "Nova mensagem de chat recebida de %1",
"notif.chat.cta": "Clique aqui para continuar a conversa",
"notif.chat.unsub.info": "Esta notificação de chat foi enviada a você devido às suas configurações de assinatura.",
diff --git a/public/language/pt_BR/error.json b/public/language/pt_BR/error.json
index e681f5664f..8e91a585e8 100644
--- a/public/language/pt_BR/error.json
+++ b/public/language/pt_BR/error.json
@@ -85,6 +85,7 @@
"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": "Você não possui permissão para deletar esta mensagem",
+ "already-voting-for-this-post": "Você já votou neste post.",
"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",
diff --git a/public/language/pt_BR/topic.json b/public/language/pt_BR/topic.json
index 5f2d6257c1..cc4e420d83 100644
--- a/public/language/pt_BR/topic.json
+++ b/public/language/pt_BR/topic.json
@@ -26,7 +26,7 @@
"tools": "Ferramentas",
"flag": "Sinalizar",
"locked": "Trancado",
- "bookmark_instructions": "Clique aqui para retornar ao último post não lido nesta thread.",
+ "bookmark_instructions": "Clique aqui para retornar ao último post lido neste tópico.",
"flag_title": "Sinalizar este post para moderação",
"flag_success": "Este post foi sinalizado para ser moderado.",
"deleted_message": "Este tópico foi deletado. Apenas usuários com privilégios de moderação de tópico podem vê-lo.",
diff --git a/public/language/pt_BR/user.json b/public/language/pt_BR/user.json
index 21df201b80..dd9a312176 100644
--- a/public/language/pt_BR/user.json
+++ b/public/language/pt_BR/user.json
@@ -92,10 +92,12 @@
"open_links_in_new_tab": "Abrir links externos em nova aba",
"enable_topic_searching": "Habilitar Pesquisa dentro de Tópico",
"topic_search_help": "Se habilitado, a pesquisa dentro do tópico irá substituir a pesquisa padrão do seu navegador. Assim, você poderá pesquisar pelo tópico inteiro, e não apenas pelo o que está sendo exibido na tela.",
+ "delay_image_loading": "Aguardar para Carregar Imagens",
+ "image_load_delay_help": "Se habilitado, imagens em tópicos não serão carregadas até que eles sejam rolados à visão",
"scroll_to_my_post": "Após postar uma réplica, mostre o novo post",
"follow_topics_you_reply_to": "Seguir tópicos que você responde",
"follow_topics_you_create": "Seguir tópicos que você cria",
- "grouptitle": "Escolha o título do grupo que você deseja exibir",
+ "grouptitle": "Título do Grupo",
"no-group-title": "Sem título de grupo",
"select-skin": "Escolha uma Skin",
"select-homepage": "Selecione uma página inicial",
diff --git a/public/language/ro/email.json b/public/language/ro/email.json
index 5b802555de..b1a1f41d2f 100644
--- a/public/language/ro/email.json
+++ b/public/language/ro/email.json
@@ -24,6 +24,7 @@
"digest.day": "day",
"digest.week": "week",
"digest.month": "month",
+ "digest.subject": "Digest for %1",
"notif.chat.subject": "Ai primit un mesaj de la %1",
"notif.chat.cta": "Apasă aici pentru a continua conversația",
"notif.chat.unsub.info": "This chat notification was sent to you due to your subscription settings.",
diff --git a/public/language/ro/error.json b/public/language/ro/error.json
index 56750a42a0..ba8d12b53d 100644
--- a/public/language/ro/error.json
+++ b/public/language/ro/error.json
@@ -85,6 +85,7 @@
"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",
+ "already-voting-for-this-post": "You have already voted for this post.",
"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.",
diff --git a/public/language/ro/topic.json b/public/language/ro/topic.json
index 5503fa8c3d..e67e9d7cbf 100644
--- a/public/language/ro/topic.json
+++ b/public/language/ro/topic.json
@@ -26,7 +26,7 @@
"tools": "Unelte",
"flag": "Semnalizează",
"locked": "Închis",
- "bookmark_instructions": "Click here to return to the last unread post in this thread.",
+ "bookmark_instructions": "Click here to return to the last read post in this thread.",
"flag_title": "Semnalizează acest mesaj pentru moderare",
"flag_success": "Acest mesaj a fost semnalizat pentru moderare.",
"deleted_message": "Acest subiect a fost șters. Doar utilizatorii cu privilegii pentru moderarea subiectelor îl poate vedea.",
diff --git a/public/language/ro/user.json b/public/language/ro/user.json
index 8a61af9abf..2a65e98896 100644
--- a/public/language/ro/user.json
+++ b/public/language/ro/user.json
@@ -92,10 +92,12 @@
"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",
+ "delay_image_loading": "Delay Image Loading",
+ "image_load_delay_help": "If enabled, images in topics will not load until they are scrolled into view",
"scroll_to_my_post": "After posting a reply, show the new post",
"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",
+ "grouptitle": "Group Title",
"no-group-title": "No group title",
"select-skin": "Select a Skin",
"select-homepage": "Select a Homepage",
diff --git a/public/language/ru/email.json b/public/language/ru/email.json
index a4b378b897..ac5902b0dd 100644
--- a/public/language/ru/email.json
+++ b/public/language/ru/email.json
@@ -24,6 +24,7 @@
"digest.day": "день",
"digest.week": "неделя",
"digest.month": "месяц",
+ "digest.subject": "Digest for %1",
"notif.chat.subject": "Новое сообщение от %1",
"notif.chat.cta": "Нажмите для продолжения диалога",
"notif.chat.unsub.info": "Вы получили это уведомление в соответствии с настройками подписок.",
diff --git a/public/language/ru/error.json b/public/language/ru/error.json
index efaab28fa9..5877e5be07 100644
--- a/public/language/ru/error.json
+++ b/public/language/ru/error.json
@@ -85,6 +85,7 @@
"cant-edit-chat-message": "У вас нет доступа для редактирования этого сообщения",
"cant-remove-last-user": "Вы не можете убрать последнего пользователя",
"cant-delete-chat-message": "У вас нет доступа на удаление этого сообщения",
+ "already-voting-for-this-post": "You have already voted for this post.",
"reputation-system-disabled": "Система репутации отключена.",
"downvoting-disabled": "Понижение оценки отключено",
"not-enough-reputation-to-downvote": "У Вас недостаточно репутации для понижения оценки сообщения",
diff --git a/public/language/ru/topic.json b/public/language/ru/topic.json
index 00ca832430..3cd2ddbdb7 100644
--- a/public/language/ru/topic.json
+++ b/public/language/ru/topic.json
@@ -26,7 +26,7 @@
"tools": "Опции",
"flag": "Отметить",
"locked": "Закрыт",
- "bookmark_instructions": "Нажмите здесь чтобы вернуться к последнему непрочитанному сообщению в теме.",
+ "bookmark_instructions": "Click here to return to the last read post in this thread.",
"flag_title": "Отметить сообщение для модерирования",
"flag_success": "Это сообщение было помечено для модерации",
"deleted_message": "Эта тема была удалена. Только пользователи с правами управления темами могут ее видеть.",
diff --git a/public/language/ru/user.json b/public/language/ru/user.json
index 5e14dc8004..934d3a04da 100644
--- a/public/language/ru/user.json
+++ b/public/language/ru/user.json
@@ -92,10 +92,12 @@
"open_links_in_new_tab": "Открывать внешние ссылки в новых вкладках",
"enable_topic_searching": "Активировать поиск внутри тем",
"topic_search_help": "Если опция включена, поиск в теме будет осуществляться за счёт собственного поиска, который позволит искать во всей теме, а не только в загруженных сообщениях",
+ "delay_image_loading": "Delay Image Loading",
+ "image_load_delay_help": "If enabled, images in topics will not load until they are scrolled into view",
"scroll_to_my_post": "After posting a reply, show the new post",
"follow_topics_you_reply_to": "Следить за темами в которых вы отвечаете",
"follow_topics_you_create": "Следить за темами которые вы создаёте",
- "grouptitle": "Выберите бейдж группы для отображения",
+ "grouptitle": "Group Title",
"no-group-title": "Не показывать бейдж",
"select-skin": "Выбрать скин",
"select-homepage": "Укажите главную страницу",
diff --git a/public/language/rw/email.json b/public/language/rw/email.json
index 626f11dec4..d26954b90b 100644
--- a/public/language/rw/email.json
+++ b/public/language/rw/email.json
@@ -24,6 +24,7 @@
"digest.day": "umunsi",
"digest.week": "icyumweru",
"digest.month": "ukwezi",
+ "digest.subject": "Digest for %1",
"notif.chat.subject": "Ubutumwa bwo mu gikari bwaturutse kuri %1",
"notif.chat.cta": "Kanda hano kugirango ukomeze",
"notif.chat.unsub.info": "Iri tangazo rijyanye n'ubutumwa bwo mu gikari waryohererejwe kubera ko wabihisemo mu byo uzajya umenyeshwa",
diff --git a/public/language/rw/error.json b/public/language/rw/error.json
index a86168d3ef..3dfb30b539 100644
--- a/public/language/rw/error.json
+++ b/public/language/rw/error.json
@@ -85,6 +85,7 @@
"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",
+ "already-voting-for-this-post": "You have already voted for this post.",
"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",
diff --git a/public/language/rw/topic.json b/public/language/rw/topic.json
index b3ba723ec7..1ad35cdaf0 100644
--- a/public/language/rw/topic.json
+++ b/public/language/rw/topic.json
@@ -26,7 +26,7 @@
"tools": "Ibikoresho",
"flag": "Tambikana",
"locked": "Birafungiranye",
- "bookmark_instructions": "Kanda hano kugirango usubire ahari ibitarasomwe biheruka muri iki kiganiro.",
+ "bookmark_instructions": "Click here to return to the last read post in this thread.",
"flag_title": "Bimenyeshe ubuyobozi",
"flag_success": "Bimaze kumenyeshwa ubuyobozi ngo bikurikiranwe. ",
"deleted_message": "Iki kiganiro cyamaze gukurwaho. Abantu babifitiye uburenganzira ni bo bonyine bashobora kukibona. ",
diff --git a/public/language/rw/user.json b/public/language/rw/user.json
index 9ca89d0160..21e3a05a66 100644
--- a/public/language/rw/user.json
+++ b/public/language/rw/user.json
@@ -92,10 +92,12 @@
"open_links_in_new_tab": "Fungurira imirongo ijya hanze mu idirishya rishya",
"enable_topic_searching": "Emerera Ugushakira mu Kiganiro",
"topic_search_help": "Nibyemerwa, ugushakira mu kiganiro bizajya biba ari byo bikorwa maze bitume umuntu abasha gushakira mu kiganiro hose aho gushakira kuri paji igaragarira amaso, imbere yawe gusa",
+ "delay_image_loading": "Delay Image Loading",
+ "image_load_delay_help": "If enabled, images in topics will not load until they are scrolled into view",
"scroll_to_my_post": "Nyuma yo gushyiraho igisubizo, hagaragare icyashyizweho gishya",
"follow_topics_you_reply_to": "Kurikira ibiganiro ushyiraho ibisubizo",
"follow_topics_you_create": "Kurikira ibiganiro uba watangije",
- "grouptitle": "Hitamo umutwe w'itsinda ushaka ko uzajya ugaragara",
+ "grouptitle": "Group Title",
"no-group-title": "Nta mutwe w'itsinda",
"select-skin": "Hitamo Uruhu",
"select-homepage": "Hitamo Paji y'Imbere",
diff --git a/public/language/sc/email.json b/public/language/sc/email.json
index 1b8d512945..691e6309a2 100644
--- a/public/language/sc/email.json
+++ b/public/language/sc/email.json
@@ -24,6 +24,7 @@
"digest.day": "day",
"digest.week": "week",
"digest.month": "month",
+ "digest.subject": "Digest for %1",
"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.",
diff --git a/public/language/sc/error.json b/public/language/sc/error.json
index 0709e823b6..56a5530e02 100644
--- a/public/language/sc/error.json
+++ b/public/language/sc/error.json
@@ -85,6 +85,7 @@
"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",
+ "already-voting-for-this-post": "You have already voted for this post.",
"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",
diff --git a/public/language/sc/topic.json b/public/language/sc/topic.json
index 1f58d8582d..074062ecb6 100644
--- a/public/language/sc/topic.json
+++ b/public/language/sc/topic.json
@@ -26,7 +26,7 @@
"tools": "Ainas",
"flag": "Signala",
"locked": "Locked",
- "bookmark_instructions": "Click here to return to the last unread post in this thread.",
+ "bookmark_instructions": "Click here to return to the last read post in this thread.",
"flag_title": "Signala custu arresonu pro sa moderatzione",
"flag_success": "This post has been flagged for moderation.",
"deleted_message": "This topic has been deleted. Only users with topic management privileges can see it.",
diff --git a/public/language/sc/user.json b/public/language/sc/user.json
index 2b30121863..07d989d612 100644
--- a/public/language/sc/user.json
+++ b/public/language/sc/user.json
@@ -92,10 +92,12 @@
"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",
+ "delay_image_loading": "Delay Image Loading",
+ "image_load_delay_help": "If enabled, images in topics will not load until they are scrolled into view",
"scroll_to_my_post": "After posting a reply, show the new post",
"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",
+ "grouptitle": "Group Title",
"no-group-title": "No group title",
"select-skin": "Select a Skin",
"select-homepage": "Select a Homepage",
diff --git a/public/language/sk/email.json b/public/language/sk/email.json
index 5fb7201bf4..8ad65fe965 100644
--- a/public/language/sk/email.json
+++ b/public/language/sk/email.json
@@ -24,6 +24,7 @@
"digest.day": "day",
"digest.week": "week",
"digest.month": "month",
+ "digest.subject": "Digest for %1",
"notif.chat.subject": "Máte novú správu od %1",
"notif.chat.cta": "Kliknite sem pre pokračovanie v konverzácii",
"notif.chat.unsub.info": "Toto upozornenie o správach ste prijali na základe Vašich nastavení účtu.",
diff --git a/public/language/sk/error.json b/public/language/sk/error.json
index 4d99825f9e..a8b3ba06a7 100644
--- a/public/language/sk/error.json
+++ b/public/language/sk/error.json
@@ -85,6 +85,7 @@
"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",
+ "already-voting-for-this-post": "You have already voted for this post.",
"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",
diff --git a/public/language/sk/topic.json b/public/language/sk/topic.json
index 39f4ca03d8..df1ecdd198 100644
--- a/public/language/sk/topic.json
+++ b/public/language/sk/topic.json
@@ -26,7 +26,7 @@
"tools": "Nástroje",
"flag": "Označiť",
"locked": "Locked",
- "bookmark_instructions": "Click here to return to the last unread post in this thread.",
+ "bookmark_instructions": "Click here to return to the last read post in this thread.",
"flag_title": "Označiť príspevok pre moderáciu",
"flag_success": "Tento príspevok bol označený na úpravu. ",
"deleted_message": "This topic has been deleted. Only users with topic management privileges can see it.",
diff --git a/public/language/sk/user.json b/public/language/sk/user.json
index 6baaf337ce..25684b7a8a 100644
--- a/public/language/sk/user.json
+++ b/public/language/sk/user.json
@@ -92,10 +92,12 @@
"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",
+ "delay_image_loading": "Delay Image Loading",
+ "image_load_delay_help": "If enabled, images in topics will not load until they are scrolled into view",
"scroll_to_my_post": "After posting a reply, show the new post",
"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",
+ "grouptitle": "Group Title",
"no-group-title": "No group title",
"select-skin": "Select a Skin",
"select-homepage": "Select a Homepage",
diff --git a/public/language/sl/email.json b/public/language/sl/email.json
index 5007647a0f..b214e979b6 100644
--- a/public/language/sl/email.json
+++ b/public/language/sl/email.json
@@ -24,6 +24,7 @@
"digest.day": "day",
"digest.week": "week",
"digest.month": "month",
+ "digest.subject": "Digest for %1",
"notif.chat.subject": "Novo sporočilo prejeto na %1",
"notif.chat.cta": "Kliknite tu za nadaljevanje pogovora",
"notif.chat.unsub.info": "Obvestilu o pogovoru je bilo poslano zaradi vaših nastavitev obvestil.",
diff --git a/public/language/sl/error.json b/public/language/sl/error.json
index a0453bc488..d9df817190 100644
--- a/public/language/sl/error.json
+++ b/public/language/sl/error.json
@@ -85,6 +85,7 @@
"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",
+ "already-voting-for-this-post": "You have already voted for this post.",
"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",
diff --git a/public/language/sl/topic.json b/public/language/sl/topic.json
index 503f7ee250..705f9564ec 100644
--- a/public/language/sl/topic.json
+++ b/public/language/sl/topic.json
@@ -26,7 +26,7 @@
"tools": "Orodja",
"flag": "Prijavi",
"locked": "Zaklenjeno",
- "bookmark_instructions": "Click here to return to the last unread post in this thread.",
+ "bookmark_instructions": "Click here to return to the last read post in this thread.",
"flag_title": "Prijavi to objavo v pregled administratorju",
"flag_success": "Ta objava je bila prijavljena v pregled administratorju.",
"deleted_message": "Ta tema je bila izbrisana. Le uporabniki s pravicami teme jo lahko vidijo.",
diff --git a/public/language/sl/user.json b/public/language/sl/user.json
index 2f13808e59..6552ed4f56 100644
--- a/public/language/sl/user.json
+++ b/public/language/sl/user.json
@@ -92,10 +92,12 @@
"open_links_in_new_tab": "Zunanje povezave odpri v novem zavihku",
"enable_topic_searching": "Omogoči iskanje znotraj teme",
"topic_search_help": "Če omogočite, bo iskanje prepisalo brskalnikove prevzete nastavitve in vam omogočilo iskanje skozi celotno temo.",
+ "delay_image_loading": "Delay Image Loading",
+ "image_load_delay_help": "If enabled, images in topics will not load until they are scrolled into view",
"scroll_to_my_post": "After posting a reply, show the new post",
"follow_topics_you_reply_to": "Spremljaj teme v katerih si sodeloval",
"follow_topics_you_create": "Spremljaj teme, ki si jih ustvaril/a",
- "grouptitle": "Izberi ime skupine za prikaz",
+ "grouptitle": "Group Title",
"no-group-title": "Skupina nima imena",
"select-skin": "Izberi obliko",
"select-homepage": "Select a Homepage",
diff --git a/public/language/sr/email.json b/public/language/sr/email.json
index a9ef2f8954..885e6d2cbd 100644
--- a/public/language/sr/email.json
+++ b/public/language/sr/email.json
@@ -21,9 +21,10 @@
"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": "Месец",
+ "digest.subject": "Digest for %1",
"notif.chat.subject": "Примљена је нова порука ћаскања од %1",
"notif.chat.cta": "Кликните овде да наставите са разговором",
"notif.chat.unsub.info": "Ова нотификација је послата вама због претплате коју имате.",
diff --git a/public/language/sr/error.json b/public/language/sr/error.json
index 25e4d1b130..5c66e812ac 100644
--- a/public/language/sr/error.json
+++ b/public/language/sr/error.json
@@ -14,18 +14,18 @@
"invalid-password": "Неисправна лозинка",
"invalid-username-or-password": "Молимо наведите и корисничко име и лозинку",
"invalid-search-term": "Неисправан упит за претрагу",
- "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2",
+ "invalid-pagination-value": "Неважећа вредност при обележавању страна, мора бити најмање %1 и највише %2 ",
"username-taken": "Корисничко име је заузето",
"email-taken": "Адреса е-поште је заусета",
"email-not-confirmed": "Ваша адреса е-поште жоуш увек није оверена, кликните овде да би сте то учинили.",
"email-not-confirmed-chat": "Није вам дозвољено да ћаскате док не оверите вашу е-пошту, клкните овде да то учините.",
- "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 banned",
+ "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": "Sorry, you are required to wait %1 second(s) before making your first post",
"blacklisted-ip": "Sorry, your IP address has been banned from this community. If you feel this is in error, please contact an administrator.",
"no-category": "Категорија не постоји",
@@ -85,6 +85,7 @@
"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",
+ "already-voting-for-this-post": "You have already voted for this post.",
"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",
diff --git a/public/language/sr/modules.json b/public/language/sr/modules.json
index 412f9fd207..c4f4c3314a 100644
--- a/public/language/sr/modules.json
+++ b/public/language/sr/modules.json
@@ -6,7 +6,7 @@
"chat.user_typing": "%1 куца ...",
"chat.user_has_messaged_you": "%1 вам посла поруку.",
"chat.see_all": "Погледајте сва ћаскања",
- "chat.mark_all_read": "Mark all chats read",
+ "chat.mark_all_read": "Означи све разговоре као прочитане",
"chat.no-messages": "Изаберите примаоца да бисте видели историју ћаскања",
"chat.no-users-in-room": "Нема корисника у овој соби",
"chat.recent-chats": "Недавна ћаскања",
diff --git a/public/language/sr/topic.json b/public/language/sr/topic.json
index 37e042c18f..a5ae516c6f 100644
--- a/public/language/sr/topic.json
+++ b/public/language/sr/topic.json
@@ -26,7 +26,7 @@
"tools": "Алатке",
"flag": "Означи",
"locked": "Закључан",
- "bookmark_instructions": "Click here to return to the last unread post in this thread.",
+ "bookmark_instructions": "Click here to return to the last read post in this thread.",
"flag_title": "Flag this post for moderation",
"flag_success": "This post has been flagged for moderation.",
"deleted_message": "This topic has been deleted. Only users with topic management privileges can see it.",
diff --git a/public/language/sr/user.json b/public/language/sr/user.json
index 66280af2d3..3c77214598 100644
--- a/public/language/sr/user.json
+++ b/public/language/sr/user.json
@@ -92,10 +92,12 @@
"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",
+ "delay_image_loading": "Delay Image Loading",
+ "image_load_delay_help": "If enabled, images in topics will not load until they are scrolled into view",
"scroll_to_my_post": "After posting a reply, show the new post",
"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",
+ "grouptitle": "Group Title",
"no-group-title": "No group title",
"select-skin": "Select a Skin",
"select-homepage": "Select a Homepage",
diff --git a/public/language/sv/email.json b/public/language/sv/email.json
index 7d10363d97..5cf3bec72b 100644
--- a/public/language/sv/email.json
+++ b/public/language/sv/email.json
@@ -24,6 +24,7 @@
"digest.day": "day",
"digest.week": "week",
"digest.month": "month",
+ "digest.subject": "Digest for %1",
"notif.chat.subject": "Nytt chatt-meddelande från %1",
"notif.chat.cta": "Klicka här för att fortsätta konversationen",
"notif.chat.unsub.info": "Denna chatt-notifikation skickades till dig på grund av dina inställningar för prenumerationer.",
diff --git a/public/language/sv/error.json b/public/language/sv/error.json
index efb83e5014..cdc57388fd 100644
--- a/public/language/sv/error.json
+++ b/public/language/sv/error.json
@@ -24,7 +24,7 @@
"confirm-email-already-sent": "Bekräftningsbrev redan skickat, var god vänta %1 minut(er) innan du skickar ett nytt.",
"username-too-short": "Användarnamnet är för kort",
"username-too-long": "Användarnamnet är för långt",
- "password-too-long": "Password too long",
+ "password-too-long": "Lösenordet är för långt",
"user-banned": "Användare bannlyst",
"user-too-new": "När du är ny medlem måste du vänta %1 sekund(er) innan du gör ditt första inlägg",
"blacklisted-ip": "Sorry, your IP address has been banned from this community. If you feel this is in error, please contact an administrator.",
@@ -85,6 +85,7 @@
"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",
+ "already-voting-for-this-post": "You have already voted for this post.",
"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",
diff --git a/public/language/sv/topic.json b/public/language/sv/topic.json
index 4fa03da4ee..f1188f7ad6 100644
--- a/public/language/sv/topic.json
+++ b/public/language/sv/topic.json
@@ -26,7 +26,7 @@
"tools": "Verktyg",
"flag": "Rapportera",
"locked": "Låst",
- "bookmark_instructions": "Klicka här för att återvända till det sista olästa inlägget i den här tråden.",
+ "bookmark_instructions": "Click here to return to the last read post in this thread.",
"flag_title": "Rapportera detta inlägg för granskning",
"flag_success": "Det här inlägget har flaggats för moderering.",
"deleted_message": "Det här ämnet har raderats. Endast användare med ämneshanterings-privilegier kan se det.",
diff --git a/public/language/sv/user.json b/public/language/sv/user.json
index ab893029e1..a592658839 100644
--- a/public/language/sv/user.json
+++ b/public/language/sv/user.json
@@ -92,10 +92,12 @@
"open_links_in_new_tab": "Öppna utgående länkar på ny flik",
"enable_topic_searching": "Aktivera Sökning Inom Ämne",
"topic_search_help": "Om aktiverat kommer sökning inom ämne överskrida webbläsarens vanliga funktionen för sökning bland sidor och tillåta dig att söka genom hela ämnet istället för det som endast visas på skärmen.",
+ "delay_image_loading": "Delay Image Loading",
+ "image_load_delay_help": "If enabled, images in topics will not load until they are scrolled into view",
"scroll_to_my_post": "After posting a reply, show the new post",
"follow_topics_you_reply_to": "Följ ämnen som du svarat på",
"follow_topics_you_create": "Följ ämnen du skapat",
- "grouptitle": "Välj tittel för gruppen så som du vill att den ska visas",
+ "grouptitle": "Group Title",
"no-group-title": "Ingen titel på gruppen",
"select-skin": "Välj ett Skin",
"select-homepage": "Select a Homepage",
diff --git a/public/language/th/email.json b/public/language/th/email.json
index 50a596b128..6881135565 100644
--- a/public/language/th/email.json
+++ b/public/language/th/email.json
@@ -24,6 +24,7 @@
"digest.day": "day",
"digest.week": "week",
"digest.month": "month",
+ "digest.subject": "Digest for %1",
"notif.chat.subject": "New chat message received from %1",
"notif.chat.cta": "กดตรงนี้เพื่อกลับไปยังบทสนทนา",
"notif.chat.unsub.info": "This chat notification was sent to you due to your subscription settings.",
diff --git a/public/language/th/error.json b/public/language/th/error.json
index 5fa5730b94..44cef957ae 100644
--- a/public/language/th/error.json
+++ b/public/language/th/error.json
@@ -85,6 +85,7 @@
"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",
+ "already-voting-for-this-post": "You have already voted for this post.",
"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",
diff --git a/public/language/th/topic.json b/public/language/th/topic.json
index 19cecadf9d..7ad792070d 100644
--- a/public/language/th/topic.json
+++ b/public/language/th/topic.json
@@ -26,7 +26,7 @@
"tools": "เครื่องมือ",
"flag": "ปักธง",
"locked": "Locked",
- "bookmark_instructions": "Click here to return to the last unread post in this thread.",
+ "bookmark_instructions": "Click here to return to the last read post in this thread.",
"flag_title": "ปักธงโพสต์นี้เพื่อดำเนินการ",
"flag_success": "This post has been flagged for moderation.",
"deleted_message": "Topic นี้ถูกลบไปแล้ว เฉพาะผู้ใช้งานที่มีสิทธิ์ในการจัดการ Topic เท่านั้นที่จะมีสิทธิ์ในการเข้าชม",
diff --git a/public/language/th/user.json b/public/language/th/user.json
index 092f19cf70..aeeafa7e74 100644
--- a/public/language/th/user.json
+++ b/public/language/th/user.json
@@ -92,10 +92,12 @@
"open_links_in_new_tab": "Open outgoing links in new tab",
"enable_topic_searching": "เปิดใช้การค้นหาแบบ In-Topic",
"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",
+ "delay_image_loading": "Delay Image Loading",
+ "image_load_delay_help": "If enabled, images in topics will not load until they are scrolled into view",
"scroll_to_my_post": "After posting a reply, show the new post",
"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",
+ "grouptitle": "Group Title",
"no-group-title": "No group title",
"select-skin": "Select a Skin",
"select-homepage": "Select a Homepage",
diff --git a/public/language/tr/email.json b/public/language/tr/email.json
index 7dabee41c7..999da17999 100644
--- a/public/language/tr/email.json
+++ b/public/language/tr/email.json
@@ -24,6 +24,7 @@
"digest.day": "gün",
"digest.week": "hafta",
"digest.month": "ay",
+ "digest.subject": "Digest for %1",
"notif.chat.subject": "Okunmamış bazı iletileriniz var",
"notif.chat.cta": "Sohbete devam etmek için buraya tıklayın",
"notif.chat.unsub.info": "Bu bildirim şectiğiniz ayarlar yüzünden gönderildi.",
diff --git a/public/language/tr/error.json b/public/language/tr/error.json
index bb03c66177..a46062e561 100644
--- a/public/language/tr/error.json
+++ b/public/language/tr/error.json
@@ -85,6 +85,7 @@
"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": "Bu mesajı silmek için izin verilmez",
+ "already-voting-for-this-post": "You have already voted for this post.",
"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.",
diff --git a/public/language/tr/topic.json b/public/language/tr/topic.json
index e12c92f005..552b2cdff0 100644
--- a/public/language/tr/topic.json
+++ b/public/language/tr/topic.json
@@ -26,7 +26,7 @@
"tools": "Araçlar",
"flag": "Bayrak",
"locked": "Kilitli",
- "bookmark_instructions": "Bu başlıkta okuduğun en son iletiye gitmek için buraya tıklayınız",
+ "bookmark_instructions": "Click here to return to the last read post in this thread.",
"flag_title": "Bu iletiyi moderatöre haber et",
"flag_success": "Bu ileti yöneticilere bildirildi.",
"deleted_message": "Bu başlık silindi. Sadece başlık düzenleme yetkisi olan kullanıcılar görebilir.",
diff --git a/public/language/tr/user.json b/public/language/tr/user.json
index 1664a6ec81..2ead1751df 100644
--- a/public/language/tr/user.json
+++ b/public/language/tr/user.json
@@ -92,10 +92,12 @@
"open_links_in_new_tab": "Dışarı giden bağlantıları yeni sekmede aç",
"enable_topic_searching": "Konu içi aramayı aktive et",
"topic_search_help": "Aktive edilirse, konu içi arama tarayıcının normal arama davranışını değiştirerek tüm konuyu aramanızı sağlar",
+ "delay_image_loading": "Gecikmeli Görsel Yükleme",
+ "image_load_delay_help": "Aktif hale getirmeniz halinde başlıktaki görseller, sayfa kaydırıldıkca yüklenecek",
"scroll_to_my_post": "Cevap yazdıktan sonra yeni gönderiyi göster",
"follow_topics_you_reply_to": "Cevap verdiğim konuları takip et",
"follow_topics_you_create": "Kendi konularımı takip et",
- "grouptitle": "Göstermek istediğiniz gurup başlığını seçin",
+ "grouptitle": "Grup Başlığı",
"no-group-title": "Grup başlığı yok",
"select-skin": "Bir deri şeçin",
"select-homepage": "Bir anasayfa seçin",
diff --git a/public/language/vi/email.json b/public/language/vi/email.json
index de77b60125..1d14524ac1 100644
--- a/public/language/vi/email.json
+++ b/public/language/vi/email.json
@@ -24,6 +24,7 @@
"digest.day": "ngày",
"digest.week": "tuần",
"digest.month": "tháng",
+ "digest.subject": "Digest for %1",
"notif.chat.subject": "Bạn có tin nhắn mới từ %1",
"notif.chat.cta": "Nhấn vào đây để tiếp tục cuộc hội thoại",
"notif.chat.unsub.info": "Thông báo tin nhắn này được gửi tới dựa theo cài đặt theo dõi của bạn.",
diff --git a/public/language/vi/error.json b/public/language/vi/error.json
index fd5b2a903e..b6c0c79455 100644
--- a/public/language/vi/error.json
+++ b/public/language/vi/error.json
@@ -85,6 +85,7 @@
"cant-edit-chat-message": "Bạn không được phép chỉnh sửa tin nhắn này",
"cant-remove-last-user": "Bạn không thể xoá thành viên cuối cùng",
"cant-delete-chat-message": "Bạn không được phép xoá tin nhắn này",
+ "already-voting-for-this-post": "You have already voted for this post.",
"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",
diff --git a/public/language/vi/topic.json b/public/language/vi/topic.json
index 683acae9fa..c4dc23759f 100644
--- a/public/language/vi/topic.json
+++ b/public/language/vi/topic.json
@@ -26,7 +26,7 @@
"tools": "Công cụ",
"flag": "Gắn cờ",
"locked": "Khóa",
- "bookmark_instructions": "Nhấn vào đây để trở lại bài viết cuối cùng mà bạn chưa đọc trong chủ đề này.",
+ "bookmark_instructions": "Click here to return to the last read post in this thread.",
"flag_title": "Flag bài viết này để chỉnh sửa",
"flag_success": "Chủ đề này đã được flag để chỉnh sửa",
"deleted_message": "Chủ đề này đã bị xóa. Chỉ ban quản trị mới xem được.",
diff --git a/public/language/vi/user.json b/public/language/vi/user.json
index c98cd1b9f9..64932fabe6 100644
--- a/public/language/vi/user.json
+++ b/public/language/vi/user.json
@@ -92,10 +92,12 @@
"open_links_in_new_tab": "Mở link trong tab mới.",
"enable_topic_searching": "Bật In-topic Searching",
"topic_search_help": "Nếu bật, tìm kiếm trong chủ đề sẽ thay thế tính năng tính năng tìm kiếm của trình duyệt và cho phép bạn tìm kiếm trong toàn bộ chủ đề, thay vì chỉ tìm kiếm nội dung đang hiện thị trên màn hình",
+ "delay_image_loading": "Delay Image Loading",
+ "image_load_delay_help": "If enabled, images in topics will not load until they are scrolled into view",
"scroll_to_my_post": "After posting a reply, show the new post",
"follow_topics_you_reply_to": "Theo dõi chủ đề bạn trả lời",
"follow_topics_you_create": "Theo dõi chủ đề bạn tạo",
- "grouptitle": "Chọn tên nhóm mà bạn muốn hiển thị",
+ "grouptitle": "Group Title",
"no-group-title": "Không có tên nhóm",
"select-skin": "Chọn một giao diện",
"select-homepage": "Chọn Trang chủ",
diff --git a/public/language/zh_CN/email.json b/public/language/zh_CN/email.json
index 4d4534bf72..66650a0b02 100644
--- a/public/language/zh_CN/email.json
+++ b/public/language/zh_CN/email.json
@@ -24,6 +24,7 @@
"digest.day": "天",
"digest.week": "周",
"digest.month": "月",
+ "digest.subject": "%1 的摘要",
"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 4e8ec6a25f..af0a03bc4a 100644
--- a/public/language/zh_CN/error.json
+++ b/public/language/zh_CN/error.json
@@ -85,6 +85,7 @@
"cant-edit-chat-message": "您不能编辑这条信息",
"cant-remove-last-user": "您不能移除这个用户",
"cant-delete-chat-message": "您不允许删除这条消息",
+ "already-voting-for-this-post": "您已为此帖回复投过票了。",
"reputation-system-disabled": "威望系统已禁用。",
"downvoting-disabled": "扣分功能已禁用",
"not-enough-reputation-to-downvote": "您的威望不足以给此帖扣分",
diff --git a/public/language/zh_CN/topic.json b/public/language/zh_CN/topic.json
index c123366bb0..f23e8e1417 100644
--- a/public/language/zh_CN/topic.json
+++ b/public/language/zh_CN/topic.json
@@ -26,7 +26,7 @@
"tools": "工具",
"flag": "举报",
"locked": "已锁定",
- "bookmark_instructions": "点击这里返回最新的未读回帖。",
+ "bookmark_instructions": "点击阅读本主题帖中的最新回复",
"flag_title": "举报此帖",
"flag_success": "已举报此回帖。",
"deleted_message": "此主题已被删除。只有拥有主题管理权限的用户可以查看。",
diff --git a/public/language/zh_CN/user.json b/public/language/zh_CN/user.json
index e713189b25..a7620b2522 100644
--- a/public/language/zh_CN/user.json
+++ b/public/language/zh_CN/user.json
@@ -92,10 +92,12 @@
"open_links_in_new_tab": "在新标签打开外部链接",
"enable_topic_searching": "启用主题内搜索",
"topic_search_help": "如果启用此项,主题内搜索会替代浏览器默认的页面搜索,您将可以在整个主题内搜索,而不仅仅只搜索页面上展现的内容。",
+ "delay_image_loading": "延迟图片加载",
+ "image_load_delay_help": "启用后,帖子中的图片仅在用户滚动到图片所在位置时加载",
"scroll_to_my_post": "在提交回复之后显示新帖子",
"follow_topics_you_reply_to": "关注您回复的主题",
"follow_topics_you_create": "关注您创建的主题",
- "grouptitle": "选择展示的小组称号",
+ "grouptitle": "小组标题",
"no-group-title": "不展示小组称号",
"select-skin": "选择皮肤",
"select-homepage": "选择首页",
diff --git a/public/language/zh_TW/email.json b/public/language/zh_TW/email.json
index 2eeb7a8e13..8361ff52d0 100644
--- a/public/language/zh_TW/email.json
+++ b/public/language/zh_TW/email.json
@@ -24,6 +24,7 @@
"digest.day": "day",
"digest.week": "week",
"digest.month": "month",
+ "digest.subject": "Digest for %1",
"notif.chat.subject": "收到來自$1的聊天消息",
"notif.chat.cta": "點擊此處繼續對話",
"notif.chat.unsub.info": "本聊天通知按您的訂閱設置發送給您。",
diff --git a/public/language/zh_TW/error.json b/public/language/zh_TW/error.json
index 0db5a671c2..5deae59892 100644
--- a/public/language/zh_TW/error.json
+++ b/public/language/zh_TW/error.json
@@ -85,6 +85,7 @@
"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",
+ "already-voting-for-this-post": "You have already voted for this post.",
"reputation-system-disabled": "信譽系統已停用。",
"downvoting-disabled": "Downvoting已停用",
"not-enough-reputation-to-downvote": "你沒有足夠的信譽downvote這個帖子",
diff --git a/public/language/zh_TW/topic.json b/public/language/zh_TW/topic.json
index 62f48e9523..4b344c6a31 100644
--- a/public/language/zh_TW/topic.json
+++ b/public/language/zh_TW/topic.json
@@ -26,7 +26,7 @@
"tools": "工具",
"flag": "檢舉",
"locked": "已鎖定",
- "bookmark_instructions": "Click here to return to the last unread post in this thread.",
+ "bookmark_instructions": "Click here to return to the last read post in this thread.",
"flag_title": "檢舉這篇文章, 交給仲裁者來審閱.",
"flag_success": "這文章已經被檢舉要求仲裁.",
"deleted_message": "此主題已被刪除。只有具有主題管理權限的用戶才能看到它。",
diff --git a/public/language/zh_TW/user.json b/public/language/zh_TW/user.json
index 118ba2f471..1228565dff 100644
--- a/public/language/zh_TW/user.json
+++ b/public/language/zh_TW/user.json
@@ -92,10 +92,12 @@
"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",
+ "delay_image_loading": "Delay Image Loading",
+ "image_load_delay_help": "If enabled, images in topics will not load until they are scrolled into view",
"scroll_to_my_post": "After posting a reply, show the new post",
"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",
+ "grouptitle": "Group Title",
"no-group-title": "無此群組標題",
"select-skin": "Select a Skin",
"select-homepage": "Select a Homepage",
diff --git a/public/src/ajaxify.js b/public/src/ajaxify.js
index b72447a980..e31786294b 100644
--- a/public/src/ajaxify.js
+++ b/public/src/ajaxify.js
@@ -70,6 +70,13 @@ $(document).ready(function() {
if (err) {
return onAjaxError(err, url, callback, quiet);
}
+
+ if (window.history && window.history.pushState) {
+ window.history[!quiet ? 'pushState' : 'replaceState']({
+ url: url
+ }, url, RELATIVE_PATH + '/' + url);
+ }
+
retry = true;
app.template = data.template.name;
@@ -104,12 +111,6 @@ $(document).ready(function() {
}
ajaxify.currentPage = url.split(/[?#]/)[0];
-
- if (window.history && window.history.pushState) {
- window.history[!quiet ? 'pushState' : 'replaceState']({
- url: url
- }, url, RELATIVE_PATH + '/' + url);
- }
return url;
};
diff --git a/public/src/client/account/edit.js b/public/src/client/account/edit.js
index de5b01e809..385d5e0ed1 100644
--- a/public/src/client/account/edit.js
+++ b/public/src/client/account/edit.js
@@ -36,6 +36,7 @@ define('forum/account/edit', ['forum/account/header', 'uploader', 'translator'],
website: $('#inputWebsite').val(),
birthday: $('#inputBirthday').val(),
location: $('#inputLocation').val(),
+ groupTitle: $('#groupTitle').val(),
signature: $('#inputSignature').val(),
aboutme: $('#inputAboutMe').val()
};
diff --git a/public/src/client/account/settings.js b/public/src/client/account/settings.js
index 04312f2823..c594abd72a 100644
--- a/public/src/client/account/settings.js
+++ b/public/src/client/account/settings.js
@@ -64,7 +64,7 @@ define('forum/account/settings', ['forum/account/header', 'components', 'csrf'],
$('#bootswatchSkin').on('change', function() {
var css = $('#bootswatchCSS'),
- val = $(this).val() === 'default' ? config['theme:src'] : 'http://maxcdn.bootstrapcdn.com/bootswatch/latest/' + $(this).val() + '/bootstrap.min.css';
+ val = $(this).val() === 'default' ? config['theme:src'] : '//maxcdn.bootstrapcdn.com/bootswatch/latest/' + $(this).val() + '/bootstrap.min.css';
css.attr('href', val);
});
diff --git a/public/src/client/chats.js b/public/src/client/chats.js
index 672a12b57a..af4f764c7c 100644
--- a/public/src/client/chats.js
+++ b/public/src/client/chats.js
@@ -366,6 +366,23 @@ define('forum/chats', ['components', 'string', 'sounds', 'forum/infinitescroll',
data.message.self = data.self;
Chats.appendChatMessage($('.expanded-chat .chat-content'), data.message);
+ } else {
+ if (ajaxify.currentPage.startsWith("chats")) {
+ var roomEl = $('[data-roomid=' + data.roomId + ']');
+
+ if (roomEl.length > 0) {
+ roomEl.addClass("unread");
+ } else {
+ var recentEl = components.get('chat/recent');
+ templates.parse('partials/chat_recent_room', {
+ rooms: { "roomId": data.roomId, "lastUser": data.message.fromUser, "usernames": data.message.fromUser.username, "unread": true }
+ }, function(html) {
+ translator.translate(html, function(translated) {
+ recentEl.prepend(translated);
+ });
+ });
+ }
+ }
}
});
diff --git a/public/src/client/footer.js b/public/src/client/footer.js
index d8e54d4fc3..f1d05d4bfe 100644
--- a/public/src/client/footer.js
+++ b/public/src/client/footer.js
@@ -13,6 +13,12 @@ define('forum/footer', ['notifications', 'chat', 'components', 'translator'], fu
.attr('data-content', count > 99 ? '99+' : count);
}
+ function updateUnreadNewTopicCount(count) {
+ $('#unread-new-count i')
+ .toggleClass('unread-count', count > 0)
+ .attr('data-content', count > 99 ? '99+' : count);
+ }
+
function updateUnreadChatCount(count) {
components.get('chat/icon')
.toggleClass('unread-count', count > 0)
@@ -61,6 +67,7 @@ define('forum/footer', ['notifications', 'chat', 'components', 'translator'], fu
}
updateUnreadTopicCount(data.unreadTopicCount);
+ updateUnreadNewTopicCount(data.unreadNewTopicCount);
updateUnreadChatCount(data.unreadChatCount);
Notifications.updateNotifCount(data.unreadNotificationCount);
});
diff --git a/public/src/client/topic.js b/public/src/client/topic.js
index ff0a255261..fd6fd7dbfa 100644
--- a/public/src/client/topic.js
+++ b/public/src/client/topic.js
@@ -143,7 +143,7 @@ define('forum/topic', [
if (components.get('post/anchor', postIndex).length) {
return navigator.scrollToPostIndex(postIndex, true);
}
- } else if (bookmark && (!config.usePagination || (config.usePagination && ajaxify.data.pagination.currentPage === 1)) && ajaxify.data.postcount > 5) {
+ } else if (bookmark && (!config.usePagination || (config.usePagination && ajaxify.data.pagination.currentPage === 1)) && ajaxify.data.postcount > ajaxify.data.bookmarkThreshold) {
navigator.update(0);
app.alert({
alert_id: 'bookmark',
@@ -280,7 +280,7 @@ define('forum/topic', [
var bookmarkKey = 'topic:' + ajaxify.data.tid + ':bookmark';
var currentBookmark = ajaxify.data.bookmark || localStorage.getItem(bookmarkKey);
- if (ajaxify.data.postcount > 5 && (!currentBookmark || parseInt(index, 10) > parseInt(currentBookmark, 10))) {
+ if (ajaxify.data.postcount > ajaxify.data.bookmarkThreshold && (!currentBookmark || parseInt(index, 10) > parseInt(currentBookmark, 10))) {
if (app.user.uid) {
socket.emit('topics.bookmark', {
'tid': ajaxify.data.tid,
diff --git a/public/src/client/topic/events.js b/public/src/client/topic/events.js
index 7f769f984b..07a73809ed 100644
--- a/public/src/client/topic/events.js
+++ b/public/src/client/topic/events.js
@@ -183,7 +183,7 @@ define('forum/topic/events', [
var isDeleted = postEl.hasClass('deleted');
postTools.toggle(data.pid, isDeleted);
- if (!app.user.isAdmin && parseInt(data.uid, 10) !== parseInt(app.user.uid, 10)) {
+ if (!app.user.isAdmin && !app.user.isGlobalMod && 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]]');
diff --git a/public/src/client/topic/posts.js b/public/src/client/topic/posts.js
index 996dcbc6b9..841d0532ee 100644
--- a/public/src/client/topic/posts.js
+++ b/public/src/client/topic/posts.js
@@ -230,7 +230,6 @@ define('forum/topic/posts', [
utils.addCommasToNumbers(posts.find('.formatted-number'));
utils.makeNumbersHumanReadable(posts.find('.human-readable-number'));
posts.find('.timeago').timeago();
- Posts.wrapImagesInLinks(posts);
addBlockquoteEllipses(posts.find('[component="post/content"] > blockquote > blockquote'));
hidePostToolsForDeletedPosts(posts);
@@ -265,6 +264,9 @@ define('forum/topic/posts', [
visible = images.filter(function() {
return config.delayImageLoading ? utils.isElementInViewport(this) : true;
}),
+ posts = $.unique(visible.map(function() {
+ return $(this).parents('[component="post"]').get(0);
+ })),
scrollTop = $(window).scrollTop(),
adjusting = false,
adjustQueue = [],
@@ -286,6 +288,9 @@ define('forum/topic/posts', [
adjustQueue.pop()();
} else {
adjusting = false;
+
+ Posts.wrapImagesInLinks(posts);
+ posts.length = 0;
}
},
oldHeight, newHeight;
@@ -304,9 +309,6 @@ define('forum/topic/posts', [
});
image.attr('src', image.attr('data-src'));
- if (image.parent().attr('href') === 'about:blank') {
- image.parent().attr('href', image.attr('data-src'));
- }
image.removeAttr('data-src');
});
}, 250);
@@ -314,9 +316,16 @@ define('forum/topic/posts', [
Posts.wrapImagesInLinks = function(posts) {
posts.find('[component="post/content"] img:not(.emoji)').each(function() {
- var $this = $(this);
+ var $this = $(this),
+ src = $this.attr('src'),
+ suffixRegex = /-resized(\.[\w]+)$/;
+
+ if (utils.isRelativeUrl(src) && suffixRegex.test(src)) {
+ src = src.replace(suffixRegex, '$1');
+ }
+
if (!$this.parent().is('a')) {
- $this.wrap('');
+ $this.wrap('');
}
});
};
diff --git a/public/src/modules/iconSelect.js b/public/src/modules/iconSelect.js
index 53a5780b5a..b1f8a30112 100644
--- a/public/src/modules/iconSelect.js
+++ b/public/src/modules/iconSelect.js
@@ -20,6 +20,7 @@ define('iconSelect', function() {
var picker = bootbox.dialog({
onEscape: true,
backdrop: true,
+ show: false,
message: html,
title: 'Select an Icon',
buttons: {
@@ -41,9 +42,11 @@ define('iconSelect', function() {
var iconClass = $('.bootbox .selected').attr('class');
var categoryIconClass = $('').addClass(iconClass).removeClass('fa').removeClass('selected').attr('class');
- el.attr('class', 'fa ' + (doubleSize ? 'fa-2x ' : '') + categoryIconClass);
- el.val(categoryIconClass);
- el.attr('value', categoryIconClass);
+ if (categoryIconClass) {
+ el.attr('class', 'fa ' + (doubleSize ? 'fa-2x ' : '') + categoryIconClass);
+ el.val(categoryIconClass);
+ el.attr('value', categoryIconClass);
+ }
onModified(el);
}
@@ -51,19 +54,41 @@ define('iconSelect', function() {
}
});
+ picker.on('show.bs.modal', function() {
+ var modalEl = $(this),
+ searchEl = modalEl.find('input');
+
+ if (selected) {
+ modalEl.find('.' + selected).addClass('selected');
+ searchEl.val(selected.replace('fa-', ''));
+ }
+ }).modal('show');
+
picker.on('shown.bs.modal', function() {
var modalEl = $(this),
searchEl = modalEl.find('input'),
icons = modalEl.find('.fa-icons i'),
submitEl = modalEl.find('button.btn-primary');
+ function changeSelection(newSelection) {
+ modalEl.find('i.selected').removeClass('selected');
+ if (newSelection) {
+ newSelection.addClass('selected');
+ } else if (searchEl.val().length === 0) {
+ if (selected) {
+ modalEl.find('.' + selected).addClass('selected');
+ }
+ } else {
+ modalEl.find('i:visible').first().addClass('selected');
+ }
+ }
+
// Focus on the input box
- searchEl.focus();
+ searchEl.selectRange(0, searchEl.val().length);
modalEl.find('.icon-container').on('click', 'i', function() {
- searchEl.val($(this).attr('class').replace('fa fa-', ''));
- modalEl.find('.icon-container i').removeClass('selected');
- $(this).addClass('selected');
+ searchEl.val($(this).attr('class').replace('fa fa-', '').replace('selected', ''));
+ changeSelection($(this));
});
searchEl.on('keyup', function(e) {
@@ -75,9 +100,8 @@ define('iconSelect', function() {
$(el).hide();
}
});
+ changeSelection();
} else {
- // Pick first match
- $('.icon-container i:visible').first().addClass('selected');
submitEl.click();
}
});
diff --git a/public/src/modules/sounds.js b/public/src/modules/sounds.js
index 4a6bb80f51..052e804f6e 100644
--- a/public/src/modules/sounds.js
+++ b/public/src/modules/sounds.js
@@ -8,18 +8,14 @@ define('sounds', ['buzz'], function(buzz) {
var eventSoundMapping;
var files;
- socket.on('event:sounds.reloadMapping', loadMapping);
-
- function loadMapping(callback) {
- callback = callback || function() {};
+ socket.on('event:sounds.reloadMapping', function() {
socket.emit('modules.sounds.getMapping', function(err, mapping) {
if (err) {
return app.alertError('[sounds] Could not load sound mapping!');
}
eventSoundMapping = mapping;
- callback();
});
- }
+ });
function loadData(callback) {
socket.emit('modules.sounds.getData', function(err, data) {
diff --git a/src/controllers/accounts/edit.js b/src/controllers/accounts/edit.js
index 2ae429b248..9f63df0894 100644
--- a/src/controllers/accounts/edit.js
+++ b/src/controllers/accounts/edit.js
@@ -10,6 +10,7 @@ var user = require('../../user');
var meta = require('../../meta');
var plugins = require('../../plugins');
var helpers = require('../helpers');
+var groups = require('../../groups');
var accountHelpers = require('./helpers');
var editController = {};
@@ -25,7 +26,13 @@ editController.get = function(req, res, callback) {
userData.maximumProfileImageSize = parseInt(meta.config.maximumProfileImageSize, 10);
userData.allowProfileImageUploads = parseInt(meta.config.allowProfileImageUploads) === 1;
userData.allowAccountDelete = parseInt(meta.config.allowAccountDelete, 10) === 1;
-
+
+ userData.groups = userData.groups.filter(function(group) {
+ return group && group.userTitleEnabled && !groups.isPrivilegeGroup(group.name) && group.name !== 'registered-users';
+ });
+ userData.groups.forEach(function(group) {
+ group.selected = group.name === userData.groupTitle;
+ });
userData.title = '[[pages:account/edit, ' + userData.username + ']]';
userData.breadcrumbs = helpers.buildBreadcrumbs([{text: userData.username, url: '/user/' + userData.userslug}, {text: '[[user:edit]]'}]);
@@ -33,7 +40,7 @@ editController.get = function(req, res, callback) {
plugins.fireHook('filter:user.account.edit', userData, function(err, userData) {
if (err) {
- return next(err);
+ return callback(err);
}
res.render('account/edit', userData);
@@ -121,7 +128,7 @@ editController.uploadPicture = function (req, res, next) {
if (!isAllowed) {
return helpers.notAllowed(req, res);
}
-
+
user.uploadPicture(updateUid, userPhoto, next);
}
], function(err, image) {
diff --git a/src/controllers/accounts/helpers.js b/src/controllers/accounts/helpers.js
index 8acbdc08c8..2502d7fdd0 100644
--- a/src/controllers/accounts/helpers.js
+++ b/src/controllers/accounts/helpers.js
@@ -133,7 +133,7 @@ helpers.getBaseUser = function(userslug, callerUID, callback) {
async.parallel({
user: function(next) {
- user.getUserFields(uid, ['uid', 'username', 'userslug', 'picture', 'cover:url', 'cover:position', 'status', 'lastonline'], next);
+ user.getUserFields(uid, ['uid', 'username', 'userslug', 'picture', 'cover:url', 'cover:position', 'status', 'lastonline', 'groupTitle'], next);
},
isAdmin: function(next) {
user.isAdministrator(callerUID, next);
diff --git a/src/controllers/authentication.js b/src/controllers/authentication.js
index 8db2c9e580..04a9e1408c 100644
--- a/src/controllers/authentication.js
+++ b/src/controllers/authentication.js
@@ -33,7 +33,7 @@ authenticationController.register = function(req, res, next) {
async.waterfall([
function(next) {
- if (registrationType === 'invite-only') {
+ if (registrationType === 'invite-only' || registrationType === 'admin-invite-only') {
user.verifyInvitation(userData, next);
} else {
next();
@@ -59,7 +59,7 @@ authenticationController.register = function(req, res, next) {
plugins.fireHook('filter:register.check', {req: req, res: res, userData: userData}, next);
},
function(data, next) {
- if (registrationType === 'normal' || registrationType === 'invite-only') {
+ if (registrationType === 'normal' || registrationType === 'invite-only' || registrationType === 'admin-invite-only') {
registerAndLoginUser(req, res, userData, next);
} else if (registrationType === 'admin-approval') {
addToApprovalQueue(req, userData, next);
diff --git a/src/controllers/index.js b/src/controllers/index.js
index fa35523c2b..830a45ef99 100644
--- a/src/controllers/index.js
+++ b/src/controllers/index.js
@@ -30,7 +30,7 @@ var Controllers = {
Controllers.home = function(req, res, next) {
- var route = meta.config.homePageRoute || meta.config.homePageCustom || 'categories';
+ var route = meta.config.homePageRoute || meta.config.homePageCustom.replace(/^\/+/, '') || 'categories';
user.getSettings(req.uid, function(err, settings) {
if (err) {
@@ -108,6 +108,12 @@ Controllers.login = function(req, res, next) {
data.error = req.flash('error')[0];
data.title = '[[pages:login]]';
+ if (!data.allowLocalLogin && !data.allowRegistration && data.alternate_logins && data.authentication.length === 1) {
+ return helpers.redirect(res, {
+ external: data.authentication[0].url
+ });
+ }
+
res.render('login', data);
};
diff --git a/src/controllers/topics.js b/src/controllers/topics.js
index c3c2847778..c62ad30545 100644
--- a/src/controllers/topics.js
+++ b/src/controllers/topics.js
@@ -261,6 +261,7 @@ topicsController.get = function(req, res, callback) {
data['reputation:disabled'] = parseInt(meta.config['reputation:disabled'], 10) === 1;
data['downvote:disabled'] = parseInt(meta.config['downvote:disabled'], 10) === 1;
data['feeds:disableRSS'] = parseInt(meta.config['feeds:disableRSS'], 10) === 1;
+ data.bookmarkThreshold = parseInt(meta.config.bookmarkThreshold, 10) || 5;
data.scrollToMyPost = settings.scrollToMyPost;
data.rssFeedUrl = nconf.get('relative_path') + '/topic/' + data.tid + '.rss';
data.pagination = pagination.create(currentPage, pageCount);
diff --git a/src/controllers/unread.js b/src/controllers/unread.js
index d81774661f..d3655fd050 100644
--- a/src/controllers/unread.js
+++ b/src/controllers/unread.js
@@ -5,17 +5,24 @@ var async = require('async');
var meta = require('../meta');
var categories = require('../categories');
var privileges = require('../privileges');
-var user = require('../user')
+var user = require('../user');
var topics = require('../topics');
var helpers = require('./helpers');
var plugins = require('../plugins');
var unreadController = {};
+var validFilter = {'': true, 'new': true, 'watched': true};
+
unreadController.get = function(req, res, next) {
var stop = (parseInt(meta.config.topicsPerList, 10) || 20) - 1;
var results;
var cid = req.query.cid;
+ var filter = req.params.filter || '';
+
+ if (!validFilter[filter]) {
+ return next();
+ }
async.waterfall([
function(next) {
@@ -24,7 +31,7 @@ unreadController.get = function(req, res, next) {
user.getWatchedCategories(req.uid, next);
},
unreadTopics: function(next) {
- topics.getUnreadTopics(cid, req.uid, 0, stop, next);
+ topics.getUnreadTopics(cid, req.uid, 0, stop, filter, next);
}
}, next);
},
@@ -50,6 +57,23 @@ unreadController.get = function(req, res, next) {
results.unreadTopics.breadcrumbs = helpers.buildBreadcrumbs([{text: '[[unread:title]]'}]);
results.unreadTopics.title = '[[pages:unread]]';
+ results.unreadTopics.filters = [{
+ name: '[[unread:all-topics]]',
+ url: 'unread',
+ selected: filter === ''
+ }, {
+ name: '[[unread:new-topics]]',
+ url: 'unread/new',
+ selected: filter === 'new'
+ }, {
+ name: '[[unread:watched-topics]]',
+ url: 'unread/watched',
+ selected: filter === 'watched'
+ }];
+
+ results.unreadTopics.selectedFilter = results.unreadTopics.filters.filter(function(filter) {
+ return filter && filter.selected;
+ })[0];
plugins.fireHook('filter:unread.build', {req: req, res: res, templateData: results.unreadTopics}, next);
}
@@ -64,7 +88,13 @@ unreadController.get = function(req, res, next) {
unreadController.unreadTotal = function(req, res, next) {
- topics.getTotalUnread(req.uid, function (err, data) {
+ var filter = req.params.filter || '';
+
+ if (!validFilter[filter]) {
+ return next();
+ }
+
+ topics.getTotalUnread(req.uid, filter, function (err, data) {
if (err) {
return next(err);
}
diff --git a/src/controllers/uploads.js b/src/controllers/uploads.js
index 59253c5666..605bee07cf 100644
--- a/src/controllers/uploads.js
+++ b/src/controllers/uploads.js
@@ -14,7 +14,7 @@ var image = require('../image');
var uploadsController = {};
-uploadsController.upload = function(req, res, filesIterator, next) {
+uploadsController.upload = function(req, res, filesIterator) {
var files = req.files.files;
if (!req.user && meta.config.allowGuestUploads !== '1') {
@@ -63,6 +63,30 @@ uploadsController.uploadPost = function(req, res, next) {
return next(new Error('[[error:uploads-are-disabled]]'));
}
uploadFile(req.uid, uploadedFile, next);
+ },
+ function(fileObj, next) {
+ if (!isImage || parseInt(meta.config.maximumImageWidth, 10) === 0) {
+ // Not an image, or resizing disabled. No need to resize.
+ return next(null, fileObj);
+ }
+
+ var fullPath = path.join(nconf.get('base_dir'), nconf.get('upload_path'), '..', fileObj.url),
+ parsedPath = path.parse(fullPath);
+
+ image.resizeImage({
+ path: fullPath,
+ target: path.join(parsedPath.dir, parsedPath.name + '-resized' + parsedPath.ext),
+ extension: parsedPath.ext,
+ width: parseInt(meta.config.maximumImageWidth, 10) || 760
+ }, function(err) {
+ // Return the resized version to the composer/postData
+ var parsedUrl = path.parse(fileObj.url);
+ parsedUrl.base = parsedUrl.name + '-resized' + parsedUrl.ext;
+ parsedUrl.name = parsedUrl.name + '-resized';
+ fileObj.url = path.format(parsedUrl);
+
+ next(err, fileObj);
+ });
}
], next);
}, next);
diff --git a/src/database/mongo.js b/src/database/mongo.js
index 0e7e8e2d2a..83a9258857 100644
--- a/src/database/mongo.js
+++ b/src/database/mongo.js
@@ -37,7 +37,7 @@
},
{
name: "mongo:database",
- description: "Which database to use",
+ description: "MongoDB database name",
'default': nconf.get('mongo:database') || 0
}
];
diff --git a/src/emailer.js b/src/emailer.js
index 34b5250908..e297985572 100644
--- a/src/emailer.js
+++ b/src/emailer.js
@@ -113,7 +113,11 @@ var fallbackTransport;
}
}
], function (err) {
- callback(err);
+ if (err && err.code === 'ENOENT') {
+ callback(new Error('[[error:sendmail-not-found]]'));
+ } else {
+ callback(err);
+ }
});
};
diff --git a/src/groups/membership.js b/src/groups/membership.js
index 747fa9d3d7..96962695a1 100644
--- a/src/groups/membership.js
+++ b/src/groups/membership.js
@@ -1,16 +1,17 @@
'use strict';
-var async = require('async'),
- winston = require('winston'),
- _ = require('underscore'),
+var async = require('async');
+var winston = require('winston');
+var _ = require('underscore');
- user = require('../user'),
- utils = require('../../public/src/utils'),
- plugins = require('../plugins'),
- notifications = require('../notifications'),
- db = require('./../database');
+var user = require('../user');
+var utils = require('../../public/src/utils');
+var plugins = require('../plugins');
+var notifications = require('../notifications');
+var db = require('./../database');
module.exports = function(Groups) {
+
Groups.join = function(groupName, uid, callback) {
function join() {
var tasks = [
@@ -39,7 +40,7 @@ module.exports = function(Groups) {
async.parallel(tasks, next);
},
function(results, next) {
- user.setGroupTitle(groupName, uid, next);
+ setGroupTitleIfNotSet(groupName, uid, next);
},
function(next) {
plugins.fireHook('action:group.join', {
@@ -80,6 +81,20 @@ module.exports = function(Groups) {
});
};
+ function setGroupTitleIfNotSet(groupName, uid, callback) {
+ if (groupName === 'registered-users') {
+ return callback();
+ }
+
+ db.getObjectField('user:' + uid, 'groupTitle', function(err, currentTitle) {
+ if (err || (currentTitle || currentTitle === '')) {
+ return callback(err);
+ }
+
+ user.setUserField(uid, 'groupTitle', groupName, callback);
+ });
+ }
+
Groups.requestMembership = function(groupName, uid, callback) {
async.waterfall([
async.apply(inviteOrRequestMembership, groupName, uid, 'request'),
@@ -414,7 +429,7 @@ module.exports = function(Groups) {
}
db.getSetMembers('group:' + groupName + ':pending', callback);
};
-
+
Groups.kick = function(uid, groupName, isOwner, callback) {
if (isOwner) {
// If the owners set only contains one member, error out!
diff --git a/src/image.js b/src/image.js
index f4b85acd4d..fccdc0f5ad 100644
--- a/src/image.js
+++ b/src/image.js
@@ -11,6 +11,7 @@ image.resizeImage = function(data, callback) {
if (plugins.hasListeners('filter:image.resize')) {
plugins.fireHook('filter:image.resize', {
path: data.path,
+ target: data.target,
extension: data.extension,
width: data.width,
height: data.height
@@ -26,28 +27,42 @@ image.resizeImage = function(data, callback) {
var w = image.bitmap.width,
h = image.bitmap.height,
origRatio = w/h,
- desiredRatio = data.width/data.height,
+ desiredRatio = data.width && data.height ? data.width/data.height : origRatio,
x = 0,
y = 0,
crop;
- if (desiredRatio > origRatio) {
- desiredRatio = 1/desiredRatio;
- }
- if (origRatio >= 1) {
- y = 0; // height is the smaller dimension here
- x = Math.floor((w/2) - (h * desiredRatio / 2));
- crop = async.apply(image.crop.bind(image), x, y, h * desiredRatio, h);
+ if (origRatio !== desiredRatio) {
+ if (desiredRatio > origRatio) {
+ desiredRatio = 1/desiredRatio;
+ }
+ if (origRatio >= 1) {
+ y = 0; // height is the smaller dimension here
+ x = Math.floor((w/2) - (h * desiredRatio / 2));
+ crop = async.apply(image.crop.bind(image), x, y, h * desiredRatio, h);
+ } else {
+ x = 0; // width is the smaller dimension here
+ y = Math.floor(h/2 - (w * desiredRatio / 2));
+ crop = async.apply(image.crop.bind(image), x, y, w, w * desiredRatio);
+ }
} else {
- x = 0; // width is the smaller dimension here
- y = Math.floor(h/2 - (w * desiredRatio / 2));
- crop = async.apply(image.crop.bind(image), x, y, w, w * desiredRatio);
+ // Simple resize given either width, height, or both
+ crop = async.apply(setImmediate);
}
async.waterfall([
crop,
- function(image, next) {
- image.resize(data.width, data.height, next);
+ function(_image, next) {
+ if (typeof _image === 'function' && !next) {
+ next = _image;
+ _image = image;
+ }
+
+ if ((data.width && data.height) || (w > data.width) || (h > data.height)) {
+ _image.resize(data.width || Jimp.AUTO, data.height || Jimp.AUTO, next);
+ } else {
+ next(null, image);
+ }
},
function(image, next) {
image.write(data.target || data.path, next);
diff --git a/src/meta/css.js b/src/meta/css.js
index 264267d7c6..0250ae5b26 100644
--- a/src/meta/css.js
+++ b/src/meta/css.js
@@ -5,7 +5,6 @@ var winston = require('winston'),
fs = require('fs'),
path = require('path'),
less = require('less'),
- crypto = require('crypto'),
async = require('async'),
autoprefixer = require('autoprefixer'),
postcss = require('postcss'),
@@ -43,8 +42,7 @@ module.exports = function(Meta) {
path.join(__dirname, '../../public/vendor/fontawesome/less'),
path.join(__dirname, '../../public/vendor/bootstrap/less')
],
- source = '@import "font-awesome";',
- acpSource = '@import "font-awesome";';
+ source = '@import "font-awesome";';
plugins.lessFiles = filterMissingFiles(plugins.lessFiles);
plugins.cssFiles = filterMissingFiles(plugins.cssFiles);
@@ -66,6 +64,8 @@ module.exports = function(Meta) {
return callback(err);
}
+ var acpSource = source;
+
source += '\n@import (inline) "..' + path.sep + '..' + path.sep + 'public/vendor/jquery/css/smoothness/jquery-ui-1.10.4.custom.min.css";';
source += '\n@import (inline) "..' + path.sep + '..' + path.sep + 'public/vendor/jquery/bootstrap-tagsinput/bootstrap-tagsinput.css";';
source += '\n@import (inline) "..' + path.sep + 'public/vendor/colorpicker/colorpicker.css";';
diff --git a/src/meta/js.js b/src/meta/js.js
index 63c265a9cf..2669aed4d4 100644
--- a/src/meta/js.js
+++ b/src/meta/js.js
@@ -95,7 +95,7 @@ module.exports = function(Meta) {
async.series([
function(next) {
async.each(Meta.js.scripts.modules, function(localPath, next) {
- app.get(path.join('/src/modules/', path.basename(localPath)), function(req, res) {
+ app.get('/src/modules/' + path.basename(localPath), function(req, res) {
return res.sendFile(path.join(__dirname, '../../', localPath), {
maxAge: app.enabled('cache') ? 5184000000 : 0
});
diff --git a/src/posts/delete.js b/src/posts/delete.js
index a77c153cb2..40b6554b6f 100644
--- a/src/posts/delete.js
+++ b/src/posts/delete.js
@@ -181,6 +181,9 @@ module.exports = function(Posts) {
function(next) {
db.sortedSetIncrBy('cid:' + topicData.cid + ':tids:posts', -1, postData.tid, next);
},
+ function(next) {
+ db.sortedSetIncrBy('tid:' + postData.tid + ':posters', -1, postData.uid, next);
+ },
function(next) {
user.incrementUserPostCountBy(postData.uid, -1, next);
}
diff --git a/src/posts/user.js b/src/posts/user.js
index cd675cbfa3..275264f808 100644
--- a/src/posts/user.js
+++ b/src/posts/user.js
@@ -1,66 +1,49 @@
'use strict';
-var async = require('async'),
- validator = require('validator'),
-
- db = require('../database'),
- user = require('../user'),
- groups = require('../groups'),
- meta = require('../meta'),
- plugins = require('../plugins');
+var async = require('async');
+var validator = require('validator');
+var user = require('../user');
+var groups = require('../groups');
+var meta = require('../meta');
+var plugins = require('../plugins');
module.exports = function(Posts) {
Posts.getUserInfoForPosts = function(uids, uid, callback) {
var groupsMap = {};
- var userSettings;
- async.parallel({
- groupTitles: function(next) {
- var keys = uids.map(function(uid) {
- return 'user:' + uid + ':settings';
- });
- async.waterfall([
- function (next) {
- db.getObjectsFields(keys, ['groupTitle'], next);
- },
- function (_userSettings, next) {
- userSettings = _userSettings;
- var groupKeys = userSettings.filter(function(userSetting) {
- return userSetting && userSetting.groupTitle;
- }).map(function(userSetting) {
- return userSetting.groupTitle;
- }).filter(function(groupTitle, index, array) {
- return groupTitle && array.indexOf(groupTitle) === index;
- });
- groups.getGroupsData(groupKeys, next);
- },
- function (groupsData, next) {
- groupsData.forEach(function(group) {
- if (group && group.userTitleEnabled) {
- groupsMap[group.name] = {
- name: group.name,
- slug: group.slug,
- labelColor: group.labelColor,
- icon: group.icon,
- userTitle: group.userTitle
- };
- }
- });
- next(null, userSettings);
- }
- ], next);
+ var userData;
+ async.waterfall([
+ function(next) {
+ user.getUsersFields(uids, ['uid', 'username', 'fullname', 'userslug', 'reputation', 'postcount', 'picture', 'signature', 'banned', 'status', 'lastonline', 'groupTitle'], next);
},
- userData: function(next) {
- user.getUsersFields(uids, ['uid', 'username', 'fullname', 'userslug', 'reputation', 'postcount', 'picture', 'signature', 'banned', 'status', 'lastonline'], next);
+ function(_userData, next) {
+ userData = _userData;
+ var groupTitles = userData.map(function(userData) {
+ return userData && userData.groupTitle;
+ }).filter(function(groupTitle, index, array) {
+ return groupTitle && array.indexOf(groupTitle) === index;
+ });
+ groups.getGroupsData(groupTitles, next);
}
- }, function(err, results) {
+ ], function(err, groupsData) {
if (err) {
return callback(err);
}
- var userData = results.userData;
- userData.forEach(function(userData, i) {
+ groupsData.forEach(function(group) {
+ if (group && group.userTitleEnabled) {
+ groupsMap[group.name] = {
+ name: group.name,
+ slug: group.slug,
+ labelColor: group.labelColor,
+ icon: group.icon,
+ userTitle: group.userTitle
+ };
+ }
+ });
+
+ userData.forEach(function(userData) {
userData.uid = userData.uid || 0;
userData.username = userData.username || '[[global:guest]]';
userData.userslug = userData.userslug || '';
@@ -69,7 +52,6 @@ module.exports = function(Posts) {
userData.banned = parseInt(userData.banned, 10) === 1;
userData.picture = userData.picture || '';
userData.status = user.getStatus(userData);
- userData.groupTitle = results.groupTitles[i].groupTitle;
userData.signature = validator.escape(userData.signature || '');
userData.fullname = validator.escape(userData.fullname || '');
});
@@ -77,7 +59,7 @@ module.exports = function(Posts) {
async.map(userData, function(userData, next) {
async.parallel({
isMemberOfGroup: function (next) {
- if (!userData.groupTitle) {
+ if (!userData.groupTitle || !groupsMap[userData.groupTitle]) {
return next();
}
groups.isMember(userData.uid, userData.groupTitle, next);
diff --git a/src/routes/api.js b/src/routes/api.js
index 34cf142b37..4806663460 100644
--- a/src/routes/api.js
+++ b/src/routes/api.js
@@ -22,7 +22,7 @@ module.exports = function(app, middleware, controllers) {
router.get('/categories/:cid/moderators', controllers.api.getModerators);
router.get('/recent/posts/:term?', controllers.api.getRecentPosts);
- router.get('/unread/total', middleware.authenticate, controllers.unread.unreadTotal);
+ router.get('/unread/:filter?/total', middleware.authenticate, controllers.unread.unreadTotal);
router.get('/topic/teaser/:topic_id', controllers.topics.teaser);
var multipart = require('connect-multiparty');
diff --git a/src/routes/authentication.js b/src/routes/authentication.js
index 8e1824cad6..62e2c66224 100644
--- a/src/routes/authentication.js
+++ b/src/routes/authentication.js
@@ -52,7 +52,8 @@
loginStrategies.forEach(function(strategy) {
if (strategy.url) {
router.get(strategy.url, passport.authenticate(strategy.name, {
- scope: strategy.scope
+ scope: strategy.scope,
+ prompt: strategy.prompt || undefined
}));
}
diff --git a/src/routes/index.js b/src/routes/index.js
index a80eb2e46a..395557ef4b 100644
--- a/src/routes/index.js
+++ b/src/routes/index.js
@@ -55,7 +55,7 @@ function categoryRoutes(app, middleware, controllers) {
setupPageRoute(app, '/categories', middleware, [], controllers.categories.list);
setupPageRoute(app, '/popular/:term?', middleware, [], controllers.popular.get);
setupPageRoute(app, '/recent', middleware, [], controllers.recent.get);
- setupPageRoute(app, '/unread', middleware, [middleware.authenticate], controllers.unread.get);
+ setupPageRoute(app, '/unread/:filter?', middleware, [middleware.authenticate], controllers.unread.get);
setupPageRoute(app, '/category/:category_id/:slug/:topic_index', middleware, [], controllers.category.get);
setupPageRoute(app, '/category/:category_id/:slug?', middleware, [], controllers.category.get);
@@ -80,13 +80,25 @@ function groupRoutes(app, middleware, controllers) {
setupPageRoute(app, '/groups/:slug/members', middleware, middlewares, controllers.groups.members);
}
-module.exports = function(app, middleware) {
- var router = express.Router(),
- pluginRouter = express.Router(),
- authRouter = express.Router(),
+module.exports = function(app, middleware, hotswapIds) {
+ var routers = [
+ express.Router(), // plugin router
+ express.Router(), // main app router
+ express.Router() // auth router
+ ],
+ router = routers[1],
+ pluginRouter = routers[0],
+ authRouter = routers[2],
relativePath = nconf.get('relative_path'),
ensureLoggedIn = require('connect-ensure-login');
+ if (Array.isArray(hotswapIds) && hotswapIds.length) {
+ for(var idx,x=0;x userRead[recentTopic.value];
- }).map(function(topic) {
- return topic.value;
- }).filter(function(tid, index, array) {
- return array.indexOf(tid) === index;
- });
-
- tids = tids.slice(0, 100);
-
- filterTopics(uid, tids, cid, results.ignoredCids, function(err, tids) {
- if (err) {
- return callback(err);
+ function (results, next) {
+ if (results.recentTids && !results.recentTids.length && !results.tids_unread.length) {
+ return callback(null, []);
}
+ ignoredCids = results.ignoredCids;
+
+ var userRead = {};
+ results.userScores.forEach(function(userItem) {
+ userRead[userItem.value] = userItem.score;
+ });
+
+ results.recentTids = results.recentTids.concat(results.tids_unread);
+ results.recentTids.sort(function(a, b) {
+ return b.score - a.score;
+ });
+
+ var tids = results.recentTids.filter(function(recentTopic) {
+ switch (filter) {
+ case 'new':
+ return !userRead[recentTopic.value];
+ default:
+ return !userRead[recentTopic.value] || recentTopic.score > userRead[recentTopic.value];
+ }
+ }).map(function(topic) {
+ return topic.value;
+ }).filter(function(tid, index, array) {
+ return array.indexOf(tid) === index;
+ });
+
+ if (filter === 'watched') {
+ filterWatchedTids(uid, tids, next);
+ } else {
+ next(null, tids);
+ }
+ },
+ function (tids, next) {
+
+ tids = tids.slice(0, 100);
+
+ filterTopics(uid, tids, cid, ignoredCids, next);
+ },
+ function (tids, next) {
+
if (stop === -1) {
tids = tids.slice(start);
} else {
tids = tids.slice(start, stop + 1);
}
- callback(null, tids);
- });
- });
+ next(null, tids);
+ }
+ ], callback);
};
+ function filterWatchedTids(uid, tids, callback) {
+ db.sortedSetScores('uid:' + uid + ':followed_tids', tids, function(err, scores) {
+ if (err) {
+ return callback(err);
+ }
+ tids = tids.filter(function(tid, index) {
+ return tid && !!scores[index];
+ });
+ callback(null, tids);
+ });
+ }
+
function filterTopics(uid, tids, cid, ignoredCids, callback) {
if (!Array.isArray(ignoredCids) || !tids.length) {
return callback(null, tids);
diff --git a/src/topics/user.js b/src/topics/user.js
index 4db380efdf..09cb4a7e87 100644
--- a/src/topics/user.js
+++ b/src/topics/user.js
@@ -2,10 +2,9 @@
'use strict';
-var async = require('async'),
- db = require('../database'),
- posts = require('../posts');
-
+var async = require('async');
+var db = require('../database');
+var posts = require('../posts');
module.exports = function(Topics) {
@@ -20,22 +19,6 @@ module.exports = function(Topics) {
};
Topics.getUids = function(tid, callback) {
- async.waterfall([
- function(next) {
- Topics.getPids(tid, next);
- },
- function(pids, next) {
- posts.getPostsFields(pids, ['uid'], next);
- },
- function(postData, next) {
- var uids = postData.map(function(post) {
- return post && post.uid;
- }).filter(function(uid, index, array) {
- return uid && array.indexOf(uid) === index;
- });
-
- next(null, uids);
- }
- ], callback);
+ db.getSortedSetRevRangeByScore('tid:' + tid + ':posters', 0, -1, '+inf', 1, callback);
};
};
\ No newline at end of file
diff --git a/src/upgrade.js b/src/upgrade.js
index f6f1ce0093..36f5c14b39 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, 1, 25);
+ latestSchema = Date.UTC(2016, 3, 18);
Upgrade.check = function(callback) {
db.get('schemaDate', function(err, value) {
@@ -438,6 +438,98 @@ Upgrade.upgrade = function(callback) {
winston.info('[2016/02/25] Social: Post Sharing skipped!');
next();
}
+ },
+ function(next) {
+ thisSchemaDate = Date.UTC(2016, 3, 14);
+
+ if (schemaDate < thisSchemaDate) {
+ updatesMade = true;
+ winston.info('[2016/04/14] Group title from settings to user profile');
+
+ var user = require('./user');
+ var batch = require('./batch');
+ var count = 0;
+ batch.processSortedSet('users:joindate', function(uids, next) {
+ winston.info('upgraded ' + count + ' users');
+ user.getMultipleUserSettings(uids, function(err, settings) {
+ if (err) {
+ return next(err);
+ }
+ count += uids.length;
+ settings = settings.filter(function(setting) {
+ return setting && setting.groupTitle;
+ });
+
+ async.each(settings, function(setting, next) {
+ db.setObjectField('user:' + setting.uid, 'groupTitle', setting.groupTitle, next);
+ }, next);
+ });
+ }, {}, function(err) {
+ if (err) {
+ return next(err);
+ }
+
+ winston.info('[2016/04/14] Group title from settings to user profile done');
+ Upgrade.update(thisSchemaDate, next);
+ });
+ } else {
+ winston.info('[2016/04/14] Group title from settings to user profile skipped!');
+ next();
+ }
+ },
+ function(next) {
+ thisSchemaDate = Date.UTC(2016, 3, 18);
+
+ if (schemaDate < thisSchemaDate) {
+ updatesMade = true;
+ winston.info('[2016/04/19] Users post count per tid');
+
+ var batch = require('./batch');
+ var topics = require('./topics');
+ var count = 0;
+ batch.processSortedSet('topics:tid', function(tids, next) {
+ winston.info('upgraded ' + count + ' topics');
+ count += tids.length;
+ async.each(tids, function(tid, next) {
+ db.delete('tid:' + tid + ':posters', function(err) {
+ if (err) {
+ return next(err);
+ }
+ topics.getPids(tid, function(err, pids) {
+ if (err) {
+ return next(err);
+ }
+
+ if (!pids.length) {
+ return next();
+ }
+
+ async.eachSeries(pids, function(pid, next) {
+ db.getObjectField('post:' + pid, 'uid', function(err, uid) {
+ if (err) {
+ return next(err);
+ }
+ if (!parseInt(uid, 10)) {
+ return next();
+ }
+ db.sortedSetIncrBy('tid:' + tid + ':posters', 1, uid, next);
+ });
+ }, next);
+ });
+ });
+ }, next);
+ }, {}, function(err) {
+ if (err) {
+ return next(err);
+ }
+
+ winston.info('[2016/04/19] Users post count per tid done');
+ Upgrade.update(thisSchemaDate, next);
+ });
+ } else {
+ winston.info('[2016/04/19] Users post count per tid skipped!');
+ next();
+ }
}
// Add new schema updates here
// IMPORTANT: REMEMBER TO UPDATE VALUE OF latestSchema IN LINE 24!!!
diff --git a/src/user/profile.js b/src/user/profile.js
index 50aa92c1d0..e24d5f08d0 100644
--- a/src/user/profile.js
+++ b/src/user/profile.js
@@ -12,7 +12,7 @@ var plugins = require('../plugins');
module.exports = function(User) {
User.updateProfile = function(uid, data, callback) {
- var fields = ['username', 'email', 'fullname', 'website', 'location', 'birthday', 'signature', 'aboutme'];
+ var fields = ['username', 'email', 'fullname', 'website', 'location', 'groupTitle', 'birthday', 'signature', 'aboutme'];
plugins.fireHook('filter:user.updateProfile', {uid: uid, data: data, fields: fields}, function(err, data) {
if (err) {
diff --git a/src/user/settings.js b/src/user/settings.js
index e37e012f7e..a1a21dd354 100644
--- a/src/user/settings.js
+++ b/src/user/settings.js
@@ -1,10 +1,10 @@
'use strict';
-var async = require('async'),
- meta = require('../meta'),
- db = require('../database'),
- plugins = require('../plugins');
+var async = require('async');
+var meta = require('../meta');
+var db = require('../database');
+var plugins = require('../plugins');
module.exports = function(User) {
@@ -162,17 +162,4 @@ module.exports = function(User) {
User.setSetting = function(uid, key, value, callback) {
db.setObjectField('user:' + uid + ':settings', key, value, callback);
};
-
- User.setGroupTitle = function(groupName, uid, callback) {
- if (groupName === 'registered-users') {
- return callback();
- }
- db.getObjectField('user:' + uid + ':settings', 'groupTitle', function(err, currentTitle) {
- if (err || (currentTitle || currentTitle === '')) {
- return callback(err);
- }
-
- User.setSetting(uid, 'groupTitle', groupName, callback);
- });
- };
};
diff --git a/src/views/admin/settings/post.tpl b/src/views/admin/settings/post.tpl
index 590f0e18cd..e37f51a40c 100644
--- a/src/views/admin/settings/post.tpl
+++ b/src/views/admin/settings/post.tpl
@@ -100,6 +100,10 @@
+