mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-12-17 22:10:23 +01:00
Compare commits
1 Commits
v3.x
...
socket-not
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b08259e534 |
19
.github/workflows/docker.yml
vendored
19
.github/workflows/docker.yml
vendored
@@ -21,6 +21,8 @@ jobs:
|
||||
steps:
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
@@ -35,9 +37,6 @@ jobs:
|
||||
username: ${{ github.repository_owner }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Get current date in NST
|
||||
run: echo "CURRENT_DATE_NST=$(date +'%Y%m%d-%H%M%S' -d '-3 hours -30 minutes')" >> $GITHUB_ENV
|
||||
|
||||
- name: Docker meta
|
||||
id: meta
|
||||
uses: docker/metadata-action@v5
|
||||
@@ -49,22 +48,12 @@ jobs:
|
||||
type=semver,pattern={{major}}.x
|
||||
type=raw,value=latest,enable={{is_default_branch}}
|
||||
type=ref,event=branch,enable=${{ github.event.repository.default_branch != github.ref }}
|
||||
type=raw,value=${{ env.CURRENT_DATE_NST }}
|
||||
flavor: |
|
||||
latest=true
|
||||
|
||||
- name: Cache node_modules
|
||||
id: cache-node-modules
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: var-cache-node-modules
|
||||
key: var-cache-node-modules-${{ hashFiles('Dockerfile', 'install/package.json') }}
|
||||
|
||||
- name: Build and push Docker images
|
||||
uses: docker/build-push-action@v6
|
||||
uses: docker/build-push-action@v5
|
||||
with:
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha,mode=min
|
||||
cache-to: type=gha,mode=max
|
||||
context: .
|
||||
file: ./Dockerfile
|
||||
platforms: linux/amd64,linux/arm64,linux/arm/v7
|
||||
|
||||
10
.github/workflows/test.yaml
vendored
10
.github/workflows/test.yaml
vendored
@@ -48,7 +48,7 @@ jobs:
|
||||
|
||||
services:
|
||||
postgres:
|
||||
image: 'postgres:17-alpine'
|
||||
image: 'postgres:16-alpine'
|
||||
env:
|
||||
POSTGRES_USER: postgres
|
||||
POSTGRES_PASSWORD: postgres
|
||||
@@ -63,7 +63,7 @@ jobs:
|
||||
- 5432:5432
|
||||
|
||||
redis:
|
||||
image: 'redis:7.4.1'
|
||||
image: 'redis:7.2.3'
|
||||
# Set health checks to wait until redis has started
|
||||
options: >-
|
||||
--health-cmd "redis-cli ping"
|
||||
@@ -75,7 +75,7 @@ jobs:
|
||||
- 6379:6379
|
||||
|
||||
mongo:
|
||||
image: 'mongo:8.0'
|
||||
image: 'mongo:7.0'
|
||||
ports:
|
||||
# Maps port 27017 on service container to the host
|
||||
- 27017:27017
|
||||
@@ -192,7 +192,7 @@ jobs:
|
||||
run: npm run coverage
|
||||
|
||||
- name: Test coverage
|
||||
uses: coverallsapp/github-action@cfd0633edbd2411b532b808ba7a8b5e04f76d2c8 # v2.3.4
|
||||
uses: coverallsapp/github-action@3dfc5567390f6fa9267c0ee9c251e4c8c3f18949 # v2.2.3
|
||||
if: matrix.coverage
|
||||
with:
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
@@ -206,7 +206,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Coveralls Finished
|
||||
uses: coverallsapp/github-action@cfd0633edbd2411b532b808ba7a8b5e04f76d2c8 # v2.3.4
|
||||
uses: coverallsapp/github-action@3dfc5567390f6fa9267c0ee9c251e4c8c3f18949 # v2.2.3
|
||||
with:
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
parallel-finished: true
|
||||
|
||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -71,5 +71,4 @@ package-lock.json
|
||||
link-plugins.sh
|
||||
test.sh
|
||||
|
||||
.docker/**
|
||||
!**/.gitkeep
|
||||
.docker/
|
||||
387
.tx/config
387
.tx/config
@@ -28,7 +28,6 @@ trans.fa_IR = public/language/fa-IR/admin/admin.json
|
||||
trans.id = public/language/id/admin/admin.json
|
||||
trans.ms = public/language/ms/admin/admin.json
|
||||
trans.nb = public/language/nb/admin/admin.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/admin.json
|
||||
trans.sk = public/language/sk/admin/admin.json
|
||||
trans.cs = public/language/cs/admin/admin.json
|
||||
trans.fi = public/language/fi/admin/admin.json
|
||||
@@ -87,7 +86,6 @@ trans.bg = public/language/bg/admin/advanced/cache.json
|
||||
trans.cs = public/language/cs/admin/advanced/cache.json
|
||||
trans.lt = public/language/lt/admin/advanced/cache.json
|
||||
trans.nb = public/language/nb/admin/advanced/cache.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/advanced/cache.json
|
||||
trans.uk = public/language/uk/admin/advanced/cache.json
|
||||
trans.el = public/language/el/admin/advanced/cache.json
|
||||
trans.pl = public/language/pl/admin/advanced/cache.json
|
||||
@@ -129,7 +127,6 @@ trans.zh_TW = public/language/zh-TW/admin/advanced/database.json
|
||||
trans.gl = public/language/gl/admin/advanced/database.json
|
||||
trans.it = public/language/it/admin/advanced/database.json
|
||||
trans.nb = public/language/nb/admin/advanced/database.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/advanced/database.json
|
||||
trans.bn = public/language/bn/admin/advanced/database.json
|
||||
trans.da = public/language/da/admin/advanced/database.json
|
||||
trans.de = public/language/de/admin/advanced/database.json
|
||||
@@ -179,7 +176,6 @@ trans.vi = public/language/vi/admin/advanced/errors.json
|
||||
trans.de = public/language/de/admin/advanced/errors.json
|
||||
trans.ko = public/language/ko/admin/advanced/errors.json
|
||||
trans.nb = public/language/nb/admin/advanced/errors.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/advanced/errors.json
|
||||
trans.sc = public/language/sc/admin/advanced/errors.json
|
||||
trans.sl = public/language/sl/admin/advanced/errors.json
|
||||
trans.tr = public/language/tr/admin/advanced/errors.json
|
||||
@@ -236,7 +232,6 @@ trans.fa_IR = public/language/fa-IR/admin/advanced/events.json
|
||||
trans.ms = public/language/ms/admin/advanced/events.json
|
||||
trans.tr = public/language/tr/admin/advanced/events.json
|
||||
trans.nb = public/language/nb/admin/advanced/events.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/advanced/events.json
|
||||
trans.pt_PT = public/language/pt-PT/admin/advanced/events.json
|
||||
trans.sk = public/language/sk/admin/advanced/events.json
|
||||
trans.en@pirate = public/language/en-x-pirate/admin/advanced/events.json
|
||||
@@ -281,7 +276,6 @@ trans.hr = public/language/hr/admin/advanced/logs.json
|
||||
trans.ja = public/language/ja/admin/advanced/logs.json
|
||||
trans.lt = public/language/lt/admin/advanced/logs.json
|
||||
trans.nb = public/language/nb/admin/advanced/logs.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/advanced/logs.json
|
||||
trans.rw = public/language/rw/admin/advanced/logs.json
|
||||
trans.es = public/language/es/admin/advanced/logs.json
|
||||
trans.sv = public/language/sv/admin/advanced/logs.json
|
||||
@@ -334,7 +328,6 @@ trans.bg = public/language/bg/admin/appearance/customise.json
|
||||
trans.he = public/language/he/admin/appearance/customise.json
|
||||
trans.lt = public/language/lt/admin/appearance/customise.json
|
||||
trans.nb = public/language/nb/admin/appearance/customise.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/appearance/customise.json
|
||||
trans.pl = public/language/pl/admin/appearance/customise.json
|
||||
trans.sl = public/language/sl/admin/appearance/customise.json
|
||||
trans.zh_TW = public/language/zh-TW/admin/appearance/customise.json
|
||||
@@ -409,7 +402,6 @@ trans.en@pirate = public/language/en-x-pirate/admin/appearance/skins.json
|
||||
trans.it = public/language/it/admin/appearance/skins.json
|
||||
trans.ja = public/language/ja/admin/appearance/skins.json
|
||||
trans.nb = public/language/nb/admin/appearance/skins.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/appearance/skins.json
|
||||
trans.fr = public/language/fr/admin/appearance/skins.json
|
||||
trans.fa_IR = public/language/fa-IR/admin/appearance/skins.json
|
||||
trans.gl = public/language/gl/admin/appearance/skins.json
|
||||
@@ -461,7 +453,6 @@ trans.hy = public/language/hy/admin/appearance/themes.json
|
||||
trans.id = public/language/id/admin/appearance/themes.json
|
||||
trans.ko = public/language/ko/admin/appearance/themes.json
|
||||
trans.nb = public/language/nb/admin/appearance/themes.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/appearance/themes.json
|
||||
trans.pl = public/language/pl/admin/appearance/themes.json
|
||||
trans.pt_PT = public/language/pt-PT/admin/appearance/themes.json
|
||||
trans.tr = public/language/tr/admin/appearance/themes.json
|
||||
@@ -529,7 +520,6 @@ trans.fi = public/language/fi/admin/dashboard.json
|
||||
trans.hr = public/language/hr/admin/dashboard.json
|
||||
trans.it = public/language/it/admin/dashboard.json
|
||||
trans.nb = public/language/nb/admin/dashboard.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/dashboard.json
|
||||
|
||||
[o:nodebb:p:nodebb:r:admin-development-info]
|
||||
file_filter = public/language/<lang>/admin/development/info.json
|
||||
@@ -566,7 +556,6 @@ trans.zh_CN = public/language/zh-CN/admin/development/info.json
|
||||
trans.cs = public/language/cs/admin/development/info.json
|
||||
trans.ja = public/language/ja/admin/development/info.json
|
||||
trans.nb = public/language/nb/admin/development/info.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/development/info.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/development/info.json
|
||||
trans.sv = public/language/sv/admin/development/info.json
|
||||
trans.bg = public/language/bg/admin/development/info.json
|
||||
@@ -602,7 +591,6 @@ trans.id = public/language/id/admin/development/logger.json
|
||||
trans.ko = public/language/ko/admin/development/logger.json
|
||||
trans.lt = public/language/lt/admin/development/logger.json
|
||||
trans.nb = public/language/nb/admin/development/logger.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/development/logger.json
|
||||
trans.pt_BR = public/language/pt-BR/admin/development/logger.json
|
||||
trans.ro = public/language/ro/admin/development/logger.json
|
||||
trans.fi = public/language/fi/admin/development/logger.json
|
||||
@@ -654,7 +642,6 @@ trans.th = public/language/th/admin/extend/plugins.json
|
||||
trans.en_US = public/language/en-US/admin/extend/plugins.json
|
||||
trans.he = public/language/he/admin/extend/plugins.json
|
||||
trans.nb = public/language/nb/admin/extend/plugins.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/extend/plugins.json
|
||||
trans.sk = public/language/sk/admin/extend/plugins.json
|
||||
trans.uk = public/language/uk/admin/extend/plugins.json
|
||||
trans.es = public/language/es/admin/extend/plugins.json
|
||||
@@ -715,7 +702,6 @@ trans.hr = public/language/hr/admin/extend/rewards.json
|
||||
trans.ja = public/language/ja/admin/extend/rewards.json
|
||||
trans.ko = public/language/ko/admin/extend/rewards.json
|
||||
trans.nb = public/language/nb/admin/extend/rewards.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/extend/rewards.json
|
||||
trans.bg = public/language/bg/admin/extend/rewards.json
|
||||
trans.bn = public/language/bn/admin/extend/rewards.json
|
||||
trans.da = public/language/da/admin/extend/rewards.json
|
||||
@@ -752,7 +738,6 @@ trans.bn = public/language/bn/admin/extend/widgets.json
|
||||
trans.el = public/language/el/admin/extend/widgets.json
|
||||
trans.id = public/language/id/admin/extend/widgets.json
|
||||
trans.nb = public/language/nb/admin/extend/widgets.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/extend/widgets.json
|
||||
trans.ro = public/language/ro/admin/extend/widgets.json
|
||||
trans.rw = public/language/rw/admin/extend/widgets.json
|
||||
trans.ar = public/language/ar/admin/extend/widgets.json
|
||||
@@ -803,7 +788,6 @@ source_lang = en_GB
|
||||
type = KEYVALUEJSON
|
||||
trans.hu = public/language/hu/admin/manage/admins-mods.json
|
||||
trans.nb = public/language/nb/admin/manage/admins-mods.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/manage/admins-mods.json
|
||||
trans.ru = public/language/ru/admin/manage/admins-mods.json
|
||||
trans.fr = public/language/fr/admin/manage/admins-mods.json
|
||||
trans.he = public/language/he/admin/manage/admins-mods.json
|
||||
@@ -870,7 +854,6 @@ trans.en_US = public/language/en-US/admin/manage/categories.json
|
||||
trans.fr = public/language/fr/admin/manage/categories.json
|
||||
trans.it = public/language/it/admin/manage/categories.json
|
||||
trans.nb = public/language/nb/admin/manage/categories.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/manage/categories.json
|
||||
trans.ru = public/language/ru/admin/manage/categories.json
|
||||
trans.sr = public/language/sr/admin/manage/categories.json
|
||||
trans.fa_IR = public/language/fa-IR/admin/manage/categories.json
|
||||
@@ -947,7 +930,6 @@ trans.zh_CN = public/language/zh-CN/admin/manage/digest.json
|
||||
trans.ar = public/language/ar/admin/manage/digest.json
|
||||
trans.ja = public/language/ja/admin/manage/digest.json
|
||||
trans.nb = public/language/nb/admin/manage/digest.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/manage/digest.json
|
||||
trans.sk = public/language/sk/admin/manage/digest.json
|
||||
trans.pt_PT = public/language/pt-PT/admin/manage/digest.json
|
||||
trans.sc = public/language/sc/admin/manage/digest.json
|
||||
@@ -965,7 +947,6 @@ trans.tr = public/language/tr/admin/manage/groups.json
|
||||
trans.uk = public/language/uk/admin/manage/groups.json
|
||||
trans.zh_TW = public/language/zh-TW/admin/manage/groups.json
|
||||
trans.nb = public/language/nb/admin/manage/groups.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/manage/groups.json
|
||||
trans.id = public/language/id/admin/manage/groups.json
|
||||
trans.lt = public/language/lt/admin/manage/groups.json
|
||||
trans.pl = public/language/pl/admin/manage/groups.json
|
||||
@@ -1037,7 +1018,6 @@ trans.hy = public/language/hy/admin/manage/privileges.json
|
||||
trans.sr = public/language/sr/admin/manage/privileges.json
|
||||
trans.ja = public/language/ja/admin/manage/privileges.json
|
||||
trans.nb = public/language/nb/admin/manage/privileges.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/manage/privileges.json
|
||||
trans.nl = public/language/nl/admin/manage/privileges.json
|
||||
trans.sv = public/language/sv/admin/manage/privileges.json
|
||||
trans.et = public/language/et/admin/manage/privileges.json
|
||||
@@ -1081,7 +1061,6 @@ trans.da = public/language/da/admin/manage/registration.json
|
||||
trans.et = public/language/et/admin/manage/registration.json
|
||||
trans.it = public/language/it/admin/manage/registration.json
|
||||
trans.nb = public/language/nb/admin/manage/registration.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/manage/registration.json
|
||||
trans.pt_BR = public/language/pt-BR/admin/manage/registration.json
|
||||
trans.hy = public/language/hy/admin/manage/registration.json
|
||||
trans.uk = public/language/uk/admin/manage/registration.json
|
||||
@@ -1125,7 +1104,6 @@ trans.da = public/language/da/admin/manage/tags.json
|
||||
trans.en_US = public/language/en-US/admin/manage/tags.json
|
||||
trans.hu = public/language/hu/admin/manage/tags.json
|
||||
trans.nb = public/language/nb/admin/manage/tags.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/manage/tags.json
|
||||
trans.ru = public/language/ru/admin/manage/tags.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/manage/tags.json
|
||||
trans.de = public/language/de/admin/manage/tags.json
|
||||
@@ -1174,7 +1152,6 @@ source_lang = en_GB
|
||||
type = KEYVALUEJSON
|
||||
trans.ms = public/language/ms/admin/manage/uploads.json
|
||||
trans.nb = public/language/nb/admin/manage/uploads.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/manage/uploads.json
|
||||
trans.tr = public/language/tr/admin/manage/uploads.json
|
||||
trans.bg = public/language/bg/admin/manage/uploads.json
|
||||
trans.bn = public/language/bn/admin/manage/uploads.json
|
||||
@@ -1220,59 +1197,6 @@ trans.id = public/language/id/admin/manage/uploads.json
|
||||
trans.it = public/language/it/admin/manage/uploads.json
|
||||
trans.ja = public/language/ja/admin/manage/uploads.json
|
||||
|
||||
[o:nodebb:p:nodebb:r:admin-manage-user-custom-fields]
|
||||
file_filter = public/language/<lang>/admin/manage/user-custom-fields.json
|
||||
source_file = public/language/en-GB/admin/manage/user-custom-fields.json
|
||||
source_lang = en_GB
|
||||
type = KEYVALUEJSON
|
||||
trans.uk = public/language/uk/admin/manage/user-custom-fields.json
|
||||
trans.en@pirate = public/language/en-x-pirate/admin/manage/user-custom-fields.json
|
||||
trans.en_US = public/language/en-US/admin/manage/user-custom-fields.json
|
||||
trans.fr = public/language/fr/admin/manage/user-custom-fields.json
|
||||
trans.ko = public/language/ko/admin/manage/user-custom-fields.json
|
||||
trans.ms = public/language/ms/admin/manage/user-custom-fields.json
|
||||
trans.nb = public/language/nb/admin/manage/user-custom-fields.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/manage/user-custom-fields.json
|
||||
trans.pt_BR = public/language/pt-BR/admin/manage/user-custom-fields.json
|
||||
trans.zh_CN = public/language/zh-CN/admin/manage/user-custom-fields.json
|
||||
trans.zh_TW = public/language/zh-TW/admin/manage/user-custom-fields.json
|
||||
trans.cs = public/language/cs/admin/manage/user-custom-fields.json
|
||||
trans.gl = public/language/gl/admin/manage/user-custom-fields.json
|
||||
trans.rw = public/language/rw/admin/manage/user-custom-fields.json
|
||||
trans.bg = public/language/bg/admin/manage/user-custom-fields.json
|
||||
trans.de = public/language/de/admin/manage/user-custom-fields.json
|
||||
trans.et = public/language/et/admin/manage/user-custom-fields.json
|
||||
trans.id = public/language/id/admin/manage/user-custom-fields.json
|
||||
trans.pt_PT = public/language/pt-PT/admin/manage/user-custom-fields.json
|
||||
trans.ru = public/language/ru/admin/manage/user-custom-fields.json
|
||||
trans.da = public/language/da/admin/manage/user-custom-fields.json
|
||||
trans.he = public/language/he/admin/manage/user-custom-fields.json
|
||||
trans.hu = public/language/hu/admin/manage/user-custom-fields.json
|
||||
trans.ro = public/language/ro/admin/manage/user-custom-fields.json
|
||||
trans.bn = public/language/bn/admin/manage/user-custom-fields.json
|
||||
trans.es = public/language/es/admin/manage/user-custom-fields.json
|
||||
trans.it = public/language/it/admin/manage/user-custom-fields.json
|
||||
trans.nl = public/language/nl/admin/manage/user-custom-fields.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/manage/user-custom-fields.json
|
||||
trans.tr = public/language/tr/admin/manage/user-custom-fields.json
|
||||
trans.vi = public/language/vi/admin/manage/user-custom-fields.json
|
||||
trans.fi = public/language/fi/admin/manage/user-custom-fields.json
|
||||
trans.sc = public/language/sc/admin/manage/user-custom-fields.json
|
||||
trans.hy = public/language/hy/admin/manage/user-custom-fields.json
|
||||
trans.ja = public/language/ja/admin/manage/user-custom-fields.json
|
||||
trans.lt = public/language/lt/admin/manage/user-custom-fields.json
|
||||
trans.th = public/language/th/admin/manage/user-custom-fields.json
|
||||
trans.sl = public/language/sl/admin/manage/user-custom-fields.json
|
||||
trans.ar = public/language/ar/admin/manage/user-custom-fields.json
|
||||
trans.el = public/language/el/admin/manage/user-custom-fields.json
|
||||
trans.fa_IR = public/language/fa-IR/admin/manage/user-custom-fields.json
|
||||
trans.hr = public/language/hr/admin/manage/user-custom-fields.json
|
||||
trans.lv = public/language/lv/admin/manage/user-custom-fields.json
|
||||
trans.pl = public/language/pl/admin/manage/user-custom-fields.json
|
||||
trans.sk = public/language/sk/admin/manage/user-custom-fields.json
|
||||
trans.sr = public/language/sr/admin/manage/user-custom-fields.json
|
||||
trans.sv = public/language/sv/admin/manage/user-custom-fields.json
|
||||
|
||||
[o:nodebb:p:nodebb:r:admin-manage-users]
|
||||
file_filter = public/language/<lang>/admin/manage/users.json
|
||||
source_file = public/language/en-GB/admin/manage/users.json
|
||||
@@ -1285,7 +1209,6 @@ trans.fr = public/language/fr/admin/manage/users.json
|
||||
trans.ko = public/language/ko/admin/manage/users.json
|
||||
trans.ms = public/language/ms/admin/manage/users.json
|
||||
trans.nb = public/language/nb/admin/manage/users.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/manage/users.json
|
||||
trans.pt_BR = public/language/pt-BR/admin/manage/users.json
|
||||
trans.zh_CN = public/language/zh-CN/admin/manage/users.json
|
||||
trans.zh_TW = public/language/zh-TW/admin/manage/users.json
|
||||
@@ -1374,7 +1297,6 @@ trans.el = public/language/el/admin/menu.json
|
||||
trans.gl = public/language/gl/admin/menu.json
|
||||
trans.lv = public/language/lv/admin/menu.json
|
||||
trans.nb = public/language/nb/admin/menu.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/menu.json
|
||||
trans.pt_PT = public/language/pt-PT/admin/menu.json
|
||||
trans.bn = public/language/bn/admin/menu.json
|
||||
trans.et = public/language/et/admin/menu.json
|
||||
@@ -1402,7 +1324,6 @@ trans.rw = public/language/rw/admin/settings/advanced.json
|
||||
trans.sl = public/language/sl/admin/settings/advanced.json
|
||||
trans.it = public/language/it/admin/settings/advanced.json
|
||||
trans.nb = public/language/nb/admin/settings/advanced.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/settings/advanced.json
|
||||
trans.pt_PT = public/language/pt-PT/admin/settings/advanced.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/settings/advanced.json
|
||||
trans.sr = public/language/sr/admin/settings/advanced.json
|
||||
@@ -1459,7 +1380,6 @@ trans.zh_TW = public/language/zh-TW/admin/settings/api.json
|
||||
trans.cs = public/language/cs/admin/settings/api.json
|
||||
trans.it = public/language/it/admin/settings/api.json
|
||||
trans.nb = public/language/nb/admin/settings/api.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/settings/api.json
|
||||
trans.pt_PT = public/language/pt-PT/admin/settings/api.json
|
||||
trans.ru = public/language/ru/admin/settings/api.json
|
||||
trans.uk = public/language/uk/admin/settings/api.json
|
||||
@@ -1508,7 +1428,6 @@ trans.hr = public/language/hr/admin/settings/chat.json
|
||||
trans.ja = public/language/ja/admin/settings/chat.json
|
||||
trans.ko = public/language/ko/admin/settings/chat.json
|
||||
trans.nb = public/language/nb/admin/settings/chat.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/settings/chat.json
|
||||
trans.nl = public/language/nl/admin/settings/chat.json
|
||||
trans.uk = public/language/uk/admin/settings/chat.json
|
||||
trans.he = public/language/he/admin/settings/chat.json
|
||||
@@ -1576,7 +1495,6 @@ trans.hr = public/language/hr/admin/settings/cookies.json
|
||||
trans.ja = public/language/ja/admin/settings/cookies.json
|
||||
trans.pt_PT = public/language/pt-PT/admin/settings/cookies.json
|
||||
trans.nb = public/language/nb/admin/settings/cookies.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/settings/cookies.json
|
||||
trans.sc = public/language/sc/admin/settings/cookies.json
|
||||
trans.bg = public/language/bg/admin/settings/cookies.json
|
||||
trans.fi = public/language/fi/admin/settings/cookies.json
|
||||
@@ -1605,7 +1523,6 @@ trans.pt_PT = public/language/pt-PT/admin/settings/email.json
|
||||
trans.sr = public/language/sr/admin/settings/email.json
|
||||
trans.ms = public/language/ms/admin/settings/email.json
|
||||
trans.nb = public/language/nb/admin/settings/email.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/settings/email.json
|
||||
trans.ru = public/language/ru/admin/settings/email.json
|
||||
trans.sk = public/language/sk/admin/settings/email.json
|
||||
trans.fr = public/language/fr/admin/settings/email.json
|
||||
@@ -1682,7 +1599,6 @@ trans.es = public/language/es/admin/settings/general.json
|
||||
trans.fa_IR = public/language/fa-IR/admin/settings/general.json
|
||||
trans.ms = public/language/ms/admin/settings/general.json
|
||||
trans.nb = public/language/nb/admin/settings/general.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/settings/general.json
|
||||
trans.sr = public/language/sr/admin/settings/general.json
|
||||
trans.da = public/language/da/admin/settings/general.json
|
||||
trans.en@pirate = public/language/en-x-pirate/admin/settings/general.json
|
||||
@@ -1708,7 +1624,6 @@ trans.et = public/language/et/admin/settings/group.json
|
||||
trans.fr = public/language/fr/admin/settings/group.json
|
||||
trans.it = public/language/it/admin/settings/group.json
|
||||
trans.nb = public/language/nb/admin/settings/group.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/settings/group.json
|
||||
trans.es = public/language/es/admin/settings/group.json
|
||||
trans.fa_IR = public/language/fa-IR/admin/settings/group.json
|
||||
trans.gl = public/language/gl/admin/settings/group.json
|
||||
@@ -1750,6 +1665,162 @@ trans.pt_BR = public/language/pt-BR/admin/settings/group.json
|
||||
trans.zh_CN = public/language/zh-CN/admin/settings/group.json
|
||||
trans.zh_TW = public/language/zh-TW/admin/settings/group.json
|
||||
|
||||
[o:nodebb:p:nodebb:r:admin-settings-guest]
|
||||
file_filter = public/language/<lang>/admin/settings/guest.json
|
||||
source_file = public/language/en-GB/admin/settings/guest.json
|
||||
source_lang = en_GB
|
||||
type = KEYVALUEJSON
|
||||
trans.cs = public/language/cs/admin/settings/guest.json
|
||||
trans.da = public/language/da/admin/settings/guest.json
|
||||
trans.en_US = public/language/en-US/admin/settings/guest.json
|
||||
trans.lt = public/language/lt/admin/settings/guest.json
|
||||
trans.ms = public/language/ms/admin/settings/guest.json
|
||||
trans.nl = public/language/nl/admin/settings/guest.json
|
||||
trans.ru = public/language/ru/admin/settings/guest.json
|
||||
trans.sc = public/language/sc/admin/settings/guest.json
|
||||
trans.sr = public/language/sr/admin/settings/guest.json
|
||||
trans.th = public/language/th/admin/settings/guest.json
|
||||
trans.en@pirate = public/language/en-x-pirate/admin/settings/guest.json
|
||||
trans.it = public/language/it/admin/settings/guest.json
|
||||
trans.lv = public/language/lv/admin/settings/guest.json
|
||||
trans.pt_BR = public/language/pt-BR/admin/settings/guest.json
|
||||
trans.sk = public/language/sk/admin/settings/guest.json
|
||||
trans.de = public/language/de/admin/settings/guest.json
|
||||
trans.es = public/language/es/admin/settings/guest.json
|
||||
trans.hr = public/language/hr/admin/settings/guest.json
|
||||
trans.pt_PT = public/language/pt-PT/admin/settings/guest.json
|
||||
trans.rw = public/language/rw/admin/settings/guest.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/settings/guest.json
|
||||
trans.el = public/language/el/admin/settings/guest.json
|
||||
trans.tr = public/language/tr/admin/settings/guest.json
|
||||
trans.zh_CN = public/language/zh-CN/admin/settings/guest.json
|
||||
trans.bg = public/language/bg/admin/settings/guest.json
|
||||
trans.fi = public/language/fi/admin/settings/guest.json
|
||||
trans.hu = public/language/hu/admin/settings/guest.json
|
||||
trans.ja = public/language/ja/admin/settings/guest.json
|
||||
trans.nb = public/language/nb/admin/settings/guest.json
|
||||
trans.pl = public/language/pl/admin/settings/guest.json
|
||||
trans.sl = public/language/sl/admin/settings/guest.json
|
||||
trans.vi = public/language/vi/admin/settings/guest.json
|
||||
trans.bn = public/language/bn/admin/settings/guest.json
|
||||
trans.fa_IR = public/language/fa-IR/admin/settings/guest.json
|
||||
trans.fr = public/language/fr/admin/settings/guest.json
|
||||
trans.hy = public/language/hy/admin/settings/guest.json
|
||||
trans.ro = public/language/ro/admin/settings/guest.json
|
||||
trans.et = public/language/et/admin/settings/guest.json
|
||||
trans.gl = public/language/gl/admin/settings/guest.json
|
||||
trans.sv = public/language/sv/admin/settings/guest.json
|
||||
trans.uk = public/language/uk/admin/settings/guest.json
|
||||
trans.zh_TW = public/language/zh-TW/admin/settings/guest.json
|
||||
trans.ar = public/language/ar/admin/settings/guest.json
|
||||
trans.he = public/language/he/admin/settings/guest.json
|
||||
trans.id = public/language/id/admin/settings/guest.json
|
||||
trans.ko = public/language/ko/admin/settings/guest.json
|
||||
|
||||
[o:nodebb:p:nodebb:r:admin-settings-homepage]
|
||||
file_filter = public/language/<lang>/admin/settings/homepage.json
|
||||
source_file = public/language/en-GB/admin/settings/homepage.json
|
||||
source_lang = en_GB
|
||||
type = KEYVALUEJSON
|
||||
trans.nb = public/language/nb/admin/settings/homepage.json
|
||||
trans.tr = public/language/tr/admin/settings/homepage.json
|
||||
trans.vi = public/language/vi/admin/settings/homepage.json
|
||||
trans.et = public/language/et/admin/settings/homepage.json
|
||||
trans.fi = public/language/fi/admin/settings/homepage.json
|
||||
trans.hy = public/language/hy/admin/settings/homepage.json
|
||||
trans.ru = public/language/ru/admin/settings/homepage.json
|
||||
trans.sr = public/language/sr/admin/settings/homepage.json
|
||||
trans.es = public/language/es/admin/settings/homepage.json
|
||||
trans.id = public/language/id/admin/settings/homepage.json
|
||||
trans.lt = public/language/lt/admin/settings/homepage.json
|
||||
trans.sk = public/language/sk/admin/settings/homepage.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/settings/homepage.json
|
||||
trans.th = public/language/th/admin/settings/homepage.json
|
||||
trans.en_US = public/language/en-US/admin/settings/homepage.json
|
||||
trans.lv = public/language/lv/admin/settings/homepage.json
|
||||
trans.pt_PT = public/language/pt-PT/admin/settings/homepage.json
|
||||
trans.sc = public/language/sc/admin/settings/homepage.json
|
||||
trans.fa_IR = public/language/fa-IR/admin/settings/homepage.json
|
||||
trans.he = public/language/he/admin/settings/homepage.json
|
||||
trans.ms = public/language/ms/admin/settings/homepage.json
|
||||
trans.cs = public/language/cs/admin/settings/homepage.json
|
||||
trans.el = public/language/el/admin/settings/homepage.json
|
||||
trans.en@pirate = public/language/en-x-pirate/admin/settings/homepage.json
|
||||
trans.gl = public/language/gl/admin/settings/homepage.json
|
||||
trans.ko = public/language/ko/admin/settings/homepage.json
|
||||
trans.ar = public/language/ar/admin/settings/homepage.json
|
||||
trans.bg = public/language/bg/admin/settings/homepage.json
|
||||
trans.bn = public/language/bn/admin/settings/homepage.json
|
||||
trans.rw = public/language/rw/admin/settings/homepage.json
|
||||
trans.zh_CN = public/language/zh-CN/admin/settings/homepage.json
|
||||
trans.hr = public/language/hr/admin/settings/homepage.json
|
||||
trans.it = public/language/it/admin/settings/homepage.json
|
||||
trans.ja = public/language/ja/admin/settings/homepage.json
|
||||
trans.nl = public/language/nl/admin/settings/homepage.json
|
||||
trans.ro = public/language/ro/admin/settings/homepage.json
|
||||
trans.da = public/language/da/admin/settings/homepage.json
|
||||
trans.de = public/language/de/admin/settings/homepage.json
|
||||
trans.fr = public/language/fr/admin/settings/homepage.json
|
||||
trans.sv = public/language/sv/admin/settings/homepage.json
|
||||
trans.hu = public/language/hu/admin/settings/homepage.json
|
||||
trans.pt_BR = public/language/pt-BR/admin/settings/homepage.json
|
||||
trans.sl = public/language/sl/admin/settings/homepage.json
|
||||
trans.pl = public/language/pl/admin/settings/homepage.json
|
||||
trans.uk = public/language/uk/admin/settings/homepage.json
|
||||
trans.zh_TW = public/language/zh-TW/admin/settings/homepage.json
|
||||
|
||||
[o:nodebb:p:nodebb:r:admin-settings-languages]
|
||||
file_filter = public/language/<lang>/admin/settings/languages.json
|
||||
source_file = public/language/en-GB/admin/settings/languages.json
|
||||
source_lang = en_GB
|
||||
type = KEYVALUEJSON
|
||||
trans.en@pirate = public/language/en-x-pirate/admin/settings/languages.json
|
||||
trans.fa_IR = public/language/fa-IR/admin/settings/languages.json
|
||||
trans.gl = public/language/gl/admin/settings/languages.json
|
||||
trans.ro = public/language/ro/admin/settings/languages.json
|
||||
trans.th = public/language/th/admin/settings/languages.json
|
||||
trans.hr = public/language/hr/admin/settings/languages.json
|
||||
trans.hy = public/language/hy/admin/settings/languages.json
|
||||
trans.sc = public/language/sc/admin/settings/languages.json
|
||||
trans.vi = public/language/vi/admin/settings/languages.json
|
||||
trans.tr = public/language/tr/admin/settings/languages.json
|
||||
trans.cs = public/language/cs/admin/settings/languages.json
|
||||
trans.et = public/language/et/admin/settings/languages.json
|
||||
trans.lv = public/language/lv/admin/settings/languages.json
|
||||
trans.pl = public/language/pl/admin/settings/languages.json
|
||||
trans.sr = public/language/sr/admin/settings/languages.json
|
||||
trans.sv = public/language/sv/admin/settings/languages.json
|
||||
trans.hu = public/language/hu/admin/settings/languages.json
|
||||
trans.it = public/language/it/admin/settings/languages.json
|
||||
trans.ja = public/language/ja/admin/settings/languages.json
|
||||
trans.sl = public/language/sl/admin/settings/languages.json
|
||||
trans.zh_TW = public/language/zh-TW/admin/settings/languages.json
|
||||
trans.da = public/language/da/admin/settings/languages.json
|
||||
trans.fr = public/language/fr/admin/settings/languages.json
|
||||
trans.he = public/language/he/admin/settings/languages.json
|
||||
trans.id = public/language/id/admin/settings/languages.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/settings/languages.json
|
||||
trans.uk = public/language/uk/admin/settings/languages.json
|
||||
trans.bn = public/language/bn/admin/settings/languages.json
|
||||
trans.fi = public/language/fi/admin/settings/languages.json
|
||||
trans.ko = public/language/ko/admin/settings/languages.json
|
||||
trans.pt_BR = public/language/pt-BR/admin/settings/languages.json
|
||||
trans.sk = public/language/sk/admin/settings/languages.json
|
||||
trans.pt_PT = public/language/pt-PT/admin/settings/languages.json
|
||||
trans.ru = public/language/ru/admin/settings/languages.json
|
||||
trans.ar = public/language/ar/admin/settings/languages.json
|
||||
trans.bg = public/language/bg/admin/settings/languages.json
|
||||
trans.de = public/language/de/admin/settings/languages.json
|
||||
trans.el = public/language/el/admin/settings/languages.json
|
||||
trans.lt = public/language/lt/admin/settings/languages.json
|
||||
trans.nl = public/language/nl/admin/settings/languages.json
|
||||
trans.zh_CN = public/language/zh-CN/admin/settings/languages.json
|
||||
trans.en_US = public/language/en-US/admin/settings/languages.json
|
||||
trans.es = public/language/es/admin/settings/languages.json
|
||||
trans.ms = public/language/ms/admin/settings/languages.json
|
||||
trans.nb = public/language/nb/admin/settings/languages.json
|
||||
trans.rw = public/language/rw/admin/settings/languages.json
|
||||
|
||||
[o:nodebb:p:nodebb:r:admin-settings-navigation]
|
||||
file_filter = public/language/<lang>/admin/settings/navigation.json
|
||||
source_file = public/language/en-GB/admin/settings/navigation.json
|
||||
@@ -1796,7 +1867,6 @@ trans.hr = public/language/hr/admin/settings/navigation.json
|
||||
trans.id = public/language/id/admin/settings/navigation.json
|
||||
trans.ko = public/language/ko/admin/settings/navigation.json
|
||||
trans.nb = public/language/nb/admin/settings/navigation.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/settings/navigation.json
|
||||
trans.pl = public/language/pl/admin/settings/navigation.json
|
||||
trans.sv = public/language/sv/admin/settings/navigation.json
|
||||
trans.el = public/language/el/admin/settings/navigation.json
|
||||
@@ -1843,7 +1913,6 @@ trans.zh_CN = public/language/zh-CN/admin/settings/notifications.json
|
||||
trans.ko = public/language/ko/admin/settings/notifications.json
|
||||
trans.lv = public/language/lv/admin/settings/notifications.json
|
||||
trans.nb = public/language/nb/admin/settings/notifications.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/settings/notifications.json
|
||||
trans.pl = public/language/pl/admin/settings/notifications.json
|
||||
trans.bg = public/language/bg/admin/settings/notifications.json
|
||||
trans.da = public/language/da/admin/settings/notifications.json
|
||||
@@ -1905,7 +1974,6 @@ trans.zh_TW = public/language/zh-TW/admin/settings/pagination.json
|
||||
trans.bn = public/language/bn/admin/settings/pagination.json
|
||||
trans.hy = public/language/hy/admin/settings/pagination.json
|
||||
trans.nb = public/language/nb/admin/settings/pagination.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/settings/pagination.json
|
||||
trans.sr = public/language/sr/admin/settings/pagination.json
|
||||
trans.sv = public/language/sv/admin/settings/pagination.json
|
||||
|
||||
@@ -1939,7 +2007,6 @@ trans.it = public/language/it/admin/settings/post.json
|
||||
trans.th = public/language/th/admin/settings/post.json
|
||||
trans.gl = public/language/gl/admin/settings/post.json
|
||||
trans.nb = public/language/nb/admin/settings/post.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/settings/post.json
|
||||
trans.sc = public/language/sc/admin/settings/post.json
|
||||
trans.zh_CN = public/language/zh-CN/admin/settings/post.json
|
||||
trans.rw = public/language/rw/admin/settings/post.json
|
||||
@@ -1987,7 +2054,6 @@ trans.sc = public/language/sc/admin/settings/reputation.json
|
||||
trans.hr = public/language/hr/admin/settings/reputation.json
|
||||
trans.ko = public/language/ko/admin/settings/reputation.json
|
||||
trans.nb = public/language/nb/admin/settings/reputation.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/settings/reputation.json
|
||||
trans.bn = public/language/bn/admin/settings/reputation.json
|
||||
trans.de = public/language/de/admin/settings/reputation.json
|
||||
trans.et = public/language/et/admin/settings/reputation.json
|
||||
@@ -2015,6 +2081,58 @@ trans.gl = public/language/gl/admin/settings/reputation.json
|
||||
trans.hu = public/language/hu/admin/settings/reputation.json
|
||||
trans.hy = public/language/hy/admin/settings/reputation.json
|
||||
|
||||
[o:nodebb:p:nodebb:r:admin-settings-social]
|
||||
file_filter = public/language/<lang>/admin/settings/social.json
|
||||
source_file = public/language/en-GB/admin/settings/social.json
|
||||
source_lang = en_GB
|
||||
type = KEYVALUEJSON
|
||||
trans.nl = public/language/nl/admin/settings/social.json
|
||||
trans.sc = public/language/sc/admin/settings/social.json
|
||||
trans.sv = public/language/sv/admin/settings/social.json
|
||||
trans.rw = public/language/rw/admin/settings/social.json
|
||||
trans.bn = public/language/bn/admin/settings/social.json
|
||||
trans.hr = public/language/hr/admin/settings/social.json
|
||||
trans.id = public/language/id/admin/settings/social.json
|
||||
trans.pt_PT = public/language/pt-PT/admin/settings/social.json
|
||||
trans.de = public/language/de/admin/settings/social.json
|
||||
trans.hu = public/language/hu/admin/settings/social.json
|
||||
trans.pt_BR = public/language/pt-BR/admin/settings/social.json
|
||||
trans.ja = public/language/ja/admin/settings/social.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/settings/social.json
|
||||
trans.zh_TW = public/language/zh-TW/admin/settings/social.json
|
||||
trans.cs = public/language/cs/admin/settings/social.json
|
||||
trans.en_US = public/language/en-US/admin/settings/social.json
|
||||
trans.fi = public/language/fi/admin/settings/social.json
|
||||
trans.nb = public/language/nb/admin/settings/social.json
|
||||
trans.pl = public/language/pl/admin/settings/social.json
|
||||
trans.th = public/language/th/admin/settings/social.json
|
||||
trans.bg = public/language/bg/admin/settings/social.json
|
||||
trans.lt = public/language/lt/admin/settings/social.json
|
||||
trans.lv = public/language/lv/admin/settings/social.json
|
||||
trans.ko = public/language/ko/admin/settings/social.json
|
||||
trans.es = public/language/es/admin/settings/social.json
|
||||
trans.fr = public/language/fr/admin/settings/social.json
|
||||
trans.he = public/language/he/admin/settings/social.json
|
||||
trans.fa_IR = public/language/fa-IR/admin/settings/social.json
|
||||
trans.hy = public/language/hy/admin/settings/social.json
|
||||
trans.ms = public/language/ms/admin/settings/social.json
|
||||
trans.ru = public/language/ru/admin/settings/social.json
|
||||
trans.sk = public/language/sk/admin/settings/social.json
|
||||
trans.ar = public/language/ar/admin/settings/social.json
|
||||
trans.el = public/language/el/admin/settings/social.json
|
||||
trans.en@pirate = public/language/en-x-pirate/admin/settings/social.json
|
||||
trans.uk = public/language/uk/admin/settings/social.json
|
||||
trans.sl = public/language/sl/admin/settings/social.json
|
||||
trans.sr = public/language/sr/admin/settings/social.json
|
||||
trans.tr = public/language/tr/admin/settings/social.json
|
||||
trans.it = public/language/it/admin/settings/social.json
|
||||
trans.ro = public/language/ro/admin/settings/social.json
|
||||
trans.vi = public/language/vi/admin/settings/social.json
|
||||
trans.zh_CN = public/language/zh-CN/admin/settings/social.json
|
||||
trans.da = public/language/da/admin/settings/social.json
|
||||
trans.et = public/language/et/admin/settings/social.json
|
||||
trans.gl = public/language/gl/admin/settings/social.json
|
||||
|
||||
[o:nodebb:p:nodebb:r:admin-settings-sockets]
|
||||
file_filter = public/language/<lang>/admin/settings/sockets.json
|
||||
source_file = public/language/en-GB/admin/settings/sockets.json
|
||||
@@ -2043,7 +2161,6 @@ trans.fi = public/language/fi/admin/settings/sockets.json
|
||||
trans.it = public/language/it/admin/settings/sockets.json
|
||||
trans.ro = public/language/ro/admin/settings/sockets.json
|
||||
trans.nb = public/language/nb/admin/settings/sockets.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/settings/sockets.json
|
||||
trans.sq_AL = public/language/sq-AL/admin/settings/sockets.json
|
||||
trans.bg = public/language/bg/admin/settings/sockets.json
|
||||
trans.bn = public/language/bn/admin/settings/sockets.json
|
||||
@@ -2094,7 +2211,6 @@ trans.en@pirate = public/language/en-x-pirate/admin/settings/sounds.json
|
||||
trans.fa_IR = public/language/fa-IR/admin/settings/sounds.json
|
||||
trans.fi = public/language/fi/admin/settings/sounds.json
|
||||
trans.nb = public/language/nb/admin/settings/sounds.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/settings/sounds.json
|
||||
trans.th = public/language/th/admin/settings/sounds.json
|
||||
trans.ar = public/language/ar/admin/settings/sounds.json
|
||||
trans.da = public/language/da/admin/settings/sounds.json
|
||||
@@ -2150,7 +2266,6 @@ trans.bn = public/language/bn/admin/settings/tags.json
|
||||
trans.hr = public/language/hr/admin/settings/tags.json
|
||||
trans.ko = public/language/ko/admin/settings/tags.json
|
||||
trans.nb = public/language/nb/admin/settings/tags.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/settings/tags.json
|
||||
trans.el = public/language/el/admin/settings/tags.json
|
||||
trans.et = public/language/et/admin/settings/tags.json
|
||||
trans.he = public/language/he/admin/settings/tags.json
|
||||
@@ -2188,7 +2303,6 @@ trans.fa_IR = public/language/fa-IR/admin/settings/uploads.json
|
||||
trans.he = public/language/he/admin/settings/uploads.json
|
||||
trans.ja = public/language/ja/admin/settings/uploads.json
|
||||
trans.nb = public/language/nb/admin/settings/uploads.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/settings/uploads.json
|
||||
trans.nl = public/language/nl/admin/settings/uploads.json
|
||||
trans.zh_TW = public/language/zh-TW/admin/settings/uploads.json
|
||||
trans.ro = public/language/ro/admin/settings/uploads.json
|
||||
@@ -2240,7 +2354,6 @@ trans.sq_AL = public/language/sq-AL/admin/settings/user.json
|
||||
trans.gl = public/language/gl/admin/settings/user.json
|
||||
trans.hu = public/language/hu/admin/settings/user.json
|
||||
trans.nb = public/language/nb/admin/settings/user.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/settings/user.json
|
||||
trans.sv = public/language/sv/admin/settings/user.json
|
||||
trans.uk = public/language/uk/admin/settings/user.json
|
||||
trans.cs = public/language/cs/admin/settings/user.json
|
||||
@@ -2319,7 +2432,6 @@ trans.ar = public/language/ar/admin/settings/web-crawler.json
|
||||
trans.de = public/language/de/admin/settings/web-crawler.json
|
||||
trans.hy = public/language/hy/admin/settings/web-crawler.json
|
||||
trans.nb = public/language/nb/admin/settings/web-crawler.json
|
||||
trans.nn_NO = public/language/nn-NO/admin/settings/web-crawler.json
|
||||
trans.ro = public/language/ro/admin/settings/web-crawler.json
|
||||
trans.sr = public/language/sr/admin/settings/web-crawler.json
|
||||
trans.zh_TW = public/language/zh-TW/admin/settings/web-crawler.json
|
||||
@@ -2366,7 +2478,6 @@ trans.zh_CN = public/language/zh-CN/themes/harmony.json
|
||||
trans.fi = public/language/fi/themes/harmony.json
|
||||
trans.ja = public/language/ja/themes/harmony.json
|
||||
trans.nb = public/language/nb/themes/harmony.json
|
||||
trans.nn_NO = public/language/nn-NO/themes/harmony.json
|
||||
trans.pl = public/language/pl/themes/harmony.json
|
||||
trans.zh_TW = public/language/zh-TW/themes/harmony.json
|
||||
trans.ar = public/language/ar/themes/harmony.json
|
||||
@@ -2419,7 +2530,6 @@ trans.zh_CN = public/language/zh-CN/themes/persona.json
|
||||
trans.fi = public/language/fi/themes/persona.json
|
||||
trans.ja = public/language/ja/themes/persona.json
|
||||
trans.nb = public/language/nb/themes/persona.json
|
||||
trans.nn_NO = public/language/nn-NO/themes/persona.json
|
||||
trans.pl = public/language/pl/themes/persona.json
|
||||
trans.zh_TW = public/language/zh-TW/themes/persona.json
|
||||
trans.ar = public/language/ar/themes/persona.json
|
||||
@@ -2439,60 +2549,6 @@ trans.et = public/language/et/themes/persona.json
|
||||
trans.it = public/language/it/themes/persona.json
|
||||
trans.rw = public/language/rw/themes/persona.json
|
||||
|
||||
|
||||
[o:nodebb:p:nodebb:r:aria]
|
||||
file_filter = public/language/<lang>/aria.json
|
||||
source_file = public/language/en-GB/aria.json
|
||||
source_lang = en_GB
|
||||
type = KEYVALUEJSON
|
||||
trans.th = public/language/th/aria.json
|
||||
trans.bg = public/language/bg/aria.json
|
||||
trans.hr = public/language/hr/aria.json
|
||||
trans.hy = public/language/hy/aria.json
|
||||
trans.sk = public/language/sk/aria.json
|
||||
trans.sl = public/language/sl/aria.json
|
||||
trans.sq_AL = public/language/sq-AL/aria.json
|
||||
trans.sv = public/language/sv/aria.json
|
||||
trans.vi = public/language/vi/aria.json
|
||||
trans.da = public/language/da/aria.json
|
||||
trans.en_US = public/language/en-US/aria.json
|
||||
trans.gl = public/language/gl/aria.json
|
||||
trans.ko = public/language/ko/aria.json
|
||||
trans.lt = public/language/lt/aria.json
|
||||
trans.pt_BR = public/language/pt-BR/aria.json
|
||||
trans.hu = public/language/hu/aria.json
|
||||
trans.lv = public/language/lv/aria.json
|
||||
trans.ro = public/language/ro/aria.json
|
||||
trans.ru = public/language/ru/aria.json
|
||||
trans.sr = public/language/sr/aria.json
|
||||
trans.bn = public/language/bn/aria.json
|
||||
trans.he = public/language/he/aria.json
|
||||
trans.nl = public/language/nl/aria.json
|
||||
trans.sc = public/language/sc/aria.json
|
||||
trans.zh_CN = public/language/zh-CN/aria.json
|
||||
trans.fi = public/language/fi/aria.json
|
||||
trans.ja = public/language/ja/aria.json
|
||||
trans.nb = public/language/nb/aria.json
|
||||
trans.nn_NO = public/language/nn-NO/aria.json
|
||||
trans.pl = public/language/pl/aria.json
|
||||
trans.zh_TW = public/language/zh-TW/aria.json
|
||||
trans.ar = public/language/ar/aria.json
|
||||
trans.cs = public/language/cs/aria.json
|
||||
trans.fa_IR = public/language/fa-IR/aria.json
|
||||
trans.ms = public/language/ms/aria.json
|
||||
trans.pt_PT = public/language/pt-PT/aria.json
|
||||
trans.tr = public/language/tr/aria.json
|
||||
trans.en@pirate = public/language/en-x-pirate/aria.json
|
||||
trans.fr = public/language/fr/aria.json
|
||||
trans.id = public/language/id/aria.json
|
||||
trans.uk = public/language/uk/aria.json
|
||||
trans.de = public/language/de/aria.json
|
||||
trans.el = public/language/el/aria.json
|
||||
trans.es = public/language/es/aria.json
|
||||
trans.et = public/language/et/aria.json
|
||||
trans.it = public/language/it/aria.json
|
||||
trans.rw = public/language/rw/aria.json
|
||||
|
||||
[o:nodebb:p:nodebb:r:category]
|
||||
file_filter = public/language/<lang>/category.json
|
||||
source_file = public/language/en-GB/category.json
|
||||
@@ -2526,7 +2582,6 @@ trans.zh_CN = public/language/zh-CN/category.json
|
||||
trans.fi = public/language/fi/category.json
|
||||
trans.ja = public/language/ja/category.json
|
||||
trans.nb = public/language/nb/category.json
|
||||
trans.nn_NO = public/language/nn-NO/category.json
|
||||
trans.pl = public/language/pl/category.json
|
||||
trans.zh_TW = public/language/zh-TW/category.json
|
||||
trans.ar = public/language/ar/category.json
|
||||
@@ -2593,7 +2648,6 @@ trans.sr = public/language/sr/email.json
|
||||
trans.tr = public/language/tr/email.json
|
||||
trans.en_US = public/language/en-US/email.json
|
||||
trans.nb = public/language/nb/email.json
|
||||
trans.nn_NO = public/language/nn-NO/email.json
|
||||
trans.nl = public/language/nl/email.json
|
||||
trans.pt_BR = public/language/pt-BR/email.json
|
||||
trans.rw = public/language/rw/email.json
|
||||
@@ -2632,7 +2686,6 @@ trans.vi = public/language/vi/error.json
|
||||
trans.fa_IR = public/language/fa-IR/error.json
|
||||
trans.gl = public/language/gl/error.json
|
||||
trans.nb = public/language/nb/error.json
|
||||
trans.nn_NO = public/language/nn-NO/error.json
|
||||
trans.pl = public/language/pl/error.json
|
||||
trans.ro = public/language/ro/error.json
|
||||
trans.uk = public/language/uk/error.json
|
||||
@@ -2658,7 +2711,6 @@ source_file = public/language/en-GB/flags.json
|
||||
source_lang = en_GB
|
||||
type = KEYVALUEJSON
|
||||
trans.nb = public/language/nb/flags.json
|
||||
trans.nn_NO = public/language/nn-NO/flags.json
|
||||
trans.ru = public/language/ru/flags.json
|
||||
trans.sc = public/language/sc/flags.json
|
||||
trans.fi = public/language/fi/flags.json
|
||||
@@ -2729,7 +2781,6 @@ trans.sk = public/language/sk/global.json
|
||||
trans.sr = public/language/sr/global.json
|
||||
trans.tr = public/language/tr/global.json
|
||||
trans.nb = public/language/nb/global.json
|
||||
trans.nn_NO = public/language/nn-NO/global.json
|
||||
trans.pt_BR = public/language/pt-BR/global.json
|
||||
trans.pt_PT = public/language/pt-PT/global.json
|
||||
trans.bg = public/language/bg/global.json
|
||||
@@ -2773,7 +2824,6 @@ trans.hy = public/language/hy/groups.json
|
||||
trans.pt_PT = public/language/pt-PT/groups.json
|
||||
trans.ms = public/language/ms/groups.json
|
||||
trans.nb = public/language/nb/groups.json
|
||||
trans.nn_NO = public/language/nn-NO/groups.json
|
||||
trans.ro = public/language/ro/groups.json
|
||||
trans.vi = public/language/vi/groups.json
|
||||
trans.fa_IR = public/language/fa-IR/groups.json
|
||||
@@ -2836,7 +2886,6 @@ trans.fa_IR = public/language/fa-IR/ip-blacklist.json
|
||||
trans.fr = public/language/fr/ip-blacklist.json
|
||||
trans.gl = public/language/gl/ip-blacklist.json
|
||||
trans.nb = public/language/nb/ip-blacklist.json
|
||||
trans.nn_NO = public/language/nn-NO/ip-blacklist.json
|
||||
trans.sv = public/language/sv/ip-blacklist.json
|
||||
trans.th = public/language/th/ip-blacklist.json
|
||||
trans.bn = public/language/bn/ip-blacklist.json
|
||||
@@ -2882,7 +2931,6 @@ trans.en_US = public/language/en-US/language.json
|
||||
trans.et = public/language/et/language.json
|
||||
trans.ja = public/language/ja/language.json
|
||||
trans.nb = public/language/nb/language.json
|
||||
trans.nn_NO = public/language/nn-NO/language.json
|
||||
trans.sk = public/language/sk/language.json
|
||||
trans.el = public/language/el/language.json
|
||||
trans.es = public/language/es/language.json
|
||||
@@ -2959,7 +3007,6 @@ trans.en@pirate = public/language/en-x-pirate/login.json
|
||||
trans.hy = public/language/hy/login.json
|
||||
trans.id = public/language/id/login.json
|
||||
trans.nb = public/language/nb/login.json
|
||||
trans.nn_NO = public/language/nn-NO/login.json
|
||||
trans.ru = public/language/ru/login.json
|
||||
trans.rw = public/language/rw/login.json
|
||||
trans.th = public/language/th/login.json
|
||||
@@ -2987,7 +3034,6 @@ trans.fa_IR = public/language/fa-IR/modules.json
|
||||
trans.hr = public/language/hr/modules.json
|
||||
trans.lv = public/language/lv/modules.json
|
||||
trans.nb = public/language/nb/modules.json
|
||||
trans.nn_NO = public/language/nn-NO/modules.json
|
||||
trans.ro = public/language/ro/modules.json
|
||||
trans.sv = public/language/sv/modules.json
|
||||
trans.en@pirate = public/language/en-x-pirate/modules.json
|
||||
@@ -3069,7 +3115,6 @@ trans.ms = public/language/ms/notifications.json
|
||||
trans.hr = public/language/hr/notifications.json
|
||||
trans.id = public/language/id/notifications.json
|
||||
trans.nb = public/language/nb/notifications.json
|
||||
trans.nn_NO = public/language/nn-NO/notifications.json
|
||||
trans.ar = public/language/ar/notifications.json
|
||||
trans.da = public/language/da/notifications.json
|
||||
trans.en@pirate = public/language/en-x-pirate/notifications.json
|
||||
@@ -3082,7 +3127,6 @@ source_lang = en_GB
|
||||
type = KEYVALUEJSON
|
||||
trans.he = public/language/he/pages.json
|
||||
trans.nb = public/language/nb/pages.json
|
||||
trans.nn_NO = public/language/nn-NO/pages.json
|
||||
trans.sv = public/language/sv/pages.json
|
||||
trans.pt_BR = public/language/pt-BR/pages.json
|
||||
trans.tr = public/language/tr/pages.json
|
||||
@@ -3179,7 +3223,6 @@ trans.pt_PT = public/language/pt-PT/post-queue.json
|
||||
trans.fi = public/language/fi/post-queue.json
|
||||
trans.he = public/language/he/post-queue.json
|
||||
trans.nb = public/language/nb/post-queue.json
|
||||
trans.nn_NO = public/language/nn-NO/post-queue.json
|
||||
|
||||
[o:nodebb:p:nodebb:r:recent]
|
||||
file_filter = public/language/<lang>/recent.json
|
||||
@@ -3219,7 +3262,6 @@ trans.bn = public/language/bn/recent.json
|
||||
trans.en@pirate = public/language/en-x-pirate/recent.json
|
||||
trans.ja = public/language/ja/recent.json
|
||||
trans.nb = public/language/nb/recent.json
|
||||
trans.nn_NO = public/language/nn-NO/recent.json
|
||||
trans.nl = public/language/nl/recent.json
|
||||
trans.sv = public/language/sv/recent.json
|
||||
trans.th = public/language/th/recent.json
|
||||
@@ -3257,7 +3299,6 @@ trans.bg = public/language/bg/register.json
|
||||
trans.de = public/language/de/register.json
|
||||
trans.hr = public/language/hr/register.json
|
||||
trans.nb = public/language/nb/register.json
|
||||
trans.nn_NO = public/language/nn-NO/register.json
|
||||
trans.gl = public/language/gl/register.json
|
||||
trans.sk = public/language/sk/register.json
|
||||
trans.hy = public/language/hy/register.json
|
||||
@@ -3327,7 +3368,6 @@ trans.en_US = public/language/en-US/reset_password.json
|
||||
trans.lt = public/language/lt/reset_password.json
|
||||
trans.lv = public/language/lv/reset_password.json
|
||||
trans.nb = public/language/nb/reset_password.json
|
||||
trans.nn_NO = public/language/nn-NO/reset_password.json
|
||||
trans.sk = public/language/sk/reset_password.json
|
||||
trans.el = public/language/el/reset_password.json
|
||||
trans.es = public/language/es/reset_password.json
|
||||
@@ -3380,7 +3420,6 @@ trans.en_US = public/language/en-US/rewards.json
|
||||
trans.lt = public/language/lt/rewards.json
|
||||
trans.lv = public/language/lv/rewards.json
|
||||
trans.nb = public/language/nb/rewards.json
|
||||
trans.nn_NO = public/language/nn-NO/rewards.json
|
||||
trans.sk = public/language/sk/rewards.json
|
||||
trans.el = public/language/el/rewards.json
|
||||
trans.es = public/language/es/rewards.json
|
||||
@@ -3423,7 +3462,6 @@ trans.zh_TW = public/language/zh-TW/search.json
|
||||
trans.cs = public/language/cs/search.json
|
||||
trans.he = public/language/he/search.json
|
||||
trans.nb = public/language/nb/search.json
|
||||
trans.nn_NO = public/language/nn-NO/search.json
|
||||
trans.zh_CN = public/language/zh-CN/search.json
|
||||
trans.lv = public/language/lv/search.json
|
||||
trans.rw = public/language/rw/search.json
|
||||
@@ -3476,7 +3514,6 @@ trans.zh_TW = public/language/zh-TW/social.json
|
||||
trans.cs = public/language/cs/social.json
|
||||
trans.he = public/language/he/social.json
|
||||
trans.nb = public/language/nb/social.json
|
||||
trans.nn_NO = public/language/nn-NO/social.json
|
||||
trans.zh_CN = public/language/zh-CN/social.json
|
||||
trans.lv = public/language/lv/social.json
|
||||
trans.rw = public/language/rw/social.json
|
||||
@@ -3548,7 +3585,6 @@ trans.da = public/language/da/success.json
|
||||
trans.el = public/language/el/success.json
|
||||
trans.gl = public/language/gl/success.json
|
||||
trans.nb = public/language/nb/success.json
|
||||
trans.nn_NO = public/language/nn-NO/success.json
|
||||
trans.sr = public/language/sr/success.json
|
||||
trans.uk = public/language/uk/success.json
|
||||
|
||||
@@ -3592,7 +3628,6 @@ trans.gl = public/language/gl/tags.json
|
||||
trans.lv = public/language/lv/tags.json
|
||||
trans.ms = public/language/ms/tags.json
|
||||
trans.nb = public/language/nb/tags.json
|
||||
trans.nn_NO = public/language/nn-NO/tags.json
|
||||
trans.sv = public/language/sv/tags.json
|
||||
trans.sq_AL = public/language/sq-AL/tags.json
|
||||
trans.zh_TW = public/language/zh-TW/tags.json
|
||||
@@ -3651,7 +3686,6 @@ trans.sv = public/language/sv/top.json
|
||||
trans.th = public/language/th/top.json
|
||||
trans.it = public/language/it/top.json
|
||||
trans.nb = public/language/nb/top.json
|
||||
trans.nn_NO = public/language/nn-NO/top.json
|
||||
trans.sr = public/language/sr/top.json
|
||||
trans.tr = public/language/tr/top.json
|
||||
trans.zh_TW = public/language/zh-TW/top.json
|
||||
@@ -3666,7 +3700,6 @@ type = KEYVALUEJSON
|
||||
trans.et = public/language/et/topic.json
|
||||
trans.hu = public/language/hu/topic.json
|
||||
trans.nb = public/language/nb/topic.json
|
||||
trans.nn_NO = public/language/nn-NO/topic.json
|
||||
trans.nl = public/language/nl/topic.json
|
||||
trans.sk = public/language/sk/topic.json
|
||||
trans.ar = public/language/ar/topic.json
|
||||
@@ -3749,7 +3782,6 @@ trans.sk = public/language/sk/unread.json
|
||||
trans.bn = public/language/bn/unread.json
|
||||
trans.cs = public/language/cs/unread.json
|
||||
trans.nb = public/language/nb/unread.json
|
||||
trans.nn_NO = public/language/nn-NO/unread.json
|
||||
trans.rw = public/language/rw/unread.json
|
||||
trans.sq_AL = public/language/sq-AL/unread.json
|
||||
trans.tr = public/language/tr/unread.json
|
||||
@@ -3794,7 +3826,6 @@ trans.et = public/language/et/uploads.json
|
||||
trans.id = public/language/id/uploads.json
|
||||
trans.ms = public/language/ms/uploads.json
|
||||
trans.nb = public/language/nb/uploads.json
|
||||
trans.nn_NO = public/language/nn-NO/uploads.json
|
||||
trans.pt_PT = public/language/pt-PT/uploads.json
|
||||
trans.da = public/language/da/uploads.json
|
||||
trans.es = public/language/es/uploads.json
|
||||
@@ -3864,7 +3895,6 @@ trans.hr = public/language/hr/user.json
|
||||
trans.hy = public/language/hy/user.json
|
||||
trans.ja = public/language/ja/user.json
|
||||
trans.nb = public/language/nb/user.json
|
||||
trans.nn_NO = public/language/nn-NO/user.json
|
||||
trans.nl = public/language/nl/user.json
|
||||
trans.ro = public/language/ro/user.json
|
||||
trans.sc = public/language/sc/user.json
|
||||
@@ -3898,7 +3928,6 @@ trans.he = public/language/he/users.json
|
||||
trans.ja = public/language/ja/users.json
|
||||
trans.ko = public/language/ko/users.json
|
||||
trans.nb = public/language/nb/users.json
|
||||
trans.nn_NO = public/language/nn-NO/users.json
|
||||
trans.pt_PT = public/language/pt-PT/users.json
|
||||
trans.sr = public/language/sr/users.json
|
||||
trans.zh_CN = public/language/zh-CN/users.json
|
||||
|
||||
2475
CHANGELOG.md
2475
CHANGELOG.md
File diff suppressed because it is too large
Load Diff
94
Dockerfile
94
Dockerfile
@@ -1,75 +1,51 @@
|
||||
FROM node:lts as build
|
||||
FROM --platform=$BUILDPLATFORM node:lts as npm
|
||||
|
||||
ENV NODE_ENV=production \
|
||||
DAEMON=false \
|
||||
SILENT=false \
|
||||
USER=nodebb \
|
||||
UID=1001 \
|
||||
GID=1001
|
||||
RUN mkdir -p /usr/src/build && \
|
||||
chown -R node:node /usr/src/build
|
||||
WORKDIR /usr/src/build
|
||||
|
||||
WORKDIR /usr/src/app/
|
||||
ARG NODE_ENV
|
||||
ENV NODE_ENV $NODE_ENV
|
||||
|
||||
COPY . /usr/src/app/
|
||||
COPY --chown=node:node install/package.json /usr/src/build/package.json
|
||||
|
||||
# Install corepack to allow usage of other package managers
|
||||
RUN corepack enable
|
||||
|
||||
# Removing unnecessary files for us
|
||||
RUN find . -mindepth 1 -maxdepth 1 -name '.*' ! -name '.' ! -name '..' -exec bash -c 'echo "Deleting {}"; rm -rf {}' \;
|
||||
|
||||
# Prepage package.json
|
||||
RUN cp /usr/src/app/install/package.json /usr/src/app/
|
||||
|
||||
RUN apt-get update \
|
||||
&& DEBIAN_FRONTEND=noninteractive \
|
||||
apt-get -y --no-install-recommends install \
|
||||
tini
|
||||
|
||||
RUN groupadd --gid ${GID} ${USER} \
|
||||
&& useradd --uid ${UID} --gid ${GID} --home-dir /usr/src/app/ --shell /bin/bash ${USER} \
|
||||
&& chown -R ${USER}:${USER} /usr/src/app/
|
||||
|
||||
USER ${USER}
|
||||
USER node
|
||||
|
||||
RUN npm install --omit=dev
|
||||
# TODO: generate lockfiles for each package manager
|
||||
## pnpm import \
|
||||
|
||||
FROM node:lts-slim AS final
|
||||
FROM node:lts as rebuild
|
||||
|
||||
ENV NODE_ENV=production \
|
||||
DAEMON=false \
|
||||
SILENT=false \
|
||||
USER=nodebb \
|
||||
UID=1001 \
|
||||
GID=1001
|
||||
ARG BUILDPLATFORM
|
||||
ARG TARGETPLATFORM
|
||||
|
||||
WORKDIR /usr/src/app/
|
||||
RUN mkdir -p /usr/src/build && \
|
||||
chown -R node:node /usr/src/build
|
||||
|
||||
RUN corepack enable \
|
||||
&& groupadd --gid ${GID} ${USER} \
|
||||
&& useradd --uid ${UID} --gid ${GID} --home-dir /usr/src/app/ --shell /bin/bash ${USER} \
|
||||
&& mkdir -p /usr/src/app/logs/ /opt/config/ \
|
||||
&& chown -R ${USER}:${USER} /usr/src/app/ /opt/config/
|
||||
COPY --from=npm /usr/src/build /usr/src/build
|
||||
|
||||
COPY --from=build --chown=${USER}:${USER} /usr/src/app/ /usr/src/app/install/docker/setup.json /usr/src/app/
|
||||
COPY --from=build --chown=${USER}:${USER} /usr/bin/tini /usr/src/app/install/docker/entrypoint.sh /usr/local/bin/
|
||||
RUN if [ $BUILDPLATFORM != $TARGETPLATFORM ]; then \
|
||||
npm rebuild && \
|
||||
npm cache clean --force; fi
|
||||
|
||||
RUN chmod +x /usr/local/bin/entrypoint.sh \
|
||||
&& chmod +x /usr/local/bin/tini
|
||||
FROM node:lts-slim as run
|
||||
|
||||
# TODO: Have docker-compose use environment variables to create files like setup.json and config.json.
|
||||
# COPY --from=hairyhenderson/gomplate:stable /gomplate /usr/local/bin/gomplate
|
||||
ARG NODE_ENV
|
||||
ENV NODE_ENV=$NODE_ENV \
|
||||
daemon=false \
|
||||
silent=false
|
||||
|
||||
USER ${USER}
|
||||
RUN mkdir -p /usr/src/app && \
|
||||
chown -R node:node /usr/src/app
|
||||
|
||||
COPY --chown=node:node --from=rebuild /usr/src/build /usr/src/app
|
||||
|
||||
|
||||
WORKDIR /usr/src/app
|
||||
|
||||
USER node
|
||||
|
||||
COPY --chown=node:node . /usr/src/app
|
||||
|
||||
EXPOSE 4567
|
||||
|
||||
VOLUME ["/usr/src/app/node_modules", "/usr/src/app/build", "/usr/src/app/public/uploads", "/opt/config/"]
|
||||
|
||||
# Utilising tini as our init system within the Docker container for graceful start-up and termination.
|
||||
# Tini serves as an uncomplicated init system, adept at managing the reaping of zombie processes and forwarding signals.
|
||||
# This approach is crucial to circumvent issues with unmanaged subprocesses and signal handling in containerised environments.
|
||||
# By integrating tini, we enhance the reliability and stability of our Docker containers.
|
||||
# Ensures smooth start-up and shutdown processes, and reliable, safe handling of signal processing.
|
||||
ENTRYPOINT ["tini", "--", "entrypoint.sh"]
|
||||
VOLUME ["/usr/src/app/node_modules", "/usr/src/app/build", "/usr/src/app/public/uploads", "/opt/config"]
|
||||
ENTRYPOINT ["./install/docker/entrypoint.sh"]
|
||||
@@ -39,7 +39,7 @@ Our minimalist "Harmony" theme gets you going right away, no coding experience r
|
||||
|
||||
NodeBB requires the following software to be installed:
|
||||
|
||||
* A version of Node.js at least 18 or greater ([installation/upgrade instructions](https://github.com/nodesource/distributions))
|
||||
* A version of Node.js at least 16 or greater ([installation/upgrade instructions](https://github.com/nodesource/distributions))
|
||||
* MongoDB, version 3.6 or greater **or** Redis, version 2.8.9 or greater
|
||||
* If you are using [clustering](https://docs.nodebb.org/configuring/scaling/) you need Redis installed and configured.
|
||||
* nginx, version 1.3.13 or greater (**only if** intending to use nginx to proxy requests to a NodeBB)
|
||||
|
||||
@@ -1,77 +0,0 @@
|
||||
FROM node:lts AS git
|
||||
|
||||
ENV USER=nodebb \
|
||||
UID=1001 \
|
||||
GID=1001
|
||||
|
||||
WORKDIR /usr/src/app/
|
||||
|
||||
RUN groupadd --gid ${GID} ${USER} \
|
||||
&& useradd --uid ${UID} --gid ${GID} --home-dir /usr/src/app/ --shell /bin/bash ${USER} \
|
||||
&& chown -R ${USER}:${USER} /usr/src/app/
|
||||
|
||||
RUN apt-get update \
|
||||
&& apt-get -y --no-install-recommends install tini
|
||||
|
||||
USER ${USER}
|
||||
|
||||
# Change to the git branch you want to test
|
||||
RUN git clone --recurse-submodules -j8 --depth 1 https://github.com/NodeBB/NodeBB.git .
|
||||
|
||||
RUN find . -mindepth 1 -maxdepth 1 -name '.*' ! -name '.' ! -name '..' -exec bash -c 'echo "Deleting {}"; rm -rf {}' \;
|
||||
|
||||
FROM node:lts AS node_modules_touch
|
||||
|
||||
ENV NODE_ENV=development \
|
||||
USER=nodebb \
|
||||
UID=1001 \
|
||||
GID=1001
|
||||
|
||||
WORKDIR /usr/src/app/
|
||||
|
||||
RUN corepack enable \
|
||||
&& groupadd --gid ${GID} ${USER} \
|
||||
&& useradd --uid ${UID} --gid ${GID} --home-dir /usr/src/app/ --shell /bin/bash ${USER} \
|
||||
&& chown -R ${USER}:${USER} /usr/src/app/
|
||||
|
||||
COPY --from=git --chown=${USER}:${USER} /usr/src/app/install/package.json /usr/src/app/
|
||||
|
||||
USER ${USER}
|
||||
|
||||
RUN npm install
|
||||
|
||||
FROM node:lts-slim AS final
|
||||
|
||||
ENV NODE_ENV=development \
|
||||
DAEMON=false \
|
||||
SILENT=false \
|
||||
USER=nodebb \
|
||||
UID=1001 \
|
||||
GID=1001
|
||||
|
||||
WORKDIR /usr/src/app/
|
||||
|
||||
RUN corepack enable \
|
||||
&& groupadd --gid ${GID} ${USER} \
|
||||
&& useradd --uid ${UID} --gid ${GID} --home-dir /usr/src/app/ --shell /bin/bash ${USER} \
|
||||
&& mkdir -p /usr/src/app/logs/ /opt/config/ \
|
||||
&& chown -R ${USER}:${USER} /usr/src/app/ /opt/config/
|
||||
|
||||
COPY --from=build --chown=${USER}:${USER} /usr/src/app/ /usr/src/app/install/docker/setup.json /usr/src/app/
|
||||
COPY --from=build --chown=${USER}:${USER} /usr/bin/tini /usr/src/app/install/docker/entrypoint.sh /usr/local/bin/
|
||||
COPY --from=node_modules_touch --chown=${USER}:${USER} /usr/src/app/ /usr/src/app/
|
||||
COPY --from=git --chown=${USER}:${USER} /usr/src/app/ /usr/src/app/
|
||||
|
||||
RUN chmod +x /usr/local/bin/entrypoint.sh \
|
||||
&& chmod +x /usr/local/bin/tini
|
||||
|
||||
# TODO: Have docker-compose use environment variables to create files like setup.json and config.json.
|
||||
# COPY --from=hairyhenderson/gomplate:stable /gomplate /usr/local/bin/gomplate
|
||||
|
||||
USER ${USER}
|
||||
|
||||
EXPOSE 4567
|
||||
|
||||
VOLUME ["/usr/src/app/node_modules", "/usr/src/app/build", "/usr/src/app/public/uploads", "/opt/config/"]
|
||||
|
||||
ENTRYPOINT ["tini", "--", "entrypoint.sh"]
|
||||
@@ -1,70 +0,0 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
nodebb:
|
||||
build: .
|
||||
# image: ghcr.io/nodebb/nodebb:latest
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- '4567:4567' # comment this out if you don't want to expose NodeBB to the host, or change the first number to any port you want
|
||||
volumes:
|
||||
- nodebb-build:/usr/src/app/build
|
||||
- nodebb-uploads:/usr/src/app/public/uploads
|
||||
- nodebb-config:/opt/config
|
||||
- ./install/docker/setup.json:/usr/src/app/setup.json
|
||||
|
||||
postgres:
|
||||
image: postgres:17.2-alpine
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
POSTGRES_USER: nodebb
|
||||
POSTGRES_PASSWORD: nodebb
|
||||
POSTGRES_DB: nodebb
|
||||
volumes:
|
||||
- postgres-data:/var/lib/postgresql/data
|
||||
|
||||
redis:
|
||||
image: redis:7.4.1-alpine
|
||||
restart: unless-stopped
|
||||
command: ['redis-server', '--appendonly', 'yes', '--loglevel', 'warning']
|
||||
# command: ["redis-server", "--save", "60", "1", "--loglevel", "warning"] # uncomment if you want to use snapshotting instead of AOF
|
||||
volumes:
|
||||
- redis-data:/data
|
||||
profiles:
|
||||
- redis
|
||||
|
||||
volumes:
|
||||
postgres-data:
|
||||
driver: local
|
||||
driver_opts:
|
||||
o: bind
|
||||
type: none
|
||||
device: ./.docker/database/postgresql/data
|
||||
|
||||
redis-data:
|
||||
driver: local
|
||||
driver_opts:
|
||||
o: bind
|
||||
type: none
|
||||
device: ./.docker/database/redis
|
||||
|
||||
nodebb-build:
|
||||
driver: local
|
||||
driver_opts:
|
||||
o: bind
|
||||
type: none
|
||||
device: ./.docker/build
|
||||
|
||||
nodebb-uploads:
|
||||
driver: local
|
||||
driver_opts:
|
||||
o: bind
|
||||
type: none
|
||||
device: ./.docker/public/uploads
|
||||
|
||||
nodebb-config:
|
||||
driver: local
|
||||
driver_opts:
|
||||
o: bind
|
||||
type: none
|
||||
device: ./.docker/config
|
||||
@@ -1,51 +0,0 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
nodebb:
|
||||
build: .
|
||||
# image: ghcr.io/nodebb/nodebb:latest
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- '4567:4567' # comment this out if you don't want to expose NodeBB to the host, or change the first number to any port you want
|
||||
volumes:
|
||||
- nodebb-build:/usr/src/app/build
|
||||
- nodebb-uploads:/usr/src/app/public/uploads
|
||||
- nodebb-config:/opt/config
|
||||
- ./install/docker/setup.json:/usr/src/app/setup.json
|
||||
|
||||
redis:
|
||||
image: redis:7.4.1-alpine
|
||||
restart: unless-stopped
|
||||
command: ['redis-server', '--appendonly', 'yes', '--loglevel', 'warning']
|
||||
# command: ["redis-server", "--save", "60", "1", "--loglevel", "warning"] # uncomment if you want to use snapshotting instead of AOF
|
||||
volumes:
|
||||
- redis-data:/data
|
||||
|
||||
volumes:
|
||||
redis-data:
|
||||
driver: local
|
||||
driver_opts:
|
||||
o: bind
|
||||
type: none
|
||||
device: ./.docker/database/redis
|
||||
|
||||
nodebb-build:
|
||||
driver: local
|
||||
driver_opts:
|
||||
o: bind
|
||||
type: none
|
||||
device: ./.docker/build
|
||||
|
||||
nodebb-uploads:
|
||||
driver: local
|
||||
driver_opts:
|
||||
o: bind
|
||||
type: none
|
||||
device: ./.docker/public/uploads
|
||||
|
||||
nodebb-config:
|
||||
driver: local
|
||||
driver_opts:
|
||||
o: bind
|
||||
type: none
|
||||
device: ./.docker/config
|
||||
@@ -1,89 +1,55 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
nodebb:
|
||||
build: .
|
||||
# image: ghcr.io/nodebb/nodebb:latest
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- '4567:4567' # comment this out if you don't want to expose NodeBB to the host, or change the first number to any port you want
|
||||
- "4567:4567/tcp" # comment this out if you don't want to expose NodeBB to the host, or change the first number to any port you want
|
||||
# uncomment if you want to use another container as a reverse proxy
|
||||
# expose:
|
||||
# - 4567
|
||||
volumes:
|
||||
- nodebb-build:/usr/src/app/build
|
||||
- nodebb-uploads:/usr/src/app/public/uploads
|
||||
- nodebb-config:/opt/config
|
||||
- ./.docker/build:/usr/src/app/build
|
||||
- ./.docker/public/uploads:/usr/src/app/public/uploads
|
||||
- ./.docker:/opt/config
|
||||
- ./install/docker/setup.json:/usr/src/app/setup.json
|
||||
|
||||
mongo:
|
||||
image: 'mongo:7-jammy'
|
||||
image: "mongo:7-jammy"
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- '27017:27017'
|
||||
expose:
|
||||
- "27017"
|
||||
environment:
|
||||
MONGO_INITDB_ROOT_USERNAME: nodebb
|
||||
MONGO_INITDB_ROOT_PASSWORD: nodebb
|
||||
MONGO_INITDB_DATABASE: nodebb
|
||||
volumes:
|
||||
- mongo-data:/data/db
|
||||
- ./.docker/database/mongo/config:/etc/mongo
|
||||
- ./.docker/database/mongo/data:/data/db
|
||||
- ./install/docker/mongodb-user-init.js:/docker-entrypoint-initdb.d/user-init.js
|
||||
redis:
|
||||
image: redis:7.4.1-alpine
|
||||
restart: unless-stopped
|
||||
command: ['redis-server', '--appendonly', 'yes', '--loglevel', 'warning']
|
||||
# command: ['redis-server', '--save', '60', '1', '--loglevel', 'warning'] # uncomment if you want to use snapshotting instead of AOF
|
||||
volumes:
|
||||
- redis-data:/data
|
||||
profiles:
|
||||
- redis
|
||||
|
||||
- mongo
|
||||
postgres:
|
||||
image: postgres:17.2-alpine
|
||||
image: postgres:16.1-alpine
|
||||
restart: unless-stopped
|
||||
expose:
|
||||
- "5432"
|
||||
environment:
|
||||
POSTGRES_USER: nodebb
|
||||
POSTGRES_PASSWORD: nodebb
|
||||
POSTGRES_DB: nodebb
|
||||
volumes:
|
||||
- postgres-data:/var/lib/postgresql/data
|
||||
- ./.docker/database/postgresql/data:/var/lib/postgresql/data
|
||||
profiles:
|
||||
- postgres
|
||||
|
||||
volumes:
|
||||
mongo-data:
|
||||
driver: local
|
||||
driver_opts:
|
||||
o: bind
|
||||
type: none
|
||||
device: ./.docker/database/mongo/data
|
||||
|
||||
redis-data:
|
||||
driver: local
|
||||
driver_opts:
|
||||
o: bind
|
||||
type: none
|
||||
device: ./.docker/database/redis
|
||||
|
||||
postgres-data:
|
||||
driver: local
|
||||
driver_opts:
|
||||
o: bind
|
||||
type: none
|
||||
device: ./.docker/database/postgresql/data
|
||||
|
||||
nodebb-build:
|
||||
driver: local
|
||||
driver_opts:
|
||||
o: bind
|
||||
type: none
|
||||
device: ./.docker/build
|
||||
|
||||
nodebb-uploads:
|
||||
driver: local
|
||||
driver_opts:
|
||||
o: bind
|
||||
type: none
|
||||
device: ./.docker/public/uploads
|
||||
|
||||
nodebb-config:
|
||||
driver: local
|
||||
driver_opts:
|
||||
o: bind
|
||||
type: none
|
||||
device: ./.docker/config
|
||||
redis:
|
||||
image: redis:7.2.3-alpine
|
||||
restart: unless-stopped
|
||||
command: ["redis-server", "--appendonly", "yes", "--loglevel", "warning"]
|
||||
# command: ["redis-server", "--save", "60", "1", "--loglevel", "warning"] # uncomment if you want to use snapshotting instead of AOF
|
||||
expose:
|
||||
- "6379"
|
||||
volumes:
|
||||
- ./.docker/database/redis:/data
|
||||
profiles:
|
||||
- redis
|
||||
@@ -42,17 +42,16 @@
|
||||
"registrationApprovalType": "normal",
|
||||
"allowAccountDelete": 1,
|
||||
"privateUploads": 0,
|
||||
"allowedFileExtensions": "png,jpg,bmp,txt,webp,webm,mp4,gif",
|
||||
"allowedFileExtensions": "png,jpg,bmp,txt",
|
||||
"uploadRateLimitThreshold": 10,
|
||||
"uploadRateLimitCooldown": 60,
|
||||
"allowUserHomePage": 1,
|
||||
"allowMultipleBadges": 1,
|
||||
"allowMultipleBadges": 0,
|
||||
"maximumFileSize": 2048,
|
||||
"stripEXIFData": 1,
|
||||
"orphanExpiryDays": 0,
|
||||
"resizeImageWidthThreshold": 2000,
|
||||
"resizeImageWidth": 760,
|
||||
"resizeImageKeepOriginal": 1,
|
||||
"rejectImageWidth": 5000,
|
||||
"rejectImageHeight": 5000,
|
||||
"resizeImageQuality": 80,
|
||||
@@ -100,21 +99,16 @@
|
||||
"min:rep:aboutme": 0,
|
||||
"min:rep:signature": 0,
|
||||
"flags:limitPerTarget": 0,
|
||||
"flags:postFlagsPerDay": 10,
|
||||
"flags:userFlagsPerDay": 10,
|
||||
"flags:autoFlagOnDownvoteThreshold": 0,
|
||||
"flags:actionOnResolve": "rescind",
|
||||
"flags:actionOnReject": "rescind",
|
||||
"notificationType_upvote": "notification",
|
||||
"notificationType_new-topic": "notification",
|
||||
"notificationType_new-topic-with-tag": "notification",
|
||||
"notificationType_new-topic-in-category": "notification",
|
||||
"notificationType_new-reply": "notification",
|
||||
"notificationType_post-edit": "notification",
|
||||
"notificationType_follow": "notification",
|
||||
"notificationType_new-chat": "notification",
|
||||
"notificationType_new-group-chat": "notification",
|
||||
"notificationType_new-public-chat": "none",
|
||||
"notificationType_group-invite": "notification",
|
||||
"notificationType_group-leave": "notification",
|
||||
"notificationType_group-request-membership": "notification",
|
||||
@@ -141,8 +135,7 @@
|
||||
"sitemapTopics": 500,
|
||||
"maintenanceMode": 0,
|
||||
"maintenanceModeStatus": 503,
|
||||
"upvoteVisibility": "all",
|
||||
"downvoteVisibility": "privileged",
|
||||
"votesArePublic": 0,
|
||||
"maximumInvites": 0,
|
||||
"username:disableEdit": 0,
|
||||
"email:disableEdit": 0,
|
||||
@@ -183,7 +176,7 @@
|
||||
"onlineCutoff": 30,
|
||||
"timeagoCutoff": 30,
|
||||
"necroThreshold": 7,
|
||||
"categoryWatchState": "tracking",
|
||||
"categoryWatchState": "watching",
|
||||
"submitPluginUsage": 1,
|
||||
"showAverageApprovalTime": 1,
|
||||
"autoApproveTime": 0,
|
||||
@@ -195,4 +188,4 @@
|
||||
"maxReconnectionAttempts": 5,
|
||||
"reconnectionDelay": 1500,
|
||||
"disableCustomUserSkins": 0
|
||||
}
|
||||
}
|
||||
@@ -1,198 +1,46 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
export CONFIG_DIR="${CONFIG_DIR:-/opt/config}"
|
||||
export CONFIG=$CONFIG_DIR/config.json
|
||||
export FORCE_BUILD_BEFORE_START="${FORCE_BUILD_BEFORE_START:-false}"
|
||||
|
||||
# Function to set default values for environment variables
|
||||
set_defaults() {
|
||||
export CONFIG_DIR="${CONFIG_DIR:-/opt/config}"
|
||||
export CONFIG="$CONFIG_DIR/config.json"
|
||||
export NODEBB_INIT_VERB="${NODEBB_INIT_VERB:-install}"
|
||||
export NODEBB_BUILD_VERB="${NODEBB_BUILD_VERB:-build}"
|
||||
export START_BUILD="${START_BUILD:-${FORCE_BUILD_BEFORE_START:-false}}"
|
||||
export SETUP="${SETUP:-}"
|
||||
export PACKAGE_MANAGER="${PACKAGE_MANAGER:-npm}"
|
||||
export OVERRIDE_UPDATE_LOCK="${OVERRIDE_UPDATE_LOCK:-false}"
|
||||
}
|
||||
# Supported verbs: install (web install), setup (interactive CLI session). Default: web install
|
||||
# TODO: constraint it using a hash set (or hash table)
|
||||
export NODEBB_INIT_VERB="${NODEBB_INIT_VERB:-install}"
|
||||
# Setup variable for backward compatibility, default: <empty>
|
||||
export SETUP="${SETUP:-}"
|
||||
|
||||
# Function to check if a directory exists and is writable
|
||||
check_directory() {
|
||||
local dir="$1"
|
||||
if [ ! -d "$dir" ]; then
|
||||
echo "Error: Directory $dir does not exist. Creating..."
|
||||
mkdir -p "$dir" || {
|
||||
echo "Error: Failed to create directory $dir"
|
||||
exit 1
|
||||
}
|
||||
fi
|
||||
if [ ! -w "$dir" ]; then
|
||||
echo "Warning: No write permission for directory $dir, attempting to fix..."
|
||||
chown -R $USER:$USER "$dir" || true # attempt to change ownership, do not exit on failure
|
||||
chmod -R 760 "$dir" || true # attempt to change permissions, do not exit on failure
|
||||
if [ ! -w "$dir" ]; then
|
||||
echo "Error: No write permission for directory $dir. Exiting..."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
mkdir -p $CONFIG_DIR
|
||||
|
||||
# Function to copy or link package.json and lock files based on package manager
|
||||
copy_or_link_files() {
|
||||
local src_dir="$1"
|
||||
local dest_dir="$2"
|
||||
local package_manager="$3"
|
||||
local lock_file
|
||||
# if the folder is mounted as a volume this can fail, the check below is to ensure there is still write access
|
||||
chmod -fR 760 $CONFIG_DIR 2> /dev/null
|
||||
|
||||
case "$package_manager" in
|
||||
yarn) lock_file="yarn.lock" ;;
|
||||
npm) lock_file="package-lock.json" ;;
|
||||
pnpm) lock_file="pnpm-lock.yaml" ;;
|
||||
*)
|
||||
echo "Unknown package manager: $package_manager"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
if [[ ! -w $CONFIG_DIR ]]; then
|
||||
echo "panic: no write permission for $CONFIG_DIR"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check if source and destination files are the same
|
||||
if [ "$(realpath "$src_dir/package.json")" != "$(realpath "$dest_dir/package.json")" ] || [ "$OVERRIDE_UPDATE_LOCK" = true ]; then
|
||||
cp "$src_dir/package.json" "$dest_dir/package.json"
|
||||
fi
|
||||
[[ -f $CONFIG_DIR/package.json ]] || cp install/package.json $CONFIG_DIR/package.json
|
||||
[[ -f $CONFIG_DIR/package-lock.json ]] || touch $CONFIG_DIR/package-lock.json
|
||||
|
||||
if [ "$(realpath "$src_dir/$lock_file")" != "$(realpath "$dest_dir/$lock_file")" ] || [ "$OVERRIDE_UPDATE_LOCK" = true ]; then
|
||||
cp "$src_dir/$lock_file" "$dest_dir/$lock_file"
|
||||
fi
|
||||
ln -fs $CONFIG_DIR/package.json package.json
|
||||
ln -fs $CONFIG_DIR/package-lock.json package-lock.json
|
||||
|
||||
# Remove unnecessary lock files in src_dir
|
||||
rm -f "$src_dir/"{yarn.lock,package-lock.json,pnpm-lock.yaml}
|
||||
npm install --omit=dev
|
||||
|
||||
# Symbolically link the copied files in src_dir to dest_dir
|
||||
ln -fs "$dest_dir/package.json" "$src_dir/package.json"
|
||||
ln -fs "$dest_dir/$lock_file" "$src_dir/$lock_file"
|
||||
}
|
||||
|
||||
# Function to install dependencies using pnpm
|
||||
install_dependencies() {
|
||||
case "$PACKAGE_MANAGER" in
|
||||
yarn) yarn install || {
|
||||
echo "Failed to install dependencies with yarn"
|
||||
exit 1
|
||||
} ;;
|
||||
npm) npm install || {
|
||||
echo "Failed to install dependencies with npm"
|
||||
exit 1
|
||||
} ;;
|
||||
pnpm) pnpm install || {
|
||||
echo "Failed to install dependencies with pnpm"
|
||||
exit 1
|
||||
} ;;
|
||||
*)
|
||||
echo "Unknown package manager: $PACKAGE_MANAGER"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Function to start setup session
|
||||
start_setup_session() {
|
||||
local config="$1"
|
||||
if [[ -n $SETUP ]]; then
|
||||
echo "Setup environmental variable detected"
|
||||
echo "Starting setup session"
|
||||
exec /usr/src/app/nodebb setup --config="$config"
|
||||
}
|
||||
|
||||
# Handle building and upgrading NodeBB
|
||||
build_forum() {
|
||||
local config="$1"
|
||||
local start_build="$2"
|
||||
local package_hash=$(md5sum install/package.json | head -c 32)
|
||||
if [ "$package_hash" = "$(cat $CONFIG_DIR/install_hash.md5 || true)" ]; then
|
||||
echo "package.json was updated. Upgrading..."
|
||||
/usr/src/app/nodebb upgrade --config="$config" || {
|
||||
echo "Failed to build NodeBB. Exiting..."
|
||||
exit 1
|
||||
}
|
||||
elif [ "$start_build" = true ]; then
|
||||
echo "Build before start is enabled. Building..."
|
||||
/usr/src/app/nodebb "${NODEBB_BUILD_VERB}" --config="$config" || {
|
||||
echo "Failed to build NodeBB. Exiting..."
|
||||
exit 1
|
||||
}
|
||||
else
|
||||
echo "No changes in package.json. Skipping build..."
|
||||
return
|
||||
./nodebb setup --config=$CONFIG
|
||||
elif [ -f $CONFIG ]; then
|
||||
echo "Config file exist at $CONFIG, assuming it is a valid config"
|
||||
echo "Starting forum"
|
||||
if [ "$FORCE_BUILD_BEFORE_START" = true ]; then
|
||||
./nodebb build --config=$CONFIG
|
||||
fi
|
||||
echo -n $package_hash > $CONFIG_DIR/install_hash.md5
|
||||
}
|
||||
|
||||
|
||||
# Function to start forum
|
||||
start_forum() {
|
||||
local config="$1"
|
||||
local start_build="$2"
|
||||
|
||||
build_forum "$config" "$start_build"
|
||||
|
||||
case "$PACKAGE_MANAGER" in
|
||||
yarn)
|
||||
yarn start --config="$config" --no-silent --no-daemon || {
|
||||
echo "Failed to start forum with yarn"
|
||||
exit 1
|
||||
}
|
||||
;;
|
||||
npm)
|
||||
npm start -- --config="$config" --no-silent --no-daemon || {
|
||||
echo "Failed to start forum with npm"
|
||||
exit 1
|
||||
}
|
||||
;;
|
||||
pnpm)
|
||||
pnpm start -- --config="$config" --no-silent --no-daemon || {
|
||||
echo "Failed to start forum with pnpm"
|
||||
exit 1
|
||||
}
|
||||
;;
|
||||
*)
|
||||
echo "Unknown package manager: $PACKAGE_MANAGER"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Function to start installation session
|
||||
start_installation_session() {
|
||||
local nodebb_init_verb="$1"
|
||||
local config="$2"
|
||||
|
||||
echo "Config file not found at $config"
|
||||
./nodebb start --config=$CONFIG
|
||||
else
|
||||
echo "Config file not found at $CONFIG"
|
||||
echo "Starting installation session"
|
||||
exec /usr/src/app/nodebb "$nodebb_init_verb" --config="$config"
|
||||
}
|
||||
|
||||
# Function for debugging and logging
|
||||
debug_log() {
|
||||
local message="$1"
|
||||
echo "DEBUG: $message"
|
||||
}
|
||||
|
||||
# Main function
|
||||
main() {
|
||||
set_defaults
|
||||
check_directory "$CONFIG_DIR"
|
||||
copy_or_link_files /usr/src/app "$CONFIG_DIR" "$PACKAGE_MANAGER"
|
||||
install_dependencies
|
||||
|
||||
debug_log "PACKAGE_MANAGER: $PACKAGE_MANAGER"
|
||||
debug_log "CONFIG location: $CONFIG"
|
||||
debug_log "START_BUILD: $START_BUILD"
|
||||
|
||||
if [ -n "$SETUP" ]; then
|
||||
start_setup_session "$CONFIG"
|
||||
fi
|
||||
|
||||
if [ -f "$CONFIG" ]; then
|
||||
start_forum "$CONFIG" "$START_BUILD"
|
||||
else
|
||||
start_installation_session "$NODEBB_INIT_VERB" "$CONFIG"
|
||||
fi
|
||||
}
|
||||
|
||||
# Execute main function
|
||||
main "$@"
|
||||
./nodebb "${NODEBB_INIT_VERB}" --config=$CONFIG
|
||||
fi
|
||||
@@ -1,23 +1,21 @@
|
||||
{
|
||||
"defaults": {
|
||||
"mongo": {
|
||||
"host": "mongo",
|
||||
"port": 27017,
|
||||
"database": "nodebb",
|
||||
"username": "nodebb",
|
||||
"password": "nodebb"
|
||||
},
|
||||
"redis": {
|
||||
"host": "redis",
|
||||
"port": 6379,
|
||||
"database": 0
|
||||
},
|
||||
"postgres": {
|
||||
"host": "postgres",
|
||||
"port": 5432,
|
||||
"database": "nodebb",
|
||||
"username": "nodebb",
|
||||
"password": "nodebb"
|
||||
}
|
||||
"mongo": {
|
||||
"host": "mongo",
|
||||
"port": 27017,
|
||||
"database": "nodebb",
|
||||
"username": "nodebb",
|
||||
"password": "nodebb"
|
||||
},
|
||||
"redis": {
|
||||
"host": "redis",
|
||||
"port": 6379,
|
||||
"database": 0
|
||||
},
|
||||
"postgres": {
|
||||
"host": "postgres",
|
||||
"port": 5432,
|
||||
"database": "nodebb",
|
||||
"username": "nodebb",
|
||||
"password": "nodebb"
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
"name": "nodebb",
|
||||
"license": "GPL-3.0",
|
||||
"description": "NodeBB Forum",
|
||||
"version": "3.12.7",
|
||||
"version": "3.5.1",
|
||||
"homepage": "https://www.nodebb.org",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -29,127 +29,124 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@adactive/bootstrap-tagsinput": "0.8.2",
|
||||
"@fontsource/inter": "5.1.0",
|
||||
"@fontsource/poppins": "5.1.0",
|
||||
"@fortawesome/fontawesome-free": "6.7.2",
|
||||
"@fontsource/inter": "5.0.15",
|
||||
"@fontsource/poppins": "5.0.8",
|
||||
"@fortawesome/fontawesome-free": "6.4.2",
|
||||
"@isaacs/ttlcache": "1.4.1",
|
||||
"@nodebb/spider-detector": "2.0.3",
|
||||
"@popperjs/core": "2.11.8",
|
||||
"@textcomplete/contenteditable": "0.1.13",
|
||||
"@textcomplete/core": "0.1.13",
|
||||
"@textcomplete/textarea": "0.1.13",
|
||||
"ace-builds": "1.37.0",
|
||||
"archiver": "7.0.1",
|
||||
"async": "3.2.6",
|
||||
"autoprefixer": "10.4.20",
|
||||
"ace-builds": "1.31.2",
|
||||
"archiver": "6.0.1",
|
||||
"async": "3.2.5",
|
||||
"autoprefixer": "10.4.16",
|
||||
"bcryptjs": "2.4.3",
|
||||
"benchpressjs": "2.5.1",
|
||||
"body-parser": "1.20.3",
|
||||
"body-parser": "1.20.2",
|
||||
"bootbox": "6.0.0",
|
||||
"bootstrap": "5.3.3",
|
||||
"bootswatch": "5.3.3",
|
||||
"bootstrap": "5.3.2",
|
||||
"bootswatch": "5.3.2",
|
||||
"chalk": "4.1.2",
|
||||
"chart.js": "4.4.7",
|
||||
"chart.js": "4.4.0",
|
||||
"cli-graph": "3.2.2",
|
||||
"clipboard": "2.0.11",
|
||||
"colors": "1.4.0",
|
||||
"commander": "12.1.0",
|
||||
"compare-versions": "6.1.1",
|
||||
"compression": "1.7.5",
|
||||
"commander": "11.1.0",
|
||||
"compare-versions": "6.1.0",
|
||||
"compression": "1.7.4",
|
||||
"connect-flash": "0.1.1",
|
||||
"connect-mongo": "5.1.0",
|
||||
"connect-multiparty": "2.2.0",
|
||||
"connect-pg-simple": "10.0.0",
|
||||
"connect-redis": "8.0.1",
|
||||
"cookie-parser": "1.4.7",
|
||||
"cron": "3.3.1",
|
||||
"cropperjs": "1.6.2",
|
||||
"csrf-sync": "4.0.3",
|
||||
"connect-pg-simple": "9.0.1",
|
||||
"connect-redis": "7.1.0",
|
||||
"cookie-parser": "1.4.6",
|
||||
"cron": "3.1.6",
|
||||
"cropperjs": "1.6.1",
|
||||
"csrf-sync": "4.0.1",
|
||||
"daemon": "1.1.0",
|
||||
"diff": "7.0.0",
|
||||
"esbuild": "0.24.0",
|
||||
"express": "4.21.2",
|
||||
"express-session": "1.18.1",
|
||||
"diff": "5.1.0",
|
||||
"esbuild": "0.19.5",
|
||||
"express": "4.18.2",
|
||||
"express-session": "1.17.3",
|
||||
"express-useragent": "1.0.15",
|
||||
"fetch-cookie": "3.0.1",
|
||||
"file-loader": "6.2.0",
|
||||
"fs-extra": "11.2.0",
|
||||
"fs-extra": "11.1.1",
|
||||
"graceful-fs": "4.2.11",
|
||||
"helmet": "7.2.0",
|
||||
"helmet": "7.1.0",
|
||||
"html-to-text": "9.0.5",
|
||||
"imagesloaded": "5.0.0",
|
||||
"ipaddr.js": "2.2.0",
|
||||
"ipaddr.js": "2.1.0",
|
||||
"jquery": "3.7.1",
|
||||
"jquery-deserialize": "2.0.0",
|
||||
"jquery-form": "4.3.0",
|
||||
"jquery-serializeobject": "1.0.0",
|
||||
"jquery-ui": "1.14.1",
|
||||
"jsesc": "3.1.0",
|
||||
"jquery-ui": "1.13.2",
|
||||
"jsesc": "3.0.2",
|
||||
"json2csv": "5.0.7",
|
||||
"jsonwebtoken": "9.0.2",
|
||||
"lodash": "4.17.21",
|
||||
"logrotate-stream": "0.2.9",
|
||||
"lru-cache": "10.4.3",
|
||||
"lru-cache": "10.0.2",
|
||||
"mime": "3.0.0",
|
||||
"mkdirp": "3.0.1",
|
||||
"mongodb": "6.12.0",
|
||||
"mongodb": "6.3.0",
|
||||
"morgan": "1.10.0",
|
||||
"mousetrap": "1.6.5",
|
||||
"multiparty": "4.2.3",
|
||||
"nconf": "0.12.1",
|
||||
"nodebb-plugin-2factor": "7.5.8",
|
||||
"nodebb-plugin-composer-default": "10.2.44",
|
||||
"nodebb-plugin-dbsearch": "6.2.5",
|
||||
"nodebb-plugin-emoji": "5.1.15",
|
||||
"nodebb-plugin-2factor": "7.4.0",
|
||||
"nodebb-plugin-composer-default": "10.2.27",
|
||||
"nodebb-plugin-dbsearch": "6.2.3",
|
||||
"nodebb-plugin-emoji": "5.1.13",
|
||||
"nodebb-plugin-emoji-android": "4.0.0",
|
||||
"nodebb-plugin-markdown": "12.2.9",
|
||||
"nodebb-plugin-mentions": "4.4.5",
|
||||
"nodebb-plugin-ntfy": "1.7.7",
|
||||
"nodebb-plugin-spam-be-gone": "2.3.0",
|
||||
"nodebb-plugin-markdown": "12.2.5",
|
||||
"nodebb-plugin-mentions": "4.3.7",
|
||||
"nodebb-plugin-ntfy": "1.7.3",
|
||||
"nodebb-plugin-spam-be-gone": "2.2.0",
|
||||
"nodebb-rewards-essentials": "1.0.0",
|
||||
"nodebb-theme-harmony": "1.2.98",
|
||||
"nodebb-theme-lavender": "7.1.17",
|
||||
"nodebb-theme-peace": "2.2.33",
|
||||
"nodebb-theme-persona": "13.3.63",
|
||||
"nodebb-widget-essentials": "7.0.32",
|
||||
"nodemailer": "6.9.16",
|
||||
"nodebb-theme-harmony": "1.1.99",
|
||||
"nodebb-theme-lavender": "7.1.5",
|
||||
"nodebb-theme-peace": "2.1.25",
|
||||
"nodebb-theme-persona": "13.2.47",
|
||||
"nodebb-widget-essentials": "7.0.14",
|
||||
"nodemailer": "6.9.7",
|
||||
"nprogress": "0.2.0",
|
||||
"passport": "0.7.0",
|
||||
"passport": "0.6.0",
|
||||
"passport-http-bearer": "1.0.1",
|
||||
"passport-local": "1.0.0",
|
||||
"pg": "8.13.1",
|
||||
"pg-cursor": "2.12.1",
|
||||
"postcss": "8.4.49",
|
||||
"pg": "8.11.3",
|
||||
"pg-cursor": "2.10.3",
|
||||
"postcss": "8.4.31",
|
||||
"postcss-clean": "1.2.0",
|
||||
"progress-webpack-plugin": "1.0.16",
|
||||
"prompt": "1.3.0",
|
||||
"ioredis": "5.4.1",
|
||||
"rimraf": "5.0.10",
|
||||
"ioredis": "5.3.2",
|
||||
"request": "2.88.2",
|
||||
"request-promise-native": "1.0.9",
|
||||
"rimraf": "5.0.5",
|
||||
"rss": "1.2.2",
|
||||
"rtlcss": "4.3.0",
|
||||
"sanitize-html": "2.13.1",
|
||||
"sass": "1.83.0",
|
||||
"semver": "7.6.3",
|
||||
"rtlcss": "4.1.1",
|
||||
"sanitize-html": "2.11.0",
|
||||
"sass": "1.69.5",
|
||||
"semver": "7.5.4",
|
||||
"serve-favicon": "2.5.0",
|
||||
"sharp": "0.32.6",
|
||||
"sitemap": "8.0.0",
|
||||
"socket.io": "4.8.1",
|
||||
"socket.io-client": "4.8.1",
|
||||
"@socket.io/redis-adapter": "8.3.0",
|
||||
"sortablejs": "1.15.6",
|
||||
"spdx-license-list": "6.9.0",
|
||||
"terser-webpack-plugin": "5.3.11",
|
||||
"sitemap": "7.1.1",
|
||||
"socket.io": "4.7.2",
|
||||
"socket.io-client": "4.7.2",
|
||||
"@socket.io/redis-adapter": "8.2.1",
|
||||
"sortablejs": "1.15.0",
|
||||
"spdx-license-list": "6.8.0",
|
||||
"spider-detector": "2.0.1",
|
||||
"terser-webpack-plugin": "5.3.9",
|
||||
"textcomplete": "0.18.2",
|
||||
"textcomplete.contenteditable": "0.1.1",
|
||||
"timeago": "1.6.7",
|
||||
"tinycon": "0.6.8",
|
||||
"toobusy-js": "0.5.1",
|
||||
"tough-cookie": "5.0.0",
|
||||
"validator": "13.12.0",
|
||||
"webpack": "5.97.1",
|
||||
"webpack-merge": "6.0.1",
|
||||
"winston": "3.17.0",
|
||||
"workerpool": "9.2.0",
|
||||
"validator": "13.11.0",
|
||||
"webpack": "5.89.0",
|
||||
"webpack-merge": "5.10.0",
|
||||
"winston": "3.11.0",
|
||||
"workerpool": "8.0.0",
|
||||
"xml": "1.0.1",
|
||||
"xregexp": "5.1.1",
|
||||
"yargs": "17.7.2",
|
||||
@@ -157,25 +154,25 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@apidevtools/swagger-parser": "10.1.0",
|
||||
"@commitlint/cli": "19.6.1",
|
||||
"@commitlint/config-angular": "19.6.0",
|
||||
"@commitlint/cli": "18.4.2",
|
||||
"@commitlint/config-angular": "18.4.2",
|
||||
"coveralls": "3.1.1",
|
||||
"eslint": "8.57.1",
|
||||
"eslint": "8.54.0",
|
||||
"eslint-config-nodebb": "0.2.1",
|
||||
"eslint-plugin-import": "2.31.0",
|
||||
"eslint-plugin-import": "2.29.0",
|
||||
"grunt": "1.6.1",
|
||||
"grunt-contrib-watch": "1.1.0",
|
||||
"husky": "8.0.3",
|
||||
"jsdom": "25.0.1",
|
||||
"lint-staged": "15.2.11",
|
||||
"mocha": "11.0.1",
|
||||
"jsdom": "22.1.0",
|
||||
"lint-staged": "15.1.0",
|
||||
"mocha": "10.2.0",
|
||||
"mocha-lcov-reporter": "1.3.0",
|
||||
"mockdate": "3.0.5",
|
||||
"nyc": "17.1.0",
|
||||
"smtp-server": "3.13.6"
|
||||
"nyc": "15.1.0",
|
||||
"smtp-server": "3.13.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"sass-embedded": "1.83.0"
|
||||
"sass-embedded": "1.69.5"
|
||||
},
|
||||
"resolutions": {
|
||||
"*/jquery": "3.7.1"
|
||||
@@ -184,7 +181,7 @@
|
||||
"url": "https://github.com/NodeBB/NodeBB/issues"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
"node": ">=16"
|
||||
},
|
||||
"maintainers": [
|
||||
{
|
||||
@@ -198,4 +195,4 @@
|
||||
"url": "https://github.com/barisusakli"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
const winston = require('winston');
|
||||
const express = require('express');
|
||||
const session = require('express-session');
|
||||
const bodyParser = require('body-parser');
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
@@ -14,10 +13,7 @@ const nconf = require('nconf');
|
||||
const Benchpress = require('benchpressjs');
|
||||
const { mkdirp } = require('mkdirp');
|
||||
const { paths } = require('../src/constants');
|
||||
const utils = require('../src/utils');
|
||||
|
||||
const sass = utils.getSass();
|
||||
const { generateToken, csrfSynchronisedProtection } = require('../src/middleware/csrf');
|
||||
const sass = require('../src/utils').getSass();
|
||||
|
||||
const app = express();
|
||||
let server;
|
||||
@@ -77,13 +73,6 @@ web.install = async function (port) {
|
||||
app.use(bodyParser.urlencoded({
|
||||
extended: true,
|
||||
}));
|
||||
|
||||
app.use(session({
|
||||
secret: utils.generateUUID(),
|
||||
resave: false,
|
||||
saveUninitialized: false,
|
||||
}));
|
||||
|
||||
try {
|
||||
await Promise.all([
|
||||
compileTemplate(),
|
||||
@@ -114,8 +103,8 @@ function launchExpress(port) {
|
||||
}
|
||||
|
||||
function setupRoutes() {
|
||||
app.get('/', csrfSynchronisedProtection, welcome);
|
||||
app.post('/', csrfSynchronisedProtection, install);
|
||||
app.get('/', welcome);
|
||||
app.post('/', install);
|
||||
app.get('/testdb', testDatabase);
|
||||
app.get('/ping', ping);
|
||||
app.get('/sping', ping);
|
||||
@@ -171,7 +160,6 @@ function welcome(req, res) {
|
||||
minimumPasswordStrength: defaults.minimumPasswordStrength,
|
||||
installing: installing,
|
||||
percentInstalled: installing ? ((Date.now() - timeStart) / totalTime * 100).toFixed(2) : 0,
|
||||
csrf_token: generateToken(req),
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -99,9 +99,7 @@ Loader.start = function () {
|
||||
function forkWorker(index, isPrimary) {
|
||||
const ports = getPorts();
|
||||
const args = [];
|
||||
if (nconf.get('max-memory')) {
|
||||
args.push(`--max-old-space-size=${nconf.get('max-memory')}`);
|
||||
}
|
||||
|
||||
if (!ports[index]) {
|
||||
return console.log(`[cluster] invalid port for worker : ${index} ports: ${ports.length}`);
|
||||
}
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Internal Server Error</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="stylesheet" type="text/css" href="/assets/5xx.css" />
|
||||
|
||||
<script type="text/javascript">
|
||||
window.onload = function() {
|
||||
let count = 0;
|
||||
const bounce = document.getElementById('click-me');
|
||||
bounce.onclick = function() {
|
||||
count++;
|
||||
bounce.className = '';
|
||||
setTimeout(function() {
|
||||
bounce.className = 'animated bounce';
|
||||
}, 50);
|
||||
|
||||
if (count > 5) {
|
||||
document.getElementById('hide').className = '';
|
||||
}
|
||||
};
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
<div class="center">
|
||||
<h1 id="click-me" class="animated bounce">500</h1>
|
||||
<p>
|
||||
<strong>Internal server error. </strong>
|
||||
</p>
|
||||
<p>
|
||||
{message}
|
||||
</p>
|
||||
<p>
|
||||
<small id="hide" class="hide">Alright. You can stop clicking... it's not going to make the site come back sooner!</small>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
141
public/503.html
141
public/503.html
@@ -2,12 +2,147 @@
|
||||
<head>
|
||||
<title>Excessive Load Warning</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="stylesheet" type="text/css" href="/assets/5xx.css" />
|
||||
<style type="text/css">
|
||||
body {
|
||||
background: #00A9EA;
|
||||
color: white;
|
||||
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", Helvetica, Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
text-align: center;
|
||||
-webkit-transform-style: preserve-3d;
|
||||
-moz-transform-style: preserve-3d;
|
||||
transform-style: preserve-3d;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 250px;
|
||||
color: #fff;
|
||||
opacity: 0.5;
|
||||
margin: 10px;
|
||||
cursor: pointer;
|
||||
-moz-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-webkit-user-select: none;
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
p strong {
|
||||
font-size: 28px;
|
||||
}
|
||||
|
||||
@media (max-width: 640px) {
|
||||
h1 {
|
||||
font-size: 125px;
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
p strong {
|
||||
font-size: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
.center {
|
||||
position: relative;
|
||||
top: 50%;
|
||||
-webkit-transform: translateY(50%);
|
||||
-ms-transform: translateY(50%);
|
||||
transform: translateY(50%);
|
||||
}
|
||||
|
||||
@-webkit-keyframes bounce {
|
||||
0%, 20%, 53%, 80%, 100% {
|
||||
-webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
|
||||
transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
|
||||
-webkit-transform: translate3d(0,0,0);
|
||||
transform: translate3d(0,0,0);
|
||||
}
|
||||
|
||||
40%, 43% {
|
||||
-webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
|
||||
transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
|
||||
-webkit-transform: translate3d(0, -30px, 0);
|
||||
transform: translate3d(0, -30px, 0);
|
||||
}
|
||||
|
||||
70% {
|
||||
-webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
|
||||
transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
|
||||
-webkit-transform: translate3d(0, -15px, 0);
|
||||
transform: translate3d(0, -15px, 0);
|
||||
}
|
||||
|
||||
90% {
|
||||
-webkit-transform: translate3d(0,-4px,0);
|
||||
transform: translate3d(0,-4px,0);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes bounce {
|
||||
0%, 20%, 53%, 80%, 100% {
|
||||
-webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
|
||||
transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
|
||||
-webkit-transform: translate3d(0,0,0);
|
||||
transform: translate3d(0,0,0);
|
||||
}
|
||||
|
||||
40%, 43% {
|
||||
-webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
|
||||
transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
|
||||
-webkit-transform: translate3d(0, -30px, 0);
|
||||
transform: translate3d(0, -30px, 0);
|
||||
}
|
||||
|
||||
70% {
|
||||
-webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
|
||||
transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
|
||||
-webkit-transform: translate3d(0, -15px, 0);
|
||||
transform: translate3d(0, -15px, 0);
|
||||
}
|
||||
|
||||
90% {
|
||||
-webkit-transform: translate3d(0,-4px,0);
|
||||
transform: translate3d(0,-4px,0);
|
||||
}
|
||||
}
|
||||
|
||||
.bounce {
|
||||
-webkit-animation-name: bounce;
|
||||
animation-name: bounce;
|
||||
-webkit-transform-origin: center bottom;
|
||||
-ms-transform-origin: center bottom;
|
||||
transform-origin: center bottom;
|
||||
}
|
||||
|
||||
.animated {
|
||||
-webkit-animation-duration: 1s;
|
||||
animation-duration: 1s;
|
||||
-webkit-animation-fill-mode: both;
|
||||
animation-fill-mode: both;
|
||||
}
|
||||
|
||||
.animated.infinite {
|
||||
-webkit-animation-iteration-count: infinite;
|
||||
animation-iteration-count: infinite;
|
||||
}
|
||||
|
||||
.animated.hinge {
|
||||
-webkit-animation-duration: 2s;
|
||||
animation-duration: 2s;
|
||||
}
|
||||
|
||||
.hide {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
<script type="text/javascript">
|
||||
window.onload = function() {
|
||||
let count = 0;
|
||||
const bounce = document.getElementById('click-me');
|
||||
var count = 0,
|
||||
bounce = document.getElementById('click-me');
|
||||
bounce.onclick = function() {
|
||||
count++;
|
||||
bounce.className = '';
|
||||
|
||||
135
public/5xx.css
135
public/5xx.css
@@ -1,135 +0,0 @@
|
||||
body {
|
||||
background: #00A9EA;
|
||||
color: white;
|
||||
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", Helvetica, Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
text-align: center;
|
||||
-webkit-transform-style: preserve-3d;
|
||||
-moz-transform-style: preserve-3d;
|
||||
transform-style: preserve-3d;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 250px;
|
||||
color: #fff;
|
||||
opacity: 0.5;
|
||||
margin: 10px;
|
||||
cursor: pointer;
|
||||
-moz-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-webkit-user-select: none;
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
p strong {
|
||||
font-size: 28px;
|
||||
}
|
||||
|
||||
@media (max-width: 640px) {
|
||||
h1 {
|
||||
font-size: 125px;
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
p strong {
|
||||
font-size: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
.center {
|
||||
position: relative;
|
||||
top: 50%;
|
||||
-webkit-transform: translateY(50%);
|
||||
-ms-transform: translateY(50%);
|
||||
transform: translateY(50%);
|
||||
}
|
||||
|
||||
@-webkit-keyframes bounce {
|
||||
0%, 20%, 53%, 80%, 100% {
|
||||
-webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
|
||||
transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
|
||||
-webkit-transform: translate3d(0,0,0);
|
||||
transform: translate3d(0,0,0);
|
||||
}
|
||||
|
||||
40%, 43% {
|
||||
-webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
|
||||
transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
|
||||
-webkit-transform: translate3d(0, -30px, 0);
|
||||
transform: translate3d(0, -30px, 0);
|
||||
}
|
||||
|
||||
70% {
|
||||
-webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
|
||||
transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
|
||||
-webkit-transform: translate3d(0, -15px, 0);
|
||||
transform: translate3d(0, -15px, 0);
|
||||
}
|
||||
|
||||
90% {
|
||||
-webkit-transform: translate3d(0,-4px,0);
|
||||
transform: translate3d(0,-4px,0);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes bounce {
|
||||
0%, 20%, 53%, 80%, 100% {
|
||||
-webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
|
||||
transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
|
||||
-webkit-transform: translate3d(0,0,0);
|
||||
transform: translate3d(0,0,0);
|
||||
}
|
||||
|
||||
40%, 43% {
|
||||
-webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
|
||||
transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
|
||||
-webkit-transform: translate3d(0, -30px, 0);
|
||||
transform: translate3d(0, -30px, 0);
|
||||
}
|
||||
|
||||
70% {
|
||||
-webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
|
||||
transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
|
||||
-webkit-transform: translate3d(0, -15px, 0);
|
||||
transform: translate3d(0, -15px, 0);
|
||||
}
|
||||
|
||||
90% {
|
||||
-webkit-transform: translate3d(0,-4px,0);
|
||||
transform: translate3d(0,-4px,0);
|
||||
}
|
||||
}
|
||||
|
||||
.bounce {
|
||||
-webkit-animation-name: bounce;
|
||||
animation-name: bounce;
|
||||
-webkit-transform-origin: center bottom;
|
||||
-ms-transform-origin: center bottom;
|
||||
transform-origin: center bottom;
|
||||
}
|
||||
|
||||
.animated {
|
||||
-webkit-animation-duration: 1s;
|
||||
animation-duration: 1s;
|
||||
-webkit-animation-fill-mode: both;
|
||||
animation-fill-mode: both;
|
||||
}
|
||||
|
||||
.animated.infinite {
|
||||
-webkit-animation-iteration-count: infinite;
|
||||
animation-iteration-count: infinite;
|
||||
}
|
||||
|
||||
.animated.hinge {
|
||||
-webkit-animation-duration: 2s;
|
||||
animation-duration: 2s;
|
||||
}
|
||||
|
||||
.hide {
|
||||
display: none;
|
||||
}
|
||||
@@ -9,9 +9,5 @@
|
||||
"filter-type": "نوع الحدث",
|
||||
"filter-start": "تاريخ البدء",
|
||||
"filter-end": "تاريخ الانتهاء",
|
||||
"filter-user": "Filter by User",
|
||||
"filter-user.placeholder": "قم بكتابة اسم مستخدم للتصفية...",
|
||||
"filter-group": "Filter by Group",
|
||||
"filter-group.placeholder": "قم بكتابة اسم مجموعة للتصفية...",
|
||||
"filter-per-page": "لكل صفحة"
|
||||
}
|
||||
@@ -94,8 +94,5 @@
|
||||
"view-as-json": "View as JSON",
|
||||
"expand-analytics": "Expand analytics",
|
||||
"clear-search-history": "Clear Search History",
|
||||
"clear-search-history-confirm": "Are you sure you want to clear entire search history?",
|
||||
"search-term": "Term",
|
||||
"search-count": "Count",
|
||||
"view-all": "View all"
|
||||
"clear-search-history-confirm": "Are you sure you want to clear entire search history?"
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"ip": "رقم الآي بي <strong> %1 </strong>",
|
||||
"nodes-responded": "عدد %1 نقطة/نقاط استجابوا خلال %2 جزء من الثانية.",
|
||||
"host": "المضيف",
|
||||
"primary": "primary / jobs",
|
||||
"primary": "primary / run jobs",
|
||||
"pid": "pid",
|
||||
"nodejs": "nodejs",
|
||||
"online": "online",
|
||||
@@ -19,7 +19,6 @@
|
||||
|
||||
"registered": "Registered",
|
||||
"sockets": "Sockets",
|
||||
"connection-count": "Connection Count",
|
||||
"guests": "Guests",
|
||||
|
||||
"info": "Info"
|
||||
|
||||
@@ -12,8 +12,6 @@
|
||||
"container.card": "Card",
|
||||
"container.card-header": "Card Header",
|
||||
"container.card-body": "Card Body",
|
||||
"container.title": "Title",
|
||||
"container.body": "Body",
|
||||
"container.alert": "Alert",
|
||||
|
||||
"alert.confirm-delete": "Are you sure you wish to delete this widget?",
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
{
|
||||
"title": "Manage Custom User Fields",
|
||||
"create-field": "Create Field",
|
||||
"edit-field": "Edit Field",
|
||||
"manage-custom-fields": "Manage Custom Fields",
|
||||
"type-of-input": "Type of input",
|
||||
"key": "Key",
|
||||
"name": "Name",
|
||||
"icon": "Icon",
|
||||
"type": "Type",
|
||||
"min-rep": "Minimum Reputation",
|
||||
"input-type-text": "Input (Text)",
|
||||
"input-type-link": "Input (Link)",
|
||||
"input-type-number": "Input (Number)",
|
||||
"input-type-date": "Input (Date)",
|
||||
"input-type-select": "Select",
|
||||
"input-type-select-multi": "Select Multiple",
|
||||
"select-options": "Options",
|
||||
"select-options-help": "Add one option per line for the select element",
|
||||
"minimum-reputation": "Minimum reputation",
|
||||
"minimum-reputation-help": "If a user has less than this value they won't be able to use this field",
|
||||
"delete-field-confirm-x": "Do you really want to delete custom field \"%1\"?",
|
||||
"custom-fields-saved": "Custom fields saved",
|
||||
"visibility": "Visibility",
|
||||
"visibility-all": "Everyone can see the field",
|
||||
"visibility-loggedin": "Only logged in users can see the field",
|
||||
"visibility-privileged": "Only privileged users like admins & moderators can see the field"
|
||||
}
|
||||
@@ -22,7 +22,6 @@
|
||||
"delete-content": "Delete User(s) <strong>Content</strong>",
|
||||
"purge": "Delete <strong>User(s)</strong> and <strong>Content</strong>",
|
||||
"download-csv": "Download CSV",
|
||||
"custom-user-fields": "Custom User Fields",
|
||||
"manage-groups": "Manage Groups",
|
||||
"set-reputation": "Set Reputation",
|
||||
"add-group": "Add Group",
|
||||
@@ -122,28 +121,6 @@
|
||||
"alerts.email-sent-to": "An invitation email has been sent to %1",
|
||||
"alerts.x-users-found": "%1 user(s) found, (%2 seconds)",
|
||||
"alerts.select-a-single-user-to-change-email": "Select a single user to change email",
|
||||
"export": "Export",
|
||||
"export-users-fields-title": "Select CSV Fields",
|
||||
"export-field-email": "Email",
|
||||
"export-field-username": "Username",
|
||||
"export-field-uid": "UID",
|
||||
"export-field-ip": "IP",
|
||||
"export-field-joindate": "Join date",
|
||||
"export-field-lastonline": "Last Online",
|
||||
"export-field-lastposttime": "Last Post Time",
|
||||
"export-field-reputation": "Reputation",
|
||||
"export-field-postcount": "Post Count",
|
||||
"export-field-topiccount": "Topic Count",
|
||||
"export-field-profileviews": "Profile Views",
|
||||
"export-field-followercount": "Follower Count",
|
||||
"export-field-followingcount": "Following Count",
|
||||
"export-field-fullname": "Full Name",
|
||||
"export-field-website": "Website",
|
||||
"export-field-location": "Location",
|
||||
"export-field-birthday": "Birthday",
|
||||
"export-field-signature": "Signature",
|
||||
"export-field-aboutme": "About Me",
|
||||
|
||||
"export-users-started": "Exporting users as csv, this might take a while. You will receive a notification when it is complete.",
|
||||
"export-users-completed": "Users exported as csv, click here to download.",
|
||||
"email": "Email",
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
"title-layout": "Title Layout",
|
||||
"title-layout-help": "Define how the browser title will be structured ie. {pageTitle} | {browserTitle}",
|
||||
"description.placeholder": "A short description about your community",
|
||||
"description": "Choose what page is shown when users navigate to the root URL of your forum.",
|
||||
"description": "وصف الموقع",
|
||||
"keywords": "الكلمات الدليله للموقع",
|
||||
"keywords-placeholder": "Keywords describing your community, comma-separated",
|
||||
"logo-and-icons": "Site Logo & Icons",
|
||||
@@ -48,15 +48,5 @@
|
||||
"background-color-help": "Color used for splash screen background when website is installed as a PWA",
|
||||
"undo-timeout": "Undo Timeout",
|
||||
"undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.",
|
||||
"topic-tools": "Topic Tools",
|
||||
"home-page": "Home Page",
|
||||
"home-page-route": "Home Page Route",
|
||||
"custom-route": "Custom Route",
|
||||
"allow-user-home-pages": "Allow User Home Pages",
|
||||
"home-page-title": "Title of the home page (default \"Home\")",
|
||||
"default-language": "اللغة الافتراضية",
|
||||
"auto-detect": "الكشف عن إعدادات اللغة للزوار بشكل آلي",
|
||||
"default-language-help": "تُحدد اللغة الافتراضية إعدادات اللغة لجميع المستخدمين الذين يزورون المنتدى. <br />يمكن للأعضاء تجاوز اللغة الافتراضية من خلال صفحة إعدادات الحساب الخاصة بهم.",
|
||||
"post-sharing": "Post Sharing",
|
||||
"info-plugins-additional": "Plugins can add additional networks for sharing posts."
|
||||
}
|
||||
"topic-tools": "Topic Tools"
|
||||
}
|
||||
|
||||
8
public/language/ar/admin/settings/guest.json
Normal file
8
public/language/ar/admin/settings/guest.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"settings": "Settings",
|
||||
"guest-settings": "Guest Settings",
|
||||
"handles.enabled": "Allow guest handles",
|
||||
"handles.enabled-help": "This option exposes a new field that allows guests to pick a name to associate with each post they make. If disabled, they will simply be called \"Guest\"",
|
||||
"topic-views.enabled": "Allow guests to increase topic view counts",
|
||||
"reply-notifications.enabled": "Allow guests to generate reply notifications"
|
||||
}
|
||||
8
public/language/ar/admin/settings/homepage.json
Normal file
8
public/language/ar/admin/settings/homepage.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"home-page": "Home Page",
|
||||
"description": "Choose what page is shown when users navigate to the root URL of your forum.",
|
||||
"home-page-route": "Home Page Route",
|
||||
"custom-route": "Custom Route",
|
||||
"allow-user-home-pages": "Allow User Home Pages",
|
||||
"home-page-title": "Title of the home page (default \"Home\")"
|
||||
}
|
||||
6
public/language/ar/admin/settings/languages.json
Normal file
6
public/language/ar/admin/settings/languages.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"language-settings": "اعدادات اللغة",
|
||||
"description": "تُحدد اللغة الافتراضية إعدادات اللغة لجميع المستخدمين الذين يزورون المنتدى. <br />يمكن للأعضاء تجاوز اللغة الافتراضية من خلال صفحة إعدادات الحساب الخاصة بهم.",
|
||||
"default-language": "اللغة الافتراضية",
|
||||
"auto-detect": "الكشف عن إعدادات اللغة للزوار بشكل آلي"
|
||||
}
|
||||
@@ -10,7 +10,7 @@
|
||||
"id": "ID: <small>optional</small>",
|
||||
|
||||
"properties": "Properties:",
|
||||
"show-to-groups": "Show to Groups:",
|
||||
"groups": "Groups:",
|
||||
"open-new-window": "Open in a new window",
|
||||
"dropdown": "Dropdown",
|
||||
"dropdown-placeholder": "Place your dropdown menu items below, ie: <br/><li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>",
|
||||
|
||||
@@ -4,11 +4,8 @@
|
||||
"sorting.post-default": "Default Post Sorting",
|
||||
"sorting.oldest-to-newest": "Oldest to Newest",
|
||||
"sorting.newest-to-oldest": "Newest to Oldest",
|
||||
"sorting.recently-replied": "Recently Replied",
|
||||
"sorting.recently-created": "Recently Created",
|
||||
"sorting.most-votes": "Most Votes",
|
||||
"sorting.most-posts": "Most Posts",
|
||||
"sorting.most-views": "Most Views",
|
||||
"sorting.topic-default": "Default Topic Sorting",
|
||||
"length": "Post Length",
|
||||
"post-queue": "Post Queue",
|
||||
|
||||
@@ -2,14 +2,7 @@
|
||||
"reputation": "Reputation Settings",
|
||||
"disable": "Disable Reputation System",
|
||||
"disable-down-voting": "Disable Down Voting",
|
||||
"upvote-visibility": "Up Vote visibility",
|
||||
"upvote-visibility-all": "Everyone can see up votes",
|
||||
"upvote-visibility-loggedin": "Only logged in users can see up votes",
|
||||
"upvote-visibility-privileged": "Only privileged users like admins & moderators can see up votes",
|
||||
"downvote-visibility": "Down Vote visibility",
|
||||
"downvote-visibility-all": "Everyone can see down votes",
|
||||
"downvote-visibility-loggedin": "Only logged in users can see down votes",
|
||||
"downvote-visibility-privileged": "Only privileged users like admins & moderators can see down votes",
|
||||
"votes-are-public": "All Votes Are Public",
|
||||
"thresholds": "Activity Thresholds",
|
||||
"min-rep-upvote": "Minimum reputation to upvote posts",
|
||||
"upvotes-per-day": "Upvotes per day (set to 0 for unlimited upvotes)",
|
||||
@@ -20,6 +13,7 @@
|
||||
"min-rep-chat": "Minimum reputation to send chat messages",
|
||||
"min-rep-post-links": "Minimum reputation to post links",
|
||||
"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",
|
||||
"min-rep-signature": "Minimum reputation to add \"Signature\" to user profile",
|
||||
"min-rep-profile-picture": "Minimum reputation to add \"Profile Picture\" to user profile",
|
||||
@@ -29,12 +23,7 @@
|
||||
"flags.limit-per-target": "Maximum number of times something can be flagged",
|
||||
"flags.limit-per-target-placeholder": "Default: 0",
|
||||
"flags.limit-per-target-help": "When a post or user is flagged multiple times, each additional flag is considered a "report" and added to the original flag. Set this option to a number other than zero to limit the number of reports an item can receive.",
|
||||
"flags.limit-post-flags-per-day": "Maximum number of times a user can flag posts in a day",
|
||||
"flags.limit-post-flags-per-day-help": "Set to 0 to disable, (default: 10)",
|
||||
"flags.limit-user-flags-per-day": "Maximum number of times a user can flag users in a day",
|
||||
"flags.limit-user-flags-per-day-help": "Set to 0 to disable, (default: 10)",
|
||||
"flags.auto-flag-on-downvote-threshold": "Number of downvotes to auto flag posts",
|
||||
"flags.auto-flag-on-downvote-threshold-help": "Set to 0 to disable, (default: 0)",
|
||||
"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",
|
||||
|
||||
4
public/language/ar/admin/settings/social.json
Normal file
4
public/language/ar/admin/settings/social.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"post-sharing": "Post Sharing",
|
||||
"info-plugins-additional": "Plugins can add additional networks for sharing posts."
|
||||
}
|
||||
@@ -9,10 +9,9 @@
|
||||
"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",
|
||||
"resize-image-width-threshold-help": "(in pixels, default: 2000 pixels, set to 0 to disable)",
|
||||
"resize-image-width-threshold-help": "(in pixels, default: 1520 pixels, set to 0 to disable)",
|
||||
"resize-image-width": "Resize images down to specified width",
|
||||
"resize-image-width-help": "(in pixels, default: 760 pixels, set to 0 to disable)",
|
||||
"resize-image-keep-original": "Keep original image after resize",
|
||||
"resize-image-quality": "Quality to use when resizing images",
|
||||
"resize-image-quality-help": "Use a lower quality setting to reduce the file size of resized images.",
|
||||
"max-file-size": "الحد الأقصى لحجم الملف (بالكيبيبايت)",
|
||||
|
||||
@@ -88,10 +88,5 @@
|
||||
"restrictions.seconds-before-new": "Seconds before a new user can make their first post",
|
||||
"restrictions.seconds-edit-after-new": "Number of seconds a post remains editable for new users (set to 0 to disable)",
|
||||
"restrictions.milliseconds-between-messages": "Time between chat messages for new users (ms)",
|
||||
"restrictions.groups-exempt-from-new-user-restrictions": "Select groups that should be exempt from the new user restrictions",
|
||||
"guest-settings": "Guest Settings",
|
||||
"handles.enabled": "Allow guest handles",
|
||||
"handles.enabled-help": "This option exposes a new field that allows guests to pick a name to associate with each post they make. If disabled, they will simply be called \"Guest\"",
|
||||
"topic-views.enabled": "Allow guests to increase topic view counts",
|
||||
"reply-notifications.enabled": "Allow guests to generate reply notifications"
|
||||
}
|
||||
"restrictions.groups-exempt-from-new-user-restrictions": "Select groups that should be exempt from the new user restrictions"
|
||||
}
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
{
|
||||
"post-sort-option": "Post sort option, %1",
|
||||
"topic-sort-option": "Topic sort option, %1",
|
||||
"user-avatar-for": "User avatar for %1",
|
||||
"user-watched-tags": "User watched tags",
|
||||
"delete-upload-button": "Delete upload button",
|
||||
"group-page-link-for": "Group page link for %1"
|
||||
}
|
||||
@@ -32,7 +32,7 @@
|
||||
"folder-exists": "Folder exists",
|
||||
"invalid-pagination-value": "رقم الصفحة غير صحيح ، يجب أن يكون بين %1 و %2 .",
|
||||
"username-taken": "اسم المستخدم مأخوذ",
|
||||
"email-taken": "Email address is already taken.",
|
||||
"email-taken": "البريد الالكتروني مأخوذ",
|
||||
"email-nochange": "The email entered is the same as the email already on file.",
|
||||
"email-invited": "Email was already invited",
|
||||
"email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.",
|
||||
@@ -153,7 +153,6 @@
|
||||
"about-me-too-long": "نأسف، ( عني ) لا يمكن أن يكون أكثر من %1 حرف.",
|
||||
"cant-chat-with-yourself": "لايمكنك فتح محادثة مع نفسك",
|
||||
"chat-restricted": "هذا المستخدم عطل المحادثات الواردة عليه. يجب أن يتبعك حتى تتمكن من فتح محادثة معه.",
|
||||
"chat-user-blocked": "You have been blocked by this user.",
|
||||
"chat-disabled": "نظام المحادثة معطل.",
|
||||
"too-many-messages": "لقد أرسلت الكثير من الرسائل، الرجاء اﻹنتظار قليلاً",
|
||||
"invalid-chat-message": "الرسالة غير صالحة.",
|
||||
@@ -181,20 +180,10 @@
|
||||
"not-enough-reputation-min-rep-signature": "You need %1 reputation to add a signature",
|
||||
"not-enough-reputation-min-rep-profile-picture": "You need %1 reputation to add a profile picture",
|
||||
"not-enough-reputation-min-rep-cover-picture": "You need %1 reputation to add a cover picture",
|
||||
"not-enough-reputation-custom-field": "You need %1 reputation for %2",
|
||||
"custom-user-field-value-too-long": "Custom field value too long, %1",
|
||||
"custom-user-field-select-value-invalid": "Custom field selected option is invalid, %1",
|
||||
"custom-user-field-invalid-text": "Custom field text is invalid, %1",
|
||||
"custom-user-field-invalid-link": "Custom field link is invalid, %1",
|
||||
"custom-user-field-invalid-number": "Custom field number is invalid, %1",
|
||||
"custom-user-field-invalid-date": "Custom field date is invalid, %1",
|
||||
"invalid-custom-user-field": "Invalid custom user field, \"%1\" is already used by NodeBB",
|
||||
"post-already-flagged": "You have already flagged this post",
|
||||
"user-already-flagged": "You have already flagged this user",
|
||||
"post-flagged-too-many-times": "This post has been flagged by others already",
|
||||
"user-flagged-too-many-times": "This user has been flagged by others already",
|
||||
"too-many-post-flags-per-day": "You can only flag %1 post(s) per day",
|
||||
"too-many-user-flags-per-day": "You can only flag %1 user(s) per day",
|
||||
"cant-flag-privileged": "You are not allowed to flag the profiles or content of privileged users (moderators/global moderators/admins)",
|
||||
"cant-locate-flag-report": "Cannot locate flag report",
|
||||
"self-vote": "You cannot vote on your own post",
|
||||
@@ -230,7 +219,6 @@
|
||||
"already-unblocked": "This user is already unblocked",
|
||||
"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",
|
||||
"invalid-plugin-id": "Invalid plugin ID",
|
||||
"plugin-not-whitelisted": "Unable to install plugin – only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP",
|
||||
"plugins-set-in-configuration": "You are not allowed to change plugin state as they are defined at runtime (config.json, environmental variables or terminal arguments), please modify the configuration instead.",
|
||||
"theme-not-set-in-configuration": "When defining active plugins in configuration, changing themes requires adding the new theme to the list of active plugins before updating it in the ACP",
|
||||
|
||||
@@ -90,6 +90,6 @@
|
||||
"bulk-actions": "Bulk Actions",
|
||||
"bulk-resolve": "Resolve Flag(s)",
|
||||
"bulk-success": "%1 flags updated",
|
||||
"flagged-timeago": "Flagged <span class=\"timeago\" title=\"%1\"></span>",
|
||||
"flagged-timeago-readable": "Flagged <span class=\"timeago\" title=\"%1\"></span> (%2)",
|
||||
"auto-flagged": "[Auto Flagged] Received %1 downvotes."
|
||||
}
|
||||
@@ -24,15 +24,8 @@
|
||||
"cancel": "Cancel",
|
||||
"close": "أغلق",
|
||||
"pagination": "الصفحات",
|
||||
"pagination.previouspage": "Previous Page",
|
||||
"pagination.nextpage": "Next Page",
|
||||
"pagination.firstpage": "First Page",
|
||||
"pagination.lastpage": "Last Page",
|
||||
"pagination.out-of": "%1 من %2",
|
||||
"pagination.enter-index": "Go to post index",
|
||||
"pagination.go-to-page": "Go to page",
|
||||
"pagination.page-x": "Page %1",
|
||||
"header.brand-logo": "Brand Logo",
|
||||
"header.admin": "مدير النظام",
|
||||
"header.categories": "الأقسام",
|
||||
"header.recent": "حديث",
|
||||
@@ -54,6 +47,8 @@
|
||||
"chats.loading": "تحميل الدردشات",
|
||||
"drafts.loading": "Loading Drafts",
|
||||
"motd.welcome": "مرحبا بكم في NodeBB، منصة المناقشة المستقبلية.",
|
||||
"previouspage": "الصفحة السابقة",
|
||||
"nextpage": "الصفحة التالية",
|
||||
"alert.success": "نجاح",
|
||||
"alert.error": "خطأ",
|
||||
"alert.warning": "Warning",
|
||||
@@ -140,12 +135,9 @@
|
||||
"edited": "حُرِر",
|
||||
"disabled": "معطل",
|
||||
"select": "تحديد",
|
||||
"selected": "Selected",
|
||||
"copied": "Copied",
|
||||
"user-search-prompt": "Type something here to find users...",
|
||||
"hidden": "Hidden",
|
||||
"sort": "Sort",
|
||||
"actions": "Actions",
|
||||
"rss-feed": "RSS Feed",
|
||||
"skip-to-content": "Skip to content"
|
||||
"actions": "Actions"
|
||||
}
|
||||
@@ -1,9 +1,8 @@
|
||||
{
|
||||
"chat.room-id": "Room %1",
|
||||
"chat.chatting-with": "Chat with",
|
||||
"chat.placeholder": "Type chat message here, drag & drop images",
|
||||
"chat.placeholder.mobile": "Type chat message",
|
||||
"chat.placeholder.message-room": "Message #%1",
|
||||
"chat.placeholder": "Type chat message here, drag & drop images, press enter to send",
|
||||
"chat.placeholder.mobile": "Type chat message here",
|
||||
"chat.scroll-up-alert": "Go to most recent message",
|
||||
"chat.usernames-and-x-others": "%1 & %2 others",
|
||||
"chat.chat-with-usernames": "Chat with %1",
|
||||
|
||||
@@ -52,10 +52,10 @@
|
||||
"user-posted-to-multiple": "<strong>%1</strong>, <strong>%2</strong> and %3 others have posted replies to: <strong>%4</strong>",
|
||||
"user-posted-topic": "<strong>%1</strong> أنشأ موضوعًا جديدًا: <strong>%2</strong>",
|
||||
"user-edited-post": "<strong>%1</strong> has edited a post in <strong>%2</strong>",
|
||||
"user-posted-topic-with-tag": "<strong>%1</strong> has posted <strong>%2</strong> (tagged %3)",
|
||||
"user-posted-topic-with-tag-dual": "<strong>%1</strong> has posted <strong>%2</strong> (tagged %3 and %4)",
|
||||
"user-posted-topic-with-tag-triple": "<strong>%1</strong> has posted <strong>%2</strong> (tagged %3, %4, and %5)",
|
||||
"user-posted-topic-with-tag-multiple": "<strong>%1</strong> has posted <strong>%2</strong> (tagged %3)",
|
||||
"user-posted-topic-with-tag": "<strong>%1</strong> has posted a new topic with tag <strong>%2</strong>",
|
||||
"user-posted-topic-with-tag-dual": "<strong>%1</strong> has posted a new topic with tags <strong>%2</strong> and <strong>%3</strong>",
|
||||
"user-posted-topic-with-tag-triple": "<strong>%1</strong> has posted a new topic with tags <strong>%2</strong>, <strong>%3</strong> and <strong>%4</strong>",
|
||||
"user-posted-topic-with-tag-multiple": "<strong>%1</strong> has posted a new topic with tags <strong>%2</strong>",
|
||||
"user-posted-topic-in-category": "<strong>%1</strong> has posted a new topic in <strong>%2</strong>",
|
||||
"user-started-following-you": "<strong>%1</strong> صار يتابعك.",
|
||||
"user-started-following-you-dual": "<strong>%1</strong> and <strong>%2</strong> started following you.",
|
||||
@@ -75,7 +75,6 @@
|
||||
"email-confirmed": "تم التحقق من عنوان البريد الإلكتروني",
|
||||
"email-confirmed-message": "شكرًا على إثبات صحة عنوان بريدك الإلكتروني. صار حسابك مفعلًا بالكامل.",
|
||||
"email-confirm-error-message": "حدث خطأ أثناء التحقق من عنوان بريدك الإلكتروني. ربما رمز التفعيل خاطئ أو انتهت صلاحيته.",
|
||||
"email-confirm-error-message-already-validated": "Your email address was already validated.",
|
||||
"email-confirm-sent": "تم إرسال بريد التفعيل.",
|
||||
"none": "None",
|
||||
"notification-only": "التنبيهات فقط",
|
||||
|
||||
@@ -54,7 +54,6 @@
|
||||
"account/settings-of": "Changing settings of %1",
|
||||
"account/watched": "Topics watched by %1",
|
||||
"account/ignored": "Topics ignored by %1",
|
||||
"account/read": "Topics read by %1",
|
||||
"account/upvoted": "Posts upvoted by %1",
|
||||
"account/downvoted": "Posts downvoted by %1",
|
||||
"account/best": "Best posts made by %1",
|
||||
|
||||
@@ -38,6 +38,5 @@
|
||||
"remove-selected": "Remove Selected",
|
||||
"remove-selected-confirm": "Do you want to remove %1 selected posts?",
|
||||
"bulk-accept-success": "%1 posts accepted",
|
||||
"bulk-reject-success": "%1 posts rejected",
|
||||
"links-in-this-post": "Links in this post"
|
||||
"bulk-reject-success": "%1 posts rejected"
|
||||
}
|
||||
@@ -7,7 +7,6 @@
|
||||
"in-titles": "In titles",
|
||||
"in-titles-posts": "In titles and posts",
|
||||
"in-posts": "In posts",
|
||||
"in-bookmarks": "In bookmarks",
|
||||
"in-categories": "In categories",
|
||||
"in-users": "In users",
|
||||
"in-tags": "In tags",
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"no-tag-topics": "لا يوجد مواضيع بهذه الكلمة الدلالية.",
|
||||
"no-tags-found": "No tags found",
|
||||
"tags": "الكلمات الدلالية",
|
||||
"enter-tags-here": "Enter tags, %1 - %2 characters.",
|
||||
"enter-tags-here": "Enter tags here, between %1 and %2 characters each.",
|
||||
"enter-tags-here-short": "أدخل الكلمات الدلالية...",
|
||||
"no-tags": "لا يوجد كلمات دلالية بعد.",
|
||||
"select-tags": "Select Tags",
|
||||
|
||||
@@ -3,12 +3,9 @@
|
||||
"skins": "Skins",
|
||||
"collapse": "Collapse",
|
||||
"expand": "Expand",
|
||||
"sidebar-toggle": "Sidebar Toggle",
|
||||
"login-register-to-search": "Login or register to search.",
|
||||
"settings.title": "Theme settings",
|
||||
"settings.enableQuickReply": "Enable quick reply",
|
||||
"settings.enableBreadcrumbs": "Show breadcrumbs in Category and Topic pages",
|
||||
"settings.enableBreadcrumbs.why": "Breadcrumbs are visible in most pages for ease-of-navigation. The base design of the category and topic pages has alternative means to link back to parent pages, but the breadcrumb can be toggled off to reduce clutter.",
|
||||
"settings.centerHeaderElements": "Center header elements",
|
||||
"settings.mobileTopicTeasers": "Show topic teasers on mobile",
|
||||
"settings.stickyToolbar": "Sticky toolbar",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"title": "أعلى الصفحة",
|
||||
"no-top-topics": "لا توجد مواضيع أعلى الصفحة"
|
||||
"title": "Top",
|
||||
"no-top-topics": "No top topics"
|
||||
}
|
||||
@@ -15,7 +15,6 @@
|
||||
"replies-to-this-post": "%1 الردود",
|
||||
"one-reply-to-this-post": "1 رد",
|
||||
"last-reply-time": "آخر رد",
|
||||
"reply-options": "Reply options",
|
||||
"reply-as-topic": "رد بموضوع",
|
||||
"guest-login-reply": "يجب عليك تسجيل الدخول للرد",
|
||||
"login-to-view": "سجل الدخول للمشاهدة",
|
||||
@@ -27,7 +26,6 @@
|
||||
"restore": "استعادة",
|
||||
"move": "نقل",
|
||||
"change-owner": "Change Owner",
|
||||
"manage-editors": "Manage Editors",
|
||||
"fork": "فرع",
|
||||
"link": "رابط",
|
||||
"share": "نشر",
|
||||
@@ -36,7 +34,6 @@
|
||||
"pinned": "مثبت",
|
||||
"pinned-with-expiry": "مثبت حتى %1",
|
||||
"scheduled": "Scheduled",
|
||||
"deleted": "Deleted",
|
||||
"moved": "منقول",
|
||||
"moved-from": "Moved from %1",
|
||||
"copy-code": "Copy Code",
|
||||
@@ -104,7 +101,6 @@
|
||||
"thread-tools.move-posts": "Move Posts",
|
||||
"thread-tools.move-all": "نقل الكل",
|
||||
"thread-tools.change-owner": "Change Owner",
|
||||
"thread-tools.manage-editors": "Manage Editors",
|
||||
"thread-tools.select-category": "Select Category",
|
||||
"thread-tools.fork": "إنشاء فرع الموضوع",
|
||||
"thread-tools.tag": "Tag Topic",
|
||||
@@ -159,7 +155,6 @@
|
||||
"move-posts-instruction": "Click the posts you want to move then enter a topic ID or go to the target topic",
|
||||
"move-topic-instruction": "Select the target category and then click move",
|
||||
"change-owner-instruction": "Click the posts you want to assign to another user",
|
||||
"manage-editors-instruction": "Manage the users who can edit this post below.",
|
||||
"composer.title-placeholder": "أدخل عنوان موضوعك هنا...",
|
||||
"composer.handle-placeholder": "Enter your name/handle here",
|
||||
"composer.hide": "Hide",
|
||||
@@ -185,8 +180,6 @@
|
||||
"sort-by": "ترتيب حسب",
|
||||
"oldest-to-newest": "من الأقدم إلى الأحدث",
|
||||
"newest-to-oldest": "من الأحدث إلى الأقدم",
|
||||
"recently-replied": "Recently Replied",
|
||||
"recently-created": "Recently Created",
|
||||
"most-votes": "Most Votes",
|
||||
"most-posts": "Most Posts",
|
||||
"most-views": "Most Views",
|
||||
@@ -211,13 +204,7 @@
|
||||
"last-post": "Last post",
|
||||
"go-to-my-next-post": "Go to my next post",
|
||||
"no-more-next-post": "You don't have more posts in this topic",
|
||||
"open-composer": "Open composer",
|
||||
"post-quick-reply": "Quick reply",
|
||||
"navigator.index": "Post %1 of %2",
|
||||
"navigator.unread": "%1 unread",
|
||||
"upvote-post": "Upvote post",
|
||||
"downvote-post": "Downvote post",
|
||||
"post-tools": "Post tools",
|
||||
"unread-posts-link": "Unread posts link",
|
||||
"thumb-image": "Topic thumbnail image"
|
||||
"navigator.unread": "%1 unread"
|
||||
}
|
||||
@@ -3,7 +3,6 @@
|
||||
"no-unread-topics": "ليس هناك أي موضوع غير مقروء",
|
||||
"load-more": "حمل المزيد",
|
||||
"mark-as-read": "حدد غير مقروء",
|
||||
"mark-as-unread": "Mark as Unread",
|
||||
"selected": "المحددة",
|
||||
"all": "الكل",
|
||||
"all-categories": "كل الفئات",
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
{
|
||||
"user-menu": "قائمة المستخدم",
|
||||
"banned": "محظور",
|
||||
"unbanned": "Unbanned",
|
||||
"muted": "كتم",
|
||||
"unmuted": "Unmuted",
|
||||
"offline": "غير متصل",
|
||||
"deleted": "محذوف",
|
||||
"username": "إسم المستخدم",
|
||||
@@ -16,7 +13,7 @@
|
||||
"ban-account": "حظر الحساب",
|
||||
"ban-account-confirm": "هل تريد حقاً حظر هاذا العضو؟",
|
||||
"unban-account": "إزالة حظر الحساب",
|
||||
"mute-account": "كتم الحساب",
|
||||
"mute-account": "Mute Account",
|
||||
"unmute-account": "Unmute Account",
|
||||
"delete-account": "حذف الحساب",
|
||||
"delete-account-as-admin": "Delete <strong>Account</strong>",
|
||||
@@ -39,11 +36,10 @@
|
||||
"reputation": "السمعة",
|
||||
"bookmarks": "المفضلات",
|
||||
"watched-categories": "الأقسام المُتابعة",
|
||||
"watched-tags": "الوسوم المُتابعة",
|
||||
"watched-tags": "Watched tags",
|
||||
"change-all": "غير الكل",
|
||||
"watched": "متابع",
|
||||
"ignored": "تم تجاهله",
|
||||
"read": "Read",
|
||||
"default-category-watch-state": "حالة مشاهدة اﻻقسام الافتراضية",
|
||||
"followers": "المتابعون",
|
||||
"following": "يتابع",
|
||||
@@ -75,11 +71,10 @@
|
||||
"upload-new-picture": "رفع صورة جديدة",
|
||||
"upload-new-picture-from-url": "رفع صورة جديدة من رابط",
|
||||
"current-password": "كلمة السر الحالية",
|
||||
"new-password": "كلمة السر الجديدة",
|
||||
"new-password": "New Password",
|
||||
"change-password": "تغيير كلمة السر",
|
||||
"change-password-error": "كلمة سر غير صحيحة",
|
||||
"change-password-error-wrong-current": "كلمة السر الحالية ليست صحيحة",
|
||||
"change-password-error-same-password": "كلمة السر الجديدة مطابقة لكلمة السر الحالية, فضلاً قم بإدخال كلمة سر جديدة.",
|
||||
"change-password-error-match": "كلمة السر غير مطابقة لتأكيد كلمة السر",
|
||||
"change-password-error-privileges": "ليس لديك الصلاحيات الكافية لتغيير كلمة السر هذه.",
|
||||
"change-password-success": "تم تحديث كلمة السر خاصتك.",
|
||||
@@ -115,7 +110,6 @@
|
||||
"has-no-topics": "هذا المستخدم لم يكتب أي موضوع حتى الآن.",
|
||||
"has-no-watched-topics": "هذا المستخدم لم يقم بمراقبة اية مواضيع حتى الآن.",
|
||||
"has-no-ignored-topics": "هذا المستخدم لم يقم بتجاهل اية مواضيع حتى الآن.",
|
||||
"has-no-read-topics": "هذا المستخدم لم يقم بقراءة أي مشاركة حتى الاّن.",
|
||||
"has-no-upvoted-posts": "هذا المستخدم لم يقم بالتصويت للأعلى لأي مشاركة حتى الآن.",
|
||||
"has-no-downvoted-posts": "هذا المستخدم لم يقم بالتصويت للأسفل لأي مشاركة حتى الآن.",
|
||||
"has-no-controversial-posts": "هذا المستخدم ﻻيمتلك تصويت للأسفل لأي مشاركة حتى الآن.",
|
||||
@@ -147,10 +141,6 @@
|
||||
"follow-topics-you-create": "متابعة المواضيع التي تقوم بإنشائها",
|
||||
"grouptitle": "عنوان المجموعة",
|
||||
"group-order-help": "Select a group and use the arrows to order titles",
|
||||
"show-group-title": "Show group title",
|
||||
"hide-group-title": "Hide group title",
|
||||
"order-group-up": "Order group up",
|
||||
"order-group-down": "Order group down",
|
||||
"no-group-title": "لا يوجد عنوان للمجموعة",
|
||||
"select-skin": "إختر سمة",
|
||||
"default": "Default (%1)",
|
||||
@@ -167,16 +157,11 @@
|
||||
"sso.dissociate-confirm-title": "تأكيد الفصل",
|
||||
"sso.dissociate-confirm": "هل تريد بالتأكيد فصل حسابك عن %1؟",
|
||||
"info.latest-flags": "أحدث العلامات",
|
||||
"info.profile": "Profile",
|
||||
"info.post": "Post",
|
||||
"info.view-flag": "View flag",
|
||||
"info.reported-by": "Reported by:",
|
||||
"info.no-flags": "لم يتم العثور على مشاركات معلمة",
|
||||
"info.ban-history": "سجل الحظر الأحدث",
|
||||
"info.no-ban-history": "هذا المستخدم لم يتم حظره مطلقا",
|
||||
"info.banned-until": "محظور حتى %1",
|
||||
"info.banned-expiry": "Expiry",
|
||||
"info.ban-expired": "Ban expired",
|
||||
"info.banned-permanently": "محظور بشكل دائم",
|
||||
"info.banned-reason-label": "سبب",
|
||||
"info.banned-no-reason": "لم يتم إعطاء سبب.",
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
{
|
||||
"all-users": "كل المستخدمين",
|
||||
"followed-users": "Followed Users",
|
||||
"all-users": "All Users",
|
||||
"latest-users": "أحدث الأعضاء",
|
||||
"top-posters": "اﻷكثر مشاركة",
|
||||
"most-reputation": "أعلى سمعة",
|
||||
|
||||
@@ -9,9 +9,5 @@
|
||||
"filter-type": "Вид събитие",
|
||||
"filter-start": "Начална дата",
|
||||
"filter-end": "Крайна дата",
|
||||
"filter-user": "Филтриране по потребител",
|
||||
"filter-user.placeholder": "Въведете име на потребител, за да филтрирате…",
|
||||
"filter-group": "Филтриране по група",
|
||||
"filter-group.placeholder": "Въведете име на група, за да филтрирате…",
|
||||
"filter-per-page": "На страница"
|
||||
}
|
||||
@@ -94,8 +94,5 @@
|
||||
"view-as-json": "Преглед като JSON",
|
||||
"expand-analytics": "Разгъване на данните за анализ",
|
||||
"clear-search-history": "Изчистване на историята на търсенията",
|
||||
"clear-search-history-confirm": "Наистина ли искате да изчистите историята на търсенията?",
|
||||
"search-term": "Фраза",
|
||||
"search-count": "Брой",
|
||||
"view-all": "Преглед на всички"
|
||||
"clear-search-history-confirm": "Наистина ли искате да изчистите историята на търсенията?"
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"ip": "IP <strong>%1</strong>",
|
||||
"nodes-responded": "%1 възела отговориха в рамките на %2мсек!",
|
||||
"host": "сървър",
|
||||
"primary": "основен / задачи",
|
||||
"primary": "основен / изпълнение на задачите",
|
||||
"pid": "ид. на процеса",
|
||||
"nodejs": "nodejs",
|
||||
"online": "на линия",
|
||||
@@ -19,7 +19,6 @@
|
||||
|
||||
"registered": "Регистрирани",
|
||||
"sockets": "Сокети",
|
||||
"connection-count": "Брой връзки",
|
||||
"guests": "Гости",
|
||||
|
||||
"info": "Информация"
|
||||
|
||||
@@ -12,8 +12,6 @@
|
||||
"container.card": "Карта",
|
||||
"container.card-header": "Заглавна част на карта",
|
||||
"container.card-body": "Основна част на карта",
|
||||
"container.title": "Заглавие",
|
||||
"container.body": "Съдържание",
|
||||
"container.alert": "Предупреждение",
|
||||
|
||||
"alert.confirm-delete": "Наистина ли искате да изтриете джаджата?",
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
{
|
||||
"title": "Управление на персонализираните потребителски полета",
|
||||
"create-field": "Създаване на поле",
|
||||
"edit-field": "Редактиране на полето",
|
||||
"manage-custom-fields": "Управление на персонализираните полета",
|
||||
"type-of-input": "Вид на входните данни",
|
||||
"key": "Ключ",
|
||||
"name": "Име",
|
||||
"icon": "Иконка",
|
||||
"type": "Тип",
|
||||
"min-rep": "Минимална репутация",
|
||||
"input-type-text": "Въвеждане (текст)",
|
||||
"input-type-link": "Въвеждане (връзка)",
|
||||
"input-type-number": "Въвеждане (число)",
|
||||
"input-type-date": "Въвеждане (дата)",
|
||||
"input-type-select": "Избиране",
|
||||
"input-type-select-multi": "Избиране на множество",
|
||||
"select-options": "Опции",
|
||||
"select-options-help": "Добавете по една опция на ред за избрания елемент",
|
||||
"minimum-reputation": "Минимална репутация",
|
||||
"minimum-reputation-help": "Ако потребителят има по-малко репутация от посочената, той няма да може да използва това поле",
|
||||
"delete-field-confirm-x": "Наистина ли искате да изтриете персонализираното поле „%1“?",
|
||||
"custom-fields-saved": "Персонализираните полета са запазени",
|
||||
"visibility": "Видимост",
|
||||
"visibility-all": "Всички могат да виждат полето",
|
||||
"visibility-loggedin": "Само вписаните потребители могат да виждат полето",
|
||||
"visibility-privileged": "Само потребителите с по-високи правомощия (като администратори и модератори) могат да виждат полето"
|
||||
}
|
||||
@@ -22,7 +22,6 @@
|
||||
"delete-content": "Изтриване на <strong>съдържанието</strong> на потребителя/ите",
|
||||
"purge": "Изтриване на <strong>потребителя/ите</strong> и <strong>съдържанието</strong>",
|
||||
"download-csv": "Сваляне във формат „CSV“",
|
||||
"custom-user-fields": "Персонализирани потребителски полета",
|
||||
"manage-groups": "Управление на групите",
|
||||
"set-reputation": "Задаване на репутация",
|
||||
"add-group": "Добавяне на група",
|
||||
@@ -122,28 +121,6 @@
|
||||
"alerts.email-sent-to": "Беше изпратено е-писмо за потвърждение до %1",
|
||||
"alerts.x-users-found": "Намерени потребители: %1 (%2 секунди)",
|
||||
"alerts.select-a-single-user-to-change-email": "Изберете един потребител, чиято е-поща да промените",
|
||||
"export": "Изнасяне",
|
||||
"export-users-fields-title": "Изберете полета за CSV",
|
||||
"export-field-email": "Е-поща",
|
||||
"export-field-username": "Потребителско име",
|
||||
"export-field-uid": "Потребителски идентификатор",
|
||||
"export-field-ip": "IP адрес",
|
||||
"export-field-joindate": "Дата на присъединяване",
|
||||
"export-field-lastonline": "Последно на линия",
|
||||
"export-field-lastposttime": "Време на последния отговор",
|
||||
"export-field-reputation": "Репутация",
|
||||
"export-field-postcount": "Брой публикации",
|
||||
"export-field-topiccount": "Брой теми",
|
||||
"export-field-profileviews": "Преглеждания на профила",
|
||||
"export-field-followercount": "Брой последователи",
|
||||
"export-field-followingcount": "Брой последвани",
|
||||
"export-field-fullname": "Пълно име",
|
||||
"export-field-website": "Уеб сайт",
|
||||
"export-field-location": "Местоположение",
|
||||
"export-field-birthday": "Рождена дата",
|
||||
"export-field-signature": "Подпис",
|
||||
"export-field-aboutme": "За потребителя",
|
||||
|
||||
"export-users-started": "Изнасяне на потребителите във формат „csv“… Това може да отнеме известно време. Ще получите известие, когато е готово.",
|
||||
"export-users-completed": "Потребителите са изнесени във формат „csv“, щракнете за сваляне.",
|
||||
"email": "Е-поща",
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
"title-layout": "Разположение на заглавието",
|
||||
"title-layout-help": "Определете как ще бъде структурирано заглавието на браузъра, например: {pageTitle} | {browserTitle}",
|
||||
"description.placeholder": "Кратко описание на общността Ви",
|
||||
"description": "Изберете коя страница да бъде показана, когато потребителите отидат на главния адрес на форума.",
|
||||
"description": "Описание на уеб сайта",
|
||||
"keywords": "Ключови думи на уеб сайта",
|
||||
"keywords-placeholder": "Ключови думи, описващи общността Ви. Трябва да бъдат разделени със запетаи.",
|
||||
"logo-and-icons": "Лого и иконки на уеб сайта",
|
||||
@@ -48,15 +48,5 @@
|
||||
"background-color-help": "Цвят, който да се използва като фон за началния екран, когато уеб сайтът е инсталиран като приложение",
|
||||
"undo-timeout": "Време за отмяна",
|
||||
"undo-timeout-help": "Някои действия, като например преместването на теми, могат да бъдат отменени от модератора в рамките на определено време. Задайте 0, за да забраните изцяло отменянето.",
|
||||
"topic-tools": "Инструменти за темите",
|
||||
"home-page": "Начална страница",
|
||||
"home-page-route": "Път на началната страница",
|
||||
"custom-route": "Персонализиран път",
|
||||
"allow-user-home-pages": "Разрешаване на потребителските начални страници",
|
||||
"home-page-title": "Заглавие на началната страница (по подразбиране: „Начало“)",
|
||||
"default-language": "Език по подразбиране",
|
||||
"auto-detect": "Автоматично разпознаване на езика за гостите",
|
||||
"default-language-help": "Езикът по подразбиране определя езиковите настройки за всички потребители, които посещават Вашия форум. <br />Отделните потребители могат да сменят езика си от страницата с настройки на профила си.",
|
||||
"post-sharing": "Споделяне на публикации",
|
||||
"info-plugins-additional": "Добавките могат да добавят допълнителни мрежи за споделяне на публикации."
|
||||
}
|
||||
"topic-tools": "Инструменти за темите"
|
||||
}
|
||||
|
||||
8
public/language/bg/admin/settings/guest.json
Normal file
8
public/language/bg/admin/settings/guest.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"settings": "Настройки",
|
||||
"guest-settings": "Настройки за гостите",
|
||||
"handles.enabled": "Позволяване на имената за гостите",
|
||||
"handles.enabled-help": "Тази възможност предоставя ново поле, което позволява на гостите да си изберат име, което да се използва за всяка публикация, която правят. Ако е изключено, всички те просто ще имат името „Гост“.",
|
||||
"topic-views.enabled": "Гостите да допринасят за броя на преглеждания на темите",
|
||||
"reply-notifications.enabled": "Гостите да могат да предизвикват изпращането на известия за отговорите си"
|
||||
}
|
||||
8
public/language/bg/admin/settings/homepage.json
Normal file
8
public/language/bg/admin/settings/homepage.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"home-page": "Начална страница",
|
||||
"description": "Изберете коя страница да бъде показана, когато потребителите отидат на главния адрес на форума.",
|
||||
"home-page-route": "Път на началната страница",
|
||||
"custom-route": "Персонализиран път",
|
||||
"allow-user-home-pages": "Разрешаване на потребителските начални страници",
|
||||
"home-page-title": "Заглавие на началната страница (по подразбиране: „Начало“)"
|
||||
}
|
||||
6
public/language/bg/admin/settings/languages.json
Normal file
6
public/language/bg/admin/settings/languages.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"language-settings": "Езикови настройки",
|
||||
"description": "Езикът по подразбиране определя езиковите настройки за всички потребители, които посещават Вашия форум. <br />Отделните потребители могат да сменят езика си от страницата с настройки на профила си.",
|
||||
"default-language": "Език по подразбиране",
|
||||
"auto-detect": "Автоматично разпознаване на езика за гостите"
|
||||
}
|
||||
@@ -10,7 +10,7 @@
|
||||
"id": "Идентификатор: <small>незадължително</small>",
|
||||
|
||||
"properties": "Свойства:",
|
||||
"show-to-groups": "Показване на групите:",
|
||||
"groups": "Групи:",
|
||||
"open-new-window": "Отваряне в нов прозорец",
|
||||
"dropdown": "Падащо меню",
|
||||
"dropdown-placeholder": "Въведете елементите на падащото меню по-долу. Пример: <br/><li><a class="dropdown-item" href="https://myforum.com">Връзка 1</a></li>",
|
||||
|
||||
@@ -4,11 +4,8 @@
|
||||
"sorting.post-default": "Подредба по подразбиране на публикациите",
|
||||
"sorting.oldest-to-newest": "Първо най-старите",
|
||||
"sorting.newest-to-oldest": "Първо най-новите",
|
||||
"sorting.recently-replied": "Първо тези с най-скорошни отговори",
|
||||
"sorting.recently-created": "Първо най-скоро създадените",
|
||||
"sorting.most-votes": "Първо тези с най-много гласове",
|
||||
"sorting.most-posts": "Първо тези с най-много публикации",
|
||||
"sorting.most-views": "Първо тези с най-много преглеждания",
|
||||
"sorting.topic-default": "Подредба по подразбиране на темите",
|
||||
"length": "Дължина на публикациите",
|
||||
"post-queue": "Опашка за публикации",
|
||||
|
||||
@@ -2,14 +2,7 @@
|
||||
"reputation": "Настройки за репутацията",
|
||||
"disable": "Изключване на системата за репутация",
|
||||
"disable-down-voting": "Забрана на отрицателното гласуване",
|
||||
"upvote-visibility": "Видимост на положителните гласове",
|
||||
"upvote-visibility-all": "Всички могат да виждат положителните гласове",
|
||||
"upvote-visibility-loggedin": "Само вписаните потребители могат да виждат положителните гласове",
|
||||
"upvote-visibility-privileged": "Само потребителите с по-високи правомощия (като администратори и модератори) могат да виждат положителните гласове",
|
||||
"downvote-visibility": "Видимост на отрицателните гласове",
|
||||
"downvote-visibility-all": "Всички могат да виждат отрицателните гласове",
|
||||
"downvote-visibility-loggedin": "Само вписаните потребители могат да виждат отрицателните гласове",
|
||||
"downvote-visibility-privileged": "Само потребителите с по-високи правомощия (като администратори и модератори) могат да виждат отрицателните гласове",
|
||||
"votes-are-public": "Всички гласувания са публични",
|
||||
"thresholds": "Ограничения на дейността",
|
||||
"min-rep-upvote": "Минимална репутация, необходима за положително гласуване за публикации",
|
||||
"upvotes-per-day": "Положителни гласувания за ден (задайте 0 за неограничен брой)",
|
||||
@@ -20,6 +13,7 @@
|
||||
"min-rep-chat": "Минимална репутация, необходима за изпращане на съобщения в разговори",
|
||||
"min-rep-post-links": "Минимална репутация, необходима за публикуване на връзки",
|
||||
"min-rep-flag": "Минимална репутация, необходима за докладване на публикации",
|
||||
"min-rep-website": "Минимална репутация, необходима за добавяне на полето „Уебсайт“ към профила на потребителя",
|
||||
"min-rep-aboutme": "Минимална репутация, необходима за добавяне на полето „За мен“ към профила на потребителя",
|
||||
"min-rep-signature": "Минимална репутация, необходима за добавяне на полето „Подпис“ към профила на потребителя",
|
||||
"min-rep-profile-picture": "Минимална репутация, необходима за добавяне на профилна снимка към профила на потребителя",
|
||||
@@ -29,12 +23,7 @@
|
||||
"flags.limit-per-target": "Максимален брой докладвания на едно и също нещо",
|
||||
"flags.limit-per-target-placeholder": "По подразбиране: 0",
|
||||
"flags.limit-per-target-help": "Когато публикация или потребител бъде докладван няколко пъти, това се добавя към един общ доклад. Задайте на тази настройка стойност по-голяма от нула, за да ограничите броя на докладванията, които могат да бъдат натрупани към една публикация или потребител.",
|
||||
"flags.limit-post-flags-per-day": "Максимален брой публикации, които потребител може да докладва в рамките на един ден",
|
||||
"flags.limit-post-flags-per-day-help": "Задайте 0 за изключване (по подразбиране: 10)",
|
||||
"flags.limit-user-flags-per-day": "Максимален брой потребители, които даден потребител може да докладва в рамките на един ден",
|
||||
"flags.limit-user-flags-per-day-help": "Задайте 0 за изключване (по подразбиране: 10)",
|
||||
"flags.auto-flag-on-downvote-threshold": "Брой отрицателни гласове за автоматично докладване на публикации",
|
||||
"flags.auto-flag-on-downvote-threshold-help": "Задайте 0 за изключване (по подразбиране: 0)",
|
||||
"flags.auto-flag-on-downvote-threshold": "Брой отрицателни гласове, при които публикациите да бъдат докладвани автоматично (0 = изключено, по подразбиране: 0)",
|
||||
"flags.auto-resolve-on-ban": "Автоматично премахване на всички доклади за потребител, когато той бъде блокиран",
|
||||
"flags.action-on-resolve": "Когато докладване бъде разрешено, да се направи следното",
|
||||
"flags.action-on-reject": "Когато докладване бъде отхвърлено, да се направи следното",
|
||||
|
||||
4
public/language/bg/admin/settings/social.json
Normal file
4
public/language/bg/admin/settings/social.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"post-sharing": "Споделяне на публикации",
|
||||
"info-plugins-additional": "Добавките могат да добавят допълнителни мрежи за споделяне на публикации."
|
||||
}
|
||||
@@ -9,10 +9,9 @@
|
||||
"private-extensions": "Файлови разширения, които да бъдат частни",
|
||||
"private-uploads-extensions-help": "Въведете списък от файлови разширения, разделени със запетаи, които искате да бъдат частни (например <code>pdf,xls,doc</code>). Ако оставите това поле празно, всички файлове ще бъдат частни.",
|
||||
"resize-image-width-threshold": "Преоразмеряване на изображенията, ако са по-широки от определената ширина",
|
||||
"resize-image-width-threshold-help": "(в пиксели; по подразбиране: 2000 пиксела. 0 = изключено)",
|
||||
"resize-image-width-threshold-help": "(в пиксели; по подразбиране: 1520 пиксела. 0 = изключено)",
|
||||
"resize-image-width": "Намаляване на размера на изображенията до определена ширина",
|
||||
"resize-image-width-help": "(в пиксели; по подразбиране: 760 пиксела. 0 = изключено)",
|
||||
"resize-image-keep-original": "Запазване на оригиналното изображение след преоразмеряване",
|
||||
"resize-image-quality": "Качество при преоразмеряване на изображенията",
|
||||
"resize-image-quality-help": "Използване на по-ниско качество за намаляване на размера на файловете за преоразмерените изображения.",
|
||||
"max-file-size": "Максимален размер на файловете (в КиБ)",
|
||||
|
||||
@@ -88,10 +88,5 @@
|
||||
"restrictions.seconds-before-new": "Брой секунди преди новите потребители да могат да публикуват за пръв път",
|
||||
"restrictions.seconds-edit-after-new": "Брой секунди, през които публикациите могат да бъдат редактирани от нови потребители. (0 = изключено)",
|
||||
"restrictions.milliseconds-between-messages": "Време между съобщенията в разговорите за нови потребители (мсек)",
|
||||
"restrictions.groups-exempt-from-new-user-restrictions": "Избиране на групи, за които да не важат ограниченията за нови потребители",
|
||||
"guest-settings": "Настройки за гостите",
|
||||
"handles.enabled": "Позволяване на имената за гостите",
|
||||
"handles.enabled-help": "Тази възможност предоставя ново поле, което позволява на гостите да си изберат име, което да се използва за всяка публикация, която правят. Ако е изключено, всички те просто ще имат името „Гост“.",
|
||||
"topic-views.enabled": "Гостите да допринасят за броя на преглеждания на темите",
|
||||
"reply-notifications.enabled": "Гостите да могат да предизвикват изпращането на известия за отговорите си"
|
||||
}
|
||||
"restrictions.groups-exempt-from-new-user-restrictions": "Избиране на групи, за които да не важат ограниченията за нови потребители"
|
||||
}
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
{
|
||||
"post-sort-option": "Настройка за подредбата на публикациите, %1",
|
||||
"topic-sort-option": "Настройка за подредбата на темите, %1",
|
||||
"user-avatar-for": "Изображение на потребителя за %1",
|
||||
"user-watched-tags": "Наблюдавани от потребителя етикети",
|
||||
"delete-upload-button": "Бутон за изтриване на каченото",
|
||||
"group-page-link-for": "Връзка към груповата страница за %1"
|
||||
}
|
||||
@@ -32,7 +32,7 @@
|
||||
"folder-exists": "Вече има папка с това име",
|
||||
"invalid-pagination-value": "Грешен номер на странициране, трябва да бъде между %1 и %2",
|
||||
"username-taken": "Потребителското име е заето",
|
||||
"email-taken": "Адресът на е-пощата вече е зает.",
|
||||
"email-taken": "Е-пощата е заета",
|
||||
"email-nochange": "Въведената е-поща е същата като съществуващата.",
|
||||
"email-invited": "На тази е-поща вече е била изпратена покана",
|
||||
"email-not-confirmed": "Публикуването в някои категории и теми ще бъде възможно едва след като е-пощата Ви бъде потвърдена. Щръкнете тук, за да Ви изпратим е-писмо за потвърждение.",
|
||||
@@ -153,7 +153,6 @@
|
||||
"about-me-too-long": "Съжаляваме, но информацията за Вас трябва да съдържа не повече от %1 символ(а).",
|
||||
"cant-chat-with-yourself": "Не можете да пишете съобщение на себе си!",
|
||||
"chat-restricted": "Този потребител е ограничил съобщенията до себе си. Той трябва първо да Ви последва, преди да можете да си пишете с него.",
|
||||
"chat-user-blocked": "Бяхте блокиран(а) от този потребител.",
|
||||
"chat-disabled": "Системата за разговори е изключена",
|
||||
"too-many-messages": "Изпратили сте твърде много съобщения. Моля, изчакайте малко.",
|
||||
"invalid-chat-message": "Неправилно съобщение",
|
||||
@@ -181,20 +180,10 @@
|
||||
"not-enough-reputation-min-rep-signature": "Репутацията Ви трябва да бъде поне %1, за да добавите подпис",
|
||||
"not-enough-reputation-min-rep-profile-picture": "Репутацията Ви трябва да бъде поне %1, за да добавите снимка на профила си",
|
||||
"not-enough-reputation-min-rep-cover-picture": "Репутацията Ви трябва да бъде поне %1, за да добавите снимка на корицата",
|
||||
"not-enough-reputation-custom-field": "Репутацията Ви трябва да бъде поне %1 за %2",
|
||||
"custom-user-field-value-too-long": "Стойността в персонализираното поле е твърде дълга, %1",
|
||||
"custom-user-field-select-value-invalid": "Избраната опция в персонализираното поле е твърде неправилна, %1",
|
||||
"custom-user-field-invalid-text": "Текстът в персонализираното поле е неправилен, %1",
|
||||
"custom-user-field-invalid-link": "Връзката в персонализираното поле е неправилна, %1",
|
||||
"custom-user-field-invalid-number": "Числото в персонализираното поле е неправилно, %1",
|
||||
"custom-user-field-invalid-date": "Датата в персонализираното поле е неправилна, %1",
|
||||
"invalid-custom-user-field": "Неправилно персонализирано поле. „%1“ вече се ползва от NodeBB",
|
||||
"post-already-flagged": "Вече сте докладвали тази публикация",
|
||||
"user-already-flagged": "Вече сте докладвали този потребител",
|
||||
"post-flagged-too-many-times": "Тази публикация вече е докладвана от други хора",
|
||||
"user-flagged-too-many-times": "Този потребител вече е докладван от други хора",
|
||||
"too-many-post-flags-per-day": "Можете да докладвате най-много %1 публикации на ден",
|
||||
"too-many-user-flags-per-day": "Можете да докладвате най-много %1 потребител(и) на ден",
|
||||
"cant-flag-privileged": "Не можете да докладвате профилите или съдържанието от потребители с по-високи правомощия (модератори, глобални модератори, администратори)",
|
||||
"cant-locate-flag-report": "Докладът не може да бъде намерен",
|
||||
"self-vote": "Не можете да гласувате за собствената си публикация",
|
||||
@@ -230,7 +219,6 @@
|
||||
"already-unblocked": "Този потребител вече е отблокиран",
|
||||
"no-connection": "Изглежда има проблем с връзката Ви с Интернет",
|
||||
"socket-reconnect-failed": "В момента сървърът е недостъпен. Натиснете тук, за да опитате отново, или опитайте пак по-късно.",
|
||||
"invalid-plugin-id": "Грешен идентификатор на добавка",
|
||||
"plugin-not-whitelisted": "Добавката не може да бъде инсталирана – само добавки, одобрени от пакетния мениджър на NodeBB могат да бъдат инсталирани чрез ACP",
|
||||
"plugins-set-in-configuration": "Не можете да променяте състоянието на добавката, тъй като то се определя по време на работата ѝ (чрез config.json, променливи на средата или аргументи при изпълнение). Вместо това може да промените конфигурацията.",
|
||||
"theme-not-set-in-configuration": "Когато определяте активните добавки в конфигурацията, промяната на темите изисква да се добави новата тема към активните добавки, преди актуализирането ѝ в ACP",
|
||||
|
||||
@@ -90,6 +90,6 @@
|
||||
"bulk-actions": "Групови действия",
|
||||
"bulk-resolve": "Разрешаване на доклад(и)",
|
||||
"bulk-success": "%1 доклада са обновени",
|
||||
"flagged-timeago": "Докладвано <span class=\"timeago\" title=\"%1\"></span>",
|
||||
"flagged-timeago-readable": "Докладвано <span class=\"timeago\" title=\"%1\"></span> (%2)",
|
||||
"auto-flagged": "[Авт. докладвано] Получени %1 отрицателни гласа."
|
||||
}
|
||||
@@ -24,15 +24,8 @@
|
||||
"cancel": "Отказ",
|
||||
"close": "Затваряне",
|
||||
"pagination": "Странициране",
|
||||
"pagination.previouspage": "Предишна страница",
|
||||
"pagination.nextpage": "Следваща страница",
|
||||
"pagination.firstpage": "Първа страница",
|
||||
"pagination.lastpage": "Последна страница",
|
||||
"pagination.out-of": "%1 от %2",
|
||||
"pagination.enter-index": "Към публикация номер",
|
||||
"pagination.go-to-page": "Към страница",
|
||||
"pagination.page-x": "Страница %1",
|
||||
"header.brand-logo": "Лого на марката",
|
||||
"header.admin": "Администратор",
|
||||
"header.categories": "Категории",
|
||||
"header.recent": "Скорошни",
|
||||
@@ -54,6 +47,8 @@
|
||||
"chats.loading": "Зареждане на разговорите",
|
||||
"drafts.loading": "Зареждане на черновите",
|
||||
"motd.welcome": "Добре дошли в NodeBB, системата за дискусии на бъдещето.",
|
||||
"previouspage": "Предишна страница",
|
||||
"nextpage": "Следваща страница",
|
||||
"alert.success": "Готово",
|
||||
"alert.error": "Грешка",
|
||||
"alert.warning": "Предупреждение",
|
||||
@@ -140,12 +135,9 @@
|
||||
"edited": "Редактирано",
|
||||
"disabled": "Изключено",
|
||||
"select": "Избиране",
|
||||
"selected": "Избрано",
|
||||
"copied": "Копирано",
|
||||
"user-search-prompt": "Започнете да пишете, за да потърсите потребител…",
|
||||
"hidden": "Скрито",
|
||||
"sort": "Подреждане",
|
||||
"actions": "Действия",
|
||||
"rss-feed": "RSS поток",
|
||||
"skip-to-content": "Преминаване към съдържанието"
|
||||
"actions": "Действия"
|
||||
}
|
||||
@@ -1,9 +1,8 @@
|
||||
{
|
||||
"chat.room-id": "Стая %1",
|
||||
"chat.chatting-with": "Разговор с",
|
||||
"chat.placeholder": "Въведете съобщение тук или пуснете снимки",
|
||||
"chat.placeholder.mobile": "Въведете съобщение",
|
||||
"chat.placeholder.message-room": "Съобщение #%1",
|
||||
"chat.placeholder": "Въведете съобщение тук или пуснете снимки и натиснете Ентер за изпращане",
|
||||
"chat.placeholder.mobile": "Въведете съобщение тук",
|
||||
"chat.scroll-up-alert": "Към последните съобщения",
|
||||
"chat.usernames-and-x-others": "%1 и %2 други",
|
||||
"chat.chat-with-usernames": "Разговор с %1",
|
||||
|
||||
@@ -52,10 +52,10 @@
|
||||
"user-posted-to-multiple": "<strong>%1</strong>, <strong>%2</strong> и %3 други публикуваха отговори на: <strong>%4</strong>",
|
||||
"user-posted-topic": "<strong>%1</strong> публикува нова тема: <strong>%2</strong>",
|
||||
"user-edited-post": "<strong>%1</strong> редактира публикация в <strong>%2</strong>",
|
||||
"user-posted-topic-with-tag": "<strong>%1</strong> публикува <strong>%2</strong> (с етикет %3)",
|
||||
"user-posted-topic-with-tag-dual": "<strong>%1</strong> публикува <strong>%2</strong> (с етикети %3 и %4)",
|
||||
"user-posted-topic-with-tag-triple": "<strong>%1</strong> публикува <strong>%2</strong> (с етикети %3, %4 и %5)",
|
||||
"user-posted-topic-with-tag-multiple": "<strong>%1</strong> публикува <strong>%2</strong> (с етикет %3)",
|
||||
"user-posted-topic-with-tag": "<strong>%1</strong> публикува нова тема с етикет <strong>%2</strong>",
|
||||
"user-posted-topic-with-tag-dual": "<strong>%1</strong> публикува нова тема с етикети <strong>%2</strong> и <strong>%3</strong>",
|
||||
"user-posted-topic-with-tag-triple": "<strong>%1</strong> публикува нова тема с етикети <strong>%2</strong>, <strong>%3</strong> и <strong>%4</strong>",
|
||||
"user-posted-topic-with-tag-multiple": "<strong>%1</strong> публикува нова тема с етикети <strong>%2</strong>",
|
||||
"user-posted-topic-in-category": "<strong>%1</strong> публикува нова тема в <strong>%2</strong>",
|
||||
"user-started-following-you": "<strong>%1</strong> започна да Ви следва.",
|
||||
"user-started-following-you-dual": "<strong>%1</strong> и <strong>%2</strong> започнаха да Ви следват.",
|
||||
@@ -75,7 +75,6 @@
|
||||
"email-confirmed": "Е-пощата беше потвърдена",
|
||||
"email-confirmed-message": "Благодарим Ви, че потвърдихте е-пощата си. Акаунтът Ви е вече напълно активиран.",
|
||||
"email-confirm-error-message": "Възникна проблем при потвърждаването на е-пощата Ви. Може кодът да е грешен или давността му да е изтекла.",
|
||||
"email-confirm-error-message-already-validated": "Адресът на е-пощата Ви вече е проверен.",
|
||||
"email-confirm-sent": "Изпратено е е-писмо за потвърждение.",
|
||||
"none": "Нищо",
|
||||
"notification-only": "Само известие",
|
||||
|
||||
@@ -54,7 +54,6 @@
|
||||
"account/settings-of": "Променят се настройките на %1",
|
||||
"account/watched": "Теми, наблюдавани от %1",
|
||||
"account/ignored": "Теми, пренебрегвани от %1",
|
||||
"account/read": "Теми, прочетени от %1",
|
||||
"account/upvoted": "Публикации, получили положителен глас от %1",
|
||||
"account/downvoted": "Публикации, получили отрицателен глас от %1",
|
||||
"account/best": "Най-добрите публикации от %1",
|
||||
|
||||
@@ -38,6 +38,5 @@
|
||||
"remove-selected": "Премахване на избраните",
|
||||
"remove-selected-confirm": "Наистина ли искате да премахнете избраните %1 публикации?",
|
||||
"bulk-accept-success": "Одобрени публикации: %1",
|
||||
"bulk-reject-success": "Отхвърлени публикации: %1",
|
||||
"links-in-this-post": "Връзки в тази публикация"
|
||||
"bulk-reject-success": "Отхвърлени публикации: %1"
|
||||
}
|
||||
@@ -7,7 +7,6 @@
|
||||
"in-titles": "В заглавията",
|
||||
"in-titles-posts": "В заглавията и публикациите",
|
||||
"in-posts": "В публикациите",
|
||||
"in-bookmarks": "В отметките",
|
||||
"in-categories": "В категориите",
|
||||
"in-users": "В потребителите",
|
||||
"in-tags": "В етикетите",
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"no-tag-topics": "Няма теми с този етикет.",
|
||||
"no-tags-found": "Няма намерени етикети",
|
||||
"tags": "Етикети",
|
||||
"enter-tags-here": "Въведете етикети, с по %1 – %2 знака.",
|
||||
"enter-tags-here": "Тук въведете етикети, всеки между %1 и %2 знака.",
|
||||
"enter-tags-here-short": "Въведете етикети...",
|
||||
"no-tags": "Все още няма етикети.",
|
||||
"select-tags": "Изберете етикети",
|
||||
|
||||
@@ -3,12 +3,9 @@
|
||||
"skins": "Облици",
|
||||
"collapse": "Свиване",
|
||||
"expand": "Разгъване",
|
||||
"sidebar-toggle": "Превключване на страничната лента",
|
||||
"login-register-to-search": "Впишете се или се регистрирайте, за да можете да търсите.",
|
||||
"settings.title": "Настройки на темата",
|
||||
"settings.enableQuickReply": "Включване на бързите отговори",
|
||||
"settings.enableBreadcrumbs": "Показване на пътечката в страниците с категории и теми",
|
||||
"settings.enableBreadcrumbs.why": "Пътечката се вижда на повечето страници за по-лесно навигиране. Основният дизайн на страниците с категории и теми предоставя други начини за връщане към по-общите страници, но ако желаете, може да изключите показването на пътечката, за да няма претрупване.",
|
||||
"settings.centerHeaderElements": "Центриране на заглавните елементи",
|
||||
"settings.mobileTopicTeasers": "Показване на резюмета на темите на мобилни устройства",
|
||||
"settings.stickyToolbar": "Статична лента с инструменти",
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
"replies-to-this-post": "%1 отговора",
|
||||
"one-reply-to-this-post": "1 отговор",
|
||||
"last-reply-time": "Последен отговор",
|
||||
"reply-options": "Настройки за отговора",
|
||||
"reply-as-topic": "Отговор в нова тема",
|
||||
"guest-login-reply": "Впишете се, за да отговорите",
|
||||
"login-to-view": "🔒 Впишете се, за да видите това",
|
||||
@@ -27,7 +26,6 @@
|
||||
"restore": "Възстановяване",
|
||||
"move": "Преместване",
|
||||
"change-owner": "Промяна на собственика",
|
||||
"manage-editors": "Управление на редакторите",
|
||||
"fork": "Разделяне",
|
||||
"link": "Връзка",
|
||||
"share": "Споделяне",
|
||||
@@ -36,7 +34,6 @@
|
||||
"pinned": "Закачена",
|
||||
"pinned-with-expiry": "Закачена до %1",
|
||||
"scheduled": "Насрочена",
|
||||
"deleted": "Изтрита",
|
||||
"moved": "Преместена",
|
||||
"moved-from": "Преместена от %1",
|
||||
"copy-code": "Копиране на кода",
|
||||
@@ -104,7 +101,6 @@
|
||||
"thread-tools.move-posts": "Преместване на публикациите",
|
||||
"thread-tools.move-all": "Преместване на всички",
|
||||
"thread-tools.change-owner": "Промяна на собственика",
|
||||
"thread-tools.manage-editors": "Управление на редакторите",
|
||||
"thread-tools.select-category": "Избиране на категория",
|
||||
"thread-tools.fork": "Разделяне на темата",
|
||||
"thread-tools.tag": "Поставяне на етикет на темата",
|
||||
@@ -159,7 +155,6 @@
|
||||
"move-posts-instruction": "Щракнете върху публикациите, които искате да преместите, а след това въведете ид. на тема или отидете в целевата тема",
|
||||
"move-topic-instruction": "Изберете целевата категория и натиснете „Преместване“",
|
||||
"change-owner-instruction": "Натиснете публикациите, които искате да прехвърлите на друг потребител",
|
||||
"manage-editors-instruction": "Определете потребителите, които могат да редактират тази публикация по-долу.",
|
||||
"composer.title-placeholder": "Въведете заглавието на темата си тук...",
|
||||
"composer.handle-placeholder": "Въведете името тук",
|
||||
"composer.hide": "Скриване",
|
||||
@@ -185,8 +180,6 @@
|
||||
"sort-by": "Подреждане по",
|
||||
"oldest-to-newest": "Първо най-старите",
|
||||
"newest-to-oldest": "Първо най-новите",
|
||||
"recently-replied": "Първо тези с най-скорошни отговори",
|
||||
"recently-created": "Първо най-скоро създадените",
|
||||
"most-votes": "Първо тези с най-много гласове",
|
||||
"most-posts": "Първо тези с най-много публикации",
|
||||
"most-views": "Първо тези с най-много преглеждания",
|
||||
@@ -211,13 +204,7 @@
|
||||
"last-post": "Последна публикация",
|
||||
"go-to-my-next-post": "Към следващата ми публикация",
|
||||
"no-more-next-post": "Нямате повече публикации в тази тема",
|
||||
"open-composer": "Отваряне на редактора",
|
||||
"post-quick-reply": "Бърз отговор",
|
||||
"navigator.index": "Публикация %1 от %2",
|
||||
"navigator.unread": "%1 непрочетени",
|
||||
"upvote-post": "Положително гласуване за публикацията",
|
||||
"downvote-post": "Отрицателно гласуване за публикацията",
|
||||
"post-tools": "Инструменти за публикациите",
|
||||
"unread-posts-link": "Връзка към непрочетените публикации",
|
||||
"thumb-image": "Иконка на темата"
|
||||
"navigator.unread": "%1 непрочетени"
|
||||
}
|
||||
@@ -3,7 +3,6 @@
|
||||
"no-unread-topics": "Няма непрочетени теми.",
|
||||
"load-more": "Зареждане на още",
|
||||
"mark-as-read": "Отбелязване като прочетени",
|
||||
"mark-as-unread": "Отбелязване като непрочетени",
|
||||
"selected": "Избраните",
|
||||
"all": "Всички",
|
||||
"all-categories": "Всички категории",
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
{
|
||||
"user-menu": "Потребителско меню",
|
||||
"banned": "Блокиран",
|
||||
"unbanned": "Деблокиран",
|
||||
"muted": "Заглушен",
|
||||
"unmuted": "Премахнато заглушаване",
|
||||
"offline": "Извън линия",
|
||||
"deleted": "Изтрит",
|
||||
"username": "Потребителско име",
|
||||
@@ -43,7 +40,6 @@
|
||||
"change-all": "Промяна на всички",
|
||||
"watched": "Наблюдавани",
|
||||
"ignored": "Пренебрегвани",
|
||||
"read": "Прочетени",
|
||||
"default-category-watch-state": "Състояние по подразбиране за наблюдаването на категории",
|
||||
"followers": "Последователи",
|
||||
"following": "Следва",
|
||||
@@ -79,7 +75,6 @@
|
||||
"change-password": "Промяна на паролата",
|
||||
"change-password-error": "Грешна парола!",
|
||||
"change-password-error-wrong-current": "Текущата Ви парола е грешна!",
|
||||
"change-password-error-same-password": "Новата Ви парола съвпада с текущата. Моля, използвайте нова парола.",
|
||||
"change-password-error-match": "Паролите са различни!",
|
||||
"change-password-error-privileges": "Нямате права да промените тази парола.",
|
||||
"change-password-success": "Паролата ви е обновена!",
|
||||
@@ -115,7 +110,6 @@
|
||||
"has-no-topics": "Този потребител не е създавал теми досега.",
|
||||
"has-no-watched-topics": "Този потребител не е наблюдавал нито една тема досега.",
|
||||
"has-no-ignored-topics": "Този потребител не е пренебрегнал нито една тема досега.",
|
||||
"has-no-read-topics": "Този потребител не е прочел нито една тема досега.",
|
||||
"has-no-upvoted-posts": "Този потребител не е гласувал положително досега.",
|
||||
"has-no-downvoted-posts": "Този потребител не е гласувал отрицателно досега.",
|
||||
"has-no-controversial-posts": "Този потребител няма публикации с отрицателни гласове засега.",
|
||||
@@ -147,10 +141,6 @@
|
||||
"follow-topics-you-create": "Наблюдаване на темите, които създавате",
|
||||
"grouptitle": "Заглавие на групата",
|
||||
"group-order-help": "Изберете група и използвайте стрелките, за да пренаредите заглавията",
|
||||
"show-group-title": "Показване на заглавието на групата",
|
||||
"hide-group-title": "Скриване на заглавието на групата",
|
||||
"order-group-up": "Преместване на групата нагоре",
|
||||
"order-group-down": "Преместване на групата надолу",
|
||||
"no-group-title": "Няма заглавие на група",
|
||||
"select-skin": "Изберете облик",
|
||||
"default": "По подразбиране (%1)",
|
||||
@@ -167,16 +157,11 @@
|
||||
"sso.dissociate-confirm-title": "Потвърждаване на прекъсването",
|
||||
"sso.dissociate-confirm": "Наистина ли искате да прекъснете връзката на акаунта си от „%1“?",
|
||||
"info.latest-flags": "Последни доклади",
|
||||
"info.profile": "Профил",
|
||||
"info.post": "Публикация",
|
||||
"info.view-flag": "Преглед на доклада",
|
||||
"info.reported-by": "Докладвано от:",
|
||||
"info.no-flags": "Не са намерени докладвани публикации",
|
||||
"info.ban-history": "Скорошна история на блокиранията",
|
||||
"info.no-ban-history": "Този потребител никога не е бил блокиран",
|
||||
"info.banned-until": "Блокиран до %1",
|
||||
"info.banned-expiry": "Давност",
|
||||
"info.ban-expired": "Блокирането е изтекло",
|
||||
"info.banned-permanently": "Блокиран за постоянно",
|
||||
"info.banned-reason-label": "Причина",
|
||||
"info.banned-no-reason": "Няма посочена причина.",
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
{
|
||||
"all-users": "Всички потребители",
|
||||
"followed-users": "Следвани потребители",
|
||||
"latest-users": "Последни потребители",
|
||||
"top-posters": "С най-много публикации",
|
||||
"most-reputation": "С най-много репутация",
|
||||
|
||||
@@ -9,9 +9,5 @@
|
||||
"filter-type": "Event Type",
|
||||
"filter-start": "Start Date",
|
||||
"filter-end": "End Date",
|
||||
"filter-user": "Filter by User",
|
||||
"filter-user.placeholder": "Type user name to filter...",
|
||||
"filter-group": "Filter by Group",
|
||||
"filter-group.placeholder": "Type group name to filter...",
|
||||
"filter-per-page": "Per Page"
|
||||
}
|
||||
@@ -94,8 +94,5 @@
|
||||
"view-as-json": "View as JSON",
|
||||
"expand-analytics": "Expand analytics",
|
||||
"clear-search-history": "Clear Search History",
|
||||
"clear-search-history-confirm": "Are you sure you want to clear entire search history?",
|
||||
"search-term": "Term",
|
||||
"search-count": "Count",
|
||||
"view-all": "View all"
|
||||
"clear-search-history-confirm": "Are you sure you want to clear entire search history?"
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"ip": "IP <strong>%1</strong>",
|
||||
"nodes-responded": "%1 nodes responded within %2ms!",
|
||||
"host": "host",
|
||||
"primary": "primary / jobs",
|
||||
"primary": "primary / run jobs",
|
||||
"pid": "pid",
|
||||
"nodejs": "nodejs",
|
||||
"online": "online",
|
||||
@@ -19,7 +19,6 @@
|
||||
|
||||
"registered": "Registered",
|
||||
"sockets": "Sockets",
|
||||
"connection-count": "Connection Count",
|
||||
"guests": "Guests",
|
||||
|
||||
"info": "Info"
|
||||
|
||||
@@ -12,8 +12,6 @@
|
||||
"container.card": "Card",
|
||||
"container.card-header": "Card Header",
|
||||
"container.card-body": "Card Body",
|
||||
"container.title": "Title",
|
||||
"container.body": "Body",
|
||||
"container.alert": "Alert",
|
||||
|
||||
"alert.confirm-delete": "Are you sure you wish to delete this widget?",
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
{
|
||||
"title": "Manage Custom User Fields",
|
||||
"create-field": "Create Field",
|
||||
"edit-field": "Edit Field",
|
||||
"manage-custom-fields": "Manage Custom Fields",
|
||||
"type-of-input": "Type of input",
|
||||
"key": "Key",
|
||||
"name": "Name",
|
||||
"icon": "Icon",
|
||||
"type": "Type",
|
||||
"min-rep": "Minimum Reputation",
|
||||
"input-type-text": "Input (Text)",
|
||||
"input-type-link": "Input (Link)",
|
||||
"input-type-number": "Input (Number)",
|
||||
"input-type-date": "Input (Date)",
|
||||
"input-type-select": "Select",
|
||||
"input-type-select-multi": "Select Multiple",
|
||||
"select-options": "Options",
|
||||
"select-options-help": "Add one option per line for the select element",
|
||||
"minimum-reputation": "Minimum reputation",
|
||||
"minimum-reputation-help": "If a user has less than this value they won't be able to use this field",
|
||||
"delete-field-confirm-x": "Do you really want to delete custom field \"%1\"?",
|
||||
"custom-fields-saved": "Custom fields saved",
|
||||
"visibility": "Visibility",
|
||||
"visibility-all": "Everyone can see the field",
|
||||
"visibility-loggedin": "Only logged in users can see the field",
|
||||
"visibility-privileged": "Only privileged users like admins & moderators can see the field"
|
||||
}
|
||||
@@ -22,7 +22,6 @@
|
||||
"delete-content": "Delete User(s) <strong>Content</strong>",
|
||||
"purge": "Delete <strong>User(s)</strong> and <strong>Content</strong>",
|
||||
"download-csv": "Download CSV",
|
||||
"custom-user-fields": "Custom User Fields",
|
||||
"manage-groups": "Manage Groups",
|
||||
"set-reputation": "Set Reputation",
|
||||
"add-group": "Add Group",
|
||||
@@ -122,28 +121,6 @@
|
||||
"alerts.email-sent-to": "An invitation email has been sent to %1",
|
||||
"alerts.x-users-found": "%1 user(s) found, (%2 seconds)",
|
||||
"alerts.select-a-single-user-to-change-email": "Select a single user to change email",
|
||||
"export": "Export",
|
||||
"export-users-fields-title": "Select CSV Fields",
|
||||
"export-field-email": "Email",
|
||||
"export-field-username": "Username",
|
||||
"export-field-uid": "UID",
|
||||
"export-field-ip": "IP",
|
||||
"export-field-joindate": "Join date",
|
||||
"export-field-lastonline": "Last Online",
|
||||
"export-field-lastposttime": "Last Post Time",
|
||||
"export-field-reputation": "Reputation",
|
||||
"export-field-postcount": "Post Count",
|
||||
"export-field-topiccount": "Topic Count",
|
||||
"export-field-profileviews": "Profile Views",
|
||||
"export-field-followercount": "Follower Count",
|
||||
"export-field-followingcount": "Following Count",
|
||||
"export-field-fullname": "Full Name",
|
||||
"export-field-website": "Website",
|
||||
"export-field-location": "Location",
|
||||
"export-field-birthday": "Birthday",
|
||||
"export-field-signature": "Signature",
|
||||
"export-field-aboutme": "About Me",
|
||||
|
||||
"export-users-started": "Exporting users as csv, this might take a while. You will receive a notification when it is complete.",
|
||||
"export-users-completed": "Users exported as csv, click here to download.",
|
||||
"email": "Email",
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
"title-layout": "Title Layout",
|
||||
"title-layout-help": "Define how the browser title will be structured ie. {pageTitle} | {browserTitle}",
|
||||
"description.placeholder": "A short description about your community",
|
||||
"description": "Choose what page is shown when users navigate to the root URL of your forum.",
|
||||
"description": "Site Description",
|
||||
"keywords": "Site Keywords",
|
||||
"keywords-placeholder": "Keywords describing your community, comma-separated",
|
||||
"logo-and-icons": "Site Logo & Icons",
|
||||
@@ -48,15 +48,5 @@
|
||||
"background-color-help": "Color used for splash screen background when website is installed as a PWA",
|
||||
"undo-timeout": "Undo Timeout",
|
||||
"undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.",
|
||||
"topic-tools": "Topic Tools",
|
||||
"home-page": "Home Page",
|
||||
"home-page-route": "Home Page Route",
|
||||
"custom-route": "Custom Route",
|
||||
"allow-user-home-pages": "Allow User Home Pages",
|
||||
"home-page-title": "Title of the home page (default \"Home\")",
|
||||
"default-language": "Default Language",
|
||||
"auto-detect": "Auto Detect Language Setting for Guests",
|
||||
"default-language-help": "The default language determines the language settings for all users who are visiting your forum. <br />Individual users can override the default language on their account settings page.",
|
||||
"post-sharing": "Post Sharing",
|
||||
"info-plugins-additional": "Plugins can add additional networks for sharing posts."
|
||||
}
|
||||
"topic-tools": "Topic Tools"
|
||||
}
|
||||
|
||||
8
public/language/bn/admin/settings/guest.json
Normal file
8
public/language/bn/admin/settings/guest.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"settings": "Settings",
|
||||
"guest-settings": "Guest Settings",
|
||||
"handles.enabled": "Allow guest handles",
|
||||
"handles.enabled-help": "This option exposes a new field that allows guests to pick a name to associate with each post they make. If disabled, they will simply be called \"Guest\"",
|
||||
"topic-views.enabled": "Allow guests to increase topic view counts",
|
||||
"reply-notifications.enabled": "Allow guests to generate reply notifications"
|
||||
}
|
||||
8
public/language/bn/admin/settings/homepage.json
Normal file
8
public/language/bn/admin/settings/homepage.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"home-page": "Home Page",
|
||||
"description": "Choose what page is shown when users navigate to the root URL of your forum.",
|
||||
"home-page-route": "Home Page Route",
|
||||
"custom-route": "Custom Route",
|
||||
"allow-user-home-pages": "Allow User Home Pages",
|
||||
"home-page-title": "Title of the home page (default \"Home\")"
|
||||
}
|
||||
6
public/language/bn/admin/settings/languages.json
Normal file
6
public/language/bn/admin/settings/languages.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"language-settings": "Language Settings",
|
||||
"description": "The default language determines the language settings for all users who are visiting your forum. <br />Individual users can override the default language on their account settings page.",
|
||||
"default-language": "Default Language",
|
||||
"auto-detect": "Auto Detect Language Setting for Guests"
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user