Compare commits
1333 Commits
Author | SHA1 | Date | |
---|---|---|---|
99eb919f4e | |||
1d640ee118 | |||
aedbab17cc | |||
3e00ce0d88 | |||
b14e347da1 | |||
034b8f09df | |||
c537a0ba93 | |||
897d775b14 | |||
4f43f019e0 | |||
1ea0aaef76 | |||
fd1cfcff5f | |||
c7308f4178 | |||
5cc65c5bd3 | |||
f216dd7617 | |||
af022fd8b8 | |||
5c7181ca21 | |||
30892ebfa3 | |||
ae2d71553e | |||
154e418c34 | |||
cfd1888969 | |||
d53795184c | |||
fe3609451e | |||
3692c9eb64 | |||
89a532eeac | |||
85740dd09f | |||
b05cfe4a84 | |||
322b64c0b4 | |||
601bc3e3cc | |||
c77fe1f2cf | |||
8e7744a695 | |||
901d6894de | |||
b463663175 | |||
2294e9ffdc | |||
1122f7281e | |||
99ced12ac5 | |||
2e80f9dfba | |||
3a990dce75 | |||
cc441258db | |||
ee144acea9 | |||
35b7ce1a96 | |||
dc0e55bf16 | |||
a3dceee7c0 | |||
7940417d23 | |||
b1751543aa | |||
034dcaeb9d | |||
936fb136d2 | |||
55ab528c87 | |||
c544e38f34 | |||
9b771baa5e | |||
f607faef0b | |||
cb16ff866c | |||
d6e85ffb59 | |||
f9e3fd7001 | |||
ba1e14443c | |||
35cd9e621a | |||
ea66080197 | |||
06837662a9 | |||
f9024a0058 | |||
493ff2eed5 | |||
ac82435014 | |||
d9257a5c0e | |||
f7c90b58d6 | |||
2f8e3559b5 | |||
e96a914b6b | |||
6ab2c7780c | |||
6d6162333e | |||
58b9dc581e | |||
fa8eb43eaf | |||
cf5fe2d107 | |||
50f2025421 | |||
1894df882b | |||
983599bdae | |||
6319dd1bfb | |||
d1ea8654e6 | |||
13288e1ed8 | |||
6d82bbef17 | |||
a46e2f2868 | |||
6cbc460c19 | |||
9cd2b767a9 | |||
60b9c467e6 | |||
ceabd7c791 | |||
0be4e10462 | |||
d95fafb5b3 | |||
ef485044ea | |||
c599a304c8 | |||
6d918f195a | |||
31a3748a18 | |||
48212e7a44 | |||
0f7241c2c2 | |||
bd903cdbb5 | |||
0b038f6477 | |||
7e26daa51b | |||
225d7701a4 | |||
1cae39e281 | |||
b635b064ee | |||
640fc337af | |||
43f2ac56ee | |||
d3c7c0ebe3 | |||
d15c8afcdf | |||
20134a5367 | |||
46c0280764 | |||
980a99b6c9 | |||
c69b72e199 | |||
0abe2dfee0 | |||
caf0a219a6 | |||
4341c4cccc | |||
054417354c | |||
b9095995eb | |||
a60bd33cfc | |||
7eedb9b19b | |||
e804a299e0 | |||
bcf7530eef | |||
bed982e705 | |||
d9853d9683 | |||
fbe4869d1e | |||
ac04c46d3b | |||
b1bd7307bb | |||
8a3f860213 | |||
e42e9530cb | |||
b65353bc3c | |||
75c087b79f | |||
300785923c | |||
00982d2742 | |||
4f208b99ff | |||
fa36b88af4 | |||
8223a069fe | |||
8de8de7669 | |||
705b46b3a0 | |||
e46e88344c | |||
5c8561c903 | |||
5fe2e8a59a | |||
c722225c80 | |||
584ceb3714 | |||
902bed4db3 | |||
e617ced1d3 | |||
22464c434e | |||
f33ded3107 | |||
a82ff360c6 | |||
14fa8b177d | |||
e46bb2f948 | |||
3eef0a65c2 | |||
bcd188a0e0 | |||
f38b6a1806 | |||
4cc2a561d5 | |||
f3e29c4f6a | |||
2fc58a780e | |||
561b0fc10e | |||
b8f42fca56 | |||
e8005c8d3a | |||
335e4bd213 | |||
0d21083c9a | |||
698e0d08a1 | |||
8e0108a0b8 | |||
d9775c147f | |||
b4ebf254c8 | |||
dec7c4f722 | |||
aaba43e754 | |||
9604ad3dc1 | |||
8e04bd12cf | |||
270df5c5b0 | |||
f5bea67515 | |||
1ec4156b49 | |||
5e33ca3da0 | |||
b9a57715e8 | |||
24681bbe10 | |||
a0c6ae2cba | |||
9a51ae5def | |||
f7c21868fe | |||
5d968afa74 | |||
b6e3f1c490 | |||
cb4d65b5c9 | |||
a902576334 | |||
1c6463e66f | |||
1cf5198372 | |||
a9a5673069 | |||
9d67857a34 | |||
25fde3b5eb | |||
0e3ca41b3c | |||
318759cfa4 | |||
73b5c12927 | |||
c850cef711 | |||
12fad68f58 | |||
037db7c5ef | |||
ea9aeef9d8 | |||
63415f1074 | |||
dded3912f8 | |||
d35f0247a2 | |||
76a7b5f067 | |||
c864d700d2 | |||
50e1040f1e | |||
8a40026c5c | |||
974250da6c | |||
7042933b3b | |||
8b7f5be878 | |||
01afdc410e | |||
7f5299cf46 | |||
ac7f04e669 | |||
65740da979 | |||
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 | |||
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 | |||
f418eaecf9 | |||
901436a095 | |||
a905188e95 | |||
a21070c01b | |||
5d0ee544f4 | |||
e52a9e0a65 | |||
67bf6ff3ce | |||
000bee6327 | |||
19a232cad7 | |||
a744f75eb9 | |||
5cf07fc50f | |||
1143606bc8 | |||
09f4885f89 | |||
dfd92efa89 | |||
c3fcfad910 | |||
652588abed | |||
2b4d5b73b9 | |||
c08d959b59 | |||
7783c1e0e1 | |||
6afa67089a | |||
26928ab407 | |||
4f04421cb3 | |||
4d1c723496 | |||
ae5d537197 | |||
2d21685d22 | |||
d4c0d85cbc | |||
781b57585b | |||
a0b036a119 | |||
c6afc61c94 | |||
4168addbb2 | |||
600394458c | |||
f33785a09c | |||
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 | |||
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 | |||
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 | |||
cc75620976 | |||
1cd8bfaded | |||
65d9c304df | |||
bf7bacceab | |||
a56f461895 | |||
e21ff916b0 | |||
da20675ada | |||
7364fb84ef | |||
48f46333f8 | |||
8407702b38 | |||
e1a8b158e0 | |||
7e30910ab8 | |||
7fbee704ec | |||
b1f94c7bc6 | |||
90411967d6 | |||
5719c623a4 | |||
e210ec782a | |||
229780f6ff | |||
6490a9829b | |||
6384d0708d | |||
db1fde2956 | |||
c86720a331 | |||
2af158be26 | |||
f84483896e | |||
fe7bc174fb | |||
c3b55b6849 | |||
3e193c9864 | |||
d64e25e449 | |||
c4707c612d | |||
9d3448c880 | |||
dad6a77645 | |||
f64d3942d7 | |||
45fe754759 | |||
98f1d93628 | |||
8785e1c3a4 | |||
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 | |||
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 | |||
ab01cf1881 | |||
0d10ca02db | |||
0627df8116 | |||
c88ea7150c | |||
555954c71e | |||
f231f02329 | |||
b8af5dfde0 | |||
ef3710fdc2 | |||
bde114ad13 | |||
9d138aa282 | |||
c0ba71c368 | |||
7b2cb30a9d | |||
0f55e65701 | |||
aeb24b96eb | |||
ad4700b3b1 | |||
b2e5ade5ac | |||
90a7b9b551 | |||
31b6ab9b23 | |||
4149c7782f | |||
227f52d758 | |||
baa2a871f1 | |||
5bb619fe7b | |||
fff3c552e2 | |||
e19cc8bebf | |||
f4f8debb92 | |||
ea6b8b599f | |||
c30f02ae4c | |||
09450ba544 | |||
19f753c15c | |||
fa49427df0 | |||
6678d97cc4 | |||
e3642a8d10 | |||
f9022fdf16 | |||
1c764139bf | |||
048ed26f41 | |||
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 | |||
41fe364b49 | |||
2953ba17c3 | |||
f3b3e06329 | |||
98249942d5 | |||
0fc8445425 | |||
15d166e30e | |||
83619fda98 | |||
e23ad7833d | |||
38aa760b57 | |||
3182606e99 | |||
7cc8646ad3 | |||
e793fced61 | |||
248edb5dfd | |||
9414a944b7 | |||
756b8a2a29 | |||
f142ed91fb | |||
6aef54a9e0 | |||
f1c9e596e8 | |||
862ddde0db | |||
ee5a060762 | |||
42d293ee60 | |||
04e27e160e | |||
62dede02ea | |||
6d1d7b5366 | |||
55e5c12441 | |||
0b34503c8a | |||
dc69490e3a | |||
1c241776a6 | |||
6812b895e7 | |||
ab439d0ed6 | |||
c7a2c368d4 | |||
2047860e71 | |||
1dbe03b210 | |||
b59a19c144 | |||
558d288e7b | |||
e24c8b6878 | |||
1772af9583 | |||
cb42f94d9c | |||
38474c7316 | |||
49febe1764 | |||
65addc8206 | |||
28f7e48dc6 | |||
d97fc9ce4e | |||
f26aeee819 | |||
c071467b6a | |||
334ca01092 | |||
c122ec2e79 | |||
e1247b3e45 | |||
8b9c445fef | |||
a65eb502d2 | |||
55c549a9f8 | |||
56600ba1df | |||
6b312f755e | |||
d6267f797d | |||
a2b8097b4b | |||
22bbee1fa3 | |||
fa1b38394c | |||
441790be2d | |||
5d66bb8794 | |||
a5cdc9a1f4 | |||
a5a2f9d01e | |||
89fb727f61 | |||
3e7a87f75a | |||
caf40e40fb | |||
b608f63a1a | |||
dc44d9a0a8 | |||
bb926dd301 | |||
79cb836483 | |||
f1c4e4a10e | |||
798aedfc0f | |||
1077c2a637 | |||
cbe689607c | |||
948b70cb0f | |||
0263539202 | |||
52e54cf0dc | |||
24e7eeca0f | |||
d76345264d | |||
0eb115bf7e | |||
30d2a1d8b6 | |||
857c88e8d6 | |||
ffb9646ce9 | |||
db3724cf33 | |||
466c083233 | |||
ae2267220b | |||
c92744c3d3 | |||
35f075b887 | |||
6cc4edc5e8 | |||
c06091f78a | |||
f85399e355 | |||
47aaf04481 | |||
7063a6925f | |||
3cd04c4b81 | |||
e6754eb880 | |||
ef646b9576 | |||
ecd541873b | |||
5d10642e07 | |||
da34acd35f | |||
0108b8bfe3 | |||
b16c3798a4 | |||
4b33c42da7 | |||
961b3177d5 | |||
7dc85a624e | |||
bfd215542b | |||
d752275730 | |||
be7e389bb5 | |||
99234632b2 | |||
3a7393e1dd | |||
2d12f8b49e | |||
3461f0ffc9 | |||
f24f7f14c3 | |||
917e57d475 | |||
6b43c5c18c | |||
7cd7059fbc | |||
591a5c277c | |||
164959a0c5 | |||
47fa7bb22a | |||
5b250c15f8 | |||
b60f9fbc00 | |||
3d7c3c39ff | |||
dd628006ec | |||
6cec662ec4 | |||
588b838deb | |||
80f8c2de78 | |||
d011aeefc5 | |||
44627c3b5f | |||
925a61e4d7 | |||
d8b17daf9d | |||
5e40930f11 | |||
1a8f41010e | |||
67f58b5217 | |||
2efae80b97 | |||
1157df1407 | |||
94ac0a7797 | |||
35cf05d6ca | |||
18e1efc7ec | |||
71ebb068f7 | |||
e9170e630c | |||
6ae642245e | |||
a34d8549d0 | |||
52e1df2df3 | |||
d7a5efbd36 | |||
9f5123d176 | |||
18da55bd81 | |||
25424fe62e | |||
c7e60cfd0c | |||
3e19bcb6cb | |||
6573c3b522 | |||
fa9f0d9ff9 | |||
77ccf3b929 | |||
4b205aee91 | |||
d348e211d4 | |||
42539575a6 | |||
8bce241170 | |||
c039665a97 | |||
0038f3b244 | |||
2f1fb9fe2d | |||
8c6d5408eb | |||
3f6a55aabd | |||
f37c25d00e | |||
23821d6fad | |||
c384c4ca6c | |||
946ba2a8ae | |||
55b673cc6f | |||
6d145bc4cb | |||
26b2a4de36 | |||
99b7f4d26e | |||
f413339e75 | |||
8a5567796f | |||
112c68cd0c | |||
4e5e542fb0 | |||
7bfc41c6e1 | |||
fec3c70886 | |||
ccf063709e | |||
9cab2cd940 | |||
3286c93c8f | |||
b918b6383b | |||
9d8ffe9911 | |||
24fa788609 | |||
1edb8cf0e9 | |||
25da4a6a79 | |||
e1e5283963 | |||
bc074abeba | |||
70a8dd30e0 | |||
d61a74fb88 | |||
dfa341e1c0 | |||
e825d3be83 | |||
b5c8dc0fe3 | |||
ebb2fe068c | |||
246693b848 | |||
ec75600e1c | |||
ec7242576e | |||
83a53c1008 | |||
878b154604 | |||
03101f001c | |||
a5bbb6732d | |||
11349561d6 | |||
8bb6ed625b | |||
046c263f13 | |||
1043020f27 | |||
17f2e39084 | |||
4d9e3b9012 | |||
135ff280b9 | |||
53d257ef0f | |||
9e012dbc1a | |||
7da5eead8a | |||
f984f56459 | |||
203799871c | |||
ad826bf088 | |||
e81c466d74 | |||
e04d866b20 | |||
d7a042b95d | |||
5c51185388 | |||
926266c7af | |||
1bcf123dd5 | |||
7c26fbbb2e | |||
3553f3be4e | |||
8c4662e6e5 | |||
e7610b2467 | |||
79e60afd42 | |||
3da93e7bf9 | |||
1700154f00 | |||
68571d8f57 | |||
61461b7f59 | |||
c27c3817a9 | |||
08e1db45a9 | |||
27c373ddf4 | |||
e62d7bc1ba | |||
0d680b060e | |||
0f054aed88 | |||
b4308ecb91 | |||
e68ff28649 | |||
cb946772b4 | |||
f169585a55 | |||
e5fbc68e0e | |||
f32cad2667 | |||
503f23ad3b | |||
481b46ac9e | |||
9c34ef7d74 | |||
18fbaee9df | |||
94b59e8b6f | |||
e9c5cd543e | |||
526838c77c | |||
ef6b370d0e | |||
38896205c8 | |||
7221684337 | |||
99e936bf2b | |||
138fee9b52 | |||
a19c1535e8 | |||
05ba1d0fd4 | |||
c2b3436770 | |||
a0fd3aef98 | |||
b112341d91 | |||
0dba5607a8 | |||
7378c4a9d8 | |||
89e7ef36dc | |||
39ed02bc53 | |||
5cb3d86a1b | |||
a3687dd653 | |||
fbc5b8ceb7 | |||
4c545fbba5 | |||
7fda726bbe | |||
e404e5e2de | |||
930127348a | |||
3db37e1d52 | |||
b9c4a582ac | |||
a085d9fbd7 | |||
7f2356ba4b | |||
7a7f668879 | |||
69a05aa5de | |||
c0c64a2d5d | |||
3c3b4eb2af | |||
1019e0bcfd | |||
faf2c007aa | |||
43678ac801 | |||
f22d5aa46d | |||
d599c1e740 | |||
0cc4519fc0 | |||
0265c85ba3 | |||
7ec0670748 | |||
d06517265f | |||
a88e486468 | |||
c22ff4c556 | |||
d4c4e30fe4 | |||
1ec3338d2e | |||
bffcfd92da | |||
f44517f4af | |||
5087a5af21 | |||
3a6331693a | |||
56a28923ca | |||
fb8ed718ce | |||
45e5d89353 | |||
d3fe02fb3e | |||
7d2126e2b2 | |||
1f4ae2f63a | |||
b378066ebf | |||
2210d1053a | |||
bb6cd258f3 | |||
b5adb02eb8 | |||
8b702bcfa0 | |||
e5ba475147 | |||
3cd537ecf2 | |||
d7c7bc5d8e | |||
9191b9e736 | |||
ce340aba7a | |||
62cc14c93b | |||
a284e8c5eb | |||
834c6df9eb | |||
c74fe3c6e2 | |||
ca542f8677 | |||
d6e23b803b | |||
8b327fbc82 | |||
8432c2c9ea | |||
94fd5485b6 | |||
cd4680b422 | |||
7e4a800352 | |||
00bc097abb | |||
5c3a56b283 | |||
48ea805999 | |||
6b753b05d6 | |||
cf757ed01e | |||
82dd88821c | |||
0e3e90f94f | |||
7c3086e9d9 | |||
202e943d55 | |||
36bcaaff55 | |||
967fae142b | |||
8f41dfec2e | |||
1f0abef084 | |||
0e6fbdfa5b | |||
e881e1bfb3 | |||
9e6cdd6106 | |||
d1efe1d208 | |||
2f2a8e537d | |||
82de8b7c50 | |||
fb194b855b | |||
a4a9b8707d | |||
c4c20bee7c | |||
41b491fa7c | |||
667d58bad4 | |||
630464f38d | |||
8050352ad8 | |||
b6d0d4eb99 | |||
70b129cc42 | |||
c52b504140 | |||
e987a50e9f | |||
d7e7848c92 | |||
9bb6dc52b8 | |||
73df95c42d | |||
f27e4033a6 | |||
e523e54881 | |||
606e5c0878 | |||
4b13431a19 | |||
87c8f9ff95 | |||
5e61c60f85 | |||
fbc9d5ecba | |||
d381d31e5e | |||
65e7204ec9 | |||
0b5e3a93a5 | |||
23d743bcae | |||
3e1596d5fb | |||
8a04fc3336 | |||
bffdfea58a | |||
449ea4b669 | |||
e632806349 | |||
9cc8b3656a | |||
a3fff800d2 | |||
48d767918f | |||
4f249159d3 | |||
0d19c2d42e | |||
e53a40658d | |||
0389e2c891 | |||
8aa089178a | |||
d3c8368b0c | |||
ca4f026533 | |||
7d02b36092 | |||
9e634360fa | |||
9cf811b048 | |||
b0d38446d7 | |||
dfe10ac61f | |||
f41c851108 | |||
522dbb1e13 | |||
bc4315da1e | |||
1a841b101e | |||
cbcf3b7599 | |||
4c4b3b8a8a | |||
c562d09479 | |||
ee7bef3395 | |||
80fa5c2e36 | |||
7212027937 | |||
16b5e121cd | |||
a87930542a | |||
e9ba81149d | |||
7ea207df5d | |||
aaa40e34c3 | |||
9b010074e1 | |||
0359db23d9 | |||
320f5fedfb | |||
3e2d2e5f6b | |||
b8d9dd15ac | |||
936fcfb1c7 | |||
fb60ffd319 | |||
8c9f8de6d2 | |||
cf9242053d | |||
47ee005457 | |||
5b965349a5 | |||
17dc50c242 | |||
deda2b2782 | |||
344e13ebcb | |||
a07d753da8 | |||
3003100443 | |||
bca4e5f0fa | |||
9b61306f59 | |||
b66e0b3ac5 | |||
4a9e9b4eea | |||
fc98552fdc | |||
4911a394a6 | |||
acc7a7e626 | |||
eaa6b35778 | |||
6059fb2aa6 | |||
dc3329bae2 | |||
41f4c247bc | |||
a3f75fe3f4 | |||
bf876f83df | |||
b3088facf4 | |||
44167ab84c | |||
eb745d2aa0 | |||
54bcb80b44 | |||
f871cf1053 | |||
8a484a623c | |||
1cb984ba79 | |||
4708b15c32 | |||
93c8ec631f | |||
a4ddd18f12 | |||
e4012e12f9 | |||
7427b4c839 | |||
c7c030bda6 | |||
64ebd808ef | |||
59028c234c | |||
a8c4058bdf | |||
87d17ccbfb | |||
0e89a9f41e | |||
f34920ea87 | |||
5e9cc09fcb | |||
7e93319873 | |||
878f09460c | |||
c9a01aeba5 | |||
2154354a4f | |||
490692316e | |||
3c5d2ecc91 | |||
a8d52c565e | |||
2752afd5f5 | |||
433230413e | |||
68ace4a311 | |||
65d6104ad2 | |||
372b42c0bd | |||
06845b3bec | |||
cbcbd6f0a9 | |||
af280f52ab | |||
7674a62d40 | |||
764a158cd7 | |||
cb2a9a29fe | |||
21e1906fbf | |||
4c01dcd8eb | |||
95939e4991 | |||
10af8c8db7 | |||
f29d417b30 | |||
f2e071baaa | |||
34fef37e54 | |||
06e817af59 | |||
55face52d8 | |||
aba867ea14 | |||
0921850a79 | |||
377b0399a0 | |||
49dfcd4227 | |||
0ee1021bcc | |||
e60d13f471 | |||
1baff3f8d7 | |||
1a4de42999 | |||
f5e53afa7a | |||
7886c2aa96 | |||
ad069f0eba | |||
3c7a02af1e | |||
3fa1d2bfc0 | |||
a413144bce | |||
bd046f7670 | |||
d8fb729aee | |||
a2557fca87 | |||
78a963fe33 | |||
f3aef8df75 | |||
b0757129d5 | |||
de98718923 | |||
0d1158335f | |||
9860489f88 | |||
25d37302a8 | |||
5f1a6b6f64 | |||
c39f69e5dd | |||
8668bc2609 | |||
65fbca47f9 | |||
53c7077d1d | |||
7eb6038f92 | |||
8bd80eb2a6 | |||
b36adb6aab | |||
eefbe097c0 | |||
5c6e389cd5 | |||
126826eb5a | |||
9bc0110b86 | |||
10cd4754fd | |||
10f9fd6146 | |||
ffb0dadbc7 | |||
9c1e42cc9b | |||
911dedf3d7 | |||
6a9187c1ba | |||
5cdd9d2027 | |||
70826d326b | |||
0336d640ec | |||
80eefa92ce | |||
f1a861d1c1 | |||
1eda7c8565 | |||
6ce2231e70 | |||
6477ad2cfc | |||
225ec6f5ed | |||
91172654e4 | |||
ebadd7fd3f | |||
2d3248504b | |||
78b12c7b80 | |||
42a6dc44f4 | |||
832eabfeab | |||
2fe22acc0d | |||
554bf821d8 | |||
dcf2c32fd8 | |||
215d7ec1b9 | |||
33bd8fb9d9 | |||
ab9343a788 | |||
263032b680 | |||
cc9bc7703a | |||
90f738608f | |||
d0cf26b342 | |||
51f6708fc6 | |||
c6fcef6e98 | |||
0c3a24318a | |||
868657477c | |||
c77f3e0985 | |||
130a222821 | |||
e0facd97c7 | |||
01eba895d1 | |||
74196a3781 | |||
fdfc23d878 | |||
c4bdf39abc | |||
7e8a0e5c5a | |||
ad14feae94 | |||
2e7458a246 | |||
fd7fe5d96e | |||
d8872ca278 | |||
f24c7c81c0 | |||
fb7a0b5816 | |||
8bb76da6b5 | |||
20816fd77a | |||
aa7e206329 | |||
a1b9bbb726 | |||
0a64d121d9 | |||
823a0c86d3 | |||
5743d87a43 | |||
871d2bad17 | |||
547da89c7d | |||
4ecd036d0a | |||
b2fb92cf0f | |||
3d73ce63ca | |||
eb267e8a57 | |||
40bfa3ef04 | |||
9b3458fba0 | |||
86eb487a38 | |||
091d6f6a3e | |||
885f8e1856 | |||
c88902e640 | |||
0e45f10d99 | |||
41d7515f85 | |||
3be7eafa6b | |||
9dd1a8fb2e | |||
ecae4c03f9 | |||
ff67fb337e | |||
100a131913 | |||
7fc3e7dd8b | |||
bce65e2140 | |||
c3b797b414 | |||
0343c5e692 | |||
1621e5d6fb | |||
6311474fa7 | |||
e0e373c357 | |||
9fff26b900 | |||
d439bc8c2f | |||
fe52f7c392 | |||
82207598f0 | |||
a2bef1fa52 | |||
3762cdc8c0 | |||
b224760aba | |||
cbdd14fa82 | |||
96d6e0f8a2 | |||
a44ad63440 | |||
c3592e8c4a |
@ -1,3 +0,0 @@
|
||||
.[]
|
||||
.head
|
||||
.label
|
@ -1,2 +0,0 @@
|
||||
.links
|
||||
.next
|
@ -1,39 +0,0 @@
|
||||
(
|
||||
.data |
|
||||
map(
|
||||
select(
|
||||
.relationships
|
||||
.currently_entitled_tiers
|
||||
.data[]
|
||||
)
|
||||
) |
|
||||
map(
|
||||
.relationships
|
||||
.user
|
||||
.data
|
||||
.id
|
||||
)
|
||||
) as $data |
|
||||
.included |
|
||||
map(
|
||||
select(
|
||||
.id as $id |
|
||||
$data |
|
||||
contains(
|
||||
[
|
||||
$id
|
||||
]
|
||||
)
|
||||
)
|
||||
) |
|
||||
map(
|
||||
.attributes |
|
||||
[
|
||||
.full_name,
|
||||
.thumb_url,
|
||||
.url
|
||||
] |
|
||||
@tsv
|
||||
) |
|
||||
.[] |
|
||||
@text
|
@ -1,87 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# __MISSKEY_BEARER_TOKEN=
|
||||
# __MISSKEY_CAMPAIGN_ID=
|
||||
# __MISSKEY_GITHUB_TOKEN=
|
||||
# __MISSKEY_HEAD=syuilo:patch-autogen
|
||||
# __MISSKEY_REPO=syuilo/misskey
|
||||
# __MISSKEY_BRANCH=develop
|
||||
test "$(curl -LSs -w '\n' -- "https://api.github.com/repos/$REPO/pulls?access_token=$__MISSKEY_GITHUB_TOKEN" | jq -r -f check_pr.jq | grep $__MISSKEY_HEAD)" && exit 1
|
||||
cd "$(dirname $0)/.." && \
|
||||
touch null.cache && \
|
||||
rm *.cache && \
|
||||
git checkout $__MISSKEY_BRANCH && \
|
||||
git pull origin $__MISSKEY_BRANCH && \
|
||||
git pull upstream $__MISSKEY_BRANCH && \
|
||||
git stash && \
|
||||
git rebase -f upstream/$__MISSKEY_BRANCH && \
|
||||
git branch patch-autogen && \
|
||||
git checkout patch-autogen && \
|
||||
git reset --hard HEAD || \
|
||||
exit 1
|
||||
touch patreon.md.cache && \
|
||||
rm patreon.md.cache && \
|
||||
echo '<!-- PATREON_START -->' > patreon.md.cache && \
|
||||
url="https://www.patreon.com/api/oauth2/v2/campaigns/$__MISSKEY_CAMPAIGN_ID/members?include=currently_entitled_tiers,user&fields%5Btier%5D=title&fields%5Buser%5D=full_name,thumb_url,url,hide_pledges"
|
||||
while :
|
||||
do
|
||||
touch patreon.raw.cache && \
|
||||
rm patreon.raw.cache && \
|
||||
curl -LSs -w '\n' -H "Authorization: Bearer $__MISSKEY_BEARER_TOKEN" -- $url > patreon.raw.cache && \
|
||||
touch patreon.cache && \
|
||||
rm patreon.cache && \
|
||||
cat patreon.raw.cache | \
|
||||
jq -r -f patreon.jq >> patreon.cache && \
|
||||
echo '<table><tr>' >> patreon.md.cache && \
|
||||
cat patreon.cache | \
|
||||
awk -F'\t' '{print $2,$1}' | \
|
||||
sed -e 's/ /\\" alt=\\"/' | \
|
||||
xargs -I% echo '<td><img src="%" width="100"></td>' >> patreon.md.cache && \
|
||||
echo '</tr><tr>' >> patreon.md.cache && \
|
||||
cat patreon.cache | \
|
||||
awk -F'\t' '{print $3,$1}' | \
|
||||
sed -e 's/ /\\">/' | \
|
||||
xargs -I% echo '<td><a href="%</a></td>' >> patreon.md.cache && \
|
||||
echo '</tr></table>' >> patreon.md.cache || \
|
||||
exit 1
|
||||
new_url="$(cat patreon.raw.cache | jq -r -f next_url.jq)"
|
||||
test "$new_url" = 'null' && \
|
||||
break || \
|
||||
URL="$url"
|
||||
done
|
||||
ignore= && \
|
||||
echo -e "\n**Last updated:** $(date -uR | sed 's/\+0000/UTC/')\n<!-- PATREON_END -->" >> patreon.md.cache && \
|
||||
touch README.md && \
|
||||
touch .autogen/README.md && \
|
||||
rm .autogen/README.md && \
|
||||
mv README.md .autogen/README.md && \
|
||||
cat .autogen/README.md | while IFS= read line;
|
||||
do
|
||||
if [[ -z "$ignore" ]]
|
||||
then
|
||||
if [[ "$line" = '<!-- PATREON_START -->' ]]
|
||||
then
|
||||
ignore='PATREON_INSIDE'
|
||||
else
|
||||
echo "$line" >> README.md
|
||||
fi
|
||||
else
|
||||
if [[ "$LINE" = '<!-- PATREON_END -->' ]]
|
||||
then
|
||||
ignore=
|
||||
cat patreon.md.cache >> README.md
|
||||
fi
|
||||
fi
|
||||
done
|
||||
cat patreon.md.cache
|
||||
touch null.cache && \
|
||||
rm *.cache && \
|
||||
diff .autogen/README.md README.md > diff.cache
|
||||
cat diff.cache && \
|
||||
test 4 -lt $(cat diff.cache | wc -l) && \
|
||||
git add README.md && \
|
||||
git commit -m 'Update README.md [AUTOGEN]' && \
|
||||
git push -f origin patch-autogen && \
|
||||
curl -LSs -w '\n' -X POST -d '{"title":"[AUTOMATED] Update README.md","body":"*This pull request was created by a tool.*","head":"'$__MISSKEY_HEAD'","base":"'$__MISSKEY_BRANCH'"}' -- "https://api.github.com/repos/$__MISSKEY_REPO/pulls?access_token=$__MISSKEY_GITHUB_TOKEN"
|
||||
git stash
|
||||
git checkout $__MISSKEY_BRANCH
|
||||
git branch -D patch-autogen
|
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)
|
||||
#signToActivityPubGet: true
|
||||
|
||||
#allowedPrivateNetworks: [
|
||||
# '127.0.0.1/32'
|
||||
#]
|
||||
|
||||
# Upload or download file size limits (bytes)
|
||||
#maxFileSize: 262144000
|
||||
|
@ -1,8 +1,8 @@
|
||||
.autogen
|
||||
.git
|
||||
.github
|
||||
.travis
|
||||
.vscode
|
||||
.config
|
||||
Dockerfile
|
||||
build/
|
||||
built/
|
||||
@ -12,3 +12,4 @@ elasticsearch/
|
||||
node_modules/
|
||||
redis/
|
||||
files/
|
||||
misskey-assets/
|
||||
|
31
.eslintrc
31
.eslintrc
@ -1,31 +0,0 @@
|
||||
{
|
||||
"parserOptions": {
|
||||
"parser": "@typescript-eslint/parser"
|
||||
},
|
||||
"extends": [
|
||||
"eslint:recommended",
|
||||
"plugin:vue/recommended"
|
||||
],
|
||||
"rules": {
|
||||
"vue/require-v-for-key": 0,
|
||||
"vue/max-attributes-per-line": 0,
|
||||
"vue/html-indent": 0,
|
||||
"vue/html-self-closing": 0,
|
||||
"vue/no-unused-vars": 0,
|
||||
"vue/attributes-order": 0,
|
||||
"vue/require-prop-types": 0,
|
||||
"vue/require-default-prop": 0,
|
||||
"vue/html-closing-bracket-spacing": 0,
|
||||
"vue/singleline-html-element-content-newline": 0,
|
||||
"vue/no-v-html": 0,
|
||||
"no-console": 0,
|
||||
"no-unused-vars": 0,
|
||||
"no-empty": 0
|
||||
},
|
||||
"globals": {
|
||||
"ENV": true,
|
||||
"VERSION": true,
|
||||
"API": true,
|
||||
"LANGS": true
|
||||
}
|
||||
}
|
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
|
5
.github/ISSUE_TEMPLATE/01_bug-report.md
vendored
5
.github/ISSUE_TEMPLATE/01_bug-report.md
vendored
@ -7,6 +7,11 @@ assignees: ''
|
||||
|
||||
---
|
||||
|
||||
<!--
|
||||
Thanks for reporting!
|
||||
First, in order to avoid duplicate Issues, please search to see if the problem you found has already been reported.
|
||||
-->
|
||||
|
||||
## 💡 Summary
|
||||
|
||||
<!-- Tell us what the bug is -->
|
||||
|
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
|
||||
-->
|
||||
|
||||
<!--
|
||||
-
|
||||
- * Please describe your changes here *
|
||||
-
|
||||
- If you are going to resolve some issue, please add this context.
|
||||
- Resolve #ISSUE_NUMBER
|
||||
-
|
||||
- If you are going to fix some bug issue, please add this context.
|
||||
- Fix #ISSUE_NUMBER
|
||||
-
|
||||
-->
|
||||
# What
|
||||
<!-- このPRで何をしたのか? どう変わるのか? -->
|
||||
<!-- What did you do with this PR? How will it change things? -->
|
||||
|
||||
# Why
|
||||
<!-- なぜそうするのか? どういう意図なのか? 何が困っているのか? -->
|
||||
<!-- Why do you do it? What are your intentions? What is the problem? -->
|
||||
|
||||
# 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
|
38
.github/workflows/docker.yml
vendored
38
.github/workflows/docker.yml
vendored
@ -1,18 +1,32 @@
|
||||
name: Docker build
|
||||
name: Publish Docker image
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- develop
|
||||
pull_request:
|
||||
release:
|
||||
types: [published]
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
push_to_registry:
|
||||
name: Push Docker image to Docker Hub
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Pull previous build result (for cache)
|
||||
run: docker pull misskey/misskey:latest
|
||||
- name: Build docker container
|
||||
run: docker build --cache-from misskey/misskey:latest -t misskey/misskey .
|
||||
- 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 }}
|
||||
|
25
.github/workflows/lint.yml
vendored
Normal file
25
.github/workflows/lint.yml
vendored
Normal file
@ -0,0 +1,25 @@
|
||||
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
|
||||
- uses: actions/cache@v2
|
||||
with:
|
||||
path: '**/node_modules'
|
||||
key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }}
|
||||
- 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: [12.x, 14.x, 15.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
|
91
.github/workflows/test.yml
vendored
Normal file
91
.github/workflows/test.yml
vendored
Normal file
@ -0,0 +1,91 @@
|
||||
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 }}
|
||||
- uses: actions/cache@v2
|
||||
with:
|
||||
path: '**/node_modules'
|
||||
key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }}
|
||||
- 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
|
||||
|
||||
# Node.js
|
||||
/node_modules
|
||||
node_modules
|
||||
report.*.json
|
||||
|
||||
# Cypress
|
||||
cypress/screenshots
|
||||
cypress/videos
|
||||
|
||||
# config
|
||||
/.config/*
|
||||
!/.config/example.yml
|
||||
@ -16,7 +20,7 @@ report.*.json
|
||||
|
||||
# misskey
|
||||
/build
|
||||
/built
|
||||
built
|
||||
/data
|
||||
/.cache-loader
|
||||
/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,7 +0,0 @@
|
||||
{
|
||||
"extension": ["ts","js","cjs","mjs"],
|
||||
"require": "ts-node/register",
|
||||
"slow": 1000,
|
||||
"timeout": 30000,
|
||||
"exit": true
|
||||
}
|
@ -1 +1 @@
|
||||
v14.15.1
|
||||
v16.6.2
|
||||
|
7
.vscode/extensions.json
vendored
7
.vscode/extensions.json
vendored
@ -1,12 +1,9 @@
|
||||
{
|
||||
"recommendations": [
|
||||
"ducksoupdev.vue2",
|
||||
"editorconfig.editorconfig",
|
||||
"eg2.vscode-npm-script",
|
||||
"hollowtree.vue-snippets",
|
||||
"ms-vscode.typescript-javascript-grammar",
|
||||
"ms-vscode.vscode-typescript-tslint-plugin",
|
||||
"octref.vetur",
|
||||
"dbaeumer.vscode-eslint",
|
||||
"johnsoncodehk.volar",
|
||||
"sysoev.language-stylus"
|
||||
]
|
||||
}
|
||||
|
362
CHANGELOG.md
Normal file
362
CHANGELOG.md
Normal file
@ -0,0 +1,362 @@
|
||||
<!--
|
||||
## 12.x.x (unreleased)
|
||||
|
||||
### Improvements
|
||||
|
||||
### Bugfixes
|
||||
|
||||
-->
|
||||
|
||||
## 12.101.1 (2021/12/29)
|
||||
|
||||
### Bugfixes
|
||||
- SVG絵文字が表示できないのを修正
|
||||
- エクスポートした絵文字の拡張子がfalseになることがあるのを修正
|
||||
|
||||
## 12.101.0 (2021/12/29)
|
||||
|
||||
### Improvements
|
||||
- クライアント: ノートプレビューの精度を改善
|
||||
- クライアント: MFM sparkleエフェクトの改善
|
||||
- クライアント: デザインの調整
|
||||
- セキュリティの向上
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: 一部のコンポーネントが裏に隠れるのを修正
|
||||
- fix html blockquote conversion
|
||||
|
||||
## 12.100.2 (2021/12/18)
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: Deckカラムの増減がページをリロードするまで正しく反映されない問題を修正
|
||||
- クライアント: 一部のコンポーネントが裏に隠れるのを修正
|
||||
- クライアント: カスタム絵文字一覧ページの負荷が高いのを修正
|
||||
|
||||
## 12.100.1 (2021/12/17)
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: デザインの調整
|
||||
|
||||
## 12.100.0 (2021/12/17)
|
||||
|
||||
### Improvements
|
||||
- クライアント: モバイルでの各種メニュー、リアクションピッカーの表示を改善
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: 一部のコンポーネントが裏に隠れるのを修正
|
||||
|
||||
## 12.99.3 (2021/12/14)
|
||||
### Bugfixes
|
||||
- クライアント: オートコンプリートがダイアログの裏に隠れる問題を修正
|
||||
|
||||
## 12.99.2 (2021/12/14)
|
||||
|
||||
## 12.99.1 (2021/12/14)
|
||||
|
||||
## 12.99.0 (2021/12/14)
|
||||
|
||||
### Improvements
|
||||
- Added a user-level instance mute in user settings
|
||||
- フォローエクスポートでミュートしているユーザーを含めないオプションを追加
|
||||
- フォローエクスポートで使われていないアカウントを含めないオプションを追加
|
||||
- カスタム絵文字エクスポート機能
|
||||
- チャートのパフォーマンスの改善
|
||||
- グループから抜けられるように
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: タッチ機能付きディスプレイを使っていてマウス操作をしている場合に一部機能が動作しない問題を修正
|
||||
- クライアント: クリップの設定を編集できない問題を修正
|
||||
- クライアント: メニューなどがウィンドウの裏に隠れる問題を修正
|
||||
|
||||
## 12.98.0 (2021/12/03)
|
||||
|
||||
### Improvements
|
||||
- API: /antennas/notes API で日付による絞り込みができるように
|
||||
- クライアント: アンケートに投票する際に確認ダイアログを出すように
|
||||
- クライアント: Renoteなノート詳細ページから元のノートページに遷移できるように
|
||||
- クライアント: 画像ポップアップでクリックで閉じられるように
|
||||
- クライアント: デザインの調整
|
||||
- フォロワーを解除できる機能
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: LTLやGTLが無効になっている場合でもUI上にタブが表示される問題を修正
|
||||
- クライアント: ログインにおいてパスワードが誤っている際のエラーメッセージが正しく表示されない問題を修正
|
||||
- クライアント: リアクションツールチップ、Renoteツールチップのユーザーの並び順を修正
|
||||
- クライアント: サウンドのマスターボリュームが正しく保存されない問題を修正
|
||||
- クライアント: 一部環境において通知が表示されると操作不能になる問題を修正
|
||||
- クライアント: モバイルでタップしたときにツールチップが表示される問題を修正
|
||||
- クライアント: リモートインスタンスのノートに返信するとき、対象のノートにそのリモートインスタンス内のユーザーへのメンションが含まれていると、返信テキスト内にローカルユーザーへのメンションとして引き継がれてしまう場合がある問題を修正
|
||||
- クライアント: 画像ビューワーで全体表示した時に上側の一部しか表示されない画像がある問題を修正
|
||||
- API: ユーザーを取得時に条件によっては内部エラーになる問題を修正
|
||||
|
||||
### Changes
|
||||
- クライアント: ノートにモデレーターバッジを表示するのを廃止
|
||||
|
||||
## 12.97.0 (2021/11/19)
|
||||
|
||||
### Improvements
|
||||
- クライアント: 返信先やRenoteに対しても自動折りたたみされるように
|
||||
- クライアント: 長いスレッドの表示を改善
|
||||
- クライアント: 翻訳にもMFMを適用し、元の文章の改行などを保持するように
|
||||
- クライアント: アカウント削除に確認ダイアログを出すように
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: ユーザー検索の「全て」が動作しない問題を修正
|
||||
- クライアント: リアクション一覧、Renote一覧ツールチップのスタイルを修正
|
||||
|
||||
## 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メール通知を修正
|
248
CONTRIBUTING.md
248
CONTRIBUTING.md
@ -1,22 +1,43 @@
|
||||
# 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...
|
||||
- 任意のIssueについて、せっかく実装してくださっても、実装方法や設計の認識が揃ってないとマージできない/しないことになりかねないので、初めにそのIssue上で着手することを宣言し、必要に応じて他メンバーと実装方法や設計のすり合わせを行ってください。宣言することは作業が他の人と被るのを防止する効果もあります。
|
||||
- 設計に迷った時はプロジェクトリーダーの判断を仰いでください。
|
||||
- 時間や優先度の都合上、提出してくださったPRが長期間放置されることもありますがご理解ください。
|
||||
- 温度感高めで見てほしいものは責付いてください。
|
||||
**ℹ️ Important:** This project uses Japanese as its major language, **but you do not need to translate and write the Issues/PRs in Japanese.**
|
||||
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.
|
||||
It will also allow the reader to use the translation tool of their preference if necessary.
|
||||
|
||||
## Issues
|
||||
Feature suggestions and bug reports are filed in https://github.com/syuilo/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.
|
||||
* If you have multiple independent issues, please submit them separately.
|
||||
## Before implementation
|
||||
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
|
||||
* **master** branch is tracking the latest release and used for production purposes.
|
||||
* **develop** branch is where we work for the next release.
|
||||
* **l10n_develop** branch is reserved for localization management.
|
||||
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.
|
||||
|
||||
## Well-known branches
|
||||
- **`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)
|
||||
Misskey uses [Crowdin](https://crowdin.com/project/misskey) for localization management.
|
||||
@ -28,21 +49,46 @@ If your language is not listed in Crowdin, please open an issue.
|
||||
|
||||

|
||||
|
||||
## Internationalization (i18n)
|
||||
Misskey uses the Vue.js plugin [Vue I18n](https://github.com/kazupon/vue-i18n).
|
||||
Documentation of Vue I18n is available at http://kazupon.github.io/vue-i18n/introduction.html .
|
||||
## Development
|
||||
During development, it is useful to use the `npm run dev` command.
|
||||
This command monitors the server-side and client-side source files and automatically builds them if they are modified.
|
||||
In addition, it will also automatically start the Misskey server process.
|
||||
|
||||
## Documentation
|
||||
* Documents for contributors are located in [`/docs`](/docs).
|
||||
* Documents for instance admins are located in [`/docs`](/docs).
|
||||
* Documents for end users are located in [`/src/docs`](/src/docs).
|
||||
## Testing
|
||||
- Test codes are located in [`/test`](/test).
|
||||
|
||||
## Test
|
||||
* Test codes are located in [`/test`](/test).
|
||||
### Run 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
|
||||
Misskey uses CircleCI for executing automated tests.
|
||||
Configuration files are located in [`/.circleci`](/.circleci).
|
||||
Misskey uses GitHub Actions for executing automated tests.
|
||||
Configuration files are located in [`/.github/workflows`](/.github/workflows).
|
||||
|
||||
## Vue
|
||||
Misskey uses Vue(v3) as its front-end framework.
|
||||
**When creating a new component, please use the Composition API (and [setup sugar](https://v3.vuejs.org/api/sfc-script-setup.html)) instead of the Options API.**
|
||||
Some of the existing components are implemented in the Options API, but it is an old implementation. Refactors that migrate those components to the Composition API are also welcome.
|
||||
|
||||
## Adding MisskeyRoom items
|
||||
* Use English for material, object and texture names.
|
||||
@ -50,121 +96,16 @@ Configuration files are located in [`/.circleci`](/.circleci).
|
||||
* Your PR should include all source files (e.g. `.png`, `.blend`) of your models (for later editing).
|
||||
* Your PR must include the glTF binary files (`.glb`) of your models.
|
||||
* Add a locale key `room.furnitures.YOUR_ITEM` at [`/locales/ja-JP.yml`](/locales/ja-JP.yml).
|
||||
* Add a furniture definition at [`/src/client/app/common/scripts/room/furnitures.json5`](/src/client/app/common/scripts/room/furnitures.json5).
|
||||
* Add a furniture definition at [`src/client/scripts/room/furnitures.json5`](src/client/scripts/room/furnitures.json5).
|
||||
|
||||
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).
|
||||
|
||||
## FAQ
|
||||
## Notes
|
||||
### How to resolve conflictions occurred at yarn.lock?
|
||||
|
||||
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
|
||||
SQLをクエリビルダで組み立てる際、使用するプレースホルダは重複してはならない
|
||||
例えば
|
||||
@ -236,47 +177,30 @@ const users = userIds.length > 0 ? await Users.find({
|
||||
SQLでは配列のインデックスは**1始まり**。
|
||||
`[a, b, c]`の `a`にアクセスしたいなら`[0]`ではなく`[1]`と書く
|
||||
|
||||
### null IN
|
||||
nullが含まれる可能性のあるカラムにINするときは、そのままだとおかしくなるのでORなどでnullのハンドリングをしよう。
|
||||
|
||||
### `undefined`にご用心
|
||||
MongoDBの時とは違い、findOneでレコードを取得する時に対象レコードが存在しない場合 **`undefined`** が返ってくるので注意。
|
||||
MongoDBは`null`で返してきてたので、その感覚で`if (x === null)`とか書くとバグる。代わりに`if (x == null)`と書いてください
|
||||
|
||||
### 簡素な`undefined`チェック
|
||||
データベースからレコードを取得するときに、プログラムの流れ的に(ほぼ)絶対`undefined`にはならない場合でも、`undefined`チェックしないとTypeScriptに怒られます。
|
||||
でもいちいち複数行を費やして、発生するはずのない`undefined`をチェックするのも面倒なので、`ensure`というユーティリティ関数を用意しています。
|
||||
例えば、
|
||||
``` ts
|
||||
const user = await Users.findOne(userId);
|
||||
// この時点で user の型は User | undefined
|
||||
if (user == null) {
|
||||
throw 'missing user';
|
||||
}
|
||||
// この時点で user の型は User
|
||||
```
|
||||
という処理を`ensure`を使うと
|
||||
``` ts
|
||||
const user = await Users.findOne(userId).then(ensure);
|
||||
// この時点で user の型は User
|
||||
```
|
||||
という風に書けます。
|
||||
もちろん`ensure`内部でエラーを握りつぶすようなことはしておらず、万が一`undefined`だった場合はPromiseがRejectされ後続の処理は実行されません。
|
||||
``` ts
|
||||
const user = await Users.findOne(userId).then(ensure);
|
||||
// 万が一 Users.findOne の結果が undefined だったら、ensure でエラーが発生するので
|
||||
// この行に到達することは無い
|
||||
// なので、.then(ensure) は
|
||||
// if (user == null) {
|
||||
// throw 'missing user';
|
||||
// }
|
||||
// の糖衣構文のような扱いです
|
||||
```
|
||||
|
||||
### Migration作成方法
|
||||
```
|
||||
npx ts-node ./node_modules/typeorm/cli.js migration:generate -n 変更の名前
|
||||
npx ts-node ./node_modules/typeorm/cli.js migration:generate -n 変更の名前 -o
|
||||
```
|
||||
|
||||
作成されたスクリプトは不必要な変更を含むため除去してください。
|
||||
|
||||
### コネクションには`markRaw`せよ
|
||||
**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 という単語は使わない
|
||||
広告ブロッカーで誤ってブロックされる
|
||||
|
4
COPYING
4
COPYING
@ -6,10 +6,6 @@ And is distributed under The GNU Affero General Public License Version 3, you sh
|
||||
|
||||
Misskey includes several third-party Open-Source softwares.
|
||||
|
||||
Unicode emoji regular expressions by Twitter, Inc.
|
||||
License: MIT
|
||||
https://github.com/twitter/twemoji-parser/blob/master/LICENSE.md
|
||||
|
||||
Emoji keywords for Unicode 11 and below by Mu-An Chiou
|
||||
License: MIT
|
||||
https://github.com/muan/emojilib/blob/master/LICENSE
|
||||
|
34
Dockerfile
34
Dockerfile
@ -1,41 +1,35 @@
|
||||
FROM node:14.15.1-alpine AS base
|
||||
FROM node:16.6.2-alpine3.13 AS base
|
||||
|
||||
ENV NODE_ENV=production
|
||||
|
||||
WORKDIR /misskey
|
||||
|
||||
ENV BUILD_DEPS autoconf automake file g++ gcc libc-dev libtool make nasm pkgconfig python3 zlib-dev git
|
||||
|
||||
FROM base AS builder
|
||||
|
||||
RUN apk add --no-cache \
|
||||
autoconf \
|
||||
automake \
|
||||
file \
|
||||
git \
|
||||
g++ \
|
||||
gcc \
|
||||
libc-dev \
|
||||
libtool \
|
||||
make \
|
||||
nasm \
|
||||
pkgconfig \
|
||||
python \
|
||||
zlib-dev
|
||||
|
||||
COPY package.json yarn.lock ./
|
||||
RUN yarn install
|
||||
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
|
||||
|
||||
RUN apk add --no-cache \
|
||||
ffmpeg \
|
||||
tini
|
||||
RUN npm i -g web-push
|
||||
|
||||
ENTRYPOINT ["/sbin/tini", "--"]
|
||||
|
||||
COPY --from=builder /misskey/node_modules ./node_modules
|
||||
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 . ./
|
||||
|
||||
CMD ["npm", "run", "migrateandstart"]
|
||||
|
||||
|
138
README.md
138
README.md
@ -1,115 +1,57 @@
|
||||
<a href="https://xn--931a.moe/"><img src="https://github.com/syuilo/misskey/blob/develop/assets/ai-orig.png?raw=true" align="right" height="320px"/></a>
|
||||
[](https://join.misskey.page/)
|
||||
|
||||
[](https://join.misskey.page/)
|
||||
================================================================
|
||||
<div align="center">
|
||||
|
||||
[](https://circleci.com/gh/syuilo/misskey)
|
||||
[](https://david-dm.org/syuilo/misskey)
|
||||
[](http://makeapullrequest.com)
|
||||
[](https://github.com/humanetech-community/awesome-humane-tech)
|
||||
**🌎 A forever evolving, interplanetary microblogging platform. 🚀**
|
||||
|
||||
**A forever evolving, interplanetary microblogging platform.**
|
||||
**Misskey** is a distributed microblogging platform with advanced features such as Reactions and a highly customizable UI.
|
||||
|
||||
<p align="justify">
|
||||
<a href="https://join.misskey.page/">Misskey</a> is a decentralized microblogging platform born on Earth.
|
||||
Since it exists within the Fediverse (a universe where various social media platforms are organized),
|
||||
it is mutually linked with other social media platforms.
|
||||
Why don't you take a short break from the hustle and bustle of the city, and dive into a new Internet? <a href="https://join.misskey.page/">Find an instance!</a>
|
||||
</p>
|
||||
[Learn more](https://misskey-hub.net/)
|
||||
|
||||
---
|
||||
|
||||
[✨ Find an instance](https://misskey-hub.net/instances.html)
|
||||
•
|
||||
[📦 Create your own instance](https://misskey-hub.net/docs/install.html)
|
||||
•
|
||||
[🛠️ Contribute](./CONTRIBUTING.md)
|
||||
•
|
||||
[🚀 Join the community](https://discord.gg/Wp8gVStHW3)
|
||||
|
||||
---
|
||||
|
||||
<a href="https://www.patreon.com/syuilo"><img src="https://c5.patreon.com/external/logo/become_a_patron_button@2x.png" alt="Become a Patron!" width="160" /></a>
|
||||
|
||||

|
||||
</div>
|
||||
|
||||
:sparkles: Features
|
||||
----------------------------------------------------------------
|
||||
<div>
|
||||
|
||||
<img src="/assets/about/post.png" align="left" height="200px"/>
|
||||
<a href="https://xn--931a.moe/"><img src="https://github.com/misskey-dev/misskey/blob/develop/assets/ai.png?raw=true" align="right" height="320px"/></a>
|
||||
|
||||
<h3 align="left">Posting</h3>
|
||||
<p align="justify">
|
||||
Post your ideas, discussion topics, fun moments, or anything else you want to share! Misskey supports text, emoji, pictures, videos, and polls!
|
||||
</p>
|
||||
## ✨ Features
|
||||
- **ActivityPub support**\
|
||||
It is possible to interact with other software.
|
||||
- **Reactions**\
|
||||
You can add "reactions" to each post, making it easy for you to express your feelings.
|
||||
- **Drive**\
|
||||
An interface to manage uploaded files such as images, videos, sounds, etc.
|
||||
You can also organize your favorite content into folders, making it easy to share again.
|
||||
- **Rich Web UI**\
|
||||
Misskey has a rich WebUI by default.
|
||||
It is highly customizable by flexibly changing the layout and installing various widgets and themes.
|
||||
Furthermore, plug-ins can be created using AiScript, a original programming language.
|
||||
- and more...
|
||||
|
||||
---
|
||||
</div>
|
||||
|
||||
<img src="/assets/about/reaction.png" align="right" height="200px"/>
|
||||
<div style="clear: both;"></div>
|
||||
|
||||
<h3 align="right">Reactions</h3>
|
||||
<p align="justify">
|
||||
Reactions are the simplest way to respond to others' posts. Simply pick a reaction emote from the list! Reactions on Misskey are much more expressive than other social media services which only allow “liking”.
|
||||
</p>
|
||||
## 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>
|
||||
|
||||
---
|
||||
|
||||
<img src="/assets/about/ui.png" align="left" height="200px"/>
|
||||
|
||||
<h3 align="left">Interface</h3>
|
||||
<p align="justify">
|
||||
Customize the UI to your own tastes! No UI will work for everyone, so Misskey is completely customizable. Make Misskey *yours* by editing the style, adjusting timeline layouts, and placing widgets.
|
||||
</p>
|
||||
|
||||
---
|
||||
|
||||
<img src="/assets/about/drive.png" align="right" width="300px"/>
|
||||
|
||||
<h3 align="right">Misskey Drive</h3>
|
||||
<p align="justify">
|
||||
Organize and store your files! Want to post a picture you have already uploaded? Wish you could organize your files into folders? Misskey Drive is a solution!
|
||||
</p>
|
||||
|
||||
---
|
||||
|
||||
...and more! Experience Misskey with your own eyes at [misskey.io](https://misskey.io/) or join one of the [other instances](https://joinmisskey.github.io/) that are available.
|
||||
|
||||
To recive updates of this repo, follow [@repo@misskey.io](https://misskey.io/@repo) on fediverse.
|
||||
|
||||
Screen shots
|
||||
----------------------------------------------------------------
|
||||
### Profile page
|
||||
<img src="/assets/ss/user.jpg" width="500px"/>
|
||||
|
||||
### Explore users
|
||||
<img src="/assets/ss/explore.jpg" width="500px"/>
|
||||
|
||||
:new: What's new
|
||||
----------------------------------------------------------------
|
||||
Please see the [Release notes](./CHANGELOG.md).
|
||||
|
||||
:package: Create your own instance
|
||||
----------------------------------------------------------------
|
||||
Please see the [Setup and Installation Guide](./docs/setup.en.md).
|
||||
|
||||
:wrench: Contribution
|
||||
----------------------------------------------------------------
|
||||
Please see the [Contribution Guide](./CONTRIBUTING.md).
|
||||
|
||||
### Collaborators
|
||||
<table>
|
||||
<tr>
|
||||
<td><img src="https://avatars3.githubusercontent.com/u/4439005?s=460&v=4" alt="syuilo" width="100"></td>
|
||||
<td><img src="https://avatars0.githubusercontent.com/u/10798641?s=460&v=4" alt="AyaMorisawa" width="100"></td>
|
||||
<td><img src="https://avatars1.githubusercontent.com/u/30769358?s=460&v=4" alt="mei23" width="100"></td>
|
||||
<td><img src="https://avatars2.githubusercontent.com/u/20679825?s=460&v=4" alt="acid-chicken" width="100"></td>
|
||||
<td><img src="https://avatars2.githubusercontent.com/u/6533808?s=460&v=4" alt="rinsuki" width="100"></td>
|
||||
<td><img src="https://avatars0.githubusercontent.com/u/7973572?s=460&v=4" alt="tamaina" width="100"></td>
|
||||
<td><img src="https://avatars1.githubusercontent.com/u/7106976?s=460&v=4" alt="Xeltica" width="100"></td>
|
||||
<td><img src="https://avatars1.githubusercontent.com/u/17376330?s=460&v=4" alt="u1-liquid" width="100"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><a href="https://github.com/syuilo">@syuilo</a></td>
|
||||
<td align="center"><a href="https://github.com/AyaMorisawa">@AyaMorisawa</a></td>
|
||||
<td align="center"><a href="https://github.com/mei23">@mei23</a></td>
|
||||
<td align="center"><a href="https://github.com/acid-chicken">@acid-chicken</a></td>
|
||||
<td align="center"><a href="https://github.com/rinsuki">@rinsuki</a></td>
|
||||
<td align="center"><a href="https://github.com/tamaina">@tamaina</a></td>
|
||||
<td align="center"><a href="https://github.com/Xeltica">@Xeltica</a></td>
|
||||
<td align="center"><a href="https://github.com/u1-liquid">@u1-liquid</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
:heart: Backers
|
||||
----------------------------------------------------------------
|
||||
## Backers
|
||||
<!-- PATREON_START -->
|
||||
<table><tr>
|
||||
<td><img src="https://c8.patreon.com/2/200/20832595" alt="Roujo " width="100"></td>
|
||||
|
9
SECURITY.md
Normal file
9
SECURITY.md
Normal file
@ -0,0 +1,9 @@
|
||||
# Reporting Security Issues
|
||||
|
||||
If you discover a security issue in Misskey, please report it by sending an
|
||||
email to [syuilotan@yahoo.co.jp](mailto:syuilotan@yahoo.co.jp).
|
||||
|
||||
This will allow us to assess the risk, and make a fix available before we add a
|
||||
bug report to the GitHub repository.
|
||||
|
||||
Thanks for helping make Misskey safe for everyone.
|
Binary file not shown.
Before Width: | Height: | Size: 9.5 KiB |
BIN
assets/banner.afdesign
Normal file
BIN
assets/banner.afdesign
Normal file
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 7.2 KiB |
Binary file not shown.
Before Width: | Height: | Size: 20 KiB |
@ -2,6 +2,3 @@ files:
|
||||
- source: /locales/ja-JP.yml
|
||||
translation: /locales/%locale%.yml
|
||||
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) => { ... })
|
26
cypress/support/index.js
Normal file
26
cypress/support/index.js
Normal file
@ -0,0 +1,26 @@
|
||||
// ***********************************************************
|
||||
// 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')
|
||||
|
||||
Cypress.on('uncaught:exception', (err, runnable) => {
|
||||
if (err.message.includes('ResizeObserver loop limit exceeded')) {
|
||||
return false
|
||||
}
|
||||
});
|
@ -15,6 +15,7 @@ services:
|
||||
- external_network
|
||||
volumes:
|
||||
- ./files:/misskey/files
|
||||
- ./.config:/misskey/.config:ro
|
||||
|
||||
redis:
|
||||
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/syuilo/misskey.git`
|
||||
|
||||
2. Move to misskey directory.
|
||||
|
||||
`cd misskey`
|
||||
|
||||
3. Checkout to the [latest release](https://github.com/syuilo/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/syuilo/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/syuilo/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/syuilo/misskey.git`
|
||||
|
||||
2. misskeyディレクトリに移動
|
||||
|
||||
`cd misskey`
|
||||
|
||||
3. [最新のリリース](https://github.com/syuilo/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/syuilo/misskey.git`
|
||||
|
||||
2. 进入 misskey 文件夹。
|
||||
|
||||
`cd misskey`
|
||||
|
||||
3. 检查 [最新发布版](https://github.com/syuilo/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,69 +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_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;
|
||||
proxy_http_version 1.1;
|
||||
proxy_redirect off;
|
||||
|
||||
# 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/syuilo/misskey.git`
|
||||
|
||||
3. Navigate to misskey directory
|
||||
|
||||
`cd misskey`
|
||||
|
||||
4. Checkout to the [latest release](https://github.com/syuilo/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/syuilo/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/syuilo/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/syuilo/misskey.git`
|
||||
|
||||
3. misskeyディレクトリに移動
|
||||
|
||||
`cd misskey`
|
||||
|
||||
4. [最新のリリース](https://github.com/syuilo/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/syuilo/misskey.git`
|
||||
|
||||
3. 进入 misskey 文件夹。
|
||||
|
||||
`cd misskey`
|
||||
|
||||
4. 检查 [最新发布版](https://github.com/syuilo/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/*/src/**/*',
|
||||
], { ignoreInitial: false }, gulp.task('build'));
|
||||
});
|
109
gulpfile.ts
109
gulpfile.ts
@ -1,109 +0,0 @@
|
||||
/**
|
||||
* Gulp tasks
|
||||
*/
|
||||
|
||||
import * as fs from 'fs';
|
||||
import * as gulp from 'gulp';
|
||||
import * as ts from 'gulp-typescript';
|
||||
import * as rimraf from 'rimraf';
|
||||
import * as rename from 'gulp-rename';
|
||||
import * as replace from '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:ts', () => {
|
||||
const tsProject = ts.createProject('./tsconfig.json');
|
||||
|
||||
return tsProject
|
||||
.src()
|
||||
.pipe(tsProject())
|
||||
.on('error', () => {})
|
||||
.pipe(gulp.dest('./built/'));
|
||||
});
|
||||
|
||||
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/client/assets/fonts/'))
|
||||
);
|
||||
|
||||
gulp.task('build:copy:locales', cb => {
|
||||
fs.mkdirSync('./built/client/assets/locales', { recursive: true });
|
||||
|
||||
const v = { '_version_': meta.version };
|
||||
|
||||
for (const [lang, locale] of Object.entries(locales)) {
|
||||
fs.writeFileSync(`./built/client/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'])
|
||||
.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'])
|
||||
.pipe(cssnano())
|
||||
.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/server/web/views/**/*',
|
||||
'./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('copy:client', () =>
|
||||
gulp.src([
|
||||
'./assets/**/*',
|
||||
'./src/client/assets/**/*',
|
||||
])
|
||||
.pipe(rename(path => {
|
||||
path.dirname = path.dirname!.replace('assets', '.');
|
||||
}))
|
||||
.pipe(gulp.dest('./built/client/assets/'))
|
||||
);
|
||||
|
||||
gulp.task('copy:docs', () =>
|
||||
gulp.src([
|
||||
'./src/docs/**/*',
|
||||
])
|
||||
.pipe(gulp.dest('./built/client/assets/docs/'))
|
||||
);
|
||||
|
||||
gulp.task('build:client', gulp.parallel(
|
||||
'copy:client',
|
||||
'copy:docs'
|
||||
));
|
||||
|
||||
gulp.task('build', gulp.parallel(
|
||||
'build:ts',
|
||||
'build:copy',
|
||||
'build:client',
|
||||
));
|
||||
|
||||
gulp.task('default', 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,6 +1,6 @@
|
||||
# **DO NOT edit locale files** except `ja-JP.yml`.
|
||||
|
||||
When you add text to the ja-JP file (of syuilo/misskey), it will automatically be applied to other language files.
|
||||
When you add text to the ja-JP file (of misskey-dev/misskey), it will automatically be applied to other language files.
|
||||
Translations added in ja-JP file should contain the original Japanese strings.
|
||||
|
||||
Please see [Contribution guide](../CONTRIBUTING.md) for more information.
|
||||
|
1010
locales/ar-SA.yml
1010
locales/ar-SA.yml
File diff suppressed because it is too large
Load Diff
@ -1,2 +1,486 @@
|
||||
---
|
||||
_lang_: "Čeština"
|
||||
headlineMisskey: "Síť propojená poznámkami"
|
||||
introMisskey: "Vítejte! Misskey je otevřený a decentralizovaný microblogový servis.\n\"Poznámkami\" můžete sdílet co se zrovna děje se všemi ve Vašem okolí. 📡\nPomocí \"reakcí\" můžete sdílet své názory a pocity na ostatní poznámky. 👍\nPojďte objevovat nový svět! 🚀"
|
||||
monthAndDay: "{day}. {month}."
|
||||
search: "Vyhledávání"
|
||||
notifications: "Oznámení"
|
||||
username: "Uživatelské jméno"
|
||||
password: "Heslo"
|
||||
forgotPassword: "Zapomenuté heslo"
|
||||
fetchingAsApObject: "Načítám data z Fediversu..."
|
||||
ok: "Potvrdit"
|
||||
gotIt: "Rozumím!"
|
||||
cancel: "Zrušit"
|
||||
enterUsername: "Zadej uživatelské jméno"
|
||||
renotedBy: "{user} přeposla/a"
|
||||
noNotes: "Žádné poznámky"
|
||||
noNotifications: "Žádná oznámení"
|
||||
instance: "Instance"
|
||||
settings: "Nastavení"
|
||||
basicSettings: "Obecná nastavení"
|
||||
otherSettings: "Rozšířená nastavení"
|
||||
openInWindow: "Otevřít v novém okně"
|
||||
profile: "Váš profil"
|
||||
timeline: "Časová osa"
|
||||
noAccountDescription: "Tento uživatel zatím nenapsal svou biografii."
|
||||
login: "Přihlásit se"
|
||||
loggingIn: "Probíhá přihlašování"
|
||||
logout: "Odhlásit"
|
||||
signup: "Registrace"
|
||||
uploading: "Nahrávám"
|
||||
save: "Uložit"
|
||||
users: "Uživatelé"
|
||||
addUser: "Přidat uživatele"
|
||||
favorite: "Oblíbené"
|
||||
favorites: "Oblíbené"
|
||||
unfavorite: "Odebrat z oblízených"
|
||||
favorited: "Přidáno do oblíbených"
|
||||
alreadyFavorited: "Už je mezi oblíbenými"
|
||||
cantFavorite: "Nepodařilo se přidat mezi oblíbené."
|
||||
pin: "Připnout"
|
||||
unpin: "Odepnout"
|
||||
copyContent: "Zkopírovat obsah"
|
||||
copyLink: "Kopírovat odkaz"
|
||||
delete: "Smazat"
|
||||
deleteAndEdit: "Smazat a upravit"
|
||||
deleteAndEditConfirm: "Jste si jistí že chcete smazat tuto poznámku a editovat ji? Ztratíte tím všechny reakce, sdílení a odpovědi na ni."
|
||||
addToList: "Přidat do seznamu"
|
||||
sendMessage: "Odeslat zprávu"
|
||||
copyUsername: "Kopírovat uživatelské jméno"
|
||||
searchUser: "Vyhledat uživatele"
|
||||
reply: "Odpovědět"
|
||||
loadMore: "Zobrazit více"
|
||||
showMore: "Zobrazit více"
|
||||
youGotNewFollower: "Máte nového následovníka"
|
||||
mention: "Zmínění"
|
||||
mentions: "Zmínění"
|
||||
importAndExport: "Import a export"
|
||||
import: "Importovat"
|
||||
export: "Exportovat"
|
||||
files: "Soubor(ů)"
|
||||
download: "Stáhnout"
|
||||
unfollowConfirm: "Jste si jisti že už nechcete sledovat {name}?"
|
||||
importRequested: "Požádali jste o export. To může chvilku trvat."
|
||||
lists: "Seznamy"
|
||||
noLists: "Nemáte žádné seznamy"
|
||||
note: "Poznámka"
|
||||
notes: "Poznámky"
|
||||
following: "Sledovaní"
|
||||
followers: "Sledující"
|
||||
followsYou: "Sledují vás"
|
||||
createList: "Vytvořit seznam"
|
||||
manageLists: "Spravovat seznam"
|
||||
error: "Chyba"
|
||||
somethingHappened: "Jejda. Něco se nepovedlo."
|
||||
retry: "Opakovat"
|
||||
pageLoadError: "Nepodařilo se načíst stránku"
|
||||
enterListName: "Jméno seznamu"
|
||||
privacy: "Soukromí"
|
||||
follow: "Sledovaní"
|
||||
unfollow: "Přestat sledovat"
|
||||
renote: "Přeposlat"
|
||||
cantReRenote: "Odpověď nemůže být odstraněna."
|
||||
quote: "Citovat"
|
||||
pinned: "Připnout"
|
||||
you: "Vy"
|
||||
clickToShow: "Klikněte pro zobrazení"
|
||||
sensitive: "NSFW"
|
||||
add: "Přidat"
|
||||
reaction: "Reakce"
|
||||
reactionSettingDescription2: "Přetažením změníte pořadí, kliknutím smažete, zmáčkněte \"+\" k přidání"
|
||||
rememberNoteVisibility: "Zapamatovat nastavení zobrazení poznámky"
|
||||
attachCancel: "Odstranit přílohu"
|
||||
markAsSensitive: "Označit jako NSFW"
|
||||
unmarkAsSensitive: "Odznačit jako NSFW"
|
||||
enterFileName: "Zadejte název souboru"
|
||||
mute: "Ztlumit"
|
||||
unmute: "Odmlčet"
|
||||
block: "Zablokovat"
|
||||
unblock: "Odblokovat"
|
||||
suspend: "Zmrazit"
|
||||
unsuspend: "Odmrazit"
|
||||
blockConfirm: "Jste si jistí že chcete zablokovat tento účet?"
|
||||
unblockConfirm: "Jste si jistí že chcete odblokovat tento účet?"
|
||||
suspendConfirm: "Jste si jistí že chcete suspendovat tenhle účet?"
|
||||
unsuspendConfirm: "Jste si jistí že chcete obnovit tenhle účet?"
|
||||
selectList: "Vybrat seznam"
|
||||
selectAntenna: "Vyberte Anténu"
|
||||
selectWidget: "Zvolte widget"
|
||||
editWidgets: "Upravit widget"
|
||||
editWidgetsExit: "Hotovo"
|
||||
customEmojis: "Vlastní emoji"
|
||||
emoji: "Emoji"
|
||||
emojis: "Emoji"
|
||||
emojiName: "Jméno emoji"
|
||||
emojiUrl: "URL obrázku"
|
||||
addEmoji: "Přidat emoji"
|
||||
settingGuide: "Doporučené nastavení"
|
||||
cacheRemoteFiles: "Ukládání vzdálených souborů do mezipaměti"
|
||||
cacheRemoteFilesDescription: "Zakázání tohoto nastavení způsobí, že vzdálené soubory budou odkazovány přímo, místo aby byly ukládány do mezipaměti. Tím se ušetří úložiště na serveru, ale zvýší se provoz, protože se negenerují miniatury."
|
||||
flagAsBot: "Tento účet je bot"
|
||||
flagAsBotDescription: "Pokud je tento účet kontrolován programem zaškrtněte tuto možnost. To označí tento účet jako bot pro ostatní vývojáře a zabrání tak nekonečným interakcím s ostatními boty a upraví Misskey systém aby se choval k tomuhle účtu jako bot."
|
||||
flagAsCat: "Tenhle účet je kočka"
|
||||
flagAsCatDescription: "Vyberte tuto možnost aby tento účet byl označen jako kočka."
|
||||
autoAcceptFollowed: "Automaticky akceptovat následování od účtů které sledujete"
|
||||
addAccount: "Přidat účet"
|
||||
loginFailed: "Přihlášení se nezdařilo."
|
||||
showOnRemote: "Více na původním profilu"
|
||||
general: "Obecně"
|
||||
wallpaper: "Obrázek na pozadí"
|
||||
setWallpaper: "Nastavení obrázku na pozadí"
|
||||
removeWallpaper: "Odstranit pozadí"
|
||||
youHaveNoLists: "Nemáte žádné seznamy"
|
||||
proxyAccount: "Proxy účet"
|
||||
proxyAccountDescription: "Proxy účet je účet, který za určitých podmínek sleduje uživatele na dálku vaším jménem. Například když uživatel zařadí vzdáleného uživatele do seznamu, pokud nikdo nesleduje uživatele na seznamu, aktivita nebude doručena instanci, takže místo toho bude uživatele sledovat účet proxy."
|
||||
host: "Hostitel"
|
||||
selectUser: "Vyberte uživatele"
|
||||
recipient: "Pro"
|
||||
annotation: "Komentáře"
|
||||
instances: "Instance"
|
||||
registeredAt: "Registrován"
|
||||
latestRequestSentAt: "Poslední požadavek poslán"
|
||||
latestRequestReceivedAt: "Poslední požadavek přijat"
|
||||
latestStatus: "Poslední status"
|
||||
storageUsage: "Využití úložiště"
|
||||
charts: "Grafy"
|
||||
perHour: "za hodinu"
|
||||
perDay: "za den"
|
||||
blockThisInstance: "Blokovat tuto instanci"
|
||||
operations: "Operace"
|
||||
software: "Software"
|
||||
version: "Verze"
|
||||
metadata: "Metadata"
|
||||
withNFiles: "{n} soubor(ů)"
|
||||
monitor: "Monitorovat"
|
||||
jobQueue: "Fronta úloh"
|
||||
cpuAndMemory: "CPU a paměť"
|
||||
network: "Síť"
|
||||
disk: "Disk"
|
||||
instanceInfo: "Informace o instanci"
|
||||
statistics: "Statistiky"
|
||||
clearQueue: "Vyčistit frontu"
|
||||
clearQueueConfirmTitle: "Jste si jisti že zrušit všechny úlohy ve frontě?"
|
||||
clearCachedFiles: "Vyprázdnit mezipaměť"
|
||||
blockedInstances: "Blokované instance"
|
||||
noUsers: "Žádní uživatelé"
|
||||
editProfile: "Upravit můj profil"
|
||||
pinLimitExceeded: "Nemůžete připnout další poznámky."
|
||||
intro: "Instalace Misskey byla dokončena! Prosím vytvořte admina."
|
||||
done: "Hotovo"
|
||||
processing: "Zpracovávám"
|
||||
preview: "Náhled"
|
||||
default: "Výchozí"
|
||||
noCustomEmojis: "Bez Emoji"
|
||||
blocked: "Blokováno"
|
||||
suspended: "Suspendováno"
|
||||
all: "Vše"
|
||||
subscribing: "Odebíráte"
|
||||
publishing: "Publikuji"
|
||||
notResponding: "Neodpovídá"
|
||||
instanceFollowing: "Následovníci na instanci"
|
||||
instanceFollowers: "Následovníci na instanci"
|
||||
instanceUsers: "Uživatelé této instance"
|
||||
changePassword: "Změnit heslo"
|
||||
security: "Zabezpečení"
|
||||
currentPassword: "Současné heslo"
|
||||
newPassword: "Nové heslo"
|
||||
newPasswordRetype: "Nové heslo (znovu)"
|
||||
attachFile: "Přiložit soubor"
|
||||
more: "Více!"
|
||||
featured: "Oblíbené poznámky"
|
||||
usernameOrUserId: "Uživatelské jméno nebo uživatelské id"
|
||||
noSuchUser: "Uživatel nebyl nalezen"
|
||||
announcements: "Oznámení"
|
||||
imageUrl: "URL obrázku"
|
||||
remove: "Smazat"
|
||||
removed: "Smazáno"
|
||||
removeAreYouSure: "Jste si jistí že chcete smazat \"{x}\"?"
|
||||
deleteAreYouSure: "Jste si jistí že chcete smazat \"{x}\"?"
|
||||
resetAreYouSure: "Opravdu resetovat?"
|
||||
saved: "Uloženo"
|
||||
messaging: "Zprávy"
|
||||
upload: "Nahrát soubory"
|
||||
fromDrive: "Z disku"
|
||||
fromUrl: "Z URL"
|
||||
uploadFromUrl: "Nahrát z URL adresy"
|
||||
uploadFromUrlDescription: "URL adresa souboru, který chcete nahrát"
|
||||
uploadFromUrlMayTakeTime: "Může trvat nějakou dobu, dokud nebude dokončeno nahrávání."
|
||||
explore: "Objevovat"
|
||||
games: "Misskey hry"
|
||||
messageRead: "Přečtené"
|
||||
noMoreHistory: "To je vše"
|
||||
startMessaging: "Zahájit chat"
|
||||
nUsersRead: "přečteno {n} uživateli"
|
||||
agreeTo: "Souhlasím s {0}"
|
||||
tos: "Podmínky užívání"
|
||||
start: "Začít"
|
||||
home: "Domů"
|
||||
remoteUserCaution: "Tyto informace nemusí být aktuální jelikož uživatel je ze vzdálené instance."
|
||||
activity: "Aktivita"
|
||||
images: "Obrázky"
|
||||
birthday: "Datum narození"
|
||||
yearsOld: "{age} let"
|
||||
registeredDate: "Datum registrace"
|
||||
location: "Lokace"
|
||||
theme: "Vzhled"
|
||||
themeForLightMode: "Vzhled pro použití ve světlém režimu"
|
||||
themeForDarkMode: "Vzhled k použití v tmavém režimu"
|
||||
light: "Světlý"
|
||||
dark: "Tmavý"
|
||||
lightThemes: "Světlý vzhled"
|
||||
darkThemes: "Tmavý vzhled"
|
||||
syncDeviceDarkMode: "Synchronizovat tmavý vzhled s nastavením Vašeho systému"
|
||||
drive: "Úložiště"
|
||||
fileName: "Název souboru"
|
||||
selectFile: "Vybrat soubor"
|
||||
selectFiles: "Vybrat soubory"
|
||||
selectFolder: "Vyberte složku"
|
||||
selectFolders: "Vyberte složky"
|
||||
renameFile: "Přejmenovat soubor"
|
||||
folderName: "Název složky"
|
||||
createFolder: "Vytvořit složku"
|
||||
renameFolder: "Přejmenovat složku"
|
||||
deleteFolder: "Odstranit složku"
|
||||
addFile: "Přidat soubor"
|
||||
emptyFolder: "Tato složka je prázdná"
|
||||
unableToDelete: "Nelze smazat"
|
||||
inputNewFileName: "Zadejte nový název"
|
||||
copyUrl: "Kopírovat URL"
|
||||
rename: "Přejmenovat"
|
||||
avatar: "Avatar"
|
||||
banner: "Baner"
|
||||
nsfw: "NSFW"
|
||||
disconnectedFromServer: "Spojení bylo přerušeno"
|
||||
reload: "Aktualizovat"
|
||||
doNothing: "Ignorovat"
|
||||
watch: "Sledovat"
|
||||
unwatch: "Přestat sledovat"
|
||||
accept: "Souhlasím"
|
||||
reject: "Odmítnout"
|
||||
normal: "Normální"
|
||||
instanceName: "Název instance"
|
||||
instanceDescription: "Popis instance"
|
||||
maintainerName: "Správce"
|
||||
maintainerEmail: "E-mailová adresa správce"
|
||||
tosUrl: "URL pro smluvní podmínky"
|
||||
thisYear: "Tento rok"
|
||||
thisMonth: "Tento měsíc"
|
||||
today: "Dnes"
|
||||
dayX: "{day}"
|
||||
monthX: "{month}"
|
||||
yearX: "{year}"
|
||||
pages: "Stránky"
|
||||
integration: "Integrace"
|
||||
enableLocalTimeline: "Povolit lokální čas"
|
||||
enableGlobalTimeline: "Povolit globální čas"
|
||||
registration: "Registrace"
|
||||
enableRegistration: "Povolit registraci novým uživatelům"
|
||||
invite: "Pozvat"
|
||||
inMb: "V megabajtech"
|
||||
iconUrl: "Favicon URL"
|
||||
bannerUrl: "Baner URL"
|
||||
basicInfo: "Základní informace"
|
||||
hcaptcha: "hCaptcha"
|
||||
hcaptchaSecretKey: "Tajný Klíč (Secret Key)"
|
||||
recaptcha: "reCAPTCHA"
|
||||
enableRecaptcha: "Zapnout ReCAPTCHu"
|
||||
recaptchaSecretKey: "Tajný Klíč (Secret Key)"
|
||||
antennas: "Antény"
|
||||
manageAntennas: "Spravovat Antény"
|
||||
name: "Jméno"
|
||||
antennaSource: "Zdroj Antény"
|
||||
enableServiceworker: "Povolit ServiceWorker"
|
||||
caseSensitive: "Rozlišuje malá a velká písmena"
|
||||
connectedTo: "Následující účty jsou připojeny"
|
||||
userList: "Seznamy"
|
||||
about: "Informace"
|
||||
aboutMisskey: "O Misskey"
|
||||
administrator: "Administrátor"
|
||||
token: "Token"
|
||||
twoStepAuthentication: "Dvoufaktorová autentikace"
|
||||
moderator: "Moderátor"
|
||||
nUsersMentioned: "{n} uživatelů zmínilo"
|
||||
securityKey: "Bezpečnostní klíč"
|
||||
securityKeyName: "Název klíče"
|
||||
registerSecurityKey: "Registrovat bezpečnostní klíč"
|
||||
lastUsed: "Naposledy použito"
|
||||
unregister: "Odstranit"
|
||||
resetPassword: "Resetovat heslo"
|
||||
newPasswordIs: "Nové heslo je \"{password}\""
|
||||
reduceUiAnimation: "Snížit UI animace"
|
||||
share: "Sdílet"
|
||||
notFound: "Nenalezeno"
|
||||
notFoundDescription: "Nebyla nalezená žádná stránka korespondující se zadanou URL."
|
||||
uploadFolder: "Výchozí lokace pro upload"
|
||||
cacheClear: "Vymazat cache"
|
||||
markAsReadAllNotifications: "Označit všechna oznámení za přečtená"
|
||||
markAsReadAllUnreadNotes: "Označit všechny příspěvky za přečtené"
|
||||
markAsReadAllTalkMessages: "Označit všechny zprávy za přečtené"
|
||||
help: "Nápověda"
|
||||
inputMessageHere: "Sem zadejte zprávu"
|
||||
close: "Zavřít"
|
||||
group: "Skupina"
|
||||
groups: "Skupiny"
|
||||
createGroup: "Vytvořit skupinu"
|
||||
ownedGroups: "Vlastněné skupiny"
|
||||
joinedGroups: "Členství ve skupinách"
|
||||
invites: "Pozvat"
|
||||
groupName: "Název skupiny"
|
||||
members: "Členové"
|
||||
transfer: "Převod"
|
||||
title: "Titulek"
|
||||
text: "Text"
|
||||
enable: "Povolit"
|
||||
next: "Další"
|
||||
retype: "Zadejte znovu"
|
||||
noteOf: "{user} poznámky"
|
||||
inviteToGroup: "Pozvat do skupiny"
|
||||
invitations: "Pozvat"
|
||||
checking: "Ověřuji"
|
||||
available: "K dispozici"
|
||||
unavailable: "Není k dispozici"
|
||||
usernameInvalidFormat: "Písmena, čísla a _ jsou povolená."
|
||||
tooShort: "Příliš krátké"
|
||||
tooLong: "Příliš dlouhé"
|
||||
weakPassword: "Slabé heslo"
|
||||
normalPassword: "Dobré heslo"
|
||||
strongPassword: "Silné heslo"
|
||||
passwordMatched: "Hesla se schodují"
|
||||
passwordNotMatched: "Hesla se neschodují"
|
||||
signinWith: "Přihlásit se s {x}"
|
||||
signinFailed: "Nelze se přihlásit. Zkontrolujte prosím své uživatelské jméno a heslo."
|
||||
or: "Nebo"
|
||||
language: "Jazyk"
|
||||
uiLanguage: "Jazyk uživatelského rozhraní"
|
||||
groupInvited: "Pozvat do skupiny"
|
||||
aboutX: "O {x}"
|
||||
useOsNativeEmojis: "Použití nativních emoji operačního systému"
|
||||
youHaveNoGroups: "Nemáte žádné skupiny"
|
||||
joinOrCreateGroup: "Můžete požádat o pozvání do stávající skupiny nebo vytvořit novou."
|
||||
noHistory: "Žádná historie"
|
||||
signinHistory: "Historie přihlášení"
|
||||
category: "Kategorie"
|
||||
tags: "Štítky"
|
||||
createAccount: "Vytvořit účet"
|
||||
fontSize: "Velikost písma"
|
||||
openImageInNewTab: "Otevřít obrázek v novém panelu"
|
||||
dashboard: "Přehled"
|
||||
local: "Lokální"
|
||||
total: "Celkem"
|
||||
weekOverWeekChanges: "Týdně"
|
||||
dayOverDayChanges: "Denně"
|
||||
appearance: "Vzhled"
|
||||
clientSettings: "Nastavení klienta"
|
||||
accountSettings: "Nastavení účtu"
|
||||
promotion: "Propagace"
|
||||
promote: "Propagovat"
|
||||
numberOfDays: "Počet dní"
|
||||
chooseEmoji: "Vybrat emotikon"
|
||||
unableToProcess: "Operace nebyla dokončena."
|
||||
recentUsed: "Naposledy použité"
|
||||
install: "Nainstalovat"
|
||||
uninstall: "Odinstalovat"
|
||||
installedApps: "Autorizované aplikace"
|
||||
nothing: "Nic nebylo nalezeno"
|
||||
lastUsedDate: "Poslední použití"
|
||||
state: "Stav"
|
||||
ascendingOrder: "Vzestupně"
|
||||
descendingOrder: "Sestupně"
|
||||
scratchpad: "Zápisník"
|
||||
output: "Výstup"
|
||||
script: "Skript"
|
||||
deleteAllFiles: "Smazat všechny soubory"
|
||||
deleteAllFilesConfirm: "Jste si jistí že chcete smazat všechny soubory?"
|
||||
userSuspended: "Tomuto uživateli byl pozastaven účet."
|
||||
addItem: "Přidat položku"
|
||||
rooms: "Místnost"
|
||||
inboxUrl: "Inbox URL"
|
||||
deletedNote: "Odstraněné příspěvky"
|
||||
invisibleNote: "Skryté příspěvky"
|
||||
smtpHost: "Hostitel"
|
||||
smtpUser: "Uživatelské jméno"
|
||||
smtpPass: "Heslo"
|
||||
clearCache: "Vyprázdnit mezipaměť"
|
||||
info: "Informace"
|
||||
user: "Uživatelé"
|
||||
_email:
|
||||
_follow:
|
||||
title: "Máte nového následovníka"
|
||||
_mfm:
|
||||
mention: "Zmínění"
|
||||
quote: "Citovat"
|
||||
emoji: "Vlastní emoji"
|
||||
search: "Vyhledávání"
|
||||
_reversi:
|
||||
total: "Celkem"
|
||||
_theme:
|
||||
keys:
|
||||
mention: "Zmínění"
|
||||
renote: "Přeposlat"
|
||||
_sfx:
|
||||
note: "Poznámky"
|
||||
notification: "Oznámení"
|
||||
chat: "Zprávy"
|
||||
_widgets:
|
||||
notifications: "Oznámení"
|
||||
timeline: "Časová osa"
|
||||
activity: "Aktivita"
|
||||
jobQueue: "Fronta úloh"
|
||||
_cw:
|
||||
show: "Zobrazit více"
|
||||
_visibility:
|
||||
home: "Domů"
|
||||
followers: "Sledující"
|
||||
_profile:
|
||||
name: "Jméno"
|
||||
username: "Uživatelské jméno"
|
||||
_exportOrImport:
|
||||
followingList: "Sledovaní"
|
||||
muteList: "Ztlumit"
|
||||
blockingList: "Zablokovat"
|
||||
userLists: "Seznamy"
|
||||
_timelines:
|
||||
home: "Domů"
|
||||
_rooms:
|
||||
_roomType:
|
||||
default: "Výchozí"
|
||||
_furnitures:
|
||||
monitor: "Monitorovat"
|
||||
_pages:
|
||||
blocks:
|
||||
image: "Obrázky"
|
||||
script:
|
||||
categories:
|
||||
list: "Seznamy"
|
||||
blocks:
|
||||
_join:
|
||||
arg1: "Seznamy"
|
||||
_randomPick:
|
||||
arg1: "Seznamy"
|
||||
_dailyRandomPick:
|
||||
arg1: "Seznamy"
|
||||
_seedRandomPick:
|
||||
arg2: "Seznamy"
|
||||
_pick:
|
||||
arg1: "Seznamy"
|
||||
_listLen:
|
||||
arg1: "Seznamy"
|
||||
types:
|
||||
array: "Seznamy"
|
||||
_notification:
|
||||
youWereFollowed: "Máte nového následovníka"
|
||||
youWereInvitedToGroup: "Pozvat do skupiny"
|
||||
_types:
|
||||
follow: "Sledovaní"
|
||||
mention: "Zmínění"
|
||||
renote: "Přeposlat"
|
||||
quote: "Citovat"
|
||||
reaction: "Reakce"
|
||||
_deck:
|
||||
_columns:
|
||||
notifications: "Oznámení"
|
||||
tl: "Časová osa"
|
||||
antenna: "Antény"
|
||||
list: "Seznamy"
|
||||
mentions: "Zmínění"
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
1059
locales/eo-UY.yml
Normal file
1059
locales/eo-UY.yml
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,11 +1,13 @@
|
||||
---
|
||||
_lang_: "Español"
|
||||
headlineMisskey: "Red conectada por notas"
|
||||
introMisskey: "¡Bienvenido/a! Misskey es un servicio de microblogging descentralizado de código abierto.\nEscribe \"notas\" para compartir lo que te ocurre ahora o para contar sobre ti a todos 📡\nCon la función de \"reacciones\", puedes también añadir una reacción rápida a las notas de todos 👍\nExplora un nuevo mundo 🚀"
|
||||
monthAndDay: "{day}/{month}"
|
||||
search: "Buscar"
|
||||
notifications: "Notificaciones"
|
||||
username: "Nombre de usuario"
|
||||
password: "Contraseña"
|
||||
forgotPassword: "Olvidé mi Contraseña"
|
||||
fetchingAsApObject: "Buscando en el fediverso"
|
||||
ok: "OK"
|
||||
gotIt: "Entendido"
|
||||
@ -96,12 +98,12 @@ cantRenote: "No se puede renotar este post"
|
||||
cantReRenote: "No se puede renotar una renota"
|
||||
quote: "Citar"
|
||||
pinnedNote: "Nota fijada"
|
||||
pinned: "Fijar"
|
||||
you: "Tú"
|
||||
clickToShow: "Click para ver"
|
||||
sensitive: "Marcado como sensible"
|
||||
add: "Agregar"
|
||||
reaction: "Reacción"
|
||||
reactionSettingDescription: "Asigne sus reacción favoritas que desean anclar en el selector de reacciones."
|
||||
reactionSettingDescription2: "Arrastre para reordenar, click para borrar, apriete la tecla + para añadir."
|
||||
rememberNoteVisibility: "Recordar visibilidad"
|
||||
attachCancel: "Quitar adjunto"
|
||||
@ -125,6 +127,7 @@ editWidgets: "Editar widgets"
|
||||
editWidgetsExit: "Terminar edición"
|
||||
customEmojis: "Emojis personalizados"
|
||||
emoji: "Emoji"
|
||||
emojis: "Emoji"
|
||||
emojiName: "Nombre del emoji"
|
||||
emojiUrl: "URL de la imágen del emoji"
|
||||
addEmoji: "Agregar emoji"
|
||||
@ -136,7 +139,7 @@ flagAsBotDescription: "En caso de que esta cuenta fuera usada por un programa, a
|
||||
flagAsCat: "Esta cuenta es un gato"
|
||||
flagAsCatDescription: "En caso de que declare que esta cuenta es de un gato, active esta opción."
|
||||
autoAcceptFollowed: "Aceptar automáticamente las solicitudes de seguimiento de los usuarios que sigues"
|
||||
addAcount: "Agregar cuenta"
|
||||
addAccount: "Agregar Cuenta"
|
||||
loginFailed: "Error al iniciar sesión."
|
||||
showOnRemote: "Ver en una instancia remota"
|
||||
general: "General"
|
||||
@ -276,6 +279,7 @@ emptyDrive: "El drive está vacío"
|
||||
emptyFolder: "La carpeta está vacía"
|
||||
unableToDelete: "No se puede borrar"
|
||||
inputNewFileName: "Ingrese un nuevo nombre de archivo"
|
||||
inputNewDescription: "Ingrese nueva descripción"
|
||||
inputNewFolderName: "Ingrese un nuevo nombre de la carpeta"
|
||||
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."
|
||||
@ -307,8 +311,8 @@ monthX: "Mes {month}"
|
||||
yearX: "Año {year}"
|
||||
pages: "Páginas"
|
||||
integration: "Integración"
|
||||
connectSerice: "Conectarse"
|
||||
disconnectSerice: "Desconectarse"
|
||||
connectService: "Conectar"
|
||||
disconnectService: "Desconectar"
|
||||
enableLocalTimeline: "Habilitar linea de tiempo local"
|
||||
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"
|
||||
@ -322,6 +326,7 @@ driveCapacityPerRemoteAccount: "Capacidad del drive por usuario remoto"
|
||||
inMb: "En megabytes"
|
||||
iconUrl: "URL de la imagen del avatar"
|
||||
bannerUrl: "URL de la imagen del banner"
|
||||
backgroundImageUrl: "URL de la imagen de fondo"
|
||||
basicInfo: "Información básica"
|
||||
pinnedUsers: "Usuarios fijados"
|
||||
pinnedUsersDescription: "Describir los usuarios que quiere fijar en la página \"Descubrir\" separados por una linea nueva"
|
||||
@ -347,7 +352,6 @@ antennaExcludeKeywords: "Palabras clave para excluir"
|
||||
antennaKeywordsDescription: "Separar con espacios es una declaración AND, separar con una linea nueva es una declaración OR"
|
||||
notifyAntenna: "Notificar nueva nota"
|
||||
withFileAntenna: "Sólo notas con archivos adjuntados"
|
||||
serviceworker: "ServiceWorker"
|
||||
enableServiceworker: "Activar ServiceWorker"
|
||||
antennaUsersDescription: "Elegir nombres de usuarios separados por una linea nueva"
|
||||
caseSensitive: "Distinguir mayúsculas de minúsculas"
|
||||
@ -436,6 +440,7 @@ signinWith: "Inicie sesión con {x}"
|
||||
signinFailed: "Autenticación fallida. Asegúrate de haber usado el nombre de usuario y contraseña correctos."
|
||||
tapSecurityKey: "Toque la clave de seguridad"
|
||||
or: "O"
|
||||
language: "Idioma"
|
||||
uiLanguage: "Idioma de visualización de la interfaz"
|
||||
groupInvited: "Invitado al grupo"
|
||||
aboutX: "Acerca de {x}"
|
||||
@ -450,7 +455,7 @@ category: "Categoría"
|
||||
tags: "Etiqueta"
|
||||
docSource: "Fuente de este documento"
|
||||
createAccount: "Crear cuenta"
|
||||
existingAcount: "Cuentas existentes"
|
||||
existingAccount: "Cuenta existente"
|
||||
regenerate: "Regenerar"
|
||||
fontSize: "Tamaño de la letra"
|
||||
noFollowRequests: "No hay solicitudes de seguimiento"
|
||||
@ -523,7 +528,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"
|
||||
userSuspended: "Este usuario ha sido suspendido."
|
||||
userSilenced: "Este usuario ha sido silenciado."
|
||||
sidebar: "Barra lateral"
|
||||
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"
|
||||
addItem: "Agregar elemento"
|
||||
rooms: "Cuartos"
|
||||
@ -543,11 +550,12 @@ disablePlayer: "Cerrar reproductor"
|
||||
expandTweet: "Expandir tweet"
|
||||
themeEditor: "Editor de temas"
|
||||
description: "Descripción"
|
||||
describeFile: "Añade una descripción"
|
||||
enterFileDescription: "Introducir un título"
|
||||
author: "Autor"
|
||||
leaveConfirm: "Hay modificaciones sin guardar. ¿Desea descartarlas?"
|
||||
manage: "Administrar"
|
||||
plugins: "Plugins"
|
||||
pluginInstallWarn: "Por favor no instale plugins que no son de confianza"
|
||||
deck: "Deck"
|
||||
undeck: "Quitar deck"
|
||||
useBlurEffectForModal: "Usar efecto borroso en modales"
|
||||
@ -566,7 +574,7 @@ pluginTokenRequestedDescription: "Este plugin podrá usar los permisos descritos
|
||||
notificationType: "Tipo de notificación"
|
||||
edit: "Editar"
|
||||
useStarForReactionFallback: "En caso de que los emojis de reacciones no sean claros, usar en su lugar una estrella"
|
||||
emailConfig: "Configuración del servidor de correos"
|
||||
emailServer: "Servidor de correo"
|
||||
enableEmail: "Activar el envío de correos electrónicos"
|
||||
emailConfigInfo: "Usar en caso de validación de correo electrónico y pedido de contraseña"
|
||||
email: "Correo"
|
||||
@ -601,7 +609,6 @@ regenerateLoginToken: "Regenerar token de login"
|
||||
regenerateLoginTokenDescription: "Regenerar el token usado internamente durante el login. No siempre es necesario hacerlo. Al hacerlo de nuevo, se deslogueará en todos los dispositivos."
|
||||
setMultipleBySeparatingWithSpace: "Puedes añadir mas de uno, separado por espacios."
|
||||
fileIdOrUrl: "Id del archivo o URL"
|
||||
chatOpenBehavior: "Comportamiento al abrir el chat"
|
||||
behavior: "Comportamiento"
|
||||
sample: "Muestra"
|
||||
abuseReports: "Reportes"
|
||||
@ -646,12 +653,99 @@ driveFilesCount: "Cantidad de archivos en el drive"
|
||||
driveUsage: "Uso del drive"
|
||||
noCrawle: "Rechazar indexación del crawler"
|
||||
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"
|
||||
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."
|
||||
notSet: "Sin especificar"
|
||||
emailVerified: "Su dirección de correo electrónico ha sido verificada."
|
||||
noteFavoritesCount: "Número de notas favoritas"
|
||||
pageLikesCount: "Número de favoritos en la página"
|
||||
pageLikedCount: "Número de favoritos de su página"
|
||||
reversiCount: "Numero de partidas Reversi"
|
||||
contact: "Contacto"
|
||||
useSystemFont: "Utilizar la tipografía por defecto del sistema"
|
||||
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é"
|
||||
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"
|
||||
accentColor: "Acento"
|
||||
textColor: "Texto"
|
||||
saveAs: "Guardar como…"
|
||||
advanced: "Avanzado"
|
||||
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"
|
||||
info: "Información"
|
||||
user: "Usuarios"
|
||||
administration: "Administrar"
|
||||
expiration: "Termina el"
|
||||
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"
|
||||
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"
|
||||
controlPanel: "Panel de control"
|
||||
hide: "Ocultar"
|
||||
_accountDelete:
|
||||
accountDelete: "Eliminar Cuenta"
|
||||
_ad:
|
||||
back: "Deseleccionar"
|
||||
_gallery:
|
||||
unlike: "Quitar me gusta"
|
||||
_email:
|
||||
_follow:
|
||||
title: "te ha seguido"
|
||||
_registry:
|
||||
key: "Clave"
|
||||
keys: "Clave"
|
||||
@ -673,6 +767,7 @@ _mfm:
|
||||
flip: "Echar de un capirotazo"
|
||||
flipDescription: "Voltea el contenido hacia arriba / abajo o hacia la izquierda / derecha."
|
||||
font: "Fuente"
|
||||
rotate: "Rotar"
|
||||
_reversi:
|
||||
reversi: "Reversi"
|
||||
gameSettings: "Configuración del juego"
|
||||
@ -724,9 +819,7 @@ _channel:
|
||||
following: "Siguiendo"
|
||||
usersCount: "{n} participantes"
|
||||
notesCount: "{n} notas"
|
||||
_sidebar:
|
||||
full: "Completo"
|
||||
icon: "Avatar"
|
||||
_menuDisplay:
|
||||
hide: "Ocultar"
|
||||
_wordMute:
|
||||
muteWords: "Palabras que silenciar"
|
||||
@ -742,6 +835,7 @@ _theme:
|
||||
install: "Instalar tema"
|
||||
manage: "Gestor de temas"
|
||||
code: "Código del tema"
|
||||
description: "Descripción"
|
||||
installed: "{name} ha sido instalado"
|
||||
alreadyInstalled: "Este tema ya está instalado"
|
||||
invalid: "El formato del tema no es válido"
|
||||
|
File diff suppressed because it is too large
Load Diff
1539
locales/id-ID.yml
1539
locales/id-ID.yml
File diff suppressed because it is too large
Load Diff
@ -19,8 +19,11 @@ const languages = [
|
||||
'da-DK',
|
||||
'de-DE',
|
||||
'en-US',
|
||||
'eo-UY',
|
||||
'es-ES',
|
||||
'fr-FR',
|
||||
'id-ID',
|
||||
'it-IT',
|
||||
'ja-JP',
|
||||
'ja-KS',
|
||||
'kab-KAB',
|
||||
@ -43,7 +46,10 @@ const primaries = {
|
||||
'zh': 'CN',
|
||||
};
|
||||
|
||||
const locales = languages.reduce((a, c) => (a[c] = yaml.safeLoad(fs.readFileSync(`${__dirname}/${c}.yml`, 'utf-8')) || {}, a), {});
|
||||
// 何故か文字列にバックスペース文字が混入することがあり、YAMLが壊れるので取り除く
|
||||
const clean = (text) => text.replace(new RegExp(String.fromCodePoint(0x08), 'g'), '');
|
||||
|
||||
const locales = languages.reduce((a, c) => (a[c] = yaml.load(clean(fs.readFileSync(`${__dirname}/${c}.yml`, 'utf-8'))) || {}, a), {});
|
||||
|
||||
module.exports = Object.entries(locales)
|
||||
.reduce((a, [k ,v]) => (a[k] = (() => {
|
||||
|
1427
locales/it-IT.yml
1427
locales/it-IT.yml
File diff suppressed because it is too large
Load Diff
@ -7,6 +7,7 @@ search: "検索"
|
||||
notifications: "通知"
|
||||
username: "ユーザー名"
|
||||
password: "パスワード"
|
||||
forgotPassword: "パスワードを忘れた"
|
||||
fetchingAsApObject: "連合に照会中"
|
||||
ok: "OK"
|
||||
gotIt: "わかった"
|
||||
@ -80,6 +81,8 @@ somethingHappened: "問題が発生しました"
|
||||
retry: "再試行"
|
||||
pageLoadError: "ページの読み込みに失敗しました。"
|
||||
pageLoadErrorDescription: "これは通常、ネットワークまたはブラウザキャッシュが原因です。キャッシュをクリアするか、しばらく待ってから再度試してください。"
|
||||
serverIsDead: "サーバーの応答がありません。しばらく待ってから再度試してください。"
|
||||
youShouldUpgradeClient: "このページを表示するためには、リロードして新しいバージョンのクライアントをご利用ください。"
|
||||
enterListName: "リスト名を入力"
|
||||
privacy: "プライバシー"
|
||||
makeFollowManuallyApprove: "フォローを承認制にする"
|
||||
@ -97,12 +100,13 @@ cantRenote: "この投稿はRenoteできません。"
|
||||
cantReRenote: "RenoteをRenoteすることはできません。"
|
||||
quote: "引用"
|
||||
pinnedNote: "ピン留めされたノート"
|
||||
pinned: "ピン留め"
|
||||
you: "あなた"
|
||||
clickToShow: "クリックして表示"
|
||||
sensitive: "閲覧注意"
|
||||
add: "追加"
|
||||
reaction: "リアクション"
|
||||
reactionSettingDescription: "リアクションピッカーに表示するリアクションを設定します。"
|
||||
reactionSetting: "ピッカーに表示するリアクション"
|
||||
reactionSettingDescription2: "ドラッグして並び替え、クリックして削除、+を押して追加します。"
|
||||
rememberNoteVisibility: "公開範囲を記憶する"
|
||||
attachCancel: "添付取り消し"
|
||||
@ -126,6 +130,7 @@ editWidgets: "ウィジェットを編集"
|
||||
editWidgetsExit: "編集を終了"
|
||||
customEmojis: "カスタム絵文字"
|
||||
emoji: "絵文字"
|
||||
emojis: "絵文字"
|
||||
emojiName: "絵文字名"
|
||||
emojiUrl: "絵文字画像URL"
|
||||
addEmoji: "絵文字を追加"
|
||||
@ -137,7 +142,7 @@ flagAsBotDescription: "このアカウントがプログラムによって運用
|
||||
flagAsCat: "Catとして設定"
|
||||
flagAsCatDescription: "このアカウントが猫であることを示す場合は、このフラグをオンにします。"
|
||||
autoAcceptFollowed: "フォロー中ユーザーからのフォロリクを自動承認"
|
||||
addAcount: "アカウント追加"
|
||||
addAccount: "アカウントを追加"
|
||||
loginFailed: "ログインに失敗しました"
|
||||
showOnRemote: "リモートで表示"
|
||||
general: "全般"
|
||||
@ -182,7 +187,7 @@ clearQueueConfirmTitle: "キューをクリアしますか?"
|
||||
clearQueueConfirmText: "未配達の投稿は配送されなくなります。通常この操作を行う必要はありません。"
|
||||
clearCachedFiles: "キャッシュをクリア"
|
||||
clearCachedFilesConfirm: "キャッシュされたリモートファイルをすべて削除しますか?"
|
||||
blockedInstances: "インスタンスブロック"
|
||||
blockedInstances: "ブロックしたインスタンス"
|
||||
blockedInstancesDescription: "ブロックしたいインスタンスのホストを改行で区切って設定します。ブロックされたインスタンスは、このインスタンスとやり取りできなくなります。"
|
||||
muteAndBlock: "ミュートとブロック"
|
||||
mutedUsers: "ミュートしたユーザー"
|
||||
@ -277,6 +282,7 @@ emptyDrive: "ドライブは空です"
|
||||
emptyFolder: "フォルダーは空です"
|
||||
unableToDelete: "削除できません"
|
||||
inputNewFileName: "新しいファイル名を入力してください"
|
||||
inputNewDescription: "新しいキャプションを入力してください"
|
||||
inputNewFolderName: "新しいフォルダ名を入力してください"
|
||||
circularReferenceFolder: "移動先のフォルダーは、移動するフォルダーのサブフォルダーです。"
|
||||
hasChildFilesOrFolders: "このフォルダは空でないため、削除できません。"
|
||||
@ -308,8 +314,8 @@ monthX: "{month}月"
|
||||
yearX: "{year}年"
|
||||
pages: "ページ"
|
||||
integration: "連携"
|
||||
connectSerice: "接続する"
|
||||
disconnectSerice: "切断する"
|
||||
connectService: "接続する"
|
||||
disconnectService: "切断する"
|
||||
enableLocalTimeline: "ローカルタイムラインを有効にする"
|
||||
enableGlobalTimeline: "グローバルタイムラインを有効にする"
|
||||
disablingTimelinesInfo: "これらのタイムラインを無効化しても、利便性のため管理者およびモデレーターは引き続き利用することができます。"
|
||||
@ -321,8 +327,9 @@ proxyRemoteFilesDescription: "この設定を有効にすると、未保存ま
|
||||
driveCapacityPerLocalAccount: "ローカルユーザーひとりあたりのドライブ容量"
|
||||
driveCapacityPerRemoteAccount: "リモートユーザーひとりあたりのドライブ容量"
|
||||
inMb: "メガバイト単位"
|
||||
iconUrl: "アイコン画像のURL"
|
||||
iconUrl: "アイコン画像のURL (faviconなど)"
|
||||
bannerUrl: "バナー画像のURL"
|
||||
backgroundImageUrl: "背景画像のURL"
|
||||
basicInfo: "基本情報"
|
||||
pinnedUsers: "ピン留めユーザー"
|
||||
pinnedUsersDescription: "「みつける」ページなどにピン留めしたいユーザーを改行で区切って記述します。"
|
||||
@ -348,7 +355,6 @@ antennaExcludeKeywords: "除外キーワード"
|
||||
antennaKeywordsDescription: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります"
|
||||
notifyAntenna: "新しいノートを通知する"
|
||||
withFileAntenna: "ファイルが添付されたノートのみ"
|
||||
serviceworker: "ServiceWorker"
|
||||
enableServiceworker: "ServiceWorkerを有効にする"
|
||||
antennaUsersDescription: "ユーザー名を改行で区切って指定します"
|
||||
caseSensitive: "大文字小文字を区別する"
|
||||
@ -437,10 +443,12 @@ signinWith: "{x}でログイン"
|
||||
signinFailed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||
tapSecurityKey: "セキュリティキーにタッチ"
|
||||
or: "もしくは"
|
||||
language: "言語"
|
||||
uiLanguage: "UIの表示言語"
|
||||
groupInvited: "グループに招待されました"
|
||||
aboutX: "{x}について"
|
||||
useOsNativeEmojis: "OSネイティブの絵文字を使用"
|
||||
disableDrawer: "メニューをドロワーで表示しない"
|
||||
youHaveNoGroups: "グループがありません"
|
||||
joinOrCreateGroup: "既存のグループに招待してもらうか、新しくグループを作成してください。"
|
||||
noHistory: "履歴はありません"
|
||||
@ -451,7 +459,7 @@ category: "カテゴリ"
|
||||
tags: "タグ"
|
||||
docSource: "このドキュメントのソース"
|
||||
createAccount: "アカウントを作成"
|
||||
existingAcount: "既存のアカウント"
|
||||
existingAccount: "既存のアカウント"
|
||||
regenerate: "再生成"
|
||||
fontSize: "フォントサイズ"
|
||||
noFollowRequests: "フォロー申請はありません"
|
||||
@ -524,7 +532,9 @@ removeAllFollowing: "フォローを全解除"
|
||||
removeAllFollowingDescription: "{host}からのフォローをすべて解除します。そのインスタンスがもう存在しなくなった場合などに実行してください。"
|
||||
userSuspended: "このユーザーは凍結されています。"
|
||||
userSilenced: "このユーザーはサイレンスされています。"
|
||||
sidebar: "サイドバー"
|
||||
yourAccountSuspendedTitle: "アカウントが凍結されています"
|
||||
yourAccountSuspendedDescription: "このアカウントは、サーバーの利用規約に違反したなどの理由により、凍結されています。詳細については管理者までお問い合わせください。新しいアカウントを作らないでください。"
|
||||
menu: "メニュー"
|
||||
divider: "分割線"
|
||||
addItem: "項目を追加"
|
||||
rooms: "ルーム"
|
||||
@ -544,11 +554,12 @@ disablePlayer: "プレイヤーを閉じる"
|
||||
expandTweet: "ツイートを展開する"
|
||||
themeEditor: "テーマエディター"
|
||||
description: "説明"
|
||||
describeFile: "キャプションを付ける"
|
||||
enterFileDescription: "キャプションを入力"
|
||||
author: "作者"
|
||||
leaveConfirm: "未保存の変更があります。破棄しますか?"
|
||||
manage: "管理"
|
||||
plugins: "プラグイン"
|
||||
pluginInstallWarn: "信頼できないプラグインはインストールしないでください。"
|
||||
deck: "デッキ"
|
||||
undeck: "デッキ解除"
|
||||
useBlurEffectForModal: "モーダルにぼかし効果を使用"
|
||||
@ -567,7 +578,7 @@ pluginTokenRequestedDescription: "このプラグインはここで設定した
|
||||
notificationType: "通知の種類"
|
||||
edit: "編集"
|
||||
useStarForReactionFallback: "リアクション絵文字が不明な場合、代わりに★を使う"
|
||||
emailConfig: "メールサーバー設定"
|
||||
emailServer: "メールサーバー"
|
||||
enableEmail: "メール配信機能を有効化する"
|
||||
emailConfigInfo: "メールアドレスの確認やパスワードリセットの際に使います"
|
||||
email: "メール"
|
||||
@ -582,6 +593,7 @@ smtpSecure: "SMTP 接続に暗黙的なSSL/TLSを使用する"
|
||||
smtpSecureInfo: "STARTTLS使用時はオフにします。"
|
||||
testEmail: "配信テスト"
|
||||
wordMute: "ワードミュート"
|
||||
instanceMute: "インスタンスミュート"
|
||||
userSaysSomething: "{name}が何かを言いました"
|
||||
makeActive: "アクティブにする"
|
||||
display: "表示"
|
||||
@ -602,7 +614,6 @@ regenerateLoginToken: "ログイントークンを再生成"
|
||||
regenerateLoginTokenDescription: "ログインに使用される内部トークンを再生成します。通常この操作を行う必要はありません。再生成すると、全てのデバイスでログアウトされます。"
|
||||
setMultipleBySeparatingWithSpace: "スペースで区切って複数設定できます。"
|
||||
fileIdOrUrl: "ファイルIDまたはURL"
|
||||
chatOpenBehavior: "チャットを開くときの動作"
|
||||
behavior: "動作"
|
||||
sample: "サンプル"
|
||||
abuseReports: "通報"
|
||||
@ -610,6 +621,8 @@ reportAbuse: "通報"
|
||||
reportAbuseOf: "{name}を通報する"
|
||||
fillAbuseReportDescription: "通報理由の詳細を記入してください。対象のノートがある場合はそのURLも記入してください。"
|
||||
abuseReported: "内容が送信されました。ご報告ありがとうございました。"
|
||||
reporteeOrigin: "通報先"
|
||||
reporterOrigin: "通報元"
|
||||
send: "送信"
|
||||
abuseMarkAsResolved: "対応済みにする"
|
||||
openInNewTab: "新しいタブで開く"
|
||||
@ -672,13 +685,14 @@ center: "中央"
|
||||
wide: "広い"
|
||||
narrow: "狭い"
|
||||
reloadToApplySetting: "設定はページリロード後に反映されます。今すぐリロードしますか?"
|
||||
needReloadToApply: "反映には再起動が必要です。"
|
||||
showTitlebar: "タイトルバーを表示する"
|
||||
clearCache: "キャッシュをクリア"
|
||||
onlineUsersCount: "{n}人がオンライン"
|
||||
nUsers: "{n}ユーザー"
|
||||
nNotes: "{n}ノート"
|
||||
sendErrorReports: "エラーリポートを送信"
|
||||
sendErrorReportsDescription: "オンにすると、問題が発生したときにエラーの詳細情報がMisskeyに共有され、ソフトウェアの品質向上に役立てることができます。"
|
||||
sendErrorReportsDescription: "オンにすると、問題が発生したときにエラーの詳細情報がMisskeyに共有され、ソフトウェアの品質向上に役立てることができます。エラー情報には、OSのバージョン、ブラウザの種類、行動履歴などが含まれます。"
|
||||
myTheme: "マイテーマ"
|
||||
backgroundColor: "背景"
|
||||
accentColor: "アクセント"
|
||||
@ -686,12 +700,176 @@ textColor: "文字"
|
||||
saveAs: "名前を付けて保存"
|
||||
advanced: "高度"
|
||||
value: "値"
|
||||
createdAt: "作成日時"
|
||||
updatedAt: "更新日時"
|
||||
saveConfirm: "保存しますか?"
|
||||
deleteConfirm: "削除しますか?"
|
||||
invalidValue: "有効な値ではありません。"
|
||||
registry: "レジストリ"
|
||||
closeAccount: "アカウントを閉鎖する"
|
||||
currentVersion: "現在のバージョン"
|
||||
latestVersion: "最新のバージョン"
|
||||
youAreRunningUpToDateClient: "お使いのクライアントは最新です。"
|
||||
newVersionOfClientAvailable: "新しいバージョンのクライアントが利用可能です。"
|
||||
usageAmount: "使用量"
|
||||
capacity: "容量"
|
||||
inUse: "使用中"
|
||||
editCode: "コードを編集"
|
||||
apply: "適用"
|
||||
receiveAnnouncementFromInstance: "インスタンスからのお知らせを受け取る"
|
||||
emailNotification: "メール通知"
|
||||
publish: "公開"
|
||||
inChannelSearch: "チャンネル内検索"
|
||||
useReactionPickerForContextMenu: "右クリックでリアクションピッカーを開く"
|
||||
typingUsers: "{users}が入力中"
|
||||
jumpToSpecifiedDate: "特定の日付にジャンプ"
|
||||
showingPastTimeline: "過去のタイムラインを表示しています"
|
||||
clear: "クリア"
|
||||
markAllAsRead: "全て既読にする"
|
||||
goBack: "戻る"
|
||||
unlikeConfirm: "いいね解除しますか?"
|
||||
fullView: "フルビュー"
|
||||
quitFullView: "フルビュー解除"
|
||||
addDescription: "説明を追加"
|
||||
userPagePinTip: "個々のノートのメニューから「ピン留め」を選択することで、ここにノートを表示しておくことができます。"
|
||||
notSpecifiedMentionWarning: "宛先に含まれていないメンションがあります"
|
||||
info: "情報"
|
||||
userInfo: "ユーザー情報"
|
||||
unknown: "不明"
|
||||
onlineStatus: "オンライン状態"
|
||||
hideOnlineStatus: "オンライン状態を隠す"
|
||||
hideOnlineStatusDescription: "オンライン状態を隠すと、検索などの一部機能において利便性が低下することがあります。"
|
||||
online: "オンライン"
|
||||
active: "アクティブ"
|
||||
offline: "オフライン"
|
||||
notRecommended: "非推奨"
|
||||
botProtection: "Bot防御"
|
||||
instanceBlocking: "インスタンスブロック"
|
||||
selectAccount: "アカウントを選択"
|
||||
enabled: "有効"
|
||||
disabled: "無効"
|
||||
quickAction: "クイックアクション"
|
||||
user: "ユーザー"
|
||||
administration: "管理"
|
||||
accounts: "アカウント"
|
||||
switch: "切り替え"
|
||||
noMaintainerInformationWarning: "管理者情報が設定されていません。"
|
||||
noBotProtectionWarning: "Bot防御が設定されていません。"
|
||||
configure: "設定する"
|
||||
postToGallery: "ギャラリーへ投稿"
|
||||
gallery: "ギャラリー"
|
||||
recentPosts: "最近の投稿"
|
||||
popularPosts: "人気の投稿"
|
||||
shareWithNote: "ノートで共有"
|
||||
ads: "広告"
|
||||
expiration: "期限"
|
||||
memo: "メモ"
|
||||
priority: "優先度"
|
||||
high: "高"
|
||||
middle: "中"
|
||||
low: "低"
|
||||
emailNotConfiguredWarning: "メールアドレスの設定がされていません。"
|
||||
ratio: "比率"
|
||||
previewNoteText: "本文をプレビュー"
|
||||
customCss: "カスタムCSS"
|
||||
customCssWarn: "この設定は必ず知識のある方が行ってください。不適切な設定を行うとクライアントが正常に使用できなくなる恐れがあります。"
|
||||
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: "未解決"
|
||||
breakFollow: "フォロワーを解除"
|
||||
itsOn: "オンになっています"
|
||||
itsOff: "オフになっています"
|
||||
emailRequiredForSignup: "アカウント登録にメールアドレスを必須にする"
|
||||
unread: "未読"
|
||||
filter: "フィルタ"
|
||||
controlPanel: "コントロールパネル"
|
||||
manageAccounts: "アカウントを管理"
|
||||
makeReactionsPublic: "リアクション一覧を公開する"
|
||||
makeReactionsPublicDescription: "あなたがしたリアクション一覧を誰でも見れるようにします。"
|
||||
classic: "クラシック"
|
||||
muteThread: "スレッドをミュート"
|
||||
unmuteThread: "スレッドのミュートを解除"
|
||||
ffVisibility: "つながりの公開範囲"
|
||||
ffVisibilityDescription: "自分のフォロー/フォロワー情報の公開範囲を設定できます。"
|
||||
continueThread: "さらにスレッドを見る"
|
||||
deleteAccountConfirm: "アカウントが削除されます。よろしいですか?"
|
||||
incorrectPassword: "パスワードが間違っています。"
|
||||
voteConfirm: "「{choice}」に投票しますか?"
|
||||
hide: "隠す"
|
||||
leaveGroup: "グループから抜ける"
|
||||
leaveGroupConfirm: "「{name}」から抜けますか?"
|
||||
useDrawerReactionPickerForMobile: "モバイルデバイスのときドロワーで表示"
|
||||
welcomeBackWithName: "おかえりなさい、{name}さん"
|
||||
clickToFinishEmailVerification: "[{ok}]を押して、メールアドレスの確認を完了してください。"
|
||||
|
||||
_emailUnavailable:
|
||||
used: "既に使用されています"
|
||||
format: "形式が正しくありません"
|
||||
disposable: "恒久的に使用可能なアドレスではありません"
|
||||
mx: "正しいメールサーバーではありません"
|
||||
smtp: "メールサーバーが応答しません"
|
||||
|
||||
_ffVisibility:
|
||||
public: "公開"
|
||||
followers: "フォロワーだけに公開"
|
||||
private: "非公開"
|
||||
|
||||
_signup:
|
||||
almostThere: "ほとんど完了です"
|
||||
emailAddressInfo: "あなたが使っているメールアドレスを入力してください。メールアドレスが公開されることはありません。"
|
||||
emailSent: "入力されたメールアドレス({email})宛に確認のメールが送信されました。メールに記載されたリンクにアクセスすると、アカウントの作成が完了します。"
|
||||
|
||||
_accountDelete:
|
||||
accountDelete: "アカウントの削除"
|
||||
mayTakeTime: "アカウントの削除は負荷のかかる処理であるため、作成したコンテンツの数やアップロードしたファイルの数が多いと完了までに時間がかかることがあります。"
|
||||
sendEmail: "アカウントの削除が完了する際は、登録してあったメールアドレス宛に通知を送信します。"
|
||||
requestAccountDelete: "アカウント削除をリクエスト"
|
||||
started: "削除処理が開始されました。"
|
||||
inProgress: "削除が進行中"
|
||||
|
||||
_ad:
|
||||
back: "戻る"
|
||||
reduceFrequencyOfThisAd: "この広告の表示頻度を下げる"
|
||||
|
||||
_forgotPassword:
|
||||
enterEmail: "アカウントに登録したメールアドレスを入力してください。そのアドレス宛てに、パスワードリセット用のリンクが送信されます。"
|
||||
ifNoEmail: "メールアドレスを登録していない場合は、管理者までお問い合わせください。"
|
||||
contactAdmin: "このインスタンスではメールがサポートされていないため、パスワードリセットを行う場合は管理者までお問い合わせください。"
|
||||
|
||||
_gallery:
|
||||
my: "自分の投稿"
|
||||
liked: "いいねした投稿"
|
||||
like: "いいね!"
|
||||
unlike: "いいね解除"
|
||||
|
||||
_email:
|
||||
_follow:
|
||||
title: "フォローされました"
|
||||
_receiveFollowRequest:
|
||||
title: "フォローリクエストを受け取りました"
|
||||
|
||||
_plugin:
|
||||
install: "プラグインのインストール"
|
||||
installWarn: "信頼できないプラグインはインストールしないでください。"
|
||||
manage: "プラグインの管理"
|
||||
|
||||
_registry:
|
||||
scope: "スコープ"
|
||||
@ -773,6 +951,12 @@ _mfm:
|
||||
blurDescription: "内容をぼかすことができます。ポインターを上に乗せるとはっきり見えるようになります。"
|
||||
font: "フォント"
|
||||
fontDescription: "内容のフォントを指定することができます。"
|
||||
rainbow: "レインボー"
|
||||
rainbowDescription: "内容をレインボーにします。"
|
||||
sparkle: "キラキラ"
|
||||
sparkleDescription: "キラキラしたパーティクルのエフェクトを追加します。"
|
||||
rotate: "回転"
|
||||
rotateDescription: "指定した角度で回転させます。"
|
||||
|
||||
_reversi:
|
||||
reversi: "リバーシ"
|
||||
@ -829,9 +1013,10 @@ _channel:
|
||||
usersCount: "{n}人が参加中"
|
||||
notesCount: "{n}投稿があります"
|
||||
|
||||
_sidebar:
|
||||
full: "フル"
|
||||
icon: "アイコン"
|
||||
_menuDisplay:
|
||||
sideFull: "横"
|
||||
sideIcon: "横(アイコン)"
|
||||
top: "上部"
|
||||
hide: "隠す"
|
||||
|
||||
_wordMute:
|
||||
@ -844,11 +1029,18 @@ _wordMute:
|
||||
hard: "ハード"
|
||||
mutedNotes: "ミュートされたノート"
|
||||
|
||||
_instanceMute:
|
||||
instanceMuteDescription: "ミュートしたインスタンスのユーザーへの返信を含めて、設定したインスタンスの全てのノートとRenoteをミュートします。"
|
||||
instanceMuteDescription2: "改行で区切って設定します"
|
||||
title: "設定したインスタンスのノートを隠します。"
|
||||
heading: "ミュートするインスタンス"
|
||||
|
||||
_theme:
|
||||
explore: "テーマを探す"
|
||||
install: "テーマのインストール"
|
||||
manage: "テーマの管理"
|
||||
code: "テーマコード"
|
||||
description: "説明"
|
||||
installed: "{name}をインストールしました"
|
||||
installedThemes: "インストールされたテーマ"
|
||||
builtinThemes: "標準のテーマ"
|
||||
@ -1011,6 +1203,10 @@ _permissions:
|
||||
"write:user-groups": "ユーザーグループを操作する"
|
||||
"read:channels": "チャンネルを見る"
|
||||
"write:channels": "チャンネルを操作する"
|
||||
"read:gallery": "ギャラリーを見る"
|
||||
"write:gallery": "ギャラリーを操作する"
|
||||
"read:gallery-likes": "ギャラリーのいいねを見る"
|
||||
"write:gallery-likes": "ギャラリーのいいねを操作する"
|
||||
|
||||
_auth:
|
||||
shareAccess: "「{name}」がアカウントにアクセスすることを許可しますか?"
|
||||
@ -1054,6 +1250,8 @@ _widgets:
|
||||
onlineUsers: "オンラインユーザー"
|
||||
jobQueue: "ジョブキュー"
|
||||
serverMetric: "サーバーメトリクス"
|
||||
aiscript: "AiScriptコンソール"
|
||||
aichan: "藍"
|
||||
|
||||
_cw:
|
||||
hide: "隠す"
|
||||
@ -1127,6 +1325,8 @@ _exportOrImport:
|
||||
muteList: "ミュート"
|
||||
blockingList: "ブロック"
|
||||
userLists: "リスト"
|
||||
excludeMutingUsers: "ミュートしているユーザーを除外"
|
||||
excludeInactiveUsers: "使われていないアカウントを除外"
|
||||
|
||||
_charts:
|
||||
federationInstancesIncDec: "連合の増減"
|
||||
|
File diff suppressed because it is too large
Load Diff
1
locales/jbo-EN.yml
Normal file
1
locales/jbo-EN.yml
Normal file
@ -0,0 +1 @@
|
||||
---
|
@ -7,7 +7,9 @@ username: "Isem n umseqdac"
|
||||
password: "Awal uffir"
|
||||
ok: "IH"
|
||||
settings: "Iɣewwaṛen"
|
||||
otherSettings: "Iɣewwaren nniḍen"
|
||||
profile: "Amaɣnu"
|
||||
signup: "Jerred"
|
||||
save: "Sekles"
|
||||
delete: "Kkes"
|
||||
addToList: "Rnu ɣer tebdart"
|
||||
@ -27,15 +29,35 @@ followers: "Imeḍfaṛen"
|
||||
followsYou: "Yeṭṭafaṛ-ik·em-id"
|
||||
createList: "Snulfu-d tabdart"
|
||||
enterListName: "Isem n tebdart"
|
||||
privacy: "Tabaḍnit"
|
||||
follow: "Ḍfeṛ"
|
||||
you: "Kečči·mmi"
|
||||
selectList: "Fren tabdart"
|
||||
youHaveNoLists: "Ulac ɣur-k·m ula d yiwet n tabdart"
|
||||
security: "Taɣellist"
|
||||
remove: "Kkes"
|
||||
connectService: "Qqen"
|
||||
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"
|
||||
accountSettings: "Iɣewwaṛen n umiḍan"
|
||||
plugins: "Izegrar"
|
||||
email: "Imayl"
|
||||
emailAddress: "Tansa imayl"
|
||||
smtpUser: "Isem n umseqdac"
|
||||
smtpPass: "Awal uffir"
|
||||
other: "Wiyyaḍ"
|
||||
accountInfo: "Talɣut n umiḍan"
|
||||
emailNotification: "Ilɣa imayl"
|
||||
selectAccount: "Fren amiḍan"
|
||||
accounts: "Imiḍan"
|
||||
_email:
|
||||
_follow:
|
||||
title: "Yeṭṭafaṛ-ik·em-id"
|
||||
_mfm:
|
||||
mention: "Bder"
|
||||
search: "Nadi"
|
||||
@ -45,6 +67,8 @@ _theme:
|
||||
mention: "Bder"
|
||||
_sfx:
|
||||
notification: "Ilɣuyen"
|
||||
_permissions:
|
||||
"write:account": "Ẓreg talɣut n umiḍan-ik·im"
|
||||
_widgets:
|
||||
notifications: "Ilɣuyen"
|
||||
_cw:
|
||||
|
@ -53,10 +53,15 @@ files: "ಕಡತಗಳು"
|
||||
download: "ಜಾಲದಿಂದಿಳಿಸು"
|
||||
driveFileDeleteConfirm: "\"{name}\" ಕಡತವನ್ನು ಅಳಿಸಲು ನೀವು ಬಯಸುವಿರಾ? ಈ ನೋಡಿರಿ ಲಗತ್ತಿಸಲಾದ ಟಿಪ್ಪಣಿ ಸಹ ಕಣ್ಮರೆಯಾಗುತ್ತದೆ."
|
||||
unfollowConfirm: "{name}ಅನ್ನು ಹಿಂಬಾಲಿಸದಿರುವುದೇ?"
|
||||
pinned: "ಪ್ರೊಫ಼ೈಲಿಗೆ ಅಂಟಿಸು"
|
||||
instances: "ನಿದರ್ಶನ"
|
||||
remove: "ಅಳಿಸು"
|
||||
smtpUser: "ಬಳಕೆಹೆಸರು"
|
||||
smtpPass: "ಗುಪ್ತಪದ"
|
||||
user: "ಬಳಕೆದಾರ"
|
||||
_email:
|
||||
_follow:
|
||||
title: "ಹಿಂಬಾಲಿಸಿದರು"
|
||||
_mfm:
|
||||
search: "ಹುಡುಕು"
|
||||
_sfx:
|
||||
|
@ -1,11 +1,13 @@
|
||||
---
|
||||
_lang_: "한국어"
|
||||
headlineMisskey: "노트로 연결되는 네트워크"
|
||||
introMisskey: "환영합니다! Misskey 는 오픈 소스 분산형 마이크로 블로그 서비스입니다.\n\"노트\" 를 작성해서, 지금 일어나고 있는 일을 공유하거나, 당신만의 이야기를 모두에게 발신하세요📡\n\"리액션\" 기능으로, 친구의 노트에 총알같이 반응을 추가할 수도 있습니다👍\n새로운 세계를 탐험해 보세요🚀"
|
||||
monthAndDay: "{month}월 {day}일"
|
||||
search: "검색"
|
||||
notifications: "알림"
|
||||
username: "유저명"
|
||||
password: "비밀번호"
|
||||
forgotPassword: "비밀번호 재설정"
|
||||
fetchingAsApObject: "연합에서 조회 중"
|
||||
ok: "OK"
|
||||
gotIt: "알겠어요"
|
||||
@ -33,6 +35,9 @@ addUser: "유저 추가"
|
||||
favorite: "즐겨찾기"
|
||||
favorites: "즐겨찾기"
|
||||
unfavorite: "즐겨찾기에서 제거"
|
||||
favorited: "즐겨찾기에 등록했습니다"
|
||||
alreadyFavorited: "이미 즐겨찾기에 등록되어 있습니다"
|
||||
cantFavorite: "즐겨찾기에 등록하지 못했습니다"
|
||||
pin: "프로필에 고정"
|
||||
unpin: "프로필에서 고정 해제"
|
||||
copyContent: "내용 복사"
|
||||
@ -76,6 +81,8 @@ somethingHappened: "오류가 발생했습니다"
|
||||
retry: "다시 시도"
|
||||
pageLoadError: "페이지를 불러오지 못했습니다."
|
||||
pageLoadErrorDescription: "네트워크 연결 또는 브라우저 캐시로 인해 발생했을 가능성이 높습니다. 캐시를 삭제하거나, 잠시 후 다시 시도해 주세요."
|
||||
serverIsDead: "서버로부터 응답이 없습니다. 잠시 후 다시 시도해주세요."
|
||||
youShouldUpgradeClient: "이 페이지를 표시하려면 새로고침하여 새로운 버전의 클라이언트를 이용해 주십시오."
|
||||
enterListName: "리스트 이름을 입력"
|
||||
privacy: "프라이버시"
|
||||
makeFollowManuallyApprove: "팔로우를 수동으로 승인"
|
||||
@ -88,14 +95,18 @@ followRequestPending: "팔로우 허가 대기중"
|
||||
enterEmoji: "이모지 입력"
|
||||
renote: "Renote"
|
||||
unrenote: "Renote 취소"
|
||||
renoted: "Renote 하였습니다"
|
||||
cantRenote: "이 게시물은 Renote할 수 없습니다."
|
||||
cantReRenote: "Renote를 Renote할 수 없습니다."
|
||||
quote: "인용"
|
||||
pinnedNote: "고정해놓은 노트"
|
||||
pinned: "프로필에 고정"
|
||||
you: "당신"
|
||||
clickToShow: "클릭하여 보기"
|
||||
sensitive: "열람주의"
|
||||
add: "추가"
|
||||
reaction: "리액션"
|
||||
reactionSettingDescription: "리액션 선택 상자에 표시할 리액션을 설정합니다."
|
||||
reactionSettingDescription2: "끌어서 순서 변경, 클릭해서 삭제, +를 눌러서 추가할 수 있습니다."
|
||||
rememberNoteVisibility: "공개 범위를 기억하기"
|
||||
attachCancel: "첨부 취소"
|
||||
markAsSensitive: "열람주의로 설정"
|
||||
@ -118,6 +129,7 @@ editWidgets: "위젯 편집"
|
||||
editWidgetsExit: "편집 종료"
|
||||
customEmojis: "커스텀 이모지"
|
||||
emoji: "이모지"
|
||||
emojis: "이모지"
|
||||
emojiName: "이모지 이름"
|
||||
emojiUrl: "이모지 URL"
|
||||
addEmoji: "이모지 추가"
|
||||
@ -129,7 +141,7 @@ flagAsBotDescription: "이 계정을 자동화된 수단으로 운용할 경우
|
||||
flagAsCat: "나는 고양이다냥"
|
||||
flagAsCatDescription: "이 계정이 고양이라면 활성화 해주세요."
|
||||
autoAcceptFollowed: "팔로우 중인 유저로부터의 팔로우 요청을 자동 수락"
|
||||
addAcount: "계정 추가"
|
||||
addAccount: "계정 추가"
|
||||
loginFailed: "로그인에 실패했습니다"
|
||||
showOnRemote: "리모트에서 보기"
|
||||
general: "일반"
|
||||
@ -269,6 +281,7 @@ emptyDrive: "드라이브가 비어 있습니다"
|
||||
emptyFolder: "폴더가 비어 있습니다"
|
||||
unableToDelete: "삭제할 수 없습니다"
|
||||
inputNewFileName: "바꿀 파일명을 입력해 주세요"
|
||||
inputNewDescription: "새 캡션을 입력해 주세요"
|
||||
inputNewFolderName: "바꿀 폴더명을 입력해 주세요"
|
||||
circularReferenceFolder: "지정한 폴더가 이동할 폴더의 하위 폴더입니다."
|
||||
hasChildFilesOrFolders: "이 폴더는 비어있지 않기 때문에 삭제할 수 없습니다."
|
||||
@ -300,8 +313,8 @@ monthX: "{month}월"
|
||||
yearX: "{year}년"
|
||||
pages: "페이지"
|
||||
integration: "연동"
|
||||
connectSerice: "접속"
|
||||
disconnectSerice: "연결 끊기"
|
||||
connectService: "계정 연동"
|
||||
disconnectService: "계정 연동 해제"
|
||||
enableLocalTimeline: "로컬 타임라인 활성화"
|
||||
enableGlobalTimeline: "글로벌 타임라인 활성화"
|
||||
disablingTimelinesInfo: "특정 타임라인을 비활성화하더라도 관리자 및 모더레이터는 계속 사용할 수 있습니다."
|
||||
@ -315,11 +328,13 @@ driveCapacityPerRemoteAccount: "리모트 유저 한 명당 드라이브 용량"
|
||||
inMb: "메가바이트 단위"
|
||||
iconUrl: "아이콘 URL"
|
||||
bannerUrl: "배너 이미지 URL"
|
||||
backgroundImageUrl: "배경 이미지 URL"
|
||||
basicInfo: "기본 정보"
|
||||
pinnedUsers: "고정된 유저"
|
||||
pinnedUsersDescription: "\"발견하기\" 페이지 등에 고정하고 싶은 유저를 한 줄에 한 명씩 적습니다."
|
||||
pinnedPages: "고정한 페이지"
|
||||
pinnedPagesDescription: "인스턴스의 대문에 고정하고 싶은 페이지의 경로를 한 줄에 하나씩 적습니다."
|
||||
pinnedClipId: "고정할 클립의 ID"
|
||||
pinnedNotes: "고정해놓은 노트"
|
||||
hcaptcha: "hCaptcha"
|
||||
enableHcaptcha: "hCaptcha 활성화"
|
||||
@ -339,7 +354,6 @@ antennaExcludeKeywords: "제외할 키워드"
|
||||
antennaKeywordsDescription: "공백으로 구분하는 경우 AND, 줄바꿈으로 구분하는 경우 OR로 지정됩니다"
|
||||
notifyAntenna: "새로운 노트를 알림"
|
||||
withFileAntenna: "파일이 첨부된 노트만"
|
||||
serviceworker: "ServiceWorker"
|
||||
enableServiceworker: "ServiceWorker 사용"
|
||||
antennaUsersDescription: "유저명을 한 줄에 한 명씩 적습니다"
|
||||
caseSensitive: "대소문자를 구분"
|
||||
@ -428,6 +442,7 @@ signinWith: "{x}로 로그인"
|
||||
signinFailed: "로그인할 수 없습니다. 사용자명과 비밀번호를 확인하여 주십시오."
|
||||
tapSecurityKey: "보안 키를 터치"
|
||||
or: "혹은"
|
||||
language: "언어"
|
||||
uiLanguage: "UI 표시 언어"
|
||||
groupInvited: "그룹에 초대되었습니다"
|
||||
aboutX: "{x}에 대하여"
|
||||
@ -442,7 +457,7 @@ category: "카테고리"
|
||||
tags: "태그"
|
||||
docSource: "이 문서의 소스"
|
||||
createAccount: "계정 만들기"
|
||||
existingAcount: "기존 계정"
|
||||
existingAccount: "기존 계정"
|
||||
regenerate: "재생성"
|
||||
fontSize: "글자 크기"
|
||||
noFollowRequests: "처리되지 않은 팔로우 요청이 없습니다"
|
||||
@ -453,6 +468,7 @@ remote: "리모트"
|
||||
total: "합계"
|
||||
weekOverWeekChanges: "지난주보다"
|
||||
dayOverDayChanges: "어제보다"
|
||||
appearance: "모양"
|
||||
clientSettings: "클라이언트 설정"
|
||||
accountSettings: "계정 설정"
|
||||
promotion: "프로모션"
|
||||
@ -514,7 +530,9 @@ removeAllFollowing: "모든 팔로잉 해제"
|
||||
removeAllFollowingDescription: "{host}(으)로부터 모든 팔로잉을 해제합니다. 해당 인스턴스가 더 이상 존재하지 않게 된 경우 등에 실행해 주세요."
|
||||
userSuspended: "이 계정은 정지된 상태입니다."
|
||||
userSilenced: "이 계정은 사일런스된 상태입니다."
|
||||
sidebar: "사이드바"
|
||||
yourAccountSuspendedTitle: "계정이 정지되었습니다"
|
||||
yourAccountSuspendedDescription: "이 계정은 서버의 이용 약관을 위반하거나, 기타 다른 이유로 인해 정지되었습니다. 자세한 사항은 관리자에게 문의해 주십시오. 계정을 새로 생성하지 마십시오."
|
||||
menu: "메뉴"
|
||||
divider: "구분선"
|
||||
addItem: "항목 추가"
|
||||
rooms: "방"
|
||||
@ -534,13 +552,16 @@ disablePlayer: "플레이어 닫기"
|
||||
expandTweet: "트윗 확장하기"
|
||||
themeEditor: "테마 에디터"
|
||||
description: "설명"
|
||||
describeFile: "캡션 추가"
|
||||
enterFileDescription: "캡션 입력"
|
||||
author: "작성자"
|
||||
leaveConfirm: "저장하지 않은 변경사항이 있습니다. 취소하시겠습니까?"
|
||||
manage: "관리"
|
||||
plugins: "플러그인"
|
||||
pluginInstallWarn: "신뢰할 수 없는 플러그인은 설치하지 마십시오."
|
||||
deck: "덱"
|
||||
undeck: "덱 해제"
|
||||
useBlurEffectForModal: "모달에 흐림 효과 사용"
|
||||
useFullReactionPicker: "모든 기능이 포함된 리액션 선택기 사용"
|
||||
width: "폭"
|
||||
height: "높이"
|
||||
large: "크게"
|
||||
@ -555,8 +576,11 @@ pluginTokenRequestedDescription: "이 플러그인은 여기서 설정한 권한
|
||||
notificationType: "알림 유형"
|
||||
edit: "편집"
|
||||
useStarForReactionFallback: "알 수 없는 리액션 이모지 대신 ★ 사용"
|
||||
emailConfig: "메일 서버 설정"
|
||||
emailServer: "메일 서버"
|
||||
enableEmail: "이메일 송신 기능 활성화"
|
||||
emailConfigInfo: "가입 시 메일 주소 확인이나 비밀번호 초기화 시에 사용합니다."
|
||||
email: "이메일"
|
||||
emailAddress: "메일 주소"
|
||||
smtpConfig: "SMTP 서버 설정"
|
||||
smtpHost: "호스트"
|
||||
smtpPort: "포트"
|
||||
@ -567,9 +591,12 @@ smtpSecure: "SMTP 연결에 Implicit SSL/TTS 사용"
|
||||
smtpSecureInfo: "STARTTLS 사용 시에는 해제합니다."
|
||||
testEmail: "이메일 전송 테스트"
|
||||
wordMute: "단어 뮤트"
|
||||
instanceMute: "인스턴스 뮤트"
|
||||
userSaysSomething: "{name}님이 무언가를 말했습니다"
|
||||
makeActive: "활성화"
|
||||
display: "표시"
|
||||
copy: "복사"
|
||||
metrics: "통계"
|
||||
overview: "요약"
|
||||
logs: "로그"
|
||||
delayed: "지연"
|
||||
@ -578,13 +605,13 @@ channel: "채널"
|
||||
create: "생성"
|
||||
notificationSetting: "알림 설정"
|
||||
notificationSettingDesc: "표시할 알림의 종류를 선택해 주세요."
|
||||
useGlobalSetting: "글로벌 설정을 사용하기"
|
||||
useGlobalSettingDesc: "활성화하면 계정의 알림 설정이 적용되니다. 비활성화하면 개별적으로 설정할 수 있게 됩니다."
|
||||
other: "기타"
|
||||
regenerateLoginToken: "로그인 토큰을 재생성"
|
||||
regenerateLoginTokenDescription: "로그인할 때 사용되는 내부 토큰을 재생성합니다. 일반적으로 이 작업을 실행할 필요는 없습니다. 이 기능을 사용하면 이 계정으로 로그인한 모든 기기에서 로그아웃됩니다."
|
||||
setMultipleBySeparatingWithSpace: "공백으로 구분하여 여러 개 설정할 수 있습니다."
|
||||
fileIdOrUrl: "파일 ID 또는 URL"
|
||||
chatOpenBehavior: "대화를 열 때의 동작"
|
||||
behavior: "동작"
|
||||
sample: "예시"
|
||||
abuseReports: "신고"
|
||||
@ -592,8 +619,16 @@ reportAbuse: "신고"
|
||||
reportAbuseOf: "{name}을 신고하기"
|
||||
fillAbuseReportDescription: "신고하려는 이유를 자세히 알려주세요. 특정 게시물을 신고할 때에는 게시물의 URL도 포함해 주세요."
|
||||
abuseReported: "신고를 보냈습니다. 신고해 주셔서 감사합니다."
|
||||
reporteeOrigin: "피신고자"
|
||||
reporterOrigin: "신고자"
|
||||
send: "전송"
|
||||
abuseMarkAsResolved: "해결됨으로 표시"
|
||||
openInNewTab: "새 탭에서 열기"
|
||||
openInSideView: "사이드뷰로 열기"
|
||||
defaultNavigationBehaviour: "기본 탐색 동작"
|
||||
editTheseSettingsMayBreakAccount: "이 설정을 변경하면 계정이 손상될 수 있습니다."
|
||||
instanceTicker: "노트의 인스턴스 정보"
|
||||
waitingFor: "{x}을(를) 기다리고 있습니다"
|
||||
random: "랜덤"
|
||||
system: "시스템"
|
||||
switchUi: "UI 전환"
|
||||
@ -603,26 +638,244 @@ createNew: "새로 만들기"
|
||||
optional: "옵션"
|
||||
createNewClip: "새 클립 만들기"
|
||||
public: "공개"
|
||||
i18nInfo: "Misskey는 자원봉사자들에 의해 다양한 언어로 번역되고 있습니다. {link}에서 번역에 참가할 수 있습니다."
|
||||
manageAccessTokens: "액세스 토큰 관리"
|
||||
accountInfo: "계정 정보"
|
||||
notesCount: "노트 수"
|
||||
repliesCount: "답글 수"
|
||||
renotesCount: "Renote 수"
|
||||
repliedCount: "받은 답글 수"
|
||||
renotedCount: "받은 Renote 수"
|
||||
followingCount: "팔로우 수"
|
||||
followersCount: "팔로워 수"
|
||||
sentReactionsCount: "보낸 리액션 수"
|
||||
receivedReactionsCount: "받은 리액션 수"
|
||||
pollVotesCount: "투표한 횟수"
|
||||
pollVotedCount: "투표받은 횟수"
|
||||
yes: "예"
|
||||
no: "아니오"
|
||||
driveFilesCount: "드라이브 파일 개수"
|
||||
driveUsage: "드라이브 사용량"
|
||||
noCrawle: "검색엔진의 인덱싱 거부"
|
||||
noCrawleDescription: "검색엔진에 사용자 페이지, 노트, 페이지 등의 콘텐츠를 인덱싱되지 않게 합니다."
|
||||
lockedAccountInfo: "팔로우를 승인으로 승인받더라도 노트의 공개 범위를 '팔로워'로 하지 않는 한 누구나 당신의 노트를 볼 수 있습니다."
|
||||
alwaysMarkSensitive: "미디어를 항상 열람 주의로 설정"
|
||||
loadRawImages: "첨부한 이미지의 썸네일을 원본화질로 표시"
|
||||
disableShowingAnimatedImages: "움직이는 이미지를 자동으로 재생하지 않음"
|
||||
verificationEmailSent: "확인 메일을 발송하였습니다. 설정을 완료하려면 메일에 첨부된 링크를 확인해 주세요."
|
||||
notSet: "설정되지 않음"
|
||||
emailVerified: "메일 주소가 확인되었습니다."
|
||||
noteFavoritesCount: "즐겨찾기한 노트 수"
|
||||
pageLikesCount: "좋아요 한 Page 수"
|
||||
pageLikedCount: "Page에 받은 좋아요 수"
|
||||
reversiCount: "리버시 대국 횟수"
|
||||
contact: "연락처"
|
||||
useSystemFont: "시스템 기본 글꼴을 사용"
|
||||
clips: "클립"
|
||||
experimentalFeatures: "실험실"
|
||||
developer: "개발자"
|
||||
makeExplorable: "\"발견하기\"에 내 계정 보이기"
|
||||
makeExplorableDescription: "비활성화하면 \"발견하기\"에 나의 계정을 표시하지 않습니다."
|
||||
showGapBetweenNotesInTimeline: "타임라인의 노트 사이를 띄워서 표시"
|
||||
duplicate: "복제"
|
||||
left: "왼쪽"
|
||||
center: "가운데"
|
||||
wide: "넓게"
|
||||
narrow: "좁게"
|
||||
reloadToApplySetting: "이 설정을 적용하려면 페이지를 새로고침해야 합니다. 바로 새로고침하시겠습니까?"
|
||||
showTitlebar: "타이틀 바를 표시하기"
|
||||
clearCache: "캐시 비우기"
|
||||
onlineUsersCount: "{n}명이 접속 중"
|
||||
nUsers: "{n} 유저"
|
||||
nNotes: "{n} 노트"
|
||||
sendErrorReports: "오류 보고서 보내기"
|
||||
sendErrorReportsDescription: "이 설정을 활성화하면, 문제가 발생했을 때 오류에 대한 상세 정보를 Misskey에 보내어 더 나은 소프트웨어를 만드는 데에 도움을 줄 수 있습니다."
|
||||
myTheme: "내 테마"
|
||||
backgroundColor: "배경 색"
|
||||
accentColor: "강조 색상"
|
||||
textColor: "문자 색"
|
||||
saveAs: "다른 이름으로 저장"
|
||||
advanced: "고급"
|
||||
value: "값"
|
||||
createdAt: "생성된 날짜"
|
||||
updatedAt: "수정한 날짜"
|
||||
saveConfirm: "저장하시겠습니까?"
|
||||
deleteConfirm: "삭제하시겠습니까?"
|
||||
invalidValue: "올바른 값이 아닙니다."
|
||||
registry: "레지스트리"
|
||||
closeAccount: "계정 폐쇄"
|
||||
currentVersion: "현재 버전"
|
||||
latestVersion: "최신 버전"
|
||||
youAreRunningUpToDateClient: "사용 중인 클라이언트는 최신입니다."
|
||||
newVersionOfClientAvailable: "새로운 버전의 클라이언트를 이용할 수 있습니다."
|
||||
usageAmount: "사용량"
|
||||
capacity: "용량"
|
||||
inUse: "사용중"
|
||||
editCode: "코드 수정"
|
||||
apply: "적용"
|
||||
receiveAnnouncementFromInstance: "이 인스턴스의 알림을 이메일로 수신할게요"
|
||||
emailNotification: "메일 알림"
|
||||
publish: "게시"
|
||||
inChannelSearch: "채널에서 검색"
|
||||
useReactionPickerForContextMenu: "우클릭하여 리액션 선택기 열기"
|
||||
typingUsers: "{users} 님이 입력하고 있어요.."
|
||||
jumpToSpecifiedDate: "특정 날짜로 이동"
|
||||
showingPastTimeline: "과거의 타임라인을 표시하고 있어요"
|
||||
clear: "지우기"
|
||||
markAllAsRead: "모두 읽은 상태로 표시"
|
||||
goBack: "뒤로"
|
||||
unlikeConfirm: "좋아요를 취소할까요?"
|
||||
fullView: "전체 화면"
|
||||
quitFullView: "전체 화면 해제"
|
||||
addDescription: "설명 추가"
|
||||
userPagePinTip: "각 노트의 메뉴에서 「프로필에 고정」을 선택하는 것으로, 여기에 노트를 표시해 둘 수 있어요."
|
||||
notSpecifiedMentionWarning: "수신자가 선택되지 않은 멘션이 있어요"
|
||||
info: "정보"
|
||||
userInfo: "유저 정보"
|
||||
unknown: "알 수 없음"
|
||||
onlineStatus: "온라인 상태"
|
||||
hideOnlineStatus: "온라인 상태 숨기기"
|
||||
hideOnlineStatusDescription: "온라인 상태를 숨기면, 검색과 같은 일부 기능에 영향을 미칠 수 있습니다."
|
||||
online: "온라인"
|
||||
active: "최근에 활동함"
|
||||
offline: "오프라인"
|
||||
notRecommended: "추천하지 않음"
|
||||
botProtection: "Bot 방어"
|
||||
instanceBlocking: "인스턴스 차단"
|
||||
selectAccount: "계정 선택"
|
||||
enabled: "활성화"
|
||||
disabled: "비활성화"
|
||||
quickAction: "빠른 동작"
|
||||
user: "유저"
|
||||
administration: "관리"
|
||||
accounts: "계정"
|
||||
switch: "전환"
|
||||
noMaintainerInformationWarning: "관리자 정보가 설정되어 있지 않습니다."
|
||||
noBotProtectionWarning: "Bot 방어가 설정되어 있지 않습니다."
|
||||
configure: "설정하기"
|
||||
postToGallery: "갤러리에 업로드"
|
||||
gallery: "갤러리"
|
||||
recentPosts: "최근 포스트"
|
||||
popularPosts: "인기 포스트"
|
||||
shareWithNote: "노트로 공유"
|
||||
ads: "광고"
|
||||
expiration: "기한"
|
||||
memo: "메모"
|
||||
priority: "우선순위"
|
||||
high: "높음"
|
||||
middle: "보통"
|
||||
low: "낮음"
|
||||
emailNotConfiguredWarning: "메일 주소가 설정되어 있지 않습니다."
|
||||
ratio: "비율"
|
||||
previewNoteText: "본문 미리보기"
|
||||
customCss: "CSS 사용자화"
|
||||
customCssWarn: "이 설정은 기능을 알고 있는 경우에만 사용해야 합니다. 잘못된 값을 입력하면 클라이언트가 정상적으로 작동하지 않을 수 있습니다."
|
||||
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: "해결되지 않음"
|
||||
breakFollow: "팔로워 해제"
|
||||
itsOn: "켜짐"
|
||||
itsOff: "꺼짐"
|
||||
emailRequiredForSignup: "가입할 때 이메일 주소 입력을 필수로 하기"
|
||||
unread: "읽지 않음"
|
||||
filter: "필터"
|
||||
controlPanel: "제어판"
|
||||
manageAccounts: "계정 관리"
|
||||
makeReactionsPublic: "리액션 목록을 공개하기"
|
||||
makeReactionsPublicDescription: "나의 리액션을 누구나 볼 수 있게 합니다."
|
||||
classic: "클래식"
|
||||
muteThread: "이 글타래를 뮤트"
|
||||
unmuteThread: "글타래 뮤트 해제"
|
||||
ffVisibility: "내 인맥의 공개 범위"
|
||||
ffVisibilityDescription: "나의 팔로우와 팔로워 정보에 대한 공개 범위를 설정할 수 있습니다."
|
||||
continueThread: "이 글타래 이어서 보기"
|
||||
deleteAccountConfirm: "계정이 삭제되고 되돌릴 수 없게 됩니다. 계속하시겠습니까? "
|
||||
incorrectPassword: "비밀번호가 올바르지 않습니다."
|
||||
voteConfirm: "\"{choice}\"에 투표하시겠습니까?"
|
||||
hide: "숨기기"
|
||||
_emailUnavailable:
|
||||
used: "이 메일 주소는 사용중입니다"
|
||||
format: "형식이 올바르지 않습니다"
|
||||
disposable: "임시 이메일 주소는 사용할 수 없습니다"
|
||||
mx: "메일 서버가 올바르지 않습니다"
|
||||
smtp: "메일 서버가 응답하지 않습니다"
|
||||
_ffVisibility:
|
||||
public: "공개"
|
||||
followers: "팔로워에게만 공개"
|
||||
private: "비공개"
|
||||
_signup:
|
||||
almostThere: "거의 다 끝났습니다"
|
||||
emailAddressInfo: "당신이 사용하고 있는 이메일 주소를 입력해 주세요. 이메일 주소는 다른 유저에게 공개되지 않습니다."
|
||||
emailSent: "입력하신 메일 주소({email})로 확인 메일을 보내드렸습니다. 가입을 완료하시려면 보내드린 메일에 있는 링크로 접속해 주세요."
|
||||
_accountDelete:
|
||||
accountDelete: "계정 삭제"
|
||||
mayTakeTime: "계정 삭제는 서버에 부하를 가하기 때문에, 작성한 콘텐츠나 업로드한 파일의 수가 많으면 완료까지 시간이 걸릴 수 있습니다."
|
||||
sendEmail: "계정 삭제가 완료되면 등록된 이메일 주소로 알림을 보냅니다."
|
||||
requestAccountDelete: "계정 삭제 요청"
|
||||
started: "삭제 작업이 시작되었습니다."
|
||||
inProgress: "삭제 진행 중"
|
||||
_ad:
|
||||
back: "뒤로"
|
||||
reduceFrequencyOfThisAd: "이 광고의 표시 빈도 낮추기"
|
||||
_forgotPassword:
|
||||
enterEmail: "여기에 계정에 등록한 메일 주소를 입력해 주세요. 입력한 메일 주소로 비밀번호 재설정 링크를 발송합니다."
|
||||
ifNoEmail: "메일 주소를 등록하지 않은 경우, 관리자에 문의해 주십시오."
|
||||
contactAdmin: "이 인스턴스에서는 메일 기능이 지원되지 않습니다. 비밀번호를 재설정하려면 관리자에게 문의해 주십시오."
|
||||
_gallery:
|
||||
my: "내 갤러리"
|
||||
liked: "좋아요 한 갤러리"
|
||||
like: "좋아요!"
|
||||
unlike: "좋아요 취소"
|
||||
_email:
|
||||
_follow:
|
||||
title: "새로운 팔로워가 있습니다"
|
||||
_receiveFollowRequest:
|
||||
title: "팔로우 요청을 받았습니다"
|
||||
_plugin:
|
||||
install: "플러그인 설치"
|
||||
installWarn: "신뢰할 수 없는 플러그인은 설치하지 않는 것이 좋습니다."
|
||||
manage: "플러그인 관리"
|
||||
_registry:
|
||||
scope: "범위"
|
||||
key: "키"
|
||||
keys: "키"
|
||||
domain: "도메인"
|
||||
createKey: "키 생성"
|
||||
_aboutMisskey:
|
||||
about: "Misskey는 syuilo에 의해서 2014년부터 개발되어 온 오픈소스 소프트웨어 입니다."
|
||||
contributors: "주요 기여자"
|
||||
allContributors: "모든 기여자"
|
||||
source: "소스 코드"
|
||||
translation: "Misskey를 번역하기"
|
||||
donate: "Misskey에 기부하기"
|
||||
morePatrons: "이 외에도 다른 많은 분들이 도움을 주시고 계십니다. 감사합니다🥰"
|
||||
patrons: "후원자"
|
||||
_nsfw:
|
||||
respect: "열람주의로 설정된 미디어 숨기기"
|
||||
ignore: "열람 주의 미디어 항상 표시"
|
||||
force: "미디어 항상 숨기기"
|
||||
_mfm:
|
||||
cheatSheet: "MFM 도움말"
|
||||
intro: "MFM는 Misskey의 다양한 곳에서 사용할 수 있는 전용 마크업 언어입니다. 여기에서는 MFM에서 사용할 수 있는 구문을 확인할 수 있습니다."
|
||||
dummy: "Misskey로 연합우주의 세계가 펼쳐집니다"
|
||||
mention: "멘션"
|
||||
mentionDescription: "골뱅이표(@) 뒤에 사용자명을 넣어 특정 유저를 나타낼 수 있습니다."
|
||||
hashtag: "해시태그"
|
||||
@ -630,25 +883,59 @@ _mfm:
|
||||
url: "URL"
|
||||
urlDescription: "URL을 나타낼 수 있습니다."
|
||||
link: "링크"
|
||||
linkDescription: "문장의 특정 범위를 URL로 표시합니다."
|
||||
bold: "굵음/볼드체"
|
||||
boldDescription: "문자를 굵게 강조합니다."
|
||||
small: "눈에 띄지 않음"
|
||||
smallDescription: "내용을 작고 연하게 보이게 합니다."
|
||||
center: "가운데 정렬"
|
||||
centerDescription: "내용을 가운데 정렬로 보이게 합니다."
|
||||
inlineCode: "코드(인라인)"
|
||||
inlineCodeDescription: "여러 행의 코드를 문법 강조를 적용하여 인라인으로 표시합니다."
|
||||
blockCode: "코드(블록)"
|
||||
blockCodeDescription: "여러 행의 코드를 문법 강조를 적용하여 블록으로 표시합니다."
|
||||
inlineMath: "수식(인라인)"
|
||||
inlineMathDescription: "수식(KaTeX)를 인라인으로 보이게 합니다."
|
||||
blockMath: "수식(블록)"
|
||||
blockMathDescription: "여러 줄의 수식(KaTeX)를 블록으로 보이게 합니다."
|
||||
quote: "인용"
|
||||
quoteDescription: "내용을 인용문으로 표시합니다."
|
||||
emoji: "커스텀 이모지"
|
||||
emojiDescription: "커스텀 이모지의 이름을 쌍점(:)으로 감싸서 커스텀 이모지를 사용합니다."
|
||||
search: "검색"
|
||||
searchDescription: "주어진 키워드가 입력된 검색창을 보이게 합니다."
|
||||
flip: "플립"
|
||||
flipDescription: "내용을 상하 또는 좌우로 반전시킵니다."
|
||||
jelly: "애니메이션 (젤리)"
|
||||
jellyDescription: "젤리처럼 탱글탱글한 느낌의 효과를 줍니다."
|
||||
tada: "애니메이션 (짠!)"
|
||||
tadaDescription: "짠! 하는 느낌의 효과를 줍니다."
|
||||
jump: "애니메이션(점프)"
|
||||
jumpDescription: "펄쩍 뛸 듯한 느낌의 효과를 줍니다."
|
||||
bounce: "애니메이션 (바운스)"
|
||||
bounceDescription: "통통 튀는 느낌의 효과를 줍니다."
|
||||
shake: "애니메이션 (부들부들)"
|
||||
shakeDescription: "부들부들 떠는 느낌의 효과를 줍니다."
|
||||
twitch: "애니메이션 (경련)"
|
||||
twitchDescription: "격하게 흔들리는 느낌의 효과를 줍니다."
|
||||
spin: "애니메이션 (회전)"
|
||||
spinDescription: "회전 효과를 줍니다."
|
||||
x2: "크게"
|
||||
x2Description: "내용을 크게 표시합니다."
|
||||
x3: "더 크게"
|
||||
x3Description: "내용을 더 크게 표시합니다."
|
||||
x4: "매우 크게"
|
||||
x4Description: "내용을 매우 크게 표시합니다."
|
||||
blur: "흐림"
|
||||
blurDescription: "내용이 흐리게 보입니다. 마우스를 위에 올려두면 내용이 보입니다."
|
||||
font: "폰트"
|
||||
fontDescription: "내용의 글꼴을 지정할 수 있습니다."
|
||||
rainbow: "무지개"
|
||||
rainbowDescription: "내용을 무지개로 표시합니다."
|
||||
sparkle: "반짝반짝"
|
||||
sparkleDescription: "반짝이는 파티클 효과를 추가합니다."
|
||||
rotate: "회전"
|
||||
rotateDescription: "지정한 각도로 회전시킵니다."
|
||||
_reversi:
|
||||
reversi: "리버시"
|
||||
gameSettings: "대국 설정"
|
||||
@ -660,7 +947,10 @@ _reversi:
|
||||
thisGameIsStartedSoon: "잠시 후에 대국이 시작됩니다"
|
||||
waitingForOther: "상대의 준비가 완료될 때까지 기다리고 있습니다"
|
||||
waitingForMe: "당신의 준비 완료를 기다리고 있습니다"
|
||||
waitingBoth: "준비해 주세요"
|
||||
ready: "준비 완료"
|
||||
cancelReady: "준비 취소"
|
||||
opponentTurn: "상대의 차례입니다"
|
||||
myTurn: "당신의 차례입니다"
|
||||
turnOf: "{name}님의 차례입니다"
|
||||
pastTurnOf: "{name}님의 차례"
|
||||
@ -683,27 +973,48 @@ _instanceTicker:
|
||||
none: "보이지 않음"
|
||||
remote: "리모트 유저에게만 보이기"
|
||||
always: "항상 보이기"
|
||||
_serverDisconnectedBehavior:
|
||||
reload: "자동으로 새로고침"
|
||||
dialog: "경고창 표시"
|
||||
quiet: "조용히 경고"
|
||||
_channel:
|
||||
create: "채널 생성"
|
||||
edit: "채널 편집"
|
||||
setBanner: "배너 설정"
|
||||
removeBanner: "배너 삭제"
|
||||
featured: "트렌드"
|
||||
owned: "관리중"
|
||||
following: "팔로잉"
|
||||
usersCount: "{n}명 참여 중"
|
||||
notesCount: "{n}노트"
|
||||
_sidebar:
|
||||
icon: "아이콘"
|
||||
_menuDisplay:
|
||||
sideFull: "가로"
|
||||
sideIcon: "가로(아이콘)"
|
||||
top: "상단"
|
||||
hide: "숨기기"
|
||||
_wordMute:
|
||||
muteWords: "뮤트할 단어"
|
||||
muteWordsDescription: "공백으로 구분하는 경우 AND, 줄바꿈으로 구분하는 경우 OR로 지정됩니다。"
|
||||
muteWordsDescription2: "정규 표현식을 사용하려면 키워드를 빗금표(/)로 감싸 주세요."
|
||||
softDescription: "지정한 조건의 노트를 타임라인에서 숨깁니다."
|
||||
hardDescription: "지정한 조건의 노트를 타임라인에 추가하지 않습니다. 타임라인에 추가되지 않은 노트는 조건을 변경해도 표시되지 않습니다."
|
||||
soft: "보통"
|
||||
hard: "보다 높은 수준"
|
||||
mutedNotes: "뮤트된 노트"
|
||||
_instanceMute:
|
||||
instanceMuteDescription: "뮤트한 인스턴스에서 오는 답글을 포함한 모든 노트와 Renote를 뮤트합니다."
|
||||
instanceMuteDescription2: "한 줄에 하나씩 입력해 주세요"
|
||||
title: "지정한 인스턴스의 노트를 숨깁니다."
|
||||
heading: "뮤트할 인스턴스"
|
||||
_theme:
|
||||
explore: "테마 찾아보기"
|
||||
install: "테마 설치"
|
||||
manage: "테마 관리"
|
||||
code: "테마 코드"
|
||||
description: "설명"
|
||||
installed: "{name} 테마가 설치되었습니다"
|
||||
installedThemes: "설치된 테마"
|
||||
builtinThemes: "표준 테마"
|
||||
alreadyInstalled: "이미 설치된 테마입니다"
|
||||
invalid: "테마 형식이 올바르지 않습니다"
|
||||
make: "테마 만들기"
|
||||
@ -718,13 +1029,57 @@ _theme:
|
||||
func: "함수"
|
||||
funcKind: "함수 종류"
|
||||
argument: "매개변수"
|
||||
basedProp: "기준으로 할 속성 이름"
|
||||
alpha: "불투명도"
|
||||
darken: "어두움"
|
||||
lighten: "밝음"
|
||||
inputConstantName: "상수 이름을 입력하세요"
|
||||
importInfo: "여기에 테마 코드를 붙여 넣어 에디터로 불러올 수 있습니다."
|
||||
deleteConstantConfirm: "상수 {const}를 삭제하시겠습니까?"
|
||||
keys:
|
||||
accent: "강조 색상"
|
||||
bg: "배경"
|
||||
fg: "텍스트"
|
||||
focus: "포커스"
|
||||
indicator: "인디케이터"
|
||||
panel: "패널"
|
||||
shadow: "그림자"
|
||||
header: "헤더"
|
||||
navBg: "사이드바 배경"
|
||||
navFg: "사이드바 텍스트"
|
||||
navHoverFg: "사이드바 텍스트 (호버)"
|
||||
navActive: "사이드바 텍스트 (활성)"
|
||||
navIndicator: "사이드바 인디케이터"
|
||||
link: "링크"
|
||||
hashtag: "해시태그"
|
||||
mention: "멘션"
|
||||
mentionMe: "나에게 보낸 멘션"
|
||||
renote: "Renote"
|
||||
modalBg: "모달 배경"
|
||||
divider: "구분선"
|
||||
scrollbarHandle: "스크롤바 핸들"
|
||||
scrollbarHandleHover: "스크롤바 핸들 (호버)"
|
||||
dateLabelFg: "날짜 레이블 텍스트"
|
||||
infoBg: "정보창 배경"
|
||||
infoFg: "정보창 텍스트"
|
||||
infoWarnBg: "경고창 배경"
|
||||
infoWarnFg: "경고창 텍스트"
|
||||
cwBg: "CW 버튼 배경"
|
||||
cwFg: "CW 버튼 텍스트"
|
||||
cwHoverBg: "CW 버튼 배경 (호버)"
|
||||
toastBg: "알림창 배경"
|
||||
toastFg: "알림창 텍스트"
|
||||
buttonBg: "버튼 배경"
|
||||
buttonHoverBg: "버튼 배경 (호버)"
|
||||
inputBorder: "입력 필드 테두리"
|
||||
listItemHoverBg: "리스트 항목 배경 (호버)"
|
||||
driveFolderBg: "드라이브 폴더 배경"
|
||||
wallpaperOverlay: "배경화면 오버레이"
|
||||
badge: "배지"
|
||||
messageBg: "채팅 배경"
|
||||
accentDarken: "강조 색상 (어두움)"
|
||||
accentLighten: "강조 색상 (밝음)"
|
||||
fgHighlighted: "강조된 텍스트"
|
||||
_sfx:
|
||||
note: "새 노트"
|
||||
noteMy: "내 노트"
|
||||
@ -732,6 +1087,9 @@ _sfx:
|
||||
chat: "대화"
|
||||
chatBg: "대화 (백그라운드)"
|
||||
antenna: "안테나 수신"
|
||||
channel: "채널 알림"
|
||||
reversiPutBlack: "리버시: 흑돌을 두었을 때"
|
||||
reversiPutWhite: "리버시: 백돌을 두었을 때"
|
||||
_ago:
|
||||
unknown: "알 수 없음"
|
||||
future: "미래"
|
||||
@ -804,9 +1162,15 @@ _permissions:
|
||||
"read:pages": "페이지를 봅니다"
|
||||
"write:pages": "페이지를 수정합니다"
|
||||
"read:page-likes": "페이지의 좋아요를 확인합니다"
|
||||
"write:page-likes": "페이지의 좋아요를 추가하거나 삭제합니다"
|
||||
"write:page-likes": "페이지에 좋아요를 추가하거나 취소합니다"
|
||||
"read:user-groups": "유저 그룹을 조회합니다"
|
||||
"write:user-groups": "유저 그룹을 만들거나, 초대하거나, 이름을 변경하거나, 양도하거나, 삭제합니다"
|
||||
"read:channels": "채널을 보기"
|
||||
"write:channels": "채널을 추가하거나 삭제합니다"
|
||||
"read:gallery": "갤러리를 봅니다"
|
||||
"write:gallery": "갤러리를 추가하거나 삭제합니다"
|
||||
"read:gallery-likes": "갤러리의 좋아요를 확인합니다"
|
||||
"write:gallery-likes": "갤러리에 좋아요를 추가하거나 취소합니다"
|
||||
_auth:
|
||||
shareAccess: "\"{name}\" 이 계정에 접근하는 것을 허용하시겠습니까?"
|
||||
shareAccessAsk: "이 애플리케이션이 계정에 접근하는 것을 허용하시겠습니까?"
|
||||
@ -841,8 +1205,13 @@ _widgets:
|
||||
digitalClock: "디지털 시계"
|
||||
federation: "연합"
|
||||
postForm: "글 입력란"
|
||||
slideshow: "슬라이드 쇼"
|
||||
button: "버튼"
|
||||
onlineUsers: "온라인 유저"
|
||||
jobQueue: "작업 대기열"
|
||||
serverMetric: "서버 통계"
|
||||
aiscript: "AiScript 콘솔"
|
||||
aichan: "아이"
|
||||
_cw:
|
||||
hide: "숨기기"
|
||||
show: "더 보기"
|
||||
@ -884,6 +1253,7 @@ _visibility:
|
||||
_postForm:
|
||||
replyPlaceholder: "이 노트에 답글..."
|
||||
quotePlaceholder: "이 노트를 인용..."
|
||||
channelPlaceholder: "채널에 게시하기..."
|
||||
_placeholders:
|
||||
a: "지금 무엇을 하고 있나요?"
|
||||
b: "무슨 일이 일어나고 있나요?"
|
||||
@ -896,14 +1266,21 @@ _profile:
|
||||
username: "유저명"
|
||||
description: "자기소개"
|
||||
youCanIncludeHashtags: "해시 태그를 포함할 수 있습니다."
|
||||
metadata: "추가 정보"
|
||||
metadataEdit: "추가 정보 편집"
|
||||
metadataDescription: "프로필에 최대 4개의 추가 정보를 표시할 수 있어요"
|
||||
metadataLabel: "라벨"
|
||||
metadataContent: "내용"
|
||||
changeAvatar: "아바타 이미지 변경"
|
||||
changeBanner: "배너 이미지 변경"
|
||||
_exportOrImport:
|
||||
allNotes: "모든 노트"
|
||||
followingList: "팔로잉"
|
||||
muteList: "뮤트"
|
||||
blockingList: "차단"
|
||||
userLists: "리스트"
|
||||
excludeMutingUsers: "뮤트한 유저 제외하기"
|
||||
excludeInactiveUsers: "휴면 중인 계정 제외하기"
|
||||
_charts:
|
||||
federationInstancesIncDec: "연합 인스턴스 수 증감"
|
||||
federationInstancesTotal: "연합 인스턴스 수 합계"
|
||||
@ -1004,6 +1381,7 @@ _pages:
|
||||
created: "페이지를 만들었습니다"
|
||||
updated: "페이지를 수정했습니다"
|
||||
deleted: "페이지가 삭제되었습니다"
|
||||
pageSetting: "페이지 설정"
|
||||
nameAlreadyExists: "지정한 페이지 URL이 이미 존재합니다"
|
||||
invalidNameTitle: "유효하지 않은 페이지 URL입니다"
|
||||
invalidNameText: "비어있지 않은지 확인해주세요"
|
||||
@ -1014,6 +1392,7 @@ _pages:
|
||||
unlike: "좋아요 해제"
|
||||
my: "내 페이지"
|
||||
liked: "좋아요한 페이지"
|
||||
featured: "인기"
|
||||
inspector: "인스펙터"
|
||||
contents: "콘텐츠"
|
||||
content: "페이지 블록"
|
||||
@ -1069,7 +1448,10 @@ _pages:
|
||||
id: "캔버스 ID"
|
||||
width: "폭"
|
||||
height: "높이"
|
||||
note: "노트필기"
|
||||
_note:
|
||||
id: "노트 ID"
|
||||
idDescription: "노트 URL을 붙여넣어 설정할 수도 있습니다."
|
||||
detailed: "세부 정보 보기"
|
||||
switch: "스위치"
|
||||
_switch:
|
||||
@ -1292,19 +1674,30 @@ _notification:
|
||||
youGotQuote: "{name}님이 인용함"
|
||||
youRenoted: "{name}님이 Renote"
|
||||
youGotPoll: "{name}님이 투표함"
|
||||
youGotMessagingMessageFromUser: "{name} 님이 보낸 채팅이 있어요"
|
||||
youGotMessagingMessageFromGroup: "{name}에서 보낸 채팅이 있어요"
|
||||
youWereFollowed: "새로운 팔로워가 있습니다"
|
||||
youReceivedFollowRequest: "새로운 팔로우 요청이 있습니다"
|
||||
yourFollowRequestAccepted: "팔로우 요청이 수락되었습니다"
|
||||
youWereInvitedToGroup: "그룹에 초대되었습니다"
|
||||
_types:
|
||||
all: "전부"
|
||||
follow: "팔로잉"
|
||||
mention: "멘션"
|
||||
reply: "답글"
|
||||
renote: "Renote"
|
||||
quote: "인용"
|
||||
reaction: "리액션"
|
||||
pollVote: "투표 참여"
|
||||
receiveFollowRequest: "팔로우 요청을 받았을 때"
|
||||
followRequestAccepted: "팔로우 요청이 승인되었을 때"
|
||||
groupInvited: "그룹에 초대되었을 때"
|
||||
app: "연동된 앱을 통한 알림"
|
||||
_deck:
|
||||
alwaysShowMainColumn: "메인 칼럼 항상 표시"
|
||||
columnAlign: "칼럼 정렬"
|
||||
columnMargin: "칼럼 간 여백"
|
||||
columnHeaderHeight: "칼럼 헤더 폭"
|
||||
addColumn: "칼럼 추가"
|
||||
swapLeft: "왼쪽으로 이동"
|
||||
swapRight: "오른쪽으로 이동"
|
||||
@ -1312,7 +1705,9 @@ _deck:
|
||||
swapDown: "아래로 이동"
|
||||
stackLeft: "왼쪽에 쌓기"
|
||||
popRight: "오른쪽으로 빼기"
|
||||
profile: "프로파일"
|
||||
_columns:
|
||||
main: "메인"
|
||||
widgets: "위젯"
|
||||
notifications: "알림"
|
||||
tl: "타임라인"
|
||||
|
@ -1,2 +1,336 @@
|
||||
---
|
||||
_lang_: "Nederlands"
|
||||
headlineMisskey: "Netwerk verbonden door notities"
|
||||
introMisskey: "Welkom! Misskey is een open source, gedecentraliseerde microblogdienst.\nMaak \"notities\" om je gedachten te delen met iedereen om je heen. 📡\nMet \"reacties\" kun je ook snel je mening geven over berichten van anderen. 👍\nLaten we een nieuwe wereld verkennen! 🚀"
|
||||
monthAndDay: "{day} {month}"
|
||||
search: "Zoeken"
|
||||
notifications: "Meldingen"
|
||||
username: "Gebruikersnaam"
|
||||
password: "Wachtwoord"
|
||||
forgotPassword: "Wachtwoord vergeten"
|
||||
fetchingAsApObject: "Ophalen vanuit de Fediverse"
|
||||
ok: "Ok"
|
||||
gotIt: "Begrepen"
|
||||
cancel: "Annuleren"
|
||||
enterUsername: "Voer een gebruikersnaam in"
|
||||
renotedBy: "Hergedeeld door {user}"
|
||||
noNotes: "Geen notities"
|
||||
noNotifications: "Geen meldingen"
|
||||
instance: "Server"
|
||||
settings: "Instellingen"
|
||||
basicSettings: "Basisinstellingen"
|
||||
otherSettings: "Overige instellingen"
|
||||
openInWindow: "In een venster openen"
|
||||
profile: "Profiel"
|
||||
timeline: "Tijdlijn"
|
||||
noAccountDescription: "Deze gebruiker heeft nog geen bio geschreven"
|
||||
login: "Inloggen"
|
||||
loggingIn: "Aan het inloggen"
|
||||
logout: "Afmelden"
|
||||
signup: "Registreren"
|
||||
uploading: "Bezig met uploaden"
|
||||
save: "Opslaan"
|
||||
users: "Gebruikers"
|
||||
addUser: "Toevoegen gebruiker"
|
||||
favorite: "Favorieten"
|
||||
favorites: "Toevoegen aan favorieten"
|
||||
unfavorite: "Verwijderen uit favorieten"
|
||||
favorited: "Toegevoegd aan favorieten."
|
||||
alreadyFavorited: "Al toegevoegd aan favorieten"
|
||||
cantFavorite: "Kon niet toevoegen aan favorieten"
|
||||
pin: "Vastmaken aan profielpagina"
|
||||
unpin: "Losmaken van profielpagina"
|
||||
copyContent: "Kopiëren inhoud"
|
||||
copyLink: "Kopiëren link"
|
||||
delete: "Verwijderen"
|
||||
deleteAndEdit: "Verwijderen en bewerken"
|
||||
deleteAndEditConfirm: "Weet je zeker dat je deze notitie wilt verwijderen en dan bewerken? Je verliest alle reacties, herdelingen en antwoorden erop."
|
||||
addToList: "Aan lijst toevoegen"
|
||||
sendMessage: "Verstuur bericht"
|
||||
copyUsername: "Kopiëren gebruikersnaam "
|
||||
searchUser: "Zoeken een gebruiker"
|
||||
reply: "Antwoord"
|
||||
loadMore: "Laad meer"
|
||||
showMore: "Toon meer"
|
||||
youGotNewFollower: "volgde jou"
|
||||
receiveFollowRequest: "Volgverzoek ontvangen"
|
||||
followRequestAccepted: "Volgverzoek geaccepteerd"
|
||||
mention: "Vermelding"
|
||||
mentions: "Vermeldingen"
|
||||
directNotes: "Directe notities"
|
||||
importAndExport: "Import / export"
|
||||
import: "Import"
|
||||
export: "Export"
|
||||
files: "Bestanden"
|
||||
download: "Downloaden"
|
||||
driveFileDeleteConfirm: "Weet je zeker dat je het bestand \"{name}\" wilt verwijderen? Notities met dit bestand als bijlage worden ook verwijderd."
|
||||
unfollowConfirm: "Weet je zeker dat je {name} wilt ontvolgen?"
|
||||
exportRequested: "Je hebt een export aangevraagd. Dit kan een tijdje duren. Het wordt toegevoegd aan je Drive zodra het is voltooid."
|
||||
importRequested: "Je hebt een import aangevraagd. Dit kan even duren."
|
||||
lists: "Lijsten"
|
||||
noLists: "Je hebt geen lijsten"
|
||||
note: "Notitie"
|
||||
notes: "Notities"
|
||||
following: "Volgend"
|
||||
followers: "Volgers"
|
||||
followsYou: "Volgt jou"
|
||||
createList: "Creëer lijst"
|
||||
manageLists: "Beheren lijsten"
|
||||
error: "Fout"
|
||||
somethingHappened: "Er is iets misgegaan."
|
||||
retry: "Probeer opnieuw"
|
||||
pageLoadError: "Pagina laden mislukt"
|
||||
pageLoadErrorDescription: "Dit wordt normaal gesproken veroorzaakt door netwerkfouten of door de cache van de browser. Probeer de cache te wissen en probeer het na een tijdje wachten opnieuw."
|
||||
serverIsDead: "De server reageert niet. Wacht even en probeer het opnieuw."
|
||||
youShouldUpgradeClient: "Werk je client bij om deze pagina te zien."
|
||||
enterListName: "Voer de naam van de lijst in"
|
||||
privacy: "Privacy"
|
||||
makeFollowManuallyApprove: "Volgverzoeken vergen een goedkeuring"
|
||||
defaultNoteVisibility: "Standaard zichtbaarheid"
|
||||
follow: "Volgen"
|
||||
followRequest: "Verzoek om te mogen volgen"
|
||||
followRequests: "Volgverzoeken"
|
||||
unfollow: "Ontvolgen"
|
||||
followRequestPending: "Wachten op goedkeuring volgverzoek"
|
||||
enterEmoji: "Voer een emoji in"
|
||||
renote: "Herdelen"
|
||||
unrenote: "Stop herdelen"
|
||||
renoted: "Herdeeld"
|
||||
cantRenote: "Dit bericht kan niet worden herdeeld"
|
||||
cantReRenote: "Een herdeling kan niet worden herdeeld"
|
||||
quote: "Quote"
|
||||
pinnedNote: "Vastgemaakte notitie"
|
||||
pinned: "Vastmaken aan profielpagina"
|
||||
you: "Jij"
|
||||
clickToShow: "Klik om te bekijken"
|
||||
sensitive: "NSFW"
|
||||
add: "Toevoegen"
|
||||
reaction: "Reacties"
|
||||
reactionSettingDescription2: "Sleep om opnieuw te ordenen, Klik om te verwijderen, Druk op \"+\" om toe te voegen"
|
||||
rememberNoteVisibility: "Vergeet niet de notitie zichtbaarheidsinstellingen"
|
||||
attachCancel: "Verwijder bijlage"
|
||||
markAsSensitive: "Markeren als NSFW"
|
||||
unmarkAsSensitive: "Geen NSFW"
|
||||
enterFileName: "Invoeren bestandsnaam"
|
||||
mute: "Dempen"
|
||||
unmute: "Stop dempen"
|
||||
block: "Blokkeren"
|
||||
unblock: "Deblokkeren"
|
||||
suspend: "Opschorten"
|
||||
unsuspend: "Heractiveren"
|
||||
blockConfirm: "Weet je zeker dat je dit account wil blokkeren?"
|
||||
searchWith: "Zoeken: {q}"
|
||||
youHaveNoLists: "Je hebt geen lijsten"
|
||||
followConfirm: "Weet je zeker dat je {name} wilt volgen?"
|
||||
proxyAccount: "Proxy account"
|
||||
proxyAccountDescription: "Een proxy-account is een account dat onder bepaalde voorwaarden fungeert als externe volger voor gebruikers. Als een gebruiker bijvoorbeeld een externe gebruiker aan de lijst toevoegt, wordt de activiteit van de externe gebruiker niet aan de server geleverd als geen lokale gebruiker die gebruiker volgt, dus het proxy-account volgt in plaats daarvan."
|
||||
host: "Server"
|
||||
selectUser: "Kies een gebruiker"
|
||||
recipient: "Ontvanger"
|
||||
annotation: "Reacties"
|
||||
federation: "Federatie"
|
||||
instances: "Server"
|
||||
registeredAt: "Geregistreerd op"
|
||||
latestRequestSentAt: "Laatste aanvraag verstuurd"
|
||||
latestRequestReceivedAt: "Laatste aanvraag ontvangen"
|
||||
latestStatus: "Laatste status"
|
||||
storageUsage: "Gebruikte opslagruimte"
|
||||
charts: "Grafieken"
|
||||
perHour: "Per uur"
|
||||
perDay: "Per dag"
|
||||
stopActivityDelivery: "Stop met versturen activiteiten"
|
||||
blockThisInstance: "Blokkeer deze server"
|
||||
operations: "Verwerkingen"
|
||||
software: "Software"
|
||||
version: "Versie"
|
||||
metadata: "Metadata"
|
||||
withNFiles: "{n} bestand(en)"
|
||||
monitor: "Monitor"
|
||||
jobQueue: "Job Queue"
|
||||
cpuAndMemory: "CPU en geheugen"
|
||||
network: "Netwerk"
|
||||
disk: "Schijfruimte"
|
||||
instanceInfo: "Serverinformatie"
|
||||
statistics: "Statistieken"
|
||||
clearQueue: "Wachtrij wissen"
|
||||
clearQueueConfirmTitle: "Weet je zeker dat je de wachtrji leeg wil maken?"
|
||||
clearQueueConfirmText: "Niet-bezorgde biljetten die nog in de wachtrij staan, worden niet gefedereerd. Meestal is deze operatie niet nodig."
|
||||
clearCachedFiles: "Cache opschonen"
|
||||
clearCachedFilesConfirm: "Weet je zeker dat je alle externe bestanden in de cache wilt verwijderen?"
|
||||
blockedInstances: "Geblokkeerde servers"
|
||||
blockedInstancesDescription: "Maak een lijst van de servers die moeten worden geblokkeerd, gescheiden door regeleinden. Geblokkeerde servers kunnen niet meer communiceren met deze server."
|
||||
muteAndBlock: "Gedempt en geblokkeerd"
|
||||
mutedUsers: "Gedempte gebruikers"
|
||||
blockedUsers: "Geblokkeerde gebruikers"
|
||||
noUsers: "Er zijn geen gebruikers."
|
||||
editProfile: "Bewerk Profiel"
|
||||
noteDeleteConfirm: "Ben je zeker dat je dit bericht wil verwijderen?"
|
||||
pinLimitExceeded: "Je kunt geen berichten meer vastprikken"
|
||||
intro: "Installatie van Misskey geëindigd! Maak nu een beheerder aan."
|
||||
done: "Klaar"
|
||||
processing: "Bezig met verwerken"
|
||||
preview: "Voorbeeld"
|
||||
default: "Standaard"
|
||||
noCustomEmojis: "Er zijn geen emojis"
|
||||
noJobs: "Er zijn geen taken"
|
||||
federating: "Federeren"
|
||||
blocked: "Geblokkeerd"
|
||||
suspended: "Opgeschort"
|
||||
all: "Alle"
|
||||
subscribing: "Abonneren"
|
||||
publishing: "Publiceren"
|
||||
notResponding: "Reageert niet"
|
||||
instanceFollowing: "Volgend op server"
|
||||
instanceFollowers: "Volgers op server"
|
||||
instanceUsers: "Gebruikers van deze server"
|
||||
changePassword: "Wachtwoord wijzigen"
|
||||
security: "Beveiliging"
|
||||
retypedNotMatch: "Invoer komt niet overeen"
|
||||
currentPassword: "Huidig wachtwoord"
|
||||
newPassword: "Nieuwe wachtwoord"
|
||||
newPasswordRetype: "Nieuw wachtwoord (herhalen)"
|
||||
attachFile: "Bestanden toevoegen"
|
||||
more: "Meer!"
|
||||
featured: "Uitgelicht"
|
||||
usernameOrUserId: "Gebruikersnaam of id"
|
||||
noSuchUser: "Gebruiker niet gevonden"
|
||||
lookup: "Opzoeken"
|
||||
announcements: "Aankondigingen"
|
||||
imageUrl: "AfbeeldingsURL"
|
||||
remove: "Verwijderen"
|
||||
removed: "Succesvol verwijderd"
|
||||
removeAreYouSure: "Weet je zeker dat je \"{x}\" wil verwijderen?"
|
||||
deleteAreYouSure: "Weet je zeker dat je \"{x}\" wil verwijderen?"
|
||||
resetAreYouSure: "Resetten?"
|
||||
saved: "Opgeslagen"
|
||||
messaging: "Chat"
|
||||
upload: "Uploaden"
|
||||
fromDrive: "Van schijf"
|
||||
fromUrl: "Van URL"
|
||||
uploadFromUrl: "Uploaden vanaf een URL"
|
||||
uploadFromUrlDescription: "URL van het bestand dat je wil uploaden"
|
||||
uploadFromUrlRequested: "Uploadverzoek"
|
||||
uploadFromUrlMayTakeTime: "Het kan even duren voordat het uploaden voltooid is."
|
||||
explore: "Verkennen"
|
||||
games: "Misskey spellen"
|
||||
messageRead: "Lezen"
|
||||
noMoreHistory: "Er is geen verdere geschiedenis"
|
||||
startMessaging: "Start een gesprek"
|
||||
nUsersRead: "gelezen door {n}"
|
||||
agreeTo: "Ik stem in met {0}"
|
||||
tos: "Gebruiksvoorwaarden"
|
||||
start: "Aan de slag"
|
||||
home: "Startpagina"
|
||||
remoteUserCaution: "Aangezien deze gebruiker van een externe server afkomstig is, kan de weergegeven informatie onvolledig zijn."
|
||||
activity: "Activiteit"
|
||||
images: "Afbeeldingen"
|
||||
birthday: "Geboortedatum"
|
||||
yearsOld: "{age} jaar"
|
||||
registeredDate: "Inschrijvingsdatum"
|
||||
location: "Locatie"
|
||||
theme: "Thema's"
|
||||
themeForLightMode: "Thema voor gebruik in de lichte modus"
|
||||
themeForDarkMode: "Thema voor gebruik in de donkere modus"
|
||||
light: "Licht"
|
||||
dark: "Donker"
|
||||
lightThemes: "Licht thema's"
|
||||
darkThemes: "Donkere thema's"
|
||||
syncDeviceDarkMode: "Synchroniseer donkere modus met je apparaatinstellingen"
|
||||
drive: "Schijf"
|
||||
fileName: "Bestandsnaam"
|
||||
selectFile: "Kies een bestand"
|
||||
selectFiles: "Selecteer bestanden"
|
||||
selectFolder: "Kies een map"
|
||||
selectFolders: "Kies mappen"
|
||||
renameFile: "Wijzig bestandsnaam"
|
||||
folderName: "Mapnaam"
|
||||
createFolder: "Map aanmaken"
|
||||
renameFolder: "Map hernoemen"
|
||||
nsfw: "NSFW"
|
||||
pinnedNotes: "Vastgemaakte notitie"
|
||||
userList: "Lijsten"
|
||||
smtpHost: "Server"
|
||||
smtpUser: "Gebruikersnaam"
|
||||
smtpPass: "Wachtwoord"
|
||||
clearCache: "Cache opschonen"
|
||||
user: "Gebruikers"
|
||||
muteThread: "Discussies dempen "
|
||||
unmuteThread: "Dempen van discussie ongedaan maken"
|
||||
hide: "Verbergen"
|
||||
_email:
|
||||
_follow:
|
||||
title: "volgde jou"
|
||||
_mfm:
|
||||
mention: "Vermelding"
|
||||
quote: "Quote"
|
||||
search: "Zoeken"
|
||||
_theme:
|
||||
keys:
|
||||
mention: "Vermelding"
|
||||
renote: "Herdelen"
|
||||
_sfx:
|
||||
note: "Notities"
|
||||
notification: "Meldingen"
|
||||
chat: "Chat"
|
||||
_widgets:
|
||||
notifications: "Meldingen"
|
||||
timeline: "Tijdlijn"
|
||||
activity: "Activiteit"
|
||||
federation: "Federatie"
|
||||
jobQueue: "Job Queue"
|
||||
_cw:
|
||||
show: "Laad meer"
|
||||
_visibility:
|
||||
home: "Startpagina"
|
||||
followers: "Volgers"
|
||||
_profile:
|
||||
username: "Gebruikersnaam"
|
||||
_exportOrImport:
|
||||
followingList: "Volgend"
|
||||
muteList: "Dempen"
|
||||
blockingList: "Blokkeren"
|
||||
userLists: "Lijsten"
|
||||
excludeMutingUsers: "Negeer gedempte gebruikers"
|
||||
excludeInactiveUsers: "Negeer inactieve gebruikers"
|
||||
_timelines:
|
||||
home: "Startpagina"
|
||||
_rooms:
|
||||
_roomType:
|
||||
default: "Standaard"
|
||||
_furnitures:
|
||||
monitor: "Monitor"
|
||||
_pages:
|
||||
blocks:
|
||||
image: "Afbeeldingen"
|
||||
script:
|
||||
categories:
|
||||
list: "Lijsten"
|
||||
blocks:
|
||||
_join:
|
||||
arg1: "Lijsten"
|
||||
_randomPick:
|
||||
arg1: "Lijsten"
|
||||
_dailyRandomPick:
|
||||
arg1: "Lijsten"
|
||||
_seedRandomPick:
|
||||
arg2: "Lijsten"
|
||||
_pick:
|
||||
arg1: "Lijsten"
|
||||
_listLen:
|
||||
arg1: "Lijsten"
|
||||
types:
|
||||
array: "Lijsten"
|
||||
_notification:
|
||||
youWereFollowed: "volgde jou"
|
||||
_types:
|
||||
follow: "Volgend"
|
||||
mention: "Vermelding"
|
||||
renote: "Herdelen"
|
||||
quote: "Quote"
|
||||
reaction: "Reacties"
|
||||
_deck:
|
||||
_columns:
|
||||
notifications: "Meldingen"
|
||||
tl: "Tijdlijn"
|
||||
list: "Lijsten"
|
||||
mentions: "Vermeldingen"
|
||||
|
@ -1,11 +1,13 @@
|
||||
---
|
||||
_lang_: "język polski"
|
||||
headlineMisskey: "Sieć połączona wpisami"
|
||||
introMisskey: "Misskey jest serwisem mikroblogowym typu open source.\nMisskey to opensource'owy serwis mikroblogowy, w którym możesz tworzyć \"notatki\", aby dzielić się tym, co się dzieje i opowiadać wszystkim o sobie.\nMożesz również użyć funkcji \"Reakcje\", aby szybko dodać własne reakcje do notatek innych użytkowników👍.\nOdkrywaj nowy świat🚀!"
|
||||
monthAndDay: "{month}-{day}"
|
||||
search: "Szukaj"
|
||||
notifications: "Powiadomienia"
|
||||
username: "Nazwa użytkownika"
|
||||
password: "Hasło"
|
||||
forgotPassword: "Nie pamiętam hasła"
|
||||
fetchingAsApObject: "Pobieranie z Fediwersum…"
|
||||
ok: "OK"
|
||||
gotIt: "Rozumiem!"
|
||||
@ -61,7 +63,10 @@ import: "Importuj"
|
||||
export: "Eksportuj"
|
||||
files: "Pliki"
|
||||
download: "Pobierz"
|
||||
driveFileDeleteConfirm: "Czy chcesz usunąć plik \"{name}\"? Zniknie również notatka, do której dołączony jest ten plik."
|
||||
unfollowConfirm: "Czy na pewno chcesz przestać obserwować {name}?"
|
||||
exportRequested: "Zażądałeś eksportu. Może to zająć trochę czasu. Po zakończeniu eksportu zostanie on dodany do Twoich \"dysków\"."
|
||||
importRequested: "Zażądano importu. Może to zająć chwilę."
|
||||
lists: "Listy"
|
||||
noLists: "Nie masz żadnych list"
|
||||
note: "Utwórz wpis"
|
||||
@ -76,6 +81,8 @@ somethingHappened: "Coś poszło nie tak"
|
||||
retry: "Spróbuj ponownie"
|
||||
pageLoadError: "Nie udało się załadować strony"
|
||||
pageLoadErrorDescription: "Zwykle jest to spowodowane problemem z siecią lub cache przeglądarki. Spróbuj wyczyścić cache i sprawdź jeszcze raz za chwilę."
|
||||
serverIsDead: "Serwer nie odpowiada. Zaczekaj chwilę i spróbuj ponownie."
|
||||
youShouldUpgradeClient: "Odśwież stronę, by zaaktualizować klienta."
|
||||
enterListName: "Nazwa listy"
|
||||
privacy: "Prywatność"
|
||||
makeFollowManuallyApprove: "Prośby o możliwość obserwacji wymagają zatwierdzenia"
|
||||
@ -93,12 +100,13 @@ cantRenote: "Ten wpis nie może zostać udostępniony."
|
||||
cantReRenote: "Udostępnienie nie może zostać udostępnione."
|
||||
quote: "Cytuj"
|
||||
pinnedNote: "Przypięty wpis"
|
||||
pinned: "Przypnij do profilu"
|
||||
you: "Ty"
|
||||
clickToShow: "Kliknij, aby wyświetlić"
|
||||
sensitive: "NSFW"
|
||||
add: "Dodaj"
|
||||
reaction: "Reakcja"
|
||||
reactionSettingDescription: "Przypisz swoje ulubione reakcje, które chcesz przypiąć w wyborze reakcji."
|
||||
reactionSetting: "Reakcje do pokazania w wyborniku reakcji"
|
||||
reactionSettingDescription2: "Przeciągnij aby zmienić kolejność, naciśnij aby usunąć, naciśnij „+” aby dodać"
|
||||
rememberNoteVisibility: "Zapamiętuj ustawienia widoczności wpisu"
|
||||
attachCancel: "Usuń załącznik"
|
||||
@ -122,6 +130,7 @@ editWidgets: "Edytuj widżet"
|
||||
editWidgetsExit: "Gotowe"
|
||||
customEmojis: "Niestandardowe emoji"
|
||||
emoji: "Emoji"
|
||||
emojis: "Emoji"
|
||||
emojiName: "Nazwa emoji"
|
||||
emojiUrl: "Adres URL emoji"
|
||||
addEmoji: "Dodaj emoji"
|
||||
@ -129,10 +138,11 @@ settingGuide: "Proponowana konfiguracja"
|
||||
cacheRemoteFiles: "Przechowuj zdalne pliki w pamięci podręcznej"
|
||||
cacheRemoteFilesDescription: "Gdy ta opcja jest wyłączona, zdalne pliki są ładowane bezpośrednio ze zdalnych instancji. Wyłączenie the opcji zmniejszy użycie powierzchni dyskowej, ale zwiększy transfer, ponieważ miniaturki nie będą generowane."
|
||||
flagAsBot: "To konto jest botem"
|
||||
flagAsBotDescription: "Jeżeli ten kanał jest kontrolowany przez jakiś program, ustaw tę opcję. Jeżeli włączona, będzie działać jako flaga informująca innych programistów, aby zapobiegać nieskończonej interakcji z różnymi botami i dostosowywać wewnętrzne systemy Misskey, traktując konto jako bota."
|
||||
flagAsCat: "To konto jest kotem"
|
||||
flagAsCatDescription: "Przełącz tę opcję, aby konto było oznaczone jako kot."
|
||||
autoAcceptFollowed: "Automatycznie przyjmuj prośby o możliwość obserwacji od użytkowników, których obserwujesz"
|
||||
addAcount: "Dodaj konto"
|
||||
addAccount: "Dodaj konto"
|
||||
loginFailed: "Nie udało się zalogować"
|
||||
showOnRemote: "Zobacz na zdalnej instancji"
|
||||
general: "Ogólne"
|
||||
@ -173,9 +183,11 @@ instanceInfo: "Informacje o instancji"
|
||||
statistics: "Statystyki"
|
||||
clearQueue: "Wyczyść kolejkę"
|
||||
clearQueueConfirmTitle: "Czy na pewno chcesz wyczyścić kolejkę?"
|
||||
clearQueueConfirmText: "Wszystkie niewysłane wpisy z kolejki nie zostaną wysłane. Zwykle to nie jest konieczne."
|
||||
clearCachedFiles: "Wyczyść pamięć podręczną"
|
||||
clearCachedFilesConfirm: "Czy na pewno chcesz usunąć wszystkie zdalne pliki z pamięci podręcznej?"
|
||||
blockedInstances: "Zablokowane instancje"
|
||||
blockedInstancesDescription: "Wypisz nazwy hostów instancji, które powinny zostać zablokowane. Wypisane instancje nie będą mogły dłużej komunikować się z tą instancją."
|
||||
muteAndBlock: "Wycisz / Zablokuj"
|
||||
mutedUsers: "Wyciszeni użytkownicy"
|
||||
blockedUsers: "Zablokowani użytkownicy"
|
||||
@ -211,6 +223,7 @@ more: "Więcej!"
|
||||
featured: "Wyróżnione"
|
||||
usernameOrUserId: "Nazwa lub id użytkownika"
|
||||
noSuchUser: "Nie znaleziono użytkownika"
|
||||
lookup: "Zapytania"
|
||||
announcements: "Ogłoszenia"
|
||||
imageUrl: "Adres URL obrazka"
|
||||
remove: "Usuń"
|
||||
@ -268,6 +281,7 @@ emptyDrive: "Dysk jest pusty"
|
||||
emptyFolder: "Ten katalog jest pusty"
|
||||
unableToDelete: "Nie można usunąć"
|
||||
inputNewFileName: "Wprowadź nową nazwę pliku"
|
||||
inputNewDescription: "Proszę wpisać nowy napis"
|
||||
inputNewFolderName: "Wprowadź nową nazwę katalogu"
|
||||
circularReferenceFolder: "Katalog docelowy jest podkatalogiem katalogu, który chcesz przenieść."
|
||||
hasChildFilesOrFolders: "Ponieważ ten katalog nie jest pusty, nie może być usunięty."
|
||||
@ -288,32 +302,39 @@ reject: "Odrzuć"
|
||||
normal: "Normalny"
|
||||
instanceName: "Nazwa instancji"
|
||||
instanceDescription: "Opis instancji"
|
||||
maintainerName: "Administrator"
|
||||
maintainerEmail: "E-mail administratora"
|
||||
tosUrl: "Adres URL regulaminu"
|
||||
thisYear: "Rok"
|
||||
thisMonth: "Miesiąc"
|
||||
today: "Dziś"
|
||||
dayX: "{day}"
|
||||
monthX: "{month}"
|
||||
yearX: "{year}"
|
||||
pages: "Strony"
|
||||
integration: "Integracja"
|
||||
connectSerice: "Połącz"
|
||||
disconnectSerice: "Rozłącz"
|
||||
connectService: "Połącz"
|
||||
disconnectService: "Rozłącz"
|
||||
enableLocalTimeline: "Włącz lokalną oś czasu"
|
||||
enableGlobalTimeline: "Włącz globalną oś czasu"
|
||||
disablingTimelinesInfo: "Administratorzy i moderatorzy będą zawsze mieć dostęp do wszystkich osi czasu, nawet gdy są one wyłączone."
|
||||
registration: "Zarejestruj się"
|
||||
enableRegistration: "Włącz rejestrację nowych użytkowników"
|
||||
invite: "Zaproś"
|
||||
proxyRemoteFiles: "Przekierowuj pliki obcych instancji przez proxy"
|
||||
proxyRemoteFilesDescription: "Gdy ta opcja jest włączona, zdalne pliki które nie są przechowywane lokalnie, lub zostały usunięte z powodu przekroczenia limitu miejsca będą kierowane przez proxy, razem z generowaniem miniatur. Nie ma to żadnego wpływu na przestrzeń dyskową serwera."
|
||||
driveCapacityPerLocalAccount: "Powierzchnia dyskowa na lokalnego użytkownika"
|
||||
driveCapacityPerRemoteAccount: "Powierzchnia dyskowa na zdalnego użytkownika"
|
||||
inMb: "W megabajtach"
|
||||
iconUrl: "Adres URL ikony"
|
||||
bannerUrl: "Adres URL banera"
|
||||
backgroundImageUrl: "Adres URL tła"
|
||||
basicInfo: "Podstawowe informacje"
|
||||
pinnedUsers: "Przypięty użytkownik"
|
||||
pinnedUsersDescription: "Wypisz po jednej nazwie użytkownika w wierszu. Podani użytkownicy zostaną przypięci pod kartą „Eksploruj”."
|
||||
pinnedPages: "Przypięte strony"
|
||||
pinnedPagesDescription: "Wprowadź ścieżki stron które chcesz przypiąć na głównej stronie instancji, oddzielone znakiem nowego wiersza."
|
||||
pinnedClipId: "ID przypiętego klipu"
|
||||
pinnedNotes: "Przypięty wpis"
|
||||
hcaptcha: "hCaptcha"
|
||||
enableHcaptcha: "Włącz hCaptcha"
|
||||
@ -328,9 +349,11 @@ antennas: "Anteny"
|
||||
manageAntennas: "Zarządzaj Antenami"
|
||||
name: "Nazwa"
|
||||
antennaSource: "Źródło Anteny"
|
||||
antennaKeywords: "Słowa kluczowe do obserwacji"
|
||||
antennaExcludeKeywords: "Wykluczone słowa kluczowe"
|
||||
antennaKeywordsDescription: "Oddziel spacjami dla warunku AND, albo wymuś koniec linii dla warunku OR"
|
||||
notifyAntenna: "Powiadamiaj o nowych wpisach"
|
||||
withFileAntenna: "Filtruj tylko wpisy z załączonym plikiem"
|
||||
serviceworker: "ServiceWorker"
|
||||
enableServiceworker: "Włącz ServiceWorker"
|
||||
antennaUsersDescription: "Wypisz po jednej nazwie użytkownika w linii"
|
||||
caseSensitive: "Wielkość liter ma znaczenie"
|
||||
@ -356,6 +379,7 @@ administrator: "Admin"
|
||||
token: "Token"
|
||||
twoStepAuthentication: "Uwierzytelnianie dwuskładnikowe"
|
||||
moderator: "Moderator"
|
||||
nUsersMentioned: "{n} wspomnianych użytkowników"
|
||||
securityKey: "Klucz bezpieczeństwa"
|
||||
securityKeyName: "Nazwa klucza"
|
||||
registerSecurityKey: "Zarejestruj klucz bezpieczeństwa"
|
||||
@ -395,6 +419,7 @@ retype: "Wprowadź ponownie"
|
||||
noteOf: "Wpisy {user}"
|
||||
inviteToGroup: "Zaproś do grupy"
|
||||
maxNoteTextLength: "Limit znaków dla wpisów"
|
||||
quoteAttached: "Zacytowano"
|
||||
quoteQuestion: "Czy na pewno chcesz umieścić cytat?"
|
||||
noMessagesYet: "Nie napisano jeszcze wiadomości"
|
||||
newMessageExists: "Masz nową wiadomość"
|
||||
@ -417,6 +442,7 @@ signinWith: "Zaloguj się z {x}"
|
||||
signinFailed: "Nie udało się zalogować. Wprowadzona nazwa użytkownika lub hasło są nieprawidłowe."
|
||||
tapSecurityKey: "Wybierz swój klucz bezpieczeństwa"
|
||||
or: "Lub"
|
||||
language: "Język"
|
||||
uiLanguage: "Język wyświetlania UI"
|
||||
groupInvited: "Zaproszony(-a) do grupy"
|
||||
aboutX: "O {x}"
|
||||
@ -430,7 +456,7 @@ category: "Kategoria"
|
||||
tags: "Tagi"
|
||||
docSource: "Źródło tego dokumentu"
|
||||
createAccount: "Utwórz konto"
|
||||
existingAcount: "Istniejące konta"
|
||||
existingAccount: "Istniejące konto"
|
||||
regenerate: "Wygeneruj ponownie"
|
||||
fontSize: "Rozmiar czcionki"
|
||||
noFollowRequests: "Nie masz żadnych oczekujących próśb o możliwość obserwacji"
|
||||
@ -452,6 +478,8 @@ showFeaturedNotesInTimeline: "Pokazuj wyróżnione wpisy w osi czasu"
|
||||
objectStorage: "Pamięć obiektowa"
|
||||
useObjectStorage: "Używaj pamięci obiektowej"
|
||||
objectStorageBaseUrl: "Podstawowy URL"
|
||||
objectStorageBucket: "Bucket"
|
||||
objectStorageBucketDesc: "Podaj nazwę „wiadra” używaną przez konfigurowaną usługę."
|
||||
objectStoragePrefix: "Prefiks"
|
||||
objectStoragePrefixDesc: "Pliki będą przechowywane w katalogu z tym prefiksem."
|
||||
objectStorageEndpoint: "Punkt końcowy"
|
||||
@ -498,7 +526,6 @@ deleteAllFilesConfirm: "Czy na pewno chcesz usunąć wszystkie pliki?"
|
||||
removeAllFollowingDescription: "Przestań obserwować wszystkie konta z {host}. Wykonaj to, jeżeli instancja już nie istnieje."
|
||||
userSuspended: "To konto zostało zawieszone."
|
||||
userSilenced: "Ten użytkownik został wyciszony."
|
||||
sidebar: "Pasek boczny"
|
||||
divider: "Rozdzielacz"
|
||||
addItem: "Dodaj element"
|
||||
rooms: "Pokój"
|
||||
@ -518,11 +545,12 @@ disablePlayer: "Zamknij odtwarzacz wideo"
|
||||
expandTweet: "Rozwiń tweet"
|
||||
themeEditor: "Edytor motywu"
|
||||
description: "Opis"
|
||||
describeFile: "dodaj podpis"
|
||||
enterFileDescription: "Wprowadź napis"
|
||||
author: "Autor"
|
||||
leaveConfirm: "Są niezapisane zmiany. Czy chcesz je odrzucić?"
|
||||
manage: "Zarządzanie"
|
||||
plugins: "Wtyczki"
|
||||
pluginInstallWarn: "Nie instaluj niezaufanych wtyczek."
|
||||
deck: "Tablica"
|
||||
useBlurEffectForModal: "Używaj efektu rozmycia w modalach"
|
||||
useFullReactionPicker: "Używaj pełnowymiarowego wybornika reakcji"
|
||||
@ -540,7 +568,7 @@ pluginTokenRequestedDescription: "Ta wtyczka będzie mogła korzystać z ustawio
|
||||
notificationType: "Rodzaj powiadomień"
|
||||
edit: "Edytuj"
|
||||
useStarForReactionFallback: "Użyj ★ jako zapasowego emoji, gdy emoji reakcji jest nieznane"
|
||||
emailConfig: "Konfiguracja serwera e-mail"
|
||||
emailServer: "Serwer poczty e-mail"
|
||||
enableEmail: "Włącz dostarczanie wiadomości e-mail"
|
||||
emailConfigInfo: "Wykorzystywany do potwierdzenia adresu e-mail w trakcie rejestracji, lub gdy zapomnisz hasła"
|
||||
email: "Adres e-mail"
|
||||
@ -553,6 +581,7 @@ smtpPass: "Hasło"
|
||||
emptyToDisableSmtpAuth: "Pozostaw adres e-mail i hasło puste, aby wyłączyć weryfikację SMTP"
|
||||
smtpSecureInfo: "Wyłącz, jeżeli używasz STARTTLS"
|
||||
testEmail: "Przetestuj dostarczanie wiadomości e-mail"
|
||||
wordMute: "Wyciszenie słowa"
|
||||
userSaysSomething: "{name} powiedział(-a) coś"
|
||||
makeActive: "Aktywuj"
|
||||
display: "Wyświetlanie"
|
||||
@ -570,8 +599,9 @@ useGlobalSetting: "Użyj globalnych ustawień"
|
||||
useGlobalSettingDesc: "Jeżeli włączone, zostaną wykorzystane ustawienia powiadomień Twojego konta. Jeżeli wyłączone, mogą zostać wykonane oddzielne konfiguracje."
|
||||
other: "Inne"
|
||||
regenerateLoginToken: "Generuj token logowania ponownie"
|
||||
regenerateLoginTokenDescription: "Regeneruje token używany wewnętrznie podczas logowania. Zazwyczaj nie jest to konieczne. Po regeneracji wszystkie urządzenia zostaną wylogowane."
|
||||
setMultipleBySeparatingWithSpace: "Możesz ustawić wiele, oddzielając je spacjami."
|
||||
chatOpenBehavior: "Zachowanie okna czatu po otwarciu"
|
||||
fileIdOrUrl: "ID pliku albo URL"
|
||||
behavior: "Zachowanie"
|
||||
sample: "Przykład"
|
||||
abuseReports: "Zgłoszenia"
|
||||
@ -579,6 +609,8 @@ reportAbuse: "Zgłoś"
|
||||
reportAbuseOf: "Zgłoś {name}"
|
||||
fillAbuseReportDescription: "Wypełnij szczegóły zgłoszenia. Jeżeli dotyczy ono określonego wpisu, uwzględnij jego adres URL."
|
||||
abuseReported: "Twoje zgłoszenie zostało wysłane. Dziękujemy."
|
||||
reporteeOrigin: "Pochodzenie zgłoszonego"
|
||||
reporterOrigin: "Pochodzenie zgłaszającego"
|
||||
send: "Wyślij"
|
||||
abuseMarkAsResolved: "Oznacz zgłoszenie jako rozwiązane"
|
||||
openInNewTab: "Otwórz w nowej karcie"
|
||||
@ -591,7 +623,7 @@ random: "Losowe"
|
||||
system: "System"
|
||||
switchUi: "Przełącz interfejs użytkownika"
|
||||
desktop: "Pulpit"
|
||||
createNew: "Utworzy nowy"
|
||||
createNew: "Utwórz nowy"
|
||||
optional: "Nieobowiązkowe"
|
||||
public: "Publiczny"
|
||||
i18nInfo: "Misskey jest tłumaczone na wiele języków przez wolontariuszy. Możesz pomóc na {link}."
|
||||
@ -614,6 +646,7 @@ driveFilesCount: "Liczba plików na dysku"
|
||||
driveUsage: "Użycie przestrzeni dyskowej"
|
||||
noCrawle: "Odrzuć indeksowanie przez crawlery"
|
||||
noCrawleDescription: "Proś wyszukiwarki internetowe, aby nie indeksowały Twojego profilu, wpisów, stron itd."
|
||||
lockedAccountInfo: "Dopóki nie ustawisz widoczności wpisu na \"Obserwujący\", twoje wpisy będą mogli widzieć wszyscy, nawet jeśli ustawisz manualne zatwierdzanie obserwujących."
|
||||
alwaysMarkSensitive: "Oznacz domyślnie jako NSFW"
|
||||
loadRawImages: "Wyświetlaj zdjęcia w załącznikach w całości zamiast miniatur"
|
||||
disableShowingAnimatedImages: "Nie odtwarzaj animowanych obrazów"
|
||||
@ -623,6 +656,7 @@ emailVerified: "Adres e-mail został potwierdzony"
|
||||
noteFavoritesCount: "Liczba polubionych wpisów"
|
||||
pageLikesCount: "Liczba otrzymanych polubień stron"
|
||||
pageLikedCount: "Liczba polubionych stron"
|
||||
reversiCount: "Liczba rozgrywek Reversi"
|
||||
contact: "Kontakt"
|
||||
useSystemFont: "Używaj domyślnej czcionki systemu"
|
||||
experimentalFeatures: "Eksperymentalne funkcje"
|
||||
@ -631,22 +665,133 @@ makeExplorable: "Pokazuj konto na stronie „Eksploruj”"
|
||||
makeExplorableDescription: "Jeżeli wyłączysz tę opcję, Twoje konto nie będzie wyświetlać się w sekcji „Eksploruj”."
|
||||
showGapBetweenNotesInTimeline: "Pokazuj odstęp między wpisami na osi czasu."
|
||||
duplicate: "Duplikuj"
|
||||
left: "Lewo"
|
||||
center: "Wyśsrodkuj"
|
||||
wide: "Szerokie"
|
||||
narrow: "Wąskie"
|
||||
reloadToApplySetting: "To ustawienie zostanie zastosowane po odświeżeniu strony. Chcesz odświeżyć?"
|
||||
needReloadToApply: "To ustawienie zostanie zastosowane po odświeżeniu strony"
|
||||
showTitlebar: "Pokazuj pasek tytułowy"
|
||||
clearCache: "Wyczyść pamięć podręczną"
|
||||
onlineUsersCount: "{n} osób jest online"
|
||||
nUsers: "{n} użytkowników"
|
||||
nNotes: "{n} wpisów"
|
||||
sendErrorReports: "Wyślij raporty o błędach"
|
||||
myTheme: "Mój motyw"
|
||||
backgroundColor: "Tło"
|
||||
accentColor: "Akcent"
|
||||
textColor: "Tekst"
|
||||
saveAs: "Zapisz jako…"
|
||||
advanced: "Zaawansowane"
|
||||
value: "Wartość"
|
||||
createdAt: "Utworzono"
|
||||
updatedAt: "Zaktualizowano"
|
||||
saveConfirm: "Zapisać zmiany?"
|
||||
deleteConfirm: "Na pewno usunąć?"
|
||||
invalidValue: "Nieprawidłowa wartość."
|
||||
registry: "Rejestr"
|
||||
closeAccount: "Zamknij konto"
|
||||
currentVersion: "Bieżąca wersja"
|
||||
latestVersion: "Najnowsza wersja"
|
||||
youAreRunningUpToDateClient: "Korzystasz z najnowszej wersji klienta."
|
||||
newVersionOfClientAvailable: "Nowsza wersja klienta jest dostępna."
|
||||
usageAmount: "Użycie"
|
||||
capacity: "Pojemność"
|
||||
inUse: "Użyto"
|
||||
editCode: "Edytuj kod"
|
||||
apply: "Zastosuj"
|
||||
receiveAnnouncementFromInstance: "Otrzymuj powiadomienia e-mail z tej instancji"
|
||||
emailNotification: "Powiadomienia e-mail"
|
||||
publish: "Publikuj"
|
||||
inChannelSearch: "Szukaj na kanale"
|
||||
useReactionPickerForContextMenu: "Otwórz wybornik reakcji prawym kliknięciem"
|
||||
typingUsers: "{users} pisze(-ą)..."
|
||||
jumpToSpecifiedDate: "Przejdź do określonej daty"
|
||||
showingPastTimeline: "Obecnie wyświetla starą oś czasu"
|
||||
clear: "Wróć"
|
||||
markAllAsRead: "Oznacz wszystkie jako przeczytane"
|
||||
goBack: "Wróć"
|
||||
unlikeConfirm: "Na pewno chcesz usunąć polubienie?"
|
||||
fullView: "Pełny widok"
|
||||
quitFullView: "Opuść pełny widok"
|
||||
addDescription: "Dodaj opis"
|
||||
userPagePinTip: "Możesz wyświetlać wpisy w tym miejscu po wybraniu \"Przypnij do profilu\" z menu pojedyńczego wpisu"
|
||||
notSpecifiedMentionWarning: "Ten wpis zawiera wzmianki o użytkownikach niezawartych jako odbiorcy"
|
||||
info: "Informacje"
|
||||
userInfo: "Informacje o użykowniku"
|
||||
unknown: "Nieznane"
|
||||
onlineStatus: "Status online"
|
||||
hideOnlineStatus: "Ukryj status online"
|
||||
hideOnlineStatusDescription: "Ukrywanie statusu online ogranicza wygody niektórych funkcji, tj. wyszukiwanie"
|
||||
online: "Online"
|
||||
active: "Aktywny"
|
||||
offline: "Offline"
|
||||
notRecommended: "Nie zalecane"
|
||||
botProtection: "Zabezpieczenie przed botami"
|
||||
instanceBlocking: "Zablokowane instancje"
|
||||
selectAccount: "Wybierz konto"
|
||||
enabled: "Właczono"
|
||||
disabled: "Wyłączono"
|
||||
quickAction: "Szybkie działania"
|
||||
user: "Użytkownicy"
|
||||
administration: "Zarządzanie"
|
||||
accounts: "Konta"
|
||||
switch: "Przełącz"
|
||||
noMaintainerInformationWarning: "Informacje o administratorze nie są skonfigurowane."
|
||||
noBotProtectionWarning: "Zabezpieczenie przed botami nie jest skonfigurowane."
|
||||
configure: "Skonfiguruj"
|
||||
postToGallery: "Opublikuj w galerii"
|
||||
gallery: "Galeria"
|
||||
recentPosts: "Ostatnie wpisy"
|
||||
popularPosts: "Popularne wpisy"
|
||||
shareWithNote: "Udostępnij z wpisem"
|
||||
ads: "Reklamy"
|
||||
expiration: "Ankieta kończy się"
|
||||
memo: "Notatki"
|
||||
priority: "Priorytet"
|
||||
high: "Wysoki"
|
||||
middle: "Średnie"
|
||||
low: "Niski"
|
||||
emailNotConfiguredWarning: "Nie podano adresu e-mail"
|
||||
ratio: "Stosunek"
|
||||
previewNoteText: "Pokaż podgląd"
|
||||
customCss: "Własny CSS"
|
||||
customCssWarn: "Używaj tego ustawienia tylko wtedy, gdy wiesz co ono robi. Nieprawidłowe wpisy mogą spowodować, że klient przestanie działać poprawnie."
|
||||
global: "Globalna"
|
||||
squareAvatars: "Wyświetlaj kwadratowe awatary"
|
||||
sent: "Wyślij"
|
||||
received: "Otrzymane"
|
||||
hashtags: "Hashtag"
|
||||
pubSub: "Konta Pub/Sub"
|
||||
hide: "Ukryj"
|
||||
_ffVisibility:
|
||||
public: "Publikuj"
|
||||
_ad:
|
||||
back: "Wróć"
|
||||
reduceFrequencyOfThisAd: "Pokazuj tę reklamę rzadziej"
|
||||
_forgotPassword:
|
||||
ifNoEmail: "Jeżeli nie podano adresu e-mail podczas rejestracji, skontaktuj się z administratorem zamiast tego."
|
||||
contactAdmin: "Jeżeli Twoja instancja nie obsługuje adresów e-mail, skontaktuj się zamiast tego z administratorem, aby zresetować hasło."
|
||||
_gallery:
|
||||
my: "Moja galeria"
|
||||
liked: "Polubione wpisy"
|
||||
like: "Polub"
|
||||
unlike: "Cofnij polubienie"
|
||||
_email:
|
||||
_follow:
|
||||
title: "Zaobserwował(a) Cię"
|
||||
_receiveFollowRequest:
|
||||
title: "Otrzymano prośbę o możliwość obserwacji"
|
||||
_plugin:
|
||||
install: "Zainstaluj wtyczki"
|
||||
installWarn: "Nie instaluj niezaufanych wtyczek."
|
||||
manage: "Zarządzanie wtyczkami"
|
||||
_registry:
|
||||
scope: "Zakres"
|
||||
key: "Klucz"
|
||||
keys: "Klucz"
|
||||
domain: "Domena"
|
||||
createKey: "Utwórz klucz"
|
||||
_aboutMisskey:
|
||||
about: "Misskey jest oprogramowanie open source rozwijanym przez syuilo od 2014."
|
||||
contributors: "Główni twórcy"
|
||||
@ -665,7 +810,9 @@ _mfm:
|
||||
intro: "MFM to język składniowy wyjątkowy dla Misskey, który może być użyty w wielu miejscach. Tu znajdziesz listę wszystkich możliwych elementów składni MFM."
|
||||
dummy: "Misskey rozszerza świat Fediwersum"
|
||||
mention: "Wspomnij"
|
||||
mentionDescription: "Używając znaku @ i nazwy użytkownika, możesz określić danego użytkownika."
|
||||
hashtag: "Hashtag"
|
||||
hashtagDescription: "Używając kratki i tekstu, możesz określić hashtag."
|
||||
url: "Adres URL"
|
||||
urlDescription: "Adresy URL mogą być wyświetlane"
|
||||
link: "Odnośnik"
|
||||
@ -693,6 +840,8 @@ _mfm:
|
||||
x4Description: "Czyni treść jeszcze większą niż jeszcze większa."
|
||||
blur: "Rozmycie"
|
||||
font: "Czcionka"
|
||||
fontDescription: "Wybiera czcionkę do wyświetlania treści."
|
||||
rotate: "Obróć"
|
||||
_reversi:
|
||||
reversi: "Reversi"
|
||||
gameSettings: "Ustawienia gry"
|
||||
@ -741,9 +890,7 @@ _channel:
|
||||
following: "Śledzeni"
|
||||
usersCount: "{n} uczestnicy"
|
||||
notesCount: "{n} wpisy"
|
||||
_sidebar:
|
||||
full: "Pełne"
|
||||
icon: "Awatar"
|
||||
_menuDisplay:
|
||||
hide: "Ukryj"
|
||||
_wordMute:
|
||||
muteWords: "Słowo do wyciszenia"
|
||||
@ -756,6 +903,7 @@ _theme:
|
||||
install: "Zainstaluj motyw"
|
||||
manage: "Zarządzanie motywami"
|
||||
code: "Kod motywu"
|
||||
description: "Opis"
|
||||
installed: "Zainstalowano {name}"
|
||||
installedThemes: "Zainstalowane motywy"
|
||||
builtinThemes: "Wbudowane motywy"
|
||||
@ -852,6 +1000,10 @@ _time:
|
||||
_tutorial:
|
||||
title: "Jak korzystać z Misskey"
|
||||
step1_1: "Witaj!"
|
||||
step1_3: "Twoja oś czasu jest jeszcze pusta, ponieważ nie opublikowałeś(-aś) jeszcze żadnych wpisów i nie obserwujesz jeszcze nikogo."
|
||||
step2_1: "Ukończmy konfigurację profilu zanim utworzymy wpis lub zaczniemy kogoś obserwować."
|
||||
step3_1: "Zakończyłeś(-aś) konfigurację profilu?"
|
||||
step3_3: "Wypełnij pole i kliknij przycisk w prawym górnym rogu by wysłać post."
|
||||
_2fa:
|
||||
registerDevice: "Zarejestruj nowe urządzenie"
|
||||
step1: "Najpierw, zainstaluj aplikację uwierzytelniającą (taką jak {a} lub {b}) na swoim urządzeniu."
|
||||
@ -923,7 +1075,7 @@ _poll:
|
||||
deadlineDate: "Data zakończenia"
|
||||
deadlineTime: "godz."
|
||||
duration: "Czas trwania"
|
||||
votesCount: "{} głosów"
|
||||
votesCount: "{n} głosów"
|
||||
totalVotes: "Łącznie {n} głosów"
|
||||
vote: "Głosowanie w ankiecie"
|
||||
showResult: "Pokaż wyniki"
|
||||
@ -953,62 +1105,134 @@ _profile:
|
||||
username: "Nazwa użytkownika"
|
||||
description: "Opis"
|
||||
youCanIncludeHashtags: "Możesz umieścić hashtagi w swoim opisie."
|
||||
metadata: "Dodatkowe informacje"
|
||||
metadataEdit: "Edytuj dodatkowe informacje"
|
||||
metadataDescription: "Możesz wyświetlać do czterech sekcji dodatkowych informacji na swoim profilu."
|
||||
metadataLabel: "Etykieta"
|
||||
metadataContent: "Treść"
|
||||
changeAvatar: "Zmień awatar"
|
||||
changeBanner: "Zmień baner"
|
||||
_exportOrImport:
|
||||
allNotes: "Wszystkie wpisy"
|
||||
followingList: "Obserwowani"
|
||||
muteList: "Wycisz"
|
||||
blockingList: "Zablokuj"
|
||||
userLists: "Listy"
|
||||
_charts:
|
||||
federationInstancesTotal: "Łącznie sfederowanych instancji"
|
||||
usersTotal: "Łącznie # użytkowników"
|
||||
activeUsers: "Aktywni użytkownicy"
|
||||
_instanceCharts:
|
||||
requests: "Żądania"
|
||||
notesTotal: "Łącznie # wpisów"
|
||||
ff: "Różnica w # obserwujących"
|
||||
ffTotal: "Łączna liczba # obserwujących"
|
||||
cacheSize: "Różnica w rozmiarze pamięci podręcznej"
|
||||
cacheSizeTotal: "Łączny rozmiar pamięci podręcznej"
|
||||
files: "Różnica # plików"
|
||||
filesTotal: "Łącznie # plików"
|
||||
_timelines:
|
||||
home: "Strona główna"
|
||||
local: "Lokalne"
|
||||
social: "Społeczność"
|
||||
global: "Globalna"
|
||||
_rooms:
|
||||
roomOf: "Pokój {user}"
|
||||
addFurniture: "Umieść meble"
|
||||
translate: "Przenieś"
|
||||
rotate: "Obróć"
|
||||
exit: "Wróć"
|
||||
remove: "Usuń"
|
||||
clear: "Usuń wszystkie"
|
||||
clearConfirm: "Czy na pewno chcesz usunąć wszystkie meble ze swojego pokoju?"
|
||||
leaveConfirm: "Masz niezapisane zmiany. Czy na pewno chcesz wyjść?"
|
||||
chooseImage: "Wybierz obraz"
|
||||
roomType: "Typ pokoju"
|
||||
carpetColor: "Kolor dywanu"
|
||||
_roomType:
|
||||
default: "Domyślne"
|
||||
washitsu: "W japońskim stylu"
|
||||
_furnitures:
|
||||
milk: "Karton mleka"
|
||||
bed: "Łóżko"
|
||||
low-table: "Niski stolik"
|
||||
desk: "Biurko"
|
||||
chair: "Krzesło"
|
||||
chair2: "Krzesło 2"
|
||||
fan: "Chłodzenie"
|
||||
pc: "Komputer"
|
||||
plant: "Roślina domowa"
|
||||
plant2: "Roślina domowa 2"
|
||||
eraser: "Gumka"
|
||||
pencil: "Ołówek"
|
||||
pudding: "Budyń"
|
||||
cardboard-box: "Pudło tekturowe"
|
||||
cardboard-box2: "Pudło tekturowe 2"
|
||||
cardboard-box3: "Pudło tekturowe 3"
|
||||
book: "Książka"
|
||||
book2: "Książka 2"
|
||||
piano: "Fortepian"
|
||||
server: "Serwery"
|
||||
moon: "Księżyc"
|
||||
corkboard: "Tablica korkowa"
|
||||
mousepad: "Podkładka pod mysz"
|
||||
monitor: "Monitor"
|
||||
keyboard: "Klawiatura"
|
||||
carpet-stripe: "Dywan (w paski)"
|
||||
color-box: "Biblioteczka"
|
||||
wall-clock: "Zegar ścienny"
|
||||
photoframe: "Ramka do zdjęć"
|
||||
cube: "Kostka"
|
||||
tv: "Telewizor"
|
||||
pinguin: "Pingwin"
|
||||
rubik-cube: "Kostka Rubika"
|
||||
poster-h: "Plakat (poziomy)"
|
||||
poster-v: "Plakat (pionowy)"
|
||||
sofa: "Kanapa"
|
||||
spiral: "Schody spiralne"
|
||||
bin: "Kosz"
|
||||
holo-display: "Wyświetlacz holograficzny"
|
||||
energy-drink: "Napój energetyczny"
|
||||
doll-ai: "Lalka AI"
|
||||
banknote: "Banknot"
|
||||
_pages:
|
||||
newPage: "Utwórz stronę"
|
||||
editPage: "Edytuj tę stronę"
|
||||
readPage: "Aktywowano widok źródła"
|
||||
created: "Pomyślnie utworzono stronę!"
|
||||
updated: "Pomyślnie zaktualizowano stronę!"
|
||||
deleted: "Strona została usunięta"
|
||||
pageSetting: "Ustawienia strony"
|
||||
nameAlreadyExists: "Określony adres URL strony już istnieje"
|
||||
invalidNameTitle: "Podany adres URL strony jest nieprawidłowy"
|
||||
invalidNameText: "Sprawdź, czy nie jest puste"
|
||||
editThisPage: "Edytuj tę stronę"
|
||||
viewSource: "Zobacz źródło"
|
||||
viewPage: "Wyświetlanie Twoich stron"
|
||||
like: "Lubię"
|
||||
unlike: "Cofnij polubienie"
|
||||
my: "Moje strony"
|
||||
liked: "Polubione strony"
|
||||
featured: "Wyróżnione"
|
||||
inspector: "Inspektor"
|
||||
contents: "Zawartość"
|
||||
content: "Blokada strony"
|
||||
variables: "Zmienne"
|
||||
title: "Tytuł"
|
||||
url: "URL strony"
|
||||
summary: "Podsumowanie strony"
|
||||
alignCenter: "Wyśrodkuj elementy"
|
||||
hideTitleWhenPinned: "Ukryj tytuł strony, gdy przypięta do profilu"
|
||||
font: "Czcionka"
|
||||
fontSerif: "Szeryfowa"
|
||||
fontSansSerif: "Bezszeryfowa"
|
||||
eyeCatchingImageSet: "Ustaw przyciągające wzrok zdjęcie"
|
||||
eyeCatchingImageRemove: "Usuń przyciągające wzrok zdjęcie"
|
||||
chooseBlock: "Dodaj blok"
|
||||
selectType: "Wybierz typ"
|
||||
enterVariableName: "Wprowadź nazwę dla swojej zmiennej"
|
||||
variableNameIsAlreadyUsed: "Ta nazwa jest już używana przez inną zmienną"
|
||||
contentBlocks: "Zawartość"
|
||||
inputBlocks: "Wejście"
|
||||
specialBlocks: "Specjalne"
|
||||
blocks:
|
||||
@ -1039,7 +1263,13 @@ _pages:
|
||||
text: "Tytuł"
|
||||
default: "Domyślna wartość"
|
||||
_canvas:
|
||||
width: "Szerokość"
|
||||
height: "Wysokość"
|
||||
note: "Osadzony wpis"
|
||||
_note:
|
||||
id: "ID wpisu"
|
||||
idDescription: "Możesz też wkleić adres URL wpisu, aby go ustawić."
|
||||
detailed: "Szczegółowy widok"
|
||||
switch: "Przełącznik"
|
||||
_switch:
|
||||
name: "Nazwa zmiennej"
|
||||
@ -1058,12 +1288,14 @@ _pages:
|
||||
dialog: "Pokazuj okno dialogowe"
|
||||
_dialog:
|
||||
content: "Treść"
|
||||
resetRandom: "Resetuj losowe ziarno"
|
||||
pushEvent: "Wyślij zdarzenie"
|
||||
_pushEvent:
|
||||
event: "Nazwa zdarzenia"
|
||||
message: "Wiadomość do wyświetlenia po aktywowaniu"
|
||||
variable: "Zmienna do wysłania"
|
||||
no-variable: "Brak"
|
||||
callAiScript: "Wywołaj AiScript"
|
||||
_callAiScript:
|
||||
functionName: "Nazwa funkcji"
|
||||
radioButton: "Wybór"
|
||||
@ -1081,29 +1313,84 @@ _pages:
|
||||
random: "Losowe"
|
||||
value: "Wartość"
|
||||
fn: "Funkcje"
|
||||
text: "Działania na tekście"
|
||||
convert: "Transformacja"
|
||||
list: "Listy"
|
||||
blocks:
|
||||
text: "Tekst"
|
||||
multiLineText: "Tekst (w wielu wierszach)"
|
||||
_textList:
|
||||
info: "Oddziel każdy wpis znakiem nowego wiersza"
|
||||
strLen: "Długość tekstu"
|
||||
_strLen:
|
||||
arg1: "Tekst"
|
||||
_strPick:
|
||||
arg1: "Tekst"
|
||||
arg2: "Położenie znaku"
|
||||
strReplace: "Zamiana tekstu"
|
||||
_strReplace:
|
||||
arg1: "Tekst"
|
||||
arg2: "Tekst do zamiany"
|
||||
arg3: "Zamieniono z"
|
||||
_strReverse:
|
||||
arg1: "Tekst"
|
||||
_join:
|
||||
arg1: "Listy"
|
||||
arg2: "Odstęp"
|
||||
add: "Dodaj"
|
||||
_add:
|
||||
arg1: "A"
|
||||
arg2: "B"
|
||||
subtract: "Odejmij"
|
||||
_subtract:
|
||||
arg1: "A"
|
||||
arg2: "B"
|
||||
multiply: "Pomnóż"
|
||||
_multiply:
|
||||
arg1: "A"
|
||||
arg2: "B"
|
||||
divide: "Podziel"
|
||||
_divide:
|
||||
arg1: "A"
|
||||
arg2: "B"
|
||||
mod: "Reszta"
|
||||
_mod:
|
||||
arg1: "A"
|
||||
arg2: "B"
|
||||
_round:
|
||||
arg1: "Liczba"
|
||||
eq: "A i B są sobie równe"
|
||||
_eq:
|
||||
arg1: "A"
|
||||
arg2: "B"
|
||||
notEq: "A i B różnią się"
|
||||
_notEq:
|
||||
arg1: "A"
|
||||
arg2: "B"
|
||||
and: "A I B"
|
||||
_and:
|
||||
arg1: "A"
|
||||
arg2: "B"
|
||||
or: "A LUB B"
|
||||
_or:
|
||||
arg1: "A"
|
||||
arg2: "B"
|
||||
lt: "< A jest mniejsze niż B"
|
||||
_lt:
|
||||
arg1: "A"
|
||||
arg2: "B"
|
||||
gt: "> A jest większe od B"
|
||||
_gt:
|
||||
arg1: "A"
|
||||
arg2: "B"
|
||||
ltEq: "<= A jest mniejsze lub równe B"
|
||||
_ltEq:
|
||||
arg1: "A"
|
||||
arg2: "B"
|
||||
gtEq: ">= A jest większe lub równe B"
|
||||
_gtEq:
|
||||
arg1: "A"
|
||||
arg2: "B"
|
||||
if: "Warunek"
|
||||
_if:
|
||||
arg1: "Jeżeli"
|
||||
@ -1118,41 +1405,56 @@ _pages:
|
||||
_rannum:
|
||||
arg1: "Minimalna wartość"
|
||||
arg2: "Maksymalna wartość"
|
||||
randomPick: "Wybierz losowo z listy"
|
||||
_randomPick:
|
||||
arg1: "Listy"
|
||||
dailyRandom: "Losowo (zostaje na dzień)"
|
||||
_dailyRandom:
|
||||
arg1: "Prawdopodobieństwo"
|
||||
dailyRannum: "Losowa liczba (zostaje na dzień)"
|
||||
_dailyRannum:
|
||||
arg1: "Minimalna wartość"
|
||||
arg2: "Maksymalna wartość"
|
||||
dailyRandomPick: "Wybierz losowo z listy (zostaje na dzień)"
|
||||
_dailyRandomPick:
|
||||
arg1: "Listy"
|
||||
seedRandom: "Losowo (z ziarnem)"
|
||||
_seedRandom:
|
||||
arg1: "Ziarno"
|
||||
arg2: "Prawdopodobieństwo"
|
||||
seedRannum: "Losowa liczba (z ziarnem)"
|
||||
_seedRannum:
|
||||
arg1: "Ziarno"
|
||||
arg2: "Minimalna wartość"
|
||||
arg3: "Maksymalna wartość"
|
||||
seedRandomPick: "Wybierz losowo z listy (z ziarnem)"
|
||||
_seedRandomPick:
|
||||
arg1: "Ziarno"
|
||||
arg2: "Listy"
|
||||
DRPWPM: "Wybierz losowo z ważonej listy (zostaje na dzień)"
|
||||
pick: "Wybierz z listy"
|
||||
_pick:
|
||||
arg1: "Listy"
|
||||
arg2: "Położenie"
|
||||
listLen: "Uzyskaj długość listy"
|
||||
_listLen:
|
||||
arg1: "Listy"
|
||||
number: "Liczba"
|
||||
stringToNumber: "Tekst na liczbę"
|
||||
_stringToNumber:
|
||||
arg1: "Tekst"
|
||||
numberToString: "Liczba na tekst"
|
||||
_numberToString:
|
||||
arg1: "Liczba"
|
||||
splitStrByLine: "Rozdziel tekst znakami nowej linii"
|
||||
_splitStrByLine:
|
||||
arg1: "Tekst"
|
||||
ref: "Zmienne"
|
||||
aiScriptVar: "Zmienna AiScript"
|
||||
fn: "Funkcje"
|
||||
_fn:
|
||||
arg1: "Wyjście"
|
||||
for: "Powtórzenie"
|
||||
_for:
|
||||
arg1: "Liczba powtórzeń"
|
||||
arg2: "Działanie"
|
||||
@ -1161,19 +1463,54 @@ _pages:
|
||||
number: "Liczba"
|
||||
boolean: "Flaguj"
|
||||
array: "Listy"
|
||||
enviromentVariables: "Zmienna środowiskowa"
|
||||
pageVariables: "Element strony"
|
||||
_relayStatus:
|
||||
requesting: "Oczekujące"
|
||||
accepted: "Zaakceptowano"
|
||||
rejected: "Odrzucono"
|
||||
_notification:
|
||||
fileUploaded: "Pomyślnie wysłano plik"
|
||||
youGotMention: "{name} wspomniał(a) o Tobie"
|
||||
youGotReply: "{name} odpowiedział(a) Tobie"
|
||||
youGotQuote: "{name} zacytował(a) Ciebie"
|
||||
youRenoted: "{name} udostępnił(a) Twój wpis"
|
||||
youGotPoll: "{name} zagłosował(a) w Twojej ankiecie"
|
||||
youGotMessagingMessageFromUser: "{name} wysłał(a) Ci wiadomość"
|
||||
youGotMessagingMessageFromGroup: "Została wysłana wiadomość do grupy {name}"
|
||||
youWereFollowed: "Zaobserwował(a) Cię"
|
||||
youReceivedFollowRequest: "Otrzymałeś(-aś) prośbę o możliwość obserwacji"
|
||||
yourFollowRequestAccepted: "Twoja prośba o możliwość obserwacji została przyjęta"
|
||||
youWereInvitedToGroup: "Zaproszony(-a) do grupy"
|
||||
_types:
|
||||
all: "Wszystkie"
|
||||
follow: "Obserwowani"
|
||||
mention: "Wspomnij"
|
||||
reply: "Odpowiedzi"
|
||||
renote: "Udostępnij"
|
||||
quote: "Cytuj"
|
||||
reaction: "Reakcja"
|
||||
pollVote: "Głosy w ankietach"
|
||||
receiveFollowRequest: "Otrzymano prośbę o możliwość obserwacji"
|
||||
followRequestAccepted: "Przyjęto prośbę o możliwość obserwacji"
|
||||
groupInvited: "Zaproszono do grup"
|
||||
app: "Powiadomienia z aplikacji"
|
||||
_deck:
|
||||
alwaysShowMainColumn: "Zawsze pokazuj główną kolumnę"
|
||||
columnAlign: "Wyrównaj kolumny"
|
||||
columnMargin: "Odstęp między kolumnami"
|
||||
columnHeaderHeight: "Wysokość nagłówka kolumny"
|
||||
addColumn: "Dodaj kolumnę"
|
||||
swapLeft: "Przesuń w lewo"
|
||||
swapRight: "Przesuń w prawo"
|
||||
swapUp: "Zamień z powyższym"
|
||||
swapDown: "Zamień z poniższym"
|
||||
stackLeft: "Przypnij do lewej"
|
||||
popRight: "Odepnij w prawo"
|
||||
profile: "Profil"
|
||||
_columns:
|
||||
main: "Główna"
|
||||
widgets: "Widżety"
|
||||
notifications: "Powiadomienia"
|
||||
tl: "Oś czasu"
|
||||
antenna: "Anteny"
|
||||
|
@ -1,30 +1,88 @@
|
||||
---
|
||||
_lang_: "Português"
|
||||
headlineMisskey: "Rede conectada por notas"
|
||||
monthAndDay: "{day}/{month}"
|
||||
search: "Pesquisar"
|
||||
notifications: "Notificações"
|
||||
username: "Nome de usuário"
|
||||
password: "Senha"
|
||||
forgotPassword: "Esqueci a senha"
|
||||
fetchingAsApObject: "Buscando no Fediverso"
|
||||
ok: "OK"
|
||||
gotIt: "Entendi"
|
||||
cancel: "Cancelar"
|
||||
enterUsername: "Digite o nome de usuário"
|
||||
renotedBy: "Repostado por {user}"
|
||||
noNotes: "Sem posts"
|
||||
noNotifications: "Sem notificações"
|
||||
instance: "Instância"
|
||||
settings: "Configurações"
|
||||
basicSettings: "Configurações básicas"
|
||||
otherSettings: "Outras configurações"
|
||||
openInWindow: "Abrir numa janela"
|
||||
profile: "Perfil"
|
||||
timeline: "Timeline"
|
||||
login: "Iniciar sessão"
|
||||
loggingIn: "Iniciando sessão…"
|
||||
logout: "Sair"
|
||||
signup: "Registrar-se"
|
||||
uploading: "Enviando…"
|
||||
save: "Guardar"
|
||||
users: "Usuários"
|
||||
favorite: "Favoritar"
|
||||
favorites: "Favoritar"
|
||||
showMore: "Ver mais"
|
||||
youGotNewFollower: "Você tem um novo seguidor"
|
||||
followRequestAccepted: "Pedido de seguir aceito"
|
||||
note: "Post"
|
||||
notes: "Posts"
|
||||
enterEmoji: "Inserir emoji"
|
||||
renote: "Repostar"
|
||||
renoted: "Repostado"
|
||||
cantRenote: "Não pode repostar"
|
||||
cantReRenote: "Não pode repostar este repost"
|
||||
pinnedNote: "Post fixado"
|
||||
sensitive: "Conteúdo sensível"
|
||||
mute: "Silenciar"
|
||||
unmute: "Dessilenciar"
|
||||
settingGuide: "Guia de configuração"
|
||||
instances: "Instância"
|
||||
registeredAt: "Registrado em"
|
||||
perHour: "por hora"
|
||||
perDay: "por dia"
|
||||
noUsers: "Sem usuários"
|
||||
messageRead: "Lida"
|
||||
lightThemes: "Tema claro"
|
||||
darkThemes: "Tema escuro"
|
||||
addFile: "Adicionar arquivo"
|
||||
nsfw: "Conteúdo sensível"
|
||||
monthX: "mês de {month}"
|
||||
pinnedNotes: "Post fixado"
|
||||
smtpUser: "Nome de usuário"
|
||||
smtpPass: "Senha"
|
||||
user: "Usuários"
|
||||
_email:
|
||||
_follow:
|
||||
title: "Você tem um novo seguidor"
|
||||
_mfm:
|
||||
search: "Pesquisar"
|
||||
_theme:
|
||||
keys:
|
||||
renote: "Repostar"
|
||||
_sfx:
|
||||
note: "Posts"
|
||||
notification: "Notificações"
|
||||
_widgets:
|
||||
notifications: "Notificações"
|
||||
timeline: "Timeline"
|
||||
_profile:
|
||||
username: "Nome de usuário"
|
||||
_exportOrImport:
|
||||
muteList: "Silenciar"
|
||||
_notification:
|
||||
youWereFollowed: "Você tem um novo seguidor"
|
||||
_types:
|
||||
renote: "Repostar"
|
||||
_deck:
|
||||
_columns:
|
||||
notifications: "Notificações"
|
||||
|
@ -1,11 +1,13 @@
|
||||
---
|
||||
_lang_: "Русский"
|
||||
headlineMisskey: "Сеть, сплетённая из заметок"
|
||||
introMisskey: "Добро пожаловать! Misskey — это децентрализованный сервис микроблогов с открытым исходным кодом.\nПишите «заметки» — делитесь со всеми происходящим вокруг или рассказывайте о себе 📡\nСтавьте «реакции» — выражайте свои чувства и эмоции от заметок других 👍\nОткройте для себя новый мир 🚀"
|
||||
monthAndDay: "{day}.{month}"
|
||||
search: "Поиск"
|
||||
notifications: "Уведомления"
|
||||
username: "Имя пользователя"
|
||||
password: "Пароль"
|
||||
forgotPassword: "Пароль забыт"
|
||||
fetchingAsApObject: "Приём с других сайтов"
|
||||
ok: "Окей"
|
||||
gotIt: "Ясно!"
|
||||
@ -79,6 +81,8 @@ somethingHappened: "Что-то пошло не так"
|
||||
retry: "Повторить попытку"
|
||||
pageLoadError: "Не удалось загрузить страницу"
|
||||
pageLoadErrorDescription: "Обычно это случается из-за сбоев в сети или кэша браузера. Попробуйте очистить кэш, или подождать пару минут, а потом попытаться загрузить страницу снова."
|
||||
serverIsDead: "Ответа от сервера нет. Пожалуйста, подождите немного и повторите попытку."
|
||||
youShouldUpgradeClient: "Чтобы просмотреть эту страницу, пожалуйста, обновите ее."
|
||||
enterListName: "Название списка"
|
||||
privacy: "Конфиденциальность"
|
||||
makeFollowManuallyApprove: "Принимать подписчиков вручную"
|
||||
@ -96,12 +100,12 @@ cantRenote: "Это нельзя репостить."
|
||||
cantReRenote: "Невозможно репостить репост."
|
||||
quote: "Цитата"
|
||||
pinnedNote: "Закреплённая заметка"
|
||||
pinned: "Закрепить в профиле"
|
||||
you: "Вы"
|
||||
clickToShow: "Нажмите для просмотра"
|
||||
sensitive: "Содержимое не для всех"
|
||||
add: "Добавить"
|
||||
reaction: "Реакции"
|
||||
reactionSettingDescription: "Подберите, что будет у вас в палитре реакций"
|
||||
reactionSettingDescription2: "Расставляйте перетаскиванием, удаляйте нажатием, добавляйте кнопкой «+»."
|
||||
rememberNoteVisibility: "Запоминать видимость заметок"
|
||||
attachCancel: "Удалить вложение"
|
||||
@ -125,6 +129,7 @@ editWidgets: "Редактировать виджеты"
|
||||
editWidgetsExit: "Готово"
|
||||
customEmojis: "Эмодзи пользователя"
|
||||
emoji: "Эмодзи"
|
||||
emojis: "Эмодзи"
|
||||
emojiName: "Название эмодзи"
|
||||
emojiUrl: "URL эмодзи"
|
||||
addEmoji: "Добавить эмодзи"
|
||||
@ -136,7 +141,7 @@ flagAsBotDescription: "Включите, если этот аккаунт упр
|
||||
flagAsCat: "Аккаунт кота"
|
||||
flagAsCatDescription: "Включите, и этот аккаунт будет помечен как кошачий."
|
||||
autoAcceptFollowed: "Принимать подписчиков автоматически"
|
||||
addAcount: "Добавить аккаунт"
|
||||
addAccount: "Добавить учётную запись"
|
||||
loginFailed: "Неудачная попытка входа"
|
||||
showOnRemote: "Перейти к оригиналу на сайт"
|
||||
general: "Общее"
|
||||
@ -239,7 +244,7 @@ explore: "Обзор"
|
||||
games: "Игры Misskey"
|
||||
messageRead: "Прочитали"
|
||||
noMoreHistory: "История закончилась"
|
||||
startMessaging: "Отправить сообщение"
|
||||
startMessaging: "Начать общение"
|
||||
nUsersRead: "Прочитали {n}"
|
||||
agreeTo: "Я соглашаюсь с {0}"
|
||||
tos: "Пользовательское соглашение"
|
||||
@ -276,6 +281,7 @@ emptyDrive: "Диск пуст"
|
||||
emptyFolder: "Папка пуста"
|
||||
unableToDelete: "Удаление невозможно"
|
||||
inputNewFileName: "Введите имя нового файла"
|
||||
inputNewDescription: "Введите новую подпись"
|
||||
inputNewFolderName: "Пожалуйста, введите новое имя папки!"
|
||||
circularReferenceFolder: "Вы пытаетесь переместить папку внутрь себя."
|
||||
hasChildFilesOrFolders: "Эта папка не пуста и не может быть удалена."
|
||||
@ -307,8 +313,8 @@ monthX: "{month} месяц"
|
||||
yearX: "{year} год"
|
||||
pages: "Страницы"
|
||||
integration: "Интеграция"
|
||||
connectSerice: "Соединение"
|
||||
disconnectSerice: "Отключение"
|
||||
connectService: "Подключиться"
|
||||
disconnectService: "Отключиться"
|
||||
enableLocalTimeline: "Включить локальную ленту"
|
||||
enableGlobalTimeline: "Включить глобальную ленту"
|
||||
disablingTimelinesInfo: "У администраторов и модераторов есть доступ ко всем лентам, даже если они отключены."
|
||||
@ -322,12 +328,13 @@ driveCapacityPerRemoteAccount: "Объём диска на одного поль
|
||||
inMb: "В мегабайтах"
|
||||
iconUrl: "Ссылка на аватар"
|
||||
bannerUrl: "Ссылка на изображение в шапке"
|
||||
backgroundImageUrl: "Ссылка на фоновое изображение"
|
||||
basicInfo: "Общая информация"
|
||||
pinnedUsers: "Прикреплённый пользователь"
|
||||
pinnedUsersDescription: "Перечислите по одному имени пользователя в строке. Пользователи, перечисленные здесь, будут привязаны к закладке \"Изучение\"."
|
||||
pinnedPages: "Закрепленные страницы"
|
||||
pinnedPagesDescription: "Если хотите закрепить страницы на главной сайта, сюда можно добавить пути к ним, каждый в отдельной строке."
|
||||
pinnedClipId: "Идентификатор закреплённой памятки"
|
||||
pinnedClipId: "Идентификатор закреплённой подборки"
|
||||
pinnedNotes: "Закреплённая заметка"
|
||||
hcaptcha: "hCaptcha"
|
||||
enableHcaptcha: "Включить hCaptcha"
|
||||
@ -347,7 +354,6 @@ antennaExcludeKeywords: "Исключения"
|
||||
antennaKeywordsDescription: "Пишите слова через пробел в одной строке, чтобы ловить их появление вместе; на отдельных строках располагайте слова, или группы слов, чтобы ловить любые из них."
|
||||
notifyAntenna: "Уведомлять о новых заметках"
|
||||
withFileAntenna: "Только заметки с вложениями"
|
||||
serviceworker: "ServiceWorker"
|
||||
enableServiceworker: "Включить ServiceWorker"
|
||||
antennaUsersDescription: "Пишите каждое название аккаута на отдельной строке"
|
||||
caseSensitive: "С учётом регистра"
|
||||
@ -403,8 +409,8 @@ invites: "Приглашения"
|
||||
groupName: "Название группы"
|
||||
members: "Участники"
|
||||
transfer: "Отдать"
|
||||
messagingWithUser: "Сообщения пользователей"
|
||||
messagingWithGroup: "Чат в группе"
|
||||
messagingWithUser: "Общение с другим пользователем"
|
||||
messagingWithGroup: "Общение в группе"
|
||||
title: "Заголовок"
|
||||
text: "Текст"
|
||||
enable: "Включить"
|
||||
@ -436,6 +442,7 @@ signinWith: "Использовать {x} для входа"
|
||||
signinFailed: "Невозможно войти в систему. Введенное вами имя пользователя или пароль неверны."
|
||||
tapSecurityKey: "Нажмите на свой электронный ключ"
|
||||
or: "или"
|
||||
language: "Язык"
|
||||
uiLanguage: "Язык интерфейса"
|
||||
groupInvited: "Приглашение в группу"
|
||||
aboutX: "Описание {x}"
|
||||
@ -449,8 +456,8 @@ doing: "В процессе"
|
||||
category: "Категория"
|
||||
tags: "Метки"
|
||||
docSource: "Источник документа"
|
||||
createAccount: "Новый аккаунт"
|
||||
existingAcount: "Уже существующий"
|
||||
createAccount: "Новая учётная запись"
|
||||
existingAccount: "Существующая учётная запись"
|
||||
regenerate: "Создать повторно"
|
||||
fontSize: "Размер шрифта"
|
||||
noFollowRequests: "Нерассмотренные запросы на подписку отсутствуют"
|
||||
@ -468,7 +475,7 @@ promotion: "Продвинуто"
|
||||
promote: "Продвинуть"
|
||||
numberOfDays: "Количество дней"
|
||||
hideThisNote: "Спрятать эту запись"
|
||||
showFeaturedNotesInTimeline: "Показывать в ленте заметки из подборки сайта"
|
||||
showFeaturedNotesInTimeline: "Показывать в ленте заметки из «Горячего»"
|
||||
objectStorage: "Хранилище"
|
||||
useObjectStorage: "Занято в хранилище"
|
||||
objectStorageBaseUrl: "Базовый адрес"
|
||||
@ -521,9 +528,11 @@ deleteAllFiles: "Удалить все файлы"
|
||||
deleteAllFilesConfirm: "Вы хотите удалить все файлы?"
|
||||
removeAllFollowing: "Удалить всех подписчиков"
|
||||
removeAllFollowingDescription: "Отменить все подписки с домена {host}? Пожалуйста, применяйте это действие, если инстанс больше не существует."
|
||||
userSuspended: "Этот пользователь был заморожен"
|
||||
userSuspended: "Эта учётная запись заморожена"
|
||||
userSilenced: "Этот пользователь был заглушен"
|
||||
sidebar: "Боковая панель"
|
||||
yourAccountSuspendedTitle: "Эта учетная запись заблокирована"
|
||||
yourAccountSuspendedDescription: "Эта учетная запись была заблокирована из-за нарушения условий предоставления услуг сервера. Свяжитесь с администратором, если вы хотите узнать более подробную причину. Пожалуйста, не создавайте новую учетную запись."
|
||||
menu: "Меню"
|
||||
divider: "Линия-разделитель"
|
||||
addItem: "Добавить элемент"
|
||||
rooms: "Комната"
|
||||
@ -543,11 +552,12 @@ disablePlayer: "Выключить проигрыватель"
|
||||
expandTweet: "Развернуть твит"
|
||||
themeEditor: "Редактор темы оформления"
|
||||
description: "Описание"
|
||||
describeFile: "Добавить подпись"
|
||||
enterFileDescription: "Введите подпись"
|
||||
author: "Автор"
|
||||
leaveConfirm: "Вы не сохранили изменения. Хотите выйти и потерять их?"
|
||||
manage: "Управление"
|
||||
plugins: "Расширения"
|
||||
pluginInstallWarn: "Пожалуста, не устанавливайте расширения, которым не доверяете"
|
||||
deck: "Пульт"
|
||||
undeck: "Покинуть пульт"
|
||||
useBlurEffectForModal: "Размывка под формой поверх всего"
|
||||
@ -562,11 +572,11 @@ permission: "Разрешения"
|
||||
enableAll: "Включить все"
|
||||
disableAll: "Выключить всё"
|
||||
tokenRequested: "Открыть доступ к учётной записи"
|
||||
pluginTokenRequestedDescription: "Этот плагин сможет пользоваться разрешениями, установленными здесь."
|
||||
pluginTokenRequestedDescription: "Это расширение сможет пользоваться разрешениями, установленными здесь."
|
||||
notificationType: "Тип уведомления"
|
||||
edit: "Изменить"
|
||||
useStarForReactionFallback: "Ставить ★ в качестве реакции вместо неизвестного эмодзи"
|
||||
emailConfig: "Настройки почтового сервера"
|
||||
emailServer: "Сервер электронной почты"
|
||||
enableEmail: "Включить обмен электронной почтой"
|
||||
emailConfigInfo: "Используется для подтверждения адреса электронной почты и сброса пароля."
|
||||
email: "Электронная почта"
|
||||
@ -601,7 +611,6 @@ regenerateLoginToken: "Создать новый токен для входа"
|
||||
regenerateLoginTokenDescription: "Создаёт новый токен, используемый внутри программы во время входа. Обычно в этом нет необходимости. При создании все устройства будут отключены."
|
||||
setMultipleBySeparatingWithSpace: "Можно написать несколько через пробел"
|
||||
fileIdOrUrl: "Идентификатор файла или ссылка"
|
||||
chatOpenBehavior: "Поведение окна чата при открытии"
|
||||
behavior: "Поведение"
|
||||
sample: "Пример"
|
||||
abuseReports: "Жалобы"
|
||||
@ -609,6 +618,8 @@ reportAbuse: "Жалоба"
|
||||
reportAbuseOf: "Пожаловаться на пользователя {name}"
|
||||
fillAbuseReportDescription: "Опишите, пожалуйста, причину жалобы подробнее. Если речь о конкретной заметке, будьте добры приложить ссылку на неё."
|
||||
abuseReported: "Жалоба отправлена. Большое спасибо за информацию."
|
||||
reporteeOrigin: "Куда сообщать"
|
||||
reporterOrigin: "Сообщено"
|
||||
send: "Отправить"
|
||||
abuseMarkAsResolved: "Отметить жалобу как решённую"
|
||||
openInNewTab: "Открыть в новой вкладке"
|
||||
@ -621,30 +632,30 @@ random: "Случайные"
|
||||
system: "Система"
|
||||
switchUi: "Выбор вида"
|
||||
desktop: "Стол"
|
||||
clip: "Памятки"
|
||||
clip: "Подборка"
|
||||
createNew: "Новый документ"
|
||||
optional: "Необязательно"
|
||||
createNewClip: "Новая памятка"
|
||||
createNewClip: "Новая подборка"
|
||||
public: "Общедоступно"
|
||||
i18nInfo: "Misskey переводят на разные языки добровольцы со всего света. Ваша помощь тоже пригодится здесь: {link}."
|
||||
manageAccessTokens: "Управление токенами доступа"
|
||||
accountInfo: "Сведения об учётной записи"
|
||||
notesCount: "Количество заметок"
|
||||
repliesCount: "Сколько раз пользователь кому-то ответил"
|
||||
renotesCount: "Сколько раз пользователь передал чужие заметки"
|
||||
renotesCount: "Сколько раз пользователь делился заметками"
|
||||
repliedCount: "Сколько раз ответили пользователю"
|
||||
renotedCount: "Сколько раз передавали заметки пользователя"
|
||||
renotedCount: "Сколько раз делились заметками пользователя"
|
||||
followingCount: "Количество подписок"
|
||||
followersCount: "Количество подписавшихся"
|
||||
sentReactionsCount: "Сколько раз пользователь отреагировал"
|
||||
receivedReactionsCount: "Сколько раз отреагировали на заметки пользователя"
|
||||
pollVotesCount: "Сколько раз участвовал в опросах"
|
||||
sentReactionsCount: "Количество реакций пользователя"
|
||||
receivedReactionsCount: "Количество реакций на заметки пользователя"
|
||||
pollVotesCount: "Сколько раз пользователь участвовал в опросах"
|
||||
pollVotedCount: "Сколько раз участвовали в опросах пользователя"
|
||||
yes: "Да"
|
||||
no: "Нет"
|
||||
driveFilesCount: "Количество файлов на диске"
|
||||
driveUsage: "Сколько места занято на диске"
|
||||
noCrawle: "Паукам вход воспрещён"
|
||||
driveUsage: "Занято места на диске"
|
||||
noCrawle: "Запретить паукам индексировать сайт"
|
||||
noCrawleDescription: "Просьба поисковым системам не ходить по вашему профилю, по заметкам, страницам и не индексировать их."
|
||||
lockedAccountInfo: "Даже если вы вручную подтверждаете подписки, кто угодно может читать ваши заметки, если вы не отмечаете их «для подписчиков»."
|
||||
alwaysMarkSensitive: "Отмечать файлы как «содержимое не для всех» по умолчанию"
|
||||
@ -659,7 +670,7 @@ pageLikedCount: "Количество страниц, понравившихся
|
||||
reversiCount: "Количество сыгранных игр в реверси"
|
||||
contact: "Как связаться"
|
||||
useSystemFont: "Использовать шрифт, предлагаемый системой"
|
||||
clips: "Памятки"
|
||||
clips: "Подборки"
|
||||
experimentalFeatures: "Экспериментальные функции"
|
||||
developer: "Разработчик"
|
||||
makeExplorable: "Опубликовать профиль в «Обзоре»."
|
||||
@ -668,19 +679,180 @@ showGapBetweenNotesInTimeline: "Показывать разделитель ме
|
||||
duplicate: "Дубликат"
|
||||
left: "Влево"
|
||||
center: "По центру"
|
||||
wide: "Толстый"
|
||||
narrow: "Тонкий"
|
||||
reloadToApplySetting: "Это настройка вступает в силу при загрузке страницы. Перезагрузить сейчас?"
|
||||
needReloadToApply: "Чтобы это вступило в силу, требуется перезагрузка."
|
||||
showTitlebar: "Показать заголовок"
|
||||
clearCache: "Очистить кэш"
|
||||
onlineUsersCount: "Пользователей сейчас в сети: {n}"
|
||||
nUsers: "Пользователей: {n}"
|
||||
nNotes: "Заметок: {n}"
|
||||
sendErrorReports: "Посылать отчёты о сбоях"
|
||||
sendErrorReportsDescription: "Если включено, когда возникнет какая-нибудь техническая проблема, подробные сведения об этом будут отправлены разработчикам Misskey. Это очень помогает делать программу лучше. В отчёты попадают тип и версия ОС, браузера, журнал действий (что привело к сбою) и тому подобное."
|
||||
myTheme: "Личная тема"
|
||||
backgroundColor: "Фон"
|
||||
accentColor: "Акцент"
|
||||
textColor: "Текст"
|
||||
saveAs: "Сохранить под названием…"
|
||||
advanced: "Для продвинутых"
|
||||
value: "Значения"
|
||||
createdAt: "Создано"
|
||||
updatedAt: "Обновлено"
|
||||
saveConfirm: "Сохранить изменения?"
|
||||
deleteConfirm: "Удалить?"
|
||||
invalidValue: "Недопустимое значение."
|
||||
registry: "Реестр"
|
||||
closeAccount: "Закрыть учётную запись"
|
||||
currentVersion: "Используемая версия"
|
||||
latestVersion: "Самая свежая версия"
|
||||
youAreRunningUpToDateClient: "У вас самая свежая версия клиента."
|
||||
newVersionOfClientAvailable: "Доступна более свежая версия клиента."
|
||||
usageAmount: "Использовано"
|
||||
capacity: "Ёмкость"
|
||||
inUse: "Занято"
|
||||
editCode: "Редактировать исходный текст"
|
||||
apply: "Применить"
|
||||
receiveAnnouncementFromInstance: "Получать оповещения с инстанса"
|
||||
emailNotification: "Уведомления по электронной почте"
|
||||
publish: "Опубликовать"
|
||||
inChannelSearch: "Поиск по каналу"
|
||||
useReactionPickerForContextMenu: "Открывать палитру реакций правой кнопкой"
|
||||
typingUsers: "Стук клавиш. Это {users}…"
|
||||
jumpToSpecifiedDate: "Перейти к заданной дате"
|
||||
showingPastTimeline: "Отображается старая лента"
|
||||
clear: "Очистить"
|
||||
markAllAsRead: "Отметить всё как прочитанное"
|
||||
goBack: "Выход"
|
||||
unlikeConfirm: "В самом деле отменить «нравится»?"
|
||||
fullView: "Полный вид"
|
||||
quitFullView: "Закрыть полный вид"
|
||||
addDescription: "Добавить описание"
|
||||
userPagePinTip: "Можно добавить сюда заметки, выбрав нужную, и включив в её меню пункт «Закрепить в профиле»."
|
||||
notSpecifiedMentionWarning: "В этой заметке есть упоминание тех, кто не включён в адресаты"
|
||||
info: "Описание"
|
||||
userInfo: "Сведения о пользователе"
|
||||
unknown: "Неизвестно"
|
||||
onlineStatus: "Присутствие в сети"
|
||||
hideOnlineStatus: "Скрыть присутствие"
|
||||
hideOnlineStatusDescription: "Сокрытие присутствия делает некоторые функции, такие как поиск, менее удобными."
|
||||
online: "В сети"
|
||||
active: "Действует"
|
||||
offline: "Не в сети"
|
||||
notRecommended: "Не рекомендуется"
|
||||
botProtection: "Ботозащита"
|
||||
instanceBlocking: "Блокировка инстансов"
|
||||
selectAccount: "Выберите учётную запись"
|
||||
enabled: "Вкл."
|
||||
disabled: "Откл."
|
||||
quickAction: "Быстрое действие"
|
||||
user: "Пользователи"
|
||||
administration: "Управление"
|
||||
accounts: "Учётные записи"
|
||||
switch: "Переключение"
|
||||
noMaintainerInformationWarning: "Не заполнены сведения об администраторах"
|
||||
noBotProtectionWarning: "Ботозащита не настроена"
|
||||
configure: "Настроить"
|
||||
postToGallery: "Опубликовать в галерею"
|
||||
gallery: "Галерея"
|
||||
recentPosts: "Недавние публикации"
|
||||
popularPosts: "Популярные публикации"
|
||||
shareWithNote: "Поделиться заметкой"
|
||||
ads: "Реклама"
|
||||
expiration: "Опрос длится"
|
||||
memo: "Памятка"
|
||||
priority: "Приоритет"
|
||||
high: "Высокий"
|
||||
middle: "Средне"
|
||||
low: "Низкий"
|
||||
emailNotConfiguredWarning: "Не указан адрес электронной почты"
|
||||
ratio: "Соотношение"
|
||||
previewNoteText: "Предварительный просмотр текста"
|
||||
customCss: "Индивидуальный CSS"
|
||||
customCssWarn: "Используйте эту настройку только если знаете, что делаете. Ошибки здесь чреваты тем, что сайт перестанет нормально работать у вас."
|
||||
global: "Всеобщая"
|
||||
squareAvatars: "Квадратные аватарки"
|
||||
sent: "Отправить"
|
||||
received: "Получено"
|
||||
searchResult: "Результаты поиска"
|
||||
hashtags: "Хэштег"
|
||||
troubleshooting: "Разрешение проблем"
|
||||
useBlurEffect: "Размытие в интерфейсе"
|
||||
learnMore: "Подробнее"
|
||||
misskeyUpdated: "Misskey обновился!"
|
||||
whatIsNew: "Что новенького?"
|
||||
translate: "Перевод"
|
||||
translatedFrom: "{x}Перевод с английского"
|
||||
accountDeletionInProgress: "В настоящее время выполняется удаление учетной записи"
|
||||
usernameInfo: "Имя, которое отличает вашу учетную запись от других на этом сервере. Вы можете использовать алфавит (a~z, A~Z), цифры (0~9) или символы подчеркивания (_). Имена пользователей не могут быть изменены позже."
|
||||
aiChanMode: "ИИ режим"
|
||||
keepCw: "Сохраняйте Предупреждения о содержимом"
|
||||
lastCommunication: "Последнее сообщение"
|
||||
resolved: "Решен"
|
||||
unresolved: "Неразрешенные"
|
||||
itsOff: "Он выключен!"
|
||||
emailRequiredForSignup: "Требуется адрес электронной почты для регистрации аккаунта"
|
||||
unread: "Непрочитанное"
|
||||
filter: "Фильтры"
|
||||
controlPanel: "Панель управления"
|
||||
manageAccounts: "Управление аккаунтом"
|
||||
makeReactionsPublic: "Опубликовать список реакций"
|
||||
makeReactionsPublicDescription: "Список сделанных вами реакций доступен для просмотра всем желающим."
|
||||
classic: "Классика"
|
||||
unmuteThread: "Отключить звук"
|
||||
ffVisibilityDescription: "Вы можете установить объем вашей следующей/последней информации."
|
||||
voteConfirm: "Вы бы проголосовали за \"{choice}\"?"
|
||||
hide: "Спрятать"
|
||||
leaveGroup: "Покинуть группу"
|
||||
leaveGroupConfirm: "Вы хотите оставить \"{name}\"?"
|
||||
welcomeBackWithName: "С возвращением, {name}!"
|
||||
clickToFinishEmailVerification: "Пожалуйста, нажмите [{ok}], чтобы завершить подтверждение адреса электронной почты."
|
||||
_emailUnavailable:
|
||||
used: "Уже используется"
|
||||
format: "Неправильный формат"
|
||||
mx: "Это неправильный почтовый сервер!"
|
||||
smtp: "Почтовый сервер не отвечает"
|
||||
_ffVisibility:
|
||||
public: "Опубликовать"
|
||||
private: "Частный"
|
||||
_signup:
|
||||
almostThere: "Почти готово!"
|
||||
emailAddressInfo: "Пожалуйста, введите адрес электронной почты, который вы используете."
|
||||
emailSent: "На указанный вами адрес электронной почты ({email}) было отправлено письмо с подтверждением. Перейдите по ссылке в электронном письме, чтобы завершить создание учетной записи."
|
||||
_accountDelete:
|
||||
accountDelete: "Удалить свой аккаунт"
|
||||
mayTakeTime: "Удаление учетной записи - это тяжелый процесс, который может занять много времени, если у вас создано много контента или загружено много файлов."
|
||||
sendEmail: "Мы отправим уведомление на зарегистрированный вами адрес электронной почты, когда ваша учетная запись будет удалена."
|
||||
requestAccountDelete: "Запросить удаление вашей учетной записи"
|
||||
started: "Процесс удаления начался."
|
||||
inProgress: "Удаление в процессе"
|
||||
_ad:
|
||||
back: "Выход"
|
||||
reduceFrequencyOfThisAd: "Реже показывать эту рекламу"
|
||||
_forgotPassword:
|
||||
enterEmail: "Введите адрес электронной почты, который ввели при регистрации. На неё будет выслана ссылка для смены пароля."
|
||||
ifNoEmail: "Если вы не ввели свой адрес электронной почты, свяжитесь с администратором ресурса, чтобы сменить пароль."
|
||||
contactAdmin: "Здесь не используются адреса электронной почты, так что свяжитесь с администратором, чтобы поменять пароль."
|
||||
_gallery:
|
||||
my: "Личная"
|
||||
liked: "Понравившееся"
|
||||
like: "Нравится!"
|
||||
unlike: "Отменить «нравится»"
|
||||
_email:
|
||||
_follow:
|
||||
title: "Новый подписчик"
|
||||
_receiveFollowRequest:
|
||||
title: "Новый запрос на подписку."
|
||||
_plugin:
|
||||
install: "Установка расширений"
|
||||
installWarn: "Пожалуйста, не устанавливайте расширения, которым не доверяете."
|
||||
manage: "Управление расширениями"
|
||||
_registry:
|
||||
scope: "Область"
|
||||
key: "Ключ"
|
||||
keys: "Ключ"
|
||||
domain: "Домен"
|
||||
createKey: "Новый ключ"
|
||||
_aboutMisskey:
|
||||
about: "Misskey — программа с открытым исходным кодом, которую разрабатывает syuilo с 2014 года."
|
||||
contributors: "Основные соавторы"
|
||||
@ -696,7 +868,7 @@ _nsfw:
|
||||
force: "Скрывать вообще все файлы"
|
||||
_mfm:
|
||||
cheatSheet: "Подсказка по разметке MFM"
|
||||
intro: "MFM — язык оформления текста, придуманный специально для Misskey, который здесь можно много где использовать. На этой странице собраны и кратко изложены способы его применения."
|
||||
intro: "MFM — язык оформления текста, который придуман специально для Misskey и готов для применения во многих местах. На этой странице собраны и кратко изложены способы его использовать."
|
||||
dummy: "Misskey расширяет границы Федиверса."
|
||||
mention: "Упоминание"
|
||||
mentionDescription: "При помощи знака «собака» перед именем можно упомянуть какого-нибудь пользователя."
|
||||
@ -742,7 +914,22 @@ _mfm:
|
||||
twitchDescription: "Заставляет трястись как одержимого"
|
||||
spin: "Вращение"
|
||||
spinDescription: "Так можно крутить содержимое в разных направлениях."
|
||||
x2: "Крупный шрифт"
|
||||
x2Description: "Увеличивает содержимое."
|
||||
x3: "Ещё крупнее"
|
||||
x3Description: "Сильнее увеличивает содержимое."
|
||||
x4: "Совсем крупно"
|
||||
x4Description: "Увеличивает содержимое совсем сильно."
|
||||
blur: "Размытие"
|
||||
blurDescription: "Размывает текст до нечитаемости, будто его поместили за матовое стекло. Наведение указателя мыши на размытый текст возвращает чёткость."
|
||||
font: "Шрифт"
|
||||
fontDescription: "Так можно писать произвольным шрифтом."
|
||||
rainbow: "Радуга"
|
||||
rainbowDescription: "Заставлять содержимое отображаться в цветах радуги."
|
||||
sparkle: "Блеск"
|
||||
sparkleDescription: "Добавьте эффект искрящихся частиц."
|
||||
rotate: "Повернуть"
|
||||
rotateDescription: "Повернуть на указанный угол."
|
||||
_reversi:
|
||||
reversi: "Реверси"
|
||||
gameSettings: "Настройки игры"
|
||||
@ -794,9 +981,10 @@ _channel:
|
||||
following: "Подписки"
|
||||
usersCount: "Участников: {n}"
|
||||
notesCount: "Заметок: {n}"
|
||||
_sidebar:
|
||||
full: "Полностью"
|
||||
icon: "Только значки"
|
||||
_menuDisplay:
|
||||
sideFull: "Сторона"
|
||||
sideIcon: "Сторона (иконки)"
|
||||
top: "Вверх"
|
||||
hide: "Спрятать"
|
||||
_wordMute:
|
||||
muteWords: "Скрыть слово"
|
||||
@ -812,6 +1000,7 @@ _theme:
|
||||
install: "Установить тему"
|
||||
manage: "Менеджер тем"
|
||||
code: "Код темы"
|
||||
description: "Описание"
|
||||
installed: "Тема «{name}» установлена."
|
||||
installedThemes: "Установленные темы"
|
||||
builtinThemes: "Встроенные темы"
|
||||
@ -930,7 +1119,7 @@ _tutorial:
|
||||
step7_2: "Хотите изучить Misskey глубже — добро пожаловать в раздел «{help}»."
|
||||
step7_3: "Приятно вам провести время с Misskey🚀"
|
||||
_2fa:
|
||||
alreadyRegistered: "Настройка завершена"
|
||||
alreadyRegistered: "Двухфакторная аутентификация уже настроена."
|
||||
registerDevice: "Зарегистрируйте ваше устройство"
|
||||
registerKey: "Зарегистрировать ключ"
|
||||
step1: "Прежде всего, установите на устройство приложение для аутентификации, например, {a} или {b}."
|
||||
@ -967,6 +1156,10 @@ _permissions:
|
||||
"write:user-groups": "Изменять и удалять группы пользователей"
|
||||
"read:channels": "Смотреть каналы"
|
||||
"write:channels": "Изменять каналы"
|
||||
"read:gallery": "Смотреть галерею"
|
||||
"write:gallery": "Работа с галереей"
|
||||
"read:gallery-likes": "Посмотреть галерею лайков"
|
||||
"write:gallery-likes": "Манипулируйте понравившейся галереей"
|
||||
_auth:
|
||||
shareAccess: "Дать доступ для «{name}» к вашей учётной записи?"
|
||||
shareAccessAsk: "Уверены, что хотите дать приложению доступ к своей учётной записи?"
|
||||
@ -1005,6 +1198,9 @@ _widgets:
|
||||
button: "Кнопка"
|
||||
onlineUsers: "Пользователи сейчас с сети"
|
||||
jobQueue: "Очередь заданий"
|
||||
serverMetric: "Показатели сервера"
|
||||
aiscript: "Консоль AiScript"
|
||||
aichan: "Ай"
|
||||
_cw:
|
||||
hide: "Спрятать"
|
||||
show: "Показать еще"
|
||||
@ -1072,6 +1268,7 @@ _exportOrImport:
|
||||
muteList: "Скрытые"
|
||||
blockingList: "Заблокированные"
|
||||
userLists: "Списки"
|
||||
excludeMutingUsers: "Исключение отключенных пользователей"
|
||||
_charts:
|
||||
federationInstancesIncDec: "Изменение внешних связей"
|
||||
federationInstancesTotal: "Количество внешних связей"
|
||||
@ -1185,7 +1382,7 @@ _pages:
|
||||
liked: "Понравившиеся страницы"
|
||||
featured: "Популярные"
|
||||
inspector: "Инспектор"
|
||||
contents: "Содержательные"
|
||||
contents: "Содержимое"
|
||||
content: "Содержимое"
|
||||
variables: "Переменные"
|
||||
title: "Заголовок"
|
||||
@ -1496,6 +1693,7 @@ _deck:
|
||||
swapDown: "Переставить ниже"
|
||||
stackLeft: "В столбик влево"
|
||||
popRight: "Из столбика вправо"
|
||||
profile: "Профиль"
|
||||
_columns:
|
||||
main: "Основная"
|
||||
widgets: "Виджеты"
|
||||
|
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"
|
@ -1,7 +1,7 @@
|
||||
---
|
||||
_lang_: "Українська"
|
||||
headlineMisskey: "Мережа об'єднана записами"
|
||||
introMisskey: "Ласкаво просимо! Misskey - децентралізована служба мікроблогів з відкритим кодом.\nСтворюйте \"записи\", щоб поділитися тим, що відбувається, і розповісти всім про себе 📡\nЗа допомогою \"реакцій\" ви також можете швидко висловити свої почуття щодо записів інших 👍\nДавайте досліджувати новий світ 🚀"
|
||||
introMisskey: "Ласкаво просимо! Misskey - децентралізована служба мікроблогів з відкритим кодом.\nСтворюйте \"нотатки\", щоб поділитися тим, що відбувається, і розповісти всім про себе 📡\nЗа допомогою \"реакцій\" ви також можете швидко висловити свої почуття щодо нотаток інших 👍\nДосліджуймо новий світ! 🚀"
|
||||
monthAndDay: "{month}/{day}"
|
||||
search: "Пошук"
|
||||
notifications: "Сповіщення"
|
||||
@ -97,12 +97,12 @@ cantRenote: "Неможливо поширити."
|
||||
cantReRenote: "Поширення не можливо поширити."
|
||||
quote: "Цитата"
|
||||
pinnedNote: "Закріплений запис"
|
||||
pinned: "Закріпити"
|
||||
you: "Ви"
|
||||
clickToShow: "Натисніть для перегляду"
|
||||
sensitive: "NSFW"
|
||||
add: "Додати"
|
||||
reaction: "Реакції"
|
||||
reactionSettingDescription: "Виберіть свої улюблені реакції, які хочете закріпити в селекторі реакцій."
|
||||
reactionSettingDescription2: "Перемістити щоб змінити порядок, Клацнути мишою щоб видалити, Натиснути \"+\" щоб додати."
|
||||
rememberNoteVisibility: "Пам’ятати параметри видимісті"
|
||||
attachCancel: "Видалити вкладення"
|
||||
@ -126,6 +126,7 @@ editWidgets: "Редагувати віджети"
|
||||
editWidgetsExit: "Готово"
|
||||
customEmojis: "Кастомні емоджі"
|
||||
emoji: "Емоджі"
|
||||
emojis: "Емоджі"
|
||||
emojiName: "Назва емоджі"
|
||||
emojiUrl: "URL емодзі"
|
||||
addEmoji: "Додати емодзі"
|
||||
@ -137,7 +138,6 @@ flagAsBotDescription: "Ввімкніть якщо цей обліковий з
|
||||
flagAsCat: "Акаунт кота"
|
||||
flagAsCatDescription: "Ввімкніть, щоб позначити, що обліковий запис є котиком."
|
||||
autoAcceptFollowed: "Автоматично приймати запити на підписку від користувачів, на яких ви підписані"
|
||||
addAcount: "Додати акаунт"
|
||||
loginFailed: "Не вдалося увійти"
|
||||
showOnRemote: "Переглянути в оригіналі"
|
||||
general: "Загальне"
|
||||
@ -307,8 +307,6 @@ monthX: "{month}"
|
||||
yearX: "{year}"
|
||||
pages: "Сторінки"
|
||||
integration: "Інтеграція"
|
||||
connectSerice: "Під’єднати"
|
||||
disconnectSerice: "Відключитися"
|
||||
enableLocalTimeline: "Увімкнути локальну стрічку"
|
||||
enableGlobalTimeline: "Увімкнути глобальну стрічку"
|
||||
disablingTimelinesInfo: "Адміністратори та модератори завжди мають доступ до всіх стрічок, навіть якщо вони вимкнуті."
|
||||
@ -346,7 +344,6 @@ antennaExcludeKeywords: "Винятки"
|
||||
antennaKeywordsDescription: "Розділення ключових слів пробілами для \"І\" або з нової лінійки для \"АБО\""
|
||||
notifyAntenna: "Сповіщати про нові нотатки"
|
||||
withFileAntenna: "Тільки нотатки з вкладеними файлами"
|
||||
serviceworker: "ServiceWorker"
|
||||
enableServiceworker: "Ввімкнути ServiceWorker"
|
||||
antennaUsersDescription: "Список імя користувачів в стопчик"
|
||||
caseSensitive: "З урахуванням регістру"
|
||||
@ -449,7 +446,6 @@ category: "Категорія"
|
||||
tags: "Теги"
|
||||
docSource: "Джерело цього документа"
|
||||
createAccount: "Створити акаунт"
|
||||
existingAcount: "Існуючий акаунт"
|
||||
regenerate: "Оновити"
|
||||
fontSize: "Розмір шрифту"
|
||||
noFollowRequests: "Немає запитів на підписку"
|
||||
@ -521,7 +517,6 @@ removeAllFollowing: "Скасувати всі підписки"
|
||||
removeAllFollowingDescription: "Скасувати підписку на всі акаунти з {host}. Будь ласка, робіть це, якщо інстанс більше не існує."
|
||||
userSuspended: "Обліковий запис заблокований."
|
||||
userSilenced: "Обліковий запис приглушений."
|
||||
sidebar: "Бокова панель"
|
||||
divider: "Розділювач"
|
||||
addItem: "Додати елемент"
|
||||
rooms: "Кімнати"
|
||||
@ -545,7 +540,6 @@ author: "Автор"
|
||||
leaveConfirm: "Зміни не збережені. Ви дійсно хочете скасувати зміни?"
|
||||
manage: "Управління"
|
||||
plugins: "Плагіни"
|
||||
pluginInstallWarn: "Будь ласка не встановлюйте плагінів яким ви не довіряєте."
|
||||
deck: "Дек"
|
||||
undeck: "Залишити Дек"
|
||||
useBlurEffectForModal: "Ефект розмиття під модальними діалогами"
|
||||
@ -564,7 +558,6 @@ pluginTokenRequestedDescription: "Цей плагін зможе викорис
|
||||
notificationType: "Тип сповіщення"
|
||||
edit: "Редагувати"
|
||||
useStarForReactionFallback: "Використовувати ★ як запасний варіант, якщо емодзі реакції невідомий"
|
||||
emailConfig: "Налаштування email сервера"
|
||||
enableEmail: "Увімкнути функцію доставки пошти"
|
||||
emailConfigInfo: "Використовується для підтвердження електронної пошти підчас реєстрації, а також для відновлення паролю."
|
||||
email: "E-mail"
|
||||
@ -599,7 +592,6 @@ regenerateLoginToken: "Оновити Login Token"
|
||||
regenerateLoginTokenDescription: "Регенерувати внутрішній ключ використовуваний під час входу. Зазвичай цього не потрібно робити. При регенерації всі пристрої вийдуть з системи."
|
||||
setMultipleBySeparatingWithSpace: "Можна вказати кілька значень, відділивши їх пробілом."
|
||||
fileIdOrUrl: "Ідентифікатор файлу або посилання"
|
||||
chatOpenBehavior: "Поводження вікна переписки під час відкриття"
|
||||
behavior: "Поведінка"
|
||||
sample: "Приклад"
|
||||
abuseReports: "Скарги"
|
||||
@ -689,6 +681,23 @@ deleteConfirm: "Ви дійсно бажаєте це видалити?"
|
||||
invalidValue: "Некоректне значення."
|
||||
registry: "Реєстр"
|
||||
closeAccount: "Закрити обліковий запис"
|
||||
goBack: "Назад"
|
||||
info: "Інформація"
|
||||
user: "Користувачі"
|
||||
administration: "Управління"
|
||||
expiration: "Опитування закінчується"
|
||||
middle: "Середній"
|
||||
global: "Глобальна"
|
||||
sent: "Відправити"
|
||||
hashtags: "Хештеґ"
|
||||
hide: "Сховати"
|
||||
_ad:
|
||||
back: "Назад"
|
||||
_gallery:
|
||||
unlike: "Не вподобати"
|
||||
_email:
|
||||
_follow:
|
||||
title: "Новий підписник"
|
||||
_registry:
|
||||
key: "Ключ"
|
||||
keys: "Ключі"
|
||||
@ -761,6 +770,7 @@ _mfm:
|
||||
blurDescription: "Цей ефект зробить контент розмитим. Контент можна зробити чітким, якщо навести на нього вказівник миші."
|
||||
font: "Шрифт"
|
||||
fontDescription: "Встановлює шрифт для контенту."
|
||||
rotate: "Обертати"
|
||||
_reversi:
|
||||
reversi: "Реверсі"
|
||||
gameSettings: "Налаштування гри"
|
||||
@ -809,9 +819,7 @@ _channel:
|
||||
following: "Підписки"
|
||||
usersCount: "{n} учасників"
|
||||
notesCount: "{n} дописів"
|
||||
_sidebar:
|
||||
full: "Повна"
|
||||
icon: "Аватар"
|
||||
_menuDisplay:
|
||||
hide: "Сховати"
|
||||
_wordMute:
|
||||
muteWords: "Заглушені слова"
|
||||
@ -827,6 +835,7 @@ _theme:
|
||||
install: "Встановити тему"
|
||||
manage: "Керування темами"
|
||||
code: "Код теми"
|
||||
description: "Опис"
|
||||
installed: "Тему {name} встановлено"
|
||||
installedThemes: "Встановлені теми"
|
||||
builtinThemes: "Вбудоваі теми"
|
||||
@ -979,6 +988,7 @@ _weekday:
|
||||
friday: "П'ятниця"
|
||||
saturday: "Субота"
|
||||
_widgets:
|
||||
memo: "Нагадування"
|
||||
notifications: "Сповіщення"
|
||||
timeline: "Стрічка"
|
||||
calendar: "Календар"
|
||||
@ -992,7 +1002,10 @@ _widgets:
|
||||
postForm: "Створення нотатки"
|
||||
slideshow: "Слайд-шоу"
|
||||
button: "Кнопка"
|
||||
onlineUsers: "Користувачі онлайн"
|
||||
jobQueue: "Черга завдань"
|
||||
serverMetric: "Показники сервера "
|
||||
aiscript: "Консоль AiScript"
|
||||
_cw:
|
||||
hide: "Сховати"
|
||||
show: "Показати більше"
|
||||
@ -1000,10 +1013,13 @@ _cw:
|
||||
files: "{count} файлів"
|
||||
_poll:
|
||||
noOnlyOneChoice: "Потрібні принаймні два варіанти."
|
||||
choiceN: "Варіант {n}"
|
||||
noMore: "Більше варіантів додати не можна"
|
||||
canMultipleVote: "Можна вибрати кілька варіантів"
|
||||
expiration: "Опитування закінчується"
|
||||
infinite: "Ніколи"
|
||||
at: "На даті..."
|
||||
after: "Через..."
|
||||
deadlineDate: "Дата закінчення"
|
||||
deadlineTime: "г"
|
||||
duration: "Тривалість"
|
||||
|
@ -7,12 +7,13 @@ search: "搜索"
|
||||
notifications: "通知"
|
||||
username: "用户名"
|
||||
password: "密码"
|
||||
fetchingAsApObject: "联合查询中"
|
||||
forgotPassword: "忘记密码"
|
||||
fetchingAsApObject: "联合查询"
|
||||
ok: "OK"
|
||||
gotIt: "我明白了"
|
||||
cancel: "取消"
|
||||
enterUsername: "输入用户名"
|
||||
renotedBy: "{user} 转发了"
|
||||
renotedBy: "由 {user} 转推"
|
||||
noNotes: "没有帖文"
|
||||
noNotifications: "无通知"
|
||||
instance: "实例"
|
||||
@ -62,33 +63,35 @@ import: "导入"
|
||||
export: "导出"
|
||||
files: "文件"
|
||||
download: "下载"
|
||||
driveFileDeleteConfirm: "要删除「{name}」文件吗?附加此文件的帖子也会消失。"
|
||||
driveFileDeleteConfirm: "要删除「{name}」文件吗?附加此文件的帖子也会被删除。"
|
||||
unfollowConfirm: "要取消对{name}的关注吗?"
|
||||
exportRequested: "导出请求已提交。可能需要花一些时间。导出的文件将保存到网盘中。"
|
||||
importRequested: "导入请求已提交。这可能需要花一点时间。"
|
||||
exportRequested: "导出请求已提交,这可能需要花一些时间,导出的文件将保存到网盘中。"
|
||||
importRequested: "导入请求已提交,这可能需要花一点时间。"
|
||||
lists: "列表"
|
||||
noLists: "列表为空"
|
||||
note: "帖子"
|
||||
notes: "帖子"
|
||||
following: "关注中"
|
||||
followers: "关注者"
|
||||
followsYou: "关注了你"
|
||||
followsYou: "正在关注你"
|
||||
createList: "创建列表"
|
||||
manageLists: "管理列表"
|
||||
error: "错误"
|
||||
somethingHappened: "出现了问题"
|
||||
somethingHappened: "出现了一些问题!"
|
||||
retry: "重试"
|
||||
pageLoadError: "页面加载失败。"
|
||||
pageLoadErrorDescription: "这通常是由于网络或浏览器缓存的原因。请清除缓存或等待片刻后重试。"
|
||||
serverIsDead: "服务器没有响应。 请稍等片刻,然后重试。"
|
||||
youShouldUpgradeClient: "请重新加载并使用新版本的客户端查看此页面。"
|
||||
enterListName: "输入列表名称"
|
||||
privacy: "隐私"
|
||||
makeFollowManuallyApprove: "关注者请求需要批准"
|
||||
makeFollowManuallyApprove: "关注者的关注请求需要批准"
|
||||
defaultNoteVisibility: "默认可见性"
|
||||
follow: "关注"
|
||||
followRequest: "关注申请"
|
||||
followRequests: "关注申请"
|
||||
unfollow: "取消关注"
|
||||
followRequestPending: "发送关注申请"
|
||||
followRequestPending: "发送关注请求"
|
||||
enterEmoji: "输入表情符号"
|
||||
renote: "转发"
|
||||
unrenote: "取消转发"
|
||||
@ -97,16 +100,17 @@ cantRenote: "该帖子无法转发。"
|
||||
cantReRenote: "转发无法被再次转发。"
|
||||
quote: "引用"
|
||||
pinnedNote: "已置顶的帖子"
|
||||
pinned: "置顶"
|
||||
you: "您"
|
||||
clickToShow: "点击以显示"
|
||||
sensitive: "阅读注意"
|
||||
sensitive: "敏感内容"
|
||||
add: "添加"
|
||||
reaction: "回应"
|
||||
reactionSettingDescription: "选择您想要置顶的回应。"
|
||||
reactionSetting: "在选择器中显示的回应"
|
||||
reactionSettingDescription2: "拖动重新排序,单击删除,点击 + 添加。"
|
||||
rememberNoteVisibility: "记录公开范围"
|
||||
rememberNoteVisibility: "保存上次设置的可见性"
|
||||
attachCancel: "删除附件"
|
||||
markAsSensitive: "阅读注意"
|
||||
markAsSensitive: "标记为敏感内容"
|
||||
unmarkAsSensitive: "取消标记为敏感内容"
|
||||
enterFileName: "请输入文件名"
|
||||
mute: "屏蔽"
|
||||
@ -120,24 +124,25 @@ unblockConfirm: "确定要解除拉黑吗?"
|
||||
suspendConfirm: "要冻结吗?"
|
||||
unsuspendConfirm: "要解除冻结吗?"
|
||||
selectList: "选择列表"
|
||||
selectAntenna: "天线选择"
|
||||
selectAntenna: "选择天线"
|
||||
selectWidget: "选择小工具"
|
||||
editWidgets: "编辑小工具"
|
||||
editWidgets: "编辑部件"
|
||||
editWidgetsExit: "完成编辑"
|
||||
customEmojis: "自定义表情符号"
|
||||
emoji: "表情符号"
|
||||
emojis: "表情符号"
|
||||
emojiName: "表情符号名称"
|
||||
emojiUrl: "表情符号地址"
|
||||
addEmoji: "添加表情符号"
|
||||
settingGuide: "推荐配置"
|
||||
cacheRemoteFiles: "远程文件缓存"
|
||||
cacheRemoteFilesDescription: "当禁用此设定时远程文件将直接从远程实例载入。禁用后会减小储存空间需求,但是会增加流量,因为缩略图不会被生成。"
|
||||
flagAsBot: "这个账户是Bot"
|
||||
flagAsBot: "这是一个机器人账号"
|
||||
flagAsBotDescription: "如果此帐户由程序控制,请启用此项。启用后,此标志可以帮助其他开发人员防止机器人之间产生无限互动的行为,并让Misskey的内部系统将此帐户识别为机器人。"
|
||||
flagAsCat: "这个账户是Cat"
|
||||
flagAsCat: "将这个账户设定为一只猫"
|
||||
flagAsCatDescription: "如果您想表明此帐户是一只猫,请打开此标志。"
|
||||
autoAcceptFollowed: "自动允许关注"
|
||||
addAcount: "添加账户"
|
||||
addAccount: "添加账户"
|
||||
loginFailed: "登录失败"
|
||||
showOnRemote: "转到所在实例显示"
|
||||
general: "常规设置"
|
||||
@ -170,9 +175,9 @@ software: "软件"
|
||||
version: "版本"
|
||||
metadata: "元数据"
|
||||
withNFiles: "{n}个文件"
|
||||
monitor: "监视器"
|
||||
monitor: "服务器状态"
|
||||
jobQueue: "作业队列"
|
||||
cpuAndMemory: "CPU使用量"
|
||||
cpuAndMemory: "CPU和内存"
|
||||
network: "网络"
|
||||
disk: "存储"
|
||||
instanceInfo: "实例信息"
|
||||
@ -193,7 +198,7 @@ noteDeleteConfirm: "要删除该帖子吗?"
|
||||
pinLimitExceeded: "无法置顶更多了"
|
||||
intro: "Misskey的部署结束啦!填写管理员账号吧!"
|
||||
done: "完成"
|
||||
processing: "处理中"
|
||||
processing: "正在处理"
|
||||
preview: "预览"
|
||||
default: "默认"
|
||||
noCustomEmojis: "没有自定义表情符号"
|
||||
@ -209,7 +214,7 @@ instanceFollowing: "关注实例"
|
||||
instanceFollowers: "关注实例"
|
||||
instanceUsers: "实例用户"
|
||||
changePassword: "修改密码"
|
||||
security: "安全性"
|
||||
security: "安全"
|
||||
retypedNotMatch: "两次输入不一致!"
|
||||
currentPassword: "现在的密码"
|
||||
newPassword: "新密码"
|
||||
@ -229,18 +234,18 @@ deleteAreYouSure: "要删掉「{x}」吗?"
|
||||
resetAreYouSure: "恢复默认设置?"
|
||||
saved: "已保存"
|
||||
messaging: "聊天"
|
||||
upload: "上传"
|
||||
upload: "本地上传"
|
||||
fromDrive: "从网盘中"
|
||||
fromUrl: "从 URL"
|
||||
uploadFromUrl: "从网址上传"
|
||||
uploadFromUrlDescription: "要上传的文件的URL"
|
||||
uploadFromUrlDescription: "输入文件的URL"
|
||||
uploadFromUrlRequested: "请求上传"
|
||||
uploadFromUrlMayTakeTime: "上传可能需要一些时间完成。"
|
||||
explore: "发现"
|
||||
games: "Misskey游戏"
|
||||
messageRead: "已读"
|
||||
noMoreHistory: "没有更多的历史记录"
|
||||
startMessaging: "开始聊天"
|
||||
startMessaging: "添加聊天"
|
||||
nUsersRead: "{n}人已读"
|
||||
agreeTo: "{0}人同意"
|
||||
tos: "服务条款"
|
||||
@ -258,8 +263,8 @@ themeForLightMode: "在浅色模式下使用的主题"
|
||||
themeForDarkMode: "在深色模式下使用的主题"
|
||||
light: "浅色"
|
||||
dark: "深色"
|
||||
lightThemes: "亮色主题"
|
||||
darkThemes: "暗色主题"
|
||||
lightThemes: "浅色主题"
|
||||
darkThemes: "深色主题"
|
||||
syncDeviceDarkMode: "将深色模式与设备设置同步"
|
||||
drive: "网盘"
|
||||
fileName: "文件名称"
|
||||
@ -273,23 +278,24 @@ createFolder: "创建文件夹"
|
||||
renameFolder: "重命名文件夹"
|
||||
deleteFolder: "删除文件夹"
|
||||
addFile: "添加文件"
|
||||
emptyDrive: "驱动器为空"
|
||||
emptyFolder: "空文件夹"
|
||||
emptyDrive: "网盘中无文件"
|
||||
emptyFolder: "此文件夹中无文件"
|
||||
unableToDelete: "无法删除"
|
||||
inputNewFileName: "请输入新文件名"
|
||||
inputNewFolderName: "请输入新文件名"
|
||||
inputNewDescription: "请输入新标题"
|
||||
inputNewFolderName: "请输入新文件夹名"
|
||||
circularReferenceFolder: "目标文件夹是您要移动的文件夹的子文件夹。"
|
||||
hasChildFilesOrFolders: "此文件夹不为空,无法删除。"
|
||||
hasChildFilesOrFolders: "此文件夹中有文件,无法删除。"
|
||||
copyUrl: "复制链接"
|
||||
rename: "重命名"
|
||||
avatar: "头像"
|
||||
banner: "Banner"
|
||||
nsfw: "阅读注意"
|
||||
banner: "横幅"
|
||||
nsfw: "敏感内容"
|
||||
whenServerDisconnected: "与服务器连接中断时"
|
||||
disconnectedFromServer: "已从服务器断开连接"
|
||||
disconnectedFromServer: "已和服务器断开连接"
|
||||
reload: "重新加载"
|
||||
doNothing: "什么都不做"
|
||||
reloadConfirm: "确定要重新加载吗"
|
||||
doNothing: "关闭弹窗"
|
||||
reloadConfirm: "确定要重新加载吗?"
|
||||
watch: "关注"
|
||||
unwatch: "取消关注"
|
||||
accept: "允许"
|
||||
@ -308,8 +314,8 @@ monthX: "{month}月"
|
||||
yearX: "{year}年"
|
||||
pages: "页面"
|
||||
integration: "关联"
|
||||
connectSerice: "已连接"
|
||||
disconnectSerice: "断开连接"
|
||||
connectService: "连接"
|
||||
disconnectService: "断开连接"
|
||||
enableLocalTimeline: "启用本地时间线功能"
|
||||
enableGlobalTimeline: "启用全局时间线"
|
||||
disablingTimelinesInfo: "即使时间线功能被禁用,出于便利性的原因,管理员和数据图表也可以继续使用。"
|
||||
@ -320,15 +326,16 @@ proxyRemoteFiles: "代理远程文件"
|
||||
proxyRemoteFilesDescription: "启用此设置后,由于超出存储容量而导致未保存被删除的远程文件将被本地代理,并且会生成缩略图。不会影响服务器的存储。"
|
||||
driveCapacityPerLocalAccount: "每个用户的网盘空间"
|
||||
driveCapacityPerRemoteAccount: "每个远程用户的网盘容量"
|
||||
inMb: "以兆字节(Mbps)为单位"
|
||||
inMb: "以兆字节(MegaByte)为单位"
|
||||
iconUrl: "图标URL"
|
||||
bannerUrl: "Banner URL"
|
||||
bannerUrl: "横幅URL"
|
||||
backgroundImageUrl: "背景图URL"
|
||||
basicInfo: "基本信息"
|
||||
pinnedUsers: "置顶用户"
|
||||
pinnedUsersDescription: "在「发现」页面中使用换行标记想要置顶的用户。"
|
||||
pinnedPages: "固定页面"
|
||||
pinnedPagesDescription: "输入您要固定到实例首页的页面路径,以换行符分隔。"
|
||||
pinnedClipId: "置顶的片段ID"
|
||||
pinnedClipId: "置顶的书签ID"
|
||||
pinnedNotes: "已置顶的帖子"
|
||||
hcaptcha: "hCaptcha"
|
||||
enableHcaptcha: "启用 hCaptcha"
|
||||
@ -346,14 +353,13 @@ antennaSource: "接收来源"
|
||||
antennaKeywords: "包含关键字"
|
||||
antennaExcludeKeywords: "排除关键字"
|
||||
antennaKeywordsDescription: "使用空格分隔会产生AND规范,并且使用换行符分隔会产生OR规范"
|
||||
notifyAntenna: "通知新帖子"
|
||||
notifyAntenna: "开启通知"
|
||||
withFileAntenna: "仅带有附件的帖子"
|
||||
serviceworker: "ServiceWorker"
|
||||
enableServiceworker: "启用ServiceWorker"
|
||||
antennaUsersDescription: "指定用户名,用换行符分隔"
|
||||
caseSensitive: "区分大小写"
|
||||
withReplies: "包括回复"
|
||||
connectedTo: "您的账号已连到接以下社交账号"
|
||||
connectedTo: "您的账号已连到接以下第三方账号"
|
||||
notesAndReplies: "帖子与回复"
|
||||
withFiles: "附件"
|
||||
silence: "禁言"
|
||||
@ -361,8 +367,8 @@ silenceConfirm: "确认要禁言吗?"
|
||||
unsilence: "解除禁言"
|
||||
unsilenceConfirm: "要解除禁言吗?"
|
||||
popularUsers: "热门用户"
|
||||
recentlyUpdatedUsers: "最近投稿用户"
|
||||
recentlyRegisteredUsers: "最近登录用户"
|
||||
recentlyUpdatedUsers: "最近投稿的用户"
|
||||
recentlyRegisteredUsers: "最近登录的用户"
|
||||
recentlyDiscoveredUsers: "最近发现的用户"
|
||||
exploreUsersCount: "有{count}个用户"
|
||||
exploreFediverse: "探索Fediverse"
|
||||
@ -371,9 +377,9 @@ userList: "列表"
|
||||
about: "关于"
|
||||
aboutMisskey: "关于 Misskey"
|
||||
administrator: "管理员"
|
||||
token: "令牌"
|
||||
token: "Token (令牌)"
|
||||
twoStepAuthentication: "两步验证"
|
||||
moderator: "版主"
|
||||
moderator: "监察员"
|
||||
nUsersMentioned: "{n} 被提到"
|
||||
securityKey: "安全密钥"
|
||||
securityKeyName: "密钥名称"
|
||||
@ -415,7 +421,7 @@ noteOf: "{user}的帖子"
|
||||
inviteToGroup: "群组邀请"
|
||||
maxNoteTextLength: "帖子的字数限制"
|
||||
quoteAttached: "已引用"
|
||||
quoteQuestion: "是否将其作为引用附上?"
|
||||
quoteQuestion: "是否引用此链接内容?"
|
||||
noMessagesYet: "现在没有新的聊天"
|
||||
newMessageExists: "新信息"
|
||||
onlyOneFileCanBeAttached: "只能添加一个附件"
|
||||
@ -437,10 +443,12 @@ signinWith: "以{x}登录"
|
||||
signinFailed: "无法登录,请检查您的用户名和密码。"
|
||||
tapSecurityKey: "轻触硬件安全密钥"
|
||||
or: "或者"
|
||||
language: "语言"
|
||||
uiLanguage: "显示语言"
|
||||
groupInvited: "群组招待"
|
||||
groupInvited: "您有新的群组邀请"
|
||||
aboutX: "关于 {x}"
|
||||
useOsNativeEmojis: "使用OS原生表情符号"
|
||||
useOsNativeEmojis: "使用系统的原生表情符号"
|
||||
disableDrawer: "不显示抽屉菜单"
|
||||
youHaveNoGroups: "没有群组"
|
||||
joinOrCreateGroup: "请加入一个现有的群组,或者创建新群组。"
|
||||
noHistory: "没有历史记录"
|
||||
@ -451,12 +459,12 @@ category: "类别"
|
||||
tags: "标签"
|
||||
docSource: "文件来源"
|
||||
createAccount: "注册账户"
|
||||
existingAcount: "现有的帐户"
|
||||
existingAccount: "现有的帐户"
|
||||
regenerate: "重新生成"
|
||||
fontSize: "字体大小"
|
||||
noFollowRequests: "没有关注申请"
|
||||
openImageInNewTab: "在新标签页中打开图片"
|
||||
dashboard: "Dashboard"
|
||||
dashboard: "管理面板"
|
||||
local: "本地"
|
||||
remote: "远程"
|
||||
total: "总计"
|
||||
@ -472,7 +480,7 @@ hideThisNote: "隐藏这条帖子"
|
||||
showFeaturedNotesInTimeline: "在时间线上显示热门推荐"
|
||||
objectStorage: "对象存储"
|
||||
useObjectStorage: "使用对象存储"
|
||||
objectStorageBaseUrl: "基本网址"
|
||||
objectStorageBaseUrl: "Base URL"
|
||||
objectStorageBaseUrlDesc: "URL前缀,用于构造URL到对象(媒体)的引用,如果您使用的是CDN或反向代理,请指定其URL,否则请根据您使用的服务指定可公开访问的地址。例如“https://<bucket>.s3.amazonaws.com”用于AWS S3,“https://storage.googleapis.com/<bucket>”用于GCS"
|
||||
objectStorageBucket: "存储桶"
|
||||
objectStorageBucketDesc: "请指定使用的对象存储服务的存储桶名称。"
|
||||
@ -488,12 +496,12 @@ objectStorageUseProxy: "使用代理"
|
||||
objectStorageUseProxyDesc: "如果您不使用代理进行API连接,请将其关闭。"
|
||||
objectStorageSetPublicRead: "上传时设置为public-read"
|
||||
serverLogs: "服务器日志"
|
||||
deleteAll: "删除全部"
|
||||
showFixedPostForm: "在时间线顶部显示帖子表单"
|
||||
deleteAll: "全部删除"
|
||||
showFixedPostForm: "在时间线顶部显示发帖框"
|
||||
newNoteRecived: "有新的帖子"
|
||||
sounds: "声音"
|
||||
listen: "听"
|
||||
none: "空"
|
||||
sounds: "提示音"
|
||||
listen: "试听"
|
||||
none: "无"
|
||||
showInPage: "在页面中显示"
|
||||
popout: "弹窗"
|
||||
volume: "音量"
|
||||
@ -505,15 +513,15 @@ recentUsed: "最近使用"
|
||||
install: "安装"
|
||||
uninstall: "卸载"
|
||||
installedApps: "已授权的应用"
|
||||
nothing: "没什么"
|
||||
nothing: "没有"
|
||||
installedDate: "授权日期"
|
||||
lastUsedDate: "最近使用"
|
||||
state: "状态"
|
||||
sort: "排序"
|
||||
ascendingOrder: "升序"
|
||||
descendingOrder: "降序"
|
||||
scratchpad: "便签本"
|
||||
scratchpadDescription: "便签本为AiScript提供了实验环境。您可以编写代码以与Misskey交互,运行它并查看结果。"
|
||||
scratchpad: "AiScript控制台"
|
||||
scratchpadDescription: "AiScript控制台为AiScript提供了实验环境。您可以编写代码以与Misskey交互,运行它并查看结果。"
|
||||
output: "输出"
|
||||
script: "脚本"
|
||||
disablePagesScript: "禁用页面脚本"
|
||||
@ -524,9 +532,11 @@ removeAllFollowing: "取消所有关注"
|
||||
removeAllFollowingDescription: "取消{host}的所有关注者。当实例不存在时执行。"
|
||||
userSuspended: "该用户已被冻结。"
|
||||
userSilenced: "该用户已被禁言。"
|
||||
sidebar: "侧边栏"
|
||||
yourAccountSuspendedTitle: "账户已被冻结"
|
||||
yourAccountSuspendedDescription: "由于违反了服务器的服务条款或其他原因,该账户已被冻结。 您可以与管理员联系以了解更多信息。 请不要创建一个新的帐户。"
|
||||
menu: "菜单"
|
||||
divider: "分割线"
|
||||
addItem: "添加项"
|
||||
addItem: "添加项目"
|
||||
rooms: "房间"
|
||||
relays: "中继"
|
||||
addRelay: "添加中继"
|
||||
@ -541,14 +551,15 @@ poll: "调查问卷"
|
||||
useCw: "隐藏内容"
|
||||
enablePlayer: "打开播放器"
|
||||
disablePlayer: "关闭播放器"
|
||||
expandTweet: "展开贴文"
|
||||
expandTweet: "展开帖子"
|
||||
themeEditor: "主题编辑器"
|
||||
description: "描述"
|
||||
describeFile: "添加标题"
|
||||
enterFileDescription: "输入标题"
|
||||
author: "作者"
|
||||
leaveConfirm: "存在未保存的更改。要放弃更改吗?"
|
||||
manage: "管理"
|
||||
plugins: "插件"
|
||||
pluginInstallWarn: "请不要安装不明来源的插件"
|
||||
deck: "Deck"
|
||||
undeck: "取消Deck"
|
||||
useBlurEffectForModal: "模态框使用模糊效果"
|
||||
@ -567,7 +578,7 @@ pluginTokenRequestedDescription: "此插件将能够拥有此处设置的权限"
|
||||
notificationType: "通知类型"
|
||||
edit: "编辑"
|
||||
useStarForReactionFallback: "如果回应的是未知表情符号,则使用★作为代替"
|
||||
emailConfig: "邮件服务器设置"
|
||||
emailServer: "邮件服务器"
|
||||
enableEmail: "启用发送邮件功能"
|
||||
emailConfigInfo: "用于确认电子邮件和密码重置"
|
||||
email: "邮箱"
|
||||
@ -582,14 +593,15 @@ smtpSecure: "在 SMTP 连接中使用隐式 SSL / TLS"
|
||||
smtpSecureInfo: "使用STARTTLS时关闭。"
|
||||
testEmail: "邮件发送测试"
|
||||
wordMute: "文字屏蔽"
|
||||
instanceMute: "实例的屏蔽"
|
||||
userSaysSomething: "{name}说了什么"
|
||||
makeActive: "激活"
|
||||
makeActive: "启用"
|
||||
display: "显示"
|
||||
copy: "复制"
|
||||
metrics: "指标"
|
||||
overview: "概述"
|
||||
metrics: "服务器监控"
|
||||
overview: "服务器概况"
|
||||
logs: "日志"
|
||||
delayed: "延迟"
|
||||
delayed: "滞后"
|
||||
database: "数据库"
|
||||
channel: "频道"
|
||||
create: "创建"
|
||||
@ -602,7 +614,6 @@ regenerateLoginToken: "重新生成登录令牌"
|
||||
regenerateLoginTokenDescription: "重新生成用于登录的内部令牌。通常您不需要这样做。重新生成后,您将在所有设备上登出。"
|
||||
setMultipleBySeparatingWithSpace: "您可以使用空格分隔多个项目。"
|
||||
fileIdOrUrl: "文件ID或者URL"
|
||||
chatOpenBehavior: "聊天窗口打开时的行为"
|
||||
behavior: "行为"
|
||||
sample: "示例"
|
||||
abuseReports: "举报"
|
||||
@ -610,6 +621,8 @@ reportAbuse: "举报"
|
||||
reportAbuseOf: "举报{name}"
|
||||
fillAbuseReportDescription: "请填写举报的详细原因。如果有对方发的帖子,请同时填写URL地址。"
|
||||
abuseReported: "内容已发送。感谢您的报告。"
|
||||
reporteeOrigin: "举报来源"
|
||||
reporterOrigin: "举报者来源"
|
||||
send: "发送"
|
||||
abuseMarkAsResolved: "处理完毕"
|
||||
openInNewTab: "在新标签页中打开"
|
||||
@ -622,33 +635,33 @@ random: "随机"
|
||||
system: "系统"
|
||||
switchUi: "切换界面"
|
||||
desktop: "桌面"
|
||||
clip: "片段"
|
||||
clip: "书签"
|
||||
createNew: "新建"
|
||||
optional: "可选"
|
||||
createNewClip: "新建片段"
|
||||
createNewClip: "新建书签"
|
||||
public: "公开"
|
||||
i18nInfo: "Misskey已经被志愿者们翻译到了各种语言。如果你也有兴趣,可以通过{link}帮助翻译。"
|
||||
manageAccessTokens: "管理 Access Tokens"
|
||||
accountInfo: "帐户信息"
|
||||
notesCount: "贴文数量"
|
||||
notesCount: "帖子数量"
|
||||
repliesCount: "回复数量"
|
||||
renotesCount: "转贴数量"
|
||||
renotesCount: "转帖数量"
|
||||
repliedCount: "回复数"
|
||||
renotedCount: "转发数"
|
||||
followingCount: "正在关注数量"
|
||||
followersCount: "关注者数量"
|
||||
sentReactionsCount: "发送反应数"
|
||||
receivedReactionsCount: "收到反应数"
|
||||
pollVotesCount: "发起投票数"
|
||||
pollVotedCount: "已投票数"
|
||||
sentReactionsCount: "发送回应数"
|
||||
receivedReactionsCount: "收到回应数"
|
||||
pollVotesCount: "问卷调查的投票数"
|
||||
pollVotedCount: "问卷调查的被投票数"
|
||||
yes: "是"
|
||||
no: "否"
|
||||
driveFilesCount: "磁盘文件数"
|
||||
driveUsage: "磁盘空间用量"
|
||||
noCrawle: "拒绝搜索器的索引"
|
||||
driveFilesCount: "网盘的文件数"
|
||||
driveUsage: "网盘的空间用量"
|
||||
noCrawle: "拒绝搜索引擎的索引"
|
||||
noCrawleDescription: "要求搜索引擎不要收录(索引)您的用户页面,帖子,页面等。"
|
||||
lockedAccountInfo: "即使通过了关注请求,只要您不将帖子可见范围设置成“关注者”,任何人都可以看到您的帖子。"
|
||||
alwaysMarkSensitive: "浏览默认媒体文件时请谨慎"
|
||||
alwaysMarkSensitive: "默认将媒体文件标记为敏感内容"
|
||||
loadRawImages: "添加附件图像的缩略图时使用原始图像质量"
|
||||
disableShowingAnimatedImages: "不播放动画"
|
||||
verificationEmailSent: "已发送确认电子邮件。请访问电子邮件中的链接以完成设置。"
|
||||
@ -660,7 +673,7 @@ pageLikedCount: "页面被点赞次数"
|
||||
reversiCount: "黑白棋对战次数"
|
||||
contact: "联系人"
|
||||
useSystemFont: "使用系统默认字体"
|
||||
clips: "片段"
|
||||
clips: "书签"
|
||||
experimentalFeatures: "实验性功能"
|
||||
developer: "开发者"
|
||||
makeExplorable: "使账号可见。"
|
||||
@ -672,6 +685,7 @@ center: "中央"
|
||||
wide: "宽"
|
||||
narrow: "窄"
|
||||
reloadToApplySetting: "页面刷新后设置才会生效。是否现在刷新页面?"
|
||||
needReloadToApply: "重启后应用才会生效。"
|
||||
showTitlebar: "显示标题栏"
|
||||
clearCache: "清除缓存"
|
||||
onlineUsersCount: "{n}人在线"
|
||||
@ -686,12 +700,167 @@ textColor: "文本"
|
||||
saveAs: "另存为"
|
||||
advanced: "高级"
|
||||
value: "值"
|
||||
createdAt: "创建日期"
|
||||
updatedAt: "更新时间"
|
||||
saveConfirm: "确定保存?"
|
||||
deleteConfirm: "确定删除?"
|
||||
invalidValue: "无效值。"
|
||||
registry: "注册表"
|
||||
closeAccount: "关闭账户"
|
||||
closeAccount: "永久注销账户"
|
||||
currentVersion: "当前版本"
|
||||
latestVersion: "最新版本"
|
||||
youAreRunningUpToDateClient: "您所使用的客户端已经是最新的。"
|
||||
newVersionOfClientAvailable: "新版本的客户端可用。"
|
||||
usageAmount: "使用量"
|
||||
capacity: "容量"
|
||||
inUse: "已使用"
|
||||
editCode: "编辑代码"
|
||||
apply: "应用"
|
||||
receiveAnnouncementFromInstance: "从实例接收通知"
|
||||
emailNotification: "邮件通知"
|
||||
publish: "发布"
|
||||
inChannelSearch: "频道内搜索"
|
||||
useReactionPickerForContextMenu: "单击右键打开回应工具栏"
|
||||
typingUsers: "{users}正在输入"
|
||||
jumpToSpecifiedDate: "跳转到特定日期"
|
||||
showingPastTimeline: "显示过去的时间线"
|
||||
clear: "清除"
|
||||
markAllAsRead: "全部标记为已读"
|
||||
goBack: "返回"
|
||||
unlikeConfirm: "取消赞?"
|
||||
fullView: "全屏"
|
||||
quitFullView: "退出全屏"
|
||||
addDescription: "添加描述"
|
||||
userPagePinTip: "在帖子的菜单中选择“置顶”,即可显示该条帖子。"
|
||||
notSpecifiedMentionWarning: "有未指定的提及"
|
||||
info: "关于"
|
||||
userInfo: "用户信息"
|
||||
unknown: "未知"
|
||||
onlineStatus: "在线状态"
|
||||
hideOnlineStatus: "隐藏在线状态"
|
||||
hideOnlineStatusDescription: "隐藏在线状态后,可能会降低例如搜索等功能的便利性。"
|
||||
online: "在线"
|
||||
active: "活动"
|
||||
offline: "离线"
|
||||
notRecommended: "不推荐"
|
||||
botProtection: "Bot防御"
|
||||
instanceBlocking: "被阻拦的实例"
|
||||
selectAccount: "选择账户"
|
||||
enabled: "已启用"
|
||||
disabled: "已禁用 "
|
||||
quickAction: "快捷操作"
|
||||
user: "用户"
|
||||
administration: "管理"
|
||||
accounts: "账户"
|
||||
switch: "切换"
|
||||
noMaintainerInformationWarning: "管理人员信息未设置。"
|
||||
noBotProtectionWarning: "Bot保护未设置。"
|
||||
configure: "设置"
|
||||
postToGallery: "发送到图库"
|
||||
gallery: "图库"
|
||||
recentPosts: "最新发布"
|
||||
popularPosts: "热门投稿"
|
||||
shareWithNote: "在帖子中分享"
|
||||
ads: "广告"
|
||||
expiration: "截止时间"
|
||||
memo: "便笺"
|
||||
priority: "优先级"
|
||||
high: "高"
|
||||
middle: "中"
|
||||
low: "低"
|
||||
emailNotConfiguredWarning: "电子邮件地址未设置。"
|
||||
ratio: "比率"
|
||||
previewNoteText: "预览文本"
|
||||
customCss: "自定义 CSS"
|
||||
customCssWarn: "这些设置必须有相关的基础知识,不当的配置可能导致客户端无法正常使用!"
|
||||
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: "未解决"
|
||||
breakFollow: "移除关注者"
|
||||
itsOn: "已开启"
|
||||
itsOff: "已关闭"
|
||||
emailRequiredForSignup: "注册账户需要电子邮件地址"
|
||||
unread: "未读"
|
||||
filter: "筛选"
|
||||
controlPanel: "控制面板"
|
||||
manageAccounts: "管理账户"
|
||||
makeReactionsPublic: "将回应设置为公开"
|
||||
makeReactionsPublicDescription: "将您发表过的回应设置成公开可见。"
|
||||
classic: "经典"
|
||||
muteThread: "屏蔽帖子列表"
|
||||
unmuteThread: "取消屏蔽帖子列表"
|
||||
ffVisibility: "连接的可见范围"
|
||||
ffVisibilityDescription: "您可以设置您的关注/关注者信息的公开范围"
|
||||
continueThread: "查看更多帖子"
|
||||
deleteAccountConfirm: "将要删除账户。是否确认?"
|
||||
incorrectPassword: "密码错误"
|
||||
voteConfirm: "确定投给“{choice}” ?"
|
||||
hide: "隐藏"
|
||||
leaveGroup: "离开群组"
|
||||
leaveGroupConfirm: "确定离开「{name}」?"
|
||||
useDrawerReactionPickerForMobile: "在移动设备上使用抽屉显示"
|
||||
welcomeBackWithName: "欢迎回来,{name}"
|
||||
clickToFinishEmailVerification: "点击 [{ok}] 完成电子邮件地址认证。"
|
||||
_emailUnavailable:
|
||||
used: "已经被使用过"
|
||||
format: "无效的格式"
|
||||
disposable: "不是永久可用的地址"
|
||||
mx: "邮件服务器不正确"
|
||||
smtp: "邮件服务器没有响应"
|
||||
_ffVisibility:
|
||||
public: "发布"
|
||||
followers: "只有关注你的用户能看到"
|
||||
private: "私密"
|
||||
_signup:
|
||||
almostThere: "即将完成"
|
||||
emailAddressInfo: "请输入您所使用的电子邮件地址"
|
||||
emailSent: "已将确认邮件发送至您输入的电子邮件地址 ({email})。请访问电子邮件中的链接以完成帐户创建。"
|
||||
_accountDelete:
|
||||
accountDelete: "删除帐户"
|
||||
mayTakeTime: "删除账号是一个性能损耗较大的处理,如果账号持有的内容数量和上传的文件数量较多的话,完成需要花费一段时间。"
|
||||
sendEmail: "账户删除完成后,将向注册的电子邮件地址发送通知。"
|
||||
requestAccountDelete: "请求删除账户"
|
||||
started: "账户删除过程已开始。"
|
||||
inProgress: "正在删除"
|
||||
_ad:
|
||||
back: "返回"
|
||||
reduceFrequencyOfThisAd: "减少此广告的频率"
|
||||
_forgotPassword:
|
||||
enterEmail: "请输入您验证账号时用的电子邮箱地址,密码重置链接将发送至该邮箱上。"
|
||||
ifNoEmail: "如果您没有使用电子邮件地址进行验证,请联系管理员。"
|
||||
contactAdmin: "该实例不支持发送电子邮件。如果您想重设密码,请联系管理员。"
|
||||
_gallery:
|
||||
my: "我的图库"
|
||||
liked: "喜欢的图片"
|
||||
like: "喜欢"
|
||||
unlike: "取消喜欢"
|
||||
_email:
|
||||
_follow:
|
||||
title: "你有新的关注者"
|
||||
_receiveFollowRequest:
|
||||
title: "收到了关注请求"
|
||||
_plugin:
|
||||
install: "安装插件"
|
||||
installWarn: "请不要安装不可信的插件。"
|
||||
manage: "管理插件..."
|
||||
_registry:
|
||||
scope: "范围"
|
||||
key: "主要"
|
||||
@ -708,8 +877,8 @@ _aboutMisskey:
|
||||
morePatrons: "还有很多其他的人也在支持我们,非常感谢🥰"
|
||||
patrons: "支持者"
|
||||
_nsfw:
|
||||
respect: "隐藏NSFW内容"
|
||||
ignore: "不隐藏NSFW内容"
|
||||
respect: "隐藏敏感内容"
|
||||
ignore: "不隐藏敏感内容"
|
||||
force: "总是隐藏内容"
|
||||
_mfm:
|
||||
cheatSheet: "MFM代码速查表"
|
||||
@ -769,6 +938,12 @@ _mfm:
|
||||
blurDescription: "产生模糊效果。将鼠标指针放在上面即可将内容显示出来。"
|
||||
font: "字体"
|
||||
fontDescription: "可以设置内容所使用的字体。"
|
||||
rainbow: "彩虹"
|
||||
rainbowDescription: "用彩虹色来显示内容。"
|
||||
sparkle: "闪光"
|
||||
sparkleDescription: "添加发光粒子效果。"
|
||||
rotate: "旋转"
|
||||
rotateDescription: "旋转指定的角度。"
|
||||
_reversi:
|
||||
reversi: "黑白棋"
|
||||
gameSettings: "对局设置"
|
||||
@ -820,24 +995,31 @@ _channel:
|
||||
following: "正在关注"
|
||||
usersCount: "有{n}人参与"
|
||||
notesCount: "有{n}个帖子"
|
||||
_sidebar:
|
||||
full: "全部"
|
||||
icon: "图标"
|
||||
_menuDisplay:
|
||||
sideFull: "横向"
|
||||
sideIcon: "横向(图标)"
|
||||
top: "顶部"
|
||||
hide: "隐藏"
|
||||
_wordMute:
|
||||
muteWords: "禁用词"
|
||||
muteWordsDescription: "使用空格分隔表示AND逻辑,使用换行符分隔表示OR逻辑。"
|
||||
muteWordsDescription2: "将关键字用斜线括起来表示正则表达式。"
|
||||
softDescription: "隐藏时间线中指定条件的帖文。"
|
||||
hardDescription: "防止将具有指定条件的帖文添加到时间线。 即使您更改条件,未添加的帖文也会被排除在外。"
|
||||
softDescription: "隐藏时间线中指定条件的帖子。"
|
||||
hardDescription: "防止将具有指定条件的帖子添加到时间线。 即使您更改条件,未添加的帖文也会被排除在外。"
|
||||
soft: "软屏蔽"
|
||||
hard: "硬屏蔽"
|
||||
mutedNotes: "被屏蔽的帖文"
|
||||
mutedNotes: "被屏蔽的帖子"
|
||||
_instanceMute:
|
||||
instanceMuteDescription: "屏蔽配置实例中的所有帖子和转帖,包括实例的用户回复。"
|
||||
instanceMuteDescription2: "设置时用换行符来分隔"
|
||||
title: "隐藏实例已设置的帖子。"
|
||||
heading: "屏蔽实例"
|
||||
_theme:
|
||||
explore: "寻找主题"
|
||||
install: "安装主题"
|
||||
manage: "主题管理"
|
||||
code: "主题代码"
|
||||
description: "描述"
|
||||
installed: "{name} 已安装"
|
||||
installedThemes: "已安装的主题"
|
||||
builtinThemes: "标准主题"
|
||||
@ -857,8 +1039,8 @@ _theme:
|
||||
argument: "参数"
|
||||
basedProp: "基于的属性名称"
|
||||
alpha: "不透明度"
|
||||
darken: "暗色"
|
||||
lighten: "亮色"
|
||||
darken: "深色"
|
||||
lighten: "浅色"
|
||||
inputConstantName: "请输入常量名称"
|
||||
importInfo: "您可以在此处粘贴主题代码,将其导入到编辑器中"
|
||||
deleteConstantConfirm: "确定要删除常量{const}吗?"
|
||||
@ -893,18 +1075,18 @@ _theme:
|
||||
cwBg: "CW 按钮背景"
|
||||
cwFg: "CW 按钮文本"
|
||||
cwHoverBg: "CW 按钮背景(悬停)"
|
||||
toastBg: "吐司提示背景"
|
||||
toastFg: "吐司提示文本"
|
||||
toastBg: "Toast通知背景"
|
||||
toastFg: "Toast通知文本"
|
||||
buttonBg: "按钮背景"
|
||||
buttonHoverBg: "按钮背景(悬停)"
|
||||
inputBorder: "输入框边框"
|
||||
listItemHoverBg: "下拉列表项目背景(悬停)"
|
||||
driveFolderBg: "驱动器文件夹背景"
|
||||
driveFolderBg: "网盘的文件夹背景"
|
||||
wallpaperOverlay: "壁纸叠加层"
|
||||
badge: "徽章"
|
||||
messageBg: "聊天背景"
|
||||
accentDarken: "强调色(暗)"
|
||||
accentLighten: "强调色(亮)"
|
||||
accentDarken: "强调色(深)"
|
||||
accentLighten: "强调色(浅)"
|
||||
fgHighlighted: "高亮显示文本"
|
||||
_sfx:
|
||||
note: "帖子"
|
||||
@ -959,7 +1141,7 @@ _2fa:
|
||||
alreadyRegistered: "此设备已被注册"
|
||||
registerDevice: "注册设备"
|
||||
registerKey: "注册密钥"
|
||||
step1: "首先,在您的设备上安装二步验证应用程序,例如{a}或{b}。"
|
||||
step1: "首先,在您的设备上安装验证应用,例如{a}或{b}。"
|
||||
step2: "然后,扫描屏幕上显示的二维码。"
|
||||
step3: "输入您的应用提供的动态口令以完成设置。"
|
||||
step4: "从现在开始,任何登录操作都将要求您提供动态口令。"
|
||||
@ -993,6 +1175,10 @@ _permissions:
|
||||
"write:user-groups": "操作用户组"
|
||||
"read:channels": "查看频道"
|
||||
"write:channels": "管理频道"
|
||||
"read:gallery": "浏览图库"
|
||||
"write:gallery": "操作图库"
|
||||
"read:gallery-likes": "读取喜欢的图片"
|
||||
"write:gallery-likes": "操作喜欢的图片"
|
||||
_auth:
|
||||
shareAccess: "您要授权允许“{name}”访问您的帐户吗?"
|
||||
shareAccessAsk: "您确定要授权此应用程序访问您的帐户吗?"
|
||||
@ -1003,9 +1189,9 @@ _auth:
|
||||
_antennaSources:
|
||||
all: "所有帖子"
|
||||
homeTimeline: "已关注用户的帖子"
|
||||
users: "来自特定用户的帖子"
|
||||
userList: "来自特定清单中的帖子"
|
||||
userGroup: "来自特定组中用户的帖子"
|
||||
users: "来自指定用户的帖子"
|
||||
userList: "来自指定列表中的帖子"
|
||||
userGroup: "来自指定群组中用户的帖子"
|
||||
_weekday:
|
||||
sunday: "星期日"
|
||||
monday: "星期一"
|
||||
@ -1031,7 +1217,9 @@ _widgets:
|
||||
button: "按钮"
|
||||
onlineUsers: "在线用户"
|
||||
jobQueue: "作业队列"
|
||||
serverMetric: "服务器指标"
|
||||
serverMetric: "服务器监控"
|
||||
aiscript: "AiScript控制台"
|
||||
aichan: "小蓝"
|
||||
_cw:
|
||||
hide: "隐藏"
|
||||
show: "查看更多"
|
||||
@ -1043,7 +1231,7 @@ _poll:
|
||||
noMore: "无法再添加更多了"
|
||||
canMultipleVote: "允许多个投票"
|
||||
expiration: "截止时间"
|
||||
infinite: "无限期"
|
||||
infinite: "不限时间"
|
||||
at: "指定日期"
|
||||
after: "指定时间"
|
||||
deadlineDate: "截止日期"
|
||||
@ -1082,7 +1270,7 @@ _postForm:
|
||||
e: "请写下来吧"
|
||||
f: "等待您的发布..."
|
||||
_profile:
|
||||
name: "名称"
|
||||
name: "昵称"
|
||||
username: "用户名"
|
||||
description: "个人简介"
|
||||
youCanIncludeHashtags: "您可以包含一个哈希标签。"
|
||||
@ -1099,6 +1287,8 @@ _exportOrImport:
|
||||
muteList: "屏蔽"
|
||||
blockingList: "拉黑"
|
||||
userLists: "列表"
|
||||
excludeMutingUsers: "排除屏蔽用户"
|
||||
excludeInactiveUsers: "排除不活跃用户"
|
||||
_charts:
|
||||
federationInstancesIncDec: "联合:增加/减少"
|
||||
federationInstancesTotal: "联合总数"
|
||||
@ -1195,7 +1385,7 @@ _rooms:
|
||||
_pages:
|
||||
newPage: "创建页面"
|
||||
editPage: "编辑页面"
|
||||
readPage: "查看源"
|
||||
readPage: "查看页面"
|
||||
created: "页面已创建"
|
||||
updated: "页面已更新"
|
||||
deleted: "该页面已被删除"
|
||||
@ -1207,7 +1397,7 @@ _pages:
|
||||
viewSource: "查看源代码"
|
||||
viewPage: "查看页面"
|
||||
like: "赞"
|
||||
unlike: "取消赞"
|
||||
unlike: "取消喜欢"
|
||||
my: "我的页面"
|
||||
liked: "喜欢的页面"
|
||||
featured: "热门"
|
||||
@ -1506,9 +1696,9 @@ _notification:
|
||||
renote: "转发"
|
||||
quote: "引用"
|
||||
reaction: "回应"
|
||||
pollVote: "问卷调查已投票"
|
||||
pollVote: "问卷调查被投票"
|
||||
receiveFollowRequest: "收到关注请求"
|
||||
followRequestAccepted: "关注请求已接受"
|
||||
followRequestAccepted: "关注请求已通过"
|
||||
groupInvited: "加入群组邀请"
|
||||
app: "关联应用的通知"
|
||||
_deck:
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,485 +0,0 @@
|
||||
import {MigrationInterface, QueryRunner} from "typeorm";
|
||||
|
||||
export class Init1000000000000 implements MigrationInterface {
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<any> {
|
||||
await queryRunner.query(`CREATE TYPE "log_level_enum" AS ENUM('error', 'warning', 'info', 'success', 'debug')`);
|
||||
await queryRunner.query(`CREATE TABLE "log" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "domain" character varying(64) array NOT NULL DEFAULT '{}'::varchar[], "level" "log_level_enum" NOT NULL, "worker" character varying(8) NOT NULL, "machine" character varying(128) NOT NULL, "message" character varying(1024) NOT NULL, "data" jsonb NOT NULL DEFAULT '{}', CONSTRAINT "PK_350604cbdf991d5930d9e618fbd" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_8e4eb51a35d81b64dda28eed0a" ON "log" ("createdAt") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_8cb40cfc8f3c28261e6f887b03" ON "log" ("domain") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_584b536b49e53ac81beb39a177" ON "log" ("level") `);
|
||||
await queryRunner.query(`CREATE TABLE "drive_folder" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "name" character varying(128) NOT NULL, "userId" character varying(32), "parentId" character varying(32), CONSTRAINT "PK_7a0c089191f5ebdc214e0af808a" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_02878d441ceae15ce060b73daf" ON "drive_folder" ("createdAt") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_f4fc06e49c0171c85f1c48060d" ON "drive_folder" ("userId") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_00ceffb0cdc238b3233294f08f" ON "drive_folder" ("parentId") `);
|
||||
await queryRunner.query(`CREATE TABLE "drive_file" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "userId" character varying(32), "userHost" character varying(128), "md5" character varying(32) NOT NULL, "name" character varying(256) NOT NULL, "type" character varying(128) NOT NULL, "size" integer NOT NULL, "comment" character varying(512), "properties" jsonb NOT NULL DEFAULT '{}', "storedInternal" boolean NOT NULL, "url" character varying(512) NOT NULL, "thumbnailUrl" character varying(512), "webpublicUrl" character varying(512), "accessKey" character varying(256), "thumbnailAccessKey" character varying(256), "webpublicAccessKey" character varying(256), "uri" character varying(512), "src" character varying(512), "folderId" character varying(32), "isSensitive" boolean NOT NULL DEFAULT false, "isLink" boolean NOT NULL DEFAULT false, CONSTRAINT "PK_43ddaaaf18c9e68029b7cbb032e" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_c8dfad3b72196dd1d6b5db168a" ON "drive_file" ("createdAt") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_860fa6f6c7df5bb887249fba22" ON "drive_file" ("userId") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_92779627994ac79277f070c91e" ON "drive_file" ("userHost") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_37bb9a1b4585f8a3beb24c62d6" ON "drive_file" ("md5") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_a40b8df8c989d7db937ea27cf6" ON "drive_file" ("type") `);
|
||||
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_d85a184c2540d2deba33daf642" ON "drive_file" ("accessKey") `);
|
||||
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_e74022ce9a074b3866f70e0d27" ON "drive_file" ("thumbnailAccessKey") `);
|
||||
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_c55b2b7c284d9fef98026fc88e" ON "drive_file" ("webpublicAccessKey") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_e5848eac4940934e23dbc17581" ON "drive_file" ("uri") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_bb90d1956dafc4068c28aa7560" ON "drive_file" ("folderId") `);
|
||||
await queryRunner.query(`CREATE TABLE "user" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "updatedAt" TIMESTAMP WITH TIME ZONE, "lastFetchedAt" TIMESTAMP WITH TIME ZONE, "username" character varying(128) NOT NULL, "usernameLower" character varying(128) NOT NULL, "name" character varying(128), "followersCount" integer NOT NULL DEFAULT 0, "followingCount" integer NOT NULL DEFAULT 0, "notesCount" integer NOT NULL DEFAULT 0, "avatarId" character varying(32), "bannerId" character varying(32), "tags" character varying(128) array NOT NULL DEFAULT '{}'::varchar[], "avatarUrl" character varying(512), "bannerUrl" character varying(512), "avatarColor" character varying(32), "bannerColor" character varying(32), "isSuspended" boolean NOT NULL DEFAULT false, "isSilenced" boolean NOT NULL DEFAULT false, "isLocked" boolean NOT NULL DEFAULT false, "isBot" boolean NOT NULL DEFAULT false, "isCat" boolean NOT NULL DEFAULT false, "isAdmin" boolean NOT NULL DEFAULT false, "isModerator" boolean NOT NULL DEFAULT false, "isVerified" boolean NOT NULL DEFAULT false, "emojis" character varying(128) array NOT NULL DEFAULT '{}'::varchar[], "host" character varying(128), "inbox" character varying(512), "sharedInbox" character varying(512), "featured" character varying(512), "uri" character varying(512), "token" character(16), CONSTRAINT "UQ_a854e557b1b14814750c7c7b0c9" UNIQUE ("token"), CONSTRAINT "REL_58f5c71eaab331645112cf8cfa" UNIQUE ("avatarId"), CONSTRAINT "REL_afc64b53f8db3707ceb34eb28e" UNIQUE ("bannerId"), CONSTRAINT "PK_cace4a159ff9f2512dd42373760" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_e11e649824a45d8ed01d597fd9" ON "user" ("createdAt") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_80ca6e6ef65fb9ef34ea8c90f4" ON "user" ("updatedAt") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_a27b942a0d6dcff90e3ee9b5e8" ON "user" ("usernameLower") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_fa99d777623947a5b05f394cae" ON "user" ("tags") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_3252a5df8d5bbd16b281f7799e" ON "user" ("host") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_be623adaa4c566baf5d29ce0c8" ON "user" ("uri") `);
|
||||
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_a854e557b1b14814750c7c7b0c" ON "user" ("token") `);
|
||||
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_5deb01ae162d1d70b80d064c27" ON "user" ("usernameLower", "host") `);
|
||||
await queryRunner.query(`CREATE TABLE "app" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "userId" character varying(32), "secret" character varying(64) NOT NULL, "name" character varying(128) NOT NULL, "description" character varying(512) NOT NULL, "permission" character varying(64) array NOT NULL, "callbackUrl" character varying(512), CONSTRAINT "PK_9478629fc093d229df09e560aea" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_048a757923ed8b157e9895da53" ON "app" ("createdAt") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_3f5b0899ef90527a3462d7c2cb" ON "app" ("userId") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_f49922d511d666848f250663c4" ON "app" ("secret") `);
|
||||
await queryRunner.query(`CREATE TABLE "access_token" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "token" character varying(128) NOT NULL, "hash" character varying(128) NOT NULL, "userId" character varying(32) NOT NULL, "appId" character varying(32) NOT NULL, CONSTRAINT "PK_f20f028607b2603deabd8182d12" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_70ba8f6af34bc924fc9e12adb8" ON "access_token" ("token") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_64c327441248bae40f7d92f34f" ON "access_token" ("hash") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_9949557d0e1b2c19e5344c171e" ON "access_token" ("userId") `);
|
||||
await queryRunner.query(`CREATE TYPE "note_visibility_enum" AS ENUM('public', 'home', 'followers', 'specified')`);
|
||||
await queryRunner.query(`CREATE TABLE "note" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "replyId" character varying(32), "renoteId" character varying(32), "text" text, "name" character varying(256), "cw" character varying(512), "appId" character varying(32), "userId" character varying(32) NOT NULL, "viaMobile" boolean NOT NULL DEFAULT false, "localOnly" boolean NOT NULL DEFAULT false, "renoteCount" smallint NOT NULL DEFAULT 0, "repliesCount" smallint NOT NULL DEFAULT 0, "reactions" jsonb NOT NULL DEFAULT '{}', "visibility" "note_visibility_enum" NOT NULL, "uri" character varying(512), "score" integer NOT NULL DEFAULT 0, "fileIds" character varying(32) array NOT NULL DEFAULT '{}'::varchar[], "attachedFileTypes" character varying(256) array NOT NULL DEFAULT '{}'::varchar[], "visibleUserIds" character varying(32) array NOT NULL DEFAULT '{}'::varchar[], "mentions" character varying(32) array NOT NULL DEFAULT '{}'::varchar[], "mentionedRemoteUsers" text NOT NULL DEFAULT '[]', "emojis" character varying(128) array NOT NULL DEFAULT '{}'::varchar[], "tags" character varying(128) array NOT NULL DEFAULT '{}'::varchar[], "hasPoll" boolean NOT NULL DEFAULT false, "geo" jsonb DEFAULT null, "userHost" character varying(128), "replyUserId" character varying(32), "replyUserHost" character varying(128), "renoteUserId" character varying(32), "renoteUserHost" character varying(128), CONSTRAINT "PK_96d0c172a4fba276b1bbed43058" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_e7c0567f5261063592f022e9b5" ON "note" ("createdAt") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_17cb3553c700a4985dff5a30ff" ON "note" ("replyId") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_52ccc804d7c69037d558bac4c9" ON "note" ("renoteId") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_5b87d9d19127bd5d92026017a7" ON "note" ("userId") `);
|
||||
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_153536c67d05e9adb24e99fc2b" ON "note" ("uri") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_51c063b6a133a9cb87145450f5" ON "note" ("fileIds") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_25dfc71b0369b003a4cd434d0b" ON "note" ("attachedFileTypes") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_796a8c03959361f97dc2be1d5c" ON "note" ("visibleUserIds") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_54ebcb6d27222913b908d56fd8" ON "note" ("mentions") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_88937d94d7443d9a99a76fa5c0" ON "note" ("tags") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_7125a826ab192eb27e11d358a5" ON "note" ("userHost") `);
|
||||
await queryRunner.query(`CREATE TABLE "poll_vote" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "userId" character varying(32) NOT NULL, "noteId" character varying(32) NOT NULL, "choice" integer NOT NULL, CONSTRAINT "PK_fd002d371201c472490ba89c6a0" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_0fb627e1c2f753262a74f0562d" ON "poll_vote" ("createdAt") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_66d2bd2ee31d14bcc23069a89f" ON "poll_vote" ("userId") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_aecfbd5ef60374918e63ee95fa" ON "poll_vote" ("noteId") `);
|
||||
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_50bd7164c5b78f1f4a42c4d21f" ON "poll_vote" ("userId", "noteId", "choice") `);
|
||||
await queryRunner.query(`CREATE TABLE "note_reaction" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "userId" character varying(32) NOT NULL, "noteId" character varying(32) NOT NULL, "reaction" character varying(128) NOT NULL, CONSTRAINT "PK_767ec729b108799b587a3fcc9cf" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_01f4581f114e0ebd2bbb876f0b" ON "note_reaction" ("createdAt") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_13761f64257f40c5636d0ff95e" ON "note_reaction" ("userId") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_45145e4953780f3cd5656f0ea6" ON "note_reaction" ("noteId") `);
|
||||
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_ad0c221b25672daf2df320a817" ON "note_reaction" ("userId", "noteId") `);
|
||||
await queryRunner.query(`CREATE TABLE "note_watching" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "userId" character varying(32) NOT NULL, "noteId" character varying(32) NOT NULL, "noteUserId" character varying(32) NOT NULL, CONSTRAINT "PK_49286fdb23725945a74aa27d757" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_318cdf42a9cfc11f479bd802bb" ON "note_watching" ("createdAt") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_b0134ec406e8d09a540f818288" ON "note_watching" ("userId") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_03e7028ab8388a3f5e3ce2a861" ON "note_watching" ("noteId") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_44499765eec6b5489d72c4253b" ON "note_watching" ("noteUserId") `);
|
||||
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_a42c93c69989ce1d09959df4cf" ON "note_watching" ("userId", "noteId") `);
|
||||
await queryRunner.query(`CREATE TABLE "note_unread" ("id" character varying(32) NOT NULL, "userId" character varying(32) NOT NULL, "noteId" character varying(32) NOT NULL, "noteUserId" character varying(32) NOT NULL, "isSpecified" boolean NOT NULL, CONSTRAINT "PK_1904eda61a784f57e6e51fa9c1f" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_56b0166d34ddae49d8ef7610bb" ON "note_unread" ("userId") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_e637cba4dc4410218c4251260e" ON "note_unread" ("noteId") `);
|
||||
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_d908433a4953cc13216cd9c274" ON "note_unread" ("userId", "noteId") `);
|
||||
await queryRunner.query(`CREATE TABLE "notification" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "notifieeId" character varying(32) NOT NULL, "notifierId" character varying(32) NOT NULL, "type" character varying(32) NOT NULL, "isRead" boolean NOT NULL DEFAULT false, "noteId" character varying(32), "reaction" character varying(128), "choice" integer, CONSTRAINT "PK_705b6c7cdf9b2c2ff7ac7872cb7" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_b11a5e627c41d4dc3170f1d370" ON "notification" ("createdAt") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_3c601b70a1066d2c8b517094cb" ON "notification" ("notifieeId") `);
|
||||
await queryRunner.query(`CREATE TABLE "meta" ("id" character varying(32) NOT NULL, "name" character varying(128), "description" character varying(1024), "maintainerName" character varying(128), "maintainerEmail" character varying(128), "announcements" jsonb NOT NULL DEFAULT '[]', "disableRegistration" boolean NOT NULL DEFAULT false, "disableLocalTimeline" boolean NOT NULL DEFAULT false, "disableGlobalTimeline" boolean NOT NULL DEFAULT false, "enableEmojiReaction" boolean NOT NULL DEFAULT true, "useStarForReactionFallback" boolean NOT NULL DEFAULT false, "langs" character varying(64) array NOT NULL DEFAULT '{}'::varchar[], "hiddenTags" character varying(256) array NOT NULL DEFAULT '{}'::varchar[], "blockedHosts" character varying(256) array NOT NULL DEFAULT '{}'::varchar[], "mascotImageUrl" character varying(512) DEFAULT '/assets/ai.png', "bannerUrl" character varying(512), "errorImageUrl" character varying(512) DEFAULT 'https://xn--931a.moe/aiart/yubitun.png', "iconUrl" character varying(512), "cacheRemoteFiles" boolean NOT NULL DEFAULT true, "proxyAccount" character varying(128), "enableRecaptcha" boolean NOT NULL DEFAULT false, "recaptchaSiteKey" character varying(64), "recaptchaSecretKey" character varying(64), "localDriveCapacityMb" integer NOT NULL DEFAULT 1024, "remoteDriveCapacityMb" integer NOT NULL DEFAULT 32, "maxNoteTextLength" integer NOT NULL DEFAULT 500, "summalyProxy" character varying(128), "enableEmail" boolean NOT NULL DEFAULT false, "email" character varying(128), "smtpSecure" boolean NOT NULL DEFAULT false, "smtpHost" character varying(128), "smtpPort" integer, "smtpUser" character varying(128), "smtpPass" character varying(128), "enableServiceWorker" boolean NOT NULL DEFAULT false, "swPublicKey" character varying(128), "swPrivateKey" character varying(128), "enableTwitterIntegration" boolean NOT NULL DEFAULT false, "twitterConsumerKey" character varying(128), "twitterConsumerSecret" character varying(128), "enableGithubIntegration" boolean NOT NULL DEFAULT false, "githubClientId" character varying(128), "githubClientSecret" character varying(128), "enableDiscordIntegration" boolean NOT NULL DEFAULT false, "discordClientId" character varying(128), "discordClientSecret" character varying(128), CONSTRAINT "PK_c4c17a6c2bd7651338b60fc590b" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE TABLE "following" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "followeeId" character varying(32) NOT NULL, "followerId" character varying(32) NOT NULL, "followerHost" character varying(128), "followerInbox" character varying(512), "followerSharedInbox" character varying(512), "followeeHost" character varying(128), "followeeInbox" character varying(512), "followeeSharedInbox" character varying(512), CONSTRAINT "PK_c76c6e044bdf76ecf8bfb82a645" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_582f8fab771a9040a12961f3e7" ON "following" ("createdAt") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_24e0042143a18157b234df186c" ON "following" ("followeeId") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_6516c5a6f3c015b4eed39978be" ON "following" ("followerId") `);
|
||||
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_307be5f1d1252e0388662acb96" ON "following" ("followerId", "followeeId") `);
|
||||
await queryRunner.query(`CREATE TABLE "instance" ("id" character varying(32) NOT NULL, "caughtAt" TIMESTAMP WITH TIME ZONE NOT NULL, "host" character varying(128) NOT NULL, "system" character varying(64), "usersCount" integer NOT NULL DEFAULT 0, "notesCount" integer NOT NULL DEFAULT 0, "followingCount" integer NOT NULL DEFAULT 0, "followersCount" integer NOT NULL DEFAULT 0, "driveUsage" integer NOT NULL DEFAULT 0, "driveFiles" integer NOT NULL DEFAULT 0, "latestRequestSentAt" TIMESTAMP WITH TIME ZONE, "latestStatus" integer, "latestRequestReceivedAt" TIMESTAMP WITH TIME ZONE, "lastCommunicatedAt" TIMESTAMP WITH TIME ZONE NOT NULL, "isNotResponding" boolean NOT NULL DEFAULT false, "isMarkedAsClosed" boolean NOT NULL DEFAULT false, CONSTRAINT "PK_eaf60e4a0c399c9935413e06474" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_2cd3b2a6b4cf0b910b260afe08" ON "instance" ("caughtAt") `);
|
||||
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_8d5afc98982185799b160e10eb" ON "instance" ("host") `);
|
||||
await queryRunner.query(`CREATE TABLE "muting" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "muteeId" character varying(32) NOT NULL, "muterId" character varying(32) NOT NULL, CONSTRAINT "PK_2e92d06c8b5c602eeb27ca9ba48" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_f86d57fbca33c7a4e6897490cc" ON "muting" ("createdAt") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_ec96b4fed9dae517e0dbbe0675" ON "muting" ("muteeId") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_93060675b4a79a577f31d260c6" ON "muting" ("muterId") `);
|
||||
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_1eb9d9824a630321a29fd3b290" ON "muting" ("muterId", "muteeId") `);
|
||||
await queryRunner.query(`CREATE TABLE "sw_subscription" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "userId" character varying(32) NOT NULL, "endpoint" character varying(512) NOT NULL, "auth" character varying(256) NOT NULL, "publickey" character varying(128) NOT NULL, CONSTRAINT "PK_e8f763631530051b95eb6279b91" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_97754ca6f2baff9b4abb7f853d" ON "sw_subscription" ("userId") `);
|
||||
await queryRunner.query(`CREATE TABLE "blocking" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "blockeeId" character varying(32) NOT NULL, "blockerId" character varying(32) NOT NULL, CONSTRAINT "PK_e5d9a541cc1965ee7e048ea09dd" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_b9a354f7941c1e779f3b33aea6" ON "blocking" ("createdAt") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_2cd4a2743a99671308f5417759" ON "blocking" ("blockeeId") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_0627125f1a8a42c9a1929edb55" ON "blocking" ("blockerId") `);
|
||||
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_98a1bc5cb30dfd159de056549f" ON "blocking" ("blockerId", "blockeeId") `);
|
||||
await queryRunner.query(`CREATE TABLE "user_list" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "userId" character varying(32) NOT NULL, "name" character varying(128) NOT NULL, CONSTRAINT "PK_87bab75775fd9b1ff822b656402" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_b7fcefbdd1c18dce86687531f9" ON "user_list" ("userId") `);
|
||||
await queryRunner.query(`CREATE TABLE "user_list_joining" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "userId" character varying(32) NOT NULL, "userListId" character varying(32) NOT NULL, CONSTRAINT "PK_11abb3768da1c5f8de101c9df45" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_d844bfc6f3f523a05189076efa" ON "user_list_joining" ("userId") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_605472305f26818cc93d1baaa7" ON "user_list_joining" ("userListId") `);
|
||||
await queryRunner.query(`CREATE TABLE "hashtag" ("id" character varying(32) NOT NULL, "name" character varying(128) NOT NULL, "mentionedUserIds" character varying(32) array NOT NULL, "mentionedUsersCount" integer NOT NULL DEFAULT 0, "mentionedLocalUserIds" character varying(32) array NOT NULL, "mentionedLocalUsersCount" integer NOT NULL DEFAULT 0, "mentionedRemoteUserIds" character varying(32) array NOT NULL, "mentionedRemoteUsersCount" integer NOT NULL DEFAULT 0, "attachedUserIds" character varying(32) array NOT NULL, "attachedUsersCount" integer NOT NULL DEFAULT 0, "attachedLocalUserIds" character varying(32) array NOT NULL, "attachedLocalUsersCount" integer NOT NULL DEFAULT 0, "attachedRemoteUserIds" character varying(32) array NOT NULL, "attachedRemoteUsersCount" integer NOT NULL DEFAULT 0, CONSTRAINT "PK_cb36eb8af8412bfa978f1165d78" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_347fec870eafea7b26c8a73bac" ON "hashtag" ("name") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_2710a55f826ee236ea1a62698f" ON "hashtag" ("mentionedUsersCount") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_0e206cec573f1edff4a3062923" ON "hashtag" ("mentionedLocalUsersCount") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_4c02d38a976c3ae132228c6fce" ON "hashtag" ("mentionedRemoteUsersCount") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_d57f9030cd3af7f63ffb1c267c" ON "hashtag" ("attachedUsersCount") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_0c44bf4f680964145f2a68a341" ON "hashtag" ("attachedLocalUsersCount") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_0b03cbcd7e6a7ce068efa8ecc2" ON "hashtag" ("attachedRemoteUsersCount") `);
|
||||
await queryRunner.query(`CREATE TABLE "note_favorite" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "userId" character varying(32) NOT NULL, "noteId" character varying(32) NOT NULL, CONSTRAINT "PK_af0da35a60b9fa4463a62082b36" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_47f4b1892f5d6ba8efb3057d81" ON "note_favorite" ("userId") `);
|
||||
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_0f4fb9ad355f3effff221ef245" ON "note_favorite" ("userId", "noteId") `);
|
||||
await queryRunner.query(`CREATE TABLE "abuse_user_report" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "userId" character varying(32) NOT NULL, "reporterId" character varying(32) NOT NULL, "comment" character varying(512) NOT NULL, CONSTRAINT "PK_87873f5f5cc5c321a1306b2d18c" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_db2098070b2b5a523c58181f74" ON "abuse_user_report" ("createdAt") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_d049123c413e68ca52abe73420" ON "abuse_user_report" ("userId") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_04cc96756f89d0b7f9473e8cdf" ON "abuse_user_report" ("reporterId") `);
|
||||
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_5cd442c3b2e74fdd99dae20243" ON "abuse_user_report" ("userId", "reporterId") `);
|
||||
await queryRunner.query(`CREATE TABLE "registration_ticket" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "code" character varying(64) NOT NULL, CONSTRAINT "PK_f11696b6fafcf3662d4292734f8" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_0ff69e8dfa9fe31bb4a4660f59" ON "registration_ticket" ("code") `);
|
||||
await queryRunner.query(`CREATE TABLE "messaging_message" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "userId" character varying(32) NOT NULL, "recipientId" character varying(32) NOT NULL, "text" character varying(4096), "isRead" boolean NOT NULL DEFAULT false, "fileId" character varying(32), CONSTRAINT "PK_db398fd79dc95d0eb8c30456eaa" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_e21cd3646e52ef9c94aaf17c2e" ON "messaging_message" ("createdAt") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_5377c307783fce2b6d352e1203" ON "messaging_message" ("userId") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_cac14a4e3944454a5ce7daa514" ON "messaging_message" ("recipientId") `);
|
||||
await queryRunner.query(`CREATE TABLE "signin" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "userId" character varying(32) NOT NULL, "ip" character varying(128) NOT NULL, "headers" jsonb NOT NULL, "success" boolean NOT NULL, CONSTRAINT "PK_9e96ddc025712616fc492b3b588" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_2c308dbdc50d94dc625670055f" ON "signin" ("userId") `);
|
||||
await queryRunner.query(`CREATE TABLE "auth_session" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "token" character varying(128) NOT NULL, "userId" character varying(32), "appId" character varying(32) NOT NULL, CONSTRAINT "PK_19354ed146424a728c1112a8cbf" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_62cb09e1129f6ec024ef66e183" ON "auth_session" ("token") `);
|
||||
await queryRunner.query(`CREATE TABLE "follow_request" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "followeeId" character varying(32) NOT NULL, "followerId" character varying(32) NOT NULL, "requestId" character varying(128), "followerHost" character varying(128), "followerInbox" character varying(512), "followerSharedInbox" character varying(512), "followeeHost" character varying(128), "followeeInbox" character varying(512), "followeeSharedInbox" character varying(512), CONSTRAINT "PK_53a9aa3725f7a3deb150b39dbfc" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_12c01c0d1a79f77d9f6c15fadd" ON "follow_request" ("followeeId") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_a7fd92dd6dc519e6fb435dd108" ON "follow_request" ("followerId") `);
|
||||
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_d54a512b822fac7ed52800f6b4" ON "follow_request" ("followerId", "followeeId") `);
|
||||
await queryRunner.query(`CREATE TABLE "emoji" ("id" character varying(32) NOT NULL, "updatedAt" TIMESTAMP WITH TIME ZONE, "name" character varying(128) NOT NULL, "host" character varying(128), "url" character varying(512) NOT NULL, "uri" character varying(512), "type" character varying(64), "aliases" character varying(128) array NOT NULL DEFAULT '{}'::varchar[], CONSTRAINT "PK_df74ce05e24999ee01ea0bc50a3" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_b37dafc86e9af007e3295c2781" ON "emoji" ("name") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_5900e907bb46516ddf2871327c" ON "emoji" ("host") `);
|
||||
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_4f4d35e1256c84ae3d1f0eab10" ON "emoji" ("name", "host") `);
|
||||
await queryRunner.query(`CREATE TABLE "reversi_game" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "startedAt" TIMESTAMP WITH TIME ZONE, "user1Id" character varying(32) NOT NULL, "user2Id" character varying(32) NOT NULL, "user1Accepted" boolean NOT NULL DEFAULT false, "user2Accepted" boolean NOT NULL DEFAULT false, "black" integer, "isStarted" boolean NOT NULL DEFAULT false, "isEnded" boolean NOT NULL DEFAULT false, "winnerId" character varying(32), "surrendered" character varying(32), "logs" jsonb NOT NULL DEFAULT '[]', "map" character varying(64) array NOT NULL, "bw" character varying(32) NOT NULL, "isLlotheo" boolean NOT NULL DEFAULT false, "canPutEverywhere" boolean NOT NULL DEFAULT false, "loopedBoard" boolean NOT NULL DEFAULT false, "form1" jsonb DEFAULT null, "form2" jsonb DEFAULT null, "crc32" character varying(32), CONSTRAINT "PK_76b30eeba71b1193ad7c5311c3f" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_b46ec40746efceac604142be1c" ON "reversi_game" ("createdAt") `);
|
||||
await queryRunner.query(`CREATE TABLE "reversi_matching" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "parentId" character varying(32) NOT NULL, "childId" character varying(32) NOT NULL, CONSTRAINT "PK_880bd0afbab232f21c8b9d146cf" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_b604d92d6c7aec38627f6eaf16" ON "reversi_matching" ("createdAt") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_3b25402709dd9882048c2bbade" ON "reversi_matching" ("parentId") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_e247b23a3c9b45f89ec1299d06" ON "reversi_matching" ("childId") `);
|
||||
await queryRunner.query(`CREATE TABLE "user_note_pining" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "userId" character varying(32) NOT NULL, "noteId" character varying(32) NOT NULL, CONSTRAINT "PK_a6a2dad4ae000abce2ea9d9b103" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_bfbc6f79ba4007b4ce5097f08d" ON "user_note_pining" ("userId") `);
|
||||
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_410cd649884b501c02d6e72738" ON "user_note_pining" ("userId", "noteId") `);
|
||||
await queryRunner.query(`CREATE TYPE "poll_notevisibility_enum" AS ENUM('public', 'home', 'followers', 'specified')`);
|
||||
await queryRunner.query(`CREATE TABLE "poll" ("noteId" character varying(32) NOT NULL, "expiresAt" TIMESTAMP WITH TIME ZONE, "multiple" boolean NOT NULL, "choices" character varying(128) array NOT NULL DEFAULT '{}'::varchar[], "votes" integer array NOT NULL, "noteVisibility" "poll_notevisibility_enum" NOT NULL, "userId" character varying(32) NOT NULL, "userHost" character varying(128), CONSTRAINT "REL_da851e06d0dfe2ef397d8b1bf1" UNIQUE ("noteId"), CONSTRAINT "PK_da851e06d0dfe2ef397d8b1bf1b" PRIMARY KEY ("noteId"))`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_0610ebcfcfb4a18441a9bcdab2" ON "poll" ("userId") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_7fa20a12319c7f6dc3aed98c0a" ON "poll" ("userHost") `);
|
||||
await queryRunner.query(`CREATE TABLE "user_keypair" ("userId" character varying(32) NOT NULL, "publicKey" character varying(4096) NOT NULL, "privateKey" character varying(4096) NOT NULL, CONSTRAINT "REL_f4853eb41ab722fe05f81cedeb" UNIQUE ("userId"), CONSTRAINT "PK_f4853eb41ab722fe05f81cedeb6" PRIMARY KEY ("userId"))`);
|
||||
await queryRunner.query(`CREATE TABLE "user_publickey" ("userId" character varying(32) NOT NULL, "keyId" character varying(256) NOT NULL, "keyPem" character varying(4096) NOT NULL, CONSTRAINT "REL_10c146e4b39b443ede016f6736" UNIQUE ("userId"), CONSTRAINT "PK_10c146e4b39b443ede016f6736d" PRIMARY KEY ("userId"))`);
|
||||
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_171e64971c780ebd23fae140bb" ON "user_publickey" ("keyId") `);
|
||||
await queryRunner.query(`CREATE TABLE "user_profile" ("userId" character varying(32) NOT NULL, "location" character varying(128), "birthday" character(10), "description" character varying(1024), "fields" jsonb NOT NULL DEFAULT '[]', "url" character varying(512), "email" character varying(128), "emailVerifyCode" character varying(128), "emailVerified" boolean NOT NULL DEFAULT false, "twoFactorTempSecret" character varying(128), "twoFactorSecret" character varying(128), "twoFactorEnabled" boolean NOT NULL DEFAULT false, "password" character varying(128), "clientData" jsonb NOT NULL DEFAULT '{}', "autoWatch" boolean NOT NULL DEFAULT false, "autoAcceptFollowed" boolean NOT NULL DEFAULT false, "alwaysMarkNsfw" boolean NOT NULL DEFAULT false, "carefulBot" boolean NOT NULL DEFAULT false, "twitter" boolean NOT NULL DEFAULT false, "twitterAccessToken" character varying(64) DEFAULT null, "twitterAccessTokenSecret" character varying(64) DEFAULT null, "twitterUserId" character varying(64) DEFAULT null, "twitterScreenName" character varying(64) DEFAULT null, "github" boolean NOT NULL DEFAULT false, "githubAccessToken" character varying(64) DEFAULT null, "githubId" integer DEFAULT null, "githubLogin" character varying(64) DEFAULT null, "discord" boolean NOT NULL DEFAULT false, "discordAccessToken" character varying(64) DEFAULT null, "discordRefreshToken" character varying(64) DEFAULT null, "discordExpiresDate" integer DEFAULT null, "discordId" character varying(64) DEFAULT null, "discordUsername" character varying(64) DEFAULT null, "discordDiscriminator" character varying(64) DEFAULT null, "userHost" character varying(128), CONSTRAINT "REL_51cb79b5555effaf7d69ba1cff" UNIQUE ("userId"), CONSTRAINT "PK_51cb79b5555effaf7d69ba1cff9" PRIMARY KEY ("userId"))`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_dce530b98e454793dac5ec2f5a" ON "user_profile" ("userHost") `);
|
||||
await queryRunner.query(`CREATE TYPE "__chart__active_users_span_enum" AS ENUM('hour', 'day')`);
|
||||
await queryRunner.query(`CREATE TABLE "__chart__active_users" ("id" SERIAL NOT NULL, "date" integer NOT NULL, "group" character varying(128), "span" "__chart__active_users_span_enum" NOT NULL, "unique" jsonb NOT NULL DEFAULT '{}', "___local_count" bigint NOT NULL, "___remote_count" bigint NOT NULL, CONSTRAINT "PK_317237a9f733b970604a11e314f" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE TYPE "__chart__drive_span_enum" AS ENUM('hour', 'day')`);
|
||||
await queryRunner.query(`CREATE TABLE "__chart__drive" ("id" SERIAL NOT NULL, "date" integer NOT NULL, "group" character varying(128), "span" "__chart__drive_span_enum" NOT NULL, "unique" jsonb NOT NULL DEFAULT '{}', "___local_totalCount" bigint NOT NULL, "___local_totalSize" bigint NOT NULL, "___local_incCount" bigint NOT NULL, "___local_incSize" bigint NOT NULL, "___local_decCount" bigint NOT NULL, "___local_decSize" bigint NOT NULL, "___remote_totalCount" bigint NOT NULL, "___remote_totalSize" bigint NOT NULL, "___remote_incCount" bigint NOT NULL, "___remote_incSize" bigint NOT NULL, "___remote_decCount" bigint NOT NULL, "___remote_decSize" bigint NOT NULL, CONSTRAINT "PK_f96bc548a765cd4b3b354221ce7" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE TYPE "__chart__federation_span_enum" AS ENUM('hour', 'day')`);
|
||||
await queryRunner.query(`CREATE TABLE "__chart__federation" ("id" SERIAL NOT NULL, "date" integer NOT NULL, "group" character varying(128), "span" "__chart__federation_span_enum" NOT NULL, "unique" jsonb NOT NULL DEFAULT '{}', "___instance_total" bigint NOT NULL, "___instance_inc" bigint NOT NULL, "___instance_dec" bigint NOT NULL, CONSTRAINT "PK_b39dcd31a0fe1a7757e348e85fd" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE TYPE "__chart__hashtag_span_enum" AS ENUM('hour', 'day')`);
|
||||
await queryRunner.query(`CREATE TABLE "__chart__hashtag" ("id" SERIAL NOT NULL, "date" integer NOT NULL, "group" character varying(128), "span" "__chart__hashtag_span_enum" NOT NULL, "unique" jsonb NOT NULL DEFAULT '{}', "___local_count" bigint NOT NULL, "___remote_count" bigint NOT NULL, CONSTRAINT "PK_c32f1ea2b44a5d2f7881e37f8f9" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE TYPE "__chart__instance_span_enum" AS ENUM('hour', 'day')`);
|
||||
await queryRunner.query(`CREATE TABLE "__chart__instance" ("id" SERIAL NOT NULL, "date" integer NOT NULL, "group" character varying(128), "span" "__chart__instance_span_enum" NOT NULL, "unique" jsonb NOT NULL DEFAULT '{}', "___requests_failed" bigint NOT NULL, "___requests_succeeded" bigint NOT NULL, "___requests_received" bigint NOT NULL, "___notes_total" bigint NOT NULL, "___notes_inc" bigint NOT NULL, "___notes_dec" bigint NOT NULL, "___notes_diffs_normal" bigint NOT NULL, "___notes_diffs_reply" bigint NOT NULL, "___notes_diffs_renote" bigint NOT NULL, "___users_total" bigint NOT NULL, "___users_inc" bigint NOT NULL, "___users_dec" bigint NOT NULL, "___following_total" bigint NOT NULL, "___following_inc" bigint NOT NULL, "___following_dec" bigint NOT NULL, "___followers_total" bigint NOT NULL, "___followers_inc" bigint NOT NULL, "___followers_dec" bigint NOT NULL, "___drive_totalFiles" bigint NOT NULL, "___drive_totalUsage" bigint NOT NULL, "___drive_incFiles" bigint NOT NULL, "___drive_incUsage" bigint NOT NULL, "___drive_decFiles" bigint NOT NULL, "___drive_decUsage" bigint NOT NULL, CONSTRAINT "PK_1267c67c7c2d47b4903975f2c00" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE TYPE "__chart__network_span_enum" AS ENUM('hour', 'day')`);
|
||||
await queryRunner.query(`CREATE TABLE "__chart__network" ("id" SERIAL NOT NULL, "date" integer NOT NULL, "group" character varying(128), "span" "__chart__network_span_enum" NOT NULL, "unique" jsonb NOT NULL DEFAULT '{}', "___incomingRequests" bigint NOT NULL, "___outgoingRequests" bigint NOT NULL, "___totalTime" bigint NOT NULL, "___incomingBytes" bigint NOT NULL, "___outgoingBytes" bigint NOT NULL, CONSTRAINT "PK_bc4290c2e27fad14ef0c1ca93f3" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE TYPE "__chart__notes_span_enum" AS ENUM('hour', 'day')`);
|
||||
await queryRunner.query(`CREATE TABLE "__chart__notes" ("id" SERIAL NOT NULL, "date" integer NOT NULL, "group" character varying(128), "span" "__chart__notes_span_enum" NOT NULL, "unique" jsonb NOT NULL DEFAULT '{}', "___local_total" bigint NOT NULL, "___local_inc" bigint NOT NULL, "___local_dec" bigint NOT NULL, "___local_diffs_normal" bigint NOT NULL, "___local_diffs_reply" bigint NOT NULL, "___local_diffs_renote" bigint NOT NULL, "___remote_total" bigint NOT NULL, "___remote_inc" bigint NOT NULL, "___remote_dec" bigint NOT NULL, "___remote_diffs_normal" bigint NOT NULL, "___remote_diffs_reply" bigint NOT NULL, "___remote_diffs_renote" bigint NOT NULL, CONSTRAINT "PK_0aec823fa85c7f901bdb3863b14" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE TYPE "__chart__per_user_drive_span_enum" AS ENUM('hour', 'day')`);
|
||||
await queryRunner.query(`CREATE TABLE "__chart__per_user_drive" ("id" SERIAL NOT NULL, "date" integer NOT NULL, "group" character varying(128), "span" "__chart__per_user_drive_span_enum" NOT NULL, "unique" jsonb NOT NULL DEFAULT '{}', "___totalCount" bigint NOT NULL, "___totalSize" bigint NOT NULL, "___incCount" bigint NOT NULL, "___incSize" bigint NOT NULL, "___decCount" bigint NOT NULL, "___decSize" bigint NOT NULL, CONSTRAINT "PK_d0ef23d24d666e1a44a0cd3d208" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE TYPE "__chart__per_user_following_span_enum" AS ENUM('hour', 'day')`);
|
||||
await queryRunner.query(`CREATE TABLE "__chart__per_user_following" ("id" SERIAL NOT NULL, "date" integer NOT NULL, "group" character varying(128), "span" "__chart__per_user_following_span_enum" NOT NULL, "unique" jsonb NOT NULL DEFAULT '{}', "___local_followings_total" bigint NOT NULL, "___local_followings_inc" bigint NOT NULL, "___local_followings_dec" bigint NOT NULL, "___local_followers_total" bigint NOT NULL, "___local_followers_inc" bigint NOT NULL, "___local_followers_dec" bigint NOT NULL, "___remote_followings_total" bigint NOT NULL, "___remote_followings_inc" bigint NOT NULL, "___remote_followings_dec" bigint NOT NULL, "___remote_followers_total" bigint NOT NULL, "___remote_followers_inc" bigint NOT NULL, "___remote_followers_dec" bigint NOT NULL, CONSTRAINT "PK_85bb1b540363a29c2fec83bd907" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE TYPE "__chart__per_user_notes_span_enum" AS ENUM('hour', 'day')`);
|
||||
await queryRunner.query(`CREATE TABLE "__chart__per_user_notes" ("id" SERIAL NOT NULL, "date" integer NOT NULL, "group" character varying(128), "span" "__chart__per_user_notes_span_enum" NOT NULL, "unique" jsonb NOT NULL DEFAULT '{}', "___total" bigint NOT NULL, "___inc" bigint NOT NULL, "___dec" bigint NOT NULL, "___diffs_normal" bigint NOT NULL, "___diffs_reply" bigint NOT NULL, "___diffs_renote" bigint NOT NULL, CONSTRAINT "PK_334acf6e915af2f29edc11b8e50" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE TYPE "__chart__per_user_reaction_span_enum" AS ENUM('hour', 'day')`);
|
||||
await queryRunner.query(`CREATE TABLE "__chart__per_user_reaction" ("id" SERIAL NOT NULL, "date" integer NOT NULL, "group" character varying(128), "span" "__chart__per_user_reaction_span_enum" NOT NULL, "unique" jsonb NOT NULL DEFAULT '{}', "___local_count" bigint NOT NULL, "___remote_count" bigint NOT NULL, CONSTRAINT "PK_984f54dae441e65b633e8d27a7f" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE TYPE "__chart__test_grouped_span_enum" AS ENUM('hour', 'day')`);
|
||||
await queryRunner.query(`CREATE TABLE "__chart__test_grouped" ("id" SERIAL NOT NULL, "date" integer NOT NULL, "group" character varying(128), "span" "__chart__test_grouped_span_enum" NOT NULL, "unique" jsonb NOT NULL DEFAULT '{}', "___foo_total" bigint NOT NULL, "___foo_inc" bigint NOT NULL, "___foo_dec" bigint NOT NULL, CONSTRAINT "PK_f4a2b175d308695af30d4293272" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE TYPE "__chart__test_unique_span_enum" AS ENUM('hour', 'day')`);
|
||||
await queryRunner.query(`CREATE TABLE "__chart__test_unique" ("id" SERIAL NOT NULL, "date" integer NOT NULL, "group" character varying(128), "span" "__chart__test_unique_span_enum" NOT NULL, "unique" jsonb NOT NULL DEFAULT '{}', "___foo" bigint NOT NULL, CONSTRAINT "PK_409bac9c97cc612d8500012319d" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE TYPE "__chart__test_span_enum" AS ENUM('hour', 'day')`);
|
||||
await queryRunner.query(`CREATE TABLE "__chart__test" ("id" SERIAL NOT NULL, "date" integer NOT NULL, "group" character varying(128), "span" "__chart__test_span_enum" NOT NULL, "unique" jsonb NOT NULL DEFAULT '{}', "___foo_total" bigint NOT NULL, "___foo_inc" bigint NOT NULL, "___foo_dec" bigint NOT NULL, CONSTRAINT "PK_b4bc31dffbd1b785276a3ecfc1e" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE TYPE "__chart__users_span_enum" AS ENUM('hour', 'day')`);
|
||||
await queryRunner.query(`CREATE TABLE "__chart__users" ("id" SERIAL NOT NULL, "date" integer NOT NULL, "group" character varying(128), "span" "__chart__users_span_enum" NOT NULL, "unique" jsonb NOT NULL DEFAULT '{}', "___local_total" bigint NOT NULL, "___local_inc" bigint NOT NULL, "___local_dec" bigint NOT NULL, "___remote_total" bigint NOT NULL, "___remote_inc" bigint NOT NULL, "___remote_dec" bigint NOT NULL, CONSTRAINT "PK_4dfcf2c78d03524b9eb2c99d328" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`ALTER TABLE "drive_folder" ADD CONSTRAINT "FK_f4fc06e49c0171c85f1c48060d2" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "drive_folder" ADD CONSTRAINT "FK_00ceffb0cdc238b3233294f08f2" FOREIGN KEY ("parentId") REFERENCES "drive_folder"("id") ON DELETE SET NULL ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "drive_file" ADD CONSTRAINT "FK_860fa6f6c7df5bb887249fba22e" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE SET NULL ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "drive_file" ADD CONSTRAINT "FK_bb90d1956dafc4068c28aa7560a" FOREIGN KEY ("folderId") REFERENCES "drive_folder"("id") ON DELETE SET NULL ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "user" ADD CONSTRAINT "FK_58f5c71eaab331645112cf8cfa5" FOREIGN KEY ("avatarId") REFERENCES "drive_file"("id") ON DELETE SET NULL ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "user" ADD CONSTRAINT "FK_afc64b53f8db3707ceb34eb28e2" FOREIGN KEY ("bannerId") REFERENCES "drive_file"("id") ON DELETE SET NULL ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "app" ADD CONSTRAINT "FK_3f5b0899ef90527a3462d7c2cb3" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE SET NULL ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "access_token" ADD CONSTRAINT "FK_9949557d0e1b2c19e5344c171e9" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "access_token" ADD CONSTRAINT "FK_a3ff16c90cc87a82a0b5959e560" FOREIGN KEY ("appId") REFERENCES "app"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "note" ADD CONSTRAINT "FK_17cb3553c700a4985dff5a30ff5" FOREIGN KEY ("replyId") REFERENCES "note"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "note" ADD CONSTRAINT "FK_52ccc804d7c69037d558bac4c96" FOREIGN KEY ("renoteId") REFERENCES "note"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "note" ADD CONSTRAINT "FK_ec5c201576192ba8904c345c5cc" FOREIGN KEY ("appId") REFERENCES "app"("id") ON DELETE SET NULL ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "note" ADD CONSTRAINT "FK_5b87d9d19127bd5d92026017a7b" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "poll_vote" ADD CONSTRAINT "FK_66d2bd2ee31d14bcc23069a89f8" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "poll_vote" ADD CONSTRAINT "FK_aecfbd5ef60374918e63ee95fa7" FOREIGN KEY ("noteId") REFERENCES "note"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "note_reaction" ADD CONSTRAINT "FK_13761f64257f40c5636d0ff95ee" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "note_reaction" ADD CONSTRAINT "FK_45145e4953780f3cd5656f0ea6a" FOREIGN KEY ("noteId") REFERENCES "note"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "note_watching" ADD CONSTRAINT "FK_b0134ec406e8d09a540f8182888" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "note_watching" ADD CONSTRAINT "FK_03e7028ab8388a3f5e3ce2a8619" FOREIGN KEY ("noteId") REFERENCES "note"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "note_unread" ADD CONSTRAINT "FK_56b0166d34ddae49d8ef7610bb9" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "note_unread" ADD CONSTRAINT "FK_e637cba4dc4410218c4251260e4" FOREIGN KEY ("noteId") REFERENCES "note"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "notification" ADD CONSTRAINT "FK_3c601b70a1066d2c8b517094cb9" FOREIGN KEY ("notifieeId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "notification" ADD CONSTRAINT "FK_3b4e96eec8d36a8bbb9d02aa710" FOREIGN KEY ("notifierId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "notification" ADD CONSTRAINT "FK_769cb6b73a1efe22ddf733ac453" FOREIGN KEY ("noteId") REFERENCES "note"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "following" ADD CONSTRAINT "FK_24e0042143a18157b234df186c3" FOREIGN KEY ("followeeId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "following" ADD CONSTRAINT "FK_6516c5a6f3c015b4eed39978be5" FOREIGN KEY ("followerId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "muting" ADD CONSTRAINT "FK_ec96b4fed9dae517e0dbbe0675c" FOREIGN KEY ("muteeId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "muting" ADD CONSTRAINT "FK_93060675b4a79a577f31d260c67" FOREIGN KEY ("muterId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "sw_subscription" ADD CONSTRAINT "FK_97754ca6f2baff9b4abb7f853dd" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "blocking" ADD CONSTRAINT "FK_2cd4a2743a99671308f5417759e" FOREIGN KEY ("blockeeId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "blocking" ADD CONSTRAINT "FK_0627125f1a8a42c9a1929edb552" FOREIGN KEY ("blockerId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "user_list" ADD CONSTRAINT "FK_b7fcefbdd1c18dce86687531f99" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "user_list_joining" ADD CONSTRAINT "FK_d844bfc6f3f523a05189076efaa" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "user_list_joining" ADD CONSTRAINT "FK_605472305f26818cc93d1baaa74" FOREIGN KEY ("userListId") REFERENCES "user_list"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "note_favorite" ADD CONSTRAINT "FK_47f4b1892f5d6ba8efb3057d81a" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "note_favorite" ADD CONSTRAINT "FK_0e00498f180193423c992bc4370" FOREIGN KEY ("noteId") REFERENCES "note"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "abuse_user_report" ADD CONSTRAINT "FK_d049123c413e68ca52abe734203" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "abuse_user_report" ADD CONSTRAINT "FK_04cc96756f89d0b7f9473e8cdf3" FOREIGN KEY ("reporterId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "messaging_message" ADD CONSTRAINT "FK_5377c307783fce2b6d352e1203b" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "messaging_message" ADD CONSTRAINT "FK_cac14a4e3944454a5ce7daa5142" FOREIGN KEY ("recipientId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "messaging_message" ADD CONSTRAINT "FK_535def119223ac05ad3fa9ef64b" FOREIGN KEY ("fileId") REFERENCES "drive_file"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "signin" ADD CONSTRAINT "FK_2c308dbdc50d94dc625670055f7" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "auth_session" ADD CONSTRAINT "FK_c072b729d71697f959bde66ade0" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "auth_session" ADD CONSTRAINT "FK_dbe037d4bddd17b03a1dc778dee" FOREIGN KEY ("appId") REFERENCES "app"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "follow_request" ADD CONSTRAINT "FK_12c01c0d1a79f77d9f6c15fadd2" FOREIGN KEY ("followeeId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "follow_request" ADD CONSTRAINT "FK_a7fd92dd6dc519e6fb435dd108f" FOREIGN KEY ("followerId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "reversi_game" ADD CONSTRAINT "FK_f7467510c60a45ce5aca6292743" FOREIGN KEY ("user1Id") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "reversi_game" ADD CONSTRAINT "FK_6649a4e8c5d5cf32fb03b5da9f6" FOREIGN KEY ("user2Id") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "reversi_matching" ADD CONSTRAINT "FK_3b25402709dd9882048c2bbade0" FOREIGN KEY ("parentId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "reversi_matching" ADD CONSTRAINT "FK_e247b23a3c9b45f89ec1299d066" FOREIGN KEY ("childId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "user_note_pining" ADD CONSTRAINT "FK_bfbc6f79ba4007b4ce5097f08d6" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "user_note_pining" ADD CONSTRAINT "FK_68881008f7c3588ad7ecae471cf" FOREIGN KEY ("noteId") REFERENCES "note"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "poll" ADD CONSTRAINT "FK_da851e06d0dfe2ef397d8b1bf1b" FOREIGN KEY ("noteId") REFERENCES "note"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "user_keypair" ADD CONSTRAINT "FK_f4853eb41ab722fe05f81cedeb6" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "user_publickey" ADD CONSTRAINT "FK_10c146e4b39b443ede016f6736d" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "user_profile" ADD CONSTRAINT "FK_51cb79b5555effaf7d69ba1cff9" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<any> {
|
||||
await queryRunner.query(`ALTER TABLE "user_profile" DROP CONSTRAINT "FK_51cb79b5555effaf7d69ba1cff9"`);
|
||||
await queryRunner.query(`ALTER TABLE "user_publickey" DROP CONSTRAINT "FK_10c146e4b39b443ede016f6736d"`);
|
||||
await queryRunner.query(`ALTER TABLE "user_keypair" DROP CONSTRAINT "FK_f4853eb41ab722fe05f81cedeb6"`);
|
||||
await queryRunner.query(`ALTER TABLE "poll" DROP CONSTRAINT "FK_da851e06d0dfe2ef397d8b1bf1b"`);
|
||||
await queryRunner.query(`ALTER TABLE "user_note_pining" DROP CONSTRAINT "FK_68881008f7c3588ad7ecae471cf"`);
|
||||
await queryRunner.query(`ALTER TABLE "user_note_pining" DROP CONSTRAINT "FK_bfbc6f79ba4007b4ce5097f08d6"`);
|
||||
await queryRunner.query(`ALTER TABLE "reversi_matching" DROP CONSTRAINT "FK_e247b23a3c9b45f89ec1299d066"`);
|
||||
await queryRunner.query(`ALTER TABLE "reversi_matching" DROP CONSTRAINT "FK_3b25402709dd9882048c2bbade0"`);
|
||||
await queryRunner.query(`ALTER TABLE "reversi_game" DROP CONSTRAINT "FK_6649a4e8c5d5cf32fb03b5da9f6"`);
|
||||
await queryRunner.query(`ALTER TABLE "reversi_game" DROP CONSTRAINT "FK_f7467510c60a45ce5aca6292743"`);
|
||||
await queryRunner.query(`ALTER TABLE "follow_request" DROP CONSTRAINT "FK_a7fd92dd6dc519e6fb435dd108f"`);
|
||||
await queryRunner.query(`ALTER TABLE "follow_request" DROP CONSTRAINT "FK_12c01c0d1a79f77d9f6c15fadd2"`);
|
||||
await queryRunner.query(`ALTER TABLE "auth_session" DROP CONSTRAINT "FK_dbe037d4bddd17b03a1dc778dee"`);
|
||||
await queryRunner.query(`ALTER TABLE "auth_session" DROP CONSTRAINT "FK_c072b729d71697f959bde66ade0"`);
|
||||
await queryRunner.query(`ALTER TABLE "signin" DROP CONSTRAINT "FK_2c308dbdc50d94dc625670055f7"`);
|
||||
await queryRunner.query(`ALTER TABLE "messaging_message" DROP CONSTRAINT "FK_535def119223ac05ad3fa9ef64b"`);
|
||||
await queryRunner.query(`ALTER TABLE "messaging_message" DROP CONSTRAINT "FK_cac14a4e3944454a5ce7daa5142"`);
|
||||
await queryRunner.query(`ALTER TABLE "messaging_message" DROP CONSTRAINT "FK_5377c307783fce2b6d352e1203b"`);
|
||||
await queryRunner.query(`ALTER TABLE "abuse_user_report" DROP CONSTRAINT "FK_04cc96756f89d0b7f9473e8cdf3"`);
|
||||
await queryRunner.query(`ALTER TABLE "abuse_user_report" DROP CONSTRAINT "FK_d049123c413e68ca52abe734203"`);
|
||||
await queryRunner.query(`ALTER TABLE "note_favorite" DROP CONSTRAINT "FK_0e00498f180193423c992bc4370"`);
|
||||
await queryRunner.query(`ALTER TABLE "note_favorite" DROP CONSTRAINT "FK_47f4b1892f5d6ba8efb3057d81a"`);
|
||||
await queryRunner.query(`ALTER TABLE "user_list_joining" DROP CONSTRAINT "FK_605472305f26818cc93d1baaa74"`);
|
||||
await queryRunner.query(`ALTER TABLE "user_list_joining" DROP CONSTRAINT "FK_d844bfc6f3f523a05189076efaa"`);
|
||||
await queryRunner.query(`ALTER TABLE "user_list" DROP CONSTRAINT "FK_b7fcefbdd1c18dce86687531f99"`);
|
||||
await queryRunner.query(`ALTER TABLE "blocking" DROP CONSTRAINT "FK_0627125f1a8a42c9a1929edb552"`);
|
||||
await queryRunner.query(`ALTER TABLE "blocking" DROP CONSTRAINT "FK_2cd4a2743a99671308f5417759e"`);
|
||||
await queryRunner.query(`ALTER TABLE "sw_subscription" DROP CONSTRAINT "FK_97754ca6f2baff9b4abb7f853dd"`);
|
||||
await queryRunner.query(`ALTER TABLE "muting" DROP CONSTRAINT "FK_93060675b4a79a577f31d260c67"`);
|
||||
await queryRunner.query(`ALTER TABLE "muting" DROP CONSTRAINT "FK_ec96b4fed9dae517e0dbbe0675c"`);
|
||||
await queryRunner.query(`ALTER TABLE "following" DROP CONSTRAINT "FK_6516c5a6f3c015b4eed39978be5"`);
|
||||
await queryRunner.query(`ALTER TABLE "following" DROP CONSTRAINT "FK_24e0042143a18157b234df186c3"`);
|
||||
await queryRunner.query(`ALTER TABLE "notification" DROP CONSTRAINT "FK_769cb6b73a1efe22ddf733ac453"`);
|
||||
await queryRunner.query(`ALTER TABLE "notification" DROP CONSTRAINT "FK_3b4e96eec8d36a8bbb9d02aa710"`);
|
||||
await queryRunner.query(`ALTER TABLE "notification" DROP CONSTRAINT "FK_3c601b70a1066d2c8b517094cb9"`);
|
||||
await queryRunner.query(`ALTER TABLE "note_unread" DROP CONSTRAINT "FK_e637cba4dc4410218c4251260e4"`);
|
||||
await queryRunner.query(`ALTER TABLE "note_unread" DROP CONSTRAINT "FK_56b0166d34ddae49d8ef7610bb9"`);
|
||||
await queryRunner.query(`ALTER TABLE "note_watching" DROP CONSTRAINT "FK_03e7028ab8388a3f5e3ce2a8619"`);
|
||||
await queryRunner.query(`ALTER TABLE "note_watching" DROP CONSTRAINT "FK_b0134ec406e8d09a540f8182888"`);
|
||||
await queryRunner.query(`ALTER TABLE "note_reaction" DROP CONSTRAINT "FK_45145e4953780f3cd5656f0ea6a"`);
|
||||
await queryRunner.query(`ALTER TABLE "note_reaction" DROP CONSTRAINT "FK_13761f64257f40c5636d0ff95ee"`);
|
||||
await queryRunner.query(`ALTER TABLE "poll_vote" DROP CONSTRAINT "FK_aecfbd5ef60374918e63ee95fa7"`);
|
||||
await queryRunner.query(`ALTER TABLE "poll_vote" DROP CONSTRAINT "FK_66d2bd2ee31d14bcc23069a89f8"`);
|
||||
await queryRunner.query(`ALTER TABLE "note" DROP CONSTRAINT "FK_5b87d9d19127bd5d92026017a7b"`);
|
||||
await queryRunner.query(`ALTER TABLE "note" DROP CONSTRAINT "FK_ec5c201576192ba8904c345c5cc"`);
|
||||
await queryRunner.query(`ALTER TABLE "note" DROP CONSTRAINT "FK_52ccc804d7c69037d558bac4c96"`);
|
||||
await queryRunner.query(`ALTER TABLE "note" DROP CONSTRAINT "FK_17cb3553c700a4985dff5a30ff5"`);
|
||||
await queryRunner.query(`ALTER TABLE "access_token" DROP CONSTRAINT "FK_a3ff16c90cc87a82a0b5959e560"`);
|
||||
await queryRunner.query(`ALTER TABLE "access_token" DROP CONSTRAINT "FK_9949557d0e1b2c19e5344c171e9"`);
|
||||
await queryRunner.query(`ALTER TABLE "app" DROP CONSTRAINT "FK_3f5b0899ef90527a3462d7c2cb3"`);
|
||||
await queryRunner.query(`ALTER TABLE "user" DROP CONSTRAINT "FK_afc64b53f8db3707ceb34eb28e2"`);
|
||||
await queryRunner.query(`ALTER TABLE "user" DROP CONSTRAINT "FK_58f5c71eaab331645112cf8cfa5"`);
|
||||
await queryRunner.query(`ALTER TABLE "drive_file" DROP CONSTRAINT "FK_bb90d1956dafc4068c28aa7560a"`);
|
||||
await queryRunner.query(`ALTER TABLE "drive_file" DROP CONSTRAINT "FK_860fa6f6c7df5bb887249fba22e"`);
|
||||
await queryRunner.query(`ALTER TABLE "drive_folder" DROP CONSTRAINT "FK_00ceffb0cdc238b3233294f08f2"`);
|
||||
await queryRunner.query(`ALTER TABLE "drive_folder" DROP CONSTRAINT "FK_f4fc06e49c0171c85f1c48060d2"`);
|
||||
await queryRunner.query(`DROP TABLE "__chart__users"`);
|
||||
await queryRunner.query(`DROP TYPE "__chart__users_span_enum"`);
|
||||
await queryRunner.query(`DROP TABLE "__chart__test"`);
|
||||
await queryRunner.query(`DROP TYPE "__chart__test_span_enum"`);
|
||||
await queryRunner.query(`DROP TABLE "__chart__test_unique"`);
|
||||
await queryRunner.query(`DROP TYPE "__chart__test_unique_span_enum"`);
|
||||
await queryRunner.query(`DROP TABLE "__chart__test_grouped"`);
|
||||
await queryRunner.query(`DROP TYPE "__chart__test_grouped_span_enum"`);
|
||||
await queryRunner.query(`DROP TABLE "__chart__per_user_reaction"`);
|
||||
await queryRunner.query(`DROP TYPE "__chart__per_user_reaction_span_enum"`);
|
||||
await queryRunner.query(`DROP TABLE "__chart__per_user_notes"`);
|
||||
await queryRunner.query(`DROP TYPE "__chart__per_user_notes_span_enum"`);
|
||||
await queryRunner.query(`DROP TABLE "__chart__per_user_following"`);
|
||||
await queryRunner.query(`DROP TYPE "__chart__per_user_following_span_enum"`);
|
||||
await queryRunner.query(`DROP TABLE "__chart__per_user_drive"`);
|
||||
await queryRunner.query(`DROP TYPE "__chart__per_user_drive_span_enum"`);
|
||||
await queryRunner.query(`DROP TABLE "__chart__notes"`);
|
||||
await queryRunner.query(`DROP TYPE "__chart__notes_span_enum"`);
|
||||
await queryRunner.query(`DROP TABLE "__chart__network"`);
|
||||
await queryRunner.query(`DROP TYPE "__chart__network_span_enum"`);
|
||||
await queryRunner.query(`DROP TABLE "__chart__instance"`);
|
||||
await queryRunner.query(`DROP TYPE "__chart__instance_span_enum"`);
|
||||
await queryRunner.query(`DROP TABLE "__chart__hashtag"`);
|
||||
await queryRunner.query(`DROP TYPE "__chart__hashtag_span_enum"`);
|
||||
await queryRunner.query(`DROP TABLE "__chart__federation"`);
|
||||
await queryRunner.query(`DROP TYPE "__chart__federation_span_enum"`);
|
||||
await queryRunner.query(`DROP TABLE "__chart__drive"`);
|
||||
await queryRunner.query(`DROP TYPE "__chart__drive_span_enum"`);
|
||||
await queryRunner.query(`DROP TABLE "__chart__active_users"`);
|
||||
await queryRunner.query(`DROP TYPE "__chart__active_users_span_enum"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_dce530b98e454793dac5ec2f5a"`);
|
||||
await queryRunner.query(`DROP TABLE "user_profile"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_171e64971c780ebd23fae140bb"`);
|
||||
await queryRunner.query(`DROP TABLE "user_publickey"`);
|
||||
await queryRunner.query(`DROP TABLE "user_keypair"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_7fa20a12319c7f6dc3aed98c0a"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_0610ebcfcfb4a18441a9bcdab2"`);
|
||||
await queryRunner.query(`DROP TABLE "poll"`);
|
||||
await queryRunner.query(`DROP TYPE "poll_notevisibility_enum"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_410cd649884b501c02d6e72738"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_bfbc6f79ba4007b4ce5097f08d"`);
|
||||
await queryRunner.query(`DROP TABLE "user_note_pining"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_e247b23a3c9b45f89ec1299d06"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_3b25402709dd9882048c2bbade"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_b604d92d6c7aec38627f6eaf16"`);
|
||||
await queryRunner.query(`DROP TABLE "reversi_matching"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_b46ec40746efceac604142be1c"`);
|
||||
await queryRunner.query(`DROP TABLE "reversi_game"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_4f4d35e1256c84ae3d1f0eab10"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_5900e907bb46516ddf2871327c"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_b37dafc86e9af007e3295c2781"`);
|
||||
await queryRunner.query(`DROP TABLE "emoji"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_d54a512b822fac7ed52800f6b4"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_a7fd92dd6dc519e6fb435dd108"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_12c01c0d1a79f77d9f6c15fadd"`);
|
||||
await queryRunner.query(`DROP TABLE "follow_request"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_62cb09e1129f6ec024ef66e183"`);
|
||||
await queryRunner.query(`DROP TABLE "auth_session"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_2c308dbdc50d94dc625670055f"`);
|
||||
await queryRunner.query(`DROP TABLE "signin"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_cac14a4e3944454a5ce7daa514"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_5377c307783fce2b6d352e1203"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_e21cd3646e52ef9c94aaf17c2e"`);
|
||||
await queryRunner.query(`DROP TABLE "messaging_message"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_0ff69e8dfa9fe31bb4a4660f59"`);
|
||||
await queryRunner.query(`DROP TABLE "registration_ticket"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_5cd442c3b2e74fdd99dae20243"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_04cc96756f89d0b7f9473e8cdf"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_d049123c413e68ca52abe73420"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_db2098070b2b5a523c58181f74"`);
|
||||
await queryRunner.query(`DROP TABLE "abuse_user_report"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_0f4fb9ad355f3effff221ef245"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_47f4b1892f5d6ba8efb3057d81"`);
|
||||
await queryRunner.query(`DROP TABLE "note_favorite"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_0b03cbcd7e6a7ce068efa8ecc2"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_0c44bf4f680964145f2a68a341"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_d57f9030cd3af7f63ffb1c267c"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_4c02d38a976c3ae132228c6fce"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_0e206cec573f1edff4a3062923"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_2710a55f826ee236ea1a62698f"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_347fec870eafea7b26c8a73bac"`);
|
||||
await queryRunner.query(`DROP TABLE "hashtag"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_605472305f26818cc93d1baaa7"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_d844bfc6f3f523a05189076efa"`);
|
||||
await queryRunner.query(`DROP TABLE "user_list_joining"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_b7fcefbdd1c18dce86687531f9"`);
|
||||
await queryRunner.query(`DROP TABLE "user_list"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_98a1bc5cb30dfd159de056549f"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_0627125f1a8a42c9a1929edb55"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_2cd4a2743a99671308f5417759"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_b9a354f7941c1e779f3b33aea6"`);
|
||||
await queryRunner.query(`DROP TABLE "blocking"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_97754ca6f2baff9b4abb7f853d"`);
|
||||
await queryRunner.query(`DROP TABLE "sw_subscription"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_1eb9d9824a630321a29fd3b290"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_93060675b4a79a577f31d260c6"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_ec96b4fed9dae517e0dbbe0675"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_f86d57fbca33c7a4e6897490cc"`);
|
||||
await queryRunner.query(`DROP TABLE "muting"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_8d5afc98982185799b160e10eb"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_2cd3b2a6b4cf0b910b260afe08"`);
|
||||
await queryRunner.query(`DROP TABLE "instance"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_307be5f1d1252e0388662acb96"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_6516c5a6f3c015b4eed39978be"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_24e0042143a18157b234df186c"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_582f8fab771a9040a12961f3e7"`);
|
||||
await queryRunner.query(`DROP TABLE "following"`);
|
||||
await queryRunner.query(`DROP TABLE "meta"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_3c601b70a1066d2c8b517094cb"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_b11a5e627c41d4dc3170f1d370"`);
|
||||
await queryRunner.query(`DROP TABLE "notification"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_d908433a4953cc13216cd9c274"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_e637cba4dc4410218c4251260e"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_56b0166d34ddae49d8ef7610bb"`);
|
||||
await queryRunner.query(`DROP TABLE "note_unread"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_a42c93c69989ce1d09959df4cf"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_44499765eec6b5489d72c4253b"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_03e7028ab8388a3f5e3ce2a861"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_b0134ec406e8d09a540f818288"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_318cdf42a9cfc11f479bd802bb"`);
|
||||
await queryRunner.query(`DROP TABLE "note_watching"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_ad0c221b25672daf2df320a817"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_45145e4953780f3cd5656f0ea6"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_13761f64257f40c5636d0ff95e"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_01f4581f114e0ebd2bbb876f0b"`);
|
||||
await queryRunner.query(`DROP TABLE "note_reaction"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_50bd7164c5b78f1f4a42c4d21f"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_aecfbd5ef60374918e63ee95fa"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_66d2bd2ee31d14bcc23069a89f"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_0fb627e1c2f753262a74f0562d"`);
|
||||
await queryRunner.query(`DROP TABLE "poll_vote"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_7125a826ab192eb27e11d358a5"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_88937d94d7443d9a99a76fa5c0"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_54ebcb6d27222913b908d56fd8"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_796a8c03959361f97dc2be1d5c"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_25dfc71b0369b003a4cd434d0b"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_51c063b6a133a9cb87145450f5"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_153536c67d05e9adb24e99fc2b"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_5b87d9d19127bd5d92026017a7"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_52ccc804d7c69037d558bac4c9"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_17cb3553c700a4985dff5a30ff"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_e7c0567f5261063592f022e9b5"`);
|
||||
await queryRunner.query(`DROP TABLE "note"`);
|
||||
await queryRunner.query(`DROP TYPE "note_visibility_enum"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_9949557d0e1b2c19e5344c171e"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_64c327441248bae40f7d92f34f"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_70ba8f6af34bc924fc9e12adb8"`);
|
||||
await queryRunner.query(`DROP TABLE "access_token"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_f49922d511d666848f250663c4"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_3f5b0899ef90527a3462d7c2cb"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_048a757923ed8b157e9895da53"`);
|
||||
await queryRunner.query(`DROP TABLE "app"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_5deb01ae162d1d70b80d064c27"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_a854e557b1b14814750c7c7b0c"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_be623adaa4c566baf5d29ce0c8"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_3252a5df8d5bbd16b281f7799e"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_fa99d777623947a5b05f394cae"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_a27b942a0d6dcff90e3ee9b5e8"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_80ca6e6ef65fb9ef34ea8c90f4"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_e11e649824a45d8ed01d597fd9"`);
|
||||
await queryRunner.query(`DROP TABLE "user"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_bb90d1956dafc4068c28aa7560"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_e5848eac4940934e23dbc17581"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_c55b2b7c284d9fef98026fc88e"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_e74022ce9a074b3866f70e0d27"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_d85a184c2540d2deba33daf642"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_a40b8df8c989d7db937ea27cf6"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_37bb9a1b4585f8a3beb24c62d6"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_92779627994ac79277f070c91e"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_860fa6f6c7df5bb887249fba22"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_c8dfad3b72196dd1d6b5db168a"`);
|
||||
await queryRunner.query(`DROP TABLE "drive_file"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_00ceffb0cdc238b3233294f08f"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_f4fc06e49c0171c85f1c48060d"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_02878d441ceae15ce060b73daf"`);
|
||||
await queryRunner.query(`DROP TABLE "drive_folder"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_584b536b49e53ac81beb39a177"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_8cb40cfc8f3c28261e6f887b03"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_8e4eb51a35d81b64dda28eed0a"`);
|
||||
await queryRunner.query(`DROP TABLE "log"`);
|
||||
await queryRunner.query(`DROP TYPE "log_level_enum"`);
|
||||
}
|
||||
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
import {MigrationInterface, QueryRunner} from "typeorm";
|
||||
|
||||
export class Pages1556348509290 implements MigrationInterface {
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<any> {
|
||||
await queryRunner.query(`CREATE TYPE "page_visibility_enum" AS ENUM('public', 'followers', 'specified')`);
|
||||
await queryRunner.query(`CREATE TABLE "page" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "updatedAt" TIMESTAMP WITH TIME ZONE NOT NULL, "title" character varying(256) NOT NULL, "name" character varying(256) NOT NULL, "summary" character varying(256), "alignCenter" boolean NOT NULL, "font" character varying(32) NOT NULL, "userId" character varying(32) NOT NULL, "eyeCatchingImageId" character varying(32), "content" jsonb NOT NULL DEFAULT '[]', "variables" jsonb NOT NULL DEFAULT '[]', "visibility" "page_visibility_enum" NOT NULL, "visibleUserIds" character varying(32) array NOT NULL DEFAULT '{}'::varchar[], CONSTRAINT "PK_742f4117e065c5b6ad21b37ba1f" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_fbb4297c927a9b85e9cefa2eb1" ON "page" ("createdAt") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_af639b066dfbca78b01a920f8a" ON "page" ("updatedAt") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_b82c19c08afb292de4600d99e4" ON "page" ("name") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_ae1d917992dd0c9d9bbdad06c4" ON "page" ("userId") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_90148bbc2bf0854428786bfc15" ON "page" ("visibleUserIds") `);
|
||||
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_2133ef8317e4bdb839c0dcbf13" ON "page" ("userId", "name") `);
|
||||
await queryRunner.query(`ALTER TABLE "page" ADD CONSTRAINT "FK_ae1d917992dd0c9d9bbdad06c4a" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "page" ADD CONSTRAINT "FK_3126dd7c502c9e4d7597ef7ef10" FOREIGN KEY ("eyeCatchingImageId") REFERENCES "drive_file"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<any> {
|
||||
await queryRunner.query(`ALTER TABLE "page" DROP CONSTRAINT "FK_3126dd7c502c9e4d7597ef7ef10"`);
|
||||
await queryRunner.query(`ALTER TABLE "page" DROP CONSTRAINT "FK_ae1d917992dd0c9d9bbdad06c4a"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_2133ef8317e4bdb839c0dcbf13"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_90148bbc2bf0854428786bfc15"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_ae1d917992dd0c9d9bbdad06c4"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_b82c19c08afb292de4600d99e4"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_af639b066dfbca78b01a920f8a"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_fbb4297c927a9b85e9cefa2eb1"`);
|
||||
await queryRunner.query(`DROP TABLE "page"`);
|
||||
await queryRunner.query(`DROP TYPE "page_visibility_enum"`);
|
||||
}
|
||||
|
||||
}
|
@ -1,16 +0,0 @@
|
||||
import {MigrationInterface, QueryRunner} from "typeorm";
|
||||
|
||||
export class UserProfile1556746559567 implements MigrationInterface {
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<any> {
|
||||
await queryRunner.query(`ALTER TABLE "user_profile" ALTER COLUMN "githubId" TYPE VARCHAR(64) USING "githubId"::VARCHAR(64)`);
|
||||
await queryRunner.query(`ALTER TABLE "user_profile" ALTER COLUMN "discordExpiresDate" TYPE VARCHAR(64) USING "discordExpiresDate"::VARCHAR(64)`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<any> {
|
||||
await queryRunner.query(`UPDATE "user_profile" SET github = FALSE, discord = FALSE`);
|
||||
await queryRunner.query(`ALTER TABLE "user_profile" ALTER COLUMN "githubId" TYPE INTEGER USING NULL`);
|
||||
await queryRunner.query(`ALTER TABLE "user_profile" ALTER COLUMN "discordExpiresDate" TYPE INTEGER USING NULL`);
|
||||
}
|
||||
|
||||
}
|
@ -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,16 +0,0 @@
|
||||
import {MigrationInterface, QueryRunner} from "typeorm";
|
||||
|
||||
export class AddSomeUrls1557761316509 implements MigrationInterface {
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<any> {
|
||||
await queryRunner.query(`ALTER TABLE "meta" ADD "ToSUrl" character varying(512)`);
|
||||
await queryRunner.query(`ALTER TABLE "meta" ADD "repositoryUrl" character varying(512) NOT NULL DEFAULT 'https://github.com/syuilo/misskey'`);
|
||||
await queryRunner.query(`ALTER TABLE "meta" ADD "feedbackUrl" character varying(512) DEFAULT 'https://github.com/syuilo/misskey/issues/new'`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<any> {
|
||||
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "feedbackUrl"`);
|
||||
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "repositoryUrl"`);
|
||||
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "ToSUrl"`);
|
||||
}
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
import {MigrationInterface, QueryRunner} from "typeorm";
|
||||
|
||||
export class ObjectStorageSetting1557932705754 implements MigrationInterface {
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<any> {
|
||||
await queryRunner.query(`ALTER TABLE "meta" ADD "useObjectStorage" boolean NOT NULL DEFAULT false`);
|
||||
await queryRunner.query(`ALTER TABLE "meta" ADD "objectStorageBucket" character varying(512)`);
|
||||
await queryRunner.query(`ALTER TABLE "meta" ADD "objectStoragePrefix" character varying(512)`);
|
||||
await queryRunner.query(`ALTER TABLE "meta" ADD "objectStorageBaseUrl" character varying(512)`);
|
||||
await queryRunner.query(`ALTER TABLE "meta" ADD "objectStorageEndpoint" character varying(512)`);
|
||||
await queryRunner.query(`ALTER TABLE "meta" ADD "objectStorageRegion" character varying(512)`);
|
||||
await queryRunner.query(`ALTER TABLE "meta" ADD "objectStorageAccessKey" character varying(512)`);
|
||||
await queryRunner.query(`ALTER TABLE "meta" ADD "objectStorageSecretKey" character varying(512)`);
|
||||
await queryRunner.query(`ALTER TABLE "meta" ADD "objectStoragePort" integer`);
|
||||
await queryRunner.query(`ALTER TABLE "meta" ADD "objectStorageUseSSL" boolean NOT NULL DEFAULT true`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<any> {
|
||||
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "objectStorageUseSSL"`);
|
||||
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "objectStoragePort"`);
|
||||
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "objectStorageSecretKey"`);
|
||||
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "objectStorageAccessKey"`);
|
||||
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "objectStorageRegion"`);
|
||||
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "objectStorageEndpoint"`);
|
||||
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "objectStorageBaseUrl"`);
|
||||
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "objectStoragePrefix"`);
|
||||
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "objectStorageBucket"`);
|
||||
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "useObjectStorage"`);
|
||||
}
|
||||
|
||||
}
|
@ -1,23 +0,0 @@
|
||||
import {MigrationInterface, QueryRunner} from "typeorm";
|
||||
|
||||
export class PageLike1558072954435 implements MigrationInterface {
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<any> {
|
||||
await queryRunner.query(`CREATE TABLE "page_like" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "userId" character varying(32) NOT NULL, "pageId" character varying(32) NOT NULL, CONSTRAINT "PK_813f034843af992d3ae0f43c64c" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_0e61efab7f88dbb79c9166dbb4" ON "page_like" ("userId") `);
|
||||
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_4ce6fb9c70529b4c8ac46c9bfa" ON "page_like" ("userId", "pageId") `);
|
||||
await queryRunner.query(`ALTER TABLE "page" ADD "likedCount" integer NOT NULL DEFAULT 0`);
|
||||
await queryRunner.query(`ALTER TABLE "page_like" ADD CONSTRAINT "FK_0e61efab7f88dbb79c9166dbb48" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "page_like" ADD CONSTRAINT "FK_cf8782626dced3176038176a847" FOREIGN KEY ("pageId") REFERENCES "page"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<any> {
|
||||
await queryRunner.query(`ALTER TABLE "page_like" DROP CONSTRAINT "FK_cf8782626dced3176038176a847"`);
|
||||
await queryRunner.query(`ALTER TABLE "page_like" DROP CONSTRAINT "FK_0e61efab7f88dbb79c9166dbb48"`);
|
||||
await queryRunner.query(`ALTER TABLE "page" DROP COLUMN "likedCount"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_4ce6fb9c70529b4c8ac46c9bfa"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_0e61efab7f88dbb79c9166dbb4"`);
|
||||
await queryRunner.query(`DROP TABLE "page_like"`);
|
||||
}
|
||||
|
||||
}
|
@ -1,41 +0,0 @@
|
||||
import {MigrationInterface, QueryRunner} from "typeorm";
|
||||
|
||||
export class UserGroup1558103093633 implements MigrationInterface {
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<any> {
|
||||
await queryRunner.query(`CREATE TABLE "user_group" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "name" character varying(256) NOT NULL, "userId" character varying(32) NOT NULL, "isPrivate" boolean NOT NULL DEFAULT false, CONSTRAINT "PK_3c29fba6fe013ec8724378ce7c9" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_20e30aa35180e317e133d75316" ON "user_group" ("createdAt") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_3d6b372788ab01be58853003c9" ON "user_group" ("userId") `);
|
||||
await queryRunner.query(`CREATE TABLE "user_group_joining" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "userId" character varying(32) NOT NULL, "userGroupId" character varying(32) NOT NULL, CONSTRAINT "PK_15f2425885253c5507e1599cfe7" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_f3a1b4bd0c7cabba958a0c0b23" ON "user_group_joining" ("userId") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_67dc758bc0566985d1b3d39986" ON "user_group_joining" ("userGroupId") `);
|
||||
await queryRunner.query(`ALTER TABLE "messaging_message" ADD "groupId" character varying(32)`);
|
||||
await queryRunner.query(`ALTER TABLE "messaging_message" ADD "reads" character varying(32) array NOT NULL DEFAULT '{}'::varchar[]`);
|
||||
await queryRunner.query(`ALTER TABLE "messaging_message" ALTER COLUMN "recipientId" DROP NOT NULL`);
|
||||
await queryRunner.query(`COMMENT ON COLUMN "messaging_message"."recipientId" IS 'The recipient user ID.'`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_2c4be03b446884f9e9c502135b" ON "messaging_message" ("groupId") `);
|
||||
await queryRunner.query(`ALTER TABLE "messaging_message" ADD CONSTRAINT "FK_2c4be03b446884f9e9c502135be" FOREIGN KEY ("groupId") REFERENCES "user_group"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "user_group" ADD CONSTRAINT "FK_3d6b372788ab01be58853003c93" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "user_group_joining" ADD CONSTRAINT "FK_f3a1b4bd0c7cabba958a0c0b231" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "user_group_joining" ADD CONSTRAINT "FK_67dc758bc0566985d1b3d399865" FOREIGN KEY ("userGroupId") REFERENCES "user_group"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<any> {
|
||||
await queryRunner.query(`ALTER TABLE "user_group_joining" DROP CONSTRAINT "FK_67dc758bc0566985d1b3d399865"`);
|
||||
await queryRunner.query(`ALTER TABLE "user_group_joining" DROP CONSTRAINT "FK_f3a1b4bd0c7cabba958a0c0b231"`);
|
||||
await queryRunner.query(`ALTER TABLE "user_group" DROP CONSTRAINT "FK_3d6b372788ab01be58853003c93"`);
|
||||
await queryRunner.query(`ALTER TABLE "messaging_message" DROP CONSTRAINT "FK_2c4be03b446884f9e9c502135be"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_2c4be03b446884f9e9c502135b"`);
|
||||
await queryRunner.query(`COMMENT ON COLUMN "messaging_message"."recipientId" IS ''`);
|
||||
await queryRunner.query(`ALTER TABLE "messaging_message" ALTER COLUMN "recipientId" SET NOT NULL`);
|
||||
await queryRunner.query(`ALTER TABLE "messaging_message" DROP COLUMN "reads"`);
|
||||
await queryRunner.query(`ALTER TABLE "messaging_message" DROP COLUMN "groupId"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_67dc758bc0566985d1b3d39986"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_f3a1b4bd0c7cabba958a0c0b23"`);
|
||||
await queryRunner.query(`DROP TABLE "user_group_joining"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_3d6b372788ab01be58853003c9"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_20e30aa35180e317e133d75316"`);
|
||||
await queryRunner.query(`DROP TABLE "user_group"`);
|
||||
}
|
||||
|
||||
}
|
@ -1,25 +0,0 @@
|
||||
import {MigrationInterface, QueryRunner} from "typeorm";
|
||||
|
||||
export class UserGroupInvite1558257926829 implements MigrationInterface {
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<any> {
|
||||
await queryRunner.query(`CREATE TABLE "user_group_invite" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "userId" character varying(32) NOT NULL, "userGroupId" character varying(32) NOT NULL, CONSTRAINT "PK_3893884af0d3a5f4d01e7921a97" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_1039988afa3bf991185b277fe0" ON "user_group_invite" ("userId") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_e10924607d058004304611a436" ON "user_group_invite" ("userGroupId") `);
|
||||
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_78787741f9010886796f2320a4" ON "user_group_invite" ("userId", "userGroupId") `);
|
||||
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_d9ecaed8c6dc43f3592c229282" ON "user_group_joining" ("userId", "userGroupId") `);
|
||||
await queryRunner.query(`ALTER TABLE "user_group_invite" ADD CONSTRAINT "FK_1039988afa3bf991185b277fe03" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "user_group_invite" ADD CONSTRAINT "FK_e10924607d058004304611a436a" FOREIGN KEY ("userGroupId") REFERENCES "user_group"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<any> {
|
||||
await queryRunner.query(`ALTER TABLE "user_group_invite" DROP CONSTRAINT "FK_e10924607d058004304611a436a"`);
|
||||
await queryRunner.query(`ALTER TABLE "user_group_invite" DROP CONSTRAINT "FK_1039988afa3bf991185b277fe03"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_d9ecaed8c6dc43f3592c229282"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_78787741f9010886796f2320a4"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_e10924607d058004304611a436"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_1039988afa3bf991185b277fe0"`);
|
||||
await queryRunner.query(`DROP TABLE "user_group_invite"`);
|
||||
}
|
||||
|
||||
}
|
@ -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,29 +0,0 @@
|
||||
import {MigrationInterface, QueryRunner} from "typeorm";
|
||||
|
||||
export class webauthn1561706992953 implements MigrationInterface {
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<any> {
|
||||
await queryRunner.query(`CREATE TABLE "attestation_challenge" ("id" character varying(32) NOT NULL, "userId" character varying(32) NOT NULL, "challenge" character varying(64) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "registrationChallenge" boolean NOT NULL DEFAULT false, CONSTRAINT "PK_d0ba6786e093f1bcb497572a6b5" PRIMARY KEY ("id", "userId"))`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_f1a461a618fa1755692d0e0d59" ON "attestation_challenge" ("userId") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_47efb914aed1f72dd39a306c7b" ON "attestation_challenge" ("challenge") `);
|
||||
await queryRunner.query(`CREATE TABLE "user_security_key" ("id" character varying NOT NULL, "userId" character varying(32) NOT NULL, "publicKey" character varying NOT NULL, "lastUsed" TIMESTAMP WITH TIME ZONE NOT NULL, "name" character varying(30) NOT NULL, CONSTRAINT "PK_3e508571121ab39c5f85d10c166" PRIMARY KEY ("id"))`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_ff9ca3b5f3ee3d0681367a9b44" ON "user_security_key" ("userId") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_0d7718e562dcedd0aa5cf2c9f7" ON "user_security_key" ("publicKey") `);
|
||||
await queryRunner.query(`ALTER TABLE "user_profile" ADD "securityKeysAvailable" boolean NOT NULL DEFAULT false`);
|
||||
await queryRunner.query(`ALTER TABLE "attestation_challenge" ADD CONSTRAINT "FK_f1a461a618fa1755692d0e0d592" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE "user_security_key" ADD CONSTRAINT "FK_ff9ca3b5f3ee3d0681367a9b447" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<any> {
|
||||
await queryRunner.query(`ALTER TABLE "user_security_key" DROP CONSTRAINT "FK_ff9ca3b5f3ee3d0681367a9b447"`);
|
||||
await queryRunner.query(`ALTER TABLE "attestation_challenge" DROP CONSTRAINT "FK_f1a461a618fa1755692d0e0d592"`);
|
||||
await queryRunner.query(`ALTER TABLE "user_profile" DROP COLUMN "securityKeysAvailable"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_0d7718e562dcedd0aa5cf2c9f7"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_ff9ca3b5f3ee3d0681367a9b44"`);
|
||||
await queryRunner.query(`DROP TABLE "user_security_key"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_47efb914aed1f72dd39a306c7b"`);
|
||||
await queryRunner.query(`DROP INDEX "IDX_f1a461a618fa1755692d0e0d59"`);
|
||||
await queryRunner.query(`DROP TABLE "attestation_challenge"`);
|
||||
}
|
||||
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user