Compare commits

..

15 Commits

Author SHA1 Message Date
Julian Lam
b85261e2bf why did the shrinkwrap file get deleted? 2014-09-17 09:43:55 -04:00
Julian Lam
4c289a63b9 updating shrinkwrap file 2014-09-16 10:27:37 -04:00
Julian Lam
5b3a2b951b Merge branch 'master' into v0.5.x 2014-09-16 10:26:16 -04:00
Julian Lam
d80d4df80d 0.5.0 2014-09-15 22:10:09 -04:00
Julian Lam
d721e96226 updated shrinkwrap file 2014-09-15 22:10:00 -04:00
Julian Lam
af4881c695 updating default config so the site title is shown 2014-09-15 22:09:41 -04:00
Julian Lam
fb6b6243f2 Merge branch 'master' into v0.5.x 2014-09-15 21:39:17 -04:00
Julian Lam
cc9b5d65fc 0.5.0-4 2014-08-28 21:05:15 -04:00
Julian Lam
2d7132d9d3 updated shrinkwrap file 2014-08-28 21:05:00 -04:00
Julian Lam
50d5be1b0e Merge branch 'master' into v0.5.x 2014-08-28 20:56:39 -04:00
Julian Lam
5424f63b9e 0.5.0-3 2014-08-20 18:06:04 -04:00
Julian Lam
f087acfe54 updated shrinkwrap file 2014-08-20 18:05:14 -04:00
Julian Lam
f2332b0af6 Merge branch 'master' into v0.5.x 2014-08-20 18:02:35 -04:00
Julian Lam
fcfa9c1733 Merge branch 'master' into v0.5.x 2014-08-05 11:42:40 -04:00
Julian Lam
4321cef397 added shrinkwrap file 2014-08-05 11:41:47 -04:00
1062 changed files with 18098 additions and 44095 deletions

View File

@@ -1,8 +1,4 @@
root = true root = true
[{*.js, *.css, *.tpl, *.json}] [*.js, *.css, *.tpl]
indent_style = tab indent_style = tab
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = false

14
.gitignore vendored
View File

@@ -3,7 +3,7 @@ node_modules/
sftp-config.json sftp-config.json
config.json config.json
public/src/nodebb.min.js public/src/nodebb.min.js
!src/views/config.json public/config.json
public/css/*.css public/css/*.css
*.sublime-project *.sublime-project
*.sublime-workspace *.sublime-workspace
@@ -17,18 +17,12 @@ provision.sh
.DS_Store .DS_Store
feeds/recent.rss feeds/recent.rss
logs/ # winston?
error.log
events.log
pidfile pidfile
# templates # templates
/public/templates /public/templates
/public/sounds /public/sounds
/public/uploads
# compiled files
/public/stylesheet.css
/public/admin.css
/public/nodebb.min.js
/public/nodebb.min.js.map

View File

@@ -1,18 +1,12 @@
services: services:
- redis-server - redis-server
before_install: before_install:
- "sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10" - npm i --production
- "echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list" - 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}"
- "sudo apt-get update"
- "sudo apt-get install mongodb-org-server"
- npm i --production
- node app --setup="{\"url\":\"http://127.0.0.1:4567/\",\"secret\":\"abcdef\",\"database\":\"mongo\",\"mongo:host\":\"127.0.0.1\",\"mongo:port\":27017,\"mongo:username\":\"\",\"mongo:password\":\"\",\"mongo:database\":0,\"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\":27017,\"database\":0}"
before_script:
- "until nc -z localhost 27017; do echo Waiting for MongoDB; sleep 1; done"
language: node_js language: node_js
node_js: node_js:
- "0.11" - "0.11"
- "0.10" - "0.10"
branches: branches:
only: only:
- master - master

View File

@@ -6,10 +6,8 @@ file_filter = public/language/<lang>/category.json
source_file = public/language/en_GB/category.json source_file = public/language/en_GB/category.json
source_lang = en_GB source_lang = en_GB
trans.ar = public/language/ar/category.json trans.ar = public/language/ar/category.json
trans.bn = public/language/bn/category.json
trans.cs = public/language/cs/category.json trans.cs = public/language/cs/category.json
trans.de = public/language/de/category.json trans.de = public/language/de/category.json
trans.el = public/language/el/category.json
trans.en_US = public/language/en_US/category.json trans.en_US = public/language/en_US/category.json
trans.en@pirate = public/language/en@pirate/category.json trans.en@pirate = public/language/en@pirate/category.json
trans.es = public/language/es/category.json trans.es = public/language/es/category.json
@@ -19,7 +17,6 @@ trans.fi = public/language/fi/category.json
trans.fr = public/language/fr/category.json trans.fr = public/language/fr/category.json
trans.he = public/language/he/category.json trans.he = public/language/he/category.json
trans.hu = public/language/hu/category.json trans.hu = public/language/hu/category.json
trans.id = public/language/id/category.json
trans.it = public/language/it/category.json trans.it = public/language/it/category.json
trans.ja = public/language/ja/category.json trans.ja = public/language/ja/category.json
trans.ko = public/language/ko/category.json trans.ko = public/language/ko/category.json
@@ -46,10 +43,8 @@ file_filter = public/language/<lang>/login.json
source_file = public/language/en_GB/login.json source_file = public/language/en_GB/login.json
source_lang = en_GB source_lang = en_GB
trans.ar = public/language/ar/login.json trans.ar = public/language/ar/login.json
trans.bn = public/language/bn/login.json
trans.cs = public/language/cs/login.json trans.cs = public/language/cs/login.json
trans.de = public/language/de/login.json trans.de = public/language/de/login.json
trans.el = public/language/el/login.json
trans.en_US = public/language/en_US/login.json trans.en_US = public/language/en_US/login.json
trans.en@pirate = public/language/en@pirate/login.json trans.en@pirate = public/language/en@pirate/login.json
trans.es = public/language/es/login.json trans.es = public/language/es/login.json
@@ -59,7 +54,6 @@ trans.fi = public/language/fi/login.json
trans.fr = public/language/fr/login.json trans.fr = public/language/fr/login.json
trans.he = public/language/he/login.json trans.he = public/language/he/login.json
trans.hu = public/language/hu/login.json trans.hu = public/language/hu/login.json
trans.id = public/language/id/login.json
trans.it = public/language/it/login.json trans.it = public/language/it/login.json
trans.ja = public/language/ja/login.json trans.ja = public/language/ja/login.json
trans.ko = public/language/ko/login.json trans.ko = public/language/ko/login.json
@@ -85,10 +79,8 @@ type = KEYVALUEJSON
source_file = public/language/en_GB/recent.json source_file = public/language/en_GB/recent.json
source_lang = en_GB source_lang = en_GB
trans.ar = public/language/ar/recent.json trans.ar = public/language/ar/recent.json
trans.bn = public/language/bn/recent.json
trans.cs = public/language/cs/recent.json trans.cs = public/language/cs/recent.json
trans.de = public/language/de/recent.json trans.de = public/language/de/recent.json
trans.el = public/language/el/recent.json
trans.en_US = public/language/en_US/recent.json trans.en_US = public/language/en_US/recent.json
trans.en@pirate = public/language/en@pirate/recent.json trans.en@pirate = public/language/en@pirate/recent.json
trans.es = public/language/es/recent.json trans.es = public/language/es/recent.json
@@ -98,7 +90,6 @@ trans.fi = public/language/fi/recent.json
trans.fr = public/language/fr/recent.json trans.fr = public/language/fr/recent.json
trans.he = public/language/he/recent.json trans.he = public/language/he/recent.json
trans.hu = public/language/hu/recent.json trans.hu = public/language/hu/recent.json
trans.id = public/language/id/recent.json
trans.it = public/language/it/recent.json trans.it = public/language/it/recent.json
trans.ja = public/language/ja/recent.json trans.ja = public/language/ja/recent.json
trans.ko = public/language/ko/recent.json trans.ko = public/language/ko/recent.json
@@ -124,10 +115,8 @@ type = KEYVALUEJSON
source_file = public/language/en_GB/unread.json source_file = public/language/en_GB/unread.json
source_lang = en_GB source_lang = en_GB
trans.ar = public/language/ar/unread.json trans.ar = public/language/ar/unread.json
trans.bn = public/language/bn/unread.json
trans.cs = public/language/cs/unread.json trans.cs = public/language/cs/unread.json
trans.de = public/language/de/unread.json trans.de = public/language/de/unread.json
trans.el = public/language/el/unread.json
trans.en_US = public/language/en_US/unread.json trans.en_US = public/language/en_US/unread.json
trans.en@pirate = public/language/en@pirate/unread.json trans.en@pirate = public/language/en@pirate/unread.json
trans.es = public/language/es/unread.json trans.es = public/language/es/unread.json
@@ -137,7 +126,6 @@ trans.fi = public/language/fi/unread.json
trans.fr = public/language/fr/unread.json trans.fr = public/language/fr/unread.json
trans.he = public/language/he/unread.json trans.he = public/language/he/unread.json
trans.hu = public/language/hu/unread.json trans.hu = public/language/hu/unread.json
trans.id = public/language/id/unread.json
trans.it = public/language/it/unread.json trans.it = public/language/it/unread.json
trans.ja = public/language/ja/unread.json trans.ja = public/language/ja/unread.json
trans.ko = public/language/ko/unread.json trans.ko = public/language/ko/unread.json
@@ -163,10 +151,8 @@ type = KEYVALUEJSON
source_file = public/language/en_GB/modules.json source_file = public/language/en_GB/modules.json
source_lang = en_GB source_lang = en_GB
trans.ar = public/language/ar/modules.json trans.ar = public/language/ar/modules.json
trans.bn = public/language/bn/modules.json
trans.cs = public/language/cs/modules.json trans.cs = public/language/cs/modules.json
trans.de = public/language/de/modules.json trans.de = public/language/de/modules.json
trans.el = public/language/el/modules.json
trans.en_US = public/language/en_US/modules.json trans.en_US = public/language/en_US/modules.json
trans.en@pirate = public/language/en@pirate/modules.json trans.en@pirate = public/language/en@pirate/modules.json
trans.es = public/language/es/modules.json trans.es = public/language/es/modules.json
@@ -176,7 +162,6 @@ trans.fi = public/language/fi/modules.json
trans.fr = public/language/fr/modules.json trans.fr = public/language/fr/modules.json
trans.he = public/language/he/modules.json trans.he = public/language/he/modules.json
trans.hu = public/language/hu/modules.json trans.hu = public/language/hu/modules.json
trans.id = public/language/id/modules.json
trans.it = public/language/it/modules.json trans.it = public/language/it/modules.json
trans.ja = public/language/ja/modules.json trans.ja = public/language/ja/modules.json
trans.ko = public/language/ko/modules.json trans.ko = public/language/ko/modules.json
@@ -202,10 +187,8 @@ type = KEYVALUEJSON
source_file = public/language/en_GB/register.json source_file = public/language/en_GB/register.json
source_lang = en_GB source_lang = en_GB
trans.ar = public/language/ar/register.json trans.ar = public/language/ar/register.json
trans.bn = public/language/bn/register.json
trans.cs = public/language/cs/register.json trans.cs = public/language/cs/register.json
trans.de = public/language/de/register.json trans.de = public/language/de/register.json
trans.el = public/language/el/register.json
trans.en_US = public/language/en_US/register.json trans.en_US = public/language/en_US/register.json
trans.en@pirate = public/language/en@pirate/register.json trans.en@pirate = public/language/en@pirate/register.json
trans.es = public/language/es/register.json trans.es = public/language/es/register.json
@@ -215,7 +198,6 @@ trans.fi = public/language/fi/register.json
trans.fr = public/language/fr/register.json trans.fr = public/language/fr/register.json
trans.he = public/language/he/register.json trans.he = public/language/he/register.json
trans.hu = public/language/hu/register.json trans.hu = public/language/hu/register.json
trans.id = public/language/id/register.json
trans.it = public/language/it/register.json trans.it = public/language/it/register.json
trans.ja = public/language/ja/register.json trans.ja = public/language/ja/register.json
trans.ko = public/language/ko/register.json trans.ko = public/language/ko/register.json
@@ -241,10 +223,8 @@ type = KEYVALUEJSON
source_file = public/language/en_GB/user.json source_file = public/language/en_GB/user.json
source_lang = en_GB source_lang = en_GB
trans.ar = public/language/ar/user.json trans.ar = public/language/ar/user.json
trans.bn = public/language/bn/user.json
trans.cs = public/language/cs/user.json trans.cs = public/language/cs/user.json
trans.de = public/language/de/user.json trans.de = public/language/de/user.json
trans.el = public/language/el/user.json
trans.en_US = public/language/en_US/user.json trans.en_US = public/language/en_US/user.json
trans.en@pirate = public/language/en@pirate/user.json trans.en@pirate = public/language/en@pirate/user.json
trans.es = public/language/es/user.json trans.es = public/language/es/user.json
@@ -254,7 +234,6 @@ trans.fi = public/language/fi/user.json
trans.fr = public/language/fr/user.json trans.fr = public/language/fr/user.json
trans.he = public/language/he/user.json trans.he = public/language/he/user.json
trans.hu = public/language/hu/user.json trans.hu = public/language/hu/user.json
trans.id = public/language/id/user.json
trans.it = public/language/it/user.json trans.it = public/language/it/user.json
trans.ja = public/language/ja/user.json trans.ja = public/language/ja/user.json
trans.ko = public/language/ko/user.json trans.ko = public/language/ko/user.json
@@ -280,10 +259,8 @@ type = KEYVALUEJSON
source_file = public/language/en_GB/global.json source_file = public/language/en_GB/global.json
source_lang = en_GB source_lang = en_GB
trans.ar = public/language/ar/global.json trans.ar = public/language/ar/global.json
trans.bn = public/language/bn/global.json
trans.cs = public/language/cs/global.json trans.cs = public/language/cs/global.json
trans.de = public/language/de/global.json trans.de = public/language/de/global.json
trans.el = public/language/el/global.json
trans.en_US = public/language/en_US/global.json trans.en_US = public/language/en_US/global.json
trans.en@pirate = public/language/en@pirate/global.json trans.en@pirate = public/language/en@pirate/global.json
trans.es = public/language/es/global.json trans.es = public/language/es/global.json
@@ -293,7 +270,6 @@ trans.fi = public/language/fi/global.json
trans.fr = public/language/fr/global.json trans.fr = public/language/fr/global.json
trans.he = public/language/he/global.json trans.he = public/language/he/global.json
trans.hu = public/language/hu/global.json trans.hu = public/language/hu/global.json
trans.id = public/language/id/global.json
trans.it = public/language/it/global.json trans.it = public/language/it/global.json
trans.ja = public/language/ja/global.json trans.ja = public/language/ja/global.json
trans.ko = public/language/ko/global.json trans.ko = public/language/ko/global.json
@@ -319,10 +295,8 @@ type = KEYVALUEJSON
source_file = public/language/en_GB/notifications.json source_file = public/language/en_GB/notifications.json
source_lang = en_GB source_lang = en_GB
trans.ar = public/language/ar/notifications.json trans.ar = public/language/ar/notifications.json
trans.bn = public/language/bn/notifications.json
trans.cs = public/language/cs/notifications.json trans.cs = public/language/cs/notifications.json
trans.de = public/language/de/notifications.json trans.de = public/language/de/notifications.json
trans.el = public/language/el/notifications.json
trans.en_US = public/language/en_US/notifications.json trans.en_US = public/language/en_US/notifications.json
trans.en@pirate = public/language/en@pirate/notifications.json trans.en@pirate = public/language/en@pirate/notifications.json
trans.es = public/language/es/notifications.json trans.es = public/language/es/notifications.json
@@ -332,7 +306,6 @@ trans.fi = public/language/fi/notifications.json
trans.fr = public/language/fr/notifications.json trans.fr = public/language/fr/notifications.json
trans.he = public/language/he/notifications.json trans.he = public/language/he/notifications.json
trans.hu = public/language/hu/notifications.json trans.hu = public/language/hu/notifications.json
trans.id = public/language/id/notifications.json
trans.it = public/language/it/notifications.json trans.it = public/language/it/notifications.json
trans.ja = public/language/ja/notifications.json trans.ja = public/language/ja/notifications.json
trans.ko = public/language/ko/notifications.json trans.ko = public/language/ko/notifications.json
@@ -358,10 +331,8 @@ type = KEYVALUEJSON
source_file = public/language/en_GB/reset_password.json source_file = public/language/en_GB/reset_password.json
source_lang = en_GB source_lang = en_GB
trans.ar = public/language/ar/reset_password.json trans.ar = public/language/ar/reset_password.json
trans.bn = public/language/bn/reset_password.json
trans.cs = public/language/cs/reset_password.json trans.cs = public/language/cs/reset_password.json
trans.de = public/language/de/reset_password.json trans.de = public/language/de/reset_password.json
trans.el = public/language/el/reset_password.json
trans.en_US = public/language/en_US/reset_password.json trans.en_US = public/language/en_US/reset_password.json
trans.en@pirate = public/language/en@pirate/reset_password.json trans.en@pirate = public/language/en@pirate/reset_password.json
trans.es = public/language/es/reset_password.json trans.es = public/language/es/reset_password.json
@@ -371,7 +342,6 @@ trans.fi = public/language/fi/reset_password.json
trans.fr = public/language/fr/reset_password.json trans.fr = public/language/fr/reset_password.json
trans.he = public/language/he/reset_password.json trans.he = public/language/he/reset_password.json
trans.hu = public/language/hu/reset_password.json trans.hu = public/language/hu/reset_password.json
trans.id = public/language/id/reset_password.json
trans.it = public/language/it/reset_password.json trans.it = public/language/it/reset_password.json
trans.ja = public/language/ja/reset_password.json trans.ja = public/language/ja/reset_password.json
trans.ko = public/language/ko/reset_password.json trans.ko = public/language/ko/reset_password.json
@@ -397,10 +367,8 @@ type = KEYVALUEJSON
source_file = public/language/en_GB/users.json source_file = public/language/en_GB/users.json
source_lang = en_GB source_lang = en_GB
trans.ar = public/language/ar/users.json trans.ar = public/language/ar/users.json
trans.bn = public/language/bn/users.json
trans.cs = public/language/cs/users.json trans.cs = public/language/cs/users.json
trans.de = public/language/de/users.json trans.de = public/language/de/users.json
trans.el = public/language/el/users.json
trans.en_US = public/language/en_US/users.json trans.en_US = public/language/en_US/users.json
trans.en@pirate = public/language/en@pirate/users.json trans.en@pirate = public/language/en@pirate/users.json
trans.es = public/language/es/users.json trans.es = public/language/es/users.json
@@ -410,7 +378,6 @@ trans.fi = public/language/fi/users.json
trans.fr = public/language/fr/users.json trans.fr = public/language/fr/users.json
trans.he = public/language/he/users.json trans.he = public/language/he/users.json
trans.hu = public/language/hu/users.json trans.hu = public/language/hu/users.json
trans.id = public/language/id/users.json
trans.it = public/language/it/users.json trans.it = public/language/it/users.json
trans.ja = public/language/ja/users.json trans.ja = public/language/ja/users.json
trans.ko = public/language/ko/users.json trans.ko = public/language/ko/users.json
@@ -436,10 +403,8 @@ type = KEYVALUEJSON
source_file = public/language/en_GB/language.json source_file = public/language/en_GB/language.json
source_lang = en_GB source_lang = en_GB
trans.ar = public/language/ar/language.json trans.ar = public/language/ar/language.json
trans.bn = public/language/bn/language.json
trans.cs = public/language/cs/language.json trans.cs = public/language/cs/language.json
trans.de = public/language/de/language.json trans.de = public/language/de/language.json
trans.el = public/language/el/language.json
trans.en_US = public/language/en_US/language.json trans.en_US = public/language/en_US/language.json
trans.en@pirate = public/language/en@pirate/language.json trans.en@pirate = public/language/en@pirate/language.json
trans.es = public/language/es/language.json trans.es = public/language/es/language.json
@@ -449,7 +414,6 @@ trans.fi = public/language/fi/language.json
trans.fr = public/language/fr/language.json trans.fr = public/language/fr/language.json
trans.he = public/language/he/language.json trans.he = public/language/he/language.json
trans.hu = public/language/hu/language.json trans.hu = public/language/hu/language.json
trans.id = public/language/id/language.json
trans.it = public/language/it/language.json trans.it = public/language/it/language.json
trans.ja = public/language/ja/language.json trans.ja = public/language/ja/language.json
trans.ko = public/language/ko/language.json trans.ko = public/language/ko/language.json
@@ -475,10 +439,8 @@ type = KEYVALUEJSON
source_file = public/language/en_GB/pages.json source_file = public/language/en_GB/pages.json
source_lang = en_GB source_lang = en_GB
trans.ar = public/language/ar/pages.json trans.ar = public/language/ar/pages.json
trans.bn = public/language/bn/pages.json
trans.cs = public/language/cs/pages.json trans.cs = public/language/cs/pages.json
trans.de = public/language/de/pages.json trans.de = public/language/de/pages.json
trans.el = public/language/el/pages.json
trans.en_US = public/language/en_US/pages.json trans.en_US = public/language/en_US/pages.json
trans.en@pirate = public/language/en@pirate/pages.json trans.en@pirate = public/language/en@pirate/pages.json
trans.es = public/language/es/pages.json trans.es = public/language/es/pages.json
@@ -488,7 +450,6 @@ trans.fi = public/language/fi/pages.json
trans.fr = public/language/fr/pages.json trans.fr = public/language/fr/pages.json
trans.he = public/language/he/pages.json trans.he = public/language/he/pages.json
trans.hu = public/language/hu/pages.json trans.hu = public/language/hu/pages.json
trans.id = public/language/id/pages.json
trans.it = public/language/it/pages.json trans.it = public/language/it/pages.json
trans.ja = public/language/ja/pages.json trans.ja = public/language/ja/pages.json
trans.ko = public/language/ko/pages.json trans.ko = public/language/ko/pages.json
@@ -514,10 +475,8 @@ type = KEYVALUEJSON
source_file = public/language/en_GB/topic.json source_file = public/language/en_GB/topic.json
source_lang = en_GB source_lang = en_GB
trans.ar = public/language/ar/topic.json trans.ar = public/language/ar/topic.json
trans.bn = public/language/bn/topic.json
trans.cs = public/language/cs/topic.json trans.cs = public/language/cs/topic.json
trans.de = public/language/de/topic.json trans.de = public/language/de/topic.json
trans.el = public/language/el/topic.json
trans.en_US = public/language/en_US/topic.json trans.en_US = public/language/en_US/topic.json
trans.en@pirate = public/language/en@pirate/topic.json trans.en@pirate = public/language/en@pirate/topic.json
trans.es = public/language/es/topic.json trans.es = public/language/es/topic.json
@@ -527,7 +486,6 @@ trans.fi = public/language/fi/topic.json
trans.fr = public/language/fr/topic.json trans.fr = public/language/fr/topic.json
trans.he = public/language/he/topic.json trans.he = public/language/he/topic.json
trans.hu = public/language/hu/topic.json trans.hu = public/language/hu/topic.json
trans.id = public/language/id/topic.json
trans.it = public/language/it/topic.json trans.it = public/language/it/topic.json
trans.ja = public/language/ja/topic.json trans.ja = public/language/ja/topic.json
trans.ko = public/language/ko/topic.json trans.ko = public/language/ko/topic.json
@@ -553,10 +511,8 @@ type = KEYVALUEJSON
source_file = public/language/en_GB/success.json source_file = public/language/en_GB/success.json
source_lang = en_GB source_lang = en_GB
trans.ar = public/language/ar/success.json trans.ar = public/language/ar/success.json
trans.bn = public/language/bn/success.json
trans.cs = public/language/cs/success.json trans.cs = public/language/cs/success.json
trans.de = public/language/de/success.json trans.de = public/language/de/success.json
trans.el = public/language/el/success.json
trans.en_US = public/language/en_US/success.json trans.en_US = public/language/en_US/success.json
trans.en@pirate = public/language/en@pirate/success.json trans.en@pirate = public/language/en@pirate/success.json
trans.es = public/language/es/success.json trans.es = public/language/es/success.json
@@ -566,7 +522,6 @@ trans.fi = public/language/fi/success.json
trans.fr = public/language/fr/success.json trans.fr = public/language/fr/success.json
trans.he = public/language/he/success.json trans.he = public/language/he/success.json
trans.hu = public/language/hu/success.json trans.hu = public/language/hu/success.json
trans.id = public/language/id/success.json
trans.it = public/language/it/success.json trans.it = public/language/it/success.json
trans.ja = public/language/ja/success.json trans.ja = public/language/ja/success.json
trans.ko = public/language/ko/success.json trans.ko = public/language/ko/success.json
@@ -592,10 +547,8 @@ type = KEYVALUEJSON
source_file = public/language/en_GB/error.json source_file = public/language/en_GB/error.json
source_lang = en_GB source_lang = en_GB
trans.ar = public/language/ar/error.json trans.ar = public/language/ar/error.json
trans.bn = public/language/bn/error.json
trans.cs = public/language/cs/error.json trans.cs = public/language/cs/error.json
trans.de = public/language/de/error.json trans.de = public/language/de/error.json
trans.el = public/language/el/error.json
trans.en_US = public/language/en_US/error.json trans.en_US = public/language/en_US/error.json
trans.en@pirate = public/language/en@pirate/error.json trans.en@pirate = public/language/en@pirate/error.json
trans.es = public/language/es/error.json trans.es = public/language/es/error.json
@@ -605,7 +558,6 @@ trans.fi = public/language/fi/error.json
trans.fr = public/language/fr/error.json trans.fr = public/language/fr/error.json
trans.he = public/language/he/error.json trans.he = public/language/he/error.json
trans.hu = public/language/hu/error.json trans.hu = public/language/hu/error.json
trans.id = public/language/id/error.json
trans.it = public/language/it/error.json trans.it = public/language/it/error.json
trans.ja = public/language/ja/error.json trans.ja = public/language/ja/error.json
trans.ko = public/language/ko/error.json trans.ko = public/language/ko/error.json
@@ -631,10 +583,8 @@ type = KEYVALUEJSON
source_file = public/language/en_GB/tags.json source_file = public/language/en_GB/tags.json
source_lang = en_GB source_lang = en_GB
trans.ar = public/language/ar/tags.json trans.ar = public/language/ar/tags.json
trans.bn = public/language/bn/tags.json
trans.cs = public/language/cs/tags.json trans.cs = public/language/cs/tags.json
trans.de = public/language/de/tags.json trans.de = public/language/de/tags.json
trans.el = public/language/el/tags.json
trans.en_US = public/language/en_US/tags.json trans.en_US = public/language/en_US/tags.json
trans.en@pirate = public/language/en@pirate/tags.json trans.en@pirate = public/language/en@pirate/tags.json
trans.es = public/language/es/tags.json trans.es = public/language/es/tags.json
@@ -644,7 +594,6 @@ trans.fi = public/language/fi/tags.json
trans.fr = public/language/fr/tags.json trans.fr = public/language/fr/tags.json
trans.he = public/language/he/tags.json trans.he = public/language/he/tags.json
trans.hu = public/language/hu/tags.json trans.hu = public/language/hu/tags.json
trans.id = public/language/id/tags.json
trans.it = public/language/it/tags.json trans.it = public/language/it/tags.json
trans.ja = public/language/ja/tags.json trans.ja = public/language/ja/tags.json
trans.ko = public/language/ko/tags.json trans.ko = public/language/ko/tags.json
@@ -670,10 +619,8 @@ type = KEYVALUEJSON
source_file = public/language/en_GB/email.json source_file = public/language/en_GB/email.json
source_lang = en_GB source_lang = en_GB
trans.ar = public/language/ar/email.json trans.ar = public/language/ar/email.json
trans.bn = public/language/bn/email.json
trans.cs = public/language/cs/email.json trans.cs = public/language/cs/email.json
trans.de = public/language/de/email.json trans.de = public/language/de/email.json
trans.el = public/language/el/email.json
trans.en_US = public/language/en_US/email.json trans.en_US = public/language/en_US/email.json
trans.en@pirate = public/language/en@pirate/email.json trans.en@pirate = public/language/en@pirate/email.json
trans.es = public/language/es/email.json trans.es = public/language/es/email.json
@@ -683,7 +630,6 @@ trans.fi = public/language/fi/email.json
trans.fr = public/language/fr/email.json trans.fr = public/language/fr/email.json
trans.he = public/language/he/email.json trans.he = public/language/he/email.json
trans.hu = public/language/hu/email.json trans.hu = public/language/hu/email.json
trans.id = public/language/id/email.json
trans.it = public/language/it/email.json trans.it = public/language/it/email.json
trans.ja = public/language/ja/email.json trans.ja = public/language/ja/email.json
trans.ko = public/language/ko/email.json trans.ko = public/language/ko/email.json
@@ -709,10 +655,8 @@ type = KEYVALUEJSON
source_file = public/language/en_GB/search.json source_file = public/language/en_GB/search.json
source_lang = en_GB source_lang = en_GB
trans.ar = public/language/ar/search.json trans.ar = public/language/ar/search.json
trans.bn = public/language/bn/search.json
trans.cs = public/language/cs/search.json trans.cs = public/language/cs/search.json
trans.de = public/language/de/search.json trans.de = public/language/de/search.json
trans.el = public/language/el/search.json
trans.en_US = public/language/en_US/search.json trans.en_US = public/language/en_US/search.json
trans.en@pirate = public/language/en@pirate/search.json trans.en@pirate = public/language/en@pirate/search.json
trans.es = public/language/es/search.json trans.es = public/language/es/search.json
@@ -722,7 +666,6 @@ trans.fi = public/language/fi/search.json
trans.fr = public/language/fr/search.json trans.fr = public/language/fr/search.json
trans.he = public/language/he/search.json trans.he = public/language/he/search.json
trans.hu = public/language/hu/search.json trans.hu = public/language/hu/search.json
trans.id = public/language/id/search.json
trans.it = public/language/it/search.json trans.it = public/language/it/search.json
trans.ja = public/language/ja/search.json trans.ja = public/language/ja/search.json
trans.ko = public/language/ko/search.json trans.ko = public/language/ko/search.json
@@ -748,10 +691,8 @@ type = KEYVALUEJSON
source_file = public/language/en_GB/groups.json source_file = public/language/en_GB/groups.json
source_lang = en_GB source_lang = en_GB
trans.ar = public/language/ar/groups.json trans.ar = public/language/ar/groups.json
trans.bn = public/language/bn/groups.json
trans.cs = public/language/cs/groups.json trans.cs = public/language/cs/groups.json
trans.de = public/language/de/groups.json trans.de = public/language/de/groups.json
trans.el = public/language/el/groups.json
trans.en_US = public/language/en_US/groups.json trans.en_US = public/language/en_US/groups.json
trans.en@pirate = public/language/en@pirate/groups.json trans.en@pirate = public/language/en@pirate/groups.json
trans.es = public/language/es/groups.json trans.es = public/language/es/groups.json
@@ -761,7 +702,6 @@ trans.fi = public/language/fi/groups.json
trans.fr = public/language/fr/groups.json trans.fr = public/language/fr/groups.json
trans.he = public/language/he/groups.json trans.he = public/language/he/groups.json
trans.hu = public/language/hu/groups.json trans.hu = public/language/hu/groups.json
trans.id = public/language/id/groups.json
trans.it = public/language/it/groups.json trans.it = public/language/it/groups.json
trans.ja = public/language/ja/groups.json trans.ja = public/language/ja/groups.json
trans.ko = public/language/ko/groups.json trans.ko = public/language/ko/groups.json

View File

@@ -1,57 +0,0 @@
# Submitting a Pull Request to NodeBB?
First of all, thank you! Please consider this [style guide](https://docs.nodebb.org/en/latest/contributing/style-guide.html) when submitting your changes. Also, please join our [community](https://community.nodebb.org) to meet other NodeBB developers and designers :)
## Contributor License Agreement
Thank you for considering contributing to NodeBB. **Before we can accept any pull requests, please take a moment to read and sign our [license agreement](https://www.clahub.com/agreements/NodeBB/NodeBB)**. In summary, signing this document means that 1) you own the code that you are contributing and 2) you give permission to NodeBB Inc. to license the code to others. This agreement applies to any repository under the NodeBB organization.
If you are writing contributions as part of employment from another company / individual, then your employer will need to sign a separate agreement. Please [contact us](mailto:accounts@nodebb.org) so that we can send this additional agreement to your employer.
# Having problems installing NodeBB?
Chances are somebody has run into this problem before. After consulting our [documentation](https://docs.nodebb.org/en/latest/installing/os.html), please head over to our [community support forum](https://community.nodebb.org) for advice.
# Issues & Bugs
Thanks for reporting an issue with NodeBB! Please follow these guidelines in order to streamline the debugging process. The more guidelines you follow, the easier it will be for us to reproduce your problem.
In general, if we can't reproduce it, we can't fix it!
> #### **Important**
> If you believe you have identified a security vulnerability with NodeBB, report it as soon as possible via email to **security@nodebb.org**.
> A member of the NodeBB security team will respond to the issue.
> Please do not post it to the public bug tracker.
## Try the latest version of NodeBB
There is a chance that the issue you are experiencing may have already been fixed.
## Provide the NodeBB version number and git hash
You can find the NodeBB version number in the Admin Control Panel (ACP), as well as the first line output to the shell when running NodeBB
``` plaintext
info: NodeBB v0.5.2-dev Copyright (C) 2013-2014 NodeBB Inc.
info: This program comes with ABSOLUTELY NO WARRANTY.
info: This is free software, and you are welcome to redistribute it under certain conditions.
info:
info: Time: Tue Oct 07 2014 20:25:20 GMT-0400 (EDT)
```
If you are running NodeBB via git, it is also helpful to let the maintainers know what commit hash you are on. To find the commit hash, execute the following command:
``` bash
$ cd /path/to/my/nodebb
$ git rev-parse HEAD
```
If you have downloaded the `.zip` or `.tar.gz` packages from GitHub (or elsewhere), please let us know.
## Attempt to use `git bisect`
If you have installed NodeBB via GitHub clone, are familiar with utilising git, and are willing to help us narrow down the specific commit that causes a bug, consider running `git bisect`.
A full guide can be found here: [Debugging with Git/Binary Search](http://git-scm.com/book/en/Git-Tools-Debugging-with-Git#Binary-Search)

15
NOTES.md Normal file
View 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.

View File

@@ -1,19 +1,15 @@
# <img alt="NodeBB" src="http://i.imgur.com/mYxPPtB.png" /> # <img alt="NodeBB" src="http://i.imgur.com/mYxPPtB.png" />
[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/NodeBB/NodeBB?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![Build Status](https://travis-ci.org/NodeBB/NodeBB.svg?branch=master)](https://travis-ci.org/NodeBB/NodeBB) [![Build Status](https://travis-ci.org/NodeBB/NodeBB.svg?branch=master)](https://travis-ci.org/NodeBB/NodeBB)
[![Dependency Status](https://david-dm.org/nodebb/nodebb.svg)](https://david-dm.org/nodebb/nodebb) [![Dependency Status](https://david-dm.org/nodebb/nodebb.svg)](https://david-dm.org/nodebb/nodebb)
[![Code Climate](https://codeclimate.com/github/NodeBB/NodeBB/badges/gpa.svg)](https://codeclimate.com/github/NodeBB/NodeBB) [![Code Climate](https://codeclimate.com/github/NodeBB/NodeBB/badges/gpa.svg)](https://codeclimate.com/github/NodeBB/NodeBB)
[![Documentation Status](https://readthedocs.org/projects/nodebb/badge/?version=latest)](https://readthedocs.org/projects/nodebb/?badge=latest) [![Documentation Status](https://readthedocs.org/projects/nodebb/badge/?version=latest)](https://readthedocs.org/projects/nodebb/?badge=latest)
**NodeBB Forum Software** is powered by Node.js and built on either a Redis or MongoDB 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. **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.
Additional functionality is enabled through the use of third-party plugins.
* [Get NodeBB](http://www.nodebb.org/ "NodeBB") * [Get NodeBB](http://www.nodebb.org/ "NodeBB")
* [Demo & Meta Discussion](http://community.nodebb.org) * [Demo & Meta Discussion](http://community.nodebb.org)
* [NodeBB Blog](http://blog.nodebb.org) * [NodeBB Blog](http://blog.nodebb.org)
* [Documentation & Installation Instructions](http://docs.nodebb.org) * [Documentation](http://docs.nodebb.org) - includes setup instructions for other platforms
* [Join us on IRC](https://kiwiirc.com/client/irc.freenode.net/nodebb) - #nodebb on Freenode * [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 us on Twitter](http://www.twitter.com/NodeBB/ "NodeBB Twitter")
* [Like us on Facebook](http://www.facebook.com/NodeBB/ "NodeBB Facebook") * [Like us on Facebook](http://www.facebook.com/NodeBB/ "NodeBB Facebook")

166
app.js
View File

@@ -17,6 +17,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
"use strict"; "use strict";
/*global require, global, process*/ /*global require, global, process*/
@@ -25,8 +26,6 @@ nconf.argv().env();
var fs = require('fs'), var fs = require('fs'),
os = require('os'), os = require('os'),
url = require('url'),
async = require('async'),
semver = require('semver'), semver = require('semver'),
winston = require('winston'), winston = require('winston'),
path = require('path'), path = require('path'),
@@ -38,14 +37,19 @@ global.env = process.env.NODE_ENV || 'production';
winston.remove(winston.transports.Console); winston.remove(winston.transports.Console);
winston.add(winston.transports.Console, { winston.add(winston.transports.Console, {
colorize: true, colorize: true
timestamp: function() {
var date = new Date();
return date.getDate() + '/' + (date.getMonth() + 1) + ' ' + date.toTimeString().substr(0,5) + ' [' + global.process.pid + ']';
},
level: global.env === 'production' ? 'info' : 'verbose'
}); });
winston.add(winston.transports.File, {
filename: 'logs/error.log',
level: 'error'
});
// TODO: remove once https://github.com/flatiron/winston/issues/280 is fixed
winston.err = function (err) {
winston.error(err.stack);
};
if(os.platform() === 'linux') { if(os.platform() === 'linux') {
require('child_process').exec('/usr/bin/which convert', function(err, stdout, stderr) { require('child_process').exec('/usr/bin/which convert', function(err, stdout, stderr) {
if(err || !stdout) { if(err || !stdout) {
@@ -54,13 +58,11 @@ if(os.platform() === 'linux') {
}); });
} }
if (!process.send) { // Log GNU copyright info along with server info
// If run using `node app`, 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-2014 NodeBB Inc.'); winston.info('This program comes with ABSOLUTELY NO WARRANTY.');
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('This is free software, and you are welcome to redistribute it under certain conditions.'); winston.info('');
winston.info('');
}
// Alternate configuration file support // Alternate configuration file support
var configFile = path.join(__dirname, '/config.json'), var configFile = path.join(__dirname, '/config.json'),
@@ -71,7 +73,7 @@ if (nconf.get('config')) {
} }
configExists = fs.existsSync(configFile); configExists = fs.existsSync(configFile);
if (!nconf.get('setup') && !nconf.get('install') && !nconf.get('upgrade') && !nconf.get('reset') && configExists) { if (!nconf.get('help') && !nconf.get('setup') && !nconf.get('install') && !nconf.get('upgrade') && !nconf.get('reset') && configExists) {
start(); start();
} else if (nconf.get('setup') || nconf.get('install') || !configExists) { } else if (nconf.get('setup') || nconf.get('install') || !configExists) {
setup(); setup();
@@ -79,6 +81,8 @@ if (!nconf.get('setup') && !nconf.get('install') && !nconf.get('upgrade') && !nc
upgrade(); upgrade();
} else if (nconf.get('reset')) { } else if (nconf.get('reset')) {
reset(); reset();
} else {
displayHelp();
} }
function loadConfig() { function loadConfig() {
@@ -89,49 +93,30 @@ function loadConfig() {
nconf.defaults({ nconf.defaults({
base_dir: __dirname, base_dir: __dirname,
themes_path: path.join(__dirname, 'node_modules'), themes_path: path.join(__dirname, 'node_modules'),
upload_url: '/uploads/',
views_dir: path.join(__dirname, 'public/templates') views_dir: path.join(__dirname, 'public/templates')
}); });
if (!nconf.get('isCluster')) {
nconf.set('isPrimary', 'true');
nconf.set('isCluster', 'false');
}
// Ensure themes_path is a full filepath // Ensure themes_path is a full filepath
nconf.set('themes_path', path.resolve(__dirname, nconf.get('themes_path'))); 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')); nconf.set('base_templates_path', path.join(nconf.get('themes_path'), 'nodebb-theme-vanilla/templates'));
} }
function start() { function start() {
loadConfig(); loadConfig();
// nconf defaults, if not set in config winston.info('Time: ' + new Date());
if (!nconf.get('upload_path')) { winston.info('Initializing NodeBB v' + pkg.version);
nconf.set('upload_path', '/public/uploads'); 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);
winston.info('* using themes stored in: ' + nconf.get('themes_path'));
if (process.env.NODE_ENV === 'development') {
winston.info('Base Configuration OK.');
} }
// Parse out the relative_url and other goodies from the configured URL
var urlObject = url.parse(nconf.get('url'));
var relativePath = urlObject.pathname !== '/' ? urlObject.pathname : '';
nconf.set('use_port', !!urlObject.port);
nconf.set('relative_path', relativePath);
nconf.set('port', urlObject.port || nconf.get('port') || nconf.get('PORT') || 4567);
nconf.set('upload_url', relativePath + '/uploads/');
if (nconf.get('isPrimary') === 'true') {
winston.info('Time: %s', (new Date()).toString());
winston.info('Initializing NodeBB v%s', pkg.version);
winston.verbose('* using configuration stored in: %s', configFile);
var host = nconf.get(nconf.get('database') + ':host'),
storeLocation = host ? 'at ' + host + (host.indexOf('/') === -1 ? ':' + nconf.get(nconf.get('database') + ':port') : '') : '';
winston.verbose('* using %s store %s', nconf.get('database'), storeLocation);
winston.verbose('* using themes stored in: %s', nconf.get('themes_path'));
}
var webserver = require('./src/webserver');
require('./src/database').init(function(err) { require('./src/database').init(function(err) {
if (err) { if (err) {
@@ -141,6 +126,7 @@ function start() {
var meta = require('./src/meta'); var meta = require('./src/meta');
meta.configs.init(function () { meta.configs.init(function () {
var templates = require('templates.js'), var templates = require('templates.js'),
webserver = require('./src/webserver'),
sockets = require('./src/socket.io'), sockets = require('./src/socket.io'),
plugins = require('./src/plugins'), plugins = require('./src/plugins'),
upgrade = require('./src/upgrade'); upgrade = require('./src/upgrade');
@@ -149,57 +135,20 @@ function start() {
upgrade.check(function(schema_ok) { upgrade.check(function(schema_ok) {
if (schema_ok || nconf.get('check-schema') === false) { if (schema_ok || nconf.get('check-schema') === false) {
webserver.init();
sockets.init(webserver.server); sockets.init(webserver.server);
plugins.init();
if (nconf.get('isPrimary') === 'true' && !nconf.get('jobsDisabled')) { nconf.set('url', nconf.get('base_url') + (nconf.get('use_port') ? ':' + nconf.get('port') : '') + nconf.get('relative_path'));
require('./src/notifications').init();
require('./src/user').startJobs();
}
async.waterfall([ plugins.ready(function() {
async.apply(meta.themes.setupPaths), webserver.init();
async.apply(plugins.ready),
async.apply(meta.templates.compile),
async.apply(webserver.listen)
], function(err) {
if (err) {
winston.error(err.stack);
process.exit();
}
if (process.send) {
process.send({
action: 'ready'
});
}
}); });
process.on('SIGTERM', shutdown); process.on('SIGTERM', shutdown);
process.on('SIGINT', shutdown); process.on('SIGINT', shutdown);
process.on('SIGHUP', restart); 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;
meta.js.hash = message.hash;
winston.verbose('[cluster] Client-side javascript and mapping propagated to worker %s', process.pid);
break;
case 'css-propagate':
meta.css.cache = message.cache;
meta.css.acpCache = message.acpCache;
meta.css.hash = message.hash;
winston.verbose('[cluster] Stylesheets propagated to worker %s', process.pid);
break;
}
});
process.on('uncaughtException', function(err) { process.on('uncaughtException', function(err) {
winston.error(err.stack); winston.error(err.message);
console.log(err.stack); console.log(err.stack);
meta.js.killMinifier(); meta.js.killMinifier();
@@ -207,7 +156,9 @@ function start() {
}); });
} else { } else {
winston.warn('Your NodeBB schema is out-of-date. Please run the following command to bring your dataset up to spec:'); winston.warn('Your NodeBB schema is out-of-date. Please run the following command to bring your dataset up to spec:');
winston.warn(' ./nodebb upgrade'); winston.warn(' node app --upgrade');
winston.warn('To ignore this error (not recommended):');
winston.warn(' node app --no-check-schema');
process.exit(); process.exit();
} }
}); });
@@ -264,7 +215,7 @@ function reset() {
process.exit(); process.exit();
} }
if (nconf.get('theme')) { if (nconf.get('themes')) {
resetThemes(); resetThemes();
} else if (nconf.get('plugin')) { } else if (nconf.get('plugin')) {
resetPlugin(nconf.get('plugin')); resetPlugin(nconf.get('plugin'));
@@ -279,16 +230,12 @@ function reset() {
if (!err) { if (!err) {
winston.info('[reset] Reset complete.'); winston.info('[reset] Reset complete.');
} else { } else {
winston.error('[reset] Errors were encountered while resetting your forum settings: %s', err.message); winston.error('[reset] Errors were encountered while resetting your forum settings: ' + err.message);
} }
process.exit(); process.exit();
}); });
} else { } else {
winston.warn('[reset] Nothing reset.'); winston.warn('[reset] Nothing reset.');
winston.info('Use ./nodebb reset {theme|plugins|widgets|settings|all}');
winston.info(' or');
winston.info('Use ./nodebb reset plugin="nodebb-plugin-pluginName"');
process.exit();
} }
}); });
} }
@@ -323,11 +270,16 @@ function resetThemes(callback) {
function resetPlugin(pluginId) { function resetPlugin(pluginId) {
var db = require('./src/database'); var db = require('./src/database');
db.setRemove('plugins:active', pluginId, function(err) { db.setRemove('plugins:active', pluginId, function(err, result) {
if (err) { if (err || result !== 1) {
winston.error('[reset] Could not disable plugin: %s encountered error %s', pluginId, err.message); 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 { } else {
winston.info('[reset] Plugin `%s` disabled', pluginId); winston.info('[reset] Plugin `' + pluginId + '` disabled');
} }
process.exit(); process.exit();
@@ -361,8 +313,6 @@ function shutdown(code) {
winston.info('[app] Shutdown (SIGTERM/SIGINT) Initialised.'); winston.info('[app] Shutdown (SIGTERM/SIGINT) Initialised.');
require('./src/database').close(); require('./src/database').close();
winston.info('[app] Database connection closed.'); winston.info('[app] Database connection closed.');
require('./src/webserver').server.close();
winston.info('[app] Web server closed to connections.');
winston.info('[app] Shutdown complete.'); winston.info('[app] Shutdown complete.');
process.exit(code || 0); process.exit(code || 0);
@@ -379,3 +329,15 @@ function restart() {
shutdown(1); shutdown(1);
} }
} }
function displayHelp() {
winston.info('Usage: node app [options] [arguments]');
winston.info(' [NODE_ENV=development | NODE_ENV=production] node app [--start] [arguments]');
winston.info('');
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(' --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)');
}

View File

@@ -1,43 +0,0 @@
'use strict';
var bcrypt = require('bcryptjs'),
async = require('async');
process.on('message', function(msg) {
if (msg.type === 'hash') {
hashPassword(msg.password, msg.rounds);
} else if (msg.type === 'compare') {
compare(msg.password, msg.hash);
}
});
function hashPassword(password, rounds) {
async.waterfall([
function(next) {
bcrypt.genSalt(parseInt(rounds, 10), next);
},
function(salt, next) {
bcrypt.hash(password, salt, next);
}
], function(err, hash) {
if (err) {
process.send({err: err.message});
return process.disconnect();
}
process.send({result: hash});
process.disconnect();
});
}
function compare(password, hash) {
bcrypt.compare(password, hash, function(err, res) {
if (err) {
process.send({err: err.message});
return process.disconnect();
}
process.send({result: res});
process.disconnect();
});
}

View File

@@ -2,7 +2,7 @@
{ {
"name": "Announcements", "name": "Announcements",
"description": "Announcements regarding our community", "description": "Announcements regarding our community",
"bgColor": "#fda34b", "bgColor": "#0059B2",
"color": "#fff", "color": "#fff",
"icon" : "fa-bullhorn", "icon" : "fa-bullhorn",
"order": 1 "order": 1
@@ -10,25 +10,89 @@
{ {
"name": "General Discussion", "name": "General Discussion",
"description": "A place to talk about whateeeever you want", "description": "A place to talk about whateeeever you want",
"bgColor": "#59b3d0", "bgColor": "#0059B2",
"color": "#fff", "color": "#fff",
"icon" : "fa-comments-o", "icon" : "fa-comment",
"order": 2 "order": 2
}, },
{
"name": "NodeBB Development",
"description": "NodeBB development news and announcements",
"bgColor": "#0059B2",
"color": "#fff",
"icon" : "fa-github",
"order": 3
},
{ {
"name": "Blogs", "name": "Blogs",
"description": "Blog posts from individual members", "description": "Blog posts from individual members",
"bgColor": "#86ba4b", "bgColor": "#0059B2",
"color": "#fff", "color": "#fff",
"icon" : "fa-newspaper-o", "icon" : "fa-pencil",
"order": 4 "order": 4
}, },
{ {
"name": "Comments & Feedback", "name": "Feature Requests",
"description": "Got a question? Ask away!", "description": "Got a feature request you'd like to see? Give us a shout here.",
"bgColor": "#e95c5a", "bgColor": "#ab1290",
"color": "#fff", "color": "#fff",
"icon" : "fa-question", "icon" : "fa-lightbulb-o",
"order": 3 "order": 5
},
{
"name": "Bug Reports",
"description": "Having trouble with NodeBB? Let us know...",
"bgColor": "#ab1290",
"color": "#fff",
"icon" : "fa-cogs",
"order": 6
},
{
"name": "NodeBB Plugins",
"description": "Enhance your NodeBB with plugins!",
"bgColor": "#ab1290",
"color": "#fff",
"icon" : "fa-plus-square",
"order": 7
},
{
"name": "NodeBB Link Exchange",
"description": "Link exchange",
"bgColor": "#ab1290",
"color": "#fff",
"icon" : "fa-exchange",
"order": 8
},
{
"name": "News",
"description": "News from around the world",
"bgColor": "#004C66",
"color": "#fff",
"icon" : "fa-globe",
"order": 9
},
{
"name": "Movies",
"description": "Discuss the latest movies here",
"bgColor": "#004C66",
"color": "#fff",
"icon" : "fa-film",
"order": 10
},
{
"name": "Games",
"description": "Discuss the latest games here",
"bgColor": "#004C66",
"color": "#fff",
"icon" : "fa-crosshairs",
"order": 11
},
{
"name": "Random",
"description": "Anything and (almost) everything welcome!",
"bgColor": "#004C66",
"color": "#fff",
"icon" : "fa-beer",
"order": 12
} }
] ]

View File

@@ -11,26 +11,10 @@
"field": "postDelay", "field": "postDelay",
"value": 10 "value": 10
}, },
{
"field": "initialPostDelay",
"value": 10
},
{
"field": "newbiePostDelay",
"value": 120
},
{
"field": "newbiePostDelayThreshold",
"value": 3
},
{ {
"field": "minimumPostLength", "field": "minimumPostLength",
"value": 8 "value": 8
}, },
{
"field": "maximumPostLength",
"value": 32767
},
{ {
"field": "allowGuestSearching", "field": "allowGuestSearching",
"value": 0 "value": 0
@@ -47,10 +31,6 @@
"field": "allowLocalLogin", "field": "allowLocalLogin",
"value": 1 "value": 1
}, },
{
"field": "allowAccountDelete",
"value": 1
},
{ {
"field": "allowFileUploads", "field": "allowFileUploads",
"value": 0 "value": 0
@@ -88,8 +68,8 @@
"value": 256 "value": 256
}, },
{ {
"field": "profileImageDimension", "field": "chatMessagesToDisplay",
"value": 128 "value": 50
}, },
{ {
"field": "requireEmailConfirmation", "field": "requireEmailConfirmation",

View File

@@ -12,7 +12,7 @@ function success(err, config, callback) {
return callback(new Error('aborted')); return callback(new Error('aborted'));
} }
var database = (config.redis || config.mongo) ? config.secondary_database : config.database; var database = (config.redis || config.mongo || config.level) ? config.secondary_database : config.database;
function dbQuestionsSuccess(err, databaseConfig) { function dbQuestionsSuccess(err, databaseConfig) {
if (!databaseConfig) { if (!databaseConfig) {
@@ -39,11 +39,15 @@ function success(err, config, callback) {
password: databaseConfig['mongo:password'], password: databaseConfig['mongo:password'],
database: databaseConfig['mongo:database'] database: databaseConfig['mongo:database']
}; };
} else if (database === 'level') {
config.level = {
database: databaseConfig['level:database']
};
} else { } else {
return callback(new Error('unknown database : ' + database)); return callback(new Error('unknown database : ' + database));
} }
var allQuestions = questions.redis.concat(questions.mongo); var allQuestions = questions.redis.concat(questions.mongo.concat(questions.level));
for(var x=0;x<allQuestions.length;x++) { for(var x=0;x<allQuestions.length;x++) {
delete config[allQuestions[x].name]; delete config[allQuestions[x].name];
} }
@@ -63,6 +67,12 @@ function success(err, config, callback) {
} else { } else {
prompt.get(questions.mongo, dbQuestionsSuccess); prompt.get(questions.mongo, dbQuestionsSuccess);
} }
} else if(database === 'level') {
if (config['level:database']) {
dbQuestionsSuccess(null, config);
} else {
prompt.get(questions.level, dbQuestionsSuccess);
}
} else { } else {
return callback(new Error('unknown database : ' + database)); return callback(new Error('unknown database : ' + database));
} }

301
loader.js
View File

@@ -1,240 +1,82 @@
'use strict'; "use strict";
var nconf = require('nconf'), var nconf = require('nconf'),
fs = require('fs'), fs = require('fs'),
url = require('url'),
path = require('path'),
fork = require('child_process').fork,
async = require('async'),
logrotate = require('logrotate-stream'),
pkg = require('./package.json'),
pidFilePath = __dirname + '/pidfile', pidFilePath = __dirname + '/pidfile',
output = logrotate({ file: __dirname + '/logs/output.log', size: '1m', keep: 3, compress: true }), output = fs.openSync(__dirname + '/logs/output.log', 'a'),
silent = process.env.NODE_ENV !== 'development', start = function() {
numProcs, var fork = require('child_process').fork,
workers = [], nbb_start = function() {
if (timesStarted > 3) {
Loader = { console.log('\n[loader] Experienced three start attempts in 10 seconds, most likely an error on startup. Halting.');
timesStarted: 0, return nbb_stop();
js: {
cache: undefined,
map: undefined
},
css: {
cache: undefined,
acpCache: undefined
}
};
Loader.init = function(callback) {
if (silent) {
console.log = function(value) {
output.write(value + '\n');
};
}
process.on('SIGHUP', Loader.restart);
process.on('SIGUSR2', Loader.reload);
process.on('SIGTERM', Loader.stop);
callback();
};
Loader.displayStartupMessages = function(callback) {
console.log('');
console.log('NodeBB v' + pkg.version + ' Copyright (C) 2013-2014 NodeBB Inc.');
console.log('This program comes with ABSOLUTELY NO WARRANTY.');
console.log('This is free software, and you are welcome to redistribute it under certain conditions.');
console.log('For the full license, please visit: http://www.gnu.org/copyleft/gpl.html');
console.log('');
callback();
};
Loader.addWorkerEvents = function(worker) {
worker.on('exit', function(code, signal) {
if (code !== 0) {
if (Loader.timesStarted < numProcs*3) {
Loader.timesStarted++;
if (Loader.crashTimer) {
clearTimeout(Loader.crashTimer);
} }
Loader.crashTimer = setTimeout(function() {
Loader.timesStarted = 0;
}, 10000);
} else {
console.log(numProcs*3 + ' restarts in 10 seconds, most likely an error on startup. Halting.');
process.exit();
}
}
console.log('[cluster] Child Process (' + worker.pid + ') has exited (code: ' + code + ', signal: ' + signal +')'); timesStarted++;
if (!(worker.suicide || code === 0)) { if (startTimer) {
console.log('[cluster] Spinning up another process...'); clearTimeout(startTimer);
}
startTimer = setTimeout(resetTimer, 1000*10);
forkWorker(worker.index, worker.isPrimary); nbb = fork('./app', process.argv.slice(2), {
} env: process.env
}); });
worker.on('message', function(message) { nbb.on('message', function(message) {
if (message && typeof message === 'object' && message.action) { if (message && typeof message === 'object' && message.action) {
switch (message.action) { if (message.action === 'restart') {
case 'ready': nbb_restart();
if (Loader.js.cache) { }
worker.send({
action: 'js-propagate',
cache: Loader.js.cache,
map: Loader.js.map,
hash: Loader.js.hash
});
} }
});
if (Loader.css.cache) { nbb.on('exit', function(code, signal) {
worker.send({ if (code) {
action: 'css-propagate', nbb_start();
cache: Loader.css.cache, } else {
acpCache: Loader.css.acpCache, nbb_stop();
hash: Loader.css.hash
});
} }
break; });
case 'restart': },
console.log('[cluster] Restarting...'); nbb_stop = function() {
Loader.restart(); if (startTimer) {
break; clearTimeout(startTimer);
case 'reload': }
console.log('[cluster] Reloading...');
Loader.reload();
break;
case 'js-propagate':
Loader.js.cache = message.cache;
Loader.js.map = message.map;
Loader.js.hash = message.hash;
Loader.notifyWorkers({ nbb.kill();
action: 'js-propagate', if (fs.existsSync(pidFilePath)) {
cache: message.cache, var pid = parseInt(fs.readFileSync(pidFilePath, { encoding: 'utf-8' }), 10);
map: message.map, if (process.pid === pid) {
hash: message.hash fs.unlinkSync(pidFilePath);
}, worker.pid); }
break; }
case 'css-propagate': },
Loader.css.cache = message.cache; nbb_restart = function() {
Loader.css.acpCache = message.acpCache; nbb.removeAllListeners('exit').on('exit', function() {
Loader.css.hash = message.hash; nbb_start();
});
nbb.kill();
},
resetTimer = function() {
clearTimeout(startTimer);
timesStarted = 0;
},
timesStarted = 0,
startTimer;
Loader.notifyWorkers({ process.on('SIGINT', nbb_stop);
action: 'css-propagate', process.on('SIGTERM', nbb_stop);
cache: message.cache, process.on('SIGHUP', nbb_restart);
acpCache: message.acpCache,
hash: message.hash
}, worker.pid);
break;
}
}
});
};
Loader.start = function(callback) { nbb_start();
numProcs = getPorts().length; },
console.log('Clustering enabled: Spinning up ' + numProcs + ' process(es).\n'); nbb;
for (var x=0; x<numProcs; ++x) { nconf.argv();
forkWorker(x, x === 0);
}
if (callback) {
callback();
}
};
function forkWorker(index, isPrimary) {
var ports = getPorts();
if(!ports[index]) {
return console.log('[cluster] invalid port for worker : ' + index + ' ports: ' + ports.length);
}
process.env.isPrimary = isPrimary;
process.env.isCluster = true;
process.env.port = ports[index];
var worker = fork('app.js', [], {
silent: silent,
env: process.env
});
worker.index = index;
worker.isPrimary = isPrimary;
workers[index] = worker;
Loader.addWorkerEvents(worker);
if (silent) {
var output = logrotate({ file: __dirname + '/logs/output.log', size: '1m', keep: 3, compress: true });
worker.stdout.pipe(output);
worker.stderr.pipe(output);
}
}
function getPorts() {
var urlObject = url.parse(nconf.get('url'));
var port = nconf.get('port') || nconf.get('PORT') || urlObject.port || 4567;
if (!Array.isArray(port)) {
port = [port];
}
return port;
}
Loader.restart = function() {
killWorkers();
Loader.start();
};
Loader.reload = function() {
workers.forEach(function(worker) {
worker.send({
action: 'reload'
});
});
};
Loader.stop = function() {
killWorkers();
// Clean up the pidfile
fs.unlinkSync(__dirname + '/pidfile');
};
function killWorkers() {
workers.forEach(function(worker) {
worker.suicide = true;
worker.kill();
});
}
Loader.notifyWorkers = function(msg, worker_pid) {
worker_pid = parseInt(worker_pid, 10);
workers.forEach(function(worker) {
if (parseInt(worker.pid, 10) !== worker_pid) {
try {
worker.send(msg);
} catch (e) {
console.log('[cluster/notifyWorkers] Failed to reach pid ' + worker_pid);
}
}
});
};
nconf.argv().file({
file: path.join(__dirname, '/config.json')
});
// Start the daemon!
if (nconf.get('daemon') !== false) { if (nconf.get('daemon') !== false) {
// Check for a still-active NodeBB process
if (fs.existsSync(pidFilePath)) { if (fs.existsSync(pidFilePath)) {
try { try {
var pid = fs.readFileSync(pidFilePath, { encoding: 'utf-8' }); var pid = fs.readFileSync(pidFilePath, { encoding: 'utf-8' });
@@ -245,20 +87,13 @@ if (nconf.get('daemon') !== false) {
} }
} }
// Daemonize and record new pid
require('daemon')({ require('daemon')({
stdout: process.stdout, stdout: output
stderr: process.stderr
}); });
fs.writeFile(__dirname + '/pidfile', process.pid); fs.writeFile(__dirname + '/pidfile', process.pid);
}
async.series([ start();
Loader.init, } else {
Loader.displayStartupMessages, start();
Loader.start }
], function(err) {
if (err) {
console.log('[loader] Error during startup: ' + err.message);
}
});

View File

@@ -8,42 +8,28 @@ var uglifyjs = require('uglify-js'),
crypto = require('crypto'), crypto = require('crypto'),
Minifier = { Minifier = {
js: {} js: {},
css: {}
}; };
/* Javascript */ /* Javascript */
Minifier.js.minify = function (scripts, minify, callback) { Minifier.js.minify = function (scripts, minify, callback) {
var options = {};
scripts = scripts.filter(function(file) { scripts = scripts.filter(function(file) {
return fs.existsSync(file); return fs.existsSync(file);
}); });
if (minify) { if (!minify) {
minifyScripts(scripts, function() { options.sourceMapURL = '/nodebb.min.js.map';
callback.apply(this, arguments); options.outSourceMap = 'nodebb.min.js.map';
}); options.mangle = false;
} else { options.compress = false;
concatenateScripts(scripts, callback); options.prefix = 1;
} }
};
process.on('message', function(payload) {
switch(payload.action) {
case 'js':
Minifier.js.minify(payload.scripts, payload.minify, function(minified) {
process.send({
type: 'end',
minified: minified
});
});
break;
}
});
function minifyScripts(scripts, callback) {
try { try {
var minified = uglifyjs.minify(scripts, { var minified = uglifyjs.minify(scripts, options),
compress: false
}),
hasher = crypto.createHash('md5'), hasher = crypto.createHash('md5'),
hash; hash;
@@ -55,26 +41,34 @@ function minifyScripts(scripts, callback) {
payload: hash.slice(0, 8) payload: hash.slice(0, 8)
}); });
callback(minified.code); callback({
js: minified.code,
map: minified.map
});
} catch(err) { } catch(err) {
process.send({ process.send({
type: 'error', type: 'error',
payload: err.message payload: err
}); });
} }
} };
function concatenateScripts(scripts, callback) { process.on('message', function(payload) {
async.map(scripts, fs.readFile, function(err, scripts) { switch(payload.action) {
if (err) { case 'js':
Minifier.js.minify(payload.scripts, payload.minify, function(data) {
process.stdout.write(data.js);
process.send({ process.send({
type: 'error', type: 'end',
payload: err payload: 'script'
}); });
}
scripts = scripts.join(require('os').EOL + ';'); process.stderr.write(data.map);
process.send({
callback(scripts); type: 'end',
}); payload: 'mapping'
} });
});
break;
}
});

View File

@@ -5,21 +5,21 @@
(function(module) { (function(module) {
'use strict'; 'use strict';
/*global require, before*/ /*global before*/
var path = require('path'), var utils = require('./../public/src/utils.js'),
path = require('path'),
nconf = require('nconf'), nconf = require('nconf'),
winston = require('winston'), winston = require('winston'),
errorText; errorText;
nconf.file({ file: path.join(__dirname, '../../config.json') }); nconf.file({ file: path.join(__dirname, '../config.json') });
nconf.defaults({ nconf.defaults({
base_dir: path.join(__dirname,'../..'), base_dir: path.join(__dirname,'..'),
themes_path: path.join(__dirname, '../../node_modules'), themes_path: path.join(__dirname, '../node_modules'),
upload_url: path.join(path.sep, '../../uploads', path.sep), upload_url: path.join(path.sep, '../uploads', path.sep),
views_dir: path.join(__dirname, '../../public/templates'), views_dir: path.join(__dirname, '../public/templates')
relative_path: ''
}); });
var dbType = nconf.get('database'), var dbType = nconf.get('database'),
@@ -29,23 +29,27 @@
if(!testDbConfig){ if(!testDbConfig){
errorText = 'test_database is not defined'; errorText = 'test_database is not defined';
winston.info( winston.info(
'\n===========================================================\n'+ "\n===========================================================\n"+
'Please, add parameters for test database in config.json\n'+ "Please, add parameters for test database in config.json\n"+
'For example (redis):\n'+ "For example (redis):\n"+
'"test_database": {' + '\n' + '"test_database": {' + '\n' +
' "host": "127.0.0.1",' + '\n' + ' "host": "127.0.0.1",' + '\n' +
' "port": "6379",' + '\n' + ' "port": "6379",' + '\n' +
' "password": "",' + '\n' + ' "password": "",' + '\n' +
' "database": "1"' + '\n' + ' "database": "1"' + '\n' +
'}\n'+ '}\n'+
' or (mongo):\n' + " or (mongo):\n" +
'"test_database": {' + '\n' + '"test_database": {' + '\n' +
' "host": "127.0.0.1",' + '\n' + ' "host": "127.0.0.1",' + '\n' +
' "port": "27017",' + '\n' + ' "port": "27017",' + '\n' +
' "password": "",' + '\n' + ' "password": "",' + '\n' +
' "database": "1"' + '\n' + ' "database": "1"' + '\n' +
'}\n'+ '}\n'+
'===========================================================' " or (level):\n" +
'"test_database": {' + '\n' +
' "database": "/path/to/database"' + '\n' +
'}\n'+
"==========================================================="
); );
winston.error(errorText); winston.error(errorText);
throw new Error(errorText); throw new Error(errorText);
@@ -62,8 +66,8 @@
nconf.set(dbType, testDbConfig); nconf.set(dbType, testDbConfig);
var db = require('../../src/database'), var db = require('../src/database'),
meta = require('../../src/meta'); meta = require('../src/meta');
before(function(done) { before(function(done) {
db.init(function(err) { db.init(function(err) {
@@ -78,12 +82,11 @@
meta.configs.init(function () { meta.configs.init(function () {
nconf.set('url', nconf.get('base_url') + (nconf.get('use_port') ? ':' + nconf.get('port') : '') + nconf.get('relative_path')); 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('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')); 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'), var webserver = require('../src/webserver'),
sockets = require('../../src/socket.io'); sockets = require('../src/socket.io');
sockets.init(webserver.server); sockets.init(webserver.server);
done(); done();

30
nodebb
View File

@@ -12,11 +12,10 @@ fi
function pidExists() { function pidExists() {
if [ -e "pidfile" ]; if [ -e "pidfile" ];
then then
if ps -p $(cat pidfile) > /dev/null kill -s 0 $(cat pidfile);
if [ !$? ];
then return 1; then return 1;
else else return 0;
rm ./pidfile;
return 0;
fi fi
else else
return 0; return 0;
@@ -29,8 +28,13 @@ case "$1" in
echo " \"./nodebb stop\" to stop the NodeBB server"; echo " \"./nodebb stop\" to stop the NodeBB server";
echo " \"./nodebb log\" to view server output"; echo " \"./nodebb log\" to view server output";
if [ -f "./logs/output.log" ]; # Preserve the last output log
then
mv ./logs/output.log ./logs/output.1.log;
fi;
# Start the loader daemon # Start the loader daemon
"$node" loader "$@" "$node" loader -d "$@"
;; ;;
stop) stop)
@@ -44,7 +48,7 @@ case "$1" in
fi fi
;; ;;
restart) reload|restart)
pidExists; pidExists;
if [ 0 -eq $? ]; if [ 0 -eq $? ];
then then
@@ -55,17 +59,6 @@ case "$1" in
fi fi
;; ;;
reload)
pidExists;
if [ 0 -eq $? ];
then
echo "NodeBB could not be reloaded, as a running instance could not be found.";
else
echo "Reloading NodeBB.";
kill -12 $(cat pidfile);
fi
;;
status) status)
pidExists; pidExists;
if [ 0 -eq $? ]; if [ 0 -eq $? ];
@@ -92,6 +85,7 @@ case "$1" in
npm i nodebb-theme-vanilla nodebb-theme-lavender nodebb-widget-essentials npm i nodebb-theme-vanilla nodebb-theme-lavender nodebb-widget-essentials
"$node" app --upgrade "$node" app --upgrade
touch package.json touch package.json
echo -e "\n\e[00;32mNodeBB Dependencies up-to-date!\e[00;00m";
;; ;;
setup) setup)
@@ -113,7 +107,7 @@ case "$1" in
echo "Launching NodeBB in \"development\" mode." echo "Launching NodeBB in \"development\" mode."
echo "To run the production build of NodeBB, please use \"forever\"." echo "To run the production build of NodeBB, please use \"forever\"."
echo "More Information: https://docs.nodebb.org/en/latest/running/index.html" echo "More Information: https://docs.nodebb.org/en/latest/running/index.html"
NODE_ENV=development supervisor -q --ignore public/templates,public/nodebb.min.js,public/nodebb.min.js.map --extensions 'node|js|tpl|less' -- app "$@" NODE_ENV=development supervisor -q --ignore public/templates --extensions 'node|js|tpl|less' -- app "$@"
;; ;;
*) *)

View File

@@ -1,122 +0,0 @@
@echo off
rem %1 action
rem %2 subaction
setlocal enabledelayedexpansion
2>nul call :CASE_%1
if ERRORLEVEL 1 call :DEFAULT_CASE
exit /B
:CASE_start
echo Starting NodeBB
echo "nodebb.bat stop" to stop the NodeBB server
echo "nodebb.bat log" to view server output
rem Start the loader daemon
node loader %*
goto END_CASE
:CASE_stop
call :pidexists
if %_result%==0 (
echo NodeBB is already stopped.
) else (
echo Stopping NodeBB. Goodbye!
rem Doing this forcefully is probably not the best method
taskkill /PID !_pid! /f>nul
)
goto END_CASE
:CASE_restart
echo Unsupported
goto END_CASE
:CASE_reload
echo Unsupported
goto END_CASE
:CASE_status
call :pidexists
if %_result%==0 (
echo NodeBB is not running
echo "nodebb.bat start" to launch the NodeBB server
) else (
echo NodeBB Running ^(pid !_pid!^)
echo "nodebb.bat stop" to stop the NodeBB server
echo "nodebb.bat log" to view server output
echo "nodebb.bat restart" to restart NodeBB
)
goto END_CASE
:CASE_log
cls
type .\logs\output.log
goto END_CASE
:CASE_upgrade
call npm install
call npm i nodebb-theme-vanilla nodebb-theme-lavender nodebb-widget-essentials
node app --upgrade
copy /b package.json +,,>nul
goto END_CASE
:CASE_setup
node app --setup %*
goto END_CASE
:CASE_reset
node app --reset --%2
goto END_CASE
:CASE_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
set NODE_ENV=development
node loader --no-daemon %*
goto END_CASE
:CASE_watch
echo Not supported
goto END_CASE
:DEFAULT_CASE
echo Welcome to NodeBB
echo Usage: nodebb.bat ^{start^|stop^|reload^|restart^|log^|setup^|reset^|upgrade^|dev^|watch^}
goto END_CASE
:END_CASE
endlocal
VER > NUL
goto :EOF
:pidexists
if exist %~dp0pidfile (
set /p _pid=<pidfile
for /f "usebackq" %%Z in (`tasklist /nh /fi "PID eq !_pid!"`) do (
if %%Z==INFO: (
del pidfile
set _result=0
) else (
set _result=1
)
)
) else (
set _result=0
)

2769
npm-shrinkwrap.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -2,7 +2,7 @@
"name": "nodebb", "name": "nodebb",
"license": "GPLv3 or later", "license": "GPLv3 or later",
"description": "NodeBB Forum", "description": "NodeBB Forum",
"version": "0.6.1", "version": "0.5.0",
"homepage": "http://www.nodebb.org", "homepage": "http://www.nodebb.org",
"repository": { "repository": {
"type": "git", "type": "git",
@@ -16,55 +16,49 @@
}, },
"dependencies": { "dependencies": {
"async": "~0.9.0", "async": "~0.9.0",
"bcryptjs": "~2.1.0", "bcryptjs": "~2.0.1",
"body-parser": "^1.9.0",
"compression": "^1.1.0",
"connect-ensure-login": "^0.1.1",
"connect-flash": "^0.1.1", "connect-flash": "^0.1.1",
"connect-multiparty": "^1.2.4", "cron": "~1.0.4",
"cookie-parser": "^1.3.3",
"cron": "^1.0.5",
"csurf": "^1.6.1",
"daemon": "~1.1.0", "daemon": "~1.1.0",
"express": "^4.9.5", "express": "4.6.1",
"express-session": "^1.8.2", "cookie-parser": "^1.0.1",
"gm": "1.17.0", "body-parser": "^1.0.1",
"gravatar": "^1.1.0", "serve-favicon": "^2.0.1",
"heapdump": "^0.3.0", "express-session": "^1.0.2",
"less": "^2.0.0", "csurf": "^1.1.0",
"logrotate-stream": "^0.2.3", "compression": "^1.0.1",
"connect-multiparty": "^1.0.1",
"morgan": "^1.0.0",
"gm": "1.16.0",
"gravatar": "1.0.6",
"less": "~1.7.3",
"mkdirp": "~0.5.0", "mkdirp": "~0.5.0",
"morgan": "^1.3.2", "nconf": "~0.6.7",
"nconf": "~0.7.1", "nodebb-plugin-dbsearch": "0.0.13",
"nodebb-plugin-dbsearch": "^0.1.0", "nodebb-plugin-markdown": "~0.5.0",
"nodebb-plugin-markdown": "^0.8.0", "nodebb-plugin-mentions": "~0.5.0",
"nodebb-plugin-mentions": "^0.9.0",
"nodebb-plugin-soundpack-default": "~0.1.1", "nodebb-plugin-soundpack-default": "~0.1.1",
"nodebb-plugin-spam-be-gone": "^0.4.0", "nodebb-theme-lavender": "~0.0.74",
"nodebb-theme-lavender": "^0.2.0", "nodebb-theme-vanilla": "~0.0.111",
"nodebb-theme-vanilla": "^0.2.0", "nodebb-widget-essentials": "~0.1.0",
"nodebb-widget-essentials": "~0.2.0", "npm": "^1.4.6",
"npm": "^2.1.4", "passport": "~0.2.0",
"passport": "^0.2.1",
"passport-local": "1.0.0", "passport-local": "1.0.0",
"prompt": "^0.2.14", "prompt": "~0.2.11",
"request": "^2.44.0", "request": "~2.38.0",
"rimraf": "~2.2.6", "rimraf": "~2.2.6",
"rss": "^1.0.0", "rss": "~0.3.2",
"semver": "^4.0.3", "semver": "~2.3.1",
"serve-favicon": "^2.1.5", "sitemap": "~0.7.3",
"sitemap": "^0.7.4", "socket.io": "~0.9.16",
"socket.io": "^1.2.1", "socket.io-wildcard": "~0.1.1",
"socket.io-client": "^1.2.1", "string": "~1.9.0",
"socket.io-redis": "^0.1.3",
"socketio-wildcard": "~0.1.1",
"string": "^3.0.0",
"templates.js": "^0.1.15",
"uglify-js": "git+https://github.com/julianlam/UglifyJS2.git", "uglify-js": "git+https://github.com/julianlam/UglifyJS2.git",
"underscore": "~1.7.0", "underscore": "~1.6.0",
"validator": "~3.28.0", "validator": "~3.16.1",
"winston": "^0.9.0", "winston": "~0.7.2",
"xregexp": "~2.0.0" "xregexp": "~2.0.0",
"templates.js": "0.0.13"
}, },
"devDependencies": { "devDependencies": {
"mocha": "~1.13.0" "mocha": "~1.13.0"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

View File

@@ -1,8 +1,7 @@
{ {
"new_topic_button": "موضوع جديد", "new_topic_button": "موضوع جديد",
"no_topics": "<strong>لا توجد مواضيع في هذه الفئة</strong>لم لا تحاول إنشاء موضوع؟<br />", "no_topics": "<strong>لا توجد مواضيع في هذه الفئة</strong>لماذا لا تحاول نشر موضوع؟<br />",
"browsing": "تصفح", "browsing": "تصفح",
"no_replies": "لم يرد أحد", "no_replies": "لم يرد أحد",
"share_this_category": "انشر هذه الفئة", "share_this_category": "انشر هذه الفئة"
"ignore": "تجاهل"
} }

View File

@@ -1,25 +1,20 @@
{ {
"password-reset-requested": "تم طلب إعادة تعيين كلمة السر - %1!", "password-reset-requested": "Password Reset Requested - %1!",
"welcome-to": "مرحبًا بك في %1", "welcome-to": "Welcome to %1",
"greeting_no_name": "مرحبًا", "greeting_no_name": "Hello",
"greeting_with_name": "مرحبًا بك يا %1", "greeting_with_name": "Hello %1",
"welcome.text1": "شكرًا على تسجيلك في %1!", "welcome.text1": "Thank you for registering with %1!",
"welcome.text2": "لتفعيل حسابك، نحتاج إلى التأكد من صحة عنوان البريد الإلكتروني الذي تسجلت به.", "welcome.text2": "To fully activate your account, we need to verify that you own the email address you registered with.",
"welcome.cta": "انقر هنا لتفعيل عنوان بريدك الإلكتروني", "welcome.cta": "Click here to confirm your email address",
"reset.text1": "لقد توصلنا بطلب إعادة تعيين كلمة السرالخاصة بك، ربما لكونك قد نسيتها, إن لم يكن الأمر كذلك، المرجو تجاهل هذه الرسالة.", "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": "لمواصلة طلب إعاة تعيين كلمة السر، المرجو تتبع هذا الرابط.", "reset.text2": "To continue with the password reset, please click on the following link:",
"reset.cta": "انقر هنا لإعادة تعيين كلمة السر الخاصة بك.", "reset.cta": "Click here to reset your password",
"digest.notifications": "لديك تنبيهات غير مقروءة من طرف %1:", "digest.notifications": "You have some unread notifications from %1:",
"digest.latest_topics": "آخر المستجدات من %1", "digest.latest_topics": "Latest topics from %1",
"digest.cta": "انقر هنا لمشاهدة %1", "digest.cta": "Click here to visit %1",
"digest.unsub.info": "تم إرسال هذا الإشعار بآخر المستجدات وفقا لخيارات تسجيلكم.", "digest.unsub.info": "This digest was sent to you due to your subscription settings.",
"digest.no_topics": "ليس هناك مواضيع نشيطة في %1 الماضي", "digest.unsub.cta": "Click here to alter those settings",
"notif.chat.subject": "هناك محادثة جديدة من %1", "digest.daily.no_topics": "There have been no active topics in the past day",
"notif.chat.cta": "انقر هنا لمتابعة المحادثة", "test.text1": "This is a test email to verify that the emailer is set up correctly for your NodeBB.",
"notif.chat.unsub.info": "تم إرسال هذا الإشعار بوجودة محادثة جديدة وفقا لخيارات تسجيلك.", "closing": "Thanks!"
"notif.post.cta": "Click here to read the full topic",
"notif.post.unsub.info": "This post notification was sent to you due to your subscription settings.",
"test.text1": "هذه رسالة تجريبية للتأكد من صحة إعدادت الرسائل الإلكترونية في منتدى NodeBB خاصتك.",
"unsub.cta": "انقر هنا لتغيير تلك الإعدادات",
"closing": "شكرًا لك!"
} }

View File

@@ -1,73 +1,56 @@
{ {
"invalid-data": "بيانات غير صالحة", "invalid-data": "بيانات غير صالحة",
"not-logged-in": "لم تقم بتسجيل الدخول", "not-logged-in": "لم تقم بتسجيل الدخول",
"account-locked": "تم إقفال حسابكم مؤقتًا.", "account-locked": "Your account has been locked temporarily",
"search-requires-login": "البحث في المنتدى يستلزم توفرك على حساب! المرجو تسجيل دخولك أو إنشاء حساب!", "search-requires-login": "Searching requires an account! Please login or register!",
"invalid-cid": "قائمة غير موجودة", "invalid-cid": "Invalid Category ID",
"invalid-tid": "موضوع غير متواجد", "invalid-tid": "Invalid Topic ID",
"invalid-pid": "رد غير موجود", "invalid-pid": "Invalid Post ID",
"invalid-uid": "مستخدم غير موجود", "invalid-uid": "Invalid User ID",
"invalid-username": "اسم المستخدم غير مقبول", "invalid-username": "اسم المستخدم غير مقبول",
"invalid-email": "البريد الاكتروني غير مقبول", "invalid-email": "البريد الاكتروني غير مقبول",
"invalid-title": "عنوان غير صحيح", "invalid-title": "Invalid title!",
"invalid-user-data": "بيانات المستخدم غير صحيحة", "invalid-user-data": "Invalid User Data",
"invalid-password": "كلمة السر غير مقبولة", "invalid-password": "كلمة السر غير مقبولة",
"invalid-username-or-password": "المرجود تحديد اسم مستخدم و كلمة مرور", "invalid-pagination-value": "Invalid pagination value",
"invalid-search-term": "كلمة البحث غير صحيحة", "username-taken": "اسم المستخدم ماخوذ",
"invalid-pagination-value": "رقم الصفحة غير موجود", "email-taken": "البريد الالكتروني ماخوذ",
"username-taken": "اسم المستخدم مأخوذ", "email-not-confirmed": "Your email is not confirmed, please click here to confirm your email.",
"email-taken": "البريد الالكتروني مأخوذ", "username-too-short": "Username too short",
"email-not-confirmed": "عنوان بريدك الإلكتروني غير مفعل بعد. انقر هنا لتفعيله من فضلك.",
"email-not-confirmed-chat": "You are unable to chat until your email is confirmed",
"username-too-short": "اسم المستخدم قصير.",
"username-too-long": "اسم المستخدم طويل",
"user-banned": "المستخدم محظور", "user-banned": "المستخدم محظور",
"user-too-new": "عذرًا، يجب الانتظار %1 ثواني قبل إضافة ردك الأول.", "no-category": "Category doesn't exist",
"no-category": "قائمة غير موجودة", "no-topic": "Topic doesn't exist",
"no-topic": "موضوع غير موجود", "no-post": "Post doesn't exist",
"no-post": "رد غير موجود", "no-group": "Group doesn't exist",
"no-group": "مجموعة غير موجودة", "no-user": "المستخدم لا يوجد",
"no-user": "اسم مستخدم غير موجود", "no-teaser": "Teaser doesn't exist",
"no-teaser": "مقتطف غير موجود", "no-privileges": "You don't have enough privileges for this action.",
"no-privileges": "لاتملك الصلاحيات اللازمة للقيام بهذه العملية", "no-emailers-configured": "No email plugins were loaded, so a test email could not be sent",
"no-emailers-configured": "لا يمكن إرسال رسالة إلكترونية تجريبية لعدم وجود قوالب خاصة بالرسائل الإلكترونية،", "category-disabled": "Category disabled",
"category-disabled": "قائمة معطلة",
"topic-locked": "الموضوع مقفول", "topic-locked": "الموضوع مقفول",
"still-uploading": "الرجاء انتظار الرفع", "still-uploading": "الرجاء انتظار الرفع",
"content-too-short": "المرجو إدخال موضوع أطول من هذا. يجب أن تتوفر المواضيع على %1 حروف على الأقل.", "content-too-short": "Please enter a longer post. At least %1 characters.",
"title-too-short": "المرجو إدخال عنوان أطول من هذا. يجب أن تتوفر العناوين على %1 حروف على الأقل.", "title-too-short": "Please enter a longer title. At least %1 characters.",
"title-too-long": "المرجو إدخال عنوان أقصر من هذا. يجب ألا تتجاوز العناوين %1 حرفًا.", "title-too-long": "Please enter a shorter title. Titles can't be longer than %1 characters.",
"too-many-posts": "يمكنك إنشاء المواضيع بمعدل موضوع واحد كل %1 ثانية - المرجو الانتظار قليلا.", "too-many-posts": "You can only post every %1 seconds.",
"too-many-posts-newbie": "بصفتك مستخدمًا جديدًا، يمكنك إنشاء المواضيع بمعدل موضوع واحد كل %1 ثانية حتى تحصل على سمعة %2 - المرجو الانتظار قليلا.", "file-too-big": "Maximum allowed file size is %1 kbs",
"file-too-big": "حجم الملفات الأقصى المسموح به هو %1 كب - المرجو رفع ملف أقل حجمًا", "cant-vote-self-post": "You cannot vote for your own post",
"cant-vote-self-post": "لايمكنك التصويت لردك", "already-favourited": "You already favourited this post",
"already-favourited": "لقد سبق وأضفت هذا الرد إلى المفضلة", "already-unfavourited": "You already unfavourited this post",
"already-unfavourited": "لقد سبق وحذفت هذا الرد من المفضلة", "cant-ban-other-admins": "You can't ban other admins!",
"cant-ban-other-admins": "لايمكن حظر مدبر نظام آخر.", "invalid-image-type": "نوع الصورة ممنوع",
"invalid-image-type": "Invalid image type. Allowed types are: %1", "group-name-too-short": "Group name too short",
"invalid-image-extension": "Invalid image extension", "group-already-exists": "Group already exists",
"group-name-too-short": "اسم المجموعة قصير", "group-name-change-not-allowed": "Group name change not allowed",
"group-already-exists": "المجموعة موجودة مسبقا", "post-already-deleted": "Post already deleted",
"group-name-change-not-allowed": "لايسمح بتغيير أسماء المجموعات", "post-already-restored": "Post already restored",
"group-already-member": "You are already part of this group", "topic-already-deleted": "Topic already deleted",
"group-needs-owner": "This group requires at least one owner", "topic-already-restored": "Topic already restored",
"post-already-deleted": "سبق وتم حذف هذا الرد", "topic-thumbnails-are-disabled": "Topic thumbnails are disabled.",
"post-already-restored": "سبق وتم إلغاء حذف هذا الرد", "invalid-file": "Invalid File",
"topic-already-deleted": "سبق وتم حذف هذا الموضوع", "uploads-are-disabled": "Uploads are disabled",
"topic-already-restored": "سبق وتم إلغاء حذف هذا الرد",
"topic-thumbnails-are-disabled": "الصور المصغرة غير مفعلة.",
"invalid-file": "ملف غير مقبول",
"uploads-are-disabled": "رفع الملفات غير مفعل",
"upload-error": "مشكلة في الرفع: 1%", "upload-error": "مشكلة في الرفع: 1%",
"signature-too-long": "عذرا، توقيعك يجب ألا يتجاوز %1 حرفًا", "signature-too-long": "Signature can't be longer than %1 characters!",
"cant-chat-with-yourself": "لايمكنك فتح محادثة مع نفسك", "cant-chat-with-yourself": "You can't chat with yourself!",
"chat-restricted": "هذا المستخدم عطل المحادثات الواردة عليه. يجب أن يتبعك حتى تتمكن من فتح محادثة معه.", "not-enough-reputation-to-downvote": "You do not have enough reputation to downvote this post"
"too-many-messages": "You have sent too many messages, please wait awhile.",
"reputation-system-disabled": "نظام السمعة معطل",
"downvoting-disabled": "التصويتات السلبية معطلة",
"not-enough-reputation-to-downvote": "ليس لديك سمعة تكفي لإضافة صوت سلبي لهذا الموضوع",
"not-enough-reputation-to-flag": "ليس لديك سمعة تكفي للإشعار بموضوع مخل",
"reload-failed": "المنتدى واجه مشكلة أثناء إعادة التحميل: \"%1\". سيواصل المنتدى خدمة العملاء السابقين لكن يجب عليك إلغاء أي تغيير قمت به قبل إعادة التحميل.",
"registration-error": "حدث خطأ أثناء التسجيل",
"parse-error": "Something went wrong while parsing server response"
} }

View File

@@ -3,79 +3,73 @@
"search": "بحث", "search": "بحث",
"buttons.close": "أغلق", "buttons.close": "أغلق",
"403.title": "غير مسموح بالدخول", "403.title": "غير مسموح بالدخول",
"403.message": "You seem to have stumbled upon a page that you do not have access to.", "403.message": "يبدو أنك قد تعثر على الصفحة التي لم يكن لديك الوصول إليها. ربما يجب عليك <a href='/login'> تسجيل الدخول </a> ",
"403.login": "Perhaps you should <a href='%1/login'>try logging in</a>?",
"404.title": "لم يتم العثور", "404.title": "لم يتم العثور",
"404.message": "You seem to have stumbled upon a page that does not exist. Return to the <a href='%1/'>home page</a>.", "404.message": "يبدو أنك قد تعثرت على صفحة غير موجودة. عودة إلى الصفحة الرئيسية.",
"500.title": "خطأ داخلي.", "500.title": "خطأ داخلي.",
"500.message": "عفوا! يبدو وكأنه شيء ذهب على نحو خاطئ!", "500.message": "عفوا! يبدو وكأنه شيء ذهب على نحو خاطئ!",
"register": "تسجيل", "register": "تسجيل",
"login": "دخول", "login": "دخول",
"please_log_in": "المرجو تسجيل الدخول", "please_log_in": "Please Log In",
"logout": "تسجيل الخروج", "logout": "تسجيل الخروج",
"posting_restriction_info": "إضافة مشاركات جديد حكر على الأعضاء المسجلين، انقر هنا لتسجيل الدخول.", "posting_restriction_info": "Posting is currently restricted to registered members only, click here to log in.",
"welcome_back": "مرحبًا بعودتك", "welcome_back": "Welcome Back",
"you_have_successfully_logged_in": "تم سجيل الدخول بنجاح", "you_have_successfully_logged_in": "You have successfully logged in",
"save_changes": "حفظ التغييرات", "save_changes": "حفظ التغييرات",
"close": "أغلق", "close": "أغلق",
"pagination": "الصفحات", "pagination": "Pagination",
"pagination.out_of": "%1 من %2", "pagination.out_of": "%1 out of %2",
"pagination.enter_index": "أدخل الرقم التسلسلي", "pagination.enter_index": "Enter index",
"header.admin": دبر نظام", "header.admin": شرف",
"header.recent": "حديث", "header.recent": "حديث",
"header.unread": "غير مقروء", "header.unread": "غير مقروء",
"header.tags": "وسم", "header.tags": "Tags",
"header.popular": "الأكثر شهرة", "header.popular": "Popular",
"header.users": "المستخدمين", "header.users": "المستخدمين",
"header.groups": "Groups", "header.chats": "Chats",
"header.chats": "المحادثات", "header.notifications": "Notifications",
"header.notifications": "التنبيهات",
"header.search": "بحث", "header.search": "بحث",
"header.profile": "ملف", "header.profile": "ملف",
"notifications.loading": "تحميل التبليغات", "notifications.loading": "تحميل التبليغات",
"chats.loading": "تحميل الدردشات", "chats.loading": "تحميل الدردشات",
"motd.welcome": "مرحبا بكم NodeBB، منصة مناقشة المستقبل", "motd.welcome": "مرحبا بكم NodeBB، منصة مناقشة المستقبل",
"previouspage": "الصفحة السابقة", "previouspage": "Previous Page",
"nextpage": "الصفحة التالية", "nextpage": "Next Page",
"alert.success": "نجاح", "alert.success": "Success",
"alert.error": "خطأ", "alert.error": "Error",
"alert.banned": "محظور", "alert.banned": "Banned",
"alert.banned.message": "لقد تم حظر حسابك. سيتم تسجيل الخروج.", "alert.banned.message": "You have just been banned, you will now be logged out.",
"alert.unfollow": "أنت لا تتابع %1 بعد الآن!", "alert.unfollow": "You are no longer following %1!",
"alert.follow": "أنت الآن تتابع %1!", "alert.follow": "You are now following %1!",
"online": "المتواجدون حاليًّا", "online": "Online",
"users": "الأعضاء", "users": "Users",
"topics": "المواضيع", "topics": "Topics",
"posts": "المشاركات", "posts": "Posts",
"views": "المشاهدات", "views": "Views",
"reputation": "السمعة", "reputation": "Reputation",
"read_more": "اقرأ المزيد", "read_more": "read more",
"posted_ago_by_guest": "كتب %1 من طرف زائر", "posted_ago_by_guest": "posted %1 by Guest",
"posted_ago_by": "كتب %1 من طرف %2", "posted_ago_by": "posted %1 by %2",
"posted_ago": "كتب %1", "posted_ago": "posted %1",
"posted_in_ago_by_guest": "كتب في %1 %2 من طرف زائر", "posted_in_ago_by_guest": "posted in %1 %2 by Guest",
"posted_in_ago_by": "كتب في %1 %2 من طرف %3", "posted_in_ago_by": "posted in %1 %2 by %3",
"posted_in_ago": "كتب في %1 %2", "posted_in_ago": "posted in %1 %2",
"replied_ago": "رد %1", "replied_ago": "replied %1",
"user_posted_ago": "%1 كتب %2", "user_posted_ago": "%1 posted %2",
"guest_posted_ago": "كتب زائر %1", "guest_posted_ago": "Guest posted %1",
"last_edited_by_ago": "آخر تعديل من طرف %1 %2", "last_edited_by_ago": "last edited by %1 %2",
"norecentposts": "لاوجود لمشاركات جديدة", "norecentposts": "No Recent Posts",
"norecenttopics": "لاوجود لمواضيع جديدة", "norecenttopics": "No Recent Topics",
"recentposts": "آخر المشاركات", "recentposts": "Recent Posts",
"recentips": "آخر عناوين ال IP التي سجلت الدخول", "recentips": "Recently Logged In IPs",
"away": "غير متواجد", "away": "Away",
"dnd": "المرجو عدم الإزعاج", "dnd": "Do not Disturb",
"invisible": "مخفي", "invisible": "Invisible",
"offline": "غير متصل", "offline": "Offline",
"email": "عنوان البريد الإلكتروني", "email": "Email",
"language": "اللغة", "language": "Language",
"guest": "زائر", "guest": "Guest",
"guests": "الزوار", "guests": "Guests",
"updated.title": "تم تحديث المنتدى", "updated.title": "Forum Updated",
"updated.message": "لقد تم تحديث المنتدى إلى آخر نسخة للتو. المرجو إعادة تحميل الصفحة.", "updated.message": "This forum has just been updated to the latest version. Click here to refresh the page."
"privacy": "الخصوصية",
"follow": "Follow",
"unfollow": "Unfollow",
"delete_all": "حذف الكل"
} }

View File

@@ -1,21 +1,7 @@
{ {
"groups": "المجموعات", "view_group": "View Group",
"view_group": "معاينة المجموعة", "details.title": "Group Details",
"owner": "Group Owner", "details.members": "Member List",
"new_group": "Create New Group", "details.has_no_posts": "This group's members have not made any posts.",
"no_groups_found": "There are no groups to see", "details.latest_posts": "Latest Posts"
"cover-instructions": "Drag and Drop a photo, drag to position, and hit <strong>Save</strong>",
"cover-change": "Change",
"cover-save": "Save",
"cover-saving": "Saving",
"details.title": "تفاصيل المجموعة",
"details.members": "لائحة الأعضاء",
"details.pending": "Pending Members",
"details.has_no_posts": "أعضاء هذه المجموعة لم يضيفوا أية مشاركة",
"details.latest_posts": "آخر المشاركات",
"details.private": "Private Group",
"details.public": "Public Group",
"details.owner_options": "Group Administration",
"event.updated": "Group details have been updated",
"event.deleted": "The group \"%1\" has been deleted"
} }

View File

@@ -1,9 +1,9 @@
{ {
"username": "اسم المستخدم / عنوان البريد الإلكتروني", "username": "Username / Email",
"remember_me": "تذكرني؟", "remember_me": "تذكرني؟",
"forgot_password": "نسيت كلمة المرور؟", "forgot_password": "نسيت كلمة المرور؟",
"alternative_logins": "تسجيلات الدخول البديلة", "alternative_logins": "تسجيلات الدخول البديلة",
"failed_login_attempt": "فشلت محاولة تسجيل الدخول، يرجى المحاولة مرة أخرى.", "failed_login_attempt": "فشلت محاولة تسجيل الدخول، يرجى المحاولة مرة أخرى.",
"login_successful": "قمت بتسجيل الدخول بنجاح!", "login_successful": "قمت بتسجيل الدخول بنجاح!",
"dont_have_account": "لم تفتح حسابك بعد؟" "dont_have_account": "Don't have an account?"
} }

View File

@@ -1,21 +1,18 @@
{ {
"chat.chatting_with": "الدردشة مع <span id=\"chat-with-name\"></span>", "chat.chatting_with": "الدردشة مع <span id=\"chat-with-name\"></span>",
"chat.placeholder": "أكتب رسالة دردشة هنا، اضغط ENTER للإرسال", "chat.placeholder": "Type chat message here, press enter to send",
"chat.send": "أرسل", "chat.send": "أرسل",
"chat.no_active": "لا يوجد لديك دردشات نشطة.", "chat.no_active": "لا يوجد لديك دردشات نشطة.",
"chat.user_typing": "%1 يكتب رسالة...", "chat.user_typing": "%1 is typing ...",
"chat.user_has_messaged_you": "%1 أرسل لك رسالة.", "chat.user_has_messaged_you": "%1 has messaged you.",
"chat.see_all": "معاينة كل الدردشات", "chat.see_all": "See all Chats",
"chat.no-messages": "المرجو اختيار مرسل إليه لمعاينة تاريخ الدردشات", "chat.no-messages": "Please select a recipient to view chat message history",
"chat.recent-chats": "آخر الدردشات", "chat.recent-chats": "Recent Chats",
"chat.contacts": "الأصدقاء", "chat.contacts": "Contacts",
"chat.message-history": "تاريخ الرسائل", "chat.message-history": "Message History",
"chat.pop-out": "افتح الدردشة في نافذة خاصة", "chat.pop-out": "Pop out chat",
"chat.maximize": "تكبير", "chat.maximize": "Maximize",
"chat.seven_days": "7 أيام", "composer.user_said_in": "%1 said in %2:",
"chat.thirty_days": "30 يومًا", "composer.user_said": "%1 said:",
"chat.three_months": "3 أشهر", "composer.discard": "Are you sure you wish to discard this post?"
"composer.user_said_in": "%1 كتب في %2",
"composer.user_said": "%1 كتب:",
"composer.discard": "هل أنت متأكد أنك تريد التخلي عن التغييرات؟"
} }

View File

@@ -1,27 +1,23 @@
{ {
"title": "تنبيهات", "title": "إعلام",
"no_notifs": "ليس لديك أية تنبيهات جديدة", "no_notifs": "You have no new notifications",
"see_all": "معاينة كل التنبيهات", "see_all": "See all Notifications",
"back_to_home": "عودة إلى %1", "back_to_home": "Back to %1",
"outgoing_link": "رابط خارجي", "outgoing_link": "رابط خارجي",
"outgoing_link_message": "أنت تغادر %1 حاليا.", "outgoing_link_message": "You are now leaving %1.",
"continue_to": "استمر إلى %1", "continue_to": "Continue to %1",
"return_to": "عودة إى %1", "return_to": "Return to %1",
"new_notification": "تنبيه جديد", "new_notification": "New Notification",
"you_have_unread_notifications": "لديك تنبيهات غير مقروءة.", "you_have_unread_notifications": "You have unread notifications.",
"new_message_from": "رسالة جديدة من <strong>%1</strong>", "new_message_from": "New message from <strong>%1</strong>",
"upvoted_your_post_in": "<strong>%1</strong> أضاف صوتًا إيجابيا إلى مشاركتك في <strong>%2</strong>.", "upvoted_your_post": "<strong>%1</strong> has upvoted your post.",
"moved_your_post": "<strong>%1</strong> نقل مشاركتك.", "favourited_your_post": "<strong>%1</strong> has favourited your post.",
"moved_your_topic": "<strong>%1</strong> نقل موضوعك.", "user_flagged_post": "<strong>%1</strong> flagged a post.",
"favourited_your_post_in": "<strong>%1</strong> أضاف مشاركتك في <strong>%2</strong> إلى مفضلته.", "user_posted_to": "<strong>%1</strong> has posted a reply to: <strong>%2</strong>",
"user_flagged_post_in": "<strong>%1</strong> أشعَرَ بمشاركة مخلة في <strong>%2</strong>", "user_mentioned_you_in": "<strong>%1</strong> mentioned you in <strong>%2</strong>",
"user_posted_to": "<strong>%1</strong> أضاف ردا إلى: <strong>%2</strong>", "email-confirmed": "Email Confirmed",
"user_posted_topic": "<strong>%1</strong> أنشأ موضوعًا جديدًا: <strong>%2</strong>", "email-confirmed-message": "Thank you for validating your email. Your account is now fully activated.",
"user_mentioned_you_in": "<strong>%1</strong> ذكرَ اسمك في <strong>%2</strong>", "email-confirm-error": "An error occurred...",
"user_started_following_you": "<strong>%1</strong> صار يتابعك.", "email-confirm-error-message": "There was a problem validating your email address. Perhaps the code was invalid or has expired.",
"email-confirmed": "تم التحقق من عنوان البريد الإلكتروني", "email-confirm-sent": "Confirmation email sent."
"email-confirmed-message": "شكرًا على إثبات صحة عنوان بريدك الإلكتروني. صار حسابك مفعلًا بالكامل.",
"email-confirm-error": "حدث خطأ ما...",
"email-confirm-error-message": "حدث خطأ أثناء التحقق من عنوان بريدك الإلكتروني. ربما رمز التفعيل خاطئ أو انتهت صلاحيته.",
"email-confirm-sent": "تم إرسال بريد التفعيل."
} }

View File

@@ -1,18 +1,16 @@
{ {
"home": "الصفحة الرئيسية", "home": "Home",
"unread": "المواضيع غير المقروءة", "unread": "Unread Topics",
"popular": "المواضيع الأكثر شهرة", "popular": "Popular Topics",
"recent": "المواضيع الحديثة", "recent": "Recent Topics",
"users": "المستخدمون المسجلون", "users": "Registered Users",
"notifications": "التنبيهات", "notifications": "Notifications",
"tags": "المواضيع المرتبطة بالوسم %1", "tags": "Topics tagged under \"%1\"",
"user.edit": "تعديل \"%1\"", "user.edit": "Editing \"%1\"",
"user.following": "المستخدمون الذين يتبعهم %1", "user.following": "People %1 Follows",
"user.followers": "المستخدمون الذين يتبعون %1", "user.followers": "People who Follow %1",
"user.posts": "ردود %1", "user.posts": "Posts made by %1",
"user.topics": "مواضيع %1", "user.topics": "Topics created by %1",
"user.favourites": "مفضلات %1", "user.favourites": "%1's Favourite Posts",
"user.settings": "خيارات المستخدم", "user.settings": "User Settings"
"maintenance.text": "جاري صيانة %1. المرجو العودة لاحقًا.",
"maintenance.messageIntro": "بالإضافة إلى ذلك، قام مدبر النظام بترك هذه الرسالة:"
} }

View File

@@ -1,18 +1,8 @@
{ {
"title": "الحديثة", "title": "Recent",
"day": "يوم", "day": "يوم",
"week": "أسبوع", "week": "أسبوع",
"month": "شهر", "month": "شهر",
"year": "سنة", "year": "Year",
"alltime": "دائمًا", "no_recent_topics": "There are no recent topics."
"no_recent_topics": "لاوجود لمشاركات جديدة",
"there-is-a-new-topic": "There is a new topic.",
"there-is-a-new-topic-and-a-new-post": "There is a new topic and a new post.",
"there-is-a-new-topic-and-new-posts": "There is a new topic and %1 new posts.",
"there-are-new-topics": "There are %1 new topics.",
"there-are-new-topics-and-a-new-post": "There are %1 new topics and a new post.",
"there-are-new-topics-and-new-posts": "There are %1 new topics and %2 new posts.",
"there-is-a-new-post": "There is a new post.",
"there-are-new-posts": "There are %1 new posts.",
"click-here-to-reload": "Click here to reload."
} }

View File

@@ -12,7 +12,7 @@
"confirm_password": "تأكيد كلمة السر", "confirm_password": "تأكيد كلمة السر",
"confirm_password_placeholder": "تأكيد كلمة السر", "confirm_password_placeholder": "تأكيد كلمة السر",
"register_now_button": "قم بالتسجيل الآن", "register_now_button": "قم بالتسجيل الآن",
"alternative_registration": "طريقة تسجيل بديلة", "alternative_registration": "التسجيل البديلة",
"terms_of_use": "قوانين الاستخدام", "terms_of_use": "Terms of Use",
"agree_to_terms_of_use": "أوافق على قوانين الاستخدام" "agree_to_terms_of_use": "I agree to the Terms of Use"
} }

View File

@@ -3,12 +3,12 @@
"update_password": "تحديث كلمة السر", "update_password": "تحديث كلمة السر",
"password_changed.title": "تم تغير كلمة السر", "password_changed.title": "تم تغير كلمة السر",
"password_changed.message": "<p>تم تغير كلمة السر بنجاح. يرجى <a href='/login'>إعادة الدخول</a></p>", "password_changed.message": "<p>تم تغير كلمة السر بنجاح. يرجى <a href='/login'>إعادة الدخول</a></p>",
"wrong_reset_code.title": "رمز إعادة التعيين غير صحيح", "wrong_reset_code.title": "إعادة تعيين رمز غير صحيح",
"wrong_reset_code.message": "رمز إعادة التعين غير صحيح، يرجى المحاولة مرة أخرى أو <a href='/reset'>اطلب رمزا جديدا</a>", "wrong_reset_code.message": امز إعادة التعين غير صحيح، يرجى المحاولة مرة أخرى أو <a href='/reset'>اطلب رمز جديد</a>",
"new_password": "كلمة السر الجديدة", "new_password": "كلمة السر الجديدة",
"repeat_password": "تأكيد كلمة السر", "repeat_password": "تأكيد كلمة السر",
"enter_email": "يرجى إدخال <strong>عنوان البريد الإلكتروني</strong> الخاص بك وسوف نرسل لك رسالة بالبريد الالكتروني مع تعليمات حول كيفية إستعادة حسابك.", "enter_email": "يرجى إدخال <strong>عنوان البريد الإلكتروني</strong> الخاص بك وسوف نرسل لك رسالة بالبريد الالكتروني مع تعليمات حول كيفية إستعادة حسابك.",
"enter_email_address": "ادخل عنوان البريد الإلكتروني", "enter_email_address": "Enter Email Address",
"password_reset_sent": "إعادة تعيين كلمة السر أرسلت", "password_reset_sent": "إعادة تعيين كلمة السر أرسلت",
"invalid_email": "بريد إلكتروني غير صالح أو غير موجود" "invalid_email": "بريد إلكتروني غير صالح أو غير موجود"
} }

View File

@@ -1,7 +1,3 @@
{ {
"results_matching": "%1 نتيجة (نتائج) موافقة ل \"%2\", (%3 ثواني)", "results_matching": "%1 result(s) matching \"%2\", (%3 seconds)"
"no-matches": "No matches found",
"in": "In",
"by": "By",
"posted-by": "Posted by"
} }

View File

@@ -1,6 +1,6 @@
{ {
"success": "نجاح", "success": "Success",
"topic-post": "لقد تمت الإضافة بنجاح.", "topic-post": "You have successfully posted.",
"authentication-successful": "تم تسجيل الدخول بنجاح", "authentication-successful": "Authentication Successful",
"settings-saved": "تم حفظ التغييرات!" "settings-saved": "Settings saved!"
} }

View File

@@ -1,7 +1,6 @@
{ {
"no_tag_topics": "لاوجود لمواضيع تحمل هذا الوسم.", "no_tag_topics": "There are no topics with this tag.",
"tags": "بطاقات", "tags": "Tags",
"enter_tags_here": "أدخل البطاقات هنا. اضغط ENTER بعد كل بطاقة.", "enter_tags_here": "Enter tags here. Press enter after each tag.",
"enter_tags_here_short": "أدخل البطاقات...", "no_tags": "There are no tags yet."
"no_tags": "لاتوجد هناك بطاقات بعد."
} }

View File

@@ -1,98 +1,95 @@
{ {
"topic": "موضوع", "topic": "موضوع",
"topic_id": "معرف الموضوع", "topic_id": "Topic ID",
"topic_id_placeholder": "أدخل معرف الموضوع", "topic_id_placeholder": "Enter topic ID",
"no_topics_found": "لا توجد مواضيع !", "no_topics_found": "لا توجد مواضيع !",
"no_posts_found": "لا توجد مشاركات!", "no_posts_found": "No posts found!",
"post_is_deleted": "هذه المشاركة محذوفة!", "post_is_deleted": "This post is deleted!",
"profile": "الملف الشخصي", "profile": "ملف",
"posted_by": "كتب من طرف %1", "posted_by": "Posted by %1",
"posted_by_guest": "كتب من طرف زائر", "posted_by_guest": "Posted by Guest",
"chat": "دردشة", "chat": "دردشة",
"notify_me": لق تنبيهات بالردود الجديدة في هذا الموضوع", "notify_me": نبه من ردود جديدة في هذا الموضوع",
"quote": "اقتبس", "quote": "اقتبس",
"reply": "رد", "reply": "رد",
"edit": "تعديل", "edit": "صحح",
"delete": "حذف", "delete": "حذف",
"purge": "تطهير", "purge": "Purge",
"restore": "استعادة", "restore": "Restore",
"move": "انقل", "move": "انقل",
"fork": "فرع", "fork": "فرع",
"banned": "محظور",
"link": "رابط", "link": "رابط",
"share": "نشر", "share": "شارك",
"tools": "أدوات", "tools": "أدوات",
"flag": "اشعار بمشاركة مخلة", "flag": "Flag",
"locked": "مقفل", "locked": "Locked",
"bookmark_instructions": "انقر هنا للإكمال أو أغلق للإلغاء.", "bookmark_instructions": "Click here to return to your last position or close to discard.",
"flag_title": "إشعار بمشاركة مخلة.", "flag_title": "Flag this post for moderation",
"flag_confirm": "هل تريد حقًّا أن تشعر بهذه المشاركة على أنها مخلة؟", "flag_confirm": "Are you sure you want to flag this post?",
"flag_success": "تم الإشعار بهذه المشاركة على أنها مخلة", "flag_success": "This post has been flagged for moderation.",
"deleted_message": "هذه المشاركة محذوفة. فقط من لهم صلاحية الإشراف على ا لمشاركات يمكنهم معاينتها.", "deleted_message": "This thread has been deleted. Only users with thread management privileges can see it.",
"following_topic.message": "ستستلم تنبيها عند كل مشاركة جديدة في هذا الموضوع.", "following_topic.message": "You will now be receiving notifications when somebody posts to this topic.",
"not_following_topic.message": "لن تستلم أي تنبيه بخصوص عذا الموضوع بعد الآن.", "not_following_topic.message": "You will no longer receive notifications from this topic.",
"login_to_subscribe": "المرجو إنشاء حساب أو تسجيل الدخول حتى يمكنك متابعة هذا الموضوع.", "login_to_subscribe": "Please register or log in in order to subscribe to this topic.",
"markAsUnreadForAll.success": "تم تحديد الموضوع على أنه غير مقروء.", "markAsUnreadForAll.success": "Topic marked as unread for all.",
"watch": "مراقبة", "watch": "Watch",
"unwatch": "الغاء المراقبة", "watch.title": "Be notified of new replies in this topic",
"watch.title": "استلم تنبيها بالردود الجديدة في هذا الموضوع", "share_this_post": "Share this Post",
"unwatch.title": "ألغ مراقبة هذا الموضوع",
"share_this_post": "انشر هذا الموضوع",
"thread_tools.title": "أدوات الموضوع", "thread_tools.title": "أدوات الموضوع",
"thread_tools.markAsUnreadForAll": "علم غير مقروء", "thread_tools.markAsUnreadForAll": "علم غير مقروء",
"thread_tools.pin": "علق الموضوع", "thread_tools.pin": "علق الموضوع",
"thread_tools.unpin": "إلغاء تعليق الموضوع", "thread_tools.unpin": "Unpin Topic",
"thread_tools.lock": "أقفل الموضوع", "thread_tools.lock": "قفل الموضوع",
"thread_tools.unlock": "إلغاء إقفال الموضوع", "thread_tools.unlock": "Unlock Topic",
"thread_tools.move": "نقل الموضوع", "thread_tools.move": "نقل الموضوع",
"thread_tools.move_all": "نقل الكل", "thread_tools.move_all": "Move All",
"thread_tools.fork": "إنشاء فرع الموضوع", "thread_tools.fork": "تفرع الموضوع",
"thread_tools.delete": "حذف الموضوع", "thread_tools.delete": "حذف الموضوع",
"thread_tools.delete_confirm": "هل أنت متأكد أنك تريد حذف هذا الموضوع؟", "thread_tools.delete_confirm": "Are you sure you want to delete this thread?",
"thread_tools.restore": "استعادة الموضوع", "thread_tools.restore": "Restore Topic",
"thread_tools.restore_confirm": "هل أنت متأكد أنك تريد استعادة هذا الموضوع؟", "thread_tools.restore_confirm": "Are you sure you want to restore this thread?",
"thread_tools.purge": "تطهير الموضوع", "thread_tools.purge": "Purge Topic",
"thread_tools.purge_confirm": "هل أنت متأكد أنك تريد تطهير هذا الموضوع؟", "thread_tools.purge_confirm": "Are you sure you want to purge this thread?",
"topic_move_success": "تم نقل هذا الموضوع إلى %1 بنجاح", "topic_move_success": "This topic has been successfully moved to %1",
"post_delete_confirm": "هل أنت متأكد أنك تريد حذف هذه المشاركة؟", "post_delete_confirm": "Are you sure you want to delete this post?",
"post_restore_confirm": "هل أنت متأكد أنك تريد استعادة هذه المشاركة؟", "post_restore_confirm": "Are you sure you want to restore this post?",
"post_purge_confirm": "هل أنت متأكد أنك تريد تطهير هذه المشاركة؟", "post_purge_confirm": "Are you sure you want to purge this post?",
"load_categories": "تحميل الفئات", "load_categories": "تحميل الفئات",
"disabled_categories_note": "الفئات المعطلة رمادية", "disabled_categories_note": "الفئات المجلدة رمادية",
"confirm_move": "انقل", "confirm_move": "انقل",
"confirm_fork": "فرع", "confirm_fork": "فرع",
"favourite": "إضافة إلى المفضلة", "favourite": "المفضل",
"favourites": "المفضلة", "favourites": "المفضلة",
"favourites.has_no_favourites": "ليس لديك أي ردود مفضلة. أضف بعض المشاركات إلى المفضلة لرؤيتهم هنا", "favourites.has_no_favourites": "ليس لديك أي ردود مفضلة. فضل بعد الردود لرؤيتهم هنا",
"loading_more_posts": "تحميل المزيد من المشاركات", "loading_more_posts": "تحميل المزيد من المشاركات",
"move_topic": "نقل الموضوع", "move_topic": "نقل الموضوع",
"move_topics": "نقل المواضيع", "move_topics": "Move Topics",
"move_post": "نقل المشاركة", "move_post": "نقل الرد",
"post_moved": "تم نقل المشاركة", "post_moved": "Post moved!",
"fork_topic": "فرع الموضوع", "fork_topic": "فرع الموضوع",
"topic_will_be_moved_to": "هذا الموضوع سوف ينقل إلى فئة", "topic_will_be_moved_to": "هذا الموضوع سوف ينقل إلى فئة",
"fork_topic_instruction": "إضغط على المشاركات التي تريد تفريعها", "fork_topic_instruction": "إضغط على الردود لتفريعهم",
"fork_no_pids": "لم تختر أي مشاركة", "fork_no_pids": "لم تختار أي رد",
"fork_success": م إنشاء فرع للموضوع بنجاح! إضغط هنا لمعاينة الفرع.", "fork_success": "تفريع الموضوع بنجاح!",
"composer.title_placeholder": "أدخل عنوان موضوعك هنا...", "composer.title_placeholder": "Enter your topic title here...",
"composer.handle_placeholder": "Name", "composer.discard": "Discard",
"composer.discard": "نبذ التغييرات", "composer.submit": "Submit",
"composer.submit": "حفظ", "composer.replying_to": "Replying to %1",
"composer.replying_to": "الرد على %1", "composer.new_topic": "New Topic",
"composer.new_topic": "موضوع جديد", "composer.uploading": "uploading...",
"composer.uploading": "جاري الرفع", "composer.thumb_url_label": "Paste a topic thumbnail URL",
"composer.thumb_url_label": "ألصق رابط الصورة المصغرة للموضوع", "composer.thumb_title": "Add a thumbnail to this topic",
"composer.thumb_title": "إضافة صورة مصغرة للموضوع",
"composer.thumb_url_placeholder": "http://example.com/thumb.png", "composer.thumb_url_placeholder": "http://example.com/thumb.png",
"composer.thumb_file_label": "أو قم برفع ملف", "composer.thumb_file_label": "Or upload a file",
"composer.thumb_remove": "تفريغ الخانات", "composer.thumb_remove": "Clear fields",
"composer.drag_and_drop_images": "اسحب وأسقص الصور هنا", "composer.drag_and_drop_images": "Drag and Drop Images Here",
"more_users_and_guests": "%1 مستخدم(ين) و %2 زائر(ين)", "more_users_and_guests": "%1 more user(s) and %2 guest(s)",
"more_users": "%1 مستخدم(ين)", "more_users": "%1 more user(s)",
"more_guests": "%1 زائر(ين)", "more_guests": "%1 more guest(s)",
"users_and_others": "%1 و %2 آخرين", "users_and_others": "%1 and %2 others",
"sort_by": "ترتيب حسب", "sort_by": "Sort by",
"oldest_to_newest": "من الأقدم إلى الأحدث", "oldest_to_newest": "Oldest to Newest",
"newest_to_oldest": "من الأحدث إلى الأقدم", "newest_to_oldest": "Newest to Oldest",
"most_votes": "الأكثر تصويتًا", "most_votes": "Most votes"
"most_posts": "Most posts"
} }

View File

@@ -1,9 +1,9 @@
{ {
"title": "غير مقروء", "title": "Unread",
"no_unread_topics": "ليس هناك أي موضوع غير مقروء", "no_unread_topics": "ليس هناك أي موضوع غير مقروء",
"load_more": "حمل المزيد", "load_more": "حمل المزيد",
"mark_as_read": "حدد غير مقروء", "mark_as_read": "Mark as Read",
"selected": "المختارة", "selected": "Selected",
"all": "الكل", "all": "All",
"topics_marked_as_read.success": "تم تحديد المواضيع على أنها مقروءة!" "topics_marked_as_read.success": "Topics marked as read!"
} }

View File

@@ -2,79 +2,64 @@
"banned": "محظور", "banned": "محظور",
"offline": "ليس موجود حالياً", "offline": "ليس موجود حالياً",
"username": "إسم المستخدم", "username": "إسم المستخدم",
"joindate": "Join Date",
"postcount": "Post Count",
"email": "البريد الإلكتروني", "email": "البريد الإلكتروني",
"confirm_email": "تأكيد عنوان البريد الإلكتروني", "confirm_email": "Confirm Email",
"delete_account": "حذف الحساب",
"delete_account_confirm": "هل أن متأكد أنك تريد حذف حسابك؟<br /><strong> هذه العملية غير قابلة للإلغاء ولن يكون بالإمكان استعادة بياناتك</strong><br /><br />أدخل اسم المستخدم الخاص بك لتأكيد عملية الحذف",
"fullname": "الاسم الكامل", "fullname": "الاسم الكامل",
"website": "الموقع الإلكتروني", "website": "الموقع الإلكتروني",
"location": "الموقع", "location": "موقع",
"age": "السن", "age": "عمر",
"joined": "تاريخ التسجيل", "joined": "تاريخ التسجيل",
"lastonline": "تاريخ آخر دخول", "lastonline": "تاريخ أخر دخول",
"profile": "الملف الشخصي", "profile": "Profile",
"profile_views": "عدد مشاهدات الملف الشخصي", "profile_views": "مشاهد الملف",
"reputation": "السمعة", "reputation": "سمعة",
"favourites": "المفضلات", "favourites": "Favourites",
"watched": "Watched", "followers": "أتباع",
"followers": "المتابعون", "following": "يتبع",
"following": "يتابع",
"signature": "توقيع", "signature": "توقيع",
"gravatar": "Gravatar", "gravatar": "Gravatar",
"birthday": "عيد ميلاد", "birthday": "عيد ميلاد",
"chat": "محادثة", "chat": "Chat",
"follow": "تابع", "follow": "Follow",
"unfollow": "إلغاء المتابعة", "unfollow": "Unfollow",
"profile_update_success": "تم تحديث الملف الشخصي بنجاح", "profile_update_success": "Profile has been updated successfully!",
"change_picture": "تغيير الصورة", "change_picture": "تغيير الصورة",
"edit": "تعديل", "edit": "صحح",
"uploaded_picture": "الصورة المرفوعة", "uploaded_picture": "صورة تم تحميلها",
"upload_new_picture": "رفع صورة جديدة", "upload_new_picture": "تحميل صورة جديدة",
"upload_new_picture_from_url": "رفع صورة جديدة بواسطة رابط", "current_password": "Current Password",
"current_password": "كلمة السر الحالية",
"change_password": "تغيير كلمة السر", "change_password": "تغيير كلمة السر",
"change_password_error": "كلمة سر غير صحيحة", "change_password_error": "Invalid Password!",
"change_password_error_wrong_current": "كلمة السر الحالية ليست صحيحة", "change_password_error_wrong_current": "Your current password is not correct!",
"change_password_error_length": "كلمة السر قصيرة", "change_password_error_length": "Password too short!",
"change_password_error_match": "كلمة السر غير مطابقة لتأكيد كلمة السر", "change_password_error_match": "Passwords must match!",
"change_password_error_privileges": "ليس لديك الصلاحيات الكافية لتغيير كلمة السر هذه.", "change_password_error_privileges": "You do not have the rights to change this password.",
"change_password_success": "تم تحديث كلمة السر خاصتك.", "change_password_success": "Your password is updated!",
"confirm_password": "تأكيد كلمة السر", "confirm_password": "تأكيد كلمة السر",
"password": "كلمة السر", "password": "كلمة السر",
"username_taken_workaround": "اسم المستخدم الذي اخترته سبق أخذه، لذا تم تغييره قليلا. أن الآن مسجل تحت الاسم <strong>%1</strong>", "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": "لايمكنك رفع إلا الصور ذات الصيغ PNG أو JPG أو GIF.", "image_spec": "You may only upload PNG, JPG, or GIF files",
"max": "الحد الأقصى", "max": "max.",
"settings": "خيارات", "settings": "Settings",
"show_email": "أظهر بريدي الإلكتروني", "show_email": "أظهر بريدي الإلكتروني",
"show_fullname": "أظهر اسمي الكامل", "digest_label": "Subscribe to Digest",
"restrict_chats": "لاتسمح بورود محادثات إلا من طرف المستخدمين الذين أتابعهم.", "digest_description": "Subscribe to email updates for this forum (new notifications and topics) according to a set schedule",
"digest_label": "اشترك في النشرة الدورية", "digest_off": "Off",
"digest_description": "استلام اشعارات بآخر مستجدات هذا القسم (التنبيهات والمواضيع الجديدة) عبر البريد الإلكتروني وفقا لجدول زمني محدد.", "digest_daily": "Daily",
"digest_off": "غير مفعل", "digest_weekly": "Weekly",
"digest_daily": "يوميا", "digest_monthly": "Monthly",
"digest_weekly": "أسبوعيًّا", "has_no_follower": "هذا المستخدم ليس لديه أي أتباع :(",
"digest_monthly": "شهريًّا", "follows_no_one": "هذا المستخدم لا يتبع أحد :(",
"send_chat_notifications": "استلام رسالة إلكترونية عند ورود محادثة وأنا غير متصل.", "has_no_posts": "This user didn't post anything yet.",
"send_post_notifications": "Send an email when replies are made to topics I am subscribed to", "has_no_topics": "This user didn't post any topics yet.",
"has_no_follower": "هذا المستخدم ليس لديه أي متابع :(",
"follows_no_one": "هذا المستخدم لا يتابع أحد :(",
"has_no_posts": "هذا المستخدم لم يكتب أي شيء بعد.",
"has_no_topics": "هذا المستخدم لم ينشئ أي موضوع بعد.",
"has_no_watched_topics": "This user didn't watch any topics yet.",
"email_hidden": "البريد الإلكتروني مخفي", "email_hidden": "البريد الإلكتروني مخفي",
"hidden": "مخفي", "hidden": "مخفي",
"paginate_description": "عرض المواضيع والردود موزعة على صفحات عوض صفحة واحدة.", "paginate_description": "Paginate topics and posts instead of using infinite scroll.",
"topics_per_page": "المواضيع في كل صفحة", "topics_per_page": "Topics per Page",
"posts_per_page": "الردود في كل صفحة", "posts_per_page": "Posts per Page",
"notification_sounds": "تشغيل ملف صوتي عند استلام التنبيهات.", "notification_sounds": "Play a sound when you receive a notification.",
"browsing": "خيارات التصفح", "browsing": "Browsing Settings",
"open_links_in_new_tab": "فتح الروابط الخارجية في تبويب جديد؟", "open_links_in_new_tab": "Open outgoing links in new tab?"
"enable_topic_searching": "تفعيل خاصية البحث داخل المواضيع",
"topic_search_help": "في حالة تفعيلها، ستعوض خاصيةُ البحث داخل المواضيع خاصيةَ البحث الخاصة بالمتصفح، فتمكنك بالتالي بالبحث في الموضوع بأكمله دون الاقتصار على مايظهر في الشاشة فحسب.",
"follow_topics_you_reply_to": "متابعة المشاركات التي ترد عليها",
"follow_topics_you_create": "متابعة المشاركات التي تكتبها"
} }

View File

@@ -5,8 +5,6 @@
"search": "بحث", "search": "بحث",
"enter_username": "أدخل اسم مستخدم للبحث", "enter_username": "أدخل اسم مستخدم للبحث",
"load_more": "حمل المزيد", "load_more": "حمل المزيد",
"users-found-search-took": "تم إيجاد %1 مستخدمـ(ين)! استغرق البحث %2 ميليثانية.", "user-not-found": "User not found!",
"filter-by": "Filter By", "users-found-search-took": "%1 user(s) found! Search took %2 ms."
"online-only": "Online only",
"picture-only": "Picture only"
} }

View File

@@ -1,8 +0,0 @@
{
"new_topic_button": "নতুন টপিক",
"no_topics": "<strong>এই বিভাগে কোন টপিক নেই! </strong><br /> আপনি চাইলে একটি পোষ্ট করতে পারেন।",
"browsing": "ব্রাউজিং",
"no_replies": "কোন রিপ্লাই নেই",
"share_this_category": "এই বিভাগটি অন্যের সাথে ভাগাভাগি করুন",
"ignore": "উপেক্ষা করুন"
}

View File

@@ -1,25 +0,0 @@
{
"password-reset-requested": "পাসওয়ার্ড রিসেটের জন্য অনুরোধ করা হয়েছে - %1!",
"welcome-to": "%1 এ স্বাগতম",
"greeting_no_name": "স্বাগতম",
"greeting_with_name": "স্বাগতম %1",
"welcome.text1": "%1 এ নিবন্ধন করার জন্য আপনাকে ধন্যবাদ!",
"welcome.text2": "আপনার একাউন্ট এ্যাক্টিভেট করার জন্য, আপনি যে ইমেইল এড্রেস ব্যাবহার করে নিবন্ধন করেছেন তা যাচাই করতে হবে",
"welcome.cta": "আপনার ইমেইল এড্রেস নিশ্চিত করার জন্য এখানে ক্লিক করুন",
"reset.text1": "আমরা আপনার পাসওয়ার্ড রিসেট করার অনুরোধ পেয়েছি, সম্ভবত আপনি আপনার পাসওয়ার্ড ভুলে গিয়েছেন বলেই। তবে যদি তা না হয়ে থাকে, তাহলে এই মেইলকে উপেক্ষা করতে পারেন।",
"reset.text2": "পাসওয়ার্ড রিসেট করতে নিচের লিংকে ক্লিক করুন",
"reset.cta": "পাসওয়ার্ড রিসেট করতে এখানে ক্লিক করুন",
"digest.notifications": "%1 থেকে আনরিড নোটিফিকেশন আছে।",
"digest.latest_topics": "%1 এর সর্বশেষ টপিকসমূহ",
"digest.cta": "%1 ভিজিট করতে এখানে ক্লিক করুন",
"digest.unsub.info": "আপনার সাবস্ক্রীপশন সেটিংসের কারনে আপনাকে এই ডাইজেষ্টটি পাঠানো হয়েছে।",
"digest.no_topics": "%1 এ কোন সক্রিয় টপিক নেই।",
"notif.chat.subject": "%1 এর থেকে নতুন মেসেজ এসেছে।",
"notif.chat.cta": "কথপোকথন চালিয়ে যেতে এখানে ক্লিক করুন",
"notif.chat.unsub.info": "আপনার সাবস্ক্রীপশন সেটিংসের কারনে আপনার এই নোটিফিকেশন পাঠানো হয়েছে",
"notif.post.cta": "Click here to read the full topic",
"notif.post.unsub.info": "This post notification was sent to you due to your subscription settings.",
"test.text1": "আপনি সঠিকভাবে নোডবিবির জন্য মেইলার সেটাপ করেছেন কিনা নিশ্চিত করার জন্য এই টেষ্ট ইমেইল পাঠানো হয়েছে",
"unsub.cta": "সেটিংসগুলো পরিবর্তন করতে এখানে ক্লিক করুন",
"closing": "ধন্যবাদ!"
}

View File

@@ -1,73 +0,0 @@
{
"invalid-data": "ভুল তথ্য",
"not-logged-in": "আপনি লগিন করেননি",
"account-locked": "আপনার অ্যাকাউন্ট সাময়িকভাবে লক করা হয়েছে",
"search-requires-login": "অনুসন্ধান করার জন্য একটি অ্যাকাউন্ট প্রয়োজন! অনুগ্রহপূর্বক প্রবেশ করুন অথবা নিবন্ধন করুন!",
"invalid-cid": "ভুল বিভাগ নাম্বার",
"invalid-tid": "ভুল টপিক নাম্বার",
"invalid-pid": "ভুল পোস্ট নাম্বার",
"invalid-uid": "ভুল ব্যবহারকারী নাম্বার",
"invalid-username": "ভুল ইউজারনেম",
"invalid-email": "ভুল ইমেইল",
"invalid-title": "ভুল শিরোনাম",
"invalid-user-data": "ভুল ব্যবহারকারী তথ্য",
"invalid-password": "ভুল পাসওয়ার্ড",
"invalid-username-or-password": "অনুগ্রহ পূর্বক ইউজারনেম এবং পাসওয়ার্ড উভয়ই প্রদান করুন",
"invalid-search-term": "অগ্রহনযোগ্য সার্চ টার্ম",
"invalid-pagination-value": "ভুল পৃষ্ঠা নাম্বার",
"username-taken": "ইউজারনেম আগেই ব্যবহৃত",
"email-taken": "ইমেইল আগেই ব্যবহৃত",
"email-not-confirmed": "আপনার ইমেইল এড্রেস নিশ্চিত করা হয় নি, নিশ্চিত করতে এখানে ক্লিক করুন।",
"email-not-confirmed-chat": "You are unable to chat until your email is confirmed",
"username-too-short": "খুব ছোট ইউজারনেম",
"username-too-long": "ইউজারনেম বড় হয়ে গিয়েছে",
"user-banned": "ব্যবহারকারী নিষিদ্ধ",
"user-too-new": "দুঃখিত! প্রথম পোষ্ট করার জন্য আপনাকে %1 সেকেন্ড অপেক্ষা করতে হবে।",
"no-category": "বিভাগটি খুজে পাওয়া যায় নি",
"no-topic": "এই টপিক নেই",
"no-post": "এই পোষ্ট নেই",
"no-group": "এই গ্রুপ অস্তিত্বহীন",
"no-user": "এই নামে কোন সদস্য নেই",
"no-teaser": "টিজারটি খুজে পাওয়া যায় নি",
"no-privileges": "এই কাজটির জন্য আপনার পর্যাপ্ত অধিকার নেই",
"no-emailers-configured": "কোন ইমেল প্লাগইন লোড করা নেই, কাজেই টেস্ট মেইল পাঠানো সম্ভব হচ্ছে না",
"category-disabled": "বিভাগটি নিষ্ক্রিয়",
"topic-locked": "টপিক বন্ধ",
"still-uploading": "আপলোড সম্পূর্ণ জন্য অনুগ্রহ করে অপেক্ষা করুন",
"content-too-short": "অনুগ্রহকরে অপেক্ষকৃত বড় পোষ্ট করুন। একটি পোষ্টে নূন্যতম %1 অক্ষর থাকতে হবে।",
"title-too-short": "অনুগ্রহপূর্বক বড় শিরোনাম ব্যাবহার করুন। শিরোনামের জন্য নূন্যতম %1 অক্ষর ব্যাবহার করতে হবে।",
"title-too-long": "অনুগ্রহ করে সংক্ষিপ্ত শিরোনাম লিখুন। শিরোনাম %1 অক্ষরের বেশি হতে পারবে না।",
"too-many-posts": "আপনি প্রতি %1 সেকেন্ডে একবার পোষ্ট করতে পারবেন। পরবর্তী পোষ্ট করার জন্য অপেক্ষা করুন। ",
"too-many-posts-newbie": "নতুন সদস্য হিসাবে %2 সন্মানণা পাওয়া পর্যন্ত আপনি প্রতি %1 সেকেন্ডে একবার পোষ্ট করতে পারবেন। পরবর্তী পোষ্ট করার জন্য অপেক্ষা করুন। ",
"file-too-big": "সর্বোচ্চ গৃহীত ফাইলসাইজ হচ্ছে %1 kb - অনুগ্রহপূর্বক ছোট ফাইল আপলোড করুন",
"cant-vote-self-post": "আপনি নিজের পোস্টে ভোট দিতে পারবেন না।",
"already-favourited": "আপনি ইতিমধ্যে এই পোষ্টটি পছন্দের তালিকায় যোগ করেছেন",
"already-unfavourited": "আপনি ইতিমধ্যে এই পোষ্টটি আপনার পছন্দের তালিকা থেকে সরিয়ে ফেলেছেন",
"cant-ban-other-admins": "আপনি অন্য এ্যাডমিনদের নিষিদ্ধ করতে পারেন না!",
"invalid-image-type": "Invalid image type. Allowed types are: %1",
"invalid-image-extension": "Invalid image extension",
"group-name-too-short": "গ্রুপের নাম খুব ছোট",
"group-already-exists": "গ্রুপ ইতিমধ্যেই বিদ্যমান",
"group-name-change-not-allowed": "গ্রুপের নাম পরিবর্তনের অনুমতি নেই",
"group-already-member": "You are already part of this group",
"group-needs-owner": "This group requires at least one owner",
"post-already-deleted": "এই পোস্টটি ইতিমধ্যে ডিলিট করা হয়ে গিয়েছে",
"post-already-restored": "এই পোষ্টটি ইতিমধ্যে পুনরোদ্ধার করা হয়েছে",
"topic-already-deleted": "এই টপিকটি ইতিমধ্যে ডিলিট করা হয়েছে",
"topic-already-restored": "এই টপিকটি ইতিমধ্যে পুনরোদ্ধার করা হয়েছে",
"topic-thumbnails-are-disabled": "টপিক থাম্বনেল নিষ্ক্রিয় করা। ",
"invalid-file": "ভুল ফাইল",
"uploads-are-disabled": "আপলোড নিষ্ক্রিয় করা",
"upload-error": "আপলোড ত্রুটিঃ %1",
"signature-too-long": "দুঃখিত, আপনার সাক্ষর %1 অক্ষরের বেশী হতে পারবে না। ",
"cant-chat-with-yourself": "আপনি নিজের সাথে চ্যাট করতে পারবেন না!",
"chat-restricted": "এই সদস্য তার বার্তালাপ সংরক্ষিত রেখেছেন। এই সদস্য আপনাকে ফলো করার পরই কেবলমাত্র আপনি তার সাথে চ্যাট করতে পারবেন",
"too-many-messages": "You have sent too many messages, please wait awhile.",
"reputation-system-disabled": "সম্মাননা ব্যাবস্থা নিস্ক্রীয় রাখা হয়েছে",
"downvoting-disabled": "ঋণাত্মক ভোট নিস্ক্রীয় রাখা হয়েছে।",
"not-enough-reputation-to-downvote": "আপনার এই পোস্ট downvote করার জন্য পর্যাপ্ত সম্মাননা নেই",
"not-enough-reputation-to-flag": "এই পোষ্টকে ফ্লাগ করার জন্য আপনার পর্যাপ্ত সম্মাননা নেই",
"reload-failed": "\"%1\" রিলোড করতে সমস্যা হয়েছে। রিলোডের পূর্বে যা করা হয়েছিল সেটি আনডু করা সমীচীন। ",
"registration-error": "নিবন্ধন এরর!",
"parse-error": "Something went wrong while parsing server response"
}

View File

@@ -1,81 +0,0 @@
{
"home": "নীড়পাতা",
"search": "অনুসন্ধান",
"buttons.close": "বন্ধ",
"403.title": "প্রবেশাধিকার প্রত্যাখ্যাত",
"403.message": "You seem to have stumbled upon a page that you do not have access to.",
"403.login": "Perhaps you should <a href='%1/login'>try logging in</a>?",
"404.title": "পাওয়া যায়নি",
"404.message": "You seem to have stumbled upon a page that does not exist. Return to the <a href='%1/'>home page</a>.",
"500.title": "অভ্যন্তরীণ ত্রুটি।",
"500.message": "ওহো! কিছু ভুল হয়েছে মনে হচ্ছে!",
"register": "নিবন্ধন",
"login": "প্রবেশ",
"please_log_in": "অনুগ্রহ করে প্রবেশ করুন",
"logout": "প্রস্থান",
"posting_restriction_info": "বর্তমানে নিবন্ধিত সদস্যরাই কেবল পোস্ট করতে পারেন, লগ ইন করতে এখানে ক্লিক করুন।",
"welcome_back": "আপনাকে স্বাগতম",
"you_have_successfully_logged_in": "আপনি সফলভাবে প্রবেশ করেছেন",
"save_changes": "পরিবর্তনগুলি সঞ্চয় করুন",
"close": "বন্ধ",
"pagination": "পাতা নং",
"pagination.out_of": "%2 এর মাঝে %1",
"pagination.enter_index": "সূচক লিখুন",
"header.admin": "অ্যাডমিন",
"header.recent": "সাম্প্রতিক",
"header.unread": "অপঠিত",
"header.tags": "ট্যাগ",
"header.popular": "জনপ্রিয়",
"header.users": "ব্যবহারকারীগণ",
"header.groups": "Groups",
"header.chats": "কথোপকথন",
"header.notifications": "বিজ্ঞপ্তি",
"header.search": "অনুসন্ধান",
"header.profile": "প্রোফাইল",
"notifications.loading": "বিজ্ঞপ্তিগুলি লোড হচ্ছে",
"chats.loading": "কথোপকথনগুলি লোড হচ্ছে ",
"motd.welcome": "ভবিষ্যতের আলোচনার প্লাটফর্ম, NodeBB তে স্বাগতম।",
"previouspage": "আগের পাতা",
"nextpage": "পরের পাতা",
"alert.success": "সফল",
"alert.error": "ত্রুটি",
"alert.banned": "নিষিদ্ধ",
"alert.banned.message": "আপনাকে কেবলই নিষিদ্ধ করা হয়েছে, আপনি এখন লগআউট হয়ে যাবেন।",
"alert.unfollow": "আপনি আর %1 কে অনুসরণ করছেন না!",
"alert.follow": "আপনি এখন %1 কে অনুসরণ করছেন!",
"online": "অনলাইন",
"users": "ব্যবহারকারীগণ",
"topics": "টপিক",
"posts": "পোস্টগুলি",
"views": "দেখেছেন",
"reputation": "সন্মাননা",
"read_more": "আরো পড়ুন",
"posted_ago_by_guest": "অতিথি পোস্ট করেছেন %1",
"posted_ago_by": " %1 %2 দ্বারা পোস্টকৃত",
"posted_ago": "পোস্ট করেছেন %1",
"posted_in_ago_by_guest": "%1 বিভাগে অতিথি পোস্ট করেছেন %2",
"posted_in_ago_by": "%3 %1 বিভাগে পোস্ট করেছেন %2",
"posted_in_ago": "%1 বিভাগে পোস্ট করা হয়েছে %2 আগে",
"replied_ago": "উত্তর দেয়া হয়েছে %1 ",
"user_posted_ago": "%1 পোস্ট করেছেন %2",
"guest_posted_ago": "অতিথি পোস্ট করেছেন %1",
"last_edited_by_ago": "সর্বশেষ সম্পাদনা করেছেন %1 %2",
"norecentposts": "কোনও সাম্প্রতিক পোস্ট নেই",
"norecenttopics": "কোনও সাম্প্রতিক টপিক নেই",
"recentposts": "সাম্প্রতিক পোস্ট",
"recentips": "সাম্প্রতিক প্রবেশকৃত আইপি সমুহ",
"away": "দূরে",
"dnd": "বিরক্ত করবেন না",
"invisible": "অদৃশ্য",
"offline": "অফলাইন",
"email": "ইমেইল",
"language": "ভাষা",
"guest": "অতিথি",
"guests": "অতিথি",
"updated.title": "ফোরাম আপডেট করা হয়েছে",
"updated.message": "এই ফোরামে এইমাত্র সর্বশেষ সংস্করণে আপডেট করা হয়েছে। পৃষ্ঠাটি রিফ্রেশ করতে এখানে ক্লিক করুন।",
"privacy": "নিরাপত্তা",
"follow": "Follow",
"unfollow": "Unfollow",
"delete_all": "সব মুছে ফেলুন"
}

View File

@@ -1,21 +0,0 @@
{
"groups": "গ্রুপসমূহ",
"view_group": "গ্রুপ দেখুন",
"owner": "Group Owner",
"new_group": "Create New Group",
"no_groups_found": "There are no groups to see",
"cover-instructions": "Drag and Drop a photo, drag to position, and hit <strong>Save</strong>",
"cover-change": "Change",
"cover-save": "Save",
"cover-saving": "Saving",
"details.title": "গ্রুপের বিস্তারিত",
"details.members": "সদস্য তালিকা",
"details.pending": "Pending Members",
"details.has_no_posts": "এই গ্রুপের সদস্যরা এখনো কোন পোষ্ট করেন নি",
"details.latest_posts": "সর্বশেষ পোষ্টসমূহ",
"details.private": "Private Group",
"details.public": "Public Group",
"details.owner_options": "Group Administration",
"event.updated": "Group details have been updated",
"event.deleted": "The group \"%1\" has been deleted"
}

View File

@@ -1,5 +0,0 @@
{
"name": "বাংলা",
"code": "bn",
"dir": "ltr"
}

View File

@@ -1,9 +0,0 @@
{
"username": "ইউজারনেম / ইমেইল",
"remember_me": "মনে রাখুন",
"forgot_password": "পাসওয়ার্ড ভুলে গিয়েছেন?",
"alternative_logins": "বিকল্প প্রবেশ",
"failed_login_attempt": "প্রবেশ সফল হয় নি, আবার চেষ্টা করুন।",
"login_successful": "আপনি সফলভাবে প্রবেশ করেছেন!",
"dont_have_account": "কোন একাউন্ট নেই?"
}

View File

@@ -1,21 +0,0 @@
{
"chat.chatting_with": "<span id=\"chat-with-name\"></span> এর সাথে কথোপকথন",
"chat.placeholder": "এখানে আপনার বার্তা লিখুন। পাঠানোর জন্য Enter চাপুন",
"chat.send": "প্রেরন করুন",
"chat.no_active": "আপনার কোন সচল কথোপকথন নেই",
"chat.user_typing": "%1 লিখছেন",
"chat.user_has_messaged_you": "%1 আপনাকে বার্তা পাঠিয়েছেন",
"chat.see_all": "সকল কথোপকথন দেখুন",
"chat.no-messages": "মেসেজ হিস্টোরী দেখতে প্রাপক নির্বাচন করুন",
"chat.recent-chats": "সাম্প্রতিক চ্যাটসমূহ",
"chat.contacts": "কন্টাক্টস",
"chat.message-history": "মেসেজ হিস্টোরী",
"chat.pop-out": "চ্যাট উইন্ডো আলাদা করুন",
"chat.maximize": "ম্যাক্সিমাইজ",
"chat.seven_days": " দিন",
"chat.thirty_days": "৩০ দিন",
"chat.three_months": "৩ মাস",
"composer.user_said_in": "%1 বলেছেন %2:",
"composer.user_said": "%1 বলেছেনঃ",
"composer.discard": "আপনি কি নিশ্চিত যে আপনি এই পোস্ট বাতিল করতে ইচ্ছুক?"
}

View File

@@ -1,27 +0,0 @@
{
"title": "বিজ্ঞপ্তিগুলো",
"no_notifs": "আপনার নতুন কোন বিজ্ঞপ্তি নেই",
"see_all": "সকল বিজ্ঞপ্তিগুলো দেখুন",
"back_to_home": "ফিরুন %1",
"outgoing_link": "বহির্গামী লিঙ্ক",
"outgoing_link_message": "আপনি এখন %1 ত্যাগ করছেন",
"continue_to": "%1 তে আগান",
"return_to": "%1 এ ফেরত যান",
"new_notification": "নতুন বিজ্ঞপ্তি",
"you_have_unread_notifications": "আপনার অপঠিত বিজ্ঞপ্তি আছে।",
"new_message_from": "<strong>%1</strong> থেকে নতুন বার্তা",
"upvoted_your_post_in": "<strong>%1</strong> , <strong>%2</strong> এ আপানার পোষ্টকে আপভোট করেছেন। ",
"moved_your_post": "<strong>%1</strong> আপনার পোষ্ট সরিয়ে নিয়েছেন। ",
"moved_your_topic": "<strong>%1</strong> আপনার টপিক সরিয়ে নিয়েছেন। ",
"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> একটি উত্তর দিয়েছেন: <strong>%2</strong>",
"user_posted_topic": "<strong>%1</strong> has posted a new topic: <strong>%2</strong>",
"user_mentioned_you_in": "<strong>%1</strong>, <strong>%2</strong> এ আপনার নাম উল্লেখ করেছেন",
"user_started_following_you": "<strong>%1</strong> আপনাকে অনুসরন করা শুরু করেছেন।",
"email-confirmed": "ইমেইল নিশ্চিত করা হয়েছে",
"email-confirmed-message": "আপনার ইমেইল যাচাই করার জন্য আপনাকে ধন্যবাদ। আপনার অ্যাকাউন্টটি এখন সম্পূর্ণরূপে সক্রিয়।",
"email-confirm-error": "একটি ত্রুটি ঘটেছে...",
"email-confirm-error-message": "আপনার ইমেল ঠিকানার বৈধতা যাচাইয়ে একটি সমস্যা হয়েছে। সম্ভবত কোডটি ভুল ছিল অথবা কোডের মেয়াদ শেষ হয়ে গিয়েছে।",
"email-confirm-sent": "নিশ্চিতকরণ ইমেইল পাঠানো হয়েছে।"
}

View File

@@ -1,18 +0,0 @@
{
"home": "নীড়পাতা",
"unread": "অপঠিত টপিক",
"popular": "জনপ্রিয় টপিক",
"recent": "সাম্প্রতিক টপিক",
"users": "নিবন্ধিত সদস্যগণ",
"notifications": "বিজ্ঞপ্তি",
"tags": "\"%1\" এ ট্যগকৃত টপিকসমূহ",
"user.edit": "সম্পাদনা \"%1\"",
"user.following": "%1 যাদের অনুসরণ করেন",
"user.followers": "যারা %1 কে অনুসরণ করেন",
"user.posts": "%1 এর পোস্ট সমুহ",
"user.topics": "%1 এর টপিক সমুহ",
"user.favourites": "%1'র প্রিয় পোস্টগুলো",
"user.settings": "সদস্য সেটিংস",
"maintenance.text": "%1 is currently undergoing maintenance. Please come back another time.",
"maintenance.messageIntro": "Additionally, the administrator has left this message:"
}

View File

@@ -1,18 +0,0 @@
{
"title": "সাম্প্রতিক",
"day": "দিন",
"week": "সপ্তাহ",
"month": "মাস",
"year": "বছর",
"alltime": "সবসময় ",
"no_recent_topics": "কোন সাম্প্রতিক টপিক নেই। ",
"there-is-a-new-topic": "There is a new topic.",
"there-is-a-new-topic-and-a-new-post": "There is a new topic and a new post.",
"there-is-a-new-topic-and-new-posts": "There is a new topic and %1 new posts.",
"there-are-new-topics": "There are %1 new topics.",
"there-are-new-topics-and-a-new-post": "There are %1 new topics and a new post.",
"there-are-new-topics-and-new-posts": "There are %1 new topics and %2 new posts.",
"there-is-a-new-post": "There is a new post.",
"there-are-new-posts": "There are %1 new posts.",
"click-here-to-reload": "Click here to reload."
}

View File

@@ -1,18 +0,0 @@
{
"register": "নিবন্ধন",
"help.email": "ডিফল্টভাবে, আপনার ইমেইল সর্বসাধারণ থেকে লুকানো থাকবে।",
"help.username_restrictions": "%1 এবং %2 অক্ষরের মাঝে একটি অনন্য সদস্য নাম। বাকিরা আপনাকে @<span id='yourUsername'>নাম</span> দিয়ে উল্লেখ করতে পারবেন।",
"help.minimum_password_length": "আপনার পাসওয়ার্ড এর দৈর্ঘ্য অন্তত %1 অক্ষরের হতে হবে।",
"email_address": "ইমেইল অ্যাড্রেস",
"email_address_placeholder": "ইমেইল অ্যাড্রেস লিখুন",
"username": "ইউজারনেম",
"username_placeholder": "ইউজারনেম লিখুন",
"password": "পাসওয়ার্ড",
"password_placeholder": "পাসওয়ার্ড লিখুন",
"confirm_password": "পাসওয়ার্ড নিশ্চিত করুন",
"confirm_password_placeholder": "পাসওয়ার্ড নিশ্চিত করুন",
"register_now_button": "নিবন্ধন করুন",
"alternative_registration": "বিকল্প নিবন্ধন",
"terms_of_use": "নিয়মাবলী",
"agree_to_terms_of_use": "আমি নিয়মাবলী মেনে চলতে সম্মতি জানালাম"
}

View File

@@ -1,14 +0,0 @@
{
"reset_password": "পাসওয়ার্ড রিসেট",
"update_password": "পাসওয়ার্ড হালনাগাদ",
"password_changed.title": "পাসওয়ার্ড পরিবর্তন করা হয়েছে",
"password_changed.message": "<p>পাসওয়ার্ড সফলভাবে রিসেট করা হয়েছে, পুনরায় <a href=\"/login\">প্রবেশ<a> করুন।",
"wrong_reset_code.title": "ভুল রিসেট কোড",
"wrong_reset_code.message": "প্রাপ্ত রিসেট কোডটি ভুল ছিল। আবার চেষ্টা করুন, অথবা <a href=\"/reset\">একটি নতুন রিসেট কোড</a> অনুরোধ করুন।",
"new_password": "নতুন পাসওয়ার্ড",
"repeat_password": "পাসওয়ার্ড নিশ্চিত করুন",
"enter_email": "অনুগ্রহপূর্বক আপনার ইমেইল এড্রেস প্রদান করুন, আমরা আপনাকে আপনার পাসওয়ার্ড রিসেট সম্পর্কিত তথ্যাবলী ইমেইলে পাঠিয়ে দিবো। ",
"enter_email_address": "আপনার ইমেইল এড্রেস",
"password_reset_sent": "পাসওয়ার্ড রিসেট মেইল পাঠানো হয়েছে",
"invalid_email": "ভুল ইমেইল / ইমেইল ডেটাবেইজে নেই"
}

View File

@@ -1,7 +0,0 @@
{
"results_matching": "\"%2\" এর সাথে মিলিয়ে %1 ফলাফল পাওয়া গেছে, ( %3 seconds সময় লেগেছে )",
"no-matches": "No matches found",
"in": "In",
"by": "By",
"posted-by": "Posted by"
}

View File

@@ -1,6 +0,0 @@
{
"success": "সফল হয়েছে",
"topic-post": "আপনি সফলভাবে পোষ্ট করেছেন। ",
"authentication-successful": "অথেন্টিকেশন সফল হয়েছে",
"settings-saved": "সেটিংস সেভ করা হয়েছে। "
}

View File

@@ -1,7 +0,0 @@
{
"no_tag_topics": "এই ট্যাগ সম্বলিত কোন টপিক নেই",
"tags": "ট্যাগসমূহ",
"enter_tags_here": "এখানে আপনার ট্যাগ টাইপ করুন, প্রত্যেকটি ট্যাগের পর Enter চাপুন",
"enter_tags_here_short": "ট্যাগ বসান",
"no_tags": "এখন পর্যন্ত কোন ট্যাগ নেই"
}

View File

@@ -1,98 +0,0 @@
{
"topic": "টপিক",
"topic_id": "টপিক নাম্বার ",
"topic_id_placeholder": "টপিক নাম্বার দিন ",
"no_topics_found": "কোন টপিক পাওয়া যায়নি!",
"no_posts_found": "কোন পোস্ট পাওয়া যায়নি",
"post_is_deleted": "এই পোস্টটি মুছে ফেলা হয়েছে!",
"profile": "প্রোফাইল ",
"posted_by": "পোস্ট করেছেন %1",
"posted_by_guest": "অতিথি পোস্ট ",
"chat": "আলাপচারি",
"notify_me": "এই টপিকে নতুন উত্তর আসলে জানুন",
"quote": "উদ্ধৃতি",
"reply": "উত্তর",
"edit": "সম্পাদণা",
"delete": "মুছে ফেলুন",
"purge": "পার্জ",
"restore": "পুনরূদ্ধার",
"move": "সরানো",
"fork": "শাখা",
"link": "লিঙ্ক",
"share": "শেয়ার",
"tools": "টুলস",
"flag": "ফ্ল্যাগ",
"locked": "বন্ধ",
"bookmark_instructions": "আপনার সর্বশেষ অবস্থানে ফিরে যাবার জন্য এখানে ক্লিক করুন অথবা অগ্রাহ্য করতে চাইলে বন্ধ করুন",
"flag_title": "মডারেশনের জন্য এই পোস্টটি ফ্ল্যাগ করুন",
"flag_confirm": "আপনি কি নিশ্চিত যে এই পোস্টটিকে আপনি ফ্ল্যাগ করতে চান? ",
"flag_success": "এই পোস্টটি মডারেশনের জন্য ফ্ল্যাগ করা হয়েছে।",
"deleted_message": "এই টপিকটি মুছে ফেলা হয়েছে। শুধুমাত্র টপিক ব্যবস্থাপনার ক্ষমতাপ্রাপ্ত সদস্যগণ এটি দেখতে পারবেন।",
"following_topic.message": "এখন থেকে এই টপিকে অন্যকেউ পোস্ট করলে আপনি নোটিফিকেশন পাবেন।",
"not_following_topic.message": "এই টপিক থেকে আপনি আর নোটিফিকেশন পাবেন না।",
"login_to_subscribe": "এই টপিকে সাবস্ক্রাইব করতে চাইলে অনুগ্রহ করে নিবন্ধণ করুন অথবা প্রবেশ করুন।",
"markAsUnreadForAll.success": "টপিকটি সবার জন্য অপঠিত হিসাবে মার্ক করুন।",
"watch": "দেখা",
"unwatch": "অদেখা",
"watch.title": "এই টপিকে নতুন উত্তর এলে বিজ্ঞাপণের মাধ্যমে জানুন।",
"unwatch.title": "এই টপিক দেখা বন্ধ করুন",
"share_this_post": "এই পোষ্টটি শেয়ার করুন",
"thread_tools.title": "টপিক সম্পর্কিত টুলস",
"thread_tools.markAsUnreadForAll": "\"অপঠিত\" হিসেবে চিহ্নিত করুন",
"thread_tools.pin": "টপিক পিন করুন",
"thread_tools.unpin": "টপিক আনপিন করুন",
"thread_tools.lock": "টপিক বন্ধ করুন",
"thread_tools.unlock": "টপিক খুলে দিন",
"thread_tools.move": "টপিক সরান",
"thread_tools.move_all": "সমস্ত টপিক সরান",
"thread_tools.fork": "টপিক ফর্ক করুন",
"thread_tools.delete": "টপিক মুছে ফেলুন",
"thread_tools.delete_confirm": "আপনি নিশ্চিত যে আপনি এই টপিকটি মুছে ফেলতে চান?",
"thread_tools.restore": "টপিক পুনরূদ্ধার করুন",
"thread_tools.restore_confirm": "আপনি নিশ্চিত যে আপনি টপিকটি পুনরূদ্ধার করতে চান?",
"thread_tools.purge": "টপিক পার্জ করুন",
"thread_tools.purge_confirm": "আপনি নিশ্চিত যে আপনি টপিকটি পার্জ করতে চাচ্ছেন ? ",
"topic_move_success": "টপিকটি %1 এ সরিয়ে নেয়া হয়েছে",
"post_delete_confirm": "আপনি নিশ্চিত যে আপনি এই পোষ্টটি মুছে ফেলতে চান ?",
"post_restore_confirm": "আপনি নিশ্চিত যে আপনি এই পোষ্টটি পুনরূূদ্ধার করতে চান ? ",
"post_purge_confirm": "আপনি নিশ্চিত যে আপনি এই পোষ্টটি পার্জ করতে চান ? ",
"load_categories": "ক্যাটাগরী লোড করা হচ্ছে",
"disabled_categories_note": "নিস্ক্রীয় ক্যাটাগরীসমূহ ধূসর কালিতে লেখা রয়েছে। ",
"confirm_move": "সরান",
"confirm_fork": "ফর্ক",
"favourite": "পছন্দ",
"favourites": "পছন্দতালিকা",
"favourites.has_no_favourites": "আপনার যদি কোন পছন্দের পোষ্ট না থেকে থাকে তাহলে কিছু পোষ্ট ফেভারিট করা হলে সেগুলো এখানে দেখতে পাবেন।",
"loading_more_posts": "আরো পোষ্ট লোড করা হচ্ছে",
"move_topic": "টপিক সরান",
"move_topics": "টপিক সমূহ সরান",
"move_post": "পোষ্ট সরান",
"post_moved": "পোষ্ট সরানো হয়েছে",
"fork_topic": "টপিক ফর্ক করুন",
"topic_will_be_moved_to": "এই টপিকটি ক্যাটাগরীতে সরানো হবে",
"fork_topic_instruction": "যে পোষ্টটি ফর্ক করতে চান সেটি ক্লিক করুন",
"fork_no_pids": "কোন পোষ্ট সিলেক্ট করা হয় নি",
"fork_success": "টপিক ফর্ক করা হয়েছে। ফর্ক করা টপিকে যেতে এখানে ক্লিক করুন",
"composer.title_placeholder": "আপনার টপিকের শিরোনাম দিন",
"composer.handle_placeholder": "Name",
"composer.discard": "বাতিল",
"composer.submit": "সাবমিট",
"composer.replying_to": "%1 এর উত্তরে:",
"composer.new_topic": "নতুন টপিক",
"composer.uploading": "আপলোডিং",
"composer.thumb_url_label": "টপিকে থাম্বনেইল URL পেষ্ট করুন",
"composer.thumb_title": "এই টপিকে থাম্বনেইল যোগ করুন",
"composer.thumb_url_placeholder": "http://example.com/thumb.png",
"composer.thumb_file_label": "অথবা একটি ফাইল আপলোড করুন",
"composer.thumb_remove": "ফিল্ড ক্লিয়ার করুন",
"composer.drag_and_drop_images": "ছবি এখানে ড্র্যাগ করে এনে ছেড়ে দিন",
"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": "সাজানোর ভিত্তি:",
"oldest_to_newest": "পুরাতন থেকে নতুন",
"newest_to_oldest": "নতুন থেকে পুরাতন",
"most_votes": "সর্বোচ্চ ভোট",
"most_posts": "Most posts"
}

View File

@@ -1,9 +0,0 @@
{
"title": "অপঠিত",
"no_unread_topics": "কোন অপঠিত টপিক নেই",
"load_more": "আরো লোড করুন",
"mark_as_read": "পঠিত হিসেবে চিহ্নিত করুন",
"selected": "নির্বাচিত",
"all": "সবগুলো",
"topics_marked_as_read.success": "পঠিত হিসেবে চিহ্নিত টপিকসমূহ"
}

View File

@@ -1,80 +0,0 @@
{
"banned": "নিষিদ্ধ",
"offline": "অফলাইন",
"username": "সদস্যের নাম",
"joindate": "Join Date",
"postcount": "Post Count",
"email": "ইমেইল",
"confirm_email": "ইমেইল নিশ্চিত করুন",
"delete_account": "একাউন্ট মুছে ফেলুন",
"delete_account_confirm": "আপনি কি নিশ্চিত যে আপনি আপনার একাউন্ট মুছে ফেলতে চান ? <br /><strong>এই কাজটির ফলে আপনার কোন তথ্য পুনরূদ্ধার করা সম্ভব নয় </strong><br /><br /> নিশ্চিত করতে আপনার ইউজারনেম প্রবেশ করান। ",
"fullname": "পুর্ণ নাম",
"website": "ওয়েবসাইট",
"location": "স্থান",
"age": "বয়স",
"joined": "যোগদান করেছেন",
"lastonline": "সর্বশেষ অনলাইনে ছিলেন",
"profile": "প্রোফাইল",
"profile_views": "প্রোফাইল দেখেছেন",
"reputation": "সন্মাননা",
"favourites": "পছন্দের তালিকা",
"watched": "Watched",
"followers": "যাদের অনুসরণ করছেন",
"following": "যারা আপনাকে অনুসরণ করছে",
"signature": "স্বাক্ষর",
"gravatar": "গ্রাভাতার",
"birthday": "জন্মদিন",
"chat": "বার্তালাপ",
"follow": "অনুসরন করুন",
"unfollow": "অনুসরন করা থেকে বিরত থাকুন",
"profile_update_success": "প্রোফাইল আপডেট সফল হয়েছে",
"change_picture": "ছবি পরিবর্তন",
"edit": "সম্পাদনা",
"uploaded_picture": "ছবি আপলোড করুন",
"upload_new_picture": "নতুন ছবি আপলোড করুন",
"upload_new_picture_from_url": "URL থেকে নতুন ছবি আপলোড করুন",
"current_password": "বর্তমান পাসওয়ার্ড",
"change_password": "পাসওয়ার্ড পরিবর্তন",
"change_password_error": "অগ্রহনযোগ্য পাসওয়ার্ড",
"change_password_error_wrong_current": "আপনার পাসওয়ার্ড সঠিক নয়",
"change_password_error_length": "পাসওয়ার্ড অতিরিক্ত ছোট",
"change_password_error_match": "পাসওয়ার্ড অবশ্যই একই হতে হবে",
"change_password_error_privileges": "আপনার পাসওয়ার্ড পরিবর্তন করার অনুমতি নেই",
"change_password_success": "আপনার পাসওয়ার্ড আপডেট করা হয়েছে",
"confirm_password": "পাসওয়ার্ড নিশ্চিত করুন",
"password": "পাসওয়ার্ড",
"username_taken_workaround": "আপনি যে ইউজারনেম চাচ্ছিলেন সেটি ইতিমধ্যে নেয়া হয়ে গেছে, কাজেই আমরা এটি কিঞ্চিং পরিবর্তন করেছি। আপনি এখন <strong>%1</strong> হিসেবে পরিচিত",
"upload_picture": "ছবি আপলোড করুন",
"upload_a_picture": "ছবি (একটি) আপলোড করুন",
"image_spec": "আপনি কেবলমাত্র PNG, JPG অথবা GIF ফাইল আপলোড করতে পারবেন",
"max": "সর্বোচ্চ",
"settings": "সেটিংস",
"show_email": "আমার ইমেইল দেখাও",
"show_fullname": "আমার সম্পূর্ণ নাম দেখাও",
"restrict_chats": "আমি যাদের ফলো করি কেবলমাত্র তাদের থেকে বার্তা গ্রহন করা হোক",
"digest_label": "ডাইজেষ্টে সাবস্ক্রাইব করুন",
"digest_description": "শিডিউল অনূযায়ী এই ফোরামের ইমেইল আপডেটের জন্য সাবস্ক্রাইব করুন (নতুন নোটিফিকেশন এবং টপিকসমূহ )",
"digest_off": "বন্ধ",
"digest_daily": "দৈনিক",
"digest_weekly": "সাপ্তাহিক",
"digest_monthly": "মাসিক",
"send_chat_notifications": "যদি আমি অনলাইনে না থাকি, সেক্ষেত্রে নতুন চ্যাট মেসেজ আসলে আমাকে ইমেইল করুন",
"send_post_notifications": "Send an email when replies are made to topics I am subscribed to",
"has_no_follower": "এই সদস্যের কোন ফলোয়ার নেই :(",
"follows_no_one": "এই সদস্য কাউকে ফলো করছেন না :(",
"has_no_posts": "এই সদস্য এখনো কোন পোষ্ট করেন নি",
"has_no_topics": "এই সদস্য এখনো কোন টপিক পোষ্ট করেন নি",
"has_no_watched_topics": "This user didn't watch any topics yet.",
"email_hidden": "ইমেইল গোপন রাখা হয়েছে",
"hidden": "গোপন করা হয়েছে",
"paginate_description": "ইনফাইনাইট স্ক্রলের বদলে টপিক এবং পোষ্টের জন্য পেজিনেশন ব্যাবহার করুন",
"topics_per_page": "প্রতি পেজে কতগুলো টপিক থাকবে",
"posts_per_page": "প্রতি পেইজে কতগুলো পোষ্ট থাকবে",
"notification_sounds": "নতুন নোটিফিকেশনের জন্য নোটিফিকেশন সাউন্ড বাজাও।",
"browsing": "Browsing সেটিংস",
"open_links_in_new_tab": "বাইরের URL গুলো নতুন ট্যাবে খোলা হবে ?",
"enable_topic_searching": "In-Topic সার্চ সক্রীয় করো",
"topic_search_help": "যদি এনাবল করা হয়ে থাকে, In-topic সার্চিং ব্রাউজারের ডিফল্ট সার্চের বদলে পুরো টপিকজুড়ে সার্চ করার সুবিধা দিবে, যা কেবলমাত্র বর্তমান স্কৃণে দেখানো অংশের মধ্যে সীমাবদ্ধ থাকবে না। ",
"follow_topics_you_reply_to": "আপনার উত্তর দেয়া টপিকগুলো ফলো করুন",
"follow_topics_you_create": "আপনার তৈরীকরা টপিকসমূহ ফলো করুন"
}

View File

@@ -1,12 +0,0 @@
{
"latest_users": "সর্বশেষ নিবন্ধিত সদস্যরা:",
"top_posters": "সর্বোচ্চ পোষ্টকারী",
"most_reputation": "সর্বোচ্চ সম্মাননাধারী",
"search": "খুঁজুন",
"enter_username": "ইউজারনেম এর ভিত্তিতে সার্চ করুন",
"load_more": "আরো লোড করুন",
"users-found-search-took": "%1 সদস্য(দের) খুঁজে পাওয়া গিয়েছে! সময় লেগেছে %2 ms.",
"filter-by": "Filter By",
"online-only": "Online only",
"picture-only": "Picture only"
}

View File

@@ -3,6 +3,5 @@
"no_topics": "<strong>V této kategorii zatím nejsou žádné příspěvky.</strong><br />Můžeš být první!", "no_topics": "<strong>V této kategorii zatím nejsou žádné příspěvky.</strong><br />Můžeš být první!",
"browsing": "prohlíží", "browsing": "prohlíží",
"no_replies": "Nikdo ještě neodpověděl", "no_replies": "Nikdo ještě neodpověděl",
"share_this_category": "Share this category", "share_this_category": "Share this category"
"ignore": "Ignorovat"
} }

View File

@@ -1,25 +1,20 @@
{ {
"password-reset-requested": "Požadována obnova hesla - %1!", "password-reset-requested": "Password Reset Requested - %1!",
"welcome-to": "Vítejte v %1", "welcome-to": "Welcome to %1",
"greeting_no_name": "Dobrý den", "greeting_no_name": "Hello",
"greeting_with_name": "Dobrý den %1", "greeting_with_name": "Hello %1",
"welcome.text1": "Děkujeme vám za registraci s %1!", "welcome.text1": "Thank you for registering with %1!",
"welcome.text2": "Pro úplnou aktivaci vašeho účtu potřebujeme ověřit vaší emailovou adresu.", "welcome.text2": "To fully activate your account, we need to verify that you own the email address you registered with.",
"welcome.cta": "Klikněte zde pro potvrzení vaší emailové adresy", "welcome.cta": "Click here to confirm your email address",
"reset.text1": "Obdrželi jsme požadavek na obnovu hesla, pravděpodobně kvůli tomu, že jste ho zapomněli. Pokud to není tento případ, ignorujte, prosím, tento email.", "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": "Přejete-li si pokračovat v obnově vašeho hesla, klikněte, prosím, na následující odkaz:", "reset.text2": "To continue with the password reset, please click on the following link:",
"reset.cta": "Klikněte zde, chcete-li obnovit vaše heslo", "reset.cta": "Click here to reset your password",
"digest.notifications": "Máte tu nepřečtená oznámení od %1:", "digest.notifications": "You have some unread notifications from %1:",
"digest.latest_topics": "Nejnovější témata od %1", "digest.latest_topics": "Latest topics from %1",
"digest.cta": "Kliknutím zde navštívíte %1", "digest.cta": "Click here to visit %1",
"digest.unsub.info": "Tento výtah vám byl odeslán, protože jste si to nastavili ve vašich odběrech.", "digest.unsub.info": "This digest was sent to you due to your subscription settings.",
"digest.no_topics": "Dosud tu nebyly žádné aktivní témata %1", "digest.unsub.cta": "Click here to alter those settings",
"notif.chat.subject": "Nová zpráva z chatu od %1", "digest.daily.no_topics": "There have been no active topics in the past day",
"notif.chat.cta": "Chcete-li pokračovat v konverzaci, klikněte zde.", "test.text1": "This is a test email to verify that the emailer is set up correctly for your NodeBB.",
"notif.chat.unsub.info": "Toto oznámení z chatu vám bylo zasláno, protože jste si to nastavili ve vašich odběrech.", "closing": "Thanks!"
"notif.post.cta": "Click here to read the full topic",
"notif.post.unsub.info": "This post notification was sent to you due to your subscription settings.",
"test.text1": "Tento testovací email slouží k ověření, že mailer je správně nastaven. NodeBB.",
"unsub.cta": "Chcete-li změnit tyto nastavení, klikněte zde.",
"closing": "Díky!"
} }

View File

@@ -1,73 +1,56 @@
{ {
"invalid-data": "Neplatná data", "invalid-data": "Invalid Data",
"not-logged-in": "Zdá se, že nejste přihlášen(a)", "not-logged-in": "You don't seem to be logged in.",
"account-locked": "Váš účet byl dočasně uzamčen", "account-locked": "Your account has been locked temporarily",
"search-requires-login": "Chcete-li vyhledávat, musíte mít účet. Přihlašte se nebo zaregistrujte, prosím.", "search-requires-login": "Searching requires an account! Please login or register!",
"invalid-cid": "Neplatné ID kategorie", "invalid-cid": "Invalid Category ID",
"invalid-tid": "Neplatné ID tématu", "invalid-tid": "Invalid Topic ID",
"invalid-pid": "Neplatné ID příspěvku", "invalid-pid": "Invalid Post ID",
"invalid-uid": "Neplatné ID uživatele", "invalid-uid": "Invalid User ID",
"invalid-username": "Neplatné uživatelské jméno", "invalid-username": "Invalid Username",
"invalid-email": "Neplatný email", "invalid-email": "Invalid Email",
"invalid-title": "Neplatný titulek!", "invalid-title": "Invalid title!",
"invalid-user-data": "Neplatná uživatelská data", "invalid-user-data": "Invalid User Data",
"invalid-password": "Neplatné heslo", "invalid-password": "Invalid Password",
"invalid-username-or-password": "Stanovte, prosím, oboje, jak uživatelské jméno, tak heslo", "invalid-pagination-value": "Invalid pagination value",
"invalid-search-term": "Neplatný výraz pro vyhledávání", "username-taken": "Username taken",
"invalid-pagination-value": "Neplatná hodnota pro stránkování", "email-taken": "Email taken",
"username-taken": "Uživatelské jméno je již použito", "email-not-confirmed": "Your email is not confirmed, please click here to confirm your email.",
"email-taken": "Email je již použit", "username-too-short": "Username too short",
"email-not-confirmed": "Vaše emailová adresa zatím nebyla potvrzena. Kliknutím zde svůj email potvrdíte.", "user-banned": "User banned",
"email-not-confirmed-chat": "You are unable to chat until your email is confirmed", "no-category": "Category doesn't exist",
"username-too-short": "Uživatelské jméno je příliš krátké", "no-topic": "Topic doesn't exist",
"username-too-long": "Uživatelské jméno je příliš dlouhé", "no-post": "Post doesn't exist",
"user-banned": "Uživatel byl zakázán", "no-group": "Group doesn't exist",
"user-too-new": "Pardon, ale je potřeba vyčkat %1 sekund, než-li budete moci vytvořit svůj první příspěvek.", "no-user": "User doesn't exist",
"no-category": "Kategorie neexistuje", "no-teaser": "Teaser doesn't exist",
"no-topic": "Téma neexistuje", "no-privileges": "You don't have enough privileges for this action.",
"no-post": "Příspěvek neexistuje", "no-emailers-configured": "No email plugins were loaded, so a test email could not be sent",
"no-group": "Skupina neexistuje", "category-disabled": "Category disabled",
"no-user": "Uživatel neexistuje", "topic-locked": "Topic Locked",
"no-teaser": "Teaser does not exist", "still-uploading": "Please wait for uploads to complete.",
"no-privileges": "Na tuto akci nemáte dostatečná práva", "content-too-short": "Please enter a longer post. At least %1 characters.",
"no-emailers-configured": "Protože není zaveden žádný emailový plugin, není možné odeslat testovací email.", "title-too-short": "Please enter a longer title. At least %1 characters.",
"category-disabled": "Kategorie zakázána", "title-too-long": "Please enter a shorter title. Titles can't be longer than %1 characters.",
"topic-locked": "Téma uzamčeno", "too-many-posts": "You can only post every %1 seconds.",
"still-uploading": "Vyčkejte, prosím, nežli se vše kompletně nahraje.", "file-too-big": "Maximum allowed file size is %1 kbs",
"content-too-short": "Vložte, prosím, delší příspěvek. Příspěvky by měly obsahovat nejméně %1 znaků.", "cant-vote-self-post": "You cannot vote for your own post",
"title-too-short": "Vložte, prosím, delší titulek. Titulky by měly obsahovat nejméně %1 znaků.", "already-favourited": "You already favourited this post",
"title-too-long": "Vložte, prosím, kratší titulek. Titulky by neměly být delší, než-li %1 znaků.", "already-unfavourited": "You already unfavourited this post",
"too-many-posts": "Své příspěvky můžete odesílat po %1 sekundách - vyčkejte, prosím, před dalším odesláním", "cant-ban-other-admins": "You can't ban other admins!",
"too-many-posts-newbie": "Jako nový uživatel můžete své příspěvky odesílat po %1 sekundách, dokud nedosáhnete %2 reputace - vyčkejte, prosím, před dalším odesláním", "invalid-image-type": "Invalid image type",
"file-too-big": "Maximální povolená velikost souboru je %1 kbs - nahrávejte, prosím, menší soubory", "group-name-too-short": "Group name too short",
"cant-vote-self-post": "Nemůžete hlasovat pro svůj vlastní příspěvek", "group-already-exists": "Group already exists",
"already-favourited": "You have already favourited this post", "group-name-change-not-allowed": "Group name change not allowed",
"already-unfavourited": "You have already unfavourited this post", "post-already-deleted": "Post already deleted",
"cant-ban-other-admins": "Nemůžete zakazovat ostatní administrátory!", "post-already-restored": "Post already restored",
"invalid-image-type": "Invalid image type. Allowed types are: %1", "topic-already-deleted": "Topic already deleted",
"invalid-image-extension": "Invalid image extension", "topic-already-restored": "Topic already restored",
"group-name-too-short": "Název skupiny je příliš krátký",
"group-already-exists": "Skupina už exstuje",
"group-name-change-not-allowed": "Změna názvu skupiny není povolena",
"group-already-member": "You are already part of this group",
"group-needs-owner": "This group requires at least one owner",
"post-already-deleted": "Tento příspěvek byl již vymazán",
"post-already-restored": "Tento příspěvek byl již obnoven",
"topic-already-deleted": "Toto téma bylo již vymazáno",
"topic-already-restored": "Toto téma bylo již obnoveno",
"topic-thumbnails-are-disabled": "Topic thumbnails are disabled.", "topic-thumbnails-are-disabled": "Topic thumbnails are disabled.",
"invalid-file": "Neplatný soubor", "invalid-file": "Invalid File",
"uploads-are-disabled": "Nahrávání je zakázáno", "uploads-are-disabled": "Uploads are disabled",
"upload-error": "Chyba při nahrávání : %1", "upload-error": "Upload Error : %1",
"signature-too-long": "Pardon, ale váš podpis nemůže být delší, než-li %1 znaků.", "signature-too-long": "Signature can't be longer than %1 characters!",
"cant-chat-with-yourself": "Nemůžete chatovat sami se sebou!", "cant-chat-with-yourself": "You can't chat with yourself!",
"chat-restricted": "This user has restricted their chat messages. They must follow you before you can chat with them", "not-enough-reputation-to-downvote": "You do not have enough reputation to downvote this post"
"too-many-messages": "You have sent too many messages, please wait awhile.",
"reputation-system-disabled": "Systém reputací je zakázán.",
"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": "You 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.",
"registration-error": "Chyba při registraci",
"parse-error": "Something went wrong while parsing server response"
} }

View File

@@ -3,33 +3,31 @@
"search": "Hledat", "search": "Hledat",
"buttons.close": "Zavřít", "buttons.close": "Zavřít",
"403.title": "Přístup odepřen", "403.title": "Přístup odepřen",
"403.message": "You seem to have stumbled upon a page that you do not have access to.", "403.message": "K této stránce nemáte přístup. Zkuste se <a href='/login'>přihlásit</a>?",
"403.login": "Perhaps you should <a href='%1/login'>try logging in</a>?",
"404.title": "Stránka nenalezena", "404.title": "Stránka nenalezena",
"404.message": "You seem to have stumbled upon a page that does not exist. Return to the <a href='%1/'>home page</a>.", "404.message": "Tato stránka bohužel neexistuje. Vraťte se na <a href='/'>domovskou stránku</a>.",
"500.title": "Neznámá chyba", "500.title": "Neznámá chyba",
"500.message": "Jejda, vypadá to, že se něco pokazilo.", "500.message": "Jejda, vypadá to, že se něco pokazilo.",
"register": "Registrovat", "register": "Registrovat",
"login": "Přihlásit se", "login": "Přihlásit se",
"please_log_in": "Přihlašte se, prosím", "please_log_in": "Please Log In",
"logout": "Odhlásit se", "logout": "Odhlásit se",
"posting_restriction_info": "V současné době je zasílání příspěvků povoleno pouze registrovaným členům, klikněte zde a přihlašte se.", "posting_restriction_info": "Posting is currently restricted to registered members only, click here to log in.",
"welcome_back": "Vítejte zpět", "welcome_back": "Welcome Back",
"you_have_successfully_logged_in": "Vaše přihlášení proběhlo úspěšně", "you_have_successfully_logged_in": "You have successfully logged in",
"save_changes": "Uložit změny", "save_changes": "Uložit změny",
"close": "Zrušit", "close": "Zrušit",
"pagination": "Stránkování", "pagination": "Pagination",
"pagination.out_of": "%1 z %2", "pagination.out_of": "%1 out of %2",
"pagination.enter_index": "Enter index", "pagination.enter_index": "Enter index",
"header.admin": "Administrace", "header.admin": "Administrace",
"header.recent": "Aktuality", "header.recent": "Aktuality",
"header.unread": "Nepřečtené", "header.unread": "Nepřečtené",
"header.tags": "Tagy", "header.tags": "Tags",
"header.popular": "Populární", "header.popular": "Populární",
"header.users": "Uživatelé", "header.users": "Uživatelé",
"header.groups": "Groups",
"header.chats": "Chats", "header.chats": "Chats",
"header.notifications": "Oznámení", "header.notifications": "Notifications",
"header.search": "Hledat", "header.search": "Hledat",
"header.profile": "Můj profil", "header.profile": "Můj profil",
"notifications.loading": "Načítání upozornění", "notifications.loading": "Načítání upozornění",
@@ -38,14 +36,14 @@
"previouspage": "Předchozí stránka", "previouspage": "Předchozí stránka",
"nextpage": "Další stránka", "nextpage": "Další stránka",
"alert.success": "Success", "alert.success": "Success",
"alert.error": "Chyba", "alert.error": "Error",
"alert.banned": "Banned", "alert.banned": "Banned",
"alert.banned.message": "You have just been banned, you will now be logged out.", "alert.banned.message": "You have just been banned, you will now be logged out.",
"alert.unfollow": "You are no longer following %1!", "alert.unfollow": "You are no longer following %1!",
"alert.follow": "You are now following %1!", "alert.follow": "You are now following %1!",
"online": "Online", "online": "Online",
"users": "Uživatelé", "users": "Users",
"topics": "Témata", "topics": "Topics",
"posts": "Příspěvky", "posts": "Příspěvky",
"views": "Zobrazení", "views": "Zobrazení",
"reputation": "Reputation", "reputation": "Reputation",
@@ -60,8 +58,8 @@
"user_posted_ago": "%1 posted %2", "user_posted_ago": "%1 posted %2",
"guest_posted_ago": "Guest posted %1", "guest_posted_ago": "Guest posted %1",
"last_edited_by_ago": "last edited by %1 %2", "last_edited_by_ago": "last edited by %1 %2",
"norecentposts": "Žádné nedávné příspěvky", "norecentposts": "No Recent Posts",
"norecenttopics": "Žádné nedávné témata", "norecenttopics": "No Recent Topics",
"recentposts": "Nedávné příspěvky", "recentposts": "Nedávné příspěvky",
"recentips": "Recently Logged In IPs", "recentips": "Recently Logged In IPs",
"away": "Pryč", "away": "Pryč",
@@ -69,13 +67,9 @@
"invisible": "Neviditelný", "invisible": "Neviditelný",
"offline": "Offline", "offline": "Offline",
"email": "Email", "email": "Email",
"language": "Jazyk", "language": "Language",
"guest": "Host", "guest": "Guest",
"guests": "Hosté", "guests": "Guests",
"updated.title": "Fórum zaktualizováno", "updated.title": "Forum Updated",
"updated.message": "Toto fórum bylo právě aktualizováno na poslední verzi. Klikněte zde a obnovte tuto stránku.", "updated.message": "This forum has just been updated to the latest version. Click here to refresh the page."
"privacy": "Privacy",
"follow": "Follow",
"unfollow": "Unfollow",
"delete_all": "Vymazat vše"
} }

View File

@@ -1,21 +1,7 @@
{ {
"groups": "Skupiny", "view_group": "View Group",
"view_group": "Prohlédnout skupinu", "details.title": "Group Details",
"owner": "Group Owner", "details.members": "Member List",
"new_group": "Create New Group", "details.has_no_posts": "This group's members have not made any posts.",
"no_groups_found": "There are no groups to see", "details.latest_posts": "Latest Posts"
"cover-instructions": "Drag and Drop a photo, drag to position, and hit <strong>Save</strong>",
"cover-change": "Change",
"cover-save": "Save",
"cover-saving": "Saving",
"details.title": "podrobnosti skupiny",
"details.members": "Seznam členů",
"details.pending": "Pending Members",
"details.has_no_posts": "Členové této skupiny dosud neodeslali ani jeden příspěvek.",
"details.latest_posts": "Nejnovější příspěvky",
"details.private": "Private Group",
"details.public": "Public Group",
"details.owner_options": "Group Administration",
"event.updated": "Group details have been updated",
"event.deleted": "The group \"%1\" has been deleted"
} }

View File

@@ -1,9 +1,9 @@
{ {
"username": "Uživatelské jméno / Email", "username": "Username / Email",
"remember_me": "Zapamatovat si mě?", "remember_me": "Zapamatovat si mě?",
"forgot_password": "Zapomněli jste heslo?", "forgot_password": "Zapomněli jste heslo?",
"alternative_logins": "Další způsoby přihlášení", "alternative_logins": "Další způsoby přihlášení",
"failed_login_attempt": "Přihlášení se nezdařilo, zkuste to prosím znovu.", "failed_login_attempt": "Přihlášení se nezdařilo, zkuste to prosím znovu.",
"login_successful": "Přihlášení proběhlo úspěšně!", "login_successful": "Přihlášení proběhlo úspěšně!",
"dont_have_account": "Nemáte účet?" "dont_have_account": "Don't have an account?"
} }

View File

@@ -1,20 +1,17 @@
{ {
"chat.chatting_with": "Chat s <span id=\"chat-with-name\"></span>", "chat.chatting_with": "Chat s <span id=\"chat-with-name\"></span>",
"chat.placeholder": "Zprávu do chatu napište zde, pro odeslání stiskněte enter", "chat.placeholder": "Type chat message here, press enter to send",
"chat.send": "Odeslat", "chat.send": "Odeslat",
"chat.no_active": "Nemáte žádné aktivní konverzace.", "chat.no_active": "Nemáte žádné aktivní konverzace.",
"chat.user_typing": "%1 píše ...", "chat.user_typing": "%1 is typing ...",
"chat.user_has_messaged_you": "%1 has messaged you.", "chat.user_has_messaged_you": "%1 has messaged you.",
"chat.see_all": "See all Chats", "chat.see_all": "See all Chats",
"chat.no-messages": "Please select a recipient to view chat message history", "chat.no-messages": "Please select a recipient to view chat message history",
"chat.recent-chats": "Recent Chats", "chat.recent-chats": "Recent Chats",
"chat.contacts": "Kontakty", "chat.contacts": "Contacts",
"chat.message-history": "Historie zpráv", "chat.message-history": "Message History",
"chat.pop-out": "Pop out chat", "chat.pop-out": "Pop out chat",
"chat.maximize": "Maximalizovat", "chat.maximize": "Maximize",
"chat.seven_days": "7 dní",
"chat.thirty_days": "30 dní",
"chat.three_months": "3 měsíce",
"composer.user_said_in": "%1 said in %2:", "composer.user_said_in": "%1 said in %2:",
"composer.user_said": "%1 said:", "composer.user_said": "%1 said:",
"composer.discard": "Are you sure you wish to discard this post?" "composer.discard": "Are you sure you wish to discard this post?"

View File

@@ -10,15 +10,11 @@
"new_notification": "New Notification", "new_notification": "New Notification",
"you_have_unread_notifications": "You have unread notifications.", "you_have_unread_notifications": "You have unread notifications.",
"new_message_from": "New message from <strong>%1</strong>", "new_message_from": "New message from <strong>%1</strong>",
"upvoted_your_post_in": "<strong>%1</strong> has upvoted your post in <strong>%2</strong>.", "upvoted_your_post": "<strong>%1</strong> has upvoted your post.",
"moved_your_post": "<strong>%1</strong> has moved your post.", "favourited_your_post": "<strong>%1</strong> has favourited your post.",
"moved_your_topic": "<strong>%1</strong> has moved your topic.", "user_flagged_post": "<strong>%1</strong> flagged a post.",
"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_posted_to": "<strong>%1</strong> has posted a reply to: <strong>%2</strong>",
"user_posted_topic": "<strong>%1</strong> has posted a new topic: <strong>%2</strong>",
"user_mentioned_you_in": "<strong>%1</strong> mentioned you in <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": "Email Confirmed",
"email-confirmed-message": "Thank you for validating your email. Your account is now fully activated.", "email-confirmed-message": "Thank you for validating your email. Your account is now fully activated.",
"email-confirm-error": "An error occurred...", "email-confirm-error": "An error occurred...",

View File

@@ -12,7 +12,5 @@
"user.posts": "Posts made by %1", "user.posts": "Posts made by %1",
"user.topics": "Topics created by %1", "user.topics": "Topics created by %1",
"user.favourites": "%1's Favourite Posts", "user.favourites": "%1's Favourite Posts",
"user.settings": "User Settings", "user.settings": "User Settings"
"maintenance.text": "%1 is currently undergoing maintenance. Please come back another time.",
"maintenance.messageIntro": "Additionally, the administrator has left this message:"
} }

View File

@@ -4,15 +4,5 @@
"week": "Týden", "week": "Týden",
"month": "Měsíc", "month": "Měsíc",
"year": "Year", "year": "Year",
"alltime": "All Time", "no_recent_topics": "There are no recent topics."
"no_recent_topics": "There are no recent topics.",
"there-is-a-new-topic": "There is a new topic.",
"there-is-a-new-topic-and-a-new-post": "There is a new topic and a new post.",
"there-is-a-new-topic-and-new-posts": "There is a new topic and %1 new posts.",
"there-are-new-topics": "There are %1 new topics.",
"there-are-new-topics-and-a-new-post": "There are %1 new topics and a new post.",
"there-are-new-topics-and-new-posts": "There are %1 new topics and %2 new posts.",
"there-is-a-new-post": "There is a new post.",
"there-are-new-posts": "There are %1 new posts.",
"click-here-to-reload": "Click here to reload."
} }

View File

@@ -8,7 +8,7 @@
"new_password": "Nové heslo", "new_password": "Nové heslo",
"repeat_password": "Potvrzení hesla", "repeat_password": "Potvrzení hesla",
"enter_email": "Zadejte svou <strong>emailovou adresu</strong> a my Vám pošleme informace, jak můžete obnovit své heslo.", "enter_email": "Zadejte svou <strong>emailovou adresu</strong> a my Vám pošleme informace, jak můžete obnovit své heslo.",
"enter_email_address": "Zadejte emailovou adresu", "enter_email_address": "Enter Email Address",
"password_reset_sent": "Obnova hesla odeslána", "password_reset_sent": "Obnova hesla odeslána",
"invalid_email": "Špatný email / Email neexistuje!" "invalid_email": "Špatný email / Email neexistuje!"
} }

View File

@@ -1,7 +1,3 @@
{ {
"results_matching": "%1 result(s) matching \"%2\", (%3 seconds)", "results_matching": "%1 result(s) matching \"%2\", (%3 seconds)"
"no-matches": "No matches found",
"in": "In",
"by": "By",
"posted-by": "Posted by"
} }

View File

@@ -1,7 +1,6 @@
{ {
"no_tag_topics": "Není zde žádné téma s tímto tagem.", "no_tag_topics": "There are no topics with this tag.",
"tags": "Tagy", "tags": "Tags",
"enter_tags_here": "Zde vložte tagy. Po každém vložení tagu zmáčkněte enter.", "enter_tags_here": "Enter tags here. Press enter after each tag.",
"enter_tags_here_short": "Vložte tagy ...", "no_tags": "There are no tags yet."
"no_tags": "Zatím tu není žádný tag."
} }

View File

@@ -1,10 +1,10 @@
{ {
"topic": "Téma", "topic": "Téma",
"topic_id": "ID tématu", "topic_id": "Topic ID",
"topic_id_placeholder": "Vložte ID tématu", "topic_id_placeholder": "Enter topic ID",
"no_topics_found": "Nebyla nalezena žádná témata!", "no_topics_found": "Nebyla nalezena žádná témata!",
"no_posts_found": "Nebyly nalezeny žádné příspěvky!", "no_posts_found": "No posts found!",
"post_is_deleted": "Tento příspěvek je vymazán!", "post_is_deleted": "This post is deleted!",
"profile": "Profil", "profile": "Profil",
"posted_by": "Posted by %1", "posted_by": "Posted by %1",
"posted_by_guest": "Posted by Guest", "posted_by_guest": "Posted by Guest",
@@ -18,6 +18,7 @@
"restore": "Restore", "restore": "Restore",
"move": "Přesunout", "move": "Přesunout",
"fork": "Rozdělit", "fork": "Rozdělit",
"banned": "banned",
"link": "Odkaz", "link": "Odkaz",
"share": "Sdílet", "share": "Sdílet",
"tools": "Nástroje", "tools": "Nástroje",
@@ -27,17 +28,15 @@
"flag_title": "Flag this post for moderation", "flag_title": "Flag this post for moderation",
"flag_confirm": "Are you sure you want to flag this post?", "flag_confirm": "Are you sure you want to flag this post?",
"flag_success": "This post has been flagged for moderation.", "flag_success": "This post has been flagged for moderation.",
"deleted_message": "This topic has been deleted. Only users with topic management privileges can see it.", "deleted_message": "This thread has been deleted. Only users with thread management privileges can see it.",
"following_topic.message": "You will now be receiving notifications when somebody posts to this topic.", "following_topic.message": "You will now be receiving notifications when somebody posts to this topic.",
"not_following_topic.message": "You will no longer receive notifications from this 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.", "login_to_subscribe": "Please register or log in in order to subscribe to this topic.",
"markAsUnreadForAll.success": "Topic marked as unread for all.", "markAsUnreadForAll.success": "Topic marked as unread for all.",
"watch": "Watch", "watch": "Watch",
"unwatch": "Unwatch",
"watch.title": "Be notified of new replies in this topic", "watch.title": "Be notified of new replies in this topic",
"unwatch.title": "Stop watching this topic",
"share_this_post": "Share this Post", "share_this_post": "Share this Post",
"thread_tools.title": "Topic Tools", "thread_tools.title": "Nástroje",
"thread_tools.markAsUnreadForAll": "Označit jako nepřečtené", "thread_tools.markAsUnreadForAll": "Označit jako nepřečtené",
"thread_tools.pin": "Pin Topic", "thread_tools.pin": "Pin Topic",
"thread_tools.unpin": "Unpin Topic", "thread_tools.unpin": "Unpin Topic",
@@ -47,11 +46,11 @@
"thread_tools.move_all": "Move All", "thread_tools.move_all": "Move All",
"thread_tools.fork": "Fork Topic", "thread_tools.fork": "Fork Topic",
"thread_tools.delete": "Delete Topic", "thread_tools.delete": "Delete Topic",
"thread_tools.delete_confirm": "Are you sure you want to delete this topic?", "thread_tools.delete_confirm": "Are you sure you want to delete this thread?",
"thread_tools.restore": "Restore Topic", "thread_tools.restore": "Restore Topic",
"thread_tools.restore_confirm": "Are you sure you want to restore this topic?", "thread_tools.restore_confirm": "Are you sure you want to restore this thread?",
"thread_tools.purge": "Purge Topic", "thread_tools.purge": "Purge Topic",
"thread_tools.purge_confirm": "Are you sure you want to purge this 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", "topic_move_success": "This topic has been successfully moved to %1",
"post_delete_confirm": "Are you sure you want to delete this post?", "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_restore_confirm": "Are you sure you want to restore this post?",
@@ -72,9 +71,8 @@
"topic_will_be_moved_to": "Toto téma bude přesunuto do kategorie", "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_topic_instruction": "Vyber příspěvky, které chceš oddělit",
"fork_no_pids": "Žádné příspěvky nebyly vybrány!", "fork_no_pids": "Žádné příspěvky nebyly vybrány!",
"fork_success": "Successfully forked topic! Click here to go to the forked topic.", "fork_success": "Téma bylo úspěšně rozděleno!",
"composer.title_placeholder": "Enter your topic title here...", "composer.title_placeholder": "Enter your topic title here...",
"composer.handle_placeholder": "Name",
"composer.discard": "Discard", "composer.discard": "Discard",
"composer.submit": "Submit", "composer.submit": "Submit",
"composer.replying_to": "Replying to %1", "composer.replying_to": "Replying to %1",
@@ -93,6 +91,5 @@
"sort_by": "Sort by", "sort_by": "Sort by",
"oldest_to_newest": "Oldest to Newest", "oldest_to_newest": "Oldest to Newest",
"newest_to_oldest": "Newest to Oldest", "newest_to_oldest": "Newest to Oldest",
"most_votes": "Most votes", "most_votes": "Most votes"
"most_posts": "Most posts"
} }

View File

@@ -1,9 +1,9 @@
{ {
"title": "Nepřečtené", "title": "Unread",
"no_unread_topics": "Nejsou zde žádné nepřečtené témata.", "no_unread_topics": "Nejsou zde žádné nepřečtené témata.",
"load_more": "Načíst další", "load_more": "Načíst další",
"mark_as_read": "Označit jako přeštené", "mark_as_read": "Mark as Read",
"selected": "Vybrané", "selected": "Selected",
"all": "Vše", "all": "All",
"topics_marked_as_read.success": "Téma bylo označeno jako přečtené!" "topics_marked_as_read.success": "Topics marked as read!"
} }

View File

@@ -2,23 +2,18 @@
"banned": "Banned", "banned": "Banned",
"offline": "Offline", "offline": "Offline",
"username": "Uživatelské jméno", "username": "Uživatelské jméno",
"joindate": "Join Date",
"postcount": "Post Count",
"email": "Email", "email": "Email",
"confirm_email": "Potvrdit email", "confirm_email": "Confirm Email",
"delete_account": "Vymazat účet",
"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í", "fullname": "Jméno a příjmení",
"website": "Webové stránky", "website": "Webové stránky",
"location": "Poloha", "location": "Poloha",
"age": "Věk", "age": "Věk",
"joined": "Registrován", "joined": "Registrován",
"lastonline": "Naposledy online", "lastonline": "Naposledy online",
"profile": "Profil", "profile": "Profile",
"profile_views": "Zobrazení profilu", "profile_views": "Zobrazení profilu",
"reputation": "Reputace", "reputation": "Reputace",
"favourites": "Oblíbené", "favourites": "Oblíbené",
"watched": "Watched",
"followers": "Sledují ho", "followers": "Sledují ho",
"following": "Sleduje", "following": "Sleduje",
"signature": "Podpis", "signature": "Podpis",
@@ -27,15 +22,14 @@
"chat": "Chat", "chat": "Chat",
"follow": "Follow", "follow": "Follow",
"unfollow": "Unfollow", "unfollow": "Unfollow",
"profile_update_success": "Profil byl úspěšně aktualizován!", "profile_update_success": "Profile has been updated successfully!",
"change_picture": "Změnit obrázek", "change_picture": "Změnit obrázek",
"edit": "Upravit", "edit": "Upravit",
"uploaded_picture": "Nahraný obrázek", "uploaded_picture": "Nahraný obrázek",
"upload_new_picture": "Nahrát nový obrázek", "upload_new_picture": "Nahrát nový obrázek",
"upload_new_picture_from_url": "Upload New Picture From URL", "current_password": "Current Password",
"current_password": "Současné heslo",
"change_password": "Změnit heslo", "change_password": "Změnit heslo",
"change_password_error": "Neplatné heslo", "change_password_error": "Invalid Password!",
"change_password_error_wrong_current": "Your current password is not correct!", "change_password_error_wrong_current": "Your current password is not correct!",
"change_password_error_length": "Password too short!", "change_password_error_length": "Password too short!",
"change_password_error_match": "Passwords must match!", "change_password_error_match": "Passwords must match!",
@@ -50,21 +44,16 @@
"max": "max.", "max": "max.",
"settings": "Nastavení", "settings": "Nastavení",
"show_email": "Zobrazovat můj email v profilu", "show_email": "Zobrazovat můj email v profilu",
"show_fullname": "Show My Full Name",
"restrict_chats": "Only allow chat messages from users I follow",
"digest_label": "Subscribe to Digest", "digest_label": "Subscribe to Digest",
"digest_description": "Subscribe to email updates for this forum (new notifications and topics) according to a set schedule", "digest_description": "Subscribe to email updates for this forum (new notifications and topics) according to a set schedule",
"digest_off": "Off", "digest_off": "Off",
"digest_daily": "Daily", "digest_daily": "Daily",
"digest_weekly": "Weekly", "digest_weekly": "Weekly",
"digest_monthly": "Monthly", "digest_monthly": "Monthly",
"send_chat_notifications": "Send an email if a new chat message arrives and I am not online",
"send_post_notifications": "Send an email when replies are made to topics I am subscribed to",
"has_no_follower": "Tohoto uživatele nikdo nesleduje :(", "has_no_follower": "Tohoto uživatele nikdo nesleduje :(",
"follows_no_one": "Tento uživatel nikoho nesleduje :(", "follows_no_one": "Tento uživatel nikoho nesleduje :(",
"has_no_posts": "This user didn't post anything yet.", "has_no_posts": "This user didn't post anything yet.",
"has_no_topics": "This user didn't post any topics yet.", "has_no_topics": "This user didn't post any topics yet.",
"has_no_watched_topics": "This user didn't watch any topics yet.",
"email_hidden": "Skrytý email", "email_hidden": "Skrytý email",
"hidden": "skrytý", "hidden": "skrytý",
"paginate_description": "Paginate topics and posts instead of using infinite scroll.", "paginate_description": "Paginate topics and posts instead of using infinite scroll.",
@@ -72,9 +61,5 @@
"posts_per_page": "Posts per Page", "posts_per_page": "Posts per Page",
"notification_sounds": "Play a sound when you receive a notification.", "notification_sounds": "Play a sound when you receive a notification.",
"browsing": "Browsing Settings", "browsing": "Browsing Settings",
"open_links_in_new_tab": "Open outgoing links in new tab?", "open_links_in_new_tab": "Open outgoing links in new tab?"
"enable_topic_searching": "Enable In-Topic Searching",
"topic_search_help": "If enabled, in-topic searching will override the browser's default page search behaviour and allow you to search through the entire topic, instead of what is only shown on screen.",
"follow_topics_you_reply_to": "Follow topics that you reply to.",
"follow_topics_you_create": "Follow topics you create."
} }

View File

@@ -5,8 +5,6 @@
"search": "Vyhledávat", "search": "Vyhledávat",
"enter_username": "Zadej uživatelské jméno k hledání", "enter_username": "Zadej uživatelské jméno k hledání",
"load_more": "Načíst další", "load_more": "Načíst další",
"users-found-search-took": "Nazelezeno: %1 uživetel(ů)! Vyhledání trvalo %2 ms.", "user-not-found": "User not found!",
"filter-by": "Filter By", "users-found-search-took": "%1 user(s) found! Search took %2 ms."
"online-only": "Online only",
"picture-only": "Picture only"
} }

View File

@@ -3,6 +3,5 @@
"no_topics": "<strong>Es gibt noch keine Themen in dieser Kategorie.</strong><br />Warum beginnst du nicht das erste?", "no_topics": "<strong>Es gibt noch keine Themen in dieser Kategorie.</strong><br />Warum beginnst du nicht das erste?",
"browsing": "Aktiv", "browsing": "Aktiv",
"no_replies": "Niemand hat geantwortet", "no_replies": "Niemand hat geantwortet",
"share_this_category": "Teile diese Kategorie", "share_this_category": "Teile diese Kategorie"
"ignore": "Ignorieren"
} }

View File

@@ -9,17 +9,12 @@
"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.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.text2": "Klicke bitte auf den folgenden Link, um mit der Zurücksetzung deines Passworts fortzufahren:",
"reset.cta": "Klicke hier, um dein Passwort zurückzusetzen", "reset.cta": "Klicke hier, um dein Passwort zurückzusetzen",
"digest.notifications": "Du hast ungelesene Benachrichtigungen von %1:", "digest.notifications": "Du hast einige ungelesene Benachrichtigungen vom %1:",
"digest.latest_topics": "Aktuellste Themen vom %1", "digest.latest_topics": "Aktuellste Themen vom %1",
"digest.cta": "Klicke hier, um %1 zu besuchen", "digest.cta": "Klicke hier, um %1 zu besuchen",
"digest.unsub.info": "Diese Zusammenfassung wurde dir aufgrund deiner Abonnement-Einstellungen gesendet.", "digest.unsub.info": "Diese Zusammenfassung wurde dir aufgrund deiner Abonnement-Einstellungen gesendet.",
"digest.no_topics": "Es gab keine aktiven Themen in den letzten %1", "digest.unsub.cta": "Klicke hier, um diese Einstellungen zu ändern",
"notif.chat.subject": "Neue Chatnachricht von %1 erhalten", "digest.daily.no_topics": "Es gab heute keine aktiven Themen",
"notif.chat.cta": "Klicke hier, um die Unterhaltung fortzusetzen",
"notif.chat.unsub.info": "Diese Chat-Benachrichtigung wurde dir aufgrund deiner Abonnement-Einstellungen gesendet.",
"notif.post.cta": "Hier klicken, um das gesamte Thema zu lesen",
"notif.post.unsub.info": "Diese Mitteilung wurde wegen ihrer Abonnement-Einstellung gesendet.",
"test.text1": "Dies ist eine Test-E-Mail, um zu überprüfen, ob der E-Mailer deines NodeBB korrekt eingestellt wurde.", "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!" "closing": "Danke!"
} }

View File

@@ -12,62 +12,45 @@
"invalid-title": "Ungültiger Titel", "invalid-title": "Ungültiger Titel",
"invalid-user-data": "Ungültige Benutzerdaten", "invalid-user-data": "Ungültige Benutzerdaten",
"invalid-password": "Ungültiges Passwort", "invalid-password": "Ungültiges Passwort",
"invalid-username-or-password": "Bitte gebe einen Benutzernamen und ein Passwort an",
"invalid-search-term": "Ungültige Suchanfrage",
"invalid-pagination-value": "Die Nummerierung ist ungültig", "invalid-pagination-value": "Die Nummerierung ist ungültig",
"username-taken": "Der Benutzername ist bereits vergeben", "username-taken": "Der Benutzername ist bereits vergeben",
"email-taken": "Die E-Mail-Adresse 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.", "email-not-confirmed": "Deine E-Mail wurde noch nicht bestätigt. Bitte klicke hier, um deine E-Mail zu bestätigen.",
"email-not-confirmed-chat": "Der Chat ist deaktiviert bis Du deine E-Mail bestätigt hast",
"username-too-short": "Benutzername ist zu kurz", "username-too-short": "Benutzername ist zu kurz",
"username-too-long": "Der Benutzername ist zu lang",
"user-banned": "Der Benutzer ist gesperrt", "user-banned": "Der Benutzer ist gesperrt",
"user-too-new": "Entschuldigung, du musst %1 Sekunden warten, bevor du deinen ersten Beitrag verfassen kannst!",
"no-category": "Die Kategorie existiert nicht", "no-category": "Die Kategorie existiert nicht",
"no-topic": "Das Thema existiert nicht", "no-topic": "Das Thema existiert nicht",
"no-post": "Der Beitrag existiert nicht", "no-post": "Der Beitrag existiert nicht",
"no-group": "Die Gruppe existiert nicht", "no-group": "Die Gruppe existiert nicht",
"no-user": "Der Benutzer existiert nicht", "no-user": "Der Benutzer existiert nicht",
"no-teaser": "Zusammenfassung existiert nicht", "no-teaser": "Kurztext existiert nicht",
"no-privileges": "Du verfügst nicht über ausreichende Berechtigungen, um die Aktion durchzuführen.", "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.", "no-emailers-configured": "Es wurde keine E-Mail-Plugins geladen, weshalb eine Test-E-Mail nicht gesendet werden konnte.",
"category-disabled": "Kategorie ist deaktiviert", "category-disabled": "Kategorie ist deaktiviert",
"topic-locked": "Thema ist gesperrt", "topic-locked": "Thema ist gesperrt",
"still-uploading": "Bitte warte bis der Vorgang abgeschlossen ist.", "still-uploading": "Bitte warte bis der Vorgang abgeschlossen ist.",
"content-too-short": "Bitte gib einen längeren Beitrag ein. Beiträge sollten mindestens %1 Zeichen enthalten.", "content-too-short": "Der Beitrag muss mindestens %1 Zeichen enthalten.",
"title-too-short": "Bitte gib einen längeren Titel ein. Titel sollten mindestens %1 Zeichen enthalten.", "title-too-short": "Der Titel muss mindestens %1 Zeichen enthalten.",
"title-too-long": "Der Titel darf maximal %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 - bitte warte, bevor du einen neuen Beitrag erstellst", "too-many-posts": "Du kannst maximal alle %1 Sekunden einen Beitrag erstellen.",
"too-many-posts-newbie": "Als neuer Benutzer kannst du nur alle %1 Sekunden einen Beitrag verfassen, bis du %2 Reputationspunkte hast - Bitte warte etwas, bevor du erneut einen Beitrag verfasst", "file-too-big": "Die maximale Dateigröße beträgt %1 kbs",
"file-too-big": "Die maximale Dateigröße beträgt %1 kbs - bitte lade eine kleinere Datei hoch",
"cant-vote-self-post": "Du kannst deinen eigenen Beitrag nicht bewerten.", "cant-vote-self-post": "Du kannst deinen eigenen Beitrag nicht bewerten.",
"already-favourited": "Dieser Beitrag ist bereits in deinen Favoriten enthalten", "already-favourited": "Dieser Beitrag ist bereits in deinen Favoriten enthalten",
"already-unfavourited": "Du hast diesen Beitrag bereits aus deinen Favoriten entfernt", "already-unfavourited": "Du hast diesen Beitrag bereits aus deinen Favoriten entfernt",
"cant-ban-other-admins": "Du kannst andere Administratoren nicht sperren!", "cant-ban-other-admins": "Du kannst andere Administratoren nicht sperren!",
"invalid-image-type": "Falsche Bildart. Erlaubte Arten sind: %1", "invalid-image-type": "Ungültiger Bildtyp",
"invalid-image-extension": "Ungültige Dateinamenerweiterung",
"group-name-too-short": "Gruppenname zu kurz", "group-name-too-short": "Gruppenname zu kurz",
"group-already-exists": "Gruppe existiert bereits", "group-already-exists": "Gruppe existiert bereits",
"group-name-change-not-allowed": "Du kannst den Namen der Gruppe nicht ändern", "group-name-change-not-allowed": "Du kannst den Namen der Gruppe nicht ändern",
"group-already-member": "Du bist bereits Teil dieser Gruppe", "post-already-deleted": "Beitrag wurde bereits gelöscht",
"group-needs-owner": "Diese Gruppe muss mindestens einen Besitzer vorweisen", "post-already-restored": "Der Beitrag wurde bereits wiederhergestellt",
"post-already-deleted": "Dieser Beitrag ist bereits gelöscht worden", "topic-already-deleted": "Das Thema wurde bereits gelöscht",
"post-already-restored": "Dieser Beitrag ist bereits wiederhergestellt worden", "topic-already-restored": "Das Thema wurde bereits wiederhergestellt",
"topic-already-deleted": "Dieses Thema ist bereits gelöscht worden",
"topic-already-restored": "Dieses Thema ist bereits wiederhergestellt worden",
"topic-thumbnails-are-disabled": "Vorschaubilder für Themen sind deaktiviert", "topic-thumbnails-are-disabled": "Vorschaubilder für Themen sind deaktiviert",
"invalid-file": "Datei ungültig", "invalid-file": "Datei ungültig",
"uploads-are-disabled": "Uploads sind deaktiviert", "uploads-are-disabled": "Uploads sind deaktiviert",
"upload-error": "Upload-Fehler: %1", "upload-error": "Upload-Fehler: %1",
"signature-too-long": "Entschuldigung, deine Signatur darf maximal %1 Zeichen enthalten.", "signature-too-long": "Die Signatur darf maximal %1 Zeichen enthalten!",
"cant-chat-with-yourself": "Du kannst nicht mit dir selber chatten!", "cant-chat-with-yourself": "Du kannst nicht mit dir selber chatten!",
"chat-restricted": "Dieser Benutzer hat seine Chatfunktion eingeschränkt. Du kannst nur mit diesem Benutzer chatten, wenn er dir folgt.", "not-enough-reputation-to-downvote": "Deine Reputation ist zu niedrig, um diesen Beitrag negativ zu bewerten."
"too-many-messages": "Du hast zu viele Nachrichten versandt, bitte warte eine Weile.",
"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.",
"registration-error": "Registrierungsfehler",
"parse-error": "Ein Fehler ist beim Parsen der Server-Antwort aufgetreten"
} }

View File

@@ -3,10 +3,9 @@
"search": "Suche", "search": "Suche",
"buttons.close": "Schließen", "buttons.close": "Schließen",
"403.title": "Zugriff verweigert", "403.title": "Zugriff verweigert",
"403.message": "Du hast keine Zugriffsberechtigung für diese Seite.", "403.message": "Du bist nicht dazu berechtigt, diese Seite aufzurufen. <a href='/login'>Logge dich ein</a> und versuche es erneut.",
"403.login": "Du solltest Dich <a href='%1/login'>einloggen</a>.",
"404.title": " Nicht Gefunden", "404.title": " Nicht Gefunden",
"404.message": "Diese Seite existiert nicht. Zur <a href='%1/'>Homepage</a> zurückkehren.", "404.message": "Die angeforderte Seite wurde nicht gefunden. <a href='/''>Zurück zur Übersicht</a>.",
"500.title": "Interner Fehler.", "500.title": "Interner Fehler.",
"500.message": "Ups! Scheint als wäre etwas schief gelaufen!", "500.message": "Ups! Scheint als wäre etwas schief gelaufen!",
"register": "Registrieren", "register": "Registrieren",
@@ -27,7 +26,6 @@
"header.tags": "Tags", "header.tags": "Tags",
"header.popular": "Beliebt", "header.popular": "Beliebt",
"header.users": "Benutzer", "header.users": "Benutzer",
"header.groups": "Gruppen",
"header.chats": "Chats", "header.chats": "Chats",
"header.notifications": "Benachrichtigungen", "header.notifications": "Benachrichtigungen",
"header.search": "Suche", "header.search": "Suche",
@@ -73,9 +71,5 @@
"guest": "Gast", "guest": "Gast",
"guests": "Gäste", "guests": "Gäste",
"updated.title": "Forum aktualisiert", "updated.title": "Forum aktualisiert",
"updated.message": "Dieses Forum wurde gerade auf die neueste Version aktualisiert. Klicke hier, um die Seite neuzuladen.", "updated.message": "Dieses Forum wurde gerade auf die neueste Version aktualisiert. Klicke hier, um die Seite neuzuladen."
"privacy": "Privatsphäre",
"follow": "Folgen",
"unfollow": "Entfolgen",
"delete_all": "Alles löschen"
} }

View File

@@ -1,21 +1,7 @@
{ {
"groups": "Gruppen",
"view_group": "Gruppe betrachten", "view_group": "Gruppe betrachten",
"owner": "Gruppenbesitzer",
"new_group": "Neue Gruppe erstellen",
"no_groups_found": "Es sind keine Gruppen vorhanden",
"cover-instructions": "Drag and Drop ein Foto, bewege es in Position, dann drücke <strong>Speichern</strong>",
"cover-change": "Ändern",
"cover-save": "Speichern",
"cover-saving": "Am speichern",
"details.title": "Gruppendetails", "details.title": "Gruppendetails",
"details.members": "Mitgliederliste", "details.members": "Mitgliederliste",
"details.pending": "Ausstehende Mitglieder",
"details.has_no_posts": "Die Mitglieder dieser Gruppe haben keine Beiträge verfasst.", "details.has_no_posts": "Die Mitglieder dieser Gruppe haben keine Beiträge verfasst.",
"details.latest_posts": "Aktuelle Beiträge", "details.latest_posts": "Aktuelle Beiträge"
"details.private": "Private Gruppe",
"details.public": "Öffentliche Gruppe",
"details.owner_options": "Gruppenadministration",
"event.updated": "Gruppendetails wurden aktualisiert",
"event.deleted": "Die Gruppe \"% 1\" wurde gelöscht"
} }

View File

@@ -12,9 +12,6 @@
"chat.message-history": "Nachrichtenverlauf", "chat.message-history": "Nachrichtenverlauf",
"chat.pop-out": "Chat als Pop-out anzeigen", "chat.pop-out": "Chat als Pop-out anzeigen",
"chat.maximize": "Maximieren", "chat.maximize": "Maximieren",
"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_in": "%1 sagte in %2:",
"composer.user_said": "%1 sagte:", "composer.user_said": "%1 sagte:",
"composer.discard": "Bist du sicher, dass du diesen Post verwerfen möchtest?" "composer.discard": "Bist du sicher, dass du diesen Post verwerfen möchtest?"

View File

@@ -10,15 +10,11 @@
"new_notification": "Neue Benachrichtigung", "new_notification": "Neue Benachrichtigung",
"you_have_unread_notifications": "Du hast ungelesene Benachrichtigungen.", "you_have_unread_notifications": "Du hast ungelesene Benachrichtigungen.",
"new_message_from": "Neue Nachricht von <strong>%1</strong>", "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.", "upvoted_your_post": "<strong>%1</strong> hat deinen Beitrag positiv bewertet.",
"moved_your_post": "<strong>%1</strong> hat deinen Beitrag verschoben.", "favourited_your_post": "<strong>%1</strong> favorisiert deinen Beitrag.",
"moved_your_topic": "<strong>%1</strong> hat dein Thema verschoben.", "user_flagged_post": "<strong>%1</strong> hat einen Beitrag markiert.",
"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_posted_to": "<strong>%1</strong> hat auf <strong>%2</strong> geantwortet.",
"user_posted_topic": "<strong>%1</strong> hat ein neues Thema erstellt: <strong>%2</strong>",
"user_mentioned_you_in": "<strong>%1</strong> erwähnte dich in <strong>%2</strong>", "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": "E-Mail bestätigt",
"email-confirmed-message": "Vielen Dank für Ihre E-Mail-Validierung. Ihr Konto ist nun vollständig aktiviert.", "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": "Es ist ein Fehler aufgetreten ...",

View File

@@ -5,14 +5,12 @@
"recent": "Neueste Themen", "recent": "Neueste Themen",
"users": "Registrierte User", "users": "Registrierte User",
"notifications": "Benachrichtigungen", "notifications": "Benachrichtigungen",
"tags": "Themen markiert unter \"%1\"", "tags": "Topics tagged under \"%1\"",
"user.edit": "Bearbeite \"%1\"", "user.edit": "Bearbeite \"%1\"",
"user.following": "Nutzer, die %1 folgt", "user.following": "Nutzer, die %1 folgt",
"user.followers": "Nutzer, die %1 folgen", "user.followers": "Nutzer, die %1 folgen",
"user.posts": "Beiträge von %1", "user.posts": "Beiträge von %1",
"user.topics": "Themen von %1", "user.topics": "Themen von %1",
"user.favourites": "Von %1 favorisierte Beiträge", "user.favourites": "Von %1 favorisierte Beiträge",
"user.settings": "Benutzer-Einstellungen", "user.settings": "Benutzer-Einstellungen"
"maintenance.text": "%1 befindet sich derzeit in der Wartung. Bitte komm später wieder.",
"maintenance.messageIntro": "Zusätzlich hat der Administrator diese Nachricht hinterlassen:"
} }

View File

@@ -4,15 +4,5 @@
"week": "Woche", "week": "Woche",
"month": "Monat", "month": "Monat",
"year": "Jahr", "year": "Jahr",
"alltime": "Gesamter Zeitraum", "no_recent_topics": "Es gibt keine aktuellen Themen."
"no_recent_topics": "Es gibt keine aktuellen Themen.",
"there-is-a-new-topic": "Es gibt ein neues Thema.",
"there-is-a-new-topic-and-a-new-post": "Es gibt ein neues Thema und einen neuen Beitrag.",
"there-is-a-new-topic-and-new-posts": "Es gibt ein neues Thema und %1 neue Beiträge.",
"there-are-new-topics": "Es gibt %1 neue Themen.",
"there-are-new-topics-and-a-new-post": "Es gibt %1 neue Themen und einen neuen Beitrag.",
"there-are-new-topics-and-new-posts": "Es gibt %1 neue Themen und %2 neue Beiträge.",
"there-is-a-new-post": "Es gibt einen neuen Beitrag.",
"there-are-new-posts": "Es gibt %1 neue Beiträge.",
"click-here-to-reload": "Hier klicken um neu zu laden."
} }

View File

@@ -1,7 +1,3 @@
{ {
"results_matching": "%1 Ergebniss(e) stimmen mit \"%2\" überein, (%3 Sekunden)", "results_matching": "%1 Ergebniss(e) stimmen mit \"%2\" überein, (%3 Sekunden)"
"no-matches": "Keine Ergebnisse gefunden",
"in": "In",
"by": "Bei",
"posted-by": "Geschrieben von"
} }

View File

@@ -2,6 +2,5 @@
"no_tag_topics": "Es gibt keine Themen mit diesem Tag.", "no_tag_topics": "Es gibt keine Themen mit diesem Tag.",
"tags": "Tags", "tags": "Tags",
"enter_tags_here": "Gib hier Tags ein und drück die Eingabetaste nach jedem Tag.", "enter_tags_here": "Gib hier Tags ein und drück die Eingabetaste nach jedem Tag.",
"enter_tags_here_short": "Gib Tags ein...",
"no_tags": "Es gibt bisher keine Tags." "no_tags": "Es gibt bisher keine Tags."
} }

View File

@@ -18,6 +18,7 @@
"restore": "Wiederherstellen", "restore": "Wiederherstellen",
"move": "verschieben", "move": "verschieben",
"fork": "Aufspalten", "fork": "Aufspalten",
"banned": "gesperrt",
"link": "Link", "link": "Link",
"share": "Teilen", "share": "Teilen",
"tools": "Tools", "tools": "Tools",
@@ -33,11 +34,9 @@
"login_to_subscribe": "Bitte registrieren oder einloggen um dieses Thema zu abonnieren", "login_to_subscribe": "Bitte registrieren oder einloggen um dieses Thema zu abonnieren",
"markAsUnreadForAll.success": "Thema für Alle als ungelesen markiert.", "markAsUnreadForAll.success": "Thema für Alle als ungelesen markiert.",
"watch": "Beobachten", "watch": "Beobachten",
"unwatch": "Nicht mehr beobachten",
"watch.title": "Bei neuen Antworten benachrichtigen", "watch.title": "Bei neuen Antworten benachrichtigen",
"unwatch.title": "Dieses Thema nicht mehr beobachten",
"share_this_post": "Diesen Beitrag teilen", "share_this_post": "Diesen Beitrag teilen",
"thread_tools.title": "Themen-Tools", "thread_tools.title": "Tools",
"thread_tools.markAsUnreadForAll": "Als ungelesen markieren", "thread_tools.markAsUnreadForAll": "Als ungelesen markieren",
"thread_tools.pin": "Thema anpinnen", "thread_tools.pin": "Thema anpinnen",
"thread_tools.unpin": "Thema nicht mehr anpinnen", "thread_tools.unpin": "Thema nicht mehr anpinnen",
@@ -47,11 +46,11 @@
"thread_tools.move_all": "Alle verschieben", "thread_tools.move_all": "Alle verschieben",
"thread_tools.fork": "Thema aufspalten", "thread_tools.fork": "Thema aufspalten",
"thread_tools.delete": "Thema löschen", "thread_tools.delete": "Thema löschen",
"thread_tools.delete_confirm": "Bist du sicher, dass du dieses Thema löschen möchtest?", "thread_tools.delete_confirm": "Sind Sie sicher, dass Sie dieses Thema löschen möchten?",
"thread_tools.restore": "Thema wiederherstellen", "thread_tools.restore": "Thema wiederherstellen",
"thread_tools.restore_confirm": "Bist du sicher, dass du dieses Thema wiederherstellen möchtest?", "thread_tools.restore_confirm": "Sind Sie sicher, dass Sie dieses Thema wiederherstellen möchten?",
"thread_tools.purge": "Thema bereinigen", "thread_tools.purge": "Thema bereinigen",
"thread_tools.purge_confirm": "Bist du sicher, dass du dieses Thema bereinigen möchtest?", "thread_tools.purge_confirm": "Sind Sie sicher, dass Sie dieses Thema bereinigen möchten?",
"topic_move_success": "Thema wurde erfolgreich zu %1 verschoben.", "topic_move_success": "Thema wurde erfolgreich zu %1 verschoben.",
"post_delete_confirm": "Sind Sie sicher, dass Sie diesen Beitrag löschen möchten?", "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_restore_confirm": "Sind Sie sicher, dass Sie diesen Beitrag wiederherstellen möchten?",
@@ -72,9 +71,8 @@
"topic_will_be_moved_to": "Dieses Thema wird verschoben nach", "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 Beiträge, die du aufspalten willst",
"fork_no_pids": "Keine Beiträge ausgewählt!", "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!",
"composer.title_placeholder": "Hier den Titel des Themas eingeben...", "composer.title_placeholder": "Hier den Titel des Themas eingeben...",
"composer.handle_placeholder": "Name",
"composer.discard": "Verwerfen", "composer.discard": "Verwerfen",
"composer.submit": "Absenden", "composer.submit": "Absenden",
"composer.replying_to": "Antworte auf %1", "composer.replying_to": "Antworte auf %1",
@@ -89,10 +87,9 @@
"more_users_and_guests": "%1 weitere(r) Nutzer und %2 Gäste", "more_users_and_guests": "%1 weitere(r) Nutzer und %2 Gäste",
"more_users": "%1 weitere(r) Nutzer", "more_users": "%1 weitere(r) Nutzer",
"more_guests": "%1 weitere Gäste", "more_guests": "%1 weitere Gäste",
"users_and_others": "%1 und %2 andere", "users_and_others": "%1 and %2 others",
"sort_by": "Sortieren nach", "sort_by": "Sortieren nach",
"oldest_to_newest": "Älteste zuerst", "oldest_to_newest": "Älteste zuerst",
"newest_to_oldest": "Neuster zuerst", "newest_to_oldest": "Neuster zuerst",
"most_votes": "Die meisten Stimmen", "most_votes": "Die meisten Stimmen"
"most_posts": "Die meisten Beiträge"
} }

View File

@@ -2,12 +2,8 @@
"banned": "Gebannt", "banned": "Gebannt",
"offline": "offline", "offline": "offline",
"username": "Nutzername", "username": "Nutzername",
"joindate": "Registriert vor",
"postcount": "Beiträge",
"email": "E-Mail", "email": "E-Mail",
"confirm_email": "E-Mail bestätigen", "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 wiederherstellen</strong><br /><br />Gebe deinen Benutzernamen ein, um zu bestätigen, dass du dieses Konto löschen möchtest.",
"fullname": "Kompletter Name", "fullname": "Kompletter Name",
"website": "Homepage", "website": "Homepage",
"location": "Wohnort", "location": "Wohnort",
@@ -18,7 +14,6 @@
"profile_views": "Profilaufrufe", "profile_views": "Profilaufrufe",
"reputation": "Reputation", "reputation": "Reputation",
"favourites": "Favoriten", "favourites": "Favoriten",
"watched": "Beobachtet",
"followers": "Folger", "followers": "Folger",
"following": "Folgt", "following": "Folgt",
"signature": "Signatur", "signature": "Signatur",
@@ -32,7 +27,6 @@
"edit": "Ändern", "edit": "Ändern",
"uploaded_picture": "Hochgeladene Bilder", "uploaded_picture": "Hochgeladene Bilder",
"upload_new_picture": "Neues Bild hochladen", "upload_new_picture": "Neues Bild hochladen",
"upload_new_picture_from_url": "Neues Bild von URL hochladen",
"current_password": "Aktuelles Passwort", "current_password": "Aktuelles Passwort",
"change_password": "Passwort ändern", "change_password": "Passwort ändern",
"change_password_error": "Ungültiges Passwort!", "change_password_error": "Ungültiges Passwort!",
@@ -50,21 +44,16 @@
"max": "max.", "max": "max.",
"settings": "Einstellungen", "settings": "Einstellungen",
"show_email": "Zeige meine E-Mail Adresse an.", "show_email": "Zeige meine E-Mail Adresse an.",
"show_fullname": "Zeige meinen kompletten Namen an",
"restrict_chats": "Nur Chatnachrichten von Benutzern, denen ich folge, erlauben",
"digest_label": "Auszug abonnieren", "digest_label": "Auszug abonnieren",
"digest_description": "Abonniere E-Mail-Benachrichtigungen für dieses Forum (neue Benachrichtigungen und Themen) nach einem festen Zeitplan.", "digest_description": "Abonniere E-Mail-Benachrichtigungen für dieses Forum (neue Benachrichtigungen und Themen) nach einem festen Zeitplan.",
"digest_off": "Aus", "digest_off": "Aus",
"digest_daily": "Täglich", "digest_daily": "Täglich",
"digest_weekly": "Wöchentlich", "digest_weekly": "Wöchentlich",
"digest_monthly": "Monatlich", "digest_monthly": "Monatlich",
"send_chat_notifications": "Sende eine E-Mail, wenn eine neue Chat-Nachricht eingeht und ich nicht online bin",
"send_post_notifications": "Sende eine E-Mail wenn auf Themen die ich abonniert habe geantwortet wird",
"has_no_follower": "Dieser User hat noch keine Follower.", "has_no_follower": "Dieser User hat noch keine Follower.",
"follows_no_one": "Dieser User folgt noch niemandem :(", "follows_no_one": "Dieser User folgt noch niemandem :(",
"has_no_posts": "Dieser Nutzer hat noch nichts gepostet.", "has_no_posts": "Dieser Nutzer hat noch nichts gepostet.",
"has_no_topics": "Dieser Nutzer hat noch keine Themen gepostet.", "has_no_topics": "Dieser Nutzer hat noch keine Themen gepostet.",
"has_no_watched_topics": "Diese Person beobachtet keine Themen",
"email_hidden": "E-Mail Adresse versteckt", "email_hidden": "E-Mail Adresse versteckt",
"hidden": "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 verwenden.",
@@ -72,9 +61,5 @@
"posts_per_page": "Beiträge pro Seite", "posts_per_page": "Beiträge pro Seite",
"notification_sounds": "Ton abspielen, wenn ich eine Benachrichtigung erhalte.", "notification_sounds": "Ton abspielen, wenn ich eine Benachrichtigung erhalte.",
"browsing": "Browser Einstellungen", "browsing": "Browser Einstellungen",
"open_links_in_new_tab": "Externe Links in neuem Tab öffnen?", "open_links_in_new_tab": "Externe Links in neuem Tab öffnen?"
"enable_topic_searching": "Suchen innerhalb von Themen aktivieren",
"topic_search_help": "Falls aktiviert, wird die Suche im Thema das Standardsuchverhalten des Browsers überschreiben und es Ihnen erlauben, das ganze Thema statt dessen, was sich auf dem Bildschirm befindet, zu durchsuchen.",
"follow_topics_you_reply_to": "Folge Themen, auf die du antwortest.",
"follow_topics_you_create": "Folge Themen, die du erstellst."
} }

View File

@@ -5,8 +5,6 @@
"search": "Suchen", "search": "Suchen",
"enter_username": "Benutzer durchsuchen", "enter_username": "Benutzer durchsuchen",
"load_more": "mehr laden", "load_more": "mehr laden",
"users-found-search-took": "%1 Benutzer gefunden! Die Suche dauerte %2 ms.", "user-not-found": "Benutzer nicht gefunden!",
"filter-by": "Filtern nach", "users-found-search-took": "%1 Benutzer gefunden! Die Suche dauerte %2 ms."
"online-only": "Nur Online",
"picture-only": "Nur mit Bildern"
} }

View File

@@ -1,8 +0,0 @@
{
"new_topic_button": "Νέο Θέμα",
"no_topics": "<strong>Δεν υπάρχουν θέματα σε αυτή την κατηγορία.</strong><br />Γιατί δεν δοκιμάζεις να δημοσιεύσεις ένα εσύ;",
"browsing": "περιηγούνται",
"no_replies": "Κανείς δεν έχει απαντήσει",
"share_this_category": "Μοιράσου αυτή την κατηγορία",
"ignore": "Αγνόηση"
}

View File

@@ -1,25 +0,0 @@
{
"password-reset-requested": "Ζητήθηκε Επαναφορά Κωδικου - %1!",
"welcome-to": "Καλωσόρισες στο %1",
"greeting_no_name": "Γειά σου",
"greeting_with_name": "Γειά σου %1",
"welcome.text1": "Ευχαριστούμε που γράφτηκες στο %1!",
"welcome.text2": "Για να ενεργοποιήσεις πλήρως τον λογαριασμό σου, πρέπει να επιβεβαιώσουμε πως η διεύθυνση email με την οποια γράφτηκες σου ανήκει.",
"welcome.cta": "Κάνε κλικ εδώ για να επιβεβαιώσεις την διεύθυνσή σου",
"reset.text1": "Λάβαμε ένα αίτημα για επαναφορά του κωδικού σου, πιθανότατα γιατί τον ξέχασες. Αν δεν έκανες εσύ αυτό το αίτημα, αγνόησε αυτό το email.",
"reset.text2": "Για να κάνεις την επαναφορά του κωδικού σου, παρακαλώ πάτα στο παρακάτω σύνδεσμο:",
"reset.cta": "Κάνε κλικ εδώ για να επαναφέρεις τον κωδικό σου",
"digest.notifications": "You have unread notifications from %1:",
"digest.latest_topics": "Πρόσφατα θέματα στο %1",
"digest.cta": "Κάνε κλικ εδώ για να επισκεφτείς το %1",
"digest.unsub.info": "Αυτή η σύνοψη σου στάλθηκε λόγω των ρυθμίσεών σου.",
"digest.no_topics": "There have been no active topics in the past %1",
"notif.chat.subject": "Νέο μήνυμα συνομιλίας από τον/την %1",
"notif.chat.cta": "Κάνε κλικ εδώ για να πας στην συνομιλία",
"notif.chat.unsub.info": "Αυτή η ειδοποίηση για συνομιλία σου στάλθηκε λόγω των ρυθμίσεών σου. ",
"notif.post.cta": "Click here to read the full topic",
"notif.post.unsub.info": "This post notification was sent to you due to your subscription settings.",
"test.text1": "Αυτό είναι ένα δοκιμαστικό email για να επιβεβαιώσουμε ότι ο emailer έχει στηθεί σωστά για το NodeBB.",
"unsub.cta": "Κάνε κλικ εδώ για να αλλάξεις αυτές τις ρυθμίσεις",
"closing": "Ευχαριστούμε!"
}

View File

@@ -1,73 +0,0 @@
{
"invalid-data": "Άκυρα Δεδομένα",
"not-logged-in": "Φαίνεται πως δεν είσαι συνδεδεμένος/η.",
"account-locked": "Ο λογαριασμός σου έχει κλειδωθεί προσωρινά",
"search-requires-login": "Πρέπει να είσαι συνδεδεμένος/η για να αναζητήσεις! Παρακαλώ συνδέσου ή εγγράψου!",
"invalid-cid": "Άκυρο ID Κατηγορίας",
"invalid-tid": "Άκυρο ID Θέματος",
"invalid-pid": "Άκυρο ID Δημοσίευσης",
"invalid-uid": "Άκυρο ID Χρήστη",
"invalid-username": "Άκυρο Όνομα Χρήστη",
"invalid-email": "Άκυρο Email",
"invalid-title": "Άκυρος Τίτλος!",
"invalid-user-data": "Άκυρα Δεδομένα Χρήστη",
"invalid-password": "Άκυρος Κωδικός",
"invalid-username-or-password": "Παρακαλώ γράψε το όνομα χρήστη και τον κωδικό",
"invalid-search-term": "Άκυρος όρος αναζήτησης",
"invalid-pagination-value": "Άκυρη τιμή σελιδοποίησης",
"username-taken": "Το όνομα χρήστη είναι πιασμένο",
"email-taken": "Το email είναι πιασμένο",
"email-not-confirmed": "Your email has not been confirmed yet, please click here to confirm your email.",
"email-not-confirmed-chat": "You are unable to chat until your email is confirmed",
"username-too-short": "Το όνομα χρήστη είναι πολύ μικρό",
"username-too-long": "Το όνομα χρήστη είναι πολύ μεγάλο",
"user-banned": "Ο Χρήστης είναι αποκλεισμένος/η",
"user-too-new": "Sorry, you are required to wait %1 seconds before making your first post",
"no-category": "Category does not exist",
"no-topic": "Topic does not exist",
"no-post": "Post does not exist",
"no-group": "Group does not exist",
"no-user": "User does not exist",
"no-teaser": "Teaser does not exist",
"no-privileges": "You do not have enough privileges for this action.",
"no-emailers-configured": "Δεν έχουν φορτωθεί email plugins, οποτε το δοκιμαστικό email δεν μπορεί να σταλθεί",
"category-disabled": "Η κατηγορία έχει απενεργοποιηθεί",
"topic-locked": "Το θέμα έχει κλειδωθεί",
"still-uploading": "Παρακαλώ περίμενε να τελειώσει το ανέβασμα των αρχείων.",
"content-too-short": "Please enter a longer post. Posts should contain at least %1 characters.",
"title-too-short": "Please enter a longer title. Titles should contain at least %1 characters.",
"title-too-long": "Παρακαλώ γράψε έναν μικρότερο τίτλο. Δεν μπορεί να είναι μεγαλύτερος από %1 χαρακτήρες.",
"too-many-posts": "You can only post once every %1 seconds - please wait before posting again",
"too-many-posts-newbie": "As a new user, you can only post once every %1 seconds until you have earned %2 reputation - please wait before posting again",
"file-too-big": "Maximum allowed file size is %1 kbs - please upload a smaller file",
"cant-vote-self-post": "Δεν μπορείς να ψηφίσεις την δημοσίευσή σου",
"already-favourited": "You have already favourited this post",
"already-unfavourited": "You have already unfavourited this post",
"cant-ban-other-admins": "Δεν μπορείς να αποκλείσεις άλλους διαχειριστές!",
"invalid-image-type": "Invalid image type. Allowed types are: %1",
"invalid-image-extension": "Invalid image extension",
"group-name-too-short": "Το όνομα της ομάδας είναι πολύ μικρό",
"group-already-exists": "Το όνομα της ομάδας υπάρχει ήδη",
"group-name-change-not-allowed": "Αλλαγή του ονόματος της ομάδας δεν επιτρέπεται",
"group-already-member": "You are already part of this group",
"group-needs-owner": "This group requires at least one owner",
"post-already-deleted": "This post has already been deleted",
"post-already-restored": "This post has already been restored",
"topic-already-deleted": "This topic has already been deleted",
"topic-already-restored": "This topic has already been restored",
"topic-thumbnails-are-disabled": "Οι εικόνες θεμάτων είναι απενεργοποιημένες",
"invalid-file": "Άκυρο Αρχείο",
"uploads-are-disabled": "Το ανέβασμα αρχείων έχει απενεργοποιηθεί",
"upload-error": "Λάθος ανεβάσματος αρχείου: %1",
"signature-too-long": "Sorry, your signature cannot be longer than %1 characters.",
"cant-chat-with-yourself": "Δεν μπορείς να συνομιλήσεις με τον εαυτό σου!",
"chat-restricted": "This user has restricted their chat messages. They must follow you before you can chat with them",
"too-many-messages": "You have sent too many messages, please wait awhile.",
"reputation-system-disabled": "Το σύστημα φήμης έχει απενεργοποιηθεί.",
"downvoting-disabled": "Η καταψήφιση έχει απενεργοποιηθεί",
"not-enough-reputation-to-downvote": "Δεν έχεις αρκετή φήμη για να καταψηφίσεις αυτή την δημοσίευση",
"not-enough-reputation-to-flag": "You do not have enough reputation to flag this post",
"reload-failed": "Το NodeBB συνάντησε ένα πρόβλημα καθώς γινόταν η ανανέωση: \"%1\". Το NodeBB θα συνεχίσει να προσφέρει τα στοιχεία του χρήστη, αν και θα ήταν καλή ιδέα να επαναφέρεις ότι έκανες πριν την ανανέωση.",
"registration-error": "Registration Error",
"parse-error": "Something went wrong while parsing server response"
}

View File

@@ -1,81 +0,0 @@
{
"home": "Κεντρική",
"search": "Αναζήτηση",
"buttons.close": "Κλείσιμο",
"403.title": "Δεν επιτρέπεται η πρόσβαση",
"403.message": "You seem to have stumbled upon a page that you do not have access to.",
"403.login": "Perhaps you should <a href='%1/login'>try logging in</a>?",
"404.title": "Δεν βρέθηκε",
"404.message": "You seem to have stumbled upon a page that does not exist. Return to the <a href='%1/'>home page</a>.",
"500.title": "Εσωτερικό σφάλμα.",
"500.message": "Ουπς! Φαίνεται πως κάτι πήγε στραβά!",
"register": "Εγγραφή",
"login": "Σύνδεση",
"please_log_in": "Παρακαλώ Συνδέσου",
"logout": "Αποσύνδεση",
"posting_restriction_info": "Η δημοσίευση είναι περιορισμένη μόνο για εγγεγραμμένα μέλη, κάνε κλικ εδώ για να συνδεθείς.",
"welcome_back": "Καλωσόρισες Πάλι",
"you_have_successfully_logged_in": "Συνδέθηκες με επιτυχία",
"save_changes": "Αποθήκευση Αλλαγών",
"close": "Κλείσιμο",
"pagination": "Σελιδοποίηση",
"pagination.out_of": "%1 από %2",
"pagination.enter_index": "Εισαγωγή Σελίδας",
"header.admin": "Διαχειριστής",
"header.recent": "Πρόσφατα",
"header.unread": "Μη αναγνωσμένα",
"header.tags": "Ετικέτες",
"header.popular": "Δημοφιλή",
"header.users": "Χρήστες",
"header.groups": "Groups",
"header.chats": "Συνομιλίες",
"header.notifications": "Ειδοποιήσεις",
"header.search": "Αναζήτηση",
"header.profile": "Προφίλ",
"notifications.loading": "Φόρτωση Ειδοποιήσεων",
"chats.loading": "Φόρτωση Συνομιλιών",
"motd.welcome": "Καλωσόρισες στο NodeBB, την πλατφόρμα συζητήσεων του μέλλοντος.",
"previouspage": "Προηγούμενη Σελίδα",
"nextpage": "Επόμενη Σελίδα",
"alert.success": "Επιτυχία",
"alert.error": "Σφάλμα",
"alert.banned": "Αποκλεισμένος/η",
"alert.banned.message": "Μόλις αποκλείστηκες, και θα αποσυνδεθείς.",
"alert.unfollow": "Δεν ακολουθείς πλέον τον/την %1!",
"alert.follow": "Ακολουθείς τον/την %1!",
"online": "Συνδεδεμένος",
"users": "Χρήστες",
"topics": "Θέματα",
"posts": "Δημοσιεύσεις",
"views": "Εμφανίσεις",
"reputation": "Φήμη",
"read_more": "διάβασε περισσότερα",
"posted_ago_by_guest": "δημοσιεύτηκε πριν από %1 από Επισκέπτη",
"posted_ago_by": "δημοσιεύτηκε πριν από %1 από τον/την %2",
"posted_ago": "δημοσιεύτηκε πρίν από %1",
"posted_in_ago_by_guest": "δημοσιεύτηκε στο %1 πριν από %2 από Επισκέπτη",
"posted_in_ago_by": "δημοσιεύτηκε στο %1 πριν από %2 από τον/την %3",
"posted_in_ago": "δημοσιεύτηκε στο %1 πριν από %2",
"replied_ago": "απαντήθηκε πριν από %1",
"user_posted_ago": "Ο/Η %1 δημοσίευσε πριν από %2",
"guest_posted_ago": "Επισκέπτης δημοσίευσε πριν από %1",
"last_edited_by_ago": "επεξεργάστηκε τελευταία φορά από τον/την %1 πριν από %2",
"norecentposts": "Δεν υπάρχουν πρόσφατες δημοσιεύσεις",
"norecenttopics": "Δεν υπάρχουν πρόσφατα θέματα",
"recentposts": "Πρόσφατες Δημοσιεύσεις",
"recentips": "Πρόσφατη IP Σύνδεσης",
"away": "Απών/ούσα",
"dnd": "Μην ενοχλείτε",
"invisible": "Αόρατος/η",
"offline": "Εκτός Σύνδεσης",
"email": "Email",
"language": "Γλώσσα",
"guest": "Επισκέπτης",
"guests": "Επισκέπτες",
"updated.title": "Το φόρουμ αναβαθμίστηκε",
"updated.message": "Το φόρουμ μόλις αναβαθμίστηκε στην πιο πρόσφατη έκδοση. Κάνε κλικ εδώ για να ανανεώσεις την σελίδα.",
"privacy": "Privacy",
"follow": "Follow",
"unfollow": "Unfollow",
"delete_all": "Delete All"
}

View File

@@ -1,21 +0,0 @@
{
"groups": "Groups",
"view_group": "Προβολή Ομάδας",
"owner": "Group Owner",
"new_group": "Create New Group",
"no_groups_found": "There are no groups to see",
"cover-instructions": "Drag and Drop a photo, drag to position, and hit <strong>Save</strong>",
"cover-change": "Change",
"cover-save": "Save",
"cover-saving": "Saving",
"details.title": "Λεπτομέρειες Ομάδας",
"details.members": "Λίστα Μελών",
"details.pending": "Pending Members",
"details.has_no_posts": "Τα μέλη αυτής της ομάδας δεν έχουν δημοσιεύσει τίποτα.",
"details.latest_posts": "Τελευταίες δημοσιεύσεις.",
"details.private": "Private Group",
"details.public": "Public Group",
"details.owner_options": "Group Administration",
"event.updated": "Group details have been updated",
"event.deleted": "The group \"%1\" has been deleted"
}

View File

@@ -1,5 +0,0 @@
{
"name": "Ελληνικά (Ελλάδα/Κύπρος)",
"code": "el",
"dir": "ltr"
}

View File

@@ -1,9 +0,0 @@
{
"username": "Όνομα χρήστη / Email",
"remember_me": "Απομνημόνευση;",
"forgot_password": "Ξέχασες τον κωδικό σου;",
"alternative_logins": "Εναλλακτικά Login",
"failed_login_attempt": "Η προσπάθεια σύνδεσης απέτυχε, παρακαλώ προσπάθησε ξανά.",
"login_successful": "Συνδέθηκες επιτυχώς!",
"dont_have_account": "Δεν έχεις λογαριασμό;"
}

View File

@@ -1,21 +0,0 @@
{
"chat.chatting_with": "Συνομιλία με τον/την <span id=\"chat-with-name\"></span>",
"chat.placeholder": "Γράψε το μήνυμά σου εδώ, πάτα enter για αποστολή",
"chat.send": "Αποστολή",
"chat.no_active": "Δεν έχεις ενεργές συνομιλίες.",
"chat.user_typing": "Ο/Η %1 πληκτρολογεί...",
"chat.user_has_messaged_you": "Ο/Η %1 σου έστειλε μήνυμα.",
"chat.see_all": "Προβολή όλων των Συνομιλιών",
"chat.no-messages": "Παρακαλώ επέλεξε έναν παραλήπτη για να δείς το ιστορικό της συνομιλίας",
"chat.recent-chats": "Πρόσφατες Συνομιλίες",
"chat.contacts": "Επαφές",
"chat.message-history": "Ιστορικό Συνομιλίας",
"chat.pop-out": "Αποκόλληση συνομιλίας",
"chat.maximize": "Μεγιστοποίηση",
"chat.seven_days": "7 Ημέρες",
"chat.thirty_days": "30 Ημέρες",
"chat.three_months": "3 Μήνες",
"composer.user_said_in": "Ο/Η %1 είπε στο %2:",
"composer.user_said": "Ο/Η %1 είπε:",
"composer.discard": "Είσαι σίγουρος/η πως θέλεις να πετάξεις αυτή την δημοσίευση;"
}

View File

@@ -1,27 +0,0 @@
{
"title": "Ειδοποιήσεις",
"no_notifs": "Δεν έχεις νέες ειδοποιήσεις;",
"see_all": "Προβολή όλων των ειδοποιήσεων",
"back_to_home": "Πίσω στο %1",
"outgoing_link": "Εξερχόμενος Σύνδεσμος",
"outgoing_link_message": "Τώρα φεύγεις από το %1.",
"continue_to": "Συνέχεια στο %1",
"return_to": "Επιστροφή στο %1",
"new_notification": "Νέα Ειδοποίηση",
"you_have_unread_notifications": "Έχεις μη αναγνωσμένες ειδοποιήσεις.",
"new_message_from": "Νέο μήνυμα από τον/την <strong>%1</strong>",
"upvoted_your_post_in": "Ο/Η <strong>%1</strong> υπερψήφισε την δημοσίευσή σου στο <strong>%2</strong>.",
"moved_your_post": "Ο/Η <strong>%1</strong> μετακίνησε την δημοσίευσή σου.",
"moved_your_topic": "Ο/Η <strong>%1</strong> μετακίνησε το θέμα σου.",
"favourited_your_post_in": "Η δημοσίευσή σου στο <strong>%2</strong> αρέσει στον/ην <strong>%1</strong>.",
"user_flagged_post_in": "Ο/Η <strong>%1</strong> επεσήμανε μια δημοσίευσή σου στο <strong>%2</strong>",
"user_posted_to": "Ο/Η <strong>%1</strong> έγραψε μια απάντηση στο: <strong>%2</strong>",
"user_posted_topic": "<strong>%1</strong> has posted a new topic: <strong>%2</strong>",
"user_mentioned_you_in": "Ο/Η <strong>%1</strong> σε ανέφερε στο <strong>%2</strong>",
"user_started_following_you": "Ο/Η <strong>%1</strong> σε ακολουθεί.",
"email-confirmed": "Το Εmail Επιβεβαιώθηκε",
"email-confirmed-message": "Ευχαριστούμε που επιβεβαίωσες το email σου. Ο λογαριασμός σου είναι πλέον πλήρως ενεργοποιημένος.",
"email-confirm-error": "Συνέβη κάποιο σφάλμα...",
"email-confirm-error-message": "Υπήρξε κάποιο πρόβλημα με την επιβεβαίωση της διεύθυνσής email σου. Ίσως ο κώδικας να είναι άκυρος ή να έχει λήξει.",
"email-confirm-sent": "Στάλθηκε email επιβεβαίωσης."
}

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