Compare commits

..

4 Commits

Author SHA1 Message Date
Aziz Khoury
494447741a rename parseUrl to urlParse, closer to core url module, url.parse 2019-12-21 13:45:25 +02:00
Aziz Khoury
7b174d25cb pass isBrowser as arg to factory fn 2019-12-21 12:08:04 +02:00
Aziz Khoury
bbb03a08e9 isRelativeUrl back and switched to use isProtocolAbsoluteUrl 2019-12-18 16:08:04 +02:00
Aziz Khoury
b884b0be01 difference between protocol and scheme absolute/relative urls check logic 2019-12-18 15:46:35 +02:00
1989 changed files with 11462 additions and 36282 deletions

View File

@@ -24,7 +24,7 @@
"consistent-return": "off",
"func-names": "off",
"no-tabs": "off",
"indent": ["error", "tab", { "SwitchCase": 1 }],
"indent": ["error", "tab"],
"no-eq-null": "off",
"camelcase": "off",
"no-new": "off",
@@ -121,7 +121,7 @@
// "comma-spacing": "off",
// "no-trailing-spaces": "off",
// "key-spacing": "off",
"no-multiple-empty-lines": "off"
// "no-multiple-empty-lines": "off",
// "spaced-comment": "off",
// "space-in-parens": "off",
// "block-spacing": "off",

3
.gitignore vendored
View File

@@ -1,4 +1,3 @@
dist/
yarn.lock
npm-debug.log
node_modules/
@@ -67,5 +66,3 @@ test/files/normalise.jpg.png
test/files/normalise-resized.jpg
package-lock.json
/package.json
*.mongodb
link-plugins.sh

View File

@@ -1,4 +0,0 @@
reporter: dot
timeout: 25000
exit: true
bail: true

View File

@@ -14,7 +14,7 @@ before_script:
- "mongo mydb_test --eval 'db.createUser({user:\"travis\", pwd: \"test\", roles: []});'"
- sh -c "if [ '$DB' = 'mongodb' ]; then node app --setup=\"{\\\"url\\\":\\\"http://127.0.0.1:4567\\\",\\\"secret\\\":\\\"abcdef\\\",\\\"database\\\":\\\"mongo\\\",\\\"mongo:host\\\":\\\"127.0.0.1\\\",\\\"mongo:port\\\":27017,\\\"mongo:username\\\":\\\"\\\",\\\"mongo:password\\\":\\\"\\\",\\\"mongo:database\\\":0,\\\"admin:username\\\":\\\"admin\\\",\\\"admin:email\\\":\\\"test@example.org\\\",\\\"admin:password\\\":\\\"hAN3Eg8W\\\",\\\"admin:password:confirm\\\":\\\"hAN3Eg8W\\\"}\" --ci=\"{\\\"host\\\":\\\"127.0.0.1\\\",\\\"port\\\":27017,\\\"database\\\":\\\"travis_ci_test\\\"}\"; fi"
- sh -c "if [ '$DB' = 'redis' ]; then node app --setup=\"{\\\"url\\\":\\\"http://127.0.0.1:4567/forum\\\",\\\"secret\\\":\\\"abcdef\\\",\\\"database\\\":\\\"redis\\\",\\\"redis:host\\\":\\\"127.0.0.1\\\",\\\"redis:port\\\":6379,\\\"redis:password\\\":\\\"\\\",\\\"redis:database\\\":0,\\\"admin:username\\\":\\\"admin\\\",\\\"admin:email\\\":\\\"test@example.org\\\",\\\"admin:password\\\":\\\"hAN3Eg8W\\\",\\\"admin:password:confirm\\\":\\\"hAN3Eg8W\\\"}\" --ci=\"{\\\"host\\\":\\\"127.0.0.1\\\",\\\"port\\\":6379,\\\"database\\\":1}\"; fi"
- sh -c "if [ '$DB' = 'postgres' ]; then psql -c 'create database nodebb;' -U postgres; psql -c 'create database travis_ci_test;' -U postgres; node app --setup=\"{\\\"url\\\":\\\"http://127.0.0.1:4567\\\",\\\"secret\\\":\\\"abcdef\\\",\\\"database\\\":\\\"postgres\\\",\\\"postgres:host\\\":\\\"127.0.0.1\\\",\\\"postgres:port\\\":5433,\\\"postgres:password\\\":\\\"\\\",\\\"postgres:database\\\":\\\"nodebb\\\",\\\"admin:username\\\":\\\"admin\\\",\\\"admin:email\\\":\\\"test@example.org\\\",\\\"admin:password\\\":\\\"hAN3Eg8W\\\",\\\"admin:password:confirm\\\":\\\"hAN3Eg8W\\\"}\" --ci=\"{\\\"host\\\":\\\"127.0.0.1\\\",\\\"port\\\":5433,\\\"username\\\":\\\"postgres\\\",\\\"database\\\":\\\"travis_ci_test\\\"}\"; fi"
- sh -c "if [ '$DB' = 'postgres' ]; then psql -c 'create database nodebb;' -U postgres; psql -c 'create database travis_ci_test;' -U postgres; node app --setup=\"{\\\"url\\\":\\\"http://127.0.0.1:4567\\\",\\\"secret\\\":\\\"abcdef\\\",\\\"database\\\":\\\"postgres\\\",\\\"postgres:host\\\":\\\"127.0.0.1\\\",\\\"postgres:port\\\":5432,\\\"postgres:password\\\":\\\"\\\",\\\"postgres:database\\\":\\\"nodebb\\\",\\\"admin:username\\\":\\\"admin\\\",\\\"admin:email\\\":\\\"test@example.org\\\",\\\"admin:password\\\":\\\"hAN3Eg8W\\\",\\\"admin:password:confirm\\\":\\\"hAN3Eg8W\\\"}\" --ci=\"{\\\"host\\\":\\\"127.0.0.1\\\",\\\"port\\\":5432,\\\"username\\\":\\\"postgres\\\",\\\"database\\\":\\\"travis_ci_test\\\"}\"; fi"
after_success:
- "npm run coveralls"
language: node_js
@@ -23,7 +23,7 @@ dist: xenial
env:
global:
- PGUSER=postgres
- PGPORT=5433
- PGPORT=5432
- CXX=g++-4.8
jobs:
- "DB=mongodb TEST_ENV=production"
@@ -39,7 +39,6 @@ addons:
- g++-4.8
- mongodb-org-server
node_js:
- "14"
- "12"
- "10"
branches:

View File

@@ -1850,304 +1850,304 @@ trans.zh_CN = public/language/zh-CN/admin/extend/widgets.json
trans.zh_TW = public/language/zh-TW/admin/extend/widgets.json
type = KEYVALUEJSON
[nodebb.admin-dashboard]
file_filter = public/language/<lang>/admin/dashboard.json
source_file = public/language/en-GB/admin/dashboard.json
[nodebb.admin-general-dashboard]
file_filter = public/language/<lang>/admin/general/dashboard.json
source_file = public/language/en-GB/admin/general/dashboard.json
source_lang = en_GB
trans.ar = public/language/ar/admin/dashboard.json
trans.bg = public/language/bg/admin/dashboard.json
trans.bn = public/language/bn/admin/dashboard.json
trans.cs = public/language/cs/admin/dashboard.json
trans.da = public/language/da/admin/dashboard.json
trans.de = public/language/de/admin/dashboard.json
trans.el = public/language/el/admin/dashboard.json
trans.en@pirate = public/language/en-x-pirate/admin/dashboard.json
trans.en_US = public/language/en-US/admin/dashboard.json
trans.es = public/language/es/admin/dashboard.json
trans.et = public/language/et/admin/dashboard.json
trans.fa_IR = public/language/fa-IR/admin/dashboard.json
trans.fi = public/language/fi/admin/dashboard.json
trans.fr = public/language/fr/admin/dashboard.json
trans.gl = public/language/gl/admin/dashboard.json
trans.he = public/language/he/admin/dashboard.json
trans.hr = public/language/hr/admin/dashboard.json
trans.hu = public/language/hu/admin/dashboard.json
trans.id = public/language/id/admin/dashboard.json
trans.it = public/language/it/admin/dashboard.json
trans.ja = public/language/ja/admin/dashboard.json
trans.ko = public/language/ko/admin/dashboard.json
trans.lt = public/language/lt/admin/dashboard.json
trans.lv = public/language/lv/admin/dashboard.json
trans.ms = public/language/ms/admin/dashboard.json
trans.nb = public/language/nb/admin/dashboard.json
trans.nl = public/language/nl/admin/dashboard.json
trans.pl = public/language/pl/admin/dashboard.json
trans.pt_BR = public/language/pt-BR/admin/dashboard.json
trans.pt_PT = public/language/pt-PT/admin/dashboard.json
trans.ro = public/language/ro/admin/dashboard.json
trans.ru = public/language/ru/admin/dashboard.json
trans.rw = public/language/rw/admin/dashboard.json
trans.sc = public/language/sc/admin/dashboard.json
trans.sk = public/language/sk/admin/dashboard.json
trans.sl = public/language/sl/admin/dashboard.json
trans.sr = public/language/sr/admin/dashboard.json
trans.sv = public/language/sv/admin/dashboard.json
trans.th = public/language/th/admin/dashboard.json
trans.tr = public/language/tr/admin/dashboard.json
trans.uk = public/language/uk/admin/dashboard.json
trans.vi = public/language/vi/admin/dashboard.json
trans.zh_CN = public/language/zh-CN/admin/dashboard.json
trans.zh_TW = public/language/zh-TW/admin/dashboard.json
trans.ar = public/language/ar/admin/general/dashboard.json
trans.bg = public/language/bg/admin/general/dashboard.json
trans.bn = public/language/bn/admin/general/dashboard.json
trans.cs = public/language/cs/admin/general/dashboard.json
trans.da = public/language/da/admin/general/dashboard.json
trans.de = public/language/de/admin/general/dashboard.json
trans.el = public/language/el/admin/general/dashboard.json
trans.en@pirate = public/language/en-x-pirate/admin/general/dashboard.json
trans.en_US = public/language/en-US/admin/general/dashboard.json
trans.es = public/language/es/admin/general/dashboard.json
trans.et = public/language/et/admin/general/dashboard.json
trans.fa_IR = public/language/fa-IR/admin/general/dashboard.json
trans.fi = public/language/fi/admin/general/dashboard.json
trans.fr = public/language/fr/admin/general/dashboard.json
trans.gl = public/language/gl/admin/general/dashboard.json
trans.he = public/language/he/admin/general/dashboard.json
trans.hr = public/language/hr/admin/general/dashboard.json
trans.hu = public/language/hu/admin/general/dashboard.json
trans.id = public/language/id/admin/general/dashboard.json
trans.it = public/language/it/admin/general/dashboard.json
trans.ja = public/language/ja/admin/general/dashboard.json
trans.ko = public/language/ko/admin/general/dashboard.json
trans.lt = public/language/lt/admin/general/dashboard.json
trans.lv = public/language/lv/admin/general/dashboard.json
trans.ms = public/language/ms/admin/general/dashboard.json
trans.nb = public/language/nb/admin/general/dashboard.json
trans.nl = public/language/nl/admin/general/dashboard.json
trans.pl = public/language/pl/admin/general/dashboard.json
trans.pt_BR = public/language/pt-BR/admin/general/dashboard.json
trans.pt_PT = public/language/pt-PT/admin/general/dashboard.json
trans.ro = public/language/ro/admin/general/dashboard.json
trans.ru = public/language/ru/admin/general/dashboard.json
trans.rw = public/language/rw/admin/general/dashboard.json
trans.sc = public/language/sc/admin/general/dashboard.json
trans.sk = public/language/sk/admin/general/dashboard.json
trans.sl = public/language/sl/admin/general/dashboard.json
trans.sr = public/language/sr/admin/general/dashboard.json
trans.sv = public/language/sv/admin/general/dashboard.json
trans.th = public/language/th/admin/general/dashboard.json
trans.tr = public/language/tr/admin/general/dashboard.json
trans.uk = public/language/uk/admin/general/dashboard.json
trans.vi = public/language/vi/admin/general/dashboard.json
trans.zh_CN = public/language/zh-CN/admin/general/dashboard.json
trans.zh_TW = public/language/zh-TW/admin/general/dashboard.json
type = KEYVALUEJSON
[nodebb.admin-settings-homepage]
file_filter = public/language/<lang>/admin/settings/homepage.json
source_file = public/language/en-GB/admin/settings/homepage.json
[nodebb.admin-general-homepage]
file_filter = public/language/<lang>/admin/general/homepage.json
source_file = public/language/en-GB/admin/general/homepage.json
source_lang = en_GB
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.cs = public/language/cs/admin/settings/homepage.json
trans.da = public/language/da/admin/settings/homepage.json
trans.de = public/language/de/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.en_US = public/language/en-US/admin/settings/homepage.json
trans.es = public/language/es/admin/settings/homepage.json
trans.et = public/language/et/admin/settings/homepage.json
trans.fa_IR = public/language/fa-IR/admin/settings/homepage.json
trans.fi = public/language/fi/admin/settings/homepage.json
trans.fr = public/language/fr/admin/settings/homepage.json
trans.gl = public/language/gl/admin/settings/homepage.json
trans.he = public/language/he/admin/settings/homepage.json
trans.hr = public/language/hr/admin/settings/homepage.json
trans.hu = public/language/hu/admin/settings/homepage.json
trans.id = public/language/id/admin/settings/homepage.json
trans.it = public/language/it/admin/settings/homepage.json
trans.ja = public/language/ja/admin/settings/homepage.json
trans.ko = public/language/ko/admin/settings/homepage.json
trans.lt = public/language/lt/admin/settings/homepage.json
trans.lv = public/language/lv/admin/settings/homepage.json
trans.ms = public/language/ms/admin/settings/homepage.json
trans.nb = public/language/nb/admin/settings/homepage.json
trans.nl = public/language/nl/admin/settings/homepage.json
trans.pl = public/language/pl/admin/settings/homepage.json
trans.pt_BR = public/language/pt-BR/admin/settings/homepage.json
trans.pt_PT = public/language/pt-PT/admin/settings/homepage.json
trans.ro = public/language/ro/admin/settings/homepage.json
trans.ru = public/language/ru/admin/settings/homepage.json
trans.rw = public/language/rw/admin/settings/homepage.json
trans.sc = public/language/sc/admin/settings/homepage.json
trans.sk = public/language/sk/admin/settings/homepage.json
trans.sl = public/language/sl/admin/settings/homepage.json
trans.sr = public/language/sr/admin/settings/homepage.json
trans.sv = public/language/sv/admin/settings/homepage.json
trans.th = public/language/th/admin/settings/homepage.json
trans.tr = public/language/tr/admin/settings/homepage.json
trans.uk = public/language/uk/admin/settings/homepage.json
trans.vi = public/language/vi/admin/settings/homepage.json
trans.zh_CN = public/language/zh-CN/admin/settings/homepage.json
trans.zh_TW = public/language/zh-TW/admin/settings/homepage.json
trans.ar = public/language/ar/admin/general/homepage.json
trans.bg = public/language/bg/admin/general/homepage.json
trans.bn = public/language/bn/admin/general/homepage.json
trans.cs = public/language/cs/admin/general/homepage.json
trans.da = public/language/da/admin/general/homepage.json
trans.de = public/language/de/admin/general/homepage.json
trans.el = public/language/el/admin/general/homepage.json
trans.en@pirate = public/language/en-x-pirate/admin/general/homepage.json
trans.en_US = public/language/en-US/admin/general/homepage.json
trans.es = public/language/es/admin/general/homepage.json
trans.et = public/language/et/admin/general/homepage.json
trans.fa_IR = public/language/fa-IR/admin/general/homepage.json
trans.fi = public/language/fi/admin/general/homepage.json
trans.fr = public/language/fr/admin/general/homepage.json
trans.gl = public/language/gl/admin/general/homepage.json
trans.he = public/language/he/admin/general/homepage.json
trans.hr = public/language/hr/admin/general/homepage.json
trans.hu = public/language/hu/admin/general/homepage.json
trans.id = public/language/id/admin/general/homepage.json
trans.it = public/language/it/admin/general/homepage.json
trans.ja = public/language/ja/admin/general/homepage.json
trans.ko = public/language/ko/admin/general/homepage.json
trans.lt = public/language/lt/admin/general/homepage.json
trans.lv = public/language/lv/admin/general/homepage.json
trans.ms = public/language/ms/admin/general/homepage.json
trans.nb = public/language/nb/admin/general/homepage.json
trans.nl = public/language/nl/admin/general/homepage.json
trans.pl = public/language/pl/admin/general/homepage.json
trans.pt_BR = public/language/pt-BR/admin/general/homepage.json
trans.pt_PT = public/language/pt-PT/admin/general/homepage.json
trans.ro = public/language/ro/admin/general/homepage.json
trans.ru = public/language/ru/admin/general/homepage.json
trans.rw = public/language/rw/admin/general/homepage.json
trans.sc = public/language/sc/admin/general/homepage.json
trans.sk = public/language/sk/admin/general/homepage.json
trans.sl = public/language/sl/admin/general/homepage.json
trans.sr = public/language/sr/admin/general/homepage.json
trans.sv = public/language/sv/admin/general/homepage.json
trans.th = public/language/th/admin/general/homepage.json
trans.tr = public/language/tr/admin/general/homepage.json
trans.uk = public/language/uk/admin/general/homepage.json
trans.vi = public/language/vi/admin/general/homepage.json
trans.zh_CN = public/language/zh-CN/admin/general/homepage.json
trans.zh_TW = public/language/zh-TW/admin/general/homepage.json
type = KEYVALUEJSON
[nodebb.admin-settings-languages]
file_filter = public/language/<lang>/admin/settings/languages.json
source_file = public/language/en-GB/admin/settings/languages.json
[nodebb.admin-general-languages]
file_filter = public/language/<lang>/admin/general/languages.json
source_file = public/language/en-GB/admin/general/languages.json
source_lang = en_GB
trans.ar = public/language/ar/admin/settings/languages.json
trans.bg = public/language/bg/admin/settings/languages.json
trans.bn = public/language/bn/admin/settings/languages.json
trans.cs = public/language/cs/admin/settings/languages.json
trans.da = public/language/da/admin/settings/languages.json
trans.de = public/language/de/admin/settings/languages.json
trans.el = public/language/el/admin/settings/languages.json
trans.en@pirate = public/language/en-x-pirate/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.et = public/language/et/admin/settings/languages.json
trans.fa_IR = public/language/fa-IR/admin/settings/languages.json
trans.fi = public/language/fi/admin/settings/languages.json
trans.fr = public/language/fr/admin/settings/languages.json
trans.gl = public/language/gl/admin/settings/languages.json
trans.he = public/language/he/admin/settings/languages.json
trans.hr = public/language/hr/admin/settings/languages.json
trans.hu = public/language/hu/admin/settings/languages.json
trans.id = public/language/id/admin/settings/languages.json
trans.it = public/language/it/admin/settings/languages.json
trans.ja = public/language/ja/admin/settings/languages.json
trans.ko = public/language/ko/admin/settings/languages.json
trans.lt = public/language/lt/admin/settings/languages.json
trans.lv = public/language/lv/admin/settings/languages.json
trans.ms = public/language/ms/admin/settings/languages.json
trans.nb = public/language/nb/admin/settings/languages.json
trans.nl = public/language/nl/admin/settings/languages.json
trans.pl = public/language/pl/admin/settings/languages.json
trans.pt_BR = public/language/pt-BR/admin/settings/languages.json
trans.pt_PT = public/language/pt-PT/admin/settings/languages.json
trans.ro = public/language/ro/admin/settings/languages.json
trans.ru = public/language/ru/admin/settings/languages.json
trans.rw = public/language/rw/admin/settings/languages.json
trans.sc = public/language/sc/admin/settings/languages.json
trans.sk = public/language/sk/admin/settings/languages.json
trans.sl = public/language/sl/admin/settings/languages.json
trans.sr = public/language/sr/admin/settings/languages.json
trans.sv = public/language/sv/admin/settings/languages.json
trans.th = public/language/th/admin/settings/languages.json
trans.tr = public/language/tr/admin/settings/languages.json
trans.uk = public/language/uk/admin/settings/languages.json
trans.vi = public/language/vi/admin/settings/languages.json
trans.zh_CN = public/language/zh-CN/admin/settings/languages.json
trans.zh_TW = public/language/zh-TW/admin/settings/languages.json
trans.ar = public/language/ar/admin/general/languages.json
trans.bg = public/language/bg/admin/general/languages.json
trans.bn = public/language/bn/admin/general/languages.json
trans.cs = public/language/cs/admin/general/languages.json
trans.da = public/language/da/admin/general/languages.json
trans.de = public/language/de/admin/general/languages.json
trans.el = public/language/el/admin/general/languages.json
trans.en@pirate = public/language/en-x-pirate/admin/general/languages.json
trans.en_US = public/language/en-US/admin/general/languages.json
trans.es = public/language/es/admin/general/languages.json
trans.et = public/language/et/admin/general/languages.json
trans.fa_IR = public/language/fa-IR/admin/general/languages.json
trans.fi = public/language/fi/admin/general/languages.json
trans.fr = public/language/fr/admin/general/languages.json
trans.gl = public/language/gl/admin/general/languages.json
trans.he = public/language/he/admin/general/languages.json
trans.hr = public/language/hr/admin/general/languages.json
trans.hu = public/language/hu/admin/general/languages.json
trans.id = public/language/id/admin/general/languages.json
trans.it = public/language/it/admin/general/languages.json
trans.ja = public/language/ja/admin/general/languages.json
trans.ko = public/language/ko/admin/general/languages.json
trans.lt = public/language/lt/admin/general/languages.json
trans.lv = public/language/lv/admin/general/languages.json
trans.ms = public/language/ms/admin/general/languages.json
trans.nb = public/language/nb/admin/general/languages.json
trans.nl = public/language/nl/admin/general/languages.json
trans.pl = public/language/pl/admin/general/languages.json
trans.pt_BR = public/language/pt-BR/admin/general/languages.json
trans.pt_PT = public/language/pt-PT/admin/general/languages.json
trans.ro = public/language/ro/admin/general/languages.json
trans.ru = public/language/ru/admin/general/languages.json
trans.rw = public/language/rw/admin/general/languages.json
trans.sc = public/language/sc/admin/general/languages.json
trans.sk = public/language/sk/admin/general/languages.json
trans.sl = public/language/sl/admin/general/languages.json
trans.sr = public/language/sr/admin/general/languages.json
trans.sv = public/language/sv/admin/general/languages.json
trans.th = public/language/th/admin/general/languages.json
trans.tr = public/language/tr/admin/general/languages.json
trans.uk = public/language/uk/admin/general/languages.json
trans.vi = public/language/vi/admin/general/languages.json
trans.zh_CN = public/language/zh-CN/admin/general/languages.json
trans.zh_TW = public/language/zh-TW/admin/general/languages.json
type = KEYVALUEJSON
[nodebb.admin-settings-navigation]
file_filter = public/language/<lang>/admin/settings/navigation.json
source_file = public/language/en-GB/admin/settings/navigation.json
[nodebb.admin-general-navigation]
file_filter = public/language/<lang>/admin/general/navigation.json
source_file = public/language/en-GB/admin/general/navigation.json
source_lang = en_GB
trans.ar = public/language/ar/admin/settings/navigation.json
trans.bg = public/language/bg/admin/settings/navigation.json
trans.bn = public/language/bn/admin/settings/navigation.json
trans.cs = public/language/cs/admin/settings/navigation.json
trans.da = public/language/da/admin/settings/navigation.json
trans.de = public/language/de/admin/settings/navigation.json
trans.el = public/language/el/admin/settings/navigation.json
trans.en@pirate = public/language/en-x-pirate/admin/settings/navigation.json
trans.en_US = public/language/en-US/admin/settings/navigation.json
trans.es = public/language/es/admin/settings/navigation.json
trans.et = public/language/et/admin/settings/navigation.json
trans.fa_IR = public/language/fa-IR/admin/settings/navigation.json
trans.fi = public/language/fi/admin/settings/navigation.json
trans.fr = public/language/fr/admin/settings/navigation.json
trans.gl = public/language/gl/admin/settings/navigation.json
trans.he = public/language/he/admin/settings/navigation.json
trans.hr = public/language/hr/admin/settings/navigation.json
trans.hu = public/language/hu/admin/settings/navigation.json
trans.id = public/language/id/admin/settings/navigation.json
trans.it = public/language/it/admin/settings/navigation.json
trans.ja = public/language/ja/admin/settings/navigation.json
trans.ko = public/language/ko/admin/settings/navigation.json
trans.lt = public/language/lt/admin/settings/navigation.json
trans.lv = public/language/lv/admin/settings/navigation.json
trans.ms = public/language/ms/admin/settings/navigation.json
trans.nb = public/language/nb/admin/settings/navigation.json
trans.nl = public/language/nl/admin/settings/navigation.json
trans.pl = public/language/pl/admin/settings/navigation.json
trans.pt_BR = public/language/pt-BR/admin/settings/navigation.json
trans.pt_PT = public/language/pt-PT/admin/settings/navigation.json
trans.ro = public/language/ro/admin/settings/navigation.json
trans.ru = public/language/ru/admin/settings/navigation.json
trans.rw = public/language/rw/admin/settings/navigation.json
trans.sc = public/language/sc/admin/settings/navigation.json
trans.sk = public/language/sk/admin/settings/navigation.json
trans.sl = public/language/sl/admin/settings/navigation.json
trans.sr = public/language/sr/admin/settings/navigation.json
trans.sv = public/language/sv/admin/settings/navigation.json
trans.th = public/language/th/admin/settings/navigation.json
trans.tr = public/language/tr/admin/settings/navigation.json
trans.uk = public/language/uk/admin/settings/navigation.json
trans.vi = public/language/vi/admin/settings/navigation.json
trans.zh_CN = public/language/zh-CN/admin/settings/navigation.json
trans.zh_TW = public/language/zh-TW/admin/settings/navigation.json
trans.ar = public/language/ar/admin/general/navigation.json
trans.bg = public/language/bg/admin/general/navigation.json
trans.bn = public/language/bn/admin/general/navigation.json
trans.cs = public/language/cs/admin/general/navigation.json
trans.da = public/language/da/admin/general/navigation.json
trans.de = public/language/de/admin/general/navigation.json
trans.el = public/language/el/admin/general/navigation.json
trans.en@pirate = public/language/en-x-pirate/admin/general/navigation.json
trans.en_US = public/language/en-US/admin/general/navigation.json
trans.es = public/language/es/admin/general/navigation.json
trans.et = public/language/et/admin/general/navigation.json
trans.fa_IR = public/language/fa-IR/admin/general/navigation.json
trans.fi = public/language/fi/admin/general/navigation.json
trans.fr = public/language/fr/admin/general/navigation.json
trans.gl = public/language/gl/admin/general/navigation.json
trans.he = public/language/he/admin/general/navigation.json
trans.hr = public/language/hr/admin/general/navigation.json
trans.hu = public/language/hu/admin/general/navigation.json
trans.id = public/language/id/admin/general/navigation.json
trans.it = public/language/it/admin/general/navigation.json
trans.ja = public/language/ja/admin/general/navigation.json
trans.ko = public/language/ko/admin/general/navigation.json
trans.lt = public/language/lt/admin/general/navigation.json
trans.lv = public/language/lv/admin/general/navigation.json
trans.ms = public/language/ms/admin/general/navigation.json
trans.nb = public/language/nb/admin/general/navigation.json
trans.nl = public/language/nl/admin/general/navigation.json
trans.pl = public/language/pl/admin/general/navigation.json
trans.pt_BR = public/language/pt-BR/admin/general/navigation.json
trans.pt_PT = public/language/pt-PT/admin/general/navigation.json
trans.ro = public/language/ro/admin/general/navigation.json
trans.ru = public/language/ru/admin/general/navigation.json
trans.rw = public/language/rw/admin/general/navigation.json
trans.sc = public/language/sc/admin/general/navigation.json
trans.sk = public/language/sk/admin/general/navigation.json
trans.sl = public/language/sl/admin/general/navigation.json
trans.sr = public/language/sr/admin/general/navigation.json
trans.sv = public/language/sv/admin/general/navigation.json
trans.th = public/language/th/admin/general/navigation.json
trans.tr = public/language/tr/admin/general/navigation.json
trans.uk = public/language/uk/admin/general/navigation.json
trans.vi = public/language/vi/admin/general/navigation.json
trans.zh_CN = public/language/zh-CN/admin/general/navigation.json
trans.zh_TW = public/language/zh-TW/admin/general/navigation.json
type = KEYVALUEJSON
[nodebb.admin-settings-social]
file_filter = public/language/<lang>/admin/settings/social.json
source_file = public/language/en-GB/admin/settings/social.json
[nodebb.admin-general-social]
file_filter = public/language/<lang>/admin/general/social.json
source_file = public/language/en-GB/admin/general/social.json
source_lang = en_GB
trans.ar = public/language/ar/admin/settings/social.json
trans.bg = public/language/bg/admin/settings/social.json
trans.bn = public/language/bn/admin/settings/social.json
trans.cs = public/language/cs/admin/settings/social.json
trans.da = public/language/da/admin/settings/social.json
trans.de = public/language/de/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.en_US = public/language/en-US/admin/settings/social.json
trans.es = public/language/es/admin/settings/social.json
trans.et = public/language/et/admin/settings/social.json
trans.fa_IR = public/language/fa-IR/admin/settings/social.json
trans.fi = public/language/fi/admin/settings/social.json
trans.fr = public/language/fr/admin/settings/social.json
trans.gl = public/language/gl/admin/settings/social.json
trans.he = public/language/he/admin/settings/social.json
trans.hr = public/language/hr/admin/settings/social.json
trans.hu = public/language/hu/admin/settings/social.json
trans.id = public/language/id/admin/settings/social.json
trans.it = public/language/it/admin/settings/social.json
trans.ja = public/language/ja/admin/settings/social.json
trans.ko = public/language/ko/admin/settings/social.json
trans.lt = public/language/lt/admin/settings/social.json
trans.lv = public/language/lv/admin/settings/social.json
trans.ms = public/language/ms/admin/settings/social.json
trans.nb = public/language/nb/admin/settings/social.json
trans.nl = public/language/nl/admin/settings/social.json
trans.pl = public/language/pl/admin/settings/social.json
trans.pt_BR = public/language/pt-BR/admin/settings/social.json
trans.pt_PT = public/language/pt-PT/admin/settings/social.json
trans.ro = public/language/ro/admin/settings/social.json
trans.ru = public/language/ru/admin/settings/social.json
trans.rw = public/language/rw/admin/settings/social.json
trans.sc = public/language/sc/admin/settings/social.json
trans.sk = public/language/sk/admin/settings/social.json
trans.sl = public/language/sl/admin/settings/social.json
trans.sr = public/language/sr/admin/settings/social.json
trans.sv = public/language/sv/admin/settings/social.json
trans.th = public/language/th/admin/settings/social.json
trans.tr = public/language/tr/admin/settings/social.json
trans.uk = public/language/uk/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.zh_TW = public/language/zh-TW/admin/settings/social.json
trans.ar = public/language/ar/admin/general/social.json
trans.bg = public/language/bg/admin/general/social.json
trans.bn = public/language/bn/admin/general/social.json
trans.cs = public/language/cs/admin/general/social.json
trans.da = public/language/da/admin/general/social.json
trans.de = public/language/de/admin/general/social.json
trans.el = public/language/el/admin/general/social.json
trans.en@pirate = public/language/en-x-pirate/admin/general/social.json
trans.en_US = public/language/en-US/admin/general/social.json
trans.es = public/language/es/admin/general/social.json
trans.et = public/language/et/admin/general/social.json
trans.fa_IR = public/language/fa-IR/admin/general/social.json
trans.fi = public/language/fi/admin/general/social.json
trans.fr = public/language/fr/admin/general/social.json
trans.gl = public/language/gl/admin/general/social.json
trans.he = public/language/he/admin/general/social.json
trans.hr = public/language/hr/admin/general/social.json
trans.hu = public/language/hu/admin/general/social.json
trans.id = public/language/id/admin/general/social.json
trans.it = public/language/it/admin/general/social.json
trans.ja = public/language/ja/admin/general/social.json
trans.ko = public/language/ko/admin/general/social.json
trans.lt = public/language/lt/admin/general/social.json
trans.lv = public/language/lv/admin/general/social.json
trans.ms = public/language/ms/admin/general/social.json
trans.nb = public/language/nb/admin/general/social.json
trans.nl = public/language/nl/admin/general/social.json
trans.pl = public/language/pl/admin/general/social.json
trans.pt_BR = public/language/pt-BR/admin/general/social.json
trans.pt_PT = public/language/pt-PT/admin/general/social.json
trans.ro = public/language/ro/admin/general/social.json
trans.ru = public/language/ru/admin/general/social.json
trans.rw = public/language/rw/admin/general/social.json
trans.sc = public/language/sc/admin/general/social.json
trans.sk = public/language/sk/admin/general/social.json
trans.sl = public/language/sl/admin/general/social.json
trans.sr = public/language/sr/admin/general/social.json
trans.sv = public/language/sv/admin/general/social.json
trans.th = public/language/th/admin/general/social.json
trans.tr = public/language/tr/admin/general/social.json
trans.uk = public/language/uk/admin/general/social.json
trans.vi = public/language/vi/admin/general/social.json
trans.zh_CN = public/language/zh-CN/admin/general/social.json
trans.zh_TW = public/language/zh-TW/admin/general/social.json
type = KEYVALUEJSON
[nodebb.admin-settings-sounds]
file_filter = public/language/<lang>/admin/settings/sounds.json
source_file = public/language/en-GB/admin/settings/sounds.json
[nodebb.admin-general-sounds]
file_filter = public/language/<lang>/admin/general/sounds.json
source_file = public/language/en-GB/admin/general/sounds.json
source_lang = en_GB
trans.ar = public/language/ar/admin/settings/sounds.json
trans.bg = public/language/bg/admin/settings/sounds.json
trans.bn = public/language/bn/admin/settings/sounds.json
trans.cs = public/language/cs/admin/settings/sounds.json
trans.da = public/language/da/admin/settings/sounds.json
trans.de = public/language/de/admin/settings/sounds.json
trans.el = public/language/el/admin/settings/sounds.json
trans.en@pirate = public/language/en-x-pirate/admin/settings/sounds.json
trans.en_US = public/language/en-US/admin/settings/sounds.json
trans.es = public/language/es/admin/settings/sounds.json
trans.et = public/language/et/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.fr = public/language/fr/admin/settings/sounds.json
trans.gl = public/language/gl/admin/settings/sounds.json
trans.he = public/language/he/admin/settings/sounds.json
trans.hr = public/language/hr/admin/settings/sounds.json
trans.hu = public/language/hu/admin/settings/sounds.json
trans.id = public/language/id/admin/settings/sounds.json
trans.it = public/language/it/admin/settings/sounds.json
trans.ja = public/language/ja/admin/settings/sounds.json
trans.ko = public/language/ko/admin/settings/sounds.json
trans.lt = public/language/lt/admin/settings/sounds.json
trans.lv = public/language/lv/admin/settings/sounds.json
trans.ms = public/language/ms/admin/settings/sounds.json
trans.nb = public/language/nb/admin/settings/sounds.json
trans.nl = public/language/nl/admin/settings/sounds.json
trans.pl = public/language/pl/admin/settings/sounds.json
trans.pt_BR = public/language/pt-BR/admin/settings/sounds.json
trans.pt_PT = public/language/pt-PT/admin/settings/sounds.json
trans.ro = public/language/ro/admin/settings/sounds.json
trans.ru = public/language/ru/admin/settings/sounds.json
trans.rw = public/language/rw/admin/settings/sounds.json
trans.sc = public/language/sc/admin/settings/sounds.json
trans.sk = public/language/sk/admin/settings/sounds.json
trans.sl = public/language/sl/admin/settings/sounds.json
trans.sr = public/language/sr/admin/settings/sounds.json
trans.sv = public/language/sv/admin/settings/sounds.json
trans.th = public/language/th/admin/settings/sounds.json
trans.tr = public/language/tr/admin/settings/sounds.json
trans.uk = public/language/uk/admin/settings/sounds.json
trans.vi = public/language/vi/admin/settings/sounds.json
trans.zh_CN = public/language/zh-CN/admin/settings/sounds.json
trans.zh_TW = public/language/zh-TW/admin/settings/sounds.json
trans.ar = public/language/ar/admin/general/sounds.json
trans.bg = public/language/bg/admin/general/sounds.json
trans.bn = public/language/bn/admin/general/sounds.json
trans.cs = public/language/cs/admin/general/sounds.json
trans.da = public/language/da/admin/general/sounds.json
trans.de = public/language/de/admin/general/sounds.json
trans.el = public/language/el/admin/general/sounds.json
trans.en@pirate = public/language/en-x-pirate/admin/general/sounds.json
trans.en_US = public/language/en-US/admin/general/sounds.json
trans.es = public/language/es/admin/general/sounds.json
trans.et = public/language/et/admin/general/sounds.json
trans.fa_IR = public/language/fa-IR/admin/general/sounds.json
trans.fi = public/language/fi/admin/general/sounds.json
trans.fr = public/language/fr/admin/general/sounds.json
trans.gl = public/language/gl/admin/general/sounds.json
trans.he = public/language/he/admin/general/sounds.json
trans.hr = public/language/hr/admin/general/sounds.json
trans.hu = public/language/hu/admin/general/sounds.json
trans.id = public/language/id/admin/general/sounds.json
trans.it = public/language/it/admin/general/sounds.json
trans.ja = public/language/ja/admin/general/sounds.json
trans.ko = public/language/ko/admin/general/sounds.json
trans.lt = public/language/lt/admin/general/sounds.json
trans.lv = public/language/lv/admin/general/sounds.json
trans.ms = public/language/ms/admin/general/sounds.json
trans.nb = public/language/nb/admin/general/sounds.json
trans.nl = public/language/nl/admin/general/sounds.json
trans.pl = public/language/pl/admin/general/sounds.json
trans.pt_BR = public/language/pt-BR/admin/general/sounds.json
trans.pt_PT = public/language/pt-PT/admin/general/sounds.json
trans.ro = public/language/ro/admin/general/sounds.json
trans.ru = public/language/ru/admin/general/sounds.json
trans.rw = public/language/rw/admin/general/sounds.json
trans.sc = public/language/sc/admin/general/sounds.json
trans.sk = public/language/sk/admin/general/sounds.json
trans.sl = public/language/sl/admin/general/sounds.json
trans.sr = public/language/sr/admin/general/sounds.json
trans.sv = public/language/sv/admin/general/sounds.json
trans.th = public/language/th/admin/general/sounds.json
trans.tr = public/language/tr/admin/general/sounds.json
trans.uk = public/language/uk/admin/general/sounds.json
trans.vi = public/language/vi/admin/general/sounds.json
trans.zh_CN = public/language/zh-CN/admin/general/sounds.json
trans.zh_TW = public/language/zh-TW/admin/general/sounds.json
type = KEYVALUEJSON
[nodebb.admin-manage-admins-mods]

File diff suppressed because it is too large Load Diff

View File

@@ -19,4 +19,5 @@ ENV NODE_ENV=production \
EXPOSE 4567
CMD node ./nodebb build ; node ./nodebb start
CMD ./nodebb start

View File

@@ -1,31 +1,95 @@
'use strict';
const path = require('path');
const nconf = require('nconf');
nconf.argv().env({
separator: '__',
});
const winston = require('winston');
const fork = require('child_process').fork;
const env = process.env;
var async = require('async');
var fork = require('child_process').fork;
var env = process.env;
var worker;
var updateWorker;
var initWorker;
var incomplete = [];
var running = 0;
env.NODE_ENV = env.NODE_ENV || 'development';
const configFile = path.resolve(__dirname, nconf.any(['config', 'CONFIG']) || 'config.json');
const prestart = require('./src/prestart');
prestart.loadConfig(configFile);
var nconf = require('nconf');
nconf.file({
file: 'config.json',
});
nconf.defaults({
base_dir: __dirname,
views_dir: './build/public/templates',
});
var winston = require('winston');
winston.configure({
transports: [
new winston.transports.Console({
handleExceptions: true,
}),
],
});
var db = require('./src/database');
module.exports = function (grunt) {
var args = [];
var initArgs = ['--build'];
if (!grunt.option('verbose')) {
args.push('--log-level=info');
nconf.set('log-level', 'info');
initArgs.push('--log-level=info');
}
function update(action, filepath, target) {
var updateArgs = args.slice();
var compiling;
var time = Date.now();
if (target === 'lessUpdated_Client') {
compiling = 'clientCSS';
} else if (target === 'lessUpdated_Admin') {
compiling = 'acpCSS';
} else if (target === 'clientUpdated') {
compiling = 'js';
} else if (target === 'templatesUpdated') {
compiling = 'tpl';
} else if (target === 'langUpdated') {
compiling = 'lang';
} else if (target === 'serverUpdated') {
// Do nothing, just restart
}
if (compiling && !incomplete.includes(compiling)) {
incomplete.push(compiling);
}
updateArgs.push('--build');
updateArgs.push(incomplete.join(','));
worker.kill();
if (updateWorker) {
updateWorker.kill('SIGKILL');
}
updateWorker = fork('app.js', updateArgs, { env: env });
running += 1;
updateWorker.on('exit', function () {
running -= 1;
if (running === 0) {
worker = fork('app.js', args, {
env: env,
});
worker.on('message', function () {
if (incomplete.length) {
incomplete = [];
if (grunt.option('verbose')) {
grunt.log.writeln('NodeBB restarted in ' + (Date.now() - time) + ' ms');
}
}
});
}
});
}
prestart.setupWinston();
grunt.initConfig({
watch: {},
@@ -35,52 +99,52 @@ module.exports = function (grunt) {
grunt.registerTask('default', ['watch']);
grunt.registerTask('init', async function () {
grunt.registerTask('init', function () {
var done = this.async();
let plugins = [];
if (!process.argv.includes('--core')) {
await db.init();
plugins = await db.getSortedSetRange('plugins:active', 0, -1);
addBaseThemes(plugins);
async.waterfall([
function (next) {
db.init(next);
},
function (next) {
db.getSortedSetRange('plugins:active', 0, -1, next);
},
function (plugins, next) {
addBaseThemes(plugins, next);
},
function (plugins, next) {
if (!plugins.includes('nodebb-plugin-composer-default')) {
plugins.push('nodebb-plugin-composer-default');
}
if (!plugins.includes('nodebb-theme-persona')) {
plugins.push('nodebb-theme-persona');
}
if (process.argv.includes('--core')) {
plugins = [];
}
const styleUpdated_Client = plugins.map(p => 'node_modules/' + p + '/*.less')
.concat(plugins.map(p => 'node_modules/' + p + '/*.css'))
.concat(plugins.map(p => 'node_modules/' + p + '/+(public|static|less)/**/*.less'))
.concat(plugins.map(p => 'node_modules/' + p + '/+(public|static)/**/*.css'));
const styleUpdated_Admin = plugins.map(p => 'node_modules/' + p + '/*.less')
.concat(plugins.map(p => 'node_modules/' + p + '/*.css'))
.concat(plugins.map(p => 'node_modules/' + p + '/+(public|static|less)/**/*.less'))
.concat(plugins.map(p => 'node_modules/' + p + '/+(public|static)/**/*.css'));
const clientUpdated = plugins.map(p => 'node_modules/' + p + '/+(public|static)/**/*.js');
const serverUpdated = plugins.map(p => 'node_modules/' + p + '/*.js')
.concat(plugins.map(p => 'node_modules/' + p + '/+(lib|src)/**/*.js'));
const templatesUpdated = plugins.map(p => 'node_modules/' + p + '/+(public|static|templates)/**/*.tpl');
const langUpdated = plugins.map(p => 'node_modules/' + p + '/+(public|static|languages)/**/*.json');
const lessUpdated_Client = plugins.map(p => 'node_modules/' + p + '/**/*.less');
const lessUpdated_Admin = plugins.map(p => 'node_modules/' + p + '/**/*.less');
const clientUpdated = plugins.map(p => 'node_modules/' + p + '/**/*.js');
const templatesUpdated = plugins.map(p => 'node_modules/' + p + '/**/*.tpl');
const langUpdated = plugins.map(p => 'node_modules/' + p + '/**/*.json');
grunt.config(['watch'], {
styleUpdated_Client: {
lessUpdated_Client: {
files: [
'public/less/**/*.less',
...styleUpdated_Client,
'public/less/*.less',
'!public/less/admin/**/*.less',
...lessUpdated_Client,
'!node_modules/nodebb-*/node_modules/**',
'!node_modules/nodebb-*/.git/**',
],
options: {
interval: 1000,
},
},
styleUpdated_Admin: {
lessUpdated_Admin: {
files: [
'public/less/**/*.less',
...styleUpdated_Admin,
'public/less/admin/**/*.less',
...lessUpdated_Admin,
'!node_modules/nodebb-*/node_modules/**',
'!node_modules/nodebb-*/.git/**',
],
options: {
interval: 1000,
@@ -90,23 +154,16 @@ module.exports = function (grunt) {
files: [
'public/src/**/*.js',
...clientUpdated,
'!node_modules/nodebb-*/node_modules/**',
'node_modules/benchpressjs/build/benchpress.js',
'!node_modules/nodebb-*/.git/**',
],
options: {
interval: 1000,
},
},
serverUpdated: {
files: [
'app.js',
'install/*.js',
'src/**/*.js',
'public/src/modules/translator.js',
'public/src/modules/helpers.js',
'public/src/utils.js',
serverUpdated,
'!src/upgrades/**',
],
files: ['*.js', 'install/*.js', 'src/**/*.js', '!src/upgrades/**'],
options: {
interval: 1000,
},
@@ -115,6 +172,8 @@ module.exports = function (grunt) {
files: [
'src/views/**/*.tpl',
...templatesUpdated,
'!node_modules/nodebb-*/node_modules/**',
'!node_modules/nodebb-*/.git/**',
],
options: {
interval: 1000,
@@ -125,79 +184,63 @@ module.exports = function (grunt) {
'public/language/en-GB/*.json',
'public/language/en-GB/**/*.json',
...langUpdated,
'!node_modules/nodebb-*/node_modules/**',
'!node_modules/nodebb-*/.git/**',
'!node_modules/nodebb-*/plugin.json',
'!node_modules/nodebb-*/package.json',
'!node_modules/nodebb-*/theme.json',
],
options: {
interval: 1000,
},
},
});
const build = require('./src/meta/build');
if (!grunt.option('skip')) {
await build.build(true);
}
run();
done();
next();
},
], done);
});
function run() {
if (worker) {
worker.kill();
}
worker = fork('app.js', args, {
env: env,
});
}
grunt.task.run('init');
grunt.event.removeAllListeners('watch');
grunt.event.on('watch', function update(action, filepath, target) {
var compiling;
if (target === 'styleUpdated_Client') {
compiling = 'clientCSS';
} else if (target === 'styleUpdated_Admin') {
compiling = 'acpCSS';
} else if (target === 'clientUpdated') {
compiling = 'js';
} else if (target === 'templatesUpdated') {
compiling = 'tpl';
} else if (target === 'langUpdated') {
compiling = 'lang';
} else if (target === 'serverUpdated') {
// empty require cache
const paths = ['./src/meta/build.js', './src/meta/index.js'];
paths.forEach(p => delete require.cache[require.resolve(p)]);
return run();
env.NODE_ENV = 'development';
if (grunt.option('skip')) {
worker = fork('app.js', args, {
env: env,
});
} else {
initWorker = fork('app.js', initArgs, {
env: env,
});
initWorker.on('exit', function () {
worker = fork('app.js', args, {
env: env,
});
});
}
require('./src/meta/build').build([compiling], function (err) {
if (err) {
winston.error(err.stack);
}
if (worker) {
worker.send({ compiling: compiling });
}
});
});
grunt.event.on('watch', update);
};
function addBaseThemes(plugins) {
let themeId = plugins.find(p => p.includes('nodebb-theme-'));
function addBaseThemes(plugins, callback) {
const themeId = plugins.find(p => p.startsWith('nodebb-theme-'));
if (!themeId) {
return plugins;
return setImmediate(callback, null, plugins);
}
let baseTheme;
do {
function getBaseRecursive(themeId) {
try {
baseTheme = require(themeId + '/theme').baseTheme;
} catch (err) {
console.log(err);
}
const baseTheme = require(themeId + '/theme').baseTheme;
if (baseTheme) {
plugins.push(baseTheme);
themeId = baseTheme;
getBaseRecursive(baseTheme);
}
} while (baseTheme);
return plugins;
} catch (err) {
console.log(err);
}
}
getBaseRecursive(themeId);
callback(null, plugins);
}

View File

@@ -48,7 +48,7 @@ Our minimalist "Persona" theme gets you going right away, no coding experience r
NodeBB requires the following software to be installed:
* A version of Node.js at least 10 or greater ([installation/upgrade instructions](https://github.com/nodesource/distributions))
* A version of Node.js at least 8 or greater ([installation/upgrade instructions](https://github.com/nodesource/distributions))
* Redis, version 2.8.9 or greater **or** MongoDB, version 2.6 or greater
* nginx, version 1.3.13 or greater (**only if** intending to use nginx to proxy requests to a NodeBB)

1
app.js
View File

@@ -31,7 +31,6 @@ const path = require('path');
const file = require('./src/file');
process.env.NODE_ENV = process.env.NODE_ENV || 'production';
global.env = process.env.NODE_ENV || 'production';
// Alternate configuration file support

View File

@@ -32,8 +32,9 @@
"registrationType": "normal",
"registrationApprovalType": "normal",
"allowAccountDelete": 1,
"allowFileUploads": 0,
"privateUploads": 0,
"allowedFileExtensions": "png,jpg,bmp,txt",
"allowedFileExtensions": "png,jpg,bmp",
"allowUserHomePage": 1,
"allowMultipleBadges": 0,
"maximumFileSize": 2048,
@@ -70,8 +71,6 @@
"reputation:disabled": 0,
"downvote:disabled": 0,
"disableSignatures": 0,
"downvotesPerDay": 10,
"downvotesPerUserPerDay": 3,
"min:rep:downvote": 0,
"min:rep:flag": 0,
"min:rep:profile-picture": 0,
@@ -79,15 +78,12 @@
"min:rep:website": 0,
"min:rep:aboutme": 0,
"min:rep:signature": 0,
"flags:limitPerTarget": 0,
"notificationType_upvote": "notification",
"notificationType_new-topic": "notification",
"notificationType_new-reply": "notification",
"notificationType_post-edit": "notification",
"notificationType_follow": "notification",
"notificationType_new-chat": "notification",
"notificationType_group-invite": "notification",
"notificationType_group-request-membership": "notification",
"notificationType_mention": "notification",
"notificationType_new-register": "notification",
"notificationType_post-queue": "notification",
@@ -113,9 +109,7 @@
"email:sendmail:rateLimit": 2,
"email:sendmail:rateDelta": 1000,
"hideFullname": 0,
"hideEmail": 0,
"allowGuestHandles": 0,
"recentMaxTopics": 200,
"disableRecentCategoryFilter": 0,
"maximumRelatedTopics": 0,
"disableEmailSubscriptions": 0,

View File

@@ -1,51 +1,58 @@
'use strict';
const prompt = require('prompt');
const winston = require('winston');
var async = require('async');
var prompt = require('prompt');
var winston = require('winston');
const util = require('util');
const promptGet = util.promisify((schema, callback) => prompt.get(schema, callback));
const questions = {
var questions = {
redis: require('../src/database/redis').questions,
mongo: require('../src/database/mongo').questions,
postgres: require('../src/database/postgres').questions,
};
module.exports = async function (config) {
module.exports = function (config, callback) {
async.waterfall([
function (next) {
winston.info('\nNow configuring ' + config.database + ' database:');
const databaseConfig = await getDatabaseConfig(config);
return saveDatabaseConfig(config, databaseConfig);
getDatabaseConfig(config, next);
},
function (databaseConfig, next) {
saveDatabaseConfig(config, databaseConfig, next);
},
], callback);
};
async function getDatabaseConfig(config) {
function getDatabaseConfig(config, callback) {
if (!config) {
throw new Error('invalid config, aborted');
return callback(new Error('aborted'));
}
if (config.database === 'redis') {
if (config['redis:host'] && config['redis:port']) {
return config;
callback(null, config);
} else {
prompt.get(questions.redis, callback);
}
return await promptGet(questions.redis);
} else if (config.database === 'mongo') {
if ((config['mongo:host'] && config['mongo:port']) || config['mongo:uri']) {
return config;
callback(null, config);
} else {
prompt.get(questions.mongo, callback);
}
return await promptGet(questions.mongo);
} else if (config.database === 'postgres') {
if (config['postgres:host'] && config['postgres:port']) {
return config;
callback(null, config);
} else {
prompt.get(questions.postgres, callback);
}
return await promptGet(questions.postgres);
} else {
return callback(new Error('unknown database : ' + config.database));
}
throw new Error('unknown database : ' + config.database);
}
function saveDatabaseConfig(config, databaseConfig) {
function saveDatabaseConfig(config, databaseConfig, callback) {
if (!databaseConfig) {
throw new Error('invalid config, aborted');
return callback(new Error('aborted'));
}
// Translate redis properties into redis object
@@ -79,13 +86,13 @@ function saveDatabaseConfig(config, databaseConfig) {
ssl: databaseConfig['postgres:ssl'],
};
} else {
throw new Error('unknown database : ' + config.database);
return callback(new Error('unknown database : ' + config.database));
}
const allQuestions = questions.redis.concat(questions.mongo).concat(questions.postgres);
var allQuestions = questions.redis.concat(questions.mongo).concat(questions.postgres);
for (var x = 0; x < allQuestions.length; x += 1) {
delete config[allQuestions[x].name];
}
return config;
callback(null, config);
}

View File

@@ -2,7 +2,7 @@
"name": "nodebb",
"license": "GPL-3.0",
"description": "NodeBB Forum",
"version": "1.14.3-beta.14",
"version": "1.13.0",
"homepage": "http://www.nodebb.org",
"repository": {
"type": "git",
@@ -11,15 +11,15 @@
"main": "app.js",
"scripts": {
"start": "node loader.js",
"lint": "npx eslint --cache ./nodebb .",
"lint": "eslint --cache ./nodebb .",
"pretest": "npm run lint",
"test": "npx nyc --reporter=html --reporter=text-summary npx mocha",
"test": "nyc --reporter=html --reporter=text-summary mocha",
"coveralls": "nyc report --reporter=text-lcov | coveralls && rm -r coverage"
},
"husky": {
"hooks": {
"pre-commit": "npx lint-staged",
"commit-msg": "npx commitlint -E HUSKY_GIT_PARAMS"
"pre-commit": "lint-staged",
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
}
},
"lint-staged": {
@@ -29,131 +29,129 @@
]
},
"dependencies": {
"ace-builds": "^1.4.9",
"archiver": "^5.0.0",
"async": "^3.2.0",
"autoprefixer": "^9.7.6",
"ace-builds": "^1.2.9",
"archiver": "^3.0.0",
"async": "^3.0.1",
"autoprefixer": "^9.4.6",
"bcryptjs": "2.4.3",
"benchpressjs": "^2.0.2",
"body-parser": "^1.19.0",
"bootstrap": "^3.4.1",
"chart.js": "^2.9.3",
"benchpressjs": "^2.0.0",
"body-parser": "^1.18.2",
"bootstrap": "^3.4.0",
"bootswatch": "git://github.com/thomaspark/bootswatch.git#c41a8f066feb8950c6f9c6bcf5a3c37d1085404e",
"chart.js": "^2.7.1",
"cli-graph": "^3.2.2",
"clipboard": "^2.0.6",
"colors": "^1.4.0",
"commander": "^6.0.0",
"compression": "^1.7.4",
"clipboard": "^2.0.1",
"colors": "^1.1.2",
"commander": "^3.0.0",
"compression": "^1.7.1",
"connect-ensure-login": "^0.1.1",
"connect-flash": "^0.1.1",
"connect-mongo": "3.2.0",
"connect-multiparty": "^2.2.0",
"connect-pg-simple": "^6.1.0",
"connect-redis": "5.0.0",
"cookie-parser": "^1.4.5",
"cron": "^1.8.2",
"cropperjs": "^1.5.6",
"csurf": "^1.11.0",
"connect-multiparty": "^2.1.0",
"connect-pg-simple": "^6.0.0",
"connect-redis": "4.0.3",
"cookie-parser": "^1.4.3",
"cron": "^1.3.0",
"cropperjs": "^1.2.2",
"csurf": "^1.9.0",
"daemon": "^1.1.0",
"diff": "^4.0.2",
"express": "^4.17.1",
"express-session": "^1.17.0",
"express-useragent": "^1.0.13",
"graceful-fs": "^4.2.3",
"helmet": "^4.0.0",
"html-to-text": "^5.1.1",
"ipaddr.js": "^1.9.1",
"jquery": "3.5.1",
"jsesc": "3.0.1",
"json2csv": "5.0.1",
"jsonwebtoken": "^8.5.1",
"less": "^3.11.1",
"diff": "^4.0.1",
"express": "^4.16.2",
"express-session": "^1.15.6",
"express-useragent": "^1.0.12",
"graceful-fs": "^4.1.11",
"helmet": "^3.11.0",
"html-to-text": "^5.0.0",
"ipaddr.js": "^1.5.4",
"jquery": "^3.2.1",
"jsesc": "2.5.2",
"json-2-csv": "^3.0.0",
"jsonwebtoken": "^8.4.0",
"less": "^3.10.3",
"lodash": "^4.17.15",
"logrotate-stream": "^0.2.6",
"lru-cache": "6.0.0",
"logrotate-stream": "^0.2.5",
"lru-cache": "5.1.1",
"material-design-lite": "^1.3.0",
"mime": "^2.4.4",
"mkdirp": "^1.0.4",
"mongodb": "3.6.0",
"morgan": "^1.10.0",
"mousetrap": "^1.6.5",
"@nodebb/bootswatch": "3.4.2",
"@nodebb/mubsub": "^1.6.0",
"@nodebb/socket.io-adapter-mongo": "3.0.1",
"mime": "^2.2.0",
"mkdirp": "^0.5.1",
"mongodb": "3.4.0",
"morgan": "^1.9.1",
"mousetrap": "^1.6.1",
"mubsub-nbb": "^1.5.1",
"nconf": "^0.10.0",
"nodebb-plugin-composer-default": "6.3.53",
"nodebb-plugin-dbsearch": "4.1.2",
"nodebb-plugin-emoji": "^3.3.0",
"nodebb-plugin-composer-default": "6.3.20",
"nodebb-plugin-dbsearch": "4.0.7",
"nodebb-plugin-emoji": "^3.0.0",
"nodebb-plugin-emoji-android": "2.0.0",
"nodebb-plugin-markdown": "8.11.2",
"nodebb-plugin-mentions": "2.9.3",
"nodebb-plugin-markdown": "8.11.0",
"nodebb-plugin-mentions": "2.7.3",
"nodebb-plugin-soundpack-default": "1.0.0",
"nodebb-plugin-spam-be-gone": "0.7.2",
"nodebb-rewards-essentials": "0.1.3",
"nodebb-plugin-spam-be-gone": "0.6.7",
"nodebb-rewards-essentials": "0.1.2",
"nodebb-theme-lavender": "5.0.11",
"nodebb-theme-persona": "10.2.5",
"nodebb-theme-slick": "1.2.29",
"nodebb-theme-vanilla": "11.2.2",
"nodebb-widget-essentials": "4.1.1",
"nodemailer": "^6.4.6",
"passport": "^0.4.1",
"nodebb-theme-persona": "10.1.30",
"nodebb-theme-slick": "1.2.28",
"nodebb-theme-vanilla": "11.1.12",
"nodebb-widget-essentials": "4.0.17",
"nodemailer": "^6.0.0",
"passport": "^0.4.0",
"passport-local": "1.0.0",
"pg": "^8.0.2",
"pg-cursor": "^2.1.9",
"postcss": "7.0.32",
"pg": "^7.4.0",
"pg-cursor": "^2.0.0",
"postcss": "7.0.21",
"postcss-clean": "1.1.0",
"promise-polyfill": "^8.1.3",
"promise-polyfill": "^8.0.0",
"prompt": "^1.0.0",
"redis": "3.0.2",
"request": "2.88.2",
"request-promise-native": "^1.0.8",
"rimraf": "3.0.2",
"redis": "2.8.0",
"request": "2.88.0",
"rimraf": "3.0.0",
"rss": "^1.2.2",
"sanitize-html": "^1.23.0",
"semver": "^7.2.1",
"serve-favicon": "^2.5.0",
"sharp": "0.25.4",
"sitemap": "^6.1.0",
"sanitize-html": "^1.16.3",
"semver": "^7.0.0",
"serve-favicon": "^2.4.5",
"sharp": "0.23.4",
"sitemap": "^5.0.0",
"socket.io": "2.3.0",
"socket.io-adapter-cluster": "^1.0.1",
"socket.io-adapter-mongo": "^2.0.4",
"socket.io-adapter-postgres": "^1.2.1",
"socket.io-client": "2.3.0",
"socket.io-redis": "5.3.0",
"socket.io-redis": "5.2.0",
"socketio-wildcard": "2.0.0",
"spdx-license-list": "^6.1.0",
"spdx-license-list": "^6.0.0",
"spider-detector": "2.0.0",
"textcomplete": "^0.17.1",
"textcomplete.contenteditable": "^0.1.1",
"toobusy-js": "^0.5.1",
"uglify-es": "^3.3.9",
"validator": "13.1.1",
"winston": "3.3.3",
"validator": "12.1.0",
"winston": "3.2.1",
"xml": "^1.0.1",
"xregexp": "^4.3.0",
"xregexp": "^4.1.1",
"zxcvbn": "^4.4.2"
},
"devDependencies": {
"@apidevtools/swagger-parser": "10.0.1",
"@commitlint/cli": "9.1.1",
"@commitlint/config-angular": "9.1.1",
"coveralls": "3.1.0",
"eslint": "7.6.0",
"eslint-config-airbnb-base": "14.1.0",
"eslint-plugin-import": "2.22.0",
"grunt": "1.2.1",
"@commitlint/cli": "8.2.0",
"@commitlint/config-angular": "8.2.0",
"coveralls": "3.0.9",
"eslint": "6.7.0",
"eslint-config-airbnb-base": "14.0.0",
"eslint-plugin-import": "2.18.2",
"grunt": "1.0.4",
"grunt-contrib-watch": "1.1.0",
"husky": "4.2.5",
"jsdom": "16.3.0",
"lint-staged": "10.2.11",
"mocha": "8.1.1",
"husky": "3.1.0",
"jsdom": "15.2.1",
"lint-staged": "9.4.2",
"mocha": "6.2.2",
"mocha-lcov-reporter": "1.3.0",
"nyc": "15.1.0",
"smtp-server": "3.7.0"
"nyc": "14.1.1",
"smtp-server": "3.5.0"
},
"bugs": {
"url": "https://github.com/NodeBB/NodeBB/issues"
},
"engines": {
"node": ">=10"
"node": ">=8"
},
"maintainers": [
{

View File

@@ -81,7 +81,7 @@ web.install = function (port) {
async.parallel([compileLess, compileJS, copyCSS, loadDefaults], function (err) {
if (err) {
winston.error(err.stack);
winston.error(err);
}
setupRoutes();
launchExpress(port);
@@ -223,17 +223,14 @@ function launch(req, res) {
}
function compileLess(callback) {
var installSrc = path.join(__dirname, '../public/less/install.less');
fs.readFile(installSrc, function (err, style) {
fs.readFile(path.join(__dirname, '../public/less/install.less'), function (err, style) {
if (err) {
return winston.error('Unable to read LESS install file: ', err.stack);
return winston.error('Unable to read LESS install file: ', err);
}
less.render(style.toString(), {
filename: path.resolve(installSrc),
}, function (err, css) {
less.render(style.toString(), function (err, css) {
if (err) {
return winston.error('Unable to compile LESS: ', err.stack);
return winston.error('Unable to compile LESS: ', err);
}
fs.writeFile(path.join(__dirname, '../public/installer.css'), css.css, callback);

View File

@@ -231,7 +231,7 @@ fs.open(pathToConfig, 'r', function (err) {
cwd: process.cwd(),
});
fs.writeFileSync(pidFilePath, String(process.pid));
fs.writeFileSync(pidFilePath, process.pid);
}
async.series([

View File

@@ -21,13 +21,11 @@
"es6": false
},
"rules": {
"block-scoped-var": "off",
"no-dupe-class-members": "off",
"no-var": "off",
"object-shorthand": "off",
"prefer-arrow-callback": "off",
"prefer-spread": "off",
"prefer-object-spread": "off",
"prefer-reflect": "off",
"prefer-template": "off"
},

View File

@@ -1,13 +1,13 @@
<html>
<head>
<title>Excessive Load Warning</title>
<link href='https://fonts.googleapis.com/css?family=Ubuntu:400,500,700' rel='stylesheet' type='text/css'>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style type="text/css">
body {
background: #00A9EA;
color: white;
/* see public/less/admin/vars.less for documentation on system font family */
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";
font-family: 'Ubuntu', sans-serif;
text-align: center;
-webkit-transform-style: preserve-3d;
-moz-transform-style: preserve-3d;

3
public/js-enabled.css Normal file
View File

@@ -0,0 +1,3 @@
/*
The following stylesheet is only included on pages that can execute javascript
*/

View File

@@ -2,7 +2,6 @@
"events": "أحداث",
"no-events": "لا توجد أحداث",
"control-panel": "لوحة تحكم الأحداث",
"delete-events": "Delete Events",
"filters": "Filters",
"filters-apply": "Apply Filters",
"filter-type": "Event Type",

View File

@@ -1,79 +0,0 @@
{
"forum-traffic": "Forum Traffic",
"page-views": "مشاهدات الصفحات",
"unique-visitors": "زائرين فريدين",
"new-users": "New Users",
"posts": "مشاركات",
"topics": "مواضيع",
"page-views-seven": "آخر 7 ايام",
"page-views-thirty": "آخر 30 يوماً",
"page-views-last-day": "آخر 24 ساعة",
"page-views-custom": "مدة زمنية مخصصة",
"page-views-custom-start": "بداية المدة",
"page-views-custom-end": "نهاية المده",
"page-views-custom-help": "أدخل نطاقا زمنيا لمرات مشاهدة الصفحات التي ترغب في عرضها. إذا لم يظهر منتقي التاريخ، فإن التنسيق المقبول هو <code>YYYY-MM-DD</code>",
"page-views-custom-error": "الرجاء إدخال نطاق تاريخ صالح بالتنسيق <code>YYYY-MM-DD</code>",
"stats.yesterday": "Yesterday",
"stats.today": "Today",
"stats.last-week": "Last Week",
"stats.this-week": "This Week",
"stats.last-month": "Last Month",
"stats.this-month": "This Month",
"stats.all": "كل الوقت",
"updates": "تحديثات",
"running-version": "المنتدى يعمل حاليا على <strong>NodeBB الإصدار<span id=\"version\">%1</span></strong>.",
"keep-updated": "تأكد دائما من أن NodeBB يعمل على احدث إصدار للحصول على أحدث التصحيحات الأمنية وإصلاحات الأخطاء.",
"up-to-date": "<p>المنتدى <strong>يعمل على أحدث إصدار</strong> <i class=\"fa fa-check\"></i></p>",
"upgrade-available": "<p>A new version (v%1) has been released. Consider <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">upgrading your NodeBB</a>.</p>",
"prerelease-upgrade-available": "<p>This is an outdated pre-release version of NodeBB. A new version (v%1) has been released. Consider <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">upgrading your NodeBB</a>.</p>",
"prerelease-warning": "<p>هذه نسخة <strong>ماقبل الإصدار</strong> من NodeBB. قد تحدث أخطاء غير مقصودة. <i class=\"fa fa-exclamation-triangle\"></i></p>",
"running-in-development": "المنتدى قيد التشغيل في وضع \"المطورين\". وقد تكون هناك ثغرات أمنية مفتوحة؛ من فضلك تواصل مع مسؤول نظامك.",
"latest-lookup-failed": "<p>Failed to look up latest available version of NodeBB</p>",
"notices": "إشعارات",
"restart-not-required": "إعادة التشغيل غير مطلوب",
"restart-required": "إعادة التشغيل مطلوبة",
"search-plugin-installed": "إضافة البحث منصبة",
"search-plugin-not-installed": "إضافة البحث غير منصبة",
"search-plugin-tooltip": "نصب إضافة البحث من صفحة الإضافات البرمجية لتنشيط وظيفة البحث",
"control-panel": "التحكم بالنظام",
"rebuild-and-restart": "Rebuild &amp; Restart",
"restart": "Restart",
"restart-warning": "Rebuilding or Restarting your NodeBB will drop all existing connections for a few seconds.",
"restart-disabled": "Rebuilding and Restarting your NodeBB has been disabled as you do not seem to be running it via the appropriate daemon.",
"maintenance-mode": "وضع الصيانة",
"maintenance-mode-title": "انقر هنا لإعداد وضع الصيانة لـNodeBB",
"realtime-chart-updates": "التحديث الفوري للرسم البياني",
"active-users": "المستخدمين النشطين",
"active-users.users": "الأعضاء",
"active-users.guests": "الزوار",
"active-users.total": "المجموع",
"active-users.connections": "Connections",
"anonymous-registered-users": "المجهولين مقابل المستخدمين المسجلين",
"anonymous": "مجهول",
"registered": "مسجل",
"user-presence": "تواجد المستخدمين",
"on-categories": "في قائمة الأقسام",
"reading-posts": "قراءة المشاركات",
"browsing-topics": "تصفح المواضيع",
"recent": "الأخيرة",
"unread": "غير مقروء",
"high-presence-topics": "مواضيع ذات حضور قوي",
"graphs.page-views": "مشاهدات الصفحة",
"graphs.page-views-registered": "Page Views Registered",
"graphs.page-views-guest": "Page Views Guest",
"graphs.page-views-bot": "Page Views Bot",
"graphs.unique-visitors": "زوار فريدين",
"graphs.registered-users": "مستخدمين مسجلين",
"graphs.anonymous-users": "مستخدمين مجهولين",
"last-restarted-by": "Last restarted by",
"no-users-browsing": "No users browsing"
}

View File

@@ -1,9 +1,7 @@
{
"you-are-on": "You are on <strong>%1:%2</strong>",
"ip": "IP <strong>%1</strong>",
"you-are-on": "Info - You are on <strong>%1:%2</strong>",
"nodes-responded": "%1 nodes responded within %2ms!",
"host": "host",
"primary": "primary / run jobs",
"pid": "pid",
"nodejs": "nodejs",
"online": "online",

View File

@@ -11,7 +11,6 @@
"num-recent-replies": "# of Recent Replies",
"ext-link": "External Link",
"is-section": "Treat this category as a section",
"tag-whitelist": "Tag Whitelist",
"upload-image": "Upload Image",
"delete-image": "Remove",
"category-image": "Category Image",
@@ -27,8 +26,6 @@
"enable": "Enable",
"disable": "Disable",
"edit": "Edit",
"analytics": "Analytics",
"view-category": "View category",
"select-category": "Select Category",
"set-parent-category": "Set Parent Category",
@@ -66,6 +63,7 @@
"alert.create-success": "Category successfully created!",
"alert.none-active": "You have no active categories.",
"alert.create": "Create a Category",
"alert.confirm-moderate": "<strong>Are you sure you wish to grant the moderation privilege to this user group?</strong> This group is public, and any users can join at will.",
"alert.confirm-purge": "<p class=\"lead\">Do you really want to purge this category \"%1\"?</p><h5><strong class=\"text-danger\">Warning!</strong> All topics and posts in this category will be purged!</h5> <p class=\"help-block\">Purging a category will remove all topics and posts, and delete the category from the database. If you want to remove a category <em>temporarily</em>, you'll want to \"disable\" the category instead.</p>",
"alert.purge-success": "Category purged!",
"alert.copy-success": "Settings Copied!",
@@ -77,9 +75,7 @@
"alert.user-search": "Search for a user here...",
"alert.find-group": "Find a Group",
"alert.group-search": "Search for a group here...",
"alert.not-enough-whitelisted-tags": "Whitelisted tags are less than minimum tags, you need to create more whitelisted tags!",
"collapse-all": "Collapse All",
"expand-all": "Expand All",
"disable-on-create": "Disable on create",
"no-matches": "No matches"
"disable-on-create": "Disable on create"
}

View File

@@ -9,7 +9,7 @@
"default": "System default",
"default-help": "<em>System default</em> means the user has not explicitly overridden the global forum setting for digests, which is currently: &quot;<strong>%1</strong>&quot;",
"resend": "Resend Digest",
"resend-all-confirm": "Are you sure you wish to manually execute this digest run?",
"resend-all-confirm": "Are you sure you wish to mnually execute this digest run?",
"resent-single": "Manual digest resend completed",
"resent-day": "Daily digest resent",
"resent-week": "Weekly digest resent",

View File

@@ -8,9 +8,6 @@
"hidden": "Hidden",
"private": "Private",
"edit": "Edit",
"delete": "Delete",
"privileges": "Privileges",
"download-csv": "CSV",
"search-placeholder": "Search",
"create": "Create Group",
"description-placeholder": "A short description about your group",

View File

@@ -1,9 +1,8 @@
{
"global": "Global",
"admin": "Admin",
"global.no-users": "No user-specific global privileges.",
"group-privileges": "Group Privileges",
"user-privileges": "User Privileges",
"edit-privileges": "Edit Privileges",
"chat": "Chat",
"upload-images": "Upload Images",
"upload-files": "Upload Files",
@@ -32,21 +31,5 @@
"downvote-posts": "Downvote Posts",
"delete-topics": "Delete Topics",
"purge": "Purge",
"moderate": "Moderate",
"admin-dashboard": "Dashboard",
"admin-categories": "Categories",
"admin-privileges": "Privileges",
"admin-users": "Users",
"admin-settings": "Settings",
"alert.confirm-moderate": "<strong>Are you sure you wish to grant the moderation privilege to this user group?</strong> This group is public, and any users can join at will.",
"alert.confirm-save": "Please confirm your intention to save these privileges",
"alert.saved": "Privilege changes saved and applied",
"alert.confirm-discard": "Are you sure you wish to discard your privilege changes?",
"alert.discarded": "Privilege changes discarded",
"alert.confirm-copyToAll": "Are you sure you wish to apply this privilege set to <strong>all categories</strong>?",
"alert.confirm-copyToAllGroup": "Are you sure you wish to apply this group's privilege set to <strong>all categories</strong>?",
"alert.confirm-copyToChildren": "Are you sure you wish to apply this privilege set to <strong>all descendant (child) categories</strong>?",
"alert.confirm-copyToChildrenGroup": "Are you sure you wish to apply this group's privilege set to <strong>all descendant (child) categories</strong>?",
"alert.no-undo": "<em>This action cannot be undone.</em>"
"moderate": "Moderate"
}

View File

@@ -3,16 +3,17 @@
"bg-color": "Background Colour",
"text-color": "Text Colour",
"create-modify": "Create & Modify Tags",
"description": "Select tags by clicking or dragging, use <code>CTRL</code> to select multiple tags.",
"description": "Select tags via clicking and/or dragging, use shift to select multiple.",
"create": "Create Tag",
"modify": "Modify Tags",
"rename": "Rename Tags",
"delete": "Delete Selected Tags",
"search": "Search for tags...",
"settings": "Tags Settings",
"settings": "Click <a href=\"%1\">here</a> to visit the tag settings page.",
"name": "Tag Name",
"alerts.editing": "Editing tag(s)",
"alerts.editing-multiple": "Editing multiple tags",
"alerts.editing-x": "Editing \"%1\" tag",
"alerts.confirm-delete": "Do you want to delete the selected tags?",
"alerts.update-success": "Tag Updated!"
}

View File

@@ -12,9 +12,8 @@
"unban": "Unban User(s)",
"reset-lockout": "Reset Lockout",
"reset-flags": "Reset Flags",
"delete": "Delete <strong>User(s)</strong>",
"delete-content": "Delete User(s) <strong>Content</strong>",
"purge": "Delete <strong>User(s)</strong> and <strong>Content</strong>",
"delete": "Delete User(s)",
"purge": "Delete User(s) and Content",
"download-csv": "Download CSV",
"manage-groups": "Manage Groups",
"add-group": "Add Group",
@@ -94,11 +93,9 @@
"alerts.validate-email-success": "Emails validated",
"alerts.validate-force-password-reset-success": "User(s) passwords have been reset and their existing sessions have been revoked.",
"alerts.password-reset-confirm": "Do you want to send password reset email(s) to these user(s)?",
"alerts.confirm-delete": "<strong>Warning!</strong><p>Do you really want to delete <strong>user(s)</strong>?</p><p>This action is not reversible! Only the user account will be deleted, their posts and topics will remain.</p>",
"alerts.confirm-delete": "<b>Warning!</b><br/>Do you really want to delete user(s)?<br/> This action is not reversable! Only the user account will be deleted, their posts and topics will remain.",
"alerts.delete-success": "User(s) Deleted!",
"alerts.confirm-delete-content": "<strong>Warning!</strong><p>Do you really want to delete these user(s) <strong>content</strong>?</p><p>This action is not reversible! The users' accounts will remain, but their posts and topics will be deleted.</p>",
"alerts.delete-content-success": "User(s) Content Deleted!",
"alerts.confirm-purge": "<strong>Warning!</strong><p>Do you really want to delete <strong>user(s) and their content</strong>?</p><p>This action is not reversible! All user data and content will be erased!</p>",
"alerts.confirm-purge": "<b>Warning!</b><br/>Do you really want to delete user(s) and their content?<br/> This action is not reversable! All user data and content will be erased!",
"alerts.create": "Create User",
"alerts.button-create": "Create",
"alerts.button-cancel": "Cancel",
@@ -108,5 +105,5 @@
"alerts.prompt-email": "Emails: ",
"alerts.email-sent-to": "An invitation email has been sent to %1",
"alerts.x-users-found": "%1 user(s) found, (%2 seconds)"
"alerts.x-users-found": "%1 user(s) found! Search took %2 ms."
}

View File

@@ -1,6 +1,11 @@
{
"dashboard": "Dashboard",
"section-general": "عام",
"general/dashboard": "اللوحة الرئيسية",
"general/homepage": "الصفحة الرئيسية",
"general/navigation": "التصفح",
"general/languages": "اللغات",
"general/sounds": "الأصوات",
"general/social": "شبكات التواصل",
"section-manage": "إدارة",
"manage/categories": "الأقسام",
@@ -17,22 +22,17 @@
"section-settings": "إعدادات",
"settings/general": "عامة",
"settings/homepage": "Home Page",
"settings/navigation": "Navigation",
"settings/reputation": "Reputation & Flags",
"settings/reputation": "السمعة",
"settings/email": "البريد الإلكتروني",
"settings/user": "Users",
"settings/group": "Groups",
"settings/user": "الأعضاء",
"settings/group": "المجموعات",
"settings/guest": "الزوار",
"settings/uploads": "الرفع",
"settings/languages": "Languages",
"settings/post": "Posts",
"settings/chat": "Chats",
"settings/post": "المشاركة",
"settings/chat": "الدردشة",
"settings/pagination": "ترقيم الصفحات",
"settings/tags": "الكلمات المفتاحية",
"settings/notifications": "التنبيهات",
"settings/sounds": "Sounds",
"settings/social": "Social",
"settings/cookies": "Cookies",
"settings/web-crawler": "Web Crawler",
"settings/sockets": "Sockets",

View File

@@ -15,20 +15,14 @@
"headers.acah": "Access-Control-Allow-Headers",
"hsts": "Strict Transport Security",
"hsts.enabled": "Enabled HSTS (recommended)",
"hsts.maxAge": "HSTS Max Age",
"hsts.subdomains": "Include subdomains in HSTS header",
"hsts.preload": "Allow preloading of HSTS header",
"hsts.help": "If enabled, an HSTS header will be set for this site. You can elect to include subdomains and preloading flags in your header. If in doubt, you can leave these unchecked. <a href=\"%1\">More information <i class=\"fa fa-external-link\"></i></a>",
"traffic-management": "Traffic Management",
"traffic.help": "NodeBB uses a module that automatically denies requests in high-traffic situations. You can tune these settings here, although the defaults are a good starting point.",
"traffic.help": "NodeBB deploys equipped with a module that automatically denies requests in high-traffic situations. You can tune these settings here, although the defaults are a good starting point.",
"traffic.enable": "Enable Traffic Management",
"traffic.event-lag": "Event Loop Lag Threshold (in milliseconds)",
"traffic.event-lag-help": "Lowering this value decreases wait times for page loads, but will also show the \"excessive load\" message to more users. (Restart required)",
"traffic.lag-check-interval": "Check Interval (in milliseconds)",
"traffic.lag-check-interval-help": "Lowering this value causes NodeBB to become more sensitive to spikes in load, but may also cause the check to become too sensitive. (Restart required)",
"sockets.settings": "WebSocket Settings",
"sockets.max-attempts": "Max Reconnection Attempts",
"sockets.default-placeholder": "Default: %1",
"sockets.delay": "Reconnection Delay"
"traffic.lag-check-interval-help": "Lowering this value causes NodeBB to become more sensitive to spikes in load, but may also cause the check to become too sensitive. (Restart required)"
}

View File

@@ -1,41 +1,35 @@
{
"site-settings": "اعدادات الموقع",
"title": "عنوان الموقع",
"title.short": "عنوان قصير",
"title.short-placeholder": "ان لم تقم بكتابة عنوان مختصر, سيتم استخدام عنوان الموقع الكلي",
"title.url": "الرابط",
"site-settings": "Site Settings",
"title": "Site Title",
"title.url": "URL",
"title.url-placeholder": "The URL of the site title",
"title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.",
"title.name": "اسم المنتدي",
"title.name": "Your Community Name",
"title.show-in-header": "Show Site Title in Header",
"browser-title": "عنوان المتصفح",
"browser-title": "Browser Title",
"browser-title-help": "If no browser title is specified, the site title will be used",
"title-layout": "Title Layout",
"title-layout-help": "Define how the browser title will be structured ie. &#123;pageTitle&#125; | &#123;browserTitle&#125;",
"description.placeholder": "A short description about your community",
"description": "وصف الموقع",
"keywords": "الكلمات الدليله للموقع",
"description": "Site Description",
"keywords": "Site Keywords",
"keywords-placeholder": "Keywords describing your community, comma-separated",
"logo": "شعار الموقع",
"logo.image": "صورة",
"logo": "Site Logo",
"logo.image": "Image",
"logo.image-placeholder": "Path to a logo to display on forum header",
"logo.upload": "رفع",
"logo.url": "الرابط",
"logo.upload": "Upload",
"logo.url": "URL",
"logo.url-placeholder": "The URL of the site logo",
"logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.",
"logo.alt-text": "نص بديل",
"logo.alt-text": "Alt Text",
"log.alt-text-placeholder": "Alternative text for accessibility",
"favicon": "صورة المفضله",
"favicon.upload": "رفع",
"favicon": "Favicon",
"favicon.upload": "Upload",
"touch-icon": "Homescreen/Touch Icon",
"touch-icon.upload": "رفع",
"touch-icon.upload": "Upload",
"touch-icon.help": "Recommended size and format: 192x192, PNG format only. If no touch icon is specified, NodeBB will fall back to using the favicon.",
"outgoing-links": "Outgoing Links",
"outgoing-links.warning-page": "Use Outgoing Links Warning Page",
"search-default-sort-by": "الترتيب الافتراضي للبحث",
"outgoing-links.whitelist": "Domains to whitelist for bypassing the warning page",
"site-colors": "Site Color Metadata",
"theme-color": "لون الثيم",
"background-color": "لون الخلفية",
"background-color-help": "Color used for splash screen background when website is installed as a PWA"
"search-default-sort-by": "Search default sort by",
"outgoing-links.whitelist": "Domains to whitelist for bypassing the warning page"
}

View File

@@ -3,7 +3,6 @@
"private-groups": "Private Groups",
"private-groups.help": "If enabled, joining of groups requires the approval of the group owner <em>(Default: enabled)</em>",
"private-groups.warning": "<strong>Beware!</strong> If this option is disabled and you have private groups, they automatically become public.",
"allow-multiple-badges": "Allow Multiple Badges",
"allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.",
"max-name-length": "Maximum Group Name Length",
"max-title-length": "Maximum Group Title Length",

View File

@@ -1,6 +0,0 @@
{
"language-settings": "اعدادات اللغة",
"description": "تُحدد اللغة الافتراضية إعدادات اللغة لجميع المستخدمين الذين يزورون المنتدى. <br />يمكن للأعضاء تجاوز اللغة الافتراضية من خلال صفحة إعدادات الحساب الخاصة بهم.",
"default-language": "اللغة الافتراضية",
"auto-detect": "الكشف عن إعدادات اللغة للزوار بشكل آلي"
}

View File

@@ -2,5 +2,6 @@
"notifications": "Notifications",
"welcome-notification": "Welcome Notification",
"welcome-notification-link": "Welcome Notification Link",
"welcome-notification-uid": "Welcome Notification User (UID)"
"welcome-notification-uid": "Welcome Notification User (UID)",
"notification-alert-timeout": "Notification Alert Timeout"
}

View File

@@ -42,7 +42,6 @@
"unread.cutoff": "Unread cutoff days",
"unread.min-track-last": "Minimum posts in topic before tracking last read",
"recent": "Recent Settings",
"recent.max-topics": "Maximum topics on /recent",
"recent.categoryFilter.disable": "Disable filtering of topics in ignored categories on the /recent page",
"signature": "Signature Settings",
"signature.disable": "Disable signatures",

View File

@@ -5,16 +5,10 @@
"votes-are-public": "All Votes Are Public",
"thresholds": "Activity Thresholds",
"min-rep-downvote": "Minimum reputation to downvote posts",
"downvotes-per-day": "Downvotes per day (set to 0 for unlimited downvotes)",
"downvotes-per-user-per-day": "Downvotes per user per day (set to 0 for unlimited downvotes)",
"min-rep-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",
"min-rep-cover-picture": "Minimum reputation to add \"Cover Picture\" to user profile",
"flags": "Flag Settings",
"flags.limit-per-target": "Maximum number of times something can be flagged",
"flags.limit-per-target-placeholder": "Default: 0"
"min-rep-cover-picture": "Minimum reputation to add \"Cover Picture\" to user profile"
}

View File

@@ -1,9 +0,0 @@
{
"notifications": "التنبيهات",
"chat-messages": "Chat Messages",
"play-sound": "Play",
"incoming-message": "Incoming Message",
"outgoing-message": "Outgoing Message",
"upload-new-sound": "Upload New Sound",
"saved": "Settings Saved"
}

View File

@@ -1,10 +1,10 @@
{
"tag": "Tag Settings",
"link-to-manage": "Manage Tags",
"min-per-topic": "Minimum Tags per Topic",
"max-per-topic": "Maximum Tags per Topic",
"min-length": "Minimum Tag Length",
"max-length": "Maximum Tag Length",
"goto-manage": "Click here to visit the tag management page.",
"related-topics": "Related Topics",
"max-related-topics": "Maximum related topics to display (if supported by theme)"
}

View File

@@ -9,7 +9,7 @@
"allow-login-with.email": "البريد الالكتروني فقط",
"account-settings": "إعدادت الحساب",
"gdpr_enabled": "Enable GDPR consent collection",
"gdpr_enabled_help": "When enabled, all new registrants will be required to explicitly give consent for data collection and usage under the <a href=\"https://ec.europa.eu/info/priorities/justice-and-fundamental-rights/data-protection/2018-reform-eu-data-protection-rules/eu-data-protection-rules_en\">General Data Protection Regulation (GDPR)</a>. <strong>Note</strong>: Enabling GDPR does not force pre-existing users to provide consent. To do so, you will need to install the GDPR plugin.",
"gdpr_enabled_help": "When enabled, all new registrants will be required to explicitly give consent for data collection and usage under the <a href=\"https://eugdpr.org/the-regulation/gdpr-faqs/\">General Data Protection Regulation (GDPR)</a>. <strong>Note</strong>: Enabling GDPR does not force pre-existing users to provide consent. To do so, you will need to install the GDPR plugin.",
"disable-username-changes": "عدم السماح بتغيير اسم المستخدم",
"disable-email-changes": "عدم السماح بتغيير البريد الالكتروني",
"disable-password-changes": "عدم السماح بتغيير كلمة المرور",

View File

@@ -138,13 +138,8 @@
"not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature",
"not-enough-reputation-min-rep-profile-picture": "You do not have enough reputation to add a profile picture",
"not-enough-reputation-min-rep-cover-picture": "You do not have enough reputation to add a cover picture",
"post-already-flagged": "You have already flagged this post",
"user-already-flagged": "You have already flagged this user",
"post-flagged-too-many-times": "This post has been flagged by others already",
"user-flagged-too-many-times": "This user has been flagged by others already",
"already-flagged": "لقد بلغت عن هذه المشاركة من قبل.",
"self-vote": "You cannot vote on your own post",
"too-many-downvotes-today": "You can only downvote %1 times a day",
"too-many-downvotes-today-user": "You can only downvote a user %1 times a day",
"reload-failed": "المنتدى واجه مشكلة أثناء إعادة التحميل: \"%1\". سيواصل المنتدى خدمة العملاء السابقين لكن يجب عليك إلغاء أي تغيير قمت به قبل إعادة التحميل.",
"registration-error": "حدث خطأ أثناء التسجيل",
"parse-error": "حدث خطأ ما أثناء تحليل استجابة الخادم",

View File

@@ -1,61 +1,56 @@
{
"state": "الحالة",
"reports": "Reports",
"first-reported": "First Reported",
"state": "State",
"reporter": "Reporter",
"reported-at": "Reported At",
"description": "Description",
"no-flags": "Hooray! No flags found.",
"assignee": "المحال إليه",
"update": "تحديث",
"updated": "تم التحديث",
"assignee": "Assignee",
"update": "Update",
"updated": "Updated",
"target-purged": "The content this flag referred to has been purged and is no longer available.",
"graph-label": "Daily Flags",
"quick-filters": "Quick Filters",
"filter-active": "There are one or more filters active in this list of flags",
"filter-reset": "ازالة الفلاتر",
"filters": "خيارات الفلتر",
"filter-reset": "Remove Filters",
"filters": "Filter Options",
"filter-reporterId": "Reporter UID",
"filter-targetUid": "Flagged UID",
"filter-type": "عنوان العلامة",
"filter-type-all": "كل المحتوي",
"filter-type-post": "مشاركة",
"filter-type-user": "مستخدم",
"filter-state": "الحالة",
"filter-type": "Flag Type",
"filter-type-all": "All Content",
"filter-type-post": "Post",
"filter-type-user": "User",
"filter-state": "State",
"filter-assignee": "Assignee UID",
"filter-cid": "Category",
"filter-quick-mine": "Assigned to me",
"filter-cid-all": "All categories",
"apply-filters": "Apply Filters",
"more-filters": "More Filters",
"quick-actions": "اجراءات سريعه",
"quick-links": "Quick Links",
"flagged-user": "Flagged User",
"view-profile": "مشاهدة الملف الشخصي",
"start-new-chat": "بدء محادثه جديده",
"view-profile": "View Profile",
"start-new-chat": "Start New Chat",
"go-to-target": "View Flag Target",
"assign-to-me": "Assign To Me",
"delete-post": "حذف المشاركة",
"purge-post": "Purge Post",
"restore-post": "استرجاع المشاركة",
"user-view": "مشاهدة الملف الشخصي",
"user-edit": "تعديل الملف الشخصي",
"user-view": "View Profile",
"user-edit": "Edit Profile",
"notes": "Flag Notes",
"add-note": "اضافة ملاحظة",
"add-note": "Add Note",
"no-notes": "No shared notes.",
"delete-note-confirm": "Are you sure you want to delete this flag note?",
"note-added": "Note Added",
"note-deleted": "Note Deleted",
"history": "Account &amp; Flag History",
"history": "Flag History",
"back": "Back to Flags List",
"no-history": "No flag history.",
"state-all": "All states",
"state-open": "New/Open",
"state-wip": "Work in Progress",
"state-resolved": "تم حلها",
"state-rejected": "تم رفضها",
"state-resolved": "Resolved",
"state-rejected": "Rejected",
"no-assignee": "Not Assigned",
"note-added": "Note Added",
"modal-title": "Report Inappropriate Content",
"modal-body": "Please specify your reason for flagging %1 %2 for review. Alternatively, use one of the quick report buttons if applicable.",

View File

@@ -30,7 +30,6 @@
"header.unread": "غير مقروء",
"header.tags": "وسم",
"header.popular": "الأكثر شهرة",
"header.top": "Top",
"header.users": "المستخدمين",
"header.groups": "المجموعات",
"header.chats": "المحادثات",
@@ -54,7 +53,6 @@
"posts": "المشاركات",
"best": "الأفضل",
"votes": "Votes",
"voters": "Voters",
"upvoters": "الموافقين",
"upvoted": "مصوت بالموجب",
"downvoters": "مصوتين بالسالب",

View File

@@ -1,7 +1,6 @@
{
"chat.chatting_with": "Chat with",
"chat.placeholder": "أكتب رسالة دردشة هنا، اضغط ENTER للإرسال",
"chat.scroll-up-alert": "You are looking at older messages, click here to go to most recent message.",
"chat.send": "أرسل",
"chat.no_active": "لا يوجد لديك دردشات نشطة.",
"chat.user_typing": "%1 يكتب رسالة...",
@@ -13,7 +12,6 @@
"chat.recent-chats": "آخر الدردشات",
"chat.contacts": "الأصدقاء",
"chat.message-history": "تاريخ الرسائل",
"chat.message-deleted": "Message Deleted",
"chat.options": "Chat options",
"chat.pop-out": "افتح الدردشة في نافذة خاصة",
"chat.minimize": "Minimize",
@@ -59,7 +57,6 @@
"composer.upload-file": "Upload File",
"composer.zen_mode": "Zen Mode",
"composer.select_category": "Select a category",
"composer.textarea.placeholder": "Enter your post content here, drag and drop images",
"bootbox.ok": "OK",
"bootbox.cancel": "إلغاء",
"bootbox.confirm": "تأكيد",

View File

@@ -35,7 +35,6 @@
"user_posted_to_dual": "<strong>%1</strong> and <strong>%2</strong> have posted replies to: <strong>%3</strong>",
"user_posted_to_multiple": "<strong>%1</strong> and %2 others have posted replies to: <strong>%3</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_started_following_you": "<strong>%1</strong> صار يتابعك.",
"user_started_following_you_dual": "<strong>%1</strong> and <strong>%2</strong> started following you.",
"user_started_following_you_multiple": "<strong>%1</strong> and %2 others started following you.",
@@ -43,9 +42,6 @@
"new_register_multiple": "There are <strong>%1</strong> registration requests awaiting review.",
"flag_assigned_to_you": "تم تخصيص العلامة 1% لك",
"post_awaiting_review": "Post awaiting review",
"profile-exported": "<strong>%1</strong> profile exported, click to download",
"posts-exported": "<strong>%1</strong> posts exported, click to download",
"uploads-exported": "<strong>%1</strong> uploads exported, click to download",
"email-confirmed": "تم التحقق من عنوان البريد الإلكتروني",
"email-confirmed-message": "شكرًا على إثبات صحة عنوان بريدك الإلكتروني. صار حسابك مفعلًا بالكامل.",
"email-confirm-error-message": "حدث خطأ أثناء التحقق من عنوان بريدك الإلكتروني. ربما رمز التفعيل خاطئ أو انتهت صلاحيته.",
@@ -57,7 +53,6 @@
"notificationType_upvote": "عندما يوافقك احدهم على منشورك",
"notificationType_new-topic": "When someone you follow posts a topic",
"notificationType_new-reply": "When a new reply is posted in a topic you are watching",
"notificationType_post-edit": "When a post is edited in a topic you are watching",
"notificationType_follow": "When someone starts following you",
"notificationType_new-chat": "When you receive a chat message",
"notificationType_group-invite": "When you receive a group invite",

View File

@@ -3,6 +3,5 @@
"tags": "الكلمات الدلالية",
"enter_tags_here": "Enter tags here, between %1 and %2 characters each.",
"enter_tags_here_short": "أدخل الكلمات الدلالية...",
"no_tags": "لا يوجد كلمات دلالية بعد.",
"select_tags": "Select Tags"
"no_tags": "لا يوجد كلمات دلالية بعد."
}

View File

@@ -36,11 +36,8 @@
"ban-ip": "Ban IP",
"view-history": "Edit History",
"bookmark_instructions": "اضغط هنا للعودة لأخر مشاركة مقروءة في الموضوع",
"flag-post": "Flag this post",
"flag-user": "Flag this user",
"already-flagged": "Already Flagged",
"view-flag-report": "View Flag Report",
"merged_message": "This topic has been merged into <a href=\"%1\">%2</a>",
"flag_title": "إشعار بمشاركة مخلة.",
"merged_message": "This topic has been merged into <a href=\"/topic/%1\">%2</a>",
"deleted_message": "هذه المشاركة محذوفة. فقط من لهم صلاحية الإشراف على ا لمشاركات يمكنهم معاينتها.",
"following_topic.message": "ستستلم تنبيها عند كل مشاركة جديدة في هذا الموضوع.",
"not_following_topic.message": "You will see this topic in the unread topics list, but you will not receive notifications when somebody posts to this topic.",
@@ -102,15 +99,11 @@
"fork_pid_count": "1% مشاركة محددة",
"fork_success": "تم إنشاء فرع للموضوع بنجاح! إضغط هنا لمعاينة الفرع.",
"delete_posts_instruction": "Click the posts you want to delete/purge",
"merge_topics_instruction": "Click the topics you want to merge or search for them",
"merge-topic-list-title": "List of topics to be merged",
"merge-options": "Merge options",
"merge-select-main-topic": "Select the main topic",
"merge-new-title-for-topic": "New title for topic",
"merge_topics_instruction": "Click the topics you want to merge",
"move_posts_instruction": "Click the posts you want to move",
"change_owner_instruction": "Click the posts you want to assign to another user",
"composer.title_placeholder": "أدخل عنوان موضوعك هنا...",
"composer.handle_placeholder": "Enter your name/handle here",
"composer.handle_placeholder": "اﻹسم",
"composer.discard": "نبذ التغييرات",
"composer.submit": "حفظ",
"composer.replying_to": "الرد على %1",
@@ -141,9 +134,6 @@
"diffs.no-revisions-description": "This post has <strong>%1</strong> revisions.",
"diffs.current-revision": "current revision",
"diffs.original-revision": "original revision",
"diffs.restore": "Restore this revision",
"diffs.restore-description": "A new revision will be appended to this post's edit history.",
"diffs.post-restored": "Post successfully restored to earlier revision",
"timeago_later": "%1 later",
"timeago_earlier": "%1 earlier"
}

View File

@@ -8,20 +8,13 @@
"email": "البريد الإلكتروني",
"confirm_email": "تأكيد عنوان البريد الإلكتروني",
"account_info": "معلومات الحساب",
"admin_actions_label": "Administrative Actions",
"ban_account": "حظر الحساب",
"ban_account_confirm": "هل تريد حقاً حظر هاذا العضو؟",
"unban_account": "إزالة حظر الحساب",
"delete_account": "حذف الحساب",
"delete_account_as_admin": "Delete <strong>Account</strong>",
"delete_content": "Delete Account <strong>Content</strong>",
"delete_all": "Delete <strong>Account</strong> and <strong>Content</strong>",
"delete_account_confirm": "Are you sure you want to anonymize your posts and delete your account?<br /><strong>This action is irreversible and you will not be able to recover any of your data</strong><br /><br />Enter your password to confirm that you wish to destroy this account.",
"delete_this_account_confirm": "Are you sure you want to delete this account while leaving its contents behind?<br /><strong>This action is irreversible, posts will be anonymized, and you will not be able to restore post associations with the deleted account</strong><br /><br />",
"delete_account_content_confirm": "Are you sure you want to delete this account's content (posts/topics/uploads)? <br /><strong>This action is irreversible and you will not be able to recover any data</strong><br /><br />",
"delete_all_confirm": "Are you sure you want to delete this account and all of its content (posts/topics/uploads)? <br /><strong>This action is irreversible and you will not be able to recover any data</strong><br /><br />",
"delete_account_confirm": "Are you sure you want to delete your account? <br /><strong>This action is irreversible and you will not be able to recover any of your data</strong><br /><br />Enter your password to confirm that you wish to destroy this account.",
"delete_this_account_confirm": "هل انت متأكد من رغبتك بحذف هذا الحساب؟ <br /> <strong>هذا الإجراء لا رجعة فيه ولن تتمكن من استرداد أي بيانات</strong><br /><br />",
"account-deleted": "تم حذف الحساب",
"account-content-deleted": "Account content deleted",
"fullname": "الاسم الكامل",
"website": "الموقع الإلكتروني",
"location": "الموقع",
@@ -151,7 +144,6 @@
"info.ban-history": "سجل الحظر الأحدث",
"info.no-ban-history": "هذا المستخدم لم يتم حظره مطلقا",
"info.banned-until": "محظور حتى %1",
"info.banned-expiry": "Expiry",
"info.banned-permanently": "محظور بشكل دائم",
"info.banned-reason-label": "سبب",
"info.banned-no-reason": "لم يتم إعطاء سبب.",
@@ -178,10 +170,7 @@
"consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account <strong>and</strong> your content, please contact the administrative team for this website.",
"consent.right_to_data_portability": "You have the Right to Data Portability",
"consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.",
"consent.export_profile": "Export Profile (.json)",
"consent.export-profile-success": "Exporting profile, you will get a notification when it is complete.",
"consent.export_profile": "Export Profile (.csv)",
"consent.export_uploads": "Export Uploaded Content (.zip)",
"consent.export-uploads-success": "Exporting uploads, you will get a notification when it is complete.",
"consent.export_posts": "Export Posts (.csv)",
"consent.export-posts-success": "Exporting posts, you will get a notification when it is complete."
"consent.export_posts": "Export Posts (.csv)"
}

View File

@@ -2,7 +2,6 @@
"events": "Събития",
"no-events": "Няма събития",
"control-panel": "Контролен панел за събитията",
"delete-events": "Изтриване на събитията",
"filters": "Филтри",
"filters-apply": "Прилагане на филтрите",
"filter-type": "Вид събитие",

View File

@@ -1,79 +0,0 @@
{
"forum-traffic": "Трафик на форума",
"page-views": "Преглеждания на страниците",
"unique-visitors": "Уникални посетители",
"new-users": "Нови потребители",
"posts": "Публикации",
"topics": "Теми",
"page-views-seven": "Последните 7 дни",
"page-views-thirty": "Последните 30 дни",
"page-views-last-day": "Последните 24 часа",
"page-views-custom": "Интервал по избор",
"page-views-custom-start": "Начална дата",
"page-views-custom-end": "Крайна дата",
"page-views-custom-help": "Въведете интервал от дати, за които искате да видите преглежданията на страниците. Ако не се появи календар за избор, можете да въведете датите във формат: <code>ГГГГ-ММ-ДД</code>",
"page-views-custom-error": "Моля, въведете правилен интервал от дати във формата: <code>ГГГГ-ММ-ДД</code>",
"stats.yesterday": "Вчера",
"stats.today": "Днес",
"stats.last-week": "Миналата седмица",
"stats.this-week": "Тази седмица",
"stats.last-month": "Миналия месец",
"stats.this-month": "Този месец",
"stats.all": "От началото",
"updates": "Обновления",
"running-version": "Вие използвате <strong>NodeBB версия <span id=\"version\">%1</span></strong>.",
"keep-updated": "Стремете се винаги да използвате най-новата версия на NodeBB, за да се възползвате от последните подобрения на сигурността и поправки на проблеми.",
"up-to-date": "<p>Вие използвате <strong>най-новата версия</strong> <i class=\"fa fa-check\"></i></p>",
"upgrade-available": "<p>Има нова версия (версия %1). Ако имате възможност, <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">обновете NodeBB</a>.</p>",
"prerelease-upgrade-available": "<p>Това е остаряла предварителна версия на NodeBB. Има нова версия (версия %1). Ако имате възможност, <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">обновете NodeBB</a>.</p>",
"prerelease-warning": "<p>Това е версия за <strong>предварителен преглед</strong> на NodeBB. Възможно е да има неочаквани неизправности. <i class=\"fa fa-exclamation-triangle\"></i></p>",
"running-in-development": "<span>Форумът работи в режим за разработчици, така че може да бъде уязвим. Моля, свържете се със системния си администратор.</span>",
"latest-lookup-failed": "<p>Не може да бъде извършена проверка за последната налична версия на NodeBB</p>",
"notices": "Забележки",
"restart-not-required": "Не се изисква рестартиране",
"restart-required": "Изисква се рестартиране",
"search-plugin-installed": "Добавката за търсене е инсталирана",
"search-plugin-not-installed": "Добавката за търсене не е инсталирана",
"search-plugin-tooltip": "Инсталирайте добавка за търсене от страницата с добавките, за да включите функционалността за търсене",
"control-panel": "Системен контрол",
"rebuild-and-restart": "Повторно изграждане и рестартиране",
"restart": "Рестартиране",
"restart-warning": "Повторното изграждане и рестартирането на NodeBB ще прекъснат всички връзки за няколко секунди.",
"restart-disabled": "Възможностите за повторно изграждане и рестартиране на NodeBB са изключени, тъй като изглежда, че NodeBB не се изпълнява чрез подходящия демон.",
"maintenance-mode": "Режим на профилактика",
"maintenance-mode-title": "Щракнете тук, за да зададете режим на профилактика на NodeBB",
"realtime-chart-updates": "Актуализации на таблиците в реално време",
"active-users": "Дейни потребители",
"active-users.users": "Потребители",
"active-users.guests": "Гости",
"active-users.total": "Общо",
"active-users.connections": "Връзки",
"anonymous-registered-users": "Анонимни към регистрирани потребители",
"anonymous": "Анонимни",
"registered": "Регистрирани",
"user-presence": "Присъствие на потребителите ",
"on-categories": "В списъка с категории",
"reading-posts": "Четящи публикации",
"browsing-topics": "Разглеждащи теми",
"recent": "Скорошни",
"unread": "Непрочетени",
"high-presence-topics": "Теми с най-голяма присъственост",
"graphs.page-views": "Преглеждания на страниците",
"graphs.page-views-registered": "Преглеждания на страниците от регистрирани потребители",
"graphs.page-views-guest": "Преглеждания на страниците от гости",
"graphs.page-views-bot": "Преглеждания на страниците от ботове",
"graphs.unique-visitors": "Уникални посетители",
"graphs.registered-users": "Регистрирани потребители",
"graphs.anonymous-users": "Анонимни потребители",
"last-restarted-by": "Последно рестартиране от",
"no-users-browsing": "Няма разглеждащи потребители"
}

View File

@@ -1,9 +1,7 @@
{
"you-are-on": "Вие сте на <strong>%1:%2</strong>",
"ip": "IP <strong>%1</strong>",
"you-are-on": "Информация — Вие сте на <strong>%1:%2</strong>",
"nodes-responded": "%1 възела отговориха в рамките на %2мсек!",
"host": "сървър",
"primary": "основен / изпълнение на задачите",
"pid": "ид. на процеса",
"nodejs": "nodejs",
"online": "на линия",

View File

@@ -11,7 +11,6 @@
"num-recent-replies": "Брой на скорошните отговори",
"ext-link": "Външна връзка",
"is-section": "Използване на тази категория като раздел",
"tag-whitelist": "Списък от разрешени етикети",
"upload-image": "Качване на изображение",
"delete-image": "Премахване",
"category-image": "Изображение на категорията",
@@ -27,8 +26,6 @@
"enable": "Включване",
"disable": "Изключване",
"edit": "Редактиране",
"analytics": "Анализи",
"view-category": "Преглед на категорията",
"select-category": "Изберете категория",
"set-parent-category": "Задайте базова категория",
@@ -66,6 +63,7 @@
"alert.create-success": "Категорията е създадена успешно!",
"alert.none-active": "Нямате активни категории.",
"alert.create": "Създаване на категория",
"alert.confirm-moderate": "<strong>Наистина ли искате да дадете правомощието за модериране на тази потребителска група?</strong> Тази група е публична и всеки може свободно да се присъедини към нея.",
"alert.confirm-purge": "<p class=\"lead\">Наистина ли искате да изтриете категорията „%1“?</p><h5><strong class=\"text-danger\">Внимание!</strong> Всички теми и публикации в тази категория ще бъдат изтрити!</h5> <p class=\"help-block\">Изтриването на категорията ще премахне всички теми и публикации, и ще изтрие категорията от базата данни. Ако искате да премахнете категорията <em>временно</em>, можете просто да я „изключите“.</p>",
"alert.purge-success": "Категорията е изтрита!",
"alert.copy-success": "Настройките са копирани!",
@@ -77,9 +75,7 @@
"alert.user-search": "Потърсете потребител тук…",
"alert.find-group": "Търсене на група",
"alert.group-search": "Потърсете група тук…",
"alert.not-enough-whitelisted-tags": "Разрешените етикети са по-малко от минимума. Трябва да създадете още разрешени етикети!",
"collapse-all": "Свиване на всички",
"expand-all": "Разгъване на всички",
"disable-on-create": "Изключване при създаване",
"no-matches": "Няма съвпадения"
"disable-on-create": "Изключване при създаване"
}

View File

@@ -8,9 +8,6 @@
"hidden": "Скрита",
"private": "Частна",
"edit": "Редактиране",
"delete": "Изтриване",
"privileges": "Правомощия",
"download-csv": "CSV",
"search-placeholder": "Търсене",
"create": "Създаване на група",
"description-placeholder": "Кратко описание на групата",

View File

@@ -1,9 +1,8 @@
{
"global": "Глобални",
"admin": "Администратор",
"global.no-users": "Няма глобални правомощия за отделни потребители.",
"group-privileges": "Правомощия за групите",
"user-privileges": "Правомощия за потребителите",
"edit-privileges": "Редактиране на правомощията",
"chat": "Разговор",
"upload-images": "Качване на изображения",
"upload-files": "Качване на файлове",
@@ -32,21 +31,5 @@
"downvote-posts": "Отрицателно гласуване за публикации",
"delete-topics": "Изтриване на теми",
"purge": "Изчистване",
"moderate": "Модериране",
"admin-dashboard": "Табло",
"admin-categories": "Категории",
"admin-privileges": "Правомощия",
"admin-users": "Потребители",
"admin-settings": "Настройки",
"alert.confirm-moderate": "<strong>Наистина ли искате да дадете правомощието за модериране на тази потребителска група?</strong> Тази група е публична и всеки може свободно да се присъедини към нея.",
"alert.confirm-save": "Моля, потвърдете желанието си да запазите тези правомощия",
"alert.saved": "Промените по правомощията са запазени и приложени",
"alert.confirm-discard": "Наистина ли искате да отхвърлите промените по правомощията?",
"alert.discarded": "Промените по правомощията са отхвърлени",
"alert.confirm-copyToAll": "Наистина ли искате да приложите този набор от правомощия към <strong>всички категории</strong>?",
"alert.confirm-copyToAllGroup": "Наистина ли искате да приложите набора от правомощия на таи група към <strong>всички категории</strong>?",
"alert.confirm-copyToChildren": "Наистина ли искате да приложите този набор от правомощия към <strong>всички по-долни (дъщерни) категории</strong>?",
"alert.confirm-copyToChildrenGroup": "Наистина ли искате да приложите набора от правомощия на таи група към <strong>всички по-долни (дъщерни) категории</strong>?",
"alert.no-undo": "<em>Това действие е необратимо.</em>"
"moderate": "Модериране"
}

View File

@@ -3,16 +3,17 @@
"bg-color": "Цвят на фона",
"text-color": "Цвят на текста",
"create-modify": "Създаване и редактиране на етикети",
"description": "Изберете етикетите чрез щракване или влачене. Използвайте <code>CTRL</code>, за да изберете няколко етикета.",
"description": "Изберете етикетите чрез щракване или влачене. Използвайте „Shift“, за да изберете няколко етикета.",
"create": "Създаване на етикет",
"modify": "Редактиране на етикети",
"rename": "Преименуване на етикети",
"delete": "Изтриване на избраните етикети",
"search": "Търсене на етикети…",
"settings": "Настройки за етикетите",
"settings": "Натиснете <a href=\"%1\">тук</a>, за да отворите страницата с настройки на етикета.",
"name": "Име на етикета",
"alerts.editing": "Редактиране на етикет(и)",
"alerts.editing-multiple": "Редактиране на множество етикети",
"alerts.editing-x": "Редактиране на етикета „%1“",
"alerts.confirm-delete": "Наистина ли искате да изтриете избраните етикети?",
"alerts.update-success": "Етикетът е променен!"
}

View File

@@ -12,9 +12,8 @@
"unban": "Деблокиране на потребителя/ите",
"reset-lockout": "Нулиране на заключването",
"reset-flags": "Анулиране на докладите",
"delete": "Изтриване на <strong>потребителя/ите</strong>",
"delete-content": "Изтриване на <strong>съдържанието</strong> на потребителя/ите",
"purge": "Изтриване на <strong>потребителя/ите</strong> и <strong>съдържанието</strong>",
"delete": "Изтриване на потребителя/ите",
"purge": "Изтриване на потребителя/ите и съдържанието",
"download-csv": "Сваляне във формат „CSV“",
"manage-groups": "Управление на групите",
"add-group": "Добавяне на група",
@@ -94,11 +93,9 @@
"alerts.validate-email-success": "Е-пощите са проверени",
"alerts.validate-force-password-reset-success": "Паролата на потребителя (или паролите на потребителите) беше подновена и сесията му беше прекратена.",
"alerts.password-reset-confirm": "Искате ли да изпратите е-писмо/а за възстановяване на паролата на този/тези потребител(и)?",
"alerts.confirm-delete": "<strong>ВНИМАНИЕ!</strong><p>Наистина ли искате да изтриете <strong>потребителя/ите</strong>?</p> <p>Това действие е необратимо! Ще бъде изтрит само профилът на потребителя/ите, неговите/техните публикациите и теми ще останат.</p>",
"alerts.confirm-delete": "<b>ВНИМАНИЕ!</b><br/>Наистина ли искате да изтриете потребителя/ите?<br/> Това действие е необратимо! Ще бъде изтрит само профилът на потребителя/ите, неговите/техните публикациите и теми ще останат.",
"alerts.delete-success": "Потребителят/ите е/са изтрит(и)!",
"alerts.confirm-delete-content": "<strong>ВНИМАНИЕ!</strong><p>Наистина ли искате да изтриете <strong>съдържанието</strong> на този потребител или тези потребители?</p> <p>Това действие е необратимо! Профилите на потребителите ще останат, но всички техни публикации и теми ще бъдат изтрити.</p>",
"alerts.delete-content-success": "Съдържанието на потребителя/ите е изтрито!",
"alerts.confirm-purge": "<strong>ВНИМАНИЕ!</strong><p>Наистина ли искате да изтриете <strong>потребителя/ите и неговото/тяхното съдържание</strong>?</p> <p>Това действие е необратимо! Всички потребителски данни и съдържание ще бъдат заличени!</p>",
"alerts.confirm-purge": "<b>ВНИМАНИЕ!</b><br/>Наистина ли искате да изтриете потребителя/ите?<br/> Това действие е необратимо! Всички потребителски данни и съдържание ще бъдат заличени!",
"alerts.create": "Създаване на потребител",
"alerts.button-create": "Създаване",
"alerts.button-cancel": "Отказ",
@@ -108,5 +105,5 @@
"alerts.prompt-email": "Е-пощи: ",
"alerts.email-sent-to": "Беше изпратено е-писмо за потвърждение до %1",
"alerts.x-users-found": "Намерени потребители: %1 (%2 секунди)"
"alerts.x-users-found": "Намерени потребители: %1! Търсенето отне %2 милисекунди."
}

View File

@@ -1,6 +1,11 @@
{
"dashboard": "Табло",
"section-general": "Общи",
"general/dashboard": "Табло",
"general/homepage": "Начало",
"general/navigation": "Навигация",
"general/languages": "Езици",
"general/sounds": "Звуци",
"general/social": "Обществени",
"section-manage": "Управление",
"manage/categories": "Категории",
@@ -17,22 +22,17 @@
"section-settings": "Настройки",
"settings/general": "Общи",
"settings/homepage": "Начална страница",
"settings/navigation": "Навигация",
"settings/reputation": "Репутация и доклади",
"settings/reputation": "Репутация",
"settings/email": "Е-поща",
"settings/user": "Потребители",
"settings/group": "Групи",
"settings/user": "Потребител",
"settings/group": "Група",
"settings/guest": "Гости",
"settings/uploads": "Качвания",
"settings/languages": "Езици",
"settings/post": "Публикации",
"settings/chat": "Разговори",
"settings/post": "Публикация",
"settings/chat": "Разговор",
"settings/pagination": "Странициране",
"settings/tags": "Етикети",
"settings/notifications": "Известия",
"settings/sounds": "Звуци",
"settings/social": "Обществени",
"settings/cookies": "Бисквитки",
"settings/web-crawler": "Обхождач на уеб страници",
"settings/sockets": "Сокети",

View File

@@ -15,20 +15,14 @@
"headers.acah": "Заглавки за разрешаване на управлението на достъпа",
"hsts": "Стриктна транспортна сигурност",
"hsts.enabled": "Включване на HSTS (препоръчително)",
"hsts.maxAge": "Максимална възраст на HSTS",
"hsts.subdomains": "Включване на поддомейните в заглавката на HSTS",
"hsts.preload": "Позволяване на предварителното зареждане на заглавката на HSTS",
"hsts.help": "Ако това е включено, за този уеб ще бъде настроена заглавка за HSTS. Можете да изберете дали да включите поддомейните и дали за заредите предварително флаговете в заглавката си. Ако не знаете какво да направите, най-добре не избирайте нищо. <a href=\"%1\">Още информация<i class=\"fa fa-external-link\"></i></a>",
"traffic-management": "Управление на трафика",
"traffic.help": "NodeBB използва модул, който автоматично отказва заявките в натоварените моменти. Можете да настроите поведението тук, въпреки че стойностите по подразбиране са добра отправна точка.",
"traffic.help": "NodeBB има вграден модул, който автоматично отказва заявките в натоварените моменти. Можете да настроите поведението тук, въпреки че стойностите по подразбиране са добра отправна точка.",
"traffic.enable": "Включване на управлението на трафика",
"traffic.event-lag": "Граница на забавяне в цикъла на събитията (в милисекунди)",
"traffic.event-lag-help": "Намаляването на тази стойност ще намали времето за изчакване при зареждане на страници, но също така ще предизвика по-често показване на съобщението „прекомерно натоварване“ на повече потребители. (Нужно е рестартиране.)",
"traffic.lag-check-interval": "Интервал на проверка (в милисекунди)",
"traffic.lag-check-interval-help": "Намаляването на тази стойност ще направи NodeBB по-чувствителен към скоковете в натовареността, но може и да направи проверката твърде чувствителна. (Нужно е рестартиране.)",
"sockets.settings": "Настройки за WebSocket",
"sockets.max-attempts": "Максимален брой опити за повторно свързване",
"sockets.default-placeholder": "По подразбиране: %1",
"sockets.delay": "Забавяне при повторно свързване"
"traffic.lag-check-interval-help": "Намаляването на тази стойност ще направи NodeBB по-чувствителен към скоковете в натовареността, но може и да направи проверката твърде чувствителна. (Нужно е рестартиране.)"
}

View File

@@ -1,8 +1,6 @@
{
"site-settings": "Настройки на уеб сайта",
"title": "Заглавие на уеб сайта",
"title.short": "Кратко заглавие",
"title.short-placeholder": "Ако не е посочено кратко заглавие, ще бъде използвано заглавието на уеб сайта",
"title.url": "Адрес",
"title.url-placeholder": "Адресът на заглавието на уеб сайта",
"title.url-help": "При щракване върху заглавието, потребителите ще бъдат изпратени на този адрес. Ако бъде оставено празно, потребителите ще бъдат изпращани на началната страница на форума.",
@@ -33,9 +31,5 @@
"outgoing-links": "Изходящи връзки",
"outgoing-links.warning-page": "Показване на предупредителна страница при щракване върху външни връзки",
"search-default-sort-by": "Подредба по подразбиране при търсене",
"outgoing-links.whitelist": "Домейни, за които да не се показва предупредителната страница",
"site-colors": "Мета-данни за цвета на уеб сайта",
"theme-color": "Цвят на темата",
"background-color": "Фонов цвят",
"background-color-help": "Цвят, който да се използва като фон за началния екран, когато уеб сайтът е инсталиран като приложение"
"outgoing-links.whitelist": "Домейни, за които да не се показва предупредителната страница"
}

View File

@@ -3,7 +3,6 @@
"private-groups": "Частни групи",
"private-groups.help": "Ако е включено, присъединяването към групи ще изисква одобрение от собственик на групата. <em>(По подразбиране: включено)</em>",
"private-groups.warning": "<strong>Внимание!</strong> Ако това е изключено и имате частни групи, те автоматично ще станат публични.",
"allow-multiple-badges": "Позволяване на множество значки",
"allow-multiple-badges-help": "Това може да се използва, за да позволи на потребителите да избират множество значки за групите. Изисква поддържа на теми.",
"max-name-length": "Минимална дължина на името на група",
"max-title-length": "Максимална дължина на заглавието на група",

View File

@@ -1,8 +0,0 @@
{
"home-page": "Начална страница",
"description": "Изберете коя страница да бъде показана, когато потребителите отидат на главния адрес на форума.",
"home-page-route": "Път на началната страница",
"custom-route": "Персонализиран път",
"allow-user-home-pages": "Разрешаване на потребителските начални страници",
"home-page-title": "Заглавие на началната страница (по подразбиране: „Начало“)"
}

View File

@@ -1,6 +0,0 @@
{
"language-settings": "Езикови настройки",
"description": "Езикът по подразбиране определя езиковите настройки за всички потребители, които посещават Вашия форум. <br />Отделните потребители могат да сменят езика си от страницата с настройки на профила си.",
"default-language": "Език по подразбиране",
"auto-detect": "Автоматично разпознаване на езика за гостите"
}

View File

@@ -1,23 +0,0 @@
{
"icon": "Иконка:",
"change-icon": "промяна",
"route": "Маршрут:",
"tooltip": "Подсказка:",
"text": "Текст:",
"text-class": "Текстов клас: <small>незадължително</small>",
"class": "Клас: <small>незадължително</small>",
"id": "Идентификатор: <small>незадължително</small>",
"properties": "Свойства:",
"groups": "Групи:",
"open-new-window": "Отваряне в нов прозорец",
"btn.delete": "Изтриване",
"btn.disable": "Изключване",
"btn.enable": "Включване",
"available-menu-items": "Налични елементи за менюто",
"custom-route": "Персонализиран маршрут",
"core": "ядро",
"plugin": "добавка"
}

View File

@@ -2,5 +2,6 @@
"notifications": "Известия",
"welcome-notification": "Приветствено известие",
"welcome-notification-link": "Връзка за приветственото известие",
"welcome-notification-uid": "Потр. ид. за приветственото известие"
"welcome-notification-uid": "Потр. ид. за приветственото известие",
"notification-alert-timeout": "Време за изчакване преди премахване на уведомяването за известие"
}

View File

@@ -42,7 +42,6 @@
"unread.cutoff": "Възраст на публикациите, след която те не се показват в непрочетените (в брой дни)",
"unread.min-track-last": "Минимален брой публикации в темата, след което да започва следене на последно прочетената",
"recent": "Настройки за скорошните",
"recent.max-topics": "Максимален брой теми в скорошните",
"recent.categoryFilter.disable": "Изключване на филтрирането на темите в пренебрегваните категории на страницата /recent",
"signature": "Настройки за подписите",
"signature.disable": "Забраняване на подписите",

View File

@@ -5,16 +5,10 @@
"votes-are-public": "Всички гласувания са публични",
"thresholds": "Ограничения на дейността",
"min-rep-downvote": "Минимална репутация, необходима за отрицателно гласуване за публикации",
"downvotes-per-day": "Отрицателни гласувания за ден (задайте 0 за неограничен брой)",
"downvotes-per-user-per-day": "Отрицателни гласувания за потребител за ден (задайте 0 за неограничен брой)",
"min-rep-flag": "Минимална репутация, необходима за докладване на публикации",
"min-rep-website": "Минимална репутация, необходима за добавяне на полето „Уебсайт“ към профила на потребителя",
"min-rep-aboutme": "Минимална репутация, необходима за добавяне на полето „За мен“ към профила на потребителя",
"min-rep-signature": "Минимална репутация, необходима за добавяне на полето „Подпис“ към профила на потребителя",
"min-rep-profile-picture": "Минимална репутация, необходима за добавяне на профилна снимка към профила на потребителя",
"min-rep-cover-picture": "Минимална репутация, необходима за добавяне на снимка на корицата към профила на потребителя",
"flags": "Настройки за докладите",
"flags.limit-per-target": "Максимален брой докладвания на едно и също нещо",
"flags.limit-per-target-placeholder": "По подразбиране: 0"
"min-rep-cover-picture": "Минимална репутация, необходима за добавяне на снимка на корицата към профила на потребителя"
}

View File

@@ -1,5 +0,0 @@
{
"post-sharing": "Споделяне на публикации",
"info-plugins-additional": "Добавките могат да добавят допълнителни мрежи за споделяне на публикации.",
"save-success": "Мрежите за споделяне на публикации са запазени успешно!"
}

View File

@@ -1,9 +0,0 @@
{
"notifications": "Известия",
"chat-messages": "Съобщения в разговори",
"play-sound": "Пускане",
"incoming-message": "Входящо съобщение",
"outgoing-message": "Изходящо съобщение",
"upload-new-sound": "Качване на нов звук",
"saved": "Настройките са запазени"
}

View File

@@ -1,10 +1,10 @@
{
"tag": "Настройки за етикетите",
"link-to-manage": "Управление на етикетите",
"min-per-topic": "Минимален брой етикети за тема",
"max-per-topic": "Максимален брой етикети за тема",
"min-length": "Минимална дължина на етикетите",
"max-length": "Максимална дължина на етикетите",
"goto-manage": "Щракнете тук, за да отворите страницата за управление на етикетите.",
"related-topics": "Свързани теми",
"max-related-topics": "Максимален брой свързани теми, които да бъдат показвани (ако това се поддържа от темата)"
}

View File

@@ -9,7 +9,7 @@
"allow-login-with.email": "Само е-поща",
"account-settings": "Настройки на акаунта",
"gdpr_enabled": "Включване на искането за съгласие с ОРЗД",
"gdpr_enabled_help": "Ако това е включено, всички новорегистрирани потребители ще бъдат задължени изрично да дадат съгласието си за събирането на данни и статистики за потреблението според <a href=\"https://ec.europa.eu/info/priorities/justice-and-fundamental-rights/data-protection/2018-reform-eu-data-protection-rules/eu-data-protection-rules_en\">Общия регламент относно защитата на данните (ОРЗД)</a>. <strong>Забележка</strong>: Включването на ОРЗД не задължава съществуващите потребители да дадат съгласието си. Ако искате това, ще трябва да инсталирате добавката за ОРЗД (GDPR).",
"gdpr_enabled_help": "Ако това е включено, всички новорегистрирани потребители ще бъдат задължени изрично да дадат съгласието си за събирането на данни и статистики за потреблението според <a href=\"https://eugdpr.org/the-regulation/gdpr-faqs/\">Общия регламент относно защитата на данните (ОРЗД)</a>. <strong>Забележка</strong>: Включването на ОРЗД не задължава съществуващите потребители да дадат съгласието си. Ако искате това, ще трябва да инсталирате добавката за ОРЗД (GDPR).",
"disable-username-changes": "Забраняване на промяната на потребителското име",
"disable-email-changes": "Забраняване на промяната на е-пощата",
"disable-password-changes": "Забраняване на промяната на паролата",

View File

@@ -138,13 +138,8 @@
"not-enough-reputation-min-rep-signature": "Нямате достатъчно репутация, за да добавите подпис",
"not-enough-reputation-min-rep-profile-picture": "Нямате достатъчно репутация, за да добавите снимка на профила си",
"not-enough-reputation-min-rep-cover-picture": "Нямате достатъчно репутация, за да добавите снимка на корицата",
"post-already-flagged": "Вече сте докладвали тази публикация",
"user-already-flagged": "Вече сте докладвали този потребител",
"post-flagged-too-many-times": "Тази публикация вече е докладвана от други хора",
"user-flagged-too-many-times": "Този потребител вече е докладван от други хора",
"already-flagged": "Вече сте докладвали тази публикация",
"self-vote": "Не можете да гласувате за собствената си публикация",
"too-many-downvotes-today": "Можете да гласувате отрицателно не повече от %1 пъти на ден",
"too-many-downvotes-today-user": "Можете да гласувате отрицателно за потребител не повече от %1 пъти на ден",
"reload-failed": "NodeBB срещна проблем при презареждането: „%1“. NodeBB ще продължи да поддържа съществуващите клиентски ресурси, но Вие трябва да отмените последните си действия преди презареждането.",
"registration-error": "Грешка при регистрацията",
"parse-error": "Нещо се обърка при прочитането на отговора на сървъра",

View File

@@ -1,7 +1,8 @@
{
"state": "Състояние",
"reports": "Доклади",
"first-reported": "Първо докладване",
"reporter": "Докладвал",
"reported-at": "Докладвано на",
"description": "Описание",
"no-flags": "Ура! Няма намерени доклади.",
"assignee": "Назначен",
"update": "Обновяване",
@@ -25,17 +26,12 @@
"filter-quick-mine": "Назначени на мен",
"filter-cid-all": "Всички категории",
"apply-filters": "Прилагане на филтрите",
"more-filters": "Още филтри",
"quick-actions": "Бързи действия",
"quick-links": "Бързи връзки",
"flagged-user": "Докладван потребител",
"view-profile": "Преглед на профила",
"start-new-chat": "Започване на нов разговор",
"go-to-target": "Преглед на целта на доклада",
"assign-to-me": "Назначаване на мен",
"delete-post": "Изтриване на публикацията",
"purge-post": "Изчистване на публикацията",
"restore-post": "Възстановяване на публикацията",
"user-view": "Преглед на профила",
"user-edit": "Редактиране на профила",
@@ -43,11 +39,9 @@
"notes": "Бележки към доклада",
"add-note": "Добавяне на бележка",
"no-notes": "Няма споделени бележки.",
"delete-note-confirm": "Наистина ли искате да изтриете тази бележка към доклада?",
"note-added": "Бележката е добавена",
"note-deleted": "Бележката е изтрита",
"history": "Акаунт и история на докладванията",
"history": "История на доклада",
"back": "Обратно към списъка с доклади",
"no-history": "Няма история на доклада.",
"state-all": "Всички състояния",
@@ -56,6 +50,7 @@
"state-resolved": "Разрешен",
"state-rejected": "Отхвърлен",
"no-assignee": "Без назначение",
"note-added": "Бележката е добавена",
"modal-title": "Докладване на неуместно съдържание",
"modal-body": "Моля, посочете причината за докладването на %1 %2 за преглед. Или използвайте някой от бутоните за бързо докладване, ако са приложими.",

View File

@@ -30,7 +30,6 @@
"header.unread": "Непрочетени",
"header.tags": "Етикети",
"header.popular": "Популярни",
"header.top": "Най-харесвани",
"header.users": "Потребители",
"header.groups": "Групи",
"header.chats": "Разговори",
@@ -54,7 +53,6 @@
"posts": "Публ.",
"best": "Най-добри",
"votes": "Гласове",
"voters": "Гласували",
"upvoters": "Гласували положително",
"upvoted": "С положителни гласове",
"downvoters": "Гласували отрицателно",

View File

@@ -1,7 +1,6 @@
{
"chat.chatting_with": "Разговор с",
"chat.placeholder": "Въведете съобщението тук и натиснете Ентер за изпращане",
"chat.scroll-up-alert": "В момента разглеждате по-стари съобщения. Щракнете тук, за да се прехвърлите към най-новото съобщение.",
"chat.send": "Изпращане",
"chat.no_active": "Нямате текущи разговори.",
"chat.user_typing": "%1 пише...",
@@ -13,7 +12,6 @@
"chat.recent-chats": "Скорошни разговори",
"chat.contacts": "Контакти",
"chat.message-history": "История на съобщенията",
"chat.message-deleted": "Съобщението е изтрито",
"chat.options": "Настройки на разговора",
"chat.pop-out": "Отделяне на разговора в прозорец",
"chat.minimize": "Намаляване",
@@ -59,7 +57,6 @@
"composer.upload-file": "Качване на файл",
"composer.zen_mode": "Режим Дзен",
"composer.select_category": "Изберете категория",
"composer.textarea.placeholder": "Въведете съдържанието на публикацията си тук. Можете също да влачите и пускате снимки.",
"bootbox.ok": "Добре",
"bootbox.cancel": "Отказ",
"bootbox.confirm": "Потвърждаване",

View File

@@ -35,7 +35,6 @@
"user_posted_to_dual": "<strong>%1</strong> и <strong>%2</strong> публикуваха отговори на: <strong>%3</strong>",
"user_posted_to_multiple": "<strong>%1</strong> и %2 други публикуваха отговори на: <strong>%3</strong>",
"user_posted_topic": "<strong>%1</strong> публикува нова тема: <strong>%2</strong>",
"user_edited_post": "<strong>%1</strong> редактира публикация в <strong>%2</strong>",
"user_started_following_you": "<strong>%1</strong> започна да Ви следва.",
"user_started_following_you_dual": "<strong>%1</strong> и <strong>%2</strong> започнаха да Ви следват.",
"user_started_following_you_multiple": "<strong>%1</strong> и %2 започнаха да Ви следват.",
@@ -43,9 +42,6 @@
"new_register_multiple": "Има <strong>%1</strong> заявки за регистрация, които очакват да бъдат прегледани.",
"flag_assigned_to_you": "<strong>Докладът %1</strong> беше назначен на Вас",
"post_awaiting_review": "Публикацията чака да бъде прегледана",
"profile-exported": "Профилът на <strong>%1</strong> е изнесен, щракнете за сваляне",
"posts-exported": "Публикациите на <strong>%1</strong> са изнесени, щракнете за сваляне",
"uploads-exported": "Качванията на <strong>%1</strong> са изнесени, щракнете за сваляне",
"email-confirmed": "Е-пощата беше потвърдена",
"email-confirmed-message": "Благодарим Ви, че потвърдихте е-пощата си. Акаунтът Ви е вече напълно активиран.",
"email-confirm-error-message": "Възникна проблем при потвърждаването на е-пощата Ви. Може кодът да е грешен или давността му да е изтекла.",
@@ -57,7 +53,6 @@
"notificationType_upvote": "Когато някой гласува положително за Ваша публикация",
"notificationType_new-topic": "Когато някой, когото следвате, публикува тема",
"notificationType_new-reply": "Когато бъде публикуван нов отговор в тема, която следвате",
"notificationType_post-edit": "Когато бъде редактирана публикация в тема, която следите",
"notificationType_follow": "Когато някой започне да Ви следва",
"notificationType_new-chat": "Когато получите съобщение в разговор",
"notificationType_group-invite": "Когато получите покана за група",

View File

@@ -3,6 +3,5 @@
"tags": "Етикети",
"enter_tags_here": "Тук въведете етикети, всеки между %1 и %2 знака.",
"enter_tags_here_short": "Въведете етикети...",
"no_tags": "Все още няма етикети.",
"select_tags": "Изберете етикети"
"no_tags": "Все още няма етикети."
}

View File

@@ -36,11 +36,8 @@
"ban-ip": "Блокиране на IP адреса",
"view-history": "История на редакциите",
"bookmark_instructions": "Щракнете тук, за да се върнете към последно прочетената публикация в тази тема.",
"flag-post": "Докладване на тази публикация",
"flag-user": "Докладване на този потребител",
"already-flagged": "Вече е докладвано",
"view-flag-report": "Преглед на доклада",
"merged_message": "Тази тема беше слята в <a href=\"%1\">%2</a>",
"flag_title": "Докладване на тази публикация до модератор",
"merged_message": "Тази тема беше слята в <a href=\"/topic/%1\">%2</a>",
"deleted_message": "Темата е изтрита. Само потребители с права за управление на темите могат да я видят.",
"following_topic.message": "Вече ще получавате известия когато някой публикува коментар в тази тема.",
"not_following_topic.message": "Ще виждате тази тема в списъка с непрочетени теми, но няма да получавате известия, когато хората публикуват нещо в нея.",
@@ -102,15 +99,11 @@
"fork_pid_count": "Избрани публикации: %1",
"fork_success": "Темата е разделена успешно! Натиснете тук, за да преминете към отделената тема.",
"delete_posts_instruction": "Натиснете публикациите, които искате да изтриете/изчистите",
"merge_topics_instruction": "Щракнете върху темите, които искате да слеете, или ги потърсете",
"merge-topic-list-title": "Списък от темите, които ще бъдат слети",
"merge-options": "Настройки за сливането",
"merge-select-main-topic": "Изберете основната тема",
"merge-new-title-for-topic": "Ново заглавие за темата",
"merge_topics_instruction": "Натиснете темите, които искате да слеете",
"move_posts_instruction": "Натиснете публикациите, които искате да преместите",
"change_owner_instruction": "Натиснете публикациите, които искате да прехвърлите на друг потребител",
"composer.title_placeholder": "Въведете заглавието на темата си тук...",
"composer.handle_placeholder": "Въведете името тук",
"composer.handle_placeholder": "Име",
"composer.discard": "Отхвърляне",
"composer.submit": "Публикуване",
"composer.replying_to": "Отговор на %1",
@@ -137,13 +130,10 @@
"stale.reply_anyway": "Отговаряне в тази тема въпреки това",
"link_back": "Отговор: [%1](%2)",
"diffs.title": "История на редакциите",
"diffs.description": "Тази публикация има <strong>%1</strong> версии. Щракнете върху някоя от версиите по-долу, за да видите съдържанието ѝ в съответния момент.",
"diffs.no-revisions-description": "Тази публикация има <strong>%1</strong> версии.",
"diffs.description": "Тази публикация има <strong>%1</strong> варианта. Щракнете върху някоя от версиите по-долу, за да видите съдържанието ѝ в съответния момент.",
"diffs.no-revisions-description": "Тази публикация има <strong>%1</strong> варианта.",
"diffs.current-revision": "текуща версия",
"diffs.original-revision": "оригинална версия",
"diffs.restore": "Възстановяване на тази версия",
"diffs.restore-description": "Към историята на редакциите на тази публикация ще бъде добавена нова версия.",
"diffs.post-restored": "Публикацията е възстановена успешно до по-ранна версия",
"timeago_later": "%1 по-късно",
"timeago_earlier": "%1 по-рано"
}

View File

@@ -8,20 +8,13 @@
"email": "Е-поща",
"confirm_email": "Потвърдете е-пощата",
"account_info": "Информация за акаунта",
"admin_actions_label": "Административни действия",
"ban_account": "Блокиране на акаунта",
"ban_account_confirm": "Наистина ли искате да блокирате този потребител?",
"unban_account": "Деблокиране на акаунта",
"delete_account": "Изтриване на акаунта",
"delete_account_as_admin": "Изтриване на <strong>акаунта</strong>",
"delete_content": "Изтриване на <strong>съдържанието</strong> на акаунта",
"delete_all": "Изтриване на <strong>акаунта</strong> и <strong>съдържанието</strong>",
"delete_account_confirm": "Наистина ли искате да направите публикациите си анонимни и да изтриете акаунта си? <br /><strong>Това действие е необратимо и няма да можете да възстановите нищо от данните си.</strong><br /><br />Въведете паролата си, за да потвърдите, че искате да унищожите този акаунт.",
"delete_this_account_confirm": "Наистина ли искате да изтриете този акаунт, но да оставите съдържанието му?<br /><strong>Това действие е необратимо. Публикациите ще бъдат превърнати в анонимни и вече няма да можете да възстановите връзката между публикациите и изтрития акаунт</strong><br /><br />",
"delete_account_content_confirm": "Наистина ли искате да изтриете съдържанието (публикации/теми/качвания) на този акаунт? <br /><strong>Това действие е необратимо и няма да можете да възстановите нищо от данните.</strong><br /><br />",
"delete_all_confirm": "Наистина ли искате да изтриете този акаунт и цялото му съдържание (публикации/теми/качвания)? <br /><strong>Това действие е необратимо и няма да можете да възстановите нищо от данните.</strong><br /><br />",
"delete_account_confirm": "Наистина ли искате да изтриете акаунта си? <br /><strong>Това действие е необратимо и няма да можете да възстановите нищо от данните си.</strong><br /><br />Въведете паролата си, за да потвърдите, че искате да унищожите този акаунт.",
"delete_this_account_confirm": "Наистина ли искате да изтриете този акаунт? <br /><strong>Това действие е необратимо и няма да можете да възстановите нищо от данните си.</strong><br /><br />",
"account-deleted": "Акаунтът е изтрит",
"account-content-deleted": "Съдържанието на акаунта е изтрито",
"fullname": "Пълно име",
"website": "Уеб сайт",
"location": "Местоположение",
@@ -151,7 +144,6 @@
"info.ban-history": "Скорошна история на блокиранията",
"info.no-ban-history": "Този потребител никога не е бил блокиран",
"info.banned-until": "Блокиран до %1",
"info.banned-expiry": "Давност",
"info.banned-permanently": "Блокиран за постоянно",
"info.banned-reason-label": "Причина",
"info.banned-no-reason": "Няма посочена причина.",
@@ -178,10 +170,7 @@
"consent.right_to_erasure_description": "Във всеки един момент можете да оттеглите съгласието си за събиране и/или обработка на данни, като изтриете акаунта си. Вашият профил може да бъде изтрит, но публикуваното от Вас съдържание ще остане. Ако искате да изтриете както акаунта, така <strong>и</strong> съдържанието, публикувано от Вас, моля, свържете се с администрационния екип на уеб сайта.",
"consent.right_to_data_portability": "Имате право на пренос на данни",
"consent.right_to_data_portability_description": "Можете да изискате от нас всички събрани за Вас и акаунта Ви данни в машинен формат. Можете да направите това като натиснете съответния бутон по-долу.",
"consent.export_profile": "Изнасяне на профила (.json)",
"consent.export-profile-success": "Изнасяне на профила… Ще получите известие, когато е готово.",
"consent.export_profile": "Изнасяне на профила (.csv)",
"consent.export_uploads": "Изнасяне на каченото съдържание (.zip)",
"consent.export-uploads-success": "Изнасяне на каченото съдържание… Ще получите известие, когато е готово.",
"consent.export_posts": "Изнасяне на публикациите (.csv)",
"consent.export-posts-success": "Изнасяне на публикациите… Ще получите известие, когато е готово."
"consent.export_posts": "Изнасяне на публикациите (.csv)"
}

View File

@@ -2,7 +2,6 @@
"events": "Events",
"no-events": "There are no events",
"control-panel": "Events Control Panel",
"delete-events": "Delete Events",
"filters": "Filters",
"filters-apply": "Apply Filters",
"filter-type": "Event Type",

View File

@@ -1,9 +1,7 @@
{
"you-are-on": "You are on <strong>%1:%2</strong>",
"ip": "IP <strong>%1</strong>",
"you-are-on": "Info - You are on <strong>%1:%2</strong>",
"nodes-responded": "%1 nodes responded within %2ms!",
"host": "host",
"primary": "primary / run jobs",
"pid": "pid",
"nodejs": "nodejs",
"online": "online",

View File

@@ -11,7 +11,6 @@
"num-recent-replies": "# of Recent Replies",
"ext-link": "External Link",
"is-section": "Treat this category as a section",
"tag-whitelist": "Tag Whitelist",
"upload-image": "Upload Image",
"delete-image": "Remove",
"category-image": "Category Image",
@@ -27,8 +26,6 @@
"enable": "Enable",
"disable": "Disable",
"edit": "Edit",
"analytics": "Analytics",
"view-category": "View category",
"select-category": "Select Category",
"set-parent-category": "Set Parent Category",
@@ -66,6 +63,7 @@
"alert.create-success": "Category successfully created!",
"alert.none-active": "You have no active categories.",
"alert.create": "Create a Category",
"alert.confirm-moderate": "<strong>Are you sure you wish to grant the moderation privilege to this user group?</strong> This group is public, and any users can join at will.",
"alert.confirm-purge": "<p class=\"lead\">Do you really want to purge this category \"%1\"?</p><h5><strong class=\"text-danger\">Warning!</strong> All topics and posts in this category will be purged!</h5> <p class=\"help-block\">Purging a category will remove all topics and posts, and delete the category from the database. If you want to remove a category <em>temporarily</em>, you'll want to \"disable\" the category instead.</p>",
"alert.purge-success": "Category purged!",
"alert.copy-success": "Settings Copied!",
@@ -77,9 +75,7 @@
"alert.user-search": "Search for a user here...",
"alert.find-group": "Find a Group",
"alert.group-search": "Search for a group here...",
"alert.not-enough-whitelisted-tags": "Whitelisted tags are less than minimum tags, you need to create more whitelisted tags!",
"collapse-all": "Collapse All",
"expand-all": "Expand All",
"disable-on-create": "Disable on create",
"no-matches": "No matches"
"disable-on-create": "Disable on create"
}

View File

@@ -9,7 +9,7 @@
"default": "System default",
"default-help": "<em>System default</em> means the user has not explicitly overridden the global forum setting for digests, which is currently: &quot;<strong>%1</strong>&quot;",
"resend": "Resend Digest",
"resend-all-confirm": "Are you sure you wish to manually execute this digest run?",
"resend-all-confirm": "Are you sure you wish to mnually execute this digest run?",
"resent-single": "Manual digest resend completed",
"resent-day": "Daily digest resent",
"resent-week": "Weekly digest resent",

View File

@@ -8,9 +8,6 @@
"hidden": "Hidden",
"private": "Private",
"edit": "Edit",
"delete": "Delete",
"privileges": "Privileges",
"download-csv": "CSV",
"search-placeholder": "Search",
"create": "Create Group",
"description-placeholder": "A short description about your group",

View File

@@ -1,9 +1,8 @@
{
"global": "Global",
"admin": "Admin",
"global.no-users": "No user-specific global privileges.",
"group-privileges": "Group Privileges",
"user-privileges": "User Privileges",
"edit-privileges": "Edit Privileges",
"chat": "Chat",
"upload-images": "Upload Images",
"upload-files": "Upload Files",
@@ -32,21 +31,5 @@
"downvote-posts": "Downvote Posts",
"delete-topics": "Delete Topics",
"purge": "Purge",
"moderate": "Moderate",
"admin-dashboard": "Dashboard",
"admin-categories": "Categories",
"admin-privileges": "Privileges",
"admin-users": "Users",
"admin-settings": "Settings",
"alert.confirm-moderate": "<strong>Are you sure you wish to grant the moderation privilege to this user group?</strong> This group is public, and any users can join at will.",
"alert.confirm-save": "Please confirm your intention to save these privileges",
"alert.saved": "Privilege changes saved and applied",
"alert.confirm-discard": "Are you sure you wish to discard your privilege changes?",
"alert.discarded": "Privilege changes discarded",
"alert.confirm-copyToAll": "Are you sure you wish to apply this privilege set to <strong>all categories</strong>?",
"alert.confirm-copyToAllGroup": "Are you sure you wish to apply this group's privilege set to <strong>all categories</strong>?",
"alert.confirm-copyToChildren": "Are you sure you wish to apply this privilege set to <strong>all descendant (child) categories</strong>?",
"alert.confirm-copyToChildrenGroup": "Are you sure you wish to apply this group's privilege set to <strong>all descendant (child) categories</strong>?",
"alert.no-undo": "<em>This action cannot be undone.</em>"
"moderate": "Moderate"
}

View File

@@ -3,16 +3,17 @@
"bg-color": "Background Colour",
"text-color": "Text Colour",
"create-modify": "Create & Modify Tags",
"description": "Select tags by clicking or dragging, use <code>CTRL</code> to select multiple tags.",
"description": "Select tags via clicking and/or dragging, use shift to select multiple.",
"create": "Create Tag",
"modify": "Modify Tags",
"rename": "Rename Tags",
"delete": "Delete Selected Tags",
"search": "Search for tags...",
"settings": "Tags Settings",
"settings": "Click <a href=\"%1\">here</a> to visit the tag settings page.",
"name": "Tag Name",
"alerts.editing": "Editing tag(s)",
"alerts.editing-multiple": "Editing multiple tags",
"alerts.editing-x": "Editing \"%1\" tag",
"alerts.confirm-delete": "Do you want to delete the selected tags?",
"alerts.update-success": "Tag Updated!"
}

View File

@@ -12,9 +12,8 @@
"unban": "Unban User(s)",
"reset-lockout": "Reset Lockout",
"reset-flags": "Reset Flags",
"delete": "Delete <strong>User(s)</strong>",
"delete-content": "Delete User(s) <strong>Content</strong>",
"purge": "Delete <strong>User(s)</strong> and <strong>Content</strong>",
"delete": "Delete User(s)",
"purge": "Delete User(s) and Content",
"download-csv": "Download CSV",
"manage-groups": "Manage Groups",
"add-group": "Add Group",
@@ -94,11 +93,9 @@
"alerts.validate-email-success": "Emails validated",
"alerts.validate-force-password-reset-success": "User(s) passwords have been reset and their existing sessions have been revoked.",
"alerts.password-reset-confirm": "Do you want to send password reset email(s) to these user(s)?",
"alerts.confirm-delete": "<strong>Warning!</strong><p>Do you really want to delete <strong>user(s)</strong>?</p><p>This action is not reversible! Only the user account will be deleted, their posts and topics will remain.</p>",
"alerts.confirm-delete": "<b>Warning!</b><br/>Do you really want to delete user(s)?<br/> This action is not reversable! Only the user account will be deleted, their posts and topics will remain.",
"alerts.delete-success": "User(s) Deleted!",
"alerts.confirm-delete-content": "<strong>Warning!</strong><p>Do you really want to delete these user(s) <strong>content</strong>?</p><p>This action is not reversible! The users' accounts will remain, but their posts and topics will be deleted.</p>",
"alerts.delete-content-success": "User(s) Content Deleted!",
"alerts.confirm-purge": "<strong>Warning!</strong><p>Do you really want to delete <strong>user(s) and their content</strong>?</p><p>This action is not reversible! All user data and content will be erased!</p>",
"alerts.confirm-purge": "<b>Warning!</b><br/>Do you really want to delete user(s) and their content?<br/> This action is not reversable! All user data and content will be erased!",
"alerts.create": "Create User",
"alerts.button-create": "Create",
"alerts.button-cancel": "Cancel",
@@ -108,5 +105,5 @@
"alerts.prompt-email": "Emails: ",
"alerts.email-sent-to": "An invitation email has been sent to %1",
"alerts.x-users-found": "%1 user(s) found, (%2 seconds)"
"alerts.x-users-found": "%1 user(s) found! Search took %2 ms."
}

View File

@@ -1,6 +1,11 @@
{
"dashboard": "Dashboard",
"section-general": "General",
"general/dashboard": "Dashboard",
"general/homepage": "Home Page",
"general/navigation": "Navigation",
"general/languages": "Languages",
"general/sounds": "Sounds",
"general/social": "Social",
"section-manage": "Manage",
"manage/categories": "Categories",
@@ -17,22 +22,17 @@
"section-settings": "Settings",
"settings/general": "General",
"settings/homepage": "Home Page",
"settings/navigation": "Navigation",
"settings/reputation": "Reputation & Flags",
"settings/reputation": "Reputation",
"settings/email": "Email",
"settings/user": "Users",
"settings/group": "Groups",
"settings/user": "User",
"settings/group": "Group",
"settings/guest": "Guests",
"settings/uploads": "Uploads",
"settings/languages": "Languages",
"settings/post": "Posts",
"settings/chat": "Chats",
"settings/post": "Post",
"settings/chat": "Chat",
"settings/pagination": "Pagination",
"settings/tags": "Tags",
"settings/notifications": "Notifications",
"settings/sounds": "Sounds",
"settings/social": "Social",
"settings/cookies": "Cookies",
"settings/web-crawler": "Web Crawler",
"settings/sockets": "Sockets",

View File

@@ -15,20 +15,14 @@
"headers.acah": "Access-Control-Allow-Headers",
"hsts": "Strict Transport Security",
"hsts.enabled": "Enabled HSTS (recommended)",
"hsts.maxAge": "HSTS Max Age",
"hsts.subdomains": "Include subdomains in HSTS header",
"hsts.preload": "Allow preloading of HSTS header",
"hsts.help": "If enabled, an HSTS header will be set for this site. You can elect to include subdomains and preloading flags in your header. If in doubt, you can leave these unchecked. <a href=\"%1\">More information <i class=\"fa fa-external-link\"></i></a>",
"traffic-management": "Traffic Management",
"traffic.help": "NodeBB uses a module that automatically denies requests in high-traffic situations. You can tune these settings here, although the defaults are a good starting point.",
"traffic.help": "NodeBB deploys equipped with a module that automatically denies requests in high-traffic situations. You can tune these settings here, although the defaults are a good starting point.",
"traffic.enable": "Enable Traffic Management",
"traffic.event-lag": "Event Loop Lag Threshold (in milliseconds)",
"traffic.event-lag-help": "Lowering this value decreases wait times for page loads, but will also show the \"excessive load\" message to more users. (Restart required)",
"traffic.lag-check-interval": "Check Interval (in milliseconds)",
"traffic.lag-check-interval-help": "Lowering this value causes NodeBB to become more sensitive to spikes in load, but may also cause the check to become too sensitive. (Restart required)",
"sockets.settings": "WebSocket Settings",
"sockets.max-attempts": "Max Reconnection Attempts",
"sockets.default-placeholder": "Default: %1",
"sockets.delay": "Reconnection Delay"
"traffic.lag-check-interval-help": "Lowering this value causes NodeBB to become more sensitive to spikes in load, but may also cause the check to become too sensitive. (Restart required)"
}

View File

@@ -1,8 +1,6 @@
{
"site-settings": "Site Settings",
"title": "Site Title",
"title.short": "Short Title",
"title.short-placeholder": "If no short title is specified, the site title will be used",
"title.url": "URL",
"title.url-placeholder": "The URL of the site title",
"title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.",
@@ -33,9 +31,5 @@
"outgoing-links": "Outgoing Links",
"outgoing-links.warning-page": "Use Outgoing Links Warning Page",
"search-default-sort-by": "Search default sort by",
"outgoing-links.whitelist": "Domains to whitelist for bypassing the warning page",
"site-colors": "Site Color Metadata",
"theme-color": "Theme Color",
"background-color": "Background Color",
"background-color-help": "Color used for splash screen background when website is installed as a PWA"
"outgoing-links.whitelist": "Domains to whitelist for bypassing the warning page"
}

View File

@@ -3,7 +3,6 @@
"private-groups": "Private Groups",
"private-groups.help": "If enabled, joining of groups requires the approval of the group owner <em>(Default: enabled)</em>",
"private-groups.warning": "<strong>Beware!</strong> If this option is disabled and you have private groups, they automatically become public.",
"allow-multiple-badges": "Allow Multiple Badges",
"allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.",
"max-name-length": "Maximum Group Name Length",
"max-title-length": "Maximum Group Title Length",

View File

@@ -1,8 +0,0 @@
{
"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\")"
}

View File

@@ -1,23 +0,0 @@
{
"icon": "Icon:",
"change-icon": "change",
"route": "Route:",
"tooltip": "Tooltip:",
"text": "Text:",
"text-class": "Text Class: <small>optional</small>",
"class": "Class: <small>optional</small>",
"id": "ID: <small>optional</small>",
"properties": "Properties:",
"groups": "Groups:",
"open-new-window": "Open in a new window",
"btn.delete": "Delete",
"btn.disable": "Disable",
"btn.enable": "Enable",
"available-menu-items": "Available Menu Items",
"custom-route": "Custom Route",
"core": "core",
"plugin": "plugin"
}

View File

@@ -2,5 +2,6 @@
"notifications": "Notifications",
"welcome-notification": "Welcome Notification",
"welcome-notification-link": "Welcome Notification Link",
"welcome-notification-uid": "Welcome Notification User (UID)"
"welcome-notification-uid": "Welcome Notification User (UID)",
"notification-alert-timeout": "Notification Alert Timeout"
}

View File

@@ -42,7 +42,6 @@
"unread.cutoff": "Unread cutoff days",
"unread.min-track-last": "Minimum posts in topic before tracking last read",
"recent": "Recent Settings",
"recent.max-topics": "Maximum topics on /recent",
"recent.categoryFilter.disable": "Disable filtering of topics in ignored categories on the /recent page",
"signature": "Signature Settings",
"signature.disable": "Disable signatures",

View File

@@ -5,16 +5,10 @@
"votes-are-public": "All Votes Are Public",
"thresholds": "Activity Thresholds",
"min-rep-downvote": "Minimum reputation to downvote posts",
"downvotes-per-day": "Downvotes per day (set to 0 for unlimited downvotes)",
"downvotes-per-user-per-day": "Downvotes per user per day (set to 0 for unlimited downvotes)",
"min-rep-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",
"min-rep-cover-picture": "Minimum reputation to add \"Cover Picture\" to user profile",
"flags": "Flag Settings",
"flags.limit-per-target": "Maximum number of times something can be flagged",
"flags.limit-per-target-placeholder": "Default: 0"
"min-rep-cover-picture": "Minimum reputation to add \"Cover Picture\" to user profile"
}

View File

@@ -1,5 +0,0 @@
{
"post-sharing": "Post Sharing",
"info-plugins-additional": "Plugins can add additional networks for sharing posts.",
"save-success": "Successfully saved Post Sharing Networks!"
}

View File

@@ -1,10 +1,10 @@
{
"tag": "Tag Settings",
"link-to-manage": "Manage Tags",
"min-per-topic": "Minimum Tags per Topic",
"max-per-topic": "Maximum Tags per Topic",
"min-length": "Minimum Tag Length",
"max-length": "Maximum Tag Length",
"goto-manage": "Click here to visit the tag management page.",
"related-topics": "Related Topics",
"max-related-topics": "Maximum related topics to display (if supported by theme)"
}

View File

@@ -9,7 +9,7 @@
"allow-login-with.email": "Email Only",
"account-settings": "Account Settings",
"gdpr_enabled": "Enable GDPR consent collection",
"gdpr_enabled_help": "When enabled, all new registrants will be required to explicitly give consent for data collection and usage under the <a href=\"https://ec.europa.eu/info/priorities/justice-and-fundamental-rights/data-protection/2018-reform-eu-data-protection-rules/eu-data-protection-rules_en\">General Data Protection Regulation (GDPR)</a>. <strong>Note</strong>: Enabling GDPR does not force pre-existing users to provide consent. To do so, you will need to install the GDPR plugin.",
"gdpr_enabled_help": "When enabled, all new registrants will be required to explicitly give consent for data collection and usage under the <a href=\"https://eugdpr.org/the-regulation/gdpr-faqs/\">General Data Protection Regulation (GDPR)</a>. <strong>Note</strong>: Enabling GDPR does not force pre-existing users to provide consent. To do so, you will need to install the GDPR plugin.",
"disable-username-changes": "Disable username changes",
"disable-email-changes": "Disable email changes",
"disable-password-changes": "Disable password changes",

View File

@@ -138,13 +138,8 @@
"not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature",
"not-enough-reputation-min-rep-profile-picture": "You do not have enough reputation to add a profile picture",
"not-enough-reputation-min-rep-cover-picture": "You do not have enough reputation to add a cover picture",
"post-already-flagged": "You have already flagged this post",
"user-already-flagged": "You have already flagged this user",
"post-flagged-too-many-times": "This post has been flagged by others already",
"user-flagged-too-many-times": "This user has been flagged by others already",
"already-flagged": "You have already flagged this post",
"self-vote": "You cannot vote on your own post",
"too-many-downvotes-today": "You can only downvote %1 times a day",
"too-many-downvotes-today-user": "You can only downvote a user %1 times a day",
"reload-failed": "\"%1\" রিলোড করতে সমস্যা হয়েছে। রিলোডের পূর্বে যা করা হয়েছিল সেটি আনডু করা সমীচীন। ",
"registration-error": "নিবন্ধন এরর!",
"parse-error": "Something went wrong while parsing server response",

View File

@@ -1,7 +1,8 @@
{
"state": "State",
"reports": "Reports",
"first-reported": "First Reported",
"reporter": "Reporter",
"reported-at": "Reported At",
"description": "Description",
"no-flags": "Hooray! No flags found.",
"assignee": "Assignee",
"update": "Update",
@@ -25,17 +26,12 @@
"filter-quick-mine": "Assigned to me",
"filter-cid-all": "All categories",
"apply-filters": "Apply Filters",
"more-filters": "More Filters",
"quick-actions": "Quick Actions",
"quick-links": "Quick Links",
"flagged-user": "Flagged User",
"view-profile": "View Profile",
"start-new-chat": "Start New Chat",
"go-to-target": "View Flag Target",
"assign-to-me": "Assign To Me",
"delete-post": "Delete Post",
"purge-post": "Purge Post",
"restore-post": "Restore Post",
"user-view": "View Profile",
"user-edit": "Edit Profile",
@@ -43,11 +39,9 @@
"notes": "Flag Notes",
"add-note": "Add Note",
"no-notes": "No shared notes.",
"delete-note-confirm": "Are you sure you want to delete this flag note?",
"note-added": "Note Added",
"note-deleted": "Note Deleted",
"history": "Account &amp; Flag History",
"history": "Flag History",
"back": "Back to Flags List",
"no-history": "No flag history.",
"state-all": "All states",
@@ -56,6 +50,7 @@
"state-resolved": "Resolved",
"state-rejected": "Rejected",
"no-assignee": "Not Assigned",
"note-added": "Note Added",
"modal-title": "Report Inappropriate Content",
"modal-body": "Please specify your reason for flagging %1 %2 for review. Alternatively, use one of the quick report buttons if applicable.",

View File

@@ -30,7 +30,6 @@
"header.unread": "অপঠিত",
"header.tags": "ট্যাগ",
"header.popular": "জনপ্রিয়",
"header.top": "Top",
"header.users": "ব্যবহারকারীগণ",
"header.groups": "Groups",
"header.chats": "কথোপকথন",
@@ -54,7 +53,6 @@
"posts": "পোস্টগুলি",
"best": "Best",
"votes": "Votes",
"voters": "Voters",
"upvoters": "Upvoters",
"upvoted": "Upvoted",
"downvoters": "Downvoters",

View File

@@ -1,7 +1,6 @@
{
"chat.chatting_with": "Chat with",
"chat.placeholder": "এখানে আপনার বার্তা লিখুন। পাঠানোর জন্য Enter চাপুন",
"chat.scroll-up-alert": "You are looking at older messages, click here to go to most recent message.",
"chat.send": "প্রেরন করুন",
"chat.no_active": "আপনার কোন সচল কথোপকথন নেই",
"chat.user_typing": "%1 লিখছেন",
@@ -13,7 +12,6 @@
"chat.recent-chats": "সাম্প্রতিক চ্যাটসমূহ",
"chat.contacts": "কন্টাক্টস",
"chat.message-history": "মেসেজ হিস্টোরী",
"chat.message-deleted": "Message Deleted",
"chat.options": "Chat options",
"chat.pop-out": "চ্যাট উইন্ডো আলাদা করুন",
"chat.minimize": "Minimize",
@@ -59,7 +57,6 @@
"composer.upload-file": "Upload File",
"composer.zen_mode": "Zen Mode",
"composer.select_category": "Select a category",
"composer.textarea.placeholder": "Enter your post content here, drag and drop images",
"bootbox.ok": "OK",
"bootbox.cancel": "Cancel",
"bootbox.confirm": "Confirm",

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