Compare commits

..

380 Commits

Author SHA1 Message Date
Peter Jaszkowiak
bfdf2a7b79 recommended CLI startup / bootstrap changes 2022-12-30 19:31:29 -07:00
bhavya3024
0ba54a2b37 typescript migration 2022-12-29 01:54:44 +05:30
bhavya3024
c3c63bfe92 typescript-renames 2022-12-25 23:53:48 +05:30
Barış Soner Uşaklı
bb69f304c2 fix: #11114, use event delegation
check attribute instead of content of dropdown for load status, so themes can use placeholders
2022-12-24 21:56:15 -05:00
Barış Soner Uşaklı
dd3e2c0d96 breaking: add unblock button instead of changing text dynamically 2022-12-24 18:33:48 -05:00
Barış Soner Uşaklı
d190bf41e0 add responsive borders 2022-12-24 13:12:03 -05:00
Barış Soner Uşaklı
6e86b4afa2 feat: add selected group to all profile pages
add new lang strings
2022-12-23 18:20:43 -05:00
Julian Lam
8f5bb18ee5 feat: update default theme to harmony, move default footer widget to sidebar footer 2022-12-23 14:09:48 -05:00
Julian Lam
69a285fa2c feat: pass widgets to client-side header/footer data 2022-12-23 13:49:57 -05:00
Barış Soner Uşaklı
f5e609ae6a fix: #11112, cleanup autocomplete markup for chats
after modal is closed
when switching chats on chats page
when navigation to another page from a chat page
2022-12-23 11:48:09 -05:00
Barış Soner Uşaklı
d1087106e4 refactor: topics.markAsUnreadForAll
fix fork test
2022-12-22 09:53:04 -05:00
Julian Lam
2144650dd5 Merge remote-tracking branch 'origin/develop' into bootstrap5 2022-12-21 17:20:42 -05:00
Julian Lam
9b2567d517 feat: new strings for composer 2022-12-21 12:41:49 -05:00
Barış Soner Uşaklı
57bfb37c55 feat: add emailHidden 2022-12-20 17:54:14 -05:00
Barış Soner Uşaklı
88fc073485 fix: add missing returns so functions return promise 2022-12-16 17:28:46 -05:00
Julian Lam
81a4ee18c8 fix: replace API calls to api.delete with api.del 2022-12-16 14:22:49 -05:00
Julian Lam
c4e2b4e87f chore: rewrite API module as ESM [breaking] 2022-12-16 14:19:58 -05:00
Julian Lam
0a9b1622cc fix: #11099, handle 401 in api module [breaking] 2022-12-16 12:06:24 -05:00
Julian Lam
00aef13dd3 Revert "fix: restore old behaviour of empty json w/ 401 code in admin middleware" [breaking]
This reverts commit dda5d42610.

re: #11099
2022-12-16 12:05:41 -05:00
Julian Lam
35b5ae195f fix(glance-nav): broken nav buttons 2022-12-15 14:38:34 -05:00
Barış Soner Uşaklı
d814b3325e fix: post queue issues 2022-12-15 13:03:39 -05:00
Barış Soner Uşaklı
ac1f3c314b fix: acp category-selector being changed by theme 2022-12-13 11:18:09 -05:00
Barış Soner Uşaklı
9b3616b103 refactor: move canPostTopic to privs and use on /unread /tag 2022-12-13 11:05:06 -05:00
Julian Lam
b2a59900e3 chore(glance-nav): re-org 2022-12-12 17:14:54 -05:00
Julian Lam
bf05d3527b fix(glance-nav): remove useless call that slowed things down 2022-12-12 17:09:38 -05:00
Julian Lam
940770bb9b fix(glance-nav): replace calls to navigator.getIndex() with index calculation based on track position 2022-12-12 16:59:22 -05:00
Julian Lam
0f7c9a7919 fix(glance-nav): use debounce instead of throttle 2022-12-12 16:46:29 -05:00
Julian Lam
038e7515fd fix(glance-nav): update handle index even if the post summary call fails 2022-12-12 13:26:28 -05:00
Julian Lam
b74bcd1a86 feat(glance-nav): show updated timestamp on nav scroll
thanks @barisusakli
2022-12-12 13:24:03 -05:00
Barış Soner Uşaklı
547f33a0a1 Merge branch 'bootstrap5' of https://github.com/NodeBB/NodeBB into bootstrap5 2022-12-12 12:36:53 -05:00
Barış Soner Uşaklı
c007ebe326 feat: allow changing fixed param 2022-12-12 12:36:48 -05:00
Julian Lam
50afbde62b feat(glance-nav): anchor and text update for unread indicator 2022-12-12 12:35:54 -05:00
Julian Lam
9d50826821 feat(glance-nav): unread indicator meta text 2022-12-12 12:21:00 -05:00
Barış Soner Uşaklı
574dd8eecb fix: dont lower bookmark
also ignore guests/spiders
2022-12-12 12:17:14 -05:00
Julian Lam
43561734cc fix(glance-nav): do not enable if postcount is less than bookmark threshold; do not allow unread indicator to go above knob 2022-12-12 11:48:03 -05:00
Barış Soner Uşaklı
81c8828bb1 add flex-1 class 2022-12-12 11:42:44 -05:00
Julian Lam
06604571d4 feat: refactor post menu tools to run once instead of checking for content, allow plugins to use skeleton placeholders within 2022-12-12 11:35:32 -05:00
Julian Lam
a28981de7c feat: unread indicator in topic nav 2022-12-09 16:07:47 -05:00
Julian Lam
fe76ee3ad7 feat: post index text in nav handle 2022-12-09 15:38:36 -05:00
Julian Lam
4b3a5e03c2 fix: #11079, update track position on window resize + cleanup 2022-12-08 22:53:00 -05:00
Barış Soner Uşaklı
831510e319 add hover-visible 2022-12-08 19:40:03 -05:00
Barış Soner Uşaklı
1c67d11b16 chore: up themes 2022-12-08 19:17:11 -05:00
Barış Soner Uşaklı
22031759dc Merge branch 'bootstrap5' of https://github.com/NodeBB/NodeBB into bootstrap5 2022-12-08 19:11:21 -05:00
Barış Soner Uşaklı
12336c8764 fix: topic events not showing up immediately 2022-12-08 19:11:15 -05:00
Julian Lam
901b2d7561 fix: update source text for quick reply 2022-12-08 13:23:34 -05:00
Barış Soner Uşaklı
57724ef2fb breaking: match topic page class for hiding 2022-12-07 23:36:40 -05:00
Julian Lam
c08fab5769 fix: only show at-a-glance navigator on topic template 2022-12-07 15:47:19 -05:00
Julian Lam
e0280136e4 chore: module cleanup 2022-12-07 15:15:03 -05:00
Julian Lam
e3dd1d62d9 fix: use app flag for at-a-glance active state instead of exported method 2022-12-07 15:11:23 -05:00
Julian Lam
8a83690596 fix: console logs 2022-12-07 15:07:37 -05:00
Julian Lam
54c6fbe287 feat: at-a-glance navigator 2022-12-07 15:07:37 -05:00
Barış Soner Uşaklı
c29876aed3 add white-space: initial 2022-12-07 11:55:40 -05:00
Barış Soner Uşaklı
f997e7a3bc add long/short 2022-12-07 11:02:56 -05:00
Barış Soner Uşaklı
fc914a39a2 add line-clamp mixin 2022-12-07 10:54:11 -05:00
Julian Lam
39ae02ade1 fix: also check theme node_modules folder as a css path 2022-12-05 15:37:01 -05:00
Barış Soner Uşaklı
7f5a9f19dd remove user_label hardcoded css 2022-12-05 15:28:04 -05:00
Julian Lam
db1d04931d refactor: fire topic tools load event once instead of checking for empty container
This allows for themes to put things inside the container (e.g. skeleton placeholders)
2022-12-02 17:04:06 -05:00
Barış Soner Uşaklı
60853bc20f chore: up lavender 2022-12-02 11:28:14 -05:00
Barış Soner Uşaklı
0e117910ba chore: up composer-default
add no drafts key
2022-12-01 12:56:15 -05:00
Barış Soner Uşaklı
55e0cbe76a feat: add draft lang keys 2022-12-01 11:02:11 -05:00
Barış Soner Uşaklı
848a57c314 chore: up themes 2022-12-01 11:01:55 -05:00
Barış Soner Uşaklı
12041d076b breaking: closes #11070, move quickreply to core 2022-12-01 09:52:48 -05:00
Barış Soner Uşaklı
b422c8ce52 breaking: refactor topic events
for proper i18n
support both `user locked this topic 3 hours ago` & `user locked this topic on 19 Oct 2022, 11:42`
2022-11-30 22:02:06 -05:00
Barış Soner Uşaklı
17a6621cd8 Revert "feat: supply subject-first topic event text for themes"
This reverts commit 2fec6b007a.
2022-11-30 18:29:00 -05:00
Julian Lam
2fec6b007a feat: supply subject-first topic event text for themes 2022-11-30 14:40:42 -05:00
Julian Lam
0dfd22c12b fix: have ul as replies container, not div 2022-11-30 14:40:42 -05:00
Barış Soner Uşaklı
9d599341d9 refactor: chat/notif counts 2022-11-30 13:53:08 -05:00
Barış Soner Uşaklı
289eca08a3 use component for count 2022-11-30 11:02:19 -05:00
Barış Soner Uşaklı
e73cf1e280 feat: use flex box for user icons 2022-11-29 19:20:11 -05:00
Barış Soner Uşaklı
b1aca51c48 fix: notif parent
add notifications/count component
2022-11-29 19:08:09 -05:00
Barış Soner Uşaklı
aee8c38cfc refactor: add timeago short/long versions
so themes can pick one
toggle hidden on unread/read icons as well
2022-11-29 10:45:12 -05:00
Julian Lam
064cf1abe7 fix: have Topic.applyDropup apply only to dropdown menus within the topic itself 2022-11-28 12:28:42 -05:00
Barış Soner Uşaklı
efcb1c2618 fix: prototype vulnerability in socket.io onMessage 2022-11-27 19:31:08 -05:00
Barış Soner Uşaklı
4a113bf1c7 refactor: use fw-bold 2022-11-27 19:08:18 -05:00
Barış Soner Uşaklı
63b19301d6 breaking: remove middleware.renderHeader/renderAdminHeader
move render/footer rendering to middleware/render.js
pass the same data that is passed to header to the footer as well, allows rendering navigation/profile dropdowns in footer.tpl
2022-11-27 19:08:09 -05:00
Julian Lam
c472fa2850 feat: buildCategoryLabel helper (for use in harmony theme) 2022-11-27 14:33:31 -05:00
Julian Lam
3c66301f03 fix(deps): update bootbox to v6 2022-11-27 14:22:53 -05:00
Barış Soner Uşaklı
7de2abd01c chore: update bs5 version 2022-11-25 11:15:36 -05:00
Julian Lam
22255ac47b Merge branch 'develop' into bootstrap5 2022-11-24 20:18:38 -05:00
Julian Lam
d9afabf0f2 Merge branch 'develop' into bootstrap5 2022-11-23 16:17:31 -05:00
Julian Lam
3a500f2481 chore: bump version for alpha 2 2022-11-23 16:09:21 -05:00
Julian Lam
ff5d56bb8d Merge branch 'develop' into bootstrap5 2022-11-23 16:07:15 -05:00
Julian Lam
9b7159264f Merge branch 'master' into develop 2022-11-23 16:05:46 -05:00
Barış Soner Uşaklı
ca27f37791 Merge branch 'master' into bootstrap5 2022-11-23 14:17:10 -05:00
Barış Soner Uşaklı
fb0c9174b5 refactor: remove unnecessary async 2022-11-21 18:49:01 -05:00
Julian Lam
c5562967c4 Merge branch 'develop' into bootstrap5 2022-11-18 11:54:35 -05:00
Barış Soner Uşaklı
e583f84e08 refactor: es6 alerts 2022-11-16 14:40:18 -05:00
Julian Lam
378fff2714 Merge branch 'develop' into bootstrap5 2022-11-16 12:18:28 -05:00
Julian Lam
4d88ddb20a fix: tests broken by commit to fix #11042 2022-11-15 14:35:30 -05:00
Julian Lam
e92fd00bca fix: #10042, use bootstrap 5 classes for colour context if privilege is added or removed, prior to saving 2022-11-15 14:22:21 -05:00
Barış Soner Uşaklı
1099de7702 fix: #11037, update eslint-nodebb-config 2022-11-15 11:17:52 -05:00
Barış Soner Uşaklı
c0c8039c4e refactor: remove is-checked, leftover from mdl 2022-11-15 09:34:57 -05:00
Barış Soner Uşaklı
1f62593a21 fix: alert on page load 2022-11-15 09:29:14 -05:00
Barış Soner Uşaklı
72175a971b fix: #11041, label location changed 2022-11-15 09:12:30 -05:00
Barış Soner Uşaklı
c519f06afa chore: up persona 2022-11-14 10:57:39 -05:00
Barış Soner Uşaklı
1c5e16ca3b Merge branch 'develop' into bootstrap5 2022-11-11 18:02:20 -05:00
Barış Soner Uşaklı
3a6898bb4c bs5 fix 2022-11-11 16:25:56 -05:00
Barış Soner Uşaklı
7bd0ccabd3 Merge branch 'develop' into bootstrap5 2022-11-11 16:24:32 -05:00
Barış Soner Uşaklı
435bb92c3f bring back bold for form-labels 2022-11-11 15:32:35 -05:00
Barış Soner Uşaklı
b355212c58 chore: up persona 2022-11-11 14:44:17 -05:00
Barış Soner Uşaklı
39434061a9 refactor: move some tpls to core 2022-11-11 13:12:43 -05:00
Barış Soner Uşaklı
5c220d928b fix: move discard button up, closes #11005 2022-11-11 12:26:52 -05:00
Julian Lam
aaeb0be0d8 Merge branch 'develop' into bootstrap5 2022-11-09 13:31:50 -05:00
Julian Lam
3c194500d2 fix: #11017, bump persona 2022-11-09 12:17:42 -05:00
Julian Lam
515af200ee Merge branch 'develop' into bootstrap5 2022-11-09 12:17:21 -05:00
Opliko
756e9f53a9 feat(fontawesome): New FontAwesome Icon selector (#11010)
* feat: search via FA api in icon picker

* feat: new initial icon list

* fix: only trigger search if the query changed

avoids sending a request for eg. a ctrl key press

* fix: change deprecated .click() to .trigger(click)

* feat: debounce icon search

* fix: use debounce properly
2022-11-09 11:41:37 -05:00
Barış Soner Uşaklı
576f1dbe72 chore: up persona 2022-11-09 11:08:24 -05:00
Barış Soner Uşaklı
bd234a7216 fix: group title 2022-11-09 11:06:42 -05:00
Julian Lam
1eee5e9114 fix(deps): bump spam-be-gone 2022-11-04 11:29:47 -04:00
Barış Soner Uşaklı
12e6e757ea chore: up bootstrap/bootswatch 2022-11-01 17:32:00 -04:00
Barış Soner Uşaklı
662a5e91db chore: up themes 2022-11-01 15:30:22 -04:00
Barış Soner Uşaklı
ab439e6ae8 chore: deps 2022-11-01 14:06:51 -04:00
Barış Soner Uşaklı
c3af787bf8 fix: hardcoded min-height in move topic modal 2022-11-01 13:11:46 -04:00
Barış Soner Uşaklı
375ff48a46 chore: up deps 2022-11-01 10:28:20 -04:00
Barış Soner Uşaklı
90df4e3f2d lint: fix commas 2022-10-25 18:37:49 -04:00
Barış Soner Uşaklı
c9e0bbf0b7 fix: closes #11007, alert close btn css 2022-10-25 18:23:12 -04:00
Barış Soner Uşaklı
9d290a4f6e fix: skins/themes save buttons. remove material icons from header 2022-10-25 18:01:31 -04:00
Barış Soner Uşaklı
299b53a3ee use the new save button on groups/privileges 2022-10-25 17:32:45 -04:00
Barış Soner Uşaklı
4de9f53296 refactor: toggle save button on category save as well 2022-10-25 17:24:46 -04:00
Julian Lam
e7ba890889 refactor: remove unneeded mixin, use bs5 classes and inline style as needed 2022-10-25 14:39:58 -04:00
Julian Lam
e63f8826b4 fix: remaining use of mdl classes in ACP 2022-10-25 14:39:58 -04:00
Julian Lam
836993d137 Revert "fix: closes #11000, dont cover save button with success alert"
This reverts commit c0859188ce.
2022-10-25 14:39:58 -04:00
Julian Lam
556b06ac2d fix: remove success toast on settings.save, navigation, widgets 2022-10-25 14:39:58 -04:00
Julian Lam
539e3cb5a8 fix: 500ms transition instead, also use solid floppy disk icon 2022-10-25 14:39:58 -04:00
Julian Lam
9bbdccbae0 fix: use form-switch instead of checkbox 2022-10-25 14:39:58 -04:00
Julian Lam
3e355be245 feat: have save button turn into green checkmark on successful save 2022-10-25 14:39:58 -04:00
Julian Lam
19c2be6b0b fix: remove save button and replace with partial written with bs5 classes 2022-10-25 14:39:58 -04:00
Julian Lam
aed1ee0224 fix: remove mdl-specific overrides, label bolding 2022-10-25 14:39:58 -04:00
Julian Lam
83f6f99354 fix: remove mdl css file 2022-10-25 14:39:58 -04:00
Julian Lam
2c3f330580 fix: rewrite and standardise all checkboxes in ACP to be bs5 checkboxes 2022-10-25 14:39:58 -04:00
Julian Lam
6da286c22b test: abort controller for interstitials 2022-10-24 15:33:52 -04:00
Julian Lam
ddf7537301 test: fix tests for changes to membershipBtn helper 2022-10-24 14:57:00 -04:00
Julian Lam
f426e7efe6 style: linting for some reason 2022-10-24 14:54:30 -04:00
Julian Lam
635541026b Merge branch 'develop' into bootstrap5 2022-10-24 14:13:18 -04:00
Barış Soner Uşaklı
1ba6e9c080 chore: up widgets 2022-10-21 20:31:02 -04:00
Barış Soner Uşaklı
a9ebffd47a chore: up persona 2022-10-21 20:18:07 -04:00
Barış Soner Uşaklı
3b52624410 change tooltip container 2022-10-21 13:35:23 -04:00
Barış Soner Uşaklı
6a30c0afea chore: up peace 2022-10-21 11:48:03 -04:00
Barış Soner Uşaklı
3509a36b52 chore: up themes 2022-10-21 11:13:11 -04:00
Barış Soner Uşaklı
9ee8bf41d8 chore: up persona 2022-10-21 10:00:53 -04:00
Barış Soner Uşaklı
ef94cd0caa chore: up themes 2022-10-21 09:41:27 -04:00
Barış Soner Uşaklı
c0859188ce fix: closes #11000, dont cover save button with success alert 2022-10-21 09:29:04 -04:00
Barış Soner Uşaklı
66f8c18f6a chore: up persona 2022-10-21 09:19:19 -04:00
Barış Soner Uşaklı
427db1adb8 fix: navi textClass 2022-10-21 09:00:34 -04:00
Barış Soner Uşaklı
1473f79390 chore: up composer 2022-10-21 01:05:12 -04:00
Barış Soner Uşaklı
79cc00b4ea changed to md 2022-10-20 23:26:37 -04:00
Barış Soner Uşaklı
5c7d544bcb chore: up persona 2022-10-20 23:25:54 -04:00
Julian Lam
5c9fe6c0fd fix: stop topic navigation hotkeys from firing if in a mousetrap-enabled form element 2022-10-20 21:59:29 -04:00
Barış Soner Uşaklı
5ba818ba7b feat: add search data to filter:search.inContent 2022-10-20 20:36:43 -04:00
Barış Soner Uşaklı
c1b89f5bd0 chore: up lavender 2022-10-20 11:56:45 -04:00
Barış Soner Uşaklı
8c6cc7bee8 chore: up composer 2022-10-19 19:44:50 -04:00
Barış Soner Uşaklı
37838095d8 Merge branch 'bootstrap5' of https://github.com/NodeBB/NodeBB into bootstrap5 2022-10-19 19:36:32 -04:00
Barış Soner Uşaklı
ed7d629451 chore: up composer 2022-10-19 19:36:31 -04:00
Julian Lam
8c238a8a13 chore: add bootstrap5 to test runner for now 2022-10-19 15:24:44 -04:00
Julian Lam
0bff957c20 Merge remote-tracking branch 'origin/develop' into bootstrap5 2022-10-19 15:24:07 -04:00
Julian Lam
591380531f fix: form text in ACP > Appearance > Customise 2022-10-19 14:27:39 -04:00
Barış Soner Uşaklı
b917ceaaf2 chore: add back lavender 2022-10-19 12:33:59 -04:00
Barış Soner Uşaklı
9e064a864e fix col-xs classes 2022-10-19 12:10:54 -04:00
Julian Lam
8ddbd10506 fix(deps): bump persona 2022-10-19 12:00:40 -04:00
Julian Lam
a600b7c1c6 fix(deps): bump composer and persona 2022-10-19 11:49:50 -04:00
Barış Soner Uşaklı
e2a7af9c6f chore: up persona 2022-10-19 08:58:51 -04:00
Julian Lam
dac71c84cb chore: remove socketUser.emailConfirm again 2022-10-18 15:26:28 -04:00
Julian Lam
c1081f7039 Merge branch 'master' into bootstrap5 2022-10-18 15:21:20 -04:00
Barış Soner Uşaklı
a2c824bf99 fix: outgoing 2022-10-18 13:05:56 -04:00
Barış Soner Uşaklı
78935f7338 Merge branch 'master' into bootstrap5 2022-10-18 10:41:28 -04:00
Barış Soner Uşaklı
94fbc8ea17 progress height 2022-10-17 20:59:03 -04:00
Barış Soner Uşaklı
e3110950ff chore: up deps
move blockquote style to generics.scss
get rid of voodoo selection code, selection.toString() seems to work
2022-10-17 20:47:10 -04:00
Barış Soner Uşaklı
6c8b8e057c chore: up persona 2022-10-17 12:18:59 -04:00
Barış Soner Uşaklı
7c5dbaf2c2 fix: EEXISTS error on linux if plugin/theme overrides core js file 2022-10-17 11:15:50 -04:00
Barış Soner Uşaklı
8f0f635f14 Merge branch 'bootstrap5' of https://github.com/NodeBB/NodeBB into bootstrap5 2022-10-16 17:18:21 -04:00
Barış Soner Uşaklı
4e79c12c7b chore: up composer 2022-10-16 17:18:15 -04:00
Opliko
3bdee868c2 fix: move FA fonts to a versioned subfolder to bust cache on updates (#10979) 2022-10-15 17:24:59 -04:00
Barış Soner Uşaklı
2f8834ee0a chore: up persona 2022-10-14 21:05:44 -04:00
Barış Soner Uşaklı
92e7653ebf refactor: half size icons 2022-10-14 21:03:34 -04:00
Barış Soner Uşaklı
08454f66c9 chore: up persona 2022-10-14 20:22:19 -04:00
Barış Soner Uşaklı
4f756be008 chore: up persona 2022-10-14 20:16:11 -04:00
Barış Soner Uşaklı
35a3ff7cb6 chore: up composer 2022-10-13 13:40:16 -04:00
Barış Soner Uşaklı
e4a3cf66ba fix: admin header 2022-10-13 13:28:11 -04:00
Barış Soner Uşaklı
4f55cfc494 chore: up composer 2022-10-13 11:18:37 -04:00
Barış Soner Uşaklı
3cdc136a9a fix active plugins (#10964) 2022-10-13 10:11:30 -04:00
Barış Soner Uşaklı
9de2b3653f modal style 2022-10-12 13:11:11 -04:00
Barış Soner Uşaklı
3ab800d49f refactor: move embedded group create modal
and fix its styling
2022-10-12 12:40:35 -04:00
Barış Soner Uşaklı
f3ae22d2a8 feat: add color property to taskbar
allows matching category icon when changing categories in composer
2022-10-11 19:16:27 -04:00
Barış Soner Uşaklı
34439c06de chore: up themes 2022-10-11 13:01:41 -04:00
Barış Soner Uşaklı
6f503c9512 make icons text white 2022-10-11 12:46:07 -04:00
Barış Soner Uşaklı
bc772a8303 chore: up persona/spam-be-gone 2022-10-11 12:32:37 -04:00
oplik0
421860969f feat: update link in fontawesome.tpl 2022-10-11 10:54:25 -04:00
oplik0
5e98ebb073 docs: update FA attribution.js 2022-10-11 10:54:25 -04:00
oplik0
18184b936d feat: move to FA6.2 2022-10-11 10:54:25 -04:00
Julian Lam
c285f72e12 fix: bug that allowed for bypass of GDPR interstitial on SSO registrations simply by cancelling the form 2022-10-11 10:46:12 -04:00
Julian Lam
2533a2e074 refactor: add new method user.interstitials.get; DRY 2022-10-11 10:46:12 -04:00
Barış Soner Uşaklı
7f5f4e8967 breaking: chat.close takes in uuid instead of chatmodal 2022-10-09 21:59:17 -04:00
Barış Soner Uşaklı
f7121fa529 breaking: move action:chat.sent to success callback of api call
dont fire action:chat.sent on chat message edit, fire action:chat.edited instead
2022-10-09 21:51:25 -04:00
Barış Soner Uşaklı
a116639699 breaking: move ban/mute modals
breaking: add accounts/moderate module and move ban/mute there
2022-10-09 21:43:42 -04:00
Barış Soner Uşaklı
796bf240cc breaking: remove unused colorpicker 2022-10-09 20:59:08 -04:00
Barış Soner Uşaklı
4505229661 eval-source-map is recommended for dev 2022-10-09 15:44:52 -04:00
Barış Soner Uşaklı
e8da0557bb default to prod 2022-10-09 15:33:07 -04:00
Barış Soner Uşaklı
beb52df1d9 fix: lint use async compile 2022-10-08 22:58:08 -04:00
Barış Soner Uşaklı
36b29d0266 Merge branch 'bootstrap5' of https://github.com/NodeBB/NodeBB into bootstrap5 2022-10-08 22:18:15 -04:00
Barış Soner Uşaklı
5af262a4d0 chore: add popperjs 2022-10-08 22:18:06 -04:00
Opliko
5772e0bbfb feat: use sass-embedded if possible (#10950) 2022-10-08 22:17:41 -04:00
Barış Soner Uşaklı
9d0b1d5092 refactor: remove unused code 2022-10-08 20:03:35 -04:00
Barış Soner Uşaklı
6837440942 fix: showAndFocus to use a specific search form 2022-10-06 09:17:35 -04:00
Barış Soner Uşaklı
0cb0a5c294 show progress 2022-10-06 07:52:32 -04:00
Barış Soner Uşaklı
045ef8bad9 Esbuild (#10940)
* ci: add minimum GitHub token permissions for workflows
Signed-off-by: Ashish Kurmi <akurmi@stepsecurity.io>

* feat: use esbuild for minification

Co-authored-by: Ashish Kurmi <akurmi@stepsecurity.io>
2022-10-06 07:51:41 -04:00
Barış Soner Uşaklı
7f9b1cf0be perf: speed up build
run webpack as soon as js targets are done
this allows building js/css in parallel
2022-10-05 22:46:42 -04:00
Barış Soner Uşaklı
308dae1a52 chore: up peace 2022-10-05 21:42:22 -04:00
Julian Lam
4f70d19e1e chore: v3.0.0-alpha.1 🎉 2022-10-05 14:09:57 -04:00
Julian Lam
3ddf91fb75 chore: clean up package.json for alpha 2022-10-05 14:02:03 -04:00
Barış Soner Uşaklı
9f0ecd6ea3 chore: rename panel to card 2022-10-05 10:55:46 -04:00
Barış Soner Uşaklı
97d499ce97 chore: up composer 2022-10-05 10:45:45 -04:00
Barış Soner Uşaklı
1fac6f69ad breaking: remove deprecated app methods 2022-10-05 10:18:23 -04:00
Barış Soner Uşaklı
cbc632da7d fix bs tooltips, update status tooltips
see https://github.com/twbs/bootstrap/issues/32372
2022-10-05 10:09:44 -04:00
Barış Soner Uşaklı
1d5cc19351 chore: up persona 2022-10-04 19:47:34 -04:00
Barış Soner Uşaklı
18cdb2575b chore: up persona 2022-10-04 19:31:13 -04:00
Barış Soner Uşaklı
78917e9117 fix: web installer css/tpl 2022-10-04 19:05:20 -04:00
Julian Lam
4757affa65 fix(deps): up 2factor 2022-10-04 13:48:32 -04:00
Barış Soner Uşaklı
ba52531a20 tooltip container 2022-10-03 14:03:40 -04:00
Barış Soner Uşaklı
6a5a28abca chore: up persona version 2022-10-03 13:42:59 -04:00
Barış Soner Uşaklı
661c0507a5 chore: up peace 2022-10-03 11:38:42 -04:00
Barış Soner Uşaklı
26bcb8b673 breaking: move bottom-sheet.scss to core 2022-10-03 10:41:21 -04:00
Barış Soner Uşaklı
eeb39b42b9 chore: add peace to package.json 2022-10-03 10:17:45 -04:00
Barış Soner Uşaklı
b35e90a6ad breaking: move modals to core 2022-10-03 10:13:20 -04:00
Barış Soner Uşaklı
389a2df9bf fix: category ordering add test 2022-10-03 09:40:54 -04:00
Barış Soner Uşaklı
68ba7cf97e fix timeago 2022-10-02 22:21:56 -04:00
Barış Soner Uşaklı
f3ee1097ed hover d-flex/block 2022-10-02 20:45:03 -04:00
Barış Soner Uşaklı
5f12d167ab fix: typo, timeago on blocks page 2022-10-02 20:28:09 -04:00
Barış Soner Uşaklı
adc248960b fix: timeago cutoff on users page
remove unused translator import
2022-10-02 18:02:33 -04:00
Barış Soner Uşaklı
a4e0b589ae bold/underlerine matches 2022-10-02 11:36:01 -04:00
Barış Soner Uşaklı
415f65cd79 add border-muted utility 2022-10-02 01:40:10 -04:00
Barış Soner Uşaklı
dfe69400ac fix: crash in category drag, closes #10932
happens when a child is dragged to root or from root to a nested level
2022-10-01 22:16:20 -04:00
Barış Soner Uşaklı
c81eb18623 fix more categories button not moving with parent
fix order issue
2022-10-01 22:02:56 -04:00
Barış Soner Uşaklı
4667dc8c88 fix admin toast 2022-10-01 22:00:55 -04:00
Barış Soner Uşaklı
7b18ea3e61 add hover display utility 2022-09-30 23:01:39 -04:00
Barış Soner Uşaklı
260ac5f427 refactor: use avatar helper
fix empty dropdown when searching
2022-09-30 23:01:14 -04:00
Barış Soner Uşaklı
e270474eed add manage lang string 2022-09-30 18:33:39 -04:00
Barış Soner Uşaklı
4d734714dd fix group preview update 2022-09-30 18:33:33 -04:00
Barış Soner Uşaklı
8ffc1c3e96 feat: add btnClass to membershipBtn helper 2022-09-30 12:05:04 -04:00
Barış Soner Uşaklı
0f2bd3e6ec use form control 2022-09-29 22:41:05 -04:00
Barış Soner Uşaklı
af190ac210 fix tagsinput to look like bs5 inputs 2022-09-29 22:26:10 -04:00
Barış Soner Uşaklı
21236fdc37 restore scroll position after adding necro messages 2022-09-29 19:32:08 -04:00
Julian Lam
dc0b3753d8 refactor: buildAvatar attributes to be Map instead of array of strings, to allow for easier overwriting 2022-09-29 16:28:58 -04:00
Julian Lam
d68806db1b fix: remove user avatar on error out 2022-09-29 16:28:58 -04:00
Julian Lam
ab157136aa refactor: helpers.buildAvatar now renders both avatars, and hides the second one using CSS 2022-09-29 16:28:58 -04:00
Barış Soner Uşaklı
f58e1cda30 fix: tag update only the edited post 2022-09-29 16:16:15 -04:00
Barış Soner Uşaklı
375dad8961 fix: navigator not properly updating url
remove threshold not used anymore
2022-09-29 15:13:05 -04:00
Barış Soner Uşaklı
5dc74abcf1 chore: add account lang string 2022-09-29 15:07:01 -04:00
Barış Soner Uşaklı
9c97211d8d lighter icons 2022-09-29 13:13:18 -04:00
Barış Soner Uşaklı
80c1ce8d85 fix: if no voters clear tooltip 2022-09-29 12:51:50 -04:00
Barış Soner Uşaklı
4c86c767b1 fix: bgColor not changing on picture modal 2022-09-29 12:36:49 -04:00
Barış Soner Uşaklı
b0a98e7f12 breaking: move/rename change_picture_modal to core 2022-09-29 12:30:54 -04:00
Barış Soner Uşaklı
daaa93b6e4 feat: add action:unread.updateCount 2022-09-29 10:42:32 -04:00
Barış Soner Uşaklı
a970c615fb feat: add action:chat.updateCount client side hook 2022-09-29 09:21:13 -04:00
Barış Soner Uşaklı
58cecafb34 breaking: use components instead of ids for search
breaking: remove deprecated app.search methods
allow having multiple search forms in the page
2022-09-28 12:01:31 -04:00
Barış Soner Uşaklı
092bdd9f22 fix: dynamic tooltips 2022-09-27 22:27:40 -04:00
Barış Soner Uşaklı
75eea53c4b feat: add buildCategoryIcon helper
similar to buildAvatar
2022-09-27 21:32:12 -04:00
Julian Lam
d45a34fdb8 test: fix tests so that when user.create is called, email is set prior to confirmation 2022-09-27 14:34:01 -04:00
Julian Lam
91849efde1 fix: #10805, do not set email field in user hash on user creation 2022-09-27 14:34:01 -04:00
Julian Lam
5a39fc2548 chore: remove passport.authenticate wrapper that passed in keepSessionInfo option [breaking] 2022-09-27 13:42:01 -04:00
Julian Lam
ee77ce0789 chore: remove deprecated socket.io user export methods [breaking] 2022-09-27 13:34:00 -04:00
Julian Lam
1d63fc469a chore: remove deprecated old routes for user data exports [breaking] 2022-09-27 11:23:52 -04:00
Julian Lam
a6f8ff440a fix: move alert.tpl to partials/toast.tpl 2022-09-27 10:39:46 -04:00
Barış Soner Uşaklı
7118cfa433 chore: up deps 2022-09-24 22:10:05 -04:00
Barış Soner Uşaklı
67b488aa7d add changeSkin calls to settings
add templateData to header/footer to match other filter:<tpl>:build hooks
2022-09-24 14:49:11 -04:00
Barış Soner Uşaklı
e9bd46592b use bs class for necro post 2022-09-24 14:46:30 -04:00
Barış Soner Uşaklı
1a2ad81471 fix: tool dropdown 2022-09-24 00:11:22 -04:00
Barış Soner Uşaklı
90b6d593fc give post tool dropdown min-height
it starts empty since its rendered after clicking the toggle
2022-09-24 00:03:20 -04:00
Barış Soner Uşaklı
f5d30d83c6 breaking: move some modals to core 2022-09-23 20:15:37 -04:00
Barış Soner Uşaklı
1aa916feb2 feat: allow merge from inside topic 2022-09-23 14:43:04 -04:00
Barış Soner Uşaklı
9e0f100d36 match other tool labels 2022-09-23 14:38:07 -04:00
Barış Soner Uşaklı
d1417609dd feat: allow logout button anywhere 2022-09-23 12:55:02 -04:00
Barış Soner Uşaklı
9510cc540a breaking: remove renderTopicEvents
use partial template
2022-09-23 10:56:15 -04:00
Barış Soner Uşaklı
0930934200 feat: add relevant topic events to post objects
see c9604f216a
2022-09-23 10:49:50 -04:00
Barış Soner Uşaklı
21e38d9e45 fix: scroll to post if theme doesn't have top navbar 2022-09-23 09:16:39 -04:00
Barış Soner Uşaklı
a5d4e6b68a fix another avatar 2022-09-22 21:03:56 -04:00
Barış Soner Uşaklı
48021c0b0a feat: allow always visible search input
if the search input is already visible do not hide it after it loses focus
2022-09-22 21:03:51 -04:00
Barış Soner Uşaklı
9f72f84775 fix: img-fluid 2022-09-22 15:43:42 -04:00
Barış Soner Uşaklı
179faa2270 fix: add missing post index 2022-09-22 12:31:25 -04:00
Barış Soner Uşaklı
c3920ccb10 feat: add the user of the post to category teaser 2022-09-22 12:23:34 -04:00
Barış Soner Uşaklı
cc4d320111 persona 2022-09-21 22:26:26 -04:00
Barış Soner Uşaklı
6b4e00fd47 test: fix profile pic test 2022-09-21 13:01:00 -04:00
Barış Soner Uşaklı
bfb63061c7 test: fix theme test 2022-09-21 12:49:15 -04:00
Barış Soner Uşaklı
e607c622b3 drop socket.io version 2022-09-21 12:40:34 -04:00
Barış Soner Uşaklı
ed9172d757 Merge branch 'bootstrap5' of https://github.com/NodeBB/NodeBB into bootstrap5 2022-09-21 12:31:00 -04:00
Barış Soner Uşaklı
375cd3202a chore: up deps 2022-09-21 12:30:59 -04:00
Julian Lam
dcfcc5ea2c Merge remote-tracking branch 'origin/develop' into bootstrap5 2022-09-21 12:12:27 -04:00
Barış Soner Uşaklı
0997fc626c chore: up deps 2022-09-21 10:33:12 -04:00
Barış Soner Uşaklı
0e3c8a201a up deps 2022-09-21 10:02:32 -04:00
Barış Soner Uşaklı
53d830d87e add max to cache 2022-09-21 09:52:16 -04:00
Barış Soner Uşaklı
be33752ba6 fix admin reconnect icon 2022-09-21 09:48:56 -04:00
Barış Soner Uşaklı
b2c3fcaaf5 increase webpack size limits 2022-09-20 21:11:08 -04:00
Barış Soner Uşaklı
ce2d180a23 remove extra param 2022-09-17 22:10:17 -04:00
Barış Soner Uşaklı
75dc78b738 perf: ltr/rtl change
fix modals
2022-09-17 21:32:31 -04:00
Julian Lam
25d1560dd1 fix(deps): bump mentions to v4 2022-09-16 21:29:00 -04:00
Julian Lam
f1c5adbf00 fix(deps): update to v3.0 compatible markdown and 2factor plugins 2022-09-16 21:13:38 -04:00
Barış Soner Uşaklı
37027003b5 fix grunt 2022-09-15 16:40:32 -04:00
Barış Soner Uşaklı
c7da128ecd fix: #10895, build client/adminCSS in single call 2022-09-15 14:45:11 -04:00
Barış Soner Uşaklı
11cf4fb144 widget changes 2022-09-15 14:29:59 -04:00
Barış Soner Uşaklı
916759b802 test: build test fix 2022-09-15 10:10:03 -04:00
Barış Soner Uşaklı
0bd96ab582 lint: remove less 2022-09-15 09:54:27 -04:00
Barış Soner Uşaklı
4cbfe33714 remove less 2022-09-15 09:31:53 -04:00
Barış Soner Uşaklı
e8d8b65b80 remove blue bg 2022-09-14 16:15:39 -04:00
Barış Soner Uşaklı
65cfbef567 update findBootstrapEnv, remove dupe functions 2022-09-14 15:59:27 -04:00
Julian Lam
f1817efe5d fix: add back timeago to post history modal 2022-09-14 13:19:06 -04:00
Julian Lam
bca239c476 fix: some small modal bugs with change picture modal 2022-09-14 13:04:50 -04:00
Julian Lam
5d332ea052 fix: have width and height defined in user-icon-style mixin 2022-09-14 11:05:51 -04:00
Barış Soner Uşaklı
9932a0dd1a fix text-right 2022-09-13 22:13:33 -04:00
Barış Soner Uşaklı
41b371c53c avatar fixes 2022-09-13 20:48:29 -04:00
Barış Soner Uşaklı
ba75be47ae div>span 2022-09-13 19:40:41 -04:00
Julian Lam
f75838c906 refactor: buildAvatar helper to take css variable for size instead of hardcoded xs, sm, etc., fixed up picture selection modal 2022-09-13 15:19:52 -04:00
Barış Soner Uşaklı
6bffe519b3 bs5 rtl support 2022-09-13 14:11:55 -04:00
Barış Soner Uşaklı
541ab312d5 margins 2022-09-13 11:17:59 -04:00
Barış Soner Uşaklı
d23b9563c8 modal fix 2022-09-13 11:10:20 -04:00
Barış Soner Uşaklı
7c5690cc49 match fontsize/body color 2022-09-13 10:54:03 -04:00
Barış Soner Uşaklı
f865f00ecb buttons no longer reversed 2022-09-13 10:44:08 -04:00
Barış Soner Uşaklı
775971d19b btn sizes 2022-09-13 10:37:00 -04:00
Barış Soner Uşaklı
c61935bb96 fix: typo 2022-09-13 10:26:07 -04:00
Barış Soner Uşaklı
b25a0769d5 fix privilege filters 2022-09-13 10:17:41 -04:00
Barış Soner Uşaklı
d2e972cf6c switch to scss in customCSS 2022-09-13 09:37:24 -04:00
Barış Soner Uşaklı
401aaf1757 fix floats 2022-09-12 18:34:37 -04:00
Barış Soner Uşaklı
1df99a4727 Merge branch 'bootstrap5' of https://github.com/NodeBB/NodeBB into bootstrap5 2022-09-12 17:14:58 -04:00
Barış Soner Uşaklı
5d7dbafb1d inherit works better if category search is inside a hidden element
like the composer
2022-09-12 17:14:57 -04:00
Julian Lam
57ff967ab0 Merge remote-tracking branch 'origin/develop' into bootstrap5 2022-09-12 16:57:02 -04:00
Barış Soner Uşaklı
91d1cbb5dc remove unnecessary tooltip calls 2022-09-11 21:59:47 -04:00
Barış Soner Uşaklı
a94cc877c4 tooltip fixes 2022-09-11 21:49:30 -04:00
Barış Soner Uşaklı
0512992afc remove search&dropdown tooltips 2022-09-11 20:07:04 -04:00
Barış Soner Uşaklı
8dde53c7af fix navlink active 2022-09-11 20:01:24 -04:00
Barış Soner Uşaklı
ff7c57f7bf fix: fa icon picker, help-block => form-text 2022-09-11 00:05:42 -04:00
Barış Soner Uşaklı
bdd02b72de fa shims and fix fonts 2022-09-10 20:50:13 -04:00
Barış Soner Uşaklı
9b30fc1680 fix panels 2022-09-10 20:13:45 -04:00
Barış Soner Uşaklı
9d7c1073d3 search padding 2022-09-09 14:08:10 -04:00
Barış Soner Uşaklı
527834a555 remove margin 2022-09-09 13:51:42 -04:00
Barış Soner Uşaklı
825538d5a9 acp header fix 2022-09-09 13:50:09 -04:00
Barış Soner Uşaklı
1510baa9a6 fix floating button zindex 2022-09-09 13:25:04 -04:00
Barış Soner Uşaklı
d3bd9f4697 partials and btn fixes 2022-09-09 12:36:18 -04:00
Barış Soner Uşaklı
2c1f920b6d fix col-xs-<> classes 2022-09-08 21:20:50 -04:00
Barış Soner Uşaklı
89aa9fb212 acp advanced pages 2022-09-08 21:06:23 -04:00
Barış Soner Uşaklı
9f9c9c6a66 plugins/rewards/widgets/skins/customize
modal fixes
2022-09-07 20:36:32 -04:00
Barış Soner Uşaklı
48207bc2a2 advanced/api/web-crawler pages 2022-09-03 22:34:58 -04:00
Barış Soner Uşaklı
ce9bcba16d feat: paper skin got renamed to materia 2022-09-03 22:11:18 -04:00
Barış Soner Uşaklı
b9de84e5bf email/post/uploads settings pages 2022-09-02 19:39:00 -04:00
Barış Soner Uşaklı
22e478307d cookies/reputation/user pages 2022-09-02 12:56:58 -04:00
Barış Soner Uşaklı
8cf64ff9ce feat: navigation 2022-09-02 12:26:38 -04:00
Barış Soner Uşaklı
75494011e1 more admin settings pages 2022-09-01 19:05:41 -04:00
Barış Soner Uşaklı
75506250e1 more manage pages 2022-09-01 18:00:44 -04:00
Barış Soner Uşaklı
d06938d877 groups/tags 2022-08-31 17:49:28 -04:00
Julian Lam
4eb71b1284 fix: update .avatar generic to use line-height and font-size variables, instead of hardcoded values 2022-08-31 17:14:11 -04:00
Barış Soner Uşaklı
3f4e5bb9a8 users page 2022-08-31 14:55:50 -04:00
Barış Soner Uşaklı
0ad61c53ae privileges 2022-08-31 14:30:55 -04:00
Barış Soner Uşaklı
a45131ab0e dashboard header fix 2022-08-30 20:41:33 -04:00
Barış Soner Uşaklı
cddc2c0b76 feat: update categories/category pages
fix dropdowns
2022-08-30 20:13:51 -04:00
Barış Soner Uşaklı
1930db6086 dashboard/nav fixes 2022-08-29 15:59:38 -04:00
Barış Soner Uşaklı
1cea5ab8c4 admin menu fixes 2022-08-29 15:36:50 -04:00
Barış Soner Uşaklı
30b999c16f Merge branch 'develop' into bootstrap5 2022-08-29 14:55:06 -04:00
Barış Soner Uşaklı
9260b4ef19 add missing pointer class 2022-08-26 19:41:10 -04:00
Barış Soner Uşaklı
dc231bf3b3 fix: dont hide dropdowns 2022-08-26 18:41:10 -04:00
Barış Soner Uşaklı
1b539fd0ff Merge branch 'master' into bootstrap5 2022-08-26 18:39:39 -04:00
Barış Soner Uşaklı
635cc1ffdf get rid of old grays and brand colors 2022-08-26 18:35:54 -04:00
Barış Soner Uşaklı
18b9a7afe1 change fa-stack 2022-08-25 22:17:47 -04:00
Barış Soner Uşaklı
5ad7c89803 fix taginput for bs5 2022-08-25 19:56:36 -04:00
Barış Soner Uşaklı
c4393af8c0 feat: add the same timeout to blur 2022-08-25 19:18:06 -04:00
Barış Soner Uşaklı
da75b07add feat: remove shadow mixin, dont highlight single letters 2022-08-25 15:12:51 -04:00
Barış Soner Uşaklı
bed8d97840 feat: add new_password key 2022-08-25 10:46:10 -04:00
Barış Soner Uşaklı
fecc4f948a feat: use visibility hidden for search button 2022-08-24 19:29:38 -04:00
Barış Soner Uşaklı
d5d4c1b3ed fix crash 2022-08-24 16:39:29 -04:00
Barış Soner Uşaklı
f2bd8e22d7 remove hidden 2022-08-24 11:17:40 -04:00
Barış Soner Uşaklı
d7a29a3df2 bs5 import 2022-08-24 10:27:15 -04:00
Barış Soner Uşaklı
f7f7066286 feat: add new bootswatch skins 2022-08-24 10:21:21 -04:00
Barış Soner Uşaklı
c6436bc542 fix: users navpills 2022-08-24 09:48:56 -04:00
Barış Soner Uşaklı
b50f662d45 skin support, correct order of imports for overrides 2022-08-23 19:30:31 -04:00
Barış Soner Uşaklı
62ec61e00c fix: category dropdown search 2022-08-23 16:39:33 -04:00
Barış Soner Uşaklı
0fb0745613 feat: bring back responsive-utilities 2022-08-23 12:05:33 -04:00
Barış Soner Uşaklı
eadeb42e57 fix: move fontawesome before theme 2022-08-22 19:01:17 -04:00
Barış Soner Uşaklı
c674422205 refactor: order of scss files 2022-08-22 14:29:41 -04:00
Barış Soner Uşaklı
0042307234 fix: sass division warnings 2022-08-22 13:54:47 -04:00
Barış Soner Uşaklı
288e6260ef refactor: remove unused url 2022-08-22 13:16:25 -04:00
Barış Soner Uşaklı
11c7a02aaf refactor: fixPath 2022-08-22 13:14:05 -04:00
Barış Soner Uşaklı
196d22be16 bs5 prep 2022-08-22 12:56:46 -04:00
Barış Soner Uşaklı
2a8f1e4cba add fa scss 2022-08-22 11:15:25 -04:00
Barış Soner Uşaklı
58141f603b bs5 2022-08-22 11:14:22 -04:00
2240 changed files with 15924 additions and 29435 deletions

View File

@@ -13,14 +13,13 @@ on:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
permissions:
contents: read
packages: write
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v2
with:
fetch-depth: 0
@@ -30,32 +29,26 @@ jobs:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to GitHub Container Registry
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Docker meta
id: meta
uses: docker/metadata-action@v4
with:
images: ghcr.io/${{ github.repository }}
images: nodebb/docker
tags: |
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}.x
type=raw,value=latest,enable={{is_default_branch}}
type=ref,event=branch,enable=${{ github.event.repository.default_branch != github.ref }}
type=raw,value=latest
- name: Build and push Docker images
uses: docker/build-push-action@v4
uses: docker/build-push-action@v3
with:
context: .
file: ./Dockerfile
push: true
tags: ${{ steps.meta.outputs.tags }}
platforms: linux/amd64,linux/arm64,linux/arm/v7
cache-from: type=gha
cache-to: type=gha,mode=max

View File

@@ -29,19 +29,19 @@ jobs:
fail-fast: false
matrix:
os: [ubuntu-latest]
node: [16, 18]
node: [14, 16, 18]
database: [mongo-dev, mongo, redis, postgres]
include:
# only run coverage once
- os: ubuntu-latest
node: 16
node: 14
coverage: true
# test under development once
- database: mongo-dev
test_env: development
# only run eslint once
- os: ubuntu-latest
node: 16
node: 14
database: mongo-dev
lint: true
runs-on: ${{ matrix.os }}
@@ -50,7 +50,7 @@ jobs:
services:
postgres:
image: 'postgres:15-alpine'
image: 'postgres:14-alpine'
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
@@ -65,7 +65,7 @@ jobs:
- 5432:5432
redis:
image: 'redis:7.0.11'
image: 'redis:2.8.23'
# Set health checks to wait until redis has started
options: >-
--health-cmd "redis-cli ping"
@@ -194,7 +194,7 @@ jobs:
run: npm run coverage
- name: Test coverage
uses: coverallsapp/github-action@v2.1.2
uses: coverallsapp/github-action@1.1.3
if: matrix.coverage
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
@@ -208,7 +208,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Coveralls Finished
uses: coverallsapp/github-action@v2.1.2
uses: coverallsapp/github-action@1.1.3
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
parallel-finished: true

1
.gitignore vendored
View File

@@ -1,4 +1,5 @@
dist/
build/
yarn.lock
npm-debug.log
node_modules/

View File

@@ -2445,110 +2445,6 @@ trans.bn = public/language/bn/admin/settings/web-crawler.json
trans.pt_PT = public/language/pt-PT/admin/settings/web-crawler.json
trans.sc = public/language/sc/admin/settings/web-crawler.json
[o:nodebb:p:nodebb:r:themes-harmony]
file_filter = public/language/<lang>/themes/harmony.json
source_file = public/language/en-GB/themes/harmony.json
source_lang = en_GB
type = KEYVALUEJSON
trans.th = public/language/th/themes/harmony.json
trans.bg = public/language/bg/themes/harmony.json
trans.hr = public/language/hr/themes/harmony.json
trans.hy = public/language/hy/themes/harmony.json
trans.sk = public/language/sk/themes/harmony.json
trans.sl = public/language/sl/themes/harmony.json
trans.sq_AL = public/language/sq-AL/themes/harmony.json
trans.sv = public/language/sv/themes/harmony.json
trans.vi = public/language/vi/themes/harmony.json
trans.da = public/language/da/themes/harmony.json
trans.en_US = public/language/en-US/themes/harmony.json
trans.gl = public/language/gl/themes/harmony.json
trans.ko = public/language/ko/themes/harmony.json
trans.lt = public/language/lt/themes/harmony.json
trans.pt_BR = public/language/pt-BR/themes/harmony.json
trans.hu = public/language/hu/themes/harmony.json
trans.lv = public/language/lv/themes/harmony.json
trans.ro = public/language/ro/themes/harmony.json
trans.ru = public/language/ru/themes/harmony.json
trans.sr = public/language/sr/themes/harmony.json
trans.bn = public/language/bn/themes/harmony.json
trans.he = public/language/he/themes/harmony.json
trans.nl = public/language/nl/themes/harmony.json
trans.sc = public/language/sc/themes/harmony.json
trans.zh_CN = public/language/zh-CN/themes/harmony.json
trans.fi = public/language/fi/themes/harmony.json
trans.ja = public/language/ja/themes/harmony.json
trans.nb = public/language/nb/themes/harmony.json
trans.pl = public/language/pl/themes/harmony.json
trans.zh_TW = public/language/zh-TW/themes/harmony.json
trans.ar = public/language/ar/themes/harmony.json
trans.cs = public/language/cs/themes/harmony.json
trans.fa_IR = public/language/fa-IR/themes/harmony.json
trans.ms = public/language/ms/themes/harmony.json
trans.pt_PT = public/language/pt-PT/themes/harmony.json
trans.tr = public/language/tr/themes/harmony.json
trans.en@pirate = public/language/en-x-pirate/themes/harmony.json
trans.fr = public/language/fr/themes/harmony.json
trans.id = public/language/id/themes/harmony.json
trans.uk = public/language/uk/themes/harmony.json
trans.de = public/language/de/themes/harmony.json
trans.el = public/language/el/themes/harmony.json
trans.es = public/language/es/themes/harmony.json
trans.et = public/language/et/themes/harmony.json
trans.it = public/language/it/themes/harmony.json
trans.rw = public/language/rw/themes/harmony.json
[o:nodebb:p:nodebb:r:themes-persona]
file_filter = public/language/<lang>/themes/persona.json
source_file = public/language/en-GB/themes/persona.json
source_lang = en_GB
type = KEYVALUEJSON
trans.th = public/language/th/themes/persona.json
trans.bg = public/language/bg/themes/persona.json
trans.hr = public/language/hr/themes/persona.json
trans.hy = public/language/hy/themes/persona.json
trans.sk = public/language/sk/themes/persona.json
trans.sl = public/language/sl/themes/persona.json
trans.sq_AL = public/language/sq-AL/themes/persona.json
trans.sv = public/language/sv/themes/persona.json
trans.vi = public/language/vi/themes/persona.json
trans.da = public/language/da/themes/persona.json
trans.en_US = public/language/en-US/themes/persona.json
trans.gl = public/language/gl/themes/persona.json
trans.ko = public/language/ko/themes/persona.json
trans.lt = public/language/lt/themes/persona.json
trans.pt_BR = public/language/pt-BR/themes/persona.json
trans.hu = public/language/hu/themes/persona.json
trans.lv = public/language/lv/themes/persona.json
trans.ro = public/language/ro/themes/persona.json
trans.ru = public/language/ru/themes/persona.json
trans.sr = public/language/sr/themes/persona.json
trans.bn = public/language/bn/themes/persona.json
trans.he = public/language/he/themes/persona.json
trans.nl = public/language/nl/themes/persona.json
trans.sc = public/language/sc/themes/persona.json
trans.zh_CN = public/language/zh-CN/themes/persona.json
trans.fi = public/language/fi/themes/persona.json
trans.ja = public/language/ja/themes/persona.json
trans.nb = public/language/nb/themes/persona.json
trans.pl = public/language/pl/themes/persona.json
trans.zh_TW = public/language/zh-TW/themes/persona.json
trans.ar = public/language/ar/themes/persona.json
trans.cs = public/language/cs/themes/persona.json
trans.fa_IR = public/language/fa-IR/themes/persona.json
trans.ms = public/language/ms/themes/persona.json
trans.pt_PT = public/language/pt-PT/themes/persona.json
trans.tr = public/language/tr/themes/persona.json
trans.en@pirate = public/language/en-x-pirate/themes/persona.json
trans.fr = public/language/fr/themes/persona.json
trans.id = public/language/id/themes/persona.json
trans.uk = public/language/uk/themes/persona.json
trans.de = public/language/de/themes/persona.json
trans.el = public/language/el/themes/persona.json
trans.es = public/language/es/themes/persona.json
trans.et = public/language/et/themes/persona.json
trans.it = public/language/it/themes/persona.json
trans.rw = public/language/rw/themes/persona.json
[o:nodebb:p:nodebb:r:category]
file_filter = public/language/<lang>/category.json
source_file = public/language/en-GB/category.json
@@ -3432,58 +3328,6 @@ trans.et = public/language/et/search.json
trans.hy = public/language/hy/search.json
trans.lt = public/language/lt/search.json
[o:nodebb:p:nodebb:r:social]
file_filter = public/language/<lang>/social.json
source_file = public/language/en-GB/social.json
source_lang = en_GB
type = KEYVALUEJSON
trans.da = public/language/da/social.json
trans.en_US = public/language/en-US/social.json
trans.ms = public/language/ms/social.json
trans.hr = public/language/hr/social.json
trans.hu = public/language/hu/social.json
trans.id = public/language/id/social.json
trans.bg = public/language/bg/social.json
trans.de = public/language/de/social.json
trans.en@pirate = public/language/en-x-pirate/social.json
trans.fa_IR = public/language/fa-IR/social.json
trans.fi = public/language/fi/social.json
trans.sc = public/language/sc/social.json
trans.sk = public/language/sk/social.json
trans.sl = public/language/sl/social.json
trans.sq_AL = public/language/sq-AL/social.json
trans.sr = public/language/sr/social.json
trans.bn = public/language/bn/social.json
trans.ja = public/language/ja/social.json
trans.ko = public/language/ko/social.json
trans.pl = public/language/pl/social.json
trans.ro = public/language/ro/social.json
trans.zh_TW = public/language/zh-TW/social.json
trans.cs = public/language/cs/social.json
trans.he = public/language/he/social.json
trans.nb = public/language/nb/social.json
trans.zh_CN = public/language/zh-CN/social.json
trans.lv = public/language/lv/social.json
trans.rw = public/language/rw/social.json
trans.sv = public/language/sv/social.json
trans.ru = public/language/ru/social.json
trans.tr = public/language/tr/social.json
trans.uk = public/language/uk/social.json
trans.el = public/language/el/social.json
trans.fr = public/language/fr/social.json
trans.gl = public/language/gl/social.json
trans.it = public/language/it/social.json
trans.pt_BR = public/language/pt-BR/social.json
trans.nl = public/language/nl/social.json
trans.pt_PT = public/language/pt-PT/social.json
trans.th = public/language/th/social.json
trans.vi = public/language/vi/social.json
trans.ar = public/language/ar/social.json
trans.es = public/language/es/social.json
trans.et = public/language/et/social.json
trans.hy = public/language/hy/social.json
trans.lt = public/language/lt/social.json
[o:nodebb:p:nodebb:r:success]
file_filter = public/language/<lang>/success.json
source_file = public/language/en-GB/success.json

View File

@@ -1,911 +1,3 @@
#### v3.1.4 (2023-05-18)
##### Chores
* up markdown (51bf5e95)
* incrementing version number - v3.1.3 (3b4e9d3f)
* update changelog for v3.1.3 (9924fde6)
* incrementing version number - v3.1.2 (40fa3489)
* incrementing version number - v3.1.1 (40250733)
* incrementing version number - v3.1.0 (0cb386bd)
* incrementing version number - v3.0.1 (26f6ea49)
* incrementing version number - v3.0.0 (224e08cd)
##### Bug Fixes
* textarea on error (469aa551)
* closes #11613, closes #11614 (d8d486a6)
* closes #11612 (8f6a68ca)
* #11572 (2910cb2b)
##### Other Changes
* //github.com/NodeBB/NodeBB/issues/11612 (24bd9d4e)
##### Refactors
* remove unused require (05b58c70)
* remove log (ca2be0e8)
#### v3.1.3 (2023-05-15)
##### Chores
* incrementing version number - v3.1.2 (40fa3489)
* update changelog for v3.1.2 (5b398782)
* 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)
##### Continuous Integration
* use GitHub Actions expression instead of handlebars template (#11599) (412a1ecf)
* tag with branch name if not default branch (cd7fdfce)
##### Bug Fixes
* #11601, dont trigger edit if chat input has text (d55cd464)
* #11600, prevent helmet crash on startup (8eed5a84)
* #11594 (85d104c3)
##### Other Changes
* use csrf_token in ws handshake (#11573) (51096ad2)
#### v3.1.2 (2023-05-12)
##### Chores
* incrementing version number - v3.1.1 (40250733)
* update changelog for v3.1.1 (ccd6f48c)
* incrementing version number - v3.1.0 (0cb386bd)
* incrementing version number - v3.0.1 (26f6ea49)
* incrementing version number - v3.0.0 (224e08cd)
##### Bug Fixes
* #11595, use default value (28740de7)
#### v3.1.1 (2023-05-11)
##### Chores
* incrementing version number - v3.1.0 (0cb386bd)
* update changelog for v3.1.0 (2c515dc3)
* incrementing version number - v3.0.1 (26f6ea49)
* incrementing version number - v3.0.0 (224e08cd)
##### Documentation Changes
* updating changelog to move line re: breaking change down to new features (b259a000)
##### Bug Fixes
* failing test case (3251bca2)
* #11589, regression where a user could not confirm their email if requireEmailAddress was enabled (686ecea1)
#### v3.1.0 (2023-05-10)
##### Chores
* up themes (14a5c1aa)
* up harmony (f9997b27)
* up dbsearch (2b259b20)
* up harmony (9064920f)
* up harmony (622d75d7)
* up markdown (c92a14ab)
* up harmony (475ecf42)
* up emoji (ca7ff292)
* up deps (64add3e3)
* up harmony (048fbcaa)
* up deps (f337ca65)
* up widgets (68283bcd)
* up harmony (eab2679f)
* up harmony (7f19913b)
* up themes (832fe95a)
* incrementing version number - v3.0.1 (26f6ea49)
* update changelog for v3.0.1 (fd30af10)
* whopps (ec0da196)
* up harmony (2caf4afc)
* up harmony (9e4bd4e9)
* up composer (01960f27)
* up deps (b6915247)
* up themes (4b374f04)
* up harmony (ee085c1d)
* up widgets (2588853b)
* up harmony (01669fa5)
* up harmony (c58d07f4)
* incrementing version number - v3.0.0 (224e08cd)
* **i18n:**
* fallback strings for new resources: nodebb.themes-harmony, nodebb.themes-persona (48a4fd50)
* fallback strings for new resources: nodebb.admin-settings-email (489163aa)
* fallback strings for new resources: nodebb.user (6a2c6de0)
* fallback strings for new resources: nodebb.admin-extend-widgets (5f728445)
* fallback strings for new resources: nodebb.groups (db802db6)
* fallback strings for new resources: nodebb.global, nodebb.pages (819ded6f)
* fallback strings for new resources: nodebb.global (6fe660a3)
* fallback strings for new resources: nodebb.error, nodebb.tags, nodebb.topic (a908bed8)
* fallback strings for new resources: nodebb.global (6e7465de)
* fallback strings for new resources: nodebb.global (28a1df16)
* fallback strings for new resources: nodebb.modules (3b0b2b2f)
* fallback strings for new resources: nodebb.global (6f573c27)
* fallback strings for new resources: nodebb.global (da5bfacd)
* fallback strings for new resources: nodebb.admin-admin, nodebb.admin-appearance-customise, nodebb.admin-dashboard, nodebb.admin-extend-widgets, nodebb.admin-manage-groups, nodebb.admin-manage-privileges, nodebb.admin-settings-api, nodebb.admin-settings-navigation, nodebb.admin-settings-user, nodebb.error, nodebb.flags, nodebb.global, nodebb.groups, nodebb.modules, nodebb.pages, nodebb.post-queue, nodebb.recent, nodebb.register, nodebb.search, nodebb.tags, nodebb.topic, nodebb.user, nodebb.users (de282c0b)
* fallback strings for new resources: nodebb.topic (ab17e5c3)
* **deps:**
* update dependency eslint to v8.40.0 (#11574) (54f4aba0)
* update commitlint monorepo to v17.6.3 (#11568) (fe041498)
* update dependency jsdom to v22 (#11551) (76cc1cf3)
* update dependency jsdom to v21.1.2 (#11547) (f0d989e4)
* update commitlint monorepo to v17.6.1 (#11478) (c4c55684)
* update dependency lint-staged to v13.2.2 (#11521) (2e2bc54b)
##### Continuous Integration
* add 3.x docker tag (163c977d)
* only publish latest from master (c588d741)
* multi-platform docker image (#11479) (0417e5f1)
##### Documentation Changes
* openapi schema for newly added routes (02f567ff)
##### New Features
* update transifex config with new language strings (529f2d17)
* #11584 (f6b2d376)
* add helper to convert isostrings to localeString (e1bb277f)
* up emoji, remove title parse code (78f79347)
* add getSortedSetMembersWithScores (#11579) (f083cd55)
* add app.newReply (101fe81d)
* expiration date for widgets (fbf44a10)
* closes #11549, new error pages (83fca316)
* write API shorthand to query post routes by their topic index (requires tid in either query string or request body) (d814e281)
* allow tag editing from topic tools (e3551d80)
* #11537, copy ip on click (4aa87366)
* #7096, improve chat editing (eb0c77fd)
* Change Date translation string (e42967d7)
* #11431 (3099d57f)
* add missing i18n (e83a9a72)
* show even uninstalled active plugins if set via config (2bfdd761)
* add option to autoinstall plugins on setup (74cb2243)
* closes #11428, add a copy code button to code blocks (0a292fc1)
* closes #11432, use edited time if its greater (c3854b78)
* move topic thumb to template (84a78c2d)
* open topic thumbs on click in a bootbox dialog instead of opening in same page; complements nodebb/nodebb-theme-harmony#12 (04219c4c)
* closes #11424, add category selector to fork modal (#11491) (6b51dd5a)
* started work on porting socket methods to write API (f2082d7d)
##### Bug Fixes
* reset password (8a1ec4d6)
* strip html tags from browser title (e1473bcc)
* chat ip button not doing anything if clicked outside of icon (f974c230)
* add an additional check on page load to enforce `requireEmailAddress` setting (84313712)
* selector for nav scroll (34730caf)
* gdrp checkboxes (ca93084c)
* #11570 (18e76ba5)
* closes #11559, fix some rtl issues (093ec0e8)
* closes #11561, close dialogs on escape/backdrop click (0af2b800)
* show edit indicator after an edit without reloading the page (24e0e502)
* add back removed socket method, added deprecation warnings, as there are no breaking changes allowed in v3.1.0 (cdd77480)
* closes #11511 (ec8d8ec4)
* outgoing style (e070b851)
* #11541, fix leave chat error (8e0f9ce5)
* closes #11539 (d0a15e9e)
* add check for no tids (156b8e77)
* remove positions (9f485ce6)
* scroll on edit textarea (5ead9b73)
* #11531, fix teasers (c23689d3)
* #11530, fix topic rescheduling (2720a692)
* #10594, move counter code (#11529) (5607e5bc)
* only add copy button to multiline codeblocks (619e910f)
* go back to post queue after deleting an account in post queue (#11513) (c3ebda22)
* **deps:**
* update dependency helmet to v6.2.0 (#11576) (77b05b73)
* update dependency terser-webpack-plugin to v5.3.8 (#11575) (f6db5f60)
* update dependency nodebb-theme-persona to v13.0.63 (#11571) (84548edb)
* update dependency mongodb to v5.4.0 (#11569) (bac0b7b2)
* update dependency @isaacs/ttlcache to v1.4.0 (#11567) (ae7547e2)
* update dependency nodebb-theme-persona to v13.0.61 (#11566) (5f4197a9)
* update dependency nodebb-theme-harmony to v1.0.15 (#11565) (e630cf25)
* update dependency ace-builds to v1.19.0 (#11557) (0813ee78)
* update dependency webpack to v5.82.0 (#11564) (cdebc0d1)
* update dependency nodebb-plugin-spam-be-gone to v2.0.7 (#11563) (80bcd938)
* update dependency nodebb-theme-harmony to v1.0.11 (#11556) (904adf57)
* update dependency @socket.io/redis-adapter to v8.2.0 (#11555) (700d1da9)
* update dependency nodebb-plugin-composer-default to v10.1.4 (#11552) (efadd714)
* update dependency nodebb-plugin-emoji to v5.0.8 (#11550) (602f0520)
* update dependency nodebb-plugin-mentions to v4.1.1 (#11548) (72bc471e)
* update dependency nodebb-widget-essentials to v7.0.11 (#11536) (e0f0c08a)
* bump composer-default, closes #11534 (b0005f18)
* update dependency sharp to v0.32.1 (#11527) (ce05e743)
* update dependency yargs to v17.7.2 (#11528) (1d7e981f)
* update dependency webpack to v5.81.0 (#11523) (e9d30f76)
* update dependency nodebb-plugin-emoji to v5.0.7 (#11522) (81799777)
* update dependency nodebb-plugin-mentions to v4.1.0 (#11518) (42bd1a63)
* update dependency lru-cache to v9.1.1 (#11493) (d4bf0ae7)
* update dependency webpack to v5.80.0 (#11503) (6413efbb)
* update dependency mongodb to v5.3.0 (#11496) (e55f1b55)
* update dependency sass to v1.62.1 (#11517) (d8829872)
##### Other Changes
* fix comma (073f4d37)
##### Refactors
* removed parsing for taskbar (e832d365)
* move to modals (8e63e43a)
* topic mark read/unread routes (36895421)
* migrate `posts.getReplies` to write API (69b40938)
* deprecate socket method posts.getPidIndex (ee9f53f1)
* if position (87047210)
* remove position classes (503fab51)
##### Tests
* added test cases for #11562 (393a8913)
* fix assert.reject calls (e0db9a89)
* fix brackets (0c20d7cd)
* remove log (9800d65a)
* increase delay after export (8a359d63)
* replace calls to getReplies socket call to api method (82b4984b)
* fix group tests (b891c5ac)
#### v3.0.1 (2023-05-02)
##### Chores
* incrementing version number - v3.0.0 (224e08cd)
* update changelog for v3.0.0 (56ad381f)
##### Bug Fixes
* #11554, email requirement bypass by sending in whitespace (2b8dd3d2)
* update openapi spec to specify optional `expiry` argument available to be passed in via request body. (b3787bd5)
* #11545, wrong message shown to new users re: email confirmation (2b70063e)
* black on red coloration on error when a bad reset code is received (604a8f7e)
* use query param sort over user setting if it's set (9484ddc3)
#### v3.0.0 (2023-04-26)
##### Breaking Changes
* #11426, proper v3 style error on maintenance mode [breaking] (2615c1e5)
* #11362, regular mods are also subject to post queue [breaking] (c843984d)
##### Chores
* **deps:**
* update dependency eslint to v8.39.0 (#11507) (e74e76b1)
* update coverallsapp/github-action action to v2.1.2 (#11497) (fec552d2)
* update coverallsapp/github-action action to v2.1.1 (#11494) (f8ae6ef7)
* update dependency sass-embedded to v1.62.0 (#11467) (1dc6eb51)
* update coverallsapp/github-action action to v2.1.0 (#11458) (88b02d90)
* update dependency eslint to v8.38.0 (#11448) (afa37d6d)
* update dependency sass-embedded to v1.61.0 (#11442) (c7ccf9b8)
* update dependency lint-staged to v13.2.1 (#11444) (1a888f50)
* update dependency eslint to v8.37.0 (#11410) (defc01d9)
* update dependency @commitlint/cli to v17.5.1 (#11408) (0e57afa9)
* update dependency sass-embedded to v1.60.0 (#11392) (034666b4)
* update dependency @commitlint/cli to v17.5.0 (#11384) (69a7bfbe)
* update postgres docker tag to v15 (#10976) (f286b66f)
* update dependency @apidevtools/swagger-parser to v10 (#11207) (f21c8ca4)
* update docker/build-push-action action to v4 (#11245) (8ddb302f)
* update dependency sass-embedded to v1.59.3 (#11371) (2cde7231)
* update coverallsapp/github-action action to v2 (#11369) (a5a4b307)
* update dependency jsdom to v21.1.1 (#11355) (ae53a6e0)
* update dependency eslint to v8.36.0 (#11349) (50f14768)
* update dependency lint-staged to v13.2.0 (#11346) (d8f787eb)
* update dependency jquery to v3.6.4 (#11339) (87be2694)
* update coverallsapp/github-action action to v1.2.4 (#11323) (e8e35de3)
* update dependency eslint to v8.35.0 (#11324) (f155eedb)
* update commitlint monorepo to v17.4.4 (#11317) (a4aeee96)
* update dependency lint-staged to v13.1.2 (#11298) (45c3b9df)
* update dependency lint-staged to v13.1.1 (#11268) (4d68b0d4)
* update dependency eslint to v8.34.0 (#11291) (330f7ec8)
* update commitlint monorepo to v17.4.3 (#11293) (558c1c98)
* update dependency grunt to v1.6.1 (#11244) (9f0c352e)
* update dependency eslint to v8.33.0 (#11243) (eeca887b)
* update dependency jsdom to v21.1.0 (#11202) (09712b57)
* update commitlint monorepo to v17.4.2 (#11186) (5648c8ea)
* update dependency eslint to v8.32.0 (#11189) (56731d89)
* update dependency @apidevtools/swagger-parser to v9.0.1 (c1785080)
* update dependency eslint-plugin-import to v2.27.5 (f8461538)
* update dependency @commitlint/cli to v17.4.1 (#11137) (66b41d67)
* update dependency jsdom to v21 (#11134) (7905d573)
* update commitlint monorepo to v17.4.0 (#11123) (2ea1510f)
* update dependency husky to v8.0.3 (19c2b350)
* update dependency eslint to v8.31.0 (#11118) (8f83f790)
* update dependency jquery to v3.6.3 (#11107) (0665834d)
* update dependency eslint to v8.30.0 (#11102) (18bcc3cf)
* update dependency mocha to v10.2.0 (#11094) (ad96a4d8)
* update dependency lint-staged to v13.1.0 (#11082) (7a1c258d)
* update dependency eslint to v8.29.0 (#11074) (49143328)
* update dependency lint-staged to v13.0.4 (#11064) (ac14099b)
* up harmony (a405343d)
* up deps (1767fe3d)
* up composer (0962c063)
* up harmony (2c91c4e1)
* up harmony (cef9e791)
* up harmony (bea1826f)
* up harmony (52f32b0b)
* up widgets (22cb918c)
* up deps (445a4752)
* up composer (d1b9f83d)
* up harmony (d5636df2)
* up harmony (1fcbee0f)
* up harmony (4363c0bb)
* up harmony (24c24e6c)
* up harmony (eff9f98d)
* up harmony (9020cd40)
* up harmony (5dc1d6d5)
* up harmony (b912a132)
* up harmony (6962d206)
* rc.2 (654abb48)
* harmony beta.102 (3a50ad3a)
* up harmony (90e2e0bf)
* up harmony (0e3d34cc)
* up harmony (5cc1dd51)
* up harmony (e18d0df8)
* up harmony (4fb021a7)
* up harmony (ec106d91)
* up harmony (f1f32a47)
* up deps (08d159f5)
* up harmony (fe73c007)
* up harmony (764aca62)
* up harmony (2d75625b)
* up harmony (cc138c93)
* up harmony (a44f170a)
* up harmony (80f7dce8)
* remove logs (68db271d)
* up harmony (3f834480)
* up themes (7b7f473e)
* up harmony (361441bd)
* bump version tag for RC (e6e08d56)
* up harmony (4305c0a1)
* up rimraf to 4.x (#11377) (1502068e)
* up connect-redis to 7.x, drop node 14 (#11376) (fafa1304)
* up harmony (7d831f0b)
* up mongo deps (#11375) (5db037f1)
* add back missing dep upgrades (95ab5c41)
* fallbacks for new language string (830a20f1)
* up jquery (babe7fac)
* **i18n:**
* fallback strings for new resources: nodebb.topic (30234cf7)
* fallback strings for new resources: nodebb.error (026f2d94)
* fallback strings for new resources: nodebb.global (7ff9e494)
* fallback strings for new resources: nodebb.error (3bcfef5e)
* fallback strings for new resources: nodebb.recent (d1789206)
* fallback strings for new resources: nodebb.topic (04652ceb)
* fallback strings for new resources: nodebb.post-queue (eaa5454f)
* fallback strings for new resources: nodebb.user (92ec5bd9)
* fallback strings for new resources: nodebb.admin-settings-api (44c2d402)
* fallback strings for new resources: nodebb.admin-dashboard (58552300)
* fallback strings for new resources: nodebb.post-queue (7439d0a6)
* fallback strings for new resources: nodebb.error (7bc22a59)
* fallback strings for new resources: nodebb.admin-settings-user (0767ed57)
* fallback strings for new resources: nodebb.admin-settings-email (d8b45c61)
* fallback strings for new resources: nodebb.admin-settings-email (80cf05d8)
##### Documentation Changes
* update api introductions (5ab4d2fc)
* openapi schema for newly added routes (be323255)
* update readme with new screenshot and updated copy for Harmony (7599870f)
* fix openapi spec for new property in post queue route (ddd03248)
##### New Features
* add hits/sec for cache (94f2e508)
* i18n post-later (655a11d0)
* update mkdirp to 3.x, closes #11455 (132476d5)
* update rimraf to 5.x, closes #11456 (43c6087b)
* update lru-cache to 9.x, closes #11454 (c3cedefe)
* #11420, add new GET routes to retrieve pending and invited members of a group, plus accept/reject pending (0788fb51)
* fallbacks for social.json (ac2aefd8)
* add social.json #11419 (c22c6e12)
* allow multiple topic selects in topic-list (645ebec8)
* update thumbs modal styling (c0b62346)
* add support for selected topic count (69f24ed9)
* change chat notification delivery (2c5a5bf3)
* add placeholder for category search (9c0996e4)
* closes #11139, move sort settings to user settings page (77ddfc64)
* display when an api key was last used, in ACP, #10873 (40222984)
* log the last time a valid api token was seen, have v3 ping route go through setupApiRoute helper (efa64032)
* add rel="author" to topic route (4cf04f06)
* search dashboard time range (ebb5d2d2)
* allow file uploads on mobile chat (79731735)
* api v3 route to add email to user, optionally bypassing validation email, closes #11009 (fdc41646)
* fire filter:topics.getUnreadTids even if there are no urnead topics (b81fd81a)
* add force flag to plugin install in cli (#11089) (d447236b)
* update transifex config (for use with new cli) (21a366ec)
* integrating basic client-side form validity checking in settings v1 and v2 (07a3cee6)
* add ./nodebb install <plugin_name> (6fe87975)
##### Bug Fixes
* bump mentions and harmony (d2066f59)
* #11512, filter by cid (e8fb6711)
* closes #11511, reset skin if it was removed from bootswatch (7d7904b0)
* closes #11508, update selector (9894d05f)
* add composer:showHelpTab to api (5c26cb58)
* numeric strings in mongo (#11498) (6bed65dd)
* regression in toolmodal category selector (91851364)
* don't crash if taskbar.tasklist is not defined yet (5feb509b)
* closes #11473, kudos to @pitaj (57d64b35)
* closes #11466 (59b14978)
* #11438, show flag history to mods (6eb1dd86)
* topic thumbnail removal error Relaxed DOM selector to accommodate changed tpl (70f4d7f0)
* upload modal error handler (dd8719a1)
* #11451 , use bookmark from localstorage for guests (2235f6c2)
* closes #11446, add alert-link to 403,404,400 messages (2830d681)
* closes #11447, fix timestamp of fork event (0cd657ff)
* #11440, update timestamp on lastpost button (0e5ae212)
* throw generic not-allowed error on groups.join if a non-owner tries to add another user to a group (0fc9fdd5)
* remove socketGroups.addMember; update admin checks to allow admin:groups privilege, hide add member controls if not admin (18447b06)
* remove socketGroups.kick (f043dcec)
* remove socketGroups.issueMassInvite (9d49ec60)
* handle client-side acceptAll and rejectAll (b53f92fa)
* use api routes for group accept/reject (34d99c15)
* updating user bookmark when entering topic at the end from teaser (cc1c493b)
* closes #11437, link to queued post from event (8680ea4d)
* direct replies on dynamic posts (5d9b23ca)
* topic labels on topics_list (2615192f)
* #11396, removal of base_templates_path variable (7cb2e02c)
* dont show search input if user doesn't have tag search priv (a83734fb)
* add missing delete (2a9b3ee4)
* buttons for post queue content editing (33ad5a72)
* #9397, trash the active session on account lockout, if there is one (03e05b51)
* #11381, bug where the call to `action:settings.sorted-list.itemLoaded` did not properly pass in the correct element (2614b95c)
* #11357 clear cache on thumb remove (1e7f32b1)
* missing postAtIndex handling (e6d7e55f)
* update main post timestamp when rescheduling (5a2c6c1c)
* add back req.query fallback for backwards compatibility (83d36336)
* update csrf parser to accept csrf_token form value if present (ea95668a)
* schema changes for #11206 (9007ace1)
* new language keys for #11206 (966724ad)
* remove unneeded assignment, as req and locals will not likely ever be completely reassigned (a69bc2cf)
* move call to `filter:middleware.buildHeader` out of parallel so that req can be overridden by plugins prior to loading config (0a691e67)
* relax selectors for client-side form validation so that all form elements are checked (52e7ad4d)
* change hsts-maxage back to numeric input type, change API token uid input to numeric text type (13738888)
* replace input type number with text/pattern (cde4c6ac)
* **deps:**
* update dependency mkdirp to v3.0.1 (#11516) (f66eba29)
* update dependency semver to v7.5.0 (#11492) (a8a2ebbe)
* update dependency esbuild to v0.17.18 (#11509) (f0408ea9)
* update dependency nodebb-plugin-emoji to v5.0.6 (#11510) (04f77ada)
* update dependency postcss to v8.4.23 (#11504) (967b9840)
* update dependency ace-builds to v1.18.0 (#11505) (22f6b8f6)
* update dependency nodebb-plugin-2factor to v7.0.5 (#11495) (666fe04e)
* update dependency lru-cache to v9.0.3 (#11481) (d2b8512c)
* update dependency commander to v10.0.1 (#11486) (ba2b7f5b)
* update dependency ioredis to v5.3.2 (#11487) (90fca08e)
* update dependency postcss to v8.4.22 (#11488) (fe4e9383)
* update dependency esbuild to v0.17.17 (#11489) (4cd8c2ff)
* update dependency webpack to v5.79.0 (#11476) (455de50d)
* update dependency ace-builds to v1.17.0 (#11472) (550d125d)
* update dependency helmet to v6.1.5 (#11464) (4e5fbc54)
* update dependency sass to v1.62.0 (#11468) (c1164544)
* update dependency semver to v7.4.0 (#11461) (1ab7fdc8)
* update dependency rtlcss to v4.1.0 (#11460) (c0d92961)
* update dependency helmet to v6.1.4 (#11459) (415f8781)
* update dependency helmet to v6.1.3 (#11452) (d165164a)
* update dependency esbuild to v0.17.16 (#11457) (bdacd1c6)
* update dependency helmet to v6.1.1 (#11449) (5d880e9d)
* update dependency lru-cache to v8.0.5 (#11434) (d7125a0c)
* update dependency webpack to v5.78.0 (#11436) (62a84f63)
* update dependency sass to v1.61.0 (#11443) (248c5f62)
* bump mentions (f49fc5ca)
* update dependency mongodb to v5.2.0 (#11433) (4bede9fb)
* update dependency nodebb-plugin-composer-default to v10.0.44 (#11430) (569944f1)
* update dependency esbuild to v0.17.15 (#11429) (0187e177)
* update dependency nodebb-plugin-mentions to v4.0.5 (#11417) (1ac37b43)
* update dependency webpack to v5.77.0 (#11415) (e9039018)
* update dependency nodebb-rewards-essentials to v0.2.3 (#11406) (9f5dc9ad)
* update dependency nodebb-theme-persona to v13.0.55 (#11407) (609c0558)
* update dependency esbuild to v0.17.14 (#11399) (89060027)
* update dependency nodebb-theme-persona to v13.0.53 (#11401) (415da6c2)
* update dependency sharp to v0.32.0 (#11395) (b17ab944)
* update dependency esbuild to v0.17.13 (#11397) (4ab60c88)
* update dependency csrf-sync to v4.0.1 (#11398) (e753603e)
* update dependency @popperjs/core to v2.11.7 (#11394) (6947e60b)
* update dependency sass to v1.60.0 (#11391) (400a7abf)
* update dependency rimraf to v4.4.1 (#11388) (5d2900e9)
* update dependency @isaacs/ttlcache to v1.2.2 (#11389) (96305e12)
* update dependency html-to-text to v9.0.5 (#11390) (5a7104f1)
* update dependency helmet to v6 (#10891) (97f08135)
* update dependency nodebb-widget-essentials to v7.0.7 (#11387) (98b58bcc)
* update dependency mkdirp to v2.1.6 (#11386) (8c07a8d7)
* update dependency webpack to v5.76.3 (#11385) (7f54709d)
* update dependency fs-extra to v11.1.1 (#11380) (7c780210)
* update dependency commander to v10 (#11208) (a2d3f674)
* update dependency lru-cache to v8.0.4 (#11378) (238a7809)
* update dependency lru-cache to v8 (#11356) (0d236adf)
* update dependency ace-builds to v1.16.0 (#11372) (75436dc0)
* update dependency sass to v1.59.3 (#11373) (b0b060da)
* update dependency nodebb-plugin-spam-be-gone to v2.0.6 (#11370) (6edb908b)
* update dependency cron to v2.3.0 (#11368) (ae9d6d77)
* update dependency graceful-fs to v4.2.11 (#11367) (f90696de)
* update dependency esbuild to v0.17.12 (#11366) (2273a822)
* update dependency webpack to v5.76.2 (#11361) (a5f19ee6)
* update dependency webpack to v5.76.1 (#11348) (967c0ccf)
* update dependency autoprefixer to v10.4.14 (#11344) (5afea4b7)
* update dependency terser-webpack-plugin to v5.3.7 (#11345) (29fbecfc)
* update dependency webpack to v5.76.0 (#11341) (b543a0d0)
* update dependency nodebb-plugin-spam-be-gone to v1.0.3 (#11340) (5fa38fbe)
* update dependency pg-cursor to v2.9.0 (#11338) (34cf64f5)
* update dependency pg to v8.10.0 (#11337) (9a7f73ca)
* update dependency mkdirp to v2.1.5 (#11336) (a85276a6)
* update dependency lru-cache to v7.18.3 (#11335) (b70716f1)
* update dependency esbuild to v0.17.11 (#11333) (18b3ac6e)
* update dependency ace-builds to v1.15.3 (#11332) (b8efa466)
* update dependency mkdirp to v2.1.4 (#11330) (a6f22afa)
* update dependency lru-cache to v7.18.1 (#11327) (b526d42e)
* update dependency nodebb-plugin-mentions to v3.0.13 (#11320) (22a3ba65)
* update dependency yargs to v17.7.1 (#11316) (b75212f7)
* update dependency sanitize-html to v2.10.0 (#11319) (3d855842)
* update socket.io packages to v4.6.1 (#11318) (17c2467d)
* update dependency lru-cache to v7.17.0 (#11315) (4211e4dd)
* update dependency body-parser to v1.20.2 (#11313) (02d69920)
* update dependency esbuild to v0.17.10 (#11314) (865e1506)
* bump theme versions (c76e344f)
* update dependency lru-cache to v7.15.0 (#11305) (affac569)
* update dependency ace-builds to v1.15.2 (#11304) (01b2915e)
* update dependency nodebb-plugin-composer-default to v9.2.5 (#11301) (0ad5f476)
* update dependency logrotate-stream to v0.2.9 (#11300) (e29b9b1d)
* update dependency ace-builds to v1.15.1 (#11299) (1a0910bb)
* update dependency ioredis to v5.3.1 (#11294) (75bd6caa)
* update socket.io packages to v4.6.0 (#11272) (b9bb0532)
* update dependency html-to-text to v9.0.4 (#11290) (3ef49223)
* update dependency benchpressjs to v2.5.1 (#11270) (e4e01f47)
* update dependency esbuild to v0.17.8 (#11289) (2f5f47ea)
* update dependency @socket.io/redis-adapter to v8.1.0 (#11269) (7abcf80a)
* update dependency mongodb to v4.14.0 (#11271) (98395d18)
* update dependency esbuild to v0.17.6 (#11266) (145dcb2f)
* update dependency sanitize-html to v2.9.0 (#11261) (0e9cfcad)
* update dependency validator to v13.9.0 (#11262) (7cdbf77d)
* bump persona theme (5dc4d285)
* update dependency pg-cursor to v2.8.0 (#11236) (6c872a05)
* update dependency nodebb-rewards-essentials to v0.2.2 (#11234) (c271762c)
* update dependency pg to v8.9.0 (#11235) (972d1770)
* update dependency esbuild to v0.17.5 (#11233) (1a28598b)
* update dependency ace-builds to v1.15.0 (#11223) (9b34ab66)
* update dependency ioredis to v5.3.0 (#11224) (37493514)
* update dependency nodebb-theme-persona to v12.1.14 (#11221) (94074e90)
* update dependency nodemailer to v6.9.1 (#11222) (0e0176a1)
* update dependency mkdirp to v2 (#11211) (466c7a3a)
* update dependency ioredis to v5.2.6 (#11210) (557198a3)
* update dependency nodemailer to v6.9.0 (#11205) (69f4ff75)
* update dependency ioredis to v5.2.5 (#11187) (a2b00534)
* update dependency esbuild to v0.17.4 (#11204) (d0e3eadb)
* update dependency nodebb-theme-persona to v12.1.13 (2994c42b)
* update dependency @socket.io/redis-adapter to v8.0.1 (aa873e80)
* update dependency jsonwebtoken to v9 (79cd4a36)
* update dependency nodebb-plugin-2factor to v5.1.3 (8dc96894)
* update dependency cron to v2.2.0 (#11140) (aaf9abed)
* update dependency esbuild to v0.16.16 (#11135) (4b147ee2)
* update dependency commander to v9.5.0 (#11133) (aced93de)
* update dependency postcss to v8.4.21 (#11130) (aa6788b7)
* update dependency esbuild to v0.16.15 (#11132) (581960de)
* update dependency esbuild to v0.16.14 (#11127) (95897197)
* update dependency esbuild to v0.16.13 (#11121) (ca434647)
* update dependency esbuild to v0.16.12 (#11116) (e3fa0152)
* update dependency esbuild to v0.16.11 (0ec6d6c2)
* update dependency nodebb-theme-slick to v2.0.4 (#11113) (a634481b)
* update dependency esbuild to v0.16.10 (#11104) (048f5674)
* update dependency mongodb to v4.13.0 (#11105) (3f5bda7e)
* update dependency esbuild to v0.16.8 (#11101) (db7ea20c)
* update dependency sanitize-html to v2.8.0 (#11098) (65241b1a)
* update dependency ace-builds to v1.14.0 (#11095) (10056e5b)
* update dependency nodebb-plugin-2factor to v5.1.2 (#11096) (cc376656)
* update dependency postcss to v8.4.20 (#11097) (d4f04511)
* update dependency compare-versions to v5.0.3 (#11092) (32fecad7)
* update dependency html-to-text to v9.0.3 (#11093) (6aab1c58)
* update dependency @socket.io/redis-adapter to v8 (#11084) (a82c6743)
* update dependency nodebb-widget-essentials to v6.0.1 (#11085) (6774b35f)
* update dependency esbuild to v0.16.7 (#11086) (27a049fb)
* update dependency nodebb-theme-lavender to v6.0.1 (#11081) (c749f38c)
* update dependency esbuild to v0.16.3 (#11083) (8eb880f6)
* update dependency html-to-text to v9 (#11075) (aa3a51b1)
* update dependency ace-builds to v1.13.2 (#11080) (67ede5c6)
* update dependency fs-extra to v11 (#11072) (fa3e6540)
* update dependency esbuild to v0.15.16 (#11069) (ced87417)
* update dependency mongodb to v4.12.1 (#11062) (3c5b0210)
* update dependency mongodb to v4.12.1 (#11062) (643dce38)
##### Other Changes
* //github.com/NodeBB/NodeBB/issues/11501 (2055aae1)
* //github.com/NodeBB/NodeBB/issues/11500 (9ec5f1f5)
* remove chalk (a0bac74e)
* //github.com/NodeBB/NodeBB/issues/11329 (661a6e04)
* satisfy lint errors (bb0397cb)
##### Refactors
* get rid of floats in deleted-message.tpl (f055b7fb)
* remove log, to much noise (9806d89f)
* group invitations; issuing, accepting, rejecting; now via API (18c45b44)
* replace rimraf glob doesn't work on windows (d36aad07)
* simple load new posts (45addcf5)
* post-queue frontend logic (ddcdaacc)
* `helpers.loginUser` to be fully async (fecdab8b)
* flag states so that they are not hardcoded, allow plugins to add additional states, deprecated filter:flags.getFilters hook, closes #11065 (14091de8)
##### Tests
* Blob doesnt exist in node 16 (3c6f225a)
* no need for this check (bb4be716)
* fix utils (eacbad7f)
* missing utils tests (699c3bdf)
* remove history test (9c162186)
* fix escaping (c5e83eb9)
* fix lang test (a8efe3df)
* fix openapi schema to reflect new route (92073cf2)
* fix broken test (38175b5e)
#### v2.8.12 (2023-04-26)
##### Chores
* removing superfluous changelog items (5343d2a0)
* incrementing version number - v2.8.11 (2ec81eff)
* update changelog for v2.8.11 (f2ca93f6)
* incrementing version number - v2.8.10 (5b7c3671)
* incrementing version number - v2.8.9 (57f14e41)
* incrementing version number - v2.8.8 (b331b942)
* incrementing version number - v2.8.7 (3f8248d6)
* incrementing version number - v2.8.6 (af6ce447)
* incrementing version number - v2.8.5 (bff5ce2d)
* incrementing version number - v2.8.4 (a46b2bbc)
* incrementing version number - v2.8.3 (c20b20a7)
* incrementing version number - v2.8.2 (050e43f8)
* incrementing version number - v2.8.1 (727f879e)
* incrementing version number - v2.8.0 (8e77673d)
* incrementing version number - v2.7.0 (96cc0617)
* incrementing version number - v2.6.1 (7e52a7a5)
* incrementing version number - v2.6.0 (e7fcf482)
* incrementing version number - v2.5.8 (dec0e7de)
* incrementing version number - v2.5.7 (5836bf4a)
* incrementing version number - v2.5.6 (c7bd7dbf)
* incrementing version number - v2.5.5 (3509ed94)
* incrementing version number - v2.5.4 (e83260ca)
* incrementing version number - v2.5.3 (7e922936)
* incrementing version number - v2.5.2 (babcd17e)
* incrementing version number - v2.5.1 (ce3aa950)
* incrementing version number - v2.5.0 (01d276cb)
* incrementing version number - v2.4.5 (dd3e1a28)
* incrementing version number - v2.4.4 (d5525c87)
* incrementing version number - v2.4.3 (9c647c6c)
* incrementing version number - v2.4.2 (3aa7b855)
* incrementing version number - v2.4.1 (60cbd148)
* incrementing version number - v2.4.0 (4834cde3)
* incrementing version number - v2.3.1 (d2425942)
* incrementing version number - v2.3.0 (046ea120)
##### New Features
* name theme on error:theme-not-set-in-configuration (ae5afdbc)
##### Bug Fixes
* #11519, clear parent cache all the way to root (30b6bcfc)
* only remove deleted tag, closes #11515 (de2669a2)
* NodeBB#11482 thumbs Post Can not upload a thumbnail, only multip… (#11483) (c9311832)
##### Tests
* remove old comment (21fb8590)
#### v2.8.11 (2023-04-11)
##### Chores
* incrementing version number - v2.8.10 (5b7c3671)
* update changelog for v2.8.10 (188ec62f)
##### Continuous Integration
* publish to ghcr instead of docker hub (c2756728)
##### Documentation Changes
* update readme with new screenshot and updated copy for Harmony (67055006)
##### Bug Fixes
* don't crash on objects with toString property (4d2d7689)
* fire action:user.online on user login (7397873d)
##### Tests
* update socket.io test (e0b20658)
#### v2.8.10 (2023-03-27)
##### Chores
* up composer-default (e9a8e195)
* incrementing version number - v2.8.9 (57f14e41)
* update changelog for v2.8.9 (18b2150e)
##### Bug Fixes
* #11403, remove loader.js crash counter logic (830f142b)
* don't crash if event name is not a string (37b48b82)
* closes #11173, move cache clear code (c2961ad4)
##### Other Changes
* fix arrow (1aff9cad)
* whitespace (894f392b)
#### v2.8.9 (2023-03-19)
##### Chores
* up cron (73a50d17)
* incrementing version number - v2.8.8 (b331b942)
* update changelog for v2.8.8 (c03d5db7)
##### Bug Fixes
* thumb remove on windows, closes #11357 (767c1d1f)
* #11357 clear cache on thumb remove (a3a38e4b)
* closes #11352, try/catch rss feeds (cfd50272)
* closes #11343, don't crash if tags array is empty (56427e4f)
##### Code Style Changes
* more fixes (93aa43f7)
##### Tests
* openapi for thumbs (9e685e65)
#### v2.8.8 (2023-03-09)
##### Chores
* incrementing version number - v2.8.7 (3f8248d6)
* update changelog for v2.8.7 (2ca38e7b)
##### Bug Fixes
* stop topic navigation hotkeys from firing if in a mousetrap-enabled form element (22fc8fe3)
* stop topic navigation hotkeys from firing if in a mousetrap-enabled form element (17d0b40e)
* tag filtering when changing filter to watched topics (1545223e)
* get cid from pid instead of passing in (f054a4f4)
* closes #11331, allow 0 length content if set to 0 in acp (8c762d32)
#### v2.8.7 (2023-03-01)
##### Chores
* incrementing version number - v2.8.6 (af6ce447)
* update changelog for v2.8.6 (f3306d03)
##### Documentation Changes
* update openapi spec to include info about passing in timestamps for topic creation, removing timestamp as valid request param for topic replying (40e7b86d)
##### Bug Fixes
* display 25 topics on category feed (79155109)
* object destructuring overwriting type parameter (ec58700f)
* alert on page load (8cf4a6f6)
* show error alert if password change fails (3bd9a871)
* update main post timestamp when rescheduling (edd2fc38)
* show admins/globalmods if content is purged (326b9268)
* email expiry timestamps (e335d0f6)
* #11259, clean old emails when updating via admin (#11260) (845c8013)
* #11257, onSuccessfulLogin called with improper uid (7a5bcc21)
##### Tests
* add dummy emailer hook in authentication test (1b29dbb6)
#### v2.8.6 (2023-02-03)
##### Chores
* **i18n:** fallback strings for new resources: nodebb.error (8335f90a)
* incrementing version number - v2.8.5 (bff5ce2d)
* update changelog for v2.8.5 (24e58c28)
##### New Features
* add sitemap filter hooks for categories/topic pages (bf92ee0e)
* closes #11241, add missing error lang keys (c241baf6)
* #11240, only show relevant users in flags assignee list (0713482b)
##### Bug Fixes
* #11254, return check for reroll property (202378b9)
* closes #11249, notification uses displayname (705cd13a)
* wrong link to topics in acp dashboard (b5598a6e)
* https://github.com/NodeBB/NodeBB/issues/11239 (1d3c0e5a)
* notif filter selecte field (6d819b05)
##### Other Changes
* remove unused (d68352cc)
#### v2.8.5 (2023-01-27)
##### Chores
* incrementing version number - v2.8.4 (a46b2bbc)
* update changelog for v2.8.4 (c13f0e21)
##### Bug Fixes
* import resolution within plugin modules (#11219) (f6c96948)
#### v2.8.4 (2023-01-26)
##### Chores
* incrementing version number - v2.8.3 (c20b20a7)
* update changelog for v2.8.3 (eb2841ee)
#### v2.8.3 (2023-01-25)
##### Chores
* remove extraneous lines from changelog (48c9f447)
* incrementing version number - v2.8.2 (050e43f8)
* update changelog for v2.8.2 (66aa3169)
##### Bug Fixes
* import resolution within plugin modules (#11200) (89e059a0)
* #11195, allow users with admin:users privilege to delete users in acp (0bffd3d9)
* #11194, allow access to sub dashboard pages (7d04e952)
* #11136, tests, and returning the proper number of arrays (459bc523)
* #11136, only show mods of active categories when getModeratorUids is called (39e009c0)
* closes #11173, clear require cache if wrong dependency is installed (747cb1f0)
* **deps:**
* downgrade swagger-parser to v9 (00e48803)
* pinning sub dependency json-schema-ref-parser to 9.0.9 (9c250b78)
##### Reverts
* a788bd1344825ad4759e39d6e98d8bf3695bd639 (fecd84d1)
* 9c250b78b05ca2abf31a79971ed0c60ca07664ec, fix: comment out broken test for now (a788bd13)
##### Tests
* fix broken test (f295174e)
#### v2.8.2 (2023-01-13)
##### Chores
* incrementing version number - v2.8.1 (727f879e)
* update changelog for v2.8.1 (d17d4ec0)
##### Bug Fixes
* move call to `filter:middleware.buildHeader` out of parallel so that req can be overridden by plugins prior to loading config (25ae58e8)
#### v2.8.1 (2022-12-30)
##### Chores
* fallbacks for new language string (8a69e740)
* remove extraneous lines from changelog (bbaf26ce)
* incrementing version number - v2.8.0 (8e77673d)
* update changelog for v2.8.0 (a5c2edb9)
##### Bug Fixes
* vulnerability in socket.io nested namespaces (#11117) (586eed14)
* lock post/reply similar to user.create (1ea9481a)
#### v2.8.0 (2022-12-21)
##### Chores

View File

@@ -1,19 +1,3 @@
FROM --platform=$BUILDPLATFORM node:lts as npm
RUN mkdir -p /usr/src/build && \
chown -R node:node /usr/src/build
WORKDIR /usr/src/build
ARG NODE_ENV
ENV NODE_ENV $NODE_ENV
COPY --chown=node:node install/package.json /usr/src/build/package.json
USER node
RUN npm install --omit=dev
FROM node:lts
RUN mkdir -p /usr/src/app && \
@@ -23,11 +7,11 @@ WORKDIR /usr/src/app
ARG NODE_ENV
ENV NODE_ENV $NODE_ENV
COPY --chown=node:node --from=npm /usr/src/build /usr/src/app
COPY --chown=node:node install/package.json /usr/src/app/package.json
USER node
RUN npm rebuild && \
RUN npm install --only=prod && \
npm cache clean --force
COPY --chown=node:node . /usr/src/app

View File

@@ -65,7 +65,7 @@ module.exports = function (grunt) {
const templatesUpdated = pluginList.map(p => `node_modules/${p}/+(public|static|templates)/**/*.tpl`);
const langUpdated = pluginList.map(p => `node_modules/${p}/+(public|static|languages)/**/*.json`);
const interval = 100;
grunt.config(['watch'], {
styleUpdated: {
files: [
@@ -73,7 +73,7 @@ module.exports = function (grunt) {
...styleUpdated_Client,
],
options: {
interval: interval,
interval: 1000,
},
},
clientUpdated: {
@@ -84,7 +84,7 @@ module.exports = function (grunt) {
'node_modules/benchpressjs/build/benchpress.js',
],
options: {
interval: interval,
interval: 1000,
},
},
serverUpdated: {
@@ -99,7 +99,7 @@ module.exports = function (grunt) {
'!src/upgrades/**',
],
options: {
interval: interval,
interval: 1000,
},
},
templatesUpdated: {
@@ -108,7 +108,7 @@ module.exports = function (grunt) {
...templatesUpdated,
],
options: {
interval: interval,
interval: 1000,
},
},
langUpdated: {
@@ -118,7 +118,7 @@ module.exports = function (grunt) {
...langUpdated,
],
options: {
interval: interval,
interval: 1000,
},
},
});

View File

@@ -24,14 +24,17 @@ NodeBB's theming engine is highly flexible and does not restrict your design cho
[![](http://i.imgur.com/LmHtPhob.png)](http://i.imgur.com/LmHtPho.png)
[![](http://i.imgur.com/paiJPJkb.jpg)](http://i.imgur.com/paiJPJk.jpg)
Our minimalist "Harmony" theme gets you going right away, no coding experience required.
Our minimalist "Persona" theme gets you going right away, no coding experience required.
[![](http://i.imgur.com/HwNEXGu.png)](http://i.imgur.com/HwNEXGu.png)
[![](http://i.imgur.com/II1byYs.png)](http://i.imgur.com/II1byYs.png)
![Rendering of a NodeBB install on desktop and mobile devices](https://user-images.githubusercontent.com/923011/228570420-2a4db745-b20d-474a-a571-1b59259508ef.png)
## How can I follow along/contribute?
* If you are a developer, feel free to check out the source and submit pull requests. We also have a wide array of [plugins](http://community.nodebb.org/category/7/nodebb-plugins) which would be a great starting point for learning the codebase.
* If you are a designer, [NodeBB needs themes](http://community.nodebb.org/category/10/nodebb-themes)! NodeBB's theming system allows extension of the base templates as well as styling via SCSS or CSS. NodeBB's base theme utilizes [Bootstrap 5](http://getbootstrap.com/) as a frontend toolkit.
* If you are a designer, [NodeBB needs themes](http://community.nodebb.org/category/10/nodebb-themes)! NodeBB's theming system allows extension of the base templates as well as styling via LESS or CSS. NodeBB's base theme utilizes [Bootstrap 3](http://getbootstrap.com/) but themes can choose to use a different framework altogether.
* If you know languages other than English you can help us translate NodeBB. We use [Transifex](https://explore.transifex.com/nodebb/nodebb/) for internationalization.
* Please don't forget to **like**, **follow**, and **star our repo**! Join our growing [community](http://community.nodebb.org) to keep up to date with the latest NodeBB development.
@@ -39,7 +42,7 @@ Our minimalist "Harmony" theme gets you going right away, no coding experience r
NodeBB requires the following software to be installed:
* A version of Node.js at least 16 or greater ([installation/upgrade instructions](https://github.com/nodesource/distributions))
* A version of Node.js at least 12 or greater ([installation/upgrade instructions](https://github.com/nodesource/distributions))
* MongoDB, version 3.6 or greater **or** Redis, version 2.8.9 or greater
* If you are using [clustering](https://docs.nodebb.org/configuring/scaling/) you need Redis installed and configured.
* nginx, version 1.3.13 or greater (**only if** intending to use nginx to proxy requests to a NodeBB)
@@ -73,10 +76,10 @@ Interested in a sublicense agreement for use of NodeBB in a non-free/restrictive
* [Demo](https://try.nodebb.org)
* [Developer Community](http://community.nodebb.org)
* [Documentation & Installation Instructions](https://docs.nodebb.org)
* [Documentation & Installation Instructions](http://docs.nodebb.org)
* [Help translate NodeBB](https://explore.transifex.com/nodebb/nodebb/)
* [NodeBB Blog](https://nodebb.org/blog)
* [Premium Hosting for NodeBB](https://www.nodebb.org/ "NodeBB")
* [NodeBB Blog](http://blog.nodebb.org)
* [Premium Hosting for NodeBB](http://www.nodebb.org/ "NodeBB")
* Unofficial IRC community &ndash; channel `#nodebb` on Libera.chat
* [Follow us on Twitter](http://www.twitter.com/NodeBB/ "NodeBB Twitter")
* [Like us on Facebook](http://www.facebook.com/NodeBB/ "NodeBB Facebook")

View File

@@ -19,35 +19,40 @@
'use strict';
require('./require-main');
import './require-main';
const nconf = require('nconf');
import nconf from 'nconf';
nconf.argv().env({
separator: '__',
});
const winston = require('winston');
const path = require('path');
import winston from 'winston';
import path from 'path';
import file from './src/file';
import web from './install/web';
import * as Upgrade from './src/cli/upgrade';
import manage from './src/cli/manage';
import * as Reset from './src/cli/reset';
import * as Running from './src/cli/running';
import Setup from './src/cli/setup';
const file = require('./src/file');
process.env.NODE_ENV = process.env.NODE_ENV || 'production';
global.env = process.env.NODE_ENV || 'production';
(process as any).env.NODE_ENV = (process as any).env.NODE_ENV || 'production';
(global as any).env = (process as any).env.NODE_ENV || 'production';
// Alternate configuration file support
const configFile = path.resolve(__dirname, nconf.any(['config', 'CONFIG']) || 'config.json');
const configExists = file.existsSync(configFile) || (nconf.get('url') && nconf.get('secret') && nconf.get('database'));
const prestart = require('./src/prestart');
import * as prestart from './src/prestart';
prestart.loadConfig(configFile);
prestart.setupWinston();
prestart.versionCheck();
winston.verbose('* using configuration stored in: %s', configFile);
if (!process.send) {
if (!(process as any).send) {
// If run using `node app`, log GNU copyright info along with server info
winston.info(`NodeBB v${nconf.get('version')} Copyright (C) 2013-${(new Date()).getFullYear()} NodeBB Inc.`);
winston.info('This program comes with ABSOLUTELY NO WARRANTY.');
@@ -56,13 +61,13 @@ if (!process.send) {
}
if (nconf.get('setup') || nconf.get('install')) {
require('./src/cli/setup').setup();
Setup.setup();
} else if (!configExists) {
require('./install/web').install(nconf.get('port'));
web.install(nconf.get('port'));
} else if (nconf.get('upgrade')) {
require('./src/cli/upgrade').upgrade(true);
Upgrade.upgrade(true);
} else if (nconf.get('reset')) {
require('./src/cli/reset').reset({
Reset.reset({
theme: nconf.get('t'),
plugin: nconf.get('p'),
widgets: nconf.get('w'),
@@ -70,13 +75,14 @@ if (nconf.get('setup') || nconf.get('install')) {
all: nconf.get('a'),
});
} else if (nconf.get('activate')) {
require('./src/cli/manage').activate(nconf.get('activate'));
manage.activate(nconf.get('activate'));
} else if (nconf.get('plugins') && typeof nconf.get('plugins') !== 'object') {
require('./src/cli/manage').listPlugins();
manage.listPlugins();
} else if (nconf.get('build')) {
require('./src/cli/manage').build(nconf.get('build'));
manage.buildWrapper(nconf.get('build'));
} else if (nconf.get('events')) {
require('./src/cli/manage').listEvents();
manage.listEvents();
} else {
require('./src/start').start();
require('./src/cli/manage')
Running.start();
}

4
build/.gitignore vendored
View File

@@ -1,4 +0,0 @@
*
*/
!export
!.gitignore

View File

@@ -1,3 +0,0 @@
.
!.gitignore
!README

View File

@@ -1,5 +0,0 @@
This directory contains archives of user uploads that are prepared on-demand
when a user wants to retrieve a copy of their uploaded content.
You can delete the files in here at will. They will just be regenerated if
requested again.

7
copy-non-ts-files.js Normal file
View File

@@ -0,0 +1,7 @@
'use strict';
const fs = require('fs-extra');
fs.copy('config.json', 'build');
fs.copy('src/views', 'build/src/views');
fs.copy('install', 'build/install');

View File

@@ -4,7 +4,6 @@
"defaultLang": "en-GB",
"loginDays": 14,
"loginSeconds": 0,
"sessionDuration": 0,
"loginAttempts": 5,
"lockoutDuration": 60,
"adminReloginDuration": 60,
@@ -16,7 +15,7 @@
"postDeleteDuration": 0,
"enablePostHistory": 1,
"topicBacklinks": 1,
"postCacheSize": 20971520,
"postCacheSize": 10485760,
"disableChat": 0,
"chatEditDuration": 0,
"chatDeleteDuration": 0,
@@ -182,6 +181,5 @@
"composer:showHelpTab": 1,
"composer:allowPluginHelp": 1,
"maxReconnectionAttempts": 5,
"reconnectionDelay": 1500,
"disableCustomUserSkins": 0
"reconnectionDelay": 1500
}

View File

@@ -1,15 +1,18 @@
'use strict';
const prompt = require('prompt');
const winston = require('winston');
import prompt from 'prompt';
import winston from 'winston';
import redis from '../src/database/redis';
import mongo from '../src/database/mongo';
import postgres from '../src/database/postgres';
const questions = {
redis: require('../src/database/redis').questions,
mongo: require('../src/database/mongo').questions,
postgres: require('../src/database/postgres').questions,
redis: redis.questions,
mongo: mongo.questions,
postgres: postgres.questions,
};
module.exports = async function (config) {
export default async function (config) {
winston.info(`\nNow configuring ${config.database} database:`);
const databaseConfig = await getDatabaseConfig(config);
return saveDatabaseConfig(config, databaseConfig);

View File

@@ -2,7 +2,7 @@
"name": "nodebb",
"license": "GPL-3.0",
"description": "NodeBB Forum",
"version": "3.1.4",
"version": "3.0.0-alpha.2",
"homepage": "https://www.nodebb.org",
"repository": {
"type": "git",
@@ -29,140 +29,139 @@
},
"dependencies": {
"@adactive/bootstrap-tagsinput": "0.8.2",
"@isaacs/ttlcache": "1.4.0",
"@popperjs/core": "2.11.7",
"ace-builds": "1.21.1",
"@isaacs/ttlcache": "1.2.1",
"@popperjs/core": "2.11.6",
"ace-builds": "1.14.0",
"archiver": "5.3.1",
"async": "3.2.4",
"autoprefixer": "10.4.14",
"autoprefixer": "10.4.13",
"bcryptjs": "2.4.3",
"benchpressjs": "2.5.1",
"body-parser": "1.20.2",
"benchpressjs": "2.4.3",
"body-parser": "1.20.1",
"bootbox": "6.0.0",
"bootstrap": "5.2.3",
"bootswatch": "5.2.3",
"bootswatch": "5.2.2",
"chalk": "4.1.2",
"chart.js": "2.9.4",
"cli-graph": "3.2.2",
"clipboard": "2.0.11",
"colors": "1.4.0",
"commander": "10.0.1",
"commander": "9.4.1",
"compare-versions": "5.0.3",
"compression": "1.7.4",
"connect-flash": "0.1.1",
"connect-mongo": "5.0.0",
"connect-mongo": "4.6.0",
"connect-multiparty": "2.2.0",
"connect-pg-simple": "8.0.0",
"connect-redis": "7.1.0",
"connect-redis": "6.1.3",
"cookie-parser": "1.4.6",
"cron": "2.3.0",
"cron": "2.1.0",
"cropperjs": "1.5.13",
"csrf-sync": "4.0.1",
"csurf": "1.11.0",
"daemon": "1.1.0",
"diff": "5.1.0",
"esbuild": "0.17.19",
"esbuild": "0.16.10",
"express": "4.18.2",
"express-session": "1.17.3",
"express-useragent": "1.0.15",
"file-loader": "6.2.0",
"fs-extra": "11.1.1",
"graceful-fs": "4.2.11",
"helmet": "7.0.0",
"html-to-text": "9.0.5",
"fs-extra": "11.1.0",
"graceful-fs": "4.2.10",
"helmet": "5.1.1",
"html-to-text": "9.0.3",
"ipaddr.js": "2.0.1",
"jquery": "3.7.0",
"jquery": "3.6.3",
"jquery-deserialize": "2.0.0",
"jquery-form": "4.3.0",
"jquery-serializeobject": "1.0.0",
"jquery-ui": "1.13.2",
"jsesc": "3.0.2",
"json2csv": "5.0.7",
"jsonwebtoken": "9.0.0",
"jsonwebtoken": "8.5.1",
"less": "4.1.3",
"lodash": "4.17.21",
"logrotate-stream": "0.2.9",
"lru-cache": "9.1.1",
"logrotate-stream": "0.2.8",
"lru-cache": "7.14.1",
"material-design-lite": "1.3.0",
"mime": "3.0.0",
"mkdirp": "3.0.1",
"mongodb": "5.5.0",
"mkdirp": "1.0.4",
"mongodb": "4.13.0",
"morgan": "1.10.0",
"mousetrap": "1.6.5",
"multiparty": "4.2.3",
"nconf": "0.12.0",
"nodebb-plugin-2factor": "7.0.5",
"nodebb-plugin-composer-default": "10.1.5",
"nodebb-plugin-dbsearch": "6.0.1",
"nodebb-plugin-emoji": "5.0.15",
"nodebb-plugin-2factor": "6.0.3",
"nodebb-plugin-composer-default": "10.0.17",
"nodebb-plugin-dbsearch": "6.0.0",
"nodebb-plugin-emoji": "5.0.3",
"nodebb-plugin-emoji-android": "4.0.0",
"nodebb-plugin-markdown": "12.0.4",
"nodebb-plugin-mentions": "4.1.1",
"nodebb-plugin-ntfy": "1.0.15",
"nodebb-plugin-spam-be-gone": "2.0.7",
"nodebb-rewards-essentials": "0.2.3",
"nodebb-theme-harmony": "1.0.34",
"nodebb-theme-lavender": "7.0.9",
"nodebb-theme-peace": "2.0.26",
"nodebb-theme-persona": "13.0.69",
"nodebb-widget-essentials": "7.0.12",
"nodemailer": "6.9.2",
"nodebb-plugin-markdown": "11.0.2",
"nodebb-plugin-mentions": "4.0.2",
"nodebb-plugin-spam-be-gone": "2.0.4",
"nodebb-rewards-essentials": "0.2.1",
"nodebb-theme-lavender": "7.0.3",
"nodebb-theme-peace": "2.0.12",
"nodebb-theme-persona": "13.0.33",
"nodebb-widget-essentials": "7.0.2",
"nodemailer": "6.8.0",
"nprogress": "0.2.0",
"passport": "0.6.0",
"passport-http-bearer": "1.0.1",
"passport-local": "1.0.0",
"pg": "8.11.0",
"pg-cursor": "2.10.0",
"postcss": "8.4.23",
"pg": "8.8.0",
"pg-cursor": "2.7.4",
"postcss": "8.4.20",
"postcss-clean": "1.2.0",
"progress-webpack-plugin": "1.0.16",
"prompt": "1.3.0",
"ioredis": "5.3.2",
"ioredis": "5.2.4",
"request": "2.88.2",
"request-promise-native": "1.0.9",
"rimraf": "5.0.1",
"rimraf": "3.0.2",
"rss": "1.2.2",
"rtlcss": "4.1.0",
"sanitize-html": "2.10.0",
"sass": "1.62.1",
"semver": "7.5.1",
"rtlcss": "4.0.0",
"sanitize-html": "2.8.1",
"sass": "1.54.9",
"semver": "7.3.8",
"serve-favicon": "2.5.0",
"sharp": "0.32.1",
"sharp": "0.31.3",
"sitemap": "7.1.1",
"slideout": "1.0.1",
"socket.io": "4.6.1",
"socket.io-client": "4.6.1",
"@socket.io/redis-adapter": "8.2.0",
"socket.io": "4.5.4",
"socket.io-client": "4.5.4",
"@socket.io/redis-adapter": "8.0.0",
"sortablejs": "1.15.0",
"spdx-license-list": "6.6.0",
"spider-detector": "2.0.0",
"terser-webpack-plugin": "5.3.9",
"terser-webpack-plugin": "5.3.6",
"textcomplete": "0.18.2",
"textcomplete.contenteditable": "0.1.1",
"timeago": "1.6.7",
"tinycon": "0.6.8",
"toobusy-js": "0.5.1",
"validator": "13.9.0",
"webpack": "5.83.1",
"typescript": "4.9.4",
"validator": "13.7.0",
"webpack": "5.75.0",
"webpack-merge": "5.8.0",
"winston": "3.8.2",
"xml": "1.0.1",
"xregexp": "5.1.1",
"yargs": "17.7.2",
"yargs": "17.6.2",
"zxcvbn": "4.4.2"
},
"devDependencies": {
"@apidevtools/swagger-parser": "10.1.0",
"@commitlint/cli": "17.6.3",
"@commitlint/config-angular": "17.6.3",
"@apidevtools/swagger-parser": "10.0.3",
"@commitlint/cli": "17.3.0",
"@commitlint/config-angular": "17.3.0",
"coveralls": "3.1.1",
"eslint": "8.41.0",
"eslint": "8.30.0",
"eslint-config-nodebb": "0.2.1",
"eslint-plugin-import": "2.27.5",
"grunt": "1.6.1",
"eslint-plugin-import": "2.26.0",
"grunt": "1.5.3",
"grunt-contrib-watch": "1.1.0",
"husky": "8.0.3",
"jsdom": "22.0.0",
"lint-staged": "13.2.2",
"husky": "8.0.2",
"jsdom": "20.0.3",
"lint-staged": "13.1.0",
"mocha": "10.2.0",
"mocha-lcov-reporter": "1.3.0",
"mockdate": "3.0.5",
@@ -170,10 +169,10 @@
"smtp-server": "3.11.0"
},
"optionalDependencies": {
"sass-embedded": "1.62.0"
"sass-embedded": "1.55.0"
},
"resolutions": {
"*/jquery": "3.7.0"
"*/jquery": "3.6.3"
},
"bugs": {
"url": "https://github.com/NodeBB/NodeBB/issues"

View File

@@ -1,19 +1,19 @@
'use strict';
const winston = require('winston');
const express = require('express');
const bodyParser = require('body-parser');
const fs = require('fs');
const path = require('path');
const childProcess = require('child_process');
const webpack = require('webpack');
const nconf = require('nconf');
const Benchpress = require('benchpressjs');
const { mkdirp } = require('mkdirp');
const { paths } = require('../src/constants');
const sass = require('../src/utils').getSass();
import winston from 'winston';
import express from 'express';
import bodyParser from 'body-parser';
import fs from 'fs';
import path from 'path';
import childProcess from 'child_process';
import webpack from 'webpack';
import nconf from 'nconf';
import Benchpress from 'benchpressjs';
import mkdirp from 'mkdirp';
import { paths } from '../src/constants';
import sass from '../src/utils';;
import util from 'util';
import webpackCfg from '../webpack.installer';
const app = express();
let server;
@@ -22,13 +22,15 @@ const formats = [
winston.format.colorize(),
];
const timestampFormat = winston.format((info) => {
const timestampFormat: any = winston.format((info) => {
const dateString = `${new Date().toISOString()} [${global.process.pid}]`;
info.level = `${dateString} - ${info.level}`;
return info;
});
formats.push(timestampFormat());
//@ts-ignore
formats.push(winston.format.splat());
//@ts-ignore
formats.push(winston.format.simple());
winston.configure({
@@ -45,7 +47,7 @@ winston.configure({
],
});
const web = module.exports;
const web = {} as any;
let installing = false;
let success = false;
let error = false;
@@ -80,14 +82,13 @@ web.install = async function (port) {
]);
setupRoutes();
launchExpress(port);
} catch (err) {
} catch (err: any) {
winston.error(err.stack);
}
};
async function runWebpack() {
const util = require('util');
const webpackCfg = require('../webpack.installer');
const compiler = webpack(webpackCfg);
const webpackRun = util.promisify(compiler.run).bind(compiler);
await webpackRun();
@@ -202,7 +203,7 @@ async function launch(req, res) {
child = childProcess.exec(nconf.get('launchCmd'), {
detached: true,
stdio: ['ignore', 'ignore', 'ignore'],
});
} as any);
}
const filesToDelete = [
@@ -216,13 +217,13 @@ async function launch(req, res) {
filename => fs.promises.unlink(filename)
)
);
} catch (err) {
} catch (err: any) {
console.log(err.stack);
}
child.unref();
process.exit(0);
} catch (err) {
} catch (err: any) {
winston.error(err.stack);
throw err;
}
@@ -258,7 +259,7 @@ async function compileSass() {
});
await fs.promises.writeFile(path.join(__dirname, '../public/installer.css'), scssOutput.css.toString());
} catch (err) {
} catch (err: any) {
winston.error(`Unable to compile SASS: \n${err.stack}`);
throw err;
}
@@ -276,7 +277,7 @@ async function loadDefaults() {
try {
// eslint-disable-next-line no-bitwise
await fs.promises.access(setupDefaultsPath, fs.constants.F_OK | fs.constants.R_OK);
} catch (err) {
} catch (err: any) {
// setup.json not found or inaccessible, proceed with no defaults
if (err.code !== 'ENOENT') {
throw err;
@@ -289,3 +290,5 @@ async function loadDefaults() {
file: setupDefaultsPath,
});
}
export default web;

View File

@@ -6,9 +6,9 @@ const url = require('url');
const path = require('path');
const { fork } = require('child_process');
const logrotate = require('logrotate-stream');
const { mkdirp } = require('mkdirp');
const mkdirp = require('mkdirp');
const file = require('./src/file');
const file = require('./build/src/file');
const pkg = require('./package.json');
const pathToConfig = path.resolve(__dirname, process.env.CONFIG || 'config.json');
@@ -30,7 +30,9 @@ const output = logrotate({ file: outputLogFilePath, size: '1m', keep: 3, compres
const silent = nconf.get('silent') === 'false' ? false : nconf.get('silent') !== false;
let numProcs;
const workers = [];
const Loader = {};
const Loader = {
timesStarted: 0,
};
const appPath = path.join(__dirname, 'app.js');
Loader.init = function () {
@@ -55,6 +57,21 @@ Loader.displayStartupMessages = function () {
Loader.addWorkerEvents = function (worker) {
worker.on('exit', (code, signal) => {
if (code !== 0) {
if (Loader.timesStarted < numProcs * 3) {
Loader.timesStarted += 1;
if (Loader.crashTimer) {
clearTimeout(Loader.crashTimer);
}
Loader.crashTimer = setTimeout(() => {
Loader.timesStarted = 0;
}, 10000);
} else {
console.log(`${numProcs * 3} restarts in 10 seconds, most likely an error on startup. Halting.`);
process.exit();
}
}
console.log(`[cluster] Child Process (${worker.pid}) has exited (code: ${code}, signal: ${signal})`);
if (!(worker.suicide || code === 0)) {
console.log('[cluster] Spinning up another process...');

3
nodebb
View File

@@ -2,4 +2,5 @@
'use strict';
require('./src/cli');
console.log('SERIOUSLY?');
require('./src/cli/bootstrap');

View File

@@ -4,6 +4,8 @@
"acp-title": "لوحة تحكم إدارة NodeBB | %1",
"settings-header-contents": "محتويات",
"changes-not-saved": "لم يتم حفظ التغييرات",
"changes-not-saved-message": "حدثت مشكلة أثناء حفظ التغييرات في NodeBB. (%1)"
"changes-saved": "Changes Saved",
"changes-saved-message": "Your changes to the NodeBB configuration have been saved.",
"changes-not-saved": "Changes Not Saved",
"changes-not-saved-message": "NodeBB encountered a problem saving your changes. (%1)"
}

View File

@@ -1,8 +1,8 @@
{
"post-cache": "التخزين المؤقت للمشاركات",
"group-cache": "التخزين المؤقت للمجموعات",
"local-cache": "تخزين مؤقت محلي",
"object-cache": "تخزين مؤقت للأشياء",
"group-cache": "Group Cache",
"local-cache": "Local Cache",
"object-cache": "Object Cache",
"percent-full": "1% كاملة",
"post-cache-size": "حجم التخزين المؤقت للمشاركات",
"items-in-cache": "العناصر في التخزين المؤقت"

View File

@@ -1,52 +1,52 @@
{
"x-b": "٪1 بايت",
"x-mb": "٪1 ميقا بايت",
"x-gb": "٪1 قيقا بايت",
"uptime-seconds": "مدة التشغيل بالثواني",
"uptime-days": "مدة التشغيل بالأيام",
"x-b": "%1 b",
"x-mb": "%1 mb",
"x-gb": "%1 gb",
"uptime-seconds": "Uptime in Seconds",
"uptime-days": "Uptime in Days",
"mongo": "Mongo",
"mongo.version": "اصدار MongoDB",
"mongo.storage-engine": "محرك التخزين",
"mongo.collections": "التجميعات",
"mongo.objects": "العناصر",
"mongo.avg-object-size": "معدل حجم العناصر",
"mongo.data-size": "حجم البيانات",
"mongo.storage-size": "حجم التخرين",
"mongo.index-size": "حجم الفهرس",
"mongo.file-size": "حجم الملف",
"mongo.resident-memory": "الذاكرة الساكنة",
"mongo.version": "MongoDB Version",
"mongo.storage-engine": "Storage Engine",
"mongo.collections": "Collections",
"mongo.objects": "Objects",
"mongo.avg-object-size": "Avg. Object Size",
"mongo.data-size": "Data Size",
"mongo.storage-size": "Storage Size",
"mongo.index-size": "Index Size",
"mongo.file-size": "File Size",
"mongo.resident-memory": "Resident Memory",
"mongo.virtual-memory": "الذاكرة الإفتراضية",
"mongo.mapped-memory": "الذاكرة المعينة",
"mongo.bytes-in": "البايتات الواردة",
"mongo.bytes-out": "البايتات الصادرة",
"mongo.num-requests": "عدد الطلبات",
"mongo.raw-info": "معلومات MongoDB الأولية",
"mongo.unauthorized": "لم يستطع NodeBB من الاستعلام عن احصاءات قواعد البيانات ل MongoDB. الرجاء التأكد من أن المستخدم في NodeBB يحتوي على دور &quot;clusterMonitor&quot; ال &quot;admin&quot; لقواعد البيانات.",
"mongo.mapped-memory": "Mapped Memory",
"mongo.bytes-in": "Bytes In",
"mongo.bytes-out": "Bytes Out",
"mongo.num-requests": "Number of Requests",
"mongo.raw-info": "MongoDB Raw Info",
"mongo.unauthorized": "NodeBB was unable to query the MongoDB database for relevant statistics. Please ensure that the user in use by NodeBB contains the &quot;clusterMonitor&quot; role for the &quot;admin&quot; database.",
"redis": "Redis",
"redis.version": "إصدار Redis",
"redis.keys": "المفاتيح",
"redis.expires": "ينتهي ",
"redis.avg-ttl": "متوسط وقت الانعاش",
"redis.connected-clients": "العميل المتصل",
"redis.connected-slaves": "البدلاء المتصلين",
"redis.blocked-clients": "العملاء المحظورون",
"redis.version": "Redis Version",
"redis.keys": "Keys",
"redis.expires": "Expires",
"redis.avg-ttl": "Average TTL",
"redis.connected-clients": "Connected Clients",
"redis.connected-slaves": "Connected Slaves",
"redis.blocked-clients": "Blocked Clients",
"redis.used-memory": "الذاكرة المستخدمة",
"redis.memory-frag-ratio": "نسبة تجزئة الذاكرة",
"redis.memory-frag-ratio": "Memory Fragmentation Ratio",
"redis.total-connections-recieved": "إجمالي الاتصالات المستلمة",
"redis.total-commands-processed": "إجمالي الأوامر التي تمت معالجتها",
"redis.iops": "العمليات اللحظية في الثانية",
"redis.iinput": "الإدخال الفوري في الثانية",
"redis.ioutput": "المخرجات الفورية في الثانية",
"redis.total-input": "مجموع المدخلات",
"redis.total-output": "مجموع المخرجات",
"redis.iops": "Instantaneous Ops. Per Second",
"redis.iinput": "Instantaneous Input Per Second",
"redis.ioutput": "Instantaneous Output Per Second",
"redis.total-input": "Total Input",
"redis.total-output": "Total Ouput",
"redis.keyspace-hits": "المفاتيح المضغوطة",
"redis.keyspace-misses": "المفاتيح المخفقة",
"redis.raw-info": "معلومات Redis الأولية",
"redis.keyspace-hits": "Keyspace Hits",
"redis.keyspace-misses": "Keyspace Misses",
"redis.raw-info": "Redis Raw Info",
"postgres": "Postgres",
"postgres.version": "إصدار PostgreSQL",
"postgres.raw-info": "معلومات Postgres الأولية"
"postgres.version": "PostgreSQL Version",
"postgres.raw-info": "Postgres Raw Info"
}

View File

@@ -3,7 +3,7 @@
"no-events": "لا توجد أحداث",
"control-panel": "لوحة تحكم الأحداث",
"delete-events": "حذف الاحداث",
"confirm-delete-all-events": "هل أنت متاكد أنك تريد حذف كل سجل اﻻحداث؟",
"confirm-delete-all-events": "Are you sure you want to delete all logged events?",
"filters": "تصفية",
"filters-apply": "تطبيق التصفية",
"filter-type": "نوع الحدث",

View File

@@ -1,14 +1,14 @@
{
"custom-css": "Custom CSS/SASS",
"custom-css.description": "Enter your own CSS/SASS declarations here, which will be applied after all other styles.",
"custom-css.enable": "Enable Custom CSS/SASS",
"custom-css": "Custom CSS/LESS",
"custom-css.description": "Enter your own CSS/LESS declarations here, which will be applied after all other styles.",
"custom-css.enable": "Enable Custom CSS/LESS",
"custom-js": "Javascript مخصصة",
"custom-js.description": "أدخل Javascript الخاص بك هنا. سيتم تنفيذها بعد تحميل الصفحة بالكامل.",
"custom-js.enable": "تفعيل Javascript المخصصة",
"custom-header": "ترويسة مخصصة",
"custom-header.description": "أدخل وسوم HTML المخصصة هنا (مثل: Meta Tags, وغيرها)، والتي سيتم تضمينها لجزئية <code>&lt;head&gt;</code> من ترميز المنتدى. يُسمح بعلامات البرمجة النصية، ولكن لا يُنصح بها ، نظرًا لأن علامة التبويب <a href=\"#custom-js\" data-toggle=\"tab\"> Custom Javascript </a> متاحة.",
"custom-header.description": "Enter custom HTML here (ex. Meta Tags, etc.), which will be appended to the <code>&lt;head&gt;</code> section of your forum's markup. Script tags are allowed, but are discouraged, as the <a href=\"#custom-js\" data-toggle=\"tab\">Custom Javascript</a> tab is available.",
"custom-header.enable": "تفعيل الترويسة المخصصة",
"custom-css.livereload": "تفعيل إعادة التحميل المباشرة",

View File

@@ -7,5 +7,5 @@
"revert-confirm": "هل أنت متأكد من أنك ترغب في استعادة قااب NodeBB الافتراضي؟",
"theme-changed": "تم تغيير القالب",
"revert-success": "لقد قمت بنجاح بإستعادة القالب الأساسي لـNodeBB",
"restart-to-activate": "يرجى إعادة بناء وإعادة تشغيل NodeBB لتنشيط هذا الثيم."
"restart-to-activate": "Please rebuild and restart your NodeBB to fully activate this theme."
}

View File

@@ -1,9 +1,9 @@
{
"forum-traffic": "حركة المنتدى",
"forum-traffic": "Forum Traffic",
"page-views": "مشاهدات الصفحات",
"unique-visitors": "زائرين فريدين",
"logins": "عمليات تسجيل الدخول",
"new-users": "مستخدم جديد",
"logins": "Logins",
"new-users": "New Users",
"posts": "مشاركات",
"topics": "مواضيع",
"page-views-seven": "آخر 7 ايام",
@@ -15,24 +15,24 @@
"page-views-custom-help": "أدخل نطاقا زمنيا لمرات مشاهدة الصفحات التي ترغب في عرضها. إذا لم يظهر منتقي التاريخ، فإن التنسيق المقبول هو <code>YYYY-MM-DD</code>",
"page-views-custom-error": "الرجاء إدخال نطاق تاريخ صالح بالتنسيق <code>YYYY-MM-DD</code>",
"stats.yesterday": "الأمس",
"stats.today": "اليوم",
"stats.last-week": "الاسبوع الماضي",
"stats.this-week": "هذا الاسبوع",
"stats.last-month": "الشهر الماضي",
"stats.this-month": "هذا الشهر",
"stats.yesterday": "Yesterday",
"stats.today": "Today",
"stats.last-week": "Last Week",
"stats.this-week": "This Week",
"stats.last-month": "Last Month",
"stats.this-month": "This Month",
"stats.all": "كل الوقت",
"updates": "تحديثات",
"running-version": "المنتدى يعمل حاليا على <strong>NodeBB الإصدار<span id=\"version\">%1</span></strong>.",
"keep-updated": "تأكد دائما من أن NodeBB يعمل على احدث إصدار للحصول على أحدث التصحيحات الأمنية وإصلاحات الأخطاء.",
"up-to-date": "<p>المنتدى <strong>يعمل على أحدث إصدار</strong> <i class=\"fa fa-check\"></i></p>",
"upgrade-available": "<p> هناك إصدار جديد برقم (v%1). خذ بعين الاعتبار <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\"> ترقية NodeBB </a>.</p>",
"prerelease-upgrade-available": "<p>هذا إصدار منتهي من الاصدارات المسبقة من NodeBB. هناك إصدار جديد برقم (v٪ 1). ضع في اعتبارك <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">ترقية NodeBB إليه</a>.</p>",
"upgrade-available": "<p>A new version (v%1) has been released. Consider <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">upgrading your NodeBB</a>.</p>",
"prerelease-upgrade-available": "<p>This is an outdated pre-release version of NodeBB. A new version (v%1) has been released. Consider <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">upgrading your NodeBB</a>.</p>",
"prerelease-warning": "<p>هذه نسخة <strong>ماقبل الإصدار</strong> من NodeBB. قد تحدث أخطاء غير مقصودة. <i class=\"fa fa-exclamation-triangle\"></i></p>",
"fallback-emailer-not-found": "مرسل البريد الإلكتروني الاحتياطي غير موجود!",
"fallback-emailer-not-found": "Fallback emailer not found!",
"running-in-development": "المنتدى قيد التشغيل في وضع \"المطورين\". وقد تكون هناك ثغرات أمنية مفتوحة؛ من فضلك تواصل مع مسؤول نظامك.",
"latest-lookup-failed": "<p>فشل البحث عن أحدث إصدار متوفر من NodeBB</p>",
"latest-lookup-failed": "<p>Failed to look up latest available version of NodeBB</p>",
"notices": "إشعارات",
"restart-not-required": "إعادة التشغيل غير مطلوب",
@@ -42,10 +42,10 @@
"search-plugin-tooltip": "نصب إضافة البحث من صفحة الإضافات البرمجية لتنشيط وظيفة البحث",
"control-panel": "التحكم بالنظام",
"rebuild-and-restart": "أعد البناء &amp; وأعد التشغيل",
"restart": "أعد التشغيل",
"restart-warning": "ستؤدي إعادة بناء أو إعادة تشغيل NodeBB إلى إنقطاع الاتصال بالمنتدى لبضع ثوان.",
"restart-disabled": "تم تعطيل إعادة بناء NodeBB وإعادة تشغيله حيث لا يبدو أنك تقوم بتشغيله عبر البرنامج الخفي المناسب.",
"rebuild-and-restart": "Rebuild &amp; Restart",
"restart": "Restart",
"restart-warning": "Rebuilding or Restarting your NodeBB will drop all existing connections for a few seconds.",
"restart-disabled": "Rebuilding and Restarting your NodeBB has been disabled as you do not seem to be running it via the appropriate daemon.",
"maintenance-mode": "وضع الصيانة",
"maintenance-mode-title": "انقر هنا لإعداد وضع الصيانة لـNodeBB",
"realtime-chart-updates": "التحديث الفوري للرسم البياني",
@@ -54,10 +54,10 @@
"active-users.users": "الأعضاء",
"active-users.guests": "الزوار",
"active-users.total": "المجموع",
"active-users.connections": "روابط الاتصال",
"active-users.connections": "Connections",
"guest-registered-users": "الزائر مقابل المستخدمين المسجلين",
"guest": "الزائر",
"guest-registered-users": "Guest vs Registered Users",
"guest": "Guest",
"registered": "مسجل",
"user-presence": "تواجد المستخدمين",
@@ -68,26 +68,23 @@
"unread": "غير مقروء",
"high-presence-topics": "مواضيع ذات حضور قوي",
"popular-searches": "عمليات البحث الشائعة",
"popular-searches": "Popular Searches",
"graphs.page-views": "مشاهدات الصفحة",
"graphs.page-views-registered": "زيارات الصفحات المسجلة",
"graphs.page-views-guest": "زيارات الصفحات للزوار",
"graphs.page-views-bot": "زيارات الصفحات الآلية",
"graphs.page-views-registered": "Page Views Registered",
"graphs.page-views-guest": "Page Views Guest",
"graphs.page-views-bot": "Page Views Bot",
"graphs.unique-visitors": "زوار فريدين",
"graphs.registered-users": "مستخدمين مسجلين",
"graphs.guest-users": "المستخدمين الزوار",
"last-restarted-by": "آخر إعادة تشغيل بواسطة",
"no-users-browsing": "لا يوجد مستخدمين يتصفحون",
"graphs.guest-users": "Guest Users",
"last-restarted-by": "Last restarted by",
"no-users-browsing": "No users browsing",
"back-to-dashboard": "العودة للوحة التحكم",
"details.no-users": "لم ينضم أي مستخدم خلال الإطار الزمني المحدد",
"details.no-topics": "لم يتم نشر أي مواضيع خلال الإطار الزمني المحدد",
"details.no-searches": "لم يتم إجراء أي بحث خلال الإطار الزمني المحدد",
"details.no-logins": "لم يوثق أي تسجيل دخول خلال الإطار الزمني المحدد",
"details.logins-static": "يقوم NodeBB بحفظ بيانات الجلسة لمدة ٪1 يوم/أيام فقط، ولذا فإن هذا الجدول أدناه سيعرض فقط أحدث الجلسات النشطة",
"details.logins-login-time": "وقت تسجيل الدخول",
"start": "بدء",
"end": "إنهاء",
"filter": "تصفية"
"back-to-dashboard": "Back to Dashboard",
"details.no-users": "No users have joined within the selected timeframe",
"details.no-topics": "No topics have been posted within the selected timeframe",
"details.no-searches": "No searches have been made yet",
"details.no-logins": "No logins have been recorded within the selected timeframe",
"details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions",
"details.logins-login-time": "Login Time"
}

View File

@@ -1,8 +1,8 @@
{
"you-are-on": "أنت في <strong> %1:%2 </strong>",
"ip": "رقم الآي بي <strong> %1 </strong>",
"nodes-responded": "عدد %1 نقطة/نقاط استجابوا خلال %2 جزء من الثانية.",
"host": "المضيف",
"you-are-on": "You are on <strong>%1:%2</strong>",
"ip": "IP <strong>%1</strong>",
"nodes-responded": "%1 nodes responded within %2ms!",
"host": "host",
"primary": "primary / run jobs",
"pid": "pid",
"nodejs": "nodejs",

View File

@@ -1,12 +1,12 @@
{
"logger-settings": "إعدادات المسجِّل",
"description": "من خلال تمكين مربعات الاختيار ، ستتلقى سجلات إلى جهازك الطرفي. إذا حددت مسارًا ، فسيتم بعد ذلك حفظ السجلات في ملف بدلاً من ذلك. يعد تسجيل HTTP مفيدًا لجمع الإحصائيات حول من ومتى وماذا يصل الأشخاص في المنتدى. بالإضافة إلى تسجيل طلبات HTTP ، يمكننا أيضًا تسجيل أحداث socket.io. يمكن أن يكون تسجيل Socket.io ، جنبًا إلى جنب مع شاشة redis-cli ، مفيدًا جدًا في تعلم العناصر الداخلية لـ NodeBB.",
"explanation": "ما عليك سوى تحديدأو/ إلغاء تحديد إعدادات التسجيل لتمكين أو تعطيل التسجيل أثناء التنقل. لا حاجة لإعادة التشغيل.",
"enable-http": "تمكين سجلات HTTP",
"enable-socket": "تفعيل تسجيل أحداث socket.io",
"file-path": "مسار ملف السجل",
"file-path-placeholder": "/path/to/log/file.log ::: اتركه فارغا لاظهار السجلات لنافذة الطرفية",
"logger-settings": "Logger Settings",
"description": "By enabling the check boxes, you will receive logs to your terminal. If you specify a path, logs will then be saved to a file instead. HTTP logging is useful for collecting statistics about who, when, and what people access on your forum. In addition to logging HTTP requests, we can also log socket.io events. Socket.io logging, in combination with redis-cli monitor, can be very helpful for learning NodeBB's internals.",
"explanation": "Simply check/uncheck the logging settings to enable or disable logging on the fly. No restart needed.",
"enable-http": "Enable HTTP logging",
"enable-socket": "Enable socket.io event logging",
"file-path": "Path to log file",
"file-path-placeholder": "/path/to/log/file.log ::: leave blank to log to your terminal",
"control-panel": "لوحة تحكم المسجل",
"update-settings": "تحديث إعدادات المسجل"
"control-panel": "Logger Control Panel",
"update-settings": "Update Logger Settings"
}

View File

@@ -1,15 +1,15 @@
{
"rewards": "المكافآت",
"condition-if-users": "إذا كان للمستخدم",
"condition-is": "يكون: ",
"condition-then": "عندئذ:",
"max-claims": "عدد المرات التي يمكن فيها المطالبة بالمكافأة",
"zero-infinite": "أدخل 0 للقيمة اللانهائية",
"delete": "احذف",
"enable": "مكّن",
"disable": "عطّل",
"rewards": "Rewards",
"condition-if-users": "If User's",
"condition-is": "Is:",
"condition-then": "Then:",
"max-claims": "Amount of times reward is claimable",
"zero-infinite": "Enter 0 for infinite",
"delete": "Delete",
"enable": "Enable",
"disable": "Disable",
"alert.delete-success": "المكافآت المحذوفة بنجاح",
"alert.no-inputs-found": "مكافأة غير قانونية - لم يتم العثور على مدخلات!",
"alert.save-success": "المكافآت المحفوظة بنجاح"
"alert.delete-success": "Successfully deleted reward",
"alert.no-inputs-found": "Illegal reward - no inputs found!",
"alert.save-success": "Successfully saved rewards"
}

View File

@@ -8,9 +8,9 @@
"containers.none": "None",
"container.well": "Well",
"container.jumbotron": "Jumbotron",
"container.card": "Card",
"container.card-header": "Card Header",
"container.card-body": "Card Body",
"container.panel": "Panel",
"container.panel-header": "Panel Header",
"container.panel-body": "Panel Body",
"container.alert": "Alert",
"alert.confirm-delete": "Are you sure you wish to delete this widget?",
@@ -26,7 +26,5 @@
"container.placeholder": "Drag and drop a container or enter HTML here.",
"show-to-groups": "Show to groups",
"hide-from-groups": "Hide from groups",
"start-date": "Start date",
"end-date": "End date",
"hide-on-mobile": "Hide on mobile"
}

View File

@@ -39,5 +39,6 @@
"revert": "Revert",
"edit.no-users-found": "No Users Found",
"edit.confirm-remove-user": "Are you sure you want to remove this user?"
"edit.confirm-remove-user": "Are you sure you want to remove this user?",
"edit.save-success": "Changes saved!"
}

View File

@@ -49,6 +49,7 @@
"alert.confirm-moderate": "<strong>Are you sure you wish to grant the moderation privilege to this user group?</strong> This group is public, and any users can join at will.",
"alert.confirm-admins-mods": "<strong>Are you sure you wish to grant the &quot;Admins &amp; Mods&quot; privilege to this user/group?</strong> Users with this privilege are able to promote and demote other users into privileged positions, <em>including super administrator</em>",
"alert.confirm-save": "Please confirm your intention to save these privileges",
"alert.saved": "Privilege changes saved and applied",
"alert.confirm-discard": "Are you sure you wish to discard your privilege changes?",
"alert.discarded": "Privilege changes discarded",
"alert.confirm-copyToAll": "Are you sure you wish to apply this set of <strong>%1</strong> to <strong>all categories</strong>?",

View File

@@ -1,20 +1,20 @@
{
"queue": "الطابور",
"queue": "Queue",
"description": "There are no users in the registration queue. <br> To enable this feature, go to <a href=\"%1\">Settings &rarr; User &rarr; User Registration</a> and set <strong>Registration Type</strong> to \"Admin Approval\".",
"list.name": "اﻹسم",
"list.email": "البريد الإلكتروني",
"list.name": "Name",
"list.email": "Email",
"list.ip": "IP",
"list.time": "التوقيت",
"list.time": "Time",
"list.username-spam": "Frequency: %1 Appears: %2 Confidence: %3",
"list.email-spam": "Frequency: %1 Appears: %2",
"list.ip-spam": "Frequency: %1 Appears: %2",
"invitations": "الدعوات",
"invitations": "Invitations",
"invitations.description": "Below is a complete list of invitations sent. Use ctrl-f to search through the list by email or username. <br><br>The username will be displayed to the right of the emails for users who have redeemed their invitations.",
"invitations.inviter-username": "أسم المستخدم الداعي",
"invitations.invitee-email": "البريد اﻻلكتروني للمدعو",
"invitations.invitee-username": "اسم المستخم للمدعو (اذا كان مسجل)",
"invitations.inviter-username": "Inviter Username",
"invitations.invitee-email": "Invitee Email",
"invitations.invitee-username": "Invitee Username (if registered)",
"invitations.confirm-delete": "هل أنت متأكد من أنك تريد حذف هذه الدعوة؟"
"invitations.confirm-delete": "Are you sure you wish to delete this invitation?"
}

View File

@@ -3,25 +3,14 @@
"settings": "Settings",
"lead-text": "From this page you can configure access to the Write API in NodeBB.",
"intro": "By default, the Write API authenticates users based on their session cookie, but NodeBB also supports Bearer authentication via tokens generated via this page.",
"warning": "<strong>Be advised</strong> — treat tokens like passwords. If they are leaked, your account should be considered compromised.",
"docs": "Click here to access the full API specification",
"require-https": "Require API usage via HTTPS only",
"require-https-caveat": "<strong>Note</strong>: Some installations involving load balancers may proxy their requests to NodeBB using HTTP, in which case this option should remain disabled.",
"uid": "User ID",
"token": "Token",
"uid-help-text": "Specify a User ID to associate with this token. If the user ID is <code>0</code>, it will be considered a <em>master</em> token, which can assume the identity of other users based on the <code>_uid</code> parameter",
"description": "Description",
"last-seen": "Last seen",
"created": "Created",
"create-token": "Create Token",
"update-token": "Update Token",
"master-token": "Master token",
"last-seen-never": "This key has never been used.",
"no-description": "No description specified.",
"actions": "Actions",
"delete-confirm": "Are you sure you wish to delete this token? It will not be recoverable.",
"roll-confirm": "Are you sure you wish to regenerate this token? The old token will be immediately revoked and will not be recoverable."
"token-on-save": "Token will be generated once form is saved"
}

View File

@@ -42,7 +42,7 @@
"subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. <code>0</code> for midnight, <code>17</code> for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.<br /> The approximate server time is: <span id=\"serverTime\"></span><br /> The next daily digest is scheduled to be sent <span id=\"nextDigestTime\"></span>",
"notifications.remove-images": "Remove images from email notifications",
"require-email-address": "Require new users to specify an email address",
"require-email-address-warning": "By default, users can opt-out of entering an email address by leaving the field blank. Enabling this option means new users will have to enter <strong>and confirm</strong> an email address in order to proceed with registration and subsequent access to the forum. <strong>It does not ensure user will enter a real email address, nor even an address they own.</strong>",
"require-email-address-warning": "By default, users can opt-out of entering an email address by leaving the field blank. Enabling this option means they have to enter an email address in order to proceed with registration. <strong>It does not ensure user will enter a real email address, nor even an address they own.</strong>",
"send-validation-email": "Send validation emails when an email is added or changed",
"include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails",
"include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). <strong>Enable this setting at your own risk</strong> &ndash; sending emails to unverified addresses may be a violation of regional anti-spam laws.",

View File

@@ -12,7 +12,7 @@
"groups": "Groups:",
"open-new-window": "Open in a new window",
"dropdown": "Dropdown",
"dropdown-placeholder": "Place your dropdown menu items below, ie: <br/>&lt;li&gt;&lt;a class=&quot;dropdown-item&quot; href&#x3D;&quot;https://myforum.com&quot;&gt;Link 1&lt;/a&gt;&lt;/li&gt;",
"dropdown-placeholder": "Place your dropdown menu items below, ie: <br/>&lt;li&gt;&lt;a href&#x3D;&quot;https://myforum.com&quot;&gt;Link 1&lt;/a&gt;&lt;/li&gt;",
"btn.delete": "Delete",
"btn.disable": "Disable",

View File

@@ -29,8 +29,6 @@
"session-time-days": "Days",
"session-time-seconds": "Seconds",
"session-time-help": "These values are used to govern how long a user stays logged in when they check &quot;Remember Me&quot; on login. Note that only one of these values will be used. If there is no <i>seconds</i> value we fall back to <i>days</i>. If there is no <i>days</i> value we default to <i>14 days</i>.",
"session-duration": "Session length if \"Remember Me\" is not checked (seconds)",
"session-duration-help": "By default — or if set to <code>0</code> — a user will stay logged in for the duration of the session (e.g. however long the browser window/tab remains open). Set this value to explicitly invalidate the session after the specified number of seconds.",
"online-cutoff": "Minutes after user is considered inactive",
"online-cutoff-help": "If user performs no actions for this duration, they are considered inactive and they do not receive realtime updates.",
"registration": "تسجيل المستخدم",

View File

@@ -62,7 +62,6 @@
"no-user": "اسم مستخدم غير موجود",
"no-teaser": "مقتطف غير موجود",
"no-flag": "Flag does not exist",
"no-chat-room": "Chat room does not exist",
"no-privileges": "لاتملك الصلاحيات اللازمة للقيام بهذه العملية",
"category-disabled": "قائمة معطلة",
"topic-locked": "الموضوع مقفول",
@@ -89,10 +88,8 @@
"category-not-selected": "Category not selected.",
"too-many-posts": "يسمح لك بالنشر مرة كل %1 ثانية - يرجى الإنتظار قبل النشر مجدداً",
"too-many-posts-newbie": "As a new user, you can only post once every %1 second(s) until you have earned %2 reputation - please wait before posting again",
"already-posting": "You are already posting",
"tag-too-short": "Please enter a longer tag. Tags should contain at least %1 character(s)",
"tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 character(s)",
"tag-not-allowed": "Tag not allowed",
"not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)",
"too-many-tags": "Too many tags. Topics can't have more than %1 tag(s)",
"cant-use-system-tag": "You can not use this system tag.",
@@ -102,7 +99,6 @@
"guest-upload-disabled": "خاصية رفع الملفات غير مفعلة للزوار.",
"cors-error": "Unable to upload image due to misconfigured CORS",
"upload-ratelimit-reached": "You have uploaded too many files at one time. Please try again later.",
"upload-error-fallback": "Unable to upload image — %1",
"scheduling-to-past": "Please select a date in the future.",
"invalid-schedule-date": "Please enter a valid date and time.",
"cant-pin-scheduled": "Scheduled topics cannot be (un)pinned.",
@@ -136,8 +132,6 @@
"group-already-requested": "سبق وتم تسجيل طلب العضوية",
"group-join-disabled": "You are not able to join this group at this time",
"group-leave-disabled": "You are not able to leave this group at this time",
"group-user-not-pending": "User does not have a pending request to join this group.",
"gorup-user-not-invited": "User has not been invited to join this group.",
"post-already-deleted": "سبق وتم حذف هذا الرد",
"post-already-restored": "سبق وتم إلغاء حذف هذا الرد",
"topic-already-deleted": "سبق وتم حذف هذا الموضوع",
@@ -161,9 +155,6 @@
"chat-deleted-already": "This chat message has already been deleted.",
"chat-restored-already": "This chat message has already been restored.",
"chat-room-does-not-exist": "Chat room does not exist.",
"cant-add-users-to-chat-room": "Can't add users to chat room.",
"cant-remove-users-from-chat-room": "Can't remove users from chat room.",
"chat-room-name-too-long": "Chat room name too long.",
"already-voting-for-this-post": "لقد شاركت بالتصويت ، ألا تذكر؟",
"reputation-system-disabled": "نظام السمعة معطل",
"downvoting-disabled": "التصويتات السلبية معطلة",
@@ -228,6 +219,5 @@
"api.429": "You have made too many requests, please try again later",
"api.500": "An unexpected error was encountered while attempting to service your request.",
"api.501": "The route you are trying to call is not implemented yet, please try again tomorrow",
"api.503": "The route you are trying to call is not currently available due to a server configuration",
"api.reauth-required": "The resource you are trying to access requires (re-)authentication."
"api.503": "The route you are trying to call is not currently available due to a server configuration"
}

View File

@@ -3,27 +3,25 @@
"reports": "Reports",
"first-reported": "First Reported",
"no-flags": "Hooray! No flags found.",
"x-flags-found": "%1 flag(s) found.",
"assignee": "المحال إليه",
"update": "تحديث",
"updated": "تم التحديث",
"resolved": "Resolved",
"target-purged": "The content this flag referred to has been purged and is no longer available.",
"target-aboutme-empty": "This user has no &quot;About Me&quot; set.",
"graph-label": "Daily Flags",
"quick-filters": "Quick Filters",
"filter-active": "There are one or more filters active in this list of flags",
"filter-reset": "ازالة الفلاتر",
"filters": "خيارات الفلتر",
"filter-reporterId": "Reporter",
"filter-targetUid": "Reportee",
"filter-reporterId": "Reporter UID",
"filter-targetUid": "Flagged UID",
"filter-type": "عنوان العلامة",
"filter-type-all": "كل المحتوي",
"filter-type-post": "مشاركة",
"filter-type-user": "مستخدم",
"filter-state": "الحالة",
"filter-assignee": "Assignee",
"filter-assignee": "Assignee UID",
"filter-cid": "Category",
"filter-quick-mine": "Assigned to me",
"filter-cid-all": "All categories",
@@ -47,7 +45,6 @@
"notes": "Flag Notes",
"add-note": "اضافة ملاحظة",
"edit-note": "Edit Note",
"no-notes": "No shared notes.",
"delete-note-confirm": "Are you sure you want to delete this flag note?",
"delete-flag-confirm": "Are you sure you want to delete this flag?",

View File

@@ -4,13 +4,13 @@
"buttons.close": "أغلق",
"403.title": "غير مسموح بالدخول",
"403.message": "يبدو أنك قد تعثرت على صفحة لا تمتلك الصلاحية للدخول إليها",
"403.login": "Perhaps you should <a class=\"alert-link\" href='%1/login'>try logging in</a>?",
"403.login": "ربما يجب عليك <a href='%1/login'>تسجل دخولك</a>.",
"404.title": "لم يتم العثور",
"404.message": "You seem to have stumbled upon a page that does not exist.<br/><div class=\"text-sm text-muted\">Return to the <a href='%1/'>home page</a>.</div>",
"404.message": "الصفحة غير موجودة. العودة لـ <a href='%1/'>الرئيسية</a>",
"500.title": "خطأ داخلي",
"500.message": "عفوا! يبدو وكأنه شيء ذهب على نحو خاطئ!",
"400.title": "طلب سيئ",
"400.message": "It looks like this link is malformed, please double-check and try again.<br/><div class=\"text-sm text-muted\">Return to the <a href='%1/'>home page</a>.</div>",
"400.message": "الرابط غير صحيح. رجاءًا تأكد من الرابط أو ارجع لـ <a href='%1/'>الرئيسية</a>",
"register": "تسجيل",
"login": "دخول",
"please_log_in": "الرجاء تسجيل الدخول",
@@ -20,7 +20,6 @@
"you_have_successfully_logged_in": "تم سجيل الدخول بنجاح",
"save_changes": "حفظ التغييرات",
"save": "حفظ",
"cancel": "Cancel",
"close": "أغلق",
"pagination": "الصفحات",
"pagination.out_of": "%1 من %2",
@@ -38,13 +37,9 @@
"header.notifications": "التنبيهات",
"header.search": "بحث",
"header.profile": "ملف",
"header.account": "Account",
"header.navigation": "الاستكشاف",
"header.manage": "Manage",
"header.drafts": "Drafts",
"notifications.loading": "تحميل التنبيهات",
"chats.loading": "تحميل الدردشات",
"drafts.loading": "Loading Drafts",
"motd.welcome": "مرحبا بكم في NodeBB، منصة المناقشة المستقبلية.",
"previouspage": "الصفحة السابقة",
"nextpage": "الصفحة التالية",
@@ -59,9 +54,7 @@
"users": "الأعضاء",
"topics": "المواضيع",
"posts": "المشاركات",
"x-posts": "<span class=\"formatted-number\">%1</span> posts",
"x-topics": "<span class=\"formatted-number\">%1</span> topics",
"x-reputation": "<span class=\"formatted-number\">%1</span> reputation",
"x-posts": "%1 posts",
"best": "الأفضل",
"controversial": "Controversial",
"votes": "Votes",
@@ -76,7 +69,6 @@
"reputation": "السمعة",
"lastpost": "Last post",
"firstpost": "First post",
"about": "About",
"read_more": "اقرأ المزيد",
"more": "المزيد",
"none": "None",
@@ -90,13 +82,11 @@
"user_posted_ago": "%1 كتب %2",
"guest_posted_ago": "كتب زائر %1",
"last_edited_by": "اخر تحرير بواسطة 1%",
"edited-timestamp": "Edited %1",
"norecentposts": "لاوجود لمشاركات جديدة",
"norecenttopics": "لاوجود لمواضيع جديدة",
"recentposts": "آخر المشاركات",
"recentips": "آخر عناوين ال IP التي سجلت الدخول",
"moderator_tools": "أدوات المشرف",
"status": "Status",
"online": "المتواجدون حاليًّا",
"away": "غير متواجد",
"dnd": "عدم الإزعاج",
@@ -132,9 +122,5 @@
"edited": "حُرِر",
"disabled": "معطل",
"select": "تحديد",
"copied": "Copied",
"user-search-prompt": "Type something here to find users...",
"hidden": "Hidden",
"sort": "Sort",
"actions": "Actions"
"user-search-prompt": "Type something here to find users..."
}

View File

@@ -1,7 +1,5 @@
{
"all-groups": "All groups",
"groups": "المجموعات",
"members": "Members",
"view_group": "معاينة المجموعة",
"owner": "مالك المجموعة",
"new_group": "أنشئ مجموعة جديدة",

View File

@@ -1,11 +1,7 @@
{
"chat.chatting_with": "Chat with",
"chat.placeholder": "Type chat message here, drag & drop images, press enter to send",
"chat.placeholder.mobile": "Type chat message here",
"chat.scroll-up-alert": "Go to most recent message",
"chat.usernames-and-x-others": "%1 & %2 others",
"chat.chat-with-usernames": "Chat with %1",
"chat.chat-with-usernames-and-x-others": "Chat with %1 & %2 others",
"chat.scroll-up-alert": "You are looking at older messages, click here to go to most recent message.",
"chat.send": "أرسل",
"chat.no_active": "لا يوجد لديك دردشات نشطة.",
"chat.user_typing": "%1 يكتب رسالة...",
@@ -46,7 +42,6 @@
"composer.compose": "اكتب",
"composer.show_preview": "عرض المعاينة",
"composer.hide_preview": "إخفاء المعاينة",
"composer.help": "Help",
"composer.user_said_in": "%1 كتب في %2",
"composer.user_said": "%1 كتب:",
"composer.discard": "هل أنت متأكد أنك تريد التخلي عن التغييرات؟",
@@ -69,11 +64,7 @@
"composer.schedule-date": "Date",
"composer.schedule-time": "Time",
"composer.cancel-scheduling": "Cancel Scheduling",
"composer.change-schedule-date": "Change Date",
"composer.set-schedule-date": "Set Date",
"composer.discard-all-drafts": "Discard all drafts",
"composer.no-drafts": "You have no drafts",
"composer.discard-draft-confirm": "Do you want to discard this draft?",
"bootbox.ok": "OK",
"bootbox.cancel": "إلغاء",
"bootbox.confirm": "تأكيد",

View File

@@ -49,7 +49,6 @@
"account/watched_categories": "%1's Watched Categories",
"account/bookmarks": "%1's Bookmarked Posts",
"account/settings": "خيارات المستخدم",
"account/settings-of": "Changing settings of %1",
"account/watched": "Topics watched by %1",
"account/ignored": "Topics ignored by %1",
"account/upvoted": "Posts upvoted by %1",
@@ -60,7 +59,7 @@
"account/uploads": "Uploads by %1",
"account/sessions": "Login Sessions",
"confirm": "تم التحقق من عنوان البريد الإلكتروني",
"maintenance.text": "%1 is currently undergoing maintenance.<br/>Please come back another time.",
"maintenance.text": "جاري صيانة %1. المرجو العودة لاحقًا.",
"maintenance.messageIntro": "بالإضافة إلى ذلك، قام مدبر النظام بترك هذه الرسالة:",
"throttled.text": "%1 is currently unavailable due to excessive load. Please come back another time."
}

View File

@@ -1,12 +1,8 @@
{
"post-queue": "Post Queue",
"no-queued-posts": "There are no posts in the post queue.",
"no-single-post": "The topic or post you are looking for is no longer in the queue. It has likely been approved or deleted already.",
"enabling-help": "To enable this feature, go to <a href=\"%1\">Settings &rarr; Post &rarr; Post Queue</a> and enable <strong>Post Queue</strong>.",
"back-to-list": "Back to Post Queue",
"description": "There are no posts in the post queue. <br> To enable this feature, go to <a href=\"%1\">Settings &rarr; Post &rarr; Post Queue</a> and enable <strong>Post Queue</strong>.",
"user": "User",
"when": "When",
"category": "Category",
"title": "Title",
"content": "Content",
@@ -23,7 +19,6 @@
"notify": "Notify",
"notify-user": "Notify User",
"confirm-reject": "Do you want to reject this post?",
"confirm-remove": "Do you want to remove this post?",
"bulk-actions": "Bulk Actions",
"accept-all": "Accept All",
"accept-selected": "Accept Selected",
@@ -31,10 +26,6 @@
"reject-all-confirm": "Do you want to reject all posts?",
"reject-selected": "Reject Selected",
"reject-selected-confirm": "Do you want to reject %1 selected posts?",
"remove-all": "Remove all",
"remove-all-confirm": "Do you want to remove all posts?",
"remove-selected": "Remove Selected",
"remove-selected-confirm": "Do you want to remove %1 selected posts?",
"bulk-accept-success": "%1 posts accepted",
"bulk-reject-success": "%1 posts rejected"
}

View File

@@ -7,5 +7,13 @@
"alltime": "دائمًا",
"no_recent_topics": "لايوجد مواضيع جديدة",
"no_popular_topics": "لا يوجد مواضيع شائعة",
"load-new-posts": "Load new posts"
"there-is-a-new-topic": "يوجد موضوع جديد",
"there-is-a-new-topic-and-a-new-post": "يوجد موضوع جديد و رد جديد",
"there-is-a-new-topic-and-new-posts": "يوجد موضوع جديد و %1 ردود جديدة ",
"there-are-new-topics": "يوجد %1 مواضيع جديدة",
"there-are-new-topics-and-a-new-post": "يوجد %1 مواضيع جديدة و رد جديد",
"there-are-new-topics-and-new-posts": "يوجد %1 مواضيع جديدة و %2 مشاركات جديدة",
"there-is-a-new-post": "يوجد مشاركة جديدة",
"there-are-new-posts": "يوجد %1 مشاركات جديدة",
"click-here-to-reload": "إضغط هنا لإعادة التحميل"
}

View File

@@ -1,6 +1,5 @@
{
"register": "تسجيل",
"already-have-account": "Already have an account?",
"cancel_registration": "إلغاء التسجيل",
"help.email": "افتراضيا، سيتم إخفاء بريدك الإلكتروني من العامة.",
"help.username_restrictions": "اسم مستخدم فريدة من نوعها بين 1% و 2% حرفا. بإمكان الآخرين مناداتك بـ @<span id='yourUsername'>اسم المستخدم</span>.",

View File

@@ -1,41 +1,21 @@
{
"type-to-search": "Type to search",
"results_matching": "%1 نتيجة (نتائج) موافقة لـ \"%2\", (%3 ثواني)",
"no-matches": "لم يتم العثور على نتائج.",
"advanced-search": "بحث متقدم",
"in": "في",
"in-titles": "In titles",
"in-titles-posts": "In titles and posts",
"in-posts": "In posts",
"in-categories": "In categories",
"in-users": "In users",
"in-tags": "In tags",
"categories": "Categories",
"all-categories": "All categories",
"categories-x": "Categories: %1",
"categories-watched-categories": "Categories: Watched categories",
"type-a-category": "Type a category",
"tags": "Tags",
"tags-x": "Tags: %1",
"type-a-tag": "Type a tag",
"titles": "العناوين",
"titles-posts": "العناوين والمشاركات",
"match-words": "Match words",
"match-all-words": "Match all words",
"match-any-word": "Match any word",
"all": "All",
"any": "Any",
"posted-by": "مشاركة من طرف",
"posted-by-usernames": "Posted by: %1",
"type-a-username": "Type a username",
"in-categories": "في الفئات",
"search-child-categories": "بحث في الفئات الفرعية",
"has-tags": "Has tags",
"reply-count": "عدد المشاركات",
"replies": "Replies",
"replies-atleast-count": "Replies: At least %1",
"replies-atmost-count": "Replies: At most %1",
"at-least": "على اﻷقل",
"at-most": "على اﻷكثر",
"relevance": "Relevance",
"time": "Time",
"post-time": "تاريخ المشاركة",
"votes": "Votes",
"newer-than": "أحدث من",
@@ -48,22 +28,7 @@
"three-months": "ثلاثة أشهر",
"six-months": "ستة أشهر",
"one-year": "عام",
"time-newer-than-86400": "Time: Newer than yesterday",
"time-older-than-86400": "Time: Older than yesterday",
"time-newer-than-604800": "Time: Newer than one week",
"time-older-than-604800": "Time: Older than one week",
"time-newer-than-1209600": "Time: Newer than two weeks",
"time-older-than-1209600": "Time: Older than two weeks",
"time-newer-than-2592000": "Time: Newer than one month",
"time-older-than-2592000": "Time: Older than one month",
"time-newer-than-7776000": "Time: Newer than three months",
"time-older-than-7776000": "Time: Older than three months",
"time-newer-than-15552000": "Time: Newer than six months",
"time-older-than-15552000": "Time: Older than six months",
"time-newer-than-31104000": "Time: Newer than one year",
"time-older-than-31104000": "Time: Older than one year",
"sort-by": "عرض حسب",
"sort": "Sort",
"last-reply-time": "تاريخ آخر رد",
"topic-title": "عنوان الموضوع",
"topic-votes": "Topic votes",
@@ -74,36 +39,11 @@
"category": "فئة",
"descending": "في ترتيب تنازلي",
"ascending": "في ترتيب تصاعدي",
"sort-by-relevance-desc": "Sort by: Relevance in descending order",
"sort-by-relevance-asc": "Sort by: Relevance in ascending order",
"sort-by-timestamp-desc": "Sort by: Post time in descending order",
"sort-by-timestamp-asc": "Sort by: Post time in ascending order",
"sort-by-votes-desc": "Sort by: Votes in descending order",
"sort-by-votes-asc": "Sort by: Votes in ascending order",
"sort-by-topic.lastposttime-desc": "Sort by: Last reply time in descending order",
"sort-by-topic.lastposttime-asc": "Sort by: Last reply time in ascending order",
"sort-by-topic.title-desc": "Sort by: Topic title in descending order",
"sort-by-topic.title-asc": "Sort by: Topic title in ascending order",
"sort-by-topic.postcount-desc": "Sort by: Number of replies in descending order",
"sort-by-topic.postcount-asc": "Sort by: Number of replies in ascending order",
"sort-by-topic.viewcount-desc": "Sort by: Number of views in descending order",
"sort-by-topic.viewcount-asc": "Sort by: Number of views in ascending order",
"sort-by-topic.votes-desc": "Sort by: Topic votes in descending order",
"sort-by-topic.votes-asc": "Sort by: Topic votes in ascending order",
"sort-by-topic.timestamp-desc": "Sort by: Topic start date in descending order",
"sort-by-topic.timestamp-asc": "Sort by: Topic start date in ascending order",
"sort-by-user.username-desc": "Sort by: Username in descending order",
"sort-by-user.username-asc": "Sort by: Username in ascending order",
"sort-by-category.name-desc": "Sort by: Category in descending order",
"sort-by-category.name-asc": "Sort by: Category in ascending order",
"save": "Save",
"save-preferences": "حفظ التفضيلات",
"clear-preferences": "ازالة التفضيلات",
"search-preferences-saved": "تم حفظ تفضيلات البحث",
"search-preferences-cleared": "تم ازالة تفضيلات البحث",
"show-results-as": "عرض النتائج كـ",
"show-results-as-topics": "Show results as topics",
"show-results-as-posts": "Show results as posts",
"see-more-results": "See more results (%1)",
"search-in-category": "Search in \"%1\""
}

View File

@@ -1,10 +0,0 @@
{
"sign-in-with-twitter": "تسجيل الدخول باستخدام تويتر",
"sign-up-with-twitter": "التسجيل باستخدام تويتر",
"sign-in-with-github": "تسجيل الدخول باستخدام جيت هب",
"sign-up-with-github": "التسجيل باستخدام جيت هب",
"sign-in-with-google": "تسجيل الدخول باستخدام قوقل",
"sign-up-with-google": "التسجيل باستخدام قوقل",
"log-in-with-facebook": "تسجيل الدخول باستخدام فيسبوك",
"continue-with-facebook": "التسجيل باستخدام فيسبوك"
}

View File

@@ -1,11 +1,8 @@
{
"all-tags": "All tags",
"no_tag_topics": "لا يوجد مواضيع بهذه الكلمة الدلالية.",
"no-tags-found": "No tags found",
"tags": "الكلمات الدلالية",
"enter_tags_here": "Enter tags here, between %1 and %2 characters each.",
"enter_tags_here_short": "أدخل الكلمات الدلالية...",
"no_tags": "لا يوجد كلمات دلالية بعد.",
"select_tags": "Select Tags",
"tag-whitelist": "Tag Whitelist"
"select_tags": "Select Tags"
}

View File

@@ -1,15 +0,0 @@
{
"skins": "Skins",
"collapse": "Collapse",
"expand": "Expand",
"login-register-to-search": "Login or register to search.",
"settings.title": "Theme settings",
"settings.enableQuickReply": "Enable quick reply",
"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.chatModals": "Enable chat modals"
}

View File

@@ -1,10 +0,0 @@
{
"settings.title": "Theme settings",
"settings.intro": "You can customise your theme settings here. Settings are stored on a per-device basis, so you are able to have different settings on different devices (phone, tablet, desktop, etc.)",
"settings.mobile-menu-side": "Switch which side each mobile menu is on",
"settings.autoHidingNavbar": "Automatically hide the navbar on scroll",
"settings.autoHidingNavbar-xs": "Very small screens (e.g. phones in portrait mode)",
"settings.autoHidingNavbar-sm": "Smaller screens (e.g. phones, some tablets)",
"settings.autoHidingNavbar-md": "Medium sized screens (e.g. tablets in landscape mode)",
"settings.autoHidingNavbar-lg": "Larger screens (e.g. desktop computers)"
}

View File

@@ -36,34 +36,19 @@
"scheduled": "Scheduled",
"moved": "منقول",
"moved-from": "Moved from %1",
"copy-code": "Copy Code",
"copy-ip": "Copy IP",
"ban-ip": "Ban IP",
"view-history": "Edit History",
"wrote-ago": "wrote <a href=\"%1\" class=\"timeago text-muted\" title=\"%2\"></a>",
"wrote-on": "wrote on <a href=\"%1\" class=\"timeago text-muted\" title=\"%2\"></a>",
"replied-to-user-ago": "replied to <a component=\"post/parent\" data-topid=\"%1\" href=\"%2\">%3</a> <a href=\"%4\" class=\"timeago text-muted\" title=\"%5\"></a>",
"replied-to-user-on": "replied to <a component=\"post/parent\" data-topid=\"%1\" href=\"%2\">%3</a> on <a hrf=\"%4\" class=\"timeago text-muted\" title=\"%5\"></a>",
"user-locked-topic-ago": "%1 locked this topic %2",
"user-locked-topic-on": "%1 locked this topic on %2",
"user-unlocked-topic-ago": "%1 unlocked this topic %2",
"user-unlocked-topic-on": "%1 unlocked this topic on %2",
"user-pinned-topic-ago": "%1 pinned this topic %2",
"user-pinned-topic-on": "%1 pinned this topic on %2",
"user-unpinned-topic-ago": "%1 unpinned this topic %2",
"user-unpinned-topic-on": "%1 unpinned this topic on %2",
"user-deleted-topic-ago": "%1 deleted this topic %2",
"user-deleted-topic-on": "%1 deleted this topic on %2",
"user-restored-topic-ago": "%1 restored this topic %2",
"user-restored-topic-on": "%1 restored this topic on %2",
"user-moved-topic-from-ago": "%1 moved this topic from %2 %3",
"user-moved-topic-from-on": "%1 moved this topic from %2 on %3",
"user-queued-post-ago": "%1 <a href=\"%2\">queued</a> post for approval %3",
"user-queued-post-on": "%1 <a href=\"%2\">queued</a> post for approval on %3",
"user-referenced-topic-ago": "%1 <a href=\"%2\">referenced</a> this topic %3",
"user-referenced-topic-on": "%1 <a href=\"%2\">referenced</a> this topic on %3",
"user-forked-topic-ago": "%1 <a href=\"%2\">forked</a> this topic %3",
"user-forked-topic-on": "%1 <a href=\"%2\">forked</a> this topic on %3",
"locked-by": "Locked by",
"unlocked-by": "Unlocked by",
"pinned-by": "Pinned by",
"unpinned-by": "Unpinned by",
"deleted-by": "Deleted by",
"restored-by": "Restored by",
"moved-from-by": "Moved from %1 by",
"queued-by": "Post queued for approval &rarr;",
"backlink": "Referenced by",
"forked-by": "Forked by",
"bookmark_instructions": "اضغط هنا للعودة لأخر مشاركة مقروءة في الموضوع",
"flag-post": "Flag this post",
"flag-user": "Flag this user",
@@ -102,7 +87,6 @@
"thread_tools.change_owner": "Change Owner",
"thread_tools.select_category": "Select Category",
"thread_tools.fork": "إنشاء فرع الموضوع",
"thread_tools.tag": "Tag Topic",
"thread_tools.delete": "حذف الموضوع",
"thread_tools.delete-posts": "مشاركات محذوفة",
"thread_tools.delete_confirm": "هل أنت متأكد أنك تريد حذف هذا الموضوع؟",
@@ -111,7 +95,7 @@
"thread_tools.purge": "تطهير الموضوع",
"thread_tools.purge_confirm": "هل أنت متأكد أنك تريد تطهير هذا الموضوع؟",
"thread_tools.merge_topics": "Merge Topics",
"thread_tools.merge": "Merge Topic",
"thread_tools.merge": "Merge",
"topic_move_success": "This topic will be moved to \"%1\" shortly. Click here to undo.",
"topic_move_multiple_success": "These topics will be moved to \"%1\" shortly. Click here to undo.",
"topic_move_all_success": "All topics will be moved to \"%1\" shortly. Click here to undo.",
@@ -137,7 +121,7 @@
"post_moved": "تم نقل المشاركة",
"fork_topic": "فرع الموضوع",
"enter-new-topic-title": "Enter new topic title",
"fork_topic_instruction": "Click the posts you want to fork, enter a title for the new topic and click fork topic",
"fork_topic_instruction": "إضغط على المشاركات التي تريد تفريعها",
"fork_no_pids": "لم تختر أي مشاركة",
"no-posts-selected": "No posts selected!",
"x-posts-selected": "%1 post(s) selected",
@@ -152,15 +136,12 @@
"merge-new-title-for-topic": "New title for topic",
"topic-id": "Topic ID",
"move_posts_instruction": "Click the posts you want to move then enter a topic ID or go to the target topic",
"move_topic_instruction": "Select the target category and then click move",
"change_owner_instruction": "Click the posts you want to assign to another user",
"composer.title_placeholder": "أدخل عنوان موضوعك هنا...",
"composer.handle_placeholder": "Enter your name/handle here",
"composer.hide": "Hide",
"composer.discard": "نبذ التغييرات",
"composer.submit": "حفظ",
"composer.additional-options": "Additional Options",
"composer.post-later": "Post Later",
"composer.schedule": "Schedule",
"composer.replying_to": "الرد على %1",
"composer.new_topic": "موضوع جديد",
@@ -203,7 +184,5 @@
"last-post": "Last post",
"go-to-my-next-post": "Go to my next post",
"no-more-next-post": "You don't have more posts in this topic",
"post-quick-reply": "Quick reply",
"navigator.index": "Post %1 of %2",
"navigator.unread": "%1 unread"
"post-quick-reply": "Post quick reply"
}

View File

@@ -1,6 +1,6 @@
{
"banned": "محظور",
"muted": "كتم ",
"muted": "Muted",
"offline": "غير متصل",
"deleted": "محذوف",
"username": "إسم المستخدم",
@@ -9,7 +9,7 @@
"email": "البريد الإلكتروني",
"confirm_email": "تأكيد عنوان البريد الإلكتروني",
"account_info": "معلومات الحساب",
"admin_actions_label": "الإجراءات الإدارية",
"admin_actions_label": "Administrative Actions",
"ban_account": "حظر الحساب",
"ban_account_confirm": "هل تريد حقاً حظر هاذا العضو؟",
"unban_account": "إزالة حظر الحساب",
@@ -24,7 +24,7 @@
"delete_account_content_confirm": "Are you sure you want to delete this account's content (posts/topics/uploads)? <br /><strong>This action is irreversible and you will not be able to recover any data</strong><br /><br />",
"delete_all_confirm": "Are you sure you want to delete this account and all of its content (posts/topics/uploads)? <br /><strong>This action is irreversible and you will not be able to recover any data</strong><br /><br />",
"account-deleted": "تم حذف الحساب",
"account-content-deleted": "تم حذف محتوى حساب",
"account-content-deleted": "Account content deleted",
"fullname": "الاسم الكامل",
"website": "الموقع الإلكتروني",
"location": "الموقع",
@@ -34,26 +34,25 @@
"profile": "الملف الشخصي",
"profile_views": "عدد المشاهدات",
"reputation": "السمعة",
"bookmarks": "المفضلات",
"watched_categories": "الأقسام المُتابعة",
"change_all": "غير الكل",
"bookmarks": "Bookmarks",
"watched_categories": "Watched categories",
"change_all": "Change All",
"watched": "متابع",
"ignored": "تم تجاهله",
"default-category-watch-state": "حالة مشاهدة اﻻقسام الافتراضية",
"default-category-watch-state": "Default category watch state",
"followers": "المتابعون",
"following": "يتابع",
"blocks": "الكتل",
"blocked-users": "Blocked users",
"block_toggle": "تبديل الكتلة",
"block_user": "أحظر المستخدم",
"unblock_user": "ألغ حظر المستخدم",
"blocks": "Blocks",
"block_toggle": "Toggle Block",
"block_user": "Block User",
"unblock_user": "Unblock User",
"aboutme": "معلومة عنك او السيرة الذاتية",
"signature": "توقيع",
"birthday": "عيد ميلاد",
"chat": "محادثة",
"chat_with": "متابعة الدردشة مع %1",
"new_chat_with": "بدء دردشة جديدة مع %1",
"flag-profile": "ضع علامة على الملف الشخصي",
"flag-profile": "Flag Profile",
"follow": "تابع",
"unfollow": "إلغاء المتابعة",
"more": "المزيد",
@@ -69,7 +68,6 @@
"upload_new_picture": "رفع صورة جديدة",
"upload_new_picture_from_url": "رفع صورة جديدة من رابط",
"current_password": "كلمة السر الحالية",
"new_password": "New Password",
"change_password": "تغيير كلمة السر",
"change_password_error": "كلمة سر غير صحيحة",
"change_password_error_wrong_current": "كلمة السر الحالية ليست صحيحة",
@@ -89,7 +87,7 @@
"remove_cover_picture_confirm": "هل تريد بالتأكيد إزالة صورة الغلاف؟",
"crop_picture": "إقتصاص الصورة",
"upload_cropped_picture": "إقتصاص ورفع",
"avatar-background-colour": "لون الخلفية للصورة الرمزية",
"avatar-background-colour": "Avatar background colour",
"settings": "خيارات",
"show_email": "أظهر بريدي الإلكتروني",
"show_fullname": "أظهر اسمي الكامل",
@@ -110,18 +108,16 @@
"has_no_ignored_topics": "هذا المستخدم لم يقم بتجاهل اية مواضيع حتى الآن.",
"has_no_upvoted_posts": "هذا المستخدم لم يقم بالتصويت للأعلى لأي مشاركة حتى الآن.",
"has_no_downvoted_posts": "هذا المستخدم لم يقم بالتصويت للأسفل لأي مشاركة حتى الآن.",
"has_no_controversial_posts": "هذا المستخدم ﻻيمتلك تصويت للأسفل لأي مشاركة حتى الآن.",
"has_no_blocks": "أنت لم تحظر اي مستخدم",
"has_no_controversial_posts": "This user does not have any downvoted posts yet.",
"has_no_blocks": "You have blocked no users.",
"email_hidden": "البريد الإلكتروني مخفي",
"hidden": "مخفي",
"paginate_description": "عرض المواضيع والردود موزعة على صفحات عوضاً عن التمرير اللانهائي.",
"topics_per_page": "المواضيع في كل صفحة",
"posts_per_page": "الردود في كل صفحة",
"category-topic-sort": "Category topic sort",
"topic-post-sort": "Topic post sort",
"max_items_per_page": "أقصى %1",
"acp_language": "لغة صفحة اﻻدارة",
"notifications": "التنبيهات",
"acp_language": "Admin Page Language",
"notifications": "Notifications",
"upvote-notif-freq": "معدل تكرار تنبيهات التصويت للأعلى",
"upvote-notif-freq.all": "كل التصويتات للأعلى",
"upvote-notif-freq.first": "First Per Post",
@@ -172,8 +168,6 @@
"info.moderation-note.success": "تم حفظ ملاحظة الإشراف",
"info.moderation-note.add": "إضافة ملاحظة",
"sessions.description": "This page allows you to view any active sessions on this forum and revoke them if necessary. You can revoke your own session by logging out of your account.",
"revoke-session": "Revoke Session",
"browser-version-on-platform": "%1 %2 on %3",
"consent.title": "Your Rights &amp; Consent",
"consent.lead": "This community forum collects and processes your personal information.",
"consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.<br /><br />We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights &amp; Consent page.<br /><br />If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.",
@@ -201,6 +195,5 @@
"emailUpdate.optional": "<strong>This field is optional</strong>. You are not obligated to provide your email address, but without a validated email you will not be able to recover your account or login with your email.",
"emailUpdate.required": "<strong>This field is required</strong>.",
"emailUpdate.change-instructions": "A confirmation email will be sent to the entered email address with a unique link. Accessing that link will confirm your ownership of the email address and it will become active on your account. At any time, you are able to update your email on file from within your account page.",
"emailUpdate.password-challenge": "Please enter your password in order to verify account ownership.",
"emailUpdate.pending": "Your email address has not yet been confirmed, but an email has been sent out requesting confirmation. If you wish to invalidate that request and send a new confirmation request, please fill in the form below."
"emailUpdate.password-challenge": "Please enter your password in order to verify account ownership."
}

View File

@@ -1,19 +1,18 @@
{
"all-users": "All Users",
"latest_users": "أحدث الأعضاء",
"top_posters": "اﻷكثر مشاركة",
"most_reputation": "أعلى سمعة",
"most_flags": "معظم الأعلام",
"most_flags": "Most Flags",
"search": "بحث",
"enter_username": "أدخل اسم مستخدم للبحث",
"search-user-for-chat": "Search for a user to start chat",
"search-user-for-chat": "ابحث عن مستخدم لبدء محادثة ",
"load_more": "حمل المزيد",
"users-found-search-took": "تم إيجاد %1 مستخدمـ(ين)! استغرق البحث %2 ثانية.",
"filter-by": "تصفية بحسب",
"filter-by": "Filter By",
"online-only": "المتصلون فقط",
"invite": "دعوة",
"prompt-email": "البريد الإلكتروني:",
"groups-to-join": "المجموعات التي سيتم الانضمام إليها عند قبول الدعوة:",
"prompt-email": "Emails:",
"groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "تم إرسال دعوة بالبريد الإلكتروني إلى %1",
"user_list": "قائمة اﻷعضاء",
"recent_topics": "أحدث المواضيع",

View File

@@ -4,6 +4,8 @@
"acp-title": "%1 | Контролен панел за администратори на NodeBB",
"settings-header-contents": "Съдържание",
"changes-saved": "Промените са запазени",
"changes-saved-message": "Промените Ви в настройките на NodeBB бяха запазени.",
"changes-not-saved": "Промените не са запазени",
"changes-not-saved-message": "Възникна проблем при запазването на промените Ви по NodeBB. (%1)"
}

View File

@@ -1,7 +1,7 @@
{
"custom-css": "Персонализиран CSS/SASS",
"custom-css.description": "Въведете своите собствени декларации на CSS/SASS. Те ще бъдат приложени след всички останали стилове.",
"custom-css.enable": "Включване на персонализиран CSS/SASS",
"custom-css": "Персонализиран CSS/LESS",
"custom-css.description": "Въведете своите собствени декларации на CSS/LESS, те ще бъдат приложени след всички останали стилове.",
"custom-css.enable": "Включване на персонализиран CSS/LESS",
"custom-js": "Персонализиран код на Javascript",
"custom-js.description": "Въведете свой собствен код на javascript тук. Той ще бъде изпълнен след като страницата се зареди напълно.",

View File

@@ -83,11 +83,8 @@
"back-to-dashboard": "Назад към таблото",
"details.no-users": "В избрания период не са се регистрирали нови потребители",
"details.no-topics": "В избрания период не са публикувани нови теми",
"details.no-searches": "В избрания период не са правени търсения",
"details.no-searches": "Все още не са правени търсения",
"details.no-logins": "В избрания период не са отчетени вписвания",
"details.logins-static": "NodeBB запазва данни за сесията в продължение на %1 дни, така че в следната таблица могат да се видят само последните активни сесии",
"details.logins-login-time": "Време на вписване",
"start": "Начало",
"end": "Край",
"filter": "Филтриране"
"details.logins-login-time": "Време на вписване"
}

View File

@@ -8,9 +8,9 @@
"containers.none": "Няма",
"container.well": "Кладенец",
"container.jumbotron": "Джъмботрон",
"container.card": "Карта",
"container.card-header": "Заглавна част на карта",
"container.card-body": "Основна част на карта",
"container.panel": "Панел",
"container.panel-header": "Заглавна част на панел",
"container.panel-body": "Основна част на панел",
"container.alert": "Предупреждение",
"alert.confirm-delete": "Наистина ли искате да изтриете джаджата?",
@@ -26,7 +26,5 @@
"container.placeholder": "Завлачете и пуснете контейнер или въведете HTML тук.",
"show-to-groups": "Показване на групите",
"hide-from-groups": "Скриване от групите",
"start-date": "Начална дата",
"end-date": "Крайна дата",
"hide-on-mobile": "Скриване на мобилни устройства"
}

View File

@@ -39,5 +39,6 @@
"revert": "Отмяна",
"edit.no-users-found": "Няма намерени потребители",
"edit.confirm-remove-user": "Наистина ли искате да премахнете този потребител?"
"edit.confirm-remove-user": "Наистина ли искате да премахнете този потребител?",
"edit.save-success": "Промените са запазени!"
}

View File

@@ -49,6 +49,7 @@
"alert.confirm-moderate": "<strong>Наистина ли искате да дадете правомощието за модериране на тази потребителска група?</strong> Тази група е публична и всеки може свободно да се присъедини към нея.",
"alert.confirm-admins-mods": "<strong>Наистина ли искате да дадете правото „Администратори и модератори“ на този потребител/група?</strong> Потребителите с това право могат да променят правомощията на други групи, <em>включително да им дават правото на супер администратори</em>",
"alert.confirm-save": "Моля, потвърдете желанието си да запазите тези правомощия",
"alert.saved": "Промените по правомощията са запазени и приложени",
"alert.confirm-discard": "Наистина ли искате да отхвърлите промените по правомощията?",
"alert.discarded": "Промените по правомощията са отхвърлени",
"alert.confirm-copyToAll": "Наистина ли искате да приложите този набор от <strong>%1</strong> към <strong>всички категории</strong>?",

View File

@@ -1,27 +1,16 @@
{
"tokens": "Идентификатор",
"tokens": "Кодове",
"settings": "Настройки",
"lead-text": "На тази страница можете да настроите достъпа до ППИ за писане в NodeBB.",
"intro": "По подразбиране ППИ за писане удостоверява потребителите чрез бисквитката им за сесията, но NodeBB поддържа и удостоверяване чрез метода „Bearer“, използвайки идентификаторите от тази страница.",
"warning": "<strong>Внимавайте</strong> отнасяйте се с идентификаторите като с пароли. Ако някой се сдобие с тях, може да получи достъп до акаунта Ви.",
"intro": "По подразбиране ППИ за писане удостоверява потребителите чрез бисквитката им за сесията, но NodeBB поддържа и удостоверяване чрез метода „Bearer“, използвайки кодовете от тази страница.",
"docs": "Щракнете тук за достъп до пълната документация на ППИ",
"require-https": "Ползването на ППИ да работи само чрез HTTPS",
"require-https-caveat": "<strong>Забележка</strong>: В някои случаи, когато се ползват програми за балансиране на натоварването, е възможно заявките към NodeBB да се препращат чрез HTTP тогава тази настройка трябва да остане изключена.",
"uid": "Потребителски ИД",
"token": "Идентификатор",
"uid-help-text": "Посочете потребителски ИД, който да бъде свързан с този код. Ако ИД е <code>0</code>, това ще се счита за <em>главен</em> код, който може да приема идентичността на всеки от другите потребители чрез параметъра <code>_uid</code>",
"description": "Описание",
"last-seen": "Последно видян",
"created": "Създаден",
"create-token": "Създаване на идентификатор",
"update-token": "Промяна на идентификатора",
"master-token": "Главен идентификатор",
"last-seen-never": "Този ключ не е използван никога.",
"no-description": "Няма описание.",
"actions": "Действия",
"delete-confirm": "Наистина ли искате да изтриете този идентификатор? След това няма да може да го възстановите.",
"roll-confirm": "Наистина ли искате да пресъздадете този идентификатор? Старият ще бъде премахнат незабавно и няма да може да бъде възстановен."
"token-on-save": "Кодът ще бъде създаден след като данните бъдат запазени"
}

View File

@@ -42,7 +42,7 @@
"subscriptions.hour-help": "Моля, въведете число, представляващо часа, в който да се разпращат е-писма с подготвеното резюме (напр.. <code>0</code> за полунощ, <code>17</code> за 5 следобед). Имайте предвид, че този час е според часовата зона на сървъра и може да не съвпада с часовника на системата Ви.<br /> Приблизителното време на сървъра е: <span id=\"serverTime\"></span><br /> Изпращането на следващия ежедневен бюлетин е планирано за <span id=\"nextDigestTime\"></span>",
"notifications.remove-images": "Премахване на изображенията от известията по е-поща",
"require-email-address": "Новите потребители задължително трябва да предоставят е-поща",
"require-email-address-warning": "По подразбиране потребителите могат да не въвеждат адрес на е-поща, като оставят полето празно. Ако включите това, новите потребители задължително ще трябва да предоставят <strong>и потвърдят</strong> е-поща, за да могат да се регистрират и да получат достъп до форума. <strong>Това не означава, че потребителят ще въведе истинска е-поща, нито че тя ще е негова.</strong>",
"require-email-address-warning": "По подразбиране потребителите могат да не въвеждат адрес на е-поща, като оставят полето празно. Ако включите това, те задължително ще трябва да предоставят е-поща, за да могат да се регистрират. <strong>Това не означава, че потребителят ще въведе съществуваща е-поща, нито че тя ще е негова.</strong>",
"send-validation-email": "Изпращане на е-писма за потвърждение, когато бъде добавена или променена е-поща",
"include-unverified-emails": "Изпращане на е-писма към получатели, които не са потвърдили изрично е-пощата си",
"include-unverified-warning": "За потребителите, които имат свързана е-поща с регистрацията си, тя се смята за потвърдена. Но има ситуации, в които това не е така (например при ползване на регистрация от друга система, но и в други случаи), <strong>Включете тази настройка на собствен риск</strong> &ndash; изпращането на е-писма към непотвърдени адреси може да нарушава определени местни закони против нежеланата поща.",

View File

@@ -12,7 +12,7 @@
"groups": "Групи:",
"open-new-window": "Отваряне в нов прозорец",
"dropdown": "Падащо меню",
"dropdown-placeholder": "Въведете елементите на падащото меню по-долу. Пример: <br/>&lt;li&gt;&lt;a class=&quot;dropdown-item&quot; href&#x3D;&quot;https://myforum.com&quot;&gt;Връзка 1&lt;/a&gt;&lt;/li&gt;",
"dropdown-placeholder": "Въведете елементите на падащото меню по-долу. Пример: <br/>&lt;li&gt;&lt;a href&#x3D;&quot;https://myforum.com&quot;&gt;Връзка 1&lt;/a&gt;&lt;/li&gt;",
"btn.delete": "Изтриване",
"btn.disable": "Изключване",

View File

@@ -29,8 +29,6 @@
"session-time-days": "Дни",
"session-time-seconds": "Секунди",
"session-time-help": "Тези стойности се използват за определяне на дължината на периода, през който потребителите ще останат вписани в системата, ако поставят отметка в полето „Запомнете ме“ при вписването. Имайте предвид, че ще се използва само една от тези стойности. Ако няма стойност за <i>секунди</i>, ще се използва стойността за <i>дни</i>. Ако няма и стойност за <i>дни</i>, то ще се използва стандартната стойност от <i>14 дни</i>.",
"session-duration": "Продължителност на сесията, ако „Запомнете ме“ не е отбелязано (в секунди)",
"session-duration-help": "По подразбиране (или ако стойността е <code>0</code>) потребителят ще остане вписан докато не изтече сесията му (обикновено докато браузърът или разделът не бъде затворен). Използвайте тази настройка, ако искате да определите точно време (в секунди), след което сесията на потребителя да бъде прекратена.",
"online-cutoff": "Брой минути, след които потребителят ще бъде смятан за неактивен",
"online-cutoff-help": "Ако потребителят не извършва никакви действия през този период, ще бъде смятан за неактивен и няма да получава известия в реално време.",
"registration": "Регистриране на потребителите",

View File

@@ -62,7 +62,6 @@
"no-user": "Потребителят не съществува",
"no-teaser": "Резюмето не съществува",
"no-flag": "Докладът не съществува",
"no-chat-room": "Стаята за разговори не съществува",
"no-privileges": "Нямате достатъчно права за това действие.",
"category-disabled": "Категорията е изключена",
"topic-locked": "Темата е заключена",
@@ -89,10 +88,8 @@
"category-not-selected": "Не е избрана категория.",
"too-many-posts": "Можете да публикувате веднъж на %1 секунда/и моля, изчакайте малко, преди да опитате да публикувате отново",
"too-many-posts-newbie": "Като нов потребител, Вие можете да публикувате веднъж на %1 секунда/и, докато не натрупате %2 репутация моля, изчакайте малко, преди да опитате да публикувате отново",
"already-posting": "В момента публикувате",
"tag-too-short": "Моля, въведете по-дълъг етикет. Етикетите трябва да съдържат поне %1 символ(а)",
"tag-too-long": "Моля, въведете по-кратък етикет. Етикетите трябва да съдържат не повече от %1 символ(а)",
"tag-not-allowed": "Етикетът не е разрешен",
"not-enough-tags": "Недостатъчно етикети. Темите трябва да имат поне %1 етикет(а)",
"too-many-tags": "Твърде много етикети. Темите не могат да имат повече от %1 етикет(а)",
"cant-use-system-tag": "Не можете да използвате този системен етикет.",
@@ -102,7 +99,6 @@
"guest-upload-disabled": "Качването не е разрешено за гости",
"cors-error": "Изображението не може да бъде качено поради неправилни настройки на CORS",
"upload-ratelimit-reached": "Качили сте твърде много файлове наведнъж. Моля, опитайте отново по-късно.",
"upload-error-fallback": "Изображението не може да бъде качено %1",
"scheduling-to-past": "Изберете дата в бъдещето.",
"invalid-schedule-date": "Въведете правилна дата и час.",
"cant-pin-scheduled": "Насрочените теми не могат да бъдат закачени или разкачени.",
@@ -136,8 +132,6 @@
"group-already-requested": "Вашата заявка за членство вече е била изпратена",
"group-join-disabled": "В момента не можете да се присъедините към тази група",
"group-leave-disabled": "В момента не можете да напуснете тази група",
"group-user-not-pending": "Потребителят няма изчакваща заявка за присъединяване към тази група.",
"gorup-user-not-invited": "Потребителят не е бил поканен да се присъедини към тази група.",
"post-already-deleted": "Тази публикация вече е изтрита",
"post-already-restored": "Тази публикация вече е възстановена",
"topic-already-deleted": "Тази тема вече е изтрита",
@@ -161,9 +155,6 @@
"chat-deleted-already": "Това съобщение вече е изтрито.",
"chat-restored-already": "Това съобщение вече е възстановено.",
"chat-room-does-not-exist": "Стаята за разговори не съществува.",
"cant-add-users-to-chat-room": "Към стаята за разговори не могат да бъдат добавяни потребители.",
"cant-remove-users-from-chat-room": "От стаята за разговори не могат да бъдат премахвани потребители.",
"chat-room-name-too-long": "Името на стаята за разговори е твърде дълго.",
"already-voting-for-this-post": "Вече сте дали глас за тази публикация.",
"reputation-system-disabled": "Системата за репутация е изключена.",
"downvoting-disabled": "Отрицателното гласуване е изключено",
@@ -219,7 +210,7 @@
"topic-event-unrecognized": "Събитието „%1“ на темата е неизвестно",
"cant-set-child-as-parent": "Дъщерна категория не може да се зададе като базова такава",
"cant-set-self-as-parent": "Категорията не може да се зададе като базова категория на себе си",
"api.master-token-no-uid": "Беше получен главен идентификатор без съответстващо поле `_uid` в тялото на заявката",
"api.master-token-no-uid": "Беше получен главен код без съответстващо поле `_uid` в тялото на заявката",
"api.400": "Нещо не беше наред с данните в заявката, които подадохте.",
"api.401": "Няма намерена сесия. Моля, впишете се и опитайте отново.",
"api.403": "Нямате право да изпълните тази команда",
@@ -228,6 +219,5 @@
"api.429": "Направили сте твърде много заявки. Моля, опитайте отново по-късно.",
"api.500": "При обработката на заявката Ви възникна неочаквана грешка.",
"api.501": "Пътят, който се опитвате да извикате, все още не съществува. Моля, опитайте отново утре.",
"api.503": "Пътят, който се опитвате да извикате, в момента не е достъпен, поради настройките на сървъра.",
"api.reauth-required": "Ресурсът, който се опитвате да достъпите, изисква (повторно) удостоверяване."
"api.503": "Пътят, който се опитвате да извикате, в момента не е достъпен, поради настройките на сървъра."
}

View File

@@ -3,27 +3,25 @@
"reports": "Доклади",
"first-reported": "Първо докладване",
"no-flags": "Ура! Няма намерени доклади.",
"x-flags-found": "Намерени доклади: %1.",
"assignee": "Назначен",
"update": "Обновяване",
"updated": "Обновено",
"resolved": "Разрешен",
"target-purged": "Съдържанието, за което се отнася този доклад, е било изтрито и вече не е налично.",
"target-aboutme-empty": "Този потребител не е попълнил нищо в секцията за себе си.",
"graph-label": "Дневни етикети",
"quick-filters": "Бързи филтри",
"filter-active": "В този списък с доклади има един или повече филтри",
"filter-reset": "Премахване на филтрите",
"filters": "Настройки на филтрите",
"filter-reporterId": "Докладвал",
"filter-targetUid": "Докладван",
"filter-reporterId": "Потр. ид. на докладвалия",
"filter-targetUid": "Потр. ид. на докладвания",
"filter-type": "Вид на доклада",
"filter-type-all": "Всичко",
"filter-type-post": "Публикация",
"filter-type-user": "Потребител",
"filter-state": "Състояние",
"filter-assignee": "Назначен",
"filter-assignee": "Потр. ид. на назначения",
"filter-cid": "Категория",
"filter-quick-mine": "Назначени на мен",
"filter-cid-all": "Всички категории",
@@ -47,7 +45,6 @@
"notes": "Бележки към доклада",
"add-note": "Добавяне на бележка",
"edit-note": "Редактиране на бележката",
"no-notes": "Няма споделени бележки.",
"delete-note-confirm": "Наистина ли искате да изтриете тази бележка към доклада?",
"delete-flag-confirm": "Наистина ли искате да изтриете този доклад?",

View File

@@ -4,13 +4,13 @@
"buttons.close": "Затваряне",
"403.title": "Достъпът е отказан",
"403.message": "Изглежда сте посетили страница, до която нямате достъп.",
"403.login": "Може би трябва да <a class=\"alert-link\" href='%1/login'>опитате да се впишете</a>?",
"403.login": "Може би трябва да <a href='%1/login'>опитате да се впишете</a>?",
"404.title": "Не е намерена",
"404.message": "Изглежда сте се опитали да посетите страница, която не съществува.<br/><div class=\"text-sm text-muted\">Върнете се към <a href='%1/'>началната страница</a>.</div>",
"404.message": "Изглежда сте се опитали да посетите страница, която не съществува. Върнете се към <a href='%1/'>началната страница</a>.",
"500.title": "Вътрешна грешка.",
"500.message": "Опа! Изглежда нещо се обърка!",
"400.title": "Грешна заявка.",
"400.message": "Тази връзка изглежда повредена. Моля, проверете я и опитайте отново.<br/><div class=\"text-sm text-muted\">Или се върнете към <a href='%1/'>началната страница</a>.</div>",
"400.message": "Тази връзка изглежда повредена. Моля, проверете я и опитайте отново. В противен случай се върнете на <a href='%1/'>началната страница</a>.",
"register": "Регистрация",
"login": "Вписване",
"please_log_in": "Моля, впишете се",
@@ -20,7 +20,6 @@
"you_have_successfully_logged_in": "Вие влязохте успешно",
"save_changes": "Запазване на промените",
"save": "Запазване",
"cancel": "Отказ",
"close": "Затваряне",
"pagination": "Странициране",
"pagination.out_of": "%1 от %2",
@@ -38,13 +37,9 @@
"header.notifications": "Известия",
"header.search": "Търсене",
"header.profile": "Профил",
"header.account": "Акаунт",
"header.navigation": "Навигация",
"header.manage": "Управление",
"header.drafts": "Чернови",
"notifications.loading": "Зареждане на известията",
"chats.loading": "Зареждане на разговорите",
"drafts.loading": "Зареждане на черновите",
"motd.welcome": "Добре дошли в NodeBB, системата за дискусии на бъдещето.",
"previouspage": "Предишна страница",
"nextpage": "Следваща страница",
@@ -59,9 +54,7 @@
"users": "Потребители",
"topics": "Теми",
"posts": "Публ.",
"x-posts": "<span class=\"formatted-number\">%1</span> публикации",
"x-topics": "<span class=\"formatted-number\">%1</span> теми",
"x-reputation": "<span class=\"formatted-number\">%1</span> репутация",
"x-posts": "%1 публикации",
"best": "Най-добри",
"controversial": "Противоречиви",
"votes": "Гласове",
@@ -76,7 +69,6 @@
"reputation": "Репутация",
"lastpost": "Последна публикация",
"firstpost": "Първа публикация",
"about": "Относно",
"read_more": "още",
"more": "Още",
"none": "Нищо",
@@ -90,13 +82,11 @@
"user_posted_ago": "%1 публикува %2",
"guest_posted_ago": "гост публикува %1",
"last_edited_by": "последно редактирано от %1",
"edited-timestamp": "Редактирано %1",
"norecentposts": "Няма скорошни публикации",
"norecenttopics": "Няма скорошни теми",
"recentposts": "Скорошни публикации",
"recentips": "Наскоро ползвани IP адреси",
"moderator_tools": "Модераторски инструменти",
"status": "Състояние",
"online": "На линия",
"away": "Отсъстващ",
"dnd": "Отпочиващ",
@@ -132,9 +122,5 @@
"edited": "Редактирано",
"disabled": "Изключено",
"select": "Избиране",
"copied": "Копирано",
"user-search-prompt": "Започнете да пишете, за да потърсите потребител…",
"hidden": "Скрито",
"sort": "Подреждане",
"actions": "Действия"
"user-search-prompt": "Започнете да пишете, за да потърсите потребител…"
}

View File

@@ -1,7 +1,5 @@
{
"all-groups": "Всички групи",
"groups": "Групи",
"members": "Членове",
"view_group": "Преглед на групата",
"owner": "Собственик на групата",
"new_group": "Създаване на нова група",

View File

@@ -1,11 +1,7 @@
{
"chat.chatting_with": "Разговор с",
"chat.placeholder": "Въведете съобщение тук или пуснете снимки и натиснете Ентер за изпращане",
"chat.placeholder.mobile": "Въведете съобщение тук",
"chat.scroll-up-alert": "Go to most recent message",
"chat.usernames-and-x-others": "%1 и %2 други",
"chat.chat-with-usernames": "Разговор с %1",
"chat.chat-with-usernames-and-x-others": "Разговор с %1 и %2 други",
"chat.scroll-up-alert": "В момента разглеждате по-стари съобщения. Щракнете тук, за да се прехвърлите към най-новото съобщение.",
"chat.send": "Изпращане",
"chat.no_active": "Нямате текущи разговори.",
"chat.user_typing": "%1 пише...",
@@ -46,7 +42,6 @@
"composer.compose": "Писане",
"composer.show_preview": "Показване на прегледа",
"composer.hide_preview": "Скриване на прегледа",
"composer.help": "Помощ",
"composer.user_said_in": "%1 каза в %2:",
"composer.user_said": "%1 каза:",
"composer.discard": "Наистина ли искате да отхвърлите тази публикация?",
@@ -69,11 +64,7 @@
"composer.schedule-date": "Дата",
"composer.schedule-time": "Час",
"composer.cancel-scheduling": "Отмяна на насрочването",
"composer.change-schedule-date": "Промяна на датата",
"composer.set-schedule-date": "Задаване на дата",
"composer.discard-all-drafts": "Изтриване на всички чернови",
"composer.no-drafts": "Нямате никакви чернови",
"composer.discard-draft-confirm": "Искате ли да изтриете тази чернова?",
"bootbox.ok": "Добре",
"bootbox.cancel": "Отказ",
"bootbox.confirm": "Потвърждаване",

View File

@@ -49,7 +49,6 @@
"account/watched_categories": "Следените категории на %1",
"account/bookmarks": "Отметнатите публикации на %1",
"account/settings": "Потребителски настройки",
"account/settings-of": "Променят се настройките на %1",
"account/watched": "Теми, следени от %1",
"account/ignored": "Теми, пренебрегвани от %1",
"account/upvoted": "Публикации, получили положителен глас от %1",
@@ -60,7 +59,7 @@
"account/uploads": "Качвания от %1",
"account/sessions": "Сесии на вписване",
"confirm": "Е-пощата е потвърдена",
"maintenance.text": "%1 в момента е в профилактика.<br/>Моля, върнете се по-късно.",
"maintenance.text": "%1 в момента е в профилактика. Моля, върнете се по-късно.",
"maintenance.messageIntro": "В допълнение, администраторът е оставил това съобщение:",
"throttled.text": "%1 в момента е недостъпен, поради прекомерно натоварване. Моля, върнете се отново по-късно."
}

View File

@@ -1,12 +1,8 @@
{
"post-queue": "Опашка за публикации",
"no-queued-posts": "В опашката за публикации няма нищо.",
"no-single-post": "Темата или публикацията, която търсите, вече не се намира в опашката. Вероятно или е била одобрена, или изтрита.",
"enabling-help": "За да включите тази функционалност, идете в <a href=\"%1\">Настройки &rarr; Публикуване &rarr; Опашка за публикации</a> и включете <strong>Опашката за публикации</strong>.",
"back-to-list": "Назад към Опашката за публикации",
"description": "Няма публикации в опашката. <br> За да включите тази функционалност, идете в <a href=\"%1\">Настройки &rarr; Публикуване &rarr; Опашка за публикации</a> и включете <strong>Опашката за публикации</strong>.",
"user": "Потребител",
"when": "Кога",
"category": "Категория",
"title": "Заглавие",
"content": "Съдържание",
@@ -23,7 +19,6 @@
"notify": "Известяване",
"notify-user": "Известяване на потребителя",
"confirm-reject": "Искате ли да отхвърлите тази публикация?",
"confirm-remove": "Искате ли да премахнете тази публикация?",
"bulk-actions": "Групови действия",
"accept-all": "Приемане на всички",
"accept-selected": "Приемане на избраните",
@@ -31,10 +26,6 @@
"reject-all-confirm": "Наистина ли искате да отхвърлите всички публикации?",
"reject-selected": "Отхвърляне на избраните",
"reject-selected-confirm": "Наистина ли искате да отхвърлите %1 избрани публикации?",
"remove-all": "Премахване на всички",
"remove-all-confirm": "Наистина ли искате да премахнете всички публикации?",
"remove-selected": "Премахване на избраните",
"remove-selected-confirm": "Наистина ли искате да премахнете избраните %1 публикации?",
"bulk-accept-success": "Одобрени публикации: %1",
"bulk-reject-success": "Отхвърлени публикации: %1"
}

View File

@@ -7,5 +7,13 @@
"alltime": "Цялото време",
"no_recent_topics": "Няма скорошни теми.",
"no_popular_topics": "Няма популярни теми.",
"load-new-posts": "Зареждане на новите публикации"
"there-is-a-new-topic": "Има нова тема.",
"there-is-a-new-topic-and-a-new-post": "Има нова тема и нова публикация.",
"there-is-a-new-topic-and-new-posts": "Има нова тема и %1 нови публикации.",
"there-are-new-topics": "Има %1 нови теми.",
"there-are-new-topics-and-a-new-post": "Има %1 нови теми и нова публикация.",
"there-are-new-topics-and-new-posts": "Има %1 нови теми и %2 нови публикации.",
"there-is-a-new-post": "Има нова публикация",
"there-are-new-posts": "Има %1 нови публикации.",
"click-here-to-reload": "Натиснете тук, за да презаредите."
}

View File

@@ -1,6 +1,5 @@
{
"register": "Регистрация",
"already-have-account": "Вече имате акаунт?",
"cancel_registration": "Отказ от регистриране",
"help.email": "По подразбиране, Вашата е-поща ще бъде скрита за останалите.",
"help.username_restrictions": "Уникално потребителско име с дължина между %1 и %2 символа. Другите ще могат да Ви споменават чрез @<span id='yourUsername'>потребител</span>.",

View File

@@ -1,41 +1,21 @@
{
"type-to-search": "Пишете тук за търсене",
"results_matching": "%1 резултат(а), отговарящи на „%2“, (%3 секунди)",
"no-matches": "Няма съвпадения",
"advanced-search": "Разширено търсене",
"in": "В",
"in-titles": "В заглавията",
"in-titles-posts": "В заглавията и публикациите",
"in-posts": "В публикациите",
"in-categories": "В категориите",
"in-users": "В потребителите",
"in-tags": "В етикетите",
"categories": "Категории",
"all-categories": "Всички категории",
"categories-x": "Категории: %1",
"categories-watched-categories": "Категории: Следени категории",
"type-a-category": "Въведете категория",
"tags": "Етикети",
"tags-x": "Етикети: %1",
"type-a-tag": "Въведете етикет",
"match-words": "Съвпадение на думите",
"match-all-words": "Съвпадение на всички думи",
"match-any-word": "Съвпадение на някоя дума",
"titles": "Заглавия",
"titles-posts": "Заглавия и публикации",
"match-words": "Съвпадащи думи",
"all": "Всички",
"any": "Която и да е",
"posted-by": "Публикувано от",
"posted-by-usernames": "Публикувано от: %1",
"type-a-username": "Въведете потребителско име",
"in-categories": "В категории",
"search-child-categories": "Претърсване на подкатегориите",
"has-tags": "Има етикети",
"reply-count": "Брой на отговорите",
"replies": "Отговори",
"replies-atleast-count": "Отговори: Поне %1",
"replies-atmost-count": "Отговори: Не повече от %1",
"at-least": "Поне",
"at-most": "Най-много",
"relevance": "Уместност",
"time": "Време",
"post-time": "Време на публикуване",
"votes": "Гласове",
"newer-than": "По-нови от",
@@ -48,22 +28,7 @@
"three-months": "Три месеца",
"six-months": "Шест месеца",
"one-year": "Една година",
"time-newer-than-86400": "Време: От вчера досега",
"time-older-than-86400": "Време: Преди вчера",
"time-newer-than-604800": "Време: По-нови от една седмица",
"time-older-than-604800": "Време: По-стари от една седмица",
"time-newer-than-1209600": "Време: По-нови от две седмици",
"time-older-than-1209600": "Време: По-стари от две седмици",
"time-newer-than-2592000": "Време: По-нови от един месец",
"time-older-than-2592000": "Време: По-стари от един месец",
"time-newer-than-7776000": "Време: По-нови от три месеца",
"time-older-than-7776000": "Време: По-стари от три месеца",
"time-newer-than-15552000": "Време: По-нови от шест месеца",
"time-older-than-15552000": "Време: По-стари от шест месеца",
"time-newer-than-31104000": "Време: По-нови от една година",
"time-older-than-31104000": "Време: По-стари от една година",
"sort-by": "Подреждане по",
"sort": "Подреждане",
"last-reply-time": "Време на последния отговор",
"topic-title": "Заглавие на темата",
"topic-votes": "Гласувания за темата",
@@ -74,36 +39,11 @@
"category": "Категория",
"descending": "В низходящ ред",
"ascending": "Във възходящ ред",
"sort-by-relevance-desc": "Подреждане по: Съответствие, в низходящ ред",
"sort-by-relevance-asc": "Подреждане по: Съответствие, във възходящ ред",
"sort-by-timestamp-desc": "Подреждане по: Време на публикуване, в низходящ ред",
"sort-by-timestamp-asc": "Подреждане по: Време на публикуване, във възходящ ред",
"sort-by-votes-desc": "Подреждане по: Брой гласове, в низходящ ред",
"sort-by-votes-asc": "Подреждане по: Брой гласове, във възходящ ред",
"sort-by-topic.lastposttime-desc": "Подреждане по: Време на последния отговор, в низходящ ред",
"sort-by-topic.lastposttime-asc": "Подреждане по: Време на последния отговор, във възходящ ред",
"sort-by-topic.title-desc": "Подреждане по: Заглавие на темата, в низходящ ред",
"sort-by-topic.title-asc": "Подреждане по: Заглавие на темата, във възходящ ред",
"sort-by-topic.postcount-desc": "Подреждане по: Брой отговори, в низходящ ред",
"sort-by-topic.postcount-asc": "Подреждане по: Брой отговори, във възходящ ред",
"sort-by-topic.viewcount-desc": "Подреждане по: Брой преглеждания, в низходящ ред",
"sort-by-topic.viewcount-asc": "Подреждане по: Брой преглеждания, във възходящ ред",
"sort-by-topic.votes-desc": "Подреждане по: Брой гласове за темата, в низходящ ред",
"sort-by-topic.votes-asc": "Подреждане по: Брой гласове за темата, във възходящ ред",
"sort-by-topic.timestamp-desc": "Подреждане по: Начална дата на темата, в низходящ ред",
"sort-by-topic.timestamp-asc": "Подреждане по: Начална дата на темата, във възходящ ред",
"sort-by-user.username-desc": "Подреждане по: Потребителско име, в низходящ ред",
"sort-by-user.username-asc": "Подреждане по: Потребителско име, във възходящ ред",
"sort-by-category.name-desc": "Подреждане по: Категория, в низходящ ред",
"sort-by-category.name-asc": "Подреждане по: Категория, във възходящ ред",
"save": "Запазване",
"save-preferences": "Запазване на предпочитанията",
"clear-preferences": "Изчистване на предпочитанията",
"search-preferences-saved": "Предпочитанията за търсене бяха запазени",
"search-preferences-cleared": "Предпочитанията за търсене бяха изчистени",
"show-results-as": "Показване на резултатите като",
"show-results-as-topics": "Показване на резултатите като теми",
"show-results-as-posts": "Показване на резултатите като публикации",
"see-more-results": "Показване на още резултати (%1)",
"search-in-category": "Търсене в „%1“"
}

View File

@@ -1,10 +0,0 @@
{
"sign-in-with-twitter": "Вписване с Twitter",
"sign-up-with-twitter": "Регистриране с Twitter",
"sign-in-with-github": "Вписване с Github",
"sign-up-with-github": "Регистриране с Github",
"sign-in-with-google": "Вписване с Google",
"sign-up-with-google": "Регистриране с Google",
"log-in-with-facebook": "Вписване с Facebook",
"continue-with-facebook": "Продължаване с Facebook"
}

View File

@@ -1,11 +1,8 @@
{
"all-tags": "Всички етикети",
"no_tag_topics": "Няма теми с този етикет.",
"no-tags-found": "Няма намерени етикети",
"tags": "Етикети",
"enter_tags_here": "Тук въведете етикети, всеки между %1 и %2 знака.",
"enter_tags_here_short": "Въведете етикети...",
"no_tags": "Все още няма етикети.",
"select_tags": "Изберете етикети",
"tag-whitelist": "Списък от разрешени етикети"
"select_tags": "Изберете етикети"
}

View File

@@ -1,15 +0,0 @@
{
"skins": "Облици",
"collapse": "Свиване",
"expand": "Разгъване",
"login-register-to-search": "Впишете се или се регистрирайте, за да можете да търсите.",
"settings.title": "Настройки на темата",
"settings.enableQuickReply": "Включване на бързите отговори",
"settings.centerHeaderElements": "Центриране на заглавните елементи",
"settings.mobileTopicTeasers": "Показване на резюмета на темите на мобилни устройства",
"settings.stickyToolbar": "Статична лента с инструменти",
"settings.stickyToolbar.help": "Лентата с инструменти в страниците с теми и категории ще стои винаги в горния край на страницата",
"settings.autohideBottombar": "Автоматично скриване на долната лента",
"settings.autohideBottombar.help": "В изгледа за мобилни устройства долната лента ще се скрива, когато страницата се превърта надолу",
"settings.chatModals": "Включване на прозорците за разговори"
}

View File

@@ -1,10 +0,0 @@
{
"settings.title": "Настройки на темата",
"settings.intro": "Тук може да промените настройките на темата. Тези настройки се съхраняват отделно на всяко устройство, така че може да имате различни настройки на различните си устройства (телефон, таблет, настолен компютър и т.н.)",
"settings.mobile-menu-side": "Превключване на страната, от която да бъде всяко меню на мобилно устройство",
"settings.autoHidingNavbar": "Автоматично скриване на навигационната лента при превъртане",
"settings.autoHidingNavbar-xs": "Много малки екрани (напр. телефон в портретна ориентация)",
"settings.autoHidingNavbar-sm": "По-малки екрани (напр. телефони, някои таблети)",
"settings.autoHidingNavbar-md": "Средно големи екрани (напр. таблети в пейзажна ориентация)",
"settings.autoHidingNavbar-lg": "По-големи екрани (напр. лаптопи и настолни компютри)"
}

View File

@@ -36,34 +36,19 @@
"scheduled": "Насрочена",
"moved": "Преместена",
"moved-from": "Преместена от %1",
"copy-code": "Копиране на кода",
"copy-ip": "Копиране на IP адреса",
"ban-ip": "Блокиране на IP адреса",
"view-history": "История на редакциите",
"wrote-ago": "писа <a href=\"%1\" class=\"timeago text-muted\" title=\"%2\"></a>",
"wrote-on": "писа на <a href=\"%1\" class=\"timeago text-muted\" title=\"%2\"></a>",
"replied-to-user-ago": "отговори на <a component=\"post/parent\" data-topid=\"%1\" href=\"%2\">%3</a> <a href=\"%4\" class=\"timeago text-muted\" title=\"%5\"></a>",
"replied-to-user-on": "отговори на <a component=\"post/parent\" data-topid=\"%1\" href=\"%2\">%3</a> на <a hrf=\"%4\" class=\"timeago text-muted\" title=\"%5\"></a>",
"user-locked-topic-ago": "%1 заключи тази тема %2",
"user-locked-topic-on": "%1 заключи тази тема на %2",
"user-unlocked-topic-ago": "%1 отключи тази тема %2",
"user-unlocked-topic-on": "%1 отключи тази тема на %2",
"user-pinned-topic-ago": "%1 закачи тази тема %2",
"user-pinned-topic-on": "%1 закачи тази тема на %2",
"user-unpinned-topic-ago": "%1 откачи тази тема %2",
"user-unpinned-topic-on": "%1 откачи тази тема на %2",
"user-deleted-topic-ago": "%1 изтри тази тема %2",
"user-deleted-topic-on": "%1 изтри тази тема на %2",
"user-restored-topic-ago": "%1 възстанови тази тема %2",
"user-restored-topic-on": "%1 възстанови тази тема на %2",
"user-moved-topic-from-ago": "%1 премести тази тема от %2 %3",
"user-moved-topic-from-on": "%1 премести тази тема от %2 на %3",
"user-queued-post-ago": "%1 добави тази публикация в <a href=\"%2\">опашката за одобрение</a> %3",
"user-queued-post-on": "%1 добави тази публикация в <a href=\"%2\">опашката</a> за одобрение на %3",
"user-referenced-topic-ago": "%1 <a href=\"%2\">направи препратка</a> към тази тема %3",
"user-referenced-topic-on": "%1 <a href=\"%2\">направи препратка</a> към тази тема на %3",
"user-forked-topic-ago": "%1 <a href=\"%2\">раздели</a> тази тема %3",
"user-forked-topic-on": "%1 <a href=\"%2\">раздели</a> тази тема на %3",
"locked-by": "Заключена от",
"unlocked-by": "Отключена от",
"pinned-by": "Закачена от",
"unpinned-by": "Откачена от",
"deleted-by": "Изтрита от",
"restored-by": "Възстановена от",
"moved-from-by": "Преместена от %1 от",
"queued-by": "Публикацията е добавена в опашката за одобрение &rarr;",
"backlink": "Спомената от",
"forked-by": "Разделена от",
"bookmark_instructions": "Щракнете тук, за да се върнете към последно прочетената публикация в тази тема.",
"flag-post": "Докладване на тази публикация",
"flag-user": "Докладване на този потребител",
@@ -102,7 +87,6 @@
"thread_tools.change_owner": "Промяна на собственика",
"thread_tools.select_category": "Избиране на категория",
"thread_tools.fork": "Разделяне на темата",
"thread_tools.tag": "Поставяне на етикет на темата",
"thread_tools.delete": "Изтриване на темата",
"thread_tools.delete-posts": "Изтриване на публикациите",
"thread_tools.delete_confirm": "Наистина ли искате да изтриете тази тема?",
@@ -111,7 +95,7 @@
"thread_tools.purge": "Изчистване на темата",
"thread_tools.purge_confirm": "Наистина ли искате да изчистите тази тема?",
"thread_tools.merge_topics": "Сливане на темите",
"thread_tools.merge": "Сливане на темата",
"thread_tools.merge": "Сливане",
"topic_move_success": "Темата ще бъде преместена в „%1“ след малко. Натиснете тук, за да отмените преместването.",
"topic_move_multiple_success": "Темите ще бъдат преместени в „%1“ след малко. Натиснете тук, за да отмените преместването.",
"topic_move_all_success": "Всички теми ще бъдат преместени в „%1“ след малко. Натиснете тук, за да отмените преместването.",
@@ -137,7 +121,7 @@
"post_moved": "Публикацията беше преместена!",
"fork_topic": "Разделяне на темата",
"enter-new-topic-title": "Въведете заглавието на новата тема",
"fork_topic_instruction": "Щракнете върху публикациите, които искате да разделите, въведете име за новата тема, и натиснете „Разделяне на темата“",
"fork_topic_instruction": "Натиснете публикациите, които искате да отделите",
"fork_no_pids": "Няма избрани публикации!",
"no-posts-selected": "Няма избрани публикации!",
"x-posts-selected": "Избрани публикации: %1",
@@ -152,15 +136,12 @@
"merge-new-title-for-topic": "Ново заглавие за темата",
"topic-id": "Ид. на темата",
"move_posts_instruction": "Щракнете върху публикациите, които искате да преместите, а след това въведете ид. на тема или отидете в целевата тема",
"move_topic_instruction": "Изберете целевата категория и натиснете „Преместване“",
"change_owner_instruction": "Натиснете публикациите, които искате да прехвърлите на друг потребител",
"composer.title_placeholder": "Въведете заглавието на темата си тук...",
"composer.handle_placeholder": "Въведете името тук",
"composer.hide": "Скриване",
"composer.discard": "Отхвърляне",
"composer.submit": "Публикуване",
"composer.additional-options": "Допълнителни настройки",
"composer.post-later": "Публикуване по-късно",
"composer.schedule": "Насрочване",
"composer.replying_to": "Отговор на %1",
"composer.new_topic": "Нова тема",
@@ -203,7 +184,5 @@
"last-post": "Последна публикация",
"go-to-my-next-post": "Към следващата ми публикация",
"no-more-next-post": "Нямате повече публикации в тази тема",
"post-quick-reply": "Бърз отговор",
"navigator.index": "Публикация %1 от %2",
"navigator.unread": "%1 непрочетени"
"post-quick-reply": "Пускане на бърза публикация"
}

View File

@@ -43,7 +43,6 @@
"followers": "Последователи",
"following": "Следва",
"blocks": "Блокира",
"blocked-users": "Блокирани потребители",
"block_toggle": "Превключване на блокирането",
"block_user": "Блокиране на потребителя",
"unblock_user": "Отблокиране на потребителя",
@@ -69,7 +68,6 @@
"upload_new_picture": "Качване на нова снимка",
"upload_new_picture_from_url": "Качване на нова снимка от адрес",
"current_password": "Текуща парола",
"new_password": "Нова парола",
"change_password": "Промяна на паролата",
"change_password_error": "Грешна парола!",
"change_password_error_wrong_current": "Текущата Ви парола е грешна!",
@@ -117,8 +115,6 @@
"paginate_description": "Разделяне на темите и публикациите на страници, вместо да се превърта безкрайно",
"topics_per_page": "Теми на страница",
"posts_per_page": "Публикации на страница",
"category-topic-sort": "Подреждане на темите в категория",
"topic-post-sort": "Подреждане на публикациите в тема",
"max_items_per_page": "Най-много %1",
"acp_language": "Език на администраторската страница",
"notifications": "Известия",
@@ -172,8 +168,6 @@
"info.moderation-note.success": "Модераторската бележка е запазена",
"info.moderation-note.add": "Добавяне на бележка",
"sessions.description": "На тази страница можете да видите активните си сесии на този форум и да ги анулирате, ако желаете. Можете да анулирате текущата си сесия, като се отпишете от акаунта си.",
"revoke-session": "Анулиране на сесията",
"browser-version-on-platform": "%1 %2 на %3",
"consent.title": "Вашите права и съгласие",
"consent.lead": "Този обществен форум събира и обработва лична информация.",
"consent.intro": "Използваме тази информация, само за да персонализираме взаимодействието Ви с форума, както и за да свържем публикациите Ви с Вашия потребителски акаунт. По време на регистрацията ще трябва да въведете потребителско име и е-поща, но ако искате, можете да предоставите и допълнителна информация, за да завършите потребителския си профил в уеб сайта.<br /><br />Ние съхраняваме тази информация докато съществува потребителският Ви акаунт. Във всеки един момент можете да оттеглите съгласието си за това, като изтриете акаунта си. Във всеки един момент можете да изискате копие на въведеното от Вас в уеб сайт, чрез страницата за „Права и съгласие“.<br /><br />Ако имате въпроси или притеснения, можете да се свържете с екипа от администратори на форума.",
@@ -201,6 +195,5 @@
"emailUpdate.optional": "<strong>Това поле не е задължително</strong>. Не сте длъжен/на да предоставяте адрес на е-поща, но без проверена е-поща, няма да можете да възстановите акаунта си в случай на проблем, нито ще можете да се вписвате с е-пощата си.",
"emailUpdate.required": "<strong>Това поле е задължително</strong>.",
"emailUpdate.change-instructions": "Ще Ви изпратим е-писмо за потвърждение на посочената е-поща, което ще съдържа уникална връзка. Щом последвате тази връзка, притежанието Ви на тази е-поща ще бъде потвърдено и тя ще бъде свързана с акаунта Ви. Ще можете да промените тази е-поща по всяко време, от страницата на акаунта си.",
"emailUpdate.password-challenge": "Въведете паролата си, за да потвърдите, че акаунтът е Ваш.",
"emailUpdate.pending": "Вашата е-поща все още не е била потвърдена, въпреки че до нея вече е било изпратено е-писмо за потвърждение. Ако искате да го анулирате и да заявите ново, попълнете формуляра по-долу."
"emailUpdate.password-challenge": "Въведете паролата си, за да потвърдите, че акаунтът е Ваш."
}

View File

@@ -1,12 +1,11 @@
{
"all-users": "Всички потребители",
"latest_users": "Последни потребители",
"top_posters": "С най-много публикации",
"most_reputation": "С най-много репутация",
"most_flags": "С най-много доклади",
"search": "Търсене",
"enter_username": "Въведете потребителско име, което да потърсите",
"search-user-for-chat": "Search for a user to start chat",
"search-user-for-chat": "Потърсете потребител, с когото да започнете разговор",
"load_more": "Зареждане на още",
"users-found-search-took": "Намерени са %1 потребител(и)! Търсенето отне %2 секунди.",
"filter-by": "Филтриране",

View File

@@ -4,6 +4,8 @@
"acp-title": "%1 | NodeBB এডমিন কন্ট্রোল প্যানেল",
"settings-header-contents": "কনটেন্টস",
"changes-saved": "Changes Saved",
"changes-saved-message": "Your changes to the NodeBB configuration have been saved.",
"changes-not-saved": "Changes Not Saved",
"changes-not-saved-message": "NodeBB encountered a problem saving your changes. (%1)"
}

View File

@@ -1,7 +1,7 @@
{
"custom-css": "Custom CSS/SASS",
"custom-css.description": "Enter your own CSS/SASS declarations here, which will be applied after all other styles.",
"custom-css.enable": "Enable Custom CSS/SASS",
"custom-css": "Custom CSS/LESS",
"custom-css.description": "Enter your own CSS/LESS declarations here, which will be applied after all other styles.",
"custom-css.enable": "Enable Custom CSS/LESS",
"custom-js": "Custom Javascript",
"custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.",

View File

@@ -83,11 +83,8 @@
"back-to-dashboard": "Back to Dashboard",
"details.no-users": "No users have joined within the selected timeframe",
"details.no-topics": "No topics have been posted within the selected timeframe",
"details.no-searches": "No searches have been made within the selected timeframe",
"details.no-searches": "No searches have been made yet",
"details.no-logins": "No logins have been recorded within the selected timeframe",
"details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions",
"details.logins-login-time": "Login Time",
"start": "Start",
"end": "End",
"filter": "Filter"
"details.logins-login-time": "Login Time"
}

View File

@@ -8,9 +8,9 @@
"containers.none": "None",
"container.well": "Well",
"container.jumbotron": "Jumbotron",
"container.card": "Card",
"container.card-header": "Card Header",
"container.card-body": "Card Body",
"container.panel": "Panel",
"container.panel-header": "Panel Header",
"container.panel-body": "Panel Body",
"container.alert": "Alert",
"alert.confirm-delete": "Are you sure you wish to delete this widget?",
@@ -26,7 +26,5 @@
"container.placeholder": "Drag and drop a container or enter HTML here.",
"show-to-groups": "Show to groups",
"hide-from-groups": "Hide from groups",
"start-date": "Start date",
"end-date": "End date",
"hide-on-mobile": "Hide on mobile"
}

View File

@@ -39,5 +39,6 @@
"revert": "Revert",
"edit.no-users-found": "No Users Found",
"edit.confirm-remove-user": "Are you sure you want to remove this user?"
"edit.confirm-remove-user": "Are you sure you want to remove this user?",
"edit.save-success": "Changes saved!"
}

View File

@@ -49,6 +49,7 @@
"alert.confirm-moderate": "<strong>Are you sure you wish to grant the moderation privilege to this user group?</strong> This group is public, and any users can join at will.",
"alert.confirm-admins-mods": "<strong>Are you sure you wish to grant the &quot;Admins &amp; Mods&quot; privilege to this user/group?</strong> Users with this privilege are able to promote and demote other users into privileged positions, <em>including super administrator</em>",
"alert.confirm-save": "Please confirm your intention to save these privileges",
"alert.saved": "Privilege changes saved and applied",
"alert.confirm-discard": "Are you sure you wish to discard your privilege changes?",
"alert.discarded": "Privilege changes discarded",
"alert.confirm-copyToAll": "Are you sure you wish to apply this set of <strong>%1</strong> to <strong>all categories</strong>?",

View File

@@ -3,25 +3,14 @@
"settings": "Settings",
"lead-text": "From this page you can configure access to the Write API in NodeBB.",
"intro": "By default, the Write API authenticates users based on their session cookie, but NodeBB also supports Bearer authentication via tokens generated via this page.",
"warning": "<strong>Be advised</strong> — treat tokens like passwords. If they are leaked, your account should be considered compromised.",
"docs": "Click here to access the full API specification",
"require-https": "Require API usage via HTTPS only",
"require-https-caveat": "<strong>Note</strong>: Some installations involving load balancers may proxy their requests to NodeBB using HTTP, in which case this option should remain disabled.",
"uid": "User ID",
"token": "Token",
"uid-help-text": "Specify a User ID to associate with this token. If the user ID is <code>0</code>, it will be considered a <em>master</em> token, which can assume the identity of other users based on the <code>_uid</code> parameter",
"description": "Description",
"last-seen": "Last seen",
"created": "Created",
"create-token": "Create Token",
"update-token": "Update Token",
"master-token": "Master token",
"last-seen-never": "This key has never been used.",
"no-description": "No description specified.",
"actions": "Actions",
"delete-confirm": "Are you sure you wish to delete this token? It will not be recoverable.",
"roll-confirm": "Are you sure you wish to regenerate this token? The old token will be immediately revoked and will not be recoverable."
"token-on-save": "Token will be generated once form is saved"
}

View File

@@ -42,7 +42,7 @@
"subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. <code>0</code> for midnight, <code>17</code> for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.<br /> The approximate server time is: <span id=\"serverTime\"></span><br /> The next daily digest is scheduled to be sent <span id=\"nextDigestTime\"></span>",
"notifications.remove-images": "Remove images from email notifications",
"require-email-address": "Require new users to specify an email address",
"require-email-address-warning": "By default, users can opt-out of entering an email address by leaving the field blank. Enabling this option means new users will have to enter <strong>and confirm</strong> an email address in order to proceed with registration and subsequent access to the forum. <strong>It does not ensure user will enter a real email address, nor even an address they own.</strong>",
"require-email-address-warning": "By default, users can opt-out of entering an email address by leaving the field blank. Enabling this option means they have to enter an email address in order to proceed with registration. <strong>It does not ensure user will enter a real email address, nor even an address they own.</strong>",
"send-validation-email": "Send validation emails when an email is added or changed",
"include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails",
"include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). <strong>Enable this setting at your own risk</strong> &ndash; sending emails to unverified addresses may be a violation of regional anti-spam laws.",

View File

@@ -12,7 +12,7 @@
"groups": "Groups:",
"open-new-window": "Open in a new window",
"dropdown": "Dropdown",
"dropdown-placeholder": "Place your dropdown menu items below, ie: <br/>&lt;li&gt;&lt;a class=&quot;dropdown-item&quot; href&#x3D;&quot;https://myforum.com&quot;&gt;Link 1&lt;/a&gt;&lt;/li&gt;",
"dropdown-placeholder": "Place your dropdown menu items below, ie: <br/>&lt;li&gt;&lt;a href&#x3D;&quot;https://myforum.com&quot;&gt;Link 1&lt;/a&gt;&lt;/li&gt;",
"btn.delete": "Delete",
"btn.disable": "Disable",

View File

@@ -29,8 +29,6 @@
"session-time-days": "Days",
"session-time-seconds": "Seconds",
"session-time-help": "These values are used to govern how long a user stays logged in when they check &quot;Remember Me&quot; on login. Note that only one of these values will be used. If there is no <i>seconds</i> value we fall back to <i>days</i>. If there is no <i>days</i> value we default to <i>14 days</i>.",
"session-duration": "Session length if \"Remember Me\" is not checked (seconds)",
"session-duration-help": "By default — or if set to <code>0</code> — a user will stay logged in for the duration of the session (e.g. however long the browser window/tab remains open). Set this value to explicitly invalidate the session after the specified number of seconds.",
"online-cutoff": "Minutes after user is considered inactive",
"online-cutoff-help": "If user performs no actions for this duration, they are considered inactive and they do not receive realtime updates.",
"registration": "User Registration",

View File

@@ -62,7 +62,6 @@
"no-user": "এই নামে কোন সদস্য নেই",
"no-teaser": "টিজারটি খুজে পাওয়া যায় নি",
"no-flag": "Flag does not exist",
"no-chat-room": "Chat room does not exist",
"no-privileges": "এই কাজটির জন্য আপনার পর্যাপ্ত অধিকার নেই",
"category-disabled": "বিভাগটি নিষ্ক্রিয়",
"topic-locked": "টপিক বন্ধ",
@@ -89,10 +88,8 @@
"category-not-selected": "Category not selected.",
"too-many-posts": "You can only post once every %1 second(s) - please wait before posting again",
"too-many-posts-newbie": "As a new user, you can only post once every %1 second(s) until you have earned %2 reputation - please wait before posting again",
"already-posting": "You are already posting",
"tag-too-short": "Please enter a longer tag. Tags should contain at least %1 character(s)",
"tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 character(s)",
"tag-not-allowed": "Tag not allowed",
"not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)",
"too-many-tags": "Too many tags. Topics can't have more than %1 tag(s)",
"cant-use-system-tag": "You can not use this system tag.",
@@ -102,7 +99,6 @@
"guest-upload-disabled": "Guest uploading has been disabled",
"cors-error": "Unable to upload image due to misconfigured CORS",
"upload-ratelimit-reached": "You have uploaded too many files at one time. Please try again later.",
"upload-error-fallback": "Unable to upload image — %1",
"scheduling-to-past": "Please select a date in the future.",
"invalid-schedule-date": "Please enter a valid date and time.",
"cant-pin-scheduled": "Scheduled topics cannot be (un)pinned.",
@@ -136,8 +132,6 @@
"group-already-requested": "Your membership request has already been submitted",
"group-join-disabled": "You are not able to join this group at this time",
"group-leave-disabled": "You are not able to leave this group at this time",
"group-user-not-pending": "User does not have a pending request to join this group.",
"gorup-user-not-invited": "User has not been invited to join this group.",
"post-already-deleted": "এই পোস্টটি ইতিমধ্যে ডিলিট করা হয়ে গিয়েছে",
"post-already-restored": "এই পোষ্টটি ইতিমধ্যে পুনরোদ্ধার করা হয়েছে",
"topic-already-deleted": "এই টপিকটি ইতিমধ্যে ডিলিট করা হয়েছে",
@@ -161,9 +155,6 @@
"chat-deleted-already": "This chat message has already been deleted.",
"chat-restored-already": "This chat message has already been restored.",
"chat-room-does-not-exist": "Chat room does not exist.",
"cant-add-users-to-chat-room": "Can't add users to chat room.",
"cant-remove-users-from-chat-room": "Can't remove users from chat room.",
"chat-room-name-too-long": "Chat room name too long.",
"already-voting-for-this-post": "You have already voted for this post.",
"reputation-system-disabled": "সম্মাননা ব্যাবস্থা নিস্ক্রীয় রাখা হয়েছে",
"downvoting-disabled": "ঋণাত্মক ভোট নিস্ক্রীয় রাখা হয়েছে।",
@@ -228,6 +219,5 @@
"api.429": "You have made too many requests, please try again later",
"api.500": "An unexpected error was encountered while attempting to service your request.",
"api.501": "The route you are trying to call is not implemented yet, please try again tomorrow",
"api.503": "The route you are trying to call is not currently available due to a server configuration",
"api.reauth-required": "The resource you are trying to access requires (re-)authentication."
"api.503": "The route you are trying to call is not currently available due to a server configuration"
}

View File

@@ -3,27 +3,25 @@
"reports": "Reports",
"first-reported": "First Reported",
"no-flags": "Hooray! No flags found.",
"x-flags-found": "%1 flag(s) found.",
"assignee": "Assignee",
"update": "Update",
"updated": "Updated",
"resolved": "Resolved",
"target-purged": "The content this flag referred to has been purged and is no longer available.",
"target-aboutme-empty": "This user has no &quot;About Me&quot; set.",
"graph-label": "Daily Flags",
"quick-filters": "Quick Filters",
"filter-active": "There are one or more filters active in this list of flags",
"filter-reset": "Remove Filters",
"filters": "Filter Options",
"filter-reporterId": "Reporter",
"filter-targetUid": "Reportee",
"filter-reporterId": "Reporter UID",
"filter-targetUid": "Flagged UID",
"filter-type": "Flag Type",
"filter-type-all": "All Content",
"filter-type-post": "Post",
"filter-type-user": "User",
"filter-state": "State",
"filter-assignee": "Assignee",
"filter-assignee": "Assignee UID",
"filter-cid": "Category",
"filter-quick-mine": "Assigned to me",
"filter-cid-all": "All categories",
@@ -47,7 +45,6 @@
"notes": "Flag Notes",
"add-note": "Add Note",
"edit-note": "Edit Note",
"no-notes": "No shared notes.",
"delete-note-confirm": "Are you sure you want to delete this flag note?",
"delete-flag-confirm": "Are you sure you want to delete this flag?",

View File

@@ -4,13 +4,13 @@
"buttons.close": "বন্ধ",
"403.title": "প্রবেশাধিকার প্রত্যাখ্যাত",
"403.message": "আপনি এমন জায়গাতে যেতে চাচ্ছেন যেখানে আপনার প্রবেশাধিকার নেই।",
"403.login": "Perhaps you should <a class=\"alert-link\" href='%1/login'>try logging in</a>?",
"403.login": "সম্ভবত আপনার <a href='%1/login'>লগইন করা</a> উচিত",
"404.title": "পাওয়া যায়নি",
"404.message": "You seem to have stumbled upon a page that does not exist.<br/><div class=\"text-sm text-muted\">Return to the <a href='%1/'>home page</a>.</div>",
"404.message": "আপনি এমন জায়গাতে যেতে চাচ্ছেন যার কোন অস্তিত্ব নাই। <a href='%1/'>প্রথম পাতায়</a> ফিরে যান ।",
"500.title": "Internal Error.",
"500.message": "ওহো! কিছু ভুল হয়েছে মনে হচ্ছে!",
"400.title": "ভুল ঠিকানা",
"400.message": "It looks like this link is malformed, please double-check and try again.<br/><div class=\"text-sm text-muted\">Return to the <a href='%1/'>home page</a>.</div>",
"400.message": "It looks like this link is malformed, please double-check and try again. Otherwise, return to the <a href='%1/'>home page</a>.",
"register": "নিবন্ধন",
"login": "প্রবেশ",
"please_log_in": "অনুগ্রহ করে প্রবেশ করুন",
@@ -20,7 +20,6 @@
"you_have_successfully_logged_in": "আপনি সফলভাবে প্রবেশ করেছেন",
"save_changes": "পরিবর্তনগুলি সঞ্চয় করুন",
"save": "Save",
"cancel": "Cancel",
"close": "বন্ধ",
"pagination": "পাতা নং",
"pagination.out_of": "%2 এর মাঝে %1",
@@ -38,13 +37,9 @@
"header.notifications": "বিজ্ঞপ্তি",
"header.search": "অনুসন্ধান",
"header.profile": "প্রোফাইল",
"header.account": "Account",
"header.navigation": "Navigation",
"header.manage": "Manage",
"header.drafts": "Drafts",
"notifications.loading": "বিজ্ঞপ্তিগুলি লোড হচ্ছে",
"chats.loading": "কথোপকথনগুলি লোড হচ্ছে ",
"drafts.loading": "Loading Drafts",
"motd.welcome": "ভবিষ্যতের আলোচনার প্লাটফর্ম, NodeBB তে স্বাগতম।",
"previouspage": "আগের পাতা",
"nextpage": "পরের পাতা",
@@ -59,9 +54,7 @@
"users": "ব্যবহারকারীগণ",
"topics": "টপিক",
"posts": "পোস্টগুলি",
"x-posts": "<span class=\"formatted-number\">%1</span> posts",
"x-topics": "<span class=\"formatted-number\">%1</span> topics",
"x-reputation": "<span class=\"formatted-number\">%1</span> reputation",
"x-posts": "%1 posts",
"best": "Best",
"controversial": "Controversial",
"votes": "Votes",
@@ -76,7 +69,6 @@
"reputation": "সন্মাননা",
"lastpost": "Last post",
"firstpost": "First post",
"about": "About",
"read_more": "আরো পড়ুন",
"more": "আরো...",
"none": "None",
@@ -90,13 +82,11 @@
"user_posted_ago": "%1 পোস্ট করেছেন %2",
"guest_posted_ago": "অতিথি পোস্ট করেছেন %1",
"last_edited_by": "last edited by %1",
"edited-timestamp": "Edited %1",
"norecentposts": "কোনও সাম্প্রতিক পোস্ট নেই",
"norecenttopics": "কোনও সাম্প্রতিক টপিক নেই",
"recentposts": "সাম্প্রতিক পোস্ট",
"recentips": "সাম্প্রতিক প্রবেশকৃত আইপি সমুহ",
"moderator_tools": "Moderator Tools",
"status": "Status",
"online": "অনলাইন",
"away": "দূরে",
"dnd": "Do not disturb",
@@ -132,9 +122,5 @@
"edited": "Edited",
"disabled": "Disabled",
"select": "Select",
"copied": "Copied",
"user-search-prompt": "Type something here to find users...",
"hidden": "Hidden",
"sort": "Sort",
"actions": "Actions"
"user-search-prompt": "Type something here to find users..."
}

View File

@@ -1,7 +1,5 @@
{
"all-groups": "All groups",
"groups": "গ্রুপসমূহ",
"members": "Members",
"view_group": "গ্রুপ দেখুন",
"owner": "Group Owner",
"new_group": "Create New Group",

View File

@@ -1,11 +1,7 @@
{
"chat.chatting_with": "Chat with",
"chat.placeholder": "Type chat message here, drag & drop images, press enter to send",
"chat.placeholder.mobile": "Type chat message here",
"chat.scroll-up-alert": "Go to most recent message",
"chat.usernames-and-x-others": "%1 & %2 others",
"chat.chat-with-usernames": "Chat with %1",
"chat.chat-with-usernames-and-x-others": "Chat with %1 & %2 others",
"chat.scroll-up-alert": "You are looking at older messages, click here to go to most recent message.",
"chat.send": "প্রেরন করুন",
"chat.no_active": "আপনার কোন সচল কথোপকথন নেই",
"chat.user_typing": "%1 লিখছেন",
@@ -46,7 +42,6 @@
"composer.compose": "Compose",
"composer.show_preview": "Show Preview",
"composer.hide_preview": "Hide Preview",
"composer.help": "Help",
"composer.user_said_in": "%1 বলেছেন %2:",
"composer.user_said": "%1 বলেছেনঃ",
"composer.discard": "আপনি কি নিশ্চিত যে আপনি এই পোস্ট বাতিল করতে ইচ্ছুক?",
@@ -69,11 +64,7 @@
"composer.schedule-date": "Date",
"composer.schedule-time": "Time",
"composer.cancel-scheduling": "Cancel Scheduling",
"composer.change-schedule-date": "Change Date",
"composer.set-schedule-date": "Set Date",
"composer.discard-all-drafts": "Discard all drafts",
"composer.no-drafts": "You have no drafts",
"composer.discard-draft-confirm": "Do you want to discard this draft?",
"bootbox.ok": "OK",
"bootbox.cancel": "Cancel",
"bootbox.confirm": "Confirm",

View File

@@ -49,7 +49,6 @@
"account/watched_categories": "%1's Watched Categories",
"account/bookmarks": "%1's Bookmarked Posts",
"account/settings": "User Settings",
"account/settings-of": "Changing settings of %1",
"account/watched": "Topics watched by %1",
"account/ignored": "Topics ignored by %1",
"account/upvoted": "Posts upvoted by %1",
@@ -60,7 +59,7 @@
"account/uploads": "Uploads by %1",
"account/sessions": "Login Sessions",
"confirm": "Email Confirmed",
"maintenance.text": "%1 is currently undergoing maintenance.<br/>Please come back another time.",
"maintenance.text": "%1 is currently undergoing maintenance. Please come back another time.",
"maintenance.messageIntro": "Additionally, the administrator has left this message:",
"throttled.text": "%1 is currently unavailable due to excessive load. Please come back another time."
}

View File

@@ -1,12 +1,8 @@
{
"post-queue": "Post Queue",
"no-queued-posts": "There are no posts in the post queue.",
"no-single-post": "The topic or post you are looking for is no longer in the queue. It has likely been approved or deleted already.",
"enabling-help": "To enable this feature, go to <a href=\"%1\">Settings &rarr; Post &rarr; Post Queue</a> and enable <strong>Post Queue</strong>.",
"back-to-list": "Back to Post Queue",
"description": "There are no posts in the post queue. <br> To enable this feature, go to <a href=\"%1\">Settings &rarr; Post &rarr; Post Queue</a> and enable <strong>Post Queue</strong>.",
"user": "User",
"when": "When",
"category": "Category",
"title": "Title",
"content": "Content",
@@ -23,7 +19,6 @@
"notify": "Notify",
"notify-user": "Notify User",
"confirm-reject": "Do you want to reject this post?",
"confirm-remove": "Do you want to remove this post?",
"bulk-actions": "Bulk Actions",
"accept-all": "Accept All",
"accept-selected": "Accept Selected",
@@ -31,10 +26,6 @@
"reject-all-confirm": "Do you want to reject all posts?",
"reject-selected": "Reject Selected",
"reject-selected-confirm": "Do you want to reject %1 selected posts?",
"remove-all": "Remove all",
"remove-all-confirm": "Do you want to remove all posts?",
"remove-selected": "Remove Selected",
"remove-selected-confirm": "Do you want to remove %1 selected posts?",
"bulk-accept-success": "%1 posts accepted",
"bulk-reject-success": "%1 posts rejected"
}

View File

@@ -7,5 +7,13 @@
"alltime": "সবসময় ",
"no_recent_topics": "কোন সাম্প্রতিক টপিক নেই। ",
"no_popular_topics": "There are no popular topics.",
"load-new-posts": "Load new posts"
"there-is-a-new-topic": "There is a new topic.",
"there-is-a-new-topic-and-a-new-post": "There is a new topic and a new post.",
"there-is-a-new-topic-and-new-posts": "There is a new topic and %1 new posts.",
"there-are-new-topics": "There are %1 new topics.",
"there-are-new-topics-and-a-new-post": "There are %1 new topics and a new post.",
"there-are-new-topics-and-new-posts": "There are %1 new topics and %2 new posts.",
"there-is-a-new-post": "There is a new post.",
"there-are-new-posts": "There are %1 new posts.",
"click-here-to-reload": "Click here to reload."
}

View File

@@ -1,6 +1,5 @@
{
"register": "নিবন্ধন",
"already-have-account": "Already have an account?",
"cancel_registration": "নিবন্ধন বাতিল",
"help.email": "ডিফল্টভাবে, আপনার ইমেইল সর্বসাধারণ থেকে লুকানো থাকবে।",
"help.username_restrictions": "%1 এবং %2 অক্ষরের মাঝে একটি অনন্য সদস্য নাম। বাকিরা আপনাকে @<span id='yourUsername'>নাম</span> দিয়ে উল্লেখ করতে পারবেন।",

Some files were not shown because too many files have changed in this diff Show More