* acp sidebar
* gap in nav
* remove shadow
* label fixes
* color fixes
* feat: settings page wip
* feat: scroll spy 👓
move social into general, store social in meta.config like other settings
write upgrade script
* remove social
* rermove openapi routes
* cleanup, highlight selected nav item
* more cleanup
* advanced margin top
* derp
* match design
* bring back version alert
fix homepage js, since it moved to general settings
* remove unused tpls
these moved to general settings
* remove more css
* offcanvas for mobile
fix search
* add timeout
* add new props
* manage categories
* small fixes
* category-edit
* feat category page fixes
* add title to settings pages
add user settings page
* small fixes
* some more settings pages
* fix: plugin page titles
* more settings pages
* more padding
* more pages, add acp paginator.tpl
so it doesn't change when active theme changes
* remove placeholder
* dashboard table
* fix: openapi
* fix: controller tests
* use fonts from core
* some small fixes
* fix rep page
* refactor: fix name of upgrade script
* create category modal
group edit
* group/groups pages
* admins mods
* privs
* uploads
* missing margin
* more acp pages
* more pages
* plugins/rewards/widgets
* wrap rewards
* fix widgets
* fix widget clone button
* fix group acp edit link
* update search dropdown
* remove display block from tbody
* use less css
* remove some derp links
* remove striped tables
* remove p tags from lang files
* update email settings
* Update api.tpl
* move tag-whitelist
turns [[notifications:upvoted_your_post_in, test1, Vote *for* NodeBB :ballot_box_with_ballot:]] into <strong>test1</strong> has upvoted your post in <strong>Vote *for* NodeBB :ballot_box_with_ballot:</strong>. so emoji plugin can parse emojis and they don't get escaped by translator client side
Apparently Docker Meta Actions overrides, not merely adds, handlebars helpers. So `#if` just doesn't exist and errors out...
As such here is an equivalent using GitHub Actions expression (and this time I tested that it works...)
The initial commit for the change had the socket methods removed,
causing it to become a breaking change. Those methods have been restored,
but are deprecated, and now slated for removal in an as-yet-unannounced v4.
`latest` tag is currently v2. That happened because of the backported change which is newer than any commits to `master`.
However, this logically shouldn't happen. The expectation for latest would be that it has the, well, the code from the highest version released, not literally the latest commit no matter where it came from. Thankfully metadata action allows for conditional tags and even has a helper for default branch making it not hard-coded (so if NodeBB decided to migrate to `main` or someone in their fork did it'd still work).
The result would be that latest is the latest code in `master`, which I see as similar to the default git workflow (`master` is just latest code, `vX.Y` branches or tags are for using proper releases).
The old behaviour would require that an email be entered, but did not block access to the forum (nor did it ensure that the email was verified).
The new behaviour (if the setting is enabled) will ensure that only those users with a confirmed email can continue through.
The only exceptions are super admins (so they don't get locked out).
The following socket calls have been removed:
* `posts.getRawPost`
* `posts.getPostSummaryByPid`
Two new Write API routes have been added:
- `GET /api/v3/posts/:pid/raw`
- `GET /api/v3/posts/:pid/summary`
1. with scheduled topics, pid is no longer reliable, lower pid can have higher timestamp(scheduled in the future) so use timestamp for sorting teasers
2. when restoring/deleting topics, update the teaser tid as the last step because it checks topicData.deleted
* ci: multi-platform build
* ci: remove riscv as node doesn't support it
* ci: correct step name
it's no longer logging in to docker hub
* ci: remove less common architectures
* ci: github actions cache for docker builds
* fix: use `--omit` flag to actually avoid installing dev dependencies
* feat: two-stage build
* feat: add platform-specific rebuild
* fix: run install if target arch is different from build arch
* fix: whitespace
* fix: correct build order
* fix: remove unnecessary conditional
* fix: remove unnecessary platofm specifier
* fix: correct copy
don't display scheduled posts in group page
when topic is rescheduled update post sorted sets with new timestamp
when post is published update group posts zset
fix markTopicRead if topic was read while it was still hidden
* fix: NodeBB#11482 thumbs Post Can not upload a thumbnail, only multiple uploads
* Modify upload thumbnail test
* Modify upload thumbnail test +,
* Get rid of v2 uploads test
* edit times
* Modify amount of files associated post test
* edit post file amount
The underlying API call was updated to v3 style (with standard status/response object in response body), so the existing code always falls back to the default error instead of showing the more specific error sent back by the backend.
Also, the fallback wasn't internationalized, so that's done to.
instead of checking if user is online in the past x minutes, check if the user has read the room, if they have already marked the chat as read don't send notification
if 2 deps were updated only one of them was cleared from require.cache. ie commander & lru-cache both has major version bump then only commander would be cleared from cache since it throws first
* chore: up deps
* chore: up composer
* fix(deps): bump 2factor to v7
* chore: up harmony
* chore: up harmony
* fix: missing await
* feat: allow middlewares to pass in template values via res.locals
* feat: buildAccountData middleware automatically added ot all account routes
* fix: properly allow values in res.locals.templateValues to be added to the template data
* refactor: user/blocks
* refactor(accounts): categories and consent
* feat: automatically 404 if exposeUid or exposeGroupName come up empty
* refactor: remove calls to getUserDataByUserSlug for most account routes, since it is populated via middleware now
* fix: allow exposeUid and exposeGroupName to work with slugs with mixed capitalization
* fix: move reputation removal check to accountHelpers method
* test: skip i18n tests if ref branch when present is not develop
* fix(deps): bump theme versions
* fix(deps): bump ntfy and 2factor
* chore: up harmony
* fix: add missing return
* fix: #11191, only focus on search input on md environments and up
* feat: allow file uploads on mobile chat
closes https://github.com/NodeBB/NodeBB/issues/11217
* chore: up themes
* chore: add lang string
* fix(deps): bump ntfy to 1.0.15
* refactor: use new if/each syntax
* chore: up composer
* fix: regression from user helper refactor
* chore: up harmony
* chore: up composer
* chore: up harmony
* chore: up harmony
* chore: up harmony
* chore: fix composer version
* feat: add increment helper
* chore: up harmony
* fix: #11228 no timestamps in future ⌛
* chore: up harmony
* check config.theme as well
fire action:posts.loaded after processing dom
* chore: up harmony
* chore: up harmony
* chore: up harmony
* chore: up themes
* chore: up harmony
* remove extra class
* refactor: move these to core from harmony
* chore: up widgets
* chore: up widgets
* height auto
* fix: closes#11238
* dont focus inputs, annoying on mobile
* fix: dont focus twice, only focus on chat input on desktop
dont wrap widget footer in row
* chore: up harmony
* chore: up harmony
* update chat window
* chore: up themes
* fix cache buster for skins
* chat fixes
* chore: up harmony
* chore: up composer
* refactor: change hook logs to debug
* fix: scroll to post right after adding to dom
* fix: hash scrolling and highlighting correct post
* test: re-enable read API schema tests
* fix: add back schema changes for 179faa2270 and c3920ccb10
* fix: schema changes from 488f0978a4
* fix: schema changes for f4cf482a87
* fix: schema update for be6bbabd0e
* fix: schema changes for 69c96078ea
* fix: schema changes for d1364c3130
* fix: schema changes for 84ff1152f7
* fix: schema changes for b860c2605c
* fix: schema changes for 23cb67a112
* fix: schema changes for b916e42f40
* fix: schema change for a9bbb586fc
* fix: schema changes for 4b738c8cd3
* fix: schema changes for 58b5781cea
* fix: schema changes for 794bf01b21
* fix: schema changes for 80ea12c1c1, e368feef51, and 52ead114be
* fix: composer-default object in config?
* fix: schema changes for 9acdc6808c and 0930934200
* fix: schema changes for c0a52924f1
* fix: schema change for aba420a3f3, move loggedInUser to optional props
* fix: schema changes for 8c67031609
* fix: schema changes for 27e53b42f3
* fix: schema changes for 2835966518
* fix: breaking test for email confirmation API call
* fix: schema changes for refactored search page
* fix: schema changes for user object
* fix: schema changes for 9f531f957e
* fix: schema changes for c4042c70de and 23175110a2
* fix: schema changes for 9b3616b103
* fix: schema changes for 5afd5de07d
* fix: schema change for 1d7baf1217
* fix: schema changes for 57bfb37c55 and be6bbabd0e
* fix: schema changes for 6e86b4afa2 and 3efad2e13b and 68f66223e7
* fix: allowing optional qs prop in pagination keys (not sure why this didn't break before)
* fix: re-login on email change
* fix: schema changes for c926358d73
* fix: schema changes for 388a8270c9
* fix: schema change for 2658bcc821
* fix: no need to call account middlewares for chats routes
* fix: schema changes for 71743affc3
* fix: final schema changes
* test: support for anyOf and oneOf
* fix: check thumb
* dont scroll to top on back press
* remove group log
* fix: add top margin to merged and deleted alerts
* chore: up widgets
* fix: improve fix-lists mixin
* chore: up harmony/composer
* feat: allow hiding quicksearch results during search
* dont record searches made by composer
* chore: up 54
* chore: up spam be gone
* feat: add prev/next page and page count into mobile paginator
* chore: up harmony
* chore: up harmony
* use old style for IS
* fix: hide entire toolbar row if no posts or not singlePost
* fix: updated messaging for post-queue template, #11206
* fix: btn-sm on post queue back button
* fix: bump harmony, closes#11206
* fix: remove unused alert module import
* fix: bump harmony
* fix: bump harmony
* chore: up harmony
* refactor: IS scrolltop
* fix: update users:search-user-for-chat source string
* feat: support for mark-read toggle on chats dropdown and recent chats list
* feat: api v3 calls to mark chat read/unread
* feat: send event:chats.mark socket event on mark read or unread
* refactor: allow frontend to mark chats as unread, use new API v3 routes instead of socket calls, better frontend event handling
* docs: openapi schema updates for chat marking
* fix: allow unread state toggling in chats dropdown too
* fix: issue where repeated openings of the chats dropdown would continually add events for mark-read/unread
* fix: debug log
* refactor: move userSearch filter to a module
* feat(routes): allow remounting /categories (#11230)
* feat: send flags count to frontend on flags list page
* refactor: filter form client-side js to extract out some logic
* fix: applyFilters to not take any arguments, update selectedCids in updateButton instead of onHidden
* fix: use userFilter module for assignee, reporterId, targetUid
* fix(openapi): schema changes for updated flags page
* fix: dont allow adding duplicates to userFilter
* use same var
* remove log
* fix: closes#11282
* feat: lang key for x-topics
* chore: up harmony
* chore: up emoji
* chore: up harmony
* fix: update userFilter to allow new option `selectedBlock`
* fix: wrong block name passed to userFilter
* fix: https://github.com/NodeBB/NodeBB/issues/11283
* fix: chats, allow multiple dropdowns like in harmony
* chore: up harmony
* refactor: flag note adding/editing, closes#11285
* fix: remove old prepareEdit logic
* chore: add caveat about hacky code block in userFilter module
* fix: placeholders for userFilter module
* refactor: navigator so it works with multiple thumbs/navigators
* chore: up harmony
* fix: closes#11287, destroy quick reply autocomplete
on navigation
* fix: filter disabled categories on user categories page count
* chore: up harmony
* docs: update openapi spec to include info about passing in timestamps for topic creation, removing timestamp as valid request param for topic replying
* fix: send back null values on ACP search dashboard for startDate and endDate if not expicitly passed in, fix tests
* fix: tweak table order in ACP dash searches
* fix: only invoke navigator click drag on left mouse button
* feat: add back unread indicator to navigator
* clear bookmark on mark unread
* fix: navigator crash on ajaxify
* better thumb top calculation
* fix: reset user bookmark when topic is marked unread
* Revert "fix: reset user bookmark when topic is marked unread"
This reverts commit 9bcd85c2c6.
* fix: update unread indicator on scroll, add unread count
* chore: bump harmony
* fix: crash on navigator unread update when backing out of a topic
* fix: closes#11183
* fix: update topics:recent zset when rescheduling a topic
* fix: dupe quote button, increase delay, hide immediately on empty selection
* fix: navigator not showing up on first load
* refactor: remove glance
assorted fixes to navigator
dont reduce remaning count if user scrolls down and up quickly
only call topic.navigatorCallback when index changes
* more sanity checks for bookmark
dont allow setting bookmark higher than topic postcount
* closes#11218, 🚋
* Revert "fix: update topics:recent zset when rescheduling a topic"
This reverts commit 737973cca9.
* fix: #11306, show proper error if queued post doesn't exist
was showing no-privileges if someone else accepted the post
* https://github.com/NodeBB/NodeBB/issues/11307
dont use li
* chore: up harmony
* chore: bump version string
* fix: copy paste fail
* feat: closes#7382, tag filtering
add client side support for filtering by tags on /category, /recent and /unread
* chore: up harmony
* chore: up harmony
* Revert "fix: add back req.query fallback for backwards compatibility" [breaking]
This reverts commit cf6cc2c454.
This commit is no longer required as passing in a CSRF token via query parameter is no longer supported as of NodeBB v3.x
This is a breaking change.
* fix: pass csrf token in form data, re: NodeBB/NodeBB#11309
* chore: up deps
* fix: tests, use x-csrf-token query param removed
* test: fix csrf_token
* lint: remove unused
* feat: add itemprop="image" to avatar helper
* fix: get chat upload button in chat modal
* breaking: remove deprecated socket.io methods
* test: update messaging tests to not use sockets
* fix: parent post links
* fix: prevent post tooltip if mouse leaves before data/tpl is loaded
* chore: up harmony
* chore: up harmony
* chore: up harmony
* chore: up harmony
* fix: nested replies indices
* fix(deps): bump 2factor
* feat: add loggedIn user to all api routes
* chore: up themes
* refactor: audit admin v3 write api routes as per #11321
* refactor: audit category v3 write api routes as per #11321 [breaking]
docs: fix open api spec for #11321
* refactor: audit chat v3 write api routes as per #11321
* refactor: audit files v3 write api routes as per #11321
* refactor: audit flags v3 write api routes as per #11321
* refactor: audit posts v3 write api routes as per #11321
* refactor: audit topics v3 write api routes as per #11321
* refactor: audit users v3 write api routes as per #11321
* fix: lang string
* remove min height
* fix: empty topic/labels taking up space
* fix: tag filtering when changing filter to watched topics
or changing popular time limit to month
* chore: up harmony
* fix: closes#11354, show no post error if queued post already accepted/rejected
* test: #11354
* test: #11354
* fix(deps): bump 2factor
* fix: #11357 clear cache on thumb remove
* fix: thumb remove on windows, closes#11357
* test: openapi for thumbs
* test: fix openapi
---------
Co-authored-by: Julian Lam <julian@nodebb.org>
Co-authored-by: Opliko <opliko.reg@protonmail.com>
* fix: convert loginDays and loginSeconds to number inputs
* feat: configurable session timeout for when "Remember Me" is not checked
closes#11124
* test: addition tests to check loginDays and sessionDuration settings
* test: also test loginSeconds override
* chore: incrementing version number - v2.8.1
* chore: update changelog for v2.8.1
* fix: accidental clearing of reset rate limiting on reset send
* test: move user reset tests to its own file, add failing test for user reset locks
* fix: #11119, counter attempted flooding of user reset route
* test: fix password reset socket test to check for error now
* test: same user sending multiple reset emails
should work after waiting the correct amount of time
* lint: fixes
* chore: rename outdated `cleanTokensAndUids` method
* test: no need to create user for new test
Co-authored-by: Misty Release Bot <deploy@nodebb.org>
Co-authored-by: Barış Soner Uşaklı <barisusakli@gmail.com>
* update openapi spec to include info about passing in timestamps for topic creation, removing timestamp as valid request param for topic replying (40e7b86d)
*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
*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)
*textarea on error (469aa551)
*closes #11613, closes #11614 (d8d486a6)
*closes #11612 (8f6a68ca)
*#11572 (2910cb2b)
##### Tests
##### Other Changes
* add dummy emailer hook in authentication test (1b29dbb6)
* 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)
* update changelog for v2.8.5 (24e58c28)
* incrementing version number - v2.8.4 (a46b2bbc)
* incrementing version number - v2.8.3 (c20b20a7)
* incrementing version number - v2.8.2 (050e43f8)
@@ -86,6 +688,136 @@
##### 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)
* 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)
@@ -108,30 +840,6 @@
* incrementing version number - v2.8.4 (a46b2bbc)
* update changelog for v2.8.4 (c13f0e21)
* 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)
##### Bug Fixes
@@ -143,29 +851,6 @@
* incrementing version number - v2.8.3 (c20b20a7)
* update changelog for v2.8.3 (eb2841ee)
* 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)
#### v2.8.3 (2023-01-25)
@@ -174,28 +859,6 @@
* remove extraneous lines from changelog (48c9f447)
Our minimalist "Harmony" theme gets you going right away, no coding experience required.

## 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 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 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 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.
@@ -42,7 +39,7 @@ Our minimalist "Persona" 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 12 or greater ([installation/upgrade instructions](https://github.com/nodesource/distributions))
* A version of Node.js at least 16 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)
@@ -76,10 +73,10 @@ Interested in a sublicense agreement for use of NodeBB in a non-free/restrictive
This is what a topic and post looks like. As an administrator, you can edit the post\'s title and content.
To customise your forum, go to the [Administrator Control Panel](../../admin). You can modify all aspects of your forum there, including installation of third-party plugins.
## Additional Resources
#### Additional Resources
* [NodeBB Documentation](https://docs.nodebb.org)
* [Community Support Forum](https://community.nodebb.org)
"mongo.unauthorized":"NodeBB was unable to query the MongoDB database for relevant statistics. Please ensure that the user in use by NodeBB contains the "clusterMonitor" role for the "admin" database.",
"mongo.mapped-memory":"الذاكرة المعينة",
"mongo.bytes-in":"البايتات الواردة",
"mongo.bytes-out":"البايتات الصادرة",
"mongo.num-requests":"عدد الطلبات",
"mongo.raw-info":"معلومات MongoDB الأولية",
"mongo.unauthorized":"لم يستطع NodeBB من الاستعلام عن احصاءات قواعد البيانات ل MongoDB. الرجاء التأكد من أن المستخدم في NodeBB يحتوي على دور "clusterMonitor" ال "admin" لقواعد البيانات.",
"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",
"customise":"Customise",
"custom-css":"Custom CSS/SASS",
"custom-css.description":"Enter your own CSS/SASS declarations here, which will be applied after all other styles.",
"custom-css.enable":"Enable Custom CSS/SASS",
"custom-js":"Javascript مخصصة",
"custom-js.description":"أدخل Javascript الخاص بك هنا. سيتم تنفيذها بعد تحميل الصفحة بالكامل.",
"custom-js.enable":"تفعيل Javascript المخصصة",
"custom-header":"ترويسة مخصصة",
"custom-header.description":"Enter custom HTML here (ex. Meta Tags, etc.), which will be appended to the <code><head></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.description":"أدخل وسوم HTML المخصصة هنا (مثل: Meta Tags, وغيرها)، والتي سيتم تضمينها لجزئية <code><head></code> من ترميز المنتدى. يُسمح بعلامات البرمجة النصية، ولكن لا يُنصح بها ، نظرًا لأن علامة التبويب <a href=\"#custom-js\" data-toggle=\"tab\">Custom Javascript</a> متاحة.",
"custom-header.enable":"تفعيل الترويسة المخصصة",
"custom-css.livereload":"تفعيل إعادة التحميل المباشرة",
"page-views-custom-help":"أدخل نطاقا زمنيا لمرات مشاهدة الصفحات التي ترغب في عرضها. إذا لم يظهر منتقي التاريخ، فإن التنسيق المقبول هو <code>YYYY-MM-DD</code>",
"page-views-custom-error":"الرجاء إدخال نطاق تاريخ صالح بالتنسيق <code>YYYY-MM-DD</code>",
"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.yesterday":"الأمس",
"stats.today":"اليوم",
"stats.last-week":"الاسبوع الماضي",
"stats.this-week":"هذا الاسبوع",
"stats.last-month":"الشهر الماضي",
"stats.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>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!",
"running-in-development":"المنتدى قيد التشغيل في وضع \"المطورين\". وقد تكون هناك ثغرات أمنية مفتوحة؛ من فضلك تواصل مع مسؤول نظامك.",
"latest-lookup-failed":"<p>Failed to look up latest available version of NodeBB</p>",
"up-to-date":"You are <strong>up-to-date</strong> <i class=\"fa fa-check\"></i>",
"upgrade-available":"A new version (v%1) has been released. Consider <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">upgrading your NodeBB</a>.",
"prerelease-upgrade-available":"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>.",
"prerelease-warning":"This is a <strong>pre-release</strong> version of NodeBB. Unintended bugs may occur. <i class=\"fa fa-exclamation-triangle\"></i>",
"fallback-emailer-not-found":"مرسل البريد الإلكتروني الاحتياطي غير موجود!",
"running-in-development":"Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator",
"latest-lookup-failed":"Failed to look up latest available version of NodeBB",
"notices":"إشعارات",
"restart-not-required":"إعادة التشغيل غير مطلوب",
@@ -42,10 +42,10 @@
"search-plugin-tooltip":"نصب إضافة البحث من صفحة الإضافات البرمجية لتنشيط وظيفة البحث",
"control-panel":"التحكم بالنظام",
"rebuild-and-restart":"Rebuild & 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.",
"rebuild-and-restart":"أعد البناء & وأعد التشغيل",
"restart":"أعد التشغيل",
"restart-warning":"ستؤدي إعادة بناء أو إعادة تشغيل NodeBB إلى إنقطاع الاتصال بالمنتدى لبضع ثوان.",
"restart-disabled":"تم تعطيل إعادة بناء NodeBB وإعادة تشغيله حيث لا يبدو أنك تقوم بتشغيله عبر البرنامج الخفي المناسب.",
"maintenance-mode":"وضع الصيانة",
"maintenance-mode-title":"انقر هنا لإعداد وضع الصيانة لـNodeBB",
"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",
"logger-settings":"إعدادات المسجِّل",
"description":"من خلال تمكين مربعات الاختيار ، ستتلقى سجلات إلى جهازك الطرفي. إذا حددت مسارًا ، فسيتم بعد ذلك حفظ السجلات في ملف بدلاً من ذلك. يعد تسجيل HTTP مفيدًا لجمع الإحصائيات حول من ومتى وماذا يصل الأشخاص في المنتدى. بالإضافة إلى تسجيل طلبات HTTP ، يمكننا أيضًا تسجيل أحداث socket.io. يمكن أن يكون تسجيل Socket.io ، جنبًا إلى جنب مع شاشة redis-cli ، مفيدًا جدًا في تعلم العناصر الداخلية لـ NodeBB.",
"explanation":"ما عليك سوى تحديدأو/ إلغاء تحديد إعدادات التسجيل لتمكين أو تعطيل التسجيل أثناء التنقل. لا حاجة لإعادة التشغيل.",
"set-order-help":"Setting the order of the category will move this category to that order and update the order of other categories as necessary. Minimum order is 1 which puts the category at the top.",
"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 "Admins & Mods" 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>?",
"description":"There are no users in the registration queue. <br> To enable this feature, go to <a href=\"%1\">Settings → User → User Registration</a> and set <strong>Registration Type</strong> to \"Admin Approval\".",
"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.",
"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.",
"token-on-save":"Token will be generated once form is saved"
"actions":"Actions",
"edit":"Edit",
"roll":"Roll",
"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."
"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 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>",
"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>",
"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> – sending emails to unverified addresses may be a violation of regional anti-spam laws.",
"title.short-placeholder":"ان لم تقم بكتابة عنوان مختصر, سيتم استخدام عنوان الموقع الكلي",
"title.url":"Title Link URL",
"title.url-placeholder":"The URL of the site title",
"title.url-help":"When the title is clicked, send users to this address. If left blank, user will be sent to the forum index. <br> Note: This is not the external URL used in emails, etc. That is set by the <code>url</code> property in config.json",
"title.url-help":"When the title is clicked, send users to this address. If left blank, user will be sent to the forum index. Note: This is not the external URL used in emails, etc. That is set by the <code>url</code> property in config.json",
"title.name":"اسم المنتدي",
"title.show-in-header":"Show Site Title in Header",
"browser-title":"عنوان المتصفح",
@@ -16,7 +18,7 @@
"description":"وصف الموقع",
"keywords":"الكلمات الدليله للموقع",
"keywords-placeholder":"Keywords describing your community, comma-separated",
"logo":"شعار الموقع",
"logo-and-icons":"Site Logo & Icons",
"logo.image":"صورة",
"logo.image-placeholder":"Path to a logo to display on forum header",
"handles.enabled-help":"This option exposes a new field that allows guests to pick a name to associate with each post they make. If disabled, they will simply be called \"Guest\"",
"topic-views.enabled":"Allow guests to increase topic view counts",
"dropdown-placeholder":"Place your dropdown menu items below, ie: <br/><li><a href="https://myforum.com">Link 1</a></li>",
"dropdown-placeholder":"Place your dropdown menu items below, ie: <br/><li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>",
"session-time-help":"These values are used to govern how long a user stays logged in when they check "Remember Me" 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":"تسجيل المستخدم",
@@ -57,7 +59,7 @@
"max-about-me-length":"الحد الأعلى من الأحرف في حقل \"عني\"",
"terms-of-use":"شروط استخدام المنتدى <small>(تترك فارغة لتعطيلها)</small>",
"user-search":"بحث الأعضاء",
"user-search-results-per-page":"عدد النتائج المراد عرضها",
"user-search-results-per-page":"Number of users to display in search results",
"default-user-settings":"إعدادات الأعضاء الافتراضية",
"403.message":"يبدو أنك قد تعثرت على صفحة لا تمتلك الصلاحية للدخول إليها",
"403.login":"ربما يجب عليك <a href='%1/login'>تسجل دخولك</a>.",
"403.login":"Perhaps you should <a class=\"alert-link\" href='%1/login'>try logging in</a>?",
"404.title":"لم يتم العثور",
"404.message":"الصفحة غير موجودة. العودة لـ <a href='%1/'>الرئيسية</a>",
"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>",
"500.title":"خطأ داخلي",
"500.message":"عفوا! يبدو وكأنه شيء ذهب على نحو خاطئ!",
"400.title":"طلب سيئ",
"400.message":"الرابط غير صحيح. رجاءًا تأكد من الرابط أو ارجع لـ <a href='%1/'>الرئيسية</a>",
"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>",
"register":"تسجيل",
"login":"دخول",
"please_log_in":"الرجاء تسجيل الدخول",
@@ -20,6 +20,8 @@
"you_have_successfully_logged_in":"تم سجيل الدخول بنجاح",
"save_changes":"حفظ التغييرات",
"save":"حفظ",
"create":"Create",
"cancel":"Cancel",
"close":"أغلق",
"pagination":"الصفحات",
"pagination.out_of":"%1 من %2",
@@ -37,9 +39,13 @@
"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، منصة المناقشة المستقبلية.",
"description":"There are no posts in the post queue. <br> To enable this feature, go to <a href=\"%1\">Settings → Post → Post Queue</a> and enable <strong>Post Queue</strong>.",
"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 → Post → Post Queue</a> and enable <strong>Post Queue</strong>.",
"back-to-list":"Back to Post Queue",
"user":"User",
"when":"When",
"category":"Category",
"title":"Title",
"content":"Content",
@@ -19,6 +23,7 @@
"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",
@@ -26,6 +31,10 @@
"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?",
"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)",
"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 />",
"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 & 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 & Consent page.<br /><br />If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.",
@@ -195,5 +201,6 @@
"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.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."
"running-version":"Вие използвате <strong>NodeBB версия <span id=\"version\">%1</span></strong>.",
"keep-updated":"Стремете се винаги да използвате най-новата версия на NodeBB, за да се възползвате от последните подобрения на сигурността и поправки на проблеми.",
"upgrade-available":"<p>Има нова версия (версия %1). Ако имате възможност, <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">обновете NodeBB</a>.</p>",
"prerelease-upgrade-available":"<p>Това е остаряла предварителна версия на NodeBB. Има нова версия (версия %1). Ако имате възможност, <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">обновете NodeBB</a>.</p>",
"prerelease-warning":"<p>Това е версия за <strong>предварителен преглед</strong> на NodeBB. Възможно е да има неочаквани неизправности. <i class=\"fa fa-exclamation-triangle\"></i></p>",
"upgrade-available":"Има нова версия (%1). Ако имате възможност, <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">обновете NodeBB</a>.",
"prerelease-upgrade-available":"Това е остаряла предварителна версия на NodeBB. Има нова версия (%1). Ако имате възможност, <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">обновете NodeBB</a>.",
"prerelease-warning":"Това е <strong>предварителна версия</strong> на NodeBB. Възможно е да има неочаквани неизправности. <i class=\"fa fa-exclamation-triangle\"></i>",
"fallback-emailer-not-found":"Нее намерен резервен изпращач на е-поща",
"running-in-development":"<span>Форумът работи в режим за разработчици, така че може да бъде уязвим. Моля, свържете се със системния си администратор.</span>",
"latest-lookup-failed":"<p>Не може да бъде извършена проверка за последната налична версия на NodeBB</p>",
"running-in-development":"Форумът работи в режим за разработчици, така че може да бъде уязвим. Моля, свържете се със системния си администратор.",
"latest-lookup-failed":"Не може да бъде извършена проверка за последната налична версия на NodeBB",
"details.no-users":"В избрания период не сасе регистрирали нови потребители",
"details.no-topics":"В избрания период не са публикувани нови теми",
"details.no-searches":"Все още не са правени търсения",
"details.no-searches":"В избрания период не са правени търсения",
"details.no-logins":"В избрания период не са отчетени вписвания",
"details.logins-static":"NodeBB запазва данни за сесията в продължение на %1 дни, така че в следната таблица могат да се видят само последните активни сесии",
"set-order-help":"Задаването на позиция за категорията ще я премести на желаното място и ще промени местата на другите категории, ако е необходимо. Най-малкият възможен номер е 1, което ще постави категорията най-отгоре.",
"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>?",
"lead-text":"На тази страница можете да настроите достъпа до ППИ за писане в NodeBB.",
"intro":"По подразбиране ППИ за писане удостоверява потребителите чрез бисквитката им за сесията, но NodeBB поддържа и удостоверяване чрез метода „Bearer“, използвайки кодовете от тази страница.",
"intro":"По подразбиране ППИ за писане удостоверява потребителите чрез бисквитката им за сесията, но NodeBB поддържа и удостоверяване чрез метода „Bearer“, използвайки идентификаторите от тази страница.",
"warning":"<strong>Внимавайте</strong> – отнасяйте сес идентификаторите като с пароли. Ако някой се сдобие с тях, може да получи достъп до акаунта Ви.",
"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":"Няма описание.",
"token-on-save":"Кодът ще бъде създаден след като данните бъдат запазени"
"actions":"Действия",
"edit":"Редактиране",
"roll":"Roll",
"delete-confirm":"Наистина ли искате да изтриете този идентификатор? След това няма да може да го възстановите.",
"roll-confirm":"Наистина ли искате да пресъздадете този идентификатор? Старият ще бъде премахнат незабавно и няма да може да бъде възстановен."
"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>",
"require-email-address-warning":"По подразбиране потребителите могат да не въвеждат адрес на е-поща, като оставят полето празно. Ако включите това, новите потребители задължително ще трябва да предоставят <strong>и потвърдят</strong>е-поща, за да могат да се регистрират и да получат достъп до форума. <strong>Това не означава, че потребителят ще въведе истинскае-поща, нито че тя ще е негова.</strong>",
"send-validation-email":"Изпращане на е-писма за потвърждение, когато бъде добавена или променена е-поща",
"include-unverified-emails":"Изпращане на е-писма към получатели, които не са потвърдили изрично е-пощата си",
"include-unverified-warning":"За потребителите, които имат свързана е-поща с регистрацията си, тя се смята за потвърдена. Но има ситуации, в които това не е така (например при ползване на регистрация от друга система, но и в други случаи), <strong>Включете тази настройка на собствен риск</strong> – изпращането на е-писма към непотвърдени адреси може да нарушава определени местни закони против нежеланата поща.",
"title.short-placeholder":"Ако не е посочено кратко заглавие, ще бъде използвано заглавието на уеб сайта",
"title.url":"Адрес за заглавието",
"title.url-placeholder":"Адресът за заглавието на уеб сайта",
"title.url-help":"Когато потребител щракне върху заглавието, той ще бъде прехвърлен към този адрес. Ако е празно, потребителят ще бъде изпратен към началната страница на форума. <br> Забележка: Това не е външният адрес, който се ползва в е-писмата. Той се задава от свойството <code>url</code> във файла config.json",
"title.url-help":"Когато потребител щракне върху заглавието, той ще бъде прехвърлен към този адрес. Ако е празно, потребителят ще бъде изпратен към началната страница на форума. Забележка: Това не е външният адрес, който се ползва в е-писмата. Той се задава от свойството <code>url</code> във файла config.json.",
"title.name":"Името на общността Ви",
"title.show-in-header":"Показване на заглавието на уеб сайта в заглавната част",
"browser-title":"Заглавие на браузъра",
@@ -16,7 +18,7 @@
"description":"Описание на уеб сайта",
"keywords":"Ключови думи на уеб сайта",
"keywords-placeholder":"Ключови думи, описващи общността Ви. Трябва да бъдат разделени със запетаи.",
"logo":"Лого на уеб сайта",
"logo-and-icons":"Лого и иконки на уеб сайта",
"logo.image":"Изображение",
"logo.image-placeholder":"Път до логото, което да бъде показано в заглавната част на форума",
"handles.enabled":"Позволяване на имената за гостите",
"handles.enabled-help":"Тази възможност предоставя ново поле, което позволява на гостите да си изберат име, което да се използва за всяка публикация, която правят. Ако е изключено, всички те просто ще имат името „Гост“.",
"topic-views.enabled":"Гостите да допринасят за броя на преглеждания на темите",
"sorting.post-default":"Подредба по подразбиране на публикациите",
"sorting.oldest-to-newest":"Първо най-старите",
@@ -23,10 +24,8 @@
"restrictions.seconds-edit-after":"Брой секунди, през които публикациите могат да бъдат редактирани. (0 = изключено)",
"restrictions.seconds-delete-after":"Брой секунди, през които публикациите могат да бъдат изтрити. (0 = изключено)",
"restrictions.replies-no-delete":"Брой отговори, след които потребителите вече не могат да изтриват собствените си теми. (0 = изключено)",
"restrictions.min-title-length":"Минимална дължина на заглавието",
"restrictions.max-title-length":"Максимална дължина на заглавието",
"restrictions.min-post-length":"Минимална дължина на публикацията",
"restrictions.max-post-length":"Максимална дължина на публикацията",
"restrictions.title-length":"Дължина на заглавието",
"restrictions.post-length":"Дължина на публикациите",
"restrictions.days-until-stale":"Брой дни, след които темата се смята за стара",
"restrictions.stale-help":"Ако дадена тема е определена като „стара“, то потребителите, които се опитат да пишат в нея, ще получат предупредително съобщение.",
"timestamp":"Време",
@@ -41,10 +40,9 @@
"teaser.last-reply":"Последната – Показване на последния отговор, или „Няма отговори“, ако все още няма такива.",
"teaser.first":"Първата",
"showPostPreviewsOnHover":"Показване на кратък преглед на публикациите при посочване с мишката",
"unread":"Настройки за непрочетените",
"unread-and-recent":"Настройки за скорошните и непрочетените",
"unread.cutoff":"Възраст на публикациите, след която те не се показват в непрочетените (в брой дни)",
"unread.min-track-last":"Минимален брой публикации в темата, след което да започва следене на последно прочетената",
"recent":"Настройки за скорошните",
"recent.max-topics":"Максимален брой теми в скорошните",
"recent.categoryFilter.disable":"Изключване на филтрирането на темите в пренебрегваните категории на страницата /recent",
"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":"Регистриране на потребителите",
@@ -57,7 +59,7 @@
"max-about-me-length":"Максимална дължина на информацията на потребителите за себе си",
"terms-of-use":"Условия за ползване на форума <small>(Оставете празно и няма да има такива)</small>",
"user-search":"Търсене на потребители",
"user-search-results-per-page":"Брой резултати, които да бъдат показвани",
"user-search-results-per-page":"Брой потребители, които да бъдат показвани в резултатите от търсене",
"default-user-settings":"Настройки по подразбиране на потребителите",
"no-chat-room":"Стаята за разговори не съществува",
"no-privileges":"Нямате достатъчно права за това действие.",
"category-disabled":"Категорията е изключена",
"topic-locked":"Темата е заключена",
@@ -89,9 +89,10 @@
"category-not-selected":"Нее избрана категория.",
"too-many-posts":"Можете да публикувате веднъж на %1 секунда/и – моля, изчакайте малко, преди да опитате да публикувате отново",
"too-many-posts-newbie":"Като нов потребител, Вие можете да публикувате веднъж на %1 секунда/и, докато не натрупате %2 репутация – моля, изчакайте малко, преди да опитате да публикувате отново",
"already-posting":"You are already posting",
"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":"Не можете да използвате този системен етикет.",
@@ -101,6 +102,7 @@
"guest-upload-disabled":"Качването не е разрешено за гости",
"cors-error":"Изображението не може да бъде качено поради неправилни настройки на CORS",
"upload-ratelimit-reached":"Качили сте твърде много файлове наведнъж. Моля, опитайте отново по-късно.",
"upload-error-fallback":"Изображението не може да бъде качено – %1",
"scheduling-to-past":"Изберете дата в бъдещето.",
"invalid-schedule-date":"Въведете правилна дата и час.",
"cant-pin-scheduled":"Насрочените теми не могат да бъдат закачени или разкачени.",
@@ -134,6 +136,8 @@
"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":"Тази тема вече е изтрита",
@@ -157,9 +161,9 @@
"chat-deleted-already":"Това съобщение вече е изтрито.",
"chat-restored-already":"Това съобщение вече е възстановено.",
"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.",
"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":"Отрицателното гласуване е изключено",
@@ -215,7 +219,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":"Нямате право да изпълните тази команда",
@@ -224,5 +228,6 @@
"api.429":"Направили сте твърде много заявки. Моля, опитайте отново по-късно.",
"api.500":"При обработката на заявката Ви възникна неочаквана грешка.",
"api.501":"Пътят, който се опитвате да извикате, все още не съществува. Моля, опитайте отново утре.",
"api.503":"Пътят, който се опитвате да извикате, в момента не е достъпен, поради настройките на сървъра."
"api.503":"Пътят, който се опитвате да извикате, в момента не е достъпен, поради настройките на сървъра.",
"api.reauth-required":"Ресурсът, който се опитвате да достъпите, изисква (повторно) удостоверяване."
"403.message":"Изглежда сте посетили страница, до която нямате достъп.",
"403.login":"Може би трябва да <a href='%1/login'>опитате да се впишете</a>?",
"403.login":"Може би трябва да <a class=\"alert-link\" href='%1/login'>опитате да се впишете</a>?",
"404.title":"Нее намерена",
"404.message":"Изглежда сте се опитали да посетите страница, която не съществува.Върнете се към <a href='%1/'>началната страница</a>.",
"404.message":"Изглежда сте се опитали да посетите страница, която не съществува.<br/><div class=\"text-sm text-muted\">Върнете се към <a href='%1/'>началната страница</a>.</div>",
"500.title":"Вътрешна грешка.",
"500.message":"Опа! Изглежда нещо се обърка!",
"400.title":"Грешна заявка.",
"400.message":"Тази връзка изглежда повредена. Моля, проверете я и опитайте отново.В противен случайсе върнете на <a href='%1/'>началната страница</a>.",
"400.message":"Тази връзка изглежда повредена. Моля, проверете я и опитайте отново.<br/><div class=\"text-sm text-muted\">Илисе върнете към <a href='%1/'>началната страница</a>.</div>",
"description":"Няма публикации в опашката. <br> За да включите тази функционалност, идете в <a href=\"%1\">Настройки → Публикуване → Опашка за публикации</a> и включете <strong>Опашката за публикации</strong>.",
"no-queued-posts":"В опашката за публикации няма нищо.",
"no-single-post":"Темата или публикацията, която търсите, вече не се намира в опашката. Вероятно или е била одобрена, или изтрита.",
"enabling-help":"За да включите тази функционалност, идете в <a href=\"%1\">Настройки → Публикуване → Опашка за публикации</a> и включете <strong>Опашката за публикации</strong>.",
"back-to-list":"Назад към Опашката за публикации",
"user":"Потребител",
"when":"Кога",
"category":"Категория",
"title":"Заглавие",
"content":"Съдържание",
@@ -19,6 +23,7 @@
"notify":"Известяване",
"notify-user":"Известяване на потребителя",
"confirm-reject":"Искате ли да отхвърлите тази публикация?",
"confirm-remove":"Искате ли да премахнете тази публикация?",
"bulk-actions":"Групови действия",
"accept-all":"Приемане на всички",
"accept-selected":"Приемане на избраните",
@@ -26,6 +31,10 @@
"reject-all-confirm":"Наистина ли искате да отхвърлите всички публикации?",
"reject-selected":"Отхвърляне на избраните",
"reject-selected-confirm":"Наистина ли искате да отхвърлите %1 избрани публикации?",
"remove-all":"Премахване на всички",
"remove-all-confirm":"Наистина ли искате да премахнете всички публикации?",
"remove-selected":"Премахване на избраните",
"remove-selected-confirm":"Наистина ли искате да премахнете избраните %1 публикации?",
"help.email":"По подразбиране, Вашата е-поща ще бъде скрита за останалите.",
"help.username_restrictions":"Уникално потребителско име с дължина между %1 и %2 символа. Другите ще могат да Ви споменават чрез @<span id='yourUsername'>потребител</span>.",
"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":"По-нови от",
@@ -28,7 +48,22 @@
"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":"Гласувания за темата",
@@ -39,11 +74,36 @@
"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“"
}
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.