Compare commits

..

2 Commits

Author SHA1 Message Date
Julian Lam
4686ae9923 0.6.1 2015-02-07 15:08:37 -05:00
Julian Lam
616bc68ebd added shrinkwrap file 2015-02-07 15:08:14 -05:00
1081 changed files with 17100 additions and 30366 deletions

13
.gitattributes vendored
View File

@@ -1,13 +0,0 @@
# These files are text and should be normalized (convert crlf => lf)
*.json text
*.css text
*.less text
*.tpl text
*.html text
*.js text
*.md text
# Images should be treated as binary
# (binary is a macro for -text -diff)
*.png binary
*.jpg binary

11
.gitignore vendored
View File

@@ -8,6 +8,7 @@ public/css/*.css
*.sublime-project *.sublime-project
*.sublime-workspace *.sublime-workspace
.project .project
.idea
*.swp *.swp
Vagrantfile Vagrantfile
.vagrant .vagrant
@@ -31,13 +32,3 @@ pidfile
/public/admin.css /public/admin.css
/public/nodebb.min.js /public/nodebb.min.js
/public/nodebb.min.js.map /public/nodebb.min.js.map
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio
*.iml
## Directory-based project format:
.idea/
## File-based project format:
*.ipr
*.iws

View File

@@ -7,9 +7,7 @@ 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.bn = public/language/bn/category.json
trans.bg = public/language/bg/category.json
trans.cs = public/language/cs/category.json trans.cs = public/language/cs/category.json
trans.da = public/language/da/category.json
trans.de = public/language/de/category.json trans.de = public/language/de/category.json
trans.el = public/language/el/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
@@ -35,7 +33,6 @@ trans.ru = public/language/ru/category.json
trans.ro = public/language/ro/category.json trans.ro = public/language/ro/category.json
trans.sc = public/language/sc/category.json trans.sc = public/language/sc/category.json
trans.sk = public/language/sk/category.json trans.sk = public/language/sk/category.json
trans.sr = public/language/sr/category.json
trans.sv = public/language/sv/category.json trans.sv = public/language/sv/category.json
trans.th = public/language/th/category.json trans.th = public/language/th/category.json
trans.tr = public/language/tr/category.json trans.tr = public/language/tr/category.json
@@ -50,9 +47,7 @@ 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.bn = public/language/bn/login.json
trans.bg = public/language/bg/login.json
trans.cs = public/language/cs/login.json trans.cs = public/language/cs/login.json
trans.da = public/language/da/login.json
trans.de = public/language/de/login.json trans.de = public/language/de/login.json
trans.el = public/language/el/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
@@ -78,7 +73,6 @@ trans.ru = public/language/ru/login.json
trans.ro = public/language/ro/login.json trans.ro = public/language/ro/login.json
trans.sc = public/language/sc/login.json trans.sc = public/language/sc/login.json
trans.sk = public/language/sk/login.json trans.sk = public/language/sk/login.json
trans.sr = public/language/sr/login.json
trans.sv = public/language/sv/login.json trans.sv = public/language/sv/login.json
trans.th = public/language/th/login.json trans.th = public/language/th/login.json
trans.tr = public/language/tr/login.json trans.tr = public/language/tr/login.json
@@ -88,14 +82,11 @@ trans.zh_TW = public/language/zh_TW/login.json
type = KEYVALUEJSON type = KEYVALUEJSON
[nodebb.recent] [nodebb.recent]
file_filter = public/language/<lang>/recent.json
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.bn = public/language/bn/recent.json
trans.bg = public/language/bg/recent.json
trans.cs = public/language/cs/recent.json trans.cs = public/language/cs/recent.json
trans.da = public/language/da/recent.json
trans.de = public/language/de/recent.json trans.de = public/language/de/recent.json
trans.el = public/language/el/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
@@ -121,7 +112,6 @@ trans.ru = public/language/ru/recent.json
trans.ro = public/language/ro/recent.json trans.ro = public/language/ro/recent.json
trans.sc = public/language/sc/recent.json trans.sc = public/language/sc/recent.json
trans.sk = public/language/sk/recent.json trans.sk = public/language/sk/recent.json
trans.sr = public/language/sr/recent.json
trans.sv = public/language/sv/recent.json trans.sv = public/language/sv/recent.json
trans.th = public/language/th/recent.json trans.th = public/language/th/recent.json
trans.tr = public/language/tr/recent.json trans.tr = public/language/tr/recent.json
@@ -131,14 +121,11 @@ trans.zh_TW = public/language/zh_TW/recent.json
type = KEYVALUEJSON type = KEYVALUEJSON
[nodebb.unread] [nodebb.unread]
file_filter = public/language/<lang>/unread.json
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.bn = public/language/bn/unread.json
trans.bg = public/language/bg/unread.json
trans.cs = public/language/cs/unread.json trans.cs = public/language/cs/unread.json
trans.da = public/language/da/unread.json
trans.de = public/language/de/unread.json trans.de = public/language/de/unread.json
trans.el = public/language/el/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
@@ -164,7 +151,6 @@ trans.ru = public/language/ru/unread.json
trans.ro = public/language/ro/unread.json trans.ro = public/language/ro/unread.json
trans.sc = public/language/sc/unread.json trans.sc = public/language/sc/unread.json
trans.sk = public/language/sk/unread.json trans.sk = public/language/sk/unread.json
trans.sr = public/language/sr/unread.json
trans.sv = public/language/sv/unread.json trans.sv = public/language/sv/unread.json
trans.th = public/language/th/unread.json trans.th = public/language/th/unread.json
trans.tr = public/language/tr/unread.json trans.tr = public/language/tr/unread.json
@@ -174,14 +160,11 @@ trans.zh_TW = public/language/zh_TW/unread.json
type = KEYVALUEJSON type = KEYVALUEJSON
[nodebb.modules] [nodebb.modules]
file_filter = public/language/<lang>/modules.json
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.bn = public/language/bn/modules.json
trans.bg = public/language/bg/modules.json
trans.cs = public/language/cs/modules.json trans.cs = public/language/cs/modules.json
trans.da = public/language/da/modules.json
trans.de = public/language/de/modules.json trans.de = public/language/de/modules.json
trans.el = public/language/el/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
@@ -207,7 +190,6 @@ trans.ru = public/language/ru/modules.json
trans.ro = public/language/ro/modules.json trans.ro = public/language/ro/modules.json
trans.sc = public/language/sc/modules.json trans.sc = public/language/sc/modules.json
trans.sk = public/language/sk/modules.json trans.sk = public/language/sk/modules.json
trans.sr = public/language/sr/modules.json
trans.sv = public/language/sv/modules.json trans.sv = public/language/sv/modules.json
trans.th = public/language/th/modules.json trans.th = public/language/th/modules.json
trans.tr = public/language/tr/modules.json trans.tr = public/language/tr/modules.json
@@ -217,14 +199,11 @@ trans.zh_TW = public/language/zh_TW/modules.json
type = KEYVALUEJSON type = KEYVALUEJSON
[nodebb.register] [nodebb.register]
file_filter = public/language/<lang>/register.json
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.bn = public/language/bn/register.json
trans.bg = public/language/bg/register.json
trans.cs = public/language/cs/register.json trans.cs = public/language/cs/register.json
trans.da = public/language/da/register.json
trans.de = public/language/de/register.json trans.de = public/language/de/register.json
trans.el = public/language/el/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
@@ -250,7 +229,6 @@ trans.ru = public/language/ru/register.json
trans.ro = public/language/ro/register.json trans.ro = public/language/ro/register.json
trans.sc = public/language/sc/register.json trans.sc = public/language/sc/register.json
trans.sk = public/language/sk/register.json trans.sk = public/language/sk/register.json
trans.sr = public/language/sr/register.json
trans.sv = public/language/sv/register.json trans.sv = public/language/sv/register.json
trans.th = public/language/th/register.json trans.th = public/language/th/register.json
trans.tr = public/language/tr/register.json trans.tr = public/language/tr/register.json
@@ -260,14 +238,11 @@ trans.zh_TW = public/language/zh_TW/register.json
type = KEYVALUEJSON type = KEYVALUEJSON
[nodebb.user] [nodebb.user]
file_filter = public/language/<lang>/user.json
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.bn = public/language/bn/user.json
trans.bg = public/language/bg/user.json
trans.cs = public/language/cs/user.json trans.cs = public/language/cs/user.json
trans.da = public/language/da/user.json
trans.de = public/language/de/user.json trans.de = public/language/de/user.json
trans.el = public/language/el/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
@@ -293,7 +268,6 @@ trans.ru = public/language/ru/user.json
trans.ro = public/language/ro/user.json trans.ro = public/language/ro/user.json
trans.sc = public/language/sc/user.json trans.sc = public/language/sc/user.json
trans.sk = public/language/sk/user.json trans.sk = public/language/sk/user.json
trans.sr = public/language/sr/user.json
trans.sv = public/language/sv/user.json trans.sv = public/language/sv/user.json
trans.th = public/language/th/user.json trans.th = public/language/th/user.json
trans.tr = public/language/tr/user.json trans.tr = public/language/tr/user.json
@@ -303,14 +277,11 @@ trans.zh_TW = public/language/zh_TW/user.json
type = KEYVALUEJSON type = KEYVALUEJSON
[nodebb.global] [nodebb.global]
file_filter = public/language/<lang>/global.json
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.bn = public/language/bn/global.json
trans.bg = public/language/bg/global.json
trans.cs = public/language/cs/global.json trans.cs = public/language/cs/global.json
trans.da = public/language/da/global.json
trans.de = public/language/de/global.json trans.de = public/language/de/global.json
trans.el = public/language/el/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
@@ -336,7 +307,6 @@ trans.ru = public/language/ru/global.json
trans.ro = public/language/ro/global.json trans.ro = public/language/ro/global.json
trans.sc = public/language/sc/global.json trans.sc = public/language/sc/global.json
trans.sk = public/language/sk/global.json trans.sk = public/language/sk/global.json
trans.sr = public/language/sr/global.json
trans.sv = public/language/sv/global.json trans.sv = public/language/sv/global.json
trans.th = public/language/th/global.json trans.th = public/language/th/global.json
trans.tr = public/language/tr/global.json trans.tr = public/language/tr/global.json
@@ -346,14 +316,11 @@ trans.zh_TW = public/language/zh_TW/global.json
type = KEYVALUEJSON type = KEYVALUEJSON
[nodebb.notifications] [nodebb.notifications]
file_filter = public/language/<lang>/notifications.json
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.bn = public/language/bn/notifications.json
trans.bg = public/language/bg/notifications.json
trans.cs = public/language/cs/notifications.json trans.cs = public/language/cs/notifications.json
trans.da = public/language/da/notifications.json
trans.de = public/language/de/notifications.json trans.de = public/language/de/notifications.json
trans.el = public/language/el/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
@@ -379,7 +346,6 @@ trans.ru = public/language/ru/notifications.json
trans.ro = public/language/ro/notifications.json trans.ro = public/language/ro/notifications.json
trans.sc = public/language/sc/notifications.json trans.sc = public/language/sc/notifications.json
trans.sk = public/language/sk/notifications.json trans.sk = public/language/sk/notifications.json
trans.sr = public/language/sr/notifications.json
trans.sv = public/language/sv/notifications.json trans.sv = public/language/sv/notifications.json
trans.th = public/language/th/notifications.json trans.th = public/language/th/notifications.json
trans.tr = public/language/tr/notifications.json trans.tr = public/language/tr/notifications.json
@@ -389,14 +355,11 @@ trans.zh_TW = public/language/zh_TW/notifications.json
type = KEYVALUEJSON type = KEYVALUEJSON
[nodebb.reset_password] [nodebb.reset_password]
file_filter = public/language/<lang>/reset_password.json
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.bn = public/language/bn/reset_password.json
trans.bg = public/language/bg/reset_password.json
trans.cs = public/language/cs/reset_password.json trans.cs = public/language/cs/reset_password.json
trans.da = public/language/da/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.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
@@ -422,7 +385,6 @@ trans.ru = public/language/ru/reset_password.json
trans.ro = public/language/ro/reset_password.json trans.ro = public/language/ro/reset_password.json
trans.sc = public/language/sc/reset_password.json trans.sc = public/language/sc/reset_password.json
trans.sk = public/language/sk/reset_password.json trans.sk = public/language/sk/reset_password.json
trans.sr = public/language/sr/reset_password.json
trans.sv = public/language/sv/reset_password.json trans.sv = public/language/sv/reset_password.json
trans.th = public/language/th/reset_password.json trans.th = public/language/th/reset_password.json
trans.tr = public/language/tr/reset_password.json trans.tr = public/language/tr/reset_password.json
@@ -432,14 +394,11 @@ trans.zh_TW = public/language/zh_TW/reset_password.json
type = KEYVALUEJSON type = KEYVALUEJSON
[nodebb.users] [nodebb.users]
file_filter = public/language/<lang>/users.json
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.bn = public/language/bn/users.json
trans.bg = public/language/bg/users.json
trans.cs = public/language/cs/users.json trans.cs = public/language/cs/users.json
trans.da = public/language/da/users.json
trans.de = public/language/de/users.json trans.de = public/language/de/users.json
trans.el = public/language/el/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
@@ -465,7 +424,6 @@ trans.ru = public/language/ru/users.json
trans.ro = public/language/ro/users.json trans.ro = public/language/ro/users.json
trans.sc = public/language/sc/users.json trans.sc = public/language/sc/users.json
trans.sk = public/language/sk/users.json trans.sk = public/language/sk/users.json
trans.sr = public/language/sr/users.json
trans.sv = public/language/sv/users.json trans.sv = public/language/sv/users.json
trans.th = public/language/th/users.json trans.th = public/language/th/users.json
trans.tr = public/language/tr/users.json trans.tr = public/language/tr/users.json
@@ -475,14 +433,11 @@ trans.zh_TW = public/language/zh_TW/users.json
type = KEYVALUEJSON type = KEYVALUEJSON
[nodebb.language] [nodebb.language]
file_filter = public/language/<lang>/language.json
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.bn = public/language/bn/language.json
trans.bg = public/language/bg/language.json
trans.cs = public/language/cs/language.json trans.cs = public/language/cs/language.json
trans.da = public/language/da/language.json
trans.de = public/language/de/language.json trans.de = public/language/de/language.json
trans.el = public/language/el/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
@@ -508,7 +463,6 @@ trans.ru = public/language/ru/language.json
trans.ro = public/language/ro/language.json trans.ro = public/language/ro/language.json
trans.sc = public/language/sc/language.json trans.sc = public/language/sc/language.json
trans.sk = public/language/sk/language.json trans.sk = public/language/sk/language.json
trans.sr = public/language/sr/language.json
trans.sv = public/language/sv/language.json trans.sv = public/language/sv/language.json
trans.th = public/language/th/language.json trans.th = public/language/th/language.json
trans.tr = public/language/tr/language.json trans.tr = public/language/tr/language.json
@@ -518,14 +472,11 @@ trans.zh_TW = public/language/zh_TW/language.json
type = KEYVALUEJSON type = KEYVALUEJSON
[nodebb.pages] [nodebb.pages]
file_filter = public/language/<lang>/pages.json
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.bn = public/language/bn/pages.json
trans.bg = public/language/bg/pages.json
trans.cs = public/language/cs/pages.json trans.cs = public/language/cs/pages.json
trans.da = public/language/da/pages.json
trans.de = public/language/de/pages.json trans.de = public/language/de/pages.json
trans.el = public/language/el/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
@@ -551,7 +502,6 @@ trans.ru = public/language/ru/pages.json
trans.ro = public/language/ro/pages.json trans.ro = public/language/ro/pages.json
trans.sc = public/language/sc/pages.json trans.sc = public/language/sc/pages.json
trans.sk = public/language/sk/pages.json trans.sk = public/language/sk/pages.json
trans.sr = public/language/sr/pages.json
trans.sv = public/language/sv/pages.json trans.sv = public/language/sv/pages.json
trans.th = public/language/th/pages.json trans.th = public/language/th/pages.json
trans.tr = public/language/tr/pages.json trans.tr = public/language/tr/pages.json
@@ -561,14 +511,11 @@ trans.zh_TW = public/language/zh_TW/pages.json
type = KEYVALUEJSON type = KEYVALUEJSON
[nodebb.topic] [nodebb.topic]
file_filter = public/language/<lang>/topic.json
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.bn = public/language/bn/topic.json
trans.bg = public/language/bg/topic.json
trans.cs = public/language/cs/topic.json trans.cs = public/language/cs/topic.json
trans.da = public/language/da/topic.json
trans.de = public/language/de/topic.json trans.de = public/language/de/topic.json
trans.el = public/language/el/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
@@ -594,7 +541,6 @@ trans.ru = public/language/ru/topic.json
trans.ro = public/language/ro/topic.json trans.ro = public/language/ro/topic.json
trans.sc = public/language/sc/topic.json trans.sc = public/language/sc/topic.json
trans.sk = public/language/sk/topic.json trans.sk = public/language/sk/topic.json
trans.sr = public/language/sr/topic.json
trans.sv = public/language/sv/topic.json trans.sv = public/language/sv/topic.json
trans.th = public/language/th/topic.json trans.th = public/language/th/topic.json
trans.tr = public/language/tr/topic.json trans.tr = public/language/tr/topic.json
@@ -604,14 +550,11 @@ trans.zh_TW = public/language/zh_TW/topic.json
type = KEYVALUEJSON type = KEYVALUEJSON
[nodebb.success] [nodebb.success]
file_filter = public/language/<lang>/success.json
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.bn = public/language/bn/success.json
trans.bg = public/language/bg/success.json
trans.cs = public/language/cs/success.json trans.cs = public/language/cs/success.json
trans.da = public/language/da/success.json
trans.de = public/language/de/success.json trans.de = public/language/de/success.json
trans.el = public/language/el/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
@@ -637,7 +580,6 @@ trans.ru = public/language/ru/success.json
trans.ro = public/language/ro/success.json trans.ro = public/language/ro/success.json
trans.sc = public/language/sc/success.json trans.sc = public/language/sc/success.json
trans.sk = public/language/sk/success.json trans.sk = public/language/sk/success.json
trans.sr = public/language/sr/success.json
trans.sv = public/language/sv/success.json trans.sv = public/language/sv/success.json
trans.th = public/language/th/success.json trans.th = public/language/th/success.json
trans.tr = public/language/tr/success.json trans.tr = public/language/tr/success.json
@@ -647,14 +589,11 @@ trans.zh_TW = public/language/zh_TW/success.json
type = KEYVALUEJSON type = KEYVALUEJSON
[nodebb.error] [nodebb.error]
file_filter = public/language/<lang>/error.json
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.bn = public/language/bn/error.json
trans.bg = public/language/bg/error.json
trans.cs = public/language/cs/error.json trans.cs = public/language/cs/error.json
trans.da = public/language/da/error.json
trans.de = public/language/de/error.json trans.de = public/language/de/error.json
trans.el = public/language/el/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
@@ -680,7 +619,6 @@ trans.ru = public/language/ru/error.json
trans.ro = public/language/ro/error.json trans.ro = public/language/ro/error.json
trans.sc = public/language/sc/error.json trans.sc = public/language/sc/error.json
trans.sk = public/language/sk/error.json trans.sk = public/language/sk/error.json
trans.sr = public/language/sr/error.json
trans.sv = public/language/sv/error.json trans.sv = public/language/sv/error.json
trans.th = public/language/th/error.json trans.th = public/language/th/error.json
trans.tr = public/language/tr/error.json trans.tr = public/language/tr/error.json
@@ -690,14 +628,11 @@ trans.zh_TW = public/language/zh_TW/error.json
type = KEYVALUEJSON type = KEYVALUEJSON
[nodebb.tags] [nodebb.tags]
file_filter = public/language/<lang>/tags.json
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.bn = public/language/bn/tags.json
trans.bg = public/language/bg/tags.json
trans.cs = public/language/cs/tags.json trans.cs = public/language/cs/tags.json
trans.da = public/language/da/tags.json
trans.de = public/language/de/tags.json trans.de = public/language/de/tags.json
trans.el = public/language/el/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
@@ -723,7 +658,6 @@ trans.ru = public/language/ru/tags.json
trans.ro = public/language/ro/tags.json trans.ro = public/language/ro/tags.json
trans.sc = public/language/sc/tags.json trans.sc = public/language/sc/tags.json
trans.sk = public/language/sk/tags.json trans.sk = public/language/sk/tags.json
trans.sr = public/language/sr/tags.json
trans.sv = public/language/sv/tags.json trans.sv = public/language/sv/tags.json
trans.th = public/language/th/tags.json trans.th = public/language/th/tags.json
trans.tr = public/language/tr/tags.json trans.tr = public/language/tr/tags.json
@@ -733,14 +667,11 @@ trans.zh_TW = public/language/zh_TW/tags.json
type = KEYVALUEJSON type = KEYVALUEJSON
[nodebb.email] [nodebb.email]
file_filter = public/language/<lang>/email.json
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.bn = public/language/bn/email.json
trans.bg = public/language/bg/email.json
trans.cs = public/language/cs/email.json trans.cs = public/language/cs/email.json
trans.da = public/language/da/email.json
trans.de = public/language/de/email.json trans.de = public/language/de/email.json
trans.el = public/language/el/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
@@ -766,7 +697,6 @@ trans.ru = public/language/ru/email.json
trans.ro = public/language/ro/email.json trans.ro = public/language/ro/email.json
trans.sc = public/language/sc/email.json trans.sc = public/language/sc/email.json
trans.sk = public/language/sk/email.json trans.sk = public/language/sk/email.json
trans.sr = public/language/sr/email.json
trans.sv = public/language/sv/email.json trans.sv = public/language/sv/email.json
trans.th = public/language/th/email.json trans.th = public/language/th/email.json
trans.tr = public/language/tr/email.json trans.tr = public/language/tr/email.json
@@ -776,14 +706,11 @@ trans.zh_TW = public/language/zh_TW/email.json
type = KEYVALUEJSON type = KEYVALUEJSON
[nodebb.search] [nodebb.search]
file_filter = public/language/<lang>/search.json
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.bn = public/language/bn/search.json
trans.bg = public/language/bg/search.json
trans.cs = public/language/cs/search.json trans.cs = public/language/cs/search.json
trans.da = public/language/da/search.json
trans.de = public/language/de/search.json trans.de = public/language/de/search.json
trans.el = public/language/el/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
@@ -809,7 +736,6 @@ trans.ru = public/language/ru/search.json
trans.ro = public/language/ro/search.json trans.ro = public/language/ro/search.json
trans.sc = public/language/sc/search.json trans.sc = public/language/sc/search.json
trans.sk = public/language/sk/search.json trans.sk = public/language/sk/search.json
trans.sr = public/language/sr/search.json
trans.sv = public/language/sv/search.json trans.sv = public/language/sv/search.json
trans.th = public/language/th/search.json trans.th = public/language/th/search.json
trans.tr = public/language/tr/search.json trans.tr = public/language/tr/search.json
@@ -819,14 +745,11 @@ trans.zh_TW = public/language/zh_TW/search.json
type = KEYVALUEJSON type = KEYVALUEJSON
[nodebb.groups] [nodebb.groups]
file_filter = public/language/<lang>/groups.json
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.bn = public/language/bn/groups.json
trans.bg = public/language/bg/groups.json
trans.cs = public/language/cs/groups.json trans.cs = public/language/cs/groups.json
trans.da = public/language/da/groups.json
trans.de = public/language/de/groups.json trans.de = public/language/de/groups.json
trans.el = public/language/el/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
@@ -852,7 +775,6 @@ trans.ru = public/language/ru/groups.json
trans.ro = public/language/ro/groups.json trans.ro = public/language/ro/groups.json
trans.sc = public/language/sc/groups.json trans.sc = public/language/sc/groups.json
trans.sk = public/language/sk/groups.json trans.sk = public/language/sk/groups.json
trans.sr = public/language/sr/groups.json
trans.sv = public/language/sv/groups.json trans.sv = public/language/sv/groups.json
trans.th = public/language/th/groups.json trans.th = public/language/th/groups.json
trans.tr = public/language/tr/groups.json trans.tr = public/language/tr/groups.json

View File

@@ -13,11 +13,6 @@ If you are writing contributions as part of employment from another company / in
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. 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.
# Found a Security Vulnerability?
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.
# Issues & Bugs # Issues & Bugs
@@ -25,6 +20,11 @@ Thanks for reporting an issue with NodeBB! Please follow these guidelines in ord
In general, if we can't reproduce it, we can't fix it! 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 ## Try the latest version of NodeBB
There is a chance that the issue you are experiencing may have already been fixed. There is a chance that the issue you are experiencing may have already been fixed.
@@ -50,15 +50,6 @@ $ git rev-parse HEAD
If you have downloaded the `.zip` or `.tar.gz` packages from GitHub (or elsewhere), please let us know. If you have downloaded the `.zip` or `.tar.gz` packages from GitHub (or elsewhere), please let us know.
## Provide theme versions if issue is related to the theme/display
``` bash
$ npm ls nodebb-theme-vanilla nodebb-theme-lavender
nodebb@0.7.0-dev /home/julian/Projects/nodebb/forum
├── nodebb-theme-lavender@0.2.13
└── nodebb-theme-vanilla@0.2.35
```
## Attempt to use `git bisect` ## 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`. 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`.

View File

@@ -1,78 +0,0 @@
"use strict";
var fork = require('child_process').fork,
env = process.env,
worker,
incomplete = [];
module.exports = function(grunt) {
function update(action, filepath, target) {
var args = [],
fromFile = '',
compiling = '',
time = Date.now();
if (!grunt.option('verbose')) {
args.push('--log-level=info');
}
if (target === 'lessUpdated') {
fromFile = ['js','tpl'];
compiling = 'less';
} else if (target === 'clientUpdated') {
fromFile = ['less','tpl'];
compiling = 'js';
} else if (target === 'templatesUpdated') {
fromFile = ['js','less'];
compiling = 'tpl';
} else if (target === 'serverUpdated') {
fromFile = ['less','js','tpl'];
}
fromFile = fromFile.filter(function(ext) {
return incomplete.indexOf(ext) === -1;
});
args.push('--from-file=' + fromFile.join(','));
incomplete.push(compiling);
worker.kill();
worker = fork('app.js', args, { env: env });
worker.on('message', function() {
if (incomplete.length) {
incomplete = [];
if (grunt.option('verbose')) {
grunt.log.writeln('NodeBB restarted in ' + (Date.now() - time) + ' ms');
}
}
});
}
grunt.initConfig({
watch: {
lessUpdated: {
files: ['public/**/*.less', 'node_modules/nodebb-*/*.less', 'node_modules/nodebb-*/*/*.less', 'node_modules/nodebb-*/*/*/*.less', 'node_modules/nodebb-*/*/*/*/*.less']
},
clientUpdated: {
files: ['public/src/**/*.js', 'node_modules/nodebb-*/*.js', 'node_modules/nodebb-*/*/*.js', 'node_modules/nodebb-*/*/*/*.js', 'node_modules/nodebb-*/*/*/*/*.js', 'node_modules/templates.js/lib/templates.js']
},
serverUpdated: {
files: ['*.js', 'install/*.js', 'src/**/*.js']
},
templatesUpdated: {
files: ['src/views/**/*.tpl', 'node_modules/nodebb-*/*.tpl', 'node_modules/nodebb-*/*/*.tpl', 'node_modules/nodebb-*/*/*/*.tpl', 'node_modules/nodebb-*/*/*/*/*.tpl', 'node_modules/nodebb-*/*/*/*/*/*.tpl']
}
}
});
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.registerTask('default', ['watch']);
env.NODE_ENV = 'development';
worker = fork('app.js', [], { env: env });
grunt.event.on('watch', update);
};

View File

@@ -12,26 +12,21 @@ 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)
* [Documentation & Installation Instructions](http://docs.nodebb.org)
* [Help translate NodeBB](https://www.transifex.com/projects/p/nodebb/)
* [NodeBB Blog](http://blog.nodebb.org) * [NodeBB Blog](http://blog.nodebb.org)
* [Documentation & Installation Instructions](http://docs.nodebb.org)
* [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")
* [Get Plugins](http://community.nodebb.org/category/7/nodebb-plugins "NodeBB Plugins")
* [Get Themes](http://community.nodebb.org/category/10/nodebb-themes "NodeBB Themes")
* [Help translate NodeBB](https://www.transifex.com/projects/p/nodebb/)
## Screenshots ## Screenshots
[![](http://i.imgur.com/VCoOFyqb.png)](http://i.imgur.com/VCoOFyq.png) [<img src="http://i.imgur.com/FLOUuIqb.png" />](http://i.imgur.com/FLOUuIq.png)&nbsp;[<img src="http://i.imgur.com/Ud1LrfIb.png" />](http://i.imgur.com/Ud1LrfI.png)&nbsp;[<img src="http://i.imgur.com/ZC8W39ab.png" />](http://i.imgur.com/ZC8W39a.png)&nbsp;[<img src="http://i.imgur.com/o90kVPib.png" />](http://i.imgur.com/o90kVPi.png)&nbsp;[<img src="http://i.imgur.com/AaRRrU2b.png" />](http://i.imgur.com/AaRRrU2.png)&nbsp;[<img src="http://i.imgur.com/LmHtPhob.png" />](http://i.imgur.com/LmHtPho.png)&nbsp;[<img src="http://i.imgur.com/paiJPJkb.jpg" />](http://i.imgur.com/paiJPJk.jpg)&nbsp;[<img src="http://i.imgur.com/ZfavPHDb.png" />](http://i.imgur.com/ZfavPHD.png)&nbsp;[<img src="http://i.imgur.com/8OLssij.png" />](http://i.imgur.com/8OLssij.png)&nbsp;[<img src="http://i.imgur.com/JKOc0LZ.png"/>](http://i.imgur.com/JKOc0LZ.png)
[![](http://i.imgur.com/FLOUuIqb.png)](http://i.imgur.com/FLOUuIq.png)
[![](http://i.imgur.com/Ud1LrfIb.png)](http://i.imgur.com/Ud1LrfI.png) Credit: [Convoe](http://www.convoe.com), [Kano](http://www.kano.me), [Manchester United Forum](http://manutdforums.com/).
[![](http://i.imgur.com/h6yZ66sb.png)](http://i.imgur.com/h6yZ66s.png)
[![](http://i.imgur.com/o90kVPib.png)](http://i.imgur.com/o90kVPi.png)
[![](http://i.imgur.com/AaRRrU2b.png)](http://i.imgur.com/AaRRrU2.png)
[![](http://i.imgur.com/LmHtPhob.png)](http://i.imgur.com/LmHtPho.png)
[![](http://i.imgur.com/paiJPJkb.jpg)](http://i.imgur.com/paiJPJk.jpg)
[![](http://i.imgur.com/8OLssij.png)](http://i.imgur.com/8OLssij.png)
[![](http://i.imgur.com/JKOc0LZ.png)](http://i.imgur.com/JKOc0LZ.png)
## How can I follow along/contribute? ## How can I follow along/contribute?
@@ -46,7 +41,7 @@ Additional functionality is enabled through the use of third-party plugins.
NodeBB requires the following software to be installed: NodeBB requires the following software to be installed:
* A version of Node.js at least 0.10 or greater * A version of Node.js at least 0.10 or greater
* Redis, version 2.8.9 or greater **or** MongoDB, version 2.6 or greater * Redis, version 2.6 or greater **or** MongoDB, version 2.6 or greater
* nginx, version 1.3.13 or greater (**only if** intending to use nginx to proxy requests to a NodeBB) * nginx, version 1.3.13 or greater (**only if** intending to use nginx to proxy requests to a NodeBB)
## Installation ## Installation
@@ -70,6 +65,4 @@ Detailed upgrade instructions are listed in [Upgrading NodeBB](https://docs.node
## License ## License
NodeBB is licensed under the **GNU General Public License v3 (GPL-3)** (http://www.gnu.org/copyleft/gpl.html). NodeBB is licensed under the **GNU General Public License v3 (GPL-3)** (http://www.gnu.org/copyleft/gpl.html)
Interested in a sublicense agreement for use of NodeBB in a non-free/restrictive environment? Contact us at sales@nodebb.org.

207
app.js
View File

@@ -21,7 +21,7 @@
/*global require, global, process*/ /*global require, global, process*/
var nconf = require('nconf'); var nconf = require('nconf');
nconf.argv().env('__'); nconf.argv().env();
var fs = require('fs'), var fs = require('fs'),
os = require('os'), os = require('os'),
@@ -29,11 +29,11 @@ var fs = require('fs'),
async = require('async'), async = require('async'),
semver = require('semver'), semver = require('semver'),
winston = require('winston'), winston = require('winston'),
colors = require('colors'),
path = require('path'), path = require('path'),
pkg = require('./package.json'), pkg = require('./package.json'),
utils = require('./public/src/utils.js'); utils = require('./public/src/utils.js');
global.env = process.env.NODE_ENV || 'production'; global.env = process.env.NODE_ENV || 'production';
winston.remove(winston.transports.Console); winston.remove(winston.transports.Console);
@@ -43,7 +43,7 @@ winston.add(winston.transports.Console, {
var date = new Date(); var date = new Date();
return date.getDate() + '/' + (date.getMonth() + 1) + ' ' + date.toTimeString().substr(0,5) + ' [' + global.process.pid + ']'; return date.getDate() + '/' + (date.getMonth() + 1) + ' ' + date.toTimeString().substr(0,5) + ' [' + global.process.pid + ']';
}, },
level: nconf.get('log-level') || (global.env === 'production' ? 'info' : 'verbose') level: global.env === 'production' ? 'info' : 'verbose'
}); });
if(os.platform() === 'linux') { if(os.platform() === 'linux') {
@@ -54,6 +54,14 @@ if(os.platform() === 'linux') {
}); });
} }
if (!process.send) {
// 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('This program comes with ABSOLUTELY NO WARRANTY.');
winston.info('This is free software, and you are welcome to redistribute it under certain conditions.');
winston.info('');
}
// Alternate configuration file support // Alternate configuration file support
var configFile = path.join(__dirname, '/config.json'), var configFile = path.join(__dirname, '/config.json'),
configExists; configExists;
@@ -65,10 +73,8 @@ configExists = fs.existsSync(configFile);
if (!nconf.get('setup') && !nconf.get('install') && !nconf.get('upgrade') && !nconf.get('reset') && configExists) { if (!nconf.get('setup') && !nconf.get('install') && !nconf.get('upgrade') && !nconf.get('reset') && configExists) {
start(); start();
} else if (nconf.get('setup') || nconf.get('install')) { } else if (nconf.get('setup') || nconf.get('install') || !configExists) {
setup(); setup();
} else if (!configExists) {
require('./install/web').install(nconf.get('port'));
} else if (nconf.get('upgrade')) { } else if (nconf.get('upgrade')) {
upgrade(); upgrade();
} else if (nconf.get('reset')) { } else if (nconf.get('reset')) {
@@ -83,8 +89,7 @@ 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'),
views_dir: path.join(__dirname, 'public/templates'), views_dir: path.join(__dirname, 'public/templates')
version: pkg.version
}); });
if (!nconf.get('isCluster')) { if (!nconf.get('isCluster')) {
@@ -96,19 +101,10 @@ function loadConfig() {
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('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'));
if (!process.send) {
// If run using `node app`, log GNU copyright info along with server info
winston.info('NodeBB v' + nconf.get('version') + ' Copyright (C) 2013-2014 NodeBB Inc.');
winston.info('This program comes with ABSOLUTELY NO WARRANTY.');
winston.info('This is free software, and you are welcome to redistribute it under certain conditions.');
winston.info('');
}
} }
function start() { function start() {
loadConfig(); loadConfig();
var db = require('./src/database');
// nconf defaults, if not set in config // nconf defaults, if not set in config
if (!nconf.get('upload_path')) { if (!nconf.get('upload_path')) {
@@ -117,15 +113,14 @@ function start() {
// Parse out the relative_url and other goodies from the configured URL // Parse out the relative_url and other goodies from the configured URL
var urlObject = url.parse(nconf.get('url')); var urlObject = url.parse(nconf.get('url'));
var relativePath = urlObject.pathname !== '/' ? urlObject.pathname : ''; var relativePath = urlObject.pathname !== '/' ? urlObject.pathname : '';
nconf.set('base_url', urlObject.protocol + '//' + urlObject.host);
nconf.set('use_port', !!urlObject.port); nconf.set('use_port', !!urlObject.port);
nconf.set('relative_path', relativePath); nconf.set('relative_path', relativePath);
nconf.set('port', urlObject.port || nconf.get('port') || nconf.get('PORT') || 4567); nconf.set('port', urlObject.port || nconf.get('port') || nconf.get('PORT') || 4567);
nconf.set('upload_url', '/uploads/'); nconf.set('upload_url', relativePath + '/uploads/');
if (nconf.get('isPrimary') === 'true') { if (nconf.get('isPrimary') === 'true') {
winston.info('Time: %s', (new Date()).toString()); winston.info('Time: %s', (new Date()).toString());
winston.info('Initializing NodeBB v%s', nconf.get('version')); winston.info('Initializing NodeBB v%s', pkg.version);
winston.verbose('* using configuration stored in: %s', configFile); winston.verbose('* using configuration stored in: %s', configFile);
var host = nconf.get(nconf.get('database') + ':host'), var host = nconf.get(nconf.get('database') + ':host'),
@@ -135,16 +130,56 @@ function start() {
winston.verbose('* using themes stored in: %s', nconf.get('themes_path')); winston.verbose('* using themes stored in: %s', nconf.get('themes_path'));
} }
var webserver = require('./src/webserver');
require('./src/database').init(function(err) {
if (err) {
winston.error(err.stack);
process.exit();
}
var meta = require('./src/meta');
meta.configs.init(function () {
var templates = require('templates.js'),
sockets = require('./src/socket.io'),
plugins = require('./src/plugins'),
upgrade = require('./src/upgrade');
templates.setGlobal('relative_path', nconf.get('relative_path'));
upgrade.check(function(schema_ok) {
if (schema_ok || nconf.get('check-schema') === false) {
webserver.init();
sockets.init(webserver.server);
if (nconf.get('isPrimary') === 'true' && !nconf.get('jobsDisabled')) {
require('./src/notifications').init();
require('./src/user').startJobs();
}
async.waterfall([
async.apply(meta.themes.setupPaths),
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) { process.on('message', function(message) {
if (typeof message !== 'object') { switch(message.action) {
return;
}
var meta = require('./src/meta');
var emitter = require('./src/emitter');
switch (message.action) {
case 'reload': case 'reload':
meta.reload(); meta.reload();
break; break;
@@ -152,19 +187,14 @@ function start() {
meta.js.cache = message.cache; meta.js.cache = message.cache;
meta.js.map = message.map; meta.js.map = message.map;
meta.js.hash = message.hash; meta.js.hash = message.hash;
emitter.emit('meta:js.compiled');
winston.verbose('[cluster] Client-side javascript and mapping propagated to worker %s', process.pid); winston.verbose('[cluster] Client-side javascript and mapping propagated to worker %s', process.pid);
break; break;
case 'css-propagate': case 'css-propagate':
meta.css.cache = message.cache; meta.css.cache = message.cache;
meta.css.acpCache = message.acpCache; meta.css.acpCache = message.acpCache;
meta.css.hash = message.hash; meta.css.hash = message.hash;
emitter.emit('meta:css.compiled');
winston.verbose('[cluster] Stylesheets propagated to worker %s', process.pid); winston.verbose('[cluster] Stylesheets propagated to worker %s', process.pid);
break; break;
case 'templates:compiled':
emitter.emit('templates:compiled');
break;
} }
}); });
@@ -172,95 +202,39 @@ function start() {
winston.error(err.stack); winston.error(err.stack);
console.log(err.stack); console.log(err.stack);
require('./src/meta').js.killMinifier(); meta.js.killMinifier();
shutdown(1); shutdown(1);
}); });
} else {
async.waterfall([
async.apply(db.init),
async.apply(db.checkCompatibility),
function(next) {
require('./src/meta').configs.init(next);
},
function(next) {
require('./src/meta').dependencies.check(next);
},
function(next) {
require('./src/upgrade').check(next);
},
function(next) {
var webserver = require('./src/webserver');
require('./src/socket.io').init(webserver.server);
if (nconf.get('isPrimary') === 'true' && !nconf.get('jobsDisabled')) {
require('./src/notifications').init();
require('./src/user').startJobs();
}
webserver.listen();
}
], function(err) {
if (err) {
switch(err.message) {
case 'schema-out-of-date':
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(' ./nodebb upgrade');
break;
case 'dependencies-out-of-date':
winston.warn('One or more of NodeBB\'s dependent packages are out-of-date. Please run the following command to update them:');
winston.warn(' ./nodebb upgrade');
break;
default:
if (err.stacktrace !== false) {
winston.error(err.stack);
} else {
winston.error(err.message);
}
break;
}
// Either way, bad stuff happened. Abort start.
process.exit(); process.exit();
} }
}); });
});
});
} }
function setup() { function setup() {
loadConfig(); loadConfig();
if (nconf.get('setup')) {
winston.info('NodeBB Setup Triggered via Command Line'); winston.info('NodeBB Setup Triggered via Command Line');
} else {
winston.warn('Configuration not found, starting NodeBB setup');
}
var install = require('./src/install'); var install = require('./src/install');
process.stdout.write('\nWelcome to NodeBB!\n'); winston.info('Welcome to NodeBB!');
process.stdout.write('\nThis looks like a new installation, so you\'ll have to answer a few questions about your environment before we can proceed.\n'); winston.info('This looks like a new installation, so you\'ll have to answer a few questions about your environment before we can proceed.');
process.stdout.write('Press enter to accept the default setting (shown in brackets).\n'); winston.info('Press enter to accept the default setting (shown in brackets).');
install.setup(function (err, data) {
var separator = ' ';
if (process.stdout.columns > 10) {
for(var x=0,cols=process.stdout.columns-10;x<cols;x++) {
separator += '=';
}
}
process.stdout.write('\n' + separator + '\n\n');
install.setup(function (err) {
if (err) { if (err) {
winston.error('There was a problem completing NodeBB setup: ', err.message); winston.error('There was a problem completing NodeBB setup: ', err.message);
} else { } else {
if (data.hasOwnProperty('password')) { winston.info('NodeBB Setup Completed. Run \'./nodebb start\' to manually start your NodeBB server.');
process.stdout.write('An administrative user was automatically created for you:\n');
process.stdout.write(' Username: ' + data.username + '\n');
process.stdout.write(' Password: ' + data.password + '\n');
process.stdout.write('\n');
}
process.stdout.write('NodeBB Setup Completed. Run \'./nodebb start\' to manually start your NodeBB server.\n');
// If I am a child process, notify the parent of the returned data before exiting (useful for notifying
// hosts of auto-generated username/password during headless setups)
if (process.send) {
process.send(data);
}
} }
process.exit(); process.exit();
@@ -290,19 +264,17 @@ function reset() {
process.exit(); process.exit();
} }
if (nconf.get('t')) { if (nconf.get('theme')) {
resetThemes(); resetThemes();
} else if (nconf.get('p')) { } else if (nconf.get('plugin')) {
if (nconf.get('p') === true) { resetPlugin(nconf.get('plugin'));
} else if (nconf.get('plugins')) {
resetPlugins(); resetPlugins();
} else { } else if (nconf.get('widgets')) {
resetPlugin(nconf.get('p'));
}
} else if (nconf.get('w')) {
resetWidgets(); resetWidgets();
} else if (nconf.get('s')) { } else if (nconf.get('settings')) {
resetSettings(); resetSettings();
} else if (nconf.get('a')) { } else if (nconf.get('all')) {
require('async').series([resetWidgets, resetThemes, resetPlugins, resetSettings], function(err) { require('async').series([resetWidgets, resetThemes, resetPlugins, resetSettings], function(err) {
if (!err) { if (!err) {
winston.info('[reset] Reset complete.'); winston.info('[reset] Reset complete.');
@@ -312,17 +284,10 @@ function reset() {
process.exit(); process.exit();
}); });
} else { } else {
process.stdout.write('\nNodeBB Reset\n'.bold); winston.warn('[reset] Nothing reset.');
process.stdout.write('No arguments passed in, so nothing was reset.\n\n'.yellow); winston.info('Use ./nodebb reset {theme|plugins|widgets|settings|all}');
process.stdout.write('Use ./nodebb reset ' + '{-t|-p|-w|-s|-a}\n'.red); winston.info(' or');
process.stdout.write(' -t\tthemes\n'); winston.info('Use ./nodebb reset plugin="nodebb-plugin-pluginName"');
process.stdout.write(' -p\tplugins\n');
process.stdout.write(' -w\twidgets\n');
process.stdout.write(' -s\tsettings\n');
process.stdout.write(' -a\tall of the above\n');
process.stdout.write('\nPlugin reset flag (-p) can take a single argument\n');
process.stdout.write(' e.g. ./nodebb reset -p nodebb-plugin-mentions\n');
process.exit(); process.exit();
} }
}); });
@@ -358,7 +323,7 @@ function resetThemes(callback) {
function resetPlugin(pluginId) { function resetPlugin(pluginId) {
var db = require('./src/database'); var db = require('./src/database');
db.sortedSetRemove('plugins:active', pluginId, function(err) { db.setRemove('plugins:active', pluginId, function(err) {
if (err) { if (err) {
winston.error('[reset] Could not disable plugin: %s encountered error %s', pluginId, err.message); winston.error('[reset] Could not disable plugin: %s encountered error %s', pluginId, err.message);
} else { } else {

View File

@@ -9,7 +9,7 @@ process.on('message', function(msg) {
if (msg.type === 'hash') { if (msg.type === 'hash') {
hashPassword(msg.password, msg.rounds); hashPassword(msg.password, msg.rounds);
} else if (msg.type === 'compare') { } else if (msg.type === 'compare') {
bcrypt.compare(msg.password, msg.hash, done); compare(msg.password, msg.hash);
} }
}); });
@@ -21,14 +21,23 @@ function hashPassword(password, rounds) {
function(salt, next) { function(salt, next) {
bcrypt.hash(password, salt, next); bcrypt.hash(password, salt, next);
} }
], done); ], function(err, hash) {
}
function done(err, result) {
if (err) { if (err) {
process.send({err: err.message}); process.send({err: err.message});
return process.disconnect(); return process.disconnect();
} }
process.send({result: result}); process.send({result: hash});
process.disconnect(); 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

@@ -9,7 +9,7 @@
}, },
{ {
"name": "General Discussion", "name": "General Discussion",
"description": "A place to talk about whatever you want", "description": "A place to talk about whateeeever you want",
"bgColor": "#59b3d0", "bgColor": "#59b3d0",
"color": "#fff", "color": "#fff",
"icon" : "fa-comments-o", "icon" : "fa-comments-o",

View File

@@ -1,31 +1,98 @@
{ [
"title": "NodeBB", {
"showSiteTitle": 1, "field": "title",
"postDelay": 10, "value": "NodeBB"
"initialPostDelay": 10, },
"newbiePostDelay": 120, {
"newbiePostDelayThreshold": 3, "field": "showSiteTitle",
"minimumPostLength": 8, "value": "1"
"maximumPostLength": 32767, },
"minimumTagsPerTopic": 0, {
"maximumTagsPerTopic": 5, "field": "postDelay",
"allowGuestSearching": 0, "value": 10
"allowTopicsThumbnail": 0, },
"registrationType": "normal", {
"allowLocalLogin": 1, "field": "initialPostDelay",
"allowAccountDelete": 1, "value": 10
"allowFileUploads": 0, },
"maximumFileSize": 2048, {
"minimumTitleLength": 3, "field": "newbiePostDelay",
"maximumTitleLength": 255, "value": 120
"minimumUsernameLength": 2, },
"maximumUsernameLength": 16, {
"minimumPasswordLength": 6, "field": "newbiePostDelayThreshold",
"maximumSignatureLength": 255, "value": 3
"maximumAboutMeLength": 1000, },
"maximumProfileImageSize": 256, {
"profileImageDimension": 128, "field": "minimumPostLength",
"requireEmailConfirmation": 0, "value": 8
"profile:allowProfileImageUploads": 1, },
"teaserPost": "last" {
} "field": "maximumPostLength",
"value": 32767
},
{
"field": "allowGuestSearching",
"value": 0
},
{
"field": "allowTopicsThumbnail",
"value": 0
},
{
"field": "allowRegistration",
"value": 1
},
{
"field": "allowLocalLogin",
"value": 1
},
{
"field": "allowAccountDelete",
"value": 1
},
{
"field": "allowFileUploads",
"value": 0
},
{
"field": "maximumFileSize",
"value": 2048
},
{
"field": "minimumTitleLength",
"value": 3
},
{
"field": "maximumTitleLength",
"value": 255
},
{
"field": "minimumUsernameLength",
"value": 2
},
{
"field": "maximumUsernameLength",
"value": 16
},
{
"field": "minimumPasswordLength",
"value": 6
},
{
"field": "maximumSignatureLength",
"value": 255
},
{
"field": "maximumProfileImageSize",
"value": 256
},
{
"field": "profileImageDimension",
"value": 128
},
{
"field": "requireEmailConfirmation",
"value": 0
}
]

View File

@@ -1,10 +0,0 @@
[
{
"widget": "html",
"data" : {
"html": "<footer id=\"footer\" class=\"container footer\">\r\n\t<div class=\"copyright\">\r\n\t\tCopyright © 2014 <a target=\"_blank\" href=\"https://nodebb.org\">NodeBB Forums</a> | <a target=\"_blank\" href=\"//github.com/NodeBB/NodeBB/graphs/contributors\">Contributors</a>\r\n\t</div>\r\n</footer>",
"title":"",
"container":""
}
}
]

View File

@@ -1,87 +0,0 @@
[
{
"route": "/categories",
"title": "\\[\\[global:header.categories\\]\\]",
"enabled": true,
"iconClass": "fa-list",
"textClass": "visible-xs-inline",
"text": "\\[\\[global:header.categories\\]\\]"
},
{
"id": "unread-count",
"route": "/unread",
"title": "\\[\\[global:header.unread\\]\\]",
"enabled": true,
"iconClass": "fa-inbox",
"textClass": "visible-xs-inline",
"text": "\\[\\[global:header.unread\\]\\]",
"properties": {
"loggedIn": true
}
},
{
"route": "/recent",
"title": "\\[\\[global:header.recent\\]\\]",
"enabled": true,
"iconClass": "fa-clock-o",
"textClass": "visible-xs-inline",
"text": "\\[\\[global:header.recent\\]\\]"
},
{
"route": "/tags",
"title": "\\[\\[global:header.tags\\]\\]",
"enabled": true,
"iconClass": "fa-tags",
"textClass": "visible-xs-inline",
"text": "\\[\\[global:header.tags\\]\\]"
},
{
"route": "/popular",
"title": "\\[\\[global:header.popular\\]\\]",
"enabled": true,
"iconClass": "fa-fire",
"textClass": "visible-xs-inline",
"text": "\\[\\[global:header.popular\\]\\]"
},
{
"route": "/users",
"title": "\\[\\[global:header.users\\]\\]",
"enabled": true,
"iconClass": "fa-user",
"textClass": "visible-xs-inline",
"text": "\\[\\[global:header.users\\]\\]"
},
{
"route": "/groups",
"title": "\\[\\[global:header.groups\\]\\]",
"enabled": true,
"iconClass": "fa-group",
"textClass": "visible-xs-inline",
"text": "\\[\\[global:header.groups\\]\\]"
},
{
"route": "/admin",
"title": "\\[\\[global:header.admin\\]\\]",
"enabled": true,
"iconClass": "fa-cogs",
"textClass": "visible-xs-inline",
"text": "\\[\\[global:header.admin\\]\\]",
"properties": {
"targetBlank": false,
"adminOnly": true
}
},
{
"route": "/search",
"title": "\\[\\[global:header.search\\]\\]",
"enabled": true,
"iconClass": "fa-search",
"textClass": "visible-xs-inline",
"text": "\\[\\[global:header.search\\]\\]",
"properties": {
"installed": {
"search": true
}
}
}
]

View File

@@ -1,10 +0,0 @@
# Welcome to your brand new NodeBB forum!
This is what a topic and post looks like. As an administator, you can edit the post\'s title and content.
To customise your forum, go to the [Administrator Control Panel](../../admin). You can modify all aspects of your forum there, including installation of third-party plugins.
## Additional Resources
* [NodeBB Documentation](https://docs.nodebb.org)
* [Community Support Forum](https://community.nodebb.org)
* [Project repository](https://github.com/nodebb/nodebb)

View File

@@ -1,148 +0,0 @@
"use strict";
var winston = require('winston'),
express = require('express'),
bodyParser = require('body-parser'),
fs = require('fs'),
path = require('path'),
less = require('less'),
async = require('async'),
uglify = require('uglify-js'),
nconf = require('nconf'),
app = express(),
server;
var web = {},
scripts = [
'public/vendor/xregexp/xregexp.js',
'public/vendor/xregexp/unicode/unicode-base.js',
'public/src/utils.js',
'public/src/installer/install.js'
];
web.install = function(port) {
port = port || 4567;
winston.info('Launching web installer on port', port);
app.use(express.static('public', {}));
app.engine('tpl', require('templates.js').__express);
app.set('view engine', 'tpl');
app.set('views', path.join(__dirname, '../src/views'));
app.use(bodyParser.urlencoded({
extended: true
}));
async.parallel([compileLess, compileJS], function() {
setupRoutes();
launchExpress(port);
});
};
function launchExpress(port) {
server = app.listen(port, function() {
winston.info('Web installer listening on http://%s:%s', '0.0.0.0', port);
});
}
function setupRoutes() {
app.get('/', welcome);
app.post('/', install);
app.post('/launch', launch);
}
function welcome(req, res) {
var dbs = ['redis', 'mongo'],
databases = [];
dbs.forEach(function(el) {
databases.push({
name: el,
questions: require('../src/database/' + el).questions
});
});
res.render('install/index', {
databases: databases,
skipDatabaseSetup: !!nconf.get('database'),
error: res.locals.error ? true : false,
success: res.locals.success ? true : false,
values: req.body
});
}
function install(req, res) {
for (var i in req.body) {
if (req.body.hasOwnProperty(i) && !process.env.hasOwnProperty(i)) {
process.env[i.replace(':', '__')] = req.body[i];
}
}
var child = require('child_process').fork('app', ['--setup'], {
env: process.env
});
child.on('close', function(data) {
if (data === 0) {
res.locals.success = true;
} else {
res.locals.error = true;
}
welcome(req, res);
});
}
function launch(req, res) {
var pidFilePath = __dirname + '../pidfile';
res.json({});
server.close();
var child = require('child_process').spawn('node', ['loader.js'], {
detached: true,
stdio: ['ignore', 'ignore', 'ignore']
});
process.stdout.write('\nStarting NodeBB\n');
process.stdout.write(' "./nodebb stop" to stop the NodeBB server\n');
process.stdout.write(' "./nodebb log" to view server output\n');
process.stdout.write(' "./nodebb restart" to restart NodeBB\n');
child.unref();
process.exit(0);
}
function compileLess(callback) {
if ((nconf.get('from-file') || '').indexOf('less') !== -1) {
winston.info('LESS compilation skipped');
return callback(false);
}
fs.readFile(path.join(__dirname, '../public/less/install.less'), function(err, style) {
less.render(style.toString(), function(err, css) {
if(err) {
return winston.error('Unable to compile LESS: ', err);
}
fs.writeFile(path.join(__dirname, '../public/stylesheet.css'), css.css, callback);
});
});
}
function compileJS(callback) {
if ((nconf.get('from-file') || '').indexOf('js') !== -1) {
winston.info('Client-side JS compilation skipped');
return callback(false);
}
var scriptPath = path.join(__dirname, '..'),
result = uglify.minify(scripts.map(function(script) {
return path.join(scriptPath, script);
}));
fs.writeFile(path.join(__dirname, '../public/nodebb.min.js'), result.code, callback);
}
module.exports = web;

View File

@@ -9,15 +9,11 @@ var nconf = require('nconf'),
async = require('async'), async = require('async'),
logrotate = require('logrotate-stream'), logrotate = require('logrotate-stream'),
pkg = require('./package.json'); pkg = require('./package.json'),
nconf.argv().env().file({ pidFilePath = __dirname + '/pidfile',
file: path.join(__dirname, '/config.json')
});
var pidFilePath = __dirname + '/pidfile',
output = logrotate({ file: __dirname + '/logs/output.log', size: '1m', keep: 3, compress: true }), output = logrotate({ file: __dirname + '/logs/output.log', size: '1m', keep: 3, compress: true }),
silent = nconf.get('silent') === 'false' ? false : nconf.get('silent') !== false, silent = process.env.NODE_ENV !== 'development',
numProcs, numProcs,
workers = [], workers = [],
@@ -86,7 +82,7 @@ Loader.addWorkerEvents = function(worker) {
if (message && typeof message === 'object' && message.action) { if (message && typeof message === 'object' && message.action) {
switch (message.action) { switch (message.action) {
case 'ready': case 'ready':
if (Loader.js.cache && !worker.isPrimary) { if (Loader.js.cache) {
worker.send({ worker.send({
action: 'js-propagate', action: 'js-propagate',
cache: Loader.js.cache, cache: Loader.js.cache,
@@ -95,7 +91,7 @@ Loader.addWorkerEvents = function(worker) {
}); });
} }
if (Loader.css.cache && !worker.isPrimary) { if (Loader.css.cache) {
worker.send({ worker.send({
action: 'css-propagate', action: 'css-propagate',
cache: Loader.css.cache, cache: Loader.css.cache,
@@ -103,8 +99,6 @@ Loader.addWorkerEvents = function(worker) {
hash: Loader.css.hash hash: Loader.css.hash
}); });
} }
break; break;
case 'restart': case 'restart':
console.log('[cluster] Restarting...'); console.log('[cluster] Restarting...');
@@ -138,11 +132,6 @@ Loader.addWorkerEvents = function(worker) {
hash: message.hash hash: message.hash
}, worker.pid); }, worker.pid);
break; break;
case 'templates:compiled':
Loader.notifyWorkers({
action: 'templates:compiled',
}, worker.pid);
break;
} }
} }
}); });
@@ -192,12 +181,7 @@ function forkWorker(index, isPrimary) {
} }
function getPorts() { function getPorts() {
var _url = nconf.get('url'); var urlObject = url.parse(nconf.get('url'));
if (!_url) {
console.log('[cluster] url is undefined, please check your config.json');
process.exit();
}
var urlObject = url.parse(_url);
var port = nconf.get('port') || nconf.get('PORT') || urlObject.port || 4567; var port = nconf.get('port') || nconf.get('PORT') || urlObject.port || 4567;
if (!Array.isArray(port)) { if (!Array.isArray(port)) {
port = [port]; port = [port];
@@ -246,9 +230,11 @@ Loader.notifyWorkers = function(msg, worker_pid) {
}); });
}; };
fs.open(path.join(__dirname, 'config.json'), 'r', function(err) { nconf.argv().file({
if (!err) { file: path.join(__dirname, '/config.json')
if (nconf.get('daemon') !== 'false' && nconf.get('daemon') !== false) { });
if (nconf.get('daemon') !== false) {
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' });
@@ -265,19 +251,14 @@ fs.open(path.join(__dirname, 'config.json'), 'r', function(err) {
}); });
fs.writeFile(__dirname + '/pidfile', process.pid); fs.writeFile(__dirname + '/pidfile', process.pid);
} }
async.series([ async.series([
Loader.init, Loader.init,
Loader.displayStartupMessages, Loader.displayStartupMessages,
Loader.start Loader.start
], function(err) { ], function(err) {
if (err) { if (err) {
console.log('[loader] Error during startup: ' + err.message); console.log('[loader] Error during startup: ' + err.message);
} }
});
} else {
// No config detected, kickstart web installer
var child = require('child_process').fork('app');
}
}); });

View File

@@ -6,7 +6,6 @@ var uglifyjs = require('uglify-js'),
fs = require('fs'), fs = require('fs'),
path = require('path'), path = require('path'),
crypto = require('crypto'), crypto = require('crypto'),
utils = require('./public/src/utils'),
Minifier = { Minifier = {
js: {} js: {}
@@ -15,7 +14,7 @@ var uglifyjs = require('uglify-js'),
/* Javascript */ /* Javascript */
Minifier.js.minify = function (scripts, minify, callback) { Minifier.js.minify = function (scripts, minify, callback) {
scripts = scripts.filter(function(file) { scripts = scripts.filter(function(file) {
return fs.existsSync(file) && file.endsWith('.js'); return fs.existsSync(file);
}); });
if (minify) { if (minify) {
@@ -30,10 +29,9 @@ Minifier.js.minify = function (scripts, minify, callback) {
process.on('message', function(payload) { process.on('message', function(payload) {
switch(payload.action) { switch(payload.action) {
case 'js': case 'js':
Minifier.js.minify(payload.scripts, payload.minify, function(minified/*, sourceMap*/) { Minifier.js.minify(payload.scripts, payload.minify, function(minified) {
process.send({ process.send({
type: 'end', type: 'end',
// sourceMap: sourceMap,
minified: minified minified: minified
}); });
}); });
@@ -42,11 +40,8 @@ process.on('message', function(payload) {
}); });
function minifyScripts(scripts, callback) { function minifyScripts(scripts, callback) {
// The portions of code involving the source map are commented out as they're broken in UglifyJS2
// Follow along here: https://github.com/mishoo/UglifyJS2/issues/700
try { try {
var minified = uglifyjs.minify(scripts, { var minified = uglifyjs.minify(scripts, {
// outSourceMap: "nodebb.min.js.map",
compress: false compress: false
}), }),
hasher = crypto.createHash('md5'), hasher = crypto.createHash('md5'),
@@ -60,7 +55,7 @@ function minifyScripts(scripts, callback) {
payload: hash.slice(0, 8) payload: hash.slice(0, 8)
}); });
callback(minified.code/*, minified.map*/); callback(minified.code);
} catch(err) { } catch(err) {
process.send({ process.send({
type: 'error', type: 'error',

296
nodebb
View File

@@ -1,168 +1,136 @@
#!/usr/bin/env node #!/bin/bash
var colors = require('colors'), # $0 script path
cproc = require('child_process'), # $1 action
argv = require('minimist')(process.argv.slice(2)), # $2 subaction
fs = require('fs'),
async = require('async'),
touch = require('touch'),
npm = require('npm');
var getRunningPid = function(callback) { node="$(which nodejs 2>/dev/null)";
fs.readFile(__dirname + '/pidfile', { if [ $? -gt 0 ];
encoding: 'utf-8' then node="$(which node)";
}, function(err, pid) { fi
if (err) {
return callback(err);
}
try { function pidExists() {
process.kill(parseInt(pid, 10), 0); if [ -e "pidfile" ];
callback(null, parseInt(pid, 10)); then
} catch(e) { if ps -p $(cat pidfile) > /dev/null
callback(e); then return 1;
} else
}); rm ./pidfile;
}; return 0;
fi
switch(process.argv[2]) { else
case 'status': return 0;
getRunningPid(function(err, pid) { fi
if (!err) {
process.stdout.write('\nNodeBB Running '.bold + '(pid '.cyan + pid.toString().cyan + ')\n'.cyan);
process.stdout.write('\t"' + './nodebb stop'.yellow + '" to stop the NodeBB server\n');
process.stdout.write('\t"' + './nodebb log'.yellow + '" to view server output\n');
process.stdout.write('\t"' + './nodebb restart'.yellow + '" to restart NodeBB\n\n');
} else {
process.stdout.write('\nNodeBB is not running\n'.bold);
process.stdout.write('\t"' + './nodebb start'.yellow + '" to launch the NodeBB server\n\n'.reset);
}
})
break;
case 'start':
process.stdout.write('\nStarting NodeBB\n'.bold);
process.stdout.write(' "' + './nodebb stop'.yellow + '" to stop the NodeBB server\n');
process.stdout.write(' "' + './nodebb log'.yellow + '" to view server output\n');
process.stdout.write(' "' + './nodebb restart'.yellow + '" to restart NodeBB\n\n'.reset);
// Spawn a new NodeBB process
cproc.fork(__dirname + '/loader.js', {
env: process.env
});
break;
case 'stop':
getRunningPid(function(err, pid) {
if (!err) {
process.kill(pid, 'SIGTERM');
process.stdout.write('Stopping NodeBB. Goodbye!\n')
} else {
process.stdout.write('NodeBB is already stopped.\n');
}
});
break;
case 'restart':
getRunningPid(function(err, pid) {
if (!err) {
process.kill(pid, 'SIGHUP');
} else {
process.stdout.write('NodeBB could not be restarted, as a running instance could not be found.');
}
});
break;
case 'reload':
getRunningPid(function(err, pid) {
if (!err) {
process.kill(pid, 'SIGUSR2');
} else {
process.stdout.write('NodeBB could not be reloaded, as a running instance could not be found.');
}
});
break;
case 'dev':
process.env.NODE_ENV = 'development';
cproc.fork(__dirname + '/loader.js', ['--no-daemon', '--no-silent'], {
env: process.env
});
break;
case 'log':
process.stdout.write('\nType '.red + 'Ctrl-C '.bold + 'to exit'.red);
process.stdout.write('\n\n'.reset);
cproc.spawn('tail', ['-F', './logs/output.log'], {
cwd: __dirname,
stdio: 'inherit'
});
break;
case 'setup':
cproc.fork('app.js', ['--setup'], {
cwd: __dirname,
silent: false
});
break;
case 'reset':
var args = process.argv.slice(0);
args.unshift('--reset');
cproc.fork('app.js', args, {
cwd: __dirname,
silent: false
});
break;
case 'upgrade':
async.series([
function(next) {
process.stdout.write('1. '.bold + 'Bringing base dependencies up to date\n'.yellow);
npm.load({
loglevel: 'silent'
}, function() {
npm.commands.install(next);
});
},
function(next) {
process.stdout.write('2. '.bold + 'Updating NodeBB data store schema\n'.yellow);
var upgradeProc = cproc.fork('app.js', ['--upgrade'], {
cwd: __dirname,
silent: false
});
upgradeProc.on('close', next)
},
function(next) {
process.stdout.write('3. '.bold + 'Storing upgrade date in "package.json"\n'.yellow);
touch(__dirname + '/package.json', {}, next);
}
], function(err) {
if (err) {
process.stdout.write('\nError'.red + ': ' + err.message + '\n');
} else {
var message = 'NodeBB Upgrade Complete!',
spaces = new Array(Math.floor(process.stdout.columns / 2) - (message.length / 2) + 1).join(' ');
process.stdout.write('\n' + spaces + message.green.bold + '\n\n'.reset);
}
});
break;
default:
process.stdout.write('\nWelcome to NodeBB\n\n'.bold);
process.stdout.write('Usage: ./nodebb {start|stop|reload|restart|log|setup|reset|upgrade|dev}\n\n');
process.stdout.write('\t' + 'start'.yellow + '\tStart the NodeBB server\n');
process.stdout.write('\t' + 'stop'.yellow + '\tStops the NodeBB server\n');
process.stdout.write('\t' + 'reload'.yellow + '\tRestarts NodeBB\n');
process.stdout.write('\t' + 'restart'.yellow + '\tRestarts NodeBB\n');
process.stdout.write('\t' + 'log'.yellow + '\tOpens the logging interface (useful for debugging)\n');
process.stdout.write('\t' + 'setup'.yellow + '\tRuns the NodeBB setup script\n');
process.stdout.write('\t' + 'reset'.yellow + '\tDisables all plugins, restores the default theme.\n');
process.stdout.write('\t' + 'upgrade'.yellow + '\tRun NodeBB upgrade scripts, ensure packages are up-to-date\n');
process.stdout.write('\t' + 'dev'.yellow + '\tStart NodeBB in interactive development mode\n');
process.stdout.write('\t' + 'watch'.yellow + '\tStart NodeBB in development mode and watch for changes\n');
process.stdout.write('\n'.reset);
break;
} }
case "$1" in
start)
echo "Starting NodeBB";
echo " \"./nodebb stop\" to stop the NodeBB server";
echo " \"./nodebb log\" to view server output";
# Start the loader daemon
"$node" loader "$@"
;;
stop)
pidExists;
if [ 0 -eq $? ];
then
echo "NodeBB is already stopped.";
else
echo "Stopping NodeBB. Goodbye!";
kill $(cat pidfile);
fi
;;
restart)
pidExists;
if [ 0 -eq $? ];
then
echo "NodeBB could not be restarted, as a running instance could not be found.";
else
echo "Restarting NodeBB.";
kill -1 $(cat pidfile);
fi
;;
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)
pidExists;
if [ 0 -eq $? ];
then
echo "NodeBB is not running";
echo " \"./nodebb start\" to launch the NodeBB server";
else
echo "NodeBB Running (pid $(cat pidfile))";
echo " \"./nodebb stop\" to stop the NodeBB server";
echo " \"./nodebb log\" to view server output";
echo " \"./nodebb restart\" to restart NodeBB";
fi
;;
log)
clear;
tail -F ./logs/output.log;
;;
upgrade)
npm install
# ls -d node_modules/nodebb* | xargs -n1 basename | xargs npm install
# ls -d node_modules/nodebb* | xargs -n1 basename | xargs npm update
npm i nodebb-theme-vanilla nodebb-theme-lavender nodebb-widget-essentials
"$node" app --upgrade
touch package.json
;;
setup)
"$node" app --setup "$@"
;;
reset)
"$node" app --reset --$2
;;
dev)
echo "Launching NodeBB in \"development\" mode."
echo "To run the production build of NodeBB, please use \"forever\"."
echo "More Information: https://docs.nodebb.org/en/latest/running/index.html"
NODE_ENV=development "$node" loader --no-daemon "$@"
;;
watch)
echo "Launching NodeBB in \"development\" mode."
echo "To run the production build of NodeBB, please use \"forever\"."
echo "More Information: https://docs.nodebb.org/en/latest/running/index.html"
NODE_ENV=development supervisor -q --ignore public/templates,public/nodebb.min.js,public/nodebb.min.js.map --extensions 'node|js|tpl|less' -- app "$@"
;;
*)
echo "Welcome to NodeBB"
echo $"Usage: $0 {start|stop|reload|restart|log|setup|reset|upgrade|dev|watch}"
echo ''
column -s ' ' -t <<< '
start Start the NodeBB server
stop Stops the NodeBB server
reload Restarts NodeBB
restart Restarts NodeBB
log Opens the logging interface (useful for debugging)
setup Runs the NodeBB setup script
reset Disables all plugins, restores the default theme.
upgrade Run NodeBB upgrade scripts, ensure packages are up-to-date
dev Start NodeBB in interactive development mode
watch Start NodeBB in development mode and watch for changes
'
exit 1
esac

2765
npm-shrinkwrap.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,8 +1,8 @@
{ {
"name": "nodebb", "name": "nodebb",
"license": "GPL-3.0", "license": "GPLv3 or later",
"description": "NodeBB Forum", "description": "NodeBB Forum",
"version": "0.7.1", "version": "0.6.1",
"homepage": "http://www.nodebb.org", "homepage": "http://www.nodebb.org",
"repository": { "repository": {
"type": "git", "type": "git",
@@ -10,14 +10,14 @@
}, },
"main": "app.js", "main": "app.js",
"scripts": { "scripts": {
"start": "node loader.js", "start": "./nodebb start",
"stop": "./nodebb stop",
"test": "mocha ./tests -t 10000" "test": "mocha ./tests -t 10000"
}, },
"dependencies": { "dependencies": {
"async": "~0.9.0", "async": "~0.9.0",
"bcryptjs": "~2.1.0", "bcryptjs": "~2.1.0",
"body-parser": "^1.9.0", "body-parser": "^1.9.0",
"colors": "^1.1.0",
"compression": "^1.1.0", "compression": "^1.1.0",
"connect-ensure-login": "^0.1.1", "connect-ensure-login": "^0.1.1",
"connect-flash": "^0.1.1", "connect-flash": "^0.1.1",
@@ -28,58 +28,46 @@
"daemon": "~1.1.0", "daemon": "~1.1.0",
"express": "^4.9.5", "express": "^4.9.5",
"express-session": "^1.8.2", "express-session": "^1.8.2",
"gm": "1.17.0",
"gravatar": "^1.1.0", "gravatar": "^1.1.0",
"heapdump": "^0.3.0", "heapdump": "^0.3.0",
"less": "^2.0.0", "less": "^2.0.0",
"logrotate-stream": "^0.2.3", "logrotate-stream": "^0.2.3",
"lru-cache": "^2.6.1",
"lwip": "0.0.7",
"mime": "^1.3.4",
"minimist": "^1.1.1",
"mkdirp": "~0.5.0", "mkdirp": "~0.5.0",
"mmmagic": "^0.3.13",
"morgan": "^1.3.2", "morgan": "^1.3.2",
"nconf": "~0.7.1", "nconf": "~0.7.1",
"nodebb-plugin-composer-default": "^1.0.7", "nodebb-plugin-dbsearch": "^0.1.0",
"nodebb-plugin-dbsearch": "^0.2.12", "nodebb-plugin-markdown": "^0.8.0",
"nodebb-plugin-emoji-extended": "^0.4.8", "nodebb-plugin-mentions": "^0.9.0",
"nodebb-plugin-markdown": "^4.0.0", "nodebb-plugin-soundpack-default": "~0.1.1",
"nodebb-plugin-mentions": "^0.11.7",
"nodebb-plugin-soundpack-default": "^0.1.1",
"nodebb-plugin-spam-be-gone": "^0.4.0", "nodebb-plugin-spam-be-gone": "^0.4.0",
"nodebb-rewards-essentials": "^0.0.1", "nodebb-theme-lavender": "^0.2.0",
"nodebb-theme-lavender": "^1.0.48", "nodebb-theme-vanilla": "^0.2.0",
"nodebb-theme-persona": "^1.0.16", "nodebb-widget-essentials": "~0.2.0",
"nodebb-theme-vanilla": "^2.0.14",
"nodebb-widget-essentials": "^1.0.2",
"npm": "^2.1.4", "npm": "^2.1.4",
"passport": "^0.2.1", "passport": "^0.2.1",
"passport-local": "1.0.0", "passport-local": "1.0.0",
"prompt": "^0.2.14", "prompt": "^0.2.14",
"request": "^2.44.0", "request": "^2.44.0",
"rimraf": "~2.3.2", "rimraf": "~2.2.6",
"rss": "^1.0.0", "rss": "^1.0.0",
"semver": "^4.3.3", "semver": "^4.0.3",
"serve-favicon": "^2.1.5", "serve-favicon": "^2.1.5",
"sitemap": "^0.8.1", "sitemap": "^0.7.4",
"socket.io": "^1.2.1", "socket.io": "^1.2.1",
"socket.io-client": "^1.2.1", "socket.io-client": "^1.2.1",
"socket.io-redis": "^0.1.3", "socket.io-redis": "^0.1.3",
"socketio-wildcard": "~0.1.1", "socketio-wildcard": "~0.1.1",
"string": "^3.0.0", "string": "^3.0.0",
"templates.js": "^0.2.6", "templates.js": "^0.1.15",
"touch": "0.0.3", "uglify-js": "git+https://github.com/julianlam/UglifyJS2.git",
"uglify-js": "^2.4.23", "underscore": "~1.7.0",
"underscore": "~1.8.3", "validator": "~3.28.0",
"underscore.deep": "^0.5.1",
"validator": "^3.30.0",
"winston": "^0.9.0", "winston": "^0.9.0",
"xregexp": "~2.0.0" "xregexp": "~2.0.0"
}, },
"devDependencies": { "devDependencies": {
"mocha": "~1.13.0", "mocha": "~1.13.0"
"grunt": "~0.4.5",
"grunt-contrib-watch": "^0.6.1"
}, },
"bugs": { "bugs": {
"url": "https://github.com/NodeBB/NodeBB/issues" "url": "https://github.com/NodeBB/NodeBB/issues"
@@ -90,17 +78,17 @@
"maintainers": [ "maintainers": [
{ {
"name": "Andrew Rodrigues", "name": "Andrew Rodrigues",
"email": "andrew@nodebb.org", "email": "andrew@designcreateplay.com",
"url": "https://github.com/psychobunny" "url": "https://github.com/psychobunny"
}, },
{ {
"name": "Julian Lam", "name": "Julian Lam",
"email": "julian@nodebb.org", "email": "julian@designcreateplay.com",
"url": "https://github.com/julianlam" "url": "https://github.com/julianlam"
}, },
{ {
"name": "Barış Soner Uşaklı", "name": "Barış Soner Uşaklı",
"email": "baris@nodebb.org", "email": "baris@designcreateplay.com",
"url": "https://github.com/barisusakli" "url": "https://github.com/barisusakli"
} }
] ]

View File

@@ -1,12 +1,8 @@
{ {
"new_topic_button": "موضوع جديد", "new_topic_button": "موضوع جديد",
"guest-login-post": "يجب عليك تسجيل الدخول للرد",
"no_topics": "<strong>لا توجد مواضيع في هذه الفئة</strong>لم لا تحاول إنشاء موضوع؟<br />", "no_topics": "<strong>لا توجد مواضيع في هذه الفئة</strong>لم لا تحاول إنشاء موضوع؟<br />",
"browsing": "تصفح", "browsing": "تصفح",
"no_replies": ا توجد ردود.", "no_replies": م يرد أحد",
"share_this_category": "انشر هذه الفئة", "share_this_category": "انشر هذه الفئة",
"watch": "متابعة", "ignore": "تجاهل"
"ignore": "تجاهل",
"watch.message": "أنت اﻷن متابع لتحديثات هذه الفئة",
"ignore.message": "أنت اﻷن تتجاهل تحديثات هذه الفئة"
} }

View File

@@ -1,21 +1,14 @@
{ {
"password-reset-requested": "تم طلب إعادة تعيين كلمة المرور - %1!", "password-reset-requested": "تم طلب إعادة تعيين كلمة السر - %1!",
"welcome-to": "مرحبًا بك في %1", "welcome-to": "مرحبًا بك في %1",
"invite": "Invitation from %1",
"greeting_no_name": "مرحبًا", "greeting_no_name": "مرحبًا",
"greeting_with_name": "مرحبًا بك يا %1", "greeting_with_name": "مرحبًا بك يا %1",
"welcome.text1": "شكرًا على تسجيلك في %1!", "welcome.text1": "شكرًا على تسجيلك في %1!",
"welcome.text2": "لتفعيل حسابك، نحتاج إلى التأكد من صحة عنوان البريد الإلكتروني الذي تسجلت به.", "welcome.text2": "لتفعيل حسابك، نحتاج إلى التأكد من صحة عنوان البريد الإلكتروني الذي تسجلت به.",
"welcome.text3": "An administrator has accepted your registration application. You can login with your username/password now.",
"welcome.cta": "انقر هنا لتفعيل عنوان بريدك الإلكتروني", "welcome.cta": "انقر هنا لتفعيل عنوان بريدك الإلكتروني",
"invitation.text1": "%1 has invited you to join %2", "reset.text1": "لقد توصلنا بطلب إعادة تعيين كلمة السرالخاصة بك، ربما لكونك قد نسيتها, إن لم يكن الأمر كذلك، المرجو تجاهل هذه الرسالة.",
"invitation.ctr": "Click here to create your account.", "reset.text2": "لمواصلة طلب إعاة تعيين كلمة السر، المرجو تتبع هذا الرابط.",
"reset.text1": "لقد توصلنا بطلب إعادة تعيين كلمة المرور الخاصة بك، ربما لكونك قد نسيتها, إن لم يكن الأمر كذلك، المرجو تجاهل هذه الرسالة.",
"reset.text2": "لمواصلة طلب إعاة تعيين كلمة المرور، الرجاء تتبع هذا الرابط.",
"reset.cta": "انقر هنا لإعادة تعيين كلمة السر الخاصة بك.", "reset.cta": "انقر هنا لإعادة تعيين كلمة السر الخاصة بك.",
"reset.notify.subject": "تم تغيير كلمة المرور بنجاح",
"reset.notify.text1": "نحيطك علما أن كلمة مرورك قد تم تغييرها في %1",
"reset.notify.text2": "إن لم يكن لديك علم بهذا، المرجو إشعار مدبر النظام بأسرع مايمكن.",
"digest.notifications": "لديك تنبيهات غير مقروءة من طرف %1:", "digest.notifications": "لديك تنبيهات غير مقروءة من طرف %1:",
"digest.latest_topics": "آخر المستجدات من %1", "digest.latest_topics": "آخر المستجدات من %1",
"digest.cta": "انقر هنا لمشاهدة %1", "digest.cta": "انقر هنا لمشاهدة %1",
@@ -24,8 +17,8 @@
"notif.chat.subject": "هناك محادثة جديدة من %1", "notif.chat.subject": "هناك محادثة جديدة من %1",
"notif.chat.cta": "انقر هنا لمتابعة المحادثة", "notif.chat.cta": "انقر هنا لمتابعة المحادثة",
"notif.chat.unsub.info": "تم إرسال هذا الإشعار بوجودة محادثة جديدة وفقا لخيارات تسجيلك.", "notif.chat.unsub.info": "تم إرسال هذا الإشعار بوجودة محادثة جديدة وفقا لخيارات تسجيلك.",
"notif.post.cta": "انقر هنا لقراءة الموضوع بأكمله", "notif.post.cta": "Click here to read the full topic",
"notif.post.unsub.info": "تم إشعارك بهذه المشاركة بناءً على الخيارات التي سبق وأن حددتها.", "notif.post.unsub.info": "This post notification was sent to you due to your subscription settings.",
"test.text1": "هذه رسالة تجريبية للتأكد من صحة إعدادت الرسائل الإلكترونية في منتدى NodeBB خاصتك.", "test.text1": "هذه رسالة تجريبية للتأكد من صحة إعدادت الرسائل الإلكترونية في منتدى NodeBB خاصتك.",
"unsub.cta": "انقر هنا لتغيير تلك الإعدادات", "unsub.cta": "انقر هنا لتغيير تلك الإعدادات",
"closing": "شكرًا لك!" "closing": "شكرًا لك!"

View File

@@ -1,8 +1,8 @@
{ {
"invalid-data": "بيانات غير صالحة", "invalid-data": "بيانات غير صالحة",
"not-logged-in": "لم تقم بتسجيل الدخول", "not-logged-in": "لم تقم بتسجيل الدخول",
"account-locked": "تم حظر حسابك مؤقتًا.", "account-locked": "تم إقفال حسابكم مؤقتًا.",
"search-requires-login": "البحث في المنتدى يتطلب حساب - الرجاء تسجيل الدخول أو التسجيل", "search-requires-login": "البحث في المنتدى يستلزم توفرك على حساب! المرجو تسجيل دخولك أو إنشاء حساب!",
"invalid-cid": "قائمة غير موجودة", "invalid-cid": "قائمة غير موجودة",
"invalid-tid": "موضوع غير متواجد", "invalid-tid": "موضوع غير متواجد",
"invalid-pid": "رد غير موجود", "invalid-pid": "رد غير موجود",
@@ -18,14 +18,11 @@
"username-taken": "اسم المستخدم مأخوذ", "username-taken": "اسم المستخدم مأخوذ",
"email-taken": "البريد الالكتروني مأخوذ", "email-taken": "البريد الالكتروني مأخوذ",
"email-not-confirmed": "عنوان بريدك الإلكتروني غير مفعل بعد. انقر هنا لتفعيله من فضلك.", "email-not-confirmed": "عنوان بريدك الإلكتروني غير مفعل بعد. انقر هنا لتفعيله من فضلك.",
"email-not-confirmed-chat": "لا يمكنك الدردشة حتى تقوم بتأكيد بريدك الإلكتروني، الرجاء إضغط هنا لتأكيد بريدك اﻹلكتروني.", "email-not-confirmed-chat": "You are unable to chat until your email is confirmed",
"no-email-to-confirm": "هذا المنتدى يستلزم تفعيل بريدك الإلكتروني، انقر هنا من فضلك لإدخاله.",
"email-confirm-failed": "لم نستطع تفعيل بريدك الإلكتروني، المرجو المحاولة لاحقًا.",
"confirm-email-already-sent": "لقد تم ارسال بريد التأكيد، الرجاء اﻹنتظار 1% دقائق لإعادة اﻹرسال",
"username-too-short": "اسم المستخدم قصير.", "username-too-short": "اسم المستخدم قصير.",
"username-too-long": "اسم المستخدم طويل", "username-too-long": "اسم المستخدم طويل",
"user-banned": "المستخدم محظور", "user-banned": "المستخدم محظور",
"user-too-new": "عذرا, يجب أن تنتظر 1% ثواني قبل قيامك بأول مشاركة", "user-too-new": "عذرًا، يجب الانتظار %1 ثواني قبل إضافة ردك الأول.",
"no-category": "قائمة غير موجودة", "no-category": "قائمة غير موجودة",
"no-topic": "موضوع غير موجود", "no-topic": "موضوع غير موجود",
"no-post": "رد غير موجود", "no-post": "رد غير موجود",
@@ -36,53 +33,41 @@
"no-emailers-configured": "لا يمكن إرسال رسالة إلكترونية تجريبية لعدم وجود قوالب خاصة بالرسائل الإلكترونية،", "no-emailers-configured": "لا يمكن إرسال رسالة إلكترونية تجريبية لعدم وجود قوالب خاصة بالرسائل الإلكترونية،",
"category-disabled": "قائمة معطلة", "category-disabled": "قائمة معطلة",
"topic-locked": "الموضوع مقفول", "topic-locked": "الموضوع مقفول",
"post-edit-duration-expired": "You are only allowed to edit posts for %1 second(s) after posting",
"still-uploading": "الرجاء انتظار الرفع", "still-uploading": "الرجاء انتظار الرفع",
"content-too-short": "Please enter a longer post. Posts should contain at least %1 character(s).", "content-too-short": "المرجو إدخال موضوع أطول من هذا. يجب أن تتوفر المواضيع على %1 حروف على الأقل.",
"content-too-long": "Please enter a shorter post. Posts can't be longer than %1 character(s).", "title-too-short": "المرجو إدخال عنوان أطول من هذا. يجب أن تتوفر العناوين على %1 حروف على الأقل.",
"title-too-short": "Please enter a longer title. Titles should contain at least %1 character(s).", "title-too-long": "المرجو إدخال عنوان أقصر من هذا. يجب ألا تتجاوز العناوين %1 حرفًا.",
"title-too-long": "Please enter a shorter title. Titles can't be longer than %1 character(s).", "too-many-posts": "يمكنك إنشاء المواضيع بمعدل موضوع واحد كل %1 ثانية - المرجو الانتظار قليلا.",
"too-many-posts": "You can only post once every %1 second(s) - please wait before posting again", "too-many-posts-newbie": "بصفتك مستخدمًا جديدًا، يمكنك إنشاء المواضيع بمعدل موضوع واحد كل %1 ثانية حتى تحصل على سمعة %2 - المرجو الانتظار قليلا.",
"too-many-posts-newbie": "As a new user, you can only post once every %1 second(s) until you have earned %2 reputation - please wait before posting again", "file-too-big": "حجم الملفات الأقصى المسموح به هو %1 كب - المرجو رفع ملف أقل حجمًا",
"tag-too-short": "Please enter a longer tag. Tags should contain at least %1 character(s)",
"tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 character(s)",
"file-too-big": "Maximum allowed file size is %1 kB - please upload a smaller file",
"cant-vote-self-post": "لايمكنك التصويت لردك", "cant-vote-self-post": "لايمكنك التصويت لردك",
"already-favourited": "لقد سبق وأضفت هذا الرد إلى المفضلة", "already-favourited": "لقد سبق وأضفت هذا الرد إلى المفضلة",
"already-unfavourited": "لقد سبق وحذفت هذا الرد من المفضلة", "already-unfavourited": "لقد سبق وحذفت هذا الرد من المفضلة",
"cant-ban-other-admins": "لايمكن حظر مدبر نظام آخر.", "cant-ban-other-admins": "لايمكن حظر مدبر نظام آخر.",
"cant-remove-last-admin": "You are the only administrator. Add another user as an administrator before removing yourself as admin",
"invalid-image-type": "Invalid image type. Allowed types are: %1", "invalid-image-type": "Invalid image type. Allowed types are: %1",
"invalid-image-extension": "Invalid image extension", "invalid-image-extension": "Invalid image extension",
"invalid-file-type": "Invalid file type. Allowed types are: %1",
"group-name-too-short": "اسم المجموعة قصير", "group-name-too-short": "اسم المجموعة قصير",
"group-already-exists": "المجموعة موجودة مسبقا", "group-already-exists": "المجموعة موجودة مسبقا",
"group-name-change-not-allowed": "لايسمح بتغيير أسماء المجموعات", "group-name-change-not-allowed": "لايسمح بتغيير أسماء المجموعات",
"group-already-member": "أنت بالفعل عضو في هذه المجموعة ", "group-already-member": "You are already part of this group",
"group-needs-owner": "هذه المجموعة تتطلب مالك واحد على اﻷقل", "group-needs-owner": "This group requires at least one owner",
"group-already-invited": "This user has already been invited",
"group-already-requested": "Your membership request has already been submitted",
"post-already-deleted": "سبق وتم حذف هذا الرد", "post-already-deleted": "سبق وتم حذف هذا الرد",
"post-already-restored": "سبق وتم إلغاء حذف هذا الرد", "post-already-restored": "سبق وتم إلغاء حذف هذا الرد",
"topic-already-deleted": "سبق وتم حذف هذا الموضوع", "topic-already-deleted": "سبق وتم حذف هذا الموضوع",
"topic-already-restored": "سبق وتم إلغاء حذف هذا الرد", "topic-already-restored": "سبق وتم إلغاء حذف هذا الرد",
"cant-purge-main-post": "You can't purge the main post, please delete the topic instead",
"topic-thumbnails-are-disabled": "الصور المصغرة غير مفعلة.", "topic-thumbnails-are-disabled": "الصور المصغرة غير مفعلة.",
"invalid-file": "ملف غير مقبول", "invalid-file": "ملف غير مقبول",
"uploads-are-disabled": "رفع الملفات غير مفعل", "uploads-are-disabled": "رفع الملفات غير مفعل",
"signature-too-long": "عذرا، توقيعك يجب ألا يتجاوز %1 حرفًا.", "upload-error": "مشكلة في الرفع: 1%",
"about-me-too-long": "Sorry, your about me cannot be longer than %1 character(s).", "signature-too-long": "عذرا، توقيعك يجب ألا يتجاوز %1 حرفًا",
"cant-chat-with-yourself": "لايمكنك فتح محادثة مع نفسك", "cant-chat-with-yourself": "لايمكنك فتح محادثة مع نفسك",
"chat-restricted": "هذا المستخدم عطل المحادثات الواردة عليه. يجب أن يتبعك حتى تتمكن من فتح محادثة معه.", "chat-restricted": "هذا المستخدم عطل المحادثات الواردة عليه. يجب أن يتبعك حتى تتمكن من فتح محادثة معه.",
"too-many-messages": "لقد أرسلت الكثير من الرسائل، الرجاء اﻹنتظار قليلاً", "too-many-messages": "You have sent too many messages, please wait awhile.",
"reputation-system-disabled": "نظام السمعة معطل", "reputation-system-disabled": "نظام السمعة معطل",
"downvoting-disabled": "التصويتات السلبية معطلة", "downvoting-disabled": "التصويتات السلبية معطلة",
"not-enough-reputation-to-downvote": "ليس لديك سمعة تكفي لإضافة صوت سلبي لهذا الموضوع", "not-enough-reputation-to-downvote": "ليس لديك سمعة تكفي لإضافة صوت سلبي لهذا الموضوع",
"not-enough-reputation-to-flag": "ليس لديك سمعة تكفي للإشعار بموضوع مخل", "not-enough-reputation-to-flag": "ليس لديك سمعة تكفي للإشعار بموضوع مخل",
"already-flagged": "You have already flagged this post",
"reload-failed": "المنتدى واجه مشكلة أثناء إعادة التحميل: \"%1\". سيواصل المنتدى خدمة العملاء السابقين لكن يجب عليك إلغاء أي تغيير قمت به قبل إعادة التحميل.", "reload-failed": "المنتدى واجه مشكلة أثناء إعادة التحميل: \"%1\". سيواصل المنتدى خدمة العملاء السابقين لكن يجب عليك إلغاء أي تغيير قمت به قبل إعادة التحميل.",
"registration-error": "حدث خطأ أثناء التسجيل", "registration-error": "حدث خطأ أثناء التسجيل",
"parse-error": "حدث خطأ ما أثناء تحليل استجابة الخادم", "parse-error": "Something went wrong while parsing server response"
"wrong-login-type-email": "الرجاء استعمال بريدك اﻹلكتروني للدخول",
"wrong-login-type-username": "الرجاء استعمال اسم المستخدم الخاص بك للدخول"
} }

View File

@@ -3,7 +3,7 @@
"search": "بحث", "search": "بحث",
"buttons.close": "أغلق", "buttons.close": "أغلق",
"403.title": "غير مسموح بالدخول", "403.title": "غير مسموح بالدخول",
"403.message": "يبدو أنك قد تعثرت على صفحة لا تمتلك الصلاحية للدخول إليها", "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>?", "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": "You seem to have stumbled upon a page that does not exist. Return to the <a href='%1/'>home page</a>.",
@@ -27,7 +27,7 @@
"header.tags": "وسم", "header.tags": "وسم",
"header.popular": "الأكثر شهرة", "header.popular": "الأكثر شهرة",
"header.users": "المستخدمين", "header.users": "المستخدمين",
"header.groups": "المجموعات", "header.groups": "Groups",
"header.chats": "المحادثات", "header.chats": "المحادثات",
"header.notifications": "التنبيهات", "header.notifications": "التنبيهات",
"header.search": "بحث", "header.search": "بحث",
@@ -50,7 +50,6 @@
"views": "المشاهدات", "views": "المشاهدات",
"reputation": "السمعة", "reputation": "السمعة",
"read_more": "اقرأ المزيد", "read_more": "اقرأ المزيد",
"more": "More",
"posted_ago_by_guest": "كتب %1 من طرف زائر", "posted_ago_by_guest": "كتب %1 من طرف زائر",
"posted_ago_by": "كتب %1 من طرف %2", "posted_ago_by": "كتب %1 من طرف %2",
"posted_ago": "كتب %1", "posted_ago": "كتب %1",
@@ -76,7 +75,7 @@
"updated.title": "تم تحديث المنتدى", "updated.title": "تم تحديث المنتدى",
"updated.message": "لقد تم تحديث المنتدى إلى آخر نسخة للتو. المرجو إعادة تحميل الصفحة.", "updated.message": "لقد تم تحديث المنتدى إلى آخر نسخة للتو. المرجو إعادة تحميل الصفحة.",
"privacy": "الخصوصية", "privacy": "الخصوصية",
"follow": "متابعة", "follow": "Follow",
"unfollow": "إلغاء المتابعة", "unfollow": "Unfollow",
"delete_all": "حذف الكل" "delete_all": "حذف الكل"
} }

View File

@@ -1,43 +1,21 @@
{ {
"groups": "المجموعات", "groups": "المجموعات",
"view_group": "معاينة المجموعة", "view_group": "معاينة المجموعة",
"owner": "مالك المجموعة", "owner": "Group Owner",
"new_group": "أنشئ مجموعة جديدة", "new_group": "Create New Group",
"no_groups_found": "لاوجدود لمجموعات يمكن معاينتها", "no_groups_found": "There are no groups to see",
"pending.accept": "موافق", "cover-instructions": "Drag and Drop a photo, drag to position, and hit <strong>Save</strong>",
"pending.reject": "رفض", "cover-change": "Change",
"pending.accept_all": "Accept All", "cover-save": "Save",
"pending.reject_all": "Reject All", "cover-saving": "Saving",
"pending.none": "There are no pending members at this time",
"invited.none": "There are no invited members at this time",
"invited.uninvite": "Rescind Invitation",
"invited.search": "Search for a user to invite to this group",
"cover-instructions": "اسحب وأسقِط صورة، اسحبها للموضع المرغوب، وانقر على <strong>حفظ</strong>",
"cover-change": "تغيير",
"cover-save": "حفظ",
"cover-saving": "جاري الحفظ",
"details.title": "تفاصيل المجموعة", "details.title": "تفاصيل المجموعة",
"details.members": "لائحة الأعضاء", "details.members": "لائحة الأعضاء",
"details.pending": "المستخدمون في الانتظار", "details.pending": "Pending Members",
"details.invited": "Invited Members",
"details.has_no_posts": "أعضاء هذه المجموعة لم يضيفوا أية مشاركة", "details.has_no_posts": "أعضاء هذه المجموعة لم يضيفوا أية مشاركة",
"details.latest_posts": "آخر المشاركات", "details.latest_posts": "آخر المشاركات",
"details.private": "خاص", "details.private": "Private Group",
"details.grant": "منح/سحب المِلكية", "details.public": "Public Group",
"details.kick": "طرد", "details.owner_options": "Group Administration",
"details.owner_options": "إدارة المجموعة", "event.updated": "Group details have been updated",
"details.group_name": "اسم المجموعة", "event.deleted": "The group \"%1\" has been deleted"
"details.member_count": "عدد اﻷعضاء",
"details.creation_date": "تاريخ الإنشاء",
"details.description": "الوصف",
"details.badge_preview": "معاينة الوسام",
"details.change_icon": "تغيير الأيقونة",
"details.change_colour": "تغيير اللون",
"details.badge_text": "نص الوسام",
"details.userTitleEnabled": "إظهار الوسام",
"details.private_help": "في حالة تفعيل الخيار، الانضمام إلى المجموعة يستلزم قبول مالكها",
"details.hidden": "مخفي",
"details.hidden_help": "في حالة تفعيل الخيار، لن تظهر المجموعة للعموم والإنضمام إليها سيتلزم دعوة يدوية.",
"event.updated": "تم تحديث بيانات المجموعة",
"event.deleted": "تم حذف المجموعة %1"
} }

View File

@@ -1,11 +1,9 @@
{ {
"username-email": "اسم المستخدم / البريد الإلكتروني", "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": م تفتح حسابك بعد؟"
} }

View File

@@ -15,12 +15,7 @@
"chat.seven_days": "7 أيام", "chat.seven_days": "7 أيام",
"chat.thirty_days": "30 يومًا", "chat.thirty_days": "30 يومًا",
"chat.three_months": "3 أشهر", "chat.three_months": "3 أشهر",
"composer.compose": "اكتب",
"composer.show_preview": "عرض المعاينة",
"composer.hide_preview": "إخفاء المعاينة",
"composer.user_said_in": "%1 كتب في %2", "composer.user_said_in": "%1 كتب في %2",
"composer.user_said": "%1 كتب:", "composer.user_said": "%1 كتب:",
"composer.discard": "هل أنت متأكد أنك تريد التخلي عن التغييرات؟", "composer.discard": "هل أنت متأكد أنك تريد التخلي عن التغييرات؟"
"composer.submit_and_lock": "Submit and Lock",
"composer.toggle_dropdown": "Toggle Dropdown"
} }

View File

@@ -1,8 +1,7 @@
{ {
"title": "التنبيهات", "title": "تنبيهات",
"no_notifs": "ليس لديك أية تنبيهات جديدة", "no_notifs": "ليس لديك أية تنبيهات جديدة",
"see_all": "معاينة كل التنبيهات", "see_all": "معاينة كل التنبيهات",
"mark_all_read": "اجعل كل التنبيهات مقروءة",
"back_to_home": "عودة إلى %1", "back_to_home": "عودة إلى %1",
"outgoing_link": "رابط خارجي", "outgoing_link": "رابط خارجي",
"outgoing_link_message": "أنت تغادر %1 حاليا.", "outgoing_link_message": "أنت تغادر %1 حاليا.",
@@ -20,9 +19,9 @@
"user_posted_topic": "<strong>%1</strong> أنشأ موضوعًا جديدًا: <strong>%2</strong>", "user_posted_topic": "<strong>%1</strong> أنشأ موضوعًا جديدًا: <strong>%2</strong>",
"user_mentioned_you_in": "<strong>%1</strong> ذكرَ اسمك في <strong>%2</strong>", "user_mentioned_you_in": "<strong>%1</strong> ذكرَ اسمك في <strong>%2</strong>",
"user_started_following_you": "<strong>%1</strong> صار يتابعك.", "user_started_following_you": "<strong>%1</strong> صار يتابعك.",
"new_register": "<strong>%1</strong> sent a registration request.",
"email-confirmed": "تم التحقق من عنوان البريد الإلكتروني", "email-confirmed": "تم التحقق من عنوان البريد الإلكتروني",
"email-confirmed-message": "شكرًا على إثبات صحة عنوان بريدك الإلكتروني. صار حسابك مفعلًا بالكامل.", "email-confirmed-message": "شكرًا على إثبات صحة عنوان بريدك الإلكتروني. صار حسابك مفعلًا بالكامل.",
"email-confirm-error": "حدث خطأ ما...",
"email-confirm-error-message": "حدث خطأ أثناء التحقق من عنوان بريدك الإلكتروني. ربما رمز التفعيل خاطئ أو انتهت صلاحيته.", "email-confirm-error-message": "حدث خطأ أثناء التحقق من عنوان بريدك الإلكتروني. ربما رمز التفعيل خاطئ أو انتهت صلاحيته.",
"email-confirm-sent": "تم إرسال بريد التفعيل." "email-confirm-sent": "تم إرسال بريد التفعيل."
} }

View File

@@ -1,21 +1,18 @@
{ {
"home": "الصفحة الرئيسية", "home": "الصفحة الرئيسية",
"unread": "المواضيع الغير مقروءة", "unread": "المواضيع غير المقروءة",
"popular": "المواضيع الأكثر شهرة", "popular": "المواضيع الأكثر شهرة",
"recent": "المواضيع الحديثة", "recent": "المواضيع الحديثة",
"users": "اﻷعضاء المسجلون", "users": "المستخدمون المسجلون",
"notifications": "التنبيهات", "notifications": "التنبيهات",
"tags": "الكلمات الدلالية", "tags": "المواضيع المرتبطة بالوسم %1",
"tag": "Topics tagged under \"%1\"",
"user.edit": "تعديل \"%1\"", "user.edit": "تعديل \"%1\"",
"user.following": "المستخدمون الذين يتبعهم %1", "user.following": "المستخدمون الذين يتبعهم %1",
"user.followers": "المستخدمون الذين يتبعون %1", "user.followers": "المستخدمون الذين يتبعون %1",
"user.posts": "ردود %1", "user.posts": "ردود %1",
"user.topics": "مواضيع %1", "user.topics": "مواضيع %1",
"user.groups": "مجموعات %1",
"user.favourites": "مفضلات %1", "user.favourites": "مفضلات %1",
"user.settings": "خيارات المستخدم", "user.settings": "خيارات المستخدم",
"user.watched": "المواضيع المتابعة من قبل %1 ",
"maintenance.text": "جاري صيانة %1. المرجو العودة لاحقًا.", "maintenance.text": "جاري صيانة %1. المرجو العودة لاحقًا.",
"maintenance.messageIntro": "بالإضافة إلى ذلك، قام مدبر النظام بترك هذه الرسالة:" "maintenance.messageIntro": "بالإضافة إلى ذلك، قام مدبر النظام بترك هذه الرسالة:"
} }

View File

@@ -5,15 +5,14 @@
"month": "شهر", "month": "شهر",
"year": "سنة", "year": "سنة",
"alltime": "دائمًا", "alltime": "دائمًا",
"no_recent_topics": "لايوجد مواضيع جديدة", "no_recent_topics": "لاوجود لمشاركات جديدة",
"no_popular_topics": "There are no popular topics.", "there-is-a-new-topic": "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-a-new-post": "يوجد موضوع جديد و رد جديد", "there-is-a-new-topic-and-new-posts": "There is a new topic and %1 new posts.",
"there-is-a-new-topic-and-new-posts": "يوجد موضوع جديد و %1 ردود جديدة ", "there-are-new-topics": "There are %1 new topics.",
"there-are-new-topics": "يوجد %1 مواضيع جديدة", "there-are-new-topics-and-a-new-post": "There are %1 new topics and a new post.",
"there-are-new-topics-and-a-new-post": "يوجد %1 مواضيع جديدة و رد جديد", "there-are-new-topics-and-new-posts": "There are %1 new topics and %2 new posts.",
"there-are-new-topics-and-new-posts": "يوجد %1 مواضيع جديدة و %2 مشاركات جديدة", "there-is-a-new-post": "There is a new post.",
"there-is-a-new-post": "يوجد مشاركة جديدة", "there-are-new-posts": "There are %1 new posts.",
"there-are-new-posts": "يوجد %1 مشاركات جديدة", "click-here-to-reload": "Click here to reload."
"click-here-to-reload": "إضغط هنا لإعادة التحميل"
} }

View File

@@ -1,19 +1,18 @@
{ {
"register": "تسجيل", "register": "تسجيل",
"help.email": "افتراضيا، سيتم إخفاء بريدك الإلكتروني من العامة.", "help.email": "افتراضيا، سيتم إخفاء بريدك الإلكتروني من الجمهور.",
"help.username_restrictions": "اسم مستخدم فريدة من نوعها بين1% و2% حرفا. يمكن للآخرين ذكرك @ <'span id='your-username> اسم المستخدم </span>.", "help.username_restrictions": "اسم مستخدم فريدة من نوعها بين1% و2% حرفا. يمكن للآخرين ذكرك @ <'span id='your-username> اسم المستخدم </span>.",
"help.minimum_password_length": "كلمة المرور يجب أن تكون على الأقل بها 1% أحرف", "help.minimum_password_length": "كلمتك السر يجب أن تكون على الأقل متألفة من 1% أحرف",
"email_address": "عنوان البريد الإلكتروني", "email_address": "عنوان البريد الإلكتروني",
"email_address_placeholder": "ادخل عنوان البريد الإلكتروني", "email_address_placeholder": "ادخل عنوان البريد الإلكتروني",
"username": "اسم المستخدم", "username": "اسم المستخدم",
"username_placeholder": "أدخل اسم المستخدم", "username_placeholder": "أدخل اسم المستخدم",
"password": "كلمة المرور", "password": "كلمة السر",
"password_placeholder": "أدخل كلمة المرور", "password_placeholder": "أدخل كلمة السر",
"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": "قوانين الاستخدام",
"agree_to_terms_of_use": "أوافق على شروط الاستخدام", "agree_to_terms_of_use": "أوافق على قوانين الاستخدام"
"registration-added-to-queue": "Your registration has been added to the approval queue. You will receive an email when it is accepted by an administrator."
} }

View File

@@ -1,17 +1,14 @@
{ {
"reset_password": "إعادة تعيين كلمة المرور", "reset_password": "إعادة تعيين كلمة السر",
"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": "ادخل عنوان البريد الإلكتروني",
"password_reset_sent": "إعادة تعيين كلمة السر أرسلت", "password_reset_sent": "إعادة تعيين كلمة السر أرسلت",
"invalid_email": "بريد إلكتروني غير صالح أو غير موجود", "invalid_email": "بريد إلكتروني غير صالح أو غير موجود"
"password_too_short": "كلمة المرور التي أدخلتها قصيرة، الرجاء اختر كلمة مرور مختلفة",
"passwords_do_not_match": "كلمتا السر التي أدخلتهما غير متطابقتان",
"password_expired": "لقد انتهت صلاحية كلمة المرور الخاصة بك، الرجاء اختيار كلمة مرور جديدة"
} }

View File

@@ -1,40 +1,7 @@
{ {
"results_matching": "%1 نتيجة (نتائج) موافقة لـ \"%2\", (%3 ثواني)", "results_matching": "%1 نتيجة (نتائج) موافقة ل \"%2\", (%3 ثواني)",
"no-matches": "لم يتم العثور على نتائج.", "no-matches": "No matches found",
"advanced-search": "بحث متقدم", "in": "In",
"in": "في", "by": "By",
"titles": "العناوين", "posted-by": "Posted by"
"titles-posts": "العناوين والمشاركات",
"posted-by": "مشاركة من طرف",
"in-categories": "في الفئات",
"search-child-categories": "بحث في الفئات الفرعية",
"reply-count": "عدد المشاركات",
"at-least": "على اﻷقل",
"at-most": "على اﻷكثر",
"post-time": "تاريخ المشاركة",
"newer-than": "أحدث من",
"older-than": "أقدم من",
"any-date": "أي وقت",
"yesterday": "أمس",
"one-week": "أسبوع",
"two-weeks": "أسبوعان",
"one-month": "شهر",
"three-months": "ثلاثة أشهر",
"six-months": "ستة أشهر",
"one-year": "عام",
"sort-by": "عرض حسب",
"last-reply-time": "تاريخ آخر رد",
"topic-title": "عنوان الموضوع",
"number-of-replies": "عدد الردود",
"number-of-views": "عدد المشاهدات",
"topic-start-date": "تاريخ بدأ الموضوع",
"username": "اسم المستخدم",
"category": "فئة",
"descending": "في ترتيب تنازلي",
"ascending": "في ترتيب تصاعدي",
"save-preferences": "حفظ التفضيلات",
"clear-preferences": "ازالة التفضيلات",
"search-preferences-saved": "تم حفظ تفضيلات البحث",
"search-preferences-cleared": "تم ازالة تفضيلات البحث",
"show-results-as": "عرض النتائج كـ"
} }

View File

@@ -1,7 +1,7 @@
{ {
"no_tag_topics": "لا يوجد مواضيع بهذه الكلمة الدلالية.", "no_tag_topics": "لاوجود لمواضيع تحمل هذا الوسم.",
"tags": "الكلمات الدلالية", "tags": "بطاقات",
"enter_tags_here": "Enter tags here, between %1 and %2 characters each.", "enter_tags_here": "أدخل البطاقات هنا. اضغط ENTER بعد كل بطاقة.",
"enter_tags_here_short": "أدخل الكلمات الدلالية...", "enter_tags_here_short": "أدخل البطاقات...",
"no_tags": "لا يوجد كلمات دلالية بعد." "no_tags": "لاتوجد هناك بطاقات بعد."
} }

View File

@@ -5,7 +5,6 @@
"no_topics_found": "لا توجد مواضيع !", "no_topics_found": "لا توجد مواضيع !",
"no_posts_found": "لا توجد مشاركات!", "no_posts_found": "لا توجد مشاركات!",
"post_is_deleted": "هذه المشاركة محذوفة!", "post_is_deleted": "هذه المشاركة محذوفة!",
"topic_is_deleted": "هذا الموضوع محذوف",
"profile": "الملف الشخصي", "profile": "الملف الشخصي",
"posted_by": "كتب من طرف %1", "posted_by": "كتب من طرف %1",
"posted_by_guest": "كتب من طرف زائر", "posted_by_guest": "كتب من طرف زائر",
@@ -13,21 +12,20 @@
"notify_me": "تلق تنبيهات بالردود الجديدة في هذا الموضوع", "notify_me": "تلق تنبيهات بالردود الجديدة في هذا الموضوع",
"quote": "اقتبس", "quote": "اقتبس",
"reply": "رد", "reply": "رد",
"guest-login-reply": "يجب عليك تسجيل الدخول للرد",
"edit": "تعديل", "edit": "تعديل",
"delete": "حذف", "delete": "حذف",
"purge": "تطهير", "purge": "تطهير",
"restore": "استعادة", "restore": "استعادة",
"move": "نقل", "move": "انقل",
"fork": "فرع", "fork": "فرع",
"link": "رابط", "link": "رابط",
"share": "نشر", "share": "نشر",
"tools": "أدوات", "tools": "أدوات",
"flag": "تبليغ", "flag": "اشعار بمشاركة مخلة",
"locked": "مقفل", "locked": "مقفل",
"bookmark_instructions": "إضغط هنا للعودة إلى آخر موضع أو غلق للإلغاء", "bookmark_instructions": "انقر هنا للإكمال أو أغلق للإلغاء.",
"flag_title": "إشعار بمشاركة مخلة.", "flag_title": "إشعار بمشاركة مخلة.",
"flag_confirm": "هل تريد حقًّا التبليغ بهذه المشاركة؟", "flag_confirm": "هل تريد حقًّا أن تشعر بهذه المشاركة على أنها مخلة؟",
"flag_success": "تم الإشعار بهذه المشاركة على أنها مخلة", "flag_success": "تم الإشعار بهذه المشاركة على أنها مخلة",
"deleted_message": "هذه المشاركة محذوفة. فقط من لهم صلاحية الإشراف على ا لمشاركات يمكنهم معاينتها.", "deleted_message": "هذه المشاركة محذوفة. فقط من لهم صلاحية الإشراف على ا لمشاركات يمكنهم معاينتها.",
"following_topic.message": "ستستلم تنبيها عند كل مشاركة جديدة في هذا الموضوع.", "following_topic.message": "ستستلم تنبيها عند كل مشاركة جديدة في هذا الموضوع.",
@@ -76,7 +74,7 @@
"fork_no_pids": "لم تختر أي مشاركة", "fork_no_pids": "لم تختر أي مشاركة",
"fork_success": "تم إنشاء فرع للموضوع بنجاح! إضغط هنا لمعاينة الفرع.", "fork_success": "تم إنشاء فرع للموضوع بنجاح! إضغط هنا لمعاينة الفرع.",
"composer.title_placeholder": "أدخل عنوان موضوعك هنا...", "composer.title_placeholder": "أدخل عنوان موضوعك هنا...",
"composer.handle_placeholder": "اﻹسم", "composer.handle_placeholder": "Name",
"composer.discard": "نبذ التغييرات", "composer.discard": "نبذ التغييرات",
"composer.submit": "حفظ", "composer.submit": "حفظ",
"composer.replying_to": "الرد على %1", "composer.replying_to": "الرد على %1",
@@ -96,5 +94,5 @@
"oldest_to_newest": "من الأقدم إلى الأحدث", "oldest_to_newest": "من الأقدم إلى الأحدث",
"newest_to_oldest": "من الأحدث إلى الأقدم", "newest_to_oldest": "من الأحدث إلى الأقدم",
"most_votes": "الأكثر تصويتًا", "most_votes": "الأكثر تصويتًا",
"most_posts": "اﻷكثر رداً" "most_posts": "Most posts"
} }

View File

@@ -3,8 +3,7 @@
"no_unread_topics": "ليس هناك أي موضوع غير مقروء", "no_unread_topics": "ليس هناك أي موضوع غير مقروء",
"load_more": "حمل المزيد", "load_more": "حمل المزيد",
"mark_as_read": "حدد غير مقروء", "mark_as_read": "حدد غير مقروء",
"selected": "المحددة", "selected": "المختارة",
"all": "الكل", "all": "الكل",
"all_categories": "All categories",
"topics_marked_as_read.success": "تم تحديد المواضيع على أنها مقروءة!" "topics_marked_as_read.success": "تم تحديد المواضيع على أنها مقروءة!"
} }

View File

@@ -1,17 +1,13 @@
{ {
"banned": "محظور", "banned": "محظور",
"offline": "غير متصل", "offline": "ليس موجود حالياً",
"username": "إسم المستخدم", "username": "إسم المستخدم",
"joindate": "تاريخ الإنضمام", "joindate": "Join Date",
"postcount": "عدد المشاركات", "postcount": "Post Count",
"email": "البريد الإلكتروني", "email": "البريد الإلكتروني",
"confirm_email": "تأكيد عنوان البريد الإلكتروني", "confirm_email": "تأكيد عنوان البريد الإلكتروني",
"ban_account": "Ban Account",
"ban_account_confirm": "Do you really want to ban this user?",
"unban_account": "Unban Account",
"delete_account": "حذف الحساب", "delete_account": "حذف الحساب",
"delete_account_confirm": "هل أن متأكد أنك تريد حذف حسابك؟<br /><strong> هذه العملية غير قابلة للإلغاء ولن يكون بالإمكان استعادة بياناتك</strong><br /><br />أدخل اسم المستخدم الخاص بك لتأكيد عملية الحذف", "delete_account_confirm": "هل أن متأكد أنك تريد حذف حسابك؟<br /><strong> هذه العملية غير قابلة للإلغاء ولن يكون بالإمكان استعادة بياناتك</strong><br /><br />أدخل اسم المستخدم الخاص بك لتأكيد عملية الحذف",
"delete_this_account_confirm": "Are you sure you want to delete this account? <br /><strong>This action is irreversible and you will not be able to recover any data</strong><br /><br />",
"fullname": "الاسم الكامل", "fullname": "الاسم الكامل",
"website": "الموقع الإلكتروني", "website": "الموقع الإلكتروني",
"location": "الموقع", "location": "الموقع",
@@ -19,26 +15,24 @@
"joined": "تاريخ التسجيل", "joined": "تاريخ التسجيل",
"lastonline": "تاريخ آخر دخول", "lastonline": "تاريخ آخر دخول",
"profile": "الملف الشخصي", "profile": "الملف الشخصي",
"profile_views": "عدد المشاهدات", "profile_views": "عدد مشاهدات الملف الشخصي",
"reputation": "السمعة", "reputation": "السمعة",
"favourites": "التفضيلات", "favourites": "المفضلات",
"watched": "متابع", "watched": "Watched",
"followers": "المتابعون", "followers": "المتابعون",
"following": "يتابع", "following": "يتابع",
"aboutme": "معلومة عنك او السيرة الذاتية",
"signature": "توقيع", "signature": "توقيع",
"gravatar": "Gravatar", "gravatar": "Gravatar",
"birthday": "عيد ميلاد", "birthday": "عيد ميلاد",
"chat": "محادثة", "chat": "محادثة",
"follow": "تابع", "follow": "تابع",
"unfollow": "إلغاء المتابعة", "unfollow": "إلغاء المتابعة",
"more": "المزيد",
"profile_update_success": "تم تحديث الملف الشخصي بنجاح", "profile_update_success": "تم تحديث الملف الشخصي بنجاح",
"change_picture": "تغيير الصورة", "change_picture": "تغيير الصورة",
"edit": "تعديل", "edit": "تعديل",
"uploaded_picture": "الصورة المرفوعة", "uploaded_picture": "الصورة المرفوعة",
"upload_new_picture": "رفع صورة جديدة", "upload_new_picture": "رفع صورة جديدة",
"upload_new_picture_from_url": "رفع صورة جديدة من رابط", "upload_new_picture_from_url": "رفع صورة جديدة بواسطة رابط",
"current_password": "كلمة السر الحالية", "current_password": "كلمة السر الحالية",
"change_password": "تغيير كلمة السر", "change_password": "تغيير كلمة السر",
"change_password_error": "كلمة سر غير صحيحة", "change_password_error": "كلمة سر غير صحيحة",
@@ -53,6 +47,7 @@
"upload_picture": "ارفع الصورة", "upload_picture": "ارفع الصورة",
"upload_a_picture": "رفع صورة", "upload_a_picture": "رفع صورة",
"image_spec": "لايمكنك رفع إلا الصور ذات الصيغ PNG أو JPG أو GIF.", "image_spec": "لايمكنك رفع إلا الصور ذات الصيغ PNG أو JPG أو GIF.",
"max": "الحد الأقصى",
"settings": "خيارات", "settings": "خيارات",
"show_email": "أظهر بريدي الإلكتروني", "show_email": "أظهر بريدي الإلكتروني",
"show_fullname": "أظهر اسمي الكامل", "show_fullname": "أظهر اسمي الكامل",
@@ -65,24 +60,21 @@
"digest_monthly": "شهريًّا", "digest_monthly": "شهريًّا",
"send_chat_notifications": "استلام رسالة إلكترونية عند ورود محادثة وأنا غير متصل.", "send_chat_notifications": "استلام رسالة إلكترونية عند ورود محادثة وأنا غير متصل.",
"send_post_notifications": "Send an email when replies are made to topics I am subscribed to", "send_post_notifications": "Send an email when replies are made to topics I am subscribed to",
"settings-require-reload": "تغيير بعض اﻹعدادات يتطلب تحديث الصفحة. إضغط هنا لتحديث الصفحة",
"has_no_follower": "هذا المستخدم ليس لديه أي متابع :(", "has_no_follower": "هذا المستخدم ليس لديه أي متابع :(",
"follows_no_one": "هذا المستخدم لا يتابع أحد :(", "follows_no_one": "هذا المستخدم لا يتابع أحد :(",
"has_no_posts": "This user hasn't posted anything yet.", "has_no_posts": "هذا المستخدم لم يكتب أي شيء بعد.",
"has_no_topics": "This user hasn't posted any topics yet.", "has_no_topics": "هذا المستخدم لم ينشئ أي موضوع بعد.",
"has_no_watched_topics": "This user hasn't watched any topics yet.", "has_no_watched_topics": "This user didn't watch any topics yet.",
"email_hidden": "البريد الإلكتروني مخفي", "email_hidden": "البريد الإلكتروني مخفي",
"hidden": "مخفي", "hidden": "مخفي",
"paginate_description": "Paginate topics and posts instead of using infinite scroll", "paginate_description": "عرض المواضيع والردود موزعة على صفحات عوض صفحة واحدة.",
"topics_per_page": "المواضيع في كل صفحة", "topics_per_page": "المواضيع في كل صفحة",
"posts_per_page": "الردود في كل صفحة", "posts_per_page": "الردود في كل صفحة",
"notification_sounds": "تشغيل صوت عند تلقي تنبيه", "notification_sounds": "تشغيل ملف صوتي عند استلام التنبيهات.",
"browsing": "خيارات التصفح", "browsing": "خيارات التصفح",
"open_links_in_new_tab": "فتح الروابط الخارجية في نافدة جديدة", "open_links_in_new_tab": "فتح الروابط الخارجية في تبويب جديد؟",
"enable_topic_searching": "تفعيل خاصية البحث داخل المواضيع", "enable_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", "topic_search_help": "في حالة تفعيلها، ستعوض خاصيةُ البحث داخل المواضيع خاصيةَ البحث الخاصة بالمتصفح، فتمكنك بالتالي بالبحث في الموضوع بأكمله دون الاقتصار على مايظهر في الشاشة فحسب.",
"follow_topics_you_reply_to": "متابعة المواضيع التي تقوم بالرد فيها", "follow_topics_you_reply_to": "متابعة المشاركات التي ترد عليها",
"follow_topics_you_create": "متابعة المواضيع التي تنشئها", "follow_topics_you_create": "متابعة المشاركات التي تكتبها"
"grouptitle": "حدد عنوان المجموعة الذي تريد عرضه",
"no-group-title": "لا يوجد عنوان للمجموعة"
} }

View File

@@ -1,21 +1,12 @@
{ {
"latest_users": "أحدث الأعضاء", "latest_users": "أحدث المستخدمين",
"top_posters": "اﻷكثر مشاركة", "top_posters": "أكثر المشتركين",
"most_reputation": "أعلى سمعة", "most_reputation": "أعلى سمعة",
"search": "بحث", "search": "بحث",
"enter_username": "أدخل اسم مستخدم للبحث", "enter_username": "أدخل اسم مستخدم للبحث",
"load_more": "حمل المزيد", "load_more": "حمل المزيد",
"users-found-search-took": "تم إيجاد %1 مستخدمـ(ين)! استغرق البحث %2 ثانية.", "users-found-search-took": "تم إيجاد %1 مستخدمـ(ين)! استغرق البحث %2 ميليثانية.",
"filter-by": "Filter By", "filter-by": "Filter By",
"online-only": "المتصلون فقط", "online-only": "Online only",
"picture-only": "صورة فقط", "picture-only": "Picture only"
"invite": "Invite",
"invitation-email-sent": "An invitation email has been sent to %1",
"user_list": "User List",
"recent_topics": "Recent Topics",
"popular_topics": "Popular Topics",
"unread_topics": "Unread Topics",
"categories": "Categories",
"tags": "Tags",
"map": "Map"
} }

View File

@@ -1,12 +0,0 @@
{
"new_topic_button": "Нова тема",
"guest-login-post": "Влезте, за да можете да публикувате",
"no_topics": "<strong>Все още няма теми в тази категория.</strong><br />Защо не създадеш една?",
"browsing": "Разглежда",
"no_replies": "Все още никой не е отговорил",
"share_this_category": "Споделяне на тази категория",
"watch": "Следене",
"ignore": "Игнориране",
"watch.message": "Вече следите обновленията в тази категория",
"ignore.message": "Вече не следите обновленията в тази категория"
}

View File

@@ -1,32 +0,0 @@
{
"password-reset-requested": "Изпратена е заявка за подновяване на паролата %1!",
"welcome-to": "Добре дошли в %1",
"invite": "Покана от %1",
"greeting_no_name": "Здравейте",
"greeting_with_name": "Здравейте, %1",
"welcome.text1": "Благодарим Ви, че се регистрирахте с %1",
"welcome.text2": "За да активирате напълно Вашия акаунт, трябва да потвърдите е-пощата, с която сте се регистрирали.",
"welcome.text3": "Вашата заявка за регистрация беше приета от администратор. Вече можете да се впишете с Вашето потребителско име и парола.",
"welcome.cta": "Натиснете тук, за да потвърдите Вашата е-поща.",
"invitation.text1": "%1 Ви покани да се присъедините към %2",
"invitation.ctr": "Натиснете тук, за да си създадете акаунт.",
"reset.text1": "Получихме заявка за подновяване на Вашата парола, най-вероятно защото сте я забравили. Ако това не е така, моля не обръщайте внимание на това е-писмо.",
"reset.text2": "За да продължите с процедурата по подновяване на паролата, моля последвайте следната връзка:",
"reset.cta": "Натиснете тук, за да подновите паролата си",
"reset.notify.subject": "Паролата беше променена успешно",
"reset.notify.text1": "Известяваме Ви, че на %1, Вашата парола беше променена успешно.",
"reset.notify.text2": "Ако не сте поискали това, моля, свържете се незабавно с администратор.",
"digest.notifications": "Имате непрочетени известия от %1:",
"digest.latest_topics": "Последни теми от %1",
"digest.cta": "Натиснете тук, за да посетите %1",
"digest.unsub.info": "Това резюме беше изпратено до Вас поради настройките Ви за абонаментите.",
"digest.no_topics": "Не е имало дейност по темите в последните %1",
"notif.chat.subject": "Получено е ново чат съобщение от %1",
"notif.chat.cta": "Натиснете тук, за да продължите разговора",
"notif.chat.unsub.info": "Това известие за чата беше изпратено до Вас поради настройките Ви за абонаментите.",
"notif.post.cta": "Натиснете тук, за да прочетете цялата тема",
"notif.post.unsub.info": "Това известие за публикация беше изпратено до Вас поради настройките Ви за абонаментите.",
"test.text1": "Това е пробно е-писмо, за да потвърдим, че изпращачът на е-поща е правилно настроен за Вашия NodeBB.",
"unsub.cta": "Натиснете тук, за да промените тези настройки",
"closing": "Благодарим Ви!"
}

View File

@@ -1,88 +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": "Няма да можете да пишете в чата, докато е-пощата Ви не бъде потвърдена. Моля, натиснете тук, за да потвърдите е-пощата си.",
"no-email-to-confirm": "Този форум изисква потвърдена е-поща. Моля, натиснете тук, за да въведете е-поща",
"email-confirm-failed": "Не успяхме да потвърдим е-пощата Ви. Моля, опитайте отново по-късно.",
"confirm-email-already-sent": "Е-писмото за потвърждение вече е изпратено. Моля, почакайте още %1 минута/и, преди да изпратите ново.",
"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": "Темата е заключена",
"post-edit-duration-expired": "Можете да редактирате публикациите си до %1 секунда/и, след като ги пуснете",
"still-uploading": "Моля, изчакайте качването да приключи.",
"content-too-short": "Моля, въведете по-дълъг текст на публикацията. Публикациите трябва да съдържат поне %1 символ(а).",
"content-too-long": "Моля, въведете по-кратък текст на публикацията. Публикациите трябва да съдържат не повече от %1 символ(а).",
"title-too-short": "Моля, въведете по-дълго заглавие. Заглавията трябва да съдържат поне %1 символ(а).",
"title-too-long": "Моля, въведете по-кратко заглавие. Заглавията трябва да съдържат не повече от %1 символ(а).",
"too-many-posts": "Можете да публикувате веднъж на %1 секунда/и моля, изчакайте малко, преди да опитате да публикувате отново",
"too-many-posts-newbie": "Като нов потребител, Вие можете да публикувате веднъж на %1 секунда/и, докато не натрупате %2 репутация моля, изчакайте малко, преди да опитате да публикувате отново",
"tag-too-short": "Моля, въведете по-дълъг етикет. Етикетите трябва да съдържат поне %1 символ(а)",
"tag-too-long": "Моля, въведете по-кратък етикет. Етикетите трябва да съдържат не повече от %1 символ(а)",
"file-too-big": "Максималният разрешен размер на файл е %1 КБ моля, качете по-малък файл",
"cant-vote-self-post": "Не можете да гласувате за собствената си публикация",
"already-favourited": "Вече сте отбелязали тази публикация като любима",
"already-unfavourited": "Вече сте премахнали тази публикация от любимите си",
"cant-ban-other-admins": "Не можете да блокирате другите администратори!",
"cant-remove-last-admin": "Вие сте единственият администратор. Добавете друг потребител като администратор, преди да премахнете себе си като администратор",
"invalid-image-type": "Грешен тип на изображение. Позволените типове са: %1",
"invalid-image-extension": "Грешно разширение на изображението",
"invalid-file-type": "Грешен тип на файл. Позволените типове са: %1",
"group-name-too-short": "Името на групата е твърде кратко",
"group-already-exists": "Вече съществува такава група",
"group-name-change-not-allowed": "Промяната на името на групата не е разрешено",
"group-already-member": "Вече сте част от тази група",
"group-needs-owner": "Тази група се нуждае от поне един собственик",
"group-already-invited": "Този потребител вече е бил поканен",
"group-already-requested": "Вашата заявка за членство вече е била изпратена",
"post-already-deleted": "Тази публикация вече е изтрита",
"post-already-restored": "Тази публикация вече е възстановена",
"topic-already-deleted": "Тази тема вече е изтрита",
"topic-already-restored": "Тази тема вече е възстановена",
"cant-purge-main-post": "Не можете да изчистите първоначалната публикация. Моля, вместо това изтрийте темата.",
"topic-thumbnails-are-disabled": "Иконките на темите са изключени.",
"invalid-file": "Грешен файл",
"uploads-are-disabled": "Качването не е разрешено",
"signature-too-long": "Съжаляваме, но подписът Ви трябва да съдържа не повече от %1 символ(а).",
"about-me-too-long": "Съжаляваме, но информацията за Вас трябва да съдържа не повече от %1 символ(а).",
"cant-chat-with-yourself": "Не можете да пишете чат съобщение на себе си!",
"chat-restricted": "Този потребител е ограничил чат съобщенията до себе си. Той трябва първо да Ви последва, преди да можете да си пишете с него.",
"too-many-messages": "Изпратили сте твърде много съобщения. Моля, изчакайте малко.",
"reputation-system-disabled": "Системата за репутация е изключена.",
"downvoting-disabled": "Отрицателното гласуване е изключено",
"not-enough-reputation-to-downvote": "Нямате достатъчно репутация, за да гласувате отрицателно за тази публикация",
"not-enough-reputation-to-flag": "Нямате достатъчно репутация, за да докладвате тази публикация",
"already-flagged": "Вече сте докладвали тази публикация",
"reload-failed": "NodeBB срещна проблем при презареждането: „%1“. NodeBB ще продължи да поддържа съществуващите клиентски ресурси, но Вие трябва да отмените последните си действия преди презареждането.",
"registration-error": "Грешка при регистрацията",
"parse-error": "Нещо се обърка при прочитането на отговора на сървъра",
"wrong-login-type-email": "Моля, използвайте е-пощата си, за да влезете",
"wrong-login-type-username": "Моля, използвайте потребителското си име, за да влезете"
}

View File

@@ -1,82 +0,0 @@
{
"home": "Начало",
"search": "Търсене",
"buttons.close": "Затваряне",
"403.title": "Достъпът е отказан",
"403.message": "Изглежда сте посетили страница, до която нямате достъп.",
"403.login": "Може би трябва да <a href='%1/login'>опитате да влезете</a>?",
"404.title": "Не е открита",
"404.message": "Изглежда сте се опитали да посетите страница, която не съществува. Върнете се към <a href='%1/'>началната страница</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": "Групи",
"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": "още",
"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": "Е-поща",
"language": "Език",
"guest": "Гост",
"guests": "Гости",
"updated.title": "Форумът е актуализиран",
"updated.message": "Този форум току-що беше актуализиран до най-новата версия. Натиснете тук, за да опресните страницата.",
"privacy": "Поверителност",
"follow": "Следване",
"unfollow": "Прекратяване на следването",
"delete_all": "Изтриване на всичко"
}

View File

@@ -1,43 +0,0 @@
{
"groups": "Групи",
"view_group": "Преглед на групата",
"owner": "Собственик на групата",
"new_group": "Създаване на нова група",
"no_groups_found": "Няма групи",
"pending.accept": "Приемане",
"pending.reject": "Отхвърляне",
"pending.accept_all": "Приемане на всички",
"pending.reject_all": "Отхвърляне на всички",
"pending.none": "В момента няма чакащи членове",
"invited.none": "В момента няма поканени членове",
"invited.uninvite": "Отмяна на поканата",
"invited.search": "Потърсете потребител, когото да поканите в тази група",
"cover-instructions": "Плъзнете снимка, наместете я в предпочитаната позиция и натистнете <strong>Запазване</strong>",
"cover-change": "Промяна",
"cover-save": "Запазване",
"cover-saving": "Запазване",
"details.title": "Подробности за групата",
"details.members": "Списък на членовете",
"details.pending": "Кандидатстващи членове",
"details.invited": "Поканени членове",
"details.has_no_posts": "Членовете на тази група не са публикували нищо.",
"details.latest_posts": "Скорошни публикации",
"details.private": "Частна",
"details.grant": "Даване/отнемане на собственост",
"details.kick": "Изгонване",
"details.owner_options": "Администрация на групата",
"details.group_name": "Име на групата",
"details.member_count": "Брой на членовете",
"details.creation_date": "Дата на създаване",
"details.description": "Описание",
"details.badge_preview": "Преглед на емблемата",
"details.change_icon": "Промяна на иконката",
"details.change_colour": "Промяна на цвета",
"details.badge_text": "Текст на емблемата",
"details.userTitleEnabled": "Показване на емблемата",
"details.private_help": "Ако е включено, присъединяването към група изисква одобрението на собственика ѝ",
"details.hidden": "Скрита",
"details.hidden_help": "Ако е включено, тази група няма да бъде извеждана в списъка от групи и потребителите ще трябва да бъдат поканени лично",
"event.updated": "Подробностите за групата бяха обновени",
"event.deleted": "Групата „%1“ беше изтрита"
}

View File

@@ -1,5 +0,0 @@
{
"name": "Български",
"code": "bg",
"dir": "ltr"
}

View File

@@ -1,11 +0,0 @@
{
"username-email": "Потребителско име / е-поща",
"username": "Потребителско име",
"email": "Е-поща",
"remember_me": "Запомнете ме?",
"forgot_password": "Забравена парола?",
"alternative_logins": "Други начини за влизане",
"failed_login_attempt": "Неуспешно влизане. Моля, опитайте отново.",
"login_successful": "Вие влязохте успешно!",
"dont_have_account": "Нямате акаунт?"
}

View File

@@ -1,26 +0,0 @@
{
"chat.chatting_with": "Чат с <span id=\"chat-with-name\"></span>",
"chat.placeholder": "Въведете чат съобщението тук и натиснете Ентер за изпращане",
"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.compose": "Писане",
"composer.show_preview": "Показване на прегледа",
"composer.hide_preview": "Скриване на прегледа",
"composer.user_said_in": "%1 каза в %2:",
"composer.user_said": "%1 каза:",
"composer.discard": "Сигурни ли сте, че искате да отхвърлите тази публикация?",
"composer.submit_and_lock": "Публикуване и заключване",
"composer.toggle_dropdown": "Превключване на падащото меню"
}

View File

@@ -1,28 +0,0 @@
{
"title": "Известия",
"no_notifs": "Нямате нови известия",
"see_all": "Вижте всички известия",
"mark_all_read": "Отбелязване на всички известия като прочетени",
"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> отбеляза Ваша публикация в <strong>%2</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> публикува нова тема: <strong>%2</strong>",
"user_mentioned_you_in": "<strong>%1</strong> Ви спомена в <strong>%2</strong>",
"user_started_following_you": "<strong>%1</strong> започна да Ви следва.",
"new_register": "<strong>%1</strong> изпрати заявка за регистрация.",
"email-confirmed": "Е-пощата беше потвърдена",
"email-confirmed-message": "Благодарим Ви, че потвърдихте е-пощата си. Акаунтът Ви е вече напълно активиран.",
"email-confirm-error-message": "Възникна проблем при потвърждаването на е-пощата Ви. Може кодът да е грешен или давността му да е изтекла.",
"email-confirm-sent": "Изпратено е е-писмо за потвърждение."
}

View File

@@ -1,21 +0,0 @@
{
"home": "Начало",
"unread": "Непрочетени теми",
"popular": "Популярни теми",
"recent": "Скорошни теми",
"users": "Регистрирани потребители",
"notifications": "Известия",
"tags": "Етикети",
"tag": "Теми, отбелязани като „%1“",
"user.edit": "Редактиране на „%1“",
"user.following": "Хора, които %1 следва",
"user.followers": "Хора, които следват %1",
"user.posts": "Публикации от %1",
"user.topics": "Теми, създадени от %1",
"user.groups": "Групите на %1",
"user.favourites": "Любимите публикации на %1",
"user.settings": "Настройки на потребителя",
"user.watched": "Теми, следени от %1",
"maintenance.text": "%1 в момента е в профилактика. Моля, върнете се по-късно.",
"maintenance.messageIntro": "В допълнение, администраторът е оставил това съобщение:"
}

View File

@@ -1,19 +0,0 @@
{
"title": "Скорошни",
"day": "Ден",
"week": "Седмица",
"month": "Месец",
"year": "Година",
"alltime": "Цялото време",
"no_recent_topics": "Няма скорошни теми.",
"no_popular_topics": "Няма популярни теми.",
"there-is-a-new-topic": "Има нова тема.",
"there-is-a-new-topic-and-a-new-post": "Има нова тема и нова публикация.",
"there-is-a-new-topic-and-new-posts": "Има нова тема и %1 нови публикации.",
"there-are-new-topics": "Има %1 нови теми.",
"there-are-new-topics-and-a-new-post": "Има %1 нови теми и нова публикация.",
"there-are-new-topics-and-new-posts": "Има %1 нови теми и %2 нови публикации.",
"there-is-a-new-post": "Има нова публикация",
"there-are-new-posts": "Има %1 нови публикации.",
"click-here-to-reload": "Натиснете тук, за да презаредите."
}

View File

@@ -1,19 +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": "Съгласен съм с условията за ползване",
"registration-added-to-queue": "Вашата регистрация беше добавена в опашката за одобрение. Ще получите е-писмо, когато тя бъде одобрена от администратор."
}

View File

@@ -1,17 +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": "Моля, въведете Вашата <strong>е-поща</strong> и ние ще Ви изпратим е-писмо с инструкции за това как да достъпите акаунта си.",
"enter_email_address": "Въведете адрес на е-поща",
"password_reset_sent": "Информацията за подновяване на паролата беше изпратена",
"invalid_email": "Грешна е-поща / е-пощата не съществува!",
"password_too_short": "Паролата е твърде кратка. Моля, изберете друга парола.",
"passwords_do_not_match": "Двете пароли, които въведохте, са различни.",
"password_expired": "Паролата Ви е с изтекла давност. Моля, изберете нова парола"
}

View File

@@ -1,40 +0,0 @@
{
"results_matching": "%1 резултат(а), отговарящи на „%2“, (%3 секунди)",
"no-matches": "Няма съвпадения",
"advanced-search": "Разширено търсене",
"in": "В",
"titles": "Заглавия",
"titles-posts": "Заглавия и публикации",
"posted-by": "Публикувано от",
"in-categories": "В категории",
"search-child-categories": "Претърсване на подкатегориите",
"reply-count": "Брой на отговорите",
"at-least": "Поне",
"at-most": "Най-много",
"post-time": "Време на публикуване",
"newer-than": "По-нови от",
"older-than": "По-стари от",
"any-date": "Която и да е дата",
"yesterday": "Вчера",
"one-week": "Една седмица",
"two-weeks": "Две седмици",
"one-month": "Един месец",
"three-months": "Три месеца",
"six-months": "Шест месеца",
"one-year": "Една година",
"sort-by": "Подреждане по",
"last-reply-time": "Време на последния отговор",
"topic-title": "Заглавие на темата",
"number-of-replies": "Брой на отговорите",
"number-of-views": "Брой на преглежданията",
"topic-start-date": "Начална дата на темата",
"username": "Потребителско име",
"category": "Категория",
"descending": "В низходящ ред",
"ascending": "Във възходящ ред",
"save-preferences": "Запазване на предпочитанията",
"clear-preferences": "Изчистване на предпочитанията",
"search-preferences-saved": "Предпочитанията за търсене бяха запазени",
"search-preferences-cleared": "Предпочитанията за търсене бяха изчистени",
"show-results-as": "Показване на резултатите като"
}

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": "Въведете етикетите тук, всеки може да е с дължина между %1 и %2 символа.",
"enter_tags_here_short": "Въведете етикети...",
"no_tags": "Все още няма етикети."
}

View File

@@ -1,100 +0,0 @@
{
"topic": "Тема",
"topic_id": "Идентификатора на темата",
"topic_id_placeholder": "Въведете идентификатор на темата",
"no_topics_found": "Няма открити теми!",
"no_posts_found": "Няма открити публикации!",
"post_is_deleted": "Тази публикация е изтрита!",
"topic_is_deleted": "Тази тема е изтрита!",
"profile": "Профил",
"posted_by": "Публикувано от %1",
"posted_by_guest": "Публикувано от гост",
"chat": "Чат",
"notify_me": "Получавайте известия за новите отговори в тази тема",
"quote": "Цитат",
"reply": "Отговор",
"guest-login-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": "Име",
"composer.discard": "Отхвърляне",
"composer.submit": "Публикуване",
"composer.replying_to": "Отговор на %1",
"composer.new_topic": "Нова тема",
"composer.uploading": "качване...",
"composer.thumb_url_label": "Поставете адреса на иконка за темата",
"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 потребител(и) и %2 гост(и)",
"more_users": "Още %1 потребител(и)",
"more_guests": "Още %1 гост(и)",
"users_and_others": "%1 и %2 други",
"sort_by": "Подреждане по",
"oldest_to_newest": "Първо най-старите",
"newest_to_oldest": "Първо най-новите",
"most_votes": "Най-много гласове",
"most_posts": "Най-много публикации"
}

View File

@@ -1,10 +0,0 @@
{
"title": "Непрочетени",
"no_unread_topics": "Няма непрочетени теми.",
"load_more": "Зареждане на още",
"mark_as_read": "Отбелязване като прочетени",
"selected": "Избраните",
"all": "Всички",
"all_categories": "Всички категории",
"topics_marked_as_read.success": "Темите бяха отбелязани като прочетени!"
}

View File

@@ -1,88 +0,0 @@
{
"banned": "Блокиран",
"offline": "Извън линия",
"username": "Потребителско име",
"joindate": "Дата на присъединяване",
"postcount": "Брой публикации",
"email": "Е-поща",
"confirm_email": "Потвърдете е-пощата",
"ban_account": "Блокиране на акаунта",
"ban_account_confirm": "Наистина ли искате да блокирате този потребител?",
"unban_account": "Отблокиране на акаунта",
"delete_account": "Изтриване на акаунта",
"delete_account_confirm": "Сигурни ли сте, че искате да изтриете акаунта си? <br /><strong>Това действие е необратимо и няма да можете да възстановите нищо от данните си</strong><br /><br />Въведете потребителското си име, за да потвърдите, че искате да унищожите този акаунт.",
"delete_this_account_confirm": "Сигурни ли сте, че искате да изтриете този акаунт? <br /><strong>Това действие е необратимо и няма да можете да възстановите нищо от данните</strong><br /><br />",
"fullname": "Цяло име",
"website": "Уеб сайт",
"location": "Местоположение",
"age": "Възраст",
"joined": "Присъединил се",
"lastonline": "Последно на линия",
"profile": "Профил",
"profile_views": "Преглеждания на профила",
"reputation": "Репутация",
"favourites": "Любими",
"watched": "Наблюдавани",
"followers": "Последователи",
"following": "Следва",
"aboutme": "За мен",
"signature": "Подпис",
"gravatar": "Граватар",
"birthday": "Рождена дата",
"chat": "Чат",
"follow": "Следване",
"unfollow": "Спиране на следването",
"more": "Още",
"profile_update_success": "Профилът беше обновен успешно!",
"change_picture": "Промяна на снимката",
"edit": "Редактиране",
"uploaded_picture": "Качена снимка",
"upload_new_picture": "Качване на нова снимка",
"upload_new_picture_from_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 файлове",
"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": "Изпращане на е-писмо, когато се появи отговор в темите, за които съм абониран/а.",
"settings-require-reload": "Някои промени в настройките изискват презареждане. Натиснете тук, за да презаредите страницата.",
"has_no_follower": "Този потребител няма последователи :(",
"follows_no_one": "Този потребител не следва никого :(",
"has_no_posts": "Този потребител не е публикувал нищо досега.",
"has_no_topics": "Този потребител не е създавал теми досега.",
"has_no_watched_topics": "Този потребител не е следил нито една тема досега.",
"email_hidden": "Е-пощата е скрита",
"hidden": "скрито",
"paginate_description": "Разделяне на темите и публикациите на страници, вместо да се превърта безкрайно",
"topics_per_page": "Теми на страница",
"posts_per_page": "Публикации на страница",
"notification_sounds": "Изпълняване на звук, когато получите известие",
"browsing": "Настройки за страниците",
"open_links_in_new_tab": "Отваряне на външните връзки в нов подпрозорец",
"enable_topic_searching": "Включване на търсенето в темите",
"topic_search_help": "Ако е включено, търсенето в темата ще замени стандартното поведение на браузъра при търсене в страницата и ще Ви позволи да претърсвате цялата тема, а не само това, което се вижда на екрана",
"follow_topics_you_reply_to": "Следване на темите, на които отговаряте",
"follow_topics_you_create": "Следване на темите, които създавате",
"grouptitle": "Изберете заглавието на групата, което искате да се показва",
"no-group-title": "Няма заглавие на група"
}

View File

@@ -1,21 +0,0 @@
{
"latest_users": "Последни потребители",
"top_posters": "С най-много публикации",
"most_reputation": "С най-много репутация",
"search": "Търсене",
"enter_username": "Въведете потребителско име, което да потърсите",
"load_more": "Зареждане на още",
"users-found-search-took": "Намерени са %1 потребител(и)! Търсенето отне %2 секунди.",
"filter-by": "Филтриране",
"online-only": "Само тези на линия",
"picture-only": "Само със снимка",
"invite": "Канене",
"invitation-email-sent": "Беше изпратено е-писмо за потвърждение до %1",
"user_list": "Списък от потребители",
"recent_topics": "Скорошни теми",
"popular_topics": "Популярни теми",
"unread_topics": "Непрочетени теми",
"categories": "Категории",
"tags": "Етикети",
"map": "Карта"
}

View File

@@ -1,12 +1,8 @@
{ {
"new_topic_button": "নতুন টপিক", "new_topic_button": "নতুন টপিক",
"guest-login-post": "Log in to post",
"no_topics": "<strong>এই বিভাগে কোন টপিক নেই! </strong><br /> আপনি চাইলে একটি পোষ্ট করতে পারেন।", "no_topics": "<strong>এই বিভাগে কোন টপিক নেই! </strong><br /> আপনি চাইলে একটি পোষ্ট করতে পারেন।",
"browsing": "ব্রাউজিং", "browsing": "ব্রাউজিং",
"no_replies": "কোন রিপ্লাই নেই", "no_replies": "কোন রিপ্লাই নেই",
"share_this_category": "এই বিভাগটি অন্যের সাথে ভাগাভাগি করুন", "share_this_category": "এই বিভাগটি অন্যের সাথে ভাগাভাগি করুন",
"watch": "Watch", "ignore": "উপেক্ষা করুন"
"ignore": "উপেক্ষা করুন",
"watch.message": "You are now watching updates from this category",
"ignore.message": "You are now ignoring updates from this category"
} }

View File

@@ -1,21 +1,14 @@
{ {
"password-reset-requested": "পাসওয়ার্ড রিসেটের জন্য অনুরোধ করা হয়েছে - %1!", "password-reset-requested": "পাসওয়ার্ড রিসেটের জন্য অনুরোধ করা হয়েছে - %1!",
"welcome-to": "%1 এ স্বাগতম", "welcome-to": "%1 এ স্বাগতম",
"invite": "Invitation from %1",
"greeting_no_name": "স্বাগতম", "greeting_no_name": "স্বাগতম",
"greeting_with_name": "স্বাগতম %1", "greeting_with_name": "স্বাগতম %1",
"welcome.text1": "%1 এ নিবন্ধন করার জন্য আপনাকে ধন্যবাদ!", "welcome.text1": "%1 এ নিবন্ধন করার জন্য আপনাকে ধন্যবাদ!",
"welcome.text2": "আপনার একাউন্ট এ্যাক্টিভেট করার জন্য, আপনি যে ইমেইল এড্রেস ব্যাবহার করে নিবন্ধন করেছেন তা যাচাই করতে হবে", "welcome.text2": "আপনার একাউন্ট এ্যাক্টিভেট করার জন্য, আপনি যে ইমেইল এড্রেস ব্যাবহার করে নিবন্ধন করেছেন তা যাচাই করতে হবে",
"welcome.text3": "An administrator has accepted your registration application. You can login with your username/password now.",
"welcome.cta": "আপনার ইমেইল এড্রেস নিশ্চিত করার জন্য এখানে ক্লিক করুন", "welcome.cta": "আপনার ইমেইল এড্রেস নিশ্চিত করার জন্য এখানে ক্লিক করুন",
"invitation.text1": "%1 has invited you to join %2",
"invitation.ctr": "Click here to create your account.",
"reset.text1": "আমরা আপনার পাসওয়ার্ড রিসেট করার অনুরোধ পেয়েছি, সম্ভবত আপনি আপনার পাসওয়ার্ড ভুলে গিয়েছেন বলেই। তবে যদি তা না হয়ে থাকে, তাহলে এই মেইলকে উপেক্ষা করতে পারেন।", "reset.text1": "আমরা আপনার পাসওয়ার্ড রিসেট করার অনুরোধ পেয়েছি, সম্ভবত আপনি আপনার পাসওয়ার্ড ভুলে গিয়েছেন বলেই। তবে যদি তা না হয়ে থাকে, তাহলে এই মেইলকে উপেক্ষা করতে পারেন।",
"reset.text2": "পাসওয়ার্ড রিসেট করতে নিচের লিংকে ক্লিক করুন", "reset.text2": "পাসওয়ার্ড রিসেট করতে নিচের লিংকে ক্লিক করুন",
"reset.cta": "পাসওয়ার্ড রিসেট করতে এখানে ক্লিক করুন", "reset.cta": "পাসওয়ার্ড রিসেট করতে এখানে ক্লিক করুন",
"reset.notify.subject": "Password successfully changed",
"reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.",
"reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.",
"digest.notifications": "%1 থেকে আনরিড নোটিফিকেশন আছে।", "digest.notifications": "%1 থেকে আনরিড নোটিফিকেশন আছে।",
"digest.latest_topics": "%1 এর সর্বশেষ টপিকসমূহ", "digest.latest_topics": "%1 এর সর্বশেষ টপিকসমূহ",
"digest.cta": "%1 ভিজিট করতে এখানে ক্লিক করুন", "digest.cta": "%1 ভিজিট করতে এখানে ক্লিক করুন",

View File

@@ -2,7 +2,7 @@
"invalid-data": "ভুল তথ্য", "invalid-data": "ভুল তথ্য",
"not-logged-in": "আপনি লগিন করেননি", "not-logged-in": "আপনি লগিন করেননি",
"account-locked": "আপনার অ্যাকাউন্ট সাময়িকভাবে লক করা হয়েছে", "account-locked": "আপনার অ্যাকাউন্ট সাময়িকভাবে লক করা হয়েছে",
"search-requires-login": "Searching requires an account - please login or register.", "search-requires-login": "অনুসন্ধান করার জন্য একটি অ্যাকাউন্ট প্রয়োজন! অনুগ্রহপূর্বক প্রবেশ করুন অথবা নিবন্ধন করুন!",
"invalid-cid": "ভুল বিভাগ নাম্বার", "invalid-cid": "ভুল বিভাগ নাম্বার",
"invalid-tid": "ভুল টপিক নাম্বার", "invalid-tid": "ভুল টপিক নাম্বার",
"invalid-pid": "ভুল পোস্ট নাম্বার", "invalid-pid": "ভুল পোস্ট নাম্বার",
@@ -18,14 +18,11 @@
"username-taken": "ইউজারনেম আগেই ব্যবহৃত", "username-taken": "ইউজারনেম আগেই ব্যবহৃত",
"email-taken": "ইমেইল আগেই ব্যবহৃত", "email-taken": "ইমেইল আগেই ব্যবহৃত",
"email-not-confirmed": "আপনার ইমেইল এড্রেস নিশ্চিত করা হয় নি, নিশ্চিত করতে এখানে ক্লিক করুন।", "email-not-confirmed": "আপনার ইমেইল এড্রেস নিশ্চিত করা হয় নি, নিশ্চিত করতে এখানে ক্লিক করুন।",
"email-not-confirmed-chat": "You are unable to chat until your email is confirmed, please click here to confirm your email.", "email-not-confirmed-chat": "You are unable to chat until your email is confirmed",
"no-email-to-confirm": "This forum requires email confirmation, please click here to enter an email",
"email-confirm-failed": "We could not confirm your email, please try again later.",
"confirm-email-already-sent": "Confirmation email already sent, please wait %1 minute(s) to send another one.",
"username-too-short": "খুব ছোট ইউজারনেম", "username-too-short": "খুব ছোট ইউজারনেম",
"username-too-long": "ইউজারনেম বড় হয়ে গিয়েছে", "username-too-long": "ইউজারনেম বড় হয়ে গিয়েছে",
"user-banned": "ব্যবহারকারী নিষিদ্ধ", "user-banned": "ব্যবহারকারী নিষিদ্ধ",
"user-too-new": "Sorry, you are required to wait %1 second(s) before making your first post", "user-too-new": "দুঃখিত! প্রথম পোষ্ট করার জন্য আপনাকে %1 সেকেন্ড অপেক্ষা করতে হবে।",
"no-category": "বিভাগটি খুজে পাওয়া যায় নি", "no-category": "বিভাগটি খুজে পাওয়া যায় নি",
"no-topic": "এই টপিক নেই", "no-topic": "এই টপিক নেই",
"no-post": "এই পোষ্ট নেই", "no-post": "এই পোষ্ট নেই",
@@ -36,42 +33,33 @@
"no-emailers-configured": "কোন ইমেল প্লাগইন লোড করা নেই, কাজেই টেস্ট মেইল পাঠানো সম্ভব হচ্ছে না", "no-emailers-configured": "কোন ইমেল প্লাগইন লোড করা নেই, কাজেই টেস্ট মেইল পাঠানো সম্ভব হচ্ছে না",
"category-disabled": "বিভাগটি নিষ্ক্রিয়", "category-disabled": "বিভাগটি নিষ্ক্রিয়",
"topic-locked": "টপিক বন্ধ", "topic-locked": "টপিক বন্ধ",
"post-edit-duration-expired": "You are only allowed to edit posts for %1 second(s) after posting",
"still-uploading": "আপলোড সম্পূর্ণ জন্য অনুগ্রহ করে অপেক্ষা করুন", "still-uploading": "আপলোড সম্পূর্ণ জন্য অনুগ্রহ করে অপেক্ষা করুন",
"content-too-short": "Please enter a longer post. Posts should contain at least %1 character(s).", "content-too-short": "অনুগ্রহকরে অপেক্ষকৃত বড় পোষ্ট করুন। একটি পোষ্টে নূন্যতম %1 অক্ষর থাকতে হবে।",
"content-too-long": "Please enter a shorter post. Posts can't be longer than %1 character(s).", "title-too-short": "অনুগ্রহপূর্বক বড় শিরোনাম ব্যাবহার করুন। শিরোনামের জন্য নূন্যতম %1 অক্ষর ব্যাবহার করতে হবে।",
"title-too-short": "Please enter a longer title. Titles should contain at least %1 character(s).", "title-too-long": "অনুগ্রহ করে সংক্ষিপ্ত শিরোনাম লিখুন। শিরোনাম %1 অক্ষরের বেশি হতে পারবে না।",
"title-too-long": "Please enter a shorter title. Titles can't be longer than %1 character(s).", "too-many-posts": "আপনি প্রতি %1 সেকেন্ডে একবার পোষ্ট করতে পারবেন। পরবর্তী পোষ্ট করার জন্য অপেক্ষা করুন। ",
"too-many-posts": "You can only post once every %1 second(s) - please wait before posting again", "too-many-posts-newbie": "নতুন সদস্য হিসাবে %2 সন্মানণা পাওয়া পর্যন্ত আপনি প্রতি %1 সেকেন্ডে একবার পোষ্ট করতে পারবেন। পরবর্তী পোষ্ট করার জন্য অপেক্ষা করুন। ",
"too-many-posts-newbie": "As a new user, you can only post once every %1 second(s) until you have earned %2 reputation - please wait before posting again", "file-too-big": "সর্বোচ্চ গৃহীত ফাইলসাইজ হচ্ছে %1 kb - অনুগ্রহপূর্বক ছোট ফাইল আপলোড করুন",
"tag-too-short": "Please enter a longer tag. Tags should contain at least %1 character(s)",
"tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 character(s)",
"file-too-big": "Maximum allowed file size is %1 kB - please upload a smaller file",
"cant-vote-self-post": "আপনি নিজের পোস্টে ভোট দিতে পারবেন না।", "cant-vote-self-post": "আপনি নিজের পোস্টে ভোট দিতে পারবেন না।",
"already-favourited": "আপনি ইতিমধ্যে এই পোষ্টটি পছন্দের তালিকায় যোগ করেছেন", "already-favourited": "আপনি ইতিমধ্যে এই পোষ্টটি পছন্দের তালিকায় যোগ করেছেন",
"already-unfavourited": "আপনি ইতিমধ্যে এই পোষ্টটি আপনার পছন্দের তালিকা থেকে সরিয়ে ফেলেছেন", "already-unfavourited": "আপনি ইতিমধ্যে এই পোষ্টটি আপনার পছন্দের তালিকা থেকে সরিয়ে ফেলেছেন",
"cant-ban-other-admins": "আপনি অন্য এ্যাডমিনদের নিষিদ্ধ করতে পারেন না!", "cant-ban-other-admins": "আপনি অন্য এ্যাডমিনদের নিষিদ্ধ করতে পারেন না!",
"cant-remove-last-admin": "You are the only administrator. Add another user as an administrator before removing yourself as admin",
"invalid-image-type": "Invalid image type. Allowed types are: %1", "invalid-image-type": "Invalid image type. Allowed types are: %1",
"invalid-image-extension": "Invalid image extension", "invalid-image-extension": "Invalid image extension",
"invalid-file-type": "Invalid file type. Allowed types are: %1",
"group-name-too-short": "গ্রুপের নাম খুব ছোট", "group-name-too-short": "গ্রুপের নাম খুব ছোট",
"group-already-exists": "গ্রুপ ইতিমধ্যেই বিদ্যমান", "group-already-exists": "গ্রুপ ইতিমধ্যেই বিদ্যমান",
"group-name-change-not-allowed": "গ্রুপের নাম পরিবর্তনের অনুমতি নেই", "group-name-change-not-allowed": "গ্রুপের নাম পরিবর্তনের অনুমতি নেই",
"group-already-member": "You are already part of this group", "group-already-member": "You are already part of this group",
"group-needs-owner": "This group requires at least one owner", "group-needs-owner": "This group requires at least one owner",
"group-already-invited": "This user has already been invited",
"group-already-requested": "Your membership request has already been submitted",
"post-already-deleted": "এই পোস্টটি ইতিমধ্যে ডিলিট করা হয়ে গিয়েছে", "post-already-deleted": "এই পোস্টটি ইতিমধ্যে ডিলিট করা হয়ে গিয়েছে",
"post-already-restored": "এই পোষ্টটি ইতিমধ্যে পুনরোদ্ধার করা হয়েছে", "post-already-restored": "এই পোষ্টটি ইতিমধ্যে পুনরোদ্ধার করা হয়েছে",
"topic-already-deleted": "এই টপিকটি ইতিমধ্যে ডিলিট করা হয়েছে", "topic-already-deleted": "এই টপিকটি ইতিমধ্যে ডিলিট করা হয়েছে",
"topic-already-restored": "এই টপিকটি ইতিমধ্যে পুনরোদ্ধার করা হয়েছে", "topic-already-restored": "এই টপিকটি ইতিমধ্যে পুনরোদ্ধার করা হয়েছে",
"cant-purge-main-post": "You can't purge the main post, please delete the topic instead",
"topic-thumbnails-are-disabled": "টপিক থাম্বনেল নিষ্ক্রিয় করা। ", "topic-thumbnails-are-disabled": "টপিক থাম্বনেল নিষ্ক্রিয় করা। ",
"invalid-file": "ভুল ফাইল", "invalid-file": "ভুল ফাইল",
"uploads-are-disabled": "আপলোড নিষ্ক্রিয় করা", "uploads-are-disabled": "আপলোড নিষ্ক্রিয় করা",
"signature-too-long": "Sorry, your signature cannot be longer than %1 character(s).", "upload-error": "আপলোড ত্রুটিঃ %1",
"about-me-too-long": "Sorry, your about me cannot be longer than %1 character(s).", "signature-too-long": "দুঃখিত, আপনার সাক্ষর %1 অক্ষরের বেশী হতে পারবে না। ",
"cant-chat-with-yourself": "আপনি নিজের সাথে চ্যাট করতে পারবেন না!", "cant-chat-with-yourself": "আপনি নিজের সাথে চ্যাট করতে পারবেন না!",
"chat-restricted": "এই সদস্য তার বার্তালাপ সংরক্ষিত রেখেছেন। এই সদস্য আপনাকে ফলো করার পরই কেবলমাত্র আপনি তার সাথে চ্যাট করতে পারবেন", "chat-restricted": "এই সদস্য তার বার্তালাপ সংরক্ষিত রেখেছেন। এই সদস্য আপনাকে ফলো করার পরই কেবলমাত্র আপনি তার সাথে চ্যাট করতে পারবেন",
"too-many-messages": "You have sent too many messages, please wait awhile.", "too-many-messages": "You have sent too many messages, please wait awhile.",
@@ -79,10 +67,7 @@
"downvoting-disabled": "ঋণাত্মক ভোট নিস্ক্রীয় রাখা হয়েছে।", "downvoting-disabled": "ঋণাত্মক ভোট নিস্ক্রীয় রাখা হয়েছে।",
"not-enough-reputation-to-downvote": "আপনার এই পোস্ট downvote করার জন্য পর্যাপ্ত সম্মাননা নেই", "not-enough-reputation-to-downvote": "আপনার এই পোস্ট downvote করার জন্য পর্যাপ্ত সম্মাননা নেই",
"not-enough-reputation-to-flag": "এই পোষ্টকে ফ্লাগ করার জন্য আপনার পর্যাপ্ত সম্মাননা নেই", "not-enough-reputation-to-flag": "এই পোষ্টকে ফ্লাগ করার জন্য আপনার পর্যাপ্ত সম্মাননা নেই",
"already-flagged": "You have already flagged this post",
"reload-failed": "\"%1\" রিলোড করতে সমস্যা হয়েছে। রিলোডের পূর্বে যা করা হয়েছিল সেটি আনডু করা সমীচীন। ", "reload-failed": "\"%1\" রিলোড করতে সমস্যা হয়েছে। রিলোডের পূর্বে যা করা হয়েছিল সেটি আনডু করা সমীচীন। ",
"registration-error": "নিবন্ধন এরর!", "registration-error": "নিবন্ধন এরর!",
"parse-error": "Something went wrong while parsing server response", "parse-error": "Something went wrong while parsing server response"
"wrong-login-type-email": "Please use your email to login",
"wrong-login-type-username": "Please use your username to login"
} }

View File

@@ -50,7 +50,6 @@
"views": "দেখেছেন", "views": "দেখেছেন",
"reputation": "সন্মাননা", "reputation": "সন্মাননা",
"read_more": "আরো পড়ুন", "read_more": "আরো পড়ুন",
"more": "More",
"posted_ago_by_guest": "অতিথি পোস্ট করেছেন %1", "posted_ago_by_guest": "অতিথি পোস্ট করেছেন %1",
"posted_ago_by": " %1 %2 দ্বারা পোস্টকৃত", "posted_ago_by": " %1 %2 দ্বারা পোস্টকৃত",
"posted_ago": "পোস্ট করেছেন %1", "posted_ago": "পোস্ট করেছেন %1",

View File

@@ -4,14 +4,6 @@
"owner": "Group Owner", "owner": "Group Owner",
"new_group": "Create New Group", "new_group": "Create New Group",
"no_groups_found": "There are no groups to see", "no_groups_found": "There are no groups to see",
"pending.accept": "Accept",
"pending.reject": "Reject",
"pending.accept_all": "Accept All",
"pending.reject_all": "Reject All",
"pending.none": "There are no pending members at this time",
"invited.none": "There are no invited members at this time",
"invited.uninvite": "Rescind Invitation",
"invited.search": "Search for a user to invite to this group",
"cover-instructions": "Drag and Drop a photo, drag to position, and hit <strong>Save</strong>", "cover-instructions": "Drag and Drop a photo, drag to position, and hit <strong>Save</strong>",
"cover-change": "Change", "cover-change": "Change",
"cover-save": "Save", "cover-save": "Save",
@@ -19,25 +11,11 @@
"details.title": "গ্রুপের বিস্তারিত", "details.title": "গ্রুপের বিস্তারিত",
"details.members": "সদস্য তালিকা", "details.members": "সদস্য তালিকা",
"details.pending": "Pending Members", "details.pending": "Pending Members",
"details.invited": "Invited Members",
"details.has_no_posts": "এই গ্রুপের সদস্যরা এখনো কোন পোষ্ট করেন নি", "details.has_no_posts": "এই গ্রুপের সদস্যরা এখনো কোন পোষ্ট করেন নি",
"details.latest_posts": "সর্বশেষ পোষ্টসমূহ", "details.latest_posts": "সর্বশেষ পোষ্টসমূহ",
"details.private": "Private", "details.private": "Private Group",
"details.grant": "Grant/Rescind Ownership", "details.public": "Public Group",
"details.kick": "Kick",
"details.owner_options": "Group Administration", "details.owner_options": "Group Administration",
"details.group_name": "Group Name",
"details.member_count": "Member Count",
"details.creation_date": "Creation Date",
"details.description": "Description",
"details.badge_preview": "Badge Preview",
"details.change_icon": "Change Icon",
"details.change_colour": "Change Colour",
"details.badge_text": "Badge Text",
"details.userTitleEnabled": "Show Badge",
"details.private_help": "If enabled, joining of groups requires approval from a group owner",
"details.hidden": "Hidden",
"details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually",
"event.updated": "Group details have been updated", "event.updated": "Group details have been updated",
"event.deleted": "The group \"%1\" has been deleted" "event.deleted": "The group \"%1\" has been deleted"
} }

View File

@@ -1,7 +1,5 @@
{ {
"username-email": "Username / Email", "username": "ইউজারনেম / ইমেইল",
"username": "Username",
"email": "Email",
"remember_me": "মনে রাখুন", "remember_me": "মনে রাখুন",
"forgot_password": "পাসওয়ার্ড ভুলে গিয়েছেন?", "forgot_password": "পাসওয়ার্ড ভুলে গিয়েছেন?",
"alternative_logins": "বিকল্প প্রবেশ", "alternative_logins": "বিকল্প প্রবেশ",

View File

@@ -15,12 +15,7 @@
"chat.seven_days": " দিন", "chat.seven_days": " দিন",
"chat.thirty_days": "৩০ দিন", "chat.thirty_days": "৩০ দিন",
"chat.three_months": "৩ মাস", "chat.three_months": "৩ মাস",
"composer.compose": "Compose",
"composer.show_preview": "Show Preview",
"composer.hide_preview": "Hide Preview",
"composer.user_said_in": "%1 বলেছেন %2:", "composer.user_said_in": "%1 বলেছেন %2:",
"composer.user_said": "%1 বলেছেনঃ", "composer.user_said": "%1 বলেছেনঃ",
"composer.discard": "আপনি কি নিশ্চিত যে আপনি এই পোস্ট বাতিল করতে ইচ্ছুক?", "composer.discard": "আপনি কি নিশ্চিত যে আপনি এই পোস্ট বাতিল করতে ইচ্ছুক?"
"composer.submit_and_lock": "Submit and Lock",
"composer.toggle_dropdown": "Toggle Dropdown"
} }

View File

@@ -2,7 +2,6 @@
"title": "বিজ্ঞপ্তিগুলো", "title": "বিজ্ঞপ্তিগুলো",
"no_notifs": "আপনার নতুন কোন বিজ্ঞপ্তি নেই", "no_notifs": "আপনার নতুন কোন বিজ্ঞপ্তি নেই",
"see_all": "সকল বিজ্ঞপ্তিগুলো দেখুন", "see_all": "সকল বিজ্ঞপ্তিগুলো দেখুন",
"mark_all_read": "Mark all notifications read",
"back_to_home": "ফিরুন %1", "back_to_home": "ফিরুন %1",
"outgoing_link": "বহির্গামী লিঙ্ক", "outgoing_link": "বহির্গামী লিঙ্ক",
"outgoing_link_message": "আপনি এখন %1 ত্যাগ করছেন", "outgoing_link_message": "আপনি এখন %1 ত্যাগ করছেন",
@@ -20,9 +19,9 @@
"user_posted_topic": "<strong>%1</strong> has posted a new topic: <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_mentioned_you_in": "<strong>%1</strong>, <strong>%2</strong> এ আপনার নাম উল্লেখ করেছেন",
"user_started_following_you": "<strong>%1</strong> আপনাকে অনুসরন করা শুরু করেছেন।", "user_started_following_you": "<strong>%1</strong> আপনাকে অনুসরন করা শুরু করেছেন।",
"new_register": "<strong>%1</strong> sent a registration request.",
"email-confirmed": "ইমেইল নিশ্চিত করা হয়েছে", "email-confirmed": "ইমেইল নিশ্চিত করা হয়েছে",
"email-confirmed-message": "আপনার ইমেইল যাচাই করার জন্য আপনাকে ধন্যবাদ। আপনার অ্যাকাউন্টটি এখন সম্পূর্ণরূপে সক্রিয়।", "email-confirmed-message": "আপনার ইমেইল যাচাই করার জন্য আপনাকে ধন্যবাদ। আপনার অ্যাকাউন্টটি এখন সম্পূর্ণরূপে সক্রিয়।",
"email-confirm-error": "একটি ত্রুটি ঘটেছে...",
"email-confirm-error-message": "আপনার ইমেল ঠিকানার বৈধতা যাচাইয়ে একটি সমস্যা হয়েছে। সম্ভবত কোডটি ভুল ছিল অথবা কোডের মেয়াদ শেষ হয়ে গিয়েছে।", "email-confirm-error-message": "আপনার ইমেল ঠিকানার বৈধতা যাচাইয়ে একটি সমস্যা হয়েছে। সম্ভবত কোডটি ভুল ছিল অথবা কোডের মেয়াদ শেষ হয়ে গিয়েছে।",
"email-confirm-sent": "নিশ্চিতকরণ ইমেইল পাঠানো হয়েছে।" "email-confirm-sent": "নিশ্চিতকরণ ইমেইল পাঠানো হয়েছে।"
} }

View File

@@ -5,17 +5,14 @@
"recent": "সাম্প্রতিক টপিক", "recent": "সাম্প্রতিক টপিক",
"users": "নিবন্ধিত সদস্যগণ", "users": "নিবন্ধিত সদস্যগণ",
"notifications": "বিজ্ঞপ্তি", "notifications": "বিজ্ঞপ্তি",
"tags": "Tags", "tags": "\"%1\" এ ট্যগকৃত টপিকসমূহ",
"tag": "Topics tagged under \"%1\"",
"user.edit": "সম্পাদনা \"%1\"", "user.edit": "সম্পাদনা \"%1\"",
"user.following": "%1 যাদের অনুসরণ করেন", "user.following": "%1 যাদের অনুসরণ করেন",
"user.followers": "যারা %1 কে অনুসরণ করেন", "user.followers": "যারা %1 কে অনুসরণ করেন",
"user.posts": "%1 এর পোস্ট সমুহ", "user.posts": "%1 এর পোস্ট সমুহ",
"user.topics": "%1 এর টপিক সমুহ", "user.topics": "%1 এর টপিক সমুহ",
"user.groups": "%1's Groups",
"user.favourites": "%1'র প্রিয় পোস্টগুলো", "user.favourites": "%1'র প্রিয় পোস্টগুলো",
"user.settings": "সদস্য সেটিংস", "user.settings": "সদস্য সেটিংস",
"user.watched": "Topics watched by %1",
"maintenance.text": "%1 is currently undergoing maintenance. Please come back another time.", "maintenance.text": "%1 is currently undergoing maintenance. Please come back another time.",
"maintenance.messageIntro": "Additionally, the administrator has left this message:" "maintenance.messageIntro": "Additionally, the administrator has left this message:"
} }

View File

@@ -6,7 +6,6 @@
"year": "বছর", "year": "বছর",
"alltime": "সবসময় ", "alltime": "সবসময় ",
"no_recent_topics": "কোন সাম্প্রতিক টপিক নেই। ", "no_recent_topics": "কোন সাম্প্রতিক টপিক নেই। ",
"no_popular_topics": "There are no popular topics.",
"there-is-a-new-topic": "There is a new topic.", "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-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-is-a-new-topic-and-new-posts": "There is a new topic and %1 new posts.",

View File

@@ -14,6 +14,5 @@
"register_now_button": "নিবন্ধন করুন", "register_now_button": "নিবন্ধন করুন",
"alternative_registration": "বিকল্প নিবন্ধন", "alternative_registration": "বিকল্প নিবন্ধন",
"terms_of_use": "নিয়মাবলী", "terms_of_use": "নিয়মাবলী",
"agree_to_terms_of_use": "আমি নিয়মাবলী মেনে চলতে সম্মতি জানালাম", "agree_to_terms_of_use": "আমি নিয়মাবলী মেনে চলতে সম্মতি জানালাম"
"registration-added-to-queue": "Your registration has been added to the approval queue. You will receive an email when it is accepted by an administrator."
} }

View File

@@ -10,8 +10,5 @@
"enter_email": "অনুগ্রহপূর্বক আপনার ইমেইল এড্রেস প্রদান করুন, আমরা আপনাকে আপনার পাসওয়ার্ড রিসেট সম্পর্কিত তথ্যাবলী ইমেইলে পাঠিয়ে দিবো। ", "enter_email": "অনুগ্রহপূর্বক আপনার ইমেইল এড্রেস প্রদান করুন, আমরা আপনাকে আপনার পাসওয়ার্ড রিসেট সম্পর্কিত তথ্যাবলী ইমেইলে পাঠিয়ে দিবো। ",
"enter_email_address": "আপনার ইমেইল এড্রেস", "enter_email_address": "আপনার ইমেইল এড্রেস",
"password_reset_sent": "পাসওয়ার্ড রিসেট মেইল পাঠানো হয়েছে", "password_reset_sent": "পাসওয়ার্ড রিসেট মেইল পাঠানো হয়েছে",
"invalid_email": "ভুল ইমেইল / ইমেইল ডেটাবেইজে নেই", "invalid_email": "ভুল ইমেইল / ইমেইল ডেটাবেইজে নেই"
"password_too_short": "The password entered is too short, please pick a different password.",
"passwords_do_not_match": "The two passwords you've entered do not match.",
"password_expired": "Your password has expired, please choose a new password"
} }

View File

@@ -1,40 +1,7 @@
{ {
"results_matching": "\"%2\" এর সাথে মিলিয়ে %1 ফলাফল পাওয়া গেছে, ( %3 seconds সময় লেগেছে )", "results_matching": "\"%2\" এর সাথে মিলিয়ে %1 ফলাফল পাওয়া গেছে, ( %3 seconds সময় লেগেছে )",
"no-matches": "No matches found", "no-matches": "No matches found",
"advanced-search": "Advanced Search",
"in": "In", "in": "In",
"titles": "Titles", "by": "By",
"titles-posts": "Titles and Posts", "posted-by": "Posted by"
"posted-by": "Posted by",
"in-categories": "In Categories",
"search-child-categories": "Search child categories",
"reply-count": "Reply Count",
"at-least": "At least",
"at-most": "At most",
"post-time": "Post time",
"newer-than": "Newer than",
"older-than": "Older than",
"any-date": "Any date",
"yesterday": "Yesterday",
"one-week": "One week",
"two-weeks": "Two weeks",
"one-month": "One month",
"three-months": "Three months",
"six-months": "Six months",
"one-year": "One year",
"sort-by": "Sort by",
"last-reply-time": "Last reply time",
"topic-title": "Topic title",
"number-of-replies": "Number of replies",
"number-of-views": "Number of views",
"topic-start-date": "Topic start date",
"username": "Username",
"category": "Category",
"descending": "In descending order",
"ascending": "In ascending order",
"save-preferences": "Save preferences",
"clear-preferences": "Clear preferences",
"search-preferences-saved": "Search preferences saved",
"search-preferences-cleared": "Search preferences cleared",
"show-results-as": "Show results as"
} }

View File

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

View File

@@ -5,7 +5,6 @@
"no_topics_found": "কোন টপিক পাওয়া যায়নি!", "no_topics_found": "কোন টপিক পাওয়া যায়নি!",
"no_posts_found": "কোন পোস্ট পাওয়া যায়নি", "no_posts_found": "কোন পোস্ট পাওয়া যায়নি",
"post_is_deleted": "এই পোস্টটি মুছে ফেলা হয়েছে!", "post_is_deleted": "এই পোস্টটি মুছে ফেলা হয়েছে!",
"topic_is_deleted": "This topic is deleted!",
"profile": "প্রোফাইল ", "profile": "প্রোফাইল ",
"posted_by": "পোস্ট করেছেন %1", "posted_by": "পোস্ট করেছেন %1",
"posted_by_guest": "অতিথি পোস্ট ", "posted_by_guest": "অতিথি পোস্ট ",
@@ -13,7 +12,6 @@
"notify_me": "এই টপিকে নতুন উত্তর আসলে জানুন", "notify_me": "এই টপিকে নতুন উত্তর আসলে জানুন",
"quote": "উদ্ধৃতি", "quote": "উদ্ধৃতি",
"reply": "উত্তর", "reply": "উত্তর",
"guest-login-reply": "Log in to reply",
"edit": "সম্পাদণা", "edit": "সম্পাদণা",
"delete": "মুছে ফেলুন", "delete": "মুছে ফেলুন",
"purge": "পার্জ", "purge": "পার্জ",

View File

@@ -5,6 +5,5 @@
"mark_as_read": "পঠিত হিসেবে চিহ্নিত করুন", "mark_as_read": "পঠিত হিসেবে চিহ্নিত করুন",
"selected": "নির্বাচিত", "selected": "নির্বাচিত",
"all": "সবগুলো", "all": "সবগুলো",
"all_categories": "All categories",
"topics_marked_as_read.success": "পঠিত হিসেবে চিহ্নিত টপিকসমূহ" "topics_marked_as_read.success": "পঠিত হিসেবে চিহ্নিত টপিকসমূহ"
} }

View File

@@ -6,12 +6,8 @@
"postcount": "Post Count", "postcount": "Post Count",
"email": "ইমেইল", "email": "ইমেইল",
"confirm_email": "ইমেইল নিশ্চিত করুন", "confirm_email": "ইমেইল নিশ্চিত করুন",
"ban_account": "Ban Account",
"ban_account_confirm": "Do you really want to ban this user?",
"unban_account": "Unban Account",
"delete_account": "একাউন্ট মুছে ফেলুন", "delete_account": "একাউন্ট মুছে ফেলুন",
"delete_account_confirm": "আপনি কি নিশ্চিত যে আপনি আপনার একাউন্ট মুছে ফেলতে চান ? <br /><strong>এই কাজটির ফলে আপনার কোন তথ্য পুনরূদ্ধার করা সম্ভব নয় </strong><br /><br /> নিশ্চিত করতে আপনার ইউজারনেম প্রবেশ করান। ", "delete_account_confirm": "আপনি কি নিশ্চিত যে আপনি আপনার একাউন্ট মুছে ফেলতে চান ? <br /><strong>এই কাজটির ফলে আপনার কোন তথ্য পুনরূদ্ধার করা সম্ভব নয় </strong><br /><br /> নিশ্চিত করতে আপনার ইউজারনেম প্রবেশ করান। ",
"delete_this_account_confirm": "Are you sure you want to delete this account? <br /><strong>This action is irreversible and you will not be able to recover any data</strong><br /><br />",
"fullname": "পুর্ণ নাম", "fullname": "পুর্ণ নাম",
"website": "ওয়েবসাইট", "website": "ওয়েবসাইট",
"location": "স্থান", "location": "স্থান",
@@ -25,14 +21,12 @@
"watched": "Watched", "watched": "Watched",
"followers": "যাদের অনুসরণ করছেন", "followers": "যাদের অনুসরণ করছেন",
"following": "যারা আপনাকে অনুসরণ করছে", "following": "যারা আপনাকে অনুসরণ করছে",
"aboutme": "About me",
"signature": "স্বাক্ষর", "signature": "স্বাক্ষর",
"gravatar": "গ্রাভাতার", "gravatar": "গ্রাভাতার",
"birthday": "জন্মদিন", "birthday": "জন্মদিন",
"chat": "বার্তালাপ", "chat": "বার্তালাপ",
"follow": "অনুসরন করুন", "follow": "অনুসরন করুন",
"unfollow": "অনুসরন করা থেকে বিরত থাকুন", "unfollow": "অনুসরন করা থেকে বিরত থাকুন",
"more": "More",
"profile_update_success": "প্রোফাইল আপডেট সফল হয়েছে", "profile_update_success": "প্রোফাইল আপডেট সফল হয়েছে",
"change_picture": "ছবি পরিবর্তন", "change_picture": "ছবি পরিবর্তন",
"edit": "সম্পাদনা", "edit": "সম্পাদনা",
@@ -53,6 +47,7 @@
"upload_picture": "ছবি আপলোড করুন", "upload_picture": "ছবি আপলোড করুন",
"upload_a_picture": "ছবি (একটি) আপলোড করুন", "upload_a_picture": "ছবি (একটি) আপলোড করুন",
"image_spec": "আপনি কেবলমাত্র PNG, JPG অথবা GIF ফাইল আপলোড করতে পারবেন", "image_spec": "আপনি কেবলমাত্র PNG, JPG অথবা GIF ফাইল আপলোড করতে পারবেন",
"max": "সর্বোচ্চ",
"settings": "সেটিংস", "settings": "সেটিংস",
"show_email": "আমার ইমেইল দেখাও", "show_email": "আমার ইমেইল দেখাও",
"show_fullname": "আমার সম্পূর্ণ নাম দেখাও", "show_fullname": "আমার সম্পূর্ণ নাম দেখাও",
@@ -65,24 +60,21 @@
"digest_monthly": "মাসিক", "digest_monthly": "মাসিক",
"send_chat_notifications": "যদি আমি অনলাইনে না থাকি, সেক্ষেত্রে নতুন চ্যাট মেসেজ আসলে আমাকে ইমেইল করুন", "send_chat_notifications": "যদি আমি অনলাইনে না থাকি, সেক্ষেত্রে নতুন চ্যাট মেসেজ আসলে আমাকে ইমেইল করুন",
"send_post_notifications": "Send an email when replies are made to topics I am subscribed to", "send_post_notifications": "Send an email when replies are made to topics I am subscribed to",
"settings-require-reload": "Some setting changes require a reload. Click here to reload the page.",
"has_no_follower": "এই সদস্যের কোন ফলোয়ার নেই :(", "has_no_follower": "এই সদস্যের কোন ফলোয়ার নেই :(",
"follows_no_one": "এই সদস্য কাউকে ফলো করছেন না :(", "follows_no_one": "এই সদস্য কাউকে ফলো করছেন না :(",
"has_no_posts": "This user hasn't posted anything yet.", "has_no_posts": "এই সদস্য এখনো কোন পোষ্ট করেন নি",
"has_no_topics": "This user hasn't posted any topics yet.", "has_no_topics": "এই সদস্য এখনো কোন টপিক পোষ্ট করেন নি",
"has_no_watched_topics": "This user hasn't watched any topics yet.", "has_no_watched_topics": "This user didn't watch any topics yet.",
"email_hidden": "ইমেইল গোপন রাখা হয়েছে", "email_hidden": "ইমেইল গোপন রাখা হয়েছে",
"hidden": "গোপন করা হয়েছে", "hidden": "গোপন করা হয়েছে",
"paginate_description": "Paginate topics and posts instead of using infinite scroll", "paginate_description": "ইনফাইনাইট স্ক্রলের বদলে টপিক এবং পোষ্টের জন্য পেজিনেশন ব্যাবহার করুন",
"topics_per_page": "প্রতি পেজে কতগুলো টপিক থাকবে", "topics_per_page": "প্রতি পেজে কতগুলো টপিক থাকবে",
"posts_per_page": "প্রতি পেইজে কতগুলো পোষ্ট থাকবে", "posts_per_page": "প্রতি পেইজে কতগুলো পোষ্ট থাকবে",
"notification_sounds": "Play a sound when you receive a notification", "notification_sounds": "নতুন নোটিফিকেশনের জন্য নোটিফিকেশন সাউন্ড বাজাও।",
"browsing": "Browsing সেটিংস", "browsing": "Browsing সেটিংস",
"open_links_in_new_tab": "Open outgoing links in new tab", "open_links_in_new_tab": "বাইরের URL গুলো নতুন ট্যাবে খোলা হবে ?",
"enable_topic_searching": "In-Topic সার্চ সক্রীয় করো", "enable_topic_searching": "In-Topic সার্চ সক্রীয় করো",
"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", "topic_search_help": "যদি এনাবল করা হয়ে থাকে, In-topic সার্চিং ব্রাউজারের ডিফল্ট সার্চের বদলে পুরো টপিকজুড়ে সার্চ করার সুবিধা দিবে, যা কেবলমাত্র বর্তমান স্কৃণে দেখানো অংশের মধ্যে সীমাবদ্ধ থাকবে না। ",
"follow_topics_you_reply_to": "Follow topics that you reply to", "follow_topics_you_reply_to": "আপনার উত্তর দেয়া টপিকগুলো ফলো করুন",
"follow_topics_you_create": "Follow topics you create", "follow_topics_you_create": "আপনার তৈরীকরা টপিকসমূহ ফলো করুন"
"grouptitle": "Select the group title you would like to display",
"no-group-title": "No group title"
} }

View File

@@ -5,17 +5,8 @@
"search": "খুঁজুন", "search": "খুঁজুন",
"enter_username": "ইউজারনেম এর ভিত্তিতে সার্চ করুন", "enter_username": "ইউজারনেম এর ভিত্তিতে সার্চ করুন",
"load_more": "আরো লোড করুন", "load_more": "আরো লোড করুন",
"users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "users-found-search-took": "%1 সদস্য(দের) খুঁজে পাওয়া গিয়েছে! সময় লেগেছে %2 ms.",
"filter-by": "Filter By", "filter-by": "Filter By",
"online-only": "Online only", "online-only": "Online only",
"picture-only": "Picture only", "picture-only": "Picture only"
"invite": "Invite",
"invitation-email-sent": "An invitation email has been sent to %1",
"user_list": "User List",
"recent_topics": "Recent Topics",
"popular_topics": "Popular Topics",
"unread_topics": "Unread Topics",
"categories": "Categories",
"tags": "Tags",
"map": "Map"
} }

View File

@@ -1,12 +1,8 @@
{ {
"new_topic_button": "Nové téma", "new_topic_button": "Nové téma",
"guest-login-post": "Log in to post",
"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",
"watch": "Watch", "ignore": "Ignorovat"
"ignore": "Ignorovat",
"watch.message": "You are now watching updates from this category",
"ignore.message": "You are now ignoring updates from this category"
} }

View File

@@ -1,21 +1,14 @@
{ {
"password-reset-requested": "Požadována obnova hesla - %1!", "password-reset-requested": "Požadována obnova hesla - %1!",
"welcome-to": "Vítejte v %1", "welcome-to": "Vítejte v %1",
"invite": "Invitation from %1",
"greeting_no_name": "Dobrý den", "greeting_no_name": "Dobrý den",
"greeting_with_name": "Dobrý den %1", "greeting_with_name": "Dobrý den %1",
"welcome.text1": "Děkujeme vám za registraci s %1!", "welcome.text1": "Děkujeme vám za registraci s %1!",
"welcome.text2": "Pro úplnou aktivaci vašeho účtu potřebujeme ověřit vaší emailovou adresu.", "welcome.text2": "Pro úplnou aktivaci vašeho účtu potřebujeme ověřit vaší emailovou adresu.",
"welcome.text3": "An administrator has accepted your registration application. You can login with your username/password now.",
"welcome.cta": "Klikněte zde pro potvrzení vaší emailové adresy", "welcome.cta": "Klikněte zde pro potvrzení vaší emailové adresy",
"invitation.text1": "%1 has invited you to join %2",
"invitation.ctr": "Click here to create your account.",
"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": "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.text2": "Přejete-li si pokračovat v obnově vašeho hesla, klikněte, prosím, na následující odkaz:", "reset.text2": "Přejete-li si pokračovat v obnově vašeho hesla, klikněte, prosím, na následující odkaz:",
"reset.cta": "Klikněte zde, chcete-li obnovit vaše heslo", "reset.cta": "Klikněte zde, chcete-li obnovit vaše heslo",
"reset.notify.subject": "Password successfully changed",
"reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.",
"reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.",
"digest.notifications": "Máte tu nepřečtená oznámení od %1:", "digest.notifications": "Máte tu nepřečtená oznámení od %1:",
"digest.latest_topics": "Nejnovější témata od %1", "digest.latest_topics": "Nejnovější témata od %1",
"digest.cta": "Kliknutím zde navštívíte %1", "digest.cta": "Kliknutím zde navštívíte %1",

View File

@@ -2,7 +2,7 @@
"invalid-data": "Neplatná data", "invalid-data": "Neplatná data",
"not-logged-in": "Zdá se, že nejste přihlášen(a)", "not-logged-in": "Zdá se, že nejste přihlášen(a)",
"account-locked": "Váš účet byl dočasně uzamčen", "account-locked": "Váš účet byl dočasně uzamčen",
"search-requires-login": "Searching requires an account - please login or register.", "search-requires-login": "Chcete-li vyhledávat, musíte mít účet. Přihlašte se nebo zaregistrujte, prosím.",
"invalid-cid": "Neplatné ID kategorie", "invalid-cid": "Neplatné ID kategorie",
"invalid-tid": "Neplatné ID tématu", "invalid-tid": "Neplatné ID tématu",
"invalid-pid": "Neplatné ID příspěvku", "invalid-pid": "Neplatné ID příspěvku",
@@ -18,14 +18,11 @@
"username-taken": "Uživatelské jméno je již použito", "username-taken": "Uživatelské jméno je již použito",
"email-taken": "Email je již použit", "email-taken": "Email je již použit",
"email-not-confirmed": "Vaše emailová adresa zatím nebyla potvrzena. Kliknutím zde svůj email potvrdíte.", "email-not-confirmed": "Vaše emailová adresa zatím nebyla potvrzena. Kliknutím zde svůj email potvrdíte.",
"email-not-confirmed-chat": "You are unable to chat until your email is confirmed, please click here to confirm your email.", "email-not-confirmed-chat": "You are unable to chat until your email is confirmed",
"no-email-to-confirm": "This forum requires email confirmation, please click here to enter an email",
"email-confirm-failed": "We could not confirm your email, please try again later.",
"confirm-email-already-sent": "Confirmation email already sent, please wait %1 minute(s) to send another one.",
"username-too-short": "Uživatelské jméno je příliš krátké", "username-too-short": "Uživatelské jméno je příliš krátké",
"username-too-long": "Uživatelské jméno je příliš dlouhé", "username-too-long": "Uživatelské jméno je příliš dlouhé",
"user-banned": "Uživatel byl zakázán", "user-banned": "Uživatel byl zakázán",
"user-too-new": "Sorry, you are required to wait %1 second(s) before making your first post", "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-category": "Kategorie neexistuje", "no-category": "Kategorie neexistuje",
"no-topic": "Téma neexistuje", "no-topic": "Téma neexistuje",
"no-post": "Příspěvek neexistuje", "no-post": "Příspěvek neexistuje",
@@ -36,42 +33,33 @@
"no-emailers-configured": "Protože není zaveden žádný emailový plugin, není možné odeslat testovací email.", "no-emailers-configured": "Protože není zaveden žádný emailový plugin, není možné odeslat testovací email.",
"category-disabled": "Kategorie zakázána", "category-disabled": "Kategorie zakázána",
"topic-locked": "Téma uzamčeno", "topic-locked": "Téma uzamčeno",
"post-edit-duration-expired": "You are only allowed to edit posts for %1 second(s) after posting",
"still-uploading": "Vyčkejte, prosím, nežli se vše kompletně nahraje.", "still-uploading": "Vyčkejte, prosím, nežli se vše kompletně nahraje.",
"content-too-short": "Please enter a longer post. Posts should contain at least %1 character(s).", "content-too-short": "Vložte, prosím, delší příspěvek. Příspěvky by měly obsahovat nejméně %1 znaků.",
"content-too-long": "Please enter a shorter post. Posts can't be longer than %1 character(s).", "title-too-short": "Vložte, prosím, delší titulek. Titulky by měly obsahovat nejméně %1 znaků.",
"title-too-short": "Please enter a longer title. Titles should contain at least %1 character(s).", "title-too-long": "Vložte, prosím, kratší titulek. Titulky by neměly být delší, než-li %1 znaků.",
"title-too-long": "Please enter a shorter title. Titles can't be longer than %1 character(s).", "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",
"too-many-posts": "You can only post once every %1 second(s) - please wait before posting again", "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",
"too-many-posts-newbie": "As a new user, you can only post once every %1 second(s) until you have earned %2 reputation - please wait before posting again", "file-too-big": "Maximální povolená velikost souboru je %1 kbs - nahrávejte, prosím, menší soubory",
"tag-too-short": "Please enter a longer tag. Tags should contain at least %1 character(s)",
"tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 character(s)",
"file-too-big": "Maximum allowed file size is %1 kB - please upload a smaller file",
"cant-vote-self-post": "Nemůžete hlasovat pro svůj vlastní příspěvek", "cant-vote-self-post": "Nemůžete hlasovat pro svůj vlastní příspěvek",
"already-favourited": "You have already favourited this post", "already-favourited": "You have already favourited this post",
"already-unfavourited": "You have already unfavourited this post", "already-unfavourited": "You have already unfavourited this post",
"cant-ban-other-admins": "Nemůžete zakazovat ostatní administrátory!", "cant-ban-other-admins": "Nemůžete zakazovat ostatní administrátory!",
"cant-remove-last-admin": "You are the only administrator. Add another user as an administrator before removing yourself as admin",
"invalid-image-type": "Invalid image type. Allowed types are: %1", "invalid-image-type": "Invalid image type. Allowed types are: %1",
"invalid-image-extension": "Invalid image extension", "invalid-image-extension": "Invalid image extension",
"invalid-file-type": "Invalid file type. Allowed types are: %1",
"group-name-too-short": "Název skupiny je příliš krátký", "group-name-too-short": "Název skupiny je příliš krátký",
"group-already-exists": "Skupina už exstuje", "group-already-exists": "Skupina už exstuje",
"group-name-change-not-allowed": "Změna názvu skupiny není povolena", "group-name-change-not-allowed": "Změna názvu skupiny není povolena",
"group-already-member": "You are already part of this group", "group-already-member": "You are already part of this group",
"group-needs-owner": "This group requires at least one owner", "group-needs-owner": "This group requires at least one owner",
"group-already-invited": "This user has already been invited",
"group-already-requested": "Your membership request has already been submitted",
"post-already-deleted": "Tento příspěvek byl již vymazán", "post-already-deleted": "Tento příspěvek byl již vymazán",
"post-already-restored": "Tento příspěvek byl již obnoven", "post-already-restored": "Tento příspěvek byl již obnoven",
"topic-already-deleted": "Toto téma bylo již vymazáno", "topic-already-deleted": "Toto téma bylo již vymazáno",
"topic-already-restored": "Toto téma bylo již obnoveno", "topic-already-restored": "Toto téma bylo již obnoveno",
"cant-purge-main-post": "You can't purge the main post, please delete the topic instead",
"topic-thumbnails-are-disabled": "Topic thumbnails are disabled.", "topic-thumbnails-are-disabled": "Topic thumbnails are disabled.",
"invalid-file": "Neplatný soubor", "invalid-file": "Neplatný soubor",
"uploads-are-disabled": "Nahrávání je zakázáno", "uploads-are-disabled": "Nahrávání je zakázáno",
"signature-too-long": "Sorry, your signature cannot be longer than %1 character(s).", "upload-error": "Chyba při nahrávání : %1",
"about-me-too-long": "Sorry, your about me cannot be longer than %1 character(s).", "signature-too-long": "Pardon, ale váš podpis nemůže být delší, než-li %1 znaků.",
"cant-chat-with-yourself": "Nemůžete chatovat sami se sebou!", "cant-chat-with-yourself": "Nemůžete chatovat sami se sebou!",
"chat-restricted": "This user has restricted their chat messages. They must follow you before you can chat with them", "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.", "too-many-messages": "You have sent too many messages, please wait awhile.",
@@ -79,10 +67,7 @@
"downvoting-disabled": "Downvoting is disabled", "downvoting-disabled": "Downvoting is disabled",
"not-enough-reputation-to-downvote": "You do not have enough reputation to downvote this post", "not-enough-reputation-to-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", "not-enough-reputation-to-flag": "You do not have enough reputation to flag this post",
"already-flagged": "You have already flagged 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.", "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", "registration-error": "Chyba při registraci",
"parse-error": "Something went wrong while parsing server response", "parse-error": "Something went wrong while parsing server response"
"wrong-login-type-email": "Please use your email to login",
"wrong-login-type-username": "Please use your username to login"
} }

View File

@@ -50,7 +50,6 @@
"views": "Zobrazení", "views": "Zobrazení",
"reputation": "Reputation", "reputation": "Reputation",
"read_more": "read more", "read_more": "read more",
"more": "More",
"posted_ago_by_guest": "posted %1 by Guest", "posted_ago_by_guest": "posted %1 by Guest",
"posted_ago_by": "posted %1 by %2", "posted_ago_by": "posted %1 by %2",
"posted_ago": "posted %1", "posted_ago": "posted %1",

View File

@@ -4,14 +4,6 @@
"owner": "Group Owner", "owner": "Group Owner",
"new_group": "Create New Group", "new_group": "Create New Group",
"no_groups_found": "There are no groups to see", "no_groups_found": "There are no groups to see",
"pending.accept": "Accept",
"pending.reject": "Reject",
"pending.accept_all": "Accept All",
"pending.reject_all": "Reject All",
"pending.none": "There are no pending members at this time",
"invited.none": "There are no invited members at this time",
"invited.uninvite": "Rescind Invitation",
"invited.search": "Search for a user to invite to this group",
"cover-instructions": "Drag and Drop a photo, drag to position, and hit <strong>Save</strong>", "cover-instructions": "Drag and Drop a photo, drag to position, and hit <strong>Save</strong>",
"cover-change": "Change", "cover-change": "Change",
"cover-save": "Save", "cover-save": "Save",
@@ -19,25 +11,11 @@
"details.title": "podrobnosti skupiny", "details.title": "podrobnosti skupiny",
"details.members": "Seznam členů", "details.members": "Seznam členů",
"details.pending": "Pending Members", "details.pending": "Pending Members",
"details.invited": "Invited Members",
"details.has_no_posts": "Členové této skupiny dosud neodeslali ani jeden příspěvek.", "details.has_no_posts": "Členové této skupiny dosud neodeslali ani jeden příspěvek.",
"details.latest_posts": "Nejnovější příspěvky", "details.latest_posts": "Nejnovější příspěvky",
"details.private": "Private", "details.private": "Private Group",
"details.grant": "Grant/Rescind Ownership", "details.public": "Public Group",
"details.kick": "Kick",
"details.owner_options": "Group Administration", "details.owner_options": "Group Administration",
"details.group_name": "Group Name",
"details.member_count": "Member Count",
"details.creation_date": "Creation Date",
"details.description": "Description",
"details.badge_preview": "Badge Preview",
"details.change_icon": "Change Icon",
"details.change_colour": "Change Colour",
"details.badge_text": "Badge Text",
"details.userTitleEnabled": "Show Badge",
"details.private_help": "If enabled, joining of groups requires approval from a group owner",
"details.hidden": "Hidden",
"details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually",
"event.updated": "Group details have been updated", "event.updated": "Group details have been updated",
"event.deleted": "The group \"%1\" has been deleted" "event.deleted": "The group \"%1\" has been deleted"
} }

View File

@@ -1,7 +1,5 @@
{ {
"username-email": "Username / Email", "username": "Uživatelské jméno / Email",
"username": "Username",
"email": "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í",

View File

@@ -15,12 +15,7 @@
"chat.seven_days": "7 dní", "chat.seven_days": "7 dní",
"chat.thirty_days": "30 dní", "chat.thirty_days": "30 dní",
"chat.three_months": "3 měsíce", "chat.three_months": "3 měsíce",
"composer.compose": "Compose",
"composer.show_preview": "Show Preview",
"composer.hide_preview": "Hide Preview",
"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?"
"composer.submit_and_lock": "Submit and Lock",
"composer.toggle_dropdown": "Toggle Dropdown"
} }

View File

@@ -2,7 +2,6 @@
"title": "Upozornění", "title": "Upozornění",
"no_notifs": "You have no new notifications", "no_notifs": "You have no new notifications",
"see_all": "See all Notifications", "see_all": "See all Notifications",
"mark_all_read": "Mark all notifications read",
"back_to_home": "Back to %1", "back_to_home": "Back to %1",
"outgoing_link": "Odkaz mimo fórum", "outgoing_link": "Odkaz mimo fórum",
"outgoing_link_message": "You are now leaving %1.", "outgoing_link_message": "You are now leaving %1.",
@@ -20,9 +19,9 @@
"user_posted_topic": "<strong>%1</strong> has posted a new topic: <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.", "user_started_following_you": "<strong>%1</strong> started following you.",
"new_register": "<strong>%1</strong> sent a registration request.",
"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-message": "There was a problem validating your email address. Perhaps the code was invalid or has expired.", "email-confirm-error-message": "There was a problem validating your email address. Perhaps the code was invalid or has expired.",
"email-confirm-sent": "Confirmation email sent." "email-confirm-sent": "Confirmation email sent."
} }

View File

@@ -5,17 +5,14 @@
"recent": "Recent Topics", "recent": "Recent Topics",
"users": "Registered Users", "users": "Registered Users",
"notifications": "Notifications", "notifications": "Notifications",
"tags": "Tags", "tags": "Topics tagged under \"%1\"",
"tag": "Topics tagged under \"%1\"",
"user.edit": "Editing \"%1\"", "user.edit": "Editing \"%1\"",
"user.following": "People %1 Follows", "user.following": "People %1 Follows",
"user.followers": "People who Follow %1", "user.followers": "People who Follow %1",
"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.groups": "%1's Groups",
"user.favourites": "%1's Favourite Posts", "user.favourites": "%1's Favourite Posts",
"user.settings": "User Settings", "user.settings": "User Settings",
"user.watched": "Topics watched by %1",
"maintenance.text": "%1 is currently undergoing maintenance. Please come back another time.", "maintenance.text": "%1 is currently undergoing maintenance. Please come back another time.",
"maintenance.messageIntro": "Additionally, the administrator has left this message:" "maintenance.messageIntro": "Additionally, the administrator has left this message:"
} }

View File

@@ -6,7 +6,6 @@
"year": "Year", "year": "Year",
"alltime": "All Time", "alltime": "All Time",
"no_recent_topics": "There are no recent topics.", "no_recent_topics": "There are no recent topics.",
"no_popular_topics": "There are no popular topics.",
"there-is-a-new-topic": "There is a new topic.", "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-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-is-a-new-topic-and-new-posts": "There is a new topic and %1 new posts.",

View File

@@ -14,6 +14,5 @@
"register_now_button": "Zaregistrovat se", "register_now_button": "Zaregistrovat se",
"alternative_registration": "Jiný způsob registrace", "alternative_registration": "Jiný způsob registrace",
"terms_of_use": "Podmínky", "terms_of_use": "Podmínky",
"agree_to_terms_of_use": "Souhlasím s Podmínkami", "agree_to_terms_of_use": "Souhlasím s Podmínkami"
"registration-added-to-queue": "Your registration has been added to the approval queue. You will receive an email when it is accepted by an administrator."
} }

View File

@@ -10,8 +10,5 @@
"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": "Zadejte emailovou adresu",
"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!"
"password_too_short": "The password entered is too short, please pick a different password.",
"passwords_do_not_match": "The two passwords you've entered do not match.",
"password_expired": "Your password has expired, please choose a new password"
} }

View File

@@ -1,40 +1,7 @@
{ {
"results_matching": "%1 result(s) matching \"%2\", (%3 seconds)", "results_matching": "%1 result(s) matching \"%2\", (%3 seconds)",
"no-matches": "No matches found", "no-matches": "No matches found",
"advanced-search": "Advanced Search",
"in": "In", "in": "In",
"titles": "Titles", "by": "By",
"titles-posts": "Titles and Posts", "posted-by": "Posted by"
"posted-by": "Posted by",
"in-categories": "In Categories",
"search-child-categories": "Search child categories",
"reply-count": "Reply Count",
"at-least": "At least",
"at-most": "At most",
"post-time": "Post time",
"newer-than": "Newer than",
"older-than": "Older than",
"any-date": "Any date",
"yesterday": "Yesterday",
"one-week": "One week",
"two-weeks": "Two weeks",
"one-month": "One month",
"three-months": "Three months",
"six-months": "Six months",
"one-year": "One year",
"sort-by": "Sort by",
"last-reply-time": "Last reply time",
"topic-title": "Topic title",
"number-of-replies": "Number of replies",
"number-of-views": "Number of views",
"topic-start-date": "Topic start date",
"username": "Username",
"category": "Category",
"descending": "In descending order",
"ascending": "In ascending order",
"save-preferences": "Save preferences",
"clear-preferences": "Clear preferences",
"search-preferences-saved": "Search preferences saved",
"search-preferences-cleared": "Search preferences cleared",
"show-results-as": "Show results as"
} }

View File

@@ -1,7 +1,7 @@
{ {
"no_tag_topics": "Není zde žádné téma s tímto tagem.", "no_tag_topics": "Není zde žádné téma s tímto tagem.",
"tags": "Tagy", "tags": "Tagy",
"enter_tags_here": "Enter tags here, between %1 and %2 characters each.", "enter_tags_here": "Zde vložte tagy. Po každém vložení tagu zmáčkněte enter.",
"enter_tags_here_short": "Vložte tagy ...", "enter_tags_here_short": "Vložte tagy ...",
"no_tags": "Zatím tu není žádný tag." "no_tags": "Zatím tu není žádný tag."
} }

View File

@@ -5,7 +5,6 @@
"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": "Nebyly nalezeny žádné příspěvky!",
"post_is_deleted": "Tento příspěvek je vymazán!", "post_is_deleted": "Tento příspěvek je vymazán!",
"topic_is_deleted": "This topic 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",
@@ -13,7 +12,6 @@
"notify_me": "Sledovat toto téma", "notify_me": "Sledovat toto téma",
"quote": "Citovat", "quote": "Citovat",
"reply": "Odpovědět", "reply": "Odpovědět",
"guest-login-reply": "Log in to reply",
"edit": "Upravit", "edit": "Upravit",
"delete": "Smazat", "delete": "Smazat",
"purge": "Purge", "purge": "Purge",

View File

@@ -5,6 +5,5 @@
"mark_as_read": "Označit jako přeštené", "mark_as_read": "Označit jako přeštené",
"selected": "Vybrané", "selected": "Vybrané",
"all": "Vše", "all": "Vše",
"all_categories": "All categories",
"topics_marked_as_read.success": "Téma bylo označeno jako přečtené!" "topics_marked_as_read.success": "Téma bylo označeno jako přečtené!"
} }

View File

@@ -6,12 +6,8 @@
"postcount": "Post Count", "postcount": "Post Count",
"email": "Email", "email": "Email",
"confirm_email": "Potvrdit email", "confirm_email": "Potvrdit email",
"ban_account": "Ban Account",
"ban_account_confirm": "Do you really want to ban this user?",
"unban_account": "Unban Account",
"delete_account": "Vymazat účet", "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.", "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.",
"delete_this_account_confirm": "Are you sure you want to delete this account? <br /><strong>This action is irreversible and you will not be able to recover any data</strong><br /><br />",
"fullname": "Jméno a příjmení", "fullname": "Jméno a příjmení",
"website": "Webové stránky", "website": "Webové stránky",
"location": "Poloha", "location": "Poloha",
@@ -25,14 +21,12 @@
"watched": "Watched", "watched": "Watched",
"followers": "Sledují ho", "followers": "Sledují ho",
"following": "Sleduje", "following": "Sleduje",
"aboutme": "About me",
"signature": "Podpis", "signature": "Podpis",
"gravatar": "Gravatar", "gravatar": "Gravatar",
"birthday": "Datum narození", "birthday": "Datum narození",
"chat": "Chat", "chat": "Chat",
"follow": "Follow", "follow": "Follow",
"unfollow": "Unfollow", "unfollow": "Unfollow",
"more": "More",
"profile_update_success": "Profil byl úspěšně aktualizován!", "profile_update_success": "Profil byl úspěšně aktualizován!",
"change_picture": "Změnit obrázek", "change_picture": "Změnit obrázek",
"edit": "Upravit", "edit": "Upravit",
@@ -53,6 +47,7 @@
"upload_picture": "Nahrát obrázek", "upload_picture": "Nahrát obrázek",
"upload_a_picture": "Nahrát obrázek", "upload_a_picture": "Nahrát obrázek",
"image_spec": "You may only upload PNG, JPG, or GIF files", "image_spec": "You may only upload PNG, JPG, or GIF files",
"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", "show_fullname": "Show My Full Name",
@@ -65,24 +60,21 @@
"digest_monthly": "Monthly", "digest_monthly": "Monthly",
"send_chat_notifications": "Send an email if a new chat message arrives and I am not online", "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", "send_post_notifications": "Send an email when replies are made to topics I am subscribed to",
"settings-require-reload": "Some setting changes require a reload. Click here to reload the page.",
"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 hasn't posted anything yet.", "has_no_posts": "This user didn't post anything yet.",
"has_no_topics": "This user hasn't posted any topics yet.", "has_no_topics": "This user didn't post any topics yet.",
"has_no_watched_topics": "This user hasn't watched 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.",
"topics_per_page": "Topics per Page", "topics_per_page": "Topics per Page",
"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", "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", "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_reply_to": "Follow topics that you reply to.",
"follow_topics_you_create": "Follow topics you create", "follow_topics_you_create": "Follow topics you create."
"grouptitle": "Select the group title you would like to display",
"no-group-title": "No group title"
} }

View File

@@ -5,17 +5,8 @@
"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": "%1 user(s) found! Search took %2 seconds.", "users-found-search-took": "Nazelezeno: %1 uživetel(ů)! Vyhledání trvalo %2 ms.",
"filter-by": "Filter By", "filter-by": "Filter By",
"online-only": "Online only", "online-only": "Online only",
"picture-only": "Picture only", "picture-only": "Picture only"
"invite": "Invite",
"invitation-email-sent": "An invitation email has been sent to %1",
"user_list": "User List",
"recent_topics": "Recent Topics",
"popular_topics": "Popular Topics",
"unread_topics": "Unread Topics",
"categories": "Categories",
"tags": "Tags",
"map": "Map"
} }

View File

@@ -1,12 +0,0 @@
{
"new_topic_button": "Nyt emne",
"guest-login-post": "Log ind",
"no_topics": "<strong>Der er ikke nogen nye emner i denne kategori.</strong><br /> Hvorfor prøver du ikke at lave et?",
"browsing": "browse",
"no_replies": "Ingen har svaret",
"share_this_category": "Del denne kategori",
"watch": "Overvåg",
"ignore": "Ignorer",
"watch.message": "Du overvåger nu opdateringer fra denne kategori",
"ignore.message": "Du ignorere nu opdateringer fra denne kategori"
}

View File

@@ -1,32 +0,0 @@
{
"password-reset-requested": "Vi skal anmode dig om at nulstille dit kodeord - %1!",
"welcome-to": "Velkommen til %1",
"invite": "Invitation fra %1",
"greeting_no_name": "Hej",
"greeting_with_name": "Hej %1",
"welcome.text1": "Tak for at du registrerede dig hos %1!",
"welcome.text2": "For at færdiggøre din konto, har vi brug for at verificere at du ejer den email adresse du registerede med.",
"welcome.text3": "En administrator har accepteret din registreringsansøgning. Du kan logge ind med dit brugernavn og adgangskode nu.",
"welcome.cta": "Klik her for at bekræfte din email adresse.",
"invitation.text1": "%1 har inviteret dig til at deltage i %2",
"invitation.ctr": "Klik her for at oprette din konto.",
"reset.text1": "Vi har modtaget en anmodning om at nulstille dit kodeord, måske fordi du har glemt det. Hvis det ikke er tilfældet, venligst ignorer denne email.",
"reset.text2": "For at fortsætte med at nulstille kodeordet, venligst klik på dette link:",
"reset.cta": "Klik her for at nulstille dit kodeord. ",
"reset.notify.subject": "Dit kodeord er nu ændret",
"reset.notify.text1": "Bemærk: %1 gang blev dit kodeord ændret.",
"reset.notify.text2": "Hvis du ikke godkendte dette, kontakt straks en administrator.",
"digest.notifications": "Du har ulæste notifikationer fra %1:",
"digest.latest_topics": "Nyeste emne fra %1",
"digest.cta": "Klik her for at gå til %1",
"digest.unsub.info": "Du har fået tilsendt dette sammendrag pga. indstillingerne i dit abonnement.",
"digest.no_topics": "Der har ikke været nogen aktive emner de/den sidste %1",
"notif.chat.subject": "Ny chat besked modtaget fra %1",
"notif.chat.cta": "Klik her for at forsætte med samtalen",
"notif.chat.unsub.info": "Denne chat notifikation blev sendt til dig pga. indstillingerne i dit abonnement.",
"notif.post.cta": "Klik her for a læse hele emnet",
"notif.post.unsub.info": "Denne indlægs notifikation var sendt pga. dine abonnering indstillinger.",
"test.text1": "Dette er en test email for at kontrollere, at den udgående email server er opsat korrekt i forhold til din NodeBB installation.",
"unsub.cta": "Klik her for at ændre disse indstillinger",
"closing": "Tak!"
}

View File

@@ -1,88 +0,0 @@
{
"invalid-data": "Ugyldig Data",
"not-logged-in": "Det ser ikke ud til at du er logget ind.",
"account-locked": "Din konto er blevet blokeret midlertidigt.",
"search-requires-login": "Du skal have en konto for at søge - log venligst ind eller registrer dig.",
"invalid-cid": "Ugyldig Kategori ID",
"invalid-tid": "Ugyldig Tråd ID",
"invalid-pid": "Ugyldig Indlæg ID",
"invalid-uid": "Ugyldig Bruger ID",
"invalid-username": "Ugyldig Brugernavn",
"invalid-email": "Ugyldig Email",
"invalid-title": "Ugylidt titel",
"invalid-user-data": "Ugyldig Bruger Data",
"invalid-password": "Ugyldig Adgangskode",
"invalid-username-or-password": "Venligst angiv både brugernavn og adgangskode",
"invalid-search-term": "Ugyldig søgeterm",
"invalid-pagination-value": "Ugyldig sidetalsværdi",
"username-taken": "Brugernavn optaget",
"email-taken": "Emailadresse allerede i brug",
"email-not-confirmed": "Din email adresse er ikke blevet bekræftet endnu, venligst klik her for at bekrætige den.",
"email-not-confirmed-chat": "Du kan ikke chatte før din email er bekræftet, klik her for at bekræfte din email.",
"no-email-to-confirm": "Dette forum kræver bekræftelse af din email, klik her for at indtaste en email",
"email-confirm-failed": "Vi kunne ikke bekræfte din email, prøv igen senere.",
"confirm-email-already-sent": "Bekræftelses email er allerede afsendt, vent venligt %1 minut(ter) for at sende endnu en.",
"username-too-short": "Brugernavn er for kort",
"username-too-long": "Brugernavn er for langt",
"user-banned": "Bruger er bortvist",
"user-too-new": "Beklager, du er nødt til at vente %1 sekund(er) før du opretter dit indlæg",
"no-category": "Kategorien eksisterer ikke",
"no-topic": "Tråden eksisterer ikke",
"no-post": "Indlægget eksisterer ikke",
"no-group": "Gruppen eksisterer ikke",
"no-user": "Brugeren eksisterer ikke",
"no-teaser": "Teaser eksisterer ikke",
"no-privileges": "Du har ikke nok rettigheder til at udføre denne handling",
"no-emailers-configured": "Ingen email plugin er blevet indlæst, så en test email kunne ikke sendes",
"category-disabled": "Kategorien er deaktiveret",
"topic-locked": "Tråden er låst",
"post-edit-duration-expired": "Du kan kun redigere indlæg i %1 sekund(er) efter indlæg",
"still-uploading": "Venligst vent til overførslen er færdig",
"content-too-short": "Venligst indtast et længere indlæg. Indlægget skal mindst indeholde %1 karakter(er).",
"content-too-long": "Venligt indtast et kortere indlæg. Indlæg kan ikke være længere end %1 karakter(er).",
"title-too-short": "Venligst indtast en længere titel. Titlen skal mindst indeholde %1 karakter(er).",
"title-too-long": "Venligst indtast en kortere titel. Titlen kan ikke indeholde flere end %1 karakter(er).",
"too-many-posts": "Du kan højest skrive et indlæg hver %1 sekund(er) - venligst vent et øjeblik før næste indlæg",
"too-many-posts-newbie": "Som ny bruger kan du kun skrive et indlæg engang hvert %1. sekund() indtil du har optjent %2 omdømme point - venligst vent et øjeblik før næste indlæg.",
"tag-too-short": "Indtast et længere tag. Tags skal indeholde mindst %1 karakter(er).",
"tag-too-long": "Indtast et længere tag. Tags kan ikke være længere end %1 karakter(er).",
"file-too-big": "Maksimum filstørrelse er %1 kB - venligst overfør en mindre fil",
"cant-vote-self-post": "Du kan ikke stemme på dit eget indlæg",
"already-favourited": "Du har allerede føjet dette indlæg til dine favoritter",
"already-unfavourited": "Du har allerede fjernet dette indlæg fra dine favoritter",
"cant-ban-other-admins": "Du kan ikke udlukke andre administatrorer!",
"cant-remove-last-admin": "Du er den eneste administrator. Tilføj en anden bruger som administrator før du fjerner dig selv som administrator",
"invalid-image-type": "Invalid billed type. De tilladte typer er: %1",
"invalid-image-extension": "Forkert billede filnavnsendelse",
"invalid-file-type": "Invalid fil type. Tilladte typer er: %1",
"group-name-too-short": "Gruppe navn for kort",
"group-already-exists": "Gruppen eksisterer allerede",
"group-name-change-not-allowed": "Ændring af gruppe navn er ikke tilladt",
"group-already-member": "Du er allerede en del af denne gruppe",
"group-needs-owner": "Denne grupper kræver mindst én ejer",
"group-already-invited": "Denne bruger er allerede blevet inviteret",
"group-already-requested": "Din medlemskabs anmodning er allerede blevet afsendt",
"post-already-deleted": "Dette indlæg er allerede blevet slettet",
"post-already-restored": "Dette indlæg er allerede blevet genskabt",
"topic-already-deleted": "Denne tråd er allerede blevet slettet",
"topic-already-restored": "Denne tråd er allerede blevet genskabt",
"cant-purge-main-post": "Du kan ikke udradere hoved indlægget, fjern venligt tråden istedet",
"topic-thumbnails-are-disabled": "Tråd miniaturebilleder er slået fra.",
"invalid-file": "Ugyldig fil",
"uploads-are-disabled": "Overførsel er slået fra",
"signature-too-long": "Beklager, din signatur kan ikke være længere end %1 karakter(er).",
"about-me-too-long": "Beklager, men din om mig side kan ikke være længere end %1 karakter(er).",
"cant-chat-with-yourself": "Du kan ikke chatte med dig selv!",
"chat-restricted": "Denne bruger har spæret adgangen til chat beskeder. Brugeren må følge dig før du kan chatte med ham/hende",
"too-many-messages": "Du har sendt for mange beskeder, vent venligt lidt.",
"reputation-system-disabled": "Vurderingssystem er slået fra.",
"downvoting-disabled": "Nedvurdering er slået fra",
"not-enough-reputation-to-downvote": "Du har ikke nok omdømme til at nedstemme dette indlæg",
"not-enough-reputation-to-flag": "Du har ikke nok omdømme til at vurdere dette indlæg",
"already-flagged": "Du har allerede vurderet dette indlæg",
"reload-failed": "NodeBB stødte på et problem under genindlæsningen : \"%1\". NodeBB vil fortsætte med en ældre version, og det er nok god ide at genoptage fra lige før du genindlæste siden.",
"registration-error": "Registeringsfejl",
"parse-error": "Noget gik galt under fortolknings er serverens respons",
"wrong-login-type-email": "Brug venligt din email til login",
"wrong-login-type-username": "Brug venligt dit brugernavn til login"
}

View File

@@ -1,82 +0,0 @@
{
"home": "Forside",
"search": "Søg",
"buttons.close": "Luk",
"403.title": "Adgang nægtet",
"403.message": "Det ser ud til du er stødt på en side du ikke har adgang til.",
"403.login": "Måske du skulle <a href='%1/login'>prøve og logge ind</a>?",
"404.title": "Ikke fundet",
"404.message": "Det ser ud til du er stødt på en side der ikke finder. Retuner til <a href='%1/'> forsiden</a>.",
"500.title": "Intern fejl.",
"500.message": "Ups! Ser ud til at noget gik galt!",
"register": "Tilmeld",
"login": "Log ind",
"please_log_in": "Venligst log ind",
"logout": "Log ud",
"posting_restriction_info": "Det er i øjeblikket kun muligt at skrive indlæg som registeret medlem, klik her for at logge ind.",
"welcome_back": "Velkommen tilbage",
"you_have_successfully_logged_in": "Du er nu logget ind",
"save_changes": "Gem ændringer",
"close": "Luk",
"pagination": "Sidetal",
"pagination.out_of": "%1 ud af %2",
"pagination.enter_index": "Indtast indeks",
"header.admin": "Administrator",
"header.recent": "Seneste",
"header.unread": "Ulæst",
"header.tags": "Etiket",
"header.popular": "Populære",
"header.users": "Bruger",
"header.groups": "Grupper",
"header.chats": "Chats",
"header.notifications": "Notifikationer",
"header.search": "Søg",
"header.profile": "Profil",
"notifications.loading": "Indlæser notifikationer",
"chats.loading": "Indlæser chats",
"motd.welcome": "Velkommen til NodeBB, fremtidens diskussion platform. ",
"previouspage": "Forrige side",
"nextpage": "Næste side",
"alert.success": "Succes",
"alert.error": "Fejl",
"alert.banned": "Forment adgang",
"alert.banned.message": "Du er lige blevet udelukket, du vil nu blive logget ud.",
"alert.unfollow": "Du følger ikke længere %1!",
"alert.follow": "Du følger nu %1!",
"online": "Online",
"users": "Bruger",
"topics": "Emner",
"posts": "Indlæg",
"views": "Visninger",
"reputation": "Omdømme",
"read_more": "læs mere",
"more": "Mere",
"posted_ago_by_guest": "indsendt %1 af gæst",
"posted_ago_by": "indsendt %1 siden af %2",
"posted_ago": "Indsendt %1 siden",
"posted_in_ago_by_guest": "insendt i %1 %2 siden af gæst",
"posted_in_ago_by": "skrevet i %1 %2 af %3",
"posted_in_ago": "skrivet i %1 %2",
"replied_ago": "svaret for %1",
"user_posted_ago": "%1 skrev for %2",
"guest_posted_ago": "Gæst skrev for %1",
"last_edited_by_ago": "sidst redigeret af %1 for %2",
"norecentposts": "Ingen seneste indlæg",
"norecenttopics": "Ingen seneste tråde",
"recentposts": "Seneste indlæg",
"recentips": "Seneste loggede ind IPer",
"away": "Væk",
"dnd": "Vil ikke forstyres",
"invisible": "Usynlig",
"offline": "Offline",
"email": "Email",
"language": "Sprog",
"guest": "Gæst",
"guests": "Gæster",
"updated.title": "Forum opdateret",
"updated.message": "Dette form er lige blevet opdateret til den seneste version. Klik her for at genindlæse siden.",
"privacy": "Privatliv",
"follow": "Følg",
"unfollow": "Følg ikke længere",
"delete_all": "Slet alt"
}

View File

@@ -1,43 +0,0 @@
{
"groups": "grupper",
"view_group": "se gruppe",
"owner": "Gruppe ejer",
"new_group": "Opret ny gruppe",
"no_groups_found": "Der er ingen grupper at se",
"pending.accept": "Accepter",
"pending.reject": "Afvis",
"pending.accept_all": "Acceptér Alle",
"pending.reject_all": "Afvis Alle",
"pending.none": "Der er ikke nogen afventene medlemmer i øjeblikket",
"invited.none": "Der er ingen inviterede medlemmer i øjeblikket",
"invited.uninvite": "Tilbagetræk invitation",
"invited.search": "Søg efter en bruger at invitere til denne gruppe",
"cover-instructions": "Træk og slip et billede, træk til positionen og tryk <strong>Gem</strong>",
"cover-change": "Ændre",
"cover-save": "Gem",
"cover-saving": "Gemmer",
"details.title": "gruppe detaljer",
"details.members": "liste over medlemmer",
"details.pending": "Verserende medlemmer",
"details.invited": "Inviterede Medlemmer",
"details.has_no_posts": "Medlemmer af denne gruppe har ikke oprettet indlæg.",
"details.latest_posts": "seneste indlæg",
"details.private": "Privat",
"details.grant": "Giv/ophæv ejerskab",
"details.kick": "Spark",
"details.owner_options": "Gruppe administration",
"details.group_name": "Gruppe navn",
"details.member_count": "Medlemsantal",
"details.creation_date": "Oprettelsesdato",
"details.description": "Beskrivelse",
"details.badge_preview": "Mærke forhåndsvisning",
"details.change_icon": "Skift ikon",
"details.change_colour": "Skift farve",
"details.badge_text": "Mærke tekst",
"details.userTitleEnabled": "Vis mærke",
"details.private_help": "Hvis aktiveret, så vil det kræve godkendelse af gruppe ejeren for at tilslutte sig en gruppe",
"details.hidden": "Skjult",
"details.hidden_help": "Hvis aktiveret, så vil denne gruppe ikke kunne ses i gruppelisten og bruhere skal inviteres manuelt",
"event.updated": "Gruppe detaljer er blevet opdateret",
"event.deleted": "Gruppen \"%1\" er blevet slettet"
}

View File

@@ -1,5 +0,0 @@
{
"name": "Danish",
"code": "da",
"dir": "ltr"
}

View File

@@ -1,11 +0,0 @@
{
"username-email": "Brugernavn / Email",
"username": "Brugernavn",
"email": "Email",
"remember_me": "Husk mig?",
"forgot_password": "Glemt kodeord?",
"alternative_logins": "alternative logins",
"failed_login_attempt": "Login mislykkedes, venligt prøv igen.",
"login_successful": "Du har successfuldt logged in!",
"dont_have_account": "Har du ikke en konto?"
}

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