Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
53af9ec2e8 | ||
|
|
3a49b52ca1 | ||
|
|
f2d5b2c2fe | ||
|
|
c1042ee471 | ||
|
|
53c13976b6 | ||
|
|
1cdb6af5dc | ||
|
|
b0a44d866b | ||
|
|
77b767331b | ||
|
|
ab5035f4e2 | ||
|
|
2555d72c84 | ||
|
|
213582df8b | ||
|
|
543336070a |
@@ -7,6 +7,7 @@ node_modules/
|
||||
logs/
|
||||
/public/templates
|
||||
/public/uploads
|
||||
/public/sounds
|
||||
/public/vendor
|
||||
/public/src/modules/string.js
|
||||
.idea/
|
||||
|
||||
@@ -14,8 +14,6 @@
|
||||
"exports": "always-multiline",
|
||||
"functions": "never"
|
||||
}],
|
||||
"no-return-await": "off",
|
||||
"no-constant-condition": "off",
|
||||
"no-empty": ["error", { "allowEmptyCatch": true }],
|
||||
"no-underscore-dangle": "off",
|
||||
"no-console": "off",
|
||||
@@ -24,7 +22,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",
|
||||
@@ -43,7 +41,6 @@
|
||||
}],
|
||||
"no-else-return": [ "error", { "allowElseIf": true } ],
|
||||
"operator-linebreak": [ "error", "after" ],
|
||||
"arrow-parens": ["error", "as-needed", { "requireForBlockBody": true }],
|
||||
|
||||
// ES6
|
||||
"prefer-rest-params": "off",
|
||||
@@ -121,7 +118,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",
|
||||
|
||||
2
.github/ISSUE_TEMPLATE.md
vendored
@@ -10,8 +10,6 @@
|
||||
- **NodeBB version:**
|
||||
- **NodeBB git hash:**
|
||||
<!-- (to find your git hash, execute `git rev-parse HEAD` from the main NodeBB directory) -->
|
||||
- **Installed NodeBB Plugins:**
|
||||
<!-- (to find installed plugins run ./nodebb plugins) -->
|
||||
- **Database type:** mongo, redis, or postgres
|
||||
- **Database version:**
|
||||
<!-- `mongod --version`, `redis-server --version`, or `postgres --version` -->
|
||||
|
||||
9
.github/SECURITY.md
vendored
@@ -1,9 +0,0 @@
|
||||
# Reporting a security vulnerability
|
||||
|
||||
NodeBB's security policy is based around a private bug bounty program. Users are invited to explore NodeBB for vulnerabilities, and report them to the NodeBB team so that they can be patched.
|
||||
|
||||
If you have found a security vulnerability, **do not post it onto our GitHub tracker**. Some security vulnerabilities are quite severe and discretion is recommended. Email the NodeBB Security Team at security@nodebb.org, instead.
|
||||
|
||||
# Bug Bounty Program
|
||||
|
||||
Security vulnerability reports may be eligible for a bounty based on severity and confirmation from NodeBB team members. For full details regarding our bug bounty program, including the bounty amounts, please consult the following page: https://blog.nodebb.org/bounty
|
||||
4
.gitignore
vendored
@@ -1,4 +1,3 @@
|
||||
dist/
|
||||
yarn.lock
|
||||
npm-debug.log
|
||||
node_modules/
|
||||
@@ -28,6 +27,7 @@ pidfile
|
||||
# templates
|
||||
/public/templates
|
||||
|
||||
/public/sounds
|
||||
/public/uploads
|
||||
/test/uploads
|
||||
|
||||
@@ -66,5 +66,3 @@ test/files/normalise.jpg.png
|
||||
test/files/normalise-resized.jpg
|
||||
package-lock.json
|
||||
/package.json
|
||||
*.mongodb
|
||||
link-plugins.sh
|
||||
@@ -1,4 +0,0 @@
|
||||
reporter: dot
|
||||
timeout: 25000
|
||||
exit: true
|
||||
bail: true
|
||||
33
.travis.yml
@@ -4,43 +4,34 @@ services:
|
||||
- postgresql
|
||||
before_install:
|
||||
- cp install/package.json package.json
|
||||
- sudo apt-get update
|
||||
- sudo apt-get --yes remove postgresql\*
|
||||
- sudo apt-get install -y postgresql-12 postgresql-client-12
|
||||
- sudo cp /etc/postgresql/{9.6,12}/main/pg_hba.conf
|
||||
- sudo service postgresql restart 12
|
||||
before_script:
|
||||
- sleep 15 # wait for mongodb to be ready
|
||||
- "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' = '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\\\":0}\"; 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\\\":0}\"; 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
|
||||
sudo: false
|
||||
dist: xenial
|
||||
dist: trusty
|
||||
env:
|
||||
global:
|
||||
- PGUSER=postgres
|
||||
- PGPORT=5433
|
||||
- CXX=g++-4.8
|
||||
jobs:
|
||||
- "DB=mongodb TEST_ENV=production"
|
||||
- "DB=mongodb TEST_ENV=development"
|
||||
- "DB=redis TEST_ENV=production"
|
||||
- "DB=postgres TEST_ENV=production"
|
||||
- CXX=g++-4.8 DB=mongodb TEST_ENV=production
|
||||
- CXX=g++-4.8 DB=mongodb TEST_ENV=development
|
||||
- CXX=g++-4.8 DB=redis TEST_ENV=production
|
||||
- CXX=g++-4.8 DB=postgres TEST_ENV=production
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- mongodb-4.0-xenial
|
||||
- mongodb-3.4-trusty
|
||||
packages:
|
||||
- g++-4.8
|
||||
- mongodb-org-server
|
||||
postgresql: "9.5"
|
||||
node_js:
|
||||
- "14"
|
||||
- "12"
|
||||
- "10"
|
||||
- "8"
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
|
||||
814
.tx/config
@@ -251,106 +251,6 @@ trans.zh_CN = public/language/zh-CN/modules.json
|
||||
trans.zh_TW = public/language/zh-TW/modules.json
|
||||
type = KEYVALUEJSON
|
||||
|
||||
[nodebb.post-queue]
|
||||
file_filter = public/language/<lang>/post-queue.json
|
||||
source_file = public/language/en-GB/post-queue.json
|
||||
source_lang = en_GB
|
||||
trans.ar = public/language/ar/post-queue.json
|
||||
trans.bg = public/language/bg/post-queue.json
|
||||
trans.bn = public/language/bn/post-queue.json
|
||||
trans.cs = public/language/cs/post-queue.json
|
||||
trans.da = public/language/da/post-queue.json
|
||||
trans.de = public/language/de/post-queue.json
|
||||
trans.el = public/language/el/post-queue.json
|
||||
trans.en@pirate = public/language/en-x-pirate/post-queue.json
|
||||
trans.en_US = public/language/en-US/post-queue.json
|
||||
trans.es = public/language/es/post-queue.json
|
||||
trans.et = public/language/et/post-queue.json
|
||||
trans.fa_IR = public/language/fa-IR/post-queue.json
|
||||
trans.fi = public/language/fi/post-queue.json
|
||||
trans.fr = public/language/fr/post-queue.json
|
||||
trans.gl = public/language/gl/post-queue.json
|
||||
trans.he = public/language/he/post-queue.json
|
||||
trans.hr = public/language/hr/post-queue.json
|
||||
trans.hu = public/language/hu/post-queue.json
|
||||
trans.id = public/language/id/post-queue.json
|
||||
trans.it = public/language/it/post-queue.json
|
||||
trans.ja = public/language/ja/post-queue.json
|
||||
trans.ko = public/language/ko/post-queue.json
|
||||
trans.lt = public/language/lt/post-queue.json
|
||||
trans.lv = public/language/lv/post-queue.json
|
||||
trans.ms = public/language/ms/post-queue.json
|
||||
trans.nb = public/language/nb/post-queue.json
|
||||
trans.nl = public/language/nl/post-queue.json
|
||||
trans.pl = public/language/pl/post-queue.json
|
||||
trans.pt_BR = public/language/pt-BR/post-queue.json
|
||||
trans.pt_PT = public/language/pt-PT/post-queue.json
|
||||
trans.ro = public/language/ro/post-queue.json
|
||||
trans.ru = public/language/ru/post-queue.json
|
||||
trans.rw = public/language/rw/post-queue.json
|
||||
trans.sc = public/language/sc/post-queue.json
|
||||
trans.sk = public/language/sk/post-queue.json
|
||||
trans.sl = public/language/sl/post-queue.json
|
||||
trans.sr = public/language/sr/post-queue.json
|
||||
trans.sv = public/language/sv/post-queue.json
|
||||
trans.th = public/language/th/post-queue.json
|
||||
trans.tr = public/language/tr/post-queue.json
|
||||
trans.uk = public/language/uk/post-queue.json
|
||||
trans.vi = public/language/vi/post-queue.json
|
||||
trans.zh_CN = public/language/zh-CN/post-queue.json
|
||||
trans.zh_TW = public/language/zh-TW/post-queue.json
|
||||
type = KEYVALUEJSON
|
||||
|
||||
[nodebb.ip-blacklist]
|
||||
file_filter = public/language/<lang>/ip-blacklist.json
|
||||
source_file = public/language/en-GB/ip-blacklist.json
|
||||
source_lang = en_GB
|
||||
trans.ar = public/language/ar/ip-blacklist.json
|
||||
trans.bg = public/language/bg/ip-blacklist.json
|
||||
trans.bn = public/language/bn/ip-blacklist.json
|
||||
trans.cs = public/language/cs/ip-blacklist.json
|
||||
trans.da = public/language/da/ip-blacklist.json
|
||||
trans.de = public/language/de/ip-blacklist.json
|
||||
trans.el = public/language/el/ip-blacklist.json
|
||||
trans.en@pirate = public/language/en-x-pirate/ip-blacklist.json
|
||||
trans.en_US = public/language/en-US/ip-blacklist.json
|
||||
trans.es = public/language/es/ip-blacklist.json
|
||||
trans.et = public/language/et/ip-blacklist.json
|
||||
trans.fa_IR = public/language/fa-IR/ip-blacklist.json
|
||||
trans.fi = public/language/fi/ip-blacklist.json
|
||||
trans.fr = public/language/fr/ip-blacklist.json
|
||||
trans.gl = public/language/gl/ip-blacklist.json
|
||||
trans.he = public/language/he/ip-blacklist.json
|
||||
trans.hr = public/language/hr/ip-blacklist.json
|
||||
trans.hu = public/language/hu/ip-blacklist.json
|
||||
trans.id = public/language/id/ip-blacklist.json
|
||||
trans.it = public/language/it/ip-blacklist.json
|
||||
trans.ja = public/language/ja/ip-blacklist.json
|
||||
trans.ko = public/language/ko/ip-blacklist.json
|
||||
trans.lt = public/language/lt/ip-blacklist.json
|
||||
trans.lv = public/language/lv/ip-blacklist.json
|
||||
trans.ms = public/language/ms/ip-blacklist.json
|
||||
trans.nb = public/language/nb/ip-blacklist.json
|
||||
trans.nl = public/language/nl/ip-blacklist.json
|
||||
trans.pl = public/language/pl/ip-blacklist.json
|
||||
trans.pt_BR = public/language/pt-BR/ip-blacklist.json
|
||||
trans.pt_PT = public/language/pt-PT/ip-blacklist.json
|
||||
trans.ro = public/language/ro/ip-blacklist.json
|
||||
trans.ru = public/language/ru/ip-blacklist.json
|
||||
trans.rw = public/language/rw/ip-blacklist.json
|
||||
trans.sc = public/language/sc/ip-blacklist.json
|
||||
trans.sk = public/language/sk/ip-blacklist.json
|
||||
trans.sl = public/language/sl/ip-blacklist.json
|
||||
trans.sr = public/language/sr/ip-blacklist.json
|
||||
trans.sv = public/language/sv/ip-blacklist.json
|
||||
trans.th = public/language/th/ip-blacklist.json
|
||||
trans.tr = public/language/tr/ip-blacklist.json
|
||||
trans.uk = public/language/uk/ip-blacklist.json
|
||||
trans.vi = public/language/vi/ip-blacklist.json
|
||||
trans.zh_CN = public/language/zh-CN/ip-blacklist.json
|
||||
trans.zh_TW = public/language/zh-TW/ip-blacklist.json
|
||||
type = KEYVALUEJSON
|
||||
|
||||
[nodebb.register]
|
||||
file_filter = public/language/<lang>/register.json
|
||||
source_file = public/language/en-GB/register.json
|
||||
@@ -1950,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]
|
||||
@@ -2400,6 +2300,56 @@ trans.zh_CN = public/language/zh-CN/admin/manage/groups.json
|
||||
trans.zh_TW = public/language/zh-TW/admin/manage/groups.json
|
||||
type = KEYVALUEJSON
|
||||
|
||||
[nodebb.admin-manage-ip-blacklist]
|
||||
file_filter = public/language/<lang>/admin/manage/ip-blacklist.json
|
||||
source_file = public/language/en-GB/admin/manage/ip-blacklist.json
|
||||
source_lang = en_GB
|
||||
trans.ar = public/language/ar/admin/manage/ip-blacklist.json
|
||||
trans.bg = public/language/bg/admin/manage/ip-blacklist.json
|
||||
trans.bn = public/language/bn/admin/manage/ip-blacklist.json
|
||||
trans.cs = public/language/cs/admin/manage/ip-blacklist.json
|
||||
trans.da = public/language/da/admin/manage/ip-blacklist.json
|
||||
trans.de = public/language/de/admin/manage/ip-blacklist.json
|
||||
trans.el = public/language/el/admin/manage/ip-blacklist.json
|
||||
trans.en@pirate = public/language/en-x-pirate/admin/manage/ip-blacklist.json
|
||||
trans.en_US = public/language/en-US/admin/manage/ip-blacklist.json
|
||||
trans.es = public/language/es/admin/manage/ip-blacklist.json
|
||||
trans.et = public/language/et/admin/manage/ip-blacklist.json
|
||||
trans.fa_IR = public/language/fa-IR/admin/manage/ip-blacklist.json
|
||||
trans.fi = public/language/fi/admin/manage/ip-blacklist.json
|
||||
trans.fr = public/language/fr/admin/manage/ip-blacklist.json
|
||||
trans.gl = public/language/gl/admin/manage/ip-blacklist.json
|
||||
trans.he = public/language/he/admin/manage/ip-blacklist.json
|
||||
trans.hr = public/language/hr/admin/manage/ip-blacklist.json
|
||||
trans.hu = public/language/hu/admin/manage/ip-blacklist.json
|
||||
trans.id = public/language/id/admin/manage/ip-blacklist.json
|
||||
trans.it = public/language/it/admin/manage/ip-blacklist.json
|
||||
trans.ja = public/language/ja/admin/manage/ip-blacklist.json
|
||||
trans.ko = public/language/ko/admin/manage/ip-blacklist.json
|
||||
trans.lt = public/language/lt/admin/manage/ip-blacklist.json
|
||||
trans.lv = public/language/lv/admin/manage/ip-blacklist.json
|
||||
trans.ms = public/language/ms/admin/manage/ip-blacklist.json
|
||||
trans.nb = public/language/nb/admin/manage/ip-blacklist.json
|
||||
trans.nl = public/language/nl/admin/manage/ip-blacklist.json
|
||||
trans.pl = public/language/pl/admin/manage/ip-blacklist.json
|
||||
trans.pt_BR = public/language/pt-BR/admin/manage/ip-blacklist.json
|
||||
trans.pt_PT = public/language/pt-PT/admin/manage/ip-blacklist.json
|
||||
trans.ro = public/language/ro/admin/manage/ip-blacklist.json
|
||||
trans.ru = public/language/ru/admin/manage/ip-blacklist.json
|
||||
trans.rw = public/language/rw/admin/manage/ip-blacklist.json
|
||||
trans.sc = public/language/sc/admin/manage/ip-blacklist.json
|
||||
trans.sk = public/language/sk/admin/manage/ip-blacklist.json
|
||||
trans.sl = public/language/sl/admin/manage/ip-blacklist.json
|
||||
trans.sr = public/language/sr/admin/manage/ip-blacklist.json
|
||||
trans.sv = public/language/sv/admin/manage/ip-blacklist.json
|
||||
trans.th = public/language/th/admin/manage/ip-blacklist.json
|
||||
trans.tr = public/language/tr/admin/manage/ip-blacklist.json
|
||||
trans.uk = public/language/uk/admin/manage/ip-blacklist.json
|
||||
trans.vi = public/language/vi/admin/manage/ip-blacklist.json
|
||||
trans.zh_CN = public/language/zh-CN/admin/manage/ip-blacklist.json
|
||||
trans.zh_TW = public/language/zh-TW/admin/manage/ip-blacklist.json
|
||||
type = KEYVALUEJSON
|
||||
|
||||
[nodebb.admin-manage-privileges]
|
||||
file_filter = public/language/<lang>/admin/manage/privileges.json
|
||||
source_file = public/language/en-GB/admin/manage/privileges.json
|
||||
@@ -2450,6 +2400,56 @@ trans.zh_CN = public/language/zh-CN/admin/manage/privileges.json
|
||||
trans.zh_TW = public/language/zh-TW/admin/manage/privileges.json
|
||||
type = KEYVALUEJSON
|
||||
|
||||
[nodebb.admin-manage-post-queue]
|
||||
file_filter = public/language/<lang>/admin/manage/post-queue.json
|
||||
source_file = public/language/en-GB/admin/manage/post-queue.json
|
||||
source_lang = en_GB
|
||||
trans.ar = public/language/ar/admin/manage/post-queue.json
|
||||
trans.bg = public/language/bg/admin/manage/post-queue.json
|
||||
trans.bn = public/language/bn/admin/manage/post-queue.json
|
||||
trans.cs = public/language/cs/admin/manage/post-queue.json
|
||||
trans.da = public/language/da/admin/manage/post-queue.json
|
||||
trans.de = public/language/de/admin/manage/post-queue.json
|
||||
trans.el = public/language/el/admin/manage/post-queue.json
|
||||
trans.en@pirate = public/language/en-x-pirate/admin/manage/post-queue.json
|
||||
trans.en_US = public/language/en-US/admin/manage/post-queue.json
|
||||
trans.es = public/language/es/admin/manage/post-queue.json
|
||||
trans.et = public/language/et/admin/manage/post-queue.json
|
||||
trans.fa_IR = public/language/fa-IR/admin/manage/post-queue.json
|
||||
trans.fi = public/language/fi/admin/manage/post-queue.json
|
||||
trans.fr = public/language/fr/admin/manage/post-queue.json
|
||||
trans.gl = public/language/gl/admin/manage/post-queue.json
|
||||
trans.he = public/language/he/admin/manage/post-queue.json
|
||||
trans.hr = public/language/hr/admin/manage/post-queue.json
|
||||
trans.hu = public/language/hu/admin/manage/post-queue.json
|
||||
trans.id = public/language/id/admin/manage/post-queue.json
|
||||
trans.it = public/language/it/admin/manage/post-queue.json
|
||||
trans.ja = public/language/ja/admin/manage/post-queue.json
|
||||
trans.ko = public/language/ko/admin/manage/post-queue.json
|
||||
trans.lt = public/language/lt/admin/manage/post-queue.json
|
||||
trans.lv = public/language/lv/admin/manage/post-queue.json
|
||||
trans.ms = public/language/ms/admin/manage/post-queue.json
|
||||
trans.nb = public/language/nb/admin/manage/post-queue.json
|
||||
trans.nl = public/language/nl/admin/manage/post-queue.json
|
||||
trans.pl = public/language/pl/admin/manage/post-queue.json
|
||||
trans.pt_BR = public/language/pt-BR/admin/manage/post-queue.json
|
||||
trans.pt_PT = public/language/pt-PT/admin/manage/post-queue.json
|
||||
trans.ro = public/language/ro/admin/manage/post-queue.json
|
||||
trans.ru = public/language/ru/admin/manage/post-queue.json
|
||||
trans.rw = public/language/rw/admin/manage/post-queue.json
|
||||
trans.sc = public/language/sc/admin/manage/post-queue.json
|
||||
trans.sk = public/language/sk/admin/manage/post-queue.json
|
||||
trans.sl = public/language/sl/admin/manage/post-queue.json
|
||||
trans.sr = public/language/sr/admin/manage/post-queue.json
|
||||
trans.sv = public/language/sv/admin/manage/post-queue.json
|
||||
trans.th = public/language/th/admin/manage/post-queue.json
|
||||
trans.tr = public/language/tr/admin/manage/post-queue.json
|
||||
trans.uk = public/language/uk/admin/manage/post-queue.json
|
||||
trans.vi = public/language/vi/admin/manage/post-queue.json
|
||||
trans.zh_CN = public/language/zh-CN/admin/manage/post-queue.json
|
||||
trans.zh_TW = public/language/zh-TW/admin/manage/post-queue.json
|
||||
type = KEYVALUEJSON
|
||||
|
||||
[nodebb.admin-manage-registration]
|
||||
file_filter = public/language/<lang>/admin/manage/registration.json
|
||||
source_file = public/language/en-GB/admin/manage/registration.json
|
||||
@@ -2650,56 +2650,6 @@ trans.zh_CN = public/language/zh-CN/admin/manage/users.json
|
||||
trans.zh_TW = public/language/zh-TW/admin/manage/users.json
|
||||
type = KEYVALUEJSON
|
||||
|
||||
[nodebb.admin-manage-digest]
|
||||
file_filter = public/language/<lang>/admin/manage/digest.json
|
||||
source_file = public/language/en-GB/admin/manage/digest.json
|
||||
source_lang = en_GB
|
||||
trans.ar = public/language/ar/admin/manage/digest.json
|
||||
trans.bg = public/language/bg/admin/manage/digest.json
|
||||
trans.bn = public/language/bn/admin/manage/digest.json
|
||||
trans.cs = public/language/cs/admin/manage/digest.json
|
||||
trans.da = public/language/da/admin/manage/digest.json
|
||||
trans.de = public/language/de/admin/manage/digest.json
|
||||
trans.el = public/language/el/admin/manage/digest.json
|
||||
trans.en@pirate = public/language/en-x-pirate/admin/manage/digest.json
|
||||
trans.en_US = public/language/en-US/admin/manage/digest.json
|
||||
trans.es = public/language/es/admin/manage/digest.json
|
||||
trans.et = public/language/et/admin/manage/digest.json
|
||||
trans.fa_IR = public/language/fa-IR/admin/manage/digest.json
|
||||
trans.fi = public/language/fi/admin/manage/digest.json
|
||||
trans.fr = public/language/fr/admin/manage/digest.json
|
||||
trans.gl = public/language/gl/admin/manage/digest.json
|
||||
trans.he = public/language/he/admin/manage/digest.json
|
||||
trans.hr = public/language/hr/admin/manage/digest.json
|
||||
trans.hu = public/language/hu/admin/manage/digest.json
|
||||
trans.id = public/language/id/admin/manage/digest.json
|
||||
trans.it = public/language/it/admin/manage/digest.json
|
||||
trans.ja = public/language/ja/admin/manage/digest.json
|
||||
trans.ko = public/language/ko/admin/manage/digest.json
|
||||
trans.lt = public/language/lt/admin/manage/digest.json
|
||||
trans.lv = public/language/lv/admin/manage/digest.json
|
||||
trans.ms = public/language/ms/admin/manage/digest.json
|
||||
trans.nb = public/language/nb/admin/manage/digest.json
|
||||
trans.nl = public/language/nl/admin/manage/digest.json
|
||||
trans.pl = public/language/pl/admin/manage/digest.json
|
||||
trans.pt_BR = public/language/pt-BR/admin/manage/digest.json
|
||||
trans.pt_PT = public/language/pt-PT/admin/manage/digest.json
|
||||
trans.ro = public/language/ro/admin/manage/digest.json
|
||||
trans.ru = public/language/ru/admin/manage/digest.json
|
||||
trans.rw = public/language/rw/admin/manage/digest.json
|
||||
trans.sc = public/language/sc/admin/manage/digest.json
|
||||
trans.sk = public/language/sk/admin/manage/digest.json
|
||||
trans.sl = public/language/sl/admin/manage/digest.json
|
||||
trans.sr = public/language/sr/admin/manage/digest.json
|
||||
trans.sv = public/language/sv/admin/manage/digest.json
|
||||
trans.th = public/language/th/admin/manage/digest.json
|
||||
trans.tr = public/language/tr/admin/manage/digest.json
|
||||
trans.uk = public/language/uk/admin/manage/digest.json
|
||||
trans.vi = public/language/vi/admin/manage/digest.json
|
||||
trans.zh_CN = public/language/zh-CN/admin/manage/digest.json
|
||||
trans.zh_TW = public/language/zh-TW/admin/manage/digest.json
|
||||
type = KEYVALUEJSON
|
||||
|
||||
[nodebb.admin-settings-advanced]
|
||||
file_filter = public/language/<lang>/admin/settings/advanced.json
|
||||
source_file = public/language/en-GB/admin/settings/advanced.json
|
||||
|
||||
2937
CHANGELOG.md
14
Dockerfile
@@ -1,22 +1,20 @@
|
||||
FROM node:lts
|
||||
# The base image is the latest 8.x node (LTS)
|
||||
FROM node:8.15.0@sha256:cb66110c9c7d84bae9a6db8675f49d5c9e34d528023ef185b186e29ae5461051
|
||||
|
||||
RUN mkdir -p /usr/src/app
|
||||
WORKDIR /usr/src/app
|
||||
|
||||
ARG NODE_ENV
|
||||
ENV NODE_ENV $NODE_ENV
|
||||
|
||||
COPY install/package.json /usr/src/app/package.json
|
||||
|
||||
RUN npm install --only=prod && \
|
||||
npm cache clean --force
|
||||
|
||||
RUN npm install && npm cache clean --force
|
||||
COPY . /usr/src/app
|
||||
|
||||
ENV NODE_ENV=production \
|
||||
daemon=false \
|
||||
silent=false
|
||||
|
||||
EXPOSE 4567
|
||||
CMD ./nodebb start
|
||||
|
||||
CMD node ./nodebb build ; node ./nodebb start
|
||||
# the default port for NodeBB is exposed outside the container
|
||||
EXPOSE 4567
|
||||
227
Gruntfile.js
@@ -1,86 +1,94 @@
|
||||
'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 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 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');
|
||||
}
|
||||
prestart.setupWinston();
|
||||
|
||||
grunt.initConfig({
|
||||
watch: {},
|
||||
});
|
||||
function update(action, filepath, target) {
|
||||
var updateArgs = args.slice();
|
||||
var compiling;
|
||||
var time = Date.now();
|
||||
|
||||
grunt.loadNpmTasks('grunt-contrib-watch');
|
||||
|
||||
grunt.registerTask('default', ['watch']);
|
||||
|
||||
grunt.registerTask('init', async 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);
|
||||
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 (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
|
||||
}
|
||||
|
||||
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'));
|
||||
if (compiling && !incomplete.includes(compiling)) {
|
||||
incomplete.push(compiling);
|
||||
}
|
||||
|
||||
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'));
|
||||
updateArgs.push('--build');
|
||||
updateArgs.push(incomplete.join(','));
|
||||
|
||||
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'));
|
||||
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 = [];
|
||||
|
||||
const templatesUpdated = plugins.map(p => 'node_modules/' + p + '/+(public|static|templates)/**/*.tpl');
|
||||
const langUpdated = plugins.map(p => 'node_modules/' + p + '/+(public|static|languages)/**/*.json');
|
||||
if (grunt.option('verbose')) {
|
||||
grunt.log.writeln('NodeBB restarted in ' + (Date.now() - time) + ' ms');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
grunt.config(['watch'], {
|
||||
styleUpdated_Client: {
|
||||
grunt.initConfig({
|
||||
watch: {
|
||||
lessUpdated_Client: {
|
||||
files: [
|
||||
'public/less/**/*.less',
|
||||
...styleUpdated_Client,
|
||||
'public/less/*.less',
|
||||
'!public/less/admin/**/*.less',
|
||||
'node_modules/nodebb-*/**/*.less',
|
||||
'!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',
|
||||
'node_modules/nodebb-*/**/*.less',
|
||||
'!node_modules/nodebb-*/node_modules/**',
|
||||
'!node_modules/nodebb-*/.git/**',
|
||||
],
|
||||
options: {
|
||||
interval: 1000,
|
||||
@@ -89,24 +97,17 @@ module.exports = function (grunt) {
|
||||
clientUpdated: {
|
||||
files: [
|
||||
'public/src/**/*.js',
|
||||
...clientUpdated,
|
||||
'node_modules/nodebb-*/**/*.js',
|
||||
'!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'],
|
||||
options: {
|
||||
interval: 1000,
|
||||
},
|
||||
@@ -114,7 +115,9 @@ module.exports = function (grunt) {
|
||||
templatesUpdated: {
|
||||
files: [
|
||||
'src/views/**/*.tpl',
|
||||
...templatesUpdated,
|
||||
'node_modules/nodebb-*/**/*.tpl',
|
||||
'!node_modules/nodebb-*/node_modules/**',
|
||||
'!node_modules/nodebb-*/.git/**',
|
||||
],
|
||||
options: {
|
||||
interval: 1000,
|
||||
@@ -124,80 +127,40 @@ module.exports = function (grunt) {
|
||||
files: [
|
||||
'public/language/en-GB/*.json',
|
||||
'public/language/en-GB/**/*.json',
|
||||
...langUpdated,
|
||||
'node_modules/nodebb-*/**/*.json',
|
||||
'!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();
|
||||
},
|
||||
});
|
||||
|
||||
function run() {
|
||||
if (worker) {
|
||||
worker.kill();
|
||||
}
|
||||
grunt.loadNpmTasks('grunt-contrib-watch');
|
||||
|
||||
grunt.registerTask('default', ['watch']);
|
||||
env.NODE_ENV = 'development';
|
||||
|
||||
if (grunt.option('skip')) {
|
||||
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();
|
||||
}
|
||||
|
||||
require('./src/meta/build').build([compiling], function (err) {
|
||||
if (err) {
|
||||
winston.error(err.stack);
|
||||
}
|
||||
if (worker) {
|
||||
worker.send({ compiling: compiling });
|
||||
}
|
||||
} else {
|
||||
initWorker = fork('app.js', initArgs, {
|
||||
env: env,
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
function addBaseThemes(plugins) {
|
||||
let themeId = plugins.find(p => p.includes('nodebb-theme-'));
|
||||
if (!themeId) {
|
||||
return plugins;
|
||||
initWorker.on('exit', function () {
|
||||
worker = fork('app.js', args, {
|
||||
env: env,
|
||||
});
|
||||
});
|
||||
}
|
||||
let baseTheme;
|
||||
do {
|
||||
try {
|
||||
baseTheme = require(themeId + '/theme').baseTheme;
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
}
|
||||
|
||||
if (baseTheme) {
|
||||
plugins.push(baseTheme);
|
||||
themeId = baseTheme;
|
||||
}
|
||||
} while (baseTheme);
|
||||
return plugins;
|
||||
}
|
||||
grunt.event.on('watch', update);
|
||||
};
|
||||
|
||||
@@ -48,8 +48,8 @@ Our minimalist "Persona" theme gets you going right away, no coding experience r
|
||||
|
||||
NodeBB requires the following software to be installed:
|
||||
|
||||
* A version of Node.js at least 12 or greater ([installation/upgrade instructions](https://github.com/nodesource/distributions))
|
||||
* MongoDB, version 2.6 or greater **or** Redis, version 2.8.9 or greater
|
||||
* A version of Node.js at least 6 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)
|
||||
|
||||
## Installation
|
||||
|
||||
31
app.js
@@ -21,25 +21,25 @@
|
||||
|
||||
require('./require-main');
|
||||
|
||||
const nconf = require('nconf');
|
||||
var nconf = require('nconf');
|
||||
nconf.argv().env({
|
||||
separator: '__',
|
||||
});
|
||||
|
||||
const winston = require('winston');
|
||||
const path = require('path');
|
||||
var async = require('async');
|
||||
var winston = require('winston');
|
||||
var path = require('path');
|
||||
|
||||
const file = require('./src/file');
|
||||
var file = require('./src/file');
|
||||
|
||||
process.env.NODE_ENV = process.env.NODE_ENV || 'production';
|
||||
global.env = process.env.NODE_ENV || 'production';
|
||||
|
||||
// Alternate configuration file support
|
||||
const configFile = path.resolve(__dirname, nconf.any(['config', 'CONFIG']) || 'config.json');
|
||||
var configFile = path.resolve(__dirname, nconf.any(['config', 'CONFIG']) || 'config.json');
|
||||
|
||||
const configExists = file.existsSync(configFile) || (nconf.get('url') && nconf.get('secret') && nconf.get('database'));
|
||||
var configExists = file.existsSync(configFile) || (nconf.get('url') && nconf.get('secret') && nconf.get('database'));
|
||||
|
||||
const prestart = require('./src/prestart');
|
||||
var prestart = require('./src/prestart');
|
||||
prestart.loadConfig(configFile);
|
||||
prestart.setupWinston();
|
||||
prestart.versionCheck();
|
||||
@@ -60,19 +60,30 @@ if (nconf.get('setup') || nconf.get('install')) {
|
||||
} else if (nconf.get('upgrade')) {
|
||||
require('./src/cli/upgrade').upgrade(true);
|
||||
} else if (nconf.get('reset')) {
|
||||
require('./src/cli/reset').reset({
|
||||
var options = {
|
||||
theme: nconf.get('t'),
|
||||
plugin: nconf.get('p'),
|
||||
widgets: nconf.get('w'),
|
||||
settings: nconf.get('s'),
|
||||
all: nconf.get('a'),
|
||||
};
|
||||
|
||||
async.series([
|
||||
async.apply(require('./src/cli/reset').reset, options),
|
||||
require('./src/meta/build').buildAll,
|
||||
], function (err) {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
|
||||
process.exit(0);
|
||||
});
|
||||
} else if (nconf.get('activate')) {
|
||||
require('./src/cli/manage').activate(nconf.get('activate'));
|
||||
} else if (nconf.get('plugins')) {
|
||||
require('./src/cli/manage').listPlugins();
|
||||
} else if (nconf.get('build')) {
|
||||
require('./src/cli/manage').build(nconf.get('build'));
|
||||
require('./src/meta/build').build(nconf.get('build'));
|
||||
} else if (nconf.get('events')) {
|
||||
require('./src/cli/manage').listEvents();
|
||||
} else {
|
||||
|
||||
@@ -1,25 +1,3 @@
|
||||
'use strict';
|
||||
|
||||
module.exports = {
|
||||
extends: ['@commitlint/config-angular'],
|
||||
rules: {
|
||||
'type-enum': [
|
||||
2,
|
||||
'always',
|
||||
[
|
||||
'breaking',
|
||||
'build',
|
||||
'chore',
|
||||
'ci',
|
||||
'docs',
|
||||
'feat',
|
||||
'fix',
|
||||
'perf',
|
||||
'refactor',
|
||||
'revert',
|
||||
'style',
|
||||
'test',
|
||||
],
|
||||
],
|
||||
},
|
||||
};
|
||||
module.exports = { extends: ['@commitlint/config-angular'] };
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
version: '3.5'
|
||||
|
||||
services:
|
||||
node:
|
||||
build: .
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- db
|
||||
expose:
|
||||
- 4567 # use a reverse proxy like Traefik
|
||||
|
||||
db:
|
||||
image: mongo:bionic
|
||||
restart: unless-stopped
|
||||
expose:
|
||||
- 27017
|
||||
environment:
|
||||
MONGO_INITDB_ROOT_USERNAME: root
|
||||
MONGO_INITDB_ROOT_PASSWORD: root
|
||||
volumes:
|
||||
- mongo:/data/db
|
||||
|
||||
volumes:
|
||||
mongo:
|
||||
@@ -11,7 +11,6 @@
|
||||
"initialPostDelay": 10,
|
||||
"newbiePostDelay": 120,
|
||||
"postEditDuration": 0,
|
||||
"newbiePostEditDuration": 3600,
|
||||
"postDeleteDuration": 0,
|
||||
"enablePostHistory": 1,
|
||||
"postCacheSize": 10485760,
|
||||
@@ -20,8 +19,6 @@
|
||||
"chatDeleteDuration": 0,
|
||||
"chatMessageDelay": 200,
|
||||
"newbiePostDelayThreshold": 3,
|
||||
"postQueueReputationThreshold": 0,
|
||||
"groupsExemptFromPostQueue": ["administrators", "Global Moderators"],
|
||||
"minimumPostLength": 8,
|
||||
"maximumPostLength": 32767,
|
||||
"minimumTagsPerTopic": 0,
|
||||
@@ -30,14 +27,12 @@
|
||||
"maximumTagLength": 15,
|
||||
"allowTopicsThumbnail": 0,
|
||||
"registrationType": "normal",
|
||||
"registrationApprovalType": "normal",
|
||||
"allowAccountDelete": 1,
|
||||
"privateUploads": 0,
|
||||
"allowedFileExtensions": "png,jpg,bmp,txt",
|
||||
"allowFileUploads": 0,
|
||||
"allowedFileExtensions": "png,jpg,bmp",
|
||||
"allowUserHomePage": 1,
|
||||
"allowMultipleBadges": 0,
|
||||
"maximumFileSize": 2048,
|
||||
"stripEXIFData": 1,
|
||||
"resizeImageWidthThreshold": 2000,
|
||||
"resizeImageWidth": 760,
|
||||
"rejectImageWidth": 5000,
|
||||
@@ -64,14 +59,13 @@
|
||||
"allowProfileImageUploads": 1,
|
||||
"teaserPost": "last-reply",
|
||||
"allowPrivateGroups": 1,
|
||||
"allowGroupCreation": 0,
|
||||
"unreadCutoff": 2,
|
||||
"bookmarkThreshold": 5,
|
||||
"autoDetectLang": 1,
|
||||
"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 +73,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",
|
||||
@@ -100,21 +91,16 @@
|
||||
"postsPerPage": 20,
|
||||
"userSearchResultsPerPage": 50,
|
||||
"maximumGroupNameLength": 255,
|
||||
"maximumGroupTitleLength": 40,
|
||||
"preventTopicDeleteAfterReplies": 0,
|
||||
"feeds:disableSitemap": 0,
|
||||
"sitemapTopics": 500,
|
||||
"maintenanceMode": 0,
|
||||
"maintenanceModeStatus": 503,
|
||||
"votesArePublic": 0,
|
||||
"maximumInvites": 0,
|
||||
"username:disableEdit": 0,
|
||||
"email:disableEdit": 0,
|
||||
"email:smtpTransport:pool": false,
|
||||
"hideFullname": 0,
|
||||
"hideEmail": 0,
|
||||
"allowGuestHandles": 0,
|
||||
"recentMaxTopics": 200,
|
||||
"disableRecentCategoryFilter": 0,
|
||||
"maximumRelatedTopics": 0,
|
||||
"disableEmailSubscriptions": 0,
|
||||
@@ -131,7 +117,5 @@
|
||||
"eventLoopInterval": 500,
|
||||
"onlineCutoff": 30,
|
||||
"timeagoCutoff": 30,
|
||||
"necroThreshold": 7,
|
||||
"categoryWatchState": "watching",
|
||||
"submitPluginUsage": 1
|
||||
"categoryWatchState": "watching"
|
||||
}
|
||||
@@ -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) {
|
||||
winston.info('\nNow configuring ' + config.database + ' database:');
|
||||
const databaseConfig = await getDatabaseConfig(config);
|
||||
return saveDatabaseConfig(config, databaseConfig);
|
||||
module.exports = function (config, callback) {
|
||||
async.waterfall([
|
||||
function (next) {
|
||||
winston.info('\nNow configuring ' + config.database + ' database:');
|
||||
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
|
||||
@@ -76,16 +83,15 @@ function saveDatabaseConfig(config, databaseConfig) {
|
||||
username: databaseConfig['postgres:username'],
|
||||
password: databaseConfig['postgres:password'],
|
||||
database: databaseConfig['postgres:database'],
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"name": "nodebb",
|
||||
"license": "GPL-3.0",
|
||||
"description": "NodeBB Forum",
|
||||
"version": "1.15.0-beta.29",
|
||||
"version": "1.11.2",
|
||||
"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,132 +29,128 @@
|
||||
]
|
||||
},
|
||||
"dependencies": {
|
||||
"ace-builds": "^1.4.9",
|
||||
"archiver": "^5.0.0",
|
||||
"async": "^3.2.0",
|
||||
"autoprefixer": "^10.0.0",
|
||||
"ace-builds": "^1.2.9",
|
||||
"archiver": "^3.0.0",
|
||||
"async": "2.6.1",
|
||||
"autoprefixer": "^9.4.6",
|
||||
"bcryptjs": "2.4.3",
|
||||
"benchpressjs": "2.0.4",
|
||||
"body-parser": "^1.19.0",
|
||||
"bootstrap": "^3.4.1",
|
||||
"chart.js": "^2.9.3",
|
||||
"benchpressjs": "^1.2.5",
|
||||
"body-parser": "^1.18.2",
|
||||
"bootstrap": "^3.4.0",
|
||||
"bootswatch": "^3",
|
||||
"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": "^2.12.2",
|
||||
"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-mongo": "2.0.3",
|
||||
"connect-multiparty": "^2.1.0",
|
||||
"connect-pg-simple": "^5.0.0",
|
||||
"connect-redis": "3.4.0",
|
||||
"continuation-local-storage": "^3.2.1",
|
||||
"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": "^2.0.0",
|
||||
"jquery": "3.5.1",
|
||||
"jsesc": "3.0.1",
|
||||
"json2csv": "5.0.3",
|
||||
"jsonwebtoken": "^8.5.1",
|
||||
"less": "^3.11.1",
|
||||
"lodash": "^4.17.15",
|
||||
"logrotate-stream": "^0.2.6",
|
||||
"lru-cache": "6.0.0",
|
||||
"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": "^4.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": "^2.7.3",
|
||||
"lodash": "^4.17.10",
|
||||
"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.2",
|
||||
"morgan": "^1.10.0",
|
||||
"mousetrap": "^1.6.5",
|
||||
"@nodebb/bootswatch": "3.4.2",
|
||||
"@nodebb/mubsub": "1.7.0",
|
||||
"@nodebb/socket.io-adapter-mongo": "3.1.0",
|
||||
"mime": "^2.2.0",
|
||||
"mkdirp": "^0.5.1",
|
||||
"mongodb": "3.1.13",
|
||||
"morgan": "^1.9.0",
|
||||
"mousetrap": "^1.6.1",
|
||||
"mubsub-nbb": "^1.5.0",
|
||||
"nconf": "^0.10.0",
|
||||
"nodebb-plugin-composer-default": "6.4.2",
|
||||
"nodebb-plugin-dbsearch": "4.1.2",
|
||||
"nodebb-plugin-emoji": "^3.3.0",
|
||||
"nodebb-plugin-composer-default": "6.1.21",
|
||||
"nodebb-plugin-dbsearch": "3.0.4",
|
||||
"nodebb-plugin-emoji": "^2.2.5",
|
||||
"nodebb-plugin-emoji-android": "2.0.0",
|
||||
"nodebb-plugin-markdown": "8.12.1",
|
||||
"nodebb-plugin-mentions": "2.11.0",
|
||||
"nodebb-plugin-markdown": "8.8.7",
|
||||
"nodebb-plugin-mentions": "2.5.2",
|
||||
"nodebb-plugin-soundpack-default": "1.0.0",
|
||||
"nodebb-plugin-spam-be-gone": "0.7.2",
|
||||
"nodebb-rewards-essentials": "0.1.3",
|
||||
"nodebb-theme-lavender": "5.0.13",
|
||||
"nodebb-theme-persona": "10.2.51",
|
||||
"nodebb-theme-slick": "1.2.36",
|
||||
"nodebb-theme-vanilla": "11.2.20",
|
||||
"nodebb-widget-essentials": "4.1.2",
|
||||
"nodemailer": "^6.4.6",
|
||||
"passport": "^0.4.1",
|
||||
"passport-http-bearer": "^1.0.1",
|
||||
"nodebb-plugin-spam-be-gone": "0.5.5",
|
||||
"nodebb-rewards-essentials": "0.0.13",
|
||||
"nodebb-theme-lavender": "5.0.8",
|
||||
"nodebb-theme-persona": "9.1.13",
|
||||
"nodebb-theme-slick": "1.2.19",
|
||||
"nodebb-theme-vanilla": "10.1.18",
|
||||
"nodebb-widget-essentials": "4.0.13",
|
||||
"nodemailer": "^5.0.0",
|
||||
"passport": "^0.4.0",
|
||||
"passport-local": "1.0.0",
|
||||
"pg": "^8.0.2",
|
||||
"pg-cursor": "^2.1.9",
|
||||
"postcss": "8.0.6",
|
||||
"pg": "^7.4.0",
|
||||
"pg-cursor": "^2.0.0",
|
||||
"postcss": "7.0.14",
|
||||
"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": "2.6.3",
|
||||
"rss": "^1.2.2",
|
||||
"sanitize-html": "^2.0.0",
|
||||
"semver": "^7.2.1",
|
||||
"serve-favicon": "^2.5.0",
|
||||
"sharp": "0.26.1",
|
||||
"sitemap": "^6.1.0",
|
||||
"socket.io": "2.3.0",
|
||||
"sanitize-html": "^1.16.3",
|
||||
"semver": "^5.4.1",
|
||||
"serve-favicon": "^2.4.5",
|
||||
"sharp": "0.21.3",
|
||||
"sitemap": "^2.0.0",
|
||||
"socket.io": "2.2.0",
|
||||
"socket.io-adapter-cluster": "^1.0.1",
|
||||
"socket.io-adapter-postgres": "^1.2.1",
|
||||
"socket.io-client": "2.3.0",
|
||||
"socket.io-redis": "5.4.0",
|
||||
"socket.io-adapter-mongo": "^2.0.1",
|
||||
"socket.io-adapter-postgres": "^1.0.1",
|
||||
"socket.io-client": "2.2.0",
|
||||
"socket.io-redis": "5.2.0",
|
||||
"socketio-wildcard": "2.0.0",
|
||||
"spdx-license-list": "^6.1.0",
|
||||
"spider-detector": "2.0.0",
|
||||
"textcomplete": "^0.17.1",
|
||||
"textcomplete.contenteditable": "^0.1.1",
|
||||
"spdx-license-list": "^5.0.0",
|
||||
"spider-detector": "1.0.19",
|
||||
"toobusy-js": "^0.5.1",
|
||||
"uglify-es": "^3.3.9",
|
||||
"validator": "13.1.17",
|
||||
"winston": "3.3.3",
|
||||
"validator": "10.11.0",
|
||||
"winston": "3.1.0",
|
||||
"xml": "^1.0.1",
|
||||
"xregexp": "^4.3.0",
|
||||
"xregexp": "^4.1.1",
|
||||
"zxcvbn": "^4.4.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@apidevtools/swagger-parser": "10.0.2",
|
||||
"@commitlint/cli": "9.1.2",
|
||||
"@commitlint/config-angular": "9.1.2",
|
||||
"coveralls": "3.1.0",
|
||||
"eslint": "7.10.0",
|
||||
"eslint-config-airbnb-base": "14.2.0",
|
||||
"eslint-plugin-import": "2.22.1",
|
||||
"grunt": "1.3.0",
|
||||
"@commitlint/cli": "7.3.2",
|
||||
"@commitlint/config-angular": "7.3.1",
|
||||
"coveralls": "3.0.2",
|
||||
"eslint": "5.12.1",
|
||||
"eslint-config-airbnb-base": "13.1.0",
|
||||
"eslint-plugin-import": "2.15.0",
|
||||
"grunt": "1.0.3",
|
||||
"grunt-contrib-watch": "1.1.0",
|
||||
"husky": "4.3.0",
|
||||
"jsdom": "16.4.0",
|
||||
"lint-staged": "10.4.0",
|
||||
"mocha": "8.1.3",
|
||||
"husky": "1.3.1",
|
||||
"jsdom": "13.1.0",
|
||||
"lint-staged": "8.1.0",
|
||||
"mocha": "5.2.0",
|
||||
"mocha-lcov-reporter": "1.3.0",
|
||||
"nyc": "15.1.0",
|
||||
"smtp-server": "3.7.0"
|
||||
"nyc": "13.1.0",
|
||||
"smtp-server": "3.5.0"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/NodeBB/NodeBB/issues"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
"node": ">=8"
|
||||
},
|
||||
"maintainers": [
|
||||
{
|
||||
|
||||
@@ -50,7 +50,6 @@ var scripts = [
|
||||
'public/vendor/xregexp/unicode/unicode-base.js',
|
||||
'public/src/utils.js',
|
||||
'public/src/installer/install.js',
|
||||
'node_modules/zxcvbn/dist/zxcvbn.js',
|
||||
];
|
||||
|
||||
var installing = false;
|
||||
@@ -81,7 +80,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);
|
||||
@@ -132,7 +131,6 @@ function welcome(req, res) {
|
||||
success: success,
|
||||
values: req.body,
|
||||
minimumPasswordLength: defaults.minimumPasswordLength,
|
||||
minimumPasswordStrength: defaults.minimumPasswordStrength,
|
||||
installing: installing,
|
||||
});
|
||||
}
|
||||
@@ -183,7 +181,7 @@ function install(req, res) {
|
||||
function launch(req, res) {
|
||||
res.json({});
|
||||
server.close();
|
||||
req.setTimeout(0);
|
||||
|
||||
var child;
|
||||
|
||||
if (!nconf.get('launchCmd')) {
|
||||
@@ -223,17 +221,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);
|
||||
|
||||
32
loader.js
@@ -87,22 +87,22 @@ Loader.addWorkerEvents = function (worker) {
|
||||
worker.on('message', function (message) {
|
||||
if (message && typeof message === 'object' && message.action) {
|
||||
switch (message.action) {
|
||||
case 'restart':
|
||||
console.log('[cluster] Restarting...');
|
||||
Loader.restart();
|
||||
break;
|
||||
case 'pubsub':
|
||||
workers.forEach(function (w) {
|
||||
case 'restart':
|
||||
console.log('[cluster] Restarting...');
|
||||
Loader.restart();
|
||||
break;
|
||||
case 'pubsub':
|
||||
workers.forEach(function (w) {
|
||||
w.send(message);
|
||||
});
|
||||
break;
|
||||
case 'socket.io':
|
||||
workers.forEach(function (w) {
|
||||
if (w !== worker) {
|
||||
w.send(message);
|
||||
});
|
||||
break;
|
||||
case 'socket.io':
|
||||
workers.forEach(function (w) {
|
||||
if (w !== worker) {
|
||||
w.send(message);
|
||||
}
|
||||
});
|
||||
break;
|
||||
}
|
||||
});
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -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([
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
"socket": true,
|
||||
"ajaxify": true,
|
||||
"config": true,
|
||||
"RELATIVE_PATH": true,
|
||||
"utils": true,
|
||||
"overrides": true,
|
||||
"componentHandler": true,
|
||||
@@ -17,24 +18,24 @@
|
||||
"jquery": true,
|
||||
"amd": true,
|
||||
"browser": true,
|
||||
"es6": true
|
||||
"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"
|
||||
},
|
||||
"parserOptions": {
|
||||
"ecmaVersion": 6,
|
||||
"ecmaVersion": 5,
|
||||
"ecmaFeatures": {
|
||||
"arrowFunctions": false,
|
||||
"classes": false,
|
||||
"defaultParams": false,
|
||||
"destructuring": false,
|
||||
"experimentalObjectRestSpread": false,
|
||||
"blockBindings": false,
|
||||
"forOf": false,
|
||||
@@ -48,7 +49,9 @@
|
||||
"objectLiteralShorthandProperties": false,
|
||||
"impliedStrict": false,
|
||||
"restParams": false,
|
||||
"superInFunctions": false
|
||||
"spread": false,
|
||||
"superInFunctions": false,
|
||||
"templateStrings": false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,6 +63,7 @@
|
||||
"socket": true,
|
||||
"ajaxify": true,
|
||||
"config": true,
|
||||
"RELATIVE_PATH": true,
|
||||
"utils": true,
|
||||
"overrides": true,
|
||||
"componentHandler": true,
|
||||
|
||||
@@ -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;
|
||||
|
||||
BIN
public/images/emails/banneduser.png
Normal file
|
After Width: | Height: | Size: 6.1 KiB |
BIN
public/images/emails/digestheader.jpg
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
public/images/emails/emailconfirm.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
public/images/emails/invitation.png
Normal file
|
After Width: | Height: | Size: 4.7 KiB |
BIN
public/images/emails/newtopic.png
Normal file
|
After Width: | Height: | Size: 4.9 KiB |
BIN
public/images/emails/nodebb.png
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
BIN
public/images/emails/notification.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
public/images/emails/password.png
Normal file
|
After Width: | Height: | Size: 4.9 KiB |
BIN
public/images/emails/triangularbackground.png
Normal file
|
After Width: | Height: | Size: 47 KiB |
BIN
public/images/emails/unreadpost.png
Normal file
|
After Width: | Height: | Size: 3.6 KiB |
3
public/js-enabled.css
Normal file
@@ -0,0 +1,3 @@
|
||||
/*
|
||||
The following stylesheet is only included on pages that can execute javascript
|
||||
*/
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"alert.confirm-rebuild-and-restart": "هل أنت متأكد إنك تريد إعادة بناء وتشغيل الـ NodeBB؟",
|
||||
"alert.confirm-rebuild-and-restart": "Are you sure you wish to rebuild and restart NodeBB?",
|
||||
"alert.confirm-restart": "هل تريد بالتأكيد إعادة تشغيل NodeBB؟",
|
||||
|
||||
"acp-title": "لوحة تحكم إدارة NodeBB | %1",
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"posts-in-cache": "المشاركات المخزنة مؤقتاً",
|
||||
"average-post-size": "متوسط حجم المشاركة",
|
||||
"length-to-max": "الطول / أقصى حد",
|
||||
"percent-full": "1% كاملة",
|
||||
"percent-full": "%1% Full",
|
||||
"post-cache-size": "حجم التخزين المؤقت للمشاركات",
|
||||
"items-in-cache": "العناصر في التخزين المؤقت",
|
||||
"control-panel": "لوحة التحكم",
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
"mongo.bytes-out": "Bytes Out",
|
||||
"mongo.num-requests": "Number of Requests",
|
||||
"mongo.raw-info": "MongoDB Raw Info",
|
||||
"mongo.unauthorized": "NodeBB was unable to query the MongoDB database for relevant statistics. Please ensure that the user in use by NodeBB contains the "clusterMonitor" role for the "admin" database.",
|
||||
|
||||
"redis": "Redis",
|
||||
"redis.version": "Redis Version",
|
||||
|
||||
@@ -2,11 +2,5 @@
|
||||
"events": "أحداث",
|
||||
"no-events": "لا توجد أحداث",
|
||||
"control-panel": "لوحة تحكم الأحداث",
|
||||
"delete-events": "Delete Events",
|
||||
"filters": "Filters",
|
||||
"filters-apply": "Apply Filters",
|
||||
"filter-type": "Event Type",
|
||||
"filter-start": "Start Date",
|
||||
"filter-end": "End Date",
|
||||
"filter-perPage": "Per Page"
|
||||
"delete-events": "حذف الأحداث"
|
||||
}
|
||||
@@ -8,7 +8,7 @@
|
||||
"custom-js.enable": "تفعيل Javascript المخصصة",
|
||||
|
||||
"custom-header": "ترويسة مخصصة",
|
||||
"custom-header.description": "Enter custom HTML here (ex. Meta Tags, etc.), which will be appended to the <code><head></code> section of your forum's markup. Script tags are allowed, but are discouraged, as the <a href=\"#custom-js\" data-toggle=\"tab\">Custom Javascript</a> tab is available.",
|
||||
"custom-header.description": "أدخل HTML الخاصة بك هنا (مثل العلامات الوصفية، وما إلى ذلك)، والتي سيتم إلحاقها الى<code><head></code> في تصميم المنتدى. يسمح باستخدام علامات النص البرمجي، ولكن سيتم تعطيلها؛ لتوفر تبويبة\n<a href=\"#custom-header\" data-toggle=\"tab\">Javascript المخصصة</a>",
|
||||
"custom-header.enable": "تفعيل الترويسة المخصصة",
|
||||
|
||||
"custom-css.livereload": "تفعيل إعادة التحميل المباشرة",
|
||||
|
||||
@@ -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 & 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"
|
||||
}
|
||||
@@ -1,16 +1,13 @@
|
||||
{
|
||||
"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",
|
||||
"git": "git",
|
||||
"memory": "memory",
|
||||
"load": "system load",
|
||||
"cpu-usage": "cpu usage",
|
||||
"load": "load",
|
||||
"uptime": "uptime",
|
||||
|
||||
"registered": "Registered",
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
{
|
||||
"trending": "Trending",
|
||||
"installed": "منصبة",
|
||||
"active": "مفعلة",
|
||||
"inactive": "معطلة",
|
||||
@@ -10,7 +9,6 @@
|
||||
|
||||
"plugin-search": "البحث عن الإضافات",
|
||||
"plugin-search-placeholder": "جاري البحث عن الإضافات...",
|
||||
"submit-anonymous-usage": "Submit anonymous plugin usage data.",
|
||||
"reorder-plugins": "إعادة ترتيب الإضافات",
|
||||
"order-active": "ترتيب الإضافات المفعلة",
|
||||
"dev-interested": "هل انته مهتم ببرمجة إضافات لـNodeBB؟",
|
||||
@@ -31,8 +29,6 @@
|
||||
"plugin-item.more-info": "لمزيد من المعلومات:",
|
||||
"plugin-item.unknown": "غير معروف",
|
||||
"plugin-item.unknown-explanation": "تعذر تحديد حالة هذه الإضافة، ربما بسبب خطأ في الإعدادات.",
|
||||
"plugin-item.compatible": "This plugin works on NodeBB %1",
|
||||
"plugin-item.not-compatible": "This plugin has no compatibility data, make sure it works before installing on your production environment.",
|
||||
|
||||
"alert.enabled": "الإضافة مفعلة",
|
||||
"alert.disabled": "الإضافة معطلة",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"available": "Available Widgets",
|
||||
"explanation": "Select a widget from the dropdown menu and then drag and drop it into a template's widget area on the left.",
|
||||
"none-installed": "No widgets found! Activate the widget essentials plugin in the <a href=\"%1\">plugins</a> control panel.",
|
||||
"none-installed": "No widgets found! Activate the essential widgets plugin in the <a href=\"%1\">plugins</a> control panel.",
|
||||
"clone-from": "Clone widgets from",
|
||||
"containers.available": "Available Containers",
|
||||
"containers.explanation": "Drag and drop on top of any active widget",
|
||||
@@ -18,13 +18,5 @@
|
||||
"alert.update-success": "Successfully updated widgets",
|
||||
"alert.clone-success": "Successfully cloned widgets",
|
||||
|
||||
"error.select-clone": "Please select a page to clone from",
|
||||
|
||||
"title": "Title",
|
||||
"title.placeholder": "Title (only shown on some containers)",
|
||||
"container": "Container",
|
||||
"container.placeholder": "Drag and drop a container or enter HTML here.",
|
||||
"show-to-groups": "Show to groups",
|
||||
"hide-from-groups": "Hide from groups",
|
||||
"hide-on-mobile": "Hide on mobile"
|
||||
"error.select-clone": "Please select a page to clone from"
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
"forum-traffic": "Forum Traffic",
|
||||
"page-views": "مشاهدات الصفحات",
|
||||
"unique-visitors": "زائرين فريدين",
|
||||
"new-users": "New Users",
|
||||
"users": "أعضاء",
|
||||
"posts": "مشاركات",
|
||||
"topics": "مواضيع",
|
||||
"page-views-seven": "آخر 7 ايام",
|
||||
@@ -14,12 +14,9 @@
|
||||
"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.day": "يوم",
|
||||
"stats.week": "إسبوع",
|
||||
"stats.month": "شهر",
|
||||
"stats.all": "كل الوقت",
|
||||
|
||||
"updates": "تحديثات",
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
"tooltip": "Tooltip:",
|
||||
"text": "Text:",
|
||||
"text-class": "Text Class: <small>optional</small>",
|
||||
"class": "Class: <small>optional</small>",
|
||||
"id": "ID: <small>optional</small>",
|
||||
|
||||
"properties": "Properties:",
|
||||
|
||||
@@ -11,14 +11,12 @@
|
||||
"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",
|
||||
"parent-category": "Parent Category",
|
||||
"optional-parent-category": "(Optional) Parent Category",
|
||||
"parent-category-none": "(None)",
|
||||
"copy-parent": "Copy Parent",
|
||||
"copy-settings": "Copy Settings From",
|
||||
"optional-clone-settings": "(Optional) Clone Settings From Category",
|
||||
"clone-children": "Clone Children Categories And Settings",
|
||||
@@ -27,19 +25,16 @@
|
||||
"enable": "Enable",
|
||||
"disable": "Disable",
|
||||
"edit": "Edit",
|
||||
"analytics": "Analytics",
|
||||
"view-category": "View category",
|
||||
|
||||
"select-category": "Select Category",
|
||||
"set-parent-category": "Set Parent Category",
|
||||
|
||||
"privileges.description": "You can configure the access control privileges for portions of the site in this section. Privileges can be granted on a per-user or a per-group basis. Select the domain of effect from the dropdown below.",
|
||||
"privileges.description": "You can configure the access control privileges for this category in this section. Privileges can be granted on a per-user or a per-group basis. Select the domain of effect from the dropdown below.",
|
||||
"privileges.category-selector": "Configuring privileges for ",
|
||||
"privileges.warning": "<strong>Note</strong>: Privilege settings take effect immediately. It is not necessary to save the category after adjusting these settings.",
|
||||
"privileges.section-viewing": "Viewing Privileges",
|
||||
"privileges.section-posting": "Posting Privileges",
|
||||
"privileges.section-moderation": "Moderation Privileges",
|
||||
"privileges.section-other": "Other",
|
||||
"privileges.section-user": "User",
|
||||
"privileges.search-user": "Add User",
|
||||
"privileges.no-users": "No user-specific privileges in this category.",
|
||||
@@ -48,12 +43,7 @@
|
||||
"privileges.search-group": "Add Group",
|
||||
"privileges.copy-to-children": "Copy to Children",
|
||||
"privileges.copy-from-category": "Copy from Category",
|
||||
"privileges.copy-privileges-to-all-categories": "Copy to All Categories",
|
||||
"privileges.copy-group-privileges-to-children": "Copy this group's privileges to the children of this category.",
|
||||
"privileges.copy-group-privileges-to-all-categories": "Copy this group's privileges to all categories.",
|
||||
"privileges.copy-group-privileges-from": "Copy this group's privileges from another category.",
|
||||
"privileges.inherit": "If the <code>registered-users</code> group is granted a specific privilege, all other groups receive an <strong>implicit privilege</strong>, even if they are not explicitly defined/checked. This implicit privilege is shown to you because all users are part of the <code>registered-users</code> user group, and so, privileges for additional groups need not be explicitly granted.",
|
||||
"privileges.copy-success": "Privileges copied!",
|
||||
|
||||
"analytics.back": "Back to Categories List",
|
||||
"analytics.title": "Analytics for \"%1\" category",
|
||||
@@ -66,6 +56,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 +68,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"
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
{
|
||||
"lead": "A listing of digest delivery stats and times is displayed below.",
|
||||
"disclaimer": "Please be advised that email delivery is not guaranteed, due to the nature of email technology. Many variables factor into whether an email sent to the recipient server is ultimately delivered into the user's inbox, including server reputation, blacklisted IP addresses, and whether DKIM/SPF/DMARC is configured.",
|
||||
"disclaimer-continued": "A successful delivery means the message was sent successfully by NodeBB and acknowledged by the recipient server. It does not mean the email landed in the inbox. For best results, we recommend using a third-party email delivery service such as <a href=\"https://sendgrid.com/why-sendgrid/\">SendGrid</a>.",
|
||||
|
||||
"user": "User",
|
||||
"subscription": "Subscription Type",
|
||||
"last-delivery": "Last successful delivery",
|
||||
"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: "<strong>%1</strong>"",
|
||||
"resend": "Resend Digest",
|
||||
"resend-all-confirm": "Are you sure you wish to manually execute this digest run?",
|
||||
"resent-single": "Manual digest resend completed",
|
||||
"resent-day": "Daily digest resent",
|
||||
"resent-week": "Weekly digest resent",
|
||||
"resent-month": "Monthly digest resent",
|
||||
"null": "<em>Never</em>",
|
||||
"manual-run": "Manual digest run:",
|
||||
|
||||
"no-delivery-data": "No delivery data found"
|
||||
}
|
||||
@@ -1,16 +1,9 @@
|
||||
{
|
||||
"name": "اسم المجموعة",
|
||||
"badge": "Badge",
|
||||
"properties": "Properties",
|
||||
"description": "Group Description",
|
||||
"member-count": "Member Count",
|
||||
"system": "System",
|
||||
"hidden": "Hidden",
|
||||
"private": "Private",
|
||||
"system": "System Group",
|
||||
"edit": "Edit",
|
||||
"delete": "Delete",
|
||||
"privileges": "Privileges",
|
||||
"download-csv": "CSV",
|
||||
"search-placeholder": "Search",
|
||||
"create": "Create Group",
|
||||
"description-placeholder": "A short description about your group",
|
||||
@@ -24,12 +17,10 @@
|
||||
"edit.user-title": "Title of Members",
|
||||
"edit.icon": "Group Icon",
|
||||
"edit.label-color": "Group Label Color",
|
||||
"edit.text-color": "Group Text Color",
|
||||
"edit.show-badge": "Show Badge",
|
||||
"edit.private-details": "If enabled, joining of groups requires approval from a group owner.",
|
||||
"edit.private-override": "Warning: Private groups is disabled at system level, which overrides this option.",
|
||||
"edit.disable-join": "Disable join requests",
|
||||
"edit.disable-leave": "Disallow users from leaving the group",
|
||||
"edit.disable-requests": "Disable join requests",
|
||||
"edit.hidden": "Hidden",
|
||||
"edit.hidden-details": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually",
|
||||
"edit.add-user": "Add User to Group",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"post-queue": "Post Queue",
|
||||
"description": "There are no posts in the post queue. <br> To enable this feature, go to <a href=\"%1\">Settings → Post → Post Queue</a> and enable <strong>Post Queue</strong>.",
|
||||
"description": "There are no posts in the post queue. <br> To enable this feature, go to <a href=\"%1\">Settings → Post → Posting Restrictions</a> and enable <strong>Post Queue</strong>.",
|
||||
"user": "User",
|
||||
"category": "Category",
|
||||
"title": "Title",
|
||||
@@ -1,9 +1,7 @@
|
||||
{
|
||||
"global": "Global",
|
||||
"admin": "Admin",
|
||||
"group-privileges": "Group Privileges",
|
||||
"user-privileges": "User Privileges",
|
||||
"edit-privileges": "Edit Privileges",
|
||||
"global.no-users": "No user-specific global privileges.",
|
||||
|
||||
"chat": "Chat",
|
||||
"upload-images": "Upload Images",
|
||||
"upload-files": "Upload Files",
|
||||
@@ -12,12 +10,8 @@
|
||||
"search-content": "Search Content",
|
||||
"search-users": "Search Users",
|
||||
"search-tags": "Search Tags",
|
||||
"view-users": "View Users",
|
||||
"view-tags": "View Tags",
|
||||
"view-groups": "View Groups",
|
||||
"allow-local-login": "Local Login",
|
||||
"allow-group-creation": "Group Create",
|
||||
"view-users-info": "View Users Info",
|
||||
|
||||
"find-category": "Find Category",
|
||||
"access-category": "Access Category",
|
||||
"access-topics": "Access Topics",
|
||||
@@ -32,21 +26,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"
|
||||
}
|
||||
@@ -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!"
|
||||
}
|
||||
@@ -6,18 +6,14 @@
|
||||
"validate-email": "Validate Email",
|
||||
"send-validation-email": "Send Validation Email",
|
||||
"password-reset-email": "Send Password Reset Email",
|
||||
"force-password-reset": "Force Password Reset & Log User Out",
|
||||
"ban": "Ban User(s)",
|
||||
"temp-ban": "Ban User(s) Temporarily",
|
||||
"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",
|
||||
"invite": "Invite",
|
||||
"new": "New User",
|
||||
|
||||
@@ -31,11 +27,6 @@
|
||||
"pills.banned": "Banned",
|
||||
"pills.search": "User Search",
|
||||
|
||||
"50-per-page": "50 per page",
|
||||
"100-per-page": "100 per page",
|
||||
"250-per-page": "250 per page",
|
||||
"500-per-page": "500 per page",
|
||||
|
||||
"search.uid": "By User ID",
|
||||
"search.uid-placeholder": "Enter a user ID to search",
|
||||
"search.username": "By User Name",
|
||||
@@ -90,15 +81,11 @@
|
||||
"alerts.confirm-remove-moderator": "Do you really want to remove this moderator?",
|
||||
"alerts.remove-moderator-success": "User is no longer moderator.",
|
||||
"alerts.confirm-validate-email": "Do you want to validate email(s) of these user(s)?",
|
||||
"alerts.confirm-force-password-reset": "Are you sure you want to force the password reset and log out these user(s)?",
|
||||
"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 +95,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."
|
||||
}
|
||||
@@ -1,6 +1,11 @@
|
||||
{
|
||||
"dashboard": "Dashboard",
|
||||
"section-general": "عام",
|
||||
"general/dashboard": "اللوحة الرئيسية",
|
||||
"general/homepage": "الصفحة الرئيسية",
|
||||
"general/navigation": "التصفح",
|
||||
"general/languages": "اللغات",
|
||||
"general/sounds": "الأصوات",
|
||||
"general/social": "شبكات التواصل",
|
||||
|
||||
"section-manage": "إدارة",
|
||||
"manage/categories": "الأقسام",
|
||||
@@ -13,26 +18,20 @@
|
||||
"manage/groups": "المجموعات",
|
||||
"manage/ip-blacklist": "قائمة حظر عناوين IP",
|
||||
"manage/uploads": "Uploads",
|
||||
"manage/digest": "Digests",
|
||||
|
||||
"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",
|
||||
@@ -70,7 +69,7 @@
|
||||
"logout": "Log out",
|
||||
"view-forum": "View Forum",
|
||||
|
||||
"search.placeholder": "Press "/" to search for settings",
|
||||
"search.placeholder": "Search for settings",
|
||||
"search.no-results": "No results...",
|
||||
"search.search-forum": "Search the forum for <strong></strong>",
|
||||
"search.keep-typing": "Type more to see results...",
|
||||
|
||||
@@ -1,12 +1,9 @@
|
||||
{
|
||||
"maintenance-mode": "Maintenance Mode",
|
||||
"maintenance-mode.help": "When the forum is in maintenance mode, all requests will be redirected to a static holding page. Administrators are exempt from this redirection, and are able to access the site normally.",
|
||||
"maintenance-mode.status": "Maintenance Mode Status Code",
|
||||
"maintenance-mode.message": "Maintenance Message",
|
||||
"headers": "Headers",
|
||||
"headers.allow-from": "Set ALLOW-FROM to Place NodeBB in an iFrame",
|
||||
"headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame",
|
||||
"headers.csp-frame-ancestors-help": "'none', 'self'(default) or list of URIs to allow.",
|
||||
"headers.powered-by": "Customise the \"Powered By\" header sent by NodeBB",
|
||||
"headers.acao": "Access-Control-Allow-Origin",
|
||||
"headers.acao-regex": "Access-Control-Allow-Origin Regular Expression",
|
||||
@@ -17,24 +14,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",
|
||||
|
||||
"analytics.settings": "Analytics Settings",
|
||||
"analytics.max-cache": "Analytics Cache Max Value",
|
||||
"analytics.max-cache-help": "On high-traffic installs, the cache could be exhausted continuously if there are more concurrent active users than the Max Cache value. (Restart required)"
|
||||
"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)"
|
||||
}
|
||||
@@ -6,7 +6,6 @@
|
||||
"max-length": "Maximum length of chat messages",
|
||||
"max-room-size": "Maximum number of users in chat rooms",
|
||||
"delay": "Time between chat messages in milliseconds",
|
||||
"notification-delay": "Notification delay for chat messages. (0 for no delay)",
|
||||
"restrictions.seconds-edit-after": "Number of seconds a chat message will remain editable. (0 disabled)",
|
||||
"restrictions.seconds-delete-after": "Number of seconds a chat message will remain deletable. (0 disabled)"
|
||||
"restrictions.seconds-edit-after": "Number of seconds before users are allowed to edit chat messages after posting. (0 disabled)",
|
||||
"restrictions.seconds-delete-after": "Number of seconds before users are allowed to delete chat messages after posting. (0 disabled)"
|
||||
}
|
||||
@@ -4,7 +4,6 @@
|
||||
"consent.message": "Notification message",
|
||||
"consent.acceptance": "Acceptance message",
|
||||
"consent.link-text": "Policy Link Text",
|
||||
"consent.link-url": "Policy Link URL",
|
||||
"consent.blank-localised-default": "Leave blank to use NodeBB localised defaults",
|
||||
"settings": "Settings",
|
||||
"cookie-domain": "Session cookie domain",
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"address-help": "The following email address refers to the email that the recipient will see in the \"From\" and \"Reply To\" fields.",
|
||||
"from": "From Name",
|
||||
"from-help": "The from name to display in the email.",
|
||||
|
||||
|
||||
"smtp-transport": "SMTP Transport",
|
||||
"smtp-transport.enabled": "Use an external email server to send emails",
|
||||
"smtp-transport-help": "You can select from a list of well-known services or enter a custom one.",
|
||||
@@ -22,8 +22,6 @@
|
||||
"smtp-transport.username": "Username",
|
||||
"smtp-transport.username-help": "<b>For the Gmail service,</b> enter the full email address here, especially if you are using a Google Apps managed domain.",
|
||||
"smtp-transport.password": "Password",
|
||||
"smtp-transport.pool": "Enable pooled connections",
|
||||
"smtp-transport.pool-help": "Pooling connections prevents NodeBB from creating a new connection for every email. This option only applies if SMTP Transport is enabled.",
|
||||
|
||||
"template": "Edit Email Template",
|
||||
"template.select": "Select Email Template",
|
||||
@@ -32,8 +30,8 @@
|
||||
"testing.select": "Select Email Template",
|
||||
"testing.send": "Send Test Email",
|
||||
"testing.send-help": "The test email will be sent to the currently logged in user's email address.",
|
||||
"subscriptions": "Email Digests",
|
||||
"subscriptions.disable": "Disable email digests",
|
||||
"subscriptions": "Email Subscriptions",
|
||||
"subscriptions.disable": "Disable subscriber notification emails",
|
||||
"subscriptions.hour": "Digest Hour",
|
||||
"subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. <code>0</code> for midnight, <code>17</code> for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.<br /> The approximate server time is: <span id=\"serverTime\"></span><br /> The next daily digest is scheduled to be sent <span id=\"nextDigestTime\"></span>"
|
||||
}
|
||||
@@ -1,44 +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. {pageTitle} | {browserTitle}",
|
||||
"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": "رفع",
|
||||
"pwa": "Progressive Web App",
|
||||
"touch-icon": "Touch Icon",
|
||||
"touch-icon.upload": "رفع",
|
||||
"touch-icon.help": "Recommended size and format: 512x512, PNG format only. If no touch icon is specified, NodeBB will fall back to using the favicon.",
|
||||
"maskable-icon": "Maskable (Homescreen) Icon",
|
||||
"maskable-icon.help": "Recommended size and format: 512x512, PNG format only. If no maskable icon is specified, NodeBB will fall back to the Touch Icon.",
|
||||
"favicon": "Favicon",
|
||||
"favicon.upload": "Upload",
|
||||
"touch-icon": "Homescreen/Touch Icon",
|
||||
"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"
|
||||
}
|
||||
@@ -3,10 +3,10 @@
|
||||
"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-creation": "Allow Group Creation",
|
||||
"allow-creation-help": "If enabled, users can create groups <em>(Default: disabled)</em>",
|
||||
"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",
|
||||
"cover-image": "Group Cover Image",
|
||||
"default-cover": "Default Cover Images",
|
||||
"default-cover-help": "Add comma-separated default cover images for groups that don't have an uploaded cover image"
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"language-settings": "اعدادات اللغة",
|
||||
"description": "تُحدد اللغة الافتراضية إعدادات اللغة لجميع المستخدمين الذين يزورون المنتدى. <br />يمكن للأعضاء تجاوز اللغة الافتراضية من خلال صفحة إعدادات الحساب الخاصة بهم.",
|
||||
"default-language": "اللغة الافتراضية",
|
||||
"auto-detect": "الكشف عن إعدادات اللغة للزوار بشكل آلي"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -7,22 +7,19 @@
|
||||
"sorting.most-posts": "Most Posts",
|
||||
"sorting.topic-default": "Default Topic Sorting",
|
||||
"length": "Post Length",
|
||||
"post-queue": "Post Queue",
|
||||
"restrictions": "Posting Restrictions",
|
||||
"restrictions-new": "New User Restrictions",
|
||||
"restrictions.post-queue": "Enable post queue",
|
||||
"restrictions.post-queue-rep-threshold": "Reputation required to bypass post queue",
|
||||
"restrictions.groups-exempt-from-post-queue": "Select groups that should be exempt from the post queue",
|
||||
"restrictions-new.post-queue": "Enable new user restrictions",
|
||||
"restrictions.post-queue-help": "Enabling post queue will put the posts of new users in a queue for approval",
|
||||
"restrictions-new.post-queue-help": "Enabling new user restrictions will set restrictions on posts created by new users",
|
||||
"restrictions.seconds-between": "Number of seconds between posts",
|
||||
"restrictions.post-queue-help": "Enabling post queue will put the posts of new users in a queue for approval.",
|
||||
"restrictions-new.post-queue-help": "Enabling new user restrictions will set restrictions on posts created by new users.",
|
||||
"restrictions.seconds-between": "Seconds between posts",
|
||||
"restrictions.seconds-between-new": "Seconds between posts for new users",
|
||||
"restrictions.rep-threshold": "Reputation threshold before these restrictions are lifted",
|
||||
"restrictions.seconds-before-new": "Seconds before a new user can make their first post",
|
||||
"restrictions.seconds-edit-after": "Number of seconds a post remains editable (set to 0 to disable)",
|
||||
"restrictions.seconds-delete-after": "Number of seconds a post remains deletable (set to 0 to disable)",
|
||||
"restrictions.replies-no-delete": "Number of replies after users are disallowed to delete their own topics (set to 0 to disable)",
|
||||
"restrictions.seconds-defore-new": "Seconds before new user can post",
|
||||
"restrictions.seconds-edit-after": "Number of seconds before users are allowed to edit posts after posting. (0 disabled)",
|
||||
"restrictions.seconds-delete-after": "Number of seconds before users are allowed to delete posts after posting. (0 disabled)",
|
||||
"restrictions.replies-no-delete": "Number of replies after users are disallowed to delete their own topics. (0 disabled)",
|
||||
"restrictions.min-title-length": "Minimum Title Length",
|
||||
"restrictions.max-title-length": "Maximum Title Length",
|
||||
"restrictions.min-post-length": "Minimum Post Length",
|
||||
@@ -32,8 +29,6 @@
|
||||
"timestamp": "Timestamp",
|
||||
"timestamp.cut-off": "Date cut-off (in days)",
|
||||
"timestamp.cut-off-help": "Dates & times will be shown in a relative manner (e.g. \"3 hours ago\" / \"5 days ago\"), and localised into various\n\t\t\t\t\tlanguages. After a certain point, this text can be switched to display the localised date itself\n\t\t\t\t\t(e.g. 5 Nov 2016 15:30).<br /><em>(Default: <code>30</code>, or one month). Set to 0 to always display dates, leave blank to always display relative times.</em>",
|
||||
"timestamp.necro-threshold": "Necro Threshold (in days)",
|
||||
"timestamp.necro-threshold-help": "A message will be shown between posts if the time between them is longer than the necro threshold. (Default: <code>7</code>, or one week). Set to 0 to disable.</em>",
|
||||
"teaser": "Teaser Post",
|
||||
"teaser.last-post": "Last – Show the latest post, including the original post, if no replies",
|
||||
"teaser.last-reply": "Last – Show the latest reply, or a \"No replies\" placeholder if no replies",
|
||||
@@ -42,7 +37,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",
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -1,10 +1,12 @@
|
||||
{
|
||||
"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.",
|
||||
"privacy": "Privacy",
|
||||
"list-private": "Make the tags list private",
|
||||
"related-topics": "Related Topics",
|
||||
"max-related-topics": "Maximum related topics to display (if supported by theme)"
|
||||
}
|
||||
@@ -2,7 +2,6 @@
|
||||
"posts": "المشاركات",
|
||||
"allow-files": "السماح للأعضاء بتحميل الملفات الإعتيادية",
|
||||
"private": "جعل الملفات التي تم رفعها خاصة",
|
||||
"strip-exif-data": "Strip EXIF Data",
|
||||
"private-extensions": "File extensions to make private",
|
||||
"private-uploads-extensions-help": "Enter comma-separated list of file extensions to make private here (e.g. <code>pdf,xls,doc</code>). An empty list means all files are private.",
|
||||
"resize-image-width-threshold": "Resize images if they are wider than specified width",
|
||||
|
||||
@@ -9,11 +9,12 @@
|
||||
"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": "عدم السماح بتغيير كلمة المرور",
|
||||
"allow-account-deletion": "السماح بحذف الحساب",
|
||||
"user-info-private": "إخفاء قائمة المستخدم والبيانات عن الزوار",
|
||||
"hide-fullname": "إخفاء الإسم الكامل عن المستخدمين",
|
||||
"hide-email": "إخفاء البريد الإلكتروني عن المستخدمين",
|
||||
"themes": "القوالب",
|
||||
@@ -34,15 +35,13 @@
|
||||
"online-cutoff-help": "If user performs no actions for this duration, they are considered inactive and they do not receive realtime updates.",
|
||||
"registration": "تسجيل المستخدم",
|
||||
"registration-type": "نوع التسجيل",
|
||||
"registration-approval-type": "Registration Approval Type",
|
||||
"registration-type.normal": "عادي",
|
||||
"registration-type.admin-approval": "بموافقة الإدارة",
|
||||
"registration-type.admin-approval-ip": "بموافقة الإدارة لعناوين IP",
|
||||
"registration-type.invite-only": "بالدعوات فقط",
|
||||
"registration-type.admin-invite-only": "بالدعوات من قبل الإدارة فقط",
|
||||
"registration-type.disabled": "لا يوجد تسجيل",
|
||||
"registration-type.help": "Normal - Users can register from the /register page.<br/>\nInvite Only - Users can invite others from the <a href=\"%1/users\" target=\"_blank\">users</a> page.<br/>\nAdmin Invite Only - Only administrators can invite others from <a href=\"%1/users\" target=\"_blank\">users</a> and <a href=\"%1/admin/manage/users\">admin/manage/users</a> pages.<br/>\nNo registration - No user registration.<br/>",
|
||||
"registration-approval-type.help": "Normal - Users are registered immediately.<br/>\nAdmin Approval - User registrations are placed in an <a href=\"%1/admin/manage/registration\">approval queue</a> for administrators.<br/>\nAdmin Approval for IPs - Normal for new users, Admin Approval for IP addresses that already have an account.<br/>",
|
||||
"registration-type.help": "عادي - بإمكان المستخدمين التسجيل من خلال صفحة /التسجيل.<br/>\nبموافقة الإدارة - يتم وضع قائمة تسجيلات المستخدمين في <a href=\"%1/admin/manage/registration\">قائمة إنتظار موافقة</a> الإدارة.<br/>\nبموافقة الإدارة لعناوين IP - عادي بالنسبة للمستخدمين الجدد، ويتطلب موافقة الإدارة للتسجيل من عناوين IP تم التسجيل بإستخدامها مسبقاً.<br/>\nبالدعوات فقط - بإمكان المستخدمين إرسال دعوات من خلال صفحة <a href=\"%1/users\" target=\"_blank\">الأعضاء</a>.<br/>\nبالدعوات من قبل الإدارة فقط - فقط المراء بإمكانهم إرسال الدعوات من خلال صفحة <a href=\"%1/users\" target=\"_blank\">الأعضاء</a> و صفحات <a href=\"%1/admin/manage/users\">الإدارة/المشرفين/الأعضاء</a>.<br/>\nلا يوجد تسجيل - إغلاق خيار التسجيل بالكامل.<br/>",
|
||||
"registration.max-invites": "الحد الأقصى للدعوات لكل عضو",
|
||||
"max-invites": "الحد الأقصى للدعوات لكل عضو",
|
||||
"max-invites-help": "0 لعدم تحديد قيود، الإدارة تحصل على دعوات لامحدودة <br> هذا الخيار يعمل فقط عند تحديد خيار \"بالدعوات فقط\"",
|
||||
@@ -76,4 +75,4 @@
|
||||
"categoryWatchState.watching": "Watching",
|
||||
"categoryWatchState.notwatching": "Not Watching",
|
||||
"categoryWatchState.ignoring": "Ignoring"
|
||||
}
|
||||
}
|
||||
@@ -10,9 +10,9 @@
|
||||
"watch": "تابع",
|
||||
"ignore": "تجاهل",
|
||||
"watching": "متابع",
|
||||
"not-watching": "لست متابع",
|
||||
"not-watching": "Not Watching",
|
||||
"ignoring": "متجاهل",
|
||||
"watching.description": "أظهر المواضيع في الغير مقروء و الحديث",
|
||||
"watching.description": "Show topics in unread and recent",
|
||||
"not-watching.description": "Do not show topics in unread, show in recent",
|
||||
"ignoring.description": "Do not show topics in unread and recent",
|
||||
"watching.message": "You are now watching updates from this category and all subcategories",
|
||||
|
||||
@@ -13,39 +13,30 @@
|
||||
"welcome.cta": "انقر هنا لتفعيل عنوان بريدك الإلكتروني",
|
||||
"invitation.text1": "%1 قام بدعوتك للانضمام لـ %2",
|
||||
"invitation.text2": "Your invitation will expire in %1 days.",
|
||||
"invitation.cta": "Click here to create your account.",
|
||||
"invitation.ctr": "إضغط هنا لإنشاء حسابك",
|
||||
"reset.text1": "لقد توصلنا بطلب إعادة تعيين كلمة المرور الخاصة بك، ربما لكونك قد نسيتها, إن لم يكن الأمر كذلك، المرجو تجاهل هذه الرسالة.",
|
||||
"reset.text2": "لمواصلة طلب إعاة تعيين كلمة المرور، الرجاء تتبع هذا الرابط.",
|
||||
"reset.cta": "انقر هنا لإعادة تعيين كلمة السر الخاصة بك.",
|
||||
"reset.notify.subject": "تم تغيير كلمة المرور بنجاح",
|
||||
"reset.notify.text1": "نحيطك علما أن كلمة مرورك قد تم تغييرها في %1",
|
||||
"reset.notify.text2": "إن لم يكن لديك علم بهذا، المرجو إشعار مدبر النظام بأسرع مايمكن.",
|
||||
"digest.notifications": "لديك تنبيهات غير مقروءة من طرف %1:",
|
||||
"digest.latest_topics": "آخر المستجدات من %1",
|
||||
"digest.top-topics": "Top topics from %1",
|
||||
"digest.popular-topics": "Popular topics from %1",
|
||||
"digest.cta": "انقر هنا لمشاهدة %1",
|
||||
"digest.unsub.info": "تم إرسال هذا الإشعار بآخر المستجدات وفقا لخيارات تسجيلكم.",
|
||||
"digest.no_topics": "ليس هناك مواضيع نشيطة في %1 الماضي",
|
||||
"digest.day": "يوم",
|
||||
"digest.week": "أسبوع",
|
||||
"digest.month": "شهر",
|
||||
"digest.subject": "إستهلاك ل",
|
||||
"digest.title.day": "Your Daily Digest",
|
||||
"digest.title.week": "Your Weekly Digest",
|
||||
"digest.title.month": "Your Monthly Digest",
|
||||
"notif.chat.subject": "هناك محادثة جديدة من %1",
|
||||
"notif.chat.cta": "انقر هنا لمتابعة المحادثة",
|
||||
"notif.chat.unsub.info": "تم إرسال هذا الإشعار بوجودة محادثة جديدة وفقا لخيارات تسجيلك.",
|
||||
"notif.post.cta": "انقر هنا لقراءة الموضوع بأكمله",
|
||||
"notif.post.unsub.info": "تم إشعارك بهذه المشاركة بناءً على الخيارات التي سبق وأن حددتها.",
|
||||
"notif.post.unsub.one-click": "Alternatively, unsubscribe from future emails like this, by clicking",
|
||||
"notif.cta": "To the forum",
|
||||
"notif.cta-new-reply": "View Post",
|
||||
"notif.cta-new-chat": "View Chat",
|
||||
"notif.test.short": "Testing Notifications",
|
||||
"notif.test.long": "This is a test of the notifications email. Send help!",
|
||||
"notif.cta": "Click here to go to forum",
|
||||
"test.text1": "هذه رسالة تجريبية للتأكد من صحة إعدادت الرسائل الإلكترونية في منتدى NodeBB خاصتك.",
|
||||
"unsub.cta": "انقر هنا لتغيير تلك الإعدادات",
|
||||
"unsubscribe": "unsubscribe",
|
||||
"unsub.success": "You will no longer receive emails from the <strong>%1</strong> mailing list",
|
||||
"banned.subject": "You have been banned from %1",
|
||||
"banned.text1": "The user %1 has been banned from %2.",
|
||||
"banned.text2": "This ban will last until %1.",
|
||||
|
||||
@@ -11,9 +11,6 @@
|
||||
"invalid-uid": "مستخدم غير موجود",
|
||||
"invalid-username": "اسم المستخدم غير مقبول",
|
||||
"invalid-email": "البريد الاكتروني غير مقبول",
|
||||
"invalid-fullname": "Invalid Fullname",
|
||||
"invalid-location": "Invalid Location",
|
||||
"invalid-birthday": "Invalid Birthday",
|
||||
"invalid-title": "Invalid title",
|
||||
"invalid-user-data": "بيانات المستخدم غير صحيحة",
|
||||
"invalid-password": "كلمة السر غير مقبولة",
|
||||
@@ -26,19 +23,16 @@
|
||||
"invalid-pagination-value": "رقم الصفحة غير صحيح ، يجب أن يكون بين %1 و %2 .",
|
||||
"username-taken": "اسم المستخدم مأخوذ",
|
||||
"email-taken": "البريد الالكتروني مأخوذ",
|
||||
"email-invited": "Email was already invited",
|
||||
"email-not-confirmed": "You are unable to post until your email is confirmed, please click here to confirm your email.",
|
||||
"email-not-confirmed": "عنوان بريدك الإلكتروني غير مفعل بعد. انقر هنا لتفعيله من فضلك.",
|
||||
"email-not-confirmed-chat": "لا يمكنك الدردشة حتى تقوم بتأكيد بريدك الإلكتروني، الرجاء إضغط هنا لتأكيد بريدك اﻹلكتروني.",
|
||||
"email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You won't be able to post or chat until your email is confirmed.",
|
||||
"email-not-confirmed-email-sent": "بريدك الإلكتروني غير مفعل. رجاءًا تفحص صندوق البريد عن رسالة التفعيل.",
|
||||
"no-email-to-confirm": "هذا المنتدى يستلزم تفعيل بريدك الإلكتروني، انقر هنا من فضلك لإدخاله.",
|
||||
"email-confirm-failed": "لم نستطع تفعيل بريدك الإلكتروني، المرجو المحاولة لاحقًا.",
|
||||
"confirm-email-already-sent": "لقد تم ارسال بريد التأكيد، الرجاء اﻹنتظار 1% دقائق لإعادة اﻹرسال",
|
||||
"sendmail-not-found": "The sendmail executable could not be found, please ensure it is installed and executable by the user running NodeBB.",
|
||||
"digest-not-enabled": "This user does not have digests enabled, or the system default is not configured to send digests",
|
||||
"username-too-short": "اسم المستخدم قصير.",
|
||||
"username-too-long": "اسم المستخدم طويل",
|
||||
"password-too-long": "كلمة السر طويلة ",
|
||||
"reset-rate-limited": "Too many password reset requests (rate limited)",
|
||||
"user-banned": "المستخدم محظور",
|
||||
"user-banned-reason": "Sorry, this account has been banned (Reason: %1)",
|
||||
"user-banned-reason-until": "Sorry, this account has been banned until %1 (Reason: %2)",
|
||||
@@ -104,8 +98,6 @@
|
||||
"group-needs-owner": "هذه المجموعة تتطلب مالك واحد على اﻷقل",
|
||||
"group-already-invited": "المستخدم سبق وأن تمت دعوته",
|
||||
"group-already-requested": "سبق وتم تسجيل طلب العضوية",
|
||||
"group-join-disabled": "You are not able to join this group at this time",
|
||||
"group-leave-disabled": "You are not able to leave this group at this time",
|
||||
"post-already-deleted": "سبق وتم حذف هذا الرد",
|
||||
"post-already-restored": "سبق وتم إلغاء حذف هذا الرد",
|
||||
"topic-already-deleted": "سبق وتم حذف هذا الموضوع",
|
||||
@@ -139,13 +131,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": "حدث خطأ ما أثناء تحليل استجابة الخادم",
|
||||
@@ -156,6 +143,7 @@
|
||||
"invite-maximum-met": "لقد قمت بدعوة الحد الأقصى من الأشخاص (%1 من %2)",
|
||||
"no-session-found": "لم دخول مسجل!",
|
||||
"not-in-room": "المستخدم غير موجود في الغرفة.",
|
||||
"no-users-in-room": "لا يوجد مستخدمين في الغرفة.",
|
||||
"cant-kick-self": "لا يمكنك طرد نفسك من المجموعة.",
|
||||
"no-users-selected": "لا يوجد مستخدم محدد.",
|
||||
"invalid-home-page-route": "Invalid home page route",
|
||||
@@ -163,12 +151,10 @@
|
||||
"invalid-session-text": "يبدو أن فترة التسجيل لم تعد قائمة او هي غير مطابقة مع الخادم. يرجى إعادة تحميل هذه الصفحة.",
|
||||
"no-topics-selected": "No topics selected!",
|
||||
"cant-move-to-same-topic": "Can't move post to same topic!",
|
||||
"cant-move-topic-to-same-category": "Can't move topic to the same category!",
|
||||
"cannot-block-self": "You cannot block yourself!",
|
||||
"cannot-block-privileged": "You cannot block administrators or global moderators",
|
||||
"cannot-block-guest": "Guest are not able to block other users",
|
||||
"already-blocked": "This user is already blocked",
|
||||
"already-unblocked": "This user is already unblocked",
|
||||
"no-connection": "There seems to be a problem with your internet connection",
|
||||
"plugin-not-whitelisted": "Unable to install plugin – only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP"
|
||||
"no-connection": "There seems to be a problem with your internet connection"
|
||||
}
|
||||
@@ -1,71 +1,55 @@
|
||||
{
|
||||
"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 & 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",
|
||||
|
||||
"sort": "Sort by",
|
||||
"sort-newest": "Newest first",
|
||||
"sort-oldest": "Oldest first",
|
||||
"sort-reports": "Most reports",
|
||||
"sort-all": "All flag types...",
|
||||
"sort-posts-only": "Posts only...",
|
||||
"sort-downvotes": "Most downvotes",
|
||||
"sort-upvotes": "Most upvotes",
|
||||
"sort-replies": "Most replies",
|
||||
"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.",
|
||||
@@ -77,9 +61,5 @@
|
||||
"modal-submit-success": "Content has been flagged for moderation.",
|
||||
"modal-submit-confirm": "Confirm Submission",
|
||||
"modal-submit-confirm-text": "You have a custom reason specified already. Are you sure you wish to submit via quick-report?",
|
||||
"modal-submit-confirm-text-help": "Submitting a quick report will overwrite any custom reasons defined.",
|
||||
|
||||
"bulk-actions": "Bulk Actions",
|
||||
"bulk-resolve": "Resolve Flag(s)",
|
||||
"bulk-success": "%1 flags updated"
|
||||
"modal-submit-confirm-text-help": "Submitting a quick report will overwrite any custom reasons defined."
|
||||
}
|
||||
@@ -30,7 +30,6 @@
|
||||
"header.unread": "غير مقروء",
|
||||
"header.tags": "وسم",
|
||||
"header.popular": "الأكثر شهرة",
|
||||
"header.top": "Top",
|
||||
"header.users": "المستخدمين",
|
||||
"header.groups": "المجموعات",
|
||||
"header.chats": "المحادثات",
|
||||
@@ -49,23 +48,18 @@
|
||||
"alert.banned.message": "لقد تم حظر حسابك. سيتم تسجيل الخروج.",
|
||||
"alert.unfollow": "أنت لا تتابع %1 بعد الآن!",
|
||||
"alert.follow": "أنت الآن تتابع %1!",
|
||||
"online": "المتواجدون حاليًّا",
|
||||
"users": "الأعضاء",
|
||||
"topics": "المواضيع",
|
||||
"posts": "المشاركات",
|
||||
"x-posts": "%1 posts",
|
||||
"best": "الأفضل",
|
||||
"votes": "Votes",
|
||||
"x-votes": "%1 votes",
|
||||
"voters": "Voters",
|
||||
"upvoters": "الموافقين",
|
||||
"upvoted": "مصوت بالموجب",
|
||||
"downvoters": "مصوتين بالسالب",
|
||||
"downvoted": "مصوت بالسالب",
|
||||
"views": "المشاهدات",
|
||||
"posters": "Posters",
|
||||
"reputation": "السمعة",
|
||||
"lastpost": "Last post",
|
||||
"firstpost": "First post",
|
||||
"read_more": "اقرأ المزيد",
|
||||
"more": "المزيد",
|
||||
"posted_ago_by_guest": "كتب %1 بواسطة زائر",
|
||||
@@ -83,7 +77,6 @@
|
||||
"recentposts": "آخر المشاركات",
|
||||
"recentips": "آخر عناوين ال IP التي سجلت الدخول",
|
||||
"moderator_tools": "أدوات المشرف",
|
||||
"online": "المتواجدون حاليًّا",
|
||||
"away": "غير متواجد",
|
||||
"dnd": "عدم الإزعاج",
|
||||
"invisible": "مخفي",
|
||||
|
||||
@@ -25,7 +25,6 @@
|
||||
"details.latest_posts": "آخر المشاركات",
|
||||
"details.private": "خاص",
|
||||
"details.disableJoinRequests": "Disable join requests",
|
||||
"details.disableLeave": "Disallow users from leaving the group",
|
||||
"details.grant": "منح/سحب المِلكية",
|
||||
"details.kick": "طرد",
|
||||
"details.kick_confirm": "Are you sure you want to remove this member from the group?",
|
||||
@@ -37,8 +36,7 @@
|
||||
"details.description": "الوصف",
|
||||
"details.badge_preview": "معاينة الوسام",
|
||||
"details.change_icon": "تغيير الأيقونة",
|
||||
"details.change_label_colour": "Change Label Colour",
|
||||
"details.change_text_colour": "Change Text Colour",
|
||||
"details.change_colour": "تغيير اللون",
|
||||
"details.badge_text": "نص الوسام",
|
||||
"details.userTitleEnabled": "إظهار الوسام",
|
||||
"details.private_help": "في حالة تفعيل الخيار، الانضمام إلى المجموعة يستلزم قبول مالكها",
|
||||
@@ -49,11 +47,9 @@
|
||||
"event.updated": "تم تحديث بيانات المجموعة",
|
||||
"event.deleted": "تم حذف المجموعة %1",
|
||||
"membership.accept-invitation": "اقبل الدعوة",
|
||||
"membership.accept.notification_title": "You are now a member of <strong>%1</strong>",
|
||||
"membership.invitation-pending": "الدعوة بانتظار القبول",
|
||||
"membership.join-group": "انظم للمجموعة",
|
||||
"membership.leave-group": "غادر المجموعة",
|
||||
"membership.leave.notification_title": "<strong>%1</strong> has left group <strong>%2</strong>",
|
||||
"membership.reject": "رفض",
|
||||
"new-group.group_name": "اسم المجموعة",
|
||||
"upload-group-cover": "Upload group cover",
|
||||
|
||||
@@ -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",
|
||||
@@ -36,9 +34,6 @@
|
||||
"chat.kick": "Kick",
|
||||
"chat.show-ip": "Show IP",
|
||||
"chat.owner": "Room Owner",
|
||||
"chat.system.user-join": "%1 has joined the room",
|
||||
"chat.system.user-leave": "%1 has left the room",
|
||||
"chat.system.room-rename": "%2 has renamed this room: %1",
|
||||
"composer.compose": "اكتب",
|
||||
"composer.show_preview": "عرض المعاينة",
|
||||
"composer.hide_preview": "إخفاء المعاينة",
|
||||
@@ -59,7 +54,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": "تأكيد",
|
||||
|
||||
@@ -5,20 +5,20 @@
|
||||
"mark_all_read": "اجعل كل التنبيهات مقروءة",
|
||||
"back_to_home": "عودة إلى %1",
|
||||
"outgoing_link": "رابط خارجي",
|
||||
"outgoing_link_message": "أنت تغادر اﻻن %1",
|
||||
"outgoing_link_message": "You are now leaving %1",
|
||||
"continue_to": "استمر إلى %1",
|
||||
"return_to": "عودة إى %1",
|
||||
"new_notification": "لديك تنبيه جديد",
|
||||
"new_notification": "You have a new notification",
|
||||
"you_have_unread_notifications": "لديك تنبيهات غير مقروءة.",
|
||||
"all": "الكل",
|
||||
"topics": "مواضيع",
|
||||
"replies": "ردود",
|
||||
"chat": "محادثات",
|
||||
"follows": "متابعون",
|
||||
"upvote": "الموافقين",
|
||||
"all": "All",
|
||||
"topics": "Topics",
|
||||
"replies": "Replies",
|
||||
"chat": "Chats",
|
||||
"follows": "Follows",
|
||||
"upvote": "Upvotes",
|
||||
"new-flags": "New Flags",
|
||||
"my-flags": "Flags assigned to me",
|
||||
"bans": "الحظر",
|
||||
"bans": "Bans",
|
||||
"new_message_from": "رسالة جديدة من <strong>%1</strong>",
|
||||
"upvoted_your_post_in": "<strong>%1</strong> أضاف صوتًا إيجابيا إلى مشاركتك في <strong>%2</strong>.",
|
||||
"upvoted_your_post_in_dual": "<strong>%1</strong> and <strong>%2</strong> have upvoted your post in <strong>%3</strong>.",
|
||||
@@ -35,29 +35,24 @@
|
||||
"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.",
|
||||
"new_register": "<strong>%1</strong> sent a registration request.",
|
||||
"new_register_multiple": "There are <strong>%1</strong> registration requests awaiting review.",
|
||||
"flag_assigned_to_you": "تم تخصيص العلامة 1% لك",
|
||||
"flag_assigned_to_you": "<strong>Flag %1</strong> has been assigned to you",
|
||||
"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": "حدث خطأ أثناء التحقق من عنوان بريدك الإلكتروني. ربما رمز التفعيل خاطئ أو انتهت صلاحيته.",
|
||||
"email-confirm-sent": "تم إرسال بريد التفعيل.",
|
||||
"none": "None",
|
||||
"notification_only": "التنبيهات فقط",
|
||||
"email_only": "البريد الالكتروني فقط",
|
||||
"notification_and_email": "التنبيهات والبريد اﻻلكتروني",
|
||||
"notificationType_upvote": "عندما يوافقك احدهم على منشورك",
|
||||
"notification_only": "Notification Only",
|
||||
"email_only": "Email Only",
|
||||
"notification_and_email": "Notification & Email",
|
||||
"notificationType_upvote": "When someone upvotes your post",
|
||||
"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",
|
||||
|
||||
@@ -43,7 +43,6 @@
|
||||
"account/following": "People %1 follows",
|
||||
"account/followers": "People who follow %1",
|
||||
"account/posts": "Posts made by %1",
|
||||
"account/latest-posts": "Latest posts made by %1",
|
||||
"account/topics": "Topics created by %1",
|
||||
"account/groups": "%1's Groups",
|
||||
"account/watched_categories": "%1's Watched Categories",
|
||||
|
||||
@@ -7,10 +7,9 @@
|
||||
"wrong_reset_code.message": "رمز إعادة التعين غير صحيح، يرجى المحاولة مرة أخرى أو <a href='/reset'>اطلب رمزا جديدا</a>",
|
||||
"new_password": "كلمة المرور الجديدة",
|
||||
"repeat_password": "تأكيد كلمة المرور",
|
||||
"changing_password": "Changing Password",
|
||||
"enter_email": "يرجى إدخال <strong>عنوان البريد الإلكتروني</strong> الخاص بك وسوف نرسل لك رسالة بالبريد الالكتروني مع تعليمات حول كيفية إستعادة حسابك.",
|
||||
"enter_email_address": "ادخل عنوان البريد الإلكتروني",
|
||||
"password_reset_sent": "If the specified address corresponds to an existing user account, a password reset email was sent. Please note that only one email will be sent per minute.",
|
||||
"password_reset_sent": "A password reset email has been sent to the specified address. Please note that only one email will be sent per minute.",
|
||||
"invalid_email": "بريد إلكتروني غير صالح أو غير موجود",
|
||||
"password_too_short": "كلمة المرور التي أدخلتها قصيرة، الرجاء اختر كلمة مرور مختلفة",
|
||||
"passwords_do_not_match": "كلمتا السر التي أدخلتهما غير متطابقتان",
|
||||
|
||||
@@ -43,7 +43,5 @@
|
||||
"clear-preferences": "ازالة التفضيلات",
|
||||
"search-preferences-saved": "تم حفظ تفضيلات البحث",
|
||||
"search-preferences-cleared": "تم ازالة تفضيلات البحث",
|
||||
"show-results-as": "عرض النتائج كـ",
|
||||
"see-more-results": "See more results (%1)",
|
||||
"search-in-category": "Search in \"%1\""
|
||||
"show-results-as": "عرض النتائج كـ"
|
||||
}
|
||||
@@ -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": "لا يوجد كلمات دلالية بعد."
|
||||
}
|
||||
@@ -1,5 +1,7 @@
|
||||
{
|
||||
"topic": "موضوع",
|
||||
"topic_id": "معرف الموضوع",
|
||||
"topic_id_placeholder": "أدخل معرف الموضوع",
|
||||
"no_topics_found": "لا توجد مواضيع !",
|
||||
"no_posts_found": "لا توجد مشاركات!",
|
||||
"post_is_deleted": "هذه المشاركة محذوفة!",
|
||||
@@ -16,13 +18,11 @@
|
||||
"last_reply_time": "Last reply",
|
||||
"reply-as-topic": "رد بموضوع",
|
||||
"guest-login-reply": "يجب عليك تسجيل الدخول للرد",
|
||||
"login-to-view": "🔒 Log in to view",
|
||||
"edit": "تعديل",
|
||||
"delete": "حذف",
|
||||
"purge": "تطهير",
|
||||
"restore": "استعادة",
|
||||
"move": "نقل",
|
||||
"change-owner": "Change Owner",
|
||||
"fork": "فرع",
|
||||
"link": "رابط",
|
||||
"share": "نشر",
|
||||
@@ -34,11 +34,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.",
|
||||
@@ -67,7 +64,6 @@
|
||||
"thread_tools.move": "نقل الموضوع",
|
||||
"thread_tools.move-posts": "Move Posts",
|
||||
"thread_tools.move_all": "نقل الكل",
|
||||
"thread_tools.change_owner": "Change Owner",
|
||||
"thread_tools.select_category": "Select Category",
|
||||
"thread_tools.fork": "إنشاء فرع الموضوع",
|
||||
"thread_tools.delete": "حذف الموضوع",
|
||||
@@ -79,10 +75,7 @@
|
||||
"thread_tools.purge_confirm": "هل أنت متأكد أنك تريد تطهير هذا الموضوع؟",
|
||||
"thread_tools.merge_topics": "Merge Topics",
|
||||
"thread_tools.merge": "Merge",
|
||||
"topic_move_success": "This topic will be moved shortly. Click here to undo.",
|
||||
"topic_move_undone": "Topic move undone",
|
||||
"topic_move_posts_success": "Posts will be moved shortly. Click here to undo.",
|
||||
"topic_move_posts_undone": "Post move undone",
|
||||
"topic_move_success": "تم نقل هذا الموضوع إلى %1 بنجاح",
|
||||
"post_delete_confirm": "هل أنت متأكد أنك تريد حذف هذه المشاركة؟",
|
||||
"post_restore_confirm": "هل أنت متأكد أنك تريد استعادة هذه المشاركة؟",
|
||||
"post_purge_confirm": "هل أنت متأكد أنك تريد تطهير هذه المشاركة؟",
|
||||
@@ -100,21 +93,13 @@
|
||||
"fork_topic": "فرع الموضوع",
|
||||
"fork_topic_instruction": "إضغط على المشاركات التي تريد تفريعها",
|
||||
"fork_no_pids": "لم تختر أي مشاركة",
|
||||
"no-posts-selected": "No posts selected!",
|
||||
"x-posts-selected": "%1 post(s) selected",
|
||||
"x-posts-will-be-moved-to-y": "%1 post(s) will be moved to \"%2\"",
|
||||
"fork_pid_count": "1% مشاركة محددة",
|
||||
"fork_success": "تم إنشاء فرع للموضوع بنجاح! إضغط هنا لمعاينة الفرع.",
|
||||
"delete_posts_instruction": "Click the posts you want to delete/purge",
|
||||
"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",
|
||||
"move_posts_instruction": "Click the posts you want to move then go to target topic and click move.",
|
||||
"change_owner_instruction": "Click the posts you want to assign to another user",
|
||||
"merge_topics_instruction": "Click the topics you want to merge",
|
||||
"move_posts_instruction": "Click the posts you want to move",
|
||||
"composer.title_placeholder": "أدخل عنوان موضوعك هنا...",
|
||||
"composer.handle_placeholder": "Enter your name/handle here",
|
||||
"composer.handle_placeholder": "اﻹسم",
|
||||
"composer.discard": "نبذ التغييرات",
|
||||
"composer.submit": "حفظ",
|
||||
"composer.replying_to": "الرد على %1",
|
||||
@@ -144,10 +129,5 @@
|
||||
"diffs.description": "This post has <strong>%1</strong> revisions. Click one of the revisions below to see the post content at that point in time.",
|
||||
"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"
|
||||
"diffs.original-revision": "original revision"
|
||||
}
|
||||
@@ -1,27 +1,20 @@
|
||||
{
|
||||
"banned": "محظور",
|
||||
"offline": "غير متصل",
|
||||
"deleted": "محذوف",
|
||||
"deleted": "Deleted",
|
||||
"username": "إسم المستخدم",
|
||||
"joindate": "تاريخ الإنضمام",
|
||||
"postcount": "عدد المشاركات",
|
||||
"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": "الموقع",
|
||||
@@ -33,7 +26,6 @@
|
||||
"reputation": "السمعة",
|
||||
"bookmarks": "Bookmarks",
|
||||
"watched_categories": "Watched categories",
|
||||
"change_all": "Change All",
|
||||
"watched": "متابع",
|
||||
"ignored": "تم تجاهله",
|
||||
"default-category-watch-state": "Default category watch state",
|
||||
@@ -111,7 +103,12 @@
|
||||
"posts_per_page": "الردود في كل صفحة",
|
||||
"max_items_per_page": "أقصى %1",
|
||||
"acp_language": "Admin Page Language",
|
||||
"notifications": "Notifications",
|
||||
"notification_sounds": "تشغيل صوت عند تلقي تنبيه",
|
||||
"notifications_and_sounds": "التنبيهات والأصوات",
|
||||
"incoming-message-sound": "صوت الرسالة الواردة",
|
||||
"outgoing-message-sound": "صوت الرسائل الصادرة",
|
||||
"notification-sound": "صوت التنبيهات",
|
||||
"no-sound": "بدون صوت",
|
||||
"upvote-notif-freq": "معدل تكرار تنبيهات التصويت للأعلى",
|
||||
"upvote-notif-freq.all": "كل التصويتات للأعلى",
|
||||
"upvote-notif-freq.first": "First Per Post",
|
||||
@@ -127,7 +124,6 @@
|
||||
"follow_topics_you_reply_to": "متابعة المواضيع التي تقوم بالرد عليها",
|
||||
"follow_topics_you_create": "متابعة المواضيع التي تقوم بإنشائها",
|
||||
"grouptitle": "عنوان المجموعة",
|
||||
"group-order-help": "Select a group and use the arrows to order titles",
|
||||
"no-group-title": "لا يوجد عنوان للمجموعة",
|
||||
"select-skin": "إختر سمة",
|
||||
"select-homepage": "إختر الصفحة الرئيسية",
|
||||
@@ -146,7 +142,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": "لم يتم إعطاء سبب.",
|
||||
@@ -173,10 +168,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)"
|
||||
}
|
||||
@@ -22,7 +22,6 @@
|
||||
"mongo.bytes-out": "Байтове ИЗХ",
|
||||
"mongo.num-requests": "Брой заявки",
|
||||
"mongo.raw-info": "Сурови данни от MongoDB",
|
||||
"mongo.unauthorized": "NodeBB не успя да получи нужните статистики от MongoDB. Моля, уверете се, че потребителят, който се използва от NodeBB, включва ролята „clusterMonitor“ за базата данни „admin“.",
|
||||
|
||||
"redis": "Redis",
|
||||
"redis.version": "Версия на Redis",
|
||||
|
||||
@@ -2,11 +2,5 @@
|
||||
"events": "Събития",
|
||||
"no-events": "Няма събития",
|
||||
"control-panel": "Контролен панел за събитията",
|
||||
"delete-events": "Изтриване на събитията",
|
||||
"filters": "Филтри",
|
||||
"filters-apply": "Прилагане на филтрите",
|
||||
"filter-type": "Вид събитие",
|
||||
"filter-start": "Начална дата",
|
||||
"filter-end": "Крайна дата",
|
||||
"filter-perPage": "На страница"
|
||||
"delete-events": "Изтриване на събитията"
|
||||
}
|
||||
@@ -8,7 +8,7 @@
|
||||
"custom-js.enable": "Включване на персонализирания код на Javascript",
|
||||
|
||||
"custom-header": "Персонализирана заглавна част",
|
||||
"custom-header.description": "Въведете своя персонализиран код HTML тук (напр. елементи „meta“ и т.н.), те ще бъдат добавени към секцията <code><head></code> в кода на Вашия форум. Ползването на елементи „script“ е позволено, но непрепоръчително, тъй като за това можете да ползвате раздела <a href=\"#custom-js\" data-toggle=\"tab\">Персонализиран код на Javascript</a>.",
|
||||
"custom-header.description": "Въведете своя персонализиран код HTML тук (напр. елементи „meta“ и т.н.), те ще бъдат добавени към секцията <code><head></code> в кода на Вашия форум. Ползването на елементи „script“ е позволено, но непрепоръчително, тъй като за това можете да ползвате раздела <a href=\"#custom-header\" data-toggle=\"tab\">Персонализиран код на Javascript</a>.",
|
||||
"custom-header.enable": "Включване на персонализирана заглавна част",
|
||||
|
||||
"custom-css.livereload": "Включване на моменталното презареждане",
|
||||
|
||||
@@ -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": "Няма разглеждащи потребители"
|
||||
}
|
||||
@@ -1,16 +1,13 @@
|
||||
{
|
||||
"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": "на линия",
|
||||
"git": "git",
|
||||
"memory": "памет",
|
||||
"load": "натоварване на системата",
|
||||
"cpu-usage": "използване на процесора",
|
||||
"load": "натоварване",
|
||||
"uptime": "активно време",
|
||||
|
||||
"registered": "Регистрирани",
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
{
|
||||
"trending": "Популярни",
|
||||
"installed": "Инсталирани",
|
||||
"active": "Включени",
|
||||
"inactive": "Изключени",
|
||||
@@ -10,7 +9,6 @@
|
||||
|
||||
"plugin-search": "Търсене на добавки",
|
||||
"plugin-search-placeholder": "Търсене на добавка…",
|
||||
"submit-anonymous-usage": "Изпращане на анонимни данни за употребата на добавката",
|
||||
"reorder-plugins": "Пренареждане на добавките",
|
||||
"order-active": "Подреждане на включените добавки",
|
||||
"dev-interested": "Искате ли да пишете добавки за NodeBB?",
|
||||
@@ -31,8 +29,6 @@
|
||||
"plugin-item.more-info": "За повече информация",
|
||||
"plugin-item.unknown": "Неизвестно",
|
||||
"plugin-item.unknown-explanation": "Състоянието на тази добавка не може да бъде определено, може би поради грешка в конфигурацията.",
|
||||
"plugin-item.compatible": "Тази добавка работи с NodeBB %1",
|
||||
"plugin-item.not-compatible": "Тази добавка няма информация за съвместимост. Уверете се, че работи, преди да я инсталирате на истинския си сървър.",
|
||||
|
||||
"alert.enabled": "Добавката е включена",
|
||||
"alert.disabled": "Добавката е изключена",
|
||||
|
||||
@@ -18,13 +18,5 @@
|
||||
"alert.update-success": "Джаджите са обновени успешно",
|
||||
"alert.clone-success": "Джаджите са клонирани успешно",
|
||||
|
||||
"error.select-clone": "Изберете страница, от която да клонирате",
|
||||
|
||||
"title": "Заглавие",
|
||||
"title.placeholder": "Заглавие (показва се само в някои контейнери)",
|
||||
"container": "Контейнер",
|
||||
"container.placeholder": "Завлачете и пуснете контейнер или въведете HTML тук.",
|
||||
"show-to-groups": "Показване на групите",
|
||||
"hide-from-groups": "Скриване от групите",
|
||||
"hide-on-mobile": "Скриване на мобилни устройства"
|
||||
"error.select-clone": "Изберете страница, от която да клонирате"
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
"forum-traffic": "Трафик на форума",
|
||||
"page-views": "Преглеждания на страниците",
|
||||
"unique-visitors": "Уникални посетители",
|
||||
"new-users": "Нови потребители",
|
||||
"users": "Потребители",
|
||||
"posts": "Публикации",
|
||||
"topics": "Теми",
|
||||
"page-views-seven": "Последните 7 дни",
|
||||
@@ -14,12 +14,9 @@
|
||||
"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.day": "Ден",
|
||||
"stats.week": "Седмица",
|
||||
"stats.month": "Месец",
|
||||
"stats.all": "От началото",
|
||||
|
||||
"updates": "Обновления",
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
"tooltip": "Подсказка:",
|
||||
"text": "Текст:",
|
||||
"text-class": "Текстов клас: <small>незадължително</small>",
|
||||
"class": "Клас: <small>незадължително</small>",
|
||||
"id": "Идентификатор: <small>незадължително</small>",
|
||||
|
||||
"properties": "Свойства:",
|
||||
|
||||
@@ -11,14 +11,12 @@
|
||||
"num-recent-replies": "Брой на скорошните отговори",
|
||||
"ext-link": "Външна връзка",
|
||||
"is-section": "Използване на тази категория като раздел",
|
||||
"tag-whitelist": "Списък от разрешени етикети",
|
||||
"upload-image": "Качване на изображение",
|
||||
"delete-image": "Премахване",
|
||||
"category-image": "Изображение на категорията",
|
||||
"parent-category": "Базова категория",
|
||||
"optional-parent-category": "(Незадължително) Базова категория",
|
||||
"parent-category-none": "(Няма)",
|
||||
"copy-parent": "Копиране на базовата",
|
||||
"copy-settings": "Копиране на настройките от",
|
||||
"optional-clone-settings": "(Незадължително) Копиране на настройките от категория",
|
||||
"clone-children": "Клониране на дъщерните категории и настройки",
|
||||
@@ -27,19 +25,16 @@
|
||||
"enable": "Включване",
|
||||
"disable": "Изключване",
|
||||
"edit": "Редактиране",
|
||||
"analytics": "Анализи",
|
||||
"view-category": "Преглед на категорията",
|
||||
|
||||
"select-category": "Изберете категория",
|
||||
"set-parent-category": "Задайте базова категория",
|
||||
|
||||
"privileges.description": "В тази секция можете да настроите правомощията за достъп до различните части на уеб сайта Правомощията могат да бъдат давани на отделни потребители или на цели групи. Изберете обхвата на приложение от падащото меню по-долу.",
|
||||
"privileges.description": "В тази секция можете да настроите правомощията за достъп до тази категория. Правомощията могат да бъдат давани на отделни потребители или на цели групи. Изберете обхвата на приложение от падащото меню по-долу.",
|
||||
"privileges.category-selector": "Настройване на правомощията за ",
|
||||
"privileges.warning": "<strong>Забележка</strong>: Настройките за правомощията влизат в сила моментално. Не е нужно да запазвате категорията след като промените тези настройки.",
|
||||
"privileges.section-viewing": "Правомощия за преглед",
|
||||
"privileges.section-posting": "Правомощия за публикуване",
|
||||
"privileges.section-moderation": "Правомощия за модериране",
|
||||
"privileges.section-other": "Други",
|
||||
"privileges.section-user": "Потребител",
|
||||
"privileges.search-user": "Добавяне на потребител",
|
||||
"privileges.no-users": "В тази категория няма правомощия за отделни потребители.",
|
||||
@@ -48,12 +43,7 @@
|
||||
"privileges.search-group": "Добавяне на група",
|
||||
"privileges.copy-to-children": "Копиране в наследниците",
|
||||
"privileges.copy-from-category": "Копиране от категория",
|
||||
"privileges.copy-privileges-to-all-categories": "Копиране във всички категории",
|
||||
"privileges.copy-group-privileges-to-children": "Копиране на правомощията на тази група в поделементите на тази категория.",
|
||||
"privileges.copy-group-privileges-to-all-categories": "Копиране на правомощията на тази група във всички категории.",
|
||||
"privileges.copy-group-privileges-from": "Копиране на правомощията на тази група от друга категория.",
|
||||
"privileges.inherit": "Ако групата на <code>регистрираните потребители</code> получи дадено правомощие, всички останали групи го получават като <strong>подразбиращо се правомощие</strong>, дори то да не им е специално дадено. Вие виждате това подразбиращо се правомощие, защото всички потребители са членове на групата на <code>регистрираните потребители</code>, така че няма нужда да се дават едни и същи правомощия на още групи.",
|
||||
"privileges.copy-success": "Правомощията са копирани!",
|
||||
|
||||
"analytics.back": "Назад към списъка с категориите",
|
||||
"analytics.title": "Аналитични данни за категорията „%1“",
|
||||
@@ -66,6 +56,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 +68,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": "Изключване при създаване"
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
{
|
||||
"lead": "По-долу са показани статистики и времена за разпращането на резюмета.",
|
||||
"disclaimer": "Имайте предвид, че при доставката на е-поща няма гаранции, поради същността на технологията за е-пощата. Много неща влияят на това дали едно изпратено е-писмо настина достига до получателя си, като: репутация на сървъра, блокирани IP адреси или това дали е настроено DKIM/SPF/DMARC.",
|
||||
"disclaimer-continued": "Успешната доставка означава, че съобщението е изпратено успешно от NodeBB и потвърдено от сървъра на получателя. Това не означава, че писмото е достигнало до входящата кутия на получателя. За да имате по-добри резултати, препоръчвам използването на специализирана услуга за изпращане на е-писма, като <a href=\"https://sendgrid.com/why-sendgrid/\">SendGrid</a>.",
|
||||
|
||||
"user": "Потребител",
|
||||
"subscription": "Вид на абонамента",
|
||||
"last-delivery": "Последна успешна доставка",
|
||||
"default": "По подразбиране за системата",
|
||||
"default-help": "<em>По подразбиране за системата</em> означава, че потребителят не е избрал ръчно друга настройка за глобалния форум за резюметата, която в момента е;„%1</strong>“",
|
||||
"resend": "Повторно изпращане на резюмето",
|
||||
"resend-all-confirm": "Наистина ли искате да предизвикате ръчно изпращането на резюмето?",
|
||||
"resent-single": "Ръчното повторно разпращане на резюмето е завършено",
|
||||
"resent-day": "Дневното резюме беше изпратено повторно",
|
||||
"resent-week": "Седмичното резюме беше изпратено повторно",
|
||||
"resent-month": "Месечното резюме беше изпратено повторно",
|
||||
"null": "<em>Никога</em>",
|
||||
"manual-run": "Ръчно разпращане на резюмето:",
|
||||
|
||||
"no-delivery-data": "Няма данни за доставката"
|
||||
}
|
||||
@@ -1,16 +1,9 @@
|
||||
{
|
||||
"name": "Име на групата",
|
||||
"badge": "Емблема",
|
||||
"properties": "Свойства",
|
||||
"description": "Описание на групата",
|
||||
"member-count": "Брой на членовете",
|
||||
"system": "Системна",
|
||||
"hidden": "Скрита",
|
||||
"private": "Частна",
|
||||
"system": "Системна група",
|
||||
"edit": "Редактиране",
|
||||
"delete": "Изтриване",
|
||||
"privileges": "Правомощия",
|
||||
"download-csv": "CSV",
|
||||
"search-placeholder": "Търсене",
|
||||
"create": "Създаване на група",
|
||||
"description-placeholder": "Кратко описание на групата",
|
||||
@@ -24,12 +17,10 @@
|
||||
"edit.user-title": "Звание на членовете",
|
||||
"edit.icon": "Иконка на групата",
|
||||
"edit.label-color": "Цвята за етикета на групата",
|
||||
"edit.text-color": "Цвята за текста на групата",
|
||||
"edit.show-badge": "Показване на емблема",
|
||||
"edit.private-details": "Ако е включено, присъединяването към група ще изисква одобрение от собственик на групата.",
|
||||
"edit.private-override": "Внимание: Частните групи са изключени на системно ниво, това пренебрегва тази настройка.",
|
||||
"edit.disable-join": "Забраняване на заявките за присъединяване",
|
||||
"edit.disable-leave": "Забраняване на потребители да напускат групата",
|
||||
"edit.disable-requests": "Изключване на заявките за присъединяване",
|
||||
"edit.hidden": "Скрита",
|
||||
"edit.hidden-details": "Ако е включено, групата няма да е видима в списъка с групи и ще трябва потребителите да бъдат поканени специално.",
|
||||
"edit.add-user": "Добавяне на потребител към групата",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"post-queue": "Опашка за публикации",
|
||||
"description": "Няма публикации в опашката. <br> За да включите тази функционалност, идете в <a href=\"%1\">Настройки → Публикуване → Опашка за публикации</a> и включете <strong>Опашката за публикации</strong>.",
|
||||
"description": "Няма публикации в опашката. <br> За да включите тази функционалност, идете в <a href=\"%1\">Настройки → Публикуване → Ограничения за публикуването</a> и включете <strong>Опашката за публикации</strong>.",
|
||||
"user": "Потребител",
|
||||
"category": "Категория",
|
||||
"title": "Заглавие",
|
||||
@@ -1,9 +1,7 @@
|
||||
{
|
||||
"global": "Глобални",
|
||||
"admin": "Администратор",
|
||||
"group-privileges": "Правомощия за групите",
|
||||
"user-privileges": "Правомощия за потребителите",
|
||||
"edit-privileges": "Редактиране на правомощията",
|
||||
"global.no-users": "Няма глобални правомощия за отделни потребители.",
|
||||
|
||||
"chat": "Разговор",
|
||||
"upload-images": "Качване на изображения",
|
||||
"upload-files": "Качване на файлове",
|
||||
@@ -12,12 +10,8 @@
|
||||
"search-content": "Търсене на съдържание",
|
||||
"search-users": "Търсене на потребители",
|
||||
"search-tags": "Търсене на етикети",
|
||||
"view-users": "Преглед на потребителите",
|
||||
"view-tags": "Преглед на етикетите",
|
||||
"view-groups": "Преглед на групите",
|
||||
"allow-local-login": "Локално вписване",
|
||||
"allow-group-creation": "Създаване на групи",
|
||||
"view-users-info": "Преглед на информацията за потребителите",
|
||||
|
||||
"find-category": "Търсене на категория",
|
||||
"access-category": "Достъп до категория",
|
||||
"access-topics": "Достъп до теми",
|
||||
@@ -32,21 +26,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": "Модериране"
|
||||
}
|
||||
@@ -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": "Етикетът е променен!"
|
||||
}
|
||||
@@ -6,18 +6,14 @@
|
||||
"validate-email": "Проверка на е-пощата",
|
||||
"send-validation-email": "Изпращане на е-писмо за потвърждение",
|
||||
"password-reset-email": "Изпращане на е-писмо за възстановяване на паролата",
|
||||
"force-password-reset": "Принудително подновяване на паролата и отписване на потребителя",
|
||||
"ban": "Блокиране на потребителя/ите",
|
||||
"temp-ban": "Блокиране на потребителя/ите временно",
|
||||
"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": "Добавяне на група",
|
||||
"invite": "Покана",
|
||||
"new": "Нов потребител",
|
||||
|
||||
@@ -31,11 +27,6 @@
|
||||
"pills.banned": "Блокиран",
|
||||
"pills.search": "Търсене на потребители",
|
||||
|
||||
"50-per-page": "50 на страница",
|
||||
"100-per-page": "100 на страница",
|
||||
"250-per-page": "250 на страница",
|
||||
"500-per-page": "500 на страница",
|
||||
|
||||
"search.uid": "По потребителски идентификатор",
|
||||
"search.uid-placeholder": "Въведете потребителски идентификатор, който да потърсите",
|
||||
"search.username": "По име на потребител",
|
||||
@@ -90,15 +81,11 @@
|
||||
"alerts.confirm-remove-moderator": "Наистина ли искате да премахнете този модератор?",
|
||||
"alerts.remove-moderator-success": "Потребителят вече няма да бъде модератор.",
|
||||
"alerts.confirm-validate-email": "Искате ли да проверите е-пощата/ите на този/тези потребител(и)?",
|
||||
"alerts.confirm-force-password-reset": "Наистина ли искате принудително да подновите паролата и да отпишете потребителя или потребителите?",
|
||||
"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 +95,5 @@
|
||||
|
||||
"alerts.prompt-email": "Е-пощи: ",
|
||||
"alerts.email-sent-to": "Беше изпратено е-писмо за потвърждение до %1",
|
||||
"alerts.x-users-found": "Намерени потребители: %1 (%2 секунди)"
|
||||
"alerts.x-users-found": "Намерени потребители: %1! Търсенето отне %2 милисекунди."
|
||||
}
|
||||