Compare commits

...

1009 Commits

Author SHA1 Message Date
Julian Lam
4686ae9923 0.6.1 2015-02-07 15:08:37 -05:00
Julian Lam
616bc68ebd added shrinkwrap file 2015-02-07 15:08:14 -05:00
barisusakli
8bbd7d971b fix index to post if sorting is by votes and pagination is used 2015-02-07 00:52:53 -05:00
barisusakli
9062a8f02b pass on mainPid 2015-02-07 00:19:22 -05:00
barisusakli
c859586269 calculate topic post indices instead of querying db 2015-02-07 00:12:47 -05:00
Julian Lam
ff5eeb3a85 fixed #2704 2015-02-06 20:42:20 -05:00
barisusakli
38dd3d4281 search newer/older than and better pagination 2015-02-06 19:47:27 -05:00
barisusakli
722b629572 closes #2703 2015-02-06 14:16:33 -05:00
Barış Soner Uşaklı
6680c2d475 Merge pull request #2621 from TheBronx/master
new filter hooks on favourite actions #2620
2015-02-06 12:39:15 -05:00
barisusakli
ba6af71150 fix profile update 2015-02-05 23:37:11 -05:00
barisusakli
652e247d1b fix username change event log 2015-02-05 23:21:31 -05:00
barisusakli
92c869e886 try to get ip from x-forwarded-for first 2015-02-05 23:18:53 -05:00
barisusakli
d65546a34d search form fix 2015-02-05 21:08:52 -05:00
barisusakli
9487f3a028 qs module changes categories param 2015-02-05 20:51:25 -05:00
barisusakli
d3aa353d73 dont crash if html is not string 2015-02-05 20:38:43 -05:00
barisusakli
9bca777320 closes #2700 allowGroupCreation setting 2015-02-05 19:38:51 -05:00
barisusakli
149120a186 fix notif url in topic notification email 2015-02-05 18:22:19 -05:00
barisusakli
832430ed37 dont crash if post.user or post.category doesn't exist 2015-02-05 18:07:17 -05:00
barisusakli
5c0bcd7e5d proper qs, pagination on search results 2015-02-05 18:02:30 -05:00
barisusakli
161b934827 reply count filter atleast/atmost 2015-02-05 17:21:01 -05:00
Julian Lam
a12bb9a32c latest translations 2015-02-05 17:11:33 -05:00
barisusakli
def600e927 search in categories and children 2015-02-05 14:55:40 -05:00
Julian Lam
f7ccdc3668 Merge branch 'master' of github.com:NodeBB/NodeBB 2015-02-05 13:09:34 -05:00
Julian Lam
fdaccc804c handling cases where no callback is passed to emailer.send 2015-02-05 13:09:32 -05:00
Barış Soner Uşaklı
ff5f3b264a Merge pull request #2547 from Alpacatty/patch-1
fix generated widgets areas glitching on small screens
2015-02-05 11:36:47 -05:00
barisusakli
845b97687a removed strict li selector 2015-02-04 19:05:43 -05:00
barisusakli
57ebcb8b8a closes #2694 2015-02-04 18:16:10 -05:00
barisusakli
39a75ea2d7 fix recent replies 2015-02-04 15:49:08 -05:00
barisusakli
385760bdda #2690 2015-02-04 12:09:54 -05:00
barisusakli
2911de0af9 really fix tests 2015-02-04 00:50:10 -05:00
barisusakli
cba9ad3d60 fix tests, and groups.join duh 2015-02-04 00:46:51 -05:00
barisusakli
16537bc636 prevent double callback 2015-02-04 00:37:08 -05:00
barisusakli
311fd00ecd dont allow guests to join groups 2015-02-04 00:33:15 -05:00
barisusakli
b7602c6e80 removed winston.err 2015-02-03 21:04:31 -05:00
barisusakli
1fe1085863 update validator and winston 2015-02-03 21:02:36 -05:00
barisusakli
b5b5894301 t.js version 2015-02-03 21:00:46 -05:00
barisusakli
fd773807e9 #2685 fix copy paste fail 😦 2015-02-03 19:55:14 -05:00
barisusakli
25ccc573c0 closes #2687 2015-02-03 18:13:34 -05:00
barisusakli
255f50343c closes #2685 2015-02-03 16:13:09 -05:00
barisusakli
28c57b6635 removed unused requires 2015-02-02 15:56:34 -05:00
Barış Soner Uşaklı
a0d70b48db Merge pull request #2675 from MegaGM/actionposts.edited
Added data argument to action:posts.edited hook
2015-02-02 15:15:04 -05:00
barisusakli
cc2ab12f29 removed bans from downvotes and flags
cleanup thread tools emits
2015-02-01 21:38:14 -05:00
Julian Lam
1b00d0f739 fixed #2670 2015-02-01 20:29:57 -05:00
Julian Lam
b3278cf8e8 fixed #2681 2015-02-01 20:21:31 -05:00
barisusakli
6a837632fa fix first post loading when pagination is enabled 2015-02-01 20:10:55 -05:00
Julian Lam
cfcfc8e0b1 Revert "fixed #2681"
This reverts commit a46aaf2c87.
2015-02-01 20:03:48 -05:00
Julian Lam
a46aaf2c87 fixed #2681 2015-02-01 20:01:41 -05:00
Julian Lam
5c2a70254f latest translations and fallbacks 2015-02-01 19:37:19 -05:00
Julian Lam
d284e89d6c added too-many-messages language key 2015-02-01 19:36:22 -05:00
barisusakli
0bfa8d337a removed console.logs 2015-02-01 19:13:27 -05:00
barisusakli
2c8e8a1f1c closes #2550, closes #2518 2015-02-01 19:12:03 -05:00
Mega
2f19f4106a Added data argument to action:posts.edited hook 2015-02-02 02:36:17 +03:00
Julian Lam
79083004e4 added missing file 2015-02-01 17:22:40 -05:00
Julian Lam
c652d1b80e removed console log from upgrade script 2015-02-01 17:22:08 -05:00
barisusakli
4d9e7fce22 notifyOnlineUsers helper 2015-01-31 15:42:10 -05:00
barisusakli
7363c71180 sitemap style 2015-01-31 13:37:34 -05:00
Barış Soner Uşaklı
63fd3f259f Merge pull request #2676 from MegaGM/Fix-User.setUserField/s
Uploading avatar causes crash on 0.6.1-dev
2015-01-31 13:16:25 -05:00
barisusakli
dc0229fc73 closes #2677 2015-01-31 13:10:43 -05:00
Mega
2e1d1ac665 Uploading avatar causes crash on 0.6.1-dev 2015-01-31 18:06:54 +03:00
Mega
c16689503d Added as argument post id in action:posts.edited 2015-01-31 15:34:40 +03:00
barisusakli
2c033bf286 set memberCount to 0 on creation 2015-01-31 00:00:02 -05:00
barisusakli
dc2a2aa98e store group member count in group hash
yet another upgrade script
2015-01-30 22:38:42 -05:00
Julian Lam
607e88b3c3 fixed browser title in user groups page 2015-01-30 16:29:33 -05:00
Julian Lam
ecfa8f7a7d passing memberCount and createTime into getUserGroups 2015-01-30 16:29:33 -05:00
Julian Lam
e4e9020e1f added groups page to user profile 2015-01-30 16:29:33 -05:00
barisusakli
c8f87e5d36 removed console.log 2015-01-30 16:16:49 -05:00
barisusakli
60e052e788 closes #2674 2015-01-30 12:28:29 -05:00
barisusakli
3bb9c9531f catch errors from static hook 2015-01-30 12:25:07 -05:00
Julian Lam
939e623547 collapsing a bunch of whitespace using async.apply, and also fixed #2672 as well 2015-01-29 19:49:32 -05:00
barisusakli
39cac43b96 if key isn't found dont error
Conflicts:
	src/database/redis/main.js
2015-01-29 19:40:51 -05:00
Julian Lam
a7a4edfd37 administrators group no longer shows up in group searches 2015-01-29 19:18:18 -05:00
Julian Lam
f793536131 latest translations and fallbacks 2015-01-29 17:45:42 -05:00
Julian Lam
f753cfb1c9 search on grop sort change too 2015-01-29 16:45:51 -05:00
Julian Lam
b052ed3504 searching on keyup instead of enter key 2015-01-29 16:42:00 -05:00
Barış Soner Uşaklı
eb5746b2b4 Merge pull request #2589 from Schamper/bat-script
Simple bat file for Windows. Not all options are supported, but it's a start
2015-01-29 14:19:48 -05:00
Barış Soner Uşaklı
af4a272264 Merge pull request #2636 from Schamper/fix-editorconfig
Fix editorconfig syntax
2015-01-29 14:19:29 -05:00
barisusakli
57453f33ab new group members route
getMembers can take start end
ability to specify how many group members to return
2015-01-29 13:37:45 -05:00
barisusakli
a1c8902b4e hook fixes
new hook, action:user.online,
fix action:user.set hooks so they pass in uid
check err before firing hooks
2015-01-29 12:52:30 -05:00
barisusakli
aaa1fae558 closes #2597 2015-01-29 01:06:48 -05:00
barisusakli
4d6a6f64b0 slug is lowercase 2015-01-28 23:43:08 -05:00
barisusakli
f9fecf4bc1 faster sort users 2015-01-28 19:19:55 -05:00
barisusakli
0fab6c243c increase rate limit timeframe from 1 second to 10 seconds 2015-01-28 19:07:44 -05:00
barisusakli
c87c99eadd dont check admin emits against flooding 2015-01-28 17:08:41 -05:00
barisusakli
ed714cdf77 user search paginator 2015-01-28 15:08:33 -05:00
barisusakli
98ff75b9c3 closes #2581 2015-01-28 13:46:11 -05:00
Julian Lam
63eeee4394 fixed issue where hitting enter while searching for groups would cause the page to reload. 2015-01-28 13:38:08 -05:00
barisusakli
9db7f0f9a0 doing on master as well 2015-01-28 10:30:18 -05:00
psychobunny
f253b11d71 passed in wrong object 2015-01-27 17:09:45 -05:00
psychobunny
0828caab32 renamed to filter:userlist.get 2015-01-27 16:51:48 -05:00
psychobunny
943e268ffc add filter:users.get 2015-01-27 16:39:33 -05:00
barisusakli
27518716a0 make getUsers public for plugins 2015-01-27 16:04:02 -05:00
Julian Lam
a3cadff1d3 updated settings module (v2) to fix multiple selects and checkboxes using name instead of id, which isn't always guaranteed to be set. 2015-01-27 14:47:39 -05:00
Julian Lam
d096a639d6 fixed #2657 -- there's a slight chance this might break other ACP pages, but my limited testing tells me it is ok so far 2015-01-27 13:14:07 -05:00
Julian Lam
891731ca52 enabled saving of sendPostNotification setting 2015-01-27 11:42:03 -05:00
Julian Lam
08e39d150e fixed #2655 2015-01-27 11:19:36 -05:00
Julian Lam
06238f6894 partial fix to #2655 2015-01-27 11:12:19 -05:00
barisusakli
c33b369858 closes #2658 2015-01-27 10:36:35 -05:00
psychobunny
72e14e6db6 closes #2653 2015-01-27 04:39:00 -05:00
Julian Lam
d102ff0704 fixed #2656 2015-01-26 21:35:30 -05:00
barisusakli
bf9b633d50 fix Group.exists if an array is passed in 2015-01-26 16:48:39 -05:00
psychobunny
c9f0e61b57 Update CONTRIBUTING.md 2015-01-26 15:47:28 -05:00
psychobunny
d3d321f1b7 CLA mention in contributing.md 2015-01-26 15:46:34 -05:00
Julian Lam
57a3d53dee updating mentions minver 2015-01-25 21:04:11 -05:00
barisusakli
26defd7dca Groups.getGroupNameByGroupSlug 2015-01-25 20:53:57 -05:00
barisusakli
e31bf9131f added topics.follow and toggleFollow 2015-01-25 16:47:51 -05:00
Julian Lam
5a1c2b9ddf booleanifying sendPostNotification user setting when requested, and now only sending the post notification if the user has flipped that option on in user settings... kind of an important thing to forget... 2015-01-25 09:41:51 -05:00
barisusakli
288d507eb6 pass the loaded pids to action:posts.loaded 2015-01-24 18:48:34 -05:00
barisusakli
835ad3ea53 fix post.getUpvoters to work with an array 2015-01-24 13:16:07 -05:00
Julian Lam
bc9ede7b6c changed emailer.send so that it processes a callback, if provided. Also added new option to receive emails every time a topic you subscribe to is posted to. 2015-01-23 21:28:18 -05:00
barisusakli
4b3aa26abd closes #2633 2015-01-23 18:19:30 -05:00
barisusakli
caec718092 callback for getUidsInRoom 2015-01-23 15:12:57 -05:00
psychobunny
3fb7eb766b closes #2646 2015-01-23 15:06:53 -05:00
Julian Lam
ca92372676 fixed #2644 2015-01-23 07:27:49 -05:00
Julian Lam
70f6c396fc updated widget container to use h3 in panel header 2015-01-22 16:38:24 -05:00
barisusakli
bd8a77a22b dont crash if callback isnt passed in 2015-01-22 16:23:38 -05:00
barisusakli
2c45dc6450 redis helpers 2015-01-22 16:21:36 -05:00
Julian Lam
0bf98b5494 simplified isOwner check because there's no need to check admin status as admins automatically become owners now 2015-01-22 16:08:55 -05:00
Julian Lam
0c2d2a28ba admins can bypass the request step of a group and just join it, and they also become owners when they join a group 2015-01-22 16:01:17 -05:00
Julian Lam
a526577927 only attempt to remove address bar if current position is at the top of screen 2015-01-22 15:08:23 -05:00
Julian Lam
d2217b8137 closed #2641 2015-01-22 14:20:10 -05:00
barisusakli
740c52fc4f missing semicolon 2015-01-22 14:19:23 -05:00
barisusakli
4603484558 user.delete test 2015-01-22 14:18:19 -05:00
barisusakli
22c541d95f closes #2643 2015-01-22 14:13:39 -05:00
barisusakli
f3719df997 getGroups method to get a range 2015-01-21 23:16:31 -05:00
Julian Lam
3ade5da00f groups sorting by creation date 2015-01-21 23:10:59 -05:00
barisusakli
c6ae6fae54 fix typo in test 2015-01-21 22:55:13 -05:00
barisusakli
25f6b816ed send iso and unix timestamp 2015-01-21 22:53:33 -05:00
barisusakli
c379753341 upgrade scripts
upgrade groups to sorted set(groups:createtime) upgrade
upgrade groups:<name>:members to sorted set
new database methods
tests
2015-01-21 22:48:27 -05:00
Julian Lam
4a3255d4fd search sorting 2015-01-21 17:41:43 -05:00
Julian Lam
af1fa11606 rejigged search so it grabs the values on method execution, instead of being passed in 2015-01-21 17:15:28 -05:00
Julian Lam
2a6de59277 if group search is executed with empty string, return all groups 2015-01-21 16:55:20 -05:00
barisusakli
5fe69e0386 input selector 2015-01-21 16:50:36 -05:00
Julian Lam
fd8a885145 fixed tests by removing the broken one, heh heh heh 2015-01-21 16:33:18 -05:00
Julian Lam
4072172c8e companion commit to nodebb/nodebb-theme-vanilla@0d17032 2015-01-21 16:15:37 -05:00
barisusakli
c20a848c7f removed console.logs 2015-01-21 16:05:43 -05:00
Julian Lam
ba1260923f companion to nodebb/nodebb-theme-vanilla@ad953f2 2015-01-21 15:58:43 -05:00
Julian Lam
6502dd2561 group searching 2015-01-21 15:43:05 -05:00
Julian Lam
fa27461abc upgrading administrator groups as well 2015-01-21 14:41:42 -05:00
barisusakli
dd38ee96fa return cover:url in user groups 2015-01-21 13:46:40 -05:00
Julian Lam
56200b0fdf defining module name in iconSelect module 2015-01-20 20:55:22 -05:00
Julian Lam
22a619d9c7 fixed #2631 2015-01-20 19:30:11 -05:00
barisusakli
7efc0619cc dont crash if data.username is undefined, dont set username to empty value 2015-01-20 18:13:48 -05:00
barisusakli
f1a3815ddc action:user.updateProfile 2015-01-20 17:42:05 -05:00
barisusakli
aab2bc0b39 keep track of the last 20 events 2015-01-20 17:04:10 -05:00
Julian Lam
c4bc51b834 fixing installation script that broke with recent updates to groups 2015-01-20 09:41:41 -05:00
Schamper
22e7b2d3b2 Fix editorconfig syntax 2015-01-20 12:29:09 +01:00
barisusakli
21522e59c4 added slug to user group return #2635 2015-01-20 01:30:42 -05:00
barisusakli
96c27d29f4 dont crash if callback isn't supplied 2015-01-19 20:49:24 -05:00
barisusakli
2f955c3af4 getUpvoters works with array 2015-01-19 17:06:43 -05:00
barisusakli
cb5ee2a141 closes #2632 2015-01-19 16:38:49 -05:00
Julian Lam
99dc37bd9c removed relativeTime util method, utils.js better be a C now. 2015-01-19 15:43:22 -05:00
Julian Lam
d2938ea509 closed #2626 2015-01-19 15:26:50 -05:00
Julian Lam
81c929fa77 added a new test for group renaming, #2629 2015-01-19 15:14:56 -05:00
barisusakli
d96a1f0365 closes #2630 2015-01-19 15:12:09 -05:00
Julian Lam
5160ab1ed1 closed #2625 2015-01-19 15:09:36 -05:00
Julian Lam
c0622743d2 closes #2629 2015-01-19 15:03:33 -05:00
barisusakli
4c62590bc8 closes #2628 2015-01-19 14:13:29 -05:00
barisusakli
a926a11e70 fix redirection when saving groups 2015-01-19 12:59:54 -05:00
barisusakli
ad21e73491 send values to plugins when updating groups 2015-01-19 12:59:53 -05:00
Julian Lam
eb5b8ccec3 better check for group exist, groups with different cases can no longer be created, #2588 2015-01-19 10:46:14 -05:00
Julian Lam
1e57c5d001 linting 2015-01-19 10:39:44 -05:00
Julian Lam
e5a33539d2 updated globals for jslint 2015-01-19 10:26:57 -05:00
barisusakli
9f8b274e24 filter:group.get 2015-01-18 17:35:58 -05:00
barisusakli
94fa212eab added filter:groups.get 2015-01-18 17:35:11 -05:00
Julian Lam
c026a64e8e adding concept of group slugs, #2588. ping @barisusakli for downstream plugin changes 2015-01-18 17:19:26 -05:00
barisusakli
6f140384e0 send groupData on action:group.create 2015-01-18 17:07:26 -05:00
Julian Lam
4317b3c872 fixing more exposed XSS outlets in groups frontend 2015-01-18 17:03:08 -05:00
Julian Lam
491e0060d4 more files that should be loaded for maintenanceMode to work 2015-01-18 16:52:50 -05:00
Julian Lam
fe45fc967d updating maintenance mode middleware so js doesn't crash until login client-side js is ready 2015-01-18 16:21:50 -05:00
barisusakli
f5b448c300 closes #2623 2015-01-18 14:32:47 -05:00
barisusakli
e46cda835a closes #2624 2015-01-18 14:31:37 -05:00
TheBronx
0bd48ef023 fix error in previous commit
fix error in previous commit
2015-01-18 19:15:59 +01:00
TheBronx
e3cf528b57 pass also user id on fireHook
pass also user id on fireHook as suggested by @barisusakli
2015-01-18 19:09:26 +01:00
TheBronx
6ccb35576c new filter hooks on favourite actions #2620
before a favourite action is made, fire a filter hook so plugins can
modify or cancel that action before it takes place.
2015-01-18 13:38:42 +01:00
barisusakli
03ae7db561 on user delete remove from ip sorted set, fix search by ip 2015-01-17 16:22:04 -05:00
barisusakli
f67053df52 figure out pathname, dont crash if callback isnt supplied 2015-01-17 15:06:12 -05:00
Julian Lam
04be40158c if you attempt to join a group when you're already in a group, you can't anymore. 2015-01-16 20:14:39 -05:00
Julian Lam
8ba05c08fe category privilege rescinding 2015-01-16 17:03:19 -05:00
Julian Lam
577a646adc this should appease @barisusakli 2015-01-16 17:03:19 -05:00
barisusakli
3eb922393f closes #2616 2015-01-15 21:05:04 -05:00
barisusakli
61f069a071 final test fixes
copy pasta is bad
2015-01-15 15:47:01 -05:00
barisusakli
d94668216d misc test fixes 2015-01-15 15:42:55 -05:00
barisusakli
4554ef2195 more test fixes 2015-01-15 15:33:22 -05:00
barisusakli
15d2f54cd0 fix list tests 2015-01-15 15:06:02 -05:00
barisusakli
46fd1843ba fix key tests 2015-01-15 15:02:50 -05:00
barisusakli
162a7b9e0c cleanup hash tests before hooks 2015-01-15 14:58:29 -05:00
barisusakli
584daf12a0 cleaned up key tests 2015-01-15 14:36:03 -05:00
barisusakli
74099d1d8c proper set tests with before hooks 2015-01-15 14:27:45 -05:00
Julian Lam
8d23265324 sending in groupObj data into group.delete hook 2015-01-15 14:09:25 -05:00
barisusakli
6b5b0b9eec proper list tests, added before hooks 2015-01-15 14:02:55 -05:00
Julian Lam
5bc078d9df latest spanish translations 2015-01-15 13:56:53 -05:00
Julian Lam
d4d99cba7c fixes #2615 2015-01-15 13:53:17 -05:00
Julian Lam
36cfbbbc58 Merge branch 'master' of github.com:nodebb/NodeBB 2015-01-15 13:52:37 -05:00
barisusakli
c324d71727 closes #2610 2015-01-15 13:33:49 -05:00
Julian Lam
fa87d883dc allowing "hidden" to be passed directly to Groups.create 2015-01-15 13:22:10 -05:00
barisusakli
429c4022f0 closes #2561 2015-01-15 12:47:44 -05:00
barisusakli
3e666adfea action:plugin.install and uninstall 2015-01-15 12:34:15 -05:00
Julian Lam
d813bda883 update, create, destroy hooks, #2609 2015-01-15 11:19:47 -05:00
Julian Lam
5c6dfb7462 missed one, @EisFrei 2015-01-15 10:58:31 -05:00
Julian Lam
cfdd4ec164 Revert "missed one, ping @EisFrei"
This reverts commit 2ed6b78cc5.
2015-01-15 10:55:10 -05:00
Julian Lam
2ed6b78cc5 missed one, ping @EisFrei 2015-01-15 10:54:55 -05:00
Julian Lam
666cef4029 updated hooks action:groups.join, action:groups.leave, and action:groups.requestMembership to match other action hooks in group namespace (that's "group", not "groups"), ping @EisFrei 2015-01-15 10:53:21 -05:00
Julian Lam
36a49cd994 guests can no longer attempt to join a group, #2588 2015-01-15 10:44:27 -05:00
barisusakli
cd99324286 closes #2413, closes #2599 2015-01-14 16:02:29 -05:00
barisusakli
8f5bf1a7ed closes #2587 2015-01-14 15:29:57 -05:00
Julian Lam
188c667580 closed #2612 2015-01-14 14:48:32 -05:00
barisusakli
d9a7547e63 next(err) 2015-01-14 11:49:04 -05:00
barisusakli
468d2be668 added error checks and missing returns to widgets closes #2611 2015-01-14 11:47:05 -05:00
Julian Lam
86a6979606 added comments to explain the voting logic 2015-01-14 11:18:45 -05:00
Julian Lam
87b9a60610 fixed group renaming, ping @schamper 2015-01-14 10:04:50 -05:00
Julian Lam
7289d50e6c whoops, fixing travis and groups 2015-01-14 09:46:13 -05:00
Julian Lam
fc75e3258d closed #2608 2015-01-14 09:44:43 -05:00
Julian Lam
d02f7e0e42 #2609 2015-01-14 09:42:09 -05:00
Julian Lam
6ac04e9da7 closed #2609 2015-01-14 09:33:02 -05:00
Julian Lam
aeafbe6170 better widget representation on smaller screens 2015-01-14 09:29:52 -05:00
barisusakli
e414008c59 closes #2584 2015-01-13 17:30:44 -05:00
barisusakli
fd2edcaf6f closes #2594 2015-01-13 17:15:14 -05:00
Julian Lam
a8c818c6cd added new hook, filter:controllers.topic.get 2015-01-13 15:47:38 -05:00
barisusakli
f2bfb4c0d1 removed following count hide 2015-01-13 15:13:34 -05:00
barisusakli
a9bf9745b6 removed unused yourid 2015-01-13 15:10:50 -05:00
barisusakli
1adc3b4ea7 removed console.log 2015-01-13 14:57:41 -05:00
barisusakli
82c4488505 remove console.log fix typos 2015-01-13 14:56:43 -05:00
barisusakli
6ccdf187ea closes #2595 2015-01-13 14:54:13 -05:00
barisusakli
f6525a13c8 data will be always inside socket.io/ modules 2015-01-13 12:26:41 -05:00
barisusakli
2a66aad078 ability to add extra fields to user data, new hook filter:user.addFields 2015-01-13 12:02:14 -05:00
Julian Lam
1c497f842a fixes travis, #2588 2015-01-13 11:27:48 -05:00
Julian Lam
50ac813388 Merge branch 'private-groups', closed #2588 2015-01-13 11:03:54 -05:00
Julian Lam
b3b3300bd6 fixing bug with checkboxes, #2588 2015-01-13 00:25:44 -05:00
barisusakli
c2fab07236 replaces fs.exists with try catch 2015-01-12 23:24:19 -05:00
barisusakli
be8385e8dc fix else if style 2015-01-12 23:11:32 -05:00
barisusakli
5f12679426 #2604 2015-01-12 23:10:36 -05:00
Julian Lam
de58f4ff6b hiding group admin and cover photo controls from non-owners, #2588 2015-01-12 22:47:58 -05:00
Julian Lam
710df626b5 removed join/view buttons from group list, made cover clickable, #2588 2015-01-12 21:21:02 -05:00
Julian Lam
698f598a30 default cover photo for groups, #2588 2015-01-12 21:14:00 -05:00
Julian Lam
203a15204e bugfixes to cover photo, #2588 2015-01-12 20:40:34 -05:00
Julian Lam
675968f0f3 cover photo for groups, #2588 2015-01-12 20:34:15 -05:00
barisusakli
5a940778ee closes #2603 2015-01-12 20:15:00 -05:00
barisusakli
7a7aeb131e use tpl_url 2015-01-12 19:04:14 -05:00
barisusakli
02dbce57fb relative path fix missing ; 2015-01-12 18:52:41 -05:00
barisusakli
1f674f10e2 added before to hash test 2015-01-12 18:35:28 -05:00
barisusakli
05894d14c6 closes #2151 2015-01-12 18:28:47 -05:00
barisusakli
200f74f1c7 closes #2592 2015-01-12 18:16:34 -05:00
barisusakli
bbfec7d443 fix post index parse 2015-01-12 17:54:07 -05:00
barisusakli
456b844e61 closes #2596 2015-01-12 17:33:11 -05:00
barisusakli
08c1dad3ee topics.isFollowing works with multiple tids now 2015-01-12 16:57:18 -05:00
barisusakli
f417e07b9d user search changes 2015-01-12 15:57:45 -05:00
Julian Lam
697d2636f9 Merge branch 'master' into private-groups 2015-01-12 13:24:11 -05:00
Julian Lam
8be9854062 latest translations 2015-01-12 13:24:01 -05:00
Julian Lam
612b8f01b6 Merge remote-tracking branch 'origin/master' into private-groups 2015-01-12 13:01:33 -05:00
Julian Lam
635393a274 group creation and deletion from outside ACP, #2588 2015-01-12 13:00:23 -05:00
barisusakli
ad12886d19 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2015-01-12 11:07:41 -05:00
barisusakli
2974f1ba8a closes #2602 2015-01-12 11:07:38 -05:00
Julian Lam
765975e667 ACP groups delete calls generic groups socket listener now, #2588 2015-01-11 18:17:49 -05:00
Julian Lam
08e883de44 added widget areas to the bottom of the group details page, #2588 2015-01-11 18:04:35 -05:00
Julian Lam
240056d169 added icon container styles back to ACP, proper hooking-up of iconSelect module in group settings panel, #2588 2015-01-11 17:44:51 -05:00
Julian Lam
69ed8ac45d icon selection interface -- moved iconSelect module out of admin space, #2588 2015-01-11 17:24:15 -05:00
Julian Lam
19f0f6b7e0 fixed issue where trying to go to the user profile would cause a cold load instead of ajaxify 2015-01-11 16:55:25 -05:00
barisusakli
0305ad989c match uploader return 2015-01-10 19:48:00 -05:00
barisusakli
f74383bba4 changed userPhoto to files[] 2015-01-10 18:59:24 -05:00
barisusakli
23f450adbd delete topic post sorted sets on topic purge 2015-01-10 17:47:31 -05:00
barisusakli
5414c268a0 sort numerically 2015-01-10 17:41:03 -05:00
barisusakli
9f35a2b251 flat threadtools.purge 2015-01-10 17:12:32 -05:00
barisusakli
1caddb6182 uploads controller 2015-01-10 16:40:54 -05:00
barisusakli
a70b73df81 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2015-01-10 15:03:32 -05:00
barisusakli
4ab288acae delete fullname:uid mapping on user delete 2015-01-10 15:03:29 -05:00
psychobunny
5d43aa3212 ability to redirect the user from anywhere
just send

```
callback({
status: 302,
path: '/user/psychobunny'
});
```
2015-01-10 14:50:28 -05:00
psychobunny
a7d73d4106 fixes adding new routes to user/xxx/route 2015-01-09 14:33:42 -05:00
Julian Lam
311d02dbe1 removed console log 2015-01-09 13:53:19 -05:00
Julian Lam
b4731ad47b added colorpicker to frontend, badge colour changes for groups, #2588 2015-01-09 13:53:11 -05:00
Julian Lam
7be0830751 properly showing private state in group details, #2588 2015-01-09 10:45:50 -05:00
Julian Lam
84c19921b9 newly created groups automatically assign the creator as the owner, some tweaks to isPrivate parsing, added groups link to header, #2588 2015-01-09 10:33:54 -05:00
Julian Lam
65537d997f if a group is deleted, flush the owner and pending sets, too 2015-01-09 09:43:45 -05:00
barisusakli
a8de1c1465 properly fix #2586 2015-01-08 18:24:05 -05:00
barisusakli
d7c27b35ab closes #2586 2015-01-08 17:47:20 -05:00
Schamper
eb1fe77510 That's not how you do comments silly 2015-01-08 23:29:12 +01:00
Schamper
9b40c44fd8 Simple bat file for Windows. Not all options are supported, but it's a good start. 2015-01-08 23:25:28 +01:00
Julian Lam
96c37c25b0 join, leave, accept, reject: handlers + UI, #2588 2015-01-08 17:23:40 -05:00
Julian Lam
b0182f702f Merge remote-tracking branch 'origin/private-groups' into private-groups 2015-01-08 17:07:26 -05:00
Julian Lam
3a3d45155e show pending members in frontend UI, #2588 2015-01-08 17:06:33 -05:00
psychobunny
3712fe1fb5 latest t.js 2015-01-08 16:57:15 -05:00
Julian Lam
71b41239ac attempting to join a private group causes the join to be pending, #2588 2015-01-08 16:50:31 -05:00
barisusakli
db1cc6b8d2 search by fullname 2015-01-08 15:49:00 -05:00
Julian Lam
a5d7fee623 Merge remote-tracking branch 'origin/master' into private-groups 2015-01-08 15:41:19 -05:00
Julian Lam
bb0b6d9db4 using 'invisible' class instead of 'hidden', #2588 2015-01-08 15:41:07 -05:00
Julian Lam
d747ce5760 granting and rescinding ownership, #2588 2015-01-08 15:40:41 -05:00
Julian Lam
a907fa2187 added concept of group ownership, #2588 2015-01-08 15:40:38 -05:00
Julian Lam
9fa3675424 added methods and socket listeners for group joining and leaving, #2588 2015-01-08 15:40:34 -05:00
Julian Lam
501935d359 updated helper loading so it loads all helpers in helpers local var, #2588 2015-01-08 15:40:23 -05:00
barisusakli
a77a761433 closes #1917 2015-01-08 13:47:21 -05:00
psychobunny
52cf224e5a translator.getTranslations & bug fix 2015-01-07 18:31:32 -05:00
psychobunny
5ee0ed401f fixed ajaxify's redirecting to external URLs.. well fixed redirecting in general 2015-01-07 17:45:09 -05:00
psychobunny
1a13f2a54a no need to crash nodebb on missing template directory warning 2015-01-07 17:45:08 -05:00
barisusakli
ce9c17f8e5 ability to search posts by user 2015-01-07 17:27:13 -05:00
Julian Lam
b685194dae updated helper loading so it loads all helpers in helpers local var 2015-01-07 16:38:52 -05:00
Julian Lam
1868a02bd7 Merge branch 'master' into private-groups 2015-01-07 16:23:07 -05:00
Julian Lam
aa62c52580 closed #2583 2015-01-07 16:21:20 -05:00
Julian Lam
a2af8105ec closed #2583 2015-01-07 16:18:38 -05:00
barisusakli
60f1b9679a search filters 2015-01-07 16:10:11 -05:00
Julian Lam
917f76feab group join/leave controls in groups list page (+ helper!) 2015-01-07 14:58:31 -05:00
Julian Lam
f3fa2f10ed added ACP option to enable private groups 2015-01-07 14:42:14 -05:00
barisusakli
c1ac92ac19 popular topics will use topic creation time 2015-01-07 13:35:53 -05:00
Julian Lam
2d4383c7b0 updating bootstrap in ACP to v3.3.1 2015-01-07 13:00:34 -05:00
Julian Lam
fc7a882877 fixed #2582 2015-01-07 10:09:09 -05:00
psychobunny
b34420c2d7 Update CONTRIBUTING.md 2015-01-07 02:46:10 -05:00
barisusakli
f060a36853 fix indent 2015-01-06 23:34:29 -05:00
barisusakli
b51127bd9c closes #2578 2015-01-06 23:29:48 -05:00
Julian Lam
f5b758245f added indonesian to NodeBB, Terima kasih! 2015-01-06 18:09:37 -05:00
Julian Lam
779fd0405e latest translations! 2015-01-06 18:04:42 -05:00
Julian Lam
3c1ee1f59f fixing incorrect language code for Italian 2015-01-06 16:33:49 -05:00
Julian Lam
9b8cc9fe6c partial revert of 659d0f68cb, #2417 2015-01-06 16:23:30 -05:00
Julian Lam
835886998b having composer/resize call findBootstrapEnvironment only on the first resize method call, and not right when library is required, #2417 2015-01-06 16:09:35 -05:00
Julian Lam
428a431164 Revert "wrapping findBootstrapEnvironment so that it doesn't run before the DOM is ready #2417"
This reverts commit e42365f7c1.
2015-01-06 16:05:06 -05:00
Julian Lam
e42365f7c1 wrapping findBootstrapEnvironment so that it doesn't run before the DOM is ready #2417 2015-01-06 12:06:33 -05:00
Julian Lam
659d0f68cb possibly fixing issue where mobile composer textarea is not properly sized when initially opened. Sort of related to #2417 2015-01-06 11:15:44 -05:00
psychobunny
4bbd3b47c0 Merge pull request #2580 from TheBronx/master
update bootstrap js to v3.3.1 fixes #2579
2015-01-05 17:18:13 -05:00
TheBronx
e26f8c3290 update bootstrap js to v3.3.1 fixes #2579
update bootstrap.min.js to v3.3.1 fixes #2579
2015-01-05 13:43:44 +01:00
Baris Usakli
a36391864a fix recent replies crash, closes #2575 2015-01-04 11:42:39 -05:00
Julian Lam
e4caa83158 Merge pull request #2573 from unreadableusername/master
footer.tpl loggedIn variable support
2015-01-04 11:39:23 -05:00
Baris Usakli
8522af504a closed #2571 2015-01-04 11:37:20 -05:00
psychobunny
64468a6f16 more linting 2015-01-03 20:10:08 -05:00
psychobunny
357de92624 tests/database linting 2015-01-03 20:08:49 -05:00
psychobunny
f3a113d318 jslinting on holiday ftw 2015-01-03 20:07:09 -05:00
Julian Lam
112a1e8c85 happy new year! 2015-01-03 17:53:25 -05:00
psychobunny
3da6466045 I thought I was on holiday (fixes infinite loop on language calls) 2015-01-03 03:38:01 -05:00
Oleksandr Pidlisnyi
f9887de478 footer.tpl loggedIn variable support 2015-01-02 17:29:03 +02:00
barisusakli
7b49effc14 minor tweaks 2015-01-01 13:05:58 -05:00
Julian Lam
1ddb90720c Merge branch 'guest-handles' 2014-12-31 21:30:17 -05:00
Julian Lam
23b9b21cdd better handling of guest handles in frontend, #2569 2014-12-31 21:27:41 -05:00
Julian Lam
9befa6aca7 proper handling of post editing, integration with ACP toggle, #2569 2014-12-31 20:48:32 -05:00
barisusakli
ff770e3656 search test 2014-12-31 17:20:28 -05:00
barisusakli
6d31fee3f5 closes #2564
change user.search to accept params
can search substr with startsWith:false
no infinite scroll on admin user search page
2014-12-31 17:13:19 -05:00
barisusakli
fbd875b397 fix sortedSetIncrBy return 2014-12-31 16:38:57 -05:00
barisusakli
faf4163a6e more test fixes 2014-12-31 16:28:24 -05:00
Julian Lam
325815a78d showing guest handles in frontend UI #2569 2014-12-31 16:27:35 -05:00
barisusakli
861a3ca8a8 more test fixes 2014-12-31 16:14:34 -05:00
barisusakli
0a534b20e3 sortedSetCount fix for +inf/-inf 2014-12-31 16:09:33 -05:00
barisusakli
03ee524121 fix tests and mongo method 2014-12-31 15:59:57 -05:00
barisusakli
b443aec450 rest of the sorted set tests 2014-12-31 15:52:52 -05:00
barisusakli
1f0902bbe8 fix range tests 2014-12-31 14:44:52 -05:00
barisusakli
00541b2bc8 sortedSetRange tests 2014-12-31 14:41:58 -05:00
barisusakli
0ff37f9e0e sorted set tests 2014-12-31 14:27:16 -05:00
barisusakli
bfaf50908d closes #2565 2014-12-31 14:16:27 -05:00
barisusakli
1511a0c3fe closes #2568 2014-12-31 13:51:47 -05:00
Julian Lam
b97c9e4467 shorter language string for composer guest handle placeholder, #2569 2014-12-31 12:44:26 -05:00
Julian Lam
7dc309fc16 template in composer #2569 2014-12-31 12:36:25 -05:00
Julian Lam
fcbb48bb77 acp setting for allowGuestHandles #2569 2014-12-31 12:16:20 -05:00
Julian Lam
cb4fb62d4a moved ACP menu into a partial 2014-12-31 12:13:11 -05:00
barisusakli
38e7ecbb41 setRemove doesnt return result 2014-12-30 22:06:48 -05:00
barisusakli
ee820341d5 fix incrObjectFieldBy test 2014-12-30 18:52:23 -05:00
barisusakli
74a3977d42 decrObjectField, incrObjectFieldBy tests 2014-12-30 18:50:10 -05:00
barisusakli
e6244c547a fix isObjectField test 2014-12-30 18:46:46 -05:00
barisusakli
9af3007f3d fix copy paste fails 2014-12-30 18:44:44 -05:00
barisusakli
4d5ed784a1 more hash tests
getObjectValues
isObjectField
deleteObjectField
incrObjectField
2014-12-30 18:41:13 -05:00
barisusakli
13cd2e41bb fix assert 2014-12-30 18:29:11 -05:00
barisusakli
ebbb1bac26 more hash tests
getObjectField
getObjectFields
getObjectsFields
getObjectKeys
2014-12-30 18:25:32 -05:00
barisusakli
81b32fc095 missing comma 2014-12-30 18:08:16 -05:00
barisusakli
a6c75eea88 hash tests 2014-12-30 18:07:06 -05:00
barisusakli
1e6f5d822d setRemove tests 2014-12-29 18:28:59 -05:00
barisusakli
adae2bd13e fix copy paste fail 2014-12-29 18:23:17 -05:00
barisusakli
818182bc00 setCount setsCount tests 2014-12-29 18:20:11 -05:00
barisusakli
4590fe6155 isMemberOfSets test 2014-12-29 18:14:41 -05:00
barisusakli
a529c3b179 fix typo 2014-12-29 18:10:09 -05:00
barisusakli
7f933bc747 more set tests 2014-12-29 18:07:12 -05:00
barisusakli
3efc49dd72 set tests 2014-12-29 17:55:30 -05:00
barisusakli
def5d23744 missing done 2014-12-29 17:34:56 -05:00
barisusakli
633cef6dd7 listTrim fix 2014-12-29 17:32:31 -05:00
barisusakli
c62e7ed641 list test fix 2014-12-29 17:27:42 -05:00
barisusakli
9750a36dee fix get range 2014-12-29 16:25:23 -05:00
barisusakli
3e8c29e5f9 list tests 2014-12-29 16:20:35 -05:00
barisusakli
8aa75b7af4 publish reload requests, fix missing nconf 2014-12-29 15:41:55 -05:00
barisusakli
cc487a7fc8 publish restart requests 2014-12-29 15:31:15 -05:00
barisusakli
4364b50ecf closes #2562 2014-12-29 15:11:52 -05:00
barisusakli
d2e69884b5 closes #2556 2014-12-29 13:59:02 -05:00
barisusakli
c4c8964f82 closes #2543 2014-12-28 23:01:34 -05:00
Julian Lam
9d5daa0bf4 Update README.md 2014-12-28 22:53:17 -05:00
barisusakli
747f212f1a closes #2552, disable prompt colors 2014-12-28 22:32:02 -05:00
barisusakli
9170ee831a reset search on tags page if input is empty 2014-12-28 22:22:43 -05:00
barisusakli
fc79b3a932 fix isInstalled, publish plugin install and upgrade requests 2014-12-26 20:18:05 -05:00
barisusakli
48acb0082e isActive 2014-12-26 19:17:37 -05:00
barisusakli
68f985c6da refactor map css/less 2014-12-26 19:02:50 -05:00
barisusakli
fdbd9a816f moved comments above method 2014-12-26 18:55:06 -05:00
barisusakli
d0b8337075 broke plugins.js into files 2014-12-26 18:54:20 -05:00
barisusakli
d1540322c9 closes #2555 2014-12-26 15:44:00 -05:00
barisusakli
8eb58bf5fe check err 2014-12-25 18:21:06 -05:00
barisusakli
b7f55e8453 fix tests 2014-12-25 15:57:37 -05:00
barisusakli
8007bb0644 dont ignore error 2014-12-25 15:50:55 -05:00
barisusakli
e0edb71a8a use socket.io default and ["polling", "websocket"] 2014-12-25 14:13:54 -05:00
barisusakli
1cbf5ddfe9 only send back err on redis.deleteAll 2014-12-25 03:14:04 -05:00
barisusakli
7cf3719c80 fix rename and increment 2014-12-25 03:08:49 -05:00
barisusakli
410d9fa4fa fix more tests 2014-12-25 03:00:05 -05:00
barisusakli
b6639403fe fix set test 2014-12-25 02:50:44 -05:00
barisusakli
f4d1fbc4e3 fix mock require 2014-12-25 02:45:56 -05:00
barisusakli
102819426c require key tests 2014-12-25 02:43:11 -05:00
barisusakli
bf54859a27 key tests 2014-12-25 01:53:28 -05:00
barisusakli
872318442f install latest mongo in travis, travis only has 2.4.10 2014-12-25 01:00:57 -05:00
barisusakli
13daf8d167 mongo port 2014-12-25 00:45:30 -05:00
barisusakli
fd373ed8e7 added mongodb to travis.yml 2014-12-25 00:41:33 -05:00
barisusakli
37235557bb fix callback in redis.setRemove 2014-12-24 15:52:37 -05:00
barisusakli
00fb3ab909 only send back error for sortedSetsRemove 2014-12-24 01:54:04 -05:00
Julian Lam
61b6037991 0.6.1-dev 2014-12-24 00:47:04 -05:00
barisusakli
0d223ef88d missing err 2014-12-24 00:19:47 -05:00
barisusakli
87435c1a9e return email:confirmed on admin header 2014-12-24 00:06:37 -05:00
barisusakli
ce24c6dc04 pass callback directly 2014-12-23 23:53:26 -05:00
barisusakli
4b1b98e229 handle changePicture callback properly 2014-12-23 18:09:23 -05:00
A Catty Alpaca
f0ed816edb fix generated widgets areas glitching on small screens
because columns should always be in rows
2014-12-23 23:49:15 +01:00
barisusakli
3d9e86d9b2 removed null 2014-12-23 15:06:05 -05:00
barisusakli
cd41e192d1 closes #2546 2014-12-23 15:03:31 -05:00
barisusakli
87f57b8cd3 cuz @psychobunny said so 2014-12-23 02:23:36 -05:00
barisusakli
d68c44fd0a dont sent status update if user set it offline 2014-12-23 01:37:39 -05:00
psychobunny
7c2b041633 ./nodebb reset theme - singular imo 2014-12-23 00:53:28 -05:00
barisusakli
a9e12f4174 remove unused requires 2014-12-22 21:17:26 -05:00
barisusakli
b1edc59987 fix undefined next 2014-12-22 21:12:22 -05:00
psychobunny
a5f63a5ac7 upgrade script was refusing to complete until I added this
@barisusakli fyi
2014-12-22 12:47:55 -05:00
barisusakli
9865f78cbb flat is good 2014-12-22 00:12:47 -05:00
barisusakli
768c17263c fix error messages 2014-12-21 23:32:19 -05:00
Barış Soner Uşaklı
25cb450f40 Merge pull request #2542 from gitter-badger/gitter-badge
Add a Gitter chat badge to README.md
2014-12-21 23:19:53 -05:00
The Gitter Badger
3019023d38 Added Gitter badge 2014-12-22 04:13:58 +00:00
barisusakli
936ea5f686 sync config changes over redis pubsub 2014-12-21 20:25:54 -05:00
barisusakli
2f8e6a1f2b closes #2458 2014-12-21 16:29:32 -05:00
barisusakli
2ea5f85d9b closes #2481 2014-12-21 14:36:22 -05:00
barisusakli
e6b4a45cda closes #2531 2014-12-21 14:14:46 -05:00
barisusakli
e22c13abd4 closes #2423 2014-12-21 14:07:45 -05:00
barisusakli
3bdb98e747 closes #2530 2014-12-21 00:08:01 -05:00
barisusakli
712d5bce5b show 24 hours in traffic graph 2014-12-20 20:34:46 -05:00
barisusakli
94cf29d42c show monthly page views 2014-12-20 20:05:59 -05:00
barisusakli
b07a522c60 one less query in privileges.topics.get 2014-12-20 18:34:02 -05:00
barisusakli
984b17349a closes #2476 2014-12-20 17:26:39 -05:00
barisusakli
4ce6341d85 fix acp for header changes 2014-12-20 00:42:52 -05:00
barisusakli
83312ad53a faster getTeasers 2014-12-19 23:56:51 -05:00
barisusakli
14e46a87a6 closes #2529 2014-12-19 18:58:28 -05:00
barisusakli
1424acc88e fix reconnection for socket.io 1.x 2014-12-19 18:49:56 -05:00
barisusakli
8ed06eb773 closes #2528 2014-12-19 18:31:39 -05:00
barisusakli
04084807c2 removed app.loadConfig 2014-12-19 17:19:33 -05:00
psychobunny
da7dcd99a8 #2532 renamed to "socket.io:transports"
Sample config:

"socket.io": {
"transports": ["websocket"]
}
2014-12-19 16:49:20 -05:00
barisusakli
6a8a5a9de0 use validator.escape 2014-12-18 23:43:07 -05:00
barisusakli
793a0a6772 fix mark topic notifications read on enter 2014-12-18 23:28:19 -05:00
barisusakli
2bfc33edb7 updated deps 2014-12-18 20:23:31 -05:00
barisusakli
d314b9cae2 closes #2538 2014-12-18 19:47:51 -05:00
barisusakli
d28fb153c7 closes #2537 2014-12-18 19:22:59 -05:00
barisusakli
7ec8393004 closes #2532 2014-12-17 18:18:53 -05:00
barisusakli
2423bd18eb jobs disabled is boolean, great 2014-12-17 18:09:09 -05:00
barisusakli
1a34327f9d removed unnecessary require 2014-12-16 23:55:02 -05:00
barisusakli
59545d740c only emit event:user_leave to topic rooms instead of all online users 2014-12-16 19:40:47 -05:00
barisusakli
f47550d23e closes #2533 2014-12-16 15:09:15 -05:00
barisusakli
26b2ef1543 prevent crash in getChildren 2014-12-16 14:46:02 -05:00
barisusakli
989ca19df5 added jobsDisabled flag 2014-12-15 19:07:15 -05:00
barisusakli
acf1b76da8 reconnectionAttemps in socket.io 1.0x
https://github.com/automattic/socket.io-client#managerurlstring-optsobject
2014-12-15 10:07:11 -05:00
barisusakli
76480d4d31 app.user undefined on cold load 2014-12-14 23:02:58 -05:00
barisusakli
c0c85c24cf duh strings dont work 2014-12-14 22:34:53 -05:00
barisusakli
64cc0f244d just show err.message 2014-12-14 17:45:22 -05:00
barisusakli
5bf46864ed removed global admin object, CF rocket loader fix
added colorpicker module
2014-12-13 22:14:08 -05:00
psychobunny
9e1a049fd5 Merge pull request #2526 from akhoury/patch-5
adding mid on the message returned data on addMessage
2014-12-13 10:17:09 -05:00
Aziz Khoury
100f31be81 adding mid on the message returned data on addMessage 2014-12-13 08:19:49 -05:00
barisusakli
e72ec429a2 remvoed lowered pingTimeout 2014-12-13 00:10:45 -05:00
barisusakli
e74d39889e removed extra comma 2014-12-12 23:26:01 -05:00
barisusakli
bf3f20bf8b removed extra comma 2014-12-12 23:25:16 -05:00
barisusakli
2c7d9e1a7c store teaserPid in topic
-update teaser pid as necessary in addPostToTopic, removePostFromTopic,
post purge
-removed 20x db calls from getTeasers
-fixed scroll to post in sub folder install
-upgrade script to update topics with teaserPid
2014-12-12 18:52:37 -05:00
barisusakli
0cb0dafae3 another relative_path fix 2014-12-12 16:31:54 -05:00
barisusakli
03de918f10 fix more relative path redirects 2014-12-12 16:20:24 -05:00
barisusakli
011c42bde3 updated analytics
accumulate pageviews, uniquevisitors and uniqueIps locally and update db
every 10 mins instead of on every page view
2014-12-12 16:15:13 -05:00
barisusakli
da4014eb71 dont allow move to same topic 2014-12-12 00:52:59 -05:00
barisusakli
8bba811aaf closes #2522 2014-12-12 00:45:43 -05:00
barisusakli
52a53df80d missing err check 2014-12-11 23:59:23 -05:00
barisusakli
8965855218 made breadcrumbs regular function
less db calls as well
2014-12-11 22:55:00 -05:00
barisusakli
518c6f7cfa closes #2521 2014-12-11 22:16:17 -05:00
psychobunny
e0c8989e8b closes #2519 2014-12-11 10:17:04 -05:00
psychobunny
94efa6dd87 closes #2520 2014-12-11 10:02:17 -05:00
Barış Soner Uşaklı
5f47f2226a escape topic title and category name 2014-12-11 03:09:09 -05:00
Julian Lam
3deb423c55 testing socket availability before attempting to bind 2014-12-10 19:44:27 -05:00
Julian Lam
49dcffcbab if worker process exits with code zero, don't boot up a new worker 2014-12-10 18:52:38 -05:00
Julian Lam
68e761bed0 if using sockets, reset the umask back to the old value after listening 2014-12-10 18:16:09 -05:00
Julian Lam
273e26ddb1 if a locally installed plugin not published to npm has a syntax error, this fixes it. closes #2512 2014-12-10 14:59:49 -05:00
barisusakli
9b083a6a66 half ping timeout 2014-12-10 04:07:05 -05:00
barisusakli
86bd85bba4 removed qs fix indent 2014-12-10 01:40:31 -05:00
barisusakli
646c5705cf no need to make call for guests 2014-12-10 00:43:35 -05:00
barisusakli
2e04501224 closes #2516 2014-12-09 20:48:35 -05:00
barisusakli
348d05d3d1 remove deprecated res.json usage 2014-12-09 20:07:12 -05:00
barisusakli
b63c0df8a2 fixed event name 2014-12-09 13:50:20 -05:00
barisusakli
5a79b99a7a derp 2014-12-09 12:59:49 -05:00
barisusakli
9f7196f5b0 dont crash if config is undefined, added error to plugins 2014-12-09 12:59:12 -05:00
Julian Lam
772f4c103a properly pass in error value for locally installed plugin 2014-12-09 12:11:01 -05:00
barisusakli
aeae76c28d added error false 2014-12-09 11:22:04 -05:00
Julian Lam
b565f3ac0a closed #2497 2014-12-09 10:27:05 -05:00
barisusakli
8af5102912 missing return 2014-12-08 17:50:45 -05:00
barisusakli
81a5a4cfe0 removed global var 2014-12-08 16:49:18 -05:00
barisusakli
8e8375cbba validate email password on register 2014-12-08 16:28:30 -05:00
barisusakli
8bee231d80 show validation errors on register 2014-12-08 16:11:35 -05:00
Julian Lam
b278f27ffe partial fix to #2509 2014-12-08 12:04:41 -05:00
psychobunny
e3e737458e linting 2014-12-08 10:28:21 -05:00
psychobunny
beaa52fff5 acp - if bs env < lg + content is long (ex plugins list) then duplicate sidebar menu on header + footer; closes #2510 2014-12-08 10:27:54 -05:00
barisusakli
9d78a204df missing return 2014-12-07 16:37:05 -05:00
barisusakli
5128f7d2f9 prevent crash on invalid data 2014-12-07 16:32:40 -05:00
barisusakli
6b20cf5cff #2508 2014-12-06 16:05:00 -05:00
barisusakli
5337a31eb9 #2254 sitemap topic limit 2014-12-06 00:44:58 -05:00
barisusakli
8bea0bb6e5 fix favourite infinite scroll 2014-12-05 22:22:57 -05:00
barisusakli
f2b24eb72a fix tests 2014-12-05 16:46:16 -05:00
Julian Lam
8c097357fc updated language files 2014-12-05 13:31:08 -05:00
barisusakli
79f3659e55 reconnectionDelay 2014-12-05 13:19:09 -05:00
barisusakli
99e774d196 socket.socket.disconnect doens't exist in 1.x 2014-12-05 13:15:51 -05:00
barisusakli
ef3b6a2450 closes #2498 2014-12-05 13:07:13 -05:00
barisusakli
64c0e1df61 settimeout 2014-12-04 14:29:48 -05:00
Julian Lam
389f74b615 hungarian translations 2014-12-04 13:24:11 -05:00
Julian Lam
2de108153f closed #2464 2014-12-04 00:36:24 -05:00
Julian Lam
2914c74587 allowed admin to remove skins, if set 2014-12-03 23:40:04 -05:00
barisusakli
104fc2d273 10 second timer 2014-12-03 23:16:50 -05:00
barisusakli
9e9b138afb removed unused code 2014-12-03 23:13:26 -05:00
barisusakli
e7c2bc5d5d removed unused callback 2014-12-03 23:07:00 -05:00
barisusakli
e86650a6af not used anymore 2014-12-03 23:05:33 -05:00
Julian Lam
fb6026f95f fixed issue where logging out via ACP caused CSRF error 2014-12-03 22:42:42 -05:00
Julian Lam
908f5f2fd4 fixed ACP background image on subfolder installs 2014-12-03 22:35:45 -05:00
barisusakli
080c54d414 #2434 2014-12-03 22:35:06 -05:00
barisusakli
e18ad61ff6 fix login maybe? 2014-12-03 22:29:56 -05:00
barisusakli
356f577a74 redirect to correct login 2014-12-03 22:08:25 -05:00
barisusakli
85dfedeedc removed commented out code 2014-12-03 19:43:15 -05:00
barisusakli
7ae7c50f56 app.user 2014-12-03 19:36:19 -05:00
barisusakli
22e20b961e pass all env variables to worker 2014-12-03 17:10:25 -05:00
Julian Lam
d14cd254a5 only instantiating logrotate object if silent 2014-12-03 17:06:26 -05:00
barisusakli
16f62e6502 closes #2472 2014-12-03 17:05:34 -05:00
barisusakli
7d6c81160b show 20 results for user search 2014-12-03 16:45:12 -05:00
Julian Lam
aaef0ad282 closed #2495 2014-12-03 16:18:26 -05:00
barisusakli
d62cdd5127 added support for specifying which ports to use
if no port is specified in config.json port from url will be used if no
port in url then default to 4567

port in config.json can be an array or a single port number
2014-12-03 15:46:52 -05:00
barisusakli
f67bc8d056 fix space 2014-12-03 14:17:05 -05:00
barisusakli
64e13df14c removed node cluster spawn procs on ports 2014-12-03 14:03:41 -05:00
barisusakli
3ad3e781f3 fix tests 2014-12-03 01:49:57 -05:00
barisusakli
28ed49a1d2 removed android check 2014-12-03 01:17:45 -05:00
barisusakli
2fbaed9cdf moved nconf setup to loadConfig, fixed upload_url 2014-12-03 01:10:49 -05:00
psychobunny
fc00791125 a plugin's package.json can be invalid too 2014-12-02 21:57:21 -05:00
barisusakli
5576ef0d1e upgrade script to remove fields 2014-12-02 18:06:11 -05:00
barisusakli
e49dfc7266 cleaned up loader.js 2014-12-02 17:40:48 -05:00
barisusakli
83a679fc15 fixed wrong var 2014-12-02 16:51:14 -05:00
barisusakli
7a5383748c possible fix for #2492 2014-12-02 16:49:53 -05:00
psychobunny
c0bce71984 added some failsafe checks for filter:user.isModerator 2014-12-02 16:13:29 -05:00
psychobunny
6a47aacdfd forgot description 2014-12-02 15:34:34 -05:00
psychobunny
6a9145d90e some basic moderator tests 2014-12-02 15:33:28 -05:00
barisusakli
48337e4f51 check err 2014-12-02 15:13:18 -05:00
psychobunny
113d35887c moved admin.getVoters to posts.getVoters; now getVoters modal can be accessed by moderators as well 2014-12-02 14:59:29 -05:00
psychobunny
63367bd670 *user.isModerator*, duh 2014-12-02 14:21:17 -05:00
psychobunny
673145d413 added filter:users.isModerator 2014-12-02 14:19:14 -05:00
barisusakli
a3f0f58ebe update nconf, gm deps 2014-12-02 13:31:53 -05:00
barisusakli
ae1d226218 fix group test 2014-12-02 13:27:36 -05:00
barisusakli
612aa4e55b closes #2491 2014-12-02 12:38:53 -05:00
barisusakli
09a5d92dba correct method name 2014-12-01 23:22:02 -05:00
barisusakli
9075a8d4c9 added back isAdmin into admin middleware with a warning 2014-12-01 23:07:47 -05:00
barisusakli
97d01de155 fix acp 2014-12-01 22:57:57 -05:00
barisusakli
ddd6ed9e8c #2477 403 page 2014-12-01 21:07:23 -05:00
barisusakli
be11577aa4 closes #2477 2014-12-01 20:28:36 -05:00
barisusakli
9023060008 moved category redirect up 2014-12-01 17:59:38 -05:00
psychobunny
12e00ec497 hinting 2014-12-01 16:28:16 -05:00
psychobunny
77d0b095c8 closes #2488 2014-12-01 16:27:29 -05:00
Julian Lam
aa44894db2 fixing home breadcrumb, #1984 2014-12-01 16:11:44 -05:00
barisusakli
866adab648 removed console.log 2014-12-01 16:09:01 -05:00
Julian Lam
04dbd5766d latest language strings 2014-12-01 15:31:27 -05:00
Julian Lam
66bbbfcd22 fixed url being overwritten 2014-12-01 15:25:37 -05:00
Julian Lam
420649d3bd no longer setting sourcemap header for minifiedjs 2014-12-01 15:01:49 -05:00
barisusakli
d544b19220 set path on socket.io server 2014-12-01 14:59:12 -05:00
barisusakli
3a0b92a0e4 fix path for socket.io subfolder install 2014-12-01 14:52:21 -05:00
barisusakli
14a2db4b2e fix workerIndex for ipv6 2014-12-01 14:45:32 -05:00
Julian Lam
d16cfb89e0 extra log, #2246 2014-12-01 14:22:53 -05:00
Julian Lam
5cc30ca1a0 more cache hash fixes 2014-12-01 14:21:03 -05:00
Julian Lam
2e24224449 passing css hash to other workers on startup 2014-12-01 14:19:14 -05:00
Julian Lam
82708d65c6 propagating hash to all workers on css compilation 2014-12-01 14:05:20 -05:00
barisusakli
46e022e97f closes #2483 2014-12-01 13:24:13 -05:00
barisusakli
647b15c7ef Merge remote-tracking branch 'origin/master' into socket.io1.x 2014-12-01 12:46:39 -05:00
barisusakli
7332ba9c25 fix loader for new config.json format 2014-12-01 12:36:59 -05:00
psychobunny
6fe093324a moved signature length setting out of settings/user and into settings/post; created new sub section for signatures 2014-12-01 12:25:05 -05:00
psychobunny
63a5002b53 closes #2441 2014-12-01 12:23:31 -05:00
psychobunny
92addc349b signatures:disableLinks and signatures:disableImages config options 2014-12-01 12:23:30 -05:00
barisusakli
957800b2c3 Merge remote-tracking branch 'origin/master' into socket.io1.x 2014-12-01 12:13:50 -05:00
Julian Lam
f00a3dbf49 minor fix to upgrade script 2014-12-01 12:03:42 -05:00
Julian Lam
604f883ac2 closed #2478 2014-11-30 23:53:35 -05:00
Julian Lam
1378e1155f fixed #2479 2014-11-30 23:44:15 -05:00
Julian Lam
682ba8fb1a upping vanilla and lavender minvers 2014-11-30 23:40:15 -05:00
Julian Lam
110fd863e4 fixing breadcrumbs for subfolder installs, #2122 2014-11-30 23:38:18 -05:00
Julian Lam
78763834fe closed #2122 2014-11-30 21:15:09 -05:00
Julian Lam
c120f5c2c6 travis CI again 2014-11-30 17:05:00 -05:00
Julian Lam
a0860abaaa no need to set bcrypt_rounds, only used in one place. 2014-11-30 16:49:53 -05:00
Julian Lam
598049e077 travis CI fixes again 2014-11-30 16:48:36 -05:00
Julian Lam
21fe3f2596 hopefully fixing travis CI 2014-11-30 16:30:25 -05:00
barisusakli
62609b2db6 Merge remote-tracking branch 'origin/master' into socket.io1.x 2014-11-30 15:38:43 -05:00
Julian Lam
7f43fd4843 bugfix #1984 2014-11-30 15:36:57 -05:00
barisusakli
1db2a447d7 Merge remote-tracking branch 'origin/master' into socket.io1.x 2014-11-30 15:36:42 -05:00
barisusakli
48ee8c1370 check err in tests 2014-11-30 15:36:17 -05:00
barisusakli
7f81a0b0ad Merge remote-tracking branch 'origin/master' into socket.io1.x 2014-11-30 12:53:37 -05:00
barisusakli
51c520f888 closes #2480 2014-11-30 12:52:16 -05:00
barisusakli
3b8e31c31f Merge remote-tracking branch 'origin/master' into socket.io1.x 2014-11-30 02:02:48 -05:00
barisusakli
f531a5362d #2254 proper fix 2014-11-30 02:02:32 -05:00
barisusakli
1723894e5a merge 2014-11-30 01:50:49 -05:00
barisusakli
fb3251c269 removed extra db call #2254 2014-11-30 01:44:46 -05:00
Julian Lam
03b106b03a final pass, #1984 2014-11-29 23:38:36 -05:00
Julian Lam
d430ef3983 second pass, #1984 2014-11-29 22:03:49 -05:00
Julian Lam
d5e473609c first pass, #1984 2014-11-29 21:54:58 -05:00
Julian Lam
dfbac595b6 refactors to sitemap, closed #2254 2014-11-29 21:18:02 -05:00
Julian Lam
9b0ba6c7a4 closed #2384 2014-11-29 20:50:14 -05:00
barisusakli
722d1497c3 Merge remote-tracking branch 'origin/master' into socket.io1.x 2014-11-29 12:35:31 -05:00
barisusakli
083ba12ee0 check err in emailer 2014-11-29 12:35:04 -05:00
barisusakli
142536b659 Merge remote-tracking branch 'origin/master' into socket.io1.x 2014-11-29 12:13:14 -05:00
barisusakli
83ab462ff5 module changes, fixed missing interval 2014-11-29 12:12:02 -05:00
barisusakli
510343b9d5 dont markAsRead for guests 2014-11-29 02:07:19 -05:00
barisusakli
e7a52b615b remove user from users:online on delete 2014-11-28 21:46:50 -05:00
barisusakli
392be78554 fix whitespace 2014-11-28 21:43:44 -05:00
barisusakli
0a2d543186 removed getUserSockets 2014-11-28 21:35:34 -05:00
barisusakli
fa92eb4d5c onDisconnect fix 2014-11-28 21:04:12 -05:00
barisusakli
4913866785 missing semicolon 2014-11-28 20:36:11 -05:00
barisusakli
0c5881b51f update online users regardless of status 2014-11-28 20:31:47 -05:00
barisusakli
17d7916fe9 check if worker exists 2014-11-28 20:00:41 -05:00
barisusakli
cbb3ff26e9 meta room count 2014-11-28 19:41:35 -05:00
barisusakli
1ffa498807 use shortcut 2014-11-28 19:40:47 -05:00
barisusakli
3a172711f4 socket.io index refactor 2014-11-28 19:33:07 -05:00
barisusakli
14a5de6d9d not used 2014-11-28 19:08:02 -05:00
barisusakli
f7c70e2a7a update all socket methods, works on single node 2014-11-28 19:06:07 -05:00
barisusakli
13609edf82 fix reqFromSocket for socket.io 1.x 2014-11-28 17:46:00 -05:00
barisusakli
2c89d50322 Merge remote-tracking branch 'origin/master' into socket.io1.x 2014-11-28 16:00:36 -05:00
barisusakli
f9405c0423 closes #2440 2014-11-28 15:49:16 -05:00
barisusakli
6760ce00cc removed unused msgs 2014-11-28 15:03:33 -05:00
barisusakli
49a73e1665 Merge remote-tracking branch 'origin/master' into socket.io1.x 2014-11-28 14:36:01 -05:00
barisusakli
c213f77f91 merge 2014-11-28 14:35:21 -05:00
Barış Soner Uşaklı
b8845181f6 missing now :( 2014-11-28 14:34:51 -05:00
Barış Soner Uşaklı
4d4f39a44f added missing db 2014-11-28 14:34:21 -05:00
Barış Soner Uşaklı
126f3182fd fix next 2014-11-28 14:30:43 -05:00
barisusakli
5ac5d20e4b users:online refactor 2014-11-28 14:25:11 -05:00
Julian Lam
1ce3c9ca2d no longer logging warnings for socket.io 2014-11-28 13:44:46 -05:00
Julian Lam
7ad242b981 using redis for user online list management if configured 2014-11-28 12:34:19 -05:00
Julian Lam
e952a873a8 moving onlineUsers from an in-memory variable to a sorted set 2014-11-28 11:50:29 -05:00
barisusakli
1abe35092b cluster socket.io fixes
close proxy server on loader.stop
changed handles to object
2014-11-27 15:36:05 -05:00
barisusakli
785790c414 moved handle close to fork worker 2014-11-27 14:09:01 -05:00
barisusakli
5521e6143f Merge remote-tracking branch 'origin/master' into socket.io1.x 2014-11-26 22:31:14 -05:00
barisusakli
033e078aeb closes #2436 2014-11-26 22:30:21 -05:00
barisusakli
0674258793 Merge remote-tracking branch 'origin/master' into socket.io1.x 2014-11-26 22:11:31 -05:00
barisusakli
c12d90ddfb closes #2457 2014-11-26 22:10:38 -05:00
Julian Lam
8de2d1f58d closed #2459 2014-11-26 21:30:24 -05:00
barisusakli
2ecfcc582f Merge remote-tracking branch 'origin/master' into socket.io1.x 2014-11-26 17:31:26 -05:00
barisusakli
d1fcb50c7d cluster sticky session 2014-11-26 17:24:49 -05:00
Julian Lam
b7c4647e9a added Bengali language to repo, তোমাকে ধন্যবাদ! 2014-11-26 13:37:12 -05:00
Julian Lam
8ca6d51d8d latest translations 2014-11-26 13:35:07 -05:00
Julian Lam
e97d5b2e0e closed #2456 2014-11-26 13:31:03 -05:00
Julian Lam
23b14b3443 moving nearly all startup messages to verbose type 2014-11-26 13:28:10 -05:00
barisusakli
99e0a02b4c Merge remote-tracking branch 'origin/master' into socket.io1.x 2014-11-25 23:21:36 -05:00
barisusakli
ab2580cc5f fix human readable post count in topics 2014-11-25 23:20:29 -05:00
barisusakli
b6bd955131 Merge remote-tracking branch 'origin/master' into socket.io1.x 2014-11-25 23:09:28 -05:00
barisusakli
51436fd2d9 check privs on composer.push 2014-11-25 23:08:28 -05:00
barisusakli
4bed05a622 disable stuff that crashes in socket.io 1.x 2014-11-25 15:18:33 -05:00
barisusakli
396dffd60f Merge remote-tracking branch 'origin/master' into socket.io1.x 2014-11-25 11:53:07 -05:00
barisusakli
916f1c7ce1 fix debug path on relative path install 2014-11-25 11:35:10 -05:00
barisusakli
08b0462695 Merge remote-tracking branch 'origin/master' into socket.io1.x 2014-11-24 22:05:34 -05:00
barisusakli
a69eafd9f7 added postcount to topic 2014-11-24 21:45:18 -05:00
psychobunny
0202666ed0 taking a break with an almost completely pointless commit 2014-11-24 20:09:23 -05:00
barisusakli
7cbaa90d36 update to socket.io 1.2.1, return_buffers option 2014-11-24 13:44:59 -05:00
barisusakli
04175c92d9 Merge remote-tracking branch 'origin/master' into socket.io1.x 2014-11-24 13:29:23 -05:00
barisusakli
80d7ae597b closes #2451 2014-11-24 13:28:48 -05:00
Julian Lam
a31525c79f Skipping digest sending if no notifs and no new topics, #2455 2014-11-24 13:22:10 -05:00
Julian Lam
1b526026a0 closed #2442 2014-11-24 12:48:21 -05:00
Julian Lam
1c21ca78dc preventing ctrl-f hijacking if no search plugin is installed 2014-11-24 12:38:44 -05:00
Julian Lam
fa39b5e46b closed #2446 2014-11-24 12:20:28 -05:00
Julian Lam
f5fce863f9 plugin warnings for v0.5.4+ when installing plugins with no suggested version, #2438 2014-11-23 17:02:25 -05:00
Julian Lam
ba9a5ad7d7 fixed #2448 2014-11-23 15:53:42 -05:00
barisusakli
6b23977a46 Merge remote-tracking branch 'origin/master' into socket.io1.x 2014-11-23 00:32:58 -05:00
barisusakli
7daf3a34a7 removed slice 2014-11-23 00:32:31 -05:00
barisusakli
1ea295ed1b #2449 2014-11-23 00:31:37 -05:00
barisusakli
e1758e0c36 closes #2449 2014-11-23 00:30:19 -05:00
barisusakli
9ea10ba8ec Merge remote-tracking branch 'origin/master' into socket.io1.x 2014-11-21 12:28:39 -05:00
Barış Soner Uşaklı
bea1d053b4 closes #2443, closes #2445 2014-11-21 12:28:25 -05:00
barisusakli
552c56f3d1 Merge remote-tracking branch 'origin/master' into socket.io1.x 2014-11-21 11:44:35 -05:00
Barış Soner Uşaklı
2086ddf386 closes #2444 2014-11-21 11:44:06 -05:00
Julian Lam
354268bccd latest translations for french 2014-11-21 09:05:44 -05:00
barisusakli
fba0e95aeb Merge remote-tracking branch 'origin/master' into socket.io1.x 2014-11-20 19:25:07 -05:00
Barış Soner Uşaklı
6581c90475 forgot one 2014-11-20 19:24:23 -05:00
barisusakli
7e6f29e007 Merge remote-tracking branch 'origin/master' into socket.io1.x 2014-11-20 19:15:39 -05:00
Barış Soner Uşaklı
7b14716eb8 use data.url 2014-11-20 19:15:10 -05:00
barisusakli
702b1554fb Merge remote-tracking branch 'origin/master' into socket.io1.x 2014-11-20 19:02:47 -05:00
barisusakli
73fb653ddf emit works 2014-11-20 19:02:29 -05:00
psychobunny
c905f96108 closes #2412 2014-11-20 17:50:09 -05:00
Julian Lam
0b58e2fea3 minor tweaks to in-topic searching UI, #2442 2014-11-20 17:02:09 -05:00
barisusakli
82d863b9c8 deps, disabled all server side calls 2014-11-20 16:51:11 -05:00
Julian Lam
259f0f96f1 Merge pull request #2433 from bendem/patch-1
Fix nodeBB address in a few places
2014-11-20 16:38:36 -05:00
barisusakli
347e37a224 show warning and errors for socket.io also show info in dev 2014-11-20 15:53:23 -05:00
psychobunny
8d8731c609 closes #2436 2014-11-20 13:41:09 -05:00
psychobunny
35be69d6cd closes #2439 2014-11-20 13:22:45 -05:00
Julian Lam
3ad509b93a fixed #2434 2014-11-20 13:22:27 -05:00
barisusakli
fdf06c0500 fix upgrade script #2435 2014-11-20 12:42:55 -05:00
Julian Lam
fe7726d249 fixed #2431 2014-11-20 10:30:53 -05:00
bendem
0f4fcd8e0b fix nodeBB adresses 2014-11-20 12:08:53 +01:00
barisusakli
9cd352c49a removed extra space 2014-11-20 00:10:08 -05:00
barisusakli
d177481f94 chop chop 2014-11-19 23:37:55 -05:00
barisusakli
6012223b81 show message name, fix template name overwrite 2014-11-19 22:41:16 -05:00
psychobunny
9eb8924bf2 cleanup 2014-11-19 17:48:43 -05:00
barisusakli
9c1216eb63 closes #2432 2014-11-19 15:55:01 -05:00
barisusakli
d5453efdac added current template name to return 2014-11-19 14:14:35 -05:00
barisusakli
15c2b124e3 recent replies needs stripTags true
changed [self] to _
2014-11-19 14:13:00 -05:00
Julian Lam
6eef866320 closed #2429 2014-11-19 12:19:08 -05:00
Julian Lam
067d1ae404 adding client-side hook whenever composer renders a preview 2014-11-19 11:56:03 -05:00
barisusakli
21459fff84 use getPostsFromSet for recent replies 2014-11-19 11:02:28 -05:00
barisusakli
04afe7dc4b closes #2425 2014-11-19 10:38:47 -05:00
Julian Lam
e0fba796c7 Merge pull request #2426 from Schamper/image-upload-socket-fix
Fix the hook return object in the User.uploadProfileImageFromUrl socket
2014-11-19 08:29:17 -05:00
Julian Lam
7183187be8 latest translations 2014-11-19 08:20:10 -05:00
MrWaffle
969c3a77cf Fix the hook return object in the User.uploadProfileImageFromUrl socket 2014-11-19 13:45:12 +01:00
barisusakli
b919d2ee77 shorther 2014-11-18 23:31:17 -05:00
barisusakli
4be8f3ec75 closes #2316 2014-11-18 23:27:40 -05:00
barisusakli
0bb5971915 disconnect on error too 2014-11-18 23:23:35 -05:00
barisusakli
a445e3f7b1 use send for child process 2014-11-18 22:55:44 -05:00
barisusakli
871cf8a3b7 shorter getTeasers 2014-11-18 22:19:17 -05:00
Julian Lam
5292a47a96 fixed maintenance mode page not working with new CSRF implementation, #2424 2014-11-18 15:51:09 -05:00
barisusakli
b665aeee83 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2014-11-18 15:50:35 -05:00
barisusakli
81e4bcd358 fix rename to multi 2014-11-18 15:50:32 -05:00
Julian Lam
b06ff89e02 adding missing file, re: #2424 2014-11-18 15:22:26 -05:00
Julian Lam
deac12c540 closed #2424 2014-11-18 14:56:22 -05:00
barisusakli
4f38a33702 fix pagination going to 404 if new post creates a new page 2014-11-18 14:49:48 -05:00
barisusakli
10680d47b0 postCount only used once 2014-11-18 14:34:21 -05:00
barisusakli
d0bc5ec9c7 client/topics.js refactor
ability to dismiss all flags
2014-11-18 14:33:14 -05:00
barisusakli
78033dbf5c handled in events.js 2014-11-18 00:12:43 -05:00
barisusakli
d7c367ae91 moved new notification to events.js 2014-11-18 00:10:42 -05:00
barisusakli
7f5984d1fd removed dupe code 2014-11-17 23:57:31 -05:00
barisusakli
c974256600 missing radix 2014-11-17 23:41:45 -05:00
barisusakli
671ec8532c fix unfavourite 2014-11-17 23:32:39 -05:00
barisusakli
47c1092842 moved registerLoader/refresh to top 2014-11-17 23:12:45 -05:00
barisusakli
776fb29dce removed preloader leftovers 2014-11-17 23:08:50 -05:00
barisusakli
3d93a76508 removed command param made unvote wrapper 2014-11-17 21:45:52 -05:00
psychobunny
8c98f47688 action:post.upvote / action:post.downvote now sends current status; new: action:post.unvote 2014-11-17 19:24:41 -05:00
Julian Lam
0d6be40238 fixed #2406 2014-11-17 14:47:51 -05:00
barisusakli
14ba1ff8c0 closes #2352 2014-11-17 14:22:29 -05:00
Julian Lam
ae1528dc7e closed #2407 2014-11-17 14:07:34 -05:00
Julian Lam
2d79169855 latest fallbacks 2014-11-17 14:01:07 -05:00
Julian Lam
d51683f62e closed #2421 2014-11-17 13:37:13 -05:00
Julian Lam
2e2995d3bd updating dailyDigestFreq to 'day' instead of 'daily' 2014-11-17 13:37:13 -05:00
Julian Lam
c7396f58cd verbose logging for email 2014-11-17 13:37:13 -05:00
barisusakli
ee3b0c93c3 fix tag update
was hanging on tag remove, and wasnt updating if tag count didnt change
2014-11-17 13:37:00 -05:00
barisusakli
0864480433 forgot return 2014-11-17 12:45:30 -05:00
barisusakli
cb8ce066c8 give guests find read access on category creation 2014-11-17 12:39:07 -05:00
barisusakli
8b573bff39 send 10 topics in digest not 11 2014-11-17 12:32:29 -05:00
barisusakli
9791dfb9ea closes #2420 2014-11-17 12:21:51 -05:00
Julian Lam
23485fcbf3 missed one invocation of old LESS library, #2419 2014-11-17 11:31:11 -05:00
Julian Lam
207bfa8960 closed #2419 2014-11-17 11:26:03 -05:00
barisusakli
0a1fa72bd8 use loadMoreFromSet 2014-11-16 18:31:57 -05:00
barisusakli
32e08ba419 closes #2070 2014-11-16 17:29:45 -05:00
barisusakli
807d4b7e2e update template.js dep 2014-11-16 16:51:14 -05:00
barisusakli
114d0506e1 fixed typo 2014-11-16 16:46:40 -05:00
barisusakli
f0797493ee make sure sockets leave the current room when entering another 2014-11-16 16:37:31 -05:00
barisusakli
8e114c2093 moved isAdminOrMod check out of getTopicsByTids 2014-11-16 16:15:49 -05:00
barisusakli
a75727bbbd duh 2014-11-16 01:56:42 -05:00
barisusakli
653850661e topics.getTopics doesnt take set param 2014-11-16 01:33:11 -05:00
barisusakli
79265b9e83 removed dupe code 2014-11-16 00:58:02 -05:00
barisusakli
c1b61522f7 check if topic is deleted 2014-11-16 00:09:43 -05:00
barisusakli
c458a7f7b2 missing nconf require 2014-11-16 00:01:20 -05:00
barisusakli
9852809c2c cleanup 2014-11-15 23:54:34 -05:00
barisusakli
1d2d69fa45 use helpers, redis crash fix 2014-11-15 23:44:34 -05:00
barisusakli
556e7066e8 moved notFound notAllowed to helpers 2014-11-15 23:22:57 -05:00
barisusakli
f8cfd82667 less code in uploadimage 2014-11-15 22:50:05 -05:00
barisusakli
0a44d3f5e0 moved updateCategoryField out, db.delete only sends back err 2014-11-15 22:41:45 -05:00
barisusakli
d485b65b67 call next 2014-11-15 21:52:05 -05:00
barisusakli
9ab74b0a61 added ability to take heap snapshots 2014-11-15 19:09:44 -05:00
barisusakli
7825b8b951 closes #2416 2014-11-15 16:12:06 -05:00
psychobunny
2a88e08977 and one last derp 2014-11-15 14:57:32 -05:00
psychobunny
556d817cc5 forgot to return 2014-11-15 14:56:34 -05:00
psychobunny
458ee7cca8 acute ocd attack 2014-11-15 14:56:04 -05:00
psychobunny
bfaeee2531 linting 2014-11-15 14:48:23 -05:00
psychobunny
b511bc37fb don't initialize taskbar until dom is ready 2014-11-15 14:47:31 -05:00
barisusakli
9d56f50967 voters info 2014-11-15 12:37:22 -05:00
barisusakli
8330a6e6d9 added plugin reset info as well #2415 2014-11-14 22:18:24 -05:00
barisusakli
76933f4c37 closes #2415 2014-11-14 22:14:55 -05:00
barisusakli
30d7f3351b cid isnt always present 2014-11-14 22:07:24 -05:00
Barış Soner Uşaklı
36ac6f849f Merge pull request #2397 from joe1chen/bug-fix-topic-search
Bug fix - Topic search broken due to encodeURIComponent being called too early
2014-11-14 21:51:39 -05:00
barisusakli
02fb81901d moved posts related stuff to user/posts.js 2014-11-14 21:47:24 -05:00
barisusakli
d9a071d710 removed unused code from category and topic controller 2014-11-14 21:16:35 -05:00
barisusakli
cd05a123ab check cids 2014-11-14 20:43:52 -05:00
barisusakli
52c12fa1b1 use wrapper functions getPostsFields and getTopicsFields 2014-11-14 20:19:14 -05:00
Julian Lam
9a606246a9 more fallbacks 2014-11-14 20:02:04 -05:00
Julian Lam
d0770bcb95 latest translations and fallbacks 2014-11-14 20:00:07 -05:00
barisusakli
6b13a84d2f removed extra priv checks
-removed category check from recentreplies since pids are already
checked
-removed category check from topics/unread.js since topics are filtered
now
-added array checks to src/topics.js
2014-11-14 19:52:25 -05:00
barisusakli
5c7487c13b err check 2014-11-14 19:38:51 -05:00
barisusakli
283ac1578f fix null datetime error 2014-11-14 18:33:10 -05:00
barisusakli
f3309e3dd4 renamed to local registration
closes https://github.com/NodeBB/nodebb-theme-vanilla/issues/36
2014-11-14 18:11:21 -05:00
barisusakli
545dbbf0df check err and tids 2014-11-14 18:03:19 -05:00
Julian Lam
b65d518a97 properly handling error for hook filter:privileges.posts.filter 2014-11-14 17:53:20 -05:00
Julian Lam
9debfd94ec removed the hook I just added: filter:category.recent, was a bit misleading. 2014-11-14 17:42:33 -05:00
Julian Lam
20ea40133b added four new hooks: filter:categories.recent, filter:privileges.categories.get, filter:privileges.posts.filter, filter:privileges.topics.filter 2014-11-14 17:31:44 -05:00
psychobunny
b480bff3fd moved taskbar markup out of JS and into modules/taskbar.tpl 2014-11-14 17:15:57 -05:00
barisusakli
cd19bf156c update bcryptjs and validator 2014-11-14 17:14:44 -05:00
barisusakli
6ce1415cd4 update db search version 2014-11-14 17:13:18 -05:00
barisusakli
9ff35a18f2 closes #2261 2014-11-14 17:03:13 -05:00
psychobunny
1e453140d9 adding uid to filter:category.topics.get 2014-11-14 16:34:34 -05:00
psychobunny
abe887f557 filter:category.topics.get 2014-11-14 16:29:59 -05:00
psychobunny
c988f54243 renaming filter:category.topics.get to filter:category.topics.prepare 2014-11-14 16:28:59 -05:00
barisusakli
485827db84 check count before privileges 2014-11-14 16:22:05 -05:00
barisusakli
6a3a3669d2 check privs on getRecentReplies and getRecentTopicReplies 2014-11-14 16:20:40 -05:00
psychobunny
c7ca2e2573 fixing time derp if minutes are singular 2014-11-14 16:16:06 -05:00
barisusakli
b4daae9b23 closes #2307 2014-11-14 16:02:35 -05:00
psychobunny
3aa18ebb12 no need to inform attempt to listen to address 2014-11-14 15:40:08 -05:00
barisusakli
5c3af6f549 removed webserver.init 2014-11-14 15:31:45 -05:00
barisusakli
363057cf49 closes #2390 2014-11-14 15:19:26 -05:00
barisusakli
d1b457b066 check err 2014-11-14 14:09:29 -05:00
barisusakli
519b1b7e37 closes #2377 2014-11-14 13:36:37 -05:00
barisusakli
a1624013f8 closes #2400 2014-11-14 12:17:28 -05:00
Julian Lam
95e3c6f8a4 Merge pull request #2410 from joe1chen/add-topics-loaded-event
Add topics.loaded event to be triggered when new topics are loaded by infinite scroll.
2014-11-14 12:13:59 -05:00
barisusakli
05a4737e84 closes #2409 2014-11-14 11:32:56 -05:00
Joseph Chen
4f03e74b99 Add topics.loaded event to be triggered when new topics are loaded by infinite scroll. 2014-11-14 06:24:38 -08:00
barisusakli
61863a69fe sendfile is deprecated 2014-11-13 17:04:08 -05:00
psychobunny
2990b33dc6 linting 2014-11-13 16:47:38 -05:00
barisusakli
d9d44aee2b #2334 2014-11-13 16:33:03 -05:00
barisusakli
c24e451c12 closes #2401 2014-11-13 16:03:11 -05:00
barisusakli
181e2b4132 check err 2014-11-13 15:49:43 -05:00
barisusakli
e6973b55d4 closes #1990 2014-11-13 15:47:25 -05:00
barisusakli
962d14746e trim tag after substr
this prevents spaces in the middle of the tag from being added to the db
2014-11-13 15:02:20 -05:00
barisusakli
a45858dacd previous commit doesnt show unusud tags in admin 2014-11-13 14:36:44 -05:00
barisusakli
68e8039ac7 closes #2379
also fixed a bug where tags with 0 topics were showing up in /tags
2014-11-13 14:29:48 -05:00
psychobunny
45affa3043 closes #2399 2014-11-13 14:04:29 -05:00
psychobunny
a8402b228c updating winston timestamp 2014-11-13 13:52:52 -05:00
barisusakli
b3544f644a relative path upload fixes #2403 2014-11-13 13:00:36 -05:00
barisusakli
7f5617bc74 closes #2402 2014-11-13 11:44:26 -05:00
barisusakli
14fdb9ebee reverted 2014-11-13 11:37:42 -05:00
barisusakli
6809af536c removed winston log in plugin fireHook 2014-11-13 11:31:30 -05:00
barisusakli
4c7a4d3688 fix topicIndex, 2014-11-12 18:00:34 -05:00
barisusakli
05f33df098 manage/groups.js 2014-11-12 16:56:11 -05:00
barisusakli
bd388f727c src/favourites.js 2014-11-12 16:40:06 -05:00
barisusakli
9a16a359a8 auth refactor 2014-11-12 16:15:44 -05:00
barisusakli
fc0dce429b topic.reply checks with invalid parameters 2014-11-12 15:06:55 -05:00
barisusakli
834ca016ec topics.reply test 2014-11-12 14:34:06 -05:00
Julian Lam
c0fc7e9ca4 updating privilege handling to fire two new hooks, filter:privileges.topics.get and filter:category.topics.get 2014-11-12 14:33:25 -05:00
barisusakli
eada3daf9f fixed recent and unread 2014-11-12 14:11:04 -05:00
Julian Lam
6ea10aa7e3 ensuring that the filter:category.get hook always sends data in the same format 2014-11-12 11:07:11 -05:00
Julian Lam
7e35987e1b fixing regression for #2355, introduced in a129075 2014-11-12 10:58:46 -05:00
Julian Lam
c2467de9c2 added Greek language to NodeBB, Γεια σας και καλώς ήρθατε! 2014-11-12 08:29:08 -05:00
Julian Lam
872dd679e2 latest translations and fallbacks 2014-11-12 08:29:08 -05:00
Joseph Chen
f02fd88eaf Bug fix - Topic search broken due to encodeURIComponent being called too early. 2014-11-11 22:51:16 -08:00
barisusakli
964d531582 fix test really 2014-11-12 01:22:50 -05:00
barisusakli
385e034a23 fix tests 2014-11-12 01:19:40 -05:00
barisusakli
7a51520074 #2393 2014-11-12 00:24:25 -05:00
barisusakli
4e23fe7c3a more topic post tests 2014-11-11 23:12:37 -05:00
barisusakli
3029b19be6 fix test 2014-11-11 23:03:20 -05:00
barisusakli
15e472db12 on category creation give defaults privs to admins and registered users 2014-11-11 22:58:34 -05:00
barisusakli
2579d2535d closes #2396 2014-11-11 20:10:51 -05:00
barisusakli
fa5ac04cd3 src/topics.js cleanup 2014-11-11 19:47:56 -05:00
barisusakli
c9f990bb72 derp 2014-11-11 19:22:54 -05:00
barisusakli
7225c0d45b finish up posts refactor 2014-11-11 18:55:49 -05:00
Julian Lam
54ee8e59f6 showing proper time for newbie post delay 2014-11-11 18:38:31 -05:00
barisusakli
d2cddc734b fix flagging and post filter
cant flag posts that don't exist anymore
2014-11-11 18:34:29 -05:00
barisusakli
11dc477dde posts/categories.js 2014-11-11 18:22:50 -05:00
barisusakli
e593c8e6b1 setFields makes more sense 2014-11-11 18:14:45 -05:00
barisusakli
fa95012fa3 action:set,postField 2014-11-11 18:13:15 -05:00
barisusakli
1413478a68 ill get it right this year 2014-11-11 18:08:50 -05:00
barisusakli
003535b3ab filter:post.getFields again 2014-11-11 18:08:03 -05:00
barisusakli
383fa4d0ea filter:post.getFields change 2014-11-11 18:05:42 -05:00
barisusakli
604dac88e3 closes #2382, closes #2130 2014-11-11 17:25:16 -05:00
psychobunny
70b5c631c6 if dev, compile view scripts only; let rjs dynamically load module scripts
fixes a bug introduced @ 11c83079f2
2014-11-11 13:53:32 -05:00
psychobunny
9726e599e4 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2014-11-11 13:30:59 -05:00
psychobunny
1b9297fa31 until now, this variable was never false... so I'm just removing it
@julianlam just in case
2014-11-11 13:30:55 -05:00
psychobunny
02b6a7893a in dev mode, concatenate scripts instead of minifying
faster reboot & restores sanity to those trying to debug browser
specific issues on IE and FF. not that you have much sanity to begin
with if it's an IE bug...
2014-11-11 13:30:16 -05:00
Julian Lam
286d14f614 allowing use of winston.verbose now 2014-11-11 13:18:46 -05:00
psychobunny
11c83079f2 if env is dev, don't re-compile rjs files
faster reboot & easier to debug on browsers that don't support
sourcemaps
2014-11-11 13:12:09 -05:00
psychobunny
8de978fbcf lmao, wtf?
my brain just exploded trying to figure out what this is doing here
2014-11-11 13:07:54 -05:00
psychobunny
d5d686b701 Merge pull request #2392 from a5mith/patch-3
ACP Text Colour
2014-11-11 12:13:50 -05:00
Aaron Smith
f2b0068b32 ACP Text Colour
Replaces my other commit.
2014-11-11 17:05:36 +00:00
psychobunny
db157da3fb fixes potential IE8 crash (both toISOString and console.log don't exist)
not that client-side calls this anyways
2014-11-11 11:44:49 -05:00
psychobunny
0580773331 random console.log 2014-11-11 11:38:29 -05:00
psychobunny
d69054804e closes #2391 2014-11-11 11:37:32 -05:00
Julian Lam
73dea4fc4e upvote and favourites notif fixing 2014-11-11 09:41:28 -05:00
Julian Lam
f9f1cf63cf fixing topic deletion and purging 2014-11-10 16:52:45 -05:00
Julian Lam
5281c8c376 Merge pull request #2381 from akhoury/patch-3
could you explicitly specify the last 4 rules?
2014-11-10 14:13:29 -05:00
Aziz Khoury
535529923c why leave json files out? 2014-11-10 13:26:07 -05:00
Aziz Khoury
a17ecefd20 could you explicitly specify the last 4 rules?
I put in some values in there, as placeholders, feel free to change them, and I will follow
so we can have a standard, and developers can choose to have the same across plugins as well
2014-11-10 13:16:48 -05:00
Julian Lam
c7e731f4c4 Merge branch 'master' of github.com:NodeBB/NodeBB 2014-11-10 12:42:56 -05:00
Julian Lam
b2625a1bf0 upping spam-be-gone minver 2014-11-10 12:42:44 -05:00
psychobunny
91103fb09e updating widget-essentials to 0.2.0 ** 2014-11-10 12:02:03 -05:00
psychobunny
121fb88008 updating widget-essentials to 0.1.2 2014-11-10 11:53:08 -05:00
psychobunny
aa6137b9c3 fixed potential XSS in registration form 2014-11-10 11:46:15 -05:00
barisusakli
c18de5cdd2 posts/recent.js refactor 2014-11-09 01:30:27 -05:00
barisusakli
ef35b83806 use getPostsFields 2014-11-09 01:24:12 -05:00
barisusakli
263f479b20 posts.js refactor pt1 2014-11-09 01:12:24 -05:00
barisusakli
39def60f9b return empty array 2014-11-09 00:45:18 -05:00
barisusakli
420aa5e102 fix moderators 2014-11-09 00:33:26 -05:00
barisusakli
8294aec5e7 fixed indent 2014-11-09 00:01:46 -05:00
barisusakli
8fdc03eaad categories.js refactor 2014-11-08 23:54:21 -05:00
barisusakli
daebc322eb meh 2014-11-08 23:36:38 -05:00
barisusakli
7823416410 err check, assignPostsToCategory is sync 2014-11-08 23:22:10 -05:00
barisusakli
af4cbfb20d closes #2368 2014-11-08 18:40:38 -05:00
barisusakli
d2735c8558 closes #2370 2014-11-08 17:38:03 -05:00
barisusakli
3f12d363f7 plugins fireHook refactor
(drunk)
2014-11-08 17:12:38 -05:00
barisusakli
e93b2b6aa1 removed action:app.load 2014-11-08 16:15:24 -05:00
barisusakli
41ae8b61a7 static:app.load change closes #1527 2014-11-08 15:20:56 -05:00
barisusakli
220c82a8f2 filter:register.complete change #1527 2014-11-08 15:01:56 -05:00
barisusakli
76c16c0383 filter:register.check change #1527 2014-11-08 14:57:04 -05:00
barisusakli
166f353aaa filter:register.build change #1527 2014-11-08 14:51:05 -05:00
barisusakli
8be9e6d413 action:user.verify change #1527 2014-11-08 14:41:49 -05:00
barisusakli
9363741231 action:user.set change #1527 2014-11-08 14:38:56 -05:00
barisusakli
2e1a098cfa fix multi selection if category has sub categories 2014-11-08 14:35:51 -05:00
barisusakli
db979d7a20 filter:category.get change #1527 2014-11-08 14:21:58 -05:00
Julian Lam
f3ea8d1cff closed #2367 2014-11-08 10:22:31 -05:00
Julian Lam
74630b3a79 closed #2360 2014-11-08 10:20:40 -05:00
barisusakli
c56b9aafff closes #2289, replace Infinity with '+inf' 2014-11-07 19:40:41 -05:00
barisusakli
dcba272dc5 fix not validated messages on manage/users on IS 2014-11-07 19:25:57 -05:00
barisusakli
5f8781c88e 1 less db call in togglePin 2014-11-07 19:15:26 -05:00
barisusakli
467fb1ab4a dont deselect on delete/purge closes #2352 2014-11-07 18:48:57 -05:00
Julian Lam
93f414892b closed #2361 2014-11-07 18:38:03 -05:00
Julian Lam
e0436d73c3 #2361 2014-11-07 18:22:27 -05:00
barisusakli
c95f151bfc closes #2364
dont crash if icon is not found
2014-11-07 18:13:08 -05:00
barisusakli
69ed00fc14 added mainPid to topic restore/edit hooks 2014-11-07 17:50:16 -05:00
barisusakli
642136f6f8 closes #2357 2014-11-07 17:46:03 -05:00
barisusakli
b60ed95d20 Merge remote-tracking branch 'origin/master' 2014-11-07 17:15:06 -05:00
barisusakli
1ae39d638a closes #2356 2014-11-07 17:15:01 -05:00
Julian Lam
f0b104fef0 possible fix to #2365 2014-11-07 17:05:25 -05:00
psychobunny
d77bd638c4 don't re-enable selectable on elements that were already enabled #2336 2014-11-07 16:16:32 -05:00
psychobunny
6ae5b09a01 closes #2336 2014-11-07 16:09:47 -05:00
Julian Lam
52285239e9 fixed client-side so semver doesn't explode when nbbpm returns 'latest', fixed tests so they pass again, #2363 2014-11-07 15:04:07 -05:00
Julian Lam
19297e2d22 plugin installation takes a version now, and queries nbbpm, #2363
better error handling for #2363

upgrades now also call the suggestion route from nbbpm

upgrade button will show alert now if you try to upgrade past the suggested version, #2363
2014-11-07 14:45:40 -05:00
Julian Lam
0f66077bf5 fixed issue where purged posts would cause the upgrader to fail, closed #2359 2014-11-07 10:50:25 -05:00
Barış Soner Uşaklı
b6ee472276 Merge pull request #2358 from joe1chen/0.6.x-fix-file-upload
Bug fix - File upload broken due to api changes in 0.6.x.
2014-11-06 22:08:24 -05:00
Joseph Chen
cd41df5677 Pass in req.user.uid into uploadFile 2014-11-06 19:03:53 -08:00
Joseph Chen
a1e54fda23 Bug fix - File upload broken due to api changes in 0.6.x. 2014-11-06 17:33:58 -08:00
Julian Lam
11c9b74faf upgrade script for #2355, closes #2355 2014-11-06 18:58:00 -05:00
Julian Lam
a12907512f refactored a bunch of methods so that you can pass in an author argument in querystring to see posts by just that author, #2355 2014-11-06 18:57:52 -05:00
barisusakli
3272ca34ee 0.6.0 cleanup 2014-11-06 17:33:10 -05:00
barisusakli
4440260f8f closes #2275 2014-11-06 17:06:58 -05:00
barisusakli
1004fb2822 closes #2354 2014-11-06 16:29:14 -05:00
barisusakli
72bb74cf46 canMessage 2014-11-06 12:57:59 -05:00
psychobunny
fa2f03aeca closes #2339 2014-11-06 00:53:18 -05:00
psychobunny
2e4198b8f1 removing unnecessary markup 2014-11-06 00:53:17 -05:00
barisusakli
f3d485bd58 filter:user.account 2014-11-06 00:29:06 -05:00
barisusakli
719290cd2b dont display email/fullname if they are private 2014-11-05 23:58:49 -05:00
Julian Lam
97633fe01e updating markdown and mentions minvers 2014-11-05 23:46:05 -05:00
psychobunny
6452596312 if sigs are disabled, actually disable them 2014-11-05 23:32:57 -05:00
barisusakli
9e1789dc58 closes #2297 2014-11-05 20:41:31 -05:00
barisusakli
39b679705b closes #2248 2014-11-05 19:29:45 -05:00
barisusakli
595ff1f4b1 closes #2303
see
https://community.nodebb.org/topic/3039/filter-post-parse-and-filter-post-parsesignature-changes
2014-11-05 18:59:20 -05:00
barisusakli
a6e498bb5d error check 2014-11-05 16:48:12 -05:00
Barış Soner Uşaklı
b89b960f86 Merge pull request #2328 from dwendt/master
Made hiding widgets for guests/registered sensible.
2014-11-05 16:44:54 -05:00
barisusakli
608943255b better check 2014-11-05 16:42:32 -05:00
barisusakli
ec0624918f possible fix for #2351 2014-11-05 13:35:15 -05:00
barisusakli
e5cc45a95b if category is not found return
if cid is a child category it wont be on home
2014-11-04 23:55:42 -05:00
barisusakli
70657251b9 no need for return 2014-11-04 23:30:11 -05:00
Julian Lam
44175188c4 handling case where user does not satisfy any of the privilege thresholds given to the hasEnoughReputationFor method 2014-11-04 23:19:28 -05:00
barisusakli
06f66337fb anon checks
less db calls for uid 0
2014-11-04 19:06:01 -05:00
Julian Lam
0a38a783c7 TravisCI is TOO DAMN FAST 2014-11-04 18:59:26 -05:00
Julian Lam
8e0e2a04be restored the toolbar on mobile composer, #2293 2014-11-04 18:54:48 -05:00
barisusakli
37d7756271 hasEnoughRep can take an array
user follow uid checks
2014-11-04 18:44:08 -05:00
Julian Lam
9a8fa35d8d flushing db after every test group that touches the db 2014-11-04 18:39:25 -05:00
Julian Lam
4125a087b5 closed #2349, removed use of deprecated -d flag in executable 2014-11-04 18:33:20 -05:00
Julian Lam
783481e644 Support for reloading nodebb via the nodebb executable 2014-11-04 18:33:20 -05:00
barisusakli
df4b555717 less db calls
no db call for settings if uid 0
no db call for isFollowing if uid 0
2014-11-04 18:31:21 -05:00
barisusakli
b7dcc29638 log error path as well 2014-11-04 18:06:11 -05:00
barisusakli
cdfaa941b1 error checks missing return 2014-11-04 17:57:31 -05:00
barisusakli
04c83dbdcc update deprecated sendfile 2014-11-04 17:34:05 -05:00
Julian Lam
dfc7c7aa7f #2350 :shipit: 2014-11-04 17:28:24 -05:00
Julian Lam
0e9fdc9a09 fixed #2350 -- chat modal now opens, but input is disabled 2014-11-04 17:23:39 -05:00
barisusakli
e09328c74d #2346
dont bring modal to front if u receive a message
2014-11-04 17:03:31 -05:00
barisusakli
38874345b7 closes #2346 2014-11-04 16:49:02 -05:00
barisusakli
e769ebe668 closes #2347 2014-11-04 15:56:33 -05:00
barisusakli
dd135b875b #2347
dont show flag on deleted posts
dont allow flag on deleted posts
dont allow upvote downvote favourite on deleted posts
2014-11-04 15:19:30 -05:00
barisusakli
268ecd5157 single call to get slug and postcount 2014-11-04 14:54:30 -05:00
barisusakli
f21b313848 reload/restart notices side by side 2014-11-04 13:55:20 -05:00
Julian Lam
ac2cc8cae6 updating development versioning for master branch 2014-11-03 16:48:45 -05:00
barisusakli
5f3f4ef74e closes #2266 2014-11-03 15:37:25 -05:00
barisusakli
d492339841 closes #2315 2014-11-03 15:31:41 -05:00
barisusakli
7bfc36ff56 dont call isAdmin if not logged in 2014-11-03 15:09:24 -05:00
barisusakli
209edf182f 404 pages that are out of range 2014-11-01 17:55:42 -04:00
Barış Soner Uşaklı
80d04e2de5 Merge pull request #2343 from datagutt/patch-1
Update translator mapping for norwegian
2014-11-01 17:46:24 -04:00
barisusakli
9440f8f8cd #2344 2014-11-01 17:32:56 -04:00
barisusakli
84b7a2c92d checks in socket.io/user
reset doesnt need socket
2014-11-01 16:55:50 -04:00
barisusakli
8e84e47578 if a user is deleted remove from banned sorted set as well 2014-11-01 15:11:47 -04:00
barisusakli
fd70ba5647 fix titles on ajaxify 2014-11-01 15:08:12 -04:00
Thomas Lekanger
e0975b85df Update translator mapping for norwegian 2014-11-01 18:46:58 +01:00
barisusakli
f83dd956eb check if post exists on up/down vote favourite 2014-10-31 22:27:50 -04:00
barisusakli
fcc42883ab some checks for purge 2014-10-31 22:04:09 -04:00
barisusakli
d43e8beb60 fix acp topic graph disappearing
clear usedColors on ajaxify, once it was filling up the graph was never
updating after ajaxify
2014-10-31 20:30:07 -04:00
barisusakli
56d16d1792 fix topic titles in search results
titles were being escaped twice if two or more posts were from the same
topic
2014-10-31 19:57:32 -04:00
barisusakli
7c7be2e0c1 closes #2337 2014-10-31 19:21:37 -04:00
barisusakli
6353ed57a9 duh fixing my fail from last night 2014-10-31 17:44:06 -04:00
barisusakli
1fe82ee452 added 2 new methods to dbal
getSortedSetRangeWithScores
getSortedSetRangeByScoreWithScores
2014-10-31 17:19:55 -04:00
Julian Lam
c44068db52 latest translations and fallbacks 2014-10-31 17:12:21 -04:00
Julian Lam
a7bc05aeb6 less formal language for #2335 2014-10-31 17:07:32 -04:00
Julian Lam
a7d028e29b bundling spam-be-gone with all nodebb install, ping @akhoury, closes #2332 2014-10-31 14:54:17 -04:00
Julian Lam
ec309333be closed #2335 2014-10-31 13:31:25 -04:00
Julian Lam
de0da80040 Merge branch 'master' of github.com:NodeBB/NodeBB 2014-10-31 13:25:30 -04:00
Julian Lam
b91d39a0d3 almost everything for #2335 2014-10-31 13:22:42 -04:00
heart
c38ca146c7 Made hiding widgets for guests/registered sensible. 2014-10-31 02:10:40 -04:00
psychobunny
0a1b31e6bc small change to gitignore re: logs 2014-10-31 01:56:45 -04:00
barisusakli
fb1095fc28 added allowed true to /chats 2014-10-31 01:50:24 -04:00
psychobunny
de8c1ece14 adding to contributing.md 2014-10-31 00:48:29 -04:00
barisusakli
e97bfc139b #1848 2014-10-30 23:14:33 -04:00
barisusakli
0ede4abe18 possible fix for #1848 2014-10-30 22:47:15 -04:00
barisusakli
0bb0424998 bubble error 2014-10-30 22:19:11 -04:00
barisusakli
e93398b647 use currentTime when someone up/down votes 2014-10-30 19:37:22 -04:00
Julian Lam
61aaff025b adding in 'allowed' to template, re: #2321 2014-10-30 18:05:48 -04:00
barisusakli
b12e3562d5 hide category icons if they are not set 2014-10-30 18:04:49 -04:00
Julian Lam
adfb89a2ad closed #2321 2014-10-30 17:50:27 -04:00
Julian Lam
28f87cc776 added tests for messaging method .canMessage 2014-10-30 17:50:27 -04:00
Julian Lam
a992638ef3 removed level from testmock error msg 2014-10-30 17:50:27 -04:00
barisusakli
41d806f67f removed unused language string 2014-10-30 16:52:09 -04:00
barisusakli
433769eb36 closes #2146
first tab (recent) shows last 50 messages instead of just last 24 hours
2014-10-30 16:51:15 -04:00
barisusakli
121de11400 closes #2323 2014-10-30 14:21:44 -04:00
psychobunny
ca87bc1577 Merge pull request #2320 from lpeachl/patch-1
Update language.json
2014-10-30 09:26:28 -04:00
lpeachl
9b481b23f3 Update language.json 2014-10-30 19:31:20 +07:00
psychobunny
50b264ac7d prevent deleted users belonging to a group from breaking edit functionality 2014-10-29 21:07:46 -04:00
psychobunny
4d4dc344a6 temporary fix until remarkable is updated in markdown plugin
https://github.com/jonschlinkert/remarkable/issues/88#issuecomment-60885589
2014-10-29 21:07:45 -04:00
psychobunny
2c555687e7 removed old copy from when we used to have ubuntu instructions on the main page 2014-10-29 01:55:26 -04:00
barisusakli
189eaf2bea escape output 2014-10-29 00:47:16 -04:00
barisusakli
fbd478812e fail modeon 2014-10-29 00:33:09 -04:00
barisusakli
1b268c94c0 if there is no postData.tid dont notify, ie topic post 2014-10-29 00:10:57 -04:00
barisusakli
cbedc762fd no rooms.enter for anons check tid on topic enter 2014-10-28 23:56:33 -04:00
barisusakli
0fba1e37a7 no need for double trim :P 2014-10-28 18:41:34 -04:00
barisusakli
5be1c17aa7 refactor user.create
dont fire filter:user.create if there userData is invalid
2014-10-28 18:28:26 -04:00
barisusakli
bce96d04c7 forkWorker function, pipe new worker output to log 2014-10-28 16:33:14 -04:00
barisusakli
4c8287251a added stderr piping to output 2014-10-28 16:12:05 -04:00
barisusakli
50a06f9369 log signal as well 2014-10-28 15:48:03 -04:00
barisusakli
f19bc2e2be removed error.log everything will go to output.log 2014-10-28 15:30:52 -04:00
barisusakli
20314991a4 tmp error check 2014-10-28 00:33:58 -04:00
barisusakli
a4533703d4 fix sort by vote insertion 2014-10-28 00:17:28 -04:00
barisusakli
c5ba327d8f fix empty pages 2014-10-27 23:20:40 -04:00
barisusakli
b12476c422 if a post is purged, remove it from flagged posts as well 2014-10-27 21:44:15 -04:00
barisusakli
1bcdae41b8 make images in manage/flags responsive 2014-10-27 21:28:46 -04:00
barisusakli
9e77960ee1 #2308 check if latest is greater by semver 2014-10-27 20:35:03 -04:00
psychobunny
25c7dfbc12 fix crash if socket.handshake is null 2014-10-27 20:23:16 -04:00
779 changed files with 23230 additions and 11591 deletions

View File

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

4
.gitignore vendored
View File

@@ -17,9 +17,7 @@ provision.sh
.DS_Store .DS_Store
feeds/recent.rss feeds/recent.rss
# winston? logs/
error.log
events.log
pidfile pidfile

View File

@@ -1,8 +1,14 @@
services: services:
- redis-server - redis-server
before_install: before_install:
- "sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10"
- "echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list"
- "sudo apt-get update"
- "sudo apt-get install mongodb-org-server"
- npm i --production - npm i --production
- node app --setup="{\"base_url\":\"http://127.0.0.1\",\"port\":4567,\"use_port\":false,\"secret\":\"abcdef\",\"bind_address\":\"0.0.0.0\",\"database\":\"redis\",\"redis:host\":\"127.0.0.1\",\"redis:port\":6379,\"redis:password\":\"\",\"redis:database\":0,\"admin:username\":\"admin\",\"admin:email\":\"test@example.org\",\"admin:password\":\"abcdef\",\"admin:password:confirm\":\"abcdef\"}" --ci="{\"host\":\"127.0.0.1\",\"port\":6379,\"database\":0}" - node app --setup="{\"url\":\"http://127.0.0.1:4567/\",\"secret\":\"abcdef\",\"database\":\"mongo\",\"mongo:host\":\"127.0.0.1\",\"mongo:port\":27017,\"mongo:username\":\"\",\"mongo:password\":\"\",\"mongo:database\":0,\"redis:host\":\"127.0.0.1\",\"redis:port\":6379,\"redis:password\":\"\",\"redis:database\":0,\"admin:username\":\"admin\",\"admin:email\":\"test@example.org\",\"admin:password\":\"abcdef\",\"admin:password:confirm\":\"abcdef\"}" --ci="{\"host\":\"127.0.0.1\",\"port\":27017,\"database\":0}"
before_script:
- "until nc -z localhost 27017; do echo Waiting for MongoDB; sleep 1; done"
language: node_js language: node_js
node_js: node_js:
- "0.11" - "0.11"

View File

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

View File

@@ -1,3 +1,19 @@
# Submitting a Pull Request to NodeBB?
First of all, thank you! Please consider this [style guide](https://docs.nodebb.org/en/latest/contributing/style-guide.html) when submitting your changes. Also, please join our [community](https://community.nodebb.org) to meet other NodeBB developers and designers :)
## Contributor License Agreement
Thank you for considering contributing to NodeBB. **Before we can accept any pull requests, please take a moment to read and sign our [license agreement](https://www.clahub.com/agreements/NodeBB/NodeBB)**. In summary, signing this document means that 1) you own the code that you are contributing and 2) you give permission to NodeBB Inc. to license the code to others. This agreement applies to any repository under the NodeBB organization.
If you are writing contributions as part of employment from another company / individual, then your employer will need to sign a separate agreement. Please [contact us](mailto:accounts@nodebb.org) so that we can send this additional agreement to your employer.
# Having problems installing NodeBB?
Chances are somebody has run into this problem before. After consulting our [documentation](https://docs.nodebb.org/en/latest/installing/os.html), please head over to our [community support forum](https://community.nodebb.org) for advice.
# Issues & Bugs # Issues & Bugs
Thanks for reporting an issue with NodeBB! Please follow these guidelines in order to streamline the debugging process. The more guidelines you follow, the easier it will be for us to reproduce your problem. Thanks for reporting an issue with NodeBB! Please follow these guidelines in order to streamline the debugging process. The more guidelines you follow, the easier it will be for us to reproduce your problem.

View File

@@ -1,15 +1,19 @@
# <img alt="NodeBB" src="http://i.imgur.com/mYxPPtB.png" /> # <img alt="NodeBB" src="http://i.imgur.com/mYxPPtB.png" />
[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/NodeBB/NodeBB?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![Build Status](https://travis-ci.org/NodeBB/NodeBB.svg?branch=master)](https://travis-ci.org/NodeBB/NodeBB) [![Build Status](https://travis-ci.org/NodeBB/NodeBB.svg?branch=master)](https://travis-ci.org/NodeBB/NodeBB)
[![Dependency Status](https://david-dm.org/nodebb/nodebb.svg)](https://david-dm.org/nodebb/nodebb) [![Dependency Status](https://david-dm.org/nodebb/nodebb.svg)](https://david-dm.org/nodebb/nodebb)
[![Code Climate](https://codeclimate.com/github/NodeBB/NodeBB/badges/gpa.svg)](https://codeclimate.com/github/NodeBB/NodeBB) [![Code Climate](https://codeclimate.com/github/NodeBB/NodeBB/badges/gpa.svg)](https://codeclimate.com/github/NodeBB/NodeBB)
[![Documentation Status](https://readthedocs.org/projects/nodebb/badge/?version=latest)](https://readthedocs.org/projects/nodebb/?badge=latest) [![Documentation Status](https://readthedocs.org/projects/nodebb/badge/?version=latest)](https://readthedocs.org/projects/nodebb/?badge=latest)
**NodeBB Forum Software** is powered by Node.js and built on a Redis database. It utilizes web sockets for instant interactions and real-time notifications. NodeBB is compatible down to IE8 and has many modern features out of the box such as social network integration and streaming discussions. **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.
* [Get NodeBB](http://www.nodebb.org/ "NodeBB") * [Get NodeBB](http://www.nodebb.org/ "NodeBB")
* [Demo & Meta Discussion](http://community.nodebb.org) * [Demo & Meta Discussion](http://community.nodebb.org)
* [NodeBB Blog](http://blog.nodebb.org) * [NodeBB Blog](http://blog.nodebb.org)
* [Documentation](http://docs.nodebb.org) - includes setup instructions for other platforms * [Documentation & Installation Instructions](http://docs.nodebb.org)
* [Join us on IRC](https://kiwiirc.com/client/irc.freenode.net/nodebb) - #nodebb on Freenode * [Join us on IRC](https://kiwiirc.com/client/irc.freenode.net/nodebb) - #nodebb on Freenode
* [Follow us on Twitter](http://www.twitter.com/NodeBB/ "NodeBB Twitter") * [Follow us on Twitter](http://www.twitter.com/NodeBB/ "NodeBB Twitter")
* [Like us on Facebook](http://www.facebook.com/NodeBB/ "NodeBB Facebook") * [Like us on Facebook](http://www.facebook.com/NodeBB/ "NodeBB Facebook")

108
app.js
View File

@@ -25,10 +25,11 @@ nconf.argv().env();
var fs = require('fs'), var fs = require('fs'),
os = require('os'), os = require('os'),
url = require('url'),
async = require('async'),
semver = require('semver'), semver = require('semver'),
winston = require('winston'), winston = require('winston'),
path = require('path'), path = require('path'),
cluster = require('cluster'),
pkg = require('./package.json'), pkg = require('./package.json'),
utils = require('./public/src/utils.js'); utils = require('./public/src/utils.js');
@@ -38,19 +39,13 @@ 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: true timestamp: function() {
var date = new Date();
return date.getDate() + '/' + (date.getMonth() + 1) + ' ' + date.toTimeString().substr(0,5) + ' [' + global.process.pid + ']';
},
level: global.env === 'production' ? 'info' : 'verbose'
}); });
winston.add(winston.transports.File, {
filename: 'logs/error.log',
level: 'error'
});
// TODO: remove once https://github.com/flatiron/winston/issues/280 is fixed
winston.err = function (err) {
winston.error(err.stack);
};
if(os.platform() === 'linux') { if(os.platform() === 'linux') {
require('child_process').exec('/usr/bin/which convert', function(err, stdout, stderr) { require('child_process').exec('/usr/bin/which convert', function(err, stdout, stderr) {
if(err || !stdout) { if(err || !stdout) {
@@ -59,7 +54,7 @@ if(os.platform() === 'linux') {
}); });
} }
if (!cluster.isWorker) { 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' + pkg.version + ' Copyright (C) 2013-2014 NodeBB Inc.'); winston.info('NodeBB v' + pkg.version + ' Copyright (C) 2013-2014 NodeBB Inc.');
winston.info('This program comes with ABSOLUTELY NO WARRANTY.'); winston.info('This program comes with ABSOLUTELY NO WARRANTY.');
@@ -94,10 +89,14 @@ function loadConfig() {
nconf.defaults({ nconf.defaults({
base_dir: __dirname, base_dir: __dirname,
themes_path: path.join(__dirname, 'node_modules'), themes_path: path.join(__dirname, 'node_modules'),
upload_url: '/uploads/',
views_dir: path.join(__dirname, 'public/templates') views_dir: path.join(__dirname, 'public/templates')
}); });
if (!nconf.get('isCluster')) {
nconf.set('isPrimary', 'true');
nconf.set('isCluster', 'false');
}
// Ensure themes_path is a full filepath // Ensure themes_path is a full filepath
nconf.set('themes_path', path.resolve(__dirname, nconf.get('themes_path'))); nconf.set('themes_path', path.resolve(__dirname, nconf.get('themes_path')));
nconf.set('core_templates_path', path.join(__dirname, 'src/views')); nconf.set('core_templates_path', path.join(__dirname, 'src/views'));
@@ -107,20 +106,33 @@ function loadConfig() {
function start() { function start() {
loadConfig(); loadConfig();
if (!cluster.isWorker || process.env.cluster_setup === 'true') { // nconf defaults, if not set in config
winston.info('Time: ' + new Date()); if (!nconf.get('upload_path')) {
winston.info('Initializing NodeBB v' + pkg.version); nconf.set('upload_path', '/public/uploads');
winston.info('* using configuration stored in: ' + configFile);
} }
// Parse out the relative_url and other goodies from the configured URL
var urlObject = url.parse(nconf.get('url'));
var relativePath = urlObject.pathname !== '/' ? urlObject.pathname : '';
nconf.set('use_port', !!urlObject.port);
nconf.set('relative_path', relativePath);
nconf.set('port', urlObject.port || nconf.get('port') || nconf.get('PORT') || 4567);
nconf.set('upload_url', relativePath + '/uploads/');
if (nconf.get('isPrimary') === 'true') {
winston.info('Time: %s', (new Date()).toString());
winston.info('Initializing NodeBB v%s', pkg.version);
winston.verbose('* using configuration stored in: %s', configFile);
if (cluster.isWorker && process.env.cluster_setup === 'true') {
var host = nconf.get(nconf.get('database') + ':host'), var host = nconf.get(nconf.get('database') + ':host'),
storeLocation = host ? 'at ' + host + (host.indexOf('/') === -1 ? ':' + nconf.get(nconf.get('database') + ':port') : '') : ''; storeLocation = host ? 'at ' + host + (host.indexOf('/') === -1 ? ':' + nconf.get(nconf.get('database') + ':port') : '') : '';
winston.info('* using ' + nconf.get('database') +' store ' + storeLocation); winston.verbose('* using %s store %s', nconf.get('database'), storeLocation);
winston.info('* using themes stored in: ' + nconf.get('themes_path')); winston.verbose('* using themes stored in: %s', nconf.get('themes_path'));
} }
var webserver = require('./src/webserver');
require('./src/database').init(function(err) { require('./src/database').init(function(err) {
if (err) { if (err) {
winston.error(err.stack); winston.error(err.stack);
@@ -129,7 +141,6 @@ function start() {
var meta = require('./src/meta'); var meta = require('./src/meta');
meta.configs.init(function () { meta.configs.init(function () {
var templates = require('templates.js'), var templates = require('templates.js'),
webserver = require('./src/webserver'),
sockets = require('./src/socket.io'), sockets = require('./src/socket.io'),
plugins = require('./src/plugins'), plugins = require('./src/plugins'),
upgrade = require('./src/upgrade'); upgrade = require('./src/upgrade');
@@ -138,18 +149,30 @@ function start() {
upgrade.check(function(schema_ok) { upgrade.check(function(schema_ok) {
if (schema_ok || nconf.get('check-schema') === false) { if (schema_ok || nconf.get('check-schema') === false) {
webserver.init();
sockets.init(webserver.server); sockets.init(webserver.server);
nconf.set('url', nconf.get('base_url') + (nconf.get('use_port') ? ':' + nconf.get('port') : '') + nconf.get('relative_path')); if (nconf.get('isPrimary') === 'true' && !nconf.get('jobsDisabled')) {
require('./src/notifications').init();
require('./src/user').startJobs();
}
plugins.ready(function() { async.waterfall([
webserver.init(function() { async.apply(meta.themes.setupPaths),
webserver.listen(function() { async.apply(plugins.ready),
async.apply(meta.templates.compile),
async.apply(webserver.listen)
], function(err) {
if (err) {
winston.error(err.stack);
process.exit();
}
if (process.send) {
process.send({ process.send({
action: 'ready' action: 'ready'
}); });
}); }
});
}); });
process.on('SIGTERM', shutdown); process.on('SIGTERM', shutdown);
@@ -163,12 +186,14 @@ function start() {
case 'js-propagate': case 'js-propagate':
meta.js.cache = message.cache; meta.js.cache = message.cache;
meta.js.map = message.map; meta.js.map = message.map;
winston.info('[cluster] Client-side javascript and mapping propagated to worker ' + cluster.worker.id); meta.js.hash = message.hash;
winston.verbose('[cluster] Client-side javascript and mapping propagated to worker %s', process.pid);
break; break;
case 'css-propagate': case 'css-propagate':
meta.css.cache = message.cache; meta.css.cache = message.cache;
meta.css.acpCache = message.acpCache; meta.css.acpCache = message.acpCache;
winston.info('[cluster] Stylesheets propagated to worker ' + cluster.worker.id); meta.css.hash = message.hash;
winston.verbose('[cluster] Stylesheets propagated to worker %s', process.pid);
break; break;
} }
}); });
@@ -183,12 +208,8 @@ function start() {
} else { } else {
winston.warn('Your NodeBB schema is out-of-date. Please run the following command to bring your dataset up to spec:'); winston.warn('Your NodeBB schema is out-of-date. Please run the following command to bring your dataset up to spec:');
winston.warn(' ./nodebb upgrade'); winston.warn(' ./nodebb upgrade');
if (cluster.isWorker) {
cluster.worker.kill();
} else {
process.exit(); process.exit();
} }
}
}); });
}); });
}); });
@@ -243,7 +264,7 @@ function reset() {
process.exit(); process.exit();
} }
if (nconf.get('themes')) { if (nconf.get('theme')) {
resetThemes(); resetThemes();
} else if (nconf.get('plugin')) { } else if (nconf.get('plugin')) {
resetPlugin(nconf.get('plugin')); resetPlugin(nconf.get('plugin'));
@@ -258,12 +279,16 @@ function reset() {
if (!err) { if (!err) {
winston.info('[reset] Reset complete.'); winston.info('[reset] Reset complete.');
} else { } else {
winston.error('[reset] Errors were encountered while resetting your forum settings: ' + err.message); winston.error('[reset] Errors were encountered while resetting your forum settings: %s', err.message);
} }
process.exit(); process.exit();
}); });
} else { } else {
winston.warn('[reset] Nothing reset.'); winston.warn('[reset] Nothing reset.');
winston.info('Use ./nodebb reset {theme|plugins|widgets|settings|all}');
winston.info(' or');
winston.info('Use ./nodebb reset plugin="nodebb-plugin-pluginName"');
process.exit();
} }
}); });
} }
@@ -298,16 +323,11 @@ function resetThemes(callback) {
function resetPlugin(pluginId) { function resetPlugin(pluginId) {
var db = require('./src/database'); var db = require('./src/database');
db.setRemove('plugins:active', pluginId, function(err, result) { db.setRemove('plugins:active', pluginId, function(err) {
if (err || result !== 1) {
winston.error('[reset] Could not disable plugin: ' + pluginId);
if (err) { if (err) {
winston.error('[reset] Encountered error: ' + err.message); winston.error('[reset] Could not disable plugin: %s encountered error %s', pluginId, err.message);
} else { } else {
winston.info('[reset] Perhaps it has already been disabled?'); winston.info('[reset] Plugin `%s` disabled', pluginId);
}
} else {
winston.info('[reset] Plugin `' + pluginId + '` disabled');
} }
process.exit(); process.exit();

View File

@@ -2,28 +2,42 @@
'use strict'; 'use strict';
var bcrypt = require('bcryptjs'), var bcrypt = require('bcryptjs'),
async = require('async'), async = require('async');
action = process.argv[2];
switch(action) {
case 'compare': process.on('message', function(msg) {
bcrypt.compare(process.argv[3], process.argv[4], function(err, res) { if (msg.type === 'hash') {
process.stdout.write(res ? 'true' : 'false'); hashPassword(msg.password, msg.rounds);
} else if (msg.type === 'compare') {
compare(msg.password, msg.hash);
}
}); });
break;
case 'hash': function hashPassword(password, rounds) {
async.waterfall([ async.waterfall([
async.apply(bcrypt.genSalt, parseInt(process.argv[3], 10)), function(next) {
bcrypt.genSalt(parseInt(rounds, 10), next);
},
function(salt, next) { function(salt, next) {
bcrypt.hash(process.argv[4], salt, next); bcrypt.hash(password, salt, next);
} }
], function(err, hash) { ], function(err, hash) {
if (!err) { if (err) {
process.stdout.write(hash); process.send({err: err.message});
} else { return process.disconnect();
process.stderr.write(err.message);
} }
process.send({result: hash});
process.disconnect();
});
}
function compare(password, hash) {
bcrypt.compare(password, hash, function(err, res) {
if (err) {
process.send({err: err.message});
return process.disconnect();
}
process.send({result: res});
process.disconnect();
}); });
break;
} }

View File

@@ -15,10 +15,22 @@
"field": "initialPostDelay", "field": "initialPostDelay",
"value": 10 "value": 10
}, },
{
"field": "newbiePostDelay",
"value": 120
},
{
"field": "newbiePostDelayThreshold",
"value": 3
},
{ {
"field": "minimumPostLength", "field": "minimumPostLength",
"value": 8 "value": 8
}, },
{
"field": "maximumPostLength",
"value": 32767
},
{ {
"field": "allowGuestSearching", "field": "allowGuestSearching",
"value": 0 "value": 0

289
loader.js
View File

@@ -1,9 +1,11 @@
"use strict"; 'use strict';
var nconf = require('nconf'), var nconf = require('nconf'),
fs = require('fs'), fs = require('fs'),
url = require('url'),
path = require('path'), path = require('path'),
cluster = require('cluster'), fork = require('child_process').fork,
async = require('async'), async = require('async'),
logrotate = require('logrotate-stream'), logrotate = require('logrotate-stream'),
@@ -11,12 +13,12 @@ var nconf = require('nconf'),
pidFilePath = __dirname + '/pidfile', pidFilePath = __dirname + '/pidfile',
output = logrotate({ file: __dirname + '/logs/output.log', size: '1m', keep: 3, compress: true }), output = logrotate({ file: __dirname + '/logs/output.log', size: '1m', keep: 3, compress: true }),
silent = process.env.NODE_ENV !== 'development' ? true : false, silent = process.env.NODE_ENV !== 'development',
numProcs, numProcs,
workers = [],
Loader = { Loader = {
timesStarted: 0, timesStarted: 0,
shutdown_queue: [],
js: { js: {
cache: undefined, cache: undefined,
map: undefined map: undefined
@@ -28,12 +30,6 @@ var nconf = require('nconf'),
}; };
Loader.init = function(callback) { Loader.init = function(callback) {
cluster.setupMaster({
exec: "app.js",
silent: silent
});
Loader.primaryWorker = 1;
if (silent) { if (silent) {
console.log = function(value) { console.log = function(value) {
output.write(value + '\n'); output.write(value + '\n');
@@ -41,6 +37,8 @@ Loader.init = function(callback) {
} }
process.on('SIGHUP', Loader.restart); process.on('SIGHUP', Loader.restart);
process.on('SIGUSR2', Loader.reload);
process.on('SIGTERM', Loader.stop);
callback(); callback();
}; };
@@ -54,98 +52,9 @@ Loader.displayStartupMessages = function(callback) {
callback(); callback();
}; };
Loader.addClusterEvents = function(callback) { Loader.addWorkerEvents = function(worker) {
cluster.on('fork', function(worker) {
worker.on('message', function(message) {
if (message && typeof message === 'object' && message.action) {
var otherWorkers;
switch (message.action) { worker.on('exit', function(code, signal) {
case 'ready':
if (Loader.js.cache) {
worker.send({
action: 'js-propagate',
cache: Loader.js.cache,
map: Loader.js.map
});
}
if (Loader.css.cache) {
worker.send({
action: 'css-propagate',
cache: Loader.css.cache,
acpCache: Loader.css.acpCache
});
}
// Kill an instance in the shutdown queue
var workerToKill = Loader.shutdown_queue.pop();
if (workerToKill) {
cluster.workers[workerToKill].kill();
}
break;
case 'restart':
console.log('[cluster] Restarting...');
Loader.restart(function(err) {
console.log('[cluster] Restarting...');
});
break;
case 'reload':
console.log('[cluster] Reloading...');
Loader.reload();
break;
case 'js-propagate':
Loader.js.cache = message.cache;
Loader.js.map = message.map;
otherWorkers = Object.keys(cluster.workers).filter(function(worker_id) {
return parseInt(worker_id, 10) !== parseInt(worker.id, 10);
});
otherWorkers.forEach(function(worker_id) {
cluster.workers[worker_id].send({
action: 'js-propagate',
cache: message.cache,
map: message.map
});
});
break;
case 'css-propagate':
Loader.css.cache = message.cache;
Loader.css.acpCache = message.acpCache;
otherWorkers = Object.keys(cluster.workers).filter(function(worker_id) {
return parseInt(worker_id, 10) !== parseInt(worker.id, 10);
});
otherWorkers.forEach(function(worker_id) {
cluster.workers[worker_id].send({
action: 'css-propagate',
cache: message.cache,
acpCache: message.acpCache
});
});
break;
case 'listening':
if (message.primary) {
Loader.primaryWorker = parseInt(worker.id, 10);
}
break;
case 'user:connect':
case 'user:disconnect':
case 'config:update':
Loader.notifyWorkers(message);
break;
}
}
});
});
cluster.on('listening', function(worker) {
console.log('[cluster] Child Process (' + worker.process.pid + ') listening for connections.');
});
cluster.on('exit', function(worker, code, signal) {
if (code !== 0) { if (code !== 0) {
if (Loader.timesStarted < numProcs*3) { if (Loader.timesStarted < numProcs*3) {
Loader.timesStarted++; Loader.timesStarted++;
@@ -154,81 +63,177 @@ Loader.addClusterEvents = function(callback) {
} }
Loader.crashTimer = setTimeout(function() { Loader.crashTimer = setTimeout(function() {
Loader.timesStarted = 0; Loader.timesStarted = 0;
}); }, 10000);
} else { } else {
console.log(numProcs*3 + ' restarts in 10 seconds, most likely an error on startup. Halting.'); console.log(numProcs*3 + ' restarts in 10 seconds, most likely an error on startup. Halting.');
process.exit(); process.exit();
} }
} }
console.log('[cluster] Child Process (' + worker.process.pid + ') has exited (code: ' + code + ')'); console.log('[cluster] Child Process (' + worker.pid + ') has exited (code: ' + code + ', signal: ' + signal +')');
if (!worker.suicide) { if (!(worker.suicide || code === 0)) {
console.log('[cluster] Spinning up another process...'); console.log('[cluster] Spinning up another process...');
var wasPrimary = parseInt(worker.id, 10) === Loader.primaryWorker; forkWorker(worker.index, worker.isPrimary);
cluster.fork({
handle_jobs: wasPrimary
});
} }
}); });
cluster.on('disconnect', function(worker) { worker.on('message', function(message) {
console.log('[cluster] Child Process (' + worker.process.pid + ') has disconnected'); if (message && typeof message === 'object' && message.action) {
switch (message.action) {
case 'ready':
if (Loader.js.cache) {
worker.send({
action: 'js-propagate',
cache: Loader.js.cache,
map: Loader.js.map,
hash: Loader.js.hash
}); });
callback();
} }
Loader.start = function(callback) { if (Loader.css.cache) {
var output = logrotate({ file: __dirname + '/logs/output.log', size: '1m', keep: 3, compress: true }), worker.send({
worker; action: 'css-propagate',
cache: Loader.css.cache,
console.log('Clustering enabled: Spinning up ' + numProcs + ' process(es).\n'); acpCache: Loader.css.acpCache,
hash: Loader.css.hash
for(var x=0;x<numProcs;x++) {
// Only the first worker sets up templates/sounds/jobs/etc
worker = cluster.fork({
cluster_setup: x === 0,
handle_jobs: x === 0
}); });
}
break;
case 'restart':
console.log('[cluster] Restarting...');
Loader.restart();
break;
case 'reload':
console.log('[cluster] Reloading...');
Loader.reload();
break;
case 'js-propagate':
Loader.js.cache = message.cache;
Loader.js.map = message.map;
Loader.js.hash = message.hash;
// Logging Loader.notifyWorkers({
if (silent) { action: 'js-propagate',
worker.process.stdout.pipe(output); cache: message.cache,
map: message.map,
hash: message.hash
}, worker.pid);
break;
case 'css-propagate':
Loader.css.cache = message.cache;
Loader.css.acpCache = message.acpCache;
Loader.css.hash = message.hash;
Loader.notifyWorkers({
action: 'css-propagate',
cache: message.cache,
acpCache: message.acpCache,
hash: message.hash
}, worker.pid);
break;
} }
} }
});
if (callback) callback();
}; };
Loader.restart = function(callback) { Loader.start = function(callback) {
// Slate existing workers for termination -- welcome to death row. numProcs = getPorts().length;
Loader.shutdown_queue = Loader.shutdown_queue.concat(Object.keys(cluster.workers)); console.log('Clustering enabled: Spinning up ' + numProcs + ' process(es).\n');
for (var x=0; x<numProcs; ++x) {
forkWorker(x, x === 0);
}
if (callback) {
callback();
}
};
function forkWorker(index, isPrimary) {
var ports = getPorts();
if(!ports[index]) {
return console.log('[cluster] invalid port for worker : ' + index + ' ports: ' + ports.length);
}
process.env.isPrimary = isPrimary;
process.env.isCluster = true;
process.env.port = ports[index];
var worker = fork('app.js', [], {
silent: silent,
env: process.env
});
worker.index = index;
worker.isPrimary = isPrimary;
workers[index] = worker;
Loader.addWorkerEvents(worker);
if (silent) {
var output = logrotate({ file: __dirname + '/logs/output.log', size: '1m', keep: 3, compress: true });
worker.stdout.pipe(output);
worker.stderr.pipe(output);
}
}
function getPorts() {
var urlObject = url.parse(nconf.get('url'));
var port = nconf.get('port') || nconf.get('PORT') || urlObject.port || 4567;
if (!Array.isArray(port)) {
port = [port];
}
return port;
}
Loader.restart = function() {
killWorkers();
Loader.start(); Loader.start();
}; };
Loader.reload = function() { Loader.reload = function() {
Object.keys(cluster.workers).forEach(function(worker_id) { workers.forEach(function(worker) {
cluster.workers[worker_id].send({ worker.send({
action: 'reload' action: 'reload'
}); });
}); });
}; };
Loader.notifyWorkers = function (msg) { Loader.stop = function() {
Object.keys(cluster.workers).forEach(function(id) { killWorkers();
cluster.workers[id].send(msg);
// Clean up the pidfile
fs.unlinkSync(__dirname + '/pidfile');
};
function killWorkers() {
workers.forEach(function(worker) {
worker.suicide = true;
worker.kill();
}); });
} }
Loader.notifyWorkers = function(msg, worker_pid) {
worker_pid = parseInt(worker_pid, 10);
workers.forEach(function(worker) {
if (parseInt(worker.pid, 10) !== worker_pid) {
try {
worker.send(msg);
} catch (e) {
console.log('[cluster/notifyWorkers] Failed to reach pid ' + worker_pid);
}
}
});
};
nconf.argv().file({ nconf.argv().file({
file: path.join(__dirname, '/config.json') file: path.join(__dirname, '/config.json')
}); });
numProcs = nconf.get('cluster') || 1;
numProcs = (numProcs === true) ? require('os').cpus().length : numProcs;
if (nconf.get('daemon') !== false) { if (nconf.get('daemon') !== false) {
if (fs.existsSync(pidFilePath)) { if (fs.existsSync(pidFilePath)) {
try { try {
@@ -240,7 +245,10 @@ if (nconf.get('daemon') !== false) {
} }
} }
require('daemon')(); require('daemon')({
stdout: process.stdout,
stderr: process.stderr
});
fs.writeFile(__dirname + '/pidfile', process.pid); fs.writeFile(__dirname + '/pidfile', process.pid);
} }
@@ -248,7 +256,6 @@ if (nconf.get('daemon') !== false) {
async.series([ async.series([
Loader.init, Loader.init,
Loader.displayStartupMessages, Loader.displayStartupMessages,
Loader.addClusterEvents,
Loader.start Loader.start
], function(err) { ], function(err) {
if (err) { if (err) {

View File

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

23
nodebb
View File

@@ -12,10 +12,11 @@ fi
function pidExists() { function pidExists() {
if [ -e "pidfile" ]; if [ -e "pidfile" ];
then then
kill -s 0 $(cat pidfile); if ps -p $(cat pidfile) > /dev/null
if [ !$? ];
then return 1; then return 1;
else return 0; else
rm ./pidfile;
return 0;
fi fi
else else
return 0; return 0;
@@ -29,7 +30,7 @@ case "$1" in
echo " \"./nodebb log\" to view server output"; echo " \"./nodebb log\" to view server output";
# Start the loader daemon # Start the loader daemon
"$node" loader -d "$@" "$node" loader "$@"
;; ;;
stop) stop)
@@ -43,7 +44,7 @@ case "$1" in
fi fi
;; ;;
reload|restart) restart)
pidExists; pidExists;
if [ 0 -eq $? ]; if [ 0 -eq $? ];
then then
@@ -54,6 +55,17 @@ case "$1" in
fi fi
;; ;;
reload)
pidExists;
if [ 0 -eq $? ];
then
echo "NodeBB could not be reloaded, as a running instance could not be found.";
else
echo "Reloading NodeBB.";
kill -12 $(cat pidfile);
fi
;;
status) status)
pidExists; pidExists;
if [ 0 -eq $? ]; if [ 0 -eq $? ];
@@ -80,7 +92,6 @@ case "$1" in
npm i nodebb-theme-vanilla nodebb-theme-lavender nodebb-widget-essentials npm i nodebb-theme-vanilla nodebb-theme-lavender nodebb-widget-essentials
"$node" app --upgrade "$node" app --upgrade
touch package.json touch package.json
echo -e "\n\e[00;32mNodeBB Dependencies up-to-date!\e[00;00m";
;; ;;
setup) setup)

122
nodebb.bat Normal file
View File

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

2749
npm-shrinkwrap.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -2,7 +2,7 @@
"name": "nodebb", "name": "nodebb",
"license": "GPLv3 or later", "license": "GPLv3 or later",
"description": "NodeBB Forum", "description": "NodeBB Forum",
"version": "0.5.3-dev", "version": "0.6.1",
"homepage": "http://www.nodebb.org", "homepage": "http://www.nodebb.org",
"repository": { "repository": {
"type": "git", "type": "git",
@@ -16,7 +16,7 @@
}, },
"dependencies": { "dependencies": {
"async": "~0.9.0", "async": "~0.9.0",
"bcryptjs": "~2.0.1", "bcryptjs": "~2.1.0",
"body-parser": "^1.9.0", "body-parser": "^1.9.0",
"compression": "^1.1.0", "compression": "^1.1.0",
"connect-ensure-login": "^0.1.1", "connect-ensure-login": "^0.1.1",
@@ -28,20 +28,22 @@
"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.16.0", "gm": "1.17.0",
"gravatar": "^1.1.0", "gravatar": "^1.1.0",
"less": "^1.7.5", "heapdump": "^0.3.0",
"less": "^2.0.0",
"logrotate-stream": "^0.2.3", "logrotate-stream": "^0.2.3",
"mkdirp": "~0.5.0", "mkdirp": "~0.5.0",
"morgan": "^1.3.2", "morgan": "^1.3.2",
"nconf": "~0.6.7", "nconf": "~0.7.1",
"nodebb-plugin-dbsearch": "0.0.15", "nodebb-plugin-dbsearch": "^0.1.0",
"nodebb-plugin-markdown": "^0.7.0", "nodebb-plugin-markdown": "^0.8.0",
"nodebb-plugin-mentions": "~0.6.0", "nodebb-plugin-mentions": "^0.9.0",
"nodebb-plugin-soundpack-default": "~0.1.1", "nodebb-plugin-soundpack-default": "~0.1.1",
"nodebb-theme-lavender": "~0.1.0", "nodebb-plugin-spam-be-gone": "^0.4.0",
"nodebb-theme-vanilla": "~0.1.0", "nodebb-theme-lavender": "^0.2.0",
"nodebb-widget-essentials": "~0.1.1", "nodebb-theme-vanilla": "^0.2.0",
"nodebb-widget-essentials": "~0.2.0",
"npm": "^2.1.4", "npm": "^2.1.4",
"passport": "^0.2.1", "passport": "^0.2.1",
"passport-local": "1.0.0", "passport-local": "1.0.0",
@@ -52,15 +54,16 @@
"semver": "^4.0.3", "semver": "^4.0.3",
"serve-favicon": "^2.1.5", "serve-favicon": "^2.1.5",
"sitemap": "^0.7.4", "sitemap": "^0.7.4",
"socket.io": "^0.9.17", "socket.io": "^1.2.1",
"socket.io-client": "^0.9.17", "socket.io-client": "^1.2.1",
"socket.io-wildcard": "~0.1.1", "socket.io-redis": "^0.1.3",
"string": "^2.1.0", "socketio-wildcard": "~0.1.1",
"templates.js": "0.1.2", "string": "^3.0.0",
"templates.js": "^0.1.15",
"uglify-js": "git+https://github.com/julianlam/UglifyJS2.git", "uglify-js": "git+https://github.com/julianlam/UglifyJS2.git",
"underscore": "~1.7.0", "underscore": "~1.7.0",
"validator": "~3.21.0", "validator": "~3.28.0",
"winston": "^0.8.0", "winston": "^0.9.0",
"xregexp": "~2.0.0" "xregexp": "~2.0.0"
}, },
"devDependencies": { "devDependencies": {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 521 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -4,5 +4,5 @@
"browsing": "prohlíží", "browsing": "prohlíží",
"no_replies": "Nikdo ještě neodpověděl", "no_replies": "Nikdo ještě neodpověděl",
"share_this_category": "Share this category", "share_this_category": "Share this category",
"ignore": "Ignore" "ignore": "Ignorovat"
} }

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,10 +1,10 @@
{ {
"topic": "Téma", "topic": "Téma",
"topic_id": "Topic ID", "topic_id": "ID tématu",
"topic_id_placeholder": "Enter topic ID", "topic_id_placeholder": "Vložte ID tématu",
"no_topics_found": "Nebyla nalezena žádná témata!", "no_topics_found": "Nebyla nalezena žádná témata!",
"no_posts_found": "No posts found!", "no_posts_found": "Nebyly nalezeny žádné příspěvky!",
"post_is_deleted": "This post is deleted!", "post_is_deleted": "Tento příspěvek je vymazán!",
"profile": "Profil", "profile": "Profil",
"posted_by": "Posted by %1", "posted_by": "Posted by %1",
"posted_by_guest": "Posted by Guest", "posted_by_guest": "Posted by Guest",
@@ -74,6 +74,7 @@
"fork_no_pids": "Žádné příspěvky nebyly vybrány!", "fork_no_pids": "Žádné příspěvky nebyly vybrány!",
"fork_success": "Successfully forked topic! Click here to go to the forked topic.", "fork_success": "Successfully forked topic! Click here to go to the forked topic.",
"composer.title_placeholder": "Enter your topic title here...", "composer.title_placeholder": "Enter your topic title here...",
"composer.handle_placeholder": "Name",
"composer.discard": "Discard", "composer.discard": "Discard",
"composer.submit": "Submit", "composer.submit": "Submit",
"composer.replying_to": "Replying to %1", "composer.replying_to": "Replying to %1",
@@ -92,5 +93,6 @@
"sort_by": "Sort by", "sort_by": "Sort by",
"oldest_to_newest": "Oldest to Newest", "oldest_to_newest": "Oldest to Newest",
"newest_to_oldest": "Newest to Oldest", "newest_to_oldest": "Newest to Oldest",
"most_votes": "Most votes" "most_votes": "Most votes",
"most_posts": "Most posts"
} }

View File

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

View File

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

View File

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

View File

@@ -9,14 +9,16 @@
"reset.text1": "Wir haben eine Anfrage auf Zurücksetzung deines Passworts erhalten, wahrscheinlich, weil du es vergessen hast. Falls dies nicht der Fall ist, ignoriere bitte diese E-Mail.", "reset.text1": "Wir haben eine Anfrage auf Zurücksetzung deines Passworts erhalten, wahrscheinlich, weil du es vergessen hast. Falls dies nicht der Fall ist, ignoriere bitte diese E-Mail.",
"reset.text2": "Klicke bitte auf den folgenden Link, um mit der Zurücksetzung deines Passworts fortzufahren:", "reset.text2": "Klicke bitte auf den folgenden Link, um mit der Zurücksetzung deines Passworts fortzufahren:",
"reset.cta": "Klicke hier, um dein Passwort zurückzusetzen", "reset.cta": "Klicke hier, um dein Passwort zurückzusetzen",
"digest.notifications": "You have unread notifications from %1:", "digest.notifications": "Du hast ungelesene Benachrichtigungen von %1:",
"digest.latest_topics": "Aktuellste Themen vom %1", "digest.latest_topics": "Aktuellste Themen vom %1",
"digest.cta": "Klicke hier, um %1 zu besuchen", "digest.cta": "Klicke hier, um %1 zu besuchen",
"digest.unsub.info": "Diese Zusammenfassung wurde dir aufgrund deiner Abonnement-Einstellungen gesendet.", "digest.unsub.info": "Diese Zusammenfassung wurde dir aufgrund deiner Abonnement-Einstellungen gesendet.",
"digest.daily.no_topics": "Es gab heute keine aktiven Themen", "digest.no_topics": "Es gab keine aktiven Themen in den letzten %1",
"notif.chat.subject": "Neue Chatnachricht von %1 erhalten", "notif.chat.subject": "Neue Chatnachricht von %1 erhalten",
"notif.chat.cta": "Klicke hier, um die Unterhaltung fortzusetzen", "notif.chat.cta": "Klicke hier, um die Unterhaltung fortzusetzen",
"notif.chat.unsub.info": "Diese Chat-Benachrichtigung wurde dir aufgrund deiner Abonnement-Einstellungen gesendet.", "notif.chat.unsub.info": "Diese Chat-Benachrichtigung wurde dir aufgrund deiner Abonnement-Einstellungen gesendet.",
"notif.post.cta": "Hier klicken, um das gesamte Thema zu lesen",
"notif.post.unsub.info": "Diese Mitteilung wurde wegen ihrer Abonnement-Einstellung gesendet.",
"test.text1": "Dies ist eine Test-E-Mail, um zu überprüfen, ob der E-Mailer deines NodeBB korrekt eingestellt wurde.", "test.text1": "Dies ist eine Test-E-Mail, um zu überprüfen, ob der E-Mailer deines NodeBB korrekt eingestellt wurde.",
"unsub.cta": "Klicke hier, um diese Einstellungen zu ändern.", "unsub.cta": "Klicke hier, um diese Einstellungen zu ändern.",
"closing": "Danke!" "closing": "Danke!"

View File

@@ -17,48 +17,57 @@
"invalid-pagination-value": "Die Nummerierung ist ungültig", "invalid-pagination-value": "Die Nummerierung ist ungültig",
"username-taken": "Der Benutzername ist bereits vergeben", "username-taken": "Der Benutzername ist bereits vergeben",
"email-taken": "Die E-Mail-Adresse ist bereits vergeben", "email-taken": "Die E-Mail-Adresse ist bereits vergeben",
"email-not-confirmed": "Your email has not been confirmed yet, please click here to confirm your email.", "email-not-confirmed": "Deine E-Mail wurde noch nicht bestätigt. Bitte klicke hier, um deine E-Mail zu bestätigen.",
"email-not-confirmed-chat": "Der Chat ist deaktiviert bis Du deine E-Mail bestätigt hast",
"username-too-short": "Benutzername ist zu kurz", "username-too-short": "Benutzername ist zu kurz",
"username-too-long": "Der Benutzername ist zu lang", "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 seconds before making your first post", "user-too-new": "Entschuldigung, du musst %1 Sekunden warten, bevor du deinen ersten Beitrag verfassen kannst!",
"no-category": "Category does not exist", "no-category": "Die Kategorie existiert nicht",
"no-topic": "Topic does not exist", "no-topic": "Das Thema existiert nicht",
"no-post": "Post does not exist", "no-post": "Der Beitrag existiert nicht",
"no-group": "Group does not exist", "no-group": "Die Gruppe existiert nicht",
"no-user": "User does not exist", "no-user": "Der Benutzer existiert nicht",
"no-teaser": "Teaser does not exist", "no-teaser": "Zusammenfassung existiert nicht",
"no-privileges": "You do not have enough privileges for this action.", "no-privileges": "Du verfügst nicht über ausreichende Berechtigungen, um die Aktion durchzuführen.",
"no-emailers-configured": "Es wurde keine E-Mail-Plugins geladen, weshalb eine Test-E-Mail nicht gesendet werden konnte.", "no-emailers-configured": "Es wurde keine E-Mail-Plugins geladen, weshalb eine Test-E-Mail nicht gesendet werden konnte.",
"category-disabled": "Kategorie ist deaktiviert", "category-disabled": "Kategorie ist deaktiviert",
"topic-locked": "Thema ist gesperrt", "topic-locked": "Thema ist gesperrt",
"still-uploading": "Bitte warte bis der Vorgang abgeschlossen ist.", "still-uploading": "Bitte warte bis der Vorgang abgeschlossen ist.",
"content-too-short": "Please enter a longer post. Posts should contain at least %1 characters.", "content-too-short": "Bitte gib einen längeren Beitrag ein. Beiträge sollten mindestens %1 Zeichen enthalten.",
"title-too-short": "Please enter a longer title. Titles should contain at least %1 characters.", "title-too-short": "Bitte gib einen längeren Titel ein. Titel sollten mindestens %1 Zeichen enthalten.",
"title-too-long": "Der Titel darf maximal %1 Zeichen enthalten.", "title-too-long": "Der Titel darf maximal %1 Zeichen enthalten.",
"too-many-posts": "You can only post once every %1 seconds - please wait before posting again", "too-many-posts": "Du kannst maximal alle %1 Sekunden einen Beitrag erstellen - bitte warte, bevor du einen neuen Beitrag erstellst",
"file-too-big": "Maximum allowed file size is %1 kbs - please upload a smaller file", "too-many-posts-newbie": "Als neuer Benutzer kannst du nur alle %1 Sekunden einen Beitrag verfassen, bis du %2 Reputationspunkte hast - Bitte warte etwas, bevor du erneut einen Beitrag verfasst",
"file-too-big": "Die maximale Dateigröße beträgt %1 kbs - bitte lade eine kleinere Datei hoch",
"cant-vote-self-post": "Du kannst deinen eigenen Beitrag nicht bewerten.", "cant-vote-self-post": "Du kannst deinen eigenen Beitrag nicht bewerten.",
"already-favourited": "You have already favourited this post", "already-favourited": "Dieser Beitrag ist bereits in deinen Favoriten enthalten",
"already-unfavourited": "You have already unfavourited this post", "already-unfavourited": "Du hast diesen Beitrag bereits aus deinen Favoriten entfernt",
"cant-ban-other-admins": "Du kannst andere Administratoren nicht sperren!", "cant-ban-other-admins": "Du kannst andere Administratoren nicht sperren!",
"invalid-image-type": "Ungültiger Bildtyp", "invalid-image-type": "Falsche Bildart. Erlaubte Arten sind: %1",
"invalid-image-extension": "Ungültige Dateinamenerweiterung",
"group-name-too-short": "Gruppenname zu kurz", "group-name-too-short": "Gruppenname zu kurz",
"group-already-exists": "Gruppe existiert bereits", "group-already-exists": "Gruppe existiert bereits",
"group-name-change-not-allowed": "Du kannst den Namen der Gruppe nicht ändern", "group-name-change-not-allowed": "Du kannst den Namen der Gruppe nicht ändern",
"post-already-deleted": "This post has already been deleted", "group-already-member": "Du bist bereits Teil dieser Gruppe",
"post-already-restored": "This post has already been restored", "group-needs-owner": "Diese Gruppe muss mindestens einen Besitzer vorweisen",
"topic-already-deleted": "This topic has already been deleted", "post-already-deleted": "Dieser Beitrag ist bereits gelöscht worden",
"topic-already-restored": "This topic has already been restored", "post-already-restored": "Dieser Beitrag ist bereits wiederhergestellt worden",
"topic-already-deleted": "Dieses Thema ist bereits gelöscht worden",
"topic-already-restored": "Dieses Thema ist bereits wiederhergestellt worden",
"topic-thumbnails-are-disabled": "Vorschaubilder für Themen sind deaktiviert", "topic-thumbnails-are-disabled": "Vorschaubilder für Themen sind deaktiviert",
"invalid-file": "Datei ungültig", "invalid-file": "Datei ungültig",
"uploads-are-disabled": "Uploads sind deaktiviert", "uploads-are-disabled": "Uploads sind deaktiviert",
"upload-error": "Upload-Fehler: %1", "upload-error": "Upload-Fehler: %1",
"signature-too-long": "Sorry, your signature cannot be longer than %1 characters.", "signature-too-long": "Entschuldigung, deine Signatur darf maximal %1 Zeichen enthalten.",
"cant-chat-with-yourself": "Du kannst nicht mit dir selber chatten!", "cant-chat-with-yourself": "Du kannst nicht mit dir selber chatten!",
"chat-restricted": "Dieser Benutzer hat seine Chatfunktion eingeschränkt. Du kannst nur mit diesem Benutzer chatten, wenn er dir folgt.",
"too-many-messages": "Du hast zu viele Nachrichten versandt, bitte warte eine Weile.",
"reputation-system-disabled": "Das Reputationssystem ist deaktiviert.", "reputation-system-disabled": "Das Reputationssystem ist deaktiviert.",
"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": "You do not have enough reputation to flag this post", "not-enough-reputation-to-flag": "Deine Reputation ist nicht gut genug, um diesen Beitrag zu melden",
"reload-failed": "Es ist ein Problem während des Reloads von NodeBB aufgetreten: \"%1\". NodeBB wird weiterhin clientseitige Assets bereitstellen, allerdings solltest du das, was du vor dem Reload gemacht hast, rückgängig machen." "reload-failed": "Es ist ein Problem während des Reloads von NodeBB aufgetreten: \"%1\". NodeBB wird weiterhin clientseitige Assets bereitstellen, allerdings solltest du das, was du vor dem Reload gemacht hast, rückgängig machen.",
"registration-error": "Registrierungsfehler",
"parse-error": "Ein Fehler ist beim Parsen der Server-Antwort aufgetreten"
} }

View File

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

View File

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

View File

@@ -12,7 +12,6 @@
"chat.message-history": "Nachrichtenverlauf", "chat.message-history": "Nachrichtenverlauf",
"chat.pop-out": "Chat als Pop-out anzeigen", "chat.pop-out": "Chat als Pop-out anzeigen",
"chat.maximize": "Maximieren", "chat.maximize": "Maximieren",
"chat.yesterday": "Gestern",
"chat.seven_days": "7 Tage", "chat.seven_days": "7 Tage",
"chat.thirty_days": "30 Tage", "chat.thirty_days": "30 Tage",
"chat.three_months": "3 Monate", "chat.three_months": "3 Monate",

View File

@@ -16,7 +16,7 @@
"favourited_your_post_in": "<strong>%1</strong> hat deinen Beitrag in <strong>%2</strong> favorisiert.", "favourited_your_post_in": "<strong>%1</strong> hat deinen Beitrag in <strong>%2</strong> favorisiert.",
"user_flagged_post_in": "<strong>%1</strong> hat einen Beitrag in </strong>%2</strong> gemeldet", "user_flagged_post_in": "<strong>%1</strong> hat einen Beitrag in </strong>%2</strong> gemeldet",
"user_posted_to": "<strong>%1</strong> hat auf <strong>%2</strong> geantwortet.", "user_posted_to": "<strong>%1</strong> hat auf <strong>%2</strong> geantwortet.",
"user_posted_topic": "<strong>%1</strong> has posted a new topic: <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.",
"email-confirmed": "E-Mail bestätigt", "email-confirmed": "E-Mail bestätigt",

View File

@@ -14,5 +14,5 @@
"user.favourites": "Von %1 favorisierte Beiträge", "user.favourites": "Von %1 favorisierte Beiträge",
"user.settings": "Benutzer-Einstellungen", "user.settings": "Benutzer-Einstellungen",
"maintenance.text": "%1 befindet sich derzeit in der Wartung. Bitte komm später wieder.", "maintenance.text": "%1 befindet sich derzeit in der Wartung. Bitte komm später wieder.",
"maintenance.messageIntro": "Additionally, the administrator has left this message:" "maintenance.messageIntro": "Zusätzlich hat der Administrator diese Nachricht hinterlassen:"
} }

View File

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

View File

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

View File

@@ -72,8 +72,9 @@
"topic_will_be_moved_to": "Dieses Thema wird verschoben nach", "topic_will_be_moved_to": "Dieses Thema wird verschoben nach",
"fork_topic_instruction": "Klicke auf die Beiträge, die du aufspalten willst", "fork_topic_instruction": "Klicke auf die Beiträge, die du aufspalten willst",
"fork_no_pids": "Keine Beiträge ausgewählt!", "fork_no_pids": "Keine Beiträge ausgewählt!",
"fork_success": "Successfully forked topic! Click here to go to the forked topic.", "fork_success": "Thema erfolgreich abgespalten! Klicke hier, um zum abgespalteten 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.discard": "Verwerfen", "composer.discard": "Verwerfen",
"composer.submit": "Absenden", "composer.submit": "Absenden",
"composer.replying_to": "Antworte auf %1", "composer.replying_to": "Antworte auf %1",
@@ -92,5 +93,6 @@
"sort_by": "Sortieren nach", "sort_by": "Sortieren nach",
"oldest_to_newest": "Älteste zuerst", "oldest_to_newest": "Älteste zuerst",
"newest_to_oldest": "Neuster zuerst", "newest_to_oldest": "Neuster zuerst",
"most_votes": "Die meisten Stimmen" "most_votes": "Die meisten Stimmen",
"most_posts": "Die meisten Beiträge"
} }

View File

@@ -2,6 +2,8 @@
"banned": "Gebannt", "banned": "Gebannt",
"offline": "offline", "offline": "offline",
"username": "Nutzername", "username": "Nutzername",
"joindate": "Registriert vor",
"postcount": "Beiträge",
"email": "E-Mail", "email": "E-Mail",
"confirm_email": "E-Mail bestätigen", "confirm_email": "E-Mail bestätigen",
"delete_account": "Konto löschen", "delete_account": "Konto löschen",
@@ -16,6 +18,7 @@
"profile_views": "Profilaufrufe", "profile_views": "Profilaufrufe",
"reputation": "Reputation", "reputation": "Reputation",
"favourites": "Favoriten", "favourites": "Favoriten",
"watched": "Beobachtet",
"followers": "Folger", "followers": "Folger",
"following": "Folgt", "following": "Folgt",
"signature": "Signatur", "signature": "Signatur",
@@ -47,7 +50,8 @@
"max": "max.", "max": "max.",
"settings": "Einstellungen", "settings": "Einstellungen",
"show_email": "Zeige meine E-Mail Adresse an.", "show_email": "Zeige meine E-Mail Adresse an.",
"show_fullname": "Show My Full Name", "show_fullname": "Zeige meinen kompletten Namen an",
"restrict_chats": "Nur Chatnachrichten von Benutzern, denen ich folge, erlauben",
"digest_label": "Auszug abonnieren", "digest_label": "Auszug abonnieren",
"digest_description": "Abonniere E-Mail-Benachrichtigungen für dieses Forum (neue Benachrichtigungen und Themen) nach einem festen Zeitplan.", "digest_description": "Abonniere E-Mail-Benachrichtigungen für dieses Forum (neue Benachrichtigungen und Themen) nach einem festen Zeitplan.",
"digest_off": "Aus", "digest_off": "Aus",
@@ -55,10 +59,12 @@
"digest_weekly": "Wöchentlich", "digest_weekly": "Wöchentlich",
"digest_monthly": "Monatlich", "digest_monthly": "Monatlich",
"send_chat_notifications": "Sende eine E-Mail, wenn eine neue Chat-Nachricht eingeht und ich nicht online bin", "send_chat_notifications": "Sende eine E-Mail, wenn eine neue Chat-Nachricht eingeht und ich nicht online bin",
"send_post_notifications": "Sende eine E-Mail wenn auf Themen die ich abonniert habe geantwortet wird",
"has_no_follower": "Dieser User hat noch keine Follower.", "has_no_follower": "Dieser User hat noch keine Follower.",
"follows_no_one": "Dieser User folgt noch niemandem :(", "follows_no_one": "Dieser User folgt noch niemandem :(",
"has_no_posts": "Dieser Nutzer hat noch nichts gepostet.", "has_no_posts": "Dieser Nutzer hat noch nichts gepostet.",
"has_no_topics": "Dieser Nutzer hat noch keine Themen gepostet.", "has_no_topics": "Dieser Nutzer hat noch keine Themen gepostet.",
"has_no_watched_topics": "Diese Person beobachtet keine Themen",
"email_hidden": "E-Mail Adresse versteckt", "email_hidden": "E-Mail Adresse versteckt",
"hidden": "versteckt", "hidden": "versteckt",
"paginate_description": "Themen und Beiträge auf Seiten aufteilen statt unendliches Scrollen verwenden.", "paginate_description": "Themen und Beiträge auf Seiten aufteilen statt unendliches Scrollen verwenden.",
@@ -67,6 +73,8 @@
"notification_sounds": "Ton abspielen, wenn ich eine Benachrichtigung erhalte.", "notification_sounds": "Ton abspielen, wenn ich eine Benachrichtigung erhalte.",
"browsing": "Browser Einstellungen", "browsing": "Browser Einstellungen",
"open_links_in_new_tab": "Externe Links in neuem Tab öffnen?", "open_links_in_new_tab": "Externe Links in neuem Tab öffnen?",
"enable_topic_searching": "Suchen innerhalb von Themen aktivieren",
"topic_search_help": "Falls aktiviert, wird die Suche im Thema das Standardsuchverhalten des Browsers überschreiben und es Ihnen erlauben, das ganze Thema statt dessen, was sich auf dem Bildschirm befindet, zu durchsuchen.",
"follow_topics_you_reply_to": "Folge Themen, auf die du antwortest.", "follow_topics_you_reply_to": "Folge Themen, auf die du antwortest.",
"follow_topics_you_create": "Folge Themen, die du erstellst." "follow_topics_you_create": "Folge Themen, die du erstellst."
} }

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,18 @@
{
"home": "Κεντρική",
"unread": "Μη αναγνωσμένα Θέματα",
"popular": "Δημοφιλή Θέματα",
"recent": "Πρόσφατα Θέματα",
"users": "Εγγεγραμμένοι Χρήστες",
"notifications": "Ειδοποιήσεις",
"tags": "Θέματα με ετικέτα \"%1\"",
"user.edit": "Επεξεργασία του \"%1\"",
"user.following": "Άτομα που ακολουθεί ο/η %1",
"user.followers": "Άτομα που ακολουθούν τον/την %1",
"user.posts": "Δημοσιεύσεις από τον/την %1",
"user.topics": "Θέματα από τον/την %1",
"user.favourites": "Οι αγαπημένες δημοσιεύσεις του/της %1",
"user.settings": "Επιλογές Χρήστη",
"maintenance.text": "Το %1 αυτή την στιγμή συντηρείται. Παρακαλώ έλα αργότερα.",
"maintenance.messageIntro": "Additionally, the administrator has left this message:"
}

View File

@@ -0,0 +1,18 @@
{
"title": "Πρόσφατα",
"day": "Ημέρα",
"week": "Εβδομάδα",
"month": "Μήνας",
"year": "Έτος",
"alltime": "Όλο το Ιστορικό",
"no_recent_topics": "Δεν υπάρχουν πρόσφατα θέματα.",
"there-is-a-new-topic": "There is a new topic.",
"there-is-a-new-topic-and-a-new-post": "There is a new topic and a new post.",
"there-is-a-new-topic-and-new-posts": "There is a new topic and %1 new posts.",
"there-are-new-topics": "There are %1 new topics.",
"there-are-new-topics-and-a-new-post": "There are %1 new topics and a new post.",
"there-are-new-topics-and-new-posts": "There are %1 new topics and %2 new posts.",
"there-is-a-new-post": "There is a new post.",
"there-are-new-posts": "There are %1 new posts.",
"click-here-to-reload": "Click here to reload."
}

View File

@@ -0,0 +1,18 @@
{
"register": "Εγγραφή",
"help.email": "Από προεπιλογή, το email σου θα είναι κρυμμένο από την κοινή θέα.",
"help.username_restrictions": "Ένα μοναδικό όνομα χρήστη μεταξύ %1 και %2 χαρακτήρων. Άλλα άτομα μπορούν να σε αναφέρουν με το @<span id='yourUsername'>username</span> σου.",
"help.minimum_password_length": "Το μήκος του κωδικού σου πρέπει να είναι τουλάχιστον %1 χαρακτήρες.",
"email_address": "Διεύθυνση Email",
"email_address_placeholder": "Εισαγωγή Διεύθυνσης Email",
"username": "Όνομα Χρήστη",
"username_placeholder": "Εισαγωγή Ονόματος Χρήστη",
"password": "Κωδικός",
"password_placeholder": "Εισαγωγή Κωδικού",
"confirm_password": "Επιβεβαίωση Κωδικού",
"confirm_password_placeholder": "Επιβεβαίωση Κωδικού",
"register_now_button": "Εγγραφή Τώρα",
"alternative_registration": "Εναλλακτική Εγγραφή",
"terms_of_use": "Όροι Χρήσης",
"agree_to_terms_of_use": "Συμφωνώ με τους Όρους Χρήσης"
}

View File

@@ -0,0 +1,14 @@
{
"reset_password": "Επαναφορά Κωδικού",
"update_password": "Ενημέρωση Κωδικού",
"password_changed.title": "Ο Κωδικός Άλλαξε",
"password_changed.message": "<p>Ο κωδικός επαναφέρθηκε με επιτυχία, παρακαλώ <a href=\"/login\">συνδέσου ξανά</a>.",
"wrong_reset_code.title": "Λάθος Κώδικας Επαναφοράς",
"wrong_reset_code.message": "Ο κώδικας επαναφοράς που λήφθηκε ήταν λανθασμένος. Παρακαλώ δοκίμασε ξανά ή <a href=\"/reset\">ζήτησε ένα νέο κώδικα επαναφοράς</a>.",
"new_password": "Νέος Κωδικός",
"repeat_password": "Επιβεβαίωση Κωδικού",
"enter_email": "Παρακαλώ γράψε την <strong>διεύθυνση email σου</strong> και θα σου στείλουμε ένα email με οδηγίες για το πως να επαναφέρεις τον λογαριασμό σου.",
"enter_email_address": "Εισαγωγή Διεύθυνσης Email",
"password_reset_sent": "Η Επαναφορά Κωδικού Εστάλη",
"invalid_email": "Άκυρο Email / Το email δεν υπάρχει!"
}

View File

@@ -0,0 +1,7 @@
{
"results_matching": "%1 αποτελεσμα(τα) για \"%2\", (%3 δευτερόλεπτα)",
"no-matches": "No matches found",
"in": "In",
"by": "By",
"posted-by": "Posted by"
}

View File

@@ -0,0 +1,6 @@
{
"success": "Επιτυχία",
"topic-post": "Δημοσίευσες με επιτυχία.",
"authentication-successful": "Επιτυχής Ταυτοποίηση",
"settings-saved": "Οι επιλογές αποθηκεύτηκαν!"
}

View File

@@ -0,0 +1,7 @@
{
"no_tag_topics": "Δεν υπάρχουν θέματα με αυτή την ετικέτα.",
"tags": "Ετικέτες",
"enter_tags_here": "Εισαγωγή ετικετών εδώ. Πάτα enter μετά από κάθε ετικέτα.",
"enter_tags_here_short": "Εισαγωγή ετικετών...",
"no_tags": "Δεν υπάρχουν ακόμα ετικέτες."
}

View File

@@ -0,0 +1,98 @@
{
"topic": "Θέμα",
"topic_id": "ID Θέματος",
"topic_id_placeholder": "Εισαγωγή ID θέματος",
"no_topics_found": "Δεν βρέθηκαν θέματα!",
"no_posts_found": "Δεν βρέθηκαν δημοσιεύσεις!",
"post_is_deleted": "Αυτή η δημοσίευση έχει διαγραφεί!",
"profile": "Προφίλ",
"posted_by": "Δημοσιεύτηκε από τον/την %1",
"posted_by_guest": "Δημοσιεύτηκε από Επισκέπτη",
"chat": "Συνομιλία",
"notify_me": "Να ειδοποιούμαι για νέες απαντήσεις σε αυτό το θέμα",
"quote": "Παράθεση",
"reply": "Απάντηση",
"edit": "Επεξεργασία",
"delete": "Διαγραφή",
"purge": "Εκκαθάριση",
"restore": "Επαναφορά",
"move": "Μετακίνηση",
"fork": "Διαχωρισμός",
"link": "Σύνδεσμος",
"share": "Μοιράσου το",
"tools": "Εργαλεία",
"flag": "Σημαία",
"locked": "Κλειδωμένο",
"bookmark_instructions": "Κάνε κλικ εδώ για να επιστρέψεις στην τελευταία σου θέση ή κλείστο για να το πετάξεις.",
"flag_title": "Επισήμανση αυτής της δημοσίευσης για συντονισμό",
"flag_confirm": "Είσαι σίγουρος/η πως θες να επισημάνεις αυτή την δημοσίευση;",
"flag_success": "Αυτή η δημοσίευση έχει επισημανθεί για συντονισμό.",
"deleted_message": "Το θέμα αυτό έχει διαγραφεί. Μόνο οι χρήστες με δικαιώματα διαχειριστή θεμάτων μπορούν να το δουν.",
"following_topic.message": "Θα λαμβάνεις ειδοποιήσεις όποτε κάποιος δημοσιεύει κάτι σε αυτό το θέμα.",
"not_following_topic.message": "Δεν θα λαμβάνεις άλλες ειδοποιήσεις από αυτό το θέμα.",
"login_to_subscribe": "Παρακαλώ εγγράψου ή συνδέσου για για γραφτείς σε αυτό το θέμα.",
"markAsUnreadForAll.success": "Το θέμα σημειώθηκε ως μη αναγνωσμένο για όλους.",
"watch": "Παρακολούθηση",
"unwatch": "Ξεπαρακολούθηση",
"watch.title": "Να ειδοποιούμαι για νέες απαντήσεις σε αυτό το θέμα",
"unwatch.title": "Να μην παρακολουθώ αυτό το θέμα",
"share_this_post": "Μοιράσου αυτή την Δημοσίευση",
"thread_tools.title": "Εργαλεία Θέματος",
"thread_tools.markAsUnreadForAll": "Σημείωση ως μη αναγνωσμέν",
"thread_tools.pin": "Καρφίτσωμα Θέματος",
"thread_tools.unpin": "Ξεκαρφίτσωμα Θέματος",
"thread_tools.lock": "Κλείδωμα Θέματος",
"thread_tools.unlock": "Ξεκλείδωμα Θέματος",
"thread_tools.move": "Μετακίνηση Θέματος",
"thread_tools.move_all": "Μετακίνηση Όλων",
"thread_tools.fork": "Διαχωρισμός Θέματος",
"thread_tools.delete": "Διαγραφή Θέματος",
"thread_tools.delete_confirm": "Είσαι σίγουρος/η πως θέλεις να διαγράψεις αυτό το θέμα;",
"thread_tools.restore": "Επαναφορά Θέματος",
"thread_tools.restore_confirm": "Είσαι σίγουρος/η πως θέλεις να επαναφέρεις αυτό το θέμα;",
"thread_tools.purge": "Εκκαθάριση Θέματος",
"thread_tools.purge_confirm": "Είσαι σίγουρος/η πως θέλεις να εκκαθαρίσεις αυτό το θέμα;",
"topic_move_success": "Το θέμα μετακινήθηκε στο %1 με επιτυχία",
"post_delete_confirm": "Είσαι σίγουρος/η πως θέλεις να διαγράψεις αυτή την δημοσίευση;",
"post_restore_confirm": "Είσαι σίγουρος/η πως θέλεις να επαναφέρεις αυτή την δημοσίευση;",
"post_purge_confirm": "Είσαι σίγουρος/η πως θέλεις να εκκαθαρίσεις αυτή την δημοσίευση;",
"load_categories": "Οι Κατηγορίες Φορτώνουν",
"disabled_categories_note": "Οι απενεργοποιημένες κατηγορίες είναι γκριζαρισμένες",
"confirm_move": "Μετακίνηση",
"confirm_fork": "Διαχωρισμός",
"favourite": "Αγαπημένο",
"favourites": "Αγαπημένα",
"favourites.has_no_favourites": "Δεν έχεις καθόλου αγαπημένα, βάλε μερικές δημοσιεύσεις στα αγαπημένα σου για να τις βλέπεις εδώ!",
"loading_more_posts": "Φόρτωση περισσότερων δημοσιεύσεων",
"move_topic": "Μετακίνηση Θέματος",
"move_topics": "Μετακίνηση Θεμάτων",
"move_post": "Μετακίνηση Δημοσίευσης",
"post_moved": "Η δημοσίευση μετακινήθηκε!",
"fork_topic": "Διαχωρισμός Θέματος",
"topic_will_be_moved_to": "Το θέμα θα μετακινηθεί στην κατηγορία",
"fork_topic_instruction": "Κάνε κλικ στις δημοσιεύσεις που θέλεις να διαχωρίσεις",
"fork_no_pids": "Δεν έχουν επιλεχθεί δημοσιεύσεις!",
"fork_success": "Successfully forked topic! Click here to go to the forked topic.",
"composer.title_placeholder": "Εισαγωγή του τίτλου του θέματος εδώ...",
"composer.handle_placeholder": "Name",
"composer.discard": "Πέταγμα",
"composer.submit": "Υποβολή",
"composer.replying_to": "Απάντηση στο %1",
"composer.new_topic": "Νέο Θέμα",
"composer.uploading": "ανέβασμα...",
"composer.thumb_url_label": "Επικόλληση του URL της εικόνας του θέματος",
"composer.thumb_title": "Προσθήκη μιας εικόνας στο θέμα",
"composer.thumb_url_placeholder": "http://example.com/thumb.png",
"composer.thumb_file_label": "Ή ανέβασε ένα αρχείο",
"composer.thumb_remove": "Καθαρισμός Πεδίων",
"composer.drag_and_drop_images": "Σύρε εικόνες εδώ",
"more_users_and_guests": "%1 επιπλέον χρήστης(ες) και %2 επισκέπτης(ες)",
"more_users": "%1 επιπλέον χρήστης(ες)",
"more_guests": "%1 επιπλέον επισκέπτης(ες)",
"users_and_others": "%1 και %2 άλλοι",
"sort_by": "Ταξινόμηση κατά",
"oldest_to_newest": "Παλαιότερο προς Νεότερο",
"newest_to_oldest": "Νεότερο προς Παλαιότερο",
"most_votes": "Περισσότερες ψήφοι",
"most_posts": "Most posts"
}

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