mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-12-24 01:10:31 +01:00
Compare commits
608 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
edae9522b5 | ||
|
|
7ff2b7fbb1 | ||
|
|
22e74dc0bb | ||
|
|
27acf19325 | ||
|
|
a0f0dd021b | ||
|
|
dad31c8ea2 | ||
|
|
45a0895c34 | ||
|
|
975cb51262 | ||
|
|
41c3eb8298 | ||
|
|
96f13e4f5d | ||
|
|
0428912c6d | ||
|
|
ae64b9f495 | ||
|
|
61d1f56500 | ||
|
|
1719bff89c | ||
|
|
8b4510cc70 | ||
|
|
415dfbb9f7 | ||
|
|
cf30876fbf | ||
|
|
ef02bdc467 | ||
|
|
a9265dbf5c | ||
|
|
619034484f | ||
|
|
654c8e6148 | ||
|
|
e3f5b706a5 | ||
|
|
f352be63dc | ||
|
|
1a9b15989b | ||
|
|
666fe209f0 | ||
|
|
3d2398ac4c | ||
|
|
518552543d | ||
|
|
cb0d74bdd1 | ||
|
|
0a7ff2085e | ||
|
|
c1ac291284 | ||
|
|
b912a564e3 | ||
|
|
1a22b0ecf2 | ||
|
|
98ebc4d9ac | ||
|
|
b736347cd3 | ||
|
|
c1f5889f13 | ||
|
|
91676c6c7c | ||
|
|
4b738c8cd3 | ||
|
|
890bf03fcc | ||
|
|
8a12ac3470 | ||
|
|
30cce14204 | ||
|
|
4f1ee1fcb1 | ||
|
|
3386893b58 | ||
|
|
7fee0e3272 | ||
|
|
8224a2a930 | ||
|
|
91293ecc6d | ||
|
|
f7295aaad5 | ||
|
|
4ac9270a2a | ||
|
|
28dd31a8e7 | ||
|
|
9bfb6c7281 | ||
|
|
41e0240010 | ||
|
|
9e1d8da643 | ||
|
|
c1cc35a949 | ||
|
|
054685265d | ||
|
|
66e7cdac7a | ||
|
|
fb0588576d | ||
|
|
d27c9696e3 | ||
|
|
67cb249122 | ||
|
|
b1d6c9ba29 | ||
|
|
0888aae6d2 | ||
|
|
f59937314b | ||
|
|
8fac8d6188 | ||
|
|
3727e39f87 | ||
|
|
2e623dd271 | ||
|
|
98b98a1130 | ||
|
|
cbe19cb8b4 | ||
|
|
f728abda06 | ||
|
|
0f8a68c045 | ||
|
|
ddeeee7f1a | ||
|
|
3e4d477e48 | ||
|
|
8a88295d04 | ||
|
|
dc78125aa6 | ||
|
|
1fce1056c5 | ||
|
|
81c8d70c51 | ||
|
|
b916e42f40 | ||
|
|
9fbb3b11ef | ||
|
|
63976c42fe | ||
|
|
5a0efd2d42 | ||
|
|
46789910a8 | ||
|
|
8c67031609 | ||
|
|
7d468e7203 | ||
|
|
2ca40c6729 | ||
|
|
3d611ab70e | ||
|
|
89399c0ed5 | ||
|
|
a7f235dbac | ||
|
|
1452557838 | ||
|
|
10bb8cf747 | ||
|
|
485b6ced1d | ||
|
|
591424cea1 | ||
|
|
0ee85d5a0b | ||
|
|
60352eca54 | ||
|
|
6a976a9db0 | ||
|
|
d8d5f416cc | ||
|
|
74aa12c95b | ||
|
|
62ac9a8bbb | ||
|
|
bc4b19b4d7 | ||
|
|
755860f16b | ||
|
|
e8c17feedb | ||
|
|
783db5748b | ||
|
|
50b2ebf844 | ||
|
|
4ffbbae878 | ||
|
|
bda5d14425 | ||
|
|
0f29433baf | ||
|
|
ebe7f11d0b | ||
|
|
8f08d9cac0 | ||
|
|
1e418f5b5e | ||
|
|
82eda23a9e | ||
|
|
c248805165 | ||
|
|
830cddfb40 | ||
|
|
28efcb59cb | ||
|
|
bf20965f0b | ||
|
|
bcf85fcfba | ||
|
|
3d1cf168f2 | ||
|
|
196a98c6ff | ||
|
|
015727855f | ||
|
|
f2bf33a28c | ||
|
|
8d4bb8bbbe | ||
|
|
7c2ecb1234 | ||
|
|
c428ba80aa | ||
|
|
c7e078d495 | ||
|
|
25ebbd6563 | ||
|
|
9b68dc37cc | ||
|
|
80ea12c1c1 | ||
|
|
5a328485dd | ||
|
|
0728a99453 | ||
|
|
49b8b983b6 | ||
|
|
3e94def687 | ||
|
|
ed0adf2ccf | ||
|
|
64192731a0 | ||
|
|
6cfaea06f0 | ||
|
|
89f5e06bbf | ||
|
|
19ee717444 | ||
|
|
0926ae6ecf | ||
|
|
62e44dc5be | ||
|
|
da64810a4a | ||
|
|
ff962b5ddf | ||
|
|
eb075c7328 | ||
|
|
a528790615 | ||
|
|
178600b1bb | ||
|
|
ee8e048015 | ||
|
|
abe59131dd | ||
|
|
f4cf482a87 | ||
|
|
63572c23ce | ||
|
|
8d316d1859 | ||
|
|
719cfc0d57 | ||
|
|
04dab1d550 | ||
|
|
1783f918bc | ||
|
|
c8b2fc46dc | ||
|
|
835c73c431 | ||
|
|
e62948f73d | ||
|
|
ab70ba3905 | ||
|
|
47df62e700 | ||
|
|
7866107988 | ||
|
|
f76a788290 | ||
|
|
4246f59729 | ||
|
|
f02fba29dc | ||
|
|
e6982da955 | ||
|
|
7ef5214ef9 | ||
|
|
506c34a84d | ||
|
|
6b4f35c2fa | ||
|
|
806a1e50d2 | ||
|
|
a5f4e20681 | ||
|
|
b91ae0880d | ||
|
|
d74a6bd35e | ||
|
|
2a3e13f360 | ||
|
|
1d62bd6d7b | ||
|
|
73a9ca09c9 | ||
|
|
d4da98404c | ||
|
|
8b8fe39303 | ||
|
|
998b9e7918 | ||
|
|
463b2076a6 | ||
|
|
fec7ebed04 | ||
|
|
66fca4e066 | ||
|
|
b18a24e97b | ||
|
|
d22b076b2e | ||
|
|
ee0282f5aa | ||
|
|
b2429ef00e | ||
|
|
fa1afbcf4a | ||
|
|
2bed40bed0 | ||
|
|
90b81262fa | ||
|
|
9cb4de50a2 | ||
|
|
44687394dc | ||
|
|
22f05b3961 | ||
|
|
f3c8d7da8e | ||
|
|
8e319a9b25 | ||
|
|
f7967bdf68 | ||
|
|
14bc83a88e | ||
|
|
6da3239230 | ||
|
|
c70eaa0a34 | ||
|
|
057d1d58e3 | ||
|
|
38756a0c34 | ||
|
|
ced8e72a69 | ||
|
|
ed4ebd2277 | ||
|
|
605a53812e | ||
|
|
4333d217a1 | ||
|
|
fe2cfa8039 | ||
|
|
5e08e67b0e | ||
|
|
1339c75781 | ||
|
|
deba3e2752 | ||
|
|
e1554f619a | ||
|
|
a9bc6a0962 | ||
|
|
6436aa65ad | ||
|
|
09f198fc37 | ||
|
|
e7f0a77fd8 | ||
|
|
ce5a0a2113 | ||
|
|
600a872031 | ||
|
|
b0128f8572 | ||
|
|
9e0ce0272c | ||
|
|
4784f016a7 | ||
|
|
54ae334995 | ||
|
|
f8f35d7e7e | ||
|
|
ed87466208 | ||
|
|
8e6bd7e913 | ||
|
|
1dba75e9c9 | ||
|
|
b460e5909c | ||
|
|
21b610826c | ||
|
|
0f9b0b7846 | ||
|
|
35af763418 | ||
|
|
bd893cdaa3 | ||
|
|
c84ad776c2 | ||
|
|
154ffea01b | ||
|
|
4ff5452d6f | ||
|
|
fe9f82f6b4 | ||
|
|
3c3f45d91b | ||
|
|
1feb111ade | ||
|
|
b0a24d6dd5 | ||
|
|
eddb98681c | ||
|
|
4b8dcd4c2b | ||
|
|
7c4aebbdf0 | ||
|
|
6d2e0aa970 | ||
|
|
288b5456f7 | ||
|
|
f96c8c4db0 | ||
|
|
52c38a1dc8 | ||
|
|
022e8df035 | ||
|
|
820f8cdf87 | ||
|
|
227456fb17 | ||
|
|
94c4f87b2f | ||
|
|
997fb2b348 | ||
|
|
4b92df821b | ||
|
|
3e69bcdf1f | ||
|
|
c1149d045c | ||
|
|
3acaac4c7c | ||
|
|
1958dffa04 | ||
|
|
6c25b9dbaa | ||
|
|
176ed9199b | ||
|
|
4f9717fb08 | ||
|
|
7935bd9efb | ||
|
|
56d05b4e86 | ||
|
|
b0eb2aed0e | ||
|
|
543d85212b | ||
|
|
63109c0705 | ||
|
|
8654a996d3 | ||
|
|
abbbc3d7c2 | ||
|
|
1438f40984 | ||
|
|
21166069dc | ||
|
|
8593ea87e9 | ||
|
|
945c2b0b8a | ||
|
|
7cbcb52151 | ||
|
|
1d401329ee | ||
|
|
f4e62fb1cd | ||
|
|
27e53b42f3 | ||
|
|
d30c316be9 | ||
|
|
b4fc277307 | ||
|
|
8ad9a103b3 | ||
|
|
96f5312de9 | ||
|
|
a0df389021 | ||
|
|
e954ca1025 | ||
|
|
a70c69fa83 | ||
|
|
9455e5b2b9 | ||
|
|
78895d0586 | ||
|
|
d1ff3d6298 | ||
|
|
9215c7d1e1 | ||
|
|
a7668a7fb1 | ||
|
|
840b49b9b2 | ||
|
|
4694382cc7 | ||
|
|
c5e49b08ce | ||
|
|
5aea6c6aa1 | ||
|
|
4404e81991 | ||
|
|
cb25faaa2d | ||
|
|
e6a17a6349 | ||
|
|
ea04aeded4 | ||
|
|
7d1c7e0a7b | ||
|
|
a658757382 | ||
|
|
409151050a | ||
|
|
be43cd2597 | ||
|
|
f24b630e1a | ||
|
|
c40bdad87e | ||
|
|
346e08908b | ||
|
|
6399b42826 | ||
|
|
aa370310a1 | ||
|
|
c5a48b44a5 | ||
|
|
ff84d6c52f | ||
|
|
ac1b9692f2 | ||
|
|
058fdca44e | ||
|
|
659685722c | ||
|
|
d50dd801ed | ||
|
|
193c92e386 | ||
|
|
6385b88e99 | ||
|
|
ff850b2431 | ||
|
|
4f8647a59c | ||
|
|
9fe9ab0869 | ||
|
|
123354ca36 | ||
|
|
f8d4ec6ca6 | ||
|
|
3605ac811d | ||
|
|
3479832593 | ||
|
|
8cb475482a | ||
|
|
4eacfef02b | ||
|
|
58e0a366c8 | ||
|
|
cb69934ad0 | ||
|
|
a9645475fe | ||
|
|
daea8a86c1 | ||
|
|
054f3da65d | ||
|
|
07adb49e7f | ||
|
|
6b34065f2a | ||
|
|
04ee5c0dfb | ||
|
|
0faa493745 | ||
|
|
fc1a31ed87 | ||
|
|
c78309b573 | ||
|
|
89af00d1d5 | ||
|
|
1a61ffc595 | ||
|
|
57358743fa | ||
|
|
f066ddb8f6 | ||
|
|
9e52236973 | ||
|
|
eff03e4b57 | ||
|
|
9855429445 | ||
|
|
31975a628e | ||
|
|
aea0eb18d1 | ||
|
|
30f387710c | ||
|
|
6ebe707ca5 | ||
|
|
2568744167 | ||
|
|
6b4e77e3ce | ||
|
|
2add84a568 | ||
|
|
07859f7e8c | ||
|
|
9f0e55ad3e | ||
|
|
7a2f0ae15b | ||
|
|
c437b33652 | ||
|
|
15f9aaa6ee | ||
|
|
c18678cef2 | ||
|
|
39d73d0c3d | ||
|
|
ce8ea6ea42 | ||
|
|
f194809f06 | ||
|
|
7777812e62 | ||
|
|
c4fc7bf9b5 | ||
|
|
e838b616df | ||
|
|
1ed62aa82f | ||
|
|
c0a52924f1 | ||
|
|
18252fb9a8 | ||
|
|
31a6d4b39a | ||
|
|
0236ea86ad | ||
|
|
75ebe78619 | ||
|
|
40c9fca918 | ||
|
|
05ddd60c5e | ||
|
|
58ac55c16a | ||
|
|
222dccaf67 | ||
|
|
f35a0f430a | ||
|
|
944a798552 | ||
|
|
ba3582b873 | ||
|
|
66eaae44a6 | ||
|
|
819917daf2 | ||
|
|
8e886c853b | ||
|
|
896ff2152f | ||
|
|
8af54255d8 | ||
|
|
a66659ff6c | ||
|
|
0c4b875e10 | ||
|
|
3261edcc32 | ||
|
|
9049dcd76c | ||
|
|
8b576a3704 | ||
|
|
1cca8eaddc | ||
|
|
6a55c02702 | ||
|
|
2657804c1f | ||
|
|
3ecbb624d8 | ||
|
|
506035b5f7 | ||
|
|
71ed50b9c1 | ||
|
|
92d1ee31e4 | ||
|
|
b06e8dba7b | ||
|
|
397835a05a | ||
|
|
7f48edc02a | ||
|
|
52eace4b38 | ||
|
|
e7f4cde466 | ||
|
|
c05fba98d4 | ||
|
|
787306a6c1 | ||
|
|
84ff1152f7 | ||
|
|
ee02771959 | ||
|
|
732b59c2d8 | ||
|
|
66f70b2aa0 | ||
|
|
0b4d7d1f8e | ||
|
|
006fc700dd | ||
|
|
34afb74762 | ||
|
|
0a56158bb4 | ||
|
|
27e9282aa4 | ||
|
|
854c078b73 | ||
|
|
36653525bd | ||
|
|
507517fce5 | ||
|
|
bf0c02a71e | ||
|
|
a7855c4cc4 | ||
|
|
580a016b0e | ||
|
|
ac6cd02fa2 | ||
|
|
a17ffcd094 | ||
|
|
338f90fc5e | ||
|
|
9084520027 | ||
|
|
2e1b99f504 | ||
|
|
0ce4b87d85 | ||
|
|
856ba78a5f | ||
|
|
87ba768f5c | ||
|
|
0b3ea5adb4 | ||
|
|
8cbad61e8a | ||
|
|
cdaea61136 | ||
|
|
0a41741b7e | ||
|
|
e33e046f15 | ||
|
|
a48bbdbfe3 | ||
|
|
57e54d559b | ||
|
|
60de084475 | ||
|
|
1e2bda13d0 | ||
|
|
488f0978a4 | ||
|
|
72710b8040 | ||
|
|
dd4e66e22c | ||
|
|
1f91a31327 | ||
|
|
4ac701d747 | ||
|
|
46e5e17d0f | ||
|
|
6869920e06 | ||
|
|
0409403f5b | ||
|
|
f8f80e4fb3 | ||
|
|
0713475dc5 | ||
|
|
839673d321 | ||
|
|
b73d8849ab | ||
|
|
67b932f4d1 | ||
|
|
fe18e100c5 | ||
|
|
3957ff283a | ||
|
|
fc0e655eef | ||
|
|
760ea9df1e | ||
|
|
1272da6539 | ||
|
|
ca9bae3a1c | ||
|
|
1bd1cc74a4 | ||
|
|
2d1380ddf1 | ||
|
|
985be8ad87 | ||
|
|
31a35d7f71 | ||
|
|
6afeac375b | ||
|
|
ae793b4a44 | ||
|
|
3df79683f5 | ||
|
|
f2028d7009 | ||
|
|
6052eb1613 | ||
|
|
35a6715aff | ||
|
|
5fa982c123 | ||
|
|
61f02f17d8 | ||
|
|
e59d357533 | ||
|
|
156ba0958e | ||
|
|
e005b20470 | ||
|
|
33d5120181 | ||
|
|
64bac178e1 | ||
|
|
7802622eba | ||
|
|
1b416d7ed9 | ||
|
|
e93148420d | ||
|
|
d16d3ebace | ||
|
|
65b32fa1fc | ||
|
|
6ce321e4c4 | ||
|
|
6e73d8c934 | ||
|
|
91ba7cdf79 | ||
|
|
d80b378f4e | ||
|
|
dd15065706 | ||
|
|
fac8136f9b | ||
|
|
7f9451cea5 | ||
|
|
1e436ae793 | ||
|
|
2fd9c09544 | ||
|
|
d220d1d461 | ||
|
|
4ddc26fc08 | ||
|
|
d2bc1fa565 | ||
|
|
1a72d3b4f8 | ||
|
|
635f5555de | ||
|
|
55693ec1b0 | ||
|
|
12e7f8d5ae | ||
|
|
e803737a4b | ||
|
|
1ee92c281d | ||
|
|
324c7d482d | ||
|
|
9a34fe1857 | ||
|
|
2e1562b813 | ||
|
|
4bd66a7ca9 | ||
|
|
152f194aee | ||
|
|
0743554dd4 | ||
|
|
13878e9f14 | ||
|
|
096c5a5891 | ||
|
|
60bf564321 | ||
|
|
c354cde347 | ||
|
|
2dcced5518 | ||
|
|
77c3085a7b | ||
|
|
6659e95a4a | ||
|
|
d44e3a8ecf | ||
|
|
8358c3b426 | ||
|
|
cd85a55dd4 | ||
|
|
c5a4227310 | ||
|
|
b14cdc5f6d | ||
|
|
daca09d455 | ||
|
|
81a1cd00cf | ||
|
|
a288f51f42 | ||
|
|
794bf01b21 | ||
|
|
116f9cb55e | ||
|
|
8461791a52 | ||
|
|
cf4b78dbd3 | ||
|
|
d2492ef48e | ||
|
|
3a81c8fd42 | ||
|
|
ec103ce8dd | ||
|
|
626d5565c6 | ||
|
|
ce6039f2d1 | ||
|
|
0c672d8faa | ||
|
|
b74eefacf6 | ||
|
|
de83f82eae | ||
|
|
ee10ae0450 | ||
|
|
382a4c2785 | ||
|
|
ffdf61b882 | ||
|
|
2f2e6b4b5e | ||
|
|
38e38580fb | ||
|
|
418553757f | ||
|
|
342503e07a | ||
|
|
a850dd2e34 | ||
|
|
9de64bf516 | ||
|
|
4c67592f55 | ||
|
|
8100b6a841 | ||
|
|
4794141852 | ||
|
|
8bf2896d6c | ||
|
|
358ad74054 | ||
|
|
23dafa204c | ||
|
|
f653a6ff6a | ||
|
|
5e6b8433a3 | ||
|
|
f576d6e0ea | ||
|
|
a370c26f73 | ||
|
|
093ac1c09a | ||
|
|
41762e6603 | ||
|
|
d47bdde260 | ||
|
|
a0fd026801 | ||
|
|
8fb53252a8 | ||
|
|
42dbd40253 | ||
|
|
6b6a7d4b8a | ||
|
|
181c20ba56 | ||
|
|
fadb71bff5 | ||
|
|
39911a9fc5 | ||
|
|
d509a307f0 | ||
|
|
9db28b4b4f | ||
|
|
4c9d6b62a8 | ||
|
|
e8b2aa51bf | ||
|
|
d675795749 | ||
|
|
162ebacf5b | ||
|
|
0c81642997 | ||
|
|
03a98f4de4 | ||
|
|
4a521ea218 | ||
|
|
70a04bc105 | ||
|
|
46243719b7 | ||
|
|
3b34571de9 | ||
|
|
bbbacd86ab | ||
|
|
58adb76246 | ||
|
|
0e05cbe1f7 | ||
|
|
e95df2f066 | ||
|
|
324a12b6c3 | ||
|
|
b3c916414b | ||
|
|
96398faa3c | ||
|
|
b0a4a1d3e4 | ||
|
|
f53fc1ad0b | ||
|
|
824a72b220 | ||
|
|
d5b5b7d531 | ||
|
|
ccf004f1f4 | ||
|
|
414d733d76 | ||
|
|
3bcd1f1438 | ||
|
|
caf8968791 | ||
|
|
a917210c5b | ||
|
|
81611ae1c4 | ||
|
|
c4e3362bd3 | ||
|
|
afd2d8dab1 | ||
|
|
7d115c8ef2 | ||
|
|
6694bdd550 | ||
|
|
e726048e0c | ||
|
|
f52919990b | ||
|
|
b4b65ecd98 | ||
|
|
087e6020e4 | ||
|
|
50517020a2 | ||
|
|
be97aa6f13 | ||
|
|
ab9b671693 | ||
|
|
a3a3b10fb3 | ||
|
|
69c96dd23c | ||
|
|
f365bc4600 | ||
|
|
74aaa0a926 | ||
|
|
7c1d1c777b | ||
|
|
12b2a979a0 | ||
|
|
04b1f702cd | ||
|
|
c54d339dca | ||
|
|
09c2b85e36 | ||
|
|
40384fcb5a | ||
|
|
9f56c893ab | ||
|
|
7588aae13c | ||
|
|
cb5fe27118 | ||
|
|
8826e7a858 | ||
|
|
ebdba8f13b | ||
|
|
2c06ac9a45 | ||
|
|
340ccb2498 | ||
|
|
f71f29510d | ||
|
|
d1959a258b | ||
|
|
6c47a060c1 | ||
|
|
6650c0bbf7 | ||
|
|
3f24746cd1 | ||
|
|
1b6b1fe591 | ||
|
|
f43291f582 | ||
|
|
702290c47e | ||
|
|
b837e04ae0 | ||
|
|
84830bf7c8 | ||
|
|
f5a53b7f1e | ||
|
|
9efdbecc00 | ||
|
|
51458c75f5 | ||
|
|
21359eabac | ||
|
|
6bc090f8bb | ||
|
|
ef4e74bfc8 | ||
|
|
cc6cbfcdc4 | ||
|
|
71bc258731 |
@@ -10,7 +10,7 @@ checks:
|
||||
threshold: 500
|
||||
method-lines:
|
||||
config:
|
||||
threshold: 50
|
||||
threshold: 75
|
||||
method-complexity:
|
||||
config:
|
||||
threshold: 10
|
||||
|
||||
114
.eslintrc
114
.eslintrc
@@ -1,115 +1,3 @@
|
||||
{
|
||||
"extends": "airbnb-base",
|
||||
"parserOptions": {
|
||||
"sourceType": "script"
|
||||
},
|
||||
|
||||
"rules": {
|
||||
// === Configure rules for our style ===
|
||||
// imports must be resolvable
|
||||
"import/no-unresolved": "error",
|
||||
// use single quotes,
|
||||
// unless a different style allows avoiding escapes
|
||||
"quotes": ["error", "single", {
|
||||
"avoidEscape": true,
|
||||
"allowTemplateLiterals": true
|
||||
}],
|
||||
// allow else-if return
|
||||
"no-else-return": [ "error", { "allowElseIf": true } ],
|
||||
// expressions split over multiple lines
|
||||
// should break after the operator
|
||||
"operator-linebreak": [ "error", "after" ],
|
||||
// require arrow parens only when needed
|
||||
// and whenever the body is a block
|
||||
"arrow-parens": ["error", "as-needed", { "requireForBlockBody": true }],
|
||||
// what variables are errors in callbacks
|
||||
"handle-callback-err": [ "error","^(e$|(e|(.*(_e|E)))rr)" ],
|
||||
// allow dangling commas in functions
|
||||
// require them everywhere else
|
||||
"comma-dangle": ["error", {
|
||||
"arrays": "always-multiline",
|
||||
"objects": "always-multiline",
|
||||
"imports": "always-multiline",
|
||||
"exports": "always-multiline",
|
||||
"functions": "only-multiline"
|
||||
}],
|
||||
// we actually encourage `return await`
|
||||
"no-return-await": "off",
|
||||
// allow `while (true)`
|
||||
"no-constant-condition": ["error", { "checkLoops": false }],
|
||||
// allow ignoring an error with `catch`
|
||||
"no-empty": ["error", { "allowEmptyCatch": true }],
|
||||
// allow `3 + 5 - 1`, but not `3 * 5 - 1`
|
||||
"no-mixed-operators": ["error", { "allowSamePrecedence": true }],
|
||||
// require `'use strict';`
|
||||
"strict": ["error", "global"],
|
||||
// we actually use tabs for indentation
|
||||
"indent": ["error", "tab", { "SwitchCase": 1 }],
|
||||
"no-tabs": "off",
|
||||
// we want `== null` to also handle undefined
|
||||
"no-eq-null": "off",
|
||||
// allow `for (..; i++)`
|
||||
"no-plusplus": ["error", { "allowForLoopAfterthoughts": true }],
|
||||
// allow using functions defined later
|
||||
"no-use-before-define": ["error", "nofunc"],
|
||||
// require consistent newlines before and after braces
|
||||
// if contents are multiline
|
||||
"object-curly-newline": ["error", { "consistent": true, "multiline": true }],
|
||||
// require consistent linebreaks inline function parenthesis (arguments or params)
|
||||
"function-paren-newline": ["error", "consistent"],
|
||||
// only require const if all parts of destructuring can be const
|
||||
"prefer-const": ["error", { "destructuring": "all" }],
|
||||
// don't require destructuring for arrays or assignment
|
||||
"prefer-destructuring": ["error", {
|
||||
"VariableDeclarator": { "array": false, "object": true },
|
||||
"AssignmentExpression": { "array": false, "object": false }
|
||||
}],
|
||||
// identical to airbnb rule, except for allowing for..of, because we want to use it
|
||||
"no-restricted-syntax": [
|
||||
"error",
|
||||
{
|
||||
"selector": "ForInStatement",
|
||||
"message": "for..in loops iterate over the entire prototype chain, which is virtually never what you want. Use Object.{keys,values,entries}, and iterate over the resulting array."
|
||||
},
|
||||
{
|
||||
"selector": "LabeledStatement",
|
||||
"message": "Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand."
|
||||
},
|
||||
{
|
||||
"selector": "WithStatement",
|
||||
"message": "`with` is disallowed in strict mode because it makes code impossible to predict and optimize."
|
||||
}
|
||||
],
|
||||
// allow lines of up to 120 characters
|
||||
"max-len": ["error", { "code": 120, "tabWidth": 2, "ignoreUrls": true, "ignoreStrings": true, "ignoreTemplateLiterals": true, "ignoreRegExpLiterals": true }],
|
||||
|
||||
// === Disable rules ===
|
||||
// more liberal naming
|
||||
"camelcase": "off",
|
||||
"no-underscore-dangle": "off",
|
||||
// don't require anonymous function names
|
||||
"func-names": "off",
|
||||
// allow console
|
||||
"no-console": "off",
|
||||
// allow new for side effects
|
||||
// allow new with non-capitalized
|
||||
"no-new": "off",
|
||||
"new-cap": "off",
|
||||
// allow shadowing variables (usually callbacks)
|
||||
"no-shadow": "off",
|
||||
// allow multiple empty lines in a row
|
||||
"no-multiple-empty-lines": "off",
|
||||
// allow not using object shorthand
|
||||
"object-shorthand": "off",
|
||||
|
||||
// TODO
|
||||
"consistent-return": "off",
|
||||
"no-restricted-globals": "off",
|
||||
"no-prototype-builtins": "off",
|
||||
"import/no-extraneous-dependencies": "off",
|
||||
"import/no-dynamic-require": "off",
|
||||
"global-require": "off",
|
||||
"no-param-reassign": "off",
|
||||
"default-case": "off"
|
||||
}
|
||||
"extends": "nodebb"
|
||||
}
|
||||
|
||||
6
.github/dependabot.yml
vendored
Normal file
6
.github/dependabot.yml
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: npm
|
||||
directory: "/install"
|
||||
schedule:
|
||||
interval: daily
|
||||
51
.github/workflows/docker.yml
vendored
Normal file
51
.github/workflows/docker.yml
vendored
Normal file
@@ -0,0 +1,51 @@
|
||||
name: Run Docker
|
||||
|
||||
# Controls when the workflow will run
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- 'master'
|
||||
- 'v*.x'
|
||||
tags:
|
||||
- 'v*'
|
||||
workflow_dispatch:
|
||||
|
||||
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
|
||||
jobs:
|
||||
release:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v1
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v1
|
||||
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@v1
|
||||
with:
|
||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
|
||||
- name: Docker meta
|
||||
id: meta
|
||||
uses: docker/metadata-action@v3
|
||||
with:
|
||||
images: nodebb/docker
|
||||
tags: |
|
||||
type=semver,pattern={{version}}
|
||||
type=semver,pattern={{major}}.{{minor}}
|
||||
type=raw,value=latest
|
||||
|
||||
- name: Build and push Docker images
|
||||
uses: docker/build-push-action@v2
|
||||
with:
|
||||
context: .
|
||||
file: ./Dockerfile
|
||||
push: true
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
2
.github/workflows/test.yaml
vendored
2
.github/workflows/test.yaml
vendored
@@ -21,7 +21,7 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [ubuntu-latest]
|
||||
node: [12, 14]
|
||||
node: [12, 14, 16]
|
||||
database: [mongo-dev, mongo, redis, postgres]
|
||||
include:
|
||||
# only run coverage once
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
{
|
||||
"indent_size": 4,
|
||||
"indent_char": " ",
|
||||
"indent_level": 0,
|
||||
"indent_with_tabs": true,
|
||||
"preserve_newlines": true,
|
||||
"max_preserve_newlines": 10,
|
||||
"jslint_happy": true,
|
||||
"brace_style": "collapse",
|
||||
"keep_array_indentation": false,
|
||||
"keep_function_indentation": false,
|
||||
"space_before_conditional": true,
|
||||
"break_chained_methods": false,
|
||||
"eval_code": false,
|
||||
"unescape_strings": false,
|
||||
"wrap_line_length": 0
|
||||
}
|
||||
91
.jshintrc
91
.jshintrc
@@ -1,91 +0,0 @@
|
||||
{
|
||||
// JSHint Default Configuration File (as on JSHint website)
|
||||
// See http://jshint.com/docs/ for more details
|
||||
|
||||
"maxerr" : 50, // {int} Maximum error before stopping
|
||||
|
||||
"esversion": 6,
|
||||
|
||||
// Enforcing
|
||||
"bitwise" : true, // true: Prohibit bitwise operators (&, |, ^, etc.)
|
||||
"camelcase" : false, // true: Identifiers must be in camelCase
|
||||
"curly" : true, // true: Require {} for every new block or scope
|
||||
"eqeqeq" : true, // true: Require triple equals (===) for comparison
|
||||
"forin" : true, // true: Require filtering for..in loops with obj.hasOwnProperty()
|
||||
"immed" : false, // true: Require immediate invocations to be wrapped in parens e.g. `(function () { } ());`
|
||||
"indent" : 4, // {int} Number of spaces to use for indentation
|
||||
"latedef" : false, // true: Require variables/functions to be defined before being used
|
||||
"newcap" : false, // true: Require capitalization of all constructor functions e.g. `new F()`
|
||||
"noarg" : true, // true: Prohibit use of `arguments.caller` and `arguments.callee`
|
||||
"noempty" : true, // true: Prohibit use of empty blocks
|
||||
"nonew" : false, // true: Prohibit use of constructors for side-effects (without assignment)
|
||||
"plusplus" : false, // true: Prohibit use of `++` & `--`
|
||||
"quotmark" : false, // Quotation mark consistency:
|
||||
// false : do nothing (default)
|
||||
// true : ensure whatever is used is consistent
|
||||
// "single" : require single quotes
|
||||
// "double" : require double quotes
|
||||
"undef" : true, // true: Require all non-global variables to be declared (prevents global leaks)
|
||||
"unused" : true, // true: Require all defined variables be used
|
||||
"strict" : true, // true: Requires all functions run in ES5 Strict Mode
|
||||
"trailing" : false, // true: Prohibit trailing whitespaces
|
||||
"maxparams" : false, // {int} Max number of formal params allowed per function
|
||||
"maxdepth" : false, // {int} Max depth of nested blocks (within functions)
|
||||
"maxstatements" : false, // {int} Max number statements per function
|
||||
"maxcomplexity" : false, // {int} Max cyclomatic complexity per function
|
||||
"maxlen" : false, // {int} Max number of characters per line
|
||||
|
||||
// Relaxing
|
||||
"asi" : false, // true: Tolerate Automatic Semicolon Insertion (no semicolons)
|
||||
"boss" : false, // true: Tolerate assignments where comparisons would be expected
|
||||
"debug" : false, // true: Allow debugger statements e.g. browser breakpoints.
|
||||
"eqnull" : false, // true: Tolerate use of `== null`
|
||||
"es5" : false, // true: Allow ES5 syntax (ex: getters and setters)
|
||||
"esnext" : false, // true: Allow ES.next (ES6) syntax (ex: `const`)
|
||||
"moz" : false, // true: Allow Mozilla specific syntax (extends and overrides esnext features)
|
||||
// (ex: `for each`, multiple try/catch, function expression…)
|
||||
"evil" : false, // true: Tolerate use of `eval` and `new Function()`
|
||||
"expr" : false, // true: Tolerate `ExpressionStatement` as Programs
|
||||
"funcscope" : false, // true: Tolerate defining variables inside control statements"
|
||||
"globalstrict" : false, // true: Allow global "use strict" (also enables 'strict')
|
||||
"iterator" : false, // true: Tolerate using the `__iterator__` property
|
||||
"lastsemic" : false, // true: Tolerate omitting a semicolon for the last statement of a 1-line block
|
||||
"laxbreak" : false, // true: Tolerate possibly unsafe line breakings
|
||||
"laxcomma" : false, // true: Tolerate comma-first style coding
|
||||
"loopfunc" : false, // true: Tolerate functions being defined in loops
|
||||
"multistr" : false, // true: Tolerate multi-line strings
|
||||
"proto" : false, // true: Tolerate using the `__proto__` property
|
||||
"scripturl" : false, // true: Tolerate script-targeted URLs
|
||||
"smarttabs" : false, // true: Tolerate mixed tabs/spaces when used for alignment
|
||||
"shadow" : false, // true: Allows re-define variables later in code e.g. `var x=1; x=2;`
|
||||
"sub" : false, // true: Tolerate using `[]` notation when it can still be expressed in dot notation
|
||||
"supernew" : false, // true: Tolerate `new function () { ... };` and `new Object;`
|
||||
"validthis" : false, // true: Tolerate using this in a non-constructor function
|
||||
|
||||
// Environments
|
||||
"browser" : true, // Web Browser (window, document, etc)
|
||||
"couch" : false, // CouchDB
|
||||
"devel" : true, // Development/debugging (alert, confirm, etc)
|
||||
"dojo" : false, // Dojo Toolkit
|
||||
"jquery" : true, // jQuery
|
||||
"mootools" : false, // MooTools
|
||||
"node" : true, // Node.js
|
||||
"nonstandard" : false, // Widely adopted globals (escape, unescape, etc)
|
||||
"prototypejs" : false, // Prototype and Scriptaculous
|
||||
"rhino" : false, // Rhino
|
||||
"worker" : false, // Web Workers
|
||||
"wsh" : false, // Windows Scripting Host
|
||||
"yui" : false, // Yahoo User Interface
|
||||
"mocha": true,
|
||||
|
||||
// Legacy
|
||||
"nomen" : false, // true: Prohibit dangling `_` in variables
|
||||
"onevar" : false, // true: Allow only one `var` statement per function
|
||||
"passfail" : false, // true: Stop on first error
|
||||
"white" : false, // true: Check against strict whitespace and indentation rules
|
||||
|
||||
// Custom Globals
|
||||
"globals" : {
|
||||
"Promise": true
|
||||
} // additional predefined global variables
|
||||
}
|
||||
50
.tx/config
50
.tx/config
@@ -1000,6 +1000,56 @@ trans.zh_CN = public/language/zh-CN/tags.json
|
||||
trans.zh_TW = public/language/zh-TW/tags.json
|
||||
type = KEYVALUEJSON
|
||||
|
||||
[nodebb.top]
|
||||
file_filter = public/language/<lang>/top.json
|
||||
source_file = public/language/en-GB/top.json
|
||||
source_lang = en_GB
|
||||
trans.ar = public/language/ar/top.json
|
||||
trans.bg = public/language/bg/top.json
|
||||
trans.bn = public/language/bn/top.json
|
||||
trans.cs = public/language/cs/top.json
|
||||
trans.da = public/language/da/top.json
|
||||
trans.de = public/language/de/top.json
|
||||
trans.el = public/language/el/top.json
|
||||
trans.en@pirate = public/language/en-x-pirate/top.json
|
||||
trans.en_US = public/language/en-US/top.json
|
||||
trans.es = public/language/es/top.json
|
||||
trans.et = public/language/et/top.json
|
||||
trans.fa_IR = public/language/fa-IR/top.json
|
||||
trans.fi = public/language/fi/top.json
|
||||
trans.fr = public/language/fr/top.json
|
||||
trans.gl = public/language/gl/top.json
|
||||
trans.he = public/language/he/top.json
|
||||
trans.hr = public/language/hr/top.json
|
||||
trans.hu = public/language/hu/top.json
|
||||
trans.id = public/language/id/top.json
|
||||
trans.it = public/language/it/top.json
|
||||
trans.ja = public/language/ja/top.json
|
||||
trans.ko = public/language/ko/top.json
|
||||
trans.lt = public/language/lt/top.json
|
||||
trans.lv = public/language/lv/top.json
|
||||
trans.ms = public/language/ms/top.json
|
||||
trans.nb = public/language/nb/top.json
|
||||
trans.nl = public/language/nl/top.json
|
||||
trans.pl = public/language/pl/top.json
|
||||
trans.pt_BR = public/language/pt-BR/top.json
|
||||
trans.pt_PT = public/language/pt-PT/top.json
|
||||
trans.ro = public/language/ro/top.json
|
||||
trans.ru = public/language/ru/top.json
|
||||
trans.rw = public/language/rw/top.json
|
||||
trans.sc = public/language/sc/top.json
|
||||
trans.sk = public/language/sk/top.json
|
||||
trans.sl = public/language/sl/top.json
|
||||
trans.sr = public/language/sr/top.json
|
||||
trans.sv = public/language/sv/top.json
|
||||
trans.th = public/language/th/top.json
|
||||
trans.tr = public/language/tr/top.json
|
||||
trans.uk = public/language/uk/top.json
|
||||
trans.vi = public/language/vi/top.json
|
||||
trans.zh_CN = public/language/zh-CN/top.json
|
||||
trans.zh_TW = public/language/zh-TW/top.json
|
||||
type = KEYVALUEJSON
|
||||
|
||||
[nodebb.email]
|
||||
file_filter = public/language/<lang>/email.json
|
||||
source_file = public/language/en-GB/email.json
|
||||
|
||||
565
CHANGELOG.md
565
CHANGELOG.md
@@ -1,3 +1,568 @@
|
||||
#### v1.18.5 (2021-10-27)
|
||||
|
||||
##### Breaking Changes
|
||||
|
||||
* disable javascript in custom less tab (719cfc0d)
|
||||
|
||||
##### Chores
|
||||
|
||||
* remove .opacity() mixin as it is supported cross-browser (28efcb59)
|
||||
* up themes (463b2076)
|
||||
* up persona (1438f409)
|
||||
* incrementing version number - v1.18.4 (945c2b0b)
|
||||
* update changelog for v1.18.4 (7cbcb521)
|
||||
* **deps:**
|
||||
* update dependency lint-staged to v11.2.6 (8d4bb8bb)
|
||||
* update dependency lint-staged to v11.2.5 (0728a994)
|
||||
* update dependency lint-staged to v11.2.4 (f76a7882)
|
||||
* update dependency husky to v7.0.4 (2a3e13f3)
|
||||
* update dependency mocha to v9.1.3 (4784f016)
|
||||
* update dependency eslint-plugin-import to v2.25.2 (3c3f45d9)
|
||||
* update dependency jsdom to v18 (4b8dcd4c)
|
||||
* update dependency eslint-plugin-import to v2.25.1 (7c4aebbd)
|
||||
* update dependency lint-staged to v11.2.3 (288b5456)
|
||||
* update dependency lint-staged to v11.2.2 (f96c8c4d)
|
||||
* update dependency @commitlint/cli to v13.2.1 (52c38a1d)
|
||||
* update dependency lint-staged to v11.2.1 (022e8df0)
|
||||
* update dependency eslint-config-nodebb to v0.0.3 (4b92df82)
|
||||
* **i18n:**
|
||||
* fallback strings for new resources: nodebb.admin-settings-email, nodebb.error (9b68dc37)
|
||||
* fallback strings for new resources: nodebb.admin-dashboard (ff962b5d)
|
||||
* fallback strings for new resources: nodebb.admin-dashboard, nodebb.admin-menu (abe59131)
|
||||
* fallback strings for new resources: nodebb.admin-manage-digest, nodebb.admin-settings-user, nodebb.user (2bed40be)
|
||||
|
||||
##### Documentation Changes
|
||||
|
||||
* update verbiage re: login API route (94c4f87b)
|
||||
|
||||
##### New Features
|
||||
|
||||
* new ACP option `emailPrompt` ... which allows administrators to disable the client-side prompt to encourage users to enter or confirm their email addresses (80ea12c1)
|
||||
* show popular searches (f4cf482a)
|
||||
* new plugin hook to allow plugins to reject email address on new registration or email change (6b4f35c2)
|
||||
* utilities login API route now starts an actual login session, if requested (806a1e50)
|
||||
* add method name to deprecation message (b91ae088)
|
||||
* quote tooltip (66fca4e0)
|
||||
* additional quality options for jpeg uploads, added quality and compression settings for png uploads (d22b076b)
|
||||
* #8053, biweekly digest option (f7967bdf)
|
||||
* core submit button dropdown (605a5381)
|
||||
* added failing i18n tests (35af7634)
|
||||
* confirm before deleting all events (#9875) (56d05b4e)
|
||||
|
||||
##### Bug Fixes
|
||||
|
||||
* **deps:**
|
||||
* update dependency nodebb-theme-vanilla to v12.1.7 (#9944) (bf20965f)
|
||||
* update dependency nodebb-theme-persona to v11.2.19 (#9943) (bcf85fcf)
|
||||
* update dependency nodebb-rewards-essentials to v0.2.0 (7c2ecb12)
|
||||
* update dependency nodebb-theme-vanilla to v12.1.6 (49b8b983)
|
||||
* update dependency nodebb-theme-persona to v11.2.18 (ed0adf2c)
|
||||
* update dependency nodebb-theme-persona to v11.2.17 (78661079)
|
||||
* update dependency postcss to v8.3.11 (a5f4e206)
|
||||
* update dependency nodebb-theme-vanilla to v12.1.5 (d74a6bd3)
|
||||
* update dependency sharp to v0.29.2 (8b8fe393)
|
||||
* update dependency postcss to v8.3.10 (b18a24e9)
|
||||
* update dependency nodebb-theme-persona to v11.2.15 (f3c8d7da)
|
||||
* update dependency nodebb-theme-persona to v11.2.14 (#9919) (5e08e67b)
|
||||
* update dependency socket.io-client to v4.3.2 (deba3e27)
|
||||
* update dependency socket.io to v4.3.1 (e1554f61)
|
||||
* update socket.io packages (ce5a0a21)
|
||||
* update dependency nodebb-plugin-spam-be-gone to v0.7.10 (600a8720)
|
||||
* update dependency nodebb-plugin-composer-default to v7.0.10 (b0128f85)
|
||||
* update dependency nodebb-plugin-markdown to v8.14.4 (f8f35d7e)
|
||||
* update dependency nodebb-plugin-composer-default to v7.0.9 (ed874662)
|
||||
* update dependency nodebb-theme-persona to v11.2.13 (1dba75e9)
|
||||
* update dependency ioredis to v4.28.0 (4ff5452d)
|
||||
* update dependency nodebb-theme-persona to v11.2.12 (fe9f82f6)
|
||||
* update dependency ioredis to v4.27.11 (6d2e0aa9)
|
||||
* update dependency nodebb-plugin-mentions to v2.14.1 (820f8cdf)
|
||||
* update dependency jquery-ui to v1.13.0 (b0eb2aed)
|
||||
* remove loading="lazy", fixes inf. scroll loaded images (01572785)
|
||||
* windows tests (25ebbd65)
|
||||
* undefined query showing in searches (6cfaea06)
|
||||
* don't repeat search if on same page (89f5e06b)
|
||||
* api session revoke test (0926ae6e)
|
||||
* crash (da64810a)
|
||||
* add missing translation (eb075c73)
|
||||
* move record to controller (ee8e0480)
|
||||
* profile edit fields showing translated values (63572c23)
|
||||
* #9934, fix translator test (8d316d18)
|
||||
* token verify (04dab1d5)
|
||||
* guard against prototype pollution (1783f918)
|
||||
* translator path traversal (c8b2fc46)
|
||||
* there is no alltime digest, fixes translation in test email (e62948f7)
|
||||
* clicking outside postContainer should close tooltip (47df62e7)
|
||||
* minification regression (998b9e79)
|
||||
* tooltip (fec7ebed)
|
||||
* biweekly digest #8053 (9cb4de50)
|
||||
* restore plugin upgrade checking logic (44687394)
|
||||
* fallbacks for new langauge key (ed4ebd22)
|
||||
* #9917, show topics as unread for guests (4333d217)
|
||||
* clarify site settings urls vs config.json url (#9912) (6436aa65)
|
||||
* clarify SMTP enable toggle (#9911) (09f198fc)
|
||||
* don't overwrite reloadRequired with false (9e0ce027)
|
||||
* delete translations in admin/general folder (since general was removed and relocated elsewhere) (b460e590)
|
||||
* pushed missing key to tx and pulled fallbacks (21b61082)
|
||||
* adding missing language namespace "top" (0f9b0b78)
|
||||
* extra debug log (bd893cda)
|
||||
* have renovate add `dependencies` label to its PRs (eddb9868)
|
||||
* no global bootbox (#9879) (227456fb)
|
||||
* #9872 update app badge with notification count if applicable (3e69bcdf)
|
||||
* better nomenclature (c1149d04)
|
||||
* html attributes (#9877) (3acaac4c)
|
||||
* escape thumbs, allow robots meta tag (4f9717fb)
|
||||
* missing translations (#9876) (7935bd9e)
|
||||
|
||||
##### Performance Improvements
|
||||
|
||||
* dont fs.open if plugin doesnt have language namespace (#9893) (1feb111a)
|
||||
|
||||
##### Refactors
|
||||
|
||||
* wider value field (c428ba80)
|
||||
* dont save partial searches (c7e078d4)
|
||||
* use search api for topic search (64192731)
|
||||
* slowdown quick search (19ee7174)
|
||||
* typo (a5287906)
|
||||
* add callback to loadNotifications (f02fba29)
|
||||
* simplified utilities API > login rout (506c34a8)
|
||||
* log error as well (1d62bd6d)
|
||||
* catch errors from buildHeader in error handler :fire: (73a9ca09)
|
||||
* add missing helpers.tryRoute (d4da9840)
|
||||
* shorter middleware (ee0282f5)
|
||||
* meta/minifier use async/await (b2429ef0)
|
||||
* remove unused var (90b81262)
|
||||
* catch errors from digest (8e319a9b)
|
||||
* less.render returns promise (14bc83a8)
|
||||
* less.render already returns promise (6da32392)
|
||||
* prompt.get already returns promise (c70eaa0a)
|
||||
* no need for async/callbacks (057d1d58)
|
||||
* no more :cow: (38756a0c)
|
||||
* allow array of uids for blocks.is/list (a9bc6a09)
|
||||
* show full url on error log (8e6bd7e9)
|
||||
* var to const and let (#9885) (b0a24d6d)
|
||||
* remove unused code (997fb2b3)
|
||||
* remove unused colorpicker (543d8521)
|
||||
|
||||
##### Reverts
|
||||
|
||||
* lazy load (3d1cf168)
|
||||
|
||||
##### Tests
|
||||
|
||||
* fix broken openapi3 schema (7ef5214e)
|
||||
* restore commented-out i18n test (fa1afbcf)
|
||||
* moved topic event and topic thumb tests to subfolder for better organisation (154ffea0)
|
||||
* remove escape (6c25b9db)
|
||||
* possible fix to timeout (63109c07)
|
||||
* increase timeout (8654a996)
|
||||
|
||||
#### v1.18.4 (2021-10-06)
|
||||
|
||||
##### Chores
|
||||
|
||||
* up persona (f4e62fb1)
|
||||
* incrementing version number - v1.18.3 (57358743)
|
||||
* update changelog for v1.18.3 (f066ddb8)
|
||||
* **deps:**
|
||||
* update dependency lint-staged to v11.2.0 (840b49b9)
|
||||
* update commitlint monorepo to v13.2.0 (aa370310)
|
||||
* update dependency mocha to v9.1.2 (6385b88e)
|
||||
|
||||
##### Documentation Changes
|
||||
|
||||
* added link to unofficial IRC channel (c5a48b44)
|
||||
|
||||
##### New Features
|
||||
|
||||
* use unread icon in mobile (27e53b42)
|
||||
* cli user management commands (#9848) (d1ff3d62)
|
||||
* #9855, allow uid for post queue notifications (5aea6c6a)
|
||||
* add userData to static:user.delete (f24b630e)
|
||||
* closes #9845, sort by views (6399b428)
|
||||
* duplicate `requireEmailAddress` settings block to Settings > User (a9645475)
|
||||
* mongodb driver 4.x (#9832) (07adb49e)
|
||||
* a useless hover effect because raisins (1a61ffc5)
|
||||
|
||||
##### Bug Fixes
|
||||
|
||||
* **deps:**
|
||||
* update dependency mongodb to v4.1.3 (b4fc2773)
|
||||
* update dependency postcss to v8.3.9 (9455e5b2)
|
||||
* update dependency autoprefixer to v10.3.7 (78895d05)
|
||||
* update dependency nodebb-plugin-composer-default to v7.0.8 (9215c7d1)
|
||||
* update dependency ioredis to v4.27.10 (4694382c)
|
||||
* update dependency nodebb-theme-persona to v11.2.9 (346e0890)
|
||||
* update dependency autoprefixer to v10.3.6 (058fdca4)
|
||||
* update dependency yargs to v17.2.1 (d50dd801)
|
||||
* update dependency postcss to v8.3.8 (193c92e3)
|
||||
* update dependency passport to ^0.5.0 (daea8a86)
|
||||
* update dependency connect-pg-simple to v7 (#9785) (054f3da6)
|
||||
* update dependency yargs to v17.2.0 (c78309b5)
|
||||
* #9866, fire vote hooks after reputation changes (#9867) (8ad9a103)
|
||||
* #9865, don't display register messages after login (96f5312d)
|
||||
* dont show decimails on auto approva minutes (a0df3890)
|
||||
* #9864 (e954ca10)
|
||||
* delete old topic tags (a70c69fa)
|
||||
* switch inf. scroll to xhr (#9854) (4404e819)
|
||||
* #9828, max-width (40915105)
|
||||
* handle undefined returnTo on registerAbort (ac1b9692)
|
||||
* lint (ff850b24)
|
||||
* psql tests (123354ca)
|
||||
* psql test (f8d4ec6c)
|
||||
* possible test fix for subfolder redirect (3605ac81)
|
||||
* missing relative path in test (4eacfef0)
|
||||
* #9834, missing null email check on new registrations, added tests (58e0a366)
|
||||
* crossorigin not showing up on manifest link tag (0faa4937)
|
||||
* #9827, fix reward duplication (89af00d1)
|
||||
|
||||
##### Performance Improvements
|
||||
|
||||
* convert promise.all to single query (#9851) (ea04aede)
|
||||
|
||||
##### Refactors
|
||||
|
||||
* use utils.debounce (a7668a7f)
|
||||
* remove async.waterfall from remaining upgrade scripts (6b34065f)
|
||||
|
||||
##### Tests
|
||||
|
||||
* dashboard (4f8647a5)
|
||||
* add tests for admin privileges (9fe9ab08)
|
||||
* add missing tests (34798325)
|
||||
* remove debug log (8cb47548)
|
||||
* no need to create fake interstitial as NodeBB comes with some by default (cb69934a)
|
||||
|
||||
#### v1.18.3 (2021-09-22)
|
||||
|
||||
##### Chores
|
||||
|
||||
* **deps:** update docker/build-push-action action to v2.7.0 (ee027719)
|
||||
* incrementing version number - v1.18.2 (0a56158b)
|
||||
* update changelog for v1.18.2 (27e9282a)
|
||||
|
||||
##### New Features
|
||||
|
||||
* move filter:topic.post hook to top of method (f194809f)
|
||||
* add client-side static hook to fire immediately before any topic action (hint: delete `action` to stop default behaviour) (66eaae44)
|
||||
* allow removing multiple items from list (397835a0)
|
||||
* add uid to filter:user.saveSettings (7f48edc0)
|
||||
* headers for global privs #9717 (#9762) (84ff1152)
|
||||
* add ACP option to require email address on new registration (006fc700)
|
||||
|
||||
##### Bug Fixes
|
||||
|
||||
* **deps:**
|
||||
* update dependency nodebb-plugin-composer-default to v7.0.7 (98554294)
|
||||
* update dependency postcss to v8.3.7 (6ebe707c)
|
||||
* update dependency autoprefixer to v10.3.5 (25687441)
|
||||
* update dependency nodebb-plugin-composer-default to v7.0.6 (#9815) (c18678ce)
|
||||
* update dependency nodebb-theme-persona to v11.2.8 (#9816) (39d73d0c)
|
||||
* update dependency connect-mongo to v4.6.0 (8e886c85)
|
||||
* update dependency nodebb-plugin-composer-default to v7.0.4 (8af54255)
|
||||
* update dependency mongodb to v3.7.1 (9049dcd7)
|
||||
* update dependency nodebb-theme-persona to v11.2.6 (506035b5)
|
||||
* update dependency nodebb-theme-slick to v1.4.13 (787306a6)
|
||||
* update dependency nodebb-plugin-composer-default to v7.0.3 (732b59c2)
|
||||
* fixed element shifting in ACP menu that's been bothering me for 5-ish years (31975a62)
|
||||
* #9822, use correct username/pwd (30f38771)
|
||||
* remove unused translator (2add84a5)
|
||||
* ban info test (07859f7e)
|
||||
* #9819, show same time info for ban (9f0e55ad)
|
||||
* show local time for ban (7a2f0ae1)
|
||||
* crash (c437b336)
|
||||
* remove caller from payload after hooks is done (15f9aaa6)
|
||||
* bad uid reference (ce8ea6ea)
|
||||
* update Topics.post and Topics.reply so that plugins can modify uid (or redirect a reply to a different topic) (7777812e)
|
||||
* #9818, fix totalTime calculation (c4fc7bf9)
|
||||
* missing microdata in category data (1ed62aa8)
|
||||
* #9812, add topics:schedule (c0a52924)
|
||||
* for subfolders (31a6d4b3)
|
||||
* req.path doesn't have full url (0236ea86)
|
||||
* escape moderation note before adding to dom (75ebe786)
|
||||
* #9811, send bodyClass on 403 (40c9fca9)
|
||||
* also launch docker workflow on release branches (944a7985)
|
||||
* xss on flags page via ban reason (ba3582b8)
|
||||
* up timeout for psql tests (896ff215)
|
||||
* redis batch (0c4b875e)
|
||||
* redis processing batch+1 items every iteration (3261edcc)
|
||||
* #9560, don't save post diffs if content didn't change (8b576a37)
|
||||
* #9790, get baseIndex on update for infinitescroll (6a55c027)
|
||||
* #9790, fix sorting of more than one page of pinned topics (2657804c)
|
||||
* privileges added by plugins (#9802) (3ecbb624)
|
||||
* #9800, don't send all welcome test emails to test@example.org @julianlam (71ed50b9)
|
||||
* docker - remove sha tag (b06e8dba)
|
||||
* Return QEMU back, remove platforms definition (52eace4b)
|
||||
* Docker workflow tweaks (#9792) (e7f4cde4)
|
||||
* browsers autocompleting smtp fields when they should not (34afb747)
|
||||
|
||||
##### Refactors
|
||||
|
||||
* no regex (18252fb9)
|
||||
* remove async.waterfall (58ac55c1)
|
||||
* remove async.waterfall (222dccaf)
|
||||
* remove async.waterfall (f35a0f43)
|
||||
* allow plugins to replace og:image, or specify additional og:image (819917da)
|
||||
|
||||
##### Code Style Changes
|
||||
|
||||
* give me an A! :100: (0b4d7d1f)
|
||||
|
||||
#### v1.18.2 (2021-09-08)
|
||||
|
||||
##### Chores
|
||||
|
||||
* **deps:** update commitlint monorepo to v13 (87ba768f)
|
||||
* incrementing version number - v1.18.1 (f8f80e4f)
|
||||
* update changelog for v1.18.1 (0713475d)
|
||||
|
||||
##### New Features
|
||||
|
||||
* a slightly less ugly rewards panel (bf0c02a7)
|
||||
|
||||
##### Bug Fixes
|
||||
|
||||
* dashboard graph controls (a7855c4c)
|
||||
* #9767 ACP change group icon fix (580a016b)
|
||||
* #9781 (#9782) (0ce4b87d)
|
||||
* replace logic in isPrivilegedOrSelfAndPasswordMatch to use privileges.users.canEdit (856ba78a)
|
||||
* handle missing uid in deprecated socket call (cdaea611)
|
||||
* use privileges.users.canEdit for image upload priv check (e33e046f)
|
||||
* errors from registerComplete (a48bbdbf)
|
||||
* simplify logic for fullname and email blanking in user retrieval (getUserDataByUserSlug) (60de0844)
|
||||
* lint (1e2bda13)
|
||||
* manifest error (488f0978)
|
||||
* #9772, regression from https://github.com/NodeBB/NodeBB/commit/70a04bc10577e90e28d66a647d38cafc3307a285 (72710b80)
|
||||
* push back some deprecations, remove deprecated stuff scheduled for v1.18.0 (dd4e66e2)
|
||||
* deprecate userData.showHidden as it is functionally equivalent to userData.canEdit (4ac701d7)
|
||||
* focus on save button on plugin activation (46e5e17d)
|
||||
* #9773, fire hooks properly for priv changes (#9774) (6869920e)
|
||||
* **deps:**
|
||||
* update dependency sharp to v0.29.1 (ac6cd02f)
|
||||
* update dependency nodebb-plugin-dbsearch to v5.0.3 (338f90fc)
|
||||
* update dependency nodebb-theme-vanilla to v12.1.3 (0b3ea5ad)
|
||||
* update dependency nodebb-theme-persona to v11.2.5 (57e54d55)
|
||||
|
||||
##### Refactors
|
||||
|
||||
* deprecate picture update socket call, new API routes for picture update (0a41741b)
|
||||
|
||||
##### Tests
|
||||
|
||||
* added test for external image via new change picture API (8cbad61e)
|
||||
|
||||
#### v1.18.1 (2021-09-03)
|
||||
|
||||
##### Chores
|
||||
|
||||
* found some hooks that don't play well docgen (ae793b4a)
|
||||
* incrementing version number - v1.18.0 (1e436ae7)
|
||||
* update changelog for v1.18.0 (2fd9c095)
|
||||
* **deps:** update dependency mocha to v9.1.1 (64bac178)
|
||||
|
||||
##### New Features
|
||||
|
||||
* create folders in ACP uploads #9638 (#9750) (3df79683)
|
||||
* column based view on wide priv. tables (#9699) (61f02f17)
|
||||
* als (#9749) (e59d3575)
|
||||
* add quick reply key (e9314842)
|
||||
* add new lang key for no best posts (6e73d8c9)
|
||||
|
||||
##### Bug Fixes
|
||||
|
||||
* **deps:**
|
||||
* update dependency autoprefixer to v10.3.4 (67b932f4)
|
||||
* update dependency nodebb-theme-persona to v11.2.4 (fe18e100)
|
||||
* update dependency mongodb to v3.7.0 (31a35d7f)
|
||||
* update socket.io packages to v4.2.0 (f2028d70)
|
||||
* update dependency ioredis to v4.27.9 (6052eb16)
|
||||
* update dependency mongodb to v3.6.12 (#9761) (5fa982c1)
|
||||
* update dependency nodebb-plugin-composer-default to v7.0.2 (33d51201)
|
||||
* update dependency nodebb-theme-slick to v1.4.12 (1b416d7e)
|
||||
* update dependency nodebb-theme-slick to v1.4.11 (65b32fa1)
|
||||
* update dependency nodebb-theme-persona to v11.2.3 (6ce321e4)
|
||||
* update dependency autoprefixer to v10.3.3 (91ba7cdf)
|
||||
* update dependency nodebb-theme-slick to v1.4.9 (d80b378f)
|
||||
* update dependency jquery-deserialize to v2.0.0 (#9744) (7f9451ce)
|
||||
* determine indeterminate checkboxes (760ea9df)
|
||||
* move app.alert back into the conditionals (ca9bae3a)
|
||||
* only show email confirmation warning toast on pages that it applies (1bd1cc74)
|
||||
* updated email confirm warning to be more positive (2d1380dd)
|
||||
* automated tests are a good thing to have (6afeac37)
|
||||
|
||||
##### Refactors
|
||||
|
||||
* consistent jquery element var naming (fc0e655e)
|
||||
* var to const (1272da65)
|
||||
|
||||
#### v1.18.0 (2021-08-25)
|
||||
|
||||
##### Breaking Changes
|
||||
|
||||
* **emails:** restore ability for admins to edit a user's email address [breaking] (c4e3362b)
|
||||
* #9670 return 4xx errors instead of 5xx on flag routes, when unauthenticated or not privileged [breaking] (d1959a25)
|
||||
* made TopicList.onTopicsLoaded private [breaking] (07f25d8c)
|
||||
* return proper API-style response if exception caught by error handler on v3 routes [breaking] (a54a3ee1)
|
||||
|
||||
##### Chores
|
||||
|
||||
* **deps:**
|
||||
* update dependency husky to v7.0.2 (324c7d48)
|
||||
* update dependency eslint-plugin-import to v2.24.2 (9a34fe18)
|
||||
* update dependency eslint-config-nodebb to v0.0.2 (cd85a55d)
|
||||
* update dependency mocha to v9.1.0 (c5a42273)
|
||||
* update dependency eslint-plugin-import to v2.24.1 (daca09d4)
|
||||
* update dependency @apidevtools/swagger-parser to v10.0.3 (ffdf61b8)
|
||||
* update dependency jsdom to v17 (#9700) (41855375)
|
||||
* update dependency eslint-plugin-import to v2.24.0 (23dafa20)
|
||||
* update dependency lint-staged to v11.1.2 (d47bdde2)
|
||||
* update dependency jsdom to v16.7.0 (9db28b4b)
|
||||
* update dependency eslint to v7.32.0 (03a98f4d)
|
||||
* update dependency mocha to v9.0.3 (40384fcb)
|
||||
* update dependency lint-staged to v11.1.1 (7588aae1)
|
||||
* update dependency lint-staged to v11.1.0 (cb5fe271)
|
||||
* update dependency mocha to v9 (f43291f5)
|
||||
* update dependency husky to v7 (702290c4)
|
||||
* update dependency eslint to v7.31.0 (f5a53b7f)
|
||||
* update dependency lint-staged to v11.0.1 (02101315)
|
||||
* up markdown/composer-default, fixes: #9708 (b74eefac)
|
||||
* incrementing version number - v1.17.2 (46be2046)
|
||||
* update changelog for v1.17.2 (5c9c0605)
|
||||
|
||||
##### Documentation Changes
|
||||
|
||||
* some hook deprecation notices (6bc090f8)
|
||||
|
||||
##### New Features
|
||||
|
||||
* add confirmation modal to topic event deletion (e803737a)
|
||||
* allow changing default search in (794bf01b)
|
||||
* #9705, use radio buttons for flag reasons (382a4c27)
|
||||
* Client-side hooks - replace window.trigger (#9679) (342503e0)
|
||||
* closes #9684, allow event deletion (358ad740)
|
||||
* replace eslint configs on server and client side to inherit rules from eslint-config-nodebb (f653a6ff)
|
||||
* re-add FontAwesome font for compatibility (a370c26f)
|
||||
* update to FontAwesome 5.15, resolve #6976 (41762e66)
|
||||
* removed registerAndLoginUserCallback local helper, added handling if a bad interstitial doesn't go away nor throw errors (70a04bc1)
|
||||
* updated email confirmation alert to more closely reflect email usage, remembering dismissal (bbbacd86)
|
||||
* allow requirejs modules to be awaited (58adb762)
|
||||
* show instructional modal after email change request (0e05cbe1)
|
||||
* return back to profile after editing email (324a12b6)
|
||||
* allow registration interstitial abort to also follow returnTo (b3c91641)
|
||||
* plumb current session id into email removal/confirmation flow, so all other sessions are revoked except for the current session (96398faa)
|
||||
* allow revokeAllSessions method to revoke all sessions except that which is passed in (new arg) (b0a4a1d3)
|
||||
* return generic 404 on invalid confirm code (f53fc1ad)
|
||||
* invites no longer require email (a917210c)
|
||||
* show different registration intersitial lead text on new account vs. existing (74aaa0a9)
|
||||
* removal of emailExists socket listener (12b2a979)
|
||||
* add loggedin/guest class to body (04b1f702)
|
||||
* convert _fireStaticHook to async function (auto-refactor by vscode) (21359eab)
|
||||
* store topic tags in topic hash (#9656) (4a56388e)
|
||||
* new hook `action:topics.loading` (in the same format as `action:posts.loading`) (e0db904b)
|
||||
* schedule deprecation for `action:category.loaded` and `action:category.loading`. Use `action:topics.loaded/ing` instead (8ae4c300)
|
||||
* internationalize API error messages (7036c375)
|
||||
* #9651, change category desc to multiline (5fd190f7)
|
||||
* **emails:**
|
||||
* pass req in to filter:registration.interstitial (afd2d8da)
|
||||
* display current email in interstitial form (f5291999)
|
||||
* upgrade script for includeUnverifiedEmails (50517020)
|
||||
* +includeUnverifiedEmails ACP setting (be97aa6f)
|
||||
|
||||
##### Bug Fixes
|
||||
|
||||
* lint (55693ec1)
|
||||
* topic event deletion (1ee92c28)
|
||||
* pluginPaths (0743554d)
|
||||
* #9730, show warning if plugin is active but not installed (13878e9f)
|
||||
* #9729, insert new posts after topic events (60bf5643)
|
||||
* #9719, only apply to non https (c354cde3)
|
||||
* #9727, addHandlers after hooks (77c3085a)
|
||||
* allow smaller than 5mins for admin relogin duration (a288f51f)
|
||||
* taskbar icon not pushed via composer/persona (3a81c8fd)
|
||||
* #9698, pass along query params in redirect (9de64bf5)
|
||||
* lint (8bf2896d)
|
||||
* remove unnecessary quote (093ac1c0)
|
||||
* parseInt tids (162ebacf)
|
||||
* #9681, update posts in queue if target tid is merged (0c816429)
|
||||
* email update interstitial to not error on empty email field (on new registration) (4a521ea2)
|
||||
* updated ACP > Manage > Users to handle users with no email address (824a72b2)
|
||||
* allowed reset and reset_notify emails to go out to unconfirmed email addresses (d5b5b7d5)
|
||||
* bug where confirmation email was sent to the old email address, not the new one (414d733d)
|
||||
* email validation flow, so that it actually works, fixed event logging bug, new email verification template (3bcd1f14)
|
||||
* accidental early return in confirmByCode, tests, race condition (caf89687)
|
||||
* test :shipit: (2c06ac9a)
|
||||
* failing test from d1959a2 (f71f2951)
|
||||
* #9668, add raw info to psql database page (6c47a060)
|
||||
* use hooks module instead of window trigger (acb11cc7)
|
||||
* tests (0960a814)
|
||||
* translate language keys if passed in to formatApiResponse (415416d2)
|
||||
* lint (ff78969c)
|
||||
* tests (55d7e558)
|
||||
* keep query string on redirects (47c8c692)
|
||||
* **deps:**
|
||||
* bump persona (12e7f8d5)
|
||||
* update dependency nodebb-theme-persona to v11.2.1 (#9734) (2e1562b8)
|
||||
* update dependency nodebb-theme-vanilla to v12.1.2 (#9735) (4bd66a7c)
|
||||
* update dependency nodebb-theme-slick to v1.4.8 (#9732) (096c5a58)
|
||||
* update dependency autoprefixer to v10.3.2 (d44e3a8e)
|
||||
* update dependency nodebb-theme-persona to v11.2.0 (116f9cb5)
|
||||
* update dependency ioredis to v4.27.8 (8461791a)
|
||||
* update dependency nodebb-theme-persona to v11.1.3 (ec103ce8)
|
||||
* update dependency sharp to v0.29.0 (626d5565)
|
||||
* update dependency connect-mongo to v4.5.0 (ce6039f2)
|
||||
* update dependency nodebb-theme-vanilla to v12.1.1 (de83f82e)
|
||||
* update dependency nodebb-theme-persona to v11.1.2 (ee10ae04)
|
||||
* update dependency yargs to v17.1.1 (38e38580)
|
||||
* update dependency nodebb-theme-persona to v11.1.1 (47941418)
|
||||
* update dependency mongodb to v3.6.11 (a0fd0268)
|
||||
* update dependency yargs to v17.1.0 (181c20ba)
|
||||
* update dependency ioredis to v4.27.7 (4c9d6b62)
|
||||
* update theme versions for #9607 (3b34571d)
|
||||
* update dependency postcss to v8.3.6 (ebdba8f1)
|
||||
* update dependency html-to-text to v8 (3f24746c)
|
||||
* update dependency yargs to v17 (1b6b1fe5)
|
||||
* bump composer-default to v7 (51458c75)
|
||||
* update dependency autoprefixer to v10.3.1 (0d3f74b7)
|
||||
* update dependency nodebb-plugin-markdown to v8.14.2 (b6a84712)
|
||||
* update dependency autoprefixer to v10.3.0 (72c9650f)
|
||||
* update socket.io packages to v4.1.3 (f14df0d4)
|
||||
* update dependency nodebb-plugin-composer-default to v6.5.34 (31dae04f)
|
||||
* update dependency nodebb-theme-persona to v11.0.26 (ae14016e)
|
||||
* update dependency nodebb-plugin-markdown to v8.14.1 (8b41684e)
|
||||
* **emails:**
|
||||
* broken test for api/user/email/:email (81611ae1)
|
||||
* dont allow retrieving user data if showemail is false @julianlam (7d115c8e)
|
||||
* registration tests, email no longer passed-in, API tests (confirm email for test accounts) (6694bdd5)
|
||||
* don't automatically associate email during user creation if passed in at registration (e726048e)
|
||||
* remove debug log (b4b65ecd)
|
||||
* broken test due to sticky registration interstitial (ab9b6716)
|
||||
|
||||
##### Refactors
|
||||
|
||||
* remove promisify from redis, ioredis supports promises nati… (#9728) (6659e95a)
|
||||
* get rid of async.waterfall/each (8fb53252)
|
||||
* remove unused async (42dbd402)
|
||||
* remove waterfall (6b6a7d4b)
|
||||
* move interstitials into its own file in `src/user/` (e95df2f0)
|
||||
* added user.email.remove method, updated email interstitial to handle email removal (ccf004f1)
|
||||
* client-side to use flag notes API (ef4e74bf)
|
||||
* fix wording (6ed7e937)
|
||||
* **email:** validation checking methods, +tests fix (087e6020)
|
||||
* **emails:**
|
||||
* more work in update email interstitial, interstitial skipping, email change on confirmation, deprecation of requireEmailConfirmation (69c96dd2)
|
||||
* interstitial for adding/updating email (f365bc46)
|
||||
* remove email validation on client and server side (7c1d1c77)
|
||||
|
||||
##### Code Style Changes
|
||||
|
||||
* eslint (d2492ef4)
|
||||
* lint fix (340ccb24)
|
||||
* lint (52229172)
|
||||
|
||||
##### Tests
|
||||
|
||||
* **emails:** fixing broken tests introduced by e5ff68acd (a3a3b10f)
|
||||
|
||||
#### v1.17.2 (2021-07-07)
|
||||
|
||||
##### Chores
|
||||
|
||||
11
Dockerfile
11
Dockerfile
@@ -1,17 +1,20 @@
|
||||
FROM node:lts
|
||||
|
||||
RUN mkdir -p /usr/src/app
|
||||
RUN mkdir -p /usr/src/app && \
|
||||
chown -R node:node /usr/src/app
|
||||
WORKDIR /usr/src/app
|
||||
|
||||
ARG NODE_ENV
|
||||
ENV NODE_ENV $NODE_ENV
|
||||
|
||||
COPY install/package.json /usr/src/app/package.json
|
||||
COPY --chown=node:node install/package.json /usr/src/app/package.json
|
||||
|
||||
USER node
|
||||
|
||||
RUN npm install --only=prod && \
|
||||
npm cache clean --force
|
||||
|
||||
COPY . /usr/src/app
|
||||
|
||||
COPY --chown=node:node . /usr/src/app
|
||||
|
||||
ENV NODE_ENV=production \
|
||||
daemon=false \
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
# 
|
||||
|
||||
[](https://travis-ci.org/NodeBB/NodeBB)
|
||||
[](https://github.com/NodeBB/NodeBB/actions/workflows/test.yaml)
|
||||
[](https://coveralls.io/github/NodeBB/NodeBB?branch=master)
|
||||
[](https://david-dm.org/nodebb/nodebb?path=install)
|
||||
[](https://codeclimate.com/github/NodeBB/NodeBB)
|
||||
|
||||
[**NodeBB Forum Software**](https://nodebb.org) is powered by Node.js and supports either Redis, MongoDB, or a PostgreSQL database. It utilizes web sockets for instant interactions and real-time notifications. NodeBB has many modern features out of the box such as social network integration and streaming discussions, while still making sure to be compatible with older browsers.
|
||||
@@ -15,6 +14,7 @@ Additional functionality is enabled through the use of third-party plugins.
|
||||
* [Help translate NodeBB](https://www.transifex.com/projects/p/nodebb/)
|
||||
* [NodeBB Blog](http://blog.nodebb.org)
|
||||
* [Premium Hosting for NodeBB](http://www.nodebb.org/ "NodeBB")
|
||||
* Unofficial IRC community – channel `#nodebb` on Libera.chat
|
||||
* [Follow us on Twitter](http://www.twitter.com/NodeBB/ "NodeBB Twitter")
|
||||
* [Like us on Facebook](http://www.facebook.com/NodeBB/ "NodeBB Facebook")
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
"newbiePostEditDuration": 3600,
|
||||
"postDeleteDuration": 0,
|
||||
"enablePostHistory": 1,
|
||||
"topicBacklinks": 1,
|
||||
"postCacheSize": 10485760,
|
||||
"disableChat": 0,
|
||||
"chatEditDuration": 0,
|
||||
@@ -65,10 +66,10 @@
|
||||
"profileImageDimension": 200,
|
||||
"profile:convertProfileImageToPNG": 0,
|
||||
"profile:keepAllUserImages": 0,
|
||||
"requireEmailConfirmation": 0,
|
||||
"gdpr_enabled": 1,
|
||||
"allowProfileImageUploads": 1,
|
||||
"teaserPost": "last-reply",
|
||||
"showPostPreviewsOnHover": 1,
|
||||
"allowPrivateGroups": 1,
|
||||
"unreadCutoff": 2,
|
||||
"bookmarkThreshold": 5,
|
||||
@@ -108,6 +109,9 @@
|
||||
"postsPerPage": 20,
|
||||
"categoriesPerPage": 50,
|
||||
"userSearchResultsPerPage": 50,
|
||||
"searchDefaultSortBy": "relevance",
|
||||
"searchDefaultIn": "titlesposts",
|
||||
"searchDefaultInQuick": "titles",
|
||||
"maximumGroupNameLength": 255,
|
||||
"maximumGroupTitleLength": 40,
|
||||
"preventTopicDeleteAfterReplies": 0,
|
||||
@@ -134,6 +138,8 @@
|
||||
"disableEmailSubscriptions": 0,
|
||||
"emailConfirmInterval": 10,
|
||||
"removeEmailNotificationImages": 0,
|
||||
"includeUnverifiedEmails": 0,
|
||||
"emailPrompt": 1,
|
||||
"inviteExpiration": 7,
|
||||
"dailyDigestFreq": "off",
|
||||
"digestHour": 17,
|
||||
|
||||
@@ -3,10 +3,6 @@
|
||||
const prompt = require('prompt');
|
||||
const winston = require('winston');
|
||||
|
||||
const util = require('util');
|
||||
|
||||
const promptGet = util.promisify((schema, callback) => prompt.get(schema, callback));
|
||||
|
||||
const questions = {
|
||||
redis: require('../src/database/redis').questions,
|
||||
mongo: require('../src/database/mongo').questions,
|
||||
@@ -28,17 +24,17 @@ async function getDatabaseConfig(config) {
|
||||
if (config['redis:host'] && config['redis:port']) {
|
||||
return config;
|
||||
}
|
||||
return await promptGet(questions.redis);
|
||||
return await prompt.get(questions.redis);
|
||||
} else if (config.database === 'mongo') {
|
||||
if ((config['mongo:host'] && config['mongo:port']) || config['mongo:uri']) {
|
||||
return config;
|
||||
}
|
||||
return await promptGet(questions.mongo);
|
||||
return await prompt.get(questions.mongo);
|
||||
} else if (config.database === 'postgres') {
|
||||
if (config['postgres:host'] && config['postgres:port']) {
|
||||
return config;
|
||||
}
|
||||
return await promptGet(questions.postgres);
|
||||
return await prompt.get(questions.postgres);
|
||||
}
|
||||
throw new Error(`unknown database : ${config.database}`);
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"name": "nodebb",
|
||||
"license": "GPL-3.0",
|
||||
"description": "NodeBB Forum",
|
||||
"version": "1.17.2",
|
||||
"version": "1.18.6",
|
||||
"homepage": "http://www.nodebb.org",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -32,7 +32,7 @@
|
||||
"ace-builds": "^1.4.12",
|
||||
"archiver": "^5.2.0",
|
||||
"async": "^3.2.0",
|
||||
"autoprefixer": "10.3.1",
|
||||
"autoprefixer": "10.4.0",
|
||||
"bcryptjs": "2.4.3",
|
||||
"benchpressjs": "2.4.3",
|
||||
"body-parser": "^1.19.0",
|
||||
@@ -46,9 +46,9 @@
|
||||
"compare-versions": "3.6.0",
|
||||
"compression": "^1.7.4",
|
||||
"connect-flash": "^0.1.1",
|
||||
"connect-mongo": "4.4.1",
|
||||
"connect-mongo": "4.6.0",
|
||||
"connect-multiparty": "^2.2.0",
|
||||
"connect-pg-simple": "^6.2.1",
|
||||
"connect-pg-simple": "^7.0.0",
|
||||
"connect-redis": "6.0.0",
|
||||
"cookie-parser": "^1.4.5",
|
||||
"cron": "^1.8.2",
|
||||
@@ -61,13 +61,13 @@
|
||||
"express-useragent": "^1.0.15",
|
||||
"graceful-fs": "^4.2.6",
|
||||
"helmet": "^4.4.1",
|
||||
"html-to-text": "7.1.1",
|
||||
"html-to-text": "8.1.0",
|
||||
"ipaddr.js": "^2.0.0",
|
||||
"jquery": "3.6.0",
|
||||
"jquery-deserialize": "2.0.0-rc1",
|
||||
"jquery-deserialize": "2.0.0",
|
||||
"jquery-form": "4.3.0",
|
||||
"jquery-serializeobject": "1.0.0",
|
||||
"jquery-ui": "1.12.1",
|
||||
"jquery-ui": "1.13.0",
|
||||
"jsesc": "3.0.2",
|
||||
"json2csv": "5.0.6",
|
||||
"jsonwebtoken": "^8.5.1",
|
||||
@@ -78,36 +78,36 @@
|
||||
"material-design-lite": "^1.3.0",
|
||||
"mime": "^2.5.2",
|
||||
"mkdirp": "^1.0.4",
|
||||
"mongodb": "3.6.10",
|
||||
"mongodb": "4.1.4",
|
||||
"morgan": "^1.10.0",
|
||||
"mousetrap": "^1.6.5",
|
||||
"multiparty": "4.2.2",
|
||||
"@nodebb/bootswatch": "3.4.2",
|
||||
"nconf": "^0.11.2",
|
||||
"nodebb-plugin-composer-default": "6.5.34",
|
||||
"nodebb-plugin-dbsearch": "5.0.2",
|
||||
"nodebb-plugin-composer-default": "7.0.14",
|
||||
"nodebb-plugin-dbsearch": "5.1.0",
|
||||
"nodebb-plugin-emoji": "^3.5.0",
|
||||
"nodebb-plugin-emoji-android": "2.0.5",
|
||||
"nodebb-plugin-markdown": "8.14.2",
|
||||
"nodebb-plugin-mentions": "2.13.11",
|
||||
"nodebb-plugin-spam-be-gone": "0.7.9",
|
||||
"nodebb-rewards-essentials": "0.1.5",
|
||||
"nodebb-theme-lavender": "5.2.1",
|
||||
"nodebb-theme-persona": "11.0.26",
|
||||
"nodebb-theme-slick": "1.4.7",
|
||||
"nodebb-theme-vanilla": "12.0.8",
|
||||
"nodebb-plugin-markdown": "8.14.4",
|
||||
"nodebb-plugin-mentions": "3.0.3",
|
||||
"nodebb-plugin-spam-be-gone": "0.7.11",
|
||||
"nodebb-rewards-essentials": "0.2.0",
|
||||
"nodebb-theme-lavender": "5.3.1",
|
||||
"nodebb-theme-persona": "11.2.21",
|
||||
"nodebb-theme-slick": "1.4.16",
|
||||
"nodebb-theme-vanilla": "12.1.9",
|
||||
"nodebb-widget-essentials": "5.0.4",
|
||||
"nodemailer": "^6.5.0",
|
||||
"nprogress": "0.2.0",
|
||||
"passport": "^0.4.1",
|
||||
"passport": "^0.5.0",
|
||||
"passport-http-bearer": "^1.0.1",
|
||||
"passport-local": "1.0.0",
|
||||
"pg": "^8.5.1",
|
||||
"pg-cursor": "^2.5.2",
|
||||
"postcss": "8.3.5",
|
||||
"pg": "^8.7.1",
|
||||
"pg-cursor": "^2.7.1",
|
||||
"postcss": "8.3.11",
|
||||
"postcss-clean": "1.2.0",
|
||||
"prompt": "^1.1.0",
|
||||
"ioredis": "4.27.6",
|
||||
"ioredis": "4.28.0",
|
||||
"request": "2.88.2",
|
||||
"request-promise-native": "^1.0.9",
|
||||
"requirejs": "2.3.6",
|
||||
@@ -116,12 +116,12 @@
|
||||
"sanitize-html": "^2.3.2",
|
||||
"semver": "^7.3.4",
|
||||
"serve-favicon": "^2.5.0",
|
||||
"sharp": "0.28.3",
|
||||
"sharp": "0.29.2",
|
||||
"sitemap": "^7.0.0",
|
||||
"slideout": "1.0.1",
|
||||
"socket.io": "4.1.3",
|
||||
"socket.io": "4.3.2",
|
||||
"socket.io-adapter-cluster": "^1.0.1",
|
||||
"socket.io-client": "4.1.3",
|
||||
"socket.io-client": "4.3.2",
|
||||
"@socket.io/redis-adapter": "7.0.0",
|
||||
"sortablejs": "1.14.0",
|
||||
"spdx-license-list": "^6.4.0",
|
||||
@@ -132,28 +132,28 @@
|
||||
"tinycon": "0.6.8",
|
||||
"toobusy-js": "^0.5.1",
|
||||
"uglify-es": "^3.3.9",
|
||||
"validator": "13.6.0",
|
||||
"validator": "13.7.0",
|
||||
"visibilityjs": "2.0.2",
|
||||
"winston": "3.3.3",
|
||||
"xml": "^1.0.1",
|
||||
"xregexp": "^5.0.1",
|
||||
"yargs": "16.2.0",
|
||||
"yargs": "17.2.1",
|
||||
"zxcvbn": "^4.4.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@apidevtools/swagger-parser": "10.0.2",
|
||||
"@commitlint/cli": "12.1.4",
|
||||
"@commitlint/config-angular": "12.1.4",
|
||||
"@apidevtools/swagger-parser": "10.0.3",
|
||||
"@commitlint/cli": "14.1.0",
|
||||
"@commitlint/config-angular": "14.1.0",
|
||||
"coveralls": "3.1.1",
|
||||
"eslint": "7.30.0",
|
||||
"eslint-config-airbnb-base": "14.2.1",
|
||||
"eslint-plugin-import": "2.23.4",
|
||||
"eslint": "7.32.0",
|
||||
"eslint-config-nodebb": "0.0.3",
|
||||
"eslint-plugin-import": "2.25.3",
|
||||
"grunt": "1.4.1",
|
||||
"grunt-contrib-watch": "1.1.0",
|
||||
"husky": "6.0.0",
|
||||
"jsdom": "16.6.0",
|
||||
"lint-staged": "11.0.1",
|
||||
"mocha": "8.4.0",
|
||||
"husky": "7.0.4",
|
||||
"jsdom": "18.0.1",
|
||||
"lint-staged": "11.2.6",
|
||||
"mocha": "9.1.3",
|
||||
"mocha-lcov-reporter": "1.3.0",
|
||||
"mockdate": "3.0.5",
|
||||
"nyc": "15.1.0",
|
||||
|
||||
@@ -7,11 +7,7 @@ const fs = require('fs');
|
||||
const path = require('path');
|
||||
const childProcess = require('child_process');
|
||||
const less = require('less');
|
||||
const util = require('util');
|
||||
|
||||
const lessRenderAsync = util.promisify(
|
||||
(style, opts, cb) => less.render(String(style), opts, cb)
|
||||
);
|
||||
const uglify = require('uglify-es');
|
||||
const nconf = require('nconf');
|
||||
|
||||
@@ -253,7 +249,7 @@ async function compileLess() {
|
||||
try {
|
||||
const installSrc = path.join(__dirname, '../public/less/install.less');
|
||||
const style = await fs.promises.readFile(installSrc);
|
||||
const css = await lessRenderAsync(style, { filename: path.resolve(installSrc) });
|
||||
const css = await less.render(String(style), { filename: path.resolve(installSrc) });
|
||||
await fs.promises.writeFile(path.join(__dirname, '../public/installer.css'), css.css);
|
||||
} catch (err) {
|
||||
winston.error(`Unable to compile LESS: \n${err.stack}`);
|
||||
|
||||
32
loader.js
32
loader.js
@@ -5,7 +5,6 @@ const fs = require('fs');
|
||||
const url = require('url');
|
||||
const path = require('path');
|
||||
const { fork } = require('child_process');
|
||||
const async = require('async');
|
||||
const logrotate = require('logrotate-stream');
|
||||
const mkdirp = require('mkdirp');
|
||||
|
||||
@@ -36,7 +35,7 @@ const Loader = {
|
||||
};
|
||||
const appPath = path.join(__dirname, 'app.js');
|
||||
|
||||
Loader.init = function (callback) {
|
||||
Loader.init = function () {
|
||||
if (silent) {
|
||||
console.log = (...args) => {
|
||||
output.write(`${args.join(' ')}\n`);
|
||||
@@ -45,17 +44,15 @@ Loader.init = function (callback) {
|
||||
|
||||
process.on('SIGHUP', Loader.restart);
|
||||
process.on('SIGTERM', Loader.stop);
|
||||
callback();
|
||||
};
|
||||
|
||||
Loader.displayStartupMessages = function (callback) {
|
||||
Loader.displayStartupMessages = function () {
|
||||
console.log('');
|
||||
console.log(`NodeBB v${pkg.version} Copyright (C) 2013-2014 NodeBB Inc.`);
|
||||
console.log('This program comes with ABSOLUTELY NO WARRANTY.');
|
||||
console.log('This is free software, and you are welcome to redistribute it under certain conditions.');
|
||||
console.log('For the full license, please visit: http://www.gnu.org/copyleft/gpl.html');
|
||||
console.log('');
|
||||
callback();
|
||||
};
|
||||
|
||||
Loader.addWorkerEvents = function (worker) {
|
||||
@@ -107,17 +104,13 @@ Loader.addWorkerEvents = function (worker) {
|
||||
});
|
||||
};
|
||||
|
||||
Loader.start = function (callback) {
|
||||
Loader.start = function () {
|
||||
numProcs = getPorts().length;
|
||||
console.log(`Clustering enabled: Spinning up ${numProcs} process(es).\n`);
|
||||
|
||||
for (let x = 0; x < numProcs; x += 1) {
|
||||
forkWorker(x, x === 0);
|
||||
}
|
||||
|
||||
if (callback) {
|
||||
callback();
|
||||
}
|
||||
};
|
||||
|
||||
function forkWorker(index, isPrimary) {
|
||||
@@ -232,15 +225,12 @@ fs.open(pathToConfig, 'r', (err) => {
|
||||
|
||||
fs.writeFileSync(pidFilePath, String(process.pid));
|
||||
}
|
||||
|
||||
async.series([
|
||||
Loader.init,
|
||||
Loader.displayStartupMessages,
|
||||
Loader.start,
|
||||
], (err) => {
|
||||
if (err) {
|
||||
console.error('[loader] Error during startup');
|
||||
throw err;
|
||||
}
|
||||
});
|
||||
try {
|
||||
Loader.init();
|
||||
Loader.displayStartupMessages();
|
||||
Loader.start();
|
||||
} catch (err) {
|
||||
console.error('[loader] Error during startup');
|
||||
throw err;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -1,82 +1,3 @@
|
||||
{
|
||||
"globals": {
|
||||
"app": true,
|
||||
"io": true,
|
||||
"socket": true,
|
||||
"ajaxify": true,
|
||||
"config": true,
|
||||
"utils": true,
|
||||
"overrides": true,
|
||||
"componentHandler": true,
|
||||
"bootbox": true,
|
||||
"Visibility": true,
|
||||
"Tinycon": true,
|
||||
"Promise": true
|
||||
},
|
||||
"env": {
|
||||
"jquery": true,
|
||||
"amd": true,
|
||||
"browser": true,
|
||||
"es6": true
|
||||
},
|
||||
"rules": {
|
||||
"comma-dangle": ["error", {
|
||||
"arrays": "always-multiline",
|
||||
"objects": "always-multiline",
|
||||
"imports": "always-multiline",
|
||||
"exports": "always-multiline",
|
||||
"functions": "never"
|
||||
}],
|
||||
"block-scoped-var": "off",
|
||||
"no-dupe-class-members": "off",
|
||||
"prefer-object-spread": "off",
|
||||
"prefer-reflect": "off",
|
||||
|
||||
// ES6
|
||||
"prefer-rest-params": "off",
|
||||
"prefer-spread": "off",
|
||||
"prefer-arrow-callback": "off",
|
||||
"prefer-template": "off",
|
||||
"no-var": "off",
|
||||
"object-shorthand": "off",
|
||||
"vars-on-top": "off",
|
||||
"prefer-destructuring": "off",
|
||||
// identical to airbnb rule
|
||||
// except for allowing for..in, because for..of is unavailable on some clients
|
||||
"no-restricted-syntax": [
|
||||
"error",
|
||||
{
|
||||
"selector": "ForOfStatement",
|
||||
"message": "iterators/generators require regenerator-runtime, which is too heavyweight for this guide to allow them. Separately, loops should be avoided in favor of array iterations."
|
||||
},
|
||||
{
|
||||
"selector": "LabeledStatement",
|
||||
"message": "Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand."
|
||||
},
|
||||
{
|
||||
"selector": "WithStatement",
|
||||
"message": "`with` is disallowed in strict mode because it makes code impossible to predict and optimize."
|
||||
}
|
||||
]
|
||||
},
|
||||
"parserOptions": {
|
||||
"ecmaVersion": 2018,
|
||||
"ecmaFeatures": {
|
||||
"classes": false,
|
||||
"defaultParams": false,
|
||||
"blockBindings": false,
|
||||
"forOf": false,
|
||||
"generators": false,
|
||||
"globalReturn": false,
|
||||
"jsx": false,
|
||||
"modules": false,
|
||||
"objectLiteralComputedProperties": false,
|
||||
"objectLiteralDuplicateProperties": false,
|
||||
"objectLiteralShorthandMethods": false,
|
||||
"objectLiteralShorthandProperties": false,
|
||||
"impliedStrict": false,
|
||||
"restParams": false,
|
||||
"superInFunctions": false
|
||||
}
|
||||
}
|
||||
"extends": "nodebb/public"
|
||||
}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
{
|
||||
"maxerr" : 50, // {int} Maximum error before stopping
|
||||
|
||||
"esversion": 9,
|
||||
|
||||
// Enforcing
|
||||
"bitwise" : true, // true: Prohibit bitwise operators (&, |, ^, etc.)
|
||||
"camelcase" : false, // true: Identifiers must be in camelCase
|
||||
@@ -42,7 +44,7 @@
|
||||
"evil" : false, // true: Tolerate use of `eval` and `new Function()`
|
||||
"expr" : false, // true: Tolerate `ExpressionStatement` as Programs
|
||||
"funcscope" : false, // true: Tolerate defining variables inside control statements"
|
||||
"globalstrict" : false, // true: Allow global "use strict" (also enables 'strict')
|
||||
"globalstrict" : true, // true: Allow global "use strict" (also enables 'strict')
|
||||
"iterator" : false, // true: Tolerate using the `__iterator__` property
|
||||
"lastsemic" : false, // true: Tolerate omitting a semicolon for the last statement of a 1-line block
|
||||
"laxbreak" : false, // true: Tolerate possibly unsafe line breakings
|
||||
@@ -66,7 +68,6 @@
|
||||
"utils": true,
|
||||
"overrides": true,
|
||||
"componentHandler": true,
|
||||
"bootbox": true,
|
||||
"templates": true,
|
||||
"Visibility": true,
|
||||
"Tinycon": true,
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
"no-events": "لا توجد أحداث",
|
||||
"control-panel": "لوحة تحكم الأحداث",
|
||||
"delete-events": "حذف الاحداث",
|
||||
"confirm-delete-all-events": "Are you sure you want to delete all logged events?",
|
||||
"filters": "تصفية",
|
||||
"filters-apply": "تطبيق التصفية",
|
||||
"filter-type": "نوع الحدث",
|
||||
|
||||
@@ -56,8 +56,8 @@
|
||||
"active-users.total": "المجموع",
|
||||
"active-users.connections": "Connections",
|
||||
|
||||
"anonymous-registered-users": "المجهولين مقابل المستخدمين المسجلين",
|
||||
"anonymous": "مجهول",
|
||||
"guest-registered-users": "Guest vs Registered Users",
|
||||
"guest": "Guest",
|
||||
"registered": "مسجل",
|
||||
|
||||
"user-presence": "تواجد المستخدمين",
|
||||
@@ -68,6 +68,7 @@
|
||||
"unread": "غير مقروء",
|
||||
|
||||
"high-presence-topics": "مواضيع ذات حضور قوي",
|
||||
"popular-searches": "Popular Searches",
|
||||
|
||||
"graphs.page-views": "مشاهدات الصفحة",
|
||||
"graphs.page-views-registered": "Page Views Registered",
|
||||
@@ -75,13 +76,14 @@
|
||||
"graphs.page-views-bot": "Page Views Bot",
|
||||
"graphs.unique-visitors": "زوار فريدين",
|
||||
"graphs.registered-users": "مستخدمين مسجلين",
|
||||
"graphs.anonymous-users": "مستخدمين مجهولين",
|
||||
"graphs.guest-users": "Guest Users",
|
||||
"last-restarted-by": "Last restarted by",
|
||||
"no-users-browsing": "No users browsing",
|
||||
|
||||
"back-to-dashboard": "Back to Dashboard",
|
||||
"details.no-users": "No users have joined within the selected timeframe",
|
||||
"details.no-topics": "No topics have been posted within the selected timeframe",
|
||||
"details.no-searches": "No searches have been made yet",
|
||||
"details.no-logins": "No logins have been recorded within the selected timeframe",
|
||||
"details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions",
|
||||
"details.logins-login-time": "Login Time"
|
||||
|
||||
@@ -8,7 +8,11 @@
|
||||
"nodejs": "nodejs",
|
||||
"online": "online",
|
||||
"git": "git",
|
||||
"memory": "memory",
|
||||
"process-memory": "process memory",
|
||||
"system-memory": "system memory",
|
||||
"used-memory-process": "Used memory by process",
|
||||
"used-memory-os": "Used system memory",
|
||||
"total-memory-os": "Total system memory",
|
||||
"load": "system load",
|
||||
"cpu-usage": "cpu usage",
|
||||
"uptime": "uptime",
|
||||
|
||||
@@ -8,8 +8,6 @@
|
||||
"delete": "Delete",
|
||||
"enable": "Enable",
|
||||
"disable": "Disable",
|
||||
"control-panel": "Rewards Control",
|
||||
"new-reward": "New Reward",
|
||||
|
||||
"alert.delete-success": "Successfully deleted reward",
|
||||
"alert.no-inputs-found": "Illegal reward - no inputs found!",
|
||||
|
||||
@@ -1,79 +0,0 @@
|
||||
{
|
||||
"forum-traffic": "Forum Traffic",
|
||||
"page-views": "مشاهدات الصفحات",
|
||||
"unique-visitors": "زائرين فريدين",
|
||||
"new-users": "New Users",
|
||||
"posts": "مشاركات",
|
||||
"topics": "مواضيع",
|
||||
"page-views-seven": "آخر 7 ايام",
|
||||
"page-views-thirty": "آخر 30 يوماً",
|
||||
"page-views-last-day": "آخر 24 ساعة",
|
||||
"page-views-custom": "مدة زمنية مخصصة",
|
||||
"page-views-custom-start": "بداية المدة",
|
||||
"page-views-custom-end": "نهاية المده",
|
||||
"page-views-custom-help": "أدخل نطاقا زمنيا لمرات مشاهدة الصفحات التي ترغب في عرضها. إذا لم يظهر منتقي التاريخ، فإن التنسيق المقبول هو <code>YYYY-MM-DD</code>",
|
||||
"page-views-custom-error": "الرجاء إدخال نطاق تاريخ صالح بالتنسيق <code>YYYY-MM-DD</code>",
|
||||
|
||||
"stats.yesterday": "Yesterday",
|
||||
"stats.today": "Today",
|
||||
"stats.last-week": "Last Week",
|
||||
"stats.this-week": "This Week",
|
||||
"stats.last-month": "Last Month",
|
||||
"stats.this-month": "This Month",
|
||||
"stats.all": "كل الوقت",
|
||||
|
||||
"updates": "تحديثات",
|
||||
"running-version": "المنتدى يعمل حاليا على <strong>NodeBB الإصدار<span id=\"version\">%1</span></strong>.",
|
||||
"keep-updated": "تأكد دائما من أن NodeBB يعمل على احدث إصدار للحصول على أحدث التصحيحات الأمنية وإصلاحات الأخطاء.",
|
||||
"up-to-date": "<p>المنتدى <strong>يعمل على أحدث إصدار</strong> <i class=\"fa fa-check\"></i></p>",
|
||||
"upgrade-available": "<p>A new version (v%1) has been released. Consider <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">upgrading your NodeBB</a>.</p>",
|
||||
"prerelease-upgrade-available": "<p>This is an outdated pre-release version of NodeBB. A new version (v%1) has been released. Consider <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">upgrading your NodeBB</a>.</p>",
|
||||
"prerelease-warning": "<p>هذه نسخة <strong>ماقبل الإصدار</strong> من NodeBB. قد تحدث أخطاء غير مقصودة. <i class=\"fa fa-exclamation-triangle\"></i></p>",
|
||||
"running-in-development": "المنتدى قيد التشغيل في وضع \"المطورين\". وقد تكون هناك ثغرات أمنية مفتوحة؛ من فضلك تواصل مع مسؤول نظامك.",
|
||||
"latest-lookup-failed": "<p>Failed to look up latest available version of NodeBB</p>",
|
||||
|
||||
"notices": "إشعارات",
|
||||
"restart-not-required": "إعادة التشغيل غير مطلوب",
|
||||
"restart-required": "إعادة التشغيل مطلوبة",
|
||||
"search-plugin-installed": "إضافة البحث منصبة",
|
||||
"search-plugin-not-installed": "إضافة البحث غير منصبة",
|
||||
"search-plugin-tooltip": "نصب إضافة البحث من صفحة الإضافات البرمجية لتنشيط وظيفة البحث",
|
||||
|
||||
"control-panel": "التحكم بالنظام",
|
||||
"rebuild-and-restart": "Rebuild & Restart",
|
||||
"restart": "Restart",
|
||||
"restart-warning": "Rebuilding or Restarting your NodeBB will drop all existing connections for a few seconds.",
|
||||
"restart-disabled": "Rebuilding and Restarting your NodeBB has been disabled as you do not seem to be running it via the appropriate daemon.",
|
||||
"maintenance-mode": "وضع الصيانة",
|
||||
"maintenance-mode-title": "انقر هنا لإعداد وضع الصيانة لـNodeBB",
|
||||
"realtime-chart-updates": "التحديث الفوري للرسم البياني",
|
||||
|
||||
"active-users": "المستخدمين النشطين",
|
||||
"active-users.users": "الأعضاء",
|
||||
"active-users.guests": "الزوار",
|
||||
"active-users.total": "المجموع",
|
||||
"active-users.connections": "Connections",
|
||||
|
||||
"anonymous-registered-users": "المجهولين مقابل المستخدمين المسجلين",
|
||||
"anonymous": "مجهول",
|
||||
"registered": "مسجل",
|
||||
|
||||
"user-presence": "تواجد المستخدمين",
|
||||
"on-categories": "في قائمة الأقسام",
|
||||
"reading-posts": "قراءة المشاركات",
|
||||
"browsing-topics": "تصفح المواضيع",
|
||||
"recent": "الأخيرة",
|
||||
"unread": "غير مقروء",
|
||||
|
||||
"high-presence-topics": "مواضيع ذات حضور قوي",
|
||||
|
||||
"graphs.page-views": "مشاهدات الصفحة",
|
||||
"graphs.page-views-registered": "Page Views Registered",
|
||||
"graphs.page-views-guest": "Page Views Guest",
|
||||
"graphs.page-views-bot": "Page Views Bot",
|
||||
"graphs.unique-visitors": "زوار فريدين",
|
||||
"graphs.registered-users": "مستخدمين مسجلين",
|
||||
"graphs.anonymous-users": "مستخدمين مجهولين",
|
||||
"last-restarted-by": "Last restarted by",
|
||||
"no-users-browsing": "No users browsing"
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
{
|
||||
"home-page": "Home Page",
|
||||
"description": "Choose what page is shown when users navigate to the root URL of your forum.",
|
||||
"home-page-route": "Home Page Route",
|
||||
"custom-route": "Custom Route",
|
||||
"allow-user-home-pages": "Allow User Home Pages",
|
||||
"home-page-title": "Title of the home page (default \"Home\")"
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"language-settings": "اعدادات اللغة",
|
||||
"description": "تُحدد اللغة الافتراضية إعدادات اللغة لجميع المستخدمين الذين يزورون المنتدى. <br />يمكن للأعضاء تجاوز اللغة الافتراضية من خلال صفحة إعدادات الحساب الخاصة بهم.",
|
||||
"default-language": "اللغة الافتراضية",
|
||||
"auto-detect": "الكشف عن إعدادات اللغة للزوار بشكل آلي"
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
{
|
||||
"icon": "Icon:",
|
||||
"change-icon": "change",
|
||||
"route": "Route:",
|
||||
"tooltip": "Tooltip:",
|
||||
"text": "Text:",
|
||||
"text-class": "Text Class: <small>optional</small>",
|
||||
"class": "Class: <small>optional</small>",
|
||||
"id": "ID: <small>optional</small>",
|
||||
|
||||
"properties": "Properties:",
|
||||
"groups": "Groups:",
|
||||
"open-new-window": "Open in a new window",
|
||||
|
||||
"btn.delete": "Delete",
|
||||
"btn.disable": "Disable",
|
||||
"btn.enable": "Enable",
|
||||
|
||||
"available-menu-items": "Available Menu Items",
|
||||
"custom-route": "Custom Route",
|
||||
"core": "core",
|
||||
"plugin": "plugin"
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
{
|
||||
"post-sharing": "Post Sharing",
|
||||
"info-plugins-additional": "Plugins can add additional networks for sharing posts.",
|
||||
"save-success": "Successfully saved Post Sharing Networks!"
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"notifications": "التنبيهات",
|
||||
"chat-messages": "Chat Messages",
|
||||
"play-sound": "Play",
|
||||
"incoming-message": "Incoming Message",
|
||||
"outgoing-message": "Outgoing Message",
|
||||
"upload-new-sound": "Upload New Sound",
|
||||
"saved": "Settings Saved"
|
||||
}
|
||||
@@ -13,6 +13,7 @@
|
||||
"resent-single": "Manual digest resend completed",
|
||||
"resent-day": "Daily digest resent",
|
||||
"resent-week": "Weekly digest resent",
|
||||
"resent-biweek": "Bi-Weekly digest resent",
|
||||
"resent-month": "Monthly digest resent",
|
||||
"null": "<em>Never</em>",
|
||||
"manual-run": "Manual digest run:",
|
||||
|
||||
@@ -51,10 +51,13 @@
|
||||
"alert.saved": "Privilege changes saved and applied",
|
||||
"alert.confirm-discard": "Are you sure you wish to discard your privilege changes?",
|
||||
"alert.discarded": "Privilege changes discarded",
|
||||
"alert.confirm-copyToAll": "Are you sure you wish to apply this privilege set to <strong>all categories</strong>?",
|
||||
"alert.confirm-copyToAllGroup": "Are you sure you wish to apply this group's privilege set to <strong>all categories</strong>?",
|
||||
"alert.confirm-copyToChildren": "Are you sure you wish to apply this privilege set to <strong>all descendant (child) categories</strong>?",
|
||||
"alert.confirm-copyToChildrenGroup": "Are you sure you wish to apply this group's privilege set to <strong>all descendant (child) categories</strong>?",
|
||||
"alert.confirm-copyToAll": "Are you sure you wish to apply this set of <strong>%1</strong> to <strong>all categories</strong>?",
|
||||
"alert.confirm-copyToAllGroup": "Are you sure you wish to apply this group's set of <strong>%1</strong> to <strong>all categories</strong>?",
|
||||
"alert.confirm-copyToChildren": "Are you sure you wish to apply this set of <strong>%1</strong> to <strong>all descendant (child) categories</strong>?",
|
||||
"alert.confirm-copyToChildrenGroup": "Are you sure you wish to apply this group's set of <strong>%1</strong> to <strong>all descendant (child) categories</strong>?",
|
||||
"alert.no-undo": "<em>This action cannot be undone.</em>",
|
||||
"alert.admin-warning": "Administrators implicitly get all privileges"
|
||||
"alert.admin-warning": "Administrators implicitly get all privileges",
|
||||
"alert.copyPrivilegesFrom-title": "Select a category to copy from",
|
||||
"alert.copyPrivilegesFrom-warning": "This will copy <strong>%1</strong> from the selected category.",
|
||||
"alert.copyPrivilegesFromGroup-warning": "This will copy this group's set of <strong>%1</strong> from the selected category."
|
||||
}
|
||||
@@ -5,5 +5,7 @@
|
||||
"orphaned": "Orphaned",
|
||||
"size/filecount": "Size / Filecount",
|
||||
"confirm-delete": "Do you really want to delete this file?",
|
||||
"filecount": "%1 files"
|
||||
"filecount": "%1 files",
|
||||
"new-folder": "New Folder",
|
||||
"name-new-folder": "Enter a name for new the folder"
|
||||
}
|
||||
@@ -47,6 +47,7 @@
|
||||
"users.uid": "uid",
|
||||
"users.username": "username",
|
||||
"users.email": "email",
|
||||
"users.no-email": "(no email)",
|
||||
"users.ip": "IP",
|
||||
"users.postcount": "postcount",
|
||||
"users.reputation": "reputation",
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
"dashboard/logins": "Logins",
|
||||
"dashboard/users": "Users",
|
||||
"dashboard/topics": "Topics",
|
||||
"dashboard/searches": "Searches",
|
||||
"section-general": "عام",
|
||||
|
||||
"section-manage": "إدارة",
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
"from-help": "The from name to display in the email.",
|
||||
|
||||
"smtp-transport": "SMTP Transport",
|
||||
"smtp-transport.enabled": "Use an external email server to send emails",
|
||||
"smtp-transport.enabled": "Enable SMTP Transport",
|
||||
"smtp-transport-help": "You can select from a list of well-known services or enter a custom one.",
|
||||
"smtp-transport.service": "Select a service",
|
||||
"smtp-transport.service-custom": "Custom Service",
|
||||
@@ -36,6 +36,11 @@
|
||||
"subscriptions.disable": "Disable email digests",
|
||||
"subscriptions.hour": "Digest Hour",
|
||||
"subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. <code>0</code> for midnight, <code>17</code> for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.<br /> The approximate server time is: <span id=\"serverTime\"></span><br /> The next daily digest is scheduled to be sent <span id=\"nextDigestTime\"></span>",
|
||||
"notifications.settings": "Email notification settings",
|
||||
"notifications.remove-images": "Remove images from email notifications"
|
||||
}
|
||||
"notifications.remove-images": "Remove images from email notifications",
|
||||
"require-email-address": "Require new users to specify an email address",
|
||||
"require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. <strong>It does not ensure user will enter a real email address, nor even an address they own.</strong>",
|
||||
"include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails",
|
||||
"include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). <strong>Enable this setting at your own risk</strong> – sending emails to unverified addresses may be a violation of regional anti-spam laws.",
|
||||
"prompt": "Prompt users to enter or confirm their emails",
|
||||
"prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen."
|
||||
}
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
"title": "عنوان الموقع",
|
||||
"title.short": "عنوان قصير",
|
||||
"title.short-placeholder": "ان لم تقم بكتابة عنوان مختصر, سيتم استخدام عنوان الموقع الكلي",
|
||||
"title.url": "الرابط",
|
||||
"title.url": "Title Link URL",
|
||||
"title.url-placeholder": "The URL of the site title",
|
||||
"title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.",
|
||||
"title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index. <br> Note: This is not the external URL used in emails, etc. That is set by the <code>url</code> property in config.json",
|
||||
"title.name": "اسم المنتدي",
|
||||
"title.show-in-header": "Show Site Title in Header",
|
||||
"browser-title": "عنوان المتصفح",
|
||||
@@ -20,9 +20,9 @@
|
||||
"logo.image": "صورة",
|
||||
"logo.image-placeholder": "Path to a logo to display on forum header",
|
||||
"logo.upload": "رفع",
|
||||
"logo.url": "الرابط",
|
||||
"logo.url": "Logo Link URL",
|
||||
"logo.url-placeholder": "The URL of the site logo",
|
||||
"logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.",
|
||||
"logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index. <br> Note: This is not the external URL used in emails, etc. That is set by the <code>url</code> property in config.json",
|
||||
"logo.alt-text": "نص بديل",
|
||||
"log.alt-text-placeholder": "Alternative text for accessibility",
|
||||
"favicon": "صورة المفضله",
|
||||
@@ -35,7 +35,10 @@
|
||||
"maskable-icon.help": "Recommended size and format: 512x512, PNG format only. If no maskable icon is specified, NodeBB will fall back to the Touch Icon.",
|
||||
"outgoing-links": "Outgoing Links",
|
||||
"outgoing-links.warning-page": "Use Outgoing Links Warning Page",
|
||||
"search-default-sort-by": "الترتيب الافتراضي للبحث",
|
||||
"search": "Search",
|
||||
"search-default-in": "Search In",
|
||||
"search-default-in-quick": "Quick Search In",
|
||||
"search-default-sort-by": "Sort by",
|
||||
"outgoing-links.whitelist": "Domains to whitelist for bypassing the warning page",
|
||||
"site-colors": "Site Color Metadata",
|
||||
"theme-color": "لون الثيم",
|
||||
@@ -44,4 +47,4 @@
|
||||
"undo-timeout": "Undo Timeout",
|
||||
"undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.",
|
||||
"topic-tools": "Topic Tools"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,8 @@
|
||||
"properties": "Properties:",
|
||||
"groups": "Groups:",
|
||||
"open-new-window": "Open in a new window",
|
||||
"dropdown": "Dropdown",
|
||||
"dropdown-placeholder": "Place your dropdown menu items below, ie: <br/><li><a href="https://myforum.com">Link 1</a></li>",
|
||||
|
||||
"btn.delete": "Delete",
|
||||
"btn.disable": "Disable",
|
||||
@@ -20,4 +22,4 @@
|
||||
"custom-route": "Custom Route",
|
||||
"core": "core",
|
||||
"plugin": "plugin"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,5 +2,6 @@
|
||||
"notifications": "Notifications",
|
||||
"welcome-notification": "Welcome Notification",
|
||||
"welcome-notification-link": "Welcome Notification Link",
|
||||
"welcome-notification-uid": "Welcome Notification User (UID)"
|
||||
"welcome-notification-uid": "Welcome Notification User (UID)",
|
||||
"post-queue-notification-uid": "Post Queue User (UID)"
|
||||
}
|
||||
@@ -40,6 +40,7 @@
|
||||
"teaser.last-post": "Last – Show the latest post, including the original post, if no replies",
|
||||
"teaser.last-reply": "Last – Show the latest reply, or a \"No replies\" placeholder if no replies",
|
||||
"teaser.first": "First",
|
||||
"showPostPreviewsOnHover": "Show a preview of posts when mouse overed",
|
||||
"unread": "Unread Settings",
|
||||
"unread.cutoff": "Unread cutoff days",
|
||||
"unread.min-track-last": "Minimum posts in topic before tracking last read",
|
||||
@@ -56,6 +57,9 @@
|
||||
"composer.show-help": "Show \"Help\" tab",
|
||||
"composer.enable-plugin-help": "Allow plugins to add content to the help tab",
|
||||
"composer.custom-help": "Custom Help Text",
|
||||
"backlinks": "Backlinks",
|
||||
"backlinks.enabled": "Enable topic backlinks",
|
||||
"backlinks.help": "If a post references another topic, a link back to the post will be inserted into the referenced topic at that point in time.",
|
||||
"ip-tracking": "IP Tracking",
|
||||
"ip-tracking.each-post": "Track IP Address for each post",
|
||||
"enable-post-history": "Enable Post History"
|
||||
|
||||
@@ -71,6 +71,7 @@
|
||||
"digest-freq.off": "Off",
|
||||
"digest-freq.daily": "Daily",
|
||||
"digest-freq.weekly": "Weekly",
|
||||
"digest-freq.biweekly": "Bi-Weekly",
|
||||
"digest-freq.monthly": "Monthly",
|
||||
"email-chat-notifs": "Send an email if a new chat message arrives and I am not online",
|
||||
"email-post-notif": "Send an email when replies are made to topics I am subscribed to",
|
||||
|
||||
@@ -6,7 +6,9 @@
|
||||
"greeting_no_name": "مرحبًا",
|
||||
"greeting_with_name": "مرحبًا بك يا %1",
|
||||
"email.verify-your-email.subject": "Please verify your email",
|
||||
"email.verify.text1": "Your email address has changed!",
|
||||
"email.verify.text1": "You've requested that we change or confirm your email address",
|
||||
"email.verify.text2": "For security purposes, we only change or confirm the email address on file once its ownership has been confirmed via email. <strong>If you did not request this, no action is required on your part.</strong>",
|
||||
"email.verify.text3": "Once you confirm this email address, we will replace your current email address with this one (%1).",
|
||||
"welcome.text1": "شكرًا على تسجيلك في %1!",
|
||||
"welcome.text2": "لتفعيل حسابك، نحتاج إلى التأكد من صحة عنوان البريد الإلكتروني الذي سجلت به.",
|
||||
"welcome.text3": "تم قبول نتسجيلك ، يمكنك الدخول باتسخدام اسم المستخدم و كلمة المرور.",
|
||||
|
||||
@@ -25,14 +25,18 @@
|
||||
"invalid-event": "Invalid event: %1",
|
||||
"local-login-disabled": "Local login system has been disabled for non-privileged accounts.",
|
||||
"csrf-invalid": "لم تتمكن من تسجيل الدخول. هنالك أحتمال ان جلستك انتهت. رجاءًا حاول مرة اخرى.",
|
||||
"invalid-path": "Invalid path",
|
||||
"folder-exists": "Folder exists",
|
||||
"invalid-pagination-value": "رقم الصفحة غير صحيح ، يجب أن يكون بين %1 و %2 .",
|
||||
"username-taken": "اسم المستخدم مأخوذ",
|
||||
"email-taken": "البريد الالكتروني مأخوذ",
|
||||
"email-nochange": "The email entered is the same as the email already on file.",
|
||||
"email-invited": "Email was already invited",
|
||||
"email-not-confirmed": "You are unable to post until your email is confirmed, please click here to confirm your email.",
|
||||
"email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.",
|
||||
"email-not-confirmed-chat": "لا يمكنك الدردشة حتى تقوم بتأكيد بريدك الإلكتروني، الرجاء إضغط هنا لتأكيد بريدك اﻹلكتروني.",
|
||||
"email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You won't be able to post or chat until your email is confirmed.",
|
||||
"no-email-to-confirm": "هذا المنتدى يستلزم تفعيل بريدك الإلكتروني، انقر هنا من فضلك لإدخاله.",
|
||||
"email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.",
|
||||
"no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.",
|
||||
"user-doesnt-have-email": "User \"%1\" does not have an email set.",
|
||||
"email-confirm-failed": "لم نستطع تفعيل بريدك الإلكتروني، المرجو المحاولة لاحقًا.",
|
||||
"confirm-email-already-sent": "لقد تم ارسال بريد التأكيد، الرجاء اﻹنتظار 1% دقائق لإعادة اﻹرسال",
|
||||
"sendmail-not-found": "The sendmail executable could not be found, please ensure it is installed and executable by the user running NodeBB.",
|
||||
@@ -100,6 +104,7 @@
|
||||
"already-bookmarked": "You have already bookmarked this post",
|
||||
"already-unbookmarked": "You have already unbookmarked this post",
|
||||
"cant-ban-other-admins": "لايمكن حظر مدبر نظام آخر.",
|
||||
"cant-make-banned-users-admin": "You can't make banned users admin.",
|
||||
"cant-remove-last-admin": "رجاءًا ، أضف مدير أخر قبل حذف صلاحيات الإدارة من حسابك.",
|
||||
"account-deletion-disabled": "Account deletion is disabled",
|
||||
"cant-delete-admin": "رجاءًا أزل صلاحيات الإدارة قبل حذف الحساب. ",
|
||||
|
||||
@@ -77,9 +77,6 @@
|
||||
"modal-reason-custom": "Reason for reporting this content...",
|
||||
"modal-submit": "Submit Report",
|
||||
"modal-submit-success": "Content has been flagged for moderation.",
|
||||
"modal-submit-confirm": "Confirm Submission",
|
||||
"modal-submit-confirm-text": "You have a custom reason specified already. Are you sure you wish to submit via quick-report?",
|
||||
"modal-submit-confirm-text-help": "Submitting a quick report will overwrite any custom reasons defined.",
|
||||
|
||||
"bulk-actions": "Bulk Actions",
|
||||
"bulk-resolve": "Resolve Flag(s)",
|
||||
|
||||
@@ -70,6 +70,7 @@
|
||||
"firstpost": "First post",
|
||||
"read_more": "اقرأ المزيد",
|
||||
"more": "المزيد",
|
||||
"none": "None",
|
||||
"posted_ago_by_guest": "كتب %1 بواسطة زائر",
|
||||
"posted_ago_by": "كتب %1 بواسطة %2",
|
||||
"posted_ago": "كتب %1",
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
"composer.formatting.strikethrough": "Strikethrough",
|
||||
"composer.formatting.code": "Code",
|
||||
"composer.formatting.link": "Link",
|
||||
"composer.formatting.picture": "Picture",
|
||||
"composer.formatting.picture": "Image Link",
|
||||
"composer.upload-picture": "Upload Image",
|
||||
"composer.upload-file": "Upload File",
|
||||
"composer.zen_mode": "Zen Mode",
|
||||
|
||||
@@ -20,8 +20,9 @@
|
||||
"registration-added-to-queue": "تمت إضافتك في قائمة الإنتضار. ستتلقى رسالة إلكترونية عند الموافقة على تسجيلك من قبل الإدارة.",
|
||||
"registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
|
||||
"registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
|
||||
"interstitial.intro": "نحتاج إلى بعض المعلومات الإضافية قبل أن نتمكن من إنشاء حسابك.",
|
||||
"interstitial.errors-found": "تعذر علينا إتمام عملية التسجيل:",
|
||||
"interstitial.intro": "We'd like some additional information in order to update your account…",
|
||||
"interstitial.intro-new": "We'd like some additional information before we can create your account…",
|
||||
"interstitial.errors-found": "Please review the entered information:",
|
||||
"gdpr_agree_data": "I consent to the collection and processing of my personal information on this website.",
|
||||
"gdpr_agree_email": "I consent to receive digest and notification emails from this website.",
|
||||
"gdpr_consent_denied": "You must give consent to this site to collect/process your information, and to send you emails.",
|
||||
|
||||
4
public/language/ar/top.json
Normal file
4
public/language/ar/top.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"title": "Top",
|
||||
"no_top_topics": "No top topics"
|
||||
}
|
||||
@@ -20,6 +20,8 @@
|
||||
"login-to-view": "🔒 Log in to view",
|
||||
"edit": "تعديل",
|
||||
"delete": "حذف",
|
||||
"delete-event": "Delete Event",
|
||||
"delete-event-confirm": "Are you sure you want to delete this event?",
|
||||
"purge": "تطهير",
|
||||
"restore": "استعادة",
|
||||
"move": "نقل",
|
||||
@@ -43,7 +45,9 @@
|
||||
"unpinned-by": "Unpinned by",
|
||||
"deleted-by": "Deleted by",
|
||||
"restored-by": "Restored by",
|
||||
"moved-from-by": "Moved from %1 by",
|
||||
"queued-by": "Post queued for approval →",
|
||||
"backlink": "Referenced by",
|
||||
"bookmark_instructions": "اضغط هنا للعودة لأخر مشاركة مقروءة في الموضوع",
|
||||
"flag-post": "Flag this post",
|
||||
"flag-user": "Flag this user",
|
||||
@@ -135,6 +139,7 @@
|
||||
"composer.handle_placeholder": "Enter your name/handle here",
|
||||
"composer.discard": "نبذ التغييرات",
|
||||
"composer.submit": "حفظ",
|
||||
"composer.additional-options": "Additional Options",
|
||||
"composer.schedule": "Schedule",
|
||||
"composer.replying_to": "الرد على %1",
|
||||
"composer.new_topic": "موضوع جديد",
|
||||
@@ -155,6 +160,7 @@
|
||||
"newest_to_oldest": "من الأحدث إلى الأقدم",
|
||||
"most_votes": "Most Votes",
|
||||
"most_posts": "Most Posts",
|
||||
"most_views": "Most Views",
|
||||
"stale.title": "Create new topic instead?",
|
||||
"stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?",
|
||||
"stale.create": "موضوع جديد",
|
||||
@@ -173,5 +179,6 @@
|
||||
"timeago_later": "%1 later",
|
||||
"timeago_earlier": "%1 earlier",
|
||||
"first-post": "First post",
|
||||
"last-post": "Last post"
|
||||
"last-post": "Last post",
|
||||
"post-quick-reply": "Post quick reply"
|
||||
}
|
||||
@@ -94,10 +94,12 @@
|
||||
"digest_off": "غير مفعل",
|
||||
"digest_daily": "يوميا",
|
||||
"digest_weekly": "أسبوعيًّا",
|
||||
"digest_biweekly": "Bi-Weekly",
|
||||
"digest_monthly": "شهريًّا",
|
||||
"has_no_follower": "هذا المستخدم ليس لديه أية متابعين :(",
|
||||
"follows_no_one": "هذا المستخدم لا يتابع أحد :(",
|
||||
"has_no_posts": "هذا المستخدم لم يشارك حتى الآن.",
|
||||
"has_no_best_posts": "This user does not have any upvoted posts yet.",
|
||||
"has_no_topics": "هذا المستخدم لم يكتب أي موضوع حتى الآن.",
|
||||
"has_no_watched_topics": "هذا المستخدم لم يقم بمراقبة اية مواضيع حتى الآن.",
|
||||
"has_no_ignored_topics": "هذا المستخدم لم يقم بتجاهل اية مواضيع حتى الآن.",
|
||||
@@ -180,5 +182,8 @@
|
||||
"consent.export_uploads": "Export Uploaded Content (.zip)",
|
||||
"consent.export-uploads-success": "Exporting uploads, you will get a notification when it is complete.",
|
||||
"consent.export_posts": "Export Posts (.csv)",
|
||||
"consent.export-posts-success": "Exporting posts, you will get a notification when it is complete."
|
||||
"consent.export-posts-success": "Exporting posts, you will get a notification when it is complete.",
|
||||
"emailUpdate.intro": "Please enter your email address below. This forum uses your email address for scheduled digest and notifications, as well as for account recovery in the event of a lost password.",
|
||||
"emailUpdate.optional": "<strong>This field is optional</strong>. You are not obligated to provide your email address, but without a validated email, you will not be able to recover your account.",
|
||||
"emailUpdate.change-instructions": "A confirmation email will be sent to the entered email address with a unique link. Accessing that link will confirm your ownership of the email address and it will become active on your account. At any time, you are able to update your email on file from within your account page."
|
||||
}
|
||||
@@ -3,6 +3,7 @@
|
||||
"no-events": "Няма събития",
|
||||
"control-panel": "Контролен панел за събитията",
|
||||
"delete-events": "Изтриване на събитията",
|
||||
"confirm-delete-all-events": "Наистина ли искате да изтриете всички събития в журнала?",
|
||||
"filters": "Филтри",
|
||||
"filters-apply": "Прилагане на филтрите",
|
||||
"filter-type": "Вид събитие",
|
||||
|
||||
@@ -56,8 +56,8 @@
|
||||
"active-users.total": "Общо",
|
||||
"active-users.connections": "Връзки",
|
||||
|
||||
"anonymous-registered-users": "Анонимни към регистрирани потребители",
|
||||
"anonymous": "Анонимни",
|
||||
"guest-registered-users": "Гости към регистрирани потребители",
|
||||
"guest": "Гост",
|
||||
"registered": "Регистрирани",
|
||||
|
||||
"user-presence": "Присъствие на потребителите ",
|
||||
@@ -68,6 +68,7 @@
|
||||
"unread": "Непрочетени",
|
||||
|
||||
"high-presence-topics": "Теми с най-голяма присъственост",
|
||||
"popular-searches": "Популярни търсения",
|
||||
|
||||
"graphs.page-views": "Преглеждания на страниците",
|
||||
"graphs.page-views-registered": "Преглеждания на страниците от регистрирани потребители",
|
||||
@@ -75,13 +76,14 @@
|
||||
"graphs.page-views-bot": "Преглеждания на страниците от ботове",
|
||||
"graphs.unique-visitors": "Уникални посетители",
|
||||
"graphs.registered-users": "Регистрирани потребители",
|
||||
"graphs.anonymous-users": "Анонимни потребители",
|
||||
"graphs.guest-users": "Гости",
|
||||
"last-restarted-by": "Последно рестартиране от",
|
||||
"no-users-browsing": "Няма разглеждащи потребители",
|
||||
|
||||
"back-to-dashboard": "Назад към таблото",
|
||||
"details.no-users": "В избрания период не са се регистрирали нови потребители",
|
||||
"details.no-topics": "В избрания период не са публикувани нови теми",
|
||||
"details.no-searches": "Все още не са правени търсения",
|
||||
"details.no-logins": "В избрания период не са отчетени вписвания",
|
||||
"details.logins-static": "NodeBB запазва данни за сесията в продължение на %1 дни, така че в следната таблица могат да се видят само последните активни сесии",
|
||||
"details.logins-login-time": "Време на вписване"
|
||||
|
||||
@@ -8,7 +8,11 @@
|
||||
"nodejs": "nodejs",
|
||||
"online": "на линия",
|
||||
"git": "git",
|
||||
"memory": "памет",
|
||||
"process-memory": "памет на процеса",
|
||||
"system-memory": "системна памет",
|
||||
"used-memory-process": "Използвана памет от процеса",
|
||||
"used-memory-os": "Използвана системна памет",
|
||||
"total-memory-os": "Обща системна памет",
|
||||
"load": "натоварване на системата",
|
||||
"cpu-usage": "използване на процесора",
|
||||
"uptime": "активно време",
|
||||
|
||||
@@ -8,8 +8,6 @@
|
||||
"delete": "Изтриване",
|
||||
"enable": "Включване",
|
||||
"disable": "Изключване",
|
||||
"control-panel": "Управление на наградите",
|
||||
"new-reward": "Нова награда",
|
||||
|
||||
"alert.delete-success": "Наградата е изтрита успешно",
|
||||
"alert.no-inputs-found": "Неправомерна награда — няма нищо въведено!",
|
||||
|
||||
@@ -1,79 +0,0 @@
|
||||
{
|
||||
"forum-traffic": "Трафик на форума",
|
||||
"page-views": "Преглеждания на страниците",
|
||||
"unique-visitors": "Уникални посетители",
|
||||
"new-users": "Нови потребители",
|
||||
"posts": "Публикации",
|
||||
"topics": "Теми",
|
||||
"page-views-seven": "Последните 7 дни",
|
||||
"page-views-thirty": "Последните 30 дни",
|
||||
"page-views-last-day": "Последните 24 часа",
|
||||
"page-views-custom": "Интервал по избор",
|
||||
"page-views-custom-start": "Начална дата",
|
||||
"page-views-custom-end": "Крайна дата",
|
||||
"page-views-custom-help": "Въведете интервал от дати, за които искате да видите преглежданията на страниците. Ако не се появи календар за избор, можете да въведете датите във формат: <code>ГГГГ-ММ-ДД</code>",
|
||||
"page-views-custom-error": "Моля, въведете правилен интервал от дати във формата: <code>ГГГГ-ММ-ДД</code>",
|
||||
|
||||
"stats.yesterday": "Вчера",
|
||||
"stats.today": "Днес",
|
||||
"stats.last-week": "Миналата седмица",
|
||||
"stats.this-week": "Тази седмица",
|
||||
"stats.last-month": "Миналия месец",
|
||||
"stats.this-month": "Този месец",
|
||||
"stats.all": "От началото",
|
||||
|
||||
"updates": "Обновления",
|
||||
"running-version": "Вие използвате <strong>NodeBB версия <span id=\"version\">%1</span></strong>.",
|
||||
"keep-updated": "Стремете се винаги да използвате най-новата версия на NodeBB, за да се възползвате от последните подобрения на сигурността и поправки на проблеми.",
|
||||
"up-to-date": "<p>Вие използвате <strong>най-новата версия</strong> <i class=\"fa fa-check\"></i></p>",
|
||||
"upgrade-available": "<p>Има нова версия (версия %1). Ако имате възможност, <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">обновете NodeBB</a>.</p>",
|
||||
"prerelease-upgrade-available": "<p>Това е остаряла предварителна версия на NodeBB. Има нова версия (версия %1). Ако имате възможност, <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">обновете NodeBB</a>.</p>",
|
||||
"prerelease-warning": "<p>Това е версия за <strong>предварителен преглед</strong> на NodeBB. Възможно е да има неочаквани неизправности. <i class=\"fa fa-exclamation-triangle\"></i></p>",
|
||||
"running-in-development": "<span>Форумът работи в режим за разработчици, така че може да бъде уязвим. Моля, свържете се със системния си администратор.</span>",
|
||||
"latest-lookup-failed": "<p>Не може да бъде извършена проверка за последната налична версия на NodeBB</p>",
|
||||
|
||||
"notices": "Забележки",
|
||||
"restart-not-required": "Не се изисква рестартиране",
|
||||
"restart-required": "Изисква се рестартиране",
|
||||
"search-plugin-installed": "Добавката за търсене е инсталирана",
|
||||
"search-plugin-not-installed": "Добавката за търсене не е инсталирана",
|
||||
"search-plugin-tooltip": "Инсталирайте добавка за търсене от страницата с добавките, за да включите функционалността за търсене",
|
||||
|
||||
"control-panel": "Системен контрол",
|
||||
"rebuild-and-restart": "Повторно изграждане и рестартиране",
|
||||
"restart": "Рестартиране",
|
||||
"restart-warning": "Повторното изграждане и рестартирането на NodeBB ще прекъснат всички връзки за няколко секунди.",
|
||||
"restart-disabled": "Възможностите за повторно изграждане и рестартиране на NodeBB са изключени, тъй като изглежда, че NodeBB не се изпълнява чрез подходящия демон.",
|
||||
"maintenance-mode": "Режим на профилактика",
|
||||
"maintenance-mode-title": "Щракнете тук, за да зададете режим на профилактика на NodeBB",
|
||||
"realtime-chart-updates": "Актуализации на таблиците в реално време",
|
||||
|
||||
"active-users": "Дейни потребители",
|
||||
"active-users.users": "Потребители",
|
||||
"active-users.guests": "Гости",
|
||||
"active-users.total": "Общо",
|
||||
"active-users.connections": "Връзки",
|
||||
|
||||
"anonymous-registered-users": "Анонимни към регистрирани потребители",
|
||||
"anonymous": "Анонимни",
|
||||
"registered": "Регистрирани",
|
||||
|
||||
"user-presence": "Присъствие на потребителите ",
|
||||
"on-categories": "В списъка с категории",
|
||||
"reading-posts": "Четящи публикации",
|
||||
"browsing-topics": "Разглеждащи теми",
|
||||
"recent": "Скорошни",
|
||||
"unread": "Непрочетени",
|
||||
|
||||
"high-presence-topics": "Теми с най-голяма присъственост",
|
||||
|
||||
"graphs.page-views": "Преглеждания на страниците",
|
||||
"graphs.page-views-registered": "Преглеждания на страниците от регистрирани потребители",
|
||||
"graphs.page-views-guest": "Преглеждания на страниците от гости",
|
||||
"graphs.page-views-bot": "Преглеждания на страниците от ботове",
|
||||
"graphs.unique-visitors": "Уникални посетители",
|
||||
"graphs.registered-users": "Регистрирани потребители",
|
||||
"graphs.anonymous-users": "Анонимни потребители",
|
||||
"last-restarted-by": "Последно рестартиране от",
|
||||
"no-users-browsing": "Няма разглеждащи потребители"
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
{
|
||||
"home-page": "Начална страница",
|
||||
"description": "Изберете коя страница да бъде показана, когато потребителите отидат на главния адрес на форума.",
|
||||
"home-page-route": "Път на началната страница",
|
||||
"custom-route": "Персонализиран път",
|
||||
"allow-user-home-pages": "Разрешаване на потребителските начални страници",
|
||||
"home-page-title": "Заглавие на началната страница (по подразбиране: „Начало“)"
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"language-settings": "Езикови настройки",
|
||||
"description": "Езикът по подразбиране определя езиковите настройки за всички потребители, които посещават Вашия форум. <br />Отделните потребители могат да сменят езика си от страницата с настройки на профила си.",
|
||||
"default-language": "Език по подразбиране",
|
||||
"auto-detect": "Автоматично разпознаване на езика за гостите"
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
{
|
||||
"icon": "Иконка:",
|
||||
"change-icon": "промяна",
|
||||
"route": "Маршрут:",
|
||||
"tooltip": "Подсказка:",
|
||||
"text": "Текст:",
|
||||
"text-class": "Текстов клас: <small>незадължително</small>",
|
||||
"class": "Клас: <small>незадължително</small>",
|
||||
"id": "Идентификатор: <small>незадължително</small>",
|
||||
|
||||
"properties": "Свойства:",
|
||||
"groups": "Групи:",
|
||||
"open-new-window": "Отваряне в нов прозорец",
|
||||
|
||||
"btn.delete": "Изтриване",
|
||||
"btn.disable": "Изключване",
|
||||
"btn.enable": "Включване",
|
||||
|
||||
"available-menu-items": "Налични елементи за менюто",
|
||||
"custom-route": "Персонализиран маршрут",
|
||||
"core": "ядро",
|
||||
"plugin": "добавка"
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
{
|
||||
"post-sharing": "Споделяне на публикации",
|
||||
"info-plugins-additional": "Добавките могат да добавят допълнителни мрежи за споделяне на публикации.",
|
||||
"save-success": "Мрежите за споделяне на публикации са запазени успешно!"
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"notifications": "Известия",
|
||||
"chat-messages": "Съобщения в разговори",
|
||||
"play-sound": "Пускане",
|
||||
"incoming-message": "Входящо съобщение",
|
||||
"outgoing-message": "Изходящо съобщение",
|
||||
"upload-new-sound": "Качване на нов звук",
|
||||
"saved": "Настройките са запазени"
|
||||
}
|
||||
@@ -13,6 +13,7 @@
|
||||
"resent-single": "Ръчното повторно разпращане на резюмето е завършено",
|
||||
"resent-day": "Дневното резюме беше изпратено повторно",
|
||||
"resent-week": "Седмичното резюме беше изпратено повторно",
|
||||
"resent-biweek": "Двуседмичното резюме беше изпратено повторно",
|
||||
"resent-month": "Месечното резюме беше изпратено повторно",
|
||||
"null": "<em>Никога</em>",
|
||||
"manual-run": "Ръчно разпращане на резюмето:",
|
||||
|
||||
@@ -51,10 +51,13 @@
|
||||
"alert.saved": "Промените по правомощията са запазени и приложени",
|
||||
"alert.confirm-discard": "Наистина ли искате да отхвърлите промените по правомощията?",
|
||||
"alert.discarded": "Промените по правомощията са отхвърлени",
|
||||
"alert.confirm-copyToAll": "Наистина ли искате да приложите този набор от правомощия към <strong>всички категории</strong>?",
|
||||
"alert.confirm-copyToAllGroup": "Наистина ли искате да приложите набора от правомощия на таи група към <strong>всички категории</strong>?",
|
||||
"alert.confirm-copyToChildren": "Наистина ли искате да приложите този набор от правомощия към <strong>всички по-долни (дъщерни) категории</strong>?",
|
||||
"alert.confirm-copyToChildrenGroup": "Наистина ли искате да приложите набора от правомощия на таи група към <strong>всички по-долни (дъщерни) категории</strong>?",
|
||||
"alert.confirm-copyToAll": "Наистина ли искате да приложите този набор от <strong>%1</strong> към <strong>всички категории</strong>?",
|
||||
"alert.confirm-copyToAllGroup": "Наистина ли искате да приложите набора от <strong>%1</strong> на тази група към <strong>всички категории</strong>?",
|
||||
"alert.confirm-copyToChildren": "Наистина ли искате да приложите този набор от <strong>%1</strong> към <strong>всички по-долни (дъщерни) категории</strong>?",
|
||||
"alert.confirm-copyToChildrenGroup": "Наистина ли искате да приложите набора от <strong>%1</strong> на тази група към <strong>всички по-долни (дъщерни) категории</strong>?",
|
||||
"alert.no-undo": "<em>Това действие е необратимо.</em>",
|
||||
"alert.admin-warning": "Администраторите имат всички правомощия по подразбиране"
|
||||
"alert.admin-warning": "Администраторите имат всички правомощия по подразбиране",
|
||||
"alert.copyPrivilegesFrom-title": "Изберете категория, от която да се копира",
|
||||
"alert.copyPrivilegesFrom-warning": "Това ще копира <strong>%1</strong> от избраната категория.",
|
||||
"alert.copyPrivilegesFromGroup-warning": "Това ще копира набора от <strong>%1</strong> на тези група от избраната категория."
|
||||
}
|
||||
@@ -5,5 +5,7 @@
|
||||
"orphaned": "Без ползвания",
|
||||
"size/filecount": "Размер / брой файлове",
|
||||
"confirm-delete": "Наистина ли искате да изтриете този файл?",
|
||||
"filecount": "%1 файла"
|
||||
"filecount": "%1 файла",
|
||||
"new-folder": "Нова папка",
|
||||
"name-new-folder": "Въведете име за новата папка"
|
||||
}
|
||||
@@ -47,6 +47,7 @@
|
||||
"users.uid": "потр. ид.",
|
||||
"users.username": "потребителско име",
|
||||
"users.email": "е-поща",
|
||||
"users.no-email": "(няма е-поща)",
|
||||
"users.ip": "IP адрес",
|
||||
"users.postcount": "брой публикации",
|
||||
"users.reputation": "репутация",
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
"dashboard/logins": "Вписвания",
|
||||
"dashboard/users": "Потребители",
|
||||
"dashboard/topics": "Теми",
|
||||
"dashboard/searches": "Търсения",
|
||||
"section-general": "Общи",
|
||||
|
||||
"section-manage": "Управление",
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
"from-help": "Името на изпращача, което да бъде показано в е-писмото.",
|
||||
|
||||
"smtp-transport": "Транспорт чрез SMTP",
|
||||
"smtp-transport.enabled": "Използване на външен сървър за е-поща за изпращане на е-писма",
|
||||
"smtp-transport.enabled": "Включване на транспорта чрез SMTP",
|
||||
"smtp-transport-help": "Можете да изберете от списък от познати услуги, или да въведете такава ръчно.",
|
||||
"smtp-transport.service": "Изберете услуга",
|
||||
"smtp-transport.service-custom": "Персонализирана услуга",
|
||||
@@ -36,6 +36,11 @@
|
||||
"subscriptions.disable": "Изключване на резюметата по е-пощата",
|
||||
"subscriptions.hour": "Време за разпращане",
|
||||
"subscriptions.hour-help": "Моля, въведете число, представляващо часа, в който да се разпращат е-писма с подготвеното резюме (напр.. <code>0</code> за полунощ, <code>17</code> за 5 следобед). Имайте предвид, че този час е според часовата зона на сървъра и може да не съвпада с часовника на системата Ви.<br /> Приблизителното време на сървъра е: <span id=\"serverTime\"></span><br /> Изпращането на следващия ежедневен бюлетин е планирано за <span id=\"nextDigestTime\"></span>",
|
||||
"notifications.settings": "Настройки за известията по е-поща",
|
||||
"notifications.remove-images": "Премахване на изображенията от известията по е-поща"
|
||||
}
|
||||
"notifications.remove-images": "Премахване на изображенията от известията по е-поща",
|
||||
"require-email-address": "Новите потребители задължително трябва да предоставят е-поща",
|
||||
"require-email-address-warning": "По подразбиране потребителите могат да не въвеждат адрес на е-поща. Ако включите това, те задължително ще трябва да предоставят е-поща, за да могат да се регистрират. <strong>Това не означава, че потребителят ще въведе съществуваща е-поща, нито че тя ще е негова.</strong>",
|
||||
"include-unverified-emails": "Изпращане на е-писма към получатели, които не са потвърдили изрично е-пощата си",
|
||||
"include-unverified-warning": "За потребителите, които имат свързана е-поща с регистрацията си, тя се смята за потвърдена. Но има ситуации, в които това не е така (например при ползване на регистрация от друга система, но и в други случаи), <strong>Включете тази настройка на собствен риск</strong> – изпращането на е-писма към непотвърдени адреси може да нарушава определени местни закони против нежеланата поща.",
|
||||
"prompt": "Подсещане на потребителите да въведат или потвърдят е-пощата си",
|
||||
"prompt-help": "Ако потребител няма зададена е-поща, или ако тя не е потвърдена, на екрана му ще се покаже предупредително съобщение."
|
||||
}
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
"title": "Заглавие на уеб сайта",
|
||||
"title.short": "Кратко заглавие",
|
||||
"title.short-placeholder": "Ако не е посочено кратко заглавие, ще бъде използвано заглавието на уеб сайта",
|
||||
"title.url": "Адрес",
|
||||
"title.url-placeholder": "Адресът на заглавието на уеб сайта",
|
||||
"title.url-help": "При щракване върху заглавието, потребителите ще бъдат изпратени на този адрес. Ако бъде оставено празно, потребителите ще бъдат изпращани на началната страница на форума.",
|
||||
"title.url": "Адрес за заглавието",
|
||||
"title.url-placeholder": "Адресът за заглавието на уеб сайта",
|
||||
"title.url-help": "Когато потребител щракне върху заглавието, той ще бъде прехвърлен към този адрес. Ако е празно, потребителят ще бъде изпратен към началната страница на форума. <br> Забележка: Това не е външният адрес, който се ползва в е-писмата. Той се задава от свойството <code>url</code> във файла config.json",
|
||||
"title.name": "Името на общността Ви",
|
||||
"title.show-in-header": "Показване на заглавието на уеб сайта в заглавната част",
|
||||
"browser-title": "Заглавие на браузъра",
|
||||
@@ -20,9 +20,9 @@
|
||||
"logo.image": "Изображение",
|
||||
"logo.image-placeholder": "Път до логото, което да бъде показано в заглавната част на форума",
|
||||
"logo.upload": "Качване",
|
||||
"logo.url": "Адрес",
|
||||
"logo.url-placeholder": "Адресът на логото на уеб сайта",
|
||||
"logo.url-help": "При щракване върху логото, потребителите ще бъдат изпратени на този адрес. Ако бъде оставено празно, потребителите ще бъдат изпращани на началната страница на форума.",
|
||||
"logo.url": "Адрес за логото",
|
||||
"logo.url-placeholder": "Адресът за логото на уеб сайта",
|
||||
"logo.url-help": "Когато потребител щракне върху логото, той ще бъде прехвърлен към този адрес. Ако е празно, потребителят ще бъде изпратен към началната страница на форума. <br> Забележка: Това не е външният адрес, който се ползва в е-писмата. Той се задава от свойството <code>url</code> във файла config.json",
|
||||
"logo.alt-text": "Алтернативен текст",
|
||||
"log.alt-text-placeholder": "Алтернативен текст за достъпност",
|
||||
"favicon": "Иконка на уеб сайта",
|
||||
@@ -35,7 +35,10 @@
|
||||
"maskable-icon.help": "Препоръчителен размер и формат: 512x512, само във формат „PNG“. Ако не е посочена маскируема иконка, NodeBB ще използва иконката за сензорен екран.",
|
||||
"outgoing-links": "Изходящи връзки",
|
||||
"outgoing-links.warning-page": "Показване на предупредителна страница при щракване върху външни връзки",
|
||||
"search-default-sort-by": "Подредба по подразбиране при търсене",
|
||||
"search": "Търсене",
|
||||
"search-default-in": "Търсене в",
|
||||
"search-default-in-quick": "Бързо търсене в",
|
||||
"search-default-sort-by": "Подреждане по",
|
||||
"outgoing-links.whitelist": "Домейни, за които да не се показва предупредителната страница",
|
||||
"site-colors": "Мета-данни за цвета на уеб сайта",
|
||||
"theme-color": "Цвят на темата",
|
||||
@@ -44,4 +47,4 @@
|
||||
"undo-timeout": "Време за отмяна",
|
||||
"undo-timeout-help": "Някои действия, като например преместването на теми, могат да бъдат отменени от модератора в рамките на определено време. Задайте 0, за да забраните изцяло отменянето.",
|
||||
"topic-tools": "Инструменти за темите"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,8 @@
|
||||
"properties": "Свойства:",
|
||||
"groups": "Групи:",
|
||||
"open-new-window": "Отваряне в нов прозорец",
|
||||
"dropdown": "Падащо меню",
|
||||
"dropdown-placeholder": "Въведете елементите на падащото меню по-долу. Пример: <br/><li><a href="https://myforum.com">Връзка 1</a></li>",
|
||||
|
||||
"btn.delete": "Изтриване",
|
||||
"btn.disable": "Изключване",
|
||||
@@ -20,4 +22,4 @@
|
||||
"custom-route": "Персонализиран маршрут",
|
||||
"core": "ядро",
|
||||
"plugin": "добавка"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,5 +2,6 @@
|
||||
"notifications": "Известия",
|
||||
"welcome-notification": "Приветствено известие",
|
||||
"welcome-notification-link": "Връзка за приветственото известие",
|
||||
"welcome-notification-uid": "Потр. ид. за приветственото известие"
|
||||
"welcome-notification-uid": "Потр. ид. за приветственото известие",
|
||||
"post-queue-notification-uid": "Потр. ид. за опашката с публикации"
|
||||
}
|
||||
@@ -40,6 +40,7 @@
|
||||
"teaser.last-post": "Последната – Показване на последната публикация, или първоначалната такава, ако няма отговори.",
|
||||
"teaser.last-reply": "Последната – Показване на последния отговор, или „Няма отговори“, ако все още няма такива.",
|
||||
"teaser.first": "Първата",
|
||||
"showPostPreviewsOnHover": "Показване на кратък преглед на публикациите при посочване с мишката",
|
||||
"unread": "Настройки за непрочетените",
|
||||
"unread.cutoff": "Възраст на публикациите, след която те не се показват в непрочетените (в брой дни)",
|
||||
"unread.min-track-last": "Минимален брой публикации в темата, след което да започва следене на последно прочетената",
|
||||
@@ -56,6 +57,9 @@
|
||||
"composer.show-help": "Показване на раздела „Помощ“",
|
||||
"composer.enable-plugin-help": "Позволяване на добавките да добавят съдържание в раздела за помощ",
|
||||
"composer.custom-help": "Персонализиран текст за помощ",
|
||||
"backlinks": "Обратни връзки",
|
||||
"backlinks.enabled": "Включване на обратните връзки в темите",
|
||||
"backlinks.help": "Ако в публикацията има препратка към друга тема, там ще бъде поставена връзка към публикацията, с конкретното време.",
|
||||
"ip-tracking": "Записване на IP адреса",
|
||||
"ip-tracking.each-post": "Записване на IP адреса за всяка публикация",
|
||||
"enable-post-history": "Включване на историята на публикациите"
|
||||
|
||||
@@ -71,6 +71,7 @@
|
||||
"digest-freq.off": "Изключено",
|
||||
"digest-freq.daily": "Ежедневно",
|
||||
"digest-freq.weekly": "Ежеседмично",
|
||||
"digest-freq.biweekly": "На всеки две седмици",
|
||||
"digest-freq.monthly": "Ежемесечно",
|
||||
"email-chat-notifs": "Изпращане на е-писмо, ако получа ново съобщение в разговор, а не съм на линия",
|
||||
"email-post-notif": "Изпращане на е-писмо, когато се появи отговор в темите, за които съм абониран(а).",
|
||||
|
||||
@@ -6,7 +6,9 @@
|
||||
"greeting_no_name": "Здравейте",
|
||||
"greeting_with_name": "Здравейте, %1",
|
||||
"email.verify-your-email.subject": "Моля, потвърдете е-пощата си",
|
||||
"email.verify.text1": "Адресът на е-пощата Ви е променен!",
|
||||
"email.verify.text1": "Вие поискахте да променим или потвърдим адреса на е-пощата Ви",
|
||||
"email.verify.text2": "Поради причини, свързани със сигурността, можем да променим или потвърдим адреса на е-поща, само когато притежанието ѝ вече е било установено чрез е-писмо. <strong>Ако не сте поискали това, няма нужда да правите нищо.</strong>",
|
||||
"email.verify.text3": "След като потвърдите адреса на тази е-поща, ще променим текущия Ви адрес с този (%1).",
|
||||
"welcome.text1": "Благодарим Ви, че се регистрирахте в %1",
|
||||
"welcome.text2": "За да активирате напълно акаунта си, трябва да потвърдите е-пощата, с която сте се регистрирали.",
|
||||
"welcome.text3": "Вашата заявка за регистрация беше приета от администратор. Вече можете да се впишете със своето потребителско име и парола.",
|
||||
|
||||
@@ -25,14 +25,18 @@
|
||||
"invalid-event": "Грешно събитие: %1",
|
||||
"local-login-disabled": "Системата за местно вписване е изключена за непривилегированите акаунти.",
|
||||
"csrf-invalid": "Не успяхме да Ви впишем, най-вероятно защото сесията Ви е изтекла. Моля, опитайте отново",
|
||||
"invalid-path": "Грешен път",
|
||||
"folder-exists": "Вече има папка с това име",
|
||||
"invalid-pagination-value": "Грешен номер на странициране, трябва да бъде между %1 и %2",
|
||||
"username-taken": "Потребителското име е заето",
|
||||
"email-taken": "Е-пощата е заета",
|
||||
"email-nochange": "Въведената е-поща е същата като съществуващата.",
|
||||
"email-invited": "На тази е-поща вече е била изпратена покана",
|
||||
"email-not-confirmed": "Няма да можете да публикувате съобщения, докато е-пощата Ви не бъде потвърдена. Моля, натиснете тук, за да потвърдите е-пощата си.",
|
||||
"email-not-confirmed": "Публикуването в някои категории и теми ще бъде възможно едва след като е-пощата Ви бъде потвърдена. Щръкнете тук, за да Ви изпратим е-писмо за потвърждение.",
|
||||
"email-not-confirmed-chat": "Няма да можете да пишете в разговори, докато е-пощата Ви не бъде потвърдена. Моля, натиснете тук, за да потвърдите е-пощата си.",
|
||||
"email-not-confirmed-email-sent": "Вашата е-поща все още не е потвърдена. Моля, проверете входящата си кутия за писмото за потвърждение. Няма да можете да публикувате съобщения или да пишете в разговори, докато е-пощата Ви не бъде потвърдена.",
|
||||
"no-email-to-confirm": "Този форум изисква потвърдена е-поща. Моля, натиснете тук, за да въведете е-поща",
|
||||
"email-not-confirmed-email-sent": "Вашата е-поща все още не е потвърдена. Моля, проверете входящата си кутия за писмото за потвърждение. Възможно е да не можете да публикувате съобщения или да пишете в разговори, докато е-пощата Ви не бъде потвърдена.",
|
||||
"no-email-to-confirm": "Нямате зададена е-поща. Тя е необходима за възстановяването на акаунта в случай на проблем, а може и да се изисква, за да пишете в някои категории. Натиснете тук, за да въведете е-поща.",
|
||||
"user-doesnt-have-email": "Потребителят „%1“ няма зададена е-поща.",
|
||||
"email-confirm-failed": "Не успяхме да потвърдим е-пощата Ви. Моля, опитайте отново по-късно.",
|
||||
"confirm-email-already-sent": "Е-писмото за потвърждение вече е изпратено. Моля, почакайте още %1 минута/и, преди да изпратите ново.",
|
||||
"sendmail-not-found": "Изпълнимият файл на „sendmail“ не може да бъде намерен. Моля, уверете се, че е инсталиран и изпълним за потребителя, чрез който е пуснат NodeBB.",
|
||||
@@ -100,6 +104,7 @@
|
||||
"already-bookmarked": "Вече имате отметка към тази публикация",
|
||||
"already-unbookmarked": "Вече сте премахнали отметката си от тази публикация",
|
||||
"cant-ban-other-admins": "Не можете да блокирате другите администратори!",
|
||||
"cant-make-banned-users-admin": "Не можете да давате администраторски права на блокирани потребители.",
|
||||
"cant-remove-last-admin": "Вие сте единственият администратор. Добавете друг потребител като администратор, преди да премахнете себе си като администратор",
|
||||
"account-deletion-disabled": "Изтриването на акаунт е забранено",
|
||||
"cant-delete-admin": "Премахнете администраторските права от този акаунт, преди да го изтриете.",
|
||||
|
||||
@@ -77,9 +77,6 @@
|
||||
"modal-reason-custom": "Причина за докладването на това съдържание…",
|
||||
"modal-submit": "Изпращане на доклада",
|
||||
"modal-submit-success": "Съдържанието беше докладвано на модераторите.",
|
||||
"modal-submit-confirm": "Потвърждаване на докладването",
|
||||
"modal-submit-confirm-text": "Вече сте описали специалната си причина. Наистина ли искате да изпратите доклада си по бързата процедура?",
|
||||
"modal-submit-confirm-text-help": "Изпращането на доклад по бързата процедура ще премахне описаната от Вас специалната причина.",
|
||||
|
||||
"bulk-actions": "Групови действия",
|
||||
"bulk-resolve": "Разрешаване на доклад(и)",
|
||||
|
||||
@@ -70,6 +70,7 @@
|
||||
"firstpost": "Първа публикация",
|
||||
"read_more": "още",
|
||||
"more": "Още",
|
||||
"none": "Нищо",
|
||||
"posted_ago_by_guest": "публикувано %1 от гост",
|
||||
"posted_ago_by": "публикувано %1 от %2",
|
||||
"posted_ago": "публикувано %1",
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
"composer.formatting.strikethrough": "Зачертан",
|
||||
"composer.formatting.code": "Код",
|
||||
"composer.formatting.link": "Връзка",
|
||||
"composer.formatting.picture": "Снимка",
|
||||
"composer.formatting.picture": "Връзка към изображение",
|
||||
"composer.upload-picture": "Качване на изображение",
|
||||
"composer.upload-file": "Качване на файл",
|
||||
"composer.zen_mode": "Режим Дзен",
|
||||
|
||||
@@ -20,8 +20,9 @@
|
||||
"registration-added-to-queue": "Вашата регистрация беше добавена в опашката за одобрение. Ще получите е-писмо, когато тя бъде одобрена от администратор.",
|
||||
"registration-queue-average-time": "Средното време за одобрение на нови членове е %1 часа и %2 минути.",
|
||||
"registration-queue-auto-approve-time": "Членството Ви в този форум ще бъде напълно активирано след около %1 часа.",
|
||||
"interstitial.intro": "Нуждаем се от малко допълнителна информация, преди да можем да създадем акаунта Ви.",
|
||||
"interstitial.errors-found": "Не можем да завършим Вашата регистрация:",
|
||||
"interstitial.intro": "Нуждаем се от малко допълнителна информация, преди да можем да актуализираме акаунта Ви…",
|
||||
"interstitial.intro-new": "Нуждаем се от малко допълнителна информация, преди да можем да създадем акаунта Ви…",
|
||||
"interstitial.errors-found": "Моля, прегледайте въведената информация:",
|
||||
"gdpr_agree_data": "Съгласявам се това личната ми информация да се съхранява и обработва от този уеб сайт.",
|
||||
"gdpr_agree_email": "Съгласявам се да получавам е-писма с резюмета и известия от този уеб сайт.",
|
||||
"gdpr_consent_denied": "Трябва да се съгласите с това уеб сайтът да събира/обработва информацията Ви, и да Ви изпраща е-писма.",
|
||||
|
||||
4
public/language/bg/top.json
Normal file
4
public/language/bg/top.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"title": "Най-популярни",
|
||||
"no_top_topics": "Няма най-популярни теми"
|
||||
}
|
||||
@@ -20,6 +20,8 @@
|
||||
"login-to-view": "🔒 Впишете се, за да видите това",
|
||||
"edit": "Редактиране",
|
||||
"delete": "Изтриване",
|
||||
"delete-event": "Изтриване на събитието",
|
||||
"delete-event-confirm": "Наистина ли искате да изтриете това събитие?",
|
||||
"purge": "Изчистване",
|
||||
"restore": "Възстановяване",
|
||||
"move": "Преместване",
|
||||
@@ -43,7 +45,9 @@
|
||||
"unpinned-by": "Откачена от",
|
||||
"deleted-by": "Изтрита от",
|
||||
"restored-by": "Възстановена от",
|
||||
"moved-from-by": "Преместена от %1 от",
|
||||
"queued-by": "Публикацията е добавена в опашката за одобрение →",
|
||||
"backlink": "Спомената от",
|
||||
"bookmark_instructions": "Щракнете тук, за да се върнете към последно прочетената публикация в тази тема.",
|
||||
"flag-post": "Докладване на тази публикация",
|
||||
"flag-user": "Докладване на този потребител",
|
||||
@@ -135,6 +139,7 @@
|
||||
"composer.handle_placeholder": "Въведете името тук",
|
||||
"composer.discard": "Отхвърляне",
|
||||
"composer.submit": "Публикуване",
|
||||
"composer.additional-options": "Допълнителни настройки",
|
||||
"composer.schedule": "Насрочване",
|
||||
"composer.replying_to": "Отговор на %1",
|
||||
"composer.new_topic": "Нова тема",
|
||||
@@ -155,6 +160,7 @@
|
||||
"newest_to_oldest": "Първо най-новите",
|
||||
"most_votes": "Първо тези с най-много гласове",
|
||||
"most_posts": "Първо тези с най-много публикации",
|
||||
"most_views": "Първо тези с най-много преглеждания",
|
||||
"stale.title": "Създаване на нова тема вместо това?",
|
||||
"stale.warning": "Темата, в която отговаряте, е доста стара. Искате ли вместо това да създадете нова и да направите препратка към тази в отговора си?",
|
||||
"stale.create": "Създаване на нова тема",
|
||||
@@ -173,5 +179,6 @@
|
||||
"timeago_later": "%1 по-късно",
|
||||
"timeago_earlier": "%1 по-рано",
|
||||
"first-post": "Първа публикация",
|
||||
"last-post": "Последна публикация"
|
||||
"last-post": "Последна публикация",
|
||||
"post-quick-reply": "Пускане на бърза публикация"
|
||||
}
|
||||
@@ -94,10 +94,12 @@
|
||||
"digest_off": "Изключено",
|
||||
"digest_daily": "Ежедневно",
|
||||
"digest_weekly": "Ежеседмично",
|
||||
"digest_biweekly": "На всеки две седмици",
|
||||
"digest_monthly": "Ежемесечно",
|
||||
"has_no_follower": "Този потребител няма последователи :(",
|
||||
"follows_no_one": "Този потребител не следва никого :(",
|
||||
"has_no_posts": "Този потребител не е публикувал нищо досега.",
|
||||
"has_no_best_posts": "Този потребител не е получавал положителни гласове за публикациите си досега.",
|
||||
"has_no_topics": "Този потребител не е създавал теми досега.",
|
||||
"has_no_watched_topics": "Този потребител не е следил нито една тема досега.",
|
||||
"has_no_ignored_topics": "Този потребител не е пренебрегнал нито една тема досега.",
|
||||
@@ -180,5 +182,8 @@
|
||||
"consent.export_uploads": "Изнасяне на каченото съдържание (.zip)",
|
||||
"consent.export-uploads-success": "Изнасяне на каченото съдържание… Ще получите известие, когато е готово.",
|
||||
"consent.export_posts": "Изнасяне на публикациите (.csv)",
|
||||
"consent.export-posts-success": "Изнасяне на публикациите… Ще получите известие, когато е готово."
|
||||
"consent.export-posts-success": "Изнасяне на публикациите… Ще получите известие, когато е готово.",
|
||||
"emailUpdate.intro": "Въведете е-пощата си по-долу. Този форум използва е-пощата за планирани резюмета и известия, както и за възстановяване на акаунта, в случай на забравена парола.",
|
||||
"emailUpdate.optional": "<strong>Това поле не е задължително</strong>. Не сте длъжен/на да ни давате адреса на е-пощата си, но ако нямате потвърдена е-поща, няма да можете да възстановите достъпа до акаунта си в случай на проблем.",
|
||||
"emailUpdate.change-instructions": "Ще Ви изпратим е-писмо за потвърждение на посочената е-поща, което ще съдържа уникална връзка. Щом последвате тази връзка, притежанието Ви на тази е-поща ще бъде потвърдено и тя ще бъде свързана с акаунта Ви. Ще можете да промените тази е-поща по всяко време, от страницата на акаунта си."
|
||||
}
|
||||
@@ -3,6 +3,7 @@
|
||||
"no-events": "There are no events",
|
||||
"control-panel": "Events Control Panel",
|
||||
"delete-events": "Delete Events",
|
||||
"confirm-delete-all-events": "Are you sure you want to delete all logged events?",
|
||||
"filters": "Filters",
|
||||
"filters-apply": "Apply Filters",
|
||||
"filter-type": "Event Type",
|
||||
|
||||
@@ -56,8 +56,8 @@
|
||||
"active-users.total": "Total",
|
||||
"active-users.connections": "Connections",
|
||||
|
||||
"anonymous-registered-users": "Anonymous vs Registered Users",
|
||||
"anonymous": "Anonymous",
|
||||
"guest-registered-users": "Guest vs Registered Users",
|
||||
"guest": "Guest",
|
||||
"registered": "Registered",
|
||||
|
||||
"user-presence": "User Presence",
|
||||
@@ -68,6 +68,7 @@
|
||||
"unread": "Unread",
|
||||
|
||||
"high-presence-topics": "High Presence Topics",
|
||||
"popular-searches": "Popular Searches",
|
||||
|
||||
"graphs.page-views": "Page Views",
|
||||
"graphs.page-views-registered": "Page Views Registered",
|
||||
@@ -75,13 +76,14 @@
|
||||
"graphs.page-views-bot": "Page Views Bot",
|
||||
"graphs.unique-visitors": "Unique Visitors",
|
||||
"graphs.registered-users": "Registered Users",
|
||||
"graphs.anonymous-users": "Anonymous Users",
|
||||
"graphs.guest-users": "Guest Users",
|
||||
"last-restarted-by": "Last restarted by",
|
||||
"no-users-browsing": "No users browsing",
|
||||
|
||||
"back-to-dashboard": "Back to Dashboard",
|
||||
"details.no-users": "No users have joined within the selected timeframe",
|
||||
"details.no-topics": "No topics have been posted within the selected timeframe",
|
||||
"details.no-searches": "No searches have been made yet",
|
||||
"details.no-logins": "No logins have been recorded within the selected timeframe",
|
||||
"details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions",
|
||||
"details.logins-login-time": "Login Time"
|
||||
|
||||
@@ -8,7 +8,11 @@
|
||||
"nodejs": "nodejs",
|
||||
"online": "online",
|
||||
"git": "git",
|
||||
"memory": "memory",
|
||||
"process-memory": "process memory",
|
||||
"system-memory": "system memory",
|
||||
"used-memory-process": "Used memory by process",
|
||||
"used-memory-os": "Used system memory",
|
||||
"total-memory-os": "Total system memory",
|
||||
"load": "system load",
|
||||
"cpu-usage": "cpu usage",
|
||||
"uptime": "uptime",
|
||||
|
||||
@@ -8,8 +8,6 @@
|
||||
"delete": "Delete",
|
||||
"enable": "Enable",
|
||||
"disable": "Disable",
|
||||
"control-panel": "Rewards Control",
|
||||
"new-reward": "New Reward",
|
||||
|
||||
"alert.delete-success": "Successfully deleted reward",
|
||||
"alert.no-inputs-found": "Illegal reward - no inputs found!",
|
||||
|
||||
@@ -1,79 +0,0 @@
|
||||
{
|
||||
"forum-traffic": "Forum Traffic",
|
||||
"page-views": "Page Views",
|
||||
"unique-visitors": "Unique Visitors",
|
||||
"new-users": "New Users",
|
||||
"posts": "Posts",
|
||||
"topics": "Topics",
|
||||
"page-views-seven": "Last 7 Days",
|
||||
"page-views-thirty": "Last 30 Days",
|
||||
"page-views-last-day": "Last 24 hours",
|
||||
"page-views-custom": "Custom Date Range",
|
||||
"page-views-custom-start": "Range Start",
|
||||
"page-views-custom-end": "Range End",
|
||||
"page-views-custom-help": "Enter a date range of page views you would like to view. If no date picker is available, the accepted format is <code>YYYY-MM-DD</code>",
|
||||
"page-views-custom-error": "Please enter a valid date range in the format <code>YYYY-MM-DD</code>",
|
||||
|
||||
"stats.yesterday": "Yesterday",
|
||||
"stats.today": "Today",
|
||||
"stats.last-week": "Last Week",
|
||||
"stats.this-week": "This Week",
|
||||
"stats.last-month": "Last Month",
|
||||
"stats.this-month": "This Month",
|
||||
"stats.all": "All Time",
|
||||
|
||||
"updates": "Updates",
|
||||
"running-version": "You are running <strong>NodeBB v<span id=\"version\">%1</span></strong>.",
|
||||
"keep-updated": "Always make sure that your NodeBB is up to date for the latest security patches and bug fixes.",
|
||||
"up-to-date": "<p>You are <strong>up-to-date</strong> <i class=\"fa fa-check\"></i></p>",
|
||||
"upgrade-available": "<p>A new version (v%1) has been released. Consider <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">upgrading your NodeBB</a>.</p>",
|
||||
"prerelease-upgrade-available": "<p>This is an outdated pre-release version of NodeBB. A new version (v%1) has been released. Consider <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">upgrading your NodeBB</a>.</p>",
|
||||
"prerelease-warning": "<p>This is a <strong>pre-release</strong> version of NodeBB. Unintended bugs may occur. <i class=\"fa fa-exclamation-triangle\"></i></p>",
|
||||
"running-in-development": "<span>Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator.</span>",
|
||||
"latest-lookup-failed": "<p>Failed to look up latest available version of NodeBB</p>",
|
||||
|
||||
"notices": "Notices",
|
||||
"restart-not-required": "Restart not required",
|
||||
"restart-required": "Restart required",
|
||||
"search-plugin-installed": "Search Plugin installed",
|
||||
"search-plugin-not-installed": "Search Plugin not installed",
|
||||
"search-plugin-tooltip": "Install a search plugin from the plugin page in order to activate search functionality",
|
||||
|
||||
"control-panel": "System Control",
|
||||
"rebuild-and-restart": "Rebuild & Restart",
|
||||
"restart": "Restart",
|
||||
"restart-warning": "Rebuilding or Restarting your NodeBB will drop all existing connections for a few seconds.",
|
||||
"restart-disabled": "Rebuilding and Restarting your NodeBB has been disabled as you do not seem to be running it via the appropriate daemon.",
|
||||
"maintenance-mode": "Maintenance Mode",
|
||||
"maintenance-mode-title": "Click here to set up maintenance mode for NodeBB",
|
||||
"realtime-chart-updates": "Realtime Chart Updates",
|
||||
|
||||
"active-users": "Active Users",
|
||||
"active-users.users": "Users",
|
||||
"active-users.guests": "Guests",
|
||||
"active-users.total": "Total",
|
||||
"active-users.connections": "Connections",
|
||||
|
||||
"anonymous-registered-users": "Anonymous vs Registered Users",
|
||||
"anonymous": "Anonymous",
|
||||
"registered": "Registered",
|
||||
|
||||
"user-presence": "User Presence",
|
||||
"on-categories": "On categories list",
|
||||
"reading-posts": "Reading posts",
|
||||
"browsing-topics": "Browsing topics",
|
||||
"recent": "Recent",
|
||||
"unread": "Unread",
|
||||
|
||||
"high-presence-topics": "High Presence Topics",
|
||||
|
||||
"graphs.page-views": "Page Views",
|
||||
"graphs.page-views-registered": "Page Views Registered",
|
||||
"graphs.page-views-guest": "Page Views Guest",
|
||||
"graphs.page-views-bot": "Page Views Bot",
|
||||
"graphs.unique-visitors": "Unique Visitors",
|
||||
"graphs.registered-users": "Registered Users",
|
||||
"graphs.anonymous-users": "Anonymous Users",
|
||||
"last-restarted-by": "Last restarted by",
|
||||
"no-users-browsing": "No users browsing"
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
{
|
||||
"home-page": "Home Page",
|
||||
"description": "Choose what page is shown when users navigate to the root URL of your forum.",
|
||||
"home-page-route": "Home Page Route",
|
||||
"custom-route": "Custom Route",
|
||||
"allow-user-home-pages": "Allow User Home Pages",
|
||||
"home-page-title": "Title of the home page (default \"Home\")"
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"language-settings": "Language Settings",
|
||||
"description": "The default language determines the language settings for all users who are visiting your forum. <br />Individual users can override the default language on their account settings page.",
|
||||
"default-language": "Default Language",
|
||||
"auto-detect": "Auto Detect Language Setting for Guests"
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
{
|
||||
"icon": "Icon:",
|
||||
"change-icon": "change",
|
||||
"route": "Route:",
|
||||
"tooltip": "Tooltip:",
|
||||
"text": "Text:",
|
||||
"text-class": "Text Class: <small>optional</small>",
|
||||
"class": "Class: <small>optional</small>",
|
||||
"id": "ID: <small>optional</small>",
|
||||
|
||||
"properties": "Properties:",
|
||||
"groups": "Groups:",
|
||||
"open-new-window": "Open in a new window",
|
||||
|
||||
"btn.delete": "Delete",
|
||||
"btn.disable": "Disable",
|
||||
"btn.enable": "Enable",
|
||||
|
||||
"available-menu-items": "Available Menu Items",
|
||||
"custom-route": "Custom Route",
|
||||
"core": "core",
|
||||
"plugin": "plugin"
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
{
|
||||
"post-sharing": "Post Sharing",
|
||||
"info-plugins-additional": "Plugins can add additional networks for sharing posts.",
|
||||
"save-success": "Successfully saved Post Sharing Networks!"
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"notifications": "Notifications",
|
||||
"chat-messages": "Chat Messages",
|
||||
"play-sound": "Play",
|
||||
"incoming-message": "Incoming Message",
|
||||
"outgoing-message": "Outgoing Message",
|
||||
"upload-new-sound": "Upload New Sound",
|
||||
"saved": "Settings Saved"
|
||||
}
|
||||
@@ -13,6 +13,7 @@
|
||||
"resent-single": "Manual digest resend completed",
|
||||
"resent-day": "Daily digest resent",
|
||||
"resent-week": "Weekly digest resent",
|
||||
"resent-biweek": "Bi-Weekly digest resent",
|
||||
"resent-month": "Monthly digest resent",
|
||||
"null": "<em>Never</em>",
|
||||
"manual-run": "Manual digest run:",
|
||||
|
||||
@@ -51,10 +51,13 @@
|
||||
"alert.saved": "Privilege changes saved and applied",
|
||||
"alert.confirm-discard": "Are you sure you wish to discard your privilege changes?",
|
||||
"alert.discarded": "Privilege changes discarded",
|
||||
"alert.confirm-copyToAll": "Are you sure you wish to apply this privilege set to <strong>all categories</strong>?",
|
||||
"alert.confirm-copyToAllGroup": "Are you sure you wish to apply this group's privilege set to <strong>all categories</strong>?",
|
||||
"alert.confirm-copyToChildren": "Are you sure you wish to apply this privilege set to <strong>all descendant (child) categories</strong>?",
|
||||
"alert.confirm-copyToChildrenGroup": "Are you sure you wish to apply this group's privilege set to <strong>all descendant (child) categories</strong>?",
|
||||
"alert.confirm-copyToAll": "Are you sure you wish to apply this set of <strong>%1</strong> to <strong>all categories</strong>?",
|
||||
"alert.confirm-copyToAllGroup": "Are you sure you wish to apply this group's set of <strong>%1</strong> to <strong>all categories</strong>?",
|
||||
"alert.confirm-copyToChildren": "Are you sure you wish to apply this set of <strong>%1</strong> to <strong>all descendant (child) categories</strong>?",
|
||||
"alert.confirm-copyToChildrenGroup": "Are you sure you wish to apply this group's set of <strong>%1</strong> to <strong>all descendant (child) categories</strong>?",
|
||||
"alert.no-undo": "<em>This action cannot be undone.</em>",
|
||||
"alert.admin-warning": "Administrators implicitly get all privileges"
|
||||
"alert.admin-warning": "Administrators implicitly get all privileges",
|
||||
"alert.copyPrivilegesFrom-title": "Select a category to copy from",
|
||||
"alert.copyPrivilegesFrom-warning": "This will copy <strong>%1</strong> from the selected category.",
|
||||
"alert.copyPrivilegesFromGroup-warning": "This will copy this group's set of <strong>%1</strong> from the selected category."
|
||||
}
|
||||
@@ -5,5 +5,7 @@
|
||||
"orphaned": "Orphaned",
|
||||
"size/filecount": "Size / Filecount",
|
||||
"confirm-delete": "Do you really want to delete this file?",
|
||||
"filecount": "%1 files"
|
||||
"filecount": "%1 files",
|
||||
"new-folder": "New Folder",
|
||||
"name-new-folder": "Enter a name for new the folder"
|
||||
}
|
||||
@@ -47,6 +47,7 @@
|
||||
"users.uid": "uid",
|
||||
"users.username": "username",
|
||||
"users.email": "email",
|
||||
"users.no-email": "(no email)",
|
||||
"users.ip": "IP",
|
||||
"users.postcount": "postcount",
|
||||
"users.reputation": "reputation",
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
"dashboard/logins": "Logins",
|
||||
"dashboard/users": "Users",
|
||||
"dashboard/topics": "Topics",
|
||||
"dashboard/searches": "Searches",
|
||||
"section-general": "General",
|
||||
|
||||
"section-manage": "Manage",
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
"from-help": "The from name to display in the email.",
|
||||
|
||||
"smtp-transport": "SMTP Transport",
|
||||
"smtp-transport.enabled": "Use an external email server to send emails",
|
||||
"smtp-transport.enabled": "Enable SMTP Transport",
|
||||
"smtp-transport-help": "You can select from a list of well-known services or enter a custom one.",
|
||||
"smtp-transport.service": "Select a service",
|
||||
"smtp-transport.service-custom": "Custom Service",
|
||||
@@ -36,6 +36,11 @@
|
||||
"subscriptions.disable": "ইমেইল ডাইজেস্ট নিষ্ক্রিয়",
|
||||
"subscriptions.hour": "Digest Hour",
|
||||
"subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. <code>0</code> for midnight, <code>17</code> for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.<br /> The approximate server time is: <span id=\"serverTime\"></span><br /> The next daily digest is scheduled to be sent <span id=\"nextDigestTime\"></span>",
|
||||
"notifications.settings": "Email notification settings",
|
||||
"notifications.remove-images": "Remove images from email notifications"
|
||||
}
|
||||
"notifications.remove-images": "Remove images from email notifications",
|
||||
"require-email-address": "Require new users to specify an email address",
|
||||
"require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. <strong>It does not ensure user will enter a real email address, nor even an address they own.</strong>",
|
||||
"include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails",
|
||||
"include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). <strong>Enable this setting at your own risk</strong> – sending emails to unverified addresses may be a violation of regional anti-spam laws.",
|
||||
"prompt": "Prompt users to enter or confirm their emails",
|
||||
"prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen."
|
||||
}
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
"title": "Site Title",
|
||||
"title.short": "Short Title",
|
||||
"title.short-placeholder": "If no short title is specified, the site title will be used",
|
||||
"title.url": "URL",
|
||||
"title.url": "Title Link URL",
|
||||
"title.url-placeholder": "The URL of the site title",
|
||||
"title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.",
|
||||
"title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index. <br> Note: This is not the external URL used in emails, etc. That is set by the <code>url</code> property in config.json",
|
||||
"title.name": "Your Community Name",
|
||||
"title.show-in-header": "Show Site Title in Header",
|
||||
"browser-title": "Browser Title",
|
||||
@@ -20,9 +20,9 @@
|
||||
"logo.image": "Image",
|
||||
"logo.image-placeholder": "Path to a logo to display on forum header",
|
||||
"logo.upload": "Upload",
|
||||
"logo.url": "URL",
|
||||
"logo.url": "Logo Link URL",
|
||||
"logo.url-placeholder": "The URL of the site logo",
|
||||
"logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.",
|
||||
"logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index. <br> Note: This is not the external URL used in emails, etc. That is set by the <code>url</code> property in config.json",
|
||||
"logo.alt-text": "Alt Text",
|
||||
"log.alt-text-placeholder": "Alternative text for accessibility",
|
||||
"favicon": "Favicon",
|
||||
@@ -35,7 +35,10 @@
|
||||
"maskable-icon.help": "Recommended size and format: 512x512, PNG format only. If no maskable icon is specified, NodeBB will fall back to the Touch Icon.",
|
||||
"outgoing-links": "Outgoing Links",
|
||||
"outgoing-links.warning-page": "Use Outgoing Links Warning Page",
|
||||
"search-default-sort-by": "Search default sort by",
|
||||
"search": "Search",
|
||||
"search-default-in": "Search In",
|
||||
"search-default-in-quick": "Quick Search In",
|
||||
"search-default-sort-by": "Sort by",
|
||||
"outgoing-links.whitelist": "Domains to whitelist for bypassing the warning page",
|
||||
"site-colors": "Site Color Metadata",
|
||||
"theme-color": "Theme Color",
|
||||
@@ -44,4 +47,4 @@
|
||||
"undo-timeout": "Undo Timeout",
|
||||
"undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.",
|
||||
"topic-tools": "Topic Tools"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,8 @@
|
||||
"properties": "Properties:",
|
||||
"groups": "Groups:",
|
||||
"open-new-window": "Open in a new window",
|
||||
"dropdown": "Dropdown",
|
||||
"dropdown-placeholder": "Place your dropdown menu items below, ie: <br/><li><a href="https://myforum.com">Link 1</a></li>",
|
||||
|
||||
"btn.delete": "Delete",
|
||||
"btn.disable": "Disable",
|
||||
@@ -20,4 +22,4 @@
|
||||
"custom-route": "Custom Route",
|
||||
"core": "core",
|
||||
"plugin": "plugin"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,5 +2,6 @@
|
||||
"notifications": "Notifications",
|
||||
"welcome-notification": "Welcome Notification",
|
||||
"welcome-notification-link": "Welcome Notification Link",
|
||||
"welcome-notification-uid": "Welcome Notification User (UID)"
|
||||
"welcome-notification-uid": "Welcome Notification User (UID)",
|
||||
"post-queue-notification-uid": "Post Queue User (UID)"
|
||||
}
|
||||
@@ -40,6 +40,7 @@
|
||||
"teaser.last-post": "Last – Show the latest post, including the original post, if no replies",
|
||||
"teaser.last-reply": "Last – Show the latest reply, or a \"No replies\" placeholder if no replies",
|
||||
"teaser.first": "First",
|
||||
"showPostPreviewsOnHover": "Show a preview of posts when mouse overed",
|
||||
"unread": "Unread Settings",
|
||||
"unread.cutoff": "Unread cutoff days",
|
||||
"unread.min-track-last": "Minimum posts in topic before tracking last read",
|
||||
@@ -56,6 +57,9 @@
|
||||
"composer.show-help": "Show \"Help\" tab",
|
||||
"composer.enable-plugin-help": "Allow plugins to add content to the help tab",
|
||||
"composer.custom-help": "Custom Help Text",
|
||||
"backlinks": "Backlinks",
|
||||
"backlinks.enabled": "Enable topic backlinks",
|
||||
"backlinks.help": "If a post references another topic, a link back to the post will be inserted into the referenced topic at that point in time.",
|
||||
"ip-tracking": "IP Tracking",
|
||||
"ip-tracking.each-post": "Track IP Address for each post",
|
||||
"enable-post-history": "Enable Post History"
|
||||
|
||||
@@ -71,6 +71,7 @@
|
||||
"digest-freq.off": "Off",
|
||||
"digest-freq.daily": "Daily",
|
||||
"digest-freq.weekly": "Weekly",
|
||||
"digest-freq.biweekly": "Bi-Weekly",
|
||||
"digest-freq.monthly": "Monthly",
|
||||
"email-chat-notifs": "Send an email if a new chat message arrives and I am not online",
|
||||
"email-post-notif": "Send an email when replies are made to topics I am subscribed to",
|
||||
|
||||
@@ -6,7 +6,9 @@
|
||||
"greeting_no_name": "স্বাগতম",
|
||||
"greeting_with_name": "স্বাগতম %1",
|
||||
"email.verify-your-email.subject": "দয়া করে ইমেইল যাচাই করুন",
|
||||
"email.verify.text1": "আপনার ইমেইল পরিবর্তন হয়েছে!",
|
||||
"email.verify.text1": "You've requested that we change or confirm your email address",
|
||||
"email.verify.text2": "For security purposes, we only change or confirm the email address on file once its ownership has been confirmed via email. <strong>If you did not request this, no action is required on your part.</strong>",
|
||||
"email.verify.text3": "Once you confirm this email address, we will replace your current email address with this one (%1).",
|
||||
"welcome.text1": "%1 এ নিবন্ধন করার জন্য আপনাকে ধন্যবাদ!",
|
||||
"welcome.text2": "আপনার একাউন্ট এ্যাক্টিভেট করার জন্য, আপনি যে ইমেইল এড্রেস ব্যাবহার করে নিবন্ধন করেছেন তা যাচাই করতে হবে",
|
||||
"welcome.text3": "An administrator has accepted your registration application. You can login with your username/password now.",
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user