mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-12-24 09:20:32 +01:00
Compare commits
29 Commits
v2.4.0
...
v1.18.7-be
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bba9e7c0f7 | ||
|
|
8047900170 | ||
|
|
32b38643f8 | ||
|
|
37ba8a2c8e | ||
|
|
35f0c559c0 | ||
|
|
d19a273ce9 | ||
|
|
7624af5769 | ||
|
|
00a6b05f89 | ||
|
|
b46dcd9243 | ||
|
|
1a375000a7 | ||
|
|
1f8f2e9168 | ||
|
|
edae9522b5 | ||
|
|
7ff2b7fbb1 | ||
|
|
22e74dc0bb | ||
|
|
27acf19325 | ||
|
|
0f29433baf | ||
|
|
ebe7f11d0b | ||
|
|
c248805165 | ||
|
|
830cddfb40 | ||
|
|
abbbc3d7c2 | ||
|
|
8593ea87e9 | ||
|
|
1d401329ee | ||
|
|
9e52236973 | ||
|
|
eff03e4b57 | ||
|
|
854c078b73 | ||
|
|
36653525bd | ||
|
|
0409403f5b | ||
|
|
839673d321 | ||
|
|
d220d1d461 |
@@ -18,12 +18,3 @@ logs/
|
||||
.eslintrc
|
||||
test/files
|
||||
*.min.js
|
||||
|
||||
/public/src/app.js
|
||||
/public/src/client.js
|
||||
/public/src/admin/admin.js
|
||||
/public/src/modules/translator.common.js
|
||||
/public/src/modules/pictureCropper.js
|
||||
/public/src/modules/ace-editor.js
|
||||
/public/src/client/account/header.js
|
||||
/public/src/client/test.js
|
||||
32
.github/ISSUE_TEMPLATE.md
vendored
Normal file
32
.github/ISSUE_TEMPLATE.md
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
<!--
|
||||
== Github Issues are for bug reports and feature requests only ==
|
||||
== Please visit https://community.nodebb.org for other support ==
|
||||
== Found a security exploit? Please email us at security@nodebb.org instead for immediate attention ==
|
||||
== → DO NOT SUBMIT VULNERABILITIES TO THE PUBLIC BUG TRACKER ==
|
||||
-->
|
||||
|
||||
<!-- ++ Please include the following information when submitting a bug report ++ -->
|
||||
|
||||
- **NodeBB version:**
|
||||
- **NodeBB git hash:**
|
||||
- **NodeJS version:**
|
||||
<!-- (to find your git hash, execute `git rev-parse HEAD` from the main NodeBB directory) -->
|
||||
- **Installed NodeBB Plugins:**
|
||||
<!-- (to find installed plugins run ./nodebb plugins) -->
|
||||
- **Database type:** mongo, redis, or postgres
|
||||
- **Database version:**
|
||||
<!-- `mongod --version`, `redis-server --version`, or `postgres --version` -->
|
||||
- **Exact steps to cause this issue:**
|
||||
<!--
|
||||
1. First I did this...
|
||||
2. Then, I clicked on this item...
|
||||
|
||||
A quick note: MP4 and MOV formatted video files are now allowed to be uploaded to GH.
|
||||
Please upload if reproduction steps are hard to describe or reproduce reliably.
|
||||
-->
|
||||
- **What you expected:**
|
||||
<!-- e.g. I expected *abc* to *xyz* -->
|
||||
- **What happened instead:**
|
||||
<!-- e.g. Instead, I got *zyx* and NodeBB set fire to my house -->
|
||||
|
||||
<!-- Thank you! -->
|
||||
81
.github/ISSUE_TEMPLATE/bug-report.yml
vendored
81
.github/ISSUE_TEMPLATE/bug-report.yml
vendored
@@ -1,81 +0,0 @@
|
||||
name: Bug Report
|
||||
description: File a bug report
|
||||
labels: ["bug"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Github Issues are for bug reports and feature requests only
|
||||
Please visit https://community.nodebb.org for other support
|
||||
Found a security exploit? Please email us at security@nodebb.org instead for immediate attention
|
||||
### → DO NOT SUBMIT VULNERABILITIES TO THE PUBLIC BUG TRACKER ←
|
||||
- type: input
|
||||
attributes:
|
||||
label: NodeBB version
|
||||
placeholder: e.g. v2.2.0
|
||||
- type: input
|
||||
attributes:
|
||||
label: NodeBB git hash
|
||||
description: to find your git hash, execute `git rev-parse HEAD` from the main NodeBB directory
|
||||
placeholder: e.g. 783250ee6f8c51cdc243ce3b8d9f1a080517247e
|
||||
- type: input
|
||||
attributes:
|
||||
label: NodeJS version
|
||||
placeholder: e.g. v16.15.1
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Installed NodeBB plugins
|
||||
description: to find installed plugins run `./nodebb plugins`
|
||||
placeholder: |
|
||||
e.g.
|
||||
* nodebb-plugin-2factor@5.0.1 (installed, disabled)
|
||||
* nodebb-plugin-composer-default@8.0.0 (installed, enabled)
|
||||
* nodebb-plugin-dbsearch@5.1.5 (installed, disabled)
|
||||
* nodebb-plugin-emoji@4.0.4 (installed, enabled)
|
||||
* nodebb-plugin-emoji-android@3.0.0 (installed, enabled)
|
||||
* nodebb-plugin-markdown@10.0.0 (installed, enabled)
|
||||
* nodebb-plugin-mentions@3.0.11 (installed, enabled)
|
||||
* nodebb-plugin-spam-be-gone@1.0.0 (installed, disabled)
|
||||
* nodebb-rewards-essentials@0.2.1 (installed, enabled)
|
||||
* nodebb-theme-lavender@6.0.0 (installed, disabled)
|
||||
* nodebb-theme-persona@12.0.11 (installed, enabled)
|
||||
* nodebb-theme-slick@2.0.2 (installed, disabled)
|
||||
* nodebb-theme-vanilla@12.1.18 (installed, disabled)
|
||||
* nodebb-widget-essentials@6.0.0 (installed, enabled)
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Database type
|
||||
multiple: true
|
||||
options:
|
||||
- MongoDB
|
||||
- Redis
|
||||
- PostgreSQL
|
||||
- type: input
|
||||
attributes:
|
||||
label: Database version
|
||||
description: "`mongod --version`, `redis-server --version`, or `postgres --version`"
|
||||
placeholder: e.g. v5.0.9
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Exact steps to cause this issue
|
||||
placeholder: |
|
||||
1. First I did this...
|
||||
2. Then, I clicked on this item...
|
||||
|
||||
A quick note: MP4 and MOV formatted video files are now allowed to be uploaded to GH.
|
||||
Please upload if reproduction steps are hard to describe or reproduce reliably.
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: What you expected
|
||||
placeholder: e.g. I expected *abc* to *xyz*
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: What happened instead
|
||||
placeholder: e.g. Instead, I got *zyx* and NodeBB set fire to my house
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Anything else?
|
||||
description: Any additional context about the issue you're encountering
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: "**Thank you!**"
|
||||
5
.github/ISSUE_TEMPLATE/config.yml
vendored
5
.github/ISSUE_TEMPLATE/config.yml
vendored
@@ -1,5 +0,0 @@
|
||||
blank_issues_enabled: true
|
||||
contact_links:
|
||||
- name: Community Forum
|
||||
url: https://community.nodebb.org
|
||||
about: Github Issues are for bug reports and feature requests only, please use community forum for other support
|
||||
24
.github/ISSUE_TEMPLATE/feature-request.yml
vendored
24
.github/ISSUE_TEMPLATE/feature-request.yml
vendored
@@ -1,24 +0,0 @@
|
||||
name: Feature Request
|
||||
description: Suggest a new feature
|
||||
labels: ["enhancement"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Github Issues are for bug reports and feature requests only
|
||||
Please visit https://community.nodebb.org for other support
|
||||
Found a security exploit? Please email us at security@nodebb.org instead for immediate attention
|
||||
### → DO NOT SUBMIT VULNERABILITIES TO THE PUBLIC BUG TRACKER ←
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Description
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
attributes:
|
||||
label: Community forum reference
|
||||
description: If this feature was already discussed on the Community Forum link it here
|
||||
placeholder: https://community.nodebb.org/topic/0/example-feature-request
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: "**Thank you!**"
|
||||
4
.github/SECURITY.md
vendored
4
.github/SECURITY.md
vendored
@@ -2,8 +2,8 @@
|
||||
|
||||
NodeBB's security policy is based around a private bug bounty program. Users are invited to explore NodeBB for vulnerabilities, and report them to the NodeBB team so that they can be patched.
|
||||
|
||||
If you have found a security vulnerability, **do not post it onto our GitHub tracker**. Some security vulnerabilities are quite severe and discretion is recommended. Email the NodeBB Security Team at security@nodebb.org, instead, even if you are not sure whether something qualifies.
|
||||
If you have found a security vulnerability, **do not post it onto our GitHub tracker**. Some security vulnerabilities are quite severe and discretion is recommended. Email the NodeBB Security Team at security@nodebb.org, instead.
|
||||
|
||||
# Bug Bounty Program
|
||||
|
||||
Security vulnerability reports may be eligible for a bounty based on severity and confirmation from NodeBB team members. For full details regarding our bug bounty program, including the bounty amounts, please consult the [dedicated page for our Bug Bounty Program](https://nodebb.org/bounty).
|
||||
Security vulnerability reports may be eligible for a bounty based on severity and confirmation from NodeBB team members. For full details regarding our bug bounty program, including the bounty amounts, please consult the following page: https://blog.nodebb.org/bounty
|
||||
6
.github/dependabot.yml
vendored
Normal file
6
.github/dependabot.yml
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: npm
|
||||
directory: "/install"
|
||||
schedule:
|
||||
interval: daily
|
||||
2
.github/workflows/docker.yml
vendored
2
.github/workflows/docker.yml
vendored
@@ -34,7 +34,7 @@ jobs:
|
||||
|
||||
- name: Docker meta
|
||||
id: meta
|
||||
uses: docker/metadata-action@v4
|
||||
uses: docker/metadata-action@v3
|
||||
with:
|
||||
images: nodebb/docker
|
||||
tags: |
|
||||
|
||||
4
.github/workflows/test.yaml
vendored
4
.github/workflows/test.yaml
vendored
@@ -21,7 +21,7 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [ubuntu-latest]
|
||||
node: [14, 16, 18]
|
||||
node: [12, 14, 16]
|
||||
database: [mongo-dev, mongo, redis, postgres]
|
||||
include:
|
||||
# only run coverage once
|
||||
@@ -69,7 +69,7 @@ jobs:
|
||||
- 6379:6379
|
||||
|
||||
mongo:
|
||||
image: 'mongo:3.6'
|
||||
image: 'mongo:3.2'
|
||||
ports:
|
||||
# Maps port 27017 on service container to the host
|
||||
- 27017:27017
|
||||
|
||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -68,5 +68,4 @@ test/files/normalise-resized.jpg
|
||||
package-lock.json
|
||||
/package.json
|
||||
*.mongodb
|
||||
link-plugins.sh
|
||||
test.sh
|
||||
link-plugins.sh
|
||||
72
.tx/config
72
.tx/config
@@ -41,7 +41,6 @@ trans.rw = public/language/rw/category.json
|
||||
trans.sc = public/language/sc/category.json
|
||||
trans.sk = public/language/sk/category.json
|
||||
trans.sl = public/language/sl/category.json
|
||||
trans.sq_AL = public/language/sq-AL/category.json
|
||||
trans.sr = public/language/sr/category.json
|
||||
trans.sv = public/language/sv/category.json
|
||||
trans.th = public/language/th/category.json
|
||||
@@ -92,7 +91,6 @@ trans.rw = public/language/rw/login.json
|
||||
trans.sc = public/language/sc/login.json
|
||||
trans.sk = public/language/sk/login.json
|
||||
trans.sl = public/language/sl/login.json
|
||||
trans.sq_AL = public/language/sq-AL/login.json
|
||||
trans.sr = public/language/sr/login.json
|
||||
trans.sv = public/language/sv/login.json
|
||||
trans.th = public/language/th/login.json
|
||||
@@ -143,7 +141,6 @@ trans.rw = public/language/rw/recent.json
|
||||
trans.sc = public/language/sc/recent.json
|
||||
trans.sk = public/language/sk/recent.json
|
||||
trans.sl = public/language/sl/recent.json
|
||||
trans.sq_AL = public/language/sq-AL/recent.json
|
||||
trans.sr = public/language/sr/recent.json
|
||||
trans.sv = public/language/sv/recent.json
|
||||
trans.th = public/language/th/recent.json
|
||||
@@ -194,7 +191,6 @@ trans.rw = public/language/rw/unread.json
|
||||
trans.sc = public/language/sc/unread.json
|
||||
trans.sk = public/language/sk/unread.json
|
||||
trans.sl = public/language/sl/unread.json
|
||||
trans.sq_AL = public/language/sq-AL/unread.json
|
||||
trans.sr = public/language/sr/unread.json
|
||||
trans.sv = public/language/sv/unread.json
|
||||
trans.th = public/language/th/unread.json
|
||||
@@ -245,7 +241,6 @@ trans.rw = public/language/rw/modules.json
|
||||
trans.sc = public/language/sc/modules.json
|
||||
trans.sk = public/language/sk/modules.json
|
||||
trans.sl = public/language/sl/modules.json
|
||||
trans.sq_AL = public/language/sq-AL/modules.json
|
||||
trans.sr = public/language/sr/modules.json
|
||||
trans.sv = public/language/sv/modules.json
|
||||
trans.th = public/language/th/modules.json
|
||||
@@ -296,7 +291,6 @@ trans.rw = public/language/rw/post-queue.json
|
||||
trans.sc = public/language/sc/post-queue.json
|
||||
trans.sk = public/language/sk/post-queue.json
|
||||
trans.sl = public/language/sl/post-queue.json
|
||||
trans.sq_AL = public/language/sq-AL/post-queue.json
|
||||
trans.sr = public/language/sr/post-queue.json
|
||||
trans.sv = public/language/sv/post-queue.json
|
||||
trans.th = public/language/th/post-queue.json
|
||||
@@ -347,7 +341,6 @@ trans.rw = public/language/rw/ip-blacklist.json
|
||||
trans.sc = public/language/sc/ip-blacklist.json
|
||||
trans.sk = public/language/sk/ip-blacklist.json
|
||||
trans.sl = public/language/sl/ip-blacklist.json
|
||||
trans.sq_AL = public/language/sq-AL/ip-blacklist.json
|
||||
trans.sr = public/language/sr/ip-blacklist.json
|
||||
trans.sv = public/language/sv/ip-blacklist.json
|
||||
trans.th = public/language/th/ip-blacklist.json
|
||||
@@ -398,7 +391,6 @@ trans.rw = public/language/rw/register.json
|
||||
trans.sc = public/language/sc/register.json
|
||||
trans.sk = public/language/sk/register.json
|
||||
trans.sl = public/language/sl/register.json
|
||||
trans.sq_AL = public/language/sq-AL/register.json
|
||||
trans.sr = public/language/sr/register.json
|
||||
trans.sv = public/language/sv/register.json
|
||||
trans.th = public/language/th/register.json
|
||||
@@ -449,7 +441,6 @@ trans.rw = public/language/rw/user.json
|
||||
trans.sc = public/language/sc/user.json
|
||||
trans.sk = public/language/sk/user.json
|
||||
trans.sl = public/language/sl/user.json
|
||||
trans.sq_AL = public/language/sq-AL/user.json
|
||||
trans.sr = public/language/sr/user.json
|
||||
trans.sv = public/language/sv/user.json
|
||||
trans.th = public/language/th/user.json
|
||||
@@ -500,7 +491,6 @@ trans.rw = public/language/rw/global.json
|
||||
trans.sc = public/language/sc/global.json
|
||||
trans.sk = public/language/sk/global.json
|
||||
trans.sl = public/language/sl/global.json
|
||||
trans.sq_AL = public/language/sq-AL/global.json
|
||||
trans.sr = public/language/sr/global.json
|
||||
trans.sv = public/language/sv/global.json
|
||||
trans.th = public/language/th/global.json
|
||||
@@ -551,7 +541,6 @@ trans.rw = public/language/rw/notifications.json
|
||||
trans.sc = public/language/sc/notifications.json
|
||||
trans.sk = public/language/sk/notifications.json
|
||||
trans.sl = public/language/sl/notifications.json
|
||||
trans.sq_AL = public/language/sq-AL/notifications.json
|
||||
trans.sr = public/language/sr/notifications.json
|
||||
trans.sv = public/language/sv/notifications.json
|
||||
trans.th = public/language/th/notifications.json
|
||||
@@ -602,7 +591,6 @@ trans.rw = public/language/rw/reset_password.json
|
||||
trans.sc = public/language/sc/reset_password.json
|
||||
trans.sk = public/language/sk/reset_password.json
|
||||
trans.sl = public/language/sl/reset_password.json
|
||||
trans.sq_AL = public/language/sq-AL/reset_password.json
|
||||
trans.sr = public/language/sr/reset_password.json
|
||||
trans.sv = public/language/sv/reset_password.json
|
||||
trans.th = public/language/th/reset_password.json
|
||||
@@ -653,7 +641,6 @@ trans.rw = public/language/rw/users.json
|
||||
trans.sc = public/language/sc/users.json
|
||||
trans.sk = public/language/sk/users.json
|
||||
trans.sl = public/language/sl/users.json
|
||||
trans.sq_AL = public/language/sq-AL/users.json
|
||||
trans.sr = public/language/sr/users.json
|
||||
trans.sv = public/language/sv/users.json
|
||||
trans.th = public/language/th/users.json
|
||||
@@ -704,7 +691,6 @@ trans.rw = public/language/rw/language.json
|
||||
trans.sc = public/language/sc/language.json
|
||||
trans.sk = public/language/sk/language.json
|
||||
trans.sl = public/language/sl/language.json
|
||||
trans.sq_AL = public/language/sq-AL/language.json
|
||||
trans.sr = public/language/sr/language.json
|
||||
trans.sv = public/language/sv/language.json
|
||||
trans.th = public/language/th/language.json
|
||||
@@ -755,7 +741,6 @@ trans.rw = public/language/rw/pages.json
|
||||
trans.sc = public/language/sc/pages.json
|
||||
trans.sk = public/language/sk/pages.json
|
||||
trans.sl = public/language/sl/pages.json
|
||||
trans.sq_AL = public/language/sq-AL/pages.json
|
||||
trans.sr = public/language/sr/pages.json
|
||||
trans.sv = public/language/sv/pages.json
|
||||
trans.th = public/language/th/pages.json
|
||||
@@ -806,7 +791,6 @@ trans.rw = public/language/rw/topic.json
|
||||
trans.sc = public/language/sc/topic.json
|
||||
trans.sk = public/language/sk/topic.json
|
||||
trans.sl = public/language/sl/topic.json
|
||||
trans.sq_AL = public/language/sq-AL/topic.json
|
||||
trans.sr = public/language/sr/topic.json
|
||||
trans.sv = public/language/sv/topic.json
|
||||
trans.th = public/language/th/topic.json
|
||||
@@ -857,7 +841,6 @@ trans.rw = public/language/rw/success.json
|
||||
trans.sc = public/language/sc/success.json
|
||||
trans.sk = public/language/sk/success.json
|
||||
trans.sl = public/language/sl/success.json
|
||||
trans.sq_AL = public/language/sq-AL/success.json
|
||||
trans.sr = public/language/sr/success.json
|
||||
trans.sv = public/language/sv/success.json
|
||||
trans.th = public/language/th/success.json
|
||||
@@ -908,7 +891,6 @@ trans.rw = public/language/rw/error.json
|
||||
trans.sc = public/language/sc/error.json
|
||||
trans.sk = public/language/sk/error.json
|
||||
trans.sl = public/language/sl/error.json
|
||||
trans.sq_AL = public/language/sq-AL/error.json
|
||||
trans.sr = public/language/sr/error.json
|
||||
trans.sv = public/language/sv/error.json
|
||||
trans.th = public/language/th/error.json
|
||||
@@ -959,7 +941,6 @@ trans.rw = public/language/rw/flags.json
|
||||
trans.sc = public/language/sc/flags.json
|
||||
trans.sk = public/language/sk/flags.json
|
||||
trans.sl = public/language/sl/flags.json
|
||||
trans.sq_AL = public/language/sq-AL/flags.json
|
||||
trans.sr = public/language/sr/flags.json
|
||||
trans.sv = public/language/sv/flags.json
|
||||
trans.th = public/language/th/flags.json
|
||||
@@ -1009,7 +990,6 @@ trans.rw = public/language/rw/tags.json
|
||||
trans.sc = public/language/sc/tags.json
|
||||
trans.sk = public/language/sk/tags.json
|
||||
trans.sl = public/language/sl/tags.json
|
||||
trans.sq_AL = public/language/sq-AL/tags.json
|
||||
trans.sr = public/language/sr/tags.json
|
||||
trans.sv = public/language/sv/tags.json
|
||||
trans.th = public/language/th/tags.json
|
||||
@@ -1060,7 +1040,6 @@ trans.rw = public/language/rw/top.json
|
||||
trans.sc = public/language/sc/top.json
|
||||
trans.sk = public/language/sk/top.json
|
||||
trans.sl = public/language/sl/top.json
|
||||
trans.sq_AL = public/language/sq-AL/top.json
|
||||
trans.sr = public/language/sr/top.json
|
||||
trans.sv = public/language/sv/top.json
|
||||
trans.th = public/language/th/top.json
|
||||
@@ -1111,7 +1090,6 @@ trans.rw = public/language/rw/email.json
|
||||
trans.sc = public/language/sc/email.json
|
||||
trans.sk = public/language/sk/email.json
|
||||
trans.sl = public/language/sl/email.json
|
||||
trans.sq_AL = public/language/sq-AL/email.json
|
||||
trans.sr = public/language/sr/email.json
|
||||
trans.sv = public/language/sv/email.json
|
||||
trans.th = public/language/th/email.json
|
||||
@@ -1162,7 +1140,6 @@ trans.rw = public/language/rw/search.json
|
||||
trans.sc = public/language/sc/search.json
|
||||
trans.sk = public/language/sk/search.json
|
||||
trans.sl = public/language/sl/search.json
|
||||
trans.sq_AL = public/language/sq-AL/search.json
|
||||
trans.sr = public/language/sr/search.json
|
||||
trans.sv = public/language/sv/search.json
|
||||
trans.th = public/language/th/search.json
|
||||
@@ -1213,7 +1190,6 @@ trans.rw = public/language/rw/groups.json
|
||||
trans.sc = public/language/sc/groups.json
|
||||
trans.sk = public/language/sk/groups.json
|
||||
trans.sl = public/language/sl/groups.json
|
||||
trans.sq_AL = public/language/sq-AL/groups.json
|
||||
trans.sr = public/language/sr/groups.json
|
||||
trans.sv = public/language/sv/groups.json
|
||||
trans.th = public/language/th/groups.json
|
||||
@@ -1264,7 +1240,6 @@ trans.rw = public/language/rw/uploads.json
|
||||
trans.sc = public/language/sc/uploads.json
|
||||
trans.sk = public/language/sk/uploads.json
|
||||
trans.sl = public/language/sl/uploads.json
|
||||
trans.sq_AL = public/language/sq-AL/uploads.json
|
||||
trans.sr = public/language/sr/uploads.json
|
||||
trans.sv = public/language/sv/uploads.json
|
||||
trans.th = public/language/th/uploads.json
|
||||
@@ -1315,7 +1290,6 @@ trans.rw = public/language/rw/admin/admin.json
|
||||
trans.sc = public/language/sc/admin/admin.json
|
||||
trans.sk = public/language/sk/admin/admin.json
|
||||
trans.sl = public/language/sl/admin/admin.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/admin.json
|
||||
trans.sr = public/language/sr/admin/admin.json
|
||||
trans.sv = public/language/sv/admin/admin.json
|
||||
trans.th = public/language/th/admin/admin.json
|
||||
@@ -1366,7 +1340,6 @@ trans.rw = public/language/rw/admin/menu.json
|
||||
trans.sc = public/language/sc/admin/menu.json
|
||||
trans.sk = public/language/sk/admin/menu.json
|
||||
trans.sl = public/language/sl/admin/menu.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/menu.json
|
||||
trans.sr = public/language/sr/admin/menu.json
|
||||
trans.sv = public/language/sv/admin/menu.json
|
||||
trans.th = public/language/th/admin/menu.json
|
||||
@@ -1417,7 +1390,6 @@ trans.rw = public/language/rw/admin/advanced/cache.json
|
||||
trans.sc = public/language/sc/admin/advanced/cache.json
|
||||
trans.sk = public/language/sk/admin/advanced/cache.json
|
||||
trans.sl = public/language/sl/admin/advanced/cache.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/advanced/cache.json
|
||||
trans.sr = public/language/sr/admin/advanced/cache.json
|
||||
trans.sv = public/language/sv/admin/advanced/cache.json
|
||||
trans.th = public/language/th/admin/advanced/cache.json
|
||||
@@ -1468,7 +1440,6 @@ trans.rw = public/language/rw/admin/advanced/database.json
|
||||
trans.sc = public/language/sc/admin/advanced/database.json
|
||||
trans.sk = public/language/sk/admin/advanced/database.json
|
||||
trans.sl = public/language/sl/admin/advanced/database.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/advanced/database.json
|
||||
trans.sr = public/language/sr/admin/advanced/database.json
|
||||
trans.sv = public/language/sv/admin/advanced/database.json
|
||||
trans.th = public/language/th/admin/advanced/database.json
|
||||
@@ -1519,7 +1490,6 @@ trans.rw = public/language/rw/admin/advanced/errors.json
|
||||
trans.sc = public/language/sc/admin/advanced/errors.json
|
||||
trans.sk = public/language/sk/admin/advanced/errors.json
|
||||
trans.sl = public/language/sl/admin/advanced/errors.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/advanced/errors.json
|
||||
trans.sr = public/language/sr/admin/advanced/errors.json
|
||||
trans.sv = public/language/sv/admin/advanced/errors.json
|
||||
trans.th = public/language/th/admin/advanced/errors.json
|
||||
@@ -1570,7 +1540,6 @@ trans.rw = public/language/rw/admin/advanced/events.json
|
||||
trans.sc = public/language/sc/admin/advanced/events.json
|
||||
trans.sk = public/language/sk/admin/advanced/events.json
|
||||
trans.sl = public/language/sl/admin/advanced/events.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/advanced/events.json
|
||||
trans.sr = public/language/sr/admin/advanced/events.json
|
||||
trans.sv = public/language/sv/admin/advanced/events.json
|
||||
trans.th = public/language/th/admin/advanced/events.json
|
||||
@@ -1621,7 +1590,6 @@ trans.rw = public/language/rw/admin/advanced/logs.json
|
||||
trans.sc = public/language/sc/admin/advanced/logs.json
|
||||
trans.sk = public/language/sk/admin/advanced/logs.json
|
||||
trans.sl = public/language/sl/admin/advanced/logs.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/advanced/logs.json
|
||||
trans.sr = public/language/sr/admin/advanced/logs.json
|
||||
trans.sv = public/language/sv/admin/advanced/logs.json
|
||||
trans.th = public/language/th/admin/advanced/logs.json
|
||||
@@ -1672,7 +1640,6 @@ trans.rw = public/language/rw/admin/appearance/customise.json
|
||||
trans.sc = public/language/sc/admin/appearance/customise.json
|
||||
trans.sk = public/language/sk/admin/appearance/customise.json
|
||||
trans.sl = public/language/sl/admin/appearance/customise.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/appearance/customise.json
|
||||
trans.sr = public/language/sr/admin/appearance/customise.json
|
||||
trans.sv = public/language/sv/admin/appearance/customise.json
|
||||
trans.th = public/language/th/admin/appearance/customise.json
|
||||
@@ -1723,7 +1690,6 @@ trans.rw = public/language/rw/admin/appearance/skins.json
|
||||
trans.sc = public/language/sc/admin/appearance/skins.json
|
||||
trans.sk = public/language/sk/admin/appearance/skins.json
|
||||
trans.sl = public/language/sl/admin/appearance/skins.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/appearance/skins.json
|
||||
trans.sr = public/language/sr/admin/appearance/skins.json
|
||||
trans.sv = public/language/sv/admin/appearance/skins.json
|
||||
trans.th = public/language/th/admin/appearance/skins.json
|
||||
@@ -1774,7 +1740,6 @@ trans.rw = public/language/rw/admin/appearance/themes.json
|
||||
trans.sc = public/language/sc/admin/appearance/themes.json
|
||||
trans.sk = public/language/sk/admin/appearance/themes.json
|
||||
trans.sl = public/language/sl/admin/appearance/themes.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/appearance/themes.json
|
||||
trans.sr = public/language/sr/admin/appearance/themes.json
|
||||
trans.sv = public/language/sv/admin/appearance/themes.json
|
||||
trans.th = public/language/th/admin/appearance/themes.json
|
||||
@@ -1825,7 +1790,6 @@ trans.rw = public/language/rw/admin/development/info.json
|
||||
trans.sc = public/language/sc/admin/development/info.json
|
||||
trans.sk = public/language/sk/admin/development/info.json
|
||||
trans.sl = public/language/sl/admin/development/info.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/development/info.json
|
||||
trans.sr = public/language/sr/admin/development/info.json
|
||||
trans.sv = public/language/sv/admin/development/info.json
|
||||
trans.th = public/language/th/admin/development/info.json
|
||||
@@ -1876,7 +1840,6 @@ trans.rw = public/language/rw/admin/development/logger.json
|
||||
trans.sc = public/language/sc/admin/development/logger.json
|
||||
trans.sk = public/language/sk/admin/development/logger.json
|
||||
trans.sl = public/language/sl/admin/development/logger.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/development/logger.json
|
||||
trans.sr = public/language/sr/admin/development/logger.json
|
||||
trans.sv = public/language/sv/admin/development/logger.json
|
||||
trans.th = public/language/th/admin/development/logger.json
|
||||
@@ -1927,7 +1890,6 @@ trans.rw = public/language/rw/admin/extend/plugins.json
|
||||
trans.sc = public/language/sc/admin/extend/plugins.json
|
||||
trans.sk = public/language/sk/admin/extend/plugins.json
|
||||
trans.sl = public/language/sl/admin/extend/plugins.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/extend/plugins.json
|
||||
trans.sr = public/language/sr/admin/extend/plugins.json
|
||||
trans.sv = public/language/sv/admin/extend/plugins.json
|
||||
trans.th = public/language/th/admin/extend/plugins.json
|
||||
@@ -1978,7 +1940,6 @@ trans.rw = public/language/rw/admin/extend/rewards.json
|
||||
trans.sc = public/language/sc/admin/extend/rewards.json
|
||||
trans.sk = public/language/sk/admin/extend/rewards.json
|
||||
trans.sl = public/language/sl/admin/extend/rewards.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/extend/rewards.json
|
||||
trans.sr = public/language/sr/admin/extend/rewards.json
|
||||
trans.sv = public/language/sv/admin/extend/rewards.json
|
||||
trans.th = public/language/th/admin/extend/rewards.json
|
||||
@@ -2029,7 +1990,6 @@ trans.rw = public/language/rw/admin/extend/widgets.json
|
||||
trans.sc = public/language/sc/admin/extend/widgets.json
|
||||
trans.sk = public/language/sk/admin/extend/widgets.json
|
||||
trans.sl = public/language/sl/admin/extend/widgets.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/extend/widgets.json
|
||||
trans.sr = public/language/sr/admin/extend/widgets.json
|
||||
trans.sv = public/language/sv/admin/extend/widgets.json
|
||||
trans.th = public/language/th/admin/extend/widgets.json
|
||||
@@ -2080,7 +2040,6 @@ trans.rw = public/language/rw/admin/dashboard.json
|
||||
trans.sc = public/language/sc/admin/dashboard.json
|
||||
trans.sk = public/language/sk/admin/dashboard.json
|
||||
trans.sl = public/language/sl/admin/dashboard.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/dashboard.json
|
||||
trans.sr = public/language/sr/admin/dashboard.json
|
||||
trans.sv = public/language/sv/admin/dashboard.json
|
||||
trans.th = public/language/th/admin/dashboard.json
|
||||
@@ -2131,7 +2090,6 @@ trans.rw = public/language/rw/admin/settings/homepage.json
|
||||
trans.sc = public/language/sc/admin/settings/homepage.json
|
||||
trans.sk = public/language/sk/admin/settings/homepage.json
|
||||
trans.sl = public/language/sl/admin/settings/homepage.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/settings/homepage.json
|
||||
trans.sr = public/language/sr/admin/settings/homepage.json
|
||||
trans.sv = public/language/sv/admin/settings/homepage.json
|
||||
trans.th = public/language/th/admin/settings/homepage.json
|
||||
@@ -2182,7 +2140,6 @@ trans.rw = public/language/rw/admin/settings/languages.json
|
||||
trans.sc = public/language/sc/admin/settings/languages.json
|
||||
trans.sk = public/language/sk/admin/settings/languages.json
|
||||
trans.sl = public/language/sl/admin/settings/languages.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/settings/languages.json
|
||||
trans.sr = public/language/sr/admin/settings/languages.json
|
||||
trans.sv = public/language/sv/admin/settings/languages.json
|
||||
trans.th = public/language/th/admin/settings/languages.json
|
||||
@@ -2233,7 +2190,6 @@ trans.rw = public/language/rw/admin/settings/navigation.json
|
||||
trans.sc = public/language/sc/admin/settings/navigation.json
|
||||
trans.sk = public/language/sk/admin/settings/navigation.json
|
||||
trans.sl = public/language/sl/admin/settings/navigation.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/settings/navigation.json
|
||||
trans.sr = public/language/sr/admin/settings/navigation.json
|
||||
trans.sv = public/language/sv/admin/settings/navigation.json
|
||||
trans.th = public/language/th/admin/settings/navigation.json
|
||||
@@ -2284,7 +2240,6 @@ trans.rw = public/language/rw/admin/settings/social.json
|
||||
trans.sc = public/language/sc/admin/settings/social.json
|
||||
trans.sk = public/language/sk/admin/settings/social.json
|
||||
trans.sl = public/language/sl/admin/settings/social.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/settings/social.json
|
||||
trans.sr = public/language/sr/admin/settings/social.json
|
||||
trans.sv = public/language/sv/admin/settings/social.json
|
||||
trans.th = public/language/th/admin/settings/social.json
|
||||
@@ -2335,7 +2290,6 @@ trans.rw = public/language/rw/admin/settings/sounds.json
|
||||
trans.sc = public/language/sc/admin/settings/sounds.json
|
||||
trans.sk = public/language/sk/admin/settings/sounds.json
|
||||
trans.sl = public/language/sl/admin/settings/sounds.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/settings/sounds.json
|
||||
trans.sr = public/language/sr/admin/settings/sounds.json
|
||||
trans.sv = public/language/sv/admin/settings/sounds.json
|
||||
trans.th = public/language/th/admin/settings/sounds.json
|
||||
@@ -2386,7 +2340,6 @@ trans.rw = public/language/rw/admin/manage/admins-mods.json
|
||||
trans.sc = public/language/sc/admin/manage/admins-mods.json
|
||||
trans.sk = public/language/sk/admin/manage/admins-mods.json
|
||||
trans.sl = public/language/sl/admin/manage/admins-mods.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/manage/admins-mods.json
|
||||
trans.sr = public/language/sr/admin/manage/admins-mods.json
|
||||
trans.sv = public/language/sv/admin/manage/admins-mods.json
|
||||
trans.th = public/language/th/admin/manage/admins-mods.json
|
||||
@@ -2437,7 +2390,6 @@ trans.rw = public/language/rw/admin/manage/categories.json
|
||||
trans.sc = public/language/sc/admin/manage/categories.json
|
||||
trans.sk = public/language/sk/admin/manage/categories.json
|
||||
trans.sl = public/language/sl/admin/manage/categories.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/manage/categories.json
|
||||
trans.sr = public/language/sr/admin/manage/categories.json
|
||||
trans.sv = public/language/sv/admin/manage/categories.json
|
||||
trans.th = public/language/th/admin/manage/categories.json
|
||||
@@ -2488,7 +2440,6 @@ trans.rw = public/language/rw/admin/manage/groups.json
|
||||
trans.sc = public/language/sc/admin/manage/groups.json
|
||||
trans.sk = public/language/sk/admin/manage/groups.json
|
||||
trans.sl = public/language/sl/admin/manage/groups.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/manage/groups.json
|
||||
trans.sr = public/language/sr/admin/manage/groups.json
|
||||
trans.sv = public/language/sv/admin/manage/groups.json
|
||||
trans.th = public/language/th/admin/manage/groups.json
|
||||
@@ -2539,7 +2490,6 @@ trans.rw = public/language/rw/admin/manage/privileges.json
|
||||
trans.sc = public/language/sc/admin/manage/privileges.json
|
||||
trans.sk = public/language/sk/admin/manage/privileges.json
|
||||
trans.sl = public/language/sl/admin/manage/privileges.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/manage/privileges.json
|
||||
trans.sr = public/language/sr/admin/manage/privileges.json
|
||||
trans.sv = public/language/sv/admin/manage/privileges.json
|
||||
trans.th = public/language/th/admin/manage/privileges.json
|
||||
@@ -2590,7 +2540,6 @@ trans.rw = public/language/rw/admin/manage/registration.json
|
||||
trans.sc = public/language/sc/admin/manage/registration.json
|
||||
trans.sk = public/language/sk/admin/manage/registration.json
|
||||
trans.sl = public/language/sl/admin/manage/registration.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/manage/registration.json
|
||||
trans.sr = public/language/sr/admin/manage/registration.json
|
||||
trans.sv = public/language/sv/admin/manage/registration.json
|
||||
trans.th = public/language/th/admin/manage/registration.json
|
||||
@@ -2641,7 +2590,6 @@ trans.rw = public/language/rw/admin/manage/tags.json
|
||||
trans.sc = public/language/sc/admin/manage/tags.json
|
||||
trans.sk = public/language/sk/admin/manage/tags.json
|
||||
trans.sl = public/language/sl/admin/manage/tags.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/manage/tags.json
|
||||
trans.sr = public/language/sr/admin/manage/tags.json
|
||||
trans.sv = public/language/sv/admin/manage/tags.json
|
||||
trans.th = public/language/th/admin/manage/tags.json
|
||||
@@ -2692,7 +2640,6 @@ trans.rw = public/language/rw/admin/manage/uploads.json
|
||||
trans.sc = public/language/sc/admin/manage/uploads.json
|
||||
trans.sk = public/language/sk/admin/manage/uploads.json
|
||||
trans.sl = public/language/sl/admin/manage/uploads.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/manage/uploads.json
|
||||
trans.sr = public/language/sr/admin/manage/uploads.json
|
||||
trans.sv = public/language/sv/admin/manage/uploads.json
|
||||
trans.th = public/language/th/admin/manage/uploads.json
|
||||
@@ -2743,7 +2690,6 @@ trans.rw = public/language/rw/admin/manage/users.json
|
||||
trans.sc = public/language/sc/admin/manage/users.json
|
||||
trans.sk = public/language/sk/admin/manage/users.json
|
||||
trans.sl = public/language/sl/admin/manage/users.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/manage/users.json
|
||||
trans.sr = public/language/sr/admin/manage/users.json
|
||||
trans.sv = public/language/sv/admin/manage/users.json
|
||||
trans.th = public/language/th/admin/manage/users.json
|
||||
@@ -2794,7 +2740,6 @@ trans.rw = public/language/rw/admin/manage/digest.json
|
||||
trans.sc = public/language/sc/admin/manage/digest.json
|
||||
trans.sk = public/language/sk/admin/manage/digest.json
|
||||
trans.sl = public/language/sl/admin/manage/digest.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/manage/digest.json
|
||||
trans.sr = public/language/sr/admin/manage/digest.json
|
||||
trans.sv = public/language/sv/admin/manage/digest.json
|
||||
trans.th = public/language/th/admin/manage/digest.json
|
||||
@@ -2845,7 +2790,6 @@ trans.rw = public/language/rw/admin/settings/advanced.json
|
||||
trans.sc = public/language/sc/admin/settings/advanced.json
|
||||
trans.sk = public/language/sk/admin/settings/advanced.json
|
||||
trans.sl = public/language/sl/admin/settings/advanced.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/settings/advanced.json
|
||||
trans.sr = public/language/sr/admin/settings/advanced.json
|
||||
trans.sv = public/language/sv/admin/settings/advanced.json
|
||||
trans.th = public/language/th/admin/settings/advanced.json
|
||||
@@ -2896,7 +2840,6 @@ trans.rw = public/language/rw/admin/settings/cookies.json
|
||||
trans.sc = public/language/sc/admin/settings/cookies.json
|
||||
trans.sk = public/language/sk/admin/settings/cookies.json
|
||||
trans.sl = public/language/sl/admin/settings/cookies.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/settings/cookies.json
|
||||
trans.sr = public/language/sr/admin/settings/cookies.json
|
||||
trans.sv = public/language/sv/admin/settings/cookies.json
|
||||
trans.th = public/language/th/admin/settings/cookies.json
|
||||
@@ -2947,7 +2890,6 @@ trans.rw = public/language/rw/admin/settings/general.json
|
||||
trans.sc = public/language/sc/admin/settings/general.json
|
||||
trans.sk = public/language/sk/admin/settings/general.json
|
||||
trans.sl = public/language/sl/admin/settings/general.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/settings/general.json
|
||||
trans.sr = public/language/sr/admin/settings/general.json
|
||||
trans.sv = public/language/sv/admin/settings/general.json
|
||||
trans.th = public/language/th/admin/settings/general.json
|
||||
@@ -2998,7 +2940,6 @@ trans.rw = public/language/rw/admin/settings/guest.json
|
||||
trans.sc = public/language/sc/admin/settings/guest.json
|
||||
trans.sk = public/language/sk/admin/settings/guest.json
|
||||
trans.sl = public/language/sl/admin/settings/guest.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/settings/guest.json
|
||||
trans.sr = public/language/sr/admin/settings/guest.json
|
||||
trans.sv = public/language/sv/admin/settings/guest.json
|
||||
trans.th = public/language/th/admin/settings/guest.json
|
||||
@@ -3049,7 +2990,6 @@ trans.rw = public/language/rw/admin/settings/pagination.json
|
||||
trans.sc = public/language/sc/admin/settings/pagination.json
|
||||
trans.sk = public/language/sk/admin/settings/pagination.json
|
||||
trans.sl = public/language/sl/admin/settings/pagination.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/settings/pagination.json
|
||||
trans.sr = public/language/sr/admin/settings/pagination.json
|
||||
trans.sv = public/language/sv/admin/settings/pagination.json
|
||||
trans.th = public/language/th/admin/settings/pagination.json
|
||||
@@ -3100,7 +3040,6 @@ trans.rw = public/language/rw/admin/settings/reputation.json
|
||||
trans.sc = public/language/sc/admin/settings/reputation.json
|
||||
trans.sk = public/language/sk/admin/settings/reputation.json
|
||||
trans.sl = public/language/sl/admin/settings/reputation.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/settings/reputation.json
|
||||
trans.sr = public/language/sr/admin/settings/reputation.json
|
||||
trans.sv = public/language/sv/admin/settings/reputation.json
|
||||
trans.th = public/language/th/admin/settings/reputation.json
|
||||
@@ -3151,7 +3090,6 @@ trans.rw = public/language/rw/admin/settings/tags.json
|
||||
trans.sc = public/language/sc/admin/settings/tags.json
|
||||
trans.sk = public/language/sk/admin/settings/tags.json
|
||||
trans.sl = public/language/sl/admin/settings/tags.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/settings/tags.json
|
||||
trans.sr = public/language/sr/admin/settings/tags.json
|
||||
trans.sv = public/language/sv/admin/settings/tags.json
|
||||
trans.th = public/language/th/admin/settings/tags.json
|
||||
@@ -3202,7 +3140,6 @@ trans.rw = public/language/rw/admin/settings/user.json
|
||||
trans.sc = public/language/sc/admin/settings/user.json
|
||||
trans.sk = public/language/sk/admin/settings/user.json
|
||||
trans.sl = public/language/sl/admin/settings/user.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/settings/user.json
|
||||
trans.sr = public/language/sr/admin/settings/user.json
|
||||
trans.sv = public/language/sv/admin/settings/user.json
|
||||
trans.th = public/language/th/admin/settings/user.json
|
||||
@@ -3253,7 +3190,6 @@ trans.rw = public/language/rw/admin/settings/chat.json
|
||||
trans.sc = public/language/sc/admin/settings/chat.json
|
||||
trans.sk = public/language/sk/admin/settings/chat.json
|
||||
trans.sl = public/language/sl/admin/settings/chat.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/settings/chat.json
|
||||
trans.sr = public/language/sr/admin/settings/chat.json
|
||||
trans.sv = public/language/sv/admin/settings/chat.json
|
||||
trans.th = public/language/th/admin/settings/chat.json
|
||||
@@ -3304,7 +3240,6 @@ trans.rw = public/language/rw/admin/settings/email.json
|
||||
trans.sc = public/language/sc/admin/settings/email.json
|
||||
trans.sk = public/language/sk/admin/settings/email.json
|
||||
trans.sl = public/language/sl/admin/settings/email.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/settings/email.json
|
||||
trans.sr = public/language/sr/admin/settings/email.json
|
||||
trans.sv = public/language/sv/admin/settings/email.json
|
||||
trans.th = public/language/th/admin/settings/email.json
|
||||
@@ -3355,7 +3290,6 @@ trans.rw = public/language/rw/admin/settings/group.json
|
||||
trans.sc = public/language/sc/admin/settings/group.json
|
||||
trans.sk = public/language/sk/admin/settings/group.json
|
||||
trans.sl = public/language/sl/admin/settings/group.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/settings/group.json
|
||||
trans.sr = public/language/sr/admin/settings/group.json
|
||||
trans.sv = public/language/sv/admin/settings/group.json
|
||||
trans.th = public/language/th/admin/settings/group.json
|
||||
@@ -3406,7 +3340,6 @@ trans.rw = public/language/rw/admin/settings/notifications.json
|
||||
trans.sc = public/language/sc/admin/settings/notifications.json
|
||||
trans.sk = public/language/sk/admin/settings/notifications.json
|
||||
trans.sl = public/language/sl/admin/settings/notifications.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/settings/notifications.json
|
||||
trans.sr = public/language/sr/admin/settings/notifications.json
|
||||
trans.sv = public/language/sv/admin/settings/notifications.json
|
||||
trans.th = public/language/th/admin/settings/notifications.json
|
||||
@@ -3457,7 +3390,6 @@ trans.rw = public/language/rw/admin/settings/api.json
|
||||
trans.sc = public/language/sc/admin/settings/api.json
|
||||
trans.sk = public/language/sk/admin/settings/api.json
|
||||
trans.sl = public/language/sl/admin/settings/api.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/settings/api.json
|
||||
trans.sr = public/language/sr/admin/settings/api.json
|
||||
trans.sv = public/language/sv/admin/settings/api.json
|
||||
trans.th = public/language/th/admin/settings/api.json
|
||||
@@ -3508,7 +3440,6 @@ trans.rw = public/language/rw/admin/settings/post.json
|
||||
trans.sc = public/language/sc/admin/settings/post.json
|
||||
trans.sk = public/language/sk/admin/settings/post.json
|
||||
trans.sl = public/language/sl/admin/settings/post.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/settings/post.json
|
||||
trans.sr = public/language/sr/admin/settings/post.json
|
||||
trans.sv = public/language/sv/admin/settings/post.json
|
||||
trans.th = public/language/th/admin/settings/post.json
|
||||
@@ -3559,7 +3490,6 @@ trans.rw = public/language/rw/admin/settings/sockets.json
|
||||
trans.sc = public/language/sc/admin/settings/sockets.json
|
||||
trans.sk = public/language/sk/admin/settings/sockets.json
|
||||
trans.sl = public/language/sl/admin/settings/sockets.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/settings/sockets.json
|
||||
trans.sr = public/language/sr/admin/settings/sockets.json
|
||||
trans.sv = public/language/sv/admin/settings/sockets.json
|
||||
trans.th = public/language/th/admin/settings/sockets.json
|
||||
@@ -3610,7 +3540,6 @@ trans.rw = public/language/rw/admin/settings/uploads.json
|
||||
trans.sc = public/language/sc/admin/settings/uploads.json
|
||||
trans.sk = public/language/sk/admin/settings/uploads.json
|
||||
trans.sl = public/language/sl/admin/settings/uploads.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/settings/uploads.json
|
||||
trans.sr = public/language/sr/admin/settings/uploads.json
|
||||
trans.sv = public/language/sv/admin/settings/uploads.json
|
||||
trans.th = public/language/th/admin/settings/uploads.json
|
||||
@@ -3661,7 +3590,6 @@ trans.rw = public/language/rw/admin/settings/web-crawler.json
|
||||
trans.sc = public/language/sc/admin/settings/web-crawler.json
|
||||
trans.sk = public/language/sk/admin/settings/web-crawler.json
|
||||
trans.sl = public/language/sl/admin/settings/web-crawler.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/settings/web-crawler.json
|
||||
trans.sr = public/language/sr/admin/settings/web-crawler.json
|
||||
trans.sv = public/language/sv/admin/settings/web-crawler.json
|
||||
trans.th = public/language/th/admin/settings/web-crawler.json
|
||||
|
||||
1418
CHANGELOG.md
1418
CHANGELOG.md
File diff suppressed because it is too large
Load Diff
@@ -22,4 +22,4 @@ ENV NODE_ENV=production \
|
||||
|
||||
EXPOSE 4567
|
||||
|
||||
CMD test -n "${SETUP}" && ./nodebb setup || node ./nodebb build; node ./nodebb start
|
||||
CMD node ./nodebb build ; node ./nodebb start
|
||||
|
||||
62
Gruntfile.js
62
Gruntfile.js
@@ -20,7 +20,6 @@ const prestart = require('./src/prestart');
|
||||
prestart.loadConfig(configFile);
|
||||
|
||||
const db = require('./src/database');
|
||||
const plugins = require('./src/plugins');
|
||||
|
||||
module.exports = function (grunt) {
|
||||
const args = [];
|
||||
@@ -41,35 +40,35 @@ module.exports = function (grunt) {
|
||||
|
||||
grunt.registerTask('init', async function () {
|
||||
const done = this.async();
|
||||
let pluginList = [];
|
||||
let plugins = [];
|
||||
if (!process.argv.includes('--core')) {
|
||||
await db.init();
|
||||
pluginList = await plugins.getActive();
|
||||
addBaseThemes(pluginList);
|
||||
if (!pluginList.includes('nodebb-plugin-composer-default')) {
|
||||
pluginList.push('nodebb-plugin-composer-default');
|
||||
plugins = await db.getSortedSetRange('plugins:active', 0, -1);
|
||||
addBaseThemes(plugins);
|
||||
if (!plugins.includes('nodebb-plugin-composer-default')) {
|
||||
plugins.push('nodebb-plugin-composer-default');
|
||||
}
|
||||
if (!pluginList.includes('nodebb-theme-persona')) {
|
||||
pluginList.push('nodebb-theme-persona');
|
||||
if (!plugins.includes('nodebb-theme-persona')) {
|
||||
plugins.push('nodebb-theme-persona');
|
||||
}
|
||||
}
|
||||
|
||||
const styleUpdated_Client = pluginList.map(p => `node_modules/${p}/*.less`)
|
||||
.concat(pluginList.map(p => `node_modules/${p}/*.css`))
|
||||
.concat(pluginList.map(p => `node_modules/${p}/+(public|static|less)/**/*.less`))
|
||||
.concat(pluginList.map(p => `node_modules/${p}/+(public|static)/**/*.css`));
|
||||
const styleUpdated_Client = plugins.map(p => `node_modules/${p}/*.less`)
|
||||
.concat(plugins.map(p => `node_modules/${p}/*.css`))
|
||||
.concat(plugins.map(p => `node_modules/${p}/+(public|static|less)/**/*.less`))
|
||||
.concat(plugins.map(p => `node_modules/${p}/+(public|static)/**/*.css`));
|
||||
|
||||
const styleUpdated_Admin = pluginList.map(p => `node_modules/${p}/*.less`)
|
||||
.concat(pluginList.map(p => `node_modules/${p}/*.css`))
|
||||
.concat(pluginList.map(p => `node_modules/${p}/+(public|static|less)/**/*.less`))
|
||||
.concat(pluginList.map(p => `node_modules/${p}/+(public|static)/**/*.css`));
|
||||
const styleUpdated_Admin = plugins.map(p => `node_modules/${p}/*.less`)
|
||||
.concat(plugins.map(p => `node_modules/${p}/*.css`))
|
||||
.concat(plugins.map(p => `node_modules/${p}/+(public|static|less)/**/*.less`))
|
||||
.concat(plugins.map(p => `node_modules/${p}/+(public|static)/**/*.css`));
|
||||
|
||||
const clientUpdated = pluginList.map(p => `node_modules/${p}/+(public|static)/**/*.js`);
|
||||
const serverUpdated = pluginList.map(p => `node_modules/${p}/*.js`)
|
||||
.concat(pluginList.map(p => `node_modules/${p}/+(lib|src)/**/*.js`));
|
||||
const clientUpdated = plugins.map(p => `node_modules/${p}/+(public|static)/**/*.js`);
|
||||
const serverUpdated = plugins.map(p => `node_modules/${p}/*.js`)
|
||||
.concat(plugins.map(p => `node_modules/${p}/+(lib|src)/**/*.js`));
|
||||
|
||||
const templatesUpdated = pluginList.map(p => `node_modules/${p}/+(public|static|templates)/**/*.tpl`);
|
||||
const langUpdated = pluginList.map(p => `node_modules/${p}/+(public|static|languages)/**/*.json`);
|
||||
const templatesUpdated = plugins.map(p => `node_modules/${p}/+(public|static|templates)/**/*.tpl`);
|
||||
const langUpdated = plugins.map(p => `node_modules/${p}/+(public|static|languages)/**/*.json`);
|
||||
|
||||
grunt.config(['watch'], {
|
||||
styleUpdated_Client: {
|
||||
@@ -106,9 +105,9 @@ module.exports = function (grunt) {
|
||||
'app.js',
|
||||
'install/*.js',
|
||||
'src/**/*.js',
|
||||
'public/src/modules/translator.common.js',
|
||||
'public/src/modules/helpers.common.js',
|
||||
'public/src/utils.common.js',
|
||||
'public/src/modules/translator.js',
|
||||
'public/src/modules/helpers.js',
|
||||
'public/src/utils.js',
|
||||
serverUpdated,
|
||||
'!src/upgrades/**',
|
||||
],
|
||||
@@ -138,10 +137,9 @@ module.exports = function (grunt) {
|
||||
});
|
||||
const build = require('./src/meta/build');
|
||||
if (!grunt.option('skip')) {
|
||||
await build.build(true, { webpack: false });
|
||||
await build.build(true);
|
||||
}
|
||||
run();
|
||||
await build.webpack({ watch: true });
|
||||
done();
|
||||
});
|
||||
|
||||
@@ -185,7 +183,7 @@ module.exports = function (grunt) {
|
||||
return run();
|
||||
}
|
||||
|
||||
require('./src/meta/build').build([compiling], { webpack: false }, (err) => {
|
||||
require('./src/meta/build').build([compiling], (err) => {
|
||||
if (err) {
|
||||
winston.error(err.stack);
|
||||
}
|
||||
@@ -196,10 +194,10 @@ module.exports = function (grunt) {
|
||||
});
|
||||
};
|
||||
|
||||
function addBaseThemes(pluginList) {
|
||||
let themeId = pluginList.find(p => p.includes('nodebb-theme-'));
|
||||
function addBaseThemes(plugins) {
|
||||
let themeId = plugins.find(p => p.includes('nodebb-theme-'));
|
||||
if (!themeId) {
|
||||
return pluginList;
|
||||
return plugins;
|
||||
}
|
||||
let baseTheme;
|
||||
do {
|
||||
@@ -210,9 +208,9 @@ function addBaseThemes(pluginList) {
|
||||
}
|
||||
|
||||
if (baseTheme) {
|
||||
pluginList.push(baseTheme);
|
||||
plugins.push(baseTheme);
|
||||
themeId = baseTheme;
|
||||
}
|
||||
} while (baseTheme);
|
||||
return pluginList;
|
||||
return plugins;
|
||||
}
|
||||
|
||||
32
README.md
32
README.md
@@ -1,14 +1,22 @@
|
||||
# 
|
||||
# 
|
||||
|
||||
[](https://github.com/NodeBB/NodeBB/actions/workflows/test.yaml)
|
||||
[](https://coveralls.io/github/NodeBB/NodeBB?branch=master)
|
||||
[](https://codeclimate.com/github/NodeBB/NodeBB)
|
||||
|
||||
[**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 takes the best of the modern web: real-time streaming discussions, mobile responsiveness, and rich RESTful read/write APIs, while staying true to the original bulletin board/forum format → categorical hierarchies, local user accounts, and asynchronous messaging.
|
||||
[**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.
|
||||
|
||||
NodeBB by itself contains a "common core" of basic functionality, while additional functionality and integrations are enabled through the use of third-party plugins.
|
||||
Additional functionality is enabled through the use of third-party plugins.
|
||||
|
||||
### [Try it now](//try.nodebb.org) | [Documentation](//docs.nodebb.org)
|
||||
* [Demo](https://try.nodebb.org)
|
||||
* [Developer Community](http://community.nodebb.org)
|
||||
* [Documentation & Installation Instructions](http://docs.nodebb.org)
|
||||
* [Help translate NodeBB](https://www.transifex.com/projects/p/nodebb/)
|
||||
* [NodeBB Blog](http://blog.nodebb.org)
|
||||
* [Premium Hosting for NodeBB](http://www.nodebb.org/ "NodeBB")
|
||||
* Unofficial IRC community – channel `#nodebb` on Libera.chat
|
||||
* [Follow us on Twitter](http://www.twitter.com/NodeBB/ "NodeBB Twitter")
|
||||
* [Like us on Facebook](http://www.facebook.com/NodeBB/ "NodeBB Facebook")
|
||||
|
||||
## Screenshots
|
||||
|
||||
@@ -34,7 +42,7 @@ Our minimalist "Persona" theme gets you going right away, no coding experience r
|
||||
|
||||
* If you are a developer, feel free to check out the source and submit pull requests. We also have a wide array of [plugins](http://community.nodebb.org/category/7/nodebb-plugins) which would be a great starting point for learning the codebase.
|
||||
* If you are a designer, [NodeBB needs themes](http://community.nodebb.org/category/10/nodebb-themes)! NodeBB's theming system allows extension of the base templates as well as styling via LESS or CSS. NodeBB's base theme utilizes [Bootstrap 3](http://getbootstrap.com/) but themes can choose to use a different framework altogether.
|
||||
* If you know languages other than English you can help us translate NodeBB. We use [Transifex](https://explore.transifex.com/nodebb/nodebb/) for internationalization.
|
||||
* If you know languages other than English you can help us translate NodeBB. We use [Transifex](https://www.transifex.com/projects/p/nodebb/) for internationalization.
|
||||
* Please don't forget to **like**, **follow**, and **star our repo**! Join our growing [community](http://community.nodebb.org) to keep up to date with the latest NodeBB development.
|
||||
|
||||
## Requirements
|
||||
@@ -42,7 +50,7 @@ Our minimalist "Persona" theme gets you going right away, no coding experience r
|
||||
NodeBB requires the following software to be installed:
|
||||
|
||||
* A version of Node.js at least 12 or greater ([installation/upgrade instructions](https://github.com/nodesource/distributions))
|
||||
* MongoDB, version 3.6 or greater **or** Redis, version 2.8.9 or greater
|
||||
* MongoDB, version 2.6 or greater **or** Redis, version 2.8.9 or greater
|
||||
* If you are using [clustering](https://docs.nodebb.org/configuring/scaling/) you need Redis installed and configured.
|
||||
* nginx, version 1.3.13 or greater (**only if** intending to use nginx to proxy requests to a NodeBB)
|
||||
|
||||
@@ -70,15 +78,3 @@ Detailed upgrade instructions are listed in [Upgrading NodeBB](https://docs.node
|
||||
NodeBB is licensed under the **GNU General Public License v3 (GPL-3)** (http://www.gnu.org/copyleft/gpl.html).
|
||||
|
||||
Interested in a sublicense agreement for use of NodeBB in a non-free/restrictive environment? Contact us at sales@nodebb.org.
|
||||
|
||||
## More Information/Links
|
||||
|
||||
* [Demo](https://try.nodebb.org)
|
||||
* [Developer Community](http://community.nodebb.org)
|
||||
* [Documentation & Installation Instructions](http://docs.nodebb.org)
|
||||
* [Help translate NodeBB](https://explore.transifex.com/nodebb/nodebb/)
|
||||
* [NodeBB Blog](http://blog.nodebb.org)
|
||||
* [Premium Hosting for NodeBB](http://www.nodebb.org/ "NodeBB")
|
||||
* Unofficial IRC community – channel `#nodebb` on Libera.chat
|
||||
* [Follow us on Twitter](http://www.twitter.com/NodeBB/ "NodeBB Twitter")
|
||||
* [Like us on Facebook](http://www.facebook.com/NodeBB/ "NodeBB Facebook")
|
||||
|
||||
4
app.js
4
app.js
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
NodeBB - A better forum platform for the modern web
|
||||
https://github.com/NodeBB/NodeBB/
|
||||
Copyright (C) 2013-2021 NodeBB Inc.
|
||||
Copyright (C) 2013-2017 NodeBB Inc.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -71,7 +71,7 @@ if (nconf.get('setup') || nconf.get('install')) {
|
||||
});
|
||||
} else if (nconf.get('activate')) {
|
||||
require('./src/cli/manage').activate(nconf.get('activate'));
|
||||
} else if (nconf.get('plugins') && typeof nconf.get('plugins') !== 'object') {
|
||||
} else if (nconf.get('plugins')) {
|
||||
require('./src/cli/manage').listPlugins();
|
||||
} else if (nconf.get('build')) {
|
||||
require('./src/cli/manage').build(nconf.get('build'));
|
||||
|
||||
@@ -45,7 +45,6 @@
|
||||
"allowMultipleBadges": 0,
|
||||
"maximumFileSize": 2048,
|
||||
"stripEXIFData": 1,
|
||||
"orphanExpiryDays": 0,
|
||||
"resizeImageWidthThreshold": 2000,
|
||||
"resizeImageWidth": 760,
|
||||
"rejectImageWidth": 5000,
|
||||
@@ -78,13 +77,9 @@
|
||||
"reputation:disabled": 0,
|
||||
"downvote:disabled": 0,
|
||||
"disableSignatures": 0,
|
||||
"upvotesPerDay": 20,
|
||||
"upvotesPerUserPerDay": 6,
|
||||
"downvotesPerDay": 10,
|
||||
"downvotesPerUserPerDay": 3,
|
||||
"min:rep:chat": 0,
|
||||
"min:rep:downvote": 0,
|
||||
"min:rep:upvote": 0,
|
||||
"min:rep:flag": 0,
|
||||
"min:rep:profile-picture": 0,
|
||||
"min:rep:cover-picture": 0,
|
||||
@@ -92,7 +87,6 @@
|
||||
"min:rep:aboutme": 0,
|
||||
"min:rep:signature": 0,
|
||||
"flags:limitPerTarget": 0,
|
||||
"flags:autoFlagOnDownvoteThreshold": 0,
|
||||
"notificationType_upvote": "notification",
|
||||
"notificationType_new-topic": "notification",
|
||||
"notificationType_new-reply": "notification",
|
||||
@@ -147,15 +141,10 @@
|
||||
"sendValidationEmail": 1,
|
||||
"includeUnverifiedEmails": 0,
|
||||
"emailPrompt": 1,
|
||||
"sendEmailToBanned": 0,
|
||||
"requireEmailAddress": 0,
|
||||
"inviteExpiration": 7,
|
||||
"dailyDigestFreq": "off",
|
||||
"digestHour": 17,
|
||||
"passwordExpiryDays": 0,
|
||||
"cross-origin-embedder-policy": 0,
|
||||
"cross-origin-opener-policy": "same-origin",
|
||||
"cross-origin-resource-policy": "same-origin",
|
||||
"hsts-maxage": 31536000,
|
||||
"hsts-subdomains": 0,
|
||||
"hsts-preload": 0,
|
||||
|
||||
@@ -64,6 +64,9 @@
|
||||
"iconClass": "fa-cogs",
|
||||
"textClass": "visible-xs-inline",
|
||||
"text": "[[global:header.admin]]",
|
||||
"groups": ["administrators"]
|
||||
"groups": ["administrators"],
|
||||
"properties": {
|
||||
"targetBlank": false
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -2,7 +2,7 @@
|
||||
"name": "nodebb",
|
||||
"license": "GPL-3.0",
|
||||
"description": "NodeBB Forum",
|
||||
"version": "2.4.0",
|
||||
"version": "1.18.6",
|
||||
"homepage": "http://www.nodebb.org",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -28,141 +28,136 @@
|
||||
]
|
||||
},
|
||||
"dependencies": {
|
||||
"@adactive/bootstrap-tagsinput": "0.8.2",
|
||||
"@isaacs/ttlcache": "^1.2.0",
|
||||
"ace-builds": "1.8.1",
|
||||
"archiver": "5.3.1",
|
||||
"async": "3.2.4",
|
||||
"autoprefixer": "10.4.8",
|
||||
"@adactive/bootstrap-tagsinput": "^0.8.2",
|
||||
"ace-builds": "^1.4.12",
|
||||
"archiver": "^5.2.0",
|
||||
"async": "^3.2.0",
|
||||
"autoprefixer": "10.4.0",
|
||||
"bcryptjs": "2.4.3",
|
||||
"benchpressjs": "2.4.3",
|
||||
"body-parser": "1.20.0",
|
||||
"bootbox": "5.5.3",
|
||||
"bootstrap": "3.4.1",
|
||||
"chalk": "4.1.2",
|
||||
"chart.js": "2.9.4",
|
||||
"cli-graph": "3.2.2",
|
||||
"clipboard": "2.0.11",
|
||||
"body-parser": "^1.19.0",
|
||||
"bootbox": "5.5.2",
|
||||
"bootstrap": "^3.4.1",
|
||||
"chart.js": "^2.9.4",
|
||||
"cli-graph": "^3.2.2",
|
||||
"clipboard": "^2.0.6",
|
||||
"colors": "1.4.0",
|
||||
"commander": "9.4.0",
|
||||
"compare-versions": "4.1.3",
|
||||
"compression": "1.7.4",
|
||||
"connect-flash": "0.1.1",
|
||||
"commander": "^7.1.0",
|
||||
"compare-versions": "3.6.0",
|
||||
"compression": "^1.7.4",
|
||||
"connect-flash": "^0.1.1",
|
||||
"connect-mongo": "4.6.0",
|
||||
"connect-multiparty": "2.2.0",
|
||||
"connect-pg-simple": "7.0.0",
|
||||
"connect-redis": "6.1.3",
|
||||
"cookie-parser": "1.4.6",
|
||||
"cron": "2.1.0",
|
||||
"cropperjs": "1.5.12",
|
||||
"csurf": "1.11.0",
|
||||
"daemon": "1.1.0",
|
||||
"diff": "5.1.0",
|
||||
"express": "4.18.1",
|
||||
"express-session": "1.17.3",
|
||||
"express-useragent": "1.0.15",
|
||||
"file-loader": "6.2.0",
|
||||
"fs-extra": "10.1.0",
|
||||
"graceful-fs": "4.2.10",
|
||||
"helmet": "5.1.1",
|
||||
"html-to-text": "8.2.1",
|
||||
"ipaddr.js": "2.0.1",
|
||||
"connect-multiparty": "^2.2.0",
|
||||
"connect-pg-simple": "^7.0.0",
|
||||
"connect-redis": "6.0.0",
|
||||
"cookie-parser": "^1.4.5",
|
||||
"cron": "^1.8.2",
|
||||
"cropperjs": "^1.5.11",
|
||||
"csurf": "^1.11.0",
|
||||
"daemon": "^1.1.0",
|
||||
"diff": "^5.0.0",
|
||||
"express": "^4.17.1",
|
||||
"express-session": "^1.17.1",
|
||||
"express-useragent": "^1.0.15",
|
||||
"graceful-fs": "^4.2.6",
|
||||
"helmet": "^4.4.1",
|
||||
"html-to-text": "8.1.0",
|
||||
"ipaddr.js": "^2.0.0",
|
||||
"jquery": "3.6.0",
|
||||
"jquery-deserialize": "2.0.0",
|
||||
"jquery-form": "4.3.0",
|
||||
"jquery-serializeobject": "1.0.0",
|
||||
"jquery-ui": "1.13.2",
|
||||
"jquery-ui": "1.13.0",
|
||||
"jsesc": "3.0.2",
|
||||
"json2csv": "5.0.7",
|
||||
"jsonwebtoken": "8.5.1",
|
||||
"less": "4.1.3",
|
||||
"lodash": "4.17.21",
|
||||
"logrotate-stream": "0.2.8",
|
||||
"lru-cache": "7.13.1",
|
||||
"material-design-lite": "1.3.0",
|
||||
"mime": "3.0.0",
|
||||
"mkdirp": "1.0.4",
|
||||
"mongodb": "4.8.1",
|
||||
"morgan": "1.10.0",
|
||||
"mousetrap": "1.6.5",
|
||||
"multiparty": "4.2.3",
|
||||
"json2csv": "5.0.6",
|
||||
"jsonwebtoken": "^8.5.1",
|
||||
"less": "^3.11.1",
|
||||
"lodash": "^4.17.21",
|
||||
"logrotate-stream": "^0.2.7",
|
||||
"lru-cache": "6.0.0",
|
||||
"material-design-lite": "^1.3.0",
|
||||
"mime": "^2.5.2",
|
||||
"mkdirp": "^1.0.4",
|
||||
"mongodb": "4.1.4",
|
||||
"morgan": "^1.10.0",
|
||||
"mousetrap": "^1.6.5",
|
||||
"multiparty": "4.2.2",
|
||||
"@nodebb/bootswatch": "3.4.2",
|
||||
"nconf": "0.12.0",
|
||||
"nodebb-plugin-2factor": "5.0.2",
|
||||
"nodebb-plugin-composer-default": "8.0.0",
|
||||
"nodebb-plugin-dbsearch": "5.1.5",
|
||||
"nodebb-plugin-emoji": "4.0.4",
|
||||
"nodebb-plugin-emoji-android": "3.0.0",
|
||||
"nodebb-plugin-markdown": "10.1.0",
|
||||
"nodebb-plugin-mentions": "3.0.11",
|
||||
"nodebb-plugin-spam-be-gone": "1.0.0",
|
||||
"nodebb-rewards-essentials": "0.2.1",
|
||||
"nodebb-theme-lavender": "6.0.0",
|
||||
"nodebb-theme-persona": "12.1.0",
|
||||
"nodebb-theme-slick": "2.0.2",
|
||||
"nodebb-theme-vanilla": "12.1.18",
|
||||
"nodebb-widget-essentials": "6.0.0",
|
||||
"nodemailer": "6.7.7",
|
||||
"nconf": "^0.11.2",
|
||||
"nodebb-plugin-composer-default": "7.0.14",
|
||||
"nodebb-plugin-dbsearch": "5.1.0",
|
||||
"nodebb-plugin-emoji": "^3.5.0",
|
||||
"nodebb-plugin-emoji-android": "2.0.5",
|
||||
"nodebb-plugin-markdown": "8.14.4",
|
||||
"nodebb-plugin-mentions": "3.0.3",
|
||||
"nodebb-plugin-spam-be-gone": "0.7.11",
|
||||
"nodebb-rewards-essentials": "0.2.0",
|
||||
"nodebb-theme-lavender": "5.3.1",
|
||||
"nodebb-theme-persona": "11.2.21",
|
||||
"nodebb-theme-slick": "1.4.16",
|
||||
"nodebb-theme-vanilla": "12.1.9",
|
||||
"nodebb-widget-essentials": "5.0.4",
|
||||
"nodemailer": "^6.5.0",
|
||||
"nprogress": "0.2.0",
|
||||
"passport": "0.5.2",
|
||||
"passport-http-bearer": "1.0.1",
|
||||
"passport": "^0.5.0",
|
||||
"passport-http-bearer": "^1.0.1",
|
||||
"passport-local": "1.0.0",
|
||||
"pg": "8.7.3",
|
||||
"pg-cursor": "2.7.3",
|
||||
"postcss": "8.4.14",
|
||||
"pg": "^8.7.1",
|
||||
"pg-cursor": "^2.7.1",
|
||||
"postcss": "8.3.11",
|
||||
"postcss-clean": "1.2.0",
|
||||
"prompt": "1.3.0",
|
||||
"ioredis": "5.2.2",
|
||||
"prompt": "^1.1.0",
|
||||
"ioredis": "4.28.0",
|
||||
"request": "2.88.2",
|
||||
"request-promise-native": "1.0.9",
|
||||
"request-promise-native": "^1.0.9",
|
||||
"requirejs": "2.3.6",
|
||||
"rimraf": "3.0.2",
|
||||
"rss": "1.2.2",
|
||||
"sanitize-html": "2.7.1",
|
||||
"semver": "7.3.7",
|
||||
"serve-favicon": "2.5.0",
|
||||
"sharp": "0.30.7",
|
||||
"sitemap": "7.1.1",
|
||||
"rss": "^1.2.2",
|
||||
"sanitize-html": "^2.3.2",
|
||||
"semver": "^7.3.4",
|
||||
"serve-favicon": "^2.5.0",
|
||||
"sharp": "0.29.2",
|
||||
"sitemap": "^7.0.0",
|
||||
"slideout": "1.0.1",
|
||||
"socket.io": "4.5.1",
|
||||
"socket.io-client": "4.5.1",
|
||||
"@socket.io/redis-adapter": "7.2.0",
|
||||
"sortablejs": "1.15.0",
|
||||
"spdx-license-list": "6.6.0",
|
||||
"socket.io": "4.3.2",
|
||||
"socket.io-adapter-cluster": "^1.0.1",
|
||||
"socket.io-client": "4.3.2",
|
||||
"@socket.io/redis-adapter": "7.0.0",
|
||||
"sortablejs": "1.14.0",
|
||||
"spdx-license-list": "^6.4.0",
|
||||
"spider-detector": "2.0.0",
|
||||
"textcomplete": "0.18.2",
|
||||
"textcomplete.contenteditable": "0.1.1",
|
||||
"timeago": "1.6.7",
|
||||
"textcomplete": "^0.18.0",
|
||||
"textcomplete.contenteditable": "^0.1.1",
|
||||
"timeago": "^1.6.7",
|
||||
"tinycon": "0.6.8",
|
||||
"toobusy-js": "0.5.1",
|
||||
"uglify-es": "3.3.9",
|
||||
"toobusy-js": "^0.5.1",
|
||||
"uglify-es": "^3.3.9",
|
||||
"validator": "13.7.0",
|
||||
"visibilityjs": "2.0.2",
|
||||
"webpack": "5.74.0",
|
||||
"webpack-merge": "5.8.0",
|
||||
"winston": "3.8.1",
|
||||
"xml": "1.0.1",
|
||||
"xregexp": "5.1.1",
|
||||
"yargs": "17.5.1",
|
||||
"zxcvbn": "4.4.2"
|
||||
"winston": "3.3.3",
|
||||
"xml": "^1.0.1",
|
||||
"xregexp": "^5.0.1",
|
||||
"yargs": "17.2.1",
|
||||
"zxcvbn": "^4.4.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@apidevtools/swagger-parser": "10.0.3",
|
||||
"@commitlint/cli": "17.0.3",
|
||||
"@commitlint/config-angular": "17.0.3",
|
||||
"@commitlint/cli": "14.1.0",
|
||||
"@commitlint/config-angular": "14.1.0",
|
||||
"coveralls": "3.1.1",
|
||||
"eslint": "8.21.0",
|
||||
"eslint-config-nodebb": "0.1.1",
|
||||
"eslint-plugin-import": "2.26.0",
|
||||
"grunt": "1.5.3",
|
||||
"eslint": "7.32.0",
|
||||
"eslint-config-nodebb": "0.0.3",
|
||||
"eslint-plugin-import": "2.25.3",
|
||||
"grunt": "1.4.1",
|
||||
"grunt-contrib-watch": "1.1.0",
|
||||
"husky": "8.0.1",
|
||||
"jsdom": "20.0.0",
|
||||
"lint-staged": "13.0.3",
|
||||
"mocha": "10.0.0",
|
||||
"husky": "7.0.4",
|
||||
"jsdom": "18.0.1",
|
||||
"lint-staged": "11.2.6",
|
||||
"mocha": "9.1.3",
|
||||
"mocha-lcov-reporter": "1.3.0",
|
||||
"mockdate": "3.0.5",
|
||||
"nyc": "15.1.0",
|
||||
"smtp-server": "3.11.0"
|
||||
"smtp-server": "3.9.0"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/NodeBB/NodeBB/issues"
|
||||
@@ -187,4 +182,4 @@
|
||||
"url": "https://github.com/barisusakli"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
104
install/web.js
104
install/web.js
@@ -8,7 +8,7 @@ const path = require('path');
|
||||
const childProcess = require('child_process');
|
||||
const less = require('less');
|
||||
|
||||
const webpack = require('webpack');
|
||||
const uglify = require('uglify-es');
|
||||
const nconf = require('nconf');
|
||||
|
||||
const Benchpress = require('benchpressjs');
|
||||
@@ -46,6 +46,16 @@ winston.configure({
|
||||
});
|
||||
|
||||
const web = module.exports;
|
||||
|
||||
const scripts = [
|
||||
'node_modules/jquery/dist/jquery.js',
|
||||
'node_modules/xregexp/xregexp-all.js',
|
||||
'public/src/modules/slugify.js',
|
||||
'public/src/utils.js',
|
||||
'public/src/installer/install.js',
|
||||
'node_modules/zxcvbn/dist/zxcvbn.js',
|
||||
];
|
||||
|
||||
let installing = false;
|
||||
let success = false;
|
||||
let error = false;
|
||||
@@ -58,8 +68,6 @@ web.install = async function (port) {
|
||||
winston.info(`Launching web installer on port ${port}`);
|
||||
|
||||
app.use(express.static('public', {}));
|
||||
app.use('/assets', express.static(path.join(__dirname, '../build/public'), {}));
|
||||
|
||||
app.engine('tpl', (filepath, options, callback) => {
|
||||
filepath = filepath.replace(/\.tpl$/, '.js');
|
||||
|
||||
@@ -74,7 +82,7 @@ web.install = async function (port) {
|
||||
await Promise.all([
|
||||
compileTemplate(),
|
||||
compileLess(),
|
||||
runWebpack(),
|
||||
compileJS(),
|
||||
copyCSS(),
|
||||
loadDefaults(),
|
||||
]);
|
||||
@@ -85,13 +93,6 @@ web.install = async function (port) {
|
||||
}
|
||||
};
|
||||
|
||||
async function runWebpack() {
|
||||
const util = require('util');
|
||||
const webpackCfg = require('../webpack.installer');
|
||||
const compiler = webpack(webpackCfg);
|
||||
const webpackRun = util.promisify(compiler.run).bind(compiler);
|
||||
await webpackRun();
|
||||
}
|
||||
|
||||
function launchExpress(port) {
|
||||
server = app.listen(port, () => {
|
||||
@@ -112,7 +113,7 @@ function ping(req, res) {
|
||||
}
|
||||
|
||||
function welcome(req, res) {
|
||||
const dbs = ['mongo', 'redis', 'postgres'];
|
||||
const dbs = ['redis', 'mongo', 'postgres'];
|
||||
const databases = dbs.map((databaseName) => {
|
||||
const questions = require(`../src/database/${databaseName}`).questions.filter(question => question && !question.hideOnWebInstall);
|
||||
|
||||
@@ -145,27 +146,29 @@ function install(req, res) {
|
||||
}
|
||||
req.setTimeout(0);
|
||||
installing = true;
|
||||
const setupEnvVars = nconf.get();
|
||||
for (const [key, value] of Object.entries(req.body)) {
|
||||
if (!process.env.hasOwnProperty(key)) {
|
||||
setupEnvVars[key.replace(':', '__')] = value;
|
||||
}
|
||||
}
|
||||
|
||||
const database = nconf.get('database') || req.body.database || 'mongo';
|
||||
const setupEnvVars = {
|
||||
...process.env,
|
||||
NODEBB_URL: nconf.get('url') || req.body.url || (`${req.protocol}://${req.get('host')}`),
|
||||
NODEBB_PORT: nconf.get('port') || 4567,
|
||||
NODEBB_ADMIN_USERNAME: nconf.get('admin:username') || req.body['admin:username'],
|
||||
NODEBB_ADMIN_PASSWORD: nconf.get('admin:password') || req.body['admin:password'],
|
||||
NODEBB_ADMIN_EMAIL: nconf.get('admin:email') || req.body['admin:email'],
|
||||
NODEBB_DB: database,
|
||||
NODEBB_DB_HOST: nconf.get(`${database}:host`) || req.body[`${database}:host`],
|
||||
NODEBB_DB_PORT: nconf.get(`${database}:port`) || req.body[`${database}:port`],
|
||||
NODEBB_DB_USER: nconf.get(`${database}:username`) || req.body[`${database}:username`],
|
||||
NODEBB_DB_PASSWORD: nconf.get(`${database}:password`) || req.body[`${database}:password`],
|
||||
NODEBB_DB_NAME: nconf.get(`${database}:database`) || req.body[`${database}:database`],
|
||||
NODEBB_DB_SSL: nconf.get(`${database}:ssl`) || req.body[`${database}:ssl`],
|
||||
defaultPlugins: JSON.stringify(nconf.get('defaultplugins') || nconf.get('defaultPlugins') || []),
|
||||
// Flatten any objects in setupEnvVars
|
||||
const pushToRoot = function (parentKey, key) {
|
||||
setupEnvVars[`${parentKey}__${key}`] = setupEnvVars[parentKey][key];
|
||||
};
|
||||
for (const [parentKey, value] of Object.entries(setupEnvVars)) {
|
||||
if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
|
||||
Object.keys(value).forEach(key => pushToRoot(parentKey, key));
|
||||
delete setupEnvVars[parentKey];
|
||||
} else if (Array.isArray(value)) {
|
||||
setupEnvVars[parentKey] = JSON.stringify(value);
|
||||
}
|
||||
}
|
||||
|
||||
winston.info('Starting setup process');
|
||||
launchUrl = setupEnvVars.NODEBB_URL;
|
||||
winston.info(setupEnvVars);
|
||||
launchUrl = setupEnvVars.url;
|
||||
|
||||
const child = require('child_process').fork('app', ['--setup'], {
|
||||
env: setupEnvVars,
|
||||
@@ -206,20 +209,15 @@ async function launch(req, res) {
|
||||
}
|
||||
|
||||
const filesToDelete = [
|
||||
path.join(__dirname, '../public', 'installer.css'),
|
||||
path.join(__dirname, '../public', 'bootstrap.min.css'),
|
||||
path.join(__dirname, '../build/public', 'installer.min.js'),
|
||||
'installer.css',
|
||||
'installer.min.js',
|
||||
'bootstrap.min.css',
|
||||
];
|
||||
try {
|
||||
await Promise.all(
|
||||
filesToDelete.map(
|
||||
filename => fs.promises.unlink(filename)
|
||||
)
|
||||
);
|
||||
} catch (err) {
|
||||
console.log(err.stack);
|
||||
}
|
||||
|
||||
await Promise.all(
|
||||
filesToDelete.map(
|
||||
filename => fs.promises.unlink(path.join(__dirname, '../public', filename))
|
||||
)
|
||||
);
|
||||
child.unref();
|
||||
process.exit(0);
|
||||
} catch (err) {
|
||||
@@ -259,6 +257,23 @@ async function compileLess() {
|
||||
}
|
||||
}
|
||||
|
||||
async function compileJS() {
|
||||
let code = '';
|
||||
|
||||
for (const srcPath of scripts) {
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
const buffer = await fs.promises.readFile(path.join(__dirname, '..', srcPath));
|
||||
code += buffer.toString();
|
||||
}
|
||||
const minified = uglify.minify(code, {
|
||||
compress: false,
|
||||
});
|
||||
if (!minified.code) {
|
||||
throw new Error('[[error:failed-to-minify]]');
|
||||
}
|
||||
await fs.promises.writeFile(path.join(__dirname, '../public/installer.min.js'), minified.code);
|
||||
}
|
||||
|
||||
async function copyCSS() {
|
||||
const src = await fs.promises.readFile(
|
||||
path.join(__dirname, '../node_modules/bootstrap/dist/css/bootstrap.min.css'), 'utf8'
|
||||
@@ -269,15 +284,12 @@ async function copyCSS() {
|
||||
async function loadDefaults() {
|
||||
const setupDefaultsPath = path.join(__dirname, '../setup.json');
|
||||
try {
|
||||
// eslint-disable-next-line no-bitwise
|
||||
await fs.promises.access(setupDefaultsPath, fs.constants.F_OK | fs.constants.R_OK);
|
||||
await fs.promises.access(setupDefaultsPath, fs.constants.F_OK + fs.constants.R_OK);
|
||||
} catch (err) {
|
||||
// setup.json not found or inaccessible, proceed with no defaults
|
||||
if (err.code !== 'ENOENT') {
|
||||
throw err;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
winston.info('[installer] Found setup.json, populating default values');
|
||||
nconf.file({
|
||||
|
||||
25
loader.js
25
loader.js
@@ -48,7 +48,7 @@ Loader.init = function () {
|
||||
|
||||
Loader.displayStartupMessages = function () {
|
||||
console.log('');
|
||||
console.log(`NodeBB v${pkg.version} Copyright (C) 2013-${(new Date()).getFullYear()} NodeBB Inc.`);
|
||||
console.log(`NodeBB v${pkg.version} Copyright (C) 2013-2014 NodeBB Inc.`);
|
||||
console.log('This program comes with ABSOLUTELY NO WARRANTY.');
|
||||
console.log('This is free software, and you are welcome to redistribute it under certain conditions.');
|
||||
console.log('For the full license, please visit: http://www.gnu.org/copyleft/gpl.html');
|
||||
@@ -208,25 +208,12 @@ fs.open(pathToConfig, 'r', (err) => {
|
||||
|
||||
if (nconf.get('daemon') !== 'false' && nconf.get('daemon') !== false) {
|
||||
if (file.existsSync(pidFilePath)) {
|
||||
let pid = 0;
|
||||
try {
|
||||
pid = fs.readFileSync(pidFilePath, { encoding: 'utf-8' });
|
||||
if (pid) {
|
||||
process.kill(pid, 0);
|
||||
console.info(`Process "${pid}" from pidfile already running, exiting`);
|
||||
process.exit();
|
||||
} else {
|
||||
console.info(`Invalid pid "${pid}" from pidfile, deleting pidfile`);
|
||||
fs.unlinkSync(pidFilePath);
|
||||
}
|
||||
} catch (err) {
|
||||
if (err.code === 'ESRCH') {
|
||||
console.info(`Process "${pid}" from pidfile not found, deleting pidfile`);
|
||||
fs.unlinkSync(pidFilePath);
|
||||
} else {
|
||||
console.error(err.stack);
|
||||
throw err;
|
||||
}
|
||||
const pid = fs.readFileSync(pidFilePath, { encoding: 'utf-8' });
|
||||
process.kill(pid, 0);
|
||||
process.exit();
|
||||
} catch (e) {
|
||||
fs.unlinkSync(pidFilePath);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
84
public/.jshintrc
Normal file
84
public/.jshintrc
Normal file
@@ -0,0 +1,84 @@
|
||||
{
|
||||
"maxerr" : 50, // {int} Maximum error before stopping
|
||||
|
||||
"esversion": 9,
|
||||
|
||||
// Enforcing
|
||||
"bitwise" : true, // true: Prohibit bitwise operators (&, |, ^, etc.)
|
||||
"camelcase" : false, // true: Identifiers must be in camelCase
|
||||
"curly" : true, // true: Require {} for every new block or scope
|
||||
"eqeqeq" : true, // true: Require triple equals (===) for comparison
|
||||
"forin" : true, // true: Require filtering for..in loops with obj.hasOwnProperty()
|
||||
"immed" : false, // true: Require immediate invocations to be wrapped in parens e.g. `(function () { } ());`
|
||||
"indent" : 4, // {int} Number of spaces to use for indentation
|
||||
"latedef" : false, // true: Require variables/functions to be defined before being used
|
||||
"newcap" : false, // true: Require capitalization of all constructor functions e.g. `new F()`
|
||||
"noarg" : true, // true: Prohibit use of `arguments.caller` and `arguments.callee`
|
||||
"noempty" : true, // true: Prohibit use of empty blocks
|
||||
"nonew" : false, // true: Prohibit use of constructors for side-effects (without assignment)
|
||||
"plusplus" : false, // true: Prohibit use of `++` & `--`
|
||||
"quotmark" : false, // Quotation mark consistency:
|
||||
// false : do nothing (default)
|
||||
// true : ensure whatever is used is consistent
|
||||
// "single" : require single quotes
|
||||
// "double" : require double quotes
|
||||
"undef" : true, // true: Require all non-global variables to be declared (prevents global leaks)
|
||||
"unused" : true, // true: Require all defined variables be used
|
||||
"strict" : true, // true: Requires all functions run in ES5 Strict Mode
|
||||
"trailing" : false, // true: Prohibit trailing whitespaces
|
||||
"maxparams" : false, // {int} Max number of formal params allowed per function
|
||||
"maxdepth" : false, // {int} Max depth of nested blocks (within functions)
|
||||
"maxstatements" : false, // {int} Max number statements per function
|
||||
"maxcomplexity" : false, // {int} Max cyclomatic complexity per function
|
||||
"maxlen" : false, // {int} Max number of characters per line
|
||||
|
||||
// Relaxing
|
||||
"asi" : false, // true: Tolerate Automatic Semicolon Insertion (no semicolons)
|
||||
"boss" : false, // true: Tolerate assignments where comparisons would be expected
|
||||
"debug" : false, // true: Allow debugger statements e.g. browser breakpoints.
|
||||
"eqnull" : false, // true: Tolerate use of `== null`
|
||||
"es5" : false, // true: Allow ES5 syntax (ex: getters and setters)
|
||||
"esnext" : false, // true: Allow ES.next (ES6) syntax (ex: `const`)
|
||||
"moz" : false, // true: Allow Mozilla specific syntax (extends and overrides esnext features)
|
||||
// (ex: `for each`, multiple try/catch, function expression…)
|
||||
"evil" : false, // true: Tolerate use of `eval` and `new Function()`
|
||||
"expr" : false, // true: Tolerate `ExpressionStatement` as Programs
|
||||
"funcscope" : false, // true: Tolerate defining variables inside control statements"
|
||||
"globalstrict" : true, // true: Allow global "use strict" (also enables 'strict')
|
||||
"iterator" : false, // true: Tolerate using the `__iterator__` property
|
||||
"lastsemic" : false, // true: Tolerate omitting a semicolon for the last statement of a 1-line block
|
||||
"laxbreak" : false, // true: Tolerate possibly unsafe line breakings
|
||||
"laxcomma" : false, // true: Tolerate comma-first style coding
|
||||
"loopfunc" : false, // true: Tolerate functions being defined in loops
|
||||
"multistr" : false, // true: Tolerate multi-line strings
|
||||
"proto" : false, // true: Tolerate using the `__proto__` property
|
||||
"scripturl" : false, // true: Tolerate script-targeted URLs
|
||||
"smarttabs" : false, // true: Tolerate mixed tabs/spaces when used for alignment
|
||||
"shadow" : false, // true: Allows re-define variables later in code e.g. `var x=1; x=2;`
|
||||
"sub" : false, // true: Tolerate using `[]` notation when it can still be expressed in dot notation
|
||||
"supernew" : false, // true: Tolerate `new function () { ... };` and `new Object;`
|
||||
"validthis" : false, // true: Tolerate using this in a non-constructor function
|
||||
|
||||
"globals": {
|
||||
"app": true,
|
||||
"io": true,
|
||||
"socket": true,
|
||||
"ajaxify": true,
|
||||
"config": true,
|
||||
"utils": true,
|
||||
"overrides": true,
|
||||
"componentHandler": true,
|
||||
"templates": true,
|
||||
"Visibility": true,
|
||||
"Tinycon": true,
|
||||
"require": true,
|
||||
"define": true,
|
||||
"ace": true,
|
||||
"Sortable": true,
|
||||
"Slideout": true,
|
||||
"NProgress": true
|
||||
},
|
||||
|
||||
"jquery": true,
|
||||
"browser": true
|
||||
}
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 215 KiB |
@@ -3,7 +3,7 @@
|
||||
The files here are read-only and overwritten daily (if there are changes) by the
|
||||
helper bot [Misty](https://github.com/nodebb-misty).
|
||||
|
||||
Our localisation efforts are handled via [our Transifex Project](https://explore.transifex.com/nodebb/nodebb/),
|
||||
Our localisation efforts are handled via [our Transifex Project](https://www.transifex.com/nodebb/nodebb/),
|
||||
and any pull requests made to this directory will be automatically closed because
|
||||
localisations can go out-of-sync when edited directly.
|
||||
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
# The files here are not meant to be edited directly
|
||||
|
||||
Please see the → [Internalization README](../README.md).
|
||||
@@ -3,9 +3,5 @@
|
||||
"alert.confirm-restart": "هل تريد بالتأكيد إعادة تشغيل NodeBB؟",
|
||||
|
||||
"acp-title": "لوحة تحكم إدارة NodeBB | %1",
|
||||
"settings-header-contents": "محتويات",
|
||||
"changes-saved": "Changes Saved",
|
||||
"changes-saved-message": "Your changes to the NodeBB configuration have been saved.",
|
||||
"changes-not-saved": "Changes Not Saved",
|
||||
"changes-not-saved-message": "NodeBB encountered a problem saving your changes. (%1)"
|
||||
"settings-header-contents": "محتويات"
|
||||
}
|
||||
@@ -1,10 +1,8 @@
|
||||
{
|
||||
"administrators": "Administrators",
|
||||
"global-moderators": "Global Moderators",
|
||||
"moderators": "Moderators",
|
||||
"no-global-moderators": "No Global Moderators",
|
||||
"no-sub-categories": "No subcategories",
|
||||
"subcategories": "%1 subcategories",
|
||||
"moderators-of-category": "%1 Moderators",
|
||||
"no-moderators": "No Moderators",
|
||||
"add-administrator": "Add Administrator",
|
||||
"add-global-moderator": "Add Global Moderator",
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
"upload-files": "Upload Files",
|
||||
"signature": "Signature",
|
||||
"ban": "Ban",
|
||||
"mute": "Mute",
|
||||
"invite": "Invite",
|
||||
"search-content": "Search Content",
|
||||
"search-users": "Search Users",
|
||||
|
||||
@@ -18,8 +18,7 @@
|
||||
"download-csv": "Download CSV",
|
||||
"manage-groups": "Manage Groups",
|
||||
"add-group": "Add Group",
|
||||
"create": "Create User",
|
||||
"invite": "Invite by Email",
|
||||
"invite": "Invite",
|
||||
"new": "New User",
|
||||
"filter-by": "Filter by",
|
||||
"pills.unvalidated": "Not Validated",
|
||||
@@ -63,7 +62,7 @@
|
||||
"create.password": "Password",
|
||||
"create.password-confirm": "Confirm Password",
|
||||
|
||||
"temp-ban.length": "Length",
|
||||
"temp-ban.length": "Ban Length",
|
||||
"temp-ban.reason": "Reason <span class=\"text-muted\">(Optional)</span>",
|
||||
"temp-ban.hours": "Hours",
|
||||
"temp-ban.days": "Days",
|
||||
@@ -91,7 +90,6 @@
|
||||
"alerts.validate-email-success": "Emails validated",
|
||||
"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.password-reset-email-sent": "Password reset email sent.",
|
||||
"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-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>",
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
"logout": "Log out",
|
||||
"view-forum": "View Forum",
|
||||
|
||||
"search.placeholder": "Search settings",
|
||||
"search.placeholder": "Press "/" to search for settings",
|
||||
"search.no-results": "No results...",
|
||||
"search.search-forum": "Search the forum for <strong></strong>",
|
||||
"search.keep-typing": "Type more to see results...",
|
||||
|
||||
@@ -15,10 +15,6 @@
|
||||
"headers.acac": "Access-Control-Allow-Credentials",
|
||||
"headers.acam": "Access-Control-Allow-Methods",
|
||||
"headers.acah": "Access-Control-Allow-Headers",
|
||||
"headers.coep": "Cross-Origin-Embedder-Policy",
|
||||
"headers.coep-help": "When enabled (default), will set the header to <code>require-corp</code>",
|
||||
"headers.coop": "Cross-Origin-Opener-Policy",
|
||||
"headers.corp": "Cross-Origin-Resource-Policy",
|
||||
"hsts": "Strict Transport Security",
|
||||
"hsts.enabled": "Enabled HSTS (recommended)",
|
||||
"hsts.maxAge": "HSTS Max Age",
|
||||
|
||||
@@ -10,10 +10,9 @@
|
||||
"smtp-transport-help": "You can select from a list of well-known services or enter a custom one.",
|
||||
"smtp-transport.service": "Select a service",
|
||||
"smtp-transport.service-custom": "Custom Service",
|
||||
"smtp-transport.service-help": "Select a service name above in order to use the known information about it. Alternatively, select "Custom Service" and enter the details below.",
|
||||
"smtp-transport.gmail-warning1": "If you are using GMail as your email provider, you will have to generate an "App Password" in order for NodeBB to authenticate successfully. You can generate one at the <a href=\"https://myaccount.google.com/apppasswords\">App Passwords <i class=\"fa fa-external-link\"></i></a> page.",
|
||||
"smtp-transport.gmail-warning2": "For more information about this workaround, <a href=\"https://nodemailer.com/usage/using-gmail/\">please consult this NodeMailer article <i class=\"fa fa-external-link\"></i></a> on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. <a href=\"../extend/plugins\">Browse available plugins here</a>.",
|
||||
"smtp-transport.auto-enable-toast": "It looks like you're configuring an SMTP transport. We enabled the \"SMTP Transport\" option for you.",
|
||||
"smtp-transport.service-help": "Select a service name above in order to use the known information about it. Alternatively, select 'Custom Service' and enter the details below.",
|
||||
"smtp-transport.gmail-warning1": "There have been reports of the Gmail service not working on accounts with heightened security. In those scenarios, you will have to <a href=\"https://www.google.com/settings/security/lesssecureapps\">configure your GMail account to allow less secure apps</a>.",
|
||||
"smtp-transport.gmail-warning2": "For more information about this workaround, <a href=\"https://nodemailer.com/usage/using-gmail/\">please consult this NodeMailer article on the issue.</a> An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. <a href=\"../extend/plugins\">Browse available plugins here</a>.",
|
||||
"smtp-transport.host": "SMTP Host",
|
||||
"smtp-transport.port": "SMTP Port",
|
||||
"smtp-transport.security": "Connection security",
|
||||
@@ -39,11 +38,9 @@
|
||||
"subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. <code>0</code> for midnight, <code>17</code> for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.<br /> The approximate server time is: <span id=\"serverTime\"></span><br /> The next daily digest is scheduled to be sent <span id=\"nextDigestTime\"></span>",
|
||||
"notifications.remove-images": "Remove images from email notifications",
|
||||
"require-email-address": "Require new users to specify an email address",
|
||||
"require-email-address-warning": "By default, users can opt-out of entering an email address by leaving the field blank. Enabling this option means they have to enter an email address in order to proceed with registration. <strong>It does not ensure user will enter a real email address, nor even an address they own.</strong>",
|
||||
"send-validation-email": "Send validation emails when an email is added or changed",
|
||||
"require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. <strong>It does not ensure user will enter a real email address, nor even an address they own.</strong>",
|
||||
"include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails",
|
||||
"include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). <strong>Enable this setting at your own risk</strong> – sending emails to unverified addresses may be a violation of regional anti-spam laws.",
|
||||
"prompt": "Prompt users to enter or confirm their emails",
|
||||
"prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen.",
|
||||
"sendEmailToBanned": "Send emails to users even if they have been banned"
|
||||
"prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen."
|
||||
}
|
||||
|
||||
@@ -4,13 +4,9 @@
|
||||
"disable-down-voting": "Disable Down Voting",
|
||||
"votes-are-public": "All Votes Are Public",
|
||||
"thresholds": "Activity Thresholds",
|
||||
"min-rep-upvote": "Minimum reputation to upvote posts",
|
||||
"upvotes-per-day": "Upvotes per day (set to 0 for unlimited upvotes)",
|
||||
"upvotes-per-user-per-day": "Upvotes per user per day (set to 0 for unlimited upvotes)",
|
||||
"min-rep-downvote": "Minimum reputation to downvote posts",
|
||||
"downvotes-per-day": "Downvotes per day (set to 0 for unlimited downvotes)",
|
||||
"downvotes-per-user-per-day": "Downvotes per user per day (set to 0 for unlimited downvotes)",
|
||||
"min-rep-chat": "Minimum reputation to send chat messages",
|
||||
"min-rep-flag": "Minimum reputation to flag posts",
|
||||
"min-rep-website": "Minimum reputation to add \"Website\" to user profile",
|
||||
"min-rep-aboutme": "Minimum reputation to add \"About me\" to user profile",
|
||||
@@ -22,6 +18,5 @@
|
||||
"flags.limit-per-target": "Maximum number of times something can be flagged",
|
||||
"flags.limit-per-target-placeholder": "Default: 0",
|
||||
"flags.limit-per-target-help": "When a post or user is flagged multiple times, each additional flag is considered a "report" and added to the original flag. Set this option to a number other than zero to limit the number of reports an item can receive.",
|
||||
"flags.auto-flag-on-downvote-threshold": "Number of downvotes to auto flag posts (Set to 0 to disable, default: 0)",
|
||||
"flags.auto-resolve-on-ban": "Automatically resolve all of a user's tickets when they are banned"
|
||||
}
|
||||
@@ -1,11 +1,8 @@
|
||||
{
|
||||
"posts": "المشاركات",
|
||||
"orphans": "Orphaned Files",
|
||||
"allow-files": "السماح للأعضاء بتحميل الملفات الإعتيادية",
|
||||
"private": "جعل الملفات التي تم رفعها خاصة",
|
||||
"strip-exif-data": "Strip EXIF Data",
|
||||
"preserve-orphaned-uploads": "Keep uploaded files on disk after a post is purged",
|
||||
"orphanExpiryDays": "Days to keep orphaned files",
|
||||
"orphanExpiryDays-help": "After this many days, orphaned uploads will be deleted from the file system.<br />Set 0 or leave blank to disable.",
|
||||
"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",
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
{
|
||||
"authentication": "المصادقة",
|
||||
"require-email-confirmation": "يطلب تأكيد البريد الإلكتروني",
|
||||
"email-confirm-interval": "لا يمكن للمستخدم إعادة إرسال رسالة تأكيد البريد الالكتروني حتى مرور",
|
||||
"email-confirm-email2": "دقائق",
|
||||
"allow-login-with": "السماح بتسجيل الدخول باستخدام",
|
||||
"allow-login-with.username-email": "اسم المستخدم أو البريد الالكتروني",
|
||||
"allow-login-with.username": "اسم المستخدم فقط",
|
||||
"allow-login-with.email": "البريد الالكتروني فقط",
|
||||
"account-settings": "إعدادت الحساب",
|
||||
"gdpr_enabled": "Enable GDPR consent collection",
|
||||
"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.",
|
||||
|
||||
@@ -48,8 +48,6 @@
|
||||
"unsub.cta": "انقر هنا لتغيير تلك الإعدادات",
|
||||
"unsubscribe": "unsubscribe",
|
||||
"unsub.success": "You will no longer receive emails from the <strong>%1</strong> mailing list",
|
||||
"unsub.failure.title": "Unable to unsubscribe",
|
||||
"unsub.failure.message": "Unfortunately, we were not able to unsubscribe you from the mailing list, as there was an issue with the link. However, you can alter your email preferences by going to <a href=\"%2\">your user settings</a>.<br /><br />(error: <code>%1</code>)",
|
||||
"banned.subject": "You have been banned from %1",
|
||||
"banned.text1": "The user %1 has been banned from %2.",
|
||||
"banned.text2": "This ban will last until %1.",
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
{
|
||||
"invalid-data": "بيانات غير صحيحة",
|
||||
"invalid-json": "Invalid JSON",
|
||||
"wrong-parameter-type": "A value of type %3 was expected for property `%1`, but %2 was received instead",
|
||||
"required-parameters-missing": "Required parameters were missing from this API call: %1",
|
||||
"not-logged-in": "لم تقم بتسجيل الدخول",
|
||||
"account-locked": "تم حظر حسابك مؤقتًا.",
|
||||
"search-requires-login": "البحث في المنتدى يتطلب حساب - الرجاء تسجيل الدخول أو التسجيل",
|
||||
@@ -11,7 +9,6 @@
|
||||
"invalid-tid": "موضوع غير متواجد",
|
||||
"invalid-pid": "رد غير موجود",
|
||||
"invalid-uid": "مستخدم غير موجود",
|
||||
"invalid-mid": "Invalid Chat Message ID",
|
||||
"invalid-date": "A valid date must be provided",
|
||||
"invalid-username": "اسم المستخدم غير مقبول",
|
||||
"invalid-email": "البريد الاكتروني غير مقبول",
|
||||
@@ -61,7 +58,6 @@
|
||||
"no-group": "مجموعة غير موجودة",
|
||||
"no-user": "اسم مستخدم غير موجود",
|
||||
"no-teaser": "مقتطف غير موجود",
|
||||
"no-flag": "Flag does not exist",
|
||||
"no-privileges": "لاتملك الصلاحيات اللازمة للقيام بهذه العملية",
|
||||
"category-disabled": "قائمة معطلة",
|
||||
"topic-locked": "الموضوع مقفول",
|
||||
@@ -108,9 +104,6 @@
|
||||
"already-bookmarked": "You have already bookmarked this post",
|
||||
"already-unbookmarked": "You have already unbookmarked this post",
|
||||
"cant-ban-other-admins": "لايمكن حظر مدبر نظام آخر.",
|
||||
"cant-mute-other-admins": "You can't mute other admins!",
|
||||
"user-muted-for-hours": "You have been muted, you will be able to post in %1 hour(s)",
|
||||
"user-muted-for-minutes": "You have been muted, you will be able to post in %1 minute(s)",
|
||||
"cant-make-banned-users-admin": "You can't make banned users admin.",
|
||||
"cant-remove-last-admin": "رجاءًا ، أضف مدير أخر قبل حذف صلاحيات الإدارة من حسابك.",
|
||||
"account-deletion-disabled": "Account deletion is disabled",
|
||||
@@ -149,6 +142,7 @@
|
||||
"invalid-chat-message": "الرسالة غير صالحة.",
|
||||
"chat-message-too-long": "Chat messages can not be longer than %1 characters.",
|
||||
"cant-edit-chat-message": "غير مصرح لك بتعديل الرسالة.",
|
||||
"cant-remove-last-user": "لأيمكنك إزالت اخر مستخدم.",
|
||||
"cant-delete-chat-message": "غير مصرح لك بحذف الرسالة.",
|
||||
"chat-edit-duration-expired": "You are only allowed to edit chat messages for %1 second(s) after posting",
|
||||
"chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting",
|
||||
@@ -158,23 +152,19 @@
|
||||
"already-voting-for-this-post": "لقد شاركت بالتصويت ، ألا تذكر؟",
|
||||
"reputation-system-disabled": "نظام السمعة معطل",
|
||||
"downvoting-disabled": "التصويتات السلبية معطلة",
|
||||
"not-enough-reputation-to-chat": "You need %1 reputation to chat",
|
||||
"not-enough-reputation-to-upvote": "You need %1 reputation to upvote",
|
||||
"not-enough-reputation-to-downvote": "You need %1 reputation to downvote",
|
||||
"not-enough-reputation-to-flag": "You need %1 reputation to flag this post",
|
||||
"not-enough-reputation-min-rep-website": "You need %1 reputation to add a website",
|
||||
"not-enough-reputation-min-rep-aboutme": "You need %1 reputation to add an about me",
|
||||
"not-enough-reputation-min-rep-signature": "You need %1 reputation to add a signature",
|
||||
"not-enough-reputation-min-rep-profile-picture": "You need %1 reputation to add a profile picture",
|
||||
"not-enough-reputation-min-rep-cover-picture": "You need %1 reputation to add a cover picture",
|
||||
"not-enough-reputation-to-downvote": "ليس لديك سمعة تكفي لإضافة صوت سلبي لهذا الموضوع",
|
||||
"not-enough-reputation-to-flag": "ليس لديك سمعة تكفي للإشعار بموضوع مخل",
|
||||
"not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website",
|
||||
"not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me",
|
||||
"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",
|
||||
"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",
|
||||
"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-upvotes-today": "You can only upvote %1 times a day",
|
||||
"too-many-upvotes-today-user": "You can only upvote a user %1 times a day",
|
||||
"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\". سيواصل المنتدى خدمة العملاء السابقين لكن يجب عليك إلغاء أي تغيير قمت به قبل إعادة التحميل.",
|
||||
@@ -205,8 +195,6 @@
|
||||
"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",
|
||||
"plugins-set-in-configuration": "You are not allowed to change plugin state as they are defined at runtime (config.json, environmental variables or terminal arguments), please modify the configuration instead.",
|
||||
"theme-not-set-in-configuration": "When defining active plugins in configuration, changing themes requires adding the new theme to the list of active plugins before updating it in the ACP",
|
||||
"topic-event-unrecognized": "Topic event '%1' unrecognized",
|
||||
"cant-set-child-as-parent": "Can't set child as parent category",
|
||||
"cant-set-self-as-parent": "Can't set self as parent category",
|
||||
|
||||
@@ -38,7 +38,6 @@
|
||||
"delete-post": "حذف المشاركة",
|
||||
"purge-post": "Purge Post",
|
||||
"restore-post": "استرجاع المشاركة",
|
||||
"delete": "Delete Flag",
|
||||
|
||||
"user-view": "مشاهدة الملف الشخصي",
|
||||
"user-edit": "تعديل الملف الشخصي",
|
||||
@@ -47,10 +46,8 @@
|
||||
"add-note": "اضافة ملاحظة",
|
||||
"no-notes": "No shared notes.",
|
||||
"delete-note-confirm": "Are you sure you want to delete this flag note?",
|
||||
"delete-flag-confirm": "Are you sure you want to delete this flag?",
|
||||
"note-added": "Note Added",
|
||||
"note-deleted": "Note Deleted",
|
||||
"flag-deleted": "Flag Deleted",
|
||||
|
||||
"history": "Account & Flag History",
|
||||
"no-history": "No flag history.",
|
||||
@@ -84,6 +81,5 @@
|
||||
"bulk-actions": "Bulk Actions",
|
||||
"bulk-resolve": "Resolve Flag(s)",
|
||||
"bulk-success": "%1 flags updated",
|
||||
"flagged-timeago-readable": "Flagged <span class=\"timeago\" title=\"%1\"></span> (%2)",
|
||||
"auto-flagged": "[Auto Flagged] Received %1 downvotes."
|
||||
"flagged-timeago-readable": "Flagged <span class=\"timeago\" title=\"%1\"></span> (%2)"
|
||||
}
|
||||
@@ -23,7 +23,7 @@
|
||||
"close": "أغلق",
|
||||
"pagination": "الصفحات",
|
||||
"pagination.out_of": "%1 من %2",
|
||||
"pagination.enter_index": "Go to post index",
|
||||
"pagination.enter_index": "أدخل الرقم التسلسلي",
|
||||
"header.admin": "مدير النظام",
|
||||
"header.categories": "الأقسام",
|
||||
"header.recent": "حديث",
|
||||
@@ -56,7 +56,6 @@
|
||||
"posts": "المشاركات",
|
||||
"x-posts": "%1 posts",
|
||||
"best": "الأفضل",
|
||||
"controversial": "Controversial",
|
||||
"votes": "Votes",
|
||||
"x-votes": "%1 votes",
|
||||
"voters": "Voters",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"username-email": "اسم المستخدم / البريد الإلكتروني",
|
||||
"username": "اسم المستخدم",
|
||||
"email": "البريد الإلكتروني",
|
||||
"remember_me": "تذكرني؟",
|
||||
"forgot_password": "نسيت كلمة المرور؟",
|
||||
"alternative_logins": "تسجيلات الدخول البديلة",
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
{
|
||||
"chat.chatting_with": "Chat with",
|
||||
"chat.placeholder": "Type chat message here, drag & drop images, press enter to send",
|
||||
"chat.placeholder": "أكتب رسالة دردشة هنا، اضغط ENTER للإرسال",
|
||||
"chat.scroll-up-alert": "You are looking at older messages, click here to go to most recent message.",
|
||||
"chat.send": "أرسل",
|
||||
"chat.no_active": "لا يوجد لديك دردشات نشطة.",
|
||||
"chat.user_typing": "%1 يكتب رسالة...",
|
||||
"chat.user_has_messaged_you": "%1 أرسل لك رسالة.",
|
||||
"chat.see_all": "All chats",
|
||||
"chat.mark_all_read": "Mark all read",
|
||||
"chat.see_all": "عرض كل المحادثات",
|
||||
"chat.mark_all_read": "Mark all chats read",
|
||||
"chat.no-messages": "المرجو اختيار مرسل إليه لمعاينة تاريخ الدردشات",
|
||||
"chat.no-users-in-room": "No users in this room",
|
||||
"chat.recent-chats": "آخر الدردشات",
|
||||
@@ -68,8 +68,6 @@
|
||||
"bootbox.ok": "OK",
|
||||
"bootbox.cancel": "إلغاء",
|
||||
"bootbox.confirm": "تأكيد",
|
||||
"bootbox.submit": "Submit",
|
||||
"bootbox.send": "Send",
|
||||
"cover.dragging_title": "Cover Photo Positioning",
|
||||
"cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
|
||||
"cover.saved": "Cover photo image and position saved",
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"title": "التنبيهات",
|
||||
"no_notifs": "ليس لديك أية تنبيهات جديدة",
|
||||
"see_all": "All notifications",
|
||||
"mark_all_read": "Mark all read",
|
||||
"see_all": "عرض كل التنبيهات",
|
||||
"mark_all_read": "اجعل كل التنبيهات مقروءة",
|
||||
"back_to_home": "عودة إلى %1",
|
||||
"outgoing_link": "رابط خارجي",
|
||||
"outgoing_link_message": "أنت تغادر اﻻن %1",
|
||||
@@ -50,7 +50,6 @@
|
||||
"users-csv-exported": "Users csv exported, click to download",
|
||||
"post-queue-accepted": "Your queued post has been accepted. Click here to see your post.",
|
||||
"post-queue-rejected": "Your queued post has been rejected.",
|
||||
"post-queue-notify": "Queued post received a notification:<br/>\"%1\"",
|
||||
"email-confirmed": "تم التحقق من عنوان البريد الإلكتروني",
|
||||
"email-confirmed-message": "شكرًا على إثبات صحة عنوان بريدك الإلكتروني. صار حسابك مفعلًا بالكامل.",
|
||||
"email-confirm-error-message": "حدث خطأ أثناء التحقق من عنوان بريدك الإلكتروني. ربما رمز التفعيل خاطئ أو انتهت صلاحيته.",
|
||||
|
||||
@@ -54,7 +54,6 @@
|
||||
"account/upvoted": "Posts upvoted by %1",
|
||||
"account/downvoted": "Posts downvoted by %1",
|
||||
"account/best": "Best posts made by %1",
|
||||
"account/controversial": "Controversial posts made by %1",
|
||||
"account/blocks": "Blocked users for %1",
|
||||
"account/uploads": "Uploads by %1",
|
||||
"account/sessions": "Login Sessions",
|
||||
|
||||
@@ -14,18 +14,5 @@
|
||||
"reply": "Reply",
|
||||
"topic": "Topic",
|
||||
"accept": "Accept",
|
||||
"reject": "Reject",
|
||||
"remove": "Remove",
|
||||
"notify": "Notify",
|
||||
"notify-user": "Notify User",
|
||||
"confirm-reject": "Do you want to reject this post?",
|
||||
"bulk-actions": "Bulk Actions",
|
||||
"accept-all": "Accept All",
|
||||
"accept-selected": "Accept Selected",
|
||||
"reject-all": "Reject All",
|
||||
"reject-all-confirm": "Do you want to reject all posts?",
|
||||
"reject-selected": "Reject Selected",
|
||||
"reject-selected-confirm": "Do you want to reject %1 selected posts?",
|
||||
"bulk-accept-success": "%1 posts accepted",
|
||||
"bulk-reject-success": "%1 posts rejected"
|
||||
"reject": "Reject"
|
||||
}
|
||||
@@ -48,7 +48,6 @@
|
||||
"moved-from-by": "Moved from %1 by",
|
||||
"queued-by": "Post queued for approval →",
|
||||
"backlink": "Referenced by",
|
||||
"forked-by": "Forked by",
|
||||
"bookmark_instructions": "اضغط هنا للعودة لأخر مشاركة مقروءة في الموضوع",
|
||||
"flag-post": "Flag this post",
|
||||
"flag-user": "Flag this user",
|
||||
@@ -113,7 +112,6 @@
|
||||
"bookmark": "Bookmark",
|
||||
"bookmarks": "Bookmarks",
|
||||
"bookmarks.has_no_bookmarks": "You haven't bookmarked any posts yet.",
|
||||
"copy-permalink": "Copy Permalink",
|
||||
"loading_more_posts": "تحميل المزيد من المشاركات",
|
||||
"move_topic": "نقل الموضوع",
|
||||
"move_topics": "نقل المواضيع",
|
||||
@@ -182,7 +180,5 @@
|
||||
"timeago_earlier": "%1 earlier",
|
||||
"first-post": "First post",
|
||||
"last-post": "Last post",
|
||||
"go-to-my-next-post": "Go to my next post",
|
||||
"no-more-next-post": "You don't have more posts in this topic",
|
||||
"post-quick-reply": "Post quick reply"
|
||||
}
|
||||
@@ -1,6 +1,5 @@
|
||||
{
|
||||
"banned": "محظور",
|
||||
"muted": "Muted",
|
||||
"offline": "غير متصل",
|
||||
"deleted": "محذوف",
|
||||
"username": "إسم المستخدم",
|
||||
@@ -13,8 +12,6 @@
|
||||
"ban_account": "حظر الحساب",
|
||||
"ban_account_confirm": "هل تريد حقاً حظر هاذا العضو؟",
|
||||
"unban_account": "إزالة حظر الحساب",
|
||||
"mute_account": "Mute Account",
|
||||
"unmute_account": "Unmute Account",
|
||||
"delete_account": "حذف الحساب",
|
||||
"delete_account_as_admin": "Delete <strong>Account</strong>",
|
||||
"delete_content": "Delete Account <strong>Content</strong>",
|
||||
@@ -108,7 +105,7 @@
|
||||
"has_no_ignored_topics": "هذا المستخدم لم يقم بتجاهل اية مواضيع حتى الآن.",
|
||||
"has_no_upvoted_posts": "هذا المستخدم لم يقم بالتصويت للأعلى لأي مشاركة حتى الآن.",
|
||||
"has_no_downvoted_posts": "هذا المستخدم لم يقم بالتصويت للأسفل لأي مشاركة حتى الآن.",
|
||||
"has_no_controversial_posts": "This user does not have any downvoted posts yet.",
|
||||
"has_no_voted_posts": "هذا المستخدم لا يمتلك اية مشاركات تم التصويت عليها",
|
||||
"has_no_blocks": "You have blocked no users.",
|
||||
"email_hidden": "البريد الإلكتروني مخفي",
|
||||
"hidden": "مخفي",
|
||||
@@ -157,11 +154,6 @@
|
||||
"info.banned-permanently": "محظور بشكل دائم",
|
||||
"info.banned-reason-label": "سبب",
|
||||
"info.banned-no-reason": "لم يتم إعطاء سبب.",
|
||||
"info.mute-history": "Recent Mute History",
|
||||
"info.no-mute-history": "This user has never been muted",
|
||||
"info.muted-until": "Muted until %1",
|
||||
"info.muted-expiry": "Expiry",
|
||||
"info.muted-no-reason": "No reason given.",
|
||||
"info.username-history": "سجل اسم المستخدم",
|
||||
"info.email-history": "سجل البريد الإلكتروني",
|
||||
"info.moderation-note": "ملاحظة الإشراف",
|
||||
@@ -192,8 +184,6 @@
|
||||
"consent.export_posts": "Export Posts (.csv)",
|
||||
"consent.export-posts-success": "Exporting posts, you will get a notification when it is complete.",
|
||||
"emailUpdate.intro": "Please enter your email address below. This forum uses your email address for scheduled digest and notifications, as well as for account recovery in the event of a lost password.",
|
||||
"emailUpdate.optional": "<strong>This field is optional</strong>. You are not obligated to provide your email address, but without a validated email you will not be able to recover your account or login with your email.",
|
||||
"emailUpdate.required": "<strong>This field is required</strong>.",
|
||||
"emailUpdate.change-instructions": "A confirmation email will be sent to the entered email address with a unique link. Accessing that link will confirm your ownership of the email address and it will become active on your account. At any time, you are able to update your email on file from within your account page.",
|
||||
"emailUpdate.password-challenge": "Please enter your password in order to verify account ownership."
|
||||
"emailUpdate.optional": "<strong>This field is optional</strong>. You are not obligated to provide your email address, but without a validated email, you will not be able to recover your account.",
|
||||
"emailUpdate.change-instructions": "A confirmation email will be sent to the entered email address with a unique link. Accessing that link will confirm your ownership of the email address and it will become active on your account. At any time, you are able to update your email on file from within your account page."
|
||||
}
|
||||
@@ -5,7 +5,6 @@
|
||||
"most_flags": "Most Flags",
|
||||
"search": "بحث",
|
||||
"enter_username": "أدخل اسم مستخدم للبحث",
|
||||
"search-user-for-chat": "ابحث عن مستخدم لبدء محادثة ",
|
||||
"load_more": "حمل المزيد",
|
||||
"users-found-search-took": "تم إيجاد %1 مستخدمـ(ين)! استغرق البحث %2 ثانية.",
|
||||
"filter-by": "Filter By",
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
# The files here are not meant to be edited directly
|
||||
|
||||
Please see the → [Internalization README](../README.md).
|
||||
@@ -3,9 +3,5 @@
|
||||
"alert.confirm-restart": "Наистина ли искате да рестартирате NodeBB?",
|
||||
|
||||
"acp-title": "%1 | Контролен панел за администратори на NodeBB",
|
||||
"settings-header-contents": "Съдържание",
|
||||
"changes-saved": "Промените са запазени",
|
||||
"changes-saved-message": "Промените Ви в настройките на NodeBB бяха запазени.",
|
||||
"changes-not-saved": "Промените не са запазени",
|
||||
"changes-not-saved-message": "Възникна проблем при запазването на промените Ви по NodeBB. (%1)"
|
||||
"settings-header-contents": "Съдържание"
|
||||
}
|
||||
@@ -1,10 +1,8 @@
|
||||
{
|
||||
"administrators": "Администратори",
|
||||
"global-moderators": "Глобални модератори",
|
||||
"moderators": "Модератори",
|
||||
"no-global-moderators": "Няма глобални модератори",
|
||||
"no-sub-categories": "Няма подкатегории",
|
||||
"subcategories": "%1 подкатегории",
|
||||
"moderators-of-category": "%1 модератори",
|
||||
"no-moderators": "Няма модератори",
|
||||
"add-administrator": "Добавяне на администратор",
|
||||
"add-global-moderator": "Добавяне на глобален модератор",
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
"upload-files": "Качване на файлове",
|
||||
"signature": "Подпис",
|
||||
"ban": "Блокиране",
|
||||
"mute": "Заглушаване",
|
||||
"invite": "Пращане на покана",
|
||||
"search-content": "Търсене на съдържание",
|
||||
"search-users": "Търсене на потребители",
|
||||
|
||||
@@ -18,8 +18,7 @@
|
||||
"download-csv": "Сваляне във формат „CSV“",
|
||||
"manage-groups": "Управление на групите",
|
||||
"add-group": "Добавяне на група",
|
||||
"create": "Създаване на потребител",
|
||||
"invite": "Поканване по е-поща",
|
||||
"invite": "Покана",
|
||||
"new": "Нов потребител",
|
||||
"filter-by": "Филтриране по",
|
||||
"pills.unvalidated": "Няма потвърдена е-поща",
|
||||
@@ -63,7 +62,7 @@
|
||||
"create.password": "Парола",
|
||||
"create.password-confirm": "Потвърдете паролата",
|
||||
|
||||
"temp-ban.length": "Продължителност",
|
||||
"temp-ban.length": "Продължителност на блокирането",
|
||||
"temp-ban.reason": "Причина <span class=\"text-muted\">(незадължително)</span>",
|
||||
"temp-ban.hours": "Часове",
|
||||
"temp-ban.days": "Дни",
|
||||
@@ -91,7 +90,6 @@
|
||||
"alerts.validate-email-success": "Е-пощите са проверени",
|
||||
"alerts.validate-force-password-reset-success": "Паролата на потребителя (или паролите на потребителите) беше подновена и сесията му беше прекратена.",
|
||||
"alerts.password-reset-confirm": "Искате ли да изпратите е-писмо/а за възстановяване на паролата на този/тези потребител(и)?",
|
||||
"alerts.password-reset-email-sent": "Е-писмото за възстановяване на паролата е изпратено.",
|
||||
"alerts.confirm-delete": "<strong>ВНИМАНИЕ!</strong><p>Наистина ли искате да изтриете <strong>потребителя/ите</strong>?</p> <p>Това действие е необратимо! Ще бъде изтрит само профилът на потребителя/ите, неговите/техните публикациите и теми ще останат.</p>",
|
||||
"alerts.delete-success": "Потребителят/ите е/са изтрит(и)!",
|
||||
"alerts.confirm-delete-content": "<strong>ВНИМАНИЕ!</strong><p>Наистина ли искате да изтриете <strong>съдържанието</strong> на този потребител или тези потребители?</p> <p>Това действие е необратимо! Профилите на потребителите ще останат, но всички техни публикации и теми ще бъдат изтрити.</p>",
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
"logout": "Изход",
|
||||
"view-forum": "Преглед на форума",
|
||||
|
||||
"search.placeholder": "Търсене на настройки",
|
||||
"search.placeholder": "Натиснете „/“ за търсене на настройки",
|
||||
"search.no-results": "Няма резултати…",
|
||||
"search.search-forum": "Търсене във форума за <strong></strong>",
|
||||
"search.keep-typing": "Продължете да пишете, за да видите още резултати…",
|
||||
|
||||
@@ -8,17 +8,13 @@
|
||||
"headers.csp-frame-ancestors": "Задайте заглавката „Content-Security-Policy frame-ancestors“ за да поставите NodeBB „iFrame“",
|
||||
"headers.csp-frame-ancestors-help": "„none“ (нищо), „self“ (себе си – по подразбиране) или списък от позволени адреси.",
|
||||
"headers.powered-by": "Персонализиране на заглавната част „Захранван от“, която се изпраща от NodeBB",
|
||||
"headers.acao": "Access-Control-Allow-Origin",
|
||||
"headers.acao-regex": "Регулярен израз за „Access-Control-Allow-Origin“",
|
||||
"headers.acao": "Произход за разрешаване на управлението на достъпа",
|
||||
"headers.acao-regex": "Регулярен израз за произхода за разрешаване на управлението на достъпа",
|
||||
"headers.acao-help": "За да забраните достъпа до всички уеб сайтове, оставете празно",
|
||||
"headers.acao-regex-help": "Въведете регулярен израз за съвпадение с динамичните произходи. За да забраните достъпа на всички уеб сайтове, оставете това празно.",
|
||||
"headers.acac": "Access-Control-Allow-Credentials",
|
||||
"headers.acac": "Удостоверителни данни за разрешаване на управлението на достъпа",
|
||||
"headers.acam": "Методи за разрешаване на управлението на достъпа",
|
||||
"headers.acah": "Access-Control-Allow-Headers",
|
||||
"headers.coep": "Cross-Origin-Embedder-Policy",
|
||||
"headers.coep-help": "Когато е включено (по подразбиране), стойността на заглавката ще бъде <code>require-corp</code>",
|
||||
"headers.coop": "Cross-Origin-Opener-Policy",
|
||||
"headers.corp": "Cross-Origin-Resource-Policy",
|
||||
"headers.acah": "Заглавки за разрешаване на управлението на достъпа",
|
||||
"hsts": "Стриктна транспортна сигурност",
|
||||
"hsts.enabled": "Включване на HSTS (препоръчително)",
|
||||
"hsts.maxAge": "Максимална възраст на HSTS",
|
||||
|
||||
@@ -11,9 +11,8 @@
|
||||
"smtp-transport.service": "Изберете услуга",
|
||||
"smtp-transport.service-custom": "Персонализирана услуга",
|
||||
"smtp-transport.service-help": "Изберете името на услугата по-горе, за да използвате известните данни за нея. Или изберете „Персонализирана услуга“ и въведете данните ѝ по-долу.",
|
||||
"smtp-transport.gmail-warning1": "Ако използвате GMail, ще трябва да създадете „Парола за приложение“, за да може NodeBB да използва данните за удостоверяване. Можете да създадете такава в страницата с <a href=\"https://myaccount.google.com/apppasswords\">Пароли за приложения<i class=\"fa fa-external-link\"></i></a>.",
|
||||
"smtp-transport.gmail-warning2": "За повече информация относно това обиколно решение, <a href=\"https://nodemailer.com/usage/using-gmail/\">моля, прегледайте тази статия за проблема в „NodeMailer“<i class=\"fa fa-external-link\"></i></a>. Друго решение би било използването на добавка за е-поща от трета страна, като например „SendGrid“, „Mailgun“ и т.н. <a href=\"../extend/plugins\">Вижте наличните добавки тук</a>.",
|
||||
"smtp-transport.auto-enable-toast": "Изглежда настройвате функционалност, която изисква транспорт чрез SMTP. Включихме настройката „Транспорт чрез SMTP“, за да не го правите Вие.",
|
||||
"smtp-transport.gmail-warning1": "Има доклади, че услугата на Gmail не работи за акаунти с подсилена защита. В тези случаи ще трябва да <a href=\"https://www.google.com/settings/security/lesssecureapps\">настроите своя акаунт в GMail така, че да позволява използването на по-малко защитени приложения</a>.",
|
||||
"smtp-transport.gmail-warning2": "За повече информация относно това обиколно решение, <a href=\"https://nodemailer.com/usage/using-gmail/\">моля, прегледайте тази статия за проблема в „NodeMailer“.</a> Друго решение би било използването на добавка за е-поща от трета страна, като например „SendGrid“, „Mailgun“ и т.н. <a href=\"../extend/plugins\">Вижте наличните добавки тук</a>.",
|
||||
"smtp-transport.host": "SMTP сървър",
|
||||
"smtp-transport.port": "SMTP порт",
|
||||
"smtp-transport.security": "Сигурност на връзката",
|
||||
@@ -39,11 +38,9 @@
|
||||
"subscriptions.hour-help": "Моля, въведете число, представляващо часа, в който да се разпращат е-писма с подготвеното резюме (напр.. <code>0</code> за полунощ, <code>17</code> за 5 следобед). Имайте предвид, че този час е според часовата зона на сървъра и може да не съвпада с часовника на системата Ви.<br /> Приблизителното време на сървъра е: <span id=\"serverTime\"></span><br /> Изпращането на следващия ежедневен бюлетин е планирано за <span id=\"nextDigestTime\"></span>",
|
||||
"notifications.remove-images": "Премахване на изображенията от известията по е-поща",
|
||||
"require-email-address": "Новите потребители задължително трябва да предоставят е-поща",
|
||||
"require-email-address-warning": "По подразбиране потребителите могат да не въвеждат адрес на е-поща, като оставят полето празно. Ако включите това, те задължително ще трябва да предоставят е-поща, за да могат да се регистрират. <strong>Това не означава, че потребителят ще въведе съществуваща е-поща, нито че тя ще е негова.</strong>",
|
||||
"send-validation-email": "Изпращане на е-писма за потвърждение, когато бъде добавена или променена е-поща",
|
||||
"require-email-address-warning": "По подразбиране потребителите могат да не въвеждат адрес на е-поща. Ако включите това, те задължително ще трябва да предоставят е-поща, за да могат да се регистрират. <strong>Това не означава, че потребителят ще въведе съществуваща е-поща, нито че тя ще е негова.</strong>",
|
||||
"include-unverified-emails": "Изпращане на е-писма към получатели, които не са потвърдили изрично е-пощата си",
|
||||
"include-unverified-warning": "За потребителите, които имат свързана е-поща с регистрацията си, тя се смята за потвърдена. Но има ситуации, в които това не е така (например при ползване на регистрация от друга система, но и в други случаи), <strong>Включете тази настройка на собствен риск</strong> – изпращането на е-писма към непотвърдени адреси може да нарушава определени местни закони против нежеланата поща.",
|
||||
"prompt": "Подсещане на потребителите да въведат или потвърдят е-пощата си",
|
||||
"prompt-help": "Ако потребител няма зададена е-поща, или ако тя не е потвърдена, на екрана му ще се покаже предупредително съобщение.",
|
||||
"sendEmailToBanned": "Изпращане на е-писма дори до блокираните потребители"
|
||||
"prompt-help": "Ако потребител няма зададена е-поща, или ако тя не е потвърдена, на екрана му ще се покаже предупредително съобщение."
|
||||
}
|
||||
|
||||
@@ -4,13 +4,9 @@
|
||||
"disable-down-voting": "Забрана на отрицателното гласуване",
|
||||
"votes-are-public": "Всички гласувания са публични",
|
||||
"thresholds": "Ограничения на дейността",
|
||||
"min-rep-upvote": "Минимална репутация, необходима за положително гласуване за публикации",
|
||||
"upvotes-per-day": "Положителни гласувания за ден (задайте 0 за неограничен брой)",
|
||||
"upvotes-per-user-per-day": "Положителни гласувания за потребител за ден (задайте 0 за неограничен брой)",
|
||||
"min-rep-downvote": "Минимална репутация, необходима за отрицателно гласуване за публикации",
|
||||
"downvotes-per-day": "Отрицателни гласувания за ден (задайте 0 за неограничен брой)",
|
||||
"downvotes-per-user-per-day": "Отрицателни гласувания за потребител за ден (задайте 0 за неограничен брой)",
|
||||
"min-rep-chat": "Минимална репутация, необходима за изпращане на съобщения в разговори",
|
||||
"min-rep-flag": "Минимална репутация, необходима за докладване на публикации",
|
||||
"min-rep-website": "Минимална репутация, необходима за добавяне на полето „Уебсайт“ към профила на потребителя",
|
||||
"min-rep-aboutme": "Минимална репутация, необходима за добавяне на полето „За мен“ към профила на потребителя",
|
||||
@@ -22,6 +18,5 @@
|
||||
"flags.limit-per-target": "Максимален брой докладвания на едно и също нещо",
|
||||
"flags.limit-per-target-placeholder": "По подразбиране: 0",
|
||||
"flags.limit-per-target-help": "Когато публикация или потребител бъде докладван няколко пъти, това се добавя към един общ доклад. Задайте на тази настройка стойност по-голяма от нула, за да ограничите броя на докладванията, които могат да бъдат натрупани към една публикация или потребител.",
|
||||
"flags.auto-flag-on-downvote-threshold": "Брой отрицателни гласове, при които публикациите да бъдат докладвани автоматично (0 = изключено, по подразбиране: 0)",
|
||||
"flags.auto-resolve-on-ban": "Автоматично премахване на всички доклади за потребител, когато той бъде блокиран"
|
||||
}
|
||||
@@ -1,11 +1,8 @@
|
||||
{
|
||||
"posts": "Публикации",
|
||||
"orphans": "Неизползвани файлове",
|
||||
"allow-files": "Позволяване на потребителите да качват обикновени файлове",
|
||||
"private": "Качените файлове да бъдат частни",
|
||||
"strip-exif-data": "Премахване на данните EXIF",
|
||||
"preserve-orphaned-uploads": "Запазване на качените файлове на диска дори след изтриването на публикацията",
|
||||
"orphanExpiryDays": "Брой дни за съхранение на неизползваните файлове",
|
||||
"orphanExpiryDays-help": "След толкова на брой дни неизползваните качени файлове ще бъдат изтривани.<br />Задайте 0 или оставете празно, за да изключите тази функционалност.",
|
||||
"private-extensions": "Файлови разширения, които да бъдат частни",
|
||||
"private-uploads-extensions-help": "Въведете списък от файлови разширения, разделени със запетаи, които искате да бъдат частни (например <code>pdf,xls,doc</code>). Ако оставите това поле празно, всички файлове ще бъдат частни.",
|
||||
"resize-image-width-threshold": "Преоразмеряване на изображенията, ако са по-широки от определената ширина",
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
{
|
||||
"authentication": "Удостоверяване",
|
||||
"require-email-confirmation": "Изискване на потвърждение на е-пощата",
|
||||
"email-confirm-interval": "Потребителят не може да изпраща повторно е-писмото за потвърждение, преди да са минали",
|
||||
"email-confirm-email2": "минути",
|
||||
"allow-login-with": "Позволяване на вписването чрез",
|
||||
"allow-login-with.username-email": "Потребителско име или е-поща",
|
||||
"allow-login-with.username": "Само потребителско име",
|
||||
"allow-login-with.email": "Само е-поща",
|
||||
"account-settings": "Настройки на акаунта",
|
||||
"gdpr_enabled": "Включване на искането за съгласие с ОРЗД",
|
||||
"gdpr_enabled_help": "Ако това е включено, всички новорегистрирани потребители ще бъдат задължени изрично да дадат съгласието си за събирането на данни и статистики за потреблението според <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\">Общия регламент относно защитата на данните (ОРЗД)</a>. <strong>Забележка</strong>: Включването на ОРЗД не задължава съществуващите потребители да дадат съгласието си. Ако искате това, ще трябва да инсталирате добавката за ОРЗД (GDPR).",
|
||||
@@ -23,7 +25,7 @@
|
||||
"login-attempts": "Брой опити за вписване на час",
|
||||
"login-attempts-help": "Ако опитите за вписване на потребител минат тази граница, акаунтът ще бъде заключен за определено време.",
|
||||
"lockout-duration": "Продължителност на заключването на акаунта (в минути)",
|
||||
"login-days": "Брой дни за помнене на сесията за вписване на потребителя",
|
||||
"login-days": "Продължителност на запомнянето на сесията за вписване на потребителя (в дни)",
|
||||
"password-expiry-days": "Изискване на промяна на паролата през определен период от дни",
|
||||
"session-time": "Продължителност на сесията",
|
||||
"session-time-days": "Дни",
|
||||
|
||||
@@ -48,8 +48,6 @@
|
||||
"unsub.cta": "Натиснете тук, за да промените тези настройки",
|
||||
"unsubscribe": "отписване",
|
||||
"unsub.success": "Повече няма да получавате е-писма от пощенския списък на <strong>%1</strong>",
|
||||
"unsub.failure.title": "Отписването не може да се извърши",
|
||||
"unsub.failure.message": "За съжаление не успяхме да Ви отпишем от пощенския списък, поради проблем с връзката. Можете, обаче, да промените предпочитанията си за е-писмата в <a href=\"%2\">потребителските си настройки</a>.<br /><br />(грешка: <code>%1</code>)",
|
||||
"banned.subject": "Вие бяхте блокиран(а) от %1",
|
||||
"banned.text1": "Потребителят %1 беше блокиран от %2.",
|
||||
"banned.text2": "Това блокиране ще е в сила до %1.",
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
{
|
||||
"invalid-data": "Грешни данни",
|
||||
"invalid-json": "Неправилен JSON",
|
||||
"wrong-parameter-type": "За свойството `%1` се очакваше стойност от тип %3, но вместо това беше получено %2",
|
||||
"required-parameters-missing": "Липсват задължителни параметри от това извикване към ППИ: %1",
|
||||
"not-logged-in": "Изглежда не сте се вписали в системата.",
|
||||
"account-locked": "Вашият акаунт беше заключен временно",
|
||||
"search-requires-login": "Търсенето изисква регистриран акаунт! Моля, впишете се или се регистрирайте!",
|
||||
@@ -11,7 +9,6 @@
|
||||
"invalid-tid": "Грешен идентификатор на тема",
|
||||
"invalid-pid": "Грешен идентификатор на публикация",
|
||||
"invalid-uid": "Грешен идентификатор на потребител",
|
||||
"invalid-mid": "Грешен идентификатор на съобщение в разговор",
|
||||
"invalid-date": "Трябва да бъде посочена правилна дата",
|
||||
"invalid-username": "Грешно потребителско име",
|
||||
"invalid-email": "Грешна е-поща",
|
||||
@@ -61,7 +58,6 @@
|
||||
"no-group": "Групата не съществува",
|
||||
"no-user": "Потребителят не съществува",
|
||||
"no-teaser": "Резюмето не съществува",
|
||||
"no-flag": "Докладът не съществува",
|
||||
"no-privileges": "Нямате достатъчно права за това действие.",
|
||||
"category-disabled": "Категорията е изключена",
|
||||
"topic-locked": "Темата е заключена",
|
||||
@@ -108,9 +104,6 @@
|
||||
"already-bookmarked": "Вече имате отметка към тази публикация",
|
||||
"already-unbookmarked": "Вече сте премахнали отметката си от тази публикация",
|
||||
"cant-ban-other-admins": "Не можете да блокирате другите администратори!",
|
||||
"cant-mute-other-admins": "Не можете да заглушавате другите администратори!",
|
||||
"user-muted-for-hours": "Вие бяхте заглушен(а). Ще можете да пускате публикации отново след %1 час(а)",
|
||||
"user-muted-for-minutes": "Вие бяхте заглушен(а). Ще можете да пускате публикации отново след %1 минута/и",
|
||||
"cant-make-banned-users-admin": "Не можете да давате администраторски права на блокирани потребители.",
|
||||
"cant-remove-last-admin": "Вие сте единственият администратор. Добавете друг потребител като администратор, преди да премахнете себе си като администратор",
|
||||
"account-deletion-disabled": "Изтриването на акаунт е забранено",
|
||||
@@ -149,6 +142,7 @@
|
||||
"invalid-chat-message": "Неправилно съобщение",
|
||||
"chat-message-too-long": "Съобщенията в разговор не може да бъдат по-дълги от %1 знака.",
|
||||
"cant-edit-chat-message": "Нямате право да редактирате това съобщение",
|
||||
"cant-remove-last-user": "Не можете да премахнете последния потребител",
|
||||
"cant-delete-chat-message": "Нямате право да изтриете това съобщение",
|
||||
"chat-edit-duration-expired": "Можете да редактирате съобщенията си в разговорите до %1 секунда/и, след като ги пуснете",
|
||||
"chat-delete-duration-expired": "Можете да изтривате съобщенията си в разговорите до %1 секунда/и след пускането им",
|
||||
@@ -158,23 +152,19 @@
|
||||
"already-voting-for-this-post": "Вече сте дали глас за тази публикация.",
|
||||
"reputation-system-disabled": "Системата за репутация е изключена.",
|
||||
"downvoting-disabled": "Отрицателното гласуване е изключено",
|
||||
"not-enough-reputation-to-chat": "Репутацията Ви трябва да бъде поне %1, за да участвате в разговори",
|
||||
"not-enough-reputation-to-upvote": "Репутацията Ви трябва да бъде поне %1, за да гласувате положително",
|
||||
"not-enough-reputation-to-downvote": "Репутацията Ви трябва да бъде поне %1, за да гласувате отрицателно",
|
||||
"not-enough-reputation-to-flag": "Репутацията Ви трябва да бъде поне %1, за да докладвате тази публикация",
|
||||
"not-enough-reputation-min-rep-website": "Репутацията Ви трябва да бъде поне %1, за да добавите уеб сайт",
|
||||
"not-enough-reputation-min-rep-aboutme": "Репутацията Ви трябва да бъде поне %1, за да добавите информация за себе си",
|
||||
"not-enough-reputation-min-rep-signature": "Репутацията Ви трябва да бъде поне %1, за да добавите подпис",
|
||||
"not-enough-reputation-min-rep-profile-picture": "Репутацията Ви трябва да бъде поне %1, за да добавите снимка на профила си",
|
||||
"not-enough-reputation-min-rep-cover-picture": "Репутацията Ви трябва да бъде поне %1, за да добавите снимка на корицата",
|
||||
"not-enough-reputation-to-downvote": "Нямате достатъчно репутация, за да гласувате отрицателно за тази публикация",
|
||||
"not-enough-reputation-to-flag": "Нямате достатъчно репутация, за да докладвате тази публикация",
|
||||
"not-enough-reputation-min-rep-website": "Нямате достатъчно репутация, за да добавите уеб сайт",
|
||||
"not-enough-reputation-min-rep-aboutme": "Нямате достатъчно репутация, за да добавите информация за себе си",
|
||||
"not-enough-reputation-min-rep-signature": "Нямате достатъчно репутация, за да добавите подпис",
|
||||
"not-enough-reputation-min-rep-profile-picture": "Нямате достатъчно репутация, за да добавите снимка на профила си",
|
||||
"not-enough-reputation-min-rep-cover-picture": "Нямате достатъчно репутация, за да добавите снимка на корицата",
|
||||
"post-already-flagged": "Вече сте докладвали тази публикация",
|
||||
"user-already-flagged": "Вече сте докладвали този потребител",
|
||||
"post-flagged-too-many-times": "Тази публикация вече е докладвана от други хора",
|
||||
"user-flagged-too-many-times": "Този потребител вече е докладван от други хора",
|
||||
"cant-flag-privileged": "Не можете да докладвате профилите или съдържанието от потребители с по-високи правомощия (модератори, глобални модератори, администратори)",
|
||||
"self-vote": "Не можете да гласувате за собствената си публикация",
|
||||
"too-many-upvotes-today": "Можете да гласувате положително не повече от %1 пъти на ден",
|
||||
"too-many-upvotes-today-user": "Можете да гласувате положително за потребител не повече от %1 пъти на ден",
|
||||
"too-many-downvotes-today": "Можете да гласувате отрицателно не повече от %1 пъти на ден",
|
||||
"too-many-downvotes-today-user": "Можете да гласувате отрицателно за потребител не повече от %1 пъти на ден",
|
||||
"reload-failed": "NodeBB срещна проблем при презареждането: „%1“. NodeBB ще продължи да поддържа съществуващите клиентски ресурси, но Вие трябва да отмените последните си действия преди презареждането.",
|
||||
@@ -205,8 +195,6 @@
|
||||
"no-connection": "Изглежда има проблем с връзката Ви с Интернет",
|
||||
"socket-reconnect-failed": "В момента сървърът е недостъпен. Натиснете тук, за да опитате отново, или опитайте пак по-късно.",
|
||||
"plugin-not-whitelisted": "Добавката не може да бъде инсталирана – само добавки, одобрени от пакетния мениджър на NodeBB могат да бъдат инсталирани чрез ACP",
|
||||
"plugins-set-in-configuration": "Не можете да променяте състоянието на добавката, тъй като то се определя по време на работата ѝ (чрез config.json, променливи на средата или аргументи при изпълнение). Вместо това може да промените конфигурацията.",
|
||||
"theme-not-set-in-configuration": "Когато определяте активните добавки в конфигурацията, промяната на темите изисква да се добави новата тема към активните добавки, преди актуализирането ѝ в ACP",
|
||||
"topic-event-unrecognized": "Събитието „%1“ на темата е неизвестно",
|
||||
"cant-set-child-as-parent": "Дъщерна категория не може да се зададе като базова такава",
|
||||
"cant-set-self-as-parent": "Категорията не може да се зададе като базова категория на себе си",
|
||||
|
||||
@@ -38,7 +38,6 @@
|
||||
"delete-post": "Изтриване на публикацията",
|
||||
"purge-post": "Изчистване на публикацията",
|
||||
"restore-post": "Възстановяване на публикацията",
|
||||
"delete": "Изтриване на доклада",
|
||||
|
||||
"user-view": "Преглед на профила",
|
||||
"user-edit": "Редактиране на профила",
|
||||
@@ -47,10 +46,8 @@
|
||||
"add-note": "Добавяне на бележка",
|
||||
"no-notes": "Няма споделени бележки.",
|
||||
"delete-note-confirm": "Наистина ли искате да изтриете тази бележка към доклада?",
|
||||
"delete-flag-confirm": "Наистина ли искате да изтриете този доклад?",
|
||||
"note-added": "Бележката е добавена",
|
||||
"note-deleted": "Бележката е изтрита",
|
||||
"flag-deleted": "Докладът е изтрит",
|
||||
|
||||
"history": "Акаунт и история на докладванията",
|
||||
"no-history": "Няма история на доклада.",
|
||||
@@ -84,6 +81,5 @@
|
||||
"bulk-actions": "Групови действия",
|
||||
"bulk-resolve": "Разрешаване на доклад(и)",
|
||||
"bulk-success": "%1 доклада са обновени",
|
||||
"flagged-timeago-readable": "Докладвано <span class=\"timeago\" title=\"%1\"></span> (%2)",
|
||||
"auto-flagged": "[Авт. докладвано] Получени %1 отрицателни гласа."
|
||||
"flagged-timeago-readable": "Докладвано <span class=\"timeago\" title=\"%1\"></span> (%2)"
|
||||
}
|
||||
@@ -23,7 +23,7 @@
|
||||
"close": "Затваряне",
|
||||
"pagination": "Странициране",
|
||||
"pagination.out_of": "%1 от %2",
|
||||
"pagination.enter_index": "Към публикация номер",
|
||||
"pagination.enter_index": "Въведете номер",
|
||||
"header.admin": "Администратор",
|
||||
"header.categories": "Категории",
|
||||
"header.recent": "Скорошни",
|
||||
@@ -56,7 +56,6 @@
|
||||
"posts": "Публ.",
|
||||
"x-posts": "%1 публикации",
|
||||
"best": "Най-добри",
|
||||
"controversial": "Противоречиви",
|
||||
"votes": "Гласове",
|
||||
"x-votes": "%1 гласа",
|
||||
"voters": "Гласували",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"username-email": "Потребителско име / е-поща",
|
||||
"username": "Потребителско име",
|
||||
"email": "Е-поща",
|
||||
"remember_me": "Запомнете ме?",
|
||||
"forgot_password": "Забравена парола?",
|
||||
"alternative_logins": "Други начини за вписване",
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
{
|
||||
"chat.chatting_with": "Разговор с",
|
||||
"chat.placeholder": "Въведете съобщение тук или пуснете снимки и натиснете Ентер за изпращане",
|
||||
"chat.placeholder": "Въведете съобщението тук и натиснете Ентер за изпращане",
|
||||
"chat.scroll-up-alert": "В момента разглеждате по-стари съобщения. Щракнете тук, за да се прехвърлите към най-новото съобщение.",
|
||||
"chat.send": "Изпращане",
|
||||
"chat.no_active": "Нямате текущи разговори.",
|
||||
"chat.user_typing": "%1 пише...",
|
||||
"chat.user_has_messaged_you": "%1 Ви написа съобщение.",
|
||||
"chat.see_all": "Всички разговори",
|
||||
"chat.mark_all_read": "Отбелязване на всички като прочетени",
|
||||
"chat.see_all": "Вижте всички разговори",
|
||||
"chat.mark_all_read": "Отбелязване на всички разговори като прочетени",
|
||||
"chat.no-messages": "Моля, изберете получател, за да видите историята на съобщенията",
|
||||
"chat.no-users-in-room": "Няма потребители в тази стая",
|
||||
"chat.recent-chats": "Скорошни разговори",
|
||||
@@ -68,8 +68,6 @@
|
||||
"bootbox.ok": "Добре",
|
||||
"bootbox.cancel": "Отказ",
|
||||
"bootbox.confirm": "Потвърждаване",
|
||||
"bootbox.submit": "Публикуване",
|
||||
"bootbox.send": "Изпращане",
|
||||
"cover.dragging_title": "Наместване на снимката",
|
||||
"cover.dragging_message": "Преместете снимката на желаното положение и натиснете „Запазване“",
|
||||
"cover.saved": "Снимката и мястото ѝ бяха запазени",
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"title": "Известия",
|
||||
"no_notifs": "Нямате нови известия",
|
||||
"see_all": "Всички известия",
|
||||
"mark_all_read": "Отбелязване на всички като прочетени",
|
||||
"see_all": "Показване на всички известия",
|
||||
"mark_all_read": "Отбелязване на всички известия като прочетени",
|
||||
"back_to_home": "Назад към %1",
|
||||
"outgoing_link": "Външна връзка",
|
||||
"outgoing_link_message": "Напускате %1",
|
||||
@@ -50,7 +50,6 @@
|
||||
"users-csv-exported": "Потребителите са изнесени във формат „csv“, щракнете за сваляне",
|
||||
"post-queue-accepted": "Вашата публикация, която чакаше в опашката, беше приета. Натиснете тук, за да я видите.",
|
||||
"post-queue-rejected": "Вашата публикация, която чакаше в опашката, беше отхвърлена.",
|
||||
"post-queue-notify": "Публикация, чакаща в опашката, получи известие:<br/>„%1“",
|
||||
"email-confirmed": "Е-пощата беше потвърдена",
|
||||
"email-confirmed-message": "Благодарим Ви, че потвърдихте е-пощата си. Акаунтът Ви е вече напълно активиран.",
|
||||
"email-confirm-error-message": "Възникна проблем при потвърждаването на е-пощата Ви. Може кодът да е грешен или давността му да е изтекла.",
|
||||
|
||||
@@ -54,7 +54,6 @@
|
||||
"account/upvoted": "Публикации, получили положителен глас от %1",
|
||||
"account/downvoted": "Публикации, получили отрицателен глас от %1",
|
||||
"account/best": "Най-добрите публикации от %1",
|
||||
"account/controversial": "Противоречиви публикации от %1",
|
||||
"account/blocks": "Блокирани потребители за %1",
|
||||
"account/uploads": "Качвания от %1",
|
||||
"account/sessions": "Сесии на вписване",
|
||||
|
||||
@@ -14,18 +14,5 @@
|
||||
"reply": "Отговор",
|
||||
"topic": "Тема",
|
||||
"accept": "Приемане",
|
||||
"reject": "Отказване",
|
||||
"remove": "Премахване",
|
||||
"notify": "Известяване",
|
||||
"notify-user": "Известяване на потребителя",
|
||||
"confirm-reject": "Искате ли да отхвърлите тази публикация?",
|
||||
"bulk-actions": "Групови действия",
|
||||
"accept-all": "Приемане на всички",
|
||||
"accept-selected": "Приемане на избраните",
|
||||
"reject-all": "Отхвърляне на всички",
|
||||
"reject-all-confirm": "Наистина ли искате да отхвърлите всички публикации?",
|
||||
"reject-selected": "Отхвърляне на избраните",
|
||||
"reject-selected-confirm": "Наистина ли искате да отхвърлите %1 избрани публикации?",
|
||||
"bulk-accept-success": "Одобрени публикации: %1",
|
||||
"bulk-reject-success": "Отхвърлени публикации: %1"
|
||||
"reject": "Отказване"
|
||||
}
|
||||
@@ -48,7 +48,6 @@
|
||||
"moved-from-by": "Преместена от %1 от",
|
||||
"queued-by": "Публикацията е добавена в опашката за одобрение →",
|
||||
"backlink": "Спомената от",
|
||||
"forked-by": "Разделена от",
|
||||
"bookmark_instructions": "Щракнете тук, за да се върнете към последно прочетената публикация в тази тема.",
|
||||
"flag-post": "Докладване на тази публикация",
|
||||
"flag-user": "Докладване на този потребител",
|
||||
@@ -113,7 +112,6 @@
|
||||
"bookmark": "Отметка",
|
||||
"bookmarks": "Отметки",
|
||||
"bookmarks.has_no_bookmarks": "Все още не сте си запазвали отметки към никакви публикации.",
|
||||
"copy-permalink": "Копиране на постоянна връзка",
|
||||
"loading_more_posts": "Зареждане на още публикации",
|
||||
"move_topic": "Преместване на темата",
|
||||
"move_topics": "Преместване на темите",
|
||||
@@ -182,7 +180,5 @@
|
||||
"timeago_earlier": "%1 по-рано",
|
||||
"first-post": "Първа публикация",
|
||||
"last-post": "Последна публикация",
|
||||
"go-to-my-next-post": "Към следващата ми публикация",
|
||||
"no-more-next-post": "Нямате повече публикации в тази тема",
|
||||
"post-quick-reply": "Пускане на бърза публикация"
|
||||
}
|
||||
@@ -1,6 +1,5 @@
|
||||
{
|
||||
"banned": "Блокиран",
|
||||
"muted": "Заглушен",
|
||||
"offline": "Извън линия",
|
||||
"deleted": "Изтрит",
|
||||
"username": "Потребителско име",
|
||||
@@ -13,8 +12,6 @@
|
||||
"ban_account": "Блокиране на акаунта",
|
||||
"ban_account_confirm": "Наистина ли искате да блокирате този потребител?",
|
||||
"unban_account": "Деблокиране на акаунта",
|
||||
"mute_account": "Заглушаване на акаунта",
|
||||
"unmute_account": "Премахване на заглушаването на акаунта",
|
||||
"delete_account": "Изтриване на акаунта",
|
||||
"delete_account_as_admin": "Изтриване на <strong>акаунта</strong>",
|
||||
"delete_content": "Изтриване на <strong>съдържанието</strong> на акаунта",
|
||||
@@ -108,7 +105,7 @@
|
||||
"has_no_ignored_topics": "Този потребител не е пренебрегнал нито една тема досега.",
|
||||
"has_no_upvoted_posts": "Този потребител не е гласувал положително досега.",
|
||||
"has_no_downvoted_posts": "Този потребител не е гласувал отрицателно досега.",
|
||||
"has_no_controversial_posts": "Този потребител няма публикации с отрицателни гласове засега.",
|
||||
"has_no_voted_posts": "Този потребител не е гласувал досега.",
|
||||
"has_no_blocks": "Не сте блокирали никого.",
|
||||
"email_hidden": "Е-пощата е скрита",
|
||||
"hidden": "скрито",
|
||||
@@ -157,11 +154,6 @@
|
||||
"info.banned-permanently": "Блокиран за постоянно",
|
||||
"info.banned-reason-label": "Причина",
|
||||
"info.banned-no-reason": "Няма посочена причина.",
|
||||
"info.mute-history": "Скорошна история на заглушаванията",
|
||||
"info.no-mute-history": "Този потребител никога не е бил заглушаван",
|
||||
"info.muted-until": "Заглушен до %1",
|
||||
"info.muted-expiry": "Давност",
|
||||
"info.muted-no-reason": "Няма посочена причина.",
|
||||
"info.username-history": "История на потребителските имена",
|
||||
"info.email-history": "Историята на е-пощите",
|
||||
"info.moderation-note": "Модераторска бележка",
|
||||
@@ -192,8 +184,6 @@
|
||||
"consent.export_posts": "Изнасяне на публикациите (.csv)",
|
||||
"consent.export-posts-success": "Изнасяне на публикациите… Ще получите известие, когато е готово.",
|
||||
"emailUpdate.intro": "Въведете е-пощата си по-долу. Този форум използва е-пощата за планирани резюмета и известия, както и за възстановяване на акаунта, в случай на забравена парола.",
|
||||
"emailUpdate.optional": "<strong>Това поле не е задължително</strong>. Не сте длъжен/на да предоставяте адрес на е-поща, но без проверена е-поща, няма да можете да възстановите акаунта си в случай на проблем, нито ще можете да се вписвате с е-пощата си.",
|
||||
"emailUpdate.required": "<strong>Това поле е задължително</strong>.",
|
||||
"emailUpdate.change-instructions": "Ще Ви изпратим е-писмо за потвърждение на посочената е-поща, което ще съдържа уникална връзка. Щом последвате тази връзка, притежанието Ви на тази е-поща ще бъде потвърдено и тя ще бъде свързана с акаунта Ви. Ще можете да промените тази е-поща по всяко време, от страницата на акаунта си.",
|
||||
"emailUpdate.password-challenge": "Въведете паролата си, за да потвърдите, че акаунтът е Ваш."
|
||||
"emailUpdate.optional": "<strong>Това поле не е задължително</strong>. Не сте длъжен/на да ни давате адреса на е-пощата си, но ако нямате потвърдена е-поща, няма да можете да възстановите достъпа до акаунта си в случай на проблем.",
|
||||
"emailUpdate.change-instructions": "Ще Ви изпратим е-писмо за потвърждение на посочената е-поща, което ще съдържа уникална връзка. Щом последвате тази връзка, притежанието Ви на тази е-поща ще бъде потвърдено и тя ще бъде свързана с акаунта Ви. Ще можете да промените тази е-поща по всяко време, от страницата на акаунта си."
|
||||
}
|
||||
@@ -5,7 +5,6 @@
|
||||
"most_flags": "С най-много доклади",
|
||||
"search": "Търсене",
|
||||
"enter_username": "Въведете потребителско име, което да потърсите",
|
||||
"search-user-for-chat": "Потърсете потребител, с когото да започнете разговор",
|
||||
"load_more": "Зареждане на още",
|
||||
"users-found-search-took": "Намерени са %1 потребител(и)! Търсенето отне %2 секунди.",
|
||||
"filter-by": "Филтриране",
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
# The files here are not meant to be edited directly
|
||||
|
||||
Please see the → [Internalization README](../README.md).
|
||||
@@ -3,9 +3,5 @@
|
||||
"alert.confirm-restart": "আপনি কি নিশ্চিত যে আপনি NodeBB রিস্টার্ট করতে চান ?",
|
||||
|
||||
"acp-title": "%1 | NodeBB এডমিন কন্ট্রোল প্যানেল",
|
||||
"settings-header-contents": "কনটেন্টস",
|
||||
"changes-saved": "Changes Saved",
|
||||
"changes-saved-message": "Your changes to the NodeBB configuration have been saved.",
|
||||
"changes-not-saved": "Changes Not Saved",
|
||||
"changes-not-saved-message": "NodeBB encountered a problem saving your changes. (%1)"
|
||||
"settings-header-contents": "কনটেন্টস"
|
||||
}
|
||||
@@ -1,10 +1,8 @@
|
||||
{
|
||||
"administrators": "Administrators",
|
||||
"global-moderators": "Global Moderators",
|
||||
"moderators": "Moderators",
|
||||
"no-global-moderators": "No Global Moderators",
|
||||
"no-sub-categories": "No subcategories",
|
||||
"subcategories": "%1 subcategories",
|
||||
"moderators-of-category": "%1 Moderators",
|
||||
"no-moderators": "No Moderators",
|
||||
"add-administrator": "Add Administrator",
|
||||
"add-global-moderator": "Add Global Moderator",
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
"upload-files": "Upload Files",
|
||||
"signature": "Signature",
|
||||
"ban": "Ban",
|
||||
"mute": "Mute",
|
||||
"invite": "Invite",
|
||||
"search-content": "Search Content",
|
||||
"search-users": "Search Users",
|
||||
|
||||
@@ -18,8 +18,7 @@
|
||||
"download-csv": "Download CSV",
|
||||
"manage-groups": "Manage Groups",
|
||||
"add-group": "Add Group",
|
||||
"create": "Create User",
|
||||
"invite": "Invite by Email",
|
||||
"invite": "Invite",
|
||||
"new": "New User",
|
||||
"filter-by": "Filter by",
|
||||
"pills.unvalidated": "Not Validated",
|
||||
@@ -63,7 +62,7 @@
|
||||
"create.password": "Password",
|
||||
"create.password-confirm": "Confirm Password",
|
||||
|
||||
"temp-ban.length": "Length",
|
||||
"temp-ban.length": "Ban Length",
|
||||
"temp-ban.reason": "Reason <span class=\"text-muted\">(Optional)</span>",
|
||||
"temp-ban.hours": "Hours",
|
||||
"temp-ban.days": "Days",
|
||||
@@ -91,7 +90,6 @@
|
||||
"alerts.validate-email-success": "Emails validated",
|
||||
"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.password-reset-email-sent": "Password reset email sent.",
|
||||
"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-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>",
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
"logout": "Log out",
|
||||
"view-forum": "View Forum",
|
||||
|
||||
"search.placeholder": "Search settings",
|
||||
"search.placeholder": "Press "/" to search for settings",
|
||||
"search.no-results": "No results...",
|
||||
"search.search-forum": "Search the forum for <strong></strong>",
|
||||
"search.keep-typing": "Type more to see results...",
|
||||
|
||||
@@ -15,10 +15,6 @@
|
||||
"headers.acac": "Access-Control-Allow-Credentials",
|
||||
"headers.acam": "Access-Control-Allow-Methods",
|
||||
"headers.acah": "Access-Control-Allow-Headers",
|
||||
"headers.coep": "Cross-Origin-Embedder-Policy",
|
||||
"headers.coep-help": "When enabled (default), will set the header to <code>require-corp</code>",
|
||||
"headers.coop": "Cross-Origin-Opener-Policy",
|
||||
"headers.corp": "Cross-Origin-Resource-Policy",
|
||||
"hsts": "Strict Transport Security",
|
||||
"hsts.enabled": "Enabled HSTS (recommended)",
|
||||
"hsts.maxAge": "HSTS Max Age",
|
||||
|
||||
@@ -10,10 +10,9 @@
|
||||
"smtp-transport-help": "You can select from a list of well-known services or enter a custom one.",
|
||||
"smtp-transport.service": "Select a service",
|
||||
"smtp-transport.service-custom": "Custom Service",
|
||||
"smtp-transport.service-help": "Select a service name above in order to use the known information about it. Alternatively, select "Custom Service" and enter the details below.",
|
||||
"smtp-transport.gmail-warning1": "If you are using GMail as your email provider, you will have to generate an "App Password" in order for NodeBB to authenticate successfully. You can generate one at the <a href=\"https://myaccount.google.com/apppasswords\">App Passwords <i class=\"fa fa-external-link\"></i></a> page.",
|
||||
"smtp-transport.gmail-warning2": "For more information about this workaround, <a href=\"https://nodemailer.com/usage/using-gmail/\">please consult this NodeMailer article <i class=\"fa fa-external-link\"></i></a> on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. <a href=\"../extend/plugins\">Browse available plugins here</a>.",
|
||||
"smtp-transport.auto-enable-toast": "It looks like you're configuring an SMTP transport. We enabled the \"SMTP Transport\" option for you.",
|
||||
"smtp-transport.service-help": "Select a service name above in order to use the known information about it. Alternatively, select 'Custom Service' and enter the details below.",
|
||||
"smtp-transport.gmail-warning1": "There have been reports of the Gmail service not working on accounts with heightened security. In those scenarios, you will have to <a href=\"https://www.google.com/settings/security/lesssecureapps\">configure your GMail account to allow less secure apps</a>.",
|
||||
"smtp-transport.gmail-warning2": "For more information about this workaround, <a href=\"https://nodemailer.com/usage/using-gmail/\">please consult this NodeMailer article on the issue.</a> An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. <a href=\"../extend/plugins\">Browse available plugins here</a>.",
|
||||
"smtp-transport.host": "SMTP Host",
|
||||
"smtp-transport.port": "SMTP Port",
|
||||
"smtp-transport.security": "Connection security",
|
||||
@@ -39,11 +38,9 @@
|
||||
"subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. <code>0</code> for midnight, <code>17</code> for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.<br /> The approximate server time is: <span id=\"serverTime\"></span><br /> The next daily digest is scheduled to be sent <span id=\"nextDigestTime\"></span>",
|
||||
"notifications.remove-images": "Remove images from email notifications",
|
||||
"require-email-address": "Require new users to specify an email address",
|
||||
"require-email-address-warning": "By default, users can opt-out of entering an email address by leaving the field blank. Enabling this option means they have to enter an email address in order to proceed with registration. <strong>It does not ensure user will enter a real email address, nor even an address they own.</strong>",
|
||||
"send-validation-email": "Send validation emails when an email is added or changed",
|
||||
"require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. <strong>It does not ensure user will enter a real email address, nor even an address they own.</strong>",
|
||||
"include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails",
|
||||
"include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). <strong>Enable this setting at your own risk</strong> – sending emails to unverified addresses may be a violation of regional anti-spam laws.",
|
||||
"prompt": "Prompt users to enter or confirm their emails",
|
||||
"prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen.",
|
||||
"sendEmailToBanned": "Send emails to users even if they have been banned"
|
||||
"prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen."
|
||||
}
|
||||
|
||||
@@ -4,13 +4,9 @@
|
||||
"disable-down-voting": "Disable Down Voting",
|
||||
"votes-are-public": "All Votes Are Public",
|
||||
"thresholds": "Activity Thresholds",
|
||||
"min-rep-upvote": "Minimum reputation to upvote posts",
|
||||
"upvotes-per-day": "Upvotes per day (set to 0 for unlimited upvotes)",
|
||||
"upvotes-per-user-per-day": "Upvotes per user per day (set to 0 for unlimited upvotes)",
|
||||
"min-rep-downvote": "Minimum reputation to downvote posts",
|
||||
"downvotes-per-day": "Downvotes per day (set to 0 for unlimited downvotes)",
|
||||
"downvotes-per-user-per-day": "Downvotes per user per day (set to 0 for unlimited downvotes)",
|
||||
"min-rep-chat": "Minimum reputation to send chat messages",
|
||||
"min-rep-flag": "Minimum reputation to flag posts",
|
||||
"min-rep-website": "Minimum reputation to add \"Website\" to user profile",
|
||||
"min-rep-aboutme": "Minimum reputation to add \"About me\" to user profile",
|
||||
@@ -22,6 +18,5 @@
|
||||
"flags.limit-per-target": "Maximum number of times something can be flagged",
|
||||
"flags.limit-per-target-placeholder": "Default: 0",
|
||||
"flags.limit-per-target-help": "When a post or user is flagged multiple times, each additional flag is considered a "report" and added to the original flag. Set this option to a number other than zero to limit the number of reports an item can receive.",
|
||||
"flags.auto-flag-on-downvote-threshold": "Number of downvotes to auto flag posts (Set to 0 to disable, default: 0)",
|
||||
"flags.auto-resolve-on-ban": "Automatically resolve all of a user's tickets when they are banned"
|
||||
}
|
||||
@@ -1,11 +1,8 @@
|
||||
{
|
||||
"posts": "Posts",
|
||||
"orphans": "Orphaned Files",
|
||||
"allow-files": "Allow users to upload regular files",
|
||||
"private": "Make uploaded files private",
|
||||
"strip-exif-data": "Strip EXIF Data",
|
||||
"preserve-orphaned-uploads": "Keep uploaded files on disk after a post is purged",
|
||||
"orphanExpiryDays": "Days to keep orphaned files",
|
||||
"orphanExpiryDays-help": "After this many days, orphaned uploads will be deleted from the file system.<br />Set 0 or leave blank to disable.",
|
||||
"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",
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
{
|
||||
"authentication": "Authentication",
|
||||
"require-email-confirmation": "Require Email Confirmation",
|
||||
"email-confirm-interval": "User may not resend a confirmation email until",
|
||||
"email-confirm-email2": "minutes have elapsed",
|
||||
"allow-login-with": "Allow login with",
|
||||
"allow-login-with.username-email": "Username or Email",
|
||||
"allow-login-with.username": "Username Only",
|
||||
"allow-login-with.email": "Email Only",
|
||||
"account-settings": "Account Settings",
|
||||
"gdpr_enabled": "Enable GDPR consent collection",
|
||||
"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.",
|
||||
|
||||
@@ -48,8 +48,6 @@
|
||||
"unsub.cta": "সেটিংসগুলো পরিবর্তন করতে এখানে ক্লিক করুন",
|
||||
"unsubscribe": "unsubscribe",
|
||||
"unsub.success": "You will no longer receive emails from the <strong>%1</strong> mailing list",
|
||||
"unsub.failure.title": "Unable to unsubscribe",
|
||||
"unsub.failure.message": "Unfortunately, we were not able to unsubscribe you from the mailing list, as there was an issue with the link. However, you can alter your email preferences by going to <a href=\"%2\">your user settings</a>.<br /><br />(error: <code>%1</code>)",
|
||||
"banned.subject": "আপনি %1 এ নিষিদ্ধ হয়েছেন",
|
||||
"banned.text1": "ব্যবহারকারি %1 %2 তে নিষিদ্ধ হয়েছেন",
|
||||
"banned.text2": "This ban will last until %1.",
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
{
|
||||
"invalid-data": "ভুল তথ্য",
|
||||
"invalid-json": "Invalid JSON",
|
||||
"wrong-parameter-type": "A value of type %3 was expected for property `%1`, but %2 was received instead",
|
||||
"required-parameters-missing": "Required parameters were missing from this API call: %1",
|
||||
"not-logged-in": "আপনি লগিন করেননি",
|
||||
"account-locked": "আপনার অ্যাকাউন্ট সাময়িকভাবে লক করা হয়েছে",
|
||||
"search-requires-login": "Searching requires an account - please login or register.",
|
||||
@@ -11,7 +9,6 @@
|
||||
"invalid-tid": "ভুল টপিক নাম্বার",
|
||||
"invalid-pid": "ভুল পোস্ট নাম্বার",
|
||||
"invalid-uid": "ভুল ব্যবহারকারী নাম্বার",
|
||||
"invalid-mid": "Invalid Chat Message ID",
|
||||
"invalid-date": "A valid date must be provided",
|
||||
"invalid-username": "ভুল ইউজারনেম",
|
||||
"invalid-email": "ভুল ইমেইল",
|
||||
@@ -61,7 +58,6 @@
|
||||
"no-group": "এই গ্রুপ অস্তিত্বহীন",
|
||||
"no-user": "এই নামে কোন সদস্য নেই",
|
||||
"no-teaser": "টিজারটি খুজে পাওয়া যায় নি",
|
||||
"no-flag": "Flag does not exist",
|
||||
"no-privileges": "এই কাজটির জন্য আপনার পর্যাপ্ত অধিকার নেই",
|
||||
"category-disabled": "বিভাগটি নিষ্ক্রিয়",
|
||||
"topic-locked": "টপিক বন্ধ",
|
||||
@@ -108,9 +104,6 @@
|
||||
"already-bookmarked": "You have already bookmarked this post",
|
||||
"already-unbookmarked": "You have already unbookmarked this post",
|
||||
"cant-ban-other-admins": "আপনি অন্য এ্যাডমিনদের নিষিদ্ধ করতে পারেন না!",
|
||||
"cant-mute-other-admins": "You can't mute other admins!",
|
||||
"user-muted-for-hours": "You have been muted, you will be able to post in %1 hour(s)",
|
||||
"user-muted-for-minutes": "You have been muted, you will be able to post in %1 minute(s)",
|
||||
"cant-make-banned-users-admin": "You can't make banned users admin.",
|
||||
"cant-remove-last-admin": "You are the only administrator. Add another user as an administrator before removing yourself as admin",
|
||||
"account-deletion-disabled": "Account deletion is disabled",
|
||||
@@ -149,6 +142,7 @@
|
||||
"invalid-chat-message": "Invalid chat message",
|
||||
"chat-message-too-long": "Chat messages can not be longer than %1 characters.",
|
||||
"cant-edit-chat-message": "You are not allowed to edit this message",
|
||||
"cant-remove-last-user": "You can't remove the last user",
|
||||
"cant-delete-chat-message": "You are not allowed to delete this message",
|
||||
"chat-edit-duration-expired": "You are only allowed to edit chat messages for %1 second(s) after posting",
|
||||
"chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting",
|
||||
@@ -158,23 +152,19 @@
|
||||
"already-voting-for-this-post": "You have already voted for this post.",
|
||||
"reputation-system-disabled": "সম্মাননা ব্যাবস্থা নিস্ক্রীয় রাখা হয়েছে",
|
||||
"downvoting-disabled": "ঋণাত্মক ভোট নিস্ক্রীয় রাখা হয়েছে।",
|
||||
"not-enough-reputation-to-chat": "You need %1 reputation to chat",
|
||||
"not-enough-reputation-to-upvote": "You need %1 reputation to upvote",
|
||||
"not-enough-reputation-to-downvote": "You need %1 reputation to downvote",
|
||||
"not-enough-reputation-to-flag": "You need %1 reputation to flag this post",
|
||||
"not-enough-reputation-min-rep-website": "You need %1 reputation to add a website",
|
||||
"not-enough-reputation-min-rep-aboutme": "You need %1 reputation to add an about me",
|
||||
"not-enough-reputation-min-rep-signature": "You need %1 reputation to add a signature",
|
||||
"not-enough-reputation-min-rep-profile-picture": "You need %1 reputation to add a profile picture",
|
||||
"not-enough-reputation-min-rep-cover-picture": "You need %1 reputation to add a cover picture",
|
||||
"not-enough-reputation-to-downvote": "আপনার এই পোস্ট downvote করার জন্য পর্যাপ্ত সম্মাননা নেই",
|
||||
"not-enough-reputation-to-flag": "এই পোষ্টকে ফ্লাগ করার জন্য আপনার পর্যাপ্ত সম্মাননা নেই",
|
||||
"not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website",
|
||||
"not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me",
|
||||
"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",
|
||||
"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",
|
||||
"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-upvotes-today": "You can only upvote %1 times a day",
|
||||
"too-many-upvotes-today-user": "You can only upvote a user %1 times a day",
|
||||
"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\" রিলোড করতে সমস্যা হয়েছে। রিলোডের পূর্বে যা করা হয়েছিল সেটি আনডু করা সমীচীন। ",
|
||||
@@ -205,8 +195,6 @@
|
||||
"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",
|
||||
"plugins-set-in-configuration": "You are not allowed to change plugin state as they are defined at runtime (config.json, environmental variables or terminal arguments), please modify the configuration instead.",
|
||||
"theme-not-set-in-configuration": "When defining active plugins in configuration, changing themes requires adding the new theme to the list of active plugins before updating it in the ACP",
|
||||
"topic-event-unrecognized": "Topic event '%1' unrecognized",
|
||||
"cant-set-child-as-parent": "Can't set child as parent category",
|
||||
"cant-set-self-as-parent": "Can't set self as parent category",
|
||||
|
||||
@@ -38,7 +38,6 @@
|
||||
"delete-post": "Delete Post",
|
||||
"purge-post": "Purge Post",
|
||||
"restore-post": "Restore Post",
|
||||
"delete": "Delete Flag",
|
||||
|
||||
"user-view": "View Profile",
|
||||
"user-edit": "Edit Profile",
|
||||
@@ -47,10 +46,8 @@
|
||||
"add-note": "Add Note",
|
||||
"no-notes": "No shared notes.",
|
||||
"delete-note-confirm": "Are you sure you want to delete this flag note?",
|
||||
"delete-flag-confirm": "Are you sure you want to delete this flag?",
|
||||
"note-added": "Note Added",
|
||||
"note-deleted": "Note Deleted",
|
||||
"flag-deleted": "Flag Deleted",
|
||||
|
||||
"history": "Account & Flag History",
|
||||
"no-history": "No flag history.",
|
||||
@@ -84,6 +81,5 @@
|
||||
"bulk-actions": "Bulk Actions",
|
||||
"bulk-resolve": "Resolve Flag(s)",
|
||||
"bulk-success": "%1 flags updated",
|
||||
"flagged-timeago-readable": "Flagged <span class=\"timeago\" title=\"%1\"></span> (%2)",
|
||||
"auto-flagged": "[Auto Flagged] Received %1 downvotes."
|
||||
"flagged-timeago-readable": "Flagged <span class=\"timeago\" title=\"%1\"></span> (%2)"
|
||||
}
|
||||
@@ -23,7 +23,7 @@
|
||||
"close": "বন্ধ",
|
||||
"pagination": "পাতা নং",
|
||||
"pagination.out_of": "%2 এর মাঝে %1",
|
||||
"pagination.enter_index": "Go to post index",
|
||||
"pagination.enter_index": "সূচক লিখুন",
|
||||
"header.admin": "অ্যাডমিন",
|
||||
"header.categories": "বিভাগ",
|
||||
"header.recent": "সাম্প্রতিক",
|
||||
@@ -56,7 +56,6 @@
|
||||
"posts": "পোস্টগুলি",
|
||||
"x-posts": "%1 posts",
|
||||
"best": "Best",
|
||||
"controversial": "Controversial",
|
||||
"votes": "Votes",
|
||||
"x-votes": "%1 votes",
|
||||
"voters": "Voters",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"username-email": "ইউজারনেম / ইমেইল",
|
||||
"username": "ইউজারনেম",
|
||||
"email": "ইমেইল",
|
||||
"remember_me": "মনে রাখুন",
|
||||
"forgot_password": "পাসওয়ার্ড ভুলে গিয়েছেন?",
|
||||
"alternative_logins": "বিকল্প প্রবেশ",
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
{
|
||||
"chat.chatting_with": "Chat with",
|
||||
"chat.placeholder": "Type chat message here, drag & drop images, press enter to send",
|
||||
"chat.placeholder": "এখানে আপনার বার্তা লিখুন। পাঠানোর জন্য Enter চাপুন",
|
||||
"chat.scroll-up-alert": "You are looking at older messages, click here to go to most recent message.",
|
||||
"chat.send": "প্রেরন করুন",
|
||||
"chat.no_active": "আপনার কোন সচল কথোপকথন নেই",
|
||||
"chat.user_typing": "%1 লিখছেন",
|
||||
"chat.user_has_messaged_you": "%1 আপনাকে বার্তা পাঠিয়েছেন",
|
||||
"chat.see_all": "All chats",
|
||||
"chat.mark_all_read": "Mark all read",
|
||||
"chat.see_all": "See all chats",
|
||||
"chat.mark_all_read": "Mark all chats read",
|
||||
"chat.no-messages": "মেসেজ হিস্টোরী দেখতে প্রাপক নির্বাচন করুন",
|
||||
"chat.no-users-in-room": "No users in this room",
|
||||
"chat.recent-chats": "সাম্প্রতিক চ্যাটসমূহ",
|
||||
@@ -68,8 +68,6 @@
|
||||
"bootbox.ok": "OK",
|
||||
"bootbox.cancel": "Cancel",
|
||||
"bootbox.confirm": "Confirm",
|
||||
"bootbox.submit": "Submit",
|
||||
"bootbox.send": "Send",
|
||||
"cover.dragging_title": "Cover Photo Positioning",
|
||||
"cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
|
||||
"cover.saved": "Cover photo image and position saved",
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"title": "বিজ্ঞপ্তিগুলো",
|
||||
"no_notifs": "আপনার নতুন কোন বিজ্ঞপ্তি নেই",
|
||||
"see_all": "All notifications",
|
||||
"mark_all_read": "Mark all read",
|
||||
"see_all": "See all notifications",
|
||||
"mark_all_read": "Mark all notifications read",
|
||||
"back_to_home": "ফিরুন %1",
|
||||
"outgoing_link": "বহির্গামী লিঙ্ক",
|
||||
"outgoing_link_message": "You are now leaving %1",
|
||||
@@ -50,7 +50,6 @@
|
||||
"users-csv-exported": "Users csv exported, click to download",
|
||||
"post-queue-accepted": "Your queued post has been accepted. Click here to see your post.",
|
||||
"post-queue-rejected": "Your queued post has been rejected.",
|
||||
"post-queue-notify": "Queued post received a notification:<br/>\"%1\"",
|
||||
"email-confirmed": "ইমেইল নিশ্চিত করা হয়েছে",
|
||||
"email-confirmed-message": "আপনার ইমেইল যাচাই করার জন্য আপনাকে ধন্যবাদ। আপনার অ্যাকাউন্টটি এখন সম্পূর্ণরূপে সক্রিয়।",
|
||||
"email-confirm-error-message": "আপনার ইমেল ঠিকানার বৈধতা যাচাইয়ে একটি সমস্যা হয়েছে। সম্ভবত কোডটি ভুল ছিল অথবা কোডের মেয়াদ শেষ হয়ে গিয়েছে।",
|
||||
|
||||
@@ -54,7 +54,6 @@
|
||||
"account/upvoted": "Posts upvoted by %1",
|
||||
"account/downvoted": "Posts downvoted by %1",
|
||||
"account/best": "Best posts made by %1",
|
||||
"account/controversial": "Controversial posts made by %1",
|
||||
"account/blocks": "Blocked users for %1",
|
||||
"account/uploads": "Uploads by %1",
|
||||
"account/sessions": "Login Sessions",
|
||||
|
||||
@@ -14,18 +14,5 @@
|
||||
"reply": "Reply",
|
||||
"topic": "Topic",
|
||||
"accept": "Accept",
|
||||
"reject": "Reject",
|
||||
"remove": "Remove",
|
||||
"notify": "Notify",
|
||||
"notify-user": "Notify User",
|
||||
"confirm-reject": "Do you want to reject this post?",
|
||||
"bulk-actions": "Bulk Actions",
|
||||
"accept-all": "Accept All",
|
||||
"accept-selected": "Accept Selected",
|
||||
"reject-all": "Reject All",
|
||||
"reject-all-confirm": "Do you want to reject all posts?",
|
||||
"reject-selected": "Reject Selected",
|
||||
"reject-selected-confirm": "Do you want to reject %1 selected posts?",
|
||||
"bulk-accept-success": "%1 posts accepted",
|
||||
"bulk-reject-success": "%1 posts rejected"
|
||||
"reject": "Reject"
|
||||
}
|
||||
@@ -48,7 +48,6 @@
|
||||
"moved-from-by": "Moved from %1 by",
|
||||
"queued-by": "Post queued for approval →",
|
||||
"backlink": "Referenced by",
|
||||
"forked-by": "Forked by",
|
||||
"bookmark_instructions": "Click here to return to the last read post in this thread.",
|
||||
"flag-post": "Flag this post",
|
||||
"flag-user": "Flag this user",
|
||||
@@ -113,7 +112,6 @@
|
||||
"bookmark": "Bookmark",
|
||||
"bookmarks": "Bookmarks",
|
||||
"bookmarks.has_no_bookmarks": "You haven't bookmarked any posts yet.",
|
||||
"copy-permalink": "Copy Permalink",
|
||||
"loading_more_posts": "আরো পোষ্ট লোড করা হচ্ছে",
|
||||
"move_topic": "টপিক সরান",
|
||||
"move_topics": "টপিক সমূহ সরান",
|
||||
@@ -182,7 +180,5 @@
|
||||
"timeago_earlier": "%1 earlier",
|
||||
"first-post": "First post",
|
||||
"last-post": "Last post",
|
||||
"go-to-my-next-post": "Go to my next post",
|
||||
"no-more-next-post": "You don't have more posts in this topic",
|
||||
"post-quick-reply": "Post quick reply"
|
||||
}
|
||||
@@ -1,6 +1,5 @@
|
||||
{
|
||||
"banned": "নিষিদ্ধ",
|
||||
"muted": "Muted",
|
||||
"offline": "অফলাইন",
|
||||
"deleted": "Deleted",
|
||||
"username": "সদস্যের নাম",
|
||||
@@ -13,8 +12,6 @@
|
||||
"ban_account": "একাউন্ট নিষিদ্ধ করুন",
|
||||
"ban_account_confirm": "আপনি কি নিশ্চিত যে এই সদস্যকে নিষিদ্ধ করতে চান ?",
|
||||
"unban_account": "নিষেদ্ধাজ্ঞা তুলে নিন",
|
||||
"mute_account": "Mute Account",
|
||||
"unmute_account": "Unmute Account",
|
||||
"delete_account": "একাউন্ট মুছে ফেলুন",
|
||||
"delete_account_as_admin": "Delete <strong>Account</strong>",
|
||||
"delete_content": "Delete Account <strong>Content</strong>",
|
||||
@@ -108,7 +105,7 @@
|
||||
"has_no_ignored_topics": "This user hasn't ignored any topics yet.",
|
||||
"has_no_upvoted_posts": "This user hasn't upvoted any posts yet.",
|
||||
"has_no_downvoted_posts": "This user hasn't downvoted any posts yet.",
|
||||
"has_no_controversial_posts": "This user does not have any downvoted posts yet.",
|
||||
"has_no_voted_posts": "This user has no voted posts",
|
||||
"has_no_blocks": "You have blocked no users.",
|
||||
"email_hidden": "ইমেইল গোপন রাখা হয়েছে",
|
||||
"hidden": "গোপন করা হয়েছে",
|
||||
@@ -157,11 +154,6 @@
|
||||
"info.banned-permanently": "Banned permanently",
|
||||
"info.banned-reason-label": "Reason",
|
||||
"info.banned-no-reason": "No reason given.",
|
||||
"info.mute-history": "Recent Mute History",
|
||||
"info.no-mute-history": "This user has never been muted",
|
||||
"info.muted-until": "Muted until %1",
|
||||
"info.muted-expiry": "Expiry",
|
||||
"info.muted-no-reason": "No reason given.",
|
||||
"info.username-history": "Username History",
|
||||
"info.email-history": "Email History",
|
||||
"info.moderation-note": "Moderation Note",
|
||||
@@ -192,8 +184,6 @@
|
||||
"consent.export_posts": "Export Posts (.csv)",
|
||||
"consent.export-posts-success": "Exporting posts, you will get a notification when it is complete.",
|
||||
"emailUpdate.intro": "Please enter your email address below. This forum uses your email address for scheduled digest and notifications, as well as for account recovery in the event of a lost password.",
|
||||
"emailUpdate.optional": "<strong>This field is optional</strong>. You are not obligated to provide your email address, but without a validated email you will not be able to recover your account or login with your email.",
|
||||
"emailUpdate.required": "<strong>This field is required</strong>.",
|
||||
"emailUpdate.change-instructions": "A confirmation email will be sent to the entered email address with a unique link. Accessing that link will confirm your ownership of the email address and it will become active on your account. At any time, you are able to update your email on file from within your account page.",
|
||||
"emailUpdate.password-challenge": "Please enter your password in order to verify account ownership."
|
||||
"emailUpdate.optional": "<strong>This field is optional</strong>. You are not obligated to provide your email address, but without a validated email, you will not be able to recover your account.",
|
||||
"emailUpdate.change-instructions": "A confirmation email will be sent to the entered email address with a unique link. Accessing that link will confirm your ownership of the email address and it will become active on your account. At any time, you are able to update your email on file from within your account page."
|
||||
}
|
||||
@@ -5,7 +5,6 @@
|
||||
"most_flags": "সর্বোচ্চ অভিযোগ",
|
||||
"search": "খুঁজুন",
|
||||
"enter_username": "ইউজারনেম এর ভিত্তিতে সার্চ করুন",
|
||||
"search-user-for-chat": "Search a user to start chat",
|
||||
"load_more": "আরো লোড করুন",
|
||||
"users-found-search-took": "%1 জন সদস্য(দের) খুঁজে পাওয়া গেছে। খুঁজতে সময় লেগেছে %2 সেকেন্ড ",
|
||||
"filter-by": "ফিল্টার করার ধরন",
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
# The files here are not meant to be edited directly
|
||||
|
||||
Please see the → [Internalization README](../README.md).
|
||||
@@ -3,9 +3,5 @@
|
||||
"alert.confirm-restart": "Jste si jist/a, že si přejete restartovat NodeBB?",
|
||||
|
||||
"acp-title": "Ovládací panel správce NodeBB | %1",
|
||||
"settings-header-contents": "Obsah",
|
||||
"changes-saved": "Changes Saved",
|
||||
"changes-saved-message": "Your changes to the NodeBB configuration have been saved.",
|
||||
"changes-not-saved": "Changes Not Saved",
|
||||
"changes-not-saved-message": "NodeBB encountered a problem saving your changes. (%1)"
|
||||
"settings-header-contents": "Obsah"
|
||||
}
|
||||
@@ -1,10 +1,8 @@
|
||||
{
|
||||
"administrators": "Správci",
|
||||
"global-moderators": "Hlavní moderátoři",
|
||||
"moderators": "Moderators",
|
||||
"no-global-moderators": "Žádní hlavní moderátoři",
|
||||
"no-sub-categories": "No subcategories",
|
||||
"subcategories": "%1 subcategories",
|
||||
"moderators-of-category": "%1 moderátorů",
|
||||
"no-moderators": "Žádní moderátoři",
|
||||
"add-administrator": "Přidat správce",
|
||||
"add-global-moderator": "Přidat hlavního moderátora",
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
"upload-files": "Náhrát soubory",
|
||||
"signature": "Podpis",
|
||||
"ban": "Blokovat",
|
||||
"mute": "Mute",
|
||||
"invite": "Invite",
|
||||
"search-content": "Hledat obsah",
|
||||
"search-users": "Hledat uživatele",
|
||||
|
||||
@@ -18,8 +18,7 @@
|
||||
"download-csv": "Stáhnout jako CSV",
|
||||
"manage-groups": "Spravovat skupiny",
|
||||
"add-group": "Přidat skupinu",
|
||||
"create": "Create User",
|
||||
"invite": "Invite by Email",
|
||||
"invite": "Pozvat",
|
||||
"new": "Nový uživatel",
|
||||
"filter-by": "Filter by",
|
||||
"pills.unvalidated": "Neověřeno",
|
||||
@@ -63,7 +62,7 @@
|
||||
"create.password": "Heslo",
|
||||
"create.password-confirm": "Potvrdit heslo",
|
||||
|
||||
"temp-ban.length": "Length",
|
||||
"temp-ban.length": "Trvání zákazu",
|
||||
"temp-ban.reason": "Důvod <span class=\"text-muted\">(volitelné)</span>",
|
||||
"temp-ban.hours": "Hodiny",
|
||||
"temp-ban.days": "Dny",
|
||||
@@ -91,7 +90,6 @@
|
||||
"alerts.validate-email-success": "E-maily byly ověřeny",
|
||||
"alerts.validate-force-password-reset-success": "Uživatelské heslo bylo resetováno a přihlašovací relace byla ukončena.",
|
||||
"alerts.password-reset-confirm": "Chcete poslat těmto uživatelům e-mail pro resetování hesla?",
|
||||
"alerts.password-reset-email-sent": "Password reset email sent.",
|
||||
"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": "Uživatel byl odstraněn.",
|
||||
"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>",
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
"logout": "Odhlásit",
|
||||
"view-forum": "Zobrazit fórum",
|
||||
|
||||
"search.placeholder": "Search settings",
|
||||
"search.placeholder": "Press "/" to search for settings",
|
||||
"search.no-results": "Žádné výsledky…",
|
||||
"search.search-forum": "Prohledat fórum pro <strong></strong>",
|
||||
"search.keep-typing": "Pište dále pro zobrazení výsledků…",
|
||||
|
||||
@@ -15,10 +15,6 @@
|
||||
"headers.acac": "Access-Control-Allow-Credentials",
|
||||
"headers.acam": "Access-Control-Allow-Methods",
|
||||
"headers.acah": "Access-Control-Allow-Headers",
|
||||
"headers.coep": "Cross-Origin-Embedder-Policy",
|
||||
"headers.coep-help": "When enabled (default), will set the header to <code>require-corp</code>",
|
||||
"headers.coop": "Cross-Origin-Opener-Policy",
|
||||
"headers.corp": "Cross-Origin-Resource-Policy",
|
||||
"hsts": "Přísné zabezpečení přenosu",
|
||||
"hsts.enabled": "Povolit HSTS (doporučeno)",
|
||||
"hsts.maxAge": "HSTS Max Age",
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user