diff --git a/CHANGELOG.md b/CHANGELOG.md
index a66d1f9207..e41c2eec9e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,70 @@
+#### v3.7.2 (2024-03-27)
+
+##### Chores
+
+* up harmony (0171e73a)
+* up harmony (c6915398)
+* incrementing version number - v3.7.1 (712365a5)
+* update changelog for v3.7.1 (07640389)
+* 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)
+
+##### New Features
+
+* add hook to modify sorting options/fields (168419cf)
+* add playsinline video attribute (#12419) (5924a6eb)
+
+##### Bug Fixes
+
+* #12446, fix groups.ownership.rescind (ed41e416)
+* #12415, fix notification escaping for queued posts (4787d013)
+
+##### Refactors
+
+* remove log (3b2d8551)
+
+##### Tests
+
+* add test for #12446 (bf4e257c)
+
#### v3.7.1 (2024-03-14)
##### Chores
diff --git a/install/package.json b/install/package.json
index d6ab418c94..75b011bbb9 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.1",
+ "version": "3.7.2",
"homepage": "https://www.nodebb.org",
"repository": {
"type": "git",
@@ -30,11 +30,11 @@
"dependencies": {
"@adactive/bootstrap-tagsinput": "0.8.2",
"@fontsource/inter": "5.0.17",
- "@fontsource/poppins": "5.0.12",
- "@fortawesome/fontawesome-free": "6.5.1",
+ "@fontsource/poppins": "5.0.13",
+ "@fortawesome/fontawesome-free": "6.5.2",
"@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",
@@ -93,13 +93,13 @@
"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",
"nodebb-plugin-emoji-android": "4.0.0",
"nodebb-plugin-markdown": "13.0.0-pre.3",
- "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",
@@ -113,8 +113,8 @@
"passport": "0.7.0",
"passport-http-bearer": "1.0.1",
"passport-local": "1.0.0",
- "pg": "8.11.3",
- "pg-cursor": "2.10.3",
+ "pg": "8.11.5",
+ "pg-cursor": "2.10.5",
"postcss": "8.4.38",
"postcss-clean": "1.2.0",
"progress-webpack-plugin": "1.0.16",
@@ -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",
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..5bb299567f 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-user.placeholder": "Въведете име на потребител, за да филтрирате…",
+ "filter-group": "Филтриране по група",
+ "filter-group.placeholder": "Въведете име на група, за да филтрирате…",
"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-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/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/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 ae63ff3573..18223d80d8 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": "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/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..9bf4a8d612 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": "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
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/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/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-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)",
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
diff --git a/public/scss/modules/scrollbar.scss b/public/scss/modules/scrollbar.scss
index 47b90c4a4e..d99214ca91 100644
--- a/public/scss/modules/scrollbar.scss
+++ b/public/scss/modules/scrollbar.scss
@@ -1,7 +1,6 @@
.ghost-scrollbar {
&::-webkit-scrollbar {
width: 10px;
-
}
&::-webkit-scrollbar-track {
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/public/src/modules/accounts/picture.js b/public/src/modules/accounts/picture.js
index 50d869b849..d8ab277f24 100644
--- a/public/src/modules/accounts/picture.js
+++ b/public/src/modules/accounts/picture.js
@@ -94,7 +94,10 @@ define('accounts/picture', [
const iconBgColor = document.querySelector('.modal.picture-switcher input[type="radio"]:checked').value || 'transparent';
changeUserPicture(type, iconBgColor).then(() => {
- Picture.updateHeader(type === 'default' ? '' : modal.find('.list-group-item.active img').attr('src'), iconBgColor);
+ Picture.updateHeader(
+ type === 'default' ? '' : modal.find('.list-group-item.active img').attr('src'),
+ iconBgColor
+ );
ajaxify.refresh();
}).catch(alerts.error);
}
@@ -139,16 +142,17 @@ define('accounts/picture', [
function handleImageUpload(modal) {
function onUploadComplete(urlOnServer) {
- urlOnServer = (!urlOnServer.startsWith('http') ? config.relative_path : '') + urlOnServer + '?' + Date.now();
-
- Picture.updateHeader(urlOnServer);
+ urlOnServer = (!urlOnServer.startsWith('http') ? config.relative_path : '') + urlOnServer;
+ const cacheBustedUrl = urlOnServer + '?' + Date.now();
+ Picture.updateHeader(cacheBustedUrl);
if (ajaxify.data.picture && ajaxify.data.picture.length) {
- $('#user-current-picture, img.avatar').attr('src', urlOnServer);
+ $(`#user-current-picture, img[data-uid="${ajaxify.data.theirid}"].avatar`).attr('src', cacheBustedUrl);
ajaxify.data.uploadedpicture = urlOnServer;
+ ajaxify.data.picture = urlOnServer;
} else {
ajaxify.refresh(function () {
- $('#user-current-picture, img.avatar').attr('src', urlOnServer);
+ $(`#user-current-picture, img[data-uid="${ajaxify.data.theirid}"].avatar`).attr('src', cacheBustedUrl);
});
}
}
diff --git a/public/src/modules/api.js b/public/src/modules/api.js
index 95d5d35a1e..adae6734bb 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);
}
});
}
diff --git a/src/api/users.js b/src/api/users.js
index d3bb57a3e8..af63903ee3 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;
@@ -670,6 +669,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/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 2a2c3ce20d..b750876341 100644
--- a/src/events.js
+++ b/src/events.js
@@ -87,12 +87,15 @@ 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 });
@@ -100,19 +103,100 @@ events.log = async function (data) {
return { eid };
};
-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);
@@ -165,7 +249,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/groups/ownership.js b/src/groups/ownership.js
index ade58e65c9..c7ae09ae2d 100644
--- a/src/groups/ownership.js
+++ b/src/groups/ownership.js
@@ -28,8 +28,10 @@ module.exports = function (Groups) {
Groups.ownership.rescind = async function (toUid, groupName) {
// If the owners set only contains one member (and toUid is that member), error out!
- const numOwners = await db.setCount(`group:${groupName}:owners`);
- const isOwner = await db.isSortedSetMember(`group:${groupName}:owners`);
+ const [numOwners, isOwner] = await Promise.all([
+ db.setCount(`group:${groupName}:owners`),
+ db.isSetMember(`group:${groupName}:owners`, toUid),
+ ]);
if (numOwners <= 1 && isOwner) {
throw new Error('[[error:group-needs-owner]]');
}
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/upgrades/3.8.0/user-upload-folders.js b/src/upgrades/3.8.0/user-upload-folders.js
new file mode 100644
index 0000000000..5be9990a06
--- /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, 2, 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);
}
};
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 @@
+