* feat: privileges save button, #8537, WIP
* fix: disable firefox autocomplete on privilege form fields
* feat: closes#8537 privilege changes commit on save
- new language strings for confirmation and success modals/toasts
- indeterminate privilege handling (/cc @psychobunny)
- added new discard button
- both discard and save buttons now have confirmation dialogs
* fix(tests): remove duplicate template helper test
* fix(tests): broken template helper test
* feat: confirm dialogs for all privilege copy actions
Also, ability to add user to a privilege table without needing
to refresh the privilege table.
* feat: group row addition w/o table refresh
breaking: helpers.getUserPrivileges and helpers.getGroupPrivileges
no longer make socket calls to the following hooks:
- filter:privileges.list, filter:privileges.admin.list,
filter:privileges.global.list, filter:privileges.groups.list,
filter:privileges.admin.groups.list,
filter:privileges.gloval.groups.list
The filters are still called, but done before the helper method
is called, and the results are passed in instead. This change
should only affect you if you directly call the helper methods,
otherwise the change is transparent.
* fix: stale ajaxify data on privilege category switch
* fix: implicit privileges not showing for user privs
* fix: groups, not group, also fix tests
* fix(tests): again
* fix: wrong tpl rendered when adding group to global priv table
- Added new config flag:limitPerTarget, to disallow flags after an item has
already been flagged x times (default 0, or infinite)
- New zset flags:byTarget, score is the number of times a flag has been made
against that item
- "already-flagged" translation key removed, now "post-already-flagged" or
"user-already-flagged" -- this fixed bug where flagging a user you've already
flagged would tell you you've already flagged this post already.
- Refactored Flags.canFlag to throw errors only, instead of returning boolean
- Updated ACP form inputs for reputation settings page to be more bootstrappy
- +1 upgrade script
make isPrimary and isCluster always booleans
they were strings when using ./nodebb start and boolean if they were in config.json and started with node app.js
allow selecting main topic to merge into
allow specifying a new title for merge topic
upon merge go to correct topic
new tests for merging with options
* feat: acp privileges (WIP)
* fix: restore global privilege hooks
* refactor: using cid 0 in admin privs
* fix: no need for zebrastripe-reset
* feat: manage:categories privilege WIP
* feat: renamed prefix to admin:, settigns and dashboard privs
* fix: nofocus on acp privs group find modal
* refactor: privileges.x.get() to not used hardcoded privs
* fix: crash if unable to get latest version
* feat: setting acp priv
* Revert "fix: crash if unable to get latest version"
This reverts commit afdb235f48.
* feat: user/privilege acp privs
* fix: category selector in manage/privileges
* fix: guests potentially becoming admins
* fix: bug in setting admin privs
* fix: some last minute things + api docs
* fix: some more last minute fixes
* refactor: make middleware.admin.renderHeader async
* refactor: making rendering of header and footer async functions
* fix: use app.renderAsync instead of promifying it
* feat: fix session mismatch errors by clearing cookie on logout
* feat: remove app.upateHeader
ported from 2.0
* feat: handle if user doesn't click button and just refreshes page
* feat: add privilege give/rescind hooks
action:privileges.categories.give/rescind
action:privileges.global.give/rescind
breaking change, privileges.categories.give/rescind and privileges.global.give/rescind use full privilege name for groups ie `groups:find` instead of `find`
* fix: tests, privileges renamed
- Show account moderation history
- Ban and delete quick actions
Squashed commit of the following:
commit 0e782e65f4d48ae814708e510ec9d01bcdd914e0
Author: Julian Lam <julian@nodebb.org>
Date: Tue May 26 20:24:53 2020 -0400
fix(deps): use persona 10.1.41/vanilla 11.1.17
commit 369e073d3c3189d8ce181eb3d573489cbe54d4fc
Author: Julian Lam <julian@nodebb.org>
Date: Tue May 26 20:23:24 2020 -0400
fix: allow ban and delete exported methods to have cbs
commit b83a086ea31a77ec82d161306c0b9bc115cb2a3a
Merge: 525aae1ea 256ee45d3
Author: Julian Lam <julian@nodebb.org>
Date: Tue May 26 08:54:25 2020 -0400
Merge remote-tracking branch 'origin/master' into flags-improvements
commit 525aae1ea2e5d0103028a0f0c8dde05f172d088e
Author: Julian Lam <julian@nodebb.org>
Date: Tue May 26 08:53:39 2020 -0400
feat: integrate ban history and username changes to flag history list
commit 3e68ad28ba266f4c8620a676aa7f463f0a9d1df7
Author: Julian Lam <julian@nodebb.org>
Date: Mon May 25 18:22:53 2020 -0400
feat: allow ban and deletion from flag details page
commit a559ea1d8e8883385c2876868d855a0b93516c54
Author: Julian Lam <julian@nodebb.org>
Date: Mon May 25 18:22:00 2020 -0400
feat: export banAccount and deleteAccount methods from accounts module
After some more thought, a response hook should be checking for
whether headers are sent, and executing (or not executing) the
default logic in that case.
Before, we were relying on hooks to call data.next() to continue
execution, but it makes more sense to have the listener either
send a response or not, and handle the behaviour afterwards.
* feat: testing suite integration for openapi spec
The testing suite now takes the openapi spec into account. It will
check each route defined, make a call to it, and compare the
response with the defined schema. Any mismatches will cause the
test to fail.
* fix(openapi): removed debug stuff from tests
* fix(openapi): fixed some tests
* fix(openapi): added additional check to tests, test fixes
* fix(openapi): better tests, fixed spec errors
* fix(openapi): bad conditional in test
* fix: oops
* fix(openapi): more tests fixing
* fix(openapi): more tests
* fix(openapi): fix some more tests
* fix: verbose'd an info log
* fix: topic pagination route returns schema-optimized pagination block
* fix(openapi): more test/spec fixes
* fix(openapi): accidentally sending in authenticated jar for anon routes
* fix(openapi): more test/spec fixes
* fix(openapi): more spec fixes
* fix: timestampReadable Invalid Date
* fix(openapi): more tests... almost there
* fix(openapi): more tests fixing
* fix(openapi): finally all tests passing
* fix(openapi): added reverse test to compare response to spec
... and fixed all the tests that broke
* fix: remove tests related to group covers, as route is gone
* fix(openapi): broken test on travis
* fix(openapi): broken test on travis
* fix(openapi): broken test on travis
* fix(openapi): object cache is not present for psql
* fix: tests
Co-authored-by: Barış Soner Uşaklı <barisusakli@gmail.com>
There is no reason why avatars should be a blocking reasorce, and browsers are now adding support for lazy loading of images (and iframes). According to [caniuse.com](https://caniuse.com/#feat=loading-lazy-attr) 62% of users use a browser that supports this attribute.
So there doesn't seem to be any downside to just adding this attribute here. It won't affect browsers that don't support it and might speed up page loads on browsers that do.
* feat: support pnpm, cnpm
* feat: store supportedPackageManager in default package.json
* feat: store supportedPackageManager in src/cli/package-install.js
Co-authored-by: a632079 <a632079@qq.com>
* fixes sitemap base url issue when using with subfolder
* fixes sitemap base url issue when using with subfolder
* uses directly relative path
* removes prefix variable
fix#8079
Unified Topology changes the concept of connecting and causes isConnected to always return true, making any reconnection options useless. Next major version of the driver will remove isConnected entirely.
So:
- reconnect tries
- reconnectInterval
- autoReconnect
Are deprecated and don't really do anything anymore (when unified topology is used at least) other than causing warnings at startup since the 3.4 version of the driver (the current version used by NodeBB is 3.5).
Reference: http://mongodb.github.io/node-mongodb-native/3.5/reference/unified-topology/
* fix: #8142, broken site if no server-side session
During the `addHeader` middleware, a check is now done to see if
`req.session.meta` is present. This value is only present if the user
has a valid server-side session. If it is missing, then it is probably
safe to assume that the server-side session was deleted (either
intentionally or accidentally). In that scenario, the client-side cookie
should be cleared.
Also, there was an issue where the sessionRefresh flag was never cleared
after a successful login, so that was fixed too.
* feat: exported method to get cookie config
* fix: don't clear cookie if cookie is being set
* fix: socket.io tests
Co-authored-by: Barış Soner Uşaklı <barisusakli@gmail.com>
In scenarios where onSuccessfulLogin was not called in the SSO plugin,
core's calling of onSuccessfulLogin was prematurely returning, because
it was checking the wrong value.
This commit fixes the issue by checking a different value.
- Now showing user-join message for chat owner in addition to the newly
added user
- If a modal already exists for a room when createModal is called, don't
return null, return the modal
- The logic for the build step now defaults to series instead of
parallel, unless more than 4 CPU cores are detected by the os
library.
- The `--series` flag still exists, and will enforce build in
series, as before.
* feat: add assignee checking when updating flag
Prior to this, it was possible to update the assignee to any value (or
any user. This commit adds checking to allow only admins, global
moderators, or in the case of flagged posts, moderators.
Also some prep work was added for value checking `state`.
* feat: value checking `state` on flag update
The state should be one of the constants defined earlier in the file.
* also reordered the menu in ACP so plugins come first
* added muted headers in desktop version to distinguish both lists
* fixes julianlam/nodebb-plugin-sso-google#21
* closes#8066
* refactor postgres upgrade function to use async
* add function wrapper for getting the elements of a sorted set to avoid postgres planning the query with a nested sequential scan
* fix fatal(?!) lint errors
* add missing await
* bump PostgreSQL version on Travis CI to one that isn't over 3 years out of date
* feat: wip, better digest handling (+ eventual digest resend logic)
- await emailer.send call in digest.send method
- save send success to a new sorted set digest:{interval}:byUid
* feat: continuing work on digest tools
- Added ACP page to view digest settings and delivery times per user
* feat: added paginator and stub buttons for resending digest
* feat: wrapping up digest revamp
- New language strings in ACP digest page
- Client-side ACP script for digest ACP page
- Websocket call for ACP page to execute digests
- Broke out logic to retrieve user digest settings to getUsersInterval
* fix: minor cleanup
* fix: #8010 and some style suggestions from baris
* fix: resolve confusing comment
* Add filter:topic.delete
* Don't return undefined data
* add topic.restore and pass canRestore to filter
* fix some bugs created by conflict resolution and new changes
* more readable hook
* fix styling for TravisCI
* literally just two newlines so that TravisCI builds again
* adding filter:login.check and loginFormEntry[] for the filter:login.build hook, related to nodebb-plugin-spam-be-gone/issues/32
* do not exceed 50 lines per function
* spam-be-gone@0.6.4
* feat: add failing test for pagination
* feat: test
* fix: redis tests
* refactor: remove logs
* fix: add new test
* feat: make sortedSetRangeByScore work with keys on redis
* fix: hardcoded set name
* feat: show topics from readable categories on recent/popular/top
* feat: rewrite unread topics
respect watched categories and followed topics
* fix: term + watched
* Add view users info global privilege
* Show user ip only to global mods and admins
* fix missing comma
* Hide link for users without correct privilege
* move getting privilege information to getAllData
* Hide the link from Global Moderators as well
* Give Global Moderator view:users:info privilege
* Restrict ip in post menu to view:users:info
* add some trailing commas....
* Add privilege to categories test
* Add group privilege to categories test
* add upgrade script
* fix style for TravisCI
* more styling - change spaces to tabs
* some more styling fixes (hopefully final one)
* fix style for Travis CI
* hide ip in chat messages
* Don't show even hidden ips on user profile page
* add filter:manifest.build
Added a hook that lets plugins modify manifest.json, as suggested in https://community.nodebb.org/post/59670
* Added error handling
Thanks barisusakli
* Define next
* Pass data as an object
* Remove multiple spaces
* feat: test psql without defineProperty
* feat: refactor psql
remove .bind calls, use module.pool.query directly
move requires to top of file
move promisify to bottom so .init etc are promisified
* feat: mongodb
move requires to bottom
* feat: redis
A use-case was presented that called for a theme to disable the
registration interstitials. However, the plugin hooks were always
fired first, and so the core interstitials could not be removed
at that time because they hadn't been added yet.
This change moved the interstitial adding to the earliest point
possible, right after plugins.loadedHooks is emptied in preparation
for plugin initialisation.
* fix: removed duplicate checkContent call in addMessage
addMessage is called in one place (sendMessage), and the checks
are already contained there. addMessage is the lower level call
and so should be called only from within core itself.
* feat: #7330 chat system messages for join, leave, rename
* fix: add back content checking in .addMessage();
* fix: tests, and added .addSystemMessage() method
Tests were relying on message indices that changed due to the
new system messages.
* feat: add tests for system chat messages
* refactor: rewrite half of src/messaging/rooms.js, fix tests
* feat: #7743 messaging/room.js
* fix: tests for messaging/room.js, #7743
* fix: trying to fix tests
* fix: omg :rage2:
This is an old check back when the sorted set that messages were
appended to depended on what users were in the chat room. Once
messages were refactored (in 2017) to use roomIds, this is no
longer a limitation of the platform and users should be free to
talk to themselves all they want.
* feat: added new admin option newbiePostEditDuration
Also:
- Grammar-checked a couple language strings
- Moved a couple form inputs around in new user restrictions
- Added a test for the new option
- fix: 'defore' typo
* feat: added API route for retrieving analytics via REST API
* feat: sets is now optional, can pass in multiple sets
* fix: moved expand and added json button to panel header
* fix: matching api params to socket method
* fix: update json api button url on graph change
* fix: updated default counts based on passed in units
In not-so-rare circumstances, the avatar generated is wrapped in
an anchor so that when clicked, it goes to the user profile.
Unfortunately, html 4 spec doesn't like block level elements
inside anchors (since an anchor is an inline element), and even
though we define html5 doctype, browsers still reorder the div
and anchor, beats me as to why.
So I can trick the browser by using a span. The css already styles
it as inline-block so no further fixes are required.
There's reason to believe that upgrade scripts will run faster
if the system isn't spending a non-insignificant amount of
resources simply drawing the progress bar. Closes#7711
Some context: https://github.com/npm/npm/issues/11283
* feat: helper for building avatars
* feat: benchpress truefalse globals, componentPrefix in buildAvatar
* refactor: remove componentPrefix
* feat: changes to buildAvatar helper
- removed extra .avatar-xl class in generics.less
- added support for component override
- "size" can be a number now
* fix: prevent overflow of alt text in avatars
* fix: update doc on buildAvatar helper
* feat: only watch active plugins/themes
* fix: remove log
* fix: remove left over glob
* fix: remove test glob
* feat: watch baseThemes as well
* feat: dont watch upgrade scripts
* feat: awaitable websockets
Adding in conditionals to check the method to call, and handling
it as a promise vs. a regular function depending on whether the
method itself is an asynchronous function.
* fix: switch to .then-checking for awaitable check
* fix: proper use of .then check
* feat: add enable/disable checkbox for plugin usage
* feat: submit plugin data to packages.nodebb.org
only submit in production mode
submit once every 24 hours
dont submit for plugins that have "private": true in plugin.json
enabled on new installs
disabled on existing installs
* fix: hash not working after first send
fix statusCode
* fix: remove url
* feat: show compatibilty
* feat: add install question for submit plugin usage
* feat: design revamp of ACP events page
- minor UX changes
- new filter controls, filters moved to sidebar
- form usable without js
- start/end filters NOT programmed yet
* feat: events ACP limit by date and perPage
* feat: pre-fill applied filters on template render
* fix: missing translation for ACP events perPage filter
* fix: added some comments to explain setHours behaviour
* fix: stop - start + 1
* fix: socket tests
* fix: +inf, not just inf
* fix: tests, because I am an idiot
* feat: add upgrade script to give mods privs
* feat: give all privileges when making a moderator
* feat: remove implicit privs
* feat: give global mods default privs
* feat: more priv fixes
* feat: use lodash
* fix: remove implicit mod priv from topic delete
* fix: more privs
* fix: posts.canEdit
* fix: canDelete and canEdit
* fix: tests, remove console.log
* feat: shorter functions
* feat: add tests
* fix: uids
* fix: redis random test fail
sets.groupNames is an array that contains other arrays of groupnames so passing it to getMembersOfGroups returned wrong results when there were more than 1 element in it.
* fix: #7604 shortened CTA text and added custom text for some notifs
Specifically, new-reply and new-chat have different CTA text as they
do not go to the forum home like other email templates send users to.
* fix: minor optimization as suggested by @barisusakli
* feat: wip -- refresh meta tags on ajaxify
* feat: wrapped up meta tags update on ajaxify feature
* fix: removed commented-out line
* fix: removed another commented-out line
* feat: ability to copy a groups privileges
ability to copy a group's privileges to all categories, or children of current category
* feat: switch to dropdown
added copy from category to groups
* fix: indents
* fix: cache refactor
db.getObjectField no longer loads entire object
db.getObjectsFields only clones data once
more tests
* feat: add back cache to redis
db.getObjectField no longer loads entire object
* auto unban when User.getUsersFields is called and the user is banned but has expired
* cleanups and removal of expiry_readable
* expiry_readable make an alias for backward compatibility
* User.bans.func vs User.*ban*Func
* console.log cleanups, plus todo message added
* use code util.deprecate
* fix: remove ununsed winston require
On uploading a new profile picture via URL, a CORS error presents
itself during the .toDataUrl() call due to misconfigured CORS
handling in the library. The change here allows cropper.js to
check crossorigin attribute in image and handle appropriately.
Also, the error handling is improved so the error is caught on
Firefox, as it sends a different error message than on Chrome.
* fix: display proper site logo or og-image with sizes in head
* fix: refactor og:image logic, #7444
- Updated logic to set additional og:image tags based on more
factors
- logo.png fallback
* feat: save image sizes on post upload, re: #7444
* fix: awaiting addTags in topic controller
* fix: pass strings to meta tags object
* fix: sending absolute image url to meta tag
* fix: removed unneeded async and requiring sync db
* feat: upgrade to calculate image sizes for all post uploads tracked
* fix: tests
* feat: re-designed digest
Updated design, logic no longer shows "no topics", just doesn't
show the list at all, teaser re-retrieved for digest so that it
always grabs a teaser even if there is no reply, changed default
email background to a light grey.
* fix: minor padding issues in digest
* fix: banned template
* fix: invitation.tpl
* fix: removed unused notif_chat and notif_post email templates
* fix: notification template
* fix: registration_accepted template
* fix: reset tpl
* fix: test tpl
* fix: email verify tpl
* fix: reset notify tpl
* fix: welcome tpl
* fix: additional minor font fixes
* fix: removed unused email header image assets
* fix: internationalised 'your daily digest' string
* fix: broken url in digest 🤦
* feat: added RTL support for emailer
/cc @PostMidnight
related to julianlam/nodebb-plugin-session-sharing#73
These three lines haven't changed in two years, but it makes more
sense for them to be called against the relative path router,
otherwise req.originalUrl contains the relative path, which is
not necessary.
Used in authentication middleware. Instead of firing an action
hook, it now fires a response hook.
Response hooks are invoked serially, and if headers are sent from
one of the hook listeners, all subsequent hook methods are not
called.
Response hooks should only be used in situations where res.send
(or other like methods) are invoked. Existing plugin hooks that
pass in res purely for data retrieval purposes have not changed).
fixesnodebb/nodebb-plugin-write-api#101
2019-01-19 14:49:22 -05:00
2934 changed files with 72968 additions and 48475 deletions
"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.",
"custom-header.description":"أدخل HTML الخاصة بك هنا (مثل العلامات الوصفية، وما إلى ذلك)، والتي سيتم إلحاقها الى<code><head></code> في تصميم المنتدى. يسمح باستخدام علامات النص البرمجي، ولكن سيتم تعطيلها؛ لتوفر تبويبة\n<a href=\"#custom-header\" data-toggle=\"tab\">Javascript المخصصة</a>",
"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.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.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>",
"running-in-development":"المنتدى قيد التشغيل في وضع \"المطورين\". وقد تكون هناك ثغرات أمنية مفتوحة؛ من فضلك تواصل مع مسؤول نظامك.",
"latest-lookup-failed":"<p>Failed to look up latest available version of NodeBB</p>",
"notices":"إشعارات",
"restart-not-required":"إعادة التشغيل غير مطلوب",
"restart-required":"إعادة التشغيل مطلوبة",
"search-plugin-installed":"إضافة البحث منصبة",
"search-plugin-not-installed":"إضافة البحث غير منصبة",
"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.",
"maintenance-mode":"وضع الصيانة",
"maintenance-mode-title":"انقر هنا لإعداد وضع الصيانة لـNodeBB",
"page-views-custom-help":"أدخل نطاقا زمنيا لمرات مشاهدة الصفحات التي ترغب في عرضها. إذا لم يظهر منتقي التاريخ، فإن التنسيق المقبول هو <code>YYYY-MM-DD</code>",
"page-views-custom-error":"الرجاء إدخال نطاق تاريخ صالح بالتنسيق <code>YYYY-MM-DD</code>",
"optional-clone-settings":"(Optional) Clone Settings From Category",
"clone-children":"Clone Children Categories And Settings",
@@ -25,16 +27,19 @@
"enable":"Enable",
"disable":"Disable",
"edit":"Edit",
"analytics":"Analytics",
"view-category":"View category",
"select-category":"Select Category",
"set-parent-category":"Set Parent Category",
"privileges.description":"You can configure the access control privileges for this category in this section. Privileges can be granted on a per-user or a per-group basis. Select the domain of effect from the dropdown below.",
"privileges.description":"You can configure the access control privileges for portions of the site in this section. Privileges can be granted on a per-user or a per-group basis. Select the domain of effect from the dropdown below.",
"privileges.category-selector":"Configuring privileges for ",
"privileges.warning":"<strong>Note</strong>: Privilege settings take effect immediately. It is not necessary to save the category after adjusting these settings.",
"privileges.no-users":"No user-specific privileges in this category.",
@@ -43,7 +48,12 @@
"privileges.search-group":"Add Group",
"privileges.copy-to-children":"Copy to Children",
"privileges.copy-from-category":"Copy from Category",
"privileges.copy-privileges-to-all-categories":"Copy to All Categories",
"privileges.copy-group-privileges-to-children":"Copy this group's privileges to the children of this category.",
"privileges.copy-group-privileges-to-all-categories":"Copy this group's privileges to all categories.",
"privileges.copy-group-privileges-from":"Copy this group's privileges from another category.",
"privileges.inherit":"If the <code>registered-users</code> group is granted a specific privilege, all other groups receive an <strong>implicit privilege</strong>, even if they are not explicitly defined/checked. This implicit privilege is shown to you because all users are part of the <code>registered-users</code> user group, and so, privileges for additional groups need not be explicitly granted.",
"privileges.copy-success":"Privileges copied!",
"analytics.back":"Back to Categories List",
"analytics.title":"Analytics for \"%1\" category",
@@ -68,7 +78,9 @@
"alert.user-search":"Search for a user here...",
"alert.find-group":"Find a Group",
"alert.group-search":"Search for a group here...",
"alert.not-enough-whitelisted-tags":"Whitelisted tags are less than minimum tags, you need to create more whitelisted tags!",
"lead":"A listing of digest delivery stats and times is displayed below.",
"disclaimer":"Please be advised that email delivery is not guaranteed, due to the nature of email technology. Many variables factor into whether an email sent to the recipient server is ultimately delivered into the user's inbox, including server reputation, blacklisted IP addresses, and whether DKIM/SPF/DMARC is configured.",
"disclaimer-continued":"A successful delivery means the message was sent successfully by NodeBB and acknowledged by the recipient server. It does not mean the email landed in the inbox. For best results, we recommend using a third-party email delivery service such as <a href=\"https://sendgrid.com/why-sendgrid/\">SendGrid</a>.",
"user":"User",
"subscription":"Subscription Type",
"last-delivery":"Last successful delivery",
"default":"System default",
"default-help":"<em>System default</em> means the user has not explicitly overridden the global forum setting for digests, which is currently: "<strong>%1</strong>"",
"resend":"Resend Digest",
"resend-all-confirm":"Are you sure you wish to manually execute this digest run?",
"description":"There are no posts in the post queue. <br> To enable this feature, go to <a href=\"%1\">Settings → Post → Posting Restrictions</a> and enable <strong>Post Queue</strong>.",
"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>.",
"alerts.validate-force-password-reset-success":"User(s) passwords have been reset and their existing sessions have been revoked.",
"alerts.password-reset-confirm":"Do you want to send password reset email(s) to these user(s)?",
"alerts.confirm-delete":"<b>Warning!</b><br/>Do you really want to delete user(s)?<br/> This action is not reversable! Only the user account will be deleted, their posts and topics will remain.",
"alerts.confirm-delete":"<strong>Warning!</strong><p>Do you really want to delete <strong>user(s)</strong>?</p><p>This action is not reversible! Only the user account will be deleted, their posts and topics will remain.</p>",
"alerts.delete-success":"User(s) Deleted!",
"alerts.confirm-purge":"<b>Warning!</b><br/>Do you really want to delete user(s) and their content?<br/> This action is not reversable! All user data and content will be erased!",
"alerts.confirm-delete-content":"<strong>Warning!</strong><p>Do you really want to delete these user(s) <strong>content</strong>?</p><p>This action is not reversible! The users' accounts will remain, but their posts and topics will be deleted.</p>",
"alerts.confirm-purge":"<strong>Warning!</strong><p>Do you really want to delete <strong>user(s) and their content</strong>?</p><p>This action is not reversible! All user data and content will be erased!</p>",
"alerts.create":"Create User",
"alerts.button-create":"Create",
"alerts.button-cancel":"Cancel",
@@ -95,5 +108,5 @@
"alerts.prompt-email":"Emails: ",
"alerts.email-sent-to":"An invitation email has been sent to %1",
"alerts.x-users-found":"%1 user(s) found! Search took %2 ms."
"maintenance-mode.help":"When the forum is in maintenance mode, all requests will be redirected to a static holding page. Administrators are exempt from this redirection, and are able to access the site normally.",
"maintenance-mode.status":"Maintenance Mode Status Code",
"maintenance-mode.message":"Maintenance Message",
"headers":"Headers",
"headers.allow-from":"Set ALLOW-FROM to Place NodeBB in an iFrame",
@@ -14,14 +15,20 @@
"headers.acah":"Access-Control-Allow-Headers",
"hsts":"Strict Transport Security",
"hsts.enabled":"Enabled HSTS (recommended)",
"hsts.maxAge":"HSTS Max Age",
"hsts.subdomains":"Include subdomains in HSTS header",
"hsts.preload":"Allow preloading of HSTS header",
"hsts.help":"If enabled, an HSTS header will be set for this site. You can elect to include subdomains and preloading flags in your header. If in doubt, you can leave these unchecked. <a href=\"%1\">More information <i class=\"fa fa-external-link\"></i></a>",
"traffic-management":"Traffic Management",
"traffic.help":"NodeBB deploys equipped with a module that automatically denies requests in high-traffic situations. You can tune these settings here, although the defaults are a good starting point.",
"traffic.help":"NodeBB uses a module that automatically denies requests in high-traffic situations. You can tune these settings here, although the defaults are a good starting point.",
"traffic.enable":"Enable Traffic Management",
"traffic.event-lag":"Event Loop Lag Threshold (in milliseconds)",
"traffic.event-lag-help":"Lowering this value decreases wait times for page loads, but will also show the \"excessive load\" message to more users. (Restart required)",
"traffic.lag-check-interval":"Check Interval (in milliseconds)",
"traffic.lag-check-interval-help":"Lowering this value causes NodeBB to become more sensitive to spikes in load, but may also cause the check to become too sensitive. (Restart required)"
"traffic.lag-check-interval-help":"Lowering this value causes NodeBB to become more sensitive to spikes in load, but may also cause the check to become too sensitive. (Restart required)",
"sendmail-rate-delta":"... every <em>X</em> milliseconds",
"sendmail-rate-help":"Instructs the NodeBB mailer to limit the number of messages sent at once in order to not overwhelm email receiving services. These options do not apply if SMTP Transport is enabled (below).",
"smtp-transport":"SMTP Transport",
"smtp-transport.enabled":"Use an external email server to send emails",
@@ -30,8 +33,8 @@
"testing.select":"Select Email Template",
"testing.send":"Send Test Email",
"testing.send-help":"The test email will be sent to the currently logged in user's email address.",
"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>"
"description":"تُحدد اللغة الافتراضية إعدادات اللغة لجميع المستخدمين الذين يزورون المنتدى. <br />يمكن للأعضاء تجاوز اللغة الافتراضية من خلال صفحة إعدادات الحساب الخاصة بهم.",
"default-language":"اللغة الافتراضية",
"auto-detect":"الكشف عن إعدادات اللغة للزوار بشكل آلي"
"restrictions.post-queue-rep-threshold":"Reputation required to bypass post queue",
"restrictions.groups-exempt-from-post-queue":"Select groups that should be exempt from the post queue",
"restrictions-new.post-queue":"Enable new user restrictions",
"restrictions.post-queue-help":"Enabling post queue will put the posts of new users in a queue for approval.",
"restrictions-new.post-queue-help":"Enabling new user restrictions will set restrictions on posts created by new users.",
"restrictions.seconds-between":"Seconds between posts",
"restrictions.post-queue-help":"Enabling post queue will put the posts of new users in a queue for approval",
"restrictions-new.post-queue-help":"Enabling new user restrictions will set restrictions on posts created by new users",
"restrictions.seconds-between":"Number of seconds between posts",
"restrictions.seconds-between-new":"Seconds between posts for new users",
"restrictions.rep-threshold":"Reputation threshold before these restrictions are lifted",
"restrictions.seconds-defore-new":"Seconds before new user can post",
"restrictions.seconds-edit-after":"Number of seconds before users are allowed to edit posts after posting. (0 disabled)",
"restrictions.seconds-delete-after":"Number of seconds before users are allowed to delete posts after posting. (0 disabled)",
"restrictions.replies-no-delete":"Number of replies after users are disallowed to delete their own topics. (0 disabled)",
"restrictions.seconds-before-new":"Seconds before a new user can make their first post",
"restrictions.seconds-edit-after":"Number of seconds a post remains editable (set to 0 to disable)",
"restrictions.seconds-delete-after":"Number of seconds a post remains deletable (set to 0 to disable)",
"restrictions.replies-no-delete":"Number of replies after users are disallowed to delete their own topics (set to 0 to disable)",
"restrictions.min-title-length":"Minimum Title Length",
"restrictions.max-title-length":"Maximum Title Length",
"restrictions.min-post-length":"Minimum Post Length",
@@ -29,6 +32,8 @@
"timestamp":"Timestamp",
"timestamp.cut-off":"Date cut-off (in days)",
"timestamp.cut-off-help":"Dates & times will be shown in a relative manner (e.g. \"3 hours ago\" / \"5 days ago\"), and localised into various\n\t\t\t\t\tlanguages. After a certain point, this text can be switched to display the localised date itself\n\t\t\t\t\t(e.g. 5 Nov 2016 15:30).<br /><em>(Default: <code>30</code>, or one month). Set to 0 to always display dates, leave blank to always display relative times.</em>",
"timestamp.necro-threshold":"Necro Threshold (in days)",
"timestamp.necro-threshold-help":"A message will be shown between posts if the time between them is longer than the necro threshold. (Default: <code>7</code>, or one week). Set to 0 to disable.</em>",
"teaser":"Teaser Post",
"teaser.last-post":"Last – Show the latest post, including the original post, if no replies",
"teaser.last-reply":"Last – Show the latest reply, or a \"No replies\" placeholder if no replies",
@@ -37,6 +42,7 @@
"unread.cutoff":"Unread cutoff days",
"unread.min-track-last":"Minimum posts in topic before tracking last read",
"recent":"Recent Settings",
"recent.max-topics":"Maximum topics on /recent",
"recent.categoryFilter.disable":"Disable filtering of topics in ignored categories on the /recent page",
"private-extensions":"File extensions to make private",
"private-uploads-extensions-help":"Enter comma-separated list of file extensions to make private here (e.g. <code>pdf,xls,doc</code>). An empty list means all files are private.",
"resize-image-width-threshold":"Resize images if they are wider than specified width",
"gdpr_enabled_help":"When enabled, all new registrants will be required to explicitly give consent for data collection and usage under the <a href=\"https://eugdpr.org/the-regulation/gdpr-faqs/\">General Data Protection Regulation (GDPR)</a>. <strong>Note</strong>: Enabling GDPR does not force pre-existing users to provide consent. To do so, you will need to install the GDPR plugin.",
"gdpr_enabled_help":"When enabled, all new registrants will be required to explicitly give consent for data collection and usage under the <a href=\"https://ec.europa.eu/info/priorities/justice-and-fundamental-rights/data-protection/2018-reform-eu-data-protection-rules/eu-data-protection-rules_en\">General Data Protection Regulation (GDPR)</a>. <strong>Note</strong>: Enabling GDPR does not force pre-existing users to provide consent. To do so, you will need to install the GDPR plugin.",
"disable-username-changes":"عدم السماح بتغيير اسم المستخدم",
"registration-type.admin-approval-ip":"بموافقة الإدارة لعناوين IP",
"registration-type.invite-only":"بالدعوات فقط",
"registration-type.admin-invite-only":"بالدعوات من قبل الإدارة فقط",
"registration-type.disabled":"لا يوجد تسجيل",
"registration-type.help":"عادي - بإمكان المستخدمين التسجيل من خلال صفحة /التسجيل.<br/>\nبموافقة الإدارة - يتم وضع قائمة تسجيلات المستخدمين في <a href=\"%1/admin/manage/registration\">قائمة إنتظار موافقة</a> الإدارة.<br/>\nبموافقة الإدارة لعناوين IP - عادي بالنسبة للمستخدمين الجدد، ويتطلب موافقة الإدارة للتسجيل من عناوين IP تم التسجيل بإستخدامها مسبقاً.<br/>\nبالدعوات فقط - بإمكان المستخدمين إرسال دعوات من خلال صفحة <a href=\"%1/users\" target=\"_blank\">الأعضاء</a>.<br/>\nبالدعوات من قبل الإدارة فقط - فقط المراء بإمكانهم إرسال الدعوات من خلال صفحة <a href=\"%1/users\" target=\"_blank\">الأعضاء</a> و صفحات <a href=\"%1/admin/manage/users\">الإدارة/المشرفين/الأعضاء</a>.<br/>\nلا يوجد تسجيل - إغلاق خيار التسجيل بالكامل.<br/>",
"registration-type.help":"Normal - Users can register from the /register page.<br/>\nInvite Only - Users can invite others from the <a href=\"%1/users\" target=\"_blank\">users</a> page.<br/>\nAdmin Invite Only - Only administrators can invite others from <a href=\"%1/users\" target=\"_blank\">users</a> and <a href=\"%1/admin/manage/users\">admin/manage/users</a> pages.<br/>\nNo registration - No user registration.<br/>",
"registration-approval-type.help":"Normal - Users are registered immediately.<br/>\nAdmin Approval - User registrations are placed in an <a href=\"%1/admin/manage/registration\">approval queue</a> for administrators.<br/>\nAdmin Approval for IPs - Normal for new users, Admin Approval for IP addresses that already have an account.<br/>",
"registration.max-invites":"الحد الأقصى للدعوات لكل عضو",
"max-invites":"الحد الأقصى للدعوات لكل عضو",
"max-invites-help":"0 لعدم تحديد قيود، الإدارة تحصل على دعوات لامحدودة <br> هذا الخيار يعمل فقط عند تحديد خيار \"بالدعوات فقط\"",
"invalid-pagination-value":"رقم الصفحة غير صحيح ، يجب أن يكون بين %1 و %2 .",
"username-taken":"اسم المستخدم مأخوذ",
"email-taken":"البريد الالكتروني مأخوذ",
"email-not-confirmed":"عنوان بريدك الإلكتروني غير مفعل بعد. انقر هنا لتفعيله من فضلك.",
"email-not-confirmed":"You are unable to post until your email is confirmed, please click here to confirm your email.",
"email-not-confirmed-chat":"لا يمكنك الدردشة حتى تقوم بتأكيد بريدك الإلكتروني، الرجاء إضغط هنا لتأكيد بريدك اﻹلكتروني.",
"email-not-confirmed-email-sent":"بريدك الإلكتروني غير مفعل. رجاءًا تفحص صندوق البريد عن رسالة التفعيل.",
"email-not-confirmed-email-sent":"Your email has not been confirmed yet, please check your inbox for the confirmation email. You won't be able to post or chat until your email is confirmed.",
"no-email-to-confirm":"هذا المنتدى يستلزم تفعيل بريدك الإلكتروني، انقر هنا من فضلك لإدخاله.",
"sendmail-not-found":"The sendmail executable could not be found, please ensure it is installed and executable by the user running NodeBB.",
"digest-not-enabled":"This user does not have digests enabled, or the system default is not configured to send digests",
"username-too-short":"اسم المستخدم قصير.",
"username-too-long":"اسم المستخدم طويل",
"password-too-long":"كلمة السر طويلة ",
"reset-rate-limited":"Too many password reset requests (rate limited)",
"user-banned":"المستخدم محظور",
"user-banned-reason":"Sorry, this account has been banned (Reason: %1)",
"user-banned-reason-until":"Sorry, this account has been banned until %1 (Reason: %2)",
@@ -98,6 +103,8 @@
"group-needs-owner":"هذه المجموعة تتطلب مالك واحد على اﻷقل",
"group-already-invited":"المستخدم سبق وأن تمت دعوته",
"group-already-requested":"سبق وتم تسجيل طلب العضوية",
"group-join-disabled":"You are not able to join this group at this time",
"group-leave-disabled":"You are not able to leave this group at this time",
"post-already-deleted":"سبق وتم حذف هذا الرد",
"post-already-restored":"سبق وتم إلغاء حذف هذا الرد",
"topic-already-deleted":"سبق وتم حذف هذا الموضوع",
@@ -131,8 +138,13 @@
"not-enough-reputation-min-rep-signature":"You do not have enough reputation to add a signature",
"not-enough-reputation-min-rep-profile-picture":"You do not have enough reputation to add a profile picture",
"not-enough-reputation-min-rep-cover-picture":"You do not have enough reputation to add a cover picture",
"already-flagged":"لقد بلغت عن هذه المشاركة من قبل.",
"post-already-flagged":"You have already flagged this post",
"user-already-flagged":"You have already flagged this user",
"post-flagged-too-many-times":"This post has been flagged by others already",
"user-flagged-too-many-times":"This user has been flagged by others already",
"self-vote":"You cannot vote on your own post",
"too-many-downvotes-today":"You can only downvote %1 times a day",
"too-many-downvotes-today-user":"You can only downvote a user %1 times a day",
"reload-failed":"المنتدى واجه مشكلة أثناء إعادة التحميل: \"%1\". سيواصل المنتدى خدمة العملاء السابقين لكن يجب عليك إلغاء أي تغيير قمت به قبل إعادة التحميل.",
"registration-error":"حدث خطأ أثناء التسجيل",
"parse-error":"حدث خطأ ما أثناء تحليل استجابة الخادم",
@@ -143,7 +155,6 @@
"invite-maximum-met":"لقد قمت بدعوة الحد الأقصى من الأشخاص (%1 من %2)",
"no-session-found":"لم دخول مسجل!",
"not-in-room":"المستخدم غير موجود في الغرفة.",
"no-users-in-room":"لا يوجد مستخدمين في الغرفة.",
"cant-kick-self":"لا يمكنك طرد نفسك من المجموعة.",
"no-users-selected":"لا يوجد مستخدم محدد.",
"invalid-home-page-route":"Invalid home page route",
"enter_email":"يرجى إدخال <strong>عنوان البريد الإلكتروني</strong> الخاص بك وسوف نرسل لك رسالة بالبريد الالكتروني مع تعليمات حول كيفية إستعادة حسابك.",
"enter_email_address":"ادخل عنوان البريد الإلكتروني",
"password_reset_sent":"A password reset email has been sent to the specified address. Please note that only one email will be sent per minute.",
"password_reset_sent":"If the specified address corresponds to an existing user account, a password reset email was sent. Please note that only one email will be sent per minute.",
"invalid_email":"بريد إلكتروني غير صالح أو غير موجود",
"password_too_short":"كلمة المرور التي أدخلتها قصيرة، الرجاء اختر كلمة مرور مختلفة",
"passwords_do_not_match":"كلمتا السر التي أدخلتهما غير متطابقتان",
"bookmark_instructions":"اضغط هنا للعودة لأخر مشاركة مقروءة في الموضوع",
"flag_title":"إشعار بمشاركة مخلة.",
"merged_message":"This topic has been merged into <a href=\"/topic/%1\">%2</a>",
"flag-post":"Flag this post",
"flag-user":"Flag this user",
"already-flagged":"Already Flagged",
"view-flag-report":"View Flag Report",
"merged_message":"This topic has been merged into <a href=\"%1\">%2</a>",
"deleted_message":"هذه المشاركة محذوفة. فقط من لهم صلاحية الإشراف على ا لمشاركات يمكنهم معاينتها.",
"following_topic.message":"ستستلم تنبيها عند كل مشاركة جديدة في هذا الموضوع.",
"not_following_topic.message":"You will see this topic in the unread topics list, but you will not receive notifications when somebody posts to this topic.",
@@ -64,6 +69,7 @@
"thread_tools.move":"نقل الموضوع",
"thread_tools.move-posts":"Move Posts",
"thread_tools.move_all":"نقل الكل",
"thread_tools.change_owner":"Change Owner",
"thread_tools.select_category":"Select Category",
"thread_tools.fork":"إنشاء فرع الموضوع",
"thread_tools.delete":"حذف الموضوع",
@@ -96,10 +102,15 @@
"fork_pid_count":"1% مشاركة محددة",
"fork_success":"تم إنشاء فرع للموضوع بنجاح! إضغط هنا لمعاينة الفرع.",
"delete_posts_instruction":"Click the posts you want to delete/purge",
"merge_topics_instruction":"Click the topics you want to merge",
"merge_topics_instruction":"Click the topics you want to merge or search for them",
"merge-topic-list-title":"List of topics to be merged",
"merge-options":"Merge options",
"merge-select-main-topic":"Select the main topic",
"merge-new-title-for-topic":"New title for topic",
"move_posts_instruction":"Click the posts you want to move",
"change_owner_instruction":"Click the posts you want to assign to another user",
"composer.title_placeholder":"أدخل عنوان موضوعك هنا...",
"composer.handle_placeholder":"اﻹسم",
"composer.handle_placeholder":"Enter your name/handle here",
"composer.discard":"نبذ التغييرات",
"composer.submit":"حفظ",
"composer.replying_to":"الرد على %1",
@@ -129,5 +140,10 @@
"diffs.description":"This post has <strong>%1</strong> revisions. Click one of the revisions below to see the post content at that point in time.",
"diffs.no-revisions-description":"This post has <strong>%1</strong> revisions.",
"diffs.current-revision":"current revision",
"diffs.original-revision":"original revision"
"diffs.original-revision":"original revision",
"diffs.restore":"Restore this revision",
"diffs.restore-description":"A new revision will be appended to this post's edit history.",
"diffs.post-restored":"Post successfully restored to earlier revision",
"delete_account_confirm":"Are you sure you want to delete your account? <br /><strong>This action is irreversible and you will not be able to recover any of your data</strong><br /><br />Enter your password to confirm that you wish to destroy this account.",
"delete_this_account_confirm":"هل انت متأكد من رغبتك بحذف هذا الحساب؟ <br /> <strong>هذا الإجراء لا رجعة فيه ولن تتمكن من استرداد أي بيانات</strong><br /><br />",
"delete_all":"Delete <strong>Account</strong> and <strong>Content</strong>",
"delete_account_confirm":"Are you sure you want to anonymize your posts and delete your account?<br /><strong>This action is irreversible and you will not be able to recover any of your data</strong><br /><br />Enter your password to confirm that you wish to destroy this account.",
"delete_this_account_confirm":"Are you sure you want to delete this account while leaving its contents behind?<br /><strong>This action is irreversible, posts will be anonymized, and you will not be able to restore post associations with the deleted account</strong><br /><br />",
"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 />",
"follow_topics_you_reply_to":"متابعة المواضيع التي تقوم بالرد عليها",
"follow_topics_you_create":"متابعة المواضيع التي تقوم بإنشائها",
"grouptitle":"عنوان المجموعة",
"group-order-help":"Select a group and use the arrows to order titles",
"no-group-title":"لا يوجد عنوان للمجموعة",
"select-skin":"إختر سمة",
"select-homepage":"إختر الصفحة الرئيسية",
@@ -142,6 +151,7 @@
"info.ban-history":"سجل الحظر الأحدث",
"info.no-ban-history":"هذا المستخدم لم يتم حظره مطلقا",
"info.banned-until":"محظور حتى %1",
"info.banned-expiry":"Expiry",
"info.banned-permanently":"محظور بشكل دائم",
"info.banned-reason-label":"سبب",
"info.banned-no-reason":"لم يتم إعطاء سبب.",
@@ -168,7 +178,10 @@
"consent.right_to_erasure_description":"At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account <strong>and</strong> your content, please contact the administrative team for this website.",
"consent.right_to_data_portability":"You have the Right to Data Portability",
"consent.right_to_data_portability_description":"You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.",
"mongo.unauthorized":"NodeBB не успя да получи нужните статистики от MongoDB. Моля, уверете се, че потребителят, който се използва от NodeBB, включва ролята „clusterMonitor“ за базата данни „admin“.",
"custom-js.enable":"Включване на персонализирания код на Javascript",
"custom-header":"Персонализирана заглавна част",
"custom-header.description":"Въведете своя персонализиран код HTML тук (напр. елементи „meta“ и т.н.), те ще бъдат добавени към секцията <code><head></code> в кода на Вашия форум. Ползването на елементи „script“ е позволено, но непрепоръчително, тъй като за това можете да ползвате раздела <a href=\"#custom-header\" data-toggle=\"tab\">Персонализиран код на Javascript</a>.",
"custom-header.description":"Въведете своя персонализиран код HTML тук (напр. елементи „meta“ и т.н.), те ще бъдат добавени към секцията <code><head></code> в кода на Вашия форум. Ползването на елементи „script“ е позволено, но непрепоръчително, тъй като за това можете да ползвате раздела <a href=\"#custom-js\" data-toggle=\"tab\">Персонализиран код на Javascript</a>.",
"custom-header.enable":"Включване на персонализирана заглавна част",
"custom-css.livereload":"Включване на моменталното презареждане",
"page-views-custom-help":"Въведете интервал от дати, за които искате да видите преглежданията на страниците. Ако не се появи календар за избор, можете да въведете датите във формат: <code>ГГГГ-ММ-ДД</code>",
"page-views-custom-error":"Моля, въведете правилен интервал от дати във формата: <code>ГГГГ-ММ-ДД</code>",
"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, за да се възползвате от последните подобрения на сигурността и поправки на проблеми.",
"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>",
"running-in-development":"<span>Форумът работи в режим за разработчици, така че може да бъде уязвим. Моля, свържете се със системния си администратор.</span>",
"latest-lookup-failed":"<p>Не може да бъде извършена проверка за последната налична версия на NodeBB</p>",
"search-plugin-installed":"Добавката за търсене е инсталирана",
"search-plugin-not-installed":"Добавката за търсене не е инсталирана",
"search-plugin-tooltip":"Инсталирайте добавка за търсене от страницата с добавките, за да включите функционалността за търсене",
"control-panel":"Системен контрол",
"rebuild-and-restart":"Повторно изграждане и рестартиране",
"restart":"Рестартиране",
"restart-warning":"Повторното изграждане и рестартирането на NodeBB ще прекъснат всички връзки за няколко секунди.",
"restart-disabled":"Възможностите за повторно изграждане и рестартиране на NodeBB са изключени, тъй като изглежда, че NodeBB не се изпълнява чрез подходящия демон.",
"maintenance-mode":"Режим на профилактика",
"maintenance-mode-title":"Щракнете тук, за да зададете режим на профилактика на NodeBB",
"realtime-chart-updates":"Актуализации на таблиците в реално време",
"active-users":"Дейни потребители",
"active-users.users":"Потребители",
"active-users.guests":"Гости",
"active-users.total":"Общо",
"active-users.connections":"Връзки",
"anonymous-registered-users":"Анонимни към регистрирани потребители",
"anonymous":"Анонимни",
"registered":"Регистрирани",
"user-presence":"Присъствие на потребителите ",
"on-categories":"В списъка с категории",
"reading-posts":"Четящи публикации",
"browsing-topics":"Разглеждащи теми",
"recent":"Скорошни",
"unread":"Непрочетени",
"high-presence-topics":"Теми с най-голяма присъственост",
"graphs.page-views":"Преглеждания на страниците",
"graphs.page-views-registered":"Преглеждания на страниците от регистрирани потребители",
"graphs.page-views-guest":"Преглеждания на страниците от гости",
"graphs.page-views-bot":"Преглеждания на страниците от ботове",
"page-views-custom-help":"Въведете интервал от дати, за които искате да видите преглежданията на страниците. Ако не се появи календар за избор, можете да въведете датите във формат: <code>ГГГГ-ММ-ДД</code>",
"page-views-custom-error":"Моля, въведете правилен интервал от дати във формата: <code>ГГГГ-ММ-ДД</code>",
"optional-clone-settings":"(Незадължително) Копиране на настройките от категория",
"clone-children":"Клониране на дъщерните категории и настройки",
@@ -25,16 +27,19 @@
"enable":"Включване",
"disable":"Изключване",
"edit":"Редактиране",
"analytics":"Анализи",
"view-category":"Преглед на категорията",
"select-category":"Изберете категория",
"set-parent-category":"Задайте базова категория",
"privileges.description":"В тази секция можете да настроите правомощията за достъп до тази категория. Правомощията могат да бъдат давани на отделни потребители или на цели групи. Изберете обхвата на приложение от падащото меню по-долу.",
"privileges.description":"В тази секция можете да настроите правомощията за достъп до различните части на уеб сайта Правомощията могат да бъдат давани на отделни потребители или на цели групи. Изберете обхвата на приложение от падащото меню по-долу.",
"privileges.category-selector":"Настройване на правомощията за ",
"privileges.warning":"<strong>Забележка</strong>: Настройките за правомощията влизат в сила моментално. Нее нужно да запазвате категорията след като промените тези настройки.",
"privileges.section-viewing":"Правомощия за преглед",
"privileges.section-posting":"Правомощия за публикуване",
"privileges.section-moderation":"Правомощия за модериране",
"privileges.section-other":"Други",
"privileges.section-user":"Потребител",
"privileges.search-user":"Добавяне на потребител",
"privileges.no-users":"В тази категория няма правомощия за отделни потребители.",
@@ -43,7 +48,12 @@
"privileges.search-group":"Добавяне на група",
"privileges.copy-to-children":"Копиране в наследниците",
"privileges.copy-from-category":"Копиране от категория",
"privileges.copy-privileges-to-all-categories":"Копиране във всички категории",
"privileges.copy-group-privileges-to-children":"Копиране на правомощията на тази група в поделементите на тази категория.",
"privileges.copy-group-privileges-to-all-categories":"Копиране на правомощията на тази група във всички категории.",
"privileges.copy-group-privileges-from":"Копиране на правомощията на тази група от друга категория.",
"privileges.inherit":"Ако групата на <code>регистрираните потребители</code> получи дадено правомощие, всички останали групи го получават като <strong>подразбиращо се правомощие</strong>, дори то да не им е специално дадено. Вие виждате това подразбиращо се правомощие, защото всички потребители са членове на групата на <code>регистрираните потребители</code>, така че няма нужда да се дават едни и същи правомощия на още групи.",
"privileges.copy-success":"Правомощията са копирани!",
"analytics.back":"Назад към списъка с категориите",
"analytics.title":"Аналитични данни за категорията „%1“",
@@ -68,7 +78,9 @@
"alert.user-search":"Потърсете потребител тук…",
"alert.find-group":"Търсене на група",
"alert.group-search":"Потърсете група тук…",
"alert.not-enough-whitelisted-tags":"Разрешените етикети са по-малко от минимума. Трябва да създадете още разрешени етикети!",
"lead":"По-долу са показани статистики и времена за разпращането на резюмета.",
"disclaimer":"Имайте предвид, че при доставката на е-поща няма гаранции, поради същността на технологията за е-пощата. Много неща влияят на това дали едно изпратено е-писмо настина достига до получателя си, като: репутация на сървъра, блокирани IP адреси или това дали е настроено DKIM/SPF/DMARC.",
"disclaimer-continued":"Успешната доставка означава, че съобщението е изпратено успешно от NodeBB и потвърдено от сървъра на получателя. Това не означава, че писмото е достигнало до входящата кутия на получателя. За да имате по-добри резултати, препоръчвам използването на специализирана услуга за изпращане на е-писма, като <a href=\"https://sendgrid.com/why-sendgrid/\">SendGrid</a>.",
"user":"Потребител",
"subscription":"Вид на абонамента",
"last-delivery":"Последна успешна доставка",
"default":"По подразбиране за системата",
"default-help":"<em>По подразбиране за системата</em> означава, че потребителят не е избрал ръчно друга настройка за глобалния форум за резюметата, която в момента е;„%1</strong>“",
"resend":"Повторно изпращане на резюмето",
"resend-all-confirm":"Наистина ли искате да предизвикате ръчно изпращането на резюмето?",
"resent-single":"Ръчното повторно разпращане на резюмето е завършено",
"resent-day":"Дневното резюме беше изпратено повторно",
"resent-week":"Седмичното резюме беше изпратено повторно",
"resent-month":"Месечното резюме беше изпратено повторно",
"description":"Няма публикации в опашката. <br> За да включите тази функционалност, идете в <a href=\"%1\">Настройки → Публикуване → Ограничения за публикуването</a> и включете <strong>Опашката за публикации</strong>.",
"description":"Няма публикации в опашката. <br> За да включите тази функционалност, идете в <a href=\"%1\">Настройки → Публикуване → Опашка за публикации</a> и включете <strong>Опашката за публикации</strong>.",
"send-validation-email":"Изпращане на е-писмо за потвърждение",
"password-reset-email":"Изпращане на е-писмо за възстановяване на паролата",
"force-password-reset":"Принудително подновяване на паролата и отписване на потребителя",
"ban":"Блокиране на потребителя/ите",
"temp-ban":"Блокиране на потребителя/ите временно",
"unban":"Деблокиране на потребителя/ите",
"reset-lockout":"Нулиране на заключването",
"reset-flags":"Анулиране на докладите",
"delete":"Изтриване на потребителя/ите",
"purge":"Изтриване на потребителя/ите и съдържанието",
"delete":"Изтриване на <strong>потребителя/ите</strong>",
"delete-content":"Изтриване на <strong>съдържанието</strong> на потребителя/ите",
"purge":"Изтриване на <strong>потребителя/ите</strong> и <strong>съдържанието</strong>",
"download-csv":"Сваляне във формат „CSV“",
"manage-groups":"Управление на групите",
"add-group":"Добавяне на група",
"invite":"Покана",
"new":"Нов потребител",
@@ -27,6 +31,11 @@
"pills.banned":"Блокиран",
"pills.search":"Търсене на потребители",
"50-per-page":"50 на страница",
"100-per-page":"100 на страница",
"250-per-page":"250 на страница",
"500-per-page":"500 на страница",
"search.uid":"По потребителски идентификатор",
"search.uid-placeholder":"Въведете потребителски идентификатор, който да потърсите",
"search.username":"По име на потребител",
@@ -81,11 +90,15 @@
"alerts.confirm-remove-moderator":"Наистина ли искате да премахнете този модератор?",
"alerts.remove-moderator-success":"Потребителят вече няма да бъде модератор.",
"alerts.confirm-validate-email":"Искате ли да проверите е-пощата/ите на този/тези потребител(и)?",
"alerts.confirm-force-password-reset":"Наистина ли искате принудително да подновите паролата и да отпишете потребителя или потребителите?",
"alerts.validate-email-success":"Е-пощите са проверени",
"alerts.validate-force-password-reset-success":"Паролата на потребителя (или паролите на потребителите) беше подновена и сесията му беше прекратена.",
"alerts.password-reset-confirm":"Искате ли да изпратите е-писмо/а за възстановяване на паролата на този/тези потребител(и)?",
"alerts.confirm-delete":"<b>ВНИМАНИЕ!</b><br/>Наистина ли искате да изтриете потребителя/ите?<br/> Това действие е необратимо! Ще бъде изтрит само профилът на потребителя/ите, неговите/техните публикациите и теми ще останат.",
"alerts.confirm-delete":"<strong>ВНИМАНИЕ!</strong><p>Наистина ли искате да изтриете <strong>потребителя/ите</strong>?</p> <p>Това действие е необратимо! Ще бъде изтрит само профилът на потребителя/ите, неговите/техните публикациите и теми ще останат.</p>",
"alerts.confirm-purge":"<b>ВНИМАНИЕ!</b><br/>Наистина ли искате да изтриете потребителя/ите?<br/> Това действие е необратимо! Всички потребителски данни и съдържание ще бъдат заличени!",
"alerts.confirm-delete-content":"<strong>ВНИМАНИЕ!</strong><p>Наистина ли искате да изтриете <strong>съдържанието</strong> на този потребител или тези потребители?</p> <p>Това действие е необратимо! Профилите на потребителите ще останат, но всички техни публикации и теми ще бъдат изтрити.</p>",
"alerts.delete-content-success":"Съдържанието на потребителя/ите е изтрито!",
"alerts.confirm-purge":"<strong>ВНИМАНИЕ!</strong><p>Наистина ли искате да изтриете <strong>потребителя/ите и неговото/тяхното съдържание</strong>?</p> <p>Това действие е необратимо! Всички потребителски данни и съдържание ще бъдат заличени!</p>",
"alerts.create":"Създаване на потребител",
"alerts.button-create":"Създаване",
"alerts.button-cancel":"Отказ",
@@ -95,5 +108,5 @@
"alerts.prompt-email":"Е-пощи: ",
"alerts.email-sent-to":"Беше изпратено е-писмо за потвърждение до %1",
"maintenance-mode.help":"Когато форумът е в режим на профилактика, всички заявки ще бъдат пренасочвани към статична страница за изчакване, с изключение на администраторите, които ще могат да използват уеб сайта нормално.",
"maintenance-mode.status":"Код на състоянието за режима на профилактика",
"maintenance-mode.message":"Съобщение за профилактиката",
"headers":"Заглавни части",
"headers.allow-from":"Задайте „ALLOW-FROM“, за да поставите NodeBB в „iFrame“",
@@ -14,14 +15,20 @@
"headers.acah":"Заглавки за разрешаване на управлението на достъпа",
"hsts":"Стриктна транспортна сигурност",
"hsts.enabled":"Включване на HSTS (препоръчително)",
"hsts.maxAge":"Максимална възраст на HSTS",
"hsts.subdomains":"Включване на поддомейните в заглавката на HSTS",
"hsts.preload":"Позволяване на предварителното зареждане на заглавката на HSTS",
"hsts.help":"Ако това е включено, за този уеб ще бъде настроена заглавка за HSTS. Можете да изберете дали да включите поддомейните и дали за заредите предварително флаговете в заглавката си. Ако не знаете какво да направите, най-добре не избирайте нищо. <a href=\"%1\">Още информация<i class=\"fa fa-external-link\"></i></a>",
"traffic-management":"Управление на трафика",
"traffic.help":"NodeBB има вграден модул, който автоматично отказва заявките в натоварените моменти. Можете да настроите поведението тук, въпреки че стойностите по подразбиране са добра отправна точка.",
"traffic.help":"NodeBB използва модул, който автоматично отказва заявките в натоварените моменти. Можете да настроите поведението тук, въпреки че стойностите по подразбиране са добра отправна точка.",
"traffic.enable":"Включване на управлението на трафика",
"traffic.event-lag":"Граница на забавяне в цикъла на събитията (в милисекунди)",
"traffic.event-lag-help":"Намаляването на тази стойност ще намали времето за изчакване при зареждане на страници, но също така ще предизвика по-често показване на съобщението „прекомерно натоварване“ на повече потребители. (Нужно е рестартиране.)",
"traffic.lag-check-interval":"Интервал на проверка (в милисекунди)",
"traffic.lag-check-interval-help":"Намаляването на тази стойност ще направи NodeBB по-чувствителен към скоковете в натовареността, но може и да направи проверката твърде чувствителна. (Нужно е рестартиране.)"
"traffic.lag-check-interval-help":"Намаляването на тази стойност ще направи NodeBB по-чувствителен към скоковете в натовареността, но може и да направи проверката твърде чувствителна. (Нужно е рестартиране.)",
"sockets.settings":"Настройки за WebSocket",
"sockets.max-attempts":"Максимален брой опити за повторно свързване",
"max-length":"Максимална дължина на съобщенията в разговорите",
"max-room-size":"Максимален брой потребители в стая за разговор",
"delay":"Време между съобщеният в разговорите (в милисекунди)",
"restrictions.seconds-edit-after":"Брой секунди, в които потребителите не могат да редактират съобщенията си в разговорите след публикуването им. (0 = изключено)",
"restrictions.seconds-delete-after":"Брой секунди, в които потребителите не могат да изтрият съобщенията си в разговорите след публикуването им. (0 = изключено)"
"restrictions.seconds-edit-after":"Брой секунди, през които съобщенията в разговор могат да бъдат редактирани. (0 = изключено)",
"restrictions.seconds-delete-after":"Брой секунди, през които съобщенията в разговор могат да бъдат изтривани. (0 = изключено)"
"consent.link-text":"Връзка към текста на политиката",
"consent.link-url":"Връзка към адреса на политиката",
"consent.blank-localised-default":"Оставете това празно, за да използвате данните по подразбиране на NodeBB, които са преведени",
"settings":"Настройки",
"cookie-domain":"Домейн на бисквитката за сесията",
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.