Compare commits

...

612 Commits

Author SHA1 Message Date
barisusakli
accee7d05b use socket.io default and ["polling", "websocket"] 2014-12-25 14:16:44 -05:00
barisusakli
f403a297b4 only send back error for sortedSetsRemove 2014-12-24 02:09:08 -05:00
Julian Lam
73e7da6f03 0.6.0 2014-12-24 00:45:41 -05:00
Julian Lam
9c1b24c963 added shrinkwrap file 2014-12-24 00:45:36 -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
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
540 changed files with 12821 additions and 7888 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,12 +1,12 @@
services: services:
- redis-server - redis-server
before_install: before_install:
- 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\":\"redis\",\"redis:host\":\"127.0.0.1\",\"redis:port\":6379,\"redis:password\":\"\",\"redis:database\":0,\"admin:username\":\"admin\",\"admin:email\":\"test@example.org\",\"admin:password\":\"abcdef\",\"admin:password:confirm\":\"abcdef\"}" --ci="{\"host\":\"127.0.0.1\",\"port\":6379,\"database\":0}"
language: node_js language: node_js
node_js: node_js:
- "0.11" - "0.11"
- "0.10" - "0.10"
branches: branches:
only: only:
- master - master

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
@@ -43,8 +45,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
@@ -79,8 +83,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
@@ -115,8 +121,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
@@ -151,8 +159,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
@@ -187,8 +197,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
@@ -223,8 +235,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
@@ -259,8 +273,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
@@ -295,8 +311,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
@@ -331,8 +349,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
@@ -367,8 +387,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
@@ -403,8 +425,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
@@ -439,8 +463,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
@@ -475,8 +501,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
@@ -511,8 +539,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
@@ -547,8 +577,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
@@ -583,8 +615,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
@@ -619,8 +653,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
@@ -655,8 +691,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
@@ -691,8 +729,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

View File

@@ -1,3 +1,8 @@
# 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,4 +1,6 @@
# <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)
@@ -9,7 +11,7 @@
* [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")

104
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,12 +39,11 @@ 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 + ']';
winston.add(winston.transports.File, { },
filename: 'logs/error.log', level: global.env === 'production' ? 'info' : 'verbose'
level: 'error'
}); });
// TODO: remove once https://github.com/flatiron/winston/issues/280 is fixed // TODO: remove once https://github.com/flatiron/winston/issues/280 is fixed
@@ -59,7 +59,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 +94,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 +111,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 +146,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 +154,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),
process.send({ async.apply(meta.templates.compile),
action: 'ready' async.apply(webserver.listen)
}); ], function(err) {
if (err) {
winston.error(err.stack);
process.exit();
}
if (process.send) {
process.send({
action: 'ready'
}); });
}); }
}); });
process.on('SIGTERM', shutdown); process.on('SIGTERM', shutdown);
@@ -163,12 +191,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,11 +213,7 @@ 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) { process.exit();
cluster.worker.kill();
} else {
process.exit();
}
} }
}); });
}); });
@@ -243,7 +269,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 +284,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();
} }
}); });
} }
@@ -300,14 +330,14 @@ 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, result) {
if (err || result !== 1) { if (err || result !== 1) {
winston.error('[reset] Could not disable plugin: ' + pluginId); winston.error('[reset] Could not disable plugin: %s', pluginId);
if (err) { if (err) {
winston.error('[reset] Encountered error: ' + err.message); winston.error('[reset] Encountered error: %s', err.message);
} else { } else {
winston.info('[reset] Perhaps it has already been disabled?'); winston.info('[reset] Perhaps it has already been disabled?');
} }
} else { } else {
winston.info('[reset] Plugin `' + pluginId + '` disabled'); winston.info('[reset] Plugin `%s` disabled', pluginId);
} }
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':
bcrypt.compare(process.argv[3], process.argv[4], function(err, res) {
process.stdout.write(res ? 'true' : 'false');
});
break;
case 'hash': process.on('message', function(msg) {
async.waterfall([ if (msg.type === 'hash') {
async.apply(bcrypt.genSalt, parseInt(process.argv[3], 10)), hashPassword(msg.password, msg.rounds);
function(salt, next) { } else if (msg.type === 'compare') {
bcrypt.hash(process.argv[4], salt, next); compare(msg.password, msg.hash);
} }
], function(err, hash) { });
if (!err) {
process.stdout.write(hash); function hashPassword(password, rounds) {
} else { async.waterfall([
process.stderr.write(err.message); function(next) {
} bcrypt.genSalt(parseInt(rounds, 10), next);
}); },
break; function(salt, next) {
bcrypt.hash(password, salt, next);
}
], function(err, hash) {
if (err) {
process.send({err: err.message});
return process.disconnect();
}
process.send({result: hash});
process.disconnect();
});
}
function compare(password, hash) {
bcrypt.compare(password, hash, function(err, res) {
if (err) {
process.send({err: err.message});
return process.disconnect();
}
process.send({result: res});
process.disconnect();
});
} }

View File

@@ -15,6 +15,14 @@
"field": "initialPostDelay", "field": "initialPostDelay",
"value": 10 "value": 10
}, },
{
"field": "newbiePostDelay",
"value": 120
},
{
"field": "newbiePostDelayThreshold",
"value": 3
},
{ {
"field": "minimumPostLength", "field": "minimumPostLength",
"value": 8 "value": 8

295
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(); if (Loader.css.cache) {
} worker.send({
action: 'css-propagate',
cache: Loader.css.cache,
acpCache: Loader.css.acpCache,
hash: Loader.css.hash
});
}
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;
Loader.start = function(callback) { Loader.notifyWorkers({
var output = logrotate({ file: __dirname + '/logs/output.log', size: '1m', keep: 3, compress: true }), action: 'js-propagate',
worker; 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;
console.log('Clustering enabled: Spinning up ' + numProcs + ' process(es).\n'); Loader.notifyWorkers({
action: 'css-propagate',
for(var x=0;x<numProcs;x++) { cache: message.cache,
// Only the first worker sets up templates/sounds/jobs/etc acpCache: message.acpCache,
worker = cluster.fork({ hash: message.hash
cluster_setup: x === 0, }, worker.pid);
handle_jobs: x === 0 break;
}); }
// Logging
if (silent) {
worker.process.stdout.pipe(output);
} }
} });
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({ process.send({
type: 'error', type: 'error',
payload: err payload: err.message
}); });
} }
}; }
process.on('message', function(payload) { function concatenateScripts(scripts, callback) {
switch(payload.action) { async.map(scripts, fs.readFile, function(err, scripts) {
case 'js': if (err) {
Minifier.js.minify(payload.scripts, payload.relativePath, payload.minify, function(data) {
process.send({ process.send({
type: 'end', type: 'error',
data: data payload: err
}); });
}); }
break;
} scripts = scripts.join(require('os').EOL + ';');
});
callback(scripts);
});
}

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)

2610
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.0",
"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.7.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.9",
"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.26.0",
"winston": "^0.8.0", "winston": "^0.8.1",
"xregexp": "~2.0.0" "xregexp": "~2.0.0"
}, },
"devDependencies": { "devDependencies": {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 521 B

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,23 @@
{ {
"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.", "test.text1": "هذه رسالة تجريبية للتأكد من صحة إعدادت الرسائل الإلكترونية في منتدى NodeBB خاصتك.",
"unsub.cta": "Click here to alter those settings", "unsub.cta": "انقر هنا لتغيير تلك الإعدادات",
"closing": "Thanks!" "closing": "شكرًا لك!"
} }

View File

@@ -1,64 +1,67 @@
{ {
"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", "username-too-short": "اسم المستخدم قصير.",
"username-too-long": "Username too long", "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": "لقد سبق وحذفت هذا الرد من المفضلة",
"cant-ban-other-admins": "لايمكن حظر مدبر نظام آخر.",
"invalid-image-type": "نوع الصورة ممنوع", "invalid-image-type": "نوع الصورة ممنوع",
"group-name-too-short": "Group name too short", "group-name-too-short": "اسم المجموعة قصير",
"group-already-exists": "Group already exists", "group-already-exists": "المجموعة موجودة مسبقا",
"group-name-change-not-allowed": "Group name change not allowed", "group-name-change-not-allowed": "لايسمح بتغيير أسماء المجموعات",
"post-already-deleted": "This post has already been deleted", "post-already-deleted": "سبق وتم حذف هذا الرد",
"post-already-restored": "This post has already been restored", "post-already-restored": "سبق وتم إلغاء حذف هذا الرد",
"topic-already-deleted": "This topic has already been deleted", "topic-already-deleted": "سبق وتم حذف هذا الموضوع",
"topic-already-restored": "This topic has already been restored", "topic-already-restored": "سبق وتم إلغاء حذف هذا الرد",
"topic-thumbnails-are-disabled": "Topic thumbnails are disabled.", "topic-thumbnails-are-disabled": "الصور المصغرة غير مفعلة.",
"invalid-file": "Invalid File", "invalid-file": "ملف غير مقبول",
"uploads-are-disabled": "Uploads are disabled", "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", "reputation-system-disabled": "نظام السمعة معطل",
"not-enough-reputation-to-downvote": "You do not have enough reputation to downvote this post", "downvoting-disabled": "التصويتات السلبية معطلة",
"not-enough-reputation-to-flag": "You do not have enough reputation to flag this post", "not-enough-reputation-to-downvote": "ليس لديك سمعة تكفي لإضافة صوت سلبي لهذا الموضوع",
"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-flag": "ليس لديك سمعة تكفي للإشعار بموضوع مخل",
"reload-failed": "المنتدى واجه مشكلة أثناء إعادة التحميل: \"%1\". سيواصل المنتدى خدمة العملاء السابقين لكن يجب عليك إلغاء أي تغيير قمت به قبل إعادة التحميل.",
"registration-error": "حدث خطأ أثناء التسجيل"
} }

View File

@@ -10,67 +10,68 @@
"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.chats": "المحادثات",
"header.notifications": "Notifications", "header.notifications": "التنبيهات",
"header.search": "بحث", "header.search": "بحث",
"header.profile": "ملف", "header.profile": "ملف",
"notifications.loading": "تحميل التبليغات", "notifications.loading": "تحميل التبليغات",
"chats.loading": "تحميل الدردشات", "chats.loading": "تحميل الدردشات",
"motd.welcome": "مرحبا بكم NodeBB، منصة مناقشة المستقبل", "motd.welcome": "مرحبا بكم NodeBB، منصة مناقشة المستقبل",
"previouspage": "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": "الخصوصية",
"delete_all": "حذف الكل"
} }

View File

@@ -1,8 +1,8 @@
{ {
"groups": "Groups", "groups": "المجموعات",
"view_group": "View Group", "view_group": "معاينة المجموعة",
"details.title": "Group Details", "details.title": "تفاصيل المجموعة",
"details.members": "Member List", "details.members": "لائحة الأعضاء",
"details.has_no_posts": "This group's members have not made any posts.", "details.has_no_posts": "أعضاء هذه المجموعة لم يضيفوا أية مشاركة",
"details.latest_posts": "Latest Posts" "details.latest_posts": "آخر المشاركات"
} }

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,9 @@
{ {
"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": "لاوجود لمشاركات جديدة"
} }

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,4 @@
{ {
"results_matching": "%1 result(s) matching \"%2\", (%3 seconds)", "results_matching": "%1 نتيجة (نتائج) موافقة ل \"%2\", (%3 ثواني)",
"no-matches": "No posts found" "no-matches": "لم يتم إيجاد أية مشاركات"
} }

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,96 @@
{ {
"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.discard": "نبذ التغييرات",
"composer.submit": "Submit", "composer.submit": "حفظ",
"composer.replying_to": "Replying to %1", "composer.replying_to": "الرد على %1",
"composer.new_topic": "New Topic", "composer.new_topic": "موضوع جديد",
"composer.uploading": "uploading...", "composer.uploading": "جاري الرفع",
"composer.thumb_url_label": "Paste a topic thumbnail URL", "composer.thumb_url_label": "ألصق رابط الصورة المصغرة للموضوع",
"composer.thumb_title": "Add a thumbnail to this topic", "composer.thumb_title": "إضافة صورة مصغرة للموضوع",
"composer.thumb_url_placeholder": "http://example.com/thumb.png", "composer.thumb_url_placeholder": "http://example.com/thumb.png",
"composer.thumb_file_label": "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": "الأكثر تصويتًا"
} }

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

@@ -3,70 +3,73 @@
"offline": "ليس موجود حالياً", "offline": "ليس موجود حالياً",
"username": "إسم المستخدم", "username": "إسم المستخدم",
"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": "أتباع", "followers": "المتابعون",
"following": "يتبع", "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": "هذا المستخدم لا يتبع أحد :(", "has_no_follower": "هذا المستخدم ليس لديه أي متابع :(",
"has_no_posts": "This user didn't post anything yet.", "follows_no_one": "هذا المستخدم لا يتابع أحد :(",
"has_no_topics": "This user didn't post any topics yet.", "has_no_posts": "هذا المستخدم لم يكتب أي شيء بعد.",
"has_no_topics": "هذا المستخدم لم ينشئ أي موضوع بعد.",
"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,5 @@
"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 ميليثانية."
} }

View File

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

View File

@@ -0,0 +1,23 @@
{
"password-reset-requested": "Password Reset Requested - %1!",
"welcome-to": "Welcome to %1",
"greeting_no_name": "Hello",
"greeting_with_name": "Hello %1",
"welcome.text1": "%1 এ নিবন্ধন করার জন্য আপনাকে ধন্যবাদ!",
"welcome.text2": "আপনার একাউন্ট এ্যাক্টিভেট করার জন্য, আপনি যে ইমেইল এড্রেস ব্যাবহার করে নিবন্ধন করেছেন তা যাচাই করতে হবে",
"welcome.cta": "আপনার ইমেইল এড্রেস নিশ্চিত করার জন্য এখানে ক্লিক করুন",
"reset.text1": "আমরা আপনার পাসওয়ার্ড রিসেট করার অনুরোধ পেয়েছি, সম্ভবত আপনি আপনার পাসওয়ার্ড ভুলে গিয়েছেন বলেই। তবে যদি তা না হয়ে থাকে, তাহলে এই মেইলকে উপেক্ষা করতে পারেন।",
"reset.text2": "পাসওয়ার্ড রিসেট করতে নিচের লিংকে ক্লিক করুন",
"reset.cta": "পাসওয়ার্ড রিসেট করতে এখানে ক্লিক করুন",
"digest.notifications": "You have unread notifications from %1:",
"digest.latest_topics": "Latest topics from %1",
"digest.cta": "Click here to visit %1",
"digest.unsub.info": "This digest was sent to you due to your subscription settings.",
"digest.no_topics": "There have been no active topics in the past %1",
"notif.chat.subject": "New chat message received from %1",
"notif.chat.cta": "Click here to continue the conversation",
"notif.chat.unsub.info": "This chat notification was sent to you due to your subscription settings.",
"test.text1": "This is a test email to verify that the emailer is set up correctly for your NodeBB.",
"unsub.cta": "Click here to alter those settings",
"closing": "Thanks!"
}

View File

@@ -0,0 +1,67 @@
{
"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": "আপনার ইমেইল এড্রেস নিশ্চিত করা হয় নি, নিশ্চিত করতে এখানে ক্লিক করুন।",
"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": "ভুল ছবির টাইপ",
"group-name-too-short": "গ্রুপের নাম খুব ছোট",
"group-already-exists": "গ্রুপ ইতিমধ্যেই বিদ্যমান",
"group-name-change-not-allowed": "গ্রুপের নাম পরিবর্তনের অনুমতি নেই",
"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": "এই সদস্য তার বার্তালাপ সংরক্ষিত রেখেছেন। এই সদস্য আপনাকে ফলো করার পরই কেবলমাত্র আপনি তার সাথে চ্যাট করতে পারবেন",
"reputation-system-disabled": "সম্মাননা ব্যাবস্থা নিস্ক্রীয় রাখা হয়েছে",
"downvoting-disabled": "ঋণাত্মক ভোট নিস্ক্রীয় রাখা হয়েছে।",
"not-enough-reputation-to-downvote": "আপনার এই পোস্ট downvote করার জন্য পর্যাপ্ত সম্মাননা নেই",
"not-enough-reputation-to-flag": "এই পোষ্টকে ফ্লাগ করার জন্য আপনার পর্যাপ্ত সম্মাননা নেই",
"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": "নিবন্ধন এরর!"
}

View File

@@ -0,0 +1,77 @@
{
"home": "নীড়পাতা",
"search": "অনুসন্ধান",
"buttons.close": "বন্ধ",
"403.title": "প্রবেশাধিকার প্রত্যাখ্যাত",
"403.message": "আপনি এমন একটি পাতায় যাওয়ার চেষ্টা করছেন যেখানে আপনার প্রবেশাধিকার নেই। আপনি কি <a href='/login'>প্রবেশ করে</a> আবার চেষ্টা করবেন?",
"404.title": "পাওয়া যায়নি",
"404.message": "আপনি এমন একটি পাতায় যাওয়ার চেষ্টা করছেন যার অস্তিত্ব নেই। <a href='/'>নীড়পাতায়</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.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": "নিরাপত্তা",
"delete_all": "সব মুছে ফেলুন"
}

View File

@@ -0,0 +1,8 @@
{
"groups": "Groups",
"view_group": "View Group",
"details.title": "Group Details",
"details.members": "Member List",
"details.has_no_posts": "This group's members have not made any posts.",
"details.latest_posts": "Latest Posts"
}

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": "Type chat message here, press enter to send",
"chat.send": "প্রেরন করুন",
"chat.no_active": "আপনার কোন সচল কথোপকথন নেই",
"chat.user_typing": "%1 লিখছেন",
"chat.user_has_messaged_you": "%1 আপনাকে বার্তা পাঠিয়েছেন",
"chat.see_all": "সকল কথোপকথন দেখুন",
"chat.no-messages": "Please select a recipient to view chat message history",
"chat.recent-chats": "Recent Chats",
"chat.contacts": "Contacts",
"chat.message-history": "Message History",
"chat.pop-out": "Pop out chat",
"chat.maximize": "Maximize",
"chat.seven_days": "7 Days",
"chat.thirty_days": "30 Days",
"chat.three_months": "3 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": "You are now leaving %1.",
"continue_to": "Continue to %1",
"return_to": "Return to %1",
"new_notification": "নতুন বিজ্ঞপ্তি",
"you_have_unread_notifications": "আপনার অপঠিত বিজ্ঞপ্তি আছে।",
"new_message_from": "<strong>%1</strong> থেকে নতুন বার্তা",
"upvoted_your_post_in": "<strong>%1</strong> has upvoted your post in <strong>%2</strong>.",
"moved_your_post": "<strong>%1</strong> has moved your post.",
"moved_your_topic": "<strong>%1</strong> has moved your topic.",
"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> started following you.",
"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": "Topics tagged under \"%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,9 @@
{
"title": "সাম্প্রতিক",
"day": "দিন",
"week": "সপ্তাহ",
"month": "মাস",
"year": "বছর",
"alltime": "সবসময় ",
"no_recent_topics": "কোন সাম্প্রতিক টপিক নেই। "
}

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": "Please enter your <strong>email address</strong> and we will send you an email with instructions on how to reset your account.",
"enter_email_address": "Enter Email Address",
"password_reset_sent": "Password Reset Sent",
"invalid_email": "Invalid Email / Email does not exist!"
}

View File

@@ -0,0 +1,4 @@
{
"results_matching": "\"%2\" এর সাথে মিলিয়ে %1 ফলাফল পাওয়া গেছে, ( %3 seconds সময় লেগেছে )",
"no-matches": "কোন পোষ্ট খুঁজে পাওয়া যায় নি"
}

View File

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

View File

@@ -0,0 +1,7 @@
{
"no_tag_topics": "There are no topics with this tag.",
"tags": "Tags",
"enter_tags_here": "Enter tags here. Press enter after each tag.",
"enter_tags_here_short": "Enter tags...",
"no_tags": "There are no tags yet."
}

View File

@@ -0,0 +1,96 @@
{
"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": "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": "Stop watching this topic",
"share_this_post": "Share this Post",
"thread_tools.title": "Topic Tools",
"thread_tools.markAsUnreadForAll": "Mark Unread",
"thread_tools.pin": "Pin Topic",
"thread_tools.unpin": "Unpin Topic",
"thread_tools.lock": "Lock Topic",
"thread_tools.unlock": "Unlock Topic",
"thread_tools.move": "Move Topic",
"thread_tools.move_all": "Move All",
"thread_tools.fork": "Fork Topic",
"thread_tools.delete": "Delete Topic",
"thread_tools.delete_confirm": "Are you sure you want to delete this topic?",
"thread_tools.restore": "Restore Topic",
"thread_tools.restore_confirm": "Are you sure you want to restore this topic?",
"thread_tools.purge": "Purge Topic",
"thread_tools.purge_confirm": "Are you sure you want to purge this topic?",
"topic_move_success": "This topic has been successfully moved to %1",
"post_delete_confirm": "Are you sure you want to delete this post?",
"post_restore_confirm": "Are you sure you want to restore this post?",
"post_purge_confirm": "Are you sure you want to purge this post?",
"load_categories": "Loading Categories",
"disabled_categories_note": "Disabled Categories are greyed out",
"confirm_move": "Move",
"confirm_fork": "Fork",
"favourite": "Favourite",
"favourites": "Favourites",
"favourites.has_no_favourites": "You don't have any favourites, favourite some posts to see them here!",
"loading_more_posts": "Loading More Posts",
"move_topic": "Move Topic",
"move_topics": "Move Topics",
"move_post": "Move Post",
"post_moved": "Post moved!",
"fork_topic": "Fork Topic",
"topic_will_be_moved_to": "This topic will be moved to the category",
"fork_topic_instruction": "Click the posts you want to fork",
"fork_no_pids": "No posts selected!",
"fork_success": "Successfully forked topic! Click here to go to the forked topic.",
"composer.title_placeholder": "Enter your topic title here...",
"composer.discard": "Discard",
"composer.submit": "Submit",
"composer.replying_to": "Replying to %1",
"composer.new_topic": "New Topic",
"composer.uploading": "uploading...",
"composer.thumb_url_label": "Paste a topic thumbnail URL",
"composer.thumb_title": "Add a thumbnail to this topic",
"composer.thumb_url_placeholder": "http://example.com/thumb.png",
"composer.thumb_file_label": "Or upload a file",
"composer.thumb_remove": "Clear fields",
"composer.drag_and_drop_images": "Drag and Drop Images Here",
"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": "Sort by",
"oldest_to_newest": "Oldest to Newest",
"newest_to_oldest": "Newest to Oldest",
"most_votes": "Most votes"
}

View File

@@ -0,0 +1,9 @@
{
"title": "Unread",
"no_unread_topics": "কোন অপঠিত টপিক নেই",
"load_more": "আরো লোড করুন",
"mark_as_read": "Mark as Read",
"selected": "Selected",
"all": "All",
"topics_marked_as_read.success": "Topics marked as read!"
}

View File

@@ -0,0 +1,75 @@
{
"banned": "নিষিদ্ধ",
"offline": "অফলাইন",
"username": "সদস্যের নাম",
"email": "ইমেইল",
"confirm_email": "ইমেইল নিশ্চিত করুন",
"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.",
"fullname": "পুর্ণ নাম",
"website": "ওয়েবসাইট",
"location": "স্থান",
"age": "বয়স",
"joined": "যোগদান করেছেন",
"lastonline": "সর্বশেষ অনলাইনে ছিলেন",
"profile": "প্রোফাইল",
"profile_views": "প্রোফাইল দেখেছেন",
"reputation": "সন্মাননা",
"favourites": "পছন্দের তালিকা",
"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": "The username you requested was already taken, so we have altered it slightly. You are now known as <strong>%1</strong>",
"upload_picture": "ছবি আপলোড করুন",
"upload_a_picture": "ছবি (একটি) আপলোড করুন",
"image_spec": "আপনি কেবলমাত্র PNG, JPG অথবা GIF ফাইল আপলোড করতে পারবেন",
"max": "সর্বোচ্চ",
"settings": "সেটিংস",
"show_email": "আমার ইমেইল দেখাও",
"show_fullname": "আমার সম্পূর্ণ নাম দেখাও",
"restrict_chats": "আমি যাদের ফলো করি কেবলমাত্র তাদের থেকে বার্তা গ্রহন করা হোক",
"digest_label": "Subscribe to Digest",
"digest_description": "Subscribe to email updates for this forum (new notifications and topics) according to a set schedule",
"digest_off": "বন্ধ",
"digest_daily": "দৈনিক",
"digest_weekly": "সাপ্তাহিক",
"digest_monthly": "মাসিক",
"send_chat_notifications": "Send an email if a new chat message arrives and I am not online",
"has_no_follower": "This user doesn't have any followers :(",
"follows_no_one": "This user isn't following anyone :(",
"has_no_posts": "This user didn't post anything yet.",
"has_no_topics": "This user didn't post any topics yet.",
"email_hidden": "Email Hidden",
"hidden": "hidden",
"paginate_description": "Paginate topics and posts instead of using infinite scroll.",
"topics_per_page": "Topics per Page",
"posts_per_page": "Posts per Page",
"notification_sounds": "Play a sound when you receive a notification.",
"browsing": "Browsing Settings",
"open_links_in_new_tab": "Open outgoing links in new tab?",
"enable_topic_searching": "Enable In-Topic Searching",
"topic_search_help": "If enabled, in-topic searching will override the browser's default page search behaviour and allow you to search through the entire topic, instead of what is only shown on screen.",
"follow_topics_you_reply_to": "Follow topics that you reply to.",
"follow_topics_you_create": "Follow topics you create."
}

View File

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

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,23 @@
{ {
"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.", "test.text1": "Tento testovací email slouží k ověření, že mailer je správně nastaven. NodeBB.",
"unsub.cta": "Click here to alter those settings", "unsub.cta": "Chcete-li změnit tyto nastavení, klikněte zde.",
"closing": "Thanks!" "closing": "Díky!"
} }

View File

@@ -1,64 +1,67 @@
{ {
"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", "username-too-short": "Uživatelské jméno je příliš krátké",
"username-too-long": "Username too long", "username-too-long": "Uživatelské jméno je příliš dlouhé",
"user-banned": "User banned", "user-banned": "Uživatel byl zakázán",
"user-too-new": "Sorry, you are required to wait %1 seconds before making your first post", "user-too-new": "Pardon, ale je potřeba vyčkat %1 sekund, než-li budete moci vytvořit svůj první příspěvek.",
"no-category": "Category does not exist", "no-category": "Kategorie neexistuje",
"no-topic": "Topic does not exist", "no-topic": "Téma neexistuje",
"no-post": "Post does not exist", "no-post": "Příspěvek neexistuje",
"no-group": "Group does not exist", "no-group": "Skupina neexistuje",
"no-user": "User does not exist", "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": "Neplatný typ obrázku",
"group-name-too-short": "Group name too short", "group-name-too-short": "Název skupiny je příliš krátký",
"group-already-exists": "Group already exists", "group-already-exists": "Skupina už exstuje",
"group-name-change-not-allowed": "Group name change not allowed", "group-name-change-not-allowed": "Změna názvu skupiny není povolena",
"post-already-deleted": "This post has already been deleted", "post-already-deleted": "Tento příspěvek byl již vymazán",
"post-already-restored": "This post has already been restored", "post-already-restored": "Tento příspěvek byl již obnoven",
"topic-already-deleted": "This topic has already been deleted", "topic-already-deleted": "Toto téma bylo již vymazáno",
"topic-already-restored": "This topic has already been restored", "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",
"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"
} }

View File

@@ -10,24 +10,24 @@
"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.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 +36,14 @@
"previouspage": "Předchozí stránka", "previouspage": "Předchozí stránka",
"nextpage": "Další stránka", "nextpage": "Další stránka",
"alert.success": "Success", "alert.success": "Success",
"alert.error": "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 +58,8 @@
"user_posted_ago": "%1 posted %2", "user_posted_ago": "%1 posted %2",
"guest_posted_ago": "Guest posted %1", "guest_posted_ago": "Guest posted %1",
"last_edited_by_ago": "last edited by %1 %2", "last_edited_by_ago": "last edited by %1 %2",
"norecentposts": "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 +67,11 @@
"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",
"delete_all": "Vymazat vše"
} }

View File

@@ -1,8 +1,8 @@
{ {
"groups": "Groups", "groups": "Skupiny",
"view_group": "View Group", "view_group": "Prohlédnout skupinu",
"details.title": "Group Details", "details.title": "podrobnosti skupiny",
"details.members": "Member List", "details.members": "Seznam členů",
"details.has_no_posts": "This group's members have not made any posts.", "details.has_no_posts": "Členové této skupiny dosud neodeslali ani jeden příspěvek.",
"details.latest_posts": "Latest Posts" "details.latest_posts": "Nejnovější příspěvky"
} }

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

@@ -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,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",

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

@@ -3,8 +3,8 @@
"offline": "Offline", "offline": "Offline",
"username": "Uživatelské jméno", "username": "Uživatelské jméno",
"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,7 +12,7 @@
"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é",
@@ -24,15 +24,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 +48,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",
@@ -67,6 +68,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,5 @@
"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."
} }

View File

@@ -9,11 +9,11 @@
"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.",

View File

@@ -17,48 +17,51 @@
"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.",
"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": "Ungültiger Bildtyp",
"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", "post-already-deleted": "Dieser Beitrag ist bereits gelöscht worden",
"post-already-restored": "This post has already been restored", "post-already-restored": "Dieser Beitrag ist bereits wiederhergestellt worden",
"topic-already-deleted": "This topic has already been deleted", "topic-already-deleted": "Dieses Thema ist bereits gelöscht worden",
"topic-already-restored": "This topic has already been restored", "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.",
"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"
} }

View File

@@ -72,5 +72,6 @@
"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",
"delete_all": "Alles löschen"
} }

View File

@@ -1,5 +1,5 @@
{ {
"groups": "Groups", "groups": "Gruppen",
"view_group": "Gruppe betrachten", "view_group": "Gruppe betrachten",
"details.title": "Gruppendetails", "details.title": "Gruppendetails",
"details.members": "Mitgliederliste", "details.members": "Mitgliederliste",

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

@@ -72,7 +72,7 @@
"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.discard": "Verwerfen", "composer.discard": "Verwerfen",
"composer.submit": "Absenden", "composer.submit": "Absenden",

View File

@@ -47,7 +47,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",
@@ -67,6 +68,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": "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": "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

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

View File

@@ -0,0 +1,23 @@
{
"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": "Αυτή η ειδοποίηση για συνομιλία σου στάλθηκε λόγω των ρυθμίσεών σου. ",
"test.text1": "Αυτό είναι ένα δοκιμαστικό email για να επιβεβαιώσουμε ότι ο emailer έχει στηθεί σωστά για το NodeBB.",
"unsub.cta": "Κάνε κλικ εδώ για να αλλάξεις αυτές τις ρυθμίσεις",
"closing": "Ευχαριστούμε!"
}

View File

@@ -0,0 +1,67 @@
{
"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.",
"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": "Άκυρος τύπος εικόνας",
"group-name-too-short": "Το όνομα της ομάδας είναι πολύ μικρό",
"group-already-exists": "Το όνομα της ομάδας υπάρχει ήδη",
"group-name-change-not-allowed": "Αλλαγή του ονόματος της ομάδας δεν επιτρέπεται",
"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",
"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"
}

View File

@@ -0,0 +1,77 @@
{
"home": "Κεντρική",
"search": "Αναζήτηση",
"buttons.close": "Κλείσιμο",
"403.title": "Δεν επιτρέπεται η πρόσβαση",
"403.message": "Φαίνεται πως βρέθηκες σε κάποια σελίδα στην οποία δεν έχεις πρόσβαση. Ίσως πρέπει να <a href='/login'>συνδεθείς</a>;",
"404.title": "Δεν βρέθηκε",
"404.message": "Φαίνεται πως βρέθηκες σε κάποια σελίδα στην οποία δεν έχεις πρόσβαση. Επιστροφή στην <a href='/'>κεντρική σελίδα</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.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",
"delete_all": "Delete All"
}

View File

@@ -0,0 +1,8 @@
{
"groups": "Groups",
"view_group": "Προβολή Ομάδας",
"details.title": "Λεπτομέρειες Ομάδας",
"details.members": "Λίστα Μελών",
"details.has_no_posts": "Τα μέλη αυτής της ομάδας δεν έχουν δημοσιεύσει τίποτα.",
"details.latest_posts": "Τελευταίες δημοσιεύσεις."
}

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,9 @@
{
"title": "Πρόσφατα",
"day": "Ημέρα",
"week": "Εβδομάδα",
"month": "Μήνας",
"year": "Έτος",
"alltime": "Όλο το Ιστορικό",
"no_recent_topics": "Δεν υπάρχουν πρόσφατα θέματα."
}

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,4 @@
{
"results_matching": "%1 αποτελεσμα(τα) για \"%2\", (%3 δευτερόλεπτα)",
"no-matches": "Δεν βρέθηκαν δημοσιεύσεις"
}

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,96 @@
{
"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.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": "Περισσότερες ψήφοι"
}

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,75 @@
{
"banned": "Αποκλεισμένος/η",
"offline": "Εκτός Σύνδεσης",
"username": "Όνομα Χρήστη",
"email": "Emai",
"confirm_email": "Επιβεβαίωση Email",
"delete_account": "Διαγραφή Λογαριασμού",
"delete_account_confirm": "Είσαι σίγουρος/η πως θέλεις να διαγράψεις τον λογαριασμό σου; <br /><strong>Αυτή η ενέργεια δεν μπορεί να αναιρεθεί και δεν θα μπορέσεις να επανακτήσεις τα δεδομένα σου</strong><br /><br />Γράψε το όνομα χρήστη σου για να επιβεβαιώσεις πως θέλεις να καταστρέψεις αυτόν τον λογαριασμό.",
"fullname": "Πλήρες Όνομα",
"website": "Ιστοσελίδα",
"location": "Τοποθεσία",
"age": "Ηλικία",
"joined": "Έγινε μέλος στις",
"lastonline": "Τελευταία φορά συνδέθηκε στις",
"profile": "Προφίλ",
"profile_views": "Views του προφίλ",
"reputation": "Φήμη",
"favourites": "Αγαπημένα",
"followers": "Ακόλουθοι",
"following": "Ακολουθά",
"signature": "Υπογραφή",
"gravatar": "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": "Εμφάνιση του email μου",
"show_fullname": "Show My Full Name",
"restrict_chats": "Only allow chat messages from users I follow",
"digest_label": "Εγγραφή στην Σύνοψη",
"digest_description": "Εγγράψου σε ενημερώσεις με email για αυτό το φόρουμ (νεες ειδοποιήσεις και θέματα), βάσει του επιλεγμένου προγράμματος",
"digest_off": "Off",
"digest_daily": "Ημερήσια",
"digest_weekly": "Εβδομαδιαίως",
"digest_monthly": "Μηνιαία",
"send_chat_notifications": "Αποστολή email αν μου έρθει μήνυμα συνομιλίας και δεν είμαι συνδεδεμένος",
"has_no_follower": "Αυτός ο χρήστης δεν έχει κανέναν ακόλουθο :(",
"follows_no_one": "Αυτός ο χρήστης δεν ακολουθεί κανέναν :(",
"has_no_posts": "Αυτός ο χρήστης δεν έχει δημοσιεύσει τίποτα ακόμη.",
"has_no_topics": "Αυτός ο χρήστης δεν έχει δημοσιεύσει κανένα θέμα ακόμη.",
"email_hidden": "Κρυμμένο Emai",
"hidden": "κρυμμένο",
"paginate_description": "Σελιδοποίηση των θεμάτων και των δημοσιεύσεων αντί για χρήση άπειρου scroll.",
"topics_per_page": "Θέματα ανά σελίδα",
"posts_per_page": "Δημοσιεύσεις ανά σελίδα",
"notification_sounds": "Αναπαραγωγή ήχου όταν λαμβάνεις μια ειδοποίηση.",
"browsing": "Επιλογές Περιήγησης",
"open_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_you_create": "Ακολούθα τα θέματα που δημιουργείς."
}

View File

@@ -0,0 +1,9 @@
{
"latest_users": "Πρόσφατοι Χρήστες",
"top_posters": "Top Δημοσιεύοντες",
"most_reputation": "Υψηλότερη Φήμη",
"search": "Αναζήτηση",
"enter_username": "Γράψε ένα όνομα χρήστη προς αναζήτηση",
"load_more": "Φόρτωση περισσότερων",
"users-found-search-took": "%1 χρήστης(ες) βρέθηκαν! Η αναζήτηση πήρε %2 ms."
}

View File

@@ -13,7 +13,7 @@
"digest.latest_topics": "Latest topics from %1", "digest.latest_topics": "Latest topics from %1",
"digest.cta": "Click here to visit %1", "digest.cta": "Click here to visit %1",
"digest.unsub.info": "This digest was sent to you due to your subscription settings.", "digest.unsub.info": "This digest was sent to you due to your subscription settings.",
"digest.daily.no_topics": "There have been no active topics in the past day", "digest.no_topics": "There have been no active topics in the past %1",
"notif.chat.subject": "New chat message received from %1", "notif.chat.subject": "New chat message received from %1",
"notif.chat.cta": "Click here to continue the conversation", "notif.chat.cta": "Click here to continue the conversation",
"notif.chat.unsub.info": "This chat notification was sent to you due to your subscription settings.", "notif.chat.unsub.info": "This chat notification was sent to you due to your subscription settings.",

View File

@@ -37,6 +37,7 @@
"title-too-short": "Please enter a longer title. Titles should contain at least %1 characters.", "title-too-short": "Please enter a longer title. Titles should contain at least %1 characters.",
"title-too-long": "Please enter a shorter title. Titles can't be longer than %1 characters.", "title-too-long": "Please enter a shorter title. Titles can't be longer than %1 characters.",
"too-many-posts": "You can only post once every %1 seconds - please wait before posting again", "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", "file-too-big": "Maximum allowed file size is %1 kbs - please upload a smaller file",
"cant-vote-self-post": "You cannot vote for your own post", "cant-vote-self-post": "You cannot vote for your own post",
"already-favourited": "You have already favourited this post", "already-favourited": "You have already favourited this post",
@@ -56,9 +57,11 @@
"upload-error": "Upload Error : %1", "upload-error": "Upload Error : %1",
"signature-too-long": "Sorry, your signature cannot be longer than %1 characters.", "signature-too-long": "Sorry, your signature cannot be longer than %1 characters.",
"cant-chat-with-yourself": "You can't chat with yourself!", "cant-chat-with-yourself": "You can't chat with yourself!",
"chat-restricted": "This user has restricted their chat messages. They must follow you before you can chat with them",
"reputation-system-disabled": "Reputation system is disabled.", "reputation-system-disabled": "Reputation system is disabled.",
"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": "Registration Error"
} }

View File

@@ -72,5 +72,6 @@
"guests": "Guests", "guests": "Guests",
"updated.title": "Forum Updated", "updated.title": "Forum Updated",
"updated.message": "This forum has just been updated to the latest version. Click here to refresh the page.", "updated.message": "This forum has just been updated to the latest version. Click here to refresh the page.",
"privacy": "Privacy" "privacy": "Privacy",
"delete_all": "Delete All"
} }

View File

@@ -12,7 +12,6 @@
"chat.message-history": "Message History", "chat.message-history": "Message History",
"chat.pop-out": "Pop out chat", "chat.pop-out": "Pop out chat",
"chat.maximize": "Maximize", "chat.maximize": "Maximize",
"chat.yesterday": "Yesterday",
"chat.seven_days": "7 Days", "chat.seven_days": "7 Days",
"chat.thirty_days": "30 Days", "chat.thirty_days": "30 Days",
"chat.three_months": "3 Months", "chat.three_months": "3 Months",

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