From 7c37f32dae1e3e83a3d7cbdb0f588e28128ba507 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Wed, 6 Mar 2024 11:34:55 -0500 Subject: [PATCH 001/168] fix: missing uid for modify event, closes #12394 --- src/topics/events.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/topics/events.js b/src/topics/events.js index 68d26406a5..13ab489c63 100644 --- a/src/topics/events.js +++ b/src/topics/events.js @@ -230,6 +230,7 @@ Events.log = async (tid, payload) => { ]); let events = await modifyEvent({ + uid: payload.uid, eventIds: [eventId], timestamps: [timestamp], events: [payload], From 98ff47ec08bee547348e76bf7970a4358ffc7677 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 6 Mar 2024 14:40:24 -0500 Subject: [PATCH 002/168] fix(deps): update dependency winston to v3.12.0 (#12391) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 00f451e76e..94e96c37db 100644 --- a/install/package.json +++ b/install/package.json @@ -145,7 +145,7 @@ "validator": "13.11.0", "webpack": "5.90.3", "webpack-merge": "5.10.0", - "winston": "3.11.0", + "winston": "3.12.0", "workerpool": "9.1.0", "xml": "1.0.1", "xregexp": "5.1.1", From 4d18c38b086b67a3bd1a826849ced2a9126e7670 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 6 Mar 2024 14:40:33 -0500 Subject: [PATCH 003/168] fix(deps): update dependency nodebb-plugin-mentions to v4.4.1 (#12393) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 94e96c37db..0b2d38bd58 100644 --- a/install/package.json +++ b/install/package.json @@ -99,7 +99,7 @@ "nodebb-plugin-emoji": "5.1.13", "nodebb-plugin-emoji-android": "4.0.0", "nodebb-plugin-markdown": "12.2.6", - "nodebb-plugin-mentions": "4.4.0", + "nodebb-plugin-mentions": "4.4.1", "nodebb-plugin-ntfy": "1.7.3", "nodebb-plugin-spam-be-gone": "2.2.1", "nodebb-rewards-essentials": "1.0.0", From 8d6ef3d50a26dd335d31d797ebeb003f8c89f8c5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 6 Mar 2024 14:40:42 -0500 Subject: [PATCH 004/168] fix(deps): update fontsource monorepo (#12390) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install/package.json b/install/package.json index 0b2d38bd58..0a8025d684 100644 --- a/install/package.json +++ b/install/package.json @@ -29,8 +29,8 @@ }, "dependencies": { "@adactive/bootstrap-tagsinput": "0.8.2", - "@fontsource/inter": "5.0.16", - "@fontsource/poppins": "5.0.8", + "@fontsource/inter": "5.0.17", + "@fontsource/poppins": "5.0.12", "@fortawesome/fontawesome-free": "6.5.1", "@isaacs/ttlcache": "1.4.1", "@popperjs/core": "2.11.8", From 4f6a7ffe010d06021e5ee49e58e7843664823805 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Thu, 7 Mar 2024 18:32:46 -0500 Subject: [PATCH 005/168] scrollbar css --- public/scss/admin/admin.scss | 1 + public/scss/client.scss | 3 ++- public/scss/modules/scrollbar.scss | 19 +++++++++++++++++++ src/views/chats.tpl | 4 ++-- src/views/partials/chats/message-window.tpl | 2 +- 5 files changed, 25 insertions(+), 4 deletions(-) create mode 100644 public/scss/modules/scrollbar.scss diff --git a/public/scss/admin/admin.scss b/public/scss/admin/admin.scss index 2cf8d3b4bf..2d9295d128 100644 --- a/public/scss/admin/admin.scss +++ b/public/scss/admin/admin.scss @@ -18,6 +18,7 @@ @import "settings"; @import "../modules/alerts"; +@import "../modules/scrollbar.scss"; @import "./modules/selectable"; @import "./modules/nprogress"; @import "./modules/search"; diff --git a/public/scss/client.scss b/public/scss/client.scss index 3bcd1bd080..cc2debfe86 100644 --- a/public/scss/client.scss +++ b/public/scss/client.scss @@ -7,4 +7,5 @@ @import "modules/picture-switcher"; @import "modules/bottom-sheet"; @import "modules/icon-picker"; -@import "modules/alerts.scss"; \ No newline at end of file +@import "modules/alerts.scss"; +@import "modules/scrollbar.scss"; \ No newline at end of file diff --git a/public/scss/modules/scrollbar.scss b/public/scss/modules/scrollbar.scss new file mode 100644 index 0000000000..47b90c4a4e --- /dev/null +++ b/public/scss/modules/scrollbar.scss @@ -0,0 +1,19 @@ +.ghost-scrollbar { + &::-webkit-scrollbar { + width: 10px; + + } + + &::-webkit-scrollbar-track { + border-radius: 8px; + background-color: $gray-200; + border: none; + } + + &::-webkit-scrollbar-thumb { + border-radius: 8px; + border: 2px solid transparent; + background-clip: content-box; + background-color: $gray-500; + } +} \ No newline at end of file diff --git a/src/views/chats.tpl b/src/views/chats.tpl index 06481d7642..3ffc290ae4 100644 --- a/src/views/chats.tpl +++ b/src/views/chats.tpl @@ -34,7 +34,7 @@
- {{{ if publicRooms.length }}} + {{{ if rooms.length }}}
@@ -42,7 +42,7 @@
{{{ end }}} -
+
{{{ each rooms }}} {{{ end }}} diff --git a/src/views/partials/chats/message-window.tpl b/src/views/partials/chats/message-window.tpl index 26c95c3d9a..4f5e99c9f1 100644 --- a/src/views/partials/chats/message-window.tpl +++ b/src/views/partials/chats/message-window.tpl @@ -24,7 +24,7 @@
-
    +
\ No newline at end of file diff --git a/src/views/partials/gdpr_consent.tpl b/src/views/partials/gdpr_consent.tpl index ea25aeb43c..1759d39589 100644 --- a/src/views/partials/gdpr_consent.tpl +++ b/src/views/partials/gdpr_consent.tpl @@ -2,7 +2,7 @@

[[user:consent.lead]]

[[user:consent.intro]]

- +
@@ -16,7 +16,7 @@

- +
\ No newline at end of file From 80a1a0e042edc31e66b0c66288b25acc9a0274ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Tue, 26 Mar 2024 10:24:20 -0400 Subject: [PATCH 048/168] chore: up harmony --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index ba3194d2c2..ef7e9b816f 100644 --- a/install/package.json +++ b/install/package.json @@ -103,7 +103,7 @@ "nodebb-plugin-ntfy": "1.7.4", "nodebb-plugin-spam-be-gone": "2.2.1", "nodebb-rewards-essentials": "1.0.0", - "nodebb-theme-harmony": "1.2.42", + "nodebb-theme-harmony": "1.2.43", "nodebb-theme-lavender": "7.1.8", "nodebb-theme-peace": "2.2.4", "nodebb-theme-persona": "13.3.11", From 449c0fcd5f3298a7994d70e800952347c500f0ca Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 26 Mar 2024 15:49:35 -0400 Subject: [PATCH 049/168] chore(deps): update dependency mocha to v10.4.0 (#12445) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 87b791cb94..5d3966e256 100644 --- a/install/package.json +++ b/install/package.json @@ -165,7 +165,7 @@ "husky": "8.0.3", "jsdom": "24.0.0", "lint-staged": "15.2.2", - "mocha": "10.3.0", + "mocha": "10.4.0", "mocha-lcov-reporter": "1.3.0", "mockdate": "3.0.5", "nyc": "15.1.0", From aef3ea18cfdea2255d6c7b3850e8ccdb461b3db9 Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Thu, 28 Mar 2024 09:20:13 +0000 Subject: [PATCH 050/168] Latest translations and fallbacks --- .../zh-CN/admin/advanced/database.json | 2 +- public/language/zh-CN/admin/dashboard.json | 4 +- .../language/zh-CN/admin/extend/widgets.json | 6 +-- .../zh-CN/admin/manage/privileges.json | 2 +- public/language/zh-CN/admin/manage/users.json | 38 +++++++++---------- .../language/zh-CN/admin/settings/post.json | 6 +-- .../zh-CN/admin/settings/reputation.json | 12 +++--- .../language/zh-CN/admin/settings/user.json | 16 ++++---- public/language/zh-CN/aria.json | 12 +++--- public/language/zh-CN/category.json | 10 ++--- public/language/zh-CN/error.json | 12 +++--- public/language/zh-CN/flags.json | 6 +-- public/language/zh-CN/global.json | 6 +-- public/language/zh-CN/notifications.json | 10 ++--- public/language/zh-CN/post-queue.json | 4 +- public/language/zh-CN/rewards.json | 14 +++---- public/language/zh-CN/social.json | 4 +- public/language/zh-CN/tags.json | 2 +- public/language/zh-CN/themes/harmony.json | 6 +-- public/language/zh-CN/topic.json | 20 +++++----- public/language/zh-CN/user.json | 8 ++-- 21 files changed, 100 insertions(+), 100 deletions(-) diff --git a/public/language/zh-CN/admin/advanced/database.json b/public/language/zh-CN/admin/advanced/database.json index 7f18de230b..7652d9e4c8 100644 --- a/public/language/zh-CN/admin/advanced/database.json +++ b/public/language/zh-CN/admin/advanced/database.json @@ -17,7 +17,7 @@ "mongo.file-size": "文件大小", "mongo.resident-memory": "驻留内存", "mongo.virtual-memory": "虚拟内存", - "mongo.mapped-memory": "Mapped Memory", + "mongo.mapped-memory": "已映射内存", "mongo.bytes-in": "字节输入", "mongo.bytes-out": "字节输出", "mongo.num-requests": "请求数量", diff --git a/public/language/zh-CN/admin/dashboard.json b/public/language/zh-CN/admin/dashboard.json index 69b1f33da5..5cea605a5c 100644 --- a/public/language/zh-CN/admin/dashboard.json +++ b/public/language/zh-CN/admin/dashboard.json @@ -96,6 +96,6 @@ "clear-search-history": "清空搜索历史", "clear-search-history-confirm": "您确定您要删除搜索历史吗?", "search-term": "Term", - "search-count": "Count", - "view-all": "View all" + "search-count": "计数", + "view-all": "浏览全部" } diff --git a/public/language/zh-CN/admin/extend/widgets.json b/public/language/zh-CN/admin/extend/widgets.json index deef7aa881..d88d368e44 100644 --- a/public/language/zh-CN/admin/extend/widgets.json +++ b/public/language/zh-CN/admin/extend/widgets.json @@ -5,7 +5,7 @@ "none-installed": "未发现窗口部件!请在插件控制面板中启用必要的窗口部件插件。", "clone-from": "从窗口部件克隆", "containers.available": "可用的容器", - "containers.explanation": "Drag and drop on top of any widget", + "containers.explanation": "拖放任意组件到顶部", "containers.none": "无", "container.well": "Well", "container.jumbotron": "超大屏幕", @@ -30,6 +30,6 @@ "start-date": "开始日期", "end-date": "结束日期", "hide-on-mobile": "在移动端隐藏", - "hide-drafts": "Hide drafts", - "show-drafts": "Show drafts" + "hide-drafts": "隐藏草稿", + "show-drafts": "显示草稿" } \ No newline at end of file diff --git a/public/language/zh-CN/admin/manage/privileges.json b/public/language/zh-CN/admin/manage/privileges.json index fddda3f2a8..7bb5c09667 100644 --- a/public/language/zh-CN/admin/manage/privileges.json +++ b/public/language/zh-CN/admin/manage/privileges.json @@ -8,7 +8,7 @@ "edit-privileges": "编辑权限", "select-clear-all": "选择/清除 全部", "chat": "对话", - "chat-with-privileged": "Chat with Privileged", + "chat-with-privileged": "使用特权聊天", "upload-images": "上传图片", "upload-files": "上传文件", "signature": "签名档", diff --git a/public/language/zh-CN/admin/manage/users.json b/public/language/zh-CN/admin/manage/users.json index 52d056839a..e474cc27d3 100644 --- a/public/language/zh-CN/admin/manage/users.json +++ b/public/language/zh-CN/admin/manage/users.json @@ -122,26 +122,26 @@ "alerts.x-users-found": "找到 %1 位用户(耗时 %2 秒)", "alerts.select-a-single-user-to-change-email": "Select a single user to change email", "export": "Export", - "export-users-fields-title": "Select CSV Fields", - "export-field-email": "Email", - "export-field-username": "Username", - "export-field-uid": "UID", + "export-users-fields-title": "选择CSV文件", + "export-field-email": "邮件", + "export-field-username": "用户名", + "export-field-uid": "用户ID", "export-field-ip": "IP", - "export-field-joindate": "Join date", - "export-field-lastonline": "Last Online", - "export-field-lastposttime": "Last Post Time", - "export-field-reputation": "Reputation", - "export-field-postcount": "Post Count", - "export-field-topiccount": "Topic Count", - "export-field-profileviews": "Profile Views", - "export-field-followercount": "Follower Count", - "export-field-followingcount": "Following Count", - "export-field-fullname": "Full Name", - "export-field-website": "Website", - "export-field-location": "Location", - "export-field-birthday": "Birthday", - "export-field-signature": "Signature", - "export-field-aboutme": "About Me", + "export-field-joindate": "注册日期", + "export-field-lastonline": "最后在线", + "export-field-lastposttime": "最后发帖时间", + "export-field-reputation": "声望", + "export-field-postcount": "发帖数", + "export-field-topiccount": "发帖数", + "export-field-profileviews": "资料浏览", + "export-field-followercount": "粉丝数", + "export-field-followingcount": "关注数", + "export-field-fullname": "全名", + "export-field-website": "网站", + "export-field-location": "位置", + "export-field-birthday": "生日", + "export-field-signature": "签名档", + "export-field-aboutme": "关于我", "export-users-started": "导出用户为 csv,这可能需要一些时间。当导出完成时你会收到通知。", "export-users-completed": "用户列表已被导出为 CSV 文件,点击以下载。", diff --git a/public/language/zh-CN/admin/settings/post.json b/public/language/zh-CN/admin/settings/post.json index b123295c1e..92e8c1b2d8 100644 --- a/public/language/zh-CN/admin/settings/post.json +++ b/public/language/zh-CN/admin/settings/post.json @@ -4,11 +4,11 @@ "sorting.post-default": "默认帖子排序", "sorting.oldest-to-newest": "从旧到新", "sorting.newest-to-oldest": "从新到旧", - "sorting.recently-replied": "Recently Replied", - "sorting.recently-created": "Recently Created", + "sorting.recently-replied": "最近回复", + "sorting.recently-created": "最近创建", "sorting.most-votes": "最多点赞", "sorting.most-posts": "最多回复", - "sorting.most-views": "Most Views", + "sorting.most-views": "最多浏览", "sorting.topic-default": "默认主题排序", "length": "帖子字数", "post-queue": "发帖队列", diff --git a/public/language/zh-CN/admin/settings/reputation.json b/public/language/zh-CN/admin/settings/reputation.json index 0573f1db49..6bbf2f50ce 100644 --- a/public/language/zh-CN/admin/settings/reputation.json +++ b/public/language/zh-CN/admin/settings/reputation.json @@ -23,12 +23,12 @@ "flags.limit-per-target": "可以举报某事物的最大次数", "flags.limit-per-target-placeholder": "默认:0", "flags.limit-per-target-help": "当一个帖子或用户被举报不止一次时,每个额外的举报会被认为是一个“报告”并附加到原来的举报中。设置此选项为非零的数以限制一个帖子或用户能被举报的次数。", - "flags.limit-post-flags-per-day": "Maximum number of times a user can flag posts in a day", - "flags.limit-post-flags-per-day-help": "Set to 0 to disable, (default: 10)", - "flags.limit-user-flags-per-day": "Maximum number of times a user can flag users in a day", - "flags.limit-user-flags-per-day-help": "Set to 0 to disable, (default: 10)", - "flags.auto-flag-on-downvote-threshold": "Number of downvotes to auto flag posts", - "flags.auto-flag-on-downvote-threshold-help": "Set to 0 to disable, (default: 0)", + "flags.limit-post-flags-per-day": "用户每日最多举报帖子次数", + "flags.limit-post-flags-per-day-help": "设置为0表示禁止(默认:10)", + "flags.limit-user-flags-per-day": "用户每日可以举报人数", + "flags.limit-user-flags-per-day-help": "设置为0表示禁止(默认:10)", + "flags.auto-flag-on-downvote-threshold": "被踩多少次数自动转为举报帖子", + "flags.auto-flag-on-downvote-threshold-help": "设置为0表示禁止(默认:10)", "flags.auto-resolve-on-ban": "当用户被封禁时,自动解决全部此用户提交的举报", "flags.action-on-resolve": "当举报被解决时做以下事", "flags.action-on-reject": "当举报被拒绝时做以下事", diff --git a/public/language/zh-CN/admin/settings/user.json b/public/language/zh-CN/admin/settings/user.json index 925f9ff00c..045919aab7 100644 --- a/public/language/zh-CN/admin/settings/user.json +++ b/public/language/zh-CN/admin/settings/user.json @@ -79,14 +79,14 @@ "follow-replied-topics": "关注您回复的主题", "default-notification-settings": "默认通知设置", "categoryWatchState": "默认版块关注状态", - "categoryWatchState.tracking": "Tracking", + "categoryWatchState.tracking": "跟踪", "categoryWatchState.notwatching": "未关注", "categoryWatchState.ignoring": "已忽略", - "restrictions-new": "New User Restrictions", - "restrictions.rep-threshold": "Reputation threshold before these restrictions are lifted", - "restrictions.seconds-between-new": "Seconds between posts for new users", - "restrictions.seconds-before-new": "Seconds before a new user can make their first post", - "restrictions.seconds-edit-after-new": "Number of seconds a post remains editable for new users (set to 0 to disable)", - "restrictions.milliseconds-between-messages": "Time between chat messages for new users (ms)", - "restrictions.groups-exempt-from-new-user-restrictions": "Select groups that should be exempt from the new user restrictions" + "restrictions-new": "新用户限制", + "restrictions.rep-threshold": "取消发帖间隔限制所需的声望值", + "restrictions.seconds-between-new": "新用户发布帖子间隔的秒数", + "restrictions.seconds-before-new": "新用户多少秒后可以发第一帖", + "restrictions.seconds-edit-after-new": "帖子保持可编辑的秒数(设置为 0 表示禁用)", + "restrictions.milliseconds-between-messages": "聊天信息间的毫秒数", + "restrictions.groups-exempt-from-new-user-restrictions": "选择不受新用户限制的分组" } diff --git a/public/language/zh-CN/aria.json b/public/language/zh-CN/aria.json index 6f023dcae0..c69f1844a9 100644 --- a/public/language/zh-CN/aria.json +++ b/public/language/zh-CN/aria.json @@ -1,8 +1,8 @@ { - "post-sort-option": "Post sort option, %1", - "topic-sort-option": "Topic sort option, %1", - "user-avatar-for": "User avatar for %1", - "user-watched-tags": "User watched tags", - "delete-upload-button": "Delete upload button", - "group-page-link-for": "Group page link for %1" + "post-sort-option": "帖子分类选项,1%", + "topic-sort-option": "主题分类选项,%1", + "user-avatar-for": "用户头像%1", + "user-watched-tags": "用户关注标签", + "delete-upload-button": "删除上传按钮", + "group-page-link-for": "群组页面链接%1" } \ No newline at end of file diff --git a/public/language/zh-CN/category.json b/public/language/zh-CN/category.json index 64fd876938..5b8301fcf6 100644 --- a/public/language/zh-CN/category.json +++ b/public/language/zh-CN/category.json @@ -10,15 +10,15 @@ "watch": "关注", "ignore": "忽略", "watching": "已关注", - "tracking": "Tracking", + "tracking": "跟踪", "not-watching": "未关注", "ignoring": "已忽略", - "watching.description": "Notify me of new topics.
Show topics in unread & recent", - "tracking.description": "Shows topics in unread & recent", + "watching.description": "有新主题时通知我。
在未读/最近主题中显示。", + "tracking.description": "显示未读和最近的主题", "not-watching.description": "不显示未读主题,显示最近主题", - "ignoring.description": "Do not show topics in unread & recent", + "ignoring.description": "不在未读和最近主题显示", "watching.message": "您关注了此版块和全部子版块的动态。", - "tracking.message": "You are now tracking updates from this category and all subcategories", + "tracking.message": "您关注了此版块和全部子版块的动态。", "notwatching.message": "您未关注了此版块和全部子版块的动态。", "ignoring.message": "您未关注此版块和全部子版块的动态。", "watched-categories": "已关注的版块", diff --git a/public/language/zh-CN/error.json b/public/language/zh-CN/error.json index b7c794e479..4b4f00050b 100644 --- a/public/language/zh-CN/error.json +++ b/public/language/zh-CN/error.json @@ -32,7 +32,7 @@ "folder-exists": "文件夹已存在", "invalid-pagination-value": "无效的分页数值,必须介于 %1 和 %2 之间", "username-taken": "此用户名已被占用", - "email-taken": "Email address is already taken.", + "email-taken": "邮箱地址已被注册", "email-nochange": "输入的邮件地址和已存档的邮件地址相同。", "email-invited": "已通过电子邮件进行邀请", "email-not-confirmed": "您需要验证您的邮箱后才能在版块或主题中发布帖子,请点击此处以发送验证邮件。", @@ -91,7 +91,7 @@ "category-not-selected": "未选择版块。", "too-many-posts": "发帖需要间隔 %1 秒以上 - 请稍候再发帖", "too-many-posts-newbie": "因为您是新用户,所以限制每隔 %1 秒才能发帖一次,直到您有 %2 点声望为止 —— 请稍候再发帖", - "too-many-posts-newbie-minutes": "As a new user, you can only post once every %1 minute(s) until you have earned %2 reputation - please wait before posting again", + "too-many-posts-newbie-minutes": "因为您是新用户,所以限制每隔 %1 秒才能发帖一次,直到您有 %2 点声望为止 —— 请稍候再发帖", "already-posting": "您已在发布帖子", "tag-too-short": "请输入一个更长的标签。标签应当包含不少于 %1 个字符", "tag-too-long": "请输入一个更短的标签。标签不能超过 %1 个字符", @@ -184,10 +184,10 @@ "user-already-flagged": "您已举报此用户", "post-flagged-too-many-times": "此贴已被其他用户举报", "user-flagged-too-many-times": "此用户已被其他用户举报", - "too-many-post-flags-per-day": "You can only flag %1 post(s) per day", - "too-many-user-flags-per-day": "You can only flag %1 user(s) per day", + "too-many-post-flags-per-day": "你每日可以举报%1 个帖子", + "too-many-user-flags-per-day": "你每日可以举报 %1个用户", "cant-flag-privileged": "您不能举报特权用户(版主/全局版主/管理员)的内容或资料", - "cant-locate-flag-report": "Cannot locate flag report", + "cant-locate-flag-report": "无法确定举报报告", "self-vote": "您不能对您自己的帖子投票", "too-many-upvotes-today": "您每天仅可进行 %1 次顶贴", "too-many-upvotes-today-user": "您每天只能对一个用户顶 %1 次", @@ -221,7 +221,7 @@ "already-unblocked": "此用户已被取消屏蔽", "no-connection": "您的网络连接似乎存在问题", "socket-reconnect-failed": "目前无法连接到服务器。请点击这里重试,或稍后再试", - "invalid-plugin-id": "Invalid plugin ID", + "invalid-plugin-id": "无效插件ID", "plugin-not-whitelisted": "无法安装插件 – 只有被NodeBB包管理器列入白名单的插件才能通过ACP安装。", "plugins-set-in-configuration": "您不能修改插件状态因为它们在运行时中被定义(config.json,环境变量或终端选项),请转而修改配置。", "theme-not-set-in-configuration": "在配置中定义活跃的插件时,需要先将新主题加入活跃插件的列表,才能在管理员控制面板中修改主题", diff --git a/public/language/zh-CN/flags.json b/public/language/zh-CN/flags.json index 63b43be5ac..a0891c0768 100644 --- a/public/language/zh-CN/flags.json +++ b/public/language/zh-CN/flags.json @@ -1,6 +1,6 @@ { "state": "状态", - "report": "Report", + "report": "报告", "reports": "报告", "first-reported": "首次报告", "no-flags": "啊哈!没发现任何的举报。", @@ -9,8 +9,8 @@ "update": "更新", "updated": "已更新", "resolved": "已解决", - "report-added": "Added", - "report-rescinded": "Rescinded", + "report-added": "已添加", + "report-rescinded": "已撤销", "target-purged": "被举报的内容已经被清除,不再可用。", "target-aboutme-empty": "这个用户没有设置 "关于我" 。", diff --git a/public/language/zh-CN/global.json b/public/language/zh-CN/global.json index ab6ccbb36d..6055623934 100644 --- a/public/language/zh-CN/global.json +++ b/public/language/zh-CN/global.json @@ -140,12 +140,12 @@ "edited": "已编辑", "disabled": "禁用", "select": "选择", - "selected": "Selected", + "selected": "已选", "copied": "已复制", "user-search-prompt": "输入以查找用户", "hidden": "隐藏", "sort": "排序", "actions": "操作", - "rss-feed": "RSS Feed", - "skip-to-content": "Skip to content" + "rss-feed": "RSS 订阅", + "skip-to-content": "跳转至内容" } \ No newline at end of file diff --git a/public/language/zh-CN/notifications.json b/public/language/zh-CN/notifications.json index 5356a0be4c..981482c16c 100644 --- a/public/language/zh-CN/notifications.json +++ b/public/language/zh-CN/notifications.json @@ -13,14 +13,14 @@ "all": "所有", "topics": "主题", "tags": "Tags", - "categories": "Categories", + "categories": "版块", "replies": "回复", "chat": "聊天", "group-chat": "群聊", "public-chat": "Public Chats", "follows": "关注", "upvote": "顶", - "awards": "Awards", + "awards": "奖励", "new-flags": "新举报", "my-flags": "指派举报给我", "bans": "封禁", @@ -56,7 +56,7 @@ "user-posted-topic-with-tag-dual": "%1 has posted a new topic with tags %2 and %3", "user-posted-topic-with-tag-triple": "%1 has posted a new topic with tags %2, %3 and %4", "user-posted-topic-with-tag-multiple": "%1 has posted a new topic with tags %2", - "user-posted-topic-in-category": "%1 has posted a new topic in %2", + "user-posted-topic-in-category": "%1 发表了新主题:%2", "user-started-following-you": "%1关注了您。", "user-started-following-you-dual": "%1%2 关注了您。", "user-started-following-you-triple": "%1, %2 and %3 started following you.", @@ -83,7 +83,7 @@ "notificationType-upvote": "当有人顶了我的帖子时", "notificationType-new-topic": "当您关注的人发布了主题时", "notificationType-new-topic-with-tag": "When a topic is posted with a tag you follow", - "notificationType-new-topic-in-category": "When a topic is posted in a category you are watching", + "notificationType-new-topic-in-category": "当你关注的版块有主题发布时", "notificationType-new-reply": "当您正在查看的主题中有新回复时", "notificationType-post-edit": "当您关注的主题有帖子被编辑时", "notificationType-follow": "当有人关注您时", @@ -97,5 +97,5 @@ "notificationType-post-queue": "当有新帖子等待审核时", "notificationType-new-post-flag": "当有新的帖子举报时", "notificationType-new-user-flag": "当有新的用户信息举报时", - "notificationType-new-reward": "When you earn a new reward" + "notificationType-new-reward": "当你获得新奖励时" } \ No newline at end of file diff --git a/public/language/zh-CN/post-queue.json b/public/language/zh-CN/post-queue.json index ad4df11d34..7d318866e8 100644 --- a/public/language/zh-CN/post-queue.json +++ b/public/language/zh-CN/post-queue.json @@ -5,8 +5,8 @@ "no-single-post": "您正在查看的主题或帖子已经不在队列中。它可能已经被批准或删除。", "enabling-help": "The post queue is currently disabled. To enable this feature, go to Settings → Post → Post Queue and enable Post Queue.", "back-to-list": "回到发帖队列", - "public-intro": "If you have any queued posts, they will be shown here.", - "public-description": "This forum is configured to automatically queue posts from new accounts, pending moderator approval.
If you have queued posts awaiting approval, you will be able to see them here.", + "public-intro": "如果你有帖子等待发布,它们会显示在这里", + "public-description": "本论坛设置为新用户帖子进入发布队列,等待版主审核。
如果你有帖子等待发布,它们会显示在这里。", "user": "用户", "when": "当", "category": "版块", diff --git a/public/language/zh-CN/rewards.json b/public/language/zh-CN/rewards.json index f923cf1500..dbc21866b0 100644 --- a/public/language/zh-CN/rewards.json +++ b/public/language/zh-CN/rewards.json @@ -1,10 +1,10 @@ { - "awarded-x-reputation": "You have been awarded %1 reputation", - "awarded-group-membership": "You have been added to the group %1", + "awarded-x-reputation": "你已经获得%1声望", + "awarded-group-membership": "你已加入群组%1", - "essentials/user.reputation-conditional-value": "(Reputation %1 %2)", - "essentials/user.postcount-conditional-value": "(Post Count %1 %2)", - "essentials/user.lastonline-conditional-value": "(Last Online %1 %2)", - "essentials/user.joindate-conditional-value": "(Join Date %1 %2)", - "essentials/user.daysregistered-conditional-value": "(Days Registered %1 %2)" + "essentials/user.reputation-conditional-value": "(声望%1 %2)", + "essentials/user.postcount-conditional-value": "(帖子数%1 %2)", + "essentials/user.lastonline-conditional-value": "(最后在线时间%1 %2)", + "essentials/user.joindate-conditional-value": "(注册日期%1 %2)", + "essentials/user.daysregistered-conditional-value": "(注册天数%1 %2)" } \ No newline at end of file diff --git a/public/language/zh-CN/social.json b/public/language/zh-CN/social.json index ae8a4a5874..ff9388001d 100644 --- a/public/language/zh-CN/social.json +++ b/public/language/zh-CN/social.json @@ -7,6 +7,6 @@ "sign-up-with-google": "通过 Google 注册", "log-in-with-facebook": "通过 Facebook 登录", "continue-with-facebook": "继续使用 Facebook 登录", - "sign-in-with-linkedin": "Sign in with LinkedIn", - "sign-up-with-linkedin": "Sign up with LinkedIn" + "sign-in-with-linkedin": "通过LinkedIn登录", + "sign-up-with-linkedin": "通过LinkedIn注册" } \ No newline at end of file diff --git a/public/language/zh-CN/tags.json b/public/language/zh-CN/tags.json index e892b5bddb..d68b9825fa 100644 --- a/public/language/zh-CN/tags.json +++ b/public/language/zh-CN/tags.json @@ -3,7 +3,7 @@ "no-tag-topics": "此标签还没有主题帖。", "no-tags-found": "没有找到标签", "tags": "标签", - "enter-tags-here": "Enter tags, %1 - %2 characters.", + "enter-tags-here": "输入标签,限制%1 - %2个字符", "enter-tags-here-short": "输入标签...", "no-tags": "尚无标签。", "select-tags": "选择标签", diff --git a/public/language/zh-CN/themes/harmony.json b/public/language/zh-CN/themes/harmony.json index 9a657d723c..62c9c1b4c6 100644 --- a/public/language/zh-CN/themes/harmony.json +++ b/public/language/zh-CN/themes/harmony.json @@ -3,17 +3,17 @@ "skins": "皮肤", "collapse": "折叠", "expand": "展开", - "sidebar-toggle": "Sidebar Toggle", + "sidebar-toggle": "侧栏滚动", "login-register-to-search": "登录或注册以进行搜索。", "settings.title": "主题设置", "settings.enableQuickReply": "启用快速回复", - "settings.enableBreadcrumbs": "Enable breadcrumbs", + "settings.enableBreadcrumbs": "启用面包屑导航", "settings.centerHeaderElements": "标题元素居中", "settings.mobileTopicTeasers": "在移动设备显示话题预告", "settings.stickyToolbar": "附着工具条", "settings.stickyToolbar.help": "主题和类别页面上的工具条将附着在页面顶部", "settings.autohideBottombar": "自动隐藏底栏", "settings.autohideBottombar.help": "当页面向下滚动时,移动设备视图的底栏将被隐藏", - "settings.openSidebars": "Open sidebars", + "settings.openSidebars": "打开侧栏", "settings.chatModals": "启用聊天模式" } \ No newline at end of file diff --git a/public/language/zh-CN/topic.json b/public/language/zh-CN/topic.json index 3ccd7422bc..42a6d6a334 100644 --- a/public/language/zh-CN/topic.json +++ b/public/language/zh-CN/topic.json @@ -15,7 +15,7 @@ "replies-to-this-post": "%1 条回复", "one-reply-to-this-post": "1 条回复", "last-reply-time": "最后回复", - "reply-options": "Reply options", + "reply-options": "回复选项", "reply-as-topic": "在新帖中回复", "guest-login-reply": "登录后回复", "login-to-view": "🔒登录查看", @@ -35,7 +35,7 @@ "pinned": "已固定", "pinned-with-expiry": "置顶直到 %1", "scheduled": "已定时", - "deleted": "Deleted", + "deleted": "删除", "moved": "已移动", "moved-from": "移自%1版", "copy-code": "复制代码", @@ -182,8 +182,8 @@ "sort-by": "排序", "oldest-to-newest": "从旧到新", "newest-to-oldest": "从新到旧", - "recently-replied": "Recently Replied", - "recently-created": "Recently Created", + "recently-replied": "最近回复", + "recently-created": "最近创建", "most-votes": "最多赞同", "most-posts": "回复最多", "most-views": "最多浏览", @@ -208,13 +208,13 @@ "last-post": "最后一个帖子", "go-to-my-next-post": "转到我的下一个帖子", "no-more-next-post": "您在此主题中没有更多的帖子了", - "open-composer": "Open composer", + "open-composer": "打开编辑器", "post-quick-reply": "快速回复", "navigator.index": "发布 %2 的 %1", "navigator.unread": "未读 %1", - "upvote-post": "Upvote post", - "downvote-post": "Downvote post", - "post-tools": "Post tools", - "unread-posts-link": "Unread posts link", - "thumb-image": "Topic thumbnail image" + "upvote-post": "顶贴", + "downvote-post": "踩帖", + "post-tools": "帖子工具", + "unread-posts-link": "未读帖子链接", + "thumb-image": "主题缩略图" } \ No newline at end of file diff --git a/public/language/zh-CN/user.json b/public/language/zh-CN/user.json index 2606315658..088e7d3668 100644 --- a/public/language/zh-CN/user.json +++ b/public/language/zh-CN/user.json @@ -142,10 +142,10 @@ "follow-topics-you-create": "关注您创建的主题", "grouptitle": "用户组称号", "group-order-help": "选择群组然后使用箭头排列称号", - "show-group-title": "Show group title", - "hide-group-title": "Hide group title", - "order-group-up": "Order group up", - "order-group-down": "Order group down", + "show-group-title": "显示群组标题", + "hide-group-title": "隐藏群组标题", + "order-group-up": "用户组上移", + "order-group-down": "用户组下移", "no-group-title": "不展示群组称号", "select-skin": "选择皮肤", "default": "默认(%1)", From 8f9ac5c17a87ef0583a489a6a2025a9eb227ab32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Thu, 28 Mar 2024 16:50:56 -0400 Subject: [PATCH 051/168] feat: move all user profile pics to folder, closes #12449 (#12450) * feat: move all user profile pics to folder get rid of glob delete and just delete the uid-{uid} folder when deleting user images * when exporting user uploads add all profile uploads * uid check --- src/api/users.js | 6 +- src/upgrades/3.8.0/user-upload-folders.js | 86 +++++++++++++++++++++++ src/user/delete.js | 4 +- src/user/jobs/export-uploads.js | 10 +-- src/user/picture.js | 10 +-- 5 files changed, 99 insertions(+), 17 deletions(-) create mode 100644 src/upgrades/3.8.0/user-upload-folders.js diff --git a/src/api/users.js b/src/api/users.js index febcf290e6..da9ea1a489 100644 --- a/src/api/users.js +++ b/src/api/users.js @@ -18,8 +18,7 @@ const plugins = require('../plugins'); const events = require('../events'); const translator = require('../translator'); const sockets = require('../socket.io'); - -// const api = require('.'); +const utils = require('../utils'); const usersAPI = module.exports; @@ -686,6 +685,9 @@ usersAPI.generateExport = async (caller, { uid, type }) => { if (!validTypes.includes(type)) { throw new Error('[[error:invalid-data]]'); } + if (!utils.isNumber(uid) || !(parseInt(uid, 10) > 0)) { + throw new Error('[[error:invalid-uid]]'); + } const count = await db.incrObjectField('locks', `export:${uid}${type}`); if (count > 1) { throw new Error('[[error:already-exporting]]'); diff --git a/src/upgrades/3.8.0/user-upload-folders.js b/src/upgrades/3.8.0/user-upload-folders.js new file mode 100644 index 0000000000..826bf62c32 --- /dev/null +++ b/src/upgrades/3.8.0/user-upload-folders.js @@ -0,0 +1,86 @@ +'use strict'; + + +const fs = require('fs'); +const nconf = require('nconf'); +const path = require('path'); +const { mkdirp } = require('mkdirp'); + +const db = require('../../database'); +const batch = require('../../batch'); + + +module.exports = { + name: 'Create user upload folders', + timestamp: Date.UTC(2024, 4, 28), + method: async function () { + const { progress } = this; + + const folder = path.join(nconf.get('upload_path'), 'profile'); + + const userPicRegex = /^\d+-profile/; + const files = (await fs.promises.readdir(folder, { withFileTypes: true })) + .filter(item => !item.isDirectory() && String(item.name).match(userPicRegex)) + .map(item => item.name); + + progress.total = files.length; + await batch.processArray(files, async (files) => { + progress.incr(files.length); + await Promise.all(files.map(async (file) => { + const uid = file.split('-')[0]; + if (parseInt(uid, 10) > 0) { + await mkdirp(path.join(folder, `uid-${uid}`)); + await fs.promises.rename( + path.join(folder, file), + path.join(folder, `uid-${uid}`, file), + ); + } + })); + }, { + batch: 500, + }); + + await batch.processSortedSet('users:joindate', async (uids) => { + progress.incr(uids.length); + const usersData = await db.getObjects(uids.map(uid => `user:${uid}`)); + const bulkSet = []; + usersData.forEach((userData) => { + const setObj = {}; + if (userData && userData.picture && + userData.picture.includes(`/uploads/profile/${userData.uid}-`) && + !userData.picture.includes(`/uploads/profile/uid-${userData.uid}/${userData.uid}-`)) { + setObj.picture = userData.picture.replace( + `/uploads/profile/${userData.uid}-`, + `/uploads/profile/uid-${userData.uid}/${userData.uid}-` + ); + } + + if (userData && userData.uploadedpicture && + userData.uploadedpicture.includes(`/uploads/profile/${userData.uid}-`) && + !userData.uploadedpicture.includes(`/uploads/profile/uid-${userData.uid}/${userData.uid}-`)) { + setObj.uploadedpicture = userData.uploadedpicture.replace( + `/uploads/profile/${userData.uid}-`, + `/uploads/profile/uid-${userData.uid}/${userData.uid}-` + ); + } + + if (userData && userData['cover:url'] && + userData['cover:url'].includes(`/uploads/profile/${userData.uid}-`) && + !userData['cover:url'].includes(`/uploads/profile/uid-${userData.uid}/${userData.uid}-`)) { + setObj['cover:url'] = userData['cover:url'].replace( + `/uploads/profile/${userData.uid}-`, + `/uploads/profile/uid-${userData.uid}/${userData.uid}-` + ); + } + + if (Object.keys(setObj).length) { + bulkSet.push([`user:${userData.uid}`, setObj]); + } + }); + await db.setObjectBulk(bulkSet); + }, { + batch: 500, + progress: progress, + }); + }, +}; diff --git a/src/user/delete.js b/src/user/delete.js index 681eabeec1..9efd8802ae 100644 --- a/src/user/delete.js +++ b/src/user/delete.js @@ -227,7 +227,7 @@ module.exports = function (User) { } async function deleteImages(uid) { - const folder = path.join(nconf.get('upload_path'), 'profile'); - await rimraf(`${uid}-profile{avatar,cover}*`, { glob: { cwd: folder } }); + const folder = path.join(nconf.get('upload_path'), 'profile', `uid-${uid}`); + await rimraf(folder); } }; diff --git a/src/user/jobs/export-uploads.js b/src/user/jobs/export-uploads.js index a3bc097a49..89c623211e 100644 --- a/src/user/jobs/export-uploads.js +++ b/src/user/jobs/export-uploads.js @@ -74,14 +74,8 @@ process.on('message', async (msg) => { winston.verbose(`[user/export/uploads] Collating uploads for uid ${targetUid}`); await user.collateUploads(targetUid, archive); - const uploadedPicture = await user.getUserField(targetUid, 'uploadedpicture'); - if (uploadedPicture) { - const filePath = uploadedPicture.replace(nconf.get('upload_url'), ''); - archive.file(path.join(nconf.get('upload_path'), filePath), { - name: path.basename(filePath), - }); - } - + const profileUploadPath = path.join(nconf.get('upload_path'), `profile/uid-${targetUid}`); + archive.directory(profileUploadPath, 'profile'); archive.finalize(); } }); diff --git a/src/user/picture.js b/src/user/picture.js index d3d2a22f68..fbff7fd225 100644 --- a/src/user/picture.js +++ b/src/user/picture.js @@ -50,7 +50,7 @@ module.exports = function (User) { const extension = file.typeToExtension(image.mimeFromBase64(data.imageData)); const filename = `${data.uid}-profilecover-${Date.now()}${extension}`; - const uploadData = await image.uploadImage(filename, 'profile', picture); + const uploadData = await image.uploadImage(filename, `profile/uid-${data.uid}`, picture); await deleteCurrentPicture(data.uid, 'cover:url'); await User.setUserField(data.uid, 'cover:url', uploadData.url); @@ -96,7 +96,7 @@ module.exports = function (User) { }); const filename = generateProfileImageFilename(data.uid, extension); - const uploadedImage = await image.uploadImage(filename, 'profile', { + const uploadedImage = await image.uploadImage(filename, `profile/uid-${data.uid}`, { uid: data.uid, path: newPath, name: 'profileAvatar', @@ -140,7 +140,7 @@ module.exports = function (User) { }); const filename = generateProfileImageFilename(data.uid, extension); - const uploadedImage = await image.uploadImage(filename, 'profile', picture); + const uploadedImage = await image.uploadImage(filename, `profile/uid-${data.uid}`, picture); await deleteCurrentPicture(data.uid, 'uploadedpicture'); await User.updateProfile(data.callerUid, { @@ -224,10 +224,10 @@ module.exports = function (User) { async function getPicturePath(uid, field) { const value = await User.getUserField(uid, field); - if (!value || !value.startsWith(`${nconf.get('relative_path')}/assets/uploads/profile/`)) { + if (!value || !value.startsWith(`${nconf.get('relative_path')}/assets/uploads/profile/uid-${uid}`)) { return false; } const filename = value.split('/').pop(); - return path.join(nconf.get('upload_path'), 'profile', filename); + return path.join(nconf.get('upload_path'), `profile/uid-${uid}`, filename); } }; From deacf36645f89be37e3e7261684dfcc5b1eb6255 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 30 Mar 2024 10:17:12 -0400 Subject: [PATCH 052/168] fix(deps): update dependency ace-builds to v1.32.9 (#12451) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index e854ca5e18..37006a102e 100644 --- a/install/package.json +++ b/install/package.json @@ -34,7 +34,7 @@ "@fortawesome/fontawesome-free": "6.5.1", "@isaacs/ttlcache": "1.4.1", "@popperjs/core": "2.11.8", - "ace-builds": "1.32.8", + "ace-builds": "1.32.9", "archiver": "7.0.1", "async": "3.2.5", "autoprefixer": "10.4.19", From af10aaaac39a33cf96d991b4a27d62cc0678f55e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 1 Apr 2024 12:27:09 -0400 Subject: [PATCH 053/168] fix(deps): update dependency pg-cursor to v2.10.4 (#12456) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 37006a102e..0c2ff5cead 100644 --- a/install/package.json +++ b/install/package.json @@ -114,7 +114,7 @@ "passport-http-bearer": "1.0.1", "passport-local": "1.0.0", "pg": "8.11.3", - "pg-cursor": "2.10.3", + "pg-cursor": "2.10.4", "postcss": "8.4.38", "postcss-clean": "1.2.0", "progress-webpack-plugin": "1.0.16", From 5c214930a809cd2b16aa70d061da844e6894bb33 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 1 Apr 2024 12:27:31 -0400 Subject: [PATCH 054/168] fix(deps): update dependency @fontsource/poppins to v5.0.13 (#12457) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 0c2ff5cead..cb06928fab 100644 --- a/install/package.json +++ b/install/package.json @@ -30,7 +30,7 @@ "dependencies": { "@adactive/bootstrap-tagsinput": "0.8.2", "@fontsource/inter": "5.0.17", - "@fontsource/poppins": "5.0.12", + "@fontsource/poppins": "5.0.13", "@fortawesome/fontawesome-free": "6.5.1", "@isaacs/ttlcache": "1.4.1", "@popperjs/core": "2.11.8", From 73f985684c45a769413636dac65e42e2e521ae87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Mon, 1 Apr 2024 18:17:00 -0400 Subject: [PATCH 055/168] fix: date on upgrade script --- src/upgrades/3.8.0/user-upload-folders.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/upgrades/3.8.0/user-upload-folders.js b/src/upgrades/3.8.0/user-upload-folders.js index 826bf62c32..5be9990a06 100644 --- a/src/upgrades/3.8.0/user-upload-folders.js +++ b/src/upgrades/3.8.0/user-upload-folders.js @@ -12,7 +12,7 @@ const batch = require('../../batch'); module.exports = { name: 'Create user upload folders', - timestamp: Date.UTC(2024, 4, 28), + timestamp: Date.UTC(2024, 2, 28), method: async function () { const { progress } = this; From 4030f18a0432ffc17d887d739bcfafb1b6a75509 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Mon, 1 Apr 2024 18:19:58 -0400 Subject: [PATCH 056/168] feat: closes #12453, filter events by user/group --- .../language/en-GB/admin/advanced/events.json | 4 + public/src/admin/advanced/events.js | 17 ++- src/cli/manage.js | 6 +- src/controllers/admin/events.js | 29 ++++- src/events.js | 114 ++++++++++++++++-- src/upgrades/3.8.0/events-uid-filter.js | 31 +++++ src/views/admin/advanced/events.tpl | 8 ++ test/socket.io.js | 4 +- 8 files changed, 191 insertions(+), 22 deletions(-) create mode 100644 src/upgrades/3.8.0/events-uid-filter.js diff --git a/public/language/en-GB/admin/advanced/events.json b/public/language/en-GB/admin/advanced/events.json index 9327eef8d3..a249bb9721 100644 --- a/public/language/en-GB/admin/advanced/events.json +++ b/public/language/en-GB/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Event Type", "filter-start": "Start Date", "filter-end": "End Date", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Per Page" } \ No newline at end of file diff --git a/public/src/admin/advanced/events.js b/public/src/admin/advanced/events.js index 112c76f985..ecf494bf31 100644 --- a/public/src/admin/advanced/events.js +++ b/public/src/admin/advanced/events.js @@ -1,7 +1,7 @@ 'use strict'; -define('admin/advanced/events', ['bootbox', 'alerts'], function (bootbox, alerts) { +define('admin/advanced/events', ['bootbox', 'alerts', 'autocomplete'], function (bootbox, alerts, autocomplete) { const Events = {}; Events.init = function () { @@ -30,6 +30,21 @@ define('admin/advanced/events', ['bootbox', 'alerts'], function (bootbox, alerts }); }); + $('#user-group-select').on('change', function () { + const val = $(this).val(); + $('#username').toggleClass('hidden', val !== 'username'); + if (val !== 'username') { + $('#username').val(''); + } + $('#group').toggleClass('hidden', val !== 'group'); + if (val !== 'group') { + $('#group').val(''); + } + }); + + autocomplete.user($('#username')); + autocomplete.group($('#group')); + $('#apply').on('click', Events.refresh); }; diff --git a/src/cli/manage.js b/src/cli/manage.js index f69c786680..82472d115e 100644 --- a/src/cli/manage.js +++ b/src/cli/manage.js @@ -130,7 +130,11 @@ async function listPlugins() { async function listEvents(count = 10) { await db.init(); - const eventData = await events.getEvents('', 0, count - 1); + const eventData = await events.getEvents({ + filter: '', + start: 0, + stop: count - 1, + }); console.log(chalk.bold(`\nDisplaying last ${count} administrative events...`)); eventData.forEach((event) => { console.log(` * ${chalk.green(String(event.timestampISO))} ${chalk.yellow(String(event.type))}${event.text ? ` ${event.text}` : ''} (uid: ${event.uid ? event.uid : 0})`); diff --git a/src/controllers/admin/events.js b/src/controllers/admin/events.js index 3d59892090..bc94437975 100644 --- a/src/controllers/admin/events.js +++ b/src/controllers/admin/events.js @@ -3,6 +3,8 @@ const db = require('../../database'); const events = require('../../events'); const pagination = require('../../pagination'); +const user = require('../../user'); +const groups = require('../../groups'); const eventsController = module.exports; @@ -11,18 +13,35 @@ eventsController.get = async function (req, res) { const itemsPerPage = parseInt(req.query.perPage, 10) || 20; const start = (page - 1) * itemsPerPage; const stop = start + itemsPerPage - 1; + let uids; + if (req.query.username) { + uids = [await user.getUidByUsername(req.query.username)]; + } else if (req.query.group) { + uids = await groups.getMembers(req.query.group, 0, -1); + } // Limit by date let from = req.query.start ? new Date(req.query.start) || undefined : undefined; let to = req.query.end ? new Date(req.query.end) || undefined : new Date(); - from = from && from.setHours(0, 0, 0, 0); // setHours returns a unix timestamp (Number, not Date) - to = to && to.setHours(23, 59, 59, 999); // setHours returns a unix timestamp (Number, not Date) + from = from && from.setUTCHours(0, 0, 0, 0); // setHours returns a unix timestamp (Number, not Date) + to = to && to.setUTCHours(23, 59, 59, 999); // setHours returns a unix timestamp (Number, not Date) const currentFilter = req.query.type || ''; - const [eventCount, eventData, counts] = await Promise.all([ - db.sortedSetCount(`events:time${currentFilter ? `:${currentFilter}` : ''}`, from || '-inf', to), - events.getEvents(currentFilter, start, stop, from || '-inf', to), + events.getEventCount({ + filter: currentFilter, + uids, + from: from || '-inf', + to, + }), + events.getEvents({ + filter: currentFilter, + uids, + start, + stop, + from: from || '-inf', + to, + }), db.sortedSetsCard([''].concat(events.types).map(type => `events:time${type ? `:${type}` : ''}`)), ]); diff --git a/src/events.js b/src/events.js index 7329aa486e..41e1f0d29b 100644 --- a/src/events.js +++ b/src/events.js @@ -87,30 +87,114 @@ events.log = async function (data) { const eid = await db.incrObjectField('global', 'nextEid'); data.timestamp = Date.now(); data.eid = eid; - + const setKeys = [ + 'events:time', + `events:time:${data.type}`, + ]; + if (data.hasOwnProperty('uid') && data.uid) { + setKeys.push(`events:time:uid:${data.uid}`); + } await Promise.all([ - db.sortedSetsAdd([ - 'events:time', - `events:time:${data.type}`, - ], data.timestamp, eid), + db.sortedSetsAdd(setKeys, data.timestamp, eid), db.setObject(`event:${eid}`, data), ]); plugins.hooks.fire('action:events.log', { data: data }); }; -events.getEvents = async function (filter, start, stop, from, to) { - // from/to optional - if (from === undefined) { - from = '-inf'; +// filter, start, stop, from(optional), to(optional), uids(optional) +events.getEvents = async function (options) { + // backwards compatibility + if (arguments.length > 1) { + // eslint-disable-next-line prefer-rest-params + const args = Array.prototype.slice.call(arguments); + options = { + filter: args[0], + start: args[1], + stop: args[2], + from: args[3], + to: args[4], + }; } - if (to === undefined) { - to = '+inf'; + // from/to optional + const from = options.hasOwnProperty('from') ? options.from : '-inf'; + const to = options.hasOwnProperty('to') ? options.to : '+inf'; + const { filter, start, stop, uids } = options; + let eids = []; + + if (Array.isArray(uids)) { + if (filter === '') { + eids = await db.getSortedSetRevRangeByScore( + uids.map(uid => `events:time:uid:${uid}`), + start, + stop === -1 ? -1 : stop - start + 1, + to, + from + ); + } else { + eids = await Promise.all( + uids.map( + uid => db.getSortedSetRevIntersect({ + sets: [`events:time:uid:${uid}`, `events:time:${filter}`], + start: 0, + stop: -1, + weights: [1, 0], + withScores: true, + }) + ) + ); + + eids = _.flatten(eids) + .filter( + i => (from === '-inf' || i.score >= from) && (to === '+inf' || i.score <= to) + ) + .sort((a, b) => b.score - a.score) + .slice(start, stop + 1) + .map(i => i.value); + } + } else { + eids = await db.getSortedSetRevRangeByScore( + `events:time${filter ? `:${filter}` : ''}`, + start, + stop === -1 ? -1 : stop - start + 1, + to, + from + ); } - const eids = await db.getSortedSetRevRangeByScore(`events:time${filter ? `:${filter}` : ''}`, start, stop === -1 ? -1 : stop - start + 1, to, from); return await events.getEventsByEventIds(eids); }; +events.getEventCount = async (options) => { + const { filter, uids, from, to } = options; + + if (Array.isArray(uids)) { + if (filter === '') { + const counts = await Promise.all( + uids.map(uid => db.sortedSetCount(`events:time:uid:${uid}`, from, to)) + ); + return counts.reduce((prev, cur) => prev + cur, 0); + } + + const eids = await Promise.all( + uids.map( + uid => db.getSortedSetRevIntersect({ + sets: [`events:time:uid:${uid}`, `events:time:${filter}`], + start: 0, + stop: -1, + weights: [1, 0], + withScores: true, + }) + ) + ); + + return _.flatten(eids).filter( + i => (from === '-inf' || i.score >= from) && (to === '+inf' || i.score <= to) + ).length; + } + + return await db.sortedSetCount(`events:time${filter ? `:${filter}` : ''}`, from || '-inf', to); +}; + events.getEventsByEventIds = async (eids) => { let eventsData = await db.getObjects(eids.map(eid => `event:${eid}`)); eventsData = eventsData.filter(Boolean); @@ -163,7 +247,11 @@ async function addUserData(eventsData, field, objectName) { events.deleteEvents = async function (eids) { const keys = eids.map(eid => `event:${eid}`); const eventData = await db.getObjectsFields(keys, ['type']); - const sets = _.uniq(['events:time'].concat(eventData.map(e => `events:time:${e.type}`))); + const sets = _.uniq( + ['events:time'] + .concat(eventData.map(e => `events:time:${e.type}`)) + .concat(eventData.map(e => `events:time:uid:${e.uid}`)) + ); await Promise.all([ db.deleteAll(keys), db.sortedSetRemove(sets, eids), diff --git a/src/upgrades/3.8.0/events-uid-filter.js b/src/upgrades/3.8.0/events-uid-filter.js new file mode 100644 index 0000000000..f9a2d5b6a2 --- /dev/null +++ b/src/upgrades/3.8.0/events-uid-filter.js @@ -0,0 +1,31 @@ +/* eslint-disable no-await-in-loop */ + +'use strict'; + +const db = require('../../database'); +const batch = require('../../batch'); + +module.exports = { + name: 'Add user filter to acp events', + timestamp: Date.UTC(2024, 3, 1), + method: async function () { + const { progress } = this; + + await batch.processSortedSet(`events:time`, async (eids) => { + const eventData = await db.getObjects(eids.map(eid => `event:${eid}`)); + const bulkAdd = []; + eventData.forEach((event) => { + if (event && event.hasOwnProperty('uid') && event.uid && event.eid) { + bulkAdd.push( + [`events:time:uid:${event.uid}`, event.timestamp || Date.now(), event.eid] + ); + } + }); + await db.sortedSetAddBulk(bulkAdd); + progress.incr(eids.length); + }, { + batch: 500, + progress, + }); + }, +}; diff --git a/src/views/admin/advanced/events.tpl b/src/views/admin/advanced/events.tpl index 0eafb03749..f20eca0547 100644 --- a/src/views/admin/advanced/events.tpl +++ b/src/views/admin/advanced/events.tpl @@ -50,6 +50,14 @@
+
+ + + +
diff --git a/test/socket.io.js b/test/socket.io.js index c2a0a68ad6..eacab90ac5 100644 --- a/test/socket.io.js +++ b/test/socket.io.js @@ -687,7 +687,7 @@ describe('socket.io', () => { await socketUser.reset.send({ uid: 0 }, 'regular@test.com'); const [count, eventsData] = await Promise.all([ db.sortedSetCount('reset:issueDate', 0, Date.now()), - events.getEvents('', 0, 0), + events.getEvents({ filter: '', start: 0, stop: 0 }), ]); assert.strictEqual(count, 2); @@ -705,7 +705,7 @@ describe('socket.io', () => { ); const [count, eventsData] = await Promise.all([ db.sortedSetCount('reset:issueDate', 0, Date.now()), - events.getEvents('', 0, 0), + events.getEvents({ filter: '', start: 0, stop: 0 }), ]); assert.strictEqual(count, 2); From 213db951fda643eb8a84a6a6f76d06d44ee19a00 Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Mon, 1 Apr 2024 22:20:22 +0000 Subject: [PATCH 057/168] chore(i18n): fallback strings for new resources: nodebb.admin-advanced-events --- public/language/ar/admin/advanced/events.json | 4 ++++ public/language/bg/admin/advanced/events.json | 4 ++++ public/language/bn/admin/advanced/events.json | 4 ++++ public/language/cs/admin/advanced/events.json | 4 ++++ public/language/da/admin/advanced/events.json | 4 ++++ public/language/de/admin/advanced/events.json | 4 ++++ public/language/el/admin/advanced/events.json | 4 ++++ public/language/en-US/admin/advanced/events.json | 4 ++++ public/language/en-x-pirate/admin/advanced/events.json | 4 ++++ public/language/es/admin/advanced/events.json | 4 ++++ public/language/et/admin/advanced/events.json | 4 ++++ public/language/fa-IR/admin/advanced/events.json | 4 ++++ public/language/fi/admin/advanced/events.json | 4 ++++ public/language/fr/admin/advanced/events.json | 4 ++++ public/language/gl/admin/advanced/events.json | 4 ++++ public/language/he/admin/advanced/events.json | 4 ++++ public/language/hr/admin/advanced/events.json | 4 ++++ public/language/hu/admin/advanced/events.json | 4 ++++ public/language/hy/admin/advanced/events.json | 4 ++++ public/language/id/admin/advanced/events.json | 4 ++++ public/language/it/admin/advanced/events.json | 4 ++++ public/language/ja/admin/advanced/events.json | 4 ++++ public/language/ko/admin/advanced/events.json | 4 ++++ public/language/lt/admin/advanced/events.json | 4 ++++ public/language/lv/admin/advanced/events.json | 4 ++++ public/language/ms/admin/advanced/events.json | 4 ++++ public/language/nb/admin/advanced/events.json | 4 ++++ public/language/nl/admin/advanced/events.json | 4 ++++ public/language/pl/admin/advanced/events.json | 4 ++++ public/language/pt-BR/admin/advanced/events.json | 4 ++++ public/language/pt-PT/admin/advanced/events.json | 4 ++++ public/language/ro/admin/advanced/events.json | 4 ++++ public/language/ru/admin/advanced/events.json | 4 ++++ public/language/rw/admin/advanced/events.json | 4 ++++ public/language/sc/admin/advanced/events.json | 4 ++++ public/language/sk/admin/advanced/events.json | 4 ++++ public/language/sl/admin/advanced/events.json | 4 ++++ public/language/sq-AL/admin/advanced/events.json | 4 ++++ public/language/sr/admin/advanced/events.json | 4 ++++ public/language/sv/admin/advanced/events.json | 4 ++++ public/language/th/admin/advanced/events.json | 4 ++++ public/language/tr/admin/advanced/events.json | 4 ++++ public/language/uk/admin/advanced/events.json | 4 ++++ public/language/vi/admin/advanced/events.json | 4 ++++ public/language/zh-CN/admin/advanced/events.json | 4 ++++ public/language/zh-TW/admin/advanced/events.json | 4 ++++ 46 files changed, 184 insertions(+) diff --git a/public/language/ar/admin/advanced/events.json b/public/language/ar/admin/advanced/events.json index 0b785ae80c..9bf019eb74 100644 --- a/public/language/ar/admin/advanced/events.json +++ b/public/language/ar/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "نوع الحدث", "filter-start": "تاريخ البدء", "filter-end": "تاريخ الانتهاء", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "لكل صفحة" } \ No newline at end of file diff --git a/public/language/bg/admin/advanced/events.json b/public/language/bg/admin/advanced/events.json index 9cfaddd583..cb6aee4a10 100644 --- a/public/language/bg/admin/advanced/events.json +++ b/public/language/bg/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Вид събитие", "filter-start": "Начална дата", "filter-end": "Крайна дата", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "На страница" } \ No newline at end of file diff --git a/public/language/bn/admin/advanced/events.json b/public/language/bn/admin/advanced/events.json index 9327eef8d3..a249bb9721 100644 --- a/public/language/bn/admin/advanced/events.json +++ b/public/language/bn/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Event Type", "filter-start": "Start Date", "filter-end": "End Date", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Per Page" } \ No newline at end of file diff --git a/public/language/cs/admin/advanced/events.json b/public/language/cs/admin/advanced/events.json index 2ac368b809..19d44ec316 100644 --- a/public/language/cs/admin/advanced/events.json +++ b/public/language/cs/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Typ události", "filter-start": "Datum začátku", "filter-end": "Datum konce", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Na stránku" } \ No newline at end of file diff --git a/public/language/da/admin/advanced/events.json b/public/language/da/admin/advanced/events.json index ab141028f4..507b5d852c 100644 --- a/public/language/da/admin/advanced/events.json +++ b/public/language/da/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Event Type", "filter-start": "Start Date", "filter-end": "End Date", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Per Page" } \ No newline at end of file diff --git a/public/language/de/admin/advanced/events.json b/public/language/de/admin/advanced/events.json index 70f60c38dc..bd966b32ca 100644 --- a/public/language/de/admin/advanced/events.json +++ b/public/language/de/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Ereignistyp", "filter-start": "Anfangsdatum", "filter-end": "Enddatum", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Pro Seite" } \ No newline at end of file diff --git a/public/language/el/admin/advanced/events.json b/public/language/el/admin/advanced/events.json index 9327eef8d3..a249bb9721 100644 --- a/public/language/el/admin/advanced/events.json +++ b/public/language/el/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Event Type", "filter-start": "Start Date", "filter-end": "End Date", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Per Page" } \ No newline at end of file diff --git a/public/language/en-US/admin/advanced/events.json b/public/language/en-US/admin/advanced/events.json index 9327eef8d3..a249bb9721 100644 --- a/public/language/en-US/admin/advanced/events.json +++ b/public/language/en-US/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Event Type", "filter-start": "Start Date", "filter-end": "End Date", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Per Page" } \ No newline at end of file diff --git a/public/language/en-x-pirate/admin/advanced/events.json b/public/language/en-x-pirate/admin/advanced/events.json index 9327eef8d3..a249bb9721 100644 --- a/public/language/en-x-pirate/admin/advanced/events.json +++ b/public/language/en-x-pirate/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Event Type", "filter-start": "Start Date", "filter-end": "End Date", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Per Page" } \ No newline at end of file diff --git a/public/language/es/admin/advanced/events.json b/public/language/es/admin/advanced/events.json index cd9474c5a5..70f60ef2e2 100644 --- a/public/language/es/admin/advanced/events.json +++ b/public/language/es/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Tipo de evento", "filter-start": "Fecha de inicio", "filter-end": "Fecha fin", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "por página" } \ No newline at end of file diff --git a/public/language/et/admin/advanced/events.json b/public/language/et/admin/advanced/events.json index 912b9e8e4d..83ca085438 100644 --- a/public/language/et/admin/advanced/events.json +++ b/public/language/et/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Event Type", "filter-start": "Start Date", "filter-end": "End Date", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Per Page" } \ No newline at end of file diff --git a/public/language/fa-IR/admin/advanced/events.json b/public/language/fa-IR/admin/advanced/events.json index 98f7b5c69a..f2488c1306 100644 --- a/public/language/fa-IR/admin/advanced/events.json +++ b/public/language/fa-IR/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Event Type", "filter-start": "Start Date", "filter-end": "End Date", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Per Page" } \ No newline at end of file diff --git a/public/language/fi/admin/advanced/events.json b/public/language/fi/admin/advanced/events.json index 9699faf2d0..a90b76b12b 100644 --- a/public/language/fi/admin/advanced/events.json +++ b/public/language/fi/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Tapahtuman tyyppi", "filter-start": "Aloituspäivä", "filter-end": "Lopetuspäivä", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Sivulla" } \ No newline at end of file diff --git a/public/language/fr/admin/advanced/events.json b/public/language/fr/admin/advanced/events.json index 65af7c70a8..f7e2f944bb 100644 --- a/public/language/fr/admin/advanced/events.json +++ b/public/language/fr/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Évènements", "filter-start": "Date de début", "filter-end": "Date de fin", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Par page" } \ No newline at end of file diff --git a/public/language/gl/admin/advanced/events.json b/public/language/gl/admin/advanced/events.json index 9327eef8d3..a249bb9721 100644 --- a/public/language/gl/admin/advanced/events.json +++ b/public/language/gl/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Event Type", "filter-start": "Start Date", "filter-end": "End Date", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Per Page" } \ No newline at end of file diff --git a/public/language/he/admin/advanced/events.json b/public/language/he/admin/advanced/events.json index baac86f2d6..1daa86a765 100644 --- a/public/language/he/admin/advanced/events.json +++ b/public/language/he/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "סוג אירוע", "filter-start": "מתאריך", "filter-end": "עד תאריך", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "פריטים בכל דף" } \ No newline at end of file diff --git a/public/language/hr/admin/advanced/events.json b/public/language/hr/admin/advanced/events.json index a6896562b3..eb61430fe6 100644 --- a/public/language/hr/admin/advanced/events.json +++ b/public/language/hr/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Event Type", "filter-start": "Start Date", "filter-end": "End Date", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Per Page" } \ No newline at end of file diff --git a/public/language/hu/admin/advanced/events.json b/public/language/hu/admin/advanced/events.json index ae63ff3573..e99b036519 100644 --- a/public/language/hu/admin/advanced/events.json +++ b/public/language/hu/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Esemény típus", "filter-start": "Kezdő dátum", "filter-end": "Befejező dátum", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Oldalanként" } \ No newline at end of file diff --git a/public/language/hy/admin/advanced/events.json b/public/language/hy/admin/advanced/events.json index 7c7155341a..1e0e497766 100644 --- a/public/language/hy/admin/advanced/events.json +++ b/public/language/hy/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Իրադարձության տեսակը", "filter-start": "Մեկնարկի ամսաթիվ", "filter-end": "Ավարտի ամսաթիվ", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Մեկ էջի համար" } \ No newline at end of file diff --git a/public/language/id/admin/advanced/events.json b/public/language/id/admin/advanced/events.json index 9327eef8d3..a249bb9721 100644 --- a/public/language/id/admin/advanced/events.json +++ b/public/language/id/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Event Type", "filter-start": "Start Date", "filter-end": "End Date", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Per Page" } \ No newline at end of file diff --git a/public/language/it/admin/advanced/events.json b/public/language/it/admin/advanced/events.json index 39b1f2f802..1fb174af60 100644 --- a/public/language/it/admin/advanced/events.json +++ b/public/language/it/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Tipo evento", "filter-start": "Data d'inizio", "filter-end": "Data di fine", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Per pagina" } \ No newline at end of file diff --git a/public/language/ja/admin/advanced/events.json b/public/language/ja/admin/advanced/events.json index eec8144ea9..cde8111fca 100644 --- a/public/language/ja/admin/advanced/events.json +++ b/public/language/ja/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Event Type", "filter-start": "Start Date", "filter-end": "End Date", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Per Page" } \ No newline at end of file diff --git a/public/language/ko/admin/advanced/events.json b/public/language/ko/admin/advanced/events.json index a321faae97..d5e9738454 100644 --- a/public/language/ko/admin/advanced/events.json +++ b/public/language/ko/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "이벤트 유형", "filter-start": "시작 날짜", "filter-end": "종료 날짜", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "페이지 당" } \ No newline at end of file diff --git a/public/language/lt/admin/advanced/events.json b/public/language/lt/admin/advanced/events.json index 9327eef8d3..a249bb9721 100644 --- a/public/language/lt/admin/advanced/events.json +++ b/public/language/lt/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Event Type", "filter-start": "Start Date", "filter-end": "End Date", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Per Page" } \ No newline at end of file diff --git a/public/language/lv/admin/advanced/events.json b/public/language/lv/admin/advanced/events.json index 1e1a1ce393..5569812a85 100644 --- a/public/language/lv/admin/advanced/events.json +++ b/public/language/lv/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Event Type", "filter-start": "Start Date", "filter-end": "End Date", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Per Page" } \ No newline at end of file diff --git a/public/language/ms/admin/advanced/events.json b/public/language/ms/admin/advanced/events.json index 9327eef8d3..a249bb9721 100644 --- a/public/language/ms/admin/advanced/events.json +++ b/public/language/ms/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Event Type", "filter-start": "Start Date", "filter-end": "End Date", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Per Page" } \ No newline at end of file diff --git a/public/language/nb/admin/advanced/events.json b/public/language/nb/admin/advanced/events.json index 9327eef8d3..a249bb9721 100644 --- a/public/language/nb/admin/advanced/events.json +++ b/public/language/nb/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Event Type", "filter-start": "Start Date", "filter-end": "End Date", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Per Page" } \ No newline at end of file diff --git a/public/language/nl/admin/advanced/events.json b/public/language/nl/admin/advanced/events.json index 3c08c8484b..8ef647489e 100644 --- a/public/language/nl/admin/advanced/events.json +++ b/public/language/nl/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Event Type", "filter-start": "Start datum", "filter-end": "Eind datum", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Per pagina" } \ No newline at end of file diff --git a/public/language/pl/admin/advanced/events.json b/public/language/pl/admin/advanced/events.json index 10f00cd1ba..e8370e863f 100644 --- a/public/language/pl/admin/advanced/events.json +++ b/public/language/pl/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Typ zdarzenia", "filter-start": "Data początkowa", "filter-end": "Data końcowa", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Na stronę" } \ No newline at end of file diff --git a/public/language/pt-BR/admin/advanced/events.json b/public/language/pt-BR/admin/advanced/events.json index 8e8a5c9e10..6e96bda4e9 100644 --- a/public/language/pt-BR/admin/advanced/events.json +++ b/public/language/pt-BR/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Tipo de Evento", "filter-start": "Data de Início", "filter-end": "Data de Fim", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Por Página" } \ No newline at end of file diff --git a/public/language/pt-PT/admin/advanced/events.json b/public/language/pt-PT/admin/advanced/events.json index cf244ff23c..3e76845f53 100644 --- a/public/language/pt-PT/admin/advanced/events.json +++ b/public/language/pt-PT/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Tipo de Evento", "filter-start": "Data de Início", "filter-end": "Data de Fim", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Por Página" } \ No newline at end of file diff --git a/public/language/ro/admin/advanced/events.json b/public/language/ro/admin/advanced/events.json index 9327eef8d3..a249bb9721 100644 --- a/public/language/ro/admin/advanced/events.json +++ b/public/language/ro/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Event Type", "filter-start": "Start Date", "filter-end": "End Date", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Per Page" } \ No newline at end of file diff --git a/public/language/ru/admin/advanced/events.json b/public/language/ru/admin/advanced/events.json index 76d76ae807..f1d1c69dea 100644 --- a/public/language/ru/admin/advanced/events.json +++ b/public/language/ru/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Тип события", "filter-start": "Дата начала", "filter-end": "Дата окончания", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Записей на страницу" } \ No newline at end of file diff --git a/public/language/rw/admin/advanced/events.json b/public/language/rw/admin/advanced/events.json index 9327eef8d3..a249bb9721 100644 --- a/public/language/rw/admin/advanced/events.json +++ b/public/language/rw/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Event Type", "filter-start": "Start Date", "filter-end": "End Date", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Per Page" } \ No newline at end of file diff --git a/public/language/sc/admin/advanced/events.json b/public/language/sc/admin/advanced/events.json index 9327eef8d3..a249bb9721 100644 --- a/public/language/sc/admin/advanced/events.json +++ b/public/language/sc/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Event Type", "filter-start": "Start Date", "filter-end": "End Date", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Per Page" } \ No newline at end of file diff --git a/public/language/sk/admin/advanced/events.json b/public/language/sk/admin/advanced/events.json index dd57fa95a9..526def47bb 100644 --- a/public/language/sk/admin/advanced/events.json +++ b/public/language/sk/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Event Type", "filter-start": "Start Date", "filter-end": "End Date", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Per Page" } \ No newline at end of file diff --git a/public/language/sl/admin/advanced/events.json b/public/language/sl/admin/advanced/events.json index 896da0bd3a..094091c9a3 100644 --- a/public/language/sl/admin/advanced/events.json +++ b/public/language/sl/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Tip dogodka", "filter-start": "Začetni datum", "filter-end": "Končni datum", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Na stran" } \ No newline at end of file diff --git a/public/language/sq-AL/admin/advanced/events.json b/public/language/sq-AL/admin/advanced/events.json index 9327eef8d3..a249bb9721 100644 --- a/public/language/sq-AL/admin/advanced/events.json +++ b/public/language/sq-AL/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Event Type", "filter-start": "Start Date", "filter-end": "End Date", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Per Page" } \ No newline at end of file diff --git a/public/language/sr/admin/advanced/events.json b/public/language/sr/admin/advanced/events.json index 9327eef8d3..a249bb9721 100644 --- a/public/language/sr/admin/advanced/events.json +++ b/public/language/sr/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Event Type", "filter-start": "Start Date", "filter-end": "End Date", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Per Page" } \ No newline at end of file diff --git a/public/language/sv/admin/advanced/events.json b/public/language/sv/admin/advanced/events.json index 9327eef8d3..a249bb9721 100644 --- a/public/language/sv/admin/advanced/events.json +++ b/public/language/sv/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Event Type", "filter-start": "Start Date", "filter-end": "End Date", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Per Page" } \ No newline at end of file diff --git a/public/language/th/admin/advanced/events.json b/public/language/th/admin/advanced/events.json index 52746558d3..57efa22730 100644 --- a/public/language/th/admin/advanced/events.json +++ b/public/language/th/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Event Type", "filter-start": "Start Date", "filter-end": "End Date", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Per Page" } \ No newline at end of file diff --git a/public/language/tr/admin/advanced/events.json b/public/language/tr/admin/advanced/events.json index 4cc97c46f4..4b626ccfd7 100644 --- a/public/language/tr/admin/advanced/events.json +++ b/public/language/tr/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Aktivite türü", "filter-start": "Başlangıç zamanı", "filter-end": "Bitiş zamanı", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Sayfa Başına" } \ No newline at end of file diff --git a/public/language/uk/admin/advanced/events.json b/public/language/uk/admin/advanced/events.json index bc7a31a655..b53d8972a5 100644 --- a/public/language/uk/admin/advanced/events.json +++ b/public/language/uk/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Event Type", "filter-start": "Start Date", "filter-end": "End Date", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Per Page" } \ No newline at end of file diff --git a/public/language/vi/admin/advanced/events.json b/public/language/vi/admin/advanced/events.json index 47a1c8e065..8113569d43 100644 --- a/public/language/vi/admin/advanced/events.json +++ b/public/language/vi/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "Loại Sự Kiện", "filter-start": "Ngày Bắt Đầu", "filter-end": "Ngày Kết Thúc", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "Mỗi Trang" } \ No newline at end of file diff --git a/public/language/zh-CN/admin/advanced/events.json b/public/language/zh-CN/admin/advanced/events.json index 76ebdaffc5..b6c3eba1c4 100644 --- a/public/language/zh-CN/admin/advanced/events.json +++ b/public/language/zh-CN/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "事件类型", "filter-start": "开始时间", "filter-end": "结束时间", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "每页" } \ No newline at end of file diff --git a/public/language/zh-TW/admin/advanced/events.json b/public/language/zh-TW/admin/advanced/events.json index c801c04f18..c37ccc84e4 100644 --- a/public/language/zh-TW/admin/advanced/events.json +++ b/public/language/zh-TW/admin/advanced/events.json @@ -9,5 +9,9 @@ "filter-type": "事件類型", "filter-start": "開始時間", "filter-end": "結束時間", + "filter-user": "Filter by User", + "filter-user.placeholder": "Type user name to filter...", + "filter-group": "Filter by Group", + "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "每頁" } \ No newline at end of file From a7d9811e74a64fda0804a80c7dce1f7f1ef87bd2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 1 Apr 2024 18:20:29 -0400 Subject: [PATCH 058/168] fix(deps): update dependency pg to v8.11.4 (#12455) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index cb06928fab..7cfe9e67dc 100644 --- a/install/package.json +++ b/install/package.json @@ -113,7 +113,7 @@ "passport": "0.7.0", "passport-http-bearer": "1.0.1", "passport-local": "1.0.0", - "pg": "8.11.3", + "pg": "8.11.4", "pg-cursor": "2.10.4", "postcss": "8.4.38", "postcss-clean": "1.2.0", From 5aa72076595594993d64ea243537686157756dd4 Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Tue, 2 Apr 2024 09:19:05 +0000 Subject: [PATCH 059/168] Latest translations and fallbacks --- public/language/bg/admin/advanced/events.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/public/language/bg/admin/advanced/events.json b/public/language/bg/admin/advanced/events.json index cb6aee4a10..5bb299567f 100644 --- a/public/language/bg/admin/advanced/events.json +++ b/public/language/bg/admin/advanced/events.json @@ -9,9 +9,9 @@ "filter-type": "Вид събитие", "filter-start": "Начална дата", "filter-end": "Крайна дата", - "filter-user": "Filter by User", - "filter-user.placeholder": "Type user name to filter...", - "filter-group": "Filter by Group", - "filter-group.placeholder": "Type group name to filter...", + "filter-user": "Филтриране по потребител", + "filter-user.placeholder": "Въведете име на потребител, за да филтрирате…", + "filter-group": "Филтриране по група", + "filter-group.placeholder": "Въведете име на група, за да филтрирате…", "filter-per-page": "На страница" } \ No newline at end of file From c778f6ebdb576f450c1f5ee7ca030c6369f9e035 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Tue, 2 Apr 2024 11:44:39 -0400 Subject: [PATCH 060/168] feat: new client-side hook to allow plugins to modify relogin url --- public/src/modules/api.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/src/modules/api.js b/public/src/modules/api.js index f510586549..33268c7c99 100644 --- a/public/src/modules/api.js +++ b/public/src/modules/api.js @@ -22,9 +22,10 @@ async function call(options, callback) { return result; } catch (err) { if (err.message === 'A valid login session was not found. Please log in and try again.') { + const { url } = await fireHook('filter:admin.reauth', { url: 'login' }); return confirm('[[error:api.reauth-required]]', (ok) => { if (ok) { - ajaxify.go('login'); + ajaxify.go(url); } }); } From 4d2c95caaae6619df5259721f435957ca7141a5b Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Tue, 2 Apr 2024 11:46:11 -0400 Subject: [PATCH 061/168] fix: bump 2factor --- install/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install/package.json b/install/package.json index 7cfe9e67dc..2858235046 100644 --- a/install/package.json +++ b/install/package.json @@ -93,7 +93,7 @@ "mousetrap": "1.6.5", "multiparty": "4.2.3", "nconf": "0.12.1", - "nodebb-plugin-2factor": "7.4.0", + "nodebb-plugin-2factor": "7.5.0", "nodebb-plugin-composer-default": "10.2.33", "nodebb-plugin-dbsearch": "6.2.3", "nodebb-plugin-emoji": "5.1.13", @@ -195,4 +195,4 @@ "url": "https://github.com/barisusakli" } ] -} \ No newline at end of file +} From 4fbe4c76e0250ffb4bf2f355740d04be16acd11b Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Wed, 3 Apr 2024 09:18:54 +0000 Subject: [PATCH 062/168] Latest translations and fallbacks --- public/language/hu/admin/admin.json | 14 ++++---- .../language/hu/admin/advanced/database.json | 2 +- public/language/hu/admin/advanced/events.json | 8 ++--- public/language/hu/admin/dashboard.json | 6 ++-- public/language/hu/admin/extend/widgets.json | 6 ++-- .../language/hu/admin/manage/privileges.json | 2 +- public/language/hu/admin/manage/users.json | 36 +++++++++---------- public/language/hu/admin/settings/post.json | 6 ++-- .../hu/admin/settings/reputation.json | 12 +++---- public/language/hu/admin/settings/user.json | 16 ++++----- public/language/hu/aria.json | 12 +++---- public/language/hu/category.json | 10 +++--- public/language/hu/error.json | 12 +++---- public/language/hu/flags.json | 6 ++-- public/language/hu/global.json | 20 +++++------ public/language/hu/modules.json | 4 +-- public/language/hu/notifications.json | 10 +++--- public/language/hu/post-queue.json | 6 ++-- public/language/hu/rewards.json | 14 ++++---- public/language/hu/search.json | 2 +- public/language/hu/social.json | 4 +-- public/language/hu/tags.json | 2 +- public/language/hu/themes/harmony.json | 6 ++-- public/language/hu/topic.json | 20 +++++------ public/language/hu/unread.json | 2 +- public/language/hu/user.json | 10 +++--- public/language/it/admin/advanced/events.json | 8 ++--- 27 files changed, 128 insertions(+), 128 deletions(-) diff --git a/public/language/hu/admin/admin.json b/public/language/hu/admin/admin.json index 8248580557..9fe669de04 100644 --- a/public/language/hu/admin/admin.json +++ b/public/language/hu/admin/admin.json @@ -4,15 +4,15 @@ "acp-title": "%1 | NodeBB Adminisztrációs vezérlőpult", "settings-header-contents": "Tartalmak", - "changes-saved": "Changes Saved", - "changes-saved-message": "Your changes to the NodeBB configuration have been saved.", + "changes-saved": "Változások mentve", + "changes-saved-message": "A NodeBB konfigurációjának módosításai mentésre kerültek.", "changes-not-saved": "A változtatások nincsenek elmentve", "changes-not-saved-message": "NodeBB encountered a problem saving your changes. (%1)", - "save-changes": "Save changes", + "save-changes": "Változások mentése", "min": "Min:", "max": "Max:", - "view": "View", - "edit": "Edit", - "add": "Add", - "select-icon": "Select Icon" + "view": "Megnéz", + "edit": "Szerkeszt", + "add": "Hozzáad", + "select-icon": "Válassz ikont" } \ No newline at end of file diff --git a/public/language/hu/admin/advanced/database.json b/public/language/hu/admin/advanced/database.json index b903a088c9..cafdbc1ce6 100644 --- a/public/language/hu/admin/advanced/database.json +++ b/public/language/hu/admin/advanced/database.json @@ -17,7 +17,7 @@ "mongo.file-size": "Fájlméret", "mongo.resident-memory": "Rezidens memória", "mongo.virtual-memory": "Virtuális memória", - "mongo.mapped-memory": "Mapped Memory", + "mongo.mapped-memory": "Leképezett memória", "mongo.bytes-in": "Bejövő bájtok", "mongo.bytes-out": "Kimenő bájtok", "mongo.num-requests": "Kérések száma", diff --git a/public/language/hu/admin/advanced/events.json b/public/language/hu/admin/advanced/events.json index e99b036519..18223d80d8 100644 --- a/public/language/hu/admin/advanced/events.json +++ b/public/language/hu/admin/advanced/events.json @@ -9,9 +9,9 @@ "filter-type": "Esemény típus", "filter-start": "Kezdő dátum", "filter-end": "Befejező dátum", - "filter-user": "Filter by User", - "filter-user.placeholder": "Type user name to filter...", - "filter-group": "Filter by Group", - "filter-group.placeholder": "Type group name to filter...", + "filter-user": "Szűrés felhasználónként", + "filter-user.placeholder": "Írj be egy felhasználónevet a szűréshez...", + "filter-group": "Szűrés csoportonként", + "filter-group.placeholder": "Írj be egy csoportnevet a szűréshez...", "filter-per-page": "Oldalanként" } \ No newline at end of file diff --git a/public/language/hu/admin/dashboard.json b/public/language/hu/admin/dashboard.json index 2667ac9af7..1016b5b833 100644 --- a/public/language/hu/admin/dashboard.json +++ b/public/language/hu/admin/dashboard.json @@ -95,7 +95,7 @@ "expand-analytics": "Expand analytics", "clear-search-history": "Clear Search History", "clear-search-history-confirm": "Are you sure you want to clear entire search history?", - "search-term": "Term", - "search-count": "Count", - "view-all": "View all" + "search-term": "Feltétel", + "search-count": "Számláló", + "view-all": "Összes mutatása" } diff --git a/public/language/hu/admin/extend/widgets.json b/public/language/hu/admin/extend/widgets.json index 26f852ed3b..090f1b1996 100644 --- a/public/language/hu/admin/extend/widgets.json +++ b/public/language/hu/admin/extend/widgets.json @@ -5,7 +5,7 @@ "none-installed": "Nincs elérhető modul! Aktiváld a widget essentials beépülőt a beépülők oldalon.", "clone-from": "Modul klónozása innen", "containers.available": "Elérhető tárolók", - "containers.explanation": "Drag and drop on top of any widget", + "containers.explanation": "Húzd rá az alábbiakat bármely modulra", "containers.none": "Nincs", "container.well": "Well", "container.jumbotron": "Jumbotron", @@ -30,6 +30,6 @@ "start-date": "Start date", "end-date": "End date", "hide-on-mobile": "Elrejtés mobilon", - "hide-drafts": "Hide drafts", - "show-drafts": "Show drafts" + "hide-drafts": "Piszkozat elrejtése", + "show-drafts": "Piszkozat megjelenítése" } \ No newline at end of file diff --git a/public/language/hu/admin/manage/privileges.json b/public/language/hu/admin/manage/privileges.json index 2d7b67bb95..3ec3b259a3 100644 --- a/public/language/hu/admin/manage/privileges.json +++ b/public/language/hu/admin/manage/privileges.json @@ -8,7 +8,7 @@ "edit-privileges": "Jogosultságok szerkesztése", "select-clear-all": "Mind kiválasztása/törlése", "chat": "Csevegés", - "chat-with-privileged": "Chat with Privileged", + "chat-with-privileged": "Csevegés kivételezéssel", "upload-images": "Képek feltöltése", "upload-files": "Fájlok feltöltése", "signature": "Aláírás", diff --git a/public/language/hu/admin/manage/users.json b/public/language/hu/admin/manage/users.json index 98781e23dd..75bb4aec4a 100644 --- a/public/language/hu/admin/manage/users.json +++ b/public/language/hu/admin/manage/users.json @@ -121,27 +121,27 @@ "alerts.email-sent-to": "Meghívó email elküldve %1 részére", "alerts.x-users-found": "%1 talált felhasználó (%2 másodperc)", "alerts.select-a-single-user-to-change-email": "Select a single user to change email", - "export": "Export", - "export-users-fields-title": "Select CSV Fields", + "export": "Exportálás", + "export-users-fields-title": "Választott CSV mezők", "export-field-email": "Email", - "export-field-username": "Username", + "export-field-username": "Felhasználónév", "export-field-uid": "UID", "export-field-ip": "IP", - "export-field-joindate": "Join date", - "export-field-lastonline": "Last Online", - "export-field-lastposttime": "Last Post Time", - "export-field-reputation": "Reputation", - "export-field-postcount": "Post Count", - "export-field-topiccount": "Topic Count", - "export-field-profileviews": "Profile Views", - "export-field-followercount": "Follower Count", - "export-field-followingcount": "Following Count", - "export-field-fullname": "Full Name", - "export-field-website": "Website", - "export-field-location": "Location", - "export-field-birthday": "Birthday", - "export-field-signature": "Signature", - "export-field-aboutme": "About Me", + "export-field-joindate": "Regisztráció dátuma", + "export-field-lastonline": "Utoljára elérhető", + "export-field-lastposttime": "Utolsó hozzászólás ideje", + "export-field-reputation": "Hírnév", + "export-field-postcount": "Hozzászólások száma", + "export-field-topiccount": "Témák száma", + "export-field-profileviews": "Profil megtekintések", + "export-field-followercount": "Követők száma", + "export-field-followingcount": "Követések száma", + "export-field-fullname": "Teljes név", + "export-field-website": "Weboldal", + "export-field-location": "Lakhely", + "export-field-birthday": "Születésnap", + "export-field-signature": "Aláírás", + "export-field-aboutme": "Rólam", "export-users-started": "Felhasználók exportálása CSV formátumban. Ez eltarthat egy darabig. Értesítést fogsz kapni, ha elkészült.", "export-users-completed": "Felhasználók exportálva CSV formátumban, kattints ide a letöltéshez.", diff --git a/public/language/hu/admin/settings/post.json b/public/language/hu/admin/settings/post.json index 4fc9580d9f..e368a205ec 100644 --- a/public/language/hu/admin/settings/post.json +++ b/public/language/hu/admin/settings/post.json @@ -4,11 +4,11 @@ "sorting.post-default": "Alapértelmezett rendezés", "sorting.oldest-to-newest": "Régebbitől az újabb felé", "sorting.newest-to-oldest": "Újabbtól a régebbi felé", - "sorting.recently-replied": "Recently Replied", - "sorting.recently-created": "Recently Created", + "sorting.recently-replied": "Nemrég megválaszolt", + "sorting.recently-created": "Nemrég létrehozott", "sorting.most-votes": "Legtöbb szavazat", "sorting.most-posts": "Legtöbb hozzászólás", - "sorting.most-views": "Most Views", + "sorting.most-views": "Legtöbb Megtekintés", "sorting.topic-default": "Alapértelmezett témekör rendezés", "length": "Hozzászólás hossza", "post-queue": "Hozzászólás várólista", diff --git a/public/language/hu/admin/settings/reputation.json b/public/language/hu/admin/settings/reputation.json index 90650e75fa..d98443850e 100644 --- a/public/language/hu/admin/settings/reputation.json +++ b/public/language/hu/admin/settings/reputation.json @@ -23,12 +23,12 @@ "flags.limit-per-target": "Bizonyos dolgokat legfeljebb hányszor lehessen megjelölni", "flags.limit-per-target-placeholder": "Alapértelmezett: 0", "flags.limit-per-target-help": "Amikor egy hozzászólás vagy felhasználó több megjelölést kap, akkor minden megjelölés "jelentésnek" számít és hozzáadódik az eredeti megjelöléshez. Adj meg 0-tól eltérő értéket egy maximális jelölési szám beállításához.", - "flags.limit-post-flags-per-day": "Maximum number of times a user can flag posts in a day", - "flags.limit-post-flags-per-day-help": "Set to 0 to disable, (default: 10)", - "flags.limit-user-flags-per-day": "Maximum number of times a user can flag users in a day", - "flags.limit-user-flags-per-day-help": "Set to 0 to disable, (default: 10)", - "flags.auto-flag-on-downvote-threshold": "Number of downvotes to auto flag posts", - "flags.auto-flag-on-downvote-threshold-help": "Set to 0 to disable, (default: 0)", + "flags.limit-post-flags-per-day": "Egy felhasználó egy nap maximum hányszor jelölheti meg a hozzászólásokat", + "flags.limit-post-flags-per-day-help": "Állítsd 0-ra a tiltáshoz, (alapértelmezetten: 10)", + "flags.limit-user-flags-per-day": "Egy felhasználó egy nap maximum hányszor jelölhet meg felhasználókat", + "flags.limit-user-flags-per-day-help": "Állítsd 0-ra a tiltáshoz, (alapértelmezetten: 10)", + "flags.auto-flag-on-downvote-threshold": "Nemtetszések száma a hozzászólás automatikus megjelöléséhez", + "flags.auto-flag-on-downvote-threshold-help": "Állítsd 0-ra a tiltáshoz, (alapértelmezetten: 0)", "flags.auto-resolve-on-ban": "A felhasználó összes megjelölésének feloldása, amikor kitiltásra kerül", "flags.action-on-resolve": "Tegye a következőket, ha egy megjelölés megoldódott", "flags.action-on-reject": "Tegye a következőket, ha egy megjelölés visszautasított", diff --git a/public/language/hu/admin/settings/user.json b/public/language/hu/admin/settings/user.json index 5ebb8b5bee..49934fec5c 100644 --- a/public/language/hu/admin/settings/user.json +++ b/public/language/hu/admin/settings/user.json @@ -79,14 +79,14 @@ "follow-replied-topics": "Minden témakör követése, amire válaszoltál", "default-notification-settings": "Alapértelmezett értesítési beállítások", "categoryWatchState": "Alapértelmezett kategóriafigyelés", - "categoryWatchState.tracking": "Tracking", + "categoryWatchState.tracking": "Követés", "categoryWatchState.notwatching": "Nem megfigyelt", "categoryWatchState.ignoring": "Mellőzés", - "restrictions-new": "New User Restrictions", - "restrictions.rep-threshold": "Reputation threshold before these restrictions are lifted", - "restrictions.seconds-between-new": "Seconds between posts for new users", - "restrictions.seconds-before-new": "Seconds before a new user can make their first post", - "restrictions.seconds-edit-after-new": "Number of seconds a post remains editable for new users (set to 0 to disable)", - "restrictions.milliseconds-between-messages": "Time between chat messages for new users (ms)", - "restrictions.groups-exempt-from-new-user-restrictions": "Select groups that should be exempt from the new user restrictions" + "restrictions-new": "Új felhasználók korlátozása", + "restrictions.rep-threshold": "Szükséges hírnév szint ezen korlátozások feloldásához", + "restrictions.seconds-between-new": "Hozzászólások közötti kötelező szünet új felhasználóknak (másodpercben)", + "restrictions.seconds-before-new": "Szükséges eltelt idő, mielőtt egy új felhasználó hozzászólást írhat (másodpercben)", + "restrictions.seconds-edit-after-new": "Hány másodpercig maradjanak a hozzászólások szerkeszthetőek az új felhasználóknak (0: nincs korlátozás)", + "restrictions.milliseconds-between-messages": "Csevegési üzenetek közötti idő új felhasználóknak ezredmásodpercben", + "restrictions.groups-exempt-from-new-user-restrictions": "Válaszd ki azokat a csoportokat, amelyek mentesülnek az új felhasználói korlátozások alól." } diff --git a/public/language/hu/aria.json b/public/language/hu/aria.json index 6f023dcae0..d42435acad 100644 --- a/public/language/hu/aria.json +++ b/public/language/hu/aria.json @@ -1,8 +1,8 @@ { - "post-sort-option": "Post sort option, %1", - "topic-sort-option": "Topic sort option, %1", - "user-avatar-for": "User avatar for %1", - "user-watched-tags": "User watched tags", - "delete-upload-button": "Delete upload button", - "group-page-link-for": "Group page link for %1" + "post-sort-option": "Hozzászólás rendezés, %1", + "topic-sort-option": "Téma rendezés, %1", + "user-avatar-for": "Felhasználó avatár %1", + "user-watched-tags": "Felhasználó által figyelt címkék", + "delete-upload-button": "Feltöltő gomb törlése", + "group-page-link-for": "Csoport oldal linkje %1" } \ No newline at end of file diff --git a/public/language/hu/category.json b/public/language/hu/category.json index e58125b3f1..9779cff0aa 100644 --- a/public/language/hu/category.json +++ b/public/language/hu/category.json @@ -10,15 +10,15 @@ "watch": "Figyelés", "ignore": "Mellőzés", "watching": "Figyelés", - "tracking": "Tracking", + "tracking": "Követés", "not-watching": "Nem megfigyelt", "ignoring": "Mellőzés", - "watching.description": "Notify me of new topics.
Show topics in unread & recent", - "tracking.description": "Shows topics in unread & recent", + "watching.description": "Értesítsen az új válaszokról.
Témakör megjelenítése olvasatlanként.", + "tracking.description": "Témakörök mutatása a friss és olvasatlanok között", "not-watching.description": "Olvasatlan témakörök elrejtése, csak a friss témák mutatása", - "ignoring.description": "Do not show topics in unread & recent", + "ignoring.description": "Olvasatlan és friss témakörök elrejtése", "watching.message": "Most már figyeled ennek a kategóriának és az alkategóriáinak a frissítéseit", - "tracking.message": "You are now tracking updates from this category and all subcategories", + "tracking.message": "Most már figyeled ennek a kategóriának és az alkategóriáinak a frissítéseit", "notwatching.message": "Nem figyeled ennek a kategóriának és alkategóriáinak frissítéseit", "ignoring.message": "Nem kapsz most már frissítéseket erről a kategóriáról és az alkategóriáiról", "watched-categories": "Figyelt kategóriák", diff --git a/public/language/hu/error.json b/public/language/hu/error.json index a5f2a5190a..124ab066db 100644 --- a/public/language/hu/error.json +++ b/public/language/hu/error.json @@ -32,7 +32,7 @@ "folder-exists": "Mappa létezik", "invalid-pagination-value": "Érvénytelen lapozási érték, legalább %1 kell lennie és legfeljebb %2 -nak/nek", "username-taken": "Foglalt felhasználónév", - "email-taken": "Email address is already taken.", + "email-taken": "Ez az email cím már foglalt.", "email-nochange": "The email entered is the same as the email already on file.", "email-invited": "Ez az email cím már meg lett hívva", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", @@ -91,7 +91,7 @@ "category-not-selected": "A kategória nincs kiválasztva.", "too-many-posts": "Csak %1 másodpercenként hozhatsz létre új bejegyzést - kérlek várj egy kicsit mielőtt új bejegyzést tennél közzé", "too-many-posts-newbie": "Új felhasználóként csak egyszer készíthetsz bejegyzést %1 másodpercen belül, amíg el nem éred a %2 szintet - kérlek várj egy kicsit mielőtt új bejegyzést tennél közzé", - "too-many-posts-newbie-minutes": "As a new user, you can only post once every %1 minute(s) until you have earned %2 reputation - please wait before posting again", + "too-many-posts-newbie-minutes": "Új felhasználóként csak egyszer készíthetsz bejegyzést %1 másodpercen belül, amíg el nem éred a %2 szintet - kérlek várj egy kicsit mielőtt új bejegyzést tennél közzé", "already-posting": "Már írsz egy bejegyzést", "tag-too-short": "Kérlek hosszabb címkét adj meg. A címke legalább %1 karaktert kell, hogy tartalmazzon", "tag-too-long": "Kérlek rövidebb címkét adj meg. A címkék nem lehetnek hosszabbak %1 karakternél", @@ -184,10 +184,10 @@ "user-already-flagged": "Már megjelölted ez a felhasználót", "post-flagged-too-many-times": "Ez a bejegyzés már meg lett jelölve egy másik felhasználó által", "user-flagged-too-many-times": "Ez a felhasználó már meg lett jelölve egy másik felhasználó által", - "too-many-post-flags-per-day": "You can only flag %1 post(s) per day", - "too-many-user-flags-per-day": "You can only flag %1 user(s) per day", + "too-many-post-flags-per-day": "Naponta csak %1 bejegyzést jelölhetsz meg", + "too-many-user-flags-per-day": "Naponta csak %1 felhasználót jelölhetsz meg", "cant-flag-privileged": "Nem jelentheted be felhatalmazott felhasználókat vagy a bejegyzéseik tartalmát (moderátor/globális moderátor/adminok)", - "cant-locate-flag-report": "Cannot locate flag report", + "cant-locate-flag-report": "Bejelentés nem található", "self-vote": "Nem szavazhatsz a saját hozzászólásodra", "too-many-upvotes-today": "Naponta csak %1 alkalommal szavazhat pozitívan", "too-many-upvotes-today-user": "Egy felhasználóra naponta csak %1 alkalommal szavazhat pozitívan", @@ -221,7 +221,7 @@ "already-unblocked": "Ennek a felhasználóknak már fel van oldva a tiltása", "no-connection": "Probléma van az internet kapcsolatoddal", "socket-reconnect-failed": "Nem lehet elérni a szervert. Kattints ide az újra próbáláshoz vagy várj egy kicsit", - "invalid-plugin-id": "Invalid plugin ID", + "invalid-plugin-id": "Érvénytelen plugin ID", "plugin-not-whitelisted": "Ez a bővítmény nem telepíthető – csak olyan bővítmények telepíthetőek amiket a NodeBB Package Manager az ACP-n keresztül tud telepíteni", "plugins-set-in-configuration": "You are not allowed to change plugin state as they are defined at runtime (config.json, environmental variables or terminal arguments), please modify the configuration instead.", "theme-not-set-in-configuration": "When defining active plugins in configuration, changing themes requires adding the new theme to the list of active plugins before updating it in the ACP", diff --git a/public/language/hu/flags.json b/public/language/hu/flags.json index 3b46cc7cc4..2c38151dba 100644 --- a/public/language/hu/flags.json +++ b/public/language/hu/flags.json @@ -1,6 +1,6 @@ { "state": "Állapot", - "report": "Report", + "report": "Jelentés", "reports": "Jelentés", "first-reported": "Először jelentve", "no-flags": "Hurrá! Nincs megjelölés.", @@ -9,8 +9,8 @@ "update": "Frissítés", "updated": "Frissítve", "resolved": "Megoldva", - "report-added": "Added", - "report-rescinded": "Rescinded", + "report-added": "Hozzáadva", + "report-rescinded": "Visszavont", "target-purged": "A tartalom amire a jelölő mutat már meg lett tiszítva vagy nem létezik.", "target-aboutme-empty": "This user has no "About Me" set.", diff --git a/public/language/hu/global.json b/public/language/hu/global.json index d268ac6361..eec736ebc7 100644 --- a/public/language/hu/global.json +++ b/public/language/hu/global.json @@ -24,15 +24,15 @@ "cancel": "Cancel", "close": "Bezárás", "pagination": "Lapozás", - "pagination.previouspage": "Previous Page", - "pagination.nextpage": "Next Page", - "pagination.firstpage": "First Page", - "pagination.lastpage": "Last Page", + "pagination.previouspage": "Előző oldal", + "pagination.nextpage": "Következő oldal", + "pagination.firstpage": "Első oldal", + "pagination.lastpage": "Utolsó oldal", "pagination.out-of": "%1 / %2", "pagination.enter-index": "Ugrás a bejegyzés indexére", - "pagination.go-to-page": "Go to page", - "pagination.page-x": "Page %1", - "header.brand-logo": "Brand Logo", + "pagination.go-to-page": "Tovább az oldalra", + "pagination.page-x": "%1. oldal", + "header.brand-logo": "Logó", "header.admin": "Admin", "header.categories": "Kategóriák", "header.recent": "Legutóbbi", @@ -140,12 +140,12 @@ "edited": "Szerkesztett", "disabled": "Letiltva", "select": "Kiválaszt", - "selected": "Selected", + "selected": "Kiválasztva", "copied": "Copied", "user-search-prompt": "Írj be valamit, hogy felhasználókra keress...", "hidden": "Rejtve", "sort": "Rendezés", "actions": "Actions", - "rss-feed": "RSS Feed", - "skip-to-content": "Skip to content" + "rss-feed": "RSS Hírcsatorna", + "skip-to-content": "Ugrás a tartalomra" } \ No newline at end of file diff --git a/public/language/hu/modules.json b/public/language/hu/modules.json index 966ae38ef4..d59eab74e2 100644 --- a/public/language/hu/modules.json +++ b/public/language/hu/modules.json @@ -68,8 +68,8 @@ "chat.in-room": "Ebben a szobában", "chat.kick": "Kirúgás", "chat.show-ip": "IP cím mutatása", - "chat.copy-text": "Copy Text", - "chat.copy-link": "Copy Link", + "chat.copy-text": "Szöveg másolása", + "chat.copy-link": "Link másolása", "chat.owner": "Szoba tulajdonos", "chat.grant-rescind-ownership": "Grant/Rescind Ownership", "chat.system.user-join": "%1 has joined the room ", diff --git a/public/language/hu/notifications.json b/public/language/hu/notifications.json index 43eeda6b5e..e1398d636e 100644 --- a/public/language/hu/notifications.json +++ b/public/language/hu/notifications.json @@ -13,14 +13,14 @@ "all": "Mind", "topics": "Témakör", "tags": "Tags", - "categories": "Categories", + "categories": "Kategóriák", "replies": "Válasz", "chat": "Chat", "group-chat": "Csoport Csevegők", "public-chat": "Public Chats", "follows": "Követés", "upvote": "Kedvelés", - "awards": "Awards", + "awards": "Jutalmak", "new-flags": "Új megjelölés", "my-flags": "Hozzám társított megjelölés", "bans": "Kitiltás", @@ -56,7 +56,7 @@ "user-posted-topic-with-tag-dual": "%1 has posted a new topic with tags %2 and %3", "user-posted-topic-with-tag-triple": "%1 has posted a new topic with tags %2, %3 and %4", "user-posted-topic-with-tag-multiple": "%1 has posted a new topic with tags %2", - "user-posted-topic-in-category": "%1 has posted a new topic in %2", + "user-posted-topic-in-category": "%1 új témakört hozott létre: %2", "user-started-following-you": "%1 elkezdett követni téged.", "user-started-following-you-dual": "%1 és%2 elkezdett követni téged.", "user-started-following-you-triple": "%1, %2 and %3 started following you.", @@ -83,7 +83,7 @@ "notificationType-upvote": "Mikor valaki kedveli a hozzászólásod", "notificationType-new-topic": "Mikor egy követett felhasználód hozzászól", "notificationType-new-topic-with-tag": "When a topic is posted with a tag you follow", - "notificationType-new-topic-in-category": "When a topic is posted in a category you are watching", + "notificationType-new-topic-in-category": "Amikor egy téma a megfigyelt kategóriában jelenik meg.", "notificationType-new-reply": "Mikor egy általad figyelt témakörre válasz érkezik", "notificationType-post-edit": "Mikor egy a megfigyelt témakörön belül módosítanak egy bejegyzést", "notificationType-follow": "Mikor valaki elkezd követni téged", @@ -97,5 +97,5 @@ "notificationType-post-queue": "Mikor egy új hozzászólás várólistára kerül", "notificationType-new-post-flag": "Mikor egy hozzászólás megjelölésre kerül", "notificationType-new-user-flag": "Mikor egy felhasználó megjelölésre kerül", - "notificationType-new-reward": "When you earn a new reward" + "notificationType-new-reward": "Amikor új jutalomban részesülsz" } \ No newline at end of file diff --git a/public/language/hu/post-queue.json b/public/language/hu/post-queue.json index ae86261b30..90062aaf46 100644 --- a/public/language/hu/post-queue.json +++ b/public/language/hu/post-queue.json @@ -3,10 +3,10 @@ "post-queue": "Hozzászólási várósor", "no-queued-posts": "Nincsenek hozzászólások a bejegyzési sorban.", "no-single-post": "The topic or post you are looking for is no longer in the queue. It has likely been approved or deleted already.", - "enabling-help": "The post queue is currently disabled. To enable this feature, go to Settings → Post → Post Queue and enable Post Queue.", + "enabling-help": "A hozzászólási várólista jelenleg Letiltva. A bekapcsoláshoz menj a Beállítások → Hozzászólások → Hozzászólás várólista-hoz és engedélyezd a Hozzászólás várólistát", "back-to-list": "Vissza a bejegyzési sorhoz", - "public-intro": "If you have any queued posts, they will be shown here.", - "public-description": "This forum is configured to automatically queue posts from new accounts, pending moderator approval.
If you have queued posts awaiting approval, you will be able to see them here.", + "public-intro": "Ha vannak várakozó hozzászólások, azok itt fognak megjelenni.", + "public-description": "Ez a fórum úgy van beállítva, hogy az új felhasználók hozzászólásai várólistára kerülnek, amíg a moderátorok jóváhagyják azokat.
Ha vannak jóváhagyásra váró hozzászólásaid, akkor azokat itt láthatod.", "user": "Felhasználó", "when": "Amikor", "category": "Kategória", diff --git a/public/language/hu/rewards.json b/public/language/hu/rewards.json index f923cf1500..459e5f27b3 100644 --- a/public/language/hu/rewards.json +++ b/public/language/hu/rewards.json @@ -1,10 +1,10 @@ { - "awarded-x-reputation": "You have been awarded %1 reputation", - "awarded-group-membership": "You have been added to the group %1", + "awarded-x-reputation": "%1 hírnevet kaptál", + "awarded-group-membership": "Hozzáadtak a %1 csoporthoz.", - "essentials/user.reputation-conditional-value": "(Reputation %1 %2)", - "essentials/user.postcount-conditional-value": "(Post Count %1 %2)", - "essentials/user.lastonline-conditional-value": "(Last Online %1 %2)", - "essentials/user.joindate-conditional-value": "(Join Date %1 %2)", - "essentials/user.daysregistered-conditional-value": "(Days Registered %1 %2)" + "essentials/user.reputation-conditional-value": "(Hírnév %1 %2)", + "essentials/user.postcount-conditional-value": "(Hozzászólások %1 %2)", + "essentials/user.lastonline-conditional-value": "(Utoljára elérhető %1 %2)", + "essentials/user.joindate-conditional-value": "(Csatlakozott %1 %2)", + "essentials/user.daysregistered-conditional-value": "(%1 %2 Napja regisztrált)" } \ No newline at end of file diff --git a/public/language/hu/search.json b/public/language/hu/search.json index 699107e1f5..7c9147d1be 100644 --- a/public/language/hu/search.json +++ b/public/language/hu/search.json @@ -7,7 +7,7 @@ "in-titles": "Címekben", "in-titles-posts": "Címekben és bejegyzésekben", "in-posts": "Bejegyzésekben", - "in-bookmarks": "In bookmarks", + "in-bookmarks": "Könyvjelzőkben", "in-categories": "Kategóriákban", "in-users": "Felhasználóknál", "in-tags": "Címkékben", diff --git a/public/language/hu/social.json b/public/language/hu/social.json index 2ba690a187..b0beb0b1cf 100644 --- a/public/language/hu/social.json +++ b/public/language/hu/social.json @@ -7,6 +7,6 @@ "sign-up-with-google": "Sign up with Google", "log-in-with-facebook": "Log in with Facebook", "continue-with-facebook": "Continue with Facebook", - "sign-in-with-linkedin": "Sign in with LinkedIn", - "sign-up-with-linkedin": "Sign up with LinkedIn" + "sign-in-with-linkedin": "Belépés LinkedIn-el", + "sign-up-with-linkedin": "Regisztráció LinkedIn-el" } \ No newline at end of file diff --git a/public/language/hu/tags.json b/public/language/hu/tags.json index 519311bf72..95a122d70c 100644 --- a/public/language/hu/tags.json +++ b/public/language/hu/tags.json @@ -3,7 +3,7 @@ "no-tag-topics": "Nem létezik témakör ezzel a címkével.", "no-tags-found": "Nem találhatók címkék", "tags": "Címkék", - "enter-tags-here": "Enter tags, %1 - %2 characters.", + "enter-tags-here": "Adj hozzám címkéket %1 - %2 karakter között.", "enter-tags-here-short": "Címke megadása...", "no-tags": "Még nincsenek címkék.", "select-tags": "Címkék kiválasztása", diff --git a/public/language/hu/themes/harmony.json b/public/language/hu/themes/harmony.json index 4e75b9f716..545972cc95 100644 --- a/public/language/hu/themes/harmony.json +++ b/public/language/hu/themes/harmony.json @@ -3,17 +3,17 @@ "skins": "Skins", "collapse": "Collapse", "expand": "Expand", - "sidebar-toggle": "Sidebar Toggle", + "sidebar-toggle": "Oldalsáv kapcsoló", "login-register-to-search": "Login or register to search.", "settings.title": "Theme settings", "settings.enableQuickReply": "Enable quick reply", - "settings.enableBreadcrumbs": "Enable breadcrumbs", + "settings.enableBreadcrumbs": "Kenyérmorzsa linkek engedélyezése", "settings.centerHeaderElements": "Center header elements", "settings.mobileTopicTeasers": "Show topic teasers on mobile", "settings.stickyToolbar": "Sticky toolbar", "settings.stickyToolbar.help": "The toolbar on topic and category pages will stick to the top of the page", "settings.autohideBottombar": "Auto hide bottom bar", "settings.autohideBottombar.help": "The bottom bar on mobile view will be hidden when the page is scrolled down", - "settings.openSidebars": "Open sidebars", + "settings.openSidebars": "Oldalsáv nyitása", "settings.chatModals": "Enable chat modals" } \ No newline at end of file diff --git a/public/language/hu/topic.json b/public/language/hu/topic.json index 3a9c408503..052985eb72 100644 --- a/public/language/hu/topic.json +++ b/public/language/hu/topic.json @@ -15,7 +15,7 @@ "replies-to-this-post": "%1 válasz", "one-reply-to-this-post": "1 válasz", "last-reply-time": "Utolsó válasz", - "reply-options": "Reply options", + "reply-options": "Válasz opciók", "reply-as-topic": "Válasz témakörként", "guest-login-reply": "Lépj be a válaszoláshoz", "login-to-view": "🔒 Jelentkezz be, hogy megtekinthesd", @@ -35,7 +35,7 @@ "pinned": "Rögzített", "pinned-with-expiry": "Kitűzve eddig: %1", "scheduled": "Időzített", - "deleted": "Deleted", + "deleted": "Törölve", "moved": "Áthelyezett", "moved-from": "Áthelyezés innen %1", "copy-code": "Copy Code", @@ -182,8 +182,8 @@ "sort-by": "Rendezés", "oldest-to-newest": "Régebbiek elől", "newest-to-oldest": "Újabbak elől", - "recently-replied": "Recently Replied", - "recently-created": "Recently Created", + "recently-replied": "Nemrég megválaszolt", + "recently-created": "Nemrég létrehozott", "most-votes": "Legtöbb szavazat", "most-posts": "Legtöbb bejegyzés", "most-views": "Legtöbb Megtekintés", @@ -208,13 +208,13 @@ "last-post": "Utolsó bejegyzés", "go-to-my-next-post": "Ugrás a következő bejegyzésemre", "no-more-next-post": "Neked nincs több bejegyzésed ebben a témakörben", - "open-composer": "Open composer", + "open-composer": "Composer megnyitása", "post-quick-reply": "Gyors válasz", "navigator.index": "Bejegyzés %1 / %2", "navigator.unread": "%1 olvasatlan", - "upvote-post": "Upvote post", - "downvote-post": "Downvote post", - "post-tools": "Post tools", - "unread-posts-link": "Unread posts link", - "thumb-image": "Topic thumbnail image" + "upvote-post": "Bejegyzés kedvelése", + "downvote-post": "Bejegyzés nem kedvelése", + "post-tools": "Bejegyzés eszközök", + "unread-posts-link": "Olvasatlan bejegyzés link", + "thumb-image": "Téma bélyegkép" } \ No newline at end of file diff --git a/public/language/hu/unread.json b/public/language/hu/unread.json index 292d092bd1..a1ed4bd1a8 100644 --- a/public/language/hu/unread.json +++ b/public/language/hu/unread.json @@ -3,7 +3,7 @@ "no-unread-topics": "Nincs olvasatlan témakör.", "load-more": "További betöltése", "mark-as-read": "Megjelölés olvasottként", - "mark-as-unread": "Mark as Unread", + "mark-as-unread": "Megjelölés olvasatlanként", "selected": "Kiválasztva", "all": "Mind", "all-categories": "Minden kategória", diff --git a/public/language/hu/user.json b/public/language/hu/user.json index 909a322c52..8455aef483 100644 --- a/public/language/hu/user.json +++ b/public/language/hu/user.json @@ -1,5 +1,5 @@ { - "user-menu": "User menu", + "user-menu": "Felhasználói menü", "banned": "Kitiltva", "muted": "Némítva", "offline": "Nem elérhető", @@ -142,10 +142,10 @@ "follow-topics-you-create": "Témakör figyelése, amit létrehozol", "grouptitle": "Csoport címe", "group-order-help": "Válassz ki egy csoportot és használd a nyilakat, hogy elrendezd a címeket", - "show-group-title": "Show group title", - "hide-group-title": "Hide group title", - "order-group-up": "Order group up", - "order-group-down": "Order group down", + "show-group-title": "Csoportcím mutatása", + "hide-group-title": "Csoportcím elrejtése", + "order-group-up": "Csoport mozgatása feljebb", + "order-group-down": "Csoport mozgatása lejjebb", "no-group-title": "Nincs csoportcím", "select-skin": "Válassz egy kinézetet", "default": "Default (%1)", diff --git a/public/language/it/admin/advanced/events.json b/public/language/it/admin/advanced/events.json index 1fb174af60..9bf4a8d612 100644 --- a/public/language/it/admin/advanced/events.json +++ b/public/language/it/admin/advanced/events.json @@ -9,9 +9,9 @@ "filter-type": "Tipo evento", "filter-start": "Data d'inizio", "filter-end": "Data di fine", - "filter-user": "Filter by User", - "filter-user.placeholder": "Type user name to filter...", - "filter-group": "Filter by Group", - "filter-group.placeholder": "Type group name to filter...", + "filter-user": "Filtra per utente", + "filter-user.placeholder": "Digita il nome utente da filtrare...", + "filter-group": "Filtra per gruppo", + "filter-group.placeholder": "Digita il nome del gruppo da filtrare...", "filter-per-page": "Per pagina" } \ No newline at end of file From d24c414826c8cdb70d7635ce7f0771aa24dc4de6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 3 Apr 2024 09:34:18 -0400 Subject: [PATCH 063/168] fix(deps): update dependency nodebb-plugin-mentions to v4.4.3 (#12463) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 2858235046..58d13e8015 100644 --- a/install/package.json +++ b/install/package.json @@ -99,7 +99,7 @@ "nodebb-plugin-emoji": "5.1.13", "nodebb-plugin-emoji-android": "4.0.0", "nodebb-plugin-markdown": "12.2.6", - "nodebb-plugin-mentions": "4.4.2", + "nodebb-plugin-mentions": "4.4.3", "nodebb-plugin-ntfy": "1.7.4", "nodebb-plugin-spam-be-gone": "2.2.1", "nodebb-rewards-essentials": "1.0.0", From 1953277bca6c26a960274d8e9869779a84bf5544 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 3 Apr 2024 10:10:27 -0400 Subject: [PATCH 064/168] fix(deps): update dependency @fortawesome/fontawesome-free to v6.5.2 (#12460) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 58d13e8015..3c9742f21b 100644 --- a/install/package.json +++ b/install/package.json @@ -31,7 +31,7 @@ "@adactive/bootstrap-tagsinput": "0.8.2", "@fontsource/inter": "5.0.17", "@fontsource/poppins": "5.0.13", - "@fortawesome/fontawesome-free": "6.5.1", + "@fortawesome/fontawesome-free": "6.5.2", "@isaacs/ttlcache": "1.4.1", "@popperjs/core": "2.11.8", "ace-builds": "1.32.9", From 623ccc5386bb11975c6f21627e83efd06f48755f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 3 Apr 2024 10:10:34 -0400 Subject: [PATCH 065/168] fix(deps): update dependency pg to v8.11.5 (#12461) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 3c9742f21b..f2eaa51ece 100644 --- a/install/package.json +++ b/install/package.json @@ -113,7 +113,7 @@ "passport": "0.7.0", "passport-http-bearer": "1.0.1", "passport-local": "1.0.0", - "pg": "8.11.4", + "pg": "8.11.5", "pg-cursor": "2.10.4", "postcss": "8.4.38", "postcss-clean": "1.2.0", From dde7a498b70e51c76f969ad9fab49d8d7cfcf873 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 3 Apr 2024 10:35:05 -0400 Subject: [PATCH 066/168] fix(deps): update dependency pg-cursor to v2.10.5 (#12462) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index f2eaa51ece..1e50efcee4 100644 --- a/install/package.json +++ b/install/package.json @@ -114,7 +114,7 @@ "passport-http-bearer": "1.0.1", "passport-local": "1.0.0", "pg": "8.11.5", - "pg-cursor": "2.10.4", + "pg-cursor": "2.10.5", "postcss": "8.4.38", "postcss-clean": "1.2.0", "progress-webpack-plugin": "1.0.16", From 7a20681120bb1b35070692c7d238243eae88f176 Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Thu, 4 Apr 2024 09:18:43 +0000 Subject: [PATCH 067/168] Latest translations and fallbacks --- public/language/ko/admin/advanced/events.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/public/language/ko/admin/advanced/events.json b/public/language/ko/admin/advanced/events.json index d5e9738454..492fd6e895 100644 --- a/public/language/ko/admin/advanced/events.json +++ b/public/language/ko/admin/advanced/events.json @@ -9,9 +9,9 @@ "filter-type": "이벤트 유형", "filter-start": "시작 날짜", "filter-end": "종료 날짜", - "filter-user": "Filter by User", - "filter-user.placeholder": "Type user name to filter...", - "filter-group": "Filter by Group", - "filter-group.placeholder": "Type group name to filter...", + "filter-user": "사용자명으로 필터링", + "filter-user.placeholder": "필터링할 사용자명 입력...", + "filter-group": "그룹명으로 필터링", + "filter-group.placeholder": "필터링할 그룹명 입력...", "filter-per-page": "페이지 당" } \ No newline at end of file From 8f771b6fe6e83d14afb990a2db0555ae073d013b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 5 Apr 2024 17:38:04 -0400 Subject: [PATCH 068/168] fix(deps): update dependency sass to v1.74.1 (#12469) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 1e50efcee4..885a974ead 100644 --- a/install/package.json +++ b/install/package.json @@ -124,7 +124,7 @@ "rss": "1.2.2", "rtlcss": "4.1.1", "sanitize-html": "2.13.0", - "sass": "1.72.0", + "sass": "1.74.1", "semver": "7.6.0", "serve-favicon": "2.5.0", "sharp": "0.32.6", From 97a649e35d3a3a0a98e7b10a6d6ee2279805033a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 5 Apr 2024 17:38:19 -0400 Subject: [PATCH 069/168] chore(deps): update dependency sass-embedded to v1.74.1 (#12468) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 885a974ead..0842c00321 100644 --- a/install/package.json +++ b/install/package.json @@ -172,7 +172,7 @@ "smtp-server": "3.13.3" }, "optionalDependencies": { - "sass-embedded": "1.72.0" + "sass-embedded": "1.74.1" }, "resolutions": { "*/jquery": "3.7.1" From 1fef883ba33e39fc2767f43a2a028a37a484bb61 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 5 Apr 2024 17:38:37 -0400 Subject: [PATCH 070/168] fix(deps): update dependency nodebb-theme-harmony to v1.2.45 (#12466) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 0842c00321..155a65b02c 100644 --- a/install/package.json +++ b/install/package.json @@ -103,7 +103,7 @@ "nodebb-plugin-ntfy": "1.7.4", "nodebb-plugin-spam-be-gone": "2.2.1", "nodebb-rewards-essentials": "1.0.0", - "nodebb-theme-harmony": "1.2.44", + "nodebb-theme-harmony": "1.2.45", "nodebb-theme-lavender": "7.1.8", "nodebb-theme-peace": "2.2.4", "nodebb-theme-persona": "13.3.11", From 0f209fa49bb52765b1003e1f24e66208313e091b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 5 Apr 2024 17:38:45 -0400 Subject: [PATCH 071/168] fix(deps): update dependency nodebb-theme-persona to v13.3.12 (#12467) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 155a65b02c..6995005723 100644 --- a/install/package.json +++ b/install/package.json @@ -106,7 +106,7 @@ "nodebb-theme-harmony": "1.2.45", "nodebb-theme-lavender": "7.1.8", "nodebb-theme-peace": "2.2.4", - "nodebb-theme-persona": "13.3.11", + "nodebb-theme-persona": "13.3.12", "nodebb-widget-essentials": "7.0.15", "nodemailer": "6.9.13", "nprogress": "0.2.0", From 3d775c3e79bc523cfe20cdf2d6ae73bad2cf020f Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Sun, 7 Apr 2024 09:18:36 +0000 Subject: [PATCH 072/168] Latest translations and fallbacks --- public/language/fr/admin/dashboard.json | 2 +- public/language/fr/user.json | 4 +- .../language/th/admin/advanced/database.json | 16 ++-- public/language/th/admin/advanced/events.json | 22 ++--- public/language/th/aria.json | 12 +-- public/language/th/category.json | 30 +++---- public/language/th/email.json | 60 ++++++------- public/language/th/error.json | 86 +++++++++---------- public/language/th/login.json | 2 +- public/language/th/user.json | 38 ++++---- 10 files changed, 136 insertions(+), 136 deletions(-) diff --git a/public/language/fr/admin/dashboard.json b/public/language/fr/admin/dashboard.json index 386d0d9124..eb7bc530e3 100644 --- a/public/language/fr/admin/dashboard.json +++ b/public/language/fr/admin/dashboard.json @@ -96,6 +96,6 @@ "clear-search-history": "Effacer l'historique", "clear-search-history-confirm": "Êtes-vous sûr de vouloir effacer tout l'historique de recherche ?", "search-term": "Terme", - "search-count": "Count", + "search-count": "Nombre", "view-all": "Voir tout" } diff --git a/public/language/fr/user.json b/public/language/fr/user.json index a38cfdf87c..c50c44ca01 100644 --- a/public/language/fr/user.json +++ b/public/language/fr/user.json @@ -144,8 +144,8 @@ "group-order-help": "Sélectionner un groupe et utiliser les flèches pour organiser les titres", "show-group-title": "Afficher le titre du groupe", "hide-group-title": "Masquer le titre du groupe", - "order-group-up": "Order group up", - "order-group-down": "Order group down", + "order-group-up": "Classer vers le haut", + "order-group-down": "Classer vers le bas", "no-group-title": "Aucun titre de groupe", "select-skin": "Sélectionner un habillage", "default": "Défaut (%1)", diff --git a/public/language/th/admin/advanced/database.json b/public/language/th/admin/advanced/database.json index e01bf5d723..936a986c31 100644 --- a/public/language/th/admin/advanced/database.json +++ b/public/language/th/admin/advanced/database.json @@ -17,18 +17,18 @@ "mongo.file-size": "ขนาดไฟล์", "mongo.resident-memory": "หน่วยความจำถาวร", "mongo.virtual-memory": "หน่วยความจำเสมือน", - "mongo.mapped-memory": "Mapped Memory", - "mongo.bytes-in": "Bytes In", - "mongo.bytes-out": "Bytes Out", - "mongo.num-requests": "Number of Requests", + "mongo.mapped-memory": "หน่วยความจำที่ถูกแมป", + "mongo.bytes-in": "จำนวนไบต์ที่รับเข้า", + "mongo.bytes-out": "จำนวนไบต์ที่ส่งออก", + "mongo.num-requests": "จำนวนการร้องขอ", "mongo.raw-info": "ข้อมูลดิบของ MongoDB", - "mongo.unauthorized": "NodeBB was unable to query the MongoDB database for relevant statistics. Please ensure that the user in use by NodeBB contains the "clusterMonitor" role for the "admin" database.", + "mongo.unauthorized": "NodeBB ไม่สามารถดึงข้อมูลจากฐานข้อมูล MongoDB เพื่อคำนวนสถิติที่เกี่ยวข้อง โปรดตรวจสอบว่าชื่อผู้ใช้งานที่ใช้โดย NodeBB ได้สิทธิ์ "clusterMonitor" สำหรับฐานข้อมูล "admin"", "redis": "Redis", "redis.version": "Redis เวอร์ชั่น", - "redis.keys": "Keys", - "redis.expires": "Expires", - "redis.avg-ttl": "Average TTL", + "redis.keys": "จำนวนคีย์", + "redis.expires": "หมดอายุ", + "redis.avg-ttl": "TTL เฉลี่ย", "redis.connected-clients": "ไคลเอ็นท์ที่เชื่อมต่อแล้ว", "redis.connected-slaves": "Slaves ที่เชื่อมต่อแล้ว", "redis.blocked-clients": "ไคลเอ็นท์ที่ถูกบล็อค", diff --git a/public/language/th/admin/advanced/events.json b/public/language/th/admin/advanced/events.json index 57efa22730..1475475e67 100644 --- a/public/language/th/admin/advanced/events.json +++ b/public/language/th/admin/advanced/events.json @@ -2,16 +2,16 @@ "events": "อีเวนท์", "no-events": "ไม่มีอีเวนท์", "control-panel": "แผงควบคุมอีเวนท์", - "delete-events": "Delete Events", - "confirm-delete-all-events": "Are you sure you want to delete all logged events?", - "filters": "Filters", - "filters-apply": "Apply Filters", - "filter-type": "Event Type", - "filter-start": "Start Date", - "filter-end": "End Date", - "filter-user": "Filter by User", - "filter-user.placeholder": "Type user name to filter...", - "filter-group": "Filter by Group", - "filter-group.placeholder": "Type group name to filter...", + "delete-events": "ลบอีเว้นท์", + "confirm-delete-all-events": "คุณต้องการจะลบอีเว้นท์ที่เก็บไว้ทั้งหมดหรือไม่?", + "filters": "ฟิลเตอร์", + "filters-apply": "ใช้งานฟิลเตอร์", + "filter-type": "ประเภทอีเว้นท์", + "filter-start": "วันที่เริ่มต้น", + "filter-end": "วันที่สิ้นสุด", + "filter-user": "ฟิลเตอร์โดยผู้ใช้", + "filter-user.placeholder": "พิมพ์ชื่อผู้ใช้เพื่อฟิลเตอร์", + "filter-group": "ฟิลเตอร์โดยกลุ่ม", + "filter-group.placeholder": "พิมพ์ชื่อกลุ่มเพื่อฟิลเตอร์", "filter-per-page": "Per Page" } \ No newline at end of file diff --git a/public/language/th/aria.json b/public/language/th/aria.json index 6f023dcae0..85aa375bfc 100644 --- a/public/language/th/aria.json +++ b/public/language/th/aria.json @@ -1,8 +1,8 @@ { - "post-sort-option": "Post sort option, %1", - "topic-sort-option": "Topic sort option, %1", - "user-avatar-for": "User avatar for %1", - "user-watched-tags": "User watched tags", - "delete-upload-button": "Delete upload button", - "group-page-link-for": "Group page link for %1" + "post-sort-option": "ตัวเลือกการจัดเรียงโพสต์ %1", + "topic-sort-option": "ตัวเลือกการจัดเรียงกระทู้ %1", + "user-avatar-for": "อวาตาร์ผู้ใช้สำหรับ %1", + "user-watched-tags": "แท็กที่ผู้ใช้เฝ้าดู", + "delete-upload-button": "ลบปุ่มอัพโหลด", + "group-page-link-for": "ลิงก์ไปหน้ากลุ่มสำหรับ %1" } \ No newline at end of file diff --git a/public/language/th/category.json b/public/language/th/category.json index 81de3410b5..e4afe62cbf 100644 --- a/public/language/th/category.json +++ b/public/language/th/category.json @@ -7,20 +7,20 @@ "browsing": "เรียกดู", "no-replies": "ยังไม่มีใครตอบ", "no-new-posts": "ไม่มีกระทู้ใหม่", - "watch": "ตามดู", + "watch": "เฝ้าดู", "ignore": "ไม่ต้องสนใจอีก", - "watching": "กำลังตามดู", - "tracking": "Tracking", - "not-watching": "Not Watching", - "ignoring": "เมินเฉย", - "watching.description": "Notify me of new topics.
Show topics in unread & recent", - "tracking.description": "Shows topics in unread & recent", - "not-watching.description": "Do not show topics in unread, show in recent", - "ignoring.description": "Do not show topics in unread & recent", - "watching.message": "You are now watching updates from this category and all subcategories", - "tracking.message": "You are now tracking updates from this category and all subcategories", - "notwatching.message": "You are not watching updates from this category and all subcategories", - "ignoring.message": "You are now ignoring updates from this category and all subcategories", - "watched-categories": "หมวดหมู่ที่ดูแล้ว", - "x-more-categories": "%1 more categories" + "watching": "กำลังเฝ้าดู", + "tracking": "กำลังติดตาม", + "not-watching": "ไม่ได้เฝ้าดู", + "ignoring": "ไม่สนใจ", + "watching.description": "แจ้งเตือนฉันเมื่อมีกระทู้ใหม่
แสดงกระทู้ในหน้า ไม่ได้อ่าน และ ล่าสุด", + "tracking.description": "แสดงกระทู้ในหน้า ไม่ได้อ่าน และ ล่าสุด", + "not-watching.description": "ไม่ต้องแสดงกระทู้ในหน้า ไม่ได้อ่าน แต่แสดงในหน้า ล่าสุด", + "ignoring.description": "ไม่ต้องแสดงกระทู้ในหน้า ไม่ได้อ่าน และ ล่าสุด", + "watching.message": "คุณกำลังเฝ้าดูการอัพเดทจากหมวดหมู่นี้และทุกหมวดหมู่ย่อย", + "tracking.message": "คุณกำลังติดตามการอัพเดทจากหมวดหมู่นี้และทุกหมวดหมู่ย่อย", + "notwatching.message": "คุณไม่ได้เฝ้าดูการอัพเดทจากหมวดหมู่นี้และทุกหมวดหมู่ย่อย", + "ignoring.message": "คุณไม่สนใจการอัพเดทจากหมวดหมู่นี้และทุกหมวดหมู่ย่อย", + "watched-categories": "หมวดหมู่ที่เฝ้าดู", + "x-more-categories": "มีอีก %1 หมวดหมู่" } \ No newline at end of file diff --git a/public/language/th/email.json b/public/language/th/email.json index 7daeb735c8..3de3940b11 100644 --- a/public/language/th/email.json +++ b/public/language/th/email.json @@ -1,60 +1,60 @@ { - "test-email.subject": "Test Email", - "password-reset-requested": "Password Reset Requested!", - "welcome-to": "ยินดีต้อนรับ %1", + "test-email.subject": "อีเมลทดสอบ", + "password-reset-requested": "ขอรีเซ็ตรหัสผ่าน!", + "welcome-to": "ยินดีต้อนรับสู่ %1", "invite": "คำเชิญจาก %1", "greeting-no-name": "สวัสดี", "greeting-with-name": "สวัสดี %1", - "email.verify-your-email.subject": "Please verify your email", - "email.verify.text1": "You've requested that we change or confirm your email address", - "email.verify.text2": "For security purposes, we only change or confirm the email address on file once its ownership has been confirmed via email. If you did not request this, no action is required on your part.", - "email.verify.text3": "Once you confirm this email address, we will replace your current email address with this one (%1).", + "email.verify-your-email.subject": "โปรดยืนยันอีเมลของคุณ", + "email.verify.text1": "คุณได้ร้องขอให้เราเปลี่ยนหรือยืนยันอีเมลของคุณ", + "email.verify.text2": "ด้วยเหตุผลของความปลอดภัย เราจะเปลี่ยนหรือยืนยันอีเมลที่เก็บไว้ก็ต่อเมื่อได้รับการยืนยันความเป็นเจ้าของด้วยอีเมล ถ้าคุณไม่ได้ร้องขอนี้ คุณไม่ต้องทำอะไร", + "email.verify.text3": "ทันทีที่คุณยืนยันที่อยู่อีเมลนี้ เราจะเปลี่ยนอีเมลปัจจุบันของคุณเป็นอีเมลนี้แทน (%1).", "welcome.text1": "ขอบคุณที่ลงทะเบียนกับ %1", "welcome.text2": "เพื่อให้การบัญชีของคุณใช้งานได้อย่างเสร็จสมบูรณ์ เราจำเป็นต้องยืนยันว่าคุณเป็นเจ้าของที่แท้จริงของอีเมล์ที่ใช้สมัครสมาชิก", "welcome.text3": "ผู้ดูแลระบบได้ทำการยอมรับการสมัครสมาชิกของคุณแล้ว คุณสามารถเข้าสู่ระบบด้วย ชื่อผู้ใช้/รหัสผ่าน ได้แล้วตอนนี้", "welcome.cta": "กดตรงนี้เพื่อยืนยันอีเมลของคุณ", "invitation.text1": "%1 ได้เชิญคุณให้เข้าร่วม %2", - "invitation.text2": "Your invitation will expire in %1 days.", - "invitation.cta": "Click here to create your account.", + "invitation.text2": "คำเชิญของคุณจะหมดอายุใน %1 วัน", + "invitation.cta": "คลิกที่นี่เพื่อสร้างบัญชีของคุณ", "reset.text1": "เราได้รับคำร้องให้ตั้งค่ารหัสผ่านใหม่ของคุณ อาจจะเป็นเพราะว่าคุณลืมรหัสผ่านและได้ทำการส่งคำขอเข้ามา หากไม่ใช่ กรุณาเพิกเฉยต่ออีเมล์นี้และไม่ต้องดำเนินการใดๆทั้งสิ้น", "reset.text2": "เพื่อดำเนินการตั้งรหัสผ่านใหม่ต่อไป, โปรดกดที่ลิ้งค์นี้:", "reset.cta": "กดตรงนี้เพื่อตั้งรหัสผ่านใหม่", "reset.notify.subject": "ตั้งค่ารหัสผ่านใหม่เรียบร้อยแล้ว", "reset.notify.text1": "เรากำลังแจ้งคุณว่าตอน %1 รหัสผ่านของคุณถูกเปลี่ยนเรียบร้อยแล้ว", "reset.notify.text2": "หากคุณไม่ได้เป็นคนอนุญาตสิ่งนี้ กรุณาแจ้งไปยังผู้ดูแลระบบโดยทันที", - "digest.unread-rooms": "Unread rooms", - "digest.room-name-unreadcount": "%1 (%2 unread)", + "digest.unread-rooms": "ห้องที่ยังไม่ได้อ่าน", + "digest.room-name-unreadcount": "%1 (ยังไม่ได้อ่าน %2)", "digest.latest-topics": "หัวข้อสนทนาล่าสุดจาก %1", - "digest.top-topics": "Top topics from %1", - "digest.popular-topics": "Popular topics from %1", + "digest.top-topics": "หัวข้อสนทนาอันดับต้นๆจาก %1", + "digest.popular-topics": "หัวข้อสนทนายอดนิยมจาก %1", "digest.cta": "กดตรงนี้เพื่อเข้าดู %1", "digest.unsub.info": "คำชี้แจงถูกส่งไปให้คุณแล้ว เนื่องมาจากการตั้งค่าสมาชิกของคุณ", "digest.day": "วัน", "digest.week": "สัปดาห์", "digest.month": "เดือน", - "digest.subject": "คำชี้แจงสำหรับ %1", - "digest.title.day": "Your Daily Digest", - "digest.title.week": "Your Weekly Digest", - "digest.title.month": "Your Monthly Digest", - "notif.chat.new-message-from-user": "New message from \"%1\"", - "notif.chat.new-message-from-user-in-room": "New message from %1 in room %2", + "digest.subject": "สรุปเนื้อหาสำหรับ %1", + "digest.title.day": "สรุปเนื้อหารายวันของคุณ", + "digest.title.week": "สรุปเนื้อหารายสัปดาห์ของคุณ", + "digest.title.month": "สรุปเนื้อหารายเดือนของคุณ", + "notif.chat.new-message-from-user": "ข้อความใหม่จาก \"%1\"", + "notif.chat.new-message-from-user-in-room": "ข้อความใหม่จาก %1 ในห้อง %2", "notif.chat.cta": "กดตรงนี้เพื่อกลับไปยังบทสนทนา", "notif.chat.unsub.info": "การแจ้งเตือนแชทนี้ถูกส่งไปหาคุณเนื่องจากการตั้งค่าสมาชิกของคุณ", "notif.post.unsub.info": "การแจ้งเตือนกระทู้นี้ถูกส่งไปยังคุณเนื่องการตั้งค่าสมาชิกของคุณ", - "notif.post.unsub.one-click": "Alternatively, unsubscribe from future emails like this, by clicking", - "notif.cta": "To the forum", - "notif.cta-new-reply": "View Post", - "notif.cta-new-chat": "View Chat", - "notif.test.short": "Testing Notifications", - "notif.test.long": "This is a test of the notifications email. Send help!", + "notif.post.unsub.one-click": "อีกทางเลือกหนึ่ง ยกเลิกการรับอีเมลแบบนี้ในอนาคตโดยการกด", + "notif.cta": "ไปยังฟอรั่ม", + "notif.cta-new-reply": "ดูกระทู้", + "notif.cta-new-chat": "ดูแชท", + "notif.test.short": "การทดสอบการแจ้งเตือน", + "notif.test.long": "นี่เป็นการทดสอบอีเมลแจ้งเตือน โปรดส่งความช่วยเหลือ!", "test.text1": "นี่คืออีเมลทดสอบเพื่อยืนยันว่าระบบอีเมลมีการตั้งค่าที่ถูกต้องสำหรับ NodeBB ของคุณ", "unsub.cta": "กดตรงนี้เพื่อเปลี่ยนแปลงการตั้งค่า", - "unsubscribe": "unsubscribe", - "unsub.success": "You will no longer receive emails from the %1 mailing list", - "unsub.failure.title": "Unable to unsubscribe", - "unsub.failure.message": "Unfortunately, we were not able to unsubscribe you from the mailing list, as there was an issue with the link. However, you can alter your email preferences by going to your user settings.

(error: %1)", + "unsubscribe": "ยกเลิกการติดตาม", + "unsub.success": "คุณจะไม่ได้รับอีเมลจากกลุ่มอีเมล %1", + "unsub.failure.title": "ไม่สามารถยกเลิกการติดตามได้", + "unsub.failure.message": "โชคไม่ดี เราไม่สามารถยกเลิกคุณจากกลุ่มอีเมล เนื่องจากปัญหาของลิงก์ แต่คุณสามารถเปลี่ยนการตั้งค่าอีเมลโดยไปที่ ตั้งค่า ของคุณ.

(ข้อผิดพลาด: %1)", "banned.subject": "คุณถูกแบนจาก %1 แล้ว", - "banned.text1": "ผู้ใช้ %1 ได้ถูกแบนจาก %2", + "banned.text1": "ผู้ใช้ %1 ได้ถูกแบนจาก %2", "banned.text2": "การแบนนี้จะใช้เวลาจนถึง %1", "banned.text3": "นี่คือเหตุผลที่ทำไมคุณถึงถูกแบน", "closing": "ขอบคุณ!" diff --git a/public/language/th/error.json b/public/language/th/error.json index 607e91d450..7060b9a1d4 100644 --- a/public/language/th/error.json +++ b/public/language/th/error.json @@ -1,8 +1,8 @@ { "invalid-data": "ข้อมูลไม่ถูกต้อง", "invalid-json": "รูปแบบ JSON ไม่ถูกต้อง", - "wrong-parameter-type": "A value of type %3 was expected for property `%1`, but %2 was received instead", - "required-parameters-missing": "Required parameters were missing from this API call: %1", + "wrong-parameter-type": "ต้องการข้อมูลประเภท %3 สำหรับค่า `%1` แต่ได้รับค่า %2 แทน", + "required-parameters-missing": "ขาดพารามิเตอร์ที่จำเป็นต่อการเรียก API นี้: %1", "not-logged-in": "คุณยังไม่ได้ลงชื่อเข้าระบบ", "account-locked": "บัญชีของคุณถูกระงับการใช้งานชั่วคราว", "search-requires-login": "\"ฟังก์ชั่นการค้นหา\" ต้องการบัญชีผู้ใช้ กรุณาเข้าสู่ระบบหรือสมัครสมาชิก", @@ -11,51 +11,51 @@ "invalid-tid": "Topic ID ไม่ถูกต้อง", "invalid-pid": "Post ID ไม่ถูกต้อง", "invalid-uid": "User ID ไม่ถูกต้อง", - "invalid-mid": "Invalid Chat Message ID", - "invalid-date": "A valid date must be provided", + "invalid-mid": "Chat Message ID ไม่ถูกต้อง", + "invalid-date": "จำเป็นต้องมีวันที่ที่ถูกต้อง", "invalid-username": "ชื่อผู้ใช้ไม่ถูกต้อง", "invalid-email": "อีเมลไม่ถูกต้อง", - "invalid-fullname": "Invalid Fullname", - "invalid-location": "Invalid Location", - "invalid-birthday": "Invalid Birthday", - "invalid-title": "Invalid title", + "invalid-fullname": "ชื่อเต็มไม่ถูกต้อง", + "invalid-location": "ตำแหน่งไม่ถูกต้อง", + "invalid-birthday": "วันเกิดไม่ถูกต้อง", + "invalid-title": "คำนำหน้าชื่อไม่ถูกต้อง", "invalid-user-data": "User Data ไม่ถูกต้อง", "invalid-password": "รหัสผ่านไม่ถูกต้อง", "invalid-login-credentials": "session login หมดอายุ", "invalid-username-or-password": "กรุณาระบุชื่อผู้ใช้และรหัสผ่าน", "invalid-search-term": "ข้อความค้นหาไม่ถูกต้อง", - "invalid-url": "Invalid URL", - "invalid-event": "Invalid event: %1", - "local-login-disabled": "Local login system has been disabled for non-privileged accounts.", + "invalid-url": "URL ไม่ถูกต้อง", + "invalid-event": "อีเว้นต์ไม่ถูกต้องt: %1", + "local-login-disabled": "ระบบล็อกอินแบบโลคอลไม่เปิดสำหรับบัญชีธรรมดา", "csrf-invalid": "เราไม่สามารถนำท่านเข้าสู่ระบบได้ เหมือนกับว่าเซสชั่นหมดอายุแล้ว กรุณาลองใหม่อีกครั้ง", - "invalid-path": "Invalid path", - "folder-exists": "Folder exists", + "invalid-path": "พาทไม่ถูกต้อง", + "folder-exists": "มีโฟลเดอร์อยู่แล้ว", "invalid-pagination-value": "หมายเลขหน้าไม่ถูกต้อง จำเป็นต้องเป็นตัวเลขอย่างน้อย %1 และอย่างมาก %2", "username-taken": "ชื่อผู้ใช้นี้มีการใช้แล้ว", - "email-taken": "Email address is already taken.", - "email-nochange": "The email entered is the same as the email already on file.", - "email-invited": "Email was already invited", - "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", + "email-taken": "ที่อยู่อีเมลถูกใช้ไปแล้ว", + "email-nochange": "อีเมลที่ใส่เหมือนกับอีเมลที่จัดเก็บไว้แล้ว", + "email-invited": "อีเมลถูกเชิญอยู่ก่อนแล้ว", + "email-not-confirmed": "จะเปิดโพสต์ในหมวดหมู่หรือกระทู้ทันทีที่อีเมลได้รับการยืนยัน โปรดคลิกที่นี่เพื่อส่งอีเมลยืนยัน", "email-not-confirmed-chat": "คุณไม่สามารถแชทได้จนกว่าอีเมล์ของคุณจะได้รับการยืนยัน กรุณาคลิกที่นี่เพื่อยืนยันอีกมเมล์ของคุณ", - "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", - "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", - "user-doesnt-have-email": "User \"%1\" does not have an email set.", + "email-not-confirmed-email-sent": "อีเมลของคุณยังไม่ได้รับการยืนยัน โปรดตรวจสอบกล่องอินบ็อกของคุณสำหรับอีเมลยืนยัน คุณยังไม่สามารถโพสต์ลงในบางหมวดหมู่หรือแชทได้จนกว่าอีเมลของคุณจะได้รับการยืนยัน", + "no-email-to-confirm": "บัญชีของคุณยังไม่ได้ตั้งค่าอีเมล อีเมลจำเป็นสำหรับการกู้บัญชี และอาจจำเป็นสำหรับการแชทและโพสต์ลงบางหมวดหมู่ โปรดคลิกที่นี่เพื่อใส่ค่าอีเมล", + "user-doesnt-have-email": "ผู้ใช้ \"%1\" ยังไม่ได้ตั้งค่าอีเมล", "email-confirm-failed": "เราไม่สามารถยืนยันอีเมลของคุณ ณ ขณะนี้ กรุณาลองใหม่อีกครั้งภายหลัง", "confirm-email-already-sent": "อีเมล์ยืนยันตัวตนถูกส่งไปยังคุณเรียบร้อยแล้ว กรุณารอ %1 นาที(s) ก่อนการตัดสินใจส่งอีกครั้ง", - "confirm-email-expired": "Confirmation email expired", + "confirm-email-expired": "อีเมลยืนยันหมดอายุแล้ว", "sendmail-not-found": "ไม่พบการประมวลผลสำหรับการส่งอีเมล์ กรุณาตรวจสอบให้แน่ใจว่าได้มีการติดตั้งโปรแกรมการประมวลผลแล้วโดยผู้ใช้ที่กำลังใช้ NodeBB", - "digest-not-enabled": "This user does not have digests enabled, or the system default is not configured to send digests", + "digest-not-enabled": "ผู้ใช้รายนี้ไม่ได้เปิดใช้ สรุปเนื้อหา หรือระบบไม่ได้ตั้งค่าให้ส่งสรุปเนื้อหา", "username-too-short": "ชื่อบัญชีผู้ใช้ สั้นเกินไป", "username-too-long": "ชื่อบัญชีผู้ใช้ ยาวเกินไป", "password-too-long": "รหัสผ่านยาวเกินไป", - "reset-rate-limited": "Too many password reset requests (rate limited)", - "reset-same-password": "Please use a password that is different from your current one", + "reset-rate-limited": "มีคำขอให้รีเซ็ตรหัสผ่านมากเกินไป (เกินขีดจำกัด)", + "reset-same-password": "โปรดใช้รหัสผ่านที่แตกต่างจากรหัสปัจจุบัน", "user-banned": "ผู้ใช้ได้รับการแบน", "user-banned-reason": "ขออภัย บัญชีผู้ใช้นี้ได้รับการแบน (เหตุผล : %1)", "user-banned-reason-until": "ขออภัย บัญชีผู้ใช้นี้ได้รับการแบนจนถึง %1 (เหตุผล : %2)", "user-too-new": "ขออภัย คุณจำเป็นต้องรอ %1 วินาที(s) ก่อนการสร้างกระทู้แรกของคุณ", "blacklisted-ip": "ขออภัย IP Address ของคุณถูกแบนจากชุมชนนี้ หากคุณคิดว่านี่เป็นเออเร่อของระบบ กรุณาติดต่อผู้ดูแลระบบ", - "cant-blacklist-self-ip": "You can't blacklist your own IP", + "cant-blacklist-self-ip": "คุณไม่สามารถแบล็กลิสต์ IP ของคุณเองได้", "ban-expiry-missing": "กรุณาระบุวันสิ้นสุดสำหรับการแบนในครั้งนี้", "no-category": "ยังไม่มี Category นี้", "no-topic": "ยังไม่มี Topic นี้", @@ -63,8 +63,8 @@ "no-group": "ยังไม่มี Group นี้", "no-user": "ยังไม่มีผู้ใช้งานนี้", "no-teaser": "ยังไม่มีทีเซอร์นี้", - "no-flag": "Flag does not exist", - "no-chat-room": "Chat room does not exist", + "no-flag": "ยังไม่มี flag นี้", + "no-chat-room": "ยังไม่มีห้องแชทนี้", "no-privileges": "คุณมีสิทธิ์ไม่เพียงพอที่จะทำรายการนี้", "category-disabled": "Category นี้ถูกปิดการใช้งานแล้ว", "topic-locked": "กระทู้ถูกล็อก", @@ -90,24 +90,24 @@ "title-too-long": "กรุณากรอกชื่อให้สั้นลง ชื่อไม่สามารถยาวกว่า %1 ตัวอักษร(s)", "category-not-selected": "ไม่มีการเลือกหมวดหมู่", "too-many-posts": "คุณสามารถโพสต์ได้เพียงครั้งเดียวเท่านั้นในทุกๆ %1 วินาที(s) - โปรดรอสักครู่ก่อนการโพสต์อีกครั้ง", - "too-many-posts-newbie": "เนื่องด้วยการเป็นผู้ใช้งานใหม่ คุณสามารถโพสต์ได้เพียงครั้งเดียวเท่านั้นในทุกๆ %1 วินาที(s) จนกว่าคุณจะได้รับ %2 ชื่อเสียง - โปรดรอสักครู่ก่อนการโพสต์อีกครั้ง", - "too-many-posts-newbie-minutes": "As a new user, you can only post once every %1 minute(s) until you have earned %2 reputation - please wait before posting again", - "already-posting": "You are already posting", + "too-many-posts-newbie": "เนื่องด้วยการเป็นผู้ใช้งานใหม่ คุณสามารถโพสต์ได้เพียงครั้งเดียวเท่านั้นในทุกๆ %1 วินาที จนกว่าคุณจะได้รับ %2 ชื่อเสียง - โปรดรอสักครู่ก่อนการโพสต์อีกครั้ง", + "too-many-posts-newbie-minutes": "เนื่องด้วยการเป็นผู้ใช้งานใหม่ คุณสปรโามารถโพสต์ได้หนึ่งครั้งทุกๆ %1 นาทีจนกว่าคุณจะได้รับ %2 ชื่อเสียง - โปรดรอสักครู่ก่อนการโพสต์อีกครั้ง", + "already-posting": "คุณกำลังโพสต์อยู่แล้ว", "tag-too-short": "กรุณากรอกแท็กให้ยาวขึ้น แท็กควรมีข้อความอย่างน้อย %1 ตัวอักษร(s)", "tag-too-long": "กรุณากรอกแท็กให้สั้นลง แท็กไม่สามารถยาวกว่า %1 ตัวอักษร(s)", - "tag-not-allowed": "Tag not allowed", - "not-enough-tags": "จำนวนแท็กไม่พอ กระทู้ต้องมีอย่างน้อย %1 แท็ก(s)", - "too-many-tags": "แท็กเยอะเกินไป กระทู้ไม่สามารถมีแท็กมากกว่า %1 แท็ก(s)", - "cant-use-system-tag": "You can not use this system tag.", - "cant-remove-system-tag": "You can not remove this system tag.", + "tag-not-allowed": "ไม่อนุญาตแท็ก", + "not-enough-tags": "จำนวนแท็กไม่พอ กระทู้ต้องมีอย่างน้อย %1 แท็ก", + "too-many-tags": "แท็กเยอะเกินไป กระทู้ไม่สามารถมีแท็กมากกว่า %1 แท็ก", + "cant-use-system-tag": "คุณไม่สามารถใช้แท็กระบบอันนี้", + "cant-remove-system-tag": "คุณไม่สามารถลบแท็กระบบอันนี้", "still-uploading": "กรุณารอการอัพโหลดเพื่อเสร็จสิ้น", "file-too-big": "ขนาดไฟล์ที่ใหญ่ที่สุดที่ได้รับการอนุญาตคือ %1 kB - กรุณาอัพโหลดไฟล์ที่เล็กลง", "guest-upload-disabled": "การอัพโหลดของ Guest ถูกปิด", - "cors-error": "Unable to upload image due to misconfigured CORS", - "upload-ratelimit-reached": "You have uploaded too many files at one time. Please try again later.", - "upload-error-fallback": "Unable to upload image — %1", - "scheduling-to-past": "Please select a date in the future.", - "invalid-schedule-date": "Please enter a valid date and time.", + "cors-error": "ไม่สามารถอัพโหลดรูปได้เนื่องจากการตั้งค่า CORS ผิดพลาด", + "upload-ratelimit-reached": "คุณอัพโหลดไฟล์มากเกินในพร้อมกัน โปรดลองอีกครั้งภายหลัง", + "upload-error-fallback": "ไม่สามารถอัพโหลดรูปภาพ — %1", + "scheduling-to-past": "โปรดเลือกวันที่ในอนาคต", + "invalid-schedule-date": "โปรดใส่วันที่และเวลาที่ถูกต้อง", "cant-pin-scheduled": "Scheduled topics cannot be (un)pinned.", "cant-merge-scheduled": "Scheduled topics cannot be merged.", "cant-move-posts-to-scheduled": "Can't move posts to a scheduled topic.", @@ -122,12 +122,12 @@ "cant-remove-last-admin": "คุณเป็นแอดมินเพียงคนเดียว กรุณาเพิ่มผู้ใช้คนอื่นเป็นแอดมิน ก่อนการลบตัวเองออกจากแอดมิน", "account-deletion-disabled": "Account deletion is disabled", "cant-delete-admin": "ลบสิทธิพิเศษของแอดมินจากบัญชีผู้ใช้นี้ ก่อนทำการลบ", - "already-deleting": "Already deleting", - "invalid-image": "Invalid image", + "already-deleting": "กำลังลบอยู่แล้ว", + "invalid-image": "ภาพไม่ถูกต้อง", "invalid-image-type": "ประเภทรูปภาพไม่ถูกต้อง ประเภทที่ได้รับการอนุญาติคือ : %1", "invalid-image-extension": "นามสกุลรูปภาพไม่ถูกต้อง", "invalid-file-type": "ประเภทไฟล์ไม่ถูกต้อง ประเภทที่ได้รับการอนุญาติคือ : %1", - "invalid-image-dimensions": "Image dimensions are too big", + "invalid-image-dimensions": "ภาพขนาดใหญ่เกินไป", "group-name-too-short": "ชื่อกลุ่มสั้นเกินไป", "group-name-too-long": "ชื่อกลุ่มยาวเกินไป", "group-already-exists": "มีกลุ่มนี้อยู่แล้ว", diff --git a/public/language/th/login.json b/public/language/th/login.json index d880087f94..73b80f08e4 100644 --- a/public/language/th/login.json +++ b/public/language/th/login.json @@ -8,5 +8,5 @@ "login-successful": "คุณเข้าสู่ระบบเรียบร้อยแล้ว", "dont-have-account": "คุณยังไม่มีบัญชีเข้าระบบ?", "logged-out-due-to-inactivity": "คุณได้ออกจากระบบ Admin Control Panel แล้ว เนื่องจากว่าไม่มีกิจกรรมใดๆมาสักระยะ", - "caps-lock-enabled": "Caps Lock is enabled" + "caps-lock-enabled": "ปุ่ม Caps Lock เปิดอยู่" } \ No newline at end of file diff --git a/public/language/th/user.json b/public/language/th/user.json index 3690fe6304..42ce438282 100644 --- a/public/language/th/user.json +++ b/public/language/th/user.json @@ -17,15 +17,15 @@ "mute-account": "Mute Account", "unmute-account": "Unmute Account", "delete-account": "ลบบัญชี", - "delete-account-as-admin": "Delete Account", - "delete-content": "Delete Account Content", - "delete-all": "Delete Account and Content", + "delete-account-as-admin": "ลบบัญชี", + "delete-content": "ลบเนื้อหาบัญชี", + "delete-all": "ลบบัญชีและเนื้อหา", "delete-account-confirm": "Are you sure you want to anonymize your posts and delete your account?
This action is irreversible and you will not be able to recover any of your data

Enter your password to confirm that you wish to destroy this account.", "delete-this-account-confirm": "Are you sure you want to delete this account while leaving its contents behind?
This action is irreversible, posts will be anonymized, and you will not be able to restore post associations with the deleted account

", "delete-account-content-confirm": "Are you sure you want to delete this account's content (posts/topics/uploads)?
This action is irreversible and you will not be able to recover any data

", "delete-all-confirm": "Are you sure you want to delete this account and all of its content (posts/topics/uploads)?
This action is irreversible and you will not be able to recover any data

", "account-deleted": "บัญชีถูกลบแล้ว", - "account-content-deleted": "Account content deleted", + "account-content-deleted": "เนื้อหาของบัญชีถูกลบแล้ว", "fullname": "ชื่อเต็ม", "website": "เว็บไซต์", "location": "สถานที่", @@ -36,9 +36,9 @@ "profile-views": "ดูข้อมูลส่วนตัว", "reputation": "ชื่อเสียง", "bookmarks": "ที่คั่นหน้า", - "watched-categories": "Watched categories", - "watched-tags": "Watched tags", - "change-all": "Change All", + "watched-categories": "หมวดหมู่ที่เฝ้าดู", + "watched-tags": "แท็กที่เฝ้าดู", + "change-all": "เปลี่ยนทั้งหมด", "watched": "ดูแล้ว", "ignored": "ยกเว้นแล้ว", "default-category-watch-state": "Default category watch state", @@ -72,7 +72,7 @@ "upload-new-picture": "อัพโหลดรูปใหม่", "upload-new-picture-from-url": "อัปโหลดรูปจาก URL", "current-password": "รหัสผ่านปัจจุบัน", - "new-password": "New Password", + "new-password": "รหัสผ่านใหม่", "change-password": "เปลี่ยนรหัสผ่าน", "change-password-error": "รหัสผ่านใช้ไม่ได้", "change-password-error-wrong-current": "รหัสผ่านปัจจุบันไม่ถูกต้อง", @@ -92,7 +92,7 @@ "remove-cover-picture-confirm": "คุณต้องการลบภาพหน้าปกใช่หรือไม่?", "crop-picture": "ตัดภาพ", "upload-cropped-picture": "ตัดภาพและอัพโหลด", - "avatar-background-colour": "Avatar background colour", + "avatar-background-colour": "สีพื้นของรูปอวาตาร์", "settings": "ตั้งค่า", "show-email": "แสดงอีเมลของฉัน", "show-fullname": "แสดงชื่อจริงของฉัน", @@ -102,7 +102,7 @@ "digest-off": "ปิด", "digest-daily": "รายวัน", "digest-weekly": "รายสัปดาห์", - "digest-biweekly": "Bi-Weekly", + "digest-biweekly": "รายสองสัปดาห์", "digest-monthly": "รายเดือน", "has-no-follower": "ผู้ใช้รายนี้ไม่มีใครติดตาม :(", "follows-no-one": "ผู้ใช้รายนี้ไม่ติดตามใคร :(", @@ -142,14 +142,14 @@ "follow-topics-you-create": "ดูกระทู้ที่คุณตั้ง", "grouptitle": "ชื่อกลุ่ม", "group-order-help": "Select a group and use the arrows to order titles", - "show-group-title": "Show group title", - "hide-group-title": "Hide group title", - "order-group-up": "Order group up", - "order-group-down": "Order group down", + "show-group-title": "แสดงชื่อกลุ่ม", + "hide-group-title": "ซ่อนชื่อกลุ่ม", + "order-group-up": "เรียงลำดับกลุ่มจากน้อยไปหามาก", + "order-group-down": "เรียงลำดับกลุ่มจากมากไปหาน้อย", "no-group-title": "ไม่มีชื่อกลุ่ม", "select-skin": "เลือกสกิน", "default": "Default (%1)", - "no-skin": "No Skin", + "no-skin": "ไม่มีสกิน", "select-homepage": "เลือกหน้าแรก", "homepage": "หน้าแรก", "homepage-description": "เลือกหน้าที่จะใช้เป็นหน้าแรกของฟอรั่ม หรือเลือก None เพื่อใช้ค่าเริ่มต้น", @@ -166,15 +166,15 @@ "info.ban-history": "ประวัติแบนล่าสุด", "info.no-ban-history": "ผู้ใช้นี้ถูกแบนแล้ว", "info.banned-until": "แบนจนกว่า %1", - "info.banned-expiry": "Expiry", + "info.banned-expiry": "หมดอายุ", "info.banned-permanently": "แบนอย่างถาวร", "info.banned-reason-label": "เหตุผล", - "info.banned-no-reason": "ไม่มีเหตุผล", + "info.banned-no-reason": "ไม่ได้ให้เหตุผลไว้", "info.mute-history": "Recent Mute History", "info.no-mute-history": "This user has never been muted", "info.muted-until": "Muted until %1", - "info.muted-expiry": "Expiry", - "info.muted-no-reason": "No reason given.", + "info.muted-expiry": "หมดอายุ", + "info.muted-no-reason": "ไม่ได้ให้เหตุผลไว้", "info.username-history": "ประวัติผู้ใช้", "info.email-history": "ประวัติอีเมล์", "info.moderation-note": "โน๊ตของ Moderation", From 499514a85c6c6136bc8db15d316f457aaa6be452 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 7 Apr 2024 11:16:13 -0400 Subject: [PATCH 073/168] fix(deps): update dependency nodebb-theme-harmony to v1.2.46 (#12478) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 6995005723..aec7d4e426 100644 --- a/install/package.json +++ b/install/package.json @@ -103,7 +103,7 @@ "nodebb-plugin-ntfy": "1.7.4", "nodebb-plugin-spam-be-gone": "2.2.1", "nodebb-rewards-essentials": "1.0.0", - "nodebb-theme-harmony": "1.2.45", + "nodebb-theme-harmony": "1.2.46", "nodebb-theme-lavender": "7.1.8", "nodebb-theme-peace": "2.2.4", "nodebb-theme-persona": "13.3.12", From 01b3a06a5a138b4085e2721f6090f4a3c69017d2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 7 Apr 2024 11:16:21 -0400 Subject: [PATCH 074/168] fix(deps): update dependency nodebb-theme-persona to v13.3.13 (#12479) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index aec7d4e426..03c936a39b 100644 --- a/install/package.json +++ b/install/package.json @@ -106,7 +106,7 @@ "nodebb-theme-harmony": "1.2.46", "nodebb-theme-lavender": "7.1.8", "nodebb-theme-peace": "2.2.4", - "nodebb-theme-persona": "13.3.12", + "nodebb-theme-persona": "13.3.13", "nodebb-widget-essentials": "7.0.15", "nodemailer": "6.9.13", "nprogress": "0.2.0", From b61936294bc4c42a84fd5c223bcac826439e1ca1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 7 Apr 2024 11:16:28 -0400 Subject: [PATCH 075/168] fix(deps): update dependency workerpool to v9.1.1 (#12475) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 03c936a39b..2b4e958ddc 100644 --- a/install/package.json +++ b/install/package.json @@ -146,7 +146,7 @@ "webpack": "5.91.0", "webpack-merge": "5.10.0", "winston": "3.13.0", - "workerpool": "9.1.0", + "workerpool": "9.1.1", "xml": "1.0.1", "xregexp": "5.1.1", "yargs": "17.7.2", From 7033d11ede2b0ac6f8108de66e1f466c2f9210e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Mon, 8 Apr 2024 15:59:17 -0400 Subject: [PATCH 076/168] fix: #12481, remove priv groups from groupslug:groupname mapping (#12482) this will cause a 404 when trying to access /group/cid-1-privilige-groups-find as an admin --- src/controllers/admin/groups.js | 3 ++ src/groups/create.js | 15 ++++++++-- src/groups/delete.js | 6 ++-- src/groups/update.js | 6 ++-- src/upgrades/3.8.0/remove-privilege-slugs.js | 31 ++++++++++++++++++++ 5 files changed, 54 insertions(+), 7 deletions(-) create mode 100644 src/upgrades/3.8.0/remove-privilege-slugs.js diff --git a/src/controllers/admin/groups.js b/src/controllers/admin/groups.js index a1a7c6fd1c..a43afa9c17 100644 --- a/src/controllers/admin/groups.js +++ b/src/controllers/admin/groups.js @@ -34,6 +34,9 @@ groupsController.list = async function (req, res) { groupsController.get = async function (req, res, next) { const slug = slugify(req.params.name); const groupName = await groups.getGroupNameByGroupSlug(slug); + if (!groupName) { + return next(); + } const [groupNames, group] = await Promise.all([ getGroupNames(), groups.get(groupName, { uid: req.uid, truncateUserList: true, userListCount: 20 }), diff --git a/src/groups/create.js b/src/groups/create.js index 74ef56a41f..5172038052 100644 --- a/src/groups/create.js +++ b/src/groups/create.js @@ -18,8 +18,11 @@ module.exports = function (Groups) { Groups.validateGroupName(data.name); - const exists = await meta.userOrGroupExists(data.name); - if (exists) { + const [exists, privGroupExists] = await Promise.all([ + meta.userOrGroupExists(data.name), + privilegeGroupExists(data.name), + ]); + if (exists || privGroupExists) { throw new Error('[[error:group-already-exists]]'); } @@ -58,7 +61,9 @@ module.exports = function (Groups) { ]); } - await db.setObjectField('groupslug:groupname', groupData.slug, groupData.name); + if (!Groups.isPrivilegeGroup(groupData.name)) { + await db.setObjectField('groupslug:groupname', groupData.slug, groupData.name); + } groupData = await Groups.getGroupData(groupData.name); plugins.hooks.fire('action:group.create', { group: groupData }); @@ -71,6 +76,10 @@ module.exports = function (Groups) { Groups.isPrivilegeGroup(data.name); } + async function privilegeGroupExists(name) { + return Groups.isPrivilegeGroup(name) && await db.isSortedSetMember('groups:createtime', name); + } + Groups.validateGroupName = function (name) { if (!name) { throw new Error('[[error:group-name-too-short]]'); diff --git a/src/groups/delete.js b/src/groups/delete.js index 1fc8beef02..449640c190 100644 --- a/src/groups/delete.js +++ b/src/groups/delete.js @@ -28,7 +28,9 @@ module.exports = function (Groups) { ); }); const sets = groupNames.map(groupName => `${groupName.toLowerCase()}:${groupName}`); - const fields = groupNames.map(groupName => slugify(groupName)); + const groupSlugs = groupNames + .filter(groupName => !Groups.isPrivilegeGroup(groupName)) + .map(groupName => slugify(groupName)); await Promise.all([ db.deleteAll(keys), @@ -38,7 +40,7 @@ module.exports = function (Groups) { 'groups:visible:memberCount', ], groupNames), db.sortedSetRemove('groups:visible:name', sets), - db.deleteObjectFields('groupslug:groupname', fields), + db.deleteObjectFields('groupslug:groupname', groupSlugs), removeGroupsFromPrivilegeGroups(groupNames), ]); Groups.cache.reset(); diff --git a/src/groups/update.js b/src/groups/update.js index 9da76c9180..804268c587 100644 --- a/src/groups/update.js +++ b/src/groups/update.js @@ -191,8 +191,10 @@ module.exports = function (Groups) { await updateConfig(oldName, newName); await updateChatRooms(oldName, newName); await db.setObject(`group:${oldName}`, { name: newName, slug: slugify(newName) }); - await db.deleteObjectField('groupslug:groupname', group.slug); - await db.setObjectField('groupslug:groupname', slugify(newName), newName); + if (!Groups.isPrivilegeGroup(oldName) && !Groups.isPrivilegeGroup(newName)) { + await db.deleteObjectField('groupslug:groupname', group.slug); + await db.setObjectField('groupslug:groupname', slugify(newName), newName); + } const allGroups = await db.getSortedSetRange('groups:createtime', 0, -1); const keys = allGroups.map(group => `group:${group}:members`); diff --git a/src/upgrades/3.8.0/remove-privilege-slugs.js b/src/upgrades/3.8.0/remove-privilege-slugs.js new file mode 100644 index 0000000000..bfd589f6fc --- /dev/null +++ b/src/upgrades/3.8.0/remove-privilege-slugs.js @@ -0,0 +1,31 @@ +/* eslint-disable no-await-in-loop */ + +'use strict'; + +const db = require('../../database'); +const groups = require('../../groups'); +const batch = require('../../batch'); + +module.exports = { + name: 'Remove privilege groups from groupslug:groupname object', + timestamp: Date.UTC(2024, 3, 8), + method: async function () { + const { progress } = this; + + const slugsToNames = await db.getObject(`groupslug:groupname`); + const privilegeGroups = []; + for (const [slug, name] of Object.entries(slugsToNames)) { + if (groups.isPrivilegeGroup(name)) { + privilegeGroups.push(slug); + } + } + + progress.total = privilegeGroups.length; + await batch.processArray(privilegeGroups, async (slugs) => { + progress.incr(slugs.length); + await db.deleteObjectFields(`groupslug:groupname`, slugs); + }, { + batch: 500, + }); + }, +}; From ee5c021c4714e091f60657cc82248a790ee36735 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Mon, 8 Apr 2024 16:18:26 -0400 Subject: [PATCH 077/168] refactor: use groupslug:groupname for search and acp page dont need to load all names which includes privilege groups --- src/controllers/admin/groups.js | 7 +++---- src/groups/search.js | 8 ++++---- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/controllers/admin/groups.js b/src/controllers/admin/groups.js index a43afa9c17..8c6ca96e6c 100644 --- a/src/controllers/admin/groups.js +++ b/src/controllers/admin/groups.js @@ -62,14 +62,13 @@ groupsController.get = async function (req, res, next) { }; async function getGroupNames() { - const groupNames = await db.getSortedSetRange('groups:createtime', 0, -1); + const groupNames = Object.values(await db.getObject('groupslug:groupname')); return groupNames.filter(name => ( name !== 'registered-users' && name !== 'verified-users' && name !== 'unverified-users' && - name !== groups.BANNED_USERS && - !groups.isPrivilegeGroup(name) - )); + name !== groups.BANNED_USERS + )).sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase())); } groupsController.getCSV = async function (req, res) { diff --git a/src/groups/search.js b/src/groups/search.js index d1fd8892be..3e0dfd2def 100644 --- a/src/groups/search.js +++ b/src/groups/search.js @@ -9,13 +9,13 @@ module.exports = function (Groups) { return []; } query = String(query).toLowerCase(); - let groupNames = await db.getSortedSetRange('groups:createtime', 0, -1); + let groupNames = Object.values(await db.getObject('groupslug:groupname')); if (!options.hideEphemeralGroups) { groupNames = Groups.ephemeralGroups.concat(groupNames); } - groupNames = groupNames.filter(name => name.toLowerCase().includes(query) && - name !== Groups.BANNED_USERS && // hide banned-users in searches - !Groups.isPrivilegeGroup(name)); + groupNames = groupNames.filter( + name => name.toLowerCase().includes(query) && name !== Groups.BANNED_USERS // hide banned-users in searches + ); groupNames = groupNames.slice(0, 100); let groupsData; From 6237d5fe0f84c6234134c0cb81c11deb1ca86718 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 8 Apr 2024 18:49:34 -0400 Subject: [PATCH 078/168] fix(deps): update dependency cron to v3.1.7 (#12484) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 2b4e958ddc..e6409a8ded 100644 --- a/install/package.json +++ b/install/package.json @@ -58,7 +58,7 @@ "connect-pg-simple": "9.0.1", "connect-redis": "7.1.1", "cookie-parser": "1.4.6", - "cron": "3.1.6", + "cron": "3.1.7", "cropperjs": "1.6.1", "csrf-sync": "4.0.3", "daemon": "1.1.0", From 2bcd5239fbbcd8094b46addee959d88138f27bd4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 9 Apr 2024 12:03:34 -0400 Subject: [PATCH 079/168] fix(deps): update dependency nodebb-theme-harmony to v1.2.47 (#12487) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index e6409a8ded..2f31780b88 100644 --- a/install/package.json +++ b/install/package.json @@ -103,7 +103,7 @@ "nodebb-plugin-ntfy": "1.7.4", "nodebb-plugin-spam-be-gone": "2.2.1", "nodebb-rewards-essentials": "1.0.0", - "nodebb-theme-harmony": "1.2.46", + "nodebb-theme-harmony": "1.2.47", "nodebb-theme-lavender": "7.1.8", "nodebb-theme-peace": "2.2.4", "nodebb-theme-persona": "13.3.13", From b804a3519db7ad32ae721b98a45772c0449b8d4e Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Wed, 10 Apr 2024 09:18:48 +0000 Subject: [PATCH 080/168] Latest translations and fallbacks --- public/language/fr/admin/advanced/events.json | 8 ++++---- public/language/fr/admin/settings/post.json | 6 +++--- public/language/fr/aria.json | 12 ++++++------ public/language/fr/themes/harmony.json | 4 ++-- public/language/th/users.json | 10 +++++----- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/public/language/fr/admin/advanced/events.json b/public/language/fr/admin/advanced/events.json index f7e2f944bb..d5e1a1461d 100644 --- a/public/language/fr/admin/advanced/events.json +++ b/public/language/fr/admin/advanced/events.json @@ -9,9 +9,9 @@ "filter-type": "Évènements", "filter-start": "Date de début", "filter-end": "Date de fin", - "filter-user": "Filter by User", - "filter-user.placeholder": "Type user name to filter...", - "filter-group": "Filter by Group", - "filter-group.placeholder": "Type group name to filter...", + "filter-user": "Filtrer par Utilisateur", + "filter-user.placeholder": "Tapez le nom d'utilisateur à filtrer...", + "filter-group": "Filtrer par groupe", + "filter-group.placeholder": "Tapez le nom du groupe à filtrer...", "filter-per-page": "Par page" } \ No newline at end of file diff --git a/public/language/fr/admin/settings/post.json b/public/language/fr/admin/settings/post.json index cdf8f11baa..af324eb412 100644 --- a/public/language/fr/admin/settings/post.json +++ b/public/language/fr/admin/settings/post.json @@ -4,11 +4,11 @@ "sorting.post-default": "Tri des messages par défaut", "sorting.oldest-to-newest": "Du plus ancien au plus récent", "sorting.newest-to-oldest": "Du plus récent au plus ancien", - "sorting.recently-replied": "Recently Replied", - "sorting.recently-created": "Recently Created", + "sorting.recently-replied": "Répondu récemment ", + "sorting.recently-created": "Créé récemment ", "sorting.most-votes": "Avec le plus de votes", "sorting.most-posts": "Avec le plus de messages", - "sorting.most-views": "Most Views", + "sorting.most-views": "Les plus vus", "sorting.topic-default": "Tri des sujets par défaut", "length": "Longueur de message", "post-queue": "File d'attente", diff --git a/public/language/fr/aria.json b/public/language/fr/aria.json index 6f023dcae0..2274e862be 100644 --- a/public/language/fr/aria.json +++ b/public/language/fr/aria.json @@ -1,8 +1,8 @@ { - "post-sort-option": "Post sort option, %1", - "topic-sort-option": "Topic sort option, %1", - "user-avatar-for": "User avatar for %1", - "user-watched-tags": "User watched tags", - "delete-upload-button": "Delete upload button", - "group-page-link-for": "Group page link for %1" + "post-sort-option": "Option de tri des messages, %1", + "topic-sort-option": "Option de tri des sujets, %1", + "user-avatar-for": "Avatar de l'utilisateur pour %1", + "user-watched-tags": "L'utilisateur a regardé les tags", + "delete-upload-button": "Supprimer le bouton de téléchargement", + "group-page-link-for": "Lien vers la page de groupe pour %1" } \ No newline at end of file diff --git a/public/language/fr/themes/harmony.json b/public/language/fr/themes/harmony.json index 5e979ff6d2..2957f7ac04 100644 --- a/public/language/fr/themes/harmony.json +++ b/public/language/fr/themes/harmony.json @@ -3,11 +3,11 @@ "skins": "Habillages", "collapse": "Réduire", "expand": "Développer", - "sidebar-toggle": "Sidebar Toggle", + "sidebar-toggle": "Réduire la barre latérale", "login-register-to-search": "Connectez-vous ou inscrivez-vous pour faire une recherche.", "settings.title": "Configuration du thème", "settings.enableQuickReply": "Activer les réponses rapides", - "settings.enableBreadcrumbs": "Enable breadcrumbs", + "settings.enableBreadcrumbs": "Activer le fil d'Ariane", "settings.centerHeaderElements": "Centrer les éléments d'en-tête", "settings.mobileTopicTeasers": "Afficher les teasers de sujet sur mobile", "settings.stickyToolbar": "Barre d'outils", diff --git a/public/language/th/users.json b/public/language/th/users.json index e16d7f8522..1627abde9d 100644 --- a/public/language/th/users.json +++ b/public/language/th/users.json @@ -1,19 +1,19 @@ { - "all-users": "All Users", + "all-users": "ผู้ใช้งานทั้งหมด", "latest-users": "ผู้ใช้งานล่าสุด", "top-posters": "ผู้ที่โพสต์มากที่สุด", "most-reputation": "ผู้ที่มีชื่อเสียงมากที่สุด", "most-flags": "ผู้ที่ถูกรายงานมากที่สุด", "search": "ค้นหา", "enter-username": "กรอกชื่อผู้ใช้เพื่อค้นหา", - "search-user-for-chat": "Search for a user to start chat", + "search-user-for-chat": "ค้นหาผู้ใช้เพื่อเริ่มต้นแชท", "load-more": "โหลดเพิ่มเติม", - "users-found-search-took": "พบ %1 ผู้ใช้(s)! การค้นหาใช้เวลาทั้งหมด %2 วินาที", + "users-found-search-took": "พบผู้ใช้ %1 คน! การค้นหาใช้เวลาทั้งหมด %2 วินาที", "filter-by": "การกรอง", "online-only": "กำลังออนไลน์เท่านั้น", "invite": "เชิญ", - "prompt-email": "Emails:", - "groups-to-join": "Groups to be joined when invite is accepted:", + "prompt-email": "อีเมล:", + "groups-to-join": "กลุ่มที่จะได้เข้าร่วมเมื่อคำเชิญได้รับการตอบรับ:", "invitation-email-sent": "อีเมลคำเชิญถูกส่งไปยัง %1 เรียบร้อย", "user-list": "รายการผู้ใช้", "recent-topics": "กระทู้ล่าสุด", From 698b3a2a0096456f7a7aab81b08b97c7add67054 Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Thu, 11 Apr 2024 09:19:55 +0000 Subject: [PATCH 081/168] Latest translations and fallbacks --- public/language/th/admin/admin.json | 24 +++--- public/language/th/admin/advanced/cache.json | 6 +- .../language/th/admin/advanced/database.json | 16 ++-- public/language/th/admin/advanced/events.json | 4 +- public/language/th/admin/advanced/logs.json | 2 +- .../th/admin/appearance/customise.json | 12 +-- .../language/th/admin/appearance/skins.json | 16 ++-- .../language/th/admin/appearance/themes.json | 4 +- public/language/th/admin/dashboard.json | 78 +++++++++---------- 9 files changed, 81 insertions(+), 81 deletions(-) diff --git a/public/language/th/admin/admin.json b/public/language/th/admin/admin.json index ee88fab2c3..0e905bc30d 100644 --- a/public/language/th/admin/admin.json +++ b/public/language/th/admin/admin.json @@ -1,18 +1,18 @@ { - "alert.confirm-rebuild-and-restart": "Are you sure you wish to rebuild and restart NodeBB?", + "alert.confirm-rebuild-and-restart": "คุณต้องการสร้างระบบและเริ่มต้นการทำงาน NodeBB ใหม่หรือไม่?", "alert.confirm-restart": "คุณต้องการเริ่มการทำงาน NodeBB ใหม่หรือไม่?", "acp-title": "%1 | แผงควบคุมของผู้ดูแลระบบ", "settings-header-contents": "เนื้อหา", - "changes-saved": "Changes Saved", - "changes-saved-message": "Your changes to the NodeBB configuration have been saved.", - "changes-not-saved": "Changes Not Saved", - "changes-not-saved-message": "NodeBB encountered a problem saving your changes. (%1)", - "save-changes": "Save changes", - "min": "Min:", - "max": "Max:", - "view": "View", - "edit": "Edit", - "add": "Add", - "select-icon": "Select Icon" + "changes-saved": "บันทึกการเปลี่ยนแปลงแล้ว", + "changes-saved-message": "การเปลี่ยนการตั้งค่า NodeBB ของคุณถูกบันทึกแล้ว", + "changes-not-saved": "การเปลี่ยนแปลงไม่ถูกบันทึก", + "changes-not-saved-message": "NodeBB เจอปัญหาระหว่างการบันทึกการเปลี่ยนแปลงของคุณ (%1)", + "save-changes": "บันทึกการเปลี่ยนแปลง", + "min": "ต่ำสุด:", + "max": "สูงสุด:", + "view": "ดู", + "edit": "แก้ไข", + "add": "เพิ่ม", + "select-icon": "เลือกไอคอน" } \ No newline at end of file diff --git a/public/language/th/admin/advanced/cache.json b/public/language/th/admin/advanced/cache.json index 0c7af6cd99..a82ddf0724 100644 --- a/public/language/th/admin/advanced/cache.json +++ b/public/language/th/admin/advanced/cache.json @@ -1,9 +1,9 @@ { "cache": "Cache", "post-cache": "แคชข้อความ", - "group-cache": "Group Cache", - "local-cache": "Local Cache", - "object-cache": "Object Cache", + "group-cache": "แคชกลุ่ม", + "local-cache": "แคชโลคอล", + "object-cache": "แคชออพเจ็กท์", "percent-full": "เต็ม %1%", "post-cache-size": "ขนาดแคชของข้อความ", "items-in-cache": "รายการที่ถูกแคช" diff --git a/public/language/th/admin/advanced/database.json b/public/language/th/admin/advanced/database.json index 936a986c31..6b89f77aaa 100644 --- a/public/language/th/admin/advanced/database.json +++ b/public/language/th/admin/advanced/database.json @@ -37,16 +37,16 @@ "redis.total-connections-recieved": "การเชื่อมต่อที่ได้รับทั้งหมด", "redis.total-commands-processed": "คำสั่งที่ประมวลผลแล้วทั้งหมด", "redis.iops": "การทำงานพร้อมกันต่อวินาที", - "redis.iinput": "Instantaneous Input Per Second", - "redis.ioutput": "Instantaneous Output Per Second", - "redis.total-input": "Total Input", - "redis.total-output": "Total Ouput", + "redis.iinput": "ข้อมูลเข้าต่อวินาที", + "redis.ioutput": "ข้อมูลออกต่อวินาที", + "redis.total-input": "ข้อมูลเข้าทั้งหมด", + "redis.total-output": "ข้อมูลออกทั้งหมด", - "redis.keyspace-hits": "Keyspace Hits", - "redis.keyspace-misses": "Keyspace Misses", + "redis.keyspace-hits": "Keyspace ที่พบ", + "redis.keyspace-misses": "Keyspace ที่ไม่พบ", "redis.raw-info": "ข้อมูลดิบของ Redis", "postgres": "Postgres", - "postgres.version": "PostgreSQL Version", - "postgres.raw-info": "Postgres Raw Info" + "postgres.version": "PostgreSQL เวอร์ชัน", + "postgres.raw-info": "ข้อมูลดิบของ Postgres" } diff --git a/public/language/th/admin/advanced/events.json b/public/language/th/admin/advanced/events.json index 1475475e67..7545b05c04 100644 --- a/public/language/th/admin/advanced/events.json +++ b/public/language/th/admin/advanced/events.json @@ -1,5 +1,5 @@ { - "events": "อีเวนท์", + "events": "Events", "no-events": "ไม่มีอีเวนท์", "control-panel": "แผงควบคุมอีเวนท์", "delete-events": "ลบอีเว้นท์", @@ -13,5 +13,5 @@ "filter-user.placeholder": "พิมพ์ชื่อผู้ใช้เพื่อฟิลเตอร์", "filter-group": "ฟิลเตอร์โดยกลุ่ม", "filter-group.placeholder": "พิมพ์ชื่อกลุ่มเพื่อฟิลเตอร์", - "filter-per-page": "Per Page" + "filter-per-page": "ต่อหน้า" } \ No newline at end of file diff --git a/public/language/th/admin/advanced/logs.json b/public/language/th/admin/advanced/logs.json index ba7e879560..ecd0296af7 100644 --- a/public/language/th/admin/advanced/logs.json +++ b/public/language/th/admin/advanced/logs.json @@ -1,5 +1,5 @@ { - "logs": "บันทึกผลกิจกรรม", + "logs": "Logs", "control-panel": "แผงควบคุมบันทึกผลกิจกรรม", "reload": "โหลดบันทึกผลกิจกรรมอีกครั้ง", "clear": "ล้างบันทึกผลกิจกรรม", diff --git a/public/language/th/admin/appearance/customise.json b/public/language/th/admin/appearance/customise.json index a7b479126f..f9d55fc61e 100644 --- a/public/language/th/admin/appearance/customise.json +++ b/public/language/th/admin/appearance/customise.json @@ -1,20 +1,20 @@ { "customise": "Customise", - "custom-css": "Custom CSS/SASS", - "custom-css.description": "Enter your own CSS/SASS declarations here, which will be applied after all other styles.", - "custom-css.enable": "Enable Custom CSS/SASS", + "custom-css": "ปรับแต่ง CSS/SASS", + "custom-css.description": "ป้อน CSS/SASS ของคุณที่นี่ ซึ่งจะเรียกใช้งานหลังสไตล์อื่นทั้งหมด", + "custom-css.enable": "เปิดการปรับแต่ง CSS/SASS", "custom-js": "ปรับแต่งจาวาสคริปต์", "custom-js.description": "ป้อนจาวาสคริปต์ของคุณเองที่นี่ จะดำเนินการหลังจากโหลดหน้าเว็บเสร็จสมบูรณ์แล้ว", "custom-js.enable": "เปิดการปรับแต่งจาวาสคริปต์", "custom-header": "ปรับแต่งส่วนหัว", - "custom-header.description": "Enter custom HTML here (ex. Meta Tags, etc.), which will be appended to the <head> section of your forum's markup. Script tags are allowed, but are discouraged, as the Custom Javascript tab is available.", + "custom-header.description": "ใส่ HTML ที่ปรับแต่งที่นี่ (เช่น แท็ก Meta ฯลฯ) ซึ่งจะต่อท้ายในส่วน <head> ในมาร์คอัพของฟอรัมคุณ แท็ก Script สามารถใช้ได้แต่ไม่แนะนำ เนื่องจากสามารถปรับแต่งได้ที่แท็บ ปรับแต่งจาวาสคริปต์", "custom-header.enable": "เปิดการปรับแต่งส่วนหัว", "custom-css.livereload": "เปิดการบังคับให้มีผลในทันที", "custom-css.livereload.description": "การเปิดนี้จะบังคับทุกเซสชั่นบนทุกอุปกรณ์ภายใต้บัญชีของคุณให้ถูกรีเฟรชทันทีที่คุณกดบันทึก", "bsvariables": "_variables.scss", - "bsvariables.description": "Override bootstrap variables here. You can also use a tool like bootstrap.build and paste the output here.
Changes require a rebuild & restart.", - "bsvariables.enable": "Enable _variables.scss" + "bsvariables.description": "แทนที่ค่าตัวแปร bootstrap ที่นี่ คุณยังสามารถใช้เครื่องมือ bootstrap.build และคัดลอกผลลัพธ์ลงในนี้
การเปลี่ยนแปลงต้องทำ rebuild และเริ่มต้นใหม่", + "bsvariables.enable": "เปิด _variables.scss" } \ No newline at end of file diff --git a/public/language/th/admin/appearance/skins.json b/public/language/th/admin/appearance/skins.json index e42d9bdca4..2af418a75c 100644 --- a/public/language/th/admin/appearance/skins.json +++ b/public/language/th/admin/appearance/skins.json @@ -1,16 +1,16 @@ { "skins": "Skins", - "bootswatch-skins": "Bootswatch Skins", - "custom-skins": "Custom Skins", - "add-skin": "Add Skin", - "save-custom-skins": "Save Custom Skins", - "save-custom-skins-success": "Custom skins saved successfully", - "custom-skin-name": "Custom Skin Name", - "custom-skin-variables": "Custom Skin Variables", + "bootswatch-skins": "หน้ากากจาก Bootswatch", + "custom-skins": "หน้ากากปรับแต่ง", + "add-skin": "เพิ่มหน้ากาก", + "save-custom-skins": "บันทึกหน้ากากที่ปรับแต่ง", + "save-custom-skins-success": "บันทึกหน้ากากปรับแต่งสำเร็จแล้ว", + "custom-skin-name": "ชื่อของหน้ากากปรับแต่ง", + "custom-skin-variables": "ตัวแปรของหน้ากากปรับแต่ง", "loading": "กำลังโหลดหน้ากาก", "homepage": "หน้าแรก", "select-skin": "เลือกหน้ากาก", - "revert-skin": "Revert Skin", + "revert-skin": "ย้อนกลับหน้ากาก", "current-skin": "หน้ากากปัจจุบัน", "skin-updated": "หน้ากากถูกอัปเดทแล้ว", "applied-success": "%1 หน้ากากถูกใช้เสร็จสิ้นแล้ว", diff --git a/public/language/th/admin/appearance/themes.json b/public/language/th/admin/appearance/themes.json index da26b0dbd6..253a9004e1 100644 --- a/public/language/th/admin/appearance/themes.json +++ b/public/language/th/admin/appearance/themes.json @@ -3,11 +3,11 @@ "checking-for-installed": "กำลังตรวจสอบธีมที่ถูกติดตั้งแล้ว", "homepage": "หน้าแรก", "select-theme": "เลือกธีม", - "revert-theme": "Revert Theme", + "revert-theme": "ย้อนกลับธีม", "current-theme": "ธีมปัจจุบัน", "no-themes": "ไม่พบธีมที่ถูกติดตั้งแล้ว", "revert-confirm": "คุณแน่ใจแล้วใช่ไหมที่ต้องการกลับไปใช้ธีมพื้นฐานของ NodeBB?", "theme-changed": "ธีมถูกเปลี่ยนแล้ว", "revert-success": "คุณได้ทำการเปลี่ยน NodeBB ของคุณให้กลับไปใช้ธีมพื้นฐานของมันแล้ว", - "restart-to-activate": "Please rebuild and restart your NodeBB to fully activate this theme." + "restart-to-activate": "โปรดสร้างระบบใหม่และเริ่มต้น NodeBB เพื่อเปิดใช้งานธีมใหม่" } \ No newline at end of file diff --git a/public/language/th/admin/dashboard.json b/public/language/th/admin/dashboard.json index 6ad973f5f3..1944bf2254 100644 --- a/public/language/th/admin/dashboard.json +++ b/public/language/th/admin/dashboard.json @@ -1,35 +1,35 @@ { "forum-traffic": "Forum Traffic", - "page-views": "Page Views", - "unique-visitors": "Unique Visitors", - "logins": "Logins", - "new-users": "New Users", - "posts": "Posts", - "topics": "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": "จำนวนครั้งที่ดูหน้าเพจ", + "unique-visitors": "จำนวนผู้ใช้ที่ไม่ซ้ำกัน", + "logins": "จำนวนล็อกอิน", + "new-users": "ผู้ใช้ใหม่", + "posts": "จำนวนโพสต์", + "topics": "จำนวนกระทู้", + "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.yesterday": "Yesterday", - "stats.today": "Today", - "stats.last-week": "Last Week", - "stats.this-week": "This Week", - "stats.last-month": "Last Month", - "stats.this-month": "This Month", - "stats.all": "All Time", + "stats.yesterday": "เมื่อวาน", + "stats.today": "วันนี้", + "stats.last-week": "สัปดาห์ที่แล้ว", + "stats.this-week": "สัปดาห์นี้", + "stats.last-month": "เดือนที่แล้ว", + "stats.this-month": "เดือนนี้", + "stats.all": "ช่วงเวลาทั้งหมด", - "updates": "Updates", - "running-version": "You are running NodeBB v%1.", - "keep-updated": "Always make sure that your NodeBB is up to date for the latest security patches and bug fixes.", - "up-to-date": "You are up-to-date ", - "upgrade-available": "A new version (v%1) has been released. Consider upgrading your NodeBB.", - "prerelease-upgrade-available": "This is an outdated pre-release version of NodeBB. A new version (v%1) has been released. Consider upgrading your NodeBB.", - "prerelease-warning": "This is a pre-release version of NodeBB. Unintended bugs may occur. ", + "updates": "จำนวนอัพเดท", + "running-version": "คุณกำลังใช้ NodeBB v%1.", + "keep-updated": "ให้แน่ใจว่า NodeBB ของคุณเป็นรุ่นล่าสุด เพื่อมีการแก้ไขความปลอดภัยและข้อบกพร่องล่าสุด", + "up-to-date": "คุณใช้ รุ่นล่าสุด ", + "upgrade-available": "มีเวอร์ชันใหม่ (v%1) ออกมาแล้ว โปรดพิจารณา อัพเกรด NodeBB ของคุณ.", + "prerelease-upgrade-available": "นี่เป็นรุ่นทดลองของ NodeBB ที่ล้าสมัยแล้ว มีเวอร์ชั่นใหม่ (v%1) ออกมา โปรดพิจารณา อัพเกรด NodeBB ของคุณ.", + "prerelease-warning": "นี่เป็น รุ่นทดลอง ของ NodeBB อาจมีข้อบกพร่องที่ไม่ตั้งใจ", "fallback-emailer-not-found": "Fallback emailer not found!", "running-in-development": "Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator", "latest-lookup-failed": "Failed to look up latest available version of NodeBB", @@ -87,15 +87,15 @@ "details.no-searches": "No searches have been made within the selected timeframe", "details.no-logins": "No logins have been recorded within the selected timeframe", "details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions", - "details.logins-login-time": "Login Time", - "start": "Start", - "end": "End", - "filter": "Filter", - "view-as-json": "View as JSON", - "expand-analytics": "Expand analytics", - "clear-search-history": "Clear Search History", - "clear-search-history-confirm": "Are you sure you want to clear entire search history?", - "search-term": "Term", - "search-count": "Count", - "view-all": "View all" + "details.logins-login-time": "เวลาที่ล็อกอิน", + "start": "เริ่มต้น", + "end": "สิ้นสุด", + "filter": "ฟิลเตอร์", + "view-as-json": "ดูในรูปแบบ JSON", + "expand-analytics": "ขยายดู analytics", + "clear-search-history": "ล้างประวัติการค้นหา", + "clear-search-history-confirm": "คุณต้องการล้างประวัติการค้นหาทั้งหมดหรือไม่?", + "search-term": "ข้อความ", + "search-count": "จำนวนครั้ง", + "view-all": "ดูทั้งหมด" } From 18eec1476097615e98aae4001fb24b616856ef92 Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Thu, 11 Apr 2024 20:46:27 +0000 Subject: [PATCH 082/168] chore(i18n): fallback strings for new resources: nodebb.admin-settings-navigation --- public/language/ar/admin/settings/navigation.json | 2 +- public/language/bg/admin/settings/navigation.json | 2 +- public/language/bn/admin/settings/navigation.json | 2 +- public/language/cs/admin/settings/navigation.json | 2 +- public/language/da/admin/settings/navigation.json | 2 +- public/language/de/admin/settings/navigation.json | 2 +- public/language/el/admin/settings/navigation.json | 2 +- public/language/en-US/admin/settings/navigation.json | 2 +- public/language/en-x-pirate/admin/settings/navigation.json | 2 +- public/language/es/admin/settings/navigation.json | 2 +- public/language/et/admin/settings/navigation.json | 2 +- public/language/fa-IR/admin/settings/navigation.json | 2 +- public/language/fi/admin/settings/navigation.json | 2 +- public/language/fr/admin/settings/navigation.json | 2 +- public/language/gl/admin/settings/navigation.json | 2 +- public/language/he/admin/settings/navigation.json | 2 +- public/language/hr/admin/settings/navigation.json | 2 +- public/language/hu/admin/settings/navigation.json | 2 +- public/language/hy/admin/settings/navigation.json | 2 +- public/language/id/admin/settings/navigation.json | 2 +- public/language/it/admin/settings/navigation.json | 2 +- public/language/ja/admin/settings/navigation.json | 2 +- public/language/ko/admin/settings/navigation.json | 2 +- public/language/lt/admin/settings/navigation.json | 2 +- public/language/lv/admin/settings/navigation.json | 2 +- public/language/ms/admin/settings/navigation.json | 2 +- public/language/nb/admin/settings/navigation.json | 2 +- public/language/nl/admin/settings/navigation.json | 2 +- public/language/pl/admin/settings/navigation.json | 2 +- public/language/pt-BR/admin/settings/navigation.json | 2 +- public/language/pt-PT/admin/settings/navigation.json | 2 +- public/language/ro/admin/settings/navigation.json | 2 +- public/language/ru/admin/settings/navigation.json | 2 +- public/language/rw/admin/settings/navigation.json | 2 +- public/language/sc/admin/settings/navigation.json | 2 +- public/language/sk/admin/settings/navigation.json | 2 +- public/language/sl/admin/settings/navigation.json | 2 +- public/language/sq-AL/admin/settings/navigation.json | 2 +- public/language/sr/admin/settings/navigation.json | 2 +- public/language/sv/admin/settings/navigation.json | 2 +- public/language/th/admin/settings/navigation.json | 2 +- public/language/tr/admin/settings/navigation.json | 2 +- public/language/uk/admin/settings/navigation.json | 2 +- public/language/vi/admin/settings/navigation.json | 2 +- public/language/zh-CN/admin/settings/navigation.json | 2 +- public/language/zh-TW/admin/settings/navigation.json | 2 +- 46 files changed, 46 insertions(+), 46 deletions(-) diff --git a/public/language/ar/admin/settings/navigation.json b/public/language/ar/admin/settings/navigation.json index 931ac5f4ba..3a71061ecf 100644 --- a/public/language/ar/admin/settings/navigation.json +++ b/public/language/ar/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: optional", "properties": "Properties:", - "groups": "Groups:", + "show-to-groups": "Show to Groups:", "open-new-window": "Open in a new window", "dropdown": "Dropdown", "dropdown-placeholder": "Place your dropdown menu items below, ie:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/bg/admin/settings/navigation.json b/public/language/bg/admin/settings/navigation.json index 88842778bd..0fd9d4976f 100644 --- a/public/language/bg/admin/settings/navigation.json +++ b/public/language/bg/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "Идентификатор: незадължително", "properties": "Свойства:", - "groups": "Групи:", + "show-to-groups": "Show to Groups:", "open-new-window": "Отваряне в нов прозорец", "dropdown": "Падащо меню", "dropdown-placeholder": "Въведете елементите на падащото меню по-долу. Пример:
<li><a class="dropdown-item" href="https://myforum.com">Връзка 1</a></li>", diff --git a/public/language/bn/admin/settings/navigation.json b/public/language/bn/admin/settings/navigation.json index 931ac5f4ba..3a71061ecf 100644 --- a/public/language/bn/admin/settings/navigation.json +++ b/public/language/bn/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: optional", "properties": "Properties:", - "groups": "Groups:", + "show-to-groups": "Show to Groups:", "open-new-window": "Open in a new window", "dropdown": "Dropdown", "dropdown-placeholder": "Place your dropdown menu items below, ie:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/cs/admin/settings/navigation.json b/public/language/cs/admin/settings/navigation.json index 5d2f93fcb2..a4ad7fe1dc 100644 --- a/public/language/cs/admin/settings/navigation.json +++ b/public/language/cs/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: doporučené", "properties": "Vlastnosti:", - "groups": "Skupiny:", + "show-to-groups": "Show to Groups:", "open-new-window": "Otevřít v novém okně", "dropdown": "Dropdown", "dropdown-placeholder": "Place your dropdown menu items below, ie:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/da/admin/settings/navigation.json b/public/language/da/admin/settings/navigation.json index 931ac5f4ba..3a71061ecf 100644 --- a/public/language/da/admin/settings/navigation.json +++ b/public/language/da/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: optional", "properties": "Properties:", - "groups": "Groups:", + "show-to-groups": "Show to Groups:", "open-new-window": "Open in a new window", "dropdown": "Dropdown", "dropdown-placeholder": "Place your dropdown menu items below, ie:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/de/admin/settings/navigation.json b/public/language/de/admin/settings/navigation.json index 0fe6f19e9c..fbbb4f5ca0 100644 --- a/public/language/de/admin/settings/navigation.json +++ b/public/language/de/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: optional", "properties": "Eigenschaften:", - "groups": "Gruppen:", + "show-to-groups": "Show to Groups:", "open-new-window": "In neuem Fenster öffnen", "dropdown": "Dropdown", "dropdown-placeholder": "Platziere deine Dropdown-Menüpunkte unten, d. h.:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/el/admin/settings/navigation.json b/public/language/el/admin/settings/navigation.json index 931ac5f4ba..3a71061ecf 100644 --- a/public/language/el/admin/settings/navigation.json +++ b/public/language/el/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: optional", "properties": "Properties:", - "groups": "Groups:", + "show-to-groups": "Show to Groups:", "open-new-window": "Open in a new window", "dropdown": "Dropdown", "dropdown-placeholder": "Place your dropdown menu items below, ie:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/en-US/admin/settings/navigation.json b/public/language/en-US/admin/settings/navigation.json index 931ac5f4ba..3a71061ecf 100644 --- a/public/language/en-US/admin/settings/navigation.json +++ b/public/language/en-US/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: optional", "properties": "Properties:", - "groups": "Groups:", + "show-to-groups": "Show to Groups:", "open-new-window": "Open in a new window", "dropdown": "Dropdown", "dropdown-placeholder": "Place your dropdown menu items below, ie:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/en-x-pirate/admin/settings/navigation.json b/public/language/en-x-pirate/admin/settings/navigation.json index 931ac5f4ba..3a71061ecf 100644 --- a/public/language/en-x-pirate/admin/settings/navigation.json +++ b/public/language/en-x-pirate/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: optional", "properties": "Properties:", - "groups": "Groups:", + "show-to-groups": "Show to Groups:", "open-new-window": "Open in a new window", "dropdown": "Dropdown", "dropdown-placeholder": "Place your dropdown menu items below, ie:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/es/admin/settings/navigation.json b/public/language/es/admin/settings/navigation.json index 41195b34e7..08de3e65ce 100644 --- a/public/language/es/admin/settings/navigation.json +++ b/public/language/es/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: opcional", "properties": "Propiedades:", - "groups": "Grupos:", + "show-to-groups": "Show to Groups:", "open-new-window": "Abrir en una ventana nueva", "dropdown": "Dropdown", "dropdown-placeholder": "Place your dropdown menu items below, ie:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/et/admin/settings/navigation.json b/public/language/et/admin/settings/navigation.json index 931ac5f4ba..3a71061ecf 100644 --- a/public/language/et/admin/settings/navigation.json +++ b/public/language/et/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: optional", "properties": "Properties:", - "groups": "Groups:", + "show-to-groups": "Show to Groups:", "open-new-window": "Open in a new window", "dropdown": "Dropdown", "dropdown-placeholder": "Place your dropdown menu items below, ie:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/fa-IR/admin/settings/navigation.json b/public/language/fa-IR/admin/settings/navigation.json index 931ac5f4ba..3a71061ecf 100644 --- a/public/language/fa-IR/admin/settings/navigation.json +++ b/public/language/fa-IR/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: optional", "properties": "Properties:", - "groups": "Groups:", + "show-to-groups": "Show to Groups:", "open-new-window": "Open in a new window", "dropdown": "Dropdown", "dropdown-placeholder": "Place your dropdown menu items below, ie:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/fi/admin/settings/navigation.json b/public/language/fi/admin/settings/navigation.json index 0323a24c80..814c47108a 100644 --- a/public/language/fi/admin/settings/navigation.json +++ b/public/language/fi/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: optional", "properties": "Properties:", - "groups": "Ryhmät:", + "show-to-groups": "Show to Groups:", "open-new-window": "Open in a new window", "dropdown": "Dropdown", "dropdown-placeholder": "Place your dropdown menu items below, ie:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/fr/admin/settings/navigation.json b/public/language/fr/admin/settings/navigation.json index a3da06fe34..677e35da8f 100644 --- a/public/language/fr/admin/settings/navigation.json +++ b/public/language/fr/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID : optionnel", "properties": "Propriétés :", - "groups": "Groupes :", + "show-to-groups": "Show to Groups:", "open-new-window": "Ouvrir dans une nouvelle fenêtre", "dropdown": "Menu déroulant", "dropdown-placeholder": "Placer vos éléments de menu déroulant ci-dessous, par exemple :
https://myforum.com", diff --git a/public/language/gl/admin/settings/navigation.json b/public/language/gl/admin/settings/navigation.json index 931ac5f4ba..3a71061ecf 100644 --- a/public/language/gl/admin/settings/navigation.json +++ b/public/language/gl/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: optional", "properties": "Properties:", - "groups": "Groups:", + "show-to-groups": "Show to Groups:", "open-new-window": "Open in a new window", "dropdown": "Dropdown", "dropdown-placeholder": "Place your dropdown menu items below, ie:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/he/admin/settings/navigation.json b/public/language/he/admin/settings/navigation.json index 69d79fc3e5..8d1a287a70 100644 --- a/public/language/he/admin/settings/navigation.json +++ b/public/language/he/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "id: אופציונאלי", "properties": "הרשאות:", - "groups": "קבוצות:", + "show-to-groups": "Show to Groups:", "open-new-window": "ייפתח בכרטיסייה חדשה", "dropdown": "תפריט נפתח", "dropdown-placeholder": "מקמו את פריטי התפריט הנפתח , באופן הבא:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/hr/admin/settings/navigation.json b/public/language/hr/admin/settings/navigation.json index f26633bb75..8e1d62adfd 100644 --- a/public/language/hr/admin/settings/navigation.json +++ b/public/language/hr/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: opcionalno", "properties": "Postavke", - "groups": "Groups:", + "show-to-groups": "Show to Groups:", "open-new-window": "Otvori u novom prozoru", "dropdown": "Dropdown", "dropdown-placeholder": "Place your dropdown menu items below, ie:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/hu/admin/settings/navigation.json b/public/language/hu/admin/settings/navigation.json index 14adda31e1..12a0210e99 100644 --- a/public/language/hu/admin/settings/navigation.json +++ b/public/language/hu/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "HTML azonosító: nem kötelező", "properties": "Tulajdonságok:", - "groups": "Csoportok:", + "show-to-groups": "Show to Groups:", "open-new-window": "Megnyitás új ablakban", "dropdown": "Dropdown", "dropdown-placeholder": "Place your dropdown menu items below, ie:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/hy/admin/settings/navigation.json b/public/language/hy/admin/settings/navigation.json index 16d65a8818..4e77beb216 100644 --- a/public/language/hy/admin/settings/navigation.json +++ b/public/language/hy/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: ընտրովի ", "properties": "Հատկություններ", - "groups": "Խմբեր", + "show-to-groups": "Show to Groups:", "open-new-window": "Բացել նոր պատուհանում", "dropdown": "Բացվող", "dropdown-placeholder": "Տեղադրեք ձեր բացվող ընտրացանկի տարրերը ստորև, այսինքն՝
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/id/admin/settings/navigation.json b/public/language/id/admin/settings/navigation.json index 931ac5f4ba..3a71061ecf 100644 --- a/public/language/id/admin/settings/navigation.json +++ b/public/language/id/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: optional", "properties": "Properties:", - "groups": "Groups:", + "show-to-groups": "Show to Groups:", "open-new-window": "Open in a new window", "dropdown": "Dropdown", "dropdown-placeholder": "Place your dropdown menu items below, ie:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/it/admin/settings/navigation.json b/public/language/it/admin/settings/navigation.json index c422cefc0d..b16ba287ed 100644 --- a/public/language/it/admin/settings/navigation.json +++ b/public/language/it/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: opzionale", "properties": "Proprietà:", - "groups": "Gruppi:", + "show-to-groups": "Show to Groups:", "open-new-window": "Apri in una nuova finestra", "dropdown": "Menu a tendina", "dropdown-placeholder": "Posiziona le voci del menu a discesa qui sotto, es.:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/ja/admin/settings/navigation.json b/public/language/ja/admin/settings/navigation.json index e586e49ea0..52567e3d04 100644 --- a/public/language/ja/admin/settings/navigation.json +++ b/public/language/ja/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: 任意", "properties": "プロパティ:", - "groups": "Groups:", + "show-to-groups": "Show to Groups:", "open-new-window": "新しいウィンドウで開く", "dropdown": "Dropdown", "dropdown-placeholder": "Place your dropdown menu items below, ie:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/ko/admin/settings/navigation.json b/public/language/ko/admin/settings/navigation.json index 2498547e71..36104520b9 100644 --- a/public/language/ko/admin/settings/navigation.json +++ b/public/language/ko/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: 선택 사항", "properties": "속성:", - "groups": "그룹:", + "show-to-groups": "Show to Groups:", "open-new-window": "새 창에서 열기", "dropdown": "드롭다운", "dropdown-placeholder": "아래에 드롭다운 메뉴 항목을 배치하세요. 예를 들어:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/lt/admin/settings/navigation.json b/public/language/lt/admin/settings/navigation.json index 931ac5f4ba..3a71061ecf 100644 --- a/public/language/lt/admin/settings/navigation.json +++ b/public/language/lt/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: optional", "properties": "Properties:", - "groups": "Groups:", + "show-to-groups": "Show to Groups:", "open-new-window": "Open in a new window", "dropdown": "Dropdown", "dropdown-placeholder": "Place your dropdown menu items below, ie:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/lv/admin/settings/navigation.json b/public/language/lv/admin/settings/navigation.json index 8148ce1179..fd8267d392 100644 --- a/public/language/lv/admin/settings/navigation.json +++ b/public/language/lv/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: neobligāts", "properties": "Īpašības:", - "groups": "Grupas:", + "show-to-groups": "Show to Groups:", "open-new-window": "Rādīt jaunā logā", "dropdown": "Dropdown", "dropdown-placeholder": "Place your dropdown menu items below, ie:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/ms/admin/settings/navigation.json b/public/language/ms/admin/settings/navigation.json index 931ac5f4ba..3a71061ecf 100644 --- a/public/language/ms/admin/settings/navigation.json +++ b/public/language/ms/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: optional", "properties": "Properties:", - "groups": "Groups:", + "show-to-groups": "Show to Groups:", "open-new-window": "Open in a new window", "dropdown": "Dropdown", "dropdown-placeholder": "Place your dropdown menu items below, ie:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/nb/admin/settings/navigation.json b/public/language/nb/admin/settings/navigation.json index 931ac5f4ba..3a71061ecf 100644 --- a/public/language/nb/admin/settings/navigation.json +++ b/public/language/nb/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: optional", "properties": "Properties:", - "groups": "Groups:", + "show-to-groups": "Show to Groups:", "open-new-window": "Open in a new window", "dropdown": "Dropdown", "dropdown-placeholder": "Place your dropdown menu items below, ie:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/nl/admin/settings/navigation.json b/public/language/nl/admin/settings/navigation.json index 931ac5f4ba..3a71061ecf 100644 --- a/public/language/nl/admin/settings/navigation.json +++ b/public/language/nl/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: optional", "properties": "Properties:", - "groups": "Groups:", + "show-to-groups": "Show to Groups:", "open-new-window": "Open in a new window", "dropdown": "Dropdown", "dropdown-placeholder": "Place your dropdown menu items below, ie:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/pl/admin/settings/navigation.json b/public/language/pl/admin/settings/navigation.json index c62c83f88b..ddf4f640fc 100644 --- a/public/language/pl/admin/settings/navigation.json +++ b/public/language/pl/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: opcjonalnie", "properties": "Ustawienia:", - "groups": "Grupy:", + "show-to-groups": "Show to Groups:", "open-new-window": "Otwórz w nowym oknie", "dropdown": "Lista rozwijana", "dropdown-placeholder": "Umieść pozycje menu rozwijanego poniżej, np.:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/pt-BR/admin/settings/navigation.json b/public/language/pt-BR/admin/settings/navigation.json index 2394e4a261..d47c0ec603 100644 --- a/public/language/pt-BR/admin/settings/navigation.json +++ b/public/language/pt-BR/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: opcional", "properties": "Propriedades:", - "groups": "Grupos:", + "show-to-groups": "Show to Groups:", "open-new-window": "Abrir em uma nova janela", "dropdown": "Dropdown", "dropdown-placeholder": "Place your dropdown menu items below, ie:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/pt-PT/admin/settings/navigation.json b/public/language/pt-PT/admin/settings/navigation.json index d395ac853e..805cea4996 100644 --- a/public/language/pt-PT/admin/settings/navigation.json +++ b/public/language/pt-PT/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: opcional", "properties": "Propriedades:", - "groups": "Grupos:", + "show-to-groups": "Show to Groups:", "open-new-window": "Abrir numa nova janela", "dropdown": "Dropdown", "dropdown-placeholder": "Place your dropdown menu items below, ie:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/ro/admin/settings/navigation.json b/public/language/ro/admin/settings/navigation.json index 931ac5f4ba..3a71061ecf 100644 --- a/public/language/ro/admin/settings/navigation.json +++ b/public/language/ro/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: optional", "properties": "Properties:", - "groups": "Groups:", + "show-to-groups": "Show to Groups:", "open-new-window": "Open in a new window", "dropdown": "Dropdown", "dropdown-placeholder": "Place your dropdown menu items below, ie:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/ru/admin/settings/navigation.json b/public/language/ru/admin/settings/navigation.json index d0149b36ef..945646eb3c 100644 --- a/public/language/ru/admin/settings/navigation.json +++ b/public/language/ru/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: опционально", "properties": "Свойства:", - "groups": "Группы:", + "show-to-groups": "Show to Groups:", "open-new-window": "Открывать в новом окне", "dropdown": "Dropdown", "dropdown-placeholder": "Place your dropdown menu items below, ie:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/rw/admin/settings/navigation.json b/public/language/rw/admin/settings/navigation.json index 931ac5f4ba..3a71061ecf 100644 --- a/public/language/rw/admin/settings/navigation.json +++ b/public/language/rw/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: optional", "properties": "Properties:", - "groups": "Groups:", + "show-to-groups": "Show to Groups:", "open-new-window": "Open in a new window", "dropdown": "Dropdown", "dropdown-placeholder": "Place your dropdown menu items below, ie:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/sc/admin/settings/navigation.json b/public/language/sc/admin/settings/navigation.json index 931ac5f4ba..3a71061ecf 100644 --- a/public/language/sc/admin/settings/navigation.json +++ b/public/language/sc/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: optional", "properties": "Properties:", - "groups": "Groups:", + "show-to-groups": "Show to Groups:", "open-new-window": "Open in a new window", "dropdown": "Dropdown", "dropdown-placeholder": "Place your dropdown menu items below, ie:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/sk/admin/settings/navigation.json b/public/language/sk/admin/settings/navigation.json index c1bb688792..cb58063f42 100644 --- a/public/language/sk/admin/settings/navigation.json +++ b/public/language/sk/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: doporučené", "properties": "Vlastnosti:", - "groups": "Groups:", + "show-to-groups": "Show to Groups:", "open-new-window": "Otvoriť v novom okne", "dropdown": "Dropdown", "dropdown-placeholder": "Place your dropdown menu items below, ie:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/sl/admin/settings/navigation.json b/public/language/sl/admin/settings/navigation.json index 2c52824df0..a078108c8b 100644 --- a/public/language/sl/admin/settings/navigation.json +++ b/public/language/sl/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: izbirno", "properties": "Lastnosti:", - "groups": "Skupine", + "show-to-groups": "Show to Groups:", "open-new-window": "Odpri v novem oknu", "dropdown": "Dropdown", "dropdown-placeholder": "Place your dropdown menu items below, ie:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/sq-AL/admin/settings/navigation.json b/public/language/sq-AL/admin/settings/navigation.json index 931ac5f4ba..3a71061ecf 100644 --- a/public/language/sq-AL/admin/settings/navigation.json +++ b/public/language/sq-AL/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: optional", "properties": "Properties:", - "groups": "Groups:", + "show-to-groups": "Show to Groups:", "open-new-window": "Open in a new window", "dropdown": "Dropdown", "dropdown-placeholder": "Place your dropdown menu items below, ie:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/sr/admin/settings/navigation.json b/public/language/sr/admin/settings/navigation.json index 931ac5f4ba..3a71061ecf 100644 --- a/public/language/sr/admin/settings/navigation.json +++ b/public/language/sr/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: optional", "properties": "Properties:", - "groups": "Groups:", + "show-to-groups": "Show to Groups:", "open-new-window": "Open in a new window", "dropdown": "Dropdown", "dropdown-placeholder": "Place your dropdown menu items below, ie:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/sv/admin/settings/navigation.json b/public/language/sv/admin/settings/navigation.json index 931ac5f4ba..3a71061ecf 100644 --- a/public/language/sv/admin/settings/navigation.json +++ b/public/language/sv/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: optional", "properties": "Properties:", - "groups": "Groups:", + "show-to-groups": "Show to Groups:", "open-new-window": "Open in a new window", "dropdown": "Dropdown", "dropdown-placeholder": "Place your dropdown menu items below, ie:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/th/admin/settings/navigation.json b/public/language/th/admin/settings/navigation.json index 931ac5f4ba..3a71061ecf 100644 --- a/public/language/th/admin/settings/navigation.json +++ b/public/language/th/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: optional", "properties": "Properties:", - "groups": "Groups:", + "show-to-groups": "Show to Groups:", "open-new-window": "Open in a new window", "dropdown": "Dropdown", "dropdown-placeholder": "Place your dropdown menu items below, ie:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/tr/admin/settings/navigation.json b/public/language/tr/admin/settings/navigation.json index 11cbd021b9..53ad5ec5e2 100644 --- a/public/language/tr/admin/settings/navigation.json +++ b/public/language/tr/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: opsiyonel", "properties": "Özellikler:", - "groups": "Gruplar", + "show-to-groups": "Show to Groups:", "open-new-window": "Yeni pencerede aç", "dropdown": "Açılır liste", "dropdown-placeholder": "Place your dropdown menu items below, ie:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/uk/admin/settings/navigation.json b/public/language/uk/admin/settings/navigation.json index 821b46fe18..1d77fa0755 100644 --- a/public/language/uk/admin/settings/navigation.json +++ b/public/language/uk/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: необов'язковий", "properties": "Властивості:", - "groups": "Groups:", + "show-to-groups": "Show to Groups:", "open-new-window": "Відкривати у новому вікні", "dropdown": "Dropdown", "dropdown-placeholder": "Place your dropdown menu items below, ie:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/vi/admin/settings/navigation.json b/public/language/vi/admin/settings/navigation.json index f9548db054..054160bc86 100644 --- a/public/language/vi/admin/settings/navigation.json +++ b/public/language/vi/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: không bắt buộc", "properties": "Thuộc tính:", - "groups": "Nhóm:", + "show-to-groups": "Show to Groups:", "open-new-window": "Mở trong một cửa sổ mới", "dropdown": "Thả xuống", "dropdown-placeholder": "Đặt các mục menu thả xuống của bạn bên dưới, tức là:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/zh-CN/admin/settings/navigation.json b/public/language/zh-CN/admin/settings/navigation.json index 78aa03c388..b0b0d94ed7 100644 --- a/public/language/zh-CN/admin/settings/navigation.json +++ b/public/language/zh-CN/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID:可选", "properties": "属性:", - "groups": "群组:", + "show-to-groups": "Show to Groups:", "open-new-window": "在新窗口中打开", "dropdown": "下拉列表", "dropdown-placeholder": "将你的下拉菜单项目放在下面,即:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/zh-TW/admin/settings/navigation.json b/public/language/zh-TW/admin/settings/navigation.json index b9414b37e2..3e0c51748a 100644 --- a/public/language/zh-TW/admin/settings/navigation.json +++ b/public/language/zh-TW/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID:可選", "properties": "屬性:", - "groups": "群組:", + "show-to-groups": "Show to Groups:", "open-new-window": "在新窗口中打開", "dropdown": "Dropdown", "dropdown-placeholder": "Place your dropdown menu items below, ie:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", From f192d9243996612df09fa5b1b6b47274bbf2b831 Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Fri, 12 Apr 2024 09:19:15 +0000 Subject: [PATCH 083/168] Latest translations and fallbacks --- .../bg/admin/settings/navigation.json | 2 +- public/language/th/admin/extend/widgets.json | 58 ++-- public/language/th/admin/manage/users.json | 106 ++++---- public/language/th/email.json | 10 +- public/language/th/error.json | 8 +- public/language/th/flags.json | 86 +++--- public/language/th/global.json | 78 +++--- public/language/th/modules.json | 4 +- public/language/th/notifications.json | 24 +- public/language/th/rewards.json | 14 +- public/language/th/tags.json | 12 +- public/language/th/topic.json | 252 +++++++++--------- public/language/th/unread.json | 8 +- public/language/th/uploads.json | 6 +- public/language/th/user.json | 2 +- 15 files changed, 335 insertions(+), 335 deletions(-) diff --git a/public/language/bg/admin/settings/navigation.json b/public/language/bg/admin/settings/navigation.json index 0fd9d4976f..90332bf37c 100644 --- a/public/language/bg/admin/settings/navigation.json +++ b/public/language/bg/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "Идентификатор: незадължително", "properties": "Свойства:", - "show-to-groups": "Show to Groups:", + "show-to-groups": "Показване на групите:", "open-new-window": "Отваряне в нов прозорец", "dropdown": "Падащо меню", "dropdown-placeholder": "Въведете елементите на падащото меню по-долу. Пример:
<li><a class="dropdown-item" href="https://myforum.com">Връзка 1</a></li>", diff --git a/public/language/th/admin/extend/widgets.json b/public/language/th/admin/extend/widgets.json index 5d2832feed..41d352d04b 100644 --- a/public/language/th/admin/extend/widgets.json +++ b/public/language/th/admin/extend/widgets.json @@ -1,35 +1,35 @@ { "widgets": "Widgets", - "available": "Available Widgets", - "explanation": "Select a widget from the dropdown menu and then drag and drop it into a template's widget area on the left.", - "none-installed": "No widgets found! Activate the widget essentials plugin in the plugins control panel.", - "clone-from": "Clone widgets from", - "containers.available": "Available Containers", - "containers.explanation": "Drag and drop on top of any widget", - "containers.none": "None", - "container.well": "Well", - "container.jumbotron": "Jumbotron", - "container.card": "Card", - "container.card-header": "Card Header", - "container.card-body": "Card Body", - "container.alert": "Alert", + "available": "วิดเจ็ดที่มี", + "explanation": "เลือกวิดเจ็ตจากเมนูดรอปดาวน์ จากนั้นลากไปปล่อยในบริเวณของวิดเจ็ตในเทมเพลตด้านซ้ายมือ", + "none-installed": "ไม่พบวิดเจ็ต! โปรดเรียกใช้งานปลั๊กอิน widget essentials ในแผงควบคุม Plugins", + "clone-from": "คัดลอกวิดเจ็ตจาก", + "containers.available": "คอนเทนเนอร์ที่มี", + "containers.explanation": "ลากแล้วปล่อยลงบนวิดเจ็ตใดๆ", + "containers.none": "ไม่มี", + "container.well": "แถบขนาดเล็ก", + "container.jumbotron": "แถบขนาดใหญ่", + "container.card": "การ์ด", + "container.card-header": "ส่วนหัวของการ์ด", + "container.card-body": "ข้างในการ์ด", + "container.alert": "แจ้งเตือน", - "alert.confirm-delete": "Are you sure you wish to delete this widget?", - "alert.updated": "Widgets Updated", - "alert.update-success": "Successfully updated widgets", - "alert.clone-success": "Successfully cloned widgets", + "alert.confirm-delete": "คุณต้องการจะลบวิดเจ็ตนี้หรือไม่?", + "alert.updated": "วิดเจ็ตถูกอัพเดทแล้ว", + "alert.update-success": "การอัพเดทวิดเจ็ตสำเร็จ", + "alert.clone-success": "การคัดลอกวิดเจ็ตสำเร็จ", - "error.select-clone": "Please select a page to clone from", + "error.select-clone": "โปรดเลือกหน้าที่จะคัดลอกมา", - "title": "Title", - "title.placeholder": "Title (only shown on some containers)", - "container": "Container", - "container.placeholder": "Drag and drop a container or enter HTML here.", - "show-to-groups": "Show to groups", - "hide-from-groups": "Hide from groups", - "start-date": "Start date", - "end-date": "End date", - "hide-on-mobile": "Hide on mobile", - "hide-drafts": "Hide drafts", - "show-drafts": "Show drafts" + "title": "ชื่อ", + "title.placeholder": "ชื่อ (แสดงเฉพาะบางคอนเทนเนอร์)", + "container": "คอนเทนเนอร์", + "container.placeholder": "ลากและปล่อยคอนเทนเนอร์หรือป้อน HTML ตรงนี้", + "show-to-groups": "แสดงให้กลุ่ม", + "hide-from-groups": "ซ่อนจากกลุ่ม", + "start-date": "วันที่เริ่มต้น", + "end-date": "วันที่สิ้นสุด", + "hide-on-mobile": "ซ่อนบนมือถือ", + "hide-drafts": "ซ่อนข้อความร่าง", + "show-drafts": "แสดงข้อความร่าง" } \ No newline at end of file diff --git a/public/language/th/admin/manage/users.json b/public/language/th/admin/manage/users.json index 315208b8d9..30060dd280 100644 --- a/public/language/th/admin/manage/users.json +++ b/public/language/th/admin/manage/users.json @@ -4,39 +4,39 @@ "edit": "Actions", "make-admin": "ทำให้เป็นแอดมิน", "remove-admin": "ยกเลิกการเป็นแอดมิน", - "change-email": "Change Email", - "new-email": "New Email", + "change-email": "เปลี่ยนอีเมล", + "new-email": "เพิ่มอีเมลใหม่", "validate-email": "ยืนยันอีเมล", "send-validation-email": "ส่งอีเมลยืนยัน", - "change-password": "Change Password", + "change-password": "เปลี่ยนรหัสผ่าน", "password-reset-email": "ส่งการล้างค่ารหัสผ่านทางอีเมล", - "force-password-reset": "Force Password Reset & Log User Out", - "ban": "Ban", - "ban-users": "Ban User(s)", + "force-password-reset": "บังคับรีเซ็ตรหัสผ่านและออกจากระบบ", + "ban": "แบน", + "ban-users": "แบนผู้ใช้", "temp-ban": "ผู้ใช้งานที่โดนแบนชั่วคราว", "unban": "ยกเลิกการแบนผู้ใช้งาน", "reset-lockout": "ยกเลิกการกักกัน", "reset-flags": "ยกเลิกการการเฝ้าระวัง", - "delete": "Delete", - "delete-users": "Delete User(s)", - "delete-content": "Delete User(s) Content", - "purge": "Delete User(s) and Content", + "delete": "ลบ", + "delete-users": "ลบผู้ใช้งาน", + "delete-content": "ลบเนื้อหาของผู้ใช้งาน", + "purge": "ลบผู้ใช้งานและเนื้อหา", "download-csv": "ดาวน์โหลด CSV", - "manage-groups": "Manage Groups", - "set-reputation": "Set Reputation", - "add-group": "Add Group", - "create": "Create User", - "invite": "Invite by Email", + "manage-groups": "จัดการกลุ่ม", + "set-reputation": "ตั้งค่าชื่อเสียง", + "add-group": "เพิ่มกลุ่ม", + "create": "สร้างผู้ใช้งาน", + "invite": "เชิญทางอีเมล", "new": "ผู้ใช้งานใหม่", - "filter-by": "Filter by", + "filter-by": "ฟิลเตอร์ตาม", "pills.unvalidated": "ยังไม่ได้ยืนยัน", - "pills.validated": "Validated", + "pills.validated": "ยืนยันแล้ว", "pills.banned": "แบน", - "50-per-page": "50 per page", - "100-per-page": "100 per page", - "250-per-page": "250 per page", - "500-per-page": "500 per page", + "50-per-page": "50 รายการต่อหน้า", + "100-per-page": "100 รายการต่อหน้า", + "250-per-page": "250 รายการต่อหน้า", + "500-per-page": "500 รายการต่อหน้า", "search.uid": "ตามรหัสผู้ใช้", "search.uid-placeholder": "ป้อนหมายเลขผู้ใช้เพื่อค้นหา", @@ -55,11 +55,11 @@ "users.uid": "uid", "users.username": "ชื่อผู้ใช้", "users.email": "อีเมล", - "users.no-email": "(no email)", - "users.validated": "Validated", - "users.not-validated": "Not Validated", - "users.validation-pending": "Validation Pending", - "users.validation-expired": "Validation Expired", + "users.no-email": "(ไม่มีอีเมล)", + "users.validated": "ยืนยันแล้ว", + "users.not-validated": "ยังไม่ได้ยืนยัน", + "users.validation-pending": "รอยืนยัน", + "users.validation-expired": "หมดเวลายืนยัน", "users.ip": "IP", "users.postcount": "จำนวนกระทู้", "users.reputation": "ชื่อเสียง", @@ -74,7 +74,7 @@ "create.password": "รหัสผ่าน", "create.password-confirm": "ยืนยันรหัสผ่าน", - "temp-ban.length": "Length", + "temp-ban.length": "ความยาว", "temp-ban.reason": "เหตุผล (ตัวเลือก)", "temp-ban.hours": "ชั่วโมง", "temp-ban.days": "วัน", @@ -86,7 +86,7 @@ "alerts.button-ban-x": "แบน %1 ผู้ใช้งาน", "alerts.unban-success": "ยกเลิกการแบนผู้ใช้งาน", "alerts.lockout-reset-success": "ยกเลิกการกักกัน", - "alerts.password-change-success": "Password(s) changed!", + "alerts.password-change-success": "รหัสผ่านถูกเปลี่ยนแล้ว!", "alerts.flag-reset-success": "ยกเลิกการติดตาม", "alerts.no-remove-yourself-admin": "คุณไม่สามารถที่จะยกเลิกตัวเองจากการเป็นผู้ดูแลระบบ", "alerts.make-admin-success": "ขณะนี้ผู้ใช้เป็นผู้ดูแลระบบแล้ว", @@ -99,11 +99,11 @@ "alerts.confirm-remove-moderator": "คุณต้องการนำผู้ดูแลนี้ออกหรือไม่?", "alerts.remove-moderator-success": "ผู้ใช้ไม่ได้เป็นผู้ดูแลอีกต่อไป", "alerts.confirm-validate-email": "คุณต้องการที่ยืนยันอีเมลของผู้ใช้เหล่านี้หรือไม่?", - "alerts.confirm-force-password-reset": "Are you sure you want to force the password reset and log out these user(s)?", + "alerts.confirm-force-password-reset": "คุณต้องการให้ผู้ใช้เหล่านี้ถูกรีเซ็ตรหัสผ่านและออกจากระบบหรือไม่?", "alerts.validate-email-success": "อีเมลที่ได้รับการยืนยัน", - "alerts.validate-force-password-reset-success": "User(s) passwords have been reset and their existing sessions have been revoked.", + "alerts.validate-force-password-reset-success": "รหัสผ่านของผู้ใช้งานถูกรีเซ็ต และการเข้าระบบถูกถอดออก", "alerts.password-reset-confirm": "คุณต้องการที่จะส่งอีเมลการล้างค่ารหัสผ่านให้กับผู้ใช้เหล่านี้หรือไม่?", - "alerts.password-reset-email-sent": "Password reset email sent.", + "alerts.password-reset-email-sent": "อีเมลรีเซ็ตรหัสผ่านถูกส่งแล้ว", "alerts.confirm-delete": "Warning!

Do you really want to delete user(s)?

This action is not reversible! Only the user account will be deleted, their posts and topics will remain.

", "alerts.delete-success": "ผู้ใช้งานโดนลบ!", "alerts.confirm-delete-content": "Warning!

Do you really want to delete these user(s) content?

This action is not reversible! The users' accounts will remain, but their posts and topics will be deleted.

", @@ -112,36 +112,36 @@ "alerts.create": "สร้างผู้ใช้งาน", "alerts.button-create": "สร้าง", "alerts.button-cancel": "ยกเลิก", - "alerts.button-change": "Change", + "alerts.button-change": "เปลี่ยน", "alerts.error-passwords-different": "รหัสผ่านจะต้องเหมือนกัน! ", "alerts.error-x": "ผิดพลาด

%1

", "alerts.create-success": "ผู้ใช้งานถูกสร้าง!", - "alerts.prompt-email": "Emails: ", + "alerts.prompt-email": "อีเมล: ", "alerts.email-sent-to": "อีเมลคำเชิญถูกส่งไปที่ %1", "alerts.x-users-found": "%1 user(s) found, (%2 seconds)", "alerts.select-a-single-user-to-change-email": "Select a single user to change email", - "export": "Export", - "export-users-fields-title": "Select CSV Fields", - "export-field-email": "Email", - "export-field-username": "Username", - "export-field-uid": "UID", + "export": "ส่งออกไฟล์", + "export-users-fields-title": "เลือกฟิลด์สำหรับ CSV", + "export-field-email": "อีเมล", + "export-field-username": "ชื่อผู้ใช้งาน", + "export-field-uid": "หมายเลขผู้ใช้งาน", "export-field-ip": "IP", - "export-field-joindate": "Join date", - "export-field-lastonline": "Last Online", - "export-field-lastposttime": "Last Post Time", - "export-field-reputation": "Reputation", - "export-field-postcount": "Post Count", - "export-field-topiccount": "Topic Count", - "export-field-profileviews": "Profile Views", - "export-field-followercount": "Follower Count", - "export-field-followingcount": "Following Count", - "export-field-fullname": "Full Name", - "export-field-website": "Website", - "export-field-location": "Location", - "export-field-birthday": "Birthday", - "export-field-signature": "Signature", - "export-field-aboutme": "About Me", + "export-field-joindate": "วันที่เข้าร่วม", + "export-field-lastonline": "ออนไลน์ล่าสุด", + "export-field-lastposttime": "โพสต์ล่าสุด", + "export-field-reputation": "ชื่อเสียง", + "export-field-postcount": "จำนวนโพสต์", + "export-field-topiccount": "จำนวนกระทู้", + "export-field-profileviews": "จำนวนการดูหน้าโปรไฟล์", + "export-field-followercount": "จำนวนผู้ติดตาม", + "export-field-followingcount": "จำนวนการติดตาม", + "export-field-fullname": "ชื่อเต็ม", + "export-field-website": "เว็บไซต์", + "export-field-location": "สถานที่", + "export-field-birthday": "วันเกิด", + "export-field-signature": "ลายเซ็น", + "export-field-aboutme": "เกี่ยวกับฉัน", "export-users-started": "Exporting users as csv, this might take a while. You will receive a notification when it is complete.", "export-users-completed": "Users exported as csv, click here to download.", diff --git a/public/language/th/email.json b/public/language/th/email.json index 3de3940b11..973ec3cdfa 100644 --- a/public/language/th/email.json +++ b/public/language/th/email.json @@ -8,7 +8,7 @@ "email.verify-your-email.subject": "โปรดยืนยันอีเมลของคุณ", "email.verify.text1": "คุณได้ร้องขอให้เราเปลี่ยนหรือยืนยันอีเมลของคุณ", "email.verify.text2": "ด้วยเหตุผลของความปลอดภัย เราจะเปลี่ยนหรือยืนยันอีเมลที่เก็บไว้ก็ต่อเมื่อได้รับการยืนยันความเป็นเจ้าของด้วยอีเมล ถ้าคุณไม่ได้ร้องขอนี้ คุณไม่ต้องทำอะไร", - "email.verify.text3": "ทันทีที่คุณยืนยันที่อยู่อีเมลนี้ เราจะเปลี่ยนอีเมลปัจจุบันของคุณเป็นอีเมลนี้แทน (%1).", + "email.verify.text3": "ทันทีที่คุณยืนยันที่อยู่อีเมลนี้ เราจะเปลี่ยนอีเมลปัจจุบันของคุณเป็นอีเมลนี้แทน (%1)", "welcome.text1": "ขอบคุณที่ลงทะเบียนกับ %1", "welcome.text2": "เพื่อให้การบัญชีของคุณใช้งานได้อย่างเสร็จสมบูรณ์ เราจำเป็นต้องยืนยันว่าคุณเป็นเจ้าของที่แท้จริงของอีเมล์ที่ใช้สมัครสมาชิก", "welcome.text3": "ผู้ดูแลระบบได้ทำการยอมรับการสมัครสมาชิกของคุณแล้ว คุณสามารถเข้าสู่ระบบด้วย ชื่อผู้ใช้/รหัสผ่าน ได้แล้วตอนนี้", @@ -24,11 +24,11 @@ "reset.notify.text2": "หากคุณไม่ได้เป็นคนอนุญาตสิ่งนี้ กรุณาแจ้งไปยังผู้ดูแลระบบโดยทันที", "digest.unread-rooms": "ห้องที่ยังไม่ได้อ่าน", "digest.room-name-unreadcount": "%1 (ยังไม่ได้อ่าน %2)", - "digest.latest-topics": "หัวข้อสนทนาล่าสุดจาก %1", - "digest.top-topics": "หัวข้อสนทนาอันดับต้นๆจาก %1", - "digest.popular-topics": "หัวข้อสนทนายอดนิยมจาก %1", + "digest.latest-topics": "กระทู้ล่าสุดจาก %1", + "digest.top-topics": "กระทู้อันดับต้นๆจาก %1", + "digest.popular-topics": "กระทู้ยอดนิยมจาก %1", "digest.cta": "กดตรงนี้เพื่อเข้าดู %1", - "digest.unsub.info": "คำชี้แจงถูกส่งไปให้คุณแล้ว เนื่องมาจากการตั้งค่าสมาชิกของคุณ", + "digest.unsub.info": "สรุปเนื้อหานี้ถูกส่งไปให้คุณแล้ว เนื่องมาจากการตั้งค่าสมาชิกของคุณ", "digest.day": "วัน", "digest.week": "สัปดาห์", "digest.month": "เดือน", diff --git a/public/language/th/error.json b/public/language/th/error.json index 7060b9a1d4..31aab8f073 100644 --- a/public/language/th/error.json +++ b/public/language/th/error.json @@ -184,10 +184,10 @@ "user-already-flagged": "You have already flagged this user", "post-flagged-too-many-times": "This post has been flagged by others already", "user-flagged-too-many-times": "This user has been flagged by others already", - "too-many-post-flags-per-day": "You can only flag %1 post(s) per day", - "too-many-user-flags-per-day": "You can only flag %1 user(s) per day", + "too-many-post-flags-per-day": "คุณสามารถปักธงได้แค่ %1 โพสต์ต่อวัน", + "too-many-user-flags-per-day": "คุณสามารถปักธงได้แค่ %1 ผู้ใช้งานต่อวัน", "cant-flag-privileged": "You are not allowed to flag the profiles or content of privileged users (moderators/global moderators/admins)", - "cant-locate-flag-report": "Cannot locate flag report", + "cant-locate-flag-report": "ไม่สามารถหารายงานการปักธงได้", "self-vote": "You cannot vote on your own post", "too-many-upvotes-today": "You can only upvote %1 times a day", "too-many-upvotes-today-user": "You can only upvote a user %1 times a day", @@ -221,7 +221,7 @@ "already-unblocked": "This user is already unblocked", "no-connection": "There seems to be a problem with your internet connection", "socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later", - "invalid-plugin-id": "Invalid plugin ID", + "invalid-plugin-id": "รหัสปลั๊กอินไม่ถูกต้อง", "plugin-not-whitelisted": "Unable to install plugin – only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP", "plugins-set-in-configuration": "You are not allowed to change plugin state as they are defined at runtime (config.json, environmental variables or terminal arguments), please modify the configuration instead.", "theme-not-set-in-configuration": "When defining active plugins in configuration, changing themes requires adding the new theme to the list of active plugins before updating it in the ACP", diff --git a/public/language/th/flags.json b/public/language/th/flags.json index 1fdaf3d15d..218b054f9b 100644 --- a/public/language/th/flags.json +++ b/public/language/th/flags.json @@ -1,64 +1,64 @@ { "state": "สถานะ", - "report": "Report", - "reports": "Reports", - "first-reported": "First Reported", + "report": "รายงาน", + "reports": "รายงาน", + "first-reported": "ถูกรายงานครั้งแรก", "no-flags": "ไชโย ไม่เจอธงใดๆเลย", - "x-flags-found": "%1 flag(s) found.", + "x-flags-found": "พบธง %1 รายการ", "assignee": "ผู้ได้รับมอบหมาย", "update": "อัพเดท", "updated": "ได้รับการอัพเดท", - "resolved": "Resolved", - "report-added": "Added", - "report-rescinded": "Rescinded", + "resolved": "แก้ไขแล้ว", + "report-added": "ถูกเพิ่มแล้ว", + "report-rescinded": "ยกเลิกแล้ว", "target-purged": "เนื้อหาที่ธงนี้อ้างถึงถูกลบออกและไม่มีอยู่ในระบบอีกต่อไป", - "target-aboutme-empty": "This user has no "About Me" set.", + "target-aboutme-empty": "ผู้ใช้งานคนนี้ไม่ได้ใส่ข้อมูล "เกี่ยวกับฉัน" set.", - "graph-label": "Daily Flags", + "graph-label": "การปักธงรายวัน", "quick-filters": "ฟิลเตอร์แบบด่วน", - "filter-active": "ไม่มีฟิลเตอร์ใดๆในรายการปักธง", + "filter-active": "มีฟิลเตอร์หนึ่งหรือหลายตัวในรายการปักธงนี้", "filter-reset": "ลบฟิลเตอร์ออก", "filters": "ตัวเลือกฟิลเตอร์", - "filter-reporterId": "Reporter", - "filter-targetUid": "Reportee", + "filter-reporterId": "ผู้รายงาน", + "filter-targetUid": "ผู้ถูกรายงาน", "filter-type": "ประเภทการปักธง", "filter-type-all": "เนื้อหาทั้งหมด", "filter-type-post": "โพสต์", - "filter-type-user": "User", + "filter-type-user": "ผู้ใช้งาน", "filter-state": "สถานะ", - "filter-assignee": "Assignee", + "filter-assignee": "ผู้ได้รับมอบหมาย", "filter-cid": "หมวดหมู่", "filter-quick-mine": "ถูกมอบหมายให้ฉัน", "filter-cid-all": "ทุกหมวดหมู่", "apply-filters": "ใช้งานฟิลเตอร์", - "more-filters": "More Filters", - "fewer-filters": "Fewer Filters", + "more-filters": "เพิ่มเติมฟิลเตอร์", + "fewer-filters": "ลดฟิลเตอร์", - "quick-actions": "Quick Actions", + "quick-actions": "จัดการอย่างเร็ว", "flagged-user": "ผู้ใช้ที่ถูกปักธง", "view-profile": "ดูโปรไฟล์", "start-new-chat": "เริ่มแชทใหม่", "go-to-target": "ดูเป้าหมายการปักธง", - "assign-to-me": "Assign To Me", - "delete-post": "Delete Post", - "purge-post": "Purge Post", - "restore-post": "Restore Post", - "delete": "Delete Flag", + "assign-to-me": "มอบหมายให้ฉัน", + "delete-post": "ลบโพสต์", + "purge-post": "ล้างโพสต์", + "restore-post": "กู้คืนโพสต์", + "delete": "ลบธง", "user-view": "ดูโปรไฟล์", "user-edit": "แก้ไขโปรไฟล์", "notes": "โน๊ตปักธง", "add-note": "เพิ่มโน้ต", - "edit-note": "Edit Note", + "edit-note": "แก้ไขโน้ต", "no-notes": "ไม่มีโน้ตที่แชร์", - "delete-note-confirm": "Are you sure you want to delete this flag note?", - "delete-flag-confirm": "Are you sure you want to delete this flag?", + "delete-note-confirm": "คุณแน่ใจว่าต้องการลบโน้ตธงอันนี้?", + "delete-flag-confirm": "คุณแน่ใจว่าต้องการลบธงอันนี้?", "note-added": "โน้ตถูกเพิ่มแล้ว", - "note-deleted": "Note Deleted", - "flag-deleted": "Flag Deleted", + "note-deleted": "โน้ตถูกลบแล้ว", + "flag-deleted": "ธงถูกลบแล้ว", - "history": "Account & Flag History", + "history": "บัญชี และ ประวัติการปักธง", "no-history": "ไม่มีประวัติปักธง", "state-all": "สถานะทั้งหมด", @@ -68,17 +68,17 @@ "state-rejected": "ถูกปฏิเสธ", "no-assignee": "ไม่ได้รับการมอบหมาย", - "sort": "Sort by", - "sort-newest": "Newest first", - "sort-oldest": "Oldest first", - "sort-reports": "Most reports", - "sort-all": "All flag types...", - "sort-posts-only": "Posts only...", - "sort-downvotes": "Most downvotes", - "sort-upvotes": "Most upvotes", - "sort-replies": "Most replies", + "sort": "เรียงตาม", + "sort-newest": "เริ่มจากล่าสุดก่อน", + "sort-oldest": "เริ่มจากเก่าสุดก่อน", + "sort-reports": "รายงานมากที่สุด", + "sort-all": "ประเภทของธงทั้งหมด...", + "sort-posts-only": "เฉพาะโพสต์...", + "sort-downvotes": "โหวดลงมากสุด", + "sort-upvotes": "โหวดขึ้นมากสุด", + "sort-replies": "ตอบกลับมากสุด", - "modal-title": "Report Content", + "modal-title": "เนื้อหาที่รายงาน", "modal-body": "กรุณาระเหตุผลสำหรับการปักธง %1 %2 สำหรับการรีวิว หรือไม่ก็ใช้หนึ่งในปุ่มกดรายงานด่วนถ้าเป็นไปได้", "modal-reason-spam": "สแปม", "modal-reason-offensive": "น่ารังเกียจ", @@ -87,9 +87,9 @@ "modal-submit": "ส่งรายงาน", "modal-submit-success": "เนื้อหาถูกรายงานตามความเหมาะสมแล้ว", - "bulk-actions": "Bulk Actions", - "bulk-resolve": "Resolve Flag(s)", - "bulk-success": "%1 flags updated", - "flagged-timeago-readable": "Flagged (%2)", - "auto-flagged": "[Auto Flagged] Received %1 downvotes." + "bulk-actions": "จัดการทีละมากๆ", + "bulk-resolve": "แก้ไขธง", + "bulk-success": "ธง %1 อันถูกอัพเดท", + "flagged-timeago-readable": "ถูกปักธงเมื่อ (%2)", + "auto-flagged": "[ปักธงอัตโนมัติ] ได้รับโหวดลง %1 ครั้ง" } \ No newline at end of file diff --git a/public/language/th/global.json b/public/language/th/global.json index 50eef94538..38828b6c88 100644 --- a/public/language/th/global.json +++ b/public/language/th/global.json @@ -4,7 +4,7 @@ "buttons.close": "ปิด", "403.title": "คุณถูกปฏิเสธการเข้าใช้", "403.message": "ดูเหมือนว่าคุณจะได้รับการสกัดกั้นในหน้าเว็บที่คุณไม่สามารถเข้าถึงได้", - "403.login": "Perhaps you should try logging in?", + "403.login": "คุณควรจะ ลองเข้าสู่ระบบ?", "404.title": "ไม่พบ", "404.message": "You seem to have stumbled upon a page that does not exist.
Return to the home page.
", "500.title": "ระบบภายในเกิดข้อผิดพลาด", @@ -20,74 +20,74 @@ "you-have-successfully-logged-in": "คุณได้เข้าสู่ระบบแล้ว", "save-changes": "บันทึกการเปลี่ยนแปลง", "save": "บันทึก", - "create": "Create", - "cancel": "Cancel", + "create": "สร้าง", + "cancel": "ยกเลิก", "close": "ปิด", "pagination": "การแบ่งหน้า", - "pagination.previouspage": "Previous Page", - "pagination.nextpage": "Next Page", - "pagination.firstpage": "First Page", - "pagination.lastpage": "Last Page", + "pagination.previouspage": "หน้าก่อน", + "pagination.nextpage": "หน้าถัดไป", + "pagination.firstpage": "หน้าแรก", + "pagination.lastpage": "หน้าสุดท้าย", "pagination.out-of": "%1 จาก %2", - "pagination.enter-index": "Go to post index", - "pagination.go-to-page": "Go to page", - "pagination.page-x": "Page %1", - "header.brand-logo": "Brand Logo", + "pagination.enter-index": "ไปที่สารบัญของโพสต์", + "pagination.go-to-page": "ไปที่หน้า", + "pagination.page-x": "หน้า %1", + "header.brand-logo": "โลโก้แบรนด์", "header.admin": "ผู้ดูแลระบบ", "header.categories": "หมวดหมู่", "header.recent": "ล่าสุด", "header.unread": "ไม่ได้อ่าน", "header.tags": "แท็ก", "header.popular": "ฮิต", - "header.top": "Top", + "header.top": "อันดับสูงสุด", "header.users": "ผู้ใช้", "header.groups": "กลุ่ม", "header.chats": "สนทนา", "header.notifications": "แจ้งเตือน", "header.search": "ค้นหา", "header.profile": "รายละเอียด", - "header.account": "Account", + "header.account": "บัญชี", "header.navigation": "เมนูนำทาง", - "header.manage": "Manage", - "header.drafts": "Drafts", + "header.manage": "จัดการ", + "header.drafts": "ร่างข้อความ", "notifications.loading": "กำลังโหลดข้อแจ้งเตือน", "chats.loading": "กำลังโหลดหัวข้อสนทนา", - "drafts.loading": "Loading Drafts", + "drafts.loading": "กำลังโหลดร่างข้อความ", "motd.welcome": "ยินดีต้อนรับสู่ NodeBB แพลตฟอร์มการสนทนาแห่งอนาคต", "alert.success": "สำเร็จ", "alert.error": "ผิดพลาด", - "alert.warning": "Warning", - "alert.info": "Info", - "alert.banned": "เเบน", - "alert.banned.message": "You have just been banned, your access is now restricted.", - "alert.unbanned": "Unbanned", - "alert.unbanned.message": "Your ban has been lifted.", + "alert.warning": "คำเตือน", + "alert.info": "ข้อมูล", + "alert.banned": "ถูกแบน", + "alert.banned.message": "คุณถูกแบนแล้ว การเข้าถึงของคุณถูกจำกัด", + "alert.unbanned": "ถูกปลดแบน", + "alert.unbanned.message": "การแบนของคุณถูกยกเลิกแล้ว", "alert.unfollow": "คุณได้ยกเลิกติดตาม %1 !", "alert.follow": "คุณกำลังติดตาม %1 !", "users": "ผู้ใช้", "topics": "กระทู้", - "posts": "กระทู้", - "x-posts": "%1 posts", - "x-topics": "%1 topics", - "x-reputation": "%1 reputation", + "posts": "โพสต์", + "x-posts": "%1 โพสต์", + "x-topics": "%1 กระทู้", + "x-reputation": "ชื่อเสียง %1", "best": "ดีที่สุด", - "controversial": "Controversial", + "controversial": "มีข้อโต้แย้ง", "votes": "โหวต", - "x-votes": "%1 votes", - "voters": "Voters", + "x-votes": "%1 โหวด", + "voters": "ผู้โหวด", "upvoters": "ผู้ที่โหวดขึ้น", "upvoted": "โหวตแล้ว", "downvoters": "ผู้ที่โหวตลง", "downvoted": "โหวตลง", - "views": "ดู", - "posters": "Posters", + "views": "ยอดดู", + "posters": "ผู้โพสต์", "reputation": "ชื่อเสียง", - "lastpost": "Last post", - "firstpost": "First post", - "about": "About", + "lastpost": "โพสต์สุดท้าย", + "firstpost": "โพสต์แรก", + "about": "เกี่ยวกับ", "read-more": "อ่านต่อ", "more": "เพิ่มเติม", - "none": "None", + "none": "ไม่มี", "posted-ago-by-guest": "โพสต์ %1 โดย Guest", "posted-ago-by": "โพสต์ %1 โดย %2", "posted-ago": "โพสต์ %1", @@ -140,12 +140,12 @@ "edited": "ถูกแก้ไขแล้ว", "disabled": "ปิด", "select": "เลือก", - "selected": "Selected", - "copied": "Copied", + "selected": "ถูกเลือกแล้ว", + "copied": "คัดลอกแล้ว", "user-search-prompt": "Type something here to find users...", "hidden": "Hidden", "sort": "Sort", "actions": "Actions", - "rss-feed": "RSS Feed", - "skip-to-content": "Skip to content" + "rss-feed": "ฟีด RSS", + "skip-to-content": "ข้ามไปยังเนื้อหา" } \ No newline at end of file diff --git a/public/language/th/modules.json b/public/language/th/modules.json index 4b680a2356..7c161f4600 100644 --- a/public/language/th/modules.json +++ b/public/language/th/modules.json @@ -68,8 +68,8 @@ "chat.in-room": "ในห้องนี้", "chat.kick": "Kick", "chat.show-ip": "Show IP", - "chat.copy-text": "Copy Text", - "chat.copy-link": "Copy Link", + "chat.copy-text": "คัดลอกข้อความ", + "chat.copy-link": "คัดลอกลิงก์", "chat.owner": "Room Owner", "chat.grant-rescind-ownership": "Grant/Rescind Ownership", "chat.system.user-join": "%1 has joined the room ", diff --git a/public/language/th/notifications.json b/public/language/th/notifications.json index e984c973cf..39cb8efc53 100644 --- a/public/language/th/notifications.json +++ b/public/language/th/notifications.json @@ -12,15 +12,15 @@ "you-have-unread-notifications": "คุณมีคำเตือนที่ยังไม่ได้อ่าน", "all": "ทั้งหมด", "topics": "กระทู้", - "tags": "Tags", - "categories": "Categories", + "tags": "แท็ก", + "categories": "หมวดหมู่", "replies": "คำตอบ", "chat": "แชท", - "group-chat": "Group Chats", - "public-chat": "Public Chats", + "group-chat": "แชทกลุ่ม", + "public-chat": "แชทสาธารณะ", "follows": "ติดตาม", "upvote": "โหวตขึ้น", - "awards": "Awards", + "awards": "รางวัล", "new-flags": "ปักธงใหม่", "my-flags": "ธงที่ถูกปักให้ฉัน", "bans": "แบน", @@ -56,7 +56,7 @@ "user-posted-topic-with-tag-dual": "%1 has posted a new topic with tags %2 and %3", "user-posted-topic-with-tag-triple": "%1 has posted a new topic with tags %2, %3 and %4", "user-posted-topic-with-tag-multiple": "%1 has posted a new topic with tags %2", - "user-posted-topic-in-category": "%1 has posted a new topic in %2", + "user-posted-topic-in-category": "%1 ได้โพสต์กระทู้ใหม่ใน %2", "user-started-following-you": "%1 ได้เริ่มติดตามคุณ", "user-started-following-you-dual": "%1และ%2ได้เริ่มติดตามคุณ", "user-started-following-you-triple": "%1, %2 and %3 started following you.", @@ -83,19 +83,19 @@ "notificationType-upvote": "เมื่อมีคนโหวตอัพให้โพสต์คุณ", "notificationType-new-topic": "เมื่อมีคนติดตามโพสต์คุณ", "notificationType-new-topic-with-tag": "When a topic is posted with a tag you follow", - "notificationType-new-topic-in-category": "When a topic is posted in a category you are watching", + "notificationType-new-topic-in-category": "เมื่อมีกระทู้ถูกโพสต์ในหมวดหมู่ที่คุณเฝ้าดู", "notificationType-new-reply": "เมื่อมีการตอบกลับในโพสต์ที่คุณกำลังติดตาม", "notificationType-post-edit": "When a post is edited in a topic you are watching", "notificationType-follow": "เมื่อมีคนติดตามคุณ", "notificationType-new-chat": "เมื่อคุณได้รับข้อความใหม่", - "notificationType-new-group-chat": "When you receive a group chat message", - "notificationType-new-public-chat": "When you receive a public group chat message", + "notificationType-new-group-chat": "เมื่อคุณได้รับข้อความแชทแบบกลุ่ม", + "notificationType-new-public-chat": "เมื่อคุณได้รับข้อความแชทกลุ่มที่เป็นสาธารณะ", "notificationType-group-invite": "เมื่อคุณได้รับเชิญเข้ากลุ่ม", - "notificationType-group-leave": "When a user leaves your group", - "notificationType-group-request-membership": "When someone requests to join a group you own", + "notificationType-group-leave": "เมื่อผู้ใช้งานออกจากกลุ่มของคุณ", + "notificationType-group-request-membership": "เมื่อบางคนร้องขอที่จะเข้าร่วมกลุ่มที่คุณเป็นเจ้าของ", "notificationType-new-register": "เมื่อมีคนถูกเพิ่มในคิวลงทะเบียน", "notificationType-post-queue": "เมื่อมีโพสต์ใหม่อยู่ในคิว", "notificationType-new-post-flag": "เมื่อโพสต์ถูกตั้งค่าสถานะ", "notificationType-new-user-flag": "เมื่อผู้ใช้ถูกตั้งค่าสถานะ", - "notificationType-new-reward": "When you earn a new reward" + "notificationType-new-reward": "เมื่อคุณได้รับรางวัล" } \ No newline at end of file diff --git a/public/language/th/rewards.json b/public/language/th/rewards.json index f923cf1500..869e04e5f0 100644 --- a/public/language/th/rewards.json +++ b/public/language/th/rewards.json @@ -1,10 +1,10 @@ { - "awarded-x-reputation": "You have been awarded %1 reputation", - "awarded-group-membership": "You have been added to the group %1", + "awarded-x-reputation": "คุณได้รับค่าชื่อเสียง %1", + "awarded-group-membership": "คุณถูกเพิ่มลงในกลุ่ม %1", - "essentials/user.reputation-conditional-value": "(Reputation %1 %2)", - "essentials/user.postcount-conditional-value": "(Post Count %1 %2)", - "essentials/user.lastonline-conditional-value": "(Last Online %1 %2)", - "essentials/user.joindate-conditional-value": "(Join Date %1 %2)", - "essentials/user.daysregistered-conditional-value": "(Days Registered %1 %2)" + "essentials/user.reputation-conditional-value": "(ชื่อเสียง %1 %2)", + "essentials/user.postcount-conditional-value": "(จำนวนโพสต์ %1 %2)", + "essentials/user.lastonline-conditional-value": "(ออนไลน์ล่าสุด %1 %2)", + "essentials/user.joindate-conditional-value": "(วันที่เข้าร่วม %1 %2)", + "essentials/user.daysregistered-conditional-value": "(จำนวนวันที่ลงทะเบียน %1 %2)" } \ No newline at end of file diff --git a/public/language/th/tags.json b/public/language/th/tags.json index 7e88e71010..b0e8cbd932 100644 --- a/public/language/th/tags.json +++ b/public/language/th/tags.json @@ -1,15 +1,15 @@ { "all-tags": "All tags", "no-tag-topics": "ไม่มีหัวข้อสนทนาที่เกี่ยวข้องกับป้ายคำศัพท์นี้", - "no-tags-found": "No tags found", - "tags": "ป้ายคำศัพท์", - "enter-tags-here": "Enter tags, %1 - %2 characters.", + "no-tags-found": "ไม่พบแท็ก", + "tags": "แท็ก", + "enter-tags-here": "ติดแท็ก %1 - %2 ตัวอักษร", "enter-tags-here-short": "ใส่ป้ายคำศัพท์ ...", "no-tags": "ยังไม่มีป้ายคำศัพท์", - "select-tags": "Select Tags", + "select-tags": "เลือกแท็ก", "tag-whitelist": "Tag Whitelist", - "watching": "Watching", - "not-watching": "Not Watching", + "watching": "เฝ้าดู", + "not-watching": "ไม่ได้เฝ้าดู", "watching.description": "Notify me of new topics.", "not-watching.description": "Do not notify me of new topics.", "following-tag.message": "You will now be receiving notifications when somebody posts a topic with this tag.", diff --git a/public/language/th/topic.json b/public/language/th/topic.json index b20dd2603f..408c95e1f6 100644 --- a/public/language/th/topic.json +++ b/public/language/th/topic.json @@ -1,91 +1,91 @@ { "topic": "กระทู้", - "title": "Title", + "title": "ชื่อหัวข้อ", "no-topics-found": "ไม่พบกระทู้", - "no-posts-found": "ไม่พบโพส", - "post-is-deleted": "ลบ Post นี้เรียบร้อยแล้ว!", + "no-posts-found": "ไม่พบโพสต์", + "post-is-deleted": "ลบโพสต์นี้เรียบร้อยแล้ว!", "topic-is-deleted": "กระทู้นี้ถูกลบไปแล้ว!", - "profile": "รายละเอียด", - "posted-by": "โพสโดย %1", - "posted-by-guest": "โพสโดย Guest", + "profile": "โปรไฟล์", + "posted-by": "โพสต์โดย %1", + "posted-by-guest": "โพสต์โดย Guest", "chat": "แชท", "notify-me": "แจ้งเตือนเมื่อการตอบใหม่ในกระทู้นี้", "quote": "คำอ้างอิง", "reply": "ตอบ", - "replies-to-this-post": "%1 คำตอบ", + "replies-to-this-post": "%1 การตอบกลับ", "one-reply-to-this-post": "1 การตอบกลับ", "last-reply-time": "คำตอบล่าสุด", - "reply-options": "Reply options", + "reply-options": "ตัวเลือกการตอบ", "reply-as-topic": "ตอบโดยตั้งกระทู้ใหม่", "guest-login-reply": "เข้าสู่ระบบเพื่อตอบกลับ", - "login-to-view": "🔒 Log in to view", + "login-to-view": "🔒 เข้าสู้ระบบเพื่อดู", "edit": "แก้ไข", "delete": "ลบ", - "delete-event": "Delete Event", - "delete-event-confirm": "Are you sure you want to delete this event?", + "delete-event": "ลบอีเว้นท์", + "delete-event-confirm": "คุณต้องการจะลบอีเว้นท์นี้หรือไม่?", "purge": "ล้าง", "restore": "กู้", "move": "ย้าย", - "change-owner": "Change Owner", + "change-owner": "เปลี่ยนเจ้าของ", "fork": "แยก", "link": "ลิงค์", "share": "แชร์", "tools": "เครื่องมือ", "locked": "ถูกล็อก", "pinned": "ถูกปักหมุด", - "pinned-with-expiry": "Pinned until %1", - "scheduled": "Scheduled", - "deleted": "Deleted", - "moved": "ถูกย้าย", - "moved-from": "Moved from %1", - "copy-code": "Copy Code", + "pinned-with-expiry": "ถูกปักหมุดจนถึง %1", + "scheduled": "ตั้งเวลาแล้ว", + "deleted": "ถูกลบแล้ว", + "moved": "ถูกย้ายแล้ว", + "moved-from": "ถูกย้ายจาก %1", + "copy-code": "คัดลอกโค้ด", "copy-ip": "คัดลอก IP", "ban-ip": "แบน IP", "view-history": "แก้ไขประวัติ", - "wrote-ago": "wrote ", - "wrote-on": "wrote on ", - "replied-to-user-ago": "replied to %3 ", - "replied-to-user-on": "replied to %3 on ", - "user-locked-topic-ago": "%1 locked this topic %2", - "user-locked-topic-on": "%1 locked this topic on %2", - "user-unlocked-topic-ago": "%1 unlocked this topic %2", - "user-unlocked-topic-on": "%1 unlocked this topic on %2", - "user-pinned-topic-ago": "%1 pinned this topic %2", - "user-pinned-topic-on": "%1 pinned this topic on %2", - "user-unpinned-topic-ago": "%1 unpinned this topic %2", - "user-unpinned-topic-on": "%1 unpinned this topic on %2", - "user-deleted-topic-ago": "%1 deleted this topic %2", - "user-deleted-topic-on": "%1 deleted this topic on %2", - "user-restored-topic-ago": "%1 restored this topic %2", - "user-restored-topic-on": "%1 restored this topic on %2", - "user-moved-topic-from-ago": "%1 moved this topic from %2 %3", - "user-moved-topic-from-on": "%1 moved this topic from %2 on %3", - "user-queued-post-ago": "%1 queued post for approval %3", - "user-queued-post-on": "%1 queued post for approval on %3", - "user-referenced-topic-ago": "%1 referenced this topic %3", - "user-referenced-topic-on": "%1 referenced this topic on %3", - "user-forked-topic-ago": "%1 forked this topic %3", - "user-forked-topic-on": "%1 forked this topic on %3", - "bookmark-instructions": "คลิกที่นี่เพื่อกลับไปยังโพสต์ล่าสุดในหัวข้อนี้", - "flag-post": "Flag this post", - "flag-user": "Flag this user", - "already-flagged": "Already Flagged", - "view-flag-report": "View Flag Report", - "resolve-flag": "Resolve Flag", - "merged-message": "This topic has been merged into %2", - "forked-message": "This topic was forked from %2", - "deleted-message": "Topic นี้ถูกลบไปแล้ว เฉพาะผู้ใช้งานที่มีสิทธิ์ในการจัดการ Topic เท่านั้นที่จะมีสิทธิ์ในการเข้าชม", + "wrote-ago": "เขียนเมื่อ ", + "wrote-on": "เขียนเมื่อ ", + "replied-to-user-ago": "ตอบกลับไปยัง %3 เมื่อ ", + "replied-to-user-on": "ตอบกลับไปยัง %3 เมื่อ ", + "user-locked-topic-ago": "%1 ล็อกกระทู้นี้เมื่อ %2", + "user-locked-topic-on": "%1 ล็อกกระทู้นี้เมื่อ %2", + "user-unlocked-topic-ago": "%1 ปลดล็อกกระทู้นี้เมื่อ %2", + "user-unlocked-topic-on": "%1 ปลดล็อกกระทู้นี้เมื่อ %2", + "user-pinned-topic-ago": "%1 ปักหมุดกระทู้นี้เมื่อ %2", + "user-pinned-topic-on": "%1 ปักหมุดกระทู้นี้เมื่อ %2", + "user-unpinned-topic-ago": "%1 ยกเลิกปักหมุดกระทู้นี้เมื่อ %2", + "user-unpinned-topic-on": "%1 ยกเลิกปักหมุดกระทู้นี้เมื่อ %2", + "user-deleted-topic-ago": "%1 ลบกระทู้นี้เมื่อ %2", + "user-deleted-topic-on": "%1 ลบกระทู้นี้เมื่อ %2", + "user-restored-topic-ago": "%1 กู้คืนกระทู้นี้เมื่อ %2", + "user-restored-topic-on": "%1 กู้คืนกระทู้นี้เมื่อ %2", + "user-moved-topic-from-ago": "%1 ย้ายกระทู้นี้จาก %2 เมื่อ %3", + "user-moved-topic-from-on": "%1 ย้ายกระทู้นี้จาก %2 เมื่อ %3", + "user-queued-post-ago": "%1 โพสต์ อยู่ในคิว รออนุมัติเมื่อ %3", + "user-queued-post-on": "%1 โพสต์ อยู่ในคิว รออนุมัติเมื่อ %3", + "user-referenced-topic-ago": "%1 อ้างอิง กระทู้นี้เมื่อ %3", + "user-referenced-topic-on": "%1 อ้างอิง กระทู้นี้เมื่อ %3", + "user-forked-topic-ago": "%1 แยก กระทู้นี้เมื่อ %3", + "user-forked-topic-on": "%1 แยก กระทู้นี้เมื่อ %3", + "bookmark-instructions": "คลิกที่นี่เพื่อกลับไปยังโพสต์ที่อ่านล่าสุดในหัวข้อนี้", + "flag-post": "ปักธงโพสต์นี้", + "flag-user": "ปักธงผู้ใช้งานนี้", + "already-flagged": "ปักธงแล้ว", + "view-flag-report": "ดูรายงานการปักธง", + "resolve-flag": "แก้ไขการปักธง", + "merged-message": "กระทู้นี้ถูกรวมเข้าไปใน %2", + "forked-message": "กระทู้นี้แยกมาจาก %2", + "deleted-message": "กระทู้นี้ถูกลบไปแล้ว เฉพาะผู้ใช้งานที่มีสิทธิ์ในการจัดการกระทู้เท่านั้นที่จะมีสิทธิ์ในการเข้าชม", "following-topic.message": "คุณจะได้รับการแจ้งเตือนเมื่อมีคนโพสต์ในกระทู้นี้", "not-following-topic.message": "คุณจะเห็นกระทู้นี้ในรายการของกระทู้ที่ยังไม่ได้อ่าน แต่คุณจะไม่ได้รับการแจ้งเตือนเมื่่อมีคนตอบกระทู้นี้", "ignoring-topic.message": "คุณจะไม่เห็นกระทู้นี้ในรายการของกระทู้ที่ยังไม่ได้อ่านอีกต่อไป คุณจะได้รับการแจ้งเตือนเมื่อมีคนกล่าวถึงคุณหรือโพสต์ของคุณถูกโหวตขึ้น", "login-to-subscribe": "กรุณาลงทะเบียนหรือเข้าสู่ระบบเพื่อที่จะติดตามกระทู้นี้", "markAsUnreadForAll.success": "ทำเครื่องหมายว่ายังไม่ได้อ่านทั้งหมด", - "mark-unread": "ถูกมาร์คว่ายังไม่ได้อ่าน", - "mark-unread.success": "กระทู้ที่ถูกมาร์คว่ายังไม่ได้อ่าน", - "watch": "ติดตาม", - "unwatch": "ยังไม่ได้ติดตาม", - "watch.title": "ให้แจ้งเตือนเมื่อมีการตอบกลับ Topic นี้", - "unwatch.title": "ยกเลิกการติดตาม Topic นี้", + "mark-unread": "ทำเครื่องหมายว่ายังไม่ได้อ่าน", + "mark-unread.success": "กระทู้ถูกทำเครื่องหมายว่ายังไม่ได้อ่าน", + "watch": "เฝ้าดู", + "unwatch": "ยกเลิกการเฝ้าดู", + "watch.title": "ให้แจ้งเตือนเมื่อมีการตอบกลับกระทู้นี้", + "unwatch.title": "ยกเลิกการเฝ้าดูกระทู้นี้", "share-this-post": "แชร์โพสต์นี้", "watching": "กำลังดู", "not-watching": "ไม่ดูแล้ว", @@ -93,81 +93,81 @@ "watching.description": "เตือนฉันเมื่อมีคำตอบใหม่
แสดงกระทู้ในรายการที่ยังไม่ได้อ่าน", "not-watching.description": "อย่าเตือนฉันเมือมีคำตอบใหม่
แสดงกระทู้ในรายการที่ยังไม่ได้อ่านหากหมวดหมู่นี้ไม่ได้รับการเมินเฉย", "ignoring.description": "อย่าเตือนฉันเมื่อมีคำตอบใหม่
อย่าแสดงกระทู้ในรายการที่ยังไม่ได้อ่าน", - "thread-tools.title": "เครื่องมือช่วยจัดการ Topic", + "thread-tools.title": "เครื่องมือช่วยจัดการกระทู้", "thread-tools.markAsUnreadForAll": "มาร์คว่ายังไม่ยังอ่านทั้งหมด", "thread-tools.pin": "ปักหมุดกระทู้", "thread-tools.unpin": "เลิกปักหมุดกระทู้", "thread-tools.lock": "ล็อคกระทู้", "thread-tools.unlock": "ปลดล็อคกระทู้", "thread-tools.move": "ย้ายกระทู้", - "thread-tools.move-posts": "Move Posts", + "thread-tools.move-posts": "ย้ายโพสต์", "thread-tools.move-all": "ย้ายทั้งหมด", - "thread-tools.change-owner": "Change Owner", - "thread-tools.select-category": "เลือกประเภท", + "thread-tools.change-owner": "เปลี่ยนเจ้าของ", + "thread-tools.select-category": "เลือกหมวดหมู่", "thread-tools.fork": "แยกกระทู้", - "thread-tools.tag": "Tag Topic", + "thread-tools.tag": "แท็กกระทู้", "thread-tools.delete": "ลบกระทู้", "thread-tools.delete-posts": "ลบโพสต์", - "thread-tools.delete-confirm": "มั่นใจแล้วหรือไม่ที่จะลบ Topic นี้?", + "thread-tools.delete-confirm": "มั่นใจแล้วหรือไม่ที่จะลบกระทู้นี้นี้?", "thread-tools.restore": "กู้กระทู้", - "thread-tools.restore-confirm": "มั่นใจแล้วหรือไม่ที่จะกู้คืน Topic นี้?", + "thread-tools.restore-confirm": "มั่นใจแล้วหรือไม่ที่จะกู้คืนกระทู้นี้?", "thread-tools.purge": "ล้างกระทู้", "thread-tools.purge-confirm": "คุณแน่ใจแล้วใช้ไมว่าต้องการล้างกระทู้นี้?", "thread-tools.merge-topics": "รวมกระทู้", - "thread-tools.merge": "Merge Topic", - "topic-move-success": "This topic will be moved to \"%1\" shortly. Click here to undo.", - "topic-move-multiple-success": "These topics will be moved to \"%1\" shortly. Click here to undo.", - "topic-move-all-success": "All topics will be moved to \"%1\" shortly. Click here to undo.", - "topic-move-undone": "Topic move undone", - "topic-move-posts-success": "Posts will be moved shortly. Click here to undo.", - "topic-move-posts-undone": "Post move undone", + "thread-tools.merge": "รวมกระทู้", + "topic-move-success": "กระทู้นี้จะถูกย้ายไป \"%1\" ในอีกไม่นาน คลิกที่นี่เพื่อย้อนกลับเหมือนเดิม", + "topic-move-multiple-success": "กระทู้เหล่านี้จะถูกย้ายไป \"%1\" ในอีกไม่นาน คลิกที่นี่เพื่อย้อนกลับเหมือนเดิม", + "topic-move-all-success": "ทุกกระทู้จะถูกย้ายไป \"%1\" ในอีกไม่นาน คลิกที่นี่เพื่อย้อนกลับเหมือนเดิม", + "topic-move-undone": "ย้อนกลับการย้ายกระทู้แล้ว", + "topic-move-posts-success": "โพสต์จะถูกย้ายในอีกไม่นาน คลิกที่นี่เพื่อย้อนกลับเหมือนเดิม", + "topic-move-posts-undone": "ย้อนกลับการย้ายโพสต์แล้ว", "post-delete-confirm": "คุณแน่ใจแล้วใช่ไหมว่าต้องการลบโพสต์นี้", "post-restore-confirm": "คุณแน่ใจแล้วใช้ไหมว่าต้องการกู้คืนโพสต์นี้", "post-purge-confirm": "คุณแน่ใจแล้วใช่ไหมว่าต้องการล้างโพสต์นี้", - "pin-modal-expiry": "Expiration Date", - "pin-modal-help": "You can optionally set an expiration date for the pinned topic(s) here. Alternatively, you can leave this field blank to have the topic stay pinned until it is manually unpinned.", + "pin-modal-expiry": "วันหมดอายุ", + "pin-modal-help": "คุณสามารถเลือกจะตั้งค่าวันหมดอายุสำหรับกระทู้ปักหมุดที่นี่ คูณยังสามารถปล่อยให้ฟิลด์นี้ว่างเพื่อให้กระทู้ยังคงถูกปักหมดจนกว่าจะยกเลิกด้วยมือ", "load-categories": "กำลังโหลดหมวดหมู่", "confirm-move": "ย้าย", "confirm-fork": "แยก", "bookmark": "บุ๊กมาร์ก", "bookmarks": "บุ๊กมาร์ก", "bookmarks.has-no-bookmarks": "คุณยังไม่มีบุ๊กมาร์กใดๆเลย", - "copy-permalink": "Copy Permalink", + "copy-permalink": "คัดลอกลิงก์ถาวร", "loading-more-posts": "โหลดโพสเพิ่มเติม", "move-topic": "ย้ายกระทู้", "move-topics": "ย้ายกระทู้", "move-post": "ย้ายโพส", "post-moved": "โพสต์ถูกย้ายแล้ว!", "fork-topic": "แยกกระทู้", - "enter-new-topic-title": "Enter new topic title", - "fork-topic-instruction": "Click the posts you want to fork, enter a title for the new topic and click fork topic", + "enter-new-topic-title": "ใส่ชื่อกระทู้ใหม่", + "fork-topic-instruction": "คลิกที่โพสต์ที่คุณต้องการแยก ใส่ชื่อของกระทู้ใหม่และกดแยกกระทู้", "fork-no-pids": "ไม่มีโพสต์ที่เลือก!", - "no-posts-selected": "No posts selected!", - "x-posts-selected": "%1 post(s) selected", - "x-posts-will-be-moved-to-y": "%1 post(s) will be moved to \"%2\"", - "fork-pid-count": "%1 โพสต์(s) ที่เลือก", + "no-posts-selected": "ไม่มีโพสต์ที่เลือก!", + "x-posts-selected": "มี %1 โพสต์ถูกเลือก", + "x-posts-will-be-moved-to-y": "%1 โพสต์จะถูกย้ายไป \"%2\"", + "fork-pid-count": "มี %1 โพสต์ที่ถูกเลือก", "fork-success": "แตกกระทู้สำเร็จแล้ว! คลิกที่นี่เพื่อไปยั้งกระทู้ที่คุณแตกประเด็น", "delete-posts-instruction": "คลิกโพสต์ที่คุณต้องการลบ/ล้าง", - "merge-topics-instruction": "Click the topics you want to merge or search for them", - "merge-topic-list-title": "List of topics to be merged", - "merge-options": "Merge options", - "merge-select-main-topic": "Select the main topic", - "merge-new-title-for-topic": "New title for topic", - "topic-id": "Topic ID", - "move-posts-instruction": "Click the posts you want to move then enter a topic ID or go to the target topic", - "move-topic-instruction": "Select the target category and then click move", - "change-owner-instruction": "Click the posts you want to assign to another user", + "merge-topics-instruction": "คลิกที่กระทู้ที่คุณต้องการจะรวม หรือค้นหามัน", + "merge-topic-list-title": "รายการกระทู้ที่จะรวมกัน", + "merge-options": "ตัวเลือกการรวม", + "merge-select-main-topic": "เลือกกระทู้หลัก", + "merge-new-title-for-topic": "ชื่อใหม่สำหรับกระทู้", + "topic-id": "รหัสกระทู้", + "move-posts-instruction": "คลิกที่โพสต์ที่คุณต้องการย้ายแล้วใส่รหัสกระทู้ หรือไปยังกระทู้ปลายทาง", + "move-topic-instruction": "เลือกหมวดหมู่ปลายทางและคลิกย้าย", + "change-owner-instruction": "คลิกที่โพสต์ที่คุณต้องการมอบหมายให้ผู้ใช้งานอีกคน", "composer.title-placeholder": "ป้อนชื่อกระทู้ของคุณที่นี่ ...", - "composer.handle-placeholder": "Enter your name/handle here", - "composer.hide": "Hide", + "composer.handle-placeholder": "ป้อนชื่อหรือชื่อเล่นของคุณที่นี่", + "composer.hide": "ซ่อน", "composer.discard": "ยกเลิก", "composer.submit": "ส่ง", - "composer.additional-options": "Additional Options", - "composer.post-later": "Post Later", - "composer.schedule": "Schedule", + "composer.additional-options": "ตัวเลือกเพิ่มเติม", + "composer.post-later": "โพสต์ทีหลัง", + "composer.schedule": "ตั้งเวลา", "composer.replying-to": "ตอบไปยัง %1", "composer.new-topic": "กระทู้ใหม่", - "composer.editing-in": "Editing post in %1", + "composer.editing-in": "แก้ไขโพสต์ใน %1", "composer.uploading": "กำลังอัพโหลด ...", "composer.thumb-url-label": "วาง URL ของภาพของกระทู้นี้", "composer.thumb-title": "เพิ่มภาพให้กับกระทู้นี้", @@ -175,18 +175,18 @@ "composer.thumb-file-label": "หรืออัปโหลดไฟล์", "composer.thumb-remove": "ล้างฟิลด์", "composer.drag-and-drop-images": "ลากและวางภาพที่นี่", - "more-users-and-guests": "ผู้ใช้อีก %1 คน (s) และ %2 guest(s)", - "more-users": "อีก %1 ผู้ใช้(s)", - "more-guests": "อีก %1 guest(s)", - "users-and-others": "%1 และคนอื่นๆอีก %2", + "more-users-and-guests": "ผู้ใช้อีก %1 คน และ ผู้มาเยือนอีก %2 คน", + "more-users": "ผู้ใช้อีก %1 คน", + "more-guests": "ผู้มาเยือนอีก %1 คน", + "users-and-others": "%1 และคนอื่นๆอีก %2 คน", "sort-by": "เรียงตาม", "oldest-to-newest": "เก่าสุดไปยังใหม่สุด", "newest-to-oldest": "ใหม่สุดไปยังเก่าสุด", - "recently-replied": "Recently Replied", - "recently-created": "Recently Created", - "most-votes": "Most Votes", - "most-posts": "Most Posts", - "most-views": "Most Views", + "recently-replied": "เพิ่งตอบล่าสุด", + "recently-created": "เพิ่งสร้างล่าสุด", + "most-votes": "โหวดมากสุด", + "most-posts": "โพสต์มากสุด", + "most-views": "จำนวนวิวมากสุด", "stale.title": "ตั้งกระทู้ใหม่แทนไหม?", "stale.warning": "กระทู้ที่คุณกำลังตอบเก่าไปหน่อยนะ อยากจะลองตั้งกระทู้ใหม่แทนไหมล่ะ? แล้วก็อ้างอิงกระทู้นี้ไปยังคำตอบของคุณ", "stale.create": "ตั้งกระทู้ใหม่", @@ -195,26 +195,26 @@ "diffs.title": "แก้ไขประวัติโพสต์", "diffs.description": "โพสนี้มี %1 การแก้ไข คลิกที่การแก้ไขด้านล่างเพื่อดูเนื้อหาโพสต์ตามเวลาที่เลือก", "diffs.no-revisions-description": "โพสนี้มี %1การแก้ไข", - "diffs.current-revision": "current revision", - "diffs.original-revision": "original revision", - "diffs.restore": "Restore this revision", - "diffs.restore-description": "A new revision will be appended to this post's edit history after restoring.", - "diffs.post-restored": "Post successfully restored to earlier revision", - "diffs.delete": "Delete this revision", - "diffs.deleted": "Revision deleted", - "timeago-later": "%1 later", - "timeago-earlier": "%1 earlier", - "first-post": "First post", - "last-post": "Last post", - "go-to-my-next-post": "Go to my next post", - "no-more-next-post": "You don't have more posts in this topic", - "open-composer": "Open composer", - "post-quick-reply": "Quick reply", - "navigator.index": "Post %1 of %2", - "navigator.unread": "%1 unread", - "upvote-post": "Upvote post", - "downvote-post": "Downvote post", - "post-tools": "Post tools", - "unread-posts-link": "Unread posts link", - "thumb-image": "Topic thumbnail image" + "diffs.current-revision": "รุ่นปัจจุบัน", + "diffs.original-revision": "รุ่นแรก", + "diffs.restore": "คืนกลับเป็นรุ่นนี้", + "diffs.restore-description": "รุ่นใหม่จะนำไปต่อท้ายในประวัติการแก้ไขของโพสต์นี้หลังจากคืนกลับแล้ว", + "diffs.post-restored": "การคืนกลับโพสต์เป็นรุ่นก่อนหน้าสำเร็จ", + "diffs.delete": "ลบรุ่นนี้", + "diffs.deleted": "รุ่นถูกลบแล้ว", + "timeago-later": "ถัดไป %1", + "timeago-earlier": "ก่อนหน้า %1", + "first-post": "โพสต์แรก", + "last-post": "โพสต์ล่าสุด", + "go-to-my-next-post": "ไปโพสต์ถัดไปของฉัน", + "no-more-next-post": "คุณได้มีโพสต์อีกในกระทู้นี้", + "open-composer": "เปิดคอมโพสเซอร์", + "post-quick-reply": "ตอบกลับอย่างรวดเร็ว", + "navigator.index": "โพสต์ %1 จากทั้งหมด %2", + "navigator.unread": "ยังไม่ได้อ่าน %1", + "upvote-post": "โหวดขึ้นโพสต์นี้", + "downvote-post": "โหวดลงโพสต์นี้", + "post-tools": "เครื่องมือโพสต์", + "unread-posts-link": "ลิงก์ไปโพสต์ที่ยังไม่ได้อ่าน", + "thumb-image": "รูปย่อของกระทู้" } \ No newline at end of file diff --git a/public/language/th/unread.json b/public/language/th/unread.json index 91833ee24d..50ac5d389f 100644 --- a/public/language/th/unread.json +++ b/public/language/th/unread.json @@ -1,16 +1,16 @@ { "title": "ไม่ได้อ่าน", - "no-unread-topics": "ไม่มีกระทู้ที่ยังไม่ได้อ่านเป็น", + "no-unread-topics": "ไม่มีกระทู้ที่ยังไม่ได้อ่าน", "load-more": "โหลดเพิ่มเติม", "mark-as-read": "ทำเครื่องหมายว่าอ่านแล้ว", - "mark-as-unread": "Mark as Unread", + "mark-as-unread": "ทำเครื่องหมายว่ายังไม่ได้อ่าน", "selected": "เลือก", "all": "ทั้งหมด", "all-categories": "หมวดหมู่ทั้งหมด", - "topics-marked-as-read.success": "Topic ถูกทำเครื่องหมายว่าอ่านแล้วเรียบร้อย", + "topics-marked-as-read.success": "กระทู้ทั้งหมดถูกทำเครื่องหมายว่าอ่านแล้วเรียบร้อย", "all-topics": "กระทู้ทั้งหมด", "new-topics": "ตั้งกระทู้ใหม่", - "watched-topics": "กระทู้ที่ดูแล้ว", + "watched-topics": "กระทู้ที่เฝ้าดู", "unreplied-topics": "กระทู้ที่ไม่ได้ตอบ", "multiple-categories-selected": "เลือกหลายรายการ" } \ No newline at end of file diff --git a/public/language/th/uploads.json b/public/language/th/uploads.json index 8b189723fb..7415fed7a7 100644 --- a/public/language/th/uploads.json +++ b/public/language/th/uploads.json @@ -3,7 +3,7 @@ "select-file-to-upload": "กรุณาเลือกไฟล์ที่จะอัพโหลด", "upload-success": "อัพโหลดไฟล์เรียบร้อยแล้ว", "maximum-file-size": "มากที่สุดได้ %1 kb", - "no-uploads-found": "No uploads found", - "public-uploads-info": "Uploads are public, all visitors can see them.", - "private-uploads-info": "Uploads are private, only logged in users can see them." + "no-uploads-found": "ไม่พบการอัพโหลด", + "public-uploads-info": "อัพโหลดเป็นสาธารณะ ทุกคนสามารถมองเห็นได้", + "private-uploads-info": "อัพโหลดเป็นส่วนตัว เฉพาะผู้ใช้ที่ล็อกอินเท่านั้นที่จะมองเห็น" } \ No newline at end of file diff --git a/public/language/th/user.json b/public/language/th/user.json index 42ce438282..35a9a5289c 100644 --- a/public/language/th/user.json +++ b/public/language/th/user.json @@ -1,5 +1,5 @@ { - "user-menu": "User menu", + "user-menu": "เมนูผู้ใช้งาน", "banned": "ถูกแบน", "muted": "Muted", "offline": "ออฟไลน์", From edfa402ae84947a45bde45470c7feaf262c23205 Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Sat, 13 Apr 2024 09:18:50 +0000 Subject: [PATCH 084/168] Latest translations and fallbacks --- public/language/th/admin/manage/users.json | 14 +- public/language/th/error.json | 86 ++++++------ public/language/th/flags.json | 50 +++---- public/language/th/notifications.json | 36 +++--- public/language/th/pages.json | 48 +++---- public/language/th/post-queue.json | 70 +++++----- public/language/th/reset_password.json | 6 +- public/language/th/rewards.json | 2 +- public/language/th/search.json | 144 ++++++++++----------- public/language/th/social.json | 20 +-- public/language/th/success.json | 6 +- public/language/th/tags.json | 20 +-- public/language/th/top.json | 4 +- public/language/th/topic.json | 10 +- public/language/th/user.json | 94 +++++++------- 15 files changed, 305 insertions(+), 305 deletions(-) diff --git a/public/language/th/admin/manage/users.json b/public/language/th/admin/manage/users.json index 30060dd280..482fc0148f 100644 --- a/public/language/th/admin/manage/users.json +++ b/public/language/th/admin/manage/users.json @@ -1,7 +1,7 @@ { "manage-users": "Manage Users", "users": "ผู้ใช้", - "edit": "Actions", + "edit": "จัดการ", "make-admin": "ทำให้เป็นแอดมิน", "remove-admin": "ยกเลิกการเป็นแอดมิน", "change-email": "เปลี่ยนอีเมล", @@ -13,10 +13,10 @@ "force-password-reset": "บังคับรีเซ็ตรหัสผ่านและออกจากระบบ", "ban": "แบน", "ban-users": "แบนผู้ใช้", - "temp-ban": "ผู้ใช้งานที่โดนแบนชั่วคราว", + "temp-ban": "แบนผู้ใช้ชั่วคราว", "unban": "ยกเลิกการแบนผู้ใช้งาน", "reset-lockout": "ยกเลิกการกักกัน", - "reset-flags": "ยกเลิกการการเฝ้าระวัง", + "reset-flags": "ยกเลิกรายงาน", "delete": "ลบ", "delete-users": "ลบผู้ใช้งาน", "delete-content": "ลบเนื้อหาของผู้ใช้งาน", @@ -63,7 +63,7 @@ "users.ip": "IP", "users.postcount": "จำนวนกระทู้", "users.reputation": "ชื่อเสียง", - "users.flags": "ติดตาม", + "users.flags": "ถูกรายงาน", "users.joined": "เข้าร่วม", "users.last-online": "ออนไลน์ครั้งสุดท้าย", "users.banned": "แบน", @@ -82,12 +82,12 @@ "alerts.confirm-ban": "คุณต้องการที่จะแบนผู้ใช้คนนี้ ถาวร ?", "alerts.confirm-ban-multi": "คุณต้องการที่จะแบนผู้ใช้กลุ่มนี้ ถาวร ?", - "alerts.ban-success": "ผู้ใช้งานที่โดนแบน", + "alerts.ban-success": "ผู้ใช้โดนแบนแล้ว!", "alerts.button-ban-x": "แบน %1 ผู้ใช้งาน", - "alerts.unban-success": "ยกเลิกการแบนผู้ใช้งาน", + "alerts.unban-success": "ยกเลิกการแบนผู้ใช้แล้ว!", "alerts.lockout-reset-success": "ยกเลิกการกักกัน", "alerts.password-change-success": "รหัสผ่านถูกเปลี่ยนแล้ว!", - "alerts.flag-reset-success": "ยกเลิกการติดตาม", + "alerts.flag-reset-success": "ยกเลิกรายงานแล้ว!", "alerts.no-remove-yourself-admin": "คุณไม่สามารถที่จะยกเลิกตัวเองจากการเป็นผู้ดูแลระบบ", "alerts.make-admin-success": "ขณะนี้ผู้ใช้เป็นผู้ดูแลระบบแล้ว", "alerts.confirm-remove-admin": "คุณต้องการลบผู้ดูแลระบบคนนี้หรือไม่?", diff --git a/public/language/th/error.json b/public/language/th/error.json index 31aab8f073..f1acf5b181 100644 --- a/public/language/th/error.json +++ b/public/language/th/error.json @@ -7,11 +7,11 @@ "account-locked": "บัญชีของคุณถูกระงับการใช้งานชั่วคราว", "search-requires-login": "\"ฟังก์ชั่นการค้นหา\" ต้องการบัญชีผู้ใช้ กรุณาเข้าสู่ระบบหรือสมัครสมาชิก", "goback": "กดย้อนกลับเพื่อกลับไปยังหน้าที่แล้ว", - "invalid-cid": "Category ID ไม่ถูกต้อง", - "invalid-tid": "Topic ID ไม่ถูกต้อง", - "invalid-pid": "Post ID ไม่ถูกต้อง", - "invalid-uid": "User ID ไม่ถูกต้อง", - "invalid-mid": "Chat Message ID ไม่ถูกต้อง", + "invalid-cid": "รหัสหมวดหมู่ไม่ถูกต้อง", + "invalid-tid": "รหัสกระทู้ไม่ถูกต้อง", + "invalid-pid": "รหัสโพสต์ไม่ถูกต้อง", + "invalid-uid": "ผู้ใช้งานไม่ถูกต้อง", + "invalid-mid": "รหัสข้อความแชทไม่ถูกต้อง", "invalid-date": "จำเป็นต้องมีวันที่ที่ถูกต้อง", "invalid-username": "ชื่อผู้ใช้ไม่ถูกต้อง", "invalid-email": "อีเมลไม่ถูกต้อง", @@ -57,16 +57,16 @@ "blacklisted-ip": "ขออภัย IP Address ของคุณถูกแบนจากชุมชนนี้ หากคุณคิดว่านี่เป็นเออเร่อของระบบ กรุณาติดต่อผู้ดูแลระบบ", "cant-blacklist-self-ip": "คุณไม่สามารถแบล็กลิสต์ IP ของคุณเองได้", "ban-expiry-missing": "กรุณาระบุวันสิ้นสุดสำหรับการแบนในครั้งนี้", - "no-category": "ยังไม่มี Category นี้", - "no-topic": "ยังไม่มี Topic นี้", - "no-post": "ยังไม่มี Post นี้", - "no-group": "ยังไม่มี Group นี้", + "no-category": "ยังไม่มีหมวดหมู่นี้", + "no-topic": "ยังไม่มีกระทู้นี้", + "no-post": "ยังไม่มีโพสต์นี้", + "no-group": "ยังไม่มีกลุ่มนี้", "no-user": "ยังไม่มีผู้ใช้งานนี้", "no-teaser": "ยังไม่มีทีเซอร์นี้", - "no-flag": "ยังไม่มี flag นี้", + "no-flag": "ยังไม่มีการรายงานนี้", "no-chat-room": "ยังไม่มีห้องแชทนี้", "no-privileges": "คุณมีสิทธิ์ไม่เพียงพอที่จะทำรายการนี้", - "category-disabled": "Category นี้ถูกปิดการใช้งานแล้ว", + "category-disabled": "หมวดหมู่นี้ถูกปิดการใช้งานแล้ว", "topic-locked": "กระทู้ถูกล็อก", "post-edit-duration-expired": "คุณได้รับอนุญาตให้แก้ไขโพสต์ได้หลังจากโพสต์ไปแล้ว %1  วินาที (s)", "post-edit-duration-expired-minutes": "คุณได้รับการอนุญาตให้แก้ไขโพสต์ได้หลังจากโพสต์ไปแล้ว %1 นาที (s)", @@ -108,19 +108,19 @@ "upload-error-fallback": "ไม่สามารถอัพโหลดรูปภาพ — %1", "scheduling-to-past": "โปรดเลือกวันที่ในอนาคต", "invalid-schedule-date": "โปรดใส่วันที่และเวลาที่ถูกต้อง", - "cant-pin-scheduled": "Scheduled topics cannot be (un)pinned.", - "cant-merge-scheduled": "Scheduled topics cannot be merged.", - "cant-move-posts-to-scheduled": "Can't move posts to a scheduled topic.", - "cant-move-from-scheduled-to-existing": "Can't move posts from a scheduled topic to an existing topic.", + "cant-pin-scheduled": "กระทู้ที่ตั้งเวลาไว้ไม่สามารถปักหมุดหรือยกเลิกปักหมุดได้", + "cant-merge-scheduled": "กระทู้ที่ตั้งเวลาไว้ไม่สามารถนำไปรวมได้", + "cant-move-posts-to-scheduled": "ไม่สามารถย้ายโพสต์ไปยังกระทู้ที่ตั้งเวลาไว้", + "cant-move-from-scheduled-to-existing": "ไม่สามารถย้ายโพสต์จากกระทู้ที่ตั้งเวลาไว้ไปยังกระทู้อื่น", "already-bookmarked": "คุณได้ติดบุ๊กมาร์คของโพสต์นี้แล้ว", "already-unbookmarked": "คุณได้ลบบุ๊กมาร์คของโพสต์นี้แล้ว", "cant-ban-other-admins": "คุณแบนแอดมินไม่ได้!!!", - "cant-mute-other-admins": "You can't mute other admins!", - "user-muted-for-hours": "You have been muted, you will be able to post in %1 hour(s)", - "user-muted-for-minutes": "You have been muted, you will be able to post in %1 minute(s)", - "cant-make-banned-users-admin": "You can't make banned users admin.", + "cant-mute-other-admins": "คุณไม่สามารถจำกัดการโพสต์แอดมินคนอื่น!", + "user-muted-for-hours": "คุณถูกจำกัดการโพสต์แล้ว คุณสามารถโพสต์ได้ในอีก %1 ชั่วโมง", + "user-muted-for-minutes": "คุณถูกจำกัดการโพสต์แล้ว คุณสามารถโพสต์ได้ในอีก %1 นาที", + "cant-make-banned-users-admin": "คุณไม่สามารถตั้งผู้ใช้ที่โดนแบนให้เป็นแอดมิน", "cant-remove-last-admin": "คุณเป็นแอดมินเพียงคนเดียว กรุณาเพิ่มผู้ใช้คนอื่นเป็นแอดมิน ก่อนการลบตัวเองออกจากแอดมิน", - "account-deletion-disabled": "Account deletion is disabled", + "account-deletion-disabled": "ไม่เปิดให้สามารถลบบัญชี", "cant-delete-admin": "ลบสิทธิพิเศษของแอดมินจากบัญชีผู้ใช้นี้ ก่อนทำการลบ", "already-deleting": "กำลังลบอยู่แล้ว", "invalid-image": "ภาพไม่ถูกต้อง", @@ -137,10 +137,10 @@ "group-needs-owner": "กลุ่มนี้ต้องการเจ้าของอย่างน้อย 1 คน", "group-already-invited": "ผู้ใช้นี้ถูกเชิญแล้ว", "group-already-requested": "คำร้องขอเป็นสมาชิกถูกส่งแล้ว", - "group-join-disabled": "You are not able to join this group at this time", - "group-leave-disabled": "You are not able to leave this group at this time", - "group-user-not-pending": "User does not have a pending request to join this group.", - "gorup-user-not-invited": "User has not been invited to join this group.", + "group-join-disabled": "คุณไม่สามารถเข้าร่วมกลุ่มนี้ในขณะนี้", + "group-leave-disabled": "คุณไม่สามารถออกจากกลุ่มนี้ในขณะนี้", + "group-user-not-pending": "ผู้ไช้ไม่มีการร้องขอเพื่อเข้าร่วมกลุ่มนี้", + "gorup-user-not-invited": "ผู้ไช้ไม่ถูกเชิญให้เข้าร่วมกลุ่มนี้", "post-already-deleted": "โพสต์นี้ได้ถูกลบไปแล้ว", "post-already-restored": "โพสต์นี้ถูกกู้คืนเรียบร้อยแล้ว", "topic-already-deleted": "กระทู้นี้ถูกลบไปแล้ว", @@ -170,24 +170,24 @@ "already-voting-for-this-post": "คุณได้โหวตโพสต์นี้แล้ว", "reputation-system-disabled": "ระบบชื่อเสียงถูกปิดใช้งาน", "downvoting-disabled": "\"การโหวตลง\" ถูกปิดใช้งาน", - "not-enough-reputation-to-chat": "You need %1 reputation to chat", - "not-enough-reputation-to-upvote": "You need %1 reputation to upvote", - "not-enough-reputation-to-downvote": "You need %1 reputation to downvote", - "not-enough-reputation-to-post-links": "You need %1 reputation to post links", - "not-enough-reputation-to-flag": "You need %1 reputation to flag this post", - "not-enough-reputation-min-rep-website": "You need %1 reputation to add a website", - "not-enough-reputation-min-rep-aboutme": "You need %1 reputation to add an about me", - "not-enough-reputation-min-rep-signature": "You need %1 reputation to add a signature", - "not-enough-reputation-min-rep-profile-picture": "You need %1 reputation to add a profile picture", - "not-enough-reputation-min-rep-cover-picture": "You need %1 reputation to add a cover picture", - "post-already-flagged": "You have already flagged this post", - "user-already-flagged": "You have already flagged this user", - "post-flagged-too-many-times": "This post has been flagged by others already", - "user-flagged-too-many-times": "This user has been flagged by others already", - "too-many-post-flags-per-day": "คุณสามารถปักธงได้แค่ %1 โพสต์ต่อวัน", - "too-many-user-flags-per-day": "คุณสามารถปักธงได้แค่ %1 ผู้ใช้งานต่อวัน", - "cant-flag-privileged": "You are not allowed to flag the profiles or content of privileged users (moderators/global moderators/admins)", - "cant-locate-flag-report": "ไม่สามารถหารายงานการปักธงได้", + "not-enough-reputation-to-chat": "คุณต้องมีชื่อเสียง %1 เพื่อแชท", + "not-enough-reputation-to-upvote": "คุณต้องมีชื่อเสียง %1 เพื่อโหวดขึ้น", + "not-enough-reputation-to-downvote": "คุณต้องมีชื่อเสียง %1 เพื่อโหวดลง", + "not-enough-reputation-to-post-links": "คุณต้องมีชื่อเสียง %1 เพื่อแปะลิงก์", + "not-enough-reputation-to-flag": "คุณต้องมีชื่อเสียง %1 เพื่อรายงานโพสต์นี้", + "not-enough-reputation-min-rep-website": "คุณต้องมีชื่อเสียง %1 เพื่อเพิ่มเว็บไซต์", + "not-enough-reputation-min-rep-aboutme": "คุณต้องมีชื่อเสียง %1 เพื่อเพิ่มข้อมูลเกี่ยวกับฉัน", + "not-enough-reputation-min-rep-signature": "คุณต้องมีชื่อเสียง %1 เพื่อเพิ่มลายเซ็น", + "not-enough-reputation-min-rep-profile-picture": "คุณต้องมีชื่อเสียง %1 เพื่อเพิ่มภาพโปรไฟล์", + "not-enough-reputation-min-rep-cover-picture": "คุณต้องมีชื่อเสียง %1 เพื่อเพิ่มภาพหน้าปก", + "post-already-flagged": "คุณรายงานโพสต์นี้แล้ว", + "user-already-flagged": "คุณรายงานผู้ใช้คนนี้แล้ว", + "post-flagged-too-many-times": "โพสต์นี้ถูกรายงานโดยผู้อื่นแล้ว", + "user-flagged-too-many-times": "ผู้ใช้งานนี้ถูกรายงานโดยผู้อื่นแล้ว", + "too-many-post-flags-per-day": "คุณสามารถรายงานได้ %1 โพสต์ต่อวัน", + "too-many-user-flags-per-day": "คุณสามารถรายงานได้ %1 ผู้ใช้งานต่อวัน", + "cant-flag-privileged": "คุณไม่อนุญาตให้รายงานโปรไฟล์หรือเนื้อหาจากผู้ใช้งานที่ได้สิทธิ์พิเศษ (moderators/global moderators/admins)", + "cant-locate-flag-report": "ไม่พบข้อมูลการรายงาน", "self-vote": "You cannot vote on your own post", "too-many-upvotes-today": "You can only upvote %1 times a day", "too-many-upvotes-today-user": "You can only upvote a user %1 times a day", @@ -205,7 +205,7 @@ "not-in-room": "ผู้ใช้ไม่อยู่ในห้อง", "cant-kick-self": "คุณไม่สามารถเตะตัวเองออกจากกลุ่มได้", "no-users-selected": "ไม่มีผู้ใช้ที่เลือก", - "no-groups-selected": "No group(s) selected", + "no-groups-selected": "ไม่มีกลุ่มที่เลือก", "invalid-home-page-route": "เส้นทางไปหน้าแรกผิดพลาด", "invalid-session": "Invalid Session", "invalid-session-text": "It looks like your login session is no longer active. Please refresh this page.", diff --git a/public/language/th/flags.json b/public/language/th/flags.json index 218b054f9b..3be13bb37d 100644 --- a/public/language/th/flags.json +++ b/public/language/th/flags.json @@ -3,25 +3,25 @@ "report": "รายงาน", "reports": "รายงาน", "first-reported": "ถูกรายงานครั้งแรก", - "no-flags": "ไชโย ไม่เจอธงใดๆเลย", - "x-flags-found": "พบธง %1 รายการ", + "no-flags": "ไชโย ไม่พบการรายงานเลย", + "x-flags-found": "พบการรายงาน %1 รายการ", "assignee": "ผู้ได้รับมอบหมาย", "update": "อัพเดท", - "updated": "ได้รับการอัพเดท", + "updated": "อัพเดทแล้ว", "resolved": "แก้ไขแล้ว", "report-added": "ถูกเพิ่มแล้ว", "report-rescinded": "ยกเลิกแล้ว", - "target-purged": "เนื้อหาที่ธงนี้อ้างถึงถูกลบออกและไม่มีอยู่ในระบบอีกต่อไป", - "target-aboutme-empty": "ผู้ใช้งานคนนี้ไม่ได้ใส่ข้อมูล "เกี่ยวกับฉัน" set.", + "target-purged": "เนื้อหาที่ถูกรายงาน ถูกลบออกและไม่มีอยู่ในระบบอีกต่อไป", + "target-aboutme-empty": "ผู้ใช้งานคนนี้ไม่ได้ใส่ข้อมูล "เกี่ยวกับฉัน"", - "graph-label": "การปักธงรายวัน", + "graph-label": "การรายงานรายวัน", "quick-filters": "ฟิลเตอร์แบบด่วน", - "filter-active": "มีฟิลเตอร์หนึ่งหรือหลายตัวในรายการปักธงนี้", + "filter-active": "รายการมีฟิลเตอร์หนึ่งหรือหลายตัวทำงาน", "filter-reset": "ลบฟิลเตอร์ออก", "filters": "ตัวเลือกฟิลเตอร์", "filter-reporterId": "ผู้รายงาน", "filter-targetUid": "ผู้ถูกรายงาน", - "filter-type": "ประเภทการปักธง", + "filter-type": "ประเภทรายงาน", "filter-type-all": "เนื้อหาทั้งหมด", "filter-type-post": "โพสต์", "filter-type-user": "ผู้ใช้งาน", @@ -35,31 +35,31 @@ "fewer-filters": "ลดฟิลเตอร์", "quick-actions": "จัดการอย่างเร็ว", - "flagged-user": "ผู้ใช้ที่ถูกปักธง", + "flagged-user": "ผู้ใช้ที่ถูกรายงาน", "view-profile": "ดูโปรไฟล์", "start-new-chat": "เริ่มแชทใหม่", - "go-to-target": "ดูเป้าหมายการปักธง", + "go-to-target": "ดูเป้าหมายของรายงาน", "assign-to-me": "มอบหมายให้ฉัน", "delete-post": "ลบโพสต์", "purge-post": "ล้างโพสต์", "restore-post": "กู้คืนโพสต์", - "delete": "ลบธง", + "delete": "ลบการรายงาน", "user-view": "ดูโปรไฟล์", "user-edit": "แก้ไขโปรไฟล์", - "notes": "โน๊ตปักธง", + "notes": "โน๊ตของรายงาน", "add-note": "เพิ่มโน้ต", "edit-note": "แก้ไขโน้ต", "no-notes": "ไม่มีโน้ตที่แชร์", - "delete-note-confirm": "คุณแน่ใจว่าต้องการลบโน้ตธงอันนี้?", - "delete-flag-confirm": "คุณแน่ใจว่าต้องการลบธงอันนี้?", + "delete-note-confirm": "คุณแน่ใจว่าต้องการลบโน้ตของรายการอันนี้?", + "delete-flag-confirm": "คุณแน่ใจว่าต้องการลบการรายงานอันนี้?", "note-added": "โน้ตถูกเพิ่มแล้ว", "note-deleted": "โน้ตถูกลบแล้ว", - "flag-deleted": "ธงถูกลบแล้ว", + "flag-deleted": "การรายงานถูกลบแล้ว", - "history": "บัญชี และ ประวัติการปักธง", - "no-history": "ไม่มีประวัติปักธง", + "history": "บัญชี และ ประวัติการรายงาน", + "no-history": "ไม่มีประวัติการรายงาน", "state-all": "สถานะทั้งหมด", "state-open": "เพิ่มใหม่/เปิด", @@ -72,24 +72,24 @@ "sort-newest": "เริ่มจากล่าสุดก่อน", "sort-oldest": "เริ่มจากเก่าสุดก่อน", "sort-reports": "รายงานมากที่สุด", - "sort-all": "ประเภทของธงทั้งหมด...", + "sort-all": "ประเภทของรายงานทั้งหมด...", "sort-posts-only": "เฉพาะโพสต์...", "sort-downvotes": "โหวดลงมากสุด", "sort-upvotes": "โหวดขึ้นมากสุด", "sort-replies": "ตอบกลับมากสุด", "modal-title": "เนื้อหาที่รายงาน", - "modal-body": "กรุณาระเหตุผลสำหรับการปักธง %1 %2 สำหรับการรีวิว หรือไม่ก็ใช้หนึ่งในปุ่มกดรายงานด่วนถ้าเป็นไปได้", + "modal-body": "กรุณาระบุเหตุผลสำหรับการรายงาน %1 %2 เพื่อใช้พิจารณา หรือไม่ก็กดปุ่มรายงานทันที่ถ้าใช้ได้", "modal-reason-spam": "สแปม", "modal-reason-offensive": "น่ารังเกียจ", "modal-reason-other": "อื่น ๆ (ระบุด้านล่าง)", - "modal-reason-custom": "เหตุผลว่าทำไมถึงรายงานเนื้อหานี้...", + "modal-reason-custom": "เหตุผลที่รายงานเนื้อหานี้...", "modal-submit": "ส่งรายงาน", - "modal-submit-success": "เนื้อหาถูกรายงานตามความเหมาะสมแล้ว", + "modal-submit-success": "เนื้อหาถูกรายงานตามเพื่อรอตรวจสอบแล้ว", "bulk-actions": "จัดการทีละมากๆ", - "bulk-resolve": "แก้ไขธง", - "bulk-success": "ธง %1 อันถูกอัพเดท", - "flagged-timeago-readable": "ถูกปักธงเมื่อ (%2)", - "auto-flagged": "[ปักธงอัตโนมัติ] ได้รับโหวดลง %1 ครั้ง" + "bulk-resolve": "จัดการรายงาน", + "bulk-success": "รายงาน %1 อันถูกอัพเดท", + "flagged-timeago-readable": "ถูกรายงานเมื่อ (%2)", + "auto-flagged": "[รายงานอัตโนมัติ] ถูกโหวดลง %1 ครั้ง" } \ No newline at end of file diff --git a/public/language/th/notifications.json b/public/language/th/notifications.json index 39cb8efc53..f52e90a746 100644 --- a/public/language/th/notifications.json +++ b/public/language/th/notifications.json @@ -1,15 +1,15 @@ { "title": "แจ้งเตือน", "no-notifs": "คุณไม่มีข้อแจ้งเตือนใหม่", - "see-all": "All notifications", - "mark-all-read": "Mark all read", + "see-all": "การแจ้งเตือนทั้งหมด", + "mark-all-read": "ทำเครื่องหมายทั้งหมดว่าอ่านแล้ว", "back-to-home": "กลับสู่ %1", "outgoing-link": "ลิงค์ออก", "outgoing-link-message": "ตอนนี้คุณกำลังออกจาก %1", "continue-to": "ดำเนินการต่อไปยัง %1", "return-to": "กลับสู่ %1", - "new-notification": "You have a new notification", - "you-have-unread-notifications": "คุณมีคำเตือนที่ยังไม่ได้อ่าน", + "new-notification": "คุณมีการแจ้งเตือนใหม่", + "you-have-unread-notifications": "คุณมีการแจ้งเตือนที่ยังไม่ได้อ่าน", "all": "ทั้งหมด", "topics": "กระทู้", "tags": "แท็ก", @@ -21,11 +21,11 @@ "follows": "ติดตาม", "upvote": "โหวตขึ้น", "awards": "รางวัล", - "new-flags": "ปักธงใหม่", - "my-flags": "ธงที่ถูกปักให้ฉัน", + "new-flags": "รายงานใหม่", + "my-flags": "รายงานที่ถูกมอบหมายให้ฉัน", "bans": "แบน", "new-message-from": "ข้อความใหม่จาก %1", - "new-messages-from": "%1 new messages from %2", + "new-messages-from": "%1 ข้อความใหม่จาก %2", "new-message-in": "New message in %1", "new-messages-in": "%1 new messages in %2", "user-posted-in-public-room": "%1 wrote in %3", @@ -38,14 +38,14 @@ "upvoted-your-post-in-multiple": "%1, %2 and %3 others have upvoted your post in %4.", "moved-your-post": "%1 ได้ย้ายโพสต์ของคุณไปยัง %2", "moved-your-topic": "%1 ได้ย้าย %2", - "user-flagged-post-in": "%1 ได้ปักธงโพสต์ใน %2", - "user-flagged-post-in-dual": "%1และ %2ได้ปักธงโพสต์ใน %3", - "user-flagged-post-in-triple": "%1, %2 and %3 flagged a post in %4", - "user-flagged-post-in-multiple": "%1, %2 and %3 others flagged a post in %4", - "user-flagged-user": "%1 ได้ปักธงโปรไฟล์ผู้ใช้ (%2)", - "user-flagged-user-dual": "%1และ%2ได้ปักธงโปรไฟล์ผู้ใช้ (%3)", - "user-flagged-user-triple": "%1, %2 and %3 flagged a user profile (%4)", - "user-flagged-user-multiple": "%1, %2 and %3 others flagged a user profile (%4)", + "user-flagged-post-in": "%1 ได้รายงานโพสต์ใน %2", + "user-flagged-post-in-dual": "%1และ %2ได้รายงานโพสต์ใน %3", + "user-flagged-post-in-triple": "%1, %2 และ %3 ได้รายงานโพสต์ใน %4", + "user-flagged-post-in-multiple": "%1, %2 และอีก %3 คนได้รายงานโพสต์ใน %4", + "user-flagged-user": "%1 ได้รายงานโปรไฟล์ผู้ใช้ (%2)", + "user-flagged-user-dual": "%1และ%2ได้รายงานโปรไฟล์ผู้ใช้ (%3)", + "user-flagged-user-triple": "%1, %2 และ %3 ได้รายงานโปรไฟล์ผู้ใช้ (%4)", + "user-flagged-user-multiple": "%1, %2 และอีก %3 คนได้รายงานโปรไฟล์ผู้ใช้ (%4)", "user-posted-to": "%1 ได้โพสต์คำตอบไปยัง : %2", "user-posted-to-dual": "%1และ %2ได้โพสต์คำตอบไปยัง : %3", "user-posted-to-triple": "%1, %2 and %3 have posted replies to: %4", @@ -63,7 +63,7 @@ "user-started-following-you-multiple": "%1, %2 and %3 others started following you.", "new-register": "%1ได้ส่งคำขอสมัครสมาชิก", "new-register-multiple": "มี%1คำขอสมัครสมาชิกที่รอการรีวิว", - "flag-assigned-to-you": "ปักธง %1ได้ถูกปักธงให้คุณ", + "flag-assigned-to-you": "%1 รายงานได้ถูกมอบหมายให้คุณ", "post-awaiting-review": "โพสกำลังรอการพิจารณา", "profile-exported": "%1 profile exported, click to download", "posts-exported": "%1 posts exported, click to download", @@ -95,7 +95,7 @@ "notificationType-group-request-membership": "เมื่อบางคนร้องขอที่จะเข้าร่วมกลุ่มที่คุณเป็นเจ้าของ", "notificationType-new-register": "เมื่อมีคนถูกเพิ่มในคิวลงทะเบียน", "notificationType-post-queue": "เมื่อมีโพสต์ใหม่อยู่ในคิว", - "notificationType-new-post-flag": "เมื่อโพสต์ถูกตั้งค่าสถานะ", - "notificationType-new-user-flag": "เมื่อผู้ใช้ถูกตั้งค่าสถานะ", + "notificationType-new-post-flag": "เมื่อโพสต์ถูกรายงาน", + "notificationType-new-user-flag": "เมื่อผู้ใช้ถูกรายงาน", "notificationType-new-reward": "เมื่อคุณได้รับรางวัล" } \ No newline at end of file diff --git a/public/language/th/pages.json b/public/language/th/pages.json index 054c46f451..02b27e9839 100644 --- a/public/language/th/pages.json +++ b/public/language/th/pages.json @@ -6,36 +6,36 @@ "popular-month": "กระทู้ฮิตเดือนนี้", "popular-alltime": "กระทู้ฮิตตลาดกาล", "recent": "กระทู้ล่าสุด", - "top-day": "Top voted topics today", - "top-week": "Top voted topics this week", - "top-month": "Top voted topics this month", - "top-alltime": "Top Voted Topics", + "top-day": "กระทู้ที่ได้รับโหวดสูงสุดวันนี้", + "top-week": "กระทู้ที่ได้รับโหวดสูงสุดสัปดาห์นี้", + "top-month": "กระทู้ที่ได้รับโหวดสูงสุดเดือนนี้", + "top-alltime": "กระทู้ที่ได้รับโหวดสูงสุด", "moderator-tools": "เครื่องมือผู้ดูแลระบบ", - "flagged-content": "เนื้อหาที่ถูกปักธง", + "flagged-content": "เนื้อหาที่ถูกรายงาน", "ip-blacklist": "ไอดีที่ถูกขึ้นบัญชีดำ", - "post-queue": "คิวโพส", - "registration-queue": "Registration Queue", + "post-queue": "คิวการโพสต์", + "registration-queue": "คิวการลงทะเบียน", "users/online": "ผู้ใช้ออนไลน์", "users/latest": "ผู้ใช้ล่าสุด", "users/sort-posts": "ผู้ใช้ที่โพสต์เยอะที่สุด", - "users/sort-reputation": "ผู้ใช้ที่มีชื่อเสียงโด่งดังที่สุด", + "users/sort-reputation": "ผู้ใช้ที่มีชื่อเสียงมากที่สุด", "users/banned": "ผู้ใช้ที่ถูกแบน", - "users/most-flags": "ผู้ใช้ที่ถูกปักธงมากที่สุด", + "users/most-flags": "ผู้ใช้ที่ถูกรายงานมากที่สุด", "users/search": "ค้นหาผู้ใช้", "notifications": "การแจ้งเตือน", "tags": "แท็ก", - "tag": "หัวข้อที่ติดแท็กใต้ "%1"", + "tag": "กระทู้ที่ติดแท็ก "%1"", "register": "สมัครบัญชีผู้ใช้", "registration-complete": "สมัครสมาชิกสำเร็จเรียบร้อย", "login": "เข้าสู่ระบบบัญชีของคุณ", "reset": "ตั้งค่ารหัสผ่านใหม่ให้บัญชีของคุณ", "categories": "หมวดหมู่", "groups": "กลุ่ม", - "group": "%1 กลุ่ม", + "group": "กลุ่ม %1", "chats": "แชท", "chat": "กำลังแชทกับ %1", - "flags": "ธง", - "flag-details": "ธง %1 รายละเอียด", + "flags": "รายงาน", + "flag-details": "รายละเอียดของรายงาน %1 ", "account/edit": "กำลังแก้ไข \"%1\"", "account/edit/password": "กำลังแก้ไขรหัสผ่านของ \"%1\"", "account/edit/username": "กำลังแก้ไขชื่อผู้ใช้ \"%1\"", @@ -43,26 +43,26 @@ "account/info": "ข้อมูลบัญชี", "account/following": "ผู้คน %1 ติดตาม", "account/followers": "ผู้คนที่ติดตาม %1", - "account/posts": "โพสต์ถูกสร้างโดย %1", - "account/latest-posts": "Latest posts made by %1", - "account/topics": "กระทู้ถูกสร้างโดย %1", + "account/posts": "โพสต์ที่เขียนโดย %1", + "account/latest-posts": "โพสต์ล่าสุดที่เขียนโดย %1", + "account/topics": "กระทู้ที่สร้างโดย %1", "account/groups": "กลุ่มของ %1", - "account/watched-categories": "%1's Watched Categories", - "account/watched-tags": "%1's Watched Tags", + "account/watched-categories": "หมวดหมู่ที่เฝ้าดูของ %1", + "account/watched-tags": "แท็กที่เฝ้าดูของ %1", "account/bookmarks": "บุ๊กมาร์คโพสต์ของ %1", "account/settings": "การตั้งค่าผู้ใช้", - "account/settings-of": "Changing settings of %1", + "account/settings-of": "กำลังเปลี่ยนแปลงการตั้งค่าของ %1", "account/watched": "กระทู้ที่ถูกดูโดย %1", "account/ignored": "กระทู้ที่ถูกละเว้นโดย %1", "account/upvoted": "โพสต์ที่ถูกโหวตขึ้นโดย %1", "account/downvoted": "โพสต์ที่โหวตลงโดย %1", "account/best": "โพสต์ดีที่สุดที่ถูกสร้างโดย %1", - "account/controversial": "Controversial posts made by %1", - "account/blocks": "Blocked users for %1", - "account/uploads": "Uploads by %1", - "account/sessions": "Login Sessions", + "account/controversial": "โพสต์ที่เกิดข้อโต้แยงของ %1", + "account/blocks": "ผู้ใช้งานที่ถูกบล็อกของ %1", + "account/uploads": "ข้อมูลที่อัพโหลดโดย %1", + "account/sessions": "เซสชันการเข้าสู่ระบบ", "confirm": "อีเมล์ได้รับการยืนยันแล้ว", - "maintenance.text": "%1 is currently undergoing maintenance.
Please come back another time.", + "maintenance.text": "%1 ตอนนี้กำลังอยู่ระหว่างการปิดปรับปรุง
โปรดเข้ามาใหม่ภายหลัง", "maintenance.messageIntro": "ผู้ดูแลระบบได้ฝากข้อความต่อไปนี้เอาไว้", "throttled.text": "%1 ไม่สามารถเข้าถึงได้ในขณะนี้เนื่องจากมีการโหลดที่หนักมากเกินไป กรุณากลับเข้ามาอีกครั้งในภายหลัง" } \ No newline at end of file diff --git a/public/language/th/post-queue.json b/public/language/th/post-queue.json index 021ed0d83f..830f0a22f6 100644 --- a/public/language/th/post-queue.json +++ b/public/language/th/post-queue.json @@ -1,42 +1,42 @@ { - "post-queue": "Post Queue", - "no-queued-posts": "There are no posts in the post queue.", - "no-single-post": "The topic or post you are looking for is no longer in the queue. It has likely been approved or deleted already.", + "post-queue": "คิวการโพสต์", + "no-queued-posts": "ไม่มีโพสต์อยู่ในคิว", + "no-single-post": "กระทู้หรือโพสต์ที่คุณกำลังมองหาไม่ได้อยู่ในคิวอีกแล้ว ซึ่งน่าจะได้รับการอนุมัติหรือลบไปแล้ว", "enabling-help": "The post queue is currently disabled. To enable this feature, go to Settings → Post → Post Queue and enable Post Queue.", - "back-to-list": "Back to Post Queue", + "back-to-list": "กลับไปยังคิวการโพสต์", "public-intro": "If you have any queued posts, they will be shown here.", "public-description": "This forum is configured to automatically queue posts from new accounts, pending moderator approval.
If you have queued posts awaiting approval, you will be able to see them here.", - "user": "User", - "when": "When", - "category": "Category", - "title": "Title", - "content": "Content", + "user": "ผู้ใช้งาน", + "when": "เมื่อ", + "category": "หมวดหมู่", + "title": "ชื่อหัวข้อ", + "content": "เนื้อหา", "posted": "Posted", - "reply-to": "Reply to \"%1\"", - "content-editable": "Click on content to edit", - "category-editable": "Click on category to edit", - "title-editable": "Click on title to edit", - "reply": "Reply", - "topic": "Topic", - "accept": "Accept", - "reject": "Reject", - "remove": "Remove", - "notify": "Notify", - "notify-user": "Notify User", - "confirm-reject": "Do you want to reject this post?", - "confirm-remove": "Do you want to remove this post?", - "bulk-actions": "Bulk Actions", - "accept-all": "Accept All", - "accept-selected": "Accept Selected", - "reject-all": "Reject All", - "reject-all-confirm": "Do you want to reject all posts?", - "reject-selected": "Reject Selected", - "reject-selected-confirm": "Do you want to reject %1 selected posts?", - "remove-all": "Remove all", - "remove-all-confirm": "Do you want to remove all posts?", - "remove-selected": "Remove Selected", - "remove-selected-confirm": "Do you want to remove %1 selected posts?", - "bulk-accept-success": "%1 posts accepted", - "bulk-reject-success": "%1 posts rejected" + "reply-to": "ตอบกลับไปยัง \"%1\"", + "content-editable": "คลิกที่เนื้อหาเพื่อแก้ไข", + "category-editable": "คลิกที่หมวดหมู่เพื่อแก้ไข", + "title-editable": "คลิกที่หัวข้อเพื่อแก้ไข", + "reply": "ตอบกลับ", + "topic": "กระทู้", + "accept": "อนุมัติ", + "reject": "ปฏิเสธ", + "remove": "ลบออก", + "notify": "แจ้งเตือน", + "notify-user": "แจ้งเตือนผู้ใช้งาน", + "confirm-reject": "คุณต้องการปฏิเสธโพสต์นี้หรือไม่?", + "confirm-remove": "คุณต้องการลบโพสต์นี้หรือไม่??", + "bulk-actions": "คำสั่งทีละมากๆ", + "accept-all": "ยอมรับทั้งหมด", + "accept-selected": "ยอมรับที่เลือก", + "reject-all": "ปฏิเสธทั้งหมด", + "reject-all-confirm": "คุณต้องการปฏิเสธโพสต์ทั้งหมดหรือไม่?", + "reject-selected": "ปฏิเสธที่เลือก", + "reject-selected-confirm": "คุณต้องการปฏิเสธโพสต์ที่เลือกจำนวน %1 โพสต์หรือไม่?", + "remove-all": "ลบทั้งหมด", + "remove-all-confirm": "คุณต้องการลบโพสต์ทั้งหมดหรือไม่?", + "remove-selected": "ลบที่เลือก", + "remove-selected-confirm": "คุณต้องการลบโพสต์ที่เลือกจำนวน %1 โพสต์หรือไม่?", + "bulk-accept-success": "%1 โพสต์ถูกยอมรับ", + "bulk-reject-success": "%1 โพสต์ถูกปฏิเสธ" } \ No newline at end of file diff --git a/public/language/th/reset_password.json b/public/language/th/reset_password.json index 7492ceccc4..0b50d2f758 100644 --- a/public/language/th/reset_password.json +++ b/public/language/th/reset_password.json @@ -1,16 +1,16 @@ { "reset-password": "รีเซ็ตรหัสผ่าน", - "update-password": "ปรับปรุงรหัสผ่าน", + "update-password": "แก้ไขรหัสผ่าน", "password-changed.title": "รหัสผ่านได้เปลี่ยนแปลงแล้ว", "password-changed.message": "

ตั้งค่ารหัสผ่านสำเร็จ กรุณาเข้าสู่ระบบอีกครั้ง", "wrong-reset-code.title": "รหัสรีเซ็ตไม่ถูกต้อง", "wrong-reset-code.message": "รหัสรีเซ็ตที่ได้รับไม่ถูกต้อง กรุณาลองใหม่อีกครั้งหรือ ขอรหัสรีเซ็ตใหม่", "new-password": "รหัสผ่านใหม่", "repeat-password": "ยืนยันรหัสผ่าน", - "changing-password": "Changing Password", + "changing-password": "กำลังเปลี่ยนรหัสผ่าน", "enter-email": "กรุณาใส่อีเมลของคุณ เราจะส่งอีเมลให้คุณพร้อมคำแนะนำเกี่ยวกับวิธีการรีเซ็ตบัญชีของคุณ", "enter-email-address": "ใส่อีเมล์", - "password-reset-sent": "If the specified address corresponds to an existing user account, a password reset email was sent. Please note that only one email will be sent per minute.", + "password-reset-sent": "ถ้าที่อยู่ที่ระบุตรงกับบัญชีที่มีอยู่แล้ว จะส่งอีเมลรีเซ็ตรหัสผ่านไปให้ โปรดเข้าใจว่าจะส่งอีเมลได้แค่ครั้งเดียวทุกหนึ่งนาที", "invalid-email": "อีเมล์ไม่ถูกต้อง / อีเมล์ไม่มีอยู่!", "password-too-short": "รหัสผ่านที่คุณกำหนดยังสั้นเกินไป กรุณากำหนดรหัสผ่านของคุณใหม่", "passwords-do-not-match": "รหัสผ่านทั้ง 2 ที่ใส่ไม่ตรงกัน", diff --git a/public/language/th/rewards.json b/public/language/th/rewards.json index 869e04e5f0..e7898c9534 100644 --- a/public/language/th/rewards.json +++ b/public/language/th/rewards.json @@ -1,5 +1,5 @@ { - "awarded-x-reputation": "คุณได้รับค่าชื่อเสียง %1", + "awarded-x-reputation": "คุณได้รับชื่อเสียงเพิ่มขึ้น %1", "awarded-group-membership": "คุณถูกเพิ่มลงในกลุ่ม %1", "essentials/user.reputation-conditional-value": "(ชื่อเสียง %1 %2)", diff --git a/public/language/th/search.json b/public/language/th/search.json index cab3c226c2..eef81df44c 100644 --- a/public/language/th/search.json +++ b/public/language/th/search.json @@ -1,44 +1,44 @@ { - "type-to-search": "Type to search", - "results-matching": "%1 ผลลัพธ์ ตรงตามที่ระบุ \"%2\", (%3 วินาที)", + "type-to-search": "พิมพ์เพื่อค้นหา", + "results-matching": "%1 ผลลัพธ์ ตรงตามที่ระบุ \"%2\" (%3 วินาที)", "no-matches": "ไม่พบผลลัพธ์ที่สอดคล้อง", "advanced-search": "การค้นหาแบบละเอียด", "in": "ใน", - "in-titles": "In titles", - "in-titles-posts": "In titles and posts", - "in-posts": "In posts", - "in-bookmarks": "In bookmarks", - "in-categories": "In categories", - "in-users": "In users", - "in-tags": "In tags", - "categories": "Categories", - "all-categories": "All categories", - "categories-x": "Categories: %1", - "categories-watched-categories": "Categories: Watched categories", - "type-a-category": "Type a category", - "tags": "Tags", - "tags-x": "Tags: %1", - "type-a-tag": "Type a tag", - "match-words": "Match words", - "match-all-words": "Match all words", - "match-any-word": "Match any word", - "all": "All", - "any": "Any", + "in-titles": "ในชื่อหัวข้อ", + "in-titles-posts": "ในชื่อหัวข้อและโพสต์", + "in-posts": "ในโพสต์", + "in-bookmarks": "ในบุ๊กมาร์ก", + "in-categories": "ในหมวดหมู่", + "in-users": "ในชื่อผู้ใช้งาน", + "in-tags": "ในแท็ก", + "categories": "หมวดหมู่", + "all-categories": "หมวดหมู่ทั้งหมด", + "categories-x": "หมวดหมู่: %1", + "categories-watched-categories": "หมวดหมู่: หมวดหมู่ที่เฝ้าดู", + "type-a-category": "พิมพ์หมวดหมู่", + "tags": "แท็ก", + "tags-x": "แท็ก: %1", + "type-a-tag": "พิมพ์ชื่อแท็ก", + "match-words": "คำที่ตรงกัน", + "match-all-words": "ต้องตรงกันทุกคำ", + "match-any-word": "ตรงกันคำใดคำหนึ่ง", + "all": "ทั้งหมด", + "any": "อย่างใดอย่างหนึ่ง", "posted-by": "บันทึกโดย", - "posted-by-usernames": "Posted by: %1", - "type-a-username": "Type a username", + "posted-by-usernames": "โพสต์โดย: %1", + "type-a-username": "พิมพ์ชื่อผู้ใช้งาน", "search-child-categories": "ค้นหาหมวดหมู่ย่อย", "has-tags": "มีแท็ก", "reply-count": "จำนวนข้อความตอบกลับ", - "replies": "Replies", - "replies-atleast-count": "Replies: At least %1", - "replies-atmost-count": "Replies: At most %1", + "replies": "การตอบกลับ", + "replies-atleast-count": "การตอบกลับ: อย่างน้อย %1", + "replies-atmost-count": "การตอบกลับ: อย่างมาก %1", "at-least": "อย่างน้อยที่สุด", "at-most": "อย่างมากที่สุด", "relevance": "ที่เกี่ยวข้อง", - "time": "Time", + "time": "เวลา", "post-time": "เวลาโพสต์", - "votes": "Votes", + "votes": "โหวด", "newer-than": "ใหม่กว่า", "older-than": "เก่ากว่า", "any-date": "วันที่ใดๆ", @@ -49,25 +49,25 @@ "three-months": "3 เดือน", "six-months": "6 เดือน", "one-year": "1 ปี", - "time-newer-than-86400": "Time: Newer than yesterday", - "time-older-than-86400": "Time: Older than yesterday", - "time-newer-than-604800": "Time: Newer than one week", - "time-older-than-604800": "Time: Older than one week", - "time-newer-than-1209600": "Time: Newer than two weeks", - "time-older-than-1209600": "Time: Older than two weeks", - "time-newer-than-2592000": "Time: Newer than one month", - "time-older-than-2592000": "Time: Older than one month", - "time-newer-than-7776000": "Time: Newer than three months", - "time-older-than-7776000": "Time: Older than three months", - "time-newer-than-15552000": "Time: Newer than six months", - "time-older-than-15552000": "Time: Older than six months", - "time-newer-than-31104000": "Time: Newer than one year", - "time-older-than-31104000": "Time: Older than one year", + "time-newer-than-86400": "เวลา: ใหม่กว่าเมื่อวาน", + "time-older-than-86400": "เวลา: เก่ากว่าเมื่อวาน", + "time-newer-than-604800": "เวลา: ไม่ถึง 1 สัปดาห์", + "time-older-than-604800": "เวลา: เก่าเกิน 1 สัปดาห์", + "time-newer-than-1209600": "เวลา: ไม่ถึง 2 สัปดาห์", + "time-older-than-1209600": "เวลา: เก่าเกิน 2 สัปดาห์", + "time-newer-than-2592000": "เวลา: ไม่ถึง 1 เดือน", + "time-older-than-2592000": "เวลา: เก่าเกิน 1 เดือน", + "time-newer-than-7776000": "เวลา: ไม่ถึง 3 เดือน", + "time-older-than-7776000": "เวลา: เก่าเกิน 3 เดือน", + "time-newer-than-15552000": "เวลา: ไม่ถึง 6 เดือน", + "time-older-than-15552000": "เวลา: เก่าเกิน 6 เดือน", + "time-newer-than-31104000": "เวลา: ไม่ถึง 1 ปี", + "time-older-than-31104000": "เวลา: เก่าเกิน 1 ปี", "sort-by": "จัดเรียงโดย", - "sort": "Sort", + "sort": "เรียงลำดับ", "last-reply-time": "เวลาตอบกลับล่าสุด", "topic-title": "หัวข้อกระทู้", - "topic-votes": "Topic votes", + "topic-votes": "จำนวนโหวดในกระทู้", "number-of-replies": "จำนวนข้อความตอบกลับ", "number-of-views": "จำนวนดู", "topic-start-date": "วันที่เริ่มกระทู้", @@ -75,36 +75,36 @@ "category": "หมวดหมู่", "descending": "เรียงจากมากไปน้อย", "ascending": "เรียงจากน้อยไปมาก", - "sort-by-relevance-desc": "Sort by: Relevance in descending order", - "sort-by-relevance-asc": "Sort by: Relevance in ascending order", - "sort-by-timestamp-desc": "Sort by: Post time in descending order", - "sort-by-timestamp-asc": "Sort by: Post time in ascending order", - "sort-by-votes-desc": "Sort by: Votes in descending order", - "sort-by-votes-asc": "Sort by: Votes in ascending order", - "sort-by-topic.lastposttime-desc": "Sort by: Last reply time in descending order", - "sort-by-topic.lastposttime-asc": "Sort by: Last reply time in ascending order", - "sort-by-topic.title-desc": "Sort by: Topic title in descending order", - "sort-by-topic.title-asc": "Sort by: Topic title in ascending order", - "sort-by-topic.postcount-desc": "Sort by: Number of replies in descending order", - "sort-by-topic.postcount-asc": "Sort by: Number of replies in ascending order", - "sort-by-topic.viewcount-desc": "Sort by: Number of views in descending order", - "sort-by-topic.viewcount-asc": "Sort by: Number of views in ascending order", - "sort-by-topic.votes-desc": "Sort by: Topic votes in descending order", - "sort-by-topic.votes-asc": "Sort by: Topic votes in ascending order", - "sort-by-topic.timestamp-desc": "Sort by: Topic start date in descending order", - "sort-by-topic.timestamp-asc": "Sort by: Topic start date in ascending order", - "sort-by-user.username-desc": "Sort by: Username in descending order", - "sort-by-user.username-asc": "Sort by: Username in ascending order", - "sort-by-category.name-desc": "Sort by: Category in descending order", - "sort-by-category.name-asc": "Sort by: Category in ascending order", - "save": "Save", + "sort-by-relevance-desc": "เรียงตาม: ความเกี่ยวข้องจากมากไปหาน้อย", + "sort-by-relevance-asc": "เรียงตาม: ความเกี่ยวข้องจากน้อยไปหามาก", + "sort-by-timestamp-desc": "เรียงตาม: เวลาที่โพสต์จากมากไปหาน้อย", + "sort-by-timestamp-asc": "เรียงตาม: เวลาที่โพสต์จากน้อยไปหามาก", + "sort-by-votes-desc": "เรียงตาม: จำนวนโหวดจากมากไปหาน้อย", + "sort-by-votes-asc": "เรียงตาม: จำนวนโหวดจากน้อยไปหามาก", + "sort-by-topic.lastposttime-desc": "เรียงตาม: การตอบกลับล่าสุดจากมากไปหาน้อย", + "sort-by-topic.lastposttime-asc": "เรียงตาม: การตอบกลับล่าสุดจากน้อยไปหามาก", + "sort-by-topic.title-desc": "เรียงตาม: ชื่อกระทู้จากมากไปหาน้อย", + "sort-by-topic.title-asc": "เรียงตาม: ชื่อกระทู้จากน้อยไปหามาก", + "sort-by-topic.postcount-desc": "เรียงตาม: จำนวนตอบกลับจากมากไปหาน้อย", + "sort-by-topic.postcount-asc": "เรียงตาม: จำนวนตอบกลับจากน้อยไปหามาก", + "sort-by-topic.viewcount-desc": "เรียงตาม: ยอดวิวจากมากไปหาน้อย", + "sort-by-topic.viewcount-asc": "เรียงตาม: ยอดวิวจากน้อยไปหามาก", + "sort-by-topic.votes-desc": "เรียงตาม: จำนวนโหวดกระทู้จากมากไปหาน้อย", + "sort-by-topic.votes-asc": "เรียงตาม: จำนวนโหวดกระทู้จากน้อยไปหามาก", + "sort-by-topic.timestamp-desc": "เรียงตาม: วันที่เริ่มต้นกระทู้จากมากไปหาน้อย", + "sort-by-topic.timestamp-asc": "เรียงตาม: วันที่เริ่มต้นกระทู้จากน้อยไปหามาก", + "sort-by-user.username-desc": "เรียงตาม: ชื่อผู้ใช้งานจากมากไปหาน้อย", + "sort-by-user.username-asc": "เรียงตาม: ชื่อผู้ใช้งานจากน้อยไปหามาก", + "sort-by-category.name-desc": "เรียงตาม: หมวดหมู่จากมากไปหาน้อย", + "sort-by-category.name-asc": "เรียงตาม: หมวดหมู่จากน้อยไปหามาก", + "save": "บันทึก", "save-preferences": "บันทึกการตั้งค่า", "clear-preferences": "ล้างการตั้งค่า", "search-preferences-saved": "ค้นหาการตั้งค่าที่บันทึกไว้", "search-preferences-cleared": "ค้นหาการตั้งค่าที่ลบล้างไป", "show-results-as": "แสดงผลลัพธ์แบบ", - "show-results-as-topics": "Show results as topics", - "show-results-as-posts": "Show results as posts", - "see-more-results": "See more results (%1)", - "search-in-category": "Search in \"%1\"" + "show-results-as-topics": "แสดงผลลัพธ์เป็นกระทู้", + "show-results-as-posts": "แสดงผลลัพธ์เป็นโพสต์", + "see-more-results": "แสดงผลลัพธ์อีก (%1)", + "search-in-category": "ค้นหาใน \"%1\"" } \ No newline at end of file diff --git a/public/language/th/social.json b/public/language/th/social.json index 2ba690a187..7930476093 100644 --- a/public/language/th/social.json +++ b/public/language/th/social.json @@ -1,12 +1,12 @@ { - "sign-in-with-twitter": "Sign in with Twitter", - "sign-up-with-twitter": "Sign up with Twitter", - "sign-in-with-github": "Sign in with Github", - "sign-up-with-github": "Sign up with Github", - "sign-in-with-google": "Sign in with Google", - "sign-up-with-google": "Sign up with Google", - "log-in-with-facebook": "Log in with Facebook", - "continue-with-facebook": "Continue with Facebook", - "sign-in-with-linkedin": "Sign in with LinkedIn", - "sign-up-with-linkedin": "Sign up with LinkedIn" + "sign-in-with-twitter": "เข้าสู่ระบบด้วยบัญชี Twitter", + "sign-up-with-twitter": "สร้างบัญชีใหม่ด้วยบัญชี Twitter", + "sign-in-with-github": "เข้าสู่ระบบด้วยบัญชี Github", + "sign-up-with-github": "สร้างบัญชีใหม่ด้วยบัญชี Github", + "sign-in-with-google": "เข้าสู่ระบบด้วยบัญชี Google", + "sign-up-with-google": "สร้างบัญชีใหม่ด้วยบัญชี Google", + "log-in-with-facebook": "เข้าสู่ระบบด้วยบัญชี Facebook", + "continue-with-facebook": "ไปต่อโดยใช้บัญชี Facebook", + "sign-in-with-linkedin": "เข้าสู่ระบบด้วยบัญชี LinkedIn", + "sign-up-with-linkedin": "สร้างบัญชีใหม่ด้วยบัญชี LinkedIn" } \ No newline at end of file diff --git a/public/language/th/success.json b/public/language/th/success.json index 7751c7b027..06679166f3 100644 --- a/public/language/th/success.json +++ b/public/language/th/success.json @@ -1,7 +1,7 @@ { "success": "สำเร็จ", - "topic-post": "คุณลงข้อความสำเร็จแล้ว", - "post-queued": "Your post is queued for approval. You will get a notification when it is accepted or rejected.", - "authentication-successful": "การระบุตัวตนสำเร็จแล้ว", + "topic-post": "คุณโพสต์สำเร็จแล้ว", + "post-queued": "โพสต์ของคุณอยู่ในคิวรออนุมัติ คุณจะได้รับการแจ้งเตือนเมื่อถูกอนุมัติหรือปฏิเสธ", + "authentication-successful": "การตรวจสอบตัวตนสำเร็จแล้ว", "settings-saved": "การตั้งค่าได้ถูกบันทึกแล้ว" } \ No newline at end of file diff --git a/public/language/th/tags.json b/public/language/th/tags.json index b0e8cbd932..4220445f4f 100644 --- a/public/language/th/tags.json +++ b/public/language/th/tags.json @@ -1,17 +1,17 @@ { - "all-tags": "All tags", - "no-tag-topics": "ไม่มีหัวข้อสนทนาที่เกี่ยวข้องกับป้ายคำศัพท์นี้", + "all-tags": "แท็กทั้งหมด", + "no-tag-topics": "ไม่มีหัวข้อสนทนาที่ติดแท็กนี้", "no-tags-found": "ไม่พบแท็ก", "tags": "แท็ก", - "enter-tags-here": "ติดแท็ก %1 - %2 ตัวอักษร", - "enter-tags-here-short": "ใส่ป้ายคำศัพท์ ...", - "no-tags": "ยังไม่มีป้ายคำศัพท์", + "enter-tags-here": "ใส่แท็ก %1 - %2 ตัวอักษร", + "enter-tags-here-short": "ติดแท็ก ...", + "no-tags": "ยังไม่มีแท็ก", "select-tags": "เลือกแท็ก", - "tag-whitelist": "Tag Whitelist", + "tag-whitelist": "แท็กที่ได้รับอนุญาต", "watching": "เฝ้าดู", "not-watching": "ไม่ได้เฝ้าดู", - "watching.description": "Notify me of new topics.", - "not-watching.description": "Do not notify me of new topics.", - "following-tag.message": "You will now be receiving notifications when somebody posts a topic with this tag.", - "not-following-tag.message": "You will not receive notifications when somebody posts a topic with this tag." + "watching.description": "แจ้งเตือนฉันเมื่อมีกระทู้ใหม่", + "not-watching.description": "ไม่ต้องแจ้งเตือนฉันเมื่อมีกระทู้ใหม่", + "following-tag.message": "คุณจะได้รับการแจ้งเตือนเมื่อบางคนตั้งกระทู้โดยใช้แท็กนี้", + "not-following-tag.message": "คุณจะไม่ได้รับการแจ้งเตือนเมื่อบางคนตั้งกระทู้โดยใช้แท็กนี้" } \ No newline at end of file diff --git a/public/language/th/top.json b/public/language/th/top.json index 6e1e05674e..01c880b29c 100644 --- a/public/language/th/top.json +++ b/public/language/th/top.json @@ -1,4 +1,4 @@ { - "title": "Top", - "no-top-topics": "No top topics" + "title": "อันดับสูงสุด", + "no-top-topics": "ไม่มีกระทู้ติดอันดับ" } \ No newline at end of file diff --git a/public/language/th/topic.json b/public/language/th/topic.json index 408c95e1f6..7dbf109d47 100644 --- a/public/language/th/topic.json +++ b/public/language/th/topic.json @@ -67,11 +67,11 @@ "user-forked-topic-ago": "%1 แยก กระทู้นี้เมื่อ %3", "user-forked-topic-on": "%1 แยก กระทู้นี้เมื่อ %3", "bookmark-instructions": "คลิกที่นี่เพื่อกลับไปยังโพสต์ที่อ่านล่าสุดในหัวข้อนี้", - "flag-post": "ปักธงโพสต์นี้", - "flag-user": "ปักธงผู้ใช้งานนี้", - "already-flagged": "ปักธงแล้ว", - "view-flag-report": "ดูรายงานการปักธง", - "resolve-flag": "แก้ไขการปักธง", + "flag-post": "รายงานโพสต์นี้", + "flag-user": "รายงานผู้ใช้นี้", + "already-flagged": "ถูกรายงานอยู่แล้ว", + "view-flag-report": "ดูข้อมูลการรายงาน", + "resolve-flag": "จัดการรายงาน", "merged-message": "กระทู้นี้ถูกรวมเข้าไปใน %2", "forked-message": "กระทู้นี้แยกมาจาก %2", "deleted-message": "กระทู้นี้ถูกลบไปแล้ว เฉพาะผู้ใช้งานที่มีสิทธิ์ในการจัดการกระทู้เท่านั้นที่จะมีสิทธิ์ในการเข้าชม", diff --git a/public/language/th/user.json b/public/language/th/user.json index 35a9a5289c..b1c941e329 100644 --- a/public/language/th/user.json +++ b/public/language/th/user.json @@ -1,7 +1,7 @@ { "user-menu": "เมนูผู้ใช้งาน", "banned": "ถูกแบน", - "muted": "Muted", + "muted": "ถูกจำกัดการโพสต์", "offline": "ออฟไลน์", "deleted": "ลบแล้ว", "username": "ชื่อผู้ใช้", @@ -10,20 +10,20 @@ "email": "อีเมล์", "confirm-email": "ยืนยันอีเมล์", "account-info": "ข้อมูลบัญชี", - "admin-actions-label": "Administrative Actions", + "admin-actions-label": "เครื่องมือผู้ดูแลระบบ", "ban-account": "แบนบัญชี", "ban-account-confirm": "คุณต้องการแบนผู้ใช้นี้หรือไม่?", "unban-account": "ปลดแบน", - "mute-account": "Mute Account", - "unmute-account": "Unmute Account", + "mute-account": "จำกัดการโพสต์", + "unmute-account": "ยกเลิกการจำกัดการโพสต์", "delete-account": "ลบบัญชี", "delete-account-as-admin": "ลบบัญชี", "delete-content": "ลบเนื้อหาบัญชี", "delete-all": "ลบบัญชีและเนื้อหา", - "delete-account-confirm": "Are you sure you want to anonymize your posts and delete your account?
This action is irreversible and you will not be able to recover any of your data

Enter your password to confirm that you wish to destroy this account.", - "delete-this-account-confirm": "Are you sure you want to delete this account while leaving its contents behind?
This action is irreversible, posts will be anonymized, and you will not be able to restore post associations with the deleted account

", - "delete-account-content-confirm": "Are you sure you want to delete this account's content (posts/topics/uploads)?
This action is irreversible and you will not be able to recover any data

", - "delete-all-confirm": "Are you sure you want to delete this account and all of its content (posts/topics/uploads)?
This action is irreversible and you will not be able to recover any data

", + "delete-account-confirm": "คุณต้องการทำให้โพสต์ของคุณเป็นโพสต์นิรนามและลบบัญชีของคุณหรือไม่?
การกระทำนี้ไม่สามารถย้อนกลับได้ และคุณไม่สามารถกู้ข้อมูลของคุณอีก

โปรดป้อนรหัสผ่านเพื่อยืนยันว่าคุณต้องการทำลายบัญชีนี้ทิ้ง", + "delete-this-account-confirm": "คุณต้องการจะลบบัญชีนี้และปล่อยเนื้อหาที่เคยโพสต์ไว้หรือไม่?
การกระทำนี้ไม่สามารถย้อนกลับได้ และคุณจะไม่สามารถกู้คืนความสัมพันธ์ระหว่างโพสต์กับบัญชีที่ถูกลบ

", + "delete-account-content-confirm": "คุณต้องการลบเนื้อหา (โพสต์/กระทู้/ข้อมูลที่อัพโหลด) ของคุณหรือไม่?
การกระทำนี้ไม่สามารถย้อนกลับได้ และคุณไม่สามารถกู้คืนข้อมูลใดๆได้

", + "delete-all-confirm": "คุณต้องการลบบัญชีนี้และเนื้อหา (โพสต์/กระทู้/ข้อมูลที่อัพโหลด) หรือไม่?
การกระทำนี้ไม่สามารถย้อนกลับได้ และคุณไม่สามารถกู้คืนข้อมูลใดๆได้

", "account-deleted": "บัญชีถูกลบแล้ว", "account-content-deleted": "เนื้อหาของบัญชีถูกลบแล้ว", "fullname": "ชื่อเต็ม", @@ -41,14 +41,14 @@ "change-all": "เปลี่ยนทั้งหมด", "watched": "ดูแล้ว", "ignored": "ยกเว้นแล้ว", - "default-category-watch-state": "Default category watch state", + "default-category-watch-state": "ค่าเริ่มต้นของสถานะการเฝ้าดู", "followers": "คนติดตาม", "following": "ติดตาม", - "blocks": "Blocks", - "blocked-users": "Blocked users", - "block-toggle": "Toggle Block", - "block-user": "Block User", - "unblock-user": "Unblock User", + "blocks": "บล็อก", + "blocked-users": "ผู้ใช้งานที่ถูกบล็อก", + "block-toggle": "สลับการบล็อก", + "block-user": "บล็อกผู้ใช้งาน", + "unblock-user": "ยกเลิกการบล็อกผู้ใช้งาน", "aboutme": "เกี่ยวกับฉัน", "signature": "ลายเซ็น", "birthday": "วันเกิด", @@ -63,8 +63,8 @@ "change-picture": "เปลี่ยนรูป", "change-username": "เปลี่ยนชื่อผู้ใช้", "change-email": "เปลี่ยนอีเมล", - "email-updated": "Email Updated", - "email-same-as-password": "Please enter your current password to continue – you've entered your new email again", + "email-updated": "อัพเดทอีเมลแล้ว", + "email-same-as-password": "โปรดป้อนรหัสผ่านปัจจุบันของคุณเพื่อไปต่อ – คุณได้ป้อนอีเมลของคุณอีกครั้ง", "edit": "แก้ไข", "edit-profile": "แก้ไขข้อมูลส่วนตัว", "default-picture": "แก้ไขไอคอน", @@ -77,14 +77,14 @@ "change-password-error": "รหัสผ่านใช้ไม่ได้", "change-password-error-wrong-current": "รหัสผ่านปัจจุบันไม่ถูกต้อง", "change-password-error-match": "รหัสผ่านต้องเหมือนกัน", - "change-password-error-privileges": "คุณไม่มีสิทธิในการเปลี่ยนรหัสผ่าน", + "change-password-error-privileges": "คุณไม่มีสิทธิเปลี่ยนรหัสผ่านนี้", "change-password-success": "รหัสผ่านของคุณได้รับการแก้ไขแล้ว", "confirm-password": "ยืนยันรหัสผ่าน", "password": "รหัสผ่าน", "username-taken-workaround": "ชื้อผู้ใช้นี้ถูกใช้แล้ว เราทำการแก้ไขชื่อผู้ใช้ของคุณเล็กน้อยเป็น %1", "password-same-as-username": "คุณใช้รหัสผ่านเดียวกับชื่อผู้ใช้ กรุณาเปลี่ยนรหัสผ่านใหม่", "password-same-as-email": "คุณใช้รหัสผ่านเดียวกับอีเมล กรุณาเปลี่ยนรหัสผ่านใหม่", - "weak-password": "พาสเวิร์ดเดาได้ง่าย", + "weak-password": "รหัสผ่านเดาได้ง่าย", "upload-picture": "อัพโหลดรูป", "upload-a-picture": "อัพโหลดรูป", "remove-uploaded-picture": "ลบภาพที่อัพโหลดไว้", @@ -106,63 +106,63 @@ "digest-monthly": "รายเดือน", "has-no-follower": "ผู้ใช้รายนี้ไม่มีใครติดตาม :(", "follows-no-one": "ผู้ใช้รายนี้ไม่ติดตามใคร :(", - "has-no-posts": "ผู้ใช้นี้ไม่ได้โพสต์ข้อความใดๆ", - "has-no-best-posts": "This user does not have any upvoted posts yet.", - "has-no-topics": "ผู้ใช้นี้ยังไม่เคยตั้งกระทู้ใดๆ", - "has-no-watched-topics": "ผู้ใช้นี้ไม่ได้ติดตามกระทู้ใดๆ", - "has-no-ignored-topics": "ผู้ใช้นี้ไม่ได้ละเว้นกระทู้ใดๆ", - "has-no-upvoted-posts": "ผู้ใช้นี้ไม่ได้โหวตขึ้นให้ข้อความใดๆ", - "has-no-downvoted-posts": "ผู้ใช้นี้ไม่ได้โหวตลงให้ข้อความใดๆ", - "has-no-controversial-posts": "This user does not have any downvoted posts yet.", - "has-no-blocks": "You have blocked no users.", - "email-hidden": "ซ่อนอีเมล", + "has-no-posts": "ผู้ใช้รายนี้ยังไม่ได้โพสต์ข้อความใดๆ", + "has-no-best-posts": "ผู้ใช้รายนี้ยังไม่มีโพสต์ที่ได้รับโหวดขึ้นเลย", + "has-no-topics": "ผู้ใช้รายนี้ยังไม่เคยตั้งกระทู้ใดๆ", + "has-no-watched-topics": "ผู้ใช้รายนี้ไม่ได้ติดตามกระทู้ใดๆ", + "has-no-ignored-topics": "ผู้ใช้รายนี้ไม่ได้ละเว้นกระทู้ใดๆ", + "has-no-upvoted-posts": "ผู้ใช้รายนี้ไม่ได้โหวตขึ้นให้ข้อความใดๆ", + "has-no-downvoted-posts": "ผู้ใช้รายนี้ไม่ได้โหวตลงให้ข้อความใดๆ", + "has-no-controversial-posts": "ผู้ใช้รายนี้ยังไม่มีโพสต์ที่ได้รับโหวดลงเลย", + "has-no-blocks": "คุณไม่ได้บล็อกผู้ใช้งานใด", + "email-hidden": "อีเมลถูก", "hidden": "ซ่อน", "paginate-description": "ใช้การแบ่งหน้ากระทู้และข้อความแทนการเลื่อนต่อเรื่อยๆ", "topics-per-page": "จำนวนกระทู้ต่อหน้า", "posts-per-page": "จำนวนข้อความต่อหน้า", - "category-topic-sort": "Category topic sort", - "topic-post-sort": "Topic post sort", + "category-topic-sort": "การเรียงกระทู้ในหมวดหมู่", + "topic-post-sort": "การเรียงโพสต์ในกระทู้", "max-items-per-page": "สูงสุด %1", "acp-language": "ภาษาในหน้าผู้ดูแลระบบ", - "notifications": "Notifications", - "upvote-notif-freq": "แจ้งเตือนความถี่โหวตขึ้น", + "notifications": "การแจ้งเตือน", + "upvote-notif-freq": "ความถี่การแจ้งเตือนโหวตขึ้น", "upvote-notif-freq.all": "โหวตขึ้นทั้งหมด", "upvote-notif-freq.first": "First Per Post", - "upvote-notif-freq.everyTen": "ทุกๆ 10 โหวตขึ้น", - "upvote-notif-freq.threshold": "On 1, 5, 10, 25, 50, 100, 150, 200...", + "upvote-notif-freq.everyTen": "ทุกๆการโหวตขึ้น 10 ครั้ง", + "upvote-notif-freq.threshold": "ทุกๆ 1, 5, 10, 25, 50, 100, 150, 200...", "upvote-notif-freq.logarithmic": "ทุกๆ 10, 100, 1000...", "upvote-notif-freq.disabled": "ปิด", "browsing": "เปิดดูการตั้งค่า", "open-links-in-new-tab": "เปิดลิงค์ในแท็บใหม่", - "enable-topic-searching": "เปิดใช้การค้นหาแบบ In-Topic", + "enable-topic-searching": "เปิดใช้การค้นหาภายในกระทู้", "topic-search-help": "หากเปิดใช้งาน, \"การค้นหาภายในกระทู้\" จะแทนที่ระบบ \"การค้นหาจากค่าเริ่มต้นของเบราเซอร์\" และจะทำให้คุณค้นหาข้อมูลต่างๆภายในกระทู้ได้ แทนที่จะเป็นการหาแค่สิ่งที่แสดงบนหน้าจอเท่านั้น", - "update-url-with-post-index": "Update url with post index while browsing topics", + "update-url-with-post-index": "อัพเดท url ด้วย post index ในขณะที่ดูกระทู้", "scroll-to-my-post": "หลังจากได้ทำการโพสต์ตอบกลับ ให้แสดงโพสต์ใหม่", "follow-topics-you-reply-to": "ดูกระทู้ที่คุณตอบ", "follow-topics-you-create": "ดูกระทู้ที่คุณตั้ง", "grouptitle": "ชื่อกลุ่ม", - "group-order-help": "Select a group and use the arrows to order titles", + "group-order-help": "เลือกกลุ่มและใช้ลูกครเพื่อเรียงลำดับชื่อ", "show-group-title": "แสดงชื่อกลุ่ม", "hide-group-title": "ซ่อนชื่อกลุ่ม", "order-group-up": "เรียงลำดับกลุ่มจากน้อยไปหามาก", "order-group-down": "เรียงลำดับกลุ่มจากมากไปหาน้อย", "no-group-title": "ไม่มีชื่อกลุ่ม", "select-skin": "เลือกสกิน", - "default": "Default (%1)", + "default": "ค่าเริ่มต้น (%1)", "no-skin": "ไม่มีสกิน", "select-homepage": "เลือกหน้าแรก", "homepage": "หน้าแรก", "homepage-description": "เลือกหน้าที่จะใช้เป็นหน้าแรกของฟอรั่ม หรือเลือก None เพื่อใช้ค่าเริ่มต้น", "custom-route": "กำหนดเส้นทางไปหน้าแรกเอง", - "custom-route-help": "Enter a route name here, without any preceding slash (e.g. \"recent\" or \"category/2/general-discussion\")", + "custom-route-help": "ใส่ชื่อ route ตรงนี้โดยที่ไม่มีเครื่องหมาาย / ข้างหน้า (เช่น \"recent\" หรือ \"category/2/general-discussion\")", "sso.title": "บริการ Single Sign-on", "sso.associated": "เกี่ยวข้องกับ", "sso.not-associated": "คลิกที่นี่เพื่อเชื่อมโยงกับ", "sso.dissociate": "แยกตัวออก", "sso.dissociate-confirm-title": "ยืนยันการแยกตัวออก", "sso.dissociate-confirm": "คุณแน่ใจหรือไม่ว่าต้องการแยกบัญชีออกจาก %1?", - "info.latest-flags": "ปักธงล่าสุด", - "info.no-flags": "ไม่พบโพสต์ที่ถูกปักธง", + "info.latest-flags": "รายงานล่าสุด", + "info.no-flags": "ไม่พบโพสต์ที่ถูกรายงาน", "info.ban-history": "ประวัติแบนล่าสุด", "info.no-ban-history": "ผู้ใช้นี้ถูกแบนแล้ว", "info.banned-until": "แบนจนกว่า %1", @@ -170,9 +170,9 @@ "info.banned-permanently": "แบนอย่างถาวร", "info.banned-reason-label": "เหตุผล", "info.banned-no-reason": "ไม่ได้ให้เหตุผลไว้", - "info.mute-history": "Recent Mute History", - "info.no-mute-history": "This user has never been muted", - "info.muted-until": "Muted until %1", + "info.mute-history": "ประวัติการถูกจำกัดการโพสต์", + "info.no-mute-history": "ผู้ใช้รายนี้ไม่เคยถูกจำกัดการโพสต์", + "info.muted-until": "ถูกจำกัดการโพสต์จนถึง %1", "info.muted-expiry": "หมดอายุ", "info.muted-no-reason": "ไม่ได้ให้เหตุผลไว้", "info.username-history": "ประวัติผู้ใช้", @@ -180,9 +180,9 @@ "info.moderation-note": "โน๊ตของ Moderation", "info.moderation-note.success": "โน้ตของ Moderation ถูกบันทึกแล้ว", "info.moderation-note.add": "เพิ่มโน้ต", - "sessions.description": "This page allows you to view any active sessions on this forum and revoke them if necessary. You can revoke your own session by logging out of your account.", - "revoke-session": "Revoke Session", - "browser-version-on-platform": "%1 %2 on %3", + "sessions.description": "หน้านี้ให้คุณสามารถดูเชสชันปัจจุบันในฟอรั่มนี้ และเพิกถอนเซสชันถ้าจำเป็น คุณสามารถเพิกถอนเซสชันของคุณเองโดยการออกจากระบบ", + "revoke-session": "เพิกถอนเซสชัน", + "browser-version-on-platform": "%1 %2 บน %3", "consent.title": "Your Rights & Consent", "consent.lead": "This community forum collects and processes your personal information.", "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", From c5d20ba9e1701d3c59a64ece8c47bccfefaf0379 Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Sun, 14 Apr 2024 09:18:39 +0000 Subject: [PATCH 085/168] Latest translations and fallbacks --- .../it/admin/settings/navigation.json | 2 +- public/language/pl/admin/advanced/events.json | 8 +-- .../pl/admin/appearance/customise.json | 2 +- .../language/pl/admin/development/info.json | 2 +- .../language/pl/admin/development/logger.json | 2 +- .../language/pl/admin/manage/categories.json | 2 +- .../language/pl/admin/manage/privileges.json | 12 ++-- public/language/pl/admin/manage/users.json | 28 +++++----- public/language/pl/admin/menu.json | 2 +- .../language/pl/admin/settings/advanced.json | 10 ++-- public/language/pl/admin/settings/email.json | 6 +- .../pl/admin/settings/navigation.json | 2 +- public/language/pl/admin/settings/post.json | 8 +-- public/language/pl/admin/settings/user.json | 4 +- public/language/pl/aria.json | 4 +- public/language/pl/error.json | 2 +- public/language/pl/global.json | 8 +-- public/language/pl/modules.json | 6 +- public/language/pl/notifications.json | 2 +- public/language/pl/search.json | 2 +- public/language/pl/success.json | 2 +- public/language/pl/tags.json | 6 +- public/language/pl/themes/persona.json | 2 +- public/language/pl/topic.json | 10 ++-- public/language/pl/user.json | 14 ++--- public/language/pl/users.json | 2 +- public/language/th/category.json | 2 +- public/language/th/email.json | 12 ++-- public/language/th/error.json | 56 +++++++++---------- public/language/th/flags.json | 4 +- 30 files changed, 112 insertions(+), 112 deletions(-) diff --git a/public/language/it/admin/settings/navigation.json b/public/language/it/admin/settings/navigation.json index b16ba287ed..eb28a32976 100644 --- a/public/language/it/admin/settings/navigation.json +++ b/public/language/it/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: opzionale", "properties": "Proprietà:", - "show-to-groups": "Show to Groups:", + "show-to-groups": "Mostra ai gruppi:", "open-new-window": "Apri in una nuova finestra", "dropdown": "Menu a tendina", "dropdown-placeholder": "Posiziona le voci del menu a discesa qui sotto, es.:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/pl/admin/advanced/events.json b/public/language/pl/admin/advanced/events.json index e8370e863f..695ca4e29f 100644 --- a/public/language/pl/admin/advanced/events.json +++ b/public/language/pl/admin/advanced/events.json @@ -9,9 +9,9 @@ "filter-type": "Typ zdarzenia", "filter-start": "Data początkowa", "filter-end": "Data końcowa", - "filter-user": "Filter by User", - "filter-user.placeholder": "Type user name to filter...", - "filter-group": "Filter by Group", - "filter-group.placeholder": "Type group name to filter...", + "filter-user": "Flitruj wg użytkownika", + "filter-user.placeholder": "Literuj aby wyszukać nazwę użytkownika...", + "filter-group": "Filtruj wg grupy", + "filter-group.placeholder": "Wpisz nazwę grupy aby odfiltrować...", "filter-per-page": "Na stronę" } \ No newline at end of file diff --git a/public/language/pl/admin/appearance/customise.json b/public/language/pl/admin/appearance/customise.json index f5baf7a9e3..9a679dce58 100644 --- a/public/language/pl/admin/appearance/customise.json +++ b/public/language/pl/admin/appearance/customise.json @@ -1,5 +1,5 @@ { - "customise": "Customise", + "customise": "Dostosuj", "custom-css": "Niestandardowe CSS/SASS", "custom-css.description": "Wprowadź tutaj własne deklaracje CSS/SASS, które zostaną zastosowane w wszystkich innych stylach.", "custom-css.enable": "Włącz niestandardowe CSS/SASS", diff --git a/public/language/pl/admin/development/info.json b/public/language/pl/admin/development/info.json index 1be54e0553..32667ed213 100644 --- a/public/language/pl/admin/development/info.json +++ b/public/language/pl/admin/development/info.json @@ -1,7 +1,7 @@ { "you-are-on": "Jesteś na %1:%2", "ip": "IP %1", - "nodes-responded": "%1 węzły odpowiedziały w ciągu %2ms!", + "nodes-responded": "%1 maszyn odpowiedziało w ciągu %2ms!", "host": "host", "primary": "główne / uruchomione zadania", "pid": "pid", diff --git a/public/language/pl/admin/development/logger.json b/public/language/pl/admin/development/logger.json index ee8f86a0bf..9b795ee444 100644 --- a/public/language/pl/admin/development/logger.json +++ b/public/language/pl/admin/development/logger.json @@ -4,7 +4,7 @@ "description": "Poprzez zaznaczenie tych pól wyboru otrzymasz logi na twój terminal. Zamiast tego jeśli podasz ścieżkę, logi zostaną tam zapisane. Logowanie HTTP jest przydatne dla zbierania statystyk o tym kto, kiedy i co czytał na forum. W dodatku do logowania żądań HTTP, możemy też zapisywać zdarzenia socket.io. Logowanie Socket.io, w powiązaniu z monitorowaniem redis-cli, może być bardzo przydatne podczas poznawania mechanizmów wewnętrznych NodeBB.", "explanation": "Zaznacz/odznacz aby właczyc albo wyłączyć dziennik. Restart nie jest wymagany.", "enable-http": "Zapisuj wydarzenia HTTP", - "enable-socket": "Zapisuj zdarzenia Socket.io", + "enable-socket": "Zapisuj zdarzenia socket.io", "file-path": "Ścieżka dziennika", "file-path-placeholder": "/sciezka/do/pliku.log ::: pozostaw pusty aby zapisywac do terminala", diff --git a/public/language/pl/admin/manage/categories.json b/public/language/pl/admin/manage/categories.json index b391b15a80..939732ffad 100644 --- a/public/language/pl/admin/manage/categories.json +++ b/public/language/pl/admin/manage/categories.json @@ -12,7 +12,7 @@ "text-color": "Kolor tekstu", "bg-image-size": "Wielkość obrazka tła", "custom-class": "Niestandardowa klasa", - "num-recent-replies": "Ile ostatnich odpowiedzi", + "num-recent-replies": "# ostatnich odpowiedzi", "ext-link": "Zewnętrzny odnośnik", "subcategories-per-page": "Subkategorie na stronę", "is-section": "Traktuj tę kategorię jako sekcję", diff --git a/public/language/pl/admin/manage/privileges.json b/public/language/pl/admin/manage/privileges.json index b9cdf2f596..558f77dffb 100644 --- a/public/language/pl/admin/manage/privileges.json +++ b/public/language/pl/admin/manage/privileges.json @@ -8,7 +8,7 @@ "edit-privileges": "Edytuj uprawnienia", "select-clear-all": "Wybierz/wyczyść wszystko", "chat": "Dostęp do czatu", - "chat-with-privileged": "Czatuj z uprzywilejowanymi", + "chat-with-privileged": "Czatuj z uprawnionymi", "upload-images": "Przesyłanie zdjęć", "upload-files": "Przesyłanie plików", "signature": "Dodanie podpisu", @@ -54,13 +54,13 @@ "alert.confirm-save": "Potwierdź zamiar zapisania uprawnień", "alert.confirm-discard": "Czy na pewno chcesz odrzucić wprowadzone zmiany w uprawnieniach?", "alert.discarded": "Odrzucono zmiany w uprawnieniach", - "alert.confirm-copyToAll": "Are you sure you wish to apply this set of %1 to all categories?", - "alert.confirm-copyToAllGroup": "Are you sure you wish to apply this group's set of %1 to all categories?", - "alert.confirm-copyToChildren": "Are you sure you wish to apply this set of %1 to all descendant (child) categories?", - "alert.confirm-copyToChildrenGroup": "Are you sure you wish to apply this group's set of %1 to all descendant (child) categories?", + "alert.confirm-copyToAll": "Czy chcesz wykorzystać nastaw %1 w względem wszystkich działów?", + "alert.confirm-copyToAllGroup": "Czy na pewno chcesz nadać właściwości grupy %1 względem wszystkich działów?", + "alert.confirm-copyToChildren": "Czy chcesz nadać nastaw %1 dla wszystkich podkategorii?", + "alert.confirm-copyToChildrenGroup": "Czy chcesz wykorzystać nastaw %1 dla wszystkich podkategorii?", "alert.no-undo": "Tej czynności nie można cofnąć.", "alert.admin-warning": "Administratorzy domyślnie otrzymują wszelkie uprawnienia", "alert.copyPrivilegesFrom-title": "Wybierz kategorię, z której skopiować", "alert.copyPrivilegesFrom-warning": "To skopiuje %1 z wybranej kategorii.", - "alert.copyPrivilegesFromGroup-warning": "This will copy this group's set of %1 from the selected category." + "alert.copyPrivilegesFromGroup-warning": "Tak nadasz właściwości grupy %1 z wybranego działu." } \ No newline at end of file diff --git a/public/language/pl/admin/manage/users.json b/public/language/pl/admin/manage/users.json index 2e79caa057..7b3c5c0f0f 100644 --- a/public/language/pl/admin/manage/users.json +++ b/public/language/pl/admin/manage/users.json @@ -124,24 +124,24 @@ "export": "Eksport", "export-users-fields-title": "Wybierz pola CSV", "export-field-email": "Email", - "export-field-username": "Username", + "export-field-username": "Nazwa użytkownika", "export-field-uid": "UID", "export-field-ip": "IP", - "export-field-joindate": "Join date", - "export-field-lastonline": "Last Online", - "export-field-lastposttime": "Last Post Time", + "export-field-joindate": "Dołączył(a)", + "export-field-lastonline": "Ostanio online", + "export-field-lastposttime": "Czas ostatniego wpisu", "export-field-reputation": "Reputacja", "export-field-postcount": "Liczba postów", - "export-field-topiccount": "Topic Count", - "export-field-profileviews": "Profile Views", - "export-field-followercount": "Follower Count", - "export-field-followingcount": "Following Count", - "export-field-fullname": "Full Name", - "export-field-website": "Website", - "export-field-location": "Location", - "export-field-birthday": "Birthday", - "export-field-signature": "Signature", - "export-field-aboutme": "About Me", + "export-field-topiccount": "Licznik wątku", + "export-field-profileviews": "Wyświetleń profilu", + "export-field-followercount": "Liczba śledzących", + "export-field-followingcount": "Liczba śledzonych", + "export-field-fullname": "Imię i nazwisko", + "export-field-website": "Strona WWW", + "export-field-location": "Miejscowość", + "export-field-birthday": "Data urodzin", + "export-field-signature": "Sygnaturka", + "export-field-aboutme": "O mnie", "export-users-started": "Trwa eksport użytkowników do csv. To może chwilkę potrwać. Otrzymasz powiadomienie, gdy ten proces się skończy.", "export-users-completed": "Ukończono eksport użytkowników do csv, kliknij tutaj aby pobrać plik.", diff --git a/public/language/pl/admin/menu.json b/public/language/pl/admin/menu.json index e65f28d4dd..e8ffcb96fa 100644 --- a/public/language/pl/admin/menu.json +++ b/public/language/pl/admin/menu.json @@ -65,7 +65,7 @@ "section-advanced": "Zaawansowane", "advanced/database": "Baza danych", "advanced/events": "Zdarzenia", - "advanced/hooks": "Hooks", + "advanced/hooks": "Ścieżki", "advanced/logs": "Logi", "advanced/errors": "Błędy", "advanced/cache": "Pamięć", diff --git a/public/language/pl/admin/settings/advanced.json b/public/language/pl/admin/settings/advanced.json index 471787b69b..522818a4d1 100644 --- a/public/language/pl/admin/settings/advanced.json +++ b/public/language/pl/admin/settings/advanced.json @@ -6,7 +6,7 @@ "maintenance-mode.groups-exempt-from-maintenance-mode": "Wybierz grupy, które powinny być wyjątkiem od trybu serwisowego", "headers": "Nagłówki", "headers.allow-from": "Ustaw ALLOW-FROM, aby umieścić NodeBB w ramce iFrame", - "headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame", + "headers.csp-frame-ancestors": "Ustaw nagłówek Content-Security-Policy aby zamieścić NodeBB w iFrame.", "headers.csp-frame-ancestors-help": "'none', 'self' (domyślne) albo lista adresów URI, na które zezwalać.", "headers.powered-by": "Dopasuj nagłówek \"Powered By\" wysyłany przez NodeBB", "headers.acao": "Kontrola-Dostępu-Zezwól-Żródło", @@ -17,12 +17,12 @@ "headers.acam": "Kontrola-Dostępu-Zezwól-Metody", "headers.acah": "Kontrola-Dostępu-Zezwól-Nagłówki", "headers.coep": "Cross-Origin-Embedder-Policy", - "headers.coep-help": "When enabled (default), will set the header to require-corp", + "headers.coep-help": "Gdy włączone (domyślnie) ustawi nagłówekrequire-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", "headers.permissions-policy": "Permissions-Policy", - "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", - "hsts": "Strict Transport Security", + "headers.permissions-policy-help": "Pozwala ustawić nagłówek uprawnień jak np. \"geolocation=*, camera=()\", zobacz tutaj aby uzyskać więcej informacji.", + "hsts": "HTTP Strict Transport Security", "hsts.enabled": "Włączony HSTS (zalecane)", "hsts.maxAge": "Maksymalny wiek HSTS", "hsts.subdomains": "Uwzględnij subdomeny w nagłówku HSTS", @@ -43,7 +43,7 @@ "analytics.settings": "Ustawienia analityki", "analytics.max-cache": "Maksymalna wartość pamięci podręcznej analityki", - "analytics.max-cache-help": "On high-traffic installs, the cache could be exhausted continuously if there are more concurrent active users than the Max Cache value. (Restart required)", + "analytics.max-cache-help": "Przy dużym ruchu na forum weź poprawkę na to aby zapewnić pamięć podręczną przekraczającą liczbę odwiedzających stronę w tej samej chwili (potrzebny restartart).", "compression.settings": "Ustawienia Kompresji", "compression.enable": "Włącz Kompresję", "compression.help": "To ustawienie włącza kompresję gzip. Na stronach produkcyjnych o dużym ruchu, najlepiej ustawić kompresję na poziomie reverse-proxy. Możesz włączyć je tutaj na cele testów." diff --git a/public/language/pl/admin/settings/email.json b/public/language/pl/admin/settings/email.json index e9420e6743..322e56fa79 100644 --- a/public/language/pl/admin/settings/email.json +++ b/public/language/pl/admin/settings/email.json @@ -13,8 +13,8 @@ "smtp-transport-help": "Możesz wybrać z listy dobrze znanych usług lub wskazać usługę niestandardową.", "smtp-transport.service": "Wybierz usługę", "smtp-transport.service-custom": "Usługa niestandardowa", - "smtp-transport.service-help": "Select a service name above in order to use the known information about it. Alternatively, select "Custom Service" and enter the details below.", - "smtp-transport.gmail-warning1": "If you are using GMail as your email provider, you will have to generate an "App Password" in order for NodeBB to authenticate successfully. You can generate one at the App Passwords page.", + "smtp-transport.service-help": "Wybierz nazwę usługi aby wykorzystać wcześniej przygotowane ustawienia. Własne dane wprowadzisz wybierając "Inny serwer" i korzystając z pól poniżej.", + "smtp-transport.gmail-warning1": "O ile korzystasz z GMail jako dostawcy skrzynki e-mail będzie trzeba skorzystać z opcji "App Password" aby NodeBB uzyskało prawa dostępu. Wygenerujesz jedno z nich na stronie App Passwords .", "smtp-transport.gmail-warning2": "Aby uzyskać więcej informacji o tym obejściu, proszę zobaczyć ten artykuł NodeMailer. Alternatywą jest użyć zewnętrznej wtyczki do maili, jak SendGrid, Mailgun, itp. Przejrzyj dostępne wtyczki tutaj.", "smtp-transport.auto-enable-toast": "Wygląda na to, że konfigurujesz transport SMTP. Włączyliśmy dla Ciebie opcję \"Transport SMTP\".", "smtp-transport.host": "Host SMTP", @@ -45,7 +45,7 @@ "require-email-address-warning": "Domyślnie użytkownicy mogą odstąpić od podania adresu e-mail pozostawiając pole puste. Włączenie tej opcji powoduje, że nowi użytkownicy będą musieli podać i potwierdzić adres e-mail, aby przejść rejestrację i uzyskać dostęp do forum. Nie gwarantuje to, że użytkownik poda prawdziwy adres e-mail, albo adres, który należy do niego.", "send-validation-email": "Wyślij e-mail weryfikacyjny jeśli adres e-mail został dodany lub zmieniony", "include-unverified-emails": "Wysyłaj maile odbiorcom, którzy nie potwierdzili wprost swoich adresów", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "include-unverified-warning": "Zwykle adresy e=mail użytkowników są potwierdzone. Jednak zdarzają się odstępstępstwa jak np. logowania przez zewnętrzne SSO. Włącz tę funkcję na własną odpowiedzialność – pamiętając, że może to doprowadzić do naruszeń związanych z walką ze spamem.", "prompt": "Proś użytkowników by podawali i potwierdzali swoje adresy e-mail", "prompt-help": "Jeśli użytkownik nie ma ustawionego adresu e-mail, albo jego adres nie jest potwierdzony, na ekranie zostanie wyświetlone ostrzeżenie.", "sendEmailToBanned": "Wysyłaj maile także do zbanowanych użytkowników" diff --git a/public/language/pl/admin/settings/navigation.json b/public/language/pl/admin/settings/navigation.json index ddf4f640fc..0846e17dff 100644 --- a/public/language/pl/admin/settings/navigation.json +++ b/public/language/pl/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: opcjonalnie", "properties": "Ustawienia:", - "show-to-groups": "Show to Groups:", + "show-to-groups": "Pokaż grupom:", "open-new-window": "Otwórz w nowym oknie", "dropdown": "Lista rozwijana", "dropdown-placeholder": "Umieść pozycje menu rozwijanego poniżej, np.:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/pl/admin/settings/post.json b/public/language/pl/admin/settings/post.json index 28db3f1548..36bed5fb95 100644 --- a/public/language/pl/admin/settings/post.json +++ b/public/language/pl/admin/settings/post.json @@ -5,7 +5,7 @@ "sorting.oldest-to-newest": "Od najstarszych do najnowszych", "sorting.newest-to-oldest": "Od najnowszych do najstarszych", "sorting.recently-replied": "Najnowsze odpowiedzi", - "sorting.recently-created": "Najnowsze utworzone", + "sorting.recently-created": "Ostatnio utworzone", "sorting.most-votes": "Najwięcej głosów", "sorting.most-posts": "Najwięcej postów", "sorting.most-views": "Najwięcej wyświetleń", @@ -31,10 +31,10 @@ "timestamp.cut-off": "Termin odcięcia (w dniach)", "timestamp.cut-off-help": "Daty oraz godziny będą wyświetlane w sposób relatywny (np. \"3 godziny temu\" / \"5 dni temu\"), oraz przetłumaczone na różne\n\t\t\t\t\tjęzyki. Po określonym czasie, ten tekst może zostać zmieniony, aby wyświetlać sformatowane daty.\n\t\t\t\t\t(np. 4 Lut 2017 12:45).
(domyślnie: 30, lub jeden miesiąc). Ustaw 0, aby zawsze wyświetlać daty; pozostaw puste, aby korzystać z tylko z relatywnych opisów.", "timestamp.necro-threshold": "Próg nekro (w dniach)", - "timestamp.necro-threshold-help": "Komunikat zostanie wyświetlony między postami, jeśli czas między nimi jest dłuższy niż próg nekro. (Domyślnie: 7 lub jeden tydzień). Ustaw na 0, aby wyłączyć.", + "timestamp.necro-threshold-help": "Komunikat zostanie wyświetlony między postami, jeśli czas między nimi jest dłuższy niż próg nekro. (Domyślnie: 7 lub tydzień). Ustaw na 0, aby wyłączyć.", "timestamp.topic-views-interval": "Przestój w podnoszeniu liczby wyświetleń tematów (w minutach)", "timestamp.topic-views-interval-help": "Liczba wyświetleń tematów będzie podnosić się co najwyżej co każde X minut, jak zdefiniowano tutaj.", - "teaser": "Post-zwiastun", + "teaser": "Zajawka wpisu", "teaser.last-post": "Ostatni – Pokaż ostatni post, włączając pierwszy post, w razie braku odpowiedzi", "teaser.last-reply": "Ostatni – Pokaż ostatnią odpowiedź lub komunikat „Brak odpowiedzi” w razie ich braku", "teaser.first": "Pierwszy", @@ -56,7 +56,7 @@ "composer.enable-plugin-help": "Zezwalaj wtyczkom na dodawanie zawartości do zakładki pomocy", "composer.custom-help": "Własny tekst pomocy", "backlinks": "Odniesienia wstecz", - "backlinks.enabled": "Włącz odniesienia wstecz tematów", + "backlinks.enabled": "Włącz wzmianki o wątku", "backlinks.help": "Jeśli post odnosi się do innego tematu, odnośnik do tego posta zostanie umieszczony w temacie, do którego się odnosi i umiejscowiony w chwili napisania.", "ip-tracking": "Śledzenie IP", "ip-tracking.each-post": "Śledź adres IP dla każdego postu", diff --git a/public/language/pl/admin/settings/user.json b/public/language/pl/admin/settings/user.json index e60afca3e6..8a3e22336a 100644 --- a/public/language/pl/admin/settings/user.json +++ b/public/language/pl/admin/settings/user.json @@ -14,7 +14,7 @@ "allow-account-deletion": "Zezwalaj na usunięcie konta", "hide-fullname": "Ukrywaj pełne imię i nazwisko przed innymi użytkownikami", "hide-email": "Ukryj adresy e-mail użytkowników", - "show-fullname-as-displayname": "Pokazuj pełną nazwę użytkownika jako jego wyświetlana nazwa, jeśli dostępna", + "show-fullname-as-displayname": "Pokazuj imię i nazwisko w miejsce podpisu, o ile dostępne", "themes": "Style", "disable-user-skins": "Nie zezwalaj użytkownikom na wybranie niestandardowej skórki", "account-protection": "Ochrona konta", @@ -62,7 +62,7 @@ "user-search-results-per-page": "Liczba użytkowników wyświetlająca się w wynikach szukania", "default-user-settings": "Domyślne ustawienia użytkownika", "show-email": "Pokazuj adres e-mail", - "show-fullname": "Pokazuj pełną nazwę uzytkownika", + "show-fullname": "Pokazuj imię i nazwisko uzytkownika", "restrict-chat": "Przyjmuj wiadomości na czacie tylko od osób, które obserwuję", "outgoing-new-tab": "Otwieraj odnośniki wychodzące na nowej karcie", "topic-search": "Włącz wyszukiwanie wewnątrz tematów", diff --git a/public/language/pl/aria.json b/public/language/pl/aria.json index 89489d54e2..2f4597abbc 100644 --- a/public/language/pl/aria.json +++ b/public/language/pl/aria.json @@ -3,6 +3,6 @@ "topic-sort-option": "Opcja sortowania tematów, %1", "user-avatar-for": "Awatar dla %1", "user-watched-tags": "Tagi obserwowane przez użytkownika", - "delete-upload-button": "Delete upload button", - "group-page-link-for": "Group page link for %1" + "delete-upload-button": "Przycisk kasowania załącznika", + "group-page-link-for": "Odsyłacz dla grupy %1" } \ No newline at end of file diff --git a/public/language/pl/error.json b/public/language/pl/error.json index b93d57a421..5f4f596cbf 100644 --- a/public/language/pl/error.json +++ b/public/language/pl/error.json @@ -224,7 +224,7 @@ "invalid-plugin-id": "Niepoprawny identyfikator wtyczki", "plugin-not-whitelisted": "Nie da się zainstalować tej wtyczki – tylko wtyczki z białej listy menadżera pakietów NodeBB mogą być instalowane przez ACP", "plugins-set-in-configuration": "Nie możesz zmienić stanu wtyczki, bo został on zdefiniowany przy uruchamianiu (config.json, zmienne środowiskowe lub argumenty z terminala). Zamiast tego zmień konfigurację.", - "theme-not-set-in-configuration": "When defining active plugins in configuration, changing themes requires adding the new theme to the list of active plugins before updating it in the ACP", + "theme-not-set-in-configuration": "Pamiętaj o zależności między aktywnymi wtyczkami a wystrojem, który ma z nimi współpracować.", "topic-event-unrecognized": "Zdarzenie w temacie '%1' nierozpoznane", "cant-set-child-as-parent": "Nie można ustawić podkategorii jako kategorii nadrzędnej", "cant-set-self-as-parent": "Nie można ustawić kategorii nadrzędnej do samej siebie", diff --git a/public/language/pl/global.json b/public/language/pl/global.json index b92ccd2f88..48cedbc82d 100644 --- a/public/language/pl/global.json +++ b/public/language/pl/global.json @@ -1,5 +1,5 @@ { - "home": "Strona startowa", + "home": "Start", "search": "Szukaj", "buttons.close": "Zamknij", "403.title": "Dostęp zabroniony", @@ -32,7 +32,7 @@ "pagination.enter-index": "Skocz do postu", "pagination.go-to-page": "Skocz do strony", "pagination.page-x": "Strona %1", - "header.brand-logo": "Logo marki", + "header.brand-logo": "Logo forum", "header.admin": "Administracja", "header.categories": "Kategorie", "header.recent": "Ostatnie", @@ -80,7 +80,7 @@ "downvoters": "Głosujący przeciw", "downvoted": "Oddane głosy przeciw", "views": "Wyświetlenia", - "posters": "Plakaty", + "posters": "Uczestników", "reputation": "Reputacja", "lastpost": "Ostatni post", "firstpost": "Pierwszy post", @@ -98,7 +98,7 @@ "user-posted-ago": "%1 napisał %2", "guest-posted-ago": "Gość napisał %1", "last-edited-by": "ostatnio edytowany przez %1", - "edited-timestamp": "Edytowano %1", + "edited-timestamp": "Zmieniono %1", "norecentposts": "Brak ostatnich postów", "norecenttopics": "Brak ostatnich tematów", "recentposts": "Ostatnie posty", diff --git a/public/language/pl/modules.json b/public/language/pl/modules.json index 3b971f4157..06e1de129d 100644 --- a/public/language/pl/modules.json +++ b/public/language/pl/modules.json @@ -37,9 +37,9 @@ "chat.no-pinned-messages": "Nie ma przypiętych wiadomości", "chat.pin-message": "Przypnij wiadomość", "chat.unpin-message": "Odepnij wiadomość", - "chat.public-rooms": "Publiczne pokoje (%1)", + "chat.public-rooms": "Pokoje publiczne (%1)", "chat.private-rooms": "Prywatne pokoje (%1)", - "chat.create-room": "Stwórz pokój czatu", + "chat.create-room": "Nowy pokój", "chat.private.option": "Prywatny (widzialny tylko dla osób dodanych do pokoju)", "chat.public.option": "Publiczny (widzialny dla wszystkich użytkowników w wybranych grupach)", "chat.public.groups-help": "Aby założyć pokój czatu, który jest widzialny dla wszystkich użytkowników, wybierz zarejestrowanych użytkowników z listy grupy.", @@ -117,7 +117,7 @@ "bootbox.ok": "OK", "bootbox.cancel": "Anuluj", "bootbox.confirm": "Potwierdź", - "bootbox.submit": "Zatwierdź", + "bootbox.submit": "Wyślij", "bootbox.send": "Wyślij", "cover.dragging-title": "Pozycjonowanie tła", "cover.dragging-message": "Przeciągnij zdjęcie tła do wybranej pozycji i kliknij „Zapisz”", diff --git a/public/language/pl/notifications.json b/public/language/pl/notifications.json index 7b3b54f1da..093845b447 100644 --- a/public/language/pl/notifications.json +++ b/public/language/pl/notifications.json @@ -82,7 +82,7 @@ "notification-and-email": "Powiadomienie oraz e-mail", "notificationType-upvote": "Kiedy ktoś zagłosuje na Twój post", "notificationType-new-topic": "Kiedy ktoś, kogo obserwujesz, utworzy temat", - "notificationType-new-topic-with-tag": "Kiedy dodano temat z tagiem, który obserwujesz", + "notificationType-new-topic-with-tag": "Kiedy pojawi się temat z tagiem, który obserwujesz", "notificationType-new-topic-in-category": "Kiedy dodano temat w kategorii, którą obserwujesz", "notificationType-new-reply": "Kiedy ktoś doda nową odpowiedź w temacie, który obserwujesz", "notificationType-post-edit": "Kiedy post jest edytowany w temacie, który obserwujesz", diff --git a/public/language/pl/search.json b/public/language/pl/search.json index fb033eac7f..77a3dafda9 100644 --- a/public/language/pl/search.json +++ b/public/language/pl/search.json @@ -43,7 +43,7 @@ "older-than": "Starsze niż", "any-date": "Kiedykolwiek", "yesterday": "Wczoraj", - "one-week": "Jeden tydzień temu", + "one-week": "Tydzień temu", "two-weeks": "Dwa tygodnie temu", "one-month": "Jeden miesiąc temu", "three-months": "Trzy miesiące temu", diff --git a/public/language/pl/success.json b/public/language/pl/success.json index 48756bb7bc..7535eb38b7 100644 --- a/public/language/pl/success.json +++ b/public/language/pl/success.json @@ -1,6 +1,6 @@ { "success": "Udało się", - "topic-post": "Twój post został wysłany.", + "topic-post": "Dodałeś(aś) wpis.", "post-queued": "Twój post oczekuje w kolejce na zatwierdzenie. Otrzymasz powiadomienie o jego akceptacji lub odrzuceniu.", "authentication-successful": "Uwierzytelnienie powiodło się", "settings-saved": "Ustawienia zostały zapisane!" diff --git a/public/language/pl/tags.json b/public/language/pl/tags.json index defc37f4d4..777d3ff18f 100644 --- a/public/language/pl/tags.json +++ b/public/language/pl/tags.json @@ -7,9 +7,9 @@ "enter-tags-here-short": "Wpisz tagi...", "no-tags": "Jeszcze nie ma tagów.", "select-tags": "Wybierz tagi", - "tag-whitelist": "Tag Whitelist", - "watching": "Watching", - "not-watching": "Not Watching", + "tag-whitelist": "Dozwolone tagi", + "watching": "Obserwuj", + "not-watching": "Nie obserwujesz", "watching.description": "Powiadom mnie o nowych tematach.", "not-watching.description": "Nie powiadamiaj mnie o nowych tematach.", "following-tag.message": "Teraz będziesz otrzymywać powiadomienia, kiedy ktoś napisze w temacie z takim tagiem.", diff --git a/public/language/pl/themes/persona.json b/public/language/pl/themes/persona.json index 4225827f01..6d11ddd40a 100644 --- a/public/language/pl/themes/persona.json +++ b/public/language/pl/themes/persona.json @@ -2,7 +2,7 @@ "settings.title": "Ustawienia stylu", "settings.intro": "Możesz tu ustawić swój styl wyświetlania. Ustawienia są zachowywane osobno dla każdego urządzenia, więc możesz ustawić różne rzeczy na różnych urządzeniach (komputer, telefon, itd.)", "settings.mobile-menu-side": "Przełącz, po której stronie jest dane menu mobilne", - "settings.autoHidingNavbar": "Automatically hide the navbar on scroll", + "settings.autoHidingNavbar": "Ukryj pasek nawigacyjny przy przewijaniu", "settings.autoHidingNavbar-xs": "Malutkie ekrany (np. telefony trzymane pionowo)", "settings.autoHidingNavbar-sm": "Małe ekrany (np. telefony, tablety)", "settings.autoHidingNavbar-md": "Ekrany średniej wielkości (np. tablety trzymane poziomo)", diff --git a/public/language/pl/topic.json b/public/language/pl/topic.json index ada9ec6d01..9b1c79f6b5 100644 --- a/public/language/pl/topic.json +++ b/public/language/pl/topic.json @@ -42,10 +42,10 @@ "copy-ip": "Kopiuj IP", "ban-ip": "Blokuj IP", "view-history": "Historia edycji", - "wrote-ago": "napisał ", + "wrote-ago": "napisał(a) ", "wrote-on": "napisał ", - "replied-to-user-ago": "odpowiedział na %3 ", - "replied-to-user-on": "odpowiedział na %3 o ", + "replied-to-user-ago": "odpowiedział %3 ", + "replied-to-user-on": "odpowiedział %3 o ", "user-locked-topic-ago": "%1 zablokował ten temat %2", "user-locked-topic-on": "%1 zablokował ten temat dnia %2", "user-unlocked-topic-ago": "%1 odblokował ten temat %2", @@ -212,8 +212,8 @@ "post-quick-reply": "Szybka odpowiedź", "navigator.index": "Post %1 z %2", "navigator.unread": "%1 nieprzeczytanych", - "upvote-post": "Zagłosuj za postem", - "downvote-post": "Zagłosuj przeciw postowi", + "upvote-post": "Podoba się", + "downvote-post": "Nie podoba się", "post-tools": "Narzędzia postów", "unread-posts-link": "Link nieprzeczytanych postów", "thumb-image": "Obraz miniaturki tematu" diff --git a/public/language/pl/user.json b/public/language/pl/user.json index e44da78f4b..67d6c9092f 100644 --- a/public/language/pl/user.json +++ b/public/language/pl/user.json @@ -11,9 +11,9 @@ "confirm-email": "Potwierdź adres e-mail", "account-info": "Informacje o koncie", "admin-actions-label": "Działania administacyjne", - "ban-account": "Zbanuj konto", + "ban-account": "Zablokuj konto", "ban-account-confirm": "Na pewno chcesz zbanować tego użytkownika?", - "unban-account": "Odbanuj konto", + "unban-account": "Odblokuj konto", "mute-account": "Wycisz konto", "unmute-account": "Wyłącz wyciszenie konta", "delete-account": "Usuń konto", @@ -95,7 +95,7 @@ "avatar-background-colour": "Kolor tła awatara", "settings": "Ustawienia", "show-email": "Wyświetlaj mój adres e-mail", - "show-fullname": "Wyświetlaj moją pełną nazwę", + "show-fullname": "Pokaż imię i nazwisko", "restrict-chats": "Przyjmuj wiadomości na czacie tylko od osób, które obserwuję", "digest-label": "Przysyłaj okresowe podsumowanie wiadomości na forum", "digest-description": "Subskrybuj, aby otrzymywać maile dla tego forum (nowe powiadomienia i tematy) zgodnie z ustalonym harmonogramem", @@ -114,7 +114,7 @@ "has-no-upvoted-posts": "Ten użytkownik jeszcze nie głosował za w żadnym temacie.", "has-no-downvoted-posts": "Ten użytkownik jeszcze nie głosował przeciw w żadnym temacie.", "has-no-controversial-posts": "Ten użytkownik nie ma jeszcze żadnych postów z ujemną reputacją.", - "has-no-blocks": "Nie zablokowałeś jeszcze żadnych użytkowników.", + "has-no-blocks": "Brak zablokowanych użytkowników.", "email-hidden": "Adres e-mail ukryty", "hidden": "ukryty", "paginate-description": "Dziel tematy i posty na strony zamiast używać nieskończonego przewijania", @@ -123,7 +123,7 @@ "category-topic-sort": "Sortowanie tematów w kategoriach", "topic-post-sort": "Sortowanie postów w tematach", "max-items-per-page": "Maksymalnie %1", - "acp-language": "Język strony administratora", + "acp-language": "Język panelu administracyjnego", "notifications": "Powiadomienia", "upvote-notif-freq": "Częstotliwość informowania o pozytywnych głosach", "upvote-notif-freq.all": "Wszystkie głosy za", @@ -151,9 +151,9 @@ "default": "Domyślna (%1)", "no-skin": "Brak skórki", "select-homepage": "Wybierz stronę startową", - "homepage": "Strona startowa", + "homepage": "Strona główna", "homepage-description": "Wybierz preferowaną stronę startową lub „None”, jeśli chcesz używać strony domyślnej.", - "custom-route": "Niestandardowa strona startowa", + "custom-route": "Własna strona startowa", "custom-route-help": "Wprowadź ścieżkę bez poprzedzającego slasha (np: \"recent\" albo \"category/2/general-discussion\")", "sso.title": "Usługi pojedynczego logowania", "sso.associated": "Powiązane z", diff --git a/public/language/pl/users.json b/public/language/pl/users.json index 4aacaf9cda..768cf44112 100644 --- a/public/language/pl/users.json +++ b/public/language/pl/users.json @@ -2,7 +2,7 @@ "all-users": "Wszyscy użytkownicy", "latest-users": "Nowi użytkownicy", "top-posters": "Najwięcej postów", - "most-reputation": "Najlepsza reputacja", + "most-reputation": "Najwyższa reputacja", "most-flags": "Najwięcej flag", "search": "Szukaj", "enter-username": "Wpisz nazwę użytkownika", diff --git a/public/language/th/category.json b/public/language/th/category.json index e4afe62cbf..33eec3759a 100644 --- a/public/language/th/category.json +++ b/public/language/th/category.json @@ -3,7 +3,7 @@ "subcategories": "หมวดหมู่ย่อย", "new-topic-button": "ตั้งกระทู้", "guest-login-post": "เข้าสู่ระบบเพื่อโพสต์", - "no-topics": "ยังไม่มีกระทู้ในหมวดนี้
โพสต์กระทู้แรก?", + "no-topics": "ยังไม่มีกระทู้ในหมวดนี้
ลองโพสต์กระทู้แรกดูมั้ย?", "browsing": "เรียกดู", "no-replies": "ยังไม่มีใครตอบ", "no-new-posts": "ไม่มีกระทู้ใหม่", diff --git a/public/language/th/email.json b/public/language/th/email.json index 973ec3cdfa..6bfbfa20d1 100644 --- a/public/language/th/email.json +++ b/public/language/th/email.json @@ -1,17 +1,17 @@ { "test-email.subject": "อีเมลทดสอบ", - "password-reset-requested": "ขอรีเซ็ตรหัสผ่าน!", + "password-reset-requested": "ขอให้ตั้งรหัสผ่านใหม่แล้ว!", "welcome-to": "ยินดีต้อนรับสู่ %1", "invite": "คำเชิญจาก %1", "greeting-no-name": "สวัสดี", "greeting-with-name": "สวัสดี %1", "email.verify-your-email.subject": "โปรดยืนยันอีเมลของคุณ", "email.verify.text1": "คุณได้ร้องขอให้เราเปลี่ยนหรือยืนยันอีเมลของคุณ", - "email.verify.text2": "ด้วยเหตุผลของความปลอดภัย เราจะเปลี่ยนหรือยืนยันอีเมลที่เก็บไว้ก็ต่อเมื่อได้รับการยืนยันความเป็นเจ้าของด้วยอีเมล ถ้าคุณไม่ได้ร้องขอนี้ คุณไม่ต้องทำอะไร", + "email.verify.text2": "ด้วยเหตุผลของความปลอดภัย เราจะเปลี่ยนหรือยืนยันอีเมลที่เก็บไว้ก็ต่อเมื่อได้รับการยืนยันความเป็นเจ้าของผ่านทางอีเมล ถ้าคุณไม่ได้ร้องขอนี้ คุณไม่ต้องทำอะไร", "email.verify.text3": "ทันทีที่คุณยืนยันที่อยู่อีเมลนี้ เราจะเปลี่ยนอีเมลปัจจุบันของคุณเป็นอีเมลนี้แทน (%1)", "welcome.text1": "ขอบคุณที่ลงทะเบียนกับ %1", "welcome.text2": "เพื่อให้การบัญชีของคุณใช้งานได้อย่างเสร็จสมบูรณ์ เราจำเป็นต้องยืนยันว่าคุณเป็นเจ้าของที่แท้จริงของอีเมล์ที่ใช้สมัครสมาชิก", - "welcome.text3": "ผู้ดูแลระบบได้ทำการยอมรับการสมัครสมาชิกของคุณแล้ว คุณสามารถเข้าสู่ระบบด้วย ชื่อผู้ใช้/รหัสผ่าน ได้แล้วตอนนี้", + "welcome.text3": "ผู้ดูแลระบบยอมรับการสมัครสมาชิกของคุณแล้ว คุณสามารถเข้าสู่ระบบด้วย ชื่อผู้ใช้/รหัสผ่าน ได้แล้วตอนนี้", "welcome.cta": "กดตรงนี้เพื่อยืนยันอีเมลของคุณ", "invitation.text1": "%1 ได้เชิญคุณให้เข้าร่วม %2", "invitation.text2": "คำเชิญของคุณจะหมดอายุใน %1 วัน", @@ -19,7 +19,7 @@ "reset.text1": "เราได้รับคำร้องให้ตั้งค่ารหัสผ่านใหม่ของคุณ อาจจะเป็นเพราะว่าคุณลืมรหัสผ่านและได้ทำการส่งคำขอเข้ามา หากไม่ใช่ กรุณาเพิกเฉยต่ออีเมล์นี้และไม่ต้องดำเนินการใดๆทั้งสิ้น", "reset.text2": "เพื่อดำเนินการตั้งรหัสผ่านใหม่ต่อไป, โปรดกดที่ลิ้งค์นี้:", "reset.cta": "กดตรงนี้เพื่อตั้งรหัสผ่านใหม่", - "reset.notify.subject": "ตั้งค่ารหัสผ่านใหม่เรียบร้อยแล้ว", + "reset.notify.subject": "รหัสผ่านได้เปลี่ยนเรียบร้อยแล้ว", "reset.notify.text1": "เรากำลังแจ้งคุณว่าตอน %1 รหัสผ่านของคุณถูกเปลี่ยนเรียบร้อยแล้ว", "reset.notify.text2": "หากคุณไม่ได้เป็นคนอนุญาตสิ่งนี้ กรุณาแจ้งไปยังผู้ดูแลระบบโดยทันที", "digest.unread-rooms": "ห้องที่ยังไม่ได้อ่าน", @@ -52,10 +52,10 @@ "unsubscribe": "ยกเลิกการติดตาม", "unsub.success": "คุณจะไม่ได้รับอีเมลจากกลุ่มอีเมล %1", "unsub.failure.title": "ไม่สามารถยกเลิกการติดตามได้", - "unsub.failure.message": "โชคไม่ดี เราไม่สามารถยกเลิกคุณจากกลุ่มอีเมล เนื่องจากปัญหาของลิงก์ แต่คุณสามารถเปลี่ยนการตั้งค่าอีเมลโดยไปที่ ตั้งค่า ของคุณ.

(ข้อผิดพลาด: %1)", + "unsub.failure.message": "เราไม่สามารถยกเลิกการเป็นสมาชิกกลุ่มอีเมลของคุณเนื่องจากลิงก์มีปัญหา แต่คุณสามารถเปลี่ยนการตั้งค่าอีเมลโดยไปที่ ตั้งค่า ของคุณ.

(ข้อผิดพลาด: %1)", "banned.subject": "คุณถูกแบนจาก %1 แล้ว", "banned.text1": "ผู้ใช้ %1 ได้ถูกแบนจาก %2", - "banned.text2": "การแบนนี้จะใช้เวลาจนถึง %1", + "banned.text2": "การแบนนี้มีผลจนถึง %1", "banned.text3": "นี่คือเหตุผลที่ทำไมคุณถึงถูกแบน", "closing": "ขอบคุณ!" } \ No newline at end of file diff --git a/public/language/th/error.json b/public/language/th/error.json index f1acf5b181..31fe9db1a4 100644 --- a/public/language/th/error.json +++ b/public/language/th/error.json @@ -3,58 +3,58 @@ "invalid-json": "รูปแบบ JSON ไม่ถูกต้อง", "wrong-parameter-type": "ต้องการข้อมูลประเภท %3 สำหรับค่า `%1` แต่ได้รับค่า %2 แทน", "required-parameters-missing": "ขาดพารามิเตอร์ที่จำเป็นต่อการเรียก API นี้: %1", - "not-logged-in": "คุณยังไม่ได้ลงชื่อเข้าระบบ", + "not-logged-in": "คุณยังไม่ได้เข้าสู่ระบบ", "account-locked": "บัญชีของคุณถูกระงับการใช้งานชั่วคราว", "search-requires-login": "\"ฟังก์ชั่นการค้นหา\" ต้องการบัญชีผู้ใช้ กรุณาเข้าสู่ระบบหรือสมัครสมาชิก", "goback": "กดย้อนกลับเพื่อกลับไปยังหน้าที่แล้ว", "invalid-cid": "รหัสหมวดหมู่ไม่ถูกต้อง", "invalid-tid": "รหัสกระทู้ไม่ถูกต้อง", "invalid-pid": "รหัสโพสต์ไม่ถูกต้อง", - "invalid-uid": "ผู้ใช้งานไม่ถูกต้อง", + "invalid-uid": "รหัสผู้ใช้งานไม่ถูกต้อง", "invalid-mid": "รหัสข้อความแชทไม่ถูกต้อง", - "invalid-date": "จำเป็นต้องมีวันที่ที่ถูกต้อง", + "invalid-date": "ต้องใส่วันที่ที่ถูกต้อง", "invalid-username": "ชื่อผู้ใช้ไม่ถูกต้อง", "invalid-email": "อีเมลไม่ถูกต้อง", "invalid-fullname": "ชื่อเต็มไม่ถูกต้อง", - "invalid-location": "ตำแหน่งไม่ถูกต้อง", + "invalid-location": "สถานที่ไม่ถูกต้อง", "invalid-birthday": "วันเกิดไม่ถูกต้อง", "invalid-title": "คำนำหน้าชื่อไม่ถูกต้อง", - "invalid-user-data": "User Data ไม่ถูกต้อง", + "invalid-user-data": "ข้อมูลผู้ใช้งานไม่ถูกต้อง", "invalid-password": "รหัสผ่านไม่ถูกต้อง", "invalid-login-credentials": "session login หมดอายุ", "invalid-username-or-password": "กรุณาระบุชื่อผู้ใช้และรหัสผ่าน", "invalid-search-term": "ข้อความค้นหาไม่ถูกต้อง", "invalid-url": "URL ไม่ถูกต้อง", "invalid-event": "อีเว้นต์ไม่ถูกต้องt: %1", - "local-login-disabled": "ระบบล็อกอินแบบโลคอลไม่เปิดสำหรับบัญชีธรรมดา", - "csrf-invalid": "เราไม่สามารถนำท่านเข้าสู่ระบบได้ เหมือนกับว่าเซสชั่นหมดอายุแล้ว กรุณาลองใหม่อีกครั้ง", + "local-login-disabled": "การเข้าสู่ระบบแบบโลคอลไม่เปิดสำหรับบัญชีธรรมดา", + "csrf-invalid": "เราไม่สามารถนำท่านเข้าสู่ระบบได้ น่าจะเพราะเซสชั่นหมดอายุแล้ว กรุณาลองใหม่อีกครั้ง", "invalid-path": "พาทไม่ถูกต้อง", "folder-exists": "มีโฟลเดอร์อยู่แล้ว", - "invalid-pagination-value": "หมายเลขหน้าไม่ถูกต้อง จำเป็นต้องเป็นตัวเลขอย่างน้อย %1 และอย่างมาก %2", - "username-taken": "ชื่อผู้ใช้นี้มีการใช้แล้ว", + "invalid-pagination-value": "ค่าสำหรับการแบ่งหน้าไม่ถูกต้อง จำเป็นต้องเป็นตัวเลขอย่างน้อย %1 และอย่างมาก %2", + "username-taken": "ชื่อผู้ใช้นี้ถูกใช้ไปแล้ว", "email-taken": "ที่อยู่อีเมลถูกใช้ไปแล้ว", - "email-nochange": "อีเมลที่ใส่เหมือนกับอีเมลที่จัดเก็บไว้แล้ว", + "email-nochange": "อีเมลที่ป้อนเข้ามาซ้ำกับอีเมลที่จัดเก็บไว้อยู่แล้ว", "email-invited": "อีเมลถูกเชิญอยู่ก่อนแล้ว", - "email-not-confirmed": "จะเปิดโพสต์ในหมวดหมู่หรือกระทู้ทันทีที่อีเมลได้รับการยืนยัน โปรดคลิกที่นี่เพื่อส่งอีเมลยืนยัน", - "email-not-confirmed-chat": "คุณไม่สามารถแชทได้จนกว่าอีเมล์ของคุณจะได้รับการยืนยัน กรุณาคลิกที่นี่เพื่อยืนยันอีกมเมล์ของคุณ", - "email-not-confirmed-email-sent": "อีเมลของคุณยังไม่ได้รับการยืนยัน โปรดตรวจสอบกล่องอินบ็อกของคุณสำหรับอีเมลยืนยัน คุณยังไม่สามารถโพสต์ลงในบางหมวดหมู่หรือแชทได้จนกว่าอีเมลของคุณจะได้รับการยืนยัน", + "email-not-confirmed": "การโพสต์ลงบางหมวดหมู่หรือกระทู้จะทำได้เมื่ออีเมลได้รับการยืนยัน โปรดคลิกที่นี่เพื่อส่งอีเมลยืนยัน", + "email-not-confirmed-chat": "คุณไม่สามารถแชทได้จนกว่าอีเมล์ของคุณได้รับการยืนยัน กรุณาคลิกที่นี่เพื่อยืนยันอีกมเมล์ของคุณ", + "email-not-confirmed-email-sent": "อีเมลของคุณยังไม่ได้รับการยืนยัน โปรดตรวจสอบกล่องอินบ็อกซ์ของคุณสำหรับอีเมลยืนยัน คุณอาจไม่สามารถแชทหรือโพสต์ลงในบางหมวดหมู่จนกว่าอีเมลของคุณจะได้รับการยืนยัน", "no-email-to-confirm": "บัญชีของคุณยังไม่ได้ตั้งค่าอีเมล อีเมลจำเป็นสำหรับการกู้บัญชี และอาจจำเป็นสำหรับการแชทและโพสต์ลงบางหมวดหมู่ โปรดคลิกที่นี่เพื่อใส่ค่าอีเมล", "user-doesnt-have-email": "ผู้ใช้ \"%1\" ยังไม่ได้ตั้งค่าอีเมล", "email-confirm-failed": "เราไม่สามารถยืนยันอีเมลของคุณ ณ ขณะนี้ กรุณาลองใหม่อีกครั้งภายหลัง", - "confirm-email-already-sent": "อีเมล์ยืนยันตัวตนถูกส่งไปยังคุณเรียบร้อยแล้ว กรุณารอ %1 นาที(s) ก่อนการตัดสินใจส่งอีกครั้ง", + "confirm-email-already-sent": "อีเมลยืนยันตัวตนถูกส่งไปให้คุณเรียบร้อยแล้ว กรุณารอ %1 นาที ก่อนที่จะส่งอีกครั้ง", "confirm-email-expired": "อีเมลยืนยันหมดอายุแล้ว", - "sendmail-not-found": "ไม่พบการประมวลผลสำหรับการส่งอีเมล์ กรุณาตรวจสอบให้แน่ใจว่าได้มีการติดตั้งโปรแกรมการประมวลผลแล้วโดยผู้ใช้ที่กำลังใช้ NodeBB", + "sendmail-not-found": "ไม่พบโปรแกรมส่งอีเมล์ กรุณาตรวจสอบว่าติดตั้งโปรแกรมนี้แล้ว และสามารถเรียกใช้ได้โดยผู้ใช้ที่รัน NodeBB", "digest-not-enabled": "ผู้ใช้รายนี้ไม่ได้เปิดใช้ สรุปเนื้อหา หรือระบบไม่ได้ตั้งค่าให้ส่งสรุปเนื้อหา", "username-too-short": "ชื่อบัญชีผู้ใช้ สั้นเกินไป", "username-too-long": "ชื่อบัญชีผู้ใช้ ยาวเกินไป", "password-too-long": "รหัสผ่านยาวเกินไป", - "reset-rate-limited": "มีคำขอให้รีเซ็ตรหัสผ่านมากเกินไป (เกินขีดจำกัด)", + "reset-rate-limited": "มีคำขอให้เปลี่ยนรหัสผ่านมากเกินไป (ถึงขีดจำกัด)", "reset-same-password": "โปรดใช้รหัสผ่านที่แตกต่างจากรหัสปัจจุบัน", - "user-banned": "ผู้ใช้ได้รับการแบน", - "user-banned-reason": "ขออภัย บัญชีผู้ใช้นี้ได้รับการแบน (เหตุผล : %1)", - "user-banned-reason-until": "ขออภัย บัญชีผู้ใช้นี้ได้รับการแบนจนถึง %1 (เหตุผล : %2)", - "user-too-new": "ขออภัย คุณจำเป็นต้องรอ %1 วินาที(s) ก่อนการสร้างกระทู้แรกของคุณ", - "blacklisted-ip": "ขออภัย IP Address ของคุณถูกแบนจากชุมชนนี้ หากคุณคิดว่านี่เป็นเออเร่อของระบบ กรุณาติดต่อผู้ดูแลระบบ", + "user-banned": "ผู้ใช้โดนแบน", + "user-banned-reason": "ขออภัย บัญชีผู้ใช้นี้ถูกแบนแล้ว (เหตุผล: %1)", + "user-banned-reason-until": "ขออภัย บัญชีผู้ใช้นี้ถูกแบนถึง %1 (เหตุผล: %2)", + "user-too-new": "ขออภัย คุณต้องรออีก %1 วินาที ก่อนการสร้างโพสต์แรกของคุณ", + "blacklisted-ip": "ขออภัย IP Address ของคุณถูกแบนจากชุมชนนี้ หากคุณคิดว่านี่เป็นข้อผิดพลาด กรุณาติดต่อผู้ดูแลระบบ", "cant-blacklist-self-ip": "คุณไม่สามารถแบล็กลิสต์ IP ของคุณเองได้", "ban-expiry-missing": "กรุณาระบุวันสิ้นสุดสำหรับการแบนในครั้งนี้", "no-category": "ยังไม่มีหมวดหมู่นี้", @@ -68,13 +68,13 @@ "no-privileges": "คุณมีสิทธิ์ไม่เพียงพอที่จะทำรายการนี้", "category-disabled": "หมวดหมู่นี้ถูกปิดการใช้งานแล้ว", "topic-locked": "กระทู้ถูกล็อก", - "post-edit-duration-expired": "คุณได้รับอนุญาตให้แก้ไขโพสต์ได้หลังจากโพสต์ไปแล้ว %1  วินาที (s)", - "post-edit-duration-expired-minutes": "คุณได้รับการอนุญาตให้แก้ไขโพสต์ได้หลังจากโพสต์ไปแล้ว %1 นาที (s)", - "post-edit-duration-expired-minutes-seconds": "คุณได้รับการอนุญาตให้แก้ไขโพสต์ได้หลังจากโพสต์ไปแล้ว %1 นาที(s) %2 วินาที(s)", - "post-edit-duration-expired-hours": "คุณได้รับการอนุญาตให้แก้ไขโพสต์ได้หลังจากโพสต์ไปแล้ว %1 ชั่วโมง(s)", - "post-edit-duration-expired-hours-minutes": "คุณได้รับการอนุญาตให้แก้ไขโพสต์ได้หลังจากโพสต์ไปแล้ว %1 ชั่วโมง(s) %2 นาที(s)", - "post-edit-duration-expired-days": "คุณได้รับการอนุญาตให้แก้ไขโพสต์ได้หลังจากโพสต์ไปแล้ว %1 วัน(s)", - "post-edit-duration-expired-days-hours": "คุณได้รับการอนุญาตให้แก้ไขโพสต์ได้หลังจากโพสต์ไปแล้ว %1 วัน(s) %2 ชั่วโมง(s)", + "post-edit-duration-expired": "คุณได้รับอนุญาตให้แก้ไขโพสต์ได้หลังจากโพสต์ไปแล้วไม่เกิน %1 วินาที", + "post-edit-duration-expired-minutes": "คุณได้รับการอนุญาตให้แก้ไขโพสต์ได้หลังจากโพสต์ไปแล้วไม่เกิน %1 นาที", + "post-edit-duration-expired-minutes-seconds": "คุณได้รับการอนุญาตให้แก้ไขโพสต์ได้หลังจากโพสต์ไปแล้วไม่เกิน %1 นาที %2 วินาที", + "post-edit-duration-expired-hours": "คุณได้รับการอนุญาตให้แก้ไขโพสต์ได้หลังจากโพสต์ไปแล้วไม่เกิน %1 ชั่วโมง", + "post-edit-duration-expired-hours-minutes": "คุณได้รับการอนุญาตให้แก้ไขโพสต์ได้หลังจากโพสต์ไปแล้วไม่เกิน %1 ชั่วโมง %2 นาที", + "post-edit-duration-expired-days": "คุณได้รับการอนุญาตให้แก้ไขโพสต์ได้หลังจากโพสต์ไปแล้วไม่เกิน %1 วัน", + "post-edit-duration-expired-days-hours": "คุณได้รับการอนุญาตให้แก้ไขโพสต์ได้หลังจากโพสต์ไปแล้วไม่เกิน %1 วัน %2 ชั่วโมง", "post-delete-duration-expired": "คุณได้รับการอนุญาตให้ลบโพสต์ได้หลังจากโพสต์ไปแล้ว %1 วินาที(s)", "post-delete-duration-expired-minutes": "คุณได้รับการอนุญาตให้ลบโพสต์ได้หลังจากโพสต์ไปแล้ว %1 นาที(s)", "post-delete-duration-expired-minutes-seconds": "คุณได้รับการอนุญาตให้ลบโพสต์ได้หลังจากโพสต์ไปแล้ว %1 นาที(s) %2 วินาที(s)", diff --git a/public/language/th/flags.json b/public/language/th/flags.json index 3be13bb37d..ee734f96b8 100644 --- a/public/language/th/flags.json +++ b/public/language/th/flags.json @@ -8,7 +8,7 @@ "assignee": "ผู้ได้รับมอบหมาย", "update": "อัพเดท", "updated": "อัพเดทแล้ว", - "resolved": "แก้ไขแล้ว", + "resolved": "แก้ปัญหาแล้ว", "report-added": "ถูกเพิ่มแล้ว", "report-rescinded": "ยกเลิกแล้ว", "target-purged": "เนื้อหาที่ถูกรายงาน ถูกลบออกและไม่มีอยู่ในระบบอีกต่อไป", @@ -88,7 +88,7 @@ "modal-submit-success": "เนื้อหาถูกรายงานตามเพื่อรอตรวจสอบแล้ว", "bulk-actions": "จัดการทีละมากๆ", - "bulk-resolve": "จัดการรายงาน", + "bulk-resolve": "แก้ปัญหารายงาน", "bulk-success": "รายงาน %1 อันถูกอัพเดท", "flagged-timeago-readable": "ถูกรายงานเมื่อ (%2)", "auto-flagged": "[รายงานอัตโนมัติ] ถูกโหวดลง %1 ครั้ง" From fe028e0ad2499b5bfc8203a6fd1c71cfe7aeabdb Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Mon, 15 Apr 2024 09:19:08 +0000 Subject: [PATCH 086/168] Latest translations and fallbacks --- public/language/he/admin/advanced/events.json | 4 +-- public/language/he/admin/manage/users.json | 30 +++++++++---------- .../he/admin/settings/navigation.json | 2 +- public/language/he/aria.json | 2 +- public/language/he/login.json | 2 +- public/language/he/user.json | 4 +-- 6 files changed, 22 insertions(+), 22 deletions(-) diff --git a/public/language/he/admin/advanced/events.json b/public/language/he/admin/advanced/events.json index 1daa86a765..1a3952d62e 100644 --- a/public/language/he/admin/advanced/events.json +++ b/public/language/he/admin/advanced/events.json @@ -9,9 +9,9 @@ "filter-type": "סוג אירוע", "filter-start": "מתאריך", "filter-end": "עד תאריך", - "filter-user": "Filter by User", + "filter-user": "סינון לפי משתמש", "filter-user.placeholder": "Type user name to filter...", - "filter-group": "Filter by Group", + "filter-group": "סינון לפי קבוצה", "filter-group.placeholder": "Type group name to filter...", "filter-per-page": "פריטים בכל דף" } \ No newline at end of file diff --git a/public/language/he/admin/manage/users.json b/public/language/he/admin/manage/users.json index cdf78a5355..6a5d728f22 100644 --- a/public/language/he/admin/manage/users.json +++ b/public/language/he/admin/manage/users.json @@ -121,27 +121,27 @@ "alerts.email-sent-to": "מייל הזמנה נשלח ל-%1", "alerts.x-users-found": "%1 משתמש(ים) נמצאו, (%2 שניות)", "alerts.select-a-single-user-to-change-email": "בחר משתמש בודד כדי לשנות את האימייל", - "export": "Export", + "export": "ייצוא", "export-users-fields-title": "Select CSV Fields", - "export-field-email": "Email", - "export-field-username": "Username", - "export-field-uid": "UID", + "export-field-email": "דוא\"ל", + "export-field-username": "שם משתמש", + "export-field-uid": "מזהה משתמש", "export-field-ip": "IP", - "export-field-joindate": "Join date", - "export-field-lastonline": "Last Online", + "export-field-joindate": "תאריך הצטרפות", + "export-field-lastonline": "נראה לאחרונה", "export-field-lastposttime": "Last Post Time", - "export-field-reputation": "Reputation", - "export-field-postcount": "Post Count", - "export-field-topiccount": "Topic Count", + "export-field-reputation": "מוניטין", + "export-field-postcount": "כמות פוסטים", + "export-field-topiccount": "כמות נושאים", "export-field-profileviews": "Profile Views", "export-field-followercount": "Follower Count", "export-field-followingcount": "Following Count", - "export-field-fullname": "Full Name", - "export-field-website": "Website", - "export-field-location": "Location", - "export-field-birthday": "Birthday", - "export-field-signature": "Signature", - "export-field-aboutme": "About Me", + "export-field-fullname": "שם מלא", + "export-field-website": "אתר אינטרנט", + "export-field-location": "מיקום", + "export-field-birthday": "יום הולדת", + "export-field-signature": "חתימה", + "export-field-aboutme": "אודותיי", "export-users-started": "מייצא משתמשים כ-csv, הדבר עשוי להימשך זמן מה. תקבל הודעה עם השלמתה.", "export-users-completed": "משתמשים יוצאו כ-csv, לחץ כאן להורדה.", diff --git a/public/language/he/admin/settings/navigation.json b/public/language/he/admin/settings/navigation.json index 8d1a287a70..9824b5390b 100644 --- a/public/language/he/admin/settings/navigation.json +++ b/public/language/he/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "id: אופציונאלי", "properties": "הרשאות:", - "show-to-groups": "Show to Groups:", + "show-to-groups": "הצג לקבוצות:", "open-new-window": "ייפתח בכרטיסייה חדשה", "dropdown": "תפריט נפתח", "dropdown-placeholder": "מקמו את פריטי התפריט הנפתח , באופן הבא:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/he/aria.json b/public/language/he/aria.json index 3dab117f49..de8d151708 100644 --- a/public/language/he/aria.json +++ b/public/language/he/aria.json @@ -3,6 +3,6 @@ "topic-sort-option": "אפשרות מיון נושאים, %1", "user-avatar-for": "סמליל משתמש עבור %1", "user-watched-tags": "User watched tags", - "delete-upload-button": "Delete upload button", + "delete-upload-button": "כפתור מחיקת העלאה", "group-page-link-for": "Group page link for %1" } \ No newline at end of file diff --git a/public/language/he/login.json b/public/language/he/login.json index 8ce6aa9e4c..69ab89cb01 100644 --- a/public/language/he/login.json +++ b/public/language/he/login.json @@ -7,6 +7,6 @@ "failed-login-attempt": "ההתחברות נכשלה", "login-successful": "התחברת בהצלחה!", "dont-have-account": "אין לך חשבון עדיין?", - "logged-out-due-to-inactivity": "התנתקת מפאנל האדמין בגלל חוסר אקטיביות", + "logged-out-due-to-inactivity": "התנתקת מפאנל הניהול בעקבות חוסר פעילות", "caps-lock-enabled": "Caps Lock מופעל" } \ No newline at end of file diff --git a/public/language/he/user.json b/public/language/he/user.json index 5c68e75b70..f73592219a 100644 --- a/public/language/he/user.json +++ b/public/language/he/user.json @@ -142,8 +142,8 @@ "follow-topics-you-create": "עקוב אחר נושאים שייצרת", "grouptitle": "כותרת הקבוצה", "group-order-help": "בחר קבוצה והשתמש בחצים על מנת לארגן כותרות", - "show-group-title": "Show group title", - "hide-group-title": "Hide group title", + "show-group-title": "הצג כותרת קבוצה", + "hide-group-title": "הסתר כותרת קבוצה", "order-group-up": "Order group up", "order-group-down": "Order group down", "no-group-title": "ללא כותרת לקבוצה", From f5c3d4e1cf555874536d6fd546f894fcd9bea011 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 15 Apr 2024 12:11:15 -0400 Subject: [PATCH 087/168] fix(deps): update dependency sass to v1.75.0 (#12500) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 00a448b764..ac200a20da 100644 --- a/install/package.json +++ b/install/package.json @@ -124,7 +124,7 @@ "rss": "1.2.2", "rtlcss": "4.1.1", "sanitize-html": "2.13.0", - "sass": "1.74.1", + "sass": "1.75.0", "semver": "7.6.0", "serve-favicon": "2.5.0", "sharp": "0.32.6", From a2229e71540b0c30b6267f1f0bc570eec2df7842 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 15 Apr 2024 12:11:23 -0400 Subject: [PATCH 088/168] chore(deps): update dependency sass-embedded to v1.75.0 (#12499) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index ac200a20da..6670d892b0 100644 --- a/install/package.json +++ b/install/package.json @@ -172,7 +172,7 @@ "smtp-server": "3.13.3" }, "optionalDependencies": { - "sass-embedded": "1.74.1" + "sass-embedded": "1.75.0" }, "resolutions": { "*/jquery": "3.7.1" From 83a932e656506004a1872b1457fc09d3677d5f36 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 15 Apr 2024 12:11:40 -0400 Subject: [PATCH 089/168] fix(deps): update dependency ace-builds to v1.33.0 (#12501) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 6670d892b0..690fb829fe 100644 --- a/install/package.json +++ b/install/package.json @@ -34,7 +34,7 @@ "@fortawesome/fontawesome-free": "6.5.2", "@isaacs/ttlcache": "1.4.1", "@popperjs/core": "2.11.8", - "ace-builds": "1.32.9", + "ace-builds": "1.33.0", "archiver": "7.0.1", "async": "3.2.5", "autoprefixer": "10.4.19", From 37bdf7539180c3bf6476163f6a149c1a43efc701 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 15 Apr 2024 12:11:50 -0400 Subject: [PATCH 090/168] fix(deps): update dependency nodebb-plugin-mentions to v4.5.2 (#12470) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 690fb829fe..87d536587e 100644 --- a/install/package.json +++ b/install/package.json @@ -99,7 +99,7 @@ "nodebb-plugin-emoji": "5.1.13", "nodebb-plugin-emoji-android": "4.0.0", "nodebb-plugin-markdown": "12.2.6", - "nodebb-plugin-mentions": "4.4.3", + "nodebb-plugin-mentions": "4.5.2", "nodebb-plugin-ntfy": "1.7.4", "nodebb-plugin-spam-be-gone": "2.2.1", "nodebb-rewards-essentials": "1.0.0", From c4cb9d36cab19e463c97249643a435410b04b56f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 15 Apr 2024 12:11:58 -0400 Subject: [PATCH 091/168] fix(deps): update dependency nodebb-theme-harmony to v1.2.49 (#12497) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 87d536587e..86cfb06dee 100644 --- a/install/package.json +++ b/install/package.json @@ -103,7 +103,7 @@ "nodebb-plugin-ntfy": "1.7.4", "nodebb-plugin-spam-be-gone": "2.2.1", "nodebb-rewards-essentials": "1.0.0", - "nodebb-theme-harmony": "1.2.48", + "nodebb-theme-harmony": "1.2.49", "nodebb-theme-lavender": "7.1.8", "nodebb-theme-peace": "2.2.4", "nodebb-theme-persona": "13.3.14", From 4c468b5c70fd8e27d28f03ef8fcaa918d85bbd6c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 15 Apr 2024 14:10:39 -0400 Subject: [PATCH 092/168] chore(deps): update dependency smtp-server to v3.13.4 (#12516) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 86cfb06dee..0d1ed814f3 100644 --- a/install/package.json +++ b/install/package.json @@ -169,7 +169,7 @@ "mocha-lcov-reporter": "1.3.0", "mockdate": "3.0.5", "nyc": "15.1.0", - "smtp-server": "3.13.3" + "smtp-server": "3.13.4" }, "optionalDependencies": { "sass-embedded": "1.75.0" From 97519ca40dfe6c70cf732d8ffd08d44965d12103 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 15 Apr 2024 14:11:02 -0400 Subject: [PATCH 093/168] chore(deps): update commitlint monorepo to v19.2.2 (#12515) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install/package.json b/install/package.json index 0d1ed814f3..1f78e0038f 100644 --- a/install/package.json +++ b/install/package.json @@ -154,8 +154,8 @@ }, "devDependencies": { "@apidevtools/swagger-parser": "10.1.0", - "@commitlint/cli": "19.2.1", - "@commitlint/config-angular": "19.1.0", + "@commitlint/cli": "19.2.2", + "@commitlint/config-angular": "19.2.2", "coveralls": "3.1.1", "eslint": "8.57.0", "eslint-config-nodebb": "0.2.1", From 20f8ba78ad12bf33f348f7d82a7d7bc31a268317 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 15 Apr 2024 14:12:42 -0400 Subject: [PATCH 094/168] fix(deps): update dependency nodebb-plugin-emoji to v5.1.15 (#12517) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 1f78e0038f..8387fcded7 100644 --- a/install/package.json +++ b/install/package.json @@ -96,7 +96,7 @@ "nodebb-plugin-2factor": "7.5.0", "nodebb-plugin-composer-default": "10.2.33", "nodebb-plugin-dbsearch": "6.2.3", - "nodebb-plugin-emoji": "5.1.13", + "nodebb-plugin-emoji": "5.1.15", "nodebb-plugin-emoji-android": "4.0.0", "nodebb-plugin-markdown": "12.2.6", "nodebb-plugin-mentions": "4.5.2", From 5b4471bf8b324040e7a006c631f866133fc79ab8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 15 Apr 2024 14:13:02 -0400 Subject: [PATCH 095/168] fix(deps): update dependency nodebb-plugin-spam-be-gone to v2.2.2 (#12518) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 8387fcded7..d2cdb2026f 100644 --- a/install/package.json +++ b/install/package.json @@ -101,7 +101,7 @@ "nodebb-plugin-markdown": "12.2.6", "nodebb-plugin-mentions": "4.5.2", "nodebb-plugin-ntfy": "1.7.4", - "nodebb-plugin-spam-be-gone": "2.2.1", + "nodebb-plugin-spam-be-gone": "2.2.2", "nodebb-rewards-essentials": "1.0.0", "nodebb-theme-harmony": "1.2.49", "nodebb-theme-lavender": "7.1.8", From 0f97e16eb504dce930ac16779906088c1152b15c Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Wed, 17 Apr 2024 09:19:08 +0000 Subject: [PATCH 096/168] Latest translations and fallbacks --- public/language/ar/top.json | 4 +- public/language/th/error.json | 90 +++++++++--------- public/language/th/global.json | 32 +++---- public/language/th/groups.json | 20 ++-- public/language/th/modules.json | 158 ++++++++++++++++---------------- public/language/th/user.json | 6 +- 6 files changed, 155 insertions(+), 155 deletions(-) diff --git a/public/language/ar/top.json b/public/language/ar/top.json index 6e1e05674e..ea4ad644c1 100644 --- a/public/language/ar/top.json +++ b/public/language/ar/top.json @@ -1,4 +1,4 @@ { - "title": "Top", - "no-top-topics": "No top topics" + "title": "أعلى الصفحة", + "no-top-topics": "لا توجد مواضيع أعلى الصفحة" } \ No newline at end of file diff --git a/public/language/th/error.json b/public/language/th/error.json index 31fe9db1a4..2ac397f63f 100644 --- a/public/language/th/error.json +++ b/public/language/th/error.json @@ -68,20 +68,20 @@ "no-privileges": "คุณมีสิทธิ์ไม่เพียงพอที่จะทำรายการนี้", "category-disabled": "หมวดหมู่นี้ถูกปิดการใช้งานแล้ว", "topic-locked": "กระทู้ถูกล็อก", - "post-edit-duration-expired": "คุณได้รับอนุญาตให้แก้ไขโพสต์ได้หลังจากโพสต์ไปแล้วไม่เกิน %1 วินาที", - "post-edit-duration-expired-minutes": "คุณได้รับการอนุญาตให้แก้ไขโพสต์ได้หลังจากโพสต์ไปแล้วไม่เกิน %1 นาที", - "post-edit-duration-expired-minutes-seconds": "คุณได้รับการอนุญาตให้แก้ไขโพสต์ได้หลังจากโพสต์ไปแล้วไม่เกิน %1 นาที %2 วินาที", - "post-edit-duration-expired-hours": "คุณได้รับการอนุญาตให้แก้ไขโพสต์ได้หลังจากโพสต์ไปแล้วไม่เกิน %1 ชั่วโมง", - "post-edit-duration-expired-hours-minutes": "คุณได้รับการอนุญาตให้แก้ไขโพสต์ได้หลังจากโพสต์ไปแล้วไม่เกิน %1 ชั่วโมง %2 นาที", - "post-edit-duration-expired-days": "คุณได้รับการอนุญาตให้แก้ไขโพสต์ได้หลังจากโพสต์ไปแล้วไม่เกิน %1 วัน", - "post-edit-duration-expired-days-hours": "คุณได้รับการอนุญาตให้แก้ไขโพสต์ได้หลังจากโพสต์ไปแล้วไม่เกิน %1 วัน %2 ชั่วโมง", - "post-delete-duration-expired": "คุณได้รับการอนุญาตให้ลบโพสต์ได้หลังจากโพสต์ไปแล้ว %1 วินาที(s)", - "post-delete-duration-expired-minutes": "คุณได้รับการอนุญาตให้ลบโพสต์ได้หลังจากโพสต์ไปแล้ว %1 นาที(s)", - "post-delete-duration-expired-minutes-seconds": "คุณได้รับการอนุญาตให้ลบโพสต์ได้หลังจากโพสต์ไปแล้ว %1 นาที(s) %2 วินาที(s)", - "post-delete-duration-expired-hours": "คุณได้รับการอนุญาตให้ลบโพสต์ได้หลังจากโพสต์ไปแล้ว %1 ชั่วโมง(s)", - "post-delete-duration-expired-hours-minutes": "คุณได้รับการอนุญาตให้ลบโพสต์ได้หลังจากโพสต์ไปแล้ว %1 ชั่วโมง(s) %2 นาที(s)", - "post-delete-duration-expired-days": "คุณได้รับการอนุญาตให้ลบโพสต์ได้หลังจากโพสต์ไปแล้ว %1 วัน(s)", - "post-delete-duration-expired-days-hours": "คุณได้รับการอนุญาตให้ลบโพสต์ได้หลังจากโพสต์ไปแล้ว %1 วัน(s) %2 ชั่วโมง(s)", + "post-edit-duration-expired": "คุณสามารถแก้ไขโพสต์ได้หลังจากโพสต์ไปแล้วไม่เกิน %1 วินาที", + "post-edit-duration-expired-minutes": "คุณสามารถแก้ไขโพสต์ได้หลังจากโพสต์ไปแล้วไม่เกิน %1 นาที", + "post-edit-duration-expired-minutes-seconds": "คุณสามารถแก้ไขโพสต์ได้หลังจากโพสต์ไปแล้วไม่เกิน %1 นาที %2 วินาที", + "post-edit-duration-expired-hours": "คุณสามารถแก้ไขโพสต์ได้หลังจากโพสต์ไปแล้วไม่เกิน %1 ชั่วโมง", + "post-edit-duration-expired-hours-minutes": "คุณสามารถแก้ไขโพสต์ได้หลังจากโพสต์ไปแล้วไม่เกิน %1 ชั่วโมง %2 นาที", + "post-edit-duration-expired-days": "คุณสามารถแก้ไขโพสต์ได้หลังจากโพสต์ไปแล้วไม่เกิน %1 วัน", + "post-edit-duration-expired-days-hours": "คุณสามารถแก้ไขโพสต์ได้หลังจากโพสต์ไปแล้วไม่เกิน %1 วัน %2 ชั่วโมง", + "post-delete-duration-expired": "คุณสามารถลบโพสต์ได้หลังจากโพสต์ไปแล้วไม่เกิน %1 วินาที", + "post-delete-duration-expired-minutes": "คุณสามารถลบโพสต์ได้หลังจากโพสต์ไปแล้วไม่เกิน %1 นาที", + "post-delete-duration-expired-minutes-seconds": "คุณสามารถลบโพสต์ได้หลังจากโพสต์ไปแล้วไม่เกิน %1 นาที %2 วินาที", + "post-delete-duration-expired-hours": "คุณสามารถลบโพสต์ได้หลังจากโพสต์ไปแล้วไม่เกิน %1 ชั่วโมง", + "post-delete-duration-expired-hours-minutes": "คุณสามารถลบโพสต์ได้หลังจากโพสต์ไปแล้วไม่เกิน %1 ชั่วโมง %2 นาที", + "post-delete-duration-expired-days": "คุณสามารถลบโพสต์ได้หลังจากโพสต์ไปแล้วไม่เกิน %1 วัน", + "post-delete-duration-expired-days-hours": "คุณสามารถลบโพสต์ได้หลังจากโพสต์ไปแล้วไม่เกิน %1 วัน %2 ชั่วโมง", "cant-delete-topic-has-reply": "คุณไม่สามารถลบกระทู้ได้หลังจากกระทู้ของคุณถูกตอบกลับ", "cant-delete-topic-has-replies": "คุณไม่สามารถลบกระทู้ได้หลังจากกระทู้มีจำนวนตอบกลับ %1", "content-too-short": "กรุณาโพสต์ข้อความให้ยาวขึ้น โพสต์ควรมีข้อความอย่างน้อย %1 ตัวอักษร(s)", @@ -159,14 +159,14 @@ "chat-message-too-long": "ข้อความแชทไม่สามารถยาวเกิน %1 ตัวอักษรได้", "cant-edit-chat-message": "คุณไม่ได้รับอนุญาติให้แก้ไขข้อความ", "cant-delete-chat-message": "คุณไม่ได้รับอนุญาตให้ลบข้อความ", - "chat-edit-duration-expired": "You are only allowed to edit chat messages for %1 second(s) after posting", - "chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting", - "chat-deleted-already": "This chat message has already been deleted.", - "chat-restored-already": "This chat message has already been restored.", - "chat-room-does-not-exist": "Chat room does not exist.", - "cant-add-users-to-chat-room": "Can't add users to chat room.", - "cant-remove-users-from-chat-room": "Can't remove users from chat room.", - "chat-room-name-too-long": "Chat room name too long. Names can't be longer than %1 characters.", + "chat-edit-duration-expired": "คุณสามารถแก้ไขข้อความแชทได้ภายใน %1 วินาทีหลังการโพสต์", + "chat-delete-duration-expired": "คุณสามารถลบข้อความแชทได้ภายใน %1 วินาทีหลังการโพสต์", + "chat-deleted-already": "ข้อความแชทนี้ถูกลบแล้ว", + "chat-restored-already": "ข้อความแชทนี้ถูกกู้กลับมาแล้ว", + "chat-room-does-not-exist": "ไม่มีห้องแชทนี้", + "cant-add-users-to-chat-room": "ไม่สามารถเพิ่มผู้ใช้งานลงในห้องแชท", + "cant-remove-users-from-chat-room": "ไม่สามารถลบผู้ใช้งานจากห้องแชท", + "chat-room-name-too-long": "ชื่อห้องแชทยาวเกินไป ต้องยาวไม่เกิน %1 ตัวอักษร", "already-voting-for-this-post": "คุณได้โหวตโพสต์นี้แล้ว", "reputation-system-disabled": "ระบบชื่อเสียงถูกปิดใช้งาน", "downvoting-disabled": "\"การโหวตลง\" ถูกปิดใช้งาน", @@ -188,39 +188,39 @@ "too-many-user-flags-per-day": "คุณสามารถรายงานได้ %1 ผู้ใช้งานต่อวัน", "cant-flag-privileged": "คุณไม่อนุญาตให้รายงานโปรไฟล์หรือเนื้อหาจากผู้ใช้งานที่ได้สิทธิ์พิเศษ (moderators/global moderators/admins)", "cant-locate-flag-report": "ไม่พบข้อมูลการรายงาน", - "self-vote": "You cannot vote on your own post", - "too-many-upvotes-today": "You can only upvote %1 times a day", - "too-many-upvotes-today-user": "You can only upvote a user %1 times a day", - "too-many-downvotes-today": "You can only downvote %1 times a day", - "too-many-downvotes-today-user": "You can only downvote a user %1 times a day", - "reload-failed": "NodeBB encountered a problem while reloading: \"%1\". NodeBB will continue to serve the existing client-side assets, although you should undo what you did just prior to reloading.", + "self-vote": "คุณไม่สามารถโหวดโพสต์ของคุณเอง", + "too-many-upvotes-today": "คุณสามารถโหวดขึ้นได้ %1 ครั้งต่อวัน", + "too-many-upvotes-today-user": "คุณสามารถโหวดผู้ใช้งานขึ้นได้ %1 ครั้งต่อวัน", + "too-many-downvotes-today": "คุณสามารถโหวดลงได้ %1 ครั้งต่อวัน", + "too-many-downvotes-today-user": "คุณสามารถโหวดผู้ใช้งานลงได้ %1 ครั้งต่อวัน", + "reload-failed": "NodeBB พบปัญหาในขณะที่กำลังโหลด: \"%1\" NodeBB จะยังคงส่งข้อมูลไปยัง asset ฝั่งผู้ใช้ที่ยังคงอยู่ แต่คุณควรย้อนกลับสิ่งที่คุณกำลังทำก่อนโหลดหน้าใหม่", "registration-error": "การสมัครสมาชิกผิดพลาด", "parse-error": "มีบางอย่างผิดพลาดขณะรอการตอบกลับจากเซิร์ฟเวอร์", "wrong-login-type-email": "กรุณาใช้อีเมล์ของคุณในการเข้าสู่ระบบ", "wrong-login-type-username": "กรุณาใช้ชื่อผู้ใช้ของคุณในการเข้าสู่ระบบ", - "sso-registration-disabled": "Registration has been disabled for %1 accounts, please register with an email address first", - "sso-multiple-association": "You cannot associate multiple accounts from this service to your NodeBB account. Please dissociate your existing account and try again.", - "invite-maximum-met": "คุณได้ทำการเชิญผู้คนจำนวนมากที่สุด (%1 out of %2).", + "sso-registration-disabled": "การสมัครสมาชิกไม่เปิดใช้งานสำหรับบัญชี %1 โปรสมัครด้วยที่อยู่อีเมลก่อน", + "sso-multiple-association": "คุณไม่สามารถเชื่อมฃหลายบัญชีจากบริการนี้มายังบัญชี NodeBB ของคุณ โปรดยกเลิกการเชื่อมที่มีอยู่แล้วและลองอีกครั้ง", + "invite-maximum-met": "คุณได้ทำการเชิญผู้คนสูงสุดเท่าที่ทำได้ (%1 จาก %2)", "no-session-found": "ไม่พบการเข้าสู่ระบบ", "not-in-room": "ผู้ใช้ไม่อยู่ในห้อง", "cant-kick-self": "คุณไม่สามารถเตะตัวเองออกจากกลุ่มได้", "no-users-selected": "ไม่มีผู้ใช้ที่เลือก", "no-groups-selected": "ไม่มีกลุ่มที่เลือก", "invalid-home-page-route": "เส้นทางไปหน้าแรกผิดพลาด", - "invalid-session": "Invalid Session", - "invalid-session-text": "It looks like your login session is no longer active. Please refresh this page.", - "session-mismatch": "Session Mismatch", - "session-mismatch-text": "It looks like your login session no longer matches with the server. Please refresh this page.", - "no-topics-selected": "No topics selected!", - "cant-move-to-same-topic": "Can't move post to same topic!", - "cant-move-topic-to-same-category": "Can't move topic to the same category!", - "cannot-block-self": "You cannot block yourself!", - "cannot-block-privileged": "You cannot block administrators or global moderators", - "cannot-block-guest": "Guest are not able to block other users", - "already-blocked": "This user is already blocked", - "already-unblocked": "This user is already unblocked", - "no-connection": "There seems to be a problem with your internet connection", - "socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later", + "invalid-session": "เซสชันผิดพลาด", + "invalid-session-text": "ดูเหมือนเซสชันการเข้าสู่ระบบไม่มีแล้ว โปรดโหลดหน้านี้อีกครั้ง", + "session-mismatch": "เซสชันไม่ตรง", + "session-mismatch-text": "ดูเหมือนเซสชันการเข้าสู่ระบบไม่ตรงกับที่เซิร์ฟเวอร์ โปรดโหลดหน้านี้อีกครั้ง", + "no-topics-selected": "ไม่มีกระทู้ที่เลือก!", + "cant-move-to-same-topic": "ไม่สามารถย้ายไปกระทู้เดิม!", + "cant-move-topic-to-same-category": "ไม่สามารถย้ายกระทู้ไปหมวดหมู่เดิม!", + "cannot-block-self": "คุณไม่สามารถบล็อกตัวเองได้!", + "cannot-block-privileged": "คุณไม่สามารถบล็อกผู้ดูแลระบบหรือ moderator ส่วนกลาง", + "cannot-block-guest": "ผู้มาเยือนไม่สามารถบล็อกผู้ใช้งานอื่น", + "already-blocked": "ผู้ใช้คนนี้ถูกบล็อกอยู่แล้ว", + "already-unblocked": "ผู้ใช้คนนี้ถูกปลดบล็อกอยู่แล้ว", + "no-connection": "ดูเหมือนมีปัญหาการเชื่อมต่ออินเทอร์เน็ตของคุณ", + "socket-reconnect-failed": "ไม่สามารถติดต่อกับเซิร์ฟเวอร์ในขณะนี้ คลิกที่นี่เพื่อลองใหม่ หรือลองอีกครั้งภายหลัง", "invalid-plugin-id": "รหัสปลั๊กอินไม่ถูกต้อง", "plugin-not-whitelisted": "Unable to install plugin – only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP", "plugins-set-in-configuration": "You are not allowed to change plugin state as they are defined at runtime (config.json, environmental variables or terminal arguments), please modify the configuration instead.", diff --git a/public/language/th/global.json b/public/language/th/global.json index 38828b6c88..f5aac99b63 100644 --- a/public/language/th/global.json +++ b/public/language/th/global.json @@ -6,11 +6,11 @@ "403.message": "ดูเหมือนว่าคุณจะได้รับการสกัดกั้นในหน้าเว็บที่คุณไม่สามารถเข้าถึงได้", "403.login": "คุณควรจะ ลองเข้าสู่ระบบ?", "404.title": "ไม่พบ", - "404.message": "You seem to have stumbled upon a page that does not exist.

Return to the home page.
", + "404.message": "ดูเหมือนว่าคุณจะเข้ามายังหน้าที่ไม่มีอยู่
กลับไปที่ หน้าแรก
", "500.title": "ระบบภายในเกิดข้อผิดพลาด", "500.message": "อุ่ย! มีสิ่งที่ไม่ถูกต้องเกิดขึ้น!", "400.title": "คำร้องขอที่เลวร้าย", - "400.message": "It looks like this link is malformed, please double-check and try again.
Return to the home page.
", + "400.message": "ดูเหมือนว่าลิงก์นี้ไม่ถูกต้อง โปรดตรวจสอบและลองอีกครั้ง
กลับไปที่ หน้าแรก
", "register": "ลงทะเบียน", "login": "เข้าสู่ระบบ", "please-log-in": "กรุณาเข้าสู่ระบบ", @@ -88,7 +88,7 @@ "read-more": "อ่านต่อ", "more": "เพิ่มเติม", "none": "ไม่มี", - "posted-ago-by-guest": "โพสต์ %1 โดย Guest", + "posted-ago-by-guest": "โพสต์ %1 โดยแขกผู้มาเยือน", "posted-ago-by": "โพสต์ %1 โดย %2", "posted-ago": "โพสต์ %1", "posted-in": "โพสต์ใน %1", @@ -96,15 +96,15 @@ "posted-in-ago": "โพสต์ใน %1 %2", "posted-in-ago-by": "โพสต์ใน %1 %2 โดย %3", "user-posted-ago": "%1 โพสต์ %2", - "guest-posted-ago": "Guest โพสต์ %1", + "guest-posted-ago": "ผู้มาเยือนโพสต์ %1", "last-edited-by": "แก้ไขล่าสุดโดย %1", - "edited-timestamp": "Edited %1", + "edited-timestamp": "แก้ไข %1", "norecentposts": "ไม่มีกระทู้ล่าสุด", "norecenttopics": "ไม่มีกระทู้ล่าสุด", "recentposts": "กระทู้ล่าสุด", "recentips": "IP ที่ใช้เข้าสู่ระบบล่าสุด", "moderator-tools": "เครื่องมือผู้ดูแลระบบ", - "status": "Status", + "status": "สถานะ", "online": "ออนไลน์", "away": "ไม่อยู่", "dnd": "ห้ามรบกวน", @@ -114,9 +114,9 @@ "language": "ภาษา", "guest": "แขก", "guests": "แขก", - "former-user": "A Former User", - "system-user": "System", - "unknown-user": "Unknown user", + "former-user": "อดีตผู้ใช้งาน", + "system-user": "ระบบ", + "unknown-user": "ผู้ใช้งานที่ไม่รู้จัก", "updated.title": "ฟอรั่มที่ถูกอัพเดทแล้ว", "updated.message": "ฟอรั่มนี้เพิ่งได้รับการอัพเดทให้เป็นเวอร์ชั่นล่าสุด คลิกที่นี่เพื่อรีเฟรชหน้าเพจ", "privacy": "ความเป็นส่วนตัว", @@ -127,9 +127,9 @@ "sessions": "ข้อมูลการเข้าสู่ระบบ", "ip-address": "ไอพีแอดเดรส", "enter-page-number": "กรอกหมายเลขหน้า", - "upload-file": "อัพโหลดไฟล์", - "upload": "อัพโหลด", - "uploads": "Uploads", + "upload-file": "อัปโหลดไฟล์", + "upload": "อัปโหลด", + "uploads": "อัปโหลด", "allowed-file-types": "ประเภทไฟล์ที่ได้รับการอนุญาติคือ %1", "unsaved-changes": "การเปลี่ยนแปลงของคุณจะไม่ได้รับการบันทึก คุณแน่ใจหรือว่าต้องการออกจากที่นี่?", "reconnecting-message": "เหมือนกับว่าการเชื่อมต่อของคุณเพื่อไปยัง %1 นั้นขาดหาย กรุณารอสักครู่ เรากำลังพยายามเชื่อมต่อใหม่", @@ -142,10 +142,10 @@ "select": "เลือก", "selected": "ถูกเลือกแล้ว", "copied": "คัดลอกแล้ว", - "user-search-prompt": "Type something here to find users...", - "hidden": "Hidden", - "sort": "Sort", - "actions": "Actions", + "user-search-prompt": "พิมพ์ที่นี่เพื่อค้นหาผู้ใช้งาน...", + "hidden": "ถูกซ่อนไว้", + "sort": "เรียงลำดับ", + "actions": "จัดการ", "rss-feed": "ฟีด RSS", "skip-to-content": "ข้ามไปยังเนื้อหา" } \ No newline at end of file diff --git a/public/language/th/groups.json b/public/language/th/groups.json index 1fc0ff13e0..84c4cff133 100644 --- a/public/language/th/groups.json +++ b/public/language/th/groups.json @@ -1,7 +1,7 @@ { - "all-groups": "All groups", + "all-groups": "กลุ่มทั้งหมด", "groups": "กลุ่ม", - "members": "Members", + "members": "สมาชิก", "view-group": "ดูกลุ่ม", "owner": "เจ้าของกลุ่ม", "new-group": "สร้างกลุ่มใหม่", @@ -24,24 +24,24 @@ "details.pending": "สมาชิกที่กำลังรอการตอบรับ", "details.invited": "สมาชิกที่ได้รับเชิญ", "details.has-no-posts": "กลุ่มนี้ยังไม่มีโพสต์จากสมาชิก", - "details.latest-posts": "โพสล่าสุด", + "details.latest-posts": "โพสต์ล่าสุด", "details.private": "ส่วนตัว", "details.disableJoinRequests": "ปิดคำขอ", - "details.disableLeave": "Disallow users from leaving the group", + "details.disableLeave": "ไม่อนุญาตให้ผู้ใช้งานออกจากกลุ่ม", "details.grant": "ให้ / ยกเลิกการเป็นเจ้าของ", "details.kick": "เตะออก", "details.kick-confirm": "คุณแน่ใจใช่ไหมว่าต้องการลบสมาชิกคนนี้ออกจากกลุ่ม?", - "details.add-member": "Add Member", + "details.add-member": "เพิ่มสมาชิก", "details.owner-options": "การจัดการกลุ่ม", "details.group-name": "ชื่อกลุ่ม", "details.member-count": "จำนวนสมาชิก", "details.creation-date": "สร้างวันที่", "details.description": "คำอธิบาย", - "details.member-post-cids": "Category IDs to display posts from", + "details.member-post-cids": "รหัสหมวดหมู่ที่ต้องการแสดงโพสต์", "details.badge-preview": "สัญลักษณ์พรีวิว", "details.change-icon": "เปลี่ยนไอคอน", - "details.change-label-colour": "Change Label Colour", - "details.change-text-colour": "Change Text Colour", + "details.change-label-colour": "เปลี่ยนสี label", + "details.change-text-colour": "เปลี่ยนสีข้อความ", "details.badge-text": "สัญลักษณ์ข้อความ", "details.userTitleEnabled": "แสดงสัญลักษณ์", "details.private-help": "หากเป็นไปได้ การเข้าร่วมกลุ่มต้องได้รับการอนุมัติจากเจ้าของกลุ่ม", @@ -52,11 +52,11 @@ "event.updated": "ข้อมูลกลุ่มได้รับการบันทึกแล้ว", "event.deleted": "กลุ่ม \"%1\"  ได้ถูกลบไปแล้ว", "membership.accept-invitation": "ยอมรับคำเชิญ", - "membership.accept.notification-title": "You are now a member of %1", + "membership.accept.notification-title": "ตอนนี้คุณเป็นสมาชิกของ %1", "membership.invitation-pending": "คำเชิญที่รอการอนุมัติ", "membership.join-group": "เข้าร่วมกลุ่ม", "membership.leave-group": "ออกจากกลุ่ม", - "membership.leave.notification-title": "%1 has left group %2", + "membership.leave.notification-title": "%1 ได้ออกจากกลุ่ม %2", "membership.reject": "ปฏิเสธ", "new-group.group-name": "ชื่อกลุ่ม:", "upload-group-cover": "อัพโหลดหน้าปกกลุ่ม", diff --git a/public/language/th/modules.json b/public/language/th/modules.json index 7c161f4600..2a3ae08a34 100644 --- a/public/language/th/modules.json +++ b/public/language/th/modules.json @@ -1,28 +1,28 @@ { - "chat.room-id": "Room %1", + "chat.room-id": "ห้อง %1", "chat.chatting-with": "คุยกับ", - "chat.placeholder": "Type chat message here, drag & drop images, press enter to send", - "chat.placeholder.mobile": "Type chat message here", - "chat.scroll-up-alert": "Go to most recent message", - "chat.usernames-and-x-others": "%1 & %2 others", - "chat.chat-with-usernames": "Chat with %1", - "chat.chat-with-usernames-and-x-others": "Chat with %1 & %2 others", + "chat.placeholder": "พิมพ์ข้อความแชทที่นี้ ลากและปล่อยรูปภาพ กดปุ่ม enter เพื่อส่ง", + "chat.placeholder.mobile": "พิมพ์ข้อความแชทที่นี่", + "chat.scroll-up-alert": "ไปที่ข้อความล่าสุด", + "chat.usernames-and-x-others": "%1, %2 และผู้อื่น", + "chat.chat-with-usernames": "แชทกับ %1", + "chat.chat-with-usernames-and-x-others": "แชทกับ %1, %2 และผู้อื่น", "chat.send": "ส่ง", "chat.no-active": "คุณไม่มีแชทที่คุยอยู่", - "chat.user-typing-1": "%1 is typing ...", - "chat.user-typing-2": "%1 and %2 are typing ...", - "chat.user-typing-3": "%1, %2 and %3 are typing ...", - "chat.user-typing-n": "%1, %2 and %3 others are typing ...", + "chat.user-typing-1": "%1 กำลังพิมพ์ ...", + "chat.user-typing-2": "%1 และ %2 กำลังพิมพ์ ...", + "chat.user-typing-3": "%1, %2 และ %3 กำลังพิมพ์ ...", + "chat.user-typing-n": "%1, %2 และอีก %3 คนกำลังพิมพ์ ...", "chat.user-has-messaged-you": "%1 ได้ส่งข้อความถึงคุณ", - "chat.replying-to": "Replying to %1", - "chat.see-all": "All chats", - "chat.mark-all-read": "Mark all read", + "chat.replying-to": "ตอบกลับไปยัง %1", + "chat.see-all": "แชททั้งหมด", + "chat.mark-all-read": "ทำเครื่องหมายว่าอ่านทั้งหมดแล้ว", "chat.no-messages": "กรุณาเลือกผู้รับเพื่อดูประวัติข้อความ", "chat.no-users-in-room": "ไม่มีผู้ใช้ในห้องนี้", "chat.recent-chats": "แชทล่าสุด", "chat.contacts": "ติดต่อ", "chat.message-history": "ประวัติข้อความ", - "chat.message-deleted": "Message Deleted", + "chat.message-deleted": "ข้อความถูกลบแล้ว", "chat.options": "ตัวเลือกแชท", "chat.pop-out": "Pop out แชท", "chat.minimize": "ย่อเล็กสุด", @@ -32,53 +32,53 @@ "chat.three-months": "3 เดือน", "chat.delete-message-confirm": "คุณแน่ใจแล้วใช่ไหมว่าต้องการจะลบข้อความนี้?", "chat.retrieving-users": "กำลังเรียกข้อมูลผู้ใช้", - "chat.view-users-list": "View users list", - "chat.pinned-messages": "Pinned Messages", - "chat.no-pinned-messages": "There are no pinned messages", - "chat.pin-message": "Pin Message", - "chat.unpin-message": "Unpin Message", - "chat.public-rooms": "Public Rooms (%1)", - "chat.private-rooms": "Private Rooms (%1)", - "chat.create-room": "Create Chat Room", - "chat.private.option": "Private (Only visible to users added to room)", - "chat.public.option": "Public (Visible to every user in selected groups)", - "chat.public.groups-help": "To create a chat room that is visible to all users select registered-users from the group list.", + "chat.view-users-list": "ดูรายชื่อผู้ใช้งาน", + "chat.pinned-messages": "ข้อความที่ปักหมุด", + "chat.no-pinned-messages": "ไม่มีข้อความที่ปักหมุด", + "chat.pin-message": "ปักหมุดข้อความ", + "chat.unpin-message": "ยกเลิกการปักหมุดข้อความ", + "chat.public-rooms": "ห้องสาธารณะ (%1)", + "chat.private-rooms": "ห้องส่วนตัว (%1)", + "chat.create-room": "สร้างห้องแชท", + "chat.private.option": "ส่วนตัว (เฉพาะผู้ใช้งานที่ถูกเพิ่มลงในห้องถึงมองเห็น)", + "chat.public.option": "สาธารณะ (ผู้ใช้งานทุกคนในกลุ่มที่เลือกมองเห็น)", + "chat.public.groups-help": "ถ้าต้องการสร้างห้องแชทที่เห็นโดยทุกคน เลือก registered-users จากรายชื่อกลุ่ม", "chat.manage-room": "จัดการห้องแชท", - "chat.add-user": "Add User", - "chat.notification-settings": "Notification Settings", - "chat.default-notification-setting": "Default Notification Setting", - "chat.notification-setting-room-default": "Room Default", - "chat.notification-setting-none": "No notifications", - "chat.notification-setting-at-mention-only": "@mention only", - "chat.notification-setting-all-messages": "All messages", - "chat.select-groups": "Select Groups", - "chat.add-user-help": "Search for users here. When selected, the user will be added to the chat. The new user will not be able to see chat messages written before they were added to the conversation. Only room owners () may remove users from chat rooms.", + "chat.add-user": "เพิ่มผู้ใช้งาน", + "chat.notification-settings": "การตั้งค่าการแจ้งเตือน", + "chat.default-notification-setting": "ค่าเริ่มต้นการแจ้งเตือน", + "chat.notification-setting-room-default": "ค่าเริ่มต้นของห้อง", + "chat.notification-setting-none": "ไม่มีการแจ้งเตือน", + "chat.notification-setting-at-mention-only": "เฉพาะเมื่อ @ถูกพูดถึง", + "chat.notification-setting-all-messages": "ข้อความทั้งหมด", + "chat.select-groups": "เลือกกลุ่ม", + "chat.add-user-help": "ค้นหาผู้ใช้งานที่นี่ เมื่อเลือกแล้วผู้ใช้งานจะถูกเพิ่มลงในแชท ผู้ใช้งานจะยังไม่เห็นข้อความแชทจนกว่าจะถูกเพิ่มเข้าไปในการสนทนา เฉพาะเจ้าของห้อง () เท่านั้นที่จะลบผู้ใช้งานออกจากห้องแชท", "chat.confirm-chat-with-dnd-user": "ผู้ใช้นี้ได้ตั้งค่าสถานะเป็น (ห้ามรบกวน) คุณยังอยากจะคุยกับเขาอยู่ไหม?", - "chat.room-name-optional": "Room Name (Optional)", - "chat.rename-room": "Rename Room", + "chat.room-name-optional": "ชื่อห้อง (ไม่มีก็ได้)", + "chat.rename-room": "เปลี่ยนชื่อห้อง", "chat.rename-placeholder": "ใส่ชื่อห้องของคุณที่นี่", "chat.rename-help": "ชื่อห้องจะสามารถดูได้โดยผู้เข้าร่วมทั้งหมดในห้อง", - "chat.leave": "Leave", - "chat.leave-room": "Leave Room", + "chat.leave": "ออก", + "chat.leave-room": "ออกจากห้อง", "chat.leave-prompt": "คุณแน่ใจหรือไม่ว่าต้องการออกจากการแชทนี้", "chat.leave-help": "การออกจากการแชทนี้จะเป็นการลบคุณออกจากการติดต่อในอนาคตในการแชทนี้ หากคุณถูกเพิ่มเข้ามาใหม่ในอนาคตคุณจะไม่เห็นประวัติการแชทก่อนที่จะเข้าร่วมใหม่", - "chat.delete": "Delete", - "chat.delete-room": "Delete Room", - "chat.delete-prompt": "Are you sure you wish to delete this chat room?", + "chat.delete": "ลบ", + "chat.delete-room": "ลบห้อง", + "chat.delete-prompt": "ต้องการจะลบห้องแชทนี้หรือไม่?", "chat.in-room": "ในห้องนี้", - "chat.kick": "Kick", - "chat.show-ip": "Show IP", + "chat.kick": "เตะออก", + "chat.show-ip": "แสดง IP", "chat.copy-text": "คัดลอกข้อความ", "chat.copy-link": "คัดลอกลิงก์", - "chat.owner": "Room Owner", - "chat.grant-rescind-ownership": "Grant/Rescind Ownership", - "chat.system.user-join": "%1 has joined the room ", - "chat.system.user-leave": "%1 has left the room ", - "chat.system.room-rename": "%2 has renamed this room to \"%1\" ", + "chat.owner": "เจ้าของห้อง", + "chat.grant-rescind-ownership": "ให้หรือถอดความเป็นเจ้าของ", + "chat.system.user-join": "%1 ได้เข้าร่วมห้อง ", + "chat.system.user-leave": "%1 ได้ออกจากห้อง ", + "chat.system.room-rename": "%2 ได้เปลี่ยนชื่อห้องนี้เป็น \"%1\" ", "composer.compose": "เขียน", "composer.show-preview": "แสดงพรีวิว", "composer.hide-preview": "ซ่อนพรีวิว", - "composer.help": "Help", + "composer.help": "ความช่วยเหลือ", "composer.user-said-in": "%1 พูดใน %2:", "composer.user-said": "%1 พูด:", "composer.discard": "คุณแน่ใจแล้วใช่ไหมว่าจะทิ้งโพสต์นี้?", @@ -87,45 +87,45 @@ "composer.uploading": "กำลังอัพโหลด %1", "composer.formatting.bold": "ตัวหนา", "composer.formatting.italic": "ตัวเอียง", - "composer.formatting.heading": "Heading", - "composer.formatting.heading1": "Heading 1", - "composer.formatting.heading2": "Heading 2", - "composer.formatting.heading3": "Heading 3", - "composer.formatting.heading4": "Heading 4", - "composer.formatting.heading5": "Heading 5", - "composer.formatting.heading6": "Heading 6", + "composer.formatting.heading": "หัวเรื่อง", + "composer.formatting.heading1": "หัวเรื่อง 1", + "composer.formatting.heading2": "หัวเรื่อง 2", + "composer.formatting.heading3": "หัวเรื่อง 3", + "composer.formatting.heading4": "หัวเรื่อง 4", + "composer.formatting.heading5": "หัวเรื่อง 5", + "composer.formatting.heading6": "หัวเรื่อง 6", "composer.formatting.list": "รายการ", "composer.formatting.strikethrough": "ขีดเส้นใต้", - "composer.formatting.code": "Code", - "composer.formatting.link": "ลิ้งค์", - "composer.formatting.picture": "Image Link", + "composer.formatting.code": "โค้ด", + "composer.formatting.link": "ลิงก์", + "composer.formatting.picture": "ลิงก์รูปภาพ", "composer.upload-picture": "อัพโหลดรูปภาพ", "composer.upload-file": "อัพโหลดไฟล์", "composer.zen-mode": "เซ็นโหมด", "composer.select-category": "เลือกหมวดหมู่", - "composer.textarea.placeholder": "Enter your post content here, drag and drop images", - "composer.post-queue-alert": "Hello👋!
This forum uses a post queue system, since you are a new user your post will be hidden until it is approved by our moderation team.", - "composer.schedule-for": "Schedule topic for", - "composer.schedule-date": "Date", - "composer.schedule-time": "Time", - "composer.cancel-scheduling": "Cancel Scheduling", - "composer.change-schedule-date": "Change Date", - "composer.set-schedule-date": "Set Date", - "composer.discard-all-drafts": "Discard all drafts", - "composer.no-drafts": "You have no drafts", - "composer.discard-draft-confirm": "Do you want to discard this draft?", + "composer.textarea.placeholder": "ป้อนเนื้อหาของโพสต์ที่นี่ ลากและปล่อยรูปภาพ", + "composer.post-queue-alert": "สวัสดี👋!
ฟอรั่มนี้ใช้ระบบคิวการโพสต์ เนื่องจากคุณเป็นผู้ใช้งานใหม่ โพสต์จะถูกซ่อนจนกว่าจะได้รับอนุมัติจากทีมดูแลของเรา", + "composer.schedule-for": "ตั้งเวลากระทู้", + "composer.schedule-date": "วันที่", + "composer.schedule-time": "เวลา", + "composer.cancel-scheduling": "ยกเลิกการตั้งเวลา", + "composer.change-schedule-date": "เปลี่ยนวันที่และเวลา", + "composer.set-schedule-date": "ตั้งค่าวันที่และเวลา", + "composer.discard-all-drafts": "ลบข้อความร่างทั้งหมด", + "composer.no-drafts": "คุณไม่มีข้อความร่าง", + "composer.discard-draft-confirm": "คุณต้องการลบข้อความร่างนี้หรือไม่?", "bootbox.ok": "ตกลง", "bootbox.cancel": "ยกเลิก", "bootbox.confirm": "ยืนยัน", - "bootbox.submit": "Submit", - "bootbox.send": "Send", + "bootbox.submit": "ส่ง", + "bootbox.send": "ส่ง", "cover.dragging-title": "ตำแหน่งภาพหน้าปก", "cover.dragging-message": "ลากภาพหน้าปกเพื่อเลือกตำแหน่งแล้วกด \"บันทึก\"", "cover.saved": "ภาพหน้าปกและตำแหน่งได้รับการบันทึกแล้ว", - "thumbs.modal.title": "Manage topic thumbnails", - "thumbs.modal.no-thumbs": "No thumbnails found.", - "thumbs.modal.resize-note": "Note: This forum is configured to resize topic thumbnails down to a maximum width of %1px", - "thumbs.modal.add": "Add thumbnail", - "thumbs.modal.remove": "Remove thumbnail", - "thumbs.modal.confirm-remove": "Are you sure you want to remove this thumbnail?" + "thumbs.modal.title": "จัดการภาพย่อของกระทู้", + "thumbs.modal.no-thumbs": "ไม่พบภาพย่อ", + "thumbs.modal.resize-note": "หมายเหตุ: ฟอรั่มนี้ถูกตั้งค่าให้ย่อขนาดของภาพย่อกระทู้ลงเหลือกว้างสุด %1px", + "thumbs.modal.add": "เพิ่มภาพย่อ", + "thumbs.modal.remove": "ลบภาพย่อ", + "thumbs.modal.confirm-remove": "คุณต้องการลบภาพย่อนี้หรือไม่?" } \ No newline at end of file diff --git a/public/language/th/user.json b/public/language/th/user.json index b1c941e329..3aed3eea04 100644 --- a/public/language/th/user.json +++ b/public/language/th/user.json @@ -97,8 +97,8 @@ "show-email": "แสดงอีเมลของฉัน", "show-fullname": "แสดงชื่อจริงของฉัน", "restrict-chats": "รับข้อความสนทนาจากคนที่ฉันติดตามเท่านั้น", - "digest-label": "สมัครรับข่าวสารจาก Digest", - "digest-description": "สมัครรับอีเมลอัพเดทข้อมูลของบอร์ดสนทนา (ข้อความแจ้งเตือนและหัวข้อใหม่ๆ) ตามรายการที่ตั้งไว้", + "digest-label": "สมัครรับสรุปเนื้อหา", + "digest-description": "สมัครรับอีเมลอัพเดทข้อมูลของบอร์ดสนทนา (ข้อความแจ้งเตือนและกระทู้ใหม่ๆ) ตามเวลาที่ตั้งไว้", "digest-off": "ปิด", "digest-daily": "รายวัน", "digest-weekly": "รายสัปดาห์", @@ -127,7 +127,7 @@ "notifications": "การแจ้งเตือน", "upvote-notif-freq": "ความถี่การแจ้งเตือนโหวตขึ้น", "upvote-notif-freq.all": "โหวตขึ้นทั้งหมด", - "upvote-notif-freq.first": "First Per Post", + "upvote-notif-freq.first": "ครั้งแรกของแต่ละโพสต์", "upvote-notif-freq.everyTen": "ทุกๆการโหวตขึ้น 10 ครั้ง", "upvote-notif-freq.threshold": "ทุกๆ 1, 5, 10, 25, 50, 100, 150, 200...", "upvote-notif-freq.logarithmic": "ทุกๆ 10, 100, 1000...", From da0888e6110fcd0af25638fe677ca5b288075f3b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 17 Apr 2024 09:08:56 -0400 Subject: [PATCH 097/168] fix(deps): update dependency ioredis to v5.4.0 (#12519) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index d2cdb2026f..cabf00dcbb 100644 --- a/install/package.json +++ b/install/package.json @@ -119,7 +119,7 @@ "postcss-clean": "1.2.0", "progress-webpack-plugin": "1.0.16", "prompt": "1.3.0", - "ioredis": "5.3.2", + "ioredis": "5.4.0", "rimraf": "5.0.5", "rss": "1.2.2", "rtlcss": "4.1.1", From 66a35490b4b4f10bb48035f9e44d3e3b415fd463 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 17 Apr 2024 12:48:21 -0400 Subject: [PATCH 098/168] fix(deps): update dependency ioredis to v5.4.1 (#12520) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index cabf00dcbb..1787833057 100644 --- a/install/package.json +++ b/install/package.json @@ -119,7 +119,7 @@ "postcss-clean": "1.2.0", "progress-webpack-plugin": "1.0.16", "prompt": "1.3.0", - "ioredis": "5.4.0", + "ioredis": "5.4.1", "rimraf": "5.0.5", "rss": "1.2.2", "rtlcss": "4.1.1", From c7930bb47a4c254f1a7b1c005cc261e59b58d820 Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Fri, 19 Apr 2024 09:19:10 +0000 Subject: [PATCH 099/168] Latest translations and fallbacks --- public/language/he/admin/advanced/events.json | 4 ++-- public/language/he/admin/manage/users.json | 10 +++++----- public/language/he/admin/settings/post.json | 6 +++--- public/language/he/aria.json | 4 ++-- public/language/he/themes/harmony.json | 2 +- public/language/he/topic.json | 10 +++++----- public/language/he/user.json | 4 ++-- 7 files changed, 20 insertions(+), 20 deletions(-) diff --git a/public/language/he/admin/advanced/events.json b/public/language/he/admin/advanced/events.json index 1a3952d62e..10cfb34164 100644 --- a/public/language/he/admin/advanced/events.json +++ b/public/language/he/admin/advanced/events.json @@ -10,8 +10,8 @@ "filter-start": "מתאריך", "filter-end": "עד תאריך", "filter-user": "סינון לפי משתמש", - "filter-user.placeholder": "Type user name to filter...", + "filter-user.placeholder": "הקלד שם משתמש לסינון...", "filter-group": "סינון לפי קבוצה", - "filter-group.placeholder": "Type group name to filter...", + "filter-group.placeholder": "הקלד שם קבוצה לסינון...", "filter-per-page": "פריטים בכל דף" } \ No newline at end of file diff --git a/public/language/he/admin/manage/users.json b/public/language/he/admin/manage/users.json index 6a5d728f22..605a71b38f 100644 --- a/public/language/he/admin/manage/users.json +++ b/public/language/he/admin/manage/users.json @@ -122,20 +122,20 @@ "alerts.x-users-found": "%1 משתמש(ים) נמצאו, (%2 שניות)", "alerts.select-a-single-user-to-change-email": "בחר משתמש בודד כדי לשנות את האימייל", "export": "ייצוא", - "export-users-fields-title": "Select CSV Fields", + "export-users-fields-title": "בחר שדות ב-CSV", "export-field-email": "דוא\"ל", "export-field-username": "שם משתמש", "export-field-uid": "מזהה משתמש", "export-field-ip": "IP", "export-field-joindate": "תאריך הצטרפות", "export-field-lastonline": "נראה לאחרונה", - "export-field-lastposttime": "Last Post Time", + "export-field-lastposttime": "זמן פוסט אחרון", "export-field-reputation": "מוניטין", "export-field-postcount": "כמות פוסטים", "export-field-topiccount": "כמות נושאים", - "export-field-profileviews": "Profile Views", - "export-field-followercount": "Follower Count", - "export-field-followingcount": "Following Count", + "export-field-profileviews": "ציפיות בפרופיל", + "export-field-followercount": "מספר עוקבים", + "export-field-followingcount": "מספר עקיבות", "export-field-fullname": "שם מלא", "export-field-website": "אתר אינטרנט", "export-field-location": "מיקום", diff --git a/public/language/he/admin/settings/post.json b/public/language/he/admin/settings/post.json index 5c2f14a0ef..c317b33e0d 100644 --- a/public/language/he/admin/settings/post.json +++ b/public/language/he/admin/settings/post.json @@ -4,11 +4,11 @@ "sorting.post-default": "מיון ברירת מחדל של פוסטים", "sorting.oldest-to-newest": "מישן לחדש", "sorting.newest-to-oldest": "מחדש לישן", - "sorting.recently-replied": "Recently Replied", - "sorting.recently-created": "Recently Created", + "sorting.recently-replied": "הושב לאחרונה", + "sorting.recently-created": "נוצר לאחרונה", "sorting.most-votes": "רוב ההצבעות", "sorting.most-posts": "הכי הרבה פוסטים", - "sorting.most-views": "Most Views", + "sorting.most-views": "צפיות מרובות", "sorting.topic-default": "מיון ברירת מחדל של נושאים", "length": "אורך פוסט", "post-queue": "תור פוסטים", diff --git a/public/language/he/aria.json b/public/language/he/aria.json index de8d151708..0812134c09 100644 --- a/public/language/he/aria.json +++ b/public/language/he/aria.json @@ -2,7 +2,7 @@ "post-sort-option": "אפשרות מיון פוסטים, %1", "topic-sort-option": "אפשרות מיון נושאים, %1", "user-avatar-for": "סמליל משתמש עבור %1", - "user-watched-tags": "User watched tags", + "user-watched-tags": "צפיית משתמש בתגיות", "delete-upload-button": "כפתור מחיקת העלאה", - "group-page-link-for": "Group page link for %1" + "group-page-link-for": "%1 קבוצת דפים מקושרים " } \ No newline at end of file diff --git a/public/language/he/themes/harmony.json b/public/language/he/themes/harmony.json index 9833d8217e..67cdfdf0fe 100644 --- a/public/language/he/themes/harmony.json +++ b/public/language/he/themes/harmony.json @@ -7,7 +7,7 @@ "login-register-to-search": "התחברו או הירשמו כדי לחפש.", "settings.title": "הגדרות ערכת נושא", "settings.enableQuickReply": "הפעלת תגובה מהירה", - "settings.enableBreadcrumbs": "Enable breadcrumbs", + "settings.enableBreadcrumbs": "אפשר סימני דרך", "settings.centerHeaderElements": "מרכוז אלמנטים של כותרת", "settings.mobileTopicTeasers": "הצגת טיזרים של נושאים בנייד", "settings.stickyToolbar": "הצמד את סרגל הכלים בעת גלילה", diff --git a/public/language/he/topic.json b/public/language/he/topic.json index 98f60636e8..bda2e1e7ce 100644 --- a/public/language/he/topic.json +++ b/public/language/he/topic.json @@ -175,15 +175,15 @@ "composer.thumb-file-label": "או העלו קובץ", "composer.thumb-remove": "ניקוי שדות", "composer.drag-and-drop-images": "גררו תמונות לכאן", - "more-users-and-guests": "%1 משתמשים נוספים ו-%2 אורחים", - "more-users": "%1 משתמשים נוספים", - "more-guests": "%1 אורחים נוספים", + "more-users-and-guests": "%1 עוד משתמש(ים) ו-%2 אורח(ים)", + "more-users": "%1 עוד משתמש(ים)", + "more-guests": "%1 עוד אורח(ים)", "users-and-others": "%1 ו-%2 אחרים", "sort-by": "מיון לפי", "oldest-to-newest": "מהישן לחדש", "newest-to-oldest": "מהחדש לישן", - "recently-replied": "Recently Replied", - "recently-created": "Recently Created", + "recently-replied": "הושב לאחרונה", + "recently-created": "נוצר לאחרונה", "most-votes": "הכי הרבה הצבעות", "most-posts": "הכי הרבה פוסטים", "most-views": "הכי הרבה צפיות", diff --git a/public/language/he/user.json b/public/language/he/user.json index f73592219a..3f40f1f417 100644 --- a/public/language/he/user.json +++ b/public/language/he/user.json @@ -144,8 +144,8 @@ "group-order-help": "בחר קבוצה והשתמש בחצים על מנת לארגן כותרות", "show-group-title": "הצג כותרת קבוצה", "hide-group-title": "הסתר כותרת קבוצה", - "order-group-up": "Order group up", - "order-group-down": "Order group down", + "order-group-up": "מיין קבוצה ישר", + "order-group-down": "מיין קבוצה הפוך", "no-group-title": "ללא כותרת לקבוצה", "select-skin": "בחר מראה", "default": "ברירת מחדל (%1)", From 418b025c925eb5c03f6df01207e8ad21f6cc0311 Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Sun, 21 Apr 2024 09:18:50 +0000 Subject: [PATCH 100/168] Latest translations and fallbacks --- public/language/th/error.json | 16 +++--- public/language/th/groups.json | 2 +- public/language/th/ip-blacklist.json | 28 +++++------ public/language/th/login.json | 2 +- public/language/th/notifications.json | 68 +++++++++++++------------- public/language/th/post-queue.json | 6 +-- public/language/th/recent.json | 2 +- public/language/th/register.json | 22 ++++----- public/language/th/search.json | 2 +- public/language/th/themes/harmony.json | 34 ++++++------- public/language/th/themes/persona.json | 16 +++--- public/language/th/topic.json | 8 +-- public/language/th/user.json | 62 +++++++++++------------ public/language/th/users.json | 2 +- 14 files changed, 135 insertions(+), 135 deletions(-) diff --git a/public/language/th/error.json b/public/language/th/error.json index 2ac397f63f..b9ade6bfae 100644 --- a/public/language/th/error.json +++ b/public/language/th/error.json @@ -21,11 +21,11 @@ "invalid-title": "คำนำหน้าชื่อไม่ถูกต้อง", "invalid-user-data": "ข้อมูลผู้ใช้งานไม่ถูกต้อง", "invalid-password": "รหัสผ่านไม่ถูกต้อง", - "invalid-login-credentials": "session login หมดอายุ", + "invalid-login-credentials": "เซสชันการเข้าสู้ระบบหมดอายุ", "invalid-username-or-password": "กรุณาระบุชื่อผู้ใช้และรหัสผ่าน", "invalid-search-term": "ข้อความค้นหาไม่ถูกต้อง", "invalid-url": "URL ไม่ถูกต้อง", - "invalid-event": "อีเว้นต์ไม่ถูกต้องt: %1", + "invalid-event": "อีเว้นต์ไม่ถูกต้อง: %1", "local-login-disabled": "การเข้าสู่ระบบแบบโลคอลไม่เปิดสำหรับบัญชีธรรมดา", "csrf-invalid": "เราไม่สามารถนำท่านเข้าสู่ระบบได้ น่าจะเพราะเซสชั่นหมดอายุแล้ว กรุณาลองใหม่อีกครั้ง", "invalid-path": "พาทไม่ถูกต้อง", @@ -222,12 +222,12 @@ "no-connection": "ดูเหมือนมีปัญหาการเชื่อมต่ออินเทอร์เน็ตของคุณ", "socket-reconnect-failed": "ไม่สามารถติดต่อกับเซิร์ฟเวอร์ในขณะนี้ คลิกที่นี่เพื่อลองใหม่ หรือลองอีกครั้งภายหลัง", "invalid-plugin-id": "รหัสปลั๊กอินไม่ถูกต้อง", - "plugin-not-whitelisted": "Unable to install plugin – only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP", - "plugins-set-in-configuration": "You are not allowed to change plugin state as they are defined at runtime (config.json, environmental variables or terminal arguments), please modify the configuration instead.", - "theme-not-set-in-configuration": "When defining active plugins in configuration, changing themes requires adding the new theme to the list of active plugins before updating it in the ACP", - "topic-event-unrecognized": "Topic event '%1' unrecognized", - "cant-set-child-as-parent": "Can't set child as parent category", - "cant-set-self-as-parent": "Can't set self as parent category", + "plugin-not-whitelisted": "ไม่สามารถติดตั้งปลั๊กอิน – เฉพาะปลั๊กอินที่ได้รับอนุญาตจาก NodeBB Package Manager ถึงจะติดตั้งผ่านแผงควบคุมผู้ดูแลระบบได้", + "plugins-set-in-configuration": "คุณไม่สามารถเปลี่ยนสถานะของปลั๊กอินเนื่องจากถูกกำหนดตอนรัน (ไฟล์ config.json, ตัวแปร environmental หรือระบุตอนสั่งในบรรทัดคำสั่ง) โปรดปรับที่การตั้งค่าแทน", + "theme-not-set-in-configuration": "เมื่อกำหนดปลั๊กอันที่กำลังทำงานในส่วนตั้งค่า การเปลี่ยนธีมต้องเพิ่มทีมในรายการปลั๊กอินที่กำลังใช้งานก่อนที่จะเปลี่ยนในแผงควบคุมผู้ดูแล", + "topic-event-unrecognized": "ไม่รู้จักอีเวนต์กระทู้ '%1'", + "cant-set-child-as-parent": "ไม่สามารถตั้งหมวดหมู่ย่อยให้เป็นหมวดหมู่หลักได้", + "cant-set-self-as-parent": "ไม่สามารถตั้งหมวดนี้ให้เป็นหมวดหมู่หลักได้", "api.master-token-no-uid": "A master token was received without a corresponding `_uid` in the request body", "api.400": "Something was wrong with the request payload you passed in.", "api.401": "A valid login session was not found. Please log in and try again.", diff --git a/public/language/th/groups.json b/public/language/th/groups.json index 84c4cff133..4b32fe99cd 100644 --- a/public/language/th/groups.json +++ b/public/language/th/groups.json @@ -50,7 +50,7 @@ "details.delete-group": "ลบกลุ่ม", "details.private-system-help": "กลุ่มส่วนตัวถูกปิดใช้งานโดยเลเวลระบบ ตัวเลือกนี้จะไม่ได้ทำอะไรทั้งสิ้น", "event.updated": "ข้อมูลกลุ่มได้รับการบันทึกแล้ว", - "event.deleted": "กลุ่ม \"%1\"  ได้ถูกลบไปแล้ว", + "event.deleted": "กลุ่ม \"%1\" ได้ถูกลบไปแล้ว", "membership.accept-invitation": "ยอมรับคำเชิญ", "membership.accept.notification-title": "ตอนนี้คุณเป็นสมาชิกของ %1", "membership.invitation-pending": "คำเชิญที่รอการอนุมัติ", diff --git a/public/language/th/ip-blacklist.json b/public/language/th/ip-blacklist.json index 588fbd62b6..3a38f15c54 100644 --- a/public/language/th/ip-blacklist.json +++ b/public/language/th/ip-blacklist.json @@ -1,19 +1,19 @@ { - "lead": "Configure your IP blacklist here.", - "description": "Occasionally, a user account ban is not enough of a deterrant. Other times, restricting access to the forum to a specific IP or a range of IPs is the best way to protect a forum. In these scenarios, you can add troublesome IP addresses or entire CIDR blocks to this blacklist, and they will be prevented from logging in to or registering a new account.", - "active-rules": "Active Rules", - "validate": "Validate Blacklist", - "apply": "Apply Blacklist", - "hints": "Syntax Hints", - "hint-1": "Define a single IP addresses per line. You can add IP blocks as long as they follow the CIDR format (e.g. 192.168.100.0/22).", - "hint-2": "You can add in comments by starting lines with the # symbol.", + "lead": "ตั้งค่าการขึ้นบัญชีดำ IP ที่นี่", + "description": "บางครั้งการแบนผู้ใช้งานยังไม่เพียงพอ การจำกัดการเข้าถึงฟอรัมจาก IP หรือช่วงของ IP ที่ระบุเป็นวิธีที่ดีที่สุดที่ใช้ป้องกันฟอรัม ในสถานการณ์นี้ คุณสามารถเพิ่ม IP หรือบล็อก CIDR ที่เป็นปัญหาลงในบัญชีดำนี้ แล้วพวกเขาจะไม่สามารถสมัครบัญชีใหม่หรือเข้าสู่ระบบได้", + "active-rules": "กฎที่กำลังใช้งาน", + "validate": "ตรวจสอบความถูกต้อง", + "apply": "นำไปใช้งาน", + "hints": "คำช่วยเหลือรูปแบบคำสั่ง", + "hint-1": "กำหนดที่อยู่ IP 1 ค่าต่อ 1 บรรทัด คุณสามารถเพิ่มที่อยู่ IP หรือ IP บล็อกที่สอดคล้องกับรูปแบบ CIDR (เช่น 192.168.100.0/22).", + "hint-2": "คุณสามารถใส่คำอธิบายโดยใช้เครื่องหมาย # ที่ต้นบรรทัด", - "validate.x-valid": "%1 out of %2 rule(s) valid.", - "validate.x-invalid": "The following %1 rules are invalid:", + "validate.x-valid": "กฎ %1 จากทั้งหมด %2 กดมีค่าถูกต้อง", + "validate.x-invalid": "กฏ %1 กฎต่อไปนี้ไม่ถูกต้อง", - "alerts.applied-success": "Blacklist Applied", + "alerts.applied-success": "บัญชีดำถูกนำไปใช้งานแล้ว", - "analytics.blacklist-hourly": "Figure 1 – Blacklist hits per hour", - "analytics.blacklist-daily": "Figure 2 – Blacklist hits per day", - "ip-banned": "IP banned" + "analytics.blacklist-hourly": "รูปที่ 1 – จำนวนฮิตจากบัญชีดำต่อชั่วโมง", + "analytics.blacklist-daily": "รูปที่ 2 – จำนวนฮิตจากบัญชีดำต่อวัน", + "ip-banned": "IP ถูกขึ้นบัญชีดำ" } \ No newline at end of file diff --git a/public/language/th/login.json b/public/language/th/login.json index 73b80f08e4..99c54083d3 100644 --- a/public/language/th/login.json +++ b/public/language/th/login.json @@ -7,6 +7,6 @@ "failed-login-attempt": "เข้าสู่ระบบสำเร็จ", "login-successful": "คุณเข้าสู่ระบบเรียบร้อยแล้ว", "dont-have-account": "คุณยังไม่มีบัญชีเข้าระบบ?", - "logged-out-due-to-inactivity": "คุณได้ออกจากระบบ Admin Control Panel แล้ว เนื่องจากว่าไม่มีกิจกรรมใดๆมาสักระยะ", + "logged-out-due-to-inactivity": "คุณได้ออกจากแผงควบคุมผู้ดูแลระบบแล้ว เนื่องจากว่าไม่มีกิจกรรมใดๆมาสักระยะ", "caps-lock-enabled": "ปุ่ม Caps Lock เปิดอยู่" } \ No newline at end of file diff --git a/public/language/th/notifications.json b/public/language/th/notifications.json index f52e90a746..b367a012fb 100644 --- a/public/language/th/notifications.json +++ b/public/language/th/notifications.json @@ -26,16 +26,16 @@ "bans": "แบน", "new-message-from": "ข้อความใหม่จาก %1", "new-messages-from": "%1 ข้อความใหม่จาก %2", - "new-message-in": "New message in %1", - "new-messages-in": "%1 new messages in %2", - "user-posted-in-public-room": "%1 wrote in %3", - "user-posted-in-public-room-dual": "%1 and %2 wrote in %4", - "user-posted-in-public-room-triple": "%1, %2 and %3 wrote in %5", - "user-posted-in-public-room-multiple": "%1, %2 and %3 others wrote in %5", + "new-message-in": "ข้อความใหม่ใน %1", + "new-messages-in": "%1 ข้อความใหม่ใน %2", + "user-posted-in-public-room": "%1 ได้เขียนลงใน %3", + "user-posted-in-public-room-dual": "%1 และ %2 ได้เขียนลงใน %4", + "user-posted-in-public-room-triple": "%1, %2 และ %3 ได้เขียนลงใน %5", + "user-posted-in-public-room-multiple": "%1, %2 และอีก %3 คน ได้เขียนลงใน %5", "upvoted-your-post-in": "%1 ได้โหวตโพสต์ของคุณขึ้นใน %2", "upvoted-your-post-in-dual": "%1 และ %2ได้โหวตโพสต์ของคุณขึ้นใน %3", - "upvoted-your-post-in-triple": "%1, %2 and %3 have upvoted your post in %4.", - "upvoted-your-post-in-multiple": "%1, %2 and %3 others have upvoted your post in %4.", + "upvoted-your-post-in-triple": "%1, %2 และ %3 ได้โหวตโพสต์ของคุณขึ้นใน %4.", + "upvoted-your-post-in-multiple": "%1, %2 และอีก %3 คน ได้โหวตโพสต์ของคุณขึ้นใน %4.", "moved-your-post": "%1 ได้ย้ายโพสต์ของคุณไปยัง %2", "moved-your-topic": "%1 ได้ย้าย %2", "user-flagged-post-in": "%1 ได้รายงานโพสต์ใน %2", @@ -46,46 +46,46 @@ "user-flagged-user-dual": "%1และ%2ได้รายงานโปรไฟล์ผู้ใช้ (%3)", "user-flagged-user-triple": "%1, %2 และ %3 ได้รายงานโปรไฟล์ผู้ใช้ (%4)", "user-flagged-user-multiple": "%1, %2 และอีก %3 คนได้รายงานโปรไฟล์ผู้ใช้ (%4)", - "user-posted-to": "%1 ได้โพสต์คำตอบไปยัง : %2", - "user-posted-to-dual": "%1และ %2ได้โพสต์คำตอบไปยัง : %3", - "user-posted-to-triple": "%1, %2 and %3 have posted replies to: %4", - "user-posted-to-multiple": "%1, %2 and %3 others have posted replies to: %4", + "user-posted-to": "%1 ได้โพสต์คำตอบไปยัง %2", + "user-posted-to-dual": "%1และ %2ได้โพสต์คำตอบไปยัง %3", + "user-posted-to-triple": "%1, %2 และ %3 ได้โพสต์คำตอบไปยัง %4", + "user-posted-to-multiple": "%1, %2 และอีก %3 คน ได้โพสต์คำตอบไปยัง %4", "user-posted-topic": "%1ได้โพสต์กระทู้ใหม่ : %2", - "user-edited-post": "%1 has edited a post in %2", - "user-posted-topic-with-tag": "%1 has posted a new topic with tag %2", - "user-posted-topic-with-tag-dual": "%1 has posted a new topic with tags %2 and %3", - "user-posted-topic-with-tag-triple": "%1 has posted a new topic with tags %2, %3 and %4", - "user-posted-topic-with-tag-multiple": "%1 has posted a new topic with tags %2", + "user-edited-post": "%1 ได้แก้ไขโพสต์ใน %2", + "user-posted-topic-with-tag": "%1 ได้โพสต์กระทู้ใหม่ที่ติดแท็ก %2", + "user-posted-topic-with-tag-dual": "%1 ได้โพสต์กระทู้ใหม่ที่ติดแท็ก %2 และ %3", + "user-posted-topic-with-tag-triple": "%1 ได้โพสต์กระทู้ใหม่ที่ติดแท็ก %2, %3 และ %4", + "user-posted-topic-with-tag-multiple": "%1 ได้โพสต์กระทู้ใหม่ที่ติดแท็ก %2", "user-posted-topic-in-category": "%1 ได้โพสต์กระทู้ใหม่ใน %2", "user-started-following-you": "%1 ได้เริ่มติดตามคุณ", "user-started-following-you-dual": "%1และ%2ได้เริ่มติดตามคุณ", - "user-started-following-you-triple": "%1, %2 and %3 started following you.", - "user-started-following-you-multiple": "%1, %2 and %3 others started following you.", + "user-started-following-you-triple": "%1, %2 และ %3 ได้เริ่มติดตามคุณ", + "user-started-following-you-multiple": "%1, %2 และอีก %3 คน ได้เริ่มติดตามคุณ", "new-register": "%1ได้ส่งคำขอสมัครสมาชิก", "new-register-multiple": "มี%1คำขอสมัครสมาชิกที่รอการรีวิว", "flag-assigned-to-you": "%1 รายงานได้ถูกมอบหมายให้คุณ", "post-awaiting-review": "โพสกำลังรอการพิจารณา", - "profile-exported": "%1 profile exported, click to download", - "posts-exported": "%1 posts exported, click to download", - "uploads-exported": "%1 uploads exported, click to download", - "users-csv-exported": "Users csv exported, click to download", - "post-queue-accepted": "Your queued post has been accepted. Click here to see your post.", - "post-queue-rejected": "Your queued post has been rejected.", - "post-queue-notify": "Queued post received a notification:
\"%1\"", - "email-confirmed": "Email ได้รับการยืนยันแล้ว", - "email-confirmed-message": "ขอบคุณที่ยืนยัน Email ของคุณ บัญชีของคุณสามารถใช้งานได้แล้ว", - "email-confirm-error-message": "มีปัญหาในการยืนยัน Email ของคุณ บางทีรหัสไม่ถูกต้องหรือหมดอายุแล้ว", - "email-confirm-sent": "Email เพื่อยืนยันได้ส่งไปแล้ว", + "profile-exported": "ส่งออกข้อมูลโปรไฟล์ของ %1 เสร็จแล้ว คลิกเพื่อดาวน์โหลด", + "posts-exported": "ส่งออกข้อมูลโพสต์ของ %1 เสร็จแล้ว คลิกเพื่อดาวน์โหลด", + "uploads-exported": "ส่งออกข้อมูลอัปโหลดของ %1 เสร็จแล้ว คลิกเพื่อดาวน์โหลด", + "users-csv-exported": "ส่งออกข้อมูล csv ของผู้ใช้งานเสร็จแล้ว คลิกเพื่อดาวน์โหลด", + "post-queue-accepted": "โพสต์ที่รอคิวของคุณได้รับการอนุมัติแล้ว คลิกที่นี่เพื่อดูโพสต์ของคุณ", + "post-queue-rejected": "โพสต์ที่รอคิวของคุณได้รับการปฏิเสธ", + "post-queue-notify": "ได้รับแจ้งเตือนสำหรับโพสต์ที่รอคิว:
\"%1\"", + "email-confirmed": "อีเมลได้รับการยืนยันแล้ว", + "email-confirmed-message": "ขอบคุณที่ยืนยันอีเมลของคุณ บัญชีของคุณสามารถใช้งานได้แล้ว", + "email-confirm-error-message": "มีปัญหาในการยืนยันอีเมลของคุณ รหัสอาจไม่ถูกต้องหรือหมดอายุแล้ว", + "email-confirm-sent": "ส่งอีเมลยืนยันแล้ว", "none": "ไม่มี", "notification-only": "แจ้งเตือนอย่างเดียว", "email-only": "อีเมลอย่างเดียว", "notification-and-email": "การแจ้งเตือนและอีเมล", "notificationType-upvote": "เมื่อมีคนโหวตอัพให้โพสต์คุณ", "notificationType-new-topic": "เมื่อมีคนติดตามโพสต์คุณ", - "notificationType-new-topic-with-tag": "When a topic is posted with a tag you follow", - "notificationType-new-topic-in-category": "เมื่อมีกระทู้ถูกโพสต์ในหมวดหมู่ที่คุณเฝ้าดู", - "notificationType-new-reply": "เมื่อมีการตอบกลับในโพสต์ที่คุณกำลังติดตาม", - "notificationType-post-edit": "When a post is edited in a topic you are watching", + "notificationType-new-topic-with-tag": "เมื่อมีกระทู้ที่โพสต์โดยใช้แท็กที่คุณติดตาม", + "notificationType-new-topic-in-category": "เมื่อมีกระทู้ถูกโพสต์ในหมวดหมู่ที่คุณกำลังเฝ้าดู", + "notificationType-new-reply": "เมื่อมีการตอบกลับในโพสต์ที่คุณกำลังเฝ้าดู", + "notificationType-post-edit": "เมื่อโพสต์ถูกแก้ไขในกระทู้ที่คุณกำลังเฝ้าดู", "notificationType-follow": "เมื่อมีคนติดตามคุณ", "notificationType-new-chat": "เมื่อคุณได้รับข้อความใหม่", "notificationType-new-group-chat": "เมื่อคุณได้รับข้อความแชทแบบกลุ่ม", diff --git a/public/language/th/post-queue.json b/public/language/th/post-queue.json index 830f0a22f6..8a36b983a1 100644 --- a/public/language/th/post-queue.json +++ b/public/language/th/post-queue.json @@ -3,10 +3,10 @@ "post-queue": "คิวการโพสต์", "no-queued-posts": "ไม่มีโพสต์อยู่ในคิว", "no-single-post": "กระทู้หรือโพสต์ที่คุณกำลังมองหาไม่ได้อยู่ในคิวอีกแล้ว ซึ่งน่าจะได้รับการอนุมัติหรือลบไปแล้ว", - "enabling-help": "The post queue is currently disabled. To enable this feature, go to Settings → Post → Post Queue and enable Post Queue.", + "enabling-help": "คิวการโพสต์ตอนนี้ไม่ได้เปิดใช้งาน ถ้าต้องการเปิดใช้งานความสามารถนี้ ไปที่ตั้งค่า → โพสต์ → คิวการโพสต์ และเปิดใช้งานคิวการโพสต์", "back-to-list": "กลับไปยังคิวการโพสต์", - "public-intro": "If you have any queued posts, they will be shown here.", - "public-description": "This forum is configured to automatically queue posts from new accounts, pending moderator approval.
If you have queued posts awaiting approval, you will be able to see them here.", + "public-intro": "ถ้าคุณมีโพสต์ที่กำลังรอคิว โพสต์เหล่านั้นจะปรากฏตรงนี้", + "public-description": "ฟอรัมนี้ถูกตั้งค่าให้โพสต์จากบัญชีใหม่ต้องเข้าคิวรอการอนุมัติโดยผู้ดูแล
ถ้าคุณมีโพสต์ที่กำลังรอคิวอนุมัติ ก็จะเห็นได้จากตรงนี้", "user": "ผู้ใช้งาน", "when": "เมื่อ", "category": "หมวดหมู่", diff --git a/public/language/th/recent.json b/public/language/th/recent.json index 8c4638cffa..8cc9ae294b 100644 --- a/public/language/th/recent.json +++ b/public/language/th/recent.json @@ -7,5 +7,5 @@ "alltime": "ตลอดกาล", "no-recent-topics": "ไม่มีกระทู้ล่าสุด", "no-popular-topics": "ไม่มีกระทู้ฮิต", - "load-new-posts": "Load new posts" + "load-new-posts": "โหลดโพสต์ใหม่" } \ No newline at end of file diff --git a/public/language/th/register.json b/public/language/th/register.json index fa5eb00a42..e85ba4fc11 100644 --- a/public/language/th/register.json +++ b/public/language/th/register.json @@ -1,9 +1,9 @@ { "register": "ลงทะเบียน", - "already-have-account": "Already have an account?", + "already-have-account": "มีบัญชีอยู่แล้วหรือยัง?", "cancel-registration": "ยกเลิกการสมัคร", "help.email": "ผู้ใช้อื่น ๆ จะไม่สามารถมองเห็นอีเมลของคุณโดยดีฟอลต์", - "help.username-restrictions": "ชื่อผู้ใช้ที่ไม่ซ้ำกับผู้อื่น จะต้องมีความยาวระหว่าง% %1 และ %2 ตัวอักษร ผู้ใช้อื่นๆ สามารถพูดถึงคุณโดย @ชื่อผู้ใช้", + "help.username-restrictions": "ชื่อผู้ใช้ที่ไม่ซ้ำกับผู้อื่น จะต้องมีความยาวระหว่าง% %1 และ %2 ตัวอักษร ผู้ใช้อื่นๆ สามารถพูดถึงคุณโดย @ชื่อผู้ใช้", "help.minimum-password-length": "ความยาวรหัสผ่านของคุณต้องมีอย่างน้อย %1 ตัวอักษร", "email-address": "อีเมล์", "email-address-placeholder": "ใส่อีเมล์", @@ -19,15 +19,15 @@ "agree-to-terms-of-use": "ยอมรับข้อตกลงในการใช้งาน", "terms-of-use-error": "คุณต้องยอมรับเงื่อนไขการใช้งานก่อน", "registration-added-to-queue": "การสมัครใช้งานของถูกเพิ่มเข้าไปยังระบบเพิ่อรอการอนุมัติแล้ว คุณจะได้รับอีเมล์เมื่อการสมัครใช้งานของคุณถูกยอมรับโดยผู้ดูแลระบบหรือแอดมิน", - "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.", - "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.", - "interstitial.intro": "We'd like some additional information in order to update your account…", - "interstitial.intro-new": "We'd like some additional information before we can create your account…", - "interstitial.errors-found": "Please review the entered information:", - "gdpr-agree-data": "I consent to the collection and processing of my personal information on this website.", - "gdpr-agree-email": "I consent to receive digest and notification emails from this website.", - "gdpr-consent-denied": "You must give consent to this site to collect/process your information, and to send you emails.", - "invite.error-admin-only": "Direct user registration has been disabled. Please contact an administrator for more details.", + "registration-queue-average-time": "เวลาเฉลี่ยสำหรับการอนุมัติการสมัครคือ %1 ชั่วโมง %2 นาที", + "registration-queue-auto-approve-time": "ความเป็นสมาชิกฟอรัมนี้ของคุณจะสมบูรณ์ในอีก %1 ชั่วโมง", + "interstitial.intro": "เราอยากได้ข้อมูลเพิ่มเติมเพื่อปรับปรุงบัญชีของคุณ…", + "interstitial.intro-new": "เราอยากได้ข้อมูลเพิ่มเติมก่อนที่จะสร้างบัญชีของคุณ…", + "interstitial.errors-found": "โปรดตรวจสอบข้อมูลที่ใส่:", + "gdpr-agree-data": "ฉันยินยอมให้มีการเก็บรวบรวมและประมวลผลข้อมูลส่วนบุคคลของฉันในเว็บนี้", + "gdpr-agree-email": "ฉันยินยอมที่จะรับอีเมลสรุปเนื้อหาและการแจ้งเตือนจากเว็บนี้", + "gdpr-consent-denied": "คุณต้องยินยอมให้เว็บนี้สามารถเก็บรวบรวม/ประมวลผลข้อมูลของคุณ และส่งอีเมลให้คุณ\n", + "invite.error-admin-only": "การสมัครสมาชิกโดยตรงไม่ถูกเปิดใช้งาน กรุณาติดต่อกับผู้ดูแลระบบสำหรับข้อมูลเพิ่มเติม", "invite.error-invite-only": "Direct user registration has been disabled. You must be invited by an existing user in order to access this forum.", "invite.error-invalid-data": "The registration data received does not correspond to our records. Please contact an administrator for more details" } \ No newline at end of file diff --git a/public/language/th/search.json b/public/language/th/search.json index eef81df44c..3474c80771 100644 --- a/public/language/th/search.json +++ b/public/language/th/search.json @@ -1,6 +1,6 @@ { "type-to-search": "พิมพ์เพื่อค้นหา", - "results-matching": "%1 ผลลัพธ์ ตรงตามที่ระบุ \"%2\" (%3 วินาที)", + "results-matching": "ผลลัพธ์ %1 รายการตรงตามที่ระบุ \"%2\" (%3 วินาที)", "no-matches": "ไม่พบผลลัพธ์ที่สอดคล้อง", "advanced-search": "การค้นหาแบบละเอียด", "in": "ใน", diff --git a/public/language/th/themes/harmony.json b/public/language/th/themes/harmony.json index 4e75b9f716..ad25121e17 100644 --- a/public/language/th/themes/harmony.json +++ b/public/language/th/themes/harmony.json @@ -1,19 +1,19 @@ { - "theme-name": "Harmony Theme", - "skins": "Skins", - "collapse": "Collapse", - "expand": "Expand", - "sidebar-toggle": "Sidebar Toggle", - "login-register-to-search": "Login or register to search.", - "settings.title": "Theme settings", - "settings.enableQuickReply": "Enable quick reply", - "settings.enableBreadcrumbs": "Enable breadcrumbs", - "settings.centerHeaderElements": "Center header elements", - "settings.mobileTopicTeasers": "Show topic teasers on mobile", - "settings.stickyToolbar": "Sticky toolbar", - "settings.stickyToolbar.help": "The toolbar on topic and category pages will stick to the top of the page", - "settings.autohideBottombar": "Auto hide bottom bar", - "settings.autohideBottombar.help": "The bottom bar on mobile view will be hidden when the page is scrolled down", - "settings.openSidebars": "Open sidebars", - "settings.chatModals": "Enable chat modals" + "theme-name": "ธีม Harmony", + "skins": "สกิน", + "collapse": "ย่อ", + "expand": "ขยาย", + "sidebar-toggle": "สลับตำแหน่งแถบข้าง", + "login-register-to-search": "เข้าสู่ระบบหรือสมัครบัญชีเพื่อค้นหา", + "settings.title": "การตั้งค่าธีม", + "settings.enableQuickReply": "เปิดใช้งานการตอบกลับทันที", + "settings.enableBreadcrumbs": "เปิดใช้งานแถบนำทาง", + "settings.centerHeaderElements": "ทำให้ข้อความส่วนหัวอยู่ตรงกลาง", + "settings.mobileTopicTeasers": "แสดงตัวอย่างเนื้อหากระทู้บนมือถือ", + "settings.stickyToolbar": "แถบเครื่องมือแบบ sticky", + "settings.stickyToolbar.help": "แถบเครื่องมือในหน้ากระทู้และหมวดหมู่จะอยู่ด้านบนสุดของหน้าเสมอ", + "settings.autohideBottombar": "ซ่อนแถบล่าง", + "settings.autohideBottombar.help": "แถบล่างบนมือถือจะถูกซ่อนเมื่อเลื่อนหน้าลง", + "settings.openSidebars": "เปิดแถบข้าง", + "settings.chatModals": "เปิดใช้งานหน้าต่างแชท" } \ No newline at end of file diff --git a/public/language/th/themes/persona.json b/public/language/th/themes/persona.json index e7d1945303..11e98dd070 100644 --- a/public/language/th/themes/persona.json +++ b/public/language/th/themes/persona.json @@ -1,10 +1,10 @@ { - "settings.title": "Theme settings", - "settings.intro": "You can customise your theme settings here. Settings are stored on a per-device basis, so you are able to have different settings on different devices (phone, tablet, desktop, etc.)", - "settings.mobile-menu-side": "Switch which side each mobile menu is on", - "settings.autoHidingNavbar": "Automatically hide the navbar on scroll", - "settings.autoHidingNavbar-xs": "Very small screens (e.g. phones in portrait mode)", - "settings.autoHidingNavbar-sm": "Smaller screens (e.g. phones, some tablets)", - "settings.autoHidingNavbar-md": "Medium sized screens (e.g. tablets in landscape mode)", - "settings.autoHidingNavbar-lg": "Larger screens (e.g. desktop computers)" + "settings.title": "การตั้งค่าธีม", + "settings.intro": "คุณสามารถปรับแต่งการตั้งค่าธีมที่นี่ การตั้งค่าจะเก็บแยกแต่ละอุปกรณ์ ดังนั้นคุณสามารถมีการตั้งค่าที่แตกต่างกันบนอุปกรณ์คนละตัว (มือถือ แทปเล็ต เดสก์ท็อป ฯลฯ)", + "settings.mobile-menu-side": "สลับว่าเมนูบนมือถืออยู่ด้านไหน", + "settings.autoHidingNavbar": "ซ่อนแถบนำทางอัตโนมัติขณะเลื่อนดู", + "settings.autoHidingNavbar-xs": "จอขนาดเล็กมาก (มือถือดูในแนวตั้ง)", + "settings.autoHidingNavbar-sm": "จอขนาดเล็ก (เช่น มือถือ แท็บเล็ตบางเครื่อง)", + "settings.autoHidingNavbar-md": "จอขนาดกลาง (เช่น แท็บเล็ตเมื่อดูในแนวนอน)", + "settings.autoHidingNavbar-lg": "จอขนาดใหญ่ (เช่น คอมพิวเตอร์เดสก์ท็อป)" } \ No newline at end of file diff --git a/public/language/th/topic.json b/public/language/th/topic.json index 7dbf109d47..bab6bbde82 100644 --- a/public/language/th/topic.json +++ b/public/language/th/topic.json @@ -7,13 +7,13 @@ "topic-is-deleted": "กระทู้นี้ถูกลบไปแล้ว!", "profile": "โปรไฟล์", "posted-by": "โพสต์โดย %1", - "posted-by-guest": "โพสต์โดย Guest", + "posted-by-guest": "โพสต์โดยแขกผู้มาเยือน", "chat": "แชท", "notify-me": "แจ้งเตือนเมื่อการตอบใหม่ในกระทู้นี้", - "quote": "คำอ้างอิง", + "quote": "อ้างถึงข้อความเดิม", "reply": "ตอบ", - "replies-to-this-post": "%1 การตอบกลับ", - "one-reply-to-this-post": "1 การตอบกลับ", + "replies-to-this-post": "ตอบกลับ %1 ครั้ง", + "one-reply-to-this-post": "ตอบกลับ 1 ครั้ง", "last-reply-time": "คำตอบล่าสุด", "reply-options": "ตัวเลือกการตอบ", "reply-as-topic": "ตอบโดยตั้งกระทู้ใหม่", diff --git a/public/language/th/user.json b/public/language/th/user.json index 3aed3eea04..d8a2195048 100644 --- a/public/language/th/user.json +++ b/public/language/th/user.json @@ -177,39 +177,39 @@ "info.muted-no-reason": "ไม่ได้ให้เหตุผลไว้", "info.username-history": "ประวัติผู้ใช้", "info.email-history": "ประวัติอีเมล์", - "info.moderation-note": "โน๊ตของ Moderation", - "info.moderation-note.success": "โน้ตของ Moderation ถูกบันทึกแล้ว", + "info.moderation-note": "โน๊ตของผู้ควบคุม", + "info.moderation-note.success": "โน๊ตของผู้ควบคุมถูกบันทึกแล้ว", "info.moderation-note.add": "เพิ่มโน้ต", "sessions.description": "หน้านี้ให้คุณสามารถดูเชสชันปัจจุบันในฟอรั่มนี้ และเพิกถอนเซสชันถ้าจำเป็น คุณสามารถเพิกถอนเซสชันของคุณเองโดยการออกจากระบบ", "revoke-session": "เพิกถอนเซสชัน", "browser-version-on-platform": "%1 %2 บน %3", - "consent.title": "Your Rights & Consent", - "consent.lead": "This community forum collects and processes your personal information.", - "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", - "consent.email-intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", - "consent.digest-frequency": "Unless explicitly changed in your user settings, this community delivers email digests every %1.", - "consent.digest-off": "Unless explicitly changed in your user settings, this community does not send out email digests", - "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", - "consent.not-received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", - "consent.give": "Give consent", - "consent.right-of-access": "You have the Right of Access", - "consent.right-of-access-description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", - "consent.right-to-rectification": "You have the Right to Rectification", - "consent.right-to-rectification-description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", - "consent.right-to-erasure": "You have the Right to Erasure", - "consent.right-to-erasure-description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", - "consent.right-to-data-portability": "You have the Right to Data Portability", - "consent.right-to-data-portability-description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", - "consent.export-profile": "Export Profile (.json)", - "consent.export-profile-success": "Exporting profile, you will get a notification when it is complete.", - "consent.export-uploads": "Export Uploaded Content (.zip)", - "consent.export-uploads-success": "Exporting uploads, you will get a notification when it is complete.", - "consent.export-posts": "Export Posts (.csv)", - "consent.export-posts-success": "Exporting posts, you will get a notification when it is complete.", - "emailUpdate.intro": "Please enter your email address below. This forum uses your email address for scheduled digest and notifications, as well as for account recovery in the event of a lost password.", - "emailUpdate.optional": "This field is optional. You are not obligated to provide your email address, but without a validated email you will not be able to recover your account or login with your email.", - "emailUpdate.required": "This field is required.", - "emailUpdate.change-instructions": "A confirmation email will be sent to the entered email address with a unique link. Accessing that link will confirm your ownership of the email address and it will become active on your account. At any time, you are able to update your email on file from within your account page.", - "emailUpdate.password-challenge": "Please enter your password in order to verify account ownership.", - "emailUpdate.pending": "Your email address has not yet been confirmed, but an email has been sent out requesting confirmation. If you wish to invalidate that request and send a new confirmation request, please fill in the form below." + "consent.title": "สิทธิ์และความยินยอมของคุณ", + "consent.lead": "ฟอรัมนี้รวบรวมและประมวลผลข้อมูลส่วนบุคคลของคุณ", + "consent.intro": "เราใช้ข้อมูลนี้เพื่อให้คุณได้รับประสบการณ์ที่ปรับเข้ากับคุณในชุมชนนี้ และเชื่อมต่อการโพสต์ของคุณกับบัญชีคุณ ระหว่างขั้นตอนการลงทะเบียนเราจะขอให้คุณให้ข้อมูล ชื่อผู้ใช้งาน และที่อยู่อีเมล คุณยังสามารถใส่ข้อมูลเพิ่มเติมเพื่อทำให้โปรไฟล์ของคุณบนเว็บนี้สมบูรณ์

เราเก็บข้อมูลเหล่านี้ตลอดอายุบัญชีของคุณ และคุณสามารถเพิกถอนความยินยอมเมื่อใดก็ได้โดยการลบบัญชีของคุณ คุณยังสามารถคัดลอกข้อมูลที่คุณมีส่วนร่วมที่เว็บนี้เมื่อใดก็ได้ผ่านทางหน้า สิทธิ์และความยินยอมของคุณ

ถ้าคุณมีคำถามหรือข้อกังวล เราแนะนำให้คุณติดต่อกับทีมผู้ดูแลฟอรัมนี้", + "consent.email-intro": "เราอาจส่งอีเมลเป็นครั้งคราวไปยังที่อยู่อีเมลที่ลงทะเบียนไว้ของคุณเพื่ออัพเดทข่าวสารหรือแจ้งเตือนกิจกรรมใหม่ที่เกี่ยวข้องกับคุณ คุณสามารถปรับแต่งความถี่การส่งเนื้อสรุป (รวมถึงปิดการทำงาน) รวมถึงประเภทของข้อมูลที่จะส่งทางอีเมล ผ่านทางหน้าการตั้งค่าผู้ใช้ของคุณ", + "consent.digest-frequency": "ถ้าคุณไม่ได้เปลี่ยนการตั่งค่าผู้ใช้งานของคุณ ชุมชนนี้ส่งอีเมลสรุปทุกๆ %1", + "consent.digest-off": "ถ้าคุณไม่ได้เปลี่ยนการตั่งค่าผู้ใช้งานของคุณ ชุมชนนี้จะไม่ส่งอีเมลข้อมูลสรุป", + "consent.received": "คุณได้ให้ความยินยอมแก่เว็บนี้ให้เก็บและประมวลผลข้อมูลของคุณ​แล้ว ไม่มีเรื่องอื่นที่ต้องทำอีก", + "consent.not-received": "คุณยังไม่ให้ความยินยอมในการเก็บและประมวลผลข้อมูล ผู้ดูแลเว็บนี้อาจเลือกที่จะลบบัญชีของคุณเมื่อใดก็ได้เพื่อให้เป็นไปตามกฎหมายคุ้มครองข้อมูลส่วนบุคคล", + "consent.give": "ให้ความยินยอม", + "consent.right-of-access": "คุณมีสิทธิ์ในการเข้าถึงข้อมูล", + "consent.right-of-access-description": "คุณมีสิทธิ์ในการเข้าถึงข้อมูลใดๆที่เก็บรวบรวมโดยเว็บนี้ คุณสามารถคัดลอกข้อมูลนี้โดยการกดที่ปุ่มที่เกี่ยวข้องด้านล่าง", + "consent.right-to-rectification": "คุณมีสิทธิ์ในการแก้ไขให้ถูกต้อง", + "consent.right-to-rectification-description": "คุณมีสิทธิ์ในการแก้ไขหรือปรับปรุงข้อมูลผิดพลาดที่คุณส่งให้แก่เรา โปรไฟล์ของคุณสามารถปรับปรุงได้โดยการแก้ไขโปรไฟล์ของคุณ เนื้อหาที่โพสต์สามารถแก้ไขได้เสมอ ถ้าไม่เป็นเช่นนั้น โปรดติดต่อกับทีมดูแลเว็บนี้", + "consent.right-to-erasure": "คุณมีสิทธิ์ในการลบข้อมูล", + "consent.right-to-erasure-description": "คุณสามารถเพิกถอนความยินยอมในการเก็บรวบรวมและ/หรือการประมวลผลข้อมูลในเวลาใดๆโดยการลบบัญชีของคุณ โปรไฟล์ส่วนบุคคลของคุณสามารถถูกลบได้ แต่เนื้อหาที่คุณโพสต์ยังคงอยู่ ถ้าคุณต้องการลบทั้งบัญชีของคุณและเนื้อหาของคุณ​โปรดติดต่อทีมดูแลเว็บนี้", + "consent.right-to-data-portability": "คุณมีสิทธ์ในการโอนย้ายข้อมูล", + "consent.right-to-data-portability-description": "คุณสามารถขอข้อมูลที่เก็บรวบรวมเกี่ยวกับคุณและบัญชีของคุณในรูปแบบที่เครื่องเข้าใจได้ คุณสามารถทำได้โดยการกดปุ่มที่เกี่ยวข้องข้างล่าง", + "consent.export-profile": "ส่งออกโปรไฟล์ (.json)", + "consent.export-profile-success": "กำลังส่งออกโปรไฟล์ คุณจะได้รับการแจ้งเตือมเมื่อทำงานเสร็จสิ้น", + "consent.export-uploads": "ส่งออกเนื้อหาที่อัปโหลด (.zip)", + "consent.export-uploads-success": "กำลังส่งออกอัปโหลด คุณจะได้รับการแจ้งเตือมเมื่อทำงานเสร็จสิ้น", + "consent.export-posts": "ส่งออกโพสต์ (.csv)", + "consent.export-posts-success": "กำลังส่งออกโพสต์ คุณจะได้รับการแจ้งเตือมเมื่อทำงานเสร็จสิ้น", + "emailUpdate.intro": "โปรดใส่ที่อยู่อีเมลของคุณด้านล่าง ฟอรัมนี้ใช้อีเมลของคุณเพื่อส่งสรุปเนื้อหาและการแจ้งเตือน ตลอดจนการกู้บัญชีกรณีที่ลืมรหัสผ่าน", + "emailUpdate.optional": "ข้อมูลนี้ไม่จำเป็น คุณไม่ถูกบังคับให้ใส่อีเมลของคุณ แต่ถ้าไม่มีอีเมลที่ถูกต้องคุณจะไม่สามารถกู้บัญชีของคุณหรือเข้าสู่ระบด้วยอีเมลของคุณ", + "emailUpdate.required": "ข้อมูลนี้จำเป็น", + "emailUpdate.change-instructions": "อีเมลยืนยันจะถูกส่งไปยังที่อยู่อีเมลพร้อมกับลิงก์เฉพาะ การเปิดลิงก์นั้นจะเป็นการยืนยันความเป็นเจ้าของที่อยู่อีเมลของคุณ และเปิดการใช้งานในบัญชีของคุณ คุณสามารถเปลี่ยนแปลงอีเมลที่บันทึกไว้เมื่อใดก็ได้จากหน้าบัญชีของคุณ", + "emailUpdate.password-challenge": "โปรดป้อนรหัสผ่านเพื่อยืนยันความเป็นเจ้าของบัญชี", + "emailUpdate.pending": "ที่อยู่อีเมลของคุณยังไม่ได้รับการยืนยัน แต่มีการส่งอีเมลขอยืนยันออกไปแล้ว ถ้าคุณต้องการทำให้การร้องขอนั้นเป็นโมฆะและส่งการขอยืนยันใหม่ โปรดกรอกในแบบฟอร์มด้านล่าง" } \ No newline at end of file diff --git a/public/language/th/users.json b/public/language/th/users.json index 1627abde9d..e2cb57f4ea 100644 --- a/public/language/th/users.json +++ b/public/language/th/users.json @@ -9,7 +9,7 @@ "search-user-for-chat": "ค้นหาผู้ใช้เพื่อเริ่มต้นแชท", "load-more": "โหลดเพิ่มเติม", "users-found-search-took": "พบผู้ใช้ %1 คน! การค้นหาใช้เวลาทั้งหมด %2 วินาที", - "filter-by": "การกรอง", + "filter-by": "กรองโดย", "online-only": "กำลังออนไลน์เท่านั้น", "invite": "เชิญ", "prompt-email": "อีเมล:", From d85aae38c3ae3c45d8678086adb11280c49df9ce Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Mon, 22 Apr 2024 09:19:30 +0000 Subject: [PATCH 101/168] Latest translations and fallbacks --- public/language/th/ip-blacklist.json | 2 +- public/language/th/post-queue.json | 2 +- public/language/th/register.json | 24 ++++++++++++------------ public/language/th/user.json | 6 +++--- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/public/language/th/ip-blacklist.json b/public/language/th/ip-blacklist.json index 3a38f15c54..5534a9ab7b 100644 --- a/public/language/th/ip-blacklist.json +++ b/public/language/th/ip-blacklist.json @@ -1,6 +1,6 @@ { "lead": "ตั้งค่าการขึ้นบัญชีดำ IP ที่นี่", - "description": "บางครั้งการแบนผู้ใช้งานยังไม่เพียงพอ การจำกัดการเข้าถึงฟอรัมจาก IP หรือช่วงของ IP ที่ระบุเป็นวิธีที่ดีที่สุดที่ใช้ป้องกันฟอรัม ในสถานการณ์นี้ คุณสามารถเพิ่ม IP หรือบล็อก CIDR ที่เป็นปัญหาลงในบัญชีดำนี้ แล้วพวกเขาจะไม่สามารถสมัครบัญชีใหม่หรือเข้าสู่ระบบได้", + "description": "บางครั้งการแบนผู้ใช้งานยังไม่เพียงพอ การจำกัดการเข้าถึงฟอรั่มจาก IP หรือช่วงของ IP ที่ระบุเป็นวิธีที่ดีที่สุดที่ใช้ป้องกันฟอรั่ม ในสถานการณ์นี้ คุณสามารถเพิ่ม IP หรือบล็อก CIDR ที่เป็นปัญหาลงในบัญชีดำนี้ แล้วพวกเขาจะไม่สามารถสมัครบัญชีใหม่หรือเข้าสู่ระบบได้", "active-rules": "กฎที่กำลังใช้งาน", "validate": "ตรวจสอบความถูกต้อง", "apply": "นำไปใช้งาน", diff --git a/public/language/th/post-queue.json b/public/language/th/post-queue.json index 8a36b983a1..117c166ffa 100644 --- a/public/language/th/post-queue.json +++ b/public/language/th/post-queue.json @@ -6,7 +6,7 @@ "enabling-help": "คิวการโพสต์ตอนนี้ไม่ได้เปิดใช้งาน ถ้าต้องการเปิดใช้งานความสามารถนี้ ไปที่ตั้งค่า → โพสต์ → คิวการโพสต์ และเปิดใช้งานคิวการโพสต์", "back-to-list": "กลับไปยังคิวการโพสต์", "public-intro": "ถ้าคุณมีโพสต์ที่กำลังรอคิว โพสต์เหล่านั้นจะปรากฏตรงนี้", - "public-description": "ฟอรัมนี้ถูกตั้งค่าให้โพสต์จากบัญชีใหม่ต้องเข้าคิวรอการอนุมัติโดยผู้ดูแล
ถ้าคุณมีโพสต์ที่กำลังรอคิวอนุมัติ ก็จะเห็นได้จากตรงนี้", + "public-description": "ฟอรั่มนี้ถูกตั้งค่าให้โพสต์จากบัญชีใหม่ต้องเข้าคิวรอการอนุมัติโดยผู้ดูแล
ถ้าคุณมีโพสต์ที่กำลังรอคิวอนุมัติ ก็จะเห็นได้จากตรงนี้", "user": "ผู้ใช้งาน", "when": "เมื่อ", "category": "หมวดหมู่", diff --git a/public/language/th/register.json b/public/language/th/register.json index e85ba4fc11..93c52bb1dd 100644 --- a/public/language/th/register.json +++ b/public/language/th/register.json @@ -2,9 +2,9 @@ "register": "ลงทะเบียน", "already-have-account": "มีบัญชีอยู่แล้วหรือยัง?", "cancel-registration": "ยกเลิกการสมัคร", - "help.email": "ผู้ใช้อื่น ๆ จะไม่สามารถมองเห็นอีเมลของคุณโดยดีฟอลต์", - "help.username-restrictions": "ชื่อผู้ใช้ที่ไม่ซ้ำกับผู้อื่น จะต้องมีความยาวระหว่าง% %1 และ %2 ตัวอักษร ผู้ใช้อื่นๆ สามารถพูดถึงคุณโดย @ชื่อผู้ใช้", - "help.minimum-password-length": "ความยาวรหัสผ่านของคุณต้องมีอย่างน้อย %1 ตัวอักษร", + "help.email": "ตามค่าเริ่มต้นของผู้ใช้ ผู้ใช้อื่นๆ จะไม่สามารถมองเห็นอีเมลของคุณ", + "help.username-restrictions": "ชื่อผู้ใช้ที่ไม่ซ้ำกับผู้อื่น และยาวระหว่าง %1 และ %2 ตัวอักษร ผู้ใช้อื่นๆ สามารถกล่าวถึงคุณโดยใช้ @ชื่อผู้ใช้", + "help.minimum-password-length": "รหัสผ่านของคุณต้องยาวอย่างน้อย %1 ตัวอักษร", "email-address": "อีเมล์", "email-address-placeholder": "ใส่อีเมล์", "username": "ชื่อผู้ใช้", @@ -13,21 +13,21 @@ "password-placeholder": "ใส่รหัสผ่าน", "confirm-password": "ยืนยันรหัสผ่าน", "confirm-password-placeholder": "ยืนยันรหัสผ่าน", - "register-now-button": "ลงทะเบียน", - "alternative-registration": "เข้าสู่ระบบโดยทางอื่น", - "terms-of-use": "เงื่อนไขการใช้งาน", + "register-now-button": "สมัครสมาชิก", + "alternative-registration": "สมัครสมาชิกโดยทางอื่น", + "terms-of-use": "ข้อตกลงการใช้งาน", "agree-to-terms-of-use": "ยอมรับข้อตกลงในการใช้งาน", - "terms-of-use-error": "คุณต้องยอมรับเงื่อนไขการใช้งานก่อน", + "terms-of-use-error": "คุณต้องยอมรับข้อตกลงการใช้งานก่อน", "registration-added-to-queue": "การสมัครใช้งานของถูกเพิ่มเข้าไปยังระบบเพิ่อรอการอนุมัติแล้ว คุณจะได้รับอีเมล์เมื่อการสมัครใช้งานของคุณถูกยอมรับโดยผู้ดูแลระบบหรือแอดมิน", - "registration-queue-average-time": "เวลาเฉลี่ยสำหรับการอนุมัติการสมัครคือ %1 ชั่วโมง %2 นาที", - "registration-queue-auto-approve-time": "ความเป็นสมาชิกฟอรัมนี้ของคุณจะสมบูรณ์ในอีก %1 ชั่วโมง", + "registration-queue-average-time": "เวลาเฉลี่ยที่ใช้ในการอนุมัติสมาชิกคือ %1 ชั่วโมง %2 นาที", + "registration-queue-auto-approve-time": "ความเป็นสมาชิกฟอรั่มนี้ของคุณจะสมบูรณ์ในอีก %1 ชั่วโมง", "interstitial.intro": "เราอยากได้ข้อมูลเพิ่มเติมเพื่อปรับปรุงบัญชีของคุณ…", "interstitial.intro-new": "เราอยากได้ข้อมูลเพิ่มเติมก่อนที่จะสร้างบัญชีของคุณ…", "interstitial.errors-found": "โปรดตรวจสอบข้อมูลที่ใส่:", "gdpr-agree-data": "ฉันยินยอมให้มีการเก็บรวบรวมและประมวลผลข้อมูลส่วนบุคคลของฉันในเว็บนี้", "gdpr-agree-email": "ฉันยินยอมที่จะรับอีเมลสรุปเนื้อหาและการแจ้งเตือนจากเว็บนี้", - "gdpr-consent-denied": "คุณต้องยินยอมให้เว็บนี้สามารถเก็บรวบรวม/ประมวลผลข้อมูลของคุณ และส่งอีเมลให้คุณ\n", + "gdpr-consent-denied": "คุณต้องยินยอมให้เว็บนี้สามารถเก็บรวบรวม/ประมวลผลข้อมูลของคุณ และส่งอีเมลให้คุณ", "invite.error-admin-only": "การสมัครสมาชิกโดยตรงไม่ถูกเปิดใช้งาน กรุณาติดต่อกับผู้ดูแลระบบสำหรับข้อมูลเพิ่มเติม", - "invite.error-invite-only": "Direct user registration has been disabled. You must be invited by an existing user in order to access this forum.", - "invite.error-invalid-data": "The registration data received does not correspond to our records. Please contact an administrator for more details" + "invite.error-invite-only": "การสมัครสมาชิกโดยตรงไม่ถูกเปิดใช้งาน คุณต้องได้รับเชิญจากผู้ใช้งานอื่นที่มีอยู่เพื่อเข้าถึงฟอรั่มนี้", + "invite.error-invalid-data": "ข้อมูลการลงทะเบียนที่ได้รับไม่ตรงกับบันทึกของเรา กรุณาติดต่อผู้ดูแลระบบสำหรับข้อมูลเพิ่มเติม" } \ No newline at end of file diff --git a/public/language/th/user.json b/public/language/th/user.json index d8a2195048..87541bf08e 100644 --- a/public/language/th/user.json +++ b/public/language/th/user.json @@ -184,8 +184,8 @@ "revoke-session": "เพิกถอนเซสชัน", "browser-version-on-platform": "%1 %2 บน %3", "consent.title": "สิทธิ์และความยินยอมของคุณ", - "consent.lead": "ฟอรัมนี้รวบรวมและประมวลผลข้อมูลส่วนบุคคลของคุณ", - "consent.intro": "เราใช้ข้อมูลนี้เพื่อให้คุณได้รับประสบการณ์ที่ปรับเข้ากับคุณในชุมชนนี้ และเชื่อมต่อการโพสต์ของคุณกับบัญชีคุณ ระหว่างขั้นตอนการลงทะเบียนเราจะขอให้คุณให้ข้อมูล ชื่อผู้ใช้งาน และที่อยู่อีเมล คุณยังสามารถใส่ข้อมูลเพิ่มเติมเพื่อทำให้โปรไฟล์ของคุณบนเว็บนี้สมบูรณ์

เราเก็บข้อมูลเหล่านี้ตลอดอายุบัญชีของคุณ และคุณสามารถเพิกถอนความยินยอมเมื่อใดก็ได้โดยการลบบัญชีของคุณ คุณยังสามารถคัดลอกข้อมูลที่คุณมีส่วนร่วมที่เว็บนี้เมื่อใดก็ได้ผ่านทางหน้า สิทธิ์และความยินยอมของคุณ

ถ้าคุณมีคำถามหรือข้อกังวล เราแนะนำให้คุณติดต่อกับทีมผู้ดูแลฟอรัมนี้", + "consent.lead": "ฟอรั่มนี้รวบรวมและประมวลผลข้อมูลส่วนบุคคลของคุณ", + "consent.intro": "เราใช้ข้อมูลนี้เพื่อให้คุณได้รับประสบการณ์ที่ปรับเข้ากับคุณในชุมชนนี้ และเชื่อมต่อการโพสต์ของคุณกับบัญชีคุณ ระหว่างขั้นตอนการลงทะเบียนเราจะขอให้คุณให้ข้อมูล ชื่อผู้ใช้งาน และที่อยู่อีเมล คุณยังสามารถใส่ข้อมูลเพิ่มเติมเพื่อทำให้โปรไฟล์ของคุณบนเว็บนี้สมบูรณ์

เราเก็บข้อมูลเหล่านี้ตลอดอายุบัญชีของคุณ และคุณสามารถเพิกถอนความยินยอมเมื่อใดก็ได้โดยการลบบัญชีของคุณ คุณยังสามารถคัดลอกข้อมูลที่คุณมีส่วนร่วมที่เว็บนี้เมื่อใดก็ได้ผ่านทางหน้า สิทธิ์และความยินยอมของคุณ

ถ้าคุณมีคำถามหรือข้อกังวล เราแนะนำให้คุณติดต่อกับทีมผู้ดูแลฟอรั่มนี้", "consent.email-intro": "เราอาจส่งอีเมลเป็นครั้งคราวไปยังที่อยู่อีเมลที่ลงทะเบียนไว้ของคุณเพื่ออัพเดทข่าวสารหรือแจ้งเตือนกิจกรรมใหม่ที่เกี่ยวข้องกับคุณ คุณสามารถปรับแต่งความถี่การส่งเนื้อสรุป (รวมถึงปิดการทำงาน) รวมถึงประเภทของข้อมูลที่จะส่งทางอีเมล ผ่านทางหน้าการตั้งค่าผู้ใช้ของคุณ", "consent.digest-frequency": "ถ้าคุณไม่ได้เปลี่ยนการตั่งค่าผู้ใช้งานของคุณ ชุมชนนี้ส่งอีเมลสรุปทุกๆ %1", "consent.digest-off": "ถ้าคุณไม่ได้เปลี่ยนการตั่งค่าผู้ใช้งานของคุณ ชุมชนนี้จะไม่ส่งอีเมลข้อมูลสรุป", @@ -206,7 +206,7 @@ "consent.export-uploads-success": "กำลังส่งออกอัปโหลด คุณจะได้รับการแจ้งเตือมเมื่อทำงานเสร็จสิ้น", "consent.export-posts": "ส่งออกโพสต์ (.csv)", "consent.export-posts-success": "กำลังส่งออกโพสต์ คุณจะได้รับการแจ้งเตือมเมื่อทำงานเสร็จสิ้น", - "emailUpdate.intro": "โปรดใส่ที่อยู่อีเมลของคุณด้านล่าง ฟอรัมนี้ใช้อีเมลของคุณเพื่อส่งสรุปเนื้อหาและการแจ้งเตือน ตลอดจนการกู้บัญชีกรณีที่ลืมรหัสผ่าน", + "emailUpdate.intro": "โปรดใส่ที่อยู่อีเมลของคุณด้านล่าง ฟอรั่มนี้ใช้อีเมลของคุณเพื่อส่งสรุปเนื้อหาและการแจ้งเตือน ตลอดจนการกู้บัญชีกรณีที่ลืมรหัสผ่าน", "emailUpdate.optional": "ข้อมูลนี้ไม่จำเป็น คุณไม่ถูกบังคับให้ใส่อีเมลของคุณ แต่ถ้าไม่มีอีเมลที่ถูกต้องคุณจะไม่สามารถกู้บัญชีของคุณหรือเข้าสู่ระบด้วยอีเมลของคุณ", "emailUpdate.required": "ข้อมูลนี้จำเป็น", "emailUpdate.change-instructions": "อีเมลยืนยันจะถูกส่งไปยังที่อยู่อีเมลพร้อมกับลิงก์เฉพาะ การเปิดลิงก์นั้นจะเป็นการยืนยันความเป็นเจ้าของที่อยู่อีเมลของคุณ และเปิดการใช้งานในบัญชีของคุณ คุณสามารถเปลี่ยนแปลงอีเมลที่บันทึกไว้เมื่อใดก็ได้จากหน้าบัญชีของคุณ", From ce03680f04cbb55299b69573fef4e359f60dd293 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Mon, 22 Apr 2024 10:24:28 -0400 Subject: [PATCH 102/168] fix: closes #12474, fix search dropdown on mobile for merge add remove topic buttons --- install/package.json | 4 ++-- public/src/client/topic/merge.js | 29 ++++++++++++++++++++++++++--- public/src/modules/search.js | 1 + src/views/modals/merge-topic.tpl | 27 ++++++++++++++++----------- 4 files changed, 45 insertions(+), 16 deletions(-) diff --git a/install/package.json b/install/package.json index 1787833057..1fadb0fc7c 100644 --- a/install/package.json +++ b/install/package.json @@ -103,10 +103,10 @@ "nodebb-plugin-ntfy": "1.7.4", "nodebb-plugin-spam-be-gone": "2.2.2", "nodebb-rewards-essentials": "1.0.0", - "nodebb-theme-harmony": "1.2.49", + "nodebb-theme-harmony": "1.2.50", "nodebb-theme-lavender": "7.1.8", "nodebb-theme-peace": "2.2.4", - "nodebb-theme-persona": "13.3.14", + "nodebb-theme-persona": "13.3.15", "nodebb-widget-essentials": "7.0.15", "nodemailer": "6.9.13", "nprogress": "0.2.0", diff --git a/public/src/client/topic/merge.js b/public/src/client/topic/merge.js index 1dce760c1b..a2d1131365 100644 --- a/public/src/client/topic/merge.js +++ b/public/src/client/topic/merge.js @@ -38,10 +38,22 @@ define('forum/topic/merge', ['search', 'alerts', 'api'], function (search, alert searchOptions: { in: 'titles', }, + dropdown: { + maxWidth: '400px', + maxHeight: '350px', + }, }); modal.on('click', '[data-tid]', function () { - if ($(this).attr('data-tid')) { - Merge.addTopic($(this).attr('data-tid')); + const addTid = $(this).attr('data-tid'); + if (addTid) { + Merge.addTopic(addTid); + } + return false; + }); + modal.on('click', '[data-remove-tid]', function () { + const removeTid = $(this).attr('data-remove-tid'); + if (removeTid) { + Merge.removeTopic(removeTid); } return false; }); @@ -65,6 +77,14 @@ define('forum/topic/merge', ['search', 'alerts', 'api'], function (search, alert }).catch(alerts.error); }; + Merge.removeTopic = function (tid) { + if (selectedTids[tid]) { + delete selectedTids[tid]; + } + checkButtonEnable(); + showTopicsSelected(); + }; + function onTopicClicked(ev) { if (!modal) { return; @@ -116,10 +136,13 @@ define('forum/topic/merge', ['search', 'alerts', 'api'], function (search, alert topics: topics, }, function (html) { modal.find('.topics-section').html(html.find('.topics-section').html()); - modal.find('.merge-main-topic-select').html(html.find('.merge-main-topic-select').html()); + modal.find('.merge-main-topic-select').html( + html.find('.merge-main-topic-select').html() + ); }); } else { modal.find('.topics-section').translateHtml('[[error:no-topics-selected]]'); + modal.find('.merge-main-topic-select').html(''); } } diff --git a/public/src/modules/search.js b/public/src/modules/search.js index f0550dd864..0d87e398f4 100644 --- a/public/src/modules/search.js +++ b/public/src/modules/search.js @@ -136,6 +136,7 @@ define('search', [ text.slice(start, start + 80) + (text.length - start > 80 ? '...' : '')); }); + data.dropdown = { maxWidth: '400px', maxHeight: '500px', ...options.dropdown }; app.parseAndTranslate('partials/quick-search-results', data, function (html) { if (html.length) { html.find('.timeago').timeago(); diff --git a/src/views/modals/merge-topic.tpl b/src/views/modals/merge-topic.tpl index 7b4af828a4..2fc99924f2 100644 --- a/src/views/modals/merge-topic.tpl +++ b/src/views/modals/merge-topic.tpl @@ -1,10 +1,5 @@
-
- -
+
[[topic:thread-tools.merge-topics]]
@@ -17,13 +12,23 @@
+ +

[[topic:merge-topic-list-title]]

[[topic:merge-options]] @@ -34,9 +39,9 @@

From f28923858ecd6cbbd3457d2460fae58d52280c85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Mon, 22 Apr 2024 10:58:42 -0400 Subject: [PATCH 103/168] fix: topic selection in merge if merge was started from inside the topic --- public/src/client/topic/merge.js | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/public/src/client/topic/merge.js b/public/src/client/topic/merge.js index a2d1131365..7c96f0b9e7 100644 --- a/public/src/client/topic/merge.js +++ b/public/src/client/topic/merge.js @@ -66,11 +66,7 @@ define('forum/topic/merge', ['search', 'alerts', 'api'], function (search, alert callback = callback || function () {}; api.get(`/topics/${tid}`, {}).then(function (topicData) { const title = topicData ? topicData.title : 'No title'; - if (selectedTids[tid]) { - delete selectedTids[tid]; - } else { - selectedTids[tid] = title; - } + selectedTids[tid] = title; checkButtonEnable(); showTopicsSelected(); callback(); @@ -89,8 +85,14 @@ define('forum/topic/merge', ['search', 'alerts', 'api'], function (search, alert if (!modal) { return; } - const tid = $(this).parents('[component="category/topic"]').attr('data-tid'); - Merge.addTopic(tid); + const topicEl = $(this).parents('[component="category/topic"]'); + const isSelected = topicEl.hasClass('selected'); + const tid = topicEl.attr('data-tid'); + if (isSelected) { + Merge.addTopic(tid); + } else { + Merge.removeTopic(tid); + } ev.preventDefault(); ev.stopPropagation(); From 5e7ec5b6b8e10a2dddee2a9550b8dd4002ff3eae Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 Apr 2024 11:08:35 -0400 Subject: [PATCH 104/168] fix(deps): update dependency cropperjs to v1.6.2 (#12524) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 1fadb0fc7c..ca47638483 100644 --- a/install/package.json +++ b/install/package.json @@ -59,7 +59,7 @@ "connect-redis": "7.1.1", "cookie-parser": "1.4.6", "cron": "3.1.7", - "cropperjs": "1.6.1", + "cropperjs": "1.6.2", "csrf-sync": "4.0.3", "daemon": "1.1.0", "diff": "5.2.0", From d6d0ebd592a7d6fa6cc242e03d7a1b51e9aefee6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 Apr 2024 11:08:46 -0400 Subject: [PATCH 105/168] fix(deps): update dependency ipaddr.js to v2.2.0 (#12522) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index ca47638483..cf28d4149b 100644 --- a/install/package.json +++ b/install/package.json @@ -74,7 +74,7 @@ "helmet": "7.1.0", "html-to-text": "9.0.5", "imagesloaded": "5.0.0", - "ipaddr.js": "2.1.0", + "ipaddr.js": "2.2.0", "jquery": "3.7.1", "jquery-deserialize": "2.0.0", "jquery-form": "4.3.0", From bde9136b924046805ae5d891a66f9ab3a06dfac5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 Apr 2024 11:08:55 -0400 Subject: [PATCH 106/168] fix(deps): update fontsource monorepo (#12523) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install/package.json b/install/package.json index cf28d4149b..69c030ce2f 100644 --- a/install/package.json +++ b/install/package.json @@ -29,8 +29,8 @@ }, "dependencies": { "@adactive/bootstrap-tagsinput": "0.8.2", - "@fontsource/inter": "5.0.17", - "@fontsource/poppins": "5.0.13", + "@fontsource/inter": "5.0.18", + "@fontsource/poppins": "5.0.14", "@fortawesome/fontawesome-free": "6.5.2", "@isaacs/ttlcache": "1.4.1", "@popperjs/core": "2.11.8", From 985663faae13dccd0f2cc62a5502dfc5ef351aff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Tue, 23 Apr 2024 11:16:04 -0400 Subject: [PATCH 107/168] feat: closes #12491, add unban & unmute history to account/info page --- install/package.json | 4 +- public/language/en-GB/user.json | 3 + public/src/admin/manage/users.js | 41 +++++-- public/src/modules/accounts/moderate.js | 137 +++++++++++++----------- src/api/users.js | 18 +++- src/user/bans.js | 28 +++-- src/user/data.js | 2 +- src/user/info.js | 8 +- src/views/modals/unban.tpl | 10 ++ src/views/modals/unmute.tpl | 10 ++ 10 files changed, 176 insertions(+), 85 deletions(-) create mode 100644 src/views/modals/unban.tpl create mode 100644 src/views/modals/unmute.tpl diff --git a/install/package.json b/install/package.json index 69c030ce2f..9846de45ce 100644 --- a/install/package.json +++ b/install/package.json @@ -103,10 +103,10 @@ "nodebb-plugin-ntfy": "1.7.4", "nodebb-plugin-spam-be-gone": "2.2.2", "nodebb-rewards-essentials": "1.0.0", - "nodebb-theme-harmony": "1.2.50", + "nodebb-theme-harmony": "1.2.51", "nodebb-theme-lavender": "7.1.8", "nodebb-theme-peace": "2.2.4", - "nodebb-theme-persona": "13.3.15", + "nodebb-theme-persona": "13.3.16", "nodebb-widget-essentials": "7.0.15", "nodemailer": "6.9.13", "nprogress": "0.2.0", diff --git a/public/language/en-GB/user.json b/public/language/en-GB/user.json index 1b338268bf..cd9b17cd0a 100644 --- a/public/language/en-GB/user.json +++ b/public/language/en-GB/user.json @@ -1,7 +1,9 @@ { "user-menu": "User menu", "banned": "Banned", + "unbanned": "Unbanned", "muted": "Muted", + "unmuted": "Unmuted", "offline": "Offline", "deleted": "Deleted", "username": "User Name", @@ -184,6 +186,7 @@ "info.no-ban-history": "This user has never been banned", "info.banned-until": "Banned until %1", "info.banned-expiry": "Expiry", + "info.ban-expired": "Ban expired", "info.banned-permanently": "Banned permanently", "info.banned-reason-label": "Reason", "info.banned-no-reason": "No reason given.", diff --git a/public/src/admin/manage/users.js b/public/src/admin/manage/users.js index 740a8478dc..0f8dffaa29 100644 --- a/public/src/admin/manage/users.js +++ b/public/src/admin/manage/users.js @@ -259,11 +259,11 @@ define('admin/manage/users', [ } Benchpress.render('modals/temporary-ban', {}).then(function (html) { - bootbox.dialog({ - className: 'ban-modal', + const modal = bootbox.dialog({ title: '[[user:ban-account]]', message: html, show: true, + onEscape: true, buttons: { close: { label: '[[global:close]]', @@ -272,7 +272,7 @@ define('admin/manage/users', [ submit: { label: '[[admin/manage/users:alerts.button-ban-x, ' + uids.length + ']]', callback: function () { - const formData = $('.ban-modal form').serializeArray().reduce(function (data, cur) { + const formData = modal.find('form').serializeArray().reduce(function (data, cur) { data[cur.name] = cur.value; return data; }, {}); @@ -302,10 +302,37 @@ define('admin/manage/users', [ return false; // specifically to keep the menu open } - Promise.all(uids.map(function (uid) { - return api.del('/users/' + uid + '/ban'); - })).then(() => { - onSuccess('[[admin/manage/users:alerts.unban-success]]', '.ban', false); + Benchpress.render('modals/unban', {}).then(function (html) { + const modal = bootbox.dialog({ + title: '[[user:unban-account]]', + message: html, + show: true, + onEscape: true, + buttons: { + close: { + label: '[[global:close]]', + className: 'btn-link', + }, + submit: { + label: '[[user:unban-account]]', + callback: function () { + const formData = modal.find('form').serializeArray().reduce(function (data, cur) { + data[cur.name] = cur.value; + return data; + }, {}); + + + Promise.all(uids.map(function (uid) { + return api.del('/users/' + uid + '/ban', { + reason: formData.reason || '', + }); + })).then(() => { + onSuccess('[[admin/manage/users:alerts.unban-success]]', '.ban', false); + }).catch(alerts.error); + }, + }, + }, + }); }); }); diff --git a/public/src/modules/accounts/moderate.js b/public/src/modules/accounts/moderate.js index 3a230f098a..9b1308a8e1 100644 --- a/public/src/modules/accounts/moderate.js +++ b/public/src/modules/accounts/moderate.js @@ -11,98 +11,105 @@ define('forum/account/moderate', [ AccountModerate.banAccount = function (theirid, onSuccess) { theirid = theirid || ajaxify.data.theirid; - Benchpress.render('modals/temporary-ban', {}).then(function (html) { - bootbox.dialog({ - className: 'ban-modal', - title: '[[user:ban-account]]', - message: html, - show: true, - buttons: { - close: { - label: '[[global:close]]', - className: 'btn-link', - }, - submit: { - label: '[[user:ban-account]]', - callback: function () { - const formData = $('.ban-modal form').serializeArray().reduce(function (data, cur) { - data[cur.name] = cur.value; - return data; - }, {}); + throwModal({ + tpl: 'modals/temporary-ban', + title: '[[user:ban-account]]', + onSubmit: function (formData) { + const until = formData.length > 0 ? ( + Date.now() + (formData.length * 1000 * 60 * 60 * (parseInt(formData.unit, 10) ? 24 : 1)) + ) : 0; + api.put('/users/' + theirid + '/ban', { + until: until, + reason: formData.reason || '', + }).then(() => { + if (typeof onSuccess === 'function') { + return onSuccess(); + } - const until = formData.length > 0 ? ( - Date.now() + (formData.length * 1000 * 60 * 60 * (parseInt(formData.unit, 10) ? 24 : 1)) - ) : 0; - - api.put('/users/' + theirid + '/ban', { - until: until, - reason: formData.reason || '', - }).then(() => { - if (typeof onSuccess === 'function') { - return onSuccess(); - } - - ajaxify.refresh(); - }).catch(alerts.error); - }, - }, - }, - }); + ajaxify.refresh(); + }).catch(alerts.error); + }, }); }; AccountModerate.unbanAccount = function (theirid) { - api.del('/users/' + theirid + '/ban').then(() => { - ajaxify.refresh(); - }).catch(alerts.error); + throwModal({ + tpl: 'modals/unban', + title: '[[user:unban-account]]', + onSubmit: function (formData) { + api.del('/users/' + theirid + '/ban', { + reason: formData.reason || '', + }).then(() => { + ajaxify.refresh(); + }).catch(alerts.error); + }, + }); }; AccountModerate.muteAccount = function (theirid, onSuccess) { theirid = theirid || ajaxify.data.theirid; - Benchpress.render('modals/temporary-mute', {}).then(function (html) { - bootbox.dialog({ - className: 'mute-modal', - title: '[[user:mute-account]]', + throwModal({ + tpl: 'modals/temporary-mute', + title: '[[user:mute-account]]', + onSubmit: function (formData) { + const until = formData.length > 0 ? ( + Date.now() + (formData.length * 1000 * 60 * 60 * (parseInt(formData.unit, 10) ? 24 : 1)) + ) : 0; + + api.put('/users/' + theirid + '/mute', { + until: until, + reason: formData.reason || '', + }).then(() => { + if (typeof onSuccess === 'function') { + return onSuccess(); + } + ajaxify.refresh(); + }).catch(alerts.error); + }, + }); + }; + + AccountModerate.unmuteAccount = function (theirid) { + throwModal({ + tpl: 'modals/unmute', + title: '[[user:unmute-account]]', + onSubmit: function (formData) { + api.del('/users/' + theirid + '/mute', { + reason: formData.reason || '', + }).then(() => { + ajaxify.refresh(); + }).catch(alerts.error); + }, + }); + }; + + function throwModal(options) { + Benchpress.render(options.tpl, {}).then(function (html) { + const modal = bootbox.dialog({ + title: options.title, message: html, show: true, + onEscape: true, buttons: { close: { label: '[[global:close]]', className: 'btn-link', }, submit: { - label: '[[user:mute-account]]', + label: options.title, callback: function () { - const formData = $('.mute-modal form').serializeArray().reduce(function (data, cur) { + const formData = modal.find('form').serializeArray().reduce(function (data, cur) { data[cur.name] = cur.value; return data; }, {}); - const until = formData.length > 0 ? ( - Date.now() + (formData.length * 1000 * 60 * 60 * (parseInt(formData.unit, 10) ? 24 : 1)) - ) : 0; - - api.put('/users/' + theirid + '/mute', { - until: until, - reason: formData.reason || '', - }).then(() => { - if (typeof onSuccess === 'function') { - return onSuccess(); - } - ajaxify.refresh(); - }).catch(alerts.error); + options.onSubmit(formData); }, }, }, }); }); - }; - - AccountModerate.unmuteAccount = function (theirid) { - api.del('/users/' + theirid + '/mute').then(() => { - ajaxify.refresh(); - }).catch(alerts.error); - }; + } return AccountModerate; }); diff --git a/src/api/users.js b/src/api/users.js index b2fcb7b38e..1f44bb4372 100644 --- a/src/api/users.js +++ b/src/api/users.js @@ -252,7 +252,8 @@ usersAPI.unban = async function (caller, data) { throw new Error('[[error:no-privileges]]'); } - await user.bans.unban(data.uid); + const unbanData = await user.bans.unban(data.uid, data.reason); + await db.setObjectField(`uid:${data.uid}:unban:${unbanData.timestamp}`, 'fromUid', caller.uid); sockets.in(`uid_${data.uid}`).emit('event:unbanned'); @@ -283,6 +284,7 @@ usersAPI.mute = async function (caller, data) { const now = Date.now(); const muteKey = `uid:${data.uid}:mute:${now}`; const muteData = { + type: 'mute', fromUid: caller.uid, uid: data.uid, timestamp: now, @@ -315,7 +317,19 @@ usersAPI.unmute = async function (caller, data) { } await db.deleteObjectFields(`user:${data.uid}`, ['mutedUntil', 'mutedReason']); - + const now = Date.now(); + const unmuteKey = `uid:${data.uid}:unmute:${now}`; + const unmuteData = { + type: 'unmute', + fromUid: caller.uid, + uid: data.uid, + timestamp: now, + }; + if (data.reason) { + unmuteData.reason = data.reason; + } + await db.sortedSetAdd(`uid:${data.uid}:unmutes:timestamp`, now, unmuteKey); + await db.setObject(unmuteKey, unmuteData); await events.log({ type: 'user-unmute', uid: caller.uid, diff --git a/src/user/bans.js b/src/user/bans.js index 8a7352d29e..465f6300e6 100644 --- a/src/user/bans.js +++ b/src/user/bans.js @@ -26,6 +26,7 @@ module.exports = function (User) { const banKey = `uid:${uid}:ban:${now}`; const banData = { + type: 'ban', uid: uid, timestamp: now, expire: until > now ? until : 0, @@ -63,24 +64,39 @@ module.exports = function (User) { return banData; }; - User.bans.unban = async function (uids) { - uids = Array.isArray(uids) ? uids : [uids]; + User.bans.unban = async function (uids, reason = '') { + const isArray = Array.isArray(uids); + uids = isArray ? uids : [uids]; const userData = await User.getUsersFields(uids, ['email:confirmed']); await db.setObject(uids.map(uid => `user:${uid}`), { 'banned:expire': 0 }); - + const now = Date.now(); + const unbanDataArray = []; /* eslint-disable no-await-in-loop */ for (const user of userData) { const systemGroupsToJoin = [ 'registered-users', (parseInt(user['email:confirmed'], 10) === 1 ? 'verified-users' : 'unverified-users'), ]; - await groups.leave(groups.BANNED_USERS, user.uid); - // An unbanned user would lost its previous "Global Moderator" status - await groups.join(systemGroupsToJoin, user.uid); + const unbanKey = `uid:${user.uid}:unban:${now}`; + const unbanData = { + type: 'unban', + uid: user.uid, + reason, + timestamp: now, + }; + await Promise.all([ + db.sortedSetAdd(`uid:${user.uid}:unbans:timestamp`, now, unbanKey), + db.setObject(unbanKey, unbanData), + groups.leave(groups.BANNED_USERS, user.uid), + // An unbanned user would lost its previous "Global Moderator" status + groups.join(systemGroupsToJoin, user.uid), + ]); + unbanDataArray.push(unbanData); } await db.sortedSetRemove(['users:banned', 'users:banned:expire'], uids); + return isArray ? unbanDataArray : unbanDataArray[0]; }; User.bans.isBanned = async function (uids) { diff --git a/src/user/data.js b/src/user/data.js index e21cf92921..c7e2d8b828 100644 --- a/src/user/data.js +++ b/src/user/data.js @@ -258,7 +258,7 @@ module.exports = function (User) { user.banned_until = unban ? 0 : user['banned:expire']; user.banned_until_readable = user.banned_until && !unban ? utils.toISOString(user.banned_until) : 'Not Banned'; if (unban) { - await User.bans.unban(user.uid); + await User.bans.unban(user.uid, '[[user:info.ban-expired]]'); user.banned = false; } } diff --git a/src/user/info.js b/src/user/info.js index d4667bd83f..1c62f3f875 100644 --- a/src/user/info.js +++ b/src/user/info.js @@ -32,8 +32,12 @@ module.exports = function (User) { User.getModerationHistory = async function (uid) { let [flags, bans, mutes] = await Promise.all([ db.getSortedSetRevRangeWithScores(`flags:byTargetUid:${uid}`, 0, 19), - db.getSortedSetRevRange(`uid:${uid}:bans:timestamp`, 0, 19), - db.getSortedSetRevRange(`uid:${uid}:mutes:timestamp`, 0, 19), + db.getSortedSetRevRange([ + `uid:${uid}:bans:timestamp`, `uid:${uid}:unbans:timestamp`, + ], 0, 19), + db.getSortedSetRevRange([ + `uid:${uid}:mutes:timestamp`, `uid:${uid}:unmutes:timestamp`, + ], 0, 19), ]); // Get pids from flag objects diff --git a/src/views/modals/unban.tpl b/src/views/modals/unban.tpl new file mode 100644 index 0000000000..4a3ab69896 --- /dev/null +++ b/src/views/modals/unban.tpl @@ -0,0 +1,10 @@ +

+
+
+
+ + +
+
+
+
diff --git a/src/views/modals/unmute.tpl b/src/views/modals/unmute.tpl new file mode 100644 index 0000000000..4a3ab69896 --- /dev/null +++ b/src/views/modals/unmute.tpl @@ -0,0 +1,10 @@ +
+
+
+
+ + +
+
+
+
From 7ad477af9c908410dddbaac0aa663fb570f5ee23 Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Tue, 23 Apr 2024 15:16:29 +0000 Subject: [PATCH 108/168] chore(i18n): fallback strings for new resources: nodebb.user --- public/language/ar/user.json | 3 +++ public/language/bg/user.json | 3 +++ public/language/bn/user.json | 3 +++ public/language/cs/user.json | 3 +++ public/language/da/user.json | 3 +++ public/language/de/user.json | 3 +++ public/language/el/user.json | 3 +++ public/language/en-US/user.json | 3 +++ public/language/en-x-pirate/user.json | 3 +++ public/language/es/user.json | 3 +++ public/language/et/user.json | 3 +++ public/language/fa-IR/user.json | 3 +++ public/language/fi/user.json | 3 +++ public/language/fr/user.json | 3 +++ public/language/gl/user.json | 3 +++ public/language/he/user.json | 3 +++ public/language/hr/user.json | 3 +++ public/language/hu/user.json | 3 +++ public/language/hy/user.json | 3 +++ public/language/id/user.json | 3 +++ public/language/it/user.json | 3 +++ public/language/ja/user.json | 3 +++ public/language/ko/user.json | 3 +++ public/language/lt/user.json | 3 +++ public/language/lv/user.json | 3 +++ public/language/ms/user.json | 3 +++ public/language/nb/user.json | 3 +++ public/language/nl/user.json | 3 +++ public/language/pl/user.json | 3 +++ public/language/pt-BR/user.json | 3 +++ public/language/pt-PT/user.json | 3 +++ public/language/ro/user.json | 3 +++ public/language/ru/user.json | 3 +++ public/language/rw/user.json | 3 +++ public/language/sc/user.json | 3 +++ public/language/sk/user.json | 3 +++ public/language/sl/user.json | 3 +++ public/language/sq-AL/user.json | 3 +++ public/language/sr/user.json | 3 +++ public/language/sv/user.json | 3 +++ public/language/th/user.json | 3 +++ public/language/tr/user.json | 3 +++ public/language/uk/user.json | 3 +++ public/language/vi/user.json | 3 +++ public/language/zh-CN/user.json | 3 +++ public/language/zh-TW/user.json | 3 +++ 46 files changed, 138 insertions(+) diff --git a/public/language/ar/user.json b/public/language/ar/user.json index cd9ebd292b..b5e3c32185 100644 --- a/public/language/ar/user.json +++ b/public/language/ar/user.json @@ -1,7 +1,9 @@ { "user-menu": "User menu", "banned": "محظور", + "unbanned": "Unbanned", "muted": "كتم", + "unmuted": "Unmuted", "offline": "غير متصل", "deleted": "محذوف", "username": "إسم المستخدم", @@ -167,6 +169,7 @@ "info.no-ban-history": "هذا المستخدم لم يتم حظره مطلقا", "info.banned-until": "محظور حتى %1", "info.banned-expiry": "Expiry", + "info.ban-expired": "Ban expired", "info.banned-permanently": "محظور بشكل دائم", "info.banned-reason-label": "سبب", "info.banned-no-reason": "لم يتم إعطاء سبب.", diff --git a/public/language/bg/user.json b/public/language/bg/user.json index 687ea013a4..abc0edfcb1 100644 --- a/public/language/bg/user.json +++ b/public/language/bg/user.json @@ -1,7 +1,9 @@ { "user-menu": "Потребителско меню", "banned": "Блокиран", + "unbanned": "Unbanned", "muted": "Заглушен", + "unmuted": "Unmuted", "offline": "Извън линия", "deleted": "Изтрит", "username": "Потребителско име", @@ -167,6 +169,7 @@ "info.no-ban-history": "Този потребител никога не е бил блокиран", "info.banned-until": "Блокиран до %1", "info.banned-expiry": "Давност", + "info.ban-expired": "Ban expired", "info.banned-permanently": "Блокиран за постоянно", "info.banned-reason-label": "Причина", "info.banned-no-reason": "Няма посочена причина.", diff --git a/public/language/bn/user.json b/public/language/bn/user.json index 3d52e32c20..c65af4440f 100644 --- a/public/language/bn/user.json +++ b/public/language/bn/user.json @@ -1,7 +1,9 @@ { "user-menu": "User menu", "banned": "নিষিদ্ধ", + "unbanned": "Unbanned", "muted": "Muted", + "unmuted": "Unmuted", "offline": "অফলাইন", "deleted": "Deleted", "username": "সদস্যের নাম", @@ -167,6 +169,7 @@ "info.no-ban-history": "This user has never been banned", "info.banned-until": "Banned until %1", "info.banned-expiry": "Expiry", + "info.ban-expired": "Ban expired", "info.banned-permanently": "Banned permanently", "info.banned-reason-label": "Reason", "info.banned-no-reason": "No reason given.", diff --git a/public/language/cs/user.json b/public/language/cs/user.json index e88135c71c..e5db1de9a8 100644 --- a/public/language/cs/user.json +++ b/public/language/cs/user.json @@ -1,7 +1,9 @@ { "user-menu": "User menu", "banned": "Zablokován", + "unbanned": "Unbanned", "muted": "Ztlumen", + "unmuted": "Unmuted", "offline": "Nepřipojen", "deleted": "Odstraněno", "username": "Uživatelské jméno", @@ -167,6 +169,7 @@ "info.no-ban-history": "Tento uživatel nebyl nikdy zablokován", "info.banned-until": "Zablokován do %1", "info.banned-expiry": "Expiry", + "info.ban-expired": "Ban expired", "info.banned-permanently": "Trvale zablokován", "info.banned-reason-label": "Důvod", "info.banned-no-reason": "Bez důvodu", diff --git a/public/language/da/user.json b/public/language/da/user.json index a9479b0181..d6e25ba154 100644 --- a/public/language/da/user.json +++ b/public/language/da/user.json @@ -1,7 +1,9 @@ { "user-menu": "User menu", "banned": "Banlyst", + "unbanned": "Unbanned", "muted": "Muted", + "unmuted": "Unmuted", "offline": "Offline", "deleted": "Deleted", "username": "Brugernavn", @@ -167,6 +169,7 @@ "info.no-ban-history": "This user has never been banned", "info.banned-until": "Banned until %1", "info.banned-expiry": "Expiry", + "info.ban-expired": "Ban expired", "info.banned-permanently": "Banned permanently", "info.banned-reason-label": "Reason", "info.banned-no-reason": "No reason given.", diff --git a/public/language/de/user.json b/public/language/de/user.json index 875c9aeb75..379da7e6fa 100644 --- a/public/language/de/user.json +++ b/public/language/de/user.json @@ -1,7 +1,9 @@ { "user-menu": "User menu", "banned": "Gesperrt", + "unbanned": "Unbanned", "muted": "Stummgeschaltet", + "unmuted": "Unmuted", "offline": "Offline", "deleted": "Gelöscht", "username": "Benutzername", @@ -167,6 +169,7 @@ "info.no-ban-history": "Dieser Benutzer wurde noch nie gesperrt", "info.banned-until": "Gesperrt bis zum %1", "info.banned-expiry": "Ablauf", + "info.ban-expired": "Ban expired", "info.banned-permanently": "Permanent gesperrt", "info.banned-reason-label": "Grund", "info.banned-no-reason": "Kein Grund angegeben.", diff --git a/public/language/el/user.json b/public/language/el/user.json index ed2e05ac00..b027d6a265 100644 --- a/public/language/el/user.json +++ b/public/language/el/user.json @@ -1,7 +1,9 @@ { "user-menu": "User menu", "banned": "Αποκλεισμένος/η", + "unbanned": "Unbanned", "muted": "Muted", + "unmuted": "Unmuted", "offline": "Εκτός Σύνδεσης", "deleted": "Deleted", "username": "Όνομα Χρήστη", @@ -167,6 +169,7 @@ "info.no-ban-history": "This user has never been banned", "info.banned-until": "Banned until %1", "info.banned-expiry": "Expiry", + "info.ban-expired": "Ban expired", "info.banned-permanently": "Banned permanently", "info.banned-reason-label": "Reason", "info.banned-no-reason": "No reason given.", diff --git a/public/language/en-US/user.json b/public/language/en-US/user.json index b1a19d7ecd..f83fe41f07 100644 --- a/public/language/en-US/user.json +++ b/public/language/en-US/user.json @@ -1,7 +1,9 @@ { "user-menu": "User menu", "banned": "Banned", + "unbanned": "Unbanned", "muted": "Muted", + "unmuted": "Unmuted", "offline": "Offline", "deleted": "Deleted", "username": "User Name", @@ -167,6 +169,7 @@ "info.no-ban-history": "This user has never been banned", "info.banned-until": "Banned until %1", "info.banned-expiry": "Expiry", + "info.ban-expired": "Ban expired", "info.banned-permanently": "Banned permanently", "info.banned-reason-label": "Reason", "info.banned-no-reason": "No reason given.", diff --git a/public/language/en-x-pirate/user.json b/public/language/en-x-pirate/user.json index a2e50e1384..8bedf1815f 100644 --- a/public/language/en-x-pirate/user.json +++ b/public/language/en-x-pirate/user.json @@ -1,7 +1,9 @@ { "user-menu": "User menu", "banned": "Blackmarked", + "unbanned": "Unbanned", "muted": "Muted", + "unmuted": "Unmuted", "offline": "Asleep at the wheel", "deleted": "Deleted", "username": "User Name", @@ -167,6 +169,7 @@ "info.no-ban-history": "This user has never been banned", "info.banned-until": "Banned until %1", "info.banned-expiry": "Expiry", + "info.ban-expired": "Ban expired", "info.banned-permanently": "Banned permanently", "info.banned-reason-label": "Reason", "info.banned-no-reason": "No reason given.", diff --git a/public/language/es/user.json b/public/language/es/user.json index 996dfd3986..8b67c376cc 100644 --- a/public/language/es/user.json +++ b/public/language/es/user.json @@ -1,7 +1,9 @@ { "user-menu": "User menu", "banned": "Baneado", + "unbanned": "Unbanned", "muted": "Muted", + "unmuted": "Unmuted", "offline": "Desconectado", "deleted": "Borrado", "username": "Nombre de usuario", @@ -167,6 +169,7 @@ "info.no-ban-history": "Este usuario nunca ha sido baneado", "info.banned-until": "Baneado hasta %1", "info.banned-expiry": "Expiry", + "info.ban-expired": "Ban expired", "info.banned-permanently": "Baneado permanentemente", "info.banned-reason-label": "Motivo", "info.banned-no-reason": "Motivo no especificado", diff --git a/public/language/et/user.json b/public/language/et/user.json index 97f65ad637..0603f45816 100644 --- a/public/language/et/user.json +++ b/public/language/et/user.json @@ -1,7 +1,9 @@ { "user-menu": "User menu", "banned": "Banned", + "unbanned": "Unbanned", "muted": "Muted", + "unmuted": "Unmuted", "offline": "Väljas", "deleted": "Deleted", "username": "Kasutajanimi", @@ -167,6 +169,7 @@ "info.no-ban-history": "Seda kasutajat pole kunagi keelustatud", "info.banned-until": "Keelustatud kuni %1", "info.banned-expiry": "Expiry", + "info.ban-expired": "Ban expired", "info.banned-permanently": "Igavesti keelustatud", "info.banned-reason-label": "Reason", "info.banned-no-reason": "No reason given.", diff --git a/public/language/fa-IR/user.json b/public/language/fa-IR/user.json index 8e7d43a40c..624337c45d 100644 --- a/public/language/fa-IR/user.json +++ b/public/language/fa-IR/user.json @@ -1,7 +1,9 @@ { "user-menu": "User menu", "banned": "اخراج شده", + "unbanned": "Unbanned", "muted": "Muted", + "unmuted": "Unmuted", "offline": "آفلاین", "deleted": "حذف شده", "username": "نام کاربری", @@ -167,6 +169,7 @@ "info.no-ban-history": "این کاربر هرگز مسدود نشده است", "info.banned-until": "مسدود شده تا %1", "info.banned-expiry": "Expiry", + "info.ban-expired": "Ban expired", "info.banned-permanently": "مسدود شده به طور دائم", "info.banned-reason-label": "دلیل", "info.banned-no-reason": "هیچ دلیلی ارایه نشد.", diff --git a/public/language/fi/user.json b/public/language/fi/user.json index 37ed2e6286..170f401695 100644 --- a/public/language/fi/user.json +++ b/public/language/fi/user.json @@ -1,7 +1,9 @@ { "user-menu": "User menu", "banned": "Bannattu", + "unbanned": "Unbanned", "muted": "Muted", + "unmuted": "Unmuted", "offline": "Offline", "deleted": "Poistettu", "username": "Käyttäjän nimi", @@ -167,6 +169,7 @@ "info.no-ban-history": "This user has never been banned", "info.banned-until": "Banned until %1", "info.banned-expiry": "Expiry", + "info.ban-expired": "Ban expired", "info.banned-permanently": "Banned permanently", "info.banned-reason-label": "Syy", "info.banned-no-reason": "Syytä ei ole annettu", diff --git a/public/language/fr/user.json b/public/language/fr/user.json index c50c44ca01..cfb9d54bf9 100644 --- a/public/language/fr/user.json +++ b/public/language/fr/user.json @@ -1,7 +1,9 @@ { "user-menu": "Menu de l'utilisateur", "banned": "Banni", + "unbanned": "Unbanned", "muted": "Muet", + "unmuted": "Unmuted", "offline": "Hors-ligne", "deleted": "Effacé", "username": "Nom d'utilisateur", @@ -167,6 +169,7 @@ "info.no-ban-history": "Cet utilisateur n'a jamais été banni", "info.banned-until": "Banni jusqu'au %1", "info.banned-expiry": "Expiration", + "info.ban-expired": "Ban expired", "info.banned-permanently": "Banni de façon permanente", "info.banned-reason-label": "Raison", "info.banned-no-reason": "Aucune raison donnée", diff --git a/public/language/gl/user.json b/public/language/gl/user.json index d4ec222e5c..cfd18d3834 100644 --- a/public/language/gl/user.json +++ b/public/language/gl/user.json @@ -1,7 +1,9 @@ { "user-menu": "User menu", "banned": "Expulsado", + "unbanned": "Unbanned", "muted": "Muted", + "unmuted": "Unmuted", "offline": "Desconectado", "deleted": "Deleted", "username": "Nome de usuario", @@ -167,6 +169,7 @@ "info.no-ban-history": "Este usuario nunca foi baneado", "info.banned-until": "Baneado hasta %1", "info.banned-expiry": "Expiry", + "info.ban-expired": "Ban expired", "info.banned-permanently": "Baneado permanentemente", "info.banned-reason-label": "Motivo", "info.banned-no-reason": "Motivo non especificado", diff --git a/public/language/he/user.json b/public/language/he/user.json index 3f40f1f417..83ec0f9eb8 100644 --- a/public/language/he/user.json +++ b/public/language/he/user.json @@ -1,7 +1,9 @@ { "user-menu": "תפריט משתמש", "banned": "מורחק", + "unbanned": "Unbanned", "muted": "מושתק", + "unmuted": "Unmuted", "offline": "לא מחובר", "deleted": "נמחק", "username": "שם משתמש", @@ -167,6 +169,7 @@ "info.no-ban-history": "משתמש זה לא הורחק מעולם", "info.banned-until": "הורחק עד %1", "info.banned-expiry": "פג תוקף", + "info.ban-expired": "Ban expired", "info.banned-permanently": "הורחק לצמיתות", "info.banned-reason-label": "סיבה", "info.banned-no-reason": "לא ניתנה סיבה.", diff --git a/public/language/hr/user.json b/public/language/hr/user.json index a006735356..41e56b78c0 100644 --- a/public/language/hr/user.json +++ b/public/language/hr/user.json @@ -1,7 +1,9 @@ { "user-menu": "User menu", "banned": "Blokiran", + "unbanned": "Unbanned", "muted": "Muted", + "unmuted": "Unmuted", "offline": "Nije na mreži", "deleted": "Deleted", "username": "Korisničko ime", @@ -167,6 +169,7 @@ "info.no-ban-history": "Ovaj korisnik nikad nije bio blokiran", "info.banned-until": "Blokiran do %1!", "info.banned-expiry": "Expiry", + "info.ban-expired": "Ban expired", "info.banned-permanently": "Trajno blokiran", "info.banned-reason-label": "Razlog", "info.banned-no-reason": "Razlog nije dan.", diff --git a/public/language/hu/user.json b/public/language/hu/user.json index 8455aef483..26a0c5777a 100644 --- a/public/language/hu/user.json +++ b/public/language/hu/user.json @@ -1,7 +1,9 @@ { "user-menu": "Felhasználói menü", "banned": "Kitiltva", + "unbanned": "Unbanned", "muted": "Némítva", + "unmuted": "Unmuted", "offline": "Nem elérhető", "deleted": "Törölve", "username": "Felhasználónév", @@ -167,6 +169,7 @@ "info.no-ban-history": "A felhasználó sosem volt kitiltva", "info.banned-until": "Kitiltás lejárata: %1", "info.banned-expiry": "Lejárat", + "info.ban-expired": "Ban expired", "info.banned-permanently": "Végleges kitiltás", "info.banned-reason-label": "Oka", "info.banned-no-reason": "Az oka nincs megadva.", diff --git a/public/language/hy/user.json b/public/language/hy/user.json index 0461c15bfd..c4f7858444 100644 --- a/public/language/hy/user.json +++ b/public/language/hy/user.json @@ -1,7 +1,9 @@ { "user-menu": "User menu", "banned": "Բլոկավորված", + "unbanned": "Unbanned", "muted": "Ձայն անջատված", + "unmuted": "Unmuted", "offline": "Օֆլայն", "deleted": "Ջնջված", "username": "Օգտատիրոջ անունը", @@ -167,6 +169,7 @@ "info.no-ban-history": "Այս օգտատերը երբեք չի արգելափակվել", "info.banned-until": "Արգելված է մինչև %1", "info.banned-expiry": "Ժամկետը", + "info.ban-expired": "Ban expired", "info.banned-permanently": "Ընդմիշտ արգելված է", "info.banned-reason-label": "Պատճառ", "info.banned-no-reason": "Ոչ մի պատճառ չի նշվում:", diff --git a/public/language/id/user.json b/public/language/id/user.json index 2bbe3b831b..3f3b4e3b9e 100644 --- a/public/language/id/user.json +++ b/public/language/id/user.json @@ -1,7 +1,9 @@ { "user-menu": "User menu", "banned": "Banned", + "unbanned": "Unbanned", "muted": "Muted", + "unmuted": "Unmuted", "offline": "Offline", "deleted": "Deleted", "username": "Nama Pengguna", @@ -167,6 +169,7 @@ "info.no-ban-history": "This user has never been banned", "info.banned-until": "Banned until %1", "info.banned-expiry": "Expiry", + "info.ban-expired": "Ban expired", "info.banned-permanently": "Banned permanently", "info.banned-reason-label": "Reason", "info.banned-no-reason": "No reason given.", diff --git a/public/language/it/user.json b/public/language/it/user.json index 3a60e6e7c6..a00cfc2098 100644 --- a/public/language/it/user.json +++ b/public/language/it/user.json @@ -1,7 +1,9 @@ { "user-menu": "Menu utente", "banned": "Bannato", + "unbanned": "Unbanned", "muted": "Silenziato", + "unmuted": "Unmuted", "offline": "Non in linea", "deleted": "Eliminato", "username": "Nome Utente", @@ -167,6 +169,7 @@ "info.no-ban-history": "Questo utente non è mai stato bannato", "info.banned-until": "Bannato fino %1", "info.banned-expiry": "Scadenza", + "info.ban-expired": "Ban expired", "info.banned-permanently": "Bannato permanentemente", "info.banned-reason-label": "Motivo", "info.banned-no-reason": "Non è stata data nessuna motivazione.", diff --git a/public/language/ja/user.json b/public/language/ja/user.json index ed85c32353..1ad42a1ca1 100644 --- a/public/language/ja/user.json +++ b/public/language/ja/user.json @@ -1,7 +1,9 @@ { "user-menu": "User menu", "banned": "BANされた", + "unbanned": "Unbanned", "muted": "Muted", + "unmuted": "Unmuted", "offline": "オフライン", "deleted": "削除されました", "username": "ユーザー名", @@ -167,6 +169,7 @@ "info.no-ban-history": "このユーザーは停止されていません", "info.banned-until": "%1まで停止", "info.banned-expiry": "Expiry", + "info.ban-expired": "Ban expired", "info.banned-permanently": "永久に停止", "info.banned-reason-label": "理由", "info.banned-no-reason": "理由なし。", diff --git a/public/language/ko/user.json b/public/language/ko/user.json index 28a31795e6..5fd9c5b0cd 100644 --- a/public/language/ko/user.json +++ b/public/language/ko/user.json @@ -1,7 +1,9 @@ { "user-menu": "사용자 메뉴", "banned": "차단됨", + "unbanned": "Unbanned", "muted": "음소거됨", + "unmuted": "Unmuted", "offline": "오프라인", "deleted": "삭제됨", "username": "사용자 이름", @@ -167,6 +169,7 @@ "info.no-ban-history": "이 사용자는 현재까지 차단된 적이 없습니다.", "info.banned-until": "%1까지 차단됨", "info.banned-expiry": "만료", + "info.ban-expired": "Ban expired", "info.banned-permanently": "영구 차단됨", "info.banned-reason-label": "사유", "info.banned-no-reason": "사유를 제공하지 않았습니다.", diff --git a/public/language/lt/user.json b/public/language/lt/user.json index 2ccef87c25..c719c752c0 100644 --- a/public/language/lt/user.json +++ b/public/language/lt/user.json @@ -1,7 +1,9 @@ { "user-menu": "User menu", "banned": "Užblokuotas", + "unbanned": "Unbanned", "muted": "Muted", + "unmuted": "Unmuted", "offline": "Atsijungęs", "deleted": "Ištrinti", "username": "Vartotojo vardas", @@ -167,6 +169,7 @@ "info.no-ban-history": "Šis narys nebuvo užblokuotas.", "info.banned-until": "Užblokuotas iki %1", "info.banned-expiry": "Expiry", + "info.ban-expired": "Ban expired", "info.banned-permanently": "Užblokuotas visam laikui", "info.banned-reason-label": "Priežastis", "info.banned-no-reason": "Be priežasties", diff --git a/public/language/lv/user.json b/public/language/lv/user.json index 3b7e69c34d..b649ea2b72 100644 --- a/public/language/lv/user.json +++ b/public/language/lv/user.json @@ -1,7 +1,9 @@ { "user-menu": "User menu", "banned": "Bloķētie", + "unbanned": "Unbanned", "muted": "Muted", + "unmuted": "Unmuted", "offline": "Bezsaistē", "deleted": "Izdzēstie", "username": "Vārds", @@ -167,6 +169,7 @@ "info.no-ban-history": "Šis lietotājs nekad nav bijis bloķēts", "info.banned-until": "Bloķēts līdz %1", "info.banned-expiry": "Expiry", + "info.ban-expired": "Ban expired", "info.banned-permanently": "Bloķēts pastāvīgi", "info.banned-reason-label": "Iemesls", "info.banned-no-reason": "Bez iemesla.", diff --git a/public/language/ms/user.json b/public/language/ms/user.json index 5e53e71cd9..d874389b40 100644 --- a/public/language/ms/user.json +++ b/public/language/ms/user.json @@ -1,7 +1,9 @@ { "user-menu": "User menu", "banned": "Diharamkan", + "unbanned": "Unbanned", "muted": "Muted", + "unmuted": "Unmuted", "offline": "Luar talian", "deleted": "Deleted", "username": "Nama pengguna", @@ -167,6 +169,7 @@ "info.no-ban-history": "This user has never been banned", "info.banned-until": "Banned until %1", "info.banned-expiry": "Expiry", + "info.ban-expired": "Ban expired", "info.banned-permanently": "Banned permanently", "info.banned-reason-label": "Reason", "info.banned-no-reason": "No reason given.", diff --git a/public/language/nb/user.json b/public/language/nb/user.json index e04784c87d..764199b4dc 100644 --- a/public/language/nb/user.json +++ b/public/language/nb/user.json @@ -1,7 +1,9 @@ { "user-menu": "User menu", "banned": "Utestengt", + "unbanned": "Unbanned", "muted": "Dempet", + "unmuted": "Unmuted", "offline": "Frakoblet", "deleted": "Slettet", "username": "Brukernavn", @@ -167,6 +169,7 @@ "info.no-ban-history": "Denne brukeren har aldri blitt utestengt", "info.banned-until": "Utestengt til %1", "info.banned-expiry": "Utløp", + "info.ban-expired": "Ban expired", "info.banned-permanently": "Utestengt permanent", "info.banned-reason-label": "Årsak", "info.banned-no-reason": "ingen årsak oppgitt", diff --git a/public/language/nl/user.json b/public/language/nl/user.json index 5788ab8150..0abfd0ab12 100644 --- a/public/language/nl/user.json +++ b/public/language/nl/user.json @@ -1,7 +1,9 @@ { "user-menu": "User menu", "banned": "Verbannen", + "unbanned": "Unbanned", "muted": "Muted", + "unmuted": "Unmuted", "offline": "Offline", "deleted": "Verwijderd", "username": "Gebruikersnaam", @@ -167,6 +169,7 @@ "info.no-ban-history": "Deze gebruiker is nooit eerder verbannen", "info.banned-until": "Verbannen tot %1", "info.banned-expiry": "Verloopt", + "info.ban-expired": "Ban expired", "info.banned-permanently": "Voor altijd verbannen", "info.banned-reason-label": "Reden", "info.banned-no-reason": "Geen reden opgegeven", diff --git a/public/language/pl/user.json b/public/language/pl/user.json index 67d6c9092f..9c5348e432 100644 --- a/public/language/pl/user.json +++ b/public/language/pl/user.json @@ -1,7 +1,9 @@ { "user-menu": "Menu użytkownika", "banned": "Zbanowany", + "unbanned": "Unbanned", "muted": "Wyciszony", + "unmuted": "Unmuted", "offline": "Offline", "deleted": "Usunięty", "username": "Nazwa użytkownika", @@ -167,6 +169,7 @@ "info.no-ban-history": "Ten użytkownik nigdy nie był zbanowany", "info.banned-until": "Zbanowany do %1", "info.banned-expiry": "Wygaśnięcie", + "info.ban-expired": "Ban expired", "info.banned-permanently": "Zbanowany permanentnie", "info.banned-reason-label": "Powód", "info.banned-no-reason": "Nie podano powodu.", diff --git a/public/language/pt-BR/user.json b/public/language/pt-BR/user.json index 9c30b86584..a171d38d88 100644 --- a/public/language/pt-BR/user.json +++ b/public/language/pt-BR/user.json @@ -1,7 +1,9 @@ { "user-menu": "User menu", "banned": "Banido", + "unbanned": "Unbanned", "muted": "Muted", + "unmuted": "Unmuted", "offline": "Offline", "deleted": "Deletado", "username": "Nome de Usuário", @@ -167,6 +169,7 @@ "info.no-ban-history": "Este usuário nunca foi banido", "info.banned-until": "Banido até %1", "info.banned-expiry": "Validade", + "info.ban-expired": "Ban expired", "info.banned-permanently": "Banido permanentemente", "info.banned-reason-label": "Motivo", "info.banned-no-reason": "Sem motivo escolhido.", diff --git a/public/language/pt-PT/user.json b/public/language/pt-PT/user.json index 73f5b44094..a0be2b156f 100644 --- a/public/language/pt-PT/user.json +++ b/public/language/pt-PT/user.json @@ -1,7 +1,9 @@ { "user-menu": "User menu", "banned": "Banido", + "unbanned": "Unbanned", "muted": "Silenciado", + "unmuted": "Unmuted", "offline": "Offline", "deleted": "Apagar", "username": "Nome de utilizador", @@ -167,6 +169,7 @@ "info.no-ban-history": "Este utilizador nunca foi banido", "info.banned-until": "Banido até %1", "info.banned-expiry": "Expiração", + "info.ban-expired": "Ban expired", "info.banned-permanently": "Banido permanentemente", "info.banned-reason-label": "Razão", "info.banned-no-reason": "Sem razão atribuida.", diff --git a/public/language/ro/user.json b/public/language/ro/user.json index b64c4b3047..d44cdf16bc 100644 --- a/public/language/ro/user.json +++ b/public/language/ro/user.json @@ -1,7 +1,9 @@ { "user-menu": "User menu", "banned": "Banat", + "unbanned": "Unbanned", "muted": "Muted", + "unmuted": "Unmuted", "offline": "Deconectat", "deleted": "Deleted", "username": "Nume utilizator", @@ -167,6 +169,7 @@ "info.no-ban-history": "This user has never been banned", "info.banned-until": "Banned until %1", "info.banned-expiry": "Expiry", + "info.ban-expired": "Ban expired", "info.banned-permanently": "Banned permanently", "info.banned-reason-label": "Reason", "info.banned-no-reason": "No reason given.", diff --git a/public/language/ru/user.json b/public/language/ru/user.json index 0b4228a68d..feabc67c64 100644 --- a/public/language/ru/user.json +++ b/public/language/ru/user.json @@ -1,7 +1,9 @@ { "user-menu": "User menu", "banned": "Заблокирован", + "unbanned": "Unbanned", "muted": "Muted", + "unmuted": "Unmuted", "offline": "Не в сети", "deleted": "Удалён", "username": "Имя пользователя", @@ -167,6 +169,7 @@ "info.no-ban-history": "Этот пользователь никогда не был заблокирован", "info.banned-until": "Заблокирован до %1", "info.banned-expiry": "Истечение", + "info.ban-expired": "Ban expired", "info.banned-permanently": "Заблокирован навсегда", "info.banned-reason-label": "Причина", "info.banned-no-reason": "Без объяснения причин.", diff --git a/public/language/rw/user.json b/public/language/rw/user.json index 84f689bf6d..dce04600a6 100644 --- a/public/language/rw/user.json +++ b/public/language/rw/user.json @@ -1,7 +1,9 @@ { "user-menu": "User menu", "banned": "Yarirukanwe", + "unbanned": "Unbanned", "muted": "Muted", + "unmuted": "Unmuted", "offline": "Ntari ku Murongo", "deleted": "Deleted", "username": "Izina ry'Umuntu", @@ -167,6 +169,7 @@ "info.no-ban-history": "This user has never been banned", "info.banned-until": "Banned until %1", "info.banned-expiry": "Expiry", + "info.ban-expired": "Ban expired", "info.banned-permanently": "Banned permanently", "info.banned-reason-label": "Reason", "info.banned-no-reason": "No reason given.", diff --git a/public/language/sc/user.json b/public/language/sc/user.json index 6c54f489fc..48af65b2cf 100644 --- a/public/language/sc/user.json +++ b/public/language/sc/user.json @@ -1,7 +1,9 @@ { "user-menu": "User menu", "banned": "Blocadu", + "unbanned": "Unbanned", "muted": "Muted", + "unmuted": "Unmuted", "offline": "Non in lìnia", "deleted": "Deleted", "username": "Nùmene de Impitadore", @@ -167,6 +169,7 @@ "info.no-ban-history": "This user has never been banned", "info.banned-until": "Banned until %1", "info.banned-expiry": "Expiry", + "info.ban-expired": "Ban expired", "info.banned-permanently": "Banned permanently", "info.banned-reason-label": "Reason", "info.banned-no-reason": "No reason given.", diff --git a/public/language/sk/user.json b/public/language/sk/user.json index bef921e67d..57042cc06f 100644 --- a/public/language/sk/user.json +++ b/public/language/sk/user.json @@ -1,7 +1,9 @@ { "user-menu": "User menu", "banned": "Zablokovaný", + "unbanned": "Unbanned", "muted": "Muted", + "unmuted": "Unmuted", "offline": "Nepripojený", "deleted": "Odstránené", "username": "Používateľské meno", @@ -167,6 +169,7 @@ "info.no-ban-history": "Tento člen nebol nikdy zablokovaný", "info.banned-until": "Zablokovaný až do %1", "info.banned-expiry": "Expiry", + "info.ban-expired": "Ban expired", "info.banned-permanently": "Zablokovaný natrvalo", "info.banned-reason-label": "Dôvod", "info.banned-no-reason": "Neboli uvedené žiadne dôvody.", diff --git a/public/language/sl/user.json b/public/language/sl/user.json index 719a55e30e..c32e250fb6 100644 --- a/public/language/sl/user.json +++ b/public/language/sl/user.json @@ -1,7 +1,9 @@ { "user-menu": "User menu", "banned": "Izločen", + "unbanned": "Unbanned", "muted": "Muted", + "unmuted": "Unmuted", "offline": "Odjavljeni", "deleted": "Izbrisano", "username": "Uporabniško ime", @@ -167,6 +169,7 @@ "info.no-ban-history": "This user has never been banned", "info.banned-until": "Banned until %1", "info.banned-expiry": "Expiry", + "info.ban-expired": "Ban expired", "info.banned-permanently": "Banned permanently", "info.banned-reason-label": "Razlog", "info.banned-no-reason": "Razlog ni podan.", diff --git a/public/language/sq-AL/user.json b/public/language/sq-AL/user.json index 39ad28303b..76dcb9f713 100644 --- a/public/language/sq-AL/user.json +++ b/public/language/sq-AL/user.json @@ -1,7 +1,9 @@ { "user-menu": "User menu", "banned": "I ndaluar", + "unbanned": "Unbanned", "muted": "Muted", + "unmuted": "Unmuted", "offline": "Jashtë linje", "deleted": "Fshirë", "username": "Emri i përdoruesit", @@ -167,6 +169,7 @@ "info.no-ban-history": "Ky përdorues nuk është ndaluar kurrë", "info.banned-until": "Ndaluar deri në %1", "info.banned-expiry": "Skadimi", + "info.ban-expired": "Ban expired", "info.banned-permanently": "Ndaluar përgjithmonë", "info.banned-reason-label": "Arsye", "info.banned-no-reason": "Asnjë arsye e dhënë.", diff --git a/public/language/sr/user.json b/public/language/sr/user.json index 9c35c037ed..385b346acc 100644 --- a/public/language/sr/user.json +++ b/public/language/sr/user.json @@ -1,7 +1,9 @@ { "user-menu": "User menu", "banned": "Забрањен", + "unbanned": "Unbanned", "muted": "Привремено искључен", + "unmuted": "Unmuted", "offline": "Ван мреже", "deleted": "Избрисано", "username": "Корисничко име", @@ -167,6 +169,7 @@ "info.no-ban-history": "Овај корисник никада није био забрањен", "info.banned-until": "Забрањен до %1", "info.banned-expiry": "Истиче", + "info.ban-expired": "Ban expired", "info.banned-permanently": "Забрањен трајно", "info.banned-reason-label": "Разлог", "info.banned-no-reason": "Није дат разлог.", diff --git a/public/language/sv/user.json b/public/language/sv/user.json index c73f5f3897..f77c46315d 100644 --- a/public/language/sv/user.json +++ b/public/language/sv/user.json @@ -1,7 +1,9 @@ { "user-menu": "User menu", "banned": "Bannlyst", + "unbanned": "Unbanned", "muted": "Muted", + "unmuted": "Unmuted", "offline": "Offline", "deleted": "Raderad", "username": "Användarnamn", @@ -167,6 +169,7 @@ "info.no-ban-history": "Den här användaren har aldrig varit bannad", "info.banned-until": "Bannad tills %1", "info.banned-expiry": "Expiry", + "info.ban-expired": "Ban expired", "info.banned-permanently": "Permanent bannad", "info.banned-reason-label": "Anledning", "info.banned-no-reason": "Ingen anledning angiven", diff --git a/public/language/th/user.json b/public/language/th/user.json index 87541bf08e..89b129f11d 100644 --- a/public/language/th/user.json +++ b/public/language/th/user.json @@ -1,7 +1,9 @@ { "user-menu": "เมนูผู้ใช้งาน", "banned": "ถูกแบน", + "unbanned": "Unbanned", "muted": "ถูกจำกัดการโพสต์", + "unmuted": "Unmuted", "offline": "ออฟไลน์", "deleted": "ลบแล้ว", "username": "ชื่อผู้ใช้", @@ -167,6 +169,7 @@ "info.no-ban-history": "ผู้ใช้นี้ถูกแบนแล้ว", "info.banned-until": "แบนจนกว่า %1", "info.banned-expiry": "หมดอายุ", + "info.ban-expired": "Ban expired", "info.banned-permanently": "แบนอย่างถาวร", "info.banned-reason-label": "เหตุผล", "info.banned-no-reason": "ไม่ได้ให้เหตุผลไว้", diff --git a/public/language/tr/user.json b/public/language/tr/user.json index bb52457c35..332805f4f4 100644 --- a/public/language/tr/user.json +++ b/public/language/tr/user.json @@ -1,7 +1,9 @@ { "user-menu": "Kullanıcı menüsü", "banned": "Yasaklı", + "unbanned": "Unbanned", "muted": "Sessiz", + "unmuted": "Unmuted", "offline": "Çevrimdışı", "deleted": "Silindi", "username": "Kullanıcı Adı", @@ -167,6 +169,7 @@ "info.no-ban-history": "Bu kullanıcı daha önce hiç yasaklanmadı", "info.banned-until": "Yasaklama süresi %1", "info.banned-expiry": "Bitiş", + "info.ban-expired": "Ban expired", "info.banned-permanently": "Kalıcı şekilde yasakla", "info.banned-reason-label": "Gerekçe", "info.banned-no-reason": "Gerekçe belirtilmedi.", diff --git a/public/language/uk/user.json b/public/language/uk/user.json index ece07e838e..65b2893f93 100644 --- a/public/language/uk/user.json +++ b/public/language/uk/user.json @@ -1,7 +1,9 @@ { "user-menu": "User menu", "banned": "Заблокований", + "unbanned": "Unbanned", "muted": "Muted", + "unmuted": "Unmuted", "offline": "Не в мережі", "deleted": "Видалено", "username": "Ім'я користувача", @@ -167,6 +169,7 @@ "info.no-ban-history": "Цього користувача ніколи не банили", "info.banned-until": "Забанений до %1", "info.banned-expiry": "Expiry", + "info.ban-expired": "Ban expired", "info.banned-permanently": "Забанений назавжди", "info.banned-reason-label": "Причина", "info.banned-no-reason": "Причина не вказана", diff --git a/public/language/vi/user.json b/public/language/vi/user.json index 7d8b201b38..9601ae97e8 100644 --- a/public/language/vi/user.json +++ b/public/language/vi/user.json @@ -1,7 +1,9 @@ { "user-menu": "User menu", "banned": "Bị cấm", + "unbanned": "Unbanned", "muted": "Đã Im Lặng", + "unmuted": "Unmuted", "offline": "Ngoại tuyến", "deleted": "Đã xoá", "username": "Tên Đăng Nhập", @@ -167,6 +169,7 @@ "info.no-ban-history": "Người dùng này chưa bao giờ bị cấm", "info.banned-until": "Bị cấm cho đến %1", "info.banned-expiry": "Hết hạn", + "info.ban-expired": "Ban expired", "info.banned-permanently": "Bị cấm vĩnh viễn", "info.banned-reason-label": "Lý do", "info.banned-no-reason": "Không có lí do.", diff --git a/public/language/zh-CN/user.json b/public/language/zh-CN/user.json index 088e7d3668..569cb6ffe3 100644 --- a/public/language/zh-CN/user.json +++ b/public/language/zh-CN/user.json @@ -1,7 +1,9 @@ { "user-menu": "用户菜单", "banned": "已封禁", + "unbanned": "Unbanned", "muted": "禁言", + "unmuted": "Unmuted", "offline": "离线", "deleted": "已删除", "username": "用户名", @@ -167,6 +169,7 @@ "info.no-ban-history": "该用户从未被封禁", "info.banned-until": "封禁到 %1", "info.banned-expiry": "到期", + "info.ban-expired": "Ban expired", "info.banned-permanently": "永久封禁", "info.banned-reason-label": "原因", "info.banned-no-reason": "没有原因", diff --git a/public/language/zh-TW/user.json b/public/language/zh-TW/user.json index e87f23c83e..aa80585d6d 100644 --- a/public/language/zh-TW/user.json +++ b/public/language/zh-TW/user.json @@ -1,7 +1,9 @@ { "user-menu": "User menu", "banned": "已停權", + "unbanned": "Unbanned", "muted": "Muted", + "unmuted": "Unmuted", "offline": "離線", "deleted": "已刪除", "username": "使用者名", @@ -167,6 +169,7 @@ "info.no-ban-history": "該使用者從未被停權", "info.banned-until": "停權直到 %1", "info.banned-expiry": "過期", + "info.ban-expired": "Ban expired", "info.banned-permanently": "永久禁用", "info.banned-reason-label": "原因", "info.banned-no-reason": "沒有原因", From 18a843bc1efa1f5ad2700af9bf391eb0fb16c29b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 23 Apr 2024 11:26:30 -0400 Subject: [PATCH 109/168] fix(deps): update dependency ace-builds to v1.33.1 (#12527) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 9846de45ce..e8521a4fe1 100644 --- a/install/package.json +++ b/install/package.json @@ -34,7 +34,7 @@ "@fortawesome/fontawesome-free": "6.5.2", "@isaacs/ttlcache": "1.4.1", "@popperjs/core": "2.11.8", - "ace-builds": "1.33.0", + "ace-builds": "1.33.1", "archiver": "7.0.1", "async": "3.2.5", "autoprefixer": "10.4.19", From b429045ff6712e484ca46d6c8fa42d0c3aea60a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Tue, 23 Apr 2024 12:39:51 -0400 Subject: [PATCH 110/168] feat: closes #12490, show profile flags on account info page --- install/package.json | 4 ++-- public/language/en-GB/flags.json | 2 +- public/language/en-GB/user.json | 4 ++++ src/flags.js | 2 +- src/user/info.js | 39 +++++++++++++------------------- 5 files changed, 24 insertions(+), 27 deletions(-) diff --git a/install/package.json b/install/package.json index e8521a4fe1..8ff948229b 100644 --- a/install/package.json +++ b/install/package.json @@ -103,10 +103,10 @@ "nodebb-plugin-ntfy": "1.7.4", "nodebb-plugin-spam-be-gone": "2.2.2", "nodebb-rewards-essentials": "1.0.0", - "nodebb-theme-harmony": "1.2.51", + "nodebb-theme-harmony": "1.2.52", "nodebb-theme-lavender": "7.1.8", "nodebb-theme-peace": "2.2.4", - "nodebb-theme-persona": "13.3.16", + "nodebb-theme-persona": "13.3.17", "nodebb-widget-essentials": "7.0.15", "nodemailer": "6.9.13", "nprogress": "0.2.0", diff --git a/public/language/en-GB/flags.json b/public/language/en-GB/flags.json index 996e027833..0a42e3877f 100644 --- a/public/language/en-GB/flags.json +++ b/public/language/en-GB/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Bulk Actions", "bulk-resolve": "Resolve Flag(s)", "bulk-success": "%1 flags updated", - "flagged-timeago-readable": "Flagged (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Auto Flagged] Received %1 downvotes." } \ No newline at end of file diff --git a/public/language/en-GB/user.json b/public/language/en-GB/user.json index cd9b17cd0a..b010898322 100644 --- a/public/language/en-GB/user.json +++ b/public/language/en-GB/user.json @@ -181,6 +181,10 @@ "sso.dissociate-confirm": "Are you sure you wish to dissociate your account from %1?", "info.latest-flags": "Latest Flags", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "No Flagged Posts Found", "info.ban-history": "Recent Ban History", "info.no-ban-history": "This user has never been banned", diff --git a/src/flags.js b/src/flags.js index e3932f3bd8..00bce1d9bd 100644 --- a/src/flags.js +++ b/src/flags.js @@ -914,7 +914,7 @@ Flags.notify = async function (flagObj, uid, notifySelf = false) { }); uids = uids.concat(modUids[0]); } else if (flagObj.type === 'user') { - const targetDisplayname = flagObj.target && flagObj.target.user ? flagObj.target.user.displayname : '[[global:guest]]'; + const targetDisplayname = flagObj.target && flagObj.target.displayname ? flagObj.target.displayname : '[[global:guest]]'; notifObj = await notifications.create({ type: 'new-user-flag', bodyShort: `[[notifications:user-flagged-user, ${displayname}, ${targetDisplayname}]]`, diff --git a/src/user/info.js b/src/user/info.js index 1c62f3f875..ff67dbd3cb 100644 --- a/src/user/info.js +++ b/src/user/info.js @@ -7,6 +7,7 @@ const db = require('../database'); const posts = require('../posts'); const topics = require('../topics'); const utils = require('../utils'); +const Flags = require('../flags'); module.exports = function (User) { User.getLatestBanInfo = async function (uid) { @@ -40,24 +41,11 @@ module.exports = function (User) { ], 0, 19), ]); - // Get pids from flag objects const keys = flags.map(flagObj => `flag:${flagObj.value}`); - const payload = await db.getObjectsFields(keys, ['type', 'targetId']); - - // Only pass on flag ids from posts - flags = payload.reduce((memo, cur, idx) => { - if (cur.type === 'post') { - memo.push({ - value: parseInt(cur.targetId, 10), - score: flags[idx].score, - }); - } - - return memo; - }, []); + const payload = await db.getObjectsFields(keys, ['flagId', 'type', 'targetId', 'datetime']); [flags, bans, mutes] = await Promise.all([ - getFlagMetadata(flags), + getFlagMetadata(payload), formatBanMuteData(bans, '[[user:info.banned-no-reason]]'), formatBanMuteData(mutes, '[[user:info.muted-no-reason]]'), ]); @@ -81,18 +69,23 @@ module.exports = function (User) { }; async function getFlagMetadata(flags) { - const pids = flags.map(flagObj => parseInt(flagObj.value, 10)); + const postFlags = flags.filter(flag => flag && flag.type === 'post'); + const reports = await Promise.all(flags.map(flag => Flags.getReports(flag.flagId))); + + flags.forEach((flag, idx) => { + if (flag) { + flag.timestampISO = new Date(flag.datetime).toISOString(); + flag.reports = reports[idx]; + } + }); + + const pids = postFlags.map(flagObj => parseInt(flagObj.targetId, 10)); const postData = await posts.getPostsFields(pids, ['tid']); const tids = postData.map(post => post.tid); const topicData = await topics.getTopicsFields(tids, ['title']); - flags = flags.map((flagObj, idx) => { - flagObj.pid = flagObj.value; - flagObj.timestamp = flagObj.score; - flagObj.timestampISO = new Date(flagObj.score).toISOString(); - - delete flagObj.value; - delete flagObj.score; + postFlags.forEach((flagObj, idx) => { + flagObj.pid = flagObj.targetId; if (!tids[idx]) { flagObj.targetPurged = true; } From 19f8a77ce28f7b31d8aaa7609559b22e14abe280 Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Tue, 23 Apr 2024 16:40:29 +0000 Subject: [PATCH 111/168] chore(i18n): fallback strings for new resources: nodebb.flags, nodebb.user --- public/language/ar/flags.json | 2 +- public/language/ar/user.json | 4 ++++ public/language/bg/flags.json | 2 +- public/language/bg/user.json | 4 ++++ public/language/bn/flags.json | 2 +- public/language/bn/user.json | 4 ++++ public/language/cs/flags.json | 2 +- public/language/cs/user.json | 4 ++++ public/language/da/flags.json | 2 +- public/language/da/user.json | 4 ++++ public/language/de/flags.json | 2 +- public/language/de/user.json | 4 ++++ public/language/el/flags.json | 2 +- public/language/el/user.json | 4 ++++ public/language/en-US/flags.json | 2 +- public/language/en-US/user.json | 4 ++++ public/language/en-x-pirate/flags.json | 2 +- public/language/en-x-pirate/user.json | 4 ++++ public/language/es/flags.json | 2 +- public/language/es/user.json | 4 ++++ public/language/et/flags.json | 2 +- public/language/et/user.json | 4 ++++ public/language/fa-IR/flags.json | 2 +- public/language/fa-IR/user.json | 4 ++++ public/language/fi/flags.json | 2 +- public/language/fi/user.json | 4 ++++ public/language/fr/flags.json | 2 +- public/language/fr/user.json | 4 ++++ public/language/gl/flags.json | 2 +- public/language/gl/user.json | 4 ++++ public/language/he/flags.json | 2 +- public/language/he/user.json | 4 ++++ public/language/hr/flags.json | 2 +- public/language/hr/user.json | 4 ++++ public/language/hu/flags.json | 2 +- public/language/hu/user.json | 4 ++++ public/language/hy/flags.json | 2 +- public/language/hy/user.json | 4 ++++ public/language/id/flags.json | 2 +- public/language/id/user.json | 4 ++++ public/language/it/flags.json | 2 +- public/language/it/user.json | 4 ++++ public/language/ja/flags.json | 2 +- public/language/ja/user.json | 4 ++++ public/language/ko/flags.json | 2 +- public/language/ko/user.json | 4 ++++ public/language/lt/flags.json | 2 +- public/language/lt/user.json | 4 ++++ public/language/lv/flags.json | 2 +- public/language/lv/user.json | 4 ++++ public/language/ms/flags.json | 2 +- public/language/ms/user.json | 4 ++++ public/language/nb/flags.json | 2 +- public/language/nb/user.json | 4 ++++ public/language/nl/flags.json | 2 +- public/language/nl/user.json | 4 ++++ public/language/pl/flags.json | 2 +- public/language/pl/user.json | 10 +++++++--- public/language/pt-BR/flags.json | 2 +- public/language/pt-BR/user.json | 4 ++++ public/language/pt-PT/flags.json | 2 +- public/language/pt-PT/user.json | 4 ++++ public/language/ro/flags.json | 2 +- public/language/ro/user.json | 4 ++++ public/language/ru/flags.json | 2 +- public/language/ru/user.json | 4 ++++ public/language/rw/flags.json | 2 +- public/language/rw/user.json | 4 ++++ public/language/sc/flags.json | 2 +- public/language/sc/user.json | 4 ++++ public/language/sk/flags.json | 2 +- public/language/sk/user.json | 4 ++++ public/language/sl/flags.json | 2 +- public/language/sl/user.json | 4 ++++ public/language/sq-AL/flags.json | 2 +- public/language/sq-AL/user.json | 4 ++++ public/language/sr/flags.json | 2 +- public/language/sr/user.json | 4 ++++ public/language/sv/flags.json | 2 +- public/language/sv/user.json | 4 ++++ public/language/th/flags.json | 2 +- public/language/th/user.json | 4 ++++ public/language/tr/flags.json | 2 +- public/language/tr/user.json | 4 ++++ public/language/uk/flags.json | 2 +- public/language/uk/user.json | 4 ++++ public/language/vi/flags.json | 2 +- public/language/vi/user.json | 4 ++++ public/language/zh-CN/flags.json | 2 +- public/language/zh-CN/user.json | 4 ++++ public/language/zh-TW/flags.json | 2 +- public/language/zh-TW/user.json | 4 ++++ 92 files changed, 233 insertions(+), 49 deletions(-) diff --git a/public/language/ar/flags.json b/public/language/ar/flags.json index 68de95b4e4..7c8f9a1e0d 100644 --- a/public/language/ar/flags.json +++ b/public/language/ar/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Bulk Actions", "bulk-resolve": "Resolve Flag(s)", "bulk-success": "%1 flags updated", - "flagged-timeago-readable": "Flagged (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Auto Flagged] Received %1 downvotes." } \ No newline at end of file diff --git a/public/language/ar/user.json b/public/language/ar/user.json index b5e3c32185..ff6035449c 100644 --- a/public/language/ar/user.json +++ b/public/language/ar/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "تأكيد الفصل", "sso.dissociate-confirm": "هل تريد بالتأكيد فصل حسابك عن %1؟", "info.latest-flags": "أحدث العلامات", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "لم يتم العثور على مشاركات معلمة", "info.ban-history": "سجل الحظر الأحدث", "info.no-ban-history": "هذا المستخدم لم يتم حظره مطلقا", diff --git a/public/language/bg/flags.json b/public/language/bg/flags.json index 4f5cf13bf6..57bb987197 100644 --- a/public/language/bg/flags.json +++ b/public/language/bg/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Групови действия", "bulk-resolve": "Разрешаване на доклад(и)", "bulk-success": "%1 доклада са обновени", - "flagged-timeago-readable": "Докладвано (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Авт. докладвано] Получени %1 отрицателни гласа." } \ No newline at end of file diff --git a/public/language/bg/user.json b/public/language/bg/user.json index abc0edfcb1..f2d228b54b 100644 --- a/public/language/bg/user.json +++ b/public/language/bg/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "Потвърждаване на прекъсването", "sso.dissociate-confirm": "Наистина ли искате да прекъснете връзката на акаунта си от „%1“?", "info.latest-flags": "Последни доклади", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "Не са намерени докладвани публикации", "info.ban-history": "Скорошна история на блокиранията", "info.no-ban-history": "Този потребител никога не е бил блокиран", diff --git a/public/language/bn/flags.json b/public/language/bn/flags.json index 996e027833..0a42e3877f 100644 --- a/public/language/bn/flags.json +++ b/public/language/bn/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Bulk Actions", "bulk-resolve": "Resolve Flag(s)", "bulk-success": "%1 flags updated", - "flagged-timeago-readable": "Flagged (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Auto Flagged] Received %1 downvotes." } \ No newline at end of file diff --git a/public/language/bn/user.json b/public/language/bn/user.json index c65af4440f..3498f5c101 100644 --- a/public/language/bn/user.json +++ b/public/language/bn/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "Confirm Dissociation", "sso.dissociate-confirm": "Are you sure you wish to dissociate your account from %1?", "info.latest-flags": "Latest Flags", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "No Flagged Posts Found", "info.ban-history": "Recent Ban History", "info.no-ban-history": "This user has never been banned", diff --git a/public/language/cs/flags.json b/public/language/cs/flags.json index 04f13634b9..3e65c52caf 100644 --- a/public/language/cs/flags.json +++ b/public/language/cs/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Bulk Actions", "bulk-resolve": "Resolve Flag(s)", "bulk-success": "%1 flags updated", - "flagged-timeago-readable": "Flagged (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Auto Flagged] Received %1 downvotes." } \ No newline at end of file diff --git a/public/language/cs/user.json b/public/language/cs/user.json index e5db1de9a8..d2d2e04ea9 100644 --- a/public/language/cs/user.json +++ b/public/language/cs/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "Potvrdit odloučení", "sso.dissociate-confirm": "Jste si jist/a, že chcete odloučit váš účet z %1?", "info.latest-flags": "Poslední označené", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "Nebyly nalezeny žádné označené příspěvky", "info.ban-history": "Poslední historie blokovaných", "info.no-ban-history": "Tento uživatel nebyl nikdy zablokován", diff --git a/public/language/da/flags.json b/public/language/da/flags.json index 996e027833..0a42e3877f 100644 --- a/public/language/da/flags.json +++ b/public/language/da/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Bulk Actions", "bulk-resolve": "Resolve Flag(s)", "bulk-success": "%1 flags updated", - "flagged-timeago-readable": "Flagged (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Auto Flagged] Received %1 downvotes." } \ No newline at end of file diff --git a/public/language/da/user.json b/public/language/da/user.json index d6e25ba154..c60d54fbba 100644 --- a/public/language/da/user.json +++ b/public/language/da/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "Confirm Dissociation", "sso.dissociate-confirm": "Are you sure you wish to dissociate your account from %1?", "info.latest-flags": "Latest Flags", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "No Flagged Posts Found", "info.ban-history": "Recent Ban History", "info.no-ban-history": "This user has never been banned", diff --git a/public/language/de/flags.json b/public/language/de/flags.json index 4c2f29fca6..339df24292 100644 --- a/public/language/de/flags.json +++ b/public/language/de/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Massenaktionen", "bulk-resolve": "Meldung(en) bereiningen", "bulk-success": "%1 Meldungen aktualisiert", - "flagged-timeago-readable": "Gemeldet (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Automatisch gemeldet] %1 Abwertungen erhalten." } \ No newline at end of file diff --git a/public/language/de/user.json b/public/language/de/user.json index 379da7e6fa..86be2c274f 100644 --- a/public/language/de/user.json +++ b/public/language/de/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "Trennung bestätigen", "sso.dissociate-confirm": "Bist du sicher, dass du dein Konto von %1 trennen willst?", "info.latest-flags": "Neuste Meldungen", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "Keine gemeldeten Beiträge gefunden", "info.ban-history": "Sperrungsverlauf", "info.no-ban-history": "Dieser Benutzer wurde noch nie gesperrt", diff --git a/public/language/el/flags.json b/public/language/el/flags.json index 996e027833..0a42e3877f 100644 --- a/public/language/el/flags.json +++ b/public/language/el/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Bulk Actions", "bulk-resolve": "Resolve Flag(s)", "bulk-success": "%1 flags updated", - "flagged-timeago-readable": "Flagged (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Auto Flagged] Received %1 downvotes." } \ No newline at end of file diff --git a/public/language/el/user.json b/public/language/el/user.json index b027d6a265..07f3fb63ac 100644 --- a/public/language/el/user.json +++ b/public/language/el/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "Confirm Dissociation", "sso.dissociate-confirm": "Are you sure you wish to dissociate your account from %1?", "info.latest-flags": "Latest Flags", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "No Flagged Posts Found", "info.ban-history": "Recent Ban History", "info.no-ban-history": "This user has never been banned", diff --git a/public/language/en-US/flags.json b/public/language/en-US/flags.json index 996e027833..0a42e3877f 100644 --- a/public/language/en-US/flags.json +++ b/public/language/en-US/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Bulk Actions", "bulk-resolve": "Resolve Flag(s)", "bulk-success": "%1 flags updated", - "flagged-timeago-readable": "Flagged (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Auto Flagged] Received %1 downvotes." } \ No newline at end of file diff --git a/public/language/en-US/user.json b/public/language/en-US/user.json index f83fe41f07..8fba89a9de 100644 --- a/public/language/en-US/user.json +++ b/public/language/en-US/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "Confirm Dissociation", "sso.dissociate-confirm": "Are you sure you wish to dissociate your account from %1?", "info.latest-flags": "Latest Flags", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "No Flagged Posts Found", "info.ban-history": "Recent Ban History", "info.no-ban-history": "This user has never been banned", diff --git a/public/language/en-x-pirate/flags.json b/public/language/en-x-pirate/flags.json index 996e027833..0a42e3877f 100644 --- a/public/language/en-x-pirate/flags.json +++ b/public/language/en-x-pirate/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Bulk Actions", "bulk-resolve": "Resolve Flag(s)", "bulk-success": "%1 flags updated", - "flagged-timeago-readable": "Flagged (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Auto Flagged] Received %1 downvotes." } \ No newline at end of file diff --git a/public/language/en-x-pirate/user.json b/public/language/en-x-pirate/user.json index 8bedf1815f..8653a1e096 100644 --- a/public/language/en-x-pirate/user.json +++ b/public/language/en-x-pirate/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "Confirm Dissociation", "sso.dissociate-confirm": "Are you sure you wish to dissociate your account from %1?", "info.latest-flags": "Latest Flags", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "No Flagged Posts Found", "info.ban-history": "Recent Ban History", "info.no-ban-history": "This user has never been banned", diff --git a/public/language/es/flags.json b/public/language/es/flags.json index 7abed4fbf4..0bffeb16ee 100644 --- a/public/language/es/flags.json +++ b/public/language/es/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Bulk Actions", "bulk-resolve": "Resolve Flag(s)", "bulk-success": "%1 flags updated", - "flagged-timeago-readable": "Flagged (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Auto Flagged] Received %1 downvotes." } \ No newline at end of file diff --git a/public/language/es/user.json b/public/language/es/user.json index 8b67c376cc..de0d5f59c2 100644 --- a/public/language/es/user.json +++ b/public/language/es/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "Confirmar Disociación", "sso.dissociate-confirm": "Está seguro de que desea disociar su cuenta de %1?", "info.latest-flags": "Ultimos reportes", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "Ningun mensaje reportado encontrado", "info.ban-history": "Histórico reciente de bans", "info.no-ban-history": "Este usuario nunca ha sido baneado", diff --git a/public/language/et/flags.json b/public/language/et/flags.json index 996e027833..0a42e3877f 100644 --- a/public/language/et/flags.json +++ b/public/language/et/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Bulk Actions", "bulk-resolve": "Resolve Flag(s)", "bulk-success": "%1 flags updated", - "flagged-timeago-readable": "Flagged (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Auto Flagged] Received %1 downvotes." } \ No newline at end of file diff --git a/public/language/et/user.json b/public/language/et/user.json index 0603f45816..dc531559d9 100644 --- a/public/language/et/user.json +++ b/public/language/et/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "Confirm Dissociation", "sso.dissociate-confirm": "Are you sure you wish to dissociate your account from %1?", "info.latest-flags": "Viimased raporteerimised", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "Raporteeritud postitusi ei leitud", "info.ban-history": "Hiljutiste keeldude ajalugu", "info.no-ban-history": "Seda kasutajat pole kunagi keelustatud", diff --git a/public/language/fa-IR/flags.json b/public/language/fa-IR/flags.json index 0ad056c4c8..4a268bb030 100644 --- a/public/language/fa-IR/flags.json +++ b/public/language/fa-IR/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "عملیات گروهی", "bulk-resolve": "Resolve Flag(s)", "bulk-success": "%1 گزارش بروزرسانی شد", - "flagged-timeago-readable": "گزارش شده (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Auto Flagged] Received %1 downvotes." } \ No newline at end of file diff --git a/public/language/fa-IR/user.json b/public/language/fa-IR/user.json index 624337c45d..a55866ce70 100644 --- a/public/language/fa-IR/user.json +++ b/public/language/fa-IR/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "Confirm Dissociation", "sso.dissociate-confirm": "آیا مطمئنی می خواهی اتصال %1 به حسابت را لغو کنی؟", "info.latest-flags": "آخرین نشانه گذاری‌ها", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "پست گزارش شده ای یافت نشد", "info.ban-history": "تاریخچه مسدودیت های اخیر", "info.no-ban-history": "این کاربر هرگز مسدود نشده است", diff --git a/public/language/fi/flags.json b/public/language/fi/flags.json index 73eade3503..2132e64f13 100644 --- a/public/language/fi/flags.json +++ b/public/language/fi/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Bulk Actions", "bulk-resolve": "Resolve Flag(s)", "bulk-success": "%1 flags updated", - "flagged-timeago-readable": "Flagged (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Auto Flagged] Received %1 downvotes." } \ No newline at end of file diff --git a/public/language/fi/user.json b/public/language/fi/user.json index 170f401695..6522417524 100644 --- a/public/language/fi/user.json +++ b/public/language/fi/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "Confirm Dissociation", "sso.dissociate-confirm": "Are you sure you wish to dissociate your account from %1?", "info.latest-flags": "Latest Flags", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "No Flagged Posts Found", "info.ban-history": "Estohistorian viimeisimmät", "info.no-ban-history": "This user has never been banned", diff --git a/public/language/fr/flags.json b/public/language/fr/flags.json index beb5e3046f..ccf2565f6e 100644 --- a/public/language/fr/flags.json +++ b/public/language/fr/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Actions en vrac", "bulk-resolve": "Signalement(s) résolu(s)", "bulk-success": "%1 signalements mis à jour", - "flagged-timeago-readable": "Signalé (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Auto Signalement] A reçu %1 votes négatifs." } \ No newline at end of file diff --git a/public/language/fr/user.json b/public/language/fr/user.json index cfb9d54bf9..9bbc717fb1 100644 --- a/public/language/fr/user.json +++ b/public/language/fr/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "Confirmer la dissociation", "sso.dissociate-confirm": "Êtes-vous sûr de vouloir dissocier votre compte de %1 ?", "info.latest-flags": "Derniers signalements", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "Aucun signalement trouvé", "info.ban-history": "Historique de bannissement récent", "info.no-ban-history": "Cet utilisateur n'a jamais été banni", diff --git a/public/language/gl/flags.json b/public/language/gl/flags.json index 295e7a1f1a..2dd293a0dd 100644 --- a/public/language/gl/flags.json +++ b/public/language/gl/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Bulk Actions", "bulk-resolve": "Resolve Flag(s)", "bulk-success": "%1 flags updated", - "flagged-timeago-readable": "Flagged (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Auto Flagged] Received %1 downvotes." } \ No newline at end of file diff --git a/public/language/gl/user.json b/public/language/gl/user.json index cfd18d3834..f07ed633df 100644 --- a/public/language/gl/user.json +++ b/public/language/gl/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "Confirm Dissociation", "sso.dissociate-confirm": "Are you sure you wish to dissociate your account from %1?", "info.latest-flags": "Últimos reportes", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "Non se atopou ninguna mensaxe reportada", "info.ban-history": "Histórico recente de bans", "info.no-ban-history": "Este usuario nunca foi baneado", diff --git a/public/language/he/flags.json b/public/language/he/flags.json index d6a8a8e9c5..a4d4eccb90 100644 --- a/public/language/he/flags.json +++ b/public/language/he/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "פעולות כלליות", "bulk-resolve": "השלמת דיווחים", "bulk-success": "%1 דיווחים עודכנו", - "flagged-timeago-readable": "מדווחים (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[דיווח אוטומטי] פוסט זה קיבל %1 הצבעות למטה." } \ No newline at end of file diff --git a/public/language/he/user.json b/public/language/he/user.json index 83ec0f9eb8..7b91ca75d9 100644 --- a/public/language/he/user.json +++ b/public/language/he/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "אשר ביטול שיוך", "sso.dissociate-confirm": "האם אתה בטוח שאתה רוצה לבטל שיוך חשבונך מ%1?", "info.latest-flags": "דיווחים אחרונים", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "לא נמצאו פוסטים מדווחים", "info.ban-history": "היסטוריית הרחקות", "info.no-ban-history": "משתמש זה לא הורחק מעולם", diff --git a/public/language/hr/flags.json b/public/language/hr/flags.json index 467feb9f00..e9ea1ab90c 100644 --- a/public/language/hr/flags.json +++ b/public/language/hr/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Bulk Actions", "bulk-resolve": "Resolve Flag(s)", "bulk-success": "%1 flags updated", - "flagged-timeago-readable": "Flagged (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Auto Flagged] Received %1 downvotes." } \ No newline at end of file diff --git a/public/language/hr/user.json b/public/language/hr/user.json index 41e56b78c0..5bc99ceadc 100644 --- a/public/language/hr/user.json +++ b/public/language/hr/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "Confirm Dissociation", "sso.dissociate-confirm": "Are you sure you wish to dissociate your account from %1?", "info.latest-flags": "Zadnja zastava", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "Nema objava sa zastavama", "info.ban-history": "Povijest nedavno blokiranih", "info.no-ban-history": "Ovaj korisnik nikad nije bio blokiran", diff --git a/public/language/hu/flags.json b/public/language/hu/flags.json index 2c38151dba..8cfcca9f6a 100644 --- a/public/language/hu/flags.json +++ b/public/language/hu/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Tömeges műveletek", "bulk-resolve": "Megoldott jelölés", "bulk-success": "%1 jelölő frissítve", - "flagged-timeago-readable": "Megjelölve (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Automatikus Megjelölés] %1 negatív szavazatot kapott." } \ No newline at end of file diff --git a/public/language/hu/user.json b/public/language/hu/user.json index 26a0c5777a..083785c9e3 100644 --- a/public/language/hu/user.json +++ b/public/language/hu/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "Leválasztás megerősítése", "sso.dissociate-confirm": "Biztos le akarod választani a fiókod (%1) ?", "info.latest-flags": "Legutóbbi megjelölések", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "Nem található megjelölt hozzászólás", "info.ban-history": "Kitiltási előzmény", "info.no-ban-history": "A felhasználó sosem volt kitiltva", diff --git a/public/language/hy/flags.json b/public/language/hy/flags.json index 68ea85b320..e7eaa204e1 100644 --- a/public/language/hy/flags.json +++ b/public/language/hy/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Զանգվածային գործողություններ", "bulk-resolve": "Լուծել դրոշակ(ներ)ը", "bulk-success": "%1 դրոշները թարմացվել են", - "flagged-timeago-readable": "Նշված (% 2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Auto Flagged] Ստացել է %1 դեմ ձայն:" } \ No newline at end of file diff --git a/public/language/hy/user.json b/public/language/hy/user.json index c4f7858444..27c5e0b5af 100644 --- a/public/language/hy/user.json +++ b/public/language/hy/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "Հաստատեք տարանջատումը", "sso.dissociate-confirm": "Վստա՞հ եք, որ ցանկանում եք անջատել ձեր հաշիվը %1-ից:", "info.latest-flags": "Վերջին դրոշները", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "Դրոշակավորված գրառումներ չեն գտնվել", "info.ban-history": "Արգելքի վերջին պատմությունը", "info.no-ban-history": "Այս օգտատերը երբեք չի արգելափակվել", diff --git a/public/language/id/flags.json b/public/language/id/flags.json index 996e027833..0a42e3877f 100644 --- a/public/language/id/flags.json +++ b/public/language/id/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Bulk Actions", "bulk-resolve": "Resolve Flag(s)", "bulk-success": "%1 flags updated", - "flagged-timeago-readable": "Flagged (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Auto Flagged] Received %1 downvotes." } \ No newline at end of file diff --git a/public/language/id/user.json b/public/language/id/user.json index 3f3b4e3b9e..a8e0f29e1e 100644 --- a/public/language/id/user.json +++ b/public/language/id/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "Confirm Dissociation", "sso.dissociate-confirm": "Are you sure you wish to dissociate your account from %1?", "info.latest-flags": "Latest Flags", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "No Flagged Posts Found", "info.ban-history": "Recent Ban History", "info.no-ban-history": "This user has never been banned", diff --git a/public/language/it/flags.json b/public/language/it/flags.json index 3ce3929f4f..dc4dff0f12 100644 --- a/public/language/it/flags.json +++ b/public/language/it/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Azioni in blocco", "bulk-resolve": "Risolvi segnalazione(i)", "bulk-success": "%1 segnalazioni aggiornate", - "flagged-timeago-readable": "Segnalato (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Contrassegnato automaticamente] Ha ricevuto %1 voti negativi." } \ No newline at end of file diff --git a/public/language/it/user.json b/public/language/it/user.json index a00cfc2098..09ab6fee63 100644 --- a/public/language/it/user.json +++ b/public/language/it/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "Conferma dissociazione", "sso.dissociate-confirm": "Sei sicuro di voler dissociare il tuo account da %1?", "info.latest-flags": "Ultime segnalazioni", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "Non è stato trovato nessun post segnalato", "info.ban-history": "Storico dei Ban recenti", "info.no-ban-history": "Questo utente non è mai stato bannato", diff --git a/public/language/ja/flags.json b/public/language/ja/flags.json index a9c04bbefc..f3d3297224 100644 --- a/public/language/ja/flags.json +++ b/public/language/ja/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Bulk Actions", "bulk-resolve": "Resolve Flag(s)", "bulk-success": "%1 flags updated", - "flagged-timeago-readable": "Flagged (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Auto Flagged] Received %1 downvotes." } \ No newline at end of file diff --git a/public/language/ja/user.json b/public/language/ja/user.json index 1ad42a1ca1..bba4d3a261 100644 --- a/public/language/ja/user.json +++ b/public/language/ja/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "離脱の際に確認する", "sso.dissociate-confirm": "アカウントと %1 の関連付けを解除しますか?", "info.latest-flags": "最近のフラグ", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "フラグのついた投稿はありません", "info.ban-history": "最近停止した履歴", "info.no-ban-history": "このユーザーは停止されていません", diff --git a/public/language/ko/flags.json b/public/language/ko/flags.json index 24fab65245..7ad1688255 100644 --- a/public/language/ko/flags.json +++ b/public/language/ko/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "대량 작업", "bulk-resolve": "신고 해결", "bulk-success": "%1개의 신고가 업데이트되었습니다", - "flagged-timeago-readable": "에 신고됨 (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[자동 신고] %1개의 반대를 받았습니다." } \ No newline at end of file diff --git a/public/language/ko/user.json b/public/language/ko/user.json index 5fd9c5b0cd..6c95172b49 100644 --- a/public/language/ko/user.json +++ b/public/language/ko/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "분리 확인", "sso.dissociate-confirm": "계정을 %1에서 분리하시겠습니까?", "info.latest-flags": "최신 신고", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "신고된 게시물이 없습니다", "info.ban-history": "최근 차단 기록", "info.no-ban-history": "이 사용자는 현재까지 차단된 적이 없습니다.", diff --git a/public/language/lt/flags.json b/public/language/lt/flags.json index 2bce567011..af84a9ca82 100644 --- a/public/language/lt/flags.json +++ b/public/language/lt/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Bulk Actions", "bulk-resolve": "Resolve Flag(s)", "bulk-success": "%1 flags updated", - "flagged-timeago-readable": "Flagged (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Auto Flagged] Received %1 downvotes." } \ No newline at end of file diff --git a/public/language/lt/user.json b/public/language/lt/user.json index c719c752c0..1d9d72c74a 100644 --- a/public/language/lt/user.json +++ b/public/language/lt/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "Confirm Dissociation", "sso.dissociate-confirm": "Are you sure you wish to dissociate your account from %1?", "info.latest-flags": "Latest Flags", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "Nerasta pažymėtų pranešimų", "info.ban-history": "Blokavimų istorija", "info.no-ban-history": "Šis narys nebuvo užblokuotas.", diff --git a/public/language/lv/flags.json b/public/language/lv/flags.json index 52abe02493..471948c0a5 100644 --- a/public/language/lv/flags.json +++ b/public/language/lv/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Bulk Actions", "bulk-resolve": "Resolve Flag(s)", "bulk-success": "%1 flags updated", - "flagged-timeago-readable": "Flagged (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Auto Flagged] Received %1 downvotes." } \ No newline at end of file diff --git a/public/language/lv/user.json b/public/language/lv/user.json index b649ea2b72..d64918c487 100644 --- a/public/language/lv/user.json +++ b/public/language/lv/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "Apstiprināt atsaistīšanu", "sso.dissociate-confirm": "Vai tiešām vēlies atsaistīt Tavu kontu no %1?", "info.latest-flags": "Jaunākās atzīmes", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "Nav atzīmēto rakstu", "info.ban-history": "Nesenā bloķēšanas vēsture", "info.no-ban-history": "Šis lietotājs nekad nav bijis bloķēts", diff --git a/public/language/ms/flags.json b/public/language/ms/flags.json index 996e027833..0a42e3877f 100644 --- a/public/language/ms/flags.json +++ b/public/language/ms/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Bulk Actions", "bulk-resolve": "Resolve Flag(s)", "bulk-success": "%1 flags updated", - "flagged-timeago-readable": "Flagged (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Auto Flagged] Received %1 downvotes." } \ No newline at end of file diff --git a/public/language/ms/user.json b/public/language/ms/user.json index d874389b40..f2ae132b26 100644 --- a/public/language/ms/user.json +++ b/public/language/ms/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "Confirm Dissociation", "sso.dissociate-confirm": "Are you sure you wish to dissociate your account from %1?", "info.latest-flags": "Latest Flags", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "No Flagged Posts Found", "info.ban-history": "Recent Ban History", "info.no-ban-history": "This user has never been banned", diff --git a/public/language/nb/flags.json b/public/language/nb/flags.json index c20ce424ef..29000dec26 100644 --- a/public/language/nb/flags.json +++ b/public/language/nb/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Massehandlinger", "bulk-resolve": "Løse Flagg(ene).", "bulk-success": "%1 flagg er oppdaterte ", - "flagged-timeago-readable": "Flaggede 11 (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Auto Flagged] Received %1 downvotes." } \ No newline at end of file diff --git a/public/language/nb/user.json b/public/language/nb/user.json index 764199b4dc..ee7ab00a19 100644 --- a/public/language/nb/user.json +++ b/public/language/nb/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "Bekreft seperasjon", "sso.dissociate-confirm": "Er du sikker på at du vil separere kontoen din fra %1?", "info.latest-flags": "Seneste flagg", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "Ingen flaggede innlegg funnet", "info.ban-history": "Nylig utestengingshistorikk", "info.no-ban-history": "Denne brukeren har aldri blitt utestengt", diff --git a/public/language/nl/flags.json b/public/language/nl/flags.json index 758ad2d54c..7faecd1af0 100644 --- a/public/language/nl/flags.json +++ b/public/language/nl/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Bulk acties", "bulk-resolve": "Los markering(en) op", "bulk-success": "%1 markeringen aangepast", - "flagged-timeago-readable": "Flagged (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Auto Flagged] Received %1 downvotes." } \ No newline at end of file diff --git a/public/language/nl/user.json b/public/language/nl/user.json index 0abfd0ab12..98daec6848 100644 --- a/public/language/nl/user.json +++ b/public/language/nl/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "Bevestig ontkoppeling", "sso.dissociate-confirm": "Weet u zeker dat u uw account wilt ontkoppelen van %1?", "info.latest-flags": "Laatste markeringen", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "Geen gemarkeerde berichten gevonden", "info.ban-history": "Recente verban-geschiedenis", "info.no-ban-history": "Deze gebruiker is nooit eerder verbannen", diff --git a/public/language/pl/flags.json b/public/language/pl/flags.json index 4a35a6e3b4..98105b291f 100644 --- a/public/language/pl/flags.json +++ b/public/language/pl/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Operacje masowe", "bulk-resolve": "Oznacz flagi jako rozwiązane", "bulk-success": "Zaktualizowano %1 flag", - "flagged-timeago-readable": "Oflagowano (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Automatyczna Flaga] Otrzymano %1 głosów przeciw." } \ No newline at end of file diff --git a/public/language/pl/user.json b/public/language/pl/user.json index 9c5348e432..482dbc8378 100644 --- a/public/language/pl/user.json +++ b/public/language/pl/user.json @@ -1,9 +1,9 @@ { "user-menu": "Menu użytkownika", "banned": "Zbanowany", - "unbanned": "Unbanned", + "unbanned": "Odblokowane", "muted": "Wyciszony", - "unmuted": "Unmuted", + "unmuted": "Wyciszenie anulowane", "offline": "Offline", "deleted": "Usunięty", "username": "Nazwa użytkownika", @@ -164,12 +164,16 @@ "sso.dissociate-confirm-title": "Potwierdź odwiązanie", "sso.dissociate-confirm": "Czy na pewno odwiązać Twoje konto od %1?", "info.latest-flags": "Ostatnie flagi", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "Brak oflagowanych postów", "info.ban-history": "Historia ostatnich banów", "info.no-ban-history": "Ten użytkownik nigdy nie był zbanowany", "info.banned-until": "Zbanowany do %1", "info.banned-expiry": "Wygaśnięcie", - "info.ban-expired": "Ban expired", + "info.ban-expired": "Blokada wygasła", "info.banned-permanently": "Zbanowany permanentnie", "info.banned-reason-label": "Powód", "info.banned-no-reason": "Nie podano powodu.", diff --git a/public/language/pt-BR/flags.json b/public/language/pt-BR/flags.json index 7a76c15595..2ad5e9499d 100644 --- a/public/language/pt-BR/flags.json +++ b/public/language/pt-BR/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Ações em Massa", "bulk-resolve": "Resolver Sinalização(ões)", "bulk-success": "%1 sinalizações atualizadas", - "flagged-timeago-readable": "Sinalizado (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Auto Flagged] Received %1 downvotes." } \ No newline at end of file diff --git a/public/language/pt-BR/user.json b/public/language/pt-BR/user.json index a171d38d88..07e8be4f25 100644 --- a/public/language/pt-BR/user.json +++ b/public/language/pt-BR/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "Confirmar Desassociação", "sso.dissociate-confirm": "Tem certeza de que deseja desassociar a sua conta de %1?", "info.latest-flags": "Últimas Sinalizações", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "Nenhum Post Sinalizado Encontrado", "info.ban-history": "Histórico de Banimentos Recentes", "info.no-ban-history": "Este usuário nunca foi banido", diff --git a/public/language/pt-PT/flags.json b/public/language/pt-PT/flags.json index 14a80cd665..58f5327900 100644 --- a/public/language/pt-PT/flags.json +++ b/public/language/pt-PT/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Bulk Actions", "bulk-resolve": "Resolve Flag(s)", "bulk-success": "%1 flags updated", - "flagged-timeago-readable": "Flagged (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Auto Flagged] Received %1 downvotes." } \ No newline at end of file diff --git a/public/language/pt-PT/user.json b/public/language/pt-PT/user.json index a0be2b156f..cc5f1654ba 100644 --- a/public/language/pt-PT/user.json +++ b/public/language/pt-PT/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "Confirmar Dissociação", "sso.dissociate-confirm": "Are you sure you wish to dissociate your account from %1?", "info.latest-flags": "Denúncias Recentes", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "Não foram encontradas publicações denunciadas", "info.ban-history": "Histórico de expulsões recentes", "info.no-ban-history": "Este utilizador nunca foi banido", diff --git a/public/language/ro/flags.json b/public/language/ro/flags.json index 996e027833..0a42e3877f 100644 --- a/public/language/ro/flags.json +++ b/public/language/ro/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Bulk Actions", "bulk-resolve": "Resolve Flag(s)", "bulk-success": "%1 flags updated", - "flagged-timeago-readable": "Flagged (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Auto Flagged] Received %1 downvotes." } \ No newline at end of file diff --git a/public/language/ro/user.json b/public/language/ro/user.json index d44cdf16bc..1eb8ceb61d 100644 --- a/public/language/ro/user.json +++ b/public/language/ro/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "Confirm Dissociation", "sso.dissociate-confirm": "Are you sure you wish to dissociate your account from %1?", "info.latest-flags": "Latest Flags", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "No Flagged Posts Found", "info.ban-history": "Recent Ban History", "info.no-ban-history": "This user has never been banned", diff --git a/public/language/ru/flags.json b/public/language/ru/flags.json index 3be16016df..b812c9fa7e 100644 --- a/public/language/ru/flags.json +++ b/public/language/ru/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Жалоба %1 обновлена", "bulk-resolve": "Решить жалобы", "bulk-success": "Жалоба %1 обновлена", - "flagged-timeago-readable": "Получена жалоба (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Автожалоба] Получено %1 голосов против." } \ No newline at end of file diff --git a/public/language/ru/user.json b/public/language/ru/user.json index feabc67c64..309cd62e5c 100644 --- a/public/language/ru/user.json +++ b/public/language/ru/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "Подтверждение открепления", "sso.dissociate-confirm": "Вы уверены, что хотите открепить свою учётную запись от %1?", "info.latest-flags": "Последние жалобы", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "Жалоб не найдено", "info.ban-history": "История блокировок", "info.no-ban-history": "Этот пользователь никогда не был заблокирован", diff --git a/public/language/rw/flags.json b/public/language/rw/flags.json index 996e027833..0a42e3877f 100644 --- a/public/language/rw/flags.json +++ b/public/language/rw/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Bulk Actions", "bulk-resolve": "Resolve Flag(s)", "bulk-success": "%1 flags updated", - "flagged-timeago-readable": "Flagged (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Auto Flagged] Received %1 downvotes." } \ No newline at end of file diff --git a/public/language/rw/user.json b/public/language/rw/user.json index dce04600a6..bacfa18089 100644 --- a/public/language/rw/user.json +++ b/public/language/rw/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "Confirm Dissociation", "sso.dissociate-confirm": "Are you sure you wish to dissociate your account from %1?", "info.latest-flags": "Latest Flags", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "No Flagged Posts Found", "info.ban-history": "Recent Ban History", "info.no-ban-history": "This user has never been banned", diff --git a/public/language/sc/flags.json b/public/language/sc/flags.json index 996e027833..0a42e3877f 100644 --- a/public/language/sc/flags.json +++ b/public/language/sc/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Bulk Actions", "bulk-resolve": "Resolve Flag(s)", "bulk-success": "%1 flags updated", - "flagged-timeago-readable": "Flagged (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Auto Flagged] Received %1 downvotes." } \ No newline at end of file diff --git a/public/language/sc/user.json b/public/language/sc/user.json index 48af65b2cf..8bcc7db6ca 100644 --- a/public/language/sc/user.json +++ b/public/language/sc/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "Confirm Dissociation", "sso.dissociate-confirm": "Are you sure you wish to dissociate your account from %1?", "info.latest-flags": "Latest Flags", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "No Flagged Posts Found", "info.ban-history": "Recent Ban History", "info.no-ban-history": "This user has never been banned", diff --git a/public/language/sk/flags.json b/public/language/sk/flags.json index d55b9e5827..e06be6f7e5 100644 --- a/public/language/sk/flags.json +++ b/public/language/sk/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Bulk Actions", "bulk-resolve": "Resolve Flag(s)", "bulk-success": "%1 flags updated", - "flagged-timeago-readable": "Flagged (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Auto Flagged] Received %1 downvotes." } \ No newline at end of file diff --git a/public/language/sk/user.json b/public/language/sk/user.json index 57042cc06f..d20fa88acd 100644 --- a/public/language/sk/user.json +++ b/public/language/sk/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "Potvrdiť odlúčenie", "sso.dissociate-confirm": "Ste si istý, že chcete odlúčiť Váš účet z %1?", "info.latest-flags": "Najnovšie príznaky", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "Neboli nájdené žiadne označené príspevky", "info.ban-history": "Nedávna história zablokovania", "info.no-ban-history": "Tento člen nebol nikdy zablokovaný", diff --git a/public/language/sl/flags.json b/public/language/sl/flags.json index 4b9a03f6eb..07e544aef2 100644 --- a/public/language/sl/flags.json +++ b/public/language/sl/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Bulk Actions", "bulk-resolve": "Resolve Flag(s)", "bulk-success": "%1 flags updated", - "flagged-timeago-readable": "Flagged (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Auto Flagged] Received %1 downvotes." } \ No newline at end of file diff --git a/public/language/sl/user.json b/public/language/sl/user.json index c32e250fb6..2c72679d73 100644 --- a/public/language/sl/user.json +++ b/public/language/sl/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "Confirm Dissociation", "sso.dissociate-confirm": "Are you sure you wish to dissociate your account from %1?", "info.latest-flags": "Latest Flags", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "No Flagged Posts Found", "info.ban-history": "Recent Ban History", "info.no-ban-history": "This user has never been banned", diff --git a/public/language/sq-AL/flags.json b/public/language/sq-AL/flags.json index db14cae57d..ceb5b91d94 100644 --- a/public/language/sq-AL/flags.json +++ b/public/language/sq-AL/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Veprime në mas", "bulk-resolve": "Zgjidhja e raportim(eve)", "bulk-success": "%1 raportime u përditësuan", - "flagged-timeago-readable": "I raportuar (% 2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[I vetë Raportuar] Mori %1 vota kundër." } \ No newline at end of file diff --git a/public/language/sq-AL/user.json b/public/language/sq-AL/user.json index 76dcb9f713..a5904e748b 100644 --- a/public/language/sq-AL/user.json +++ b/public/language/sq-AL/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "Konfirmo shkëputjen", "sso.dissociate-confirm": "Jeni i sigurt që dëshironi të shkëputni llogarinë tuaj nga %1?", "info.latest-flags": "Raportimet më të fundit", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "Nuk u gjet asnjë postim i shënuar", "info.ban-history": "Historia e fundit e ndalimit", "info.no-ban-history": "Ky përdorues nuk është ndaluar kurrë", diff --git a/public/language/sr/flags.json b/public/language/sr/flags.json index 67168e53f5..759dc847ba 100644 --- a/public/language/sr/flags.json +++ b/public/language/sr/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Масовне радње", "bulk-resolve": "Реши заставицу/е", "bulk-success": "Ажурираних заставица: %1", - "flagged-timeago-readable": "Означено заставицом (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Аутоматски означено заставицом] Примљено је %1 негативних гласова." } \ No newline at end of file diff --git a/public/language/sr/user.json b/public/language/sr/user.json index 385b346acc..4f53352bb8 100644 --- a/public/language/sr/user.json +++ b/public/language/sr/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "Потврди одвајање", "sso.dissociate-confirm": "Да ли сте сигурни да желите да одвојите овај налог од %1?", "info.latest-flags": "Најновији означени заставицом", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "Нема пронађених порука означених заставицом", "info.ban-history": "Историја недавно забрањених налога", "info.no-ban-history": "Овај корисник никада није био забрањен", diff --git a/public/language/sv/flags.json b/public/language/sv/flags.json index eb9a6520b0..edf03a3e44 100644 --- a/public/language/sv/flags.json +++ b/public/language/sv/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Bulk Actions", "bulk-resolve": "Resolve Flag(s)", "bulk-success": "%1 flags updated", - "flagged-timeago-readable": "Flagged (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Auto Flagged] Received %1 downvotes." } \ No newline at end of file diff --git a/public/language/sv/user.json b/public/language/sv/user.json index f77c46315d..ca6c60fc6d 100644 --- a/public/language/sv/user.json +++ b/public/language/sv/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "Bekräfta frånkoppling", "sso.dissociate-confirm": "Är du säker att du vill koppla bort ditt konto från %1?", "info.latest-flags": "Senaste flaggade", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "Inga flaggade inlägg hittades", "info.ban-history": "Ban historik", "info.no-ban-history": "Den här användaren har aldrig varit bannad", diff --git a/public/language/th/flags.json b/public/language/th/flags.json index ee734f96b8..f2f49f383c 100644 --- a/public/language/th/flags.json +++ b/public/language/th/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "จัดการทีละมากๆ", "bulk-resolve": "แก้ปัญหารายงาน", "bulk-success": "รายงาน %1 อันถูกอัพเดท", - "flagged-timeago-readable": "ถูกรายงานเมื่อ (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[รายงานอัตโนมัติ] ถูกโหวดลง %1 ครั้ง" } \ No newline at end of file diff --git a/public/language/th/user.json b/public/language/th/user.json index 89b129f11d..74d67f8a15 100644 --- a/public/language/th/user.json +++ b/public/language/th/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "ยืนยันการแยกตัวออก", "sso.dissociate-confirm": "คุณแน่ใจหรือไม่ว่าต้องการแยกบัญชีออกจาก %1?", "info.latest-flags": "รายงานล่าสุด", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "ไม่พบโพสต์ที่ถูกรายงาน", "info.ban-history": "ประวัติแบนล่าสุด", "info.no-ban-history": "ผู้ใช้นี้ถูกแบนแล้ว", diff --git a/public/language/tr/flags.json b/public/language/tr/flags.json index c5ca32a7ed..36ba7251f3 100644 --- a/public/language/tr/flags.json +++ b/public/language/tr/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Toplu Aksiyonlar", "bulk-resolve": "Şikayetleri Çözümle", "bulk-success": "%1 şikayet güncellendi", - "flagged-timeago-readable": "Şikayet Edilme Zamanı (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Otomatik Şikayet] %1 tane eksi oy aldı." } \ No newline at end of file diff --git a/public/language/tr/user.json b/public/language/tr/user.json index 332805f4f4..8ea9fb9385 100644 --- a/public/language/tr/user.json +++ b/public/language/tr/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "Ayrışmayı Onayla", "sso.dissociate-confirm": "%1 'den ayrışmak istediğinizden emin misiniz?", "info.latest-flags": "Son Şikayetler", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "Şikayet edilen bir ileti bulunamadı", "info.ban-history": "Yasaklama Geçmişi", "info.no-ban-history": "Bu kullanıcı daha önce hiç yasaklanmadı", diff --git a/public/language/uk/flags.json b/public/language/uk/flags.json index 985718c01e..38800b17e7 100644 --- a/public/language/uk/flags.json +++ b/public/language/uk/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Bulk Actions", "bulk-resolve": "Resolve Flag(s)", "bulk-success": "%1 flags updated", - "flagged-timeago-readable": "Flagged (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Auto Flagged] Received %1 downvotes." } \ No newline at end of file diff --git a/public/language/uk/user.json b/public/language/uk/user.json index 65b2893f93..8f712b26e1 100644 --- a/public/language/uk/user.json +++ b/public/language/uk/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "Підтвердьте від'єднання", "sso.dissociate-confirm": "Ви впевнені, що хочете від'єднати свій акаунт від %1?", "info.latest-flags": "Останні скарги", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "Не знайдено постів зі скаргами", "info.ban-history": "Історія банів", "info.no-ban-history": "Цього користувача ніколи не банили", diff --git a/public/language/vi/flags.json b/public/language/vi/flags.json index ef370696ee..9ab84ccb33 100644 --- a/public/language/vi/flags.json +++ b/public/language/vi/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "‎Hành động hàng loạt‎", "bulk-resolve": "Xử Lý Cờ", "bulk-success": "%1 cờ đã cập nhật", - "flagged-timeago-readable": "Đã Gắn Cờ (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Tự động được gắn cờ] Đã nhận được %1 phiếu phản đối." } \ No newline at end of file diff --git a/public/language/vi/user.json b/public/language/vi/user.json index 9601ae97e8..1480a91a23 100644 --- a/public/language/vi/user.json +++ b/public/language/vi/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "Xác nhận việc tách khỏi", "sso.dissociate-confirm": "Bạn có chắc chắn muốn tách tài khoản của mình khỏi %1?", "info.latest-flags": "Gắn cờ mới nhất", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "Không Tìm Thấy Bài Bị Gắn Cờ", "info.ban-history": "Lịch Sử Cấm Gần Đây", "info.no-ban-history": "Người dùng này chưa bao giờ bị cấm", diff --git a/public/language/zh-CN/flags.json b/public/language/zh-CN/flags.json index a0891c0768..9f215e5643 100644 --- a/public/language/zh-CN/flags.json +++ b/public/language/zh-CN/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "批量操作", "bulk-resolve": "处理举报", "bulk-success": "已更新%1个举报", - "flagged-timeago-readable": "被举报于 (%2) ", + "flagged-timeago": "Flagged ", "auto-flagged": "【自动举报】收到 %1 个踩" } \ No newline at end of file diff --git a/public/language/zh-CN/user.json b/public/language/zh-CN/user.json index 569cb6ffe3..5ce0e61c62 100644 --- a/public/language/zh-CN/user.json +++ b/public/language/zh-CN/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "确认解除关联", "sso.dissociate-confirm": "您确定您要将您的账号与 %1 解除关联吗?", "info.latest-flags": "最新举报", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "没有找到被举报的帖子", "info.ban-history": "最近封禁历史", "info.no-ban-history": "该用户从未被封禁", diff --git a/public/language/zh-TW/flags.json b/public/language/zh-TW/flags.json index b361076616..090984504c 100644 --- a/public/language/zh-TW/flags.json +++ b/public/language/zh-TW/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Bulk Actions", "bulk-resolve": "Resolve Flag(s)", "bulk-success": "%1 flags updated", - "flagged-timeago-readable": "Flagged (%2)", + "flagged-timeago": "Flagged ", "auto-flagged": "[Auto Flagged] Received %1 downvotes." } \ No newline at end of file diff --git a/public/language/zh-TW/user.json b/public/language/zh-TW/user.json index aa80585d6d..5a08fe71d9 100644 --- a/public/language/zh-TW/user.json +++ b/public/language/zh-TW/user.json @@ -164,6 +164,10 @@ "sso.dissociate-confirm-title": "確認解除關聯", "sso.dissociate-confirm": "您確定要將您的帳戶與 %1 解除關聯嗎?", "info.latest-flags": "最新舉報", + "info.profile": "Profile", + "info.post": "Post", + "info.view-flag": "View flag", + "info.reported-by": "Reported by:", "info.no-flags": "沒有找到被舉報的貼文", "info.ban-history": "最近停權紀錄", "info.no-ban-history": "該使用者從未被停權", From 7d24b04b3b722dde92def5ef1760cfd68a1c590e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Tue, 23 Apr 2024 13:00:47 -0400 Subject: [PATCH 112/168] feat: parse moderation notes as markdown https://github.com/NodeBB/NodeBB/issues/12477 --- public/src/client/account/info.js | 13 +++---------- src/socket.io/user.js | 1 + src/user/info.js | 13 ++++++------- 3 files changed, 10 insertions(+), 17 deletions(-) diff --git a/public/src/client/account/info.js b/public/src/client/account/info.js index 71adca7b11..f99bd7c36d 100644 --- a/public/src/client/account/info.js +++ b/public/src/client/account/info.js @@ -13,20 +13,13 @@ define('forum/account/info', ['forum/account/header', 'alerts', 'forum/account/s function handleModerationNote() { $('[component="account/save-moderation-note"]').on('click', function () { const note = $('[component="account/moderation-note"]').val(); - socket.emit('user.setModerationNote', { uid: ajaxify.data.uid, note: note }, function (err) { + socket.emit('user.setModerationNote', { uid: ajaxify.data.uid, note: note }, function (err, notes) { if (err) { return alerts.error(err); } $('[component="account/moderation-note"]').val(''); - alerts.success('[[user:info.moderation-note.success]]'); - const timestamp = Date.now(); - const data = [{ - note: utils.escapeHTML(note), - user: app.user, - timestamp: timestamp, - timestampISO: utils.toISOString(timestamp), - }]; - app.parseAndTranslate('account/info', 'moderationNotes', { moderationNotes: data }, function (html) { + + app.parseAndTranslate('account/info', 'moderationNotes', { moderationNotes: notes }, function (html) { $('[component="account/moderation-note/list"]').prepend(html); html.find('.timeago').timeago(); }); diff --git a/src/socket.io/user.js b/src/socket.io/user.js index 443e73678f..63620247f9 100644 --- a/src/socket.io/user.js +++ b/src/socket.io/user.js @@ -152,6 +152,7 @@ SocketUser.setModerationNote = async function (socket, data) { } await user.appendModerationNote({ uid: data.uid, noteData }); + return await user.getModerationNotes(data.uid, 0, 0); }; SocketUser.deleteUpload = async function (socket, data) { diff --git a/src/user/info.js b/src/user/info.js index ff67dbd3cb..a013f746ff 100644 --- a/src/user/info.js +++ b/src/user/info.js @@ -7,6 +7,7 @@ const db = require('../database'); const posts = require('../posts'); const topics = require('../topics'); const utils = require('../utils'); +const plugins = require('../plugins'); const Flags = require('../flags'); module.exports = function (User) { @@ -114,22 +115,20 @@ module.exports = function (User) { const notes = await db.getObjects(keys); const uids = []; - const noteData = notes.map((note) => { + notes.forEach((note) => { if (note) { uids.push(note.uid); note.timestampISO = utils.toISOString(note.timestamp); - note.note = validator.escape(String(note.note)); } - return note; }); - const userData = await User.getUsersFields(uids, ['uid', 'username', 'userslug', 'picture']); - noteData.forEach((note, index) => { + await Promise.all(notes.map(async (note, index) => { if (note) { + note.note = await plugins.hooks.fire('filter:parse.raw', String(note.note)); note.user = userData[index]; } - }); - return noteData; + })); + return notes; }; User.appendModerationNote = async ({ uid, noteData }) => { From ce9e1cf19b9cef5a4d18d9b8db9c508e35beff86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Tue, 23 Apr 2024 13:17:50 -0400 Subject: [PATCH 113/168] cap number of posts checked activity pub returns 40k :lantern: --- src/topics/sorted.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/topics/sorted.js b/src/topics/sorted.js index 92cc2f6ed6..c2f916718e 100644 --- a/src/topics/sorted.js +++ b/src/topics/sorted.js @@ -85,7 +85,7 @@ module.exports = function (Topics) { } async function getTidsWithMostPostsInTerm(term) { - const pids = await db.getSortedSetRevRangeByScore('posts:pid', 0, -1, '+inf', Date.now() - Topics.getSinceFromTerm(term)); + const pids = await db.getSortedSetRevRangeByScore('posts:pid', 0, 1000, '+inf', Date.now() - Topics.getSinceFromTerm(term)); const postObjs = await db.getObjectsFields(pids.map(pid => `post:${pid}`), ['tid']); const tidToCount = {}; postObjs.forEach((post) => { From c73f759cf1bef9fe90a9a516c84d271778468949 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Tue, 23 Apr 2024 13:23:20 -0400 Subject: [PATCH 114/168] test: add back timestamp --- src/user/info.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/user/info.js b/src/user/info.js index a013f746ff..3fd1f725bb 100644 --- a/src/user/info.js +++ b/src/user/info.js @@ -75,6 +75,7 @@ module.exports = function (User) { flags.forEach((flag, idx) => { if (flag) { + flag.timestamp = flag.datetime; flag.timestampISO = new Date(flag.datetime).toISOString(); flag.reports = reports[idx]; } From fed5165ffb6fb1ed1f5613bd3179281101764ea9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Tue, 23 Apr 2024 13:31:35 -0400 Subject: [PATCH 115/168] test: fix moderation note test --- test/user.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/user.js b/test/user.js index 4d65ffaa64..668ec4ec8b 100644 --- a/test/user.js +++ b/test/user.js @@ -1683,7 +1683,7 @@ describe('User', () => { await setTimeout(50); await socketUser.setModerationNote({ uid: adminUid }, { uid: testUid, note: ' Date: Tue, 23 Apr 2024 13:42:14 -0400 Subject: [PATCH 116/168] test: fix redis tests --- src/user/info.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/user/info.js b/src/user/info.js index 3fd1f725bb..0fd4d756aa 100644 --- a/src/user/info.js +++ b/src/user/info.js @@ -75,8 +75,8 @@ module.exports = function (User) { flags.forEach((flag, idx) => { if (flag) { - flag.timestamp = flag.datetime; - flag.timestampISO = new Date(flag.datetime).toISOString(); + flag.timestamp = parseInt(flag.datetime, 10); + flag.timestampISO = utils.toISOString(flag.datetime); flag.reports = reports[idx]; } }); From d2175c6de3c45b1e06a17c5c345da97a047ba412 Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Wed, 24 Apr 2024 09:19:15 +0000 Subject: [PATCH 117/168] Latest translations and fallbacks --- public/language/bg/flags.json | 2 +- public/language/bg/user.json | 14 +++++++------- public/language/pl/flags.json | 2 +- public/language/pl/user.json | 8 ++++---- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/public/language/bg/flags.json b/public/language/bg/flags.json index 57bb987197..e643d375dc 100644 --- a/public/language/bg/flags.json +++ b/public/language/bg/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Групови действия", "bulk-resolve": "Разрешаване на доклад(и)", "bulk-success": "%1 доклада са обновени", - "flagged-timeago": "Flagged ", + "flagged-timeago": "Докладвано ", "auto-flagged": "[Авт. докладвано] Получени %1 отрицателни гласа." } \ No newline at end of file diff --git a/public/language/bg/user.json b/public/language/bg/user.json index f2d228b54b..e7b3229bad 100644 --- a/public/language/bg/user.json +++ b/public/language/bg/user.json @@ -1,9 +1,9 @@ { "user-menu": "Потребителско меню", "banned": "Блокиран", - "unbanned": "Unbanned", + "unbanned": "Деблокиран", "muted": "Заглушен", - "unmuted": "Unmuted", + "unmuted": "Премахнато заглушаване", "offline": "Извън линия", "deleted": "Изтрит", "username": "Потребителско име", @@ -164,16 +164,16 @@ "sso.dissociate-confirm-title": "Потвърждаване на прекъсването", "sso.dissociate-confirm": "Наистина ли искате да прекъснете връзката на акаунта си от „%1“?", "info.latest-flags": "Последни доклади", - "info.profile": "Profile", - "info.post": "Post", - "info.view-flag": "View flag", - "info.reported-by": "Reported by:", + "info.profile": "Профил", + "info.post": "Публикация", + "info.view-flag": "Преглед на доклада", + "info.reported-by": "Докладвано от:", "info.no-flags": "Не са намерени докладвани публикации", "info.ban-history": "Скорошна история на блокиранията", "info.no-ban-history": "Този потребител никога не е бил блокиран", "info.banned-until": "Блокиран до %1", "info.banned-expiry": "Давност", - "info.ban-expired": "Ban expired", + "info.ban-expired": "Блокирането е изтекло", "info.banned-permanently": "Блокиран за постоянно", "info.banned-reason-label": "Причина", "info.banned-no-reason": "Няма посочена причина.", diff --git a/public/language/pl/flags.json b/public/language/pl/flags.json index 98105b291f..c85dab16da 100644 --- a/public/language/pl/flags.json +++ b/public/language/pl/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Operacje masowe", "bulk-resolve": "Oznacz flagi jako rozwiązane", "bulk-success": "Zaktualizowano %1 flag", - "flagged-timeago": "Flagged ", + "flagged-timeago": "Oznaczone ", "auto-flagged": "[Automatyczna Flaga] Otrzymano %1 głosów przeciw." } \ No newline at end of file diff --git a/public/language/pl/user.json b/public/language/pl/user.json index 482dbc8378..3a9018a475 100644 --- a/public/language/pl/user.json +++ b/public/language/pl/user.json @@ -164,10 +164,10 @@ "sso.dissociate-confirm-title": "Potwierdź odwiązanie", "sso.dissociate-confirm": "Czy na pewno odwiązać Twoje konto od %1?", "info.latest-flags": "Ostatnie flagi", - "info.profile": "Profile", - "info.post": "Post", - "info.view-flag": "View flag", - "info.reported-by": "Reported by:", + "info.profile": "Profil", + "info.post": "Wpis", + "info.view-flag": "Zobacz flagę", + "info.reported-by": "Zgłoszenie dodał:", "info.no-flags": "Brak oflagowanych postów", "info.ban-history": "Historia ostatnich banów", "info.no-ban-history": "Ten użytkownik nigdy nie był zbanowany", From af205cc48aa71c55b427a88cca14b7f756cfce1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Wed, 24 Apr 2024 11:10:04 -0400 Subject: [PATCH 118/168] feat: closes #12477, allow editing moderation notes --- install/package.json | 4 +-- public/src/client/account/info.js | 58 +++++++++++++++++++++++++++++-- src/socket.io/user.js | 20 +++++++++++ src/user/info.js | 12 ++++++- 4 files changed, 88 insertions(+), 6 deletions(-) diff --git a/install/package.json b/install/package.json index 8ff948229b..8f4aa6c862 100644 --- a/install/package.json +++ b/install/package.json @@ -103,10 +103,10 @@ "nodebb-plugin-ntfy": "1.7.4", "nodebb-plugin-spam-be-gone": "2.2.2", "nodebb-rewards-essentials": "1.0.0", - "nodebb-theme-harmony": "1.2.52", + "nodebb-theme-harmony": "1.2.53", "nodebb-theme-lavender": "7.1.8", "nodebb-theme-peace": "2.2.4", - "nodebb-theme-persona": "13.3.17", + "nodebb-theme-persona": "13.3.18", "nodebb-widget-essentials": "7.0.15", "nodemailer": "6.9.13", "nprogress": "0.2.0", diff --git a/public/src/client/account/info.js b/public/src/client/account/info.js index f99bd7c36d..f044860cd6 100644 --- a/public/src/client/account/info.js +++ b/public/src/client/account/info.js @@ -12,12 +12,16 @@ define('forum/account/info', ['forum/account/header', 'alerts', 'forum/account/s function handleModerationNote() { $('[component="account/save-moderation-note"]').on('click', function () { - const note = $('[component="account/moderation-note"]').val(); - socket.emit('user.setModerationNote', { uid: ajaxify.data.uid, note: note }, function (err, notes) { + const noteEl = $('[component="account/moderation-note"]'); + const note = noteEl.val(); + socket.emit('user.setModerationNote', { + uid: ajaxify.data.uid, + note: note, + }, function (err, notes) { if (err) { return alerts.error(err); } - $('[component="account/moderation-note"]').val(''); + noteEl.val(''); app.parseAndTranslate('account/info', 'moderationNotes', { moderationNotes: notes }, function (html) { $('[component="account/moderation-note/list"]').prepend(html); @@ -25,6 +29,54 @@ define('forum/account/info', ['forum/account/header', 'alerts', 'forum/account/s }); }); }); + + + $('[component="account/moderation-note/edit"]').on('click', function () { + const parent = $(this).parents('[data-id]'); + const contentArea = parent.find('[component="account/moderation-note/content-area"]'); + const editArea = parent.find('[component="account/moderation-note/edit-area"]'); + contentArea.addClass('hidden'); + editArea.removeClass('hidden'); + editArea.find('textarea').trigger('focus').putCursorAtEnd(); + }); + + $('[component="account/moderation-note/save-edit"]').on('click', function () { + const parent = $(this).parents('[data-id]'); + const contentArea = parent.find('[component="account/moderation-note/content-area"]'); + const editArea = parent.find('[component="account/moderation-note/edit-area"]'); + contentArea.removeClass('hidden'); + const textarea = editArea.find('textarea'); + + socket.emit('user.editModerationNote', { + uid: ajaxify.data.uid, + id: parent.attr('data-id'), + note: textarea.val(), + }, function (err, notes) { + if (err) { + return alerts.error(err); + } + textarea.css({ + height: textarea.prop('scrollHeight') + 'px', + }); + editArea.addClass('hidden'); + contentArea.find('.content').html(notes[0].note); + }); + }); + + $('[component="account/moderation-note/cancel-edit"]').on('click', function () { + const parent = $(this).parents('[data-id]'); + const contentArea = parent.find('[component="account/moderation-note/content-area"]'); + const editArea = parent.find('[component="account/moderation-note/edit-area"]'); + contentArea.removeClass('hidden'); + editArea.addClass('hidden'); + }); + + $('[component="account/moderation-note/edit-area"] textarea').each((i, el) => { + const $el = $(el); + $el.css({ + height: $el.prop('scrollHeight') + 'px', + }).parent().addClass('hidden'); + }); } return Info; diff --git a/src/socket.io/user.js b/src/socket.io/user.js index 63620247f9..51e5dc9f71 100644 --- a/src/socket.io/user.js +++ b/src/socket.io/user.js @@ -155,6 +155,26 @@ SocketUser.setModerationNote = async function (socket, data) { return await user.getModerationNotes(data.uid, 0, 0); }; +SocketUser.editModerationNote = async function (socket, data) { + if (!socket.uid || !data || !data.uid || !data.note || !data.id) { + throw new Error('[[error:invalid-data]]'); + } + const noteData = { + note: data.note, + timestamp: data.id, + }; + let canEdit = await privileges.users.canEdit(socket.uid, data.uid); + if (!canEdit) { + canEdit = await user.isModeratorOfAnyCategory(socket.uid); + } + if (!canEdit) { + throw new Error('[[error:no-privileges]]'); + } + + await user.setModerationNote({ uid: data.uid, noteData }); + return await user.getModerationNotesByIds(data.uid, [data.id]); +}; + SocketUser.deleteUpload = async function (socket, data) { if (!data || !data.name || !data.uid) { throw new Error('[[error:invalid-data]]'); diff --git a/src/user/info.js b/src/user/info.js index 0fd4d756aa..47de1154fb 100644 --- a/src/user/info.js +++ b/src/user/info.js @@ -112,12 +112,17 @@ module.exports = function (User) { User.getModerationNotes = async function (uid, start, stop) { const noteIds = await db.getSortedSetRevRange(`uid:${uid}:moderation:notes`, start, stop); + return await User.getModerationNotesByIds(uid, noteIds); + }; + + User.getModerationNotesByIds = async (uid, noteIds) => { const keys = noteIds.map(id => `uid:${uid}:moderation:note:${id}`); const notes = await db.getObjects(keys); const uids = []; - notes.forEach((note) => { + notes.forEach((note, idx) => { if (note) { + note.id = noteIds[idx]; uids.push(note.uid); note.timestampISO = utils.toISOString(note.timestamp); } @@ -125,6 +130,7 @@ module.exports = function (User) { const userData = await User.getUsersFields(uids, ['uid', 'username', 'userslug', 'picture']); await Promise.all(notes.map(async (note, index) => { if (note) { + note.rawNote = validator.escape(String(note.note)); note.note = await plugins.hooks.fire('filter:parse.raw', String(note.note)); note.user = userData[index]; } @@ -136,4 +142,8 @@ module.exports = function (User) { await db.sortedSetAdd(`uid:${uid}:moderation:notes`, noteData.timestamp, noteData.timestamp); await db.setObject(`uid:${uid}:moderation:note:${noteData.timestamp}`, noteData); }; + + User.setModerationNote = async ({ uid, noteData }) => { + await db.setObject(`uid:${uid}:moderation:note:${noteData.timestamp}`, noteData); + }; }; From 19bd3eea5a0f00f2d83750fb112211c5fbbd4f55 Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Thu, 25 Apr 2024 09:19:30 +0000 Subject: [PATCH 119/168] Latest translations and fallbacks --- public/language/tr/admin/advanced/events.json | 8 ++++---- public/language/tr/admin/manage/users.json | 2 +- public/language/tr/admin/settings/navigation.json | 2 +- public/language/tr/flags.json | 2 +- public/language/tr/user.json | 14 +++++++------- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/public/language/tr/admin/advanced/events.json b/public/language/tr/admin/advanced/events.json index 4b626ccfd7..57cad49c65 100644 --- a/public/language/tr/admin/advanced/events.json +++ b/public/language/tr/admin/advanced/events.json @@ -9,9 +9,9 @@ "filter-type": "Aktivite türü", "filter-start": "Başlangıç zamanı", "filter-end": "Bitiş zamanı", - "filter-user": "Filter by User", - "filter-user.placeholder": "Type user name to filter...", - "filter-group": "Filter by Group", - "filter-group.placeholder": "Type group name to filter...", + "filter-user": "Kullanıcı ismine göre filtrele", + "filter-user.placeholder": "Filtrelemek için kullanıcı adı girin...", + "filter-group": "Gruba göre filtrele", + "filter-group.placeholder": "Filtrelemek için grup adı girin...", "filter-per-page": "Sayfa Başına" } \ No newline at end of file diff --git a/public/language/tr/admin/manage/users.json b/public/language/tr/admin/manage/users.json index 1c8111dab4..b383cb167c 100644 --- a/public/language/tr/admin/manage/users.json +++ b/public/language/tr/admin/manage/users.json @@ -122,7 +122,7 @@ "alerts.x-users-found": "%1 kullanıcı bulundu, (%2 saniye)", "alerts.select-a-single-user-to-change-email": "Select a single user to change email", "export": "Dışa Aktar", - "export-users-fields-title": "Select CSV Fields", + "export-users-fields-title": "CSV Alanlarını seçin", "export-field-email": "E-posta adresi", "export-field-username": "Kullanıcı Adı", "export-field-uid": "UID", diff --git a/public/language/tr/admin/settings/navigation.json b/public/language/tr/admin/settings/navigation.json index 53ad5ec5e2..f9c62511a6 100644 --- a/public/language/tr/admin/settings/navigation.json +++ b/public/language/tr/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: opsiyonel", "properties": "Özellikler:", - "show-to-groups": "Show to Groups:", + "show-to-groups": "Bu gruplara göster:", "open-new-window": "Yeni pencerede aç", "dropdown": "Açılır liste", "dropdown-placeholder": "Place your dropdown menu items below, ie:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/public/language/tr/flags.json b/public/language/tr/flags.json index 36ba7251f3..b0664c3c5e 100644 --- a/public/language/tr/flags.json +++ b/public/language/tr/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Toplu Aksiyonlar", "bulk-resolve": "Şikayetleri Çözümle", "bulk-success": "%1 şikayet güncellendi", - "flagged-timeago": "Flagged ", + "flagged-timeago": "Şikayet edildi ", "auto-flagged": "[Otomatik Şikayet] %1 tane eksi oy aldı." } \ No newline at end of file diff --git a/public/language/tr/user.json b/public/language/tr/user.json index 8ea9fb9385..19ff16fc21 100644 --- a/public/language/tr/user.json +++ b/public/language/tr/user.json @@ -1,9 +1,9 @@ { "user-menu": "Kullanıcı menüsü", "banned": "Yasaklı", - "unbanned": "Unbanned", + "unbanned": "Yasağı kaldırıldı", "muted": "Sessiz", - "unmuted": "Unmuted", + "unmuted": "Sesi açıldı", "offline": "Çevrimdışı", "deleted": "Silindi", "username": "Kullanıcı Adı", @@ -164,16 +164,16 @@ "sso.dissociate-confirm-title": "Ayrışmayı Onayla", "sso.dissociate-confirm": "%1 'den ayrışmak istediğinizden emin misiniz?", "info.latest-flags": "Son Şikayetler", - "info.profile": "Profile", - "info.post": "Post", - "info.view-flag": "View flag", - "info.reported-by": "Reported by:", + "info.profile": "Profil", + "info.post": "İleti", + "info.view-flag": "Şikayeti görüntüle", + "info.reported-by": "Şikayet eden:", "info.no-flags": "Şikayet edilen bir ileti bulunamadı", "info.ban-history": "Yasaklama Geçmişi", "info.no-ban-history": "Bu kullanıcı daha önce hiç yasaklanmadı", "info.banned-until": "Yasaklama süresi %1", "info.banned-expiry": "Bitiş", - "info.ban-expired": "Ban expired", + "info.ban-expired": "Yasak süresi bitti", "info.banned-permanently": "Kalıcı şekilde yasakla", "info.banned-reason-label": "Gerekçe", "info.banned-no-reason": "Gerekçe belirtilmedi.", From bc51968eaf1161a3721d7ab281fd9c9a6a1cde73 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 25 Apr 2024 10:08:57 -0400 Subject: [PATCH 120/168] fix(deps): update dependency nodebb-plugin-composer-default to v10.2.34 (#12530) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 8f4aa6c862..38814b7a43 100644 --- a/install/package.json +++ b/install/package.json @@ -94,7 +94,7 @@ "multiparty": "4.2.3", "nconf": "0.12.1", "nodebb-plugin-2factor": "7.5.0", - "nodebb-plugin-composer-default": "10.2.33", + "nodebb-plugin-composer-default": "10.2.34", "nodebb-plugin-dbsearch": "6.2.3", "nodebb-plugin-emoji": "5.1.15", "nodebb-plugin-emoji-android": "4.0.0", From dad57e04dea9d1f7dcb14a370cb4861abfbb632a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 25 Apr 2024 10:09:15 -0400 Subject: [PATCH 121/168] chore(deps): update commitlint monorepo to v19.3.0 (#12526) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install/package.json b/install/package.json index 38814b7a43..5512653791 100644 --- a/install/package.json +++ b/install/package.json @@ -154,8 +154,8 @@ }, "devDependencies": { "@apidevtools/swagger-parser": "10.1.0", - "@commitlint/cli": "19.2.2", - "@commitlint/config-angular": "19.2.2", + "@commitlint/cli": "19.3.0", + "@commitlint/config-angular": "19.3.0", "coveralls": "3.1.1", "eslint": "8.57.0", "eslint-config-nodebb": "0.2.1", From f764a3ea5c018db9686ef6c8a77804db793ba076 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Thu, 25 Apr 2024 11:15:23 -0400 Subject: [PATCH 122/168] use `cid::pids` instead of posts:pid --- src/topics/sorted.js | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/topics/sorted.js b/src/topics/sorted.js index c2f916718e..98292f0ddb 100644 --- a/src/topics/sorted.js +++ b/src/topics/sorted.js @@ -45,7 +45,7 @@ module.exports = function (Topics) { let tids = []; if (params.term !== 'alltime') { if (params.sort === 'posts') { - tids = await getTidsWithMostPostsInTerm(params.term); + tids = await getTidsWithMostPostsInTerm(params.cids, params.uid, params.term); } else { tids = await Topics.getLatestTidsFromSet('topics:tid', 0, -1, params.term); } @@ -84,8 +84,20 @@ module.exports = function (Topics) { return 'topics:recent'; } - async function getTidsWithMostPostsInTerm(term) { - const pids = await db.getSortedSetRevRangeByScore('posts:pid', 0, 1000, '+inf', Date.now() - Topics.getSinceFromTerm(term)); + async function getTidsWithMostPostsInTerm(cids, uid, term) { + if (Array.isArray(cids)) { + cids = await privileges.categories.filterCids('topics:read', cids, uid); + } else { + cids = await categories.getCidsByPrivilege('categories:cid', uid, 'topics:read'); + } + + const pids = await db.getSortedSetRevRangeByScore( + cids.map(cid => `cid:${cid}:pids`), + 0, + 1000, + '+inf', + Date.now() - Topics.getSinceFromTerm(term) + ); const postObjs = await db.getObjectsFields(pids.map(pid => `post:${pid}`), ['tid']); const tidToCount = {}; postObjs.forEach((post) => { @@ -93,7 +105,8 @@ module.exports = function (Topics) { tidToCount[post.tid] += 1; }); - return _.uniq(postObjs.map(post => String(post.tid))).sort((t1, t2) => tidToCount[t2] - tidToCount[t1]); + return _.uniq(postObjs.map(post => String(post.tid))) + .sort((t1, t2) => tidToCount[t2] - tidToCount[t1]); } async function getWatchedTopics(params) { From 983a35e6383035163af5a6f1c09c50ec786c6d5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Thu, 25 Apr 2024 19:41:40 -0400 Subject: [PATCH 123/168] fix: #12533, go to post after changing owner --- public/src/client/topic/change-owner.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/src/client/topic/change-owner.js b/public/src/client/topic/change-owner.js index 4f82dda2ad..b0b4e5be6c 100644 --- a/public/src/client/topic/change-owner.js +++ b/public/src/client/topic/change-owner.js @@ -73,7 +73,7 @@ define('forum/topic/change-owner', [ if (err) { return alerts.error(err); } - ajaxify.refresh(); + ajaxify.go(`/post/${postSelect.pids[0]}`); closeModal(); }); From c9a92555f0c7d08cc568a30e93391e7dba2d47ee Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Fri, 26 Apr 2024 09:19:02 +0000 Subject: [PATCH 124/168] Latest translations and fallbacks --- public/language/th/admin/advanced/errors.json | 4 +-- public/language/th/admin/dashboard.json | 28 +++++++++---------- public/language/th/flags.json | 2 +- public/language/th/user.json | 14 +++++----- public/language/tr/notifications.json | 20 ++++++------- 5 files changed, 34 insertions(+), 34 deletions(-) diff --git a/public/language/th/admin/advanced/errors.json b/public/language/th/admin/advanced/errors.json index 7e7985ed9c..d1a60a7bb3 100644 --- a/public/language/th/admin/advanced/errors.json +++ b/public/language/th/admin/advanced/errors.json @@ -1,6 +1,6 @@ { "errors": "Errors", - "figure-x": "การปรับแต่ง %1", + "figure-x": "รูปที่ %1", "error-events-per-day": "%1 อีเวนท์ต่อวัน", "error.404": "404 ไม่พบเพจ", "error.503": "503 เซอร์วิสไม่พร้อมใช้งาน", @@ -9,7 +9,7 @@ "clear-error-log": "ล้างผลบันทึกความผิดพลาด", "route": "เส้นทาง", "count": "นับจำนวน", - "no-routes-not-found": "เอาแล้วซิ! พบความผิดพลาดรหัส 404", + "no-routes-not-found": "ไชโย! ไม่พบความผิดพลาดรหัส 404", "clear404-confirm": "คุณแน่ใจแล้วใช่ไหมว่าต้องการล้างผลบันทึกความผิดพลาดรหัส 404?", "clear404-success": "บันทึกความผิดพลาด \"404 ไม่พบเพจ\" ถูกล้างเรียบร้อยแล้ว" } \ No newline at end of file diff --git a/public/language/th/admin/dashboard.json b/public/language/th/admin/dashboard.json index 1944bf2254..48fda4fb41 100644 --- a/public/language/th/admin/dashboard.json +++ b/public/language/th/admin/dashboard.json @@ -30,23 +30,23 @@ "upgrade-available": "มีเวอร์ชันใหม่ (v%1) ออกมาแล้ว โปรดพิจารณา อัพเกรด NodeBB ของคุณ.", "prerelease-upgrade-available": "นี่เป็นรุ่นทดลองของ NodeBB ที่ล้าสมัยแล้ว มีเวอร์ชั่นใหม่ (v%1) ออกมา โปรดพิจารณา อัพเกรด NodeBB ของคุณ.", "prerelease-warning": "นี่เป็น รุ่นทดลอง ของ NodeBB อาจมีข้อบกพร่องที่ไม่ตั้งใจ", - "fallback-emailer-not-found": "Fallback emailer not found!", - "running-in-development": "Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator", - "latest-lookup-failed": "Failed to look up latest available version of NodeBB", + "fallback-emailer-not-found": "ไม่พบตัวส่งอีเมลสำรอง!", + "running-in-development": "ฟอรั่มกำลังทำงานในโหมดพัฒนา ฟอรั่มอาจมีช่องโหว่ให้โจมตี โปรดติดต่อผู้ดูแลระบบของคุณ", + "latest-lookup-failed": "ไม่สามารถหาเวอร์ชั่นล่าสุดของ NodeBB ได้", - "notices": "Notices", - "restart-not-required": "Restart not required", - "restart-required": "Restart required", - "search-plugin-installed": "Search Plugin installed", - "search-plugin-not-installed": "Search Plugin not installed", - "search-plugin-tooltip": "Install a search plugin from the plugin page in order to activate search functionality", + "notices": "หมายเหตุ", + "restart-not-required": "ไม่จำเป็นต้องเริ่มต้นระบบใหม่", + "restart-required": "จำเป็นต้องเริ่มต้นระบบใหม่", + "search-plugin-installed": "ติดตั้งปลั๊กอินสำหรับค้นหาแล้ว", + "search-plugin-not-installed": "ยังไม่ได้ติดตั้งปลั๊กอินสำหรับค้นหา", + "search-plugin-tooltip": "ติดตั้งปลั๊กอินสำหรับค้นหาจากหน้าปลั๊กอินเพื่อเปิดใช้งานการค้นหา", - "control-panel": "System Control", - "rebuild-and-restart": "Rebuild & Restart", - "restart": "Restart", - "restart-warning": "Rebuilding or Restarting your NodeBB will drop all existing connections for a few seconds.", + "control-panel": "การควบคุมระบบ", + "rebuild-and-restart": "สร้างใหม่ & เริ่มต้นระบบใหม่", + "restart": "เริ่มต้นระบบใหม่", + "restart-warning": "การสร้างหรือเริ่มต้นระบบ NodeBB ของคุณจะทำให้การเชื่อมต่อถูกตัดเป็นเวลาหลายวินาที", "restart-disabled": "Rebuilding and Restarting your NodeBB has been disabled as you do not seem to be running it via the appropriate daemon.", - "maintenance-mode": "Maintenance Mode", + "maintenance-mode": "โหมดการซ่อมบำรุง", "maintenance-mode-title": "Click here to set up maintenance mode for NodeBB", "dark-mode": "Dark Mode", "realtime-chart-updates": "Realtime Chart Updates", diff --git a/public/language/th/flags.json b/public/language/th/flags.json index f2f49f383c..9813a063eb 100644 --- a/public/language/th/flags.json +++ b/public/language/th/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "จัดการทีละมากๆ", "bulk-resolve": "แก้ปัญหารายงาน", "bulk-success": "รายงาน %1 อันถูกอัพเดท", - "flagged-timeago": "Flagged ", + "flagged-timeago": "ถูกรายงาน ", "auto-flagged": "[รายงานอัตโนมัติ] ถูกโหวดลง %1 ครั้ง" } \ No newline at end of file diff --git a/public/language/th/user.json b/public/language/th/user.json index 74d67f8a15..e68b9dc4f0 100644 --- a/public/language/th/user.json +++ b/public/language/th/user.json @@ -1,9 +1,9 @@ { "user-menu": "เมนูผู้ใช้งาน", "banned": "ถูกแบน", - "unbanned": "Unbanned", + "unbanned": "ถูกปลดแบน", "muted": "ถูกจำกัดการโพสต์", - "unmuted": "Unmuted", + "unmuted": "ถูกยกเลิกจำกัดการโพสต์", "offline": "ออฟไลน์", "deleted": "ลบแล้ว", "username": "ชื่อผู้ใช้", @@ -164,16 +164,16 @@ "sso.dissociate-confirm-title": "ยืนยันการแยกตัวออก", "sso.dissociate-confirm": "คุณแน่ใจหรือไม่ว่าต้องการแยกบัญชีออกจาก %1?", "info.latest-flags": "รายงานล่าสุด", - "info.profile": "Profile", - "info.post": "Post", - "info.view-flag": "View flag", - "info.reported-by": "Reported by:", + "info.profile": "โปรไฟล์", + "info.post": "โพสต์", + "info.view-flag": "ดูรายงาน", + "info.reported-by": "ถูกรายงานโดย:", "info.no-flags": "ไม่พบโพสต์ที่ถูกรายงาน", "info.ban-history": "ประวัติแบนล่าสุด", "info.no-ban-history": "ผู้ใช้นี้ถูกแบนแล้ว", "info.banned-until": "แบนจนกว่า %1", "info.banned-expiry": "หมดอายุ", - "info.ban-expired": "Ban expired", + "info.ban-expired": "การแบนหมดอายุ", "info.banned-permanently": "แบนอย่างถาวร", "info.banned-reason-label": "เหตุผล", "info.banned-no-reason": "ไม่ได้ให้เหตุผลไว้", diff --git a/public/language/tr/notifications.json b/public/language/tr/notifications.json index 9517894245..4b432e2d32 100644 --- a/public/language/tr/notifications.json +++ b/public/language/tr/notifications.json @@ -9,7 +9,7 @@ "continue-to": "%1 'a devam et", "return-to": "%1 'a geri dön", "new-notification": "Yeni bir bildiriminiz var", - "you-have-unread-notifications": "Okunmamış bildirimleriniz var.", + "you-have-unread-notifications": "Okunmamış bildirimleriniz var", "all": "Hepsi", "topics": "Konular", "tags": "Etiketler", @@ -32,10 +32,10 @@ "user-posted-in-public-room-dual": "%1 ve %2 şu odaya yazdı: %4", "user-posted-in-public-room-triple": "%1, %2 ve %3 şu odaya yazdılar: %5", "user-posted-in-public-room-multiple": "%1, %2 ve %3 diğer kullanıcı şu odaya yazdılar: %5", - "upvoted-your-post-in": "%1 şu konudaki iletinizi beğendi: %2.", + "upvoted-your-post-in": "%1 şu konudaki iletinizi beğendi: %2", "upvoted-your-post-in-dual": "%1 ve %2 şu konudaki iletinizi beğendi: %3", - "upvoted-your-post-in-triple": "%1, %2 ve %3 şu konudaki iletinizi beğendi: %4.", - "upvoted-your-post-in-multiple": "%1, %2 ve %3 diğer kullanıcı şu konudaki iletinizi beğendi: %4.", + "upvoted-your-post-in-triple": "%1, %2 ve %3 şu konudaki iletinizi beğendi: %4", + "upvoted-your-post-in-multiple": "%1, %2 ve %3 diğer kullanıcı şu konudaki iletinizi beğendi: %4", "moved-your-post": "%1, iletinizi şuraya taşıdı: %2", "moved-your-topic": "%1 şuraya taşındı: %2", "user-flagged-post-in": "%1 şu konudaki bir iletiyi şikayet etti: %2", @@ -57,12 +57,12 @@ "user-posted-topic-with-tag-triple": "%1 şu etiketleri kullanarak yeni bir konu oluşturdu: %2, %3 ve %4", "user-posted-topic-with-tag-multiple": "%1 şu etiketleri kullanarak yeni bir konu oluşturdu: %2", "user-posted-topic-in-category": "%1 şu kategoride yeni bir başlık oluşturdu: %2", - "user-started-following-you": "%1 sizi takip etmeye başladı.", + "user-started-following-you": "%1 sizi takip etmeye başladı", "user-started-following-you-dual": "%1 ve %2 sizi takip etmeye başladı.", - "user-started-following-you-triple": "%1, %2 and %3 started following you.", - "user-started-following-you-multiple": "%1, %2 and %3 others started following you.", - "new-register": "%1 kayıt olma isteği gönderdi.", - "new-register-multiple": "Beklemede %1 kayıt olma isteği bulunmaktadır.", + "user-started-following-you-triple": "%1, %2 and %3 started following you", + "user-started-following-you-multiple": "%1, %2 and %3 others started following you", + "new-register": "%1 kayıt olma isteği gönderdi", + "new-register-multiple": "Beklemede %1 kayıt olma isteği bulunmaktadır", "flag-assigned-to-you": "Şikayet %1 size devredildi", "post-awaiting-review": "İnceleme bekleyen ileti(ler) var", "profile-exported": "%1 profili hazırlandı, indirmek için tıklayınız", @@ -70,7 +70,7 @@ "uploads-exported": "%1 yüklemeleri hazırlandı, indirmek için tıklayınız", "users-csv-exported": "Kullanıcılar csv hazırlandı, indirmek için tıklayınız", "post-queue-accepted": "Sıradaki gönderiniz kabul edildi. Gönderinizi görmek için buraya tıklayın.", - "post-queue-rejected": "Sıraya alınmış gönderiniz reddedildi.", + "post-queue-rejected": "Sıraya alınmış gönderiniz reddedildi", "post-queue-notify": "Onay sırasındaki ileti için bir bildirim var:
\"%1\"", "email-confirmed": "E-posta onaylandı", "email-confirmed-message": "E-postanızı onayladığınız için teşekkürler. Hesabınız tamamen aktif edildi.", From dc35bf8bb5280eb74196161df8587a4e163e0469 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Fri, 26 Apr 2024 10:41:09 -0400 Subject: [PATCH 125/168] fix: getCategoryById to return shallow clone of object --- src/categories/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/categories/index.js b/src/categories/index.js index 54346d5a64..5e5efd921a 100644 --- a/src/categories/index.js +++ b/src/categories/index.js @@ -64,7 +64,7 @@ Categories.getCategoryById = async function (data) { category: category, ...data, }); - return result.category; + return { ...result.category }; }; Categories.getAllCidsFromSet = async function (key) { From 88a5dfb7b79c25cb804afeee443f7f08d2283519 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Fri, 26 Apr 2024 12:14:11 -0400 Subject: [PATCH 126/168] fix: unintentional object pollution by buildForSelectCategories --- src/categories/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/categories/index.js b/src/categories/index.js index 5e5efd921a..b266788b3a 100644 --- a/src/categories/index.js +++ b/src/categories/index.js @@ -370,7 +370,7 @@ async function getSelectData(cids, fields) { } Categories.buildForSelectCategories = function (categories, fields, parentCid) { - function recursive(category, categoriesData, level, depth) { + function recursive({ ...category }, categoriesData, level, depth) { const bullet = level ? '• ' : ''; category.value = category.cid; category.level = level; From 2a58d0996d6bdc13a2439f2b98892a225fe5d51d Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Fri, 26 Apr 2024 14:11:36 -0400 Subject: [PATCH 127/168] fix: use reference object for post summary v3 api call --- public/openapi/write/posts/pid/summary.yaml | 38 +-------------------- 1 file changed, 1 insertion(+), 37 deletions(-) diff --git a/public/openapi/write/posts/pid/summary.yaml b/public/openapi/write/posts/pid/summary.yaml index 29d46c4129..59d5599065 100644 --- a/public/openapi/write/posts/pid/summary.yaml +++ b/public/openapi/write/posts/pid/summary.yaml @@ -31,40 +31,4 @@ get: status: $ref: ../../../components/schemas/Status.yaml#/Status response: - type: object - properties: - pid: - type: number - tid: - type: number - description: A topic identifier - content: - type: string - uid: - type: number - description: A user identifier - timestamp: - type: number - deleted: - type: number - upvotes: - type: number - downvotes: - type: number - replies: - type: number - votes: - type: number - timestampISO: - type: string - user: - type: object - additionalProperties: {} - topic: - type: object - additionalProperties: {} - category: - type: object - additionalProperties: {} - isMainPost: - type: boolean \ No newline at end of file + $ref: ../../../components/schemas/PostObject.yaml#/PostObject From ca354e0b9d589a0b895da24cfe362934e030a9df Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Mon, 29 Apr 2024 09:20:03 +0000 Subject: [PATCH 128/168] Latest translations and fallbacks --- public/language/it/flags.json | 2 +- public/language/it/user.json | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/public/language/it/flags.json b/public/language/it/flags.json index dc4dff0f12..8a06c1a932 100644 --- a/public/language/it/flags.json +++ b/public/language/it/flags.json @@ -90,6 +90,6 @@ "bulk-actions": "Azioni in blocco", "bulk-resolve": "Risolvi segnalazione(i)", "bulk-success": "%1 segnalazioni aggiornate", - "flagged-timeago": "Flagged ", + "flagged-timeago": "Segnalato ", "auto-flagged": "[Contrassegnato automaticamente] Ha ricevuto %1 voti negativi." } \ No newline at end of file diff --git a/public/language/it/user.json b/public/language/it/user.json index 09ab6fee63..7f5bac3720 100644 --- a/public/language/it/user.json +++ b/public/language/it/user.json @@ -1,9 +1,9 @@ { "user-menu": "Menu utente", "banned": "Bannato", - "unbanned": "Unbanned", + "unbanned": "Non bannato", "muted": "Silenziato", - "unmuted": "Unmuted", + "unmuted": "Non silenziato", "offline": "Non in linea", "deleted": "Eliminato", "username": "Nome Utente", @@ -164,16 +164,16 @@ "sso.dissociate-confirm-title": "Conferma dissociazione", "sso.dissociate-confirm": "Sei sicuro di voler dissociare il tuo account da %1?", "info.latest-flags": "Ultime segnalazioni", - "info.profile": "Profile", + "info.profile": "Profilo", "info.post": "Post", - "info.view-flag": "View flag", - "info.reported-by": "Reported by:", + "info.view-flag": "Visualizza segnalazioni", + "info.reported-by": "Segnalato da:", "info.no-flags": "Non è stato trovato nessun post segnalato", "info.ban-history": "Storico dei Ban recenti", "info.no-ban-history": "Questo utente non è mai stato bannato", "info.banned-until": "Bannato fino %1", "info.banned-expiry": "Scadenza", - "info.ban-expired": "Ban expired", + "info.ban-expired": "Ban scaduto", "info.banned-permanently": "Bannato permanentemente", "info.banned-reason-label": "Motivo", "info.banned-no-reason": "Non è stata data nessuna motivazione.", From d5bfe32e61bc692db152478e18ed2f59f44e4439 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 09:42:52 -0400 Subject: [PATCH 129/168] fix(deps): update dependency nodebb-widget-essentials to v7.0.16 (#12535) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 5512653791..64ef382b41 100644 --- a/install/package.json +++ b/install/package.json @@ -107,7 +107,7 @@ "nodebb-theme-lavender": "7.1.8", "nodebb-theme-peace": "2.2.4", "nodebb-theme-persona": "13.3.18", - "nodebb-widget-essentials": "7.0.15", + "nodebb-widget-essentials": "7.0.16", "nodemailer": "6.9.13", "nprogress": "0.2.0", "passport": "0.7.0", From 3f62b8927a5cbba52c5ea0131765b8200bb2c3a7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 09:42:59 -0400 Subject: [PATCH 130/168] fix(deps): update dependency jquery-ui to v1.13.3 (#12534) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 64ef382b41..669f6bb463 100644 --- a/install/package.json +++ b/install/package.json @@ -79,7 +79,7 @@ "jquery-deserialize": "2.0.0", "jquery-form": "4.3.0", "jquery-serializeobject": "1.0.0", - "jquery-ui": "1.13.2", + "jquery-ui": "1.13.3", "jsesc": "3.0.2", "json2csv": "5.0.7", "jsonwebtoken": "9.0.2", From c036786cba25fa52a45a91b0203e8f72da5ef597 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 09:43:07 -0400 Subject: [PATCH 131/168] fix(deps): update dependency lru-cache to v10.2.2 (#12532) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 669f6bb463..ba493698ad 100644 --- a/install/package.json +++ b/install/package.json @@ -85,7 +85,7 @@ "jsonwebtoken": "9.0.2", "lodash": "4.17.21", "logrotate-stream": "0.2.9", - "lru-cache": "10.2.0", + "lru-cache": "10.2.2", "mime": "3.0.0", "mkdirp": "3.0.1", "mongodb": "6.5.0", From 325d00ea942a156374eab60ca532360351289664 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Mon, 29 Apr 2024 10:32:07 -0400 Subject: [PATCH 132/168] feat: track uid for email/username changes, closes #12454 --- install/package.json | 4 ++-- src/api/users.js | 4 ++-- src/socket.io/admin/user.js | 2 +- src/user/email.js | 5 +++-- src/user/info.js | 17 ++++++++++++++--- src/user/profile.js | 6 +++--- 6 files changed, 25 insertions(+), 13 deletions(-) diff --git a/install/package.json b/install/package.json index ba493698ad..7112a62733 100644 --- a/install/package.json +++ b/install/package.json @@ -103,10 +103,10 @@ "nodebb-plugin-ntfy": "1.7.4", "nodebb-plugin-spam-be-gone": "2.2.2", "nodebb-rewards-essentials": "1.0.0", - "nodebb-theme-harmony": "1.2.53", + "nodebb-theme-harmony": "1.2.54", "nodebb-theme-lavender": "7.1.8", "nodebb-theme-peace": "2.2.4", - "nodebb-theme-persona": "13.3.18", + "nodebb-theme-persona": "13.3.19", "nodebb-widget-essentials": "7.0.16", "nodemailer": "6.9.13", "nprogress": "0.2.0", diff --git a/src/api/users.js b/src/api/users.js index 1f44bb4372..931e75b36b 100644 --- a/src/api/users.js +++ b/src/api/users.js @@ -454,7 +454,7 @@ usersAPI.addEmail = async (caller, { email, skipConfirmation, uid }) => { throw new Error('[[error:email-taken]]'); } await user.setUserField(uid, 'email', email); - await user.email.confirmByUid(uid); + await user.email.confirmByUid(uid, caller.uid); } } else { await usersAPI.update(caller, { uid, email }); @@ -504,7 +504,7 @@ usersAPI.confirmEmail = async (caller, { uid, email, sessionId }) => { await user.email.confirmByCode(code, sessionId); return true; } else if (current && current === email) { // i.e. old account w/ unconf. email in user hash - await user.email.confirmByUid(uid); + await user.email.confirmByUid(uid, caller.uid); return true; } diff --git a/src/socket.io/admin/user.js b/src/socket.io/admin/user.js index 45e91caaa6..db9a49ac1f 100644 --- a/src/socket.io/admin/user.js +++ b/src/socket.io/admin/user.js @@ -70,7 +70,7 @@ User.validateEmail = async function (socket, uids) { if (email) { await user.setUserField(uid, 'email', email); } - await user.email.confirmByUid(uid); + await user.email.confirmByUid(uid, socket.uid); } }; diff --git a/src/user/email.js b/src/user/email.js index c54a986828..aec9379f41 100644 --- a/src/user/email.js +++ b/src/user/email.js @@ -214,10 +214,11 @@ UserEmail.confirmByCode = async function (code, sessionId) { }; // confirm uid's email via ACP -UserEmail.confirmByUid = async function (uid) { +UserEmail.confirmByUid = async function (uid, callerUid = 0) { if (!(parseInt(uid, 10) > 0)) { throw new Error('[[error:invalid-uid]]'); } + callerUid = callerUid || uid; const currentEmail = await user.getUserField(uid, 'email'); if (!currentEmail) { throw new Error('[[error:invalid-email]]'); @@ -241,7 +242,7 @@ UserEmail.confirmByUid = async function (uid) { db.sortedSetAddBulk([ ['email:uid', uid, currentEmail.toLowerCase()], ['email:sorted', 0, `${currentEmail.toLowerCase()}:${uid}`], - [`user:${uid}:emails`, Date.now(), `${currentEmail}:${Date.now()}`], + [`user:${uid}:emails`, Date.now(), `${currentEmail}:${Date.now()}:${callerUid}`], ]), user.setUserField(uid, 'email:confirmed', 1), groups.join('verified-users', uid), diff --git a/src/user/info.js b/src/user/info.js index 47de1154fb..6b488fe41e 100644 --- a/src/user/info.js +++ b/src/user/info.js @@ -60,13 +60,24 @@ module.exports = function (User) { User.getHistory = async function (set) { const data = await db.getSortedSetRevRangeWithScores(set, 0, -1); - return data.map((set) => { + data.forEach((set) => { set.timestamp = set.score; set.timestampISO = utils.toISOString(set.score); - set.value = validator.escape(String(set.value.split(':')[0])); + const parts = set.value.split(':'); + set.value = validator.escape(String(parts[0])); + set.byUid = validator.escape(String(parts[2] || '')); delete set.score; - return set; }); + + const uids = _.uniq(data.map(d => d && d.byUid).filter(Boolean)); + const usersData = await User.getUsersFields(uids, ['uid', 'username', 'userslug', 'picture']); + const uidToUser = _.zipObject(uids, usersData); + data.forEach((d) => { + if (d.byUid) { + d.byUser = uidToUser[d.byUid]; + } + }); + return data; }; async function getFlagMetadata(flags) { diff --git a/src/user/profile.js b/src/user/profile.js index 9c1792f0f6..9d65037bbe 100644 --- a/src/user/profile.js +++ b/src/user/profile.js @@ -48,7 +48,7 @@ module.exports = function (User) { if (field === 'email') { return await updateEmail(updateUid, data.email); } else if (field === 'username') { - return await updateUsername(updateUid, data.username); + return await updateUsername(updateUid, data.username, uid); } else if (field === 'fullname') { return await updateFullname(updateUid, data.fullname); } @@ -247,7 +247,7 @@ module.exports = function (User) { } } - async function updateUsername(uid, newUsername) { + async function updateUsername(uid, newUsername, callerUid) { if (!newUsername) { return; } @@ -260,7 +260,7 @@ module.exports = function (User) { await Promise.all([ updateUidMapping('username', uid, newUsername, userData.username), updateUidMapping('userslug', uid, newUserslug, userData.userslug), - db.sortedSetAdd(`user:${uid}:usernames`, now, `${newUsername}:${now}`), + db.sortedSetAdd(`user:${uid}:usernames`, now, `${newUsername}:${now}:${callerUid}`), ]); await db.sortedSetRemove('username:sorted', `${userData.username.toLowerCase()}:${uid}`); await db.sortedSetAdd('username:sorted', 0, `${newUsername.toLowerCase()}:${uid}`); From 5eb8c90bf8eb628663b530db67ec68a9a41b198c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Mon, 29 Apr 2024 10:39:36 -0400 Subject: [PATCH 133/168] test: fix schema --- public/openapi/read/user/userslug/info.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/openapi/read/user/userslug/info.yaml b/public/openapi/read/user/userslug/info.yaml index 110e252be5..66c3ba0730 100644 --- a/public/openapi/read/user/userslug/info.yaml +++ b/public/openapi/read/user/userslug/info.yaml @@ -69,6 +69,8 @@ get: properties: value: type: string + byUid: + type: string timestamp: type: number timestampISO: @@ -81,6 +83,10 @@ get: properties: value: type: string + byUid: + type: string + byUser: + type: object timestamp: type: number timestampISO: From ad708c9ff3a26aafb3a4fa39d534006ee6cae4ec Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 10:54:57 -0400 Subject: [PATCH 134/168] fix(deps): update dependency tough-cookie to v4.1.4 (#12540) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 7112a62733..ac4729c9a1 100644 --- a/install/package.json +++ b/install/package.json @@ -141,7 +141,7 @@ "timeago": "1.6.7", "tinycon": "0.6.8", "toobusy-js": "0.5.1", - "tough-cookie": "4.1.3", + "tough-cookie": "4.1.4", "validator": "13.11.0", "webpack": "5.91.0", "webpack-merge": "5.10.0", From 7ee4272470f71e92a953f2b8f769421c3a261424 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 1 May 2024 10:43:52 -0400 Subject: [PATCH 135/168] chore(deps): update dependency sass-embedded to v1.76.0 (#12542) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index ac4729c9a1..ea54b80efe 100644 --- a/install/package.json +++ b/install/package.json @@ -172,7 +172,7 @@ "smtp-server": "3.13.4" }, "optionalDependencies": { - "sass-embedded": "1.75.0" + "sass-embedded": "1.76.0" }, "resolutions": { "*/jquery": "3.7.1" From 8f60603bda529833f602a8690fb7720a8978dd95 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 1 May 2024 10:43:59 -0400 Subject: [PATCH 136/168] fix(deps): update dependency sass to v1.76.0 (#12541) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index ea54b80efe..d831a66667 100644 --- a/install/package.json +++ b/install/package.json @@ -124,7 +124,7 @@ "rss": "1.2.2", "rtlcss": "4.1.1", "sanitize-html": "2.13.0", - "sass": "1.75.0", + "sass": "1.76.0", "semver": "7.6.0", "serve-favicon": "2.5.0", "sharp": "0.32.6", From ffd6d56b27a8b9a75fa54f7f0e720f41b01eaa93 Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Thu, 2 May 2024 09:19:27 +0000 Subject: [PATCH 137/168] Latest translations and fallbacks --- public/language/de/admin/dashboard.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/public/language/de/admin/dashboard.json b/public/language/de/admin/dashboard.json index ceb163174b..9229f720aa 100644 --- a/public/language/de/admin/dashboard.json +++ b/public/language/de/admin/dashboard.json @@ -95,7 +95,7 @@ "expand-analytics": "Analytik erweitern", "clear-search-history": "Suchverlauf löschen", "clear-search-history-confirm": "Bist du dir sicher, dass du den gesamten Suchverlauf löschen möchten?", - "search-term": "Term", - "search-count": "Count", - "view-all": "View all" + "search-term": "Bezeichnung", + "search-count": "Anzahl", + "view-all": "Zeige alle" } From 8a034314a13a8ba29343fe5b0a7fbbc40c6b7617 Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Fri, 3 May 2024 14:18:21 +0000 Subject: [PATCH 138/168] chore: incrementing version number - v3.7.5 --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 3f87d2b7b0..016610af80 100644 --- a/install/package.json +++ b/install/package.json @@ -2,7 +2,7 @@ "name": "nodebb", "license": "GPL-3.0", "description": "NodeBB Forum", - "version": "3.7.4", + "version": "3.7.5", "homepage": "https://www.nodebb.org", "repository": { "type": "git", From febeede50be099fed3eb950e7a53924a7a84ed5d Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Fri, 3 May 2024 14:18:22 +0000 Subject: [PATCH 139/168] chore: update changelog for v3.7.5 --- CHANGELOG.md | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1e8fc4fdb1..cf08b1240e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,57 @@ +#### v3.7.5 (2024-05-03) + +##### Chores + +* incrementing version number - v3.7.4 (6678744c) +* update changelog for v3.7.4 (8a1b281b) +* incrementing version number - v3.7.3 (2d62b6f6) +* incrementing version number - v3.7.2 (cc257e7e) +* incrementing version number - v3.7.1 (712365a5) +* incrementing version number - v3.7.0 (9a6153d7) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #12543, use PATCH (420c8999) + #### v3.7.4 (2024-04-17) ##### Chores From 79cc9ad0856fdad151f260c3d712ff80800bcbbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Fri, 3 May 2024 10:55:47 -0400 Subject: [PATCH 140/168] use upper case methods --- public/src/modules/api.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/public/src/modules/api.js b/public/src/modules/api.js index d0e7c26680..fcee6b94b0 100644 --- a/public/src/modules/api.js +++ b/public/src/modules/api.js @@ -66,7 +66,7 @@ async function xhr(options) { const isJSON = contentType && contentType.startsWith('application/json'); let response; - if (options.method !== 'head') { + if (options.method !== 'HEAD') { if (isJSON) { response = await res.json(); } else { @@ -95,14 +95,14 @@ export function get(route, data, onSuccess) { export function head(route, data, onSuccess) { return call({ url: route + (data && Object.keys(data).length ? ('?' + $.param(data)) : ''), - method: 'head', + method: 'HEAD', }, onSuccess); } export function post(route, data, onSuccess) { return call({ url: route, - method: 'post', + method: 'POST', data, headers: { 'x-csrf-token': config.csrf_token, @@ -124,7 +124,7 @@ export function patch(route, data, onSuccess) { export function put(route, data, onSuccess) { return call({ url: route, - method: 'put', + method: 'PUT', data, headers: { 'x-csrf-token': config.csrf_token, @@ -135,7 +135,7 @@ export function put(route, data, onSuccess) { export function del(route, data, onSuccess) { return call({ url: route, - method: 'delete', + method: 'DELETE', data, headers: { 'x-csrf-token': config.csrf_token, From 1e3a321da6ff64c3505dba0bb5d82e3629ef6dfc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Mon, 6 May 2024 16:22:27 -0400 Subject: [PATCH 141/168] chore: up themes --- install/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install/package.json b/install/package.json index 82424ea04c..37eedbfa21 100644 --- a/install/package.json +++ b/install/package.json @@ -103,9 +103,9 @@ "nodebb-plugin-ntfy": "1.7.4", "nodebb-plugin-spam-be-gone": "2.2.2", "nodebb-rewards-essentials": "1.0.0", - "nodebb-theme-harmony": "1.2.54", + "nodebb-theme-harmony": "1.2.55", "nodebb-theme-lavender": "7.1.8", - "nodebb-theme-peace": "2.2.4", + "nodebb-theme-peace": "2.2.5", "nodebb-theme-persona": "13.3.19", "nodebb-widget-essentials": "7.0.16", "nodemailer": "6.9.13", From 8fcfb1810148a7b872060e176af56c02156372c4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 6 May 2024 17:02:12 -0400 Subject: [PATCH 142/168] fix(deps): update dependency nodebb-plugin-composer-default to v10.2.35 (#12546) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 37eedbfa21..8c5c04ae18 100644 --- a/install/package.json +++ b/install/package.json @@ -94,7 +94,7 @@ "multiparty": "4.2.3", "nconf": "0.12.1", "nodebb-plugin-2factor": "7.5.0", - "nodebb-plugin-composer-default": "10.2.34", + "nodebb-plugin-composer-default": "10.2.35", "nodebb-plugin-dbsearch": "6.2.3", "nodebb-plugin-emoji": "5.1.15", "nodebb-plugin-emoji-android": "4.0.0", From 4813772ce8a727f686cb7d99e19b8f475bf614af Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 6 May 2024 17:02:23 -0400 Subject: [PATCH 143/168] fix(deps): update dependency mongodb to v6.6.0 (#12544) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 8c5c04ae18..9d60cc9a0f 100644 --- a/install/package.json +++ b/install/package.json @@ -88,7 +88,7 @@ "lru-cache": "10.2.2", "mime": "3.0.0", "mkdirp": "3.0.1", - "mongodb": "6.5.0", + "mongodb": "6.6.0", "morgan": "1.10.0", "mousetrap": "1.6.5", "multiparty": "4.2.3", From 36016ee1383caf6f63c8a150e284dc5e406ae10b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Thu, 9 May 2024 11:50:59 -0400 Subject: [PATCH 144/168] refactor: add missing form-label class --- src/views/partials/acceptTos.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/partials/acceptTos.tpl b/src/views/partials/acceptTos.tpl index d077d692b1..59aa2a5aa7 100644 --- a/src/views/partials/acceptTos.tpl +++ b/src/views/partials/acceptTos.tpl @@ -1,5 +1,5 @@
- +
{termsOfUse}
From 5264decaa50e89d6e9dc746fb878c159aa0af7f0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 10 May 2024 10:30:15 -0400 Subject: [PATCH 145/168] fix(deps): update dependency semver to v7.6.2 (#12552) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 9d60cc9a0f..9515e4ee43 100644 --- a/install/package.json +++ b/install/package.json @@ -125,7 +125,7 @@ "rtlcss": "4.1.1", "sanitize-html": "2.13.0", "sass": "1.76.0", - "semver": "7.6.0", + "semver": "7.6.2", "serve-favicon": "2.5.0", "sharp": "0.32.6", "sitemap": "7.1.1", From b4023ff9f3527b67341eab3e5695701a009f269b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 10 May 2024 10:30:35 -0400 Subject: [PATCH 146/168] chore(deps): update coverallsapp/github-action action to v2.3.0 (#12554) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/test.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 0733c4d02f..7d430dd43f 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -192,7 +192,7 @@ jobs: run: npm run coverage - name: Test coverage - uses: coverallsapp/github-action@3dfc5567390f6fa9267c0ee9c251e4c8c3f18949 # v2.2.3 + uses: coverallsapp/github-action@643bc377ffa44ace6394b2b5d0d3950076de9f63 # v2.3.0 if: matrix.coverage with: github-token: ${{ secrets.GITHUB_TOKEN }} @@ -206,7 +206,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Coveralls Finished - uses: coverallsapp/github-action@3dfc5567390f6fa9267c0ee9c251e4c8c3f18949 # v2.2.3 + uses: coverallsapp/github-action@643bc377ffa44ace6394b2b5d0d3950076de9f63 # v2.3.0 with: github-token: ${{ secrets.GITHUB_TOKEN }} parallel-finished: true From ed07cfccff2c362ba53c560a1525556382da5b81 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 10 May 2024 10:30:57 -0400 Subject: [PATCH 147/168] fix(deps): update dependency esbuild to v0.21.1 (#12549) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 9515e4ee43..331e7455dc 100644 --- a/install/package.json +++ b/install/package.json @@ -63,7 +63,7 @@ "csrf-sync": "4.0.3", "daemon": "1.1.0", "diff": "5.2.0", - "esbuild": "0.20.2", + "esbuild": "0.21.1", "express": "4.19.2", "express-session": "1.18.0", "express-useragent": "1.0.15", From 751a143e4dd9730ed2a448ec5d9b0e944c450e00 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 10 May 2024 10:31:06 -0400 Subject: [PATCH 148/168] fix(deps): update dependency mongodb to v6.6.1 (#12547) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 331e7455dc..873de633e8 100644 --- a/install/package.json +++ b/install/package.json @@ -88,7 +88,7 @@ "lru-cache": "10.2.2", "mime": "3.0.0", "mkdirp": "3.0.1", - "mongodb": "6.6.0", + "mongodb": "6.6.1", "morgan": "1.10.0", "mousetrap": "1.6.5", "multiparty": "4.2.3", From 0fa115610a206225b90f948827369b9c9552514d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 10 May 2024 10:38:17 -0400 Subject: [PATCH 149/168] chore(deps): update dependency sass-embedded to v1.77.0 (#12548) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 873de633e8..235d84f8a4 100644 --- a/install/package.json +++ b/install/package.json @@ -172,7 +172,7 @@ "smtp-server": "3.13.4" }, "optionalDependencies": { - "sass-embedded": "1.76.0" + "sass-embedded": "1.77.0" }, "resolutions": { "*/jquery": "3.7.1" From d3840280ecd71b3e02d5ada6cde07e6aedf180c0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 10 May 2024 11:03:23 -0400 Subject: [PATCH 150/168] fix(deps): update dependency sass to v1.77.0 (#12550) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 235d84f8a4..450a9142bf 100644 --- a/install/package.json +++ b/install/package.json @@ -124,7 +124,7 @@ "rss": "1.2.2", "rtlcss": "4.1.1", "sanitize-html": "2.13.0", - "sass": "1.76.0", + "sass": "1.77.0", "semver": "7.6.2", "serve-favicon": "2.5.0", "sharp": "0.32.6", From b8a52863d651f4188b14b63bba8c6d86cc95d7e4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 10 May 2024 11:03:32 -0400 Subject: [PATCH 151/168] chore(deps): update postgres docker tag to v16.3 (#12555) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index fe20dcdc18..8724ce5205 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -30,7 +30,7 @@ services: profiles: - mongo postgres: - image: postgres:16.2-alpine + image: postgres:16.3-alpine restart: unless-stopped expose: - "5432" From 7a00944552e77e05457d0a0167cbbb8cd69ac056 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 10 May 2024 11:04:40 -0400 Subject: [PATCH 152/168] fix(deps): update dependency validator to v13.12.0 (#12556) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 450a9142bf..d1a9ac0cd6 100644 --- a/install/package.json +++ b/install/package.json @@ -142,7 +142,7 @@ "tinycon": "0.6.8", "toobusy-js": "0.5.1", "tough-cookie": "4.1.4", - "validator": "13.11.0", + "validator": "13.12.0", "webpack": "5.91.0", "webpack-merge": "5.10.0", "winston": "3.13.0", From f4f0eb30dcd23bbee683f40d5353fa6bdbde9925 Mon Sep 17 00:00:00 2001 From: Opliko Date: Fri, 10 May 2024 17:10:42 +0200 Subject: [PATCH 153/168] Small docker improvements and fixes (#12335) * feat: disable uneecessary npm features disables npm audit, fund and update-notifier for a few second startup speedup * fix: make default actually defaults not forced values * feat: upgrade on container changes * feat: support changing build verb * fix: use local volumes instead of bind mounts * fix: save just the hash without any unexpected whitespace * feat: use run with mount instead of copying for cross-platfomr builds * ci: try with minimal cache * ci: don't fetch all branches * feat: bsic support for other package managers via PACKAGE_MANAGER env var * refactor: better structured entrypoint Co-authored-by: NavyStack <137406386+NavyStack@users.noreply.github.com> * ci: properly cache the node_modules mount * fix: syntax error * refactor: fine tune docker-related files * ci: docker image taging (time, latest) * fix: remove the trailing slash for correct directory path * docker: todo- use environment variables to create files * docker: fix permissions * docker: fix permissions * docker: fix stage * feat: auto-upgrade on package.json changes * fix: don't profile-gate postgres --------- Co-authored-by: NavyStack <137406386+NavyStack@users.noreply.github.com> Co-authored-by: NavyStack --- .docker/.gitkeep | 0 .docker/build/.gitkeep | 0 .docker/config/.gitkeep | 0 .docker/database/mongo/data/.gitkeep | 0 .docker/database/postgresql/data/.gitkeep | 0 .docker/database/redis/data/.gitkeep | 0 .docker/public/uploads/.gitkeep | 0 .github/workflows/docker.yml | 17 +- .gitignore | 3 +- Dockerfile | 95 +++++---- dev.Dockerfile | 76 ++++++++ docker-compose-pgsql.yml | 68 +++++++ docker-compose-redis.yml | 51 +++++ docker-compose.yml | 84 ++++---- install/docker/entrypoint.sh | 226 ++++++++++++++++++---- install/docker/setup.json | 38 ++-- src/database/mongo.js | 12 +- src/database/postgres.js | 12 +- src/database/redis.js | 8 +- 19 files changed, 542 insertions(+), 148 deletions(-) create mode 100644 .docker/.gitkeep create mode 100644 .docker/build/.gitkeep create mode 100644 .docker/config/.gitkeep create mode 100644 .docker/database/mongo/data/.gitkeep create mode 100644 .docker/database/postgresql/data/.gitkeep create mode 100644 .docker/database/redis/data/.gitkeep create mode 100644 .docker/public/uploads/.gitkeep create mode 100644 dev.Dockerfile create mode 100644 docker-compose-pgsql.yml create mode 100644 docker-compose-redis.yml diff --git a/.docker/.gitkeep b/.docker/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/.docker/build/.gitkeep b/.docker/build/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/.docker/config/.gitkeep b/.docker/config/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/.docker/database/mongo/data/.gitkeep b/.docker/database/mongo/data/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/.docker/database/postgresql/data/.gitkeep b/.docker/database/postgresql/data/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/.docker/database/redis/data/.gitkeep b/.docker/database/redis/data/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/.docker/public/uploads/.gitkeep b/.docker/public/uploads/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 16fc4a0de0..ee3150384f 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -21,8 +21,6 @@ jobs: steps: - uses: actions/checkout@v4 - with: - fetch-depth: 0 - name: Set up QEMU uses: docker/setup-qemu-action@v3 @@ -37,6 +35,9 @@ jobs: username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} + - name: Get current date in NST + run: echo "CURRENT_DATE_NST=$(date +'%Y%m%d-%H%M%S' -d '-3 hours -30 minutes')" >> $GITHUB_ENV + - name: Docker meta id: meta uses: docker/metadata-action@v5 @@ -48,12 +49,22 @@ jobs: type=semver,pattern={{major}}.x type=raw,value=latest,enable={{is_default_branch}} type=ref,event=branch,enable=${{ github.event.repository.default_branch != github.ref }} + type=raw,value=${{ env.CURRENT_DATE_NST }} + flavor: | + latest=true + + - name: Cache node_modules + id: cache-node-modules + uses: actions/cache@v3 + with: + path: var-cache-node-modules + key: var-cache-node-modules-${{ hashFiles('Dockerfile', 'install/package.json') }} - name: Build and push Docker images uses: docker/build-push-action@v5 with: cache-from: type=gha - cache-to: type=gha,mode=max + cache-to: type=gha,mode=min context: . file: ./Dockerfile platforms: linux/amd64,linux/arm64,linux/arm/v7 diff --git a/.gitignore b/.gitignore index 887ef337b0..42a1b3c705 100644 --- a/.gitignore +++ b/.gitignore @@ -71,4 +71,5 @@ package-lock.json link-plugins.sh test.sh -.docker/ \ No newline at end of file +.docker/** +!**/.gitkeep \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 14f61d3ada..9778513430 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,51 +1,74 @@ -FROM --platform=$BUILDPLATFORM node:lts as npm +FROM node:lts as build -RUN mkdir -p /usr/src/build && \ - chown -R node:node /usr/src/build -WORKDIR /usr/src/build +ENV NODE_ENV=production \ + DAEMON=false \ + SILENT=false \ + USER=nodebb \ + UID=1001 \ + GID=1001 -ARG NODE_ENV -ENV NODE_ENV $NODE_ENV +WORKDIR /usr/src/app/ -COPY --chown=node:node install/package.json /usr/src/build/package.json +COPY . /usr/src/app/ -USER node +# Install corepack to allow usage of other package managers +RUN corepack enable + +# Removing unnecessary files for us +RUN find . -mindepth 1 -maxdepth 1 -name '.*' ! -name '.' ! -name '..' -exec bash -c 'echo "Deleting {}"; rm -rf {}' \; + +# Prepage package.json +RUN cp /usr/src/app/install/package.json /usr/src/app/ + +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive \ + apt-get -y --no-install-recommends install \ + tini + +RUN groupadd --gid ${GID} ${USER} \ + && useradd --uid ${UID} --gid ${GID} --home-dir /usr/src/app/ --shell /bin/bash ${USER} \ + && chown -R ${USER}:${USER} /usr/src/app/ + +USER ${USER} RUN npm install --omit=dev + # TODO: generate lockfiles for each package manager + ## pnpm import \ -FROM node:lts as rebuild +FROM node:lts-slim AS final -ARG BUILDPLATFORM -ARG TARGETPLATFORM +ENV NODE_ENV=production \ + DAEMON=false \ + SILENT=false \ + USER=nodebb \ + UID=1001 \ + GID=1001 -RUN mkdir -p /usr/src/build && \ - chown -R node:node /usr/src/build +WORKDIR /usr/src/app/ -COPY --from=npm /usr/src/build /usr/src/build +COPY --from=build --chown=${USER}:${USER} /usr/src/app/ /usr/src/app/install/docker/setup.json /usr/src/app/ +COPY --from=build --chown=${USER}:${USER} /usr/bin/tini /usr/src/app/install/docker/entrypoint.sh /usr/local/bin/ -RUN if [ $BUILDPLATFORM != $TARGETPLATFORM ]; then \ - npm rebuild && \ - npm cache clean --force; fi +RUN corepack enable \ + && groupadd --gid ${GID} ${USER} \ + && useradd --uid ${UID} --gid ${GID} --home-dir /usr/src/app/ --shell /bin/bash ${USER} \ + && mkdir -p /usr/src/app/logs/ /opt/config/ \ + && chown -R ${USER}:${USER} /usr/src/app/ /opt/config/ \ + && chmod +x /usr/local/bin/entrypoint.sh \ + && chmod +x /usr/local/bin/tini -FROM node:lts-slim as run +# TODO: Have docker-compose use environment variables to create files like setup.json and config.json. +# COPY --from=hairyhenderson/gomplate:stable /gomplate /usr/local/bin/gomplate -ARG NODE_ENV -ENV NODE_ENV=$NODE_ENV \ - daemon=false \ - silent=false - -RUN mkdir -p /usr/src/app && \ - chown -R node:node /usr/src/app - -COPY --chown=node:node --from=rebuild /usr/src/build /usr/src/app - - -WORKDIR /usr/src/app - -USER node - -COPY --chown=node:node . /usr/src/app +USER ${USER} EXPOSE 4567 -VOLUME ["/usr/src/app/node_modules", "/usr/src/app/build", "/usr/src/app/public/uploads", "/opt/config"] -ENTRYPOINT ["./install/docker/entrypoint.sh"] \ No newline at end of file + +VOLUME ["/usr/src/app/node_modules", "/usr/src/app/build", "/usr/src/app/public/uploads", "/opt/config/"] + +# Utilising tini as our init system within the Docker container for graceful start-up and termination. +# Tini serves as an uncomplicated init system, adept at managing the reaping of zombie processes and forwarding signals. +# This approach is crucial to circumvent issues with unmanaged subprocesses and signal handling in containerised environments. +# By integrating tini, we enhance the reliability and stability of our Docker containers. +# Ensures smooth start-up and shutdown processes, and reliable, safe handling of signal processing. +ENTRYPOINT ["tini", "--", "entrypoint.sh"] \ No newline at end of file diff --git a/dev.Dockerfile b/dev.Dockerfile new file mode 100644 index 0000000000..a2b3867ed5 --- /dev/null +++ b/dev.Dockerfile @@ -0,0 +1,76 @@ +FROM node:lts AS git + +ENV USER=nodebb \ + UID=1001 \ + GID=1001 + +WORKDIR /usr/src/app/ + +RUN groupadd --gid ${GID} ${USER} \ + && useradd --uid ${UID} --gid ${GID} --home-dir /usr/src/app/ --shell /bin/bash ${USER} \ + && chown -R ${USER}:${USER} /usr/src/app/ + +RUN apt-get update \ + && apt-get -y --no-install-recommends install tini + +USER ${USER} + +# Change to the git branch you want to test +RUN git clone --recurse-submodules -j8 --depth 1 https://github.com/NodeBB/NodeBB.git . + +RUN find . -mindepth 1 -maxdepth 1 -name '.*' ! -name '.' ! -name '..' -exec bash -c 'echo "Deleting {}"; rm -rf {}' \; + +FROM node:lts AS node_modules_touch + +ENV NODE_ENV=development \ + USER=nodebb \ + UID=1001 \ + GID=1001 + +WORKDIR /usr/src/app/ + +RUN corepack enable \ + && groupadd --gid ${GID} ${USER} \ + && useradd --uid ${UID} --gid ${GID} --home-dir /usr/src/app/ --shell /bin/bash ${USER} \ + && chown -R ${USER}:${USER} /usr/src/app/ + +COPY --from=git --chown=${USER}:${USER} /usr/src/app/install/package.json /usr/src/app/ + +USER ${USER} + +RUN npm install + +FROM node:lts-slim AS final + +ENV NODE_ENV=development \ + DAEMON=false \ + SILENT=false \ + USER=nodebb \ + UID=1001 \ + GID=1001 + +WORKDIR /usr/src/app/ + +COPY --from=build --chown=${USER}:${USER} /usr/src/app/ /usr/src/app/install/docker/setup.json /usr/src/app/ +COPY --from=build --chown=${USER}:${USER} /usr/bin/tini /usr/src/app/install/docker/entrypoint.sh /usr/local/bin/ +COPY --from=node_modules_touch --chown=${USER}:${USER} /usr/src/app/ /usr/src/app/ +COPY --from=git --chown=${USER}:${USER} /usr/src/app/ /usr/src/app/ + +RUN corepack enable \ + && groupadd --gid ${GID} ${USER} \ + && useradd --uid ${UID} --gid ${GID} --home-dir /usr/src/app/ --shell /bin/bash ${USER} \ + && mkdir -p /usr/src/app/logs/ /opt/config/ \ + && chown -R ${USER}:${USER} /usr/src/app/ /opt/config/ \ + && chmod +x /usr/local/bin/entrypoint.sh \ + && chmod +x /usr/local/bin/tini + +# TODO: Have docker-compose use environment variables to create files like setup.json and config.json. +# COPY --from=hairyhenderson/gomplate:stable /gomplate /usr/local/bin/gomplate + +USER ${USER} + +EXPOSE 4567 + +VOLUME ["/usr/src/app/node_modules", "/usr/src/app/build", "/usr/src/app/public/uploads", "/opt/config/"] + +ENTRYPOINT ["tini", "--", "entrypoint.sh"] \ No newline at end of file diff --git a/docker-compose-pgsql.yml b/docker-compose-pgsql.yml new file mode 100644 index 0000000000..579bb70a44 --- /dev/null +++ b/docker-compose-pgsql.yml @@ -0,0 +1,68 @@ +version: '3.8' + +services: + nodebb: + build: . + # image: ghcr.io/nodebb/nodebb:latest + restart: unless-stopped + ports: + - '4567:4567' # comment this out if you don't want to expose NodeBB to the host, or change the first number to any port you want + volumes: + - nodebb-build:/usr/src/app/build + - nodebb-uploads:/usr/src/app/public/uploads + - nodebb-config:/opt/config + - ./install/docker/setup.json:/usr/src/app/setup.json + + postgres: + image: postgres:16.1-alpine + restart: unless-stopped + environment: + POSTGRES_USER: nodebb + POSTGRES_PASSWORD: nodebb + POSTGRES_DB: nodebb + volumes: + - postgres-data:/var/lib/postgresql/data + + redis: + image: redis:7.2.3-alpine + restart: unless-stopped + command: ['redis-server', '--appendonly', 'yes', '--loglevel', 'warning'] + # command: ["redis-server", "--save", "60", "1", "--loglevel", "warning"] # uncomment if you want to use snapshotting instead of AOF + volumes: + - redis-data:/data + +volumes: + postgres-data: + driver: local + driver_opts: + o: bind + type: none + device: ./.docker/database/postgresql/data + + redis-data: + driver: local + driver_opts: + o: bind + type: none + device: ./.docker/database/redis + + nodebb-build: + driver: local + driver_opts: + o: bind + type: none + device: ./.docker/build + + nodebb-uploads: + driver: local + driver_opts: + o: bind + type: none + device: ./.docker/public/uploads + + nodebb-config: + driver: local + driver_opts: + o: bind + type: none + device: ./.docker/config diff --git a/docker-compose-redis.yml b/docker-compose-redis.yml new file mode 100644 index 0000000000..c6d543d7c1 --- /dev/null +++ b/docker-compose-redis.yml @@ -0,0 +1,51 @@ +version: '3.8' + +services: + nodebb: + build: . + # image: ghcr.io/nodebb/nodebb:latest + restart: unless-stopped + ports: + - '4567:4567' # comment this out if you don't want to expose NodeBB to the host, or change the first number to any port you want + volumes: + - nodebb-build:/usr/src/app/build + - nodebb-uploads:/usr/src/app/public/uploads + - nodebb-config:/opt/config + - ./install/docker/setup.json:/usr/src/app/setup.json + + redis: + image: redis:7.2.3-alpine + restart: unless-stopped + command: ['redis-server', '--appendonly', 'yes', '--loglevel', 'warning'] + # command: ["redis-server", "--save", "60", "1", "--loglevel", "warning"] # uncomment if you want to use snapshotting instead of AOF + volumes: + - redis-data:/data + +volumes: + redis-data: + driver: local + driver_opts: + o: bind + type: none + device: ./.docker/database/redis + + nodebb-build: + driver: local + driver_opts: + o: bind + type: none + device: ./.docker/build + + nodebb-uploads: + driver: local + driver_opts: + o: bind + type: none + device: ./.docker/public/uploads + + nodebb-config: + driver: local + driver_opts: + o: bind + type: none + device: ./.docker/config diff --git a/docker-compose.yml b/docker-compose.yml index fe20dcdc18..d9b793b8c8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,53 +3,69 @@ version: '3.8' services: nodebb: build: . + # image: ghcr.io/nodebb/nodebb:latest restart: unless-stopped ports: - - "4567:4567/tcp" # comment this out if you don't want to expose NodeBB to the host, or change the first number to any port you want - # uncomment if you want to use another container as a reverse proxy - # expose: - # - 4567 + - '4567:4567' # comment this out if you don't want to expose NodeBB to the host, or change the first number to any port you want volumes: - - ./.docker/build:/usr/src/app/build - - ./.docker/public/uploads:/usr/src/app/public/uploads - - ./.docker:/opt/config + - nodebb-build:/usr/src/app/build + - nodebb-uploads:/usr/src/app/public/uploads + - nodebb-config:/opt/config - ./install/docker/setup.json:/usr/src/app/setup.json + mongo: - image: "mongo:7-jammy" + image: 'mongo:7-jammy' restart: unless-stopped - expose: - - "27017" + ports: + - '27017:27017' environment: MONGO_INITDB_ROOT_USERNAME: nodebb MONGO_INITDB_ROOT_PASSWORD: nodebb MONGO_INITDB_DATABASE: nodebb volumes: - - ./.docker/database/mongo/config:/etc/mongo - - ./.docker/database/mongo/data:/data/db + - mongo-data:/data/db - ./install/docker/mongodb-user-init.js:/docker-entrypoint-initdb.d/user-init.js - profiles: - - mongo - postgres: - image: postgres:16.2-alpine - restart: unless-stopped - expose: - - "5432" - environment: - POSTGRES_USER: nodebb - POSTGRES_PASSWORD: nodebb - POSTGRES_DB: nodebb - volumes: - - ./.docker/database/postgresql/data:/var/lib/postgresql/data - profiles: - - postgres + redis: image: redis:7.2.3-alpine restart: unless-stopped - command: ["redis-server", "--appendonly", "yes", "--loglevel", "warning"] - # command: ["redis-server", "--save", "60", "1", "--loglevel", "warning"] # uncomment if you want to use snapshotting instead of AOF - expose: - - "6379" + command: ['redis-server', '--appendonly', 'yes', '--loglevel', 'warning'] + # command: ['redis-server', '--save', '60', '1', '--loglevel', 'warning'] # uncomment if you want to use snapshotting instead of AOF volumes: - - ./.docker/database/redis:/data - profiles: - - redis \ No newline at end of file + - redis-data:/data + +volumes: + mongo-data: + driver: local + driver_opts: + o: bind + type: none + device: ./.docker/database/mongo/data + + redis-data: + driver: local + driver_opts: + o: bind + type: none + device: ./.docker/database/redis + + nodebb-build: + driver: local + driver_opts: + o: bind + type: none + device: ./.docker/build + + nodebb-uploads: + driver: local + driver_opts: + o: bind + type: none + device: ./.docker/public/uploads + + nodebb-config: + driver: local + driver_opts: + o: bind + type: none + device: ./.docker/config diff --git a/install/docker/entrypoint.sh b/install/docker/entrypoint.sh index e5b2036321..fd0359192c 100755 --- a/install/docker/entrypoint.sh +++ b/install/docker/entrypoint.sh @@ -1,46 +1,192 @@ #!/bin/bash -export CONFIG_DIR="${CONFIG_DIR:-/opt/config}" -export CONFIG=$CONFIG_DIR/config.json -export FORCE_BUILD_BEFORE_START="${FORCE_BUILD_BEFORE_START:-false}" +set -e -# Supported verbs: install (web install), setup (interactive CLI session). Default: web install -# TODO: constraint it using a hash set (or hash table) -export NODEBB_INIT_VERB="${NODEBB_INIT_VERB:-install}" -# Setup variable for backward compatibility, default: -export SETUP="${SETUP:-}" +# Function to set default values for environment variables +set_defaults() { + export CONFIG_DIR="${CONFIG_DIR:-/opt/config}" + export CONFIG="$CONFIG_DIR/config.json" + export NODEBB_INIT_VERB="${NODEBB_INIT_VERB:-install}" + export START_BUILD="${START_BUILD:-false}" + export SETUP="${SETUP:-}" + export PACKAGE_MANAGER="${PACKAGE_MANAGER:-npm}" + export OVERRIDE_UPDATE_LOCK="${OVERRIDE_UPDATE_LOCK:-false}" +} -mkdir -p $CONFIG_DIR - -# if the folder is mounted as a volume this can fail, the check below is to ensure there is still write access -chmod -fR 760 $CONFIG_DIR 2> /dev/null - -if [[ ! -w $CONFIG_DIR ]]; then - echo "panic: no write permission for $CONFIG_DIR" - exit 1 -fi - -[[ -f $CONFIG_DIR/package.json ]] || cp install/package.json $CONFIG_DIR/package.json -[[ -f $CONFIG_DIR/package-lock.json ]] || touch $CONFIG_DIR/package-lock.json - -ln -fs $CONFIG_DIR/package.json package.json -ln -fs $CONFIG_DIR/package-lock.json package-lock.json - -npm install --omit=dev - -if [[ -n $SETUP ]]; then - echo "Setup environmental variable detected" - echo "Starting setup session" - ./nodebb setup --config=$CONFIG -elif [ -f $CONFIG ]; then - echo "Config file exist at $CONFIG, assuming it is a valid config" - echo "Starting forum" - if [ "$FORCE_BUILD_BEFORE_START" = true ]; then - ./nodebb build --config=$CONFIG +# Function to check if a directory exists and is writable +check_directory() { + local dir="$1" + if [ ! -d "$dir" ]; then + echo "Error: Directory $dir does not exist. Creating..." + mkdir -p "$dir" || { + echo "Error: Failed to create directory $dir" + exit 1 + } fi - ./nodebb start --config=$CONFIG -else - echo "Config file not found at $CONFIG" + if [ ! -w "$dir" ]; then + echo "Error: No write permission for directory $dir" + exit 1 + fi +} + +# Function to copy or link package.json and lock files based on package manager +copy_or_link_files() { + local src_dir="$1" + local dest_dir="$2" + local package_manager="$3" + local lock_file + + case "$package_manager" in + yarn) lock_file="yarn.lock" ;; + npm) lock_file="package-lock.json" ;; + pnpm) lock_file="pnpm-lock.yaml" ;; + *) + echo "Unknown package manager: $package_manager" + exit 1 + ;; + esac + + # Check if source and destination files are the same + if [ "$(realpath "$src_dir/package.json")" != "$(realpath "$dest_dir/package.json")" ]; then + cp "$src_dir/package.json" "$dest_dir/package.json" + fi + + if [ "$(realpath "$src_dir/$lock_file")" != "$(realpath "$dest_dir/$lock_file")" ]; then + cp "$src_dir/$lock_file" "$dest_dir/$lock_file" + fi + + # Remove unnecessary lock files in src_dir + rm -f "$src_dir/"{yarn.lock,package-lock.json,pnpm-lock.yaml} + + # Symbolically link the copied files in src_dir to dest_dir + ln -fs "$dest_dir/package.json" "$src_dir/package.json" + ln -fs "$dest_dir/$lock_file" "$src_dir/$lock_file" +} + +# Function to install dependencies using pnpm +install_dependencies() { + case "$PACKAGE_MANAGER" in + yarn) yarn install || { + echo "Failed to install dependencies with yarn" + exit 1 + } ;; + npm) npm install || { + echo "Failed to install dependencies with npm" + exit 1 + } ;; + pnpm) pnpm install || { + echo "Failed to install dependencies with pnpm" + exit 1 + } ;; + *) + echo "Unknown package manager: $PACKAGE_MANAGER" + exit 1 + ;; + esac +} + +# Function to start setup session +start_setup_session() { + local config="$1" + echo "Starting setup session" + exec /usr/src/app/nodebb setup --config="$config" +} + +# Handle building and upgrading NodeBB +build_forum() { + local config="$1" + local start_build="$2" + local package_hash=$(md5sum install/package.json | head -c 32) + if [ package_hash = "$(cat $CONFIG_DIR/install_hash.md5)" ]; then + echo "package.json was updated. Upgrading..." + /usr/src/app/nodebb upgrade --config="$config" || { + echo "Failed to build NodeBB. Exiting..." + exit 1 + } + elif [ "$start_build" = true ]; then + echo "Build before start is enabled. Building..." + /usr/src/app/nodebb "${NODEBB_BUILD_VERB}" --config="$config" || { + echo "Failed to build NodeBB. Exiting..." + exit 1 + } + else + echo "No changes in package.json. Skipping build..." + return + fi + echo -n $package_hash > $CONFIG_DIR/install_hash.md5 +} + + +# Function to start forum +start_forum() { + local config="$1" + local start_build="$2" + + build_forum "$config" "$start_build" + + case "$PACKAGE_MANAGER" in + yarn) + yarn start --config="$config" --no-silent --no-daemon || { + echo "Failed to start forum with yarn" + exit 1 + } + ;; + npm) + npm start -- --config="$config" --no-silent --no-daemon || { + echo "Failed to start forum with npm" + exit 1 + } + ;; + pnpm) + pnpm start -- --config="$config" --no-silent --no-daemon || { + echo "Failed to start forum with pnpm" + exit 1 + } + ;; + *) + echo "Unknown package manager: $PACKAGE_MANAGER" + exit 1 + ;; + esac +} + +# Function to start installation session +start_installation_session() { + local nodebb_init_verb="$1" + local config="$2" + + echo "Config file not found at $config" echo "Starting installation session" - ./nodebb "${NODEBB_INIT_VERB}" --config=$CONFIG -fi \ No newline at end of file + exec /usr/src/app/nodebb "$nodebb_init_verb" --config="$config" +} + +# Function for debugging and logging +debug_log() { + local message="$1" + echo "DEBUG: $message" +} + +# Main function +main() { + set_defaults + check_directory "$CONFIG_DIR" + copy_or_link_files /usr/src/app "$CONFIG_DIR" "$PACKAGE_MANAGER" + install_dependencies + + debug_log "PACKAGE_MANAGER: $PACKAGE_MANAGER" + debug_log "CONFIG location: $CONFIG" + debug_log "START_BUILD: $START_BUILD" + + if [ -n "$SETUP" ]; then + start_setup_session "$CONFIG" + fi + + if [ -f "$CONFIG" ]; then + start_forum "$CONFIG" "$START_BUILD" + else + start_installation_session "$NODEBB_INIT_VERB" "$CONFIG" + fi +} + +# Execute main function +main "$@" diff --git a/install/docker/setup.json b/install/docker/setup.json index 3fad840593..a9fa9017bb 100644 --- a/install/docker/setup.json +++ b/install/docker/setup.json @@ -1,21 +1,23 @@ { - "mongo": { - "host": "mongo", - "port": 27017, - "database": "nodebb", - "username": "nodebb", - "password": "nodebb" - }, - "redis": { - "host": "redis", - "port": 6379, - "database": 0 - }, - "postgres": { - "host": "postgres", - "port": 5432, - "database": "nodebb", - "username": "nodebb", - "password": "nodebb" + "defaults": { + "mongo": { + "host": "mongo", + "port": 27017, + "database": "nodebb", + "username": "nodebb", + "password": "nodebb" + }, + "redis": { + "host": "redis", + "port": 6379, + "database": 0 + }, + "postgres": { + "host": "postgres", + "port": 5432, + "database": "nodebb", + "username": "nodebb", + "password": "nodebb" + } } } \ No newline at end of file diff --git a/src/database/mongo.js b/src/database/mongo.js index 753bd13427..131916cb6f 100644 --- a/src/database/mongo.js +++ b/src/database/mongo.js @@ -22,31 +22,31 @@ mongoModule.questions = [ { name: 'mongo:uri', description: 'MongoDB connection URI: (leave blank if you wish to specify host, port, username/password and database individually)\nFormat: mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]', - default: nconf.get('mongo:uri') || '', + default: nconf.get('mongo:uri') || nconf.get('defaults:mongo:uri') || '', hideOnWebInstall: true, }, { name: 'mongo:host', description: 'Host IP or address of your MongoDB instance', - default: nconf.get('mongo:host') || '127.0.0.1', + default: nconf.get('mongo:host') || nconf.get('defaults:mongo:host') || '127.0.0.1', ask: isUriNotSpecified, }, { name: 'mongo:port', description: 'Host port of your MongoDB instance', - default: nconf.get('mongo:port') || 27017, + default: nconf.get('mongo:port') || nconf.get('defaults:mongo:port') || 27017, ask: isUriNotSpecified, }, { name: 'mongo:username', description: 'MongoDB username', - default: nconf.get('mongo:username') || '', + default: nconf.get('mongo:username') || nconf.get('defaults:mongo:username') || '', ask: isUriNotSpecified, }, { name: 'mongo:password', description: 'Password of your MongoDB database', - default: nconf.get('mongo:password') || '', + default: nconf.get('mongo:password') || nconf.get('defaults:mongo:password') || '', hidden: true, ask: isUriNotSpecified, before: function (value) { value = value || nconf.get('mongo:password') || ''; return value; }, @@ -54,7 +54,7 @@ mongoModule.questions = [ { name: 'mongo:database', description: 'MongoDB database name', - default: nconf.get('mongo:database') || 'nodebb', + default: nconf.get('mongo:database') || nconf.get('defaults:mongo:database') || 'nodebb', ask: isUriNotSpecified, }, ]; diff --git a/src/database/postgres.js b/src/database/postgres.js index 6e034b7d0c..84a456ca86 100644 --- a/src/database/postgres.js +++ b/src/database/postgres.js @@ -13,34 +13,34 @@ postgresModule.questions = [ { name: 'postgres:host', description: 'Host IP or address of your PostgreSQL instance', - default: nconf.get('postgres:host') || '127.0.0.1', + default: nconf.get('postgres:host') || nconf.get('defaults:postgres:host') || '127.0.0.1', }, { name: 'postgres:port', description: 'Host port of your PostgreSQL instance', - default: nconf.get('postgres:port') || 5432, + default: nconf.get('postgres:port') || nconf.get('defaults:postgres:port') || 5432, }, { name: 'postgres:username', description: 'PostgreSQL username', - default: nconf.get('postgres:username') || '', + default: nconf.get('postgres:username') || nconf.get('defaults:postgres:username') || '', }, { name: 'postgres:password', description: 'Password of your PostgreSQL database', hidden: true, - default: nconf.get('postgres:password') || '', + default: nconf.get('postgres:password') || nconf.get('defaults:postgres:password') || '', before: function (value) { value = value || nconf.get('postgres:password') || ''; return value; }, }, { name: 'postgres:database', description: 'PostgreSQL database name', - default: nconf.get('postgres:database') || 'nodebb', + default: nconf.get('postgres:database') || nconf.get('defaults:postgres:database') || 'nodebb', }, { name: 'postgres:ssl', description: 'Enable SSL for PostgreSQL database access', - default: nconf.get('postgres:ssl') || false, + default: nconf.get('postgres:ssl') || nconf.get('defaults:postgres:ssl') || false, }, ]; diff --git a/src/database/redis.js b/src/database/redis.js index 22d13cc9e4..15a40c9fb4 100644 --- a/src/database/redis.js +++ b/src/database/redis.js @@ -11,24 +11,24 @@ redisModule.questions = [ { name: 'redis:host', description: 'Host IP or address of your Redis instance', - default: nconf.get('redis:host') || '127.0.0.1', + default: nconf.get('redis:host') || nconf.get('defaults:redis:host') || '127.0.0.1', }, { name: 'redis:port', description: 'Host port of your Redis instance', - default: nconf.get('redis:port') || 6379, + default: nconf.get('redis:port') || nconf.get('defaults:redis:port') || 6379, }, { name: 'redis:password', description: 'Password of your Redis database', hidden: true, - default: nconf.get('redis:password') || '', + default: nconf.get('redis:password') || nconf.get('defaults:redis:password') || '', before: function (value) { value = value || nconf.get('redis:password') || ''; return value; }, }, { name: 'redis:database', description: 'Which database to use (0..n)', - default: nconf.get('redis:database') || 0, + default: nconf.get('redis:database') || nconf.get('defaults:redis:database') || 0, }, ]; From 185d61fce9041f86ee6950649da7f626d2bf0e50 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 10 May 2024 16:00:37 -0400 Subject: [PATCH 154/168] fix(deps): update dependency rimraf to v5.0.6 (#12562) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index d1a9ac0cd6..dab28ac335 100644 --- a/install/package.json +++ b/install/package.json @@ -120,7 +120,7 @@ "progress-webpack-plugin": "1.0.16", "prompt": "1.3.0", "ioredis": "5.4.1", - "rimraf": "5.0.5", + "rimraf": "5.0.6", "rss": "1.2.2", "rtlcss": "4.1.1", "sanitize-html": "2.13.0", From bc807c4629775ed8b3f71b7fb9babd3c58623c66 Mon Sep 17 00:00:00 2001 From: Opliko Date: Sat, 11 May 2024 02:05:46 +0200 Subject: [PATCH 155/168] fix: some issues with "small" docker improvements (#12564) * fix: support previous FORCE_BUILD_BEFORE_START variable too * fix: attempt to fix permission issues and inform properly on failure * fix: profile-gate redis and re-add profile-gated postgres to main file For now it's better to maintain compatibility - current postgres users will run mongodb unnecessarily withuot changes, but at least it'll still work fine --- docker-compose-pgsql.yml | 2 ++ docker-compose.yml | 21 +++++++++++++++++++++ install/docker/entrypoint.sh | 11 ++++++++--- 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/docker-compose-pgsql.yml b/docker-compose-pgsql.yml index 579bb70a44..806e29acc0 100644 --- a/docker-compose-pgsql.yml +++ b/docker-compose-pgsql.yml @@ -30,6 +30,8 @@ services: # command: ["redis-server", "--save", "60", "1", "--loglevel", "warning"] # uncomment if you want to use snapshotting instead of AOF volumes: - redis-data:/data + profiles: + - redis volumes: postgres-data: diff --git a/docker-compose.yml b/docker-compose.yml index d9b793b8c8..21f16cb7f1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -33,6 +33,20 @@ services: # command: ['redis-server', '--save', '60', '1', '--loglevel', 'warning'] # uncomment if you want to use snapshotting instead of AOF volumes: - redis-data:/data + profiles: + - redis + + postgres: + image: postgres:16.1-alpine + restart: unless-stopped + environment: + POSTGRES_USER: nodebb + POSTGRES_PASSWORD: nodebb + POSTGRES_DB: nodebb + volumes: + - postgres-data:/var/lib/postgresql/data + profiles: + - postgres volumes: mongo-data: @@ -49,6 +63,13 @@ volumes: type: none device: ./.docker/database/redis + postgres-data: + driver: local + driver_opts: + o: bind + type: none + device: ./.docker/database/postgresql/data + nodebb-build: driver: local driver_opts: diff --git a/install/docker/entrypoint.sh b/install/docker/entrypoint.sh index fd0359192c..2913ae7c8f 100755 --- a/install/docker/entrypoint.sh +++ b/install/docker/entrypoint.sh @@ -7,7 +7,7 @@ set_defaults() { export CONFIG_DIR="${CONFIG_DIR:-/opt/config}" export CONFIG="$CONFIG_DIR/config.json" export NODEBB_INIT_VERB="${NODEBB_INIT_VERB:-install}" - export START_BUILD="${START_BUILD:-false}" + export START_BUILD="${START_BUILD:-${FORCE_BUILD_BEFORE_START:-false}}" export SETUP="${SETUP:-}" export PACKAGE_MANAGER="${PACKAGE_MANAGER:-npm}" export OVERRIDE_UPDATE_LOCK="${OVERRIDE_UPDATE_LOCK:-false}" @@ -24,8 +24,13 @@ check_directory() { } fi if [ ! -w "$dir" ]; then - echo "Error: No write permission for directory $dir" - exit 1 + echo "Warning: No write permission for directory $dir, attempting to fix..." + chown -R $USER:$USER "$dir" || true # attempt to change ownership, do not exit on failure + chmod -R 760 "$dir" || true # attempt to change permissions, do not exit on failure + if [ ! -w "$dir" ]; then + echo "Error: No write permission for directory $dir. Exiting..." + exit 1 + fi fi } From 7a64410a927b854605804302932c23a2d9bbd414 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 10 May 2024 20:16:19 -0400 Subject: [PATCH 156/168] fix(deps): update dependency sass to v1.77.1 (#12566) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index dab28ac335..daee96d4dc 100644 --- a/install/package.json +++ b/install/package.json @@ -124,7 +124,7 @@ "rss": "1.2.2", "rtlcss": "4.1.1", "sanitize-html": "2.13.0", - "sass": "1.77.0", + "sass": "1.77.1", "semver": "7.6.2", "serve-favicon": "2.5.0", "sharp": "0.32.6", From 0716006201dc3741a05051771bc71ee3d8b26cf4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 10 May 2024 20:16:26 -0400 Subject: [PATCH 157/168] chore(deps): update dependency sass-embedded to v1.77.1 (#12565) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index daee96d4dc..2bf0487141 100644 --- a/install/package.json +++ b/install/package.json @@ -172,7 +172,7 @@ "smtp-server": "3.13.4" }, "optionalDependencies": { - "sass-embedded": "1.77.0" + "sass-embedded": "1.77.1" }, "resolutions": { "*/jquery": "3.7.1" From 995b2de551b6639d05bf2ae69d78cdc86aeac03f Mon Sep 17 00:00:00 2001 From: Opliko Date: Sat, 11 May 2024 17:01:17 +0200 Subject: [PATCH 158/168] fix(docker): support all previously used env variables correctly (#12567) * fix: set build verb default * fix: use override_update_lock again --- install/docker/entrypoint.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/install/docker/entrypoint.sh b/install/docker/entrypoint.sh index 2913ae7c8f..dd17d707e7 100755 --- a/install/docker/entrypoint.sh +++ b/install/docker/entrypoint.sh @@ -7,6 +7,7 @@ set_defaults() { export CONFIG_DIR="${CONFIG_DIR:-/opt/config}" export CONFIG="$CONFIG_DIR/config.json" export NODEBB_INIT_VERB="${NODEBB_INIT_VERB:-install}" + export NODEBB_BUILD_VERB="${NODEBB_BUILD_VERB:-build}" export START_BUILD="${START_BUILD:-${FORCE_BUILD_BEFORE_START:-false}}" export SETUP="${SETUP:-}" export PACKAGE_MANAGER="${PACKAGE_MANAGER:-npm}" @@ -52,11 +53,11 @@ copy_or_link_files() { esac # Check if source and destination files are the same - if [ "$(realpath "$src_dir/package.json")" != "$(realpath "$dest_dir/package.json")" ]; then + if [ "$(realpath "$src_dir/package.json")" != "$(realpath "$dest_dir/package.json")" ] || [ "$OVERRIDE_UPDATE_LOCK" = true ]; then cp "$src_dir/package.json" "$dest_dir/package.json" fi - if [ "$(realpath "$src_dir/$lock_file")" != "$(realpath "$dest_dir/$lock_file")" ]; then + if [ "$(realpath "$src_dir/$lock_file")" != "$(realpath "$dest_dir/$lock_file")" ] || [ "$OVERRIDE_UPDATE_LOCK" = true ]; then cp "$src_dir/$lock_file" "$dest_dir/$lock_file" fi @@ -102,7 +103,7 @@ build_forum() { local config="$1" local start_build="$2" local package_hash=$(md5sum install/package.json | head -c 32) - if [ package_hash = "$(cat $CONFIG_DIR/install_hash.md5)" ]; then + if [ "$package_hash" = "$(cat $CONFIG_DIR/install_hash.md5 || true)" ]; then echo "package.json was updated. Upgrading..." /usr/src/app/nodebb upgrade --config="$config" || { echo "Failed to build NodeBB. Exiting..." From 6161ff02631205a55a8384bd846637a717e5d475 Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Sun, 12 May 2024 09:18:36 +0000 Subject: [PATCH 159/168] Latest translations and fallbacks --- public/language/th/admin/dashboard.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/language/th/admin/dashboard.json b/public/language/th/admin/dashboard.json index 48fda4fb41..8391d98111 100644 --- a/public/language/th/admin/dashboard.json +++ b/public/language/th/admin/dashboard.json @@ -45,10 +45,10 @@ "rebuild-and-restart": "สร้างใหม่ & เริ่มต้นระบบใหม่", "restart": "เริ่มต้นระบบใหม่", "restart-warning": "การสร้างหรือเริ่มต้นระบบ NodeBB ของคุณจะทำให้การเชื่อมต่อถูกตัดเป็นเวลาหลายวินาที", - "restart-disabled": "Rebuilding and Restarting your NodeBB has been disabled as you do not seem to be running it via the appropriate daemon.", + "restart-disabled": "การสร้างและเริ่มต้นระบบ NodeBB ของคุณไม่เปิดให้ใช้งาน เนื่องจากคุณไม่ได้เรียกใช้จาก daemon ที่ถูกต้อง", "maintenance-mode": "โหมดการซ่อมบำรุง", "maintenance-mode-title": "Click here to set up maintenance mode for NodeBB", - "dark-mode": "Dark Mode", + "dark-mode": "โหมดมืด", "realtime-chart-updates": "Realtime Chart Updates", "active-users": "Active Users", From d926d9dd5163fb04f32f4df1047b45242c5c3c4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Sun, 12 May 2024 21:23:35 -0400 Subject: [PATCH 160/168] fix: chat message search, closes #12571 --- public/src/client/chats/message-search.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/src/client/chats/message-search.js b/public/src/client/chats/message-search.js index d6490c8b3e..24da351a76 100644 --- a/public/src/client/chats/message-search.js +++ b/public/src/client/chats/message-search.js @@ -77,7 +77,7 @@ define('forum/chats/message-search', [ async function displayResults(data) { removeResults(); - if (!data.length) { + if (!data.messages.length) { resultListEl.removeClass('hidden'); chatContent.addClass('hidden'); return resultListEl.find('[component="chat/message/search/no-results"]').removeClass('hidden'); @@ -85,7 +85,7 @@ define('forum/chats/message-search', [ resultListEl.find('[component="chat/message/search/no-results"]').addClass('hidden'); const html = await app.parseAndTranslate('partials/chats/messages', { - messages: data, + messages: data.messages, isAdminOrGlobalMod: app.user.isAdmin || app.user.isGlobalMod, }); From 49a510e925b87ea89f6d1fe31068c77e11b59852 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Sun, 12 May 2024 21:23:35 -0400 Subject: [PATCH 161/168] fix: chat message search, closes #12571 --- public/src/client/chats/message-search.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/src/client/chats/message-search.js b/public/src/client/chats/message-search.js index d6490c8b3e..24da351a76 100644 --- a/public/src/client/chats/message-search.js +++ b/public/src/client/chats/message-search.js @@ -77,7 +77,7 @@ define('forum/chats/message-search', [ async function displayResults(data) { removeResults(); - if (!data.length) { + if (!data.messages.length) { resultListEl.removeClass('hidden'); chatContent.addClass('hidden'); return resultListEl.find('[component="chat/message/search/no-results"]').removeClass('hidden'); @@ -85,7 +85,7 @@ define('forum/chats/message-search', [ resultListEl.find('[component="chat/message/search/no-results"]').addClass('hidden'); const html = await app.parseAndTranslate('partials/chats/messages', { - messages: data, + messages: data.messages, isAdminOrGlobalMod: app.user.isAdmin || app.user.isGlobalMod, }); From 035ced852df376d56cc8ccf5841107613eae3629 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 13 May 2024 11:05:13 -0400 Subject: [PATCH 162/168] fix(deps): update dependency rimraf to v5.0.7 (#12568) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 2bf0487141..bf4aa84441 100644 --- a/install/package.json +++ b/install/package.json @@ -120,7 +120,7 @@ "progress-webpack-plugin": "1.0.16", "prompt": "1.3.0", "ioredis": "5.4.1", - "rimraf": "5.0.6", + "rimraf": "5.0.7", "rss": "1.2.2", "rtlcss": "4.1.1", "sanitize-html": "2.13.0", From dc4f32af947cc6b8a9d9b9ffe68572c0b080c406 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 13 May 2024 11:05:22 -0400 Subject: [PATCH 163/168] fix(deps): update dependency esbuild to v0.21.2 (#12569) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index bf4aa84441..c777d54477 100644 --- a/install/package.json +++ b/install/package.json @@ -63,7 +63,7 @@ "csrf-sync": "4.0.3", "daemon": "1.1.0", "diff": "5.2.0", - "esbuild": "0.21.1", + "esbuild": "0.21.2", "express": "4.19.2", "express-session": "1.18.0", "express-useragent": "1.0.15", From 339f62674a8c6d1f087caa4e99b1b515757c8516 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 13 May 2024 11:05:34 -0400 Subject: [PATCH 164/168] chore(deps): update postgres docker tag to v16.3 (#12560) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docker-compose-pgsql.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose-pgsql.yml b/docker-compose-pgsql.yml index 579bb70a44..9f30977dc3 100644 --- a/docker-compose-pgsql.yml +++ b/docker-compose-pgsql.yml @@ -14,7 +14,7 @@ services: - ./install/docker/setup.json:/usr/src/app/setup.json postgres: - image: postgres:16.1-alpine + image: postgres:16.3-alpine restart: unless-stopped environment: POSTGRES_USER: nodebb From 19602dcd5a537a8a306c5c56275132b75e7dac00 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 13 May 2024 11:05:47 -0400 Subject: [PATCH 165/168] fix(deps): update dependency ace-builds to v1.33.2 (#12572) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index c777d54477..adbd064e6e 100644 --- a/install/package.json +++ b/install/package.json @@ -34,7 +34,7 @@ "@fortawesome/fontawesome-free": "6.5.2", "@isaacs/ttlcache": "1.4.1", "@popperjs/core": "2.11.8", - "ace-builds": "1.33.1", + "ace-builds": "1.33.2", "archiver": "7.0.1", "async": "3.2.5", "autoprefixer": "10.4.19", From 88ff9f9d62f1515931e42a6f7bf487d5f4407f8f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 13 May 2024 11:07:12 -0400 Subject: [PATCH 166/168] chore(deps): update actions/cache action to v4 (#12563) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/docker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index ee3150384f..67aee91b9a 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -55,7 +55,7 @@ jobs: - name: Cache node_modules id: cache-node-modules - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: var-cache-node-modules key: var-cache-node-modules-${{ hashFiles('Dockerfile', 'install/package.json') }} From c917acf612eeda35951c16d8f1928e5460c77a21 Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Tue, 14 May 2024 09:19:04 +0000 Subject: [PATCH 167/168] Latest translations and fallbacks --- public/language/th/admin/dashboard.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/language/th/admin/dashboard.json b/public/language/th/admin/dashboard.json index 8391d98111..dda2fc3916 100644 --- a/public/language/th/admin/dashboard.json +++ b/public/language/th/admin/dashboard.json @@ -47,7 +47,7 @@ "restart-warning": "การสร้างหรือเริ่มต้นระบบ NodeBB ของคุณจะทำให้การเชื่อมต่อถูกตัดเป็นเวลาหลายวินาที", "restart-disabled": "การสร้างและเริ่มต้นระบบ NodeBB ของคุณไม่เปิดให้ใช้งาน เนื่องจากคุณไม่ได้เรียกใช้จาก daemon ที่ถูกต้อง", "maintenance-mode": "โหมดการซ่อมบำรุง", - "maintenance-mode-title": "Click here to set up maintenance mode for NodeBB", + "maintenance-mode-title": "คลิกที่นี่เพื่อเข้าสู่โหมดการซ่อมบำรุงของ NodeBB", "dark-mode": "โหมดมืด", "realtime-chart-updates": "Realtime Chart Updates", From 7a8116a471ecb632881668c1fd65ac7ecdfe61d4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 14 May 2024 10:24:35 -0400 Subject: [PATCH 168/168] chore(deps): update redis docker tag to v7.2.4 (#12272) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/test.yaml | 2 +- docker-compose-pgsql.yml | 2 +- docker-compose-redis.yml | 2 +- docker-compose.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 7d430dd43f..b2a52caf42 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -63,7 +63,7 @@ jobs: - 5432:5432 redis: - image: 'redis:7.2.3' + image: 'redis:7.2.4' # Set health checks to wait until redis has started options: >- --health-cmd "redis-cli ping" diff --git a/docker-compose-pgsql.yml b/docker-compose-pgsql.yml index 9f30977dc3..f0ea81120b 100644 --- a/docker-compose-pgsql.yml +++ b/docker-compose-pgsql.yml @@ -24,7 +24,7 @@ services: - postgres-data:/var/lib/postgresql/data redis: - image: redis:7.2.3-alpine + image: redis:7.2.4-alpine restart: unless-stopped command: ['redis-server', '--appendonly', 'yes', '--loglevel', 'warning'] # command: ["redis-server", "--save", "60", "1", "--loglevel", "warning"] # uncomment if you want to use snapshotting instead of AOF diff --git a/docker-compose-redis.yml b/docker-compose-redis.yml index c6d543d7c1..7d6ddf09ca 100644 --- a/docker-compose-redis.yml +++ b/docker-compose-redis.yml @@ -14,7 +14,7 @@ services: - ./install/docker/setup.json:/usr/src/app/setup.json redis: - image: redis:7.2.3-alpine + image: redis:7.2.4-alpine restart: unless-stopped command: ['redis-server', '--appendonly', 'yes', '--loglevel', 'warning'] # command: ["redis-server", "--save", "60", "1", "--loglevel", "warning"] # uncomment if you want to use snapshotting instead of AOF diff --git a/docker-compose.yml b/docker-compose.yml index 871d24ff5c..a8e1ea98c8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -26,7 +26,7 @@ services: - mongo-data:/data/db - ./install/docker/mongodb-user-init.js:/docker-entrypoint-initdb.d/user-init.js redis: - image: redis:7.2.3-alpine + image: redis:7.2.4-alpine restart: unless-stopped command: ['redis-server', '--appendonly', 'yes', '--loglevel', 'warning'] # command: ['redis-server', '--save', '60', '1', '--loglevel', 'warning'] # uncomment if you want to use snapshotting instead of AOF