diff --git a/public/language/es/admin/development/info.json b/public/language/es/admin/development/info.json
index 826b848cbc..912232a52d 100644
--- a/public/language/es/admin/development/info.json
+++ b/public/language/es/admin/development/info.json
@@ -1,6 +1,6 @@
{
- "you-are-on": "Info - Tu estas en %1:%2",
- "nodes-responded": "%1 nodes responded within %2ms!",
+ "you-are-on": "Info - Tú estás en %1:%2",
+ "nodes-responded": "¡%1 nodos respondieron en %2ms!",
"host": "host",
"pid": "pid",
"nodejs": "nodejs",
diff --git a/public/language/es/admin/settings/general.json b/public/language/es/admin/settings/general.json
index 3f2814bd88..42256a2356 100644
--- a/public/language/es/admin/settings/general.json
+++ b/public/language/es/admin/settings/general.json
@@ -1,11 +1,11 @@
{
- "site-settings": "Site Settings",
- "title": "Site Title",
- "title.name": "Your Community Name",
- "title.show-in-header": "Show Site Title in Header",
- "browser-title": "Browser Title",
- "browser-title-help": "If no browser title is specified, the site title will be used",
- "title-layout": "Title Layout",
+ "site-settings": "Ajustes del Sitio",
+ "title": "Título del Sitio",
+ "title.name": "Nombre de tu Comunidad",
+ "title.show-in-header": "Mostrar Título del Sitio en el Encabezado",
+ "browser-title": "Título del Navegador",
+ "browser-title-help": "Si no se especifica el título del navegador, se utilizará el título del sitio",
+ "title-layout": "Plantilla del Sitio",
"title-layout-help": "Define how the browser title will be structured ie. {pageTitle} | {browserTitle}",
"description.placeholder": "A short description about your community",
"description": "Site Description",
diff --git a/public/language/zh-CN/admin/appearance/customise.json b/public/language/zh-CN/admin/appearance/customise.json
index c332dd4249..cc9050e9e0 100644
--- a/public/language/zh-CN/admin/appearance/customise.json
+++ b/public/language/zh-CN/admin/appearance/customise.json
@@ -7,6 +7,6 @@
"custom-header.description": "请输入自定义的 HTML 代码 (如 JavaScript,Meta Tags 等),这些代码会被添加到论坛的 <head> 部分。",
"custom-header.enable": "启用自定义 Header",
- "custom-css.livereload": "Enable Live Reload",
- "custom-css.livereload.description": "Enable this to force all sessions on every device under your account to refresh whenever you click save"
+ "custom-css.livereload": "启用实时重载",
+ "custom-css.livereload.description": "启用此功能可以在您点击保存时强制您帐户下的每个设备上的所有会话进行刷新"
}
\ No newline at end of file
diff --git a/public/language/zh-CN/admin/development/info.json b/public/language/zh-CN/admin/development/info.json
index 81708963ce..46e955f539 100644
--- a/public/language/zh-CN/admin/development/info.json
+++ b/public/language/zh-CN/admin/development/info.json
@@ -1,14 +1,14 @@
{
"you-are-on": "信息 - 你正在 %1:%2 上",
- "nodes-responded": "%1 nodes responded within %2ms!",
+ "nodes-responded": "%1个节点在%2ms内响应!",
"host": "主机",
"pid": "pid",
"nodejs": "nodejs",
"online": "在线",
"git": "git",
- "memory": "memory",
+ "memory": "内存",
"load": "载入",
- "uptime": "正常运行时间",
+ "uptime": "运行时间",
"registered": "已注册",
"sockets": "接口",
diff --git a/public/language/zh-CN/admin/general/dashboard.json b/public/language/zh-CN/admin/general/dashboard.json
index b99b3b2bcf..300e651d89 100644
--- a/public/language/zh-CN/admin/general/dashboard.json
+++ b/public/language/zh-CN/admin/general/dashboard.json
@@ -5,14 +5,14 @@
"users": "用户",
"posts": "发帖",
"topics": "主题",
- "page-views-seven": "Last 7 Days",
- "page-views-thirty": "Last 30 Days",
- "page-views-last-day": "Last 24 hours",
- "page-views-custom": "Custom Date Range",
- "page-views-custom-start": "Range Start",
- "page-views-custom-end": "Range End",
- "page-views-custom-help": "Enter a date range of page views you would like to view. If no date picker is available, the accepted format is YYYY-MM-DD",
- "page-views-custom-error": "Please enter a valid date range in the format YYYY-MM-DD",
+ "page-views-seven": "最近7天",
+ "page-views-thirty": "最近30天",
+ "page-views-last-day": "最近24小时",
+ "page-views-custom": "自定义日期范围",
+ "page-views-custom-start": "范围开始",
+ "page-views-custom-end": "范围结束",
+ "page-views-custom-help": "输入您要查看的网页浏览日期范围。 如果没有日期选择器可用,则接受的格式是 YYYY-MM-DD",
+ "page-views-custom-error": "请输入 YYYY-MM-DD格式的有效日期范围 ",
"stats.day": "日",
"stats.week": "周",
diff --git a/public/language/zh-CN/admin/general/languages.json b/public/language/zh-CN/admin/general/languages.json
index d145c2c427..b8cb60203e 100644
--- a/public/language/zh-CN/admin/general/languages.json
+++ b/public/language/zh-CN/admin/general/languages.json
@@ -2,5 +2,5 @@
"language-settings": "语言设置",
"description": "默认语言会决定所有用户的语言设定。
单一用户可以各自在帐户设置中覆盖此项设定。",
"default-language": "默认语言",
- "auto-detect": "Auto Detect Language Setting for Guests"
+ "auto-detect": "自动检测游客的语言设置"
}
\ No newline at end of file
diff --git a/public/language/zh-CN/admin/manage/groups.json b/public/language/zh-CN/admin/manage/groups.json
index 4fee922f44..dc2149046f 100644
--- a/public/language/zh-CN/admin/manage/groups.json
+++ b/public/language/zh-CN/admin/manage/groups.json
@@ -1,7 +1,7 @@
{
"name": "群组名",
"description": "群组描述",
- "member-count": "Member Count",
+ "member-count": "成员数",
"system": "系统群组",
"edit": "编辑",
"search-placeholder": "搜索",
diff --git a/public/language/zh-CN/admin/settings/advanced.json b/public/language/zh-CN/admin/settings/advanced.json
index 4cc5377e39..8616bab339 100644
--- a/public/language/zh-CN/admin/settings/advanced.json
+++ b/public/language/zh-CN/admin/settings/advanced.json
@@ -6,7 +6,7 @@
"headers.allow-from": "设置 ALLOW-FROM 来放置 NodeBB 于 iFrame 中",
"headers.powered-by": "自定义由 NodeBB 发送的 \"Powered By\" 头部 ",
"headers.acao": "Access-Control-Allow-Origin",
- "headers.acao-help": "To deny access to all sites, leave empty",
+ "headers.acao-help": "要拒绝所有网站,请留空",
"headers.acam": "Access-Control-Allow-Methods",
"headers.acah": "Access-Control-Allow-Headers",
"traffic-management": "流量管理",
diff --git a/public/language/zh-CN/admin/settings/post.json b/public/language/zh-CN/admin/settings/post.json
index 6f77d26602..c693e256f2 100644
--- a/public/language/zh-CN/admin/settings/post.json
+++ b/public/language/zh-CN/admin/settings/post.json
@@ -29,8 +29,8 @@
"unread": "未读设置",
"unread.cutoff": "未读截止天数",
"unread.min-track-last": "跟踪最后阅读之前的主题最小帖子",
- "recent": "Recent Settings",
- "recent.categoryFilter.disable": "Disable filtering of topics in ignored categories on the /recent page",
+ "recent": "最近设置",
+ "recent.categoryFilter.disable": "禁用对 /recent 页面上忽略类别中的主题进行过滤",
"signature": "签名设置",
"signature.disable": "禁用签名",
"signature.no-links": "禁用签名中的链接",
diff --git a/public/language/zh-CN/admin/settings/user.json b/public/language/zh-CN/admin/settings/user.json
index 8afc431b07..7fb7f68bf3 100644
--- a/public/language/zh-CN/admin/settings/user.json
+++ b/public/language/zh-CN/admin/settings/user.json
@@ -34,12 +34,12 @@
"registration.max-invites": "每个用户最大邀请数",
"max-invites": "每个用户最大邀请数",
"max-invites-help": "无限制填 0 。管理员没有邀请限制
仅在邀请制时可用",
- "invite-expiration": "Invite expiration",
- "invite-expiration-help": "# of days invitations expire in.",
+ "invite-expiration": "邀请过期",
+ "invite-expiration-help": "邀请在#日过期。",
"min-username-length": "最小用户名长度",
"max-username-length": "最大用户名长度",
"min-password-length": "最小密码长度",
- "min-password-strength": "Minimum Password Strength",
+ "min-password-strength": "最小密码强度",
"max-about-me-length": "自我介绍的最大长度",
"terms-of-use": "论坛使用条款 (留空即可禁用)",
"user-search": "用户搜索",
diff --git a/public/language/zh-CN/email.json b/public/language/zh-CN/email.json
index f247ee4b1f..75ff03cf23 100644
--- a/public/language/zh-CN/email.json
+++ b/public/language/zh-CN/email.json
@@ -32,9 +32,9 @@
"notif.post.unsub.info": "根据您的订阅设置,为您发送此回帖提醒。",
"test.text1": "这是一封测试邮件,用来验证 NodeBB 的邮件配置是否设置正确。",
"unsub.cta": "点击这里修改这些设置",
- "banned.subject": "You have been banned from %1",
- "banned.text1": "The user %1 has been banned from %2.",
- "banned.text2": "This ban will last until %1.",
- "banned.text3": "This is the reason why you have been banned:",
+ "banned.subject": "您已被封禁从 %1",
+ "banned.text1": "用户 %1 已被封禁从 %2.",
+ "banned.text2": "封禁将持续到 %1.",
+ "banned.text3": "这是您被封禁的原因:",
"closing": "谢谢!"
}
\ No newline at end of file
diff --git a/public/language/zh-CN/error.json b/public/language/zh-CN/error.json
index 4d438d1927..5b913ab1c6 100644
--- a/public/language/zh-CN/error.json
+++ b/public/language/zh-CN/error.json
@@ -1,6 +1,6 @@
{
"invalid-data": "无效数据",
- "invalid-json": "Invalid JSON",
+ "invalid-json": "无效 JSON",
"not-logged-in": "您还没有登录。",
"account-locked": "您的帐号已被临时锁定",
"search-requires-login": "搜索功能仅限会员使用 - 请先登录或者注册。",
@@ -13,7 +13,7 @@
"invalid-title": "无效标题!",
"invalid-user-data": "无效用户数据",
"invalid-password": "无效密码",
- "invalid-login-credentials": "Invalid login credentials",
+ "invalid-login-credentials": "无效登录凭证",
"invalid-username-or-password": "请确认用户名和密码",
"invalid-search-term": "无效的搜索关键字",
"csrf-invalid": "可能是由于会话过期,登录失败。请重试。",
@@ -32,7 +32,7 @@
"password-too-long": "密码太长",
"user-banned": "用户已禁止",
"user-banned-reason": "抱歉,此帐号已经被封禁 (原因:%1)",
- "user-banned-reason-until": "Sorry, this account has been banned until %1 (Reason: %2)",
+ "user-banned-reason-until": "抱歉,此帐户已被封禁,直到%1(原因:%2)",
"user-too-new": "抱歉,您需要等待 %1 秒后,才可以发帖!",
"blacklisted-ip": "对不起,您的 IP 地址已被社区禁用。如果您认为这是一个错误,请与管理员联系。",
"ban-expiry-missing": "请提供此次禁言结束日期",
@@ -107,7 +107,7 @@
"chat-disabled": "聊天系统已关闭",
"too-many-messages": "您发送了太多消息,请稍等片刻。",
"invalid-chat-message": "无效的聊天信息",
- "chat-message-too-long": "Chat messages can not be longer than %1 characters.",
+ "chat-message-too-long": "聊天消息不能超过 %1 个字符。",
"cant-edit-chat-message": "您不能编辑这条信息",
"cant-remove-last-user": "您不能移除这个用户",
"cant-delete-chat-message": "您不允许删除这条消息",
diff --git a/public/language/zh-CN/modules.json b/public/language/zh-CN/modules.json
index 32241beaba..484962b740 100644
--- a/public/language/zh-CN/modules.json
+++ b/public/language/zh-CN/modules.json
@@ -20,7 +20,7 @@
"chat.three_months": "3个月",
"chat.delete_message_confirm": "确认删除此消息吗?",
"chat.add-users-to-room": "向此聊天室中添加成员",
- "chat.confirm-chat-with-dnd-user": "This user has set their status to DnD(Do not disturb). Do you still want to chat with them?",
+ "chat.confirm-chat-with-dnd-user": "该用户将其状态设置为DnD(请勿打扰)。 你还想和他们聊天吗?",
"composer.compose": "编写帮助",
"composer.show_preview": "显示预览",
"composer.hide_preview": "隐藏预览",
diff --git a/public/language/zh-CN/topic.json b/public/language/zh-CN/topic.json
index f1448d4bd0..b4a3dc0934 100644
--- a/public/language/zh-CN/topic.json
+++ b/public/language/zh-CN/topic.json
@@ -13,8 +13,8 @@
"notify_me": "此主题有新回复时通知我",
"quote": "引用",
"reply": "回复",
- "replies_to_this_post": "回复 %1",
- "one_reply_to_this_post": "1 Reply",
+ "replies_to_this_post": "%1 条回复",
+ "one_reply_to_this_post": "1 条回复",
"last_reply_time": "最后回复",
"reply-as-topic": "在新帖中回复",
"guest-login-reply": "登录后回复",
diff --git a/public/language/zh-CN/user.json b/public/language/zh-CN/user.json
index 8e8c90ada7..7c43d425b3 100644
--- a/public/language/zh-CN/user.json
+++ b/public/language/zh-CN/user.json
@@ -60,7 +60,7 @@
"username_taken_workaround": "您申请的用户名已被占用,所以我们稍作更改。您现在的用户名是 %1",
"password_same_as_username": "您的密码与用户名相同,请选择另外的密码。",
"password_same_as_email": "您的密码与邮箱相同,请选择另外的密码。",
- "weak_password": "Weak password.",
+ "weak_password": "密码强度低。",
"upload_picture": "上传头像",
"upload_a_picture": "上传头像",
"remove_uploaded_picture": "删除已上传的头像",
diff --git a/public/src/client/category.js b/public/src/client/category.js
index 3cf9121659..c712c9438b 100644
--- a/public/src/client/category.js
+++ b/public/src/client/category.js
@@ -15,8 +15,8 @@ define('forum/category', [
], function (infinitescroll, share, navigator, categoryTools, sort, components, translator, topicSelect, pagination, storage) {
var Category = {};
- $(window).on('action:ajaxify.start', function (ev, data) {
- if (ajaxify.currentPage !== data.url) {
+ $(window).on('action:ajaxify.end', function (ev, data) {
+ if (data.tpl_url !== 'category') {
navigator.disable();
removeListeners();
@@ -113,11 +113,14 @@ define('forum/category', [
return bottomIndex;
};
- $(window).on('action:ajaxify.contentLoaded', function () {
+ $(window).on('action:popstate', function () {
if (ajaxify.data.template.category && ajaxify.data.cid) {
var bookmarkIndex = storage.getItem('category:' + ajaxify.data.cid + ':bookmark');
var clickedIndex = storage.getItem('category:' + ajaxify.data.cid + ':bookmark:clicked');
+ storage.removeItem('category:' + ajaxify.data.cid + ':bookmark');
+ storage.removeItem('category:' + ajaxify.data.cid + ':bookmark:clicked');
+
bookmarkIndex = Math.max(0, parseInt(bookmarkIndex, 10) || 0);
clickedIndex = Math.max(0, parseInt(clickedIndex, 10) || 0);
if (!parseInt(bookmarkIndex, 10)) {
@@ -128,10 +131,10 @@ define('forum/category', [
var page = Math.ceil((parseInt(bookmarkIndex, 10) + 1) / config.topicsPerPage);
if (parseInt(page, 10) !== ajaxify.data.pagination.currentPage) {
pagination.loadPage(page, function () {
- Category.scrollToTopic(bookmarkIndex, clickedIndex, 400);
+ Category.scrollToTopic(bookmarkIndex, clickedIndex, 0);
});
} else {
- Category.scrollToTopic(bookmarkIndex, clickedIndex, 400);
+ Category.scrollToTopic(bookmarkIndex, clickedIndex, 0);
}
} else {
if (bookmarkIndex === 0) {
diff --git a/public/src/client/login.js b/public/src/client/login.js
index 078b7448f7..d78f70a85f 100644
--- a/public/src/client/login.js
+++ b/public/src/client/login.js
@@ -35,8 +35,14 @@ define('forum/login', [], function () {
headers: {
'x-csrf-token': config.csrf_token,
},
- success: function (data) {
- window.location.href = data + '?loggedin';
+ success: function (returnTo) {
+ var pathname = utils.urlToLocation(returnTo).pathname;
+
+ var params = utils.params({ url: returnTo });
+ params.loggedin = true;
+ var qs = decodeURIComponent($.param(params));
+
+ window.location.href = pathname + '?' + qs;
},
error: function (data) {
if (data.status === 403 && data.responseText === 'Forbidden') {
diff --git a/src/middleware/index.js b/src/middleware/index.js
index f196ad7e54..149a455cac 100644
--- a/src/middleware/index.js
+++ b/src/middleware/index.js
@@ -123,7 +123,7 @@ middleware.privateUploads = function (req, res, next) {
if (req.user || parseInt(meta.config.privateUploads, 10) !== 1) {
return next();
}
- if (req.path.startsWith('/assets/uploads/files')) {
+ if (req.path.startsWith(nconf.get('relative_path') + '/assets/uploads/files')) {
return res.status(403).json('not-allowed');
}
next();
diff --git a/src/middleware/render.js b/src/middleware/render.js
index 366f6f9f2a..e37b994445 100644
--- a/src/middleware/render.js
+++ b/src/middleware/render.js
@@ -44,7 +44,7 @@ module.exports = function (middleware) {
plugins.fireHook('filter:' + template + '.build', { req: req, res: res, templateData: options }, next);
},
function (data, next) {
- plugins.fireHook('filter:middleware.render', { req: res, res: res, templateData: data.templateData }, next);
+ plugins.fireHook('filter:middleware.render', { req: req, res: res, templateData: data.templateData }, next);
},
function (data, next) {
options = data.templateData;
diff --git a/src/views/admin/manage/groups.tpl b/src/views/admin/manage/groups.tpl
index 44c4187604..72f8bdf35e 100644
--- a/src/views/admin/manage/groups.tpl
+++ b/src/views/admin/manage/groups.tpl
@@ -57,11 +57,11 @@