Compare commits
560 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
db10103d8e | ||
![]() |
7f5299cf46 | ||
![]() |
ac7f04e669 | ||
![]() |
65740da979 | ||
![]() |
2795fe4579 | ||
![]() |
4ab773eb92 | ||
![]() |
66b512af5d | ||
![]() |
0f9a6417b0 | ||
![]() |
6a9e52d83c | ||
![]() |
1161d6cae2 | ||
![]() |
187696c973 | ||
![]() |
4b7b51d5cc | ||
![]() |
0e3213ff6d | ||
![]() |
9b092e918a | ||
![]() |
cfa38e875c | ||
![]() |
9ea7d75aa4 | ||
![]() |
165d272552 | ||
![]() |
9b876b30b2 | ||
![]() |
5e82064a7d | ||
![]() |
90fade8e72 | ||
![]() |
c038892795 | ||
![]() |
926eb34680 | ||
![]() |
e6e33faefb | ||
![]() |
0a2e046b28 | ||
![]() |
36a632dc02 | ||
![]() |
c9ce150fe8 | ||
![]() |
6496835515 | ||
![]() |
b404ce463f | ||
![]() |
b875b0faa2 | ||
![]() |
4786214e2a | ||
![]() |
0484976afa | ||
![]() |
19cc9f7fb0 | ||
![]() |
7706c38d3d | ||
![]() |
9acc36185b | ||
![]() |
be89516707 | ||
![]() |
e5acd1afb9 | ||
![]() |
f6e7f389d6 | ||
![]() |
b9eaf906e7 | ||
![]() |
84df0714d8 | ||
![]() |
c7650846a2 | ||
![]() |
ea97d6a028 | ||
![]() |
0e4a111f81 | ||
![]() |
037837b551 | ||
![]() |
c5eb3021c0 | ||
![]() |
3b8b03d8b4 | ||
![]() |
1afe46b19a | ||
![]() |
fe281f1786 | ||
![]() |
24ef4d3da2 | ||
![]() |
68192126e6 | ||
![]() |
a28c515ef6 | ||
![]() |
07526ada45 | ||
![]() |
71d9c2a53d | ||
![]() |
c0144db75c | ||
![]() |
5e8c95bde8 | ||
![]() |
8630542146 | ||
![]() |
a674657bcb | ||
![]() |
c625a3fa5b | ||
![]() |
ae6f0d49c2 | ||
![]() |
575a8bd9c8 | ||
![]() |
3db7551ad3 | ||
![]() |
37b535df30 | ||
![]() |
f30df92597 | ||
![]() |
9b18104343 | ||
![]() |
e2862ed097 | ||
![]() |
1c38c7010d | ||
![]() |
34ea3cf226 | ||
![]() |
54631026de | ||
![]() |
944250f7fd | ||
![]() |
ab0253ab07 | ||
![]() |
758e054c92 | ||
![]() |
187b44c7f3 | ||
![]() |
587ea5b424 | ||
![]() |
1a883f4f05 | ||
![]() |
540e6e4f99 | ||
![]() |
baf3d8f3ee | ||
![]() |
7a66c9b5f3 | ||
![]() |
15cd563612 | ||
![]() |
e2556189de | ||
![]() |
9236a8fd6c | ||
![]() |
303c5abfb4 | ||
![]() |
fc65190ef7 | ||
![]() |
f47a564819 | ||
![]() |
fa0814f939 | ||
![]() |
ddd931a0a3 | ||
![]() |
46010187c3 | ||
![]() |
877bd52ed7 | ||
![]() |
d964c5f27f | ||
![]() |
d35b02fa23 | ||
![]() |
21ece52a9f | ||
![]() |
c2ae160d23 | ||
![]() |
9c74c5c5dc | ||
![]() |
2e80cebc11 | ||
![]() |
80783199a9 | ||
![]() |
f418eaecf9 | ||
![]() |
901436a095 | ||
![]() |
6d557269c1 | ||
![]() |
a905188e95 | ||
![]() |
a21070c01b | ||
![]() |
5d0ee544f4 | ||
![]() |
e52a9e0a65 | ||
![]() |
67bf6ff3ce | ||
![]() |
000bee6327 | ||
![]() |
19a232cad7 | ||
![]() |
a744f75eb9 | ||
![]() |
5cf07fc50f | ||
![]() |
1143606bc8 | ||
![]() |
09f4885f89 | ||
![]() |
dfd92efa89 | ||
![]() |
c3fcfad910 | ||
![]() |
652588abed | ||
![]() |
2b4d5b73b9 | ||
![]() |
c08d959b59 | ||
![]() |
7783c1e0e1 | ||
![]() |
6afa67089a | ||
![]() |
26928ab407 | ||
![]() |
4f04421cb3 | ||
![]() |
4d1c723496 | ||
![]() |
ae5d537197 | ||
![]() |
2d21685d22 | ||
![]() |
d4c0d85cbc | ||
![]() |
26b268588f | ||
![]() |
781b57585b | ||
![]() |
a0b036a119 | ||
![]() |
c6afc61c94 | ||
![]() |
a1af83c0ab | ||
![]() |
4168addbb2 | ||
![]() |
600394458c | ||
![]() |
f33785a09c | ||
![]() |
d0d5068f72 | ||
![]() |
d70b8275b4 | ||
![]() |
7253f83ca3 | ||
![]() |
6171f27f8d | ||
![]() |
96b5684fa0 | ||
![]() |
4df409f77b | ||
![]() |
0f122884cc | ||
![]() |
f29c9fe22c | ||
![]() |
93230815f5 | ||
![]() |
632af91878 | ||
![]() |
81a0ee4b2d | ||
![]() |
967c655de0 | ||
![]() |
4bb19b9596 | ||
![]() |
d43b17519e | ||
![]() |
76a881df39 | ||
![]() |
f84ad3e1ea | ||
![]() |
9d11c29c3b | ||
![]() |
90b62a3e95 | ||
![]() |
4e4c559db6 | ||
![]() |
e7660bc8db | ||
![]() |
cfcc626de2 | ||
![]() |
b7a5602003 | ||
![]() |
b3a4d1795b | ||
![]() |
23de94785d | ||
![]() |
69b56f6658 | ||
![]() |
5ca6e6b5df | ||
![]() |
98c26dfff8 | ||
![]() |
a4e3136611 | ||
![]() |
ea8e6d88ab | ||
![]() |
202cb38c40 | ||
![]() |
d3c7ddd2f4 | ||
![]() |
bc19cd77ad | ||
![]() |
0005de6a98 | ||
![]() |
386d3cd997 | ||
![]() |
2d196b6779 | ||
![]() |
0cc055de3a | ||
![]() |
a96e5277db | ||
![]() |
7413634734 | ||
![]() |
1bfb176667 | ||
![]() |
4a90c7aef8 | ||
![]() |
b0992de59d | ||
![]() |
37e666817f | ||
![]() |
a607149b19 | ||
![]() |
3a11dba24f | ||
![]() |
c76a384b41 | ||
![]() |
dec69cc67b | ||
![]() |
0c21ae226b | ||
![]() |
835aad44bb | ||
![]() |
8a1f3a4c0b | ||
![]() |
8b646822fc | ||
![]() |
6d3e2b9386 | ||
![]() |
73cdf5ca81 | ||
![]() |
133936652d | ||
![]() |
66470b4937 | ||
![]() |
3f688a728b | ||
![]() |
0d306e9d41 | ||
![]() |
1e8132e610 | ||
![]() |
d672fccef4 | ||
![]() |
c194eddb1b | ||
![]() |
4ba4062519 | ||
![]() |
23753ec75a | ||
![]() |
d184f73160 | ||
![]() |
482081c41b | ||
![]() |
03b04acb16 | ||
![]() |
345a9d3525 | ||
![]() |
aee816ced9 | ||
![]() |
1e28081aa3 | ||
![]() |
ff0521e3aa | ||
![]() |
8cabc5953e | ||
![]() |
4a766a19cf | ||
![]() |
bd8052fedb | ||
![]() |
5fb4538315 | ||
![]() |
e78f16bcc4 | ||
![]() |
fe62f3508b | ||
![]() |
c11c22fc73 | ||
![]() |
056ab675cf | ||
![]() |
f00d543447 | ||
![]() |
72b616a990 | ||
![]() |
8ee4b180f9 | ||
![]() |
46e4b07a87 | ||
![]() |
3ec6101b16 | ||
![]() |
955b3e313b | ||
![]() |
3dc70f9878 | ||
![]() |
8e2be5e9a7 | ||
![]() |
46f3736f44 | ||
![]() |
dc12b189de | ||
![]() |
3f95bd53cd | ||
![]() |
23de45cea5 | ||
![]() |
ba6959b8c1 | ||
![]() |
91c9a6390c | ||
![]() |
a99478e2ea | ||
![]() |
12635da473 | ||
![]() |
36170c816a | ||
![]() |
50bad84747 | ||
![]() |
abd3efa318 | ||
![]() |
816493e01f | ||
![]() |
a0c9fd75d7 | ||
![]() |
94bf7101f8 | ||
![]() |
46424f63f2 | ||
![]() |
c33e93c662 | ||
![]() |
49b43eb3c8 | ||
![]() |
6b22b7a31f | ||
![]() |
b77167a4a1 | ||
![]() |
79a591d72d | ||
![]() |
8006e7a34d | ||
![]() |
abc45ded9b | ||
![]() |
ec05c07321 | ||
![]() |
27c056cbbf | ||
![]() |
b3779875d0 | ||
![]() |
748a451e23 | ||
![]() |
8b1999dc5b | ||
![]() |
a38e4b0b14 | ||
![]() |
129f652dc2 | ||
![]() |
5bf69476f6 | ||
![]() |
597c9761cb | ||
![]() |
b875cc9949 | ||
![]() |
e568c3888f | ||
![]() |
67875e2afa | ||
![]() |
dd17065129 | ||
![]() |
8d05ef3058 | ||
![]() |
66369b4b1d | ||
![]() |
9a33495694 | ||
![]() |
f0b2eaf70d | ||
![]() |
ef67f3eee6 | ||
![]() |
9cab659392 | ||
![]() |
dcd216daff | ||
![]() |
8f673d80d4 | ||
![]() |
3e81ebf8e9 | ||
![]() |
19d531922d | ||
![]() |
9109ae02a7 | ||
![]() |
8d3fe0c5c2 | ||
![]() |
f9185f201a | ||
![]() |
027380c013 | ||
![]() |
a73a787753 | ||
![]() |
bd9df789d1 | ||
![]() |
4fd4132f5e | ||
![]() |
68aa1312f5 | ||
![]() |
7974dbf477 | ||
![]() |
834fb3bebd | ||
![]() |
18fa317ee7 | ||
![]() |
414f1d1158 | ||
![]() |
c5e5a9b8ef | ||
![]() |
1ac1a968b9 | ||
![]() |
0d3a36e519 | ||
![]() |
ebce02c253 | ||
![]() |
78b400e8b0 | ||
![]() |
8d93f148be | ||
![]() |
4b8a2d2a6b | ||
![]() |
5fd549656b | ||
![]() |
a70dbb7e74 | ||
![]() |
a75f3fb87c | ||
![]() |
67e2768c3e | ||
![]() |
ece3ac967d | ||
![]() |
da71d8f4af | ||
![]() |
ac93af8eb5 | ||
![]() |
76cdbe74ba | ||
![]() |
ce4ea5071f | ||
![]() |
8a558eed36 | ||
![]() |
ce32cd576b | ||
![]() |
338793d891 | ||
![]() |
78ac41a613 | ||
![]() |
be23ccf23b | ||
![]() |
1ba5e433e5 | ||
![]() |
5bf4f569e4 | ||
![]() |
5a11844eff | ||
![]() |
14795b68f2 | ||
![]() |
bea42f5804 | ||
![]() |
fbbce302bc | ||
![]() |
4b9c605477 | ||
![]() |
a499ad6879 | ||
![]() |
76c5dc8999 | ||
![]() |
b985e14b13 | ||
![]() |
61de9cdbd4 | ||
![]() |
9208825975 | ||
![]() |
72a49f334a | ||
![]() |
b35ca3b739 | ||
![]() |
85950f17fa | ||
![]() |
78f95b5910 | ||
![]() |
909a09a0c0 | ||
![]() |
bb9fc56cc1 | ||
![]() |
9f3b4ccd14 | ||
![]() |
90bf976fe2 | ||
![]() |
388de9dc96 | ||
![]() |
8a0a46b1c9 | ||
![]() |
186163ec3f | ||
![]() |
91171c559a | ||
![]() |
36b483d04d | ||
![]() |
54e0a7f8a8 | ||
![]() |
6d4e96dea2 | ||
![]() |
a6958da091 | ||
![]() |
502bde5567 | ||
![]() |
d5702f9d51 | ||
![]() |
5141afe476 | ||
![]() |
4422219be7 | ||
![]() |
4b2afec108 | ||
![]() |
07bb8067ae | ||
![]() |
4f63eb0c7e | ||
![]() |
4ea7b2dd63 | ||
![]() |
e8189f7c69 | ||
![]() |
23c054caec | ||
![]() |
a084c8b344 | ||
![]() |
361069314f | ||
![]() |
d252514a39 | ||
![]() |
31d1edc0fb | ||
![]() |
987474726c | ||
![]() |
4beea63d3f | ||
![]() |
53f3b779bf | ||
![]() |
f59f424795 | ||
![]() |
c63ba5470a | ||
![]() |
935d6473ed | ||
![]() |
0faa4470fb | ||
![]() |
0281bdd90c | ||
![]() |
608ff73907 | ||
![]() |
c82ce9233b | ||
![]() |
cc75620976 | ||
![]() |
1cd8bfaded | ||
![]() |
65d9c304df | ||
![]() |
4b48ba4e8c | ||
![]() |
bf7bacceab | ||
![]() |
a56f461895 | ||
![]() |
e21ff916b0 | ||
![]() |
da20675ada | ||
![]() |
7364fb84ef | ||
![]() |
48f46333f8 | ||
![]() |
8407702b38 | ||
![]() |
e1a8b158e0 | ||
![]() |
7e30910ab8 | ||
![]() |
7fbee704ec | ||
![]() |
b1f94c7bc6 | ||
![]() |
90411967d6 | ||
![]() |
5719c623a4 | ||
![]() |
e210ec782a | ||
![]() |
229780f6ff | ||
![]() |
6490a9829b | ||
![]() |
6384d0708d | ||
![]() |
db1fde2956 | ||
![]() |
c86720a331 | ||
![]() |
2af158be26 | ||
![]() |
7115bd46ff | ||
![]() |
f84483896e | ||
![]() |
fe7bc174fb | ||
![]() |
e967d9ded3 | ||
![]() |
c3b55b6849 | ||
![]() |
3e193c9864 | ||
![]() |
d64e25e449 | ||
![]() |
c4707c612d | ||
![]() |
9d3448c880 | ||
![]() |
dad6a77645 | ||
![]() |
f64d3942d7 | ||
![]() |
45fe754759 | ||
![]() |
98f1d93628 | ||
![]() |
8785e1c3a4 | ||
![]() |
f00ceedae4 | ||
![]() |
7387e010c2 | ||
![]() |
a59dfff12f | ||
![]() |
f6128dd3ff | ||
![]() |
eeff88ece2 | ||
![]() |
bae1282f74 | ||
![]() |
d2007add75 | ||
![]() |
802db92d98 | ||
![]() |
a53e1e4ec3 | ||
![]() |
fd1ef4a62d | ||
![]() |
8ab9068d8e | ||
![]() |
47dd30d3b2 | ||
![]() |
fcdd042b02 | ||
![]() |
04855f9201 | ||
![]() |
cf0a5d5735 | ||
![]() |
bb2db1cf76 | ||
![]() |
0e69091455 | ||
![]() |
3cb5ed167a | ||
![]() |
1ffee15b83 | ||
![]() |
75b9f31acf | ||
![]() |
fc56b12690 | ||
![]() |
60e768436e | ||
![]() |
84f2192cde | ||
![]() |
97f2675d40 | ||
![]() |
6d881d4570 | ||
![]() |
42cc93dd0f | ||
![]() |
e9f34a0f09 | ||
![]() |
b9cb6d1c10 | ||
![]() |
7bf517e990 | ||
![]() |
ab54e147f2 | ||
![]() |
e677540fd6 | ||
![]() |
31e3aaeda0 | ||
![]() |
938fc317c9 | ||
![]() |
4c431c5432 | ||
![]() |
881b914c6a | ||
![]() |
df67836c1a | ||
![]() |
6a3a8ba4d0 | ||
![]() |
9e535c341e | ||
![]() |
17fa4ba804 | ||
![]() |
dd9a3c91fc | ||
![]() |
7015df37e3 | ||
![]() |
7ebdd4739a | ||
![]() |
c4bcb31a00 | ||
![]() |
0a18ee24ac | ||
![]() |
37d10b108e | ||
![]() |
b5cadeca2e | ||
![]() |
c8e93054bc | ||
![]() |
def32107af | ||
![]() |
1b84ae9f3f | ||
![]() |
73ce1f61a8 | ||
![]() |
8661cd1ee7 | ||
![]() |
53f55defda | ||
![]() |
d60dc60bc9 | ||
![]() |
bf1d7e6252 | ||
![]() |
c96b2767b9 | ||
![]() |
6c1f03eefd | ||
![]() |
cced83024b | ||
![]() |
1cd6ba3c1d | ||
![]() |
2365761ba5 | ||
![]() |
d3b4b70bfc | ||
![]() |
f95d5701a2 | ||
![]() |
a8c56afd0f | ||
![]() |
4de30aa47e | ||
![]() |
f05f7c920e | ||
![]() |
5f86509abc | ||
![]() |
1561391293 | ||
![]() |
60553a8a5e | ||
![]() |
e656074de4 | ||
![]() |
b81ff340b1 | ||
![]() |
77456ae0bc | ||
![]() |
9fd0e90850 | ||
![]() |
ab01cf1881 | ||
![]() |
0d10ca02db | ||
![]() |
0627df8116 | ||
![]() |
c88ea7150c | ||
![]() |
555954c71e | ||
![]() |
f231f02329 | ||
![]() |
b8af5dfde0 | ||
![]() |
ef3710fdc2 | ||
![]() |
bde114ad13 | ||
![]() |
9d138aa282 | ||
![]() |
42c4ea38cc | ||
![]() |
c0ba71c368 | ||
![]() |
7b2cb30a9d | ||
![]() |
0f55e65701 | ||
![]() |
aeb24b96eb | ||
![]() |
ad4700b3b1 | ||
![]() |
b2e5ade5ac | ||
![]() |
90a7b9b551 | ||
![]() |
31b6ab9b23 | ||
![]() |
4149c7782f | ||
![]() |
227f52d758 | ||
![]() |
baa2a871f1 | ||
![]() |
5bb619fe7b | ||
![]() |
fff3c552e2 | ||
![]() |
e19cc8bebf | ||
![]() |
f4f8debb92 | ||
![]() |
ea6b8b599f | ||
![]() |
c30f02ae4c | ||
![]() |
09450ba544 | ||
![]() |
df53968306 | ||
![]() |
19f753c15c | ||
![]() |
df530bb66d | ||
![]() |
fa49427df0 | ||
![]() |
6678d97cc4 | ||
![]() |
e3642a8d10 | ||
![]() |
f9022fdf16 | ||
![]() |
1c764139bf | ||
![]() |
048ed26f41 | ||
![]() |
c52e30e8e0 | ||
![]() |
0cb04ded36 | ||
![]() |
6cfad65ac7 | ||
![]() |
ed20805b10 | ||
![]() |
576303cd72 | ||
![]() |
0062e084f8 | ||
![]() |
b90d76dcfe | ||
![]() |
c95619b2bf | ||
![]() |
82150bd5b8 | ||
![]() |
9e03335ff8 | ||
![]() |
b3c5c3f0ea | ||
![]() |
65858dab3e | ||
![]() |
c968633d15 | ||
![]() |
39a8942daf | ||
![]() |
7705a7928e | ||
![]() |
d2c14b844e | ||
![]() |
3e45e6c165 | ||
![]() |
fe8334931f | ||
![]() |
f565c5f730 | ||
![]() |
c03e2febb0 | ||
![]() |
c2f4fb7ba7 | ||
![]() |
5f869e5d87 | ||
![]() |
65f1afc4e0 | ||
![]() |
aec2762bf1 | ||
![]() |
a41144a00f | ||
![]() |
aa28e8a7a6 | ||
![]() |
a1a51ce518 | ||
![]() |
90999e0ef9 | ||
![]() |
2ceeb17056 | ||
![]() |
18afdd6040 | ||
![]() |
b9972ec6bd | ||
![]() |
ebb53e87f3 | ||
![]() |
9f9d7325fd | ||
![]() |
742a005523 | ||
![]() |
3a28c06534 | ||
![]() |
46d5711071 | ||
![]() |
48113f3afd | ||
![]() |
be29972ddf | ||
![]() |
49b3a83f76 | ||
![]() |
342794c728 | ||
![]() |
3739638c81 | ||
![]() |
401351d9c8 | ||
![]() |
6073a03967 | ||
![]() |
3e3d294188 | ||
![]() |
f6f96ae5bf | ||
![]() |
62ccb53c24 | ||
![]() |
e410e22980 | ||
![]() |
fc5ceea335 | ||
![]() |
38af8d4737 | ||
![]() |
33b0cab596 | ||
![]() |
2a47e4a1e1 | ||
![]() |
46f53868c5 | ||
![]() |
eac7f11aa7 | ||
![]() |
e219188f46 | ||
![]() |
3df8c701a7 | ||
![]() |
1186813c75 | ||
![]() |
645b6fdc8a | ||
![]() |
ae0596a729 | ||
![]() |
bb5fd3c1f2 | ||
![]() |
532fa9c5f9 | ||
![]() |
80a4aa6fa6 | ||
![]() |
4f218f544f | ||
![]() |
f261f8d7d1 | ||
![]() |
e044d11782 | ||
![]() |
d2da459dd8 | ||
![]() |
b1e6a33d6b | ||
![]() |
0d276d0d61 | ||
![]() |
998936651a | ||
![]() |
1bec25e8e6 | ||
![]() |
f220e4183f | ||
![]() |
e965b57dc2 |
13
.babelrc
13
.babelrc
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
"plugins": [
|
|
||||||
[
|
|
||||||
"@babel/plugin-transform-runtime",
|
|
||||||
{
|
|
||||||
"corejs": {
|
|
||||||
"version": 3,
|
|
||||||
"proposals": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
]
|
|
||||||
}
|
|
@@ -1,49 +0,0 @@
|
|||||||
version: 2.1
|
|
||||||
|
|
||||||
executors:
|
|
||||||
docker:
|
|
||||||
working_directory: /tmp/workspace
|
|
||||||
docker:
|
|
||||||
- image: docker:latest
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
docker:
|
|
||||||
parameters:
|
|
||||||
with_deploy:
|
|
||||||
type: boolean
|
|
||||||
default: false
|
|
||||||
executor: docker
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
- setup_remote_docker:
|
|
||||||
version: 19.03.13
|
|
||||||
- run:
|
|
||||||
name: Build
|
|
||||||
command: |
|
|
||||||
docker build -t misskey/misskey .
|
|
||||||
- when:
|
|
||||||
condition: <<parameters.with_deploy>>
|
|
||||||
steps:
|
|
||||||
- run:
|
|
||||||
name: Deploy
|
|
||||||
command: |
|
|
||||||
if [ "$DOCKERHUB_USERNAME$DOCKERHUB_PASSWORD" ]
|
|
||||||
then
|
|
||||||
apk update && apk add jq
|
|
||||||
docker tag misskey/misskey misskey/misskey:$(cat package.json | jq -r .version)
|
|
||||||
docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASSWORD
|
|
||||||
docker push -a misskey/misskey
|
|
||||||
else
|
|
||||||
echo -e '\033[0;33mAborted deploying to Docker Hub\033[0;39m'
|
|
||||||
fi
|
|
||||||
|
|
||||||
workflows:
|
|
||||||
version: 2
|
|
||||||
docker:
|
|
||||||
jobs:
|
|
||||||
- docker:
|
|
||||||
name: auto-build
|
|
||||||
with_deploy: true
|
|
||||||
filters:
|
|
||||||
branches:
|
|
||||||
only: master
|
|
@@ -1,12 +0,0 @@
|
|||||||
url: 'http://misskey.local'
|
|
||||||
port: 8080
|
|
||||||
db:
|
|
||||||
host: localhost
|
|
||||||
port: 5432
|
|
||||||
db: test-misskey
|
|
||||||
user: postgres
|
|
||||||
pass: ''
|
|
||||||
redis:
|
|
||||||
host: localhost
|
|
||||||
port: 6379
|
|
||||||
id: aid
|
|
@@ -1,12 +0,0 @@
|
|||||||
url: 'http://misskey.local'
|
|
||||||
port: 8080
|
|
||||||
db:
|
|
||||||
host: localhost
|
|
||||||
port: 5432
|
|
||||||
db: test-misskey
|
|
||||||
user: postgres
|
|
||||||
pass: ''
|
|
||||||
redis:
|
|
||||||
host: localhost
|
|
||||||
port: 6379
|
|
||||||
id: aid
|
|
@@ -157,3 +157,10 @@ id: 'aid'
|
|||||||
|
|
||||||
# Sign to ActivityPub GET request (default: false)
|
# Sign to ActivityPub GET request (default: false)
|
||||||
#signToActivityPubGet: true
|
#signToActivityPubGet: true
|
||||||
|
|
||||||
|
#allowedPrivateNetworks: [
|
||||||
|
# '127.0.0.1/32'
|
||||||
|
#]
|
||||||
|
|
||||||
|
# Upload or download file size limits (bytes)
|
||||||
|
#maxFileSize: 262144000
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
.autogen
|
.autogen
|
||||||
.git
|
|
||||||
.github
|
.github
|
||||||
.travis
|
.travis
|
||||||
.vscode
|
.vscode
|
||||||
|
.config
|
||||||
Dockerfile
|
Dockerfile
|
||||||
build/
|
build/
|
||||||
built/
|
built/
|
||||||
@@ -12,3 +12,4 @@ elasticsearch/
|
|||||||
node_modules/
|
node_modules/
|
||||||
redis/
|
redis/
|
||||||
files/
|
files/
|
||||||
|
misskey-assets/
|
||||||
|
13
.eslintrc
13
.eslintrc
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
"parserOptions": {
|
|
||||||
"parser": "@typescript-eslint/parser"
|
|
||||||
},
|
|
||||||
"extends": [
|
|
||||||
"eslint:recommended"
|
|
||||||
],
|
|
||||||
"rules": {
|
|
||||||
"no-console": 0,
|
|
||||||
"no-unused-vars": 0,
|
|
||||||
"no-empty": 0
|
|
||||||
}
|
|
||||||
}
|
|
38
.github/CODEOWNERS
vendored
38
.github/CODEOWNERS
vendored
@@ -1,38 +0,0 @@
|
|||||||
# PATH OWNERS
|
|
||||||
/.autogen/ @acid-chicken
|
|
||||||
/.circleci/ @syuilo @acid-chicken
|
|
||||||
/.config/ @syuilo @AyaMorisawa @mei23 @acid-chicken @rinsuki
|
|
||||||
# /.config/mongo_initdb_example.js @khws4v1
|
|
||||||
/.github/ @syuilo @AyaMorisawa @acid-chicken
|
|
||||||
/.vscode/ @acid-chicken
|
|
||||||
/assets/ @syuilo # @tamaina
|
|
||||||
/docs/ @syuilo
|
|
||||||
/docs/*.en.md @AyaMorisawa # @skid9000
|
|
||||||
# /docs/*.fr.md @BoFFire
|
|
||||||
# /docs/docker.*.md @khws4v1
|
|
||||||
/locales/ @syuilo
|
|
||||||
/src/ @syuilo @AyaMorisawa @mei23 @acid-chicken @rinsuki
|
|
||||||
# /src/crypto_key.cc @akihikodaki
|
|
||||||
# /src/crypto_key.d.ts @akihikodaki
|
|
||||||
/.dockerignore @syuilo # @khws4v1
|
|
||||||
/.editorconfig @syuilo @AyaMorisawa
|
|
||||||
/.eslintrc @syuilo
|
|
||||||
/.gitattributes @syuilo
|
|
||||||
/.gitignore @syuilo
|
|
||||||
/.npmrc @syuilo
|
|
||||||
/.vsls.json @AyaMorisawa
|
|
||||||
/CHANGELOG.md @syuilo
|
|
||||||
/CODE_OF_CONDUCT.md @syuilo
|
|
||||||
/CONTRIBUTING.md @syuilo
|
|
||||||
/Dockerfile @syuilo @AyaMorisawa @acid-chicken # @khws4v1
|
|
||||||
/LICENSE @syuilo
|
|
||||||
/README.md @syuilo @AyaMorisawa @acid-chicken # @nikhiljha
|
|
||||||
# /binding.gyp @akihikodaki
|
|
||||||
/crowdin.yml @syuilo
|
|
||||||
# /docker-compose.yml @khws4v1
|
|
||||||
/gulpfile.ts @syuilo @AyaMorisawa
|
|
||||||
/jsconfig.json @syuilo @AyaMorisawa
|
|
||||||
/package.json @syuilo @AyaMorisawa
|
|
||||||
/tsconfig.json @syuilo @AyaMorisawa
|
|
||||||
/tslint.json @syuilo @AyaMorisawa
|
|
||||||
/webpack.config.ts @syuilo @AyaMorisawa
|
|
7
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
7
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
contact_links:
|
||||||
|
- name: 👪 Misskey Forum
|
||||||
|
url: https://forum.misskey.io/
|
||||||
|
about: Ask questions and share knowledge
|
||||||
|
- name: 💬 Misskey official Discord
|
||||||
|
url: https://discord.gg/Wp8gVStHW3
|
||||||
|
about: Chat freely about Misskey
|
31
.github/PULL_REQUEST_TEMPLATE.md
vendored
31
.github/PULL_REQUEST_TEMPLATE.md
vendored
@@ -1,13 +1,20 @@
|
|||||||
## Summary
|
<!-- ℹ お読みください
|
||||||
|
PRありがとうございます! PRを作成する前に、コントリビューションガイドをご確認ください:
|
||||||
|
https://github.com/misskey-dev/misskey/blob/develop/CONTRIBUTING.md
|
||||||
|
-->
|
||||||
|
<!-- ℹ README
|
||||||
|
Thank you for your PR! Before creating a PR, please check the contribution guide:
|
||||||
|
https://github.com/misskey-dev/misskey/blob/develop/docs/CONTRIBUTING.en.md
|
||||||
|
-->
|
||||||
|
|
||||||
<!--
|
# What
|
||||||
-
|
<!-- このPRで何をしたのか? どう変わるのか? -->
|
||||||
- * Please describe your changes here *
|
<!-- What did you do with this PR? How will it change things? -->
|
||||||
-
|
|
||||||
- If you are going to resolve some issue, please add this context.
|
# Why
|
||||||
- Resolve #ISSUE_NUMBER
|
<!-- なぜそうするのか? どういう意図なのか? 何が困っているのか? -->
|
||||||
-
|
<!-- Why do you do it? What are your intentions? What is the problem? -->
|
||||||
- If you are going to fix some bug issue, please add this context.
|
|
||||||
- Fix #ISSUE_NUMBER
|
# Additional info (optional)
|
||||||
-
|
<!-- テスト観点など -->
|
||||||
-->
|
<!-- Test perspective, etc -->
|
||||||
|
11
.github/dependabot.yml
vendored
Normal file
11
.github/dependabot.yml
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# To get started with Dependabot version updates, you'll need to specify which
|
||||||
|
# package ecosystems to update and where the package manifests are located.
|
||||||
|
# Please see the documentation for all configuration options:
|
||||||
|
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
||||||
|
|
||||||
|
version: 2
|
||||||
|
updates:
|
||||||
|
- package-ecosystem: "npm" # See documentation for possible values
|
||||||
|
directory: "/" # Location of package manifests
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
15
.github/misskey/test.yml
vendored
Normal file
15
.github/misskey/test.yml
vendored
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
url: 'http://misskey.local'
|
||||||
|
|
||||||
|
# ローカルでテストするときにポートを被らないようにするためデフォルトのものとは変える(以下同じ)
|
||||||
|
port: 61812
|
||||||
|
|
||||||
|
db:
|
||||||
|
host: localhost
|
||||||
|
port: 54312
|
||||||
|
db: test-misskey
|
||||||
|
user: postgres
|
||||||
|
pass: ''
|
||||||
|
redis:
|
||||||
|
host: localhost
|
||||||
|
port: 56312
|
||||||
|
id: aid
|
33
.github/workflows/docker-develop.yml
vendored
Normal file
33
.github/workflows/docker-develop.yml
vendored
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
name: Publish Docker image (develop)
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- develop
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
push_to_registry:
|
||||||
|
name: Push Docker image to Docker Hub
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Check out the repo
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
- name: Docker meta
|
||||||
|
id: meta
|
||||||
|
uses: docker/metadata-action@v3
|
||||||
|
with:
|
||||||
|
images: misskey/misskey
|
||||||
|
- name: Log in to Docker Hub
|
||||||
|
uses: docker/login-action@v1
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKER_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||||
|
- name: Build and Push to Docker Hub
|
||||||
|
uses: docker/build-push-action@v2
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
push: true
|
||||||
|
tags: misskey/misskey:develop
|
||||||
|
labels: develop
|
32
.github/workflows/docker.yml
vendored
Normal file
32
.github/workflows/docker.yml
vendored
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
name: Publish Docker image
|
||||||
|
|
||||||
|
on:
|
||||||
|
release:
|
||||||
|
types: [published]
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
push_to_registry:
|
||||||
|
name: Push Docker image to Docker Hub
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Check out the repo
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
- name: Docker meta
|
||||||
|
id: meta
|
||||||
|
uses: docker/metadata-action@v3
|
||||||
|
with:
|
||||||
|
images: misskey/misskey
|
||||||
|
- name: Log in to Docker Hub
|
||||||
|
uses: docker/login-action@v1
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKER_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||||
|
- name: Build and Push to Docker Hub
|
||||||
|
uses: docker/build-push-action@v2
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
push: true
|
||||||
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
|
labels: ${{ steps.meta.outputs.labels }}
|
21
.github/workflows/lint.yml
vendored
Normal file
21
.github/workflows/lint.yml
vendored
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
name: Lint
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- develop
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
lint:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
submodules: true
|
||||||
|
- uses: actions/setup-node@v1
|
||||||
|
with:
|
||||||
|
node-version: 12.x
|
||||||
|
- run: yarn install
|
||||||
|
- run: yarn lint
|
53
.github/workflows/nodejs.yml
vendored
53
.github/workflows/nodejs.yml
vendored
@@ -1,53 +0,0 @@
|
|||||||
name: Node.js CI
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
- develop
|
|
||||||
pull_request:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build_and_test:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
node-version: [14.x, 16.x]
|
|
||||||
|
|
||||||
services:
|
|
||||||
postgres:
|
|
||||||
image: postgres:10-alpine
|
|
||||||
ports:
|
|
||||||
- 5432:5432
|
|
||||||
env:
|
|
||||||
POSTGRES_DB: test-misskey
|
|
||||||
POSTGRES_HOST_AUTH_METHOD: trust
|
|
||||||
redis:
|
|
||||||
image: redis:alpine
|
|
||||||
ports:
|
|
||||||
- 6379:6379
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
- name: Use Node.js ${{ matrix.node-version }}
|
|
||||||
uses: actions/setup-node@v1
|
|
||||||
with:
|
|
||||||
node-version: ${{ matrix.node-version }}
|
|
||||||
- name: Install dependencies
|
|
||||||
run: yarn install
|
|
||||||
- name: Copy Configure
|
|
||||||
run: cp .circleci/misskey/*.yml .config
|
|
||||||
- name: Build
|
|
||||||
run: yarn build
|
|
||||||
- name: Test
|
|
||||||
run: yarn test
|
|
||||||
|
|
||||||
lint:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
- uses: actions/setup-node@v1
|
|
||||||
with:
|
|
||||||
node-version: 12.x
|
|
||||||
- run: yarn install
|
|
||||||
- run: yarn lint
|
|
87
.github/workflows/test.yml
vendored
Normal file
87
.github/workflows/test.yml
vendored
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
name: Test
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- develop
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
mocha:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
node-version: [16.x]
|
||||||
|
|
||||||
|
services:
|
||||||
|
postgres:
|
||||||
|
image: postgres:12.2-alpine
|
||||||
|
ports:
|
||||||
|
- 54312:5432
|
||||||
|
env:
|
||||||
|
POSTGRES_DB: test-misskey
|
||||||
|
POSTGRES_HOST_AUTH_METHOD: trust
|
||||||
|
redis:
|
||||||
|
image: redis:4.0-alpine
|
||||||
|
ports:
|
||||||
|
- 56312:6379
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
submodules: true
|
||||||
|
- name: Use Node.js ${{ matrix.node-version }}
|
||||||
|
uses: actions/setup-node@v1
|
||||||
|
with:
|
||||||
|
node-version: ${{ matrix.node-version }}
|
||||||
|
- name: Install dependencies
|
||||||
|
run: yarn install
|
||||||
|
- name: Check yarn.lock
|
||||||
|
run: git diff --exit-code yarn.lock
|
||||||
|
- name: Copy Configure
|
||||||
|
run: cp .github/misskey/test.yml .config
|
||||||
|
- name: Build
|
||||||
|
run: yarn build
|
||||||
|
- name: Test
|
||||||
|
run: yarn mocha
|
||||||
|
|
||||||
|
e2e:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
node-version: [16.x]
|
||||||
|
|
||||||
|
services:
|
||||||
|
postgres:
|
||||||
|
image: postgres:12.2-alpine
|
||||||
|
ports:
|
||||||
|
- 54312:5432
|
||||||
|
env:
|
||||||
|
POSTGRES_DB: test-misskey
|
||||||
|
POSTGRES_HOST_AUTH_METHOD: trust
|
||||||
|
redis:
|
||||||
|
image: redis:4.0-alpine
|
||||||
|
ports:
|
||||||
|
- 56312:6379
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
submodules: true
|
||||||
|
- name: Use Node.js ${{ matrix.node-version }}
|
||||||
|
uses: actions/setup-node@v1
|
||||||
|
with:
|
||||||
|
node-version: ${{ matrix.node-version }}
|
||||||
|
- name: Install dependencies
|
||||||
|
run: yarn install
|
||||||
|
- name: Check yarn.lock
|
||||||
|
run: git diff --exit-code yarn.lock
|
||||||
|
- name: Copy Configure
|
||||||
|
run: cp .github/misskey/test.yml .config
|
||||||
|
- name: Build
|
||||||
|
run: yarn build
|
||||||
|
- name: Test
|
||||||
|
run: yarn e2e
|
8
.gitignore
vendored
8
.gitignore
vendored
@@ -6,9 +6,13 @@
|
|||||||
/.idea
|
/.idea
|
||||||
|
|
||||||
# Node.js
|
# Node.js
|
||||||
/node_modules
|
node_modules
|
||||||
report.*.json
|
report.*.json
|
||||||
|
|
||||||
|
# Cypress
|
||||||
|
cypress/screenshots
|
||||||
|
cypress/videos
|
||||||
|
|
||||||
# config
|
# config
|
||||||
/.config/*
|
/.config/*
|
||||||
!/.config/example.yml
|
!/.config/example.yml
|
||||||
@@ -16,7 +20,7 @@ report.*.json
|
|||||||
|
|
||||||
# misskey
|
# misskey
|
||||||
/build
|
/build
|
||||||
/built
|
built
|
||||||
/data
|
/data
|
||||||
/.cache-loader
|
/.cache-loader
|
||||||
/db
|
/db
|
||||||
|
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
[submodule "misskey-assets"]
|
||||||
|
path = misskey-assets
|
||||||
|
url = https://github.com/misskey-dev/assets.git
|
@@ -1,5 +0,0 @@
|
|||||||
{
|
|
||||||
"ignoredFiles": [
|
|
||||||
"test/resources/*"
|
|
||||||
]
|
|
||||||
}
|
|
@@ -1 +1 @@
|
|||||||
v16.2.0
|
v16.6.2
|
||||||
|
4
.vscode/extensions.json
vendored
4
.vscode/extensions.json
vendored
@@ -1,12 +1,10 @@
|
|||||||
{
|
{
|
||||||
"recommendations": [
|
"recommendations": [
|
||||||
"ducksoupdev.vue2",
|
|
||||||
"editorconfig.editorconfig",
|
"editorconfig.editorconfig",
|
||||||
"eg2.vscode-npm-script",
|
"eg2.vscode-npm-script",
|
||||||
"hollowtree.vue-snippets",
|
|
||||||
"ms-vscode.typescript-javascript-grammar",
|
"ms-vscode.typescript-javascript-grammar",
|
||||||
"ms-vscode.vscode-typescript-tslint-plugin",
|
"ms-vscode.vscode-typescript-tslint-plugin",
|
||||||
"octref.vetur",
|
"johnsoncodehk.volar",
|
||||||
"sysoev.language-stylus"
|
"sysoev.language-stylus"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
266
CHANGELOG.md
266
CHANGELOG.md
@@ -1 +1,265 @@
|
|||||||
see [releases](https://github.com/misskey-dev/misskey/releases)
|
<!--
|
||||||
|
## 12.x.x (unreleased)
|
||||||
|
|
||||||
|
### Improvements
|
||||||
|
|
||||||
|
### Bugfixes
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
## 12.96.1 (2021/11/13)
|
||||||
|
### Improvements
|
||||||
|
- npm scriptの互換性を向上
|
||||||
|
|
||||||
|
## 12.96.0 (2021/11/13)
|
||||||
|
|
||||||
|
### Improvements
|
||||||
|
- フォロー/フォロワーを非公開にできるように
|
||||||
|
- インスタンスプロフィールレンダリング ready
|
||||||
|
- 通知のリアクションアイコンをホバーで拡大できるように
|
||||||
|
- RenoteボタンをホバーでRenoteしたユーザー一覧を表示するように
|
||||||
|
- 返信の際にメンションを含めるように
|
||||||
|
- 通報があったときに管理者へEメールで通知されるように
|
||||||
|
- メールアドレスのバリデーションを強化
|
||||||
|
|
||||||
|
### Bugfixes
|
||||||
|
- アカウント削除処理があると高負荷になる問題を修正
|
||||||
|
- クライアント: 長いメニューが画面からはみ出す問題を修正
|
||||||
|
- クライアント: コントロールパネルのジョブキューに個々のジョブが表示されないのを修正
|
||||||
|
- クライアント: fix missing i18n string
|
||||||
|
- fix html conversion issue with code blocks
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
- ノートにモバイルからの投稿か否かの情報を含めないように
|
||||||
|
|
||||||
|
## 12.95.0 (2021/10/31)
|
||||||
|
|
||||||
|
### Improvements
|
||||||
|
- スレッドミュート機能
|
||||||
|
|
||||||
|
### Bugfixes
|
||||||
|
- リレー向けのActivityが一部実装で除外されてしまうことがあるのを修正
|
||||||
|
- 削除したノートやユーザーがリモートから参照されると復活することがあるのを修正
|
||||||
|
- クライアント: ページ編集時のドロップダウンメニューなどが動作しない問題を修正
|
||||||
|
- クライアント: コントロールパネルのカスタム絵文字タブが切り替わらないように見える問題を修正
|
||||||
|
- API: ユーザー情報の hasUnreadChannel が常に false になっている問題を修正
|
||||||
|
|
||||||
|
## 12.94.1 (2021/10/25)
|
||||||
|
|
||||||
|
### Improvements
|
||||||
|
|
||||||
|
### Bugfixes
|
||||||
|
- クライアント: ユーザーページのナビゲーションが失敗する問題を修正
|
||||||
|
|
||||||
|
## 12.94.0 (2021/10/25)
|
||||||
|
|
||||||
|
### Improvements
|
||||||
|
- クライアント: 画像ビューアを強化
|
||||||
|
- クライアント: メンションにユーザーのアバターを表示するように
|
||||||
|
- クライアント: デザインの調整
|
||||||
|
- クライアント: twemojiをセルフホスティングするように
|
||||||
|
|
||||||
|
### Bugfixes
|
||||||
|
- クライアント: CWで画像が隠されたとき、画像の高さがおかしいことになる問題を修正
|
||||||
|
|
||||||
|
### NOTE
|
||||||
|
- このバージョンから、iOS 15未満のサポートがされなくなります。対象のバージョンをお使いの方は、iOSのバージョンアップを行ってください。
|
||||||
|
|
||||||
|
## 12.93.2 (2021/10/23)
|
||||||
|
|
||||||
|
### Bugfixes
|
||||||
|
- クライアント: ウィジェットを追加できない問題を修正
|
||||||
|
|
||||||
|
## 12.93.1 (2021/10/23)
|
||||||
|
|
||||||
|
### Bugfixes
|
||||||
|
- クライアント: 通知上でローカルのリアクションが表示されないのを修正
|
||||||
|
|
||||||
|
## 12.93.0 (2021/10/23)
|
||||||
|
|
||||||
|
### Improvements
|
||||||
|
- クライアント: コントロールパネルのパフォーマンスを改善
|
||||||
|
- クライアント: 自分のリアクション一覧を見れるように
|
||||||
|
- 設定により、リアクション一覧を全員に公開することも可能
|
||||||
|
- クライアント: ユーザー検索の精度を強化
|
||||||
|
- クライアント: 新しいライトテーマを追加
|
||||||
|
- クライアント: 新しいダークテーマを追加
|
||||||
|
- API: ユーザーのリアクション一覧を取得する users/reactions を追加
|
||||||
|
- API: users/search および users/search-by-username-and-host を強化
|
||||||
|
- ミュート及びブロックのインポートを行えるように
|
||||||
|
- クライアント: /share のクエリでリプライやファイル等の情報を渡せるように
|
||||||
|
- チャートのsyncを毎日0時に自動で行うように
|
||||||
|
|
||||||
|
### Bugfixes
|
||||||
|
- クライアント: テーマの管理が行えない問題を修正
|
||||||
|
- API: アプリケーション通知が取得できない問題を修正
|
||||||
|
- クライアント: リモートノートで意図せずローカルカスタム絵文字が使われてしまうことがあるのを修正
|
||||||
|
- ActivityPub: not reacted な Undo.Like がinboxに滞留するのを修正
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
- 連合の考慮に問題があることなどが分かったため、モデレーターをブロックできない仕様を廃止しました
|
||||||
|
- データベースにログを保存しないようになりました
|
||||||
|
- ログを永続化したい場合はsyslogを利用してください
|
||||||
|
|
||||||
|
## 12.92.0 (2021/10/16)
|
||||||
|
|
||||||
|
### Improvements
|
||||||
|
- アカウント登録にメールアドレスの設定を必須にするオプション
|
||||||
|
- クライアント: 全体的なUIのブラッシュアップ
|
||||||
|
- クライアント: MFM関数構文のサジェストを実装
|
||||||
|
- クライアント: ノート本文を投稿フォーム内でプレビューできるように
|
||||||
|
- クライアント: 未読の通知のみ表示する機能
|
||||||
|
- クライアント: 通知ページで通知の種類によるフィルタ
|
||||||
|
- クライアント: アニメーションを減らす設定の適用範囲を拡充
|
||||||
|
- クライアント: 新しいダークテーマを追加
|
||||||
|
- クライアント: テーマコンパイラに hue と saturate 関数を追加
|
||||||
|
- ActivityPub: HTML -> MFMの変換を強化
|
||||||
|
- API: グループから抜ける users/groups/leave エンドポイントを実装
|
||||||
|
- API: i/notifications に unreadOnly オプションを追加
|
||||||
|
- API: ap系のエンドポイントをログイン必須化+レートリミット追加
|
||||||
|
- MFM: Add tag syntaxes of bold <b></b> and strikethrough <s></s>
|
||||||
|
|
||||||
|
### Bugfixes
|
||||||
|
- Fix createDeleteAccountJob
|
||||||
|
- admin inbox queue does not show individual jobs
|
||||||
|
- クライアント: ヘッダーのタブが折り返される問題を修正
|
||||||
|
- クライアント: ヘッダーにタブが表示されている状態でタイトルをクリックしたときにタブ選択が表示されるのを修正
|
||||||
|
- クライアント: ユーザーページのタブが機能していない問題を修正
|
||||||
|
- クライアント: ピン留めユーザーの設定項目がない問題を修正
|
||||||
|
- クライアント: Deck UIにおいて、重ねたカラムの片方を畳んだ状態で右に出すと表示が壊れる問題を修正
|
||||||
|
- API: 管理者およびモデレーターをブロックできてしまう問題を修正
|
||||||
|
- MFM: Mentions in the link label are parsed as text
|
||||||
|
- MFM: Add a property to the URL node indicating whether it was enclosed in <>
|
||||||
|
- MFM: Disallows < and > in hashtags
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
- 保守性やユーザビリティの観点から、Misskeyのコマンドラインオプションが削除されました。
|
||||||
|
- 必要であれば、代わりに環境変数で設定することができます
|
||||||
|
- MFM: パフォーマンス、保守性、構文誤認識抑制の観点から、旧関数構文のサポートが削除されました。
|
||||||
|
- 旧構文(`[foo bar]`)を使用せず、現行の構文(`$[foo bar]`)を使用してください。
|
||||||
|
|
||||||
|
## 12.91.0 (2021/09/22)
|
||||||
|
|
||||||
|
### Improvements
|
||||||
|
- ActivityPub: リモートユーザーのDeleteアクティビティに対応
|
||||||
|
- ActivityPub: add resolver check for blocked instance
|
||||||
|
- ActivityPub: deliverキューのメモリ使用量を削減
|
||||||
|
- API: 管理者用アカウント削除APIを実装(/admin/accounts/delete)
|
||||||
|
- リモートユーザーの削除も可能に
|
||||||
|
- アカウントが凍結された場合に、凍結された旨を表示してからログアウトするように
|
||||||
|
- 凍結されたアカウントにログインしようとしたときに、凍結されている旨を表示するように
|
||||||
|
- リスト、アンテナタイムラインを個別ページとして分割
|
||||||
|
- UIの改善
|
||||||
|
- MFMにsparklesエフェクトを追加
|
||||||
|
- 非ログイン自は更新ダイアログを出さないように
|
||||||
|
- クライアント起動時、アップデートが利用可能な場合エラー表示およびダイアログ表示しないように
|
||||||
|
|
||||||
|
### Bugfixes
|
||||||
|
- アカウントデータのエクスポート/インポート処理ができない問題を修正
|
||||||
|
- アンテナの既読が付かない問題を修正
|
||||||
|
- popupで設定ページを表示すると、アカウントの削除ページにアクセスすることができない問題を修正
|
||||||
|
- "問題が発生しました"ウィンドウを開くと☓ボタンがなくて閉じれない問題を修正
|
||||||
|
|
||||||
|
## 12.90.1 (2021/09/05)
|
||||||
|
|
||||||
|
### Bugfixes
|
||||||
|
- Dockerfileを修正
|
||||||
|
- ノート翻訳時に公開範囲が考慮されていない問題を修正
|
||||||
|
|
||||||
|
## 12.90.0 (2021/09/04)
|
||||||
|
|
||||||
|
### Improvements
|
||||||
|
- 藍モード、および藍ウィジェット
|
||||||
|
- クライアントに藍ちゃんを召喚することができるようになりました。
|
||||||
|
- URLからのアップロード, APの添付ファイル, 外部ファイルのプロキシ等では、Privateアドレス等へのリクエストは拒否されるようになりました。
|
||||||
|
- developmentで動作している場合は、この制限は適用されません。
|
||||||
|
- Proxy使用時には、この制限は適用されません。
|
||||||
|
Proxy使用時に同等の制限を行いたい場合は、Proxy側で設定を行う必要があります。
|
||||||
|
- `default.yml`にて`allowedPrivateNetworks`にCIDRを追加することにより、宛先ネットワークを指定してこの制限から除外することが出来ます。
|
||||||
|
- アップロード, ダウンロード出来るファイルサイズにハードリミットが適用されるようになりました。(約250MB)
|
||||||
|
- `default.yml`にて`maxFileSize`を変更することにより、制限値を変更することが出来ます。
|
||||||
|
|
||||||
|
### Bugfixes
|
||||||
|
- 管理者が最初にサインアップするページでログインされないのを修正
|
||||||
|
- CWを維持する設定を復活
|
||||||
|
- クライアントの表示を修正
|
||||||
|
|
||||||
|
## 12.89.2 (2021/08/24)
|
||||||
|
|
||||||
|
### Bugfixes
|
||||||
|
- カスタムCSSを有効にしているとエラーになる問題を修正
|
||||||
|
|
||||||
|
## 12.89.1 (2021/08/24)
|
||||||
|
|
||||||
|
### Improvements
|
||||||
|
- クライアントのデザインの調整
|
||||||
|
|
||||||
|
### Bugfixes
|
||||||
|
- 翻訳でDeepLのProアカウントに対応していない問題を修正
|
||||||
|
- インスタンス設定でDeepLのAuth Keyが空で表示される問題を修正
|
||||||
|
- セキュリティの向上
|
||||||
|
|
||||||
|
## 12.89.0 (2021/08/21)
|
||||||
|
|
||||||
|
### Improvements
|
||||||
|
- アカウント削除の安定性を向上
|
||||||
|
- 絵文字オートコンプリートの挙動を改修
|
||||||
|
- localStorageのaccountsはindexedDBで保持するように
|
||||||
|
- ActivityPub: ジョブキューの試行タイミングを調整 (#7635)
|
||||||
|
- API: sw/unregisterを追加
|
||||||
|
- ワードミュートのドキュメントを追加
|
||||||
|
- クライアントのデザインの調整
|
||||||
|
- 依存関係の更新
|
||||||
|
|
||||||
|
### Bugfixes
|
||||||
|
- チャンネルを作成しているとアカウントを削除できないのを修正
|
||||||
|
- ノートの「削除して編集」をするとアンケートの選択肢が[object Object]になる問題を修正
|
||||||
|
|
||||||
|
## 12.88.0 (2021/08/17)
|
||||||
|
|
||||||
|
### Features
|
||||||
|
- ノートの翻訳機能を追加
|
||||||
|
- 有効にするには、サーバー管理者がDeepLの無料アカウントを登録し、取得した認証キーを「インスタンス設定 > その他 > DeepL Auth Key」に設定する必要があります。
|
||||||
|
- Misskey更新時にダイアログを表示するように
|
||||||
|
- ジョブキューウィジェットに警報音を鳴らす設定を追加
|
||||||
|
|
||||||
|
### Improvements
|
||||||
|
- ブロックの挙動を改修
|
||||||
|
- ブロックされたユーザーがブロックしたユーザーに対してアクション出来ないようになりました。詳細はドキュメントをご確認ください。
|
||||||
|
- UIデザインの調整
|
||||||
|
- データベースのインデックスを最適化
|
||||||
|
- Proxy使用時にKeep-Aliveをサポート
|
||||||
|
- DNSキャッシュでネガティブキャッシュをサポート
|
||||||
|
- 依存関係の更新
|
||||||
|
|
||||||
|
### Bugfixes
|
||||||
|
- タッチ操作でウィンドウを閉じることができない問題を修正
|
||||||
|
- Renoteされた時刻が投稿された時刻のように表示される問題を修正
|
||||||
|
- コントロールパネルでファイルを削除した際の表示を修正
|
||||||
|
- ActivityPub: 長いユーザーの名前や自己紹介の対応
|
||||||
|
|
||||||
|
## 12.87.0 (2021/08/12)
|
||||||
|
|
||||||
|
### Improvements
|
||||||
|
- 絵文字オートコンプリートで一文字目は最近使った絵文字をサジェストするように
|
||||||
|
- 絵文字オートコンプリートのパフォーマンスを改善
|
||||||
|
- about-misskeyページにドキュメントへのリンクを追加
|
||||||
|
- Docker: Node.jsを16.6.2に
|
||||||
|
- 依存関係の更新
|
||||||
|
- 翻訳の更新
|
||||||
|
|
||||||
|
### Bugfixes
|
||||||
|
- Misskey更新時、テーマキャッシュの影響でスタイルがおかしくなる問題を修正
|
||||||
|
|
||||||
|
## 12.86.0 (2021/08/11)
|
||||||
|
|
||||||
|
### Improvements
|
||||||
|
- ドキュメントの更新
|
||||||
|
- ドキュメントにchangelogを追加
|
||||||
|
- ぼかし効果のオプションを追加
|
||||||
|
- Vueを3.2.1に更新
|
||||||
|
- UIの調整
|
||||||
|
|
||||||
|
### Bugfixes
|
||||||
|
- ハッシュタグ入力が空のときに#が付くのを修正
|
||||||
|
- フォローリクエストのEメール通知を修正
|
||||||
|
196
CONTRIBUTING.md
196
CONTRIBUTING.md
@@ -1,22 +1,43 @@
|
|||||||
# Contribution guide
|
# Contribution guide
|
||||||
:v: Thanks for your contributions :v:
|
We're glad you're interested in contributing Misskey! In this document you will find the information you need to contribute to the project.
|
||||||
|
|
||||||
## When you contribute...
|
**ℹ️ Important:** This project uses Japanese as its major language, **but you do not need to translate and write the Issues/PRs in Japanese.**
|
||||||
- 任意のIssueについて、せっかく実装してくださっても、実装方法や設計の認識が揃ってないとマージできない/しないことになりかねないので、初めにそのIssue上で着手することを宣言し、必要に応じて他メンバーと実装方法や設計のすり合わせを行ってください。宣言することは作業が他の人と被るのを防止する効果もあります。
|
Also, you might receive comments on your Issue/PR in Japanese, but you do not need to reply to them in Japanese as well.\
|
||||||
- 設計に迷った時はプロジェクトリーダーの判断を仰いでください。
|
The accuracy of translation into Japanese is not high, so it will be easier for us to understand if you write it in the original language.
|
||||||
- 時間や優先度の都合上、提出してくださったPRが長期間放置されることもありますがご理解ください。
|
It will also allow the reader to use the translation tool of their preference if necessary.
|
||||||
- 温度感高めで見てほしいものは責付いてください。
|
|
||||||
|
|
||||||
## Issues
|
## Issues
|
||||||
Feature suggestions and bug reports are filed in https://github.com/misskey-dev/misskey/issues .
|
Before creating an issue, please check the following:
|
||||||
|
- To avoid duplication, please search for similar issues before creating a new issue.
|
||||||
|
- Do not use Issues to ask questions or troubleshooting.
|
||||||
|
- Issues should only be used to feature requests, suggestions, and bug tracking.
|
||||||
|
- Please ask questions or troubleshooting in the [Misskey Forum](https://forum.misskey.io/) or [Discord](https://discord.gg/Wp8gVStHW3).
|
||||||
|
|
||||||
* Please search existing issues to avoid duplication. If your issue is already filed, please add your reaction or comment to the existing one.
|
## Before implementation
|
||||||
* If you have multiple independent issues, please submit them separately.
|
When you want to add a feature or fix a bug, **first have the design and policy reviewed in an Issue** (if it is not there, please make one). Without this step, there is a high possibility that the PR will not be merged even if it is implemented.
|
||||||
|
|
||||||
## Branches
|
Also, when you start implementation, assign yourself to the Issue (if you cannot do it yourself, ask another member to assign you). By expressing your intention to work the Issue, you can prevent conflicts in the work.
|
||||||
* **master** branch is tracking the latest release and used for production purposes.
|
|
||||||
* **develop** branch is where we work for the next release.
|
## Well-known branches
|
||||||
* **l10n_develop** branch is reserved for localization management.
|
- **`master`** branch is tracking the latest release and used for production purposes.
|
||||||
|
- **`develop`** branch is where we work for the next release.
|
||||||
|
- When you create a PR, basically target it to this branch.
|
||||||
|
- **`l10n_develop`** branch is reserved for localization management.
|
||||||
|
|
||||||
|
## Creating a PR
|
||||||
|
Thank you for your PR! Before creating a PR, please check the following:
|
||||||
|
- If possible, prefix the title with a keyword that identifies the type of this PR, as shown below.
|
||||||
|
- `fix` / `refactor` / `feat` / `enhance` / `perf` / `chore` etc
|
||||||
|
- Also, make sure that the granularity of this PR is appropriate. Please do not include more than one type of change or interest in a single PR.
|
||||||
|
- If there is an Issue which will be resolved by this PR, please include a reference to the Issue in the text.
|
||||||
|
- Please add the summary of the changes to [`CHANGELOG.md`](/CHANGELOG.md). However, this is not necessary for changes that do not affect the users, such as refactoring.
|
||||||
|
- Check if there are any documents that need to be created or updated due to this change.
|
||||||
|
- If you have added a feature or fixed a bug, please add a test case if possible.
|
||||||
|
- Please make sure that tests and Lint are passed in advance.
|
||||||
|
- You can run it with `npm run test` and `npm run lint`. [See more info](#testing)
|
||||||
|
- If this PR includes UI changes, please attach a screenshot in the text.
|
||||||
|
|
||||||
|
Thanks for your cooperation 🤗
|
||||||
|
|
||||||
## Localization (l10n)
|
## Localization (l10n)
|
||||||
Misskey uses [Crowdin](https://crowdin.com/project/misskey) for localization management.
|
Misskey uses [Crowdin](https://crowdin.com/project/misskey) for localization management.
|
||||||
@@ -28,12 +49,32 @@ If your language is not listed in Crowdin, please open an issue.
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Documentation
|
## Testing
|
||||||
* Documents for instance admins are located in [`/docs`](/docs).
|
- Test codes are located in [`/test`](/test).
|
||||||
* Documents for end users are located in [`/src/docs`](/src/docs).
|
|
||||||
|
|
||||||
## Test
|
### Run test
|
||||||
* Test codes are located in [`/test`](/test).
|
Create a config file.
|
||||||
|
```
|
||||||
|
cp test/test.yml .config/
|
||||||
|
```
|
||||||
|
Prepare DB/Redis for testing.
|
||||||
|
```
|
||||||
|
docker-compose -f test/docker-compose.yml up
|
||||||
|
```
|
||||||
|
Alternatively, prepare an empty (data can be erased) DB and edit `.config/test.yml`.
|
||||||
|
|
||||||
|
Run all test.
|
||||||
|
```
|
||||||
|
npm run test
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Run specify test
|
||||||
|
```
|
||||||
|
npx cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true TS_NODE_PROJECT="./test/tsconfig.json" npx mocha test/foo.ts --require ts-node/register
|
||||||
|
```
|
||||||
|
|
||||||
|
### e2e tests
|
||||||
|
TODO
|
||||||
|
|
||||||
## Continuous integration
|
## Continuous integration
|
||||||
Misskey uses GitHub Actions for executing automated tests.
|
Misskey uses GitHub Actions for executing automated tests.
|
||||||
@@ -50,116 +91,11 @@ Configuration files are located in [`/.github/workflows`](/.github/workflows).
|
|||||||
If you have no experience on 3D modeling, we suggest to use the free 3DCG software [Blender](https://www.blender.org/).
|
If you have no experience on 3D modeling, we suggest to use the free 3DCG software [Blender](https://www.blender.org/).
|
||||||
You can find information on glTF 2.0 at [glTF 2.0 — Blender Manual]( https://docs.blender.org/manual/en/dev/addons/io_scene_gltf2.html).
|
You can find information on glTF 2.0 at [glTF 2.0 — Blender Manual]( https://docs.blender.org/manual/en/dev/addons/io_scene_gltf2.html).
|
||||||
|
|
||||||
## FAQ
|
## Notes
|
||||||
### How to resolve conflictions occurred at yarn.lock?
|
### How to resolve conflictions occurred at yarn.lock?
|
||||||
|
|
||||||
Just execute `yarn` to fix it.
|
Just execute `yarn` to fix it.
|
||||||
|
|
||||||
## Glossary
|
|
||||||
### AP
|
|
||||||
Stands for _**A**ctivity**P**ub_.
|
|
||||||
|
|
||||||
### MFM
|
|
||||||
Stands for _**M**isskey **F**lavored **M**arkdown_.
|
|
||||||
|
|
||||||
### Mk
|
|
||||||
Stands for _**M**iss**k**ey_.
|
|
||||||
|
|
||||||
### SW
|
|
||||||
Stands for _**S**ervice**W**orker_.
|
|
||||||
|
|
||||||
### Nyaize
|
|
||||||
Convert な(na) to にゃ(nya)
|
|
||||||
|
|
||||||
#### Denyaize
|
|
||||||
Revert Nyaize
|
|
||||||
|
|
||||||
## TypeScript Coding Style
|
|
||||||
### Do not omit semicolons
|
|
||||||
This is to avoid Automatic Semicolon Insertion (ASI) hazard.
|
|
||||||
|
|
||||||
Ref:
|
|
||||||
* https://www.ecma-international.org/ecma-262/#sec-automatic-semicolon-insertion
|
|
||||||
* https://github.com/tc39/ecma262/pull/1062
|
|
||||||
|
|
||||||
### Do not omit curly brackets
|
|
||||||
Bad:
|
|
||||||
``` ts
|
|
||||||
if (foo)
|
|
||||||
bar;
|
|
||||||
else
|
|
||||||
baz;
|
|
||||||
```
|
|
||||||
|
|
||||||
Good:
|
|
||||||
``` ts
|
|
||||||
if (foo) {
|
|
||||||
bar;
|
|
||||||
} else {
|
|
||||||
baz;
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
As a special case, you can omit the curly brackets if
|
|
||||||
|
|
||||||
* the body of the `if`-statement have only one statement and,
|
|
||||||
* the `if`-statement does not have `else`-clause.
|
|
||||||
|
|
||||||
Good:
|
|
||||||
``` ts
|
|
||||||
if (foo) bar;
|
|
||||||
```
|
|
||||||
|
|
||||||
Make sure that the condition and the body statement are on the same line.
|
|
||||||
|
|
||||||
### Do not use `==` when it can simply be replaced with `===`.
|
|
||||||
🥰
|
|
||||||
|
|
||||||
### Use only boolean (or null related) values in the condition of an `if`-statement.
|
|
||||||
Bad:
|
|
||||||
``` ts
|
|
||||||
if (foo.length)
|
|
||||||
```
|
|
||||||
|
|
||||||
Good:
|
|
||||||
``` ts
|
|
||||||
if (foo.length > 0)
|
|
||||||
```
|
|
||||||
|
|
||||||
### Do not use `export default`
|
|
||||||
This is because the current language support does not work well with `export default`.
|
|
||||||
|
|
||||||
Ref:
|
|
||||||
* https://basarat.gitbooks.io/typescript/docs/tips/defaultIsBad.html
|
|
||||||
* https://gfx.hatenablog.com/entry/2017/11/24/135343
|
|
||||||
|
|
||||||
Bad:
|
|
||||||
``` ts
|
|
||||||
export default function(foo: string): string {
|
|
||||||
```
|
|
||||||
|
|
||||||
Good:
|
|
||||||
``` ts
|
|
||||||
export function something(foo: string): string {
|
|
||||||
```
|
|
||||||
|
|
||||||
## Directory structure
|
|
||||||
```
|
|
||||||
src ... Source code
|
|
||||||
@types ... Type definitions
|
|
||||||
prelude ... Independence utils for coding JavaScript without side effects
|
|
||||||
misc ... Independence utils for Misskey without side effects
|
|
||||||
service ... Common functions with side effects
|
|
||||||
queue ... Job queues and Jobs
|
|
||||||
server ... Web Server
|
|
||||||
client ... Client
|
|
||||||
mfm ... MFM
|
|
||||||
|
|
||||||
test ... Test code
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
## Notes
|
|
||||||
### placeholder
|
### placeholder
|
||||||
SQLをクエリビルダで組み立てる際、使用するプレースホルダは重複してはならない
|
SQLをクエリビルダで組み立てる際、使用するプレースホルダは重複してはならない
|
||||||
例えば
|
例えば
|
||||||
@@ -231,13 +167,16 @@ const users = userIds.length > 0 ? await Users.find({
|
|||||||
SQLでは配列のインデックスは**1始まり**。
|
SQLでは配列のインデックスは**1始まり**。
|
||||||
`[a, b, c]`の `a`にアクセスしたいなら`[0]`ではなく`[1]`と書く
|
`[a, b, c]`の `a`にアクセスしたいなら`[0]`ではなく`[1]`と書く
|
||||||
|
|
||||||
|
### null IN
|
||||||
|
nullが含まれる可能性のあるカラムにINするときは、そのままだとおかしくなるのでORなどでnullのハンドリングをしよう。
|
||||||
|
|
||||||
### `undefined`にご用心
|
### `undefined`にご用心
|
||||||
MongoDBの時とは違い、findOneでレコードを取得する時に対象レコードが存在しない場合 **`undefined`** が返ってくるので注意。
|
MongoDBの時とは違い、findOneでレコードを取得する時に対象レコードが存在しない場合 **`undefined`** が返ってくるので注意。
|
||||||
MongoDBは`null`で返してきてたので、その感覚で`if (x === null)`とか書くとバグる。代わりに`if (x == null)`と書いてください
|
MongoDBは`null`で返してきてたので、その感覚で`if (x === null)`とか書くとバグる。代わりに`if (x == null)`と書いてください
|
||||||
|
|
||||||
### Migration作成方法
|
### Migration作成方法
|
||||||
```
|
```
|
||||||
npx ts-node ./node_modules/typeorm/cli.js migration:generate -n 変更の名前
|
npx ts-node ./node_modules/typeorm/cli.js migration:generate -n 変更の名前 -o
|
||||||
```
|
```
|
||||||
|
|
||||||
作成されたスクリプトは不必要な変更を含むため除去してください。
|
作成されたスクリプトは不必要な変更を含むため除去してください。
|
||||||
@@ -245,6 +184,13 @@ npx ts-node ./node_modules/typeorm/cli.js migration:generate -n 変更の名前
|
|||||||
### コネクションには`markRaw`せよ
|
### コネクションには`markRaw`せよ
|
||||||
**Vueのコンポーネントのdataオプションとして**misskey.jsのコネクションを設定するとき、必ず`markRaw`でラップしてください。インスタンスが不必要にリアクティブ化されることで、misskey.js内の処理で不具合が発生するとともに、パフォーマンス上の問題にも繋がる。なお、Composition APIを使う場合はこの限りではない(リアクティブ化はマニュアルなため)。
|
**Vueのコンポーネントのdataオプションとして**misskey.jsのコネクションを設定するとき、必ず`markRaw`でラップしてください。インスタンスが不必要にリアクティブ化されることで、misskey.js内の処理で不具合が発生するとともに、パフォーマンス上の問題にも繋がる。なお、Composition APIを使う場合はこの限りではない(リアクティブ化はマニュアルなため)。
|
||||||
|
|
||||||
|
### JSONのimportに気を付けよう
|
||||||
|
TypeScriptでjsonをimportすると、tscでコンパイルするときにそのjsonファイルも一緒にdistディレクトリに吐き出されてしまう。この挙動により、意図せずファイルの書き換えが発生することがあるので、jsonをimportするときは書き換えられても良いものかどうか確認すること。書き換えされて欲しくない場合は、importで読み込むのではなく、`fs.readFileSync`などの関数を使って読み込むようにすればよい。
|
||||||
|
|
||||||
|
### コンポーネントのスタイル定義でmarginを持たせない
|
||||||
|
コンポーネント自身がmarginを設定するのは問題の元となることはよく知られている
|
||||||
|
marginはそのコンポーネントを使う側が設定する
|
||||||
|
|
||||||
## その他
|
## その他
|
||||||
### HTMLのクラス名で follow という単語は使わない
|
### HTMLのクラス名で follow という単語は使わない
|
||||||
広告ブロッカーで誤ってブロックされる
|
広告ブロッカーで誤ってブロックされる
|
||||||
|
37
Dockerfile
37
Dockerfile
@@ -1,43 +1,36 @@
|
|||||||
FROM node:16.2.0-alpine3.13 AS base
|
FROM node:16.6.2-alpine3.13 AS base
|
||||||
|
|
||||||
ENV NODE_ENV=production
|
ENV NODE_ENV=production
|
||||||
|
|
||||||
WORKDIR /misskey
|
WORKDIR /misskey
|
||||||
|
|
||||||
|
ENV BUILD_DEPS autoconf automake file g++ gcc libc-dev libtool make nasm pkgconfig python3 zlib-dev git
|
||||||
|
|
||||||
FROM base AS builder
|
FROM base AS builder
|
||||||
|
|
||||||
RUN apk add --no-cache \
|
|
||||||
autoconf \
|
|
||||||
automake \
|
|
||||||
file \
|
|
||||||
g++ \
|
|
||||||
gcc \
|
|
||||||
libc-dev \
|
|
||||||
libtool \
|
|
||||||
make \
|
|
||||||
nasm \
|
|
||||||
pkgconfig \
|
|
||||||
python3 \
|
|
||||||
zlib-dev \
|
|
||||||
vips-dev \
|
|
||||||
vips
|
|
||||||
|
|
||||||
COPY package.json yarn.lock .yarnrc ./
|
|
||||||
RUN yarn install
|
|
||||||
COPY . ./
|
COPY . ./
|
||||||
RUN yarn build
|
|
||||||
|
RUN apk add --no-cache $BUILD_DEPS && \
|
||||||
|
git submodule update --init && \
|
||||||
|
yarn install && \
|
||||||
|
yarn build && \
|
||||||
|
rm -rf .git
|
||||||
|
|
||||||
FROM base AS runner
|
FROM base AS runner
|
||||||
|
|
||||||
RUN apk add --no-cache \
|
RUN apk add --no-cache \
|
||||||
ffmpeg \
|
ffmpeg \
|
||||||
tini \
|
tini
|
||||||
vips
|
|
||||||
|
|
||||||
ENTRYPOINT ["/sbin/tini", "--"]
|
ENTRYPOINT ["/sbin/tini", "--"]
|
||||||
|
|
||||||
COPY --from=builder /misskey/node_modules ./node_modules
|
COPY --from=builder /misskey/node_modules ./node_modules
|
||||||
COPY --from=builder /misskey/built ./built
|
COPY --from=builder /misskey/built ./built
|
||||||
|
COPY --from=builder /misskey/packages/backend/node_modules ./packages/backend/node_modules
|
||||||
|
COPY --from=builder /misskey/packages/backend/built ./packages/backend/built
|
||||||
|
COPY --from=builder /misskey/packages/client/node_modules ./packages/client/node_modules
|
||||||
|
COPY --from=builder /misskey/packages/client/built ./packages/client/built
|
||||||
COPY . ./
|
COPY . ./
|
||||||
|
|
||||||
CMD ["npm", "run", "migrateandstart"]
|
CMD ["npm", "run", "migrateandstart"]
|
||||||
|
|
||||||
|
@@ -4,7 +4,6 @@
|
|||||||
|
|
||||||
<div align="center">
|
<div align="center">
|
||||||
|
|
||||||
[](https://circleci.com/gh/misskey-dev/misskey)
|
|
||||||
[](https://david-dm.org/misskey-dev/misskey)
|
[](https://david-dm.org/misskey-dev/misskey)
|
||||||
[](http://makeapullrequest.com)
|
[](http://makeapullrequest.com)
|
||||||
[](https://github.com/humanetech-community/awesome-humane-tech)
|
[](https://github.com/humanetech-community/awesome-humane-tech)
|
||||||
@@ -65,7 +64,7 @@ Organize and store your files! Want to post a picture you have already uploaded?
|
|||||||
|
|
||||||
:package: Create your own instance
|
:package: Create your own instance
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
Please see the [Setup and Installation Guide](./docs/setup.en.md).
|
Please see the [Setup and Installation Guide](https://misskey-hub.net/docs/install/install.html).
|
||||||
|
|
||||||
:wrench: Contribution
|
:wrench: Contribution
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
@@ -104,6 +103,12 @@ Related projects
|
|||||||
- [misskey.js](https://github.com/misskey-dev/misskey.js) - Misskey SDK for JavaScript
|
- [misskey.js](https://github.com/misskey-dev/misskey.js) - Misskey SDK for JavaScript
|
||||||
- [mfm.js](https://github.com/misskey-dev/mfm.js) - MFM parser
|
- [mfm.js](https://github.com/misskey-dev/mfm.js) - MFM parser
|
||||||
|
|
||||||
|
Sponsors
|
||||||
|
----------------------------------------------------------------
|
||||||
|
<div align="center">
|
||||||
|
<a class="rss3" title="RSS3" href="https://rss3.io/" target="_blank" style="display: inline-block;"><img src="https://rss3.io/assets/images/Logo.svg" alt="RSS3" style="display: inline-block; height: 60px;"></a>
|
||||||
|
</div>
|
||||||
|
|
||||||
:heart: Backers
|
:heart: Backers
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
<!-- PATREON_START -->
|
<!-- PATREON_START -->
|
||||||
|
@@ -2,6 +2,3 @@ files:
|
|||||||
- source: /locales/ja-JP.yml
|
- source: /locales/ja-JP.yml
|
||||||
translation: /locales/%locale%.yml
|
translation: /locales/%locale%.yml
|
||||||
update_option: update_as_unapproved
|
update_option: update_as_unapproved
|
||||||
- source: /src/docs/ja-JP/*.md
|
|
||||||
translation: /src/docs/%locale%/%original_file_name%
|
|
||||||
update_option: update_as_unapproved
|
|
||||||
|
3
cypress.json
Normal file
3
cypress.json
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"baseUrl": "http://localhost:61812"
|
||||||
|
}
|
5
cypress/fixtures/example.json
Normal file
5
cypress/fixtures/example.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"name": "Using fixtures to represent data",
|
||||||
|
"email": "hello@cypress.io",
|
||||||
|
"body": "Fixtures are a great way to mock data for responses to routes"
|
||||||
|
}
|
190
cypress/integration/basic.js
Normal file
190
cypress/integration/basic.js
Normal file
@@ -0,0 +1,190 @@
|
|||||||
|
describe('Before setup instance', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
cy.request('POST', '/api/reset-db').as('reset');
|
||||||
|
cy.get('@reset').its('status').should('equal', 204);
|
||||||
|
cy.reload(true);
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
// テスト終了直前にページ遷移するようなテストケース(例えばアカウント作成)だと、たぶんCypressのバグでブラウザの内容が次のテストケースに引き継がれてしまう(例えばアカウントが作成し終わった段階からテストが始まる)。
|
||||||
|
// waitを入れることでそれを防止できる
|
||||||
|
cy.wait(1000);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('successfully loads', () => {
|
||||||
|
cy.visit('/');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('setup instance', () => {
|
||||||
|
cy.visit('/');
|
||||||
|
|
||||||
|
cy.intercept('POST', '/api/admin/accounts/create').as('signup');
|
||||||
|
|
||||||
|
cy.get('[data-cy-admin-username] input').type('admin');
|
||||||
|
cy.get('[data-cy-admin-password] input').type('admin1234');
|
||||||
|
cy.get('[data-cy-admin-ok]').click();
|
||||||
|
|
||||||
|
// なぜか動かない
|
||||||
|
//cy.wait('@signup').should('have.property', 'response.statusCode');
|
||||||
|
cy.wait('@signup');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('After setup instance', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
cy.request('POST', '/api/reset-db').as('reset');
|
||||||
|
cy.get('@reset').its('status').should('equal', 204);
|
||||||
|
cy.reload(true);
|
||||||
|
|
||||||
|
// インスタンス初期セットアップ
|
||||||
|
cy.request('POST', '/api/admin/accounts/create', {
|
||||||
|
username: 'admin',
|
||||||
|
password: 'pass',
|
||||||
|
}).its('body').as('admin');
|
||||||
|
|
||||||
|
cy.get('@admin');
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
// テスト終了直前にページ遷移するようなテストケース(例えばアカウント作成)だと、たぶんCypressのバグでブラウザの内容が次のテストケースに引き継がれてしまう(例えばアカウントが作成し終わった段階からテストが始まる)。
|
||||||
|
// waitを入れることでそれを防止できる
|
||||||
|
cy.wait(1000);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('successfully loads', () => {
|
||||||
|
cy.visit('/');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('signup', () => {
|
||||||
|
cy.visit('/');
|
||||||
|
|
||||||
|
cy.intercept('POST', '/api/signup').as('signup');
|
||||||
|
|
||||||
|
cy.get('[data-cy-signup]').click();
|
||||||
|
cy.get('[data-cy-signup-username] input').type('alice');
|
||||||
|
cy.get('[data-cy-signup-password] input').type('alice1234');
|
||||||
|
cy.get('[data-cy-signup-password-retype] input').type('alice1234');
|
||||||
|
cy.get('[data-cy-signup-submit]').click();
|
||||||
|
|
||||||
|
cy.wait('@signup');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('After user signup', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
cy.request('POST', '/api/reset-db').as('reset');
|
||||||
|
cy.get('@reset').its('status').should('equal', 204);
|
||||||
|
cy.reload(true);
|
||||||
|
|
||||||
|
// インスタンス初期セットアップ
|
||||||
|
cy.request('POST', '/api/admin/accounts/create', {
|
||||||
|
username: 'admin',
|
||||||
|
password: 'pass',
|
||||||
|
}).its('body').as('admin');
|
||||||
|
|
||||||
|
cy.get('@admin').then(() => {
|
||||||
|
// ユーザー作成
|
||||||
|
cy.request('POST', '/api/signup', {
|
||||||
|
username: 'alice',
|
||||||
|
password: 'alice1234',
|
||||||
|
}).its('body').as('alice');
|
||||||
|
});
|
||||||
|
|
||||||
|
cy.get('@alice');
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
// テスト終了直前にページ遷移するようなテストケース(例えばアカウント作成)だと、たぶんCypressのバグでブラウザの内容が次のテストケースに引き継がれてしまう(例えばアカウントが作成し終わった段階からテストが始まる)。
|
||||||
|
// waitを入れることでそれを防止できる
|
||||||
|
cy.wait(1000);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('successfully loads', () => {
|
||||||
|
cy.visit('/');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('signin', () => {
|
||||||
|
cy.visit('/');
|
||||||
|
|
||||||
|
cy.intercept('POST', '/api/signin').as('signin');
|
||||||
|
|
||||||
|
cy.get('[data-cy-signin]').click();
|
||||||
|
cy.get('[data-cy-signin-username] input').type('alice');
|
||||||
|
// Enterキーでサインインできるかの確認も兼ねる
|
||||||
|
cy.get('[data-cy-signin-password] input').type('alice1234{enter}');
|
||||||
|
|
||||||
|
cy.wait('@signin');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('suspend', function() {
|
||||||
|
cy.request('POST', '/api/admin/suspend-user', {
|
||||||
|
i: this.admin.token,
|
||||||
|
userId: this.alice.id,
|
||||||
|
});
|
||||||
|
|
||||||
|
cy.visit('/');
|
||||||
|
|
||||||
|
cy.get('[data-cy-signin]').click();
|
||||||
|
cy.get('[data-cy-signin-username] input').type('alice');
|
||||||
|
cy.get('[data-cy-signin-password] input').type('alice1234{enter}');
|
||||||
|
|
||||||
|
// TODO: cypressにブラウザの言語指定できる機能が実装され次第英語のみテストするようにする
|
||||||
|
cy.contains(/アカウントが凍結されています|This account has been suspended due to/gi);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('After user singed in', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
cy.request('POST', '/api/reset-db').as('reset');
|
||||||
|
cy.get('@reset').its('status').should('equal', 204);
|
||||||
|
cy.reload(true);
|
||||||
|
|
||||||
|
// インスタンス初期セットアップ
|
||||||
|
cy.request('POST', '/api/admin/accounts/create', {
|
||||||
|
username: 'admin',
|
||||||
|
password: 'pass',
|
||||||
|
}).its('body').as('admin');
|
||||||
|
|
||||||
|
cy.get('@admin').then(() => {
|
||||||
|
// ユーザー作成
|
||||||
|
cy.request('POST', '/api/signup', {
|
||||||
|
username: 'alice',
|
||||||
|
password: 'alice1234',
|
||||||
|
}).its('body').as('alice');
|
||||||
|
});
|
||||||
|
|
||||||
|
cy.get('@alice').then(() => {
|
||||||
|
cy.visit('/');
|
||||||
|
|
||||||
|
cy.intercept('POST', '/api/signin').as('signin');
|
||||||
|
|
||||||
|
cy.get('[data-cy-signin]').click();
|
||||||
|
cy.get('[data-cy-signin-username] input').type('alice');
|
||||||
|
cy.get('[data-cy-signin-password] input').type('alice1234{enter}');
|
||||||
|
|
||||||
|
cy.wait('@signin').as('signedIn');
|
||||||
|
});
|
||||||
|
|
||||||
|
cy.get('@signedIn');
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
// テスト終了直前にページ遷移するようなテストケース(例えばアカウント作成)だと、たぶんCypressのバグでブラウザの内容が次のテストケースに引き継がれてしまう(例えばアカウントが作成し終わった段階からテストが始まる)。
|
||||||
|
// waitを入れることでそれを防止できる
|
||||||
|
cy.wait(1000);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('successfully loads', () => {
|
||||||
|
cy.visit('/');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('note', () => {
|
||||||
|
cy.visit('/');
|
||||||
|
|
||||||
|
cy.get('[data-cy-open-post-form]').click();
|
||||||
|
cy.get('[data-cy-post-form-text]').type('Hello, Misskey!');
|
||||||
|
cy.get('[data-cy-open-post-form-submit]').click();
|
||||||
|
|
||||||
|
cy.contains('Hello, Misskey!');
|
||||||
|
});
|
||||||
|
});
|
22
cypress/plugins/index.js
Normal file
22
cypress/plugins/index.js
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
/// <reference types="cypress" />
|
||||||
|
// ***********************************************************
|
||||||
|
// This example plugins/index.js can be used to load plugins
|
||||||
|
//
|
||||||
|
// You can change the location of this file or turn off loading
|
||||||
|
// the plugins file with the 'pluginsFile' configuration option.
|
||||||
|
//
|
||||||
|
// You can read more here:
|
||||||
|
// https://on.cypress.io/plugins-guide
|
||||||
|
// ***********************************************************
|
||||||
|
|
||||||
|
// This function is called when a project is opened or re-opened (e.g. due to
|
||||||
|
// the project's config changing)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @type {Cypress.PluginConfig}
|
||||||
|
*/
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
module.exports = (on, config) => {
|
||||||
|
// `on` is used to hook into various events Cypress emits
|
||||||
|
// `config` is the resolved Cypress config
|
||||||
|
}
|
25
cypress/support/commands.js
Normal file
25
cypress/support/commands.js
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
// ***********************************************
|
||||||
|
// This example commands.js shows you how to
|
||||||
|
// create various custom commands and overwrite
|
||||||
|
// existing commands.
|
||||||
|
//
|
||||||
|
// For more comprehensive examples of custom
|
||||||
|
// commands please read more here:
|
||||||
|
// https://on.cypress.io/custom-commands
|
||||||
|
// ***********************************************
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// -- This is a parent command --
|
||||||
|
// Cypress.Commands.add('login', (email, password) => { ... })
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// -- This is a child command --
|
||||||
|
// Cypress.Commands.add('drag', { prevSubject: 'element'}, (subject, options) => { ... })
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// -- This is a dual command --
|
||||||
|
// Cypress.Commands.add('dismiss', { prevSubject: 'optional'}, (subject, options) => { ... })
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// -- This will overwrite an existing command --
|
||||||
|
// Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... })
|
20
cypress/support/index.js
Normal file
20
cypress/support/index.js
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
// ***********************************************************
|
||||||
|
// This example support/index.js is processed and
|
||||||
|
// loaded automatically before your test files.
|
||||||
|
//
|
||||||
|
// This is a great place to put global configuration and
|
||||||
|
// behavior that modifies Cypress.
|
||||||
|
//
|
||||||
|
// You can change the location of this file or turn off
|
||||||
|
// automatically serving support files with the
|
||||||
|
// 'supportFile' configuration option.
|
||||||
|
//
|
||||||
|
// You can read more here:
|
||||||
|
// https://on.cypress.io/configuration
|
||||||
|
// ***********************************************************
|
||||||
|
|
||||||
|
// Import commands.js using ES2015 syntax:
|
||||||
|
import './commands'
|
||||||
|
|
||||||
|
// Alternatively you can use CommonJS syntax:
|
||||||
|
// require('./commands')
|
@@ -15,6 +15,7 @@ services:
|
|||||||
- external_network
|
- external_network
|
||||||
volumes:
|
volumes:
|
||||||
- ./files:/misskey/files
|
- ./files:/misskey/files
|
||||||
|
- ./.config:/misskey/.config:ro
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
restart: always
|
restart: always
|
||||||
|
@@ -1,33 +0,0 @@
|
|||||||
# Docs
|
|
||||||
These docs are for contributors of Misskey or admins of instance of Misskey.
|
|
||||||
Docs for users are located in `src/docs`.
|
|
||||||
|
|
||||||
これらのドキュメントはMisskeyの開発者またはMisskeyインスタンス運営者向けです。
|
|
||||||
利用者向けのドキュメントは`src/docs`にあります。
|
|
||||||
|
|
||||||
这些文档是为 Misskey 的贡献者,或是 Misskey 实例的管理者准备的。
|
|
||||||
为用户准备的文档放置在 `src/docs` 文件夹中。
|
|
||||||
|
|
||||||
## 日本語版
|
|
||||||
|
|
||||||
- [Misskey構築の手引き](./setup.ja.md)
|
|
||||||
- [運営ガイド](./manage.ja.md)
|
|
||||||
- [Dockerを使ったMisskey構築方法](./docker.ja.md)
|
|
||||||
|
|
||||||
## English Version
|
|
||||||
|
|
||||||
- [Misskey Setup and Installation Guide](./setup.en.md)
|
|
||||||
- [Management guide](./manage.en.md)
|
|
||||||
- [Docker Guide](./docker.en.md)
|
|
||||||
|
|
||||||
## Française Version
|
|
||||||
|
|
||||||
- [Guide d'installation et de configuration de Misskey](./setup.fr.md)
|
|
||||||
- [Guide d'administration](./manage.fr.md)
|
|
||||||
- [Guide Docker](./docker.fr.md)
|
|
||||||
|
|
||||||
## 简体中文版
|
|
||||||
|
|
||||||
- [Misskey 设置和安装指南](./setup.zh.md)
|
|
||||||
- [运营指南](./manage.zh.md)
|
|
||||||
- [Docker 部署指南](./docker.zh.md)
|
|
@@ -1,96 +0,0 @@
|
|||||||
Docker Guide
|
|
||||||
================================================================
|
|
||||||
|
|
||||||
This guide describes how to install and setup Misskey with Docker.
|
|
||||||
|
|
||||||
- [Japanese version also available - 日本語版もあります](./docker.ja.md)
|
|
||||||
- [Simplified Chinese version also available - 简体中文版同样可用](./docker.zh.md)
|
|
||||||
|
|
||||||
----------------------------------------------------------------
|
|
||||||
|
|
||||||
*1.* Download Misskey
|
|
||||||
----------------------------------------------------------------
|
|
||||||
1. Clone Misskey repository's master branch.
|
|
||||||
|
|
||||||
`git clone -b master git://github.com/misskey-dev/misskey.git`
|
|
||||||
|
|
||||||
2. Move to misskey directory.
|
|
||||||
|
|
||||||
`cd misskey`
|
|
||||||
|
|
||||||
3. Checkout to the [latest release](https://github.com/misskey-dev/misskey/releases/latest) tag.
|
|
||||||
|
|
||||||
`git checkout master`
|
|
||||||
|
|
||||||
*2.* Configure Misskey
|
|
||||||
----------------------------------------------------------------
|
|
||||||
|
|
||||||
Create configuration files with following:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cd .config
|
|
||||||
cp example.yml default.yml
|
|
||||||
cp docker_example.env docker.env
|
|
||||||
```
|
|
||||||
|
|
||||||
### `default.yml`
|
|
||||||
|
|
||||||
Edit this file the same as non-Docker environment.
|
|
||||||
However hostname of Postgresql, Redis and Elasticsearch are not `localhost`, they are set in `docker-compose.yml`.
|
|
||||||
The following is default hostname:
|
|
||||||
|
|
||||||
| Service | Hostname |
|
|
||||||
|---------------|----------|
|
|
||||||
| Postgresql | `db` |
|
|
||||||
| Redis | `redis` |
|
|
||||||
| Elasticsearch | `es` |
|
|
||||||
|
|
||||||
### `docker.env`
|
|
||||||
|
|
||||||
Configure Postgresql in this file.
|
|
||||||
The minimum required settings are:
|
|
||||||
|
|
||||||
| name | Description |
|
|
||||||
|---------------------|---------------|
|
|
||||||
| `POSTGRES_PASSWORD` | Password |
|
|
||||||
| `POSTGRES_USER` | Username |
|
|
||||||
| `POSTGRES_DB` | Database name |
|
|
||||||
|
|
||||||
*3.* Configure Docker
|
|
||||||
----------------------------------------------------------------
|
|
||||||
Edit `docker-compose.yml`.
|
|
||||||
|
|
||||||
*4.* Build Misskey
|
|
||||||
----------------------------------------------------------------
|
|
||||||
Build misskey with the following:
|
|
||||||
|
|
||||||
`docker-compose build`
|
|
||||||
|
|
||||||
*5.* Init DB
|
|
||||||
----------------------------------------------------------------
|
|
||||||
``` shell
|
|
||||||
docker-compose run --rm web yarn run init
|
|
||||||
```
|
|
||||||
|
|
||||||
*6.* That is it.
|
|
||||||
----------------------------------------------------------------
|
|
||||||
Well done! Now you have an environment to run Misskey.
|
|
||||||
|
|
||||||
### Launch normally
|
|
||||||
Just `docker-compose up -d`. GLHF!
|
|
||||||
|
|
||||||
### How to update your Misskey server to the latest version
|
|
||||||
1. `git stash`
|
|
||||||
2. `git checkout master`
|
|
||||||
3. `git pull`
|
|
||||||
4. `git stash pop`
|
|
||||||
5. `docker-compose build`
|
|
||||||
6. Check [ChangeLog](../CHANGELOG.md) for migration information
|
|
||||||
7. `docker-compose stop && docker-compose up -d`
|
|
||||||
|
|
||||||
### How to execute [cli commands](manage.en.md):
|
|
||||||
`docker-compose run --rm web node built/tools/mark-admin @example`
|
|
||||||
|
|
||||||
----------------------------------------------------------------
|
|
||||||
|
|
||||||
If you have any questions or trouble, feel free to contact us!
|
|
@@ -1,90 +0,0 @@
|
|||||||
Guide Docker
|
|
||||||
================================================================
|
|
||||||
|
|
||||||
Ce guide explique comment installer et configurer Misskey avec Docker.
|
|
||||||
|
|
||||||
- [Version japonaise également disponible - Japanese version also available - 日本語版もあります](./docker.ja.md)
|
|
||||||
- [Version anglaise également disponible - English version also available - 英語版もあります](./docker.en.md)
|
|
||||||
- [Version Chinois simplifié également disponible - Simplified Chinese version also available - 简体中文版同样可用](./docker.zh.md)
|
|
||||||
|
|
||||||
----------------------------------------------------------------
|
|
||||||
|
|
||||||
*1.* Télécharger Misskey
|
|
||||||
----------------------------------------------------------------
|
|
||||||
1. Clone le dépôt de Misskey sur la branche master.
|
|
||||||
|
|
||||||
`git clone -b master git://github.com/misskey-dev/misskey.git`
|
|
||||||
|
|
||||||
2. Naviguez dans le dossier du dépôt.
|
|
||||||
|
|
||||||
`cd misskey`
|
|
||||||
|
|
||||||
3. Checkout sur le tag de la [dernière version](https://github.com/misskey-dev/misskey/releases/latest).
|
|
||||||
|
|
||||||
`git checkout master`
|
|
||||||
|
|
||||||
*2.* Configuration de Misskey
|
|
||||||
----------------------------------------------------------------
|
|
||||||
1. `cp .config/example.yml .config/default.yml` Copiez le fichier `.config/example.yml` et renommez-le `default.yml`.
|
|
||||||
2. `cp .config/mongo_initdb_example.js .config/mongo_initdb.js` Copie le fichier `.config/mongo_initdb_example.js` et le renomme en `mongo_initdb.js`.
|
|
||||||
3. Editez `default.yml` et `mongo_initdb.js`.
|
|
||||||
|
|
||||||
*3.* Configurer Docker
|
|
||||||
----------------------------------------------------------------
|
|
||||||
Editez `docker-compose.yml`.
|
|
||||||
|
|
||||||
*4.* Contruire Misskey
|
|
||||||
----------------------------------------------------------------
|
|
||||||
Contruire l'image Docker avec:
|
|
||||||
|
|
||||||
`docker-compose build`
|
|
||||||
|
|
||||||
*5.* C'est tout !
|
|
||||||
----------------------------------------------------------------
|
|
||||||
Parfait, Vous avez un environnement prêt pour démarrer Misskey.
|
|
||||||
|
|
||||||
### Lancer normalement
|
|
||||||
Utilisez la commande `docker-compose up -d`. GLHF!
|
|
||||||
|
|
||||||
### How to update your Misskey server to the latest version
|
|
||||||
1. `git stash`
|
|
||||||
2. `git checkout master`
|
|
||||||
3. `git pull`
|
|
||||||
4. `git stash pop`
|
|
||||||
5. `docker-compose build`
|
|
||||||
6. Consultez le [ChangeLog](../CHANGELOG.md) pour avoir les éventuelles informations de migration
|
|
||||||
7. `docker-compose stop && docker-compose up -d`
|
|
||||||
|
|
||||||
### Comment exécuter des [commandes](manage.fr.md)
|
|
||||||
`docker-compose run --rm web node built/tools/mark-admin @example`
|
|
||||||
|
|
||||||
### Configuration d'ElasticSearch (pour la fonction de recherche)
|
|
||||||
*1.* Préparation de l'environnement
|
|
||||||
----------------------------------------------------------------
|
|
||||||
1. Permet de créer le dossier d'accueil de la base ElasticSearch aves les bons droits
|
|
||||||
|
|
||||||
`mkdir elasticsearch && chown 1000:1000 elasticsearch`
|
|
||||||
|
|
||||||
2. Augmente la valeur max du paramètre map_count du système (valeur minimum pour pouvoir lancer ES)
|
|
||||||
|
|
||||||
`sysctl -w vm.max_map_count=262144`
|
|
||||||
|
|
||||||
*2.* Après lancement du docker-compose, initialisation de la base ElasticSearch
|
|
||||||
----------------------------------------------------------------
|
|
||||||
1. Connexion dans le conteneur web
|
|
||||||
|
|
||||||
`docker-compose -it web /bin/sh`
|
|
||||||
|
|
||||||
2. Ajout du paquet curl
|
|
||||||
|
|
||||||
`apk add curl`
|
|
||||||
|
|
||||||
3. Création de la base ES
|
|
||||||
|
|
||||||
`curl -X PUT "es:9200/misskey" -H 'Content-Type: application/json' -d'{ "settings" : { "index" : { } }}'`
|
|
||||||
|
|
||||||
4. `exit`
|
|
||||||
|
|
||||||
----------------------------------------------------------------
|
|
||||||
|
|
||||||
Si vous avez des questions ou des problèmes, n'hésitez pas à nous contacter !
|
|
@@ -1,97 +0,0 @@
|
|||||||
Dockerを使ったMisskey構築方法
|
|
||||||
================================================================
|
|
||||||
|
|
||||||
このガイドはDockerを使ったMisskeyセットアップ方法について解説します。
|
|
||||||
|
|
||||||
- [英語版もあります - English version also available](./docker.en.md)
|
|
||||||
- [简体中文版同样可用 - Simplified Chinese version also available](./docker.zh.md)
|
|
||||||
|
|
||||||
----------------------------------------------------------------
|
|
||||||
|
|
||||||
*1.* Misskeyのダウンロード
|
|
||||||
----------------------------------------------------------------
|
|
||||||
1. masterブランチからMisskeyレポジトリをクローン
|
|
||||||
|
|
||||||
`git clone -b master git://github.com/misskey-dev/misskey.git`
|
|
||||||
|
|
||||||
2. misskeyディレクトリに移動
|
|
||||||
|
|
||||||
`cd misskey`
|
|
||||||
|
|
||||||
3. [最新のリリース](https://github.com/misskey-dev/misskey/releases/latest)を確認
|
|
||||||
|
|
||||||
`git checkout master`
|
|
||||||
|
|
||||||
*2.* 設定ファイルの作成と編集
|
|
||||||
----------------------------------------------------------------
|
|
||||||
|
|
||||||
下記コマンドで設定ファイルを作成してください。
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cd .config
|
|
||||||
cp example.yml default.yml
|
|
||||||
cp docker_example.env docker.env
|
|
||||||
```
|
|
||||||
|
|
||||||
### `default.yml`の編集
|
|
||||||
|
|
||||||
非Docker環境と同じ様に編集してください。
|
|
||||||
ただし、Postgresql、RedisとElasticsearchのホストは`localhost`ではなく、`docker-compose.yml`で設定されたサービス名になっています。
|
|
||||||
標準設定では次の通りです。
|
|
||||||
|
|
||||||
| サービス | ホスト名 |
|
|
||||||
|---------------|---------|
|
|
||||||
| Postgresql |`db` |
|
|
||||||
| Redis |`redis` |
|
|
||||||
| Elasticsearch |`es` |
|
|
||||||
|
|
||||||
### `docker.env`の編集
|
|
||||||
|
|
||||||
このファイルはPostgresqlの設定を記述します。
|
|
||||||
最低限記述する必要がある設定は次の通りです。
|
|
||||||
|
|
||||||
| 設定 | 内容 |
|
|
||||||
|---------------------|--------------|
|
|
||||||
| `POSTGRES_PASSWORD` | パスワード |
|
|
||||||
| `POSTGRES_USER` | ユーザー名 |
|
|
||||||
| `POSTGRES_DB` | データベース名 |
|
|
||||||
|
|
||||||
*3.* Dockerの設定
|
|
||||||
----------------------------------------------------------------
|
|
||||||
`docker-compose.yml`を編集してください。
|
|
||||||
|
|
||||||
*4.* Misskeyのビルド
|
|
||||||
----------------------------------------------------------------
|
|
||||||
次のコマンドでMisskeyをビルドしてください:
|
|
||||||
|
|
||||||
`docker-compose build`
|
|
||||||
|
|
||||||
*5.* データベースを初期化
|
|
||||||
----------------------------------------------------------------
|
|
||||||
``` shell
|
|
||||||
docker-compose run --rm web yarn run init
|
|
||||||
```
|
|
||||||
|
|
||||||
*6.* 以上です!
|
|
||||||
----------------------------------------------------------------
|
|
||||||
お疲れ様でした。これでMisskeyを動かす準備は整いました。
|
|
||||||
|
|
||||||
### 通常起動
|
|
||||||
`docker-compose up -d`するだけです。GLHF!
|
|
||||||
|
|
||||||
### Misskeyを最新バージョンにアップデートする方法:
|
|
||||||
1. `git stash`
|
|
||||||
2. `git checkout master`
|
|
||||||
3. `git pull`
|
|
||||||
4. `git stash pop`
|
|
||||||
5. `docker-compose build`
|
|
||||||
6. [ChangeLog](../CHANGELOG.md)でマイグレーション情報を確認する
|
|
||||||
7. `docker-compose stop && docker-compose up -d`
|
|
||||||
|
|
||||||
### cliコマンドを実行する方法:
|
|
||||||
|
|
||||||
`docker-compose run --rm web node built/tools/mark-admin @example`
|
|
||||||
|
|
||||||
----------------------------------------------------------------
|
|
||||||
|
|
||||||
なにかお困りのことがありましたらお気軽にご連絡ください。
|
|
@@ -1,96 +0,0 @@
|
|||||||
Docker 部署指南
|
|
||||||
================================================================
|
|
||||||
|
|
||||||
这份指南描述了如何使用Docker安装并设置 Misskey 。
|
|
||||||
|
|
||||||
- [日本語版もあります - Japanese version also available](./docker.ja.md)
|
|
||||||
- [英語版もあります - English version also available](./docker.en.md)
|
|
||||||
|
|
||||||
----------------------------------------------------------------
|
|
||||||
|
|
||||||
*1.* 下载 Misskey
|
|
||||||
----------------------------------------------------------------
|
|
||||||
1. 克隆 Misskey 项目的 master 分支。
|
|
||||||
|
|
||||||
`git clone -b master git://github.com/misskey-dev/misskey.git`
|
|
||||||
|
|
||||||
2. 进入 misskey 文件夹。
|
|
||||||
|
|
||||||
`cd misskey`
|
|
||||||
|
|
||||||
3. 检查 [最新发布版](https://github.com/misskey-dev/misskey/releases/latest) 标签。
|
|
||||||
|
|
||||||
`git checkout master`
|
|
||||||
|
|
||||||
*2.* 配置 Misskey
|
|
||||||
----------------------------------------------------------------
|
|
||||||
|
|
||||||
可以按照如下方式创建配置文件:
|
|
||||||
|
|
||||||
``` bash
|
|
||||||
cd .config
|
|
||||||
cp example.yml default.yml
|
|
||||||
cp docker_example.env docker.env
|
|
||||||
```
|
|
||||||
|
|
||||||
### `default.yml`
|
|
||||||
|
|
||||||
这个文件的编辑工作基本与非 Docker 环境的版本相同。
|
|
||||||
但请注意, Postgresql、 Redis 和 Elasticsearch 的 **主机名(hostname)** 配置不应该是 `localhost` ,它们被设置在 `docker-compose.yml` 文件中。
|
|
||||||
以下是默认的主机名:
|
|
||||||
|
|
||||||
| 服务 | 主机名 |
|
|
||||||
|---------------|----------|
|
|
||||||
| Postgresql | `db` |
|
|
||||||
| Redis | `redis` |
|
|
||||||
| Elasticsearch | `es` |
|
|
||||||
|
|
||||||
### `docker.env`
|
|
||||||
|
|
||||||
在这个文件中配置 Postgresql 。
|
|
||||||
至少需要如下这些配置:
|
|
||||||
|
|
||||||
| 名称 | 描述 |
|
|
||||||
|---------------------|---------------|
|
|
||||||
| `POSTGRES_PASSWORD` | 数据库密码 |
|
|
||||||
| `POSTGRES_USER` | 数据库用户名 |
|
|
||||||
| `POSTGRES_DB` | 数据库名 |
|
|
||||||
|
|
||||||
*3.* 配置 Docker
|
|
||||||
----------------------------------------------------------------
|
|
||||||
编辑 `docker-compose.yml` 文件。
|
|
||||||
|
|
||||||
*4.* 构建 Misskey
|
|
||||||
----------------------------------------------------------------
|
|
||||||
使用如下的方式构建Misskey:
|
|
||||||
|
|
||||||
`docker-compose build`
|
|
||||||
|
|
||||||
*5.* 初始化数据库
|
|
||||||
----------------------------------------------------------------
|
|
||||||
``` bash
|
|
||||||
docker-compose run --rm web yarn run init
|
|
||||||
```
|
|
||||||
|
|
||||||
*6.* 完成了!
|
|
||||||
----------------------------------------------------------------
|
|
||||||
干得不错!现在您拥有了一个可以运行Misskey的环境啦。
|
|
||||||
|
|
||||||
### 正常启动
|
|
||||||
只需要 `docker-compose up -d` 即可。玩得愉快!
|
|
||||||
|
|
||||||
### 如何将您的 Misskey 服务器升级至最新版本
|
|
||||||
1. `git stash`
|
|
||||||
2. `git checkout master`
|
|
||||||
3. `git pull`
|
|
||||||
4. `git stash pop`
|
|
||||||
5. `docker-compose build`
|
|
||||||
6. 检查 [更新日志](../CHANGELOG.md) 以获取升级迁移信息。
|
|
||||||
7. `docker-compose stop && docker-compose up -d`
|
|
||||||
|
|
||||||
### 如何执行 [控制台指令](manage.zh.md):
|
|
||||||
`docker-compose run --rm web node built/tools/mark-admin @example`
|
|
||||||
|
|
||||||
----------------------------------------------------------------
|
|
||||||
|
|
||||||
如果您有任何疑问或是困惑,欢迎与我们联系!
|
|
@@ -1,71 +0,0 @@
|
|||||||
# Sample nginx configuration for Misskey
|
|
||||||
#
|
|
||||||
# 1. Replace example.tld to your domain
|
|
||||||
# 2. Copy to /etc/nginx/sites-available/ and then symlink from /etc/nginx/sites-enabled/
|
|
||||||
# or copy to /etc/nginx/conf.d/
|
|
||||||
|
|
||||||
# For WebSocket
|
|
||||||
map $http_upgrade $connection_upgrade {
|
|
||||||
default upgrade;
|
|
||||||
'' close;
|
|
||||||
}
|
|
||||||
|
|
||||||
proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=cache1:16m max_size=1g inactive=720m use_temp_path=off;
|
|
||||||
|
|
||||||
server {
|
|
||||||
listen 80;
|
|
||||||
listen [::]:80;
|
|
||||||
server_name example.tld;
|
|
||||||
|
|
||||||
# For SSL domain validation
|
|
||||||
root /var/www/html;
|
|
||||||
location /.well-known/acme-challenge/ { allow all; }
|
|
||||||
location /.well-known/pki-validation/ { allow all; }
|
|
||||||
location / { return 301 https://$server_name$request_uri; }
|
|
||||||
}
|
|
||||||
|
|
||||||
server {
|
|
||||||
listen 443 ssl http2;
|
|
||||||
listen [::]:443 ssl http2;
|
|
||||||
server_name example.tld;
|
|
||||||
ssl_session_cache shared:ssl_session_cache:10m;
|
|
||||||
|
|
||||||
# To use Let's Encrypt certificate
|
|
||||||
ssl_certificate /etc/letsencrypt/live/example.tld/fullchain.pem;
|
|
||||||
ssl_certificate_key /etc/letsencrypt/live/example.tld/privkey.pem;
|
|
||||||
|
|
||||||
# To use Debian/Ubuntu's self-signed certificate (For testing or before issuing a certificate)
|
|
||||||
#ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
|
|
||||||
#ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
|
|
||||||
|
|
||||||
# SSL protocol settings
|
|
||||||
ssl_protocols TLSv1.2;
|
|
||||||
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:AES128-SHA;
|
|
||||||
ssl_prefer_server_ciphers on;
|
|
||||||
|
|
||||||
# Change to your upload limit
|
|
||||||
client_max_body_size 80m;
|
|
||||||
|
|
||||||
# Proxy to Node
|
|
||||||
location / {
|
|
||||||
proxy_pass http://127.0.0.1:3000;
|
|
||||||
proxy_set_header Host $host;
|
|
||||||
proxy_http_version 1.1;
|
|
||||||
proxy_redirect off;
|
|
||||||
|
|
||||||
# If it's behind another reverse proxy or CDN, remove the following.
|
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
||||||
proxy_set_header X-Forwarded-Proto https;
|
|
||||||
|
|
||||||
# For WebSocket
|
|
||||||
proxy_set_header Upgrade $http_upgrade;
|
|
||||||
proxy_set_header Connection $connection_upgrade;
|
|
||||||
|
|
||||||
# Cache settings
|
|
||||||
proxy_cache cache1;
|
|
||||||
proxy_cache_lock on;
|
|
||||||
proxy_cache_use_stale updating;
|
|
||||||
add_header X-Cache $upstream_cache_status;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,14 +0,0 @@
|
|||||||
# Management guide
|
|
||||||
|
|
||||||
## Check the status of the job queue
|
|
||||||
coming soon
|
|
||||||
|
|
||||||
## Mark as 'admin' user
|
|
||||||
``` shell
|
|
||||||
node built/tools/mark-admin (Username)
|
|
||||||
```
|
|
||||||
|
|
||||||
e.g.
|
|
||||||
``` shell
|
|
||||||
node built/tools/mark-admin @syuilo
|
|
||||||
```
|
|
@@ -1,14 +0,0 @@
|
|||||||
# Guide d'administration
|
|
||||||
|
|
||||||
## Vérifier le status de la file d'attente des taches
|
|
||||||
coming soon
|
|
||||||
|
|
||||||
## Marquer un utilisateur en tant que 'admin'
|
|
||||||
``` shell
|
|
||||||
node built/tools/mark-admin (nom d'utilisateur)
|
|
||||||
```
|
|
||||||
|
|
||||||
Exemple :
|
|
||||||
``` shell
|
|
||||||
node built/tools/mark-admin @syuilo
|
|
||||||
```
|
|
@@ -1,14 +0,0 @@
|
|||||||
# 運営ガイド
|
|
||||||
|
|
||||||
## ジョブキューの状態を調べる
|
|
||||||
coming soon
|
|
||||||
|
|
||||||
## 管理者ユーザーを設定する
|
|
||||||
``` shell
|
|
||||||
node built/tools/mark-admin (ユーザー名)
|
|
||||||
```
|
|
||||||
|
|
||||||
例:
|
|
||||||
``` shell
|
|
||||||
node built/tools/mark-admin @syuilo
|
|
||||||
```
|
|
@@ -1,14 +0,0 @@
|
|||||||
# 运营指南
|
|
||||||
|
|
||||||
## 检查任务队列的状态
|
|
||||||
即将到来……
|
|
||||||
|
|
||||||
## 设置用户为管理员
|
|
||||||
``` shell
|
|
||||||
node built/tools/mark-admin (用户名)
|
|
||||||
```
|
|
||||||
|
|
||||||
样例
|
|
||||||
``` shell
|
|
||||||
node built/tools/mark-admin @syuilo
|
|
||||||
```
|
|
146
docs/setup.en.md
146
docs/setup.en.md
@@ -1,146 +0,0 @@
|
|||||||
Misskey Setup and Installation Guide
|
|
||||||
================================================================
|
|
||||||
|
|
||||||
We thank you for your interest in setting up your Misskey server!
|
|
||||||
This guide describes how to install and setup Misskey.
|
|
||||||
|
|
||||||
- [Japanese version also available - 日本語版もあります](./setup.ja.md)
|
|
||||||
- [Simplified Chinese version also available - 简体中文版同样可用](./setup.zh.md)
|
|
||||||
|
|
||||||
----------------------------------------------------------------
|
|
||||||
|
|
||||||
*1.* Create Misskey user
|
|
||||||
----------------------------------------------------------------
|
|
||||||
Running misskey as root is not a good idea so we create a user for that.
|
|
||||||
In debian for exemple :
|
|
||||||
|
|
||||||
```
|
|
||||||
adduser --disabled-password --disabled-login misskey
|
|
||||||
```
|
|
||||||
|
|
||||||
*2.* Install dependencies
|
|
||||||
----------------------------------------------------------------
|
|
||||||
Please install and setup these softwares:
|
|
||||||
|
|
||||||
#### Dependencies :package:
|
|
||||||
* **[Node.js](https://nodejs.org/en/)** (12.x, 14.x)
|
|
||||||
* **[PostgreSQL](https://www.postgresql.org/)** (>= 10)
|
|
||||||
* **[Redis](https://redis.io/)**
|
|
||||||
|
|
||||||
##### Optional
|
|
||||||
* [Yarn](https://yarnpkg.com/) *Optional but recommended for security reason. If you won't install it, use `npx yarn` instead of `yarn`.*
|
|
||||||
* [Elasticsearch](https://www.elastic.co/) - required to enable the search feature
|
|
||||||
* [FFmpeg](https://www.ffmpeg.org/)
|
|
||||||
|
|
||||||
*3.* Install Misskey
|
|
||||||
----------------------------------------------------------------
|
|
||||||
1. Connect to misskey user.
|
|
||||||
|
|
||||||
`su - misskey`
|
|
||||||
|
|
||||||
2. Clone the misskey repo from master branch.
|
|
||||||
|
|
||||||
`git clone -b master git://github.com/misskey-dev/misskey.git`
|
|
||||||
|
|
||||||
3. Navigate to misskey directory
|
|
||||||
|
|
||||||
`cd misskey`
|
|
||||||
|
|
||||||
4. Checkout to the [latest release](https://github.com/misskey-dev/misskey/releases/latest)
|
|
||||||
|
|
||||||
`git checkout master`
|
|
||||||
|
|
||||||
5. Install misskey dependencies.
|
|
||||||
|
|
||||||
`yarn`
|
|
||||||
|
|
||||||
*4.* Configure Misskey
|
|
||||||
----------------------------------------------------------------
|
|
||||||
1. Copy the `.config/example.yml` and rename it to `default.yml`.
|
|
||||||
|
|
||||||
`cp .config/example.yml .config/default.yml`
|
|
||||||
|
|
||||||
2. Edit `default.yml`
|
|
||||||
|
|
||||||
*5.* Build Misskey
|
|
||||||
----------------------------------------------------------------
|
|
||||||
|
|
||||||
Build misskey with the following:
|
|
||||||
|
|
||||||
`NODE_ENV=production yarn build`
|
|
||||||
|
|
||||||
If you're on Debian, you will need to install the `build-essential`, `python` package.
|
|
||||||
|
|
||||||
If you're still encountering errors about some modules, use node-gyp:
|
|
||||||
|
|
||||||
1. `npx node-gyp configure`
|
|
||||||
2. `npx node-gyp build`
|
|
||||||
3. `NODE_ENV=production yarn build`
|
|
||||||
|
|
||||||
*6.* Init DB
|
|
||||||
----------------------------------------------------------------
|
|
||||||
``` shell
|
|
||||||
yarn run init
|
|
||||||
```
|
|
||||||
|
|
||||||
*7.* That is it.
|
|
||||||
----------------------------------------------------------------
|
|
||||||
Well done! Now, you have an environment that run to Misskey.
|
|
||||||
|
|
||||||
### Launch normally
|
|
||||||
Just `NODE_ENV=production npm start`. GLHF!
|
|
||||||
|
|
||||||
### Launch with systemd
|
|
||||||
|
|
||||||
1. Create a systemd service here
|
|
||||||
|
|
||||||
`/etc/systemd/system/misskey.service`
|
|
||||||
|
|
||||||
2. Edit it, and paste this and save:
|
|
||||||
|
|
||||||
```
|
|
||||||
[Unit]
|
|
||||||
Description=Misskey daemon
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=simple
|
|
||||||
User=misskey
|
|
||||||
ExecStart=/usr/bin/npm start
|
|
||||||
WorkingDirectory=/home/misskey/misskey
|
|
||||||
Environment="NODE_ENV=production"
|
|
||||||
TimeoutSec=60
|
|
||||||
StandardOutput=syslog
|
|
||||||
StandardError=syslog
|
|
||||||
SyslogIdentifier=misskey
|
|
||||||
Restart=always
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
```
|
|
||||||
|
|
||||||
3. Reload systemd and enable the misskey service.
|
|
||||||
|
|
||||||
`systemctl daemon-reload ; systemctl enable misskey`
|
|
||||||
|
|
||||||
4. Start the misskey service.
|
|
||||||
|
|
||||||
`systemctl start misskey`
|
|
||||||
|
|
||||||
You can check if the service is running with `systemctl status misskey`.
|
|
||||||
|
|
||||||
### How to update your Misskey server to the latest version
|
|
||||||
1. `git checkout master`
|
|
||||||
2. `git pull`
|
|
||||||
3. `yarn install`
|
|
||||||
4. `NODE_ENV=production yarn build`
|
|
||||||
5. `yarn migrate`
|
|
||||||
6. Restart your Misskey process to apply changes
|
|
||||||
7. Enjoy
|
|
||||||
|
|
||||||
If you encounter any problems with updating, please try the following:
|
|
||||||
1. `yarn clean` or `yarn cleanall`
|
|
||||||
2. Retry update (Don't forget `yarn install`
|
|
||||||
|
|
||||||
----------------------------------------------------------------
|
|
||||||
|
|
||||||
If you have any questions or troubles, feel free to contact us!
|
|
135
docs/setup.fr.md
135
docs/setup.fr.md
@@ -1,135 +0,0 @@
|
|||||||
Guide d'installation et de configuration de Misskey
|
|
||||||
================================================================
|
|
||||||
|
|
||||||
Nous vous remerçions de l'intrêt que vous manifestez pour l'installation de votre propre instance Misskey !
|
|
||||||
Ce guide décrit les étapes à suivre afin d'installer et de configurer une instance Misskey.
|
|
||||||
|
|
||||||
- [La version en japonnais est également disponible sur - 日本語版もあります](./setup.ja.md)
|
|
||||||
- [Version anglaise également disponible - English version also available - 英語版もあります](./setup.en.md)
|
|
||||||
- [Version Chinois simplifié également disponible - Simplified Chinese version also available - 简体中文版同样可用](./setup.zh.md)
|
|
||||||
|
|
||||||
----------------------------------------------------------------
|
|
||||||
|
|
||||||
*1.* Création de l'utilisateur Misskey
|
|
||||||
----------------------------------------------------------------
|
|
||||||
Executer misskey en tant que super-utilisateur étant une mauvaise idée, nous allons créer un utilisateur dédié.
|
|
||||||
Sous Debian, par exemple :
|
|
||||||
|
|
||||||
```
|
|
||||||
adduser --disabled-password --disabled-login misskey
|
|
||||||
```
|
|
||||||
|
|
||||||
*2.* Installation des dépendances
|
|
||||||
----------------------------------------------------------------
|
|
||||||
Installez les paquets suivants :
|
|
||||||
|
|
||||||
#### Dépendences :package:
|
|
||||||
* **[Node.js](https://nodejs.org/en/)** (12.x, 14.x)
|
|
||||||
* **[PostgreSQL](https://www.postgresql.org/)** (>= 10)
|
|
||||||
* **[Redis](https://redis.io/)**
|
|
||||||
|
|
||||||
##### Optionnels
|
|
||||||
* [Yarn](https://yarnpkg.com/) - *recommander pour des raisons de sécurité. Si vous ne l'installez pas, utilisez `npx yarn` au lieu de` yarn`.*
|
|
||||||
* [Elasticsearch](https://www.elastic.co/) - *requis pour pouvoir activer la fonctionnalité de recherche.*
|
|
||||||
* [FFmpeg](https://www.ffmpeg.org/)
|
|
||||||
|
|
||||||
*3.* Installation de Misskey
|
|
||||||
----------------------------------------------------------------
|
|
||||||
1. Basculez vers l'utilisateur misskey.
|
|
||||||
|
|
||||||
`su - misskey`
|
|
||||||
|
|
||||||
2. Clonez la branche master du dépôt misskey.
|
|
||||||
|
|
||||||
`git clone -b master git://github.com/misskey-dev/misskey.git`
|
|
||||||
|
|
||||||
3. Accédez au dossier misskey.
|
|
||||||
|
|
||||||
`cd misskey`
|
|
||||||
|
|
||||||
4. Checkout sur le tag de la [version la plus récente](https://github.com/misskey-dev/misskey/releases/latest)
|
|
||||||
|
|
||||||
`git checkout master`
|
|
||||||
|
|
||||||
5. Installez les dépendances de misskey.
|
|
||||||
|
|
||||||
`yarn install`
|
|
||||||
|
|
||||||
*4.* Création du fichier de configuration
|
|
||||||
----------------------------------------------------------------
|
|
||||||
1. Copiez le fichier `.config/example.yml` et renommez-le`default.yml`.
|
|
||||||
|
|
||||||
`cp .config/example.yml .config/default.yml`
|
|
||||||
|
|
||||||
2. Editez le fichier `default.yml`
|
|
||||||
|
|
||||||
*5.* Construction de Misskey
|
|
||||||
----------------------------------------------------------------
|
|
||||||
|
|
||||||
Construisez Misskey comme ceci :
|
|
||||||
|
|
||||||
`NODE_ENV=production yarn build`
|
|
||||||
|
|
||||||
Si vous êtes sous Debian, vous serez amené à installer les paquets `build-essential` et `python`.
|
|
||||||
|
|
||||||
Si vous rencontrez des erreurs concernant certains modules, utilisez node-gyp:
|
|
||||||
|
|
||||||
1. `npx node-gyp configure`
|
|
||||||
2. `npx node-gyp build`
|
|
||||||
3. `NODE_ENV=production yarn build`
|
|
||||||
|
|
||||||
*6.* C'est tout.
|
|
||||||
----------------------------------------------------------------
|
|
||||||
Excellent ! Maintenant, vous avez un environnement prêt pour lancer Misskey
|
|
||||||
|
|
||||||
### Lancement conventionnel
|
|
||||||
Lancez tout simplement `NODE_ENV=production yarn start`. Bonne chance et amusez-vous bien !
|
|
||||||
|
|
||||||
### Démarrage avec systemd
|
|
||||||
|
|
||||||
1. Créez un service systemd sur
|
|
||||||
|
|
||||||
`/etc/systemd/system/misskey.service`
|
|
||||||
|
|
||||||
2. Editez-le puis copiez et coller ceci dans le fichier :
|
|
||||||
|
|
||||||
```
|
|
||||||
[Unit]
|
|
||||||
Description=Misskey daemon
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=simple
|
|
||||||
User=misskey
|
|
||||||
ExecStart=/usr/bin/npm start
|
|
||||||
WorkingDirectory=/home/misskey/misskey
|
|
||||||
Environment="NODE_ENV=production"
|
|
||||||
TimeoutSec=60
|
|
||||||
StandardOutput=syslog
|
|
||||||
StandardError=syslog
|
|
||||||
SyslogIdentifier=misskey
|
|
||||||
Restart=always
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
```
|
|
||||||
|
|
||||||
3. Redémarre systemd et active le service misskey.
|
|
||||||
|
|
||||||
`systemctl daemon-reload ; systemctl enable misskey`
|
|
||||||
|
|
||||||
4. Démarre le service misskey.
|
|
||||||
|
|
||||||
`systemctl start misskey`
|
|
||||||
|
|
||||||
Vous pouvez vérifier si le service a démarré en utilisant la commande `systemctl status misskey`.
|
|
||||||
|
|
||||||
### Méthode de mise à jour vers la plus récente version de Misskey
|
|
||||||
1. `git checkout master`
|
|
||||||
2. `git pull`
|
|
||||||
3. `yarn install`
|
|
||||||
4. `NODE_ENV=production yarn build`
|
|
||||||
5. `yarn migrate`
|
|
||||||
|
|
||||||
----------------------------------------------------------------
|
|
||||||
|
|
||||||
Si vous rencontrez des difficultés ou avez d'autres questions, n'hésitez pas à nous contacter !
|
|
144
docs/setup.ja.md
144
docs/setup.ja.md
@@ -1,144 +0,0 @@
|
|||||||
Misskey構築の手引き
|
|
||||||
================================================================
|
|
||||||
|
|
||||||
Misskeyサーバーの構築にご関心をお寄せいただきありがとうございます!
|
|
||||||
このガイドではMisskeyのインストール・セットアップ方法について解説します。
|
|
||||||
|
|
||||||
- [英語版もあります - English version also available](./setup.en.md)
|
|
||||||
- [简体中文版同样可用 - Simplified Chinese version also available](./setup.zh.md)
|
|
||||||
|
|
||||||
----------------------------------------------------------------
|
|
||||||
|
|
||||||
*1.* Misskeyユーザーの作成
|
|
||||||
----------------------------------------------------------------
|
|
||||||
Misskeyはrootユーザーで実行しない方がよいため、代わりにユーザーを作成します。
|
|
||||||
Debianの例:
|
|
||||||
|
|
||||||
```
|
|
||||||
adduser --disabled-password --disabled-login misskey
|
|
||||||
```
|
|
||||||
|
|
||||||
*2.* 依存関係をインストールする
|
|
||||||
----------------------------------------------------------------
|
|
||||||
これらのソフトウェアをインストール・設定してください:
|
|
||||||
|
|
||||||
#### 依存関係 :package:
|
|
||||||
* **[Node.js](https://nodejs.org/en/)** (12.x, 14.x)
|
|
||||||
* **[PostgreSQL](https://www.postgresql.org/)** (10以上)
|
|
||||||
* **[Redis](https://redis.io/)**
|
|
||||||
|
|
||||||
##### オプション
|
|
||||||
* [Yarn](https://yarnpkg.com/)
|
|
||||||
* セキュリティの観点から推奨されます。 yarn をインストールしない方針の場合は、文章中の `yarn` を適宜 `npx yarn` と読み替えてください。
|
|
||||||
* [Elasticsearch](https://www.elastic.co/)
|
|
||||||
* 検索機能を有効にするためにはインストールが必要です。
|
|
||||||
* [FFmpeg](https://www.ffmpeg.org/)
|
|
||||||
|
|
||||||
*3.* Misskeyのインストール
|
|
||||||
----------------------------------------------------------------
|
|
||||||
1. misskeyユーザーを使用
|
|
||||||
|
|
||||||
`su - misskey`
|
|
||||||
|
|
||||||
2. masterブランチからMisskeyレポジトリをクローン
|
|
||||||
|
|
||||||
`git clone -b master git://github.com/misskey-dev/misskey.git`
|
|
||||||
|
|
||||||
3. misskeyディレクトリに移動
|
|
||||||
|
|
||||||
`cd misskey`
|
|
||||||
|
|
||||||
4. [最新のリリース](https://github.com/misskey-dev/misskey/releases/latest)を確認
|
|
||||||
|
|
||||||
`git checkout master`
|
|
||||||
|
|
||||||
5. Misskeyの依存パッケージをインストール
|
|
||||||
|
|
||||||
`yarn install`
|
|
||||||
|
|
||||||
*4.* 設定ファイルを作成する
|
|
||||||
----------------------------------------------------------------
|
|
||||||
1. `.config/example.yml`をコピーし名前を`default.yml`にする。
|
|
||||||
|
|
||||||
`cp .config/example.yml .config/default.yml`
|
|
||||||
|
|
||||||
2. `default.yml` を編集する。
|
|
||||||
|
|
||||||
*5.* Misskeyのビルド
|
|
||||||
----------------------------------------------------------------
|
|
||||||
|
|
||||||
次のコマンドでMisskeyをビルドしてください:
|
|
||||||
|
|
||||||
`NODE_ENV=production yarn build`
|
|
||||||
|
|
||||||
Debianをお使いであれば、`build-essential`パッケージをインストールする必要があります。
|
|
||||||
|
|
||||||
何らかのモジュールでエラーが発生する場合はnode-gypを使ってください:
|
|
||||||
1. `npx node-gyp configure`
|
|
||||||
2. `npx node-gyp build`
|
|
||||||
3. `NODE_ENV=production yarn build`
|
|
||||||
|
|
||||||
*6.* データベースを初期化
|
|
||||||
----------------------------------------------------------------
|
|
||||||
``` shell
|
|
||||||
yarn run init
|
|
||||||
```
|
|
||||||
|
|
||||||
*7.* 以上です!
|
|
||||||
----------------------------------------------------------------
|
|
||||||
お疲れ様でした。これでMisskeyを動かす準備は整いました。
|
|
||||||
|
|
||||||
### 通常起動
|
|
||||||
`NODE_ENV=production yarn start`するだけです。GLHF!
|
|
||||||
|
|
||||||
### systemdを用いた起動
|
|
||||||
1. systemdサービスのファイルを作成
|
|
||||||
|
|
||||||
`/etc/systemd/system/misskey.service`
|
|
||||||
|
|
||||||
2. エディタで開き、以下のコードを貼り付けて保存:
|
|
||||||
|
|
||||||
```
|
|
||||||
[Unit]
|
|
||||||
Description=Misskey daemon
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=simple
|
|
||||||
User=misskey
|
|
||||||
ExecStart=/usr/bin/npm start
|
|
||||||
WorkingDirectory=/home/misskey/misskey
|
|
||||||
Environment="NODE_ENV=production"
|
|
||||||
TimeoutSec=60
|
|
||||||
StandardOutput=syslog
|
|
||||||
StandardError=syslog
|
|
||||||
SyslogIdentifier=misskey
|
|
||||||
Restart=always
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
```
|
|
||||||
|
|
||||||
CentOSで1024以下のポートを使用してMisskeyを使用する場合は`ExecStart=/usr/bin/sudo /usr/bin/npm start`に変更する必要があります。
|
|
||||||
|
|
||||||
3. systemdを再読み込みしmisskeyサービスを有効化
|
|
||||||
|
|
||||||
`systemctl daemon-reload; systemctl enable misskey`
|
|
||||||
|
|
||||||
4. misskeyサービスの起動
|
|
||||||
|
|
||||||
`systemctl start misskey`
|
|
||||||
|
|
||||||
`systemctl status misskey`と入力すると、サービスの状態を調べることができます。
|
|
||||||
|
|
||||||
### Misskeyを最新バージョンにアップデートする方法:
|
|
||||||
1. `git checkout master`
|
|
||||||
2. `git pull`
|
|
||||||
3. `yarn install`
|
|
||||||
4. `NODE_ENV=production yarn build`
|
|
||||||
5. `yarn migrate`
|
|
||||||
|
|
||||||
なにか問題が発生した場合は、`yarn clean`または`yarn cleanall`すると直る場合があります。
|
|
||||||
|
|
||||||
----------------------------------------------------------------
|
|
||||||
|
|
||||||
なにかお困りのことがありましたらお気軽にご連絡ください。
|
|
146
docs/setup.zh.md
146
docs/setup.zh.md
@@ -1,146 +0,0 @@
|
|||||||
Misskey 设置和安装指南
|
|
||||||
================================================================
|
|
||||||
|
|
||||||
非常感谢您对构建 Misskey 服务器的关注!
|
|
||||||
这份指南描述了 Misskey 的安装与设置流程。
|
|
||||||
|
|
||||||
- [日本語版もあります - Japanese version also available](./setup.ja.md)
|
|
||||||
- [英語版もあります - English version also available](./setup.en.md)
|
|
||||||
|
|
||||||
----------------------------------------------------------------
|
|
||||||
|
|
||||||
*1.* 创建 Misskey 用户
|
|
||||||
----------------------------------------------------------------
|
|
||||||
直接使用 root 用户来运行 misskey 也许并不是一个好主意,因此我们有必要创建一个专用的用户。
|
|
||||||
以 Debian 为例:
|
|
||||||
|
|
||||||
``` bash
|
|
||||||
adduser --disabled-password --disabled-login misskey
|
|
||||||
```
|
|
||||||
|
|
||||||
*2.* 安装依赖
|
|
||||||
----------------------------------------------------------------
|
|
||||||
请安装并设置如下这些软件:
|
|
||||||
|
|
||||||
#### Dependencies :package:
|
|
||||||
* **[Node.js](https://nodejs.org/en/)** (12.x, 14.x)
|
|
||||||
* **[PostgreSQL](https://www.postgresql.org/)** (>= 10)
|
|
||||||
* **[Redis](https://redis.io/)**
|
|
||||||
|
|
||||||
##### Optional
|
|
||||||
* [Yarn](https://yarnpkg.com/) *可选,但出于安全因素考虑还是推荐安装。如果您没有安装, 您需要使用 `npx yarn` 来代替 `yarn`.*
|
|
||||||
* [Elasticsearch](https://www.elastic.co/) - 为了启用搜索功能,这个搜索引擎是有必要的。
|
|
||||||
* [FFmpeg](https://www.ffmpeg.org/)
|
|
||||||
|
|
||||||
*3.* 安装 Misskey
|
|
||||||
----------------------------------------------------------------
|
|
||||||
1. 连接至 misskey 用户.
|
|
||||||
|
|
||||||
`su - misskey`
|
|
||||||
|
|
||||||
2. 克隆 Misskey 项目的 master 分支。
|
|
||||||
|
|
||||||
`git clone -b master git://github.com/misskey-dev/misskey.git`
|
|
||||||
|
|
||||||
3. 进入 misskey 文件夹。
|
|
||||||
|
|
||||||
`cd misskey`
|
|
||||||
|
|
||||||
4. 检查 [最新发布版](https://github.com/misskey-dev/misskey/releases/latest) 标签。
|
|
||||||
|
|
||||||
`git checkout master`
|
|
||||||
|
|
||||||
5. 安装 Misskey 的依赖。
|
|
||||||
|
|
||||||
`yarn`
|
|
||||||
|
|
||||||
*4.* 配置 Misskey
|
|
||||||
----------------------------------------------------------------
|
|
||||||
1. 复制 `.config/example.yml` 并重命名为 `default.yml`。
|
|
||||||
|
|
||||||
`cp .config/example.yml .config/default.yml`
|
|
||||||
|
|
||||||
2. 编辑 `default.yml`
|
|
||||||
|
|
||||||
*5.* 构建 Misskey
|
|
||||||
----------------------------------------------------------------
|
|
||||||
|
|
||||||
使用如下的指令构建 Misskey :
|
|
||||||
|
|
||||||
`NODE_ENV=production yarn build`
|
|
||||||
|
|
||||||
如果您使用的是 Debian , 您需要安装 `build-essential`, `python` 环境包。
|
|
||||||
|
|
||||||
如果您仍然遇到有关某些模块的错误,您可以使用 node-gyp:
|
|
||||||
|
|
||||||
1. `npx node-gyp configure`
|
|
||||||
2. `npx node-gyp build`
|
|
||||||
3. `NODE_ENV=production yarn build`
|
|
||||||
|
|
||||||
*6.* 初始化数据库
|
|
||||||
----------------------------------------------------------------
|
|
||||||
``` bash
|
|
||||||
yarn run init
|
|
||||||
```
|
|
||||||
|
|
||||||
*7.* 完成了!
|
|
||||||
----------------------------------------------------------------
|
|
||||||
干得不错!现在您拥有了一个可以运行Misskey的环境啦。
|
|
||||||
|
|
||||||
### 正常启动
|
|
||||||
只需要 `NODE_ENV=production npm start` 即可。玩得愉快!
|
|
||||||
|
|
||||||
### 使用 systemd 来启动
|
|
||||||
|
|
||||||
1. 在此处创建一个 systemd 服务:
|
|
||||||
|
|
||||||
`/etc/systemd/system/misskey.service`
|
|
||||||
|
|
||||||
2. 编辑它,粘贴如下内容并保存:
|
|
||||||
|
|
||||||
```
|
|
||||||
[Unit]
|
|
||||||
Description=Misskey daemon
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=simple
|
|
||||||
User=misskey
|
|
||||||
ExecStart=/usr/bin/npm start
|
|
||||||
WorkingDirectory=/home/misskey/misskey
|
|
||||||
Environment="NODE_ENV=production"
|
|
||||||
TimeoutSec=60
|
|
||||||
StandardOutput=syslog
|
|
||||||
StandardError=syslog
|
|
||||||
SyslogIdentifier=misskey
|
|
||||||
Restart=always
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
```
|
|
||||||
|
|
||||||
3. 重启 systemd 并设置 misskey 服务自动启动:
|
|
||||||
|
|
||||||
`systemctl daemon-reload ; systemctl enable misskey`
|
|
||||||
|
|
||||||
4. 启动 misskey 服务:
|
|
||||||
|
|
||||||
`systemctl start misskey`
|
|
||||||
|
|
||||||
您可以使用 `systemctl status misskey` 来检查服务是否正在运行。
|
|
||||||
|
|
||||||
### 如何将您的 Misskey 服务器升级至最新版本
|
|
||||||
1. `git checkout master`
|
|
||||||
2. `git pull`
|
|
||||||
3. `yarn install`
|
|
||||||
4. `NODE_ENV=production yarn build`
|
|
||||||
5. `yarn migrate`
|
|
||||||
6. 重启您的 Misskey 进程来应用改变。
|
|
||||||
7. 尽情享受吧!
|
|
||||||
|
|
||||||
如果您在更新时遇到任何问题,请尝试以下操作:
|
|
||||||
1. `yarn clean` 或是 `yarn cleanall`
|
|
||||||
2. 重试升级 (请不要忘记 `yarn install` )
|
|
||||||
|
|
||||||
----------------------------------------------------------------
|
|
||||||
|
|
||||||
如果您有任何疑问或是困惑,欢迎与我们联系!
|
|
62
gulpfile.js
Normal file
62
gulpfile.js
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
/**
|
||||||
|
* Gulp tasks
|
||||||
|
*/
|
||||||
|
|
||||||
|
const fs = require('fs');
|
||||||
|
const gulp = require('gulp');
|
||||||
|
const replace = require('gulp-replace');
|
||||||
|
const terser = require('gulp-terser');
|
||||||
|
const cssnano = require('gulp-cssnano');
|
||||||
|
|
||||||
|
const locales = require('./locales');
|
||||||
|
const meta = require('./package.json');
|
||||||
|
|
||||||
|
gulp.task('copy:backend:views', () =>
|
||||||
|
gulp.src('./packages/backend/src/server/web/views/**/*').pipe(gulp.dest('./packages/backend/built/server/web/views'))
|
||||||
|
);
|
||||||
|
|
||||||
|
gulp.task('copy:client:fonts', () =>
|
||||||
|
gulp.src('./packages/client/node_modules/three/examples/fonts/**/*').pipe(gulp.dest('./built/_client_dist_/fonts/'))
|
||||||
|
);
|
||||||
|
|
||||||
|
gulp.task('copy:client:locales', cb => {
|
||||||
|
fs.mkdirSync('./built/_client_dist_/locales', { recursive: true });
|
||||||
|
|
||||||
|
const v = { '_version_': meta.version };
|
||||||
|
|
||||||
|
for (const [lang, locale] of Object.entries(locales)) {
|
||||||
|
fs.writeFileSync(`./built/_client_dist_/locales/${lang}.${meta.version}.json`, JSON.stringify({ ...locale, ...v }), 'utf-8');
|
||||||
|
}
|
||||||
|
|
||||||
|
cb();
|
||||||
|
});
|
||||||
|
|
||||||
|
gulp.task('build:backend:script', () => {
|
||||||
|
return gulp.src(['./packages/backend/src/server/web/boot.js', './packages/backend/src/server/web/bios.js', './packages/backend/src/server/web/cli.js'])
|
||||||
|
.pipe(replace('VERSION', JSON.stringify(meta.version)))
|
||||||
|
.pipe(replace('LANGS', JSON.stringify(Object.keys(locales))))
|
||||||
|
.pipe(terser({
|
||||||
|
toplevel: true
|
||||||
|
}))
|
||||||
|
.pipe(gulp.dest('./packages/backend/built/server/web/'));
|
||||||
|
});
|
||||||
|
|
||||||
|
gulp.task('build:backend:style', () => {
|
||||||
|
return gulp.src(['./packages/backend/src/server/web/style.css', './packages/backend/src/server/web/bios.css', './packages/backend/src/server/web/cli.css'])
|
||||||
|
.pipe(cssnano({
|
||||||
|
zindex: false
|
||||||
|
}))
|
||||||
|
.pipe(gulp.dest('./packages/backend/built/server/web/'));
|
||||||
|
});
|
||||||
|
|
||||||
|
gulp.task('build', gulp.parallel(
|
||||||
|
'copy:client:locales', 'copy:backend:views', 'build:backend:script', 'build:backend:style', 'copy:client:fonts'
|
||||||
|
));
|
||||||
|
|
||||||
|
gulp.task('default', gulp.task('build'));
|
||||||
|
|
||||||
|
gulp.task('watch', () => {
|
||||||
|
gulp.watch([
|
||||||
|
'./packages/**/*',
|
||||||
|
], { ignoreInitial: false }, gulp.task('build'));
|
||||||
|
});
|
80
gulpfile.ts
80
gulpfile.ts
@@ -1,80 +0,0 @@
|
|||||||
/**
|
|
||||||
* Gulp tasks
|
|
||||||
*/
|
|
||||||
|
|
||||||
import * as fs from 'fs';
|
|
||||||
import * as gulp from 'gulp';
|
|
||||||
import rimraf from 'rimraf';
|
|
||||||
const replace = require('gulp-replace');
|
|
||||||
const terser = require('gulp-terser');
|
|
||||||
const cssnano = require('gulp-cssnano');
|
|
||||||
|
|
||||||
const locales: { [x: string]: any } = require('./locales');
|
|
||||||
const meta = require('./package.json');
|
|
||||||
|
|
||||||
gulp.task('build:copy:views', () =>
|
|
||||||
gulp.src('./src/server/web/views/**/*').pipe(gulp.dest('./built/server/web/views'))
|
|
||||||
);
|
|
||||||
|
|
||||||
gulp.task('build:copy:fonts', () =>
|
|
||||||
gulp.src('./node_modules/three/examples/fonts/**/*').pipe(gulp.dest('./built/assets/fonts/'))
|
|
||||||
);
|
|
||||||
|
|
||||||
gulp.task('build:copy:locales', cb => {
|
|
||||||
fs.mkdirSync('./built/assets/locales', { recursive: true });
|
|
||||||
|
|
||||||
const v = { '_version_': meta.version };
|
|
||||||
|
|
||||||
for (const [lang, locale] of Object.entries(locales)) {
|
|
||||||
fs.writeFileSync(`./built/assets/locales/${lang}.${meta.version}.json`, JSON.stringify({ ...locale, ...v }), 'utf-8');
|
|
||||||
}
|
|
||||||
|
|
||||||
cb();
|
|
||||||
});
|
|
||||||
|
|
||||||
gulp.task('build:client:script', () => {
|
|
||||||
return gulp.src(['./src/server/web/boot.js', './src/server/web/bios.js', './src/server/web/cli.js'])
|
|
||||||
.pipe(replace('VERSION', JSON.stringify(meta.version)))
|
|
||||||
.pipe(replace('LANGS', JSON.stringify(Object.keys(locales))))
|
|
||||||
.pipe(terser({
|
|
||||||
toplevel: true
|
|
||||||
}))
|
|
||||||
.pipe(gulp.dest('./built/server/web/'));
|
|
||||||
});
|
|
||||||
|
|
||||||
gulp.task('build:client:style', () => {
|
|
||||||
return gulp.src(['./src/server/web/style.css', './src/server/web/bios.css', './src/server/web/cli.css'])
|
|
||||||
.pipe(cssnano({
|
|
||||||
zindex: false
|
|
||||||
}))
|
|
||||||
.pipe(gulp.dest('./built/server/web/'));
|
|
||||||
});
|
|
||||||
|
|
||||||
gulp.task('build:copy', gulp.parallel('build:copy:locales', 'build:copy:views', 'build:client:script', 'build:client:style', 'build:copy:fonts', () =>
|
|
||||||
gulp.src([
|
|
||||||
'./src/emojilist.json',
|
|
||||||
'./src/**/assets/**/*',
|
|
||||||
'!./src/client/assets/**/*'
|
|
||||||
]).pipe(gulp.dest('./built/'))
|
|
||||||
));
|
|
||||||
|
|
||||||
gulp.task('clean', cb =>
|
|
||||||
rimraf('./built', cb)
|
|
||||||
);
|
|
||||||
|
|
||||||
gulp.task('cleanall', gulp.parallel('clean', cb =>
|
|
||||||
rimraf('./node_modules', cb)
|
|
||||||
));
|
|
||||||
|
|
||||||
gulp.task('build', gulp.parallel(
|
|
||||||
'build:copy',
|
|
||||||
));
|
|
||||||
|
|
||||||
gulp.task('default', gulp.task('build'));
|
|
||||||
|
|
||||||
gulp.task('watch', () => {
|
|
||||||
gulp.watch([
|
|
||||||
'./src/**/*',
|
|
||||||
'!./src/client/**/*'
|
|
||||||
], { ignoreInitial: false }, gulp.task('build'));
|
|
||||||
});
|
|
7
index.js
7
index.js
@@ -1,7 +0,0 @@
|
|||||||
const fs = require('fs');
|
|
||||||
|
|
||||||
if (fs.existsSync('./built')) {
|
|
||||||
require('./built').default();
|
|
||||||
} else {
|
|
||||||
console.log('Built code is not found. Probably an error occurred during a build or you just forgot to build.');
|
|
||||||
}
|
|
@@ -1,16 +1,19 @@
|
|||||||
---
|
---
|
||||||
_lang_: "العربية"
|
_lang_: "العربية"
|
||||||
|
headlineMisskey: "شبكة مرتبطة بالملاحظات"
|
||||||
introMisskey: "اهلا بك! ميسكي هو منصة تدوين مصغر لا مركزية ومفتوحة المصدر.\nيمكنك مشاركة \"ملاحظات\" عن ما يجري حولك، وإخبار الجميع عن نفسك 📡\nتسمح لك \"الانفعالات\" بتعبير عن شعورك حول ملاحظات الآخرين 👍\nاكتشف عالمًا جديدًا 🚀"
|
introMisskey: "اهلا بك! ميسكي هو منصة تدوين مصغر لا مركزية ومفتوحة المصدر.\nيمكنك مشاركة \"ملاحظات\" عن ما يجري حولك، وإخبار الجميع عن نفسك 📡\nتسمح لك \"الانفعالات\" بتعبير عن شعورك حول ملاحظات الآخرين 👍\nاكتشف عالمًا جديدًا 🚀"
|
||||||
monthAndDay: "{day}/{month}"
|
monthAndDay: "{day}/{month}"
|
||||||
search: "البحث"
|
search: "البحث"
|
||||||
notifications: "الإشعارات"
|
notifications: "الإشعارات"
|
||||||
username: "اسم المستخدم"
|
username: "اسم المستخدم"
|
||||||
password: "الكلمة السرية"
|
password: "الكلمة السرية"
|
||||||
|
forgotPassword: "نسيتَ كلمة السر"
|
||||||
fetchingAsApObject: "جارٍ جلبه مِن الفديفرس…"
|
fetchingAsApObject: "جارٍ جلبه مِن الفديفرس…"
|
||||||
ok: " حسناً"
|
ok: " حسناً"
|
||||||
gotIt: "فهِمت"
|
gotIt: "فهِمت"
|
||||||
cancel: " إلغاء"
|
cancel: " إلغاء"
|
||||||
enterUsername: "أدخِل إسم مسخدم"
|
enterUsername: "أدخِل إسم مسخدم"
|
||||||
|
renotedBy: "أعاد {user} نشر ملاحظة"
|
||||||
noNotes: "لم يتم العثور على أية ملاحظات"
|
noNotes: "لم يتم العثور على أية ملاحظات"
|
||||||
noNotifications: "ليس هناك أية اشعارات"
|
noNotifications: "ليس هناك أية اشعارات"
|
||||||
instance: "مثيل الخادم"
|
instance: "مثيل الخادم"
|
||||||
@@ -25,7 +28,7 @@ login: "لِج"
|
|||||||
loggingIn: "جارٍ تسجيل الدخول"
|
loggingIn: "جارٍ تسجيل الدخول"
|
||||||
logout: "الخروج"
|
logout: "الخروج"
|
||||||
signup: "أنشئ حسابًا"
|
signup: "أنشئ حسابًا"
|
||||||
uploading: "عملية الإرسال جارية"
|
uploading: "يرفع..."
|
||||||
save: "حفظ"
|
save: "حفظ"
|
||||||
users: "المستخدمون"
|
users: "المستخدمون"
|
||||||
addUser: "اضافة مستخدم"
|
addUser: "اضافة مستخدم"
|
||||||
@@ -36,7 +39,7 @@ favorited: "تمت الإضافة إلى المفضلة."
|
|||||||
alreadyFavorited: "تمت إضافته بالفعل إلى المفضلة."
|
alreadyFavorited: "تمت إضافته بالفعل إلى المفضلة."
|
||||||
cantFavorite: "تعذرت الإضافة إلى المفضلة."
|
cantFavorite: "تعذرت الإضافة إلى المفضلة."
|
||||||
pin: "دبّسها على الصفحة الشخصية"
|
pin: "دبّسها على الصفحة الشخصية"
|
||||||
unpin: "ألغ تثبيتها من ملفك الشخصي"
|
unpin: "ألغ تدبيسها من ملفك الشخصي"
|
||||||
copyContent: "انسخ المحتوى"
|
copyContent: "انسخ المحتوى"
|
||||||
copyLink: "انسخ الرابط"
|
copyLink: "انسخ الرابط"
|
||||||
delete: "حذف"
|
delete: "حذف"
|
||||||
@@ -62,12 +65,14 @@ files: "الملفات"
|
|||||||
download: "تنزيل"
|
download: "تنزيل"
|
||||||
driveFileDeleteConfirm: "أمتأكد من حذف ملف {name}؟ كل الملاحظات المُرفق بها هذا الملف ستحذف."
|
driveFileDeleteConfirm: "أمتأكد من حذف ملف {name}؟ كل الملاحظات المُرفق بها هذا الملف ستحذف."
|
||||||
unfollowConfirm: "أمتأكد من إلغاء متابعة {name}؟"
|
unfollowConfirm: "أمتأكد من إلغاء متابعة {name}؟"
|
||||||
|
exportRequested: "قد تستغرق عملية التصدير بعض الوقت. بمجرد الانتهاء ستتم إضافة الملف الناتج إلى قرص التخزين."
|
||||||
|
importRequested: "يستغرق الاستيراد بعض الوقت"
|
||||||
lists: "القوائم"
|
lists: "القوائم"
|
||||||
noLists: "ليس لديك أية قائمة"
|
noLists: "ليس لديك أية قائمة"
|
||||||
note: "ملاحظة"
|
note: "ملاحظة"
|
||||||
notes: "الملاحظات"
|
notes: "الملاحظات"
|
||||||
following: "المتابَعون"
|
following: "المتابَعون"
|
||||||
followers: "المتابِعين"
|
followers: "المتابِعون"
|
||||||
followsYou: "يتابعك"
|
followsYou: "يتابعك"
|
||||||
createList: "إنشاء قائمة"
|
createList: "إنشاء قائمة"
|
||||||
manageLists: "إدارة القوائم"
|
manageLists: "إدارة القوائم"
|
||||||
@@ -75,9 +80,12 @@ error: "خطأ"
|
|||||||
somethingHappened: "حدث خطأ"
|
somethingHappened: "حدث خطأ"
|
||||||
retry: "حاول مجددًا"
|
retry: "حاول مجددًا"
|
||||||
pageLoadError: "فشل تحميل الصفحة"
|
pageLoadError: "فشل تحميل الصفحة"
|
||||||
|
pageLoadErrorDescription: "عادة ما يكون السبب خطأ في الشبكة أو التخزين المؤقت للمتصفح. امسح التخزين المؤقت ثم أعد المحاولة لاحقًا."
|
||||||
|
serverIsDead: "الخادم لا يستجيب، حاول بعد قليل"
|
||||||
|
youShouldUpgradeClient: "حدّث الصفحة لعرضها."
|
||||||
enterListName: "اسم القائمة"
|
enterListName: "اسم القائمة"
|
||||||
privacy: "الخصوصية"
|
privacy: "الخصوصية"
|
||||||
makeFollowManuallyApprove: "القبول يدويا طلبات الإشتراك"
|
makeFollowManuallyApprove: "قبول طلبات الإشتراك يدويا"
|
||||||
defaultNoteVisibility: "مدى الرؤية الافتراضي"
|
defaultNoteVisibility: "مدى الرؤية الافتراضي"
|
||||||
follow: "تابِع"
|
follow: "تابِع"
|
||||||
followRequest: "طلب اشتراك"
|
followRequest: "طلب اشتراك"
|
||||||
@@ -85,7 +93,11 @@ followRequests: "طلبات الإشتراك"
|
|||||||
unfollow: "إلغاء الاشتراك"
|
unfollow: "إلغاء الاشتراك"
|
||||||
followRequestPending: "طلبات الإشتراك المعلّقة"
|
followRequestPending: "طلبات الإشتراك المعلّقة"
|
||||||
enterEmoji: "أدخل إيموجي"
|
enterEmoji: "أدخل إيموجي"
|
||||||
|
renote: "أعد النشر"
|
||||||
unrenote: "إلغاء مشاركة الملاحظة"
|
unrenote: "إلغاء مشاركة الملاحظة"
|
||||||
|
renoted: "أُعيد نشره"
|
||||||
|
cantRenote: "لا يمكن إعادة نشر الملاحظة"
|
||||||
|
cantReRenote: "لا يمكنك إعادة نشر ملاحظة معاد نشرها"
|
||||||
quote: "اقتبس"
|
quote: "اقتبس"
|
||||||
pinnedNote: "ملاحظة مدبسة"
|
pinnedNote: "ملاحظة مدبسة"
|
||||||
pinned: "دبّسها على الصفحة الشخصية"
|
pinned: "دبّسها على الصفحة الشخصية"
|
||||||
@@ -94,8 +106,12 @@ clickToShow: "اضغط للعرض"
|
|||||||
sensitive: "محتوى حساس"
|
sensitive: "محتوى حساس"
|
||||||
add: "إضافة"
|
add: "إضافة"
|
||||||
reaction: "تفاعل"
|
reaction: "تفاعل"
|
||||||
|
reactionSettingDescription: "اختر التفاعلات المفضلة التي تريد تثبيتها في منتقي التفاعلات."
|
||||||
|
reactionSettingDescription2: "اسحب لإعادة التنظيم ، انقر للحذف ، استخدم \"+\" للإضافة."
|
||||||
rememberNoteVisibility: "تذكر إعدادت مدى رؤية الملاحظات"
|
rememberNoteVisibility: "تذكر إعدادت مدى رؤية الملاحظات"
|
||||||
attachCancel: "أزل المرفق"
|
attachCancel: "أزل المرفق"
|
||||||
|
markAsSensitive: "علّمه كمحتوى حساس"
|
||||||
|
unmarkAsSensitive: "ألغ تعيينه كمحتوى حساس"
|
||||||
enterFileName: "ادخل اسم الملف"
|
enterFileName: "ادخل اسم الملف"
|
||||||
mute: "اكتم"
|
mute: "اكتم"
|
||||||
unmute: "إلغاء الكتم"
|
unmute: "إلغاء الكتم"
|
||||||
@@ -105,18 +121,33 @@ suspend: "علِق"
|
|||||||
unsuspend: "ألغ التعليق"
|
unsuspend: "ألغ التعليق"
|
||||||
blockConfirm: "أمتأكد من حجب هذا الحساب؟"
|
blockConfirm: "أمتأكد من حجب هذا الحساب؟"
|
||||||
unblockConfirm: "أمتأكد من إلغاء حجب هذا الحساب؟"
|
unblockConfirm: "أمتأكد من إلغاء حجب هذا الحساب؟"
|
||||||
|
suspendConfirm: "أمتأكد من تعليق الحساب؟"
|
||||||
|
unsuspendConfirm: "أمتأكد من إلغاء تعليق؟"
|
||||||
selectList: "اختر قائمة"
|
selectList: "اختر قائمة"
|
||||||
|
selectAntenna: "اختر هوائيًا"
|
||||||
|
selectWidget: "اختر ودجة"
|
||||||
|
editWidgets: "عدّل الودجات"
|
||||||
editWidgetsExit: "تم"
|
editWidgetsExit: "تم"
|
||||||
customEmojis: "إيموجي مخصص"
|
customEmojis: "إيموجي مخصص"
|
||||||
|
emoji: "الوجوه التعبيرية"
|
||||||
|
emojis: "الوجوه التعبيرية"
|
||||||
|
emojiName: "اسم الوجه التعبيري"
|
||||||
|
emojiUrl: "رابط الوجه التعبيري"
|
||||||
addEmoji: "إضافة إيموجي"
|
addEmoji: "إضافة إيموجي"
|
||||||
|
settingGuide: "الإعدادات المستحسنة"
|
||||||
cacheRemoteFiles: "خزن مؤقتا الملفات البعيدة"
|
cacheRemoteFiles: "خزن مؤقتا الملفات البعيدة"
|
||||||
|
flagAsBot: "علّمه كحساب آلي"
|
||||||
|
flagAsBotDescription: "فعّل هذا الخيار إذا كان هذا الحساب يُدار عبر برمجية. إذا فُعل فسيكون بمثابة علامة للمطورين الآخرين لتجنب سلاسل لا متناعية من التفاعل بين حسابات الآلية وضبط أنظمة ميسكي للتعامل مع هذا الحساب كروبوت."
|
||||||
|
flagAsCat: "علّم هذا الحساب كحساب قط"
|
||||||
|
flagAsCatDescription: "فعّل هذا الخيار لوضع علامة على الحساب لتوضيح أنه حساب قط."
|
||||||
autoAcceptFollowed: "اقبل طلبات المتابعة تلقائيا من الحسابات المتابَعة"
|
autoAcceptFollowed: "اقبل طلبات المتابعة تلقائيا من الحسابات المتابَعة"
|
||||||
|
addAccount: "أضف حساباً"
|
||||||
loginFailed: "فشل الولوج"
|
loginFailed: "فشل الولوج"
|
||||||
showOnRemote: "رؤيته على مثيل الخادم البُعدي"
|
showOnRemote: "رؤيته على مثيل الخادم البُعدي"
|
||||||
general: "الرئيسية"
|
general: "الرئيسية"
|
||||||
wallpaper: "خلفية الشاشة"
|
wallpaper: "الخلفية"
|
||||||
setWallpaper: "استخدم خلفية الشاشة"
|
setWallpaper: "عيّن خلفية"
|
||||||
removeWallpaper: "إزالة خلفية الشاشة"
|
removeWallpaper: "أزل الخلفية"
|
||||||
searchWith: "البحث: {q}"
|
searchWith: "البحث: {q}"
|
||||||
youHaveNoLists: "لا تمتلك أية قائمة"
|
youHaveNoLists: "لا تمتلك أية قائمة"
|
||||||
followConfirm: "أتريد متابعة {name}؟"
|
followConfirm: "أتريد متابعة {name}؟"
|
||||||
@@ -127,8 +158,10 @@ recipient: "المرسَل إليه·ها"
|
|||||||
annotation: "التعليقات"
|
annotation: "التعليقات"
|
||||||
federation: "الفديرالية"
|
federation: "الفديرالية"
|
||||||
instances: "مثيل الخادم"
|
instances: "مثيل الخادم"
|
||||||
|
registeredAt: "مسجل في"
|
||||||
latestRequestSentAt: "آخر طلب أرسِل في"
|
latestRequestSentAt: "آخر طلب أرسِل في"
|
||||||
latestRequestReceivedAt: "آخر طلب تُلقي في"
|
latestRequestReceivedAt: "آخر طلب تُلقي في"
|
||||||
|
latestStatus: "الحالات الأخيرة"
|
||||||
storageUsage: "مساحة التخزين المستخدمة"
|
storageUsage: "مساحة التخزين المستخدمة"
|
||||||
charts: "المنحنيات البيانية"
|
charts: "المنحنيات البيانية"
|
||||||
perHour: "في الساعة"
|
perHour: "في الساعة"
|
||||||
@@ -148,6 +181,11 @@ disk: "قرص التخزين"
|
|||||||
instanceInfo: "معلومات مثيل الخادم"
|
instanceInfo: "معلومات مثيل الخادم"
|
||||||
statistics: "الإحصائيات"
|
statistics: "الإحصائيات"
|
||||||
clearQueue: "تفريغ قائمة الإنتظار"
|
clearQueue: "تفريغ قائمة الإنتظار"
|
||||||
|
clearQueueConfirmTitle: "أتريد مسح الطابور؟"
|
||||||
|
clearCachedFiles: "امسح التخزين المؤقت"
|
||||||
|
clearCachedFilesConfirm: "أتريد حذف التخزين المؤقت للملفات البعيدة؟"
|
||||||
|
blockedInstances: "المثلاء المحجوبون"
|
||||||
|
blockedInstancesDescription: "قائمة بالمثلاء التي تريد حظرها بحيث كل نطاق في سطر لوحده. بعد إدراجهم لن يتمكنوا من التفاعل مع هذا المثيل."
|
||||||
muteAndBlock: "تم كتمها / تم حجبها"
|
muteAndBlock: "تم كتمها / تم حجبها"
|
||||||
mutedUsers: "الحسابات التي تم كتمها"
|
mutedUsers: "الحسابات التي تم كتمها"
|
||||||
blockedUsers: "الحسابات التي تم حظرها"
|
blockedUsers: "الحسابات التي تم حظرها"
|
||||||
@@ -174,26 +212,26 @@ usernameOrUserId: "اسم المستخدم أو معرّفه"
|
|||||||
noSuchUser: "لم يُعثَر على المستخدم"
|
noSuchUser: "لم يُعثَر على المستخدم"
|
||||||
lookup: "البحث"
|
lookup: "البحث"
|
||||||
announcements: "الإعلانات"
|
announcements: "الإعلانات"
|
||||||
imageUrl: "عنوان URL للصورة"
|
imageUrl: "رابط الصورة"
|
||||||
remove: "حذف"
|
remove: "حذف"
|
||||||
removed: "تم حذفه بنجاح"
|
removed: "تم حذفه بنجاح"
|
||||||
removeAreYouSure: "متأكد من أنك تريد حذف {x}؟"
|
removeAreYouSure: "متأكد من أنك تريد حذف {x}؟"
|
||||||
deleteAreYouSure: "متأكد من أنك تريد حذف {x}؟"
|
deleteAreYouSure: "متأكد من أنك تريد حذف {x}؟"
|
||||||
resetAreYouSure: "هل تريد إعادة التعيين؟"
|
resetAreYouSure: "هل تريد إعادة التعيين؟"
|
||||||
saved: "تم حفظه"
|
saved: "تم حفظه"
|
||||||
messaging: "الدردشة"
|
messaging: "المحادثة"
|
||||||
upload: "تحميل"
|
upload: "ارفع"
|
||||||
fromDrive: "من المخزن"
|
fromDrive: "من المخزن"
|
||||||
fromUrl: "من عنوان URL"
|
fromUrl: "عبر رابط"
|
||||||
uploadFromUrl: "التحميل عبر URL"
|
uploadFromUrl: "ارفع عبر رابط"
|
||||||
uploadFromUrlDescription: "رابط الملف المراد تحميله "
|
uploadFromUrlDescription: "رابط الملف المراد رفعه"
|
||||||
uploadFromUrlRequested: "الرفع مطلوب"
|
uploadFromUrlRequested: "الرفع مطلوب"
|
||||||
uploadFromUrlMayTakeTime: "سيستغرق بعض الوقت لاتمام الرفع "
|
uploadFromUrlMayTakeTime: "سيستغرق بعض الوقت لاتمام الرفع "
|
||||||
explore: "استكشاف"
|
explore: "استكشاف"
|
||||||
games: "ألعاب Misskey"
|
games: "ألعاب Misskey"
|
||||||
messageRead: "مقروءة"
|
messageRead: "مقروءة"
|
||||||
noMoreHistory: "لا يوجد المزيد من التاريخ"
|
noMoreHistory: "لا يوجد المزيد من التاريخ"
|
||||||
startMessaging: "ابدأ الدردشة"
|
startMessaging: "ابدأ محادثة"
|
||||||
nUsersRead: "تمت القراءة من {n}"
|
nUsersRead: "تمت القراءة من {n}"
|
||||||
agreeTo: "اوافق على {0}"
|
agreeTo: "اوافق على {0}"
|
||||||
tos: "شروط الخدمة"
|
tos: "شروط الخدمة"
|
||||||
@@ -231,7 +269,7 @@ unableToDelete: "لا يمكن حذفه"
|
|||||||
inputNewFileName: "ادخل الإسم الجديد للملف"
|
inputNewFileName: "ادخل الإسم الجديد للملف"
|
||||||
inputNewFolderName: "ادخل الإسم الجديد للمجلد"
|
inputNewFolderName: "ادخل الإسم الجديد للمجلد"
|
||||||
hasChildFilesOrFolders: "الان الملف غير فارغ. لا يمكن حذفه"
|
hasChildFilesOrFolders: "الان الملف غير فارغ. لا يمكن حذفه"
|
||||||
copyUrl: "انسخ عنوان URL"
|
copyUrl: "انسخ الرابط"
|
||||||
rename: "إعادة التسمية"
|
rename: "إعادة التسمية"
|
||||||
avatar: "الصورة الرمزية"
|
avatar: "الصورة الرمزية"
|
||||||
banner: "الصورة الرأسية"
|
banner: "الصورة الرأسية"
|
||||||
@@ -250,7 +288,7 @@ instanceName: "اسم مثيل الخادم"
|
|||||||
instanceDescription: "وصف مثيل الخادم"
|
instanceDescription: "وصف مثيل الخادم"
|
||||||
maintainerName: "المدير"
|
maintainerName: "المدير"
|
||||||
maintainerEmail: "عنوان بريد المدير الإلكتروني"
|
maintainerEmail: "عنوان بريد المدير الإلكتروني"
|
||||||
tosUrl: "عنوان URL لشروط الخدمة"
|
tosUrl: "رابط صفحة شروط الخدمة"
|
||||||
thisYear: "هذا العام"
|
thisYear: "هذا العام"
|
||||||
thisMonth: "هذا الشهر"
|
thisMonth: "هذا الشهر"
|
||||||
today: "اليوم"
|
today: "اليوم"
|
||||||
@@ -265,7 +303,17 @@ disablingTimelinesInfo: "سيتمكن المسؤولون ومن تعديل دا
|
|||||||
registration: "إنشاء حساب"
|
registration: "إنشاء حساب"
|
||||||
enableRegistration: "تفعيل إنشاء الحسابات الجديدة"
|
enableRegistration: "تفعيل إنشاء الحسابات الجديدة"
|
||||||
invite: "دعوة"
|
invite: "دعوة"
|
||||||
|
driveCapacityPerLocalAccount: "حصة التخزين لكل مستخدم محلي"
|
||||||
|
driveCapacityPerRemoteAccount: "حصة التخزين لكل مستخدم بعيد"
|
||||||
|
inMb: "بالميغابايت"
|
||||||
|
iconUrl: "رابط الأيقونة"
|
||||||
|
bannerUrl: "رابط صورة اللافتة"
|
||||||
|
backgroundImageUrl: "رابط صورة الخلفية"
|
||||||
basicInfo: "المعلومات الأساسية "
|
basicInfo: "المعلومات الأساسية "
|
||||||
|
pinnedUsers: "المستخدمون المدبسون"
|
||||||
|
pinnedUsersDescription: "قائمة المستخدمين المدبسين في لسان \"استكشف\" ، اجعل كل اسم مستخدم في سطر لوحده."
|
||||||
|
pinnedPages: "الصفحات المدبسة"
|
||||||
|
pinnedPagesDescription: "أدخل مسار الصفحات التي تريد تدبيسها في أعلى هذا الموقع، اجعل كل مسار في سطر لوحده."
|
||||||
pinnedNotes: "ملاحظة مدبسة"
|
pinnedNotes: "ملاحظة مدبسة"
|
||||||
hcaptchaSiteKey: "مفتاح الموقع"
|
hcaptchaSiteKey: "مفتاح الموقع"
|
||||||
hcaptchaSecretKey: "المفتاح السري"
|
hcaptchaSecretKey: "المفتاح السري"
|
||||||
@@ -278,12 +326,21 @@ manageAntennas: "إدارة الهوائيات"
|
|||||||
name: "الإسم"
|
name: "الإسم"
|
||||||
antennaSource: "مصدر الهوائي"
|
antennaSource: "مصدر الهوائي"
|
||||||
antennaKeywords: "الكلمات المفتاحية للإستقبال"
|
antennaKeywords: "الكلمات المفتاحية للإستقبال"
|
||||||
|
notifyAntenna: "نبهني بصول ملاحظات جديدة"
|
||||||
|
withFileAntenna: "ملاحظات تحوي ملفات فقط"
|
||||||
|
caseSensitive: "حساسية حالة الأحرف"
|
||||||
withReplies: "بالردود"
|
withReplies: "بالردود"
|
||||||
notesAndReplies: "الملاحظات والردود"
|
notesAndReplies: "الملاحظات والردود"
|
||||||
withFiles: "بالمرفقات"
|
withFiles: "ذات مرفقات"
|
||||||
silence: "اكتم"
|
silence: "اكتم"
|
||||||
|
silenceConfirm: "أمتأكد من كتم هذا المستخدم؟"
|
||||||
unsilence: "إلغاء الكتم"
|
unsilence: "إلغاء الكتم"
|
||||||
|
unsilenceConfirm: "أمتأكد من إلغاء كتم هذا المستخدم؟"
|
||||||
popularUsers: "المستخدمون الشائعون"
|
popularUsers: "المستخدمون الشائعون"
|
||||||
|
recentlyUpdatedUsers: "أصحاب النشاطات الأخيرة"
|
||||||
|
recentlyRegisteredUsers: "المستخدمون المنضمون حديثًا"
|
||||||
|
recentlyDiscoveredUsers: "المستخدمون المكتشفون حديثًا"
|
||||||
|
exploreUsersCount: "يوجد {count} مستخدم(ا)"
|
||||||
exploreFediverse: "استكشف الفديفرس"
|
exploreFediverse: "استكشف الفديفرس"
|
||||||
popularTags: "الوسوم الرائجة"
|
popularTags: "الوسوم الرائجة"
|
||||||
userList: "القوائم"
|
userList: "القوائم"
|
||||||
@@ -296,27 +353,35 @@ moderator: "مشرِف"
|
|||||||
nUsersMentioned: "{n} مستخدمين تمت الإشارة إليهم"
|
nUsersMentioned: "{n} مستخدمين تمت الإشارة إليهم"
|
||||||
securityKey: "مفتاح الأمان"
|
securityKey: "مفتاح الأمان"
|
||||||
securityKeyName: "اسم المفتاح"
|
securityKeyName: "اسم المفتاح"
|
||||||
|
registerSecurityKey: "سجل مفتاح أمان"
|
||||||
lastUsed: "آخر استخدام"
|
lastUsed: "آخر استخدام"
|
||||||
unregister: "إلغاء التسجيل"
|
unregister: "إلغاء التسجيل"
|
||||||
passwordLessLogin: "لِج مِن دون كلمة سرية"
|
passwordLessLogin: "لِج مِن دون كلمة سرية"
|
||||||
resetPassword: "أعد تعيين كلمتك السرية"
|
resetPassword: "أعد تعيين كلمتك السرية"
|
||||||
newPasswordIs: "كلمتك السرية الجديدة هي {password}"
|
newPasswordIs: "كلمتك السرية الجديدة هي {password}"
|
||||||
|
reduceUiAnimation: "قلص تأثيرات الواجهة"
|
||||||
share: "شارِك"
|
share: "شارِك"
|
||||||
notFound: "غير موجود"
|
notFound: "غير موجود"
|
||||||
|
notFoundDescription: "تعذر العثور على صفحة يقود إليها هذا الرابط."
|
||||||
|
uploadFolder: "المجلد الافتراضي للرفع"
|
||||||
cacheClear: "مسح ذاكرة التخزين المؤقت"
|
cacheClear: "مسح ذاكرة التخزين المؤقت"
|
||||||
markAsReadAllNotifications: "وضع جميع الإشعارات كأنها مقروءة"
|
markAsReadAllNotifications: "وضع جميع الإشعارات كأنها مقروءة"
|
||||||
|
markAsReadAllUnreadNotes: "علّم جميع الملاحظات كمقروءة"
|
||||||
|
markAsReadAllTalkMessages: "علّم جميع الرسائل كمقروءة"
|
||||||
help: "المساعدة"
|
help: "المساعدة"
|
||||||
inputMessageHere: "اكتب رسالتك هنا"
|
inputMessageHere: "اكتب رسالتك هنا"
|
||||||
close: "اغلق"
|
close: "اغلق"
|
||||||
group: "الفريق"
|
group: "الفريق"
|
||||||
groups: "الفِرَق"
|
groups: "الفِرَق"
|
||||||
createGroup: "انشئ فريقًا"
|
createGroup: "انشئ فريقًا"
|
||||||
|
ownedGroups: "مجموعات المالك"
|
||||||
|
joinedGroups: "المجموعات المنضم إليها"
|
||||||
invites: "دعوة"
|
invites: "دعوة"
|
||||||
groupName: "اسم الفريق"
|
groupName: "اسم الفريق"
|
||||||
members: "الأعضاء"
|
members: "الأعضاء"
|
||||||
transfer: "نقل"
|
transfer: "نقل"
|
||||||
messagingWithUser: "الدردشة مع مستخدم آخر"
|
messagingWithUser: "تحدث مع مستخدم"
|
||||||
messagingWithGroup: "دردشة جماعية"
|
messagingWithGroup: "محادثة جماعية"
|
||||||
title: "العنوان"
|
title: "العنوان"
|
||||||
text: "النص"
|
text: "النص"
|
||||||
enable: "تشغيل"
|
enable: "تشغيل"
|
||||||
@@ -324,13 +389,18 @@ next: "التالية"
|
|||||||
retype: "أعد الكتابة"
|
retype: "أعد الكتابة"
|
||||||
noteOf: "ملاحظات {user}"
|
noteOf: "ملاحظات {user}"
|
||||||
inviteToGroup: "دعوة إلى فريق"
|
inviteToGroup: "دعوة إلى فريق"
|
||||||
|
maxNoteTextLength: "حد عدد المحارف لكل ملاحظة"
|
||||||
|
quoteAttached: "اِقتُبسَ"
|
||||||
noMessagesYet: "ليس هناك رسائل بعد"
|
noMessagesYet: "ليس هناك رسائل بعد"
|
||||||
newMessageExists: "لقد تلقيت رسالة جديدة"
|
newMessageExists: "لقد تلقيت رسالة جديدة"
|
||||||
|
onlyOneFileCanBeAttached: "يمكنك إرفاق ملف واحد بالرسالة"
|
||||||
|
signinRequired: "رجاءً لِج"
|
||||||
invitations: "دعوة"
|
invitations: "دعوة"
|
||||||
invitationCode: "رمز الدعوة"
|
invitationCode: "رمز الدعوة"
|
||||||
checking: "التحقق جارٍ"
|
checking: "التحقق جارٍ"
|
||||||
available: "متوفر"
|
available: "متوفر"
|
||||||
unavailable: "غير متوفر"
|
unavailable: "غير متوفر"
|
||||||
|
usernameInvalidFormat: "يمكنك استخدام A-z، a-z، 0-9، _"
|
||||||
tooShort: "قصير جدًا"
|
tooShort: "قصير جدًا"
|
||||||
tooLong: "طويل جدًا"
|
tooLong: "طويل جدًا"
|
||||||
weakPassword: "الكلمة السرية ضعيفة"
|
weakPassword: "الكلمة السرية ضعيفة"
|
||||||
@@ -339,11 +409,15 @@ strongPassword: "الكلمة السرية قوية"
|
|||||||
passwordMatched: "التطابق صحيح!"
|
passwordMatched: "التطابق صحيح!"
|
||||||
passwordNotMatched: "غير متطابقتان"
|
passwordNotMatched: "غير متطابقتان"
|
||||||
signinWith: "الولوج عبر {x}"
|
signinWith: "الولوج عبر {x}"
|
||||||
|
signinFailed: "فشل الولوج، خطأ في اسم المستخدم أو كلمة المرور."
|
||||||
or: "أو"
|
or: "أو"
|
||||||
|
language: "اللغة"
|
||||||
uiLanguage: "لغة واجهة المستخدم"
|
uiLanguage: "لغة واجهة المستخدم"
|
||||||
|
groupInvited: "دُعيت إلى مجموعة"
|
||||||
aboutX: "عن {x}"
|
aboutX: "عن {x}"
|
||||||
useOsNativeEmojis: "استخدم الإيموجيات الخاصة بنظام التشغيل"
|
useOsNativeEmojis: "استخدم الإيموجيات الخاصة بنظام التشغيل"
|
||||||
youHaveNoGroups: "لا تمتلك أية فِرَق"
|
youHaveNoGroups: "لا تمتلك أية فِرَق"
|
||||||
|
joinOrCreateGroup: "احصل على دعوة لمجموعة أو أنشئ واحدة."
|
||||||
noHistory: "السجل فارغ"
|
noHistory: "السجل فارغ"
|
||||||
signinHistory: "تاريخ تسجيل الدخول"
|
signinHistory: "تاريخ تسجيل الدخول"
|
||||||
doing: "انتظر لحظة"
|
doing: "انتظر لحظة"
|
||||||
@@ -351,8 +425,10 @@ category: "الفئات"
|
|||||||
tags: "الوسوم"
|
tags: "الوسوم"
|
||||||
docSource: "مصدر هذا المستند"
|
docSource: "مصدر هذا المستند"
|
||||||
createAccount: "أنشئ حسابًا"
|
createAccount: "أنشئ حسابًا"
|
||||||
|
existingAccount: "الحسابات الموجودة"
|
||||||
regenerate: "أعِد التوليد"
|
regenerate: "أعِد التوليد"
|
||||||
fontSize: "حجم الخط"
|
fontSize: "حجم الخط"
|
||||||
|
noFollowRequests: "ليس لديك طلبات متابعة معلقة"
|
||||||
openImageInNewTab: "إفتح الصورة بصفحة جديدة"
|
openImageInNewTab: "إفتح الصورة بصفحة جديدة"
|
||||||
dashboard: "لوحة التحكم"
|
dashboard: "لوحة التحكم"
|
||||||
local: "المحلي"
|
local: "المحلي"
|
||||||
@@ -361,30 +437,49 @@ total: "المجموع"
|
|||||||
weekOverWeekChanges: "أسبوعيا"
|
weekOverWeekChanges: "أسبوعيا"
|
||||||
dayOverDayChanges: "يوميا"
|
dayOverDayChanges: "يوميا"
|
||||||
appearance: "المظهر"
|
appearance: "المظهر"
|
||||||
|
clientSettings: "إعدادات العميل"
|
||||||
accountSettings: "إعدادات الحساب"
|
accountSettings: "إعدادات الحساب"
|
||||||
promotion: "ترقية"
|
promotion: "ترقية"
|
||||||
promote: "روِّج"
|
promote: "روِّج"
|
||||||
numberOfDays: "عدد الأيام"
|
numberOfDays: "عدد الأيام"
|
||||||
hideThisNote: "إخفاء هذه الملاحظة"
|
hideThisNote: "إخفاء هذه الملاحظة"
|
||||||
|
objectStorageBaseUrl: "الرابط الأساسي"
|
||||||
|
objectStoragePrefix: "البادئة"
|
||||||
|
objectStorageEndpoint: "نقطة النهاية"
|
||||||
|
objectStorageRegion: "المنطقة"
|
||||||
|
objectStorageUseSSL: "استخدم SSL"
|
||||||
|
objectStorageUseProxy: "اتصل عبر وكيل"
|
||||||
|
serverLogs: "سجلات الخادم"
|
||||||
deleteAll: "حذف الكل"
|
deleteAll: "حذف الكل"
|
||||||
|
showFixedPostForm: "أظهر نموذج الكتابة في أعلى الصفحة"
|
||||||
|
newNoteRecived: "هناك ملاحظات جديدة"
|
||||||
sounds: "الرنات"
|
sounds: "الرنات"
|
||||||
listen: "استمع"
|
listen: "استمع"
|
||||||
none: "لا شيء"
|
none: "لا شيء"
|
||||||
|
showInPage: "اعرض في الصفحة"
|
||||||
volume: "مستوى الصوت"
|
volume: "مستوى الصوت"
|
||||||
details: "التفاصيل"
|
details: "التفاصيل"
|
||||||
chooseEmoji: "اختر إيموجي"
|
chooseEmoji: "اختر إيموجي"
|
||||||
|
unableToProcess: "يتعذر إكمال العملية"
|
||||||
recentUsed: "المستخدمة مؤخرا"
|
recentUsed: "المستخدمة مؤخرا"
|
||||||
install: "التثبيت"
|
install: "التثبيت"
|
||||||
uninstall: "إلغاء التثبيت"
|
uninstall: "إلغاء التثبيت"
|
||||||
installedApps: "التطبيقات المُخوّلة"
|
installedApps: "التطبيقات المُخوّلة"
|
||||||
|
nothing: "لا يوجد شيء هنا"
|
||||||
lastUsedDate: "آخر استخدام"
|
lastUsedDate: "آخر استخدام"
|
||||||
state: "الحالة"
|
state: "الحالة"
|
||||||
sort: "ترتيب حسب"
|
sort: "ترتيب حسب"
|
||||||
|
ascendingOrder: "تصاعدي"
|
||||||
|
descendingOrder: "تنازلي"
|
||||||
output: "الخارجة"
|
output: "الخارجة"
|
||||||
updateRemoteUser: "تحديث المعلومات عن المستخدم البعيد"
|
updateRemoteUser: "تحديث المعلومات عن المستخدم البعيد"
|
||||||
deleteAllFiles: "حذف كافة الملفات"
|
deleteAllFiles: "حذف كافة الملفات"
|
||||||
|
deleteAllFilesConfirm: "أتريد حذف كل الملفات؟"
|
||||||
|
removeAllFollowing: "ألغ متابعة كل المتابَعين"
|
||||||
userSuspended: "تم تعليق هذا المستخدم."
|
userSuspended: "تم تعليق هذا المستخدم."
|
||||||
userSilenced: "تم إسكات هذا المستخدم."
|
userSilenced: "تم إسكات هذا المستخدم."
|
||||||
|
yourAccountSuspendedTitle: "هذا الحساب معلق"
|
||||||
|
menu: "القائمة"
|
||||||
addItem: "إضافة عنصر"
|
addItem: "إضافة عنصر"
|
||||||
rooms: "الغرفة"
|
rooms: "الغرفة"
|
||||||
relays: "المُرَحلات"
|
relays: "المُرَحلات"
|
||||||
@@ -392,9 +487,15 @@ addRelay: "إضافة مُرحّل"
|
|||||||
addedRelays: "المرحلات التي تم إضافتها"
|
addedRelays: "المرحلات التي تم إضافتها"
|
||||||
deletedNote: "ملاحظة محذوفة"
|
deletedNote: "ملاحظة محذوفة"
|
||||||
invisibleNote: "ملاحظة مخفية"
|
invisibleNote: "ملاحظة مخفية"
|
||||||
|
enableInfiniteScroll: "فعّل التمرير المتواصل"
|
||||||
|
visibility: "الظهور"
|
||||||
poll: "استطلاع رأي"
|
poll: "استطلاع رأي"
|
||||||
useCw: "إخفاء المحتوى"
|
useCw: "إخفاء المحتوى"
|
||||||
|
enablePlayer: "افتح مشغل الفيديو"
|
||||||
|
disablePlayer: "أغلق مشغل الفيديو"
|
||||||
themeEditor: "مصمم القوالب"
|
themeEditor: "مصمم القوالب"
|
||||||
|
description: "الوصف"
|
||||||
|
leaveConfirm: "لديك تغييرات غير محفوظة. أتريد المتابعة دون حفظها؟"
|
||||||
manage: "إدارة "
|
manage: "إدارة "
|
||||||
plugins: "الإضافات"
|
plugins: "الإضافات"
|
||||||
width: "العرض"
|
width: "العرض"
|
||||||
@@ -402,12 +503,14 @@ height: "الإرتفاع"
|
|||||||
large: "كبير"
|
large: "كبير"
|
||||||
medium: "متوسط"
|
medium: "متوسط"
|
||||||
small: "صغير"
|
small: "صغير"
|
||||||
|
generateAccessToken: "ولّد رمز الوصول"
|
||||||
permission: "أذونات"
|
permission: "أذونات"
|
||||||
enableAll: "تشغيل الكل"
|
enableAll: "تشغيل الكل"
|
||||||
disableAll: "تعطيل الكل"
|
disableAll: "تعطيل الكل"
|
||||||
tokenRequested: "منح حق الوصول إلى الحساب"
|
tokenRequested: "منح حق الوصول إلى الحساب"
|
||||||
notificationType: "أنواع الإشعارات"
|
notificationType: "أنواع الإشعارات"
|
||||||
edit: "التعديل"
|
edit: "التعديل"
|
||||||
|
emailServer: "خادم البريد الإلكتروني"
|
||||||
email: "البريد الإلكتروني "
|
email: "البريد الإلكتروني "
|
||||||
emailAddress: "عنوان البريد الالكتروني"
|
emailAddress: "عنوان البريد الالكتروني"
|
||||||
smtpHost: "المضيف"
|
smtpHost: "المضيف"
|
||||||
@@ -418,28 +521,183 @@ makeActive: "تفعيل"
|
|||||||
display: "المظهر"
|
display: "المظهر"
|
||||||
copy: "نسخ"
|
copy: "نسخ"
|
||||||
metrics: "المقاييس"
|
metrics: "المقاييس"
|
||||||
|
channel: "القنوات"
|
||||||
|
create: "أنشئ"
|
||||||
|
notificationSetting: "إعدادات التنبيهات"
|
||||||
|
notificationSettingDesc: "اختر نوع التنبيهات المراد عرضها"
|
||||||
|
other: "منوعات"
|
||||||
|
regenerateLoginToken: "أعد توليد الرمز"
|
||||||
|
fileIdOrUrl: "معرف الملف أو رابط"
|
||||||
|
chatOpenBehavior: "سلوك نفاذة المحادثة عند فتحها"
|
||||||
|
behavior: "السلوك"
|
||||||
|
sample: "مثال"
|
||||||
|
abuseReports: "البلاغات"
|
||||||
|
reportAbuse: "البلاغات"
|
||||||
|
reportAbuseOf: "أبلغ عن {name}"
|
||||||
|
fillAbuseReportDescription: "أكتب بالتفصيل سبب البلاغ، إذا كنت تبلغ عن ملاحظة أرفق رابط لها."
|
||||||
|
abuseReported: "أُرسل البلاغ، شكرًا لك"
|
||||||
|
send: "أرسل"
|
||||||
|
abuseMarkAsResolved: "علّم البلاغ كمحلول"
|
||||||
|
openInNewTab: "افتح في لسان جديد"
|
||||||
|
defaultNavigationBehaviour: "سلوك الملاحة الافتراضي"
|
||||||
|
waitingFor: "في انتظار {x}"
|
||||||
|
random: "عشوائي"
|
||||||
|
system: "النظام"
|
||||||
|
switchUi: "بدّل واجهة المستخدم"
|
||||||
|
createNew: "أنشِئ جديد"
|
||||||
|
optional: "اختياري"
|
||||||
public: "للعامة"
|
public: "للعامة"
|
||||||
|
i18nInfo: "يترجم متطوعون ميسكي إلى عدة لغات، يمكنك المساعدة عبر {link}"
|
||||||
|
manageAccessTokens: "إدارة رموز الوصول"
|
||||||
|
accountInfo: "معلومات الحساب"
|
||||||
|
notesCount: "عدد الملاحظات"
|
||||||
|
repliesCount: "عدد الردود المرسلة"
|
||||||
|
renotesCount: "عدد الملاحظات المعاد نشرها (المرسلة)"
|
||||||
|
repliedCount: "عدد الردود المستلمة"
|
||||||
|
renotedCount: "عدد الملاحظات المعاد نشرها (المستلمة)"
|
||||||
|
followingCount: "عدد الحسابات المتابَعة"
|
||||||
|
followersCount: "عدد المتابِعين"
|
||||||
|
sentReactionsCount: "عدد الانفعالات المرسلة"
|
||||||
|
receivedReactionsCount: "عدد الانفعالات المستلمة"
|
||||||
|
pollVotesCount: "عدد الاستطلاعات المرسلة"
|
||||||
|
pollVotedCount: "عدد الاستطلاعات المستلمة"
|
||||||
|
yes: "نعم"
|
||||||
|
no: "لا"
|
||||||
|
driveFilesCount: "عدد الملفات في قرص التخزين"
|
||||||
|
useSystemFont: "استخدم الخط الافتراضية للنظام"
|
||||||
|
experimentalFeatures: "ميّزات اختبارية"
|
||||||
|
developer: "المطور"
|
||||||
|
clearCache: "امسح التخزين المؤقت"
|
||||||
currentVersion: "الإصدار الحالي"
|
currentVersion: "الإصدار الحالي"
|
||||||
latestVersion: "آخر نسخة مستقرة"
|
latestVersion: "آخر نسخة مستقرة"
|
||||||
usageAmount: "الإستخدام"
|
usageAmount: "الإستخدام"
|
||||||
capacity: "السعة"
|
capacity: "السعة"
|
||||||
inUse: "مستخدم"
|
inUse: "مستخدم"
|
||||||
|
useReactionPickerForContextMenu: "افتح منتقي التفاعلات عند التقر بالزر الأيمن"
|
||||||
|
typingUsers: "{users} يكتب(ون)..."
|
||||||
|
jumpToSpecifiedDate: "انتقل إلى التاريخ المحدد"
|
||||||
|
showingPastTimeline: "أنت تستعرض حاليًا خيطًا زمنيًا قديمًا"
|
||||||
|
markAllAsRead: "علّم الكل كمقروء"
|
||||||
|
goBack: "رجوع"
|
||||||
|
unlikeConfirm: "أتريد إلغاء إعجابك؟"
|
||||||
|
fullView: "ملء الشاشة"
|
||||||
|
quitFullView: "اخرج من وضع ملء للشاشة"
|
||||||
|
addDescription: "أضف وصفًا"
|
||||||
info: "عن"
|
info: "عن"
|
||||||
|
userInfo: "معلومات المستخدم"
|
||||||
|
unknown: "مجهول"
|
||||||
|
onlineStatus: "الحالة"
|
||||||
|
hideOnlineStatus: "اخف الحالة"
|
||||||
|
online: "متصل"
|
||||||
|
active: "نشط"
|
||||||
|
offline: "غير متصل"
|
||||||
|
notRecommended: "غير مستحسن"
|
||||||
|
botProtection: "الحماية من الحسابات الآلية"
|
||||||
|
instanceBlocking: "المثيلات المحجوبة"
|
||||||
|
selectAccount: "اختر حسابًا"
|
||||||
|
enabled: "مفعّل"
|
||||||
|
disabled: "معطّل"
|
||||||
|
quickAction: "الإجراءات السّريعة"
|
||||||
user: "المستخدمون"
|
user: "المستخدمون"
|
||||||
administration: "إدارة "
|
administration: "إدارة "
|
||||||
|
accounts: "الحسابات"
|
||||||
|
switch: "بدّل"
|
||||||
|
noBotProtectionWarning: "لم تضبط الحماية من الحسابات الآلية"
|
||||||
|
configure: "اضبط"
|
||||||
|
postToGallery: "انشر في المعرض"
|
||||||
|
gallery: "المعرض"
|
||||||
|
recentPosts: "المشاركات الحديثة"
|
||||||
|
shareWithNote: "شاركه في ملاحظة"
|
||||||
|
ads: "الإعلانات"
|
||||||
expiration: "ينتهي استطلاع الرأي في"
|
expiration: "ينتهي استطلاع الرأي في"
|
||||||
|
priority: "الأولوية"
|
||||||
|
high: "عالية"
|
||||||
middle: "متوسط"
|
middle: "متوسط"
|
||||||
|
low: "منخفضة"
|
||||||
|
emailNotConfiguredWarning: "لم تعيّن بريدًا إلكترونيًا"
|
||||||
|
ratio: "النسبة"
|
||||||
|
previewNoteText: "اعرض معاينة"
|
||||||
|
customCss: "CSS مخصصة"
|
||||||
global: "الشامل"
|
global: "الشامل"
|
||||||
|
squareAvatars: "اعرض شكل الصور الرمزية كمربعات"
|
||||||
|
sent: "أرسل"
|
||||||
|
received: "اُستلم"
|
||||||
|
searchResult: "نتائج البحث"
|
||||||
|
hashtags: "الوسوم"
|
||||||
|
learnMore: "راجع المزيد"
|
||||||
|
misskeyUpdated: "حُدث ميسكي!"
|
||||||
|
whatIsNew: "اعرض التغييرات"
|
||||||
|
translate: "ترجم"
|
||||||
|
translatedFrom: "تُرجم من {x}"
|
||||||
|
accountDeletionInProgress: "حذف الحساب جارٍ"
|
||||||
|
usernameInfo: "الاسم الذي يميزك عن بافي مستخدمي هذا الخادم، يمكنك استخدام الحروف اللاتينية (a~z, A~Z) والأرقام (0~9) والشرطة السفلية (_). لا يمكنك تغييره بعد تسجيله."
|
||||||
|
lastCommunication: "آخر تواصل"
|
||||||
|
itsOn: "مفعّل"
|
||||||
|
itsOff: "معطّل"
|
||||||
|
emailRequiredForSignup: "عنوان البريد الإلكتروني إلزامي للتسجيل"
|
||||||
|
filter: "رشّح"
|
||||||
|
controlPanel: "لوحة التحكم"
|
||||||
|
manageAccounts: "إدارة الحسابات"
|
||||||
|
makeReactionsPublic: "اجعل سجل التفاعلات علنيًا"
|
||||||
|
makeReactionsPublicDescription: "هذا سيجعل قائمة تفاعلاتك مرئية للعلن."
|
||||||
|
classic: "تقليدي"
|
||||||
|
_docs:
|
||||||
|
admin: "إدارة "
|
||||||
|
_gallery:
|
||||||
|
unlike: "أزل الإعجاب"
|
||||||
_email:
|
_email:
|
||||||
_follow:
|
_follow:
|
||||||
title: "يتابعك"
|
title: "يتابعك"
|
||||||
|
_registry:
|
||||||
|
keys: "المفاتيح"
|
||||||
|
domain: "النّطاق"
|
||||||
|
createKey: "أنشئ مفتاحًا"
|
||||||
|
_aboutMisskey:
|
||||||
|
about: "ميسكي هو برمجية مفتوحة المصدر يطورها syuilo منذ 2014."
|
||||||
|
contributors: "المساهم الرئيسي"
|
||||||
|
allContributors: "كل المساهمين"
|
||||||
|
source: "الشفرة المصدرية"
|
||||||
|
translation: "ترجم ميسكي"
|
||||||
|
donate: "تبرع لميسكي"
|
||||||
|
morePatrons: "نحن نقدر الدعم الذي قدمه العديد من الأشخاص الذين لم نذكرهم. شكرًا لكم 🥰"
|
||||||
|
patrons: "الداعمون"
|
||||||
|
_nsfw:
|
||||||
|
force: "اخف كل الوسائط"
|
||||||
_mfm:
|
_mfm:
|
||||||
mention: "أشر الى"
|
mention: "أشر الى"
|
||||||
|
hashtag: "الوسوم"
|
||||||
|
url: "الرابط"
|
||||||
|
urlDescription: "يمكن عرض الروابط"
|
||||||
|
link: "رابط"
|
||||||
|
bold: "عريض"
|
||||||
|
small: "صغير"
|
||||||
quote: "اقتبس"
|
quote: "اقتبس"
|
||||||
emoji: "إيموجي مخصص"
|
emoji: "إيموجي مخصص"
|
||||||
search: "البحث"
|
search: "البحث"
|
||||||
_reversi:
|
_reversi:
|
||||||
|
gameSettings: "إعدادات اللعبة"
|
||||||
|
chooseBoard: "اختر اللوح"
|
||||||
|
blackOrWhite: "أسود/أبيض"
|
||||||
|
blackIs: "{name} سيلعب بالأسود"
|
||||||
|
botSettings: "خيارات الحسابات الآلية"
|
||||||
|
waitingBoth: "استعد"
|
||||||
|
ready: "جاهز"
|
||||||
|
cancelReady: "ألغ الجهوزية"
|
||||||
|
opponentTurn: "دور الخصم"
|
||||||
|
myTurn: "دورك"
|
||||||
|
turnOf: "دور {name}"
|
||||||
|
pastTurnOf: "دور {name}"
|
||||||
|
surrender: "استسلم"
|
||||||
|
drawn: "تعادل"
|
||||||
|
won: "فاز {name}"
|
||||||
|
black: "أسود"
|
||||||
|
white: "أبيض"
|
||||||
total: "المجموع"
|
total: "المجموع"
|
||||||
|
turnCount: "الدور {count}"
|
||||||
|
myGames: "جولاتي"
|
||||||
|
allGames: "كل الجولات"
|
||||||
|
ended: "انتهت"
|
||||||
|
playing: "يُلعب الآن"
|
||||||
_channel:
|
_channel:
|
||||||
featured: "المتداوَلة"
|
featured: "المتداوَلة"
|
||||||
_menuDisplay:
|
_menuDisplay:
|
||||||
@@ -449,17 +707,21 @@ _theme:
|
|||||||
install: "تنصيب قالب"
|
install: "تنصيب قالب"
|
||||||
manage: "إدارة القوالب"
|
manage: "إدارة القوالب"
|
||||||
code: "شيفرة القالب"
|
code: "شيفرة القالب"
|
||||||
|
description: "الوصف"
|
||||||
installed: "تم تنصيب {name}"
|
installed: "تم تنصيب {name}"
|
||||||
make: "إنشاء قالب"
|
make: "إنشاء قالب"
|
||||||
alpha: "الشفافية"
|
alpha: "الشفافية"
|
||||||
keys:
|
keys:
|
||||||
|
link: "رابط"
|
||||||
|
hashtag: "وسم"
|
||||||
mention: "أشر الى"
|
mention: "أشر الى"
|
||||||
messageBg: "خلفية الدردشة"
|
renote: "أعد النشر"
|
||||||
|
messageBg: "خلفية المحادثة"
|
||||||
_sfx:
|
_sfx:
|
||||||
note: "الملاحظات"
|
note: "الملاحظات"
|
||||||
noteMy: "ملاحظتي"
|
noteMy: "ملاحظتي"
|
||||||
notification: "الإشعارات"
|
notification: "الإشعارات"
|
||||||
chat: "الدردشة"
|
chat: "المحادثة"
|
||||||
_ago:
|
_ago:
|
||||||
unknown: "مجهول"
|
unknown: "مجهول"
|
||||||
future: "المستقبَل"
|
future: "المستقبَل"
|
||||||
@@ -479,11 +741,35 @@ _time:
|
|||||||
_tutorial:
|
_tutorial:
|
||||||
title: "كيف تستخدم Misskey"
|
title: "كيف تستخدم Misskey"
|
||||||
step1_1: "مرحبًا!"
|
step1_1: "مرحبًا!"
|
||||||
|
step1_2: "تدعى هذه الصفحة 'الخيط الزمني' وهي تحوي ملاحظات الأشخاص الذي تتابعهم مرتبة حسب تاريخ نشرها."
|
||||||
|
step1_3: "خيطك الزمني فارغ حاليًا بما أنك لا تتابع أي شخص ولم تنشر أي ملاحظة."
|
||||||
|
step2_1: "لننهي إعداد ملفك الشخصي قبل كتابة ملاحظة أو متابعة أشخاص."
|
||||||
|
step3_1: "هل أنهيت إعداد حسابك؟"
|
||||||
|
step3_2: "إذا تاليًا للنشر ملاحظة. أنقر على أيقونة القلم في أعلى الشاشة"
|
||||||
|
step5_3: "لمتابعة مستخدمين ادخل ملفهم الشخصي بالنقر على صورتهم الشخصية ثم اضغط زر 'تابع'."
|
||||||
_2fa:
|
_2fa:
|
||||||
registerKey: "تسجيل مفتاح أمان جديد"
|
registerKey: "تسجيل مفتاح أمان جديد"
|
||||||
_permissions:
|
_permissions:
|
||||||
|
"read:account": "اعرض معلومات حسابك"
|
||||||
"write:account": "تعديل معلومات حسابك"
|
"write:account": "تعديل معلومات حسابك"
|
||||||
|
"read:blocks": "اعرض قائمة المستخدمين المحجوبين"
|
||||||
|
"write:blocks": "عدّل قائمة المستخدمين المحجوبين"
|
||||||
|
"read:drive": "تصفح قرص التخزين"
|
||||||
|
"write:drive": "احذف أو عدّل محتويات قرص التخزين"
|
||||||
|
"read:favorites": "اعرض المفضلة"
|
||||||
|
"write:favorites": "عدّل المفضلة"
|
||||||
"read:notifications": "اظهر الإشعارات"
|
"read:notifications": "اظهر الإشعارات"
|
||||||
|
"read:reactions": "اعرض تفاعلاتك"
|
||||||
|
"write:reactions": "عدّل تفاعلاتك"
|
||||||
|
"write:votes": "صوّت"
|
||||||
|
"read:pages": "اعرض صفحاتك"
|
||||||
|
"write:pages": "عدّل أو احذف صفحاتك"
|
||||||
|
"read:user-groups": "اعرض مجموعات المستخدمين"
|
||||||
|
"write:user-groups": "عدّل أو احذف مجموعات المستخدمين"
|
||||||
|
"read:gallery": "اعرض المعرض"
|
||||||
|
"write:gallery": "عدّل المعرض"
|
||||||
|
_auth:
|
||||||
|
shareAccess: "أتريد التفويض لـ \"{name}\" بالوصول لحسابك؟"
|
||||||
_weekday:
|
_weekday:
|
||||||
sunday: "الأحد"
|
sunday: "الأحد"
|
||||||
monday: "الإثنين"
|
monday: "الإثنين"
|
||||||
@@ -534,39 +820,74 @@ _poll:
|
|||||||
_visibility:
|
_visibility:
|
||||||
public: "للعامة"
|
public: "للعامة"
|
||||||
home: "الرئيسي"
|
home: "الرئيسي"
|
||||||
followers: "المتابِعين"
|
followers: "المتابِعون"
|
||||||
specified: "مباشرة"
|
specified: "مباشرة"
|
||||||
localOnly: "المحلي فقط"
|
localOnly: "المحلي فقط"
|
||||||
_postForm:
|
_postForm:
|
||||||
replyPlaceholder: "رد على هذه الملاحظة…"
|
replyPlaceholder: "رد على هذه الملاحظة…"
|
||||||
quotePlaceholder: "اقتبس هذه الملاحظة…"
|
quotePlaceholder: "اقتبس هذه الملاحظة…"
|
||||||
|
channelPlaceholder: "انشر في قناة..."
|
||||||
|
_placeholders:
|
||||||
|
c: "ما الذي تفكر فيه؟"
|
||||||
|
d: "ما الذي تريد قوله؟"
|
||||||
|
e: "أكتب..."
|
||||||
_profile:
|
_profile:
|
||||||
name: "الإسم"
|
name: "الإسم"
|
||||||
username: "اسم المستخدم"
|
username: "اسم المستخدم"
|
||||||
|
description: "السيرة"
|
||||||
youCanIncludeHashtags: "يمكنك أيضًا إضافة وسوم إلى نبذتك التعريفية."
|
youCanIncludeHashtags: "يمكنك أيضًا إضافة وسوم إلى نبذتك التعريفية."
|
||||||
|
metadata: "معلومات إضافية"
|
||||||
|
metadataEdit: "عدّل المعلومات الإضافية"
|
||||||
|
metadataDescription: "يُمكنك عرض 4 حقول معلومات في ملفك الشخصي"
|
||||||
|
metadataLabel: "التسمية"
|
||||||
|
metadataContent: "المحتوى"
|
||||||
|
changeAvatar: "غيّر الصورة الرمزية"
|
||||||
|
changeBanner: "غيّر اللافتة"
|
||||||
_exportOrImport:
|
_exportOrImport:
|
||||||
allNotes: "كل الملاحظات"
|
allNotes: "كل الملاحظات"
|
||||||
followingList: "المتابَعون"
|
followingList: "المتابَعون"
|
||||||
muteList: "اكتم"
|
muteList: "المستخدمون المكتومون"
|
||||||
blockingList: "احجب"
|
blockingList: "المستخدمون المحجوبون"
|
||||||
userLists: "القوائم"
|
userLists: "القوائم"
|
||||||
_charts:
|
_charts:
|
||||||
usersTotal: "مجموع عدد المستخدمين والمستخدمات"
|
usersTotal: "مجموع عدد المستخدمين والمستخدمات"
|
||||||
activeUsers: "المستخدمون النشطون"
|
activeUsers: "المستخدمون النشطون"
|
||||||
|
notesTotal: "إجمالي الملاحظات"
|
||||||
_timelines:
|
_timelines:
|
||||||
home: "الرئيسي"
|
home: "الرئيسي"
|
||||||
local: "المحلي"
|
local: "المحلي"
|
||||||
social: "الاجتماعي"
|
social: "الاجتماعي"
|
||||||
global: "الشامل"
|
global: "الشامل"
|
||||||
_rooms:
|
_rooms:
|
||||||
|
leaveConfirm: "لديك تغييرات غير محفوظة. أتريد المتابعة دون حفظها؟"
|
||||||
|
chooseImage: "اختر صورة"
|
||||||
|
roomType: "نوع الغرفة"
|
||||||
_roomType:
|
_roomType:
|
||||||
default: "افتراضي"
|
default: "افتراضي"
|
||||||
|
washitsu: "الأسلوب الياباني"
|
||||||
_furnitures:
|
_furnitures:
|
||||||
|
milk: "علبة حليب"
|
||||||
|
bed: "سرير"
|
||||||
|
low-table: "طاولة قصيرة"
|
||||||
|
desk: "مكتب"
|
||||||
|
chair: "كرسي"
|
||||||
|
chair2: "كرسي 2"
|
||||||
|
pc: "حاسوب"
|
||||||
monitor: "شاشة التحكم"
|
monitor: "شاشة التحكم"
|
||||||
banknote: "أوراق نقدية"
|
banknote: "أوراق نقدية"
|
||||||
_pages:
|
_pages:
|
||||||
|
viewPage: "اعرض صفحاتك"
|
||||||
|
like: "أعجبني"
|
||||||
|
unlike: "أزل الإعجاب"
|
||||||
|
my: "صفحاتي"
|
||||||
blocks:
|
blocks:
|
||||||
image: "الصور"
|
image: "الصور"
|
||||||
|
_post:
|
||||||
|
text: "المحتوى"
|
||||||
|
_button:
|
||||||
|
_action:
|
||||||
|
_dialog:
|
||||||
|
content: "المحتوى"
|
||||||
script:
|
script:
|
||||||
categories:
|
categories:
|
||||||
list: "القوائم"
|
list: "القوائم"
|
||||||
@@ -595,9 +916,11 @@ _notification:
|
|||||||
youGotMessagingMessageFromUser: "لقد تلقيت رسالة مِن {name}"
|
youGotMessagingMessageFromUser: "لقد تلقيت رسالة مِن {name}"
|
||||||
youGotMessagingMessageFromGroup: "لقد أرسِلَت رسالة إلى الفريق {name}"
|
youGotMessagingMessageFromGroup: "لقد أرسِلَت رسالة إلى الفريق {name}"
|
||||||
youWereFollowed: "يتابعك"
|
youWereFollowed: "يتابعك"
|
||||||
|
youWereInvitedToGroup: "دُعيت إلى مجموعة"
|
||||||
_types:
|
_types:
|
||||||
follow: "المتابَعون"
|
follow: "المتابَعون"
|
||||||
mention: "أشر الى"
|
mention: "أشر الى"
|
||||||
|
renote: "أعد النشر"
|
||||||
quote: "اقتبس"
|
quote: "اقتبس"
|
||||||
reaction: "تفاعل"
|
reaction: "تفاعل"
|
||||||
_deck:
|
_deck:
|
||||||
|
@@ -111,6 +111,7 @@ editWidgets: "Upravit widget"
|
|||||||
editWidgetsExit: "Hotovo"
|
editWidgetsExit: "Hotovo"
|
||||||
customEmojis: "Vlastní emoji"
|
customEmojis: "Vlastní emoji"
|
||||||
emoji: "Emoji"
|
emoji: "Emoji"
|
||||||
|
emojis: "Emoji"
|
||||||
emojiName: "Jméno emoji"
|
emojiName: "Jméno emoji"
|
||||||
emojiUrl: "URL obrázku"
|
emojiUrl: "URL obrázku"
|
||||||
addEmoji: "Přidat emoji"
|
addEmoji: "Přidat emoji"
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -7,6 +7,7 @@ search: "Buscar"
|
|||||||
notifications: "Notificaciones"
|
notifications: "Notificaciones"
|
||||||
username: "Nombre de usuario"
|
username: "Nombre de usuario"
|
||||||
password: "Contraseña"
|
password: "Contraseña"
|
||||||
|
forgotPassword: "Olvidé mi Contraseña"
|
||||||
fetchingAsApObject: "Buscando en el fediverso"
|
fetchingAsApObject: "Buscando en el fediverso"
|
||||||
ok: "OK"
|
ok: "OK"
|
||||||
gotIt: "Entendido"
|
gotIt: "Entendido"
|
||||||
@@ -127,6 +128,7 @@ editWidgets: "Editar widgets"
|
|||||||
editWidgetsExit: "Terminar edición"
|
editWidgetsExit: "Terminar edición"
|
||||||
customEmojis: "Emojis personalizados"
|
customEmojis: "Emojis personalizados"
|
||||||
emoji: "Emoji"
|
emoji: "Emoji"
|
||||||
|
emojis: "Emoji"
|
||||||
emojiName: "Nombre del emoji"
|
emojiName: "Nombre del emoji"
|
||||||
emojiUrl: "URL de la imágen del emoji"
|
emojiUrl: "URL de la imágen del emoji"
|
||||||
addEmoji: "Agregar emoji"
|
addEmoji: "Agregar emoji"
|
||||||
@@ -278,6 +280,7 @@ emptyDrive: "El drive está vacío"
|
|||||||
emptyFolder: "La carpeta está vacía"
|
emptyFolder: "La carpeta está vacía"
|
||||||
unableToDelete: "No se puede borrar"
|
unableToDelete: "No se puede borrar"
|
||||||
inputNewFileName: "Ingrese un nuevo nombre de archivo"
|
inputNewFileName: "Ingrese un nuevo nombre de archivo"
|
||||||
|
inputNewDescription: "Ingrese nueva descripción"
|
||||||
inputNewFolderName: "Ingrese un nuevo nombre de la carpeta"
|
inputNewFolderName: "Ingrese un nuevo nombre de la carpeta"
|
||||||
circularReferenceFolder: "La carpeta de destino es una sub-carpeta de la carpeta que quieres mover."
|
circularReferenceFolder: "La carpeta de destino es una sub-carpeta de la carpeta que quieres mover."
|
||||||
hasChildFilesOrFolders: "No se puede borrar esta carpeta. No está vacía."
|
hasChildFilesOrFolders: "No se puede borrar esta carpeta. No está vacía."
|
||||||
@@ -309,6 +312,8 @@ monthX: "Mes {month}"
|
|||||||
yearX: "Año {year}"
|
yearX: "Año {year}"
|
||||||
pages: "Páginas"
|
pages: "Páginas"
|
||||||
integration: "Integración"
|
integration: "Integración"
|
||||||
|
connectService: "Conectar"
|
||||||
|
disconnectService: "Desconectar"
|
||||||
enableLocalTimeline: "Habilitar linea de tiempo local"
|
enableLocalTimeline: "Habilitar linea de tiempo local"
|
||||||
enableGlobalTimeline: "Habilitar linea de tiempo global"
|
enableGlobalTimeline: "Habilitar linea de tiempo global"
|
||||||
disablingTimelinesInfo: "Aunque se desactiven estas lineas de tiempo, por conveniencia el administrador y los moderadores pueden seguir usándolos"
|
disablingTimelinesInfo: "Aunque se desactiven estas lineas de tiempo, por conveniencia el administrador y los moderadores pueden seguir usándolos"
|
||||||
@@ -322,6 +327,7 @@ driveCapacityPerRemoteAccount: "Capacidad del drive por usuario remoto"
|
|||||||
inMb: "En megabytes"
|
inMb: "En megabytes"
|
||||||
iconUrl: "URL de la imagen del avatar"
|
iconUrl: "URL de la imagen del avatar"
|
||||||
bannerUrl: "URL de la imagen del banner"
|
bannerUrl: "URL de la imagen del banner"
|
||||||
|
backgroundImageUrl: "URL de la imagen de fondo"
|
||||||
basicInfo: "Información básica"
|
basicInfo: "Información básica"
|
||||||
pinnedUsers: "Usuarios fijados"
|
pinnedUsers: "Usuarios fijados"
|
||||||
pinnedUsersDescription: "Describir los usuarios que quiere fijar en la página \"Descubrir\" separados por una linea nueva"
|
pinnedUsersDescription: "Describir los usuarios que quiere fijar en la página \"Descubrir\" separados por una linea nueva"
|
||||||
@@ -523,6 +529,9 @@ removeAllFollowing: "Retener todos los siguientes"
|
|||||||
removeAllFollowingDescription: "Cancelar todos los siguientes del servidor {host}. Ejecutar en caso de que esta instancia haya dejado de existir"
|
removeAllFollowingDescription: "Cancelar todos los siguientes del servidor {host}. Ejecutar en caso de que esta instancia haya dejado de existir"
|
||||||
userSuspended: "Este usuario ha sido suspendido."
|
userSuspended: "Este usuario ha sido suspendido."
|
||||||
userSilenced: "Este usuario ha sido silenciado."
|
userSilenced: "Este usuario ha sido silenciado."
|
||||||
|
yourAccountSuspendedTitle: "Esta cuenta ha sido suspendida"
|
||||||
|
yourAccountSuspendedDescription: "Esta cuenta ha sido suspendida debido a violaciones de los términos de servicio del servidor y otras razones. Para más información, póngase en contacto con el administrador. Por favor, no cree una nueva cuenta."
|
||||||
|
menu: "Menú"
|
||||||
divider: "Divisor"
|
divider: "Divisor"
|
||||||
addItem: "Agregar elemento"
|
addItem: "Agregar elemento"
|
||||||
rooms: "Cuartos"
|
rooms: "Cuartos"
|
||||||
@@ -542,6 +551,8 @@ disablePlayer: "Cerrar reproductor"
|
|||||||
expandTweet: "Expandir tweet"
|
expandTweet: "Expandir tweet"
|
||||||
themeEditor: "Editor de temas"
|
themeEditor: "Editor de temas"
|
||||||
description: "Descripción"
|
description: "Descripción"
|
||||||
|
describeFile: "Añade una descripción"
|
||||||
|
enterFileDescription: "Introducir un título"
|
||||||
author: "Autor"
|
author: "Autor"
|
||||||
leaveConfirm: "Hay modificaciones sin guardar. ¿Desea descartarlas?"
|
leaveConfirm: "Hay modificaciones sin guardar. ¿Desea descartarlas?"
|
||||||
manage: "Administrar"
|
manage: "Administrar"
|
||||||
@@ -644,27 +655,92 @@ driveFilesCount: "Cantidad de archivos en el drive"
|
|||||||
driveUsage: "Uso del drive"
|
driveUsage: "Uso del drive"
|
||||||
noCrawle: "Rechazar indexación del crawler"
|
noCrawle: "Rechazar indexación del crawler"
|
||||||
noCrawleDescription: "Pedir a los motores de búsqueda que no indexen tu perfil, notas, páginas, etc."
|
noCrawleDescription: "Pedir a los motores de búsqueda que no indexen tu perfil, notas, páginas, etc."
|
||||||
|
lockedAccountInfo: "A menos que configures la visibilidad de tus notas como \"Sólo seguidores\", tus notas serán visibles para cualquiera, incluso si requieres que los seguidores sean aprobados manualmente."
|
||||||
alwaysMarkSensitive: "Marcar los medios de comunicación como contenido sensible por defecto"
|
alwaysMarkSensitive: "Marcar los medios de comunicación como contenido sensible por defecto"
|
||||||
|
loadRawImages: "Cargar las imágenes originales en lugar de mostrar las miniaturas"
|
||||||
|
disableShowingAnimatedImages: "No reproducir imágenes animadas"
|
||||||
verificationEmailSent: "Se le ha enviado un correo electrónico de confirmación. Por favor, acceda al enlace proporcionado en el correo electrónico para completar la configuración."
|
verificationEmailSent: "Se le ha enviado un correo electrónico de confirmación. Por favor, acceda al enlace proporcionado en el correo electrónico para completar la configuración."
|
||||||
notSet: "Sin especificar"
|
notSet: "Sin especificar"
|
||||||
emailVerified: "Su dirección de correo electrónico ha sido verificada."
|
emailVerified: "Su dirección de correo electrónico ha sido verificada."
|
||||||
noteFavoritesCount: "Número de notas favoritas"
|
noteFavoritesCount: "Número de notas favoritas"
|
||||||
pageLikesCount: "Número de favoritos en la página"
|
pageLikesCount: "Número de favoritos en la página"
|
||||||
pageLikedCount: "Número de favoritos de su página"
|
pageLikedCount: "Número de favoritos de su página"
|
||||||
|
reversiCount: "Numero de partidas Reversi"
|
||||||
contact: "Contacto"
|
contact: "Contacto"
|
||||||
|
useSystemFont: "Utilizar la tipografía por defecto del sistema"
|
||||||
clips: "Clip"
|
clips: "Clip"
|
||||||
|
experimentalFeatures: "Características experimentales"
|
||||||
|
developer: "Desarrolladores"
|
||||||
|
makeExplorable: "Hacer visible la cuenta en \"Explorar\""
|
||||||
|
makeExplorableDescription: "Si desactiva esta opción, su cuenta no aparecerá en la sección \"Explorar\"."
|
||||||
|
showGapBetweenNotesInTimeline: "Mostrar un intervalo entre notas en la línea de tiempo"
|
||||||
|
duplicate: "Duplicar"
|
||||||
|
left: "Izquierda"
|
||||||
|
center: "Centrar"
|
||||||
|
wide: "Ancho"
|
||||||
|
narrow: "Estrecho"
|
||||||
|
reloadToApplySetting: "Esta configuración sólo se aplicará después de recargar la página. ¿Recargar ahora?"
|
||||||
|
showTitlebar: "Mostrar la barra de título"
|
||||||
clearCache: "Limpiar caché"
|
clearCache: "Limpiar caché"
|
||||||
|
onlineUsersCount: "{n} usuarios en línea"
|
||||||
|
nUsers: "{n} Usuarios"
|
||||||
|
nNotes: "{n} Notas"
|
||||||
|
sendErrorReports: "Envíar informe de errores"
|
||||||
|
sendErrorReportsDescription: "Si habilita esta opción, ayudará a mejorar la calidad de Misskey compartiendo información detallada sobre los errores cuando se produzca un problema.\nEsto incluye información como la versión de su sistema operativo, el tipo de navegador que utiliza, su historial de actividad, etc."
|
||||||
|
myTheme: "Mi Tema"
|
||||||
backgroundColor: "Fondo"
|
backgroundColor: "Fondo"
|
||||||
accentColor: "Acento"
|
accentColor: "Acento"
|
||||||
textColor: "Texto"
|
textColor: "Texto"
|
||||||
|
saveAs: "Guardar como…"
|
||||||
|
advanced: "Avanzado"
|
||||||
value: "Valores"
|
value: "Valores"
|
||||||
|
createdAt: "Fecha de creación"
|
||||||
|
updatedAt: "Actualizado"
|
||||||
|
saveConfirm: "¿Guardar cambios?"
|
||||||
|
deleteConfirm: "¿Desea eliminarlo?"
|
||||||
|
invalidValue: "Este no es un valor válido."
|
||||||
|
registry: "Registro"
|
||||||
|
closeAccount: "Cerrar cuenta"
|
||||||
|
currentVersion: "Versión actual"
|
||||||
|
latestVersion: "Última versión"
|
||||||
|
youAreRunningUpToDateClient: "Está utilizando la versión más reciente de su cliente."
|
||||||
|
newVersionOfClientAvailable: "Hay una versión más nueva de su cliente disponible."
|
||||||
|
usageAmount: "Uso"
|
||||||
|
capacity: "Capacidad"
|
||||||
|
inUse: "Usado"
|
||||||
|
editCode: "Editar código"
|
||||||
goBack: "Deseleccionar"
|
goBack: "Deseleccionar"
|
||||||
info: "Información"
|
info: "Información"
|
||||||
user: "Usuarios"
|
user: "Usuarios"
|
||||||
administration: "Administrar"
|
administration: "Administrar"
|
||||||
expiration: "Termina el"
|
expiration: "Termina el"
|
||||||
middle: "Mediano"
|
middle: "Mediano"
|
||||||
|
customCssWarn: "Este ajuste sólo debe utilizarse si se sabe lo que hace. Introducir valores inadecuados puede hacer que el cliente deje de funcionar con normalidad."
|
||||||
global: "Global"
|
global: "Global"
|
||||||
|
squareAvatars: "Mostrar iconos cuadrados"
|
||||||
|
sent: "Enviar"
|
||||||
|
received: "Recibido"
|
||||||
|
searchResult: "Resultados de búsqueda"
|
||||||
|
hashtags: "Hashtag"
|
||||||
|
troubleshooting: "Solución de problemas"
|
||||||
|
useBlurEffect: "Utilizar efecto de desenfoque en la interfaz de usuario"
|
||||||
|
learnMore: "Ver más"
|
||||||
|
misskeyUpdated: "¡Misskey ha sido actualizado!"
|
||||||
|
whatIsNew: "Mostrar cambios"
|
||||||
|
translate: "Traducir"
|
||||||
|
translatedFrom: "Traducido de {x}"
|
||||||
|
accountDeletionInProgress: "La eliminación de la cuenta está en curso"
|
||||||
|
usernameInfo: "Un nombre que identifique su cuenta de otras en este servidor. Puede utilizar el alfabeto (a~z, A~Z), dígitos (0~9) o guiones bajos (_). Los nombres de usuario no se pueden cambiar posteriormente."
|
||||||
|
aiChanMode: "Modo Ai"
|
||||||
|
keepCw: "Mantener la advertencia de contenido"
|
||||||
|
pubSub: "Cuentas Pub/Sub"
|
||||||
|
lastCommunication: "Última comunicación"
|
||||||
|
resolved: "Resuelto"
|
||||||
|
unresolved: "Sin resolver"
|
||||||
|
_accountDelete:
|
||||||
|
accountDelete: "Eliminar Cuenta"
|
||||||
|
_docs:
|
||||||
|
admin: "Administrar"
|
||||||
_ad:
|
_ad:
|
||||||
back: "Deseleccionar"
|
back: "Deseleccionar"
|
||||||
_gallery:
|
_gallery:
|
||||||
|
@@ -81,6 +81,8 @@ somethingHappened: "Une erreur est survenue"
|
|||||||
retry: "Réessayer"
|
retry: "Réessayer"
|
||||||
pageLoadError: "Le chargement de la page a échoué"
|
pageLoadError: "Le chargement de la page a échoué"
|
||||||
pageLoadErrorDescription: "Cela est généralement causé par le cache du navigateur ou par un problème réseau. Veuillez vider votre cache ou attendre un peu et réessayer."
|
pageLoadErrorDescription: "Cela est généralement causé par le cache du navigateur ou par un problème réseau. Veuillez vider votre cache ou attendre un peu et réessayer."
|
||||||
|
serverIsDead: "Le serveur ne répond pas. Patientez quelques instants puis essayez à nouveau."
|
||||||
|
youShouldUpgradeClient: "Si la page ne s'affiche pas correctement, rechargez-la pour mettre votre client à jour."
|
||||||
enterListName: "Nom de la liste"
|
enterListName: "Nom de la liste"
|
||||||
privacy: "Confidentialité"
|
privacy: "Confidentialité"
|
||||||
makeFollowManuallyApprove: "Accepter manuellement les demandes d’abonnement"
|
makeFollowManuallyApprove: "Accepter manuellement les demandes d’abonnement"
|
||||||
@@ -91,11 +93,11 @@ followRequests: "Demandes d’abonnement"
|
|||||||
unfollow: "Se désabonner"
|
unfollow: "Se désabonner"
|
||||||
followRequestPending: "Demande d'abonnement en attente de confirmation"
|
followRequestPending: "Demande d'abonnement en attente de confirmation"
|
||||||
enterEmoji: "Insérer un émoji"
|
enterEmoji: "Insérer un émoji"
|
||||||
renote: "Partager"
|
renote: "Renoter"
|
||||||
unrenote: "Annuler le partage"
|
unrenote: "Annuler la Renote"
|
||||||
renoted: "Republié !"
|
renoted: "Renoté !"
|
||||||
cantRenote: "Ce message ne peut pas être republié."
|
cantRenote: "Ce message ne peut pas être renoté."
|
||||||
cantReRenote: "Impossible de repartager un partage."
|
cantReRenote: "Impossible de renoter une Renote."
|
||||||
quote: "Citer"
|
quote: "Citer"
|
||||||
pinnedNote: "Note épinglée"
|
pinnedNote: "Note épinglée"
|
||||||
pinned: "Épingler sur le profil"
|
pinned: "Épingler sur le profil"
|
||||||
@@ -128,6 +130,7 @@ editWidgets: "Modifier les widgets"
|
|||||||
editWidgetsExit: "Valider les modifications"
|
editWidgetsExit: "Valider les modifications"
|
||||||
customEmojis: "Émojis personnalisés"
|
customEmojis: "Émojis personnalisés"
|
||||||
emoji: "Émoji"
|
emoji: "Émoji"
|
||||||
|
emojis: "Émoji"
|
||||||
emojiName: "Nom de l’émoji"
|
emojiName: "Nom de l’émoji"
|
||||||
emojiUrl: "URL de l’émoji"
|
emojiUrl: "URL de l’émoji"
|
||||||
addEmoji: "Ajouter un émoji"
|
addEmoji: "Ajouter un émoji"
|
||||||
@@ -135,7 +138,7 @@ settingGuide: "Configuration proposée"
|
|||||||
cacheRemoteFiles: "Mise en cache des fichiers distants"
|
cacheRemoteFiles: "Mise en cache des fichiers distants"
|
||||||
cacheRemoteFilesDescription: "Lorsque cette option est désactivée, les fichiers distants sont chargés directement depuis l’instance distante. La désactiver diminuera certes l’utilisation de l’espace de stockage local mais augmentera le trafic réseau puisque les miniatures ne seront plus générées."
|
cacheRemoteFilesDescription: "Lorsque cette option est désactivée, les fichiers distants sont chargés directement depuis l’instance distante. La désactiver diminuera certes l’utilisation de l’espace de stockage local mais augmentera le trafic réseau puisque les miniatures ne seront plus générées."
|
||||||
flagAsBot: "Ce compte est un robot"
|
flagAsBot: "Ce compte est un robot"
|
||||||
flagAsBotDescription: "Si ce compte est géré de manière automatisée , définissez cette option. Si elle est activée, elle agira comme un marqueur pour les autres développeurs afin d'éviter des chaînes d'interaction sans fin avec d'autres robots et d'ajuster les systèmes internes de Misskey pour traiter ce compte comme un robot."
|
flagAsBotDescription: "Si ce compte est géré de manière automatisée, choisissez cette option. Si elle est activée, elle agira comme un marqueur pour les autres développeurs afin d'éviter des chaînes d'interaction sans fin avec d'autres robots et d'ajuster les systèmes internes de Misskey pour traiter ce compte comme un robot."
|
||||||
flagAsCat: "Ce compte est un chat"
|
flagAsCat: "Ce compte est un chat"
|
||||||
flagAsCatDescription: "Activer l'option \" Je suis un chat \" pour ce compte."
|
flagAsCatDescription: "Activer l'option \" Je suis un chat \" pour ce compte."
|
||||||
autoAcceptFollowed: "Accepter automatiquement les demandes d’abonnement venant d’utilisateur·rice·s que vous suivez"
|
autoAcceptFollowed: "Accepter automatiquement les demandes d’abonnement venant d’utilisateur·rice·s que vous suivez"
|
||||||
@@ -362,7 +365,7 @@ withFiles: "Avec fichiers joints"
|
|||||||
silence: "Mettre en sourdine"
|
silence: "Mettre en sourdine"
|
||||||
silenceConfirm: "Êtes-vous sûr·e de vouloir mettre l’utilisateur·rice en sourdine ?"
|
silenceConfirm: "Êtes-vous sûr·e de vouloir mettre l’utilisateur·rice en sourdine ?"
|
||||||
unsilence: "Annuler la sourdine"
|
unsilence: "Annuler la sourdine"
|
||||||
unsilenceConfirm: "Êtes-vous sûr·e de vouloir annuler la mise en sourdine de cette utilisateur·rice ?"
|
unsilenceConfirm: "Êtes-vous sûr·e de vouloir annuler la mise en sourdine de cet·te utilisateur·rice ?"
|
||||||
popularUsers: "Utilisateur·rice·s populaires"
|
popularUsers: "Utilisateur·rice·s populaires"
|
||||||
recentlyUpdatedUsers: "Utilisateur·rice·s actif·ve·s récemment"
|
recentlyUpdatedUsers: "Utilisateur·rice·s actif·ve·s récemment"
|
||||||
recentlyRegisteredUsers: "Utilisateur·rice·s récemment inscrit·e·s"
|
recentlyRegisteredUsers: "Utilisateur·rice·s récemment inscrit·e·s"
|
||||||
@@ -376,7 +379,7 @@ aboutMisskey: "À propos de Misskey"
|
|||||||
administrator: "Administrateur"
|
administrator: "Administrateur"
|
||||||
token: "Jeton"
|
token: "Jeton"
|
||||||
twoStepAuthentication: "Authentification à deux facteurs"
|
twoStepAuthentication: "Authentification à deux facteurs"
|
||||||
moderator: "Modérateurs"
|
moderator: "Modérateur·rice·s"
|
||||||
nUsersMentioned: "{n} utilisateur·rice·s mentionné·e·s"
|
nUsersMentioned: "{n} utilisateur·rice·s mentionné·e·s"
|
||||||
securityKey: "Clé de sécurité"
|
securityKey: "Clé de sécurité"
|
||||||
securityKeyName: "Nom de la clé"
|
securityKeyName: "Nom de la clé"
|
||||||
@@ -428,7 +431,7 @@ invitationCode: "Code d’invitation"
|
|||||||
checking: "Vérification en cours..."
|
checking: "Vérification en cours..."
|
||||||
available: "Disponible"
|
available: "Disponible"
|
||||||
unavailable: "Non disponible"
|
unavailable: "Non disponible"
|
||||||
usernameInvalidFormat: "Le nom d'utilisateur peut contenir uniquement des lettres, des chiffres et des _"
|
usernameInvalidFormat: "Le nom d'utilisateur peut contenir uniquement des lettres (minuscules et/ou majuscules), des chiffres et des _"
|
||||||
tooShort: "Trop court"
|
tooShort: "Trop court"
|
||||||
tooLong: "Trop long"
|
tooLong: "Trop long"
|
||||||
weakPassword: "Mot de passe faible"
|
weakPassword: "Mot de passe faible"
|
||||||
@@ -494,7 +497,7 @@ objectStorageSetPublicRead: "Régler sur « public » lors de l'envoi"
|
|||||||
serverLogs: "Journal du serveur"
|
serverLogs: "Journal du serveur"
|
||||||
deleteAll: "Supprimer tout"
|
deleteAll: "Supprimer tout"
|
||||||
showFixedPostForm: "Afficher le formulaire de publication en haut du fil d'actualité"
|
showFixedPostForm: "Afficher le formulaire de publication en haut du fil d'actualité"
|
||||||
newNoteRecived: "Vous avez reçu une nouvelle note"
|
newNoteRecived: "Voir les nouvelles notes"
|
||||||
sounds: "Sons"
|
sounds: "Sons"
|
||||||
listen: "Écouter"
|
listen: "Écouter"
|
||||||
none: "Rien"
|
none: "Rien"
|
||||||
@@ -528,6 +531,9 @@ removeAllFollowing: "Retenir tous les abonnements"
|
|||||||
removeAllFollowingDescription: "Se désabonner de tous les comptes de {host}. Veuillez lancer cette action uniquement si l’instance n’existe plus."
|
removeAllFollowingDescription: "Se désabonner de tous les comptes de {host}. Veuillez lancer cette action uniquement si l’instance n’existe plus."
|
||||||
userSuspended: "Cet·te utilisateur·rice a été suspendu·e."
|
userSuspended: "Cet·te utilisateur·rice a été suspendu·e."
|
||||||
userSilenced: "Cette utilisateur·trice a été mis·e en sourdine."
|
userSilenced: "Cette utilisateur·trice a été mis·e en sourdine."
|
||||||
|
yourAccountSuspendedTitle: "Ce compte est suspendu"
|
||||||
|
yourAccountSuspendedDescription: "Ce compte est suspendu car vous avez enfreint les conditions d'utilisation de l'instance, ou pour un motif similaire. Si vous souhaitez connaître en détail les raisons de cette suspension, renseignez-vous auprès de l'administrateur·rice de votre instance. Merci de ne pas créer de nouveau compte."
|
||||||
|
menu: "Menu"
|
||||||
divider: "Séparateur"
|
divider: "Séparateur"
|
||||||
addItem: "Ajouter un élément"
|
addItem: "Ajouter un élément"
|
||||||
rooms: "Chambre"
|
rooms: "Chambre"
|
||||||
@@ -636,9 +642,9 @@ manageAccessTokens: "Gérer les jetons d'accès"
|
|||||||
accountInfo: " Informations du compte "
|
accountInfo: " Informations du compte "
|
||||||
notesCount: "Nombre de notes"
|
notesCount: "Nombre de notes"
|
||||||
repliesCount: "Nombre de réponses envoyées"
|
repliesCount: "Nombre de réponses envoyées"
|
||||||
renotesCount: "Nombre de notes repartagées"
|
renotesCount: "Nombre de notes que vous avez renotées"
|
||||||
repliedCount: "Nombre de réponses reçues"
|
repliedCount: "Nombre de réponses reçues"
|
||||||
renotedCount: "Nombre de Renotes"
|
renotedCount: "Nombre de vos notes renotées"
|
||||||
followingCount: "Nombre de comptes suivis"
|
followingCount: "Nombre de comptes suivis"
|
||||||
followersCount: "Nombre d'abonnés"
|
followersCount: "Nombre d'abonnés"
|
||||||
sentReactionsCount: "Nombre de réactions envoyées"
|
sentReactionsCount: "Nombre de réactions envoyées"
|
||||||
@@ -760,7 +766,57 @@ middle: "Moyen"
|
|||||||
low: "Basse"
|
low: "Basse"
|
||||||
emailNotConfiguredWarning: "Vous n'avez pas configuré d'adresse e-mail."
|
emailNotConfiguredWarning: "Vous n'avez pas configuré d'adresse e-mail."
|
||||||
ratio: "Ratio"
|
ratio: "Ratio"
|
||||||
|
previewNoteText: "Voir l'aperçu"
|
||||||
|
customCss: "CSS personnalisé"
|
||||||
|
customCssWarn: "Utilisez cette fonctionnalité uniquement si vous savez exactement ce que vous faites. Une configuration inadaptée peut empêcher le client de s'exécuter normalement."
|
||||||
global: "Global"
|
global: "Global"
|
||||||
|
squareAvatars: "Avatars carrés"
|
||||||
|
sent: "Envoyer"
|
||||||
|
received: "Reçu"
|
||||||
|
searchResult: "Résultats de la recherche"
|
||||||
|
hashtags: "Hashtags"
|
||||||
|
troubleshooting: "Résolution de problèmes"
|
||||||
|
useBlurEffect: "Utiliser des effets de flou dans l'interface"
|
||||||
|
learnMore: "Plus d'informations"
|
||||||
|
misskeyUpdated: "Misskey a été mis à jour !"
|
||||||
|
whatIsNew: "Voir les derniers changements"
|
||||||
|
translate: "Traduire"
|
||||||
|
translatedFrom: "Traduit depuis {x}"
|
||||||
|
accountDeletionInProgress: "La suppression de votre compte est en cours"
|
||||||
|
usernameInfo: "C'est un nom qui identifie votre compte sur l'instance de manière unique. Vous pouvez utiliser des lettres de l'alphabet (minuscules et majuscules), des chiffres (de 0 à 9), ou bien le tiret « _ ». Vous ne pourrez pas modifier votre nom d'utilisateur·rice par la suite."
|
||||||
|
aiChanMode: "Mode Ai"
|
||||||
|
keepCw: "Garder le CW"
|
||||||
|
pubSub: "Comptes Pub/Sub"
|
||||||
|
lastCommunication: "Dernière communication"
|
||||||
|
resolved: "Résolu"
|
||||||
|
unresolved: "En attente"
|
||||||
|
itsOn: "Activé"
|
||||||
|
itsOff: "Désactivé"
|
||||||
|
emailRequiredForSignup: "Une adresse e-mail est nécessaire pour créer un compte"
|
||||||
|
unread: "Non lu"
|
||||||
|
filter: "Filtre"
|
||||||
|
controlPanel: "Panneau de contrôle"
|
||||||
|
manageAccounts: "Gérer les comptes"
|
||||||
|
classic: "Classique"
|
||||||
|
_emailUnavailable:
|
||||||
|
format: "Le format de cette adresse de courriel est invalide"
|
||||||
|
mx: "Ce serveur de courriels est invalide"
|
||||||
|
smtp: "Ce serveur de courriels ne répond pas"
|
||||||
|
_ffVisibility:
|
||||||
|
public: "Public"
|
||||||
|
followers: "Visible uniquement pour les abonné·e·s"
|
||||||
|
private: "Privé"
|
||||||
|
_signup:
|
||||||
|
almostThere: "Bientôt fini"
|
||||||
|
emailAddressInfo: "Insérez votre adresse e-mail."
|
||||||
|
emailSent: "Un courriel de confirmation vient d'être envoyé à l'adresse que vous avez renseignée ({email}). Cliquez sur le lien contenu dans le message pour terminer la création de votre compte."
|
||||||
|
_accountDelete:
|
||||||
|
accountDelete: "Supprimer le compte"
|
||||||
|
mayTakeTime: "La suppression de compte nécessitant beaucoup de ressources, l'exécution du processus peut prendre du temps, en fonction de la quantité de contenus que vous avez créés et du nombre de fichiers que vous avez téléversés."
|
||||||
|
sendEmail: "Une fois la suppression de votre compte effectuée, un courriel sera envoyé à l'adresse que vous aviez enregistrée."
|
||||||
|
requestAccountDelete: "Demander la suppression de votre compte"
|
||||||
|
started: "La procédure de suppression a commencé."
|
||||||
|
inProgress: "Suppression en cours"
|
||||||
_ad:
|
_ad:
|
||||||
back: "Retour"
|
back: "Retour"
|
||||||
reduceFrequencyOfThisAd: "Voir cette publicité moins souvent"
|
reduceFrequencyOfThisAd: "Voir cette publicité moins souvent"
|
||||||
@@ -859,6 +915,10 @@ _mfm:
|
|||||||
blurDescription: "Le contenu peut être flouté ; il sera visible en le survolant avec le curseur."
|
blurDescription: "Le contenu peut être flouté ; il sera visible en le survolant avec le curseur."
|
||||||
font: "Police de caractères"
|
font: "Police de caractères"
|
||||||
fontDescription: "Il est possible de choisir la police."
|
fontDescription: "Il est possible de choisir la police."
|
||||||
|
rainbow: "Arc-en-ciel"
|
||||||
|
rainbowDescription: "Permet d'afficher le contenu en couleurs arc-en-ciel."
|
||||||
|
sparkle: "Paillettes"
|
||||||
|
sparkleDescription: "Ajoute un effet scintillant au contenu."
|
||||||
_reversi:
|
_reversi:
|
||||||
reversi: "Reversi"
|
reversi: "Reversi"
|
||||||
gameSettings: "Réglages de la partie"
|
gameSettings: "Réglages de la partie"
|
||||||
@@ -911,6 +971,9 @@ _channel:
|
|||||||
usersCount: "{n} Participant·e·s"
|
usersCount: "{n} Participant·e·s"
|
||||||
notesCount: "{n} Notes"
|
notesCount: "{n} Notes"
|
||||||
_menuDisplay:
|
_menuDisplay:
|
||||||
|
sideFull: "Latéral"
|
||||||
|
sideIcon: "Latéral (icônes)"
|
||||||
|
top: "Haut de page"
|
||||||
hide: "Masquer"
|
hide: "Masquer"
|
||||||
_wordMute:
|
_wordMute:
|
||||||
muteWords: "Mots à filtrer"
|
muteWords: "Mots à filtrer"
|
||||||
@@ -969,7 +1032,7 @@ _theme:
|
|||||||
hashtag: "Hashtags"
|
hashtag: "Hashtags"
|
||||||
mention: "Mentionner"
|
mention: "Mentionner"
|
||||||
mentionMe: "Mentions (Moi)"
|
mentionMe: "Mentions (Moi)"
|
||||||
renote: "Partager"
|
renote: "Renoter"
|
||||||
modalBg: "Modal d'arrière-plan"
|
modalBg: "Modal d'arrière-plan"
|
||||||
divider: "Séparateur"
|
divider: "Séparateur"
|
||||||
scrollbarHandle: "Poignée de la barre de navigation"
|
scrollbarHandle: "Poignée de la barre de navigation"
|
||||||
@@ -1082,6 +1145,10 @@ _permissions:
|
|||||||
"write:user-groups": "Éditer les groupes des utilisateur·rice·s"
|
"write:user-groups": "Éditer les groupes des utilisateur·rice·s"
|
||||||
"read:channels": "Lire les canaux"
|
"read:channels": "Lire les canaux"
|
||||||
"write:channels": "Gérer les canaux"
|
"write:channels": "Gérer les canaux"
|
||||||
|
"read:gallery": "Voir la galerie"
|
||||||
|
"write:gallery": "Éditer la galerie"
|
||||||
|
"read:gallery-likes": "Voir les mentions « J'aime » dans la galerie"
|
||||||
|
"write:gallery-likes": "Gérer les mentions « J'aime » dans la galerie"
|
||||||
_auth:
|
_auth:
|
||||||
shareAccess: "Autoriser \"{name}\" à accéder à votre compte ?"
|
shareAccess: "Autoriser \"{name}\" à accéder à votre compte ?"
|
||||||
shareAccessAsk: "Voulez-vous vraiment autoriser cette application à accéder à votre compte?"
|
shareAccessAsk: "Voulez-vous vraiment autoriser cette application à accéder à votre compte?"
|
||||||
@@ -1122,6 +1189,7 @@ _widgets:
|
|||||||
jobQueue: "File d’attente"
|
jobQueue: "File d’attente"
|
||||||
serverMetric: "Statistiques du serveur"
|
serverMetric: "Statistiques du serveur"
|
||||||
aiscript: "Console AiScript"
|
aiscript: "Console AiScript"
|
||||||
|
aichan: "Ai"
|
||||||
_cw:
|
_cw:
|
||||||
hide: "Masquer"
|
hide: "Masquer"
|
||||||
show: "Afficher plus …"
|
show: "Afficher plus …"
|
||||||
@@ -1194,7 +1262,7 @@ _charts:
|
|||||||
federationInstancesTotal: "Nombre total d'instances fédérées"
|
federationInstancesTotal: "Nombre total d'instances fédérées"
|
||||||
usersIncDec: "Variation du nombre d'utilisateur·rice·s"
|
usersIncDec: "Variation du nombre d'utilisateur·rice·s"
|
||||||
usersTotal: "Nombre des utilisateur·rice·s au total"
|
usersTotal: "Nombre des utilisateur·rice·s au total"
|
||||||
activeUsers: "Utilisateur·rice·s actif·ve·s"
|
activeUsers: "Nombre d'utilisateurices actif·ve·s"
|
||||||
notesIncDec: "Variation du nombre des notes"
|
notesIncDec: "Variation du nombre des notes"
|
||||||
localNotesIncDec: "Variation du nombre de notes locales"
|
localNotesIncDec: "Variation du nombre de notes locales"
|
||||||
remoteNotesIncDec: "Variation du nombre de notes distantes"
|
remoteNotesIncDec: "Variation du nombre de notes distantes"
|
||||||
@@ -1590,11 +1658,11 @@ _notification:
|
|||||||
youWereInvitedToGroup: "Invité·e au groupe"
|
youWereInvitedToGroup: "Invité·e au groupe"
|
||||||
_types:
|
_types:
|
||||||
all: "Toutes"
|
all: "Toutes"
|
||||||
follow: "Abonnements"
|
follow: "Nouvel·le abonné·e"
|
||||||
mention: "Mentions"
|
mention: "Mentions"
|
||||||
reply: "Réponses"
|
reply: "Réponses"
|
||||||
renote: "Partager"
|
renote: "Renotes"
|
||||||
quote: "Citer"
|
quote: "Citations"
|
||||||
reaction: "Réactions"
|
reaction: "Réactions"
|
||||||
pollVote: "Votes dans des sondages"
|
pollVote: "Votes dans des sondages"
|
||||||
receiveFollowRequest: "Demande d'abonnement reçue"
|
receiveFollowRequest: "Demande d'abonnement reçue"
|
||||||
|
@@ -81,6 +81,8 @@ somethingHappened: "Terjadi kesalahan"
|
|||||||
retry: "Coba lagi"
|
retry: "Coba lagi"
|
||||||
pageLoadError: "Gagal memuat halaman."
|
pageLoadError: "Gagal memuat halaman."
|
||||||
pageLoadErrorDescription: "Umumnya disebabkan jaringan atau tembolok perambah. Cobalah bersihkan tembolok peramban lalu tunggu sesaat sebelum mencoba kembali."
|
pageLoadErrorDescription: "Umumnya disebabkan jaringan atau tembolok perambah. Cobalah bersihkan tembolok peramban lalu tunggu sesaat sebelum mencoba kembali."
|
||||||
|
serverIsDead: "Tidak ada respon dari server. Mohon tunggu dan coba beberapa saat lagi."
|
||||||
|
youShouldUpgradeClient: "Untuk melihat halaman ini, mohon muat ulang untuk memutakhirkan klienmu."
|
||||||
enterListName: "Masukkan nama daftar"
|
enterListName: "Masukkan nama daftar"
|
||||||
privacy: "Privasi"
|
privacy: "Privasi"
|
||||||
makeFollowManuallyApprove: "Permintaan mengikuti membutuhkan persetujuan"
|
makeFollowManuallyApprove: "Permintaan mengikuti membutuhkan persetujuan"
|
||||||
@@ -128,6 +130,7 @@ editWidgets: "Sunting gawit"
|
|||||||
editWidgetsExit: "Selesai"
|
editWidgetsExit: "Selesai"
|
||||||
customEmojis: "Emoji kustom"
|
customEmojis: "Emoji kustom"
|
||||||
emoji: "Emoji"
|
emoji: "Emoji"
|
||||||
|
emojis: "Emoji"
|
||||||
emojiName: "Nama emoji"
|
emojiName: "Nama emoji"
|
||||||
emojiUrl: "URL Emoji"
|
emojiUrl: "URL Emoji"
|
||||||
addEmoji: "Tambahkan emoji"
|
addEmoji: "Tambahkan emoji"
|
||||||
@@ -528,6 +531,9 @@ removeAllFollowing: "Tahan semua mengikuti"
|
|||||||
removeAllFollowingDescription: "Batal mengikuti semua akun dari {host}. Mohon jalankan ini ketika instansi sudah tidak ada lagi."
|
removeAllFollowingDescription: "Batal mengikuti semua akun dari {host}. Mohon jalankan ini ketika instansi sudah tidak ada lagi."
|
||||||
userSuspended: "Pengguna ini telah dibekukan."
|
userSuspended: "Pengguna ini telah dibekukan."
|
||||||
userSilenced: "Pengguna ini telah dibungkam."
|
userSilenced: "Pengguna ini telah dibungkam."
|
||||||
|
yourAccountSuspendedTitle: "Akun ini dibekukan"
|
||||||
|
yourAccountSuspendedDescription: "Akun ini dibekukan karena melanggar ketentuan penggunaan layanan server atau semacamnya. Hubungi admin apabila ingin tahu alasan lebih lanjut. Mohon untuk tidak membuat akun baru."
|
||||||
|
menu: "Menu"
|
||||||
divider: "Pembagi"
|
divider: "Pembagi"
|
||||||
addItem: "Tambahkan item"
|
addItem: "Tambahkan item"
|
||||||
rooms: "Ruang"
|
rooms: "Ruang"
|
||||||
@@ -614,6 +620,8 @@ reportAbuse: "Laporkan"
|
|||||||
reportAbuseOf: "Laporkan {name}"
|
reportAbuseOf: "Laporkan {name}"
|
||||||
fillAbuseReportDescription: "Mohon isi rincian laporan. Jika laporan ini mengenai catatan yang spesifik, mohon lampirkan serta URL catatan tersebut."
|
fillAbuseReportDescription: "Mohon isi rincian laporan. Jika laporan ini mengenai catatan yang spesifik, mohon lampirkan serta URL catatan tersebut."
|
||||||
abuseReported: "Laporan kamu telah dikirimkan. Terima kasih."
|
abuseReported: "Laporan kamu telah dikirimkan. Terima kasih."
|
||||||
|
reporteeOrigin: "Yang dilaporkan"
|
||||||
|
reporterOrigin: "Pelapor"
|
||||||
send: "Kirim"
|
send: "Kirim"
|
||||||
abuseMarkAsResolved: "Tandai laporan sebagai selesai"
|
abuseMarkAsResolved: "Tandai laporan sebagai selesai"
|
||||||
openInNewTab: "Buka di tab baru"
|
openInNewTab: "Buka di tab baru"
|
||||||
@@ -760,7 +768,65 @@ middle: "Sedang"
|
|||||||
low: "Rendah"
|
low: "Rendah"
|
||||||
emailNotConfiguredWarning: "Alamat surel tidak disetel."
|
emailNotConfiguredWarning: "Alamat surel tidak disetel."
|
||||||
ratio: "Rasio"
|
ratio: "Rasio"
|
||||||
|
previewNoteText: "Tampilkan pratinjau"
|
||||||
|
customCss: "Custom CSS"
|
||||||
|
customCssWarn: "Pengaturan ini seharusnya digunakan jika kamu tahu cara kerjanya. Memasukkan nilai yang tidak tepat dapat menyebabkan klien tidak berfungsi semestinya."
|
||||||
global: "Global"
|
global: "Global"
|
||||||
|
squareAvatars: "Tampilkan avatar sebagai persegi"
|
||||||
|
sent: "Kirim"
|
||||||
|
received: "Diterima"
|
||||||
|
searchResult: "Hasil Penelusuran"
|
||||||
|
hashtags: "Tagar"
|
||||||
|
troubleshooting: "Penyelesaian Masalah"
|
||||||
|
useBlurEffect: "Gunakan efek blur pada antarmuka"
|
||||||
|
learnMore: "Pelajari lebih lanjut"
|
||||||
|
misskeyUpdated: "Misskey telah dimutakhirkan!"
|
||||||
|
whatIsNew: "Lihat perubahan pemutakhiran"
|
||||||
|
translate: "Terjemahkan"
|
||||||
|
translatedFrom: "Terjemahkan dari {x}"
|
||||||
|
accountDeletionInProgress: "Penghapusan akun sedang dalam proses"
|
||||||
|
usernameInfo: "Nama yang mengidentifikasikan akun kamu dari yang lain pada server ini. Kamu dapat menggunakan alfabet (a~z, A~Z), digit (0~9) atau garis bawah (_). Username tidak dapat diubah setelahnya."
|
||||||
|
aiChanMode: "Mode Ai"
|
||||||
|
keepCw: "Biarkan Peringatan Konten"
|
||||||
|
pubSub: "Akun Pub/Sub"
|
||||||
|
lastCommunication: "Komunikasi terakhir"
|
||||||
|
resolved: "Selesai"
|
||||||
|
unresolved: "Belum selesai"
|
||||||
|
itsOn: "Aktif"
|
||||||
|
itsOff: "Nonaktif"
|
||||||
|
emailRequiredForSignup: "Membutuhkan alamat surel untuk mendaftar"
|
||||||
|
unread: "Belum dibaca"
|
||||||
|
filter: "Saring"
|
||||||
|
controlPanel: "Panel kontrol"
|
||||||
|
manageAccounts: "Kelola Akun"
|
||||||
|
makeReactionsPublic: "Tampilkan riwayat reaksi ke publik"
|
||||||
|
makeReactionsPublicDescription: "Pengaturan ini akan membuat daftar dari semua reaksi masa lalu kamu ditampilkan secara publik."
|
||||||
|
classic: "Klasik"
|
||||||
|
muteThread: "Bisukan thread"
|
||||||
|
unmuteThread: "Suarakan thread"
|
||||||
|
ffVisibility: "Visibilitas Mengikuti/Pengikut"
|
||||||
|
ffVisibilityDescription: "Mengatur siapa yang dapat melihat pengikutmu dan yang kamu ikuti."
|
||||||
|
_emailUnavailable:
|
||||||
|
used: "Alamat surel ini telah digunakan"
|
||||||
|
format: "Format tidak valid."
|
||||||
|
disposable: "Alamat surel temporer tidak dapat digunakan"
|
||||||
|
mx: "Server alamat surel ini tidak valid"
|
||||||
|
smtp: "Server alamat surel ini tidak merespon"
|
||||||
|
_ffVisibility:
|
||||||
|
public: "Terbitkan"
|
||||||
|
followers: "Tampil untuk pengikut saja"
|
||||||
|
private: "Tersembunyi"
|
||||||
|
_signup:
|
||||||
|
almostThere: "Hampir selesai"
|
||||||
|
emailAddressInfo: "Mohon masukkan alamat surel kamu."
|
||||||
|
emailSent: "Konfirmasi surel telah dikirimkan ke alamat surel kamu ({email}). Mohon klik tautan yang tercantum di dalamnya untuk menyelesaikan pembuatan akun."
|
||||||
|
_accountDelete:
|
||||||
|
accountDelete: "Hapus akun"
|
||||||
|
mayTakeTime: "Karena penghapusan akun merupakan proses yang berat dan intensif, kemungkinan dapat membutuhkan waktu untuk menyelesaikan tergantung daripada berapa banyak konten yang kamu buat dan berapa banyak berkas yang telah kamu unggah."
|
||||||
|
sendEmail: "Setelah penghapusan akun selesai, pemberitahuan akan dikirimkan ke alamat surel yang terdaftarkan pada akun ini."
|
||||||
|
requestAccountDelete: "Minta penghapusan akun"
|
||||||
|
started: "Penghapusan telah dimulai"
|
||||||
|
inProgress: "Penghapusan sedang dalam proses"
|
||||||
_ad:
|
_ad:
|
||||||
back: "Kembali"
|
back: "Kembali"
|
||||||
reduceFrequencyOfThisAd: "Tampilkan iklan ini lebih sedikit"
|
reduceFrequencyOfThisAd: "Tampilkan iklan ini lebih sedikit"
|
||||||
@@ -859,6 +925,10 @@ _mfm:
|
|||||||
blurDescription: "Konten dapat diburamkan dengan efek ini. Konten dapat ditampilkan dengan jelas dengan melayangkan kursor tetikus di atasnya."
|
blurDescription: "Konten dapat diburamkan dengan efek ini. Konten dapat ditampilkan dengan jelas dengan melayangkan kursor tetikus di atasnya."
|
||||||
font: "Font"
|
font: "Font"
|
||||||
fontDescription: "Setel font yang ditampilkan untuk konten."
|
fontDescription: "Setel font yang ditampilkan untuk konten."
|
||||||
|
rainbow: "Pelangi"
|
||||||
|
rainbowDescription: "Membuat konten muncul dalam warna pelangi."
|
||||||
|
sparkle: "Kelap-kelip"
|
||||||
|
sparkleDescription: "Memberikan konten efek partikel kelap-kelip."
|
||||||
_reversi:
|
_reversi:
|
||||||
reversi: "Reversi"
|
reversi: "Reversi"
|
||||||
gameSettings: "Pengaturan permainan"
|
gameSettings: "Pengaturan permainan"
|
||||||
@@ -911,6 +981,9 @@ _channel:
|
|||||||
usersCount: "{n} Partisipan"
|
usersCount: "{n} Partisipan"
|
||||||
notesCount: "terdapat {n} catatan"
|
notesCount: "terdapat {n} catatan"
|
||||||
_menuDisplay:
|
_menuDisplay:
|
||||||
|
sideFull: "Horisontal"
|
||||||
|
sideIcon: "Horisontal (Ikon)"
|
||||||
|
top: "Atas"
|
||||||
hide: "Sembunyikan"
|
hide: "Sembunyikan"
|
||||||
_wordMute:
|
_wordMute:
|
||||||
muteWords: "Kata yang dibisukan"
|
muteWords: "Kata yang dibisukan"
|
||||||
@@ -1082,6 +1155,10 @@ _permissions:
|
|||||||
"write:user-groups": "Sunting atau hapus grup pengguna"
|
"write:user-groups": "Sunting atau hapus grup pengguna"
|
||||||
"read:channels": "Lihat saluran"
|
"read:channels": "Lihat saluran"
|
||||||
"write:channels": "Sunting saluran"
|
"write:channels": "Sunting saluran"
|
||||||
|
"read:gallery": "Lihat galeri"
|
||||||
|
"write:gallery": "Sunting galeri"
|
||||||
|
"read:gallery-likes": "Lihat daftar postingan galeri yang disukai"
|
||||||
|
"write:gallery-likes": "Sunting daftar postingan galeri yang disukai"
|
||||||
_auth:
|
_auth:
|
||||||
shareAccess: "Apakah kamu ingin mengijinkan \"{name}\" untuk mengakses akun ini?"
|
shareAccess: "Apakah kamu ingin mengijinkan \"{name}\" untuk mengakses akun ini?"
|
||||||
shareAccessAsk: "Apakah kamu ingin mengijinkan aplikasi ini untuk mengakses akun kamu?"
|
shareAccessAsk: "Apakah kamu ingin mengijinkan aplikasi ini untuk mengakses akun kamu?"
|
||||||
@@ -1122,6 +1199,7 @@ _widgets:
|
|||||||
jobQueue: "Antrian kerja"
|
jobQueue: "Antrian kerja"
|
||||||
serverMetric: "Statistik server"
|
serverMetric: "Statistik server"
|
||||||
aiscript: "Konsol AiScript"
|
aiscript: "Konsol AiScript"
|
||||||
|
aichan: "Ai"
|
||||||
_cw:
|
_cw:
|
||||||
hide: "Sembunyikan"
|
hide: "Sembunyikan"
|
||||||
show: "Lihat konten"
|
show: "Lihat konten"
|
||||||
|
@@ -19,9 +19,11 @@ const languages = [
|
|||||||
'da-DK',
|
'da-DK',
|
||||||
'de-DE',
|
'de-DE',
|
||||||
'en-US',
|
'en-US',
|
||||||
|
'eo-UY',
|
||||||
'es-ES',
|
'es-ES',
|
||||||
'fr-FR',
|
'fr-FR',
|
||||||
'id-ID',
|
'id-ID',
|
||||||
|
'it-IT',
|
||||||
'ja-JP',
|
'ja-JP',
|
||||||
'ja-KS',
|
'ja-KS',
|
||||||
'kab-KAB',
|
'kab-KAB',
|
||||||
|
@@ -127,6 +127,7 @@ editWidgets: "Modifica i widget"
|
|||||||
editWidgetsExit: "Modifica fine"
|
editWidgetsExit: "Modifica fine"
|
||||||
customEmojis: "Emoji personalizzati"
|
customEmojis: "Emoji personalizzati"
|
||||||
emoji: "Emoji"
|
emoji: "Emoji"
|
||||||
|
emojis: "Emoji"
|
||||||
emojiName: "Nome dell'emoji"
|
emojiName: "Nome dell'emoji"
|
||||||
emojiUrl: "URL dell'emoji"
|
emojiUrl: "URL dell'emoji"
|
||||||
addEmoji: "Aggiungi un emoji"
|
addEmoji: "Aggiungi un emoji"
|
||||||
@@ -481,7 +482,7 @@ objectStorageSetPublicRead: "Imposta \"visibilità pubblica\" al momento di cari
|
|||||||
serverLogs: "Log del server"
|
serverLogs: "Log del server"
|
||||||
deleteAll: "Cancella cronologia"
|
deleteAll: "Cancella cronologia"
|
||||||
showFixedPostForm: "Visualizzare la finestra di pubblicazione in cima alla timeline"
|
showFixedPostForm: "Visualizzare la finestra di pubblicazione in cima alla timeline"
|
||||||
newNoteRecived: "Nuova nota ricevuta"
|
newNoteRecived: "Vedi le nuove note"
|
||||||
sounds: "Impostazioni suoni"
|
sounds: "Impostazioni suoni"
|
||||||
listen: "Ascolta"
|
listen: "Ascolta"
|
||||||
none: "Niente"
|
none: "Niente"
|
||||||
@@ -741,6 +742,13 @@ low: "Bassa"
|
|||||||
emailNotConfiguredWarning: "Non hai impostato nessun indirizzo e-mail."
|
emailNotConfiguredWarning: "Non hai impostato nessun indirizzo e-mail."
|
||||||
ratio: "Rapporto"
|
ratio: "Rapporto"
|
||||||
global: "Federata"
|
global: "Federata"
|
||||||
|
sent: "Inviare"
|
||||||
|
hashtags: "Hashtag"
|
||||||
|
troubleshooting: "Risoluzione problemi"
|
||||||
|
_docs:
|
||||||
|
continueReading: "Leggi di più"
|
||||||
|
features: "Funzionalità"
|
||||||
|
admin: "Gestione"
|
||||||
_ad:
|
_ad:
|
||||||
back: "Indietro"
|
back: "Indietro"
|
||||||
reduceFrequencyOfThisAd: "Visualizza questa pubblicità meno spesso"
|
reduceFrequencyOfThisAd: "Visualizza questa pubblicità meno spesso"
|
||||||
@@ -799,6 +807,7 @@ _mfm:
|
|||||||
blur: "Sfocatura"
|
blur: "Sfocatura"
|
||||||
font: "Tipo di carattere"
|
font: "Tipo di carattere"
|
||||||
fontDescription: "Puoi scegliere il tipo di carattere per il contenuto."
|
fontDescription: "Puoi scegliere il tipo di carattere per il contenuto."
|
||||||
|
rainbow: "Arcobaleno"
|
||||||
_reversi:
|
_reversi:
|
||||||
reversi: "Reversi"
|
reversi: "Reversi"
|
||||||
gameSettings: "Impostazioni di gioco"
|
gameSettings: "Impostazioni di gioco"
|
||||||
@@ -1386,12 +1395,12 @@ _notification:
|
|||||||
youWereInvitedToGroup: "Invitat@ al gruppo"
|
youWereInvitedToGroup: "Invitat@ al gruppo"
|
||||||
_types:
|
_types:
|
||||||
all: "Tutto"
|
all: "Tutto"
|
||||||
follow: "Follows"
|
follow: "Nuovə follower"
|
||||||
mention: "Menzioni"
|
mention: "Menzioni"
|
||||||
reply: "Rispondi"
|
reply: "Risposte"
|
||||||
renote: "Rinota"
|
renote: "Rinota"
|
||||||
quote: "Cita"
|
quote: "Cita"
|
||||||
reaction: "Reazione"
|
reaction: "Reazioni"
|
||||||
pollVote: "Voti ricevuti"
|
pollVote: "Voti ricevuti"
|
||||||
receiveFollowRequest: "Richiesta di follow ricevuta"
|
receiveFollowRequest: "Richiesta di follow ricevuta"
|
||||||
followRequestAccepted: "Richiesta di follow accettata"
|
followRequestAccepted: "Richiesta di follow accettata"
|
||||||
|
@@ -81,6 +81,8 @@ somethingHappened: "問題が発生しました"
|
|||||||
retry: "再試行"
|
retry: "再試行"
|
||||||
pageLoadError: "ページの読み込みに失敗しました。"
|
pageLoadError: "ページの読み込みに失敗しました。"
|
||||||
pageLoadErrorDescription: "これは通常、ネットワークまたはブラウザキャッシュが原因です。キャッシュをクリアするか、しばらく待ってから再度試してください。"
|
pageLoadErrorDescription: "これは通常、ネットワークまたはブラウザキャッシュが原因です。キャッシュをクリアするか、しばらく待ってから再度試してください。"
|
||||||
|
serverIsDead: "サーバーの応答がありません。しばらく待ってから再度試してください。"
|
||||||
|
youShouldUpgradeClient: "このページを表示するためには、リロードして新しいバージョンのクライアントをご利用ください。"
|
||||||
enterListName: "リスト名を入力"
|
enterListName: "リスト名を入力"
|
||||||
privacy: "プライバシー"
|
privacy: "プライバシー"
|
||||||
makeFollowManuallyApprove: "フォローを承認制にする"
|
makeFollowManuallyApprove: "フォローを承認制にする"
|
||||||
@@ -128,6 +130,7 @@ editWidgets: "ウィジェットを編集"
|
|||||||
editWidgetsExit: "編集を終了"
|
editWidgetsExit: "編集を終了"
|
||||||
customEmojis: "カスタム絵文字"
|
customEmojis: "カスタム絵文字"
|
||||||
emoji: "絵文字"
|
emoji: "絵文字"
|
||||||
|
emojis: "絵文字"
|
||||||
emojiName: "絵文字名"
|
emojiName: "絵文字名"
|
||||||
emojiUrl: "絵文字画像URL"
|
emojiUrl: "絵文字画像URL"
|
||||||
addEmoji: "絵文字を追加"
|
addEmoji: "絵文字を追加"
|
||||||
@@ -528,6 +531,8 @@ removeAllFollowing: "フォローを全解除"
|
|||||||
removeAllFollowingDescription: "{host}からのフォローをすべて解除します。そのインスタンスがもう存在しなくなった場合などに実行してください。"
|
removeAllFollowingDescription: "{host}からのフォローをすべて解除します。そのインスタンスがもう存在しなくなった場合などに実行してください。"
|
||||||
userSuspended: "このユーザーは凍結されています。"
|
userSuspended: "このユーザーは凍結されています。"
|
||||||
userSilenced: "このユーザーはサイレンスされています。"
|
userSilenced: "このユーザーはサイレンスされています。"
|
||||||
|
yourAccountSuspendedTitle: "アカウントが凍結されています"
|
||||||
|
yourAccountSuspendedDescription: "このアカウントは、サーバーの利用規約に違反したなどの理由により、凍結されています。詳細については管理者までお問い合わせください。新しいアカウントを作らないでください。"
|
||||||
menu: "メニュー"
|
menu: "メニュー"
|
||||||
divider: "分割線"
|
divider: "分割線"
|
||||||
addItem: "項目を追加"
|
addItem: "項目を追加"
|
||||||
@@ -615,6 +620,8 @@ reportAbuse: "通報"
|
|||||||
reportAbuseOf: "{name}を通報する"
|
reportAbuseOf: "{name}を通報する"
|
||||||
fillAbuseReportDescription: "通報理由の詳細を記入してください。対象のノートがある場合はそのURLも記入してください。"
|
fillAbuseReportDescription: "通報理由の詳細を記入してください。対象のノートがある場合はそのURLも記入してください。"
|
||||||
abuseReported: "内容が送信されました。ご報告ありがとうございました。"
|
abuseReported: "内容が送信されました。ご報告ありがとうございました。"
|
||||||
|
reporteeOrigin: "通報先"
|
||||||
|
reporterOrigin: "通報元"
|
||||||
send: "送信"
|
send: "送信"
|
||||||
abuseMarkAsResolved: "対応済みにする"
|
abuseMarkAsResolved: "対応済みにする"
|
||||||
openInNewTab: "新しいタブで開く"
|
openInNewTab: "新しいタブで開く"
|
||||||
@@ -761,10 +768,69 @@ middle: "中"
|
|||||||
low: "低"
|
low: "低"
|
||||||
emailNotConfiguredWarning: "メールアドレスの設定がされていません。"
|
emailNotConfiguredWarning: "メールアドレスの設定がされていません。"
|
||||||
ratio: "比率"
|
ratio: "比率"
|
||||||
|
previewNoteText: "本文をプレビュー"
|
||||||
customCss: "カスタムCSS"
|
customCss: "カスタムCSS"
|
||||||
customCssWarn: "この設定は必ず知識のある方が行ってください。不適切な設定を行うとクライアントが正常に使用できなくなる恐れがあります。"
|
customCssWarn: "この設定は必ず知識のある方が行ってください。不適切な設定を行うとクライアントが正常に使用できなくなる恐れがあります。"
|
||||||
global: "グローバル"
|
global: "グローバル"
|
||||||
squareAvatars: "アイコンを四角形で表示"
|
squareAvatars: "アイコンを四角形で表示"
|
||||||
|
sent: "送信"
|
||||||
|
received: "受信"
|
||||||
|
searchResult: "検索結果"
|
||||||
|
hashtags: "ハッシュタグ"
|
||||||
|
troubleshooting: "トラブルシューティング"
|
||||||
|
useBlurEffect: "UIにぼかし効果を使用"
|
||||||
|
learnMore: "詳しく"
|
||||||
|
misskeyUpdated: "Misskeyが更新されました!"
|
||||||
|
whatIsNew: "更新情報を見る"
|
||||||
|
translate: "翻訳"
|
||||||
|
translatedFrom: "{x}から翻訳"
|
||||||
|
accountDeletionInProgress: "アカウントの削除が進行中です"
|
||||||
|
usernameInfo: "サーバー上であなたのアカウントを一意に識別するための名前。アルファベット(a~z, A~Z)、数字(0~9)、およびアンダーバー(_)が使用できます。ユーザー名は後から変更することは出来ません。"
|
||||||
|
aiChanMode: "藍モード"
|
||||||
|
keepCw: "CWを維持する"
|
||||||
|
pubSub: "Pub/Subのアカウント"
|
||||||
|
lastCommunication: "直近の通信"
|
||||||
|
resolved: "解決済み"
|
||||||
|
unresolved: "未解決"
|
||||||
|
itsOn: "オンになっています"
|
||||||
|
itsOff: "オフになっています"
|
||||||
|
emailRequiredForSignup: "アカウント登録にメールアドレスを必須にする"
|
||||||
|
unread: "未読"
|
||||||
|
filter: "フィルタ"
|
||||||
|
controlPanel: "コントロールパネル"
|
||||||
|
manageAccounts: "アカウントを管理"
|
||||||
|
makeReactionsPublic: "リアクション一覧を公開する"
|
||||||
|
makeReactionsPublicDescription: "あなたがしたリアクション一覧を誰でも見れるようにします。"
|
||||||
|
classic: "クラシック"
|
||||||
|
muteThread: "スレッドをミュート"
|
||||||
|
unmuteThread: "スレッドのミュートを解除"
|
||||||
|
ffVisibility: "つながりの公開範囲"
|
||||||
|
ffVisibilityDescription: "自分のフォロー/フォロワー情報の公開範囲を設定できます。"
|
||||||
|
|
||||||
|
_emailUnavailable:
|
||||||
|
used: "既に使用されています"
|
||||||
|
format: "形式が正しくありません"
|
||||||
|
disposable: "恒久的に使用可能なアドレスではありません"
|
||||||
|
mx: "正しいメールサーバーではありません"
|
||||||
|
smtp: "メールサーバーが応答しません"
|
||||||
|
|
||||||
|
_ffVisibility:
|
||||||
|
public: "公開"
|
||||||
|
followers: "フォロワーだけに公開"
|
||||||
|
private: "非公開"
|
||||||
|
|
||||||
|
_signup:
|
||||||
|
almostThere: "ほとんど完了です"
|
||||||
|
emailAddressInfo: "あなたが使っているメールアドレスを入力してください。"
|
||||||
|
emailSent: "入力されたメールアドレス({email})宛に確認のメールが送信されました。メールに記載されたリンクにアクセスすると、アカウントの作成が完了します。"
|
||||||
|
|
||||||
|
_accountDelete:
|
||||||
|
accountDelete: "アカウントの削除"
|
||||||
|
mayTakeTime: "アカウントの削除は負荷のかかる処理であるため、作成したコンテンツの数やアップロードしたファイルの数が多いと完了までに時間がかかることがあります。"
|
||||||
|
sendEmail: "アカウントの削除が完了する際は、登録してあったメールアドレス宛に通知を送信します。"
|
||||||
|
requestAccountDelete: "アカウント削除をリクエスト"
|
||||||
|
started: "削除処理が開始されました。"
|
||||||
|
inProgress: "削除が進行中"
|
||||||
|
|
||||||
_ad:
|
_ad:
|
||||||
back: "戻る"
|
back: "戻る"
|
||||||
@@ -872,6 +938,10 @@ _mfm:
|
|||||||
blurDescription: "内容をぼかすことができます。ポインターを上に乗せるとはっきり見えるようになります。"
|
blurDescription: "内容をぼかすことができます。ポインターを上に乗せるとはっきり見えるようになります。"
|
||||||
font: "フォント"
|
font: "フォント"
|
||||||
fontDescription: "内容のフォントを指定することができます。"
|
fontDescription: "内容のフォントを指定することができます。"
|
||||||
|
rainbow: "レインボー"
|
||||||
|
rainbowDescription: "内容をレインボーにします。"
|
||||||
|
sparkle: "キラキラ"
|
||||||
|
sparkleDescription: "キラキラしたパーティクルのエフェクトを追加します。"
|
||||||
|
|
||||||
_reversi:
|
_reversi:
|
||||||
reversi: "リバーシ"
|
reversi: "リバーシ"
|
||||||
@@ -1112,6 +1182,10 @@ _permissions:
|
|||||||
"write:user-groups": "ユーザーグループを操作する"
|
"write:user-groups": "ユーザーグループを操作する"
|
||||||
"read:channels": "チャンネルを見る"
|
"read:channels": "チャンネルを見る"
|
||||||
"write:channels": "チャンネルを操作する"
|
"write:channels": "チャンネルを操作する"
|
||||||
|
"read:gallery": "ギャラリーを見る"
|
||||||
|
"write:gallery": "ギャラリーを操作する"
|
||||||
|
"read:gallery-likes": "ギャラリーのいいねを見る"
|
||||||
|
"write:gallery-likes": "ギャラリーのいいねを操作する"
|
||||||
|
|
||||||
_auth:
|
_auth:
|
||||||
shareAccess: "「{name}」がアカウントにアクセスすることを許可しますか?"
|
shareAccess: "「{name}」がアカウントにアクセスすることを許可しますか?"
|
||||||
@@ -1156,6 +1230,7 @@ _widgets:
|
|||||||
jobQueue: "ジョブキュー"
|
jobQueue: "ジョブキュー"
|
||||||
serverMetric: "サーバーメトリクス"
|
serverMetric: "サーバーメトリクス"
|
||||||
aiscript: "AiScriptコンソール"
|
aiscript: "AiScriptコンソール"
|
||||||
|
aichan: "藍"
|
||||||
|
|
||||||
_cw:
|
_cw:
|
||||||
hide: "隠す"
|
hide: "隠す"
|
||||||
|
@@ -7,6 +7,7 @@ search: "探す"
|
|||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
username: "ユーザー名"
|
username: "ユーザー名"
|
||||||
password: "パスワード"
|
password: "パスワード"
|
||||||
|
forgotPassword: "パスワード忘れてん"
|
||||||
fetchingAsApObject: "今ちと連合に照会しとるで"
|
fetchingAsApObject: "今ちと連合に照会しとるで"
|
||||||
ok: "OKや"
|
ok: "OKや"
|
||||||
gotIt: "ほい"
|
gotIt: "ほい"
|
||||||
@@ -127,6 +128,7 @@ editWidgets: "ウィジェットをいじる"
|
|||||||
editWidgetsExit: "編集終ったで"
|
editWidgetsExit: "編集終ったで"
|
||||||
customEmojis: "カスタム絵文字"
|
customEmojis: "カスタム絵文字"
|
||||||
emoji: "絵文字"
|
emoji: "絵文字"
|
||||||
|
emojis: "絵文字"
|
||||||
emojiName: "絵文字名"
|
emojiName: "絵文字名"
|
||||||
emojiUrl: "絵文字画像URL"
|
emojiUrl: "絵文字画像URL"
|
||||||
addEmoji: "絵文字を追加"
|
addEmoji: "絵文字を追加"
|
||||||
@@ -138,6 +140,7 @@ flagAsBotDescription: "もしこのアカウントがプログラムによって
|
|||||||
flagAsCat: "Catやで"
|
flagAsCat: "Catやで"
|
||||||
flagAsCatDescription: "ワレ、猫ちゃんならこのフラグをつけてみ?"
|
flagAsCatDescription: "ワレ、猫ちゃんならこのフラグをつけてみ?"
|
||||||
autoAcceptFollowed: "フォローしとるユーザーからのフォローリクエストを勝手に許可しとく"
|
autoAcceptFollowed: "フォローしとるユーザーからのフォローリクエストを勝手に許可しとく"
|
||||||
|
addAccount: "アカウントを追加"
|
||||||
loginFailed: "ログインに失敗してしもうた…"
|
loginFailed: "ログインに失敗してしもうた…"
|
||||||
showOnRemote: "リモートで見る"
|
showOnRemote: "リモートで見る"
|
||||||
general: "全般"
|
general: "全般"
|
||||||
@@ -242,7 +245,7 @@ messageRead: "もう読んだ"
|
|||||||
noMoreHistory: "これより過去の履歴はあらへんで"
|
noMoreHistory: "これより過去の履歴はあらへんで"
|
||||||
startMessaging: "チャットやるで"
|
startMessaging: "チャットやるで"
|
||||||
nUsersRead: "{n}人が読んでもうた"
|
nUsersRead: "{n}人が読んでもうた"
|
||||||
agreeTo: "{0}はええで"
|
agreeTo: "{0}に同意したで"
|
||||||
tos: "利用規約"
|
tos: "利用規約"
|
||||||
start: "始める"
|
start: "始める"
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
@@ -277,6 +280,7 @@ emptyDrive: "ドライブにはなんも残っとらん"
|
|||||||
emptyFolder: "ふぉろだーにはなんも残っとらん"
|
emptyFolder: "ふぉろだーにはなんも残っとらん"
|
||||||
unableToDelete: "消そうおもってんけどな、あかんかったわ"
|
unableToDelete: "消そうおもってんけどな、あかんかったわ"
|
||||||
inputNewFileName: "今度のファイル名は何にするん?"
|
inputNewFileName: "今度のファイル名は何にするん?"
|
||||||
|
inputNewDescription: "新しいキャプションを入力しましょ"
|
||||||
inputNewFolderName: "今度のフォルダ名は何にするん?"
|
inputNewFolderName: "今度のフォルダ名は何にするん?"
|
||||||
circularReferenceFolder: "移動先のフォルダーは、移動するフォルダーのサブフォルダーや。"
|
circularReferenceFolder: "移動先のフォルダーは、移動するフォルダーのサブフォルダーや。"
|
||||||
hasChildFilesOrFolders: "このフォルダ、まだなんか入っとるから消されへん"
|
hasChildFilesOrFolders: "このフォルダ、まだなんか入っとるから消されへん"
|
||||||
@@ -342,7 +346,7 @@ antennaSource: "受信ソース(このソースは食われへん)"
|
|||||||
antennaKeywords: "受信キーワード"
|
antennaKeywords: "受信キーワード"
|
||||||
antennaExcludeKeywords: "除外キーワード"
|
antennaExcludeKeywords: "除外キーワード"
|
||||||
antennaKeywordsDescription: "スペースで区切ったるとAND指定で、改行で区切ったるとOR指定や"
|
antennaKeywordsDescription: "スペースで区切ったるとAND指定で、改行で区切ったるとOR指定や"
|
||||||
notifyAntenna: "新しいノートを追加すんで"
|
notifyAntenna: "新しいノートを通知すんで"
|
||||||
withFileAntenna: "なんか添付されたノートだけ"
|
withFileAntenna: "なんか添付されたノートだけ"
|
||||||
enableServiceworker: "ServiceWorkerをつこて"
|
enableServiceworker: "ServiceWorkerをつこて"
|
||||||
antennaUsersDescription: "ユーザー名を改行で区切ったってな"
|
antennaUsersDescription: "ユーザー名を改行で区切ったってな"
|
||||||
@@ -647,6 +651,10 @@ high: "高い"
|
|||||||
middle: "中"
|
middle: "中"
|
||||||
low: "低い"
|
low: "低い"
|
||||||
global: "グローバル"
|
global: "グローバル"
|
||||||
|
sent: "送信"
|
||||||
|
hashtags: "ハッシュタグ"
|
||||||
|
_docs:
|
||||||
|
admin: "管理"
|
||||||
_ad:
|
_ad:
|
||||||
back: "戻る"
|
back: "戻る"
|
||||||
_gallery:
|
_gallery:
|
||||||
|
@@ -7,7 +7,9 @@ username: "Isem n umseqdac"
|
|||||||
password: "Awal uffir"
|
password: "Awal uffir"
|
||||||
ok: "IH"
|
ok: "IH"
|
||||||
settings: "Iɣewwaṛen"
|
settings: "Iɣewwaṛen"
|
||||||
|
otherSettings: "Iɣewwaren nniḍen"
|
||||||
profile: "Amaɣnu"
|
profile: "Amaɣnu"
|
||||||
|
signup: "Jerred"
|
||||||
save: "Sekles"
|
save: "Sekles"
|
||||||
delete: "Kkes"
|
delete: "Kkes"
|
||||||
addToList: "Rnu ɣer tebdart"
|
addToList: "Rnu ɣer tebdart"
|
||||||
@@ -27,15 +29,32 @@ followers: "Imeḍfaṛen"
|
|||||||
followsYou: "Yeṭṭafaṛ-ik·em-id"
|
followsYou: "Yeṭṭafaṛ-ik·em-id"
|
||||||
createList: "Snulfu-d tabdart"
|
createList: "Snulfu-d tabdart"
|
||||||
enterListName: "Isem n tebdart"
|
enterListName: "Isem n tebdart"
|
||||||
|
privacy: "Tabaḍnit"
|
||||||
follow: "Ḍfeṛ"
|
follow: "Ḍfeṛ"
|
||||||
you: "Kečči·mmi"
|
you: "Kečči·mmi"
|
||||||
selectList: "Fren tabdart"
|
selectList: "Fren tabdart"
|
||||||
youHaveNoLists: "Ulac ɣur-k·m ula d yiwet n tabdart"
|
youHaveNoLists: "Ulac ɣur-k·m ula d yiwet n tabdart"
|
||||||
|
security: "Taɣellist"
|
||||||
remove: "Kkes"
|
remove: "Kkes"
|
||||||
|
connectService: "Qqen"
|
||||||
userList: "Tibdarin"
|
userList: "Tibdarin"
|
||||||
|
securityKey: "Tasarutt n tɣellist"
|
||||||
|
securityKeyName: "Isem n tsarutt"
|
||||||
|
signinRequired: "Ttxil jerred"
|
||||||
|
signinWith: "Tuqqna s {x}"
|
||||||
|
tapSecurityKey: "Sekcem tasarutt-ik·im n tɣellist"
|
||||||
uiLanguage: "Tutlayt n wegrudem"
|
uiLanguage: "Tutlayt n wegrudem"
|
||||||
|
accountSettings: "Iɣewwaṛen n umiḍan"
|
||||||
|
plugins: "Izegrar"
|
||||||
|
email: "Imayl"
|
||||||
|
emailAddress: "Tansa imayl"
|
||||||
smtpUser: "Isem n umseqdac"
|
smtpUser: "Isem n umseqdac"
|
||||||
smtpPass: "Awal uffir"
|
smtpPass: "Awal uffir"
|
||||||
|
other: "Wiyyaḍ"
|
||||||
|
accountInfo: "Talɣut n umiḍan"
|
||||||
|
emailNotification: "Ilɣa imayl"
|
||||||
|
selectAccount: "Fren amiḍan"
|
||||||
|
accounts: "Imiḍan"
|
||||||
_email:
|
_email:
|
||||||
_follow:
|
_follow:
|
||||||
title: "Yeṭṭafaṛ-ik·em-id"
|
title: "Yeṭṭafaṛ-ik·em-id"
|
||||||
@@ -48,6 +67,8 @@ _theme:
|
|||||||
mention: "Bder"
|
mention: "Bder"
|
||||||
_sfx:
|
_sfx:
|
||||||
notification: "Ilɣuyen"
|
notification: "Ilɣuyen"
|
||||||
|
_permissions:
|
||||||
|
"write:account": "Ẓreg talɣut n umiḍan-ik·im"
|
||||||
_widgets:
|
_widgets:
|
||||||
notifications: "Ilɣuyen"
|
notifications: "Ilɣuyen"
|
||||||
_cw:
|
_cw:
|
||||||
|
@@ -128,6 +128,7 @@ editWidgets: "위젯 편집"
|
|||||||
editWidgetsExit: "편집 종료"
|
editWidgetsExit: "편집 종료"
|
||||||
customEmojis: "커스텀 이모지"
|
customEmojis: "커스텀 이모지"
|
||||||
emoji: "이모지"
|
emoji: "이모지"
|
||||||
|
emojis: "이모지"
|
||||||
emojiName: "이모지 이름"
|
emojiName: "이모지 이름"
|
||||||
emojiUrl: "이모지 URL"
|
emojiUrl: "이모지 URL"
|
||||||
addEmoji: "이모지 추가"
|
addEmoji: "이모지 추가"
|
||||||
@@ -528,6 +529,9 @@ removeAllFollowing: "모든 팔로잉 해제"
|
|||||||
removeAllFollowingDescription: "{host}(으)로부터 모든 팔로잉을 해제합니다. 해당 인스턴스가 더 이상 존재하지 않게 된 경우 등에 실행해 주세요."
|
removeAllFollowingDescription: "{host}(으)로부터 모든 팔로잉을 해제합니다. 해당 인스턴스가 더 이상 존재하지 않게 된 경우 등에 실행해 주세요."
|
||||||
userSuspended: "이 계정은 정지된 상태입니다."
|
userSuspended: "이 계정은 정지된 상태입니다."
|
||||||
userSilenced: "이 계정은 사일런스된 상태입니다."
|
userSilenced: "이 계정은 사일런스된 상태입니다."
|
||||||
|
yourAccountSuspendedTitle: "계정이 정지되었습니다"
|
||||||
|
yourAccountSuspendedDescription: "이 계정은 서버의 이용 약관을 위반하거나, 기타 다른 이유로 인해 정지되었습니다. 자세한 사항은 관리자에게 문의해 주십시오. 계정을 새로 생성하지 마십시오."
|
||||||
|
menu: "메뉴"
|
||||||
divider: "구분선"
|
divider: "구분선"
|
||||||
addItem: "항목 추가"
|
addItem: "항목 추가"
|
||||||
rooms: "방"
|
rooms: "방"
|
||||||
@@ -760,7 +764,44 @@ middle: "보통"
|
|||||||
low: "낮음"
|
low: "낮음"
|
||||||
emailNotConfiguredWarning: "메일 주소가 설정되어 있지 않습니다."
|
emailNotConfiguredWarning: "메일 주소가 설정되어 있지 않습니다."
|
||||||
ratio: "비율"
|
ratio: "비율"
|
||||||
|
customCss: "CSS 사용자화"
|
||||||
|
customCssWarn: "이 설정은 기능을 알고 있는 경우에만 사용해야 합니다. 잘못된 값을 입력하면 클라이언트가 정상적으로 작동하지 않을 수 있습니다."
|
||||||
global: "글로벌"
|
global: "글로벌"
|
||||||
|
squareAvatars: "프로필 아이콘을 사각형으로 표시"
|
||||||
|
sent: "전송"
|
||||||
|
received: "수신"
|
||||||
|
searchResult: "검색 결과"
|
||||||
|
hashtags: "해시태그"
|
||||||
|
troubleshooting: "문제 해결"
|
||||||
|
useBlurEffect: "UI에 흐림 효과 사용"
|
||||||
|
learnMore: "자세히"
|
||||||
|
misskeyUpdated: "Misskey가 업데이트 되었습니다!"
|
||||||
|
whatIsNew: "패치 정보 보기"
|
||||||
|
translate: "번역"
|
||||||
|
translatedFrom: "{x}에서 번역"
|
||||||
|
accountDeletionInProgress: "계정 삭제 작업을 진행하고 있습니다"
|
||||||
|
usernameInfo: "서버상에서 계정을 식별하기 위한 이름. 알파벳(a~z, A~Z), 숫자(0~9) 및 언더바(_)를 사용할 수 있습니다. 사용자명은 나중에 변경할 수 없습니다."
|
||||||
|
aiChanMode: "아이 모드"
|
||||||
|
keepCw: "CW 유지하기"
|
||||||
|
pubSub: "Pub/Sub 계정"
|
||||||
|
lastCommunication: "마지막 통신"
|
||||||
|
resolved: "해결됨"
|
||||||
|
unresolved: "해결되지 않음"
|
||||||
|
controlPanel: "제어판"
|
||||||
|
_accountDelete:
|
||||||
|
accountDelete: "계정 삭제"
|
||||||
|
mayTakeTime: "계정 삭제는 서버에 부하를 가하기 때문에, 작성한 콘텐츠나 업로드한 파일의 수가 많으면 완료까지 시간이 걸릴 수 있습니다."
|
||||||
|
sendEmail: "계정 삭제가 완료되면 등록된 이메일 주소로 알림을 보냅니다."
|
||||||
|
requestAccountDelete: "계정 삭제 요청"
|
||||||
|
started: "삭제 작업이 시작되었습니다."
|
||||||
|
inProgress: "삭제 진행 중"
|
||||||
|
_docs:
|
||||||
|
continueReading: "계속 읽기"
|
||||||
|
features: "기능"
|
||||||
|
generalTopics: "일반 주제"
|
||||||
|
advancedTopics: "심화 주제"
|
||||||
|
admin: "관리"
|
||||||
|
translateWarn: "이 문서는 번역되었기 때문에 원본과는 내용이 다를 수 있습니다."
|
||||||
_ad:
|
_ad:
|
||||||
back: "뒤로"
|
back: "뒤로"
|
||||||
reduceFrequencyOfThisAd: "이 광고의 표시 빈도 낮추기"
|
reduceFrequencyOfThisAd: "이 광고의 표시 빈도 낮추기"
|
||||||
@@ -859,6 +900,10 @@ _mfm:
|
|||||||
blurDescription: "내용이 흐리게 보입니다. 마우스를 위에 올려두면 내용이 보입니다."
|
blurDescription: "내용이 흐리게 보입니다. 마우스를 위에 올려두면 내용이 보입니다."
|
||||||
font: "폰트"
|
font: "폰트"
|
||||||
fontDescription: "내용의 글꼴을 지정할 수 있습니다."
|
fontDescription: "내용의 글꼴을 지정할 수 있습니다."
|
||||||
|
rainbow: "무지개"
|
||||||
|
rainbowDescription: "내용을 무지개로 표시합니다."
|
||||||
|
sparkle: "반짝반짝"
|
||||||
|
sparkleDescription: "반짝이는 파티클 효과를 추가합니다."
|
||||||
_reversi:
|
_reversi:
|
||||||
reversi: "리버시"
|
reversi: "리버시"
|
||||||
gameSettings: "대국 설정"
|
gameSettings: "대국 설정"
|
||||||
@@ -911,6 +956,9 @@ _channel:
|
|||||||
usersCount: "{n}명 참여 중"
|
usersCount: "{n}명 참여 중"
|
||||||
notesCount: "{n}노트"
|
notesCount: "{n}노트"
|
||||||
_menuDisplay:
|
_menuDisplay:
|
||||||
|
sideFull: "가로"
|
||||||
|
sideIcon: "가로(아이콘)"
|
||||||
|
top: "상단"
|
||||||
hide: "숨기기"
|
hide: "숨기기"
|
||||||
_wordMute:
|
_wordMute:
|
||||||
muteWords: "뮤트할 단어"
|
muteWords: "뮤트할 단어"
|
||||||
@@ -1077,11 +1125,15 @@ _permissions:
|
|||||||
"read:pages": "페이지를 봅니다"
|
"read:pages": "페이지를 봅니다"
|
||||||
"write:pages": "페이지를 수정합니다"
|
"write:pages": "페이지를 수정합니다"
|
||||||
"read:page-likes": "페이지의 좋아요를 확인합니다"
|
"read:page-likes": "페이지의 좋아요를 확인합니다"
|
||||||
"write:page-likes": "페이지의 좋아요를 추가하거나 삭제합니다"
|
"write:page-likes": "페이지에 좋아요를 추가하거나 취소합니다"
|
||||||
"read:user-groups": "유저 그룹을 조회합니다"
|
"read:user-groups": "유저 그룹을 조회합니다"
|
||||||
"write:user-groups": "유저 그룹을 만들거나, 초대하거나, 이름을 변경하거나, 양도하거나, 삭제합니다"
|
"write:user-groups": "유저 그룹을 만들거나, 초대하거나, 이름을 변경하거나, 양도하거나, 삭제합니다"
|
||||||
"read:channels": "채널을 보기"
|
"read:channels": "채널을 보기"
|
||||||
"write:channels": "채널을 변경하기"
|
"write:channels": "채널을 추가하거나 삭제합니다"
|
||||||
|
"read:gallery": "갤러리를 봅니다"
|
||||||
|
"write:gallery": "갤러리를 추가하거나 삭제합니다"
|
||||||
|
"read:gallery-likes": "갤러리의 좋아요를 확인합니다"
|
||||||
|
"write:gallery-likes": "갤러리에 좋아요를 추가하거나 취소합니다"
|
||||||
_auth:
|
_auth:
|
||||||
shareAccess: "\"{name}\" 이 계정에 접근하는 것을 허용하시겠습니까?"
|
shareAccess: "\"{name}\" 이 계정에 접근하는 것을 허용하시겠습니까?"
|
||||||
shareAccessAsk: "이 애플리케이션이 계정에 접근하는 것을 허용하시겠습니까?"
|
shareAccessAsk: "이 애플리케이션이 계정에 접근하는 것을 허용하시겠습니까?"
|
||||||
@@ -1122,6 +1174,7 @@ _widgets:
|
|||||||
jobQueue: "작업 대기열"
|
jobQueue: "작업 대기열"
|
||||||
serverMetric: "서버 통계"
|
serverMetric: "서버 통계"
|
||||||
aiscript: "AiScript 콘솔"
|
aiscript: "AiScript 콘솔"
|
||||||
|
aichan: "아이"
|
||||||
_cw:
|
_cw:
|
||||||
hide: "숨기기"
|
hide: "숨기기"
|
||||||
show: "더 보기"
|
show: "더 보기"
|
||||||
|
@@ -128,6 +128,7 @@ editWidgets: "Edytuj widżet"
|
|||||||
editWidgetsExit: "Gotowe"
|
editWidgetsExit: "Gotowe"
|
||||||
customEmojis: "Niestandardowe emoji"
|
customEmojis: "Niestandardowe emoji"
|
||||||
emoji: "Emoji"
|
emoji: "Emoji"
|
||||||
|
emojis: "Emoji"
|
||||||
emojiName: "Nazwa emoji"
|
emojiName: "Nazwa emoji"
|
||||||
emojiUrl: "Adres URL emoji"
|
emojiUrl: "Adres URL emoji"
|
||||||
addEmoji: "Dodaj emoji"
|
addEmoji: "Dodaj emoji"
|
||||||
@@ -735,6 +736,10 @@ low: "Niski"
|
|||||||
emailNotConfiguredWarning: "Nie podano adresu e-mail"
|
emailNotConfiguredWarning: "Nie podano adresu e-mail"
|
||||||
ratio: "Stosunek"
|
ratio: "Stosunek"
|
||||||
global: "Globalna"
|
global: "Globalna"
|
||||||
|
sent: "Wyślij"
|
||||||
|
hashtags: "Hashtag"
|
||||||
|
_docs:
|
||||||
|
admin: "Zarządzanie"
|
||||||
_ad:
|
_ad:
|
||||||
back: "Wróć"
|
back: "Wróć"
|
||||||
reduceFrequencyOfThisAd: "Pokazuj tę reklamę rzadziej"
|
reduceFrequencyOfThisAd: "Pokazuj tę reklamę rzadziej"
|
||||||
|
@@ -81,6 +81,8 @@ somethingHappened: "Что-то пошло не так"
|
|||||||
retry: "Повторить попытку"
|
retry: "Повторить попытку"
|
||||||
pageLoadError: "Не удалось загрузить страницу"
|
pageLoadError: "Не удалось загрузить страницу"
|
||||||
pageLoadErrorDescription: "Обычно это случается из-за сбоев в сети или кэша браузера. Попробуйте очистить кэш, или подождать пару минут, а потом попытаться загрузить страницу снова."
|
pageLoadErrorDescription: "Обычно это случается из-за сбоев в сети или кэша браузера. Попробуйте очистить кэш, или подождать пару минут, а потом попытаться загрузить страницу снова."
|
||||||
|
serverIsDead: "Ответа от сервера нет. Пожалуйста, подождите немного и повторите попытку."
|
||||||
|
youShouldUpgradeClient: "Чтобы просмотреть эту страницу, пожалуйста, обновите ее."
|
||||||
enterListName: "Название списка"
|
enterListName: "Название списка"
|
||||||
privacy: "Конфиденциальность"
|
privacy: "Конфиденциальность"
|
||||||
makeFollowManuallyApprove: "Принимать подписчиков вручную"
|
makeFollowManuallyApprove: "Принимать подписчиков вручную"
|
||||||
@@ -128,6 +130,7 @@ editWidgets: "Редактировать виджеты"
|
|||||||
editWidgetsExit: "Готово"
|
editWidgetsExit: "Готово"
|
||||||
customEmojis: "Эмодзи пользователя"
|
customEmojis: "Эмодзи пользователя"
|
||||||
emoji: "Эмодзи"
|
emoji: "Эмодзи"
|
||||||
|
emojis: "Эмодзи"
|
||||||
emojiName: "Название эмодзи"
|
emojiName: "Название эмодзи"
|
||||||
emojiUrl: "URL эмодзи"
|
emojiUrl: "URL эмодзи"
|
||||||
addEmoji: "Добавить эмодзи"
|
addEmoji: "Добавить эмодзи"
|
||||||
@@ -528,6 +531,9 @@ removeAllFollowing: "Удалить всех подписчиков"
|
|||||||
removeAllFollowingDescription: "Отменить все подписки с домена {host}? Пожалуйста, применяйте это действие, если инстанс больше не существует."
|
removeAllFollowingDescription: "Отменить все подписки с домена {host}? Пожалуйста, применяйте это действие, если инстанс больше не существует."
|
||||||
userSuspended: "Эта учётная запись заморожена"
|
userSuspended: "Эта учётная запись заморожена"
|
||||||
userSilenced: "Этот пользователь был заглушен"
|
userSilenced: "Этот пользователь был заглушен"
|
||||||
|
yourAccountSuspendedTitle: "Эта учетная запись заблокирована"
|
||||||
|
yourAccountSuspendedDescription: "Эта учетная запись была заблокирована из-за нарушения условий предоставления услуг сервера. Свяжитесь с администратором, если вы хотите узнать более подробную причину. Пожалуйста, не создавайте новую учетную запись."
|
||||||
|
menu: "Меню"
|
||||||
divider: "Линия-разделитель"
|
divider: "Линия-разделитель"
|
||||||
addItem: "Добавить элемент"
|
addItem: "Добавить элемент"
|
||||||
rooms: "Комната"
|
rooms: "Комната"
|
||||||
@@ -760,7 +766,33 @@ middle: "Средне"
|
|||||||
low: "Низкий"
|
low: "Низкий"
|
||||||
emailNotConfiguredWarning: "Не указан адрес электронной почты"
|
emailNotConfiguredWarning: "Не указан адрес электронной почты"
|
||||||
ratio: "Соотношение"
|
ratio: "Соотношение"
|
||||||
|
customCss: "Индивидуальный CSS"
|
||||||
|
customCssWarn: "Используйте эту настройку только если знаете, что делаете. Ошибки здесь чреваты тем, что сайт перестанет нормально работать у вас."
|
||||||
global: "Всеобщая"
|
global: "Всеобщая"
|
||||||
|
squareAvatars: "Квадратные аватарки"
|
||||||
|
sent: "Отправить"
|
||||||
|
received: "Получено"
|
||||||
|
searchResult: "Результаты поиска"
|
||||||
|
hashtags: "Хэштег"
|
||||||
|
troubleshooting: "Разрешение проблем"
|
||||||
|
useBlurEffect: "Размытие в интерфейсе"
|
||||||
|
learnMore: "Подробнее"
|
||||||
|
misskeyUpdated: "Misskey обновился!"
|
||||||
|
whatIsNew: "Что новенького?"
|
||||||
|
translate: "Перевод"
|
||||||
|
accountDeletionInProgress: "В настоящее время выполняется удаление учетной записи"
|
||||||
|
usernameInfo: "Имя, которое отличает вашу учетную запись от других на этом сервере. Вы можете использовать алфавит (a~z, A~Z), цифры (0~9) или символы подчеркивания (_). Имена пользователей не могут быть изменены позже."
|
||||||
|
aiChanMode: "ИИ режим"
|
||||||
|
keepCw: "Сохраняйте Предупреждения о содержимом"
|
||||||
|
controlPanel: "Панель управления"
|
||||||
|
manageAccounts: "Управление аккаунтом"
|
||||||
|
_docs:
|
||||||
|
continueReading: "Читать подробнее"
|
||||||
|
features: "Возможности"
|
||||||
|
generalTopics: "Основные темы"
|
||||||
|
advancedTopics: "Дополнительные темы"
|
||||||
|
admin: "Управление"
|
||||||
|
translateWarn: "Это перевод документа. Он может неточно отражать содержимое оригинала."
|
||||||
_ad:
|
_ad:
|
||||||
back: "Выход"
|
back: "Выход"
|
||||||
reduceFrequencyOfThisAd: "Реже показывать эту рекламу"
|
reduceFrequencyOfThisAd: "Реже показывать эту рекламу"
|
||||||
@@ -859,6 +891,8 @@ _mfm:
|
|||||||
blurDescription: "Размывает текст до нечитаемости, будто его поместили за матовое стекло. Наведение указателя мыши на размытый текст возвращает чёткость."
|
blurDescription: "Размывает текст до нечитаемости, будто его поместили за матовое стекло. Наведение указателя мыши на размытый текст возвращает чёткость."
|
||||||
font: "Шрифт"
|
font: "Шрифт"
|
||||||
fontDescription: "Так можно писать произвольным шрифтом."
|
fontDescription: "Так можно писать произвольным шрифтом."
|
||||||
|
rainbow: "Радуга"
|
||||||
|
rainbowDescription: "Заставлять содержимое отображаться в цветах радуги."
|
||||||
_reversi:
|
_reversi:
|
||||||
reversi: "Реверси"
|
reversi: "Реверси"
|
||||||
gameSettings: "Настройки игры"
|
gameSettings: "Настройки игры"
|
||||||
@@ -911,6 +945,9 @@ _channel:
|
|||||||
usersCount: "Участников: {n}"
|
usersCount: "Участников: {n}"
|
||||||
notesCount: "Заметок: {n}"
|
notesCount: "Заметок: {n}"
|
||||||
_menuDisplay:
|
_menuDisplay:
|
||||||
|
sideFull: "Сторона"
|
||||||
|
sideIcon: "Сторона (иконки)"
|
||||||
|
top: "Вверх"
|
||||||
hide: "Спрятать"
|
hide: "Спрятать"
|
||||||
_wordMute:
|
_wordMute:
|
||||||
muteWords: "Скрыть слово"
|
muteWords: "Скрыть слово"
|
||||||
@@ -1122,6 +1159,7 @@ _widgets:
|
|||||||
jobQueue: "Очередь заданий"
|
jobQueue: "Очередь заданий"
|
||||||
serverMetric: "Показатели сервера"
|
serverMetric: "Показатели сервера"
|
||||||
aiscript: "Консоль AiScript"
|
aiscript: "Консоль AiScript"
|
||||||
|
aichan: "Ай"
|
||||||
_cw:
|
_cw:
|
||||||
hide: "Спрятать"
|
hide: "Спрятать"
|
||||||
show: "Показать еще"
|
show: "Показать еще"
|
||||||
|
62
locales/tr-TR.yml
Normal file
62
locales/tr-TR.yml
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
---
|
||||||
|
_lang_: "Türkçe"
|
||||||
|
introMisskey: "Açık kaynaklı bir dağıtılmış mikroblog hizmeti olan Misskey'e hoş geldiniz.\nMisskey, neler olup bittiğini paylaşmak ve herkese sizden bahsetmek için \"notlar\" oluşturmanıza olanak tanıyan, açık kaynaklı, dağıtılmış bir mikroblog hizmetidir.\nHerkesin notlarına kendi tepkilerinizi hızlıca eklemek için \"Tepkiler\" özelliğini de kullanabilirsiniz👍.\nYeni bir dünyayı keşfedin🚀."
|
||||||
|
monthAndDay: "{month}Ay {day}Gün"
|
||||||
|
search: "Arama"
|
||||||
|
notifications: "Bildirim"
|
||||||
|
username: "Kullanıcı Adı"
|
||||||
|
password: "Şifre"
|
||||||
|
forgotPassword: "şifremi unuttum"
|
||||||
|
ok: "TAMAM"
|
||||||
|
gotIt: "Anladım"
|
||||||
|
cancel: "İptal"
|
||||||
|
enterUsername: "Kullanıcı adınızı giriniz"
|
||||||
|
noNotes: "Notlar mevcut değil."
|
||||||
|
noNotifications: "Bildirim bulunmuyor"
|
||||||
|
settings: "Ayarlar"
|
||||||
|
basicSettings: "Temel Ayarlar"
|
||||||
|
otherSettings: "Diğer Ayarlar"
|
||||||
|
openInWindow: "Bir pencere ile aç"
|
||||||
|
profile: "Profil"
|
||||||
|
timeline: "Zaman çizelgesi"
|
||||||
|
noAccountDescription: "Bu kullanıcı henüz biyografisini yazmadı"
|
||||||
|
login: "Giriş Yap "
|
||||||
|
logout: "Çıkış Yap"
|
||||||
|
signup: "Kayıt Ol"
|
||||||
|
uploading: "Yükleniyor"
|
||||||
|
users: "Kullanıcı"
|
||||||
|
addUser: "Kullanıcı Ekle"
|
||||||
|
favorite: "Favoriler"
|
||||||
|
favorites: "Favoriler"
|
||||||
|
unfavorite: "Favorilerden Kaldır"
|
||||||
|
favorited: "Favorilerime eklendi."
|
||||||
|
alreadyFavorited: "Zaten favorilerinizde kayıtlı."
|
||||||
|
pin: "Sabitlenmiş"
|
||||||
|
unpin: "Sabitlemeyi kaldır"
|
||||||
|
copyContent: "İçeriği kopyala"
|
||||||
|
copyLink: "Bağlantıyı Kopyala"
|
||||||
|
delete: "Sil"
|
||||||
|
deleteAndEdit: "Sil ve yeniden düzenle"
|
||||||
|
deleteAndEditConfirm: "Bu notu silip yeniden düzenlemek istiyor musunuz? Bu nota ilişkin tüm Tepkiler, Yeniden Notlar ve Yanıtlar da silinecektir."
|
||||||
|
addToList: "Listeye ekle"
|
||||||
|
sendMessage: "Mesaj Gönder"
|
||||||
|
copyUsername: "Kullanıcı Adını Kopyala"
|
||||||
|
searchUser: "Kullanıcıları ara"
|
||||||
|
pinned: "Sabitlenmiş"
|
||||||
|
remove: "Sil"
|
||||||
|
smtpUser: "Kullanıcı Adı"
|
||||||
|
smtpPass: "Şifre"
|
||||||
|
user: "Kullanıcı"
|
||||||
|
_mfm:
|
||||||
|
search: "Arama"
|
||||||
|
_sfx:
|
||||||
|
notification: "Bildirim"
|
||||||
|
_widgets:
|
||||||
|
notifications: "Bildirim"
|
||||||
|
timeline: "Zaman çizelgesi"
|
||||||
|
_profile:
|
||||||
|
username: "Kullanıcı Adı"
|
||||||
|
_deck:
|
||||||
|
_columns:
|
||||||
|
notifications: "Bildirim"
|
||||||
|
tl: "Zaman çizelgesi"
|
@@ -127,6 +127,7 @@ editWidgets: "Редагувати віджети"
|
|||||||
editWidgetsExit: "Готово"
|
editWidgetsExit: "Готово"
|
||||||
customEmojis: "Кастомні емоджі"
|
customEmojis: "Кастомні емоджі"
|
||||||
emoji: "Емоджі"
|
emoji: "Емоджі"
|
||||||
|
emojis: "Емоджі"
|
||||||
emojiName: "Назва емоджі"
|
emojiName: "Назва емоджі"
|
||||||
emojiUrl: "URL емодзі"
|
emojiUrl: "URL емодзі"
|
||||||
addEmoji: "Додати емодзі"
|
addEmoji: "Додати емодзі"
|
||||||
@@ -689,6 +690,10 @@ administration: "Управління"
|
|||||||
expiration: "Опитування закінчується"
|
expiration: "Опитування закінчується"
|
||||||
middle: "Середній"
|
middle: "Середній"
|
||||||
global: "Глобальна"
|
global: "Глобальна"
|
||||||
|
sent: "Відправити"
|
||||||
|
hashtags: "Хештеґ"
|
||||||
|
_docs:
|
||||||
|
admin: "Управління"
|
||||||
_ad:
|
_ad:
|
||||||
back: "Назад"
|
back: "Назад"
|
||||||
_gallery:
|
_gallery:
|
||||||
|
@@ -81,6 +81,8 @@ somethingHappened: "出现了一些问题!"
|
|||||||
retry: "重试"
|
retry: "重试"
|
||||||
pageLoadError: "页面加载失败。"
|
pageLoadError: "页面加载失败。"
|
||||||
pageLoadErrorDescription: "这通常是由于网络或浏览器缓存的原因。请清除缓存或等待片刻后重试。"
|
pageLoadErrorDescription: "这通常是由于网络或浏览器缓存的原因。请清除缓存或等待片刻后重试。"
|
||||||
|
serverIsDead: "服务器没有响应。 请稍等片刻,然后重试。"
|
||||||
|
youShouldUpgradeClient: "请重新加载并使用新版本的客户端查看此页面。"
|
||||||
enterListName: "输入列表名称"
|
enterListName: "输入列表名称"
|
||||||
privacy: "隐私"
|
privacy: "隐私"
|
||||||
makeFollowManuallyApprove: "关注者的关注请求需要批准"
|
makeFollowManuallyApprove: "关注者的关注请求需要批准"
|
||||||
@@ -128,6 +130,7 @@ editWidgets: "编辑小工具"
|
|||||||
editWidgetsExit: "完成编辑"
|
editWidgetsExit: "完成编辑"
|
||||||
customEmojis: "自定义表情符号"
|
customEmojis: "自定义表情符号"
|
||||||
emoji: "表情符号"
|
emoji: "表情符号"
|
||||||
|
emojis: "表情符号"
|
||||||
emojiName: "表情符号名称"
|
emojiName: "表情符号名称"
|
||||||
emojiUrl: "表情符号地址"
|
emojiUrl: "表情符号地址"
|
||||||
addEmoji: "添加表情符号"
|
addEmoji: "添加表情符号"
|
||||||
@@ -528,6 +531,8 @@ removeAllFollowing: "取消所有关注"
|
|||||||
removeAllFollowingDescription: "取消{host}的所有关注者。当实例不存在时执行。"
|
removeAllFollowingDescription: "取消{host}的所有关注者。当实例不存在时执行。"
|
||||||
userSuspended: "该用户已被冻结。"
|
userSuspended: "该用户已被冻结。"
|
||||||
userSilenced: "该用户已被禁言。"
|
userSilenced: "该用户已被禁言。"
|
||||||
|
yourAccountSuspendedTitle: "账户已被冻结"
|
||||||
|
yourAccountSuspendedDescription: "由于违反了服务器的服务条款或其他原因,该账户已被冻结。 您可以与管理员联系以了解更多信息。 请不要创建一个新的帐户。"
|
||||||
menu: "菜单"
|
menu: "菜单"
|
||||||
divider: "分割线"
|
divider: "分割线"
|
||||||
addItem: "添加项目"
|
addItem: "添加项目"
|
||||||
@@ -761,10 +766,56 @@ middle: "中"
|
|||||||
low: "低"
|
low: "低"
|
||||||
emailNotConfiguredWarning: "电子邮件地址未设置。"
|
emailNotConfiguredWarning: "电子邮件地址未设置。"
|
||||||
ratio: "比率"
|
ratio: "比率"
|
||||||
|
previewNoteText: "预览文本"
|
||||||
customCss: "自定义 CSS"
|
customCss: "自定义 CSS"
|
||||||
customCssWarn: "这些设置必须有相关的基础知识,不当的配置可能导致客户端无法正常使用!"
|
customCssWarn: "这些设置必须有相关的基础知识,不当的配置可能导致客户端无法正常使用!"
|
||||||
global: "全局"
|
global: "全局"
|
||||||
squareAvatars: "显示方形头像图标"
|
squareAvatars: "显示方形头像图标"
|
||||||
|
sent: "发送"
|
||||||
|
received: "收取"
|
||||||
|
searchResult: "搜索结果"
|
||||||
|
hashtags: "话题标签"
|
||||||
|
troubleshooting: "故障排除"
|
||||||
|
useBlurEffect: "在UI上使用模糊效果"
|
||||||
|
learnMore: "更多信息"
|
||||||
|
misskeyUpdated: "Misskey更新完成!"
|
||||||
|
whatIsNew: "显示更新信息"
|
||||||
|
translate: "翻译"
|
||||||
|
translatedFrom: "从 {x} 翻译"
|
||||||
|
accountDeletionInProgress: "正在删除账户"
|
||||||
|
usernameInfo: "在服务器上唯一标识您的帐户的名称。您可以使用字母 (a ~ z, A ~ Z)、数字 (0 ~ 9) 和下划线 (_)。用户名以后不能更改。"
|
||||||
|
aiChanMode: "小蓝模式"
|
||||||
|
keepCw: "保留CW"
|
||||||
|
pubSub: "Pub/Sub账户"
|
||||||
|
lastCommunication: "最近通信"
|
||||||
|
resolved: "已解决"
|
||||||
|
unresolved: "未解决"
|
||||||
|
itsOn: "已开启"
|
||||||
|
itsOff: "已关闭"
|
||||||
|
emailRequiredForSignup: "注册账户需要电子邮件地址"
|
||||||
|
unread: "未读"
|
||||||
|
filter: "筛选"
|
||||||
|
controlPanel: "控制面板"
|
||||||
|
manageAccounts: "管理账户"
|
||||||
|
classic: "经典"
|
||||||
|
_signup:
|
||||||
|
almostThere: "即将完成"
|
||||||
|
emailAddressInfo: "请输入您所使用的电子邮件地址"
|
||||||
|
emailSent: "已将确认邮件发送至您输入的电子邮件地址 ({email})。请访问电子邮件中的链接以完成帐户创建。"
|
||||||
|
_accountDelete:
|
||||||
|
accountDelete: "删除帐户"
|
||||||
|
mayTakeTime: "删除账号是一个性能损耗较大的处理,如果账号持有的内容数量和上传的文件数量较多的话,完成需要花费一段时间。"
|
||||||
|
sendEmail: "账户删除完成后,将向注册的电子邮件地址发送通知。"
|
||||||
|
requestAccountDelete: "请求删除账户"
|
||||||
|
started: "账户删除过程已开始。"
|
||||||
|
inProgress: "正在删除"
|
||||||
|
_docs:
|
||||||
|
continueReading: "继续阅读"
|
||||||
|
features: "特性"
|
||||||
|
generalTopics: "通常提示"
|
||||||
|
advancedTopics: "进阶提示"
|
||||||
|
admin: "管理"
|
||||||
|
translateWarn: "本文档是翻译后的文档。内容可能与原文有所不同。"
|
||||||
_ad:
|
_ad:
|
||||||
back: "返回"
|
back: "返回"
|
||||||
reduceFrequencyOfThisAd: "减少此广告的频率"
|
reduceFrequencyOfThisAd: "减少此广告的频率"
|
||||||
@@ -863,6 +914,10 @@ _mfm:
|
|||||||
blurDescription: "产生模糊效果。将鼠标指针放在上面即可将内容显示出来。"
|
blurDescription: "产生模糊效果。将鼠标指针放在上面即可将内容显示出来。"
|
||||||
font: "字体"
|
font: "字体"
|
||||||
fontDescription: "可以设置内容所使用的字体。"
|
fontDescription: "可以设置内容所使用的字体。"
|
||||||
|
rainbow: "彩虹"
|
||||||
|
rainbowDescription: "用彩虹色来显示内容。"
|
||||||
|
sparkle: "闪光"
|
||||||
|
sparkleDescription: "添加发光粒子效果。"
|
||||||
_reversi:
|
_reversi:
|
||||||
reversi: "黑白棋"
|
reversi: "黑白棋"
|
||||||
gameSettings: "对局设置"
|
gameSettings: "对局设置"
|
||||||
@@ -1089,6 +1144,10 @@ _permissions:
|
|||||||
"write:user-groups": "操作用户组"
|
"write:user-groups": "操作用户组"
|
||||||
"read:channels": "查看频道"
|
"read:channels": "查看频道"
|
||||||
"write:channels": "管理频道"
|
"write:channels": "管理频道"
|
||||||
|
"read:gallery": "浏览图库"
|
||||||
|
"write:gallery": "操作图库"
|
||||||
|
"read:gallery-likes": "读取喜欢的图片"
|
||||||
|
"write:gallery-likes": "操作喜欢的图片"
|
||||||
_auth:
|
_auth:
|
||||||
shareAccess: "您要授权允许“{name}”访问您的帐户吗?"
|
shareAccess: "您要授权允许“{name}”访问您的帐户吗?"
|
||||||
shareAccessAsk: "您确定要授权此应用程序访问您的帐户吗?"
|
shareAccessAsk: "您确定要授权此应用程序访问您的帐户吗?"
|
||||||
@@ -1129,6 +1188,7 @@ _widgets:
|
|||||||
jobQueue: "作业队列"
|
jobQueue: "作业队列"
|
||||||
serverMetric: "服务器监控"
|
serverMetric: "服务器监控"
|
||||||
aiscript: "AiScript控制台"
|
aiscript: "AiScript控制台"
|
||||||
|
aichan: "小蓝"
|
||||||
_cw:
|
_cw:
|
||||||
hide: "隐藏"
|
hide: "隐藏"
|
||||||
show: "查看更多"
|
show: "查看更多"
|
||||||
|
@@ -128,6 +128,7 @@ editWidgets: "編輯小工具"
|
|||||||
editWidgetsExit: "完成"
|
editWidgetsExit: "完成"
|
||||||
customEmojis: "自訂表情符號"
|
customEmojis: "自訂表情符號"
|
||||||
emoji: "表情符號"
|
emoji: "表情符號"
|
||||||
|
emojis: "表情符號"
|
||||||
emojiName: "表情符號名稱"
|
emojiName: "表情符號名稱"
|
||||||
emojiUrl: "表情符號URL"
|
emojiUrl: "表情符號URL"
|
||||||
addEmoji: "加入表情符號"
|
addEmoji: "加入表情符號"
|
||||||
@@ -751,6 +752,10 @@ low: "低"
|
|||||||
emailNotConfiguredWarning: "沒有設定電子郵件地址"
|
emailNotConfiguredWarning: "沒有設定電子郵件地址"
|
||||||
ratio: "%"
|
ratio: "%"
|
||||||
global: "公開"
|
global: "公開"
|
||||||
|
sent: "發送"
|
||||||
|
hashtags: "#tag"
|
||||||
|
_docs:
|
||||||
|
admin: "管理"
|
||||||
_ad:
|
_ad:
|
||||||
back: "返回"
|
back: "返回"
|
||||||
reduceFrequencyOfThisAd: "降低此廣告的頻率 "
|
reduceFrequencyOfThisAd: "降低此廣告的頻率 "
|
||||||
|
@@ -1,13 +0,0 @@
|
|||||||
import {MigrationInterface, QueryRunner} from "typeorm";
|
|
||||||
|
|
||||||
export class PinnedUsers1557476068003 implements MigrationInterface {
|
|
||||||
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<any> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "meta" ADD "pinnedUsers" character varying(256) array NOT NULL DEFAULT '{}'::varchar[]`);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<any> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "pinnedUsers"`);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@@ -1,13 +0,0 @@
|
|||||||
import {MigrationInterface, QueryRunner} from "typeorm";
|
|
||||||
|
|
||||||
export class UserListJoining1558266512381 implements MigrationInterface {
|
|
||||||
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<any> {
|
|
||||||
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_90f7da835e4c10aca6853621e1" ON "user_list_joining" ("userId", "userListId") `);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<any> {
|
|
||||||
await queryRunner.query(`DROP INDEX "IDX_90f7da835e4c10aca6853621e1"`);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@@ -1,13 +0,0 @@
|
|||||||
import {MigrationInterface, QueryRunner} from "typeorm";
|
|
||||||
|
|
||||||
export class PasswordLessLogin1562422242907 implements MigrationInterface {
|
|
||||||
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<any> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "user_profile" ADD COLUMN "usePasswordLessLogin" boolean DEFAULT false NOT NULL`);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<any> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "user_profile" DROP COLUMN "usePasswordLessLogin"`);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@@ -1,13 +0,0 @@
|
|||||||
import {MigrationInterface, QueryRunner} from "typeorm";
|
|
||||||
|
|
||||||
export class PageTitleHideOption1562448332510 implements MigrationInterface {
|
|
||||||
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<any> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "page" ADD "hideTitleWhenPinned" boolean NOT NULL DEFAULT false`);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<any> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "page" DROP COLUMN "hideTitleWhenPinned"`);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@@ -1,13 +0,0 @@
|
|||||||
import {MigrationInterface, QueryRunner} from "typeorm";
|
|
||||||
|
|
||||||
export class room1565634203341 implements MigrationInterface {
|
|
||||||
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<any> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "user_profile" ADD "room" jsonb NOT NULL DEFAULT '{}'`);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<any> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "user_profile" DROP COLUMN "room"`);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@@ -1,13 +0,0 @@
|
|||||||
import {MigrationInterface, QueryRunner} from "typeorm";
|
|
||||||
|
|
||||||
export class CustomEmojiCategory1571220798684 implements MigrationInterface {
|
|
||||||
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<any> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "emoji" ADD "category" character varying(128)`, undefined);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<any> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "emoji" DROP COLUMN "category"`, undefined);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@@ -1,14 +0,0 @@
|
|||||||
import {MigrationInterface, QueryRunner} from "typeorm";
|
|
||||||
|
|
||||||
export class TalkFederationId1576269851876 implements MigrationInterface {
|
|
||||||
name = 'TalkFederationId1576269851876'
|
|
||||||
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<any> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "messaging_message" ADD "uri" character varying(512)`, undefined);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<any> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "messaging_message" DROP COLUMN "uri"`, undefined);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@@ -1,14 +0,0 @@
|
|||||||
import {MigrationInterface, QueryRunner} from "typeorm";
|
|
||||||
|
|
||||||
export class ProxyRemoteFiles1576869585998 implements MigrationInterface {
|
|
||||||
name = 'ProxyRemoteFiles1576869585998'
|
|
||||||
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<any> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "meta" ADD "proxyRemoteFiles" boolean NOT NULL DEFAULT false`, undefined);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<any> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "proxyRemoteFiles"`, undefined);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@@ -1,14 +0,0 @@
|
|||||||
import {MigrationInterface, QueryRunner} from "typeorm";
|
|
||||||
|
|
||||||
export class v1221579270193251 implements MigrationInterface {
|
|
||||||
name = 'v1221579270193251'
|
|
||||||
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<any> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "announcement_read" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`, undefined);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<any> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "announcement_read" DROP COLUMN "createdAt"`, undefined);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@@ -1,14 +0,0 @@
|
|||||||
import {MigrationInterface, QueryRunner} from "typeorm";
|
|
||||||
|
|
||||||
export class v1231579282808087 implements MigrationInterface {
|
|
||||||
name = 'v1231579282808087'
|
|
||||||
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<any> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "announcement" ADD "updatedAt" TIMESTAMP WITH TIME ZONE`, undefined);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<any> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "announcement" DROP COLUMN "updatedAt"`, undefined);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@@ -1,14 +0,0 @@
|
|||||||
import {MigrationInterface, QueryRunner} from "typeorm";
|
|
||||||
|
|
||||||
export class v1291580154400017 implements MigrationInterface {
|
|
||||||
name = 'v1291580154400017'
|
|
||||||
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<any> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "antenna" ADD "withReplies" boolean NOT NULL DEFAULT false`, undefined);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<any> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "antenna" DROP COLUMN "withReplies"`, undefined);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@@ -1,14 +0,0 @@
|
|||||||
import {MigrationInterface, QueryRunner} from "typeorm";
|
|
||||||
|
|
||||||
export class v12131580543501339 implements MigrationInterface {
|
|
||||||
name = 'v12131580543501339'
|
|
||||||
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<any> {
|
|
||||||
await queryRunner.query(`CREATE INDEX "IDX_NOTE_TAGS" ON "note" USING gin ("tags")`, undefined);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<any> {
|
|
||||||
await queryRunner.query(`DROP INDEX "IDX_NOTE_TAGS"`, undefined);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@@ -1,14 +0,0 @@
|
|||||||
import {MigrationInterface, QueryRunner} from "typeorm";
|
|
||||||
|
|
||||||
export class driveUserFolderIdIndex1581708415836 implements MigrationInterface {
|
|
||||||
name = 'driveUserFolderIdIndex1581708415836'
|
|
||||||
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<any> {
|
|
||||||
await queryRunner.query(`CREATE INDEX "IDX_55720b33a61a7c806a8215b825" ON "drive_file" ("userId", "folderId", "id") `, undefined);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<any> {
|
|
||||||
await queryRunner.query(`DROP INDEX "IDX_55720b33a61a7c806a8215b825"`, undefined);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@@ -1,14 +0,0 @@
|
|||||||
import {MigrationInterface, QueryRunner} from "typeorm";
|
|
||||||
|
|
||||||
export class featuredInjecttion1582019042083 implements MigrationInterface {
|
|
||||||
name = 'featuredInjecttion1582019042083'
|
|
||||||
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<any> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "user_profile" ADD "injectFeaturedNote" boolean NOT NULL DEFAULT true`, undefined);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<any> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "user_profile" DROP COLUMN "injectFeaturedNote"`, undefined);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@@ -1,14 +0,0 @@
|
|||||||
import {MigrationInterface, QueryRunner} from "typeorm";
|
|
||||||
|
|
||||||
export class antennaExclude1582210532752 implements MigrationInterface {
|
|
||||||
name = 'antennaExclude1582210532752'
|
|
||||||
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<any> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "antenna" ADD "excludeKeywords" jsonb NOT NULL DEFAULT '[]'`, undefined);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<any> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "antenna" DROP COLUMN "excludeKeywords"`, undefined);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@@ -1,14 +0,0 @@
|
|||||||
import {MigrationInterface, QueryRunner} from "typeorm";
|
|
||||||
|
|
||||||
export class noteReactionLength1582875306439 implements MigrationInterface {
|
|
||||||
name = 'noteReactionLength1582875306439'
|
|
||||||
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<any> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "note_reaction" ALTER COLUMN "reaction" TYPE character varying(130)`, undefined);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<any> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "note_reaction" ALTER COLUMN "reaction" TYPE character varying(128)`, undefined);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@@ -1,15 +0,0 @@
|
|||||||
/* tslint:disable:quotemark class-name indent */
|
|
||||||
import {MigrationInterface, QueryRunner} from "typeorm";
|
|
||||||
|
|
||||||
export class apUrl1585772678853 implements MigrationInterface {
|
|
||||||
name = 'apUrl1585772678853'
|
|
||||||
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<any> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "note" ADD "url" character varying(512)`, undefined);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<any> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "note" DROP COLUMN "url"`, undefined);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@@ -1,14 +0,0 @@
|
|||||||
import {MigrationInterface, QueryRunner} from 'typeorm';
|
|
||||||
|
|
||||||
export class AddObjectStorageUseProxy1586624197029 implements MigrationInterface {
|
|
||||||
name = 'AddObjectStorageUseProxy1586624197029'
|
|
||||||
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "meta" ADD "objectStorageUseProxy" boolean NOT NULL DEFAULT true`, undefined);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "objectStorageUseProxy"`, undefined);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@@ -1,12 +0,0 @@
|
|||||||
import {MigrationInterface, QueryRunner} from "typeorm";
|
|
||||||
|
|
||||||
export class remoteReaction1586641139527 implements MigrationInterface {
|
|
||||||
name = 'remoteReaction1586641139527'
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<any> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "note_reaction" ALTER COLUMN "reaction" TYPE character varying(260)`, undefined);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<any> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "note_reaction" ALTER COLUMN "reaction" TYPE character varying(130)`, undefined);
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,14 +0,0 @@
|
|||||||
import {MigrationInterface, QueryRunner} from "typeorm";
|
|
||||||
|
|
||||||
export class pageAiScript1586708940386 implements MigrationInterface {
|
|
||||||
name = 'pageAiScript1586708940386'
|
|
||||||
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "page" ADD "script" character varying(16384) NOT NULL DEFAULT ''`, undefined);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "page" DROP COLUMN "script"`, undefined);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@@ -1,14 +0,0 @@
|
|||||||
import {MigrationInterface, QueryRunner} from "typeorm";
|
|
||||||
|
|
||||||
export class blurhash1595075960584 implements MigrationInterface {
|
|
||||||
name = 'blurhash1595075960584'
|
|
||||||
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "drive_file" ADD "blurhash" character varying(128)`);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "drive_file" DROP COLUMN "blurhash"`);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@@ -1,14 +0,0 @@
|
|||||||
import {MigrationInterface, QueryRunner} from "typeorm";
|
|
||||||
|
|
||||||
export class instanceIconUrl1595676934834 implements MigrationInterface {
|
|
||||||
name = 'instanceIconUrl1595676934834'
|
|
||||||
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "instance" ADD "iconUrl" character varying(256) DEFAULT null`);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "instance" DROP COLUMN "iconUrl"`);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@@ -1,14 +0,0 @@
|
|||||||
import {MigrationInterface, QueryRunner} from "typeorm";
|
|
||||||
|
|
||||||
export class channel21596786425167 implements MigrationInterface {
|
|
||||||
name = 'channel21596786425167'
|
|
||||||
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "channel_following" ADD "readCursor" TIMESTAMP WITH TIME ZONE NOT NULL`);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "channel_following" DROP COLUMN "readCursor"`);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@@ -1,14 +0,0 @@
|
|||||||
import {MigrationInterface, QueryRunner} from "typeorm";
|
|
||||||
|
|
||||||
export class objectStorageSetPublicRead1597230137744 implements MigrationInterface {
|
|
||||||
name = 'objectStorageSetPublicRead1597230137744'
|
|
||||||
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "meta" ADD "objectStorageSetPublicRead" boolean NOT NULL DEFAULT false`);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "objectStorageSetPublicRead"`);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@@ -1,14 +0,0 @@
|
|||||||
import {MigrationInterface, QueryRunner} from "typeorm";
|
|
||||||
|
|
||||||
export class addSensitiveIndex1597385880794 implements MigrationInterface {
|
|
||||||
name = 'addSensitiveIndex1597385880794'
|
|
||||||
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
|
||||||
await queryRunner.query(`CREATE INDEX "IDX_a7eba67f8b3fa27271e85d2e26" ON "drive_file" ("isSensitive") `);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
|
||||||
await queryRunner.query(`DROP INDEX "IDX_a7eba67f8b3fa27271e85d2e26"`);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@@ -1,16 +0,0 @@
|
|||||||
import {MigrationInterface, QueryRunner} from "typeorm";
|
|
||||||
|
|
||||||
export class ChannelNoteIdDescIndex1597893996136 implements MigrationInterface {
|
|
||||||
name = 'ChannelNoteIdDescIndex1597893996136'
|
|
||||||
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
|
||||||
await queryRunner.query(`DROP INDEX "IDX_f22169eb10657bded6d875ac8f"`);
|
|
||||||
await queryRunner.query(`CREATE INDEX "IDX_note_on_channelId_and_id_desc" ON "note" ("channelId", "id" desc)`);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
|
||||||
await queryRunner.query(`DROP INDEX "IDX_note_on_channelId_and_id_desc"`);
|
|
||||||
await queryRunner.query(`CREATE INDEX "IDX_f22169eb10657bded6d875ac8f" ON "note" ("channelId") `);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@@ -1,14 +0,0 @@
|
|||||||
import {MigrationInterface, QueryRunner} from "typeorm";
|
|
||||||
|
|
||||||
export class instanceThemeColor1603776877564 implements MigrationInterface {
|
|
||||||
name = 'instanceThemeColor1603776877564'
|
|
||||||
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "instance" ADD "themeColor" character varying(64) DEFAULT null`);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "instance" DROP COLUMN "themeColor"`);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@@ -1,14 +0,0 @@
|
|||||||
import {MigrationInterface, QueryRunner} from "typeorm";
|
|
||||||
|
|
||||||
export class instanceFavicon1603781553011 implements MigrationInterface {
|
|
||||||
name = 'instanceFavicon1603781553011'
|
|
||||||
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "instance" ADD "faviconUrl" character varying(256) DEFAULT null`);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "instance" DROP COLUMN "faviconUrl"`);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@@ -1,14 +0,0 @@
|
|||||||
import {MigrationInterface, QueryRunner} from "typeorm";
|
|
||||||
|
|
||||||
export class deleteAutoWatch1604821689616 implements MigrationInterface {
|
|
||||||
name = 'deleteAutoWatch1604821689616'
|
|
||||||
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "user_profile" DROP COLUMN "autoWatch"`);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
|
||||||
await queryRunner.query(`ALTER TABLE "user_profile" ADD "autoWatch" boolean NOT NULL DEFAULT false`);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user