Compare commits

..

120 Commits

Author SHA1 Message Date
Julian Lam
cc481f1234 fix: tests 2022-04-08 14:12:42 -04:00
Julian Lam
714c782e00 fix: remove secret as an installer question 2022-04-08 11:07:13 -04:00
Julian Lam
593be8cf8b chore: temporarily enable tests on webpack5 2022-04-08 11:02:45 -04:00
Julian Lam
508228c9e5 feat: remove \'secret\' from \'config.json\', in favour of having it stored in the database 2022-04-08 11:02:33 -04:00
Julian Lam
73d9d9ad03 fix: move handler for nconf sessionKey into defaults() 2022-04-08 10:21:05 -04:00
Julian Lam
829331c671 fix: typo in hook name 2022-03-30 16:59:04 -04:00
Julian Lam
0746689eec fix: #10443, regression where sorted-list items did not render into the DOM in the predicted order [breaking] 2022-03-30 16:46:08 -04:00
Julian Lam
833fcadf43 Merge branch 'master' into webpack5 2022-03-23 16:37:21 -04:00
Barış Soner Uşaklı
69772827fd Merge branch 'master' into webpack5 2022-03-21 20:34:55 -04:00
Barış Soner Uşaklı
374e7099f6 Merge branch 'master' into webpack5 2022-03-18 23:58:53 -04:00
Julian Lam
c10561a55b Merge remote-tracking branch 'origin/master' into webpack5 2022-03-18 15:04:32 -04:00
Julian Lam
9a79fe930e Merge branch 'master' into webpack5 2022-03-17 13:40:08 -04:00
Julian Lam
e9b2fabf83 fix: column counts for other privileges 2022-03-17 13:36:50 -04:00
Barış Soner Uşaklı
3dc2acd739 refactor: generateTopicClass 2022-03-16 17:25:34 -04:00
Barış Soner Uşaklı
2b7684d839 Merge branch 'master' into webpack5 2022-03-16 17:25:20 -04:00
Barış Soner Uşaklı
73898b7824 Merge branch 'master' into webpack5 2022-03-16 15:34:03 -04:00
Julian Lam
8a4614f147 Merge remote-tracking branch 'origin/master' into webpack5 2022-03-15 15:16:27 -04:00
Julian Lam
bf2941aa2c Merge branch 'master' into webpack5 2022-03-15 13:57:25 -04:00
Julian Lam
76f877a886 Merge remote-tracking branch 'origin/master' into webpack5 2022-03-15 10:19:54 -04:00
Barış Soner Uşaklı
fbae265458 refactor: closes #10301 2022-03-11 15:32:37 -05:00
Barış Soner Uşaklı
ca7c924dde test: use document.addEventListener 2022-03-11 14:36:56 -05:00
Barış Soner Uşaklı
6b3acfd798 change istaller to use build/public 2022-03-11 14:27:34 -05:00
Barış Soner Uşaklı
b75da2cc4e test: jquery ready 2022-03-11 14:09:47 -05:00
Barış Soner Uşaklı
bfe920eb45 Merge branch 'master' into webpack5 2022-03-11 14:09:33 -05:00
Barış Soner Uşaklı
d55ae3bfd5 refactor: require server side utils 2022-03-10 19:57:11 -05:00
Barış Soner Uşaklı
33320b46b9 feat: allow app.require('bootbox'/'benchpressjs') 2022-03-10 19:38:41 -05:00
Barış Soner Uşaklı
8b30d47028 Merge branch 'webpack5' of https://github.com/NodeBB/NodeBB into webpack5 2022-03-10 18:58:41 -05:00
Julian Lam
767b2688b6 refactor: privileges system to use a Map in the backend instead of separate objects for keys and labels (#10378)
* refactor: privileges system to use a Map in the backend instead of separate objects for keys and labels

- Existing hooks are preserved (to be deprecated at a later date, possibly)
- New init hooks are called on NodeBB start, and provide a one-stop shop to add new privileges, instead of having to add to four different hooks

* docs: fix typo in comment

* test: spec changes
2022-03-10 17:08:03 -05:00
Julian Lam
ab62569547 refactor: privileges system to use a Map in the backend instead of separate objects for keys and labels (#10378)
* refactor: privileges system to use a Map in the backend instead of separate objects for keys and labels

- Existing hooks are preserved (to be deprecated at a later date, possibly)
- New init hooks are called on NodeBB start, and provide a one-stop shop to add new privileges, instead of having to add to four different hooks

* docs: fix typo in comment

* test: spec changes
2022-03-10 16:33:56 -05:00
Barış Soner Uşaklı
add1e4e5fa Merge branch 'master' into webpack5 2022-03-10 12:15:05 -05:00
Barış Soner Uşaklı
748f352a77 refactor: cleanup, require timeago locale earlier
remove translator.prepareDOM, it is in header.tpl html tag
2022-03-09 22:58:12 -05:00
Barış Soner Uşaklı
7c04a74d38 fix: get rid of extra timeago files 2022-03-09 22:04:19 -05:00
Barış Soner Uşaklı
644252c227 Merge branch 'master' into webpack5 2022-03-09 15:05:28 -05:00
Barış Soner Uşaklı
689f0e4b58 fix: optional params 2022-03-08 14:44:23 -05:00
Barış Soner Uşaklı
8a31abadd4 feat: add translateKeys 2022-03-08 14:39:01 -05:00
Barış Soner Uşaklı
06aa3adb77 Merge branch 'master' into webpack5 2022-03-08 14:38:53 -05:00
Barış Soner Uşaklı
2e2728bdaa Merge branch 'master' into webpack5 2022-03-07 18:44:58 -05:00
Barış Soner Uşaklı
43ab5cd7fe Merge branch 'master' into webpack5 2022-03-07 18:21:44 -05:00
Barış Soner Uşaklı
9d85863daa Merge branch 'master' into webpack5 2022-03-04 13:30:57 -05:00
Barış Soner Uşaklı
9570d39b4c Merge branch 'master' into webpack5 2022-03-03 18:16:31 -05:00
Barış Soner Uşaklı
e6d3233bff Merge branch 'master' into webpack5 2022-03-03 12:50:49 -05:00
Barış Soner Uşaklı
4dbe116715 Merge branch 'master' into webpack5 2022-03-02 18:31:57 -05:00
Barış Soner Uşaklı
643efbee12 Merge branch 'master' into webpack5 2022-03-02 17:51:23 -05:00
Julian Lam
8d7d048100 chore: bump prerelease version 2022-03-02 16:53:29 -05:00
Barış Soner Uşaklı
68a6e6b8bf Merge branch 'master' into webpack5 2022-03-02 15:28:50 -05:00
Julian Lam
594c6f3ec3 Merge branch 'master' into webpack5 2022-03-01 14:30:56 -05:00
Barış Soner Uşaklı
032fa84016 Merge branch 'master' into webpack5 2022-03-01 13:38:50 -05:00
Barış Soner Uşaklı
f2efd56e23 Merge branch 'master' into webpack5 2022-02-28 20:38:03 -05:00
Barış Soner Uşaklı
1fc79792d9 lint: use relative path for now 2022-02-28 15:43:43 -05:00
Barış Soner Uşaklı
072d339410 refactor: cleanup
remove test page, remove dupe functions in utils.common
2022-02-28 15:38:46 -05:00
Barış Soner Uşaklı
bdb1f8dbbb Merge branch 'master' into webpack5 2022-02-28 12:11:33 -05:00
Barış Soner Uşaklı
30e5953507 Merge branch 'master' into webpack5 2022-02-25 18:42:57 -05:00
Barış Soner Uşaklı
f89babdca9 test: add debug for random failing test 2022-02-25 17:59:47 -05:00
Barış Soner Uşaklı
73762df143 Merge branch 'master' into webpack5 2022-02-25 14:43:18 -05:00
Barış Soner Uşaklı
691811de1d refactor: fix comments 2022-02-25 12:21:33 -05:00
Barış Soner Uşaklı
6cf1a721a7 Merge branch 'webpack5' of https://github.com/NodeBB/NodeBB into webpack5 2022-02-25 12:19:59 -05:00
Barış Soner Uşaklı
62d658d621 lint: ignore 2022-02-25 12:19:52 -05:00
Julian Lam
adf63f50e1 fix: more specific selector 2022-02-25 12:08:45 -05:00
Barış Soner Uşaklı
322bd599f9 test: fix filename 2022-02-25 12:04:44 -05:00
Barış Soner Uşaklı
9d33193cb7 refactor: use build/public for webpack 2022-02-25 11:50:43 -05:00
Julian Lam
7b1eba058f feat: deprecate /plugins shorthand route, closes #10343 2022-02-25 10:57:34 -05:00
Barış Soner Uşaklı
57a64b7809 refactor: add server side helpers.js 2022-02-25 09:59:33 -05:00
Barış Soner Uşaklı
eb8d07b3a6 Merge branch 'master' into webpack5 2022-02-25 09:57:48 -05:00
Barış Soner Uşaklı
36f8831315 refactor: disable cache on templates
loadTemplate is called once by benchpress and the result is cache internally
2022-02-23 18:58:34 -05:00
Julian Lam
522663d599 chore: tagging v2.0.0-beta.0 pre-release version 💥 :shipit: 🎉 🚀 2022-02-23 15:52:51 -05:00
Julian Lam
a61bbc8427 fix(deps): use webpack5 branch of 2factor plugin 2022-02-23 15:52:24 -05:00
Barış Soner Uşaklı
315566db6f refactor: get rid of template500Function 2022-02-22 19:08:12 -05:00
Barış Soner Uşaklı
1523d0cc50 refactor: move hooks to top 2022-02-22 19:02:55 -05:00
Barış Soner Uşaklı
e190ff875a feat: add chunkFile name with contenthash 2022-02-22 16:37:40 -05:00
Barış Soner Uşaklı
54091c818c Merge branch 'master' into webpack5 2022-02-22 16:12:43 -05:00
Barış Soner Uşaklı
57468fb690 Merge branch 'master' into webpack5 2022-02-21 20:13:30 -05:00
Barış Soner Uşaklı
b9cc5c0905 feat: webpack webinstaller 2022-02-21 19:04:19 -05:00
Barış Soner Uşaklı
66651d42fb Merge branch 'master' into webpack5 2022-02-21 18:22:04 -05:00
Barış Soner Uşaklı
48ab453a39 Merge branch 'master' into webpack5 2022-02-20 14:09:15 -05:00
Barış Soner Uşaklı
6c29b2a71f chore: use webpack branch 2022-02-20 11:48:13 -05:00
Barış Soner Uşaklı
4be5a723b5 chore: use github branch 2022-02-19 19:03:49 -05:00
Barış Soner Uşaklı
c14f72bbad refactor: go back to using app.require 2022-02-19 19:01:06 -05:00
Barış Soner Uşaklı
799acf83c4 refactor: rename function to app.require 2022-02-19 18:59:28 -05:00
Barış Soner Uşaklı
1dceb2b223 lint: fix 2022-02-19 18:13:45 -05:00
Barış Soner Uşaklı
a4c5dcce6c test: lint and test fixes 2022-02-19 18:07:08 -05:00
Barış Soner Uşaklı
eafd187941 Merge branch 'master' into webpack5 2022-02-19 12:58:18 -05:00
Barış Soner Uşaklı
0faae7343f refactor: cropper alias 2022-02-19 12:06:30 -05:00
Barış Soner Uşaklı
a7fc159353 fix: ace 2022-02-19 11:35:47 -05:00
Barış Soner Uşaklı
3b8f35a51d get rid of conditional import in app.js 2022-02-18 18:57:39 -05:00
Barış Soner Uşaklı
ba792b2920 Merge branch 'master' into webpack5 2022-02-18 17:25:37 -05:00
Barış Soner Uşaklı
6e6515fc47 Merge branch 'master' into webpack5 2022-02-18 17:18:20 -05:00
Barış Soner Uşaklı
29aaa9ee2d refactor: more cleanup
use everything from build/public folder
2022-02-18 17:18:13 -05:00
Barış Soner Uşaklı
45d5b5a586 refactor: dont need dist 2022-02-18 14:13:49 -05:00
Barış Soner Uşaklı
6bfc53fc6f test: composer 2022-02-17 22:24:05 -05:00
Barış Soner Uşaklı
cb34728421 test: maybe fix build test 2022-02-17 22:10:33 -05:00
Julian Lam
66c45996e1 fix: point to proper ACP bundle 2022-02-17 21:55:29 -05:00
Julian Lam
2e55ddc07c fix: remove unnecessary line break 2022-02-17 21:55:18 -05:00
Julian Lam
fec28a7e9e fix: restore use of assets/nodebb.min.js, at least for now 2022-02-17 21:26:51 -05:00
Barış Soner Uşaklı
1803c29ec9 test: fix one more test
remove 500-embed.tpl
2022-02-17 20:36:49 -05:00
Julian Lam
9dccd439f9 fix: move webpack modules necessary for build, into dependencies 2022-02-17 17:00:11 -05:00
Barış Soner Uşaklı
a9df137965 test: disable testing route 2022-02-17 16:48:50 -05:00
Barış Soner Uşaklı
d60cb6c6e5 refactor: add aliases 2022-02-17 16:35:42 -05:00
Barış Soner Uşaklı
862381008a test: move and disable bundle test 2022-02-17 16:12:04 -05:00
Barış Soner Uşaklı
d010a61854 test: fix db require blowing up tests 2022-02-17 15:35:08 -05:00
Barış Soner Uşaklı
fe610f0daf test: log stack 2022-02-17 15:13:14 -05:00
Barış Soner Uşaklı
70f35e56ec Merge branch 'master' into webpack5 2022-02-17 15:12:00 -05:00
Barış Soner Uşaklı
13e3b9440b Merge branch 'master' into webpack5 2022-02-17 14:47:48 -05:00
Barış Soner Uşaklı
ab673e362b Merge branch 'master' into webpack5 2022-02-17 14:16:21 -05:00
Barış Soner Uşaklı
b5b6e56f3c Merge branch 'master' into webpack5 2022-02-17 14:10:37 -05:00
Barış Soner Uşaklı
00aadc047f test: require correct utils 2022-02-17 13:14:30 -05:00
Barış Soner Uşaklı
306a8dd2cf test: require correct utils module 2022-02-17 13:10:28 -05:00
Barış Soner Uşaklı
4b35f654a3 test: more test fixes 2022-02-17 13:03:46 -05:00
Barış Soner Uşaklı
d3969e5656 test: fix require path 2022-02-17 12:33:12 -05:00
Barış Soner Uşaklı
1a0b82f434 test: fixe util tests 2022-02-17 12:27:18 -05:00
Barış Soner Uşaklı
3c129d7e8f Merge branch 'master' into webpack5 2022-02-17 11:23:42 -05:00
Barış Soner Uşaklı
2ea55c4311 Merge branch 'master' into webpack5 2022-02-15 20:54:08 -05:00
Barış Soner Uşaklı
1da1f21c79 fix: bundle serialize/deserizeli so plugins dont break 2022-02-15 13:24:28 -05:00
Barış Soner Uşaklı
3d4adaced4 fix: acp settings pages, fix sortable on manage categories
embedded require in html not allowed
2022-02-15 12:58:30 -05:00
Barış Soner Uşaklı
68d88345e7 feat: reenable admin 2022-02-15 12:41:11 -05:00
Barış Soner Uşaklı
cc3298e688 refactor: remove commented old code 2022-02-15 10:47:19 -05:00
Barış Soner Uşaklı
668add8cab Merge branch 'master' into webpack5 2022-02-15 10:43:32 -05:00
Barış Soner Uşaklı
fd97f9ffcc fix: fix taskbar warning
add app.importScript
copy public/src/modules to build folder
2022-02-15 10:43:22 -05:00
Barış Soner Uşaklı
36f172c1ac fix: gruntfile fixes 2022-02-14 22:04:05 -05:00
Barış Soner Uşaklı
163936e2fd Merge branch 'master' into webpack5 2022-02-14 21:50:39 -05:00
Barış Soner Uşaklı
a1a1e8da18 feat: webpack 5 part 1 2022-02-14 21:35:33 -05:00
1483 changed files with 37718 additions and 23186 deletions

View File

@@ -18,3 +18,12 @@ 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
View 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! -->

View File

@@ -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!**"

View File

@@ -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

View File

@@ -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!**"

6
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,6 @@
version: 2
updates:
- package-ecosystem: npm
directory: "/install"
schedule:
interval: daily

View File

@@ -11,9 +11,6 @@ on:
workflow_dispatch:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
permissions:
contents: read
jobs:
release:
runs-on: ubuntu-latest
@@ -24,20 +21,20 @@ jobs:
fetch-depth: 0
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
uses: docker/setup-buildx-action@v1
- name: Login to Docker Hub
uses: docker/login-action@v2
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Docker meta
id: meta
uses: docker/metadata-action@v4
uses: docker/metadata-action@v3
with:
images: nodebb/docker
tags: |
@@ -46,7 +43,7 @@ jobs:
type=raw,value=latest
- name: Build and push Docker images
uses: docker/build-push-action@v3
uses: docker/build-push-action@v2
with:
context: .
file: ./Dockerfile

View File

@@ -5,31 +5,25 @@ on:
branches:
- master
- develop
- bootstrap5
- webpack5
pull_request:
branches:
- master
- develop
- bootstrap5
- webpack5
defaults:
run:
shell: bash
permissions:
contents: read
jobs:
test:
permissions:
checks: write # for coverallsapp/github-action to create new checks
contents: read # for actions/checkout to fetch code
name: Lint and test
strategy:
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
@@ -50,7 +44,7 @@ jobs:
services:
postgres:
image: 'postgres:14-alpine'
image: 'postgres:10-alpine'
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
@@ -65,7 +59,7 @@ jobs:
- 5432:5432
redis:
image: 'redis:2.8.23'
image: 'redis:2.8.9'
# Set health checks to wait until redis has started
options: >-
--health-cmd "redis-cli ping"
@@ -77,7 +71,7 @@ jobs:
- 6379:6379
mongo:
image: 'mongo:3.7'
image: 'mongo:3.6'
ports:
# Maps port 27017 on service container to the host
- 27017:27017
@@ -103,7 +97,6 @@ jobs:
SETUP: >-
{
"url": "http://127.0.0.1:4567",
"secret": "abcdef",
"admin:username": "admin",
"admin:email": "test@example.org",
"admin:password": "hAN3Eg8W",
@@ -131,7 +124,6 @@ jobs:
SETUP: >-
{
"url": "http://127.0.0.1:4567",
"secret": "abcdef",
"admin:username": "admin",
"admin:email": "test@example.org",
"admin:password": "hAN3Eg8W",
@@ -162,7 +154,6 @@ jobs:
SETUP: >-
{
"url": "http://127.0.0.1:4567/forum",
"secret": "abcdef",
"admin:username": "admin",
"admin:email": "test@example.org",
"admin:password": "hAN3Eg8W",
@@ -202,8 +193,6 @@ jobs:
parallel: true
finish:
permissions:
checks: write # for coverallsapp/github-action to create new checks
needs: test
runs-on: ubuntu-latest
steps:

File diff suppressed because it is too large Load Diff

View File

@@ -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,41 +40,55 @@ 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}/*.scss`)
.concat(pluginList.map(p => `node_modules/${p}/*.css`))
.concat(pluginList.map(p => `node_modules/${p}/+(public|static|scss)/**/*.scss`))
.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 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 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 templatesUpdated = pluginList.map(p => `node_modules/${p}/+(public|static|templates)/**/*.tpl`);
const langUpdated = pluginList.map(p => `node_modules/${p}/+(public|static|languages)/**/*.json`);
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 = 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: {
styleUpdated_Client: {
files: [
'public/scss/**/*.scss',
'public/less/**/*.less',
...styleUpdated_Client,
],
options: {
interval: 1000,
},
},
styleUpdated_Admin: {
files: [
'public/less/**/*.less',
...styleUpdated_Admin,
],
options: {
interval: 1000,
},
},
clientUpdated: {
files: [
'public/src/**/*.js',
@@ -124,9 +137,10 @@ module.exports = function (grunt) {
});
const build = require('./src/meta/build');
if (!grunt.option('skip')) {
await build.build(true, { watch: true });
await build.build(true, { webpack: false });
}
run();
await build.webpack({ watch: true });
done();
});
@@ -153,14 +167,16 @@ module.exports = function (grunt) {
grunt.event.removeAllListeners('watch');
grunt.event.on('watch', (action, filepath, target) => {
let compiling;
if (target === 'styleUpdated') {
compiling = ['clientCSS', 'acpCSS'];
if (target === 'styleUpdated_Client') {
compiling = 'clientCSS';
} else if (target === 'styleUpdated_Admin') {
compiling = 'acpCSS';
} else if (target === 'clientUpdated') {
compiling = ['js'];
compiling = 'js';
} else if (target === 'templatesUpdated') {
compiling = ['tpl'];
compiling = 'tpl';
} else if (target === 'langUpdated') {
compiling = ['lang'];
compiling = 'lang';
} else if (target === 'serverUpdated') {
// empty require cache
const paths = ['./src/meta/build.js', './src/meta/index.js'];
@@ -168,7 +184,7 @@ module.exports = function (grunt) {
return run();
}
require('./src/meta/build').build(compiling, { webpack: false }, (err) => {
require('./src/meta/build').build([compiling], { webpack: false }, (err) => {
if (err) {
winston.error(err.stack);
}
@@ -179,10 +195,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 {
@@ -193,9 +209,9 @@ function addBaseThemes(pluginList) {
}
if (baseTheme) {
pluginList.push(baseTheme);
plugins.push(baseTheme);
themeId = baseTheme;
}
} while (baseTheme);
return pluginList;
return plugins;
}

View File

@@ -3,7 +3,6 @@
[![Workflow](https://github.com/NodeBB/NodeBB/actions/workflows/test.yaml/badge.svg)](https://github.com/NodeBB/NodeBB/actions/workflows/test.yaml)
[![Coverage Status](https://coveralls.io/repos/github/NodeBB/NodeBB/badge.svg?branch=master)](https://coveralls.io/github/NodeBB/NodeBB?branch=master)
[![Code Climate](https://codeclimate.com/github/NodeBB/NodeBB/badges/gpa.svg)](https://codeclimate.com/github/NodeBB/NodeBB)
[![](https://dcbadge.vercel.app/api/server/p6YKPXu7er?style=flat)](https://discord.gg/p6YKPXu7er)
[**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 &rarr; categorical hierarchies, local user accounts, and asynchronous messaging.
@@ -35,7 +34,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
@@ -77,7 +76,7 @@ Interested in a sublicense agreement for use of NodeBB in a non-free/restrictive
* [Demo](https://try.nodebb.org)
* [Developer Community](http://community.nodebb.org)
* [Documentation & Installation Instructions](http://docs.nodebb.org)
* [Help translate NodeBB](https://explore.transifex.com/nodebb/nodebb/)
* [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 &ndash; channel `#nodebb` on Libera.chat

4
app.js
View File

@@ -38,7 +38,7 @@ global.env = process.env.NODE_ENV || 'production';
// Alternate configuration file support
const configFile = path.resolve(__dirname, nconf.any(['config', 'CONFIG']) || 'config.json');
const configExists = file.existsSync(configFile) || (nconf.get('url') && nconf.get('secret') && nconf.get('database'));
const configExists = file.existsSync(configFile) || (nconf.get('url') && nconf.get('database'));
const prestart = require('./src/prestart');
@@ -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'));

View File

@@ -25,7 +25,6 @@
"postQueue": 0,
"postQueueReputationThreshold": 0,
"groupsExemptFromPostQueue": ["administrators", "Global Moderators"],
"groupsExemptFromMaintenanceMode": ["administrators", "Global Moderators"],
"minimumPostLength": 8,
"maximumPostLength": 32767,
"systemTags": "",
@@ -46,7 +45,6 @@
"allowMultipleBadges": 0,
"maximumFileSize": 2048,
"stripEXIFData": 1,
"orphanExpiryDays": 0,
"resizeImageWidthThreshold": 2000,
"resizeImageWidth": 760,
"rejectImageWidth": 5000,
@@ -79,12 +77,10 @@
"reputation:disabled": 0,
"downvote:disabled": 0,
"disableSignatures": 0,
"signatures:hideDuplicates": 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,
@@ -95,8 +91,6 @@
"min:rep:signature": 0,
"flags:limitPerTarget": 0,
"flags:autoFlagOnDownvoteThreshold": 0,
"flags:actionOnResolve": "rescind",
"flags:actionOnReject": "rescind",
"notificationType_upvote": "notification",
"notificationType_new-topic": "notification",
"notificationType_new-reply": "notification",
@@ -147,7 +141,6 @@
"maximumRelatedTopics": 0,
"disableEmailSubscriptions": 0,
"emailConfirmInterval": 10,
"emailConfirmExpiry": 24,
"removeEmailNotificationImages": 0,
"sendValidationEmail": 1,
"includeUnverifiedEmails": 0,
@@ -159,7 +152,6 @@
"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,

View File

@@ -4,7 +4,7 @@
"title": "[[global:header.categories]]",
"enabled": true,
"iconClass": "fa-list",
"textClass": "d-lg-none",
"textClass": "visible-xs-inline",
"text": "[[global:header.categories]]"
},
{
@@ -13,7 +13,7 @@
"title": "[[global:header.unread]]",
"enabled": true,
"iconClass": "fa-inbox",
"textClass": "d-lg-none",
"textClass": "visible-xs-inline",
"text": "[[global:header.unread]]",
"groups": ["registered-users"]
},
@@ -22,7 +22,7 @@
"title": "[[global:header.recent]]",
"enabled": true,
"iconClass": "fa-clock-o",
"textClass": "d-lg-none",
"textClass": "visible-xs-inline",
"text": "[[global:header.recent]]"
},
{
@@ -30,7 +30,7 @@
"title": "[[global:header.tags]]",
"enabled": true,
"iconClass": "fa-tags",
"textClass": "d-lg-none",
"textClass": "visible-xs-inline",
"text": "[[global:header.tags]]"
},
{
@@ -38,7 +38,7 @@
"title": "[[global:header.popular]]",
"enabled": true,
"iconClass": "fa-fire",
"textClass": "d-lg-none",
"textClass": "visible-xs-inline",
"text": "[[global:header.popular]]"
},
{
@@ -46,7 +46,7 @@
"title": "[[global:header.users]]",
"enabled": true,
"iconClass": "fa-user",
"textClass": "d-lg-none",
"textClass": "visible-xs-inline",
"text": "[[global:header.users]]"
},
{
@@ -54,7 +54,7 @@
"title": "[[global:header.groups]]",
"enabled": true,
"iconClass": "fa-group",
"textClass": "d-lg-none",
"textClass": "visible-xs-inline",
"text": "[[global:header.groups]]"
},
{
@@ -62,7 +62,7 @@
"title": "[[global:header.admin]]",
"enabled": true,
"iconClass": "fa-cogs",
"textClass": "d-lg-none",
"textClass": "visible-xs-inline",
"text": "[[global:header.admin]]",
"groups": ["administrators"]
}

View File

@@ -2,8 +2,8 @@
"name": "nodebb",
"license": "GPL-3.0",
"description": "NodeBB Forum",
"version": "3.0.0-alpha.2",
"homepage": "https://www.nodebb.org",
"version": "2.0.0-beta.1",
"homepage": "http://www.nodebb.org",
"repository": {
"type": "git",
"url": "https://github.com/NodeBB/NodeBB/"
@@ -29,149 +29,139 @@
},
"dependencies": {
"@adactive/bootstrap-tagsinput": "0.8.2",
"@isaacs/ttlcache": "1.2.1",
"@popperjs/core": "2.11.6",
"ace-builds": "1.13.1",
"archiver": "5.3.1",
"async": "3.2.4",
"autoprefixer": "10.4.13",
"ace-builds": "1.4.14",
"archiver": "5.3.0",
"async": "3.2.3",
"autoprefixer": "10.4.4",
"bcryptjs": "2.4.3",
"benchpressjs": "2.4.3",
"body-parser": "1.20.1",
"bootbox": "https://github.com/makeusabrew/bootbox.git#v6-wip",
"bootstrap": "5.2.2",
"bootswatch": "5.2.2",
"body-parser": "1.19.2",
"bootbox": "5.5.2",
"bootstrap": "3.4.1",
"chalk": "4.1.2",
"chart.js": "2.9.4",
"cli-graph": "3.2.2",
"clipboard": "2.0.11",
"clipboard": "2.0.10",
"colors": "1.4.0",
"commander": "9.4.1",
"compare-versions": "5.0.1",
"commander": "7.2.0",
"compare-versions": "4.1.3",
"compression": "1.7.4",
"connect-flash": "0.1.1",
"connect-mongo": "4.6.0",
"connect-multiparty": "2.2.0",
"connect-pg-simple": "8.0.0",
"connect-pg-simple": "7.0.0",
"connect-redis": "6.1.3",
"cookie-parser": "1.4.6",
"cron": "2.1.0",
"cropperjs": "1.5.13",
"cron": "1.8.2",
"cropperjs": "1.5.12",
"csurf": "1.11.0",
"daemon": "1.1.0",
"diff": "5.1.0",
"esbuild": "0.15.15",
"express": "4.18.2",
"express-session": "1.17.3",
"diff": "5.0.0",
"express": "4.17.3",
"express-session": "1.17.2",
"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",
"graceful-fs": "4.2.9",
"helmet": "5.0.2",
"html-to-text": "8.1.0",
"ipaddr.js": "2.0.1",
"jquery": "3.6.1",
"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.1",
"jsesc": "3.0.2",
"json2csv": "5.0.7",
"jsonwebtoken": "8.5.1",
"less": "4.1.3",
"less": "4.1.2",
"lodash": "4.17.21",
"logrotate-stream": "0.2.8",
"lru-cache": "7.14.1",
"lru-cache": "6.0.0",
"material-design-lite": "1.3.0",
"mime": "3.0.0",
"mkdirp": "1.0.4",
"mongodb": "4.12.1",
"mongodb": "4.4.1",
"morgan": "1.10.0",
"mousetrap": "1.6.5",
"multiparty": "4.2.3",
"nconf": "0.12.0",
"nodebb-plugin-2factor": "6.0.3",
"nodebb-plugin-composer-default": "10.0.16",
"nodebb-plugin-dbsearch": "6.0.0",
"nodebb-plugin-emoji": "5.0.3",
"nodebb-plugin-emoji-android": "4.0.0",
"nodebb-plugin-markdown": "11.0.2",
"nodebb-plugin-mentions": "4.0.2",
"nodebb-plugin-spam-be-gone": "2.0.4",
"@nodebb/bootswatch": "3.4.2",
"nconf": "0.11.3",
"nodebb-plugin-2factor": "https://github.com/NodeBB/nodebb-plugin-2factor#webpack5",
"nodebb-plugin-composer-default": "https://github.com/nodebb/nodebb-plugin-composer-default.git#webpack5",
"nodebb-plugin-dbsearch": "5.1.3",
"nodebb-plugin-emoji": "https://github.com/NodeBB/nodebb-plugin-emoji.git#webpack5",
"nodebb-plugin-emoji-android": "2.0.5",
"nodebb-plugin-markdown": "https://github.com/julianlam/nodebb-plugin-markdown.git#webpack5",
"nodebb-plugin-mentions": "3.0.7",
"nodebb-plugin-spam-be-gone": "https://github.com/akhoury/nodebb-plugin-spam-be-gone.git#webpack5",
"nodebb-rewards-essentials": "0.2.1",
"nodebb-theme-lavender": "7.0.2",
"nodebb-theme-peace": "2.0.8",
"nodebb-theme-persona": "13.0.28",
"nodebb-widget-essentials": "7.0.2",
"nodemailer": "6.8.0",
"nodebb-theme-lavender": "https://github.com/nodebb/nodebb-theme-lavender.git#webpack5",
"nodebb-theme-persona": "https://github.com/nodebb/nodebb-theme-persona.git#webpack5",
"nodebb-theme-slick": "https://github.com/pichalite/nodebb-theme-slick.git#webpack5",
"nodebb-theme-vanilla": "12.1.17",
"nodebb-widget-essentials": "https://github.com/nodebb/nodebb-widget-essentials.git#webpack5",
"nodemailer": "6.7.3",
"nprogress": "0.2.0",
"passport": "0.6.0",
"passport": "0.5.2",
"passport-http-bearer": "1.0.1",
"passport-local": "1.0.0",
"pg": "8.8.0",
"pg-cursor": "2.7.4",
"postcss": "8.4.19",
"pg": "8.7.3",
"pg-cursor": "2.7.3",
"postcss": "8.4.12",
"postcss-clean": "1.2.0",
"progress-webpack-plugin": "1.0.16",
"prompt": "1.3.0",
"ioredis": "5.2.4",
"prompt": "1.2.2",
"ioredis": "4.28.5",
"request": "2.88.2",
"request-promise-native": "1.0.9",
"rimraf": "3.0.2",
"rss": "1.2.2",
"rtlcss": "4.0.0",
"sanitize-html": "2.7.3",
"sass": "1.54.9",
"semver": "7.3.8",
"sanitize-html": "2.7.0",
"semver": "7.3.5",
"serve-favicon": "2.5.0",
"sharp": "0.31.2",
"sharp": "0.30.3",
"sitemap": "7.1.1",
"slideout": "1.0.1",
"socket.io": "4.5.4",
"socket.io-client": "4.5.4",
"@socket.io/redis-adapter": "7.2.0",
"socket.io": "4.4.1",
"socket.io-adapter-cluster": "1.0.1",
"socket.io-client": "4.4.1",
"@socket.io/redis-adapter": "7.1.0",
"sortablejs": "1.15.0",
"spdx-license-list": "6.6.0",
"spdx-license-list": "6.4.0",
"spider-detector": "2.0.0",
"terser-webpack-plugin": "5.3.6",
"textcomplete": "0.18.2",
"textcomplete.contenteditable": "0.1.1",
"timeago": "1.6.7",
"tinycon": "0.6.8",
"toobusy-js": "0.5.1",
"uglify-es": "3.3.9",
"validator": "13.7.0",
"webpack": "5.75.0",
"visibilityjs": "2.0.2",
"webpack": "^5.68.0",
"webpack-merge": "5.8.0",
"winston": "3.8.2",
"winston": "3.6.0",
"xml": "1.0.1",
"xregexp": "5.1.1",
"yargs": "17.6.2",
"xregexp": "5.1.0",
"yargs": "17.4.0",
"zxcvbn": "4.4.2"
},
"devDependencies": {
"@apidevtools/swagger-parser": "10.0.3",
"@commitlint/cli": "17.3.0",
"@commitlint/config-angular": "17.3.0",
"@commitlint/cli": "16.2.3",
"@commitlint/config-angular": "16.2.3",
"coveralls": "3.1.1",
"eslint": "8.28.0",
"eslint-config-nodebb": "0.2.1",
"eslint-plugin-import": "2.26.0",
"grunt": "1.5.3",
"eslint": "8.11.0",
"eslint-config-nodebb": "0.1.1",
"eslint-plugin-import": "2.25.4",
"grunt": "1.4.1",
"grunt-contrib-watch": "1.1.0",
"husky": "8.0.2",
"jsdom": "20.0.3",
"lint-staged": "13.0.3",
"mocha": "10.1.0",
"husky": "7.0.4",
"jsdom": "19.0.0",
"lint-staged": "12.3.7",
"mocha": "9.2.2",
"mocha-lcov-reporter": "1.3.0",
"mockdate": "3.0.5",
"nyc": "15.1.0",
"smtp-server": "3.11.0"
},
"optionalDependencies": {
"sass-embedded": "1.55.0"
},
"resolutions": {
"*/jquery": "3.6.1"
"smtp-server": "3.10.0"
},
"bugs": {
"url": "https://github.com/NodeBB/NodeBB/issues"
@@ -180,6 +170,11 @@
"node": ">=12"
},
"maintainers": [
{
"name": "Andrew Rodrigues",
"email": "andrew@nodebb.org",
"url": "https://github.com/psychobunny"
},
{
"name": "Julian Lam",
"email": "julian@nodebb.org",
@@ -191,4 +186,4 @@
"url": "https://github.com/barisusakli"
}
]
}
}

View File

@@ -6,6 +6,7 @@ const bodyParser = require('body-parser');
const fs = require('fs');
const path = require('path');
const childProcess = require('child_process');
const less = require('less');
const webpack = require('webpack');
const nconf = require('nconf');
@@ -13,7 +14,6 @@ const nconf = require('nconf');
const Benchpress = require('benchpressjs');
const mkdirp = require('mkdirp');
const { paths } = require('../src/constants');
const sass = require('../src/utils').getSass();
const app = express();
let server;
@@ -58,7 +58,7 @@ 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.use('/assets', express.static(path.join(__dirname, '../build/webpack'), {}));
app.engine('tpl', (filepath, options, callback) => {
filepath = filepath.replace(/\.tpl$/, '.js');
@@ -73,7 +73,7 @@ web.install = async function (port) {
try {
await Promise.all([
compileTemplate(),
compileSass(),
compileLess(),
runWebpack(),
copyCSS(),
loadDefaults(),
@@ -206,20 +206,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) {
@@ -247,28 +242,23 @@ async function compileTemplate() {
]);
}
async function compileSass() {
async function compileLess() {
try {
const installSrc = path.join(__dirname, '../public/scss/install.scss');
const installSrc = path.join(__dirname, '../public/less/install.less');
const style = await fs.promises.readFile(installSrc);
const scssOutput = sass.compileString(String(style), {
loadPaths: [
path.join(__dirname, '../public/scss'),
],
});
await fs.promises.writeFile(path.join(__dirname, '../public/installer.css'), scssOutput.css.toString());
const css = await less.render(String(style), { filename: path.resolve(installSrc) });
await fs.promises.writeFile(path.join(__dirname, '../public/installer.css'), css.css);
} catch (err) {
winston.error(`Unable to compile SASS: \n${err.stack}`);
winston.error(`Unable to compile LESS: \n${err.stack}`);
throw err;
}
}
async function copyCSS() {
await fs.promises.copyFile(
path.join(__dirname, '../node_modules/bootstrap/dist/css/bootstrap.min.css'),
path.join(__dirname, '../public/bootstrap.min.css'),
const src = await fs.promises.readFile(
path.join(__dirname, '../node_modules/bootstrap/dist/css/bootstrap.min.css'), 'utf8'
);
await fs.promises.writeFile(path.join(__dirname, '../public/bootstrap.min.css'), src);
}
async function loadDefaults() {

View File

@@ -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.

View File

@@ -1,3 +0,0 @@
# The files here are not meant to be edited directly
Please see the &rarr; [Internalization README](../README.md).

View File

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

View File

@@ -1,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",

View File

@@ -91,7 +91,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>",

View File

@@ -76,7 +76,7 @@
"logout": "Log out",
"view-forum": "View Forum",
"search.placeholder": "Search settings",
"search.placeholder": "Press &quot;/&quot; 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...",

View File

@@ -3,7 +3,6 @@
"maintenance-mode.help": "When the forum is in maintenance mode, all requests will be redirected to a static holding page. Administrators are exempt from this redirection, and are able to access the site normally.",
"maintenance-mode.status": "Maintenance Mode Status Code",
"maintenance-mode.message": "Maintenance Message",
"maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode",
"headers": "Headers",
"headers.allow-from": "Set ALLOW-FROM to Place NodeBB in an iFrame",
"headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame",
@@ -18,10 +17,7 @@
"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",
"headers.permissions-policy": "Permissions-Policy",
"headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see <a href=\"https://github.com/w3c/webappsec-permissions-policy/blob/main/permissions-policy-explainer.md\">this</a> for more info.",
"hsts": "Strict Transport Security",
"hsts.enabled": "Enabled HSTS (recommended)",
"hsts.maxAge": "HSTS Max Age",

View File

@@ -5,18 +5,14 @@
"from": "From Name",
"from-help": "The from name to display in the email.",
"confirmation-settings": "Confirmation",
"confirmation.expiry": "Hours to keep email confirmation link valid",
"smtp-transport": "SMTP Transport",
"smtp-transport.enabled": "Enable SMTP Transport",
"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 &quot;Custom Service&quot; and enter the details below.",
"smtp-transport.gmail-warning1": "If you are using GMail as your email provider, you will have to generate an &quot;App Password&quot; 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&apos;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",

View File

@@ -51,7 +51,6 @@
"signature.disable": "Disable signatures",
"signature.no-links": "Disable links in signatures",
"signature.no-images": "Disable images in signatures",
"signature.hide-duplicates": "Hide duplicate signatures in topics",
"signature.max-length": "Maximum Signature Length",
"composer": "Composer Settings",
"composer-help": "The following settings govern the functionality and/or appearance of the post composer shown\n\t\t\t\tto users when they create new topics, or reply to existing topics.",

View File

@@ -10,7 +10,6 @@
"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",
@@ -23,9 +22,5 @@
"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 &quot;report&quot; 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",
"flags.action-on-resolve": "Do the following when a flag is resolved",
"flags.action-on-reject": "Do the following when a flag is rejected",
"flags.action.nothing": "Do nothing",
"flags.action.rescind": "Rescind the notification send to moderators/administrators"
"flags.auto-resolve-on-ban": "Automatically resolve all of a user's tickets when they are banned"
}

View File

@@ -1,11 +1,8 @@
{
"posts": "المشاركات",
"orphans": "Orphaned 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",

View File

@@ -1,7 +1,7 @@
{
"authentication": "المصادقة",
"email-confirm-interval": "لا يمكن للمستخدم إعادة إرسال رسالة تأكيد البريد الالكتروني حتى مرور",
"email-confirm-interval2": "minutes have elapsed",
"email-confirm-email2": "دقائق",
"allow-login-with": "السماح بتسجيل الدخول باستخدام",
"allow-login-with.username-email": "اسم المستخدم أو البريد الالكتروني",
"allow-login-with.username": "اسم المستخدم فقط",

View File

@@ -61,7 +61,6 @@
"no-group": "مجموعة غير موجودة",
"no-user": "اسم مستخدم غير موجود",
"no-teaser": "مقتطف غير موجود",
"no-flag": "Flag does not exist",
"no-privileges": "لاتملك الصلاحيات اللازمة للقيام بهذه العملية",
"category-disabled": "قائمة معطلة",
"topic-locked": "الموضوع مقفول",
@@ -158,7 +157,6 @@
"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",
@@ -205,8 +203,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 &ndash; 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",

View File

@@ -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 &amp; Flag History",
"no-history": "No flag history.",

View File

@@ -6,8 +6,8 @@
"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": "آخر الدردشات",

View File

@@ -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",

View File

@@ -17,15 +17,5 @@
"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"
"notify-user": "Notify User"
}

View File

@@ -113,7 +113,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": "نقل المواضيع",

View File

@@ -1,6 +1,5 @@
{
"banned": "محظور",
"muted": "Muted",
"offline": "غير متصل",
"deleted": "محذوف",
"username": "إسم المستخدم",
@@ -157,10 +156,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": "سجل البريد الإلكتروني",
@@ -194,6 +189,5 @@
"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.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."
}

View File

@@ -1,3 +0,0 @@
# The files here are not meant to be edited directly
Please see the &rarr; [Internalization README](../README.md).

View File

@@ -1,8 +1,5 @@
{
"post-cache": "Кеш за публикации",
"group-cache": "Кеш за групи",
"local-cache": "Локален кеш",
"object-cache": "Кеш за обекти",
"percent-full": "Запълненост: %1%",
"post-cache-size": "Размер на кеша за публикации",
"items-in-cache": "Елементи в кеша"

View File

@@ -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": "Добавяне на глобален модератор",

View File

@@ -91,7 +91,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>",

View File

@@ -76,7 +76,7 @@
"logout": "Изход",
"view-forum": "Преглед на форума",
"search.placeholder": "Търсене на настройки",
"search.placeholder": "Натиснете „/“ за търсене на настройки",
"search.no-results": "Няма резултати…",
"search.search-forum": "Търсене във форума за <strong></strong>",
"search.keep-typing": "Продължете да пишете, за да видите още резултати…",

View File

@@ -3,7 +3,6 @@
"maintenance-mode.help": "Когато форумът е в режим на профилактика, всички заявки ще бъдат пренасочвани към статична страница за изчакване, с изключение на администраторите, които ще могат да използват уеб сайта нормално.",
"maintenance-mode.status": "Код на състоянието за режима на профилактика",
"maintenance-mode.message": "Съобщение за профилактиката",
"maintenance-mode.groups-exempt-from-maintenance-mode": "Изберете групи, които да бъдат изключени от режима на профилактика",
"headers": "Заглавни части",
"headers.allow-from": "Задайте „ALLOW-FROM“, за да поставите NodeBB в „iFrame“",
"headers.csp-frame-ancestors": "Задайте заглавката „Content-Security-Policy frame-ancestors“ за да поставите NodeBB „iFrame“",
@@ -18,10 +17,7 @@
"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.permissions-policy": "Permissions-Policy",
"headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see <a href=\"https://github.com/w3c/webappsec-permissions-policy/blob/main/permissions-policy-explainer.md\">this</a> for more info.",
"hsts": "Стриктна транспортна сигурност",
"hsts.enabled": "Включване на HSTS (препоръчително)",
"hsts.maxAge": "Максимална възраст на HSTS",

View File

@@ -5,18 +5,14 @@
"from": "Име за полето „От“",
"from-help": "Името на изпращача, което да бъде показано в е-писмото.",
"confirmation-settings": "Потвърждение",
"confirmation.expiry": "Продължителност на давността на връзката за потвърждаване, в часове",
"smtp-transport": "Транспорт чрез SMTP",
"smtp-transport.enabled": "Включване на транспорта чрез SMTP",
"smtp-transport-help": "Можете да изберете от списък от познати услуги, или да въведете такава ръчно.",
"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": "Сигурност на връзката",

View File

@@ -51,7 +51,6 @@
"signature.disable": "Забраняване на подписите",
"signature.no-links": "Забраняване на поставянето на връзки в подписите",
"signature.no-images": "Забраняване на поставянето на изображения в подписите",
"signature.hide-duplicates": "Скриване на дублираните подписи в темите",
"signature.max-length": "Максимална дължина на подписите",
"composer": "Настройки за съставянето",
"composer-help": "Следващите настройки определят функционалностите и/или вида на елемента за съставяне на\n\\t\\t\\t\\tпубликация, който се използва от потребителите, когато те създават нови теми или отговорят в съществуващи.",

View File

@@ -10,7 +10,6 @@
"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": "Минимална репутация, необходима за добавяне на полето „За мен“ към профила на потребителя",
@@ -23,9 +22,5 @@
"flags.limit-per-target-placeholder": "По подразбиране: 0",
"flags.limit-per-target-help": "Когато публикация или потребител бъде докладван няколко пъти, това се добавя към един общ доклад. Задайте на тази настройка стойност по-голяма от нула, за да ограничите броя на докладванията, които могат да бъдат натрупани към една публикация или потребител.",
"flags.auto-flag-on-downvote-threshold": "Брой отрицателни гласове, при които публикациите да бъдат докладвани автоматично (0 = изключено, по подразбиране: 0)",
"flags.auto-resolve-on-ban": "Автоматично премахване на всички доклади за потребител, когато той бъде блокиран",
"flags.action-on-resolve": "Когато докладване бъде разрешено, да се направи следното",
"flags.action-on-reject": "Когато докладване бъде отхвърлено, да се направи следното",
"flags.action.nothing": "Да не се прави нищо",
"flags.action.rescind": "Да се отмени известието, изпратено до модераторите/администраторите"
"flags.auto-resolve-on-ban": "Автоматично премахване на всички доклади за потребител, когато той бъде блокиран"
}

View File

@@ -1,11 +1,8 @@
{
"posts": "Публикации",
"orphans": "Неизползвани файлове",
"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": "Преоразмеряване на изображенията, ако са по-широки от определената ширина",

View File

@@ -1,7 +1,7 @@
{
"authentication": "Удостоверяване",
"email-confirm-interval": "Потребителят не може да изпраща повторно е-писмото за потвърждение, преди да са минали",
"email-confirm-interval2": "минути са изминали",
"email-confirm-email2": "минути",
"allow-login-with": "Позволяване на вписването чрез",
"allow-login-with.username-email": "Потребителско име или е-поща",
"allow-login-with.username": "Само потребителско име",
@@ -23,7 +23,7 @@
"login-attempts": "Брой опити за вписване на час",
"login-attempts-help": "Ако опитите за вписване на потребител минат тази граница, акаунтът ще бъде заключен за определено време.",
"lockout-duration": "Продължителност на заключването на акаунта (в минути)",
"login-days": "Брой дни за помнене на сесията за вписване на потребителя",
"login-days": "Продължителност на запомнянето на сесията за вписване на потребителя (в дни)",
"password-expiry-days": "Изискване на промяна на паролата през определен период от дни",
"session-time": "Продължителност на сесията",
"session-time-days": "Дни",

View File

@@ -61,7 +61,6 @@
"no-group": "Групата не съществува",
"no-user": "Потребителят не съществува",
"no-teaser": "Резюмето не съществува",
"no-flag": "Докладът не съществува",
"no-privileges": "Нямате достатъчно права за това действие.",
"category-disabled": "Категорията е изключена",
"topic-locked": "Темата е заключена",
@@ -158,7 +157,6 @@
"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, за да докладвате тази публикация",
@@ -205,8 +203,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": "Категорията не може да се зададе като базова категория на себе си",

View File

@@ -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": "Няма история на доклада.",

View File

@@ -6,8 +6,8 @@
"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": "Скорошни разговори",

View File

@@ -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",

View File

@@ -17,15 +17,5 @@
"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"
"notify-user": "Известяване на потребителя"
}

View File

@@ -113,7 +113,6 @@
"bookmark": "Отметка",
"bookmarks": "Отметки",
"bookmarks.has_no_bookmarks": "Все още не сте си запазвали отметки към никакви публикации.",
"copy-permalink": "Копиране на постоянна връзка",
"loading_more_posts": "Зареждане на още публикации",
"move_topic": "Преместване на темата",
"move_topics": "Преместване на темите",

View File

@@ -1,6 +1,5 @@
{
"banned": "Блокиран",
"muted": "Заглушен",
"offline": "Извън линия",
"deleted": "Изтрит",
"username": "Потребителско име",
@@ -157,10 +156,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": "Историята на е-пощите",
@@ -194,6 +189,5 @@
"emailUpdate.intro": "Въведете е-пощата си по-долу. Този форум използва е-пощата за планирани резюмета и известия, както и за възстановяване на акаунта, в случай на забравена парола.",
"emailUpdate.optional": "<strong>Това поле не е задължително</strong>. Не сте длъжен/на да предоставяте адрес на е-поща, но без проверена е-поща, няма да можете да възстановите акаунта си в случай на проблем, нито ще можете да се вписвате с е-пощата си.",
"emailUpdate.required": "<strong>Това поле е задължително</strong>.",
"emailUpdate.change-instructions": "Ще Ви изпратим е-писмо за потвърждение на посочената е-поща, което ще съдържа уникална връзка. Щом последвате тази връзка, притежанието Ви на тази е-поща ще бъде потвърдено и тя ще бъде свързана с акаунта Ви. Ще можете да промените тази е-поща по всяко време, от страницата на акаунта си.",
"emailUpdate.password-challenge": "Въведете паролата си, за да потвърдите, че акаунтът е Ваш."
"emailUpdate.change-instructions": "Ще Ви изпратим е-писмо за потвърждение на посочената е-поща, което ще съдържа уникална връзка. Щом последвате тази връзка, притежанието Ви на тази е-поща ще бъде потвърдено и тя ще бъде свързана с акаунта Ви. Ще можете да промените тази е-поща по всяко време, от страницата на акаунта си."
}

View File

@@ -1,3 +0,0 @@
# The files here are not meant to be edited directly
Please see the &rarr; [Internalization README](../README.md).

View File

@@ -1,8 +1,5 @@
{
"post-cache": "Post Cache",
"group-cache": "Group Cache",
"local-cache": "Local Cache",
"object-cache": "Object Cache",
"percent-full": "%1% Full",
"post-cache-size": "Post Cache Size",
"items-in-cache": "Items in Cache"

View File

@@ -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",

View File

@@ -91,7 +91,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>",

View File

@@ -76,7 +76,7 @@
"logout": "Log out",
"view-forum": "View Forum",
"search.placeholder": "Search settings",
"search.placeholder": "Press &quot;/&quot; 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...",

View File

@@ -3,7 +3,6 @@
"maintenance-mode.help": "When the forum is in maintenance mode, all requests will be redirected to a static holding page. Administrators are exempt from this redirection, and are able to access the site normally.",
"maintenance-mode.status": "Maintenance Mode Status Code",
"maintenance-mode.message": "Maintenance Message",
"maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode",
"headers": "Headers",
"headers.allow-from": "Set ALLOW-FROM to Place NodeBB in an iFrame",
"headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame",
@@ -18,10 +17,7 @@
"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",
"headers.permissions-policy": "Permissions-Policy",
"headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see <a href=\"https://github.com/w3c/webappsec-permissions-policy/blob/main/permissions-policy-explainer.md\">this</a> for more info.",
"hsts": "Strict Transport Security",
"hsts.enabled": "Enabled HSTS (recommended)",
"hsts.maxAge": "HSTS Max Age",

View File

@@ -5,18 +5,14 @@
"from": "From Name",
"from-help": "The from name to display in the email.",
"confirmation-settings": "Confirmation",
"confirmation.expiry": "Hours to keep email confirmation link valid",
"smtp-transport": "SMTP Transport",
"smtp-transport.enabled": "Enable SMTP Transport",
"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 &quot;Custom Service&quot; and enter the details below.",
"smtp-transport.gmail-warning1": "If you are using GMail as your email provider, you will have to generate an &quot;App Password&quot; 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&apos;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",

View File

@@ -51,7 +51,6 @@
"signature.disable": "Disable signatures",
"signature.no-links": "Disable links in signatures",
"signature.no-images": "Disable images in signatures",
"signature.hide-duplicates": "Hide duplicate signatures in topics",
"signature.max-length": "Maximum Signature Length",
"composer": "Composer Settings",
"composer-help": "The following settings govern the functionality and/or appearance of the post composer shown\n\t\t\t\tto users when they create new topics, or reply to existing topics.",

View File

@@ -10,7 +10,6 @@
"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",
@@ -23,9 +22,5 @@
"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 &quot;report&quot; 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",
"flags.action-on-resolve": "Do the following when a flag is resolved",
"flags.action-on-reject": "Do the following when a flag is rejected",
"flags.action.nothing": "Do nothing",
"flags.action.rescind": "Rescind the notification send to moderators/administrators"
"flags.auto-resolve-on-ban": "Automatically resolve all of a user's tickets when they are banned"
}

View File

@@ -1,11 +1,8 @@
{
"posts": "Posts",
"orphans": "Orphaned 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",

View File

@@ -1,7 +1,7 @@
{
"authentication": "Authentication",
"email-confirm-interval": "User may not resend a confirmation email until",
"email-confirm-interval2": "minutes have elapsed",
"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",

View File

@@ -61,7 +61,6 @@
"no-group": "এই গ্রুপ অস্তিত্বহীন",
"no-user": "এই নামে কোন সদস্য নেই",
"no-teaser": "টিজারটি খুজে পাওয়া যায় নি",
"no-flag": "Flag does not exist",
"no-privileges": "এই কাজটির জন্য আপনার পর্যাপ্ত অধিকার নেই",
"category-disabled": "বিভাগটি নিষ্ক্রিয়",
"topic-locked": "টপিক বন্ধ",
@@ -158,7 +157,6 @@
"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",
@@ -205,8 +203,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 &ndash; 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",

View File

@@ -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 &amp; Flag History",
"no-history": "No flag history.",

View File

@@ -6,8 +6,8 @@
"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": "সাম্প্রতিক চ্যাটসমূহ",

View File

@@ -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",

View File

@@ -17,15 +17,5 @@
"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"
"notify-user": "Notify User"
}

View File

@@ -113,7 +113,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": "টপিক সমূহ সরান",

View File

@@ -1,6 +1,5 @@
{
"banned": "নিষিদ্ধ",
"muted": "Muted",
"offline": "অফলাইন",
"deleted": "Deleted",
"username": "সদস্যের নাম",
@@ -157,10 +156,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",
@@ -194,6 +189,5 @@
"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.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."
}

View File

@@ -1,3 +0,0 @@
# The files here are not meant to be edited directly
Please see the &rarr; [Internalization README](../README.md).

View File

@@ -1,8 +1,5 @@
{
"post-cache": "Mezipaměť příspěvku",
"group-cache": "Group Cache",
"local-cache": "Local Cache",
"object-cache": "Object Cache",
"percent-full": "%1% plný",
"post-cache-size": "Velikost mezipaměti příspěvku",
"items-in-cache": "Položek v mezipaměti"

View File

@@ -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",

View File

@@ -91,7 +91,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>",

View File

@@ -76,7 +76,7 @@
"logout": "Odhlásit",
"view-forum": "Zobrazit fórum",
"search.placeholder": "Search settings",
"search.placeholder": "Press &quot;/&quot; 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ů…",

View File

@@ -3,7 +3,6 @@
"maintenance-mode.help": "Je-li fórum v režimu údržby, všechny požadavky budou přesměrovány na statickou stránku. Správci jsou vyloučeni z tohoto přesměrování a budou mít normálně zobrazené stránky.",
"maintenance-mode.status": "Stavový kód režimu údržby",
"maintenance-mode.message": "Zpráva údržby",
"maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode",
"headers": "Hlavičky",
"headers.allow-from": "Nastavte ALLOW-FROM pro umístění NodeBB do iFrame",
"headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame",
@@ -18,10 +17,7 @@
"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",
"headers.permissions-policy": "Permissions-Policy",
"headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see <a href=\"https://github.com/w3c/webappsec-permissions-policy/blob/main/permissions-policy-explainer.md\">this</a> for more info.",
"hsts": "Přísné zabezpečení přenosu",
"hsts.enabled": "Povolit HSTS (doporučeno)",
"hsts.maxAge": "HSTS Max Age",

View File

@@ -5,18 +5,14 @@
"from": "Jméno od",
"from-help": "Zobrazené jméno v e-mailu v Od",
"confirmation-settings": "Confirmation",
"confirmation.expiry": "Hours to keep email confirmation link valid",
"smtp-transport": "Přenos SMTP",
"smtp-transport.enabled": "Enable SMTP Transport",
"smtp-transport-help": "Ze seznamu můžete vybrat známé služby nebo zadat vlastní.",
"smtp-transport.service": "Vyberte službu",
"smtp-transport.service-custom": "Uživatelský služba",
"smtp-transport.service-help": "Select a service name above in order to use the known information about it. Alternatively, select &quot;Custom Service&quot; and enter the details below.",
"smtp-transport.gmail-warning1": "If you are using GMail as your email provider, you will have to generate an &quot;App Password&quot; 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&apos;re configuring an SMTP transport. We enabled the \"SMTP Transport\" option for you.",
"smtp-transport.service-help": "Pro použití známých informací, vyberte název služby. Nebo vyberte „uživatelskou službu” a zadejte detaily níže.",
"smtp-transport.gmail-warning1": "Někdy služba Gmail nefunguje správně s účty s nejvyšším zabezpečením. V těchto případech, musíte <a href=\"https://www.google.com/settings/security/lesssecureapps\">nakonfigurovat váš Gmail účet pro méně zabezpečené aplikace</a>.",
"smtp-transport.gmail-warning2": "Další informace o tomto řešení, <a href=\"https://nodemailer.com/usage/using-gmail/\">konzultujte s NodeMailer.</a>Alternativou je použití e-mailového rozšíření třetích stran jako je SendGrid, Mailgun atd.<a href=\"../extend/plugins\">Dostupné rozšíření zde</a>.",
"smtp-transport.host": "Hostitel SMTP",
"smtp-transport.port": "Port SMTP",
"smtp-transport.security": "Zabezpečení připojení",

View File

@@ -51,7 +51,6 @@
"signature.disable": "Zakázat podpisy",
"signature.no-links": "Zakázat odkazy v podpisech",
"signature.no-images": "Zakázat obrázky v podpisech",
"signature.hide-duplicates": "Hide duplicate signatures in topics",
"signature.max-length": "Maximální délka podpisu",
"composer": "Nastavení kompozice",
"composer-help": "Následující nastavení kontroluje funkčnost a/nebo vzhled zobrazených příspěvků\n\t\t\t\tpro uživatele, kteří vytvoří nové téma nebo odpovídají na existující téma.",

View File

@@ -10,7 +10,6 @@
"min-rep-downvote": "Minimální reputace pro vyjádření nesouhlasu s příspěvkem",
"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": "Minimální reputace pro označení příspěvků",
"min-rep-website": "Minimální reputace pro přidání „Webové stránky” do uživatelského profilu",
"min-rep-aboutme": "Minimální reputace pro přidání „O mně” do uživatelského profilu",
@@ -23,9 +22,5 @@
"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 &quot;report&quot; 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",
"flags.action-on-resolve": "Do the following when a flag is resolved",
"flags.action-on-reject": "Do the following when a flag is rejected",
"flags.action.nothing": "Do nothing",
"flags.action.rescind": "Rescind the notification send to moderators/administrators"
"flags.auto-resolve-on-ban": "Automatically resolve all of a user's tickets when they are banned"
}

View File

@@ -1,11 +1,8 @@
{
"posts": "Příspěvky",
"orphans": "Orphaned Files",
"private": "Nahrané soubory jsou soukromé",
"strip-exif-data": "Nepoužít data EXIF",
"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": "Přípona souborů je soukromá",
"private-uploads-extensions-help": "Pro nastavení soukromí, zde zadejte seznam souborů oddělený čárkou (tj. <code>pdf, xls,doc</code>). prázdný seznam znamená, že všechny soubory jsou soukromé.",
"resize-image-width-threshold": "Změnit velikost obrázků, jsou-li širší než určená šířka",

View File

@@ -1,7 +1,7 @@
{
"authentication": "Ověření",
"email-confirm-interval": "Uživatel nesmí požádat o znovu zaslání potvrzujícího e-mailu do",
"email-confirm-interval2": "minutes have elapsed",
"email-confirm-email2": "minut uplynulo",
"allow-login-with": "Povolit přihlášení pomocí",
"allow-login-with.username-email": "Uživatelské jméno nebo e-mail",
"allow-login-with.username": "Pouze uživatelské jméno",

View File

@@ -61,7 +61,6 @@
"no-group": "Skupina neexistuje",
"no-user": "Uživatel neexistuje",
"no-teaser": "Chyták neexistuje",
"no-flag": "Flag does not exist",
"no-privileges": "Na tuto akci nemáte dostatečné oprávnění.",
"category-disabled": "Kategorie zakázána",
"topic-locked": "Téma uzamknuto",
@@ -158,7 +157,6 @@
"already-voting-for-this-post": "Již jste v tomto příspěvku hlasoval.",
"reputation-system-disabled": "Systém reputací je zakázán.",
"downvoting-disabled": "Systém nesouhlasu je zakázán",
"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",
@@ -205,8 +203,6 @@
"no-connection": "Zdá se, že nastal problém s připojením k internetu",
"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 &ndash; 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",

View File

@@ -38,7 +38,6 @@
"delete-post": "Delete Post",
"purge-post": "Purge Post",
"restore-post": "Restore Post",
"delete": "Delete Flag",
"user-view": "Zobrazit profil",
"user-edit": "Upravit profil",
@@ -47,10 +46,8 @@
"add-note": "Přidat poznámku",
"no-notes": "Žádné sdílené poznámky.",
"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": "Poznámka přidána",
"note-deleted": "Note Deleted",
"flag-deleted": "Flag Deleted",
"history": "Account &amp; Flag History",
"no-history": "Žádná historie označení.",

View File

@@ -6,8 +6,8 @@
"chat.no_active": "Nemáte žádné aktivní konverzace.",
"chat.user_typing": "%1 píše…",
"chat.user_has_messaged_you": "%1 Vám napsal.",
"chat.see_all": "All chats",
"chat.mark_all_read": "Mark all read",
"chat.see_all": "Prohlédnout všechny konverzace",
"chat.mark_all_read": "Označit vše jako přečtené",
"chat.no-messages": "Vyberte příjemce k prohlédnutí historie zpráv.",
"chat.no-users-in-room": "Žádní uživatelé v místnosti.",
"chat.recent-chats": "Aktuální konverzace",

View File

@@ -1,8 +1,8 @@
{
"title": "Upozornění",
"no_notifs": "Nemáte žádná nová upozornění.",
"see_all": "All notifications",
"mark_all_read": "Mark all read",
"see_all": "Zobrazit všechna upozornění",
"mark_all_read": "Označit všechna upozornění jako přečtená",
"back_to_home": "Zpět na %1",
"outgoing_link": "Odkaz mimo fórum",
"outgoing_link_message": "Opouštíte %1",

View File

@@ -17,15 +17,5 @@
"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"
"notify-user": "Notify User"
}

View File

@@ -113,7 +113,6 @@
"bookmark": "Záložka",
"bookmarks": "Záložky",
"bookmarks.has_no_bookmarks": "Ještě jste nezazáložkoval žádný příspěvek.",
"copy-permalink": "Copy Permalink",
"loading_more_posts": "Načítání více příspěvků",
"move_topic": "Přesunout téma",
"move_topics": "Přesunout témata",

View File

@@ -1,6 +1,5 @@
{
"banned": "Zablokován",
"muted": "Muted",
"offline": "Nepřipojen",
"deleted": "Odstraněno",
"username": "Uživatelské jméno",
@@ -157,10 +156,6 @@
"info.banned-permanently": "Trvale zablokován",
"info.banned-reason-label": "Důvod",
"info.banned-no-reason": "Bez důvodu",
"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": "Historie uživatelského jména",
"info.email-history": "E-mailová historie",
@@ -194,6 +189,5 @@
"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.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."
}

View File

@@ -1,3 +0,0 @@
# The files here are not meant to be edited directly
Please see the &rarr; [Internalization README](../README.md).

View File

@@ -1,8 +1,5 @@
{
"post-cache": "Indlægs Cache",
"group-cache": "Group Cache",
"local-cache": "Local Cache",
"object-cache": "Object Cache",
"percent-full": "%1% Fuld",
"post-cache-size": "Indlægs Cache Størrelse",
"items-in-cache": "Ting i Cache"

View File

@@ -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",

View File

@@ -91,7 +91,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>",

View File

@@ -76,7 +76,7 @@
"logout": "Log out",
"view-forum": "View Forum",
"search.placeholder": "Search settings",
"search.placeholder": "Press &quot;/&quot; 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...",

View File

@@ -3,7 +3,6 @@
"maintenance-mode.help": "When the forum is in maintenance mode, all requests will be redirected to a static holding page. Administrators are exempt from this redirection, and are able to access the site normally.",
"maintenance-mode.status": "Maintenance Mode Status Code",
"maintenance-mode.message": "Maintenance Message",
"maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode",
"headers": "Headers",
"headers.allow-from": "Set ALLOW-FROM to Place NodeBB in an iFrame",
"headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame",
@@ -18,10 +17,7 @@
"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",
"headers.permissions-policy": "Permissions-Policy",
"headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see <a href=\"https://github.com/w3c/webappsec-permissions-policy/blob/main/permissions-policy-explainer.md\">this</a> for more info.",
"hsts": "Strict Transport Security",
"hsts.enabled": "Enabled HSTS (recommended)",
"hsts.maxAge": "HSTS Max Age",

View File

@@ -5,18 +5,14 @@
"from": "From Name",
"from-help": "The from name to display in the email.",
"confirmation-settings": "Confirmation",
"confirmation.expiry": "Hours to keep email confirmation link valid",
"smtp-transport": "SMTP Transport",
"smtp-transport.enabled": "Enable SMTP Transport",
"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 &quot;Custom Service&quot; and enter the details below.",
"smtp-transport.gmail-warning1": "If you are using GMail as your email provider, you will have to generate an &quot;App Password&quot; 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&apos;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",

View File

@@ -51,7 +51,6 @@
"signature.disable": "Disable signatures",
"signature.no-links": "Disable links in signatures",
"signature.no-images": "Disable images in signatures",
"signature.hide-duplicates": "Hide duplicate signatures in topics",
"signature.max-length": "Maximum Signature Length",
"composer": "Composer Settings",
"composer-help": "The following settings govern the functionality and/or appearance of the post composer shown\n\t\t\t\tto users when they create new topics, or reply to existing topics.",

View File

@@ -10,7 +10,6 @@
"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",
@@ -23,9 +22,5 @@
"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 &quot;report&quot; 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",
"flags.action-on-resolve": "Do the following when a flag is resolved",
"flags.action-on-reject": "Do the following when a flag is rejected",
"flags.action.nothing": "Do nothing",
"flags.action.rescind": "Rescind the notification send to moderators/administrators"
"flags.auto-resolve-on-ban": "Automatically resolve all of a user's tickets when they are banned"
}

View File

@@ -1,11 +1,8 @@
{
"posts": "Posts",
"orphans": "Orphaned 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",

View File

@@ -1,7 +1,7 @@
{
"authentication": "Authentication",
"email-confirm-interval": "User may not resend a confirmation email until",
"email-confirm-interval2": "minutes have elapsed",
"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",

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