Compare commits

..

2 Commits

Author SHA1 Message Date
Julian Lam
e9b9f090e4 0.2.2 2014-01-16 09:32:41 -05:00
Julian Lam
b82a6fa888 adding accidentally removed upgrade directives to v0.2.x branch 2014-01-16 09:30:18 -05:00
709 changed files with 31161 additions and 30632 deletions

7
.gitignore vendored
View File

@@ -14,14 +14,9 @@ Vagrantfile
.vagrant
provision.sh
*.komodoproject
.DS_Store
feeds/recent.rss
# winston?
error.log
events.log
pidfile
# templates
/public/templates

View File

@@ -1,12 +0,0 @@
services:
- redis-server
before_install:
- npm i --production
- node app --setup="{\"base_url\":\"http://127.0.0.1\",\"port\":4567,\"use_port\":false,\"secret\":\"abcdef\",\"bind_address\":\"0.0.0.0\",\"database\":\"redis\",\"redis:host\":\"127.0.0.1\",\"redis:port\":6379,\"redis:password\":\"\",\"redis:database\":0,\"admin:username\":\"admin\",\"admin:email\":\"test@example.org\",\"admin:password\":\"abcdef\",\"admin:password:confirm\":\"abcdef\"}" --ci="{\"host\":\"127.0.0.1\",\"port\":6379,\"database\":0}"
language: node_js
node_js:
- "0.11"
- "0.10"
branches:
only:
- master

View File

@@ -1,440 +0,0 @@
[main]
host = https://www.transifex.com
[nodebb.category]
file_filter = public/language/<lang>/category.json
source_file = public/language/en_GB/category.json
source_lang = en_GB
trans.ar = public/language/ar/category.json
trans.cs = public/language/cs/category.json
trans.de = public/language/de/category.json
trans.en@pirate = public/language/en@pirate/category.json
trans.es = public/language/es/category.json
trans.et = public/language/et/category.json
trans.fa_IR = public/language/fa_IR/category.json
trans.fi = public/language/fi/category.json
trans.fr = public/language/fr/category.json
trans.he = public/language/he/category.json
trans.hu = public/language/hu/category.json
trans.it = public/language/it/category.json
trans.nb = public/language/nb/category.json
trans.nl = public/language/nl/category.json
trans.pl = public/language/pl/category.json
trans.pt_BR = public/language/pt_BR/category.json
trans.ru = public/language/ru/category.json
trans.sc = public/language/sc/category.json
trans.sk = public/language/sk/category.json
trans.sv = public/language/sv/category.json
trans.th = public/language/th/category.json
trans.tr = public/language/tr/category.json
trans.zh_CN = public/language/zh_CN/category.json
trans.zh_TW = public/language/zh_TW/category.json
type = KEYVALUEJSON
[nodebb.login]
file_filter = public/language/<lang>/login.json
source_file = public/language/en_GB/login.json
source_lang = en_GB
trans.ar = public/language/ar/login.json
trans.cs = public/language/cs/login.json
trans.de = public/language/de/login.json
trans.en@pirate = public/language/en@pirate/login.json
trans.es = public/language/es/login.json
trans.et = public/language/et/login.json
trans.fa_IR = public/language/fa_IR/login.json
trans.fi = public/language/fi/login.json
trans.fr = public/language/fr/login.json
trans.he = public/language/he/login.json
trans.hu = public/language/hu/login.json
trans.it = public/language/it/login.json
trans.nb = public/language/nb/login.json
trans.nl = public/language/nl/login.json
trans.pl = public/language/pl/login.json
trans.pt_BR = public/language/pt_BR/login.json
trans.ru = public/language/ru/login.json
trans.sc = public/language/sc/login.json
trans.sk = public/language/sk/login.json
trans.sv = public/language/sv/login.json
trans.th = public/language/th/login.json
trans.tr = public/language/tr/login.json
trans.zh_CN = public/language/zh_CN/login.json
trans.zh_TW = public/language/zh_TW/login.json
type = KEYVALUEJSON
[nodebb.recent]
source_file = public/language/en_GB/recent.json
source_lang = en_GB
trans.ar = public/language/ar/recent.json
trans.cs = public/language/cs/recent.json
trans.de = public/language/de/recent.json
trans.en@pirate = public/language/en@pirate/recent.json
trans.es = public/language/es/recent.json
trans.et = public/language/et/recent.json
trans.fa_IR = public/language/fa_IR/recent.json
trans.fi = public/language/fi/recent.json
trans.fr = public/language/fr/recent.json
trans.he = public/language/he/recent.json
trans.hu = public/language/hu/recent.json
trans.it = public/language/it/recent.json
trans.nb = public/language/nb/recent.json
trans.nl = public/language/nl/recent.json
trans.pl = public/language/pl/recent.json
trans.pt_BR = public/language/pt_BR/recent.json
trans.ru = public/language/ru/recent.json
trans.sc = public/language/sc/recent.json
trans.sk = public/language/sk/recent.json
trans.sv = public/language/sv/recent.json
trans.th = public/language/th/recent.json
trans.tr = public/language/tr/recent.json
trans.zh_CN = public/language/zh_CN/recent.json
trans.zh_TW = public/language/zh_TW/recent.json
type = KEYVALUEJSON
[nodebb.unread]
source_file = public/language/en_GB/unread.json
source_lang = en_GB
trans.ar = public/language/ar/unread.json
trans.cs = public/language/cs/unread.json
trans.de = public/language/de/unread.json
trans.en@pirate = public/language/en@pirate/unread.json
trans.es = public/language/es/unread.json
trans.et = public/language/et/unread.json
trans.fa_IR = public/language/fa_IR/unread.json
trans.fi = public/language/fi/unread.json
trans.fr = public/language/fr/unread.json
trans.he = public/language/he/unread.json
trans.hu = public/language/hu/unread.json
trans.it = public/language/it/unread.json
trans.nb = public/language/nb/unread.json
trans.nl = public/language/nl/unread.json
trans.pl = public/language/pl/unread.json
trans.pt_BR = public/language/pt_BR/unread.json
trans.ru = public/language/ru/unread.json
trans.sc = public/language/sc/unread.json
trans.sk = public/language/sk/unread.json
trans.sv = public/language/sv/unread.json
trans.th = public/language/th/unread.json
trans.tr = public/language/tr/unread.json
trans.zh_CN = public/language/zh_CN/unread.json
trans.zh_TW = public/language/zh_TW/unread.json
type = KEYVALUEJSON
[nodebb.footer]
source_file = public/language/en_GB/footer.json
source_lang = en_GB
trans.ar = public/language/ar/footer.json
trans.cs = public/language/cs/footer.json
trans.de = public/language/de/footer.json
trans.en@pirate = public/language/en@pirate/footer.json
trans.es = public/language/es/footer.json
trans.et = public/language/et/footer.json
trans.fa_IR = public/language/fa_IR/footer.json
trans.fi = public/language/fi/footer.json
trans.fr = public/language/fr/footer.json
trans.he = public/language/he/footer.json
trans.hu = public/language/hu/footer.json
trans.it = public/language/it/footer.json
trans.nb = public/language/nb/footer.json
trans.nl = public/language/nl/footer.json
trans.pl = public/language/pl/footer.json
trans.pt_BR = public/language/pt_BR/footer.json
trans.ru = public/language/ru/footer.json
trans.sc = public/language/sc/footer.json
trans.sk = public/language/sk/footer.json
trans.sv = public/language/sv/footer.json
trans.th = public/language/th/footer.json
trans.tr = public/language/tr/footer.json
trans.zh_CN = public/language/zh_CN/footer.json
trans.zh_TW = public/language/zh_TW/footer.json
type = KEYVALUEJSON
[nodebb.modules]
source_file = public/language/en_GB/modules.json
source_lang = en_GB
trans.ar = public/language/ar/modules.json
trans.cs = public/language/cs/modules.json
trans.de = public/language/de/modules.json
trans.en@pirate = public/language/en@pirate/modules.json
trans.es = public/language/es/modules.json
trans.et = public/language/et/modules.json
trans.fa_IR = public/language/fa_IR/modules.json
trans.fi = public/language/fi/modules.json
trans.fr = public/language/fr/modules.json
trans.he = public/language/he/modules.json
trans.hu = public/language/hu/modules.json
trans.it = public/language/it/modules.json
trans.nb = public/language/nb/modules.json
trans.nl = public/language/nl/modules.json
trans.pl = public/language/pl/modules.json
trans.pt_BR = public/language/pt_BR/modules.json
trans.ru = public/language/ru/modules.json
trans.sc = public/language/sc/modules.json
trans.sk = public/language/sk/modules.json
trans.sv = public/language/sv/modules.json
trans.th = public/language/th/modules.json
trans.tr = public/language/tr/modules.json
trans.zh_CN = public/language/zh_CN/modules.json
trans.zh_TW = public/language/zh_TW/modules.json
type = KEYVALUEJSON
[nodebb.register]
source_file = public/language/en_GB/register.json
source_lang = en_GB
trans.ar = public/language/ar/register.json
trans.cs = public/language/cs/register.json
trans.de = public/language/de/register.json
trans.en@pirate = public/language/en@pirate/register.json
trans.es = public/language/es/register.json
trans.et = public/language/et/register.json
trans.fa_IR = public/language/fa_IR/register.json
trans.fi = public/language/fi/register.json
trans.fr = public/language/fr/register.json
trans.he = public/language/he/register.json
trans.hu = public/language/hu/register.json
trans.it = public/language/it/register.json
trans.nb = public/language/nb/register.json
trans.nl = public/language/nl/register.json
trans.pl = public/language/pl/register.json
trans.pt_BR = public/language/pt_BR/register.json
trans.ru = public/language/ru/register.json
trans.sc = public/language/sc/register.json
trans.sk = public/language/sk/register.json
trans.sv = public/language/sv/register.json
trans.th = public/language/th/register.json
trans.tr = public/language/tr/register.json
trans.zh_CN = public/language/zh_CN/register.json
trans.zh_TW = public/language/zh_TW/register.json
type = KEYVALUEJSON
[nodebb.user]
source_file = public/language/en_GB/user.json
source_lang = en_GB
trans.ar = public/language/ar/user.json
trans.cs = public/language/cs/user.json
trans.de = public/language/de/user.json
trans.en@pirate = public/language/en@pirate/user.json
trans.es = public/language/es/user.json
trans.et = public/language/et/user.json
trans.fa_IR = public/language/fa_IR/user.json
trans.fi = public/language/fi/user.json
trans.fr = public/language/fr/user.json
trans.he = public/language/he/user.json
trans.hu = public/language/hu/user.json
trans.it = public/language/it/user.json
trans.nb = public/language/nb/user.json
trans.nl = public/language/nl/user.json
trans.pl = public/language/pl/user.json
trans.pt_BR = public/language/pt_BR/user.json
trans.ru = public/language/ru/user.json
trans.sc = public/language/sc/user.json
trans.sk = public/language/sk/user.json
trans.sv = public/language/sv/user.json
trans.th = public/language/th/user.json
trans.tr = public/language/tr/user.json
trans.zh_CN = public/language/zh_CN/user.json
trans.zh_TW = public/language/zh_TW/user.json
type = KEYVALUEJSON
[nodebb.global]
source_file = public/language/en_GB/global.json
source_lang = en_GB
trans.ar = public/language/ar/global.json
trans.cs = public/language/cs/global.json
trans.de = public/language/de/global.json
trans.en@pirate = public/language/en@pirate/global.json
trans.es = public/language/es/global.json
trans.et = public/language/et/global.json
trans.fa_IR = public/language/fa_IR/global.json
trans.fi = public/language/fi/global.json
trans.fr = public/language/fr/global.json
trans.he = public/language/he/global.json
trans.hu = public/language/hu/global.json
trans.it = public/language/it/global.json
trans.nb = public/language/nb/global.json
trans.nl = public/language/nl/global.json
trans.pl = public/language/pl/global.json
trans.pt_BR = public/language/pt_BR/global.json
trans.ru = public/language/ru/global.json
trans.sc = public/language/sc/global.json
trans.sk = public/language/sk/global.json
trans.sv = public/language/sv/global.json
trans.th = public/language/th/global.json
trans.tr = public/language/tr/global.json
trans.zh_CN = public/language/zh_CN/global.json
trans.zh_TW = public/language/zh_TW/global.json
type = KEYVALUEJSON
[nodebb.notifications]
source_file = public/language/en_GB/notifications.json
source_lang = en_GB
trans.ar = public/language/ar/notifications.json
trans.cs = public/language/cs/notifications.json
trans.de = public/language/de/notifications.json
trans.en@pirate = public/language/en@pirate/notifications.json
trans.es = public/language/es/notifications.json
trans.et = public/language/et/notifications.json
trans.fa_IR = public/language/fa_IR/notifications.json
trans.fi = public/language/fi/notifications.json
trans.fr = public/language/fr/notifications.json
trans.he = public/language/he/notifications.json
trans.hu = public/language/hu/notifications.json
trans.it = public/language/it/notifications.json
trans.nb = public/language/nb/notifications.json
trans.nl = public/language/nl/notifications.json
trans.pl = public/language/pl/notifications.json
trans.pt_BR = public/language/pt_BR/notifications.json
trans.ru = public/language/ru/notifications.json
trans.sc = public/language/sc/notifications.json
trans.sk = public/language/sk/notifications.json
trans.sv = public/language/sv/notifications.json
trans.th = public/language/th/notifications.json
trans.tr = public/language/tr/notifications.json
trans.zh_CN = public/language/zh_CN/notifications.json
trans.zh_TW = public/language/zh_TW/notifications.json
type = KEYVALUEJSON
[nodebb.reset_password]
source_file = public/language/en_GB/reset_password.json
source_lang = en_GB
trans.ar = public/language/ar/reset_password.json
trans.cs = public/language/cs/reset_password.json
trans.de = public/language/de/reset_password.json
trans.en@pirate = public/language/en@pirate/reset_password.json
trans.es = public/language/es/reset_password.json
trans.et = public/language/et/reset_password.json
trans.fa_IR = public/language/fa_IR/reset_password.json
trans.fi = public/language/fi/reset_password.json
trans.fr = public/language/fr/reset_password.json
trans.he = public/language/he/reset_password.json
trans.hu = public/language/hu/reset_password.json
trans.it = public/language/it/reset_password.json
trans.nb = public/language/nb/reset_password.json
trans.nl = public/language/nl/reset_password.json
trans.pl = public/language/pl/reset_password.json
trans.pt_BR = public/language/pt_BR/reset_password.json
trans.ru = public/language/ru/reset_password.json
trans.sc = public/language/sc/reset_password.json
trans.sk = public/language/sk/reset_password.json
trans.sv = public/language/sv/reset_password.json
trans.th = public/language/th/reset_password.json
trans.tr = public/language/tr/reset_password.json
trans.zh_CN = public/language/zh_CN/reset_password.json
trans.zh_TW = public/language/zh_TW/reset_password.json
type = KEYVALUEJSON
[nodebb.users]
source_file = public/language/en_GB/users.json
source_lang = en_GB
trans.ar = public/language/ar/users.json
trans.cs = public/language/cs/users.json
trans.de = public/language/de/users.json
trans.en@pirate = public/language/en@pirate/users.json
trans.es = public/language/es/users.json
trans.et = public/language/et/users.json
trans.fa_IR = public/language/fa_IR/users.json
trans.fi = public/language/fi/users.json
trans.fr = public/language/fr/users.json
trans.he = public/language/he/users.json
trans.hu = public/language/hu/users.json
trans.it = public/language/it/users.json
trans.nb = public/language/nb/users.json
trans.nl = public/language/nl/users.json
trans.pl = public/language/pl/users.json
trans.pt_BR = public/language/pt_BR/users.json
trans.ru = public/language/ru/users.json
trans.sc = public/language/sc/users.json
trans.sk = public/language/sk/users.json
trans.sv = public/language/sv/users.json
trans.th = public/language/th/users.json
trans.tr = public/language/tr/users.json
trans.zh_CN = public/language/zh_CN/users.json
trans.zh_TW = public/language/zh_TW/users.json
type = KEYVALUEJSON
[nodebb.language]
source_file = public/language/en_GB/language.json
source_lang = en_GB
trans.ar = public/language/ar/language.json
trans.cs = public/language/cs/language.json
trans.de = public/language/de/language.json
trans.en@pirate = public/language/en@pirate/language.json
trans.es = public/language/es/language.json
trans.et = public/language/et/language.json
trans.fa_IR = public/language/fa_IR/language.json
trans.fi = public/language/fi/language.json
trans.fr = public/language/fr/language.json
trans.he = public/language/he/language.json
trans.hu = public/language/hu/language.json
trans.it = public/language/it/language.json
trans.nb = public/language/nb/language.json
trans.nl = public/language/nl/language.json
trans.pl = public/language/pl/language.json
trans.pt_BR = public/language/pt_BR/language.json
trans.ru = public/language/ru/language.json
trans.sc = public/language/sc/language.json
trans.sk = public/language/sk/language.json
trans.sv = public/language/sv/language.json
trans.th = public/language/th/language.json
trans.tr = public/language/tr/language.json
trans.zh_CN = public/language/zh_CN/language.json
trans.zh_TW = public/language/zh_TW/language.json
type = KEYVALUEJSON
[nodebb.pages]
source_file = public/language/en_GB/pages.json
source_lang = en_GB
trans.ar = public/language/ar/pages.json
trans.cs = public/language/cs/pages.json
trans.de = public/language/de/pages.json
trans.en@pirate = public/language/en@pirate/pages.json
trans.es = public/language/es/pages.json
trans.et = public/language/et/pages.json
trans.fa_IR = public/language/fa_IR/pages.json
trans.fi = public/language/fi/pages.json
trans.fr = public/language/fr/pages.json
trans.he = public/language/he/pages.json
trans.hu = public/language/hu/pages.json
trans.it = public/language/it/pages.json
trans.nb = public/language/nb/pages.json
trans.nl = public/language/nl/pages.json
trans.pl = public/language/pl/pages.json
trans.pt_BR = public/language/pt_BR/pages.json
trans.ru = public/language/ru/pages.json
trans.sc = public/language/sc/pages.json
trans.sk = public/language/sk/pages.json
trans.sv = public/language/sv/pages.json
trans.th = public/language/th/pages.json
trans.tr = public/language/tr/pages.json
trans.zh_CN = public/language/zh_CN/pages.json
trans.zh_TW = public/language/zh_TW/pages.json
type = KEYVALUEJSON
[nodebb.topic]
source_file = public/language/en_GB/topic.json
source_lang = en_GB
trans.ar = public/language/ar/topic.json
trans.cs = public/language/cs/topic.json
trans.de = public/language/de/topic.json
trans.en@pirate = public/language/en@pirate/topic.json
trans.es = public/language/es/topic.json
trans.et = public/language/et/topic.json
trans.fa_IR = public/language/fa_IR/topic.json
trans.fi = public/language/fi/topic.json
trans.fr = public/language/fr/topic.json
trans.he = public/language/he/topic.json
trans.hu = public/language/hu/topic.json
trans.it = public/language/it/topic.json
trans.nb = public/language/nb/topic.json
trans.nl = public/language/nl/topic.json
trans.pl = public/language/pl/topic.json
trans.pt_BR = public/language/pt_BR/topic.json
trans.ru = public/language/ru/topic.json
trans.sc = public/language/sc/topic.json
trans.sk = public/language/sk/topic.json
trans.sv = public/language/sv/topic.json
trans.th = public/language/th/topic.json
trans.tr = public/language/tr/topic.json
trans.zh_CN = public/language/zh_CN/topic.json
trans.zh_TW = public/language/zh_TW/topic.json
type = KEYVALUEJSON

View File

@@ -1,4 +0,0 @@
## Sound Assets
* "Waterdrop" by [Porphyr](freesound.org/people/Porphyr) / [CC BY 3.0](creativecommons.org/licenses/by/3.0)
* "SweetAlertSound2.wav" by [KIZILSUNGUR](http://www.freesound.org/people/KIZILSUNGUR/) / [Public Domain / CC 0](http://creativecommons.org/publicdomain/zero/1.0/)

View File

@@ -1,15 +0,0 @@
## 0.4x Refactor Notes
Please remove this file after 0.4x (or perhaps organize it so that we can see the history of breaking changes)
### Immediate Deprecation Notices
* `action:ajaxifying` is no longer triggered on body but on window instead, in line with other similar hooks.
* `filter:server.create_routes` and `filter:admin.create_routes` will have limited support (ajaxify works, but first-load will not). Please have a look at [this plugin](https://github.com/psychobunny/nodebb-plugin-kitchen-sink/blob/master/library.js#L16-L22) for an example on how to create routes in plugins from now on.
### Upcoming Deprecation Warnings
* `filter:footer.build` will be deprecated for 0.4x in favour of the widget system (WIP)
* templates.setGlobal (server-side only) deprecated in favour of using res.locals
* `plugins/fireHook` route will be deprecated for 0.4x
* synchronous hooks will be deprecated for 0.4x - we're reducing complexity by removing the `callbacked: true` property in `plugin.json` - just use callbacks.

View File

@@ -1,57 +1,69 @@
# <img alt="NodeBB" src="http://i.imgur.com/3yj1n6N.png" />
[![Build Status](https://travis-ci.org/designcreateplay/NodeBB.svg?branch=master)](https://travis-ci.org/designcreateplay/NodeBB)
[![Dependency Status](https://david-dm.org/designcreateplay/nodebb.png)](https://david-dm.org/designcreateplay/nodebb)
[![Code Climate](https://codeclimate.com/github/designcreateplay/NodeBB.png)](https://codeclimate.com/github/designcreateplay/NodeBB)
# NodeBB
**NodeBB** is a robust Node.js driven forum built on a redis database. It is powered by web sockets, and is compatible down to IE8.
**NodeBB Forum Software** is powered by Node.js and built on a Redis database. It utilizes web sockets for instant interactions and real-time notifications. NodeBB is compatible down to IE8 and has many modern features out of the box such as social network integration and streaming discussions.
* [Get NodeBB](http://www.nodebb.org/ "NodeBB")
* [Demo & Meta Discussion](http://community.nodebb.org)
* [NodeBB Blog](http://blog.nodebb.org)
* [NodeBB Homepage](http://www.nodebb.org/ "NodeBB")
* [Demo & Meta Discussion](http://try.nodebb.org)
* [Wiki Guides](https://github.com/designcreateplay/NodeBB/wiki) - includes setup for other platforms
* [Join us on IRC](https://kiwiirc.com/client/irc.freenode.net/nodebb) - #nodebb on Freenode
* [Follow on Twitter](http://www.twitter.com/NodeBB/ "NodeBB Twitter")
* [Like us on Facebook](http://www.facebook.com/NodeBB/ "NodeBB Facebook")
* [Get Plugins](http://community.nodebb.org/category/7/nodebb-plugins "NodeBB Plugins")
* [Get Themes](http://community.nodebb.org/category/10/nodebb-themes "NodeBB Themes")
## Screenshots
[<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/8vc1Ytc.png" />](http://i.imgur.com/8vc1Ytc.png)
Credit: [Convoe](http://www.convoe.com), [Kano](http://www.kano.me), [Manchester United Forum](http://manutdforums.com/).
![NodeBB Main Category Listing](http://i.imgur.com/zRdzCcj.png)
![NodeBB Topic Page](http://i.imgur.com/ZC8W39a.png)
## How can I follow along/contribute?
* Our feature roadmap is hosted on the project wiki's [Version History / Roadmap](https://github.com/designcreateplay/NodeBB/wiki/Version-History-%26-Roadmap)
* If you are a developer, feel free to check out the source and submit pull requests. We also have a wide array of [plugins](http://community.nodebb.org/category/7/nodebb-plugins) which would be a great starting point for learning the codebase.
* If you are a designer, [NodeBB needs themes](http://community.nodebb.org/category/10/nodebb-themes)! NodeBB's theming system allows extention of the base templates as well as styling via LESS or CSS. NodeBB's base theme utilizes [Bootstrap 3](http://getbootstrap.com/) but themes can choose to use a different framework altogether.
* Please don't forget to **like**, **follow**, and **star our repo**! Join our growing [community](http://community.nodebb.org) to keep up to date with the latest NodeBB development.
* If you are a developer, feel free to check out the source and submit pull requests.
* If you are a designer, NodeBB needs themes! NodeBB will accept any LESS or CSS file and use it in place of the default Twitter Bootstrap theme. Consider extending Bootstrap themes by extending the base bootstrap LESS file.
## Requirements
NodeBB requires the following software to be installed:
* A version of Node.js at least 0.10 or greater
* Redis, version 2.6 or greater **or** MongoDB, version 2.4 or greater
* A version of Node.js at least 0.8 or greater
* Redis, version 2.6 or greater or MongoDB, version 2.4 or greater
* nginx, version 1.3.13 or greater (**only if** intending to use nginx to proxy requests to a NodeBB)
## Installation
[Please refer to platform-specific installation documentation](https://github.com/designcreateplay/NodeBB/wiki#wiki-installing-nodebb)
First, we install our base software stack:
## Securing NodeBB
# apt-get install git nodejs redis-server npm build-essential imagemagick
It is important to ensure that your NodeBB and database servers are secured. Bear these points in mind:
If you want to use MongoDB instead of Redis install it from http://www.mongodb.org/downloads and remove 'redis-server' from the above command. [MongoDB-Setup](https://github.com/designcreateplay/NodeBB/wiki/MongoDB-Setup)
1. While some distributions set up Redis with a more restrictive configuration, Redis by default listens to all interfaces, which is especially dangerous when a server is open to the public. Some suggestions:
* Set `bind_address` to `127.0.0.1` so as to restrict access to the local machine only
* Use `requirepass` to secure Redis behind a password (preferably a long one)
* Familiarise yourself with [Redis Security](http://redis.io/topics/security)
2. Use `iptables` to secure your server from unintended open ports. In Ubuntu, `ufw` provides a friendlier interface to working with `iptables`.
* e.g. If your NodeBB is proxied, no ports should be open except 80 (and possibly 22, for SSH access)
**If your package manager only installed a version of Node.js that is less than 0.8 (e.g. Ubuntu 12.10, 13.04):**
# add-apt-repository ppa:chris-lea/node.js
# apt-get update && apt-get dist-upgrade
Next, clone this repository:
$ cd /path/to/nodebb/install/location
$ git clone git://github.com/designcreateplay/NodeBB.git nodebb
Obtain all of the dependencies required by NodeBB:
$ cd nodebb
$ npm install
Initiate the setup script by running the app with the `--setup` flag:
$ node app --setup
The default settings are for a local server running on the default port, with a redis store on the same machine/port.
Lastly, we run the forum.
$ node app
NodeBB can also be started with helper programs, such as `supervisor` and `forever`. [Take a look at the options here](https://github.com/designcreateplay/NodeBB/wiki/How-to-run-NodeBB).
*(Optional)* Some server configurations may install the node binary as `nodejs` instead of `node`. You can re-map it (so as to not break compatibility with `node-supervisor`) by running the following command:
# update-alternatives --install /usr/bin/node node /usr/bin/nodejs 10
## Upgrading NodeBB

426
app.js
View File

@@ -16,294 +16,166 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
(function () {
"use strict";
"use strict";
// Configuration setup
var nconf = require('nconf');
nconf.argv().env();
var nconf = require('nconf');
nconf.argv().env();
var fs = require('fs'),
async = require('async'),
semver = require('semver'),
winston = require('winston'),
path = require('path'),
pkg = require('./package.json'),
utils = require('./public/src/utils.js'),
meta;
var fs = require('fs'),
os = require('os'),
semver = require('semver'),
winston = require('winston'),
path = require('path'),
pkg = require('./package.json'),
utils = require('./public/src/utils.js');
// Runtime environment
global.env = process.env.NODE_ENV || 'production';
winston.remove(winston.transports.Console);
winston.add(winston.transports.Console, {
colorize: true
});
global.env = process.env.NODE_ENV || 'production';
winston.add(winston.transports.File, {
filename: 'error.log',
level: 'error'
});
winston.remove(winston.transports.Console);
winston.add(winston.transports.Console, {
colorize: true
});
// TODO: remove once https://github.com/flatiron/winston/issues/280 is fixed
winston.err = function (err) {
winston.error(err.stack);
};
winston.add(winston.transports.File, {
filename: 'logs/error.log',
level: 'error'
});
// TODO: remove once https://github.com/flatiron/winston/issues/280 is fixed
winston.err = function (err) {
winston.error(err.stack);
};
if(os.platform() === 'linux') {
require('child_process').exec('/usr/bin/which convert', function(err, stdout, stderr) {
if(err || !stdout) {
winston.warn('Couldn\'t find convert. Did you install imagemagick?');
}
});
}
// Log GNU copyright info along with server info
winston.info('NodeBB v' + pkg.version + ' Copyright (C) 2013 DesignCreatePlay Inc.');
winston.info('This program comes with ABSOLUTELY NO WARRANTY.');
winston.info('This is free software, and you are welcome to redistribute it under certain conditions.');
winston.info('');
// Alternate configuration file support
var configFile = __dirname + '/config.json',
configExists;
if (nconf.get('config')) {
configFile = path.resolve(__dirname, nconf.get('config'));
}
configExists = fs.existsSync(configFile);
if (!nconf.get('help') && !nconf.get('setup') && !nconf.get('install') && !nconf.get('upgrade') && !nconf.get('reset') && configExists) {
start();
} else if (nconf.get('setup') || nconf.get('install') || !configExists) {
setup();
} else if (nconf.get('upgrade')) {
upgrade();
} else if (nconf.get('reset')) {
reset();
} else {
displayHelp();
}
function loadConfig() {
nconf.file({
file: configFile
});
nconf.defaults({
base_dir: __dirname,
themes_path: path.join(__dirname, 'node_modules'),
upload_url: path.join(path.sep, 'uploads', path.sep),
views_dir: path.join(__dirname, 'public/templates')
});
// Ensure themes_path is a full filepath
nconf.set('themes_path', path.resolve(__dirname, nconf.get('themes_path')));
}
function start() {
loadConfig();
winston.info('Time: ' + new Date());
winston.info('Initializing NodeBB v' + pkg.version);
winston.info('* using configuration stored in: ' + configFile);
var host = nconf.get(nconf.get('database') + ':host');
winston.info('* using ' + nconf.get('database') +' store at ' + host + (host.indexOf('/') === -1 ? ':' + nconf.get(nconf.get('database') + ':port') : ''));
winston.info('* using themes stored in: ' + nconf.get('themes_path'));
if (process.env.NODE_ENV === 'development') {
winston.info('Base Configuration OK.');
}
var meta = require('./src/meta');
require('./src/database').init(function(err) {
meta.configs.init(function () {
var templates = require('./public/src/templates'),
translator = require('./public/src/translator'),
webserver = require('./src/webserver'),
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) {
sockets.init(webserver.server);
plugins.init();
translator.loadServer();
nconf.set('url', nconf.get('base_url') + (nconf.get('use_port') ? ':' + nconf.get('port') : '') + nconf.get('relative_path'));
nconf.set('base_templates_path', path.join(nconf.get('themes_path'), 'nodebb-theme-vanilla/templates'));
nconf.set('theme_templates_path', meta.config['theme:templates'] ? path.join(nconf.get('themes_path'), meta.config['theme:id'], meta.config['theme:templates']) : nconf.get('base_templates_path'));
plugins.ready(function() {
webserver.init();
});
process.on('SIGTERM', shutdown);
process.on('SIGINT', shutdown);
process.on('SIGHUP', restart);
} else {
winston.warn('Your NodeBB schema is out-of-date. Please run the following command to bring your dataset up to spec:');
winston.warn(' node app --upgrade');
winston.warn('To ignore this error (not recommended):');
winston.warn(' node app --no-check-schema');
process.exit();
}
});
});
});
}
function setup() {
loadConfig();
if (nconf.get('setup')) {
winston.info('NodeBB Setup Triggered via Command Line');
} else {
winston.warn('Configuration not found, starting NodeBB setup');
}
var install = require('./src/install');
winston.info('Welcome to NodeBB!');
winston.info('This looks like a new installation, so you\'ll have to answer a few questions about your environment before we can proceed.');
winston.info('Press enter to accept the default setting (shown in brackets).');
install.setup(function (err) {
if (err) {
winston.error('There was a problem completing NodeBB setup: ', err.message);
} else {
winston.info('NodeBB Setup Completed. Run \'./nodebb start\' to manually start your NodeBB server.');
}
process.exit();
});
}
function upgrade() {
loadConfig();
var meta = require('./src/meta');
require('./src/database').init(function(err) {
meta.configs.init(function () {
require('./src/upgrade').upgrade();
});
});
}
function reset() {
loadConfig();
require('./src/database').init(function(err) {
if (err) {
winston.error(err.message);
process.exit();
}
if (nconf.get('themes')) {
resetThemes();
} else if (nconf.get('plugins')) {
resetPlugins();
} else if (nconf.get('widgets')) {
resetWidgets();
} else if (nconf.get('settings')) {
resetSettings();
} else if (nconf.get('all')) {
require('async').series([resetWidgets, resetThemes, resetPlugins, resetSettings], function(err) {
if (!err) {
winston.info('[reset] Reset complete.');
} else {
winston.error('[reset] Errors were encountered while resetting your forum settings: ' + err.message);
}
process.exit();
});
} else {
console.log('no match');
}
});
}
function resetSettings(callback) {
var meta = require('./src/meta');
meta.configs.set('allowLocalLogin', 1, function(err) {
winston.info('[reset] Settings reset to default');
if (typeof callback === 'function') {
callback(err);
} else {
process.exit();
}
});
}
function resetThemes(callback) {
var meta = require('./src/meta');
meta.themes.set({
type: 'local',
id: 'nodebb-theme-vanilla'
}, function(err) {
winston.info('[reset] Theme reset to Vanilla');
if (typeof callback === 'function') {
callback(err);
} else {
process.exit();
}
});
}
function resetPlugins(callback) {
var db = require('./src/database');
db.delete('plugins:active', function(err) {
winston.info('[reset] All Plugins De-activated');
if (typeof callback === 'function') {
callback(err);
} else {
process.exit();
}
});
}
function resetWidgets(callback) {
require('./src/widgets').reset(function(err) {
winston.info('[reset] All Widgets moved to Draft Zone');
if (typeof callback === 'function') {
callback(err);
} else {
process.exit();
}
});
}
function shutdown(code) {
winston.info('[app] Shutdown (SIGTERM/SIGINT) Initialised.');
require('./src/database').close();
winston.info('[app] Database connection closed.');
winston.info('[app] Shutdown complete.');
process.exit();
}
function restart() {
if (process.send) {
winston.info('[app] Restarting...');
process.send({
action: 'restart'
});
} else {
winston.error('[app] Could not restart server. Shutting down.');
shutdown();
}
}
function displayHelp() {
winston.info('Usage: node app [options] [arguments]');
winston.info(' [NODE_ENV=development | NODE_ENV=production] node app [--start] [arguments]');
// Log GNU copyright info along with server info
winston.info('NodeBB v' + pkg.version + ' Copyright (C) 2013 DesignCreatePlay Inc.');
winston.info('This program comes with ABSOLUTELY NO WARRANTY.');
winston.info('This is free software, and you are welcome to redistribute it under certain conditions.');
winston.info('');
winston.info('Options:');
winston.info(' --help displays this usage information');
winston.info(' --setup configure your environment and setup NodeBB');
winston.info(' --upgrade upgrade NodeBB, first read: github.com/designcreateplay/NodeBB/wiki/Upgrading-NodeBB');
winston.info(' --reset soft resets NodeBB; disables all plugins and restores selected theme to Vanilla');
winston.info(' --start manually start NodeBB (default when no options are given)');
}
if (!nconf.get('help') && !nconf.get('setup') && !nconf.get('install') && !nconf.get('upgrade') && fs.existsSync(__dirname + '/config.json')) {
// Load server-side configs
nconf.file({
file: __dirname + '/config.json'
});
meta = require('./src/meta');
nconf.set('url', nconf.get('base_url') + (nconf.get('use_port') ? ':' + nconf.get('port') : '') + nconf.get('relative_path') + path.sep);
nconf.set('upload_url', path.join(path.sep, nconf.get('relative_path'), 'uploads', path.sep));
nconf.set('base_dir', __dirname);
winston.info('Initializing NodeBB v' + pkg.version + ', on port ' + nconf.get('port') + ', using Redis store at ' + nconf.get('redis:host') + ':' + nconf.get('redis:port') + '.');
winston.info('NodeBB instance bound to: ' + ((nconf.get('bind_address') === "0.0.0.0" || !nconf.get('bind_address')) ? 'Any address (0.0.0.0)' : nconf.get('bind_address')));
if (process.env.NODE_ENV === 'development') {
winston.info('Base Configuration OK.');
}
if (semver.gt(pkg.dependencies['nodebb-theme-cerulean'], require('./node_modules/nodebb-theme-cerulean/package.json').version)) {
winston.error('nodebb-theme-cerulean is out of date - please run npm install.')
}
require('./src/database').init(function(err) {
meta.configs.init(function () {
var templates = require('./public/src/templates'),
translator = require('./public/src/translator'),
webserver = require('./src/webserver'),
SocketIO = require('socket.io').listen(global.server, { log: false, transports: ['websocket', 'xhr-polling', 'jsonp-polling', 'flashsocket'], 'browser client minification': true}),
websockets = require('./src/websockets'),
plugins = require('./src/plugins'),
notifications = require('./src/notifications'),
upgrade = require('./src/upgrade');
upgrade.check(function(schema_ok) {
if (schema_ok || nconf.get('check-schema') === false) {
websockets.init(SocketIO);
plugins.init();
global.templates = {};
global.translator = translator;
translator.loadServer();
var customTemplates = meta.config['theme:templates'] ? path.join(__dirname, 'node_modules', meta.config['theme:id'], meta.config['theme:templates']) : false;
utils.walk(path.join(__dirname, 'public/templates'), function (err, tplsToLoad) {
templates.init(tplsToLoad, customTemplates);
});
plugins.ready(function() {
templates.ready(webserver.init);
});
notifications.init();
} else {
winston.warn('Your NodeBB schema is out-of-date. Please run the following command to bring your dataset up to spec:');
winston.warn(' node app --upgrade');
winston.warn('To ignore this error (not recommended):');
winston.warn(' node app --no-check-schema')
process.exit();
}
});
});
});
} else if (nconf.get('setup') || nconf.get('install') || !fs.existsSync(__dirname + '/config.json')) {
// New install, ask setup questions
if (nconf.get('setup')) {
winston.info('NodeBB Setup Triggered via Command Line');
} else {
winston.warn('Configuration not found, starting NodeBB setup');
}
nconf.file({
file: __dirname + '/config.json'
});
var install = require('./src/install');
winston.info('Welcome to NodeBB!');
winston.info('This looks like a new installation, so you\'ll have to answer a few questions about your environment before we can proceed.');
winston.info('Press enter to accept the default setting (shown in brackets).');
install.setup(function (err) {
if (err) {
winston.error('There was a problem completing NodeBB setup: ', err.message);
} else {
winston.info('NodeBB Setup Completed. Run \'node app\' to manually start your NodeBB server.');
}
process.exit();
});
} else if (nconf.get('upgrade')) {
nconf.file({
file: __dirname + '/config.json'
});
require('./src/database').init(function(err) {
meta = require('./src/meta.js');
meta.configs.init(function () {
require('./src/upgrade').upgrade();
});
});
} else/* if (nconf.get('help') */{
winston.info('Usage: node app [options] [arguments]');
winston.info(' [NODE_ENV=development | NODE_ENV=production] node app [--start] [arguments]');
winston.info('');
winston.info('Options:');
winston.info(' --help displays this usage information');
winston.info(' --setup configure your environment and setup NodeBB');
winston.info(' --upgrade upgrade NodeBB, first read: github.com/designcreateplay/NodeBB/wiki/Upgrading-NodeBB');
winston.info(' --start manually start NodeBB (default when no options are given)');
};
}());

1
feeds/categories/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
*.rss

1
feeds/topics/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
*.rss

View File

@@ -1,86 +0,0 @@
"use strict";
var nconf = require('nconf'),
fs = require('fs'),
pidFilePath = __dirname + '/pidfile',
start = function() {
var fork = require('child_process').fork,
nbb_start = function() {
nbb = fork('./app', process.argv.slice(2), {
env: {
'NODE_ENV': process.env.NODE_ENV
}
});
nbb.on('message', function(message) {
if (message && typeof message === 'object' && message.action) {
if (message.action === 'restart') {
nbb_restart();
}
}
});
nbb.on('exit', function(code, signal) {
if (code) {
nbb_start();
} else {
nbb_stop();
}
});
},
nbb_stop = function() {
nbb.kill();
if (fs.existsSync(pidFilePath)) {
var pid = parseInt(fs.readFileSync(pidFilePath, { encoding: 'utf-8' }), 10);
if (process.pid === pid) {
fs.unlinkSync(pidFilePath);
}
}
},
nbb_restart = function() {
nbb.on('exit', function() {
nbb_start();
});
nbb.kill();
};
process.on('SIGINT', nbb_stop);
process.on('SIGTERM', nbb_stop);
process.on('SIGHUP', nbb_restart);
nbb_start();
},
nbb;
nconf.argv();
// Start the daemon!
if (nconf.get('d')) {
// Check for a still-active NodeBB process
if (fs.existsSync(pidFilePath)) {
try {
var pid = fs.readFileSync(pidFilePath, { encoding: 'utf-8' });
process.kill(pid, 0);
console.log('\n Error: Another NodeBB is already running!');
process.exit();
} catch (e) {
fs.unlinkSync(pidFilePath);
}
}
// Initialise logging streams
var outputStream = fs.createWriteStream(__dirname + '/logs/output.log');
outputStream.on('open', function(fd) {
// Daemonize
require('daemon')({
stdout: fd
});
// Write its pid to a pidfile
fs.writeFile(__dirname + '/pidfile', process.pid);
start();
});
} else {
start();
}

1
logs/.gitignore vendored
View File

@@ -1 +0,0 @@
*.log

View File

@@ -1,58 +0,0 @@
var uglifyjs = require('uglify-js'),
less = require('less'),
async = require('async'),
fs = require('fs'),
Minifier = {
js: {},
css: {}
};
/* Javascript */
Minifier.js.minify = function (scripts, callback) {
try {
var minified = uglifyjs.minify(scripts);
callback(minified.code);
} catch(err) {
process.send({
action: 'error',
error: err
});
}
};
Minifier.js.concatenate = function(scripts, callback) {
async.map(scripts, function(path, next) {
fs.readFile(path, { encoding: 'utf-8' }, next);
}, function(err, contents) {
if (err) {
process.send({
action: 'error',
error: err
});
} else {
callback(contents.reduce(function(output, src) {
return output.length ? output + ';\n' + src : src;
}, ''));
}
});
};
process.on('message', function(payload) {
var executeCallback = function(data) {
process.send({
action: payload.action,
data: data
});
};
switch(payload.action) {
case 'js.minify':
Minifier.js.minify(payload.scripts, executeCallback);
break;
case 'js.concatenate':
Minifier.js.concatenate(payload.scripts, executeCallback);
break;
}
})

View File

@@ -14,12 +14,6 @@
nconf.file({ file: path.join(__dirname, '../config.json') });
nconf.defaults({
base_dir: path.join(__dirname,'..'),
themes_path: path.join(__dirname, '../node_modules'),
upload_url: path.join(path.sep, '../uploads', path.sep),
views_dir: path.join(__dirname, '../public/templates')
});
var dbType = nconf.get('database'),
testDbConfig = nconf.get('test_database'),
@@ -32,17 +26,17 @@
"Please, add parameters for test database in config.json\n"+
"For example (redis):\n"+
'"test_database": {' + '\n' +
' "host": "127.0.0.1",' + '\n' +
' "port": "6379",' + '\n' +
' "password": "",' + '\n' +
' "database": "1"' + '\n' +
' "host": "127.0.0.1",' + '\n' +
' "port": "6379",' + '\n' +
' "password": "",' + '\n' +
' "database": "1"' + '\n' +
'}\n'+
" or (mongo):\n" +
'"test_database": {' + '\n' +
' "host": "127.0.0.1",' + '\n' +
' "port": "27017",' + '\n' +
' "password": "",' + '\n' +
' "database": "1"' + '\n' +
' "host": "127.0.0.1",' + '\n' +
' "port": "27017",' + '\n' +
' "password": "",' + '\n' +
' "database": "1"' + '\n' +
'}\n'+
"==========================================================="
);
@@ -61,31 +55,23 @@
nconf.set(dbType, testDbConfig);
var db = require('../src/database'),
meta = require('../src/meta');
db = require('../src/database');
before(function(done) {
db.init(function(err) {
//Clean up
db.flushdb(function(err) {
if(err) {
if(err){
winston.error(err);
throw new Error(err);
} else {
winston.info('test_database flushed');
done();
}
winston.info('test_database flushed');
//TODO: data seeding, if needed at all
meta.configs.init(function () {
nconf.set('url', nconf.get('base_url') + (nconf.get('use_port') ? ':' + nconf.get('port') : '') + nconf.get('relative_path'));
nconf.set('base_templates_path', path.join(nconf.get('themes_path'), 'nodebb-theme-vanilla/templates'));
nconf.set('theme_templates_path', meta.config['theme:templates'] ? path.join(nconf.get('themes_path'), meta.config['theme:id'], meta.config['theme:templates']) : nconf.get('base_templates_path'));
var webserver = require('../src/webserver'),
sockets = require('../src/socket.io');
sockets.init(webserver.server);
done();
});
});
});
});

106
nodebb
View File

@@ -4,109 +4,51 @@
# $1 action
# $2 subaction
function pidExists() {
if [ -e "pidfile" ];
then
kill -s 0 $(cat pidfile);
if [ !$? ];
then return 1;
else return 0;
fi
else
return 0;
fi
}
case "$1" in
start)
echo "Starting NodeBB";
echo " \"./nodebb stop\" to stop the NodeBB server";
echo " \"./nodebb log\" to view server output";
if [ -f "./logs/output.log" ]; # Preserve the last output log
then
mv ./logs/output.log ./logs/output.1.log;
fi;
# Start the loader daemon
node loader -d "$@"
;;
stop)
echo "Stopping NodeBB. Goodbye!";
kill $(cat pidfile);
;;
reload|restart)
echo "Restarting NodeBB.";
kill -1 $(cat pidfile);
;;
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
node loader --upgrade
touch package.json
echo -e "\n\e[00;32mNodeBB Dependencies up-to-date!\e[00;00m";
;;
setup)
node loader --setup "$@"
;;
reset)
node loader --reset --$2
node app
;;
dev)
echo "Launching NodeBB in \"development\" mode."
echo "To run the production build of NodeBB, please use \"forever\"."
echo "More Information: https://github.com/designcreateplay/NodeBB/wiki/How-to-run-NodeBB"
NODE_ENV=development node loader "$@"
NODE_ENV=development node app
;;
watch)
echo "Launching NodeBB in \"development\" mode."
echo "To run the production build of NodeBB, please use \"forever\"."
echo "More Information: https://github.com/designcreateplay/NodeBB/wiki/How-to-run-NodeBB"
NODE_ENV=development supervisor -q --ignore public/templates --extensions 'node|js|tpl' -- app "$@"
NODE_ENV=development supervisor -q --extensions 'node|js|tpl' -- app $1
;;
language)
case "$2" in
check)
node app --language="check"
;;
*)
echo "Language Settings"
echo $"Usage: $0 language {check}"
echo ''
column -s ' ' -t <<< '
check Compare language files against the /en directory
'
;;
esac
;;
*)
echo "Welcome to NodeBB"
echo $"Usage: $0 {start|stop|reload|restart|log|setup|reset|upgrade|dev|watch}"
echo $"Usage: $0 {start|dev|watch|language}"
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
start Start NodeBB in production mode
dev Start NodeBB in development mode
watch Start NodeBB in development mode and watch for changes
language Language settings
'
exit 1
esac

843
npm-shrinkwrap.json generated
View File

@@ -1,843 +0,0 @@
{
"name": "nodebb",
"version": "0.4.1",
"dependencies": {
"async": {
"version": "0.2.10",
"from": "async@~0.2.8"
},
"bcryptjs": {
"version": "0.7.12",
"from": "bcryptjs@~0.7.10"
},
"connect-mongo": {
"version": "0.4.0",
"from": "connect-mongo@0.4.0",
"resolved": "https://registry.npmjs.org/connect-mongo/-/connect-mongo-0.4.0.tgz"
},
"connect-redis": {
"version": "1.4.5",
"from": "connect-redis@1.4.5",
"dependencies": {
"redis": {
"version": "0.7.3",
"from": "redis@0.7.x",
"resolved": "https://registry.npmjs.org/redis/-/redis-0.7.3.tgz"
},
"debug": {
"version": "0.8.0",
"from": "debug@*"
}
}
},
"cron": {
"version": "1.0.4",
"from": "cron@~1.0.4"
},
"daemon": {
"version": "1.1.0",
"from": "daemon@~1.1.0"
},
"express": {
"version": "3.2.0",
"from": "express@3.2.0",
"resolved": "https://registry.npmjs.org/express/-/express-3.2.0.tgz",
"dependencies": {
"connect": {
"version": "2.7.6",
"from": "connect@2.7.6",
"dependencies": {
"qs": {
"version": "0.5.1",
"from": "qs@0.5.1"
},
"formidable": {
"version": "1.0.11",
"from": "formidable@1.0.11"
},
"buffer-crc32": {
"version": "0.1.1",
"from": "buffer-crc32@0.1.1"
},
"bytes": {
"version": "0.2.0",
"from": "bytes@0.2.0"
},
"pause": {
"version": "0.0.1",
"from": "pause@0.0.1"
}
}
},
"commander": {
"version": "0.6.1",
"from": "commander@0.6.1"
},
"range-parser": {
"version": "0.0.4",
"from": "range-parser@0.0.4"
},
"cookie": {
"version": "0.0.5",
"from": "cookie@0.0.5"
},
"buffer-crc32": {
"version": "0.2.1",
"from": "buffer-crc32@~0.2.1"
},
"fresh": {
"version": "0.1.0",
"from": "fresh@0.1.0"
},
"methods": {
"version": "0.0.1",
"from": "methods@0.0.1"
},
"send": {
"version": "0.1.0",
"from": "send@0.1.0",
"dependencies": {
"mime": {
"version": "1.2.6",
"from": "mime@1.2.6",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.2.6.tgz"
}
}
},
"cookie-signature": {
"version": "1.0.1",
"from": "cookie-signature@1.0.1"
},
"debug": {
"version": "0.8.0",
"from": "debug@*"
}
}
},
"express-namespace": {
"version": "0.1.1",
"from": "express-namespace@~0.1.1",
"dependencies": {
"methods": {
"version": "0.0.1",
"from": "methods@0.0.1"
}
}
},
"gm": {
"version": "1.14.2",
"from": "gm@1.14.2",
"resolved": "https://registry.npmjs.org/gm/-/gm-1.14.2.tgz",
"dependencies": {
"debug": {
"version": "0.7.0",
"from": "debug@0.7.0"
},
"array-series": {
"version": "0.1.5",
"from": "array-series@~0.1.0"
},
"array-parallel": {
"version": "0.1.3",
"from": "array-parallel@~0.1.0"
},
"stream-to-buffer": {
"version": "0.0.1",
"from": "stream-to-buffer@~0.0.1"
},
"through": {
"version": "2.3.4",
"from": "through@~2.3.1"
}
}
},
"gravatar": {
"version": "1.0.6",
"from": "gravatar@1.0.6"
},
"hiredis": {
"version": "0.1.16",
"from": "hiredis@~0.1.15",
"dependencies": {
"bindings": {
"version": "1.2.0",
"from": "bindings@*"
}
}
},
"less": {
"version": "1.6.3",
"from": "less@~1.6.3",
"dependencies": {
"mime": {
"version": "1.2.11",
"from": "mime@1.2.x"
},
"request": {
"version": "2.34.0",
"from": "request@>=2.12.0",
"dependencies": {
"qs": {
"version": "0.6.6",
"from": "qs@~0.6.0"
},
"json-stringify-safe": {
"version": "5.0.0",
"from": "json-stringify-safe@~5.0.0"
},
"forever-agent": {
"version": "0.5.2",
"from": "forever-agent@~0.5.0"
},
"node-uuid": {
"version": "1.4.1",
"from": "node-uuid@~1.4.0"
},
"tough-cookie": {
"version": "0.12.1",
"from": "tough-cookie@>=0.12.0",
"dependencies": {
"punycode": {
"version": "1.2.4",
"from": "punycode@>=0.2.0"
}
}
},
"form-data": {
"version": "0.1.2",
"from": "form-data@~0.1.0",
"dependencies": {
"combined-stream": {
"version": "0.0.4",
"from": "combined-stream@~0.0.4",
"dependencies": {
"delayed-stream": {
"version": "0.0.5",
"from": "delayed-stream@0.0.5"
}
}
}
}
},
"tunnel-agent": {
"version": "0.3.0",
"from": "tunnel-agent@~0.3.0"
},
"http-signature": {
"version": "0.10.0",
"from": "http-signature@~0.10.0",
"dependencies": {
"assert-plus": {
"version": "0.1.2",
"from": "assert-plus@0.1.2"
},
"asn1": {
"version": "0.1.11",
"from": "asn1@0.1.11"
},
"ctype": {
"version": "0.5.2",
"from": "ctype@0.5.2"
}
}
},
"oauth-sign": {
"version": "0.3.0",
"from": "oauth-sign@~0.3.0"
},
"hawk": {
"version": "1.0.0",
"from": "hawk@~1.0.0",
"dependencies": {
"hoek": {
"version": "0.9.1",
"from": "hoek@0.9.x"
},
"boom": {
"version": "0.4.2",
"from": "boom@0.4.x"
},
"cryptiles": {
"version": "0.2.2",
"from": "cryptiles@0.2.x"
},
"sntp": {
"version": "0.2.4",
"from": "sntp@0.2.x"
}
}
},
"aws-sign2": {
"version": "0.5.0",
"from": "aws-sign2@~0.5.0"
}
}
},
"clean-css": {
"version": "2.0.8",
"from": "clean-css@2.0.x",
"dependencies": {
"commander": {
"version": "2.0.0",
"from": "commander@2.0.x"
}
}
},
"source-map": {
"version": "0.1.33",
"from": "source-map@0.1.x",
"dependencies": {
"amdefine": {
"version": "0.1.0",
"from": "amdefine@>=0.0.4"
}
}
}
}
},
"marked": {
"version": "0.2.8",
"from": "marked@0.2.8"
},
"mkdirp": {
"version": "0.3.5",
"from": "mkdirp@~0.3.5"
},
"mongodb": {
"version": "1.3.23",
"from": "mongodb@~1.3.19",
"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-1.3.23.tgz",
"dependencies": {
"bson": {
"version": "0.2.5",
"from": "bson@0.2.5",
"resolved": "https://registry.npmjs.org/bson/-/bson-0.2.5.tgz"
},
"kerberos": {
"version": "0.0.3",
"from": "kerberos@0.0.3",
"resolved": "https://registry.npmjs.org/kerberos/-/kerberos-0.0.3.tgz"
}
}
},
"nconf": {
"version": "0.6.9",
"from": "nconf@~0.6.7",
"dependencies": {
"async": {
"version": "0.2.9",
"from": "async@0.2.9",
"resolved": "https://registry.npmjs.org/async/-/async-0.2.9.tgz"
},
"ini": {
"version": "1.1.0",
"from": "ini@1.x.x"
},
"optimist": {
"version": "0.6.0",
"from": "optimist@0.6.0",
"dependencies": {
"wordwrap": {
"version": "0.0.2",
"from": "wordwrap@~0.0.2"
},
"minimist": {
"version": "0.0.8",
"from": "minimist@~0.0.1"
}
}
}
}
},
"nodebb-plugin-markdown": {
"version": "0.4.1",
"from": "nodebb-plugin-markdown@~0.4.1",
"dependencies": {
"marked": {
"version": "0.2.10",
"from": "marked@~0.2.9"
},
"pygmentize-bundled": {
"version": "2.1.0",
"from": "pygmentize-bundled@~2.1.0",
"dependencies": {
"readable-stream": {
"version": "1.0.26-4",
"from": "readable-stream@~1.0.17",
"dependencies": {
"core-util-is": {
"version": "1.0.1",
"from": "core-util-is@~1.0.0"
},
"isarray": {
"version": "0.0.1",
"from": "isarray@0.0.1"
},
"string_decoder": {
"version": "0.10.25-1",
"from": "string_decoder@~0.10.x"
},
"inherits": {
"version": "2.0.1",
"from": "inherits@~2.0.1"
}
}
},
"bl": {
"version": "0.4.2",
"from": "bl@~0.4.1"
},
"through2": {
"version": "0.2.3",
"from": "through2@~0.2.1",
"dependencies": {
"readable-stream": {
"version": "1.1.12",
"from": "readable-stream@~1.1.9",
"dependencies": {
"core-util-is": {
"version": "1.0.1",
"from": "core-util-is@~1.0.0"
},
"isarray": {
"version": "0.0.1",
"from": "isarray@0.0.1"
},
"string_decoder": {
"version": "0.10.25-1",
"from": "string_decoder@~0.10.x"
},
"inherits": {
"version": "2.0.1",
"from": "inherits@^2.0.1"
}
}
},
"xtend": {
"version": "2.1.2",
"from": "xtend@~2.1.1",
"dependencies": {
"object-keys": {
"version": "0.4.0",
"from": "object-keys@~0.4.0"
}
}
}
}
}
}
}
}
},
"nodebb-plugin-mentions": {
"version": "0.4.1-2",
"from": "nodebb-plugin-mentions@~0.4.0"
},
"nodebb-theme-lavender": {
"version": "0.0.25-4",
"from": "nodebb-theme-lavender@~0.0.25"
},
"nodebb-theme-vanilla": {
"version": "0.0.19-13",
"from": "nodebb-theme-vanilla@~0.0.19"
},
"nodebb-widget-essentials": {
"version": "0.0.21-1",
"from": "nodebb-widget-essentials@~0.0.21",
"dependencies": {
"marked": {
"version": "0.3.2",
"from": "marked@^0.3.2"
}
}
},
"passport": {
"version": "0.2.0",
"from": "passport@~0.2.0",
"dependencies": {
"passport-strategy": {
"version": "1.0.0",
"from": "passport-strategy@1.x.x"
},
"pause": {
"version": "0.0.1",
"from": "pause@0.0.1"
}
}
},
"passport-local": {
"version": "0.1.6",
"from": "passport-local@0.1.6",
"dependencies": {
"pkginfo": {
"version": "0.2.3",
"from": "pkginfo@0.2.x"
},
"passport": {
"version": "0.1.18",
"from": "passport@~0.1.1",
"dependencies": {
"pause": {
"version": "0.0.1",
"from": "pause@0.0.1"
}
}
}
}
},
"prompt": {
"version": "0.2.12",
"from": "prompt@~0.2.11",
"dependencies": {
"pkginfo": {
"version": "0.3.0",
"from": "pkginfo@0.x.x"
},
"read": {
"version": "1.0.5",
"from": "read@1.0.x",
"dependencies": {
"mute-stream": {
"version": "0.0.4",
"from": "mute-stream@~0.0.4"
}
}
},
"revalidator": {
"version": "0.1.6",
"from": "revalidator@0.1.x"
},
"utile": {
"version": "0.2.1",
"from": "utile@0.2.x",
"dependencies": {
"deep-equal": {
"version": "0.2.1",
"from": "deep-equal@*"
},
"i": {
"version": "0.3.2",
"from": "i@0.3.x"
},
"ncp": {
"version": "0.4.2",
"from": "ncp@0.4.x"
}
}
},
"winston": {
"version": "0.6.2",
"from": "winston@0.6.x",
"dependencies": {
"async": {
"version": "0.1.22",
"from": "async@0.1.x"
},
"colors": {
"version": "0.6.2",
"from": "colors@0.x.x"
},
"cycle": {
"version": "1.0.3",
"from": "cycle@1.0.x"
},
"eyes": {
"version": "0.1.8",
"from": "eyes@0.1.x"
},
"pkginfo": {
"version": "0.2.3",
"from": "pkginfo@0.2.x"
},
"request": {
"version": "2.9.203",
"from": "request@2.9.x"
},
"stack-trace": {
"version": "0.0.9",
"from": "stack-trace@0.0.x"
}
}
}
}
},
"redis": {
"version": "0.8.3",
"from": "redis@0.8.3",
"resolved": "https://registry.npmjs.org/redis/-/redis-0.8.3.tgz"
},
"reds": {
"version": "0.2.4",
"from": "reds@~0.2.4",
"dependencies": {
"natural": {
"version": "0.1.17",
"from": "natural@0.1.17",
"dependencies": {
"sylvester": {
"version": "0.0.21",
"from": "sylvester@>= 0.0.12"
},
"apparatus": {
"version": "0.0.8",
"from": "apparatus@>= 0.0.6"
}
}
},
"redis": {
"version": "0.7.2",
"from": "redis@0.7.2",
"resolved": "https://registry.npmjs.org/redis/-/redis-0.7.2.tgz"
}
}
},
"rimraf": {
"version": "2.2.6",
"from": "rimraf@~2.2.6"
},
"rss": {
"version": "0.2.1",
"from": "rss@~0.2.0",
"dependencies": {
"xml": {
"version": "0.0.12",
"from": "xml@~0.0.4"
},
"mime": {
"version": "1.2.11",
"from": "mime@~1.2.11"
}
}
},
"semver": {
"version": "2.2.1",
"from": "semver@~2.2.1"
},
"sitemap": {
"version": "0.7.2",
"from": "sitemap@~0.7.1"
},
"socket.io": {
"version": "0.9.16",
"from": "socket.io@~0.9.16",
"dependencies": {
"socket.io-client": {
"version": "0.9.16",
"from": "socket.io-client@0.9.16",
"dependencies": {
"uglify-js": {
"version": "1.2.5",
"from": "uglify-js@1.2.5"
},
"ws": {
"version": "0.4.31",
"from": "ws@0.4.x",
"dependencies": {
"commander": {
"version": "0.6.1",
"from": "commander@~0.6.1"
},
"nan": {
"version": "0.3.2",
"from": "nan@~0.3.0"
},
"tinycolor": {
"version": "0.0.1",
"from": "tinycolor@0.x"
},
"options": {
"version": "0.0.5",
"from": "options@>=0.0.5"
}
}
},
"xmlhttprequest": {
"version": "1.4.2",
"from": "xmlhttprequest@1.4.2"
},
"active-x-obfuscator": {
"version": "0.0.1",
"from": "active-x-obfuscator@0.0.1",
"dependencies": {
"zeparser": {
"version": "0.0.5",
"from": "zeparser@0.0.5"
}
}
}
}
},
"policyfile": {
"version": "0.0.4",
"from": "policyfile@0.0.4"
},
"base64id": {
"version": "0.1.0",
"from": "base64id@0.1.0"
},
"redis": {
"version": "0.7.3",
"from": "redis@0.7.x",
"resolved": "https://registry.npmjs.org/redis/-/redis-0.7.3.tgz"
}
}
},
"socket.io-wildcard": {
"version": "0.1.1",
"from": "socket.io-wildcard@~0.1.1"
},
"string": {
"version": "1.7.0",
"from": "string@~1.7.0"
},
"uglify-js": {
"version": "2.4.13",
"from": "uglify-js@~2.4.0",
"dependencies": {
"source-map": {
"version": "0.1.33",
"from": "source-map@~0.1.33",
"dependencies": {
"amdefine": {
"version": "0.1.0",
"from": "amdefine@>=0.0.4"
}
}
},
"optimist": {
"version": "0.3.7",
"from": "optimist@~0.3.5",
"dependencies": {
"wordwrap": {
"version": "0.0.2",
"from": "wordwrap@~0.0.2"
}
}
},
"uglify-to-browserify": {
"version": "1.0.2",
"from": "uglify-to-browserify@~1.0.0"
}
}
},
"underscore": {
"version": "1.6.0",
"from": "underscore@~1.6.0"
},
"validator": {
"version": "3.4.0",
"from": "validator@~3.4.0",
"resolved": "https://registry.npmjs.org/validator/-/validator-3.4.0.tgz"
},
"winston": {
"version": "0.7.3",
"from": "winston@~0.7.2",
"dependencies": {
"colors": {
"version": "0.6.2",
"from": "colors@0.6.x"
},
"cycle": {
"version": "1.0.3",
"from": "cycle@1.0.x"
},
"eyes": {
"version": "0.1.8",
"from": "eyes@0.1.x"
},
"pkginfo": {
"version": "0.3.0",
"from": "pkginfo@0.3.x"
},
"request": {
"version": "2.16.6",
"from": "request@2.16.x",
"dependencies": {
"form-data": {
"version": "0.0.10",
"from": "form-data@~0.0.3",
"dependencies": {
"combined-stream": {
"version": "0.0.4",
"from": "combined-stream@~0.0.4",
"dependencies": {
"delayed-stream": {
"version": "0.0.5",
"from": "delayed-stream@0.0.5"
}
}
}
}
},
"mime": {
"version": "1.2.11",
"from": "mime@~1.2.7"
},
"hawk": {
"version": "0.10.2",
"from": "hawk@~0.10.2",
"dependencies": {
"hoek": {
"version": "0.7.6",
"from": "hoek@0.7.x"
},
"boom": {
"version": "0.3.8",
"from": "boom@0.3.x"
},
"cryptiles": {
"version": "0.1.3",
"from": "cryptiles@0.1.x"
},
"sntp": {
"version": "0.1.4",
"from": "sntp@0.1.x"
}
}
},
"node-uuid": {
"version": "1.4.1",
"from": "node-uuid@~1.4.0"
},
"cookie-jar": {
"version": "0.2.0",
"from": "cookie-jar@~0.2.0"
},
"aws-sign": {
"version": "0.2.0",
"from": "aws-sign@~0.2.0"
},
"oauth-sign": {
"version": "0.2.0",
"from": "oauth-sign@~0.2.0"
},
"forever-agent": {
"version": "0.2.0",
"from": "forever-agent@~0.2.0"
},
"tunnel-agent": {
"version": "0.2.0",
"from": "tunnel-agent@~0.2.0"
},
"json-stringify-safe": {
"version": "3.0.0",
"from": "json-stringify-safe@~3.0.0"
},
"qs": {
"version": "0.5.6",
"from": "qs@~0.5.4"
}
}
},
"stack-trace": {
"version": "0.0.9",
"from": "stack-trace@0.0.x"
}
}
},
"xregexp": {
"version": "2.0.0",
"from": "xregexp@~2.0.0"
}
}
}

View File

@@ -2,7 +2,7 @@
"name": "nodebb",
"license": "GPLv3 or later",
"description": "NodeBB Forum",
"version": "0.4.1",
"version": "0.2.2",
"homepage": "http://www.nodebb.org",
"repository": {
"type": "git",
@@ -10,51 +10,49 @@
},
"main": "app.js",
"scripts": {
"start": "./nodebb start",
"stop": "./nodebb stop",
"test": "mocha ./tests -t 10000"
"test": "mocha ./tests"
},
"dependencies": {
"socket.io": "~0.9.16",
"express": "3.2.0",
"express-namespace": "~0.1.1",
"passport": "~0.2.0",
"emailjs": "0.3.4",
"cookie": "0.0.6",
"passport": "0.1.17",
"passport-local": "0.1.6",
"passport-twitter": "0.1.5",
"passport-google-oauth": "0.1.5",
"passport-facebook": "0.1.5",
"less-middleware": "0.1.12",
"marked": "0.2.8",
"bcrypt": "0.7.5",
"async": "~0.2.8",
"gm": "1.14.2",
"node-imagemagick": "0.1.8",
"gravatar": "1.0.6",
"nconf": "~0.6.7",
"sitemap": "~0.7.1",
"sitemap": "~0.6.0",
"request": "~2.25.0",
"reds": "~0.2.4",
"winston": "~0.7.2",
"rss": "~0.2.0",
"prompt": "~0.2.11",
"uglify-js": "~2.4.0",
"validator": "~3.4.0",
"cron": "~1.0.4",
"validator": "~1.5.1",
"nodebb-plugin-mentions": "~0.1",
"nodebb-plugin-markdown": "~0.3",
"nodebb-theme-vanilla": "~0.0.12",
"nodebb-theme-cerulean": "0.0.10",
"cron": "~1.0.1",
"semver": "~2.2.1",
"string": "~1.7.0",
"xregexp": "~2.0.0",
"socket.io-wildcard": "~0.1.1",
"bcryptjs": "~0.7.10",
"nodebb-plugin-mentions": "~0.4.0",
"nodebb-plugin-markdown": "~0.4.1",
"nodebb-widget-essentials": "~0.0.21",
"nodebb-theme-vanilla": "~0.0.19",
"nodebb-theme-lavender": "~0.0.25",
"less": "~1.6.3",
"daemon": "~1.1.0",
"underscore": "~1.6.0",
"mkdirp": "~0.3.5",
"rimraf": "~2.2.6"
"xregexp": "~2.0.0"
},
"optionalDependencies": {
"redis": "0.8.3",
"hiredis": "~0.1.15",
"connect-redis": "1.4.5",
"mongodb": "~1.3.19",
"connect-mongo": "0.4.0"
"connect-redis": "1.4.5",
"connect-mongo": "0.4.0",
"hiredis": "~0.1.15"
},
"devDependencies": {
"mocha": "~1.13.0"
@@ -65,7 +63,7 @@
"engines": {
"node": ">=0.8"
},
"maintainers": [
"contributors": [
{
"name": "Andrew Rodrigues",
"email": "andrew@designcreateplay.com",
@@ -80,6 +78,22 @@
"name": "Barış Soner Uşaklı",
"email": "baris@designcreateplay.com",
"url": "https://github.com/barisusakli"
},
{
"name": "Andrew Darqui",
"url": "https://github.com/adarqui"
},
{
"name": "Damian Bushong",
"url": "https://github.com/damianb"
},
{
"name": "Matt Smith",
"url": "https://github.com/soimafreak"
},
{
"name": "Quinton Marchi",
"url": "https://github.com/iamcardinal"
}
]
}

View File

@@ -1,12 +0,0 @@
{
"new_topic_button": "موضوع جديد",
"no_topics": "<strong>لا توجد مواضيع في هذه الفئة</strong>لماذا لا تحاول نشر واحد؟<br />",
"posts": "مشاركات",
"views": "مشاهدات",
"posted": "نشر",
"browsing": "يتصفح",
"no_replies": "لم يرد أحد",
"replied": "رد",
"last_edited_by": "تغيرت أخيراً عبر",
"share_this_category": "Share this category"
}

View File

@@ -1,7 +0,0 @@
{
"stats.online": "حالياً على الموقع",
"stats.users": "مستخدمين",
"stats.topics": "مواضيع",
"stats.posts": "مشاركات",
"success": "نجاح"
}

View File

@@ -1,55 +0,0 @@
{
"home": "الصفحة الرئيسية",
"search": "بحث",
"buttons.close": "أغلق",
"403.title": "غير مسموح بالدخول",
"403.message": "يبدو أنك قد تعثر على الصفحة التي لم يكن لديك الوصول إليها. ربما يجب عليك <a href='/login'> تسجيل الدخول </a> ",
"404.title": "لم يتم العثور",
"404.message": "يبدو أنك قد تعثرت على صفحة غير موجودة. عودة إلى الصفحة الرئيسية.",
"500.title": "خطأ داخلي.",
"500.message": "عفوا! يبدو وكأنه شيء ذهب على نحو خاطئ!",
"register": "تسجيل",
"login": "دخول",
"please_log_in": "Please Log In",
"logout": "تسجيل الخروج",
"posting_restriction_info": "Posting is currently restricted to registered members only, click here to log in.",
"welcome_back": "Welcome Back ",
"you_have_successfully_logged_in": "You have successfully logged in",
"save_changes": "حفظ التغييرات",
"close": "أغلق",
"pagination": "Pagination",
"header.admin": "مشرف",
"header.recent": "حديث",
"header.unread": "غير مقروء",
"header.popular": "Popular",
"header.users": "المستخدمين",
"header.chats": "Chats",
"header.notifications": "Notifications",
"header.search": "بحث",
"header.profile": "ملف",
"notifications.loading": "تحميل التبليغات",
"chats.loading": "تحميل الدردشات",
"motd.welcome": "مرحبا بكم NodeBB، منصة مناقشة المستقبل",
"previouspage": "Previous Page",
"nextpage": "Next Page",
"alert.success": "Success",
"alert.error": "Error",
"alert.banned": "Banned",
"alert.banned.message": "You are banned you will be logged out!",
"alert.unfollow": "You are no longer following %1!",
"alert.follow": "You are now following %1!",
"posts": "Posts",
"views": "Views",
"posted": "posted",
"in": "in",
"norecentposts": "No Recent Posts",
"norecenttopics": "No Recent Topics",
"recentposts": "Recent Posts",
"recentips": "Recently Logged In IPs",
"online": "Online",
"away": "Away",
"dnd": "Do not Disturb",
"invisible": "Invisible",
"offline": "Offline",
"privacy": "Privacy"
}

View File

@@ -1,5 +0,0 @@
{
"name": "العربية",
"code": "ar",
"dir": "rtl"
}

View File

@@ -1,10 +0,0 @@
{
"login": "دخول",
"username": "Username / Email",
"password": "كلمة السر",
"remember_me": "تذكرني؟",
"forgot_password": "نسيت كلمة المرور؟",
"alternative_logins": "تسجيلات الدخول البديلة",
"failed_login_attempt": "فشلت محاولة تسجيل الدخول، يرجى المحاولة مرة أخرى.",
"login_successful": "قمت بتسجيل الدخول بنجاح!"
}

View File

@@ -1,6 +0,0 @@
{
"chat.chatting_with": "الدردشة مع <span id=\"chat-with-name\"></span>",
"chat.placeholder": "اكتب رسالة دردشة هنا، وإضغط ENTER لإرسال",
"chat.send": "أرسل",
"chat.no_active": "لا يوجد لديك دردشات نشطة."
}

View File

@@ -1,10 +0,0 @@
{
"title": "إعلام",
"no_notifs": "You have no new notifications",
"see_all": "See all Notifications",
"back_to_home": "العودة إلى NodeBB",
"outgoing_link": "رابط خارجي",
"outgoing_link_message": "أنت الأن ترحل",
"continue_to": "أكمل إلى",
"return_to": "إرجع إلى"
}

View File

@@ -1,15 +0,0 @@
{
"home": "Home",
"unread": "Unread Topics",
"popular": "Popular Topics",
"recent": "Recent Topics",
"users": "Registered Users",
"notifications": "Notifications",
"user.edit": "Editing \"%1\"",
"user.following": "People %1 Follows",
"user.followers": "People who Follow %1",
"user.posts": "Posts made by %1",
"user.topics": "Topics created by %1",
"user.favourites": "%1's Favourite Posts",
"user.settings": "User Settings"
}

View File

@@ -1,7 +0,0 @@
{
"title": "Recent",
"day": "يوم",
"week": "أسبوع",
"month": "شهر",
"no_recent_topics": "There are no recent topics."
}

View File

@@ -1,18 +0,0 @@
{
"register": "تسجيل",
"help.email": "افتراضيا، سيتم إخفاء بريدك الإلكتروني من الجمهور.",
"help.username_restrictions": "اسم مستخدم فريدة من نوعها بين1% و2% حرفا. يمكن للآخرين ذكرك @ <'span id='your-username> اسم المستخدم </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": "Terms of Use",
"agree_to_terms_of_use": "I agree to the Terms of Use"
}

View File

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

View File

@@ -1,93 +0,0 @@
{
"topic": "موضوع",
"topics": "مواضيع",
"topic_id": "Topic ID",
"topic_id_placeholder": "Enter topic ID",
"no_topics_found": "لا توجد مواضيع !",
"no_posts_found": "No posts found!",
"profile": "ملف",
"posted_by": "Posted by",
"chat": "دردشة",
"notify_me": "تنبه من ردود جديدة في هذا الموضوع",
"quote": "اقتبس",
"reply": "رد",
"edit": "صحح",
"delete": "حذف",
"restore": "Restore",
"move": "انقل",
"fork": "فرع",
"banned": "محظور",
"link": "رابط",
"share": "شارك",
"tools": "أدوات",
"flag": "Flag",
"bookmark_instructions": "Click here to return to your last position or close to discard.",
"flag_title": "Flag this post for moderation",
"flag_confirm": "Are you sure you want to flag this post?",
"flag_success": "This post has been flagged for moderation.",
"deleted_message": "This thread has been deleted. Only users with thread management privileges can see it.",
"following_topic.title": "Following Topic",
"following_topic.message": "You will now be receiving notifications when somebody posts to this topic.",
"not_following_topic.title": "Not Following Topic",
"not_following_topic.message": "You will no longer receive notifications from this topic.",
"login_to_subscribe": "Please register or log in in order to subscribe to this topic.",
"markAsUnreadForAll.success": "Topic marked as unread for all.",
"watch": "Watch",
"watch.title": "Be notified of new replies in this topic",
"share_this_post": "Share this Post",
"thread_tools.title": "أدوات الموضوع",
"thread_tools.markAsUnreadForAll": "علم غير مقروء",
"thread_tools.pin": "علق الموضوع",
"thread_tools.unpin": "Unpin Topic",
"thread_tools.lock": "قفل الموضوع",
"thread_tools.unlock": "Unlock Topic",
"thread_tools.move": "نقل الموضوع",
"thread_tools.fork": "تفرع الموضوع",
"thread_tools.delete": "حذف الموضوع",
"thread_tools.delete_confirm": "Are you sure you want to delete this thread?",
"thread_tools.restore": "Restore Topic",
"thread_tools.restore_confirm": "Are you sure you want to restore this thread?",
"post_delete_confirm": "Are you sure you want to delete this post?",
"post_restore_confirm": "Are you sure you want to restore this post?",
"post_delete_error": "Could not delete this post!",
"post_restore_error": "Could not restore this post!",
"load_categories": "تحميل الفئات",
"disabled_categories_note": "الفئات المجلدة رمادية",
"confirm_move": "انقل",
"confirm_fork": "فرع",
"favourite": "المفضل",
"favourites": "المفضلة",
"favourites.not_logged_in.title": "ليس موجود حالياً",
"favourites.not_logged_in.message": "الرجاء تسجيل الدخول لتفضل هذا الرد",
"favourites.has_no_favourites": "ليس لديك أي ردود مفضلة. فضل بعد الردود لرؤيتهم هنا",
"vote.not_logged_in.title": "Not Logged In",
"vote.not_logged_in.message": "Please log in in order to vote",
"vote.cant_vote_self.title": "Invalid Vote",
"vote.cant_vote_self.message": "You cannot vote for your own post",
"loading_more_posts": "تحميل المزيد من المشاركات",
"move_topic": "نقل الموضوع",
"move_post": "نقل الرد",
"fork_topic": "فرع الموضوع",
"topic_will_be_moved_to": "هذا الموضوع سوف ينقل إلى فئة",
"fork_topic_instruction": "إضغط على الردود لتفريعهم",
"fork_no_pids": "لم تختار أي رد",
"fork_success": "تفريع الموضوع بنجاح!",
"reputation": "سمعة",
"posts": "ردود",
"composer.title_placeholder": "Enter your topic title here...",
"composer.write": "Write",
"composer.preview": "Preview",
"composer.help": "Help",
"composer.discard": "Discard",
"composer.submit": "Submit",
"composer.replying_to": "Replying to",
"composer.new_topic": "New Topic",
"composer.uploading": "uploading...",
"composer.thumb_url_label": "Paste a topic thumbnail URL",
"composer.thumb_title": "Add a thumbnail to this topic",
"composer.thumb_url_placeholder": "http://example.com/thumb.png",
"composer.thumb_file_label": "Or upload a file",
"composer.thumb_remove": "Clear fields",
"composer.drag_and_drop_images": "Drag and Drop Images Here",
"composer.upload_instructions": "Upload images by dragging & dropping them."
}

View File

@@ -1,6 +0,0 @@
{
"title": "Unread",
"no_unread_topics": "ليس هناك أي موضوع غير مقروء",
"mark_all_read": "إجعل كل المواضيع مقرؤة",
"load_more": "حمل المزيد"
}

View File

@@ -1,55 +0,0 @@
{
"banned": "محظور",
"offline": "ليس موجود حالياً",
"username": "إسم المستخدم",
"email": "البريد الإلكتروني",
"fullname": "الاسم الكامل",
"website": "الموقع الإلكتروني",
"location": "موقع",
"age": "عمر",
"joined": "تاريخ التسجيل",
"lastonline": "تاريخ أخر دخول",
"profile": "Profile",
"profile_views": "مشاهد الملف",
"reputation": "سمعة",
"posts": "ردود",
"favourites": "Favourites",
"followers": "أتباع",
"following": "يتبع",
"signature": "توقيع",
"gravatar": "Gravatar",
"birthday": "عيد ميلاد",
"chat": "Chat",
"follow": "Follow",
"unfollow": "Unfollow",
"change_picture": "تغيير الصورة",
"edit": "صحح",
"uploaded_picture": "صورة تم تحميلها",
"upload_new_picture": "تحميل صورة جديدة",
"current_password": "Current Password",
"change_password": "تغيير كلمة السر",
"change_password_error": "Invalid Password!",
"change_password_error_wrong_current": "Your current password is not correct!",
"change_password_error_length": "Password too short!",
"change_password_error_match": "Passwords must match!",
"change_password_error_privileges": "You are not have the rights to change this password.",
"change_password_success": "Your password is updated!",
"confirm_password": "تأكيد كلمة السر",
"password": "كلمة السر",
"upload_picture": "تحميل الصورة",
"upload_a_picture": "تحميل صورة",
"image_spec": "You may only upload PNG, JPG, or GIF files",
"max": "max.",
"settings": "Settings",
"show_email": "أظهر بريدي الإلكتروني",
"has_no_follower": "هذا المستخدم ليس لديه أي أتباع :(",
"follows_no_one": "هذا المستخدم لا يتبع أحد :(",
"has_no_posts": "This user didn't post anything yet.",
"has_no_topics": "This user didn't post any topics yet.",
"email_hidden": "البريد الإلكتروني مخفي",
"hidden": "مخفي",
"paginate_description": "Paginate topics and posts instead of using infinite scroll.",
"topics_per_page": "Topics per Page",
"posts_per_page": "Posts per Page",
"notification_sounds": "Play a sound when you receive a notification."
}

View File

@@ -1,9 +0,0 @@
{
"latest_users": "أحدث المستخدمين",
"top_posters": "أكثر المشتركين",
"most_reputation": "أعلى سمعة",
"online": "موجودين حالياً",
"search": "بحث",
"enter_username": "أدخل اسم مستخدم للبحث",
"load_more": "حمل المزيد"
}

View File

@@ -1,12 +0,0 @@
{
"new_topic_button": "Nové téma",
"no_topics": "<strong>V této kategorii zatím nejsou žádné příspěvky.</strong><br />Můžeš být první!",
"posts": "příspěvky",
"views": "zobrazení",
"posted": "odesláno",
"browsing": "prohlíží",
"no_replies": "Nikdo ještě neodpověděl",
"replied": "přispěl",
"last_edited_by": "naposledy upravil",
"share_this_category": "Share this category"
}

View File

@@ -1,7 +0,0 @@
{
"stats.online": "Online",
"stats.users": "Uživatelé",
"stats.topics": "Témata",
"stats.posts": "Příspěvky",
"success": "úspěch"
}

View File

@@ -1,55 +0,0 @@
{
"home": "Domů",
"search": "Hledat",
"buttons.close": "Zavřít",
"403.title": "Přístup odepřen",
"403.message": "K této stránce nemáte přístup. Zkuste se <a href='/login'>přihlásit</a>?",
"404.title": "Stránka nenalezena",
"404.message": "Tato stránka bohužel neexistuje. Vraťte se na <a href='/'>domovskou stránku</a>.",
"500.title": "Neznámá chyba",
"500.message": "Jejda, vypadá to, že se něco pokazilo.",
"register": "Registrovat",
"login": "Přihlásit se",
"please_log_in": "Please Log In",
"logout": "Odhlásit se",
"posting_restriction_info": "Posting is currently restricted to registered members only, click here to log in.",
"welcome_back": "Welcome Back ",
"you_have_successfully_logged_in": "You have successfully logged in",
"save_changes": "Uložit změny",
"close": "Zrušit",
"pagination": "Pagination",
"header.admin": "Administrace",
"header.recent": "Aktuality",
"header.unread": "Nepřečtené",
"header.popular": "Populární",
"header.users": "Uživatelé",
"header.chats": "Chats",
"header.notifications": "Notifications",
"header.search": "Hledat",
"header.profile": "Můj profil",
"notifications.loading": "Načítání upozornění",
"chats.loading": "Načítání grafů",
"motd.welcome": "Vítejte na NodeBB, diskusní platforma buducnosti.",
"previouspage": "Předchozí stránka",
"nextpage": "Další stránka",
"alert.success": "Success",
"alert.error": "Error",
"alert.banned": "Banned",
"alert.banned.message": "You are banned you will be logged out!",
"alert.unfollow": "You are no longer following %1!",
"alert.follow": "You are now following %1!",
"posts": "Příspěvky",
"views": "Zobrazení",
"posted": "odesláno",
"in": "v",
"norecentposts": "No Recent Posts",
"norecenttopics": "No Recent Topics",
"recentposts": "Nedávné příspěvky",
"recentips": "Recently Logged In IPs",
"online": "Online",
"away": "Pryč",
"dnd": "Nerušit",
"invisible": "Neviditelný",
"offline": "Offline",
"privacy": "Privacy"
}

View File

@@ -1,5 +0,0 @@
{
"name": "Czech",
"code": "cs",
"dir": "ltr"
}

View File

@@ -1,10 +0,0 @@
{
"login": "Přihlásit se",
"username": "Username / Email",
"password": "Heslo",
"remember_me": "Zapamatovat si mě?",
"forgot_password": "Zapomněli jste heslo?",
"alternative_logins": "Další způsoby přihlášení",
"failed_login_attempt": "Přihlášení se nezdařilo, zkuste to prosím znovu.",
"login_successful": "Přihlášení proběhlo úspěšně!"
}

View File

@@ -1,6 +0,0 @@
{
"chat.chatting_with": "Chat s <span id=\"chat-with-name\"></span>",
"chat.placeholder": "napište zprávu sem a zmáčkněte enter pro odeslání",
"chat.send": "Odeslat",
"chat.no_active": "Nemáte žádné aktivní konverzace."
}

View File

@@ -1,10 +0,0 @@
{
"title": "Upozornění",
"no_notifs": "You have no new notifications",
"see_all": "See all Notifications",
"back_to_home": "Zpět na úvodní stránku",
"outgoing_link": "Odkaz mimo fórum",
"outgoing_link_message": "Nyní opouštíte fórum",
"continue_to": "Přejít na",
"return_to": "Vrátit se na "
}

View File

@@ -1,15 +0,0 @@
{
"home": "Home",
"unread": "Unread Topics",
"popular": "Popular Topics",
"recent": "Recent Topics",
"users": "Registered Users",
"notifications": "Notifications",
"user.edit": "Editing \"%1\"",
"user.following": "People %1 Follows",
"user.followers": "People who Follow %1",
"user.posts": "Posts made by %1",
"user.topics": "Topics created by %1",
"user.favourites": "%1's Favourite Posts",
"user.settings": "User Settings"
}

View File

@@ -1,7 +0,0 @@
{
"title": "Nedávné",
"day": "Den",
"week": "Týden",
"month": "Měsíc",
"no_recent_topics": "There are no recent topics."
}

View File

@@ -1,18 +0,0 @@
{
"register": "Registrace",
"help.email": "Váš email nebude bez vašeho svolení zveřejněn.",
"help.username_restrictions": "Jedinečné uživatelské jméno dlouhé %1 až %2 znaků. Ostatní uživatelé Vás mohou zmínit jako @<span id='yourUsername'>uživatelské-jméno</span>.",
"help.minimum_password_length": "Délka vašeho hesla musí být alespoň %1 znaků.",
"email_address": "Email",
"email_address_placeholder": "Zadejte email",
"username": "Uživatelské jméno",
"username_placeholder": "Zadejte uživatelské jméno",
"password": "Heslo",
"password_placeholder": "Zadejte heslo",
"confirm_password": "Potvrzení hesla",
"confirm_password_placeholder": "Potvrďte heslo",
"register_now_button": "Zaregistrovat se",
"alternative_registration": "Jiný způsob registrace",
"terms_of_use": "Podmínky",
"agree_to_terms_of_use": "Souhlasím s Podmínkami"
}

View File

@@ -1,14 +0,0 @@
{
"reset_password": "Obnovit heslo",
"update_password": "Upravit heslo",
"password_changed.title": "Heslo změněno",
"password_changed.message": "<p>Heslo bylo úspěšně změněno, <a href=\"/login\">přihlaste se znovu</a> prosím.",
"wrong_reset_code.title": "Špatný kód",
"wrong_reset_code.message": "Byl zadán špatný kód. Zadejte ho prosím znovu, nebo <a href=\"/reset\">si nechte poslat nový</a>.",
"new_password": "Nové heslo",
"repeat_password": "Potvrzení hesla",
"enter_email": "Zadejte svou <strong>emailovou adresu</strong> a my Vám pošleme informace, jak můžete obnovit své heslo.",
"enter_email_address": "Enter Email Address",
"password_reset_sent": "Obnova hesla odeslána",
"invalid_email": "Špatný email / Email neexistuje!"
}

View File

@@ -1,93 +0,0 @@
{
"topic": "Téma",
"topics": "Témata",
"topic_id": "Topic ID",
"topic_id_placeholder": "Enter topic ID",
"no_topics_found": "Nebyla nalezena žádná témata!",
"no_posts_found": "No posts found!",
"profile": "Profil",
"posted_by": "Odeslal",
"chat": "Chat",
"notify_me": "Sledovat toto téma",
"quote": "Citovat",
"reply": "Odpovědět",
"edit": "Upravit",
"delete": "Smazat",
"restore": "Restore",
"move": "Přesunout",
"fork": "Rozdělit",
"banned": "banned",
"link": "Odkaz",
"share": "Sdílet",
"tools": "Nástroje",
"flag": "Flag",
"bookmark_instructions": "Click here to return to your last position or close to discard.",
"flag_title": "Flag this post for moderation",
"flag_confirm": "Are you sure you want to flag this post?",
"flag_success": "This post has been flagged for moderation.",
"deleted_message": "This thread has been deleted. Only users with thread management privileges can see it.",
"following_topic.title": "Following Topic",
"following_topic.message": "You will now be receiving notifications when somebody posts to this topic.",
"not_following_topic.title": "Not Following Topic",
"not_following_topic.message": "You will no longer receive notifications from this topic.",
"login_to_subscribe": "Please register or log in in order to subscribe to this topic.",
"markAsUnreadForAll.success": "Topic marked as unread for all.",
"watch": "Watch",
"watch.title": "Be notified of new replies in this topic",
"share_this_post": "Share this Post",
"thread_tools.title": "Nástroje",
"thread_tools.markAsUnreadForAll": "Označit jako nepřečtené",
"thread_tools.pin": "Pin Topic",
"thread_tools.unpin": "Unpin Topic",
"thread_tools.lock": "Lock Topic",
"thread_tools.unlock": "Unlock Topic",
"thread_tools.move": "Move Topic",
"thread_tools.fork": "Fork Topic",
"thread_tools.delete": "Delete Topic",
"thread_tools.delete_confirm": "Are you sure you want to delete this thread?",
"thread_tools.restore": "Restore Topic",
"thread_tools.restore_confirm": "Are you sure you want to restore this thread?",
"post_delete_confirm": "Are you sure you want to delete this post?",
"post_restore_confirm": "Are you sure you want to restore this post?",
"post_delete_error": "Could not delete this post!",
"post_restore_error": "Could not restore this post!",
"load_categories": "Načítání kategorií",
"disabled_categories_note": "Vypnuté (disabled) kategorie jsou šedé.",
"confirm_move": "Přesunout",
"confirm_fork": "Rozdělit",
"favourite": "Oblíbené",
"favourites": "Oblíbené",
"favourites.not_logged_in.title": "Přihlaste se!",
"favourites.not_logged_in.message": "Pro oblíbení příspěvku se musíte přihlásit.",
"favourites.has_no_favourites": "Nemáte žádné oblíbené příspěvky, přidejte některý příspěvek k oblíbeným a uvidíte ho zde!",
"vote.not_logged_in.title": "Not Logged In",
"vote.not_logged_in.message": "Please log in in order to vote",
"vote.cant_vote_self.title": "Invalid Vote",
"vote.cant_vote_self.message": "You cannot vote for your own post",
"loading_more_posts": "Načítání více příspěvků",
"move_topic": "Přesunout téma",
"move_post": "Přesunout příspěvek",
"fork_topic": "Rozdělit příspěvek",
"topic_will_be_moved_to": "Toto téma bude přesunuto do kategorie",
"fork_topic_instruction": "Vyber příspěvky, které chceš oddělit",
"fork_no_pids": "Žádné příspěvky nebyly vybrány!",
"fork_success": "Téma bylo úspěšně rozděleno!",
"reputation": "Reputace",
"posts": "Příspěvky",
"composer.title_placeholder": "Enter your topic title here...",
"composer.write": "Write",
"composer.preview": "Preview",
"composer.help": "Help",
"composer.discard": "Discard",
"composer.submit": "Submit",
"composer.replying_to": "Replying to",
"composer.new_topic": "New Topic",
"composer.uploading": "uploading...",
"composer.thumb_url_label": "Paste a topic thumbnail URL",
"composer.thumb_title": "Add a thumbnail to this topic",
"composer.thumb_url_placeholder": "http://example.com/thumb.png",
"composer.thumb_file_label": "Or upload a file",
"composer.thumb_remove": "Clear fields",
"composer.drag_and_drop_images": "Drag and Drop Images Here",
"composer.upload_instructions": "Upload images by dragging & dropping them."
}

View File

@@ -1,6 +0,0 @@
{
"title": "Unread",
"no_unread_topics": "Nejsou zde žádné nepřečtené témata.",
"mark_all_read": "Označit vše jako přečtené",
"load_more": "Načíst další"
}

View File

@@ -1,55 +0,0 @@
{
"banned": "Banned",
"offline": "Offline",
"username": "Uživatelské jméno",
"email": "Email",
"fullname": "Jméno a příjmení",
"website": "Webové stránky",
"location": "Poloha",
"age": "Věk",
"joined": "Registrován",
"lastonline": "Naposledy online",
"profile": "Profile",
"profile_views": "Zobrazení profilu",
"reputation": "Reputace",
"posts": "Příspěvky",
"favourites": "Oblíbené",
"followers": "Sledují ho",
"following": "Sleduje",
"signature": "Podpis",
"gravatar": "Gravatar",
"birthday": "Datum narození",
"chat": "Chat",
"follow": "Follow",
"unfollow": "Unfollow",
"change_picture": "Změnit obrázek",
"edit": "Upravit",
"uploaded_picture": "Nahraný obrázek",
"upload_new_picture": "Nahrát nový obrázek",
"current_password": "Current Password",
"change_password": "Změnit heslo",
"change_password_error": "Invalid Password!",
"change_password_error_wrong_current": "Your current password is not correct!",
"change_password_error_length": "Password too short!",
"change_password_error_match": "Passwords must match!",
"change_password_error_privileges": "You are not have the rights to change this password.",
"change_password_success": "Your password is updated!",
"confirm_password": "Potvrzení hesla",
"password": "Heslo",
"upload_picture": "Nahrát obrázek",
"upload_a_picture": "Nahrát obrázek",
"image_spec": "You may only upload PNG, JPG, or GIF files",
"max": "max.",
"settings": "Nastavení",
"show_email": "Zobrazovat můj email v profilu",
"has_no_follower": "Tohoto uživatele nikdo nesleduje :(",
"follows_no_one": "Tento uživatel nikoho nesleduje :(",
"has_no_posts": "This user didn't post anything yet.",
"has_no_topics": "This user didn't post any topics yet.",
"email_hidden": "Skrytý email",
"hidden": "skrytý",
"paginate_description": "Paginate topics and posts instead of using infinite scroll.",
"topics_per_page": "Topics per Page",
"posts_per_page": "Posts per Page",
"notification_sounds": "Play a sound when you receive a notification."
}

View File

@@ -1,9 +0,0 @@
{
"latest_users": "Nejnovější uživatelé",
"top_posters": "Nejaktivnější",
"most_reputation": "Nejváženější",
"online": "Online",
"search": "Vyhledávat",
"enter_username": "Zadej uživatelské jméno k hledání",
"load_more": "Načíst další"
}

View File

@@ -1,12 +1,14 @@
{
"new_topic_button": "Neues Thema",
"no_topics": "<strong>Es gibt noch keine Themen in dieser Kategorie.</strong><br />Warum beginnst du nicht das erste?",
"posts": "Beiträge",
"views": "Aufrufe",
"posted": "Geschrieben",
"browsing": "Aktiv",
"no_replies": "Niemand hat geantwortet",
"replied": "geantwortet",
"last_edited_by": "zuletzt editiert durch",
"share_this_category": "Share this category"
}
"new_topic_button": "Neues Thema",
"no_topics": "<strong>Es gibt noch keine Threads in dieser Kategorie.</strong><br />Warum beginnst du nicht den ersten?",
"sidebar.recent_replies": "Neuste Antworten",
"sidebar.active_participants": "Aktive Teilnehmer",
"sidebar.moderators": "Moderatoren",
"posts": "Posts",
"views": "Aufrufe",
"posted": "Geposted",
"browsing": "Sieht zu",
"no_replies": "Niemand hat geantwortet",
"replied": "geantwortet",
"last_edited_by": "zuletzt editiert durch"
}

View File

@@ -1,7 +1,10 @@
{
"stats.online": "Online",
"stats.users": "Benutzer",
"stats.topics": "Themen",
"stats.posts": "Beiträge",
"success": "Erfolg"
}
"chat.chatting_with": "Chatten mit <span id='chat-with-name'></span>",
"chat.placeholder": "schreibe hier etwas, und drücke Enter zum absenden",
"chat.send": "Senden",
"stats.online": "Online",
"stats.users": "Benutzer",
"stats.topics": "Themen",
"stats.posts": "Beiträge",
"success": "erfolg"
}

View File

@@ -1,55 +1,31 @@
{
"home": "Übersicht",
"search": "Suche",
"buttons.close": "Schließen",
"403.title": "Zugriff Verweigert",
"403.message": "Du bist nicht dazu berechtigt, diese Seite aufzurufen. <a href='/login'>Logge dich ein</a> und versuche es erneut.",
"404.title": " Nicht Gefunden",
"404.message": "Die abgefragte Seite wurde nicht gefunden. <a href='/''>Zurück zur Übersicht</a>.",
"500.title": "Interner Fehler.",
"500.message": "Ups! Scheint als wäre etwas schief gelaufen!",
"register": "Registrierung",
"login": "Login",
"please_log_in": "Bitte einloggen",
"logout": "Logout",
"posting_restriction_info": "Nur registrierte Mitglieder dürfen Beiträge verfassen. Hier klicken zum Einloggen.",
"welcome_back": "Willkommen zurück",
"you_have_successfully_logged_in": "Du hast dich erfolgreich eingeloggt",
"save_changes": "Speichere Änderungen",
"close": "Schließen",
"pagination": "Seitennummerierung",
"header.admin": "Admin",
"header.recent": "Aktuell",
"header.unread": "Ungelesen",
"header.popular": "Beliebt",
"header.users": "Benutzer",
"header.chats": "Chats",
"header.notifications": "Benachrichtigungen",
"header.search": "Suche",
"header.profile": "Profil",
"notifications.loading": "Benachrichtigungen laden",
"chats.loading": "Nachrichten werden geladen",
"motd.welcome": "Willkommen auf NodeBB, der Diskussionsplattform der Zukunft.",
"previouspage": "Vorherige Seite",
"nextpage": "Nächste Seite",
"alert.success": "Erfolg",
"alert.error": "Fehler",
"alert.banned": "Gebannt",
"alert.banned.message": "Du bist gebannt und wirst nun ausgeloggt.",
"alert.unfollow": "Du folgst %1 nicht länger!",
"alert.follow": "Du folgst nun %1!",
"posts": "Beiträge",
"views": "Aufrufe",
"posted": "geposted",
"in": "in",
"norecentposts": "Keine aktuellen Beiträge",
"norecenttopics": "Keine aktuellen Themen",
"recentposts": "Aktuelle Beiträge",
"recentips": "Zuletzt eingeloggte IPs",
"online": "Online",
"away": "Abwesend",
"dnd": "Nicht stören",
"invisible": "Unsichtbar",
"offline": "Offline",
"privacy": "Privatsphäre"
}
"home": "Übersicht",
"search": "Suche",
"buttons.close": "Schließen",
"403.title": "Zugriff Verweigert",
"403.message": "Du bist nicht dazu berechtigt, diese Seite aufzurufen. <a href='/login'>Logge dich ein</a> und versuche es erneut.",
"404.title": " Nicht Gefunden",
"404.message": "Die abgefragte Seite wurde nicht gefunden. <a href='/''>Zurück zur Übersicht</a>.",
"500.title": "Internal error.",
"500.message": "Ooops! Looks like something went wrong!",
"register": "Registrierung",
"login": "Login",
"logout": "Logout",
"logout.title": "Du bist ausgeloggt.",
"logout.message": "Du hast dich soeben erfolgreich aus dem Forum ausgeloggt.",
"save_changes": "Speichere Änderungen",
"close": "Schließen",
"header.admin": "Admin",
"header.recent": "Aktuell",
"header.unread": "Ungelesen",
"header.users": "Benutzer",
"header.search": "Suche",
"header.profile": "Profil",
"notifications.loading": "Benachrichtigungen laden",
"chats.loading": "Nachrichten werden geladen"
}

View File

@@ -1,5 +0,0 @@
{
"name": "German",
"code": "de",
"dir": "ltr"
}

View File

@@ -1,10 +1,10 @@
{
"login": "Einloggen",
"username": "Nutzername / E-Mail Adresse",
"password": "Passwort",
"remember_me": "Eingeloggt bleiben?",
"forgot_password": "Passwort vergessen?",
"alternative_logins": "Login Alternativen",
"failed_login_attempt": " Anmeldeversuch fehlgeschlagen, versuche es erneut.",
"login_successful": "Du hast dich erfolgreich eingeloggt!"
}
"login": "Einloggen",
"username": "Benutzername",
"password": "Passwort",
"remember_me": "Eingeloggt bleiben?",
"forgot_password": "Passwort vergessen?",
"alternative_logins": "Login Alternativen",
"failed_login_attempt": " Anmeldeversuch fehlgeschlagen, versuche es erneut.",
"login_successful": "Du hast dich erfolgreich eingeloggt!"
}

View File

@@ -1,6 +0,0 @@
{
"chat.chatting_with": "Chatten mit <span id='chat-with-name'></span>",
"chat.placeholder": "schreibe hier etwas, und drücke Enter zum absenden",
"chat.send": "Senden",
"chat.no_active": "Du hast keine aktiven Chats."
}

View File

@@ -1,10 +1,9 @@
{
"title": "Benachrichtigungen",
"no_notifs": "Du hast keine neuen Benachrichtigungen",
"see_all": "Alle Benachrichtigungen ansehen",
"back_to_home": "Zurück zur Startseite",
"outgoing_link": "Externer Link",
"outgoing_link_message": "Du verlässt nun",
"continue_to": "Gehe weiter zu",
"return_to": "Kehre zurück zu"
}
"title": "Benachrichtigungen",
"back_to_home": "Zurück zur Startseite",
"mark_all_as_read": "Alles als gelesen markieren",
"outgoing_link": "Externer Link",
"outgoing_link_message": "Du verlässt nun",
"continue_to": "Gehe weiter zu",
"return_to": "Kehre zurück zu"
}

View File

@@ -1,15 +0,0 @@
{
"home": "Home",
"unread": "Ungelesene Themen",
"popular": "Beliebte Themen",
"recent": "Neueste Topics",
"users": "Registrierte User",
"notifications": "Benachrichtigungen",
"user.edit": "Bearbeite \"%1\"",
"user.following": "User %1 folgen",
"user.followers": "User die folgen %1",
"user.posts": "Beiträge von %1",
"user.topics": "Topics created by %1",
"user.favourites": "%1's favorisierte Beiträge",
"user.settings": "User Einstellungen"
}

View File

@@ -1,7 +1,5 @@
{
"title": "Aktuell",
"day": "Tag",
"week": "Woche",
"month": "Monat",
"no_recent_topics": "Es gibt keine aktuellen Themen."
}
"day": "Tag",
"week": "Woche",
"month": "Monat"
}

View File

@@ -1,18 +1,16 @@
{
"register": "Registrieren",
"help.email": "Deine E-Mail Adresse ist standardmäßig nicht öffentlich sichtbar.",
"help.username_restrictions": "Einen einmaligen Benutzernamen. 3-16 Zeichen. Andere Benutzer können dich mit @<span id='yourUsername'>Benutzername</span> anschreiben.",
"help.minimum_password_length": "Dein Passwort muss mindestens sechs Zeichen lang sein.",
"email_address": "E-Mail",
"email_address_placeholder": "E-Mail Adresse hier eingeben",
"username": "Benutzername",
"username_placeholder": "Benutzernamen eingeben",
"password": "Passwort",
"password_placeholder": "Passwort eingeben",
"confirm_password": "Passwort bestätigen",
"confirm_password_placeholder": "Passwort zur Bestätigung erneut eingeben",
"register_now_button": "Jetzt registrieren",
"alternative_registration": "Alternative Registrierung",
"terms_of_use": "Nutzungsbedingungen",
"agree_to_terms_of_use": "Ich stimme den Nutzungsbedingungen zu"
}
"register": "Registrieren",
"help.email": "Deine E-Mail Adresse ist standardmäßig nicht öffentlich sichtbar.",
"help.username_restrictions": "Einen einmaligen Benutzernamen. 3-16 Zeichen. Andere Benutzer können dich mit @<span id='yourUsername'>Benutzername</span> anschreiben.",
"help.minimum_password_length": "Dein Passwort muss mindestens sechs Zeichen lang sein.",
"email_address": "E-Mail",
"email_address_placeholder": "E-Mail Adresse hier eingeben",
"username": "Benutzername",
"username_placeholder": "Benutzernamen eingeben",
"password": "Passwort",
"password_placeholder": "Passwort eingeben",
"confirm_password": "Passwort bestätigen",
"confirm_password_placeholder": "Passwort zur Bestätigung erneut eingeben",
"register_now_button": "Jetzt registrieren",
"alternative_registration": "Alternative Registrierung"
}

View File

@@ -1,14 +1,13 @@
{
"reset_password": "Passwort zurücksetzen",
"update_password": "Ändere Passwort",
"password_changed.title": "Passwort geändert",
"password_changed.message": "<p>Passwort erfolgreich zurückgesetzt. Bitte <a href=\"/login\">logge dich erneut ein</a>.",
"wrong_reset_code.title": "Der Reset-Code ist falsch.",
"wrong_reset_code.message": "Der empfangene Reset-Code war falsch. Bitte versuche es erneut oder <a href=\"/reset\">fordere einen neuen Code an</a>.",
"new_password": "Neues Passwort",
"repeat_password": "Wiederhole das Passwort",
"enter_email": "Bitte gib Deine <strong>E-Mail Adresse</strong> ein und wir senden Dir eine Anleitung, wie Du Dein Passwort zurücksetzen kannst.",
"enter_email_address": "E-Mail Adresse eingeben",
"password_reset_sent": "Passwortzrücksetzung beantragt.",
"invalid_email": "Ungültige E-Mail / Adresse existiert nicht!"
}
"reset_password": "Passwort zurücksetzen",
"update_password": "Ändere Passwort",
"password_change": "Passwort wurde geändert",
"password_reset_successful": "<p>Das Passwort wurde erfolgreich zurückgesetzt. <a href=\"/login\">Log dich neu ein</a>.",
"wrong_reset_code.title": "Der Reset-Code ist falsch.",
"wrong_reset_code.message": "Der empfangene Reset-Code war falsch. Bitte versuche es erneut oder <a href=\"/reset\">fordere einen neuen Code an</a>.",
"new_password": "Neues Passwort",
"repeat_password": "Wiederhole das Passwort",
"enter_email": "Bitte gib Deine <strong>E-Mail Adresse</strong> ein und wir senden Dir eine Anleitung, wie Du Dein Passwort zurücksetzen kannst.",
"password_reset_sent": "Passwortzrücksetzung beantragt.",
"invalid_email": "Ungültige E-Mail / Adresse existiert nicht!"
}

View File

@@ -1,93 +1,43 @@
{
"topic": "Thema",
"topics": "Themen",
"topic_id": "Topic ID",
"topic_id_placeholder": "Topic ID eingeben",
"no_topics_found": "Keine passende Themen gefunden.",
"no_posts_found": "Keine Beiträge gefunden!",
"profile": "Profil",
"posted_by": "Geposted von",
"chat": "Chat",
"notify_me": "Werde bei neues Antworten auf dieses Thema benachrichtigt.",
"quote": "zitieren",
"reply": "antworten",
"edit": "bearbeiten",
"delete": "löschen",
"restore": "Wiederherstellen",
"move": "Verschieben",
"fork": "Aufspalten",
"banned": "gesperrt",
"link": "Link",
"share": "Teilen",
"tools": "Tools",
"flag": "Markieren",
"bookmark_instructions": "Klicke hier um zur letzten Position zurückzukehren oder schließe zum Abbrechen.",
"flag_title": "Diesen Beitrag zur Moderation markieren",
"flag_confirm": "Sind Sie sicher, dass Sie diesen Post markieren möchten?",
"flag_success": "Dieser Beitrag wurde erfolgreich für die Moderation markiert.",
"deleted_message": "Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können ihn sehen.",
"following_topic.title": "Thema wird gefolgt",
"following_topic.message": "Du erhälst nun eine Benachrichtigung, wenn jemand einen Beitrag zu diesem Thema verfasst.",
"not_following_topic.title": "Thema nicht gefolgt",
"not_following_topic.message": "Du erhälst keine weiteren Benachrichtigungen zu diesem Thema.",
"login_to_subscribe": "Bitte registrieren oder einloggen um dieses Thema zu abonnieren",
"markAsUnreadForAll.success": "Thema für Alle als ungelesen markiert.",
"watch": "Beobachten",
"watch.title": "Bei neuen Antworten benachrichtigen",
"share_this_post": "Diesen Beitrag teilen",
"thread_tools.title": "Tools",
"thread_tools.markAsUnreadForAll": "Als ungelesen markieren",
"thread_tools.pin": "Thema anpinnen",
"thread_tools.unpin": "Thema nicht mehr anpinnen",
"thread_tools.lock": "Thema schließen",
"thread_tools.unlock": "Thema öffnen",
"thread_tools.move": "Thema verschieben",
"thread_tools.fork": "Thema aufspalten",
"thread_tools.delete": "Thema löschen",
"thread_tools.delete_confirm": "Sind Sie sicher, dass Sie dieses Thema löschen möchten?",
"thread_tools.restore": "Thema wiederherstellen",
"thread_tools.restore_confirm": "Sind Sie sicher, dass Sie dieses Thema wiederherstellen möchten?",
"post_delete_confirm": "Sind Sie sicher, dass Sie diesen Beitrag löschen möchten?",
"post_restore_confirm": "Sind Sie sicher, dass Sie diesen Beitrag wiederherstellen möchten?",
"post_delete_error": "Beitrag konnte nicht gelöscht werden!",
"post_restore_error": "Beitrag konnte nicht wiederhergestellt werden!",
"load_categories": "Kategorien laden",
"disabled_categories_note": "Deaktivierte Kategorien sind ausgegraut.",
"confirm_move": "Verschieben",
"confirm_fork": "Aufspalten",
"favourite": "Favorit",
"favourites": "Favoriten",
"favourites.not_logged_in.title": "Nicht eingeloggt!",
"favourites.not_logged_in.message": "Bitte logge dich ein, um diesen Beitrag favorisieren zu können.",
"favourites.has_no_favourites": "Du hast noch keine Favoriten.",
"vote.not_logged_in.title": "Nicht eingeloggt",
"vote.not_logged_in.message": "Zum Bewerten bitte einloggen",
"vote.cant_vote_self.title": "Ungültige Bewertung",
"vote.cant_vote_self.message": "Du kannst deinen eigenen Beitrag nicht bewerten",
"loading_more_posts": "Lade Mehr Posts",
"move_topic": "Thema verschieben",
"move_post": "Beitrag verschieben",
"fork_topic": "Thema aufspalten",
"topic_will_be_moved_to": "Dieses Thema wird verschoben nach",
"fork_topic_instruction": "Klicke auf die Posts, die du aufspalten willst",
"fork_no_pids": "Keine Beiträge ausgewählt!",
"fork_success": "Thema erfolgreich aufgespalten!",
"reputation": "Reputation",
"posts": "Beiträge",
"composer.title_placeholder": "Hier den Titel des Themas eingeben...",
"composer.write": "Schreiben",
"composer.preview": "Vorschau",
"composer.help": "Hilfe",
"composer.discard": "Verwerfen",
"composer.submit": "Absenden",
"composer.replying_to": "Als Antwort auf",
"composer.new_topic": "Neues Thema",
"composer.uploading": "Upload läuft...",
"composer.thumb_url_label": "Vorschaubild-URL hier einfügen",
"composer.thumb_title": "Vorschaubild zu diesem Thema hinzufügen",
"composer.thumb_url_placeholder": "http://example.com/thumb.png",
"composer.thumb_file_label": "Oder eine Datei hochladen",
"composer.thumb_remove": "Felder leeren",
"composer.drag_and_drop_images": "Bilder hier reinziehen",
"composer.upload_instructions": "Zum Hochladen Bilder hier reinziehen."
}
"topic": "Thema",
"topics": "Themen",
"no_topics_found": "Keine passende Themen gefunden.",
"profile": "Profil",
"posted_by": "geschrieben von",
"chat": "Chat",
"notify_me": "Werde bei neues Antworten auf dieses Thema benachrichtigt.",
"quote": "zitieren",
"reply": "antworten",
"edit": "bearbeiten",
"delete": "löschen",
"banned": "gesperrt",
"link": "Link",
"thread_tools.title": "Thread Tools",
"thread_tools.pin": "Thread pinnen",
"thread_tools.unpin": "Thread nicht mehr pinnen",
"thread_tools.lock": "Thread sperren",
"thread_tools.move": "Thread verschieben",
"thread_tools.delete": "Thread löschen",
"load_categories": "Kategorien laden",
"disabled_categories_note": "Deaktivierte Kategorien sind ausgegraut.",
"confirm_move": "verschieben",
"favourite": "Favorit",
"favourites": "Favoriten",
"favourites.not_logged_in.title": "Nicht eingeloggt!",
"favourites.not_logged_in.message": "Bitte logge dich ein, um diesen Beitrag favorisieren zu können.",
"favourites.has_no_favourites":"Du hast noch keine Favoriten.",
"posted_by": "Geposted von",
"loading": "Lade",
"more_posts": "Mehr Posts",
"move_topic": "Thema verschieben",
"topic_will_be_moved_to": "Dieses Thema wird verschoben nach",
"reputation": "Reputation",
"posts": "Posts"
}

View File

@@ -1,6 +1,5 @@
{
"title": "Ungelesen",
"no_unread_topics": "Es gibt keine ungelesenen Themen.",
"mark_all_read": "alle als gelesen markieren",
"load_more": "mehr laden"
"no_unread_topics": "Es gibt keine ungelesenen Themen.",
"mark_all_read": "alle als gelesen markieren",
"load_more": "mehr laden"
}

View File

@@ -1,55 +1,38 @@
{
"banned": "Gebannt",
"offline": "offline",
"username": "Nutzername",
"email": "E-Mail",
"fullname": "Kompletter Name",
"website": "Homepage",
"location": "Wohnort",
"age": "Alter",
"joined": "Beigetreten",
"lastonline": "Zuletzt online",
"profile": "Profil",
"profile_views": "Profilaufrufe",
"reputation": "Reputation",
"posts": "Posts",
"favourites": "Favoriten",
"followers": "Follower",
"following": "Folgt",
"signature": "Signatur",
"gravatar": "Gravatar",
"birthday": "Geburtstag",
"chat": "Chat",
"follow": "Folgen",
"unfollow": "Nicht mehr folgen",
"change_picture": "Ändere Profilbild",
"edit": "Ändern",
"uploaded_picture": "Hochgeladene Bilder",
"upload_new_picture": "Neues Bild hochladen",
"current_password": "Aktuelles Passwort",
"change_password": "Ändere Passwort",
"change_password_error": "Ungültiges Passwort!",
"change_password_error_wrong_current": "Ihr derzeitiges Passwort ist ungültig!",
"change_password_error_length": "Passwort zu kurz!",
"change_password_error_match": "Passworte müssen übereinstimmen!",
"change_password_error_privileges": "Sie haben nicht die Berechtigungen dieses Passwort zu ändern.",
"change_password_success": "Ihr Passwort wurde aktualisiert!",
"confirm_password": "Passwort wiederholen",
"password": "Passwort",
"upload_picture": "Bild hochladen",
"upload_a_picture": "Ein Bild hochladen",
"image_spec": "Sie dürfen nur Dateien vom Typ PNG, JPG oder GIF hochladen",
"max": "max.",
"settings": "Einstellungen",
"show_email": "Zeige meine E-Mail Adresse an.",
"has_no_follower": "Dieser User hat noch keine Follower.",
"follows_no_one": "Dieser User folgt noch niemanden.",
"has_no_posts": "Dieser Nutzer hat noch nichts gepostet.",
"has_no_topics": "This user didn't post any topics yet.",
"email_hidden": "E-Mail Adresse versteckt",
"hidden": "versteckt",
"paginate_description": "Themen und Beiträge auf Seiten aufteilen statt unendliches Scrollen verweden",
"topics_per_page": "Themen pro Seite",
"posts_per_page": "Beiträge pro Seite",
"notification_sounds": "Ton abspielen, wenn ich eine Benachrichtigung erhalte."
}
"banned": "Gebannt",
"offline": "offline",
"email": "E-Mail",
"fullname": "Kompletter Name",
"website": "Homepage",
"location": "Wohnort",
"age": "Alter",
"joined": "Beigetreten",
"profile_views": "Profilaufrufe",
"reputation": "Reputation",
"posts": "Posts",
"followers": "Follower",
"following": "Folgt",
"signature": "Signatur",
"gravatar": "Gravatar",
"birthday": "Geburtstag",
"change_picture": "Ändere Profilbild",
"edit": "Ändern",
"uploaded_picture": "Hochgeladene Bilder",
"upload_new_picture": "Neues Bild hochladen",
"change_password": "Ändere Passwort",
"confirm_password": "Passwort wiederholen",
"password": "Passwort",
"upload_picture": "Bild hochladen",
"upload_a_picture": "Ein Bild hochladen",
"image_spec": "Du solltest nur Dateien die PNG, JPG, oder GIF kleiner als 256kb hochladen.",
"settings": "Einstellungen",
"show_email": "Zeige meine E-Mail Adresse an.",
"has_no_follower": "Dieser User hat noch keine Follower.",
"follows_no_one": "Dieser User folgt noch niemanden."
}

View File

@@ -1,9 +1,9 @@
{
"latest_users": "neuste Benutzer",
"top_posters": "meiste Beiträge",
"most_reputation": "höhstes Ansehen",
"online": "Online",
"search": "Suchen",
"enter_username": "Benutzer durchsuchen",
"load_more": "mehr laden"
}
"latest_users": "neuste Benutzer",
"top_posters": "meiste Beiträge",
"most_reputation": "höhstes Ansehen",
"online": "Online",
"search": "Suchen",
"enter_username": "Benutzer durchsuchen",
"load_more": "mehr laden"
}

View File

@@ -1,12 +1,14 @@
{
"new_topic_button": "New Topic",
"no_topics": "<strong>There are no topics in this category.</strong><br />Why don't you try posting one?",
"sidebar.recent_replies": "Recent Replies",
"sidebar.active_participants": "Active Participants",
"sidebar.moderators": "Moderators",
"posts": "posts",
"views": "views",
"posted": "posted",
"browsing": "browsing",
"no_replies": "No one has replied",
"replied": "replied",
"last_edited_by": "last edited by",
"share_this_category": "Share this category"
"last_edited_by": "last edited by"
}

View File

@@ -2,5 +2,9 @@
"chat.chatting_with": "Chat with <span id=\"chat-with-name\"></span>",
"chat.placeholder": "type chat message here, press enter to send",
"chat.send": "Send",
"chat.no_active": "You have no active chats."
}
"stats.online": "Online",
"stats.users": "Users",
"stats.topics": "Topics",
"stats.posts": "Posts",
"success": "success"
}

View File

@@ -0,0 +1,31 @@
{
"home": "Home",
"search": "Search",
"buttons.close": "Close",
"403.title": "Access Denied",
"403.message": "You seem to have stumbled upon a page that you do not have access to. Perhaps you should <a href='/login'>try logging in</a>?",
"404.title": "Not Found",
"404.message": "You seem to have stumbled upon a page that does not exist. Return to the <a href='/'>home page</a>.",
"500.title": "Internal error.",
"500.message": "Oops! Looks like something went wrong!",
"register": "Register",
"login": "Login",
"logout": "Logout",
"logout.title": "You are now logged out.",
"logout.message": "You have successfully logged out of NodeBB",
"save_changes": "Save Changes",
"close": "Close",
"header.admin": "Admin",
"header.recent": "Recent",
"header.unread": "Unread",
"header.users": "Users",
"header.search": "Search",
"header.profile": "Profile",
"notifications.loading": "Loading Notifications",
"chats.loading": "Loading Chats"
}

View File

@@ -1,6 +1,6 @@
{
"login": "Login",
"username": "Username / Email",
"username": "Username",
"password": "Password",
"remember_me": "Remember Me?",
"forgot_password": "Forgot Password?",

View File

@@ -1,9 +1,7 @@
{
"title": "Notifications",
"no_notifs": "You have no new notifications",
"see_all": "See all Notifications",
"back_to_home": "Back to NodeBB",
"back_to_home": "back to NodeBB",
"mark_all_as_read": "Mark All as Read",
"outgoing_link": "Outgoing Link",
"outgoing_link_message": "You are now leaving",
"continue_to": "Continue to",

View File

@@ -0,0 +1,5 @@
{
"day": "Day",
"week": "Week",
"month": "Month"
}

View File

@@ -12,7 +12,5 @@
"confirm_password": "Confirm Password",
"confirm_password_placeholder": "Confirm Password",
"register_now_button": "Register Now",
"alternative_registration": "Alternative Registration",
"terms_of_use": "Terms of Use",
"agree_to_terms_of_use": "I agree to the Terms of Use"
"alternative_registration": "Alternative Registration"
}

View File

@@ -8,7 +8,6 @@
"new_password": "New Password",
"repeat_password": "Confirm Password",
"enter_email": "Please enter your <strong>email address</strong> and we will send you an email with instructions on how to reset your account.",
"enter_email_address": "Enter Email Address",
"password_reset_sent": "Password Reset Sent",
"invalid_email": "Invalid Email / Email does not exist!"
}

View File

@@ -0,0 +1,43 @@
{
"topic": "Topic",
"topics": "Topics",
"no_topics_found": "No topics found!",
"profile": "Profile",
"posted_by": "Posted by",
"chat": "Chat",
"notify_me": "Be notified of new replies in this topic",
"quote": "Quote",
"reply": "Reply",
"edit": "Edit",
"delete": "Delete",
"fork": "Fork",
"banned": "banned",
"link": "Link",
"thread_tools.title": "Thread Tools",
"thread_tools.pin": "Pin Thread",
"thread_tools.lock": "Lock Thread",
"thread_tools.move": "Move Thread",
"thread_tools.delete": "Delete Thread",
"load_categories": "Loading Categories",
"disabled_categories_note": "Disabled Categories are greyed out",
"confirm_move": "Move",
"favourite": "Favourite",
"favourites": "Favorites",
"favourites.not_logged_in.title": "Not Logged In",
"favourites.not_logged_in.message": "Please log in in order to favourite this post",
"favourites.has_no_favourites": "You don't have any favourites, favourite some posts to see them here!",
"posted_by": "posted by",
"loading": "Loading",
"more_posts": "More Posts",
"move_topic": "Move Topic",
"topic_will_be_moved_to": "This topic will be moved to the category",
"reputation": "Reputation",
"posts": "Posts"
}

View File

@@ -0,0 +1,5 @@
{
"no_unread_topics": "There are no unread topics.",
"mark_all_read": "Mark all as Read",
"load_more": "Load More"
}

View File

@@ -0,0 +1,40 @@
{
"banned": "Banned",
"offline": "Offline",
"email": "Email",
"fullname": "Full Name",
"website": "Website",
"location": "Location",
"age": "Age",
"joined": "Joined",
"lastonline": "Last Online",
"profile_views": "Profile views",
"reputation": "Reputation",
"posts": "Posts",
"followers": "Followers",
"following": "Following",
"signature": "Signature",
"gravatar": "Gravatar",
"birthday": "Birthday",
"change_picture": "Change Picture",
"edit": "Edit",
"uploaded_picture": "Uploaded Picture",
"upload_new_picture": "Upload New Picture",
"change_password": "Change Password",
"confirm_password": "Confirm Password",
"password": "Password",
"upload_picture": "Upload picture",
"upload_a_picture": "Upload a picture",
"image_spec": "You may only upload PNG, JPG, or GIF files under 256kb.",
"settings": "settings",
"show_email": "Show My Email",
"has_no_follower": "This user doesn't have any followers :(",
"follows_no_one": "This user isn't following anyone :(",
"email_hidden": "Email Hidden",
"hidden": "hidden"
}

View File

@@ -1,12 +0,0 @@
{
"new_topic_button": "New Topic",
"no_topics": "<strong>Thar be no topics in 'tis category.</strong><br />Why don't ye give a go' postin' one?",
"posts": "messages",
"views": "views",
"posted": "sent",
"browsing": "browsin'",
"no_replies": "No one has replied to ye message",
"replied": "replied",
"last_edited_by": "last edited by",
"share_this_category": "Share this category"
}

View File

@@ -1,7 +0,0 @@
{
"stats.online": "Online",
"stats.users": "Mates",
"stats.topics": "Topics",
"stats.posts": "Messages",
"success": "success"
}

View File

@@ -1,55 +0,0 @@
{
"home": "Home Port",
"search": "Finderer",
"buttons.close": "Shoot down",
"403.title": "Not Enough Booty Power",
"403.message": "Ye seem to have stumbled upon a page that ye do not have access to. Perhaps ye <a href='/login'>give a go' loggin' in</a>?",
"404.title": "T'ere be nut'in 'ere",
"404.message": "Ye seem to have stumbled upon a page that does not exist. Return to th' <a href='/'>home page</a>",
"500.title": "Broken beam.",
"500.message": "Looks like we've got somethin' in th' sails.",
"register": "Register",
"login": "Login",
"please_log_in": "Please Log In",
"logout": "Logout",
"posting_restriction_info": "Postin' be currently restricted to registered members only, click here to log in.",
"welcome_back": "Welcome to Port",
"you_have_successfully_logged_in": "Ye have successfully logged in",
"save_changes": "Save yer Changes",
"close": "Shoot down",
"pagination": "Pagination",
"header.admin": "Captains only",
"header.recent": "Recent",
"header.unread": "Undiscovered",
"header.popular": "Famous",
"header.users": "Mates",
"header.chats": "Yik-Yaks",
"header.notifications": "Parrot Calls",
"header.search": "Finderer",
"header.profile": "Bunk",
"notifications.loading": "Fetching yer Parrot Calls",
"chats.loading": "Loading Yik-Yaks",
"motd.welcome": "Welcome to NodeBB, th' discussion platform 'o th' future.",
"previouspage": "Previous Page",
"nextpage": "Next Page",
"alert.success": "Success",
"alert.error": "Somethin' broke",
"alert.banned": "Exiled",
"alert.banned.message": "Ye be banned ye gunna be logged out!",
"alert.unfollow": "Ye be no longer stalkin' %1!",
"alert.follow": "Ye be stalkin' %1",
"posts": "Messages",
"views": "Views",
"posted": "posted",
"in": "in",
"norecentposts": "No Recent Posts",
"norecenttopics": "No Recent Topics",
"recentposts": "Recent Messages",
"recentips": "Recently Logged In IPs",
"online": "Available",
"away": "Out to sea",
"dnd": "Do not Disturb",
"invisible": "Magic usin'",
"offline": "Dead",
"privacy": "Privacy"
}

View File

@@ -1,5 +0,0 @@
{
"name": "English (Pirate)",
"code": "en@pirate",
"dir": "ltr"
}

View File

@@ -1,10 +0,0 @@
{
"login": "Login",
"username": "Yer handle or email",
"password": "Secret Combination",
"remember_me": "Remember Me?",
"forgot_password": "My mind be a scatt'rbrain, help a matey out!",
"alternative_logins": "Oth'r gangplanks",
"failed_login_attempt": "Failed login attempt, please give it a go' again.",
"login_successful": "Welcome on board, matey!"
}

View File

@@ -1,6 +0,0 @@
{
"chat.chatting_with": "Letters from <span id=\"chat-with-name\"></span>",
"chat.placeholder": "Yer message goes here, hit enter to send 'er off",
"chat.send": "Send Parrot",
"chat.no_active": "Ye be a lonely sailor."
}

View File

@@ -1,10 +0,0 @@
{
"title": "Notifications",
"no_notifs": "You have no new notifications",
"see_all": "Spy wit' ye eye all ye notifications",
"back_to_home": "Take me back!",
"outgoing_link": "Go offshore",
"outgoing_link_message": "Ye be goin' offshore",
"continue_to": "Continue to",
"return_to": "Return to"
}

View File

@@ -1,15 +0,0 @@
{
"home": "Home",
"unread": "Unread Topics",
"popular": "Popular Topics",
"recent": "Recent Topics",
"users": "Registered Users",
"notifications": "Notifications",
"user.edit": "Editing \"%1\"",
"user.following": "People %1 Follows",
"user.followers": "People who Follow %1",
"user.posts": "Posts made by %1",
"user.topics": "Topics created by %1",
"user.favourites": "%1's Favourite Posts",
"user.settings": "User Settings"
}

View File

@@ -1,7 +0,0 @@
{
"title": "Recent",
"day": "Day",
"week": "Week",
"month": "Month",
"no_recent_topics": "There be no recent topics."
}

View File

@@ -1,18 +0,0 @@
{
"register": "Board the ship",
"help.email": "By default, your email will be hidden from the public.",
"help.username_restrictions": "A unique username between %1 and %2 characters. Others can mention you with @<span id='yourUsername'>username</span>.",
"help.minimum_password_length": "Your password's length must be at least %1 characters.",
"email_address": "Email Address",
"email_address_placeholder": "Enter Email Address",
"username": "Username",
"username_placeholder": "Enter Username",
"password": "Password",
"password_placeholder": "Enter Password",
"confirm_password": "Confirm Password",
"confirm_password_placeholder": "Confirm Password",
"register_now_button": "Register Now",
"alternative_registration": "Alternative Registration",
"terms_of_use": "Terms of Use",
"agree_to_terms_of_use": "I agree to the Terms of Use"
}

View File

@@ -1,14 +0,0 @@
{
"reset_password": "Reset Password",
"update_password": "Update Password",
"password_changed.title": "Password Changed",
"password_changed.message": "<p>Password successfully reset, please <a href=\"/login\">log in again</a>.",
"wrong_reset_code.title": "Incorrect Reset Code",
"wrong_reset_code.message": "The reset code received was incorrect. Please try again, or <a href=\"/reset\">request a new reset code</a>.",
"new_password": "New Password",
"repeat_password": "Confirm Password",
"enter_email": "Please enter your <strong>email address</strong> and we will send you an email with instructions on how to reset your account.",
"enter_email_address": "Enter Email Address",
"password_reset_sent": "Password Reset Sent",
"invalid_email": "Invalid Email / Email does not exist!"
}

View File

@@ -1,93 +0,0 @@
{
"topic": "Topic",
"topics": "Topics",
"topic_id": "Topic ID",
"topic_id_placeholder": "Enter topic ID",
"no_topics_found": "No topics found!",
"no_posts_found": "No posts found!",
"profile": "Profile",
"posted_by": "Posted by",
"chat": "Chat",
"notify_me": "Be notified of new replies in this topic",
"quote": "Quote",
"reply": "Reply",
"edit": "Edit",
"delete": "Delete",
"restore": "Restore",
"move": "Move",
"fork": "Fork",
"banned": "banned",
"link": "Link",
"share": "Share",
"tools": "Tools",
"flag": "Flag",
"bookmark_instructions": "Click here to return to your last position or close to discard.",
"flag_title": "Flag this post for moderation",
"flag_confirm": "Are you sure you want to flag this post?",
"flag_success": "This post has been flagged for moderation.",
"deleted_message": "This thread has been deleted. Only users with thread management privileges can see it.",
"following_topic.title": "Following Topic",
"following_topic.message": "You will now be receiving notifications when somebody posts to this topic.",
"not_following_topic.title": "Not Following Topic",
"not_following_topic.message": "You will no longer receive notifications from this topic.",
"login_to_subscribe": "Please register or log in in order to subscribe to this topic.",
"markAsUnreadForAll.success": "Topic marked as unread for all.",
"watch": "Watch",
"watch.title": "Be notified of new replies in this topic",
"share_this_post": "Share this Post",
"thread_tools.title": "Thread Tools",
"thread_tools.markAsUnreadForAll": "Mark Unread",
"thread_tools.pin": "Pin Topic",
"thread_tools.unpin": "Unpin Topic",
"thread_tools.lock": "Lock Topic",
"thread_tools.unlock": "Unlock Topic",
"thread_tools.move": "Move Topic",
"thread_tools.fork": "Fork Topic",
"thread_tools.delete": "Delete Topic",
"thread_tools.delete_confirm": "Are you sure you want to delete this thread?",
"thread_tools.restore": "Restore Topic",
"thread_tools.restore_confirm": "Are you sure you want to restore this thread?",
"post_delete_confirm": "Are you sure you want to delete this post?",
"post_restore_confirm": "Are you sure you want to restore this post?",
"post_delete_error": "Could not delete this post!",
"post_restore_error": "Could not restore this post!",
"load_categories": "Loading Categories",
"disabled_categories_note": "Disabled Categories are greyed out",
"confirm_move": "Move",
"confirm_fork": "Fork",
"favourite": "Favourite",
"favourites": "Favourites",
"favourites.not_logged_in.title": "Not Logged In",
"favourites.not_logged_in.message": "Please log in in order to favourite this post",
"favourites.has_no_favourites": "You don't have any favourites, favourite some posts to see them here!",
"vote.not_logged_in.title": "Not Logged In",
"vote.not_logged_in.message": "Please log in in order to vote",
"vote.cant_vote_self.title": "Invalid Vote",
"vote.cant_vote_self.message": "You cannot vote for your own post",
"loading_more_posts": "Loading More Posts",
"move_topic": "Move Topic",
"move_post": "Move Post",
"fork_topic": "Fork Topic",
"topic_will_be_moved_to": "This topic will be moved to the category",
"fork_topic_instruction": "Click the posts you want to fork",
"fork_no_pids": "No posts selected!",
"fork_success": "Succesfully forked topic!",
"reputation": "Reputation",
"posts": "Posts",
"composer.title_placeholder": "Enter your topic title here...",
"composer.write": "Write",
"composer.preview": "Preview",
"composer.help": "Help",
"composer.discard": "Discard",
"composer.submit": "Submit",
"composer.replying_to": "Replying to",
"composer.new_topic": "New Topic",
"composer.uploading": "uploading...",
"composer.thumb_url_label": "Paste a topic thumbnail URL",
"composer.thumb_title": "Add a thumbnail to this topic",
"composer.thumb_url_placeholder": "http://example.com/thumb.png",
"composer.thumb_file_label": "Or upload a file",
"composer.thumb_remove": "Clear fields",
"composer.drag_and_drop_images": "Drag and Drop Images Here",
"composer.upload_instructions": "Upload images by dragging & dropping them."
}

View File

@@ -1,6 +0,0 @@
{
"title": "Unread",
"no_unread_topics": "There be no unread topics.",
"mark_all_read": "I seen 'em all!",
"load_more": "Giv'er more"
}

View File

@@ -1,55 +0,0 @@
{
"banned": "Blackmarked",
"offline": "Asleep at the wheel",
"username": "User Name",
"email": "Email",
"fullname": "Full Name",
"website": "Website",
"location": "Location",
"age": "Age",
"joined": "Joined",
"lastonline": "Last Online",
"profile": "Profile",
"profile_views": "Profile views",
"reputation": "Reputation",
"posts": "Posts",
"favourites": "Favourites",
"followers": "Followers",
"following": "Following",
"signature": "Signature",
"gravatar": "Gravatar",
"birthday": "Birthday",
"chat": "Chat",
"follow": "Follow",
"unfollow": "Unfollow",
"change_picture": "Change Picture",
"edit": "Edit",
"uploaded_picture": "Uploaded Picture",
"upload_new_picture": "Upload New Picture",
"current_password": "Current Password",
"change_password": "Change Password",
"change_password_error": "Invalid Password!",
"change_password_error_wrong_current": "Your current password is not correct!",
"change_password_error_length": "Password too short!",
"change_password_error_match": "Passwords must match!",
"change_password_error_privileges": "You are not have the rights to change this password.",
"change_password_success": "Your password is updated!",
"confirm_password": "Confirm Password",
"password": "Password",
"upload_picture": "Upload picture",
"upload_a_picture": "Upload a picture",
"image_spec": "You may only upload PNG, JPG, or GIF files",
"max": "max.",
"settings": "Settings",
"show_email": "Show My Email",
"has_no_follower": "This user doesn't have any followers :(",
"follows_no_one": "This user isn't following anyone :(",
"has_no_posts": "This user didn't post anything yet.",
"has_no_topics": "This user didn't post any topics yet.",
"email_hidden": "Email Hidden",
"hidden": "hidden",
"paginate_description": "Paginate topics and posts instead of using infinite scroll.",
"topics_per_page": "Topics per Page",
"posts_per_page": "Posts per Page",
"notification_sounds": "Play a sound when you receive a notification."
}

View File

@@ -1,9 +0,0 @@
{
"latest_users": "Land lubbers",
"top_posters": "Top mateys",
"most_reputation": "Most Reputation",
"online": "Online",
"search": "Search",
"enter_username": "Gimme y'er handle",
"load_more": "Load More"
}

View File

@@ -1,20 +0,0 @@
{
"invalid-data": "Invalid Data",
"not-logged-in": "You don't seem to be logged in, so you cannot reply.",
"invalid-cid": "Invalid Category ID",
"no-category": "Category doesn't exist",
"no-topic": "Topic doesn't exist",
"no-privileges": "You don't have enough privileges for this action.",
"topic-locked": "Topic Locked",
"still-uploading" : "Please wait for uploads to complete.",
"content-too-short" : "Please enter a longer post. At least %1 characters.",
"title-too-short" : "Please enter a longer title. At least %1 characters.",
"title-too-long" : "Please enter a shorter title. Titles can't be longer than %1 characters.",
"too-many-posts" : "You can only post every %1 seconds.'",
"file-too-big" : "Maximum allowed file size is %1 kbs"
}

View File

@@ -1,7 +0,0 @@
{
"stats.online": "Online",
"stats.users": "Users",
"stats.topics": "Topics",
"stats.posts": "Posts",
"success": "success"
}

View File

@@ -1,73 +0,0 @@
{
"home": "Home",
"search": "Search",
"buttons.close": "Close",
"403.title": "Access Denied",
"403.message": "You seem to have stumbled upon a page that you do not have access to. Perhaps you should <a href='/login'>try logging in</a>?",
"404.title": "Not Found",
"404.message": "You seem to have stumbled upon a page that does not exist. Return to the <a href='/'>home page</a>.",
"500.title": "Internal error.",
"500.message": "Oops! Looks like something went wrong!",
"register": "Register",
"login": "Login",
"please_log_in": "Please Log In",
"logout": "Logout",
"posting_restriction_info": "Posting is currently restricted to registered members only, click here to log in.",
"welcome_back": "Welcome Back ",
"you_have_successfully_logged_in": "You have successfully logged in",
"save_changes": "Save Changes",
"close": "Close",
"pagination": "Pagination",
"header.admin": "Admin",
"header.recent": "Recent",
"header.unread": "Unread",
"header.popular": "Popular",
"header.users": "Users",
"header.chats": "Chats",
"header.notifications": "Notifications",
"header.search": "Search",
"header.profile": "Profile",
"notifications.loading": "Loading Notifications",
"chats.loading": "Loading Chats",
"motd.welcome": "Welcome to NodeBB, the discussion platform of the future.",
"previouspage": "Previous Page",
"nextpage": "Next Page",
"alert.success": "Success",
"alert.error": "Error",
"alert.banned": "Banned",
"alert.banned.message": "You are banned you will be logged out!",
"alert.unfollow": "You are no longer following %1!",
"alert.follow": "You are now following %1!",
"posts": "Posts",
"views": "Views",
"posted": "posted",
"in": "in",
"norecentposts": "No Recent Posts",
"norecenttopics": "No Recent Topics",
"recentposts": "Recent Posts",
"recentips": "Recently Logged In IPs",
"online": "Online",
"away": "Away",
"dnd": "Do not Disturb",
"invisible": "Invisible",
"offline": "Offline",
"privacy": "Privacy"
}

View File

@@ -1,5 +0,0 @@
{
"name": "English (United Kingdom/Canada)",
"code": "en_GB",
"dir": "ltr"
}

View File

@@ -1,15 +0,0 @@
{
"home": "Home",
"unread": "Unread Topics",
"popular": "Popular Topics",
"recent": "Recent Topics",
"users": "Registered Users",
"notifications": "Notifications",
"user.edit": "Editing \"%1\"",
"user.following": "People %1 Follows",
"user.followers": "People who Follow %1",
"user.posts": "Posts made by %1",
"user.topics": "Topics created by %1",
"user.favourites": "%1's Favourite Posts",
"user.settings": "User Settings"
}

View File

@@ -1,7 +0,0 @@
{
"title": "Recent",
"day": "Day",
"week": "Week",
"month": "Month",
"no_recent_topics": "There are no recent topics."
}

View File

@@ -1,4 +0,0 @@
{
"topic-post": "You have successfully posted."
}

View File

@@ -1,110 +0,0 @@
{
"topic": "Topic",
"topics": "Topics",
"topic_id": "Topic ID",
"topic_id_placeholder": "Enter topic ID",
"no_topics_found": "No topics found!",
"no_posts_found": "No posts found!",
"profile": "Profile",
"posted_by": "Posted by",
"chat": "Chat",
"notify_me": "Be notified of new replies in this topic",
"quote": "Quote",
"reply": "Reply",
"edit": "Edit",
"delete": "Delete",
"restore": "Restore",
"move": "Move",
"fork": "Fork",
"banned": "banned",
"link": "Link",
"share": "Share",
"tools": "Tools",
"flag": "Flag",
"bookmark_instructions" : "Click here to return to your last position or close to discard.",
"flag_title": "Flag this post for moderation",
"flag_confirm": "Are you sure you want to flag this post?",
"flag_success": "This post has been flagged for moderation.",
"deleted_message": "This thread has been deleted. Only users with thread management privileges can see it.",
"following_topic.title": "Following Topic",
"following_topic.message": "You will now be receiving notifications when somebody posts to this topic.",
"not_following_topic.title": "Not Following Topic",
"not_following_topic.message": "You will no longer receive notifications from this topic.",
"login_to_subscribe": "Please register or log in in order to subscribe to this topic.",
"markAsUnreadForAll.success" : "Topic marked as unread for all.",
"watch": "Watch",
"watch.title": "Be notified of new replies in this topic",
"share_this_post": "Share this Post",
"thread_tools.title": "Thread Tools",
"thread_tools.markAsUnreadForAll": "Mark Unread",
"thread_tools.pin": "Pin Topic",
"thread_tools.unpin": "Unpin Topic",
"thread_tools.lock": "Lock Topic",
"thread_tools.unlock": "Unlock Topic",
"thread_tools.move": "Move Topic",
"thread_tools.fork": "Fork Topic",
"thread_tools.delete": "Delete Topic",
"thread_tools.delete_confirm": "Are you sure you want to delete this thread?",
"thread_tools.restore": "Restore Topic",
"thread_tools.restore_confirm": "Are you sure you want to restore this thread?",
"post_delete_confirm": "Are you sure you want to delete this post?",
"post_restore_confirm": "Are you sure you want to restore this post?",
"post_delete_error": "Could not delete this post!",
"post_restore_error": "Could not restore this post!",
"load_categories": "Loading Categories",
"disabled_categories_note": "Disabled Categories are greyed out",
"confirm_move": "Move",
"confirm_fork": "Fork",
"favourite": "Favourite",
"favourites": "Favourites",
"favourites.not_logged_in.title": "Not Logged In",
"favourites.not_logged_in.message": "Please log in in order to favourite this post",
"favourites.has_no_favourites": "You don't have any favourites, favourite some posts to see them here!",
"vote.not_logged_in.title": "Not Logged In",
"vote.not_logged_in.message": "Please log in in order to vote",
"vote.cant_vote_self.title": "Invalid Vote",
"vote.cant_vote_self.message": "You cannot vote for your own post",
"loading_more_posts": "Loading More Posts",
"move_topic": "Move Topic",
"move_post": "Move Post",
"fork_topic": "Fork Topic",
"topic_will_be_moved_to": "This topic will be moved to the category",
"fork_topic_instruction": "Click the posts you want to fork",
"fork_no_pids": "No posts selected!",
"fork_success": "Succesfully forked topic!",
"reputation": "Reputation",
"posts": "Posts",
"composer.title_placeholder": "Enter your topic title here...",
"composer.write": "Write",
"composer.preview": "Preview",
"composer.help": "Help",
"composer.discard": "Discard",
"composer.submit": "Submit",
"composer.replying_to": "Replying to",
"composer.new_topic": "New Topic",
"composer.uploading": "uploading...",
"composer.thumb_url_label": "Paste a topic thumbnail URL",
"composer.thumb_title": "Add a thumbnail to this topic",
"composer.thumb_url_placeholder": "http://example.com/thumb.png",
"composer.thumb_file_label": "Or upload a file",
"composer.thumb_remove": "Clear fields",
"composer.drag_and_drop_images": "Drag and Drop Images Here",
"composer.upload_instructions": "Upload images by dragging & dropping them."
}

View File

@@ -1,9 +0,0 @@
{
"title": "Unread",
"no_unread_topics": "There are no unread topics.",
"load_more": "Load More",
"mark_as_read": "Mark as Read",
"selected": "Selected",
"all": "All",
"topics_marked_as_read.success": "Topics marked as read!"
}

View File

@@ -1,62 +0,0 @@
{
"banned": "Banned",
"offline": "Offline",
"username": "User Name",
"email": "Email",
"fullname": "Full Name",
"website": "Website",
"location": "Location",
"age": "Age",
"joined": "Joined",
"lastonline": "Last Online",
"profile": "Profile",
"profile_views": "Profile views",
"reputation": "Reputation",
"posts": "Posts",
"favourites":"Favourites",
"followers": "Followers",
"following": "Following",
"signature": "Signature",
"gravatar": "Gravatar",
"birthday": "Birthday",
"chat": "Chat",
"follow": "Follow",
"unfollow": "Unfollow",
"change_picture": "Change Picture",
"edit": "Edit",
"uploaded_picture": "Uploaded Picture",
"upload_new_picture": "Upload New Picture",
"current_password": "Current Password",
"change_password": "Change Password",
"change_password_error": "Invalid Password!",
"change_password_error_wrong_current": "Your current password is not correct!",
"change_password_error_length": "Password too short!",
"change_password_error_match": "Passwords must match!",
"change_password_error_privileges": "You are not have the rights to change this password.",
"change_password_success": "Your password is updated!",
"confirm_password": "Confirm Password",
"password": "Password",
"upload_picture": "Upload picture",
"upload_a_picture": "Upload a picture",
"image_spec": "You may only upload PNG, JPG, or GIF files",
"max": "max.",
"settings": "Settings",
"show_email": "Show My Email",
"has_no_follower": "This user doesn't have any followers :(",
"follows_no_one": "This user isn't following anyone :(",
"has_no_posts": "This user didn't post anything yet.",
"has_no_topics": "This user didn't post any topics yet.",
"email_hidden": "Email Hidden",
"hidden": "hidden",
"paginate_description" : "Paginate topics and posts instead of using infinite scroll.",
"topics_per_page": "Topics per Page",
"posts_per_page": "Posts per Page",
"notification_sounds" : "Play a sound when you receive a notification."
}

View File

@@ -1,12 +1,14 @@
{
"new_topic_button": "Nuevo Tema",
"no_topics": "<strong>No hay temas en esta categoría.</strong><br />Por que no te animas y publicas uno?",
"posts": "respuestas",
"views": "visitas",
"posted": "posted",
"browsing": "viendo ahora",
"no_replies": "Nadie ha respondido aún",
"replied": "respondió",
"last_edited_by": "ultima edición por",
"share_this_category": "Compartir esta categoría"
"new_topic_button": "Nuevo Tema",
"no_topics": "<strong>No hay temas en esta categoría.</strong><br />Por que no te animas y publicas uno?",
"sidebar.recent_replies": "Respuestas recientes",
"sidebar.active_participants": "Miembros más activos",
"sidebar.moderators": "Moderadores",
"posts": "respuestas",
"views": "visitas",
"posted": "posted",
"browsing": "viendo ahora",
"no_replies": "Nadie ha respondido aún",
"replied": "respondio",
"last_edited_by": "ultima edición por"
}

View File

@@ -1,7 +1,10 @@
{
"stats.online": "Online",
"stats.users": "Gente",
"stats.topics": "Temas",
"stats.posts": "Posts",
"success": "éxito!"
"chat.chatting_with": "Chatear con <span id='chat-with-name'></span>",
"chat.placeholder": "ingresa tu mensaje aqui, y presiona enter para enviar",
"chat.send": "Enviar",
"stats.online": "Online",
"stats.users": "Usuarios",
"stats.topics": "Temas",
"stats.posts": "Posts",
"success": "exito!"
}

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