mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-12-17 22:10:23 +01:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5de430deb5 | ||
|
|
e1c9bd7229 | ||
|
|
eabbc81b40 | ||
|
|
e29aa5abf8 | ||
|
|
cde7168f9c |
9
.gitignore
vendored
9
.gitignore
vendored
@@ -3,7 +3,7 @@ node_modules/
|
||||
sftp-config.json
|
||||
config.json
|
||||
public/src/nodebb.min.js
|
||||
!src/views/config.json
|
||||
public/config.json
|
||||
public/css/*.css
|
||||
*.sublime-project
|
||||
*.sublime-workspace
|
||||
@@ -25,10 +25,3 @@ pidfile
|
||||
|
||||
# templates
|
||||
/public/templates
|
||||
/public/sounds
|
||||
|
||||
# compiled files
|
||||
/public/stylesheet.css
|
||||
/public/admin.css
|
||||
/public/nodebb.min.js
|
||||
/public/nodebb.min.js.map
|
||||
|
||||
12
.travis.yml
12
.travis.yml
@@ -1,12 +0,0 @@
|
||||
services:
|
||||
- redis-server
|
||||
before_install:
|
||||
- npm i --production
|
||||
- node app --setup="{\"base_url\":\"http://127.0.0.1\",\"port\":4567,\"use_port\":false,\"secret\":\"abcdef\",\"bind_address\":\"0.0.0.0\",\"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\":\"abcdef\",\"admin:password:confirm\":\"abcdef\"}" --ci="{\"host\":\"127.0.0.1\",\"port\":6379,\"database\":0}"
|
||||
language: node_js
|
||||
node_js:
|
||||
- "0.11"
|
||||
- "0.10"
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
355
.tx/config
355
.tx/config
@@ -8,32 +8,24 @@ source_lang = en_GB
|
||||
trans.ar = public/language/ar/category.json
|
||||
trans.cs = public/language/cs/category.json
|
||||
trans.de = public/language/de/category.json
|
||||
trans.en_US = public/language/en_US/category.json
|
||||
trans.en@pirate = public/language/en@pirate/category.json
|
||||
trans.es = public/language/es/category.json
|
||||
trans.et = public/language/et/category.json
|
||||
trans.fa_IR = public/language/fa_IR/category.json
|
||||
trans.fi = public/language/fi/category.json
|
||||
trans.fr = public/language/fr/category.json
|
||||
trans.he = public/language/he/category.json
|
||||
trans.hu = public/language/hu/category.json
|
||||
trans.it = public/language/it/category.json
|
||||
trans.ja = public/language/ja/category.json
|
||||
trans.ko = public/language/ko/category.json
|
||||
trans.lt = public/language/lt/category.json
|
||||
trans.ms = public/language/ms/category.json
|
||||
trans.nb = public/language/nb/category.json
|
||||
trans.nl = public/language/nl/category.json
|
||||
trans.pl = public/language/pl/category.json
|
||||
trans.pt_BR = public/language/pt_BR/category.json
|
||||
trans.ru = public/language/ru/category.json
|
||||
trans.ro = public/language/ro/category.json
|
||||
trans.sc = public/language/sc/category.json
|
||||
trans.sk = public/language/sk/category.json
|
||||
trans.sv = public/language/sv/category.json
|
||||
trans.th = public/language/th/category.json
|
||||
trans.tr = public/language/tr/category.json
|
||||
trans.vi = public/language/vi/category.json
|
||||
trans.zh_CN = public/language/zh_CN/category.json
|
||||
trans.zh_TW = public/language/zh_TW/category.json
|
||||
type = KEYVALUEJSON
|
||||
@@ -45,32 +37,24 @@ source_lang = en_GB
|
||||
trans.ar = public/language/ar/login.json
|
||||
trans.cs = public/language/cs/login.json
|
||||
trans.de = public/language/de/login.json
|
||||
trans.en_US = public/language/en_US/login.json
|
||||
trans.en@pirate = public/language/en@pirate/login.json
|
||||
trans.es = public/language/es/login.json
|
||||
trans.et = public/language/et/login.json
|
||||
trans.fa_IR = public/language/fa_IR/login.json
|
||||
trans.fi = public/language/fi/login.json
|
||||
trans.fr = public/language/fr/login.json
|
||||
trans.he = public/language/he/login.json
|
||||
trans.hu = public/language/hu/login.json
|
||||
trans.it = public/language/it/login.json
|
||||
trans.ja = public/language/ja/login.json
|
||||
trans.ko = public/language/ko/login.json
|
||||
trans.lt = public/language/lt/login.json
|
||||
trans.ms = public/language/ms/login.json
|
||||
trans.nb = public/language/nb/login.json
|
||||
trans.nl = public/language/nl/login.json
|
||||
trans.pl = public/language/pl/login.json
|
||||
trans.pt_BR = public/language/pt_BR/login.json
|
||||
trans.ru = public/language/ru/login.json
|
||||
trans.ro = public/language/ro/login.json
|
||||
trans.sc = public/language/sc/login.json
|
||||
trans.sk = public/language/sk/login.json
|
||||
trans.sv = public/language/sv/login.json
|
||||
trans.th = public/language/th/login.json
|
||||
trans.tr = public/language/tr/login.json
|
||||
trans.vi = public/language/vi/login.json
|
||||
trans.zh_CN = public/language/zh_CN/login.json
|
||||
trans.zh_TW = public/language/zh_TW/login.json
|
||||
type = KEYVALUEJSON
|
||||
@@ -81,32 +65,24 @@ source_lang = en_GB
|
||||
trans.ar = public/language/ar/recent.json
|
||||
trans.cs = public/language/cs/recent.json
|
||||
trans.de = public/language/de/recent.json
|
||||
trans.en_US = public/language/en_US/recent.json
|
||||
trans.en@pirate = public/language/en@pirate/recent.json
|
||||
trans.es = public/language/es/recent.json
|
||||
trans.et = public/language/et/recent.json
|
||||
trans.fa_IR = public/language/fa_IR/recent.json
|
||||
trans.fi = public/language/fi/recent.json
|
||||
trans.fr = public/language/fr/recent.json
|
||||
trans.he = public/language/he/recent.json
|
||||
trans.hu = public/language/hu/recent.json
|
||||
trans.it = public/language/it/recent.json
|
||||
trans.ja = public/language/ja/recent.json
|
||||
trans.ko = public/language/ko/recent.json
|
||||
trans.lt = public/language/lt/recent.json
|
||||
trans.ms = public/language/ms/recent.json
|
||||
trans.nb = public/language/nb/recent.json
|
||||
trans.nl = public/language/nl/recent.json
|
||||
trans.pl = public/language/pl/recent.json
|
||||
trans.pt_BR = public/language/pt_BR/recent.json
|
||||
trans.ru = public/language/ru/recent.json
|
||||
trans.ro = public/language/ro/recent.json
|
||||
trans.sc = public/language/sc/recent.json
|
||||
trans.sk = public/language/sk/recent.json
|
||||
trans.sv = public/language/sv/recent.json
|
||||
trans.th = public/language/th/recent.json
|
||||
trans.tr = public/language/tr/recent.json
|
||||
trans.vi = public/language/vi/recent.json
|
||||
trans.zh_CN = public/language/zh_CN/recent.json
|
||||
trans.zh_TW = public/language/zh_TW/recent.json
|
||||
type = KEYVALUEJSON
|
||||
@@ -117,68 +93,80 @@ source_lang = en_GB
|
||||
trans.ar = public/language/ar/unread.json
|
||||
trans.cs = public/language/cs/unread.json
|
||||
trans.de = public/language/de/unread.json
|
||||
trans.en_US = public/language/en_US/unread.json
|
||||
trans.en@pirate = public/language/en@pirate/unread.json
|
||||
trans.es = public/language/es/unread.json
|
||||
trans.et = public/language/et/unread.json
|
||||
trans.fa_IR = public/language/fa_IR/unread.json
|
||||
trans.fi = public/language/fi/unread.json
|
||||
trans.fr = public/language/fr/unread.json
|
||||
trans.he = public/language/he/unread.json
|
||||
trans.hu = public/language/hu/unread.json
|
||||
trans.it = public/language/it/unread.json
|
||||
trans.ja = public/language/ja/unread.json
|
||||
trans.ko = public/language/ko/unread.json
|
||||
trans.lt = public/language/lt/unread.json
|
||||
trans.ms = public/language/ms/unread.json
|
||||
trans.nb = public/language/nb/unread.json
|
||||
trans.nl = public/language/nl/unread.json
|
||||
trans.pl = public/language/pl/unread.json
|
||||
trans.pt_BR = public/language/pt_BR/unread.json
|
||||
trans.ru = public/language/ru/unread.json
|
||||
trans.ro = public/language/ro/unread.json
|
||||
trans.sc = public/language/sc/unread.json
|
||||
trans.sk = public/language/sk/unread.json
|
||||
trans.sv = public/language/sv/unread.json
|
||||
trans.th = public/language/th/unread.json
|
||||
trans.tr = public/language/tr/unread.json
|
||||
trans.vi = public/language/vi/unread.json
|
||||
trans.zh_CN = public/language/zh_CN/unread.json
|
||||
trans.zh_TW = public/language/zh_TW/unread.json
|
||||
type = KEYVALUEJSON
|
||||
|
||||
[nodebb.footer]
|
||||
source_file = public/language/en_GB/footer.json
|
||||
source_lang = en_GB
|
||||
trans.ar = public/language/ar/footer.json
|
||||
trans.cs = public/language/cs/footer.json
|
||||
trans.de = public/language/de/footer.json
|
||||
trans.en@pirate = public/language/en@pirate/footer.json
|
||||
trans.es = public/language/es/footer.json
|
||||
trans.fa_IR = public/language/fa_IR/footer.json
|
||||
trans.fi = public/language/fi/footer.json
|
||||
trans.fr = public/language/fr/footer.json
|
||||
trans.he = public/language/he/footer.json
|
||||
trans.hu = public/language/hu/footer.json
|
||||
trans.it = public/language/it/footer.json
|
||||
trans.nb = public/language/nb/footer.json
|
||||
trans.nl = public/language/nl/footer.json
|
||||
trans.pl = public/language/pl/footer.json
|
||||
trans.pt_BR = public/language/pt_BR/footer.json
|
||||
trans.ru = public/language/ru/footer.json
|
||||
trans.sc = public/language/sc/footer.json
|
||||
trans.sk = public/language/sk/footer.json
|
||||
trans.sv = public/language/sv/footer.json
|
||||
trans.th = public/language/th/footer.json
|
||||
trans.tr = public/language/tr/footer.json
|
||||
trans.zh_CN = public/language/zh_CN/footer.json
|
||||
trans.zh_TW = public/language/zh_TW/footer.json
|
||||
type = KEYVALUEJSON
|
||||
|
||||
[nodebb.modules]
|
||||
source_file = public/language/en_GB/modules.json
|
||||
source_lang = en_GB
|
||||
trans.ar = public/language/ar/modules.json
|
||||
trans.cs = public/language/cs/modules.json
|
||||
trans.de = public/language/de/modules.json
|
||||
trans.en_US = public/language/en_US/modules.json
|
||||
trans.en@pirate = public/language/en@pirate/modules.json
|
||||
trans.es = public/language/es/modules.json
|
||||
trans.et = public/language/et/modules.json
|
||||
trans.fa_IR = public/language/fa_IR/modules.json
|
||||
trans.fi = public/language/fi/modules.json
|
||||
trans.fr = public/language/fr/modules.json
|
||||
trans.he = public/language/he/modules.json
|
||||
trans.hu = public/language/hu/modules.json
|
||||
trans.it = public/language/it/modules.json
|
||||
trans.ja = public/language/ja/modules.json
|
||||
trans.ko = public/language/ko/modules.json
|
||||
trans.lt = public/language/lt/modules.json
|
||||
trans.ms = public/language/ms/modules.json
|
||||
trans.nb = public/language/nb/modules.json
|
||||
trans.nl = public/language/nl/modules.json
|
||||
trans.pl = public/language/pl/modules.json
|
||||
trans.pt_BR = public/language/pt_BR/modules.json
|
||||
trans.ru = public/language/ru/modules.json
|
||||
trans.ro = public/language/ro/modules.json
|
||||
trans.sc = public/language/sc/modules.json
|
||||
trans.sk = public/language/sk/modules.json
|
||||
trans.sv = public/language/sv/modules.json
|
||||
trans.th = public/language/th/modules.json
|
||||
trans.tr = public/language/tr/modules.json
|
||||
trans.vi = public/language/vi/modules.json
|
||||
trans.zh_CN = public/language/zh_CN/modules.json
|
||||
trans.zh_TW = public/language/zh_TW/modules.json
|
||||
type = KEYVALUEJSON
|
||||
@@ -189,32 +177,24 @@ source_lang = en_GB
|
||||
trans.ar = public/language/ar/register.json
|
||||
trans.cs = public/language/cs/register.json
|
||||
trans.de = public/language/de/register.json
|
||||
trans.en_US = public/language/en_US/register.json
|
||||
trans.en@pirate = public/language/en@pirate/register.json
|
||||
trans.es = public/language/es/register.json
|
||||
trans.et = public/language/et/register.json
|
||||
trans.fa_IR = public/language/fa_IR/register.json
|
||||
trans.fi = public/language/fi/register.json
|
||||
trans.fr = public/language/fr/register.json
|
||||
trans.he = public/language/he/register.json
|
||||
trans.hu = public/language/hu/register.json
|
||||
trans.it = public/language/it/register.json
|
||||
trans.ja = public/language/ja/register.json
|
||||
trans.ko = public/language/ko/register.json
|
||||
trans.lt = public/language/lt/register.json
|
||||
trans.ms = public/language/ms/register.json
|
||||
trans.nb = public/language/nb/register.json
|
||||
trans.nl = public/language/nl/register.json
|
||||
trans.pl = public/language/pl/register.json
|
||||
trans.pt_BR = public/language/pt_BR/register.json
|
||||
trans.ru = public/language/ru/register.json
|
||||
trans.ro = public/language/ro/register.json
|
||||
trans.sc = public/language/sc/register.json
|
||||
trans.sk = public/language/sk/register.json
|
||||
trans.sv = public/language/sv/register.json
|
||||
trans.th = public/language/th/register.json
|
||||
trans.tr = public/language/tr/register.json
|
||||
trans.vi = public/language/vi/register.json
|
||||
trans.zh_CN = public/language/zh_CN/register.json
|
||||
trans.zh_TW = public/language/zh_TW/register.json
|
||||
type = KEYVALUEJSON
|
||||
@@ -225,32 +205,24 @@ source_lang = en_GB
|
||||
trans.ar = public/language/ar/user.json
|
||||
trans.cs = public/language/cs/user.json
|
||||
trans.de = public/language/de/user.json
|
||||
trans.en_US = public/language/en_US/user.json
|
||||
trans.en@pirate = public/language/en@pirate/user.json
|
||||
trans.es = public/language/es/user.json
|
||||
trans.et = public/language/et/user.json
|
||||
trans.fa_IR = public/language/fa_IR/user.json
|
||||
trans.fi = public/language/fi/user.json
|
||||
trans.fr = public/language/fr/user.json
|
||||
trans.he = public/language/he/user.json
|
||||
trans.hu = public/language/hu/user.json
|
||||
trans.it = public/language/it/user.json
|
||||
trans.ja = public/language/ja/user.json
|
||||
trans.ko = public/language/ko/user.json
|
||||
trans.lt = public/language/lt/user.json
|
||||
trans.ms = public/language/ms/user.json
|
||||
trans.nb = public/language/nb/user.json
|
||||
trans.nl = public/language/nl/user.json
|
||||
trans.pl = public/language/pl/user.json
|
||||
trans.pt_BR = public/language/pt_BR/user.json
|
||||
trans.ru = public/language/ru/user.json
|
||||
trans.ro = public/language/ro/user.json
|
||||
trans.sc = public/language/sc/user.json
|
||||
trans.sk = public/language/sk/user.json
|
||||
trans.sv = public/language/sv/user.json
|
||||
trans.th = public/language/th/user.json
|
||||
trans.tr = public/language/tr/user.json
|
||||
trans.vi = public/language/vi/user.json
|
||||
trans.zh_CN = public/language/zh_CN/user.json
|
||||
trans.zh_TW = public/language/zh_TW/user.json
|
||||
type = KEYVALUEJSON
|
||||
@@ -261,32 +233,24 @@ source_lang = en_GB
|
||||
trans.ar = public/language/ar/global.json
|
||||
trans.cs = public/language/cs/global.json
|
||||
trans.de = public/language/de/global.json
|
||||
trans.en_US = public/language/en_US/global.json
|
||||
trans.en@pirate = public/language/en@pirate/global.json
|
||||
trans.es = public/language/es/global.json
|
||||
trans.et = public/language/et/global.json
|
||||
trans.fa_IR = public/language/fa_IR/global.json
|
||||
trans.fi = public/language/fi/global.json
|
||||
trans.fr = public/language/fr/global.json
|
||||
trans.he = public/language/he/global.json
|
||||
trans.hu = public/language/hu/global.json
|
||||
trans.it = public/language/it/global.json
|
||||
trans.ja = public/language/ja/global.json
|
||||
trans.ko = public/language/ko/global.json
|
||||
trans.lt = public/language/lt/global.json
|
||||
trans.ms = public/language/ms/global.json
|
||||
trans.nb = public/language/nb/global.json
|
||||
trans.nl = public/language/nl/global.json
|
||||
trans.pl = public/language/pl/global.json
|
||||
trans.pt_BR = public/language/pt_BR/global.json
|
||||
trans.ru = public/language/ru/global.json
|
||||
trans.ro = public/language/ro/global.json
|
||||
trans.sc = public/language/sc/global.json
|
||||
trans.sk = public/language/sk/global.json
|
||||
trans.sv = public/language/sv/global.json
|
||||
trans.th = public/language/th/global.json
|
||||
trans.tr = public/language/tr/global.json
|
||||
trans.vi = public/language/vi/global.json
|
||||
trans.zh_CN = public/language/zh_CN/global.json
|
||||
trans.zh_TW = public/language/zh_TW/global.json
|
||||
type = KEYVALUEJSON
|
||||
@@ -297,32 +261,24 @@ source_lang = en_GB
|
||||
trans.ar = public/language/ar/notifications.json
|
||||
trans.cs = public/language/cs/notifications.json
|
||||
trans.de = public/language/de/notifications.json
|
||||
trans.en_US = public/language/en_US/notifications.json
|
||||
trans.en@pirate = public/language/en@pirate/notifications.json
|
||||
trans.es = public/language/es/notifications.json
|
||||
trans.et = public/language/et/notifications.json
|
||||
trans.fa_IR = public/language/fa_IR/notifications.json
|
||||
trans.fi = public/language/fi/notifications.json
|
||||
trans.fr = public/language/fr/notifications.json
|
||||
trans.he = public/language/he/notifications.json
|
||||
trans.hu = public/language/hu/notifications.json
|
||||
trans.it = public/language/it/notifications.json
|
||||
trans.ja = public/language/ja/notifications.json
|
||||
trans.ko = public/language/ko/notifications.json
|
||||
trans.lt = public/language/lt/notifications.json
|
||||
trans.ms = public/language/ms/notifications.json
|
||||
trans.nb = public/language/nb/notifications.json
|
||||
trans.nl = public/language/nl/notifications.json
|
||||
trans.pl = public/language/pl/notifications.json
|
||||
trans.pt_BR = public/language/pt_BR/notifications.json
|
||||
trans.ru = public/language/ru/notifications.json
|
||||
trans.ro = public/language/ro/notifications.json
|
||||
trans.sc = public/language/sc/notifications.json
|
||||
trans.sk = public/language/sk/notifications.json
|
||||
trans.sv = public/language/sv/notifications.json
|
||||
trans.th = public/language/th/notifications.json
|
||||
trans.tr = public/language/tr/notifications.json
|
||||
trans.vi = public/language/vi/notifications.json
|
||||
trans.zh_CN = public/language/zh_CN/notifications.json
|
||||
trans.zh_TW = public/language/zh_TW/notifications.json
|
||||
type = KEYVALUEJSON
|
||||
@@ -333,32 +289,24 @@ source_lang = en_GB
|
||||
trans.ar = public/language/ar/reset_password.json
|
||||
trans.cs = public/language/cs/reset_password.json
|
||||
trans.de = public/language/de/reset_password.json
|
||||
trans.en_US = public/language/en_US/reset_password.json
|
||||
trans.en@pirate = public/language/en@pirate/reset_password.json
|
||||
trans.es = public/language/es/reset_password.json
|
||||
trans.et = public/language/et/reset_password.json
|
||||
trans.fa_IR = public/language/fa_IR/reset_password.json
|
||||
trans.fi = public/language/fi/reset_password.json
|
||||
trans.fr = public/language/fr/reset_password.json
|
||||
trans.he = public/language/he/reset_password.json
|
||||
trans.hu = public/language/hu/reset_password.json
|
||||
trans.it = public/language/it/reset_password.json
|
||||
trans.ja = public/language/ja/reset_password.json
|
||||
trans.ko = public/language/ko/reset_password.json
|
||||
trans.lt = public/language/lt/reset_password.json
|
||||
trans.ms = public/language/ms/reset_password.json
|
||||
trans.nb = public/language/nb/reset_password.json
|
||||
trans.nl = public/language/nl/reset_password.json
|
||||
trans.pl = public/language/pl/reset_password.json
|
||||
trans.pt_BR = public/language/pt_BR/reset_password.json
|
||||
trans.ru = public/language/ru/reset_password.json
|
||||
trans.ro = public/language/ro/reset_password.json
|
||||
trans.sc = public/language/sc/reset_password.json
|
||||
trans.sk = public/language/sk/reset_password.json
|
||||
trans.sv = public/language/sv/reset_password.json
|
||||
trans.th = public/language/th/reset_password.json
|
||||
trans.tr = public/language/tr/reset_password.json
|
||||
trans.vi = public/language/vi/reset_password.json
|
||||
trans.zh_CN = public/language/zh_CN/reset_password.json
|
||||
trans.zh_TW = public/language/zh_TW/reset_password.json
|
||||
type = KEYVALUEJSON
|
||||
@@ -369,32 +317,24 @@ source_lang = en_GB
|
||||
trans.ar = public/language/ar/users.json
|
||||
trans.cs = public/language/cs/users.json
|
||||
trans.de = public/language/de/users.json
|
||||
trans.en_US = public/language/en_US/users.json
|
||||
trans.en@pirate = public/language/en@pirate/users.json
|
||||
trans.es = public/language/es/users.json
|
||||
trans.et = public/language/et/users.json
|
||||
trans.fa_IR = public/language/fa_IR/users.json
|
||||
trans.fi = public/language/fi/users.json
|
||||
trans.fr = public/language/fr/users.json
|
||||
trans.he = public/language/he/users.json
|
||||
trans.hu = public/language/hu/users.json
|
||||
trans.it = public/language/it/users.json
|
||||
trans.ja = public/language/ja/users.json
|
||||
trans.ko = public/language/ko/users.json
|
||||
trans.lt = public/language/lt/users.json
|
||||
trans.ms = public/language/ms/users.json
|
||||
trans.nb = public/language/nb/users.json
|
||||
trans.nl = public/language/nl/users.json
|
||||
trans.pl = public/language/pl/users.json
|
||||
trans.pt_BR = public/language/pt_BR/users.json
|
||||
trans.ru = public/language/ru/users.json
|
||||
trans.ro = public/language/ro/users.json
|
||||
trans.sc = public/language/sc/users.json
|
||||
trans.sk = public/language/sk/users.json
|
||||
trans.sv = public/language/sv/users.json
|
||||
trans.th = public/language/th/users.json
|
||||
trans.tr = public/language/tr/users.json
|
||||
trans.vi = public/language/vi/users.json
|
||||
trans.zh_CN = public/language/zh_CN/users.json
|
||||
trans.zh_TW = public/language/zh_TW/users.json
|
||||
type = KEYVALUEJSON
|
||||
@@ -405,32 +345,24 @@ source_lang = en_GB
|
||||
trans.ar = public/language/ar/language.json
|
||||
trans.cs = public/language/cs/language.json
|
||||
trans.de = public/language/de/language.json
|
||||
trans.en_US = public/language/en_US/language.json
|
||||
trans.en@pirate = public/language/en@pirate/language.json
|
||||
trans.es = public/language/es/language.json
|
||||
trans.et = public/language/et/language.json
|
||||
trans.fa_IR = public/language/fa_IR/language.json
|
||||
trans.fi = public/language/fi/language.json
|
||||
trans.fr = public/language/fr/language.json
|
||||
trans.he = public/language/he/language.json
|
||||
trans.hu = public/language/hu/language.json
|
||||
trans.it = public/language/it/language.json
|
||||
trans.ja = public/language/ja/language.json
|
||||
trans.ko = public/language/ko/language.json
|
||||
trans.lt = public/language/lt/language.json
|
||||
trans.ms = public/language/ms/language.json
|
||||
trans.nb = public/language/nb/language.json
|
||||
trans.nl = public/language/nl/language.json
|
||||
trans.pl = public/language/pl/language.json
|
||||
trans.pt_BR = public/language/pt_BR/language.json
|
||||
trans.ru = public/language/ru/language.json
|
||||
trans.ro = public/language/ro/language.json
|
||||
trans.sc = public/language/sc/language.json
|
||||
trans.sk = public/language/sk/language.json
|
||||
trans.sv = public/language/sv/language.json
|
||||
trans.th = public/language/th/language.json
|
||||
trans.tr = public/language/tr/language.json
|
||||
trans.vi = public/language/vi/language.json
|
||||
trans.zh_CN = public/language/zh_CN/language.json
|
||||
trans.zh_TW = public/language/zh_TW/language.json
|
||||
type = KEYVALUEJSON
|
||||
@@ -441,32 +373,24 @@ source_lang = en_GB
|
||||
trans.ar = public/language/ar/pages.json
|
||||
trans.cs = public/language/cs/pages.json
|
||||
trans.de = public/language/de/pages.json
|
||||
trans.en_US = public/language/en_US/pages.json
|
||||
trans.en@pirate = public/language/en@pirate/pages.json
|
||||
trans.es = public/language/es/pages.json
|
||||
trans.et = public/language/et/pages.json
|
||||
trans.fa_IR = public/language/fa_IR/pages.json
|
||||
trans.fi = public/language/fi/pages.json
|
||||
trans.fr = public/language/fr/pages.json
|
||||
trans.he = public/language/he/pages.json
|
||||
trans.hu = public/language/hu/pages.json
|
||||
trans.it = public/language/it/pages.json
|
||||
trans.ja = public/language/ja/pages.json
|
||||
trans.ko = public/language/ko/pages.json
|
||||
trans.lt = public/language/lt/pages.json
|
||||
trans.ms = public/language/ms/pages.json
|
||||
trans.nb = public/language/nb/pages.json
|
||||
trans.nl = public/language/nl/pages.json
|
||||
trans.pl = public/language/pl/pages.json
|
||||
trans.pt_BR = public/language/pt_BR/pages.json
|
||||
trans.ru = public/language/ru/pages.json
|
||||
trans.ro = public/language/ro/pages.json
|
||||
trans.sc = public/language/sc/pages.json
|
||||
trans.sk = public/language/sk/pages.json
|
||||
trans.sv = public/language/sv/pages.json
|
||||
trans.th = public/language/th/pages.json
|
||||
trans.tr = public/language/tr/pages.json
|
||||
trans.vi = public/language/vi/pages.json
|
||||
trans.zh_CN = public/language/zh_CN/pages.json
|
||||
trans.zh_TW = public/language/zh_TW/pages.json
|
||||
type = KEYVALUEJSON
|
||||
@@ -477,248 +401,25 @@ source_lang = en_GB
|
||||
trans.ar = public/language/ar/topic.json
|
||||
trans.cs = public/language/cs/topic.json
|
||||
trans.de = public/language/de/topic.json
|
||||
trans.en_US = public/language/en_US/topic.json
|
||||
trans.en@pirate = public/language/en@pirate/topic.json
|
||||
trans.es = public/language/es/topic.json
|
||||
trans.et = public/language/et/topic.json
|
||||
trans.fa_IR = public/language/fa_IR/topic.json
|
||||
trans.fi = public/language/fi/topic.json
|
||||
trans.fr = public/language/fr/topic.json
|
||||
trans.he = public/language/he/topic.json
|
||||
trans.hu = public/language/hu/topic.json
|
||||
trans.it = public/language/it/topic.json
|
||||
trans.ja = public/language/ja/topic.json
|
||||
trans.ko = public/language/ko/topic.json
|
||||
trans.lt = public/language/lt/topic.json
|
||||
trans.ms = public/language/ms/topic.json
|
||||
trans.nb = public/language/nb/topic.json
|
||||
trans.nl = public/language/nl/topic.json
|
||||
trans.pl = public/language/pl/topic.json
|
||||
trans.pt_BR = public/language/pt_BR/topic.json
|
||||
trans.ru = public/language/ru/topic.json
|
||||
trans.ro = public/language/ro/topic.json
|
||||
trans.sc = public/language/sc/topic.json
|
||||
trans.sk = public/language/sk/topic.json
|
||||
trans.sv = public/language/sv/topic.json
|
||||
trans.th = public/language/th/topic.json
|
||||
trans.tr = public/language/tr/topic.json
|
||||
trans.vi = public/language/vi/topic.json
|
||||
trans.zh_CN = public/language/zh_CN/topic.json
|
||||
trans.zh_TW = public/language/zh_TW/topic.json
|
||||
type = KEYVALUEJSON
|
||||
|
||||
[nodebb.success]
|
||||
source_file = public/language/en_GB/success.json
|
||||
source_lang = en_GB
|
||||
trans.ar = public/language/ar/success.json
|
||||
trans.cs = public/language/cs/success.json
|
||||
trans.de = public/language/de/success.json
|
||||
trans.en_US = public/language/en_US/success.json
|
||||
trans.en@pirate = public/language/en@pirate/success.json
|
||||
trans.es = public/language/es/success.json
|
||||
trans.et = public/language/et/success.json
|
||||
trans.fa_IR = public/language/fa_IR/success.json
|
||||
trans.fi = public/language/fi/success.json
|
||||
trans.fr = public/language/fr/success.json
|
||||
trans.he = public/language/he/success.json
|
||||
trans.hu = public/language/hu/success.json
|
||||
trans.it = public/language/it/success.json
|
||||
trans.ja = public/language/ja/success.json
|
||||
trans.ko = public/language/ko/success.json
|
||||
trans.lt = public/language/lt/success.json
|
||||
trans.ms = public/language/ms/success.json
|
||||
trans.nb = public/language/nb/success.json
|
||||
trans.nl = public/language/nl/success.json
|
||||
trans.pl = public/language/pl/success.json
|
||||
trans.pt_BR = public/language/pt_BR/success.json
|
||||
trans.ru = public/language/ru/success.json
|
||||
trans.ro = public/language/ro/success.json
|
||||
trans.sc = public/language/sc/success.json
|
||||
trans.sk = public/language/sk/success.json
|
||||
trans.sv = public/language/sv/success.json
|
||||
trans.th = public/language/th/success.json
|
||||
trans.tr = public/language/tr/success.json
|
||||
trans.vi = public/language/vi/success.json
|
||||
trans.zh_CN = public/language/zh_CN/success.json
|
||||
trans.zh_TW = public/language/zh_TW/success.json
|
||||
type = KEYVALUEJSON
|
||||
|
||||
[nodebb.error]
|
||||
source_file = public/language/en_GB/error.json
|
||||
source_lang = en_GB
|
||||
trans.ar = public/language/ar/error.json
|
||||
trans.cs = public/language/cs/error.json
|
||||
trans.de = public/language/de/error.json
|
||||
trans.en_US = public/language/en_US/error.json
|
||||
trans.en@pirate = public/language/en@pirate/error.json
|
||||
trans.es = public/language/es/error.json
|
||||
trans.et = public/language/et/error.json
|
||||
trans.fa_IR = public/language/fa_IR/error.json
|
||||
trans.fi = public/language/fi/error.json
|
||||
trans.fr = public/language/fr/error.json
|
||||
trans.he = public/language/he/error.json
|
||||
trans.hu = public/language/hu/error.json
|
||||
trans.it = public/language/it/error.json
|
||||
trans.ja = public/language/ja/error.json
|
||||
trans.ko = public/language/ko/error.json
|
||||
trans.lt = public/language/lt/error.json
|
||||
trans.ms = public/language/ms/error.json
|
||||
trans.nb = public/language/nb/error.json
|
||||
trans.nl = public/language/nl/error.json
|
||||
trans.pl = public/language/pl/error.json
|
||||
trans.pt_BR = public/language/pt_BR/error.json
|
||||
trans.ru = public/language/ru/error.json
|
||||
trans.ro = public/language/ro/error.json
|
||||
trans.sc = public/language/sc/error.json
|
||||
trans.sk = public/language/sk/error.json
|
||||
trans.sv = public/language/sv/error.json
|
||||
trans.th = public/language/th/error.json
|
||||
trans.tr = public/language/tr/error.json
|
||||
trans.vi = public/language/vi/error.json
|
||||
trans.zh_CN = public/language/zh_CN/error.json
|
||||
trans.zh_TW = public/language/zh_TW/error.json
|
||||
type = KEYVALUEJSON
|
||||
|
||||
[nodebb.tags]
|
||||
source_file = public/language/en_GB/tags.json
|
||||
source_lang = en_GB
|
||||
trans.ar = public/language/ar/tags.json
|
||||
trans.cs = public/language/cs/tags.json
|
||||
trans.de = public/language/de/tags.json
|
||||
trans.en_US = public/language/en_US/tags.json
|
||||
trans.en@pirate = public/language/en@pirate/tags.json
|
||||
trans.es = public/language/es/tags.json
|
||||
trans.et = public/language/et/tags.json
|
||||
trans.fa_IR = public/language/fa_IR/tags.json
|
||||
trans.fi = public/language/fi/tags.json
|
||||
trans.fr = public/language/fr/tags.json
|
||||
trans.he = public/language/he/tags.json
|
||||
trans.hu = public/language/hu/tags.json
|
||||
trans.it = public/language/it/tags.json
|
||||
trans.ja = public/language/ja/tags.json
|
||||
trans.ko = public/language/ko/tags.json
|
||||
trans.lt = public/language/lt/tags.json
|
||||
trans.ms = public/language/ms/tags.json
|
||||
trans.nb = public/language/nb/tags.json
|
||||
trans.nl = public/language/nl/tags.json
|
||||
trans.pl = public/language/pl/tags.json
|
||||
trans.pt_BR = public/language/pt_BR/tags.json
|
||||
trans.ru = public/language/ru/tags.json
|
||||
trans.ro = public/language/ro/tags.json
|
||||
trans.sc = public/language/sc/tags.json
|
||||
trans.sk = public/language/sk/tags.json
|
||||
trans.sv = public/language/sv/tags.json
|
||||
trans.th = public/language/th/tags.json
|
||||
trans.tr = public/language/tr/tags.json
|
||||
trans.vi = public/language/vi/tags.json
|
||||
trans.zh_CN = public/language/zh_CN/tags.json
|
||||
trans.zh_TW = public/language/zh_TW/tags.json
|
||||
type = KEYVALUEJSON
|
||||
|
||||
[nodebb.email]
|
||||
source_file = public/language/en_GB/email.json
|
||||
source_lang = en_GB
|
||||
trans.ar = public/language/ar/email.json
|
||||
trans.cs = public/language/cs/email.json
|
||||
trans.de = public/language/de/email.json
|
||||
trans.en_US = public/language/en_US/email.json
|
||||
trans.en@pirate = public/language/en@pirate/email.json
|
||||
trans.es = public/language/es/email.json
|
||||
trans.et = public/language/et/email.json
|
||||
trans.fa_IR = public/language/fa_IR/email.json
|
||||
trans.fi = public/language/fi/email.json
|
||||
trans.fr = public/language/fr/email.json
|
||||
trans.he = public/language/he/email.json
|
||||
trans.hu = public/language/hu/email.json
|
||||
trans.it = public/language/it/email.json
|
||||
trans.ja = public/language/ja/email.json
|
||||
trans.ko = public/language/ko/email.json
|
||||
trans.lt = public/language/lt/email.json
|
||||
trans.ms = public/language/ms/email.json
|
||||
trans.nb = public/language/nb/email.json
|
||||
trans.nl = public/language/nl/email.json
|
||||
trans.pl = public/language/pl/email.json
|
||||
trans.pt_BR = public/language/pt_BR/email.json
|
||||
trans.ru = public/language/ru/email.json
|
||||
trans.ro = public/language/ro/email.json
|
||||
trans.sc = public/language/sc/email.json
|
||||
trans.sk = public/language/sk/email.json
|
||||
trans.sv = public/language/sv/email.json
|
||||
trans.th = public/language/th/email.json
|
||||
trans.tr = public/language/tr/email.json
|
||||
trans.vi = public/language/vi/email.json
|
||||
trans.zh_CN = public/language/zh_CN/email.json
|
||||
trans.zh_TW = public/language/zh_TW/email.json
|
||||
type = KEYVALUEJSON
|
||||
|
||||
[nodebb.search]
|
||||
source_file = public/language/en_GB/search.json
|
||||
source_lang = en_GB
|
||||
trans.ar = public/language/ar/search.json
|
||||
trans.cs = public/language/cs/search.json
|
||||
trans.de = public/language/de/search.json
|
||||
trans.en_US = public/language/en_US/search.json
|
||||
trans.en@pirate = public/language/en@pirate/search.json
|
||||
trans.es = public/language/es/search.json
|
||||
trans.et = public/language/et/search.json
|
||||
trans.fa_IR = public/language/fa_IR/search.json
|
||||
trans.fi = public/language/fi/search.json
|
||||
trans.fr = public/language/fr/search.json
|
||||
trans.he = public/language/he/search.json
|
||||
trans.hu = public/language/hu/search.json
|
||||
trans.it = public/language/it/search.json
|
||||
trans.ja = public/language/ja/search.json
|
||||
trans.ko = public/language/ko/search.json
|
||||
trans.lt = public/language/lt/search.json
|
||||
trans.ms = public/language/ms/search.json
|
||||
trans.nb = public/language/nb/search.json
|
||||
trans.nl = public/language/nl/search.json
|
||||
trans.pl = public/language/pl/search.json
|
||||
trans.pt_BR = public/language/pt_BR/search.json
|
||||
trans.ru = public/language/ru/search.json
|
||||
trans.ro = public/language/ro/search.json
|
||||
trans.sc = public/language/sc/search.json
|
||||
trans.sk = public/language/sk/search.json
|
||||
trans.sv = public/language/sv/search.json
|
||||
trans.th = public/language/th/search.json
|
||||
trans.tr = public/language/tr/search.json
|
||||
trans.vi = public/language/vi/search.json
|
||||
trans.zh_CN = public/language/zh_CN/search.json
|
||||
trans.zh_TW = public/language/zh_TW/search.json
|
||||
type = KEYVALUEJSON
|
||||
|
||||
[nodebb.groups]
|
||||
source_file = public/language/en_GB/groups.json
|
||||
source_lang = en_GB
|
||||
trans.ar = public/language/ar/groups.json
|
||||
trans.cs = public/language/cs/groups.json
|
||||
trans.de = public/language/de/groups.json
|
||||
trans.en_US = public/language/en_US/groups.json
|
||||
trans.en@pirate = public/language/en@pirate/groups.json
|
||||
trans.es = public/language/es/groups.json
|
||||
trans.et = public/language/et/groups.json
|
||||
trans.fa_IR = public/language/fa_IR/groups.json
|
||||
trans.fi = public/language/fi/groups.json
|
||||
trans.fr = public/language/fr/groups.json
|
||||
trans.he = public/language/he/groups.json
|
||||
trans.hu = public/language/hu/groups.json
|
||||
trans.it = public/language/it/groups.json
|
||||
trans.ja = public/language/ja/groups.json
|
||||
trans.ko = public/language/ko/groups.json
|
||||
trans.lt = public/language/lt/groups.json
|
||||
trans.ms = public/language/ms/groups.json
|
||||
trans.nb = public/language/nb/groups.json
|
||||
trans.nl = public/language/nl/groups.json
|
||||
trans.pl = public/language/pl/groups.json
|
||||
trans.pt_BR = public/language/pt_BR/groups.json
|
||||
trans.ru = public/language/ru/groups.json
|
||||
trans.ro = public/language/ro/groups.json
|
||||
trans.sc = public/language/sc/groups.json
|
||||
trans.sk = public/language/sk/groups.json
|
||||
trans.sv = public/language/sv/groups.json
|
||||
trans.th = public/language/th/groups.json
|
||||
trans.tr = public/language/tr/groups.json
|
||||
trans.vi = public/language/vi/groups.json
|
||||
trans.zh_CN = public/language/zh_CN/groups.json
|
||||
trans.zh_TW = public/language/zh_TW/groups.json
|
||||
type = KEYVALUEJSON
|
||||
4
ATTRIBUTION.md
Normal file
4
ATTRIBUTION.md
Normal file
@@ -0,0 +1,4 @@
|
||||
## Sound Assets
|
||||
|
||||
* "Waterdrop" by [Porphyr](freesound.org/people/Porphyr) / [CC BY 3.0](creativecommons.org/licenses/by/3.0)
|
||||
* "SweetAlertSound2.wav" by [KIZILSUNGUR](http://www.freesound.org/people/KIZILSUNGUR/) / [Public Domain / CC 0](http://creativecommons.org/publicdomain/zero/1.0/)
|
||||
15
NOTES.md
Normal file
15
NOTES.md
Normal file
@@ -0,0 +1,15 @@
|
||||
## 0.4x Refactor Notes
|
||||
|
||||
Please remove this file after 0.4x (or perhaps organize it so that we can see the history of breaking changes)
|
||||
|
||||
### Immediate Deprecation Notices
|
||||
|
||||
* `action:ajaxifying` is no longer triggered on body but on window instead, in line with other similar hooks.
|
||||
* `filter:server.create_routes` and `filter:admin.create_routes` will have limited support (ajaxify works, but first-load will not). Please have a look at [this plugin](https://github.com/psychobunny/nodebb-plugin-kitchen-sink/blob/master/library.js#L16-L22) for an example on how to create routes in plugins from now on.
|
||||
|
||||
### Upcoming Deprecation Warnings
|
||||
|
||||
* `filter:footer.build` will be deprecated for 0.4x in favour of the widget system (WIP)
|
||||
* templates.setGlobal (server-side only) deprecated in favour of using res.locals
|
||||
* `plugins/fireHook` route will be deprecated for 0.4x
|
||||
* synchronous hooks will be deprecated for 0.4x - we're reducing complexity by removing the `callbacked: true` property in `plugin.json` - just use callbacks.
|
||||
31
README.md
31
README.md
@@ -1,48 +1,45 @@
|
||||
# <img alt="NodeBB" src="http://i.imgur.com/mYxPPtB.png" />
|
||||
[](https://travis-ci.org/NodeBB/NodeBB)
|
||||
[](https://david-dm.org/nodebb/nodebb)
|
||||
[](https://codeclimate.com/github/NodeBB/NodeBB)
|
||||
[](https://readthedocs.org/projects/nodebb/?badge=latest)
|
||||
# <img alt="NodeBB" src="http://i.imgur.com/3yj1n6N.png" />
|
||||
[](https://david-dm.org/designcreateplay/nodebb)
|
||||
[](https://codeclimate.com/github/designcreateplay/NodeBB)
|
||||
|
||||
**NodeBB Forum Software** is powered by Node.js and built on a Redis database. It utilizes web sockets for instant interactions and real-time notifications. NodeBB is compatible down to IE8 and has many modern features out of the box such as social network integration and streaming discussions.
|
||||
|
||||
* [Get NodeBB](http://www.nodebb.org/ "NodeBB")
|
||||
* [Demo & Meta Discussion](http://community.nodebb.org)
|
||||
* [NodeBB Blog](http://blog.nodebb.org)
|
||||
* [Documentation](http://docs.nodebb.org) - includes setup instructions for other platforms
|
||||
* [Wiki Guides](https://github.com/designcreateplay/NodeBB/wiki) - includes setup for other platforms
|
||||
* [Join us on IRC](https://kiwiirc.com/client/irc.freenode.net/nodebb) - #nodebb on Freenode
|
||||
* [Follow us on Twitter](http://www.twitter.com/NodeBB/ "NodeBB Twitter")
|
||||
* [Follow on Twitter](http://www.twitter.com/NodeBB/ "NodeBB Twitter")
|
||||
* [Like us on Facebook](http://www.facebook.com/NodeBB/ "NodeBB Facebook")
|
||||
* [Get Plugins](http://community.nodebb.org/category/7/nodebb-plugins "NodeBB Plugins")
|
||||
* [Get Themes](http://community.nodebb.org/category/10/nodebb-themes "NodeBB Themes")
|
||||
* [Help translate NodeBB](https://www.transifex.com/projects/p/nodebb/)
|
||||
|
||||
## Screenshots
|
||||
|
||||
[<img src="http://i.imgur.com/FLOUuIqb.png" />](http://i.imgur.com/FLOUuIq.png) [<img src="http://i.imgur.com/Ud1LrfIb.png" />](http://i.imgur.com/Ud1LrfI.png) [<img src="http://i.imgur.com/ZC8W39ab.png" />](http://i.imgur.com/ZC8W39a.png) [<img src="http://i.imgur.com/o90kVPib.png" />](http://i.imgur.com/o90kVPi.png) [<img src="http://i.imgur.com/AaRRrU2b.png" />](http://i.imgur.com/AaRRrU2.png) [<img src="http://i.imgur.com/LmHtPhob.png" />](http://i.imgur.com/LmHtPho.png) [<img src="http://i.imgur.com/paiJPJkb.jpg" />](http://i.imgur.com/paiJPJk.jpg) [<img src="http://i.imgur.com/ZfavPHDb.png" />](http://i.imgur.com/ZfavPHD.png) [<img src="http://i.imgur.com/8OLssij.png" />](http://i.imgur.com/8OLssij.png) [<img src="http://i.imgur.com/JKOc0LZ.png"/>](http://i.imgur.com/JKOc0LZ.png)
|
||||
[<img src="http://i.imgur.com/FLOUuIqb.png" />](http://i.imgur.com/FLOUuIq.png) [<img src="http://i.imgur.com/Ud1LrfIb.png" />](http://i.imgur.com/Ud1LrfI.png) [<img src="http://i.imgur.com/ZC8W39ab.png" />](http://i.imgur.com/ZC8W39a.png) [<img src="http://i.imgur.com/o90kVPib.png" />](http://i.imgur.com/o90kVPi.png) [<img src="http://i.imgur.com/AaRRrU2b.png" />](http://i.imgur.com/AaRRrU2.png) [<img src="http://i.imgur.com/LmHtPhob.png" />](http://i.imgur.com/LmHtPho.png) [<img src="http://i.imgur.com/paiJPJkb.jpg" />](http://i.imgur.com/paiJPJk.jpg) [<img src="http://i.imgur.com/ZfavPHDb.png" />](http://i.imgur.com/ZfavPHD.png) [<img src="http://i.imgur.com/8vc1Ytc.png" />](http://i.imgur.com/8vc1Ytc.png)
|
||||
|
||||
|
||||
Credit: [Convoe](http://www.convoe.com), [Kano](http://www.kano.me), [Manchester United Forum](http://manutdforums.com/).
|
||||
|
||||
|
||||
## How can I follow along/contribute?
|
||||
|
||||
* Our feature roadmap is hosted on the project wiki's [Version History / Roadmap](https://github.com/NodeBB/NodeBB/wiki/Version-History-%26-Roadmap)
|
||||
* Our feature roadmap is hosted on the project wiki's [Version History / Roadmap](https://github.com/designcreateplay/NodeBB/wiki/Version-History-%26-Roadmap)
|
||||
* If you are a developer, feel free to check out the source and submit pull requests. We also have a wide array of [plugins](http://community.nodebb.org/category/7/nodebb-plugins) which would be a great starting point for learning the codebase.
|
||||
* If you are a designer, [NodeBB needs themes](http://community.nodebb.org/category/10/nodebb-themes)! NodeBB's theming system allows extention of the base templates as well as styling via LESS or CSS. NodeBB's base theme utilizes [Bootstrap 3](http://getbootstrap.com/) but themes can choose to use a different framework altogether.
|
||||
* If you know languages other than English you can help us translate NodeBB. We use [Transifex](https://www.transifex.com/projects/p/nodebb/) for internationalization.
|
||||
* Please don't forget to **like**, **follow**, and **star our repo**! Join our growing [community](http://community.nodebb.org) to keep up to date with the latest NodeBB development.
|
||||
|
||||
## Requirements
|
||||
|
||||
NodeBB requires the following software to be installed:
|
||||
|
||||
* A version of Node.js at least 0.10 or greater
|
||||
* Redis, version 2.6 or greater **or** MongoDB, version 2.6 or greater
|
||||
* A version of Node.js at least 0.8 or greater
|
||||
* Redis, version 2.6 or greater **or** MongoDB, version 2.4 or greater
|
||||
* nginx, version 1.3.13 or greater (**only if** intending to use nginx to proxy requests to a NodeBB)
|
||||
|
||||
## Installation
|
||||
|
||||
[Please refer to platform-specific installation documentation](http://docs.nodebb.org/en/latest/installing/os.html)
|
||||
[Please refer to platform-specific installation documentation](https://github.com/designcreateplay/NodeBB/wiki#wiki-installing-nodebb)
|
||||
|
||||
## Securing NodeBB
|
||||
|
||||
@@ -57,8 +54,4 @@ It is important to ensure that your NodeBB and database servers are secured. Bea
|
||||
|
||||
## Upgrading NodeBB
|
||||
|
||||
Detailed upgrade instructions are listed in [Upgrading NodeBB](https://docs.nodebb.org/en/latest/upgrading/index.html)
|
||||
|
||||
## License
|
||||
|
||||
NodeBB is licensed under the **GNU General Public License v3 (GPL-3)** (http://www.gnu.org/copyleft/gpl.html)
|
||||
Detailed upgrade instructions are listed in [Upgrading NodeBB](https://github.com/designcreateplay/NodeBB/wiki/Upgrading-NodeBB)
|
||||
|
||||
226
app.js
226
app.js
@@ -1,7 +1,6 @@
|
||||
/*
|
||||
NodeBB - A better forum platform for the modern web
|
||||
https://github.com/NodeBB/NodeBB/
|
||||
Copyright (C) 2013-2014 NodeBB Inc.
|
||||
NodeBB - A forum powered by node in development by designcreateplay
|
||||
Copyright (C) 2013 DesignCreatePlay Inc.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -17,8 +16,8 @@
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
"use strict";
|
||||
/*global require, global, process*/
|
||||
|
||||
var nconf = require('nconf');
|
||||
nconf.argv().env();
|
||||
@@ -28,7 +27,6 @@ var fs = require('fs'),
|
||||
semver = require('semver'),
|
||||
winston = require('winston'),
|
||||
path = require('path'),
|
||||
cluster = require('cluster'),
|
||||
pkg = require('./package.json'),
|
||||
utils = require('./public/src/utils.js');
|
||||
|
||||
@@ -41,7 +39,7 @@ winston.add(winston.transports.Console, {
|
||||
});
|
||||
|
||||
winston.add(winston.transports.File, {
|
||||
filename: 'logs/error.log',
|
||||
filename: 'error.log',
|
||||
level: 'error'
|
||||
});
|
||||
|
||||
@@ -59,15 +57,14 @@ if(os.platform() === 'linux') {
|
||||
}
|
||||
|
||||
// Log GNU copyright info along with server info
|
||||
winston.info('NodeBB v' + pkg.version + ' Copyright (C) 2013-2014 NodeBB Inc.');
|
||||
winston.info('NodeBB v' + pkg.version + ' Copyright (C) 2013 DesignCreatePlay Inc.');
|
||||
winston.info('This program comes with ABSOLUTELY NO WARRANTY.');
|
||||
winston.info('This is free software, and you are welcome to redistribute it under certain conditions.');
|
||||
winston.info('');
|
||||
|
||||
// Alternate configuration file support
|
||||
var configFile = path.join(__dirname, '/config.json'),
|
||||
var configFile = __dirname + '/config.json',
|
||||
configExists;
|
||||
|
||||
if (nconf.get('config')) {
|
||||
configFile = path.resolve(__dirname, nconf.get('config'));
|
||||
}
|
||||
@@ -91,43 +88,38 @@ function loadConfig() {
|
||||
});
|
||||
|
||||
nconf.defaults({
|
||||
base_dir: __dirname,
|
||||
themes_path: path.join(__dirname, 'node_modules'),
|
||||
upload_url: '/uploads/',
|
||||
views_dir: path.join(__dirname, 'public/templates')
|
||||
themes_path: path.join(__dirname, 'node_modules')
|
||||
});
|
||||
|
||||
// Ensure themes_path is a full filepath
|
||||
nconf.set('themes_path', path.resolve(__dirname, nconf.get('themes_path')));
|
||||
nconf.set('core_templates_path', path.join(__dirname, 'src/views'));
|
||||
nconf.set('base_templates_path', path.join(nconf.get('themes_path'), 'nodebb-theme-vanilla/templates'));
|
||||
}
|
||||
|
||||
function start() {
|
||||
|
||||
loadConfig();
|
||||
|
||||
nconf.set('url', nconf.get('base_url') + (nconf.get('use_port') ? ':' + nconf.get('port') : '') + nconf.get('relative_path'));
|
||||
nconf.set('upload_url', path.join(path.sep, 'uploads', path.sep));
|
||||
nconf.set('base_dir', __dirname);
|
||||
nconf.set('views_dir', path.join(__dirname, 'public/templates'));
|
||||
|
||||
winston.info('Time: ' + new Date());
|
||||
winston.info('Initializing NodeBB v' + pkg.version);
|
||||
winston.info('* using configuration stored in: ' + configFile);
|
||||
var host = nconf.get(nconf.get('database') + ':host'),
|
||||
storeLocation = host ? 'at ' + host + (host.indexOf('/') === -1 ? ':' + nconf.get(nconf.get('database') + ':port') : '') : '';
|
||||
|
||||
winston.info('* using ' + nconf.get('database') +' store ' + storeLocation);
|
||||
var host = nconf.get(nconf.get('database') + ':host');
|
||||
winston.info('* using ' + nconf.get('database') +' store at ' + host + (host.indexOf('/') === -1 ? ':' + nconf.get(nconf.get('database') + ':port') : ''));
|
||||
winston.info('* using themes stored in: ' + nconf.get('themes_path'));
|
||||
|
||||
if (process.env.NODE_ENV === 'development') {
|
||||
winston.info('Base Configuration OK.');
|
||||
}
|
||||
|
||||
var meta = require('./src/meta');
|
||||
|
||||
require('./src/database').init(function(err) {
|
||||
if (err) {
|
||||
winston.error(err.stack);
|
||||
process.exit();
|
||||
}
|
||||
var meta = require('./src/meta');
|
||||
meta.configs.init(function () {
|
||||
var templates = require('templates.js'),
|
||||
var templates = require('./public/src/templates'),
|
||||
translator = require('./public/src/translator'),
|
||||
webserver = require('./src/webserver'),
|
||||
sockets = require('./src/socket.io'),
|
||||
plugins = require('./src/plugins'),
|
||||
@@ -138,50 +130,23 @@ function start() {
|
||||
upgrade.check(function(schema_ok) {
|
||||
if (schema_ok || nconf.get('check-schema') === false) {
|
||||
sockets.init(webserver.server);
|
||||
plugins.init();
|
||||
translator.loadServer();
|
||||
|
||||
nconf.set('url', nconf.get('base_url') + (nconf.get('use_port') ? ':' + nconf.get('port') : '') + nconf.get('relative_path'));
|
||||
nconf.set('base_templates_path', path.join(nconf.get('themes_path'), 'nodebb-theme-vanilla/templates'));
|
||||
nconf.set('theme_templates_path', meta.config['theme:templates'] ? path.join(nconf.get('themes_path'), meta.config['theme:id'], meta.config['theme:templates']) : nconf.get('base_templates_path'));
|
||||
|
||||
plugins.ready(function() {
|
||||
webserver.init(function() {
|
||||
// If this callback is called, this means that loader.js is used
|
||||
process.on('message', function(msg) {
|
||||
if (msg === 'bind') {
|
||||
webserver.listen();
|
||||
}
|
||||
});
|
||||
process.send({
|
||||
action: 'ready'
|
||||
});
|
||||
});
|
||||
webserver.init();
|
||||
});
|
||||
|
||||
process.on('SIGTERM', shutdown);
|
||||
process.on('SIGINT', shutdown);
|
||||
process.on('SIGHUP', restart);
|
||||
process.on('message', function(message) {
|
||||
switch(message.action) {
|
||||
case 'reload':
|
||||
meta.reload();
|
||||
break;
|
||||
case 'js-propagate':
|
||||
meta.js.cache = message.cache;
|
||||
meta.js.map = message.map;
|
||||
winston.info('[cluster] Client-side javascript and mapping propagated to worker ' + cluster.worker.id);
|
||||
break;
|
||||
case 'css-propagate':
|
||||
meta.css.cache = message.cache;
|
||||
meta.css.acpCache = message.acpCache;
|
||||
winston.info('[cluster] Stylesheet propagated to worker ' + cluster.worker.id);
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
process.on('uncaughtException', function(err) {
|
||||
winston.error(err.message);
|
||||
winston.error('[app] Encountered Uncaught Exception: ' + err.message);
|
||||
console.log(err.stack);
|
||||
|
||||
meta.js.killMinifier();
|
||||
shutdown(1);
|
||||
restart();
|
||||
});
|
||||
} else {
|
||||
winston.warn('Your NodeBB schema is out-of-date. Please run the following command to bring your dataset up to spec:');
|
||||
@@ -224,12 +189,10 @@ function setup() {
|
||||
function upgrade() {
|
||||
loadConfig();
|
||||
|
||||
var meta = require('./src/meta');
|
||||
|
||||
require('./src/database').init(function(err) {
|
||||
if (err) {
|
||||
winston.error(err.stack);
|
||||
process.exit();
|
||||
}
|
||||
require('./src/meta').configs.init(function () {
|
||||
meta.configs.init(function () {
|
||||
require('./src/upgrade').upgrade();
|
||||
});
|
||||
});
|
||||
@@ -238,103 +201,38 @@ function upgrade() {
|
||||
function reset() {
|
||||
loadConfig();
|
||||
|
||||
require('./src/database').init(function(err) {
|
||||
if (err) {
|
||||
winston.error(err.message);
|
||||
process.exit();
|
||||
}
|
||||
var meta = require('./src/meta'),
|
||||
db = require('./src/database'),
|
||||
async = require('async');
|
||||
|
||||
if (nconf.get('themes')) {
|
||||
resetThemes();
|
||||
} else if (nconf.get('plugin')) {
|
||||
resetPlugin(nconf.get('plugin'));
|
||||
} else if (nconf.get('plugins')) {
|
||||
resetPlugins();
|
||||
} else if (nconf.get('widgets')) {
|
||||
resetWidgets();
|
||||
} else if (nconf.get('settings')) {
|
||||
resetSettings();
|
||||
} else if (nconf.get('all')) {
|
||||
require('async').series([resetWidgets, resetThemes, resetPlugins, resetSettings], function(err) {
|
||||
if (!err) {
|
||||
winston.info('[reset] Reset complete.');
|
||||
} else {
|
||||
winston.error('[reset] Errors were encountered while resetting your forum settings: ' + err.message);
|
||||
db.init(function(err) {
|
||||
meta.configs.init(function () {
|
||||
async.parallel([
|
||||
function(next) {
|
||||
db.delete('plugins:active', next);
|
||||
},
|
||||
function(next) {
|
||||
meta.configs.set('theme:type', 'local', next);
|
||||
},
|
||||
function(next) {
|
||||
meta.configs.set('theme:id', 'nodebb-theme-vanilla', next);
|
||||
},
|
||||
function(next) {
|
||||
meta.configs.set('theme:staticDir', '', next);
|
||||
},
|
||||
function(next) {
|
||||
meta.configs.set('theme:templates', '', next);
|
||||
}
|
||||
], function(err) {
|
||||
if (err) {
|
||||
winston.error(err);
|
||||
} else {
|
||||
winston.info("Successfully reset theme to Vanilla and disabled all plugins.");
|
||||
}
|
||||
|
||||
process.exit();
|
||||
});
|
||||
} else {
|
||||
winston.warn('[reset] Nothing reset.');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function resetSettings(callback) {
|
||||
var meta = require('./src/meta');
|
||||
meta.configs.set('allowLocalLogin', 1, function(err) {
|
||||
winston.info('[reset] Settings reset to default');
|
||||
if (typeof callback === 'function') {
|
||||
callback(err);
|
||||
} else {
|
||||
process.exit();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function resetThemes(callback) {
|
||||
var meta = require('./src/meta');
|
||||
|
||||
meta.themes.set({
|
||||
type: 'local',
|
||||
id: 'nodebb-theme-vanilla'
|
||||
}, function(err) {
|
||||
winston.info('[reset] Theme reset to Vanilla');
|
||||
if (typeof callback === 'function') {
|
||||
callback(err);
|
||||
} else {
|
||||
process.exit();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function resetPlugin(pluginId) {
|
||||
var db = require('./src/database');
|
||||
db.setRemove('plugins:active', pluginId, function(err, result) {
|
||||
if (err || result !== 1) {
|
||||
winston.error('[reset] Could not disable plugin: ' + pluginId);
|
||||
if (err) {
|
||||
winston.error('[reset] Encountered error: ' + err.message);
|
||||
} else {
|
||||
winston.info('[reset] Perhaps it has already been disabled?');
|
||||
}
|
||||
} else {
|
||||
winston.info('[reset] Plugin `' + pluginId + '` disabled');
|
||||
}
|
||||
|
||||
process.exit();
|
||||
});
|
||||
}
|
||||
|
||||
function resetPlugins(callback) {
|
||||
var db = require('./src/database');
|
||||
db.delete('plugins:active', function(err) {
|
||||
winston.info('[reset] All Plugins De-activated');
|
||||
if (typeof callback === 'function') {
|
||||
callback(err);
|
||||
} else {
|
||||
process.exit();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function resetWidgets(callback) {
|
||||
require('./src/widgets').reset(function(err) {
|
||||
winston.info('[reset] All Widgets moved to Draft Zone');
|
||||
if (typeof callback === 'function') {
|
||||
callback(err);
|
||||
} else {
|
||||
process.exit();
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@@ -342,22 +240,18 @@ function shutdown(code) {
|
||||
winston.info('[app] Shutdown (SIGTERM/SIGINT) Initialised.');
|
||||
require('./src/database').close();
|
||||
winston.info('[app] Database connection closed.');
|
||||
require('./src/webserver').server.close();
|
||||
winston.info('[app] Web server closed to connections.');
|
||||
|
||||
winston.info('[app] Shutdown complete.');
|
||||
process.exit(code || 0);
|
||||
process.exit();
|
||||
}
|
||||
|
||||
function restart() {
|
||||
if (process.send) {
|
||||
winston.info('[app] Restarting...');
|
||||
process.send({
|
||||
action: 'restart'
|
||||
});
|
||||
process.send('nodebb:restart');
|
||||
} else {
|
||||
winston.error('[app] Could not restart server. Shutting down.');
|
||||
shutdown(1);
|
||||
shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -368,7 +262,7 @@ function displayHelp() {
|
||||
winston.info('Options:');
|
||||
winston.info(' --help displays this usage information');
|
||||
winston.info(' --setup configure your environment and setup NodeBB');
|
||||
winston.info(' --upgrade upgrade NodeBB, first read: https://docs.nodebb.org/en/latest/upgrading/');
|
||||
winston.info(' --upgrade upgrade NodeBB, first read: github.com/designcreateplay/NodeBB/wiki/Upgrading-NodeBB');
|
||||
winston.info(' --reset soft resets NodeBB; disables all plugins and restores selected theme to Vanilla');
|
||||
winston.info(' --start manually start NodeBB (default when no options are given)');
|
||||
}
|
||||
|
||||
30
bcrypt.js
30
bcrypt.js
@@ -1,30 +0,0 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
|
||||
var bcrypt = require('bcryptjs');
|
||||
|
||||
process.on('message', function(m) {
|
||||
if (m.type === 'hash') {
|
||||
hash(m.rounds, m.password);
|
||||
} else if (m.type === 'compare') {
|
||||
compare(m.password, m.hash);
|
||||
}
|
||||
});
|
||||
|
||||
function hash(rounds, password) {
|
||||
bcrypt.genSalt(rounds, function(err, salt) {
|
||||
if (err) {
|
||||
return process.send({type:'hash', err: {message: err.message}});
|
||||
}
|
||||
bcrypt.hash(password, salt, function(err, hash) {
|
||||
process.send({type:'hash', err: err ? {message: err.message} : null, hash: hash, password: password});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function compare(password, hash) {
|
||||
bcrypt.compare(password, hash, function(err, res) {
|
||||
process.send({type:'compare', err: err ? {message: err.message} : null, hash: hash, password: password, result: res});
|
||||
});
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
[
|
||||
[
|
||||
{
|
||||
"name": "Announcements",
|
||||
"description": "Announcements regarding our community",
|
||||
|
||||
@@ -1,86 +0,0 @@
|
||||
[
|
||||
{
|
||||
"field": "title",
|
||||
"value": "NodeBB"
|
||||
},
|
||||
{
|
||||
"field": "showSiteTitle",
|
||||
"value": "1"
|
||||
},
|
||||
{
|
||||
"field": "postDelay",
|
||||
"value": 10
|
||||
},
|
||||
{
|
||||
"field": "initialPostDelay",
|
||||
"value": 10
|
||||
},
|
||||
{
|
||||
"field": "minimumPostLength",
|
||||
"value": 8
|
||||
},
|
||||
{
|
||||
"field": "allowGuestSearching",
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"field": "allowTopicsThumbnail",
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"field": "allowRegistration",
|
||||
"value": 1
|
||||
},
|
||||
{
|
||||
"field": "allowLocalLogin",
|
||||
"value": 1
|
||||
},
|
||||
{
|
||||
"field": "allowAccountDelete",
|
||||
"value": 1
|
||||
},
|
||||
{
|
||||
"field": "allowFileUploads",
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"field": "maximumFileSize",
|
||||
"value": 2048
|
||||
},
|
||||
{
|
||||
"field": "minimumTitleLength",
|
||||
"value": 3
|
||||
},
|
||||
{
|
||||
"field": "maximumTitleLength",
|
||||
"value": 255
|
||||
},
|
||||
{
|
||||
"field": "minimumUsernameLength",
|
||||
"value": 2
|
||||
},
|
||||
{
|
||||
"field": "maximumUsernameLength",
|
||||
"value": 16
|
||||
},
|
||||
{
|
||||
"field": "minimumPasswordLength",
|
||||
"value": 6
|
||||
},
|
||||
{
|
||||
"field": "maximumSignatureLength",
|
||||
"value": 255
|
||||
},
|
||||
{
|
||||
"field": "maximumProfileImageSize",
|
||||
"value": 256
|
||||
},
|
||||
{
|
||||
"field": "profileImageDimension",
|
||||
"value": 128
|
||||
},
|
||||
{
|
||||
"field": "requireEmailConfirmation",
|
||||
"value": 0
|
||||
}
|
||||
]
|
||||
@@ -1,114 +0,0 @@
|
||||
"use strict";
|
||||
|
||||
var async = require('async'),
|
||||
prompt = require('prompt'),
|
||||
nconf = require('nconf'),
|
||||
winston = require('winston'),
|
||||
|
||||
questions = {};
|
||||
|
||||
function success(err, config, callback) {
|
||||
if (!config) {
|
||||
return callback(new Error('aborted'));
|
||||
}
|
||||
|
||||
var database = (config.redis || config.mongo || config.level) ? config.secondary_database : config.database;
|
||||
|
||||
function dbQuestionsSuccess(err, databaseConfig) {
|
||||
if (!databaseConfig) {
|
||||
return callback(new Error('aborted'));
|
||||
}
|
||||
|
||||
// Translate redis properties into redis object
|
||||
if(database === 'redis') {
|
||||
config.redis = {
|
||||
host: databaseConfig['redis:host'],
|
||||
port: databaseConfig['redis:port'],
|
||||
password: databaseConfig['redis:password'],
|
||||
database: databaseConfig['redis:database']
|
||||
};
|
||||
|
||||
if (config.redis.host.slice(0, 1) === '/') {
|
||||
delete config.redis.port;
|
||||
}
|
||||
} else if (database === 'mongo') {
|
||||
config.mongo = {
|
||||
host: databaseConfig['mongo:host'],
|
||||
port: databaseConfig['mongo:port'],
|
||||
username: databaseConfig['mongo:username'],
|
||||
password: databaseConfig['mongo:password'],
|
||||
database: databaseConfig['mongo:database']
|
||||
};
|
||||
} else if (database === 'level') {
|
||||
config.level = {
|
||||
database: databaseConfig['level:database']
|
||||
};
|
||||
} else {
|
||||
return callback(new Error('unknown database : ' + database));
|
||||
}
|
||||
|
||||
var allQuestions = questions.redis.concat(questions.mongo.concat(questions.level));
|
||||
for(var x=0;x<allQuestions.length;x++) {
|
||||
delete config[allQuestions[x].name];
|
||||
}
|
||||
|
||||
callback(err, config);
|
||||
}
|
||||
|
||||
if(database === 'redis') {
|
||||
if (config['redis:host'] && config['redis:port']) {
|
||||
dbQuestionsSuccess(null, config);
|
||||
} else {
|
||||
prompt.get(questions.redis, dbQuestionsSuccess);
|
||||
}
|
||||
} else if(database === 'mongo') {
|
||||
if (config['mongo:host'] && config['mongo:port']) {
|
||||
dbQuestionsSuccess(null, config);
|
||||
} else {
|
||||
prompt.get(questions.mongo, dbQuestionsSuccess);
|
||||
}
|
||||
} else if(database === 'level') {
|
||||
if (config['level:database']) {
|
||||
dbQuestionsSuccess(null, config);
|
||||
} else {
|
||||
prompt.get(questions.level, dbQuestionsSuccess);
|
||||
}
|
||||
} else {
|
||||
return callback(new Error('unknown database : ' + database));
|
||||
}
|
||||
}
|
||||
|
||||
function getSecondaryDatabaseModules(config, next) {
|
||||
prompt.get({
|
||||
"name": "secondary_db_modules",
|
||||
"description": "Which database modules should " + config.secondary_database + " store?",
|
||||
"default": nconf.get('secondary_db_modules') || "hash, list, sets, sorted"
|
||||
}, function(err, db) {
|
||||
config.secondary_db_modules = db.secondary_db_modules;
|
||||
success(err, config, next);
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = function(err, config, databases, callback) {
|
||||
var allowedDBs = Object.keys(databases);
|
||||
|
||||
allowedDBs.forEach(function(db) {
|
||||
questions[db] = require('./../src/database/' + db).questions;
|
||||
});
|
||||
|
||||
async.waterfall([
|
||||
function(next) {
|
||||
process.stdout.write('\n');
|
||||
winston.info('Now configuring ' + config.database + ' database:');
|
||||
success(err, config, next);
|
||||
},
|
||||
function(config, next) {
|
||||
if (config.secondary_database && allowedDBs.indexOf(config.secondary_database) !== -1) {
|
||||
winston.info('Now configuring ' + config.secondary_database + ' database:');
|
||||
getSecondaryDatabaseModules(config, next);
|
||||
} else {
|
||||
next(err, config);
|
||||
}
|
||||
}
|
||||
], callback);
|
||||
};
|
||||
251
loader.js
251
loader.js
@@ -2,222 +2,75 @@
|
||||
|
||||
var nconf = require('nconf'),
|
||||
fs = require('fs'),
|
||||
path = require('path'),
|
||||
cluster = require('cluster'),
|
||||
async = require('async'),
|
||||
logrotate = require('logrotate-stream'),
|
||||
pidFilePath = __dirname + '/pidfile',
|
||||
output = logrotate({ file: __dirname + '/logs/output.log', size: '1m', keep: 3, compress: true }),
|
||||
silent = process.env.NODE_ENV !== 'development' ? true : false,
|
||||
numCPUs,
|
||||
Loader = {
|
||||
timesStarted: 0,
|
||||
shutdown_queue: [],
|
||||
js: {
|
||||
cache: undefined,
|
||||
map: undefined
|
||||
},
|
||||
css: {
|
||||
cache: undefined,
|
||||
acpCache: undefined
|
||||
}
|
||||
};
|
||||
|
||||
Loader.init = function() {
|
||||
cluster.setupMaster({
|
||||
exec: "app.js",
|
||||
silent: silent
|
||||
});
|
||||
|
||||
if (silent) {
|
||||
console.log = function(value) {
|
||||
output.write(value + '\n');
|
||||
};
|
||||
}
|
||||
|
||||
cluster.on('fork', function(worker) {
|
||||
worker.on('message', function(message) {
|
||||
if (message && typeof message === 'object' && message.action) {
|
||||
switch (message.action) {
|
||||
case 'ready':
|
||||
if (Loader.js.cache) {
|
||||
worker.send({
|
||||
action: 'js-propagate',
|
||||
cache: Loader.js.cache,
|
||||
map: Loader.js.map
|
||||
});
|
||||
start = function() {
|
||||
var fork = require('child_process').fork,
|
||||
nbb_start = function() {
|
||||
nbb = fork('./app', process.argv.slice(2), {
|
||||
env: {
|
||||
'NODE_ENV': process.env.NODE_ENV
|
||||
}
|
||||
});
|
||||
|
||||
if (Loader.css.cache) {
|
||||
worker.send({
|
||||
action: 'css-propagate',
|
||||
cache: Loader.css.cache,
|
||||
acpCache: Loader.css.acpCache
|
||||
});
|
||||
}
|
||||
|
||||
worker.send('bind');
|
||||
|
||||
// Kill an instance in the shutdown queue
|
||||
var workerToKill = Loader.shutdown_queue.pop();
|
||||
if (workerToKill) {
|
||||
cluster.workers[workerToKill].kill();
|
||||
}
|
||||
break;
|
||||
case 'restart':
|
||||
console.log('[cluster] Restarting...');
|
||||
Loader.restart(function(err) {
|
||||
console.log('[cluster] Restarting...');
|
||||
});
|
||||
break;
|
||||
case 'reload':
|
||||
console.log('[cluster] Reloading...');
|
||||
Loader.reload();
|
||||
break;
|
||||
case 'js-propagate':
|
||||
Loader.js.cache = message.cache;
|
||||
Loader.js.map = message.map;
|
||||
|
||||
var otherWorkers = Object.keys(cluster.workers).filter(function(worker_id) {
|
||||
return parseInt(worker_id, 10) !== parseInt(worker.id, 10);
|
||||
});
|
||||
otherWorkers.forEach(function(worker_id) {
|
||||
cluster.workers[worker_id].send({
|
||||
action: 'js-propagate',
|
||||
cache: message.cache,
|
||||
map: message.map
|
||||
});
|
||||
});
|
||||
break;
|
||||
case 'css-propagate':
|
||||
Loader.css.cache = message.cache;
|
||||
Loader.css.acpCache = message.acpCache;
|
||||
|
||||
var otherWorkers = Object.keys(cluster.workers).filter(function(worker_id) {
|
||||
return parseInt(worker_id, 10) !== parseInt(worker.id, 10);
|
||||
});
|
||||
otherWorkers.forEach(function(worker_id) {
|
||||
cluster.workers[worker_id].send({
|
||||
action: 'css-propagate',
|
||||
cache: message.cache,
|
||||
acpCache: message.acpCache
|
||||
});
|
||||
});
|
||||
break;
|
||||
case 'listening':
|
||||
if (message.primary) {
|
||||
Loader.primaryWorker = parseInt(worker.id, 10);
|
||||
}
|
||||
break;
|
||||
case 'user:connect':
|
||||
case 'user:disconnect':
|
||||
case 'config:update':
|
||||
notifyWorkers(message);
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
cluster.on('listening', function(worker) {
|
||||
console.log('[cluster] Child Process (' + worker.process.pid + ') listening for connections.');
|
||||
});
|
||||
|
||||
function notifyWorkers(msg) {
|
||||
Object.keys(cluster.workers).forEach(function(id) {
|
||||
cluster.workers[id].send(msg);
|
||||
});
|
||||
}
|
||||
|
||||
cluster.on('exit', function(worker, code, signal) {
|
||||
if (code !== 0) {
|
||||
if (Loader.timesStarted < numCPUs*3) {
|
||||
Loader.timesStarted++;
|
||||
if (Loader.crashTimer) {
|
||||
clearTimeout(Loader.crashTimer);
|
||||
}
|
||||
Loader.crashTimer = setTimeout(function() {
|
||||
Loader.timesStarted = 0;
|
||||
nbb.on('message', function(cmd) {
|
||||
if (cmd === 'nodebb:restart') {
|
||||
nbb_restart();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
console.log(numCPUs*3 + ' restarts in 10 seconds, most likely an error on startup. Halting.');
|
||||
process.exit();
|
||||
}
|
||||
}
|
||||
},
|
||||
nbb_stop = function() {
|
||||
nbb.kill();
|
||||
if (fs.existsSync(pidFilePath)) {
|
||||
var pid = parseInt(fs.readFileSync(pidFilePath, { encoding: 'utf-8' }), 10);
|
||||
if (process.pid === pid) {
|
||||
fs.unlinkSync(pidFilePath);
|
||||
}
|
||||
}
|
||||
},
|
||||
nbb_restart = function() {
|
||||
nbb.on('exit', function() {
|
||||
nbb_start();
|
||||
});
|
||||
nbb.kill();
|
||||
};
|
||||
|
||||
console.log('[cluster] Child Process (' + worker.process.pid + ') has exited (code: ' + code + ')');
|
||||
if (!worker.suicide) {
|
||||
console.log('[cluster] Spinning up another process...')
|
||||
process.on('SIGINT', nbb_stop);
|
||||
process.on('SIGTERM', nbb_stop);
|
||||
process.on('SIGHUP', nbb_restart);
|
||||
|
||||
var wasPrimary = parseInt(worker.id, 10) === Loader.primaryWorker;
|
||||
cluster.fork({
|
||||
handle_jobs: wasPrimary
|
||||
});
|
||||
}
|
||||
});
|
||||
nbb_start();
|
||||
},
|
||||
nbb;
|
||||
|
||||
process.on('SIGHUP', Loader.restart);
|
||||
nconf.argv();
|
||||
|
||||
Loader.start();
|
||||
};
|
||||
|
||||
Loader.start = function() {
|
||||
var worker;
|
||||
|
||||
Loader.primaryWorker = 1;
|
||||
|
||||
for(var x=0;x<numCPUs;x++) {
|
||||
// Only the first worker sets up templates/sounds/jobs/etc
|
||||
worker = cluster.fork({
|
||||
cluster_setup: x === 0,
|
||||
handle_jobs: x === 0
|
||||
});
|
||||
|
||||
// Logging
|
||||
if (silent) {
|
||||
worker.process.stdout.pipe(output);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loader.restart = function(callback) {
|
||||
// Slate existing workers for termination -- welcome to death row.
|
||||
Loader.shutdown_queue = Loader.shutdown_queue.concat(Object.keys(cluster.workers));
|
||||
Loader.start();
|
||||
};
|
||||
|
||||
Loader.reload = function() {
|
||||
Object.keys(cluster.workers).forEach(function(worker_id) {
|
||||
cluster.workers[worker_id].send({
|
||||
action: 'reload'
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
nconf.argv().file({
|
||||
file: path.join(__dirname, '/config.json')
|
||||
});
|
||||
|
||||
numCPUs = nconf.get('cluster') || 1;
|
||||
numCPUs = (numCPUs === true) ? require('os').cpus().length : numCPUs;
|
||||
|
||||
if (nconf.get('daemon') !== false) {
|
||||
// Start the daemon!
|
||||
if (nconf.get('d')) {
|
||||
// Check for a still-active NodeBB process
|
||||
if (fs.existsSync(pidFilePath)) {
|
||||
try {
|
||||
var pid = fs.readFileSync(pidFilePath, { encoding: 'utf-8' });
|
||||
process.kill(pid, 0);
|
||||
console.log('\n Error: Another NodeBB is already running!');
|
||||
process.exit();
|
||||
} catch (e) {
|
||||
fs.unlinkSync(pidFilePath);
|
||||
}
|
||||
}
|
||||
|
||||
require('daemon')();
|
||||
// Initialise logging streams
|
||||
var outputStream = fs.createWriteStream(__dirname + '/logs/output.log');
|
||||
outputStream.on('open', function(fd) {
|
||||
// Daemonize
|
||||
require('daemon')({
|
||||
stdout: fd
|
||||
});
|
||||
|
||||
fs.writeFile(__dirname + '/pidfile', process.pid);
|
||||
}
|
||||
// Write its pid to a pidfile
|
||||
fs.writeFile(__dirname + '/pidfile', process.pid);
|
||||
|
||||
Loader.init();
|
||||
start();
|
||||
});
|
||||
} else {
|
||||
start();
|
||||
}
|
||||
76
minifier.js
76
minifier.js
@@ -1,76 +0,0 @@
|
||||
"use strict";
|
||||
|
||||
var uglifyjs = require('uglify-js'),
|
||||
less = require('less'),
|
||||
async = require('async'),
|
||||
fs = require('fs'),
|
||||
path = require('path'),
|
||||
crypto = require('crypto'),
|
||||
|
||||
Minifier = {
|
||||
js: {},
|
||||
css: {}
|
||||
};
|
||||
|
||||
/* Javascript */
|
||||
Minifier.js.minify = function (scripts, relativePath, minify, callback) {
|
||||
var options = {
|
||||
compress: false
|
||||
};
|
||||
|
||||
scripts = scripts.filter(function(file) {
|
||||
return fs.existsSync(file);
|
||||
});
|
||||
|
||||
if (!minify) {
|
||||
options.sourceMapURL = '/nodebb.min.js.map';
|
||||
options.outSourceMap = 'nodebb.min.js.map';
|
||||
options.sourceRoot = relativePath;
|
||||
options.mangle = false;
|
||||
options.prefix = 1;
|
||||
}
|
||||
|
||||
try {
|
||||
var minified = uglifyjs.minify(scripts, options),
|
||||
hasher = crypto.createHash('md5'),
|
||||
hash;
|
||||
|
||||
// Calculate js hash
|
||||
hasher.update(minified.code, 'utf-8');
|
||||
hash = hasher.digest('hex');
|
||||
process.send({
|
||||
type: 'hash',
|
||||
payload: hash.slice(0, 8)
|
||||
});
|
||||
|
||||
callback({
|
||||
js: minified.code,
|
||||
map: minified.map
|
||||
});
|
||||
} catch(err) {
|
||||
process.send({
|
||||
type: 'error',
|
||||
payload: err
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
process.on('message', function(payload) {
|
||||
switch(payload.action) {
|
||||
case 'js':
|
||||
Minifier.js.minify(payload.scripts, payload.relativePath, payload.minify, function(data) {
|
||||
process.stdout.write(data.js);
|
||||
process.send({
|
||||
type: 'end',
|
||||
payload: 'script'
|
||||
});
|
||||
|
||||
process.stderr.write(data.map);
|
||||
process.send({
|
||||
type: 'end',
|
||||
payload: 'mapping'
|
||||
});
|
||||
});
|
||||
break;
|
||||
}
|
||||
});
|
||||
@@ -5,22 +5,15 @@
|
||||
|
||||
(function(module) {
|
||||
'use strict';
|
||||
/*global before*/
|
||||
|
||||
var utils = require('./../../public/src/utils.js'),
|
||||
var utils = require('./../public/src/utils.js'),
|
||||
path = require('path'),
|
||||
nconf = require('nconf'),
|
||||
winston = require('winston'),
|
||||
errorText;
|
||||
|
||||
|
||||
nconf.file({ file: path.join(__dirname, '../../config.json') });
|
||||
nconf.defaults({
|
||||
base_dir: path.join(__dirname,'../..'),
|
||||
themes_path: path.join(__dirname, '../../node_modules'),
|
||||
upload_url: path.join(path.sep, '../../uploads', path.sep),
|
||||
views_dir: path.join(__dirname, '../../public/templates')
|
||||
});
|
||||
nconf.file({ file: path.join(__dirname, '../config.json') });
|
||||
|
||||
var dbType = nconf.get('database'),
|
||||
testDbConfig = nconf.get('test_database'),
|
||||
@@ -33,21 +26,17 @@
|
||||
"Please, add parameters for test database in config.json\n"+
|
||||
"For example (redis):\n"+
|
||||
'"test_database": {' + '\n' +
|
||||
' "host": "127.0.0.1",' + '\n' +
|
||||
' "port": "6379",' + '\n' +
|
||||
' "password": "",' + '\n' +
|
||||
' "database": "1"' + '\n' +
|
||||
' "host": "127.0.0.1",' + '\n' +
|
||||
' "port": "6379",' + '\n' +
|
||||
' "password": "",' + '\n' +
|
||||
' "database": "1"' + '\n' +
|
||||
'}\n'+
|
||||
" or (mongo):\n" +
|
||||
'"test_database": {' + '\n' +
|
||||
' "host": "127.0.0.1",' + '\n' +
|
||||
' "port": "27017",' + '\n' +
|
||||
' "password": "",' + '\n' +
|
||||
' "database": "1"' + '\n' +
|
||||
'}\n'+
|
||||
" or (level):\n" +
|
||||
'"test_database": {' + '\n' +
|
||||
' "database": "/path/to/database"' + '\n' +
|
||||
'"test_database": {' + '\n' +
|
||||
' "host": "127.0.0.1",' + '\n' +
|
||||
' "port": "27017",' + '\n' +
|
||||
' "password": "",' + '\n' +
|
||||
' "database": "1"' + '\n' +
|
||||
'}\n'+
|
||||
"==========================================================="
|
||||
);
|
||||
@@ -66,10 +55,11 @@
|
||||
|
||||
nconf.set(dbType, testDbConfig);
|
||||
|
||||
var db = require('../../src/database'),
|
||||
meta = require('../../src/meta');
|
||||
var db = require('../src/database'),
|
||||
meta = require('../src/meta');
|
||||
|
||||
before(function(done) {
|
||||
|
||||
db.init(function(err) {
|
||||
//Clean up
|
||||
db.flushdb(function(err) {
|
||||
@@ -81,13 +71,9 @@
|
||||
winston.info('test_database flushed');
|
||||
|
||||
meta.configs.init(function () {
|
||||
nconf.set('url', nconf.get('base_url') + (nconf.get('use_port') ? ':' + nconf.get('port') : '') + nconf.get('relative_path'));
|
||||
nconf.set('core_templates_path', path.join(__dirname, '../../src/views'));
|
||||
nconf.set('base_templates_path', path.join(nconf.get('themes_path'), 'nodebb-theme-vanilla/templates'));
|
||||
nconf.set('theme_templates_path', meta.config['theme:templates'] ? path.join(nconf.get('themes_path'), meta.config['theme:id'], meta.config['theme:templates']) : nconf.get('base_templates_path'));
|
||||
|
||||
var webserver = require('../../src/webserver'),
|
||||
sockets = require('../../src/socket.io');
|
||||
var webserver = require('../src/webserver'),
|
||||
sockets = require('../src/socket.io');
|
||||
sockets.init(webserver.server);
|
||||
|
||||
done();
|
||||
51
nodebb
51
nodebb
@@ -4,11 +4,6 @@
|
||||
# $1 action
|
||||
# $2 subaction
|
||||
|
||||
node="$(which nodejs 2>/dev/null)";
|
||||
if [ $? -gt 0 ];
|
||||
then node="$(which node)";
|
||||
fi
|
||||
|
||||
function pidExists() {
|
||||
if [ -e "pidfile" ];
|
||||
then
|
||||
@@ -27,31 +22,18 @@ case "$1" in
|
||||
echo "Starting NodeBB";
|
||||
echo " \"./nodebb stop\" to stop the NodeBB server";
|
||||
echo " \"./nodebb log\" to view server output";
|
||||
|
||||
# Start the loader daemon
|
||||
"$node" loader -d "$@"
|
||||
echo "" > ./logs/output.log;
|
||||
node loader -d "$@"
|
||||
;;
|
||||
|
||||
stop)
|
||||
pidExists;
|
||||
if [ 0 -eq $? ];
|
||||
then
|
||||
echo "NodeBB is already stopped.";
|
||||
else
|
||||
echo "Stopping NodeBB. Goodbye!";
|
||||
kill $(cat pidfile);
|
||||
fi
|
||||
echo "Stopping NodeBB. Goodbye!";
|
||||
kill $(cat pidfile);
|
||||
;;
|
||||
|
||||
reload|restart)
|
||||
pidExists;
|
||||
if [ 0 -eq $? ];
|
||||
then
|
||||
echo "NodeBB could not be restarted, as a running instance could not be found.";
|
||||
else
|
||||
echo "Restarting NodeBB.";
|
||||
kill -1 $(cat pidfile);
|
||||
fi
|
||||
echo "Restarting NodeBB.";
|
||||
kill -1 $(cat pidfile);
|
||||
;;
|
||||
|
||||
status)
|
||||
@@ -60,11 +42,13 @@ case "$1" in
|
||||
then
|
||||
echo "NodeBB is not running";
|
||||
echo " \"./nodebb start\" to launch the NodeBB server";
|
||||
return 1;
|
||||
else
|
||||
echo "NodeBB Running (pid $(cat pidfile))";
|
||||
echo " \"./nodebb stop\" to stop the NodeBB server";
|
||||
echo " \"./nodebb log\" to view server output";
|
||||
echo " \"./nodebb restart\" to restart NodeBB";
|
||||
return 0;
|
||||
fi
|
||||
;;
|
||||
|
||||
@@ -75,34 +59,33 @@ case "$1" in
|
||||
|
||||
upgrade)
|
||||
npm install
|
||||
# ls -d node_modules/nodebb* | xargs -n1 basename | xargs npm install
|
||||
# ls -d node_modules/nodebb* | xargs -n1 basename | xargs npm update
|
||||
npm i nodebb-theme-vanilla nodebb-theme-lavender nodebb-widget-essentials
|
||||
"$node" app --upgrade
|
||||
ls -d node_modules/nodebb* | xargs -n1 basename | xargs npm install
|
||||
ls -d node_modules/nodebb* | xargs -n1 basename | xargs npm update
|
||||
node loader --upgrade
|
||||
touch package.json
|
||||
echo -e "\n\e[00;32mNodeBB Dependencies up-to-date!\e[00;00m";
|
||||
;;
|
||||
|
||||
setup)
|
||||
"$node" app --setup "$@"
|
||||
node loader --setup "$@"
|
||||
;;
|
||||
|
||||
reset)
|
||||
"$node" app --reset --$2
|
||||
node loader --reset
|
||||
;;
|
||||
|
||||
dev)
|
||||
echo "Launching NodeBB in \"development\" mode."
|
||||
echo "To run the production build of NodeBB, please use \"forever\"."
|
||||
echo "More Information: https://docs.nodebb.org/en/latest/running/index.html"
|
||||
NODE_ENV=development "$node" loader --no-daemon "$@"
|
||||
echo "More Information: https://github.com/designcreateplay/NodeBB/wiki/How-to-run-NodeBB"
|
||||
NODE_ENV=development node loader "$@"
|
||||
;;
|
||||
|
||||
watch)
|
||||
echo "Launching NodeBB in \"development\" mode."
|
||||
echo "To run the production build of NodeBB, please use \"forever\"."
|
||||
echo "More Information: https://docs.nodebb.org/en/latest/running/index.html"
|
||||
NODE_ENV=development supervisor -q --ignore public/templates --extensions 'node|js|tpl|less' -- app "$@"
|
||||
echo "More Information: https://github.com/designcreateplay/NodeBB/wiki/How-to-run-NodeBB"
|
||||
NODE_ENV=development supervisor -q --ignore public/templates --extensions 'node|js|tpl' -- app "$@"
|
||||
;;
|
||||
|
||||
*)
|
||||
|
||||
2174
npm-shrinkwrap.json
generated
2174
npm-shrinkwrap.json
generated
File diff suppressed because it is too large
Load Diff
94
package.json
94
package.json
@@ -2,75 +2,69 @@
|
||||
"name": "nodebb",
|
||||
"license": "GPLv3 or later",
|
||||
"description": "NodeBB Forum",
|
||||
"version": "0.5.1",
|
||||
"version": "0.4.0",
|
||||
"homepage": "http://www.nodebb.org",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/NodeBB/NodeBB/"
|
||||
"url": "https://github.com/designcreateplay/NodeBB/"
|
||||
},
|
||||
"main": "app.js",
|
||||
"scripts": {
|
||||
"start": "./nodebb start",
|
||||
"stop": "./nodebb stop",
|
||||
"test": "mocha ./tests -t 10000"
|
||||
"test": "mocha ./tests"
|
||||
},
|
||||
"dependencies": {
|
||||
"async": "~0.9.0",
|
||||
"bcryptjs": "~2.0.1",
|
||||
"body-parser": "^1.0.1",
|
||||
"compression": "^1.0.1",
|
||||
"connect-ensure-login": "^0.1.1",
|
||||
"connect-flash": "^0.1.1",
|
||||
"connect-multiparty": "^1.0.1",
|
||||
"cookie-parser": "^1.0.1",
|
||||
"cron": "~1.0.4",
|
||||
"csurf": "^1.1.0",
|
||||
"daemon": "~1.1.0",
|
||||
"express": "4.6.1",
|
||||
"express-session": "^1.0.2",
|
||||
"gm": "1.16.0",
|
||||
"gravatar": "1.0.6",
|
||||
"less": "~1.7.3",
|
||||
"logrotate-stream": "^0.2.3",
|
||||
"mkdirp": "~0.5.0",
|
||||
"morgan": "^1.0.0",
|
||||
"nconf": "~0.6.7",
|
||||
"nodebb-plugin-dbsearch": "0.0.13",
|
||||
"nodebb-plugin-markdown": "~0.6.3",
|
||||
"nodebb-plugin-mentions": "~0.6.0",
|
||||
"nodebb-plugin-soundpack-default": "~0.1.1",
|
||||
"nodebb-theme-lavender": "~0.1.0",
|
||||
"nodebb-theme-vanilla": "~0.1.0",
|
||||
"nodebb-widget-essentials": "~0.1.1",
|
||||
"npm": "^1.4.6",
|
||||
"socket.io": "~0.9.16",
|
||||
"express": "3.2.0",
|
||||
"express-namespace": "~0.1.1",
|
||||
"passport": "~0.2.0",
|
||||
"passport-local": "1.0.0",
|
||||
"prompt": "~0.2.11",
|
||||
"request": "~2.38.0",
|
||||
"rimraf": "~2.2.6",
|
||||
"rss": "~0.3.2",
|
||||
"semver": "~2.3.1",
|
||||
"serve-favicon": "^2.0.1",
|
||||
"sitemap": "~0.7.3",
|
||||
"socket.io": "0.9.17",
|
||||
"socket.io-client": "0.9.17",
|
||||
"socket.io-wildcard": "~0.1.1",
|
||||
"string": "~1.9.0",
|
||||
"templates.js": "0.0.14",
|
||||
"uglify-js": "git+https://github.com/julianlam/UglifyJS2.git",
|
||||
"underscore": "~1.6.0",
|
||||
"validator": "~3.16.1",
|
||||
"passport-local": "0.1.6",
|
||||
"less-middleware": "0.1.12",
|
||||
"marked": "0.2.8",
|
||||
"async": "~0.2.8",
|
||||
"gm": "1.14.2",
|
||||
"gravatar": "1.0.6",
|
||||
"nconf": "~0.6.7",
|
||||
"sitemap": "~0.7.1",
|
||||
"reds": "~0.2.4",
|
||||
"winston": "~0.7.2",
|
||||
"xregexp": "~2.0.0"
|
||||
"rss": "~0.2.0",
|
||||
"prompt": "~0.2.11",
|
||||
"uglify-js": "~2.4.0",
|
||||
"validator": "^3.4.0",
|
||||
"cron": "~1.0.4",
|
||||
"semver": "~2.2.1",
|
||||
"string": "~1.7.0",
|
||||
"xregexp": "~2.0.0",
|
||||
"socket.io-wildcard": "~0.1.1",
|
||||
"bcryptjs": "~0.7.10",
|
||||
"nodebb-plugin-mentions": "~0.4.0",
|
||||
"nodebb-plugin-markdown": "~0.4.1",
|
||||
"nodebb-widget-essentials": "~0.0.21",
|
||||
"nodebb-theme-vanilla": "~0.0.19",
|
||||
"nodebb-theme-lavender": "~0.0.25",
|
||||
"less": "~1.6.3",
|
||||
"daemon": "~1.1.0",
|
||||
"underscore": "^1.6.0",
|
||||
"mkdirp": "~0.3.5",
|
||||
"rimraf": "~2.2.6"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"redis": "0.8.3",
|
||||
"hiredis": "~0.1.15",
|
||||
"connect-redis": "1.4.5",
|
||||
"mongodb": "~1.3.19",
|
||||
"connect-mongo": "0.4.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"mocha": "~1.13.0"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/NodeBB/NodeBB/issues"
|
||||
"url": "https://github.com/designcreateplay/NodeBB/issues"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.10"
|
||||
"node": ">=0.8"
|
||||
},
|
||||
"maintainers": [
|
||||
{
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 521 B |
Binary file not shown.
|
Before Width: | Height: | Size: 861 B |
Binary file not shown.
|
Before Width: | Height: | Size: 5.9 KiB |
@@ -1,8 +1,12 @@
|
||||
{
|
||||
"new_topic_button": "موضوع جديد",
|
||||
"no_topics": "<strong>لا توجد مواضيع في هذه الفئة</strong>لماذا لا تحاول نشر موضوع؟<br />",
|
||||
"browsing": "تصفح",
|
||||
"no_topics": "<strong>لا توجد مواضيع في هذه الفئة</strong>لماذا لا تحاول نشر واحد؟<br />",
|
||||
"posts": "مشاركات",
|
||||
"views": "مشاهدات",
|
||||
"posted": "نشر",
|
||||
"browsing": "يتصفح",
|
||||
"no_replies": "لم يرد أحد",
|
||||
"share_this_category": "انشر هذه الفئة",
|
||||
"ignore": "Ignore"
|
||||
"replied": "رد",
|
||||
"last_edited_by": "تغيرت أخيراً عبر",
|
||||
"share_this_category": "Share this category"
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
{
|
||||
"password-reset-requested": "Password Reset Requested - %1!",
|
||||
"welcome-to": "Welcome to %1",
|
||||
"greeting_no_name": "Hello",
|
||||
"greeting_with_name": "Hello %1",
|
||||
"welcome.text1": "Thank you for registering with %1!",
|
||||
"welcome.text2": "To fully activate your account, we need to verify that you own the email address you registered with.",
|
||||
"welcome.cta": "Click here to confirm your email address",
|
||||
"reset.text1": "We received a request to reset your password, possibly because you have forgotten it. If this is not the case, please ignore this email.",
|
||||
"reset.text2": "To continue with the password reset, please click on the following link:",
|
||||
"reset.cta": "Click here to reset your password",
|
||||
"digest.notifications": "You have some unread notifications from %1:",
|
||||
"digest.latest_topics": "Latest topics from %1",
|
||||
"digest.cta": "Click here to visit %1",
|
||||
"digest.unsub.info": "This digest was sent to you due to your subscription settings.",
|
||||
"digest.daily.no_topics": "There have been no active topics in the past day",
|
||||
"notif.chat.subject": "New chat message received from %1",
|
||||
"notif.chat.cta": "Click here to continue the conversation",
|
||||
"notif.chat.unsub.info": "This chat notification was sent to you due to your subscription settings.",
|
||||
"test.text1": "This is a test email to verify that the emailer is set up correctly for your NodeBB.",
|
||||
"unsub.cta": "Click here to alter those settings",
|
||||
"closing": "Thanks!"
|
||||
}
|
||||
@@ -1,63 +0,0 @@
|
||||
{
|
||||
"invalid-data": "بيانات غير صالحة",
|
||||
"not-logged-in": "لم تقم بتسجيل الدخول",
|
||||
"account-locked": "Your account has been locked temporarily",
|
||||
"search-requires-login": "Searching requires an account! Please login or register!",
|
||||
"invalid-cid": "Invalid Category ID",
|
||||
"invalid-tid": "Invalid Topic ID",
|
||||
"invalid-pid": "Invalid Post ID",
|
||||
"invalid-uid": "Invalid User ID",
|
||||
"invalid-username": "اسم المستخدم غير مقبول",
|
||||
"invalid-email": "البريد الاكتروني غير مقبول",
|
||||
"invalid-title": "Invalid title!",
|
||||
"invalid-user-data": "Invalid User Data",
|
||||
"invalid-password": "كلمة السر غير مقبولة",
|
||||
"invalid-username-or-password": "Please specify both a username and password",
|
||||
"invalid-pagination-value": "Invalid pagination value",
|
||||
"username-taken": "اسم المستخدم ماخوذ",
|
||||
"email-taken": "البريد الالكتروني ماخوذ",
|
||||
"email-not-confirmed": "Your email is not confirmed, please click here to confirm your email.",
|
||||
"username-too-short": "Username too short",
|
||||
"username-too-long": "Username too long",
|
||||
"user-banned": "المستخدم محظور",
|
||||
"user-too-new": "You need to wait %1 seconds before making your first post!",
|
||||
"no-category": "Category doesn't exist",
|
||||
"no-topic": "Topic doesn't exist",
|
||||
"no-post": "Post doesn't exist",
|
||||
"no-group": "Group doesn't exist",
|
||||
"no-user": "المستخدم لا يوجد",
|
||||
"no-teaser": "Teaser doesn't exist",
|
||||
"no-privileges": "You don't have enough privileges for this action.",
|
||||
"no-emailers-configured": "No email plugins were loaded, so a test email could not be sent",
|
||||
"category-disabled": "Category disabled",
|
||||
"topic-locked": "الموضوع مقفول",
|
||||
"still-uploading": "الرجاء انتظار الرفع",
|
||||
"content-too-short": "Please enter a longer post. At least %1 characters.",
|
||||
"title-too-short": "Please enter a longer title. At least %1 characters.",
|
||||
"title-too-long": "Please enter a shorter title. Titles can't be longer than %1 characters.",
|
||||
"too-many-posts": "You can only post every %1 seconds.",
|
||||
"file-too-big": "Maximum allowed file size is %1 kbs",
|
||||
"cant-vote-self-post": "You cannot vote for your own post",
|
||||
"already-favourited": "You already favourited this post",
|
||||
"already-unfavourited": "You already unfavourited this post",
|
||||
"cant-ban-other-admins": "You can't ban other admins!",
|
||||
"invalid-image-type": "نوع الصورة ممنوع",
|
||||
"group-name-too-short": "Group name too short",
|
||||
"group-already-exists": "Group already exists",
|
||||
"group-name-change-not-allowed": "Group name change not allowed",
|
||||
"post-already-deleted": "Post already deleted",
|
||||
"post-already-restored": "Post already restored",
|
||||
"topic-already-deleted": "Topic already deleted",
|
||||
"topic-already-restored": "Topic already restored",
|
||||
"topic-thumbnails-are-disabled": "Topic thumbnails are disabled.",
|
||||
"invalid-file": "Invalid File",
|
||||
"uploads-are-disabled": "Uploads are disabled",
|
||||
"upload-error": "مشكلة في الرفع: 1%",
|
||||
"signature-too-long": "Signature can't be longer than %1 characters!",
|
||||
"cant-chat-with-yourself": "You can't chat with yourself!",
|
||||
"reputation-system-disabled": "Reputation system is disabled.",
|
||||
"downvoting-disabled": "Downvoting is disabled",
|
||||
"not-enough-reputation-to-downvote": "You do not have enough reputation to downvote this post",
|
||||
"not-enough-reputation-to-flag": "Yo do not have enough reputation to flag this post",
|
||||
"reload-failed": "NodeBB encountered a problem while reloading: \"%1\". NodeBB will continue to serve the existing client-side assets, although you should undo what you did just prior to reloading."
|
||||
}
|
||||
7
public/language/ar/footer.json
Normal file
7
public/language/ar/footer.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"stats.online": "حالياً على الموقع",
|
||||
"stats.users": "مستخدمين",
|
||||
"stats.topics": "مواضيع",
|
||||
"stats.posts": "مشاركات",
|
||||
"success": "نجاح"
|
||||
}
|
||||
@@ -13,17 +13,14 @@
|
||||
"please_log_in": "Please Log In",
|
||||
"logout": "تسجيل الخروج",
|
||||
"posting_restriction_info": "Posting is currently restricted to registered members only, click here to log in.",
|
||||
"welcome_back": "Welcome Back",
|
||||
"welcome_back": "Welcome Back ",
|
||||
"you_have_successfully_logged_in": "You have successfully logged in",
|
||||
"save_changes": "حفظ التغييرات",
|
||||
"close": "أغلق",
|
||||
"pagination": "Pagination",
|
||||
"pagination.out_of": "%1 out of %2",
|
||||
"pagination.enter_index": "Enter index",
|
||||
"header.admin": "مشرف",
|
||||
"header.recent": "حديث",
|
||||
"header.unread": "غير مقروء",
|
||||
"header.tags": "Tags",
|
||||
"header.popular": "Popular",
|
||||
"header.users": "المستخدمين",
|
||||
"header.chats": "Chats",
|
||||
@@ -38,38 +35,21 @@
|
||||
"alert.success": "Success",
|
||||
"alert.error": "Error",
|
||||
"alert.banned": "Banned",
|
||||
"alert.banned.message": "You have just been banned, you will now be logged out.",
|
||||
"alert.banned.message": "You are banned you will be logged out!",
|
||||
"alert.unfollow": "You are no longer following %1!",
|
||||
"alert.follow": "You are now following %1!",
|
||||
"online": "Online",
|
||||
"users": "Users",
|
||||
"topics": "Topics",
|
||||
"posts": "Posts",
|
||||
"views": "Views",
|
||||
"reputation": "Reputation",
|
||||
"read_more": "read more",
|
||||
"posted_ago_by_guest": "posted %1 by Guest",
|
||||
"posted_ago_by": "posted %1 by %2",
|
||||
"posted_ago": "posted %1",
|
||||
"posted_in_ago_by_guest": "posted in %1 %2 by Guest",
|
||||
"posted_in_ago_by": "posted in %1 %2 by %3",
|
||||
"posted_in_ago": "posted in %1 %2",
|
||||
"replied_ago": "replied %1",
|
||||
"user_posted_ago": "%1 posted %2",
|
||||
"guest_posted_ago": "Guest posted %1",
|
||||
"last_edited_by_ago": "last edited by %1 %2",
|
||||
"posted": "posted",
|
||||
"in": "in",
|
||||
"norecentposts": "No Recent Posts",
|
||||
"norecenttopics": "No Recent Topics",
|
||||
"recentposts": "Recent Posts",
|
||||
"recentips": "Recently Logged In IPs",
|
||||
"online": "Online",
|
||||
"away": "Away",
|
||||
"dnd": "Do not Disturb",
|
||||
"invisible": "Invisible",
|
||||
"offline": "Offline",
|
||||
"email": "Email",
|
||||
"language": "Language",
|
||||
"guest": "Guest",
|
||||
"guests": "Guests",
|
||||
"updated.title": "Forum Updated",
|
||||
"updated.message": "This forum has just been updated to the latest version. Click here to refresh the page."
|
||||
"privacy": "Privacy"
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"view_group": "View Group",
|
||||
"details.title": "Group Details",
|
||||
"details.members": "Member List",
|
||||
"details.has_no_posts": "This group's members have not made any posts.",
|
||||
"details.latest_posts": "Latest Posts"
|
||||
}
|
||||
@@ -1,9 +1,10 @@
|
||||
{
|
||||
"login": "دخول",
|
||||
"username": "Username / Email",
|
||||
"password": "كلمة السر",
|
||||
"remember_me": "تذكرني؟",
|
||||
"forgot_password": "نسيت كلمة المرور؟",
|
||||
"alternative_logins": "تسجيلات الدخول البديلة",
|
||||
"failed_login_attempt": "فشلت محاولة تسجيل الدخول، يرجى المحاولة مرة أخرى.",
|
||||
"login_successful": "قمت بتسجيل الدخول بنجاح!",
|
||||
"dont_have_account": "Don't have an account?"
|
||||
"login_successful": "قمت بتسجيل الدخول بنجاح!"
|
||||
}
|
||||
@@ -1,22 +1,6 @@
|
||||
{
|
||||
"chat.chatting_with": "الدردشة مع <span id=\"chat-with-name\"></span>",
|
||||
"chat.placeholder": "Type chat message here, press enter to send",
|
||||
"chat.placeholder": "اكتب رسالة دردشة هنا، وإضغط ENTER لإرسال",
|
||||
"chat.send": "أرسل",
|
||||
"chat.no_active": "لا يوجد لديك دردشات نشطة.",
|
||||
"chat.user_typing": "%1 is typing ...",
|
||||
"chat.user_has_messaged_you": "%1 has messaged you.",
|
||||
"chat.see_all": "See all Chats",
|
||||
"chat.no-messages": "Please select a recipient to view chat message history",
|
||||
"chat.recent-chats": "Recent Chats",
|
||||
"chat.contacts": "Contacts",
|
||||
"chat.message-history": "Message History",
|
||||
"chat.pop-out": "Pop out chat",
|
||||
"chat.maximize": "Maximize",
|
||||
"chat.yesterday": "Yesterday",
|
||||
"chat.seven_days": "7 Days",
|
||||
"chat.thirty_days": "30 Days",
|
||||
"chat.three_months": "3 Months",
|
||||
"composer.user_said_in": "%1 said in %2:",
|
||||
"composer.user_said": "%1 said:",
|
||||
"composer.discard": "Are you sure you wish to discard this post?"
|
||||
"chat.no_active": "لا يوجد لديك دردشات نشطة."
|
||||
}
|
||||
@@ -2,25 +2,9 @@
|
||||
"title": "إعلام",
|
||||
"no_notifs": "You have no new notifications",
|
||||
"see_all": "See all Notifications",
|
||||
"back_to_home": "Back to %1",
|
||||
"back_to_home": "العودة إلى NodeBB",
|
||||
"outgoing_link": "رابط خارجي",
|
||||
"outgoing_link_message": "You are now leaving %1.",
|
||||
"continue_to": "Continue to %1",
|
||||
"return_to": "Return to %1",
|
||||
"new_notification": "New Notification",
|
||||
"you_have_unread_notifications": "You have unread notifications.",
|
||||
"new_message_from": "New message from <strong>%1</strong>",
|
||||
"upvoted_your_post_in": "<strong>%1</strong> has upvoted your post in <strong>%2</strong>.",
|
||||
"moved_your_post": "<strong>%1<strong> has moved your post.",
|
||||
"moved_your_topic": "<strong>%1<strong> has moved your topic.",
|
||||
"favourited_your_post_in": "<strong>%1</strong> has favourited your post in <strong>%2</strong>.",
|
||||
"user_flagged_post_in": "<strong>%1</strong> flagged a post in <strong>%2</strong>",
|
||||
"user_posted_to": "<strong>%1</strong> has posted a reply to: <strong>%2</strong>",
|
||||
"user_mentioned_you_in": "<strong>%1</strong> mentioned you in <strong>%2</strong>",
|
||||
"user_started_following_you": "<strong>%1</strong> started following you.",
|
||||
"email-confirmed": "Email Confirmed",
|
||||
"email-confirmed-message": "Thank you for validating your email. Your account is now fully activated.",
|
||||
"email-confirm-error": "An error occurred...",
|
||||
"email-confirm-error-message": "There was a problem validating your email address. Perhaps the code was invalid or has expired.",
|
||||
"email-confirm-sent": "Confirmation email sent."
|
||||
"outgoing_link_message": "أنت الأن ترحل",
|
||||
"continue_to": "أكمل إلى",
|
||||
"return_to": "إرجع إلى"
|
||||
}
|
||||
@@ -5,12 +5,10 @@
|
||||
"recent": "Recent Topics",
|
||||
"users": "Registered Users",
|
||||
"notifications": "Notifications",
|
||||
"tags": "Topics tagged under \"%1\"",
|
||||
"user.edit": "Editing \"%1\"",
|
||||
"user.following": "People %1 Follows",
|
||||
"user.followers": "People who Follow %1",
|
||||
"user.posts": "Posts made by %1",
|
||||
"user.topics": "Topics created by %1",
|
||||
"user.favourites": "%1's Favourite Posts",
|
||||
"user.settings": "User Settings"
|
||||
}
|
||||
@@ -3,7 +3,5 @@
|
||||
"day": "يوم",
|
||||
"week": "أسبوع",
|
||||
"month": "شهر",
|
||||
"year": "Year",
|
||||
"alltime": "All Time",
|
||||
"no_recent_topics": "There are no recent topics."
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{
|
||||
"results_matching": "%1 result(s) matching \"%2\", (%3 seconds)",
|
||||
"no-matches": "No posts found"
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"success": "Success",
|
||||
"topic-post": "You have successfully posted.",
|
||||
"authentication-successful": "Authentication Successful",
|
||||
"settings-saved": "Settings saved!"
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"no_tag_topics": "There are no topics with this tag.",
|
||||
"tags": "Tags",
|
||||
"enter_tags_here": "Enter tags here. Press enter after each tag.",
|
||||
"no_tags": "There are no tags yet."
|
||||
}
|
||||
@@ -1,20 +1,18 @@
|
||||
{
|
||||
"topic": "موضوع",
|
||||
"topics": "مواضيع",
|
||||
"topic_id": "Topic ID",
|
||||
"topic_id_placeholder": "Enter topic ID",
|
||||
"no_topics_found": "لا توجد مواضيع !",
|
||||
"no_posts_found": "No posts found!",
|
||||
"post_is_deleted": "This post is deleted!",
|
||||
"profile": "ملف",
|
||||
"posted_by": "Posted by %1",
|
||||
"posted_by_guest": "Posted by Guest",
|
||||
"posted_by": "Posted by",
|
||||
"chat": "دردشة",
|
||||
"notify_me": "تنبه من ردود جديدة في هذا الموضوع",
|
||||
"quote": "اقتبس",
|
||||
"reply": "رد",
|
||||
"edit": "صحح",
|
||||
"delete": "حذف",
|
||||
"purge": "Purge",
|
||||
"restore": "Restore",
|
||||
"move": "انقل",
|
||||
"fork": "فرع",
|
||||
@@ -23,13 +21,14 @@
|
||||
"share": "شارك",
|
||||
"tools": "أدوات",
|
||||
"flag": "Flag",
|
||||
"locked": "Locked",
|
||||
"bookmark_instructions": "Click here to return to your last position or close to discard.",
|
||||
"flag_title": "Flag this post for moderation",
|
||||
"flag_confirm": "Are you sure you want to flag this post?",
|
||||
"flag_success": "This post has been flagged for moderation.",
|
||||
"deleted_message": "This thread has been deleted. Only users with thread management privileges can see it.",
|
||||
"following_topic.title": "Following Topic",
|
||||
"following_topic.message": "You will now be receiving notifications when somebody posts to this topic.",
|
||||
"not_following_topic.title": "Not Following Topic",
|
||||
"not_following_topic.message": "You will no longer receive notifications from this topic.",
|
||||
"login_to_subscribe": "Please register or log in in order to subscribe to this topic.",
|
||||
"markAsUnreadForAll.success": "Topic marked as unread for all.",
|
||||
@@ -43,39 +42,39 @@
|
||||
"thread_tools.lock": "قفل الموضوع",
|
||||
"thread_tools.unlock": "Unlock Topic",
|
||||
"thread_tools.move": "نقل الموضوع",
|
||||
"thread_tools.move_all": "Move All",
|
||||
"thread_tools.fork": "تفرع الموضوع",
|
||||
"thread_tools.delete": "حذف الموضوع",
|
||||
"thread_tools.delete_confirm": "Are you sure you want to delete this thread?",
|
||||
"thread_tools.restore": "Restore Topic",
|
||||
"thread_tools.restore_confirm": "Are you sure you want to restore this thread?",
|
||||
"thread_tools.purge": "Purge Topic",
|
||||
"thread_tools.purge_confirm": "Are you sure you want to purge this thread?",
|
||||
"topic_move_success": "This topic has been successfully moved to %1",
|
||||
"post_delete_confirm": "Are you sure you want to delete this post?",
|
||||
"post_restore_confirm": "Are you sure you want to restore this post?",
|
||||
"post_purge_confirm": "Are you sure you want to purge this post?",
|
||||
"load_categories": "تحميل الفئات",
|
||||
"disabled_categories_note": "الفئات المجلدة رمادية",
|
||||
"confirm_move": "انقل",
|
||||
"confirm_fork": "فرع",
|
||||
"favourite": "المفضل",
|
||||
"favourites": "المفضلة",
|
||||
"favourites.not_logged_in.title": "ليس موجود حالياً",
|
||||
"favourites.not_logged_in.message": "الرجاء تسجيل الدخول لتفضل هذا الرد",
|
||||
"favourites.has_no_favourites": "ليس لديك أي ردود مفضلة. فضل بعد الردود لرؤيتهم هنا",
|
||||
"vote.not_logged_in.title": "Not Logged In",
|
||||
"vote.not_logged_in.message": "Please log in in order to vote",
|
||||
"vote.cant_vote_self.title": "Invalid Vote",
|
||||
"vote.cant_vote_self.message": "You cannot vote for your own post",
|
||||
"loading_more_posts": "تحميل المزيد من المشاركات",
|
||||
"move_topic": "نقل الموضوع",
|
||||
"move_topics": "Move Topics",
|
||||
"move_post": "نقل الرد",
|
||||
"post_moved": "Post moved!",
|
||||
"fork_topic": "فرع الموضوع",
|
||||
"topic_will_be_moved_to": "هذا الموضوع سوف ينقل إلى فئة",
|
||||
"fork_topic_instruction": "إضغط على الردود لتفريعهم",
|
||||
"fork_no_pids": "لم تختار أي رد",
|
||||
"fork_success": "Succesfully forked topic! Click here to go to the forked topic.",
|
||||
"fork_success": "تفريع الموضوع بنجاح!",
|
||||
"reputation": "سمعة",
|
||||
"posts": "ردود",
|
||||
"composer.title_placeholder": "Enter your topic title here...",
|
||||
"composer.write": "Write",
|
||||
"composer.preview": "Preview",
|
||||
"composer.help": "Help",
|
||||
"composer.discard": "Discard",
|
||||
"composer.submit": "Submit",
|
||||
"composer.replying_to": "Replying to %1",
|
||||
"composer.replying_to": "Replying to",
|
||||
"composer.new_topic": "New Topic",
|
||||
"composer.uploading": "uploading...",
|
||||
"composer.thumb_url_label": "Paste a topic thumbnail URL",
|
||||
@@ -84,12 +83,5 @@
|
||||
"composer.thumb_file_label": "Or upload a file",
|
||||
"composer.thumb_remove": "Clear fields",
|
||||
"composer.drag_and_drop_images": "Drag and Drop Images Here",
|
||||
"more_users_and_guests": "%1 more user(s) and %2 guest(s)",
|
||||
"more_users": "%1 more user(s)",
|
||||
"more_guests": "%1 more guest(s)",
|
||||
"users_and_others": "%1 and %2 others",
|
||||
"sort_by": "Sort by",
|
||||
"oldest_to_newest": "Oldest to Newest",
|
||||
"newest_to_oldest": "Newest to Oldest",
|
||||
"most_votes": "Most votes"
|
||||
"composer.upload_instructions": "Upload images by dragging & dropping them."
|
||||
}
|
||||
@@ -1,9 +1,6 @@
|
||||
{
|
||||
"title": "Unread",
|
||||
"no_unread_topics": "ليس هناك أي موضوع غير مقروء",
|
||||
"load_more": "حمل المزيد",
|
||||
"mark_as_read": "Mark as Read",
|
||||
"selected": "Selected",
|
||||
"all": "All",
|
||||
"topics_marked_as_read.success": "Topics marked as read!"
|
||||
"mark_all_read": "إجعل كل المواضيع مقرؤة",
|
||||
"load_more": "حمل المزيد"
|
||||
}
|
||||
@@ -3,11 +3,9 @@
|
||||
"offline": "ليس موجود حالياً",
|
||||
"username": "إسم المستخدم",
|
||||
"email": "البريد الإلكتروني",
|
||||
"confirm_email": "Confirm Email",
|
||||
"delete_account": "Delete Account",
|
||||
"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 username to confirm that you wish to destroy this account.",
|
||||
"fullname": "الاسم الكامل",
|
||||
"website": "الموقع الإلكتروني",
|
||||
"user:website_placeholder": "http://...",
|
||||
"location": "موقع",
|
||||
"age": "عمر",
|
||||
"joined": "تاريخ التسجيل",
|
||||
@@ -15,16 +13,17 @@
|
||||
"profile": "Profile",
|
||||
"profile_views": "مشاهد الملف",
|
||||
"reputation": "سمعة",
|
||||
"posts": "ردود",
|
||||
"favourites": "Favourites",
|
||||
"followers": "أتباع",
|
||||
"following": "يتبع",
|
||||
"signature": "توقيع",
|
||||
"gravatar": "Gravatar",
|
||||
"birthday": "عيد ميلاد",
|
||||
"birthday_placeholder": "mm/dd/yyyy",
|
||||
"chat": "Chat",
|
||||
"follow": "Follow",
|
||||
"unfollow": "Unfollow",
|
||||
"profile_update_success": "Profile has been updated successfully!",
|
||||
"change_picture": "تغيير الصورة",
|
||||
"edit": "صحح",
|
||||
"uploaded_picture": "صورة تم تحميلها",
|
||||
@@ -35,36 +34,23 @@
|
||||
"change_password_error_wrong_current": "Your current password is not correct!",
|
||||
"change_password_error_length": "Password too short!",
|
||||
"change_password_error_match": "Passwords must match!",
|
||||
"change_password_error_privileges": "You do not have the rights to change this password.",
|
||||
"change_password_error_privileges": "You are not have the rights to change this password.",
|
||||
"change_password_success": "Your password is updated!",
|
||||
"confirm_password": "تأكيد كلمة السر",
|
||||
"password": "كلمة السر",
|
||||
"username_taken_workaround": "The username you requested was already taken, so we have altered it slightly. You are now known as <strong>%1</strong>",
|
||||
"upload_picture": "تحميل الصورة",
|
||||
"upload_a_picture": "تحميل صورة",
|
||||
"image_spec": "You may only upload PNG, JPG, or GIF files",
|
||||
"max": "max.",
|
||||
"settings": "Settings",
|
||||
"show_email": "أظهر بريدي الإلكتروني",
|
||||
"digest_label": "Subscribe to Digest",
|
||||
"digest_description": "Subscribe to email updates for this forum (new notifications and topics) according to a set schedule",
|
||||
"digest_off": "Off",
|
||||
"digest_daily": "Daily",
|
||||
"digest_weekly": "Weekly",
|
||||
"digest_monthly": "Monthly",
|
||||
"send_chat_notifications": "Send an email if a new chat message arrives and I am not online",
|
||||
"has_no_follower": "هذا المستخدم ليس لديه أي أتباع :(",
|
||||
"follows_no_one": "هذا المستخدم لا يتبع أحد :(",
|
||||
"has_no_posts": "This user didn't post anything yet.",
|
||||
"has_no_topics": "This user didn't post any topics yet.",
|
||||
"email_hidden": "البريد الإلكتروني مخفي",
|
||||
"hidden": "مخفي",
|
||||
"paginate_description": "Paginate topics and posts instead of using infinite scroll.",
|
||||
"topics_per_page": "Topics per Page",
|
||||
"posts_per_page": "Posts per Page",
|
||||
"notification_sounds": "Play a sound when you receive a notification.",
|
||||
"browsing": "Browsing Settings",
|
||||
"open_links_in_new_tab": "Open outgoing links in new tab?",
|
||||
"follow_topics_you_reply_to": "Follow topics that you reply to.",
|
||||
"follow_topics_you_create": "Follow topics you create."
|
||||
"notification_sounds": "Play a sound when you receive a notification."
|
||||
}
|
||||
@@ -2,9 +2,8 @@
|
||||
"latest_users": "أحدث المستخدمين",
|
||||
"top_posters": "أكثر المشتركين",
|
||||
"most_reputation": "أعلى سمعة",
|
||||
"online": "موجودين حالياً",
|
||||
"search": "بحث",
|
||||
"enter_username": "أدخل اسم مستخدم للبحث",
|
||||
"load_more": "حمل المزيد",
|
||||
"user-not-found": "User not found!",
|
||||
"users-found-search-took": "%1 user(s) found! Search took %2 ms."
|
||||
"load_more": "حمل المزيد"
|
||||
}
|
||||
@@ -1,8 +1,12 @@
|
||||
{
|
||||
"new_topic_button": "Nové téma",
|
||||
"no_topics": "<strong>V této kategorii zatím nejsou žádné příspěvky.</strong><br />Můžeš být první!",
|
||||
"posts": "příspěvky",
|
||||
"views": "zobrazení",
|
||||
"posted": "odesláno",
|
||||
"browsing": "prohlíží",
|
||||
"no_replies": "Nikdo ještě neodpověděl",
|
||||
"share_this_category": "Share this category",
|
||||
"ignore": "Ignore"
|
||||
"replied": "přispěl",
|
||||
"last_edited_by": "naposledy upravil",
|
||||
"share_this_category": "Share this category"
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
{
|
||||
"password-reset-requested": "Password Reset Requested - %1!",
|
||||
"welcome-to": "Welcome to %1",
|
||||
"greeting_no_name": "Hello",
|
||||
"greeting_with_name": "Hello %1",
|
||||
"welcome.text1": "Thank you for registering with %1!",
|
||||
"welcome.text2": "To fully activate your account, we need to verify that you own the email address you registered with.",
|
||||
"welcome.cta": "Click here to confirm your email address",
|
||||
"reset.text1": "We received a request to reset your password, possibly because you have forgotten it. If this is not the case, please ignore this email.",
|
||||
"reset.text2": "To continue with the password reset, please click on the following link:",
|
||||
"reset.cta": "Click here to reset your password",
|
||||
"digest.notifications": "You have some unread notifications from %1:",
|
||||
"digest.latest_topics": "Latest topics from %1",
|
||||
"digest.cta": "Click here to visit %1",
|
||||
"digest.unsub.info": "This digest was sent to you due to your subscription settings.",
|
||||
"digest.daily.no_topics": "There have been no active topics in the past day",
|
||||
"notif.chat.subject": "New chat message received from %1",
|
||||
"notif.chat.cta": "Click here to continue the conversation",
|
||||
"notif.chat.unsub.info": "This chat notification was sent to you due to your subscription settings.",
|
||||
"test.text1": "This is a test email to verify that the emailer is set up correctly for your NodeBB.",
|
||||
"unsub.cta": "Click here to alter those settings",
|
||||
"closing": "Thanks!"
|
||||
}
|
||||
@@ -1,63 +0,0 @@
|
||||
{
|
||||
"invalid-data": "Invalid Data",
|
||||
"not-logged-in": "You don't seem to be logged in.",
|
||||
"account-locked": "Your account has been locked temporarily",
|
||||
"search-requires-login": "Searching requires an account! Please login or register!",
|
||||
"invalid-cid": "Invalid Category ID",
|
||||
"invalid-tid": "Invalid Topic ID",
|
||||
"invalid-pid": "Invalid Post ID",
|
||||
"invalid-uid": "Invalid User ID",
|
||||
"invalid-username": "Invalid Username",
|
||||
"invalid-email": "Invalid Email",
|
||||
"invalid-title": "Invalid title!",
|
||||
"invalid-user-data": "Invalid User Data",
|
||||
"invalid-password": "Invalid Password",
|
||||
"invalid-username-or-password": "Please specify both a username and password",
|
||||
"invalid-pagination-value": "Invalid pagination value",
|
||||
"username-taken": "Username taken",
|
||||
"email-taken": "Email taken",
|
||||
"email-not-confirmed": "Your email is not confirmed, please click here to confirm your email.",
|
||||
"username-too-short": "Username too short",
|
||||
"username-too-long": "Username too long",
|
||||
"user-banned": "User banned",
|
||||
"user-too-new": "You need to wait %1 seconds before making your first post!",
|
||||
"no-category": "Category doesn't exist",
|
||||
"no-topic": "Topic doesn't exist",
|
||||
"no-post": "Post doesn't exist",
|
||||
"no-group": "Group doesn't exist",
|
||||
"no-user": "User doesn't exist",
|
||||
"no-teaser": "Teaser doesn't exist",
|
||||
"no-privileges": "You don't have enough privileges for this action.",
|
||||
"no-emailers-configured": "No email plugins were loaded, so a test email could not be sent",
|
||||
"category-disabled": "Category disabled",
|
||||
"topic-locked": "Topic Locked",
|
||||
"still-uploading": "Please wait for uploads to complete.",
|
||||
"content-too-short": "Please enter a longer post. At least %1 characters.",
|
||||
"title-too-short": "Please enter a longer title. At least %1 characters.",
|
||||
"title-too-long": "Please enter a shorter title. Titles can't be longer than %1 characters.",
|
||||
"too-many-posts": "You can only post every %1 seconds.",
|
||||
"file-too-big": "Maximum allowed file size is %1 kbs",
|
||||
"cant-vote-self-post": "You cannot vote for your own post",
|
||||
"already-favourited": "You already favourited this post",
|
||||
"already-unfavourited": "You already unfavourited this post",
|
||||
"cant-ban-other-admins": "You can't ban other admins!",
|
||||
"invalid-image-type": "Invalid image type",
|
||||
"group-name-too-short": "Group name too short",
|
||||
"group-already-exists": "Group already exists",
|
||||
"group-name-change-not-allowed": "Group name change not allowed",
|
||||
"post-already-deleted": "Post already deleted",
|
||||
"post-already-restored": "Post already restored",
|
||||
"topic-already-deleted": "Topic already deleted",
|
||||
"topic-already-restored": "Topic already restored",
|
||||
"topic-thumbnails-are-disabled": "Topic thumbnails are disabled.",
|
||||
"invalid-file": "Invalid File",
|
||||
"uploads-are-disabled": "Uploads are disabled",
|
||||
"upload-error": "Upload Error : %1",
|
||||
"signature-too-long": "Signature can't be longer than %1 characters!",
|
||||
"cant-chat-with-yourself": "You can't chat with yourself!",
|
||||
"reputation-system-disabled": "Reputation system is disabled.",
|
||||
"downvoting-disabled": "Downvoting is disabled",
|
||||
"not-enough-reputation-to-downvote": "You do not have enough reputation to downvote this post",
|
||||
"not-enough-reputation-to-flag": "Yo do not have enough reputation to flag this post",
|
||||
"reload-failed": "NodeBB encountered a problem while reloading: \"%1\". NodeBB will continue to serve the existing client-side assets, although you should undo what you did just prior to reloading."
|
||||
}
|
||||
7
public/language/cs/footer.json
Normal file
7
public/language/cs/footer.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"stats.online": "Online",
|
||||
"stats.users": "Uživatelé",
|
||||
"stats.topics": "Témata",
|
||||
"stats.posts": "Příspěvky",
|
||||
"success": "úspěch"
|
||||
}
|
||||
@@ -13,17 +13,14 @@
|
||||
"please_log_in": "Please Log In",
|
||||
"logout": "Odhlásit se",
|
||||
"posting_restriction_info": "Posting is currently restricted to registered members only, click here to log in.",
|
||||
"welcome_back": "Welcome Back",
|
||||
"welcome_back": "Welcome Back ",
|
||||
"you_have_successfully_logged_in": "You have successfully logged in",
|
||||
"save_changes": "Uložit změny",
|
||||
"close": "Zrušit",
|
||||
"pagination": "Pagination",
|
||||
"pagination.out_of": "%1 out of %2",
|
||||
"pagination.enter_index": "Enter index",
|
||||
"header.admin": "Administrace",
|
||||
"header.recent": "Aktuality",
|
||||
"header.unread": "Nepřečtené",
|
||||
"header.tags": "Tags",
|
||||
"header.popular": "Populární",
|
||||
"header.users": "Uživatelé",
|
||||
"header.chats": "Chats",
|
||||
@@ -38,38 +35,21 @@
|
||||
"alert.success": "Success",
|
||||
"alert.error": "Error",
|
||||
"alert.banned": "Banned",
|
||||
"alert.banned.message": "You have just been banned, you will now be logged out.",
|
||||
"alert.banned.message": "You are banned you will be logged out!",
|
||||
"alert.unfollow": "You are no longer following %1!",
|
||||
"alert.follow": "You are now following %1!",
|
||||
"online": "Online",
|
||||
"users": "Users",
|
||||
"topics": "Topics",
|
||||
"posts": "Příspěvky",
|
||||
"views": "Zobrazení",
|
||||
"reputation": "Reputation",
|
||||
"read_more": "read more",
|
||||
"posted_ago_by_guest": "posted %1 by Guest",
|
||||
"posted_ago_by": "posted %1 by %2",
|
||||
"posted_ago": "posted %1",
|
||||
"posted_in_ago_by_guest": "posted in %1 %2 by Guest",
|
||||
"posted_in_ago_by": "posted in %1 %2 by %3",
|
||||
"posted_in_ago": "posted in %1 %2",
|
||||
"replied_ago": "replied %1",
|
||||
"user_posted_ago": "%1 posted %2",
|
||||
"guest_posted_ago": "Guest posted %1",
|
||||
"last_edited_by_ago": "last edited by %1 %2",
|
||||
"posted": "odesláno",
|
||||
"in": "v",
|
||||
"norecentposts": "No Recent Posts",
|
||||
"norecenttopics": "No Recent Topics",
|
||||
"recentposts": "Nedávné příspěvky",
|
||||
"recentips": "Recently Logged In IPs",
|
||||
"online": "Online",
|
||||
"away": "Pryč",
|
||||
"dnd": "Nerušit",
|
||||
"invisible": "Neviditelný",
|
||||
"offline": "Offline",
|
||||
"email": "Email",
|
||||
"language": "Language",
|
||||
"guest": "Guest",
|
||||
"guests": "Guests",
|
||||
"updated.title": "Forum Updated",
|
||||
"updated.message": "This forum has just been updated to the latest version. Click here to refresh the page."
|
||||
"privacy": "Privacy"
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"view_group": "View Group",
|
||||
"details.title": "Group Details",
|
||||
"details.members": "Member List",
|
||||
"details.has_no_posts": "This group's members have not made any posts.",
|
||||
"details.latest_posts": "Latest Posts"
|
||||
}
|
||||
@@ -1,9 +1,10 @@
|
||||
{
|
||||
"login": "Přihlásit se",
|
||||
"username": "Username / Email",
|
||||
"password": "Heslo",
|
||||
"remember_me": "Zapamatovat si mě?",
|
||||
"forgot_password": "Zapomněli jste heslo?",
|
||||
"alternative_logins": "Další způsoby přihlášení",
|
||||
"failed_login_attempt": "Přihlášení se nezdařilo, zkuste to prosím znovu.",
|
||||
"login_successful": "Přihlášení proběhlo úspěšně!",
|
||||
"dont_have_account": "Don't have an account?"
|
||||
"login_successful": "Přihlášení proběhlo úspěšně!"
|
||||
}
|
||||
@@ -1,22 +1,6 @@
|
||||
{
|
||||
"chat.chatting_with": "Chat s <span id=\"chat-with-name\"></span>",
|
||||
"chat.placeholder": "Type chat message here, press enter to send",
|
||||
"chat.placeholder": "napište zprávu sem a zmáčkněte enter pro odeslání",
|
||||
"chat.send": "Odeslat",
|
||||
"chat.no_active": "Nemáte žádné aktivní konverzace.",
|
||||
"chat.user_typing": "%1 is typing ...",
|
||||
"chat.user_has_messaged_you": "%1 has messaged you.",
|
||||
"chat.see_all": "See all Chats",
|
||||
"chat.no-messages": "Please select a recipient to view chat message history",
|
||||
"chat.recent-chats": "Recent Chats",
|
||||
"chat.contacts": "Contacts",
|
||||
"chat.message-history": "Message History",
|
||||
"chat.pop-out": "Pop out chat",
|
||||
"chat.maximize": "Maximize",
|
||||
"chat.yesterday": "Yesterday",
|
||||
"chat.seven_days": "7 Days",
|
||||
"chat.thirty_days": "30 Days",
|
||||
"chat.three_months": "3 Months",
|
||||
"composer.user_said_in": "%1 said in %2:",
|
||||
"composer.user_said": "%1 said:",
|
||||
"composer.discard": "Are you sure you wish to discard this post?"
|
||||
"chat.no_active": "Nemáte žádné aktivní konverzace."
|
||||
}
|
||||
@@ -2,25 +2,9 @@
|
||||
"title": "Upozornění",
|
||||
"no_notifs": "You have no new notifications",
|
||||
"see_all": "See all Notifications",
|
||||
"back_to_home": "Back to %1",
|
||||
"back_to_home": "Zpět na úvodní stránku",
|
||||
"outgoing_link": "Odkaz mimo fórum",
|
||||
"outgoing_link_message": "You are now leaving %1.",
|
||||
"continue_to": "Continue to %1",
|
||||
"return_to": "Return to %1",
|
||||
"new_notification": "New Notification",
|
||||
"you_have_unread_notifications": "You have unread notifications.",
|
||||
"new_message_from": "New message from <strong>%1</strong>",
|
||||
"upvoted_your_post_in": "<strong>%1</strong> has upvoted your post in <strong>%2</strong>.",
|
||||
"moved_your_post": "<strong>%1<strong> has moved your post.",
|
||||
"moved_your_topic": "<strong>%1<strong> has moved your topic.",
|
||||
"favourited_your_post_in": "<strong>%1</strong> has favourited your post in <strong>%2</strong>.",
|
||||
"user_flagged_post_in": "<strong>%1</strong> flagged a post in <strong>%2</strong>",
|
||||
"user_posted_to": "<strong>%1</strong> has posted a reply to: <strong>%2</strong>",
|
||||
"user_mentioned_you_in": "<strong>%1</strong> mentioned you in <strong>%2</strong>",
|
||||
"user_started_following_you": "<strong>%1</strong> started following you.",
|
||||
"email-confirmed": "Email Confirmed",
|
||||
"email-confirmed-message": "Thank you for validating your email. Your account is now fully activated.",
|
||||
"email-confirm-error": "An error occurred...",
|
||||
"email-confirm-error-message": "There was a problem validating your email address. Perhaps the code was invalid or has expired.",
|
||||
"email-confirm-sent": "Confirmation email sent."
|
||||
"outgoing_link_message": "Nyní opouštíte fórum",
|
||||
"continue_to": "Přejít na",
|
||||
"return_to": "Vrátit se na "
|
||||
}
|
||||
@@ -5,12 +5,10 @@
|
||||
"recent": "Recent Topics",
|
||||
"users": "Registered Users",
|
||||
"notifications": "Notifications",
|
||||
"tags": "Topics tagged under \"%1\"",
|
||||
"user.edit": "Editing \"%1\"",
|
||||
"user.following": "People %1 Follows",
|
||||
"user.followers": "People who Follow %1",
|
||||
"user.posts": "Posts made by %1",
|
||||
"user.topics": "Topics created by %1",
|
||||
"user.favourites": "%1's Favourite Posts",
|
||||
"user.settings": "User Settings"
|
||||
}
|
||||
@@ -3,7 +3,5 @@
|
||||
"day": "Den",
|
||||
"week": "Týden",
|
||||
"month": "Měsíc",
|
||||
"year": "Year",
|
||||
"alltime": "All Time",
|
||||
"no_recent_topics": "There are no recent topics."
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{
|
||||
"results_matching": "%1 result(s) matching \"%2\", (%3 seconds)",
|
||||
"no-matches": "No posts found"
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"success": "Success",
|
||||
"topic-post": "You have successfully posted.",
|
||||
"authentication-successful": "Authentication Successful",
|
||||
"settings-saved": "Settings saved!"
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"no_tag_topics": "There are no topics with this tag.",
|
||||
"tags": "Tags",
|
||||
"enter_tags_here": "Enter tags here. Press enter after each tag.",
|
||||
"no_tags": "There are no tags yet."
|
||||
}
|
||||
@@ -1,20 +1,18 @@
|
||||
{
|
||||
"topic": "Téma",
|
||||
"topics": "Témata",
|
||||
"topic_id": "Topic ID",
|
||||
"topic_id_placeholder": "Enter topic ID",
|
||||
"no_topics_found": "Nebyla nalezena žádná témata!",
|
||||
"no_posts_found": "No posts found!",
|
||||
"post_is_deleted": "This post is deleted!",
|
||||
"profile": "Profil",
|
||||
"posted_by": "Posted by %1",
|
||||
"posted_by_guest": "Posted by Guest",
|
||||
"posted_by": "Odeslal",
|
||||
"chat": "Chat",
|
||||
"notify_me": "Sledovat toto téma",
|
||||
"quote": "Citovat",
|
||||
"reply": "Odpovědět",
|
||||
"edit": "Upravit",
|
||||
"delete": "Smazat",
|
||||
"purge": "Purge",
|
||||
"restore": "Restore",
|
||||
"move": "Přesunout",
|
||||
"fork": "Rozdělit",
|
||||
@@ -23,13 +21,14 @@
|
||||
"share": "Sdílet",
|
||||
"tools": "Nástroje",
|
||||
"flag": "Flag",
|
||||
"locked": "Locked",
|
||||
"bookmark_instructions": "Click here to return to your last position or close to discard.",
|
||||
"flag_title": "Flag this post for moderation",
|
||||
"flag_confirm": "Are you sure you want to flag this post?",
|
||||
"flag_success": "This post has been flagged for moderation.",
|
||||
"deleted_message": "This thread has been deleted. Only users with thread management privileges can see it.",
|
||||
"following_topic.title": "Following Topic",
|
||||
"following_topic.message": "You will now be receiving notifications when somebody posts to this topic.",
|
||||
"not_following_topic.title": "Not Following Topic",
|
||||
"not_following_topic.message": "You will no longer receive notifications from this topic.",
|
||||
"login_to_subscribe": "Please register or log in in order to subscribe to this topic.",
|
||||
"markAsUnreadForAll.success": "Topic marked as unread for all.",
|
||||
@@ -43,39 +42,39 @@
|
||||
"thread_tools.lock": "Lock Topic",
|
||||
"thread_tools.unlock": "Unlock Topic",
|
||||
"thread_tools.move": "Move Topic",
|
||||
"thread_tools.move_all": "Move All",
|
||||
"thread_tools.fork": "Fork Topic",
|
||||
"thread_tools.delete": "Delete Topic",
|
||||
"thread_tools.delete_confirm": "Are you sure you want to delete this thread?",
|
||||
"thread_tools.restore": "Restore Topic",
|
||||
"thread_tools.restore_confirm": "Are you sure you want to restore this thread?",
|
||||
"thread_tools.purge": "Purge Topic",
|
||||
"thread_tools.purge_confirm": "Are you sure you want to purge this thread?",
|
||||
"topic_move_success": "This topic has been successfully moved to %1",
|
||||
"post_delete_confirm": "Are you sure you want to delete this post?",
|
||||
"post_restore_confirm": "Are you sure you want to restore this post?",
|
||||
"post_purge_confirm": "Are you sure you want to purge this post?",
|
||||
"load_categories": "Načítání kategorií",
|
||||
"disabled_categories_note": "Vypnuté (disabled) kategorie jsou šedé.",
|
||||
"confirm_move": "Přesunout",
|
||||
"confirm_fork": "Rozdělit",
|
||||
"favourite": "Oblíbené",
|
||||
"favourites": "Oblíbené",
|
||||
"favourites.not_logged_in.title": "Přihlaste se!",
|
||||
"favourites.not_logged_in.message": "Pro oblíbení příspěvku se musíte přihlásit.",
|
||||
"favourites.has_no_favourites": "Nemáte žádné oblíbené příspěvky, přidejte některý příspěvek k oblíbeným a uvidíte ho zde!",
|
||||
"vote.not_logged_in.title": "Not Logged In",
|
||||
"vote.not_logged_in.message": "Please log in in order to vote",
|
||||
"vote.cant_vote_self.title": "Invalid Vote",
|
||||
"vote.cant_vote_self.message": "You cannot vote for your own post",
|
||||
"loading_more_posts": "Načítání více příspěvků",
|
||||
"move_topic": "Přesunout téma",
|
||||
"move_topics": "Move Topics",
|
||||
"move_post": "Přesunout příspěvek",
|
||||
"post_moved": "Post moved!",
|
||||
"fork_topic": "Rozdělit příspěvek",
|
||||
"topic_will_be_moved_to": "Toto téma bude přesunuto do kategorie",
|
||||
"fork_topic_instruction": "Vyber příspěvky, které chceš oddělit",
|
||||
"fork_no_pids": "Žádné příspěvky nebyly vybrány!",
|
||||
"fork_success": "Succesfully forked topic! Click here to go to the forked topic.",
|
||||
"fork_success": "Téma bylo úspěšně rozděleno!",
|
||||
"reputation": "Reputace",
|
||||
"posts": "Příspěvky",
|
||||
"composer.title_placeholder": "Enter your topic title here...",
|
||||
"composer.write": "Write",
|
||||
"composer.preview": "Preview",
|
||||
"composer.help": "Help",
|
||||
"composer.discard": "Discard",
|
||||
"composer.submit": "Submit",
|
||||
"composer.replying_to": "Replying to %1",
|
||||
"composer.replying_to": "Replying to",
|
||||
"composer.new_topic": "New Topic",
|
||||
"composer.uploading": "uploading...",
|
||||
"composer.thumb_url_label": "Paste a topic thumbnail URL",
|
||||
@@ -84,12 +83,5 @@
|
||||
"composer.thumb_file_label": "Or upload a file",
|
||||
"composer.thumb_remove": "Clear fields",
|
||||
"composer.drag_and_drop_images": "Drag and Drop Images Here",
|
||||
"more_users_and_guests": "%1 more user(s) and %2 guest(s)",
|
||||
"more_users": "%1 more user(s)",
|
||||
"more_guests": "%1 more guest(s)",
|
||||
"users_and_others": "%1 and %2 others",
|
||||
"sort_by": "Sort by",
|
||||
"oldest_to_newest": "Oldest to Newest",
|
||||
"newest_to_oldest": "Newest to Oldest",
|
||||
"most_votes": "Most votes"
|
||||
"composer.upload_instructions": "Upload images by dragging & dropping them."
|
||||
}
|
||||
@@ -1,9 +1,6 @@
|
||||
{
|
||||
"title": "Unread",
|
||||
"no_unread_topics": "Nejsou zde žádné nepřečtené témata.",
|
||||
"load_more": "Načíst další",
|
||||
"mark_as_read": "Mark as Read",
|
||||
"selected": "Selected",
|
||||
"all": "All",
|
||||
"topics_marked_as_read.success": "Topics marked as read!"
|
||||
"mark_all_read": "Označit vše jako přečtené",
|
||||
"load_more": "Načíst další"
|
||||
}
|
||||
@@ -3,11 +3,9 @@
|
||||
"offline": "Offline",
|
||||
"username": "Uživatelské jméno",
|
||||
"email": "Email",
|
||||
"confirm_email": "Confirm Email",
|
||||
"delete_account": "Delete Account",
|
||||
"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 username to confirm that you wish to destroy this account.",
|
||||
"fullname": "Jméno a příjmení",
|
||||
"website": "Webové stránky",
|
||||
"user:website_placeholder": "http://...",
|
||||
"location": "Poloha",
|
||||
"age": "Věk",
|
||||
"joined": "Registrován",
|
||||
@@ -15,16 +13,17 @@
|
||||
"profile": "Profile",
|
||||
"profile_views": "Zobrazení profilu",
|
||||
"reputation": "Reputace",
|
||||
"posts": "Příspěvky",
|
||||
"favourites": "Oblíbené",
|
||||
"followers": "Sledují ho",
|
||||
"following": "Sleduje",
|
||||
"signature": "Podpis",
|
||||
"gravatar": "Gravatar",
|
||||
"birthday": "Datum narození",
|
||||
"birthday_placeholder": "mm/dd/yyyy",
|
||||
"chat": "Chat",
|
||||
"follow": "Follow",
|
||||
"unfollow": "Unfollow",
|
||||
"profile_update_success": "Profile has been updated successfully!",
|
||||
"change_picture": "Změnit obrázek",
|
||||
"edit": "Upravit",
|
||||
"uploaded_picture": "Nahraný obrázek",
|
||||
@@ -35,36 +34,23 @@
|
||||
"change_password_error_wrong_current": "Your current password is not correct!",
|
||||
"change_password_error_length": "Password too short!",
|
||||
"change_password_error_match": "Passwords must match!",
|
||||
"change_password_error_privileges": "You do not have the rights to change this password.",
|
||||
"change_password_error_privileges": "You are not have the rights to change this password.",
|
||||
"change_password_success": "Your password is updated!",
|
||||
"confirm_password": "Potvrzení hesla",
|
||||
"password": "Heslo",
|
||||
"username_taken_workaround": "The username you requested was already taken, so we have altered it slightly. You are now known as <strong>%1</strong>",
|
||||
"upload_picture": "Nahrát obrázek",
|
||||
"upload_a_picture": "Nahrát obrázek",
|
||||
"image_spec": "You may only upload PNG, JPG, or GIF files",
|
||||
"max": "max.",
|
||||
"settings": "Nastavení",
|
||||
"show_email": "Zobrazovat můj email v profilu",
|
||||
"digest_label": "Subscribe to Digest",
|
||||
"digest_description": "Subscribe to email updates for this forum (new notifications and topics) according to a set schedule",
|
||||
"digest_off": "Off",
|
||||
"digest_daily": "Daily",
|
||||
"digest_weekly": "Weekly",
|
||||
"digest_monthly": "Monthly",
|
||||
"send_chat_notifications": "Send an email if a new chat message arrives and I am not online",
|
||||
"has_no_follower": "Tohoto uživatele nikdo nesleduje :(",
|
||||
"follows_no_one": "Tento uživatel nikoho nesleduje :(",
|
||||
"has_no_posts": "This user didn't post anything yet.",
|
||||
"has_no_topics": "This user didn't post any topics yet.",
|
||||
"email_hidden": "Skrytý email",
|
||||
"hidden": "skrytý",
|
||||
"paginate_description": "Paginate topics and posts instead of using infinite scroll.",
|
||||
"topics_per_page": "Topics per Page",
|
||||
"posts_per_page": "Posts per Page",
|
||||
"notification_sounds": "Play a sound when you receive a notification.",
|
||||
"browsing": "Browsing Settings",
|
||||
"open_links_in_new_tab": "Open outgoing links in new tab?",
|
||||
"follow_topics_you_reply_to": "Follow topics that you reply to.",
|
||||
"follow_topics_you_create": "Follow topics you create."
|
||||
"notification_sounds": "Play a sound when you receive a notification."
|
||||
}
|
||||
@@ -2,9 +2,8 @@
|
||||
"latest_users": "Nejnovější uživatelé",
|
||||
"top_posters": "Nejaktivnější",
|
||||
"most_reputation": "Nejváženější",
|
||||
"online": "Online",
|
||||
"search": "Vyhledávat",
|
||||
"enter_username": "Zadej uživatelské jméno k hledání",
|
||||
"load_more": "Načíst další",
|
||||
"user-not-found": "User not found!",
|
||||
"users-found-search-took": "%1 user(s) found! Search took %2 ms."
|
||||
"load_more": "Načíst další"
|
||||
}
|
||||
@@ -1,8 +1,12 @@
|
||||
{
|
||||
"new_topic_button": "Neues Thema",
|
||||
"no_topics": "<strong>Es gibt noch keine Themen in dieser Kategorie.</strong><br />Warum beginnst du nicht das erste?",
|
||||
"posts": "Beiträge",
|
||||
"views": "Aufrufe",
|
||||
"posted": "Geschrieben",
|
||||
"browsing": "Aktiv",
|
||||
"no_replies": "Niemand hat geantwortet",
|
||||
"share_this_category": "Teile diese Kategorie",
|
||||
"ignore": "Ignorieren"
|
||||
"replied": "geantwortet",
|
||||
"last_edited_by": "zuletzt editiert durch",
|
||||
"share_this_category": "Share this category"
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
{
|
||||
"password-reset-requested": "Zurücksetzung des Passworts beantragt - %1!",
|
||||
"welcome-to": "Willkommen zu %1",
|
||||
"greeting_no_name": "Hallo",
|
||||
"greeting_with_name": "Hallo %1",
|
||||
"welcome.text1": "Vielen Dank für die Registrierung mit %1!",
|
||||
"welcome.text2": "Um dein Konto vollständig zu aktivieren, müssen wir überprüfen, ob du Besitzer der E-Mail-Adresse bist, mit der du dich registriert hast.",
|
||||
"welcome.cta": "Klicke hier, um deine E-Mail-Adresse zu bestätigen.",
|
||||
"reset.text1": "Wir haben eine Anfrage auf Zurücksetzung deines Passworts erhalten, wahrscheinlich, weil du es vergessen hast. Falls dies nicht der Fall ist, ignoriere bitte diese E-Mail.",
|
||||
"reset.text2": "Klicke bitte auf den folgenden Link, um mit der Zurücksetzung deines Passworts fortzufahren:",
|
||||
"reset.cta": "Klicke hier, um dein Passwort zurückzusetzen",
|
||||
"digest.notifications": "Du hast einige ungelesene Benachrichtigungen vom %1:",
|
||||
"digest.latest_topics": "Aktuellste Themen vom %1",
|
||||
"digest.cta": "Klicke hier, um %1 zu besuchen",
|
||||
"digest.unsub.info": "Diese Zusammenfassung wurde dir aufgrund deiner Abonnement-Einstellungen gesendet.",
|
||||
"digest.daily.no_topics": "Es gab heute keine aktiven Themen",
|
||||
"notif.chat.subject": "Neue Chatnachricht von %1 erhalten",
|
||||
"notif.chat.cta": "Klicke hier, um die Unterhaltung fortzusetzen",
|
||||
"notif.chat.unsub.info": "Diese Chat-Benachrichtigung wurde dir aufgrund deiner Abonnement-Einstellungen gesendet.",
|
||||
"test.text1": "Dies ist eine Test-E-Mail, um zu überprüfen, ob der E-Mailer deines NodeBB korrekt eingestellt wurde.",
|
||||
"unsub.cta": "Klicke hier, um diese Einstellungen zu ändern.",
|
||||
"closing": "Danke!"
|
||||
}
|
||||
@@ -1,63 +0,0 @@
|
||||
{
|
||||
"invalid-data": "Daten ungültig",
|
||||
"not-logged-in": "Du bist nicht angemeldet.",
|
||||
"account-locked": "Dein Account wurde vorübergehend gesperrt.",
|
||||
"search-requires-login": "Die Suche erfordert ein Konto! Bitte log dich ein oder registrieren dich!",
|
||||
"invalid-cid": "Ungültige Kategorie-ID",
|
||||
"invalid-tid": "Ungültige Themen-ID",
|
||||
"invalid-pid": "Ungültige Beitrags-ID",
|
||||
"invalid-uid": "Ungültige Benutzer-ID",
|
||||
"invalid-username": "Ungültiger Benutzername",
|
||||
"invalid-email": "Ungültige E-Mail-Adresse",
|
||||
"invalid-title": "Ungültiger Titel",
|
||||
"invalid-user-data": "Ungültige Benutzerdaten",
|
||||
"invalid-password": "Ungültiges Passwort",
|
||||
"invalid-username-or-password": "Bitte gebe einen Benutzernamen und ein Passwort an",
|
||||
"invalid-pagination-value": "Die Nummerierung ist ungültig",
|
||||
"username-taken": "Der Benutzername ist bereits vergeben",
|
||||
"email-taken": "Die E-Mail-Adresse ist bereits vergeben",
|
||||
"email-not-confirmed": "Deine E-Mail wurde noch nicht bestätigt. Bitte klicke hier, um deine E-Mail zu bestätigen.",
|
||||
"username-too-short": "Benutzername ist zu kurz",
|
||||
"username-too-long": "Der Benutzername ist zu lang",
|
||||
"user-banned": "Der Benutzer ist gesperrt",
|
||||
"user-too-new": "Du musst %1 Sekunden warten, bevor du deinen ersten Beitrag verfassen kannst!",
|
||||
"no-category": "Die Kategorie existiert nicht",
|
||||
"no-topic": "Das Thema existiert nicht",
|
||||
"no-post": "Der Beitrag existiert nicht",
|
||||
"no-group": "Die Gruppe existiert nicht",
|
||||
"no-user": "Der Benutzer existiert nicht",
|
||||
"no-teaser": "Kurztext existiert nicht",
|
||||
"no-privileges": "Du verfügst nicht über ausreichende Berechtigungen, um die Aktion durchzuführen.",
|
||||
"no-emailers-configured": "Es wurde keine E-Mail-Plugins geladen, weshalb eine Test-E-Mail nicht gesendet werden konnte.",
|
||||
"category-disabled": "Kategorie ist deaktiviert",
|
||||
"topic-locked": "Thema ist gesperrt",
|
||||
"still-uploading": "Bitte warte bis der Vorgang abgeschlossen ist.",
|
||||
"content-too-short": "Der Beitrag muss mindestens %1 Zeichen enthalten.",
|
||||
"title-too-short": "Der Titel muss mindestens %1 Zeichen enthalten.",
|
||||
"title-too-long": "Der Titel darf maximal %1 Zeichen enthalten.",
|
||||
"too-many-posts": "Du kannst maximal alle %1 Sekunden einen Beitrag erstellen.",
|
||||
"file-too-big": "Die maximale Dateigröße beträgt %1 kbs",
|
||||
"cant-vote-self-post": "Du kannst deinen eigenen Beitrag nicht bewerten.",
|
||||
"already-favourited": "Dieser Beitrag ist bereits in deinen Favoriten enthalten",
|
||||
"already-unfavourited": "Du hast diesen Beitrag bereits aus deinen Favoriten entfernt",
|
||||
"cant-ban-other-admins": "Du kannst andere Administratoren nicht sperren!",
|
||||
"invalid-image-type": "Ungültiger Bildtyp",
|
||||
"group-name-too-short": "Gruppenname zu kurz",
|
||||
"group-already-exists": "Gruppe existiert bereits",
|
||||
"group-name-change-not-allowed": "Du kannst den Namen der Gruppe nicht ändern",
|
||||
"post-already-deleted": "Beitrag wurde bereits gelöscht",
|
||||
"post-already-restored": "Der Beitrag wurde bereits wiederhergestellt",
|
||||
"topic-already-deleted": "Das Thema wurde bereits gelöscht",
|
||||
"topic-already-restored": "Das Thema wurde bereits wiederhergestellt",
|
||||
"topic-thumbnails-are-disabled": "Vorschaubilder für Themen sind deaktiviert",
|
||||
"invalid-file": "Datei ungültig",
|
||||
"uploads-are-disabled": "Uploads sind deaktiviert",
|
||||
"upload-error": "Upload-Fehler: %1",
|
||||
"signature-too-long": "Die Signatur darf maximal %1 Zeichen enthalten!",
|
||||
"cant-chat-with-yourself": "Du kannst nicht mit dir selber chatten!",
|
||||
"reputation-system-disabled": "Das Reputationssystem ist deaktiviert.",
|
||||
"downvoting-disabled": "Downvotes sind deaktiviert.",
|
||||
"not-enough-reputation-to-downvote": "Deine Reputation ist zu niedrig, um diesen Beitrag negativ zu bewerten.",
|
||||
"not-enough-reputation-to-flag": "Deine Reputation ist nicht gut genug, um diesen Beitrag zu melden.",
|
||||
"reload-failed": "Es ist ein Problem während des Reloads von NodeBB aufgetreten: \"%1\". NodeBB wird weiterhin clientseitige Assets bereitstellen, allerdings solltest du das, was du vor dem Reload gemacht hast, rückgängig machen."
|
||||
}
|
||||
7
public/language/de/footer.json
Normal file
7
public/language/de/footer.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"stats.online": "Online",
|
||||
"stats.users": "Benutzer",
|
||||
"stats.topics": "Themen",
|
||||
"stats.posts": "Beiträge",
|
||||
"success": "erfolg"
|
||||
}
|
||||
@@ -2,13 +2,13 @@
|
||||
"home": "Übersicht",
|
||||
"search": "Suche",
|
||||
"buttons.close": "Schließen",
|
||||
"403.title": "Zugriff verweigert",
|
||||
"403.title": "Zugriff Verweigert",
|
||||
"403.message": "Du bist nicht dazu berechtigt, diese Seite aufzurufen. <a href='/login'>Logge dich ein</a> und versuche es erneut.",
|
||||
"404.title": " Nicht Gefunden",
|
||||
"404.message": "Die angeforderte Seite wurde nicht gefunden. <a href='/''>Zurück zur Übersicht</a>.",
|
||||
"500.title": "Interner Fehler.",
|
||||
"500.message": "Ups! Scheint als wäre etwas schief gelaufen!",
|
||||
"register": "Registrieren",
|
||||
"404.message": "Die abgefragte Seite wurde nicht gefunden. <a href='/''>Zurück zur Übersicht</a>.",
|
||||
"500.title": "Internal error.",
|
||||
"500.message": "Ooops! Looks like something went wrong!",
|
||||
"register": "Registrierung",
|
||||
"login": "Login",
|
||||
"please_log_in": "Bitte einloggen",
|
||||
"logout": "Logout",
|
||||
@@ -18,19 +18,16 @@
|
||||
"save_changes": "Speichere Änderungen",
|
||||
"close": "Schließen",
|
||||
"pagination": "Seitennummerierung",
|
||||
"pagination.out_of": "%1 von %2",
|
||||
"pagination.enter_index": "Seitenzahl eingeben",
|
||||
"header.admin": "Admin",
|
||||
"header.recent": "Aktuell",
|
||||
"header.unread": "Ungelesen",
|
||||
"header.tags": "Tags",
|
||||
"header.popular": "Beliebt",
|
||||
"header.users": "Benutzer",
|
||||
"header.chats": "Chats",
|
||||
"header.notifications": "Benachrichtigungen",
|
||||
"header.search": "Suche",
|
||||
"header.profile": "Profil",
|
||||
"notifications.loading": "Benachrichtigungen werden geladen",
|
||||
"notifications.loading": "Benachrichtigungen laden",
|
||||
"chats.loading": "Nachrichten werden geladen",
|
||||
"motd.welcome": "Willkommen auf NodeBB, der Diskussionsplattform der Zukunft.",
|
||||
"previouspage": "Vorherige Seite",
|
||||
@@ -41,35 +38,18 @@
|
||||
"alert.banned.message": "Du bist gebannt und wirst nun ausgeloggt.",
|
||||
"alert.unfollow": "Du folgst %1 nicht länger!",
|
||||
"alert.follow": "Du folgst nun %1!",
|
||||
"online": "Online",
|
||||
"users": "Benutzer",
|
||||
"topics": "Themen",
|
||||
"posts": "Beiträge",
|
||||
"views": "Aufrufe",
|
||||
"reputation": "Reputation",
|
||||
"read_more": "weiterlesen",
|
||||
"posted_ago_by_guest": "%1 von einem Gast geschrieben",
|
||||
"posted_ago_by": "%1 von %2 geschrieben",
|
||||
"posted_ago": "%1 geschrieben",
|
||||
"posted_in_ago_by_guest": "verfasst in %1 %2 von einem Gast",
|
||||
"posted_in_ago_by": "Verfasst in %1 %2 von %3",
|
||||
"posted_in_ago": "Verfasst in %1 %2",
|
||||
"replied_ago": "antwortete %1",
|
||||
"user_posted_ago": "%1 schrieb %2",
|
||||
"guest_posted_ago": "Gast schrieb %1",
|
||||
"last_edited_by_ago": "zuletzt editiert von %1 %2",
|
||||
"posted": "geposted",
|
||||
"in": "in",
|
||||
"norecentposts": "Keine aktuellen Beiträge",
|
||||
"norecenttopics": "Keine aktuellen Themen",
|
||||
"recentposts": "Aktuelle Beiträge",
|
||||
"recentips": "Zuletzt eingeloggte IPs",
|
||||
"online": "Online",
|
||||
"away": "Abwesend",
|
||||
"dnd": "Nicht stören",
|
||||
"invisible": "Unsichtbar",
|
||||
"offline": "Offline",
|
||||
"email": "E-Mail",
|
||||
"language": "Sprache",
|
||||
"guest": "Gast",
|
||||
"guests": "Gäste",
|
||||
"updated.title": "Forum aktualisiert",
|
||||
"updated.message": "Dieses Forum wurde gerade auf die neueste Version aktualisiert. Klicke hier, um die Seite neuzuladen."
|
||||
"privacy": "Privatsphäre"
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"view_group": "Gruppe betrachten",
|
||||
"details.title": "Gruppendetails",
|
||||
"details.members": "Mitgliederliste",
|
||||
"details.has_no_posts": "Die Mitglieder dieser Gruppe haben keine Beiträge verfasst.",
|
||||
"details.latest_posts": "Aktuelle Beiträge"
|
||||
}
|
||||
@@ -1,9 +1,10 @@
|
||||
{
|
||||
"login": "Einloggen",
|
||||
"username": "Nutzername / E-Mail Adresse",
|
||||
"password": "Passwort",
|
||||
"remember_me": "Eingeloggt bleiben?",
|
||||
"forgot_password": "Passwort vergessen?",
|
||||
"alternative_logins": "Login Alternativen",
|
||||
"failed_login_attempt": " Anmeldeversuch fehlgeschlagen, versuche es erneut.",
|
||||
"login_successful": "Du hast dich erfolgreich eingeloggt!",
|
||||
"dont_have_account": "Sie haben noch kein Konto?"
|
||||
"login_successful": "Du hast dich erfolgreich eingeloggt!"
|
||||
}
|
||||
@@ -1,22 +1,6 @@
|
||||
{
|
||||
"chat.chatting_with": "Mit <span id='chat-with-name'></span> chatten",
|
||||
"chat.placeholder": "Schreibe hier etwas, und drücke Enter zum Absenden.",
|
||||
"chat.chatting_with": "Chatten mit <span id='chat-with-name'></span>",
|
||||
"chat.placeholder": "schreibe hier etwas, und drücke Enter zum absenden",
|
||||
"chat.send": "Senden",
|
||||
"chat.no_active": "Du hast keine aktiven Chats.",
|
||||
"chat.user_typing": "%1 tippt gerade ...",
|
||||
"chat.user_has_messaged_you": "%1 hat dir geschrieben.",
|
||||
"chat.see_all": "Alle Chats anzeigen",
|
||||
"chat.no-messages": "Bitte wähle einen Empfänger, um den jeweiligen Nachrichtenverlauf anzuzeigen.",
|
||||
"chat.recent-chats": "Aktuelle Chats",
|
||||
"chat.contacts": "Kontakte",
|
||||
"chat.message-history": "Nachrichtenverlauf",
|
||||
"chat.pop-out": "Chat als Pop-out anzeigen",
|
||||
"chat.maximize": "Maximieren",
|
||||
"chat.yesterday": "Gestern",
|
||||
"chat.seven_days": "7 Tage",
|
||||
"chat.thirty_days": "30 Tage",
|
||||
"chat.three_months": "3 Monate",
|
||||
"composer.user_said_in": "%1 sagte in %2:",
|
||||
"composer.user_said": "%1 sagte:",
|
||||
"composer.discard": "Bist du sicher, dass du diesen Post verwerfen möchtest?"
|
||||
"chat.no_active": "Du hast keine aktiven Chats."
|
||||
}
|
||||
@@ -2,25 +2,9 @@
|
||||
"title": "Benachrichtigungen",
|
||||
"no_notifs": "Du hast keine neuen Benachrichtigungen",
|
||||
"see_all": "Alle Benachrichtigungen ansehen",
|
||||
"back_to_home": "Zurück zu %1",
|
||||
"back_to_home": "Zurück zur Startseite",
|
||||
"outgoing_link": "Externer Link",
|
||||
"outgoing_link_message": "Du verlässt nun %1.",
|
||||
"continue_to": "Fortfahren zu %1",
|
||||
"return_to": "Kehre zurück zu %1",
|
||||
"new_notification": "Neue Benachrichtigung",
|
||||
"you_have_unread_notifications": "Du hast ungelesene Benachrichtigungen.",
|
||||
"new_message_from": "Neue Nachricht von <strong>%1</strong>",
|
||||
"upvoted_your_post_in": "<strong>%1</strong> hat deinen Beitrag in <strong>%2</strong> positiv bewertet.",
|
||||
"moved_your_post": "<strong>%1</strong> hat deinen Beitrag verschoben.",
|
||||
"moved_your_topic": "<strong>%1</strong> hat dein Thema verschoben.",
|
||||
"favourited_your_post_in": "<strong>%1</strong> hat deinen Beitrag in <strong>%2</strong> favorisiert.",
|
||||
"user_flagged_post_in": "<strong>%1</strong> hat einen Beitrag in </strong>%2</strong> gemeldet",
|
||||
"user_posted_to": "<strong>%1</strong> hat auf <strong>%2</strong> geantwortet.",
|
||||
"user_mentioned_you_in": "<strong>%1</strong> erwähnte dich in <strong>%2</strong>",
|
||||
"user_started_following_you": "<strong>%1</strong> folgt dir jetzt.",
|
||||
"email-confirmed": "E-Mail bestätigt",
|
||||
"email-confirmed-message": "Vielen Dank für Ihre E-Mail-Validierung. Ihr Konto ist nun vollständig aktiviert.",
|
||||
"email-confirm-error": "Es ist ein Fehler aufgetreten ...",
|
||||
"email-confirm-error-message": "Es gab ein Problem bei der Validierung Ihrer E-Mail-Adresse. Möglicherweise ist der Code ungültig oder abgelaufen.",
|
||||
"email-confirm-sent": "Bestätigungs-E-Mail gesendet."
|
||||
"outgoing_link_message": "Du verlässt nun",
|
||||
"continue_to": "Gehe weiter zu",
|
||||
"return_to": "Kehre zurück zu"
|
||||
}
|
||||
@@ -1,16 +1,14 @@
|
||||
{
|
||||
"home": "Home",
|
||||
"unread": "Ungelesene Themen",
|
||||
"unread": "Unread Topics",
|
||||
"popular": "Beliebte Themen",
|
||||
"recent": "Neueste Themen",
|
||||
"users": "Registrierte User",
|
||||
"notifications": "Benachrichtigungen",
|
||||
"tags": "Themen markiert unter \"%1\"",
|
||||
"user.edit": "Bearbeite \"%1\"",
|
||||
"user.following": "Nutzer, die %1 folgt",
|
||||
"user.followers": "Nutzer, die %1 folgen",
|
||||
"recent": "Recent Topics",
|
||||
"users": "Registered Users",
|
||||
"notifications": "Notifications",
|
||||
"user.edit": "Editing \"%1\"",
|
||||
"user.following": "People %1 Follows",
|
||||
"user.followers": "People who Follow %1",
|
||||
"user.posts": "Beiträge von %1",
|
||||
"user.topics": "Themen von %1",
|
||||
"user.favourites": "Von %1 favorisierte Beiträge",
|
||||
"user.settings": "Benutzer-Einstellungen"
|
||||
"user.favourites": "%1's favorisierte Beiträge",
|
||||
"user.settings": "User Settings"
|
||||
}
|
||||
@@ -3,7 +3,5 @@
|
||||
"day": "Tag",
|
||||
"week": "Woche",
|
||||
"month": "Monat",
|
||||
"year": "Jahr",
|
||||
"alltime": "Gesamter Zeitraum",
|
||||
"no_recent_topics": "Es gibt keine aktuellen Themen."
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"register": "Registrieren",
|
||||
"help.email": "Deine E-Mail Adresse ist standardmäßig nicht öffentlich sichtbar.",
|
||||
"help.username_restrictions": "Einen einmaligen Benutzernamen. %1-%2 Zeichen. Andere Benutzer können dich mit @<span id='yourUsername'>Benutzername</span> anschreiben.",
|
||||
"help.minimum_password_length": "Dein Passwort muss mindestens %1 Zeichen lang sein.",
|
||||
"help.username_restrictions": "Einen einmaligen Benutzernamen. 3-16 Zeichen. Andere Benutzer können dich mit @<span id='yourUsername'>Benutzername</span> anschreiben.",
|
||||
"help.minimum_password_length": "Dein Passwort muss mindestens sechs Zeichen lang sein.",
|
||||
"email_address": "E-Mail",
|
||||
"email_address_placeholder": "E-Mail Adresse hier eingeben",
|
||||
"username": "Benutzername",
|
||||
|
||||
@@ -9,6 +9,6 @@
|
||||
"repeat_password": "Wiederhole das Passwort",
|
||||
"enter_email": "Bitte gib Deine <strong>E-Mail Adresse</strong> ein und wir senden Dir eine Anleitung, wie Du Dein Passwort zurücksetzen kannst.",
|
||||
"enter_email_address": "E-Mail Adresse eingeben",
|
||||
"password_reset_sent": "Passwortzurücksetzung beantragt.",
|
||||
"password_reset_sent": "Passwortzrücksetzung beantragt.",
|
||||
"invalid_email": "Ungültige E-Mail / Adresse existiert nicht!"
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{
|
||||
"results_matching": "%1 Ergebniss(e) stimmen mit \"%2\" überein, (%3 Sekunden)",
|
||||
"no-matches": "Keine Beiträge gefunden"
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"success": "Fertig",
|
||||
"topic-post": "Beitrag erfolgreich erstellt.",
|
||||
"authentication-successful": "Authentifizierung erfolgreich!",
|
||||
"settings-saved": "Einstellungen gespeichert!"
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"no_tag_topics": "Es gibt keine Themen mit diesem Tag.",
|
||||
"tags": "Tags",
|
||||
"enter_tags_here": "Gib hier Tags ein und drück die Eingabetaste nach jedem Tag.",
|
||||
"no_tags": "Es gibt bisher keine Tags."
|
||||
}
|
||||
@@ -1,35 +1,34 @@
|
||||
{
|
||||
"topic": "Thema",
|
||||
"topics": "Themen",
|
||||
"topic_id": "Topic ID",
|
||||
"topic_id_placeholder": "Topic ID eingeben",
|
||||
"no_topics_found": "Keine passenden Themen gefunden.",
|
||||
"topic_id_placeholder": "Enter topic ID",
|
||||
"no_topics_found": "Keine passende Themen gefunden.",
|
||||
"no_posts_found": "Keine Beiträge gefunden!",
|
||||
"post_is_deleted": "Dieser Beitrag wurde gelöscht!",
|
||||
"profile": "Profil",
|
||||
"posted_by": "Geschrieben von %1",
|
||||
"posted_by_guest": "Verfasst von einem Gast",
|
||||
"posted_by": "Geposted von",
|
||||
"chat": "Chat",
|
||||
"notify_me": "Erhalte eine Benachrichtigung bei neuen Antworten zu diesem Thema.",
|
||||
"notify_me": "Werde bei neues Antworten auf dieses Thema benachrichtigt.",
|
||||
"quote": "zitieren",
|
||||
"reply": "antworten",
|
||||
"edit": "bearbeiten",
|
||||
"delete": "löschen",
|
||||
"purge": "bereinigen",
|
||||
"restore": "Wiederherstellen",
|
||||
"move": "verschieben",
|
||||
"move": "Verschieben",
|
||||
"fork": "Aufspalten",
|
||||
"banned": "gesperrt",
|
||||
"link": "Link",
|
||||
"share": "Teilen",
|
||||
"tools": "Tools",
|
||||
"flag": "Markieren",
|
||||
"locked": "Gesperrt",
|
||||
"bookmark_instructions": "Klicke hier um zur letzten Position zurückzukehren oder schließe zum Abbrechen.",
|
||||
"flag_title": "Diesen Beitrag zur Moderation markieren",
|
||||
"flag_confirm": "Sind Sie sicher, dass Sie diesen Post markieren möchten?",
|
||||
"flag_success": "Dieser Beitrag wurde erfolgreich für die Moderation markiert.",
|
||||
"deleted_message": "Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.",
|
||||
"flag_confirm": "Are you sure you want to flag this post?",
|
||||
"flag_success": "This post has been flagged for moderation.",
|
||||
"deleted_message": "Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können ihn sehen.",
|
||||
"following_topic.title": "Thema wird gefolgt",
|
||||
"following_topic.message": "Du erhälst nun eine Benachrichtigung, wenn jemand einen Beitrag zu diesem Thema verfasst.",
|
||||
"not_following_topic.title": "Thema nicht gefolgt",
|
||||
"not_following_topic.message": "Du erhälst keine weiteren Benachrichtigungen zu diesem Thema.",
|
||||
"login_to_subscribe": "Bitte registrieren oder einloggen um dieses Thema zu abonnieren",
|
||||
"markAsUnreadForAll.success": "Thema für Alle als ungelesen markiert.",
|
||||
@@ -43,39 +42,39 @@
|
||||
"thread_tools.lock": "Thema schließen",
|
||||
"thread_tools.unlock": "Thema öffnen",
|
||||
"thread_tools.move": "Thema verschieben",
|
||||
"thread_tools.move_all": "Alle verschieben",
|
||||
"thread_tools.fork": "Thema aufspalten",
|
||||
"thread_tools.delete": "Thema löschen",
|
||||
"thread_tools.delete_confirm": "Sind Sie sicher, dass Sie dieses Thema löschen möchten?",
|
||||
"thread_tools.restore": "Thema wiederherstellen",
|
||||
"thread_tools.restore_confirm": "Sind Sie sicher, dass Sie dieses Thema wiederherstellen möchten?",
|
||||
"thread_tools.purge": "Thema bereinigen",
|
||||
"thread_tools.purge_confirm": "Sind Sie sicher, dass Sie dieses Thema bereinigen möchten?",
|
||||
"topic_move_success": "Thema wurde erfolgreich zu %1 verschoben.",
|
||||
"post_delete_confirm": "Sind Sie sicher, dass Sie diesen Beitrag löschen möchten?",
|
||||
"post_restore_confirm": "Sind Sie sicher, dass Sie diesen Beitrag wiederherstellen möchten?",
|
||||
"post_purge_confirm": "Sind Sie sicher, das Sie diesen Beitrag bereinigen möchten?",
|
||||
"load_categories": "Kategorien laden",
|
||||
"disabled_categories_note": "Deaktivierte Kategorien sind ausgegraut.",
|
||||
"confirm_move": "Verschieben",
|
||||
"confirm_move": "verschieben",
|
||||
"confirm_fork": "Aufspalten",
|
||||
"favourite": "Favorisieren",
|
||||
"favourite": "Favorit",
|
||||
"favourites": "Favoriten",
|
||||
"favourites.not_logged_in.title": "Nicht eingeloggt!",
|
||||
"favourites.not_logged_in.message": "Bitte logge dich ein, um diesen Beitrag favorisieren zu können.",
|
||||
"favourites.has_no_favourites": "Du hast noch keine Favoriten.",
|
||||
"loading_more_posts": "Lade mehr Beiträge",
|
||||
"vote.not_logged_in.title": "Nicht eingeloggt",
|
||||
"vote.not_logged_in.message": "Zum Bewerten bitte einloggen",
|
||||
"vote.cant_vote_self.title": "Ungültige Bewertung",
|
||||
"vote.cant_vote_self.message": "Du kannst deinen eigenen Beitrag nicht bewerten",
|
||||
"loading_more_posts": "Lade Mehr Posts",
|
||||
"move_topic": "Thema verschieben",
|
||||
"move_topics": "Themen verschieben",
|
||||
"move_post": "Beitrag verschieben",
|
||||
"post_moved": "Beitrag wurde verschoben!",
|
||||
"fork_topic": "Thema aufspalten",
|
||||
"topic_will_be_moved_to": "Dieses Thema wird verschoben nach",
|
||||
"fork_topic_instruction": "Klicke auf die Beiträge, die du aufspalten willst",
|
||||
"fork_topic_instruction": "Klicke auf die Posts, die du aufspalten willst",
|
||||
"fork_no_pids": "Keine Beiträge ausgewählt!",
|
||||
"fork_success": "Thema erfolgreich abgespalten! Klicke hier, um zum abgespalteten Thema zu gelangen.",
|
||||
"fork_success": "Thema erfolgreich aufgespalten!",
|
||||
"reputation": "Reputation",
|
||||
"posts": "Beiträge",
|
||||
"composer.title_placeholder": "Hier den Titel des Themas eingeben...",
|
||||
"composer.write": "Schreiben",
|
||||
"composer.preview": "Vorschau",
|
||||
"composer.help": "Hilfe",
|
||||
"composer.discard": "Verwerfen",
|
||||
"composer.submit": "Absenden",
|
||||
"composer.replying_to": "Antworte auf %1",
|
||||
"composer.replying_to": "Als Antwort auf",
|
||||
"composer.new_topic": "Neues Thema",
|
||||
"composer.uploading": "Upload läuft...",
|
||||
"composer.thumb_url_label": "Vorschaubild-URL hier einfügen",
|
||||
@@ -84,12 +83,5 @@
|
||||
"composer.thumb_file_label": "Oder eine Datei hochladen",
|
||||
"composer.thumb_remove": "Felder leeren",
|
||||
"composer.drag_and_drop_images": "Bilder hier reinziehen",
|
||||
"more_users_and_guests": "%1 weitere(r) Nutzer und %2 Gäste",
|
||||
"more_users": "%1 weitere(r) Nutzer",
|
||||
"more_guests": "%1 weitere Gäste",
|
||||
"users_and_others": "%1 und %2 andere",
|
||||
"sort_by": "Sortieren nach",
|
||||
"oldest_to_newest": "Älteste zuerst",
|
||||
"newest_to_oldest": "Neuster zuerst",
|
||||
"most_votes": "Die meisten Stimmen"
|
||||
"composer.upload_instructions": "Zum Hochladen Bilder hier reinziehen."
|
||||
}
|
||||
@@ -1,9 +1,6 @@
|
||||
{
|
||||
"title": "Ungelesen",
|
||||
"no_unread_topics": "Es gibt keine ungelesenen Themen.",
|
||||
"load_more": "mehr laden",
|
||||
"mark_as_read": "Als gelesen markieren",
|
||||
"selected": "Ausgewählte",
|
||||
"all": "Alle",
|
||||
"topics_marked_as_read.success": "Themen als gelesen markiert!"
|
||||
"mark_all_read": "alle als gelesen markieren",
|
||||
"load_more": "mehr laden"
|
||||
}
|
||||
@@ -3,11 +3,9 @@
|
||||
"offline": "offline",
|
||||
"username": "Nutzername",
|
||||
"email": "E-Mail",
|
||||
"confirm_email": "E-Mail bestätigen",
|
||||
"delete_account": "Konto löschen",
|
||||
"delete_account_confirm": "Bist du sicher, dass du dein Konto löschen möchtest? <br /><strong>Diese Aktion kann nicht rückgängig gemacht werden und du kannst deine Daten nicht widerherstellen</strong><br /><br />Gebe deinen Benutzernamen ein, um zu bestätigen, dass du dieses Konto terminieren möchtest.",
|
||||
"fullname": "Kompletter Name",
|
||||
"website": "Homepage",
|
||||
"user:website_placeholder": "http://...",
|
||||
"location": "Wohnort",
|
||||
"age": "Alter",
|
||||
"joined": "Beigetreten",
|
||||
@@ -15,56 +13,44 @@
|
||||
"profile": "Profil",
|
||||
"profile_views": "Profilaufrufe",
|
||||
"reputation": "Reputation",
|
||||
"posts": "Posts",
|
||||
"favourites": "Favoriten",
|
||||
"followers": "Folger",
|
||||
"followers": "Follower",
|
||||
"following": "Folgt",
|
||||
"signature": "Signatur",
|
||||
"gravatar": "Gravatar",
|
||||
"birthday": "Geburtstag",
|
||||
"birthday_placeholder": "mm/dd/yyyy",
|
||||
"chat": "Chat",
|
||||
"follow": "Folgen",
|
||||
"unfollow": "Nicht mehr folgen",
|
||||
"profile_update_success": "Profil erfolgreich aktualisiert!",
|
||||
"change_picture": "Profilbild ändern",
|
||||
"change_picture": "Ändere Profilbild",
|
||||
"edit": "Ändern",
|
||||
"uploaded_picture": "Hochgeladene Bilder",
|
||||
"upload_new_picture": "Neues Bild hochladen",
|
||||
"current_password": "Aktuelles Passwort",
|
||||
"change_password": "Passwort ändern",
|
||||
"change_password_error": "Ungültiges Passwort!",
|
||||
"change_password_error_wrong_current": "Ihr derzeitiges Passwort ist ungültig!",
|
||||
"change_password_error_length": "Passwort zu kurz!",
|
||||
"change_password_error_match": "Passwörter müssen übereinstimmen!",
|
||||
"change_password_error_privileges": "Deine Berechtigungen reichen nicht aus, um dieses Passwort zu ändern.",
|
||||
"change_password_success": "Ihr Passwort wurde aktualisiert!",
|
||||
"change_password": "Ändere Passwort",
|
||||
"change_password_error": "Invalid Password!",
|
||||
"change_password_error_wrong_current": "Your current password is not correct!",
|
||||
"change_password_error_length": "Password too short!",
|
||||
"change_password_error_match": "Passwords must match!",
|
||||
"change_password_error_privileges": "You are not have the rights to change this password.",
|
||||
"change_password_success": "Your password is updated!",
|
||||
"confirm_password": "Passwort wiederholen",
|
||||
"password": "Passwort",
|
||||
"username_taken_workaround": "Der gewünschte Benutzername ist bereits vergeben, deshalb haben wir ihn ein wenig verändert. Du bist jetzt unter dem Namen <strong>%1</strong> bekannt.",
|
||||
"upload_picture": "Bild hochladen",
|
||||
"upload_a_picture": "Ein Bild hochladen",
|
||||
"image_spec": "Sie dürfen nur Dateien vom Typ PNG, JPG oder GIF hochladen",
|
||||
"image_spec": "Du darfst nur Dateien vom Typ PNG, JPG oder GIF hochladen",
|
||||
"max": "max.",
|
||||
"settings": "Einstellungen",
|
||||
"show_email": "Zeige meine E-Mail Adresse an.",
|
||||
"digest_label": "Auszug abonnieren",
|
||||
"digest_description": "Abonniere E-Mail-Benachrichtigungen für dieses Forum (neue Benachrichtigungen und Themen) nach einem festen Zeitplan.",
|
||||
"digest_off": "Aus",
|
||||
"digest_daily": "Täglich",
|
||||
"digest_weekly": "Wöchentlich",
|
||||
"digest_monthly": "Monatlich",
|
||||
"send_chat_notifications": "Sende eine E-Mail, wenn eine neue Chat-Nachricht eingeht und ich nicht online bin",
|
||||
"has_no_follower": "Dieser User hat noch keine Follower.",
|
||||
"follows_no_one": "Dieser User folgt noch niemandem :(",
|
||||
"follows_no_one": "Dieser User folgt noch niemanden.",
|
||||
"has_no_posts": "Dieser Nutzer hat noch nichts gepostet.",
|
||||
"has_no_topics": "Dieser Nutzer hat noch keine Themen gepostet.",
|
||||
"email_hidden": "E-Mail Adresse versteckt",
|
||||
"hidden": "versteckt",
|
||||
"paginate_description": "Themen und Beiträge auf Seiten aufteilen statt unendliches Scrollen verwenden.",
|
||||
"paginate_description": "Themen und Beiträge auf Seiten aufteilen statt unendliches Scrollen verweden",
|
||||
"topics_per_page": "Themen pro Seite",
|
||||
"posts_per_page": "Beiträge pro Seite",
|
||||
"notification_sounds": "Ton abspielen, wenn ich eine Benachrichtigung erhalte.",
|
||||
"browsing": "Browser Einstellungen",
|
||||
"open_links_in_new_tab": "Externe Links in neuem Tab öffnen?",
|
||||
"follow_topics_you_reply_to": "Folge Themen, auf die du antwortest.",
|
||||
"follow_topics_you_create": "Folge Themen, die du erstellst."
|
||||
"notification_sounds": "Ton abspielen, wenn ich eine Benachrichtigung erhalte."
|
||||
}
|
||||
@@ -1,10 +1,9 @@
|
||||
{
|
||||
"latest_users": "neuste Benutzer",
|
||||
"top_posters": "meiste Beiträge",
|
||||
"most_reputation": "höchstes Ansehen",
|
||||
"most_reputation": "höhstes Ansehen",
|
||||
"online": "Online",
|
||||
"search": "Suchen",
|
||||
"enter_username": "Benutzer durchsuchen",
|
||||
"load_more": "mehr laden",
|
||||
"user-not-found": "Benutzer nicht gefunden!",
|
||||
"users-found-search-took": "%1 Benutzer gefunden! Die Suche dauerte %2 ms."
|
||||
"load_more": "mehr laden"
|
||||
}
|
||||
@@ -1,8 +1,12 @@
|
||||
{
|
||||
"new_topic_button": "New Topic",
|
||||
"no_topics": "<strong>Thar be no topics in 'tis category.</strong><br />Why don't ye give a go' postin' one?",
|
||||
"posts": "messages",
|
||||
"views": "views",
|
||||
"posted": "sent",
|
||||
"browsing": "browsin'",
|
||||
"no_replies": "No one has replied to ye message",
|
||||
"share_this_category": "Share this category",
|
||||
"ignore": "Ignore"
|
||||
"replied": "replied",
|
||||
"last_edited_by": "last edited by",
|
||||
"share_this_category": "Share this category"
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
{
|
||||
"password-reset-requested": "Password Reset Requested - %1!",
|
||||
"welcome-to": "Welcome to %1",
|
||||
"greeting_no_name": "Hello",
|
||||
"greeting_with_name": "Hello %1",
|
||||
"welcome.text1": "Thank you for registering with %1!",
|
||||
"welcome.text2": "To fully activate your account, we need to verify that you own the email address you registered with.",
|
||||
"welcome.cta": "Click here to confirm your email address",
|
||||
"reset.text1": "We received a request to reset your password, possibly because you have forgotten it. If this is not the case, please ignore this email.",
|
||||
"reset.text2": "To continue with the password reset, please click on the following link:",
|
||||
"reset.cta": "Click here to reset your password",
|
||||
"digest.notifications": "You have some unread notifications from %1:",
|
||||
"digest.latest_topics": "Latest topics from %1",
|
||||
"digest.cta": "Click here to visit %1",
|
||||
"digest.unsub.info": "This digest was sent to you due to your subscription settings.",
|
||||
"digest.daily.no_topics": "There have been no active topics in the past day",
|
||||
"notif.chat.subject": "New chat message received from %1",
|
||||
"notif.chat.cta": "Click here to continue the conversation",
|
||||
"notif.chat.unsub.info": "This chat notification was sent to you due to your subscription settings.",
|
||||
"test.text1": "This is a test email to verify that the emailer is set up correctly for your NodeBB.",
|
||||
"unsub.cta": "Click here to alter those settings",
|
||||
"closing": "Thanks!"
|
||||
}
|
||||
@@ -1,63 +0,0 @@
|
||||
{
|
||||
"invalid-data": "Invalid Data",
|
||||
"not-logged-in": "You don't seem to be logged in.",
|
||||
"account-locked": "Your account has been locked temporarily",
|
||||
"search-requires-login": "Searching requires an account! Please login or register!",
|
||||
"invalid-cid": "Invalid Category ID",
|
||||
"invalid-tid": "Invalid Topic ID",
|
||||
"invalid-pid": "Invalid Post ID",
|
||||
"invalid-uid": "Invalid User ID",
|
||||
"invalid-username": "Invalid Username",
|
||||
"invalid-email": "Invalid Email",
|
||||
"invalid-title": "Invalid title!",
|
||||
"invalid-user-data": "Invalid User Data",
|
||||
"invalid-password": "Invalid Password",
|
||||
"invalid-username-or-password": "Please specify both a username and password",
|
||||
"invalid-pagination-value": "Invalid pagination value",
|
||||
"username-taken": "Username taken",
|
||||
"email-taken": "Email taken",
|
||||
"email-not-confirmed": "Your email is not confirmed, please click here to confirm your email.",
|
||||
"username-too-short": "Username too short",
|
||||
"username-too-long": "Username too long",
|
||||
"user-banned": "User banned",
|
||||
"user-too-new": "You need to wait %1 seconds before making your first post!",
|
||||
"no-category": "Category doesn't exist",
|
||||
"no-topic": "Topic doesn't exist",
|
||||
"no-post": "Post doesn't exist",
|
||||
"no-group": "Group doesn't exist",
|
||||
"no-user": "User doesn't exist",
|
||||
"no-teaser": "Teaser doesn't exist",
|
||||
"no-privileges": "You don't have enough privileges for this action.",
|
||||
"no-emailers-configured": "No email plugins were loaded, so a test email could not be sent",
|
||||
"category-disabled": "Category disabled",
|
||||
"topic-locked": "Topic Locked",
|
||||
"still-uploading": "Please wait for uploads to complete.",
|
||||
"content-too-short": "Please enter a longer post. At least %1 characters.",
|
||||
"title-too-short": "Please enter a longer title. At least %1 characters.",
|
||||
"title-too-long": "Please enter a shorter title. Titles can't be longer than %1 characters.",
|
||||
"too-many-posts": "You can only post every %1 seconds.",
|
||||
"file-too-big": "Maximum allowed file size is %1 kbs",
|
||||
"cant-vote-self-post": "You cannot vote for your own post",
|
||||
"already-favourited": "You already favourited this post",
|
||||
"already-unfavourited": "You already unfavourited this post",
|
||||
"cant-ban-other-admins": "You can't ban other admins!",
|
||||
"invalid-image-type": "Invalid image type",
|
||||
"group-name-too-short": "Group name too short",
|
||||
"group-already-exists": "Group already exists",
|
||||
"group-name-change-not-allowed": "Group name change not allowed",
|
||||
"post-already-deleted": "Post already deleted",
|
||||
"post-already-restored": "Post already restored",
|
||||
"topic-already-deleted": "Topic already deleted",
|
||||
"topic-already-restored": "Topic already restored",
|
||||
"topic-thumbnails-are-disabled": "Topic thumbnails are disabled.",
|
||||
"invalid-file": "Invalid File",
|
||||
"uploads-are-disabled": "Uploads are disabled",
|
||||
"upload-error": "Upload Error : %1",
|
||||
"signature-too-long": "Signature can't be longer than %1 characters!",
|
||||
"cant-chat-with-yourself": "You can't chat with yourself!",
|
||||
"reputation-system-disabled": "Reputation system is disabled.",
|
||||
"downvoting-disabled": "Downvoting is disabled",
|
||||
"not-enough-reputation-to-downvote": "You do not have enough reputation to downvote this post",
|
||||
"not-enough-reputation-to-flag": "Yo do not have enough reputation to flag this post",
|
||||
"reload-failed": "NodeBB encountered a problem while reloading: \"%1\". NodeBB will continue to serve the existing client-side assets, although you should undo what you did just prior to reloading."
|
||||
}
|
||||
7
public/language/en@pirate/footer.json
Normal file
7
public/language/en@pirate/footer.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"stats.online": "Online",
|
||||
"stats.users": "Mates",
|
||||
"stats.topics": "Topics",
|
||||
"stats.posts": "Messages",
|
||||
"success": "success"
|
||||
}
|
||||
@@ -13,17 +13,14 @@
|
||||
"please_log_in": "Please Log In",
|
||||
"logout": "Logout",
|
||||
"posting_restriction_info": "Postin' be currently restricted to registered members only, click here to log in.",
|
||||
"welcome_back": "Welcome Back",
|
||||
"welcome_back": "Welcome to Port",
|
||||
"you_have_successfully_logged_in": "Ye have successfully logged in",
|
||||
"save_changes": "Save yer Changes",
|
||||
"close": "Shoot down",
|
||||
"pagination": "Pagination",
|
||||
"pagination.out_of": "%1 out of %2",
|
||||
"pagination.enter_index": "Enter index",
|
||||
"header.admin": "Captains only",
|
||||
"header.recent": "Recent",
|
||||
"header.unread": "Undiscovered",
|
||||
"header.tags": "Tags",
|
||||
"header.popular": "Famous",
|
||||
"header.users": "Mates",
|
||||
"header.chats": "Yik-Yaks",
|
||||
@@ -38,38 +35,21 @@
|
||||
"alert.success": "Success",
|
||||
"alert.error": "Somethin' broke",
|
||||
"alert.banned": "Exiled",
|
||||
"alert.banned.message": "You have just been banned, you will now be logged out.",
|
||||
"alert.banned.message": "Ye be banned ye gunna be logged out!",
|
||||
"alert.unfollow": "Ye be no longer stalkin' %1!",
|
||||
"alert.follow": "Ye be stalkin' %1",
|
||||
"online": "Available",
|
||||
"users": "Users",
|
||||
"topics": "Topics",
|
||||
"posts": "Messages",
|
||||
"views": "Views",
|
||||
"reputation": "Reputation",
|
||||
"read_more": "read more",
|
||||
"posted_ago_by_guest": "posted %1 by Guest",
|
||||
"posted_ago_by": "posted %1 by %2",
|
||||
"posted_ago": "posted %1",
|
||||
"posted_in_ago_by_guest": "posted in %1 %2 by Guest",
|
||||
"posted_in_ago_by": "posted in %1 %2 by %3",
|
||||
"posted_in_ago": "posted in %1 %2",
|
||||
"replied_ago": "replied %1",
|
||||
"user_posted_ago": "%1 posted %2",
|
||||
"guest_posted_ago": "Guest posted %1",
|
||||
"last_edited_by_ago": "last edited by %1 %2",
|
||||
"posted": "posted",
|
||||
"in": "in",
|
||||
"norecentposts": "No Recent Posts",
|
||||
"norecenttopics": "No Recent Topics",
|
||||
"recentposts": "Recent Messages",
|
||||
"recentips": "Recently Logged In IPs",
|
||||
"online": "Available",
|
||||
"away": "Out to sea",
|
||||
"dnd": "Do not Disturb",
|
||||
"invisible": "Magic usin'",
|
||||
"offline": "Dead",
|
||||
"email": "Email",
|
||||
"language": "Language",
|
||||
"guest": "Guest",
|
||||
"guests": "Guests",
|
||||
"updated.title": "Forum Updated",
|
||||
"updated.message": "This forum has just been updated to the latest version. Click here to refresh the page."
|
||||
"privacy": "Privacy"
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"view_group": "View Group",
|
||||
"details.title": "Group Details",
|
||||
"details.members": "Member List",
|
||||
"details.has_no_posts": "This group's members have not made any posts.",
|
||||
"details.latest_posts": "Latest Posts"
|
||||
}
|
||||
@@ -1,9 +1,10 @@
|
||||
{
|
||||
"login": "Login",
|
||||
"username": "Yer handle or email",
|
||||
"password": "Secret Combination",
|
||||
"remember_me": "Remember Me?",
|
||||
"forgot_password": "My mind be a scatt'rbrain, help a matey out!",
|
||||
"alternative_logins": "Oth'r gangplanks",
|
||||
"failed_login_attempt": "Failed login attempt, please give it a go' again.",
|
||||
"login_successful": "Welcome on board, matey!",
|
||||
"dont_have_account": "Don't have an account?"
|
||||
"login_successful": "Welcome on board, matey!"
|
||||
}
|
||||
@@ -1,22 +1,6 @@
|
||||
{
|
||||
"chat.chatting_with": "Letters from <span id=\"chat-with-name\"></span>",
|
||||
"chat.placeholder": "Type chat message here, press enter to send",
|
||||
"chat.placeholder": "Yer message goes here, hit enter to send 'er off",
|
||||
"chat.send": "Send Parrot",
|
||||
"chat.no_active": "Ye be a lonely sailor.",
|
||||
"chat.user_typing": "%1 is typing ...",
|
||||
"chat.user_has_messaged_you": "%1 has messaged you.",
|
||||
"chat.see_all": "See all Chats",
|
||||
"chat.no-messages": "Please select a recipient to view chat message history",
|
||||
"chat.recent-chats": "Recent Chats",
|
||||
"chat.contacts": "Contacts",
|
||||
"chat.message-history": "Message History",
|
||||
"chat.pop-out": "Pop out chat",
|
||||
"chat.maximize": "Maximize",
|
||||
"chat.yesterday": "Yesterday",
|
||||
"chat.seven_days": "7 Days",
|
||||
"chat.thirty_days": "30 Days",
|
||||
"chat.three_months": "3 Months",
|
||||
"composer.user_said_in": "%1 said in %2:",
|
||||
"composer.user_said": "%1 said:",
|
||||
"composer.discard": "Are you sure you wish to discard this post?"
|
||||
"chat.no_active": "Ye be a lonely sailor."
|
||||
}
|
||||
@@ -2,25 +2,9 @@
|
||||
"title": "Notifications",
|
||||
"no_notifs": "You have no new notifications",
|
||||
"see_all": "Spy wit' ye eye all ye notifications",
|
||||
"back_to_home": "Back to %1",
|
||||
"back_to_home": "Take me back!",
|
||||
"outgoing_link": "Go offshore",
|
||||
"outgoing_link_message": "You are now leaving %1.",
|
||||
"continue_to": "Continue to %1",
|
||||
"return_to": "Return to %1",
|
||||
"new_notification": "New Notification",
|
||||
"you_have_unread_notifications": "You have unread notifications.",
|
||||
"new_message_from": "New message from <strong>%1</strong>",
|
||||
"upvoted_your_post_in": "<strong>%1</strong> has upvoted your post in <strong>%2</strong>.",
|
||||
"moved_your_post": "<strong>%1<strong> has moved your post.",
|
||||
"moved_your_topic": "<strong>%1<strong> has moved your topic.",
|
||||
"favourited_your_post_in": "<strong>%1</strong> has favourited your post in <strong>%2</strong>.",
|
||||
"user_flagged_post_in": "<strong>%1</strong> flagged a post in <strong>%2</strong>",
|
||||
"user_posted_to": "<strong>%1</strong> has posted a reply to: <strong>%2</strong>",
|
||||
"user_mentioned_you_in": "<strong>%1</strong> mentioned you in <strong>%2</strong>",
|
||||
"user_started_following_you": "<strong>%1</strong> started following you.",
|
||||
"email-confirmed": "Email Confirmed",
|
||||
"email-confirmed-message": "Thank you for validating your email. Your account is now fully activated.",
|
||||
"email-confirm-error": "An error occurred...",
|
||||
"email-confirm-error-message": "There was a problem validating your email address. Perhaps the code was invalid or has expired.",
|
||||
"email-confirm-sent": "Confirmation email sent."
|
||||
"outgoing_link_message": "Ye be goin' offshore",
|
||||
"continue_to": "Continue to",
|
||||
"return_to": "Return to"
|
||||
}
|
||||
@@ -5,12 +5,10 @@
|
||||
"recent": "Recent Topics",
|
||||
"users": "Registered Users",
|
||||
"notifications": "Notifications",
|
||||
"tags": "Topics tagged under \"%1\"",
|
||||
"user.edit": "Editing \"%1\"",
|
||||
"user.following": "People %1 Follows",
|
||||
"user.followers": "People who Follow %1",
|
||||
"user.posts": "Posts made by %1",
|
||||
"user.topics": "Topics created by %1",
|
||||
"user.favourites": "%1's Favourite Posts",
|
||||
"user.settings": "User Settings"
|
||||
}
|
||||
@@ -3,7 +3,5 @@
|
||||
"day": "Day",
|
||||
"week": "Week",
|
||||
"month": "Month",
|
||||
"year": "Year",
|
||||
"alltime": "All Time",
|
||||
"no_recent_topics": "There be no recent topics."
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{
|
||||
"results_matching": "%1 result(s) matching \"%2\", (%3 seconds)",
|
||||
"no-matches": "No posts found"
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"success": "Success",
|
||||
"topic-post": "You have successfully posted.",
|
||||
"authentication-successful": "Authentication Successful",
|
||||
"settings-saved": "Settings saved!"
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"no_tag_topics": "There are no topics with this tag.",
|
||||
"tags": "Tags",
|
||||
"enter_tags_here": "Enter tags here. Press enter after each tag.",
|
||||
"no_tags": "There are no tags yet."
|
||||
}
|
||||
@@ -1,20 +1,18 @@
|
||||
{
|
||||
"topic": "Topic",
|
||||
"topics": "Topics",
|
||||
"topic_id": "Topic ID",
|
||||
"topic_id_placeholder": "Enter topic ID",
|
||||
"no_topics_found": "No topics found!",
|
||||
"no_posts_found": "No posts found!",
|
||||
"post_is_deleted": "This post is deleted!",
|
||||
"profile": "Profile",
|
||||
"posted_by": "Posted by %1",
|
||||
"posted_by_guest": "Posted by Guest",
|
||||
"posted_by": "Posted by",
|
||||
"chat": "Chat",
|
||||
"notify_me": "Be notified of new replies in this topic",
|
||||
"quote": "Quote",
|
||||
"reply": "Reply",
|
||||
"edit": "Edit",
|
||||
"delete": "Delete",
|
||||
"purge": "Purge",
|
||||
"restore": "Restore",
|
||||
"move": "Move",
|
||||
"fork": "Fork",
|
||||
@@ -23,13 +21,14 @@
|
||||
"share": "Share",
|
||||
"tools": "Tools",
|
||||
"flag": "Flag",
|
||||
"locked": "Locked",
|
||||
"bookmark_instructions": "Click here to return to your last position or close to discard.",
|
||||
"flag_title": "Flag this post for moderation",
|
||||
"flag_confirm": "Are you sure you want to flag this post?",
|
||||
"flag_success": "This post has been flagged for moderation.",
|
||||
"deleted_message": "This thread has been deleted. Only users with thread management privileges can see it.",
|
||||
"following_topic.title": "Following Topic",
|
||||
"following_topic.message": "You will now be receiving notifications when somebody posts to this topic.",
|
||||
"not_following_topic.title": "Not Following Topic",
|
||||
"not_following_topic.message": "You will no longer receive notifications from this topic.",
|
||||
"login_to_subscribe": "Please register or log in in order to subscribe to this topic.",
|
||||
"markAsUnreadForAll.success": "Topic marked as unread for all.",
|
||||
@@ -43,39 +42,39 @@
|
||||
"thread_tools.lock": "Lock Topic",
|
||||
"thread_tools.unlock": "Unlock Topic",
|
||||
"thread_tools.move": "Move Topic",
|
||||
"thread_tools.move_all": "Move All",
|
||||
"thread_tools.fork": "Fork Topic",
|
||||
"thread_tools.delete": "Delete Topic",
|
||||
"thread_tools.delete_confirm": "Are you sure you want to delete this thread?",
|
||||
"thread_tools.restore": "Restore Topic",
|
||||
"thread_tools.restore_confirm": "Are you sure you want to restore this thread?",
|
||||
"thread_tools.purge": "Purge Topic",
|
||||
"thread_tools.purge_confirm": "Are you sure you want to purge this thread?",
|
||||
"topic_move_success": "This topic has been successfully moved to %1",
|
||||
"post_delete_confirm": "Are you sure you want to delete this post?",
|
||||
"post_restore_confirm": "Are you sure you want to restore this post?",
|
||||
"post_purge_confirm": "Are you sure you want to purge this post?",
|
||||
"load_categories": "Loading Categories",
|
||||
"disabled_categories_note": "Disabled Categories are greyed out",
|
||||
"confirm_move": "Move",
|
||||
"confirm_fork": "Fork",
|
||||
"favourite": "Favourite",
|
||||
"favourites": "Favourites",
|
||||
"favourites.not_logged_in.title": "Not Logged In",
|
||||
"favourites.not_logged_in.message": "Please log in in order to favourite this post",
|
||||
"favourites.has_no_favourites": "You don't have any favourites, favourite some posts to see them here!",
|
||||
"vote.not_logged_in.title": "Not Logged In",
|
||||
"vote.not_logged_in.message": "Please log in in order to vote",
|
||||
"vote.cant_vote_self.title": "Invalid Vote",
|
||||
"vote.cant_vote_self.message": "You cannot vote for your own post",
|
||||
"loading_more_posts": "Loading More Posts",
|
||||
"move_topic": "Move Topic",
|
||||
"move_topics": "Move Topics",
|
||||
"move_post": "Move Post",
|
||||
"post_moved": "Post moved!",
|
||||
"fork_topic": "Fork Topic",
|
||||
"topic_will_be_moved_to": "This topic will be moved to the category",
|
||||
"fork_topic_instruction": "Click the posts you want to fork",
|
||||
"fork_no_pids": "No posts selected!",
|
||||
"fork_success": "Succesfully forked topic! Click here to go to the forked topic.",
|
||||
"fork_success": "Succesfully forked topic!",
|
||||
"reputation": "Reputation",
|
||||
"posts": "Posts",
|
||||
"composer.title_placeholder": "Enter your topic title here...",
|
||||
"composer.write": "Write",
|
||||
"composer.preview": "Preview",
|
||||
"composer.help": "Help",
|
||||
"composer.discard": "Discard",
|
||||
"composer.submit": "Submit",
|
||||
"composer.replying_to": "Replying to %1",
|
||||
"composer.replying_to": "Replying to",
|
||||
"composer.new_topic": "New Topic",
|
||||
"composer.uploading": "uploading...",
|
||||
"composer.thumb_url_label": "Paste a topic thumbnail URL",
|
||||
@@ -84,12 +83,5 @@
|
||||
"composer.thumb_file_label": "Or upload a file",
|
||||
"composer.thumb_remove": "Clear fields",
|
||||
"composer.drag_and_drop_images": "Drag and Drop Images Here",
|
||||
"more_users_and_guests": "%1 more user(s) and %2 guest(s)",
|
||||
"more_users": "%1 more user(s)",
|
||||
"more_guests": "%1 more guest(s)",
|
||||
"users_and_others": "%1 and %2 others",
|
||||
"sort_by": "Sort by",
|
||||
"oldest_to_newest": "Oldest to Newest",
|
||||
"newest_to_oldest": "Newest to Oldest",
|
||||
"most_votes": "Most votes"
|
||||
"composer.upload_instructions": "Upload images by dragging & dropping them."
|
||||
}
|
||||
@@ -1,9 +1,6 @@
|
||||
{
|
||||
"title": "Unread",
|
||||
"no_unread_topics": "There be no unread topics.",
|
||||
"load_more": "Giv'er more",
|
||||
"mark_as_read": "Mark as Read",
|
||||
"selected": "Selected",
|
||||
"all": "All",
|
||||
"topics_marked_as_read.success": "Topics marked as read!"
|
||||
"mark_all_read": "I seen 'em all!",
|
||||
"load_more": "Giv'er more"
|
||||
}
|
||||
@@ -3,11 +3,9 @@
|
||||
"offline": "Asleep at the wheel",
|
||||
"username": "User Name",
|
||||
"email": "Email",
|
||||
"confirm_email": "Confirm Email",
|
||||
"delete_account": "Delete Account",
|
||||
"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 username to confirm that you wish to destroy this account.",
|
||||
"fullname": "Full Name",
|
||||
"website": "Website",
|
||||
"user:website_placeholder": "http://...",
|
||||
"location": "Location",
|
||||
"age": "Age",
|
||||
"joined": "Joined",
|
||||
@@ -15,16 +13,17 @@
|
||||
"profile": "Profile",
|
||||
"profile_views": "Profile views",
|
||||
"reputation": "Reputation",
|
||||
"posts": "Posts",
|
||||
"favourites": "Favourites",
|
||||
"followers": "Followers",
|
||||
"following": "Following",
|
||||
"signature": "Signature",
|
||||
"gravatar": "Gravatar",
|
||||
"birthday": "Birthday",
|
||||
"birthday_placeholder": "mm/dd/yyyy",
|
||||
"chat": "Chat",
|
||||
"follow": "Follow",
|
||||
"unfollow": "Unfollow",
|
||||
"profile_update_success": "Profile has been updated successfully!",
|
||||
"change_picture": "Change Picture",
|
||||
"edit": "Edit",
|
||||
"uploaded_picture": "Uploaded Picture",
|
||||
@@ -35,36 +34,23 @@
|
||||
"change_password_error_wrong_current": "Your current password is not correct!",
|
||||
"change_password_error_length": "Password too short!",
|
||||
"change_password_error_match": "Passwords must match!",
|
||||
"change_password_error_privileges": "You do not have the rights to change this password.",
|
||||
"change_password_error_privileges": "You are not have the rights to change this password.",
|
||||
"change_password_success": "Your password is updated!",
|
||||
"confirm_password": "Confirm Password",
|
||||
"password": "Password",
|
||||
"username_taken_workaround": "The username you requested was already taken, so we have altered it slightly. You are now known as <strong>%1</strong>",
|
||||
"upload_picture": "Upload picture",
|
||||
"upload_a_picture": "Upload a picture",
|
||||
"image_spec": "You may only upload PNG, JPG, or GIF files",
|
||||
"max": "max.",
|
||||
"settings": "Settings",
|
||||
"show_email": "Show My Email",
|
||||
"digest_label": "Subscribe to Digest",
|
||||
"digest_description": "Subscribe to email updates for this forum (new notifications and topics) according to a set schedule",
|
||||
"digest_off": "Off",
|
||||
"digest_daily": "Daily",
|
||||
"digest_weekly": "Weekly",
|
||||
"digest_monthly": "Monthly",
|
||||
"send_chat_notifications": "Send an email if a new chat message arrives and I am not online",
|
||||
"has_no_follower": "This user doesn't have any followers :(",
|
||||
"follows_no_one": "This user isn't following anyone :(",
|
||||
"has_no_posts": "This user didn't post anything yet.",
|
||||
"has_no_topics": "This user didn't post any topics yet.",
|
||||
"email_hidden": "Email Hidden",
|
||||
"hidden": "hidden",
|
||||
"paginate_description": "Paginate topics and posts instead of using infinite scroll.",
|
||||
"topics_per_page": "Topics per Page",
|
||||
"posts_per_page": "Posts per Page",
|
||||
"notification_sounds": "Play a sound when you receive a notification.",
|
||||
"browsing": "Browsing Settings",
|
||||
"open_links_in_new_tab": "Open outgoing links in new tab?",
|
||||
"follow_topics_you_reply_to": "Follow topics that you reply to.",
|
||||
"follow_topics_you_create": "Follow topics you create."
|
||||
"notification_sounds": "Play a sound when you receive a notification."
|
||||
}
|
||||
@@ -2,9 +2,8 @@
|
||||
"latest_users": "Land lubbers",
|
||||
"top_posters": "Top mateys",
|
||||
"most_reputation": "Most Reputation",
|
||||
"online": "Online",
|
||||
"search": "Search",
|
||||
"enter_username": "Gimme y'er handle",
|
||||
"load_more": "Load More",
|
||||
"user-not-found": "User not found!",
|
||||
"users-found-search-took": "%1 user(s) found! Search took %2 ms."
|
||||
"load_more": "Load More"
|
||||
}
|
||||
@@ -1,10 +1,12 @@
|
||||
{
|
||||
"new_topic_button": "New Topic",
|
||||
"no_topics": "<strong>There are no topics in this category.</strong><br />Why don't you try posting one?",
|
||||
|
||||
"posts": "posts",
|
||||
"views": "views",
|
||||
"posted": "posted",
|
||||
"browsing": "browsing",
|
||||
"no_replies": "No one has replied",
|
||||
|
||||
"share_this_category": "Share this category",
|
||||
"ignore": "Ignore"
|
||||
"replied": "replied",
|
||||
"last_edited_by": "last edited by",
|
||||
"share_this_category": "Share this category"
|
||||
}
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
{
|
||||
"password-reset-requested": "Password Reset Requested - %1!",
|
||||
"welcome-to": "Welcome to %1",
|
||||
|
||||
"greeting_no_name": "Hello",
|
||||
"greeting_with_name": "Hello %1",
|
||||
|
||||
"welcome.text1": "Thank you for registering with %1!",
|
||||
"welcome.text2": "To fully activate your account, we need to verify that you own the email address you registered with.",
|
||||
"welcome.cta": "Click here to confirm your email address",
|
||||
|
||||
"reset.text1": "We received a request to reset your password, possibly because you have forgotten it. If this is not the case, please ignore this email.",
|
||||
"reset.text2": "To continue with the password reset, please click on the following link:",
|
||||
"reset.cta": "Click here to reset your password",
|
||||
|
||||
"digest.notifications": "You have some unread notifications from %1:",
|
||||
"digest.latest_topics": "Latest topics from %1",
|
||||
"digest.cta": "Click here to visit %1",
|
||||
"digest.unsub.info": "This digest was sent to you due to your subscription settings.",
|
||||
"digest.daily.no_topics": "There have been no active topics in the past day",
|
||||
|
||||
"notif.chat.subject": "New chat message received from %1",
|
||||
"notif.chat.cta": "Click here to continue the conversation",
|
||||
"notif.chat.unsub.info": "This chat notification was sent to you due to your subscription settings.",
|
||||
|
||||
"test.text1": "This is a test email to verify that the emailer is set up correctly for your NodeBB.",
|
||||
|
||||
"unsub.cta": "Click here to alter those settings",
|
||||
|
||||
"closing": "Thanks!"
|
||||
}
|
||||
@@ -1,88 +0,0 @@
|
||||
{
|
||||
"invalid-data": "Invalid Data",
|
||||
|
||||
"not-logged-in": "You don't seem to be logged in.",
|
||||
"account-locked": "Your account has been locked temporarily",
|
||||
"search-requires-login": "Searching requires an account! Please login or register!",
|
||||
|
||||
"invalid-cid": "Invalid Category ID",
|
||||
"invalid-tid": "Invalid Topic ID",
|
||||
"invalid-pid": "Invalid Post ID",
|
||||
"invalid-uid": "Invalid User ID",
|
||||
|
||||
"invalid-username": "Invalid Username",
|
||||
"invalid-email": "Invalid Email",
|
||||
"invalid-title": "Invalid title",
|
||||
"invalid-user-data": "Invalid User Data",
|
||||
"invalid-password": "Invalid Password",
|
||||
"invalid-username-or-password": "Please specify both a username and password",
|
||||
"invalid-search-term": "Invalid search term",
|
||||
|
||||
"invalid-pagination-value": "Invalid pagination value",
|
||||
|
||||
"username-taken": "Username taken",
|
||||
"email-taken": "Email taken",
|
||||
"email-not-confirmed": "Your email is not confirmed, please click here to confirm your email.",
|
||||
|
||||
"username-too-short": "Username too short",
|
||||
"username-too-long": "Username too long",
|
||||
|
||||
"user-banned": "User banned",
|
||||
"user-too-new": "You need to wait %1 seconds before making your first post!",
|
||||
|
||||
"no-category": "Category doesn't exist",
|
||||
"no-topic": "Topic doesn't exist",
|
||||
"no-post": "Post doesn't exist",
|
||||
"no-group": "Group doesn't exist",
|
||||
"no-user": "User doesn't exist",
|
||||
"no-teaser": "Teaser doesn't exist",
|
||||
"no-privileges": "You don't have enough privileges for this action.",
|
||||
"no-emailers-configured": "No email plugins were loaded, so a test email could not be sent",
|
||||
|
||||
"category-disabled": "Category disabled",
|
||||
|
||||
"topic-locked": "Topic Locked",
|
||||
|
||||
"still-uploading": "Please wait for uploads to complete.",
|
||||
"content-too-short": "Please enter a longer post. At least %1 characters.",
|
||||
"title-too-short": "Please enter a longer title. At least %1 characters.",
|
||||
"title-too-long": "Please enter a shorter title. Titles can't be longer than %1 characters.",
|
||||
"invalid-title": "Invalid title!",
|
||||
"too-many-posts": "You can only post every %1 seconds.",
|
||||
"file-too-big": "Maximum allowed file size is %1 kbs",
|
||||
|
||||
"cant-vote-self-post": "You cannot vote for your own post",
|
||||
"already-favourited": "You already favourited this post",
|
||||
"already-unfavourited": "You already unfavourited this post",
|
||||
|
||||
"cant-ban-other-admins": "You can't ban other admins!",
|
||||
|
||||
"invalid-image-type": "Invalid image type",
|
||||
|
||||
"group-name-too-short": "Group name too short",
|
||||
"group-already-exists": "Group already exists",
|
||||
"group-name-change-not-allowed": "Group name change not allowed",
|
||||
|
||||
"post-already-deleted": "Post already deleted",
|
||||
"post-already-restored": "Post already restored",
|
||||
|
||||
"topic-already-deleted": "Topic already deleted",
|
||||
"topic-already-restored": "Topic already restored",
|
||||
|
||||
|
||||
"topic-thumbnails-are-disabled": "Topic thumbnails are disabled.",
|
||||
"invalid-file": "Invalid File",
|
||||
"uploads-are-disabled": "Uploads are disabled",
|
||||
"upload-error": "Upload Error : %1",
|
||||
|
||||
"signature-too-long" : "Signature can't be longer than %1 characters!",
|
||||
|
||||
"cant-chat-with-yourself": "You can't chat with yourself!",
|
||||
|
||||
"reputation-system-disabled": "Reputation system is disabled.",
|
||||
"downvoting-disabled": "Downvoting is disabled",
|
||||
"not-enough-reputation-to-downvote": "You do not have enough reputation to downvote this post",
|
||||
"not-enough-reputation-to-flag": "Yo do not have enough reputation to flag this post",
|
||||
|
||||
"reload-failed": "NodeBB encountered a problem while reloading: \"%1\". NodeBB will continue to serve the existing client-side assets, although you should undo what you did just prior to reloading."
|
||||
}
|
||||
7
public/language/en_GB/footer.json
Normal file
7
public/language/en_GB/footer.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"stats.online": "Online",
|
||||
"stats.users": "Users",
|
||||
"stats.topics": "Topics",
|
||||
"stats.posts": "Posts",
|
||||
"success": "success"
|
||||
}
|
||||
@@ -19,17 +19,15 @@
|
||||
"welcome_back": "Welcome Back ",
|
||||
"you_have_successfully_logged_in": "You have successfully logged in",
|
||||
|
||||
|
||||
"save_changes": "Save Changes",
|
||||
"close": "Close",
|
||||
|
||||
"pagination": "Pagination",
|
||||
"pagination.out_of": "%1 out of %2",
|
||||
"pagination.enter_index": "Enter index",
|
||||
|
||||
"header.admin": "Admin",
|
||||
"header.recent": "Recent",
|
||||
"header.unread": "Unread",
|
||||
"header.tags": "Tags",
|
||||
"header.popular": "Popular",
|
||||
"header.users": "Users",
|
||||
"header.chats": "Chats",
|
||||
@@ -49,32 +47,16 @@
|
||||
"alert.error": "Error",
|
||||
|
||||
"alert.banned": "Banned",
|
||||
"alert.banned.message": "You have just been banned, you will now be logged out.",
|
||||
"alert.banned.message": "You are banned you will be logged out!",
|
||||
|
||||
"alert.unfollow": "You are no longer following %1!",
|
||||
"alert.follow": "You are now following %1!",
|
||||
|
||||
"online": "Online",
|
||||
"users": "Users",
|
||||
"topics": "Topics",
|
||||
"posts": "Posts",
|
||||
"views": "Views",
|
||||
"reputation": "Reputation",
|
||||
|
||||
"read_more": "read more",
|
||||
|
||||
"posted_ago_by_guest": "posted %1 by Guest",
|
||||
"posted_ago_by": "posted %1 by %2",
|
||||
"posted_ago": "posted %1",
|
||||
|
||||
"posted_in_ago_by_guest": "posted in %1 %2 by Guest",
|
||||
"posted_in_ago_by": "posted in %1 %2 by %3",
|
||||
"posted_in_ago": "posted in %1 %2",
|
||||
|
||||
"replied_ago": "replied %1",
|
||||
"user_posted_ago": "%1 posted %2",
|
||||
"guest_posted_ago": "Guest posted %1",
|
||||
"last_edited_by_ago": "last edited by %1 %2",
|
||||
"posted": "posted",
|
||||
"in": "in",
|
||||
|
||||
"norecentposts": "No Recent Posts",
|
||||
"norecenttopics": "No Recent Topics",
|
||||
@@ -87,12 +69,5 @@
|
||||
"invisible": "Invisible",
|
||||
"offline": "Offline",
|
||||
|
||||
"email": "Email",
|
||||
"language": "Language",
|
||||
|
||||
"guest": "Guest",
|
||||
"guests": "Guests",
|
||||
|
||||
"updated.title": "Forum Updated",
|
||||
"updated.message": "This forum has just been updated to the latest version. Click here to refresh the page."
|
||||
"privacy": "Privacy"
|
||||
}
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
{
|
||||
"view_group": "View Group",
|
||||
|
||||
"details.title": "Group Details",
|
||||
"details.members": "Member List",
|
||||
"details.has_no_posts": "This group's members have not made any posts.",
|
||||
"details.latest_posts": "Latest Posts"
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user