- Resized thumb no longer skews aspect ratio
- Thumbs resized down to maximum thumb size by WIDTH only
- image.checkDimensions() now returns dimensions
- rename Thumbs.commit to Thumbs.migrate
- new PUT method that calls Thumbs.migrate
- `checkThumbPrivileges` now takes a single object parameter (ins. of req/res)
- addThumb and deleteThumb are now protected routes (duh)
- new getThumbs route GET /api/v3/topics/<tid>/thumbs
- Updated `assert.path` middleware to better handle if relative paths are received with upload_url
- Slight refactor of thumbs lib to use validator to differentiate between tid and UUID
* feat: socket.io 3 changes
* feat: replace socketio-wildcard with socket.onAny
up socket.io-redis to 6.x
* feat: remove mongodb/psql socket.io adapters
* feat: show data on fail
* fix: tests
* fix: typo
* fix: logger test fix
* fix: logger.io_close
* chore: up deps
* chore: update readme to reflect redis requirement
* fix: increase timeout show data if test fails
fix category link redirect on cold load
fix helpers.redirect if passed in url is external
fix ajaxify so it doesn't slice first character of external url
* fix: add back topic assert middleware for pin route
* feat: server-side handling of pin expiries
* refactor: togglePin to not require uid parameter [breaking]
* feat: automatic unpinning if pin has expiration set
* feat: client-side modal for setting pin expiration
* refactor: categories.getPinnedTids to accept multiple cids
... in preparation for pin expiry logic, direct access to *:pinned zsets is discouraged
* fix: remove references to since-removed jobs file for topics
* feat: expire pins when getPinnedTids is called
* refactor: make the togglePin change non-breaking
The 'action:topic.pin' hook now sends uid again, as before. However, if it is a system action (that is, a pin that expired), 'system' will be sent in instead of a valid uid
* Run grunt with debugger enabled
When forking a node.js thread we are also having the possibility to pass some node.js arguments, such as "--inspect=0.0.0.0". By providing this, we are adding the capability of doing live debugging even when the system is started with grunt.
* removed whitespace
* Update Gruntfile.js
display latest posts instead of oldest in topic rss feed
fix missing await that was causing rss_tokens to not function
fix feed test
more tests for getTopicWithPosts
* feat: #8444 Allow nested objects in translations
* feat: #8444 Allow nested objects in translations
* style: don't change formatting
* fix: don't use the first string match if key isn't finished
* feat: #8444 Allow nested objects in translations
* feat: #8444 Allow nested objects in translations
* style: don't change formatting
* fix: don't use the first string match if key isn't finished
* feat: add nested translations test
* feat: allow invites in normal registration mode + invite privilege
* feat: select groups to join from an invite
* test: check if groups from invitations have been joined
* fix: remove unused variable
* feat: write API versions of socket calls
* docs: openapi specs for the new routes
* test: iron out mongo redis difference
* refactor: move inviteGroups endpoint into write API
* refactor: use GET /api/v3/users/:uid/invites/groups
Instead of GET /api/v3/users/:uid/inviteGroups
* fix: no need for /api/v3 prefix when using api module
* fix: tests
* refactor: change POST /api/v3/users/invite
To POST /api/v3/users/:uid/invites
* refactor: make helpers.invite awaitable
* fix: restrict invite API to self-use only
* fix: move invite groups controller to write api, +tests
* fix: tests
Co-authored-by: Julian Lam <julian@nodebb.org>
* feat: allow groups to specify which cids to show member posts from
* docs: fix tests for openapi
* fix: test breakage caused by improper conditional
* feat: server-side checking of memberPostCids for validity
* feat: admin panel template update to select categories to include
* refactor: privilege helpers.isUserAllowedTo
... to helpers.isAllowedTo, allowing group names to be passed in
* feat: #7514 Optional timer for registration queue
* feat: show minutes in average time
* fix: don't show total number of minutes
* feat: implement requested changes
* fix: just store minutes instead of milliseconds
* feat: set default values
* feat: allow passwords longer than 73 characters
Context: A bcrypt/blowfish limitation means that password length is capped at 72 characters. We can get around this without compromising on security
by hashing all incoming passwords with SHA512, and then sending that to bcrypt.
https://dropbox.tech/security/how-dropbox-securely-stores-your-passwords
* feat: add additional test for passwords > 73 chars
* fix: remove 'password-too-long' error message and all invocations
* test: added test to show that a super long password won't bring down NodeBB
* fix: remove debug log
* Revert "fix: remove 'password-too-long' error message and all invocations"
This reverts commit 1e312bf7ef.
* fix: added back password length checks, but at 512 chars
As processing a large string still uses a lot of memory
* feat: use github actions for ci
- test using minimum supported db versions
- ESLint will make review comments on PRs
- formatted configs
* mess up eslint
* fix: lint maybe
Co-authored-by: Barış Soner Uşaklı <baris@nodebb.org>
If the post template contains references to items outside of the scope of the post, then when the post is loaded via IS, the expected values are empty.
This was due to createNewPosts calling app.parseAndTranslate with a subset of the page payload. This works fine in Persona (and most other themes)
because they do not refer to properties outside of the post object, but it may be helpful to include the rest of the ajaxify data as well.
@baris Also, I am now allowing the following properties to be saved in User.saveSettings:
- categoryTopicSort
- topicPostSort
- setCategorySort
- setTopicSort
This is a breaking change if your install uses multiple URLs to access. You will need to update the Access-Control-Allow-Origin header in ACP > Advanced > Headers to supply all URLs you use to access your site
* feat: updating logo assets, square logos missing still
* fix: squared logo for touch icon and notification fallback
* fix: update link to favicon
* feat: add default touch icon sizes, if one isn't uploaded
Co-authored-by: Barış Soner Uşaklı <barisusakli@gmail.com>
'node_redis: The HGET command contains a invalid argument type.\n' +
'Only strings, dates and buffers are accepted. Please update your code to use valid argument types.'
only return promise if callback is undefined
dont append baseUrl if url already starts with api
correctly handle writeapi readapi response for data/error
remove unused onError
dont append empty ? to url for get routes
* feat: wip admin/users
* feat: more work
* feat: more fixes
* feat: #8662, verified/unverified user groups
* feat: add filter
* feat: change user search to use filters array
* refactor: remove unused search call
* fix: tests
* fix: cant join system groups
* fix: upgrade script
* feat: #8734, jquery-ui, jquery-form, timeago
get rid of forum/footer.js move that code to app.js & wait for app to load before calling ajaxify.end
make sockets.js a requirejs module
move jquery-ui to node_modules and load via requirejs
move jquery-form to node_modules and load via requirejs
move timeago to node_modules and load via requirejs
only include the css for needed jquery-ui widgets
* feat: keep socket/io global for backwards compat
* refactor: move socket listener to chat
* feat: revoke user sessions above threshold
* fix: removed translations from en-US
* fix: defined default maxUserSessions in install\data\defaults.json
This reverts commit a395324b52, and
fixes the issue where the ACP became unusable because of the earlier
variant of this code.
Thanks @psychobunny for spotting.
This solves a small UX issue where clicking on a button (or anchor
that is not meant to be ajaxified) before ajaxify.end is called
leads to nothing happening because the appropriate click handler
has not been added.
This code will intercept premature clicks, wait until ajaxify.end
is called, and then re-send the click.
* feat: fullname search
* fix: take last element
* fix: attempt to fix psql like query
* feat: upgrade sript, another fix attempt
* fix: psql test
* fix: psql scan
* feat: add debug for test
* feat: test collate
* feat: cleanup
* fix: upgrade script
* refactor: socket posts delete/restore/purge so tid is not necessary
* refactor: stop trying to be fancy
* fix: tests to not pass in tid into posts.deletePosts
* fix: some more unnecessary tid passing
[**NodeBB Forum Software**](https://nodebb.org) is powered by Node.js and built on either a Redis or MongoDB database. It utilizes web sockets for instant interactions and real-time notifications. NodeBB has many modern features out of the box such as social network integration and streaming discussions, while still making sure to be compatible with older browsers.
[**NodeBB Forum Software**](https://nodebb.org) is powered by Node.js and supports either Redis, MongoDB, or a PostgreSQL database. It utilizes web sockets for instant interactions and real-time notifications. NodeBB has many modern features out of the box such as social network integration and streaming discussions, while still making sure to be compatible with older browsers.
Additional functionality is enabled through the use of third-party plugins.
* [Demo & Meta Discussion](http://community.nodebb.org)
"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?",
@@ -48,5 +54,6 @@
"alert.confirm-copyToAllGroup":"Are you sure you wish to apply this group's privilege set to <strong>all categories</strong>?",
"alert.confirm-copyToChildren":"Are you sure you wish to apply this privilege set to <strong>all descendant (child) categories</strong>?",
"alert.confirm-copyToChildrenGroup":"Are you sure you wish to apply this group's privilege set to <strong>all descendant (child) categories</strong>?",
"alert.no-undo":"<em>This action cannot be undone.</em>"
"alert.no-undo":"<em>This action cannot be undone.</em>",
"alert.admin-warning":"Administrators implicitly get all privileges"
"analytics.max-cache":"Analytics Cache Max Value",
"analytics.max-cache-help":"On high-traffic installs, the cache could be exhausted continuously if there are more concurrent active users than the Max Cache value. (Restart required)",
"compression.settings":"Compression Settings",
"compression.enable":"Enable Compression",
"compression.help":"This setting enables gzip compression. For a high-traffic website in production, the best way to put compression in place is to implement it at a reverse proxy level. You can enable it here for testing purposes."
"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.",
"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",
"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",
"no-description":"No description specified.",
"token-on-save":"Token will be generated once form is saved"
"address-help":"The following email address refers to the email that the recipient will see in the \"From\" and \"Reply To\" fields.",
"from":"From Name",
"from-help":"The from name to display in the email.",
"smtp-transport":"SMTP Transport",
"smtp-transport.enabled":"Use an external email server to send emails",
"smtp-transport-help":"You can select from a list of well-known services or enter a custom one.",
@@ -35,5 +35,7 @@
"subscriptions":"Email Digests",
"subscriptions.disable":"Disable email digests",
"subscriptions.hour":"Digest Hour",
"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>"
"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>",
"log.alt-text-placeholder":"Alternative text for accessibility",
"favicon":"صورة المفضله",
"favicon.upload":"رفع",
"touch-icon":"Homescreen/Touch Icon",
"pwa":"Progressive Web App",
"touch-icon":"Touch Icon",
"touch-icon.upload":"رفع",
"touch-icon.help":"Recommended size and format: 192x192, PNG format only. If no touch icon is specified, NodeBB will fall back to using the favicon.",
"touch-icon.help":"Recommended size and format: 512x512, PNG format only. If no touch icon is specified, NodeBB will fall back to using the favicon.",
"maskable-icon":"Maskable (Homescreen) Icon",
"maskable-icon.help":"Recommended size and format: 512x512, PNG format only. If no maskable icon is specified, NodeBB will fall back to the Touch Icon.",
"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\""
"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",
"reply-notifications.enabled":"Allow guests to generate reply notifications"
"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>",
"timestamp.topic-views-interval":"Increment topic views interval (in minutes)",
"timestamp.topic-views-interval-help":"Topic views will only increment once every X minutes as defined by this setting.",
"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",
"hide-fullname":"إخفاء الإسم الكامل عن المستخدمين",
"hide-email":"إخفاء البريد الإلكتروني عن المستخدمين",
"show-fullname-as-displayname":"Show user's full name as their display name if available",
"themes":"القوالب",
"disable-user-skins":"منع المستخدمين من اختيار سمة مخصص",
"account-protection":"حماية الحساب",
@@ -43,6 +44,9 @@
"registration-type.disabled":"لا يوجد تسجيل",
"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/>",
"invalid-pagination-value":"رقم الصفحة غير صحيح ، يجب أن يكون بين %1 و %2 .",
"username-taken":"اسم المستخدم مأخوذ",
"email-taken":"البريد الالكتروني مأخوذ",
"email-invited":"Email was already invited",
"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":"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.",
@@ -38,6 +40,7 @@
"username-too-long":"اسم المستخدم طويل",
"password-too-long":"كلمة السر طويلة ",
"reset-rate-limited":"Too many password reset requests (rate limited)",
"reset-same-password":"Please use a password that is different from your current one",
"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)",
@@ -88,7 +91,9 @@
"already-unbookmarked":"You have already unbookmarked this post",
"cant-ban-other-admins":"لايمكن حظر مدبر نظام آخر.",
"cant-remove-last-admin":"رجاءًا ، أضف مدير أخر قبل حذف صلاحيات الإدارة من حسابك.",
"account-deletion-disabled":"Account deletion is disabled",
"cant-delete-admin":"رجاءًا أزل صلاحيات الإدارة قبل حذف الحساب. ",
"already-deleting":"Already deleting",
"invalid-image":"Invalid image",
"invalid-image-type":"نوع الصورة غير مدعوم. الأنواع المدعومة هي : %1",
"invalid-image-extension":"امتداد الصورة غير مدعوم.",
@@ -142,6 +147,7 @@
"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",
"cant-flag-privileged":"You are not allowed to flag the profiles or content of privileged users (moderators/global moderators/admins)",
"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",
@@ -168,5 +174,7 @@
"cannot-block-guest":"Guest are not able to block other users",
"already-blocked":"This user is already blocked",
"already-unblocked":"This user is already unblocked",
"no-connection":"There seems to be a problem with your internet connection"
"no-connection":"There seems to be a problem with your internet connection",
"socket-reconnect-failed":"Unable to reach the server at this time. Click here to try again, or try again later",
"plugin-not-whitelisted":"Unable to install plugin – only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP"
"details.member-post-cids":"Categories to display posts from",
"details.member-post-cids-help":"<strong>Note</strong>: Selecting no categories will assume all categories are included. Use <code>ctrl</code> and <code>shift</code> to select multiple options.",
"wrong_reset_code.message":"رمز إعادة التعين غير صحيح، يرجى المحاولة مرة أخرى أو <a href='/reset'>اطلب رمزا جديدا</a>",
"new_password":"كلمة المرور الجديدة",
"repeat_password":"تأكيد كلمة المرور",
"changing_password":"Changing Password",
"enter_email":"يرجى إدخال <strong>عنوان البريد الإلكتروني</strong> الخاص بك وسوف نرسل لك رسالة بالبريد الالكتروني مع تعليمات حول كيفية إستعادة حسابك.",
"enter_email_address":"ادخل عنوان البريد الإلكتروني",
"password_reset_sent":"If the specified address corresponds to an existing user account, a password reset email was sent. Please note that only one email will be sent per minute.",
"thread_tools.purge_confirm":"هل أنت متأكد أنك تريد تطهير هذا الموضوع؟",
"thread_tools.merge_topics":"Merge Topics",
"thread_tools.merge":"Merge",
"topic_move_success":"This topic has been successfully moved to %1. Click here to undo.",
"topic_move_success":"This topic will be moved to \"%1\" shortly. Click here to undo.",
"topic_move_multiple_success":"These topics will be moved to \"%1\" shortly. Click here to undo.",
"topic_move_all_success":"All topics will be moved to \"%1\" shortly. Click here to undo.",
"topic_move_undone":"Topic move undone",
"topic_move_posts_success":"Posts will be moved shortly. Click here to undo.",
"topic_move_posts_undone":"Post move undone",
"post_delete_confirm":"هل أنت متأكد أنك تريد حذف هذه المشاركة؟",
"post_restore_confirm":"هل أنت متأكد أنك تريد استعادة هذه المشاركة؟",
"post_purge_confirm":"هل أنت متأكد أنك تريد تطهير هذه المشاركة؟",
"pin-modal-expiry":"Expiration Date",
"pin-modal-help":"You can optionally set an expiration date for the pinned topic(s) here. Alternatively, you can leave this field blank to have the topic stay pinned until it is manually unpinned.",
"load_categories":"تحميل الفئات",
"confirm_move":"انقل",
"confirm_fork":"فرع",
@@ -100,6 +106,9 @@
"fork_topic":"فرع الموضوع",
"fork_topic_instruction":"إضغط على المشاركات التي تريد تفريعها",
"fork_no_pids":"لم تختر أي مشاركة",
"no-posts-selected":"No posts selected!",
"x-posts-selected":"%1 post(s) selected",
"x-posts-will-be-moved-to-y":"%1 post(s) will be moved to \"%2\"",
"fork_pid_count":"1% مشاركة محددة",
"fork_success":"تم إنشاء فرع للموضوع بنجاح! إضغط هنا لمعاينة الفرع.",
"delete_posts_instruction":"Click the posts you want to delete/purge",
@@ -108,7 +117,7 @@
"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",
"move_posts_instruction":"Click the posts you want to move then go to target topic and click move.",
"change_owner_instruction":"Click the posts you want to assign to another user",
"composer.title_placeholder":"أدخل عنوان موضوعك هنا...",
"composer.handle_placeholder":"Enter your name/handle here",
@@ -146,5 +155,7 @@
"diffs.restore-description":"A new revision will be appended to this post's edit history.",
"diffs.post-restored":"Post successfully restored to earlier revision",
"open_links_in_new_tab":"فتح الروابط الخارجية في نافدة جديدة",
"enable_topic_searching":"تفعيل خاصية البحث داخل المواضيع",
"topic_search_help":"إذا قمت بتفعيل ميزة البحث في-الموضوع، سيتم تجاوز الخيار الافتراضي للمتصفح مما يؤدي للبحث بكامل الموضوع بدلا عن البحث في الجزء الظاهر في الشاشة.",
"update_url_with_post_index":"Update url with post index while browsing topics",
"scroll_to_my_post":"بعد اضافة رد على المشاركة, قم بإظهار المشاركة",
"follow_topics_you_reply_to":"متابعة المواضيع التي تقوم بالرد عليها",
"follow_topics_you_create":"متابعة المواضيع التي تقوم بإنشائها",
"select-clear-all":"Избиране/изчистване на всичко",
"chat":"Разговор",
"upload-images":"Качване на изображения",
"upload-files":"Качване на файлове",
"signature":"Подпис",
"ban":"Блокиране",
"invite":"Пращане на покана",
"search-content":"Търсене на съдържание",
"search-users":"Търсене на потребители",
"search-tags":"Търсене на етикети",
@@ -37,9 +39,13 @@
"admin-categories":"Категории",
"admin-privileges":"Правомощия",
"admin-users":"Потребители",
"admin-admins-mods":"Администратори и модератори",
"admin-groups":"Групи",
"admin-tags":"Етикети",
"admin-settings":"Настройки",
"alert.confirm-moderate":"<strong>Наистина ли искате да дадете правомощието за модериране на тази потребителска група?</strong> Тази група е публична и всеки може свободно да се присъедини към нея.",
"alert.confirm-admins-mods":"<strong>Наистина ли искате да дадете правото „Администратори и модератори“ на този потребител/група?</strong> Потребителите с това право могат да променят правомощията на други групи, <em>включително да им дават правото на супер администратори</em>",
"alert.confirm-save":"Моля, потвърдете желанието си да запазите тези правомощия",
"alert.saved":"Промените по правомощията са запазени и приложени",
"alert.confirm-discard":"Наистина ли искате да отхвърлите промените по правомощията?",
@@ -48,5 +54,6 @@
"alert.confirm-copyToAllGroup":"Наистина ли искате да приложите набора от правомощия на таи група към <strong>всички категории</strong>?",
"alert.confirm-copyToChildren":"Наистина ли искате да приложите този набор от правомощия към <strong>всички по-долни (дъщерни) категории</strong>?",
"alert.confirm-copyToChildrenGroup":"Наистина ли искате да приложите набора от правомощия на таи група към <strong>всички по-долни (дъщерни) категории</strong>?",
"alert.no-undo":"<em>Това действие е необратимо.</em>"
"alert.no-undo":"<em>Това действие е необратимо.</em>",
"alert.admin-warning":"Администраторите имат всички правомощия по подразбиране"
"sockets.delay":"Забавяне при повторно свързване",
"analytics.settings":"Настройки за анализите",
"analytics.max-cache":"Макс. стойност на кеша за анализите",
"analytics.max-cache-help":"При инсталации с натоварен трафик, кешът може да бъде изразходен, ако има повече едновременни потребители, от колкото е максималната стойност на кеша. (Изисква рестартиране)",
"compression.settings":"Настройки за компресирането",
"compression.enable":"Включване на компресирането",
"compression.help":"Тази настройка включва компресирането чрез „gzip“. За натоварени уеб сайтове най-добрият начин за използване на компресия е тя да се случва на нивото на обратния сървър-посредник (reverse proxy). Нос цел тестване, можете да го включите и тук."
"lead-text":"На тази страница можете да настроите достъпа до ППИ за писане в NodeBB.",
"intro":"По подразбиране ППИ за писане удостоверява потребителите чрез бисквитката им за сесията, но NodeBB поддържа и удостоверяване чрез метода „Bearer“, използвайки кодовете от тази страница.",
"docs":"Щракнете тук за достъп до пълната документация на ППИ",
"require-https":"Ползването на ППИ да работи само чрез HTTPS",
"require-https-caveat":"<strong>Забележка</strong>: В някои случаи, когато се ползват програми за балансиране на натоварването, е възможно заявките към NodeBB да се препращат чрез HTTP – тогава тази настройка трябва да остане изключена.",
"uid":"Потребителски ИД",
"uid-help-text":"Посочете потребителски ИД, който да бъде свързан с този код. Ако ИД е <code>0</code>, това ще се счита за <em>главен</em> код, който може да приема идентичността на всеки от другите потребители чрез параметъра <code>_uid</code>",
"description":"Описание",
"no-description":"Няма описание.",
"token-on-save":"Кодът ще бъде създаден след като данните бъдат запазени"
"address-help":"Следният адрес на е-поща е този, който получателят ще види в полетата „От“ и “Отговор до“.",
"from":"Име за полето „От“",
"from-help":"Името на изпращача, което да бъде показано в е-писмото.",
"smtp-transport":"Транспорт чрез SMTP",
"smtp-transport.enabled":"Използване на външен сървър за е-поща за изпращане на е-писма",
"smtp-transport-help":"Можете да изберете от списък от познати услуги, или да въведете такава ръчно.",
@@ -35,5 +35,7 @@
"subscriptions":"Резюмета по е-поща",
"subscriptions.disable":"Изключване на резюметата по е-пощата",
"subscriptions.hour":"Време за разпращане",
"subscriptions.hour-help":"Моля, въведете число, представляващо часа, в който да се разпращат е-писма с подготвеното резюме (напр.. <code>0</code> за полунощ, <code>17</code> за 5 следобед). Имайте предвид, че този час е според часовата зона на сървъра и може да не съвпада с часовника на системата Ви.<br /> Приблизителното време на сървъра е: <span id=\"serverTime\"></span><br /> Изпращането на следващия ежедневен бюлетин е планирано за <span id=\"nextDigestTime\"></span>"
"subscriptions.hour-help":"Моля, въведете число, представляващо часа, в който да се разпращат е-писма с подготвеното резюме (напр.. <code>0</code> за полунощ, <code>17</code> за 5 следобед). Имайте предвид, че този час е според часовата зона на сървъра и може да не съвпада с часовника на системата Ви.<br /> Приблизителното време на сървъра е: <span id=\"serverTime\"></span><br /> Изпращането на следващия ежедневен бюлетин е планирано за <span id=\"nextDigestTime\"></span>",
"notifications.settings":"Настройки за известията по е-поща",
"notifications.remove-images":"Премахване на изображенията от известията по е-поща"
"log.alt-text-placeholder":"Алтернативен текст за достъпност",
"favicon":"Иконка на уеб сайта",
"favicon.upload":"Качване",
"touch-icon":"Иконка за начален екран (мобилно устройство)",
"pwa":"Прогресивно уеб-приложение",
"touch-icon":"Иконка за сензорен екран",
"touch-icon.upload":"Качване",
"touch-icon.help":"Препоръчителен размер и формат: 192x192, само във формат „PNG“. Ако не е посочена иконка за начален екран на мобилно устройство, NodeBB ще използва иконката на уеб сайта.",
"touch-icon.help":"Препоръчителен размер и формат: 512x512, само във формат „PNG“. Ако не е посочена иконка за сензорен екран, NodeBB ще използва иконката на уеб сайта.",
"maskable-icon":"Маскируема иконка (за начален екран)",
"maskable-icon.help":"Препоръчителен размер и формат: 512x512, само във формат „PNG“. Ако не е посочена маскируема иконка, NodeBB ще използва иконката за сензорен екран.",
"outgoing-links":"Изходящи връзки",
"outgoing-links.warning-page":"Показване на предупредителна страница при щракване върху външни връзки",
"search-default-sort-by":"Подредба по подразбиране при търсене",
@@ -38,4 +41,4 @@
"theme-color":"Цвят на темата",
"background-color":"Фонов цвят",
"background-color-help":"Цвят, който да се използва като фон за началния екран, когато уеб сайтът е инсталиран като приложение"
"handles.enabled":"Позволяване на имената за гостите",
"handles.enabled-help":"Тази възможност предоставя ново поле, което позволява на гостите да си изберат име, което да се използва за всяка публикация, която правят. Ако е изключено, всички те просто ще имат името „Гост“."
"handles.enabled-help":"Тази възможност предоставя ново поле, което позволява на гостите да си изберат име, което да се използва за всяка публикация, която правят. Ако е изключено, всички те просто ще имат името „Гост“.",
"topic-views.enabled":"Гостите да допринасят за броя на преглеждания на темите",
"reply-notifications.enabled":"Гостите да могат да предизвикват изпращането на известия за отговорите си"
"timestamp.cut-off-help":"Датите и времената ще бъдат показвани относително (напр. „преди 3 часа“ или „преди 5 дни“), и преведени на множество\n\\t\\t\\t\\t\\tезици. След определено време, този текст ще започне да показва самите дата и час, според езика на потребителя\n\\t\\t\\t\\t\\t(напр. „5 ноември 2016 15:30“).<br /><em>(По подразбиране: <code>30</code>, тоест един месец). Ако зададете 0, винаги ще се изписват дати, а ако оставите полето празно, времето ще бъде винаги относително.</em>",
"timestamp.necro-threshold":"Мъртва граница (в дни)",
"timestamp.necro-threshold-help":"Между публикациите ще бъде показано съобщение, ако времето между тях е по-дълго от мъртвата граница. (По подразбиране: <code>7</code>, или една седмица). Задайте 0 за изключване.</em>",
"timestamp.topic-views-interval":"Интервал за увеличаване на броя на преглеждания на темите (в минути)",
"timestamp.topic-views-interval-help":"Броят на преглеждания на темите ще се увеличава веднъж на всеки Х минути, според тази настройка.",
"teaser":"Представителна публикация",
"teaser.last-post":"Последната – Показване на последната публикация, или първоначалната такава, ако няма отговори.",
"teaser.last-reply":"Последната – Показване на последния отговор, или „Няма отговори“, ако все още няма такива.",
"allow-account-deletion":"Позволяване на изтриването на профила",
"hide-fullname":"Скриване на пълното име от потребителите",
"hide-email":"Скриване на е-пощата от потребителите",
"show-fullname-as-displayname":"Показване на цялото име на потребителя, ако е налично",
"themes":"Теми",
"disable-user-skins":"Потребителите да не могат да избират собствен облик",
"account-protection":"Защита на акаунта",
@@ -43,6 +44,9 @@
"registration-type.disabled":"Без регистриране",
"registration-type.help":"Обикновена — Потребителите могат да се регистрират от страницата /register.<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-approval-type.help":"Обикновена — Потребителите се регистрират на момента.<br/>\nОдобрена от администратор — Потребителските регистрации се поставят в <a href=\"%1/admin/manage/registration\">опашка за одобрение</a>, която администраторите преглеждат.<br/>\nОдобрена от администратор по IP адрес — Новите потребители се регистрират по обикновения начин, а онези, от чиито IP адрес вече сасе регистрирали други акаунти, се нуждаят от одобрението на администратор.<br/>",
"registration-queue-auto-approve-time":"Време за автоматично одобрение",
"registration-queue-auto-approve-time-help":"Брой часове преди потребител да бъде одобрен автоматично. 0 = изключено.",
"registration-queue-show-average-time":"Средното време за одобрение на нов потребител да се показва на потребителите",
"registration.max-invites":"Максимален брой покани на потребител",
"max-invites":"Максимален брой покани на потребител",
"max-invites-help":"0 = няма ограничение. Администраторите могат да разпращат неограничен брой покани.<br>Тази стойност се използва, само ако е избран режимът „Само с покана“.",
@@ -62,6 +66,7 @@
"restrict-chat":"Разрешаване на съобщенията само от потребители, които следвам",
"outgoing-new-tab":"Отваряне на външните връзки в нов подпрозорец",
"topic-search":"Включване на търсенето в темите",
"update-url-with-post-index":"Обновяване на адресната лента с номера на публикацията по време на разглеждане на темите",
"invalid-pid":"Грешен идентификатор на публикация",
"invalid-uid":"Грешен идентификатор на потребител",
"invalid-date":"Трябва да бъде посочена правилна дата",
"invalid-username":"Грешно потребителско име",
"invalid-email":"Грешна е-поща",
"invalid-fullname":"Грешно пълно име",
@@ -26,6 +27,7 @@
"invalid-pagination-value":"Грешен номер на странициране, трябва да бъде между %1 и %2",
"username-taken":"Потребителското име е заето",
"email-taken":"Е-пощата е заета",
"email-invited":"На тази е-поща вече е била изпратена покана",
"email-not-confirmed":"Няма да можете да публикувате съобщения, докато е-пощата Ви не бъде потвърдена. Моля, натиснете тук, за да потвърдите е-пощата си.",
"email-not-confirmed-chat":"Няма да можете да пишете в разговори, докато е-пощата Ви не бъде потвърдена. Моля, натиснете тук, за да потвърдите е-пощата си.",
"email-not-confirmed-email-sent":"Вашата е-поща все още не е потвърдена. Моля, проверете входящата си кутия за писмото за потвърждение. Няма да можете да публикувате съобщения или да пишете в разговори, докато е-пощата Ви не бъде потвърдена.",
@@ -38,6 +40,7 @@
"username-too-long":"Потребителското име е твърде дълго",
"password-too-long":"Паролата е твърде дълга",
"reset-rate-limited":"Твърде много подновявания на паролата (има ограничение на честотата)",
"reset-same-password":"Моля, използвайте парола, която е различна от текущата",
"user-banned":"Потребителят е блокиран",
"user-banned-reason":"За съжаление, този акаунт е блокиран (Причина: %1)",
"user-banned-reason-until":"За съжаление, този акаунт е блокиран до %1 (Причина: %2)",
@@ -88,7 +91,9 @@
"already-unbookmarked":"Вече сте премахнали отметката си от тази публикация",
"cant-ban-other-admins":"Не можете да блокирате другите администратори!",
"cant-remove-last-admin":"Вие сте единственият администратор. Добавете друг потребител като администратор, преди да премахнете себе си като администратор",
"account-deletion-disabled":"Изтриването на акаунт е забранено",
"cant-delete-admin":"Премахнете администраторските права от този акаунт, преди да го изтриете.",
"already-deleting":"Вече е в процес на изтриване",
"invalid-image":"Грешно изображение",
"invalid-image-type":"Грешен тип на изображение. Позволените типове са: %1",
"invalid-image-extension":"Грешно разширение на изображението",
@@ -142,6 +147,7 @@
"user-already-flagged":"Вече сте докладвали този потребител",
"post-flagged-too-many-times":"Тази публикация вече е докладвана от други хора",
"user-flagged-too-many-times":"Този потребител вече е докладван от други хора",
"cant-flag-privileged":"Не можете да докладвате профилите или съдържанието от потребители с по-високи правомощия (модератори, глобални модератори, администратори)",
"self-vote":"Не можете да гласувате за собствената си публикация",
"too-many-downvotes-today":"Можете да гласувате отрицателно не повече от %1 пъти на ден",
"too-many-downvotes-today-user":"Можете да гласувате отрицателно за потребител не повече от %1 пъти на ден",
@@ -168,5 +174,7 @@
"cannot-block-guest":"Гостите не могат да блокират други потребители",
"already-blocked":"Този потребител вече е блокиран",
"already-unblocked":"Този потребител вече е отблокиран",
"no-connection":"Изглежда има проблем с връзката Ви с Интернет"
"no-connection":"Изглежда има проблем с връзката Ви с Интернет",
"socket-reconnect-failed":"В момента сървърът е недостъпен. Натиснете тук, за да опитате отново, или опитайте пак по-късно.",
"plugin-not-whitelisted":"Добавката не може да бъде инсталирана – само добавки, одобрени от пакетния мениджър на NodeBB могат да бъдат инсталирани чрез ACP"
"details.member-post-cids":"Категории, от които да се показват публикации",
"details.member-post-cids-help":"<strong>Забележка</strong>: Ако не изберете нито една категория, ще се смята, че са включени всички категории. Използвайте <code>CTRL</code> и <code>SHIFT</code>, за да изберете няколко възможности.",
"details.badge_preview":"Преглед на емблемата",
"details.change_icon":"Промяна на иконката",
"details.change_label_colour":"Промяна на цвета на етикета",
"agree_to_terms_of_use":"Съгласен съм с условията за ползване",
"terms_of_use_error":"Трябва да се съгласите с условията за ползване",
"registration-added-to-queue":"Вашата регистрация беше добавена в опашката за одобрение. Ще получите е-писмо, когато тя бъде одобрена от администратор.",
"registration-queue-average-time":"Средното време за одобрение на нови членове е %1 часа и %2 минути.",
"registration-queue-auto-approve-time":"Членството Ви в този форум ще бъде напълно активирано след около %1 часа.",
"interstitial.intro":"Нуждаем се от малко допълнителна информация, преди да можем да създадем акаунта Ви.",
"interstitial.errors-found":"Не можем да завършим Вашата регистрация:",
"gdpr_agree_data":"Съгласявам се това личната ми информация да се съхранява и обработва от този уеб сайт.",
"wrong_reset_code.message":"Полученият код за подновяване беше грешен. Моля, опитайте отново или <a href=\"/reset\">поискайте нов код за подновяване</a>.",
"new_password":"Нова парола",
"repeat_password":"Потвърдете паролата",
"changing_password":"Промяна на паролата…",
"enter_email":"Моля, въведете <strong>адреса на е-пощата си</strong> и ще Ви изпратим е-писмо с инструкции за това как да достъпите акаунта си.",
"enter_email_address":"Въведете адрес на е-поща",
"password_reset_sent":"Ако посоченият адрес съответства на съществуващ потребителски акаунт, то вече му е изпратено е-писмо за подновяване на паролата. Имайте предвид, че може да бъде изпращано само по едно е-писмо на минута.",
"thread_tools.purge_confirm":"Наистина ли искате да изчистите тази тема?",
"thread_tools.merge_topics":"Сливане на темите",
"thread_tools.merge":"Сливане",
"topic_move_success":"Темата беше преместена успешно в %1. Щракнете тук за отмяна.",
"topic_move_success":"Темата ще бъде преместена в „%1“ след малко. Натиснете тук, за да отмените преместването.",
"topic_move_multiple_success":"Темите ще бъдат преместени в „%1“ след малко. Натиснете тук, за да отмените преместването.",
"topic_move_all_success":"Всички теми ще бъдат преместени в „%1“ след малко. Натиснете тук, за да отмените преместването.",
"topic_move_undone":"Преместването на темата беше отменено",
"topic_move_posts_success":"Публикациите ще бъдат преместени след малко. Натиснете тук, за да отмените преместването.",
"topic_move_posts_undone":"Преместването на публикациите беше отменено",
"post_delete_confirm":"Наистина ли искате да изтриете тази публикация?",
"post_restore_confirm":"Наистина ли искате да възстановите тази публикация?",
"post_purge_confirm":"Наистина ли искате да изчистите тази публикация?",
"pin-modal-expiry":"Дата на давност",
"pin-modal-help":"Ако желаете, тук можете да посочите дата на давност за закачените теми. Можете и да оставите полето празно, при което темата ще остане закачена, докато не бъде откачена ръчно.",
"load_categories":"Зареждане на категориите",
"confirm_move":"Преместване",
"confirm_fork":"Разделяне",
@@ -100,6 +106,9 @@
"fork_topic":"Разделяне на темата",
"fork_topic_instruction":"Натиснете публикациите, които искате да отделите",
"fork_no_pids":"Няма избрани публикации!",
"no-posts-selected":"Няма избрани публикации!",
"x-posts-selected":"Избрани публикации: %1",
"x-posts-will-be-moved-to-y":"%1 публикации ще бъдат преместени в „%2“",
"fork_pid_count":"Избрани публикации: %1",
"fork_success":"Темата е разделена успешно! Натиснете тук, за да преминете към отделената тема.",
"delete_posts_instruction":"Натиснете публикациите, които искате да изтриете/изчистите",
"upvote-notif-freq.first":"При първия за публикация",
@@ -128,6 +123,7 @@
"open_links_in_new_tab":"Отваряне на външните връзки в нов подпрозорец",
"enable_topic_searching":"Включване на търсенето в темите",
"topic_search_help":"Ако е включено, търсенето в темата ще замени стандартното поведение на браузъра при търсене в страницата и ще Ви позволи да претърсвате цялата тема, а не само това, което се вижда на екрана",
"update_url_with_post_index":"Обновяване на адресната лента с номера на публикацията по време на разглеждане на темите",
"scroll_to_my_post":"След публикуване на отговор, да се показва новата публикация",
"follow_topics_you_reply_to":"Следене на темите, в които отговаряте",
"follow_topics_you_create":"Следене на темите, които създавате",
"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?",
@@ -48,5 +54,6 @@
"alert.confirm-copyToAllGroup":"Are you sure you wish to apply this group's privilege set to <strong>all categories</strong>?",
"alert.confirm-copyToChildren":"Are you sure you wish to apply this privilege set to <strong>all descendant (child) categories</strong>?",
"alert.confirm-copyToChildrenGroup":"Are you sure you wish to apply this group's privilege set to <strong>all descendant (child) categories</strong>?",
"alert.no-undo":"<em>This action cannot be undone.</em>"
"alert.no-undo":"<em>This action cannot be undone.</em>",
"alert.admin-warning":"Administrators implicitly get all privileges"
"analytics.max-cache":"Analytics Cache Max Value",
"analytics.max-cache-help":"On high-traffic installs, the cache could be exhausted continuously if there are more concurrent active users than the Max Cache value. (Restart required)",
"compression.settings":"Compression Settings",
"compression.enable":"Enable Compression",
"compression.help":"This setting enables gzip compression. For a high-traffic website in production, the best way to put compression in place is to implement it at a reverse proxy level. You can enable it here for testing purposes."
}
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.