Compare commits

...

731 Commits

Author SHA1 Message Date
Julian Lam
15ac9cb5c4 updated shrinkwrap file 2015-08-27 16:55:47 -04:00
Julian Lam
78d126a34e Merge remote-tracking branch 'origin/master' into v0.8.x 2015-08-27 16:52:34 -04:00
psychobunny
00eea65a70 up'd persona, welcome to 0.8.0 2015-08-27 16:51:21 -04:00
Julian Lam
85a609cae3 Merge branch 'master' into v0.8.x 2015-08-27 16:49:49 -04:00
barisusakli
e171b544e9 fix 404 title on api calls 2015-08-27 16:43:14 -04:00
psychobunny
dbc9c07b55 403 browser title 2015-08-27 16:34:01 -04:00
psychobunny
0eca875f6e add site title to 404, on cold load anyways 2015-08-27 16:30:43 -04:00
Julian Lam
141999a97c Merge remote-tracking branch 'origin/master' into v0.8.x 2015-08-27 16:20:25 -04:00
psychobunny
4b91d7ec3d req.route is not defined if you go to some bogus url 2015-08-27 16:18:55 -04:00
psychobunny
54ec105986 random attempt to fix bad dep check 2015-08-27 16:09:35 -04:00
Julian Lam
f11446e0bc added shrinkwrap file 2015-08-27 16:08:33 -04:00
psychobunny
8dbc7fdd9c up'd person 2015-08-27 15:56:49 -04:00
Julian Lam
dd7d2615dd latest translations 2015-08-27 15:57:00 -04:00
Julian Lam
3fcfa340ee updated plugin and theme dependency versions 2015-08-27 15:45:55 -04:00
barisusakli
6810b529c9 prevent infinite loop on topic scroll to bottom 2015-08-27 15:32:33 -04:00
psychobunny
822b45e193 Merge branch 'v0.8.x' 2015-08-27 15:29:26 -04:00
psychobunny
4b5f67eb4d use [[pages:home]] instead 2015-08-27 15:28:46 -04:00
psychobunny
5dae60faff closes #3502 2015-08-27 15:26:53 -04:00
psychobunny
61cc0ee597 /categories: og:title and <title> should be the same 2015-08-27 15:07:26 -04:00
psychobunny
53c8d54d57 upping themes 2015-08-27 14:59:22 -04:00
psychobunny
82d39753b7 hint 2015-08-27 14:53:53 -04:00
psychobunny
b10a7d4410 notifications/icon component 2015-08-27 14:52:39 -04:00
psychobunny
80218961aa Merge branch 'master' into v0.8.x 2015-08-27 14:28:12 -04:00
psychobunny
8cc91ea6e7 fix crash in middleware.renderHeader 2015-08-27 14:27:45 -04:00
psychobunny
b66a58dd52 user/status: don't touch the other classes
fixes that 2px thing @julianlam
2015-08-27 14:07:24 -04:00
psychobunny
b7c8d4e5af 0.8.0 2015-08-27 14:00:15 -04:00
psychobunny
541080777f Merge branch 'persona-2.1' into v0.8.x 2015-08-27 13:59:44 -04:00
psychobunny
25a419e458 Merge branch 'master' into v0.8.x 2015-08-27 13:59:12 -04:00
psychobunny
12015c1728 persona 2.1.4 2015-08-27 13:19:04 -04:00
psychobunny
d923fa3997 up'd persona 2015-08-27 12:46:06 -04:00
psychobunny
b5c7a34aa5 persona 2.1.1 2015-08-27 12:34:44 -04:00
psychobunny
54d996ca6a fixed user/logout component + vanilla 3.1.2 2015-08-27 12:24:58 -04:00
psychobunny
b19120f822 user/logout componen 2015-08-27 12:20:45 -04:00
psychobunny
e9a42cdecb fixed notifications on deskto 2015-08-27 11:48:08 -04:00
psychobunny
1947a4aea6 vanilla 3.1.0 2015-08-26 17:58:35 -04:00
psychobunny
71f144eb49 nbb 0.7.4 2015-08-26 17:53:23 -04:00
psychobunny
a44f467ebc Notifications.loadNotifications() 2015-08-26 17:52:36 -04:00
psychobunny
2301362f59 component="header/usercontrol"; also fixes user status bug 2015-08-26 17:12:34 -04:00
psychobunny
a663f95669 chats.loadChats() 2015-08-26 16:32:32 -04:00
psychobunny
63be875daa header/userpicture, header/profilelink, header/username components 2015-08-26 16:28:10 -04:00
psychobunny
2e33ae2742 Merge branch 'master' into persona-2.1 2015-08-26 16:25:57 -04:00
psychobunny
6e714a5344 Revert "header/userpicture, header/profilelink, header/username components"
This reverts commit d1effa65d0.
2015-08-26 16:25:05 -04:00
psychobunny
d1effa65d0 header/userpicture, header/profilelink, header/username components 2015-08-26 16:19:08 -04:00
psychobunny
306964b4ea chat/dropdown and chat/list component 2015-08-26 15:58:53 -04:00
barisusakli
0bf8b279de fix typo 2015-08-26 15:58:51 -04:00
barisusakli
5c19bf31c9 removed breaking change 2015-08-26 15:58:27 -04:00
barisusakli
eaefd9d24c remove meta/title.js and meta.title.build #3481 2015-08-26 15:55:00 -04:00
psychobunny
098c56a106 global:header.navigation 2015-08-26 15:38:09 -04:00
psychobunny
4aec30788c closes #3499 2015-08-26 15:08:48 -04:00
psychobunny
d75f5574e0 #3499 2015-08-26 15:06:16 -04:00
psychobunny
a217b42cb1 bonus two for #3481 - chats/username route 2015-08-26 14:09:22 -04:00
psychobunny
22fc257e36 bonus for #3481 - groups/group route 2015-08-26 14:06:53 -04:00
psychobunny
89b8622cfa other routes done, closes #3481 2015-08-26 13:56:28 -04:00
psychobunny
671f96f589 duplicate route removed: /users redirected to /users/online 2015-08-26 13:51:50 -04:00
psychobunny
0e0d8474a4 page titles for user pages #3481 2015-08-26 13:48:27 -04:00
psychobunny
51f05e3d22 persona 2.0.27 2015-08-26 13:38:59 -04:00
psychobunny
d96ef5264d upping persona 2015-08-26 12:28:30 -04:00
psychobunny
47a7347b54 better mobile support for appearance/themes and appearance/skins 2015-08-26 12:01:06 -04:00
psychobunny
0cb722b9fa prevent floating button from getting hidden behind other components 2015-08-26 11:56:18 -04:00
Julian Lam
92f9553033 Resolved transifex language issue 2015-08-26 11:21:55 -04:00
Julian Lam
e003fb38a3 Close #3497 2015-08-26 10:57:20 -04:00
barisusakli
d644542143 clearer text 2015-08-26 01:03:02 -04:00
barisusakli
958bb24d4e #3492 2015-08-25 23:50:41 -04:00
Julian Lam
ea9f5cbc61 adding in another deprecated hook to the warning list 2015-08-25 17:52:52 -04:00
Julian Lam
a1d5132777 Deprecated filter:user.delete hook
Please use static:user.delete instead.
2015-08-25 17:48:29 -04:00
psychobunny
6c44db9a0c closes #3490 2015-08-25 17:05:48 -04:00
psychobunny
8372b291e4 closes #3482 2015-08-25 16:41:09 -04:00
psychobunny
6edb920d6d closes #3488 2015-08-25 16:36:41 -04:00
psychobunny
cd7f9c7523 fix for disableCustomUserSkins 2015-08-25 16:27:58 -04:00
psychobunny
9323a37bd1 disableCustomUserSkins setting 2015-08-25 16:27:56 -04:00
barisusakli
5ef58d0434 up theme versions 2015-08-25 14:58:20 -04:00
barisusakli
3a3539aefb up composer version 2015-08-25 13:31:33 -04:00
barisusakli
cf36f7bc79 closes #3468 2015-08-25 13:29:44 -04:00
Julian Lam
edba11f388 If a plugin version is defined in package.json, suggest that as the latest version 2015-08-25 12:22:25 -04:00
Julian Lam
1772041b6e fixed invocation of clickdn in snackbar 2015-08-25 11:21:33 -04:00
psychobunny
7210ffdde9 only need to translate bootbox's footer 2015-08-24 17:43:42 -04:00
psychobunny
29859335a8 do md style dropdowns only on mobile @julianlam 2015-08-24 17:36:10 -04:00
psychobunny
3e1ddb1e2c for old people like @barisusakli 2015-08-24 17:30:44 -04:00
psychobunny
3145e75fc0 closes #3485 2015-08-24 17:16:29 -04:00
barisusakli
07d12e85ae closes https://github.com/NodeBB/nodebb-theme-persona/issues/124 2015-08-24 17:04:23 -04:00
barisusakli
c1ef884fce update password dep 2015-08-24 16:26:45 -04:00
barisusakli
6e23b3f258 update theme versions 2015-08-24 16:05:11 -04:00
barisusakli
5b3601994c Merge branch 'master' of https://github.com/NodeBB/NodeBB 2015-08-24 16:01:57 -04:00
barisusakli
def3e06ba3 closes #3483 2015-08-24 16:01:50 -04:00
psychobunny
19a3950928 don't blow up if no skin was selected 2015-08-24 16:01:35 -04:00
psychobunny
ae318c4286 fixed alignment on themes page 2015-08-24 15:29:38 -04:00
psychobunny
5a90de55d8 removed missing css file 2015-08-24 15:15:58 -04:00
Julian Lam
9289178a2e fixed incorrect label 2015-08-24 14:32:27 -04:00
Julian Lam
46af72336a updated ACP dropdown toggle so it's thicker 2015-08-24 13:52:13 -04:00
Julian Lam
a27c8f0321 Exposed package data for incompatible plugins to admin/plugins controller, #3480
ping @psychobunny
2015-08-24 13:41:25 -04:00
Julian Lam
902d11c6af Fix #3470 2015-08-24 11:34:09 -04:00
Julian Lam
7de782c78b Close #3476
Upgraded theme minimum versions, containing fixes for a "bug" where the container was a couple px too large due to a missing class.
2015-08-24 10:59:55 -04:00
Julian Lam
a682c98626 Merge pull request #3474 from FokkeZB/patch-5
Only use semver.satisfies on valid ranges
2015-08-24 09:58:02 -04:00
Fokke Zandbergen
36c27633b9 Only use semver.satisfies on valid ranges
So it doesn't alarm when you use a package straight from git e.g.
2015-08-24 15:22:08 +02:00
Barış Soner Uşaklı
1a6e576483 async 2015-08-23 22:16:48 -07:00
barisusakli
6ce6503970 mark register notif read when its rejected 2015-08-23 14:21:43 -04:00
barisusakli
db90d19b45 fix password confirm 2015-08-22 16:08:37 -04:00
barisusakli
2781939c50 Merge remote-tracking branch 'origin/master'
Conflicts:
	package.json
2015-08-22 15:17:37 -04:00
barisusakli
fc29028920 up persona 2015-08-22 15:16:34 -04:00
psychobunny
48cb671916 fixes #3465
temporary until stopforumspam supports ipv6
2015-08-22 12:50:55 -04:00
psychobunny
d1aaa9ca07 mobile fixes for homepage, languages, sounds 2015-08-22 12:39:52 -04:00
psychobunny
53ce7d48fa fixed padding issue on mobile acp 2015-08-22 12:36:42 -04:00
psychobunny
cd83dcf2e0 better styling for snackbar on mobile 2015-08-22 12:33:14 -04:00
psychobunny
7fa4057051 overrideTimeago only needs to be called once 2015-08-22 12:21:51 -04:00
psychobunny
0caa095ea4 closes #3457 2015-08-22 12:20:17 -04:00
psychobunny
12518e095f upping theme versions 2015-08-22 12:04:00 -04:00
psychobunny
36110db90c closes #3464 2015-08-22 12:03:34 -04:00
psychobunny
0cb8f2b80c closes #3463 2015-08-21 22:28:05 -04:00
psychobunny
6b054a6d14 new acp mobile menu, completed 2015-08-21 18:50:22 -04:00
psychobunny
cc299f89e2 mobile menu for ACP first pass 2015-08-21 18:40:59 -04:00
psychobunny
82429c10db slideout 2015-08-21 18:29:37 -04:00
psychobunny
1f9dbd3cf2 hamburger button 2015-08-21 18:26:44 -04:00
psychobunny
cb071f3772 md-like positioning for dropdown menu 2015-08-21 18:15:43 -04:00
psychobunny
acdfb87117 compact header on mobile 2015-08-21 18:15:32 -04:00
psychobunny
ea3fa0ff1d md snackbar for acp 2015-08-21 17:46:14 -04:00
psychobunny
a313bc69e2 fix alignment on checkboxes that are first in a form 2015-08-21 17:16:35 -04:00
Barış Soner Uşaklı
113a2aa398 composer 1.0.11 2015-08-21 14:16:29 -04:00
Barış Soner Uşaklı
76c0e33bcb filter links and children 2015-08-21 14:15:41 -04:00
Julian Lam
0e8482ebfe removing hash from url 2015-08-21 12:32:21 -04:00
Julian Lam
dbf8f5f70c Fix internal link to User Registration Settings from Registration Queue 2015-08-21 12:27:31 -04:00
psychobunny
28bd915a7b fixed settings pages 2015-08-21 12:22:48 -04:00
psychobunny
11e082989d fix route to admin/manage/registration page 2015-08-21 12:13:42 -04:00
Julian Lam
141174ac94 Fix ACP active state issue
Apparently, all this time, there was a bug that caused active
states to not properly be shown in subfolder installations. This
commit fixes that regression. ping @psychobunny
2015-08-21 10:53:47 -04:00
psychobunny
7420351eb7 Merge remote-tracking branch 'origin/master' 2015-08-21 10:36:08 -04:00
psychobunny
eb49898a9c mobile tweaks for settings pages 2015-08-21 10:35:55 -04:00
Julian Lam
5f9990299f Pass a notification path when a user follows another
When a user followed another, a notification is created, but with
no path, so on plugins like pushbullet, it would default to trying
to build a topic url, but the required values were null, leading to
a broken url.
2015-08-21 10:32:14 -04:00
psychobunny
fdb3046224 tablet mode fix 2015-08-21 10:24:16 -04:00
psychobunny
2317779a2b really basic mobile support, until we get a slideout menu in 2015-08-21 10:22:54 -04:00
psychobunny
cdc351bc02 fixed acp search 2015-08-21 10:11:19 -04:00
psychobunny
e4c9b379b2 customise - checkboxes 2015-08-21 10:01:13 -04:00
psychobunny
d9040f18e6 use branding for checkbox 2015-08-21 09:59:07 -04:00
psychobunny
c97631b060 settings checkboxes - webcrawler, tags, advanced 2015-08-21 09:53:33 -04:00
psychobunny
4bca984b67 settings/pagination checkbox 2015-08-20 23:42:02 -04:00
psychobunny
0fcdfe318a settings/post checkboxes 2015-08-20 23:41:31 -04:00
psychobunny
520351c3cc fixed race condition onload for settings (surprised nobody qq'd about this before) 2015-08-20 23:39:33 -04:00
psychobunny
fc858b7cbc settings/guest checkboxes 2015-08-20 23:38:23 -04:00
psychobunny
656476620e fix new checkboxes on ajaxify 2015-08-20 23:36:59 -04:00
psychobunny
bf7896a264 settings/group checkboxes 2015-08-20 23:31:09 -04:00
psychobunny
4d78f8a68d settings/user checkbox 2015-08-20 23:28:27 -04:00
psychobunny
980d44975a settings/email checkboxes 2015-08-20 23:24:39 -04:00
psychobunny
c38bf4bc6f settings/reputation checkboxes 2015-08-20 23:23:15 -04:00
psychobunny
5ede82e246 setting/general checkboxes 2015-08-20 23:22:19 -04:00
psychobunny
6dbd7cad84 done with this stupid checkbox experiment 2015-08-20 23:16:54 -04:00
psychobunny
f234f653f8 fix bug where menu items weren't clickable 2015-08-20 19:58:37 -04:00
psychobunny
0b683ff8dd search bar placement tweak 2015-08-20 19:55:18 -04:00
psychobunny
d091729de3 search bar and restart menu completed 2015-08-20 19:39:44 -04:00
psychobunny
98a10bba89 header dropdown menu 2015-08-20 19:12:34 -04:00
psychobunny
6b37ec74cc styled flags 2015-08-20 16:34:22 -04:00
psychobunny
cd38f2da9c moved registration queue to its own page; styled 2015-08-20 16:31:23 -04:00
psychobunny
d72ffb3078 added authentication section to settings/user 2015-08-20 16:25:37 -04:00
psychobunny
21e4a00f0e fix pill flicker on manage/users 2015-08-20 16:19:49 -04:00
psychobunny
52d05da725 manage/tags buttons 2015-08-20 16:17:07 -04:00
psychobunny
e7fe088720 navigation save button 2015-08-20 16:14:39 -04:00
psychobunny
2dd612bb19 styled general/homepage 2015-08-20 16:11:56 -04:00
psychobunny
52871fe746 custom css save button 2015-08-20 16:08:39 -04:00
psychobunny
3353fc8b0e Merge branch 'master' into acp-paper
Conflicts:
	package.json
2015-08-20 16:05:08 -04:00
psychobunny
1ce464c7c0 themes page, done 2015-08-20 16:04:33 -04:00
psychobunny
fd46b31d6e fixed selection of skins 2015-08-20 16:00:25 -04:00
barisusakli
67bf130e6a up widget essentials 2015-08-20 15:59:21 -04:00
barisusakli
7fbab5402a closes #3381 2015-08-20 15:56:47 -04:00
psychobunny
181bb9a6a7 theme selection buttons 2015-08-20 15:49:44 -04:00
psychobunny
88c466bf3f fixed theme selection 2015-08-20 15:38:45 -04:00
psychobunny
b62cf2ad14 fix selection of skins 2015-08-20 15:37:16 -04:00
psychobunny
867c09bab6 revert theme: default theme is now persona 2015-08-20 15:35:29 -04:00
psychobunny
1e2fb5cd4c undo button for skins and themes 2015-08-20 15:35:09 -04:00
psychobunny
9af6a122ff general/sonuds 2015-08-20 15:27:38 -04:00
psychobunny
86d1494467 general/languages 2015-08-20 15:24:48 -04:00
psychobunny
9dcaafdb1b widgets save button 2015-08-20 15:21:35 -04:00
psychobunny
dfa4f47289 save / create buttons for categories/category 2015-08-20 15:19:43 -04:00
psychobunny
f3c70473c3 save button on settings page 2015-08-20 15:12:17 -04:00
psychobunny
96a19f47b7 Merge branch 'master' into acp-paper 2015-08-20 14:59:01 -04:00
psychobunny
969522c2d2 manage/categories 2015-08-20 14:58:58 -04:00
psychobunny
48d61b8048 Merge branch 'master' into acp-paper 2015-08-20 14:47:53 -04:00
psychobunny
ccce0994bf updated themes 2015-08-20 14:47:51 -04:00
barisusakli
4e3e603ee7 closes #3456 2015-08-20 14:43:34 -04:00
psychobunny
a2fd970792 fix skin screenshots 2015-08-20 14:34:17 -04:00
psychobunny
e4fa7c136a updated theme versions 2015-08-20 14:31:09 -04:00
barisusakli
49afe544e1 recursive #3227 2015-08-20 14:23:29 -04:00
psychobunny
d5b88e9c35 fixed markup on /group page 2015-08-20 14:20:13 -04:00
psychobunny
26858436b6 fix for acp subpage nav 2015-08-20 14:13:21 -04:00
psychobunny
e04495b012 underped tags page 2015-08-20 14:06:41 -04:00
psychobunny
cbb2453c08 minor styling to tags page 2015-08-20 14:00:56 -04:00
psychobunny
646cdf9c57 manage/category 2015-08-20 13:55:59 -04:00
psychobunny
bd494207eb got rid of that fancy edit for cat name/desc + improved layout for settings 2015-08-20 13:40:22 -04:00
psychobunny
ffd38b8cc3 some UX tweaks to manage/category 2015-08-20 13:31:27 -04:00
psychobunny
28e2297e63 fixed categories layout 2015-08-20 13:24:54 -04:00
psychobunny
c6282e289a main header title + better logic 2015-08-20 13:21:12 -04:00
psychobunny
744a7d4210 extend/widgets 2015-08-20 12:41:16 -04:00
psychobunny
d1f45b6d79 extend/plugin 2015-08-20 12:35:38 -04:00
psychobunny
ec335b55cd fixed active state for install plugins submenu 2015-08-20 12:24:24 -04:00
psychobunny
4fd99e8aae removed activateMobile 2015-08-20 12:22:20 -04:00
psychobunny
cd5bb427cc appearance/customise 2015-08-20 12:20:58 -04:00
psychobunny
c35ef74c5c header tweaks 2015-08-20 12:12:55 -04:00
psychobunny
12539a158d settings - advanced, header, sockets 2015-08-20 12:10:50 -04:00
psychobunny
0eb3d05db8 settings/web-crawler 2015-08-20 12:09:08 -04:00
psychobunny
46bb289950 settings - notifications, pagination, tags 2015-08-20 12:05:44 -04:00
psychobunny
623dbaa608 settings/post 2015-08-20 12:01:33 -04:00
psychobunny
fe98624609 settings/group and settings/guest 2015-08-20 11:54:46 -04:00
psychobunny
4fdf3d19a0 settings/user 2015-08-20 11:50:48 -04:00
psychobunny
d53ae8769f settings/email 2015-08-20 11:43:40 -04:00
psychobunny
dc6950d094 settings/reputation 2015-08-20 11:41:25 -04:00
psychobunny
3c43e58d85 Merge branch 'master' into acp-paper 2015-08-20 11:39:20 -04:00
psychobunny
30970d618c dynamic title for settings pages 2015-08-20 11:39:14 -04:00
Julian Lam
e382dcab13 Reduce verbosity of plugin incompatibility errors
Instead of showing a 4-5 line warning for each potentially incompatible
plugin, we'll show the warning and then a list of plugins.
2015-08-20 11:01:59 -04:00
Julian Lam
23bb45b480 fixing plugin version checker to use satisfies again 2015-08-20 10:29:58 -04:00
Julian Lam
3464141b0f updating soundpack version min 2015-08-20 10:29:38 -04:00
Julian Lam
3c5df8a8ec removing the -dev flag from this branch 2015-08-20 10:10:28 -04:00
barisusakli
274844a07f check _resolved 2015-08-19 18:28:31 -04:00
psychobunny
2da3b34798 Merge branch 'master' into acp-paper 2015-08-19 18:20:33 -04:00
Barış Soner Uşaklı
f4da333b42 Merge pull request #3351 from yariplus/catsfixes
Fixing some issues with acp category page
2015-08-19 17:51:31 -04:00
Barış Soner Uşaklı
79e7ca50c1 Merge pull request #3160 from Alpacatty/master
General-Purpose Dockerfile
2015-08-19 17:40:24 -04:00
barisusakli
5d68a61b46 latest persona 2015-08-19 17:32:42 -04:00
barisusakli
fee08cd665 closes https://github.com/NodeBB/NodeBB/pull/3250 2015-08-19 17:14:22 -04:00
Barış Soner Uşaklı
5e9a123e70 Merge pull request #3360 from jsdream/renderHeaderHook
Add 'filter:middleware.renderHeader' hook
2015-08-19 16:58:24 -04:00
Barış Soner Uşaklı
a2bf7d4230 Merge pull request #2895 from EvSpirit/master
#2893 increment --debug-brk port value when forking js-minifier child pr...
2015-08-19 16:46:47 -04:00
Barış Soner Uşaklı
eb0fb07f05 Merge pull request #3339 from mani95lisa/patch-4
allow use github module
2015-08-19 16:15:23 -04:00
barisusakli
7db41275a3 closes #3227 2015-08-19 15:53:37 -04:00
psychobunny
ba58c83b97 acp active states for main menu 2015-08-19 15:52:31 -04:00
jsdream
103055b262 Add error check in 'filter:middleware.renderHeader' hook callback 2015-08-19 22:50:04 +03:00
psychobunny
656589f71f acp skins first pass 2015-08-19 15:43:19 -04:00
psychobunny
9389c0773e acp themes redesign first pass 2015-08-19 15:31:15 -04:00
psychobunny
30cd8d2af9 cleaned up the widgets page 👍 2015-08-19 15:09:16 -04:00
psychobunny
f0bed5a1ef new menu completed 2015-08-19 14:58:48 -04:00
Julian Lam
6f23e4bab1 changing the default base theme to persona, from vanilla 2015-08-19 14:57:49 -04:00
Julian Lam
ac46356cad Revert "changed base templates path to Persona, from Vanilla."
This reverts commit fe7f5402a8.
2015-08-19 14:54:39 -04:00
psychobunny
cc05a0a049 header menu first pass 2015-08-19 14:46:40 -04:00
barisusakli
91aa1d55dc t.js 0.2.10 2015-08-19 14:28:48 -04:00
barisusakli
2bb6631078 update t.js ver 2015-08-19 14:28:04 -04:00
barisusakli
85ae56e41d closes #3452 2015-08-19 14:17:21 -04:00
yariplus
67e450a05b Fix issues with acp category page
strange name for background size variable
invalid class selectors
hijacking of background style
2015-08-19 13:47:15 -04:00
barisusakli
878690e5f7 removed extra param 2015-08-19 13:37:48 -04:00
psychobunny
d464cb2f0d settings - automated table of contents 2015-08-19 13:27:30 -04:00
psychobunny
acb1e8a495 added a tweaked mdl.css that works with BS 2015-08-19 12:48:33 -04:00
barisusakli
aec4ee5392 crash fix 2015-08-19 12:47:57 -04:00
psychobunny
51db2012c8 removed nanoscroller 2015-08-19 12:38:54 -04:00
psychobunny
60826b1c94 temporarily disabling header 2015-08-19 12:37:48 -04:00
psychobunny
e434942a28 first pass on settings design 2015-08-19 12:36:42 -04:00
psychobunny
fed87dded6 sayonara, acp menu 2015-08-19 12:02:38 -04:00
psychobunny
685b3ce004 added bootswatch paper 3.3.5 2015-08-19 11:55:51 -04:00
barisusakli
d07fca6907 update theme versions 2015-08-19 01:21:12 -04:00
barisusakli
7a8cdfc095 added core field 2015-08-19 01:16:30 -04:00
barisusakli
537d539512 fix custom homepage 2015-08-18 18:43:14 -04:00
barisusakli
5ababdbdf0 prevent crash if data.enter is not string 2015-08-18 17:05:34 -04:00
Julian Lam
c45e182bab Fix ./nodebb upgrade process to not use programmatic npm
- Closes #3451
- Apparently, programmatically invoking npm is like opening Pandora's
box. No thanks.
2015-08-18 16:46:51 -04:00
barisusakli
830d27caef dont ignore error 2015-08-18 15:17:07 -04:00
barisusakli
7bd98a2516 closes #3427 2015-08-18 15:01:36 -04:00
barisusakli
5b87af4389 closes #3447
recursively get all children
calculate topic/post count from children
new sorted set `cid:<id>:children`
fix search query params
2015-08-18 14:17:25 -04:00
psychobunny
a990e9c3bf closes #3449 2015-08-18 11:27:22 -04:00
psychobunny
4b0f50f57e closes #3448 2015-08-18 11:02:31 -04:00
Julian Lam
3b3c383d93 adding a fallback for en_GB and en_US 2015-08-17 17:20:41 -04:00
Julian Lam
9d2c54e26a Add missing timeago locale files 2015-08-17 17:09:47 -04:00
Julian Lam
5007c3a32c latest translations 2015-08-17 17:07:39 -04:00
psychobunny
0f41654fde latest rewards-essentials 2015-08-17 16:53:43 -04:00
barisusakli
fe5f1b8c1d moved recent popular 2015-08-17 16:38:12 -04:00
psychobunny
3d962822c6 #3322 properly, @barisusakli so no need to copy pasta everywhere timeago is used 2015-08-17 16:26:35 -04:00
psychobunny
370a7ae2fb instant update for skin preview -- themes 2015-08-17 16:15:36 -04:00
psychobunny
5b1571ad1e don't need to refresh to preview updated skin #3069 2015-08-17 16:11:26 -04:00
psychobunny
9f97e8fa0c #3069 2015-08-17 15:57:04 -04:00
psychobunny
0150e0e063 closes #3069 2015-08-17 15:55:09 -04:00
psychobunny
a9035f166b fix endsWith error 2015-08-17 15:28:04 -04:00
psychobunny
c919a2817a tjs 0.2.28 2015-08-17 15:18:07 -04:00
psychobunny
275769a801 closes #3435 2015-08-17 14:54:00 -04:00
barisusakli
f4dd0c14ae update title for new posts as well 2015-08-17 13:19:20 -04:00
psychobunny
6db33f5641 unused vars 2015-08-17 12:52:03 -04:00
Julian Lam
3d9415b65e Fixes #3442 2015-08-17 12:38:31 -04:00
Julian Lam
64ab43b7fc fixed language name for Greek 2015-08-17 12:38:31 -04:00
psychobunny
f9b104192b fixing deprecated global translator call 2015-08-17 12:29:36 -04:00
psychobunny
5299e1fdc6 closes #3322 2015-08-17 12:28:16 -04:00
psychobunny
2da3761c59 closes #3446 2015-08-17 12:23:31 -04:00
psychobunny
fb34df627b upping themes #3429 2015-08-17 12:19:02 -04:00
psychobunny
b3639f3c71 closes #3429 2015-08-17 12:16:12 -04:00
psychobunny
4a4644665d upping theme versions #3445 2015-08-17 11:48:58 -04:00
psychobunny
842815e5e9 closes #3445 2015-08-17 11:47:23 -04:00
Julian Lam
08fb30378a Closes #3302
- Fixes issue where the served path for the favicon was incorrect (included relative path when one was not needed)
- Also fixes issue where favicons were just plain not served for subfolder installations
- Fixed unsemantic HTML in ACP/General regarding Site Logo and Favicon fieldsets
2015-08-17 11:45:30 -04:00
barisusakli
c70267bd23 fix indent 2015-08-14 15:15:46 -04:00
barisusakli
90b4c06c77 Merge remote-tracking branch 'origin/master' 2015-08-14 15:14:30 -04:00
barisusakli
5e3e1f8781 #3430 2015-08-14 15:14:20 -04:00
Julian Lam
c3304b5cd8 Update dependency minimum versions, and removed ^ for stability purposes 2015-08-14 10:33:53 -04:00
barisusakli
8333a5dcd9 fix filter 2015-08-13 16:03:15 -04:00
barisusakli
6e630b3cfd closes #3434, thanks to @psychobunny 2015-08-13 15:30:31 -04:00
Julian Lam
dfd840b001 Fix defaultPlugins logic to parse the incoming value 2015-08-13 14:23:09 -04:00
barisusakli
d986fc7cb6 fix indent 2015-08-13 12:49:15 -04:00
barisusakli
aab7651959 add default plugins 2015-08-13 12:47:59 -04:00
barisusakli
46bcd66297 filter system plugins from list 2015-08-13 12:33:24 -04:00
barisusakli
aeb15ed7ee moved getMonthlyPageViews to analytics 2015-08-13 12:20:53 -04:00
Barış Soner Uşaklı
235a981dd1 added mongodb memory usage 2015-08-12 16:14:48 -04:00
Barış Soner Uşaklı
fd87bedc90 fix indent 2015-08-12 14:54:49 -04:00
Barış Soner Uşaklı
0d789261a9 filter falsy check valid 2015-08-12 14:49:26 -04:00
Julian Lam
937875b0be updated mentions minver 2015-08-12 11:00:09 -04:00
Julian Lam
7160e157de added missing language.json file for Kinyarwanda 2015-08-12 10:17:38 -04:00
Ziggy
08af92c2c0 added Kinyarwanda, Murakoze cyane!! 2015-08-12 10:09:27 -04:00
Julian Lam
bd960ea6ac latest translations 2015-08-12 09:57:41 -04:00
Julian Lam
1b812068ca Fix bug where translator would split on all colons, and not just the first 2015-08-11 17:09:24 -04:00
barisusakli
f8f3e3faa7 closes https://github.com/NodeBB/nodebb-theme-persona/issues/79 2015-08-11 13:19:25 -04:00
barisusakli
9e1d5c8113 closes #3424 2015-08-10 17:57:51 -04:00
barisusakli
5a15ee7713 #3424 2015-08-10 17:18:32 -04:00
Julian Lam
a0d01a05ed Update behaviour so a theme reset sets Persona, not vanilla 2015-08-09 20:17:28 -04:00
barisusakli
3c63336063 another waterfall 2015-08-07 17:56:03 -04:00
barisusakli
8f98d03239 waterfall for topics 2015-08-07 17:25:35 -04:00
barisusakli
0534da0ed1 closes #3389 2015-08-07 16:44:20 -04:00
barisusakli
61dac1a01e closes #3390 2015-08-07 12:27:35 -04:00
barisusakli
1b9c443076 toggle browsing if all users are gone 2015-08-07 00:58:44 -04:00
barisusakli
fba6f3ba81 https://github.com/psychobunny/templates.js/issues/33 2015-08-06 16:38:20 -04:00
barisusakli
e341b80d93 use set to get groups 2015-08-06 16:25:36 -04:00
Julian Lam
e60194292f Fix a myriad of problems with the ACP/Plugins page
- Fixed #3350
- Fixed issue where the normalised API return would have the wrong id for all plugins
- Fixed issue where uninstalling a locally installed plugin via ACP would cause NodeBB to crash
- Simplified ACP/Plugins client-side code to simply refresh the page after installing or uninstalling a plugin.
2015-08-06 12:41:16 -04:00
Julian Lam
f53fb19468 Fix #3384
Resolved issue where if a bundled plugin was uninstalled, NodeBB would no longer start as the dep check could not be completed.
2015-08-04 17:00:12 -04:00
barisusakli
9604779be1 fix unreplied 2015-08-04 15:51:35 -04:00
barisusakli
f6be4efe8b when a post is moved update recent topics order 2015-08-04 14:26:03 -04:00
Julian Lam
b75dfa9f6e upped theme minvers 2015-08-04 14:10:18 -04:00
Julian Lam
56b399c900 Add new mixin, and added mixins to stylesheet.css 2015-08-04 10:34:25 -04:00
Julian Lam
ccb5094d54 Increased contacts limit to 200, from 20
So that if you have more than 20 friends (or followed > 20 people), you will see all of them (up to 200, anyway...) in the "Contacts" portion of the `/chats` route.
2015-08-04 10:14:56 -04:00
barisusakli
8ec08337aa closes #3383 2015-08-03 19:57:01 -04:00
barisusakli
808d64e0d9 delete topic bookmarks on topic purge 2015-08-02 14:42:01 -04:00
barisusakli
7c0b798036 fix indents 2015-08-01 18:45:03 -04:00
Barış Soner Uşaklı
be8aac9950 Merge pull request #3372 from jsdream/newHook2
Add 'filter:recent.build' hook
2015-08-01 17:58:35 -04:00
barisusakli
8178e210e4 Fix indents 2015-08-01 17:38:11 -04:00
Barış Soner Uşaklı
e34b30eeca Merge pull request #3369 from pejuaxel/master
Add missing localizations
2015-08-01 17:24:32 -04:00
Barış Soner Uşaklı
2968dbb9ac Merge pull request #3346 from bdharrington7/bookmark2
Saves user bookmarks on server if available
2015-08-01 17:08:40 -04:00
barisusakli
0dfe2e0e90 only display readable categories in /unread dropdown 2015-07-31 20:03:51 -04:00
jsdream
1da5b2ca34 Add 'filter:recent.build' hook 2015-07-31 16:51:55 +03:00
bdharrington7
bd26961fa6 Makes bookmark click scroll to last read instead of past it 2015-07-30 23:29:14 -07:00
bdharrington7
25203ee67e changes bookmark storage to sortedset, gets uid from socket rather than being passed from client 2015-07-30 23:13:34 -07:00
barisusakli
d5128d0513 closes #3370 2015-07-30 15:23:48 -04:00
barisusakli
e592499d48 correctly hide/show user in browsing users 2015-07-30 15:14:10 -04:00
Barış Soner Uşaklı
924692404d Merge pull request #3371 from mikicaivosevic/patch-1
Update index.js, fix outgoing XSS
2015-07-30 14:38:39 -04:00
Mikica Ivosevic
e24bd2c0e3 Update index.js, fix outgoing XSS
Fix XSS on /outgoing route
2015-07-30 18:53:20 +02:00
Axel
fc0871a79d Merge branch 'master' of https://github.com/NodeBB/NodeBB 2015-07-30 09:33:33 +02:00
Axel
91e81065dc Localize "Group Name:" 2015-07-29 21:40:41 +02:00
Axel
79d7721971 Add category and subcategories localization 2015-07-29 21:33:36 +02:00
Julian Lam
cead53ec86 Fix list behaviour in chat page 2015-07-29 15:22:00 -04:00
Julian Lam
53a1e6106e Fix bug where an empty chat message would appear in the chat modal 2015-07-29 14:31:33 -04:00
Julian Lam
98b74f848e Fix newSet detection on chat messages 2015-07-29 13:16:52 -04:00
Julian Lam
8b5195fa82 updating theme minvers again 2015-07-29 12:59:38 -04:00
Julian Lam
2593f1b4d9 Fix bug where new chat messages would not append
... due to incorrect class and id assignment of the chat modal. Regression was caused by an earlier commit that moved the
typing span elsewhere.
2015-07-29 12:58:06 -04:00
Julian Lam
81dc2b9615 updated theme minvers 2015-07-29 12:43:25 -04:00
Julian Lam
60a6775c72 Changed behaviour of the Chat Typing Notification
Instead of being placed at the bottom of the modal/list,
it will now be displayed at the top of the modal, and not
shown in the chats page at all (as it is already present
in the contact list)
2015-07-29 12:41:09 -04:00
barisusakli
47cc1083df fix mark all read 2015-07-28 15:03:20 -04:00
barisusakli
05411651b3 server side check so you can't leave admin group 2015-07-28 13:26:58 -04:00
Julian Lam
4f57227505 Merge branch 'master' into v0.8.x 2015-07-28 12:17:13 -04:00
Julian Lam
eac92b00c6 better error checking with socket broadcast method 2015-07-28 12:16:57 -04:00
Julian Lam
7e640806b5 updated dev branch version 2015-07-28 10:40:54 -04:00
Julian Lam
03b6b1e15c Fixed crash on launch if no hooks listen to filter:router.page
A previous commit added a new hook, although it executed async.each on a var without a null check, so if no hooks were registered, it was null, and not an empty array, causing async to crash.
2015-07-28 10:36:51 -04:00
Julian Lam
6348eb2bab fixed #3359 2015-07-28 10:24:46 -04:00
Julian Lam
fcebfd8f39 latest fallbacks 2015-07-28 09:37:29 -04:00
Julian Lam
2f6b9eb80a updated theme minvers 2015-07-28 09:35:19 -04:00
Julian Lam
8b59efef38 Merge pull request #3366 from pejuaxel/master
Add missing localization
2015-07-28 09:34:05 -04:00
Axel
85d7b04846 Add missing localization 2015-07-28 14:49:31 +02:00
Julian Lam
db4ac34138 latest fallbacks 2015-07-28 07:51:03 -04:00
Julian Lam
4f4e33eb15 Merge branch 'pichalite-master' 2015-07-28 07:49:50 -04:00
Julian Lam
eb5be2f671 fixed some whitespace issues and made the admin check return early, in its own block 2015-07-28 07:49:28 -04:00
Julian Lam
5ba7234bd7 Merge pull request #3362 from pejuaxel/master
Missing localization
2015-07-28 07:49:10 -04:00
Julian Lam
d10fd6248e Merge branch 'master' of https://github.com/pichalite/NodeBB into pichalite-master 2015-07-28 07:45:34 -04:00
Julian Lam
afc32c1f6e latest translations and fallbacks 2015-07-28 07:44:21 -04:00
Julian Lam
487166ba48 translations for @HuiStudio, #3365 2015-07-28 07:40:43 -04:00
Julian Lam
5a50a098d8 added a new middleware and plugin hook
- Middleware added: requireUser, redirects to login if there is no user session.
- Hook added: filter:router.page
2015-07-28 07:39:11 -04:00
bdharrington7
c0ec6faed3 Clarifies code by calling native db method instead of Topics method 2015-07-27 19:59:19 -07:00
barisusakli
5d94b00883 parse category description closes #3209 2015-07-27 15:31:55 -04:00
Julian Lam
fa351ffa07 fixed wrong documentation in comments... 2015-07-27 13:30:28 -04:00
Axel
9c2d7a2468 new language keys 2015-07-26 23:40:44 +02:00
Julian Lam
474ff3ed35 fixed #3359 2015-07-24 14:25:23 -04:00
barisusakli
5d56e4f835 Merge remote-tracking branch 'origin/master' into v0.8.x 2015-07-24 14:03:20 -04:00
barisusakli
26a9530686 fix sorting on users/map 2015-07-24 13:58:46 -04:00
pichalite
d2bbca1de1 don't display leave/join buttons for admin group 2015-07-24 08:58:00 -07:00
jsdream
29fcbf6750 Add 'filter:middleware.renderHeader' hook 2015-07-24 18:18:22 +03:00
Julian Lam
87111ee6be fixed #3007 2015-07-24 10:22:21 -04:00
Julian Lam
ee9390ee34 fixed #2949 2015-07-23 16:28:31 -04:00
Julian Lam
df055ce7ea if buildHeader middleware is called, isAPI is now set to false 2015-07-23 12:58:21 -04:00
Julian Lam
0bc175dd4c fixed #3355
fixed issue where disabled categories showed up in the category dropdown in /unread
2015-07-23 12:47:58 -04:00
pichalite
a5226c9423 don't display "Leave Group" button for admins in "administrators" system group on groups details page 2015-07-22 17:10:17 -07:00
Julian Lam
791e0893ab added new hook "filter:digest.subscribers" to allow plugins to override digest subscriptions 2015-07-22 15:07:12 -04:00
Julian Lam
12601dd3aa added new hook "filter:digest.subscribers" to allow plugins to override digest subscriptions 2015-07-22 15:06:30 -04:00
barisusakli
766e233b87 closes #3353 2015-07-22 14:51:20 -04:00
barisusakli
954c25823e closes #3352 2015-07-22 14:17:34 -04:00
Julian Lam
fe7f5402a8 changed base templates path to Persona, from Vanilla.
This breaks all themes relying on templates from Vanilla!! See: https://community.nodebb.org/topic/6098/on-changing-the-default-theme-to-persona
2015-07-22 11:30:14 -04:00
Julian Lam
c38cab3b74 latest russian translations 2015-07-22 10:23:15 -04:00
Mani Wang
92968dfd8d avoid outdated error
when use github address as module
2015-07-22 19:49:15 +08:00
barisusakli
2b93c01340 closes #3347 2015-07-21 20:22:56 -04:00
bdharrington7
54180acf9b saves updated bookmark in callback 2015-07-22 06:55:48 +08:00
Julian Lam
93007bc34f fixed regression of pagination caused by changes to ajaxification logic 2015-07-21 15:21:50 -04:00
Julian Lam
fdddc19d0d updated theme minvers 2015-07-21 15:16:10 -04:00
Julian Lam
03a4b5f641 updating development version 2015-07-21 14:57:04 -04:00
Julian Lam
d62c3b9340 switching default theme on installation to Persona, from Lavender 2015-07-21 14:55:52 -04:00
Julian Lam
05cac46c5b Revert "updated dev version on master branch"
This reverts commit 1a56267791.
2015-07-21 14:41:03 -04:00
bdharrington7
2a82b5db91 Merge branch 'master' into bookmark2 2015-07-22 00:27:02 +08:00
bdharrington7
4d99f60b3d uses server-side bookmark if available 2015-07-21 23:46:05 +08:00
Julian Lam
1a56267791 updated dev version on master branch 2015-07-21 11:37:58 -04:00
Julian Lam
d426839da9 latest translations 2015-07-21 11:29:11 -04:00
Julian Lam
7e6703c18e more line ending conversion #3343 2015-07-21 11:23:16 -04:00
Julian Lam
c781e55ea9 line endings? #3343 2015-07-21 11:20:37 -04:00
Julian Lam
d095e5925c #3343 2015-07-21 11:17:31 -04:00
bdharrington7
45df5a3d0b stores the user's bookmark on the server 2015-07-21 21:20:13 +08:00
psychobunny
0bc4799c3c remove setTimeout hax in settingsv1 :squirrel: 2015-07-20 17:16:30 -04:00
psychobunny
fdc66eb607 fixes checkboxes for settingsv2 (deja vu) 2015-07-20 17:13:25 -04:00
psychobunny
a3c41e7fdb action:posts.loading 2015-07-20 17:12:41 -04:00
psychobunny
8e4340544a action:posts.edited 2015-07-20 17:12:34 -04:00
barisusakli
435fe5c54f closes #3342 2015-07-20 15:53:08 -04:00
Barış Soner Uşaklı
a20d1f8220 Updated emails :) 2015-07-20 15:29:16 -04:00
Julian Lam
866b0ddaa6 Merge pull request #3283 from APXEOLOG/filter-extension
filter:auth.init strategy extension with custom urls
2015-07-20 15:25:54 -04:00
Barış Soner Uşaklı
bdc3cc49f8 Merge pull request #3308 from acardinale/master
Uniform action:post.* hook
2015-07-20 15:21:39 -04:00
Julian Lam
957766c1d7 fixed #3272 2015-07-20 14:51:38 -04:00
Julian Lam
0c6b2b122e fixed #3268 2015-07-20 14:28:33 -04:00
Julian Lam
fdefff3516 fixes #3338 2015-07-20 12:51:53 -04:00
barisusakli
e171ba59ac if no tags are passed in assume 0 tags 2015-07-20 12:34:21 -04:00
barisusakli
fba6e1dfe2 added min/max tags setting to defaults.json 2015-07-20 12:30:42 -04:00
barisusakli
1413fc1b1a closes #3340 2015-07-20 12:27:41 -04:00
barisusakli
399c89eeed pass in req,res to action:user.loggedOut 2015-07-20 12:22:14 -04:00
Julian Lam
1c973b7bf3 fixed #3324 2015-07-20 11:41:30 -04:00
Julian Lam
22251cb0bd fixed #3341, introduced new navigation data property, "targetBlank", deprecated "target", which was never exposed anyway, and updated default values 2015-07-20 11:29:38 -04:00
Julian Lam
33434ed13d fixed package.json conflict 2015-07-20 11:29:22 -04:00
Mani Wang
c13589735d allow use github module
avoid `outdated` error when use github address as module.
2015-07-20 16:57:35 +08:00
barisusakli
83ad4ab042 waterfall 2015-07-18 14:21:51 -04:00
barisusakli
414c2a8bd9 added action:user.loggedOut 2015-07-18 14:06:51 -04:00
barisusakli
6ee0671e6a added too many tags check to post edit 2015-07-18 14:03:27 -04:00
Barış Soner Uşaklı
6bd131815f Merge pull request #3256 from yariplus/mintags
Add minimum tags per topic setting.
2015-07-18 14:02:06 -04:00
barisusakli
945a94f0ed delete cache on current process first 2015-07-18 13:59:40 -04:00
yariplus
bd863e1ccb Fix derp. 2015-07-18 02:34:47 -04:00
yariplus
546efbbd1b Add translations for min and max tag errors. 2015-07-18 02:21:34 -04:00
yariplus
e112190bee Fix maximumTagsPerTopic 2015-07-17 21:46:29 -04:00
Julian Lam
a10dfc87cf upped mentions minver 2015-07-17 19:48:33 -04:00
barisusakli
f4ea534327 closes #3312 2015-07-17 19:03:32 -04:00
Julian Lam
8dedea884d added 'no parent category' option to #2820 2015-07-17 18:27:45 -04:00
Julian Lam
5340537631 closed #2820 2015-07-17 18:19:57 -04:00
barisusakli
9e63aaebb8 added new hook action:middleware.pageView 2015-07-17 15:57:49 -04:00
Julian Lam
7063f172a7 upped composer minver, closes #3325 2015-07-17 13:15:51 -04:00
Julian Lam
87e5c733a4 added dedicated client-side action hook for when the client-side finishes loading 2015-07-17 13:13:30 -04:00
Julian Lam
4b9eab6dc0 fixes #3329 2015-07-17 10:53:00 -04:00
Julian Lam
b2a69758ee added back multi-line support for translator 2015-07-17 10:28:30 -04:00
Julian Lam
eaa35c8057 making translator regex stricter, so it doesn't match language strings that won't ever exist 2015-07-17 10:21:40 -04:00
barisusakli
65ab5733ef added categories navigation item, ability to change logo url 2015-07-16 16:21:05 -04:00
Julian Lam
b46da4461c upped markdown minver 2015-07-16 15:56:43 -04:00
barisusakli
0be2a79210 pass the data used to create the category to filter:category.create 2015-07-16 15:56:26 -04:00
barisusakli
e023d01616 closes #3327 2015-07-16 14:07:39 -04:00
Julian Lam
7f77269596 theme minvers 2015-07-16 13:50:24 -04:00
Julian Lam
3a8c1f88fb upped composer minver 2015-07-16 13:36:25 -04:00
Julian Lam
2c62bafdc7 fixed ajaxify for pagination blocks 2015-07-16 13:26:16 -04:00
Julian Lam
305c54a727 fixed bug where an extra space was added to new replies 2015-07-16 13:20:26 -04:00
Julian Lam
d061411747 added composer and emoji to default enabled plugins 2015-07-16 12:10:40 -04:00
Julian Lam
7fc08bbda8 latest translations :) 2015-07-16 11:06:15 -04:00
Julian Lam
516103fe5d latest fallbacks 2015-07-15 17:03:03 -04:00
Julian Lam
e5875ba53d adjusted persona and vanilla minvers 2015-07-15 17:02:09 -04:00
Julian Lam
e25d2fa6e6 closed #2811 2015-07-15 16:58:25 -04:00
Julian Lam
d712dcdce1 fixed issue where ajaxify couldn't handle urls with "#" href if the currently address already had a hash value present. 2015-07-15 15:12:00 -04:00
Julian Lam
b83492daa2 Merge pull request #3048 from FokkeZB/image-scheme
Replace schemeless URLs for emails
2015-07-15 14:49:23 -04:00
Julian Lam
d329bf45e6 Merge pull request #3318 from atomoc/patch-12
Update sitemap.js
2015-07-15 14:43:03 -04:00
Julian Lam
69c4b4183a latest fallbacks 2015-07-15 14:11:05 -04:00
Julian Lam
cbe810341c changed some wording in user.json to use past participle tense 2015-07-15 14:04:32 -04:00
Julian Lam
ad38c55b12 fixes #3314 2015-07-15 12:08:43 -04:00
Julian Lam
e2c4f668a1 fixed danish language error 2015-07-15 11:04:20 -04:00
barisusakli
a9da867255 fix infinite redirect loop on /chats @julianlam 2015-07-15 01:09:16 -04:00
barisusakli
ee7e36ae44 removed rooms from return 2015-07-14 17:14:35 -04:00
barisusakli
dc7839b511 small fix 2015-07-14 17:12:59 -04:00
barisusakli
daf1a388eb closes #3039 2015-07-14 17:03:33 -04:00
Сергей Савельев
8209d97f05 Update sitemap.js 2015-07-14 14:33:40 +03:00
Сергей Савельев
9552d9c5a3 Update sitemap.js 2015-07-14 14:33:25 +03:00
Сергей Савельев
efbab27827 Update sitemap.js
Why not? :)
2015-07-14 14:29:41 +03:00
Julian Lam
2cb70ceccc added auto-ajaxify on reconnect 😎 2015-07-13 16:00:04 -04:00
Julian Lam
f9a29186c4 updated ajaxify 5xx handling code to work even if nginx is used as a proxy (as it serves back 502, not 500) 2015-07-13 16:00:04 -04:00
barisusakli
81eeab42ed category filter on /unread 2015-07-13 14:47:15 -04:00
Julian Lam
3256faeb28 added Serbian and Danish to NodeBB, Хвала/mange tak! 2015-07-13 11:01:50 -04:00
Julian Lam
43b72d1552 updated italian translations 2015-07-13 10:52:30 -04:00
barisusakli
1b7df6e4b2 closes #3315 2015-07-12 12:42:53 -04:00
Julian Lam
835750f36f fixed checkbox behaviour in widgets page... @psychobunny, did I do this right? 2015-07-11 21:52:18 -04:00
Julian Lam
aab726bac4 fixes #3313 2015-07-11 20:32:04 -04:00
barisusakli
072d287183 closes #3311 2015-07-10 16:43:31 -04:00
Julian Lam
534b13e089 fixed bug where ephemeral groups and the registered-users group wouldn't show in in ACP/category details page for privileges. 2015-07-10 15:38:42 -04:00
Julian Lam
1229470bba seems the categories.search socket method is not used... 2015-07-10 15:17:16 -04:00
Julian Lam
140b8be161 updated ACP checkbox module so that it hides the checkbox via js instead of blanket CSS hiding 2015-07-10 15:13:42 -04:00
psychobunny
a4ace48469 closes #3310 2015-07-10 14:28:10 -04:00
psychobunny
541fd474b3 fixes checkboxes for both settingsv1 and settingsv2 2015-07-10 14:07:57 -04:00
psychobunny
f56c2ea88a padding fix 2015-07-09 17:14:56 -04:00
Barış Soner Uşaklı
4fc4a0ff3e dont escape group.name, use displayName in tpls instead 2015-07-09 16:00:43 -04:00
Barış Soner Uşaklı
d225951027 fix group name 2015-07-09 15:25:46 -04:00
Barış Soner Uşaklı
2b2dceb28b removed category stats from acp 2015-07-09 14:47:15 -04:00
Barış Soner Uşaklı
a12ecbc230 admin/manage/groups pagination 2015-07-09 14:01:20 -04:00
Julian Lam
1602b378e3 updated some minvers 2015-07-09 13:32:22 -04:00
Julian Lam
b4e39374bb firing 'change' event for all checkboxes after settingsv2 load 2015-07-09 13:31:14 -04:00
Andrea Cardinale
92c1d6712b Uniform action:post.* hook 2015-07-09 13:17:49 +02:00
Andrea Cardinale
423c6cc0ec Merge remote-tracking branch 'upstream/master' 2015-07-09 11:26:31 +02:00
Julian Lam
42367a653c more .reset() calls 2015-07-08 18:52:10 -04:00
psychobunny
780838c579 fixes "other" category for presence graph 2015-07-08 18:47:05 -04:00
Julian Lam
704aeea3f1 hopefully fixing bug where @psychobunny's terminal turns yellow after upgrading 2015-07-08 18:47:31 -04:00
psychobunny
ec8c5ff1fc dashboard: format numbers 2015-07-08 18:34:06 -04:00
psychobunny
7fbca487f5 make group description and group name the same size 2015-07-08 17:59:16 -04:00
psychobunny
6b6bae7cc5 font awesome checkboxes for acp 2015-07-08 17:43:24 -04:00
Julian Lam
020de2722f fixed regression introduced by earlier fix for #3307 2015-07-08 17:27:45 -04:00
psychobunny
b73a26f7a6 fixes reload button and probably a bunch of other things in ACP 2015-07-08 17:12:06 -04:00
psychobunny
6cf0697621 fixed indenting to match style 2015-07-08 17:08:37 -04:00
psychobunny
396013c8fd added a faint separator to the categories listing 2015-07-08 17:08:35 -04:00
Julian Lam
74f2f7caef fixes #3307 2015-07-08 17:04:25 -04:00
Julian Lam
02a63c0a45 moved portions of the ACP/Plugins page to a pair of partials, and split up the list so the plugins list isn't parsed twice. 2015-07-08 17:04:25 -04:00
psychobunny
b69ea4564a fix user presence graph
if nobody's using your forum at all, this thing stopped working
altogether
2015-07-08 17:02:33 -04:00
psychobunny
c01f06214e don't re-render graph if data is stale 2015-07-08 16:54:39 -04:00
psychobunny
26f22345cd allow realtime updates of the traffic graph in ACP 2015-07-08 16:46:33 -04:00
psychobunny
c6713177d3 realtime mode toggle for dashboard 2015-07-08 16:35:59 -04:00
psychobunny
c1a6bd8b8f don't enforce dependency check when running in dev mode 2015-07-08 16:03:16 -04:00
barisusakli
21ad15b13a closes #3306 2015-07-08 12:20:07 -04:00
barisusakli
b8028ccdbf dont allow deletion of administrators and registered-users 2015-07-08 12:01:06 -04:00
Barış Soner Uşaklı
d00e08a8e6 Merge pull request #3299 from NicolasSiver/category-update
Filter: Category update
2015-07-07 17:32:52 -04:00
barisusakli
2b493964d0 closes #3296 2015-07-07 17:23:41 -04:00
Nicolas Siver
9d0a0538a6 use tabs 2015-07-07 20:10:44 +03:00
Barış Soner Uşaklı
7397d98647 fix create time sort 2015-07-07 12:08:30 -04:00
Barış Soner Uşaklı
d0b1ebb8ea possible sort fix 2015-07-07 12:01:47 -04:00
Barış Soner Uşaklı
9a03671ad2 removed async.apply 2015-07-07 11:58:15 -04:00
Barış Soner Uşaklı
503d83998b fix indent 2015-07-07 11:39:56 -04:00
Barış Soner Uşaklı
b50ad39120 Merge pull request #3284 from APXEOLOG/pr-1
User.uploadFromUrl fix
2015-07-06 17:50:14 -04:00
barisusakli
f08554e788 closes #2701 2015-07-06 17:39:46 -04:00
Julian Lam
c6643082e2 closes #3303 2015-07-06 16:11:20 -04:00
Julian Lam
1069f9c936 some prep work to allow for checking of dependency versions. Also updated upgrade.check behaviour to send back error if schema is out of date, instead of no error and "false". 2015-07-06 15:44:52 -04:00
Julian Lam
da1c347fc2 closes #3297 2015-07-06 15:06:10 -04:00
barisusakli
ffd22f50ff closes #1999 2015-07-06 14:33:52 -04:00
Julian Lam
2d70733fa5 updated dependencies to use latest UglifyJS2, instead of my year-old fork 2015-07-06 13:19:14 -04:00
barisusakli
1d4efaee68 fix indices if postsPerPage is an odd number 2015-07-06 13:01:40 -04:00
Julian Lam
4de5fde18d fixed link to maintenance mode in ACP/Dash 2015-07-06 12:45:48 -04:00
Julian Lam
5c44775c1f latest translations, wow. 2015-07-06 12:45:48 -04:00
barisusakli
52f7e13a5c closes #3289 2015-07-06 12:39:05 -04:00
Julian Lam
e355c8cb1b removed socket calls for composer out of core and into plugin, closes #3293 2015-07-06 12:34:58 -04:00
barisusakli
417a573f67 closes #3260 2015-07-06 12:14:33 -04:00
Julian Lam
ceb4de653d fixed #3295 2015-07-06 10:41:13 -04:00
Julian Lam
6ff635ada3 Merge pull request #3301 from FokkeZB/patch-1
Allow Winston's log level to be set via nconf
2015-07-06 10:24:04 -04:00
Fokke Zandbergen
4b1c9ce9a2 Allow Winston's log level to be set via nconf
Defaults to `info` for `production` and `verbose` otherwise, like it used to.
2015-07-06 11:58:17 +02:00
Nicolas Siver
1e2f4ae5e9 filter slug for category update 2015-07-05 08:31:21 +03:00
Nicolas Siver
773d886135 ignore for JetBrains IDEs 2015-07-04 10:11:11 +03:00
barisusakli
619251143d reset inf scroll on search 2015-07-03 18:19:02 -04:00
barisusakli
5c35b2d96f fix composer redirect on relative path install 2015-07-03 17:21:19 -04:00
Julian Lam
19294c91c3 upping theme minimum versions 2015-07-03 17:08:17 -04:00
Julian Lam
48af82659e removing the composer from core, out to its own plugin: nodebb-plugin-composer-default, closes #3288 2015-07-03 16:43:36 -04:00
barisusakli
491d376fb4 closes #2605 2015-07-03 16:42:55 -04:00
Andrea Cardinale
b33a482226 Restore favourites.js 2015-07-03 14:14:21 +02:00
Andrea Cardinale
3e21f26d0d Restore favourites.js 2015-07-03 14:10:40 +02:00
Andrea Cardinale
3b1582915e Restore favourites.js 2015-07-03 14:00:22 +02:00
Andrea Cardinale
da800a9016 Merge remote-tracking branch 'upstream/master'
Conflicts:
	src/favourites.js
2015-07-03 13:55:32 +02:00
APXEOLOG
1ae0077810 Change error message to localized one 2015-07-02 18:29:46 +03:00
APXEOLOG
1d7b2b5776 Branch for Pull Request 2015-07-02 14:18:50 +03:00
APXEOLOG
10bbbb8942 filter:auth.init strategy extension with custom urls 2015-07-02 13:14:50 +03:00
APXEOLOG
93b6b6ba5f Fixed two bugs:
1. filename cannot contain ':' (at least on windows), nodebb crashes with such filename
2. lwip cannot define image type without file extension

Also added image extension check to prevent security issues
2015-07-02 13:03:43 +03:00
Julian Lam
f2bebb12c6 turns out "detached" isn't even an option, so I've removed it altogether
Conflicts:
	nodebb
2015-06-30 22:23:27 -04:00
barisusakli
f2c45e98da escape users group data 2015-06-30 15:25:25 -04:00
barisusakli
c5b9c9254a #3275 2015-06-30 13:38:11 -04:00
psychobunny
65e2c4cd20 missing error 2015-06-29 16:58:34 -04:00
psychobunny
bf3b5ee318 closes #3264 2015-06-29 15:32:35 -04:00
psychobunny
a285e0734d closes #3274 2015-06-29 15:16:36 -04:00
barisusakli
d135f37b4f check register queue against stopforumspam 2015-06-29 13:20:25 -04:00
barisusakli
5ee1951245 closes #3271 2015-06-28 21:54:21 -04:00
barisusakli
54226a86b4 fix group name link 2015-06-28 14:04:11 -04:00
barisusakli
57c2418157 closes #1306 2015-06-27 21:26:19 -04:00
barisusakli
de228fa67d display 404 page if registration is disabled 2015-06-26 12:18:14 -04:00
Barış Soner Uşaklı
0ba0f70581 Merge pull request #3269 from rbeer/acp_menu.plugins-icon
use icon for plugin entries
2015-06-26 11:41:58 -04:00
Raphael Beer
74a7bdf589 use icon for plugin entries 2015-06-26 11:47:42 +02:00
barisusakli
ea818e2af8 closes #3259 2015-06-25 15:15:33 -04:00
barisusakli
718f61e3bd closes #3263 2015-06-24 17:15:58 -04:00
barisusakli
a31178ebd8 closes #3258 2015-06-23 17:05:40 -04:00
barisusakli
2b0b2ea858 fix search by ip 2015-06-23 15:43:33 -04:00
Barış Soner Uşaklı
981a7558f7 use group name, hidden groups are not in groupslug:groupname 2015-06-23 14:08:04 -04:00
Barış Soner Uşaklı
6fc073d33e if key is fasly not a member 2015-06-23 13:35:58 -04:00
yariplus
13e12ba3a5 Add minimum tags per topic setting. 2015-06-23 10:23:56 -04:00
psychobunny
5ff9a7f9a9 allow multiline support for translator
see: https://github.com/psychobunny/templates.js/issues/36
2015-06-22 16:19:31 -04:00
psychobunny
3a21329c5e allow admins to remove themselves as admin
but only if they are not the last admin left
2015-06-22 16:03:32 -04:00
psychobunny
98cde1a9d6 missing lang key for error: cant-remove-last-admin 2015-06-22 16:02:57 -04:00
barisusakli
b89b4d066a max chars 2015-06-22 15:50:22 -04:00
psychobunny
fbeb6bc0ce closes #3254
@barisusakli :trollface:
2015-06-22 15:31:22 -04:00
barisusakli
38b838d462 closes #2754
moved group edit from modal to its own page
added hidden/private to group edit in acp, they were only in the client
groups page
moved add users above member list
2015-06-22 13:10:18 -04:00
barisusakli
1d72a8f0ee fix composer redirect on home page 2015-06-21 16:28:52 -04:00
barisusakli
f974af2247 fix for #3246 2015-06-21 02:14:37 -04:00
barisusakli
2deeda553a closes #3246 2015-06-21 01:58:11 -04:00
barisusakli
8160188ef5 use correct names 2015-06-20 01:26:50 -04:00
barisusakli
c81d6f8b57 refactor groups.invite request member ship 2015-06-20 01:25:40 -04:00
barisusakli
dc351fa320 removed hack for https://github.com/psychobunny/templates.js/issues/33 2015-06-19 20:13:52 -04:00
barisusakli
6fd772756c on user delete leaveAllGroups and remove from pending invited sets as well 2015-06-19 17:37:19 -04:00
psychobunny
19b50c8888 missing lang key for already-flagged 2015-06-19 17:32:04 -04:00
psychobunny
a5365e968d post*.flag 2015-06-19 17:30:41 -04:00
psychobunny
b5b9a190e4 console.log 2015-06-19 17:23:13 -04:00
psychobunny
28e9874ba9 allow moderators/admins with 0 rep to still be able to flag a post 2015-06-19 17:22:14 -04:00
psychobunny
b655e18cee action:posts.flag 2015-06-19 17:10:29 -04:00
barisusakli
ba4e8c8955 small refactor to group show/hide 2015-06-19 15:59:38 -04:00
barisusakli
dff1a04585 more category hooks 2015-06-19 15:39:37 -04:00
Barış Soner Uşaklı
abfd58a1a9 Merge pull request #3219 from rbeer/topic.del-payload
send topicData on action:topic.delete
2015-06-19 15:30:46 -04:00
barisusakli
5445e32522 2 new hooks 2015-06-19 15:11:22 -04:00
barisusakli
9d562a8708 closes #3245 2015-06-19 14:33:56 -04:00
barisusakli
5f5b11f692 closes #3242 2015-06-19 00:31:47 -04:00
barisusakli
0ef2ccc130 closes #3240 2015-06-17 14:57:10 -04:00
barisusakli
ed173e0a32 closes #3217 2015-06-17 14:13:29 -04:00
barisusakli
cea385e572 closes #3223 2015-06-15 16:55:29 -04:00
barisusakli
536c443c1e closes #3231 2015-06-15 16:03:38 -04:00
barisusakli
8e74d8f4fa removed parallel 2015-06-15 14:54:28 -04:00
Julian Lam
29c9b2e69f requiring markdown v3 now 2015-06-11 15:50:19 -04:00
barisusakli
f6d025bc3f only call updatevisibility if hidden is passed in 2015-06-11 14:54:01 -04:00
psychobunny
93fe660892 woops 2015-06-10 19:20:20 -04:00
psychobunny
15a8ebaeff only load rjs modules that are required on startup 2015-06-10 19:19:39 -04:00
psychobunny
9583c5bf93 markdown 2.1.10 2015-06-10 19:02:58 -04:00
barisusakli
1bbce82c23 duh #3192 2015-06-10 15:58:07 -04:00
barisusakli
8ff7ba82c2 closes #3192 2015-06-10 15:56:47 -04:00
psychobunny
40408eb7a1 tjs 0.2.6 2015-06-10 15:49:03 -04:00
barisusakli
6d0d74a6e9 moved topic search end to topics.js 2015-06-10 14:16:35 -04:00
barisusakli
2880a77a9f closes #3130 2015-06-09 17:47:10 -04:00
psychobunny
a6cfdc7508 square buttons on acp 2015-06-09 16:05:45 -04:00
psychobunny
74de675b93 view sitemap button 2015-06-09 15:59:26 -04:00
psychobunny
071922d3ba linking the two tag administration pages together 2015-06-09 15:56:14 -04:00
psychobunny
7689b60773 added maintenance mode link; moved info about reloading into tooltips 2015-06-09 15:47:18 -04:00
psychobunny
0ea35beea6 system control panel 2015-06-09 15:39:22 -04:00
psychobunny
ff234bccfe redirectToLogin() 2015-06-09 15:35:19 -04:00
psychobunny
deda4a4ed6 fixes for 503's in maintenance mode 2015-06-09 15:31:45 -04:00
psychobunny
e3ee3de95d lint 2015-06-09 15:31:43 -04:00
barisusakli
387a5e36b2 search fix, moved topic search to topic.js 2015-06-09 15:10:37 -04:00
Julian Lam
1fef40eb6f updated readme, as oer #3178 2015-06-09 13:30:22 -04:00
Julian Lam
18897c70b4 fixed #3222 2015-06-09 12:49:40 -04:00
psychobunny
0ad1c8afbf forgot to add pagination to default minified file 2015-06-08 18:08:57 -04:00
psychobunny
b0907b8c3c minify some modules that are required on cold load 2015-06-08 18:05:21 -04:00
psychobunny
28e1ae46c7 woops, committed some testing code by accident 2015-06-08 17:56:33 -04:00
psychobunny
7564881298 don't minify files in /client
adds an extra call to the client/route.js file on cold load but cuts a
ton of extra weight in nodebb.min.js
2015-06-08 17:53:55 -04:00
psychobunny
97d1ab2e35 console.log 2015-06-08 17:11:29 -04:00
psychobunny
febc359e53 moved sortable to acp only 2015-06-08 17:10:52 -04:00
psychobunny
f8b3282295 closes #3141 2015-06-08 16:58:53 -04:00
psychobunny
ef6c30ad99 removed some unused variables 2015-06-08 16:35:11 -04:00
psychobunny
548d39fac5 lint 2015-06-08 15:53:07 -04:00
psychobunny
ac2811be75 instance.restart 2015-06-08 15:52:39 -04:00
psychobunny
6c607bca1e closes #3212 2015-06-08 15:50:33 -04:00
psychobunny
6ae64ca884 fixed skin revert message 2015-06-08 15:41:24 -04:00
psychobunny
78ea462620 fix crash when redis server isn't running 2015-06-08 15:34:39 -04:00
barisusakli
ed72bacb1f closes #3220
added back base_url
2015-06-08 13:55:14 -04:00
Raphael Beer
d8c329cadd send topicData on action:topic.delete 2015-06-06 13:29:23 +02:00
barisusakli
3a36ae5c13 wait for loadScript & widgets.render to emit action:ajaxify.end 2015-06-05 22:07:05 -04:00
Julian Lam
96526a37a3 fixed #3218 2015-06-05 13:33:58 -04:00
Julian Lam
5549280696 updated package.json to use SPDX compatible license definition 2015-06-05 13:20:42 -04:00
barisusakli
7fc416f18a test fix 2015-06-04 17:14:22 -04:00
barisusakli
4a0482c421 closes #3208 2015-06-04 16:44:18 -04:00
Julian Lam
17ff083cc6 passing in available composer data into the composer.loaded client-side hook 2015-06-04 14:47:40 -04:00
Julian Lam
b08c7368c6 fixing some formatting 2015-06-04 14:40:20 -04:00
Julian Lam
6fedcca4ee changed a bunch of whitespace back into tabs, and fixed issue where categories without a parentCid were not showing up at all in the ACP 2015-06-04 14:24:38 -04:00
barisusakli
e892cf2e51 faster getUserGroups 2015-06-04 14:16:07 -04:00
Julian Lam
170126680b #3213 2015-06-04 13:42:10 -04:00
Julian Lam
f1c422d190 Merge branch 'extract-gravatar' 2015-06-04 12:33:04 -04:00
Julian Lam
e523ef7c17 added plugin hooks so that imagemagick can still be called, as a plugin, for image manipulation tasks, falling back to using lwip 2015-06-04 12:32:39 -04:00
Julian Lam
88dd8b1d4d using new reset command in plugin incompatibility warning 2015-06-04 12:28:54 -04:00
Julian Lam
54277e62fc fixed #3213 2015-06-04 12:23:30 -04:00
Julian Lam
704104c3bf fixed #3213 2015-06-04 12:23:14 -04:00
Julian Lam
cf35f69826 Merge branch 'lwip' of https://github.com/alpa-cat/NodeBB into extract-gravatar 2015-06-04 09:58:00 -04:00
Julian Lam
37c9c05319 added ACP styling for panel-danger panels 2015-06-03 20:06:47 -04:00
Julian Lam
478850ac05 rewrote a bit of the code so that templates.js is called asynchronously, and moved indentation levels to CSS instead of inlined styling. 2015-06-03 18:10:58 -04:00
Julian Lam
394497c9d5 Merge branch 'categories-parent-acp' of https://github.com/NicolasSiver/NodeBB into NicolasSiver-categories-parent-acp 2015-06-03 16:43:28 -04:00
Julian Lam
493c8752c3 upped theme minvers 2015-06-03 16:41:14 -04:00
Julian Lam
f0064ac11f updated to latest translations 2015-06-03 16:09:10 -04:00
Julian Lam
d5c6e2e73a Merge pull request #3156 from pentode/master
add feature to define mongo client connect options via config.json
2015-06-03 15:54:58 -04:00
psychobunny
f1f028b89c Merge pull request #3161 from yariplus/patch-1
Fix specificity on ACP widget panel heading.
2015-06-02 18:32:19 -04:00
psychobunny
0aceafb344 Merge pull request #3163 from yariplus/patch-2
Call Plugins.addLanguages on reload. Fixes #3153
2015-06-02 18:31:21 -04:00
psychobunny
9704af3b6d some plugins may not have a library, no need to warn unless unable to parse 2015-06-02 17:35:41 -04:00
psychobunny
e74f3da89e fixed sounds on windows 2015-06-02 17:31:17 -04:00
barisusakli
0feb11f205 test 2015-06-02 17:12:46 -04:00
barisusakli
64ec397101 update membercount sorted set on join/leave 2015-06-02 17:11:54 -04:00
psychobunny
18bfa44586 fixed menu items not being highlighted when active in acp 2015-06-02 17:09:49 -04:00
psychobunny
a60cb28562 guests 2015-06-02 17:04:52 -04:00
psychobunny
452b4c6d56 closes #3207 2015-06-02 16:54:19 -04:00
psychobunny
2dfb9837a7 log 2015-06-02 16:42:33 -04:00
Barış Soner Uşaklı
b45fa811b4 renamed .list to .getGroupsFromSet 2015-06-02 16:33:56 -04:00
Barış Soner Uşaklı
4e06b7790f removed unused require 2015-06-02 16:23:48 -04:00
Barış Soner Uşaklı
507fb225a2 removed console.log 2015-06-02 16:21:25 -04:00
Barış Soner Uşaklı
4420e7a9fc closes #3188, closes #3170 2015-06-02 16:20:28 -04:00
psychobunny
05c5196965 closes #3194 2015-06-02 15:56:26 -04:00
Nicolas Siver
a17c65ee9f move item template to file 2015-06-02 22:20:09 +03:00
Barış Soner Uşaklı
64359f4655 set memberCount with groupData 2015-06-02 14:01:28 -04:00
barisusakli
a94e676043 set system to true/false 2015-06-01 15:38:23 -04:00
Barış Soner Uşaklı
b717da0229 Merge pull request #3110 from pitaj/master
Fixed translator backwards compatibility issue
2015-06-01 14:04:24 -04:00
barisusakli
045d9df81f closes #3203 2015-06-01 13:21:34 -04:00
Nicolas Siver
1bfb41bccb sorting tree 2015-05-31 10:49:03 +03:00
Nicolas Siver
3197a9e47c register vendor script 2015-05-31 10:48:13 +03:00
Nicolas Siver
a77641c3ca add new vendor script for sorting 2015-05-31 10:47:31 +03:00
Alpacatty
37ad81a2b0 Swap out ImageMagick for lwip 2015-05-30 20:04:42 +02:00
Nicolas Siver
46ce3aae9f tree view 2015-05-30 18:44:31 +03:00
psychobunny
a355fbfc81 closes #2769 2015-05-29 16:47:12 -04:00
psychobunny
d51407834d closes #3166 2015-05-29 16:19:17 -04:00
barisusakli
fc19405170 added missing callback 2015-05-29 00:40:59 -04:00
barisusakli
fc99864c06 crash fix 2015-05-29 00:02:18 -04:00
psychobunny
b96018b0f5 closes #3187 2015-05-28 16:12:44 -04:00
Barış Soner Uşaklı
a14e22d534 no need for map 2015-05-28 15:52:00 -04:00
Barış Soner Uşaklı
ee17367cc1 removed unused requires, firehook on sucess 2015-05-28 15:27:55 -04:00
Barış Soner Uşaklı
0c32aa0c78 fix test expand option removed 2015-05-28 15:16:29 -04:00
Barış Soner Uşaklı
8610c44e78 escape group data 2015-05-28 15:14:40 -04:00
Barış Soner Uşaklı
8eab5ac402 groups.get changes 2015-05-28 14:51:01 -04:00
Barış Soner Uşaklı
8726e2ccb6 ghfw :rage2: 2015-05-28 13:33:45 -04:00
Barış Soner Uşaklı
1e7da1fc82 removed console.log use getUsersData 2015-05-28 13:33:23 -04:00
Barış Soner Uşaklı
0563bb5923 allow member.isOwner to work on an array 2015-05-28 13:27:09 -04:00
Barış Soner Uşaklı
2129a2fc5f not used 2015-05-28 13:25:13 -04:00
Julian Lam
af8732fcb9 latest translations and fallbacks 2015-05-28 11:46:24 -04:00
Julian Lam
eddabe5a37 upped mentions minver 2015-05-28 11:41:52 -04:00
Julian Lam
f168566928 fixed incorrect use of username in unsub cta in emails 2015-05-27 21:36:13 -04:00
Julian Lam
463c893c3d fixed regression introduced by #2080, closed #3189 2015-05-27 19:08:59 -04:00
Julian Lam
f9053c077d updated groups ACP styling and template to use a table, like categories
Conflicts:
	src/views/admin/manage/groups.tpl
2015-05-27 18:42:18 -04:00
Julian Lam
06f7172c65 closes #3188 2015-05-27 18:04:39 -04:00
psychobunny
e905787301 latest tjs 2015-05-27 16:59:56 -04:00
Barış Soner Uşaklı
0b93738537 dont display hidden/system groups on /groups 2015-05-26 16:09:01 -04:00
Barış Soner Uşaklı
9a236486a9 meh 2015-05-26 16:00:14 -04:00
Barış Soner Uşaklı
82350dc967 fix test 2015-05-26 15:48:27 -04:00
Barış Soner Uşaklı
03bc317065 Merge branch 'master' of https://github.com/NodeBB/NodeBB
Conflicts:
	src/views/admin/manage/groups.tpl
2015-05-26 15:39:57 -04:00
Barış Soner Uşaklı
8117b4459a groups.list added start stop 2015-05-26 15:37:33 -04:00
Julian Lam
b45335c6ba updated groups ACP styling and template to use a table, like categories 2015-05-26 15:24:24 -04:00
Barış Soner Uşaklı
a065a73637 fix missing comma 2015-05-26 15:10:31 -04:00
Barış Soner Uşaklı
7bed4c40d6 closes #3179 2015-05-26 15:05:55 -04:00
Julian Lam
aca5d24a7d split groups.js into more subsidiary files 2015-05-26 14:45:17 -04:00
Barış Soner Uşaklı
8300aeec35 parseInt member count, use getMemberCount in install js 2015-05-26 13:55:40 -04:00
Barış Soner Uşaklı
50d9a3f0a7 dont call groups.get just to read 2 values 2015-05-26 13:44:52 -04:00
Barış Soner Uşaklı
3f1726636f groups create/delete/update 2015-05-26 13:17:49 -04:00
Julian Lam
8a225ad719 starting groups organization 2015-05-26 12:37:44 -04:00
Julian Lam
8f7416d1cb updated acp category privilege settings so that not all groups are shown in privilege table, closes #3036 2015-05-26 12:37:44 -04:00
Julian Lam
cc2a92d73f allowing array of privileges to be passed into setPrivilege in category admin socket listener 2015-05-26 12:37:44 -04:00
Julian Lam
cbb0542984 changed behaviour of privilege table so that groups without explicit privileges are not shown in the privilege table 2015-05-26 12:37:44 -04:00
Julian Lam
4a0bc1fb03 finished up executable rewrite, and prettified reset script output 2015-05-25 21:08:05 -04:00
Julian Lam
e6061810f9 updating nodebb executable so that it is a node script instead of bash script 2015-05-25 16:06:49 -04:00
Julian Lam
fc2efb0c83 added one more line to stdout when nodebb status is invoked, or nodebb web installer finishes 2015-05-25 14:48:01 -04:00
barisusakli
a0a8d328d0 closes #3182 2015-05-25 14:05:52 -04:00
barisusakli
d8e52d7ebf closes https://github.com/NodeBB/nodebb-theme-persona/issues/87 2015-05-25 13:28:04 -04:00
Julian Lam
b2f2561e74 adding a bit of logging when launching NodeBB from the web installer 2015-05-24 10:43:37 -04:00
Julian Lam
349de1694d fixed log line in web installer 2015-05-24 10:43:37 -04:00
barisusakli
714c7356f9 closes #3176 2015-05-23 22:11:24 -04:00
Julian Lam
9ed88b7bb9 updated readme a bit 2015-05-23 22:08:28 -04:00
barisusakli
4b4be3d4cc fix minSchemaDate 2015-05-23 19:30:35 -04:00
Julian Lam
3b891ed7d8 closes #3173 2015-05-23 19:14:37 -04:00
Julian Lam
3055ee96a1 latest translations and fallbacks 2015-05-23 19:12:13 -04:00
Julian Lam
434f1d924e bumped the package's version number for dev purposes 2015-05-23 19:01:09 -04:00
Timothy Fike
09ee1ae77e Call Plugins.addLanguages on reload. Fixes #3153
Ensures routes are set correctly for custom languages.
2015-05-21 14:37:23 -04:00
Timothy Fike
8414e31730 Fix specificity on panel heading.
Needs to be specific so I can put an accordion inside. 😎
2015-05-20 21:41:36 -04:00
A Catty Alpaca
550140ada7 General-Purpose Dockerfile 2015-05-21 01:10:56 +02:00
pentode
297b5906ed add feature to define mongo client connect options via config.json 2015-05-19 14:55:06 -04:00
Andrea Cardinale
7c5ba9b7b1 Revert "Add hooks: action:post.favourite and action:post.unfavourite"
This reverts commit 1d22a2d46b.
2015-05-12 23:52:48 +02:00
Peter Jaszkowiak
ad7b561dd4 Fixed translator backwards compatibility issue
Also removed the _clearMenus global object because populating the global namespace is bad, bad, bad
2015-05-03 23:36:23 -06:00
Peter Jaszkowiak
a93a1d720d Merge pull request #7 from NodeBB/master
update
2015-05-02 18:02:57 -06:00
Fokke Zandbergen
86317a4b79 Replace schemeless URLs for emails 2015-04-17 14:35:45 +02:00
Peter Jaszkowiak
5f2b341aa2 Merge pull request #6 from NodeBB/master
merge latest
2015-03-31 14:20:09 -06:00
EvSpirit
8a6c189d80 #2893 increment --debug-brk port value when forking js-minifier child process 2015-03-25 20:40:42 +03:00
EvSpirit
3bd2f53056 #2893 increment --debug-brk port value when forking js-minifier child process 2015-03-25 20:18:15 +03:00
Peter Jaszkowiak
77df837906 Merge pull request #5 from NodeBB/master
update
2015-03-12 21:44:16 -06:00
Peter Jaszkowiak
52c295b28b Merge pull request #4 from NodeBB/master
Pull latest
2015-03-08 23:43:29 -06:00
Peter Jaszkowiak
34bbe241ce Merge pull request #3 from NodeBB/master
Merge in latest
2015-02-24 21:59:19 -07:00
755 changed files with 31025 additions and 10147 deletions

13
.gitattributes vendored Normal file
View File

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

13
.gitignore vendored
View File

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

View File

@@ -9,6 +9,7 @@ trans.ar = public/language/ar/category.json
trans.bn = public/language/bn/category.json trans.bn = public/language/bn/category.json
trans.bg = public/language/bg/category.json trans.bg = public/language/bg/category.json
trans.cs = public/language/cs/category.json trans.cs = public/language/cs/category.json
trans.da = public/language/da/category.json
trans.de = public/language/de/category.json trans.de = public/language/de/category.json
trans.el = public/language/el/category.json trans.el = public/language/el/category.json
trans.en_US = public/language/en_US/category.json trans.en_US = public/language/en_US/category.json
@@ -32,8 +33,10 @@ trans.pl = public/language/pl/category.json
trans.pt_BR = public/language/pt_BR/category.json trans.pt_BR = public/language/pt_BR/category.json
trans.ru = public/language/ru/category.json trans.ru = public/language/ru/category.json
trans.ro = public/language/ro/category.json trans.ro = public/language/ro/category.json
trans.rw = public/language/rw/category.json
trans.sc = public/language/sc/category.json trans.sc = public/language/sc/category.json
trans.sk = public/language/sk/category.json trans.sk = public/language/sk/category.json
trans.sr = public/language/sr/category.json
trans.sv = public/language/sv/category.json trans.sv = public/language/sv/category.json
trans.th = public/language/th/category.json trans.th = public/language/th/category.json
trans.tr = public/language/tr/category.json trans.tr = public/language/tr/category.json
@@ -50,6 +53,7 @@ trans.ar = public/language/ar/login.json
trans.bn = public/language/bn/login.json trans.bn = public/language/bn/login.json
trans.bg = public/language/bg/login.json trans.bg = public/language/bg/login.json
trans.cs = public/language/cs/login.json trans.cs = public/language/cs/login.json
trans.da = public/language/da/login.json
trans.de = public/language/de/login.json trans.de = public/language/de/login.json
trans.el = public/language/el/login.json trans.el = public/language/el/login.json
trans.en_US = public/language/en_US/login.json trans.en_US = public/language/en_US/login.json
@@ -73,8 +77,10 @@ trans.pl = public/language/pl/login.json
trans.pt_BR = public/language/pt_BR/login.json trans.pt_BR = public/language/pt_BR/login.json
trans.ru = public/language/ru/login.json trans.ru = public/language/ru/login.json
trans.ro = public/language/ro/login.json trans.ro = public/language/ro/login.json
trans.rw = public/language/rw/login.json
trans.sc = public/language/sc/login.json trans.sc = public/language/sc/login.json
trans.sk = public/language/sk/login.json trans.sk = public/language/sk/login.json
trans.sr = public/language/sr/login.json
trans.sv = public/language/sv/login.json trans.sv = public/language/sv/login.json
trans.th = public/language/th/login.json trans.th = public/language/th/login.json
trans.tr = public/language/tr/login.json trans.tr = public/language/tr/login.json
@@ -84,12 +90,14 @@ trans.zh_TW = public/language/zh_TW/login.json
type = KEYVALUEJSON type = KEYVALUEJSON
[nodebb.recent] [nodebb.recent]
file_filter = public/language/<lang>/recent.json
source_file = public/language/en_GB/recent.json source_file = public/language/en_GB/recent.json
source_lang = en_GB source_lang = en_GB
trans.ar = public/language/ar/recent.json trans.ar = public/language/ar/recent.json
trans.bn = public/language/bn/recent.json trans.bn = public/language/bn/recent.json
trans.bg = public/language/bg/recent.json trans.bg = public/language/bg/recent.json
trans.cs = public/language/cs/recent.json trans.cs = public/language/cs/recent.json
trans.da = public/language/da/recent.json
trans.de = public/language/de/recent.json trans.de = public/language/de/recent.json
trans.el = public/language/el/recent.json trans.el = public/language/el/recent.json
trans.en_US = public/language/en_US/recent.json trans.en_US = public/language/en_US/recent.json
@@ -113,8 +121,10 @@ trans.pl = public/language/pl/recent.json
trans.pt_BR = public/language/pt_BR/recent.json trans.pt_BR = public/language/pt_BR/recent.json
trans.ru = public/language/ru/recent.json trans.ru = public/language/ru/recent.json
trans.ro = public/language/ro/recent.json trans.ro = public/language/ro/recent.json
trans.rw = public/language/rw/recent.json
trans.sc = public/language/sc/recent.json trans.sc = public/language/sc/recent.json
trans.sk = public/language/sk/recent.json trans.sk = public/language/sk/recent.json
trans.sr = public/language/sr/recent.json
trans.sv = public/language/sv/recent.json trans.sv = public/language/sv/recent.json
trans.th = public/language/th/recent.json trans.th = public/language/th/recent.json
trans.tr = public/language/tr/recent.json trans.tr = public/language/tr/recent.json
@@ -124,12 +134,14 @@ trans.zh_TW = public/language/zh_TW/recent.json
type = KEYVALUEJSON type = KEYVALUEJSON
[nodebb.unread] [nodebb.unread]
file_filter = public/language/<lang>/unread.json
source_file = public/language/en_GB/unread.json source_file = public/language/en_GB/unread.json
source_lang = en_GB source_lang = en_GB
trans.ar = public/language/ar/unread.json trans.ar = public/language/ar/unread.json
trans.bn = public/language/bn/unread.json trans.bn = public/language/bn/unread.json
trans.bg = public/language/bg/unread.json trans.bg = public/language/bg/unread.json
trans.cs = public/language/cs/unread.json trans.cs = public/language/cs/unread.json
trans.da = public/language/da/unread.json
trans.de = public/language/de/unread.json trans.de = public/language/de/unread.json
trans.el = public/language/el/unread.json trans.el = public/language/el/unread.json
trans.en_US = public/language/en_US/unread.json trans.en_US = public/language/en_US/unread.json
@@ -153,8 +165,10 @@ trans.pl = public/language/pl/unread.json
trans.pt_BR = public/language/pt_BR/unread.json trans.pt_BR = public/language/pt_BR/unread.json
trans.ru = public/language/ru/unread.json trans.ru = public/language/ru/unread.json
trans.ro = public/language/ro/unread.json trans.ro = public/language/ro/unread.json
trans.rw = public/language/rw/unread.json
trans.sc = public/language/sc/unread.json trans.sc = public/language/sc/unread.json
trans.sk = public/language/sk/unread.json trans.sk = public/language/sk/unread.json
trans.sr = public/language/sr/unread.json
trans.sv = public/language/sv/unread.json trans.sv = public/language/sv/unread.json
trans.th = public/language/th/unread.json trans.th = public/language/th/unread.json
trans.tr = public/language/tr/unread.json trans.tr = public/language/tr/unread.json
@@ -164,12 +178,14 @@ trans.zh_TW = public/language/zh_TW/unread.json
type = KEYVALUEJSON type = KEYVALUEJSON
[nodebb.modules] [nodebb.modules]
file_filter = public/language/<lang>/modules.json
source_file = public/language/en_GB/modules.json source_file = public/language/en_GB/modules.json
source_lang = en_GB source_lang = en_GB
trans.ar = public/language/ar/modules.json trans.ar = public/language/ar/modules.json
trans.bn = public/language/bn/modules.json trans.bn = public/language/bn/modules.json
trans.bg = public/language/bg/modules.json trans.bg = public/language/bg/modules.json
trans.cs = public/language/cs/modules.json trans.cs = public/language/cs/modules.json
trans.da = public/language/da/modules.json
trans.de = public/language/de/modules.json trans.de = public/language/de/modules.json
trans.el = public/language/el/modules.json trans.el = public/language/el/modules.json
trans.en_US = public/language/en_US/modules.json trans.en_US = public/language/en_US/modules.json
@@ -193,8 +209,10 @@ trans.pl = public/language/pl/modules.json
trans.pt_BR = public/language/pt_BR/modules.json trans.pt_BR = public/language/pt_BR/modules.json
trans.ru = public/language/ru/modules.json trans.ru = public/language/ru/modules.json
trans.ro = public/language/ro/modules.json trans.ro = public/language/ro/modules.json
trans.rw = public/language/rw/modules.json
trans.sc = public/language/sc/modules.json trans.sc = public/language/sc/modules.json
trans.sk = public/language/sk/modules.json trans.sk = public/language/sk/modules.json
trans.sr = public/language/sr/modules.json
trans.sv = public/language/sv/modules.json trans.sv = public/language/sv/modules.json
trans.th = public/language/th/modules.json trans.th = public/language/th/modules.json
trans.tr = public/language/tr/modules.json trans.tr = public/language/tr/modules.json
@@ -204,12 +222,14 @@ trans.zh_TW = public/language/zh_TW/modules.json
type = KEYVALUEJSON type = KEYVALUEJSON
[nodebb.register] [nodebb.register]
file_filter = public/language/<lang>/register.json
source_file = public/language/en_GB/register.json source_file = public/language/en_GB/register.json
source_lang = en_GB source_lang = en_GB
trans.ar = public/language/ar/register.json trans.ar = public/language/ar/register.json
trans.bn = public/language/bn/register.json trans.bn = public/language/bn/register.json
trans.bg = public/language/bg/register.json trans.bg = public/language/bg/register.json
trans.cs = public/language/cs/register.json trans.cs = public/language/cs/register.json
trans.da = public/language/da/register.json
trans.de = public/language/de/register.json trans.de = public/language/de/register.json
trans.el = public/language/el/register.json trans.el = public/language/el/register.json
trans.en_US = public/language/en_US/register.json trans.en_US = public/language/en_US/register.json
@@ -233,8 +253,10 @@ trans.pl = public/language/pl/register.json
trans.pt_BR = public/language/pt_BR/register.json trans.pt_BR = public/language/pt_BR/register.json
trans.ru = public/language/ru/register.json trans.ru = public/language/ru/register.json
trans.ro = public/language/ro/register.json trans.ro = public/language/ro/register.json
trans.rw = public/language/rw/register.json
trans.sc = public/language/sc/register.json trans.sc = public/language/sc/register.json
trans.sk = public/language/sk/register.json trans.sk = public/language/sk/register.json
trans.sr = public/language/sr/register.json
trans.sv = public/language/sv/register.json trans.sv = public/language/sv/register.json
trans.th = public/language/th/register.json trans.th = public/language/th/register.json
trans.tr = public/language/tr/register.json trans.tr = public/language/tr/register.json
@@ -244,12 +266,14 @@ trans.zh_TW = public/language/zh_TW/register.json
type = KEYVALUEJSON type = KEYVALUEJSON
[nodebb.user] [nodebb.user]
file_filter = public/language/<lang>/user.json
source_file = public/language/en_GB/user.json source_file = public/language/en_GB/user.json
source_lang = en_GB source_lang = en_GB
trans.ar = public/language/ar/user.json trans.ar = public/language/ar/user.json
trans.bn = public/language/bn/user.json trans.bn = public/language/bn/user.json
trans.bg = public/language/bg/user.json trans.bg = public/language/bg/user.json
trans.cs = public/language/cs/user.json trans.cs = public/language/cs/user.json
trans.da = public/language/da/user.json
trans.de = public/language/de/user.json trans.de = public/language/de/user.json
trans.el = public/language/el/user.json trans.el = public/language/el/user.json
trans.en_US = public/language/en_US/user.json trans.en_US = public/language/en_US/user.json
@@ -273,8 +297,10 @@ trans.pl = public/language/pl/user.json
trans.pt_BR = public/language/pt_BR/user.json trans.pt_BR = public/language/pt_BR/user.json
trans.ru = public/language/ru/user.json trans.ru = public/language/ru/user.json
trans.ro = public/language/ro/user.json trans.ro = public/language/ro/user.json
trans.rw = public/language/rw/user.json
trans.sc = public/language/sc/user.json trans.sc = public/language/sc/user.json
trans.sk = public/language/sk/user.json trans.sk = public/language/sk/user.json
trans.sr = public/language/sr/user.json
trans.sv = public/language/sv/user.json trans.sv = public/language/sv/user.json
trans.th = public/language/th/user.json trans.th = public/language/th/user.json
trans.tr = public/language/tr/user.json trans.tr = public/language/tr/user.json
@@ -284,12 +310,14 @@ trans.zh_TW = public/language/zh_TW/user.json
type = KEYVALUEJSON type = KEYVALUEJSON
[nodebb.global] [nodebb.global]
file_filter = public/language/<lang>/global.json
source_file = public/language/en_GB/global.json source_file = public/language/en_GB/global.json
source_lang = en_GB source_lang = en_GB
trans.ar = public/language/ar/global.json trans.ar = public/language/ar/global.json
trans.bn = public/language/bn/global.json trans.bn = public/language/bn/global.json
trans.bg = public/language/bg/global.json trans.bg = public/language/bg/global.json
trans.cs = public/language/cs/global.json trans.cs = public/language/cs/global.json
trans.da = public/language/da/global.json
trans.de = public/language/de/global.json trans.de = public/language/de/global.json
trans.el = public/language/el/global.json trans.el = public/language/el/global.json
trans.en_US = public/language/en_US/global.json trans.en_US = public/language/en_US/global.json
@@ -313,8 +341,10 @@ trans.pl = public/language/pl/global.json
trans.pt_BR = public/language/pt_BR/global.json trans.pt_BR = public/language/pt_BR/global.json
trans.ru = public/language/ru/global.json trans.ru = public/language/ru/global.json
trans.ro = public/language/ro/global.json trans.ro = public/language/ro/global.json
trans.rw = public/language/rw/global.json
trans.sc = public/language/sc/global.json trans.sc = public/language/sc/global.json
trans.sk = public/language/sk/global.json trans.sk = public/language/sk/global.json
trans.sr = public/language/sr/global.json
trans.sv = public/language/sv/global.json trans.sv = public/language/sv/global.json
trans.th = public/language/th/global.json trans.th = public/language/th/global.json
trans.tr = public/language/tr/global.json trans.tr = public/language/tr/global.json
@@ -324,12 +354,14 @@ trans.zh_TW = public/language/zh_TW/global.json
type = KEYVALUEJSON type = KEYVALUEJSON
[nodebb.notifications] [nodebb.notifications]
file_filter = public/language/<lang>/notifications.json
source_file = public/language/en_GB/notifications.json source_file = public/language/en_GB/notifications.json
source_lang = en_GB source_lang = en_GB
trans.ar = public/language/ar/notifications.json trans.ar = public/language/ar/notifications.json
trans.bn = public/language/bn/notifications.json trans.bn = public/language/bn/notifications.json
trans.bg = public/language/bg/notifications.json trans.bg = public/language/bg/notifications.json
trans.cs = public/language/cs/notifications.json trans.cs = public/language/cs/notifications.json
trans.da = public/language/da/notifications.json
trans.de = public/language/de/notifications.json trans.de = public/language/de/notifications.json
trans.el = public/language/el/notifications.json trans.el = public/language/el/notifications.json
trans.en_US = public/language/en_US/notifications.json trans.en_US = public/language/en_US/notifications.json
@@ -353,8 +385,10 @@ trans.pl = public/language/pl/notifications.json
trans.pt_BR = public/language/pt_BR/notifications.json trans.pt_BR = public/language/pt_BR/notifications.json
trans.ru = public/language/ru/notifications.json trans.ru = public/language/ru/notifications.json
trans.ro = public/language/ro/notifications.json trans.ro = public/language/ro/notifications.json
trans.rw = public/language/rw/notifications.json
trans.sc = public/language/sc/notifications.json trans.sc = public/language/sc/notifications.json
trans.sk = public/language/sk/notifications.json trans.sk = public/language/sk/notifications.json
trans.sr = public/language/sr/notifications.json
trans.sv = public/language/sv/notifications.json trans.sv = public/language/sv/notifications.json
trans.th = public/language/th/notifications.json trans.th = public/language/th/notifications.json
trans.tr = public/language/tr/notifications.json trans.tr = public/language/tr/notifications.json
@@ -364,12 +398,14 @@ trans.zh_TW = public/language/zh_TW/notifications.json
type = KEYVALUEJSON type = KEYVALUEJSON
[nodebb.reset_password] [nodebb.reset_password]
file_filter = public/language/<lang>/reset_password.json
source_file = public/language/en_GB/reset_password.json source_file = public/language/en_GB/reset_password.json
source_lang = en_GB source_lang = en_GB
trans.ar = public/language/ar/reset_password.json trans.ar = public/language/ar/reset_password.json
trans.bn = public/language/bn/reset_password.json trans.bn = public/language/bn/reset_password.json
trans.bg = public/language/bg/reset_password.json trans.bg = public/language/bg/reset_password.json
trans.cs = public/language/cs/reset_password.json trans.cs = public/language/cs/reset_password.json
trans.da = public/language/da/reset_password.json
trans.de = public/language/de/reset_password.json trans.de = public/language/de/reset_password.json
trans.el = public/language/el/reset_password.json trans.el = public/language/el/reset_password.json
trans.en_US = public/language/en_US/reset_password.json trans.en_US = public/language/en_US/reset_password.json
@@ -393,8 +429,10 @@ trans.pl = public/language/pl/reset_password.json
trans.pt_BR = public/language/pt_BR/reset_password.json trans.pt_BR = public/language/pt_BR/reset_password.json
trans.ru = public/language/ru/reset_password.json trans.ru = public/language/ru/reset_password.json
trans.ro = public/language/ro/reset_password.json trans.ro = public/language/ro/reset_password.json
trans.rw = public/language/rw/reset_password.json
trans.sc = public/language/sc/reset_password.json trans.sc = public/language/sc/reset_password.json
trans.sk = public/language/sk/reset_password.json trans.sk = public/language/sk/reset_password.json
trans.sr = public/language/sr/reset_password.json
trans.sv = public/language/sv/reset_password.json trans.sv = public/language/sv/reset_password.json
trans.th = public/language/th/reset_password.json trans.th = public/language/th/reset_password.json
trans.tr = public/language/tr/reset_password.json trans.tr = public/language/tr/reset_password.json
@@ -404,12 +442,14 @@ trans.zh_TW = public/language/zh_TW/reset_password.json
type = KEYVALUEJSON type = KEYVALUEJSON
[nodebb.users] [nodebb.users]
file_filter = public/language/<lang>/users.json
source_file = public/language/en_GB/users.json source_file = public/language/en_GB/users.json
source_lang = en_GB source_lang = en_GB
trans.ar = public/language/ar/users.json trans.ar = public/language/ar/users.json
trans.bn = public/language/bn/users.json trans.bn = public/language/bn/users.json
trans.bg = public/language/bg/users.json trans.bg = public/language/bg/users.json
trans.cs = public/language/cs/users.json trans.cs = public/language/cs/users.json
trans.da = public/language/da/users.json
trans.de = public/language/de/users.json trans.de = public/language/de/users.json
trans.el = public/language/el/users.json trans.el = public/language/el/users.json
trans.en_US = public/language/en_US/users.json trans.en_US = public/language/en_US/users.json
@@ -433,8 +473,10 @@ trans.pl = public/language/pl/users.json
trans.pt_BR = public/language/pt_BR/users.json trans.pt_BR = public/language/pt_BR/users.json
trans.ru = public/language/ru/users.json trans.ru = public/language/ru/users.json
trans.ro = public/language/ro/users.json trans.ro = public/language/ro/users.json
trans.rw = public/language/rw/users.json
trans.sc = public/language/sc/users.json trans.sc = public/language/sc/users.json
trans.sk = public/language/sk/users.json trans.sk = public/language/sk/users.json
trans.sr = public/language/sr/users.json
trans.sv = public/language/sv/users.json trans.sv = public/language/sv/users.json
trans.th = public/language/th/users.json trans.th = public/language/th/users.json
trans.tr = public/language/tr/users.json trans.tr = public/language/tr/users.json
@@ -443,13 +485,15 @@ trans.zh_CN = public/language/zh_CN/users.json
trans.zh_TW = public/language/zh_TW/users.json trans.zh_TW = public/language/zh_TW/users.json
type = KEYVALUEJSON type = KEYVALUEJSON
[nodebb.language] [nodebb.language-1]
file_filter = public/language/<lang>/language.json
source_file = public/language/en_GB/language.json source_file = public/language/en_GB/language.json
source_lang = en_GB source_lang = en_GB
trans.ar = public/language/ar/language.json trans.ar = public/language/ar/language.json
trans.bn = public/language/bn/language.json trans.bn = public/language/bn/language.json
trans.bg = public/language/bg/language.json trans.bg = public/language/bg/language.json
trans.cs = public/language/cs/language.json trans.cs = public/language/cs/language.json
trans.da = public/language/da/language.json
trans.de = public/language/de/language.json trans.de = public/language/de/language.json
trans.el = public/language/el/language.json trans.el = public/language/el/language.json
trans.en_US = public/language/en_US/language.json trans.en_US = public/language/en_US/language.json
@@ -473,8 +517,10 @@ trans.pl = public/language/pl/language.json
trans.pt_BR = public/language/pt_BR/language.json trans.pt_BR = public/language/pt_BR/language.json
trans.ru = public/language/ru/language.json trans.ru = public/language/ru/language.json
trans.ro = public/language/ro/language.json trans.ro = public/language/ro/language.json
trans.rw = public/language/rw/language.json
trans.sc = public/language/sc/language.json trans.sc = public/language/sc/language.json
trans.sk = public/language/sk/language.json trans.sk = public/language/sk/language.json
trans.sr = public/language/sr/language.json
trans.sv = public/language/sv/language.json trans.sv = public/language/sv/language.json
trans.th = public/language/th/language.json trans.th = public/language/th/language.json
trans.tr = public/language/tr/language.json trans.tr = public/language/tr/language.json
@@ -484,12 +530,14 @@ trans.zh_TW = public/language/zh_TW/language.json
type = KEYVALUEJSON type = KEYVALUEJSON
[nodebb.pages] [nodebb.pages]
file_filter = public/language/<lang>/pages.json
source_file = public/language/en_GB/pages.json source_file = public/language/en_GB/pages.json
source_lang = en_GB source_lang = en_GB
trans.ar = public/language/ar/pages.json trans.ar = public/language/ar/pages.json
trans.bn = public/language/bn/pages.json trans.bn = public/language/bn/pages.json
trans.bg = public/language/bg/pages.json trans.bg = public/language/bg/pages.json
trans.cs = public/language/cs/pages.json trans.cs = public/language/cs/pages.json
trans.da = public/language/da/pages.json
trans.de = public/language/de/pages.json trans.de = public/language/de/pages.json
trans.el = public/language/el/pages.json trans.el = public/language/el/pages.json
trans.en_US = public/language/en_US/pages.json trans.en_US = public/language/en_US/pages.json
@@ -513,8 +561,10 @@ trans.pl = public/language/pl/pages.json
trans.pt_BR = public/language/pt_BR/pages.json trans.pt_BR = public/language/pt_BR/pages.json
trans.ru = public/language/ru/pages.json trans.ru = public/language/ru/pages.json
trans.ro = public/language/ro/pages.json trans.ro = public/language/ro/pages.json
trans.rw = public/language/rw/pages.json
trans.sc = public/language/sc/pages.json trans.sc = public/language/sc/pages.json
trans.sk = public/language/sk/pages.json trans.sk = public/language/sk/pages.json
trans.sr = public/language/sr/pages.json
trans.sv = public/language/sv/pages.json trans.sv = public/language/sv/pages.json
trans.th = public/language/th/pages.json trans.th = public/language/th/pages.json
trans.tr = public/language/tr/pages.json trans.tr = public/language/tr/pages.json
@@ -524,12 +574,14 @@ trans.zh_TW = public/language/zh_TW/pages.json
type = KEYVALUEJSON type = KEYVALUEJSON
[nodebb.topic] [nodebb.topic]
file_filter = public/language/<lang>/topic.json
source_file = public/language/en_GB/topic.json source_file = public/language/en_GB/topic.json
source_lang = en_GB source_lang = en_GB
trans.ar = public/language/ar/topic.json trans.ar = public/language/ar/topic.json
trans.bn = public/language/bn/topic.json trans.bn = public/language/bn/topic.json
trans.bg = public/language/bg/topic.json trans.bg = public/language/bg/topic.json
trans.cs = public/language/cs/topic.json trans.cs = public/language/cs/topic.json
trans.da = public/language/da/topic.json
trans.de = public/language/de/topic.json trans.de = public/language/de/topic.json
trans.el = public/language/el/topic.json trans.el = public/language/el/topic.json
trans.en_US = public/language/en_US/topic.json trans.en_US = public/language/en_US/topic.json
@@ -553,8 +605,10 @@ trans.pl = public/language/pl/topic.json
trans.pt_BR = public/language/pt_BR/topic.json trans.pt_BR = public/language/pt_BR/topic.json
trans.ru = public/language/ru/topic.json trans.ru = public/language/ru/topic.json
trans.ro = public/language/ro/topic.json trans.ro = public/language/ro/topic.json
trans.rw = public/language/rw/topic.json
trans.sc = public/language/sc/topic.json trans.sc = public/language/sc/topic.json
trans.sk = public/language/sk/topic.json trans.sk = public/language/sk/topic.json
trans.sr = public/language/sr/topic.json
trans.sv = public/language/sv/topic.json trans.sv = public/language/sv/topic.json
trans.th = public/language/th/topic.json trans.th = public/language/th/topic.json
trans.tr = public/language/tr/topic.json trans.tr = public/language/tr/topic.json
@@ -564,12 +618,14 @@ trans.zh_TW = public/language/zh_TW/topic.json
type = KEYVALUEJSON type = KEYVALUEJSON
[nodebb.success] [nodebb.success]
file_filter = public/language/<lang>/success.json
source_file = public/language/en_GB/success.json source_file = public/language/en_GB/success.json
source_lang = en_GB source_lang = en_GB
trans.ar = public/language/ar/success.json trans.ar = public/language/ar/success.json
trans.bn = public/language/bn/success.json trans.bn = public/language/bn/success.json
trans.bg = public/language/bg/success.json trans.bg = public/language/bg/success.json
trans.cs = public/language/cs/success.json trans.cs = public/language/cs/success.json
trans.da = public/language/da/success.json
trans.de = public/language/de/success.json trans.de = public/language/de/success.json
trans.el = public/language/el/success.json trans.el = public/language/el/success.json
trans.en_US = public/language/en_US/success.json trans.en_US = public/language/en_US/success.json
@@ -593,8 +649,10 @@ trans.pl = public/language/pl/success.json
trans.pt_BR = public/language/pt_BR/success.json trans.pt_BR = public/language/pt_BR/success.json
trans.ru = public/language/ru/success.json trans.ru = public/language/ru/success.json
trans.ro = public/language/ro/success.json trans.ro = public/language/ro/success.json
trans.rw = public/language/rw/success.json
trans.sc = public/language/sc/success.json trans.sc = public/language/sc/success.json
trans.sk = public/language/sk/success.json trans.sk = public/language/sk/success.json
trans.sr = public/language/sr/success.json
trans.sv = public/language/sv/success.json trans.sv = public/language/sv/success.json
trans.th = public/language/th/success.json trans.th = public/language/th/success.json
trans.tr = public/language/tr/success.json trans.tr = public/language/tr/success.json
@@ -604,12 +662,14 @@ trans.zh_TW = public/language/zh_TW/success.json
type = KEYVALUEJSON type = KEYVALUEJSON
[nodebb.error] [nodebb.error]
file_filter = public/language/<lang>/error.json
source_file = public/language/en_GB/error.json source_file = public/language/en_GB/error.json
source_lang = en_GB source_lang = en_GB
trans.ar = public/language/ar/error.json trans.ar = public/language/ar/error.json
trans.bn = public/language/bn/error.json trans.bn = public/language/bn/error.json
trans.bg = public/language/bg/error.json trans.bg = public/language/bg/error.json
trans.cs = public/language/cs/error.json trans.cs = public/language/cs/error.json
trans.da = public/language/da/error.json
trans.de = public/language/de/error.json trans.de = public/language/de/error.json
trans.el = public/language/el/error.json trans.el = public/language/el/error.json
trans.en_US = public/language/en_US/error.json trans.en_US = public/language/en_US/error.json
@@ -633,8 +693,10 @@ trans.pl = public/language/pl/error.json
trans.pt_BR = public/language/pt_BR/error.json trans.pt_BR = public/language/pt_BR/error.json
trans.ru = public/language/ru/error.json trans.ru = public/language/ru/error.json
trans.ro = public/language/ro/error.json trans.ro = public/language/ro/error.json
trans.rw = public/language/rw/error.json
trans.sc = public/language/sc/error.json trans.sc = public/language/sc/error.json
trans.sk = public/language/sk/error.json trans.sk = public/language/sk/error.json
trans.sr = public/language/sr/error.json
trans.sv = public/language/sv/error.json trans.sv = public/language/sv/error.json
trans.th = public/language/th/error.json trans.th = public/language/th/error.json
trans.tr = public/language/tr/error.json trans.tr = public/language/tr/error.json
@@ -644,12 +706,14 @@ trans.zh_TW = public/language/zh_TW/error.json
type = KEYVALUEJSON type = KEYVALUEJSON
[nodebb.tags] [nodebb.tags]
file_filter = public/language/<lang>/tags.json
source_file = public/language/en_GB/tags.json source_file = public/language/en_GB/tags.json
source_lang = en_GB source_lang = en_GB
trans.ar = public/language/ar/tags.json trans.ar = public/language/ar/tags.json
trans.bn = public/language/bn/tags.json trans.bn = public/language/bn/tags.json
trans.bg = public/language/bg/tags.json trans.bg = public/language/bg/tags.json
trans.cs = public/language/cs/tags.json trans.cs = public/language/cs/tags.json
trans.da = public/language/da/tags.json
trans.de = public/language/de/tags.json trans.de = public/language/de/tags.json
trans.el = public/language/el/tags.json trans.el = public/language/el/tags.json
trans.en_US = public/language/en_US/tags.json trans.en_US = public/language/en_US/tags.json
@@ -673,8 +737,10 @@ trans.pl = public/language/pl/tags.json
trans.pt_BR = public/language/pt_BR/tags.json trans.pt_BR = public/language/pt_BR/tags.json
trans.ru = public/language/ru/tags.json trans.ru = public/language/ru/tags.json
trans.ro = public/language/ro/tags.json trans.ro = public/language/ro/tags.json
trans.rw = public/language/rw/tags.json
trans.sc = public/language/sc/tags.json trans.sc = public/language/sc/tags.json
trans.sk = public/language/sk/tags.json trans.sk = public/language/sk/tags.json
trans.sr = public/language/sr/tags.json
trans.sv = public/language/sv/tags.json trans.sv = public/language/sv/tags.json
trans.th = public/language/th/tags.json trans.th = public/language/th/tags.json
trans.tr = public/language/tr/tags.json trans.tr = public/language/tr/tags.json
@@ -684,12 +750,14 @@ trans.zh_TW = public/language/zh_TW/tags.json
type = KEYVALUEJSON type = KEYVALUEJSON
[nodebb.email] [nodebb.email]
file_filter = public/language/<lang>/email.json
source_file = public/language/en_GB/email.json source_file = public/language/en_GB/email.json
source_lang = en_GB source_lang = en_GB
trans.ar = public/language/ar/email.json trans.ar = public/language/ar/email.json
trans.bn = public/language/bn/email.json trans.bn = public/language/bn/email.json
trans.bg = public/language/bg/email.json trans.bg = public/language/bg/email.json
trans.cs = public/language/cs/email.json trans.cs = public/language/cs/email.json
trans.da = public/language/da/email.json
trans.de = public/language/de/email.json trans.de = public/language/de/email.json
trans.el = public/language/el/email.json trans.el = public/language/el/email.json
trans.en_US = public/language/en_US/email.json trans.en_US = public/language/en_US/email.json
@@ -713,8 +781,10 @@ trans.pl = public/language/pl/email.json
trans.pt_BR = public/language/pt_BR/email.json trans.pt_BR = public/language/pt_BR/email.json
trans.ru = public/language/ru/email.json trans.ru = public/language/ru/email.json
trans.ro = public/language/ro/email.json trans.ro = public/language/ro/email.json
trans.rw = public/language/rw/email.json
trans.sc = public/language/sc/email.json trans.sc = public/language/sc/email.json
trans.sk = public/language/sk/email.json trans.sk = public/language/sk/email.json
trans.sr = public/language/sr/email.json
trans.sv = public/language/sv/email.json trans.sv = public/language/sv/email.json
trans.th = public/language/th/email.json trans.th = public/language/th/email.json
trans.tr = public/language/tr/email.json trans.tr = public/language/tr/email.json
@@ -724,12 +794,14 @@ trans.zh_TW = public/language/zh_TW/email.json
type = KEYVALUEJSON type = KEYVALUEJSON
[nodebb.search] [nodebb.search]
file_filter = public/language/<lang>/search.json
source_file = public/language/en_GB/search.json source_file = public/language/en_GB/search.json
source_lang = en_GB source_lang = en_GB
trans.ar = public/language/ar/search.json trans.ar = public/language/ar/search.json
trans.bn = public/language/bn/search.json trans.bn = public/language/bn/search.json
trans.bg = public/language/bg/search.json trans.bg = public/language/bg/search.json
trans.cs = public/language/cs/search.json trans.cs = public/language/cs/search.json
trans.da = public/language/da/search.json
trans.de = public/language/de/search.json trans.de = public/language/de/search.json
trans.el = public/language/el/search.json trans.el = public/language/el/search.json
trans.en_US = public/language/en_US/search.json trans.en_US = public/language/en_US/search.json
@@ -753,8 +825,10 @@ trans.pl = public/language/pl/search.json
trans.pt_BR = public/language/pt_BR/search.json trans.pt_BR = public/language/pt_BR/search.json
trans.ru = public/language/ru/search.json trans.ru = public/language/ru/search.json
trans.ro = public/language/ro/search.json trans.ro = public/language/ro/search.json
trans.rw = public/language/rw/search.json
trans.sc = public/language/sc/search.json trans.sc = public/language/sc/search.json
trans.sk = public/language/sk/search.json trans.sk = public/language/sk/search.json
trans.sr = public/language/sr/search.json
trans.sv = public/language/sv/search.json trans.sv = public/language/sv/search.json
trans.th = public/language/th/search.json trans.th = public/language/th/search.json
trans.tr = public/language/tr/search.json trans.tr = public/language/tr/search.json
@@ -764,12 +838,14 @@ trans.zh_TW = public/language/zh_TW/search.json
type = KEYVALUEJSON type = KEYVALUEJSON
[nodebb.groups] [nodebb.groups]
file_filter = public/language/<lang>/groups.json
source_file = public/language/en_GB/groups.json source_file = public/language/en_GB/groups.json
source_lang = en_GB source_lang = en_GB
trans.ar = public/language/ar/groups.json trans.ar = public/language/ar/groups.json
trans.bn = public/language/bn/groups.json trans.bn = public/language/bn/groups.json
trans.bg = public/language/bg/groups.json trans.bg = public/language/bg/groups.json
trans.cs = public/language/cs/groups.json trans.cs = public/language/cs/groups.json
trans.da = public/language/da/groups.json
trans.de = public/language/de/groups.json trans.de = public/language/de/groups.json
trans.el = public/language/el/groups.json trans.el = public/language/el/groups.json
trans.en_US = public/language/en_US/groups.json trans.en_US = public/language/en_US/groups.json
@@ -793,8 +869,10 @@ trans.pl = public/language/pl/groups.json
trans.pt_BR = public/language/pt_BR/groups.json trans.pt_BR = public/language/pt_BR/groups.json
trans.ru = public/language/ru/groups.json trans.ru = public/language/ru/groups.json
trans.ro = public/language/ro/groups.json trans.ro = public/language/ro/groups.json
trans.rw = public/language/rw/groups.json
trans.sc = public/language/sc/groups.json trans.sc = public/language/sc/groups.json
trans.sk = public/language/sk/groups.json trans.sk = public/language/sk/groups.json
trans.sr = public/language/sr/groups.json
trans.sv = public/language/sv/groups.json trans.sv = public/language/sv/groups.json
trans.th = public/language/th/groups.json trans.th = public/language/th/groups.json
trans.tr = public/language/tr/groups.json trans.tr = public/language/tr/groups.json

8
Dockerfile Normal file
View File

@@ -0,0 +1,8 @@
FROM node:0.10-onbuild
ENV NODE_ENV=production \
daemon=false \
silent=false
CMD node app --setup && npm start
EXPOSE 4567

140
README.md
View File

@@ -1,65 +1,75 @@
# <img alt="NodeBB" src="http://i.imgur.com/mYxPPtB.png" /> # <img alt="NodeBB" src="http://i.imgur.com/mYxPPtB.png" />
[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/NodeBB/NodeBB?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/NodeBB/NodeBB?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![Build Status](https://travis-ci.org/NodeBB/NodeBB.svg?branch=master)](https://travis-ci.org/NodeBB/NodeBB) [![Build Status](https://travis-ci.org/NodeBB/NodeBB.svg?branch=master)](https://travis-ci.org/NodeBB/NodeBB)
[![Dependency Status](https://david-dm.org/nodebb/nodebb.svg)](https://david-dm.org/nodebb/nodebb) [![Dependency Status](https://david-dm.org/nodebb/nodebb.svg)](https://david-dm.org/nodebb/nodebb)
[![Code Climate](https://codeclimate.com/github/NodeBB/NodeBB/badges/gpa.svg)](https://codeclimate.com/github/NodeBB/NodeBB) [![Code Climate](https://codeclimate.com/github/NodeBB/NodeBB/badges/gpa.svg)](https://codeclimate.com/github/NodeBB/NodeBB)
[![Documentation Status](https://readthedocs.org/projects/nodebb/badge/?version=latest)](https://readthedocs.org/projects/nodebb/?badge=latest) [![Documentation Status](https://readthedocs.org/projects/nodebb/badge/?version=latest)](https://readthedocs.org/projects/nodebb/?badge=latest)
**NodeBB Forum Software** is powered by Node.js and built on either a Redis or MongoDB database. It utilizes web sockets for instant interactions and real-time notifications. NodeBB is compatible down to IE8 and has many modern features out of the box such as social network integration and streaming discussions. **NodeBB Forum Software** is powered by Node.js and built on either a Redis or MongoDB database. It utilizes web sockets for instant interactions and real-time notifications. NodeBB is compatible down to IE8 and has many modern features out of the box such as social network integration and streaming discussions.
Additional functionality is enabled through the use of third-party plugins. Additional functionality is enabled through the use of third-party plugins.
* [Get NodeBB](http://www.nodebb.org/ "NodeBB") * [Get NodeBB](http://www.nodebb.org/ "NodeBB")
* [Demo & Meta Discussion](http://community.nodebb.org) * [Demo & Meta Discussion](http://community.nodebb.org)
* [NodeBB Blog](http://blog.nodebb.org) * [Documentation & Installation Instructions](http://docs.nodebb.org)
* [Documentation & Installation Instructions](http://docs.nodebb.org) * [Help translate NodeBB](https://www.transifex.com/projects/p/nodebb/)
* [Join us on IRC](https://kiwiirc.com/client/irc.freenode.net/nodebb) - #nodebb on Freenode * [NodeBB Blog](http://blog.nodebb.org)
* [Follow us on Twitter](http://www.twitter.com/NodeBB/ "NodeBB Twitter") * [Join us on IRC](https://kiwiirc.com/client/irc.freenode.net/nodebb) - #nodebb on Freenode
* [Like us on Facebook](http://www.facebook.com/NodeBB/ "NodeBB Facebook") * [Follow us on Twitter](http://www.twitter.com/NodeBB/ "NodeBB Twitter")
* [Get Plugins](http://community.nodebb.org/category/7/nodebb-plugins "NodeBB Plugins") * [Like us on Facebook](http://www.facebook.com/NodeBB/ "NodeBB Facebook")
* [Get Themes](http://community.nodebb.org/category/10/nodebb-themes "NodeBB Themes")
* [Help translate NodeBB](https://www.transifex.com/projects/p/nodebb/) ## Screenshots
## Screenshots [![](http://i.imgur.com/VCoOFyqb.png)](http://i.imgur.com/VCoOFyq.png)
[![](http://i.imgur.com/FLOUuIqb.png)](http://i.imgur.com/FLOUuIq.png)
[<img src="http://i.imgur.com/FLOUuIqb.png" />](http://i.imgur.com/FLOUuIq.png)&nbsp;[<img src="http://i.imgur.com/Ud1LrfIb.png" />](http://i.imgur.com/Ud1LrfI.png)&nbsp;[<img src="http://i.imgur.com/ZC8W39ab.png" />](http://i.imgur.com/ZC8W39a.png)&nbsp;[<img src="http://i.imgur.com/o90kVPib.png" />](http://i.imgur.com/o90kVPi.png)&nbsp;[<img src="http://i.imgur.com/AaRRrU2b.png" />](http://i.imgur.com/AaRRrU2.png)&nbsp;[<img src="http://i.imgur.com/LmHtPhob.png" />](http://i.imgur.com/LmHtPho.png)&nbsp;[<img src="http://i.imgur.com/paiJPJkb.jpg" />](http://i.imgur.com/paiJPJk.jpg)&nbsp;[<img src="http://i.imgur.com/ZfavPHDb.png" />](http://i.imgur.com/ZfavPHD.png)&nbsp;[<img src="http://i.imgur.com/8OLssij.png" />](http://i.imgur.com/8OLssij.png)&nbsp;[<img src="http://i.imgur.com/JKOc0LZ.png"/>](http://i.imgur.com/JKOc0LZ.png) [![](http://i.imgur.com/Ud1LrfIb.png)](http://i.imgur.com/Ud1LrfI.png)
[![](http://i.imgur.com/h6yZ66sb.png)](http://i.imgur.com/h6yZ66s.png)
## How can I follow along/contribute? [![](http://i.imgur.com/o90kVPib.png)](http://i.imgur.com/o90kVPi.png)
[![](http://i.imgur.com/AaRRrU2b.png)](http://i.imgur.com/AaRRrU2.png)
* Our feature roadmap is hosted on the project wiki's [Version History / Roadmap](https://github.com/NodeBB/NodeBB/wiki/Version-History-%26-Roadmap) [![](http://i.imgur.com/LmHtPhob.png)](http://i.imgur.com/LmHtPho.png)
* 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. [![](http://i.imgur.com/paiJPJkb.jpg)](http://i.imgur.com/paiJPJk.jpg)
* If you are a designer, [NodeBB needs themes](http://community.nodebb.org/category/10/nodebb-themes)! NodeBB's theming system allows extention of the base templates as well as styling via LESS or CSS. NodeBB's base theme utilizes [Bootstrap 3](http://getbootstrap.com/) but themes can choose to use a different framework altogether.
* If you know languages other than English you can help us translate NodeBB. We use [Transifex](https://www.transifex.com/projects/p/nodebb/) for internationalization. [![](http://i.imgur.com/8OLssij.png)](http://i.imgur.com/8OLssij.png)
* 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. [![](http://i.imgur.com/JKOc0LZ.png)](http://i.imgur.com/JKOc0LZ.png)
## Requirements ## How can I follow along/contribute?
NodeBB requires the following software to be installed: * Our feature roadmap is hosted on the project wiki's [Version History / Roadmap](https://github.com/NodeBB/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.
* A version of Node.js at least 0.10 or greater * 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.
* Redis, version 2.8.9 or greater **or** MongoDB, version 2.6 or greater * If you know languages other than English you can help us translate NodeBB. We use [Transifex](https://www.transifex.com/projects/p/nodebb/) for internationalization.
* nginx, version 1.3.13 or greater (**only if** intending to use nginx to proxy requests to a NodeBB) * 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.
## Installation ## Requirements
[Please refer to platform-specific installation documentation](http://docs.nodebb.org/en/latest/installing/os.html) NodeBB requires the following software to be installed:
## Securing NodeBB * A version of Node.js at least 0.10 or greater
* Redis, version 2.8.9 or greater **or** MongoDB, version 2.6 or greater
It is important to ensure that your NodeBB and database servers are secured. Bear these points in mind: * nginx, version 1.3.13 or greater (**only if** intending to use nginx to proxy requests to a NodeBB)
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: ## Installation
* 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) [Please refer to platform-specific installation documentation](http://docs.nodebb.org/en/latest/installing/os.html)
* 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`. ## Securing NodeBB
* e.g. If your NodeBB is proxied, no ports should be open except 80 (and possibly 22, for SSH access)
It is important to ensure that your NodeBB and database servers are secured. Bear these points in mind:
## Upgrading NodeBB
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:
Detailed upgrade instructions are listed in [Upgrading NodeBB](https://docs.nodebb.org/en/latest/upgrading/index.html) * 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)
## License * 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`.
NodeBB is licensed under the **GNU General Public License v3 (GPL-3)** (http://www.gnu.org/copyleft/gpl.html) * e.g. If your NodeBB is proxied, no ports should be open except 80 (and possibly 22, for SSH access)
## Upgrading NodeBB
Detailed upgrade instructions are listed in [Upgrading NodeBB](https://docs.nodebb.org/en/latest/upgrading/index.html)
## License
NodeBB is licensed under the **GNU General Public License v3 (GPL-3)** (http://www.gnu.org/copyleft/gpl.html).
Interested in a sublicense agreement for use of NodeBB in a non-free/restrictive environment? Contact us at sales@nodebb.org.

808
app.js
View File

@@ -1,391 +1,417 @@
/* /*
NodeBB - A better forum platform for the modern web NodeBB - A better forum platform for the modern web
https://github.com/NodeBB/NodeBB/ https://github.com/NodeBB/NodeBB/
Copyright (C) 2013-2014 NodeBB Inc. Copyright (C) 2013-2014 NodeBB Inc.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or the Free Software Foundation, either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
"use strict"; "use strict";
/*global require, global, process*/ /*global require, global, process*/
var nconf = require('nconf'); var nconf = require('nconf');
nconf.argv().env('__'); nconf.argv().env('__');
var fs = require('fs'), var fs = require('fs'),
os = require('os'), os = require('os'),
url = require('url'), url = require('url'),
async = require('async'), async = require('async'),
semver = require('semver'), semver = require('semver'),
winston = require('winston'), winston = require('winston'),
path = require('path'), colors = require('colors'),
pkg = require('./package.json'), path = require('path'),
utils = require('./public/src/utils.js'); pkg = require('./package.json'),
utils = require('./public/src/utils.js');
global.env = process.env.NODE_ENV || 'production'; global.env = process.env.NODE_ENV || 'production';
winston.remove(winston.transports.Console); winston.remove(winston.transports.Console);
winston.add(winston.transports.Console, { winston.add(winston.transports.Console, {
colorize: true, colorize: true,
timestamp: function() { timestamp: function() {
var date = new Date(); var date = new Date();
return date.getDate() + '/' + (date.getMonth() + 1) + ' ' + date.toTimeString().substr(0,5) + ' [' + global.process.pid + ']'; return date.getDate() + '/' + (date.getMonth() + 1) + ' ' + date.toTimeString().substr(0,5) + ' [' + global.process.pid + ']';
}, },
level: (global.env === 'production' || nconf.get('log-level') === 'info') ? 'info' : 'verbose' level: nconf.get('log-level') || (global.env === 'production' ? 'info' : 'verbose')
}); });
if(os.platform() === 'linux') { if(os.platform() === 'linux') {
require('child_process').exec('/usr/bin/which convert', function(err, stdout, stderr) { require('child_process').exec('/usr/bin/which convert', function(err, stdout, stderr) {
if(err || !stdout) { if(err || !stdout) {
winston.warn('Couldn\'t find convert. Did you install imagemagick?'); winston.warn('Couldn\'t find convert. Did you install imagemagick?');
} }
}); });
} }
// Alternate configuration file support // Alternate configuration file support
var configFile = path.join(__dirname, '/config.json'), var configFile = path.join(__dirname, '/config.json'),
configExists; configExists;
if (nconf.get('config')) { if (nconf.get('config')) {
configFile = path.resolve(__dirname, nconf.get('config')); configFile = path.resolve(__dirname, nconf.get('config'));
} }
configExists = fs.existsSync(configFile); configExists = fs.existsSync(configFile);
if (!nconf.get('setup') && !nconf.get('install') && !nconf.get('upgrade') && !nconf.get('reset') && configExists) { if (!nconf.get('setup') && !nconf.get('install') && !nconf.get('upgrade') && !nconf.get('reset') && configExists) {
start(); start();
} else if (nconf.get('setup') || nconf.get('install')) { } else if (nconf.get('setup') || nconf.get('install')) {
setup(); setup();
} else if (!configExists) { } else if (!configExists) {
require('./install/web').install(nconf.get('port')); require('./install/web').install(nconf.get('port'));
} else if (nconf.get('upgrade')) { } else if (nconf.get('upgrade')) {
upgrade(); upgrade();
} else if (nconf.get('reset')) { } else if (nconf.get('reset')) {
reset(); reset();
} }
function loadConfig() { function loadConfig() {
nconf.file({ nconf.file({
file: configFile file: configFile
}); });
nconf.defaults({ nconf.defaults({
base_dir: __dirname, base_dir: __dirname,
themes_path: path.join(__dirname, 'node_modules'), themes_path: path.join(__dirname, 'node_modules'),
views_dir: path.join(__dirname, 'public/templates'), views_dir: path.join(__dirname, 'public/templates'),
version: pkg.version version: pkg.version
}); });
if (!nconf.get('isCluster')) { if (!nconf.get('isCluster')) {
nconf.set('isPrimary', 'true'); nconf.set('isPrimary', 'true');
nconf.set('isCluster', 'false'); nconf.set('isCluster', 'false');
} }
// Ensure themes_path is a full filepath // Ensure themes_path is a full filepath
nconf.set('themes_path', path.resolve(__dirname, nconf.get('themes_path'))); nconf.set('themes_path', path.resolve(__dirname, nconf.get('themes_path')));
nconf.set('core_templates_path', path.join(__dirname, 'src/views')); nconf.set('core_templates_path', path.join(__dirname, 'src/views'));
nconf.set('base_templates_path', path.join(nconf.get('themes_path'), 'nodebb-theme-vanilla/templates')); nconf.set('base_templates_path', path.join(nconf.get('themes_path'), 'nodebb-theme-persona/templates'));
if (!process.send) { if (!process.send) {
// If run using `node app`, log GNU copyright info along with server info // If run using `node app`, log GNU copyright info along with server info
winston.info('NodeBB v' + nconf.get('version') + ' Copyright (C) 2013-2014 NodeBB Inc.'); winston.info('NodeBB v' + nconf.get('version') + ' Copyright (C) 2013-2014 NodeBB Inc.');
winston.info('This program comes with ABSOLUTELY NO WARRANTY.'); winston.info('This program comes with ABSOLUTELY NO WARRANTY.');
winston.info('This is free software, and you are welcome to redistribute it under certain conditions.'); winston.info('This is free software, and you are welcome to redistribute it under certain conditions.');
winston.info(''); winston.info('');
} }
} }
function start() { function start() {
loadConfig(); loadConfig();
var db = require('./src/database');
// nconf defaults, if not set in config
if (!nconf.get('upload_path')) { // nconf defaults, if not set in config
nconf.set('upload_path', '/public/uploads'); if (!nconf.get('upload_path')) {
} nconf.set('upload_path', '/public/uploads');
// Parse out the relative_url and other goodies from the configured URL }
var urlObject = url.parse(nconf.get('url')); // Parse out the relative_url and other goodies from the configured URL
var relativePath = urlObject.pathname !== '/' ? urlObject.pathname : ''; var urlObject = url.parse(nconf.get('url'));
nconf.set('use_port', !!urlObject.port); var relativePath = urlObject.pathname !== '/' ? urlObject.pathname : '';
nconf.set('relative_path', relativePath); nconf.set('base_url', urlObject.protocol + '//' + urlObject.host);
nconf.set('port', urlObject.port || nconf.get('port') || nconf.get('PORT') || 4567); nconf.set('secure', urlObject.protocol === 'https');
nconf.set('upload_url', '/uploads/'); nconf.set('use_port', !!urlObject.port);
nconf.set('relative_path', relativePath);
if (nconf.get('isPrimary') === 'true') { nconf.set('port', urlObject.port || nconf.get('port') || nconf.get('PORT') || 4567);
winston.info('Time: %s', (new Date()).toString()); nconf.set('upload_url', '/uploads/');
winston.info('Initializing NodeBB v%s', nconf.get('version'));
winston.verbose('* using configuration stored in: %s', configFile); if (nconf.get('isPrimary') === 'true') {
winston.info('Time: %s', (new Date()).toString());
var host = nconf.get(nconf.get('database') + ':host'), winston.info('Initializing NodeBB v%s', nconf.get('version'));
storeLocation = host ? 'at ' + host + (host.indexOf('/') === -1 ? ':' + nconf.get(nconf.get('database') + ':port') : '') : ''; winston.verbose('* using configuration stored in: %s', configFile);
winston.verbose('* using %s store %s', nconf.get('database'), storeLocation); var host = nconf.get(nconf.get('database') + ':host'),
winston.verbose('* using themes stored in: %s', nconf.get('themes_path')); storeLocation = host ? 'at ' + host + (host.indexOf('/') === -1 ? ':' + nconf.get(nconf.get('database') + ':port') : '') : '';
}
winston.verbose('* using %s store %s', nconf.get('database'), storeLocation);
process.on('SIGTERM', shutdown); winston.verbose('* using themes stored in: %s', nconf.get('themes_path'));
process.on('SIGINT', shutdown); }
process.on('SIGHUP', restart);
process.on('message', function(message) { process.on('SIGTERM', shutdown);
if (typeof message !== 'object') { process.on('SIGINT', shutdown);
return; process.on('SIGHUP', restart);
} process.on('message', function(message) {
var meta = require('./src/meta'); if (typeof message !== 'object') {
var emitter = require('./src/emitter'); return;
switch (message.action) { }
case 'reload': var meta = require('./src/meta');
meta.reload(); var emitter = require('./src/emitter');
break; switch (message.action) {
case 'js-propagate': case 'reload':
meta.js.cache = message.cache; meta.reload();
meta.js.map = message.map; break;
meta.js.hash = message.hash; case 'js-propagate':
emitter.emit('meta:js.compiled'); meta.js.cache = message.cache;
winston.verbose('[cluster] Client-side javascript and mapping propagated to worker %s', process.pid); meta.js.map = message.map;
break; meta.js.hash = message.hash;
case 'css-propagate': emitter.emit('meta:js.compiled');
meta.css.cache = message.cache; winston.verbose('[cluster] Client-side javascript and mapping propagated to worker %s', process.pid);
meta.css.acpCache = message.acpCache; break;
meta.css.hash = message.hash; case 'css-propagate':
emitter.emit('meta:css.compiled'); meta.css.cache = message.cache;
winston.verbose('[cluster] Stylesheets propagated to worker %s', process.pid); meta.css.acpCache = message.acpCache;
break; meta.css.hash = message.hash;
case 'templates:compiled': emitter.emit('meta:css.compiled');
emitter.emit('templates:compiled'); winston.verbose('[cluster] Stylesheets propagated to worker %s', process.pid);
break; break;
} case 'templates:compiled':
}); emitter.emit('templates:compiled');
break;
process.on('uncaughtException', function(err) { }
winston.error(err.stack); });
console.log(err.stack);
process.on('uncaughtException', function(err) {
require('./src/meta').js.killMinifier(); winston.error(err.stack);
shutdown(1); console.log(err.stack);
});
require('./src/meta').js.killMinifier();
async.waterfall([ shutdown(1);
function(next) { });
require('./src/database').init(next);
}, async.waterfall([
function(next) { async.apply(db.init),
require('./src/meta').configs.init(next); async.apply(db.checkCompatibility),
}, function(next) {
function(next) { require('./src/meta').configs.init(next);
require('./src/upgrade').check(next); },
}, function(next) {
function(schema_ok, next) { require('./src/meta').dependencies.check(next);
if (!schema_ok && nconf.get('check-schema') !== false) { },
winston.warn('Your NodeBB schema is out-of-date. Please run the following command to bring your dataset up to spec:'); function(next) {
winston.warn(' ./nodebb upgrade'); require('./src/upgrade').check(next);
process.exit(); },
return; function(next) {
} var webserver = require('./src/webserver');
var webserver = require('./src/webserver'); require('./src/socket.io').init(webserver.server);
require('./src/socket.io').init(webserver.server);
if (nconf.get('isPrimary') === 'true' && !nconf.get('jobsDisabled')) {
if (nconf.get('isPrimary') === 'true' && !nconf.get('jobsDisabled')) { require('./src/notifications').init();
require('./src/notifications').init(); require('./src/user').startJobs();
require('./src/user').startJobs(); }
}
webserver.listen();
webserver.listen(); }
} ], function(err) {
], function(err) { if (err) {
if (err) { switch(err.message) {
winston.error(err.stack); case 'schema-out-of-date':
process.exit(); winston.warn('Your NodeBB schema is out-of-date. Please run the following command to bring your dataset up to spec:');
} winston.warn(' ./nodebb upgrade');
}); break;
} case 'dependencies-out-of-date':
winston.warn('One or more of NodeBB\'s dependent packages are out-of-date. Please run the following command to update them:');
function setup() { winston.warn(' ./nodebb upgrade');
loadConfig(); break;
default:
winston.info('NodeBB Setup Triggered via Command Line'); if (err.stacktrace !== false) {
winston.error(err.stack);
var install = require('./src/install'); } else {
winston.error(err.message);
process.stdout.write('\nWelcome to NodeBB!\n'); }
process.stdout.write('\nThis looks like a new installation, so you\'ll have to answer a few questions about your environment before we can proceed.\n'); break;
process.stdout.write('Press enter to accept the default setting (shown in brackets).\n'); }
install.setup(function (err, data) { // Either way, bad stuff happened. Abort start.
var separator = ' '; process.exit();
if (process.stdout.columns > 10) { }
for(var x=0,cols=process.stdout.columns-10;x<cols;x++) { });
separator += '='; }
}
} function setup() {
process.stdout.write('\n' + separator + '\n\n'); loadConfig();
if (err) { winston.info('NodeBB Setup Triggered via Command Line');
winston.error('There was a problem completing NodeBB setup: ', err.message);
} else { var install = require('./src/install');
if (data.hasOwnProperty('password')) {
process.stdout.write('An administrative user was automatically created for you:\n'); process.stdout.write('\nWelcome to NodeBB!\n');
process.stdout.write(' Username: ' + data.username + '\n'); process.stdout.write('\nThis looks like a new installation, so you\'ll have to answer a few questions about your environment before we can proceed.\n');
process.stdout.write(' Password: ' + data.password + '\n'); process.stdout.write('Press enter to accept the default setting (shown in brackets).\n');
process.stdout.write('\n');
} install.setup(function (err, data) {
process.stdout.write('NodeBB Setup Completed. Run \'./nodebb start\' to manually start your NodeBB server.\n'); var separator = ' ';
if (process.stdout.columns > 10) {
// If I am a child process, notify the parent of the returned data before exiting (useful for notifying for(var x=0,cols=process.stdout.columns-10;x<cols;x++) {
// hosts of auto-generated username/password during headless setups) separator += '=';
if (process.send) { }
process.send(data); }
} process.stdout.write('\n' + separator + '\n\n');
}
if (err) {
process.exit(); winston.error('There was a problem completing NodeBB setup: ', err.message);
}); } else {
} if (data.hasOwnProperty('password')) {
process.stdout.write('An administrative user was automatically created for you:\n');
function upgrade() { process.stdout.write(' Username: ' + data.username + '\n');
loadConfig(); process.stdout.write(' Password: ' + data.password + '\n');
process.stdout.write('\n');
require('./src/database').init(function(err) { }
if (err) { process.stdout.write('NodeBB Setup Completed. Run \'./nodebb start\' to manually start your NodeBB server.\n');
winston.error(err.stack);
process.exit(); // If I am a child process, notify the parent of the returned data before exiting (useful for notifying
} // hosts of auto-generated username/password during headless setups)
require('./src/meta').configs.init(function () { if (process.send) {
require('./src/upgrade').upgrade(); process.send(data);
}); }
}); }
}
process.exit();
function reset() { });
loadConfig(); }
require('./src/database').init(function(err) { function upgrade() {
if (err) { loadConfig();
winston.error(err.message);
process.exit(); require('./src/database').init(function(err) {
} if (err) {
winston.error(err.stack);
if (nconf.get('theme')) { process.exit();
resetThemes(); }
} else if (nconf.get('plugin')) { require('./src/meta').configs.init(function () {
resetPlugin(nconf.get('plugin')); require('./src/upgrade').upgrade();
} else if (nconf.get('plugins')) { });
resetPlugins(); });
} else if (nconf.get('widgets')) { }
resetWidgets();
} else if (nconf.get('settings')) { function reset() {
resetSettings(); loadConfig();
} else if (nconf.get('all')) {
require('async').series([resetWidgets, resetThemes, resetPlugins, resetSettings], function(err) { require('./src/database').init(function(err) {
if (!err) { if (err) {
winston.info('[reset] Reset complete.'); winston.error(err.message);
} else { process.exit();
winston.error('[reset] Errors were encountered while resetting your forum settings: %s', err.message); }
}
process.exit(); if (nconf.get('t')) {
}); resetThemes();
} else { } else if (nconf.get('p')) {
winston.warn('[reset] Nothing reset.'); if (nconf.get('p') === true) {
winston.info('Use ./nodebb reset {theme|plugins|widgets|settings|all}'); resetPlugins();
winston.info(' or'); } else {
winston.info('Use ./nodebb reset plugin="nodebb-plugin-pluginName"'); resetPlugin(nconf.get('p'));
process.exit(); }
} } else if (nconf.get('w')) {
}); resetWidgets();
} } else if (nconf.get('s')) {
resetSettings();
function resetSettings(callback) { } else if (nconf.get('a')) {
var meta = require('./src/meta'); require('async').series([resetWidgets, resetThemes, resetPlugins, resetSettings], function(err) {
meta.configs.set('allowLocalLogin', 1, function(err) { if (!err) {
winston.info('[reset] Settings reset to default'); winston.info('[reset] Reset complete.');
if (typeof callback === 'function') { } else {
callback(err); winston.error('[reset] Errors were encountered while resetting your forum settings: %s', err.message);
} else { }
process.exit(); process.exit();
} });
}); } else {
} process.stdout.write('\nNodeBB Reset\n'.bold);
process.stdout.write('No arguments passed in, so nothing was reset.\n\n'.yellow);
function resetThemes(callback) { process.stdout.write('Use ./nodebb reset ' + '{-t|-p|-w|-s|-a}\n'.red);
var meta = require('./src/meta'); process.stdout.write(' -t\tthemes\n');
process.stdout.write(' -p\tplugins\n');
meta.themes.set({ process.stdout.write(' -w\twidgets\n');
type: 'local', process.stdout.write(' -s\tsettings\n');
id: 'nodebb-theme-vanilla' process.stdout.write(' -a\tall of the above\n');
}, function(err) {
winston.info('[reset] Theme reset to Vanilla'); process.stdout.write('\nPlugin reset flag (-p) can take a single argument\n');
if (typeof callback === 'function') { process.stdout.write(' e.g. ./nodebb reset -p nodebb-plugin-mentions\n');
callback(err); process.exit();
} else { }
process.exit(); });
} }
});
} function resetSettings(callback) {
var meta = require('./src/meta');
function resetPlugin(pluginId) { meta.configs.set('allowLocalLogin', 1, function(err) {
var db = require('./src/database'); winston.info('[reset] Settings reset to default');
db.sortedSetRemove('plugins:active', pluginId, function(err) { if (typeof callback === 'function') {
if (err) { callback(err);
winston.error('[reset] Could not disable plugin: %s encountered error %s', pluginId, err.message); } else {
} else { process.exit();
winston.info('[reset] Plugin `%s` disabled', pluginId); }
} });
}
process.exit();
}); function resetThemes(callback) {
} var meta = require('./src/meta');
function resetPlugins(callback) { meta.themes.set({
var db = require('./src/database'); type: 'local',
db.delete('plugins:active', function(err) { id: 'nodebb-theme-persona'
winston.info('[reset] All Plugins De-activated'); }, function(err) {
if (typeof callback === 'function') { winston.info('[reset] Theme reset to Persona');
callback(err); if (typeof callback === 'function') {
} else { callback(err);
process.exit(); } else {
} process.exit();
}); }
} });
}
function resetWidgets(callback) {
require('./src/widgets').reset(function(err) { function resetPlugin(pluginId) {
winston.info('[reset] All Widgets moved to Draft Zone'); var db = require('./src/database');
if (typeof callback === 'function') { db.sortedSetRemove('plugins:active', pluginId, function(err) {
callback(err); if (err) {
} else { winston.error('[reset] Could not disable plugin: %s encountered error %s', pluginId, err.message);
process.exit(); } else {
} winston.info('[reset] Plugin `%s` disabled', pluginId);
}); }
}
process.exit();
function shutdown(code) { });
winston.info('[app] Shutdown (SIGTERM/SIGINT) Initialised.'); }
require('./src/database').close();
winston.info('[app] Database connection closed.'); function resetPlugins(callback) {
require('./src/webserver').server.close(); var db = require('./src/database');
winston.info('[app] Web server closed to connections.'); db.delete('plugins:active', function(err) {
winston.info('[reset] All Plugins De-activated');
winston.info('[app] Shutdown complete.'); if (typeof callback === 'function') {
process.exit(code || 0); callback(err);
} } else {
process.exit();
function restart() { }
if (process.send) { });
winston.info('[app] Restarting...'); }
process.send({
action: 'restart' function resetWidgets(callback) {
}); require('./src/widgets').reset(function(err) {
} else { winston.info('[reset] All Widgets moved to Draft Zone');
winston.error('[app] Could not restart server. Shutting down.'); if (typeof callback === 'function') {
shutdown(1); 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.');
require('./src/webserver').server.close();
winston.info('[app] Web server closed to connections.');
winston.info('[app] Shutdown complete.');
process.exit(code || 0);
}
function restart() {
if (process.send) {
winston.info('[app] Restarting...');
process.send({
action: 'restart'
});
} else {
winston.error('[app] Could not restart server. Shutting down.');
shutdown(1);
}
}

View File

@@ -1,34 +1,34 @@
[ [
{ {
"name": "Announcements", "name": "Announcements",
"description": "Announcements regarding our community", "description": "Announcements regarding our community",
"bgColor": "#fda34b", "bgColor": "#fda34b",
"color": "#fff", "color": "#fff",
"icon" : "fa-bullhorn", "icon" : "fa-bullhorn",
"order": 1 "order": 1
}, },
{ {
"name": "General Discussion", "name": "General Discussion",
"description": "A place to talk about whatever you want", "description": "A place to talk about whatever you want",
"bgColor": "#59b3d0", "bgColor": "#59b3d0",
"color": "#fff", "color": "#fff",
"icon" : "fa-comments-o", "icon" : "fa-comments-o",
"order": 2 "order": 2
}, },
{ {
"name": "Blogs", "name": "Blogs",
"description": "Blog posts from individual members", "description": "Blog posts from individual members",
"bgColor": "#86ba4b", "bgColor": "#86ba4b",
"color": "#fff", "color": "#fff",
"icon" : "fa-newspaper-o", "icon" : "fa-newspaper-o",
"order": 4 "order": 4
}, },
{ {
"name": "Comments & Feedback", "name": "Comments & Feedback",
"description": "Got a question? Ask away!", "description": "Got a question? Ask away!",
"bgColor": "#e95c5a", "bgColor": "#e95c5a",
"color": "#fff", "color": "#fff",
"icon" : "fa-question", "icon" : "fa-question",
"order": 3 "order": 3
} }
] ]

View File

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

View File

@@ -1,4 +1,12 @@
[ [
{
"route": "/categories",
"title": "\\[\\[global:header.categories\\]\\]",
"enabled": true,
"iconClass": "fa-list",
"textClass": "visible-xs-inline",
"text": "\\[\\[global:header.categories\\]\\]"
},
{ {
"id": "unread-count", "id": "unread-count",
"route": "/unread", "route": "/unread",
@@ -59,7 +67,7 @@
"textClass": "visible-xs-inline", "textClass": "visible-xs-inline",
"text": "\\[\\[global:header.admin\\]\\]", "text": "\\[\\[global:header.admin\\]\\]",
"properties": { "properties": {
"target": "_top", "targetBlank": false,
"adminOnly": true "adminOnly": true
} }
}, },

View File

@@ -41,8 +41,7 @@ web.install = function(port) {
function launchExpress(port) { function launchExpress(port) {
server = app.listen(port, function() { server = app.listen(port, function() {
var host = server.address().address; winston.info('Web installer listening on http://%s:%s', '0.0.0.0', port);
winston.info('Web installer listening on http://%s:%s', host, port);
}); });
} }
@@ -104,6 +103,10 @@ function launch(req, res) {
stdio: ['ignore', 'ignore', 'ignore'] stdio: ['ignore', 'ignore', 'ignore']
}); });
process.stdout.write('\nStarting NodeBB\n');
process.stdout.write(' "./nodebb stop" to stop the NodeBB server\n');
process.stdout.write(' "./nodebb log" to view server output\n');
process.stdout.write(' "./nodebb restart" to restart NodeBB\n');
child.unref(); child.unref();
process.exit(0); process.exit(0);

View File

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

295
nodebb
View File

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

3627
npm-shrinkwrap.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,8 +1,8 @@
{ {
"name": "nodebb", "name": "nodebb",
"license": "GPLv3 or later", "license": "GPL-3.0",
"description": "NodeBB Forum", "description": "NodeBB Forum",
"version": "0.7.0-dev", "version": "0.8.0",
"homepage": "http://www.nodebb.org", "homepage": "http://www.nodebb.org",
"repository": { "repository": {
"type": "git", "type": "git",
@@ -14,61 +14,66 @@
"test": "mocha ./tests -t 10000" "test": "mocha ./tests -t 10000"
}, },
"dependencies": { "dependencies": {
"async": "~0.9.0", "async": "~1.4.2",
"bcryptjs": "~2.1.0", "bcryptjs": "~2.2.1",
"body-parser": "^1.9.0", "body-parser": "^1.9.0",
"colors": "^1.1.0",
"compression": "^1.1.0", "compression": "^1.1.0",
"connect-ensure-login": "^0.1.1", "connect-ensure-login": "^0.1.1",
"connect-flash": "^0.1.1", "connect-flash": "^0.1.1",
"connect-multiparty": "^1.2.4", "connect-multiparty": "^2.0.0",
"cookie-parser": "^1.3.3", "cookie-parser": "^1.3.3",
"cron": "^1.0.5", "cron": "^1.0.5",
"csurf": "^1.6.1", "csurf": "^1.6.1",
"daemon": "~1.1.0", "daemon": "~1.1.0",
"express": "^4.9.5", "express": "^4.9.5",
"express-session": "^1.8.2", "express-session": "^1.8.2",
"gm": "1.17.0",
"gravatar": "^1.1.0", "gravatar": "^1.1.0",
"heapdump": "^0.3.0", "heapdump": "^0.3.0",
"less": "^2.0.0", "less": "^2.0.0",
"logrotate-stream": "^0.2.3", "logrotate-stream": "^0.2.3",
"lru-cache": "^2.6.1", "lru-cache": "^2.6.1",
"lwip": "0.0.7",
"mime": "^1.3.4", "mime": "^1.3.4",
"minimist": "^1.1.1",
"mkdirp": "~0.5.0", "mkdirp": "~0.5.0",
"mmmagic": "^0.3.13", "mmmagic": "^0.3.13",
"morgan": "^1.3.2", "morgan": "^1.3.2",
"nconf": "~0.7.1", "nconf": "~0.7.1",
"nodebb-plugin-dbsearch": "^0.2.12", "nodebb-plugin-composer-default": "1.0.13",
"nodebb-plugin-emoji-extended": "^0.4.8", "nodebb-plugin-dbsearch": "0.2.16",
"nodebb-plugin-markdown": "^2.1.7", "nodebb-plugin-emoji-extended": "0.4.9",
"nodebb-plugin-mentions": "^0.11.2", "nodebb-plugin-markdown": "4.0.5",
"nodebb-plugin-soundpack-default": "^0.1.1", "nodebb-plugin-mentions": "1.0.1",
"nodebb-plugin-spam-be-gone": "^0.4.0", "nodebb-plugin-soundpack-default": "0.1.4",
"nodebb-theme-lavender": "^1.0.42", "nodebb-plugin-spam-be-gone": "0.4.1",
"nodebb-theme-vanilla": "^1.0.130", "nodebb-rewards-essentials": "0.0.5",
"nodebb-theme-persona": "^0.1.55", "nodebb-theme-lavender": "1.0.52",
"nodebb-widget-essentials": "^1.0.2", "nodebb-theme-persona": "2.1.8",
"nodebb-rewards-essentials": "^0.0.1", "nodebb-theme-vanilla": "3.1.3",
"nodebb-widget-essentials": "1.0.6",
"npm": "^2.1.4", "npm": "^2.1.4",
"passport": "^0.2.1", "passport": "^0.3.0",
"passport-local": "1.0.0", "passport-local": "1.0.0",
"prompt": "^0.2.14", "prompt": "^0.2.14",
"request": "^2.44.0", "request": "^2.44.0",
"rimraf": "~2.3.2", "rimraf": "~2.4.2",
"rss": "^1.0.0", "rss": "^1.0.0",
"semver": "^4.3.3", "semver": "^5.0.1",
"serve-favicon": "^2.1.5", "serve-favicon": "^2.1.5",
"sitemap": "^0.8.1", "sitemap": "^1.0.0",
"socket.io": "^1.2.1", "socket.io": "^1.2.1",
"socket.io-client": "^1.2.1", "socket.io-client": "^1.2.1",
"socket.io-redis": "^0.1.3", "socket.io-redis": "^0.1.3",
"socketio-wildcard": "~0.1.1", "socketio-wildcard": "~0.1.1",
"string": "^3.0.0", "string": "^3.0.0",
"templates.js": "^0.2.3", "templates.js": "0.2.10",
"uglify-js": "git+https://github.com/julianlam/UglifyJS2.git", "touch": "1.0.0",
"uglify-js": "^2.4.23",
"underscore": "~1.8.3", "underscore": "~1.8.3",
"validator": "^3.30.0", "underscore.deep": "^0.5.1",
"winston": "^0.9.0", "validator": "^4.0.5",
"winston": "^1.0.1",
"xregexp": "~2.0.0" "xregexp": "~2.0.0"
}, },
"devDependencies": { "devDependencies": {
@@ -85,17 +90,17 @@
"maintainers": [ "maintainers": [
{ {
"name": "Andrew Rodrigues", "name": "Andrew Rodrigues",
"email": "andrew@designcreateplay.com", "email": "andrew@nodebb.org",
"url": "https://github.com/psychobunny" "url": "https://github.com/psychobunny"
}, },
{ {
"name": "Julian Lam", "name": "Julian Lam",
"email": "julian@designcreateplay.com", "email": "julian@nodebb.org",
"url": "https://github.com/julianlam" "url": "https://github.com/julianlam"
}, },
{ {
"name": "Barış Soner Uşaklı", "name": "Barış Soner Uşaklı",
"email": "baris@designcreateplay.com", "email": "baris@nodebb.org",
"url": "https://github.com/barisusakli" "url": "https://github.com/barisusakli"
} }
] ]

View File

@@ -1,12 +1,15 @@
{ {
"category": "فئة",
"subcategories": "فئة فرعية",
"new_topic_button": "موضوع جديد", "new_topic_button": "موضوع جديد",
"guest-login-post": "المرجو تسجيل الدخول أوَّلا", "guest-login-post": "يجب عليك تسجيل الدخول للرد",
"no_topics": "<strong>لا توجد مواضيع في هذه الفئة</strong>لم لا تحاول إنشاء موضوع؟<br />", "no_topics": "<strong>لا توجد مواضيع في هذه الفئة</strong>لم لا تحاول إنشاء موضوع؟<br />",
"browsing": "تصفح", "browsing": "تصفح",
"no_replies": م يرد أحد", "no_replies": ا توجد ردود.",
"no_new_posts": "لا يوجد مشاركات جديدة.",
"share_this_category": "انشر هذه الفئة", "share_this_category": "انشر هذه الفئة",
"watch": "Watch", "watch": "متابعة",
"ignore": "تجاهل", "ignore": "تجاهل",
"watch.message": "You are now watching updates from this category", "watch.message": "أنت اﻷن متابع لتحديثات هذه الفئة",
"ignore.message": "You are now ignoring updates from this category" "ignore.message": "أنت اﻷن تتجاهل تحديثات هذه الفئة"
} }

View File

@@ -1,13 +1,17 @@
{ {
"password-reset-requested": "تم طلب إعادة تعيين كلمة السر - %1!", "password-reset-requested": "تم طلب إعادة تعيين كلمة المرور - %1!",
"welcome-to": "مرحبًا بك في %1", "welcome-to": "مرحبًا بك في %1",
"invite": "دعوة من %1",
"greeting_no_name": "مرحبًا", "greeting_no_name": "مرحبًا",
"greeting_with_name": "مرحبًا بك يا %1", "greeting_with_name": "مرحبًا بك يا %1",
"welcome.text1": "شكرًا على تسجيلك في %1!", "welcome.text1": "شكرًا على تسجيلك في %1!",
"welcome.text2": "لتفعيل حسابك، نحتاج إلى التأكد من صحة عنوان البريد الإلكتروني الذي تسجلت به.", "welcome.text2": "لتفعيل حسابك، نحتاج إلى التأكد من صحة عنوان البريد الإلكتروني الذي سجلت به.",
"welcome.text3": "تم قبول نتسجيلك ، يمكنك الدخول باتسخدام اسم المستخدم و كلمة المرور.",
"welcome.cta": "انقر هنا لتفعيل عنوان بريدك الإلكتروني", "welcome.cta": "انقر هنا لتفعيل عنوان بريدك الإلكتروني",
"reset.text1": "لقد توصلنا بطلب إعادة تعيين كلمة السرالخاصة بك، ربما لكونك قد نسيتها, إن لم يكن الأمر كذلك، المرجو تجاهل هذه الرسالة.", "invitation.text1": "%1 قام بدعوتك للانضمام لـ %2",
"reset.text2": "لمواصلة طلب إعاة تعيين كلمة السر، المرجو تتبع هذا الرابط.", "invitation.ctr": "إضغط هنا لإنشاء حسابك",
"reset.text1": "لقد توصلنا بطلب إعادة تعيين كلمة المرور الخاصة بك، ربما لكونك قد نسيتها, إن لم يكن الأمر كذلك، المرجو تجاهل هذه الرسالة.",
"reset.text2": "لمواصلة طلب إعاة تعيين كلمة المرور، الرجاء تتبع هذا الرابط.",
"reset.cta": "انقر هنا لإعادة تعيين كلمة السر الخاصة بك.", "reset.cta": "انقر هنا لإعادة تعيين كلمة السر الخاصة بك.",
"reset.notify.subject": "تم تغيير كلمة المرور بنجاح", "reset.notify.subject": "تم تغيير كلمة المرور بنجاح",
"reset.notify.text1": "نحيطك علما أن كلمة مرورك قد تم تغييرها في %1", "reset.notify.text1": "نحيطك علما أن كلمة مرورك قد تم تغييرها في %1",

View File

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

View File

@@ -3,7 +3,7 @@
"search": "بحث", "search": "بحث",
"buttons.close": "أغلق", "buttons.close": "أغلق",
"403.title": "غير مسموح بالدخول", "403.title": "غير مسموح بالدخول",
"403.message": "You seem to have stumbled upon a page that you do not have access to.", "403.message": "يبدو أنك قد تعثرت على صفحة لا تمتلك الصلاحية للدخول إليها",
"403.login": "Perhaps you should <a href='%1/login'>try logging in</a>?", "403.login": "Perhaps you should <a href='%1/login'>try logging in</a>?",
"404.title": "لم يتم العثور", "404.title": "لم يتم العثور",
"404.message": "You seem to have stumbled upon a page that does not exist. Return to the <a href='%1/'>home page</a>.", "404.message": "You seem to have stumbled upon a page that does not exist. Return to the <a href='%1/'>home page</a>.",
@@ -22,6 +22,7 @@
"pagination.out_of": "%1 من %2", "pagination.out_of": "%1 من %2",
"pagination.enter_index": "أدخل الرقم التسلسلي", "pagination.enter_index": "أدخل الرقم التسلسلي",
"header.admin": "مدبر نظام", "header.admin": "مدبر نظام",
"header.categories": "الفئات",
"header.recent": "حديث", "header.recent": "حديث",
"header.unread": "غير مقروء", "header.unread": "غير مقروء",
"header.tags": "وسم", "header.tags": "وسم",
@@ -50,6 +51,7 @@
"views": "المشاهدات", "views": "المشاهدات",
"reputation": "السمعة", "reputation": "السمعة",
"read_more": "اقرأ المزيد", "read_more": "اقرأ المزيد",
"more": "المزيد",
"posted_ago_by_guest": "كتب %1 من طرف زائر", "posted_ago_by_guest": "كتب %1 من طرف زائر",
"posted_ago_by": "كتب %1 من طرف %2", "posted_ago_by": "كتب %1 من طرف %2",
"posted_ago": "كتب %1", "posted_ago": "كتب %1",

View File

@@ -6,6 +6,12 @@
"no_groups_found": "لاوجدود لمجموعات يمكن معاينتها", "no_groups_found": "لاوجدود لمجموعات يمكن معاينتها",
"pending.accept": "موافق", "pending.accept": "موافق",
"pending.reject": "رفض", "pending.reject": "رفض",
"pending.accept_all": "قبول الكل",
"pending.reject_all": "رفض الكل",
"pending.none": "لايوجد أعضاء ينتظرون التفعيل حالياً",
"invited.none": "لايوجد أعضاء مدعوون في حالياً",
"invited.uninvite": "إلغ الدعوة",
"invited.search": "ابحث عن أعضاء لدعوتهم للمجموعة",
"cover-instructions": "اسحب وأسقِط صورة، اسحبها للموضع المرغوب، وانقر على <strong>حفظ</strong>", "cover-instructions": "اسحب وأسقِط صورة، اسحبها للموضع المرغوب، وانقر على <strong>حفظ</strong>",
"cover-change": "تغيير", "cover-change": "تغيير",
"cover-save": "حفظ", "cover-save": "حفظ",
@@ -13,6 +19,7 @@
"details.title": "تفاصيل المجموعة", "details.title": "تفاصيل المجموعة",
"details.members": "لائحة الأعضاء", "details.members": "لائحة الأعضاء",
"details.pending": "المستخدمون في الانتظار", "details.pending": "المستخدمون في الانتظار",
"details.invited": "اﻷعضار المدعوون",
"details.has_no_posts": "أعضاء هذه المجموعة لم يضيفوا أية مشاركة", "details.has_no_posts": "أعضاء هذه المجموعة لم يضيفوا أية مشاركة",
"details.latest_posts": "آخر المشاركات", "details.latest_posts": "آخر المشاركات",
"details.private": "خاص", "details.private": "خاص",
@@ -30,7 +37,14 @@
"details.userTitleEnabled": "إظهار الوسام", "details.userTitleEnabled": "إظهار الوسام",
"details.private_help": "في حالة تفعيل الخيار، الانضمام إلى المجموعة يستلزم قبول مالكها", "details.private_help": "في حالة تفعيل الخيار، الانضمام إلى المجموعة يستلزم قبول مالكها",
"details.hidden": "مخفي", "details.hidden": "مخفي",
"details.hidden_help": "في حالة تفعيل الخيار، لن تظهر المجموعة للعموم والإنضمام إليها سيتلزم دعوة يدوية.", "details.hidden_help": "في حالة تفعيل الخيار، لن تظهر المجموعة للعموم والإنضمام إليها سيتلزم دعوة.",
"details.delete_group": "حذف المجموعة",
"event.updated": "تم تحديث بيانات المجموعة", "event.updated": "تم تحديث بيانات المجموعة",
"event.deleted": "تم حذف المجموعة %1" "event.deleted": "تم حذف المجموعة %1",
"membership.accept-invitation": "اقبل الدعوة",
"membership.invitation-pending": "الدعوة بانتظار القبول",
"membership.join-group": "انظم للمجموعة",
"membership.leave-group": "غادر المجموعة",
"membership.reject": "رفض",
"new-group.group_name": "اسم المجموعة"
} }

View File

@@ -7,5 +7,5 @@
"alternative_logins": "تسجيلات الدخول البديلة", "alternative_logins": "تسجيلات الدخول البديلة",
"failed_login_attempt": "فشلت محاولة تسجيل الدخول، يرجى المحاولة مرة أخرى.", "failed_login_attempt": "فشلت محاولة تسجيل الدخول، يرجى المحاولة مرة أخرى.",
"login_successful": "قمت بتسجيل الدخول بنجاح!", "login_successful": "قمت بتسجيل الدخول بنجاح!",
"dont_have_account": م تفتح حسابك بعد؟" "dont_have_account": ا تملك حساب؟"
} }

View File

@@ -15,7 +15,7 @@
"chat.seven_days": "7 أيام", "chat.seven_days": "7 أيام",
"chat.thirty_days": "30 يومًا", "chat.thirty_days": "30 يومًا",
"chat.three_months": "3 أشهر", "chat.three_months": "3 أشهر",
"composer.compose": "Compose", "composer.compose": "اكتب",
"composer.show_preview": "عرض المعاينة", "composer.show_preview": "عرض المعاينة",
"composer.hide_preview": "إخفاء المعاينة", "composer.hide_preview": "إخفاء المعاينة",
"composer.user_said_in": "%1 كتب في %2", "composer.user_said_in": "%1 كتب في %2",

View File

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

View File

@@ -5,17 +5,17 @@
"recent": "المواضيع الحديثة", "recent": "المواضيع الحديثة",
"users": "اﻷعضاء المسجلون", "users": "اﻷعضاء المسجلون",
"notifications": "التنبيهات", "notifications": "التنبيهات",
"tags": "Tags", "tags": "الكلمات الدلالية",
"tag": "Topics tagged under \"%1\"", "tag": "Topics tagged under \"%1\"",
"user.edit": "تعديل \"%1\"", "user.edit": "تعديل \"%1\"",
"user.following": "المستخدمون الذين يتبعهم %1", "user.following": "المستخدمون الذين يتبعهم %1",
"user.followers": "المستخدمون الذين يتبعون %1", "user.followers": "المستخدمون الذين يتبعون %1",
"user.posts": "ردود %1", "user.posts": "ردود %1",
"user.topics": "مواضيع %1", "user.topics": "مواضيع %1",
"user.groups": "%1's Groups", "user.groups": "مجموعات %1",
"user.favourites": "مفضلات %1", "user.favourites": "مفضلات %1",
"user.settings": "خيارات المستخدم", "user.settings": "خيارات المستخدم",
"user.watched": "Topics watched by %1", "user.watched": "المواضيع المتابعة من قبل %1 ",
"maintenance.text": "جاري صيانة %1. المرجو العودة لاحقًا.", "maintenance.text": "جاري صيانة %1. المرجو العودة لاحقًا.",
"maintenance.messageIntro": "بالإضافة إلى ذلك، قام مدبر النظام بترك هذه الرسالة:" "maintenance.messageIntro": "بالإضافة إلى ذلك، قام مدبر النظام بترك هذه الرسالة:"
} }

View File

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

View File

@@ -1,17 +1,17 @@
{ {
"reset_password": "إعادة تعيين كلمة السر", "reset_password": "إعادة تعيين كلمة المرور",
"update_password": "تحديث كلمة السر", "update_password": "تحديث كلمة المرور",
"password_changed.title": "تم تغير كلمة السر", "password_changed.title": "تم تغير كلمة المرور",
"password_changed.message": "<p>تم تغير كلمة السر بنجاح. يرجى <a href='/login'>إعادة الدخول</a></p>", "password_changed.message": "<p>تم تغير كلمة المرور بنجاح، الرجاء <a href='/login'>إعادة الدخول</a></p>",
"wrong_reset_code.title": "رمز إعادة التعيين غير صحيح", "wrong_reset_code.title": "رمز إعادة التعيين غير صحيح",
"wrong_reset_code.message": "رمز إعادة التعين غير صحيح، يرجى المحاولة مرة أخرى أو <a href='/reset'>اطلب رمزا جديدا</a>", "wrong_reset_code.message": "رمز إعادة التعين غير صحيح، يرجى المحاولة مرة أخرى أو <a href='/reset'>اطلب رمزا جديدا</a>",
"new_password": "كلمة السر الجديدة", "new_password": "كلمة المرور الجديدة",
"repeat_password": "تأكيد كلمة السر", "repeat_password": "تأكيد كلمة المرور",
"enter_email": "يرجى إدخال <strong>عنوان البريد الإلكتروني</strong> الخاص بك وسوف نرسل لك رسالة بالبريد الالكتروني مع تعليمات حول كيفية إستعادة حسابك.", "enter_email": "يرجى إدخال <strong>عنوان البريد الإلكتروني</strong> الخاص بك وسوف نرسل لك رسالة بالبريد الالكتروني مع تعليمات حول كيفية إستعادة حسابك.",
"enter_email_address": "ادخل عنوان البريد الإلكتروني", "enter_email_address": "ادخل عنوان البريد الإلكتروني",
"password_reset_sent": "إعادة تعيين كلمة السر أرسلت", "password_reset_sent": "إعادة تعيين كلمة السر أرسلت",
"invalid_email": "بريد إلكتروني غير صالح أو غير موجود", "invalid_email": "بريد إلكتروني غير صالح أو غير موجود",
"password_too_short": "The password entered is too short, please pick a different password.", "password_too_short": "كلمة المرور التي أدخلتها قصيرة، الرجاء اختر كلمة مرور مختلفة",
"passwords_do_not_match": "The two passwords you've entered do not match.", "passwords_do_not_match": "كلمتا السر التي أدخلتهما غير متطابقتان",
"password_expired": "Your password has expired, please choose a new password" "password_expired": "لقد انتهت صلاحية كلمة المرور الخاصة بك، الرجاء اختيار كلمة مرور جديدة"
} }

View File

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

View File

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

View File

@@ -5,7 +5,7 @@
"no_topics_found": "لا توجد مواضيع !", "no_topics_found": "لا توجد مواضيع !",
"no_posts_found": "لا توجد مشاركات!", "no_posts_found": "لا توجد مشاركات!",
"post_is_deleted": "هذه المشاركة محذوفة!", "post_is_deleted": "هذه المشاركة محذوفة!",
"topic_is_deleted": "This topic is deleted!", "topic_is_deleted": "هذا الموضوع محذوف",
"profile": "الملف الشخصي", "profile": "الملف الشخصي",
"posted_by": "كتب من طرف %1", "posted_by": "كتب من طرف %1",
"posted_by_guest": "كتب من طرف زائر", "posted_by_guest": "كتب من طرف زائر",
@@ -76,7 +76,7 @@
"fork_no_pids": "لم تختر أي مشاركة", "fork_no_pids": "لم تختر أي مشاركة",
"fork_success": "تم إنشاء فرع للموضوع بنجاح! إضغط هنا لمعاينة الفرع.", "fork_success": "تم إنشاء فرع للموضوع بنجاح! إضغط هنا لمعاينة الفرع.",
"composer.title_placeholder": "أدخل عنوان موضوعك هنا...", "composer.title_placeholder": "أدخل عنوان موضوعك هنا...",
"composer.handle_placeholder": "Name", "composer.handle_placeholder": "اﻹسم",
"composer.discard": "نبذ التغييرات", "composer.discard": "نبذ التغييرات",
"composer.submit": "حفظ", "composer.submit": "حفظ",
"composer.replying_to": "الرد على %1", "composer.replying_to": "الرد على %1",
@@ -96,5 +96,5 @@
"oldest_to_newest": "من الأقدم إلى الأحدث", "oldest_to_newest": "من الأقدم إلى الأحدث",
"newest_to_oldest": "من الأحدث إلى الأقدم", "newest_to_oldest": "من الأحدث إلى الأقدم",
"most_votes": "الأكثر تصويتًا", "most_votes": "الأكثر تصويتًا",
"most_posts": "Most posts" "most_posts": "اﻷكثر رداً"
} }

View File

@@ -5,5 +5,6 @@
"mark_as_read": "حدد غير مقروء", "mark_as_read": "حدد غير مقروء",
"selected": "المحددة", "selected": "المحددة",
"all": "الكل", "all": "الكل",
"all_categories": "كل الفئات",
"topics_marked_as_read.success": "تم تحديد المواضيع على أنها مقروءة!" "topics_marked_as_read.success": "تم تحديد المواضيع على أنها مقروءة!"
} }

View File

@@ -6,8 +6,12 @@
"postcount": "عدد المشاركات", "postcount": "عدد المشاركات",
"email": "البريد الإلكتروني", "email": "البريد الإلكتروني",
"confirm_email": "تأكيد عنوان البريد الإلكتروني", "confirm_email": "تأكيد عنوان البريد الإلكتروني",
"ban_account": "Ban Account",
"ban_account_confirm": "هل تريد حقاً حظر هاذا العضو؟",
"unban_account": "Unban Account",
"delete_account": "حذف الحساب", "delete_account": "حذف الحساب",
"delete_account_confirm": "هل أن متأكد أنك تريد حذف حسابك؟<br /><strong> هذه العملية غير قابلة للإلغاء ولن يكون بالإمكان استعادة بياناتك</strong><br /><br />أدخل اسم المستخدم الخاص بك لتأكيد عملية الحذف", "delete_account_confirm": "هل أن متأكد أنك تريد حذف حسابك؟<br /><strong> هذه العملية غير قابلة للإلغاء ولن يكون بالإمكان استعادة بياناتك</strong><br /><br />أدخل اسم المستخدم الخاص بك لتأكيد عملية الحذف",
"delete_this_account_confirm": "Are you sure you want to delete this account? <br /><strong>This action is irreversible and you will not be able to recover any data</strong><br /><br />",
"fullname": "الاسم الكامل", "fullname": "الاسم الكامل",
"website": "الموقع الإلكتروني", "website": "الموقع الإلكتروني",
"location": "الموقع", "location": "الموقع",
@@ -21,7 +25,7 @@
"watched": "متابع", "watched": "متابع",
"followers": "المتابعون", "followers": "المتابعون",
"following": "يتابع", "following": "يتابع",
"aboutme": "About me", "aboutme": "معلومة عنك او السيرة الذاتية",
"signature": "توقيع", "signature": "توقيع",
"gravatar": "Gravatar", "gravatar": "Gravatar",
"birthday": "عيد ميلاد", "birthday": "عيد ميلاد",
@@ -64,9 +68,9 @@
"settings-require-reload": "تغيير بعض اﻹعدادات يتطلب تحديث الصفحة. إضغط هنا لتحديث الصفحة", "settings-require-reload": "تغيير بعض اﻹعدادات يتطلب تحديث الصفحة. إضغط هنا لتحديث الصفحة",
"has_no_follower": "هذا المستخدم ليس لديه أي متابع :(", "has_no_follower": "هذا المستخدم ليس لديه أي متابع :(",
"follows_no_one": "هذا المستخدم لا يتابع أحد :(", "follows_no_one": "هذا المستخدم لا يتابع أحد :(",
"has_no_posts": "هذا المستخدم لم يكتب أي شيء بعد.", "has_no_posts": "This user hasn't posted anything yet.",
"has_no_topics": "هذا المستخدم لم ينشئ أي موضوع بعد.", "has_no_topics": "This user hasn't posted any topics yet.",
"has_no_watched_topics": "This user didn't watch any topics yet.", "has_no_watched_topics": "This user hasn't watched any topics yet.",
"email_hidden": "البريد الإلكتروني مخفي", "email_hidden": "البريد الإلكتروني مخفي",
"hidden": "مخفي", "hidden": "مخفي",
"paginate_description": "Paginate topics and posts instead of using infinite scroll", "paginate_description": "Paginate topics and posts instead of using infinite scroll",
@@ -79,6 +83,6 @@
"topic_search_help": "If enabled, in-topic searching will override the browser's default page search behaviour and allow you to search through the entire topic, instead of what is only shown on screen", "topic_search_help": "If enabled, in-topic searching will override the browser's default page search behaviour and allow you to search through the entire topic, instead of what is only shown on screen",
"follow_topics_you_reply_to": "متابعة المواضيع التي تقوم بالرد فيها", "follow_topics_you_reply_to": "متابعة المواضيع التي تقوم بالرد فيها",
"follow_topics_you_create": "متابعة المواضيع التي تنشئها", "follow_topics_you_create": "متابعة المواضيع التي تنشئها",
"grouptitle": "Select the group title you would like to display", "grouptitle": "حدد عنوان المجموعة الذي تريد عرضه",
"no-group-title": "No group title" "no-group-title": "لا يوجد عنوان للمجموعة"
} }

View File

@@ -5,8 +5,17 @@
"search": "بحث", "search": "بحث",
"enter_username": "أدخل اسم مستخدم للبحث", "enter_username": "أدخل اسم مستخدم للبحث",
"load_more": "حمل المزيد", "load_more": "حمل المزيد",
"users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "users-found-search-took": "تم إيجاد %1 مستخدمـ(ين)! استغرق البحث %2 ثانية.",
"filter-by": "Filter By", "filter-by": "Filter By",
"online-only": "المتصلون فقط", "online-only": "المتصلون فقط",
"picture-only": "Picture only" "picture-only": "صورة فقط",
"invite": "Invite",
"invitation-email-sent": "An invitation email has been sent to %1",
"user_list": "قائمة اﻷعضاء",
"recent_topics": "أحدث المواضيع",
"popular_topics": "Popular Topics",
"unread_topics": "المواضيع الغير مقروءة",
"categories": "الفئات",
"tags": "الكلمات الدلالية",
"map": "Map"
} }

View File

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

View File

@@ -1,11 +1,15 @@
{ {
"password-reset-requested": "Изпратена е заявка за подновяване на паролата %1!", "password-reset-requested": "Изпратена е заявка за подновяване на паролата %1!",
"welcome-to": "Добре дошли в %1", "welcome-to": "Добре дошли в %1",
"invite": "Покана от %1",
"greeting_no_name": "Здравейте", "greeting_no_name": "Здравейте",
"greeting_with_name": "Здравейте, %1", "greeting_with_name": "Здравейте, %1",
"welcome.text1": "Благодарим Ви, че се регистрирахте с %1", "welcome.text1": "Благодарим Ви, че се регистрирахте с %1",
"welcome.text2": "За да активирате напълно Вашия акаунт, трябва да потвърдите е-пощата, с която сте се регистрирали.", "welcome.text2": "За да активирате напълно Вашия акаунт, трябва да потвърдите е-пощата, с която сте се регистрирали.",
"welcome.text3": "Вашата заявка за регистрация беше приета от администратор. Вече можете да се впишете с Вашето потребителско име и парола.",
"welcome.cta": "Натиснете тук, за да потвърдите Вашата е-поща.", "welcome.cta": "Натиснете тук, за да потвърдите Вашата е-поща.",
"invitation.text1": "%1 Ви покани да се присъедините към %2",
"invitation.ctr": "Натиснете тук, за да си създадете акаунт.",
"reset.text1": "Получихме заявка за подновяване на Вашата парола, най-вероятно защото сте я забравили. Ако това не е така, моля не обръщайте внимание на това е-писмо.", "reset.text1": "Получихме заявка за подновяване на Вашата парола, най-вероятно защото сте я забравили. Ако това не е така, моля не обръщайте внимание на това е-писмо.",
"reset.text2": "За да продължите с процедурата по подновяване на паролата, моля последвайте следната връзка:", "reset.text2": "За да продължите с процедурата по подновяване на паролата, моля последвайте следната връзка:",
"reset.cta": "Натиснете тук, за да подновите паролата си", "reset.cta": "Натиснете тук, за да подновите паролата си",

View File

@@ -46,11 +46,14 @@
"too-many-posts-newbie": "Като нов потребител, Вие можете да публикувате веднъж на %1 секунда/и, докато не натрупате %2 репутация моля, изчакайте малко, преди да опитате да публикувате отново", "too-many-posts-newbie": "Като нов потребител, Вие можете да публикувате веднъж на %1 секунда/и, докато не натрупате %2 репутация моля, изчакайте малко, преди да опитате да публикувате отново",
"tag-too-short": "Моля, въведете по-дълъг етикет. Етикетите трябва да съдържат поне %1 символ(а)", "tag-too-short": "Моля, въведете по-дълъг етикет. Етикетите трябва да съдържат поне %1 символ(а)",
"tag-too-long": "Моля, въведете по-кратък етикет. Етикетите трябва да съдържат не повече от %1 символ(а)", "tag-too-long": "Моля, въведете по-кратък етикет. Етикетите трябва да съдържат не повече от %1 символ(а)",
"not-enough-tags": "Недостатъчно етикети. Темите трябва да имат поне %1 етикет(а)",
"too-many-tags": "Твърде много етикети. Темите не могат да имат повече от %1 етикет(а)",
"file-too-big": "Максималният разрешен размер на файл е %1 КБ моля, качете по-малък файл", "file-too-big": "Максималният разрешен размер на файл е %1 КБ моля, качете по-малък файл",
"cant-vote-self-post": "Не можете да гласувате за собствената си публикация", "cant-vote-self-post": "Не можете да гласувате за собствената си публикация",
"already-favourited": "Вече сте отбелязали тази публикация като любима", "already-favourited": "Вече сте отбелязали тази публикация като любима",
"already-unfavourited": "Вече сте премахнали тази публикация от любимите си", "already-unfavourited": "Вече сте премахнали тази публикация от любимите си",
"cant-ban-other-admins": "Не можете да блокирате другите администратори!", "cant-ban-other-admins": "Не можете да блокирате другите администратори!",
"cant-remove-last-admin": "Вие сте единственият администратор. Добавете друг потребител като администратор, преди да премахнете себе си като администратор",
"invalid-image-type": "Грешен тип на изображение. Позволените типове са: %1", "invalid-image-type": "Грешен тип на изображение. Позволените типове са: %1",
"invalid-image-extension": "Грешно разширение на изображението", "invalid-image-extension": "Грешно разширение на изображението",
"invalid-file-type": "Грешен тип на файл. Позволените типове са: %1", "invalid-file-type": "Грешен тип на файл. Позволените типове са: %1",
@@ -59,6 +62,8 @@
"group-name-change-not-allowed": "Промяната на името на групата не е разрешено", "group-name-change-not-allowed": "Промяната на името на групата не е разрешено",
"group-already-member": "Вече сте част от тази група", "group-already-member": "Вече сте част от тази група",
"group-needs-owner": "Тази група се нуждае от поне един собственик", "group-needs-owner": "Тази група се нуждае от поне един собственик",
"group-already-invited": "Този потребител вече е бил поканен",
"group-already-requested": "Вашата заявка за членство вече е била изпратена",
"post-already-deleted": "Тази публикация вече е изтрита", "post-already-deleted": "Тази публикация вече е изтрита",
"post-already-restored": "Тази публикация вече е възстановена", "post-already-restored": "Тази публикация вече е възстановена",
"topic-already-deleted": "Тази тема вече е изтрита", "topic-already-deleted": "Тази тема вече е изтрита",
@@ -67,8 +72,8 @@
"topic-thumbnails-are-disabled": "Иконките на темите са изключени.", "topic-thumbnails-are-disabled": "Иконките на темите са изключени.",
"invalid-file": "Грешен файл", "invalid-file": "Грешен файл",
"uploads-are-disabled": "Качването не е разрешено", "uploads-are-disabled": "Качването не е разрешено",
"signature-too-long": "Sorry, your signature cannot be longer than %1 character(s).", "signature-too-long": "Съжаляваме, но подписът Ви трябва да съдържа не повече от %1 символ(а).",
"about-me-too-long": "Sorry, your about me cannot be longer than %1 character(s).", "about-me-too-long": "Съжаляваме, но информацията за Вас трябва да съдържа не повече от %1 символ(а).",
"cant-chat-with-yourself": "Не можете да пишете чат съобщение на себе си!", "cant-chat-with-yourself": "Не можете да пишете чат съобщение на себе си!",
"chat-restricted": "Този потребител е ограничил чат съобщенията до себе си. Той трябва първо да Ви последва, преди да можете да си пишете с него.", "chat-restricted": "Този потребител е ограничил чат съобщенията до себе си. Той трябва първо да Ви последва, преди да можете да си пишете с него.",
"too-many-messages": "Изпратили сте твърде много съобщения. Моля, изчакайте малко.", "too-many-messages": "Изпратили сте твърде много съобщения. Моля, изчакайте малко.",
@@ -76,6 +81,7 @@
"downvoting-disabled": "Отрицателното гласуване е изключено", "downvoting-disabled": "Отрицателното гласуване е изключено",
"not-enough-reputation-to-downvote": "Нямате достатъчно репутация, за да гласувате отрицателно за тази публикация", "not-enough-reputation-to-downvote": "Нямате достатъчно репутация, за да гласувате отрицателно за тази публикация",
"not-enough-reputation-to-flag": "Нямате достатъчно репутация, за да докладвате тази публикация", "not-enough-reputation-to-flag": "Нямате достатъчно репутация, за да докладвате тази публикация",
"already-flagged": "Вече сте докладвали тази публикация",
"reload-failed": "NodeBB срещна проблем при презареждането: „%1“. NodeBB ще продължи да поддържа съществуващите клиентски ресурси, но Вие трябва да отмените последните си действия преди презареждането.", "reload-failed": "NodeBB срещна проблем при презареждането: „%1“. NodeBB ще продължи да поддържа съществуващите клиентски ресурси, но Вие трябва да отмените последните си действия преди презареждането.",
"registration-error": "Грешка при регистрацията", "registration-error": "Грешка при регистрацията",
"parse-error": "Нещо се обърка при прочитането на отговора на сървъра", "parse-error": "Нещо се обърка при прочитането на отговора на сървъра",

View File

@@ -9,8 +9,8 @@
"404.message": "Изглежда сте се опитали да посетите страница, която не съществува. Върнете се към <a href='%1/'>началната страница</a>.", "404.message": "Изглежда сте се опитали да посетите страница, която не съществува. Върнете се към <a href='%1/'>началната страница</a>.",
"500.title": "Вътрешна грешка.", "500.title": "Вътрешна грешка.",
"500.message": "Опа! Изглежда нещо се обърка!", "500.message": "Опа! Изглежда нещо се обърка!",
"register": "Регистриране", "register": "Регистрация",
"login": "Влизане", "login": "Вход",
"please_log_in": "Моля, влезте", "please_log_in": "Моля, влезте",
"logout": "Изход", "logout": "Изход",
"posting_restriction_info": "Публикуването в момента е позволено само за регистрираните потребители. Натиснете тук, за да влезете.", "posting_restriction_info": "Публикуването в момента е позволено само за регистрираните потребители. Натиснете тук, за да влезете.",
@@ -22,6 +22,7 @@
"pagination.out_of": "%1 от %2", "pagination.out_of": "%1 от %2",
"pagination.enter_index": "Въведете номер", "pagination.enter_index": "Въведете номер",
"header.admin": "Администратор", "header.admin": "Администратор",
"header.categories": "Категории",
"header.recent": "Скорошни", "header.recent": "Скорошни",
"header.unread": "Непрочетени", "header.unread": "Непрочетени",
"header.tags": "Етикети", "header.tags": "Етикети",
@@ -46,10 +47,11 @@
"online": "На линия", "online": "На линия",
"users": "Потребители", "users": "Потребители",
"topics": "Теми", "topics": "Теми",
"posts": "Публикации", "posts": "Публ.",
"views": "Преглеждания", "views": "Прегл.",
"reputation": "Репутация", "reputation": "Репутация",
"read_more": "още", "read_more": "още",
"more": "Още",
"posted_ago_by_guest": "публикувано %1 от гост", "posted_ago_by_guest": "публикувано %1 от гост",
"posted_ago_by": "публикувано %1 от %2", "posted_ago_by": "публикувано %1 от %2",
"posted_ago": "публикувано %1", "posted_ago": "публикувано %1",

View File

@@ -6,6 +6,12 @@
"no_groups_found": "Няма групи", "no_groups_found": "Няма групи",
"pending.accept": "Приемане", "pending.accept": "Приемане",
"pending.reject": "Отхвърляне", "pending.reject": "Отхвърляне",
"pending.accept_all": "Приемане на всички",
"pending.reject_all": "Отхвърляне на всички",
"pending.none": "В момента няма чакащи членове",
"invited.none": "В момента няма поканени членове",
"invited.uninvite": "Отмяна на поканата",
"invited.search": "Потърсете потребител, когото да поканите в тази група",
"cover-instructions": "Плъзнете снимка, наместете я в предпочитаната позиция и натистнете <strong>Запазване</strong>", "cover-instructions": "Плъзнете снимка, наместете я в предпочитаната позиция и натистнете <strong>Запазване</strong>",
"cover-change": "Промяна", "cover-change": "Промяна",
"cover-save": "Запазване", "cover-save": "Запазване",
@@ -13,6 +19,7 @@
"details.title": "Подробности за групата", "details.title": "Подробности за групата",
"details.members": "Списък на членовете", "details.members": "Списък на членовете",
"details.pending": "Кандидатстващи членове", "details.pending": "Кандидатстващи членове",
"details.invited": "Поканени членове",
"details.has_no_posts": "Членовете на тази група не са публикували нищо.", "details.has_no_posts": "Членовете на тази група не са публикували нищо.",
"details.latest_posts": "Скорошни публикации", "details.latest_posts": "Скорошни публикации",
"details.private": "Частна", "details.private": "Частна",
@@ -31,6 +38,13 @@
"details.private_help": "Ако е включено, присъединяването към група изисква одобрението на собственика ѝ", "details.private_help": "Ако е включено, присъединяването към група изисква одобрението на собственика ѝ",
"details.hidden": "Скрита", "details.hidden": "Скрита",
"details.hidden_help": "Ако е включено, тази група няма да бъде извеждана в списъка от групи и потребителите ще трябва да бъдат поканени лично", "details.hidden_help": "Ако е включено, тази група няма да бъде извеждана в списъка от групи и потребителите ще трябва да бъдат поканени лично",
"details.delete_group": "Изтриване на групата",
"event.updated": "Подробностите за групата бяха обновени", "event.updated": "Подробностите за групата бяха обновени",
"event.deleted": "Групата „%1“ беше изтрита" "event.deleted": "Групата „%1“ беше изтрита",
"membership.accept-invitation": "Приемане на поканата",
"membership.invitation-pending": "Чакаща покана",
"membership.join-group": "Присъединяване към групата",
"membership.leave-group": "Напускане на групата",
"membership.reject": "Отхвърляне",
"new-group.group_name": "Име на групата:"
} }

View File

@@ -20,6 +20,7 @@
"user_posted_topic": "<strong>%1</strong> публикува нова тема: <strong>%2</strong>", "user_posted_topic": "<strong>%1</strong> публикува нова тема: <strong>%2</strong>",
"user_mentioned_you_in": "<strong>%1</strong> Ви спомена в <strong>%2</strong>", "user_mentioned_you_in": "<strong>%1</strong> Ви спомена в <strong>%2</strong>",
"user_started_following_you": "<strong>%1</strong> започна да Ви следва.", "user_started_following_you": "<strong>%1</strong> започна да Ви следва.",
"new_register": "<strong>%1</strong> изпрати заявка за регистрация.",
"email-confirmed": "Е-пощата беше потвърдена", "email-confirmed": "Е-пощата беше потвърдена",
"email-confirmed-message": "Благодарим Ви, че потвърдихте е-пощата си. Акаунтът Ви е вече напълно активиран.", "email-confirmed-message": "Благодарим Ви, че потвърдихте е-пощата си. Акаунтът Ви е вече напълно активиран.",
"email-confirm-error-message": "Възникна проблем при потвърждаването на е-пощата Ви. Може кодът да е грешен или давността му да е изтекла.", "email-confirm-error-message": "Възникна проблем при потвърждаването на е-пощата Ви. Може кодът да е грешен или давността му да е изтекла.",

View File

@@ -14,5 +14,6 @@
"register_now_button": "Регистриране", "register_now_button": "Регистриране",
"alternative_registration": "Друг начин за регистриране", "alternative_registration": "Друг начин за регистриране",
"terms_of_use": "Условия за ползване", "terms_of_use": "Условия за ползване",
"agree_to_terms_of_use": "Съгласен съм с условията за ползване" "agree_to_terms_of_use": "Съгласен съм с условията за ползване",
"registration-added-to-queue": "Вашата регистрация беше добавена в опашката за одобрение. Ще получите е-писмо, когато тя бъде одобрена от администратор."
} }

View File

@@ -5,5 +5,6 @@
"mark_as_read": "Отбелязване като прочетени", "mark_as_read": "Отбелязване като прочетени",
"selected": "Избраните", "selected": "Избраните",
"all": "Всички", "all": "Всички",
"all_categories": "Всички категории",
"topics_marked_as_read.success": "Темите бяха отбелязани като прочетени!" "topics_marked_as_read.success": "Темите бяха отбелязани като прочетени!"
} }

View File

@@ -6,8 +6,12 @@
"postcount": "Брой публикации", "postcount": "Брой публикации",
"email": "Е-поща", "email": "Е-поща",
"confirm_email": "Потвърдете е-пощата", "confirm_email": "Потвърдете е-пощата",
"ban_account": "Блокиране на акаунта",
"ban_account_confirm": "Наистина ли искате да блокирате този потребител?",
"unban_account": "Отблокиране на акаунта",
"delete_account": "Изтриване на акаунта", "delete_account": "Изтриване на акаунта",
"delete_account_confirm": "Сигурни ли сте, че искате да изтриете акаунта си? <br /><strong>Това действие е необратимо и няма да можете да възстановите нищо от данните си</strong><br /><br />Въведете потребителското си име, за да потвърдите, че искате да унищожите този акаунт.", "delete_account_confirm": "Сигурни ли сте, че искате да изтриете акаунта си? <br /><strong>Това действие е необратимо и няма да можете да възстановите нищо от данните си</strong><br /><br />Въведете потребителското си име, за да потвърдите, че искате да унищожите този акаунт.",
"delete_this_account_confirm": "Сигурни ли сте, че искате да изтриете този акаунт? <br /><strong>Това действие е необратимо и няма да можете да възстановите нищо от данните</strong><br /><br />",
"fullname": "Цяло име", "fullname": "Цяло име",
"website": "Уеб сайт", "website": "Уеб сайт",
"location": "Местоположение", "location": "Местоположение",
@@ -64,9 +68,9 @@
"settings-require-reload": "Някои промени в настройките изискват презареждане. Натиснете тук, за да презаредите страницата.", "settings-require-reload": "Някои промени в настройките изискват презареждане. Натиснете тук, за да презаредите страницата.",
"has_no_follower": "Този потребител няма последователи :(", "has_no_follower": "Този потребител няма последователи :(",
"follows_no_one": "Този потребител не следва никого :(", "follows_no_one": "Този потребител не следва никого :(",
"has_no_posts": "Този потребител не е публикувал нищо все още.", "has_no_posts": "Този потребител не е публикувал нищо досега.",
"has_no_topics": "Този потребител не е създавал теми досега.", "has_no_topics": "Този потребител не е създавал теми досега.",
"has_no_watched_topics": "Този потребител не е наблюдавал нито една тема все още.", "has_no_watched_topics": "Този потребител не е следил нито една тема досега.",
"email_hidden": "Е-пощата е скрита", "email_hidden": "Е-пощата е скрита",
"hidden": "скрито", "hidden": "скрито",
"paginate_description": "Разделяне на темите и публикациите на страници, вместо да се превърта безкрайно", "paginate_description": "Разделяне на темите и публикациите на страници, вместо да се превърта безкрайно",

View File

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

View File

@@ -1,9 +1,12 @@
{ {
"category": "Category",
"subcategories": "Subcategories",
"new_topic_button": "নতুন টপিক", "new_topic_button": "নতুন টপিক",
"guest-login-post": "Log in to post", "guest-login-post": "Log in to post",
"no_topics": "<strong>এই বিভাগে কোন টপিক নেই! </strong><br /> আপনি চাইলে একটি পোষ্ট করতে পারেন।", "no_topics": "<strong>এই বিভাগে কোন টপিক নেই! </strong><br /> আপনি চাইলে একটি পোষ্ট করতে পারেন।",
"browsing": "ব্রাউজিং", "browsing": "ব্রাউজিং",
"no_replies": "কোন রিপ্লাই নেই", "no_replies": "কোন রিপ্লাই নেই",
"no_new_posts": "No new posts.",
"share_this_category": "এই বিভাগটি অন্যের সাথে ভাগাভাগি করুন", "share_this_category": "এই বিভাগটি অন্যের সাথে ভাগাভাগি করুন",
"watch": "Watch", "watch": "Watch",
"ignore": "উপেক্ষা করুন", "ignore": "উপেক্ষা করুন",

View File

@@ -1,11 +1,15 @@
{ {
"password-reset-requested": "পাসওয়ার্ড রিসেটের জন্য অনুরোধ করা হয়েছে - %1!", "password-reset-requested": "পাসওয়ার্ড রিসেটের জন্য অনুরোধ করা হয়েছে - %1!",
"welcome-to": "%1 এ স্বাগতম", "welcome-to": "%1 এ স্বাগতম",
"invite": "Invitation from %1",
"greeting_no_name": "স্বাগতম", "greeting_no_name": "স্বাগতম",
"greeting_with_name": "স্বাগতম %1", "greeting_with_name": "স্বাগতম %1",
"welcome.text1": "%1 এ নিবন্ধন করার জন্য আপনাকে ধন্যবাদ!", "welcome.text1": "%1 এ নিবন্ধন করার জন্য আপনাকে ধন্যবাদ!",
"welcome.text2": "আপনার একাউন্ট এ্যাক্টিভেট করার জন্য, আপনি যে ইমেইল এড্রেস ব্যাবহার করে নিবন্ধন করেছেন তা যাচাই করতে হবে", "welcome.text2": "আপনার একাউন্ট এ্যাক্টিভেট করার জন্য, আপনি যে ইমেইল এড্রেস ব্যাবহার করে নিবন্ধন করেছেন তা যাচাই করতে হবে",
"welcome.text3": "An administrator has accepted your registration application. You can login with your username/password now.",
"welcome.cta": "আপনার ইমেইল এড্রেস নিশ্চিত করার জন্য এখানে ক্লিক করুন", "welcome.cta": "আপনার ইমেইল এড্রেস নিশ্চিত করার জন্য এখানে ক্লিক করুন",
"invitation.text1": "%1 has invited you to join %2",
"invitation.ctr": "Click here to create your account.",
"reset.text1": "আমরা আপনার পাসওয়ার্ড রিসেট করার অনুরোধ পেয়েছি, সম্ভবত আপনি আপনার পাসওয়ার্ড ভুলে গিয়েছেন বলেই। তবে যদি তা না হয়ে থাকে, তাহলে এই মেইলকে উপেক্ষা করতে পারেন।", "reset.text1": "আমরা আপনার পাসওয়ার্ড রিসেট করার অনুরোধ পেয়েছি, সম্ভবত আপনি আপনার পাসওয়ার্ড ভুলে গিয়েছেন বলেই। তবে যদি তা না হয়ে থাকে, তাহলে এই মেইলকে উপেক্ষা করতে পারেন।",
"reset.text2": "পাসওয়ার্ড রিসেট করতে নিচের লিংকে ক্লিক করুন", "reset.text2": "পাসওয়ার্ড রিসেট করতে নিচের লিংকে ক্লিক করুন",
"reset.cta": "পাসওয়ার্ড রিসেট করতে এখানে ক্লিক করুন", "reset.cta": "পাসওয়ার্ড রিসেট করতে এখানে ক্লিক করুন",

View File

@@ -46,11 +46,14 @@
"too-many-posts-newbie": "As a new user, you can only post once every %1 second(s) until you have earned %2 reputation - please wait before posting again", "too-many-posts-newbie": "As a new user, you can only post once every %1 second(s) until you have earned %2 reputation - please wait before posting again",
"tag-too-short": "Please enter a longer tag. Tags should contain at least %1 character(s)", "tag-too-short": "Please enter a longer tag. Tags should contain at least %1 character(s)",
"tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 character(s)", "tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 character(s)",
"not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)",
"too-many-tags": "Too many tags. Topics can't have more than %1 tag(s)",
"file-too-big": "Maximum allowed file size is %1 kB - please upload a smaller file", "file-too-big": "Maximum allowed file size is %1 kB - please upload a smaller file",
"cant-vote-self-post": "আপনি নিজের পোস্টে ভোট দিতে পারবেন না।", "cant-vote-self-post": "আপনি নিজের পোস্টে ভোট দিতে পারবেন না।",
"already-favourited": "আপনি ইতিমধ্যে এই পোষ্টটি পছন্দের তালিকায় যোগ করেছেন", "already-favourited": "আপনি ইতিমধ্যে এই পোষ্টটি পছন্দের তালিকায় যোগ করেছেন",
"already-unfavourited": "আপনি ইতিমধ্যে এই পোষ্টটি আপনার পছন্দের তালিকা থেকে সরিয়ে ফেলেছেন", "already-unfavourited": "আপনি ইতিমধ্যে এই পোষ্টটি আপনার পছন্দের তালিকা থেকে সরিয়ে ফেলেছেন",
"cant-ban-other-admins": "আপনি অন্য এ্যাডমিনদের নিষিদ্ধ করতে পারেন না!", "cant-ban-other-admins": "আপনি অন্য এ্যাডমিনদের নিষিদ্ধ করতে পারেন না!",
"cant-remove-last-admin": "You are the only administrator. Add another user as an administrator before removing yourself as admin",
"invalid-image-type": "Invalid image type. Allowed types are: %1", "invalid-image-type": "Invalid image type. Allowed types are: %1",
"invalid-image-extension": "Invalid image extension", "invalid-image-extension": "Invalid image extension",
"invalid-file-type": "Invalid file type. Allowed types are: %1", "invalid-file-type": "Invalid file type. Allowed types are: %1",
@@ -59,6 +62,8 @@
"group-name-change-not-allowed": "গ্রুপের নাম পরিবর্তনের অনুমতি নেই", "group-name-change-not-allowed": "গ্রুপের নাম পরিবর্তনের অনুমতি নেই",
"group-already-member": "You are already part of this group", "group-already-member": "You are already part of this group",
"group-needs-owner": "This group requires at least one owner", "group-needs-owner": "This group requires at least one owner",
"group-already-invited": "This user has already been invited",
"group-already-requested": "Your membership request has already been submitted",
"post-already-deleted": "এই পোস্টটি ইতিমধ্যে ডিলিট করা হয়ে গিয়েছে", "post-already-deleted": "এই পোস্টটি ইতিমধ্যে ডিলিট করা হয়ে গিয়েছে",
"post-already-restored": "এই পোষ্টটি ইতিমধ্যে পুনরোদ্ধার করা হয়েছে", "post-already-restored": "এই পোষ্টটি ইতিমধ্যে পুনরোদ্ধার করা হয়েছে",
"topic-already-deleted": "এই টপিকটি ইতিমধ্যে ডিলিট করা হয়েছে", "topic-already-deleted": "এই টপিকটি ইতিমধ্যে ডিলিট করা হয়েছে",
@@ -76,6 +81,7 @@
"downvoting-disabled": "ঋণাত্মক ভোট নিস্ক্রীয় রাখা হয়েছে।", "downvoting-disabled": "ঋণাত্মক ভোট নিস্ক্রীয় রাখা হয়েছে।",
"not-enough-reputation-to-downvote": "আপনার এই পোস্ট downvote করার জন্য পর্যাপ্ত সম্মাননা নেই", "not-enough-reputation-to-downvote": "আপনার এই পোস্ট downvote করার জন্য পর্যাপ্ত সম্মাননা নেই",
"not-enough-reputation-to-flag": "এই পোষ্টকে ফ্লাগ করার জন্য আপনার পর্যাপ্ত সম্মাননা নেই", "not-enough-reputation-to-flag": "এই পোষ্টকে ফ্লাগ করার জন্য আপনার পর্যাপ্ত সম্মাননা নেই",
"already-flagged": "You have already flagged this post",
"reload-failed": "\"%1\" রিলোড করতে সমস্যা হয়েছে। রিলোডের পূর্বে যা করা হয়েছিল সেটি আনডু করা সমীচীন। ", "reload-failed": "\"%1\" রিলোড করতে সমস্যা হয়েছে। রিলোডের পূর্বে যা করা হয়েছিল সেটি আনডু করা সমীচীন। ",
"registration-error": "নিবন্ধন এরর!", "registration-error": "নিবন্ধন এরর!",
"parse-error": "Something went wrong while parsing server response", "parse-error": "Something went wrong while parsing server response",

View File

@@ -22,6 +22,7 @@
"pagination.out_of": "%2 এর মাঝে %1", "pagination.out_of": "%2 এর মাঝে %1",
"pagination.enter_index": "সূচক লিখুন", "pagination.enter_index": "সূচক লিখুন",
"header.admin": "অ্যাডমিন", "header.admin": "অ্যাডমিন",
"header.categories": "Categories",
"header.recent": "সাম্প্রতিক", "header.recent": "সাম্প্রতিক",
"header.unread": "অপঠিত", "header.unread": "অপঠিত",
"header.tags": "ট্যাগ", "header.tags": "ট্যাগ",
@@ -50,6 +51,7 @@
"views": "দেখেছেন", "views": "দেখেছেন",
"reputation": "সন্মাননা", "reputation": "সন্মাননা",
"read_more": "আরো পড়ুন", "read_more": "আরো পড়ুন",
"more": "More",
"posted_ago_by_guest": "অতিথি পোস্ট করেছেন %1", "posted_ago_by_guest": "অতিথি পোস্ট করেছেন %1",
"posted_ago_by": " %1 %2 দ্বারা পোস্টকৃত", "posted_ago_by": " %1 %2 দ্বারা পোস্টকৃত",
"posted_ago": "পোস্ট করেছেন %1", "posted_ago": "পোস্ট করেছেন %1",

View File

@@ -6,6 +6,12 @@
"no_groups_found": "There are no groups to see", "no_groups_found": "There are no groups to see",
"pending.accept": "Accept", "pending.accept": "Accept",
"pending.reject": "Reject", "pending.reject": "Reject",
"pending.accept_all": "Accept All",
"pending.reject_all": "Reject All",
"pending.none": "There are no pending members at this time",
"invited.none": "There are no invited members at this time",
"invited.uninvite": "Rescind Invitation",
"invited.search": "Search for a user to invite to this group",
"cover-instructions": "Drag and Drop a photo, drag to position, and hit <strong>Save</strong>", "cover-instructions": "Drag and Drop a photo, drag to position, and hit <strong>Save</strong>",
"cover-change": "Change", "cover-change": "Change",
"cover-save": "Save", "cover-save": "Save",
@@ -13,6 +19,7 @@
"details.title": "গ্রুপের বিস্তারিত", "details.title": "গ্রুপের বিস্তারিত",
"details.members": "সদস্য তালিকা", "details.members": "সদস্য তালিকা",
"details.pending": "Pending Members", "details.pending": "Pending Members",
"details.invited": "Invited Members",
"details.has_no_posts": "এই গ্রুপের সদস্যরা এখনো কোন পোষ্ট করেন নি", "details.has_no_posts": "এই গ্রুপের সদস্যরা এখনো কোন পোষ্ট করেন নি",
"details.latest_posts": "সর্বশেষ পোষ্টসমূহ", "details.latest_posts": "সর্বশেষ পোষ্টসমূহ",
"details.private": "Private", "details.private": "Private",
@@ -31,6 +38,13 @@
"details.private_help": "If enabled, joining of groups requires approval from a group owner", "details.private_help": "If enabled, joining of groups requires approval from a group owner",
"details.hidden": "Hidden", "details.hidden": "Hidden",
"details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually", "details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually",
"details.delete_group": "Delete Group",
"event.updated": "Group details have been updated", "event.updated": "Group details have been updated",
"event.deleted": "The group \"%1\" has been deleted" "event.deleted": "The group \"%1\" has been deleted",
"membership.accept-invitation": "Accept Invitation",
"membership.invitation-pending": "Invitation Pending",
"membership.join-group": "Join Group",
"membership.leave-group": "Leave Group",
"membership.reject": "Reject",
"new-group.group_name": "Group Name:"
} }

View File

@@ -20,6 +20,7 @@
"user_posted_topic": "<strong>%1</strong> has posted a new topic: <strong>%2</strong>", "user_posted_topic": "<strong>%1</strong> has posted a new topic: <strong>%2</strong>",
"user_mentioned_you_in": "<strong>%1</strong>, <strong>%2</strong> এ আপনার নাম উল্লেখ করেছেন", "user_mentioned_you_in": "<strong>%1</strong>, <strong>%2</strong> এ আপনার নাম উল্লেখ করেছেন",
"user_started_following_you": "<strong>%1</strong> আপনাকে অনুসরন করা শুরু করেছেন।", "user_started_following_you": "<strong>%1</strong> আপনাকে অনুসরন করা শুরু করেছেন।",
"new_register": "<strong>%1</strong> sent a registration request.",
"email-confirmed": "ইমেইল নিশ্চিত করা হয়েছে", "email-confirmed": "ইমেইল নিশ্চিত করা হয়েছে",
"email-confirmed-message": "আপনার ইমেইল যাচাই করার জন্য আপনাকে ধন্যবাদ। আপনার অ্যাকাউন্টটি এখন সম্পূর্ণরূপে সক্রিয়।", "email-confirmed-message": "আপনার ইমেইল যাচাই করার জন্য আপনাকে ধন্যবাদ। আপনার অ্যাকাউন্টটি এখন সম্পূর্ণরূপে সক্রিয়।",
"email-confirm-error-message": "আপনার ইমেল ঠিকানার বৈধতা যাচাইয়ে একটি সমস্যা হয়েছে। সম্ভবত কোডটি ভুল ছিল অথবা কোডের মেয়াদ শেষ হয়ে গিয়েছে।", "email-confirm-error-message": "আপনার ইমেল ঠিকানার বৈধতা যাচাইয়ে একটি সমস্যা হয়েছে। সম্ভবত কোডটি ভুল ছিল অথবা কোডের মেয়াদ শেষ হয়ে গিয়েছে।",

View File

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

View File

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

View File

@@ -6,8 +6,12 @@
"postcount": "Post Count", "postcount": "Post Count",
"email": "ইমেইল", "email": "ইমেইল",
"confirm_email": "ইমেইল নিশ্চিত করুন", "confirm_email": "ইমেইল নিশ্চিত করুন",
"ban_account": "Ban Account",
"ban_account_confirm": "Do you really want to ban this user?",
"unban_account": "Unban Account",
"delete_account": "একাউন্ট মুছে ফেলুন", "delete_account": "একাউন্ট মুছে ফেলুন",
"delete_account_confirm": "আপনি কি নিশ্চিত যে আপনি আপনার একাউন্ট মুছে ফেলতে চান ? <br /><strong>এই কাজটির ফলে আপনার কোন তথ্য পুনরূদ্ধার করা সম্ভব নয় </strong><br /><br /> নিশ্চিত করতে আপনার ইউজারনেম প্রবেশ করান। ", "delete_account_confirm": "আপনি কি নিশ্চিত যে আপনি আপনার একাউন্ট মুছে ফেলতে চান ? <br /><strong>এই কাজটির ফলে আপনার কোন তথ্য পুনরূদ্ধার করা সম্ভব নয় </strong><br /><br /> নিশ্চিত করতে আপনার ইউজারনেম প্রবেশ করান। ",
"delete_this_account_confirm": "Are you sure you want to delete this account? <br /><strong>This action is irreversible and you will not be able to recover any data</strong><br /><br />",
"fullname": "পুর্ণ নাম", "fullname": "পুর্ণ নাম",
"website": "ওয়েবসাইট", "website": "ওয়েবসাইট",
"location": "স্থান", "location": "স্থান",
@@ -64,9 +68,9 @@
"settings-require-reload": "Some setting changes require a reload. Click here to reload the page.", "settings-require-reload": "Some setting changes require a reload. Click here to reload the page.",
"has_no_follower": "এই সদস্যের কোন ফলোয়ার নেই :(", "has_no_follower": "এই সদস্যের কোন ফলোয়ার নেই :(",
"follows_no_one": "এই সদস্য কাউকে ফলো করছেন না :(", "follows_no_one": "এই সদস্য কাউকে ফলো করছেন না :(",
"has_no_posts": "এই সদস্য এখনো কোন পোষ্ট করেন নি", "has_no_posts": "This user hasn't posted anything yet.",
"has_no_topics": "এই সদস্য এখনো কোন টপিক পোষ্ট করেন নি", "has_no_topics": "This user hasn't posted any topics yet.",
"has_no_watched_topics": "This user didn't watch any topics yet.", "has_no_watched_topics": "This user hasn't watched any topics yet.",
"email_hidden": "ইমেইল গোপন রাখা হয়েছে", "email_hidden": "ইমেইল গোপন রাখা হয়েছে",
"hidden": "গোপন করা হয়েছে", "hidden": "গোপন করা হয়েছে",
"paginate_description": "Paginate topics and posts instead of using infinite scroll", "paginate_description": "Paginate topics and posts instead of using infinite scroll",

View File

@@ -8,5 +8,14 @@
"users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "users-found-search-took": "%1 user(s) found! Search took %2 seconds.",
"filter-by": "Filter By", "filter-by": "Filter By",
"online-only": "Online only", "online-only": "Online only",
"picture-only": "Picture only" "picture-only": "Picture only",
"invite": "Invite",
"invitation-email-sent": "An invitation email has been sent to %1",
"user_list": "User List",
"recent_topics": "Recent Topics",
"popular_topics": "Popular Topics",
"unread_topics": "Unread Topics",
"categories": "Categories",
"tags": "Tags",
"map": "Map"
} }

View File

@@ -1,9 +1,12 @@
{ {
"category": "Category",
"subcategories": "Subcategories",
"new_topic_button": "Nové téma", "new_topic_button": "Nové téma",
"guest-login-post": "Log in to post", "guest-login-post": "Log in to post",
"no_topics": "<strong>V této kategorii zatím nejsou žádné příspěvky.</strong><br />Můžeš být první!", "no_topics": "<strong>V této kategorii zatím nejsou žádné příspěvky.</strong><br />Můžeš být první!",
"browsing": "prohlíží", "browsing": "prohlíží",
"no_replies": "Nikdo ještě neodpověděl", "no_replies": "Nikdo ještě neodpověděl",
"no_new_posts": "No new posts.",
"share_this_category": "Share this category", "share_this_category": "Share this category",
"watch": "Watch", "watch": "Watch",
"ignore": "Ignorovat", "ignore": "Ignorovat",

View File

@@ -1,11 +1,15 @@
{ {
"password-reset-requested": "Požadována obnova hesla - %1!", "password-reset-requested": "Požadována obnova hesla - %1!",
"welcome-to": "Vítejte v %1", "welcome-to": "Vítejte v %1",
"invite": "Invitation from %1",
"greeting_no_name": "Dobrý den", "greeting_no_name": "Dobrý den",
"greeting_with_name": "Dobrý den %1", "greeting_with_name": "Dobrý den %1",
"welcome.text1": "Děkujeme vám za registraci s %1!", "welcome.text1": "Děkujeme vám za registraci s %1!",
"welcome.text2": "Pro úplnou aktivaci vašeho účtu potřebujeme ověřit vaší emailovou adresu.", "welcome.text2": "Pro úplnou aktivaci vašeho účtu potřebujeme ověřit vaší emailovou adresu.",
"welcome.text3": "An administrator has accepted your registration application. You can login with your username/password now.",
"welcome.cta": "Klikněte zde pro potvrzení vaší emailové adresy", "welcome.cta": "Klikněte zde pro potvrzení vaší emailové adresy",
"invitation.text1": "%1 has invited you to join %2",
"invitation.ctr": "Click here to create your account.",
"reset.text1": "Obdrželi jsme požadavek na obnovu hesla, pravděpodobně kvůli tomu, že jste ho zapomněli. Pokud to není tento případ, ignorujte, prosím, tento email.", "reset.text1": "Obdrželi jsme požadavek na obnovu hesla, pravděpodobně kvůli tomu, že jste ho zapomněli. Pokud to není tento případ, ignorujte, prosím, tento email.",
"reset.text2": "Přejete-li si pokračovat v obnově vašeho hesla, klikněte, prosím, na následující odkaz:", "reset.text2": "Přejete-li si pokračovat v obnově vašeho hesla, klikněte, prosím, na následující odkaz:",
"reset.cta": "Klikněte zde, chcete-li obnovit vaše heslo", "reset.cta": "Klikněte zde, chcete-li obnovit vaše heslo",

View File

@@ -46,11 +46,14 @@
"too-many-posts-newbie": "As a new user, you can only post once every %1 second(s) until you have earned %2 reputation - please wait before posting again", "too-many-posts-newbie": "As a new user, you can only post once every %1 second(s) until you have earned %2 reputation - please wait before posting again",
"tag-too-short": "Please enter a longer tag. Tags should contain at least %1 character(s)", "tag-too-short": "Please enter a longer tag. Tags should contain at least %1 character(s)",
"tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 character(s)", "tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 character(s)",
"not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)",
"too-many-tags": "Too many tags. Topics can't have more than %1 tag(s)",
"file-too-big": "Maximum allowed file size is %1 kB - please upload a smaller file", "file-too-big": "Maximum allowed file size is %1 kB - please upload a smaller file",
"cant-vote-self-post": "Nemůžete hlasovat pro svůj vlastní příspěvek", "cant-vote-self-post": "Nemůžete hlasovat pro svůj vlastní příspěvek",
"already-favourited": "You have already favourited this post", "already-favourited": "You have already favourited this post",
"already-unfavourited": "You have already unfavourited this post", "already-unfavourited": "You have already unfavourited this post",
"cant-ban-other-admins": "Nemůžete zakazovat ostatní administrátory!", "cant-ban-other-admins": "Nemůžete zakazovat ostatní administrátory!",
"cant-remove-last-admin": "You are the only administrator. Add another user as an administrator before removing yourself as admin",
"invalid-image-type": "Invalid image type. Allowed types are: %1", "invalid-image-type": "Invalid image type. Allowed types are: %1",
"invalid-image-extension": "Invalid image extension", "invalid-image-extension": "Invalid image extension",
"invalid-file-type": "Invalid file type. Allowed types are: %1", "invalid-file-type": "Invalid file type. Allowed types are: %1",
@@ -59,6 +62,8 @@
"group-name-change-not-allowed": "Změna názvu skupiny není povolena", "group-name-change-not-allowed": "Změna názvu skupiny není povolena",
"group-already-member": "You are already part of this group", "group-already-member": "You are already part of this group",
"group-needs-owner": "This group requires at least one owner", "group-needs-owner": "This group requires at least one owner",
"group-already-invited": "This user has already been invited",
"group-already-requested": "Your membership request has already been submitted",
"post-already-deleted": "Tento příspěvek byl již vymazán", "post-already-deleted": "Tento příspěvek byl již vymazán",
"post-already-restored": "Tento příspěvek byl již obnoven", "post-already-restored": "Tento příspěvek byl již obnoven",
"topic-already-deleted": "Toto téma bylo již vymazáno", "topic-already-deleted": "Toto téma bylo již vymazáno",
@@ -76,6 +81,7 @@
"downvoting-disabled": "Downvoting is disabled", "downvoting-disabled": "Downvoting is disabled",
"not-enough-reputation-to-downvote": "You do not have enough reputation to downvote this post", "not-enough-reputation-to-downvote": "You do not have enough reputation to downvote this post",
"not-enough-reputation-to-flag": "You do not have enough reputation to flag this post", "not-enough-reputation-to-flag": "You do not have enough reputation to flag this post",
"already-flagged": "You have already flagged this post",
"reload-failed": "NodeBB encountered a problem while reloading: \"%1\". NodeBB will continue to serve the existing client-side assets, although you should undo what you did just prior to reloading.", "reload-failed": "NodeBB encountered a problem while reloading: \"%1\". NodeBB will continue to serve the existing client-side assets, although you should undo what you did just prior to reloading.",
"registration-error": "Chyba při registraci", "registration-error": "Chyba při registraci",
"parse-error": "Something went wrong while parsing server response", "parse-error": "Something went wrong while parsing server response",

View File

@@ -22,6 +22,7 @@
"pagination.out_of": "%1 z %2", "pagination.out_of": "%1 z %2",
"pagination.enter_index": "Enter index", "pagination.enter_index": "Enter index",
"header.admin": "Administrace", "header.admin": "Administrace",
"header.categories": "Categories",
"header.recent": "Aktuality", "header.recent": "Aktuality",
"header.unread": "Nepřečtené", "header.unread": "Nepřečtené",
"header.tags": "Tagy", "header.tags": "Tagy",
@@ -50,6 +51,7 @@
"views": "Zobrazení", "views": "Zobrazení",
"reputation": "Reputation", "reputation": "Reputation",
"read_more": "read more", "read_more": "read more",
"more": "More",
"posted_ago_by_guest": "posted %1 by Guest", "posted_ago_by_guest": "posted %1 by Guest",
"posted_ago_by": "posted %1 by %2", "posted_ago_by": "posted %1 by %2",
"posted_ago": "posted %1", "posted_ago": "posted %1",

View File

@@ -6,6 +6,12 @@
"no_groups_found": "There are no groups to see", "no_groups_found": "There are no groups to see",
"pending.accept": "Accept", "pending.accept": "Accept",
"pending.reject": "Reject", "pending.reject": "Reject",
"pending.accept_all": "Accept All",
"pending.reject_all": "Reject All",
"pending.none": "There are no pending members at this time",
"invited.none": "There are no invited members at this time",
"invited.uninvite": "Rescind Invitation",
"invited.search": "Search for a user to invite to this group",
"cover-instructions": "Drag and Drop a photo, drag to position, and hit <strong>Save</strong>", "cover-instructions": "Drag and Drop a photo, drag to position, and hit <strong>Save</strong>",
"cover-change": "Change", "cover-change": "Change",
"cover-save": "Save", "cover-save": "Save",
@@ -13,6 +19,7 @@
"details.title": "podrobnosti skupiny", "details.title": "podrobnosti skupiny",
"details.members": "Seznam členů", "details.members": "Seznam členů",
"details.pending": "Pending Members", "details.pending": "Pending Members",
"details.invited": "Invited Members",
"details.has_no_posts": "Členové této skupiny dosud neodeslali ani jeden příspěvek.", "details.has_no_posts": "Členové této skupiny dosud neodeslali ani jeden příspěvek.",
"details.latest_posts": "Nejnovější příspěvky", "details.latest_posts": "Nejnovější příspěvky",
"details.private": "Private", "details.private": "Private",
@@ -31,6 +38,13 @@
"details.private_help": "If enabled, joining of groups requires approval from a group owner", "details.private_help": "If enabled, joining of groups requires approval from a group owner",
"details.hidden": "Hidden", "details.hidden": "Hidden",
"details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually", "details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually",
"details.delete_group": "Delete Group",
"event.updated": "Group details have been updated", "event.updated": "Group details have been updated",
"event.deleted": "The group \"%1\" has been deleted" "event.deleted": "The group \"%1\" has been deleted",
"membership.accept-invitation": "Accept Invitation",
"membership.invitation-pending": "Invitation Pending",
"membership.join-group": "Join Group",
"membership.leave-group": "Leave Group",
"membership.reject": "Reject",
"new-group.group_name": "Group Name:"
} }

View File

@@ -20,6 +20,7 @@
"user_posted_topic": "<strong>%1</strong> has posted a new topic: <strong>%2</strong>", "user_posted_topic": "<strong>%1</strong> has posted a new topic: <strong>%2</strong>",
"user_mentioned_you_in": "<strong>%1</strong> mentioned you in <strong>%2</strong>", "user_mentioned_you_in": "<strong>%1</strong> mentioned you in <strong>%2</strong>",
"user_started_following_you": "<strong>%1</strong> started following you.", "user_started_following_you": "<strong>%1</strong> started following you.",
"new_register": "<strong>%1</strong> sent a registration request.",
"email-confirmed": "Email Confirmed", "email-confirmed": "Email Confirmed",
"email-confirmed-message": "Thank you for validating your email. Your account is now fully activated.", "email-confirmed-message": "Thank you for validating your email. Your account is now fully activated.",
"email-confirm-error-message": "There was a problem validating your email address. Perhaps the code was invalid or has expired.", "email-confirm-error-message": "There was a problem validating your email address. Perhaps the code was invalid or has expired.",

View File

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

View File

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

View File

@@ -2,12 +2,16 @@
"banned": "Banned", "banned": "Banned",
"offline": "Offline", "offline": "Offline",
"username": "Uživatelské jméno", "username": "Uživatelské jméno",
"joindate": "Join Date", "joindate": "Datum ragistrace",
"postcount": "Post Count", "postcount": "Počet příspěvků",
"email": "Email", "email": "Email",
"confirm_email": "Potvrdit email", "confirm_email": "Potvrdit email",
"ban_account": "Zablokovat účet",
"ban_account_confirm": "Opravdu chcete zablokovat tohoto uživatele?",
"unban_account": "Odblokovat účet",
"delete_account": "Vymazat účet", "delete_account": "Vymazat účet",
"delete_account_confirm": "Are you sure you want to delete your account? <br /><strong>This action is irreversible and you will not be able to recover any of your data</strong><br /><br />Enter your username to confirm that you wish to destroy this account.", "delete_account_confirm": "Opravdu chcete smazat váš účet? <br /><strong>Tato akce je nevratná a nebude možné obnovit žádné vaše data.</strong><br /><br /> Pro potvrzení smazání účtu napište vaše uživatelské jméno.",
"delete_this_account_confirm": "Are you sure you want to delete this account? <br /><strong>This action is irreversible and you will not be able to recover any data</strong><br /><br />",
"fullname": "Jméno a příjmení", "fullname": "Jméno a příjmení",
"website": "Webové stránky", "website": "Webové stránky",
"location": "Poloha", "location": "Poloha",
@@ -18,40 +22,40 @@
"profile_views": "Zobrazení profilu", "profile_views": "Zobrazení profilu",
"reputation": "Reputace", "reputation": "Reputace",
"favourites": "Oblíbené", "favourites": "Oblíbené",
"watched": "Watched", "watched": "Sledován",
"followers": "Sledují ho", "followers": "Sledují ho",
"following": "Sleduje", "following": "Sleduje",
"aboutme": "About me", "aboutme": "O mně",
"signature": "Podpis", "signature": "Podpis",
"gravatar": "Gravatar", "gravatar": "Gravatar",
"birthday": "Datum narození", "birthday": "Datum narození",
"chat": "Chat", "chat": "Chat",
"follow": "Follow", "follow": "Sledovat",
"unfollow": "Unfollow", "unfollow": "Nesledovat",
"more": "More", "more": "Více",
"profile_update_success": "Profil byl úspěšně aktualizován!", "profile_update_success": "Profil byl úspěšně aktualizován!",
"change_picture": "Změnit obrázek", "change_picture": "Změnit obrázek",
"edit": "Upravit", "edit": "Upravit",
"uploaded_picture": "Nahraný obrázek", "uploaded_picture": "Nahraný obrázek",
"upload_new_picture": "Nahrát nový obrázek", "upload_new_picture": "Nahrát nový obrázek",
"upload_new_picture_from_url": "Upload New Picture From URL", "upload_new_picture_from_url": "Nahrát nový obrázek z URL",
"current_password": "Současné heslo", "current_password": "Současné heslo",
"change_password": "Změnit heslo", "change_password": "Změnit heslo",
"change_password_error": "Neplatné heslo", "change_password_error": "Neplatné heslo",
"change_password_error_wrong_current": "Your current password is not correct!", "change_password_error_wrong_current": "Současné heslo není správné!",
"change_password_error_length": "Password too short!", "change_password_error_length": "Heslo je příliš krátké!",
"change_password_error_match": "Passwords must match!", "change_password_error_match": "Hesla se neshodují!",
"change_password_error_privileges": "You do not have the rights to change this password.", "change_password_error_privileges": "Nemáte práva změnit toto heslo.",
"change_password_success": "Your password is updated!", "change_password_success": "Heslo je aktualizované!",
"confirm_password": "Potvrzení hesla", "confirm_password": "Potvrzení hesla",
"password": "Heslo", "password": "Heslo",
"username_taken_workaround": "The username you requested was already taken, so we have altered it slightly. You are now known as <strong>%1</strong>", "username_taken_workaround": "The username you requested was already taken, so we have altered it slightly. You are now known as <strong>%1</strong>",
"upload_picture": "Nahrát obrázek", "upload_picture": "Nahrát obrázek",
"upload_a_picture": "Nahrát obrázek", "upload_a_picture": "Nahrát obrázek",
"image_spec": "You may only upload PNG, JPG, or GIF files", "image_spec": "Nahrávat lze pouze soubory PNG, JPG a GIF",
"settings": "Nastavení", "settings": "Nastavení",
"show_email": "Zobrazovat můj email v profilu", "show_email": "Zobrazovat můj email v profilu",
"show_fullname": "Show My Full Name", "show_fullname": "Zobrazovat celé jméno",
"restrict_chats": "Only allow chat messages from users I follow", "restrict_chats": "Only allow chat messages from users I follow",
"digest_label": "Subscribe to Digest", "digest_label": "Subscribe to Digest",
"digest_description": "Subscribe to email updates for this forum (new notifications and topics) according to a set schedule", "digest_description": "Subscribe to email updates for this forum (new notifications and topics) according to a set schedule",
@@ -64,9 +68,9 @@
"settings-require-reload": "Some setting changes require a reload. Click here to reload the page.", "settings-require-reload": "Some setting changes require a reload. Click here to reload the page.",
"has_no_follower": "Tohoto uživatele nikdo nesleduje :(", "has_no_follower": "Tohoto uživatele nikdo nesleduje :(",
"follows_no_one": "Tento uživatel nikoho nesleduje :(", "follows_no_one": "Tento uživatel nikoho nesleduje :(",
"has_no_posts": "This user didn't post anything yet.", "has_no_posts": "This user hasn't posted anything yet.",
"has_no_topics": "This user didn't post any topics yet.", "has_no_topics": "This user hasn't posted any topics yet.",
"has_no_watched_topics": "This user didn't watch any topics yet.", "has_no_watched_topics": "This user hasn't watched any topics yet.",
"email_hidden": "Skrytý email", "email_hidden": "Skrytý email",
"hidden": "skrytý", "hidden": "skrytý",
"paginate_description": "Paginate topics and posts instead of using infinite scroll", "paginate_description": "Paginate topics and posts instead of using infinite scroll",

View File

@@ -8,5 +8,14 @@
"users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "users-found-search-took": "%1 user(s) found! Search took %2 seconds.",
"filter-by": "Filter By", "filter-by": "Filter By",
"online-only": "Online only", "online-only": "Online only",
"picture-only": "Picture only" "picture-only": "Picture only",
"invite": "Invite",
"invitation-email-sent": "An invitation email has been sent to %1",
"user_list": "User List",
"recent_topics": "Recent Topics",
"popular_topics": "Popular Topics",
"unread_topics": "Unread Topics",
"categories": "Categories",
"tags": "Tags",
"map": "Map"
} }

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,26 @@
{
"chat.chatting_with": "Chat med <span id=\"chat-with-name\"></span>",
"chat.placeholder": "Skriv din chatbesked her, tryk enter for at sende",
"chat.send": "Send",
"chat.no_active": "Du har ingen aktive chats.",
"chat.user_typing": "%1 skriver ...",
"chat.user_has_messaged_you": "1% har skrevet til dig.",
"chat.see_all": "Se alle chats.",
"chat.no-messages": "Vælg en modtager for at se beskedhistorikken",
"chat.recent-chats": "Seneste chats",
"chat.contacts": "Kontakter",
"chat.message-history": "Beskedhistorik",
"chat.pop-out": "Pop ud chatten",
"chat.maximize": "Maximer",
"chat.seven_days": "7 dage",
"chat.thirty_days": "30 dage",
"chat.three_months": "3 måneder",
"composer.compose": "Skriv",
"composer.show_preview": "Vis forhåndsvisning",
"composer.hide_preview": "Fjern forhåndsvisning",
"composer.user_said_in": "%1 sagde i %2:",
"composer.user_said": "%1 sagde:",
"composer.discard": "Er du sikker på at du vil kassere dette indlæg?",
"composer.submit_and_lock": "Send og lås",
"composer.toggle_dropdown": "Skift mellem dropdown"
}

View File

@@ -0,0 +1,28 @@
{
"title": "Notifikationer",
"no_notifs": "Du har ingen nye notifkationer",
"see_all": "Se alle notifikationer",
"mark_all_read": "Marker alle notifikationer læst",
"back_to_home": "Tilbage til %1",
"outgoing_link": "Udgående link",
"outgoing_link_message": "Du forlader nu %1.",
"continue_to": "Fortsæt til %1",
"return_to": "Returnere til %t",
"new_notification": "Ny notifikation",
"you_have_unread_notifications": "Du har ulæste notifikationer.",
"new_message_from": "Ny besked fra <strong>%1</strong>",
"upvoted_your_post_in": "<strong>%1</strong> har upvotet dit indlæg i <strong>%2</strong>.",
"moved_your_post": "<strong>%1</strong> har flyttet dit indlæg.",
"moved_your_topic": "<strong>%1</strong> har flyttet din tråd.",
"favourited_your_post_in": "<strong>%1</strong> har favoriseret dit indlæg i <strong>%2</strong>.",
"user_flagged_post_in": "<strong>%1</strong> har anmeldt et indlæg i <strong>%2</strong>",
"user_posted_to": "<strong>%1</strong> har skrevet et svar til: <strong>%2</strong>",
"user_posted_topic": "<strong>%1</strong> har oprettet en ny tråd: <strong>%2</strong>",
"user_mentioned_you_in": "<strong>%1</strong> nævnte dig i <strong>%2</strong>",
"user_started_following_you": "<strong>%1</strong> har valgt at følge dig.",
"new_register": "<strong>%1</strong> har sendt en registrerings anmodning.",
"email-confirmed": "Email bekræftet",
"email-confirmed-message": "Tak fordi du validerede din email. Din konto er nu fuldt ud aktiveret.",
"email-confirm-error-message": "Der var et problem med valideringen af din emailadresse. Bekræftelses koden var muligvis forkert eller udløbet.",
"email-confirm-sent": "Bekræftelses email afsendt."
}

View File

@@ -0,0 +1,21 @@
{
"home": "Forside",
"unread": "Ulæste tråde",
"popular": "Populære tråde",
"recent": "Seneste tråde",
"users": "Registrerede brugere",
"notifications": "Notifikationer",
"tags": "Tags",
"tag": "Tråde tagget under \"%1\"",
"user.edit": "Redigere \"%1\"",
"user.following": "Folk som %1 følger",
"user.followers": "Folk der følger %1",
"user.posts": "Indlæg skrevet af %1",
"user.topics": "Tråde oprettet af %1",
"user.groups": "%1s grupper",
"user.favourites": "%1s favorit indlæg",
"user.settings": "Brugerindstillinger",
"user.watched": "Tråde overvåget af %1",
"maintenance.text": "%1 er under vedligeholdelse. Kom venligst tilbage senere.",
"maintenance.messageIntro": "Administratoren har yderligere vedlagt denne besked:"
}

View File

@@ -0,0 +1,19 @@
{
"title": "Seneste",
"day": "Dag",
"week": "Uge",
"month": "Måned",
"year": "År",
"alltime": "Al tid",
"no_recent_topics": "Der er ingen seneste tråde",
"no_popular_topics": "Der er ingen populære tråde.",
"there-is-a-new-topic": "Der er en ny tråd.",
"there-is-a-new-topic-and-a-new-post": "Der er en ny tråd og et nyt indlæg.",
"there-is-a-new-topic-and-new-posts": "Der er en tråd og %1 nye indlæg",
"there-are-new-topics": "Der er %1 nye indlæg.",
"there-are-new-topics-and-a-new-post": "Der er %1 nye indlæg og et nyt indlæg.",
"there-are-new-topics-and-new-posts": "Der er %1 nye tråde og %2 nye indlæg.",
"there-is-a-new-post": "Der er et nyt indlæg.",
"there-are-new-posts": "Der er %1 nye indlæg.",
"click-here-to-reload": "Klik her for at genindlæse."
}

View File

@@ -0,0 +1,19 @@
{
"register": "Tilmeld",
"help.email": "Den email er skjult som standard.",
"help.username_restrictions": "Et unikt brugernavn mellem %1 og %2 karakterer. Andre kan nævne dig med @<span id='yourUsername'>brugernavn</span>.",
"help.minimum_password_length": "Din adgangskode skal være på mindst %1 karakterer.",
"email_address": "Emailadresse",
"email_address_placeholder": "Indtast emailadresse",
"username": "Brugernavn",
"username_placeholder": "Indtast brugernavn",
"password": "Adgangskode",
"password_placeholder": "Indtast adgangskode",
"confirm_password": "Bekræft adgangskode",
"confirm_password_placeholder": "Bekræft adgangskode",
"register_now_button": "Registrer nu",
"alternative_registration": "Alternativ registrering",
"terms_of_use": "Betingelser for brug",
"agree_to_terms_of_use": "Jeg acceptere betingelserne for brug",
"registration-added-to-queue": "Din registrering er blevet tilføjet til godkendelses køen. Du vil mostage en email når du er blevet accepteret af en administrator."
}

View File

@@ -0,0 +1,17 @@
{
"reset_password": "Nulstil adgangskode",
"update_password": "Opdater adgangskode",
"password_changed.title": "Adgangskode ændret",
"password_changed.message": "<p>Adgangskode er blevet ændret, <a href=\"/login\">log venligt ind igen</a>.",
"wrong_reset_code.title": "Forkert nulstillingskode",
"wrong_reset_code.message": "Nulstillingskoden var forkert. Prøv venligst igen, eller <a href=\"/reset\">anmod om en ny nultillingskode</a>.",
"new_password": "Ny adgangskode",
"repeat_password": "Bekræft adgangskode",
"enter_email": "Indtast venligst din <strong>emailadresse</strong> så vi kan sende dig instrukser til at nulstille din konto.",
"enter_email_address": "Indtast emailadresse",
"password_reset_sent": "Adgangskode nulstilling afsendt",
"invalid_email": "Ugyldig emailadresse / Emailadresse findes ikke",
"password_too_short": "Den indtastede adgangskode er for kort, vælg venligt en anden adgangskode.",
"passwords_do_not_match": "De to indtastede adgangskoder er ikke ens.",
"password_expired": "Din adgangskode er udløbet, vælg venligst en ny adgangskode"
}

View File

@@ -0,0 +1,40 @@
{
"results_matching": "%1 resultat(er) matcher \"%2\", (%3 sekunder)",
"no-matches": "Ingen resultatet fundet",
"advanced-search": "Advanceret søgning",
"in": "I",
"titles": "Titler",
"titles-posts": "Titler og indlæg",
"posted-by": "Skrevet af",
"in-categories": "I katagorierne",
"search-child-categories": "Søg underkategorier",
"reply-count": "Svar antal",
"at-least": "Mindst",
"at-most": "Højst",
"post-time": "Skrevet",
"newer-than": "Nyere end",
"older-than": "Ældre end",
"any-date": "Enhver dato",
"yesterday": "Igår",
"one-week": "En uge",
"two-weeks": "To uger",
"one-month": "En måned",
"three-months": "Tre måneder",
"six-months": "Seks måneder",
"one-year": "Et år",
"sort-by": "Sorter efter",
"last-reply-time": "Sidste svar tid",
"topic-title": "Tråd titel",
"number-of-replies": "Antal svar",
"number-of-views": "Antal visninger",
"topic-start-date": "Tråd starts dato",
"username": "Brugernavn",
"category": "Kategori",
"descending": "I faldende rækkefølge",
"ascending": "I stigende rækkefølge",
"save-preferences": "Gem præferencer",
"clear-preferences": "Slet præferencer",
"search-preferences-saved": "Søgnings præferencer gemt",
"search-preferences-cleared": "Søgnings præferencer slettet",
"show-results-as": "Vis resultater som"
}

View File

@@ -0,0 +1,6 @@
{
"success": "Udført",
"topic-post": "Du har indsendt et indlæg.",
"authentication-successful": "Du blev autentificeret",
"settings-saved": "Indstillinger gemt!"
}

View File

@@ -0,0 +1,7 @@
{
"no_tag_topics": "Der er ikke indlæg med dette tag.",
"tags": "Tags",
"enter_tags_here": "Indsæt tags her, hver på mellem %1 og %2 karakterer.",
"enter_tags_here_short": "Skriv tags",
"no_tags": "Der er ingen tags endnu."
}

View File

@@ -0,0 +1,100 @@
{
"topic": "Tråd",
"topic_id": "Tråd-id",
"topic_id_placeholder": "Angiv tråd-id",
"no_topics_found": "Ingen tråde fundet",
"no_posts_found": "Ingen indlæg fundet!",
"post_is_deleted": "Dette indlæg er slettet!",
"topic_is_deleted": "Denne tråd er blevet slettet!",
"profile": "Profil",
"posted_by": "Skrevet af %1",
"posted_by_guest": "Skrevet af Gæst",
"chat": "Chat",
"notify_me": "Bliv notificeret ved nye svar i dette emne",
"quote": "Citer",
"reply": "Svar",
"guest-login-reply": "Login for at svare",
"edit": "Rediger",
"delete": "Slet",
"purge": "Udrader",
"restore": "Gendan",
"move": "Flyt",
"fork": "Fork",
"link": "Link",
"share": "Del",
"tools": "Værktøjer",
"flag": "Marker",
"locked": "Låst",
"bookmark_instructions": "Klik her for at returnere til den sidste position eller luk for at kassere.",
"flag_title": "Meld dette indlæg til moderation",
"flag_confirm": "Er du sikker på du ænsker at melde dette indlæg?",
"flag_success": "Dette indlæg er blevet meldt til moderation.",
"deleted_message": "Denne tråd er blevet slettet. Kun brugere med emne behandlings privilegier kan se den.",
"following_topic.message": "Du vil nu modtage notifikationer når nogle skriver et indlæg i dette emne.",
"not_following_topic.message": "Du vil ikke længere modtage notifikationer fra dette emne.",
"login_to_subscribe": "Venligt registrer eller login for at abbonere på dette emne.",
"markAsUnreadForAll.success": "Emnet er market ulæst for alle.",
"watch": "Overvåg",
"unwatch": "Fjern overvågning",
"watch.title": "Bliv notificeret ved nye indlæg i dette emne",
"unwatch.title": "Fjern overvågning af dette emne",
"share_this_post": "Del dette indlæg",
"thread_tools.title": "Emne værktøjer",
"thread_tools.markAsUnreadForAll": "Marker som ulæst",
"thread_tools.pin": "Fastgør tråd",
"thread_tools.unpin": "Frigør tråd",
"thread_tools.lock": "Lås tråd",
"thread_tools.unlock": "Lås tråd op",
"thread_tools.move": "Flyt tråd",
"thread_tools.move_all": "Flyt alt",
"thread_tools.fork": "Fraskil tråd",
"thread_tools.delete": "Slet tråd",
"thread_tools.delete_confirm": "Er du sikker på at du vil slette dette emne?",
"thread_tools.restore": "Gendan tråd",
"thread_tools.restore_confirm": "Er du sikker på at du ønsker at genoprette denne tråd?",
"thread_tools.purge": "Udrader tråd",
"thread_tools.purge_confirm": "Er du sikker på at du vil udrense denne tråd?",
"topic_move_success": "Denne tråd blev flyttet til %1",
"post_delete_confirm": "Er du sikker på at du vil slette dette indlæg?",
"post_restore_confirm": "Er du sikker på at du vil gendanne dette indlæg?",
"post_purge_confirm": "Er du sikker på at du vil udradere dette indlæg?",
"load_categories": "Indlæser kategorier",
"disabled_categories_note": "Deaktiverede kategorier er nedtonede",
"confirm_move": "Flyt",
"confirm_fork": "Fraskil",
"favourite": "Favoriser",
"favourites": "Favoritter",
"favourites.has_no_favourites": "Du har ingen favoritter, favoriser nogle indlæg for at se dem her!",
"loading_more_posts": "Indlæser flere indlæg",
"move_topic": "Flyt tråd",
"move_topics": "Flyt tråde",
"move_post": "Flyt indlæg",
"post_moved": "Indlæg flyttet!",
"fork_topic": "Fraskil tråd",
"topic_will_be_moved_to": "Denne tråd vil blive flyttet til katagorien",
"fork_topic_instruction": "Klik på indlæg du ønsker at fraskille",
"fork_no_pids": "Ingen indlæg valgt",
"fork_success": "Tråden blev fraskilt! Klik her for at gå til den fraskilte tråd.",
"composer.title_placeholder": "Angiv din trådtittel her ...",
"composer.handle_placeholder": "Navn",
"composer.discard": "Fortryd",
"composer.submit": "Send",
"composer.replying_to": "Svare til %1",
"composer.new_topic": "Ny tråd",
"composer.uploading": "uploader...",
"composer.thumb_url_label": "Indsæt en tråd miniature URL",
"composer.thumb_title": "Tilføj en miniature til denne tråd",
"composer.thumb_url_placeholder": "http://example.com/thumb.png",
"composer.thumb_file_label": "Eller upload en fil",
"composer.thumb_remove": "Slet felter",
"composer.drag_and_drop_images": "Træk og slip billeder her",
"more_users_and_guests": "%1 flere bruger(e) og %2 gæst(er)",
"more_users": "%1 flere bruger(e)",
"more_guests": "%1 flere gæst(er)",
"users_and_others": "%1 og %2 andre",
"sort_by": "Sorter efter",
"oldest_to_newest": "Ældste til nyeste",
"newest_to_oldest": "Nyeste til ældste",
"most_votes": "Flest stemmer",
"most_posts": "Flest indlæg"
}

View File

@@ -0,0 +1,10 @@
{
"title": "Ulæst",
"no_unread_topics": "Der er ingen ulæste emner.",
"load_more": "Indlæs mere",
"mark_as_read": "Marker som læst",
"selected": "Valgte",
"all": "Alle",
"all_categories": "Alle kategorier",
"topics_marked_as_read.success": "Emner markeret som læst!"
}

View File

@@ -0,0 +1,88 @@
{
"banned": "Banlyst",
"offline": "Offline",
"username": "Brugernavn",
"joindate": "Oprettet",
"postcount": "Antal indlæg",
"email": "Email",
"confirm_email": "Bekræft email",
"ban_account": "Ban Konto",
"ban_account_confirm": "Ønsker du virkelig at banne denne konto?",
"unban_account": "Afban Konto",
"delete_account": "Slet konto",
"delete_account_confirm": "Er du sikker på du vil slette din konto? <br /><strong>Dette kan ikke fortrydes, og du vil ikke være istand til at genoprette dine data</strong><br /><br />Indtast dit brugernavn for at bekræfte at du ønsker at slette din konto.",
"delete_this_account_confirm": "Er du sikker på at du vil slette denne konto?<br /><strong>Denne handling kan ikke fortrydes, og du kan ikke genskabe nogen data.</strong><br /><br />",
"fullname": "Fulde navn",
"website": "Webside",
"location": "Lokation",
"age": "Alder",
"joined": "Oprettet",
"lastonline": "Sidst online",
"profile": "Profil",
"profile_views": "Profil visninger",
"reputation": "Omdømme",
"favourites": "Favoritter",
"watched": "Set",
"followers": "Followers",
"following": "Følger",
"aboutme": "Om mig",
"signature": "Signatur",
"gravatar": "Gravatar",
"birthday": "Fødselsdag",
"chat": "Chat",
"follow": "Følg",
"unfollow": "Følg ikke",
"more": "Mere",
"profile_update_success": "Din profil blev opdateret",
"change_picture": "Skift billede",
"edit": "Rediger",
"uploaded_picture": "Upload billede",
"upload_new_picture": "Upload nyt billede",
"upload_new_picture_from_url": "Upload nyt billede fra URL",
"current_password": "Nuværende kodeord",
"change_password": "Skift kodeord",
"change_password_error": "Ukorrekt kodeord",
"change_password_error_wrong_current": "Nuværende kodeord er ikke korrekt",
"change_password_error_length": "Kodeord er for kort!",
"change_password_error_match": "Passwords matcher ikke!",
"change_password_error_privileges": "Du har ikke rettigheder til at ændre dette password.",
"change_password_success": "Dit password er opdateret!",
"confirm_password": "Bekræft kodeord",
"password": "Kodeord",
"username_taken_workaround": "Det valgte brugernavn er allerede taget, så vi har ændret det en smule. Du hedder nu <strong>%1</strong>",
"upload_picture": "Upload billede",
"upload_a_picture": "Upload et billede",
"image_spec": "Du kan kun uploade PNG, JPG eller GIF billeder",
"settings": "Indstillinger",
"show_email": "Vis min emailaddresse",
"show_fullname": "Vis mit fulde navn",
"restrict_chats": "Tillad kun chat beskeder fra brugere jeg følger",
"digest_label": "Abonner på sammendrag",
"digest_description": "Abonner på email opdateringer for detta forum (nye notifikationer og indlæg) efter en bestemt køreplan",
"digest_off": "Slukket",
"digest_daily": "Daglig",
"digest_weekly": "Ugentlig",
"digest_monthly": "Månedlig",
"send_chat_notifications": "Send en email hvis en ny chat besked er modtaget og jeg ikke er online",
"send_post_notifications": "Send en email når der er skrevet svar til indlæg jeg abonnere på",
"settings-require-reload": "Nogle indstillinger kræver en genindlæsning. Klik her for at genindlæse siden.",
"has_no_follower": "Denne bruger har ingen følgere :(",
"follows_no_one": "Denne bruger følger ikke nogen :(",
"has_no_posts": "Denne bruger har ikke skrevet noget endnu.",
"has_no_topics": "Denne bruger har ikke skrævet nogle tråde endnu.",
"has_no_watched_topics": "Denne bruger har ikke fulgt nogle tråde endnu.",
"email_hidden": "Email Skjult",
"hidden": "skjult",
"paginate_description": "Sideinddel emner og indlæg istedet for uendeligt rul",
"topics_per_page": "Emner per side",
"posts_per_page": "Indlæg per side",
"notification_sounds": "Afspil en lyd når du modtager en notifikation",
"browsing": "Gennemsenings indstillinger",
"open_links_in_new_tab": "Åben udgående link i en ny tab",
"enable_topic_searching": "Slå In-Topic søgning til",
"topic_search_help": "Hvis slået til, så vil in-topic søgning overskrive browserens almindelige søge function og tillade dig at søge hele emnet, istedet for kun det der er vist på skærmen",
"follow_topics_you_reply_to": "Følg emner du har skrevet indlæg i",
"follow_topics_you_create": "Følg emner du opretter",
"grouptitle": "Vælg gruppe titlen du gerne vil fremvise",
"no-group-title": "Ingen gruppe titel"
}

View File

@@ -0,0 +1,21 @@
{
"latest_users": "Seneste brugere",
"top_posters": "Top Postere",
"most_reputation": "Mest Omdømme",
"search": "Søg",
"enter_username": "Indtast brugernavn for at søge",
"load_more": "Indlæs mere",
"users-found-search-took": "%1 bruger(e) fundet! Søgning tog %2 sekunder.",
"filter-by": "Filtre Efter",
"online-only": "Kun online",
"picture-only": "Kun billeder",
"invite": "Invitér",
"invitation-email-sent": "En invitations email er blevet sendt til %1",
"user_list": "Bruger Liste",
"recent_topics": "Seneste Tråde",
"popular_topics": "Populærer Tråde",
"unread_topics": "Ulæste Tråde",
"categories": "Kategorier",
"tags": "Tags",
"map": "Kort"
}

View File

@@ -1,9 +1,12 @@
{ {
"category": "Kategorie",
"subcategories": "Unterkategorien",
"new_topic_button": "Neues Thema", "new_topic_button": "Neues Thema",
"guest-login-post": "Anmelden um einen Beitrag zu erstellen", "guest-login-post": "Anmelden um einen Beitrag zu erstellen",
"no_topics": "<strong>Es gibt noch keine Themen in dieser Kategorie.</strong><br />Warum beginnst du nicht eins?", "no_topics": "<strong>Es gibt noch keine Themen in dieser Kategorie.</strong><br />Warum beginnst du nicht eins?",
"browsing": "Aktiv", "browsing": "Aktiv",
"no_replies": "Niemand hat geantwortet", "no_replies": "Niemand hat geantwortet",
"no_new_posts": "Keine neue Beiträge.",
"share_this_category": "Teile diese Kategorie", "share_this_category": "Teile diese Kategorie",
"watch": "Beobachten", "watch": "Beobachten",
"ignore": "Ignorieren", "ignore": "Ignorieren",

View File

@@ -1,11 +1,15 @@
{ {
"password-reset-requested": "Zurücksetzung des Passworts beantragt - %1!", "password-reset-requested": "Zurücksetzung des Passworts beantragt - %1!",
"welcome-to": "Willkommen bei %1", "welcome-to": "Willkommen bei %1",
"invite": "Einladung von %1",
"greeting_no_name": "Hallo", "greeting_no_name": "Hallo",
"greeting_with_name": "Hallo %1", "greeting_with_name": "Hallo %1",
"welcome.text1": "Vielen Dank für die Registrierung bei %1!", "welcome.text1": "Vielen Dank für die Registrierung bei %1!",
"welcome.text2": "Um dein Konto vollständig zu aktivieren, müssen wir überprüfen, ob du Besitzer der E-Mail-Adresse bist, mit der du dich registriert hast.", "welcome.text2": "Um dein Konto vollständig zu aktivieren, müssen wir überprüfen, ob du Besitzer der E-Mail-Adresse bist, mit der du dich registriert hast.",
"welcome.text3": "Ein Administrator hat deine Registration aktzeptiert. Du kannst dich jetzt mit deinem Benutzernamen/Passwort einloggen.",
"welcome.cta": "Klicke hier, um deine E-Mail-Adresse zu bestätigen.", "welcome.cta": "Klicke hier, um deine E-Mail-Adresse zu bestätigen.",
"invitation.text1": "%1 hat dich eingeladen %2 beizutreten",
"invitation.ctr": "Klicke hier, um ein Konto zu erstellen.",
"reset.text1": "Wir haben eine Anfrage auf Zurücksetzung deines Passworts erhalten, wahrscheinlich, weil du es vergessen hast. Falls dies nicht der Fall ist, ignoriere bitte diese E-Mail.", "reset.text1": "Wir haben eine Anfrage auf Zurücksetzung deines Passworts erhalten, wahrscheinlich, weil du es vergessen hast. Falls dies nicht der Fall ist, ignoriere bitte diese E-Mail.",
"reset.text2": "Klicke bitte auf den folgenden Link, um mit der Zurücksetzung deines Passworts fortzufahren:", "reset.text2": "Klicke bitte auf den folgenden Link, um mit der Zurücksetzung deines Passworts fortzufahren:",
"reset.cta": "Klicke hier, um dein Passwort zurückzusetzen", "reset.cta": "Klicke hier, um dein Passwort zurückzusetzen",

View File

@@ -2,7 +2,7 @@
"invalid-data": "Daten ungültig", "invalid-data": "Daten ungültig",
"not-logged-in": "Du bist nicht angemeldet.", "not-logged-in": "Du bist nicht angemeldet.",
"account-locked": "Dein Account wurde vorübergehend gesperrt.", "account-locked": "Dein Account wurde vorübergehend gesperrt.",
"search-requires-login": "Searching requires an account - please login or register.", "search-requires-login": "Die Suche erfordert ein Konto, bitte einloggen oder registrieren.",
"invalid-cid": "Ungültige Kategorie-ID", "invalid-cid": "Ungültige Kategorie-ID",
"invalid-tid": "Ungültige Themen-ID", "invalid-tid": "Ungültige Themen-ID",
"invalid-pid": "Ungültige Beitrags-ID", "invalid-pid": "Ungültige Beitrags-ID",
@@ -21,11 +21,11 @@
"email-not-confirmed-chat": "Deine E-Mail wurde noch nicht bestätigt. Bitte klicke hier, um deine E-Mail zu bestätigen.", "email-not-confirmed-chat": "Deine E-Mail wurde noch nicht bestätigt. Bitte klicke hier, um deine E-Mail zu bestätigen.",
"no-email-to-confirm": "Dieses Forum setzt E-Mail-Bestätigung voraus, bitte klick hier um eine E-Mail-Adresse einzugeben", "no-email-to-confirm": "Dieses Forum setzt E-Mail-Bestätigung voraus, bitte klick hier um eine E-Mail-Adresse einzugeben",
"email-confirm-failed": "Wir konnten deine E-Mail-Adresse nicht bestätigen, bitte versuch es später noch einmal", "email-confirm-failed": "Wir konnten deine E-Mail-Adresse nicht bestätigen, bitte versuch es später noch einmal",
"confirm-email-already-sent": "Confirmation email already sent, please wait %1 minute(s) to send another one.", "confirm-email-already-sent": "Bestätigungsmail wurde verschickt, bitte warten %1 Minute(n) warten um eine weitere zu verschicken.",
"username-too-short": "Benutzername ist zu kurz", "username-too-short": "Benutzername ist zu kurz",
"username-too-long": "Der Benutzername ist zu lang", "username-too-long": "Der Benutzername ist zu lang",
"user-banned": "Der Benutzer ist gesperrt", "user-banned": "Der Benutzer ist gesperrt",
"user-too-new": "Sorry, you are required to wait %1 second(s) before making your first post", "user-too-new": "Entschuldigung, Sie müssen %1 Sekunde(n) warten, bevor Sie ihren ersten Beitrag schreiben können.",
"no-category": "Die Kategorie existiert nicht", "no-category": "Die Kategorie existiert nicht",
"no-topic": "Das Thema existiert nicht", "no-topic": "Das Thema existiert nicht",
"no-post": "Der Beitrag existiert nicht", "no-post": "Der Beitrag existiert nicht",
@@ -36,21 +36,24 @@
"no-emailers-configured": "Es wurde keine E-Mail-Plugins geladen, weshalb eine Test-E-Mail nicht gesendet werden konnte.", "no-emailers-configured": "Es wurde keine E-Mail-Plugins geladen, weshalb eine Test-E-Mail nicht gesendet werden konnte.",
"category-disabled": "Kategorie ist deaktiviert", "category-disabled": "Kategorie ist deaktiviert",
"topic-locked": "Thema ist gesperrt", "topic-locked": "Thema ist gesperrt",
"post-edit-duration-expired": "You are only allowed to edit posts for %1 second(s) after posting", "post-edit-duration-expired": "Entschuldigung, Sie dürfen Beiträge nur %1 Sekunde(n) nach dem veröffentlichen editieren.",
"still-uploading": "Bitte warte bis der Vorgang abgeschlossen ist.", "still-uploading": "Bitte warte bis der Vorgang abgeschlossen ist.",
"content-too-short": "Please enter a longer post. Posts should contain at least %1 character(s).", "content-too-short": "Bitte schreiben Sie einen längeren Beitrag. Beiträge sollten mindestens %1 Zeichen enthalten.",
"content-too-long": "Please enter a shorter post. Posts can't be longer than %1 character(s).", "content-too-long": "Bitte schreiben Sie einen kürzeren Beitrag. Beiträge können nicht länger als %1 Zeichen sein.",
"title-too-short": "Please enter a longer title. Titles should contain at least %1 character(s).", "title-too-short": "Bitte geben Sie einen längeren Titel ein. Ein Titel muss mindestens %1 Zeichen enthalten.",
"title-too-long": "Please enter a shorter title. Titles can't be longer than %1 character(s).", "title-too-long": "Bitten geben Sie einen kürzeren Titel ein. Ein Titel darf nicht mehr als %1 Zeichen enthalten.",
"too-many-posts": "You can only post once every %1 second(s) - please wait before posting again", "too-many-posts": "Sie können nur einen Beitrag innerhalb von %1 Sekunden erstellen - Bitte warten Sie bevor Sie erneut einen Beitrag erstellen.",
"too-many-posts-newbie": "As a new user, you can only post once every %1 second(s) until you have earned %2 reputation - please wait before posting again", "too-many-posts-newbie": "Als neuer Benutzer können Sie nur einen Beitrag innerhalb von %1 Sekunden erstellen - Bitte warten Sie bevor Sie erneut einen Beitrag erstellen.",
"tag-too-short": "Please enter a longer tag. Tags should contain at least %1 character(s)", "tag-too-short": "Bitte geben Sie ein längeres Schlagwort ein. Tags sollten mindestens %1 Zeichen enthalten.",
"tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 character(s)", "tag-too-long": "Bitte geben Sie ein kürzeres Schlagwort ein. Tags können nicht länger als %1 Zeichen sein.",
"file-too-big": "Maximum allowed file size is %1 kB - please upload a smaller file", "not-enough-tags": "Nicht genügend Tags. Themen müssen mindestens %1 Tag(s) enthalten",
"too-many-tags": "Zu viele Tags. Themen dürfen nicht mehr als %1 Tag(s) enthalten",
"file-too-big": "Die maximale Dateigröße ist %1 kB, bitte laden Sie eine kleinere Datei hoch.",
"cant-vote-self-post": "Du kannst deinen eigenen Beitrag nicht bewerten", "cant-vote-self-post": "Du kannst deinen eigenen Beitrag nicht bewerten",
"already-favourited": "Dieser Beitrag ist bereits in deinen Favoriten enthalten", "already-favourited": "Dieser Beitrag ist bereits in deinen Favoriten enthalten",
"already-unfavourited": "Du hast diesen Beitrag bereits aus deinen Favoriten entfernt", "already-unfavourited": "Du hast diesen Beitrag bereits aus deinen Favoriten entfernt",
"cant-ban-other-admins": "Du kannst andere Administratoren nicht sperren!", "cant-ban-other-admins": "Du kannst andere Administratoren nicht sperren!",
"cant-remove-last-admin": "Du bist der einzige Administrator. Füge zuerst einen anderen Administrator hinzu, bevor du dich selbst als Administrator entfernst",
"invalid-image-type": "Falsche Bildart. Erlaubte Arten sind: %1", "invalid-image-type": "Falsche Bildart. Erlaubte Arten sind: %1",
"invalid-image-extension": "Ungültige Dateinamenerweiterung", "invalid-image-extension": "Ungültige Dateinamenerweiterung",
"invalid-file-type": "Ungültiger Dateityp. Erlaubte Typen sind: %1", "invalid-file-type": "Ungültiger Dateityp. Erlaubte Typen sind: %1",
@@ -59,6 +62,8 @@
"group-name-change-not-allowed": "Du kannst den Namen der Gruppe nicht ändern", "group-name-change-not-allowed": "Du kannst den Namen der Gruppe nicht ändern",
"group-already-member": "Du bist bereits Teil dieser Gruppe", "group-already-member": "Du bist bereits Teil dieser Gruppe",
"group-needs-owner": "Diese Gruppe muss mindestens einen Besitzer vorweisen", "group-needs-owner": "Diese Gruppe muss mindestens einen Besitzer vorweisen",
"group-already-invited": "Dieser Benutzer wurde bereits eingeladen",
"group-already-requested": "Deine Mitgliedsanfrage wurde bereits eingereicht",
"post-already-deleted": "Dieser Beitrag ist bereits gelöscht worden", "post-already-deleted": "Dieser Beitrag ist bereits gelöscht worden",
"post-already-restored": "Dieser Beitrag ist bereits wiederhergestellt worden", "post-already-restored": "Dieser Beitrag ist bereits wiederhergestellt worden",
"topic-already-deleted": "Dieses Thema ist bereits gelöscht worden", "topic-already-deleted": "Dieses Thema ist bereits gelöscht worden",
@@ -67,8 +72,8 @@
"topic-thumbnails-are-disabled": "Vorschaubilder für Themen sind deaktiviert", "topic-thumbnails-are-disabled": "Vorschaubilder für Themen sind deaktiviert",
"invalid-file": "Datei ungültig", "invalid-file": "Datei ungültig",
"uploads-are-disabled": "Uploads sind deaktiviert", "uploads-are-disabled": "Uploads sind deaktiviert",
"signature-too-long": "Sorry, your signature cannot be longer than %1 character(s).", "signature-too-long": "Entschuldigung, Ihre Signatur kann nicht länger als %1 Zeichen sein.",
"about-me-too-long": "Sorry, your about me cannot be longer than %1 character(s).", "about-me-too-long": "Entschuldigung, Ihr \"über mich\" kann nicht länger als %1 Zeichen sein.",
"cant-chat-with-yourself": "Du kannst nicht mit dir selber chatten!", "cant-chat-with-yourself": "Du kannst nicht mit dir selber chatten!",
"chat-restricted": "Dieser Benutzer hat seine Chatfunktion eingeschränkt. Du kannst nur mit diesem Benutzer chatten, wenn er dir folgt.", "chat-restricted": "Dieser Benutzer hat seine Chatfunktion eingeschränkt. Du kannst nur mit diesem Benutzer chatten, wenn er dir folgt.",
"too-many-messages": "Du hast zu viele Nachrichten versandt, bitte warte eine Weile.", "too-many-messages": "Du hast zu viele Nachrichten versandt, bitte warte eine Weile.",
@@ -76,6 +81,7 @@
"downvoting-disabled": "Downvotes sind deaktiviert.", "downvoting-disabled": "Downvotes sind deaktiviert.",
"not-enough-reputation-to-downvote": "Deine Reputation ist zu niedrig, um diesen Beitrag negativ zu bewerten.", "not-enough-reputation-to-downvote": "Deine Reputation ist zu niedrig, um diesen Beitrag negativ zu bewerten.",
"not-enough-reputation-to-flag": "Deine Reputation ist nicht gut genug, um diesen Beitrag zu melden", "not-enough-reputation-to-flag": "Deine Reputation ist nicht gut genug, um diesen Beitrag zu melden",
"already-flagged": "Du hast diesen Beitrag bereits gemeldet",
"reload-failed": "Es ist ein Problem während des Reloads von NodeBB aufgetreten: \"%1\". NodeBB wird weiterhin clientseitige Assets bereitstellen, allerdings solltest du das, was du vor dem Reload gemacht hast, rückgängig machen.", "reload-failed": "Es ist ein Problem während des Reloads von NodeBB aufgetreten: \"%1\". NodeBB wird weiterhin clientseitige Assets bereitstellen, allerdings solltest du das, was du vor dem Reload gemacht hast, rückgängig machen.",
"registration-error": "Registrierungsfehler", "registration-error": "Registrierungsfehler",
"parse-error": "Beim auswerten der Serverantwort ist etwas schiefgegangen", "parse-error": "Beim auswerten der Serverantwort ist etwas schiefgegangen",

View File

@@ -22,6 +22,7 @@
"pagination.out_of": "%1 von %2", "pagination.out_of": "%1 von %2",
"pagination.enter_index": "Seitenzahl eingeben", "pagination.enter_index": "Seitenzahl eingeben",
"header.admin": "Admin", "header.admin": "Admin",
"header.categories": "Kategorien",
"header.recent": "Aktuell", "header.recent": "Aktuell",
"header.unread": "Ungelesen", "header.unread": "Ungelesen",
"header.tags": "Tags", "header.tags": "Tags",
@@ -50,6 +51,7 @@
"views": "Aufrufe", "views": "Aufrufe",
"reputation": "Reputation", "reputation": "Reputation",
"read_more": "weiterlesen", "read_more": "weiterlesen",
"more": "Mehr",
"posted_ago_by_guest": "%1 von einem Gast geschrieben", "posted_ago_by_guest": "%1 von einem Gast geschrieben",
"posted_ago_by": "%1 von %2 geschrieben", "posted_ago_by": "%1 von %2 geschrieben",
"posted_ago": "%1 geschrieben", "posted_ago": "%1 geschrieben",

View File

@@ -6,6 +6,12 @@
"no_groups_found": "Es sind keine Gruppen vorhanden", "no_groups_found": "Es sind keine Gruppen vorhanden",
"pending.accept": "Annehmen", "pending.accept": "Annehmen",
"pending.reject": "Abweisen", "pending.reject": "Abweisen",
"pending.accept_all": "Alle annehmen",
"pending.reject_all": "Alle ablehnen",
"pending.none": "Es sind zur Zeit keine unvearbeiteten Mitglieder vorhanden",
"invited.none": "Es sind zur Zeit keine weiteren Mitglieder eingeladen",
"invited.uninvite": "Einladung zurücknehmen",
"invited.search": "Suche nach einem Benutzer um ihn in diese Gruppe aufzunehmen",
"cover-instructions": "Foto auf eine Position bewegen, und <strong>Speichern</strong> drücken", "cover-instructions": "Foto auf eine Position bewegen, und <strong>Speichern</strong> drücken",
"cover-change": "Ändern", "cover-change": "Ändern",
"cover-save": "Speichern", "cover-save": "Speichern",
@@ -13,6 +19,7 @@
"details.title": "Gruppendetails", "details.title": "Gruppendetails",
"details.members": "Mitgliederliste", "details.members": "Mitgliederliste",
"details.pending": "Mitglieder in Schwebe", "details.pending": "Mitglieder in Schwebe",
"details.invited": "Eingeladene Mitglieder",
"details.has_no_posts": "Die Mitglieder dieser Gruppe haben keine Beiträge verfasst.", "details.has_no_posts": "Die Mitglieder dieser Gruppe haben keine Beiträge verfasst.",
"details.latest_posts": "Neueste Beiträge", "details.latest_posts": "Neueste Beiträge",
"details.private": "Privat", "details.private": "Privat",
@@ -31,6 +38,13 @@
"details.private_help": "Wenn aktiviert, setzt ein Gruppenbeitritt die Zustimmung eines Gruppenbesitzers voraus", "details.private_help": "Wenn aktiviert, setzt ein Gruppenbeitritt die Zustimmung eines Gruppenbesitzers voraus",
"details.hidden": "Versteckt", "details.hidden": "Versteckt",
"details.hidden_help": "Wenn aktiviert, wird diese Gruppe in der Gruppenliste nicht zu finden sein, und Benutzer werden manuell eingeladen werden müssen.", "details.hidden_help": "Wenn aktiviert, wird diese Gruppe in der Gruppenliste nicht zu finden sein, und Benutzer werden manuell eingeladen werden müssen.",
"details.delete_group": "Gruppe löschen",
"event.updated": "Gruppendetails wurden aktualisiert", "event.updated": "Gruppendetails wurden aktualisiert",
"event.deleted": "Die Gruppe \"%1\" wurde gelöscht." "event.deleted": "Die Gruppe \"%1\" wurde gelöscht.",
"membership.accept-invitation": "Einladung akzeptieren",
"membership.invitation-pending": "Einladung ausstehend",
"membership.join-group": "Gruppe beitreten",
"membership.leave-group": "Gruppe verlassen",
"membership.reject": "Ablehnen",
"new-group.group_name": "Gruppenname:"
} }

View File

@@ -20,6 +20,7 @@
"user_posted_topic": "<strong>%1</strong> hat ein neues Thema erstellt: <strong>%2</strong>", "user_posted_topic": "<strong>%1</strong> hat ein neues Thema erstellt: <strong>%2</strong>",
"user_mentioned_you_in": "<strong>%1</strong> erwähnte dich in <strong>%2</strong>", "user_mentioned_you_in": "<strong>%1</strong> erwähnte dich in <strong>%2</strong>",
"user_started_following_you": "<strong>%1</strong> folgt dir jetzt.", "user_started_following_you": "<strong>%1</strong> folgt dir jetzt.",
"new_register": "<strong>%1</strong> hat eine Registrationsanfrage geschickt.",
"email-confirmed": "E-Mail bestätigt", "email-confirmed": "E-Mail bestätigt",
"email-confirmed-message": "Vielen Dank für Ihre E-Mail-Validierung. Ihr Konto ist nun vollständig aktiviert.", "email-confirmed-message": "Vielen Dank für Ihre E-Mail-Validierung. Ihr Konto ist nun vollständig aktiviert.",
"email-confirm-error-message": "Es gab ein Problem bei der Validierung Ihrer E-Mail-Adresse. Möglicherweise ist der Code ungültig oder abgelaufen.", "email-confirm-error-message": "Es gab ein Problem bei der Validierung Ihrer E-Mail-Adresse. Möglicherweise ist der Code ungültig oder abgelaufen.",

View File

@@ -14,5 +14,6 @@
"register_now_button": "Jetzt registrieren", "register_now_button": "Jetzt registrieren",
"alternative_registration": "Alternative Registrierung", "alternative_registration": "Alternative Registrierung",
"terms_of_use": "Nutzungsbedingungen", "terms_of_use": "Nutzungsbedingungen",
"agree_to_terms_of_use": "Ich stimme den Nutzungsbedingungen zu" "agree_to_terms_of_use": "Ich stimme den Nutzungsbedingungen zu",
"registration-added-to-queue": "Deine Registration wurde abgeschickt. Du wirst eine E-Mail erhalten, sobald sie von einem Administrator akzeptiert wird."
} }

View File

@@ -1,37 +1,37 @@
{ {
"topic": "Thema", "topic": "Thema",
"topic_id": "Topic ID", "topic_id": "Themen-ID",
"topic_id_placeholder": "Topic ID eingeben", "topic_id_placeholder": "Themen-ID eingeben",
"no_topics_found": "Keine passenden Themen gefunden.", "no_topics_found": "Keine passenden Themen gefunden!",
"no_posts_found": "Keine Beiträge gefunden!", "no_posts_found": "Keine Beiträge gefunden!",
"post_is_deleted": "Dieser Beitrag wurde gelöscht!", "post_is_deleted": "Dieser Beitrag wurde gelöscht!",
"topic_is_deleted": "This topic is deleted!", "topic_is_deleted": "Dieses Thema wurde gelöscht!",
"profile": "Profil", "profile": "Profil",
"posted_by": "Geschrieben von %1", "posted_by": "Verfasst von %1",
"posted_by_guest": "Verfasst von einem Gast", "posted_by_guest": "Verfasst von einem Gast",
"chat": "Chat", "chat": "Chat",
"notify_me": "Erhalte eine Benachrichtigung bei neuen Antworten zu diesem Thema.", "notify_me": "Erhalte eine Benachrichtigung bei neuen Antworten zu diesem Thema.",
"quote": "zitieren", "quote": "Zitieren",
"reply": "antworten", "reply": "Antworten",
"guest-login-reply": "Anmelden zum Antworten", "guest-login-reply": "Anmelden zum Antworten",
"edit": "bearbeiten", "edit": "Bearbeiten",
"delete": "löschen", "delete": "Löschen",
"purge": "säubern", "purge": "Bereinigen",
"restore": "Wiederherstellen", "restore": "Wiederherstellen",
"move": "verschieben", "move": "Verschieben",
"fork": "Aufspalten", "fork": "Aufspalten",
"link": "Link", "link": "Link",
"share": "Teilen", "share": "Teilen",
"tools": "Tools", "tools": "Werkzeuge",
"flag": "Markieren", "flag": "Markieren",
"locked": "Gesperrt", "locked": "Gesperrt",
"bookmark_instructions": "Klicke hier um zur letzten Position zurückzukehren oder schließe zum Abbrechen.", "bookmark_instructions": "Klicke hier, um zur letzten Position zurückzukehren oder schließe zum Abbrechen.",
"flag_title": "Diesen Beitrag zur Moderation markieren", "flag_title": "Diesen Beitrag zur Moderation markieren",
"flag_confirm": "Sind Sie sicher, dass Sie diesen Post markieren möchten?", "flag_confirm": "Sind Sie sicher, dass Sie diesen Post markieren möchten?",
"flag_success": "Dieser Beitrag wurde erfolgreich für die Moderation markiert.", "flag_success": "Dieser Beitrag wurde erfolgreich für die Moderation markiert.",
"deleted_message": "Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.", "deleted_message": "Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.",
"following_topic.message": "Du erhälst nun eine Benachrichtigung, wenn jemand einen Beitrag zu diesem Thema verfasst.", "following_topic.message": "Du erhälst nun eine Benachrichtigung, wenn jemand einen Beitrag zu diesem Thema verfasst.",
"not_following_topic.message": "Du erhälst keine weiteren Benachrichtigungen zu diesem Thema.", "not_following_topic.message": "Du erhälst keine weiteren Benachrichtigungen zu diesem Thema mehr.",
"login_to_subscribe": "Bitte registrieren oder einloggen um dieses Thema zu abonnieren", "login_to_subscribe": "Bitte registrieren oder einloggen um dieses Thema zu abonnieren",
"markAsUnreadForAll.success": "Thema für Alle als ungelesen markiert.", "markAsUnreadForAll.success": "Thema für Alle als ungelesen markiert.",
"watch": "Beobachten", "watch": "Beobachten",
@@ -39,10 +39,10 @@
"watch.title": "Bei neuen Antworten benachrichtigen", "watch.title": "Bei neuen Antworten benachrichtigen",
"unwatch.title": "Dieses Thema nicht mehr beobachten", "unwatch.title": "Dieses Thema nicht mehr beobachten",
"share_this_post": "Diesen Beitrag teilen", "share_this_post": "Diesen Beitrag teilen",
"thread_tools.title": "Themen-Tools", "thread_tools.title": "Themen-Werkzeuge",
"thread_tools.markAsUnreadForAll": "Als ungelesen markieren", "thread_tools.markAsUnreadForAll": "Als ungelesen markieren",
"thread_tools.pin": "Thema anpinnen", "thread_tools.pin": "Thema anheften",
"thread_tools.unpin": "Thema nicht mehr anpinnen", "thread_tools.unpin": "Thema nicht mehr anheften",
"thread_tools.lock": "Thema schließen", "thread_tools.lock": "Thema schließen",
"thread_tools.unlock": "Thema öffnen", "thread_tools.unlock": "Thema öffnen",
"thread_tools.move": "Thema verschieben", "thread_tools.move": "Thema verschieben",
@@ -53,11 +53,11 @@
"thread_tools.restore": "Thema wiederherstellen", "thread_tools.restore": "Thema wiederherstellen",
"thread_tools.restore_confirm": "Bist du sicher, dass du dieses Thema wiederherstellen möchtest?", "thread_tools.restore_confirm": "Bist du sicher, dass du dieses Thema wiederherstellen möchtest?",
"thread_tools.purge": "Thema säubern", "thread_tools.purge": "Thema säubern",
"thread_tools.purge_confirm": "Bist du sicher, dass du dieses Thema säubern möchtest?", "thread_tools.purge_confirm": "Bist du sicher, dass du dieses Thema bereinigen möchtest?",
"topic_move_success": "Thema wurde erfolgreich zu %1 verschoben.", "topic_move_success": "Thema wurde erfolgreich nach %1 verschoben.",
"post_delete_confirm": "Sind Sie sicher, dass Sie diesen Beitrag löschen möchten?", "post_delete_confirm": "Sind Sie sicher, dass Sie diesen Beitrag löschen möchten?",
"post_restore_confirm": "Sind Sie sicher, dass Sie diesen Beitrag wiederherstellen möchten?", "post_restore_confirm": "Sind Sie sicher, dass Sie diesen Beitrag wiederherstellen möchten?",
"post_purge_confirm": "Sind Sie sicher, das Sie diesen Beitrag säubern möchten?", "post_purge_confirm": "Sind Sie sicher, das Sie diesen Beitrag bereinigen möchten?",
"load_categories": "Kategorien laden", "load_categories": "Kategorien laden",
"disabled_categories_note": "Deaktivierte Kategorien sind ausgegraut.", "disabled_categories_note": "Deaktivierte Kategorien sind ausgegraut.",
"confirm_move": "Verschieben", "confirm_move": "Verschieben",
@@ -72,29 +72,29 @@
"post_moved": "Beitrag wurde verschoben!", "post_moved": "Beitrag wurde verschoben!",
"fork_topic": "Thema aufspalten", "fork_topic": "Thema aufspalten",
"topic_will_be_moved_to": "Dieses Thema wird verschoben nach", "topic_will_be_moved_to": "Dieses Thema wird verschoben nach",
"fork_topic_instruction": "Klicke auf die Beiträge, die du aufspalten willst", "fork_topic_instruction": "Klicke auf die Beiträge, die aufgespaltet werden sollen",
"fork_no_pids": "Keine Beiträge ausgewählt!", "fork_no_pids": "Keine Beiträge ausgewählt!",
"fork_success": "Thema erfolgreich abgespalten! Klicke hier, um zum abgespalteten Thema zu gelangen.", "fork_success": "Thema erfolgreich aufgespalten! Klicke hier, um zum aufgespalteten Thema zu gelangen.",
"composer.title_placeholder": "Hier den Titel des Themas eingeben...", "composer.title_placeholder": "Hier den Titel des Themas eingeben...",
"composer.handle_placeholder": "Name", "composer.handle_placeholder": "Name",
"composer.discard": "Verwerfen", "composer.discard": "Verwerfen",
"composer.submit": "Absenden", "composer.submit": "Absenden",
"composer.replying_to": "Antworte auf %1", "composer.replying_to": "Antworte auf %1",
"composer.new_topic": "Neues Thema", "composer.new_topic": "Neues Thema",
"composer.uploading": "Upload läuft...", "composer.uploading": "Lade hoch...",
"composer.thumb_url_label": "Vorschaubild-URL hier einfügen", "composer.thumb_url_label": "Vorschaubild-URL hier einfügen",
"composer.thumb_title": "Vorschaubild zu diesem Thema hinzufügen", "composer.thumb_title": "Vorschaubild zu diesem Thema hinzufügen",
"composer.thumb_url_placeholder": "http://example.com/thumb.png", "composer.thumb_url_placeholder": "http://example.com/thumb.png",
"composer.thumb_file_label": "Oder eine Datei hochladen", "composer.thumb_file_label": "Oder eine Datei hochladen",
"composer.thumb_remove": "Felder leeren", "composer.thumb_remove": "Felder leeren",
"composer.drag_and_drop_images": "Bilder hier reinziehen", "composer.drag_and_drop_images": "Bilder hierher ziehen",
"more_users_and_guests": "%1 weitere(r) Nutzer und %2 Gäste", "more_users_and_guests": "%1 weitere(r) Nutzer und %2 Gäste",
"more_users": "%1 weitere(r) Nutzer", "more_users": "%1 weitere(r) Nutzer",
"more_guests": "%1 weitere Gäste", "more_guests": "%1 weitere Gäste",
"users_and_others": "%1 und %2 andere", "users_and_others": "%1 und %2 andere",
"sort_by": "Sortieren nach", "sort_by": "Sortieren nach",
"oldest_to_newest": "Älteste zuerst", "oldest_to_newest": "Älteste zuerst",
"newest_to_oldest": "Neuster zuerst", "newest_to_oldest": "Neuste zuerst",
"most_votes": "Die meisten Stimmen", "most_votes": "Die meisten Stimmen",
"most_posts": "Die meisten Beiträge" "most_posts": "Die meisten Beiträge"
} }

View File

@@ -5,5 +5,6 @@
"mark_as_read": "Als gelesen markieren", "mark_as_read": "Als gelesen markieren",
"selected": "Ausgewählte", "selected": "Ausgewählte",
"all": "Alle", "all": "Alle",
"all_categories": "Alle Kategorien",
"topics_marked_as_read.success": "Themen als gelesen markiert!" "topics_marked_as_read.success": "Themen als gelesen markiert!"
} }

View File

@@ -6,8 +6,12 @@
"postcount": "Beiträge", "postcount": "Beiträge",
"email": "E-Mail", "email": "E-Mail",
"confirm_email": "E-Mail bestätigen", "confirm_email": "E-Mail bestätigen",
"ban_account": "Konto sperren",
"ban_account_confirm": "Sind Sie sicher, dass Sie diesen Benutzer sperren möchten?",
"unban_account": "Konto entsperren",
"delete_account": "Konto löschen", "delete_account": "Konto löschen",
"delete_account_confirm": "Bist du sicher, dass du dein Konto löschen möchtest? <br /><strong>Diese Aktion kann nicht rückgängig gemacht werden und du kannst deine Daten nicht wiederherstellen</strong><br /><br />Gebe deinen Benutzernamen ein, um zu bestätigen, dass du dieses Konto löschen möchtest.", "delete_account_confirm": "Bist du sicher, dass du dein Konto löschen möchtest? <br /><strong>Diese Aktion kann nicht rückgängig gemacht werden und du kannst deine Daten nicht wiederherstellen</strong><br /><br />Gebe deinen Benutzernamen ein, um zu bestätigen, dass du dieses Konto löschen möchtest.",
"delete_this_account_confirm": "Bist du sicher, dass du dieses Konto löschen möchtest?<br /><strong>Diese Aktion kann nicht rückgangig gemacht werden und du kannst die Daten nicht wiederherstellen</strong><br /><br />",
"fullname": "Kompletter Name", "fullname": "Kompletter Name",
"website": "Homepage", "website": "Homepage",
"location": "Wohnort", "location": "Wohnort",
@@ -21,7 +25,7 @@
"watched": "Beobachtet", "watched": "Beobachtet",
"followers": "Folger", "followers": "Folger",
"following": "Folgt", "following": "Folgt",
"aboutme": "About me", "aboutme": "Über mich",
"signature": "Signatur", "signature": "Signatur",
"gravatar": "Gravatar", "gravatar": "Gravatar",
"birthday": "Geburtstag", "birthday": "Geburtstag",
@@ -66,7 +70,7 @@
"follows_no_one": "Dieser User folgt noch niemandem :(", "follows_no_one": "Dieser User folgt noch niemandem :(",
"has_no_posts": "Dieser Nutzer hat noch nichts gepostet.", "has_no_posts": "Dieser Nutzer hat noch nichts gepostet.",
"has_no_topics": "Dieser Nutzer hat noch keine Themen gepostet.", "has_no_topics": "Dieser Nutzer hat noch keine Themen gepostet.",
"has_no_watched_topics": "Diese Person beobachtet keine Themen", "has_no_watched_topics": "Dieser Nutzer beobachtet keine Themen.",
"email_hidden": "E-Mail Adresse versteckt", "email_hidden": "E-Mail Adresse versteckt",
"hidden": "versteckt", "hidden": "versteckt",
"paginate_description": "Themen und Beiträge in Seiten aufteilen, anstelle unendlich zu scrollen", "paginate_description": "Themen und Beiträge in Seiten aufteilen, anstelle unendlich zu scrollen",

View File

@@ -8,5 +8,14 @@
"users-found-search-took": "%1 Benutzer gefunden! Die Suche dauerte %2 ms.", "users-found-search-took": "%1 Benutzer gefunden! Die Suche dauerte %2 ms.",
"filter-by": "Filtern nach", "filter-by": "Filtern nach",
"online-only": "Nur Online", "online-only": "Nur Online",
"picture-only": "Nur mit Bildern" "picture-only": "Nur mit Bildern",
"invite": "Einladen",
"invitation-email-sent": "Eine Einladungsemail wurde an %1 verschickt",
"user_list": "Nutzerliste",
"recent_topics": "Neueste Themen",
"popular_topics": "Beliebte Themen",
"unread_topics": "Ungelesen Themen",
"categories": "Kategorien",
"tags": "Stichwörter",
"map": "Karte"
} }

View File

@@ -1,9 +1,12 @@
{ {
"category": "Category",
"subcategories": "Subcategories",
"new_topic_button": "Νέο Θέμα", "new_topic_button": "Νέο Θέμα",
"guest-login-post": "Log in to post", "guest-login-post": "Log in to post",
"no_topics": "<strong>Δεν υπάρχουν θέματα σε αυτή την κατηγορία.</strong><br />Γιατί δεν δοκιμάζεις να δημοσιεύσεις ένα εσύ;", "no_topics": "<strong>Δεν υπάρχουν θέματα σε αυτή την κατηγορία.</strong><br />Γιατί δεν δοκιμάζεις να δημοσιεύσεις ένα εσύ;",
"browsing": "περιηγούνται", "browsing": "περιηγούνται",
"no_replies": "Κανείς δεν έχει απαντήσει", "no_replies": "Κανείς δεν έχει απαντήσει",
"no_new_posts": "No new posts.",
"share_this_category": "Μοιράσου αυτή την κατηγορία", "share_this_category": "Μοιράσου αυτή την κατηγορία",
"watch": "Watch", "watch": "Watch",
"ignore": "Αγνόηση", "ignore": "Αγνόηση",

View File

@@ -1,11 +1,15 @@
{ {
"password-reset-requested": "Ζητήθηκε Επαναφορά Κωδικου - %1!", "password-reset-requested": "Ζητήθηκε Επαναφορά Κωδικου - %1!",
"welcome-to": "Καλωσόρισες στο %1", "welcome-to": "Καλωσόρισες στο %1",
"invite": "Invitation from %1",
"greeting_no_name": "Γειά σου", "greeting_no_name": "Γειά σου",
"greeting_with_name": "Γειά σου %1", "greeting_with_name": "Γειά σου %1",
"welcome.text1": "Ευχαριστούμε που γράφτηκες στο %1!", "welcome.text1": "Ευχαριστούμε που γράφτηκες στο %1!",
"welcome.text2": "Για να ενεργοποιήσεις πλήρως τον λογαριασμό σου, πρέπει να επιβεβαιώσουμε πως η διεύθυνση email με την οποια γράφτηκες σου ανήκει.", "welcome.text2": "Για να ενεργοποιήσεις πλήρως τον λογαριασμό σου, πρέπει να επιβεβαιώσουμε πως η διεύθυνση email με την οποια γράφτηκες σου ανήκει.",
"welcome.text3": "An administrator has accepted your registration application. You can login with your username/password now.",
"welcome.cta": "Κάνε κλικ εδώ για να επιβεβαιώσεις την διεύθυνσή σου", "welcome.cta": "Κάνε κλικ εδώ για να επιβεβαιώσεις την διεύθυνσή σου",
"invitation.text1": "%1 has invited you to join %2",
"invitation.ctr": "Click here to create your account.",
"reset.text1": "Λάβαμε ένα αίτημα για επαναφορά του κωδικού σου, πιθανότατα γιατί τον ξέχασες. Αν δεν έκανες εσύ αυτό το αίτημα, αγνόησε αυτό το email.", "reset.text1": "Λάβαμε ένα αίτημα για επαναφορά του κωδικού σου, πιθανότατα γιατί τον ξέχασες. Αν δεν έκανες εσύ αυτό το αίτημα, αγνόησε αυτό το email.",
"reset.text2": "Για να κάνεις την επαναφορά του κωδικού σου, παρακαλώ πάτα στο παρακάτω σύνδεσμο:", "reset.text2": "Για να κάνεις την επαναφορά του κωδικού σου, παρακαλώ πάτα στο παρακάτω σύνδεσμο:",
"reset.cta": "Κάνε κλικ εδώ για να επαναφέρεις τον κωδικό σου", "reset.cta": "Κάνε κλικ εδώ για να επαναφέρεις τον κωδικό σου",

View File

@@ -46,11 +46,14 @@
"too-many-posts-newbie": "As a new user, you can only post once every %1 second(s) until you have earned %2 reputation - please wait before posting again", "too-many-posts-newbie": "As a new user, you can only post once every %1 second(s) until you have earned %2 reputation - please wait before posting again",
"tag-too-short": "Please enter a longer tag. Tags should contain at least %1 character(s)", "tag-too-short": "Please enter a longer tag. Tags should contain at least %1 character(s)",
"tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 character(s)", "tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 character(s)",
"not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)",
"too-many-tags": "Too many tags. Topics can't have more than %1 tag(s)",
"file-too-big": "Maximum allowed file size is %1 kB - please upload a smaller file", "file-too-big": "Maximum allowed file size is %1 kB - please upload a smaller file",
"cant-vote-self-post": "Δεν μπορείς να ψηφίσεις την δημοσίευσή σου", "cant-vote-self-post": "Δεν μπορείς να ψηφίσεις την δημοσίευσή σου",
"already-favourited": "You have already favourited this post", "already-favourited": "You have already favourited this post",
"already-unfavourited": "You have already unfavourited this post", "already-unfavourited": "You have already unfavourited this post",
"cant-ban-other-admins": "Δεν μπορείς να αποκλείσεις άλλους διαχειριστές!", "cant-ban-other-admins": "Δεν μπορείς να αποκλείσεις άλλους διαχειριστές!",
"cant-remove-last-admin": "You are the only administrator. Add another user as an administrator before removing yourself as admin",
"invalid-image-type": "Invalid image type. Allowed types are: %1", "invalid-image-type": "Invalid image type. Allowed types are: %1",
"invalid-image-extension": "Invalid image extension", "invalid-image-extension": "Invalid image extension",
"invalid-file-type": "Invalid file type. Allowed types are: %1", "invalid-file-type": "Invalid file type. Allowed types are: %1",
@@ -59,6 +62,8 @@
"group-name-change-not-allowed": "Αλλαγή του ονόματος της ομάδας δεν επιτρέπεται", "group-name-change-not-allowed": "Αλλαγή του ονόματος της ομάδας δεν επιτρέπεται",
"group-already-member": "You are already part of this group", "group-already-member": "You are already part of this group",
"group-needs-owner": "This group requires at least one owner", "group-needs-owner": "This group requires at least one owner",
"group-already-invited": "This user has already been invited",
"group-already-requested": "Your membership request has already been submitted",
"post-already-deleted": "This post has already been deleted", "post-already-deleted": "This post has already been deleted",
"post-already-restored": "This post has already been restored", "post-already-restored": "This post has already been restored",
"topic-already-deleted": "This topic has already been deleted", "topic-already-deleted": "This topic has already been deleted",
@@ -76,6 +81,7 @@
"downvoting-disabled": "Η καταψήφιση έχει απενεργοποιηθεί", "downvoting-disabled": "Η καταψήφιση έχει απενεργοποιηθεί",
"not-enough-reputation-to-downvote": "Δεν έχεις αρκετή φήμη για να καταψηφίσεις αυτή την δημοσίευση", "not-enough-reputation-to-downvote": "Δεν έχεις αρκετή φήμη για να καταψηφίσεις αυτή την δημοσίευση",
"not-enough-reputation-to-flag": "You do not have enough reputation to flag this post", "not-enough-reputation-to-flag": "You do not have enough reputation to flag this post",
"already-flagged": "You have already flagged this post",
"reload-failed": "Το NodeBB συνάντησε ένα πρόβλημα καθώς γινόταν η ανανέωση: \"%1\". Το NodeBB θα συνεχίσει να προσφέρει τα στοιχεία του χρήστη, αν και θα ήταν καλή ιδέα να επαναφέρεις ότι έκανες πριν την ανανέωση.", "reload-failed": "Το NodeBB συνάντησε ένα πρόβλημα καθώς γινόταν η ανανέωση: \"%1\". Το NodeBB θα συνεχίσει να προσφέρει τα στοιχεία του χρήστη, αν και θα ήταν καλή ιδέα να επαναφέρεις ότι έκανες πριν την ανανέωση.",
"registration-error": "Registration Error", "registration-error": "Registration Error",
"parse-error": "Something went wrong while parsing server response", "parse-error": "Something went wrong while parsing server response",

View File

@@ -22,6 +22,7 @@
"pagination.out_of": "%1 από %2", "pagination.out_of": "%1 από %2",
"pagination.enter_index": "Εισαγωγή Σελίδας", "pagination.enter_index": "Εισαγωγή Σελίδας",
"header.admin": "Διαχειριστής", "header.admin": "Διαχειριστής",
"header.categories": "Categories",
"header.recent": "Πρόσφατα", "header.recent": "Πρόσφατα",
"header.unread": "Μη αναγνωσμένα", "header.unread": "Μη αναγνωσμένα",
"header.tags": "Ετικέτες", "header.tags": "Ετικέτες",
@@ -50,6 +51,7 @@
"views": "Εμφανίσεις", "views": "Εμφανίσεις",
"reputation": "Φήμη", "reputation": "Φήμη",
"read_more": "διάβασε περισσότερα", "read_more": "διάβασε περισσότερα",
"more": "More",
"posted_ago_by_guest": "δημοσιεύτηκε πριν από %1 από Επισκέπτη", "posted_ago_by_guest": "δημοσιεύτηκε πριν από %1 από Επισκέπτη",
"posted_ago_by": "δημοσιεύτηκε πριν από %1 από τον/την %2", "posted_ago_by": "δημοσιεύτηκε πριν από %1 από τον/την %2",
"posted_ago": "δημοσιεύτηκε πρίν από %1", "posted_ago": "δημοσιεύτηκε πρίν από %1",

View File

@@ -6,6 +6,12 @@
"no_groups_found": "There are no groups to see", "no_groups_found": "There are no groups to see",
"pending.accept": "Accept", "pending.accept": "Accept",
"pending.reject": "Reject", "pending.reject": "Reject",
"pending.accept_all": "Accept All",
"pending.reject_all": "Reject All",
"pending.none": "There are no pending members at this time",
"invited.none": "There are no invited members at this time",
"invited.uninvite": "Rescind Invitation",
"invited.search": "Search for a user to invite to this group",
"cover-instructions": "Drag and Drop a photo, drag to position, and hit <strong>Save</strong>", "cover-instructions": "Drag and Drop a photo, drag to position, and hit <strong>Save</strong>",
"cover-change": "Change", "cover-change": "Change",
"cover-save": "Save", "cover-save": "Save",
@@ -13,6 +19,7 @@
"details.title": "Λεπτομέρειες Ομάδας", "details.title": "Λεπτομέρειες Ομάδας",
"details.members": "Λίστα Μελών", "details.members": "Λίστα Μελών",
"details.pending": "Pending Members", "details.pending": "Pending Members",
"details.invited": "Invited Members",
"details.has_no_posts": "Τα μέλη αυτής της ομάδας δεν έχουν δημοσιεύσει τίποτα.", "details.has_no_posts": "Τα μέλη αυτής της ομάδας δεν έχουν δημοσιεύσει τίποτα.",
"details.latest_posts": "Τελευταίες δημοσιεύσεις.", "details.latest_posts": "Τελευταίες δημοσιεύσεις.",
"details.private": "Private", "details.private": "Private",
@@ -31,6 +38,13 @@
"details.private_help": "If enabled, joining of groups requires approval from a group owner", "details.private_help": "If enabled, joining of groups requires approval from a group owner",
"details.hidden": "Hidden", "details.hidden": "Hidden",
"details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually", "details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually",
"details.delete_group": "Delete Group",
"event.updated": "Group details have been updated", "event.updated": "Group details have been updated",
"event.deleted": "The group \"%1\" has been deleted" "event.deleted": "The group \"%1\" has been deleted",
"membership.accept-invitation": "Accept Invitation",
"membership.invitation-pending": "Invitation Pending",
"membership.join-group": "Join Group",
"membership.leave-group": "Leave Group",
"membership.reject": "Reject",
"new-group.group_name": "Group Name:"
} }

View File

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

View File

@@ -20,6 +20,7 @@
"user_posted_topic": "<strong>%1</strong> has posted a new topic: <strong>%2</strong>", "user_posted_topic": "<strong>%1</strong> has posted a new topic: <strong>%2</strong>",
"user_mentioned_you_in": "Ο/Η <strong>%1</strong> σε ανέφερε στο <strong>%2</strong>", "user_mentioned_you_in": "Ο/Η <strong>%1</strong> σε ανέφερε στο <strong>%2</strong>",
"user_started_following_you": "Ο/Η <strong>%1</strong> σε ακολουθεί.", "user_started_following_you": "Ο/Η <strong>%1</strong> σε ακολουθεί.",
"new_register": "<strong>%1</strong> sent a registration request.",
"email-confirmed": "Το Εmail Επιβεβαιώθηκε", "email-confirmed": "Το Εmail Επιβεβαιώθηκε",
"email-confirmed-message": "Ευχαριστούμε που επιβεβαίωσες το email σου. Ο λογαριασμός σου είναι πλέον πλήρως ενεργοποιημένος.", "email-confirmed-message": "Ευχαριστούμε που επιβεβαίωσες το email σου. Ο λογαριασμός σου είναι πλέον πλήρως ενεργοποιημένος.",
"email-confirm-error-message": "Υπήρξε κάποιο πρόβλημα με την επιβεβαίωση της διεύθυνσής email σου. Ίσως ο κώδικας να είναι άκυρος ή να έχει λήξει.", "email-confirm-error-message": "Υπήρξε κάποιο πρόβλημα με την επιβεβαίωση της διεύθυνσής email σου. Ίσως ο κώδικας να είναι άκυρος ή να έχει λήξει.",

View File

@@ -14,5 +14,6 @@
"register_now_button": "Εγγραφή Τώρα", "register_now_button": "Εγγραφή Τώρα",
"alternative_registration": "Εναλλακτική Εγγραφή", "alternative_registration": "Εναλλακτική Εγγραφή",
"terms_of_use": "Όροι Χρήσης", "terms_of_use": "Όροι Χρήσης",
"agree_to_terms_of_use": "Συμφωνώ με τους Όρους Χρήσης" "agree_to_terms_of_use": "Συμφωνώ με τους Όρους Χρήσης",
"registration-added-to-queue": "Your registration has been added to the approval queue. You will receive an email when it is accepted by an administrator."
} }

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