mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-12-16 21:40:23 +01:00
Compare commits
1575 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
56b79a974a | ||
|
|
418b9bf02f | ||
|
|
03b6b1e15c | ||
|
|
258d562c3e | ||
|
|
f1b097ded6 | ||
|
|
6348eb2bab | ||
|
|
fcebfd8f39 | ||
|
|
2f6b9eb80a | ||
|
|
8b59efef38 | ||
|
|
85d7b04846 | ||
|
|
db4ac34138 | ||
|
|
4f4e33eb15 | ||
|
|
eb5be2f671 | ||
|
|
5ba7234bd7 | ||
|
|
d10fd6248e | ||
|
|
afc32c1f6e | ||
|
|
487166ba48 | ||
|
|
5a50a098d8 | ||
|
|
5d94b00883 | ||
|
|
fa351ffa07 | ||
|
|
9c2d7a2468 | ||
|
|
474ff3ed35 | ||
|
|
d2bbca1de1 | ||
|
|
87111ee6be | ||
|
|
ee9390ee34 | ||
|
|
df055ce7ea | ||
|
|
0bc175dd4c | ||
|
|
a5226c9423 | ||
|
|
12601dd3aa | ||
|
|
954c25823e | ||
|
|
c38cab3b74 | ||
|
|
2b93c01340 | ||
|
|
ef750e2ebd | ||
|
|
67d9209b99 | ||
|
|
98c1390e7f | ||
|
|
93007bc34f | ||
|
|
fdddc19d0d | ||
|
|
03a4b5f641 | ||
|
|
d62c3b9340 | ||
|
|
a3d17d14fd | ||
|
|
307eb19d01 | ||
|
|
f475d6e3b8 | ||
|
|
b4465b7df1 | ||
|
|
05cac46c5b | ||
|
|
1a56267791 | ||
|
|
d426839da9 | ||
|
|
7e6703c18e | ||
|
|
c781e55ea9 | ||
|
|
d095e5925c | ||
|
|
0bc4799c3c | ||
|
|
fdc66eb607 | ||
|
|
a3c41e7fdb | ||
|
|
8e4340544a | ||
|
|
435fe5c54f | ||
|
|
a20d1f8220 | ||
|
|
866b0ddaa6 | ||
|
|
bdc3cc49f8 | ||
|
|
957766c1d7 | ||
|
|
0c6b2b122e | ||
|
|
fdefff3516 | ||
|
|
e171ba59ac | ||
|
|
fba6e1dfe2 | ||
|
|
1413fc1b1a | ||
|
|
399c89eeed | ||
|
|
1c973b7bf3 | ||
|
|
22251cb0bd | ||
|
|
33434ed13d | ||
|
|
83ad4ab042 | ||
|
|
414c2a8bd9 | ||
|
|
6ee0671e6a | ||
|
|
6bd131815f | ||
|
|
945a94f0ed | ||
|
|
bd863e1ccb | ||
|
|
546efbbd1b | ||
|
|
e112190bee | ||
|
|
a10dfc87cf | ||
|
|
f4ea534327 | ||
|
|
8dedea884d | ||
|
|
5340537631 | ||
|
|
9e63aaebb8 | ||
|
|
7063f172a7 | ||
|
|
87e5c733a4 | ||
|
|
4b9eab6dc0 | ||
|
|
b2a69758ee | ||
|
|
eaa35c8057 | ||
|
|
65ab5733ef | ||
|
|
b46da4461c | ||
|
|
0be2a79210 | ||
|
|
e023d01616 | ||
|
|
7f77269596 | ||
|
|
3a8c1f88fb | ||
|
|
2c62bafdc7 | ||
|
|
305c54a727 | ||
|
|
d061411747 | ||
|
|
7fc08bbda8 | ||
|
|
516103fe5d | ||
|
|
e5875ba53d | ||
|
|
e25d2fa6e6 | ||
|
|
d712dcdce1 | ||
|
|
b83492daa2 | ||
|
|
d329bf45e6 | ||
|
|
69c4b4183a | ||
|
|
cbe810341c | ||
|
|
ad38c55b12 | ||
|
|
e2c4f668a1 | ||
|
|
a9da867255 | ||
|
|
ee7e36ae44 | ||
|
|
dc7839b511 | ||
|
|
daf1a388eb | ||
|
|
8209d97f05 | ||
|
|
9552d9c5a3 | ||
|
|
efbab27827 | ||
|
|
2cb70ceccc | ||
|
|
f9a29186c4 | ||
|
|
81eeab42ed | ||
|
|
3256faeb28 | ||
|
|
43b72d1552 | ||
|
|
1b7df6e4b2 | ||
|
|
835750f36f | ||
|
|
aab726bac4 | ||
|
|
072d287183 | ||
|
|
534b13e089 | ||
|
|
1229470bba | ||
|
|
140b8be161 | ||
|
|
a4ace48469 | ||
|
|
541fd474b3 | ||
|
|
f56c2ea88a | ||
|
|
4fc4a0ff3e | ||
|
|
d225951027 | ||
|
|
2b2dceb28b | ||
|
|
a12ecbc230 | ||
|
|
1602b378e3 | ||
|
|
b4e39374bb | ||
|
|
92c1d6712b | ||
|
|
423c6cc0ec | ||
|
|
42367a653c | ||
|
|
780838c579 | ||
|
|
704aeea3f1 | ||
|
|
ec8c5ff1fc | ||
|
|
7fbca487f5 | ||
|
|
6b6bae7cc5 | ||
|
|
020de2722f | ||
|
|
b73a26f7a6 | ||
|
|
6cf0697621 | ||
|
|
396013c8fd | ||
|
|
74f2f7caef | ||
|
|
02a63c0a45 | ||
|
|
b69ea4564a | ||
|
|
c01f06214e | ||
|
|
26f22345cd | ||
|
|
c6713177d3 | ||
|
|
c1a6bd8b8f | ||
|
|
21ad15b13a | ||
|
|
b8028ccdbf | ||
|
|
d00e08a8e6 | ||
|
|
2b493964d0 | ||
|
|
9d0a0538a6 | ||
|
|
7397d98647 | ||
|
|
d0b1ebb8ea | ||
|
|
9a03671ad2 | ||
|
|
503d83998b | ||
|
|
b50ad39120 | ||
|
|
f08554e788 | ||
|
|
c6643082e2 | ||
|
|
1069f9c936 | ||
|
|
da1c347fc2 | ||
|
|
ffd22f50ff | ||
|
|
2d70733fa5 | ||
|
|
1d4efaee68 | ||
|
|
4de5fde18d | ||
|
|
5c44775c1f | ||
|
|
52f7e13a5c | ||
|
|
e355c8cb1b | ||
|
|
417a573f67 | ||
|
|
ceb4de653d | ||
|
|
6ff635ada3 | ||
|
|
4b1c9ce9a2 | ||
|
|
1e2f4ae5e9 | ||
|
|
773d886135 | ||
|
|
619251143d | ||
|
|
5c35b2d96f | ||
|
|
19294c91c3 | ||
|
|
48af82659e | ||
|
|
491d376fb4 | ||
|
|
b33a482226 | ||
|
|
3e21f26d0d | ||
|
|
3b1582915e | ||
|
|
da800a9016 | ||
|
|
aa001b5926 | ||
|
|
5c253c1efa | ||
|
|
1ae0077810 | ||
|
|
1d7b2b5776 | ||
|
|
10bbbb8942 | ||
|
|
93b6b6ba5f | ||
|
|
f2bebb12c6 | ||
|
|
f2c45e98da | ||
|
|
c5b9c9254a | ||
|
|
65e2c4cd20 | ||
|
|
bf3b5ee318 | ||
|
|
a285e0734d | ||
|
|
59b14669c4 | ||
|
|
d135f37b4f | ||
|
|
5ee1951245 | ||
|
|
54226a86b4 | ||
|
|
57c2418157 | ||
|
|
de228fa67d | ||
|
|
0ba0f70581 | ||
|
|
74a7bdf589 | ||
|
|
ea818e2af8 | ||
|
|
718f61e3bd | ||
|
|
a31178ebd8 | ||
|
|
2b0b2ea858 | ||
|
|
981a7558f7 | ||
|
|
6fc073d33e | ||
|
|
13e12ba3a5 | ||
|
|
5ff9a7f9a9 | ||
|
|
3a21329c5e | ||
|
|
98cde1a9d6 | ||
|
|
b89b4d066a | ||
|
|
fbeb6bc0ce | ||
|
|
38b838d462 | ||
|
|
1d72a8f0ee | ||
|
|
3e386e7668 | ||
|
|
f974af2247 | ||
|
|
2deeda553a | ||
|
|
8160188ef5 | ||
|
|
c81d6f8b57 | ||
|
|
dc351fa320 | ||
|
|
6fd772756c | ||
|
|
19b50c8888 | ||
|
|
a5365e968d | ||
|
|
b5b9a190e4 | ||
|
|
28e9874ba9 | ||
|
|
b655e18cee | ||
|
|
ba4e8c8955 | ||
|
|
dff1a04585 | ||
|
|
abfd58a1a9 | ||
|
|
5445e32522 | ||
|
|
9d562a8708 | ||
|
|
5f5b11f692 | ||
|
|
0ef2ccc130 | ||
|
|
ed173e0a32 | ||
|
|
cea385e572 | ||
|
|
536c443c1e | ||
|
|
8e74d8f4fa | ||
|
|
29c9b2e69f | ||
|
|
f6d025bc3f | ||
|
|
93fe660892 | ||
|
|
15a8ebaeff | ||
|
|
9583c5bf93 | ||
|
|
1bbce82c23 | ||
|
|
8ff7ba82c2 | ||
|
|
40408eb7a1 | ||
|
|
6d0d74a6e9 | ||
|
|
2880a77a9f | ||
|
|
a6cfdc7508 | ||
|
|
74de675b93 | ||
|
|
071922d3ba | ||
|
|
7689b60773 | ||
|
|
0ea35beea6 | ||
|
|
ff234bccfe | ||
|
|
deda4a4ed6 | ||
|
|
e3ee3de95d | ||
|
|
387a5e36b2 | ||
|
|
1fef40eb6f | ||
|
|
18897c70b4 | ||
|
|
0ad1c8afbf | ||
|
|
b0907b8c3c | ||
|
|
28e1ae46c7 | ||
|
|
7564881298 | ||
|
|
97d1ab2e35 | ||
|
|
febc359e53 | ||
|
|
f8b3282295 | ||
|
|
ef6c30ad99 | ||
|
|
548d39fac5 | ||
|
|
ac2811be75 | ||
|
|
6c607bca1e | ||
|
|
6ae64ca884 | ||
|
|
78ea462620 | ||
|
|
ed72bacb1f | ||
|
|
d8c329cadd | ||
|
|
3a36ae5c13 | ||
|
|
43b90c5679 | ||
|
|
96526a37a3 | ||
|
|
5549280696 | ||
|
|
7fc416f18a | ||
|
|
4a0482c421 | ||
|
|
17ff083cc6 | ||
|
|
b08c7368c6 | ||
|
|
6fedcca4ee | ||
|
|
e892cf2e51 | ||
|
|
170126680b | ||
|
|
f1c422d190 | ||
|
|
e523ef7c17 | ||
|
|
88dd8b1d4d | ||
|
|
54277e62fc | ||
|
|
704104c3bf | ||
|
|
cf35f69826 | ||
|
|
37c9c05319 | ||
|
|
478850ac05 | ||
|
|
394497c9d5 | ||
|
|
493c8752c3 | ||
|
|
f0064ac11f | ||
|
|
d5c6e2e73a | ||
|
|
f1f028b89c | ||
|
|
0aceafb344 | ||
|
|
9704af3b6d | ||
|
|
e74f3da89e | ||
|
|
0feb11f205 | ||
|
|
64ec397101 | ||
|
|
18bfa44586 | ||
|
|
a60cb28562 | ||
|
|
452b4c6d56 | ||
|
|
2dfb9837a7 | ||
|
|
b45fa811b4 | ||
|
|
4e06b7790f | ||
|
|
507fb225a2 | ||
|
|
4420e7a9fc | ||
|
|
05c5196965 | ||
|
|
a17c65ee9f | ||
|
|
64359f4655 | ||
|
|
a94e676043 | ||
|
|
b717da0229 | ||
|
|
045d9df81f | ||
|
|
1bfb41bccb | ||
|
|
3197a9e47c | ||
|
|
a77641c3ca | ||
|
|
37ad81a2b0 | ||
|
|
46ce3aae9f | ||
|
|
a355fbfc81 | ||
|
|
d51407834d | ||
|
|
58b8c32fe9 | ||
|
|
fc19405170 | ||
|
|
fc99864c06 | ||
|
|
b96018b0f5 | ||
|
|
a14e22d534 | ||
|
|
ee17367cc1 | ||
|
|
0c32aa0c78 | ||
|
|
8610c44e78 | ||
|
|
8eab5ac402 | ||
|
|
8726e2ccb6 | ||
|
|
1e7da1fc82 | ||
|
|
0563bb5923 | ||
|
|
2129a2fc5f | ||
|
|
1b88a6a523 | ||
|
|
8ecd90729e | ||
|
|
af8732fcb9 | ||
|
|
eddabe5a37 | ||
|
|
f168566928 | ||
|
|
463c893c3d | ||
|
|
f9053c077d | ||
|
|
06f7172c65 | ||
|
|
e905787301 | ||
|
|
0b93738537 | ||
|
|
9a236486a9 | ||
|
|
82350dc967 | ||
|
|
03bc317065 | ||
|
|
8117b4459a | ||
|
|
b45335c6ba | ||
|
|
a065a73637 | ||
|
|
7bed4c40d6 | ||
|
|
aca5d24a7d | ||
|
|
8300aeec35 | ||
|
|
50d9a3f0a7 | ||
|
|
3f1726636f | ||
|
|
8a225ad719 | ||
|
|
8f7416d1cb | ||
|
|
cc2a92d73f | ||
|
|
cbb0542984 | ||
|
|
4a0bc1fb03 | ||
|
|
e6061810f9 | ||
|
|
fc2efb0c83 | ||
|
|
a0a8d328d0 | ||
|
|
d8e52d7ebf | ||
|
|
b2f2561e74 | ||
|
|
349de1694d | ||
|
|
714c7356f9 | ||
|
|
9ed88b7bb9 | ||
|
|
a5b8a656e9 | ||
|
|
4b4be3d4cc | ||
|
|
3b891ed7d8 | ||
|
|
3055ee96a1 | ||
|
|
434f1d924e | ||
|
|
2cae7995e7 | ||
|
|
19ca796915 | ||
|
|
45589fbeca | ||
|
|
f6ba4c446a | ||
|
|
5ce617ca5a | ||
|
|
63489457fe | ||
|
|
1c4d78eb2d | ||
|
|
f698d28dfb | ||
|
|
7b81c5db9f | ||
|
|
79fd5a4d8e | ||
|
|
62a2e9fdd0 | ||
|
|
990b02d0db | ||
|
|
95e9d7c798 | ||
|
|
62f1a788e0 | ||
|
|
5931255398 | ||
|
|
118de65f5e | ||
|
|
9165da3b26 | ||
|
|
63a2a20fd3 | ||
|
|
55bed3464e | ||
|
|
117bb407b0 | ||
|
|
39c3afec62 | ||
|
|
09ee1ae77e | ||
|
|
8acb0ca304 | ||
|
|
d90f3649a6 | ||
|
|
7125d902d0 | ||
|
|
f6181e6481 | ||
|
|
d052db85e0 | ||
|
|
aae3ac6b98 | ||
|
|
830e1a7a3d | ||
|
|
cd2ed20f3d | ||
|
|
58b0b6011f | ||
|
|
22e227a6cd | ||
|
|
8414e31730 | ||
|
|
927971b392 | ||
|
|
3341fc5644 | ||
|
|
4f37d268b6 | ||
|
|
55e20b28ec | ||
|
|
5f23f04423 | ||
|
|
972ae42d91 | ||
|
|
671db1681e | ||
|
|
fd817e865e | ||
|
|
fbdae8fe1d | ||
|
|
addd6ecde7 | ||
|
|
aa577f4adc | ||
|
|
93df7f14d8 | ||
|
|
05049946d4 | ||
|
|
9cdc2e5a2d | ||
|
|
93170ca106 | ||
|
|
60f9fc17ae | ||
|
|
1550f82652 | ||
|
|
297b5906ed | ||
|
|
56e5f505a0 | ||
|
|
8aac4bdfa1 | ||
|
|
8bc5330e89 | ||
|
|
9daa2701cd | ||
|
|
ec91efdd2d | ||
|
|
de71910f4c | ||
|
|
48b5d90a9e | ||
|
|
20983c43f4 | ||
|
|
e6beeb62cf | ||
|
|
5c4e988232 | ||
|
|
220b42706f | ||
|
|
fc1b0c8d24 | ||
|
|
30a9b66b31 | ||
|
|
d9af2242a7 | ||
|
|
10de7a92e4 | ||
|
|
36853f4ad8 | ||
|
|
9c2a98486a | ||
|
|
68ceaadad1 | ||
|
|
4124370efe | ||
|
|
2706477bcc | ||
|
|
35c426ee1c | ||
|
|
da56681f73 | ||
|
|
7c5ba9b7b1 | ||
|
|
1d22a2d46b | ||
|
|
5f0531e66a | ||
|
|
93fd938913 | ||
|
|
a88ad903af | ||
|
|
224e3dc263 | ||
|
|
484ad33549 | ||
|
|
29aa858a11 | ||
|
|
e070a9777e | ||
|
|
ba9a68c59c | ||
|
|
d3b52136bd | ||
|
|
f55e8bc548 | ||
|
|
dce9a19882 | ||
|
|
d11bfab275 | ||
|
|
2b90568157 | ||
|
|
b292aeea72 | ||
|
|
be1865da2d | ||
|
|
0f199af84d | ||
|
|
394d55de99 | ||
|
|
2ed0f25d45 | ||
|
|
551c81a977 | ||
|
|
8f6d8001d6 | ||
|
|
43755b2ce3 | ||
|
|
e75ec97049 | ||
|
|
e79a386280 | ||
|
|
9ca7243124 | ||
|
|
f2a91ef655 | ||
|
|
9518c006b5 | ||
|
|
ca1ada9dc5 | ||
|
|
74d6104072 | ||
|
|
c6a05930aa | ||
|
|
7b550b13b9 | ||
|
|
0083d4ff1c | ||
|
|
732f6d7d80 | ||
|
|
27bf1c1b2e | ||
|
|
ffac8eb41d | ||
|
|
9d273d3a32 | ||
|
|
b08774763a | ||
|
|
c74d32a172 | ||
|
|
eaa89a4da7 | ||
|
|
dfffbace42 | ||
|
|
c56b30ff60 | ||
|
|
073afe4db0 | ||
|
|
0ff09d8093 | ||
|
|
ba36230262 | ||
|
|
d1231cf4a8 | ||
|
|
72177f6d16 | ||
|
|
8abca6b03f | ||
|
|
cd7a3f64f4 | ||
|
|
c1dd0dd669 | ||
|
|
954212fc9f | ||
|
|
c7fbaf1a53 | ||
|
|
e18f6c95fa | ||
|
|
b561c49de5 | ||
|
|
73d65dd123 | ||
|
|
b48fdfadad | ||
|
|
2fc8b153c1 | ||
|
|
4f8a1174a1 | ||
|
|
1ee6255450 | ||
|
|
a924c456b9 | ||
|
|
ad7b561dd4 | ||
|
|
7312540b72 | ||
|
|
a93a1d720d | ||
|
|
122aacdc57 | ||
|
|
7f80a4a439 | ||
|
|
b94d4f7fe5 | ||
|
|
9749658d35 | ||
|
|
1c94866ab3 | ||
|
|
3063da83ef | ||
|
|
163b70fba9 | ||
|
|
a462b10f94 | ||
|
|
379bdd12e0 | ||
|
|
f6ddff3e5f | ||
|
|
c98e630f24 | ||
|
|
3b93182ec1 | ||
|
|
2286d1137b | ||
|
|
d946a2fcbd | ||
|
|
51212c2bfa | ||
|
|
2fbe7a8190 | ||
|
|
6f66209428 | ||
|
|
8bb73192cf | ||
|
|
533193fa79 | ||
|
|
1556365712 | ||
|
|
c13e14d2c8 | ||
|
|
b9172358dd | ||
|
|
84cbdc1358 | ||
|
|
5a6c46a0a0 | ||
|
|
0d7e72be51 | ||
|
|
c354929569 | ||
|
|
ec6c618751 | ||
|
|
17dfb4df94 | ||
|
|
275a9ef476 | ||
|
|
5487da9030 | ||
|
|
67eef3653b | ||
|
|
dc16a665ae | ||
|
|
47a2377229 | ||
|
|
03b0d282f1 | ||
|
|
e5928f330e | ||
|
|
d6949815ad | ||
|
|
a5c52958e7 | ||
|
|
e88d88e56c | ||
|
|
8544531a79 | ||
|
|
21b634e03f | ||
|
|
f44e850fa0 | ||
|
|
5d5346c4f9 | ||
|
|
a54dccdf3b | ||
|
|
15265bf36e | ||
|
|
c004efee3f | ||
|
|
a9015cee03 | ||
|
|
fac747cab7 | ||
|
|
24a11314dc | ||
|
|
255e3bdd20 | ||
|
|
e8ea1e12a1 | ||
|
|
ddd5c49461 | ||
|
|
9b53cdfcc0 | ||
|
|
7488fa0416 | ||
|
|
5db3166136 | ||
|
|
d72d1a1641 | ||
|
|
45e216edef | ||
|
|
8556ddd9a0 | ||
|
|
e9a92bd1bf | ||
|
|
6533941207 | ||
|
|
b617c1faa9 | ||
|
|
c8000d36db | ||
|
|
f981e6d466 | ||
|
|
d99e028a1e | ||
|
|
220dec5711 | ||
|
|
dd61bdb9c6 | ||
|
|
ee78281f35 | ||
|
|
6dfb229c66 | ||
|
|
176bf28d2f | ||
|
|
948ad5fb44 | ||
|
|
859e7593e1 | ||
|
|
a2497b050e | ||
|
|
8f5c393b12 | ||
|
|
7632997a99 | ||
|
|
d7444e5edf | ||
|
|
b604c9d5e1 | ||
|
|
3d9519bdec | ||
|
|
e2215b9912 | ||
|
|
89c863caa7 | ||
|
|
213ee2d063 | ||
|
|
2646b38dd2 | ||
|
|
a93e52aade | ||
|
|
20a1ab185c | ||
|
|
a386974585 | ||
|
|
bf13b6160f | ||
|
|
a11652ead1 | ||
|
|
8a7aaf8f76 | ||
|
|
ab2272b6b5 | ||
|
|
fe40d0f9e8 | ||
|
|
9fba76dc43 | ||
|
|
22d2ba5d6b | ||
|
|
50b9a7096e | ||
|
|
25e2e72366 | ||
|
|
1f2bd9390d | ||
|
|
828980f3e6 | ||
|
|
55c969ab23 | ||
|
|
3ffd3a5d3c | ||
|
|
14b16cb527 | ||
|
|
005c95277b | ||
|
|
2ffdec5386 | ||
|
|
2f2e2d60a0 | ||
|
|
ee94d72c59 | ||
|
|
60d655e32b | ||
|
|
610d687a96 | ||
|
|
2dc20e690f | ||
|
|
a72501f3b4 | ||
|
|
c26f274392 | ||
|
|
cc4e626f5f | ||
|
|
625a0dcbfa | ||
|
|
0c91391c75 | ||
|
|
1f06f90a50 | ||
|
|
eb0e2fe75d | ||
|
|
9e994f3baf | ||
|
|
5a0ea28633 | ||
|
|
bbccc38efd | ||
|
|
72f80dd330 | ||
|
|
7e3e7edfd4 | ||
|
|
759bdd55f0 | ||
|
|
dd92b06f16 | ||
|
|
e309a188c3 | ||
|
|
51f38e664c | ||
|
|
d780b82b01 | ||
|
|
9d3a9f4493 | ||
|
|
821c9f12d6 | ||
|
|
37a7ac5196 | ||
|
|
50feb7a766 | ||
|
|
c45fe28266 | ||
|
|
c24dce4dd6 | ||
|
|
65b2523b0f | ||
|
|
b7b44e13b1 | ||
|
|
8ee40ece71 | ||
|
|
da5909349b | ||
|
|
e8afe329a9 | ||
|
|
0d6772c30b | ||
|
|
5d04cd0bef | ||
|
|
5a0c657587 | ||
|
|
5d495483ad | ||
|
|
23c4ecfe60 | ||
|
|
a5832624d7 | ||
|
|
5587233e78 | ||
|
|
1d94b6a96f | ||
|
|
c188fa2a1f | ||
|
|
ee7d356781 | ||
|
|
a481d2c3fe | ||
|
|
f71c82f653 | ||
|
|
1eee970ebb | ||
|
|
848babcdfa | ||
|
|
86317a4b79 | ||
|
|
d146547b53 | ||
|
|
0e9a096c25 | ||
|
|
d40ca1e3c8 | ||
|
|
078d76a11b | ||
|
|
4e793995a0 | ||
|
|
c9b5948034 | ||
|
|
4fffe4da94 | ||
|
|
617808d574 | ||
|
|
e7dd881092 | ||
|
|
edb856ba90 | ||
|
|
6e80dff188 | ||
|
|
f7734d9b91 | ||
|
|
0e0b92f794 | ||
|
|
7bc2eeff4a | ||
|
|
1c36fbd57b | ||
|
|
2000947cd6 | ||
|
|
1e443551a5 | ||
|
|
b32d58e306 | ||
|
|
ba1afdf879 | ||
|
|
68835844b0 | ||
|
|
49e996caaf | ||
|
|
a17cbbb8ad | ||
|
|
3a090ef308 | ||
|
|
27049a2180 | ||
|
|
b58e50fb1e | ||
|
|
500c9f061c | ||
|
|
8c7ded3062 | ||
|
|
d5dd48ecc8 | ||
|
|
f7a3aef322 | ||
|
|
eaa442db8c | ||
|
|
e147328d53 | ||
|
|
6a509a51db | ||
|
|
1cc80cbc84 | ||
|
|
a055ff3547 | ||
|
|
32d3be0cbd | ||
|
|
fa9fde43fb | ||
|
|
ceba856006 | ||
|
|
7fa014e5ad | ||
|
|
80250b6f6c | ||
|
|
5501c0c759 | ||
|
|
663ad38727 | ||
|
|
dd175ada67 | ||
|
|
1910fdb977 | ||
|
|
cf825d02b7 | ||
|
|
c92ef6cf34 | ||
|
|
bbef94ed25 | ||
|
|
3ec99b8021 | ||
|
|
3de083208d | ||
|
|
1201425db2 | ||
|
|
e78fc98146 | ||
|
|
5db4714ba8 | ||
|
|
4d414d0b63 | ||
|
|
1b2da78fd8 | ||
|
|
1ce3d7284b | ||
|
|
427dda654a | ||
|
|
039dab829a | ||
|
|
a14249dee6 | ||
|
|
729fb1d696 | ||
|
|
3d0b50a9b7 | ||
|
|
45bf5de1e5 | ||
|
|
5c59aa7737 | ||
|
|
799cc9397a | ||
|
|
cc6f37ac4e | ||
|
|
13b4e446bf | ||
|
|
59909894fc | ||
|
|
f601bdee5e | ||
|
|
97419bbdd9 | ||
|
|
8069cbda69 | ||
|
|
0b76ed90aa | ||
|
|
b2fad172e5 | ||
|
|
9c7c87fd3b | ||
|
|
df3e007120 | ||
|
|
835d4db481 | ||
|
|
0c851d864e | ||
|
|
56d1b521c5 | ||
|
|
43bd798f2b | ||
|
|
885b36bb50 | ||
|
|
0ed46c3bae | ||
|
|
5fda8422c5 | ||
|
|
436a9a61b8 | ||
|
|
3c6d154a27 | ||
|
|
3c0c806780 | ||
|
|
b815601649 | ||
|
|
e33a905f55 | ||
|
|
499a068bb7 | ||
|
|
0d515803e4 | ||
|
|
01542647d4 | ||
|
|
9d026919ac | ||
|
|
e0996d67ca | ||
|
|
3f92984be2 | ||
|
|
7baa0e97fc | ||
|
|
dadbda98b7 | ||
|
|
641c8991f9 | ||
|
|
7abbbbfccf | ||
|
|
cb9a300811 | ||
|
|
c7c420e869 | ||
|
|
ed57a41d17 | ||
|
|
aa1f56b316 | ||
|
|
b1560388a6 | ||
|
|
4af8a5ec02 | ||
|
|
1bf6c1fd46 | ||
|
|
40834cc010 | ||
|
|
1ade973e56 | ||
|
|
188a480590 | ||
|
|
5f2271e4e0 | ||
|
|
f81e3ad358 | ||
|
|
e443d14519 | ||
|
|
70bf518a02 | ||
|
|
e7fa000fe0 | ||
|
|
b00ee4828f | ||
|
|
9dac6303bb | ||
|
|
9e3b2148ba | ||
|
|
04f536854c | ||
|
|
66422acea2 | ||
|
|
3efb1345e0 | ||
|
|
63653662e0 | ||
|
|
30df61e7a5 | ||
|
|
e15f7902dd | ||
|
|
0994f810d9 | ||
|
|
e5efec1361 | ||
|
|
f96f6d9e2e | ||
|
|
1745689317 | ||
|
|
e862f7186f | ||
|
|
b3f66faa37 | ||
|
|
0d839bdb2c | ||
|
|
7563e9aba1 | ||
|
|
e1ff3deaf0 | ||
|
|
56fc958939 | ||
|
|
43502e041a | ||
|
|
c294c3b342 | ||
|
|
6c5c8ceeee | ||
|
|
bc4e5371d7 | ||
|
|
c81424714d | ||
|
|
db1b70cccb | ||
|
|
5641e54192 | ||
|
|
232d1aae31 | ||
|
|
bb94c9c36b | ||
|
|
5bb2f2bb62 | ||
|
|
458d9ab8a2 | ||
|
|
ca3e0b59b0 | ||
|
|
27ad7e41c9 | ||
|
|
925b12ca22 | ||
|
|
80b308b9a6 | ||
|
|
f734d47bef | ||
|
|
ca332d23c0 | ||
|
|
f8fb5a1d9f | ||
|
|
4a9498e105 | ||
|
|
7161972cc3 | ||
|
|
ce743be779 | ||
|
|
6b3b44e2fc | ||
|
|
18c5354ec7 | ||
|
|
621ae9c91a | ||
|
|
63db2a539e | ||
|
|
2fd4bcde3f | ||
|
|
878e548296 | ||
|
|
27bab3330a | ||
|
|
7a3b4c08e0 | ||
|
|
5f2b341aa2 | ||
|
|
f7a3428bf8 | ||
|
|
326c531d7f | ||
|
|
4ee4707f71 | ||
|
|
47a7ab15be | ||
|
|
b65f456d70 | ||
|
|
16c6578bdb | ||
|
|
f380f4214a | ||
|
|
c4569d533d | ||
|
|
e775246bf9 | ||
|
|
e6d36af942 | ||
|
|
2871cf3fb2 | ||
|
|
486f5f9df6 | ||
|
|
b2087f94e2 | ||
|
|
a70f1b09e4 | ||
|
|
8026b3c7d8 | ||
|
|
c706638b5d | ||
|
|
89442c91c6 | ||
|
|
d27ec057c5 | ||
|
|
d249a46fae | ||
|
|
8e17f34de4 | ||
|
|
9369158ba0 | ||
|
|
fccfc5307b | ||
|
|
65bdeba385 | ||
|
|
a3a0ba9bc3 | ||
|
|
8d6d1c32e7 | ||
|
|
f0f31e077f | ||
|
|
474b074c8f | ||
|
|
a78eebe8be | ||
|
|
68cf6833b7 | ||
|
|
76793729d8 | ||
|
|
316d0fe1d7 | ||
|
|
2d5f687373 | ||
|
|
30ad24caa6 | ||
|
|
3947710a3d | ||
|
|
8b48a1e3af | ||
|
|
ed8d60b76b | ||
|
|
7c7b43d295 | ||
|
|
789418f987 | ||
|
|
41db2dcd14 | ||
|
|
0d044c34c1 | ||
|
|
f4803c21ac | ||
|
|
5ce72f4920 | ||
|
|
e0b4a35a25 | ||
|
|
c9b98306e0 | ||
|
|
30104b898c | ||
|
|
e528f52cfb | ||
|
|
77e956861a | ||
|
|
1a58ea6520 | ||
|
|
d95f5a9ae0 | ||
|
|
202789fa8d | ||
|
|
e340b9fffe | ||
|
|
7cdfe143ab | ||
|
|
4f2c7382c5 | ||
|
|
60b19a9d62 | ||
|
|
9dece4a1db | ||
|
|
4a18a041c9 | ||
|
|
25cb1f9284 | ||
|
|
d3af278123 | ||
|
|
36942125e6 | ||
|
|
9b84a887d3 | ||
|
|
815ea88fa5 | ||
|
|
765f15096b | ||
|
|
a1621145d5 | ||
|
|
f928b87997 | ||
|
|
08ec35820d | ||
|
|
2ea840e65d | ||
|
|
0fcd4dee58 | ||
|
|
11710987a4 | ||
|
|
fcbc02d48a | ||
|
|
203d4d052a | ||
|
|
c7b5cd48ba | ||
|
|
d39c2924e4 | ||
|
|
29fd89407c | ||
|
|
705111a1d9 | ||
|
|
f6d0ad9b0f | ||
|
|
4dbb1c08b6 | ||
|
|
fc28cbf887 | ||
|
|
06d547a6cb | ||
|
|
b268927cf9 | ||
|
|
7c9e76132d | ||
|
|
9754dc8be0 | ||
|
|
4ec43f662c | ||
|
|
6b950d0596 | ||
|
|
810d3be512 | ||
|
|
4c31535c4b | ||
|
|
6c0e07c384 | ||
|
|
38726243fe | ||
|
|
04ed79e587 | ||
|
|
c8e0eab34e | ||
|
|
7dde229517 | ||
|
|
ea91518f30 | ||
|
|
9e7af15bbc | ||
|
|
9d62709f7c | ||
|
|
a51b7257c7 | ||
|
|
8b5643fe90 | ||
|
|
e5bea19f56 | ||
|
|
649ef93768 | ||
|
|
e4431f62b2 | ||
|
|
358f6f61f7 | ||
|
|
d2dae2d62f | ||
|
|
0ebad0fe10 | ||
|
|
9edfcb0053 | ||
|
|
6acfec9d25 | ||
|
|
eee2aa8051 | ||
|
|
027f9e5a83 | ||
|
|
8b429a2e05 | ||
|
|
cc92d09498 | ||
|
|
8c0dfa1217 | ||
|
|
8fbb085718 | ||
|
|
f2c220988b | ||
|
|
b1478ad5da | ||
|
|
82f7ca5e0f | ||
|
|
bc056f0724 | ||
|
|
5d7ce0011a | ||
|
|
85e3cb9f0d | ||
|
|
87ffc2cff9 | ||
|
|
4ca6364dd4 | ||
|
|
10eb617c6d | ||
|
|
d05ef6ddbc | ||
|
|
5a4fa18e98 | ||
|
|
aeb7548a9d | ||
|
|
6417a55918 | ||
|
|
877b2d51fc | ||
|
|
0cc900bdcf | ||
|
|
8e38840768 | ||
|
|
0bbebbe4b1 | ||
|
|
a1b6019efe | ||
|
|
783bcb9bd6 | ||
|
|
5bc2e7dac2 | ||
|
|
41f5afa887 | ||
|
|
721ee09b19 | ||
|
|
5951079926 | ||
|
|
254fcff01f | ||
|
|
6c58bd9520 | ||
|
|
e9d9e14eb4 | ||
|
|
98c54c3ccb | ||
|
|
3ed3612047 | ||
|
|
909fe660a9 | ||
|
|
60a70e4e62 | ||
|
|
075611ca4b | ||
|
|
adbbbb3602 | ||
|
|
2e33f1d400 | ||
|
|
37fe438c63 | ||
|
|
5e39d8df33 | ||
|
|
3bd42c8b7a | ||
|
|
fffed29913 | ||
|
|
c2a5169625 | ||
|
|
f8aba4f4ef | ||
|
|
e06e1dccb6 | ||
|
|
b9dd994a56 | ||
|
|
10b9919a49 | ||
|
|
f8af900415 | ||
|
|
1d53365707 | ||
|
|
a740e8e98f | ||
|
|
61db112942 | ||
|
|
ec079afab1 | ||
|
|
855e43ea12 | ||
|
|
0c4ffafca3 | ||
|
|
15b54d6e43 | ||
|
|
51745568df | ||
|
|
901cb92941 | ||
|
|
567d171d2f | ||
|
|
e3899f9535 | ||
|
|
6439147586 | ||
|
|
8fcdae7f17 | ||
|
|
e45e204ba5 | ||
|
|
1df20465ed | ||
|
|
839dd72a05 | ||
|
|
56ed6d2112 | ||
|
|
5727658976 | ||
|
|
eba0f32913 | ||
|
|
d347e88361 | ||
|
|
54cbbe2844 | ||
|
|
f5b701553c | ||
|
|
8727c7be17 | ||
|
|
406126536a | ||
|
|
9fc97ce92d | ||
|
|
521c454dde | ||
|
|
e08f34e79d | ||
|
|
dcfb8010b7 | ||
|
|
b81646477f | ||
|
|
b83aa108f2 | ||
|
|
0f59046392 | ||
|
|
412c5360a6 | ||
|
|
82ac542f55 | ||
|
|
a3f167bfd2 | ||
|
|
89ea3b4cfe | ||
|
|
e529d18414 | ||
|
|
518aec6e76 | ||
|
|
ec7caea368 | ||
|
|
78c65aee05 | ||
|
|
2b7744f905 | ||
|
|
31da62ab2d | ||
|
|
e2196af8ab | ||
|
|
c7128bcc98 | ||
|
|
fd5f00459b | ||
|
|
868b2ff2b6 | ||
|
|
ec8fc8b97b | ||
|
|
203e69aa42 | ||
|
|
a73f34df4a | ||
|
|
c448c8cc8c | ||
|
|
32369f6191 | ||
|
|
f8f4a6e844 | ||
|
|
abf27954d3 | ||
|
|
64918dfcb4 | ||
|
|
d3dca842cb | ||
|
|
bab8e6a104 | ||
|
|
eda98a35ea | ||
|
|
e4199179f7 | ||
|
|
89333ab339 | ||
|
|
77df837906 | ||
|
|
f7f048f06a | ||
|
|
58169aa6d9 | ||
|
|
6e25724cfb | ||
|
|
e6c0794061 | ||
|
|
d3b2742da0 | ||
|
|
2f688136d1 | ||
|
|
b37bcc6dfe | ||
|
|
279bb62a3f | ||
|
|
dfe48fffb1 | ||
|
|
e9f82b7eee | ||
|
|
67b7ecf4df | ||
|
|
dd06e8d7d8 | ||
|
|
2f05ec7de0 | ||
|
|
4cb58d976b | ||
|
|
fd1b7bbd3a | ||
|
|
ec897be3e7 | ||
|
|
2878bf6cfe | ||
|
|
c63d5f4b7a | ||
|
|
f89741636c | ||
|
|
ca31ac882c | ||
|
|
5269c2eb9e | ||
|
|
076931d5b5 | ||
|
|
a626005570 | ||
|
|
8d313d2f16 | ||
|
|
7b604c0895 | ||
|
|
6d4b658579 | ||
|
|
9262c8b9f6 | ||
|
|
83f89e9537 | ||
|
|
31368ac974 | ||
|
|
5e3a990f2d | ||
|
|
7227dfd704 | ||
|
|
7282bbafb2 | ||
|
|
8234e4cc07 | ||
|
|
9d0b4f5841 | ||
|
|
940c33c426 | ||
|
|
abd3979fb3 | ||
|
|
eb733fdb6f | ||
|
|
8484c7c51a | ||
|
|
40763d2ae7 | ||
|
|
f1f199019d | ||
|
|
57a64870fd | ||
|
|
8e2483b2e6 | ||
|
|
9f4f858ff9 | ||
|
|
201c4b35da | ||
|
|
e8167a80a0 | ||
|
|
d342e01ef1 | ||
|
|
daf9999a29 | ||
|
|
2a80140e70 | ||
|
|
8d2f89a5e2 | ||
|
|
6454e89bac | ||
|
|
f0836f4107 | ||
|
|
724df69561 | ||
|
|
25a2e9b812 | ||
|
|
5d7b46935d | ||
|
|
6059165a54 | ||
|
|
0913dbbade | ||
|
|
3b5b87c14e | ||
|
|
49a173bdf0 | ||
|
|
ddd4680ea7 | ||
|
|
bc9d7f2922 | ||
|
|
5b56157403 | ||
|
|
f0ad2020df | ||
|
|
09e0d660cd | ||
|
|
28f569ea20 | ||
|
|
bd99124fb9 | ||
|
|
c0e6c306d0 | ||
|
|
3831cd0e71 | ||
|
|
da758c429a | ||
|
|
bbbb362125 | ||
|
|
d2e8d4d86e | ||
|
|
98a277af9e | ||
|
|
706527fa80 | ||
|
|
b56e862838 | ||
|
|
7890c59dc5 | ||
|
|
4f2ac340b2 | ||
|
|
53e0615df7 | ||
|
|
4d45a81fdb | ||
|
|
1ec1c5a366 | ||
|
|
33723f8b1b | ||
|
|
cda38d6ed6 | ||
|
|
fcc8093fa6 | ||
|
|
e47c375e69 | ||
|
|
4360069859 | ||
|
|
e71ef216f2 | ||
|
|
6d03f5c9e8 | ||
|
|
8a5b5936b7 | ||
|
|
cc384cc4d6 | ||
|
|
82fdc8646e | ||
|
|
3910f8bf28 | ||
|
|
87d74abfc9 | ||
|
|
52c295b28b | ||
|
|
e5dc408ef5 | ||
|
|
a5bf991cf0 | ||
|
|
d00f8a3d27 | ||
|
|
dc94fe2b6c | ||
|
|
f87f797bed | ||
|
|
5b821b2f24 | ||
|
|
42eadc72a4 | ||
|
|
3dd337bd34 | ||
|
|
289474edf7 | ||
|
|
63a6702285 | ||
|
|
23a6b33f64 | ||
|
|
3809b331bc | ||
|
|
c15a289d2a | ||
|
|
2a8437f08f | ||
|
|
5821a0758f | ||
|
|
00be1e07e3 | ||
|
|
ea9fccbf2a | ||
|
|
07572b188b | ||
|
|
f14c5f7e1c | ||
|
|
9915e31bc5 | ||
|
|
f7d7cc2610 | ||
|
|
607535b37e | ||
|
|
daaf61bc68 | ||
|
|
1102f40873 | ||
|
|
558e708576 | ||
|
|
e5343b7efc | ||
|
|
68cb1350f2 | ||
|
|
eed00fadde | ||
|
|
b777c448cf | ||
|
|
6bd3c54a03 | ||
|
|
3c9431b2fc | ||
|
|
f082270f25 | ||
|
|
9bf55c96d2 | ||
|
|
e421a2c7cd | ||
|
|
d9e0a495b0 | ||
|
|
80945eff7e | ||
|
|
a22300746c | ||
|
|
a19b25a3b3 | ||
|
|
d7cd936b54 | ||
|
|
9f2b849861 | ||
|
|
fa05971326 | ||
|
|
0fdaaadae5 | ||
|
|
e8644dac26 | ||
|
|
8cb18b1e48 | ||
|
|
c851b5a9b1 | ||
|
|
89ecda5163 | ||
|
|
ac1e0513fc | ||
|
|
8c79e11dae | ||
|
|
c40258a82c | ||
|
|
fa607132be | ||
|
|
bd17bff7d4 | ||
|
|
5b67cd841e | ||
|
|
cd1d287a46 | ||
|
|
0fadaf037a | ||
|
|
657fa8de73 | ||
|
|
44e8323efa | ||
|
|
c97c1ab4b9 | ||
|
|
8b21f1c8ab | ||
|
|
73a0908228 | ||
|
|
5140e5db8d | ||
|
|
27282a2877 | ||
|
|
4c67fffabc | ||
|
|
3ef54c3c01 | ||
|
|
01b012d89d | ||
|
|
2c2586b578 | ||
|
|
83663cf46b | ||
|
|
b07574d838 | ||
|
|
3cc3e2f306 | ||
|
|
332d4346ba | ||
|
|
a59b932020 | ||
|
|
cfd66e5dd4 | ||
|
|
f7f453f8cd | ||
|
|
046bcef800 | ||
|
|
7ed41a1f60 | ||
|
|
e0c7ef1451 | ||
|
|
6a32a0f399 | ||
|
|
a3bc5d2037 | ||
|
|
5173fd7138 | ||
|
|
72e9a6caa8 | ||
|
|
a2c6f58782 | ||
|
|
339619fc9d | ||
|
|
4a264cac52 | ||
|
|
01166b08c3 | ||
|
|
00f3084b8e | ||
|
|
0c8e0ca46f | ||
|
|
b0628c2df8 | ||
|
|
32ce785e5a | ||
|
|
26245133f3 | ||
|
|
241f5b0224 | ||
|
|
cb1e2c9fef | ||
|
|
c3541dbc95 | ||
|
|
f6d90782a8 | ||
|
|
c1b45bc0ea | ||
|
|
5020e864fc | ||
|
|
59d176fa7b | ||
|
|
a0c3ddc555 | ||
|
|
5a8babdde5 | ||
|
|
d545492b67 | ||
|
|
b1f835b053 | ||
|
|
b788e134d1 | ||
|
|
bc7729fbb3 | ||
|
|
2b57ef3d4b | ||
|
|
1b250b8f57 | ||
|
|
2ff59278c9 | ||
|
|
aa58302a27 | ||
|
|
e90f3bf7c8 | ||
|
|
1774cf0b15 | ||
|
|
be06162f0d | ||
|
|
33e4a2f1ec | ||
|
|
6c0efa09c0 | ||
|
|
d806cd134f | ||
|
|
4c2f628baa | ||
|
|
809ed255d1 | ||
|
|
f00589c8ba | ||
|
|
37d426dddb | ||
|
|
ec075ca608 | ||
|
|
73505e9bd0 | ||
|
|
afc690d67b | ||
|
|
a9f175a2bb | ||
|
|
a2e3179ea4 | ||
|
|
1ae0a8a1bf | ||
|
|
c3701bcea7 | ||
|
|
fbc0a11c87 | ||
|
|
e6701c5a1f | ||
|
|
d8c9ec0d40 | ||
|
|
77d154bb8b | ||
|
|
094cd6df32 | ||
|
|
8256d2b997 | ||
|
|
307204fc38 | ||
|
|
55262b399a | ||
|
|
6c77adfd3c | ||
|
|
431a7f3300 | ||
|
|
40008a9e85 | ||
|
|
6cea047518 | ||
|
|
3be5242aa1 | ||
|
|
9a24110a37 | ||
|
|
f1adddb775 | ||
|
|
3202a52a61 | ||
|
|
80116c3e30 | ||
|
|
ba9bba1dd8 | ||
|
|
58411a4764 | ||
|
|
7a4fc8e48b | ||
|
|
d754a6390e | ||
|
|
738c27bf04 | ||
|
|
ecad9d54ed | ||
|
|
6dacaf6bb5 | ||
|
|
0c903672d0 | ||
|
|
e2b535dfaf | ||
|
|
61cbb70691 | ||
|
|
29873f1c5c | ||
|
|
ade12116a1 | ||
|
|
ba7c873f07 | ||
|
|
948cd22e9c | ||
|
|
34bbe241ce | ||
|
|
9084ee2d7e | ||
|
|
89bf036262 | ||
|
|
cf6b32bce6 | ||
|
|
6c5395dd05 | ||
|
|
8d121e7724 | ||
|
|
d003515fd1 | ||
|
|
aa12ab9478 | ||
|
|
6771c3c74c | ||
|
|
d03a70cc25 | ||
|
|
7fe8180cf4 | ||
|
|
68930aaa5d | ||
|
|
8862fcba33 | ||
|
|
982400354a | ||
|
|
f8663bbfd0 | ||
|
|
b9875b42e9 | ||
|
|
e5c842d923 | ||
|
|
98158fb6f9 | ||
|
|
acc3c6a0a5 | ||
|
|
912de27c9d | ||
|
|
c94c1430b7 | ||
|
|
eb6754c5eb | ||
|
|
01c15b8884 | ||
|
|
242f66934c | ||
|
|
52aa7d27e8 | ||
|
|
9de0c0cdd4 | ||
|
|
ab2315f3de | ||
|
|
fdc8b67449 | ||
|
|
f408c76a98 | ||
|
|
3e3fff9fe8 | ||
|
|
03e39f7b9b | ||
|
|
13fa1f6b9a | ||
|
|
61b8fd2402 | ||
|
|
dee5d18439 | ||
|
|
66d6c49ed4 | ||
|
|
8262c38ac8 | ||
|
|
4984f2f449 | ||
|
|
14888a96cb | ||
|
|
55884220b4 | ||
|
|
ee377b160e | ||
|
|
d3ff6a9f47 | ||
|
|
44c6375d91 | ||
|
|
f63ecac8ee | ||
|
|
89f2520eba | ||
|
|
e6e755dd46 | ||
|
|
1d5e15eab4 | ||
|
|
8b81f3d835 | ||
|
|
53db052cca | ||
|
|
218ecce6c1 | ||
|
|
56d18666d6 | ||
|
|
dfabbb5fa2 | ||
|
|
cb7c318377 | ||
|
|
f5eaa08340 | ||
|
|
def57d2926 | ||
|
|
7a8d84c011 | ||
|
|
bb35950a5a | ||
|
|
61b1251a73 | ||
|
|
5a6457ec7c | ||
|
|
fe83adcbae | ||
|
|
fbbd405b00 | ||
|
|
b26bf9f22d | ||
|
|
2ba1363e12 | ||
|
|
aa38d6dda2 | ||
|
|
7e9095b21b | ||
|
|
f9581e435d | ||
|
|
949fcbbf11 | ||
|
|
fc23dea1d2 | ||
|
|
54c5034ce0 | ||
|
|
a7c3d193cc | ||
|
|
7fa61f03e2 | ||
|
|
332110b8e2 | ||
|
|
5fcbffe652 | ||
|
|
1998f102d6 | ||
|
|
8373f7359e | ||
|
|
09086f7d30 | ||
|
|
c844400ab9 | ||
|
|
5f54de3b37 | ||
|
|
e5115c0cf2 | ||
|
|
67b693cd3a | ||
|
|
cd26f5d06d | ||
|
|
91c02d4e29 | ||
|
|
46e0fad2d8 | ||
|
|
2cc6f0c507 | ||
|
|
4acf8cafee | ||
|
|
88aa427669 | ||
|
|
029ae11ed5 | ||
|
|
3ca11c1947 | ||
|
|
4145046e02 | ||
|
|
b1c37775c5 | ||
|
|
756d03fa62 | ||
|
|
7457b22427 | ||
|
|
9291ec64f9 | ||
|
|
82543bdeee | ||
|
|
d9bd7a400d | ||
|
|
4f53bd59be | ||
|
|
58094d2b3b | ||
|
|
94c1c2d547 | ||
|
|
ceb18fe73d | ||
|
|
767816e669 | ||
|
|
c1ce0a9e1d | ||
|
|
c3a51033a8 | ||
|
|
2bebac964e | ||
|
|
743cd20441 | ||
|
|
4ba6d44858 | ||
|
|
6c44de27ed | ||
|
|
4dad7de33f | ||
|
|
711dff1dd0 | ||
|
|
0e7c3be9d3 | ||
|
|
bdcf090aaa | ||
|
|
da305210e2 | ||
|
|
97c0b130ca | ||
|
|
350acde379 | ||
|
|
8eb45fc80a | ||
|
|
d09fcbaef0 | ||
|
|
145f7b3809 | ||
|
|
268981f6db | ||
|
|
957a0840b1 | ||
|
|
364ed641dd | ||
|
|
aa94dafac1 | ||
|
|
eb88d2fbd8 | ||
|
|
1337924afb | ||
|
|
6a69fcd4cd | ||
|
|
502e806f88 | ||
|
|
1ce0073cb6 | ||
|
|
a2f4cda715 | ||
|
|
dca143fd87 | ||
|
|
6607dfc4c9 | ||
|
|
8975a0962e | ||
|
|
d577371a51 | ||
|
|
0dca86f255 | ||
|
|
60efeb8561 | ||
|
|
31a44a9982 | ||
|
|
25b25319f1 | ||
|
|
3bcd8aefb0 | ||
|
|
540facaaab | ||
|
|
75657605ad | ||
|
|
fbcc7c4bc3 | ||
|
|
c305cd8220 | ||
|
|
0096d74cfa | ||
|
|
150d33eb92 | ||
|
|
df7c48c474 | ||
|
|
7bb9ea4b33 | ||
|
|
02c310ea03 | ||
|
|
276cd51836 | ||
|
|
0611b7e1ea | ||
|
|
8f6b577bad | ||
|
|
bd553eb05d | ||
|
|
fe1f4f84ec | ||
|
|
16c5c18165 | ||
|
|
25e9dca74e | ||
|
|
c3f0f52757 | ||
|
|
12619ba733 | ||
|
|
e3ba6716d1 | ||
|
|
16be6d3382 | ||
|
|
d152254bcb | ||
|
|
b2fc4d5dc4 | ||
|
|
c450992882 | ||
|
|
1029b6c2f3 | ||
|
|
d09a53197e | ||
|
|
09b26bc950 | ||
|
|
8cbb9aa310 | ||
|
|
0d84486187 | ||
|
|
429d7cbfa2 | ||
|
|
f4c587c530 | ||
|
|
0421b6ef06 | ||
|
|
cdd5847b39 | ||
|
|
5cebcfba7a | ||
|
|
cf986ad903 | ||
|
|
f99c3a310d | ||
|
|
a62a3647a0 | ||
|
|
5dfafff421 | ||
|
|
06b2a6ff68 | ||
|
|
013627860d | ||
|
|
e60ef6c9d1 | ||
|
|
2b9d1ee3dd | ||
|
|
d016a9f3b0 | ||
|
|
a583f9d77a | ||
|
|
3f31098144 | ||
|
|
3293436867 | ||
|
|
7d963e52cf | ||
|
|
d20628a8d4 | ||
|
|
8a581ed1dd | ||
|
|
0c5c0bf08a | ||
|
|
f3d1e96c24 | ||
|
|
749ce5f8e5 | ||
|
|
081462983a | ||
|
|
8241243f6b | ||
|
|
1142f7700f | ||
|
|
104393f5f7 | ||
|
|
a5029d148c | ||
|
|
fd62b537b7 | ||
|
|
a0e98d5957 | ||
|
|
2c86ca59e6 | ||
|
|
6a55cdfbaf | ||
|
|
57d6bb3b4c | ||
|
|
b40b87dd36 | ||
|
|
34c1d69ed3 | ||
|
|
47964e8ff4 | ||
|
|
0d9d9bf110 | ||
|
|
9bfb7585ee | ||
|
|
f16c37eeaf | ||
|
|
57d45518bd | ||
|
|
15e6c51541 | ||
|
|
b6125b1674 | ||
|
|
5e7bf7a272 | ||
|
|
6cd615ee45 | ||
|
|
c98720ee4c | ||
|
|
be92f07ab9 | ||
|
|
9b45109349 | ||
|
|
b1340b74c6 | ||
|
|
c351261165 | ||
|
|
1843d0364e | ||
|
|
7f6518e4a6 | ||
|
|
612acc41ba | ||
|
|
a63c679935 | ||
|
|
10928ed11b | ||
|
|
b41119a374 | ||
|
|
138a13f1b2 | ||
|
|
4d63a7c020 | ||
|
|
5cc728994b | ||
|
|
d96e4ec22a | ||
|
|
4d34241072 | ||
|
|
eff1256dfb | ||
|
|
957415463f | ||
|
|
a0926d5505 | ||
|
|
59da48dee5 | ||
|
|
df0e924714 | ||
|
|
904daf7776 | ||
|
|
feeeb83a43 | ||
|
|
f988959989 | ||
|
|
15b5c56612 | ||
|
|
b3a968e006 | ||
|
|
b62337b0b9 | ||
|
|
da0b2c84e6 | ||
|
|
4a7ec3ccc6 | ||
|
|
4f5918390a | ||
|
|
7639bff0fe | ||
|
|
f5ef3cf866 | ||
|
|
2512598917 | ||
|
|
66b6e12aa3 | ||
|
|
77a9c7c195 | ||
|
|
f3f3ca8e50 | ||
|
|
d1a1cada19 | ||
|
|
530bdbbd1a | ||
|
|
b54f2de504 | ||
|
|
6ebc048f1f | ||
|
|
6a2c35c263 | ||
|
|
4413c70d3c | ||
|
|
e16cfa396b | ||
|
|
8bc2d97352 | ||
|
|
60fecdbdf8 | ||
|
|
aabfeba38d | ||
|
|
5a3c056759 | ||
|
|
370a60c14f | ||
|
|
d47cd270df | ||
|
|
0dc0c39f48 | ||
|
|
ab69477b24 | ||
|
|
c06132e779 | ||
|
|
ddee93beab | ||
|
|
20a2262e43 | ||
|
|
90b1b13914 | ||
|
|
19814a619d | ||
|
|
535f30aa9e | ||
|
|
070215b05e | ||
|
|
4c927060d9 | ||
|
|
72f28b7b38 | ||
|
|
d895ca6827 | ||
|
|
77216acbcc | ||
|
|
5fb8817b3c | ||
|
|
d40646ac42 | ||
|
|
c8c7081f5d | ||
|
|
63f449d0ad | ||
|
|
afe29d3133 | ||
|
|
274523266f | ||
|
|
0d8dcbf734 | ||
|
|
be30dcc2d0 | ||
|
|
78a5843ae4 | ||
|
|
2917304f6c | ||
|
|
69ee2c1d07 | ||
|
|
d4779c8c0a | ||
|
|
093e499bf8 | ||
|
|
f8a03c4fca | ||
|
|
ea3d7d610a | ||
|
|
0741f00e4f | ||
|
|
b333653464 | ||
|
|
236fe91e95 | ||
|
|
6fe8d25166 | ||
|
|
02e0d4635b | ||
|
|
dfe8e8de70 | ||
|
|
ad723e2943 | ||
|
|
1186bff890 | ||
|
|
84e90cd73d | ||
|
|
a091757aa0 | ||
|
|
6b95b28db7 | ||
|
|
9e63b5f9a0 | ||
|
|
c98331de82 |
13
.gitattributes
vendored
Normal file
13
.gitattributes
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
# These files are text and should be normalized (convert crlf => lf)
|
||||
*.json text
|
||||
*.css text
|
||||
*.less text
|
||||
*.tpl text
|
||||
*.html text
|
||||
*.js text
|
||||
*.md text
|
||||
|
||||
# Images should be treated as binary
|
||||
# (binary is a macro for -text -diff)
|
||||
*.png binary
|
||||
*.jpg binary
|
||||
13
.gitignore
vendored
13
.gitignore
vendored
@@ -8,7 +8,6 @@ public/css/*.css
|
||||
*.sublime-project
|
||||
*.sublime-workspace
|
||||
.project
|
||||
.idea
|
||||
*.swp
|
||||
Vagrantfile
|
||||
.vagrant
|
||||
@@ -31,4 +30,14 @@ pidfile
|
||||
/public/stylesheet.css
|
||||
/public/admin.css
|
||||
/public/nodebb.min.js
|
||||
/public/nodebb.min.js.map
|
||||
/public/nodebb.min.js.map
|
||||
|
||||
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio
|
||||
*.iml
|
||||
|
||||
## Directory-based project format:
|
||||
.idea/
|
||||
|
||||
## File-based project format:
|
||||
*.ipr
|
||||
*.iws
|
||||
78
.tx/config
78
.tx/config
@@ -7,7 +7,9 @@ source_file = public/language/en_GB/category.json
|
||||
source_lang = en_GB
|
||||
trans.ar = public/language/ar/category.json
|
||||
trans.bn = public/language/bn/category.json
|
||||
trans.bg = public/language/bg/category.json
|
||||
trans.cs = public/language/cs/category.json
|
||||
trans.da = public/language/da/category.json
|
||||
trans.de = public/language/de/category.json
|
||||
trans.el = public/language/el/category.json
|
||||
trans.en_US = public/language/en_US/category.json
|
||||
@@ -33,6 +35,7 @@ trans.ru = public/language/ru/category.json
|
||||
trans.ro = public/language/ro/category.json
|
||||
trans.sc = public/language/sc/category.json
|
||||
trans.sk = public/language/sk/category.json
|
||||
trans.sr = public/language/sr/category.json
|
||||
trans.sv = public/language/sv/category.json
|
||||
trans.th = public/language/th/category.json
|
||||
trans.tr = public/language/tr/category.json
|
||||
@@ -47,7 +50,9 @@ source_file = public/language/en_GB/login.json
|
||||
source_lang = en_GB
|
||||
trans.ar = public/language/ar/login.json
|
||||
trans.bn = public/language/bn/login.json
|
||||
trans.bg = public/language/bg/login.json
|
||||
trans.cs = public/language/cs/login.json
|
||||
trans.da = public/language/da/login.json
|
||||
trans.de = public/language/de/login.json
|
||||
trans.el = public/language/el/login.json
|
||||
trans.en_US = public/language/en_US/login.json
|
||||
@@ -73,6 +78,7 @@ trans.ru = public/language/ru/login.json
|
||||
trans.ro = public/language/ro/login.json
|
||||
trans.sc = public/language/sc/login.json
|
||||
trans.sk = public/language/sk/login.json
|
||||
trans.sr = public/language/sr/login.json
|
||||
trans.sv = public/language/sv/login.json
|
||||
trans.th = public/language/th/login.json
|
||||
trans.tr = public/language/tr/login.json
|
||||
@@ -82,11 +88,14 @@ trans.zh_TW = public/language/zh_TW/login.json
|
||||
type = KEYVALUEJSON
|
||||
|
||||
[nodebb.recent]
|
||||
file_filter = public/language/<lang>/recent.json
|
||||
source_file = public/language/en_GB/recent.json
|
||||
source_lang = en_GB
|
||||
trans.ar = public/language/ar/recent.json
|
||||
trans.bn = public/language/bn/recent.json
|
||||
trans.bg = public/language/bg/recent.json
|
||||
trans.cs = public/language/cs/recent.json
|
||||
trans.da = public/language/da/recent.json
|
||||
trans.de = public/language/de/recent.json
|
||||
trans.el = public/language/el/recent.json
|
||||
trans.en_US = public/language/en_US/recent.json
|
||||
@@ -112,6 +121,7 @@ trans.ru = public/language/ru/recent.json
|
||||
trans.ro = public/language/ro/recent.json
|
||||
trans.sc = public/language/sc/recent.json
|
||||
trans.sk = public/language/sk/recent.json
|
||||
trans.sr = public/language/sr/recent.json
|
||||
trans.sv = public/language/sv/recent.json
|
||||
trans.th = public/language/th/recent.json
|
||||
trans.tr = public/language/tr/recent.json
|
||||
@@ -121,11 +131,14 @@ trans.zh_TW = public/language/zh_TW/recent.json
|
||||
type = KEYVALUEJSON
|
||||
|
||||
[nodebb.unread]
|
||||
file_filter = public/language/<lang>/unread.json
|
||||
source_file = public/language/en_GB/unread.json
|
||||
source_lang = en_GB
|
||||
trans.ar = public/language/ar/unread.json
|
||||
trans.bn = public/language/bn/unread.json
|
||||
trans.bg = public/language/bg/unread.json
|
||||
trans.cs = public/language/cs/unread.json
|
||||
trans.da = public/language/da/unread.json
|
||||
trans.de = public/language/de/unread.json
|
||||
trans.el = public/language/el/unread.json
|
||||
trans.en_US = public/language/en_US/unread.json
|
||||
@@ -151,6 +164,7 @@ trans.ru = public/language/ru/unread.json
|
||||
trans.ro = public/language/ro/unread.json
|
||||
trans.sc = public/language/sc/unread.json
|
||||
trans.sk = public/language/sk/unread.json
|
||||
trans.sr = public/language/sr/unread.json
|
||||
trans.sv = public/language/sv/unread.json
|
||||
trans.th = public/language/th/unread.json
|
||||
trans.tr = public/language/tr/unread.json
|
||||
@@ -160,11 +174,14 @@ trans.zh_TW = public/language/zh_TW/unread.json
|
||||
type = KEYVALUEJSON
|
||||
|
||||
[nodebb.modules]
|
||||
file_filter = public/language/<lang>/modules.json
|
||||
source_file = public/language/en_GB/modules.json
|
||||
source_lang = en_GB
|
||||
trans.ar = public/language/ar/modules.json
|
||||
trans.bn = public/language/bn/modules.json
|
||||
trans.bg = public/language/bg/modules.json
|
||||
trans.cs = public/language/cs/modules.json
|
||||
trans.da = public/language/da/modules.json
|
||||
trans.de = public/language/de/modules.json
|
||||
trans.el = public/language/el/modules.json
|
||||
trans.en_US = public/language/en_US/modules.json
|
||||
@@ -190,6 +207,7 @@ trans.ru = public/language/ru/modules.json
|
||||
trans.ro = public/language/ro/modules.json
|
||||
trans.sc = public/language/sc/modules.json
|
||||
trans.sk = public/language/sk/modules.json
|
||||
trans.sr = public/language/sr/modules.json
|
||||
trans.sv = public/language/sv/modules.json
|
||||
trans.th = public/language/th/modules.json
|
||||
trans.tr = public/language/tr/modules.json
|
||||
@@ -199,11 +217,14 @@ trans.zh_TW = public/language/zh_TW/modules.json
|
||||
type = KEYVALUEJSON
|
||||
|
||||
[nodebb.register]
|
||||
file_filter = public/language/<lang>/register.json
|
||||
source_file = public/language/en_GB/register.json
|
||||
source_lang = en_GB
|
||||
trans.ar = public/language/ar/register.json
|
||||
trans.bn = public/language/bn/register.json
|
||||
trans.bg = public/language/bg/register.json
|
||||
trans.cs = public/language/cs/register.json
|
||||
trans.da = public/language/da/register.json
|
||||
trans.de = public/language/de/register.json
|
||||
trans.el = public/language/el/register.json
|
||||
trans.en_US = public/language/en_US/register.json
|
||||
@@ -229,6 +250,7 @@ trans.ru = public/language/ru/register.json
|
||||
trans.ro = public/language/ro/register.json
|
||||
trans.sc = public/language/sc/register.json
|
||||
trans.sk = public/language/sk/register.json
|
||||
trans.sr = public/language/sr/register.json
|
||||
trans.sv = public/language/sv/register.json
|
||||
trans.th = public/language/th/register.json
|
||||
trans.tr = public/language/tr/register.json
|
||||
@@ -238,11 +260,14 @@ trans.zh_TW = public/language/zh_TW/register.json
|
||||
type = KEYVALUEJSON
|
||||
|
||||
[nodebb.user]
|
||||
file_filter = public/language/<lang>/user.json
|
||||
source_file = public/language/en_GB/user.json
|
||||
source_lang = en_GB
|
||||
trans.ar = public/language/ar/user.json
|
||||
trans.bn = public/language/bn/user.json
|
||||
trans.bg = public/language/bg/user.json
|
||||
trans.cs = public/language/cs/user.json
|
||||
trans.da = public/language/da/user.json
|
||||
trans.de = public/language/de/user.json
|
||||
trans.el = public/language/el/user.json
|
||||
trans.en_US = public/language/en_US/user.json
|
||||
@@ -268,6 +293,7 @@ trans.ru = public/language/ru/user.json
|
||||
trans.ro = public/language/ro/user.json
|
||||
trans.sc = public/language/sc/user.json
|
||||
trans.sk = public/language/sk/user.json
|
||||
trans.sr = public/language/sr/user.json
|
||||
trans.sv = public/language/sv/user.json
|
||||
trans.th = public/language/th/user.json
|
||||
trans.tr = public/language/tr/user.json
|
||||
@@ -277,11 +303,14 @@ trans.zh_TW = public/language/zh_TW/user.json
|
||||
type = KEYVALUEJSON
|
||||
|
||||
[nodebb.global]
|
||||
file_filter = public/language/<lang>/global.json
|
||||
source_file = public/language/en_GB/global.json
|
||||
source_lang = en_GB
|
||||
trans.ar = public/language/ar/global.json
|
||||
trans.bn = public/language/bn/global.json
|
||||
trans.bg = public/language/bg/global.json
|
||||
trans.cs = public/language/cs/global.json
|
||||
trans.da = public/language/da/global.json
|
||||
trans.de = public/language/de/global.json
|
||||
trans.el = public/language/el/global.json
|
||||
trans.en_US = public/language/en_US/global.json
|
||||
@@ -307,6 +336,7 @@ trans.ru = public/language/ru/global.json
|
||||
trans.ro = public/language/ro/global.json
|
||||
trans.sc = public/language/sc/global.json
|
||||
trans.sk = public/language/sk/global.json
|
||||
trans.sr = public/language/sr/global.json
|
||||
trans.sv = public/language/sv/global.json
|
||||
trans.th = public/language/th/global.json
|
||||
trans.tr = public/language/tr/global.json
|
||||
@@ -316,11 +346,14 @@ trans.zh_TW = public/language/zh_TW/global.json
|
||||
type = KEYVALUEJSON
|
||||
|
||||
[nodebb.notifications]
|
||||
file_filter = public/language/<lang>/notifications.json
|
||||
source_file = public/language/en_GB/notifications.json
|
||||
source_lang = en_GB
|
||||
trans.ar = public/language/ar/notifications.json
|
||||
trans.bn = public/language/bn/notifications.json
|
||||
trans.bg = public/language/bg/notifications.json
|
||||
trans.cs = public/language/cs/notifications.json
|
||||
trans.da = public/language/da/notifications.json
|
||||
trans.de = public/language/de/notifications.json
|
||||
trans.el = public/language/el/notifications.json
|
||||
trans.en_US = public/language/en_US/notifications.json
|
||||
@@ -346,6 +379,7 @@ trans.ru = public/language/ru/notifications.json
|
||||
trans.ro = public/language/ro/notifications.json
|
||||
trans.sc = public/language/sc/notifications.json
|
||||
trans.sk = public/language/sk/notifications.json
|
||||
trans.sr = public/language/sr/notifications.json
|
||||
trans.sv = public/language/sv/notifications.json
|
||||
trans.th = public/language/th/notifications.json
|
||||
trans.tr = public/language/tr/notifications.json
|
||||
@@ -355,11 +389,14 @@ trans.zh_TW = public/language/zh_TW/notifications.json
|
||||
type = KEYVALUEJSON
|
||||
|
||||
[nodebb.reset_password]
|
||||
file_filter = public/language/<lang>/reset_password.json
|
||||
source_file = public/language/en_GB/reset_password.json
|
||||
source_lang = en_GB
|
||||
trans.ar = public/language/ar/reset_password.json
|
||||
trans.bn = public/language/bn/reset_password.json
|
||||
trans.bg = public/language/bg/reset_password.json
|
||||
trans.cs = public/language/cs/reset_password.json
|
||||
trans.da = public/language/da/reset_password.json
|
||||
trans.de = public/language/de/reset_password.json
|
||||
trans.el = public/language/el/reset_password.json
|
||||
trans.en_US = public/language/en_US/reset_password.json
|
||||
@@ -385,6 +422,7 @@ trans.ru = public/language/ru/reset_password.json
|
||||
trans.ro = public/language/ro/reset_password.json
|
||||
trans.sc = public/language/sc/reset_password.json
|
||||
trans.sk = public/language/sk/reset_password.json
|
||||
trans.sr = public/language/sr/reset_password.json
|
||||
trans.sv = public/language/sv/reset_password.json
|
||||
trans.th = public/language/th/reset_password.json
|
||||
trans.tr = public/language/tr/reset_password.json
|
||||
@@ -394,11 +432,14 @@ trans.zh_TW = public/language/zh_TW/reset_password.json
|
||||
type = KEYVALUEJSON
|
||||
|
||||
[nodebb.users]
|
||||
file_filter = public/language/<lang>/users.json
|
||||
source_file = public/language/en_GB/users.json
|
||||
source_lang = en_GB
|
||||
trans.ar = public/language/ar/users.json
|
||||
trans.bn = public/language/bn/users.json
|
||||
trans.bg = public/language/bg/users.json
|
||||
trans.cs = public/language/cs/users.json
|
||||
trans.da = public/language/da/users.json
|
||||
trans.de = public/language/de/users.json
|
||||
trans.el = public/language/el/users.json
|
||||
trans.en_US = public/language/en_US/users.json
|
||||
@@ -424,6 +465,7 @@ trans.ru = public/language/ru/users.json
|
||||
trans.ro = public/language/ro/users.json
|
||||
trans.sc = public/language/sc/users.json
|
||||
trans.sk = public/language/sk/users.json
|
||||
trans.sr = public/language/sr/users.json
|
||||
trans.sv = public/language/sv/users.json
|
||||
trans.th = public/language/th/users.json
|
||||
trans.tr = public/language/tr/users.json
|
||||
@@ -433,11 +475,14 @@ trans.zh_TW = public/language/zh_TW/users.json
|
||||
type = KEYVALUEJSON
|
||||
|
||||
[nodebb.language]
|
||||
file_filter = public/language/<lang>/language.json
|
||||
source_file = public/language/en_GB/language.json
|
||||
source_lang = en_GB
|
||||
trans.ar = public/language/ar/language.json
|
||||
trans.bn = public/language/bn/language.json
|
||||
trans.bg = public/language/bg/language.json
|
||||
trans.cs = public/language/cs/language.json
|
||||
trans.da = public/language/da/language.json
|
||||
trans.de = public/language/de/language.json
|
||||
trans.el = public/language/el/language.json
|
||||
trans.en_US = public/language/en_US/language.json
|
||||
@@ -463,6 +508,7 @@ trans.ru = public/language/ru/language.json
|
||||
trans.ro = public/language/ro/language.json
|
||||
trans.sc = public/language/sc/language.json
|
||||
trans.sk = public/language/sk/language.json
|
||||
trans.sr = public/language/sr/language.json
|
||||
trans.sv = public/language/sv/language.json
|
||||
trans.th = public/language/th/language.json
|
||||
trans.tr = public/language/tr/language.json
|
||||
@@ -472,11 +518,14 @@ trans.zh_TW = public/language/zh_TW/language.json
|
||||
type = KEYVALUEJSON
|
||||
|
||||
[nodebb.pages]
|
||||
file_filter = public/language/<lang>/pages.json
|
||||
source_file = public/language/en_GB/pages.json
|
||||
source_lang = en_GB
|
||||
trans.ar = public/language/ar/pages.json
|
||||
trans.bn = public/language/bn/pages.json
|
||||
trans.bg = public/language/bg/pages.json
|
||||
trans.cs = public/language/cs/pages.json
|
||||
trans.da = public/language/da/pages.json
|
||||
trans.de = public/language/de/pages.json
|
||||
trans.el = public/language/el/pages.json
|
||||
trans.en_US = public/language/en_US/pages.json
|
||||
@@ -502,6 +551,7 @@ trans.ru = public/language/ru/pages.json
|
||||
trans.ro = public/language/ro/pages.json
|
||||
trans.sc = public/language/sc/pages.json
|
||||
trans.sk = public/language/sk/pages.json
|
||||
trans.sr = public/language/sr/pages.json
|
||||
trans.sv = public/language/sv/pages.json
|
||||
trans.th = public/language/th/pages.json
|
||||
trans.tr = public/language/tr/pages.json
|
||||
@@ -511,11 +561,14 @@ trans.zh_TW = public/language/zh_TW/pages.json
|
||||
type = KEYVALUEJSON
|
||||
|
||||
[nodebb.topic]
|
||||
file_filter = public/language/<lang>/topic.json
|
||||
source_file = public/language/en_GB/topic.json
|
||||
source_lang = en_GB
|
||||
trans.ar = public/language/ar/topic.json
|
||||
trans.bn = public/language/bn/topic.json
|
||||
trans.bg = public/language/bg/topic.json
|
||||
trans.cs = public/language/cs/topic.json
|
||||
trans.da = public/language/da/topic.json
|
||||
trans.de = public/language/de/topic.json
|
||||
trans.el = public/language/el/topic.json
|
||||
trans.en_US = public/language/en_US/topic.json
|
||||
@@ -541,6 +594,7 @@ trans.ru = public/language/ru/topic.json
|
||||
trans.ro = public/language/ro/topic.json
|
||||
trans.sc = public/language/sc/topic.json
|
||||
trans.sk = public/language/sk/topic.json
|
||||
trans.sr = public/language/sr/topic.json
|
||||
trans.sv = public/language/sv/topic.json
|
||||
trans.th = public/language/th/topic.json
|
||||
trans.tr = public/language/tr/topic.json
|
||||
@@ -550,11 +604,14 @@ trans.zh_TW = public/language/zh_TW/topic.json
|
||||
type = KEYVALUEJSON
|
||||
|
||||
[nodebb.success]
|
||||
file_filter = public/language/<lang>/success.json
|
||||
source_file = public/language/en_GB/success.json
|
||||
source_lang = en_GB
|
||||
trans.ar = public/language/ar/success.json
|
||||
trans.bn = public/language/bn/success.json
|
||||
trans.bg = public/language/bg/success.json
|
||||
trans.cs = public/language/cs/success.json
|
||||
trans.da = public/language/da/success.json
|
||||
trans.de = public/language/de/success.json
|
||||
trans.el = public/language/el/success.json
|
||||
trans.en_US = public/language/en_US/success.json
|
||||
@@ -580,6 +637,7 @@ trans.ru = public/language/ru/success.json
|
||||
trans.ro = public/language/ro/success.json
|
||||
trans.sc = public/language/sc/success.json
|
||||
trans.sk = public/language/sk/success.json
|
||||
trans.sr = public/language/sr/success.json
|
||||
trans.sv = public/language/sv/success.json
|
||||
trans.th = public/language/th/success.json
|
||||
trans.tr = public/language/tr/success.json
|
||||
@@ -589,11 +647,14 @@ trans.zh_TW = public/language/zh_TW/success.json
|
||||
type = KEYVALUEJSON
|
||||
|
||||
[nodebb.error]
|
||||
file_filter = public/language/<lang>/error.json
|
||||
source_file = public/language/en_GB/error.json
|
||||
source_lang = en_GB
|
||||
trans.ar = public/language/ar/error.json
|
||||
trans.bn = public/language/bn/error.json
|
||||
trans.bg = public/language/bg/error.json
|
||||
trans.cs = public/language/cs/error.json
|
||||
trans.da = public/language/da/error.json
|
||||
trans.de = public/language/de/error.json
|
||||
trans.el = public/language/el/error.json
|
||||
trans.en_US = public/language/en_US/error.json
|
||||
@@ -619,6 +680,7 @@ trans.ru = public/language/ru/error.json
|
||||
trans.ro = public/language/ro/error.json
|
||||
trans.sc = public/language/sc/error.json
|
||||
trans.sk = public/language/sk/error.json
|
||||
trans.sr = public/language/sr/error.json
|
||||
trans.sv = public/language/sv/error.json
|
||||
trans.th = public/language/th/error.json
|
||||
trans.tr = public/language/tr/error.json
|
||||
@@ -628,11 +690,14 @@ trans.zh_TW = public/language/zh_TW/error.json
|
||||
type = KEYVALUEJSON
|
||||
|
||||
[nodebb.tags]
|
||||
file_filter = public/language/<lang>/tags.json
|
||||
source_file = public/language/en_GB/tags.json
|
||||
source_lang = en_GB
|
||||
trans.ar = public/language/ar/tags.json
|
||||
trans.bn = public/language/bn/tags.json
|
||||
trans.bg = public/language/bg/tags.json
|
||||
trans.cs = public/language/cs/tags.json
|
||||
trans.da = public/language/da/tags.json
|
||||
trans.de = public/language/de/tags.json
|
||||
trans.el = public/language/el/tags.json
|
||||
trans.en_US = public/language/en_US/tags.json
|
||||
@@ -658,6 +723,7 @@ trans.ru = public/language/ru/tags.json
|
||||
trans.ro = public/language/ro/tags.json
|
||||
trans.sc = public/language/sc/tags.json
|
||||
trans.sk = public/language/sk/tags.json
|
||||
trans.sr = public/language/sr/tags.json
|
||||
trans.sv = public/language/sv/tags.json
|
||||
trans.th = public/language/th/tags.json
|
||||
trans.tr = public/language/tr/tags.json
|
||||
@@ -667,11 +733,14 @@ trans.zh_TW = public/language/zh_TW/tags.json
|
||||
type = KEYVALUEJSON
|
||||
|
||||
[nodebb.email]
|
||||
file_filter = public/language/<lang>/email.json
|
||||
source_file = public/language/en_GB/email.json
|
||||
source_lang = en_GB
|
||||
trans.ar = public/language/ar/email.json
|
||||
trans.bn = public/language/bn/email.json
|
||||
trans.bg = public/language/bg/email.json
|
||||
trans.cs = public/language/cs/email.json
|
||||
trans.da = public/language/da/email.json
|
||||
trans.de = public/language/de/email.json
|
||||
trans.el = public/language/el/email.json
|
||||
trans.en_US = public/language/en_US/email.json
|
||||
@@ -697,6 +766,7 @@ trans.ru = public/language/ru/email.json
|
||||
trans.ro = public/language/ro/email.json
|
||||
trans.sc = public/language/sc/email.json
|
||||
trans.sk = public/language/sk/email.json
|
||||
trans.sr = public/language/sr/email.json
|
||||
trans.sv = public/language/sv/email.json
|
||||
trans.th = public/language/th/email.json
|
||||
trans.tr = public/language/tr/email.json
|
||||
@@ -706,11 +776,14 @@ trans.zh_TW = public/language/zh_TW/email.json
|
||||
type = KEYVALUEJSON
|
||||
|
||||
[nodebb.search]
|
||||
file_filter = public/language/<lang>/search.json
|
||||
source_file = public/language/en_GB/search.json
|
||||
source_lang = en_GB
|
||||
trans.ar = public/language/ar/search.json
|
||||
trans.bn = public/language/bn/search.json
|
||||
trans.bg = public/language/bg/search.json
|
||||
trans.cs = public/language/cs/search.json
|
||||
trans.da = public/language/da/search.json
|
||||
trans.de = public/language/de/search.json
|
||||
trans.el = public/language/el/search.json
|
||||
trans.en_US = public/language/en_US/search.json
|
||||
@@ -736,6 +809,7 @@ trans.ru = public/language/ru/search.json
|
||||
trans.ro = public/language/ro/search.json
|
||||
trans.sc = public/language/sc/search.json
|
||||
trans.sk = public/language/sk/search.json
|
||||
trans.sr = public/language/sr/search.json
|
||||
trans.sv = public/language/sv/search.json
|
||||
trans.th = public/language/th/search.json
|
||||
trans.tr = public/language/tr/search.json
|
||||
@@ -745,11 +819,14 @@ trans.zh_TW = public/language/zh_TW/search.json
|
||||
type = KEYVALUEJSON
|
||||
|
||||
[nodebb.groups]
|
||||
file_filter = public/language/<lang>/groups.json
|
||||
source_file = public/language/en_GB/groups.json
|
||||
source_lang = en_GB
|
||||
trans.ar = public/language/ar/groups.json
|
||||
trans.bn = public/language/bn/groups.json
|
||||
trans.bg = public/language/bg/groups.json
|
||||
trans.cs = public/language/cs/groups.json
|
||||
trans.da = public/language/da/groups.json
|
||||
trans.de = public/language/de/groups.json
|
||||
trans.el = public/language/el/groups.json
|
||||
trans.en_US = public/language/en_US/groups.json
|
||||
@@ -775,6 +852,7 @@ trans.ru = public/language/ru/groups.json
|
||||
trans.ro = public/language/ro/groups.json
|
||||
trans.sc = public/language/sc/groups.json
|
||||
trans.sk = public/language/sk/groups.json
|
||||
trans.sr = public/language/sr/groups.json
|
||||
trans.sv = public/language/sv/groups.json
|
||||
trans.th = public/language/th/groups.json
|
||||
trans.tr = public/language/tr/groups.json
|
||||
|
||||
@@ -13,6 +13,11 @@ If you are writing contributions as part of employment from another company / in
|
||||
|
||||
Chances are somebody has run into this problem before. After consulting our [documentation](https://docs.nodebb.org/en/latest/installing/os.html), please head over to our [community support forum](https://community.nodebb.org) for advice.
|
||||
|
||||
# Found a Security Vulnerability?
|
||||
|
||||
If you believe you have identified a security vulnerability with NodeBB, report it as soon as possible via email to **security@nodebb.org**.
|
||||
A member of the NodeBB security team will respond to the issue.
|
||||
Please do not post it to the public bug tracker.
|
||||
|
||||
# Issues & Bugs
|
||||
|
||||
@@ -20,11 +25,6 @@ Thanks for reporting an issue with NodeBB! Please follow these guidelines in ord
|
||||
|
||||
In general, if we can't reproduce it, we can't fix it!
|
||||
|
||||
> #### **Important**
|
||||
> If you believe you have identified a security vulnerability with NodeBB, report it as soon as possible via email to **security@nodebb.org**.
|
||||
> A member of the NodeBB security team will respond to the issue.
|
||||
> Please do not post it to the public bug tracker.
|
||||
|
||||
## Try the latest version of NodeBB
|
||||
|
||||
There is a chance that the issue you are experiencing may have already been fixed.
|
||||
@@ -50,6 +50,15 @@ $ git rev-parse HEAD
|
||||
|
||||
If you have downloaded the `.zip` or `.tar.gz` packages from GitHub (or elsewhere), please let us know.
|
||||
|
||||
## Provide theme versions if issue is related to the theme/display
|
||||
|
||||
``` bash
|
||||
$ npm ls nodebb-theme-vanilla nodebb-theme-lavender
|
||||
nodebb@0.7.0-dev /home/julian/Projects/nodebb/forum
|
||||
├── nodebb-theme-lavender@0.2.13
|
||||
└── nodebb-theme-vanilla@0.2.35
|
||||
```
|
||||
|
||||
## Attempt to use `git bisect`
|
||||
|
||||
If you have installed NodeBB via GitHub clone, are familiar with utilising git, and are willing to help us narrow down the specific commit that causes a bug, consider running `git bisect`.
|
||||
|
||||
78
Gruntfile.js
Normal file
78
Gruntfile.js
Normal file
@@ -0,0 +1,78 @@
|
||||
"use strict";
|
||||
|
||||
var fork = require('child_process').fork,
|
||||
env = process.env,
|
||||
worker,
|
||||
incomplete = [];
|
||||
|
||||
|
||||
module.exports = function(grunt) {
|
||||
function update(action, filepath, target) {
|
||||
var args = [],
|
||||
fromFile = '',
|
||||
compiling = '',
|
||||
time = Date.now();
|
||||
|
||||
if (!grunt.option('verbose')) {
|
||||
args.push('--log-level=info');
|
||||
}
|
||||
|
||||
if (target === 'lessUpdated') {
|
||||
fromFile = ['js','tpl'];
|
||||
compiling = 'less';
|
||||
} else if (target === 'clientUpdated') {
|
||||
fromFile = ['less','tpl'];
|
||||
compiling = 'js';
|
||||
} else if (target === 'templatesUpdated') {
|
||||
fromFile = ['js','less'];
|
||||
compiling = 'tpl';
|
||||
} else if (target === 'serverUpdated') {
|
||||
fromFile = ['less','js','tpl'];
|
||||
}
|
||||
|
||||
fromFile = fromFile.filter(function(ext) {
|
||||
return incomplete.indexOf(ext) === -1;
|
||||
});
|
||||
|
||||
args.push('--from-file=' + fromFile.join(','));
|
||||
incomplete.push(compiling);
|
||||
|
||||
worker.kill();
|
||||
worker = fork('app.js', args, { env: env });
|
||||
|
||||
worker.on('message', function() {
|
||||
if (incomplete.length) {
|
||||
incomplete = [];
|
||||
|
||||
if (grunt.option('verbose')) {
|
||||
grunt.log.writeln('NodeBB restarted in ' + (Date.now() - time) + ' ms');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
grunt.initConfig({
|
||||
watch: {
|
||||
lessUpdated: {
|
||||
files: ['public/**/*.less', 'node_modules/nodebb-*/*.less', 'node_modules/nodebb-*/*/*.less', 'node_modules/nodebb-*/*/*/*.less', 'node_modules/nodebb-*/*/*/*/*.less']
|
||||
},
|
||||
clientUpdated: {
|
||||
files: ['public/src/**/*.js', 'node_modules/nodebb-*/*.js', 'node_modules/nodebb-*/*/*.js', 'node_modules/nodebb-*/*/*/*.js', 'node_modules/nodebb-*/*/*/*/*.js', 'node_modules/templates.js/lib/templates.js']
|
||||
},
|
||||
serverUpdated: {
|
||||
files: ['*.js', 'install/*.js', 'src/**/*.js']
|
||||
},
|
||||
templatesUpdated: {
|
||||
files: ['src/views/**/*.tpl', 'node_modules/nodebb-*/*.tpl', 'node_modules/nodebb-*/*/*.tpl', 'node_modules/nodebb-*/*/*/*.tpl', 'node_modules/nodebb-*/*/*/*/*.tpl', 'node_modules/nodebb-*/*/*/*/*/*.tpl']
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
grunt.loadNpmTasks('grunt-contrib-watch');
|
||||
grunt.registerTask('default', ['watch']);
|
||||
|
||||
env.NODE_ENV = 'development';
|
||||
|
||||
worker = fork('app.js', [], { env: env });
|
||||
grunt.event.on('watch', update);
|
||||
};
|
||||
143
README.md
143
README.md
@@ -1,68 +1,75 @@
|
||||
# <img alt="NodeBB" src="http://i.imgur.com/mYxPPtB.png" />
|
||||
|
||||
[](https://gitter.im/NodeBB/NodeBB?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||
[](https://travis-ci.org/NodeBB/NodeBB)
|
||||
[](https://david-dm.org/nodebb/nodebb)
|
||||
[](https://codeclimate.com/github/NodeBB/NodeBB)
|
||||
[](https://readthedocs.org/projects/nodebb/?badge=latest)
|
||||
|
||||
**NodeBB Forum Software** is powered by Node.js and built on either a Redis or MongoDB database. It utilizes web sockets for instant interactions and real-time notifications. NodeBB is compatible down to IE8 and has many modern features out of the box such as social network integration and streaming discussions.
|
||||
|
||||
Additional functionality is enabled through the use of third-party plugins.
|
||||
|
||||
* [Get NodeBB](http://www.nodebb.org/ "NodeBB")
|
||||
* [Demo & Meta Discussion](http://community.nodebb.org)
|
||||
* [NodeBB Blog](http://blog.nodebb.org)
|
||||
* [Documentation & Installation Instructions](http://docs.nodebb.org)
|
||||
* [Join us on IRC](https://kiwiirc.com/client/irc.freenode.net/nodebb) - #nodebb on Freenode
|
||||
* [Follow us on Twitter](http://www.twitter.com/NodeBB/ "NodeBB Twitter")
|
||||
* [Like us on Facebook](http://www.facebook.com/NodeBB/ "NodeBB Facebook")
|
||||
* [Get Plugins](http://community.nodebb.org/category/7/nodebb-plugins "NodeBB Plugins")
|
||||
* [Get Themes](http://community.nodebb.org/category/10/nodebb-themes "NodeBB Themes")
|
||||
* [Help translate NodeBB](https://www.transifex.com/projects/p/nodebb/)
|
||||
|
||||
## Screenshots
|
||||
|
||||
[<img src="http://i.imgur.com/FLOUuIqb.png" />](http://i.imgur.com/FLOUuIq.png) [<img src="http://i.imgur.com/Ud1LrfIb.png" />](http://i.imgur.com/Ud1LrfI.png) [<img src="http://i.imgur.com/ZC8W39ab.png" />](http://i.imgur.com/ZC8W39a.png) [<img src="http://i.imgur.com/o90kVPib.png" />](http://i.imgur.com/o90kVPi.png) [<img src="http://i.imgur.com/AaRRrU2b.png" />](http://i.imgur.com/AaRRrU2.png) [<img src="http://i.imgur.com/LmHtPhob.png" />](http://i.imgur.com/LmHtPho.png) [<img src="http://i.imgur.com/paiJPJkb.jpg" />](http://i.imgur.com/paiJPJk.jpg) [<img src="http://i.imgur.com/ZfavPHDb.png" />](http://i.imgur.com/ZfavPHD.png) [<img src="http://i.imgur.com/8OLssij.png" />](http://i.imgur.com/8OLssij.png) [<img src="http://i.imgur.com/JKOc0LZ.png"/>](http://i.imgur.com/JKOc0LZ.png)
|
||||
|
||||
Credit: [Convoe](http://www.convoe.com), [Kano](http://www.kano.me), [Manchester United Forum](http://manutdforums.com/).
|
||||
|
||||
|
||||
## How can I follow along/contribute?
|
||||
|
||||
* Our feature roadmap is hosted on the project wiki's [Version History / Roadmap](https://github.com/NodeBB/NodeBB/wiki/Version-History-%26-Roadmap)
|
||||
* If you are a developer, feel free to check out the source and submit pull requests. We also have a wide array of [plugins](http://community.nodebb.org/category/7/nodebb-plugins) which would be a great starting point for learning the codebase.
|
||||
* If you are a designer, [NodeBB needs themes](http://community.nodebb.org/category/10/nodebb-themes)! NodeBB's theming system allows extention of the base templates as well as styling via LESS or CSS. NodeBB's base theme utilizes [Bootstrap 3](http://getbootstrap.com/) but themes can choose to use a different framework altogether.
|
||||
* If you know languages other than English you can help us translate NodeBB. We use [Transifex](https://www.transifex.com/projects/p/nodebb/) for internationalization.
|
||||
* Please don't forget to **like**, **follow**, and **star our repo**! Join our growing [community](http://community.nodebb.org) to keep up to date with the latest NodeBB development.
|
||||
|
||||
## Requirements
|
||||
|
||||
NodeBB requires the following software to be installed:
|
||||
|
||||
* A version of Node.js at least 0.10 or greater
|
||||
* Redis, version 2.6 or greater **or** MongoDB, version 2.6 or greater
|
||||
* nginx, version 1.3.13 or greater (**only if** intending to use nginx to proxy requests to a NodeBB)
|
||||
|
||||
## Installation
|
||||
|
||||
[Please refer to platform-specific installation documentation](http://docs.nodebb.org/en/latest/installing/os.html)
|
||||
|
||||
## Securing NodeBB
|
||||
|
||||
It is important to ensure that your NodeBB and database servers are secured. Bear these points in mind:
|
||||
|
||||
1. While some distributions set up Redis with a more restrictive configuration, Redis by default listens to all interfaces, which is especially dangerous when a server is open to the public. Some suggestions:
|
||||
* Set `bind_address` to `127.0.0.1` so as to restrict access to the local machine only
|
||||
* Use `requirepass` to secure Redis behind a password (preferably a long one)
|
||||
* Familiarise yourself with [Redis Security](http://redis.io/topics/security)
|
||||
2. Use `iptables` to secure your server from unintended open ports. In Ubuntu, `ufw` provides a friendlier interface to working with `iptables`.
|
||||
* e.g. If your NodeBB is proxied, no ports should be open except 80 (and possibly 22, for SSH access)
|
||||
|
||||
## Upgrading NodeBB
|
||||
|
||||
Detailed upgrade instructions are listed in [Upgrading NodeBB](https://docs.nodebb.org/en/latest/upgrading/index.html)
|
||||
|
||||
## License
|
||||
|
||||
NodeBB is licensed under the **GNU General Public License v3 (GPL-3)** (http://www.gnu.org/copyleft/gpl.html)
|
||||
# <img alt="NodeBB" src="http://i.imgur.com/mYxPPtB.png" />
|
||||
|
||||
[](https://gitter.im/NodeBB/NodeBB?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||
[](https://travis-ci.org/NodeBB/NodeBB)
|
||||
[](https://david-dm.org/nodebb/nodebb)
|
||||
[](https://codeclimate.com/github/NodeBB/NodeBB)
|
||||
[](https://readthedocs.org/projects/nodebb/?badge=latest)
|
||||
|
||||
**NodeBB Forum Software** is powered by Node.js and built on either a Redis or MongoDB database. It utilizes web sockets for instant interactions and real-time notifications. NodeBB is compatible down to IE8 and has many modern features out of the box such as social network integration and streaming discussions.
|
||||
|
||||
Additional functionality is enabled through the use of third-party plugins.
|
||||
|
||||
* [Get NodeBB](http://www.nodebb.org/ "NodeBB")
|
||||
* [Demo & Meta Discussion](http://community.nodebb.org)
|
||||
* [Documentation & Installation Instructions](http://docs.nodebb.org)
|
||||
* [Help translate NodeBB](https://www.transifex.com/projects/p/nodebb/)
|
||||
* [NodeBB Blog](http://blog.nodebb.org)
|
||||
* [Join us on IRC](https://kiwiirc.com/client/irc.freenode.net/nodebb) - #nodebb on Freenode
|
||||
* [Follow us on Twitter](http://www.twitter.com/NodeBB/ "NodeBB Twitter")
|
||||
* [Like us on Facebook](http://www.facebook.com/NodeBB/ "NodeBB Facebook")
|
||||
|
||||
## Screenshots
|
||||
|
||||
[](http://i.imgur.com/VCoOFyq.png)
|
||||
[](http://i.imgur.com/FLOUuIq.png)
|
||||
[](http://i.imgur.com/Ud1LrfI.png)
|
||||
[](http://i.imgur.com/h6yZ66s.png)
|
||||
[](http://i.imgur.com/o90kVPi.png)
|
||||
[](http://i.imgur.com/AaRRrU2.png)
|
||||
[](http://i.imgur.com/LmHtPho.png)
|
||||
[](http://i.imgur.com/paiJPJk.jpg)
|
||||
|
||||
[](http://i.imgur.com/8OLssij.png)
|
||||
[](http://i.imgur.com/JKOc0LZ.png)
|
||||
|
||||
## How can I follow along/contribute?
|
||||
|
||||
* Our feature roadmap is hosted on the project wiki's [Version History / Roadmap](https://github.com/NodeBB/NodeBB/wiki/Version-History-%26-Roadmap)
|
||||
* If you are a developer, feel free to check out the source and submit pull requests. We also have a wide array of [plugins](http://community.nodebb.org/category/7/nodebb-plugins) which would be a great starting point for learning the codebase.
|
||||
* If you are a designer, [NodeBB needs themes](http://community.nodebb.org/category/10/nodebb-themes)! NodeBB's theming system allows extention of the base templates as well as styling via LESS or CSS. NodeBB's base theme utilizes [Bootstrap 3](http://getbootstrap.com/) but themes can choose to use a different framework altogether.
|
||||
* If you know languages other than English you can help us translate NodeBB. We use [Transifex](https://www.transifex.com/projects/p/nodebb/) for internationalization.
|
||||
* Please don't forget to **like**, **follow**, and **star our repo**! Join our growing [community](http://community.nodebb.org) to keep up to date with the latest NodeBB development.
|
||||
|
||||
## Requirements
|
||||
|
||||
NodeBB requires the following software to be installed:
|
||||
|
||||
* A version of Node.js at least 0.10 or greater
|
||||
* Redis, version 2.8.9 or greater **or** MongoDB, version 2.6 or greater
|
||||
* nginx, version 1.3.13 or greater (**only if** intending to use nginx to proxy requests to a NodeBB)
|
||||
|
||||
## Installation
|
||||
|
||||
[Please refer to platform-specific installation documentation](http://docs.nodebb.org/en/latest/installing/os.html)
|
||||
|
||||
## Securing NodeBB
|
||||
|
||||
It is important to ensure that your NodeBB and database servers are secured. Bear these points in mind:
|
||||
|
||||
1. While some distributions set up Redis with a more restrictive configuration, Redis by default listens to all interfaces, which is especially dangerous when a server is open to the public. Some suggestions:
|
||||
* Set `bind_address` to `127.0.0.1` so as to restrict access to the local machine only
|
||||
* Use `requirepass` to secure Redis behind a password (preferably a long one)
|
||||
* Familiarise yourself with [Redis Security](http://redis.io/topics/security)
|
||||
2. Use `iptables` to secure your server from unintended open ports. In Ubuntu, `ufw` provides a friendlier interface to working with `iptables`.
|
||||
* e.g. If your NodeBB is proxied, no ports should be open except 80 (and possibly 22, for SSH access)
|
||||
|
||||
## Upgrading NodeBB
|
||||
|
||||
Detailed upgrade instructions are listed in [Upgrading NodeBB](https://docs.nodebb.org/en/latest/upgrading/index.html)
|
||||
|
||||
## License
|
||||
|
||||
NodeBB is licensed under the **GNU General Public License v3 (GPL-3)** (http://www.gnu.org/copyleft/gpl.html).
|
||||
|
||||
Interested in a sublicense agreement for use of NodeBB in a non-free/restrictive environment? Contact us at sales@nodebb.org.
|
||||
797
app.js
797
app.js
@@ -1,381 +1,416 @@
|
||||
/*
|
||||
NodeBB - A better forum platform for the modern web
|
||||
https://github.com/NodeBB/NodeBB/
|
||||
Copyright (C) 2013-2014 NodeBB Inc.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
/*global require, global, process*/
|
||||
|
||||
var nconf = require('nconf');
|
||||
nconf.argv().env();
|
||||
|
||||
var fs = require('fs'),
|
||||
os = require('os'),
|
||||
url = require('url'),
|
||||
async = require('async'),
|
||||
semver = require('semver'),
|
||||
winston = require('winston'),
|
||||
path = require('path'),
|
||||
pkg = require('./package.json'),
|
||||
utils = require('./public/src/utils.js');
|
||||
|
||||
|
||||
global.env = process.env.NODE_ENV || 'production';
|
||||
|
||||
winston.remove(winston.transports.Console);
|
||||
winston.add(winston.transports.Console, {
|
||||
colorize: true,
|
||||
timestamp: function() {
|
||||
var date = new Date();
|
||||
return date.getDate() + '/' + (date.getMonth() + 1) + ' ' + date.toTimeString().substr(0,5) + ' [' + global.process.pid + ']';
|
||||
},
|
||||
level: global.env === 'production' ? 'info' : 'verbose'
|
||||
});
|
||||
|
||||
if(os.platform() === 'linux') {
|
||||
require('child_process').exec('/usr/bin/which convert', function(err, stdout, stderr) {
|
||||
if(err || !stdout) {
|
||||
winston.warn('Couldn\'t find convert. Did you install imagemagick?');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (!process.send) {
|
||||
// If run using `node app`, log GNU copyright info along with server info
|
||||
winston.info('NodeBB v' + pkg.version + ' Copyright (C) 2013-2014 NodeBB Inc.');
|
||||
winston.info('This program comes with ABSOLUTELY NO WARRANTY.');
|
||||
winston.info('This is free software, and you are welcome to redistribute it under certain conditions.');
|
||||
winston.info('');
|
||||
}
|
||||
|
||||
// Alternate configuration file support
|
||||
var configFile = path.join(__dirname, '/config.json'),
|
||||
configExists;
|
||||
|
||||
if (nconf.get('config')) {
|
||||
configFile = path.resolve(__dirname, nconf.get('config'));
|
||||
}
|
||||
configExists = fs.existsSync(configFile);
|
||||
|
||||
if (!nconf.get('setup') && !nconf.get('install') && !nconf.get('upgrade') && !nconf.get('reset') && configExists) {
|
||||
start();
|
||||
} else if (nconf.get('setup') || nconf.get('install') || !configExists) {
|
||||
setup();
|
||||
} else if (nconf.get('upgrade')) {
|
||||
upgrade();
|
||||
} else if (nconf.get('reset')) {
|
||||
reset();
|
||||
}
|
||||
|
||||
function loadConfig() {
|
||||
nconf.file({
|
||||
file: configFile
|
||||
});
|
||||
|
||||
nconf.defaults({
|
||||
base_dir: __dirname,
|
||||
themes_path: path.join(__dirname, 'node_modules'),
|
||||
views_dir: path.join(__dirname, 'public/templates')
|
||||
});
|
||||
|
||||
if (!nconf.get('isCluster')) {
|
||||
nconf.set('isPrimary', 'true');
|
||||
nconf.set('isCluster', 'false');
|
||||
}
|
||||
|
||||
// Ensure themes_path is a full filepath
|
||||
nconf.set('themes_path', path.resolve(__dirname, nconf.get('themes_path')));
|
||||
nconf.set('core_templates_path', path.join(__dirname, 'src/views'));
|
||||
nconf.set('base_templates_path', path.join(nconf.get('themes_path'), 'nodebb-theme-vanilla/templates'));
|
||||
}
|
||||
|
||||
function start() {
|
||||
loadConfig();
|
||||
|
||||
// nconf defaults, if not set in config
|
||||
if (!nconf.get('upload_path')) {
|
||||
nconf.set('upload_path', '/public/uploads');
|
||||
}
|
||||
// Parse out the relative_url and other goodies from the configured URL
|
||||
var urlObject = url.parse(nconf.get('url'));
|
||||
var relativePath = urlObject.pathname !== '/' ? urlObject.pathname : '';
|
||||
nconf.set('use_port', !!urlObject.port);
|
||||
nconf.set('relative_path', relativePath);
|
||||
nconf.set('port', urlObject.port || nconf.get('port') || nconf.get('PORT') || 4567);
|
||||
nconf.set('upload_url', relativePath + '/uploads/');
|
||||
|
||||
if (nconf.get('isPrimary') === 'true') {
|
||||
winston.info('Time: %s', (new Date()).toString());
|
||||
winston.info('Initializing NodeBB v%s', pkg.version);
|
||||
winston.verbose('* using configuration stored in: %s', configFile);
|
||||
|
||||
var host = nconf.get(nconf.get('database') + ':host'),
|
||||
storeLocation = host ? 'at ' + host + (host.indexOf('/') === -1 ? ':' + nconf.get(nconf.get('database') + ':port') : '') : '';
|
||||
|
||||
winston.verbose('* using %s store %s', nconf.get('database'), storeLocation);
|
||||
winston.verbose('* using themes stored in: %s', nconf.get('themes_path'));
|
||||
}
|
||||
|
||||
|
||||
var webserver = require('./src/webserver');
|
||||
|
||||
require('./src/database').init(function(err) {
|
||||
if (err) {
|
||||
winston.error(err.stack);
|
||||
process.exit();
|
||||
}
|
||||
var meta = require('./src/meta');
|
||||
meta.configs.init(function () {
|
||||
var templates = require('templates.js'),
|
||||
sockets = require('./src/socket.io'),
|
||||
plugins = require('./src/plugins'),
|
||||
upgrade = require('./src/upgrade');
|
||||
|
||||
templates.setGlobal('relative_path', nconf.get('relative_path'));
|
||||
|
||||
upgrade.check(function(schema_ok) {
|
||||
if (schema_ok || nconf.get('check-schema') === false) {
|
||||
webserver.init();
|
||||
sockets.init(webserver.server);
|
||||
|
||||
if (nconf.get('isPrimary') === 'true' && !nconf.get('jobsDisabled')) {
|
||||
require('./src/notifications').init();
|
||||
require('./src/user').startJobs();
|
||||
}
|
||||
|
||||
async.waterfall([
|
||||
async.apply(meta.themes.setupPaths),
|
||||
async.apply(plugins.ready),
|
||||
async.apply(meta.templates.compile),
|
||||
async.apply(webserver.listen)
|
||||
], function(err) {
|
||||
if (err) {
|
||||
winston.error(err.stack);
|
||||
process.exit();
|
||||
}
|
||||
|
||||
if (process.send) {
|
||||
process.send({
|
||||
action: 'ready'
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
process.on('SIGTERM', shutdown);
|
||||
process.on('SIGINT', shutdown);
|
||||
process.on('SIGHUP', restart);
|
||||
process.on('message', function(message) {
|
||||
switch(message.action) {
|
||||
case 'reload':
|
||||
meta.reload();
|
||||
break;
|
||||
case 'js-propagate':
|
||||
meta.js.cache = message.cache;
|
||||
meta.js.map = message.map;
|
||||
meta.js.hash = message.hash;
|
||||
winston.verbose('[cluster] Client-side javascript and mapping propagated to worker %s', process.pid);
|
||||
break;
|
||||
case 'css-propagate':
|
||||
meta.css.cache = message.cache;
|
||||
meta.css.acpCache = message.acpCache;
|
||||
meta.css.hash = message.hash;
|
||||
winston.verbose('[cluster] Stylesheets propagated to worker %s', process.pid);
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
process.on('uncaughtException', function(err) {
|
||||
winston.error(err.stack);
|
||||
console.log(err.stack);
|
||||
|
||||
meta.js.killMinifier();
|
||||
shutdown(1);
|
||||
});
|
||||
} else {
|
||||
winston.warn('Your NodeBB schema is out-of-date. Please run the following command to bring your dataset up to spec:');
|
||||
winston.warn(' ./nodebb upgrade');
|
||||
process.exit();
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function setup() {
|
||||
loadConfig();
|
||||
|
||||
if (nconf.get('setup')) {
|
||||
winston.info('NodeBB Setup Triggered via Command Line');
|
||||
} else {
|
||||
winston.warn('Configuration not found, starting NodeBB setup');
|
||||
}
|
||||
|
||||
var install = require('./src/install');
|
||||
|
||||
winston.info('Welcome to NodeBB!');
|
||||
winston.info('This looks like a new installation, so you\'ll have to answer a few questions about your environment before we can proceed.');
|
||||
winston.info('Press enter to accept the default setting (shown in brackets).');
|
||||
|
||||
install.setup(function (err) {
|
||||
if (err) {
|
||||
winston.error('There was a problem completing NodeBB setup: ', err.message);
|
||||
} else {
|
||||
winston.info('NodeBB Setup Completed. Run \'./nodebb start\' to manually start your NodeBB server.');
|
||||
}
|
||||
|
||||
process.exit();
|
||||
});
|
||||
}
|
||||
|
||||
function upgrade() {
|
||||
loadConfig();
|
||||
|
||||
require('./src/database').init(function(err) {
|
||||
if (err) {
|
||||
winston.error(err.stack);
|
||||
process.exit();
|
||||
}
|
||||
require('./src/meta').configs.init(function () {
|
||||
require('./src/upgrade').upgrade();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function reset() {
|
||||
loadConfig();
|
||||
|
||||
require('./src/database').init(function(err) {
|
||||
if (err) {
|
||||
winston.error(err.message);
|
||||
process.exit();
|
||||
}
|
||||
|
||||
if (nconf.get('theme')) {
|
||||
resetThemes();
|
||||
} else if (nconf.get('plugin')) {
|
||||
resetPlugin(nconf.get('plugin'));
|
||||
} else if (nconf.get('plugins')) {
|
||||
resetPlugins();
|
||||
} else if (nconf.get('widgets')) {
|
||||
resetWidgets();
|
||||
} else if (nconf.get('settings')) {
|
||||
resetSettings();
|
||||
} else if (nconf.get('all')) {
|
||||
require('async').series([resetWidgets, resetThemes, resetPlugins, resetSettings], function(err) {
|
||||
if (!err) {
|
||||
winston.info('[reset] Reset complete.');
|
||||
} else {
|
||||
winston.error('[reset] Errors were encountered while resetting your forum settings: %s', err.message);
|
||||
}
|
||||
process.exit();
|
||||
});
|
||||
} else {
|
||||
winston.warn('[reset] Nothing reset.');
|
||||
winston.info('Use ./nodebb reset {theme|plugins|widgets|settings|all}');
|
||||
winston.info(' or');
|
||||
winston.info('Use ./nodebb reset plugin="nodebb-plugin-pluginName"');
|
||||
process.exit();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function resetSettings(callback) {
|
||||
var meta = require('./src/meta');
|
||||
meta.configs.set('allowLocalLogin', 1, function(err) {
|
||||
winston.info('[reset] Settings reset to default');
|
||||
if (typeof callback === 'function') {
|
||||
callback(err);
|
||||
} else {
|
||||
process.exit();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function resetThemes(callback) {
|
||||
var meta = require('./src/meta');
|
||||
|
||||
meta.themes.set({
|
||||
type: 'local',
|
||||
id: 'nodebb-theme-vanilla'
|
||||
}, function(err) {
|
||||
winston.info('[reset] Theme reset to Vanilla');
|
||||
if (typeof callback === 'function') {
|
||||
callback(err);
|
||||
} else {
|
||||
process.exit();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function resetPlugin(pluginId) {
|
||||
var db = require('./src/database');
|
||||
db.setRemove('plugins:active', pluginId, function(err) {
|
||||
if (err) {
|
||||
winston.error('[reset] Could not disable plugin: %s encountered error %s', pluginId, err.message);
|
||||
} else {
|
||||
winston.info('[reset] Plugin `%s` disabled', pluginId);
|
||||
}
|
||||
|
||||
process.exit();
|
||||
});
|
||||
}
|
||||
|
||||
function resetPlugins(callback) {
|
||||
var db = require('./src/database');
|
||||
db.delete('plugins:active', function(err) {
|
||||
winston.info('[reset] All Plugins De-activated');
|
||||
if (typeof callback === 'function') {
|
||||
callback(err);
|
||||
} else {
|
||||
process.exit();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function resetWidgets(callback) {
|
||||
require('./src/widgets').reset(function(err) {
|
||||
winston.info('[reset] All Widgets moved to Draft Zone');
|
||||
if (typeof callback === 'function') {
|
||||
callback(err);
|
||||
} else {
|
||||
process.exit();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function shutdown(code) {
|
||||
winston.info('[app] Shutdown (SIGTERM/SIGINT) Initialised.');
|
||||
require('./src/database').close();
|
||||
winston.info('[app] Database connection closed.');
|
||||
require('./src/webserver').server.close();
|
||||
winston.info('[app] Web server closed to connections.');
|
||||
|
||||
winston.info('[app] Shutdown complete.');
|
||||
process.exit(code || 0);
|
||||
}
|
||||
|
||||
function restart() {
|
||||
if (process.send) {
|
||||
winston.info('[app] Restarting...');
|
||||
process.send({
|
||||
action: 'restart'
|
||||
});
|
||||
} else {
|
||||
winston.error('[app] Could not restart server. Shutting down.');
|
||||
shutdown(1);
|
||||
}
|
||||
}
|
||||
/*
|
||||
NodeBB - A better forum platform for the modern web
|
||||
https://github.com/NodeBB/NodeBB/
|
||||
Copyright (C) 2013-2014 NodeBB Inc.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
/*global require, global, process*/
|
||||
|
||||
var nconf = require('nconf');
|
||||
nconf.argv().env('__');
|
||||
|
||||
var fs = require('fs'),
|
||||
os = require('os'),
|
||||
url = require('url'),
|
||||
async = require('async'),
|
||||
semver = require('semver'),
|
||||
winston = require('winston'),
|
||||
colors = require('colors'),
|
||||
path = require('path'),
|
||||
pkg = require('./package.json'),
|
||||
utils = require('./public/src/utils.js');
|
||||
|
||||
global.env = process.env.NODE_ENV || 'production';
|
||||
|
||||
winston.remove(winston.transports.Console);
|
||||
winston.add(winston.transports.Console, {
|
||||
colorize: true,
|
||||
timestamp: function() {
|
||||
var date = new Date();
|
||||
return date.getDate() + '/' + (date.getMonth() + 1) + ' ' + date.toTimeString().substr(0,5) + ' [' + global.process.pid + ']';
|
||||
},
|
||||
level: nconf.get('log-level') || (global.env === 'production' ? 'info' : 'verbose')
|
||||
});
|
||||
|
||||
if(os.platform() === 'linux') {
|
||||
require('child_process').exec('/usr/bin/which convert', function(err, stdout, stderr) {
|
||||
if(err || !stdout) {
|
||||
winston.warn('Couldn\'t find convert. Did you install imagemagick?');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Alternate configuration file support
|
||||
var configFile = path.join(__dirname, '/config.json'),
|
||||
configExists;
|
||||
|
||||
if (nconf.get('config')) {
|
||||
configFile = path.resolve(__dirname, nconf.get('config'));
|
||||
}
|
||||
configExists = fs.existsSync(configFile);
|
||||
|
||||
if (!nconf.get('setup') && !nconf.get('install') && !nconf.get('upgrade') && !nconf.get('reset') && configExists) {
|
||||
start();
|
||||
} else if (nconf.get('setup') || nconf.get('install')) {
|
||||
setup();
|
||||
} else if (!configExists) {
|
||||
require('./install/web').install(nconf.get('port'));
|
||||
} else if (nconf.get('upgrade')) {
|
||||
upgrade();
|
||||
} else if (nconf.get('reset')) {
|
||||
reset();
|
||||
}
|
||||
|
||||
function loadConfig() {
|
||||
nconf.file({
|
||||
file: configFile
|
||||
});
|
||||
|
||||
nconf.defaults({
|
||||
base_dir: __dirname,
|
||||
themes_path: path.join(__dirname, 'node_modules'),
|
||||
views_dir: path.join(__dirname, 'public/templates'),
|
||||
version: pkg.version
|
||||
});
|
||||
|
||||
if (!nconf.get('isCluster')) {
|
||||
nconf.set('isPrimary', 'true');
|
||||
nconf.set('isCluster', 'false');
|
||||
}
|
||||
|
||||
// Ensure themes_path is a full filepath
|
||||
nconf.set('themes_path', path.resolve(__dirname, nconf.get('themes_path')));
|
||||
nconf.set('core_templates_path', path.join(__dirname, 'src/views'));
|
||||
nconf.set('base_templates_path', path.join(nconf.get('themes_path'), 'nodebb-theme-vanilla/templates'));
|
||||
|
||||
if (!process.send) {
|
||||
// If run using `node app`, log GNU copyright info along with server info
|
||||
winston.info('NodeBB v' + nconf.get('version') + ' Copyright (C) 2013-2014 NodeBB Inc.');
|
||||
winston.info('This program comes with ABSOLUTELY NO WARRANTY.');
|
||||
winston.info('This is free software, and you are welcome to redistribute it under certain conditions.');
|
||||
winston.info('');
|
||||
}
|
||||
}
|
||||
|
||||
function start() {
|
||||
loadConfig();
|
||||
var db = require('./src/database');
|
||||
|
||||
// nconf defaults, if not set in config
|
||||
if (!nconf.get('upload_path')) {
|
||||
nconf.set('upload_path', '/public/uploads');
|
||||
}
|
||||
// Parse out the relative_url and other goodies from the configured URL
|
||||
var urlObject = url.parse(nconf.get('url'));
|
||||
var relativePath = urlObject.pathname !== '/' ? urlObject.pathname : '';
|
||||
nconf.set('base_url', urlObject.protocol + '//' + urlObject.host);
|
||||
nconf.set('use_port', !!urlObject.port);
|
||||
nconf.set('relative_path', relativePath);
|
||||
nconf.set('port', urlObject.port || nconf.get('port') || nconf.get('PORT') || 4567);
|
||||
nconf.set('upload_url', '/uploads/');
|
||||
|
||||
if (nconf.get('isPrimary') === 'true') {
|
||||
winston.info('Time: %s', (new Date()).toString());
|
||||
winston.info('Initializing NodeBB v%s', nconf.get('version'));
|
||||
winston.verbose('* using configuration stored in: %s', configFile);
|
||||
|
||||
var host = nconf.get(nconf.get('database') + ':host'),
|
||||
storeLocation = host ? 'at ' + host + (host.indexOf('/') === -1 ? ':' + nconf.get(nconf.get('database') + ':port') : '') : '';
|
||||
|
||||
winston.verbose('* using %s store %s', nconf.get('database'), storeLocation);
|
||||
winston.verbose('* using themes stored in: %s', nconf.get('themes_path'));
|
||||
}
|
||||
|
||||
process.on('SIGTERM', shutdown);
|
||||
process.on('SIGINT', shutdown);
|
||||
process.on('SIGHUP', restart);
|
||||
process.on('message', function(message) {
|
||||
if (typeof message !== 'object') {
|
||||
return;
|
||||
}
|
||||
var meta = require('./src/meta');
|
||||
var emitter = require('./src/emitter');
|
||||
switch (message.action) {
|
||||
case 'reload':
|
||||
meta.reload();
|
||||
break;
|
||||
case 'js-propagate':
|
||||
meta.js.cache = message.cache;
|
||||
meta.js.map = message.map;
|
||||
meta.js.hash = message.hash;
|
||||
emitter.emit('meta:js.compiled');
|
||||
winston.verbose('[cluster] Client-side javascript and mapping propagated to worker %s', process.pid);
|
||||
break;
|
||||
case 'css-propagate':
|
||||
meta.css.cache = message.cache;
|
||||
meta.css.acpCache = message.acpCache;
|
||||
meta.css.hash = message.hash;
|
||||
emitter.emit('meta:css.compiled');
|
||||
winston.verbose('[cluster] Stylesheets propagated to worker %s', process.pid);
|
||||
break;
|
||||
case 'templates:compiled':
|
||||
emitter.emit('templates:compiled');
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
process.on('uncaughtException', function(err) {
|
||||
winston.error(err.stack);
|
||||
console.log(err.stack);
|
||||
|
||||
require('./src/meta').js.killMinifier();
|
||||
shutdown(1);
|
||||
});
|
||||
|
||||
async.waterfall([
|
||||
async.apply(db.init),
|
||||
async.apply(db.checkCompatibility),
|
||||
function(next) {
|
||||
require('./src/meta').configs.init(next);
|
||||
},
|
||||
function(next) {
|
||||
require('./src/meta').dependencies.check(next);
|
||||
},
|
||||
function(next) {
|
||||
require('./src/upgrade').check(next);
|
||||
},
|
||||
function(next) {
|
||||
var webserver = require('./src/webserver');
|
||||
require('./src/socket.io').init(webserver.server);
|
||||
|
||||
if (nconf.get('isPrimary') === 'true' && !nconf.get('jobsDisabled')) {
|
||||
require('./src/notifications').init();
|
||||
require('./src/user').startJobs();
|
||||
}
|
||||
|
||||
webserver.listen();
|
||||
}
|
||||
], function(err) {
|
||||
if (err) {
|
||||
switch(err.message) {
|
||||
case 'schema-out-of-date':
|
||||
winston.warn('Your NodeBB schema is out-of-date. Please run the following command to bring your dataset up to spec:');
|
||||
winston.warn(' ./nodebb upgrade');
|
||||
break;
|
||||
case 'dependencies-out-of-date':
|
||||
winston.warn('One or more of NodeBB\'s dependent packages are out-of-date. Please run the following command to update them:');
|
||||
winston.warn(' ./nodebb upgrade');
|
||||
break;
|
||||
default:
|
||||
if (err.stacktrace !== false) {
|
||||
winston.error(err.stack);
|
||||
} else {
|
||||
winston.error(err.message);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
// Either way, bad stuff happened. Abort start.
|
||||
process.exit();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function setup() {
|
||||
loadConfig();
|
||||
|
||||
winston.info('NodeBB Setup Triggered via Command Line');
|
||||
|
||||
var install = require('./src/install');
|
||||
|
||||
process.stdout.write('\nWelcome to NodeBB!\n');
|
||||
process.stdout.write('\nThis looks like a new installation, so you\'ll have to answer a few questions about your environment before we can proceed.\n');
|
||||
process.stdout.write('Press enter to accept the default setting (shown in brackets).\n');
|
||||
|
||||
install.setup(function (err, data) {
|
||||
var separator = ' ';
|
||||
if (process.stdout.columns > 10) {
|
||||
for(var x=0,cols=process.stdout.columns-10;x<cols;x++) {
|
||||
separator += '=';
|
||||
}
|
||||
}
|
||||
process.stdout.write('\n' + separator + '\n\n');
|
||||
|
||||
if (err) {
|
||||
winston.error('There was a problem completing NodeBB setup: ', err.message);
|
||||
} else {
|
||||
if (data.hasOwnProperty('password')) {
|
||||
process.stdout.write('An administrative user was automatically created for you:\n');
|
||||
process.stdout.write(' Username: ' + data.username + '\n');
|
||||
process.stdout.write(' Password: ' + data.password + '\n');
|
||||
process.stdout.write('\n');
|
||||
}
|
||||
process.stdout.write('NodeBB Setup Completed. Run \'./nodebb start\' to manually start your NodeBB server.\n');
|
||||
|
||||
// If I am a child process, notify the parent of the returned data before exiting (useful for notifying
|
||||
// hosts of auto-generated username/password during headless setups)
|
||||
if (process.send) {
|
||||
process.send(data);
|
||||
}
|
||||
}
|
||||
|
||||
process.exit();
|
||||
});
|
||||
}
|
||||
|
||||
function upgrade() {
|
||||
loadConfig();
|
||||
|
||||
require('./src/database').init(function(err) {
|
||||
if (err) {
|
||||
winston.error(err.stack);
|
||||
process.exit();
|
||||
}
|
||||
require('./src/meta').configs.init(function () {
|
||||
require('./src/upgrade').upgrade();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function reset() {
|
||||
loadConfig();
|
||||
|
||||
require('./src/database').init(function(err) {
|
||||
if (err) {
|
||||
winston.error(err.message);
|
||||
process.exit();
|
||||
}
|
||||
|
||||
if (nconf.get('t')) {
|
||||
resetThemes();
|
||||
} else if (nconf.get('p')) {
|
||||
if (nconf.get('p') === true) {
|
||||
resetPlugins();
|
||||
} else {
|
||||
resetPlugin(nconf.get('p'));
|
||||
}
|
||||
} else if (nconf.get('w')) {
|
||||
resetWidgets();
|
||||
} else if (nconf.get('s')) {
|
||||
resetSettings();
|
||||
} else if (nconf.get('a')) {
|
||||
require('async').series([resetWidgets, resetThemes, resetPlugins, resetSettings], function(err) {
|
||||
if (!err) {
|
||||
winston.info('[reset] Reset complete.');
|
||||
} else {
|
||||
winston.error('[reset] Errors were encountered while resetting your forum settings: %s', err.message);
|
||||
}
|
||||
process.exit();
|
||||
});
|
||||
} else {
|
||||
process.stdout.write('\nNodeBB Reset\n'.bold);
|
||||
process.stdout.write('No arguments passed in, so nothing was reset.\n\n'.yellow);
|
||||
process.stdout.write('Use ./nodebb reset ' + '{-t|-p|-w|-s|-a}\n'.red);
|
||||
process.stdout.write(' -t\tthemes\n');
|
||||
process.stdout.write(' -p\tplugins\n');
|
||||
process.stdout.write(' -w\twidgets\n');
|
||||
process.stdout.write(' -s\tsettings\n');
|
||||
process.stdout.write(' -a\tall of the above\n');
|
||||
|
||||
process.stdout.write('\nPlugin reset flag (-p) can take a single argument\n');
|
||||
process.stdout.write(' e.g. ./nodebb reset -p nodebb-plugin-mentions\n');
|
||||
process.exit();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function resetSettings(callback) {
|
||||
var meta = require('./src/meta');
|
||||
meta.configs.set('allowLocalLogin', 1, function(err) {
|
||||
winston.info('[reset] Settings reset to default');
|
||||
if (typeof callback === 'function') {
|
||||
callback(err);
|
||||
} else {
|
||||
process.exit();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function resetThemes(callback) {
|
||||
var meta = require('./src/meta');
|
||||
|
||||
meta.themes.set({
|
||||
type: 'local',
|
||||
id: 'nodebb-theme-vanilla'
|
||||
}, function(err) {
|
||||
winston.info('[reset] Theme reset to Vanilla');
|
||||
if (typeof callback === 'function') {
|
||||
callback(err);
|
||||
} else {
|
||||
process.exit();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function resetPlugin(pluginId) {
|
||||
var db = require('./src/database');
|
||||
db.sortedSetRemove('plugins:active', pluginId, function(err) {
|
||||
if (err) {
|
||||
winston.error('[reset] Could not disable plugin: %s encountered error %s', pluginId, err.message);
|
||||
} else {
|
||||
winston.info('[reset] Plugin `%s` disabled', pluginId);
|
||||
}
|
||||
|
||||
process.exit();
|
||||
});
|
||||
}
|
||||
|
||||
function resetPlugins(callback) {
|
||||
var db = require('./src/database');
|
||||
db.delete('plugins:active', function(err) {
|
||||
winston.info('[reset] All Plugins De-activated');
|
||||
if (typeof callback === 'function') {
|
||||
callback(err);
|
||||
} else {
|
||||
process.exit();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function resetWidgets(callback) {
|
||||
require('./src/widgets').reset(function(err) {
|
||||
winston.info('[reset] All Widgets moved to Draft Zone');
|
||||
if (typeof callback === 'function') {
|
||||
callback(err);
|
||||
} else {
|
||||
process.exit();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function shutdown(code) {
|
||||
winston.info('[app] Shutdown (SIGTERM/SIGINT) Initialised.');
|
||||
require('./src/database').close();
|
||||
winston.info('[app] Database connection closed.');
|
||||
require('./src/webserver').server.close();
|
||||
winston.info('[app] Web server closed to connections.');
|
||||
|
||||
winston.info('[app] Shutdown complete.');
|
||||
process.exit(code || 0);
|
||||
}
|
||||
|
||||
function restart() {
|
||||
if (process.send) {
|
||||
winston.info('[app] Restarting...');
|
||||
process.send({
|
||||
action: 'restart'
|
||||
});
|
||||
} else {
|
||||
winston.error('[app] Could not restart server. Shutting down.');
|
||||
shutdown(1);
|
||||
}
|
||||
}
|
||||
|
||||
27
bcrypt.js
27
bcrypt.js
@@ -9,7 +9,7 @@ process.on('message', function(msg) {
|
||||
if (msg.type === 'hash') {
|
||||
hashPassword(msg.password, msg.rounds);
|
||||
} else if (msg.type === 'compare') {
|
||||
compare(msg.password, msg.hash);
|
||||
bcrypt.compare(msg.password, msg.hash, done);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -21,23 +21,14 @@ function hashPassword(password, rounds) {
|
||||
function(salt, next) {
|
||||
bcrypt.hash(password, salt, next);
|
||||
}
|
||||
], function(err, hash) {
|
||||
if (err) {
|
||||
process.send({err: err.message});
|
||||
return process.disconnect();
|
||||
}
|
||||
process.send({result: hash});
|
||||
process.disconnect();
|
||||
});
|
||||
], done);
|
||||
}
|
||||
|
||||
function compare(password, hash) {
|
||||
bcrypt.compare(password, hash, function(err, res) {
|
||||
if (err) {
|
||||
process.send({err: err.message});
|
||||
return process.disconnect();
|
||||
}
|
||||
process.send({result: res});
|
||||
process.disconnect();
|
||||
});
|
||||
function done(err, result) {
|
||||
if (err) {
|
||||
process.send({err: err.message});
|
||||
return process.disconnect();
|
||||
}
|
||||
process.send({result: result});
|
||||
process.disconnect();
|
||||
}
|
||||
@@ -1,34 +1,34 @@
|
||||
[
|
||||
{
|
||||
"name": "Announcements",
|
||||
"description": "Announcements regarding our community",
|
||||
"bgColor": "#fda34b",
|
||||
"color": "#fff",
|
||||
"icon" : "fa-bullhorn",
|
||||
"order": 1
|
||||
},
|
||||
{
|
||||
"name": "General Discussion",
|
||||
"description": "A place to talk about whateeeever you want",
|
||||
"bgColor": "#59b3d0",
|
||||
"color": "#fff",
|
||||
"icon" : "fa-comments-o",
|
||||
"order": 2
|
||||
},
|
||||
{
|
||||
"name": "Blogs",
|
||||
"description": "Blog posts from individual members",
|
||||
"bgColor": "#86ba4b",
|
||||
"color": "#fff",
|
||||
"icon" : "fa-newspaper-o",
|
||||
"order": 4
|
||||
},
|
||||
{
|
||||
"name": "Comments & Feedback",
|
||||
"description": "Got a question? Ask away!",
|
||||
"bgColor": "#e95c5a",
|
||||
"color": "#fff",
|
||||
"icon" : "fa-question",
|
||||
"order": 3
|
||||
}
|
||||
[
|
||||
{
|
||||
"name": "Announcements",
|
||||
"description": "Announcements regarding our community",
|
||||
"bgColor": "#fda34b",
|
||||
"color": "#fff",
|
||||
"icon" : "fa-bullhorn",
|
||||
"order": 1
|
||||
},
|
||||
{
|
||||
"name": "General Discussion",
|
||||
"description": "A place to talk about whatever you want",
|
||||
"bgColor": "#59b3d0",
|
||||
"color": "#fff",
|
||||
"icon" : "fa-comments-o",
|
||||
"order": 2
|
||||
},
|
||||
{
|
||||
"name": "Blogs",
|
||||
"description": "Blog posts from individual members",
|
||||
"bgColor": "#86ba4b",
|
||||
"color": "#fff",
|
||||
"icon" : "fa-newspaper-o",
|
||||
"order": 4
|
||||
},
|
||||
{
|
||||
"name": "Comments & Feedback",
|
||||
"description": "Got a question? Ask away!",
|
||||
"bgColor": "#e95c5a",
|
||||
"color": "#fff",
|
||||
"icon" : "fa-question",
|
||||
"order": 3
|
||||
}
|
||||
]
|
||||
@@ -1,98 +1,31 @@
|
||||
[
|
||||
{
|
||||
"field": "title",
|
||||
"value": "NodeBB"
|
||||
},
|
||||
{
|
||||
"field": "showSiteTitle",
|
||||
"value": "1"
|
||||
},
|
||||
{
|
||||
"field": "postDelay",
|
||||
"value": 10
|
||||
},
|
||||
{
|
||||
"field": "initialPostDelay",
|
||||
"value": 10
|
||||
},
|
||||
{
|
||||
"field": "newbiePostDelay",
|
||||
"value": 120
|
||||
},
|
||||
{
|
||||
"field": "newbiePostDelayThreshold",
|
||||
"value": 3
|
||||
},
|
||||
{
|
||||
"field": "minimumPostLength",
|
||||
"value": 8
|
||||
},
|
||||
{
|
||||
"field": "maximumPostLength",
|
||||
"value": 32767
|
||||
},
|
||||
{
|
||||
"field": "allowGuestSearching",
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"field": "allowTopicsThumbnail",
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"field": "allowRegistration",
|
||||
"value": 1
|
||||
},
|
||||
{
|
||||
"field": "allowLocalLogin",
|
||||
"value": 1
|
||||
},
|
||||
{
|
||||
"field": "allowAccountDelete",
|
||||
"value": 1
|
||||
},
|
||||
{
|
||||
"field": "allowFileUploads",
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"field": "maximumFileSize",
|
||||
"value": 2048
|
||||
},
|
||||
{
|
||||
"field": "minimumTitleLength",
|
||||
"value": 3
|
||||
},
|
||||
{
|
||||
"field": "maximumTitleLength",
|
||||
"value": 255
|
||||
},
|
||||
{
|
||||
"field": "minimumUsernameLength",
|
||||
"value": 2
|
||||
},
|
||||
{
|
||||
"field": "maximumUsernameLength",
|
||||
"value": 16
|
||||
},
|
||||
{
|
||||
"field": "minimumPasswordLength",
|
||||
"value": 6
|
||||
},
|
||||
{
|
||||
"field": "maximumSignatureLength",
|
||||
"value": 255
|
||||
},
|
||||
{
|
||||
"field": "maximumProfileImageSize",
|
||||
"value": 256
|
||||
},
|
||||
{
|
||||
"field": "profileImageDimension",
|
||||
"value": 128
|
||||
},
|
||||
{
|
||||
"field": "requireEmailConfirmation",
|
||||
"value": 0
|
||||
}
|
||||
]
|
||||
{
|
||||
"title": "NodeBB",
|
||||
"showSiteTitle": 1,
|
||||
"postDelay": 10,
|
||||
"initialPostDelay": 10,
|
||||
"newbiePostDelay": 120,
|
||||
"newbiePostDelayThreshold": 3,
|
||||
"minimumPostLength": 8,
|
||||
"maximumPostLength": 32767,
|
||||
"minimumTagsPerTopic": 0,
|
||||
"maximumTagsPerTopic": 5,
|
||||
"allowGuestSearching": 0,
|
||||
"allowTopicsThumbnail": 0,
|
||||
"registrationType": "normal",
|
||||
"allowLocalLogin": 1,
|
||||
"allowAccountDelete": 1,
|
||||
"allowFileUploads": 0,
|
||||
"maximumFileSize": 2048,
|
||||
"minimumTitleLength": 3,
|
||||
"maximumTitleLength": 255,
|
||||
"minimumUsernameLength": 2,
|
||||
"maximumUsernameLength": 16,
|
||||
"minimumPasswordLength": 6,
|
||||
"maximumSignatureLength": 255,
|
||||
"maximumAboutMeLength": 1000,
|
||||
"maximumProfileImageSize": 256,
|
||||
"profileImageDimension": 128,
|
||||
"requireEmailConfirmation": 0,
|
||||
"profile:allowProfileImageUploads": 1,
|
||||
"teaserPost": "last"
|
||||
}
|
||||
|
||||
10
install/data/footer.json
Normal file
10
install/data/footer.json
Normal file
@@ -0,0 +1,10 @@
|
||||
[
|
||||
{
|
||||
"widget": "html",
|
||||
"data" : {
|
||||
"html": "<footer id=\"footer\" class=\"container footer\">\r\n\t<div class=\"copyright\">\r\n\t\tCopyright © 2014 <a target=\"_blank\" href=\"https://nodebb.org\">NodeBB Forums</a> | <a target=\"_blank\" href=\"//github.com/NodeBB/NodeBB/graphs/contributors\">Contributors</a>\r\n\t</div>\r\n</footer>",
|
||||
"title":"",
|
||||
"container":""
|
||||
}
|
||||
}
|
||||
]
|
||||
87
install/data/navigation.json
Normal file
87
install/data/navigation.json
Normal file
@@ -0,0 +1,87 @@
|
||||
[
|
||||
{
|
||||
"route": "/categories",
|
||||
"title": "\\[\\[global:header.categories\\]\\]",
|
||||
"enabled": true,
|
||||
"iconClass": "fa-list",
|
||||
"textClass": "visible-xs-inline",
|
||||
"text": "\\[\\[global:header.categories\\]\\]"
|
||||
},
|
||||
{
|
||||
"id": "unread-count",
|
||||
"route": "/unread",
|
||||
"title": "\\[\\[global:header.unread\\]\\]",
|
||||
"enabled": true,
|
||||
"iconClass": "fa-inbox",
|
||||
"textClass": "visible-xs-inline",
|
||||
"text": "\\[\\[global:header.unread\\]\\]",
|
||||
"properties": {
|
||||
"loggedIn": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"route": "/recent",
|
||||
"title": "\\[\\[global:header.recent\\]\\]",
|
||||
"enabled": true,
|
||||
"iconClass": "fa-clock-o",
|
||||
"textClass": "visible-xs-inline",
|
||||
"text": "\\[\\[global:header.recent\\]\\]"
|
||||
},
|
||||
{
|
||||
"route": "/tags",
|
||||
"title": "\\[\\[global:header.tags\\]\\]",
|
||||
"enabled": true,
|
||||
"iconClass": "fa-tags",
|
||||
"textClass": "visible-xs-inline",
|
||||
"text": "\\[\\[global:header.tags\\]\\]"
|
||||
},
|
||||
{
|
||||
"route": "/popular",
|
||||
"title": "\\[\\[global:header.popular\\]\\]",
|
||||
"enabled": true,
|
||||
"iconClass": "fa-fire",
|
||||
"textClass": "visible-xs-inline",
|
||||
"text": "\\[\\[global:header.popular\\]\\]"
|
||||
},
|
||||
{
|
||||
"route": "/users",
|
||||
"title": "\\[\\[global:header.users\\]\\]",
|
||||
"enabled": true,
|
||||
"iconClass": "fa-user",
|
||||
"textClass": "visible-xs-inline",
|
||||
"text": "\\[\\[global:header.users\\]\\]"
|
||||
},
|
||||
{
|
||||
"route": "/groups",
|
||||
"title": "\\[\\[global:header.groups\\]\\]",
|
||||
"enabled": true,
|
||||
"iconClass": "fa-group",
|
||||
"textClass": "visible-xs-inline",
|
||||
"text": "\\[\\[global:header.groups\\]\\]"
|
||||
},
|
||||
{
|
||||
"route": "/admin",
|
||||
"title": "\\[\\[global:header.admin\\]\\]",
|
||||
"enabled": true,
|
||||
"iconClass": "fa-cogs",
|
||||
"textClass": "visible-xs-inline",
|
||||
"text": "\\[\\[global:header.admin\\]\\]",
|
||||
"properties": {
|
||||
"targetBlank": false,
|
||||
"adminOnly": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"route": "/search",
|
||||
"title": "\\[\\[global:header.search\\]\\]",
|
||||
"enabled": true,
|
||||
"iconClass": "fa-search",
|
||||
"textClass": "visible-xs-inline",
|
||||
"text": "\\[\\[global:header.search\\]\\]",
|
||||
"properties": {
|
||||
"installed": {
|
||||
"search": true
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
10
install/data/welcome.md
Normal file
10
install/data/welcome.md
Normal file
@@ -0,0 +1,10 @@
|
||||
# Welcome to your brand new NodeBB forum!
|
||||
|
||||
This is what a topic and post looks like. As an administator, you can edit the post\'s title and content.
|
||||
To customise your forum, go to the [Administrator Control Panel](../../admin). You can modify all aspects of your forum there, including installation of third-party plugins.
|
||||
|
||||
## Additional Resources
|
||||
|
||||
* [NodeBB Documentation](https://docs.nodebb.org)
|
||||
* [Community Support Forum](https://community.nodebb.org)
|
||||
* [Project repository](https://github.com/nodebb/nodebb)
|
||||
148
install/web.js
Normal file
148
install/web.js
Normal file
@@ -0,0 +1,148 @@
|
||||
"use strict";
|
||||
|
||||
var winston = require('winston'),
|
||||
express = require('express'),
|
||||
bodyParser = require('body-parser'),
|
||||
fs = require('fs'),
|
||||
path = require('path'),
|
||||
less = require('less'),
|
||||
async = require('async'),
|
||||
uglify = require('uglify-js'),
|
||||
nconf = require('nconf'),
|
||||
app = express(),
|
||||
server;
|
||||
|
||||
var web = {},
|
||||
scripts = [
|
||||
'public/vendor/xregexp/xregexp.js',
|
||||
'public/vendor/xregexp/unicode/unicode-base.js',
|
||||
'public/src/utils.js',
|
||||
'public/src/installer/install.js'
|
||||
];
|
||||
|
||||
web.install = function(port) {
|
||||
port = port || 4567;
|
||||
winston.info('Launching web installer on port', port);
|
||||
|
||||
app.use(express.static('public', {}));
|
||||
app.engine('tpl', require('templates.js').__express);
|
||||
app.set('view engine', 'tpl');
|
||||
app.set('views', path.join(__dirname, '../src/views'));
|
||||
app.use(bodyParser.urlencoded({
|
||||
extended: true
|
||||
}));
|
||||
|
||||
async.parallel([compileLess, compileJS], function() {
|
||||
setupRoutes();
|
||||
launchExpress(port);
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
function launchExpress(port) {
|
||||
server = app.listen(port, function() {
|
||||
winston.info('Web installer listening on http://%s:%s', '0.0.0.0', port);
|
||||
});
|
||||
}
|
||||
|
||||
function setupRoutes() {
|
||||
app.get('/', welcome);
|
||||
app.post('/', install);
|
||||
app.post('/launch', launch);
|
||||
}
|
||||
|
||||
function welcome(req, res) {
|
||||
var dbs = ['redis', 'mongo'],
|
||||
databases = [];
|
||||
|
||||
dbs.forEach(function(el) {
|
||||
databases.push({
|
||||
name: el,
|
||||
questions: require('../src/database/' + el).questions
|
||||
});
|
||||
});
|
||||
|
||||
res.render('install/index', {
|
||||
databases: databases,
|
||||
skipDatabaseSetup: !!nconf.get('database'),
|
||||
error: res.locals.error ? true : false,
|
||||
success: res.locals.success ? true : false,
|
||||
values: req.body
|
||||
});
|
||||
}
|
||||
|
||||
function install(req, res) {
|
||||
for (var i in req.body) {
|
||||
if (req.body.hasOwnProperty(i) && !process.env.hasOwnProperty(i)) {
|
||||
process.env[i.replace(':', '__')] = req.body[i];
|
||||
}
|
||||
}
|
||||
|
||||
var child = require('child_process').fork('app', ['--setup'], {
|
||||
env: process.env
|
||||
});
|
||||
|
||||
child.on('close', function(data) {
|
||||
if (data === 0) {
|
||||
res.locals.success = true;
|
||||
} else {
|
||||
res.locals.error = true;
|
||||
}
|
||||
|
||||
welcome(req, res);
|
||||
});
|
||||
}
|
||||
|
||||
function launch(req, res) {
|
||||
var pidFilePath = __dirname + '../pidfile';
|
||||
res.json({});
|
||||
server.close();
|
||||
|
||||
var child = require('child_process').spawn('node', ['loader.js'], {
|
||||
detached: true,
|
||||
stdio: ['ignore', 'ignore', 'ignore']
|
||||
});
|
||||
|
||||
process.stdout.write('\nStarting NodeBB\n');
|
||||
process.stdout.write(' "./nodebb stop" to stop the NodeBB server\n');
|
||||
process.stdout.write(' "./nodebb log" to view server output\n');
|
||||
process.stdout.write(' "./nodebb restart" to restart NodeBB\n');
|
||||
|
||||
child.unref();
|
||||
process.exit(0);
|
||||
|
||||
}
|
||||
|
||||
function compileLess(callback) {
|
||||
if ((nconf.get('from-file') || '').indexOf('less') !== -1) {
|
||||
winston.info('LESS compilation skipped');
|
||||
return callback(false);
|
||||
}
|
||||
|
||||
fs.readFile(path.join(__dirname, '../public/less/install.less'), function(err, style) {
|
||||
less.render(style.toString(), function(err, css) {
|
||||
if(err) {
|
||||
return winston.error('Unable to compile LESS: ', err);
|
||||
}
|
||||
|
||||
fs.writeFile(path.join(__dirname, '../public/stylesheet.css'), css.css, callback);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function compileJS(callback) {
|
||||
if ((nconf.get('from-file') || '').indexOf('js') !== -1) {
|
||||
winston.info('Client-side JS compilation skipped');
|
||||
return callback(false);
|
||||
}
|
||||
|
||||
var scriptPath = path.join(__dirname, '..'),
|
||||
result = uglify.minify(scripts.map(function(script) {
|
||||
return path.join(scriptPath, script);
|
||||
}));
|
||||
|
||||
|
||||
fs.writeFile(path.join(__dirname, '../public/nodebb.min.js'), result.code, callback);
|
||||
}
|
||||
|
||||
module.exports = web;
|
||||
89
loader.js
89
loader.js
@@ -9,11 +9,15 @@ var nconf = require('nconf'),
|
||||
async = require('async'),
|
||||
logrotate = require('logrotate-stream'),
|
||||
|
||||
pkg = require('./package.json'),
|
||||
pkg = require('./package.json');
|
||||
|
||||
pidFilePath = __dirname + '/pidfile',
|
||||
nconf.argv().env().file({
|
||||
file: path.join(__dirname, '/config.json')
|
||||
});
|
||||
|
||||
var pidFilePath = __dirname + '/pidfile',
|
||||
output = logrotate({ file: __dirname + '/logs/output.log', size: '1m', keep: 3, compress: true }),
|
||||
silent = process.env.NODE_ENV !== 'development',
|
||||
silent = nconf.get('silent') === 'false' ? false : nconf.get('silent') !== false,
|
||||
numProcs,
|
||||
workers = [],
|
||||
|
||||
@@ -82,7 +86,7 @@ Loader.addWorkerEvents = function(worker) {
|
||||
if (message && typeof message === 'object' && message.action) {
|
||||
switch (message.action) {
|
||||
case 'ready':
|
||||
if (Loader.js.cache) {
|
||||
if (Loader.js.cache && !worker.isPrimary) {
|
||||
worker.send({
|
||||
action: 'js-propagate',
|
||||
cache: Loader.js.cache,
|
||||
@@ -91,7 +95,7 @@ Loader.addWorkerEvents = function(worker) {
|
||||
});
|
||||
}
|
||||
|
||||
if (Loader.css.cache) {
|
||||
if (Loader.css.cache && !worker.isPrimary) {
|
||||
worker.send({
|
||||
action: 'css-propagate',
|
||||
cache: Loader.css.cache,
|
||||
@@ -99,6 +103,8 @@ Loader.addWorkerEvents = function(worker) {
|
||||
hash: Loader.css.hash
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
break;
|
||||
case 'restart':
|
||||
console.log('[cluster] Restarting...');
|
||||
@@ -132,6 +138,11 @@ Loader.addWorkerEvents = function(worker) {
|
||||
hash: message.hash
|
||||
}, worker.pid);
|
||||
break;
|
||||
case 'templates:compiled':
|
||||
Loader.notifyWorkers({
|
||||
action: 'templates:compiled',
|
||||
}, worker.pid);
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -181,7 +192,12 @@ function forkWorker(index, isPrimary) {
|
||||
}
|
||||
|
||||
function getPorts() {
|
||||
var urlObject = url.parse(nconf.get('url'));
|
||||
var _url = nconf.get('url');
|
||||
if (!_url) {
|
||||
console.log('[cluster] url is undefined, please check your config.json');
|
||||
process.exit();
|
||||
}
|
||||
var urlObject = url.parse(_url);
|
||||
var port = nconf.get('port') || nconf.get('PORT') || urlObject.port || 4567;
|
||||
if (!Array.isArray(port)) {
|
||||
port = [port];
|
||||
@@ -230,35 +246,38 @@ Loader.notifyWorkers = function(msg, worker_pid) {
|
||||
});
|
||||
};
|
||||
|
||||
nconf.argv().file({
|
||||
file: path.join(__dirname, '/config.json')
|
||||
});
|
||||
fs.open(path.join(__dirname, 'config.json'), 'r', function(err) {
|
||||
if (!err) {
|
||||
if (nconf.get('daemon') !== 'false' && nconf.get('daemon') !== false) {
|
||||
if (fs.existsSync(pidFilePath)) {
|
||||
try {
|
||||
var pid = fs.readFileSync(pidFilePath, { encoding: 'utf-8' });
|
||||
process.kill(pid, 0);
|
||||
process.exit();
|
||||
} catch (e) {
|
||||
fs.unlinkSync(pidFilePath);
|
||||
}
|
||||
}
|
||||
|
||||
if (nconf.get('daemon') !== false) {
|
||||
if (fs.existsSync(pidFilePath)) {
|
||||
try {
|
||||
var pid = fs.readFileSync(pidFilePath, { encoding: 'utf-8' });
|
||||
process.kill(pid, 0);
|
||||
process.exit();
|
||||
} catch (e) {
|
||||
fs.unlinkSync(pidFilePath);
|
||||
require('daemon')({
|
||||
stdout: process.stdout,
|
||||
stderr: process.stderr
|
||||
});
|
||||
|
||||
fs.writeFile(__dirname + '/pidfile', process.pid);
|
||||
}
|
||||
|
||||
async.series([
|
||||
Loader.init,
|
||||
Loader.displayStartupMessages,
|
||||
Loader.start
|
||||
], function(err) {
|
||||
if (err) {
|
||||
console.log('[loader] Error during startup: ' + err.message);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// No config detected, kickstart web installer
|
||||
var child = require('child_process').fork('app');
|
||||
}
|
||||
|
||||
require('daemon')({
|
||||
stdout: process.stdout,
|
||||
stderr: process.stderr
|
||||
});
|
||||
|
||||
fs.writeFile(__dirname + '/pidfile', process.pid);
|
||||
}
|
||||
|
||||
async.series([
|
||||
Loader.init,
|
||||
Loader.displayStartupMessages,
|
||||
Loader.start
|
||||
], function(err) {
|
||||
if (err) {
|
||||
console.log('[loader] Error during startup: ' + err.message);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
11
minifier.js
11
minifier.js
@@ -6,6 +6,7 @@ var uglifyjs = require('uglify-js'),
|
||||
fs = require('fs'),
|
||||
path = require('path'),
|
||||
crypto = require('crypto'),
|
||||
utils = require('./public/src/utils'),
|
||||
|
||||
Minifier = {
|
||||
js: {}
|
||||
@@ -14,7 +15,7 @@ var uglifyjs = require('uglify-js'),
|
||||
/* Javascript */
|
||||
Minifier.js.minify = function (scripts, minify, callback) {
|
||||
scripts = scripts.filter(function(file) {
|
||||
return fs.existsSync(file);
|
||||
return fs.existsSync(file) && file.endsWith('.js');
|
||||
});
|
||||
|
||||
if (minify) {
|
||||
@@ -29,9 +30,10 @@ Minifier.js.minify = function (scripts, minify, callback) {
|
||||
process.on('message', function(payload) {
|
||||
switch(payload.action) {
|
||||
case 'js':
|
||||
Minifier.js.minify(payload.scripts, payload.minify, function(minified) {
|
||||
Minifier.js.minify(payload.scripts, payload.minify, function(minified/*, sourceMap*/) {
|
||||
process.send({
|
||||
type: 'end',
|
||||
// sourceMap: sourceMap,
|
||||
minified: minified
|
||||
});
|
||||
});
|
||||
@@ -40,8 +42,11 @@ process.on('message', function(payload) {
|
||||
});
|
||||
|
||||
function minifyScripts(scripts, callback) {
|
||||
// The portions of code involving the source map are commented out as they're broken in UglifyJS2
|
||||
// Follow along here: https://github.com/mishoo/UglifyJS2/issues/700
|
||||
try {
|
||||
var minified = uglifyjs.minify(scripts, {
|
||||
// outSourceMap: "nodebb.min.js.map",
|
||||
compress: false
|
||||
}),
|
||||
hasher = crypto.createHash('md5'),
|
||||
@@ -55,7 +60,7 @@ function minifyScripts(scripts, callback) {
|
||||
payload: hash.slice(0, 8)
|
||||
});
|
||||
|
||||
callback(minified.code);
|
||||
callback(minified.code/*, minified.map*/);
|
||||
} catch(err) {
|
||||
process.send({
|
||||
type: 'error',
|
||||
|
||||
296
nodebb
296
nodebb
@@ -1,136 +1,168 @@
|
||||
#!/bin/bash
|
||||
#!/usr/bin/env node
|
||||
|
||||
# $0 script path
|
||||
# $1 action
|
||||
# $2 subaction
|
||||
var colors = require('colors'),
|
||||
cproc = require('child_process'),
|
||||
argv = require('minimist')(process.argv.slice(2)),
|
||||
fs = require('fs'),
|
||||
async = require('async'),
|
||||
touch = require('touch'),
|
||||
npm = require('npm');
|
||||
|
||||
node="$(which nodejs 2>/dev/null)";
|
||||
if [ $? -gt 0 ];
|
||||
then node="$(which node)";
|
||||
fi
|
||||
var getRunningPid = function(callback) {
|
||||
fs.readFile(__dirname + '/pidfile', {
|
||||
encoding: 'utf-8'
|
||||
}, function(err, pid) {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
function pidExists() {
|
||||
if [ -e "pidfile" ];
|
||||
then
|
||||
if ps -p $(cat pidfile) > /dev/null
|
||||
then return 1;
|
||||
else
|
||||
rm ./pidfile;
|
||||
return 0;
|
||||
fi
|
||||
else
|
||||
return 0;
|
||||
fi
|
||||
try {
|
||||
process.kill(parseInt(pid, 10), 0);
|
||||
callback(null, parseInt(pid, 10));
|
||||
} catch(e) {
|
||||
callback(e);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
switch(process.argv[2]) {
|
||||
case 'status':
|
||||
getRunningPid(function(err, pid) {
|
||||
if (!err) {
|
||||
process.stdout.write('\nNodeBB Running '.bold + '(pid '.cyan + pid.toString().cyan + ')\n'.cyan);
|
||||
process.stdout.write('\t"' + './nodebb stop'.yellow + '" to stop the NodeBB server\n');
|
||||
process.stdout.write('\t"' + './nodebb log'.yellow + '" to view server output\n');
|
||||
process.stdout.write('\t"' + './nodebb restart'.yellow + '" to restart NodeBB\n\n');
|
||||
} else {
|
||||
process.stdout.write('\nNodeBB is not running\n'.bold);
|
||||
process.stdout.write('\t"' + './nodebb start'.yellow + '" to launch the NodeBB server\n\n'.reset);
|
||||
}
|
||||
})
|
||||
break;
|
||||
|
||||
case 'start':
|
||||
process.stdout.write('\nStarting NodeBB\n'.bold);
|
||||
process.stdout.write(' "' + './nodebb stop'.yellow + '" to stop the NodeBB server\n');
|
||||
process.stdout.write(' "' + './nodebb log'.yellow + '" to view server output\n');
|
||||
process.stdout.write(' "' + './nodebb restart'.yellow + '" to restart NodeBB\n\n'.reset);
|
||||
|
||||
// Spawn a new NodeBB process
|
||||
cproc.fork(__dirname + '/loader.js', {
|
||||
env: process.env
|
||||
});
|
||||
break;
|
||||
|
||||
case 'stop':
|
||||
getRunningPid(function(err, pid) {
|
||||
if (!err) {
|
||||
process.kill(pid, 'SIGTERM');
|
||||
process.stdout.write('Stopping NodeBB. Goodbye!\n')
|
||||
} else {
|
||||
process.stdout.write('NodeBB is already stopped.\n');
|
||||
}
|
||||
});
|
||||
break;
|
||||
|
||||
case 'restart':
|
||||
getRunningPid(function(err, pid) {
|
||||
if (!err) {
|
||||
process.kill(pid, 'SIGHUP');
|
||||
} else {
|
||||
process.stdout.write('NodeBB could not be restarted, as a running instance could not be found.');
|
||||
}
|
||||
});
|
||||
break;
|
||||
|
||||
case 'reload':
|
||||
getRunningPid(function(err, pid) {
|
||||
if (!err) {
|
||||
process.kill(pid, 'SIGUSR2');
|
||||
} else {
|
||||
process.stdout.write('NodeBB could not be reloaded, as a running instance could not be found.');
|
||||
}
|
||||
});
|
||||
break;
|
||||
|
||||
case 'dev':
|
||||
process.env.NODE_ENV = 'development';
|
||||
cproc.fork(__dirname + '/loader.js', ['--no-daemon', '--no-silent'], {
|
||||
env: process.env
|
||||
});
|
||||
break;
|
||||
|
||||
case 'log':
|
||||
process.stdout.write('\nType '.red + 'Ctrl-C '.bold + 'to exit'.red);
|
||||
process.stdout.write('\n\n'.reset);
|
||||
cproc.spawn('tail', ['-F', './logs/output.log'], {
|
||||
cwd: __dirname,
|
||||
stdio: 'inherit'
|
||||
});
|
||||
break;
|
||||
|
||||
case 'setup':
|
||||
cproc.fork('app.js', ['--setup'], {
|
||||
cwd: __dirname,
|
||||
silent: false
|
||||
});
|
||||
break;
|
||||
|
||||
case 'reset':
|
||||
var args = process.argv.slice(0);
|
||||
args.unshift('--reset');
|
||||
|
||||
cproc.fork('app.js', args, {
|
||||
cwd: __dirname,
|
||||
silent: false
|
||||
});
|
||||
break;
|
||||
|
||||
case 'upgrade':
|
||||
async.series([
|
||||
function(next) {
|
||||
process.stdout.write('1. '.bold + 'Bringing base dependencies up to date\n'.yellow);
|
||||
npm.load({
|
||||
loglevel: 'silent'
|
||||
}, function() {
|
||||
npm.commands.install(next);
|
||||
});
|
||||
},
|
||||
function(next) {
|
||||
process.stdout.write('2. '.bold + 'Updating NodeBB data store schema\n'.yellow);
|
||||
var upgradeProc = cproc.fork('app.js', ['--upgrade'], {
|
||||
cwd: __dirname,
|
||||
silent: false
|
||||
});
|
||||
|
||||
upgradeProc.on('close', next)
|
||||
},
|
||||
function(next) {
|
||||
process.stdout.write('3. '.bold + 'Storing upgrade date in "package.json"\n'.yellow);
|
||||
touch(__dirname + '/package.json', {}, next);
|
||||
}
|
||||
], function(err) {
|
||||
if (err) {
|
||||
process.stdout.write('\nError'.red + ': ' + err.message + '\n');
|
||||
} else {
|
||||
var message = 'NodeBB Upgrade Complete!',
|
||||
spaces = new Array(Math.floor(process.stdout.columns / 2) - (message.length / 2) + 1).join(' ');
|
||||
process.stdout.write('\n' + spaces + message.green.bold + '\n\n'.reset);
|
||||
}
|
||||
});
|
||||
break;
|
||||
|
||||
default:
|
||||
process.stdout.write('\nWelcome to NodeBB\n\n'.bold);
|
||||
process.stdout.write('Usage: ./nodebb {start|stop|reload|restart|log|setup|reset|upgrade|dev}\n\n');
|
||||
process.stdout.write('\t' + 'start'.yellow + '\tStart the NodeBB server\n');
|
||||
process.stdout.write('\t' + 'stop'.yellow + '\tStops the NodeBB server\n');
|
||||
process.stdout.write('\t' + 'reload'.yellow + '\tRestarts NodeBB\n');
|
||||
process.stdout.write('\t' + 'restart'.yellow + '\tRestarts NodeBB\n');
|
||||
process.stdout.write('\t' + 'log'.yellow + '\tOpens the logging interface (useful for debugging)\n');
|
||||
process.stdout.write('\t' + 'setup'.yellow + '\tRuns the NodeBB setup script\n');
|
||||
process.stdout.write('\t' + 'reset'.yellow + '\tDisables all plugins, restores the default theme.\n');
|
||||
process.stdout.write('\t' + 'upgrade'.yellow + '\tRun NodeBB upgrade scripts, ensure packages are up-to-date\n');
|
||||
process.stdout.write('\t' + 'dev'.yellow + '\tStart NodeBB in interactive development mode\n');
|
||||
process.stdout.write('\t' + 'watch'.yellow + '\tStart NodeBB in development mode and watch for changes\n');
|
||||
process.stdout.write('\n'.reset);
|
||||
break;
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
echo "Starting NodeBB";
|
||||
echo " \"./nodebb stop\" to stop the NodeBB server";
|
||||
echo " \"./nodebb log\" to view server output";
|
||||
|
||||
# Start the loader daemon
|
||||
"$node" loader "$@"
|
||||
;;
|
||||
|
||||
stop)
|
||||
pidExists;
|
||||
if [ 0 -eq $? ];
|
||||
then
|
||||
echo "NodeBB is already stopped.";
|
||||
else
|
||||
echo "Stopping NodeBB. Goodbye!";
|
||||
kill $(cat pidfile);
|
||||
fi
|
||||
;;
|
||||
|
||||
restart)
|
||||
pidExists;
|
||||
if [ 0 -eq $? ];
|
||||
then
|
||||
echo "NodeBB could not be restarted, as a running instance could not be found.";
|
||||
else
|
||||
echo "Restarting NodeBB.";
|
||||
kill -1 $(cat pidfile);
|
||||
fi
|
||||
;;
|
||||
|
||||
reload)
|
||||
pidExists;
|
||||
if [ 0 -eq $? ];
|
||||
then
|
||||
echo "NodeBB could not be reloaded, as a running instance could not be found.";
|
||||
else
|
||||
echo "Reloading NodeBB.";
|
||||
kill -12 $(cat pidfile);
|
||||
fi
|
||||
;;
|
||||
|
||||
status)
|
||||
pidExists;
|
||||
if [ 0 -eq $? ];
|
||||
then
|
||||
echo "NodeBB is not running";
|
||||
echo " \"./nodebb start\" to launch the NodeBB server";
|
||||
else
|
||||
echo "NodeBB Running (pid $(cat pidfile))";
|
||||
echo " \"./nodebb stop\" to stop the NodeBB server";
|
||||
echo " \"./nodebb log\" to view server output";
|
||||
echo " \"./nodebb restart\" to restart NodeBB";
|
||||
fi
|
||||
;;
|
||||
|
||||
log)
|
||||
clear;
|
||||
tail -F ./logs/output.log;
|
||||
;;
|
||||
|
||||
upgrade)
|
||||
npm install
|
||||
# ls -d node_modules/nodebb* | xargs -n1 basename | xargs npm install
|
||||
# ls -d node_modules/nodebb* | xargs -n1 basename | xargs npm update
|
||||
npm i nodebb-theme-vanilla nodebb-theme-lavender nodebb-widget-essentials
|
||||
"$node" app --upgrade
|
||||
touch package.json
|
||||
;;
|
||||
|
||||
setup)
|
||||
"$node" app --setup "$@"
|
||||
;;
|
||||
|
||||
reset)
|
||||
"$node" app --reset --$2
|
||||
;;
|
||||
|
||||
dev)
|
||||
echo "Launching NodeBB in \"development\" mode."
|
||||
echo "To run the production build of NodeBB, please use \"forever\"."
|
||||
echo "More Information: https://docs.nodebb.org/en/latest/running/index.html"
|
||||
NODE_ENV=development "$node" loader --no-daemon "$@"
|
||||
;;
|
||||
|
||||
watch)
|
||||
echo "Launching NodeBB in \"development\" mode."
|
||||
echo "To run the production build of NodeBB, please use \"forever\"."
|
||||
echo "More Information: https://docs.nodebb.org/en/latest/running/index.html"
|
||||
NODE_ENV=development supervisor -q --ignore public/templates,public/nodebb.min.js,public/nodebb.min.js.map --extensions 'node|js|tpl|less' -- app "$@"
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Welcome to NodeBB"
|
||||
echo $"Usage: $0 {start|stop|reload|restart|log|setup|reset|upgrade|dev|watch}"
|
||||
echo ''
|
||||
column -s ' ' -t <<< '
|
||||
start Start the NodeBB server
|
||||
stop Stops the NodeBB server
|
||||
reload Restarts NodeBB
|
||||
restart Restarts NodeBB
|
||||
log Opens the logging interface (useful for debugging)
|
||||
setup Runs the NodeBB setup script
|
||||
reset Disables all plugins, restores the default theme.
|
||||
upgrade Run NodeBB upgrade scripts, ensure packages are up-to-date
|
||||
dev Start NodeBB in interactive development mode
|
||||
watch Start NodeBB in development mode and watch for changes
|
||||
'
|
||||
exit 1
|
||||
esac
|
||||
|
||||
3532
npm-shrinkwrap.json
generated
Normal file
3532
npm-shrinkwrap.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
58
package.json
58
package.json
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"name": "nodebb",
|
||||
"license": "GPLv3 or later",
|
||||
"license": "GPL-3.0",
|
||||
"description": "NodeBB Forum",
|
||||
"version": "0.6.1-dev",
|
||||
"version": "0.7.2",
|
||||
"homepage": "http://www.nodebb.org",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -10,14 +10,14 @@
|
||||
},
|
||||
"main": "app.js",
|
||||
"scripts": {
|
||||
"start": "./nodebb start",
|
||||
"stop": "./nodebb stop",
|
||||
"start": "node loader.js",
|
||||
"test": "mocha ./tests -t 10000"
|
||||
},
|
||||
"dependencies": {
|
||||
"async": "~0.9.0",
|
||||
"bcryptjs": "~2.1.0",
|
||||
"body-parser": "^1.9.0",
|
||||
"colors": "^1.1.0",
|
||||
"compression": "^1.1.0",
|
||||
"connect-ensure-login": "^0.1.1",
|
||||
"connect-flash": "^0.1.1",
|
||||
@@ -28,46 +28,58 @@
|
||||
"daemon": "~1.1.0",
|
||||
"express": "^4.9.5",
|
||||
"express-session": "^1.8.2",
|
||||
"gm": "1.17.0",
|
||||
"gravatar": "^1.1.0",
|
||||
"heapdump": "^0.3.0",
|
||||
"less": "^2.0.0",
|
||||
"logrotate-stream": "^0.2.3",
|
||||
"lru-cache": "^2.6.1",
|
||||
"lwip": "0.0.7",
|
||||
"mime": "^1.3.4",
|
||||
"minimist": "^1.1.1",
|
||||
"mkdirp": "~0.5.0",
|
||||
"mmmagic": "^0.3.13",
|
||||
"morgan": "^1.3.2",
|
||||
"nconf": "~0.7.1",
|
||||
"nodebb-plugin-dbsearch": "^0.1.0",
|
||||
"nodebb-plugin-markdown": "^0.8.0",
|
||||
"nodebb-plugin-mentions": "^0.9.0",
|
||||
"nodebb-plugin-soundpack-default": "~0.1.1",
|
||||
"nodebb-plugin-composer-default": "^1.0.7",
|
||||
"nodebb-plugin-dbsearch": "^0.2.12",
|
||||
"nodebb-plugin-emoji-extended": "^0.4.8",
|
||||
"nodebb-plugin-markdown": "^4.0.0",
|
||||
"nodebb-plugin-mentions": "^0.11.7",
|
||||
"nodebb-plugin-soundpack-default": "^0.1.1",
|
||||
"nodebb-plugin-spam-be-gone": "^0.4.0",
|
||||
"nodebb-theme-lavender": "^0.2.0",
|
||||
"nodebb-theme-vanilla": "^0.2.0",
|
||||
"nodebb-widget-essentials": "~0.2.0",
|
||||
"nodebb-rewards-essentials": "^0.0.1",
|
||||
"nodebb-theme-lavender": "^1.0.48",
|
||||
"nodebb-theme-persona": "^1.0.20",
|
||||
"nodebb-theme-vanilla": "^2.0.16",
|
||||
"nodebb-widget-essentials": "^1.0.2",
|
||||
"npm": "^2.1.4",
|
||||
"passport": "^0.2.1",
|
||||
"passport-local": "1.0.0",
|
||||
"prompt": "^0.2.14",
|
||||
"request": "^2.44.0",
|
||||
"rimraf": "~2.2.6",
|
||||
"rimraf": "~2.3.2",
|
||||
"rss": "^1.0.0",
|
||||
"semver": "^4.0.3",
|
||||
"semver": "^4.3.3",
|
||||
"serve-favicon": "^2.1.5",
|
||||
"sitemap": "^0.7.4",
|
||||
"sitemap": "^0.8.1",
|
||||
"socket.io": "^1.2.1",
|
||||
"socket.io-client": "^1.2.1",
|
||||
"socket.io-redis": "^0.1.3",
|
||||
"socketio-wildcard": "~0.1.1",
|
||||
"string": "^3.0.0",
|
||||
"templates.js": "^0.1.15",
|
||||
"uglify-js": "git+https://github.com/julianlam/UglifyJS2.git",
|
||||
"underscore": "~1.7.0",
|
||||
"validator": "~3.28.0",
|
||||
"templates.js": "^0.2.6",
|
||||
"touch": "0.0.3",
|
||||
"uglify-js": "^2.4.23",
|
||||
"underscore": "~1.8.3",
|
||||
"underscore.deep": "^0.5.1",
|
||||
"validator": "^3.30.0",
|
||||
"winston": "^0.9.0",
|
||||
"xregexp": "~2.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"mocha": "~1.13.0"
|
||||
"mocha": "~1.13.0",
|
||||
"grunt": "~0.4.5",
|
||||
"grunt-contrib-watch": "^0.6.1"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/NodeBB/NodeBB/issues"
|
||||
@@ -78,17 +90,17 @@
|
||||
"maintainers": [
|
||||
{
|
||||
"name": "Andrew Rodrigues",
|
||||
"email": "andrew@designcreateplay.com",
|
||||
"email": "andrew@nodebb.org",
|
||||
"url": "https://github.com/psychobunny"
|
||||
},
|
||||
{
|
||||
"name": "Julian Lam",
|
||||
"email": "julian@designcreateplay.com",
|
||||
"email": "julian@nodebb.org",
|
||||
"url": "https://github.com/julianlam"
|
||||
},
|
||||
{
|
||||
"name": "Barış Soner Uşaklı",
|
||||
"email": "baris@designcreateplay.com",
|
||||
"email": "baris@nodebb.org",
|
||||
"url": "https://github.com/barisusakli"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
{
|
||||
"new_topic_button": "موضوع جديد",
|
||||
"guest-login-post": "يجب عليك تسجيل الدخول للرد",
|
||||
"no_topics": "<strong>لا توجد مواضيع في هذه الفئة</strong>لم لا تحاول إنشاء موضوع؟<br />",
|
||||
"browsing": "تصفح",
|
||||
"no_replies": "لم يرد أحد",
|
||||
"no_replies": "لا توجد ردود.",
|
||||
"share_this_category": "انشر هذه الفئة",
|
||||
"ignore": "تجاهل"
|
||||
"watch": "متابعة",
|
||||
"ignore": "تجاهل",
|
||||
"watch.message": "أنت اﻷن متابع لتحديثات هذه الفئة",
|
||||
"ignore.message": "أنت اﻷن تتجاهل تحديثات هذه الفئة"
|
||||
}
|
||||
@@ -1,14 +1,21 @@
|
||||
{
|
||||
"password-reset-requested": "تم طلب إعادة تعيين كلمة السر - %1!",
|
||||
"password-reset-requested": "تم طلب إعادة تعيين كلمة المرور - %1!",
|
||||
"welcome-to": "مرحبًا بك في %1",
|
||||
"invite": "دعوة من %1",
|
||||
"greeting_no_name": "مرحبًا",
|
||||
"greeting_with_name": "مرحبًا بك يا %1",
|
||||
"welcome.text1": "شكرًا على تسجيلك في %1!",
|
||||
"welcome.text2": "لتفعيل حسابك، نحتاج إلى التأكد من صحة عنوان البريد الإلكتروني الذي تسجلت به.",
|
||||
"welcome.text2": "لتفعيل حسابك، نحتاج إلى التأكد من صحة عنوان البريد الإلكتروني الذي سجلت به.",
|
||||
"welcome.text3": "An administrator has accepted your registration application. You can login with your username/password now.",
|
||||
"welcome.cta": "انقر هنا لتفعيل عنوان بريدك الإلكتروني",
|
||||
"reset.text1": "لقد توصلنا بطلب إعادة تعيين كلمة السرالخاصة بك، ربما لكونك قد نسيتها, إن لم يكن الأمر كذلك، المرجو تجاهل هذه الرسالة.",
|
||||
"reset.text2": "لمواصلة طلب إعاة تعيين كلمة السر، المرجو تتبع هذا الرابط.",
|
||||
"invitation.text1": "%1 قام بدعوتك للانضمام لـ %2",
|
||||
"invitation.ctr": "إضغط هنا لإنشاء حسابك",
|
||||
"reset.text1": "لقد توصلنا بطلب إعادة تعيين كلمة المرور الخاصة بك، ربما لكونك قد نسيتها, إن لم يكن الأمر كذلك، المرجو تجاهل هذه الرسالة.",
|
||||
"reset.text2": "لمواصلة طلب إعاة تعيين كلمة المرور، الرجاء تتبع هذا الرابط.",
|
||||
"reset.cta": "انقر هنا لإعادة تعيين كلمة السر الخاصة بك.",
|
||||
"reset.notify.subject": "تم تغيير كلمة المرور بنجاح",
|
||||
"reset.notify.text1": "نحيطك علما أن كلمة مرورك قد تم تغييرها في %1",
|
||||
"reset.notify.text2": "إن لم يكن لديك علم بهذا، المرجو إشعار مدبر النظام بأسرع مايمكن.",
|
||||
"digest.notifications": "لديك تنبيهات غير مقروءة من طرف %1:",
|
||||
"digest.latest_topics": "آخر المستجدات من %1",
|
||||
"digest.cta": "انقر هنا لمشاهدة %1",
|
||||
@@ -17,8 +24,8 @@
|
||||
"notif.chat.subject": "هناك محادثة جديدة من %1",
|
||||
"notif.chat.cta": "انقر هنا لمتابعة المحادثة",
|
||||
"notif.chat.unsub.info": "تم إرسال هذا الإشعار بوجودة محادثة جديدة وفقا لخيارات تسجيلك.",
|
||||
"notif.post.cta": "Click here to read the full topic",
|
||||
"notif.post.unsub.info": "This post notification was sent to you due to your subscription settings.",
|
||||
"notif.post.cta": "انقر هنا لقراءة الموضوع بأكمله",
|
||||
"notif.post.unsub.info": "تم إشعارك بهذه المشاركة بناءً على الخيارات التي سبق وأن حددتها.",
|
||||
"test.text1": "هذه رسالة تجريبية للتأكد من صحة إعدادت الرسائل الإلكترونية في منتدى NodeBB خاصتك.",
|
||||
"unsub.cta": "انقر هنا لتغيير تلك الإعدادات",
|
||||
"closing": "شكرًا لك!"
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"invalid-data": "بيانات غير صالحة",
|
||||
"not-logged-in": "لم تقم بتسجيل الدخول",
|
||||
"account-locked": "تم إقفال حسابكم مؤقتًا.",
|
||||
"search-requires-login": "البحث في المنتدى يستلزم توفرك على حساب! المرجو تسجيل دخولك أو إنشاء حساب!",
|
||||
"account-locked": "تم حظر حسابك مؤقتًا.",
|
||||
"search-requires-login": "البحث في المنتدى يتطلب حساب - الرجاء تسجيل الدخول أو التسجيل",
|
||||
"invalid-cid": "قائمة غير موجودة",
|
||||
"invalid-tid": "موضوع غير متواجد",
|
||||
"invalid-pid": "رد غير موجود",
|
||||
@@ -18,11 +18,14 @@
|
||||
"username-taken": "اسم المستخدم مأخوذ",
|
||||
"email-taken": "البريد الالكتروني مأخوذ",
|
||||
"email-not-confirmed": "عنوان بريدك الإلكتروني غير مفعل بعد. انقر هنا لتفعيله من فضلك.",
|
||||
"email-not-confirmed-chat": "You are unable to chat until your email is confirmed",
|
||||
"email-not-confirmed-chat": "لا يمكنك الدردشة حتى تقوم بتأكيد بريدك الإلكتروني، الرجاء إضغط هنا لتأكيد بريدك اﻹلكتروني.",
|
||||
"no-email-to-confirm": "هذا المنتدى يستلزم تفعيل بريدك الإلكتروني، انقر هنا من فضلك لإدخاله.",
|
||||
"email-confirm-failed": "لم نستطع تفعيل بريدك الإلكتروني، المرجو المحاولة لاحقًا.",
|
||||
"confirm-email-already-sent": "لقد تم ارسال بريد التأكيد، الرجاء اﻹنتظار 1% دقائق لإعادة اﻹرسال",
|
||||
"username-too-short": "اسم المستخدم قصير.",
|
||||
"username-too-long": "اسم المستخدم طويل",
|
||||
"user-banned": "المستخدم محظور",
|
||||
"user-too-new": "عذرًا، يجب الانتظار %1 ثواني قبل إضافة ردك الأول.",
|
||||
"user-too-new": "عذرا, يجب أن تنتظر 1% ثواني قبل قيامك بأول مشاركة",
|
||||
"no-category": "قائمة غير موجودة",
|
||||
"no-topic": "موضوع غير موجود",
|
||||
"no-post": "رد غير موجود",
|
||||
@@ -33,41 +36,55 @@
|
||||
"no-emailers-configured": "لا يمكن إرسال رسالة إلكترونية تجريبية لعدم وجود قوالب خاصة بالرسائل الإلكترونية،",
|
||||
"category-disabled": "قائمة معطلة",
|
||||
"topic-locked": "الموضوع مقفول",
|
||||
"post-edit-duration-expired": "You are only allowed to edit posts for %1 second(s) after posting",
|
||||
"still-uploading": "الرجاء انتظار الرفع",
|
||||
"content-too-short": "المرجو إدخال موضوع أطول من هذا. يجب أن تتوفر المواضيع على %1 حروف على الأقل.",
|
||||
"title-too-short": "المرجو إدخال عنوان أطول من هذا. يجب أن تتوفر العناوين على %1 حروف على الأقل.",
|
||||
"title-too-long": "المرجو إدخال عنوان أقصر من هذا. يجب ألا تتجاوز العناوين %1 حرفًا.",
|
||||
"too-many-posts": "يمكنك إنشاء المواضيع بمعدل موضوع واحد كل %1 ثانية - المرجو الانتظار قليلا.",
|
||||
"too-many-posts-newbie": "بصفتك مستخدمًا جديدًا، يمكنك إنشاء المواضيع بمعدل موضوع واحد كل %1 ثانية حتى تحصل على سمعة %2 - المرجو الانتظار قليلا.",
|
||||
"file-too-big": "حجم الملفات الأقصى المسموح به هو %1 كب - المرجو رفع ملف أقل حجمًا",
|
||||
"content-too-short": "Please enter a longer post. Posts should contain at least %1 character(s).",
|
||||
"content-too-long": "Please enter a shorter post. Posts can't be longer than %1 character(s).",
|
||||
"title-too-short": "Please enter a longer title. Titles should contain at least %1 character(s).",
|
||||
"title-too-long": "Please enter a shorter title. Titles can't be longer than %1 character(s).",
|
||||
"too-many-posts": "You can only post once every %1 second(s) - please wait before posting again",
|
||||
"too-many-posts-newbie": "As a new user, you can only post once every %1 second(s) until you have earned %2 reputation - please wait before posting again",
|
||||
"tag-too-short": "Please enter a longer tag. Tags should contain at least %1 character(s)",
|
||||
"tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 character(s)",
|
||||
"not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)",
|
||||
"too-many-tags": "Too many tags. Topics can't have more than %1 tag(s)",
|
||||
"file-too-big": "Maximum allowed file size is %1 kB - please upload a smaller file",
|
||||
"cant-vote-self-post": "لايمكنك التصويت لردك",
|
||||
"already-favourited": "لقد سبق وأضفت هذا الرد إلى المفضلة",
|
||||
"already-unfavourited": "لقد سبق وحذفت هذا الرد من المفضلة",
|
||||
"cant-ban-other-admins": "لايمكن حظر مدبر نظام آخر.",
|
||||
"cant-remove-last-admin": "You are the only administrator. Add another user as an administrator before removing yourself as admin",
|
||||
"invalid-image-type": "Invalid image type. Allowed types are: %1",
|
||||
"invalid-image-extension": "Invalid image extension",
|
||||
"invalid-file-type": "Invalid file type. Allowed types are: %1",
|
||||
"group-name-too-short": "اسم المجموعة قصير",
|
||||
"group-already-exists": "المجموعة موجودة مسبقا",
|
||||
"group-name-change-not-allowed": "لايسمح بتغيير أسماء المجموعات",
|
||||
"group-already-member": "You are already part of this group",
|
||||
"group-needs-owner": "This group requires at least one owner",
|
||||
"group-already-member": "أنت بالفعل عضو في هذه المجموعة ",
|
||||
"group-needs-owner": "هذه المجموعة تتطلب مالك واحد على اﻷقل",
|
||||
"group-already-invited": "This user has already been invited",
|
||||
"group-already-requested": "Your membership request has already been submitted",
|
||||
"post-already-deleted": "سبق وتم حذف هذا الرد",
|
||||
"post-already-restored": "سبق وتم إلغاء حذف هذا الرد",
|
||||
"topic-already-deleted": "سبق وتم حذف هذا الموضوع",
|
||||
"topic-already-restored": "سبق وتم إلغاء حذف هذا الرد",
|
||||
"cant-purge-main-post": "You can't purge the main post, please delete the topic instead",
|
||||
"topic-thumbnails-are-disabled": "الصور المصغرة غير مفعلة.",
|
||||
"invalid-file": "ملف غير مقبول",
|
||||
"uploads-are-disabled": "رفع الملفات غير مفعل",
|
||||
"upload-error": "مشكلة في الرفع: 1%",
|
||||
"signature-too-long": "عذرا، توقيعك يجب ألا يتجاوز %1 حرفًا",
|
||||
"signature-too-long": "عذرا، توقيعك يجب ألا يتجاوز %1 حرفًا.",
|
||||
"about-me-too-long": "Sorry, your about me cannot be longer than %1 character(s).",
|
||||
"cant-chat-with-yourself": "لايمكنك فتح محادثة مع نفسك",
|
||||
"chat-restricted": "هذا المستخدم عطل المحادثات الواردة عليه. يجب أن يتبعك حتى تتمكن من فتح محادثة معه.",
|
||||
"too-many-messages": "You have sent too many messages, please wait awhile.",
|
||||
"too-many-messages": "لقد أرسلت الكثير من الرسائل، الرجاء اﻹنتظار قليلاً",
|
||||
"reputation-system-disabled": "نظام السمعة معطل",
|
||||
"downvoting-disabled": "التصويتات السلبية معطلة",
|
||||
"not-enough-reputation-to-downvote": "ليس لديك سمعة تكفي لإضافة صوت سلبي لهذا الموضوع",
|
||||
"not-enough-reputation-to-flag": "ليس لديك سمعة تكفي للإشعار بموضوع مخل",
|
||||
"already-flagged": "You have already flagged this post",
|
||||
"reload-failed": "المنتدى واجه مشكلة أثناء إعادة التحميل: \"%1\". سيواصل المنتدى خدمة العملاء السابقين لكن يجب عليك إلغاء أي تغيير قمت به قبل إعادة التحميل.",
|
||||
"registration-error": "حدث خطأ أثناء التسجيل",
|
||||
"parse-error": "Something went wrong while parsing server response"
|
||||
"parse-error": "حدث خطأ ما أثناء تحليل استجابة الخادم",
|
||||
"wrong-login-type-email": "الرجاء استعمال بريدك اﻹلكتروني للدخول",
|
||||
"wrong-login-type-username": "الرجاء استعمال اسم المستخدم الخاص بك للدخول"
|
||||
}
|
||||
@@ -3,7 +3,7 @@
|
||||
"search": "بحث",
|
||||
"buttons.close": "أغلق",
|
||||
"403.title": "غير مسموح بالدخول",
|
||||
"403.message": "You seem to have stumbled upon a page that you do not have access to.",
|
||||
"403.message": "يبدو أنك قد تعثرت على صفحة لا تمتلك الصلاحية للدخول إليها",
|
||||
"403.login": "Perhaps you should <a href='%1/login'>try logging in</a>?",
|
||||
"404.title": "لم يتم العثور",
|
||||
"404.message": "You seem to have stumbled upon a page that does not exist. Return to the <a href='%1/'>home page</a>.",
|
||||
@@ -22,12 +22,13 @@
|
||||
"pagination.out_of": "%1 من %2",
|
||||
"pagination.enter_index": "أدخل الرقم التسلسلي",
|
||||
"header.admin": "مدبر نظام",
|
||||
"header.categories": "Categories",
|
||||
"header.recent": "حديث",
|
||||
"header.unread": "غير مقروء",
|
||||
"header.tags": "وسم",
|
||||
"header.popular": "الأكثر شهرة",
|
||||
"header.users": "المستخدمين",
|
||||
"header.groups": "Groups",
|
||||
"header.groups": "المجموعات",
|
||||
"header.chats": "المحادثات",
|
||||
"header.notifications": "التنبيهات",
|
||||
"header.search": "بحث",
|
||||
@@ -50,6 +51,7 @@
|
||||
"views": "المشاهدات",
|
||||
"reputation": "السمعة",
|
||||
"read_more": "اقرأ المزيد",
|
||||
"more": "More",
|
||||
"posted_ago_by_guest": "كتب %1 من طرف زائر",
|
||||
"posted_ago_by": "كتب %1 من طرف %2",
|
||||
"posted_ago": "كتب %1",
|
||||
@@ -75,7 +77,7 @@
|
||||
"updated.title": "تم تحديث المنتدى",
|
||||
"updated.message": "لقد تم تحديث المنتدى إلى آخر نسخة للتو. المرجو إعادة تحميل الصفحة.",
|
||||
"privacy": "الخصوصية",
|
||||
"follow": "Follow",
|
||||
"unfollow": "Unfollow",
|
||||
"follow": "متابعة",
|
||||
"unfollow": "إلغاء المتابعة",
|
||||
"delete_all": "حذف الكل"
|
||||
}
|
||||
@@ -1,21 +1,49 @@
|
||||
{
|
||||
"groups": "المجموعات",
|
||||
"view_group": "معاينة المجموعة",
|
||||
"owner": "Group Owner",
|
||||
"new_group": "Create New Group",
|
||||
"no_groups_found": "There are no groups to see",
|
||||
"cover-instructions": "Drag and Drop a photo, drag to position, and hit <strong>Save</strong>",
|
||||
"cover-change": "Change",
|
||||
"cover-save": "Save",
|
||||
"cover-saving": "Saving",
|
||||
"owner": "مالك المجموعة",
|
||||
"new_group": "أنشئ مجموعة جديدة",
|
||||
"no_groups_found": "لاوجدود لمجموعات يمكن معاينتها",
|
||||
"pending.accept": "موافق",
|
||||
"pending.reject": "رفض",
|
||||
"pending.accept_all": "Accept All",
|
||||
"pending.reject_all": "Reject All",
|
||||
"pending.none": "There are no pending members at this time",
|
||||
"invited.none": "There are no invited members at this time",
|
||||
"invited.uninvite": "Rescind Invitation",
|
||||
"invited.search": "Search for a user to invite to this group",
|
||||
"cover-instructions": "اسحب وأسقِط صورة، اسحبها للموضع المرغوب، وانقر على <strong>حفظ</strong>",
|
||||
"cover-change": "تغيير",
|
||||
"cover-save": "حفظ",
|
||||
"cover-saving": "جاري الحفظ",
|
||||
"details.title": "تفاصيل المجموعة",
|
||||
"details.members": "لائحة الأعضاء",
|
||||
"details.pending": "Pending Members",
|
||||
"details.pending": "المستخدمون في الانتظار",
|
||||
"details.invited": "Invited Members",
|
||||
"details.has_no_posts": "أعضاء هذه المجموعة لم يضيفوا أية مشاركة",
|
||||
"details.latest_posts": "آخر المشاركات",
|
||||
"details.private": "Private Group",
|
||||
"details.public": "Public Group",
|
||||
"details.owner_options": "Group Administration",
|
||||
"event.updated": "Group details have been updated",
|
||||
"event.deleted": "The group \"%1\" has been deleted"
|
||||
"details.private": "خاص",
|
||||
"details.grant": "منح/سحب المِلكية",
|
||||
"details.kick": "طرد",
|
||||
"details.owner_options": "إدارة المجموعة",
|
||||
"details.group_name": "اسم المجموعة",
|
||||
"details.member_count": "عدد اﻷعضاء",
|
||||
"details.creation_date": "تاريخ الإنشاء",
|
||||
"details.description": "الوصف",
|
||||
"details.badge_preview": "معاينة الوسام",
|
||||
"details.change_icon": "تغيير الأيقونة",
|
||||
"details.change_colour": "تغيير اللون",
|
||||
"details.badge_text": "نص الوسام",
|
||||
"details.userTitleEnabled": "إظهار الوسام",
|
||||
"details.private_help": "في حالة تفعيل الخيار، الانضمام إلى المجموعة يستلزم قبول مالكها",
|
||||
"details.hidden": "مخفي",
|
||||
"details.hidden_help": "في حالة تفعيل الخيار، لن تظهر المجموعة للعموم والإنضمام إليها سيتلزم دعوة يدوية.",
|
||||
"details.delete_group": "Delete Group",
|
||||
"event.updated": "تم تحديث بيانات المجموعة",
|
||||
"event.deleted": "تم حذف المجموعة %1",
|
||||
"membership.accept-invitation": "Accept Invitation",
|
||||
"membership.invitation-pending": "Invitation Pending",
|
||||
"membership.join-group": "Join Group",
|
||||
"membership.leave-group": "Leave Group",
|
||||
"membership.reject": "Reject"
|
||||
}
|
||||
@@ -1,9 +1,11 @@
|
||||
{
|
||||
"username": "اسم المستخدم / عنوان البريد الإلكتروني",
|
||||
"username-email": "اسم المستخدم / البريد الإلكتروني",
|
||||
"username": "اسم المستخدم",
|
||||
"email": "البريد الإلكتروني",
|
||||
"remember_me": "تذكرني؟",
|
||||
"forgot_password": "نسيت كلمة المرور؟",
|
||||
"alternative_logins": "تسجيلات الدخول البديلة",
|
||||
"failed_login_attempt": "فشلت محاولة تسجيل الدخول، يرجى المحاولة مرة أخرى.",
|
||||
"login_successful": "قمت بتسجيل الدخول بنجاح!",
|
||||
"dont_have_account": "لم تفتح حسابك بعد؟"
|
||||
"dont_have_account": "لا تملك حساب؟"
|
||||
}
|
||||
@@ -15,7 +15,12 @@
|
||||
"chat.seven_days": "7 أيام",
|
||||
"chat.thirty_days": "30 يومًا",
|
||||
"chat.three_months": "3 أشهر",
|
||||
"composer.compose": "اكتب",
|
||||
"composer.show_preview": "عرض المعاينة",
|
||||
"composer.hide_preview": "إخفاء المعاينة",
|
||||
"composer.user_said_in": "%1 كتب في %2",
|
||||
"composer.user_said": "%1 كتب:",
|
||||
"composer.discard": "هل أنت متأكد أنك تريد التخلي عن التغييرات؟"
|
||||
"composer.discard": "هل أنت متأكد أنك تريد التخلي عن التغييرات؟",
|
||||
"composer.submit_and_lock": "Submit and Lock",
|
||||
"composer.toggle_dropdown": "Toggle Dropdown"
|
||||
}
|
||||
@@ -1,7 +1,8 @@
|
||||
{
|
||||
"title": "تنبيهات",
|
||||
"title": "التنبيهات",
|
||||
"no_notifs": "ليس لديك أية تنبيهات جديدة",
|
||||
"see_all": "معاينة كل التنبيهات",
|
||||
"mark_all_read": "اجعل كل التنبيهات مقروءة",
|
||||
"back_to_home": "عودة إلى %1",
|
||||
"outgoing_link": "رابط خارجي",
|
||||
"outgoing_link_message": "أنت تغادر %1 حاليا.",
|
||||
@@ -19,9 +20,9 @@
|
||||
"user_posted_topic": "<strong>%1</strong> أنشأ موضوعًا جديدًا: <strong>%2</strong>",
|
||||
"user_mentioned_you_in": "<strong>%1</strong> ذكرَ اسمك في <strong>%2</strong>",
|
||||
"user_started_following_you": "<strong>%1</strong> صار يتابعك.",
|
||||
"new_register": "<strong>%1</strong> sent a registration request.",
|
||||
"email-confirmed": "تم التحقق من عنوان البريد الإلكتروني",
|
||||
"email-confirmed-message": "شكرًا على إثبات صحة عنوان بريدك الإلكتروني. صار حسابك مفعلًا بالكامل.",
|
||||
"email-confirm-error": "حدث خطأ ما...",
|
||||
"email-confirm-error-message": "حدث خطأ أثناء التحقق من عنوان بريدك الإلكتروني. ربما رمز التفعيل خاطئ أو انتهت صلاحيته.",
|
||||
"email-confirm-sent": "تم إرسال بريد التفعيل."
|
||||
}
|
||||
@@ -1,18 +1,21 @@
|
||||
{
|
||||
"home": "الصفحة الرئيسية",
|
||||
"unread": "المواضيع غير المقروءة",
|
||||
"unread": "المواضيع الغير مقروءة",
|
||||
"popular": "المواضيع الأكثر شهرة",
|
||||
"recent": "المواضيع الحديثة",
|
||||
"users": "المستخدمون المسجلون",
|
||||
"users": "اﻷعضاء المسجلون",
|
||||
"notifications": "التنبيهات",
|
||||
"tags": "المواضيع المرتبطة بالوسم %1",
|
||||
"tags": "الكلمات الدلالية",
|
||||
"tag": "Topics tagged under \"%1\"",
|
||||
"user.edit": "تعديل \"%1\"",
|
||||
"user.following": "المستخدمون الذين يتبعهم %1",
|
||||
"user.followers": "المستخدمون الذين يتبعون %1",
|
||||
"user.posts": "ردود %1",
|
||||
"user.topics": "مواضيع %1",
|
||||
"user.groups": "مجموعات %1",
|
||||
"user.favourites": "مفضلات %1",
|
||||
"user.settings": "خيارات المستخدم",
|
||||
"user.watched": "المواضيع المتابعة من قبل %1 ",
|
||||
"maintenance.text": "جاري صيانة %1. المرجو العودة لاحقًا.",
|
||||
"maintenance.messageIntro": "بالإضافة إلى ذلك، قام مدبر النظام بترك هذه الرسالة:"
|
||||
}
|
||||
@@ -5,14 +5,15 @@
|
||||
"month": "شهر",
|
||||
"year": "سنة",
|
||||
"alltime": "دائمًا",
|
||||
"no_recent_topics": "لاوجود لمشاركات جديدة",
|
||||
"there-is-a-new-topic": "There is a new topic.",
|
||||
"there-is-a-new-topic-and-a-new-post": "There is a new topic and a new post.",
|
||||
"there-is-a-new-topic-and-new-posts": "There is a new topic and %1 new posts.",
|
||||
"there-are-new-topics": "There are %1 new topics.",
|
||||
"there-are-new-topics-and-a-new-post": "There are %1 new topics and a new post.",
|
||||
"there-are-new-topics-and-new-posts": "There are %1 new topics and %2 new posts.",
|
||||
"there-is-a-new-post": "There is a new post.",
|
||||
"there-are-new-posts": "There are %1 new posts.",
|
||||
"click-here-to-reload": "Click here to reload."
|
||||
"no_recent_topics": "لايوجد مواضيع جديدة",
|
||||
"no_popular_topics": "There are no popular topics.",
|
||||
"there-is-a-new-topic": "يوجد موضوع جديد",
|
||||
"there-is-a-new-topic-and-a-new-post": "يوجد موضوع جديد و رد جديد",
|
||||
"there-is-a-new-topic-and-new-posts": "يوجد موضوع جديد و %1 ردود جديدة ",
|
||||
"there-are-new-topics": "يوجد %1 مواضيع جديدة",
|
||||
"there-are-new-topics-and-a-new-post": "يوجد %1 مواضيع جديدة و رد جديد",
|
||||
"there-are-new-topics-and-new-posts": "يوجد %1 مواضيع جديدة و %2 مشاركات جديدة",
|
||||
"there-is-a-new-post": "يوجد مشاركة جديدة",
|
||||
"there-are-new-posts": "يوجد %1 مشاركات جديدة",
|
||||
"click-here-to-reload": "إضغط هنا لإعادة التحميل"
|
||||
}
|
||||
@@ -1,18 +1,19 @@
|
||||
{
|
||||
"register": "تسجيل",
|
||||
"help.email": "افتراضيا، سيتم إخفاء بريدك الإلكتروني من الجمهور.",
|
||||
"help.email": "افتراضيا، سيتم إخفاء بريدك الإلكتروني من العامة.",
|
||||
"help.username_restrictions": "اسم مستخدم فريدة من نوعها بين1% و2% حرفا. يمكن للآخرين ذكرك @ <'span id='your-username> اسم المستخدم </span>.",
|
||||
"help.minimum_password_length": "كلمتك السر يجب أن تكون على الأقل متألفة من 1% أحرف",
|
||||
"help.minimum_password_length": "كلمة المرور يجب أن تكون على الأقل بها 1% أحرف",
|
||||
"email_address": "عنوان البريد الإلكتروني",
|
||||
"email_address_placeholder": "ادخل عنوان البريد الإلكتروني",
|
||||
"username": "اسم المستخدم",
|
||||
"username_placeholder": "أدخل اسم المستخدم",
|
||||
"password": "كلمة السر",
|
||||
"password_placeholder": "أدخل كلمة السر",
|
||||
"confirm_password": "تأكيد كلمة السر",
|
||||
"confirm_password_placeholder": "تأكيد كلمة السر",
|
||||
"password": "كلمة المرور",
|
||||
"password_placeholder": "أدخل كلمة المرور",
|
||||
"confirm_password": "تأكيد كلمة المرور",
|
||||
"confirm_password_placeholder": "تأكيد كلمة المرور",
|
||||
"register_now_button": "قم بالتسجيل الآن",
|
||||
"alternative_registration": "طريقة تسجيل بديلة",
|
||||
"terms_of_use": "قوانين الاستخدام",
|
||||
"agree_to_terms_of_use": "أوافق على قوانين الاستخدام"
|
||||
"terms_of_use": "شروط الاستخدام",
|
||||
"agree_to_terms_of_use": "أوافق على شروط الاستخدام",
|
||||
"registration-added-to-queue": "Your registration has been added to the approval queue. You will receive an email when it is accepted by an administrator."
|
||||
}
|
||||
@@ -1,14 +1,17 @@
|
||||
{
|
||||
"reset_password": "إعادة تعيين كلمة السر",
|
||||
"update_password": "تحديث كلمة السر",
|
||||
"password_changed.title": "تم تغير كلمة السر",
|
||||
"password_changed.message": "<p>تم تغير كلمة السر بنجاح. يرجى <a href='/login'>إعادة الدخول</a></p>",
|
||||
"reset_password": "إعادة تعيين كلمة المرور",
|
||||
"update_password": "تحديث كلمة المرور",
|
||||
"password_changed.title": "تم تغير كلمة المرور",
|
||||
"password_changed.message": "<p>تم تغير كلمة المرور بنجاح، الرجاء <a href='/login'>إعادة الدخول</a></p>",
|
||||
"wrong_reset_code.title": "رمز إعادة التعيين غير صحيح",
|
||||
"wrong_reset_code.message": "رمز إعادة التعين غير صحيح، يرجى المحاولة مرة أخرى أو <a href='/reset'>اطلب رمزا جديدا</a>",
|
||||
"new_password": "كلمة السر الجديدة",
|
||||
"repeat_password": "تأكيد كلمة السر",
|
||||
"new_password": "كلمة المرور الجديدة",
|
||||
"repeat_password": "تأكيد كلمة المرور",
|
||||
"enter_email": "يرجى إدخال <strong>عنوان البريد الإلكتروني</strong> الخاص بك وسوف نرسل لك رسالة بالبريد الالكتروني مع تعليمات حول كيفية إستعادة حسابك.",
|
||||
"enter_email_address": "ادخل عنوان البريد الإلكتروني",
|
||||
"password_reset_sent": "إعادة تعيين كلمة السر أرسلت",
|
||||
"invalid_email": "بريد إلكتروني غير صالح أو غير موجود"
|
||||
"invalid_email": "بريد إلكتروني غير صالح أو غير موجود",
|
||||
"password_too_short": "كلمة المرور التي أدخلتها قصيرة، الرجاء اختر كلمة مرور مختلفة",
|
||||
"passwords_do_not_match": "كلمتا السر التي أدخلتهما غير متطابقتان",
|
||||
"password_expired": "لقد انتهت صلاحية كلمة المرور الخاصة بك، الرجاء اختيار كلمة مرور جديدة"
|
||||
}
|
||||
@@ -1,7 +1,40 @@
|
||||
{
|
||||
"results_matching": "%1 نتيجة (نتائج) موافقة ل \"%2\", (%3 ثواني)",
|
||||
"no-matches": "No matches found",
|
||||
"in": "In",
|
||||
"by": "By",
|
||||
"posted-by": "Posted by"
|
||||
"results_matching": "%1 نتيجة (نتائج) موافقة لـ \"%2\", (%3 ثواني)",
|
||||
"no-matches": "لم يتم العثور على نتائج.",
|
||||
"advanced-search": "بحث متقدم",
|
||||
"in": "في",
|
||||
"titles": "العناوين",
|
||||
"titles-posts": "العناوين والمشاركات",
|
||||
"posted-by": "مشاركة من طرف",
|
||||
"in-categories": "في الفئات",
|
||||
"search-child-categories": "بحث في الفئات الفرعية",
|
||||
"reply-count": "عدد المشاركات",
|
||||
"at-least": "على اﻷقل",
|
||||
"at-most": "على اﻷكثر",
|
||||
"post-time": "تاريخ المشاركة",
|
||||
"newer-than": "أحدث من",
|
||||
"older-than": "أقدم من",
|
||||
"any-date": "أي وقت",
|
||||
"yesterday": "أمس",
|
||||
"one-week": "أسبوع",
|
||||
"two-weeks": "أسبوعان",
|
||||
"one-month": "شهر",
|
||||
"three-months": "ثلاثة أشهر",
|
||||
"six-months": "ستة أشهر",
|
||||
"one-year": "عام",
|
||||
"sort-by": "عرض حسب",
|
||||
"last-reply-time": "تاريخ آخر رد",
|
||||
"topic-title": "عنوان الموضوع",
|
||||
"number-of-replies": "عدد الردود",
|
||||
"number-of-views": "عدد المشاهدات",
|
||||
"topic-start-date": "تاريخ بدأ الموضوع",
|
||||
"username": "اسم المستخدم",
|
||||
"category": "فئة",
|
||||
"descending": "في ترتيب تنازلي",
|
||||
"ascending": "في ترتيب تصاعدي",
|
||||
"save-preferences": "حفظ التفضيلات",
|
||||
"clear-preferences": "ازالة التفضيلات",
|
||||
"search-preferences-saved": "تم حفظ تفضيلات البحث",
|
||||
"search-preferences-cleared": "تم ازالة تفضيلات البحث",
|
||||
"show-results-as": "عرض النتائج كـ"
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"no_tag_topics": "لاوجود لمواضيع تحمل هذا الوسم.",
|
||||
"tags": "بطاقات",
|
||||
"enter_tags_here": "أدخل البطاقات هنا. اضغط ENTER بعد كل بطاقة.",
|
||||
"enter_tags_here_short": "أدخل البطاقات...",
|
||||
"no_tags": "لاتوجد هناك بطاقات بعد."
|
||||
"no_tag_topics": "لا يوجد مواضيع بهذه الكلمة الدلالية.",
|
||||
"tags": "الكلمات الدلالية",
|
||||
"enter_tags_here": "Enter tags here, between %1 and %2 characters each.",
|
||||
"enter_tags_here_short": "أدخل الكلمات الدلالية...",
|
||||
"no_tags": "لا يوجد كلمات دلالية بعد."
|
||||
}
|
||||
@@ -5,6 +5,7 @@
|
||||
"no_topics_found": "لا توجد مواضيع !",
|
||||
"no_posts_found": "لا توجد مشاركات!",
|
||||
"post_is_deleted": "هذه المشاركة محذوفة!",
|
||||
"topic_is_deleted": "هذا الموضوع محذوف",
|
||||
"profile": "الملف الشخصي",
|
||||
"posted_by": "كتب من طرف %1",
|
||||
"posted_by_guest": "كتب من طرف زائر",
|
||||
@@ -12,20 +13,21 @@
|
||||
"notify_me": "تلق تنبيهات بالردود الجديدة في هذا الموضوع",
|
||||
"quote": "اقتبس",
|
||||
"reply": "رد",
|
||||
"guest-login-reply": "يجب عليك تسجيل الدخول للرد",
|
||||
"edit": "تعديل",
|
||||
"delete": "حذف",
|
||||
"purge": "تطهير",
|
||||
"restore": "استعادة",
|
||||
"move": "انقل",
|
||||
"move": "نقل",
|
||||
"fork": "فرع",
|
||||
"link": "رابط",
|
||||
"share": "نشر",
|
||||
"tools": "أدوات",
|
||||
"flag": "اشعار بمشاركة مخلة",
|
||||
"flag": "تبليغ",
|
||||
"locked": "مقفل",
|
||||
"bookmark_instructions": "انقر هنا للإكمال أو أغلق للإلغاء.",
|
||||
"bookmark_instructions": "إضغط هنا للعودة إلى آخر موضع أو غلق للإلغاء",
|
||||
"flag_title": "إشعار بمشاركة مخلة.",
|
||||
"flag_confirm": "هل تريد حقًّا أن تشعر بهذه المشاركة على أنها مخلة؟",
|
||||
"flag_confirm": "هل تريد حقًّا التبليغ بهذه المشاركة؟",
|
||||
"flag_success": "تم الإشعار بهذه المشاركة على أنها مخلة",
|
||||
"deleted_message": "هذه المشاركة محذوفة. فقط من لهم صلاحية الإشراف على ا لمشاركات يمكنهم معاينتها.",
|
||||
"following_topic.message": "ستستلم تنبيها عند كل مشاركة جديدة في هذا الموضوع.",
|
||||
@@ -74,7 +76,7 @@
|
||||
"fork_no_pids": "لم تختر أي مشاركة",
|
||||
"fork_success": "تم إنشاء فرع للموضوع بنجاح! إضغط هنا لمعاينة الفرع.",
|
||||
"composer.title_placeholder": "أدخل عنوان موضوعك هنا...",
|
||||
"composer.handle_placeholder": "Name",
|
||||
"composer.handle_placeholder": "اﻹسم",
|
||||
"composer.discard": "نبذ التغييرات",
|
||||
"composer.submit": "حفظ",
|
||||
"composer.replying_to": "الرد على %1",
|
||||
@@ -94,5 +96,5 @@
|
||||
"oldest_to_newest": "من الأقدم إلى الأحدث",
|
||||
"newest_to_oldest": "من الأحدث إلى الأقدم",
|
||||
"most_votes": "الأكثر تصويتًا",
|
||||
"most_posts": "Most posts"
|
||||
"most_posts": "اﻷكثر رداً"
|
||||
}
|
||||
@@ -3,7 +3,8 @@
|
||||
"no_unread_topics": "ليس هناك أي موضوع غير مقروء",
|
||||
"load_more": "حمل المزيد",
|
||||
"mark_as_read": "حدد غير مقروء",
|
||||
"selected": "المختارة",
|
||||
"selected": "المحددة",
|
||||
"all": "الكل",
|
||||
"all_categories": "All categories",
|
||||
"topics_marked_as_read.success": "تم تحديد المواضيع على أنها مقروءة!"
|
||||
}
|
||||
@@ -1,13 +1,17 @@
|
||||
{
|
||||
"banned": "محظور",
|
||||
"offline": "ليس موجود حالياً",
|
||||
"offline": "غير متصل",
|
||||
"username": "إسم المستخدم",
|
||||
"joindate": "Join Date",
|
||||
"postcount": "Post Count",
|
||||
"joindate": "تاريخ الإنضمام",
|
||||
"postcount": "عدد المشاركات",
|
||||
"email": "البريد الإلكتروني",
|
||||
"confirm_email": "تأكيد عنوان البريد الإلكتروني",
|
||||
"ban_account": "Ban Account",
|
||||
"ban_account_confirm": "Do you really want to ban this user?",
|
||||
"unban_account": "Unban Account",
|
||||
"delete_account": "حذف الحساب",
|
||||
"delete_account_confirm": "هل أن متأكد أنك تريد حذف حسابك؟<br /><strong> هذه العملية غير قابلة للإلغاء ولن يكون بالإمكان استعادة بياناتك</strong><br /><br />أدخل اسم المستخدم الخاص بك لتأكيد عملية الحذف",
|
||||
"delete_this_account_confirm": "Are you sure you want to delete this account? <br /><strong>This action is irreversible and you will not be able to recover any data</strong><br /><br />",
|
||||
"fullname": "الاسم الكامل",
|
||||
"website": "الموقع الإلكتروني",
|
||||
"location": "الموقع",
|
||||
@@ -15,24 +19,26 @@
|
||||
"joined": "تاريخ التسجيل",
|
||||
"lastonline": "تاريخ آخر دخول",
|
||||
"profile": "الملف الشخصي",
|
||||
"profile_views": "عدد مشاهدات الملف الشخصي",
|
||||
"profile_views": "عدد المشاهدات",
|
||||
"reputation": "السمعة",
|
||||
"favourites": "المفضلات",
|
||||
"watched": "Watched",
|
||||
"favourites": "التفضيلات",
|
||||
"watched": "متابع",
|
||||
"followers": "المتابعون",
|
||||
"following": "يتابع",
|
||||
"aboutme": "معلومة عنك او السيرة الذاتية",
|
||||
"signature": "توقيع",
|
||||
"gravatar": "Gravatar",
|
||||
"birthday": "عيد ميلاد",
|
||||
"chat": "محادثة",
|
||||
"follow": "تابع",
|
||||
"unfollow": "إلغاء المتابعة",
|
||||
"more": "المزيد",
|
||||
"profile_update_success": "تم تحديث الملف الشخصي بنجاح",
|
||||
"change_picture": "تغيير الصورة",
|
||||
"edit": "تعديل",
|
||||
"uploaded_picture": "الصورة المرفوعة",
|
||||
"upload_new_picture": "رفع صورة جديدة",
|
||||
"upload_new_picture_from_url": "رفع صورة جديدة بواسطة رابط",
|
||||
"upload_new_picture_from_url": "رفع صورة جديدة من رابط",
|
||||
"current_password": "كلمة السر الحالية",
|
||||
"change_password": "تغيير كلمة السر",
|
||||
"change_password_error": "كلمة سر غير صحيحة",
|
||||
@@ -47,7 +53,6 @@
|
||||
"upload_picture": "ارفع الصورة",
|
||||
"upload_a_picture": "رفع صورة",
|
||||
"image_spec": "لايمكنك رفع إلا الصور ذات الصيغ PNG أو JPG أو GIF.",
|
||||
"max": "الحد الأقصى",
|
||||
"settings": "خيارات",
|
||||
"show_email": "أظهر بريدي الإلكتروني",
|
||||
"show_fullname": "أظهر اسمي الكامل",
|
||||
@@ -60,21 +65,24 @@
|
||||
"digest_monthly": "شهريًّا",
|
||||
"send_chat_notifications": "استلام رسالة إلكترونية عند ورود محادثة وأنا غير متصل.",
|
||||
"send_post_notifications": "Send an email when replies are made to topics I am subscribed to",
|
||||
"settings-require-reload": "تغيير بعض اﻹعدادات يتطلب تحديث الصفحة. إضغط هنا لتحديث الصفحة",
|
||||
"has_no_follower": "هذا المستخدم ليس لديه أي متابع :(",
|
||||
"follows_no_one": "هذا المستخدم لا يتابع أحد :(",
|
||||
"has_no_posts": "هذا المستخدم لم يكتب أي شيء بعد.",
|
||||
"has_no_topics": "هذا المستخدم لم ينشئ أي موضوع بعد.",
|
||||
"has_no_watched_topics": "This user didn't watch any topics yet.",
|
||||
"has_no_posts": "This user hasn't posted anything yet.",
|
||||
"has_no_topics": "This user hasn't posted any topics yet.",
|
||||
"has_no_watched_topics": "This user hasn't watched any topics yet.",
|
||||
"email_hidden": "البريد الإلكتروني مخفي",
|
||||
"hidden": "مخفي",
|
||||
"paginate_description": "عرض المواضيع والردود موزعة على صفحات عوض صفحة واحدة.",
|
||||
"paginate_description": "Paginate topics and posts instead of using infinite scroll",
|
||||
"topics_per_page": "المواضيع في كل صفحة",
|
||||
"posts_per_page": "الردود في كل صفحة",
|
||||
"notification_sounds": "تشغيل ملف صوتي عند استلام التنبيهات.",
|
||||
"notification_sounds": "تشغيل صوت عند تلقي تنبيه",
|
||||
"browsing": "خيارات التصفح",
|
||||
"open_links_in_new_tab": "فتح الروابط الخارجية في تبويب جديد؟",
|
||||
"open_links_in_new_tab": "فتح الروابط الخارجية في نافدة جديدة",
|
||||
"enable_topic_searching": "تفعيل خاصية البحث داخل المواضيع",
|
||||
"topic_search_help": "في حالة تفعيلها، ستعوض خاصيةُ البحث داخل المواضيع خاصيةَ البحث الخاصة بالمتصفح، فتمكنك بالتالي بالبحث في الموضوع بأكمله دون الاقتصار على مايظهر في الشاشة فحسب.",
|
||||
"follow_topics_you_reply_to": "متابعة المشاركات التي ترد عليها",
|
||||
"follow_topics_you_create": "متابعة المشاركات التي تكتبها"
|
||||
"topic_search_help": "If enabled, in-topic searching will override the browser's default page search behaviour and allow you to search through the entire topic, instead of what is only shown on screen",
|
||||
"follow_topics_you_reply_to": "متابعة المواضيع التي تقوم بالرد فيها",
|
||||
"follow_topics_you_create": "متابعة المواضيع التي تنشئها",
|
||||
"grouptitle": "حدد عنوان المجموعة الذي تريد عرضه",
|
||||
"no-group-title": "لا يوجد عنوان للمجموعة"
|
||||
}
|
||||
@@ -1,12 +1,21 @@
|
||||
{
|
||||
"latest_users": "أحدث المستخدمين",
|
||||
"top_posters": "أكثر المشتركين",
|
||||
"latest_users": "أحدث الأعضاء",
|
||||
"top_posters": "اﻷكثر مشاركة",
|
||||
"most_reputation": "أعلى سمعة",
|
||||
"search": "بحث",
|
||||
"enter_username": "أدخل اسم مستخدم للبحث",
|
||||
"load_more": "حمل المزيد",
|
||||
"users-found-search-took": "تم إيجاد %1 مستخدمـ(ين)! استغرق البحث %2 ميليثانية.",
|
||||
"users-found-search-took": "تم إيجاد %1 مستخدمـ(ين)! استغرق البحث %2 ثانية.",
|
||||
"filter-by": "Filter By",
|
||||
"online-only": "Online only",
|
||||
"picture-only": "Picture only"
|
||||
"online-only": "المتصلون فقط",
|
||||
"picture-only": "صورة فقط",
|
||||
"invite": "Invite",
|
||||
"invitation-email-sent": "An invitation email has been sent to %1",
|
||||
"user_list": "قائمة اﻷعضاء",
|
||||
"recent_topics": "أحدث المواضيع",
|
||||
"popular_topics": "Popular Topics",
|
||||
"unread_topics": "المواضيع الغير مقروءة",
|
||||
"categories": "الفئات",
|
||||
"tags": "الكلمات الدلالية",
|
||||
"map": "Map"
|
||||
}
|
||||
12
public/language/bg/category.json
Normal file
12
public/language/bg/category.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"new_topic_button": "Нова тема",
|
||||
"guest-login-post": "Влезте, за да можете да публикувате",
|
||||
"no_topics": "<strong>Все още няма теми в тази категория.</strong><br />Защо не създадеш една?",
|
||||
"browsing": "Разглежда",
|
||||
"no_replies": "Все още никой не е отговорил",
|
||||
"share_this_category": "Споделяне на тази категория",
|
||||
"watch": "Следене",
|
||||
"ignore": "Игнориране",
|
||||
"watch.message": "Вече следите обновленията в тази категория",
|
||||
"ignore.message": "Вече не следите обновленията в тази категория"
|
||||
}
|
||||
32
public/language/bg/email.json
Normal file
32
public/language/bg/email.json
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"password-reset-requested": "Изпратена е заявка за подновяване на паролата – %1!",
|
||||
"welcome-to": "Добре дошли в %1",
|
||||
"invite": "Покана от %1",
|
||||
"greeting_no_name": "Здравейте",
|
||||
"greeting_with_name": "Здравейте, %1",
|
||||
"welcome.text1": "Благодарим Ви, че се регистрирахте с %1",
|
||||
"welcome.text2": "За да активирате напълно Вашия акаунт, трябва да потвърдите е-пощата, с която сте се регистрирали.",
|
||||
"welcome.text3": "Вашата заявка за регистрация беше приета от администратор. Вече можете да се впишете с Вашето потребителско име и парола.",
|
||||
"welcome.cta": "Натиснете тук, за да потвърдите Вашата е-поща.",
|
||||
"invitation.text1": "%1 Ви покани да се присъедините към %2",
|
||||
"invitation.ctr": "Натиснете тук, за да си създадете акаунт.",
|
||||
"reset.text1": "Получихме заявка за подновяване на Вашата парола, най-вероятно защото сте я забравили. Ако това не е така, моля не обръщайте внимание на това е-писмо.",
|
||||
"reset.text2": "За да продължите с процедурата по подновяване на паролата, моля последвайте следната връзка:",
|
||||
"reset.cta": "Натиснете тук, за да подновите паролата си",
|
||||
"reset.notify.subject": "Паролата беше променена успешно",
|
||||
"reset.notify.text1": "Известяваме Ви, че на %1, Вашата парола беше променена успешно.",
|
||||
"reset.notify.text2": "Ако не сте поискали това, моля, свържете се незабавно с администратор.",
|
||||
"digest.notifications": "Имате непрочетени известия от %1:",
|
||||
"digest.latest_topics": "Последни теми от %1",
|
||||
"digest.cta": "Натиснете тук, за да посетите %1",
|
||||
"digest.unsub.info": "Това резюме беше изпратено до Вас поради настройките Ви за абонаментите.",
|
||||
"digest.no_topics": "Не е имало дейност по темите в последните %1",
|
||||
"notif.chat.subject": "Получено е ново чат съобщение от %1",
|
||||
"notif.chat.cta": "Натиснете тук, за да продължите разговора",
|
||||
"notif.chat.unsub.info": "Това известие за чата беше изпратено до Вас поради настройките Ви за абонаментите.",
|
||||
"notif.post.cta": "Натиснете тук, за да прочетете цялата тема",
|
||||
"notif.post.unsub.info": "Това известие за публикация беше изпратено до Вас поради настройките Ви за абонаментите.",
|
||||
"test.text1": "Това е пробно е-писмо, за да потвърдим, че изпращачът на е-поща е правилно настроен за Вашия NodeBB.",
|
||||
"unsub.cta": "Натиснете тук, за да промените тези настройки",
|
||||
"closing": "Благодарим Ви!"
|
||||
}
|
||||
90
public/language/bg/error.json
Normal file
90
public/language/bg/error.json
Normal file
@@ -0,0 +1,90 @@
|
||||
{
|
||||
"invalid-data": "Невалидни данни",
|
||||
"not-logged-in": "Изглежда не сте влезли в системата.",
|
||||
"account-locked": "Вашият акаунт беше заключен временно",
|
||||
"search-requires-login": "Търсенето изисква акаунт – моля, влезте или се регистрирайте.",
|
||||
"invalid-cid": "Невалиден идентификатор на категория",
|
||||
"invalid-tid": "Невалиден идентификатор на тема",
|
||||
"invalid-pid": "Невалиден идентификатор на публикация",
|
||||
"invalid-uid": "Невалиден идентификатор на потребител",
|
||||
"invalid-username": "Невалидно потребителско име",
|
||||
"invalid-email": "Невалидна е-поща",
|
||||
"invalid-title": "Невалидно заглавие!",
|
||||
"invalid-user-data": "Невалидни потребителски данни",
|
||||
"invalid-password": "Невалидна парола",
|
||||
"invalid-username-or-password": "Моля, посочете потребителско име и парола",
|
||||
"invalid-search-term": "Невалиден текст за търсене",
|
||||
"invalid-pagination-value": "Невалиден номер на страница",
|
||||
"username-taken": "Потребителското име е заето",
|
||||
"email-taken": "Е-пощата е заета",
|
||||
"email-not-confirmed": "Вашата е-поща все още не е потвърдена. Моля, натиснете тук, за да потвърдите е-пощата си.",
|
||||
"email-not-confirmed-chat": "Няма да можете да пишете в чата, докато е-пощата Ви не бъде потвърдена. Моля, натиснете тук, за да потвърдите е-пощата си.",
|
||||
"no-email-to-confirm": "Този форум изисква потвърдена е-поща. Моля, натиснете тук, за да въведете е-поща",
|
||||
"email-confirm-failed": "Не успяхме да потвърдим е-пощата Ви. Моля, опитайте отново по-късно.",
|
||||
"confirm-email-already-sent": "Е-писмото за потвърждение вече е изпратено. Моля, почакайте още %1 минута/и, преди да изпратите ново.",
|
||||
"username-too-short": "Потребителското име е твърде кратко",
|
||||
"username-too-long": "Потребителското име е твърде дълго",
|
||||
"user-banned": "Потребителят е блокиран",
|
||||
"user-too-new": "Съжаляваме, но трябва да изчакате поне %1 секунда/и, преди да направите първата си публикация",
|
||||
"no-category": "Категорията не съществува",
|
||||
"no-topic": "Темата не съществува",
|
||||
"no-post": "Публикацията не съществува",
|
||||
"no-group": "Групата не съществува",
|
||||
"no-user": "Потребителят не съществува",
|
||||
"no-teaser": "Резюмето не съществува",
|
||||
"no-privileges": "Нямате достатъчно права за това действие.",
|
||||
"no-emailers-configured": "Добавките за е-поща не са заредени, така че не може да бъде изпратено пробно е-писмо",
|
||||
"category-disabled": "Категорията е изключена",
|
||||
"topic-locked": "Темата е заключена",
|
||||
"post-edit-duration-expired": "Можете да редактирате публикациите си до %1 секунда/и, след като ги пуснете",
|
||||
"still-uploading": "Моля, изчакайте качването да приключи.",
|
||||
"content-too-short": "Моля, въведете по-дълъг текст на публикацията. Публикациите трябва да съдържат поне %1 символ(а).",
|
||||
"content-too-long": "Моля, въведете по-кратък текст на публикацията. Публикациите трябва да съдържат не повече от %1 символ(а).",
|
||||
"title-too-short": "Моля, въведете по-дълго заглавие. Заглавията трябва да съдържат поне %1 символ(а).",
|
||||
"title-too-long": "Моля, въведете по-кратко заглавие. Заглавията трябва да съдържат не повече от %1 символ(а).",
|
||||
"too-many-posts": "Можете да публикувате веднъж на %1 секунда/и – моля, изчакайте малко, преди да опитате да публикувате отново",
|
||||
"too-many-posts-newbie": "Като нов потребител, Вие можете да публикувате веднъж на %1 секунда/и, докато не натрупате %2 репутация – моля, изчакайте малко, преди да опитате да публикувате отново",
|
||||
"tag-too-short": "Моля, въведете по-дълъг етикет. Етикетите трябва да съдържат поне %1 символ(а)",
|
||||
"tag-too-long": "Моля, въведете по-кратък етикет. Етикетите трябва да съдържат не повече от %1 символ(а)",
|
||||
"not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)",
|
||||
"too-many-tags": "Too many tags. Topics can't have more than %1 tag(s)",
|
||||
"file-too-big": "Максималният разрешен размер на файл е %1 КБ – моля, качете по-малък файл",
|
||||
"cant-vote-self-post": "Не можете да гласувате за собствената си публикация",
|
||||
"already-favourited": "Вече сте отбелязали тази публикация като любима",
|
||||
"already-unfavourited": "Вече сте премахнали тази публикация от любимите си",
|
||||
"cant-ban-other-admins": "Не можете да блокирате другите администратори!",
|
||||
"cant-remove-last-admin": "Вие сте единственият администратор. Добавете друг потребител като администратор, преди да премахнете себе си като администратор",
|
||||
"invalid-image-type": "Грешен тип на изображение. Позволените типове са: %1",
|
||||
"invalid-image-extension": "Грешно разширение на изображението",
|
||||
"invalid-file-type": "Грешен тип на файл. Позволените типове са: %1",
|
||||
"group-name-too-short": "Името на групата е твърде кратко",
|
||||
"group-already-exists": "Вече съществува такава група",
|
||||
"group-name-change-not-allowed": "Промяната на името на групата не е разрешено",
|
||||
"group-already-member": "Вече сте част от тази група",
|
||||
"group-needs-owner": "Тази група се нуждае от поне един собственик",
|
||||
"group-already-invited": "Този потребител вече е бил поканен",
|
||||
"group-already-requested": "Вашата заявка за членство вече е била изпратена",
|
||||
"post-already-deleted": "Тази публикация вече е изтрита",
|
||||
"post-already-restored": "Тази публикация вече е възстановена",
|
||||
"topic-already-deleted": "Тази тема вече е изтрита",
|
||||
"topic-already-restored": "Тази тема вече е възстановена",
|
||||
"cant-purge-main-post": "Не можете да изчистите първоначалната публикация. Моля, вместо това изтрийте темата.",
|
||||
"topic-thumbnails-are-disabled": "Иконките на темите са изключени.",
|
||||
"invalid-file": "Грешен файл",
|
||||
"uploads-are-disabled": "Качването не е разрешено",
|
||||
"signature-too-long": "Съжаляваме, но подписът Ви трябва да съдържа не повече от %1 символ(а).",
|
||||
"about-me-too-long": "Съжаляваме, но информацията за Вас трябва да съдържа не повече от %1 символ(а).",
|
||||
"cant-chat-with-yourself": "Не можете да пишете чат съобщение на себе си!",
|
||||
"chat-restricted": "Този потребител е ограничил чат съобщенията до себе си. Той трябва първо да Ви последва, преди да можете да си пишете с него.",
|
||||
"too-many-messages": "Изпратили сте твърде много съобщения. Моля, изчакайте малко.",
|
||||
"reputation-system-disabled": "Системата за репутация е изключена.",
|
||||
"downvoting-disabled": "Отрицателното гласуване е изключено",
|
||||
"not-enough-reputation-to-downvote": "Нямате достатъчно репутация, за да гласувате отрицателно за тази публикация",
|
||||
"not-enough-reputation-to-flag": "Нямате достатъчно репутация, за да докладвате тази публикация",
|
||||
"already-flagged": "Вече сте докладвали тази публикация",
|
||||
"reload-failed": "NodeBB срещна проблем при презареждането: „%1“. NodeBB ще продължи да поддържа съществуващите клиентски ресурси, но Вие трябва да отмените последните си действия преди презареждането.",
|
||||
"registration-error": "Грешка при регистрацията",
|
||||
"parse-error": "Нещо се обърка при прочитането на отговора на сървъра",
|
||||
"wrong-login-type-email": "Моля, използвайте е-пощата си, за да влезете",
|
||||
"wrong-login-type-username": "Моля, използвайте потребителското си име, за да влезете"
|
||||
}
|
||||
83
public/language/bg/global.json
Normal file
83
public/language/bg/global.json
Normal file
@@ -0,0 +1,83 @@
|
||||
{
|
||||
"home": "Начало",
|
||||
"search": "Търсене",
|
||||
"buttons.close": "Затваряне",
|
||||
"403.title": "Достъпът е отказан",
|
||||
"403.message": "Изглежда сте посетили страница, до която нямате достъп.",
|
||||
"403.login": "Може би трябва да <a href='%1/login'>опитате да влезете</a>?",
|
||||
"404.title": "Не е открита",
|
||||
"404.message": "Изглежда сте се опитали да посетите страница, която не съществува. Върнете се към <a href='%1/'>началната страница</a>.",
|
||||
"500.title": "Вътрешна грешка.",
|
||||
"500.message": "Опа! Изглежда нещо се обърка!",
|
||||
"register": "Регистрация",
|
||||
"login": "Вход",
|
||||
"please_log_in": "Моля, влезте",
|
||||
"logout": "Изход",
|
||||
"posting_restriction_info": "Публикуването в момента е позволено само за регистрираните потребители. Натиснете тук, за да влезете.",
|
||||
"welcome_back": "Добре дошли отново",
|
||||
"you_have_successfully_logged_in": "Вие влязохте успешно",
|
||||
"save_changes": "Запазване на промените",
|
||||
"close": "Затваряне",
|
||||
"pagination": "Страници",
|
||||
"pagination.out_of": "%1 от %2",
|
||||
"pagination.enter_index": "Въведете номер",
|
||||
"header.admin": "Администратор",
|
||||
"header.categories": "Categories",
|
||||
"header.recent": "Скорошни",
|
||||
"header.unread": "Непрочетени",
|
||||
"header.tags": "Етикети",
|
||||
"header.popular": "Популярни",
|
||||
"header.users": "Потребители",
|
||||
"header.groups": "Групи",
|
||||
"header.chats": "Чатове",
|
||||
"header.notifications": "Известия",
|
||||
"header.search": "Търсене",
|
||||
"header.profile": "Профил",
|
||||
"notifications.loading": "Зареждане на известията",
|
||||
"chats.loading": "Зареждане на чатовете",
|
||||
"motd.welcome": "Добре дошли в NodeBB, системата за дискусии на бъдещето.",
|
||||
"previouspage": "Предишна страница",
|
||||
"nextpage": "Следваща страница",
|
||||
"alert.success": "Готово",
|
||||
"alert.error": "Грешка",
|
||||
"alert.banned": "Блокиран",
|
||||
"alert.banned.message": "Вие току-що бяхте блокиран. Сега ще излезете от системата.",
|
||||
"alert.unfollow": "Вие вече не следвате %1!",
|
||||
"alert.follow": "Вие следвате %1!",
|
||||
"online": "На линия",
|
||||
"users": "Потребители",
|
||||
"topics": "Теми",
|
||||
"posts": "Публ.",
|
||||
"views": "Прегл.",
|
||||
"reputation": "Репутация",
|
||||
"read_more": "още",
|
||||
"more": "Още",
|
||||
"posted_ago_by_guest": "публикувано %1 от гост",
|
||||
"posted_ago_by": "публикувано %1 от %2",
|
||||
"posted_ago": "публикувано %1",
|
||||
"posted_in_ago_by_guest": "публикувано в %1 %2 от гост",
|
||||
"posted_in_ago_by": "публикувано в %1 %2 от %3",
|
||||
"posted_in_ago": "публикувано в %1 %2",
|
||||
"replied_ago": "отговори %1",
|
||||
"user_posted_ago": "%1 публикува %2",
|
||||
"guest_posted_ago": "гост публикува %1",
|
||||
"last_edited_by_ago": "последно редактирано от %1 %2",
|
||||
"norecentposts": "Няма скорошни публикации",
|
||||
"norecenttopics": "Няма скорошни теми",
|
||||
"recentposts": "Скорошни публикации",
|
||||
"recentips": "Наскоро ползвани IP адреси",
|
||||
"away": "Отсъстващ",
|
||||
"dnd": "Отпочиващ",
|
||||
"invisible": "Невидим",
|
||||
"offline": "Извън линия",
|
||||
"email": "Е-поща",
|
||||
"language": "Език",
|
||||
"guest": "Гост",
|
||||
"guests": "Гости",
|
||||
"updated.title": "Форумът е актуализиран",
|
||||
"updated.message": "Този форум току-що беше актуализиран до най-новата версия. Натиснете тук, за да опресните страницата.",
|
||||
"privacy": "Поверителност",
|
||||
"follow": "Следване",
|
||||
"unfollow": "Прекратяване на следването",
|
||||
"delete_all": "Изтриване на всичко"
|
||||
}
|
||||
49
public/language/bg/groups.json
Normal file
49
public/language/bg/groups.json
Normal file
@@ -0,0 +1,49 @@
|
||||
{
|
||||
"groups": "Групи",
|
||||
"view_group": "Преглед на групата",
|
||||
"owner": "Собственик на групата",
|
||||
"new_group": "Създаване на нова група",
|
||||
"no_groups_found": "Няма групи",
|
||||
"pending.accept": "Приемане",
|
||||
"pending.reject": "Отхвърляне",
|
||||
"pending.accept_all": "Приемане на всички",
|
||||
"pending.reject_all": "Отхвърляне на всички",
|
||||
"pending.none": "В момента няма чакащи членове",
|
||||
"invited.none": "В момента няма поканени членове",
|
||||
"invited.uninvite": "Отмяна на поканата",
|
||||
"invited.search": "Потърсете потребител, когото да поканите в тази група",
|
||||
"cover-instructions": "Плъзнете снимка, наместете я в предпочитаната позиция и натистнете <strong>Запазване</strong>",
|
||||
"cover-change": "Промяна",
|
||||
"cover-save": "Запазване",
|
||||
"cover-saving": "Запазване",
|
||||
"details.title": "Подробности за групата",
|
||||
"details.members": "Списък на членовете",
|
||||
"details.pending": "Кандидатстващи членове",
|
||||
"details.invited": "Поканени членове",
|
||||
"details.has_no_posts": "Членовете на тази група не са публикували нищо.",
|
||||
"details.latest_posts": "Скорошни публикации",
|
||||
"details.private": "Частна",
|
||||
"details.grant": "Даване/отнемане на собственост",
|
||||
"details.kick": "Изгонване",
|
||||
"details.owner_options": "Администрация на групата",
|
||||
"details.group_name": "Име на групата",
|
||||
"details.member_count": "Брой на членовете",
|
||||
"details.creation_date": "Дата на създаване",
|
||||
"details.description": "Описание",
|
||||
"details.badge_preview": "Преглед на емблемата",
|
||||
"details.change_icon": "Промяна на иконката",
|
||||
"details.change_colour": "Промяна на цвета",
|
||||
"details.badge_text": "Текст на емблемата",
|
||||
"details.userTitleEnabled": "Показване на емблемата",
|
||||
"details.private_help": "Ако е включено, присъединяването към група изисква одобрението на собственика ѝ",
|
||||
"details.hidden": "Скрита",
|
||||
"details.hidden_help": "Ако е включено, тази група няма да бъде извеждана в списъка от групи и потребителите ще трябва да бъдат поканени лично",
|
||||
"details.delete_group": "Delete Group",
|
||||
"event.updated": "Подробностите за групата бяха обновени",
|
||||
"event.deleted": "Групата „%1“ беше изтрита",
|
||||
"membership.accept-invitation": "Приемане на поканата",
|
||||
"membership.invitation-pending": "Чакаща покана",
|
||||
"membership.join-group": "Присъединяване към групата",
|
||||
"membership.leave-group": "Напускане на групата",
|
||||
"membership.reject": "Отхвърляне"
|
||||
}
|
||||
5
public/language/bg/language.json
Normal file
5
public/language/bg/language.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"name": "Български",
|
||||
"code": "bg",
|
||||
"dir": "ltr"
|
||||
}
|
||||
11
public/language/bg/login.json
Normal file
11
public/language/bg/login.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"username-email": "Потребителско име / е-поща",
|
||||
"username": "Потребителско име",
|
||||
"email": "Е-поща",
|
||||
"remember_me": "Запомнете ме?",
|
||||
"forgot_password": "Забравена парола?",
|
||||
"alternative_logins": "Други начини за влизане",
|
||||
"failed_login_attempt": "Неуспешно влизане. Моля, опитайте отново.",
|
||||
"login_successful": "Вие влязохте успешно!",
|
||||
"dont_have_account": "Нямате акаунт?"
|
||||
}
|
||||
26
public/language/bg/modules.json
Normal file
26
public/language/bg/modules.json
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"chat.chatting_with": "Чат с <span id=\"chat-with-name\"></span>",
|
||||
"chat.placeholder": "Въведете чат съобщението тук и натиснете Ентер за изпращане",
|
||||
"chat.send": "Изпращане",
|
||||
"chat.no_active": "Нямате текущи чатове.",
|
||||
"chat.user_typing": "%1 пише...",
|
||||
"chat.user_has_messaged_you": "%1 Ви написа съобщение.",
|
||||
"chat.see_all": "Вижте всички чатове",
|
||||
"chat.no-messages": "Моля, изберете получател, за да видите историята на чат съобщенията",
|
||||
"chat.recent-chats": "Скорошни чатове",
|
||||
"chat.contacts": "Контакти",
|
||||
"chat.message-history": "История на съобщенията",
|
||||
"chat.pop-out": "Отделяне на чата в прозорец",
|
||||
"chat.maximize": "Уголемяване",
|
||||
"chat.seven_days": "7 дни",
|
||||
"chat.thirty_days": "30 дни",
|
||||
"chat.three_months": "3 месеца",
|
||||
"composer.compose": "Писане",
|
||||
"composer.show_preview": "Показване на прегледа",
|
||||
"composer.hide_preview": "Скриване на прегледа",
|
||||
"composer.user_said_in": "%1 каза в %2:",
|
||||
"composer.user_said": "%1 каза:",
|
||||
"composer.discard": "Сигурни ли сте, че искате да отхвърлите тази публикация?",
|
||||
"composer.submit_and_lock": "Публикуване и заключване",
|
||||
"composer.toggle_dropdown": "Превключване на падащото меню"
|
||||
}
|
||||
28
public/language/bg/notifications.json
Normal file
28
public/language/bg/notifications.json
Normal file
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"title": "Известия",
|
||||
"no_notifs": "Нямате нови известия",
|
||||
"see_all": "Вижте всички известия",
|
||||
"mark_all_read": "Отбелязване на всички известия като прочетени",
|
||||
"back_to_home": "Назад към %1",
|
||||
"outgoing_link": "Външна връзка",
|
||||
"outgoing_link_message": "Вие напускате %1.",
|
||||
"continue_to": "Продължаване към %1",
|
||||
"return_to": "Връщане към %1",
|
||||
"new_notification": "Ново известие",
|
||||
"you_have_unread_notifications": "Имате непрочетени известия",
|
||||
"new_message_from": "Ново съобщение от <strong>%1</strong>",
|
||||
"upvoted_your_post_in": "<strong>%1</strong> гласува положително за Ваша публикация в <strong>%2</strong>.",
|
||||
"moved_your_post": "<strong>%1</strong> премести Ваша публикация.",
|
||||
"moved_your_topic": "<strong>%1</strong> премести Ваша тема.",
|
||||
"favourited_your_post_in": "<strong>%1</strong> отбеляза Ваша публикация в <strong>%2</strong> като любима.",
|
||||
"user_flagged_post_in": "<strong>%1</strong> докладва Ваша публикация в <strong>%2</strong>",
|
||||
"user_posted_to": "<strong>%1</strong> публикува отговор на: <strong>%2</strong>",
|
||||
"user_posted_topic": "<strong>%1</strong> публикува нова тема: <strong>%2</strong>",
|
||||
"user_mentioned_you_in": "<strong>%1</strong> Ви спомена в <strong>%2</strong>",
|
||||
"user_started_following_you": "<strong>%1</strong> започна да Ви следва.",
|
||||
"new_register": "<strong>%1</strong> изпрати заявка за регистрация.",
|
||||
"email-confirmed": "Е-пощата беше потвърдена",
|
||||
"email-confirmed-message": "Благодарим Ви, че потвърдихте е-пощата си. Акаунтът Ви е вече напълно активиран.",
|
||||
"email-confirm-error-message": "Възникна проблем при потвърждаването на е-пощата Ви. Може кодът да е грешен или давността му да е изтекла.",
|
||||
"email-confirm-sent": "Изпратено е е-писмо за потвърждение."
|
||||
}
|
||||
21
public/language/bg/pages.json
Normal file
21
public/language/bg/pages.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"home": "Начало",
|
||||
"unread": "Непрочетени теми",
|
||||
"popular": "Популярни теми",
|
||||
"recent": "Скорошни теми",
|
||||
"users": "Регистрирани потребители",
|
||||
"notifications": "Известия",
|
||||
"tags": "Етикети",
|
||||
"tag": "Теми, отбелязани като „%1“",
|
||||
"user.edit": "Редактиране на „%1“",
|
||||
"user.following": "Хора, които %1 следва",
|
||||
"user.followers": "Хора, които следват %1",
|
||||
"user.posts": "Публикации от %1",
|
||||
"user.topics": "Теми, създадени от %1",
|
||||
"user.groups": "Групите на %1",
|
||||
"user.favourites": "Любимите публикации на %1",
|
||||
"user.settings": "Настройки на потребителя",
|
||||
"user.watched": "Теми, следени от %1",
|
||||
"maintenance.text": "%1 в момента е в профилактика. Моля, върнете се по-късно.",
|
||||
"maintenance.messageIntro": "В допълнение, администраторът е оставил това съобщение:"
|
||||
}
|
||||
19
public/language/bg/recent.json
Normal file
19
public/language/bg/recent.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"title": "Скорошни",
|
||||
"day": "Ден",
|
||||
"week": "Седмица",
|
||||
"month": "Месец",
|
||||
"year": "Година",
|
||||
"alltime": "Цялото време",
|
||||
"no_recent_topics": "Няма скорошни теми.",
|
||||
"no_popular_topics": "Няма популярни теми.",
|
||||
"there-is-a-new-topic": "Има нова тема.",
|
||||
"there-is-a-new-topic-and-a-new-post": "Има нова тема и нова публикация.",
|
||||
"there-is-a-new-topic-and-new-posts": "Има нова тема и %1 нови публикации.",
|
||||
"there-are-new-topics": "Има %1 нови теми.",
|
||||
"there-are-new-topics-and-a-new-post": "Има %1 нови теми и нова публикация.",
|
||||
"there-are-new-topics-and-new-posts": "Има %1 нови теми и %2 нови публикации.",
|
||||
"there-is-a-new-post": "Има нова публикация",
|
||||
"there-are-new-posts": "Има %1 нови публикации.",
|
||||
"click-here-to-reload": "Натиснете тук, за да презаредите."
|
||||
}
|
||||
19
public/language/bg/register.json
Normal file
19
public/language/bg/register.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"register": "Регистрация",
|
||||
"help.email": "По подразбиране, Вашата е-поща ще бъде скрита за останалите.",
|
||||
"help.username_restrictions": "Уникално потребителско име с дължина между %1 и %2 символа. Другите ще могат да Ви споменават чрез @<span id='yourUsername'>потребител</span>.",
|
||||
"help.minimum_password_length": "Дължината на паролата Ви трябва да е поне %1 символа.",
|
||||
"email_address": "Е-поща",
|
||||
"email_address_placeholder": "Въведете адрес на е-поща",
|
||||
"username": "Потребителско име",
|
||||
"username_placeholder": "Въведете потребителско име",
|
||||
"password": "Парола",
|
||||
"password_placeholder": "Въведете парола",
|
||||
"confirm_password": "Потвърдете паролата",
|
||||
"confirm_password_placeholder": "Потвърдете паролата",
|
||||
"register_now_button": "Регистриране",
|
||||
"alternative_registration": "Друг начин за регистриране",
|
||||
"terms_of_use": "Условия за ползване",
|
||||
"agree_to_terms_of_use": "Съгласен съм с условията за ползване",
|
||||
"registration-added-to-queue": "Вашата регистрация беше добавена в опашката за одобрение. Ще получите е-писмо, когато тя бъде одобрена от администратор."
|
||||
}
|
||||
17
public/language/bg/reset_password.json
Normal file
17
public/language/bg/reset_password.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"reset_password": "Подновяване на паролата",
|
||||
"update_password": "Обновяване на паролата",
|
||||
"password_changed.title": "Паролата беше променена",
|
||||
"password_changed.message": "<p>Паролата беше подновена. Моля, <a href=\"/login\">влезте отново</a>.",
|
||||
"wrong_reset_code.title": "Грешен код за подновяване",
|
||||
"wrong_reset_code.message": "Полученият код за подновяване беше грешен. Моля, опитайте отново или <a href=\"/reset\">поискайте нов код за подновяване</a>.",
|
||||
"new_password": "Нова парола",
|
||||
"repeat_password": "Потвърдете паролата",
|
||||
"enter_email": "Моля, въведете Вашата <strong>е-поща</strong> и ние ще Ви изпратим е-писмо с инструкции за това как да достъпите акаунта си.",
|
||||
"enter_email_address": "Въведете адрес на е-поща",
|
||||
"password_reset_sent": "Информацията за подновяване на паролата беше изпратена",
|
||||
"invalid_email": "Грешна е-поща / е-пощата не съществува!",
|
||||
"password_too_short": "Паролата е твърде кратка. Моля, изберете друга парола.",
|
||||
"passwords_do_not_match": "Двете пароли, които въведохте, са различни.",
|
||||
"password_expired": "Паролата Ви е с изтекла давност. Моля, изберете нова парола"
|
||||
}
|
||||
40
public/language/bg/search.json
Normal file
40
public/language/bg/search.json
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"results_matching": "%1 резултат(а), отговарящи на „%2“, (%3 секунди)",
|
||||
"no-matches": "Няма съвпадения",
|
||||
"advanced-search": "Разширено търсене",
|
||||
"in": "В",
|
||||
"titles": "Заглавия",
|
||||
"titles-posts": "Заглавия и публикации",
|
||||
"posted-by": "Публикувано от",
|
||||
"in-categories": "В категории",
|
||||
"search-child-categories": "Претърсване на подкатегориите",
|
||||
"reply-count": "Брой на отговорите",
|
||||
"at-least": "Поне",
|
||||
"at-most": "Най-много",
|
||||
"post-time": "Време на публикуване",
|
||||
"newer-than": "По-нови от",
|
||||
"older-than": "По-стари от",
|
||||
"any-date": "Която и да е дата",
|
||||
"yesterday": "Вчера",
|
||||
"one-week": "Една седмица",
|
||||
"two-weeks": "Две седмици",
|
||||
"one-month": "Един месец",
|
||||
"three-months": "Три месеца",
|
||||
"six-months": "Шест месеца",
|
||||
"one-year": "Една година",
|
||||
"sort-by": "Подреждане по",
|
||||
"last-reply-time": "Време на последния отговор",
|
||||
"topic-title": "Заглавие на темата",
|
||||
"number-of-replies": "Брой на отговорите",
|
||||
"number-of-views": "Брой на преглежданията",
|
||||
"topic-start-date": "Начална дата на темата",
|
||||
"username": "Потребителско име",
|
||||
"category": "Категория",
|
||||
"descending": "В низходящ ред",
|
||||
"ascending": "Във възходящ ред",
|
||||
"save-preferences": "Запазване на предпочитанията",
|
||||
"clear-preferences": "Изчистване на предпочитанията",
|
||||
"search-preferences-saved": "Предпочитанията за търсене бяха запазени",
|
||||
"search-preferences-cleared": "Предпочитанията за търсене бяха изчистени",
|
||||
"show-results-as": "Показване на резултатите като"
|
||||
}
|
||||
6
public/language/bg/success.json
Normal file
6
public/language/bg/success.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"success": "Готово",
|
||||
"topic-post": "Вие публикувахте успешно.",
|
||||
"authentication-successful": "Успешно удостоверяване",
|
||||
"settings-saved": "Настройките са записани!"
|
||||
}
|
||||
7
public/language/bg/tags.json
Normal file
7
public/language/bg/tags.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"no_tag_topics": "Няма теми с този етикет.",
|
||||
"tags": "Етикети",
|
||||
"enter_tags_here": "Въведете етикетите тук, всеки може да е с дължина между %1 и %2 символа.",
|
||||
"enter_tags_here_short": "Въведете етикети...",
|
||||
"no_tags": "Все още няма етикети."
|
||||
}
|
||||
100
public/language/bg/topic.json
Normal file
100
public/language/bg/topic.json
Normal file
@@ -0,0 +1,100 @@
|
||||
{
|
||||
"topic": "Тема",
|
||||
"topic_id": "Идентификатора на темата",
|
||||
"topic_id_placeholder": "Въведете идентификатор на темата",
|
||||
"no_topics_found": "Няма открити теми!",
|
||||
"no_posts_found": "Няма открити публикации!",
|
||||
"post_is_deleted": "Тази публикация е изтрита!",
|
||||
"topic_is_deleted": "Тази тема е изтрита!",
|
||||
"profile": "Профил",
|
||||
"posted_by": "Публикувано от %1",
|
||||
"posted_by_guest": "Публикувано от гост",
|
||||
"chat": "Чат",
|
||||
"notify_me": "Получавайте известия за новите отговори в тази тема",
|
||||
"quote": "Цитат",
|
||||
"reply": "Отговор",
|
||||
"guest-login-reply": "Влезте, за да отговорите",
|
||||
"edit": "Редактиране",
|
||||
"delete": "Изтриване",
|
||||
"purge": "Изчистване",
|
||||
"restore": "Възстановяване",
|
||||
"move": "Преместване",
|
||||
"fork": "Разделяне",
|
||||
"link": "Връзка",
|
||||
"share": "Споделяне",
|
||||
"tools": "Инструменти",
|
||||
"flag": "Докладване",
|
||||
"locked": "Заключена",
|
||||
"bookmark_instructions": "Натиснете, за да се върнете на последната си позиция или затворете, за да отхвърлите.",
|
||||
"flag_title": "Докладване на тази публикация до модератор",
|
||||
"flag_confirm": "Сигурни ли сте, че искате да докладвате тази публикация?",
|
||||
"flag_success": "Тази публикация е била докладвана до модератор.",
|
||||
"deleted_message": "Тази тема е била изтрита. Само потребители с права за управление на темите могат да я видят.",
|
||||
"following_topic.message": "Вече ще получавате известия когато някой публикува коментар в тази тема.",
|
||||
"not_following_topic.message": "Вече няма да получавате известия за тази тема.",
|
||||
"login_to_subscribe": "Моля, регистрирайте се или влезте, за да се абонирате за тази тема.",
|
||||
"markAsUnreadForAll.success": "Темата е отбелязана като непрочетена за всички.",
|
||||
"watch": "Наблюдаване",
|
||||
"unwatch": "Спиране на наблюдаването",
|
||||
"watch.title": "Получавайте известия за новите отговори в тази тема",
|
||||
"unwatch.title": "Спрете да наблюдавате тази тема",
|
||||
"share_this_post": "Споделете тази публикация",
|
||||
"thread_tools.title": "Инструменти за темата",
|
||||
"thread_tools.markAsUnreadForAll": "Отбелязване като непрочетена",
|
||||
"thread_tools.pin": "Закачане на темата",
|
||||
"thread_tools.unpin": "Откачане на темата",
|
||||
"thread_tools.lock": "Заключване на темата",
|
||||
"thread_tools.unlock": "Отключване на темата",
|
||||
"thread_tools.move": "Преместване на темата",
|
||||
"thread_tools.move_all": "Преместване на всички",
|
||||
"thread_tools.fork": "Разделяне на темата",
|
||||
"thread_tools.delete": "Изтриване на темата",
|
||||
"thread_tools.delete_confirm": "Сигурни ли сте, че искате да изтриете тази тема?",
|
||||
"thread_tools.restore": "Възстановяване на темата",
|
||||
"thread_tools.restore_confirm": "Сигурни ли сте, че искате да възстановите тази тема?",
|
||||
"thread_tools.purge": "Изчистване на темата",
|
||||
"thread_tools.purge_confirm": "Сигурни ли сте, че искате да изчистите тази тема?",
|
||||
"topic_move_success": "Темата беше преместена успешно в %1",
|
||||
"post_delete_confirm": "Сигурни ли сте, че искате да изтриете тази публикация?",
|
||||
"post_restore_confirm": "Сигурни ли сте, че искате да възстановите тази публикация?",
|
||||
"post_purge_confirm": "Сигурни ли сте, че искате да изчистите тази публикация?",
|
||||
"load_categories": "Зареждане на категориите",
|
||||
"disabled_categories_note": "Изключените категории са засивени",
|
||||
"confirm_move": "Преместване",
|
||||
"confirm_fork": "Разделяне",
|
||||
"favourite": "Любима",
|
||||
"favourites": "Любими",
|
||||
"favourites.has_no_favourites": "Нямате любими, отбележете няколко публикации, за да ги видите тук!",
|
||||
"loading_more_posts": "Зареждане на още публикации",
|
||||
"move_topic": "Преместване на темата",
|
||||
"move_topics": "Преместване на темите",
|
||||
"move_post": "Преместване на публикацията",
|
||||
"post_moved": "Публикацията беше преместена!",
|
||||
"fork_topic": "Разделяне на темата",
|
||||
"topic_will_be_moved_to": "Тази тема ще бъде преместена в категорията",
|
||||
"fork_topic_instruction": "Натиснете публикациите, които искате да отделите",
|
||||
"fork_no_pids": "Няма избрани публикации!",
|
||||
"fork_success": "Темата е разделена успешно! Натиснете тук, за да преминете към отделената тема.",
|
||||
"composer.title_placeholder": "Въведете заглавието на темата си тук...",
|
||||
"composer.handle_placeholder": "Име",
|
||||
"composer.discard": "Отхвърляне",
|
||||
"composer.submit": "Публикуване",
|
||||
"composer.replying_to": "Отговор на %1",
|
||||
"composer.new_topic": "Нова тема",
|
||||
"composer.uploading": "качване...",
|
||||
"composer.thumb_url_label": "Поставете адреса на иконка за темата",
|
||||
"composer.thumb_title": "Добавете иконка към тази тема",
|
||||
"composer.thumb_url_placeholder": "http://example.com/thumb.png",
|
||||
"composer.thumb_file_label": "Или качете файл",
|
||||
"composer.thumb_remove": "Изчистване на полетата",
|
||||
"composer.drag_and_drop_images": "Плъзнете снимките тук",
|
||||
"more_users_and_guests": "Още %1 потребител(и) и %2 гост(и)",
|
||||
"more_users": "Още %1 потребител(и)",
|
||||
"more_guests": "Още %1 гост(и)",
|
||||
"users_and_others": "%1 и %2 други",
|
||||
"sort_by": "Подреждане по",
|
||||
"oldest_to_newest": "Първо най-старите",
|
||||
"newest_to_oldest": "Първо най-новите",
|
||||
"most_votes": "Най-много гласове",
|
||||
"most_posts": "Най-много публикации"
|
||||
}
|
||||
10
public/language/bg/unread.json
Normal file
10
public/language/bg/unread.json
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"title": "Непрочетени",
|
||||
"no_unread_topics": "Няма непрочетени теми.",
|
||||
"load_more": "Зареждане на още",
|
||||
"mark_as_read": "Отбелязване като прочетени",
|
||||
"selected": "Избраните",
|
||||
"all": "Всички",
|
||||
"all_categories": "Всички категории",
|
||||
"topics_marked_as_read.success": "Темите бяха отбелязани като прочетени!"
|
||||
}
|
||||
88
public/language/bg/user.json
Normal file
88
public/language/bg/user.json
Normal file
@@ -0,0 +1,88 @@
|
||||
{
|
||||
"banned": "Блокиран",
|
||||
"offline": "Извън линия",
|
||||
"username": "Потребителско име",
|
||||
"joindate": "Дата на присъединяване",
|
||||
"postcount": "Брой публикации",
|
||||
"email": "Е-поща",
|
||||
"confirm_email": "Потвърдете е-пощата",
|
||||
"ban_account": "Блокиране на акаунта",
|
||||
"ban_account_confirm": "Наистина ли искате да блокирате този потребител?",
|
||||
"unban_account": "Отблокиране на акаунта",
|
||||
"delete_account": "Изтриване на акаунта",
|
||||
"delete_account_confirm": "Сигурни ли сте, че искате да изтриете акаунта си? <br /><strong>Това действие е необратимо и няма да можете да възстановите нищо от данните си</strong><br /><br />Въведете потребителското си име, за да потвърдите, че искате да унищожите този акаунт.",
|
||||
"delete_this_account_confirm": "Сигурни ли сте, че искате да изтриете този акаунт? <br /><strong>Това действие е необратимо и няма да можете да възстановите нищо от данните</strong><br /><br />",
|
||||
"fullname": "Цяло име",
|
||||
"website": "Уеб сайт",
|
||||
"location": "Местоположение",
|
||||
"age": "Възраст",
|
||||
"joined": "Присъединил се",
|
||||
"lastonline": "Последно на линия",
|
||||
"profile": "Профил",
|
||||
"profile_views": "Преглеждания на профила",
|
||||
"reputation": "Репутация",
|
||||
"favourites": "Любими",
|
||||
"watched": "Наблюдавани",
|
||||
"followers": "Последователи",
|
||||
"following": "Следва",
|
||||
"aboutme": "За мен",
|
||||
"signature": "Подпис",
|
||||
"gravatar": "Граватар",
|
||||
"birthday": "Рождена дата",
|
||||
"chat": "Чат",
|
||||
"follow": "Следване",
|
||||
"unfollow": "Спиране на следването",
|
||||
"more": "Още",
|
||||
"profile_update_success": "Профилът беше обновен успешно!",
|
||||
"change_picture": "Промяна на снимката",
|
||||
"edit": "Редактиране",
|
||||
"uploaded_picture": "Качена снимка",
|
||||
"upload_new_picture": "Качване на нова снимка",
|
||||
"upload_new_picture_from_url": "Качване на нова снимка от адрес",
|
||||
"current_password": "Текуща парола",
|
||||
"change_password": "Промяна на паролата",
|
||||
"change_password_error": "Грешна парола!",
|
||||
"change_password_error_wrong_current": "Текущата Ви парола е грешна!",
|
||||
"change_password_error_length": "Паролата е твърде кратка!",
|
||||
"change_password_error_match": "Паролите са различни!",
|
||||
"change_password_error_privileges": "Нямате права да промените тази парола.",
|
||||
"change_password_success": "Паролата ви е обновена!",
|
||||
"confirm_password": "Потвърдете паролата",
|
||||
"password": "Парола",
|
||||
"username_taken_workaround": "Потребителското име, което искате, е заето и затова ние го променихме леко. Вие ще се наричате <strong>%1</strong>",
|
||||
"upload_picture": "Качване на снимка",
|
||||
"upload_a_picture": "Качване на снимка",
|
||||
"image_spec": "Можете да качвате само PNG, JPG, или GIF файлове",
|
||||
"settings": "Настройки",
|
||||
"show_email": "Да се показва е-пощата ми",
|
||||
"show_fullname": "Да се показва цялото ми име",
|
||||
"restrict_chats": "Разрешаване на чат съобщенията само от потребители, които следвам",
|
||||
"digest_label": "Абониране за резюмета",
|
||||
"digest_description": "Абониране за новини по е-пощата относно този форум (нови известия и теми) според избрания график",
|
||||
"digest_off": "Изключено",
|
||||
"digest_daily": "Ежедневно",
|
||||
"digest_weekly": "Ежеседмично",
|
||||
"digest_monthly": "Ежемесечно",
|
||||
"send_chat_notifications": "Изпращане на е-писмо, ако получа ново чат съобщения, а не съм на линия",
|
||||
"send_post_notifications": "Изпращане на е-писмо, когато се появи отговор в темите, за които съм абониран/а.",
|
||||
"settings-require-reload": "Някои промени в настройките изискват презареждане. Натиснете тук, за да презаредите страницата.",
|
||||
"has_no_follower": "Този потребител няма последователи :(",
|
||||
"follows_no_one": "Този потребител не следва никого :(",
|
||||
"has_no_posts": "Този потребител не е публикувал нищо досега.",
|
||||
"has_no_topics": "Този потребител не е създавал теми досега.",
|
||||
"has_no_watched_topics": "Този потребител не е следил нито една тема досега.",
|
||||
"email_hidden": "Е-пощата е скрита",
|
||||
"hidden": "скрито",
|
||||
"paginate_description": "Разделяне на темите и публикациите на страници, вместо да се превърта безкрайно",
|
||||
"topics_per_page": "Теми на страница",
|
||||
"posts_per_page": "Публикации на страница",
|
||||
"notification_sounds": "Изпълняване на звук, когато получите известие",
|
||||
"browsing": "Настройки за страниците",
|
||||
"open_links_in_new_tab": "Отваряне на външните връзки в нов подпрозорец",
|
||||
"enable_topic_searching": "Включване на търсенето в темите",
|
||||
"topic_search_help": "Ако е включено, търсенето в темата ще замени стандартното поведение на браузъра при търсене в страницата и ще Ви позволи да претърсвате цялата тема, а не само това, което се вижда на екрана",
|
||||
"follow_topics_you_reply_to": "Следване на темите, на които отговаряте",
|
||||
"follow_topics_you_create": "Следване на темите, които създавате",
|
||||
"grouptitle": "Изберете заглавието на групата, което искате да се показва",
|
||||
"no-group-title": "Няма заглавие на група"
|
||||
}
|
||||
21
public/language/bg/users.json
Normal file
21
public/language/bg/users.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"latest_users": "Последни потребители",
|
||||
"top_posters": "С най-много публикации",
|
||||
"most_reputation": "С най-много репутация",
|
||||
"search": "Търсене",
|
||||
"enter_username": "Въведете потребителско име, което да потърсите",
|
||||
"load_more": "Зареждане на още",
|
||||
"users-found-search-took": "Намерени са %1 потребител(и)! Търсенето отне %2 секунди.",
|
||||
"filter-by": "Филтриране",
|
||||
"online-only": "Само тези на линия",
|
||||
"picture-only": "Само със снимка",
|
||||
"invite": "Канене",
|
||||
"invitation-email-sent": "Беше изпратено е-писмо за потвърждение до %1",
|
||||
"user_list": "Списък от потребители",
|
||||
"recent_topics": "Скорошни теми",
|
||||
"popular_topics": "Популярни теми",
|
||||
"unread_topics": "Непрочетени теми",
|
||||
"categories": "Категории",
|
||||
"tags": "Етикети",
|
||||
"map": "Карта"
|
||||
}
|
||||
@@ -1,8 +1,12 @@
|
||||
{
|
||||
"new_topic_button": "নতুন টপিক",
|
||||
"guest-login-post": "Log in to post",
|
||||
"no_topics": "<strong>এই বিভাগে কোন টপিক নেই! </strong><br /> আপনি চাইলে একটি পোষ্ট করতে পারেন।",
|
||||
"browsing": "ব্রাউজিং",
|
||||
"no_replies": "কোন রিপ্লাই নেই",
|
||||
"share_this_category": "এই বিভাগটি অন্যের সাথে ভাগাভাগি করুন",
|
||||
"ignore": "উপেক্ষা করুন"
|
||||
"watch": "Watch",
|
||||
"ignore": "উপেক্ষা করুন",
|
||||
"watch.message": "You are now watching updates from this category",
|
||||
"ignore.message": "You are now ignoring updates from this category"
|
||||
}
|
||||
@@ -1,14 +1,21 @@
|
||||
{
|
||||
"password-reset-requested": "পাসওয়ার্ড রিসেটের জন্য অনুরোধ করা হয়েছে - %1!",
|
||||
"welcome-to": "%1 এ স্বাগতম",
|
||||
"invite": "Invitation from %1",
|
||||
"greeting_no_name": "স্বাগতম",
|
||||
"greeting_with_name": "স্বাগতম %1",
|
||||
"welcome.text1": "%1 এ নিবন্ধন করার জন্য আপনাকে ধন্যবাদ!",
|
||||
"welcome.text2": "আপনার একাউন্ট এ্যাক্টিভেট করার জন্য, আপনি যে ইমেইল এড্রেস ব্যাবহার করে নিবন্ধন করেছেন তা যাচাই করতে হবে",
|
||||
"welcome.text3": "An administrator has accepted your registration application. You can login with your username/password now.",
|
||||
"welcome.cta": "আপনার ইমেইল এড্রেস নিশ্চিত করার জন্য এখানে ক্লিক করুন",
|
||||
"invitation.text1": "%1 has invited you to join %2",
|
||||
"invitation.ctr": "Click here to create your account.",
|
||||
"reset.text1": "আমরা আপনার পাসওয়ার্ড রিসেট করার অনুরোধ পেয়েছি, সম্ভবত আপনি আপনার পাসওয়ার্ড ভুলে গিয়েছেন বলেই। তবে যদি তা না হয়ে থাকে, তাহলে এই মেইলকে উপেক্ষা করতে পারেন।",
|
||||
"reset.text2": "পাসওয়ার্ড রিসেট করতে নিচের লিংকে ক্লিক করুন",
|
||||
"reset.cta": "পাসওয়ার্ড রিসেট করতে এখানে ক্লিক করুন",
|
||||
"reset.notify.subject": "Password successfully changed",
|
||||
"reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.",
|
||||
"reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.",
|
||||
"digest.notifications": "%1 থেকে আনরিড নোটিফিকেশন আছে।",
|
||||
"digest.latest_topics": "%1 এর সর্বশেষ টপিকসমূহ",
|
||||
"digest.cta": "%1 ভিজিট করতে এখানে ক্লিক করুন",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"invalid-data": "ভুল তথ্য",
|
||||
"not-logged-in": "আপনি লগিন করেননি",
|
||||
"account-locked": "আপনার অ্যাকাউন্ট সাময়িকভাবে লক করা হয়েছে",
|
||||
"search-requires-login": "অনুসন্ধান করার জন্য একটি অ্যাকাউন্ট প্রয়োজন! অনুগ্রহপূর্বক প্রবেশ করুন অথবা নিবন্ধন করুন!",
|
||||
"search-requires-login": "Searching requires an account - please login or register.",
|
||||
"invalid-cid": "ভুল বিভাগ নাম্বার",
|
||||
"invalid-tid": "ভুল টপিক নাম্বার",
|
||||
"invalid-pid": "ভুল পোস্ট নাম্বার",
|
||||
@@ -18,11 +18,14 @@
|
||||
"username-taken": "ইউজারনেম আগেই ব্যবহৃত",
|
||||
"email-taken": "ইমেইল আগেই ব্যবহৃত",
|
||||
"email-not-confirmed": "আপনার ইমেইল এড্রেস নিশ্চিত করা হয় নি, নিশ্চিত করতে এখানে ক্লিক করুন।",
|
||||
"email-not-confirmed-chat": "You are unable to chat until your email is confirmed",
|
||||
"email-not-confirmed-chat": "You are unable to chat until your email is confirmed, please click here to confirm your email.",
|
||||
"no-email-to-confirm": "This forum requires email confirmation, please click here to enter an email",
|
||||
"email-confirm-failed": "We could not confirm your email, please try again later.",
|
||||
"confirm-email-already-sent": "Confirmation email already sent, please wait %1 minute(s) to send another one.",
|
||||
"username-too-short": "খুব ছোট ইউজারনেম",
|
||||
"username-too-long": "ইউজারনেম বড় হয়ে গিয়েছে",
|
||||
"user-banned": "ব্যবহারকারী নিষিদ্ধ",
|
||||
"user-too-new": "দুঃখিত! প্রথম পোষ্ট করার জন্য আপনাকে %1 সেকেন্ড অপেক্ষা করতে হবে।",
|
||||
"user-too-new": "Sorry, you are required to wait %1 second(s) before making your first post",
|
||||
"no-category": "বিভাগটি খুজে পাওয়া যায় নি",
|
||||
"no-topic": "এই টপিক নেই",
|
||||
"no-post": "এই পোষ্ট নেই",
|
||||
@@ -33,33 +36,44 @@
|
||||
"no-emailers-configured": "কোন ইমেল প্লাগইন লোড করা নেই, কাজেই টেস্ট মেইল পাঠানো সম্ভব হচ্ছে না",
|
||||
"category-disabled": "বিভাগটি নিষ্ক্রিয়",
|
||||
"topic-locked": "টপিক বন্ধ",
|
||||
"post-edit-duration-expired": "You are only allowed to edit posts for %1 second(s) after posting",
|
||||
"still-uploading": "আপলোড সম্পূর্ণ জন্য অনুগ্রহ করে অপেক্ষা করুন",
|
||||
"content-too-short": "অনুগ্রহকরে অপেক্ষকৃত বড় পোষ্ট করুন। একটি পোষ্টে নূন্যতম %1 অক্ষর থাকতে হবে।",
|
||||
"title-too-short": "অনুগ্রহপূর্বক বড় শিরোনাম ব্যাবহার করুন। শিরোনামের জন্য নূন্যতম %1 অক্ষর ব্যাবহার করতে হবে।",
|
||||
"title-too-long": "অনুগ্রহ করে সংক্ষিপ্ত শিরোনাম লিখুন। শিরোনাম %1 অক্ষরের বেশি হতে পারবে না।",
|
||||
"too-many-posts": "আপনি প্রতি %1 সেকেন্ডে একবার পোষ্ট করতে পারবেন। পরবর্তী পোষ্ট করার জন্য অপেক্ষা করুন। ",
|
||||
"too-many-posts-newbie": "নতুন সদস্য হিসাবে %2 সন্মানণা পাওয়া পর্যন্ত আপনি প্রতি %1 সেকেন্ডে একবার পোষ্ট করতে পারবেন। পরবর্তী পোষ্ট করার জন্য অপেক্ষা করুন। ",
|
||||
"file-too-big": "সর্বোচ্চ গৃহীত ফাইলসাইজ হচ্ছে %1 kb - অনুগ্রহপূর্বক ছোট ফাইল আপলোড করুন",
|
||||
"content-too-short": "Please enter a longer post. Posts should contain at least %1 character(s).",
|
||||
"content-too-long": "Please enter a shorter post. Posts can't be longer than %1 character(s).",
|
||||
"title-too-short": "Please enter a longer title. Titles should contain at least %1 character(s).",
|
||||
"title-too-long": "Please enter a shorter title. Titles can't be longer than %1 character(s).",
|
||||
"too-many-posts": "You can only post once every %1 second(s) - please wait before posting again",
|
||||
"too-many-posts-newbie": "As a new user, you can only post once every %1 second(s) until you have earned %2 reputation - please wait before posting again",
|
||||
"tag-too-short": "Please enter a longer tag. Tags should contain at least %1 character(s)",
|
||||
"tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 character(s)",
|
||||
"not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)",
|
||||
"too-many-tags": "Too many tags. Topics can't have more than %1 tag(s)",
|
||||
"file-too-big": "Maximum allowed file size is %1 kB - please upload a smaller file",
|
||||
"cant-vote-self-post": "আপনি নিজের পোস্টে ভোট দিতে পারবেন না।",
|
||||
"already-favourited": "আপনি ইতিমধ্যে এই পোষ্টটি পছন্দের তালিকায় যোগ করেছেন",
|
||||
"already-unfavourited": "আপনি ইতিমধ্যে এই পোষ্টটি আপনার পছন্দের তালিকা থেকে সরিয়ে ফেলেছেন",
|
||||
"cant-ban-other-admins": "আপনি অন্য এ্যাডমিনদের নিষিদ্ধ করতে পারেন না!",
|
||||
"cant-remove-last-admin": "You are the only administrator. Add another user as an administrator before removing yourself as admin",
|
||||
"invalid-image-type": "Invalid image type. Allowed types are: %1",
|
||||
"invalid-image-extension": "Invalid image extension",
|
||||
"invalid-file-type": "Invalid file type. Allowed types are: %1",
|
||||
"group-name-too-short": "গ্রুপের নাম খুব ছোট",
|
||||
"group-already-exists": "গ্রুপ ইতিমধ্যেই বিদ্যমান",
|
||||
"group-name-change-not-allowed": "গ্রুপের নাম পরিবর্তনের অনুমতি নেই",
|
||||
"group-already-member": "You are already part of this group",
|
||||
"group-needs-owner": "This group requires at least one owner",
|
||||
"group-already-invited": "This user has already been invited",
|
||||
"group-already-requested": "Your membership request has already been submitted",
|
||||
"post-already-deleted": "এই পোস্টটি ইতিমধ্যে ডিলিট করা হয়ে গিয়েছে",
|
||||
"post-already-restored": "এই পোষ্টটি ইতিমধ্যে পুনরোদ্ধার করা হয়েছে",
|
||||
"topic-already-deleted": "এই টপিকটি ইতিমধ্যে ডিলিট করা হয়েছে",
|
||||
"topic-already-restored": "এই টপিকটি ইতিমধ্যে পুনরোদ্ধার করা হয়েছে",
|
||||
"cant-purge-main-post": "You can't purge the main post, please delete the topic instead",
|
||||
"topic-thumbnails-are-disabled": "টপিক থাম্বনেল নিষ্ক্রিয় করা। ",
|
||||
"invalid-file": "ভুল ফাইল",
|
||||
"uploads-are-disabled": "আপলোড নিষ্ক্রিয় করা",
|
||||
"upload-error": "আপলোড ত্রুটিঃ %1",
|
||||
"signature-too-long": "দুঃখিত, আপনার সাক্ষর %1 অক্ষরের বেশী হতে পারবে না। ",
|
||||
"signature-too-long": "Sorry, your signature cannot be longer than %1 character(s).",
|
||||
"about-me-too-long": "Sorry, your about me cannot be longer than %1 character(s).",
|
||||
"cant-chat-with-yourself": "আপনি নিজের সাথে চ্যাট করতে পারবেন না!",
|
||||
"chat-restricted": "এই সদস্য তার বার্তালাপ সংরক্ষিত রেখেছেন। এই সদস্য আপনাকে ফলো করার পরই কেবলমাত্র আপনি তার সাথে চ্যাট করতে পারবেন",
|
||||
"too-many-messages": "You have sent too many messages, please wait awhile.",
|
||||
@@ -67,7 +81,10 @@
|
||||
"downvoting-disabled": "ঋণাত্মক ভোট নিস্ক্রীয় রাখা হয়েছে।",
|
||||
"not-enough-reputation-to-downvote": "আপনার এই পোস্ট downvote করার জন্য পর্যাপ্ত সম্মাননা নেই",
|
||||
"not-enough-reputation-to-flag": "এই পোষ্টকে ফ্লাগ করার জন্য আপনার পর্যাপ্ত সম্মাননা নেই",
|
||||
"already-flagged": "You have already flagged this post",
|
||||
"reload-failed": "\"%1\" রিলোড করতে সমস্যা হয়েছে। রিলোডের পূর্বে যা করা হয়েছিল সেটি আনডু করা সমীচীন। ",
|
||||
"registration-error": "নিবন্ধন এরর!",
|
||||
"parse-error": "Something went wrong while parsing server response"
|
||||
"parse-error": "Something went wrong while parsing server response",
|
||||
"wrong-login-type-email": "Please use your email to login",
|
||||
"wrong-login-type-username": "Please use your username to login"
|
||||
}
|
||||
@@ -22,6 +22,7 @@
|
||||
"pagination.out_of": "%2 এর মাঝে %1",
|
||||
"pagination.enter_index": "সূচক লিখুন",
|
||||
"header.admin": "অ্যাডমিন",
|
||||
"header.categories": "Categories",
|
||||
"header.recent": "সাম্প্রতিক",
|
||||
"header.unread": "অপঠিত",
|
||||
"header.tags": "ট্যাগ",
|
||||
@@ -50,6 +51,7 @@
|
||||
"views": "দেখেছেন",
|
||||
"reputation": "সন্মাননা",
|
||||
"read_more": "আরো পড়ুন",
|
||||
"more": "More",
|
||||
"posted_ago_by_guest": "অতিথি পোস্ট করেছেন %1",
|
||||
"posted_ago_by": " %1 %2 দ্বারা পোস্টকৃত",
|
||||
"posted_ago": "পোস্ট করেছেন %1",
|
||||
|
||||
@@ -4,6 +4,14 @@
|
||||
"owner": "Group Owner",
|
||||
"new_group": "Create New Group",
|
||||
"no_groups_found": "There are no groups to see",
|
||||
"pending.accept": "Accept",
|
||||
"pending.reject": "Reject",
|
||||
"pending.accept_all": "Accept All",
|
||||
"pending.reject_all": "Reject All",
|
||||
"pending.none": "There are no pending members at this time",
|
||||
"invited.none": "There are no invited members at this time",
|
||||
"invited.uninvite": "Rescind Invitation",
|
||||
"invited.search": "Search for a user to invite to this group",
|
||||
"cover-instructions": "Drag and Drop a photo, drag to position, and hit <strong>Save</strong>",
|
||||
"cover-change": "Change",
|
||||
"cover-save": "Save",
|
||||
@@ -11,11 +19,31 @@
|
||||
"details.title": "গ্রুপের বিস্তারিত",
|
||||
"details.members": "সদস্য তালিকা",
|
||||
"details.pending": "Pending Members",
|
||||
"details.invited": "Invited Members",
|
||||
"details.has_no_posts": "এই গ্রুপের সদস্যরা এখনো কোন পোষ্ট করেন নি",
|
||||
"details.latest_posts": "সর্বশেষ পোষ্টসমূহ",
|
||||
"details.private": "Private Group",
|
||||
"details.public": "Public Group",
|
||||
"details.private": "Private",
|
||||
"details.grant": "Grant/Rescind Ownership",
|
||||
"details.kick": "Kick",
|
||||
"details.owner_options": "Group Administration",
|
||||
"details.group_name": "Group Name",
|
||||
"details.member_count": "Member Count",
|
||||
"details.creation_date": "Creation Date",
|
||||
"details.description": "Description",
|
||||
"details.badge_preview": "Badge Preview",
|
||||
"details.change_icon": "Change Icon",
|
||||
"details.change_colour": "Change Colour",
|
||||
"details.badge_text": "Badge Text",
|
||||
"details.userTitleEnabled": "Show Badge",
|
||||
"details.private_help": "If enabled, joining of groups requires approval from a group owner",
|
||||
"details.hidden": "Hidden",
|
||||
"details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually",
|
||||
"details.delete_group": "Delete Group",
|
||||
"event.updated": "Group details have been updated",
|
||||
"event.deleted": "The group \"%1\" has been deleted"
|
||||
"event.deleted": "The group \"%1\" has been deleted",
|
||||
"membership.accept-invitation": "Accept Invitation",
|
||||
"membership.invitation-pending": "Invitation Pending",
|
||||
"membership.join-group": "Join Group",
|
||||
"membership.leave-group": "Leave Group",
|
||||
"membership.reject": "Reject"
|
||||
}
|
||||
@@ -1,5 +1,7 @@
|
||||
{
|
||||
"username": "ইউজারনেম / ইমেইল",
|
||||
"username-email": "Username / Email",
|
||||
"username": "Username",
|
||||
"email": "Email",
|
||||
"remember_me": "মনে রাখুন",
|
||||
"forgot_password": "পাসওয়ার্ড ভুলে গিয়েছেন?",
|
||||
"alternative_logins": "বিকল্প প্রবেশ",
|
||||
|
||||
@@ -15,7 +15,12 @@
|
||||
"chat.seven_days": "৭ দিন",
|
||||
"chat.thirty_days": "৩০ দিন",
|
||||
"chat.three_months": "৩ মাস",
|
||||
"composer.compose": "Compose",
|
||||
"composer.show_preview": "Show Preview",
|
||||
"composer.hide_preview": "Hide Preview",
|
||||
"composer.user_said_in": "%1 বলেছেন %2:",
|
||||
"composer.user_said": "%1 বলেছেনঃ",
|
||||
"composer.discard": "আপনি কি নিশ্চিত যে আপনি এই পোস্ট বাতিল করতে ইচ্ছুক?"
|
||||
"composer.discard": "আপনি কি নিশ্চিত যে আপনি এই পোস্ট বাতিল করতে ইচ্ছুক?",
|
||||
"composer.submit_and_lock": "Submit and Lock",
|
||||
"composer.toggle_dropdown": "Toggle Dropdown"
|
||||
}
|
||||
@@ -2,6 +2,7 @@
|
||||
"title": "বিজ্ঞপ্তিগুলো",
|
||||
"no_notifs": "আপনার নতুন কোন বিজ্ঞপ্তি নেই",
|
||||
"see_all": "সকল বিজ্ঞপ্তিগুলো দেখুন",
|
||||
"mark_all_read": "Mark all notifications read",
|
||||
"back_to_home": "ফিরুন %1",
|
||||
"outgoing_link": "বহির্গামী লিঙ্ক",
|
||||
"outgoing_link_message": "আপনি এখন %1 ত্যাগ করছেন",
|
||||
@@ -19,9 +20,9 @@
|
||||
"user_posted_topic": "<strong>%1</strong> has posted a new topic: <strong>%2</strong>",
|
||||
"user_mentioned_you_in": "<strong>%1</strong>, <strong>%2</strong> এ আপনার নাম উল্লেখ করেছেন",
|
||||
"user_started_following_you": "<strong>%1</strong> আপনাকে অনুসরন করা শুরু করেছেন।",
|
||||
"new_register": "<strong>%1</strong> sent a registration request.",
|
||||
"email-confirmed": "ইমেইল নিশ্চিত করা হয়েছে",
|
||||
"email-confirmed-message": "আপনার ইমেইল যাচাই করার জন্য আপনাকে ধন্যবাদ। আপনার অ্যাকাউন্টটি এখন সম্পূর্ণরূপে সক্রিয়।",
|
||||
"email-confirm-error": "একটি ত্রুটি ঘটেছে...",
|
||||
"email-confirm-error-message": "আপনার ইমেল ঠিকানার বৈধতা যাচাইয়ে একটি সমস্যা হয়েছে। সম্ভবত কোডটি ভুল ছিল অথবা কোডের মেয়াদ শেষ হয়ে গিয়েছে।",
|
||||
"email-confirm-sent": "নিশ্চিতকরণ ইমেইল পাঠানো হয়েছে।"
|
||||
}
|
||||
@@ -5,14 +5,17 @@
|
||||
"recent": "সাম্প্রতিক টপিক",
|
||||
"users": "নিবন্ধিত সদস্যগণ",
|
||||
"notifications": "বিজ্ঞপ্তি",
|
||||
"tags": "\"%1\" এ ট্যগকৃত টপিকসমূহ",
|
||||
"tags": "Tags",
|
||||
"tag": "Topics tagged under \"%1\"",
|
||||
"user.edit": "সম্পাদনা \"%1\"",
|
||||
"user.following": "%1 যাদের অনুসরণ করেন",
|
||||
"user.followers": "যারা %1 কে অনুসরণ করেন",
|
||||
"user.posts": "%1 এর পোস্ট সমুহ",
|
||||
"user.topics": "%1 এর টপিক সমুহ",
|
||||
"user.groups": "%1's Groups",
|
||||
"user.favourites": "%1'র প্রিয় পোস্টগুলো",
|
||||
"user.settings": "সদস্য সেটিংস",
|
||||
"user.watched": "Topics watched by %1",
|
||||
"maintenance.text": "%1 is currently undergoing maintenance. Please come back another time.",
|
||||
"maintenance.messageIntro": "Additionally, the administrator has left this message:"
|
||||
}
|
||||
@@ -6,6 +6,7 @@
|
||||
"year": "বছর",
|
||||
"alltime": "সবসময় ",
|
||||
"no_recent_topics": "কোন সাম্প্রতিক টপিক নেই। ",
|
||||
"no_popular_topics": "There are no popular topics.",
|
||||
"there-is-a-new-topic": "There is a new topic.",
|
||||
"there-is-a-new-topic-and-a-new-post": "There is a new topic and a new post.",
|
||||
"there-is-a-new-topic-and-new-posts": "There is a new topic and %1 new posts.",
|
||||
|
||||
@@ -14,5 +14,6 @@
|
||||
"register_now_button": "নিবন্ধন করুন",
|
||||
"alternative_registration": "বিকল্প নিবন্ধন",
|
||||
"terms_of_use": "নিয়মাবলী",
|
||||
"agree_to_terms_of_use": "আমি নিয়মাবলী মেনে চলতে সম্মতি জানালাম"
|
||||
"agree_to_terms_of_use": "আমি নিয়মাবলী মেনে চলতে সম্মতি জানালাম",
|
||||
"registration-added-to-queue": "Your registration has been added to the approval queue. You will receive an email when it is accepted by an administrator."
|
||||
}
|
||||
@@ -10,5 +10,8 @@
|
||||
"enter_email": "অনুগ্রহপূর্বক আপনার ইমেইল এড্রেস প্রদান করুন, আমরা আপনাকে আপনার পাসওয়ার্ড রিসেট সম্পর্কিত তথ্যাবলী ইমেইলে পাঠিয়ে দিবো। ",
|
||||
"enter_email_address": "আপনার ইমেইল এড্রেস",
|
||||
"password_reset_sent": "পাসওয়ার্ড রিসেট মেইল পাঠানো হয়েছে",
|
||||
"invalid_email": "ভুল ইমেইল / ইমেইল ডেটাবেইজে নেই"
|
||||
"invalid_email": "ভুল ইমেইল / ইমেইল ডেটাবেইজে নেই",
|
||||
"password_too_short": "The password entered is too short, please pick a different password.",
|
||||
"passwords_do_not_match": "The two passwords you've entered do not match.",
|
||||
"password_expired": "Your password has expired, please choose a new password"
|
||||
}
|
||||
@@ -1,7 +1,40 @@
|
||||
{
|
||||
"results_matching": "\"%2\" এর সাথে মিলিয়ে %1 ফলাফল পাওয়া গেছে, ( %3 seconds সময় লেগেছে )",
|
||||
"no-matches": "No matches found",
|
||||
"advanced-search": "Advanced Search",
|
||||
"in": "In",
|
||||
"by": "By",
|
||||
"posted-by": "Posted by"
|
||||
"titles": "Titles",
|
||||
"titles-posts": "Titles and Posts",
|
||||
"posted-by": "Posted by",
|
||||
"in-categories": "In Categories",
|
||||
"search-child-categories": "Search child categories",
|
||||
"reply-count": "Reply Count",
|
||||
"at-least": "At least",
|
||||
"at-most": "At most",
|
||||
"post-time": "Post time",
|
||||
"newer-than": "Newer than",
|
||||
"older-than": "Older than",
|
||||
"any-date": "Any date",
|
||||
"yesterday": "Yesterday",
|
||||
"one-week": "One week",
|
||||
"two-weeks": "Two weeks",
|
||||
"one-month": "One month",
|
||||
"three-months": "Three months",
|
||||
"six-months": "Six months",
|
||||
"one-year": "One year",
|
||||
"sort-by": "Sort by",
|
||||
"last-reply-time": "Last reply time",
|
||||
"topic-title": "Topic title",
|
||||
"number-of-replies": "Number of replies",
|
||||
"number-of-views": "Number of views",
|
||||
"topic-start-date": "Topic start date",
|
||||
"username": "Username",
|
||||
"category": "Category",
|
||||
"descending": "In descending order",
|
||||
"ascending": "In ascending order",
|
||||
"save-preferences": "Save preferences",
|
||||
"clear-preferences": "Clear preferences",
|
||||
"search-preferences-saved": "Search preferences saved",
|
||||
"search-preferences-cleared": "Search preferences cleared",
|
||||
"show-results-as": "Show results as"
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"no_tag_topics": "এই ট্যাগ সম্বলিত কোন টপিক নেই",
|
||||
"tags": "ট্যাগসমূহ",
|
||||
"enter_tags_here": "এখানে আপনার ট্যাগ টাইপ করুন, প্রত্যেকটি ট্যাগের পর Enter চাপুন",
|
||||
"enter_tags_here": "Enter tags here, between %1 and %2 characters each.",
|
||||
"enter_tags_here_short": "ট্যাগ বসান",
|
||||
"no_tags": "এখন পর্যন্ত কোন ট্যাগ নেই"
|
||||
}
|
||||
@@ -5,6 +5,7 @@
|
||||
"no_topics_found": "কোন টপিক পাওয়া যায়নি!",
|
||||
"no_posts_found": "কোন পোস্ট পাওয়া যায়নি",
|
||||
"post_is_deleted": "এই পোস্টটি মুছে ফেলা হয়েছে!",
|
||||
"topic_is_deleted": "This topic is deleted!",
|
||||
"profile": "প্রোফাইল ",
|
||||
"posted_by": "পোস্ট করেছেন %1",
|
||||
"posted_by_guest": "অতিথি পোস্ট ",
|
||||
@@ -12,6 +13,7 @@
|
||||
"notify_me": "এই টপিকে নতুন উত্তর আসলে জানুন",
|
||||
"quote": "উদ্ধৃতি",
|
||||
"reply": "উত্তর",
|
||||
"guest-login-reply": "Log in to reply",
|
||||
"edit": "সম্পাদণা",
|
||||
"delete": "মুছে ফেলুন",
|
||||
"purge": "পার্জ",
|
||||
|
||||
@@ -5,5 +5,6 @@
|
||||
"mark_as_read": "পঠিত হিসেবে চিহ্নিত করুন",
|
||||
"selected": "নির্বাচিত",
|
||||
"all": "সবগুলো",
|
||||
"all_categories": "All categories",
|
||||
"topics_marked_as_read.success": "পঠিত হিসেবে চিহ্নিত টপিকসমূহ"
|
||||
}
|
||||
@@ -6,8 +6,12 @@
|
||||
"postcount": "Post Count",
|
||||
"email": "ইমেইল",
|
||||
"confirm_email": "ইমেইল নিশ্চিত করুন",
|
||||
"ban_account": "Ban Account",
|
||||
"ban_account_confirm": "Do you really want to ban this user?",
|
||||
"unban_account": "Unban Account",
|
||||
"delete_account": "একাউন্ট মুছে ফেলুন",
|
||||
"delete_account_confirm": "আপনি কি নিশ্চিত যে আপনি আপনার একাউন্ট মুছে ফেলতে চান ? <br /><strong>এই কাজটির ফলে আপনার কোন তথ্য পুনরূদ্ধার করা সম্ভব নয় </strong><br /><br /> নিশ্চিত করতে আপনার ইউজারনেম প্রবেশ করান। ",
|
||||
"delete_this_account_confirm": "Are you sure you want to delete this account? <br /><strong>This action is irreversible and you will not be able to recover any data</strong><br /><br />",
|
||||
"fullname": "পুর্ণ নাম",
|
||||
"website": "ওয়েবসাইট",
|
||||
"location": "স্থান",
|
||||
@@ -21,12 +25,14 @@
|
||||
"watched": "Watched",
|
||||
"followers": "যাদের অনুসরণ করছেন",
|
||||
"following": "যারা আপনাকে অনুসরণ করছে",
|
||||
"aboutme": "About me",
|
||||
"signature": "স্বাক্ষর",
|
||||
"gravatar": "গ্রাভাতার",
|
||||
"birthday": "জন্মদিন",
|
||||
"chat": "বার্তালাপ",
|
||||
"follow": "অনুসরন করুন",
|
||||
"unfollow": "অনুসরন করা থেকে বিরত থাকুন",
|
||||
"more": "More",
|
||||
"profile_update_success": "প্রোফাইল আপডেট সফল হয়েছে",
|
||||
"change_picture": "ছবি পরিবর্তন",
|
||||
"edit": "সম্পাদনা",
|
||||
@@ -47,7 +53,6 @@
|
||||
"upload_picture": "ছবি আপলোড করুন",
|
||||
"upload_a_picture": "ছবি (একটি) আপলোড করুন",
|
||||
"image_spec": "আপনি কেবলমাত্র PNG, JPG অথবা GIF ফাইল আপলোড করতে পারবেন",
|
||||
"max": "সর্বোচ্চ",
|
||||
"settings": "সেটিংস",
|
||||
"show_email": "আমার ইমেইল দেখাও",
|
||||
"show_fullname": "আমার সম্পূর্ণ নাম দেখাও",
|
||||
@@ -60,21 +65,24 @@
|
||||
"digest_monthly": "মাসিক",
|
||||
"send_chat_notifications": "যদি আমি অনলাইনে না থাকি, সেক্ষেত্রে নতুন চ্যাট মেসেজ আসলে আমাকে ইমেইল করুন",
|
||||
"send_post_notifications": "Send an email when replies are made to topics I am subscribed to",
|
||||
"settings-require-reload": "Some setting changes require a reload. Click here to reload the page.",
|
||||
"has_no_follower": "এই সদস্যের কোন ফলোয়ার নেই :(",
|
||||
"follows_no_one": "এই সদস্য কাউকে ফলো করছেন না :(",
|
||||
"has_no_posts": "এই সদস্য এখনো কোন পোষ্ট করেন নি",
|
||||
"has_no_topics": "এই সদস্য এখনো কোন টপিক পোষ্ট করেন নি",
|
||||
"has_no_watched_topics": "This user didn't watch any topics yet.",
|
||||
"has_no_posts": "This user hasn't posted anything yet.",
|
||||
"has_no_topics": "This user hasn't posted any topics yet.",
|
||||
"has_no_watched_topics": "This user hasn't watched any topics yet.",
|
||||
"email_hidden": "ইমেইল গোপন রাখা হয়েছে",
|
||||
"hidden": "গোপন করা হয়েছে",
|
||||
"paginate_description": "ইনফাইনাইট স্ক্রলের বদলে টপিক এবং পোষ্টের জন্য পেজিনেশন ব্যাবহার করুন",
|
||||
"paginate_description": "Paginate topics and posts instead of using infinite scroll",
|
||||
"topics_per_page": "প্রতি পেজে কতগুলো টপিক থাকবে",
|
||||
"posts_per_page": "প্রতি পেইজে কতগুলো পোষ্ট থাকবে",
|
||||
"notification_sounds": "নতুন নোটিফিকেশনের জন্য নোটিফিকেশন সাউন্ড বাজাও।",
|
||||
"notification_sounds": "Play a sound when you receive a notification",
|
||||
"browsing": "Browsing সেটিংস",
|
||||
"open_links_in_new_tab": "বাইরের URL গুলো নতুন ট্যাবে খোলা হবে ?",
|
||||
"open_links_in_new_tab": "Open outgoing links in new tab",
|
||||
"enable_topic_searching": "In-Topic সার্চ সক্রীয় করো",
|
||||
"topic_search_help": "যদি এনাবল করা হয়ে থাকে, In-topic সার্চিং ব্রাউজারের ডিফল্ট সার্চের বদলে পুরো টপিকজুড়ে সার্চ করার সুবিধা দিবে, যা কেবলমাত্র বর্তমান স্কৃণে দেখানো অংশের মধ্যে সীমাবদ্ধ থাকবে না। ",
|
||||
"follow_topics_you_reply_to": "আপনার উত্তর দেয়া টপিকগুলো ফলো করুন",
|
||||
"follow_topics_you_create": "আপনার তৈরীকরা টপিকসমূহ ফলো করুন"
|
||||
"topic_search_help": "If enabled, in-topic searching will override the browser's default page search behaviour and allow you to search through the entire topic, instead of what is only shown on screen",
|
||||
"follow_topics_you_reply_to": "Follow topics that you reply to",
|
||||
"follow_topics_you_create": "Follow topics you create",
|
||||
"grouptitle": "Select the group title you would like to display",
|
||||
"no-group-title": "No group title"
|
||||
}
|
||||
@@ -5,8 +5,17 @@
|
||||
"search": "খুঁজুন",
|
||||
"enter_username": "ইউজারনেম এর ভিত্তিতে সার্চ করুন",
|
||||
"load_more": "আরো লোড করুন",
|
||||
"users-found-search-took": "%1 সদস্য(দের) খুঁজে পাওয়া গিয়েছে! সময় লেগেছে %2 ms.",
|
||||
"users-found-search-took": "%1 user(s) found! Search took %2 seconds.",
|
||||
"filter-by": "Filter By",
|
||||
"online-only": "Online only",
|
||||
"picture-only": "Picture only"
|
||||
"picture-only": "Picture only",
|
||||
"invite": "Invite",
|
||||
"invitation-email-sent": "An invitation email has been sent to %1",
|
||||
"user_list": "User List",
|
||||
"recent_topics": "Recent Topics",
|
||||
"popular_topics": "Popular Topics",
|
||||
"unread_topics": "Unread Topics",
|
||||
"categories": "Categories",
|
||||
"tags": "Tags",
|
||||
"map": "Map"
|
||||
}
|
||||
@@ -1,8 +1,12 @@
|
||||
{
|
||||
"new_topic_button": "Nové téma",
|
||||
"guest-login-post": "Log in to post",
|
||||
"no_topics": "<strong>V této kategorii zatím nejsou žádné příspěvky.</strong><br />Můžeš být první!",
|
||||
"browsing": "prohlíží",
|
||||
"no_replies": "Nikdo ještě neodpověděl",
|
||||
"share_this_category": "Share this category",
|
||||
"ignore": "Ignorovat"
|
||||
"watch": "Watch",
|
||||
"ignore": "Ignorovat",
|
||||
"watch.message": "You are now watching updates from this category",
|
||||
"ignore.message": "You are now ignoring updates from this category"
|
||||
}
|
||||
@@ -1,14 +1,21 @@
|
||||
{
|
||||
"password-reset-requested": "Požadována obnova hesla - %1!",
|
||||
"welcome-to": "Vítejte v %1",
|
||||
"invite": "Invitation from %1",
|
||||
"greeting_no_name": "Dobrý den",
|
||||
"greeting_with_name": "Dobrý den %1",
|
||||
"welcome.text1": "Děkujeme vám za registraci s %1!",
|
||||
"welcome.text2": "Pro úplnou aktivaci vašeho účtu potřebujeme ověřit vaší emailovou adresu.",
|
||||
"welcome.text3": "An administrator has accepted your registration application. You can login with your username/password now.",
|
||||
"welcome.cta": "Klikněte zde pro potvrzení vaší emailové adresy",
|
||||
"invitation.text1": "%1 has invited you to join %2",
|
||||
"invitation.ctr": "Click here to create your account.",
|
||||
"reset.text1": "Obdrželi jsme požadavek na obnovu hesla, pravděpodobně kvůli tomu, že jste ho zapomněli. Pokud to není tento případ, ignorujte, prosím, tento email.",
|
||||
"reset.text2": "Přejete-li si pokračovat v obnově vašeho hesla, klikněte, prosím, na následující odkaz:",
|
||||
"reset.cta": "Klikněte zde, chcete-li obnovit vaše heslo",
|
||||
"reset.notify.subject": "Password successfully changed",
|
||||
"reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.",
|
||||
"reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.",
|
||||
"digest.notifications": "Máte tu nepřečtená oznámení od %1:",
|
||||
"digest.latest_topics": "Nejnovější témata od %1",
|
||||
"digest.cta": "Kliknutím zde navštívíte %1",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"invalid-data": "Neplatná data",
|
||||
"not-logged-in": "Zdá se, že nejste přihlášen(a)",
|
||||
"account-locked": "Váš účet byl dočasně uzamčen",
|
||||
"search-requires-login": "Chcete-li vyhledávat, musíte mít účet. Přihlašte se nebo zaregistrujte, prosím.",
|
||||
"search-requires-login": "Searching requires an account - please login or register.",
|
||||
"invalid-cid": "Neplatné ID kategorie",
|
||||
"invalid-tid": "Neplatné ID tématu",
|
||||
"invalid-pid": "Neplatné ID příspěvku",
|
||||
@@ -18,11 +18,14 @@
|
||||
"username-taken": "Uživatelské jméno je již použito",
|
||||
"email-taken": "Email je již použit",
|
||||
"email-not-confirmed": "Vaše emailová adresa zatím nebyla potvrzena. Kliknutím zde svůj email potvrdíte.",
|
||||
"email-not-confirmed-chat": "You are unable to chat until your email is confirmed",
|
||||
"email-not-confirmed-chat": "You are unable to chat until your email is confirmed, please click here to confirm your email.",
|
||||
"no-email-to-confirm": "This forum requires email confirmation, please click here to enter an email",
|
||||
"email-confirm-failed": "We could not confirm your email, please try again later.",
|
||||
"confirm-email-already-sent": "Confirmation email already sent, please wait %1 minute(s) to send another one.",
|
||||
"username-too-short": "Uživatelské jméno je příliš krátké",
|
||||
"username-too-long": "Uživatelské jméno je příliš dlouhé",
|
||||
"user-banned": "Uživatel byl zakázán",
|
||||
"user-too-new": "Pardon, ale je potřeba vyčkat %1 sekund, než-li budete moci vytvořit svůj první příspěvek.",
|
||||
"user-too-new": "Sorry, you are required to wait %1 second(s) before making your first post",
|
||||
"no-category": "Kategorie neexistuje",
|
||||
"no-topic": "Téma neexistuje",
|
||||
"no-post": "Příspěvek neexistuje",
|
||||
@@ -33,33 +36,44 @@
|
||||
"no-emailers-configured": "Protože není zaveden žádný emailový plugin, není možné odeslat testovací email.",
|
||||
"category-disabled": "Kategorie zakázána",
|
||||
"topic-locked": "Téma uzamčeno",
|
||||
"post-edit-duration-expired": "You are only allowed to edit posts for %1 second(s) after posting",
|
||||
"still-uploading": "Vyčkejte, prosím, nežli se vše kompletně nahraje.",
|
||||
"content-too-short": "Vložte, prosím, delší příspěvek. Příspěvky by měly obsahovat nejméně %1 znaků.",
|
||||
"title-too-short": "Vložte, prosím, delší titulek. Titulky by měly obsahovat nejméně %1 znaků.",
|
||||
"title-too-long": "Vložte, prosím, kratší titulek. Titulky by neměly být delší, než-li %1 znaků.",
|
||||
"too-many-posts": "Své příspěvky můžete odesílat po %1 sekundách - vyčkejte, prosím, před dalším odesláním",
|
||||
"too-many-posts-newbie": "Jako nový uživatel můžete své příspěvky odesílat po %1 sekundách, dokud nedosáhnete %2 reputace - vyčkejte, prosím, před dalším odesláním",
|
||||
"file-too-big": "Maximální povolená velikost souboru je %1 kbs - nahrávejte, prosím, menší soubory",
|
||||
"content-too-short": "Please enter a longer post. Posts should contain at least %1 character(s).",
|
||||
"content-too-long": "Please enter a shorter post. Posts can't be longer than %1 character(s).",
|
||||
"title-too-short": "Please enter a longer title. Titles should contain at least %1 character(s).",
|
||||
"title-too-long": "Please enter a shorter title. Titles can't be longer than %1 character(s).",
|
||||
"too-many-posts": "You can only post once every %1 second(s) - please wait before posting again",
|
||||
"too-many-posts-newbie": "As a new user, you can only post once every %1 second(s) until you have earned %2 reputation - please wait before posting again",
|
||||
"tag-too-short": "Please enter a longer tag. Tags should contain at least %1 character(s)",
|
||||
"tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 character(s)",
|
||||
"not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)",
|
||||
"too-many-tags": "Too many tags. Topics can't have more than %1 tag(s)",
|
||||
"file-too-big": "Maximum allowed file size is %1 kB - please upload a smaller file",
|
||||
"cant-vote-self-post": "Nemůžete hlasovat pro svůj vlastní příspěvek",
|
||||
"already-favourited": "You have already favourited this post",
|
||||
"already-unfavourited": "You have already unfavourited this post",
|
||||
"cant-ban-other-admins": "Nemůžete zakazovat ostatní administrátory!",
|
||||
"cant-remove-last-admin": "You are the only administrator. Add another user as an administrator before removing yourself as admin",
|
||||
"invalid-image-type": "Invalid image type. Allowed types are: %1",
|
||||
"invalid-image-extension": "Invalid image extension",
|
||||
"invalid-file-type": "Invalid file type. Allowed types are: %1",
|
||||
"group-name-too-short": "Název skupiny je příliš krátký",
|
||||
"group-already-exists": "Skupina už exstuje",
|
||||
"group-name-change-not-allowed": "Změna názvu skupiny není povolena",
|
||||
"group-already-member": "You are already part of this group",
|
||||
"group-needs-owner": "This group requires at least one owner",
|
||||
"group-already-invited": "This user has already been invited",
|
||||
"group-already-requested": "Your membership request has already been submitted",
|
||||
"post-already-deleted": "Tento příspěvek byl již vymazán",
|
||||
"post-already-restored": "Tento příspěvek byl již obnoven",
|
||||
"topic-already-deleted": "Toto téma bylo již vymazáno",
|
||||
"topic-already-restored": "Toto téma bylo již obnoveno",
|
||||
"cant-purge-main-post": "You can't purge the main post, please delete the topic instead",
|
||||
"topic-thumbnails-are-disabled": "Topic thumbnails are disabled.",
|
||||
"invalid-file": "Neplatný soubor",
|
||||
"uploads-are-disabled": "Nahrávání je zakázáno",
|
||||
"upload-error": "Chyba při nahrávání : %1",
|
||||
"signature-too-long": "Pardon, ale váš podpis nemůže být delší, než-li %1 znaků.",
|
||||
"signature-too-long": "Sorry, your signature cannot be longer than %1 character(s).",
|
||||
"about-me-too-long": "Sorry, your about me cannot be longer than %1 character(s).",
|
||||
"cant-chat-with-yourself": "Nemůžete chatovat sami se sebou!",
|
||||
"chat-restricted": "This user has restricted their chat messages. They must follow you before you can chat with them",
|
||||
"too-many-messages": "You have sent too many messages, please wait awhile.",
|
||||
@@ -67,7 +81,10 @@
|
||||
"downvoting-disabled": "Downvoting is disabled",
|
||||
"not-enough-reputation-to-downvote": "You do not have enough reputation to downvote this post",
|
||||
"not-enough-reputation-to-flag": "You do not have enough reputation to flag this post",
|
||||
"already-flagged": "You have already flagged this post",
|
||||
"reload-failed": "NodeBB encountered a problem while reloading: \"%1\". NodeBB will continue to serve the existing client-side assets, although you should undo what you did just prior to reloading.",
|
||||
"registration-error": "Chyba při registraci",
|
||||
"parse-error": "Something went wrong while parsing server response"
|
||||
"parse-error": "Something went wrong while parsing server response",
|
||||
"wrong-login-type-email": "Please use your email to login",
|
||||
"wrong-login-type-username": "Please use your username to login"
|
||||
}
|
||||
@@ -22,6 +22,7 @@
|
||||
"pagination.out_of": "%1 z %2",
|
||||
"pagination.enter_index": "Enter index",
|
||||
"header.admin": "Administrace",
|
||||
"header.categories": "Categories",
|
||||
"header.recent": "Aktuality",
|
||||
"header.unread": "Nepřečtené",
|
||||
"header.tags": "Tagy",
|
||||
@@ -50,6 +51,7 @@
|
||||
"views": "Zobrazení",
|
||||
"reputation": "Reputation",
|
||||
"read_more": "read more",
|
||||
"more": "More",
|
||||
"posted_ago_by_guest": "posted %1 by Guest",
|
||||
"posted_ago_by": "posted %1 by %2",
|
||||
"posted_ago": "posted %1",
|
||||
|
||||
@@ -4,6 +4,14 @@
|
||||
"owner": "Group Owner",
|
||||
"new_group": "Create New Group",
|
||||
"no_groups_found": "There are no groups to see",
|
||||
"pending.accept": "Accept",
|
||||
"pending.reject": "Reject",
|
||||
"pending.accept_all": "Accept All",
|
||||
"pending.reject_all": "Reject All",
|
||||
"pending.none": "There are no pending members at this time",
|
||||
"invited.none": "There are no invited members at this time",
|
||||
"invited.uninvite": "Rescind Invitation",
|
||||
"invited.search": "Search for a user to invite to this group",
|
||||
"cover-instructions": "Drag and Drop a photo, drag to position, and hit <strong>Save</strong>",
|
||||
"cover-change": "Change",
|
||||
"cover-save": "Save",
|
||||
@@ -11,11 +19,31 @@
|
||||
"details.title": "podrobnosti skupiny",
|
||||
"details.members": "Seznam členů",
|
||||
"details.pending": "Pending Members",
|
||||
"details.invited": "Invited Members",
|
||||
"details.has_no_posts": "Členové této skupiny dosud neodeslali ani jeden příspěvek.",
|
||||
"details.latest_posts": "Nejnovější příspěvky",
|
||||
"details.private": "Private Group",
|
||||
"details.public": "Public Group",
|
||||
"details.private": "Private",
|
||||
"details.grant": "Grant/Rescind Ownership",
|
||||
"details.kick": "Kick",
|
||||
"details.owner_options": "Group Administration",
|
||||
"details.group_name": "Group Name",
|
||||
"details.member_count": "Member Count",
|
||||
"details.creation_date": "Creation Date",
|
||||
"details.description": "Description",
|
||||
"details.badge_preview": "Badge Preview",
|
||||
"details.change_icon": "Change Icon",
|
||||
"details.change_colour": "Change Colour",
|
||||
"details.badge_text": "Badge Text",
|
||||
"details.userTitleEnabled": "Show Badge",
|
||||
"details.private_help": "If enabled, joining of groups requires approval from a group owner",
|
||||
"details.hidden": "Hidden",
|
||||
"details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually",
|
||||
"details.delete_group": "Delete Group",
|
||||
"event.updated": "Group details have been updated",
|
||||
"event.deleted": "The group \"%1\" has been deleted"
|
||||
"event.deleted": "The group \"%1\" has been deleted",
|
||||
"membership.accept-invitation": "Accept Invitation",
|
||||
"membership.invitation-pending": "Invitation Pending",
|
||||
"membership.join-group": "Join Group",
|
||||
"membership.leave-group": "Leave Group",
|
||||
"membership.reject": "Reject"
|
||||
}
|
||||
@@ -1,5 +1,7 @@
|
||||
{
|
||||
"username": "Uživatelské jméno / Email",
|
||||
"username-email": "Username / Email",
|
||||
"username": "Username",
|
||||
"email": "Email",
|
||||
"remember_me": "Zapamatovat si mě?",
|
||||
"forgot_password": "Zapomněli jste heslo?",
|
||||
"alternative_logins": "Další způsoby přihlášení",
|
||||
|
||||
@@ -15,7 +15,12 @@
|
||||
"chat.seven_days": "7 dní",
|
||||
"chat.thirty_days": "30 dní",
|
||||
"chat.three_months": "3 měsíce",
|
||||
"composer.compose": "Compose",
|
||||
"composer.show_preview": "Show Preview",
|
||||
"composer.hide_preview": "Hide Preview",
|
||||
"composer.user_said_in": "%1 said in %2:",
|
||||
"composer.user_said": "%1 said:",
|
||||
"composer.discard": "Are you sure you wish to discard this post?"
|
||||
"composer.discard": "Are you sure you wish to discard this post?",
|
||||
"composer.submit_and_lock": "Submit and Lock",
|
||||
"composer.toggle_dropdown": "Toggle Dropdown"
|
||||
}
|
||||
@@ -2,6 +2,7 @@
|
||||
"title": "Upozornění",
|
||||
"no_notifs": "You have no new notifications",
|
||||
"see_all": "See all Notifications",
|
||||
"mark_all_read": "Mark all notifications read",
|
||||
"back_to_home": "Back to %1",
|
||||
"outgoing_link": "Odkaz mimo fórum",
|
||||
"outgoing_link_message": "You are now leaving %1.",
|
||||
@@ -19,9 +20,9 @@
|
||||
"user_posted_topic": "<strong>%1</strong> has posted a new topic: <strong>%2</strong>",
|
||||
"user_mentioned_you_in": "<strong>%1</strong> mentioned you in <strong>%2</strong>",
|
||||
"user_started_following_you": "<strong>%1</strong> started following you.",
|
||||
"new_register": "<strong>%1</strong> sent a registration request.",
|
||||
"email-confirmed": "Email Confirmed",
|
||||
"email-confirmed-message": "Thank you for validating your email. Your account is now fully activated.",
|
||||
"email-confirm-error": "An error occurred...",
|
||||
"email-confirm-error-message": "There was a problem validating your email address. Perhaps the code was invalid or has expired.",
|
||||
"email-confirm-sent": "Confirmation email sent."
|
||||
}
|
||||
@@ -5,14 +5,17 @@
|
||||
"recent": "Recent Topics",
|
||||
"users": "Registered Users",
|
||||
"notifications": "Notifications",
|
||||
"tags": "Topics tagged under \"%1\"",
|
||||
"tags": "Tags",
|
||||
"tag": "Topics tagged under \"%1\"",
|
||||
"user.edit": "Editing \"%1\"",
|
||||
"user.following": "People %1 Follows",
|
||||
"user.followers": "People who Follow %1",
|
||||
"user.posts": "Posts made by %1",
|
||||
"user.topics": "Topics created by %1",
|
||||
"user.groups": "%1's Groups",
|
||||
"user.favourites": "%1's Favourite Posts",
|
||||
"user.settings": "User Settings",
|
||||
"user.watched": "Topics watched by %1",
|
||||
"maintenance.text": "%1 is currently undergoing maintenance. Please come back another time.",
|
||||
"maintenance.messageIntro": "Additionally, the administrator has left this message:"
|
||||
}
|
||||
@@ -6,6 +6,7 @@
|
||||
"year": "Year",
|
||||
"alltime": "All Time",
|
||||
"no_recent_topics": "There are no recent topics.",
|
||||
"no_popular_topics": "There are no popular topics.",
|
||||
"there-is-a-new-topic": "There is a new topic.",
|
||||
"there-is-a-new-topic-and-a-new-post": "There is a new topic and a new post.",
|
||||
"there-is-a-new-topic-and-new-posts": "There is a new topic and %1 new posts.",
|
||||
|
||||
@@ -14,5 +14,6 @@
|
||||
"register_now_button": "Zaregistrovat se",
|
||||
"alternative_registration": "Jiný způsob registrace",
|
||||
"terms_of_use": "Podmínky",
|
||||
"agree_to_terms_of_use": "Souhlasím s Podmínkami"
|
||||
"agree_to_terms_of_use": "Souhlasím s Podmínkami",
|
||||
"registration-added-to-queue": "Your registration has been added to the approval queue. You will receive an email when it is accepted by an administrator."
|
||||
}
|
||||
@@ -10,5 +10,8 @@
|
||||
"enter_email": "Zadejte svou <strong>emailovou adresu</strong> a my Vám pošleme informace, jak můžete obnovit své heslo.",
|
||||
"enter_email_address": "Zadejte emailovou adresu",
|
||||
"password_reset_sent": "Obnova hesla odeslána",
|
||||
"invalid_email": "Špatný email / Email neexistuje!"
|
||||
"invalid_email": "Špatný email / Email neexistuje!",
|
||||
"password_too_short": "The password entered is too short, please pick a different password.",
|
||||
"passwords_do_not_match": "The two passwords you've entered do not match.",
|
||||
"password_expired": "Your password has expired, please choose a new password"
|
||||
}
|
||||
@@ -1,7 +1,40 @@
|
||||
{
|
||||
"results_matching": "%1 result(s) matching \"%2\", (%3 seconds)",
|
||||
"no-matches": "No matches found",
|
||||
"advanced-search": "Advanced Search",
|
||||
"in": "In",
|
||||
"by": "By",
|
||||
"posted-by": "Posted by"
|
||||
"titles": "Titles",
|
||||
"titles-posts": "Titles and Posts",
|
||||
"posted-by": "Posted by",
|
||||
"in-categories": "In Categories",
|
||||
"search-child-categories": "Search child categories",
|
||||
"reply-count": "Reply Count",
|
||||
"at-least": "At least",
|
||||
"at-most": "At most",
|
||||
"post-time": "Post time",
|
||||
"newer-than": "Newer than",
|
||||
"older-than": "Older than",
|
||||
"any-date": "Any date",
|
||||
"yesterday": "Yesterday",
|
||||
"one-week": "One week",
|
||||
"two-weeks": "Two weeks",
|
||||
"one-month": "One month",
|
||||
"three-months": "Three months",
|
||||
"six-months": "Six months",
|
||||
"one-year": "One year",
|
||||
"sort-by": "Sort by",
|
||||
"last-reply-time": "Last reply time",
|
||||
"topic-title": "Topic title",
|
||||
"number-of-replies": "Number of replies",
|
||||
"number-of-views": "Number of views",
|
||||
"topic-start-date": "Topic start date",
|
||||
"username": "Username",
|
||||
"category": "Category",
|
||||
"descending": "In descending order",
|
||||
"ascending": "In ascending order",
|
||||
"save-preferences": "Save preferences",
|
||||
"clear-preferences": "Clear preferences",
|
||||
"search-preferences-saved": "Search preferences saved",
|
||||
"search-preferences-cleared": "Search preferences cleared",
|
||||
"show-results-as": "Show results as"
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"no_tag_topics": "Není zde žádné téma s tímto tagem.",
|
||||
"tags": "Tagy",
|
||||
"enter_tags_here": "Zde vložte tagy. Po každém vložení tagu zmáčkněte enter.",
|
||||
"enter_tags_here": "Enter tags here, between %1 and %2 characters each.",
|
||||
"enter_tags_here_short": "Vložte tagy ...",
|
||||
"no_tags": "Zatím tu není žádný tag."
|
||||
}
|
||||
@@ -5,6 +5,7 @@
|
||||
"no_topics_found": "Nebyla nalezena žádná témata!",
|
||||
"no_posts_found": "Nebyly nalezeny žádné příspěvky!",
|
||||
"post_is_deleted": "Tento příspěvek je vymazán!",
|
||||
"topic_is_deleted": "This topic is deleted!",
|
||||
"profile": "Profil",
|
||||
"posted_by": "Posted by %1",
|
||||
"posted_by_guest": "Posted by Guest",
|
||||
@@ -12,6 +13,7 @@
|
||||
"notify_me": "Sledovat toto téma",
|
||||
"quote": "Citovat",
|
||||
"reply": "Odpovědět",
|
||||
"guest-login-reply": "Log in to reply",
|
||||
"edit": "Upravit",
|
||||
"delete": "Smazat",
|
||||
"purge": "Purge",
|
||||
|
||||
@@ -5,5 +5,6 @@
|
||||
"mark_as_read": "Označit jako přeštené",
|
||||
"selected": "Vybrané",
|
||||
"all": "Vše",
|
||||
"all_categories": "All categories",
|
||||
"topics_marked_as_read.success": "Téma bylo označeno jako přečtené!"
|
||||
}
|
||||
@@ -2,12 +2,16 @@
|
||||
"banned": "Banned",
|
||||
"offline": "Offline",
|
||||
"username": "Uživatelské jméno",
|
||||
"joindate": "Join Date",
|
||||
"postcount": "Post Count",
|
||||
"joindate": "Datum ragistrace",
|
||||
"postcount": "Počet příspěvků",
|
||||
"email": "Email",
|
||||
"confirm_email": "Potvrdit email",
|
||||
"ban_account": "Zablokovat účet",
|
||||
"ban_account_confirm": "Opravdu chcete zablokovat tohoto uživatele?",
|
||||
"unban_account": "Odblokovat účet",
|
||||
"delete_account": "Vymazat účet",
|
||||
"delete_account_confirm": "Are you sure you want to delete your account? <br /><strong>This action is irreversible and you will not be able to recover any of your data</strong><br /><br />Enter your username to confirm that you wish to destroy this account.",
|
||||
"delete_account_confirm": "Opravdu chcete smazat váš účet? <br /><strong>Tato akce je nevratná a nebude možné obnovit žádné vaše data.</strong><br /><br /> Pro potvrzení smazání účtu napište vaše uživatelské jméno.",
|
||||
"delete_this_account_confirm": "Are you sure you want to delete this account? <br /><strong>This action is irreversible and you will not be able to recover any data</strong><br /><br />",
|
||||
"fullname": "Jméno a příjmení",
|
||||
"website": "Webové stránky",
|
||||
"location": "Poloha",
|
||||
@@ -18,39 +22,40 @@
|
||||
"profile_views": "Zobrazení profilu",
|
||||
"reputation": "Reputace",
|
||||
"favourites": "Oblíbené",
|
||||
"watched": "Watched",
|
||||
"watched": "Sledován",
|
||||
"followers": "Sledují ho",
|
||||
"following": "Sleduje",
|
||||
"aboutme": "O mně",
|
||||
"signature": "Podpis",
|
||||
"gravatar": "Gravatar",
|
||||
"birthday": "Datum narození",
|
||||
"chat": "Chat",
|
||||
"follow": "Follow",
|
||||
"unfollow": "Unfollow",
|
||||
"follow": "Sledovat",
|
||||
"unfollow": "Nesledovat",
|
||||
"more": "Více",
|
||||
"profile_update_success": "Profil byl úspěšně aktualizován!",
|
||||
"change_picture": "Změnit obrázek",
|
||||
"edit": "Upravit",
|
||||
"uploaded_picture": "Nahraný obrázek",
|
||||
"upload_new_picture": "Nahrát nový obrázek",
|
||||
"upload_new_picture_from_url": "Upload New Picture From URL",
|
||||
"upload_new_picture_from_url": "Nahrát nový obrázek z URL",
|
||||
"current_password": "Současné heslo",
|
||||
"change_password": "Změnit heslo",
|
||||
"change_password_error": "Neplatné heslo",
|
||||
"change_password_error_wrong_current": "Your current password is not correct!",
|
||||
"change_password_error_length": "Password too short!",
|
||||
"change_password_error_match": "Passwords must match!",
|
||||
"change_password_error_privileges": "You do not have the rights to change this password.",
|
||||
"change_password_success": "Your password is updated!",
|
||||
"change_password_error_wrong_current": "Současné heslo není správné!",
|
||||
"change_password_error_length": "Heslo je příliš krátké!",
|
||||
"change_password_error_match": "Hesla se neshodují!",
|
||||
"change_password_error_privileges": "Nemáte práva změnit toto heslo.",
|
||||
"change_password_success": "Heslo je aktualizované!",
|
||||
"confirm_password": "Potvrzení hesla",
|
||||
"password": "Heslo",
|
||||
"username_taken_workaround": "The username you requested was already taken, so we have altered it slightly. You are now known as <strong>%1</strong>",
|
||||
"upload_picture": "Nahrát obrázek",
|
||||
"upload_a_picture": "Nahrát obrázek",
|
||||
"image_spec": "You may only upload PNG, JPG, or GIF files",
|
||||
"max": "max.",
|
||||
"image_spec": "Nahrávat lze pouze soubory PNG, JPG a GIF",
|
||||
"settings": "Nastavení",
|
||||
"show_email": "Zobrazovat můj email v profilu",
|
||||
"show_fullname": "Show My Full Name",
|
||||
"show_fullname": "Zobrazovat celé jméno",
|
||||
"restrict_chats": "Only allow chat messages from users I follow",
|
||||
"digest_label": "Subscribe to Digest",
|
||||
"digest_description": "Subscribe to email updates for this forum (new notifications and topics) according to a set schedule",
|
||||
@@ -60,21 +65,24 @@
|
||||
"digest_monthly": "Monthly",
|
||||
"send_chat_notifications": "Send an email if a new chat message arrives and I am not online",
|
||||
"send_post_notifications": "Send an email when replies are made to topics I am subscribed to",
|
||||
"settings-require-reload": "Some setting changes require a reload. Click here to reload the page.",
|
||||
"has_no_follower": "Tohoto uživatele nikdo nesleduje :(",
|
||||
"follows_no_one": "Tento uživatel nikoho nesleduje :(",
|
||||
"has_no_posts": "This user didn't post anything yet.",
|
||||
"has_no_topics": "This user didn't post any topics yet.",
|
||||
"has_no_watched_topics": "This user didn't watch any topics yet.",
|
||||
"has_no_posts": "This user hasn't posted anything yet.",
|
||||
"has_no_topics": "This user hasn't posted any topics yet.",
|
||||
"has_no_watched_topics": "This user hasn't watched any topics yet.",
|
||||
"email_hidden": "Skrytý email",
|
||||
"hidden": "skrytý",
|
||||
"paginate_description": "Paginate topics and posts instead of using infinite scroll.",
|
||||
"paginate_description": "Paginate topics and posts instead of using infinite scroll",
|
||||
"topics_per_page": "Topics per Page",
|
||||
"posts_per_page": "Posts per Page",
|
||||
"notification_sounds": "Play a sound when you receive a notification.",
|
||||
"notification_sounds": "Play a sound when you receive a notification",
|
||||
"browsing": "Browsing Settings",
|
||||
"open_links_in_new_tab": "Open outgoing links in new tab?",
|
||||
"open_links_in_new_tab": "Open outgoing links in new tab",
|
||||
"enable_topic_searching": "Enable In-Topic Searching",
|
||||
"topic_search_help": "If enabled, in-topic searching will override the browser's default page search behaviour and allow you to search through the entire topic, instead of what is only shown on screen.",
|
||||
"follow_topics_you_reply_to": "Follow topics that you reply to.",
|
||||
"follow_topics_you_create": "Follow topics you create."
|
||||
"topic_search_help": "If enabled, in-topic searching will override the browser's default page search behaviour and allow you to search through the entire topic, instead of what is only shown on screen",
|
||||
"follow_topics_you_reply_to": "Follow topics that you reply to",
|
||||
"follow_topics_you_create": "Follow topics you create",
|
||||
"grouptitle": "Select the group title you would like to display",
|
||||
"no-group-title": "No group title"
|
||||
}
|
||||
@@ -5,8 +5,17 @@
|
||||
"search": "Vyhledávat",
|
||||
"enter_username": "Zadej uživatelské jméno k hledání",
|
||||
"load_more": "Načíst další",
|
||||
"users-found-search-took": "Nazelezeno: %1 uživetel(ů)! Vyhledání trvalo %2 ms.",
|
||||
"users-found-search-took": "%1 user(s) found! Search took %2 seconds.",
|
||||
"filter-by": "Filter By",
|
||||
"online-only": "Online only",
|
||||
"picture-only": "Picture only"
|
||||
"picture-only": "Picture only",
|
||||
"invite": "Invite",
|
||||
"invitation-email-sent": "An invitation email has been sent to %1",
|
||||
"user_list": "User List",
|
||||
"recent_topics": "Recent Topics",
|
||||
"popular_topics": "Popular Topics",
|
||||
"unread_topics": "Unread Topics",
|
||||
"categories": "Categories",
|
||||
"tags": "Tags",
|
||||
"map": "Map"
|
||||
}
|
||||
12
public/language/da/category.json
Normal file
12
public/language/da/category.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"new_topic_button": "Nyt emne",
|
||||
"guest-login-post": "Log ind",
|
||||
"no_topics": "<strong>Der er ikke nogen nye emner i denne kategori.</strong><br /> Hvorfor prøver du ikke at lave et?",
|
||||
"browsing": "browse",
|
||||
"no_replies": "Ingen har svaret",
|
||||
"share_this_category": "Del denne kategori",
|
||||
"watch": "Overvåg",
|
||||
"ignore": "Ignorer",
|
||||
"watch.message": "Du overvåger nu opdateringer fra denne kategori",
|
||||
"ignore.message": "Du ignorere nu opdateringer fra denne kategori"
|
||||
}
|
||||
32
public/language/da/email.json
Normal file
32
public/language/da/email.json
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"password-reset-requested": "Vi skal anmode dig om at nulstille dit kodeord - %1!",
|
||||
"welcome-to": "Velkommen til %1",
|
||||
"invite": "Invitation fra %1",
|
||||
"greeting_no_name": "Hej",
|
||||
"greeting_with_name": "Hej %1",
|
||||
"welcome.text1": "Tak for at du registrerede dig hos %1!",
|
||||
"welcome.text2": "For at færdiggøre din konto, har vi brug for at verificere at du ejer den email adresse du registerede med.",
|
||||
"welcome.text3": "En administrator har accepteret din registreringsansøgning. Du kan logge ind med dit brugernavn og adgangskode nu.",
|
||||
"welcome.cta": "Klik her for at bekræfte din email adresse.",
|
||||
"invitation.text1": "%1 har inviteret dig til at deltage i %2",
|
||||
"invitation.ctr": "Klik her for at oprette din konto.",
|
||||
"reset.text1": "Vi har modtaget en anmodning om at nulstille dit kodeord, måske fordi du har glemt det. Hvis det ikke er tilfældet, venligst ignorer denne email.",
|
||||
"reset.text2": "For at fortsætte med at nulstille kodeordet, venligst klik på dette link:",
|
||||
"reset.cta": "Klik her for at nulstille dit kodeord. ",
|
||||
"reset.notify.subject": "Dit kodeord er nu ændret",
|
||||
"reset.notify.text1": "Bemærk: %1 gang blev dit kodeord ændret.",
|
||||
"reset.notify.text2": "Hvis du ikke godkendte dette, kontakt straks en administrator.",
|
||||
"digest.notifications": "Du har ulæste notifikationer fra %1:",
|
||||
"digest.latest_topics": "Nyeste emne fra %1",
|
||||
"digest.cta": "Klik her for at gå til %1",
|
||||
"digest.unsub.info": "Du har fået tilsendt dette sammendrag pga. indstillingerne i dit abonnement.",
|
||||
"digest.no_topics": "Der har ikke været nogen aktive emner de/den sidste %1",
|
||||
"notif.chat.subject": "Ny chat besked modtaget fra %1",
|
||||
"notif.chat.cta": "Klik her for at forsætte med samtalen",
|
||||
"notif.chat.unsub.info": "Denne chat notifikation blev sendt til dig pga. indstillingerne i dit abonnement.",
|
||||
"notif.post.cta": "Klik her for a læse hele emnet",
|
||||
"notif.post.unsub.info": "Denne indlægs notifikation var sendt pga. dine abonnering indstillinger.",
|
||||
"test.text1": "Dette er en test email for at kontrollere, at den udgående email server er opsat korrekt i forhold til din NodeBB installation.",
|
||||
"unsub.cta": "Klik her for at ændre disse indstillinger",
|
||||
"closing": "Tak!"
|
||||
}
|
||||
90
public/language/da/error.json
Normal file
90
public/language/da/error.json
Normal file
@@ -0,0 +1,90 @@
|
||||
{
|
||||
"invalid-data": "Ugyldig Data",
|
||||
"not-logged-in": "Det ser ikke ud til at du er logget ind.",
|
||||
"account-locked": "Din konto er blevet blokeret midlertidigt.",
|
||||
"search-requires-login": "Du skal have en konto for at søge - log venligst ind eller registrer dig.",
|
||||
"invalid-cid": "Ugyldig Kategori ID",
|
||||
"invalid-tid": "Ugyldig Tråd ID",
|
||||
"invalid-pid": "Ugyldig Indlæg ID",
|
||||
"invalid-uid": "Ugyldig Bruger ID",
|
||||
"invalid-username": "Ugyldig Brugernavn",
|
||||
"invalid-email": "Ugyldig Email",
|
||||
"invalid-title": "Ugylidt titel",
|
||||
"invalid-user-data": "Ugyldig Bruger Data",
|
||||
"invalid-password": "Ugyldig Adgangskode",
|
||||
"invalid-username-or-password": "Venligst angiv både brugernavn og adgangskode",
|
||||
"invalid-search-term": "Ugyldig søgeterm",
|
||||
"invalid-pagination-value": "Ugyldig sidetalsværdi",
|
||||
"username-taken": "Brugernavn optaget",
|
||||
"email-taken": "Emailadresse allerede i brug",
|
||||
"email-not-confirmed": "Din email adresse er ikke blevet bekræftet endnu, venligst klik her for at bekrætige den.",
|
||||
"email-not-confirmed-chat": "Du kan ikke chatte før din email er bekræftet, klik her for at bekræfte din email.",
|
||||
"no-email-to-confirm": "Dette forum kræver bekræftelse af din email, klik her for at indtaste en email",
|
||||
"email-confirm-failed": "Vi kunne ikke bekræfte din email, prøv igen senere.",
|
||||
"confirm-email-already-sent": "Bekræftelses email er allerede afsendt, vent venligt %1 minut(ter) for at sende endnu en.",
|
||||
"username-too-short": "Brugernavn er for kort",
|
||||
"username-too-long": "Brugernavn er for langt",
|
||||
"user-banned": "Bruger er bortvist",
|
||||
"user-too-new": "Beklager, du er nødt til at vente %1 sekund(er) før du opretter dit indlæg",
|
||||
"no-category": "Kategorien eksisterer ikke",
|
||||
"no-topic": "Tråden eksisterer ikke",
|
||||
"no-post": "Indlægget eksisterer ikke",
|
||||
"no-group": "Gruppen eksisterer ikke",
|
||||
"no-user": "Brugeren eksisterer ikke",
|
||||
"no-teaser": "Teaser eksisterer ikke",
|
||||
"no-privileges": "Du har ikke nok rettigheder til at udføre denne handling",
|
||||
"no-emailers-configured": "Ingen email plugin er blevet indlæst, så en test email kunne ikke sendes",
|
||||
"category-disabled": "Kategorien er deaktiveret",
|
||||
"topic-locked": "Tråden er låst",
|
||||
"post-edit-duration-expired": "Du kan kun redigere indlæg i %1 sekund(er) efter indlæg",
|
||||
"still-uploading": "Venligst vent til overførslen er færdig",
|
||||
"content-too-short": "Venligst indtast et længere indlæg. Indlægget skal mindst indeholde %1 karakter(er).",
|
||||
"content-too-long": "Venligt indtast et kortere indlæg. Indlæg kan ikke være længere end %1 karakter(er).",
|
||||
"title-too-short": "Venligst indtast en længere titel. Titlen skal mindst indeholde %1 karakter(er).",
|
||||
"title-too-long": "Venligst indtast en kortere titel. Titlen kan ikke indeholde flere end %1 karakter(er).",
|
||||
"too-many-posts": "Du kan højest skrive et indlæg hver %1 sekund(er) - venligst vent et øjeblik før næste indlæg",
|
||||
"too-many-posts-newbie": "Som ny bruger kan du kun skrive et indlæg engang hvert %1. sekund() indtil du har optjent %2 omdømme point - venligst vent et øjeblik før næste indlæg.",
|
||||
"tag-too-short": "Indtast et længere tag. Tags skal indeholde mindst %1 karakter(er).",
|
||||
"tag-too-long": "Indtast et længere tag. Tags kan ikke være længere end %1 karakter(er).",
|
||||
"not-enough-tags": "Ikke nok tags. Tråde skal have mindst %1 tag(s)",
|
||||
"too-many-tags": "For mange tags. Tråde kan ikke have mere end %1 tag(s)",
|
||||
"file-too-big": "Maksimum filstørrelse er %1 kB - venligst overfør en mindre fil",
|
||||
"cant-vote-self-post": "Du kan ikke stemme på dit eget indlæg",
|
||||
"already-favourited": "Du har allerede føjet dette indlæg til dine favoritter",
|
||||
"already-unfavourited": "Du har allerede fjernet dette indlæg fra dine favoritter",
|
||||
"cant-ban-other-admins": "Du kan ikke udlukke andre administatrorer!",
|
||||
"cant-remove-last-admin": "Du er den eneste administrator. Tilføj en anden bruger som administrator før du fjerner dig selv som administrator",
|
||||
"invalid-image-type": "Invalid billed type. De tilladte typer er: %1",
|
||||
"invalid-image-extension": "Forkert billede filnavnsendelse",
|
||||
"invalid-file-type": "Invalid fil type. Tilladte typer er: %1",
|
||||
"group-name-too-short": "Gruppe navn for kort",
|
||||
"group-already-exists": "Gruppen eksisterer allerede",
|
||||
"group-name-change-not-allowed": "Ændring af gruppe navn er ikke tilladt",
|
||||
"group-already-member": "Du er allerede en del af denne gruppe",
|
||||
"group-needs-owner": "Denne grupper kræver mindst én ejer",
|
||||
"group-already-invited": "Denne bruger er allerede blevet inviteret",
|
||||
"group-already-requested": "Din medlemskabs anmodning er allerede blevet afsendt",
|
||||
"post-already-deleted": "Dette indlæg er allerede blevet slettet",
|
||||
"post-already-restored": "Dette indlæg er allerede blevet genskabt",
|
||||
"topic-already-deleted": "Denne tråd er allerede blevet slettet",
|
||||
"topic-already-restored": "Denne tråd er allerede blevet genskabt",
|
||||
"cant-purge-main-post": "Du kan ikke udradere hoved indlægget, fjern venligt tråden istedet",
|
||||
"topic-thumbnails-are-disabled": "Tråd miniaturebilleder er slået fra.",
|
||||
"invalid-file": "Ugyldig fil",
|
||||
"uploads-are-disabled": "Overførsel er slået fra",
|
||||
"signature-too-long": "Beklager, din signatur kan ikke være længere end %1 karakter(er).",
|
||||
"about-me-too-long": "Beklager, men din om mig side kan ikke være længere end %1 karakter(er).",
|
||||
"cant-chat-with-yourself": "Du kan ikke chatte med dig selv!",
|
||||
"chat-restricted": "Denne bruger har spæret adgangen til chat beskeder. Brugeren må følge dig før du kan chatte med ham/hende",
|
||||
"too-many-messages": "Du har sendt for mange beskeder, vent venligt lidt.",
|
||||
"reputation-system-disabled": "Vurderingssystem er slået fra.",
|
||||
"downvoting-disabled": "Nedvurdering er slået fra",
|
||||
"not-enough-reputation-to-downvote": "Du har ikke nok omdømme til at nedstemme dette indlæg",
|
||||
"not-enough-reputation-to-flag": "Du har ikke nok omdømme til at vurdere dette indlæg",
|
||||
"already-flagged": "Du har allerede vurderet dette indlæg",
|
||||
"reload-failed": "NodeBB stødte på et problem under genindlæsningen : \"%1\". NodeBB vil fortsætte med en ældre version, og det er nok god ide at genoptage fra lige før du genindlæste siden.",
|
||||
"registration-error": "Registeringsfejl",
|
||||
"parse-error": "Noget gik galt under fortolknings er serverens respons",
|
||||
"wrong-login-type-email": "Brug venligt din email til login",
|
||||
"wrong-login-type-username": "Brug venligt dit brugernavn til login"
|
||||
}
|
||||
83
public/language/da/global.json
Normal file
83
public/language/da/global.json
Normal file
@@ -0,0 +1,83 @@
|
||||
{
|
||||
"home": "Forside",
|
||||
"search": "Søg",
|
||||
"buttons.close": "Luk",
|
||||
"403.title": "Adgang nægtet",
|
||||
"403.message": "Det ser ud til du er stødt på en side du ikke har adgang til.",
|
||||
"403.login": "Måske du skulle <a href='%1/login'>prøve og logge ind</a>?",
|
||||
"404.title": "Ikke fundet",
|
||||
"404.message": "Det ser ud til du er stødt på en side der ikke finder. Retuner til <a href='%1/'> forsiden</a>.",
|
||||
"500.title": "Intern fejl.",
|
||||
"500.message": "Ups! Ser ud til at noget gik galt!",
|
||||
"register": "Tilmeld",
|
||||
"login": "Log ind",
|
||||
"please_log_in": "Venligst log ind",
|
||||
"logout": "Log ud",
|
||||
"posting_restriction_info": "Det er i øjeblikket kun muligt at skrive indlæg som registeret medlem, klik her for at logge ind.",
|
||||
"welcome_back": "Velkommen tilbage",
|
||||
"you_have_successfully_logged_in": "Du er nu logget ind",
|
||||
"save_changes": "Gem ændringer",
|
||||
"close": "Luk",
|
||||
"pagination": "Sidetal",
|
||||
"pagination.out_of": "%1 ud af %2",
|
||||
"pagination.enter_index": "Indtast indeks",
|
||||
"header.admin": "Administrator",
|
||||
"header.categories": "Kategorier",
|
||||
"header.recent": "Seneste",
|
||||
"header.unread": "Ulæst",
|
||||
"header.tags": "Etiket",
|
||||
"header.popular": "Populære",
|
||||
"header.users": "Bruger",
|
||||
"header.groups": "Grupper",
|
||||
"header.chats": "Chats",
|
||||
"header.notifications": "Notifikationer",
|
||||
"header.search": "Søg",
|
||||
"header.profile": "Profil",
|
||||
"notifications.loading": "Indlæser notifikationer",
|
||||
"chats.loading": "Indlæser chats",
|
||||
"motd.welcome": "Velkommen til NodeBB, fremtidens diskussion platform. ",
|
||||
"previouspage": "Forrige side",
|
||||
"nextpage": "Næste side",
|
||||
"alert.success": "Succes",
|
||||
"alert.error": "Fejl",
|
||||
"alert.banned": "Forment adgang",
|
||||
"alert.banned.message": "Du er lige blevet udelukket, du vil nu blive logget ud.",
|
||||
"alert.unfollow": "Du følger ikke længere %1!",
|
||||
"alert.follow": "Du følger nu %1!",
|
||||
"online": "Online",
|
||||
"users": "Bruger",
|
||||
"topics": "Emner",
|
||||
"posts": "Indlæg",
|
||||
"views": "Visninger",
|
||||
"reputation": "Omdømme",
|
||||
"read_more": "læs mere",
|
||||
"more": "Mere",
|
||||
"posted_ago_by_guest": "indsendt %1 af gæst",
|
||||
"posted_ago_by": "indsendt %1 siden af %2",
|
||||
"posted_ago": "Indsendt %1 siden",
|
||||
"posted_in_ago_by_guest": "insendt i %1 %2 siden af gæst",
|
||||
"posted_in_ago_by": "skrevet i %1 %2 af %3",
|
||||
"posted_in_ago": "skrivet i %1 %2",
|
||||
"replied_ago": "svaret for %1",
|
||||
"user_posted_ago": "%1 skrev for %2",
|
||||
"guest_posted_ago": "Gæst skrev for %1",
|
||||
"last_edited_by_ago": "sidst redigeret af %1 for %2",
|
||||
"norecentposts": "Ingen seneste indlæg",
|
||||
"norecenttopics": "Ingen seneste tråde",
|
||||
"recentposts": "Seneste indlæg",
|
||||
"recentips": "Seneste loggede ind IPer",
|
||||
"away": "Væk",
|
||||
"dnd": "Vil ikke forstyres",
|
||||
"invisible": "Usynlig",
|
||||
"offline": "Offline",
|
||||
"email": "Email",
|
||||
"language": "Sprog",
|
||||
"guest": "Gæst",
|
||||
"guests": "Gæster",
|
||||
"updated.title": "Forum opdateret",
|
||||
"updated.message": "Dette form er lige blevet opdateret til den seneste version. Klik her for at genindlæse siden.",
|
||||
"privacy": "Privatliv",
|
||||
"follow": "Følg",
|
||||
"unfollow": "Følg ikke længere",
|
||||
"delete_all": "Slet alt"
|
||||
}
|
||||
49
public/language/da/groups.json
Normal file
49
public/language/da/groups.json
Normal file
@@ -0,0 +1,49 @@
|
||||
{
|
||||
"groups": "grupper",
|
||||
"view_group": "se gruppe",
|
||||
"owner": "Gruppe ejer",
|
||||
"new_group": "Opret ny gruppe",
|
||||
"no_groups_found": "Der er ingen grupper at se",
|
||||
"pending.accept": "Accepter",
|
||||
"pending.reject": "Afvis",
|
||||
"pending.accept_all": "Acceptér Alle",
|
||||
"pending.reject_all": "Afvis Alle",
|
||||
"pending.none": "Der er ikke nogen afventene medlemmer i øjeblikket",
|
||||
"invited.none": "Der er ingen inviterede medlemmer i øjeblikket",
|
||||
"invited.uninvite": "Tilbagetræk invitation",
|
||||
"invited.search": "Søg efter en bruger at invitere til denne gruppe",
|
||||
"cover-instructions": "Træk og slip et billede, træk til positionen og tryk <strong>Gem</strong>",
|
||||
"cover-change": "Ændre",
|
||||
"cover-save": "Gem",
|
||||
"cover-saving": "Gemmer",
|
||||
"details.title": "gruppe detaljer",
|
||||
"details.members": "liste over medlemmer",
|
||||
"details.pending": "Verserende medlemmer",
|
||||
"details.invited": "Inviterede Medlemmer",
|
||||
"details.has_no_posts": "Medlemmer af denne gruppe har ikke oprettet indlæg.",
|
||||
"details.latest_posts": "seneste indlæg",
|
||||
"details.private": "Privat",
|
||||
"details.grant": "Giv/ophæv ejerskab",
|
||||
"details.kick": "Spark",
|
||||
"details.owner_options": "Gruppe administration",
|
||||
"details.group_name": "Gruppe navn",
|
||||
"details.member_count": "Medlemsantal",
|
||||
"details.creation_date": "Oprettelsesdato",
|
||||
"details.description": "Beskrivelse",
|
||||
"details.badge_preview": "Mærke forhåndsvisning",
|
||||
"details.change_icon": "Skift ikon",
|
||||
"details.change_colour": "Skift farve",
|
||||
"details.badge_text": "Mærke tekst",
|
||||
"details.userTitleEnabled": "Vis mærke",
|
||||
"details.private_help": "Hvis aktiveret, så vil det kræve godkendelse af gruppe ejeren for at tilslutte sig en gruppe",
|
||||
"details.hidden": "Skjult",
|
||||
"details.hidden_help": "Hvis aktiveret, så vil denne gruppe ikke kunne ses i gruppelisten og bruhere skal inviteres manuelt",
|
||||
"details.delete_group": "Delete Group",
|
||||
"event.updated": "Gruppe detaljer er blevet opdateret",
|
||||
"event.deleted": "Gruppen \"%1\" er blevet slettet",
|
||||
"membership.accept-invitation": "Acceptér Invitation",
|
||||
"membership.invitation-pending": "Afventende Invitationer",
|
||||
"membership.join-group": "Bliv medlem af gruppe",
|
||||
"membership.leave-group": "Forlad Gruppe",
|
||||
"membership.reject": "Afvis"
|
||||
}
|
||||
5
public/language/da/language.json
Normal file
5
public/language/da/language.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"name": "Danish",
|
||||
"code": "da",
|
||||
"dir": "ltr"
|
||||
}
|
||||
11
public/language/da/login.json
Normal file
11
public/language/da/login.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"username-email": "Brugernavn / Email",
|
||||
"username": "Brugernavn",
|
||||
"email": "Email",
|
||||
"remember_me": "Husk mig?",
|
||||
"forgot_password": "Glemt kodeord?",
|
||||
"alternative_logins": "alternative logins",
|
||||
"failed_login_attempt": "Login mislykkedes, venligt prøv igen.",
|
||||
"login_successful": "Du har successfuldt logged in!",
|
||||
"dont_have_account": "Har du ikke en konto?"
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user