Compare commits
2520 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2b3687b3cb | ||
|
|
5d61c7c691 | ||
|
|
1bb266e7c7 | ||
|
|
1fca8d322c | ||
|
|
325cd03a59 | ||
|
|
2f7e6baa05 | ||
|
|
d252e066fe | ||
|
|
fe7bd9ab3c | ||
|
|
84e3f41305 | ||
|
|
3e8cccad0d | ||
|
|
a2b94d67f7 | ||
|
|
6ab61e73b0 | ||
|
|
051c6973af | ||
|
|
806a49ec3d | ||
|
|
3829fe128a | ||
|
|
649177985d | ||
|
|
c15148b23c | ||
|
|
261a3f5d91 | ||
|
|
256ba78ba5 | ||
|
|
04aff8866e | ||
|
|
1a51b98700 | ||
|
|
f64100226d | ||
|
|
b7805e48a6 | ||
|
|
0d9556620d | ||
|
|
a51828a7a2 | ||
|
|
7e2009f408 | ||
|
|
008d950a39 | ||
|
|
22d5862afb | ||
|
|
de569147a5 | ||
|
|
a82c3db750 | ||
|
|
80706d10af | ||
|
|
93f01ed4df | ||
|
|
a3a28e5557 | ||
|
|
8948a0d3a4 | ||
|
|
d849ea9b41 | ||
|
|
0144575f3f | ||
|
|
bdbe646ca7 | ||
|
|
1a1483a242 | ||
|
|
962346785b | ||
|
|
a73da3cd70 | ||
|
|
9c27d0ae3f | ||
|
|
525d5218c1 | ||
|
|
e23b13ec7f | ||
|
|
29b000e03c | ||
|
|
6a7b0df810 | ||
|
|
4142de9195 | ||
|
|
9195e1be00 | ||
|
|
75382d13fd | ||
|
|
d444280a28 | ||
|
|
52fc0fe04a | ||
|
|
216bebadf1 | ||
|
|
a5592931cb | ||
|
|
a2228417ff | ||
|
|
3e1e292c3e | ||
|
|
f2f039ae9e | ||
|
|
29dde1eda0 | ||
|
|
45d3792ce0 | ||
|
|
875d0aaebb | ||
|
|
26c9d8ff6f | ||
|
|
5e3372e932 | ||
|
|
f7069dcd18 | ||
|
|
560bb65384 | ||
|
|
50cd6a036e | ||
|
|
441ab2b5f8 | ||
|
|
ba5ed188a1 | ||
|
|
72e672f08d | ||
|
|
120474ec6a | ||
|
|
eee57c47f5 | ||
|
|
4c160869b8 | ||
|
|
3720a7fbe0 | ||
|
|
7afa541a53 | ||
|
|
6f979c8275 | ||
|
|
d399241e65 | ||
|
|
e85dec030a | ||
|
|
d0220764cc | ||
|
|
75c1df9531 | ||
|
|
bca7156d6b | ||
|
|
64277b7157 | ||
|
|
4a72543f65 | ||
|
|
5b84d29807 | ||
|
|
a11061ec2b | ||
|
|
24cfb93b2e | ||
|
|
502b42d63a | ||
|
|
612672b79c | ||
|
|
abc670e1b1 | ||
|
|
d589ccdd01 | ||
|
|
acb07d9f7d | ||
|
|
f4d2186719 | ||
|
|
d0ede5c665 | ||
|
|
554cbb5e9b | ||
|
|
dbd32a56bf | ||
|
|
7f500235c6 | ||
|
|
39a58084c8 | ||
|
|
cde0fde836 | ||
|
|
e70cca0fda | ||
|
|
919bd7eb82 | ||
|
|
312cff3d6f | ||
|
|
0d86eef3d7 | ||
|
|
13acf570e7 | ||
|
|
fa17623fa8 | ||
|
|
06fd525950 | ||
|
|
4805b5115a | ||
|
|
108dcb3e61 | ||
|
|
780d272535 | ||
|
|
02ea4b81a5 | ||
|
|
7c1bdc6d36 | ||
|
|
78c7b8b836 | ||
|
|
227da30acb | ||
|
|
610805026f | ||
|
|
c02399c3d2 | ||
|
|
e0799d4153 | ||
|
|
6df83f1aa9 | ||
|
|
efb5ad1d9b | ||
|
|
716976f016 | ||
|
|
7892f41b84 | ||
|
|
d549e03b3f | ||
|
|
c511ef21ff | ||
|
|
d64dc45899 | ||
|
|
bcb0588409 | ||
|
|
0975959eb9 | ||
|
|
e985a6d9d3 | ||
|
|
b893305974 | ||
|
|
724fdd44e4 | ||
|
|
b480ef669c | ||
|
|
4b145da046 | ||
|
|
83d168ece3 | ||
|
|
ae44fe7818 | ||
|
|
f8981b3acb | ||
|
|
050b324885 | ||
|
|
e74c0df6c6 | ||
|
|
22d0d11895 | ||
|
|
80d0c0cf74 | ||
|
|
518646b925 | ||
|
|
479d7e0087 | ||
|
|
8ea1a555f4 | ||
|
|
04024dc37c | ||
|
|
060ff9288f | ||
|
|
197116ee78 | ||
|
|
a1e0015257 | ||
|
|
7e701ef9e0 | ||
|
|
3d6fb661bb | ||
|
|
fc372496da | ||
|
|
ad7258fe9c | ||
|
|
bd707cb2a8 | ||
|
|
1839b5f205 | ||
|
|
02b47f963c | ||
|
|
f8a7f9378a | ||
|
|
65cb253be4 | ||
|
|
a12356b24b | ||
|
|
6a67ad7f93 | ||
|
|
140a7f0b1c | ||
|
|
00159bc6b5 | ||
|
|
9542260103 | ||
|
|
72074578df | ||
|
|
3b4750a988 | ||
|
|
aeec5f0163 | ||
|
|
9c94d8c8d6 | ||
|
|
581712a2c8 | ||
|
|
b25b51aaca | ||
|
|
fb97e13a61 | ||
|
|
36e154fdb2 | ||
|
|
ca273a24b4 | ||
|
|
d828bf2889 | ||
|
|
87efccef18 | ||
|
|
e0bf522e7f | ||
|
|
5b1cd3bd3c | ||
|
|
f00489196d | ||
|
|
dd53bf7e51 | ||
|
|
35a6da26d2 | ||
|
|
c8c8748a0b | ||
|
|
46d0065a90 | ||
|
|
990b0180a8 | ||
|
|
f3bfb72251 | ||
|
|
0358a7edc6 | ||
|
|
37f99fca04 | ||
|
|
50dfc8ab82 | ||
|
|
c70c739b0c | ||
|
|
5918285326 | ||
|
|
b1dead1186 | ||
|
|
3e36e132c3 | ||
|
|
fa8d1809e7 | ||
|
|
e12b668d04 | ||
|
|
e5506f7d8c | ||
|
|
b1ac7e5cb3 | ||
|
|
ffd164a5f3 | ||
|
|
cb27414026 | ||
|
|
e320912f33 | ||
|
|
d23aaae698 | ||
|
|
120c0fe848 | ||
|
|
34857b9520 | ||
|
|
a87dcece4c | ||
|
|
01e2479004 | ||
|
|
0fd63fe091 | ||
|
|
cc98801c67 | ||
|
|
2724d74108 | ||
|
|
6d0c0d3a5f | ||
|
|
15f8f63317 | ||
|
|
d970d65968 | ||
|
|
04d359691b | ||
|
|
bfc519944a | ||
|
|
9f69fd14a2 | ||
|
|
85058787b2 | ||
|
|
ec851623e0 | ||
|
|
e05429a3ec | ||
|
|
f651c41816 | ||
|
|
6b88d99ae2 | ||
|
|
814469cdca | ||
|
|
536bf8f141 | ||
|
|
6a27290815 | ||
|
|
7dde3465e2 | ||
|
|
0206a4ac83 | ||
|
|
380f5a972c | ||
|
|
407467a236 | ||
|
|
bcfa9e18bf | ||
|
|
69b730e91a | ||
|
|
6c6c003d68 | ||
|
|
fd652b70d6 | ||
|
|
804a5ab6a8 | ||
|
|
d984a1aa19 | ||
|
|
e05b5a6ab8 | ||
|
|
3ff84db421 | ||
|
|
74ca73ecb4 | ||
|
|
37032f68ae | ||
|
|
21d3605737 | ||
|
|
0a7c1caf43 | ||
|
|
24b57335fa | ||
|
|
9f981d875a | ||
|
|
6dcc3800e0 | ||
|
|
44e9be5a1c | ||
|
|
6a8c560d21 | ||
|
|
0afe8c6b34 | ||
|
|
0f5d7f52a0 | ||
|
|
aaaefa0ee2 | ||
|
|
276929bc7e | ||
|
|
32882f1397 | ||
|
|
7dc380c485 | ||
|
|
49aaa9a5d3 | ||
|
|
84462eb3f2 | ||
|
|
91709ca979 | ||
|
|
9ece71e652 | ||
|
|
4e93f6c6ff | ||
|
|
ad9f1fb7c7 | ||
|
|
abaeea6d8b | ||
|
|
8efbcc4c6b | ||
|
|
8ef31cab8c | ||
|
|
37ae53e55c | ||
|
|
d01f06bdf4 | ||
|
|
0d4a8d118a | ||
|
|
7e6ec83b1f | ||
|
|
9eb515cfae | ||
|
|
d0da019a21 | ||
|
|
57a13c9ad3 | ||
|
|
7f39100634 | ||
|
|
9ab96ef39a | ||
|
|
ed21d797a6 | ||
|
|
15960746bb | ||
|
|
e0f1e3ca71 | ||
|
|
51d0524182 | ||
|
|
16801aa5c4 | ||
|
|
cd23f66834 | ||
|
|
cc5d2b2875 | ||
|
|
94ef03db9e | ||
|
|
038bd100b2 | ||
|
|
3b5c3f086a | ||
|
|
a136715111 | ||
|
|
daa22d68fa | ||
|
|
f24d202024 | ||
|
|
d3e0b8574b | ||
|
|
f4482cc34a | ||
|
|
3ff226cd6b | ||
|
|
5c0d37d021 | ||
|
|
b958959cca | ||
|
|
762418d0fa | ||
|
|
6831f0c192 | ||
|
|
64635fff2d | ||
|
|
e7e861fb5c | ||
|
|
08523ce271 | ||
|
|
833f63c1a9 | ||
|
|
1c05825bc8 | ||
|
|
26bb088a3d | ||
|
|
5c361cef23 | ||
|
|
04bef96aee | ||
|
|
a791981da9 | ||
|
|
264c47e07a | ||
|
|
863c44d15c | ||
|
|
cdec6f202e | ||
|
|
bdf6c739a9 | ||
|
|
843dd5fb58 | ||
|
|
c05853289a | ||
|
|
11c5d257f2 | ||
|
|
cee1a27348 | ||
|
|
690dc75e45 | ||
|
|
8dc82b7a6e | ||
|
|
a396b519bb | ||
|
|
d5f9ce0893 | ||
|
|
c1d7ae99ab | ||
|
|
d8aee7c310 | ||
|
|
3e43d847ca | ||
|
|
70273931b2 | ||
|
|
cc94d2acc5 | ||
|
|
327d9702ca | ||
|
|
1cdb285fe6 | ||
|
|
e9e61e3034 | ||
|
|
b613a51035 | ||
|
|
63e62ecb02 | ||
|
|
d11122af3f | ||
|
|
e8ddb7f6ee | ||
|
|
5ad0a158bc | ||
|
|
e3ea29a8b6 | ||
|
|
ead201ac3d | ||
|
|
19af2d7a7b | ||
|
|
8ba87443ca | ||
|
|
162ace2fd6 | ||
|
|
f51fdc0dbf | ||
|
|
d3d612a89b | ||
|
|
7c7f32d9a6 | ||
|
|
c8b6b6e44f | ||
|
|
12daa80071 | ||
|
|
2f8cc36d4b | ||
|
|
1af4f94338 | ||
|
|
172a0a85aa | ||
|
|
d37c06884d | ||
|
|
80e52c57e1 | ||
|
|
213a7f137e | ||
|
|
4848b71ca0 | ||
|
|
13bad106cc | ||
|
|
3bebf82501 | ||
|
|
e9a8090d7e | ||
|
|
e2a79abbe0 | ||
|
|
d7f57a4415 | ||
|
|
9dd5ed7f1a | ||
|
|
432e18a0c0 | ||
|
|
9a2d435cb1 | ||
|
|
b02274c178 | ||
|
|
91408bceb1 | ||
|
|
e1fd7e3f0c | ||
|
|
d18498cb6b | ||
|
|
b3986b8963 | ||
|
|
75e3d6f7fb | ||
|
|
ded78aa294 | ||
|
|
58e8938364 | ||
|
|
6e8e6c7352 | ||
|
|
270de03646 | ||
|
|
b6c7ff109b | ||
|
|
9b72a5a46d | ||
|
|
626e06c5fd | ||
|
|
b09d10ac52 | ||
|
|
d1568cda19 | ||
|
|
3400b4fa0d | ||
|
|
4455f110b1 | ||
|
|
25fc37449b | ||
|
|
e5ffc7c492 | ||
|
|
5c118e6d8a | ||
|
|
b49c70e67e | ||
|
|
3760fdeed0 | ||
|
|
3aece449e4 | ||
|
|
dcd2d8be77 | ||
|
|
b90e6f9abb | ||
|
|
d984652aa1 | ||
|
|
f176de6d2e | ||
|
|
ef31efabb2 | ||
|
|
53763acb76 | ||
|
|
6f39010133 | ||
|
|
04b5fe6af4 | ||
|
|
626f43f424 | ||
|
|
bebcc72deb | ||
|
|
9f285779ec | ||
|
|
57d3e9fc32 | ||
|
|
84cf09c1d0 | ||
|
|
0848bad960 | ||
|
|
c1b13c3b5b | ||
|
|
8abc4ed65a | ||
|
|
0eebe620cb | ||
|
|
62a0d87795 | ||
|
|
8318633749 | ||
|
|
a453f8aa2e | ||
|
|
54d2b90c25 | ||
|
|
7e1865984d | ||
|
|
a2c56cc112 | ||
|
|
5c0ee8ca48 | ||
|
|
7397b2b82b | ||
|
|
ddcbe21ce6 | ||
|
|
8fc7d1377d | ||
|
|
092403f362 | ||
|
|
bb179922b9 | ||
|
|
c29f912461 | ||
|
|
83d3e1cfe6 | ||
|
|
2914f0f65d | ||
|
|
99aa588ae7 | ||
|
|
0085e1f3ab | ||
|
|
53a9eb13f8 | ||
|
|
b8c56c4dda | ||
|
|
59266b3190 | ||
|
|
0dc94547f5 | ||
|
|
29fc6de330 | ||
|
|
e24d0c40cd | ||
|
|
e95845777a | ||
|
|
167648f61c | ||
|
|
9e6d6ff0dd | ||
|
|
e659cc3d58 | ||
|
|
ff6d45571a | ||
|
|
6cc9a2c945 | ||
|
|
a873401bd7 | ||
|
|
6b19745241 | ||
|
|
982fae80aa | ||
|
|
77b15a3535 | ||
|
|
72754ede4e | ||
|
|
b8ed8336e0 | ||
|
|
13f82856f9 | ||
|
|
a62013f54d | ||
|
|
4c180869c6 | ||
|
|
7bbf022978 | ||
|
|
6b0d48423d | ||
|
|
a617b8dbed | ||
|
|
c57f472caf | ||
|
|
e1ba19fd7e | ||
|
|
1bf8cbeb29 | ||
|
|
f13faf2243 | ||
|
|
6cccd9d288 | ||
|
|
be2cde106b | ||
|
|
17263fb459 | ||
|
|
fed04ef5ae | ||
|
|
969b6dbcad | ||
|
|
aa50d0ee11 | ||
|
|
f09999ad5a | ||
|
|
35814faf8a | ||
|
|
8447a7fafa | ||
|
|
c6e6c5e3ce | ||
|
|
85cbd8dd47 | ||
|
|
bebc9003a3 | ||
|
|
3c081fbd65 | ||
|
|
fdcf874306 | ||
|
|
6cbb741fa1 | ||
|
|
24129c1cb9 | ||
|
|
f0938c36f5 | ||
|
|
484a6eda2e | ||
|
|
3f2ebffbe7 | ||
|
|
ff278a7d8f | ||
|
|
844a3c3aff | ||
|
|
0db48993e9 | ||
|
|
81e21c4314 | ||
|
|
ba0e57396d | ||
|
|
6a728d160a | ||
|
|
180e507bc8 | ||
|
|
f3b7611ded | ||
|
|
c344de5546 | ||
|
|
0bd0aa2bf7 | ||
|
|
c786cbb3a1 | ||
|
|
cd856f653d | ||
|
|
d528c09da6 | ||
|
|
76b7ad006d | ||
|
|
ff33e405a3 | ||
|
|
f74de26d63 | ||
|
|
2c823798d8 | ||
|
|
381e261bbb | ||
|
|
ba9bb5db6c | ||
|
|
cd12bb33a5 | ||
|
|
e333aee232 | ||
|
|
54571f60c3 | ||
|
|
dd743aaeac | ||
|
|
22c76dc9f8 | ||
|
|
7c7e09cf64 | ||
|
|
e5e3d69371 | ||
|
|
82a700b24e | ||
|
|
0579425a4f | ||
|
|
218e74569d | ||
|
|
448f54cf84 | ||
|
|
c139e13049 | ||
|
|
65116fef32 | ||
|
|
a0a35b7dca | ||
|
|
11fb8a24b7 | ||
|
|
512336685c | ||
|
|
484f281c19 | ||
|
|
2169bc5d3e | ||
|
|
c653c84ad2 | ||
|
|
050f75aa60 | ||
|
|
dae3f3552a | ||
|
|
8b09b170d6 | ||
|
|
ec88f2ed8a | ||
|
|
607d8502ff | ||
|
|
2f084d7c15 | ||
|
|
5bf6e7d8f9 | ||
|
|
31cb9fbfaf | ||
|
|
c7c48f3bea | ||
|
|
6732d22e6c | ||
|
|
04c6b7fe31 | ||
|
|
2687879dbd | ||
|
|
20a660fa89 | ||
|
|
ba9781e1a8 | ||
|
|
f65ac74914 | ||
|
|
6c33d9aeed | ||
|
|
68e86ad40d | ||
|
|
0aa4aa49a7 | ||
|
|
0ff3846e49 | ||
|
|
bfb81299c3 | ||
|
|
0362a8e73c | ||
|
|
f00f5cbed1 | ||
|
|
c4e8cabae9 | ||
|
|
1729d05e8c | ||
|
|
770fb46ca7 | ||
|
|
a3c4e54bc0 | ||
|
|
b8a77fbada | ||
|
|
9182ebfc19 | ||
|
|
25c0cf5848 | ||
|
|
a160dc0a4d | ||
|
|
28f1ca9c17 | ||
|
|
6399a0f046 | ||
|
|
639413608b | ||
|
|
c14e4c7d22 | ||
|
|
c74ac64237 | ||
|
|
4b3289ed99 | ||
|
|
0c432b39dc | ||
|
|
c4b9276713 | ||
|
|
df300c0663 | ||
|
|
518114cbbd | ||
|
|
999f0e4d58 | ||
|
|
c2663529c1 | ||
|
|
9df74a02b6 | ||
|
|
71c9964e19 | ||
|
|
ae2e47f6a9 | ||
|
|
1524d35f66 | ||
|
|
845be966a0 | ||
|
|
80818d79eb | ||
|
|
cb9b3c00dd | ||
|
|
b3997fb5df | ||
|
|
09dde6b78a | ||
|
|
3345d3ab35 | ||
|
|
366be7bbdd | ||
|
|
7008ea66f8 | ||
|
|
70f881e989 | ||
|
|
94d2355089 | ||
|
|
dfbe48b25b | ||
|
|
931cb38b54 | ||
|
|
e5fd34f94e | ||
|
|
c638d7eb48 | ||
|
|
7e96384618 | ||
|
|
829cb99f5b | ||
|
|
1f93c99304 | ||
|
|
dbb7c756cd | ||
|
|
13f381710c | ||
|
|
70897c0e9a | ||
|
|
f51d1c5264 | ||
|
|
70d0937aab | ||
|
|
7d1ab6102f | ||
|
|
77ddd778be | ||
|
|
890ecb693f | ||
|
|
209fe7dcaf | ||
|
|
e0d6f7c7c4 | ||
|
|
5d3fe9599b | ||
|
|
0fe0b6d254 | ||
|
|
b794216eaf | ||
|
|
1fccde38f6 | ||
|
|
41bd436d3e | ||
|
|
c66155ed48 | ||
|
|
627bd410fa | ||
|
|
41a3932c6b | ||
|
|
785b8d7846 | ||
|
|
622c8f9598 | ||
|
|
ef978a6364 | ||
|
|
d95fbe1c6b | ||
|
|
d4ffddc2ab | ||
|
|
3d497cedfc | ||
|
|
e8de29ae79 | ||
|
|
b622946844 | ||
|
|
d013f78cc7 | ||
|
|
2afbafdb3b | ||
|
|
67148114a8 | ||
|
|
7903140ec2 | ||
|
|
cefd296200 | ||
|
|
99d1c15851 | ||
|
|
a3107ab26f | ||
|
|
854cfae75b | ||
|
|
36ab82957d | ||
|
|
de9f54386c | ||
|
|
7f43820765 | ||
|
|
955e907e7f | ||
|
|
4c18022e7d | ||
|
|
509f59e46d | ||
|
|
f14c372f5e | ||
|
|
f028800a96 | ||
|
|
8a1ce7a4f3 | ||
|
|
ea7a139ae0 | ||
|
|
63959eb3da | ||
|
|
a6adbc4e56 | ||
|
|
b418cb67ba | ||
|
|
0ccc360c0a | ||
|
|
1e0dda3c40 | ||
|
|
9197793bc8 | ||
|
|
29f62241bc | ||
|
|
8de1e91dec | ||
|
|
de822a22d4 | ||
|
|
f2cef456bd | ||
|
|
5d681d0fd6 | ||
|
|
2ed24ebd75 | ||
|
|
6e6824ecb0 | ||
|
|
0504a4f659 | ||
|
|
9a261755d2 | ||
|
|
8533663b26 | ||
|
|
0a4015b8a2 | ||
|
|
dcfe56322e | ||
|
|
d00a693026 | ||
|
|
fb36ecad70 | ||
|
|
26c39768ca | ||
|
|
df8abcfce8 | ||
|
|
e3aab0e9e3 | ||
|
|
e3dfc49ed0 | ||
|
|
8485284f63 | ||
|
|
e549e19c03 | ||
|
|
2ace47cbb9 | ||
|
|
dc184e7bc9 | ||
|
|
aef1bd094b | ||
|
|
4f8b22f53b | ||
|
|
0f3cbafe91 | ||
|
|
16ad232c40 | ||
|
|
4d235a2be5 | ||
|
|
aadf6fa9b1 | ||
|
|
a72e9bc8b2 | ||
|
|
f11ef93a81 | ||
|
|
9136556218 | ||
|
|
3ead008295 | ||
|
|
9ff5693442 | ||
|
|
ac84b42394 | ||
|
|
a79361c71f | ||
|
|
85e17d5dc7 | ||
|
|
45493fd093 | ||
|
|
6f987a2391 | ||
|
|
ddf785a393 | ||
|
|
b8e20fe717 | ||
|
|
82555bf9b6 | ||
|
|
ffe6f6c168 | ||
|
|
6b11f5bb7d | ||
|
|
1a65d14864 | ||
|
|
6c1f1ffdb1 | ||
|
|
61cdbd5dd2 | ||
|
|
e7e321e2b3 | ||
|
|
fb5f6fdc10 | ||
|
|
00290fbf75 | ||
|
|
ff02dc723b | ||
|
|
67521c0d2a | ||
|
|
da8765150b | ||
|
|
ea7f51bc12 | ||
|
|
1b34b3b7e2 | ||
|
|
bca4ceb7ae | ||
|
|
5648cd53d0 | ||
|
|
8dab37539f | ||
|
|
2dd42c0061 | ||
|
|
dfafed504a | ||
|
|
9fcd2bcb0a | ||
|
|
4c701b91a6 | ||
|
|
84f7aa6d09 | ||
|
|
82f0c64dee | ||
|
|
4b7c6b124b | ||
|
|
e043b678d4 | ||
|
|
fef4f7fce8 | ||
|
|
9732b3521a | ||
|
|
a59fcc4aec | ||
|
|
979e1e78fb | ||
|
|
c1a929022f | ||
|
|
611bb81032 | ||
|
|
5047020e6d | ||
|
|
fb74a6a689 | ||
|
|
a14a216c8d | ||
|
|
549e212a59 | ||
|
|
1bdc91ad47 | ||
|
|
67f288479c | ||
|
|
496e45c2bb | ||
|
|
e458bd3cc7 | ||
|
|
031911c463 | ||
|
|
4aa7f638f9 | ||
|
|
f6f4ea69ae | ||
|
|
ef945597f2 | ||
|
|
3ab4e1d368 | ||
|
|
c6216f5b5f | ||
|
|
4f24d58a79 | ||
|
|
73d6e7ba66 | ||
|
|
949707e18e | ||
|
|
f51b299c17 | ||
|
|
d2e0faa533 | ||
|
|
22015044a5 | ||
|
|
61f86dcb2b | ||
|
|
8f3bce6b11 | ||
|
|
ee736e73a9 | ||
|
|
99f867897e | ||
|
|
c66c5b6e75 | ||
|
|
f25ecc19b9 | ||
|
|
48e09970f3 | ||
|
|
f05cb79604 | ||
|
|
46d3293edd | ||
|
|
9703d613cf | ||
|
|
704e217dbb | ||
|
|
a103032d94 | ||
|
|
c7207a4bd7 | ||
|
|
35c65fe589 | ||
|
|
6d5bd0c484 | ||
|
|
cfbb6e8092 | ||
|
|
feef4a933e | ||
|
|
468bc67569 | ||
|
|
0d517fa52f | ||
|
|
d9054367c1 | ||
|
|
1213373027 | ||
|
|
100a525507 | ||
|
|
1bec4e2d12 | ||
|
|
03cd1d27bf | ||
|
|
9427a756c9 | ||
|
|
d32b2a8ce5 | ||
|
|
15473b4368 | ||
|
|
54de0dc4a7 | ||
|
|
0162eaf826 | ||
|
|
572cfafbe1 | ||
|
|
4d6335ce9a | ||
|
|
1c9c4af9f1 | ||
|
|
a6844ebc9d | ||
|
|
072492c29b | ||
|
|
99da4f9839 | ||
|
|
88664486af | ||
|
|
80daf7c749 | ||
|
|
92ba64c35c | ||
|
|
a8ee51ffd6 | ||
|
|
5538afc61d | ||
|
|
beb2f7e558 | ||
|
|
6243184c95 | ||
|
|
1b3baef966 | ||
|
|
98f38ee29b | ||
|
|
09b82bfea4 | ||
|
|
937f686264 | ||
|
|
9bc9cbac21 | ||
|
|
6024550158 | ||
|
|
4ae5f82171 | ||
|
|
6d2c9dcee9 | ||
|
|
0f1b0e1870 | ||
|
|
81c682cdc8 | ||
|
|
ab9fa67d9f | ||
|
|
9537fce335 | ||
|
|
9d97e7e348 | ||
|
|
ebe7939412 | ||
|
|
807e3e8ca7 | ||
|
|
a59faf9117 | ||
|
|
d786036155 | ||
|
|
61d6ed5489 | ||
|
|
b38200d48a | ||
|
|
a0c396a842 | ||
|
|
88fbc53e37 | ||
|
|
a2206b2d52 | ||
|
|
a95ff447d7 | ||
|
|
49dbd7f9d2 | ||
|
|
2ad2779096 | ||
|
|
23045369aa | ||
|
|
116faf26e6 | ||
|
|
2582b8d132 | ||
|
|
63f7941073 | ||
|
|
676f026085 | ||
|
|
a13319fd86 | ||
|
|
be8765278c | ||
|
|
c8bb3dc209 | ||
|
|
ea16befb73 | ||
|
|
20b1bb7681 | ||
|
|
bd10eb50eb | ||
|
|
d47c0eb31a | ||
|
|
177e8bb19f | ||
|
|
d156111637 | ||
|
|
8c13d3e50b | ||
|
|
6ff01016f0 | ||
|
|
5d659da012 | ||
|
|
28e7552a1a | ||
|
|
53d264814b | ||
|
|
2d6b20d34b | ||
|
|
99073b56df | ||
|
|
5dce81c0db | ||
|
|
be82d845a4 | ||
|
|
f49ccd0cd3 | ||
|
|
69d83f535d | ||
|
|
c7988fb6f5 | ||
|
|
3961fd08c9 | ||
|
|
e3faf64061 | ||
|
|
ed83993e15 | ||
|
|
0f8847bb74 | ||
|
|
a72cfa7535 | ||
|
|
514b74a19d | ||
|
|
a2c124306f | ||
|
|
273f67e268 | ||
|
|
2870a7e463 | ||
|
|
935b074a7a | ||
|
|
9d9c609bfb | ||
|
|
f6a664f181 | ||
|
|
fce68d1f75 | ||
|
|
88739c2444 | ||
|
|
7e2f10fce3 | ||
|
|
a494c3a5cc | ||
|
|
d6bb702883 | ||
|
|
d15a972c68 | ||
|
|
2ae7d31725 | ||
|
|
2e329b1888 | ||
|
|
522d40328b | ||
|
|
2ecbff45bf | ||
|
|
b6f7282c13 | ||
|
|
65e5cfa68e | ||
|
|
10e59957d1 | ||
|
|
4f74373df3 | ||
|
|
2d414bbf86 | ||
|
|
a199969b81 | ||
|
|
3aef5e6748 | ||
|
|
2b536a7443 | ||
|
|
20fe68de05 | ||
|
|
c7684b59de | ||
|
|
a7237d157a | ||
|
|
35f91fa280 | ||
|
|
299ac32225 | ||
|
|
a038738d72 | ||
|
|
2b0a919fb5 | ||
|
|
946c706913 | ||
|
|
89b5d976ee | ||
|
|
6f679bb6b4 | ||
|
|
db4e7b0e16 | ||
|
|
9ca942490d | ||
|
|
ebcf249c8b | ||
|
|
939c487503 | ||
|
|
981a8b267e | ||
|
|
9531da80a0 | ||
|
|
e1109b168c | ||
|
|
b7c70039aa | ||
|
|
17b6f6cf2a | ||
|
|
dd88483ba4 | ||
|
|
0ff27f65b3 | ||
|
|
b1655740df | ||
|
|
6d562aece1 | ||
|
|
2182c3372b | ||
|
|
d3331bfe82 | ||
|
|
cfc4a2e8b4 | ||
|
|
36c41c8eb3 | ||
|
|
d255157e6e | ||
|
|
c12e07277d | ||
|
|
06b4fb5095 | ||
|
|
8fafdcb428 | ||
|
|
537a606bb6 | ||
|
|
3dc7a4463c | ||
|
|
fd6ff05b60 | ||
|
|
1a159e41b8 | ||
|
|
23533cdd16 | ||
|
|
2f598b8fa1 | ||
|
|
bca349fec1 | ||
|
|
719fac6480 | ||
|
|
1012b2b2c7 | ||
|
|
5149be4b1b | ||
|
|
d12deeb0d8 | ||
|
|
9df81d1939 | ||
|
|
3be0079868 | ||
|
|
9b253ccb3a | ||
|
|
dded76099c | ||
|
|
41a7ec7d3d | ||
|
|
168c773ba0 | ||
|
|
9abed92196 | ||
|
|
4a75e3602a | ||
|
|
1a689f6641 | ||
|
|
08d7ae11d6 | ||
|
|
9535759787 | ||
|
|
f8fc31f14a | ||
|
|
b74bf97761 | ||
|
|
a090b908bd | ||
|
|
3046821026 | ||
|
|
e94c73efe2 | ||
|
|
e85f9f4aa5 | ||
|
|
ad67886f96 | ||
|
|
5df0e102fd | ||
|
|
a04f0e3545 | ||
|
|
dff9c7ac48 | ||
|
|
3a80b59986 | ||
|
|
07560a4fdd | ||
|
|
7edca21c05 | ||
|
|
34105abd9d | ||
|
|
1bbca48a0b | ||
|
|
21f6a86772 | ||
|
|
6559197c55 | ||
|
|
05f9ad11bb | ||
|
|
f06d586680 | ||
|
|
4f45e8125c | ||
|
|
cc2843503d | ||
|
|
324a974dec | ||
|
|
4d4ffd70ac | ||
|
|
bf98a11b65 | ||
|
|
1117ce4b54 | ||
|
|
57e93b9b4e | ||
|
|
9e4b061ed0 | ||
|
|
1067bef7d6 | ||
|
|
8bff529acd | ||
|
|
4b08677839 | ||
|
|
70997cb551 | ||
|
|
bf0ef17e23 | ||
|
|
7dae5107f8 | ||
|
|
2dea88a147 | ||
|
|
f44c2a3e4f | ||
|
|
1fad3cbaae | ||
|
|
40d2e3e97c | ||
|
|
2efabe612e | ||
|
|
3107cbd6b9 | ||
|
|
3a061ed1c3 | ||
|
|
d4f0e6461a | ||
|
|
3285687652 | ||
|
|
51c53f64d0 | ||
|
|
1d582f5ad2 | ||
|
|
8a62748e39 | ||
|
|
b9290a021b | ||
|
|
129ce93868 | ||
|
|
5f41e5d6d0 | ||
|
|
c706d030ea | ||
|
|
34716a34f8 | ||
|
|
6db3d6dfb6 | ||
|
|
38e2853dcf | ||
|
|
ba5a540ca3 | ||
|
|
fb1e05c2e9 | ||
|
|
aba84612a7 | ||
|
|
9bebbf4e03 | ||
|
|
e41b3f9c10 | ||
|
|
890dc05022 | ||
|
|
375f86ec82 | ||
|
|
db248a69c8 | ||
|
|
5951288159 | ||
|
|
17b92c9db2 | ||
|
|
962d1060d9 | ||
|
|
cb2640d961 | ||
|
|
29aeb0f082 | ||
|
|
990347f856 | ||
|
|
7a406c1f13 | ||
|
|
9432af2ab5 | ||
|
|
136b13e7ca | ||
|
|
ba1c823fb1 | ||
|
|
f1301a4780 | ||
|
|
7957cd4963 | ||
|
|
ee6590d03f | ||
|
|
f2a1238b20 | ||
|
|
e9ce84f368 | ||
|
|
52e84decb4 | ||
|
|
e893002bb6 | ||
|
|
3792103e80 | ||
|
|
7a861c9481 | ||
|
|
942b565224 | ||
|
|
88390d7a9a | ||
|
|
966fc4c5d7 | ||
|
|
84dbdf1196 | ||
|
|
211e7f90d9 | ||
|
|
e54b8e3fb2 | ||
|
|
836c89ed33 | ||
|
|
c7c73afea1 | ||
|
|
7b9ca63b1e | ||
|
|
c464183329 | ||
|
|
389f420cad | ||
|
|
6b2888383c | ||
|
|
3c38a867b4 | ||
|
|
7f5a69f4d8 | ||
|
|
bb9ab31d5e | ||
|
|
9def80af8a | ||
|
|
9256bcdbe4 | ||
|
|
9b775022bc | ||
|
|
32371ed2bd | ||
|
|
8b98c08a81 | ||
|
|
7cf72f7447 | ||
|
|
913385b10d | ||
|
|
7306468d08 | ||
|
|
11e5667778 | ||
|
|
38cc02e261 | ||
|
|
d52cf46cc1 | ||
|
|
c6110dd996 | ||
|
|
51d8de2c38 | ||
|
|
4455a1aa9d | ||
|
|
040d395ddb | ||
|
|
8296cac636 | ||
|
|
3eafe8b87d | ||
|
|
c01512e261 | ||
|
|
e5cf3aecd5 | ||
|
|
a8f90b41b7 | ||
|
|
b79169b975 | ||
|
|
437d52e2ed | ||
|
|
1329721440 | ||
|
|
6affb4fe97 | ||
|
|
15395686aa | ||
|
|
047bcc78ad | ||
|
|
9df68618f2 | ||
|
|
732db087ab | ||
|
|
0e95b33b6a | ||
|
|
816ae7eb7e | ||
|
|
5a5ff194fa | ||
|
|
a60edf9cff | ||
|
|
1c2dbb914e | ||
|
|
9c170c426b | ||
|
|
c6239c8ad9 | ||
|
|
159b361bac | ||
|
|
160f64c18e | ||
|
|
e5916b3789 | ||
|
|
70982b33c5 | ||
|
|
b4d614ad45 | ||
|
|
6d2ef41b37 | ||
|
|
e102237aab | ||
|
|
665af87031 | ||
|
|
6f4e439697 | ||
|
|
742dcf35c9 | ||
|
|
9cd70c568c | ||
|
|
facabf274f | ||
|
|
e3ab51022f | ||
|
|
d278367cf9 | ||
|
|
a70ced8e90 | ||
|
|
567cedc7cc | ||
|
|
9b3af6efcd | ||
|
|
d9edc1eb1d | ||
|
|
65e46b5cec | ||
|
|
e00b5f11cb | ||
|
|
6b53d5f269 | ||
|
|
59c80ab140 | ||
|
|
da323aad36 | ||
|
|
7c1611c939 | ||
|
|
ab861beabe | ||
|
|
d260e93161 | ||
|
|
65a1855606 | ||
|
|
c0e08e44a4 | ||
|
|
5c1cebcef4 | ||
|
|
af25d3a85e | ||
|
|
8cb7183107 | ||
|
|
1bf228d73e | ||
|
|
d952b996e6 | ||
|
|
1e407c4059 | ||
|
|
b56d1fa60e | ||
|
|
6340f95bfc | ||
|
|
3c08dacf6c | ||
|
|
2908124ad8 | ||
|
|
3d62faaaf2 | ||
|
|
b1efa9700d | ||
|
|
1d08af5747 | ||
|
|
2f82d0db87 | ||
|
|
d88159907d | ||
|
|
9ed9fbef65 | ||
|
|
86c2e5bb91 | ||
|
|
d9b548de1a | ||
|
|
2271c6cbd8 | ||
|
|
c4d4293c46 | ||
|
|
39bdfb6e0d | ||
|
|
1003fd393e | ||
|
|
2ede3c0864 | ||
|
|
674764a035 | ||
|
|
a780e7b936 | ||
|
|
03d0ce1f89 | ||
|
|
4182a0cf4c | ||
|
|
305915611e | ||
|
|
b0cd59bed9 | ||
|
|
599dcbaa48 | ||
|
|
2806dc98bd | ||
|
|
bdc52dc114 | ||
|
|
3f6b9e554c | ||
|
|
f47ad7bf31 | ||
|
|
f992f72d31 | ||
|
|
a26f1db2cb | ||
|
|
361ab00c61 | ||
|
|
f5cbcf3452 | ||
|
|
599386190a | ||
|
|
ec541d3cd0 | ||
|
|
3199819ded | ||
|
|
ccf04d63ec | ||
|
|
b9f5fca333 | ||
|
|
b6a330928d | ||
|
|
1c65cb3e36 | ||
|
|
dbb8c99efb | ||
|
|
0adcb646fe | ||
|
|
a1ef70c0bf | ||
|
|
75cd580c3a | ||
|
|
e05acb8d18 | ||
|
|
10af684804 | ||
|
|
3e897727ca | ||
|
|
d0570d7fe3 | ||
|
|
5cf1956135 | ||
|
|
0b98a2364b | ||
|
|
fff307d4bb | ||
|
|
2b7782ba03 | ||
|
|
96d961ee80 | ||
|
|
9f064d76d9 | ||
|
|
2e39106c4b | ||
|
|
1305006391 | ||
|
|
04650464f3 | ||
|
|
3bc7e1e35c | ||
|
|
7019ddbfc7 | ||
|
|
106d990bd2 | ||
|
|
b29eb29556 | ||
|
|
aeac1854ed | ||
|
|
dbc57dd0d3 | ||
|
|
328a87609e | ||
|
|
5d848f3900 | ||
|
|
cf4ed45fe4 | ||
|
|
07293094d5 | ||
|
|
0917696c86 | ||
|
|
030a027366 | ||
|
|
372c488585 | ||
|
|
738b8ff1ee | ||
|
|
1561fc5994 | ||
|
|
c84f18545e | ||
|
|
48e4dc75f4 | ||
|
|
63a8d556e5 | ||
|
|
e5591618ee | ||
|
|
4794748c73 | ||
|
|
02e7e3b971 | ||
|
|
d2aca3c28b | ||
|
|
11b84a04b3 | ||
|
|
f243ce66e7 | ||
|
|
baf9b65801 | ||
|
|
55419d2524 | ||
|
|
401d0b1298 | ||
|
|
fce7dc0f4e | ||
|
|
35489ef5b7 | ||
|
|
546d494587 | ||
|
|
e8afa2c940 | ||
|
|
c1ef1bf605 | ||
|
|
4ab0dbe7e3 | ||
|
|
44f86a94f4 | ||
|
|
a0278154a3 | ||
|
|
8b7e6b200e | ||
|
|
d6f6c26725 | ||
|
|
cf66343b31 | ||
|
|
d53689332f | ||
|
|
4105237027 | ||
|
|
436962e4b8 | ||
|
|
a85efa1392 | ||
|
|
f0115a5e21 | ||
|
|
80105239dc | ||
|
|
baad11288a | ||
|
|
7e50646ede | ||
|
|
d4b8e47bcb | ||
|
|
0eefd2922c | ||
|
|
30c0f98691 | ||
|
|
06a7c2e138 | ||
|
|
3537b3de8e | ||
|
|
ed6450244d | ||
|
|
e813880392 | ||
|
|
9a57efa6d9 | ||
|
|
03ee5eba3b | ||
|
|
295ea79231 | ||
|
|
a5486176c1 | ||
|
|
de58325fd0 | ||
|
|
1e7932d9c7 | ||
|
|
8ba76df409 | ||
|
|
a8f9d20229 | ||
|
|
5e6d1b9ae8 | ||
|
|
c5afbaef35 | ||
|
|
3b5a36a09f | ||
|
|
fcb20d05d7 | ||
|
|
9e6990c44b | ||
|
|
8f3fd9b0dc | ||
|
|
5b1b4a02d8 | ||
|
|
31de530497 | ||
|
|
16b6b1f2b3 | ||
|
|
dba83aa50d | ||
|
|
bade054a6a | ||
|
|
34d3485dc9 | ||
|
|
a84d066daa | ||
|
|
3360cf27cd | ||
|
|
c1a13af611 | ||
|
|
47274a658b | ||
|
|
b194334031 | ||
|
|
4136c4a807 | ||
|
|
f1c212fe75 | ||
|
|
d08cbff4b7 | ||
|
|
0b774475fa | ||
|
|
c4f6195df3 | ||
|
|
192cdbe322 | ||
|
|
a2a25eb5f8 | ||
|
|
274cf1af1c | ||
|
|
7d11c8b767 | ||
|
|
abef6bafe3 | ||
|
|
da237a5e2d | ||
|
|
7e50e03cfb | ||
|
|
89d5df20a5 | ||
|
|
c09a2a37fe | ||
|
|
b5745877ca | ||
|
|
c0ac15cad7 | ||
|
|
90ce09be2e | ||
|
|
fd39afb374 | ||
|
|
6e04549a9b | ||
|
|
80e56fddd9 | ||
|
|
4daf9e1180 | ||
|
|
f72abc0e47 | ||
|
|
9c177f3df2 | ||
|
|
a279b32c93 | ||
|
|
51465ba026 | ||
|
|
6a7bdcc533 | ||
|
|
fddb3a5f10 | ||
|
|
643c7abc12 | ||
|
|
5715afd44c | ||
|
|
d65c1c420e | ||
|
|
38139ee6c9 | ||
|
|
6b96bd0185 | ||
|
|
f2b9863eea | ||
|
|
f56adce51f | ||
|
|
35598c8064 | ||
|
|
a5e716eb5d | ||
|
|
e8073b7484 | ||
|
|
d6a5fc20bb | ||
|
|
e763d43085 | ||
|
|
a6904d5249 | ||
|
|
7bcb91d3ca | ||
|
|
fb0c1efa41 | ||
|
|
03d243d444 | ||
|
|
b91585d1fe | ||
|
|
d1fa318cda | ||
|
|
42decae424 | ||
|
|
78bc7c20ed | ||
|
|
e6616bdf57 | ||
|
|
35362ed3c7 | ||
|
|
cd0b9a8e3f | ||
|
|
110aadd65c | ||
|
|
cefe1f34be | ||
|
|
d469e2152c | ||
|
|
35c2d47518 | ||
|
|
c00634a2cf | ||
|
|
d1835e262d | ||
|
|
d0f304f0ce | ||
|
|
154abe06a7 | ||
|
|
ac41cd378c | ||
|
|
d59afda2c9 | ||
|
|
4d213833e2 | ||
|
|
e9214d4330 | ||
|
|
6b41bb95b2 | ||
|
|
36de13d543 | ||
|
|
3893def9f4 | ||
|
|
ff76c815b1 | ||
|
|
1b9b8912ae | ||
|
|
b91b0d17c3 | ||
|
|
579b61a806 | ||
|
|
1e2b484929 | ||
|
|
ab7d4fa2a2 | ||
|
|
f30c8b8a47 | ||
|
|
25dd19dd8c | ||
|
|
fdaebc6315 | ||
|
|
f1a05c214e | ||
|
|
9ad32ffee9 | ||
|
|
70f83ab019 | ||
|
|
07e64631f2 | ||
|
|
498416e2e3 | ||
|
|
87c4f908fe | ||
|
|
27e6eaacde | ||
|
|
ada47920ca | ||
|
|
f2606d62ff | ||
|
|
35032152b3 | ||
|
|
90b545fd69 | ||
|
|
4f7776d1f9 | ||
|
|
03bd0c4c9e | ||
|
|
b8b4991a46 | ||
|
|
8b68c5da37 | ||
|
|
f26e641905 | ||
|
|
57669c9c03 | ||
|
|
094d873f2e | ||
|
|
7b42653271 | ||
|
|
6a82e94c54 | ||
|
|
1fa4d0d3f8 | ||
|
|
d5818214f3 | ||
|
|
0c63ec8157 | ||
|
|
8317a219a5 | ||
|
|
ec652dd0ac | ||
|
|
8e3dd75c85 | ||
|
|
3f4de3b1cc | ||
|
|
e0d3fd17ce | ||
|
|
671c7cf06b | ||
|
|
99a2c5b3fa | ||
|
|
0343de95b8 | ||
|
|
13f258308e | ||
|
|
c627288bde | ||
|
|
1eef90f6cb | ||
|
|
29476ea3da | ||
|
|
7609741680 | ||
|
|
5df85b5feb | ||
|
|
b4a4d784c3 | ||
|
|
d715af0620 | ||
|
|
fe8c384618 | ||
|
|
47d4de75da | ||
|
|
016c7fd2c4 | ||
|
|
7ca5e33a3a | ||
|
|
436773837b | ||
|
|
fccfe19e13 | ||
|
|
18be0d36f3 | ||
|
|
9ea7de3564 | ||
|
|
d1dce76e28 | ||
|
|
f4bf824e79 | ||
|
|
cbf5d4b71d | ||
|
|
61e5cb2041 | ||
|
|
38a6aa26bc | ||
|
|
32942709bf | ||
|
|
a0305c4c04 | ||
|
|
74be1c81b1 | ||
|
|
e82a44c03d | ||
|
|
1e9eeeb980 | ||
|
|
0c7111b438 | ||
|
|
ef74653a4b | ||
|
|
b032f78769 | ||
|
|
7a0a8b5d2b | ||
|
|
459b374d61 | ||
|
|
cc6af402be | ||
|
|
f3eeadcd8f | ||
|
|
5b0b83faa7 | ||
|
|
5f289e4767 | ||
|
|
a36d73cb52 | ||
|
|
9e319006f3 | ||
|
|
7b8a2aef0f | ||
|
|
4fe2f29478 | ||
|
|
76a25917c0 | ||
|
|
df6c9b1a1c | ||
|
|
0ef64a6d0b | ||
|
|
1eb6ad58d5 | ||
|
|
49f8cfb0db | ||
|
|
15a8b4c6e5 | ||
|
|
97d68d7b31 | ||
|
|
4dde54e344 | ||
|
|
3304cc106e | ||
|
|
dabda21eb7 | ||
|
|
0a64f638c6 | ||
|
|
3cbdfcb43d | ||
|
|
5734221c8f | ||
|
|
b6e33e93de | ||
|
|
77b441f14c | ||
|
|
297019c22c | ||
|
|
f5f2215b47 | ||
|
|
904114740b | ||
|
|
d2d3f7810e | ||
|
|
2b07b3a873 | ||
|
|
d17280b341 | ||
|
|
f523d3f3bc | ||
|
|
f6e4a1770e | ||
|
|
31006507c0 | ||
|
|
9ca6a6bf06 | ||
|
|
afdacf14b7 | ||
|
|
5da18ba535 | ||
|
|
e6cc937ac2 | ||
|
|
87091a2e03 | ||
|
|
d23bc1e02a | ||
|
|
86fcd9208e | ||
|
|
f2b97a889c | ||
|
|
97f91102fe | ||
|
|
07b04578c8 | ||
|
|
31f3c1996b | ||
|
|
f4116e7300 | ||
|
|
5e5239c16e | ||
|
|
3adfcd1d13 | ||
|
|
3eb43a5413 | ||
|
|
80f41e2ac1 | ||
|
|
9e0b0b4210 | ||
|
|
f3380d3184 | ||
|
|
54bc91ea2b | ||
|
|
59d67d3140 | ||
|
|
7b4c307c46 | ||
|
|
92484be87f | ||
|
|
56b8f8b07d | ||
|
|
722de35037 | ||
|
|
d93f76c1af | ||
|
|
cba0dd5e17 | ||
|
|
7bb25917f8 | ||
|
|
a2e2d5ba77 | ||
|
|
61e05cb50e | ||
|
|
49e82adc6c | ||
|
|
e4e668b327 | ||
|
|
8028c85c67 | ||
|
|
28cb9cae51 | ||
|
|
7f2eb64131 | ||
|
|
c5ff6df7e6 | ||
|
|
e2b2982f95 | ||
|
|
a6e307010f | ||
|
|
c636e35467 | ||
|
|
3d26bd0532 | ||
|
|
16130e46dd | ||
|
|
9f703085ba | ||
|
|
0af09f13cf | ||
|
|
cd8619113a | ||
|
|
4bf6d9f80b | ||
|
|
a559b2c20c | ||
|
|
72411abfcd | ||
|
|
491c3f1dc0 | ||
|
|
d2ffc4df6c | ||
|
|
3e5330a92b | ||
|
|
93e5e4afc0 | ||
|
|
aa5528d11e | ||
|
|
251629ab61 | ||
|
|
82d94b5963 | ||
|
|
8240901332 | ||
|
|
0a870b8e7e | ||
|
|
88dd653fa5 | ||
|
|
b712b70330 | ||
|
|
a018c2f09f | ||
|
|
04c16e53a5 | ||
|
|
5e89e73f76 | ||
|
|
2c9432d7a9 | ||
|
|
19d1775b36 | ||
|
|
ecc235c545 | ||
|
|
382b1d2250 | ||
|
|
629693355a | ||
|
|
00a3f8d392 | ||
|
|
80b6e8090e | ||
|
|
a5f817d896 | ||
|
|
51b0244cf2 | ||
|
|
01131e2606 | ||
|
|
6283b7668e | ||
|
|
d058ecc4ea | ||
|
|
77a0450b5d | ||
|
|
1dd1b9084f | ||
|
|
6341807d02 | ||
|
|
51a1f30225 | ||
|
|
5422482696 | ||
|
|
cd7f8b080e | ||
|
|
faf29b768f | ||
|
|
7576569dc9 | ||
|
|
ea3bcbbc37 | ||
|
|
d9f0e158a3 | ||
|
|
195f676500 | ||
|
|
a9a2f4820b | ||
|
|
8414db57f0 | ||
|
|
609d68933e | ||
|
|
a23b8cebbc | ||
|
|
89f6b03cd6 | ||
|
|
7bc9de03a6 | ||
|
|
3c865d6054 | ||
|
|
fd770b008e | ||
|
|
b0d60ef2c2 | ||
|
|
7b9cea06ef | ||
|
|
30608d3e22 | ||
|
|
8bf4e55338 | ||
|
|
6ead1de383 | ||
|
|
3b628ec3c4 | ||
|
|
0ed704d173 | ||
|
|
87b6ef0ec5 | ||
|
|
5184a07cf2 | ||
|
|
dba04cc59c | ||
|
|
f4045fb5b3 | ||
|
|
16c36163b4 | ||
|
|
1ac033ff18 | ||
|
|
ccfd48232a | ||
|
|
429bf179dc | ||
|
|
8ba3fb13eb | ||
|
|
11496d887e | ||
|
|
bec48319ec | ||
|
|
71a93b2b43 | ||
|
|
6ed3f9e414 | ||
|
|
dc8f592c1f | ||
|
|
f66c31c771 | ||
|
|
55e2ae1408 | ||
|
|
19c72627fc | ||
|
|
2a4c53c3a4 | ||
|
|
1f2ebce8ed | ||
|
|
fcea9dacb7 | ||
|
|
908872f374 | ||
|
|
f688ceafb8 | ||
|
|
b47b5d6d8b | ||
|
|
31ce3aa312 | ||
|
|
5b22d92e99 | ||
|
|
df148e25da | ||
|
|
4b26df5c3a | ||
|
|
e765be4205 | ||
|
|
f7d2457063 | ||
|
|
6032d803aa | ||
|
|
0de371db38 | ||
|
|
ce3797c4af | ||
|
|
56dd8c298b | ||
|
|
3533257efe | ||
|
|
dc2f08721d | ||
|
|
66608a4131 | ||
|
|
2fa90131eb | ||
|
|
a51ed28db6 | ||
|
|
5ec290663b | ||
|
|
1374d6e34d | ||
|
|
45ade17c58 | ||
|
|
c753e26187 | ||
|
|
577929eed1 | ||
|
|
1fde8a8fb0 | ||
|
|
77e53cbf9e | ||
|
|
ab83e08bc7 | ||
|
|
2fad6e6d5f | ||
|
|
a3604a6c95 | ||
|
|
44f6fe6f1f | ||
|
|
311b4e90ca | ||
|
|
f5a937c523 | ||
|
|
0632a3ed3f | ||
|
|
71bada97df | ||
|
|
62509edcbe | ||
|
|
f97cdfaa20 | ||
|
|
67ec10e86d | ||
|
|
481b3f2c58 | ||
|
|
7d599a68ea | ||
|
|
7ccff732b8 | ||
|
|
7587c896d5 | ||
|
|
91297f1ab3 | ||
|
|
d872a16fe0 | ||
|
|
60aa35adf8 | ||
|
|
5035b66773 | ||
|
|
fa9da8ecab | ||
|
|
1f9bca7188 | ||
|
|
ffa5bdeb50 | ||
|
|
e6bfb7398e | ||
|
|
6def0c776f | ||
|
|
24bae9eaed | ||
|
|
fb5175a283 | ||
|
|
6e49437154 | ||
|
|
2511ed56ac | ||
|
|
c4bfc99cf5 | ||
|
|
4efe38440d | ||
|
|
4a5f2c3c40 | ||
|
|
109738ccb9 | ||
|
|
433dbe179d | ||
|
|
b21b33831a | ||
|
|
020cc471da | ||
|
|
43b47c4494 | ||
|
|
8751d91794 | ||
|
|
374b276f5c | ||
|
|
6138a74231 | ||
|
|
25438c4d64 | ||
|
|
ae6ce19886 | ||
|
|
e17a9bfd6f | ||
|
|
dc2055f5bc | ||
|
|
afeb8058b1 | ||
|
|
9299f99ac3 | ||
|
|
858fc7ebcc | ||
|
|
35089c65d3 | ||
|
|
643ca42829 | ||
|
|
935dc4fe33 | ||
|
|
3a9e74feb1 | ||
|
|
92e66fbf0c | ||
|
|
a50515f569 | ||
|
|
2f8f47acea | ||
|
|
dcb296db93 | ||
|
|
0bdae9ede7 | ||
|
|
11290c2a0f | ||
|
|
428b8f8669 | ||
|
|
7ced10f84e | ||
|
|
8ac54139c9 | ||
|
|
32afe77a26 | ||
|
|
6db8e33662 | ||
|
|
569561f247 | ||
|
|
d132d82acf | ||
|
|
9ba0db9372 | ||
|
|
5d468b542d | ||
|
|
32273165c7 | ||
|
|
46fdb75bf4 | ||
|
|
baf381814b | ||
|
|
e90387c14e | ||
|
|
876790d499 | ||
|
|
8b56edda4b | ||
|
|
33352256d6 | ||
|
|
e368ef11fa | ||
|
|
045f7c3185 | ||
|
|
bf40e5a5c5 | ||
|
|
cda3635d97 | ||
|
|
2eb561f132 | ||
|
|
b5f6465d61 | ||
|
|
9725076c46 | ||
|
|
f7228e79bb | ||
|
|
d3e250288a | ||
|
|
38f8043cb2 | ||
|
|
a61320ca8c | ||
|
|
4bc9bad34f | ||
|
|
4392e64672 | ||
|
|
74a0d60766 | ||
|
|
012a2b6b00 | ||
|
|
584bca7658 | ||
|
|
5dcd96d926 | ||
|
|
bd2be2815c | ||
|
|
2a5635492a | ||
|
|
eeea7527c1 | ||
|
|
d943a9a2f4 | ||
|
|
d4335f0e4d | ||
|
|
054f7cbdaa | ||
|
|
6ff95dab89 | ||
|
|
4461bde5da | ||
|
|
19152c28cb | ||
|
|
dda2967e2d | ||
|
|
a680bcda1f | ||
|
|
8d24fcba6a | ||
|
|
2a96429be8 | ||
|
|
5c6f376f4e | ||
|
|
1b24fad95f | ||
|
|
87743d9ef9 | ||
|
|
8ffd0abb1b | ||
|
|
2fed09ec18 | ||
|
|
6daabb35de | ||
|
|
59e98aa06c | ||
|
|
3601d95733 | ||
|
|
2c57dfd528 | ||
|
|
2348f2586c | ||
|
|
ed11f954aa | ||
|
|
5765a8e38e | ||
|
|
4a925fade1 | ||
|
|
fca86f43c4 | ||
|
|
12005de4c0 | ||
|
|
2e3d0d3435 | ||
|
|
7d76887517 | ||
|
|
bf39ecd1e5 | ||
|
|
7ebee09f74 | ||
|
|
952a49f749 | ||
|
|
8f8c67ad6d | ||
|
|
ce659f9926 | ||
|
|
c23ec555ff | ||
|
|
25b0a93acd | ||
|
|
7b2b7d1456 | ||
|
|
37444939ab | ||
|
|
2fee2e5166 | ||
|
|
98bd6c3cb8 | ||
|
|
fc31e44fd2 | ||
|
|
12f89f0e2e | ||
|
|
cdf15fc43a | ||
|
|
2a12af28dd | ||
|
|
f128fceaba | ||
|
|
26c5d66994 | ||
|
|
bd390d424a | ||
|
|
6b85730361 | ||
|
|
d6176d1901 | ||
|
|
43f336bea4 | ||
|
|
d2ed9e965e | ||
|
|
ea73e9d5de | ||
|
|
36ef862fc6 | ||
|
|
999275ca2c | ||
|
|
78c36ec260 | ||
|
|
c985fed3e4 | ||
|
|
f13fe431b8 | ||
|
|
f1d7cc08bb | ||
|
|
e662dfbcfb | ||
|
|
8aaf667f78 | ||
|
|
fdfea73bdb | ||
|
|
50161bc84d | ||
|
|
8046a4488d | ||
|
|
e818c37a0c | ||
|
|
16ffa0c3c7 | ||
|
|
6a9b839e62 | ||
|
|
b5da01931c | ||
|
|
99b6896cf4 | ||
|
|
0ac05df628 | ||
|
|
83726ddcec | ||
|
|
be627d488c | ||
|
|
e615a3fdf3 | ||
|
|
f670345d45 | ||
|
|
6032ec3823 | ||
|
|
01ed052ae6 | ||
|
|
88a9a7c48f | ||
|
|
d74755f0a4 | ||
|
|
e05871a7f8 | ||
|
|
fed44e2f2b | ||
|
|
2189f450df | ||
|
|
288e8f0f75 | ||
|
|
dfe7eaaa04 | ||
|
|
51b166b419 | ||
|
|
0ac9a85314 | ||
|
|
d153297294 | ||
|
|
ec71658087 | ||
|
|
3f359e67b3 | ||
|
|
3220d69a69 | ||
|
|
385116bf30 | ||
|
|
f3b476a348 | ||
|
|
d0dec99222 | ||
|
|
b3fa50d4d1 | ||
|
|
1dbf245f76 | ||
|
|
7c092bc04c | ||
|
|
b8f1a8a243 | ||
|
|
c2b235b4a3 | ||
|
|
19a9d8d254 | ||
|
|
c79d29bd6c | ||
|
|
14816a1c6d | ||
|
|
0c86f1c1aa | ||
|
|
8f440ae633 | ||
|
|
863a5ba872 | ||
|
|
c87a43bdba | ||
|
|
fa6a7186e0 | ||
|
|
34a5adf951 | ||
|
|
4b3ece439e | ||
|
|
10dc97c43f | ||
|
|
2c59da36c2 | ||
|
|
f457fb6067 | ||
|
|
6843019481 | ||
|
|
17cc5a9b95 | ||
|
|
b51843ed50 | ||
|
|
ecf44a4fc7 | ||
|
|
8be0188140 | ||
|
|
1008e38abc | ||
|
|
b862e53a56 | ||
|
|
94042c2ea9 | ||
|
|
1d76bb42bb | ||
|
|
d71a3b59b4 | ||
|
|
1e0c486f2a | ||
|
|
98ec9e2254 | ||
|
|
f18c6c26a5 | ||
|
|
b6f69b6477 | ||
|
|
901709057e | ||
|
|
30c4718b0d | ||
|
|
24fe68d75f | ||
|
|
d0de0bc815 | ||
|
|
9643b1c44a | ||
|
|
c1d02a4e1b | ||
|
|
be842b5071 | ||
|
|
c2eb80b44c | ||
|
|
9ed2a82d3b | ||
|
|
b28eb54cac | ||
|
|
683d3a70b2 | ||
|
|
84fb010789 | ||
|
|
278c586414 | ||
|
|
e9165bc6e0 | ||
|
|
e3d190072f | ||
|
|
e7004ef9f1 | ||
|
|
8336601ded | ||
|
|
1dfb82b85b | ||
|
|
0ffc30dcbf | ||
|
|
3aa74de53c | ||
|
|
f78f5c7b02 | ||
|
|
0345fe6b30 | ||
|
|
a51ba0d57c | ||
|
|
6a7719ccf3 | ||
|
|
4c18d9edc6 | ||
|
|
c6d0fe3c6e | ||
|
|
03e1d3fbc4 | ||
|
|
700f8c9bb4 | ||
|
|
5a0fd674bb | ||
|
|
44099c551c | ||
|
|
111f44ce09 | ||
|
|
c3c885de47 | ||
|
|
6d536c61e8 | ||
|
|
8a8c079b2f | ||
|
|
b4a30e2a25 | ||
|
|
f19f92c538 | ||
|
|
e1a946ab45 | ||
|
|
aa1817737e | ||
|
|
25ec5a24ab | ||
|
|
68784b3f8e | ||
|
|
2118fadc48 | ||
|
|
f14cde4db9 | ||
|
|
75ce3f2eb8 | ||
|
|
ca2230f690 | ||
|
|
aa1dbe2710 | ||
|
|
deddeb570e | ||
|
|
0ed197d4d9 | ||
|
|
046976dffc | ||
|
|
bb8139196e | ||
|
|
1fea2cdcbe | ||
|
|
fe3dd25bc3 | ||
|
|
5b09209ef9 | ||
|
|
62db650e3c | ||
|
|
b847886254 | ||
|
|
c6e69ffae4 | ||
|
|
b24f368d3f | ||
|
|
4dc8351f56 | ||
|
|
f3ab8199a5 | ||
|
|
28d953933a | ||
|
|
77d9ae92f6 | ||
|
|
7d00754587 | ||
|
|
982b5eb698 | ||
|
|
20a9c25d70 | ||
|
|
eebed9944c | ||
|
|
507a192489 | ||
|
|
689dc3b9d5 | ||
|
|
d765803b83 | ||
|
|
0fabb6a057 | ||
|
|
23efaae85e | ||
|
|
5b2f15726f | ||
|
|
bc3a5f3512 | ||
|
|
ba05f236bd | ||
|
|
6ac92ac4b8 | ||
|
|
d9a1cd082c | ||
|
|
a32071541a | ||
|
|
eb4f625bbd | ||
|
|
e36d45507a | ||
|
|
e32884f07f | ||
|
|
1344ffa67d | ||
|
|
e07210524f | ||
|
|
6f3996c061 | ||
|
|
fd06fd4dc1 | ||
|
|
d86d5feae3 | ||
|
|
0e20a8f07b | ||
|
|
a40d784e3a | ||
|
|
e145131b95 | ||
|
|
92873b8bb5 | ||
|
|
d359b71c81 | ||
|
|
f1a0bf4257 | ||
|
|
ea4e2da58d | ||
|
|
1301b3b49e | ||
|
|
424625846e | ||
|
|
0790dd7a2c | ||
|
|
b238d7b934 | ||
|
|
011e4fded2 | ||
|
|
2fe872a9c9 | ||
|
|
02c1515a0f | ||
|
|
408118a1e8 | ||
|
|
6a45bb21c3 | ||
|
|
5d4e9aa949 | ||
|
|
c87b98c2af | ||
|
|
5a13c38a6d | ||
|
|
67f60ab307 | ||
|
|
08c278578d | ||
|
|
5e9d2d079d | ||
|
|
0e01fb5fc3 | ||
|
|
d44dc7e00d | ||
|
|
82ee3a538b | ||
|
|
fdc16253d1 | ||
|
|
7e83cd2d74 | ||
|
|
083eb75eff | ||
|
|
f50afa768f | ||
|
|
1a80fe91ce | ||
|
|
4de1a5ef6c | ||
|
|
d0d389299b | ||
|
|
dc70804350 | ||
|
|
78d691571b | ||
|
|
b7cbf4a42a | ||
|
|
87ca7c50b4 | ||
|
|
6c7550b3f3 | ||
|
|
4239ffa13f | ||
|
|
c6cfb0df76 | ||
|
|
380cf0de69 | ||
|
|
11f25ea2e7 | ||
|
|
ef62497777 | ||
|
|
2824d8a5b6 | ||
|
|
1c84c0828e | ||
|
|
39e4494836 | ||
|
|
dc174ca759 | ||
|
|
b61cfd0407 | ||
|
|
53405e54a8 | ||
|
|
c7ef7531a9 | ||
|
|
626b4bf314 | ||
|
|
323d0e0154 | ||
|
|
6d1338317b | ||
|
|
1ce26d8aec | ||
|
|
7ba3d3ec98 | ||
|
|
24f58b3ecb | ||
|
|
d1d8587096 | ||
|
|
96db630f5e | ||
|
|
91fae0ae8b | ||
|
|
bfa1235b48 | ||
|
|
95d324a413 | ||
|
|
ef3535319b | ||
|
|
e9c04f4fa0 | ||
|
|
e7180d529a | ||
|
|
b8cd872738 | ||
|
|
efaaa76185 | ||
|
|
19e1f996a6 | ||
|
|
40a69bf200 | ||
|
|
9e3abb9989 | ||
|
|
5ba48e06f7 | ||
|
|
8b3a0a524b | ||
|
|
d9fe9cc5df | ||
|
|
b202c7906a | ||
|
|
b9c868cac6 | ||
|
|
33adf3c88d | ||
|
|
8b84f40975 | ||
|
|
fa131d2023 | ||
|
|
a83b38b50a | ||
|
|
dcd7b286ef | ||
|
|
b85bf769cd | ||
|
|
630a20d61e | ||
|
|
88c3794cf1 | ||
|
|
42eb457ad0 | ||
|
|
d153a8de20 | ||
|
|
7f7551f44c | ||
|
|
23082b55a4 | ||
|
|
dac7387a7f | ||
|
|
8c6856d894 | ||
|
|
2c0e514fb2 | ||
|
|
1917b0339e | ||
|
|
c05419f223 | ||
|
|
e0deaec695 | ||
|
|
d70e2a788e | ||
|
|
7343e6e2e8 | ||
|
|
106d4cc0d6 | ||
|
|
c98879cb7a | ||
|
|
9ca755c313 | ||
|
|
25e0b98840 | ||
|
|
5599c43c71 | ||
|
|
eb7597d7e4 | ||
|
|
d5767e92c4 | ||
|
|
ba3749d373 | ||
|
|
d8088acdf2 | ||
|
|
ad93e0aa3d | ||
|
|
691e58f03d | ||
|
|
95d5bccfca | ||
|
|
2aa8e0a4bf | ||
|
|
6e96d6677d | ||
|
|
8816c20f51 | ||
|
|
e955fe1ffd | ||
|
|
5cbcac713a | ||
|
|
2b50364ab4 | ||
|
|
fa04ac789e | ||
|
|
95ce8dce3d | ||
|
|
0b5eec4ca8 | ||
|
|
6d9716f90e | ||
|
|
aa31061d90 | ||
|
|
acc7797dff | ||
|
|
7959196dc7 | ||
|
|
c6ff6939a5 | ||
|
|
769960f29e | ||
|
|
d92e9759f3 | ||
|
|
bf7e19b288 | ||
|
|
98954cd6d4 | ||
|
|
538bb978ed | ||
|
|
10232c5866 | ||
|
|
5cd6a0db16 | ||
|
|
ff0a05a2d6 | ||
|
|
e34b264af2 | ||
|
|
00d79487cd | ||
|
|
3cace734c7 | ||
|
|
f428372869 | ||
|
|
5dd2feba9b | ||
|
|
a1b026239e | ||
|
|
40735ce76b | ||
|
|
4a00c13b33 | ||
|
|
8e359d54bd | ||
|
|
fb76dff836 | ||
|
|
2448bf4e4e | ||
|
|
91e0fc8c62 | ||
|
|
b4f86feddb | ||
|
|
7167c8c593 | ||
|
|
51b79d4250 | ||
|
|
925fcc1c64 | ||
|
|
fcdc14862c | ||
|
|
dac2844cae | ||
|
|
706b0cea16 | ||
|
|
842e7844c7 | ||
|
|
1dceda50d8 | ||
|
|
af8b9abba4 | ||
|
|
07b07685fa | ||
|
|
cde43fe3c8 | ||
|
|
2fe84aa75b | ||
|
|
7d79a4840d | ||
|
|
3ee9479572 | ||
|
|
ccf8e44acc | ||
|
|
451acb77df | ||
|
|
e2c6227f47 | ||
|
|
ebd1c877ad | ||
|
|
498094b3c7 | ||
|
|
1cc183ecdb | ||
|
|
e8948452fd | ||
|
|
ade7e62836 | ||
|
|
395cfa6108 | ||
|
|
b5ff2abdb9 | ||
|
|
229e85b2c5 | ||
|
|
4257fed500 | ||
|
|
37058e3480 | ||
|
|
a1b82e9723 | ||
|
|
db943df0c8 | ||
|
|
299f83684b | ||
|
|
ff8d300ea8 | ||
|
|
8b490b9b94 | ||
|
|
f83f8631ac | ||
|
|
16da91d8d1 | ||
|
|
8ffd62b462 | ||
|
|
935367e167 | ||
|
|
00618260f2 | ||
|
|
77d66fac7b | ||
|
|
17d7f59b06 | ||
|
|
2561547db1 | ||
|
|
7738438616 | ||
|
|
3d8fc4a794 | ||
|
|
87b4e7905e | ||
|
|
13c5d4985a | ||
|
|
f0df4096fd | ||
|
|
5044424549 | ||
|
|
8ce67cdcd6 | ||
|
|
1915ccabdd | ||
|
|
6fea2f52f1 | ||
|
|
f77eaaa08a | ||
|
|
7c5bc03492 | ||
|
|
72a1af6cd4 | ||
|
|
4bce6f14f3 | ||
|
|
a38ce86f87 | ||
|
|
f539491502 | ||
|
|
ebeaef94e2 | ||
|
|
2399ba05cd | ||
|
|
8bcfa97349 | ||
|
|
dd3e3ddcdd | ||
|
|
2555e23b10 | ||
|
|
1595683904 | ||
|
|
d279f8e9ff | ||
|
|
eaec936fa6 | ||
|
|
a0735b0e7a | ||
|
|
5b039a1bee | ||
|
|
921609cab1 | ||
|
|
199573ccee | ||
|
|
977200b7cd | ||
|
|
6abff253ea | ||
|
|
ba64de334a | ||
|
|
dc1d7fa9d7 | ||
|
|
f42665d4bc | ||
|
|
a5eb19c878 | ||
|
|
60fa8e13d6 | ||
|
|
ecbaea463b | ||
|
|
814ddeb436 | ||
|
|
d6466106e8 | ||
|
|
633f5384f9 | ||
|
|
fa7989772c | ||
|
|
0e395612a6 | ||
|
|
fb3f52f3ad | ||
|
|
ba11c71d65 | ||
|
|
bdc3081167 | ||
|
|
430efcf1b9 | ||
|
|
996450dd7c | ||
|
|
fa779f0417 | ||
|
|
25cec6d28a | ||
|
|
c5f8403cea | ||
|
|
a9ae9a65c8 | ||
|
|
3698c679e2 | ||
|
|
881df20f1b | ||
|
|
7d269c0441 | ||
|
|
ba38f64353 | ||
|
|
db3ae303cb | ||
|
|
66f3a155e6 | ||
|
|
639b483e6c | ||
|
|
09843a409b | ||
|
|
e894ed5a8b | ||
|
|
d7808299fd | ||
|
|
f92e0c16d2 | ||
|
|
d94b3757be | ||
|
|
13e822cba6 | ||
|
|
c57bf87f52 | ||
|
|
99fbd60265 | ||
|
|
ea9b48db3c | ||
|
|
c145c994a9 | ||
|
|
d033998b56 | ||
|
|
3136c714bf | ||
|
|
c0ee134f19 | ||
|
|
d15ebe5732 | ||
|
|
ef630195fa | ||
|
|
e31921151e | ||
|
|
f94992abbe | ||
|
|
b00060c09c | ||
|
|
f6217d96d2 | ||
|
|
3a6947c7ed | ||
|
|
0fb528ddf8 | ||
|
|
14c03f226d | ||
|
|
4f0d844b43 | ||
|
|
b93395fc4c | ||
|
|
34eacb7e2d | ||
|
|
0177023ead | ||
|
|
a4678e45de | ||
|
|
f24869625e | ||
|
|
01beb705a2 | ||
|
|
ce28c70c35 | ||
|
|
5e0f5c31e7 | ||
|
|
b28dd4be52 | ||
|
|
d8dcc4da27 | ||
|
|
291beb45fc | ||
|
|
ffb345ccb5 | ||
|
|
d2abe2cd81 | ||
|
|
acffc3e522 | ||
|
|
0962e62b8c | ||
|
|
91ebd310b7 | ||
|
|
2974c74b4e | ||
|
|
3d24112d2d | ||
|
|
4a977cd523 | ||
|
|
4b1886990f | ||
|
|
f3499b787c | ||
|
|
5209a584a2 | ||
|
|
57a63d38aa | ||
|
|
3efffbcf22 | ||
|
|
15eaebe522 | ||
|
|
eee98358ac | ||
|
|
795fc5e7bc | ||
|
|
70ac668474 | ||
|
|
1004e0d6e8 | ||
|
|
52aa64fcb6 | ||
|
|
7860d97a10 | ||
|
|
409b37b271 | ||
|
|
ad9b9964fa | ||
|
|
d2b5276f43 | ||
|
|
7204e2a84c | ||
|
|
1377fa3332 | ||
|
|
bf087bfccf | ||
|
|
e846e3d571 | ||
|
|
d646e62888 | ||
|
|
c008154d18 | ||
|
|
29bd4de26a | ||
|
|
7559b8da6c | ||
|
|
35218e84fc | ||
|
|
2c135fa2f6 | ||
|
|
21da6bd047 | ||
|
|
f1d65a66b4 | ||
|
|
63e2dbbb0d | ||
|
|
a228c522f1 | ||
|
|
a951c337b8 | ||
|
|
db3efb3791 | ||
|
|
8ee771ca77 | ||
|
|
488bbc9651 | ||
|
|
29b2bdf613 | ||
|
|
7e35048829 | ||
|
|
4d6b9f62e5 | ||
|
|
5f9a9867eb | ||
|
|
059a8e07d2 | ||
|
|
cf82f56e66 | ||
|
|
2778bd14d4 | ||
|
|
5b0446739c | ||
|
|
55f235d0ac | ||
|
|
4ec44c68e9 | ||
|
|
e6952d499a | ||
|
|
e0b82f827b | ||
|
|
0bccb17e82 | ||
|
|
b251b8c6a9 | ||
|
|
c2a62f632b | ||
|
|
359da9a5a1 | ||
|
|
2a235151ed | ||
|
|
9e318d5ebc | ||
|
|
6819eb3b4d | ||
|
|
4c6fb60dd2 | ||
|
|
bffb9a5c45 | ||
|
|
dca4053a67 | ||
|
|
fd07f00d14 | ||
|
|
bbeb6d534e | ||
|
|
37b5afa1a3 | ||
|
|
63b8af4531 | ||
|
|
e89e76076a | ||
|
|
18b4f74cdb | ||
|
|
b80d0a3b12 | ||
|
|
e53dde385c | ||
|
|
6a7a4c20e6 | ||
|
|
6434dac04d | ||
|
|
5deb1bf40e | ||
|
|
9cd334576c | ||
|
|
ae36bf301a | ||
|
|
9f60688d37 | ||
|
|
6a5a9de795 | ||
|
|
ca0ea9e57c | ||
|
|
a77a7e8112 | ||
|
|
b26ea2edc0 | ||
|
|
02b99dfd76 | ||
|
|
af02b0f115 | ||
|
|
9b3c379678 | ||
|
|
a423fd7695 | ||
|
|
de6e1d8c9b | ||
|
|
d9db3e8629 | ||
|
|
ac1c81b7d6 | ||
|
|
49b2eec534 | ||
|
|
f0abc46429 | ||
|
|
9fd4f5ee0a | ||
|
|
5e202c3def | ||
|
|
48223c1c76 | ||
|
|
dddf7834cc | ||
|
|
66ef30b2cc | ||
|
|
f802fe57b9 | ||
|
|
ead884ce89 | ||
|
|
6a87e9f690 | ||
|
|
5b943722fb | ||
|
|
4d92b14308 | ||
|
|
167c96d14e | ||
|
|
8a42373753 | ||
|
|
c1751a9b84 | ||
|
|
4e11da98d9 | ||
|
|
1b7d98c17e | ||
|
|
3038434712 | ||
|
|
117ab633a1 | ||
|
|
e50fa4762d | ||
|
|
aed1e839ba | ||
|
|
00f2974a2a | ||
|
|
073c96af47 | ||
|
|
71da498364 | ||
|
|
8e9c11f160 | ||
|
|
98f6b23249 | ||
|
|
89288d8e0d | ||
|
|
724121eeaa | ||
|
|
edee95a5ca | ||
|
|
0c2361bf72 | ||
|
|
92f8dc48e3 | ||
|
|
06a0fff4b0 | ||
|
|
d55e4621ac | ||
|
|
bc6bda3714 | ||
|
|
d3aafd3f13 | ||
|
|
1a508de1c4 | ||
|
|
768cc0aff5 | ||
|
|
67f4c1f429 | ||
|
|
2d4ceec0a5 | ||
|
|
3e2a0cd89a | ||
|
|
d1f4f2f663 | ||
|
|
6e3bf26cad | ||
|
|
672377f116 | ||
|
|
80ee5afba7 | ||
|
|
f55fcd3305 | ||
|
|
64fc14ade5 | ||
|
|
807f245657 | ||
|
|
62f966dc27 | ||
|
|
09f97bf7a7 | ||
|
|
69460e494c | ||
|
|
9bef723346 | ||
|
|
b99eabb2cf | ||
|
|
17be3f3d0f | ||
|
|
05fe2cb173 | ||
|
|
428be14c27 | ||
|
|
a04fa8441e | ||
|
|
7bcfa84e1a | ||
|
|
1cc5986df3 | ||
|
|
7aa5d03875 | ||
|
|
a59fbfac19 | ||
|
|
677f9ee8f6 | ||
|
|
f4a16be2b4 | ||
|
|
46b967ee4a | ||
|
|
78568accd1 | ||
|
|
e9f20a0fad | ||
|
|
bbd9894e6b | ||
|
|
f92745e381 | ||
|
|
2762b78bcc | ||
|
|
2d4ed2c8c2 | ||
|
|
2de8e8c358 | ||
|
|
eb7b638db3 | ||
|
|
321e851b26 | ||
|
|
f8340be3bf | ||
|
|
02341ceb6e | ||
|
|
3dcdd7a5d7 | ||
|
|
85188b5de2 | ||
|
|
b721d049c6 | ||
|
|
e518fff944 | ||
|
|
048128c7e1 | ||
|
|
d3717449c2 | ||
|
|
04de6218d3 | ||
|
|
0082473d78 | ||
|
|
77baca8e6e | ||
|
|
6a7169630c | ||
|
|
6b2089e043 | ||
|
|
14ad3af30d | ||
|
|
e7e6d833b7 | ||
|
|
d1a9561135 | ||
|
|
c7bda6f908 | ||
|
|
ef43721e32 | ||
|
|
ba6cd874aa | ||
|
|
f283d2423f | ||
|
|
c07f668f14 | ||
|
|
596524a63c | ||
|
|
975e4dd285 | ||
|
|
09b05c8552 | ||
|
|
530ee6f80e | ||
|
|
6ad31dca76 | ||
|
|
d423f8ae57 | ||
|
|
8e5ce7f8e3 | ||
|
|
33dfc21e4b | ||
|
|
3266f3948a | ||
|
|
7259887124 | ||
|
|
800de03187 | ||
|
|
78ba305e5c | ||
|
|
bfed1475bb | ||
|
|
3281d263c4 | ||
|
|
a9a1798e3a | ||
|
|
6806eafaed | ||
|
|
3e20ea5b2e | ||
|
|
3f30a69b8b | ||
|
|
2d2e16d9f6 | ||
|
|
9c32118b77 | ||
|
|
ecf2eb4738 | ||
|
|
3d754ea7eb | ||
|
|
f755f24560 | ||
|
|
699879d95d | ||
|
|
6677508ba7 | ||
|
|
58da32358b | ||
|
|
491bc75095 | ||
|
|
b9eafeee3f | ||
|
|
c56ff5d88d | ||
|
|
f5dd83a44a | ||
|
|
9a295a85b1 | ||
|
|
8e06d93c31 | ||
|
|
1a42200137 | ||
|
|
bbf33d2475 | ||
|
|
93203ebfd1 | ||
|
|
67053eeaa0 | ||
|
|
43baf4ad6a | ||
|
|
5b2a36e47b | ||
|
|
2a0862a24e | ||
|
|
ce31027b2e | ||
|
|
3f66c77821 | ||
|
|
bc713656ec | ||
|
|
46d89faebc | ||
|
|
7135c0e308 | ||
|
|
1962bfb4a5 | ||
|
|
a1fca2550e | ||
|
|
c17f99b7a5 | ||
|
|
7cd76d60c2 | ||
|
|
fa7c8cfe5b | ||
|
|
05fb8d35af | ||
|
|
eaa827e2d9 | ||
|
|
f365ea4585 | ||
|
|
5d2e43ffb9 | ||
|
|
e9a97ed99a | ||
|
|
fe98102600 | ||
|
|
aae8845664 | ||
|
|
81a4388ecc | ||
|
|
be3ab026fd | ||
|
|
f92f9d8cb0 | ||
|
|
08a59591ae | ||
|
|
a09a244242 | ||
|
|
483a61d90d | ||
|
|
385fb7586b | ||
|
|
c624da70ef | ||
|
|
675668c395 | ||
|
|
bc9c7efe85 | ||
|
|
2488d40421 | ||
|
|
bf7875bfaa | ||
|
|
a84fa30774 | ||
|
|
c19a763b3d | ||
|
|
0875460974 | ||
|
|
f0b08d3936 | ||
|
|
16520c7b4c | ||
|
|
65549d06d9 | ||
|
|
52da66d550 | ||
|
|
251c3c3fe4 | ||
|
|
ce2d2a10c1 | ||
|
|
3b6d242ef6 | ||
|
|
0ebe801af4 | ||
|
|
05daa7ac7d | ||
|
|
990a583e5e | ||
|
|
d9b02a18bf | ||
|
|
30aae79e5c | ||
|
|
a149c121fb | ||
|
|
47f4b51207 | ||
|
|
79f4d886d0 | ||
|
|
2b556aba03 | ||
|
|
4f62043b0c | ||
|
|
b1ae304c51 | ||
|
|
425bc032d0 | ||
|
|
0156b75bde | ||
|
|
8bc8fc58de | ||
|
|
9bf847b1fb | ||
|
|
0b078d203b | ||
|
|
df59018b47 | ||
|
|
b2681dcb5d | ||
|
|
46fa471636 | ||
|
|
5f2c441996 | ||
|
|
a79cc42b26 | ||
|
|
739c993911 | ||
|
|
cb180e00de | ||
|
|
4d46a61051 | ||
|
|
81969ea8b2 | ||
|
|
ac474f3884 | ||
|
|
a39aaf6eb1 | ||
|
|
68a7661f08 | ||
|
|
ffcb2f755c | ||
|
|
366e0d6bde | ||
|
|
b3a3238e43 | ||
|
|
92828028db | ||
|
|
bd97e315ff | ||
|
|
51083419f5 | ||
|
|
b23bfd4d86 | ||
|
|
7de3e847bd | ||
|
|
0d1a541dba | ||
|
|
2717109fe2 | ||
|
|
60ca0626ce | ||
|
|
15dae0ae65 | ||
|
|
1c680118a0 | ||
|
|
ad5efbba59 | ||
|
|
6dc7baa5e9 | ||
|
|
c2b886e750 | ||
|
|
edb61e52c5 | ||
|
|
ded297b04c | ||
|
|
65e1d5978a | ||
|
|
86e76358b1 | ||
|
|
435e0257a4 | ||
|
|
1c45cc808b | ||
|
|
ed27a2f963 | ||
|
|
1f53d1a149 | ||
|
|
8295f6d7a3 | ||
|
|
b02f6341c9 | ||
|
|
f6d577d411 | ||
|
|
db3e73318e | ||
|
|
29c2071711 | ||
|
|
3acd524d09 | ||
|
|
dae65cc123 | ||
|
|
695f154d87 | ||
|
|
59dca9a812 | ||
|
|
b9f04f8f53 | ||
|
|
0985f14f18 | ||
|
|
56684dd7c3 | ||
|
|
47a5f3bc67 | ||
|
|
1c1e3009e9 | ||
|
|
c7c3f6999b | ||
|
|
fb4aa9bc1c | ||
|
|
ef57f5907b | ||
|
|
eff44f9cd1 | ||
|
|
d7fa92d58f | ||
|
|
4e8033d5a4 | ||
|
|
8a207d8311 | ||
|
|
94ba9c8437 | ||
|
|
88c71c2998 | ||
|
|
7b6e55047f | ||
|
|
9d85d0bb08 | ||
|
|
27ac0bbc00 | ||
|
|
affde9b4e2 | ||
|
|
88324b6dd9 | ||
|
|
9b95ffe6c6 | ||
|
|
6b137f8d69 | ||
|
|
e78b2b0ab8 | ||
|
|
8b51428347 | ||
|
|
b8d53a7b40 | ||
|
|
b0d9e9caa2 | ||
|
|
1fc4ec8dc1 | ||
|
|
a1e1e25800 | ||
|
|
3b020732ec | ||
|
|
dcf92945fe | ||
|
|
f9f33903d4 | ||
|
|
d8bf06ab0f | ||
|
|
806dabe58b | ||
|
|
a17b8c56d7 | ||
|
|
0eaaaba8f2 | ||
|
|
f359d79d36 | ||
|
|
1d84000d94 | ||
|
|
b70e22c150 | ||
|
|
0774ffe376 | ||
|
|
0096d7d8ac | ||
|
|
38db966b3d | ||
|
|
cb7d313a66 | ||
|
|
91b7905f3f | ||
|
|
9a81fba992 | ||
|
|
43553d5c09 | ||
|
|
e0ca8ce173 | ||
|
|
13624ea7c2 | ||
|
|
9502586c8b | ||
|
|
d6753f2cf2 | ||
|
|
5ba36efcd2 | ||
|
|
fd497ef105 | ||
|
|
9c4a7bf94c | ||
|
|
91f8adc138 | ||
|
|
69fa2373cb | ||
|
|
8b37fc4772 | ||
|
|
81e4ed9591 | ||
|
|
9cda89ec04 | ||
|
|
fc180f030f | ||
|
|
a827b6028d | ||
|
|
4517bf7342 | ||
|
|
b21287262e | ||
|
|
a60ae130c1 | ||
|
|
dd88acd411 | ||
|
|
b63fc1a9e5 | ||
|
|
17f143cfb2 | ||
|
|
cf57d847d1 | ||
|
|
7c4c7bea14 | ||
|
|
e5ec47fc75 | ||
|
|
ad91dc2423 | ||
|
|
7acbe53948 | ||
|
|
fe1b8ba0cb | ||
|
|
b0a8a51b69 | ||
|
|
c3ca21e610 | ||
|
|
c1b47a2119 | ||
|
|
caf625afee | ||
|
|
2bad3865a3 | ||
|
|
3f7d248684 | ||
|
|
4e7382b793 | ||
|
|
552ff4a044 | ||
|
|
afb52a0cd5 | ||
|
|
1ac89b0f5b | ||
|
|
5039ca7ee1 | ||
|
|
a48fd9ce18 | ||
|
|
58859c4811 | ||
|
|
5988fb3111 | ||
|
|
8dce821789 | ||
|
|
16fde0b507 | ||
|
|
9723662706 | ||
|
|
df4415b4fe | ||
|
|
6e179e7cde | ||
|
|
87f248b8ec | ||
|
|
027140eccc | ||
|
|
92cf205c66 | ||
|
|
fa3299840f | ||
|
|
f54529d46f | ||
|
|
b772add064 | ||
|
|
231f2e77a4 | ||
|
|
a000a9e607 | ||
|
|
e8da15ab1e | ||
|
|
e070ccb313 | ||
|
|
2b06579228 | ||
|
|
853c847ba1 | ||
|
|
e852680b0a | ||
|
|
0b0ee915b3 | ||
|
|
516d1d093f | ||
|
|
aee9c79c0f | ||
|
|
2d4b183c14 | ||
|
|
03b20e11ca | ||
|
|
e0e006e284 | ||
|
|
a294a881ec | ||
|
|
53926082e7 | ||
|
|
2d185becc3 | ||
|
|
67fff324b0 | ||
|
|
f64b7fcabc | ||
|
|
4cefa16db6 | ||
|
|
22722379df | ||
|
|
b2b83dc45d | ||
|
|
ebf6f8bbfd | ||
|
|
3e1631d180 | ||
|
|
97cb3c8613 | ||
|
|
6dda3a5d8a | ||
|
|
e50b0540f5 | ||
|
|
63b4aee9bd | ||
|
|
5b5de6a89c | ||
|
|
a11c991f83 | ||
|
|
a0adcf0d1a | ||
|
|
93b2b82993 | ||
|
|
4dee7d91b1 | ||
|
|
839be6477d | ||
|
|
59e2ed8ab0 | ||
|
|
83790004dd | ||
|
|
b70e9824ac | ||
|
|
155d49e8ac | ||
|
|
4ae10ab33d | ||
|
|
7124586eb1 | ||
|
|
74f6ed1851 | ||
|
|
efae7a7bce | ||
|
|
e59f13e8ff | ||
|
|
31ed8949b9 | ||
|
|
f1174a15e0 | ||
|
|
912ffae600 | ||
|
|
71a5662195 | ||
|
|
774834a31f | ||
|
|
91f1c3a10a | ||
|
|
8fc1e07136 | ||
|
|
a62e2b83ff | ||
|
|
e31a2f7e55 | ||
|
|
1598e996b1 | ||
|
|
4fb7ee760a | ||
|
|
37865cb381 | ||
|
|
ab8b882435 | ||
|
|
1b2996947e | ||
|
|
1d9c88e9a1 | ||
|
|
ea56d368e3 | ||
|
|
dbd3a750f5 | ||
|
|
f41818141f | ||
|
|
d2f576accd | ||
|
|
4e483856d4 | ||
|
|
8eb8243153 | ||
|
|
b4967b862c | ||
|
|
aee3517736 | ||
|
|
52ff8e84fa | ||
|
|
9bb6db649c | ||
|
|
da99be9897 | ||
|
|
2d7ec8a471 | ||
|
|
4cbbfdad1a | ||
|
|
2924858311 | ||
|
|
85916bfea1 | ||
|
|
38ccd9e794 | ||
|
|
c64b6be915 | ||
|
|
3bc9a40b48 | ||
|
|
67b28f9b6e |
@@ -1,18 +1,19 @@
|
||||
#!/usr/bin/env bash
|
||||
# BEARER_TOKEN=
|
||||
# CAMPAIGN_ID=
|
||||
# GITHUB_TOKEN=
|
||||
# HEAD='acid-chicken:patch-autogen'
|
||||
# REPO='syuilo/misskey'
|
||||
test "$(curl -LSs -w '\n' -- "https://api.github.com/repos/$REPO/pulls?access_token=$GITHUB_TOKEN" | jq -r '.[].head.label' | grep $HEAD)" && exit 1
|
||||
# __MISSKEY_BEARER_TOKEN=
|
||||
# __MISSKEY_CAMPAIGN_ID=
|
||||
# __MISSKEY_GITHUB_TOKEN=
|
||||
# __MISSKEY_HEAD=acid-chicken: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 '.[].head.label' | grep $__MISSKEY_HEAD)" && exit 1
|
||||
cd "$(dirname $0)/.." && \
|
||||
touch null.cache && \
|
||||
rm *.cache && \
|
||||
git checkout master && \
|
||||
git pull origin master && \
|
||||
git pull upstream master && \
|
||||
git checkout $__MISSKEY_BRANCH && \
|
||||
git pull origin $__MISSKEY_BRANCH && \
|
||||
git pull upstream $__MISSKEY_BRANCH && \
|
||||
git stash && \
|
||||
git rebase -f upstream/master && \
|
||||
git rebase -f upstream/$__MISSKEY_BRANCH && \
|
||||
git branch patch-autogen && \
|
||||
git checkout patch-autogen && \
|
||||
git reset --hard HEAD || \
|
||||
@@ -20,16 +21,16 @@ 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/$CAMPAIGN_ID/members?include=currently_entitled_tiers,user&fields%5Btier%5D=title&fields%5Buser%5D=full_name,thumb_url,url,hide_pledges"
|
||||
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 $BEARER_TOKEN" -- $URL > 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 '(.data|map(select(.relationships.currently_entitled_tiers.data[]))|map(.relationships.user.data.id))as$data|.included|map(select(.attributes.hide_pledges==false))|map(select(.id as$id|$data|contains([$id])))|map(.attributes|[.full_name,.thumb_url,.url]|@tsv)|.[]|@text' >> patreon.cache && \
|
||||
jq -r '(.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' >> patreon.cache && \
|
||||
echo '<table><tr>' >> patreon.md.cache && \
|
||||
cat patreon.cache | \
|
||||
awk -F'\t' '{print $2,$1}' | \
|
||||
@@ -42,31 +43,31 @@ while :
|
||||
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 '.links.next')"
|
||||
test "$NEW_URL" = 'null' && \
|
||||
new_url="$(cat patreon.raw.cache | jq -r '.links.next')"
|
||||
test "$new_url" = 'null' && \
|
||||
break || \
|
||||
URL="$NEW_URL"
|
||||
URL="$url"
|
||||
done
|
||||
IGNORE= && \
|
||||
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;
|
||||
cat .autogen/README.md | while IFS= read line;
|
||||
do
|
||||
if [[ -z "$IGNORE" ]]
|
||||
if [[ -z "$ignore" ]]
|
||||
then
|
||||
if [[ "$LINE" = '<!-- PATREON_START -->' ]]
|
||||
if [[ "$line" = '<!-- PATREON_START -->' ]]
|
||||
then
|
||||
IGNORE='PATREON_INSIDE'
|
||||
ignore='PATREON_INSIDE'
|
||||
else
|
||||
echo "$LINE" >> README.md
|
||||
echo "$line" >> README.md
|
||||
fi
|
||||
else
|
||||
if [[ "$LINE" = '<!-- PATREON_END -->' ]]
|
||||
then
|
||||
IGNORE=
|
||||
ignore=
|
||||
cat patreon.md.cache >> README.md
|
||||
fi
|
||||
fi
|
||||
@@ -80,7 +81,7 @@ 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":"'$HEAD'","base":"master"}' -- "https://api.github.com/repos/$REPO/pulls?access_token=$GITHUB_TOKEN"
|
||||
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 master
|
||||
git checkout $__MISSKEY_BRANCH
|
||||
git branch -D patch-autogen
|
||||
|
||||
15
.ci/default.yml
Normal file
15
.ci/default.yml
Normal file
@@ -0,0 +1,15 @@
|
||||
maintainer:
|
||||
name: syuilo
|
||||
url: 'https://syuilo.com'
|
||||
url: 'http://misskey.local'
|
||||
port: 80
|
||||
mongodb:
|
||||
host: localhost
|
||||
port: 27017
|
||||
db: misskey
|
||||
user: syuilo
|
||||
pass: ''
|
||||
redis:
|
||||
host: localhost
|
||||
port: 6379
|
||||
pass: ''
|
||||
16
.ci/test.yml
Normal file
16
.ci/test.yml
Normal file
@@ -0,0 +1,16 @@
|
||||
maintainer:
|
||||
name: syuilo
|
||||
url: 'https://syuilo.com'
|
||||
url: 'http://misskey.local'
|
||||
port: 80
|
||||
mongodb:
|
||||
host: localhost
|
||||
port: 27017
|
||||
db: test-misskey
|
||||
user: admin
|
||||
pass: ''
|
||||
# __REDIS__
|
||||
redis:
|
||||
host: localhost
|
||||
port: 6379
|
||||
pass: ''
|
||||
137
.circleci/config.yml
Normal file
137
.circleci/config.yml
Normal file
@@ -0,0 +1,137 @@
|
||||
version: 2.1
|
||||
|
||||
general:
|
||||
branches:
|
||||
ignore:
|
||||
- l10n_develop
|
||||
- imgbot
|
||||
|
||||
executors:
|
||||
default:
|
||||
working_directory: /tmp/workspace
|
||||
docker:
|
||||
- image: misskey/ci:latest
|
||||
- image: circleci/mongo:latest
|
||||
- image: circleci/redis:latest
|
||||
docker:
|
||||
working_directory: /tmp/workspace
|
||||
docker:
|
||||
- image: docker:latest
|
||||
|
||||
jobs:
|
||||
build:
|
||||
executor: default
|
||||
steps:
|
||||
- checkout
|
||||
- restore_cache:
|
||||
name: Restore npm package caches
|
||||
keys:
|
||||
- npm-v1-arch-{{ arch }}-env-{{ .Environment.variableName }}-package-{{ checksum "package.json" }}-lock-{{ checksum "package-lock.json" }}-
|
||||
- npm-v1-arch-{{ arch }}-env-{{ .Environment.variableName }}-package-{{ checksum "package.json" }}-
|
||||
- npm-v1-arch-{{ arch }}-env-{{ .Environment.variableName }}-
|
||||
- npm-v1-arch-{{ arch }}-
|
||||
- npm-v1-
|
||||
- run:
|
||||
name: Install Dependencies
|
||||
command: |
|
||||
npm install
|
||||
- run:
|
||||
name: Configure
|
||||
command: |
|
||||
cp .ci/default.yml .config
|
||||
cp .ci/test.yml .config
|
||||
- run:
|
||||
name: Build
|
||||
command: |
|
||||
npm run build || (echo -e '\033[0;34mRebuild modules\033[0;39m' && ls -1A node_modules | grep '^[^@]' | xargs npm rebuild && ls -1A node_modules | grep '^@' | xargs -I%1 sh -c 'ls -1A node_modules/'%1' | xargs -P0 -I%2 npm rebuild node_modules/'%1'/%2' && npm run build)
|
||||
ls -1ARl node_modules > ls
|
||||
- save_cache:
|
||||
name: Cache npm packages
|
||||
key: npm-v1-arch-{{ arch }}-env-{{ .Environment.variableName }}-package-{{ checksum "package.json" }}-lock-{{ checksum "package-lock.json" }}-ls-{{ checksum "ls" }}
|
||||
paths:
|
||||
- node_modules
|
||||
- store_artifacts:
|
||||
path: built
|
||||
- persist_to_workspace:
|
||||
root: .
|
||||
paths:
|
||||
- .
|
||||
test:
|
||||
parameters:
|
||||
without_redis:
|
||||
type: string
|
||||
default: ""
|
||||
executor: default
|
||||
steps:
|
||||
- attach_workspace:
|
||||
at: /tmp/workspace
|
||||
- when:
|
||||
condition: <<parameters.without_redis>>
|
||||
steps:
|
||||
- run:
|
||||
name: Configure
|
||||
command: |
|
||||
mv .config/test.yml .config/test_redis.yml
|
||||
touch .config/test.yml
|
||||
cat .config/test_redis.yml | while IFS= read line; do if [[ "$line" = '# __REDIS__' ]]; then break; else echo "$line" >> .config/test.yml; fi; done
|
||||
- run:
|
||||
name: Test
|
||||
command: |
|
||||
npm run test || (npm rebuild && npm run test) || ((node-gyp configure && node-gyp build && npm run build || (echo -e '\033[0;34mRebuild modules\033[0;39m' && ls -1A node_modules | grep '^[^@]' | xargs npm rebuild && ls -1A node_modules | grep '^@' | xargs -I%1 sh -c 'ls -1A node_modules/'%1' | xargs -P0 -I%2 npm rebuild node_modules/'%1'/%2' && npm run build)) && npm run test)
|
||||
ls -1ARl node_modules > ls
|
||||
- save_cache:
|
||||
name: Cache npm packages
|
||||
key: npm-v1-arch-{{ arch }}-env-{{ .Environment.variableName }}-package-{{ checksum "package.json" }}-lock-{{ checksum "package-lock.json" }}-ls-{{ checksum "ls" }}
|
||||
paths:
|
||||
- node_modules
|
||||
|
||||
docker:
|
||||
parameters:
|
||||
with_deploy:
|
||||
type: string
|
||||
default: ""
|
||||
executor: docker
|
||||
steps:
|
||||
- checkout
|
||||
- setup_remote_docker
|
||||
- run:
|
||||
name: Build
|
||||
command: |
|
||||
docker build . | tee docker.log
|
||||
tail -n 1 docker.log | read __Successfully __built tag
|
||||
- when:
|
||||
condition: <<parameters.with_deploy>>
|
||||
steps:
|
||||
- run:
|
||||
name: Deploy
|
||||
command: |
|
||||
if [ "$DOCKERHUB_USERNAME$DOCKERHUB_PASSWORD" ]
|
||||
then
|
||||
docker tag $tag misskey/misskey
|
||||
docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASSWORD
|
||||
docker push misskey/misskey
|
||||
else
|
||||
echo -e '\033[0;33mAborted deploying to Docker Hub\033[0;39m'
|
||||
fi
|
||||
|
||||
workflows:
|
||||
version: 2
|
||||
build-and-test:
|
||||
jobs:
|
||||
- build
|
||||
- test:
|
||||
requires:
|
||||
- build
|
||||
- test:
|
||||
without_redis: "true"
|
||||
requires:
|
||||
- build
|
||||
- docker:
|
||||
filters:
|
||||
branches:
|
||||
ignore: master
|
||||
- docker:
|
||||
with_deploy: "true"
|
||||
filters:
|
||||
branches:
|
||||
only: master
|
||||
@@ -7,27 +7,51 @@ maintainer:
|
||||
repository_url: https://github.com/syuilo/misskey # Repository URL
|
||||
feedback_url: https://github.com/syuilo/misskey/issues # Feedback URL (e.g. github issue)
|
||||
|
||||
# URL and Port settings overview
|
||||
# e.g., If you want to realize following structure:
|
||||
#
|
||||
# +--- https://example.com:123 ----------+
|
||||
# +------+ |+-------------+ +---------------+|
|
||||
# | User | ---> || Proxy (123) | ---> | Misskey (456) ||
|
||||
# +------+ |+-------------+ +---------------+|
|
||||
# +--------------------------------------+
|
||||
#
|
||||
# You need to set 'https://example.com:123' to 'url' prop and
|
||||
# You need to set 456 to 'port' prop.
|
||||
#
|
||||
# In other words, the 'url' prop should be the final accessible URL seen by a user.
|
||||
# 'port' prop is a port that the Misskey server should actually listen
|
||||
# on and it is not necessarily the port that a user accesses.
|
||||
|
||||
url: http://localhost/
|
||||
# Final accessible URL seen by a user.
|
||||
url: https://example.tld/
|
||||
|
||||
|
||||
### Port and TLS settings ######################################
|
||||
#
|
||||
# Misskey supports two deployment options for public.
|
||||
#
|
||||
|
||||
# Option 1: With Reverse Proxy
|
||||
#
|
||||
# +----- https://example.tld/ ------------+
|
||||
# +------+ |+-------------+ +----------------+|
|
||||
# | User | ---> || Proxy (443) | ---> | Misskey (3000) ||
|
||||
# +------+ |+-------------+ +----------------+|
|
||||
# +---------------------------------------+
|
||||
#
|
||||
# You need to setup reverse proxy. (eg. Nginx)
|
||||
# You do not define 'https' section.
|
||||
|
||||
# Option 2: Standalone
|
||||
#
|
||||
# +- https://example.tld/ -+
|
||||
# +------+ | +---------------+ |
|
||||
# | User | ---> | | Misskey (443) | |
|
||||
# +------+ | +---------------+ |
|
||||
# +------------------------+
|
||||
#
|
||||
# You need to run Misskey as root.
|
||||
# You need to set Certificate in 'https' section.
|
||||
|
||||
# To use option 1, uncomment below line.
|
||||
# port: 3000 # A port that your Misskey server should listen.
|
||||
|
||||
# To use option 2, uncomment below lines.
|
||||
# port: 443
|
||||
#
|
||||
# https:
|
||||
# # path for certification
|
||||
# key: /etc/letsencrypt/live/example.tld/privkey.pem
|
||||
# cert: /etc/letsencrypt/live/example.tld/fullchain.pem
|
||||
|
||||
################################################################
|
||||
|
||||
# A port that your Misskey server should listen.
|
||||
# This value is not a port to use when accessing with a browser.
|
||||
port: 80
|
||||
|
||||
mongodb:
|
||||
host: localhost
|
||||
@@ -36,11 +60,6 @@ mongodb:
|
||||
user: example-misskey-user
|
||||
pass: example-misskey-pass
|
||||
|
||||
redis:
|
||||
host: localhost
|
||||
port: 6379
|
||||
pass: example-pass
|
||||
|
||||
# Drive capacity of a local user (MB)
|
||||
localDriveCapacityMb: 256
|
||||
|
||||
@@ -98,43 +117,53 @@ drive:
|
||||
# Below settings are optional
|
||||
#
|
||||
|
||||
# TLS
|
||||
# https:
|
||||
# # path for certification
|
||||
# key: example-tls-key
|
||||
# cert: example-tls-cert
|
||||
# Redis
|
||||
#redis:
|
||||
# host: localhost
|
||||
# port: 6379
|
||||
# pass: example-pass
|
||||
|
||||
# Elasticsearch
|
||||
# elasticsearch:
|
||||
# host: localhost
|
||||
# port: 9200
|
||||
# pass: null
|
||||
#elasticsearch:
|
||||
# host: localhost
|
||||
# port: 9200
|
||||
# pass: null
|
||||
|
||||
# reCAPTCHA
|
||||
# recaptcha:
|
||||
# site_key: example-site-key
|
||||
#recaptcha:
|
||||
# site_key: example-site-key
|
||||
# secret_key: example-secret-key
|
||||
|
||||
# ServiceWorker
|
||||
# sw:
|
||||
# # Public key of VAPID
|
||||
# public_key: example-sw-public-key
|
||||
|
||||
# # Private key of VAPID
|
||||
# private_key: example-sw-private-key
|
||||
|
||||
# google_maps_api_key: example-google-maps-api-key
|
||||
#sw:
|
||||
# # Public key of VAPID
|
||||
# public_key: example-sw-public-key
|
||||
#
|
||||
# # Private key of VAPID
|
||||
# private_key: example-sw-private-key
|
||||
|
||||
# Twitter integration
|
||||
# You need to set the oauth callback url as : https://<your-misskey-instance>/api/tw/cb
|
||||
# twitter:
|
||||
# consumer_key: example-twitter-consumer-key
|
||||
# consumer_secret: example-twitter-consumer-secret-key
|
||||
#twitter:
|
||||
# consumer_key: example-twitter-consumer-key
|
||||
# consumer_secret: example-twitter-consumer-secret-key
|
||||
|
||||
# Ghost
|
||||
# Ghost account is an account used for the purpose of delegating
|
||||
# followers when putting users in the list.
|
||||
# ghost: user-id-of-your-ghost-account
|
||||
#ghost: user-id-of-your-ghost-account
|
||||
|
||||
# Clustering
|
||||
# clusterLimit: 1
|
||||
#clusterLimit: 1
|
||||
|
||||
# Summaly proxy
|
||||
#summalyProxy: "http://example.com"
|
||||
|
||||
# User recommendation
|
||||
#user_recommendation:
|
||||
# external: true
|
||||
# engine: http://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}
|
||||
# timeout: 300000
|
||||
|
||||
# Max allowed note text length in charactors
|
||||
maxNoteTextLength: 1000
|
||||
|
||||
13
.config/mongo_initdb_example.js
Normal file
13
.config/mongo_initdb_example.js
Normal file
@@ -0,0 +1,13 @@
|
||||
var user = {
|
||||
user: 'example-misskey-user',
|
||||
pwd: 'example-misskey-pass',
|
||||
roles: [
|
||||
{
|
||||
role: 'readWrite',
|
||||
db: 'misskey'
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
db.createUser(user);
|
||||
|
||||
12
.dockerignore
Executable file
12
.dockerignore
Executable file
@@ -0,0 +1,12 @@
|
||||
.autogen
|
||||
.git
|
||||
.github
|
||||
.travis
|
||||
.vscode
|
||||
Dockerfile
|
||||
build/
|
||||
docker-compose.yml
|
||||
node_modules/
|
||||
mongo/
|
||||
redis/
|
||||
elasticsearch/
|
||||
5
.gitignore
vendored
5
.gitignore
vendored
@@ -1,5 +1,6 @@
|
||||
/.config/*
|
||||
!/.config/example.yml
|
||||
!/.config/mongo_initdb_example.js
|
||||
/.vscode
|
||||
/node_modules
|
||||
/build
|
||||
@@ -12,3 +13,7 @@ npm-debug.log
|
||||
run.bat
|
||||
api-docs.json
|
||||
*.log
|
||||
/redis
|
||||
/mongo
|
||||
/elasticsearch
|
||||
*.code-workspace
|
||||
|
||||
@@ -11,7 +11,7 @@ branches:
|
||||
language: node_js
|
||||
|
||||
node_js:
|
||||
- 10.1.0
|
||||
- 11.0.0
|
||||
|
||||
env:
|
||||
- CXX=g++-4.8 NODE_ENV=production
|
||||
@@ -35,7 +35,7 @@ before_script:
|
||||
- npm install
|
||||
|
||||
# 設定ファイルを配置
|
||||
- cp ./.travis/default.yml ./.config
|
||||
- cp ./.travis/test.yml ./.config
|
||||
- cp ./.ci/default.yml ./.config
|
||||
- cp ./.ci/test.yml ./.config
|
||||
|
||||
- travis_wait npm run build
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
maintainer: '@syuilo'
|
||||
url: 'https://misskey.xyz'
|
||||
secondary_url: 'https://himasaku.net'
|
||||
port: 80
|
||||
https:
|
||||
enable: false
|
||||
key: null
|
||||
cert: null
|
||||
ca: null
|
||||
mongodb:
|
||||
host: localhost
|
||||
port: 27017
|
||||
db: misskey
|
||||
user: syuilo
|
||||
pass: ''
|
||||
redis:
|
||||
host: localhost
|
||||
port: 6379
|
||||
pass: ''
|
||||
elasticsearch:
|
||||
host: localhost
|
||||
port: 9200
|
||||
pass: ''
|
||||
recaptcha:
|
||||
site_key: hima
|
||||
secret_key: saku
|
||||
@@ -1,26 +0,0 @@
|
||||
maintainer: '@syuilo'
|
||||
url: 'https://misskey.xyz'
|
||||
secondary_url: 'https://himasaku.net'
|
||||
port: 80
|
||||
https:
|
||||
enable: false
|
||||
key: null
|
||||
cert: null
|
||||
ca: null
|
||||
mongodb:
|
||||
host: localhost
|
||||
port: 27017
|
||||
db: test-misskey
|
||||
user: admin
|
||||
pass: ''
|
||||
redis:
|
||||
host: localhost
|
||||
port: 6379
|
||||
pass: ''
|
||||
elasticsearch:
|
||||
host: localhost
|
||||
port: 9200
|
||||
pass: ''
|
||||
recaptcha:
|
||||
site_key: hima
|
||||
secret_key: saku
|
||||
102
CHANGELOG.md
102
CHANGELOG.md
@@ -5,6 +5,104 @@ ChangeLog
|
||||
|
||||
This document describes breaking changes only.
|
||||
|
||||
10.0.0
|
||||
------
|
||||
|
||||
ストリーミングAPIに破壊的変更があります。運営者がすべきことはありません。
|
||||
|
||||
変更は以下の通りです
|
||||
|
||||
* ストリーミングでやり取りする際の snake_case が全て camelCase に
|
||||
* リバーシのストリームエンドポイント名が reversi → gamesReversi、reversiGame → gamesReversiGame に
|
||||
* ストリーミングの個々のエンドポイントが廃止され、一旦元となるストリームに接続してから、個々のチャンネル(今までのエンドポイント)に接続します。詳細は後述します。
|
||||
* ストリームから流れてくる、キャプチャした投稿の更新イベントに投稿自体のデータは含まれず、代わりにアクションが設定されるようになります。詳細は後述します。
|
||||
* ストリームに接続する際に追加で指定していたパラメータ(トークン除く)が、URLにクエリとして含むのではなくチャンネル接続時にパラメータ指定するように
|
||||
|
||||
### 個々のエンドポイントが廃止されることによる新しいストリーミングAPIの利用方法
|
||||
具体的には、まず https://example.misskey/streaming にwebsocket接続します。
|
||||
次に、例えば「messaging」ストリーム(チャンネルと呼びます)に接続したいときは、ストリームに次のようなデータを送信します:
|
||||
``` javascript
|
||||
{
|
||||
type: 'connect',
|
||||
body: {
|
||||
channel: 'messaging',
|
||||
id: 'foobar',
|
||||
params: {
|
||||
otherparty: 'xxxxxxxxxxxx'
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
ここで、`id`にはそのチャンネルとやり取りするための任意のIDを設定します。
|
||||
IDはチャンネルごとではなく「チャンネルの接続ごと」です。なぜなら、同じチャンネルに異なるパラメータで複数接続するケースもあるからです。
|
||||
`params`はチャンネルに接続する際のパラメータです。チャンネルによって接続時に必要とされるパラメータは異なります。パラメータ不要のチャンネルに接続する際は、このプロパティは省略可能です。
|
||||
|
||||
チャンネルにメッセージを送信するには、次のようなデータを送信します:
|
||||
``` javascript
|
||||
{
|
||||
type: 'channel',
|
||||
body: {
|
||||
id: 'foobar',
|
||||
type: 'something',
|
||||
body: {
|
||||
some: 'thing'
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
ここで、`id`にはチャンネルに接続するときに指定したIDを設定します。
|
||||
|
||||
逆に、チャンネルからメッセージが流れてくると、次のようなデータが受信されます:
|
||||
``` javascript
|
||||
{
|
||||
type: 'channel',
|
||||
body: {
|
||||
id: 'foobar',
|
||||
type: 'something',
|
||||
body: {
|
||||
some: 'thing'
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
ここで、`id`にはチャンネルに接続するときに指定したIDが設定されています。
|
||||
|
||||
### 投稿のキャプチャに関する変更
|
||||
投稿の更新イベントに投稿情報は含まれなくなりました。代わりに、その投稿が「リアクションされた」「アンケートに投票された」「削除された」といったアクション情報が設定されます。
|
||||
|
||||
具体的には次のようなデータが受信されます:
|
||||
``` javascript
|
||||
{
|
||||
type: 'noteUpdated',
|
||||
body: {
|
||||
id: 'xxxxxxxxxxx',
|
||||
type: 'reacted',
|
||||
body: {
|
||||
reaction: 'hmm'
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
* reacted ... 投稿にリアクションされた。`reaction`プロパティにリアクションコードが含まれます。
|
||||
* pollVoted ... アンケートに投票された。`choice`プロパティに選択肢ID、`userId`に投票者IDが含まれます。
|
||||
|
||||
9.0.0
|
||||
-----
|
||||
|
||||
Misskey v8.64.0 を使っている方は、9.0.0に際しては特にすべきことはありません。
|
||||
Misskey v8.64.0 に満たないバージョンをお使いの方は、一旦8.64.0にアップデートして(そして起動して)から9.0.0に再度アップデートしてください。
|
||||
|
||||
8.0.0
|
||||
-----
|
||||
|
||||
### Migration
|
||||
|
||||
起動する前に、`node cli/migration/8.0.0`してください。
|
||||
|
||||
Please run `node cli/migration/8.0.0` before launch.
|
||||
|
||||
|
||||
7.0.0
|
||||
-----
|
||||
|
||||
@@ -37,13 +135,13 @@ Please run `node cli/migration/5.0.0` before launch.
|
||||
|
||||
オセロがリバーシに変更されました。
|
||||
|
||||
Othello is now Reversi.
|
||||
Othello is rename to Reversi.
|
||||
|
||||
### Migration
|
||||
|
||||
MongoDBの、`othelloGames`と`othelloMatchings`コレクションをそれぞれ`reversiGames`と`reversiMatchings`にリネームしてください。
|
||||
|
||||
You need to rename `othelloGames` and `othelloMatchings` MongoDB collections to `reversiGames` and `reversiMatchings`.
|
||||
Please rename `othelloGames` and `othelloMatchings` MongoDB collections to `reversiGames` and `reversiMatchings` respectively.
|
||||
|
||||
3.0.0
|
||||
-----
|
||||
|
||||
@@ -1,27 +1,27 @@
|
||||
# Contribution guide
|
||||
:v: Misskeyへの貢献ありがとうございます。 :v:
|
||||
:v: Thanks for your contributions :v:
|
||||
|
||||
## Issueの報告
|
||||
新機能の提案や不具合の報告は https://github.com/syuilo/misskey/issues で管理しています。
|
||||
Issueを作成する前に、既に同じIssueが作成されていないかご確認ください。
|
||||
もし既にIssueが作成されている場合は、既存のIssueにコメントをしたりリアクションをするようお願いします。
|
||||
## Issues
|
||||
Feature suggestions and bug reports are filed in https://github.com/syuilo/misskey/issues .
|
||||
Before creating a new issue, please search existing issues to avoid duplication.
|
||||
If you find the existing issue, please add your reaction or comment to the issue.
|
||||
|
||||
## Issueの解決
|
||||
[pr-welcomeのラベルがついているIssue](https://github.com/syuilo/misskey/labels/pr-welcome)
|
||||
の解決を目的としたPull Requestを作成してくださると非常にありがたいです。
|
||||
## Internationalization (i18n)
|
||||
Please see [Translation guide](./docs/translate.en.md).
|
||||
|
||||
## 翻訳の改善
|
||||
ソースコード中の `%i18n:id%` という形の文字列は、言語ファイルの対応するテキストに置換されます。
|
||||
言語ファイルは /locales ディレクトリに存在します。
|
||||
## Localization (l10n)
|
||||
Please use [Crowdin](https://crowdin.com/project/misskey) for localization.
|
||||
|
||||
## ドキュメントの編集
|
||||
現在Misskeyはドキュメントが大きく不足しています。
|
||||
ドキュメントは /docs ディレクトリに存在します。
|
||||

|
||||
|
||||
## テストの追加
|
||||
現在Misskeyはテストが大きく不足しています。
|
||||
テストコードは /test ディレクトリに存在します。
|
||||
## Documentation
|
||||
* Documents for contributors are located in `/docs`.
|
||||
* Documents for instance admins are located in `/docs`.
|
||||
* Documents for end users are located in `src/docs`.
|
||||
|
||||
## 自動テスト及び自動リリース
|
||||
Travis CIで行っています。
|
||||
設定ファイルは /.travis に存在します。
|
||||
## Test
|
||||
* Test codes are located in `/test`.
|
||||
|
||||
## Continuous integration
|
||||
Misskey uses Travis for automated test.
|
||||
Configuration files are located in `/.travis`.
|
||||
|
||||
44
Dockerfile
Normal file
44
Dockerfile
Normal file
@@ -0,0 +1,44 @@
|
||||
FROM alpine:3.8 AS base
|
||||
|
||||
ENV NODE_ENV=production
|
||||
|
||||
RUN apk add --no-cache nodejs nodejs-npm zlib
|
||||
RUN npm i -g npm@latest
|
||||
|
||||
WORKDIR /misskey
|
||||
|
||||
FROM base AS builder
|
||||
|
||||
RUN apk add --no-cache \
|
||||
gcc \
|
||||
g++ \
|
||||
libc-dev \
|
||||
python \
|
||||
autoconf \
|
||||
automake \
|
||||
file \
|
||||
make \
|
||||
nasm \
|
||||
pkgconfig \
|
||||
libtool \
|
||||
zlib-dev
|
||||
RUN npm i -g node-gyp
|
||||
|
||||
COPY ./package.json ./
|
||||
RUN npm i
|
||||
|
||||
COPY . ./
|
||||
RUN node-gyp configure \
|
||||
&& node-gyp build \
|
||||
&& npm run build
|
||||
|
||||
FROM base AS runner
|
||||
|
||||
RUN apk add --no-cache tini
|
||||
ENTRYPOINT ["/sbin/tini", "--"]
|
||||
|
||||
COPY --from=builder /misskey/node_modules ./node_modules
|
||||
COPY --from=builder /misskey/built ./built
|
||||
COPY . ./
|
||||
|
||||
CMD ["npm", "start"]
|
||||
108
README.md
108
README.md
@@ -1,18 +1,19 @@
|
||||
<img src="https://github.com/syuilo/misskey/blob/b3f42e62af698a67c2250533c437569559f1fdf9/src/himasaku/resources/himasaku.png?raw=true" align="right" width="320px"/>
|
||||
<img src="https://github.com/syuilo/misskey/blob/develop/assets/ai-orig.png?raw=true" align="right" height="320px"/>
|
||||
|
||||
[](https://misskey.xyz/)
|
||||
================================================================
|
||||
|
||||
[](https://circleci.com/gh/syuilo/misskey)
|
||||
[![][travis-badge]][travis-link]
|
||||
[![][dependencies-badge]][dependencies-link]
|
||||
[](http://makeapullrequest.com) [](https://greenkeeper.io/)
|
||||
[](http://makeapullrequest.com)
|
||||
|
||||
Sophisticated microblogging platform, evolving forever.
|
||||
**Sophisticated microblogging platform, evolving forever.**
|
||||
|
||||
[Misskey](https://misskey.xyz) 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?
|
||||
Why don't you take a short break from the hustle and bustle of the city, and dive into a new Internet? [Find instance!](https://joinmisskey.github.io/)
|
||||
|
||||
<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>
|
||||
|
||||
@@ -20,76 +21,97 @@ Why don't you take a short break from the hustle and bustle of the city, and div
|
||||
|
||||
:sparkles: Features
|
||||
----------------------------------------------------------------
|
||||
* Rich text contents
|
||||
* Reactions
|
||||
* User lists
|
||||
* Customizable column view (called MisskeyDeck)
|
||||
* and widgets!
|
||||
* Private messages
|
||||
* ActivityPub support
|
||||
|
||||
and more! You can see it with your own eyes at [misskey.xyz](https://misskey.xyz).
|
||||
<img src="/assets/about/post.png" align="left" height="200px"/>
|
||||
|
||||
<h3 align="left">Posting</h3>
|
||||
<p align="left">
|
||||
Just post your idea, hot topics and anything you want to share. You may want to decorate your words, attach your favorite pictures, send files including movies and create a poll - those are the things you can do on Misskey!
|
||||
</p>
|
||||
|
||||
---
|
||||
|
||||
<img src="/assets/about/reaction.png" align="right" height="200px"/>
|
||||
|
||||
<h3 align="right">Reactions</h3>
|
||||
<p align="right">
|
||||
Easiest way to tell your emotions. Misskey allows you to add various type of reactions to other’s post. The emotional experience on Misskey will never be on other SNSs which only able to push “likes”.
|
||||
</p>
|
||||
|
||||
---
|
||||
|
||||
<img src="/assets/about/ui.png" align="left" height="200px"/>
|
||||
|
||||
<h3 align="left">Interface</h3>
|
||||
<p align="left">
|
||||
No UI fits for everyone. Therefore, Misskey has a highly customizable UI for your taste. You can edit layouts of your timeline, place selectable widgets you can easily move and create your unique home as this place will be your home.
|
||||
</p>
|
||||
|
||||
---
|
||||
|
||||
<img src="/assets/about/drive.png" align="right" width="300px"/>
|
||||
|
||||
<h3 align="right">Misskey Drive</h3>
|
||||
<p align="right">
|
||||
Wanna post a picture you have already uploaded? Wish to organize, name and create a folder for your uploaded files? Misskey Drive is the best solution for you. Very easy to share your files online.
|
||||
</p>
|
||||
|
||||
---
|
||||
|
||||
and more! You can see it with your own eyes at [misskey.xyz](https://misskey.xyz) or [other instances](https://joinmisskey.github.io/).
|
||||
|
||||
:package: Create your own instance
|
||||
----------------------------------------------------------------
|
||||
If you want to run your own instance of Misskey,
|
||||
please see [Setup and installation guide](./docs/setup.en.md).
|
||||
Please see [Setup and installation guide](./docs/setup.en.md).
|
||||
|
||||
:wrench: Contribute
|
||||
:wrench: Contribution
|
||||
----------------------------------------------------------------
|
||||
**[PR](https://github.com/syuilo/misskey/pulls)s welcome!**
|
||||
|
||||
### i18n
|
||||
|
||||
Please see [Translation guide](./docs/translate.en.md).
|
||||
|
||||
### l10n
|
||||
|
||||
Misskey is using Crowdin for l10n.
|
||||
|
||||
[](https://crowdin.com/project/misskey)
|
||||
Please see [Contribution guide](./CONTRIBUTING.md).
|
||||
|
||||
:heart: Backers & Sponsors
|
||||
----------------------------------------------------------------
|
||||
<!-- PATREON_START -->
|
||||
<table><tr>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12378075/0156f769e20f412594fa6b87d85fe228/1?token-time=2145916800&token-hash=IsIJRUXszzoD6-7pDnRY8I05T9nSznc4GTaxj7C9SwU%3D" alt="39ff"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12731202/0995c46cdcb54153ab5f073f5869b70a/1?token-time=2145916800&token-hash=Yd60FK_SWfQO56SeiJpy1tDHOnCV4xdEywQe8gn5_Wo%3D" alt="negao"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/13099460/43cecdbaa63a40d79bf50a96b9910b9d/1?token-time=2145916800&token-hash=d6P5MWHHsCMxUuBAEPAoVc5wLUR19mIhqAq7Ma9h9rI%3D" alt="ne_moni"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12913507/f7181eacafe8469a93033d85f5969c29/1?token-time=2145916800&token-hash=f03BFb4S2FUx9YEt87TnEmifb4h33OywGBW2akQVtQY%3D" alt="Melilot"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12913507/f7181eacafe8469a93033d85f5969c29/2?token-time=2145916800&token-hash=mgPdX9TqZxEg4TTPuc477dxhIgYk9246qafjWZEqZ7g%3D" alt="Melilot"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/3384329/8b713330cb27404ea6e9fac50ff96efe/1?token-time=2145916800&token-hash=0eu4-m1gTWA9PhptVZt6rdKcusqcD7RB87rJT23VVFI%3D" alt="べすれい"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12021162/963128bb8d14476dbd8407943db8f31a/1?token-time=2145916800&token-hash=GgJ_NmUB6_nnRNLVGUWjV-WX91On7BOu59LKncYV9fE%3D" alt="gutfuckllc"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/11357794/923ce94cd8c44ba788ee931907881839/1?token-time=2145916800&token-hash=I8lJVM8LeW6TSo5W6uIIRZ42cw83zp1wK_FsbzY0mcQ%3D" alt="mydarkstar"></td>
|
||||
<td><img src="https://c8.patreon.com/2/100/12718187" alt="Peter G."></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/13039004/509d0c412eb14ae08d6a812a3054f7d6/1?token-time=2145916800&token-hash=zwSu01tOtn5xTUucDZHuPsCxF2HBEMVs9ROJKTlEV_o%3D" alt="nemu"></td>
|
||||
</tr><tr>
|
||||
<td><a href="https://www.patreon.com/user?u=12378075">39ff</a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=12731202">negao</a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=13099460">ne_moni</a></td>
|
||||
<td><a href="https://www.patreon.com/negao">negao</a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=12913507">Melilot</a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=3384329">べすれい</a></td>
|
||||
<td><a href="https://www.patreon.com/gutfuckllc">gutfuckllc</a></td>
|
||||
<td><a href="https://www.patreon.com/mydarkstar">mydarkstar</a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=12718187">Peter G.</a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=13039004">nemu</a></td>
|
||||
</tr></table>
|
||||
<table><tr>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/5881381/6235ca5d3fb04c8e95ef5b4ff2abcc18/2?token-time=2145916800&token-hash=zElv7ZcPL3viGsXbNG_KWiKrbV0vvw1gk0panx8DJoo%3D" alt="Naoki Kosaka"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12931605/ead494101f364dffa90efe49e36fb494/1?token-time=2145916800&token-hash=NzSFPjIlodXyv41rwK61aZWVZWfI4surJaNj8vWKvqM%3D" alt="Reiju"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/13039004/509d0c412eb14ae08d6a812a3054f7d6/1?token-time=2145916800&token-hash=zwSu01tOtn5xTUucDZHuPsCxF2HBEMVs9ROJKTlEV_o%3D" alt="nemu"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/5881381/6235ca5d3fb04c8e95ef5b4ff2abcc18/3?token-time=2145916800&token-hash=qsdn0-e6yLaLI6hUX9JAkyTR6a5UdnSp7T1foniBvGQ%3D" alt="YUKIMOCHI"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/8241184/39e18850e87a449e9c9a71acb3310ebd/2?token-time=2145916800&token-hash=iUXOQzRyJDv3PJxwS7Mjwg1459dzh2trOq6NFtXu_OM%3D" alt="Acid Chicken"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/13034746/c711c7f58e204ecfbc2fd646bc8a4eee/1?token-time=2145916800&token-hash=UERBN4OyP7Nh5XwwdDg0N0IE5cD6_qUQMO81Z5Wizso%3D" alt="Hiratake"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/10789744/97175095d8f04c0f86225ff47cb98d40/1?token-time=2145916800&token-hash=P4BIzCX2I1CkEP66ottfhsC8Wr6BUSamjA-vq3pLqFI%3D" alt="Naoki Hirayama"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/4503830/ccf2cc867ea64de0b524bb2e24b9a1cb/1?token-time=2145916800&token-hash=S1zP0QyLU52Dqq6dtc9qNYyWfW86XrYHiR4NMbeOrnA%3D" alt="dansup"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/4950409/28e7d016209243759d9316be2e21381d/2?token-time=2145916800&token-hash=LuEaDkchH3GQWUcTOhBQ8xfKQYF0s5FjlZRd7Yduia8%3D" alt="mikan54951"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/619786/32cf01444db24e578cd1982c197f6fc6/1?token-time=2145916800&token-hash=tB1e_r8RlZ5sFL0KV_e8dugapxatNBRK1Z3h67TO1g8%3D" alt="Gargron"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/5731881/4b6038e6cda34c04b83a5fcce3806a93/1?token-time=2145916800&token-hash=VZUtwrjQa8Jml4twCjHYQQZ64wHEY4oIlGl7Kc-VYUQ%3D" alt="Nokotaro Takeda"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12531784/93a45137841849329ba692da92ac7c60/1?token-time=2145916800&token-hash=tMosUojzUYJCH_3t--tvYA-SMCyrS__hzSndyaRSnbo%3D" alt="Takashi Shibuya"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12959468/c249e15aebec4424b5c0f427173671b6/1?token-time=2145916800&token-hash=lubpCEdxAkxPlpR2O6bvZ7BIh8Q4nGf-U_mE1qpjVAQ%3D" alt="fujishan"></td>
|
||||
</tr><tr>
|
||||
<td><a href="https://www.patreon.com/user?u=5881381">Naoki Kosaka</a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=12931605">Reiju</a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=13039004">nemu</a></td>
|
||||
<td><a href="https://www.patreon.com/yukimochi">YUKIMOCHI</a></td>
|
||||
<td><a href="https://www.patreon.com/acid_chicken">Acid Chicken</a></td>
|
||||
<td><a href="https://www.patreon.com/hiratake">Hiratake</a></td>
|
||||
<td><a href="https://www.patreon.com/spinlock">Naoki Hirayama</a></td>
|
||||
<td><a href="https://www.patreon.com/dansup">dansup</a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=4950409">mikan54951</a></td>
|
||||
<td><a href="https://www.patreon.com/mastodon">Gargron</a></td>
|
||||
<td><a href="https://www.patreon.com/takenoko">Nokotaro Takeda</a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=12531784">Takashi Shibuya</a></td>
|
||||
<td><a href="https://www.patreon.com/fujishan">fujishan</a></td>
|
||||
</tr></table>
|
||||
<table><tr>
|
||||
</tr><tr>
|
||||
</tr></table>
|
||||
|
||||
**Last updated:** Wed, 22 Aug 2018 05:25:06 UTC
|
||||
**Last updated:** Wed, 31 Oct 2018 23:21:06 UTC
|
||||
<!-- PATREON_END -->
|
||||
|
||||
:four_leaf_clover: Copyright
|
||||
|
||||
BIN
assets/about/drive.png
Normal file
BIN
assets/about/drive.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 110 KiB |
BIN
assets/about/post.png
Normal file
BIN
assets/about/post.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 344 KiB |
BIN
assets/about/reaction.png
Normal file
BIN
assets/about/reaction.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 24 KiB |
BIN
assets/about/ui.png
Normal file
BIN
assets/about/ui.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 125 KiB |
BIN
assets/ai-orig.png
Normal file
BIN
assets/ai-orig.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 256 KiB |
BIN
assets/ai.png
Normal file
BIN
assets/ai.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 243 KiB |
@@ -1,13 +0,0 @@
|
||||
const deleteUser = require('../built/models/user').deleteUser;
|
||||
|
||||
const args = process.argv.slice(2);
|
||||
|
||||
const userId = args[0];
|
||||
|
||||
console.log(`deleting ${userId}...`);
|
||||
|
||||
deleteUser(userId).then(() => {
|
||||
console.log('done');
|
||||
}, e => {
|
||||
console.error(e);
|
||||
});
|
||||
@@ -1,40 +0,0 @@
|
||||
const { default: User, deleteUser } = require('../built/models/user');
|
||||
const { default: zip } = require('@prezzemolo/zip')
|
||||
|
||||
const migrate = async (user) => {
|
||||
try {
|
||||
await deleteUser(user._id);
|
||||
return true;
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
async function main() {
|
||||
const count = await User.count({
|
||||
uri: /#/
|
||||
});
|
||||
|
||||
const dop = 1
|
||||
const idop = ((count - (count % dop)) / dop) + 1
|
||||
|
||||
return zip(
|
||||
1,
|
||||
async (time) => {
|
||||
console.log(`${time} / ${idop}`)
|
||||
const doc = await User.find({
|
||||
uri: /#/
|
||||
}, {
|
||||
limit: dop, skip: time * dop
|
||||
})
|
||||
return Promise.all(doc.map(migrate))
|
||||
},
|
||||
idop
|
||||
).then(a => {
|
||||
const rv = []
|
||||
a.forEach(e => rv.push(...e))
|
||||
return rv
|
||||
})
|
||||
}
|
||||
|
||||
main().then(console.dir).catch(console.error)
|
||||
@@ -1,23 +0,0 @@
|
||||
const mongo = require('mongodb');
|
||||
const User = require('../built/models/user').default;
|
||||
|
||||
const args = process.argv.slice(2);
|
||||
|
||||
const user = args[0];
|
||||
|
||||
const q = user.startsWith('@') ? {
|
||||
username: user.split('@')[1],
|
||||
host: user.split('@')[2] || null
|
||||
} : { _id: new mongo.ObjectID(user) };
|
||||
|
||||
console.log(`Mark as verfied ${user}...`);
|
||||
|
||||
User.update(q, {
|
||||
$set: {
|
||||
isVerified: true
|
||||
}
|
||||
}).then(() => {
|
||||
console.log(`Done ${user}`);
|
||||
}, e => {
|
||||
console.error(e);
|
||||
});
|
||||
144
cli/migration/8.0.0.js
Normal file
144
cli/migration/8.0.0.js
Normal file
@@ -0,0 +1,144 @@
|
||||
const { default: Stats } = require('../../built/models/stats');
|
||||
const { default: User } = require('../../built/models/user');
|
||||
const { default: Note } = require('../../built/models/note');
|
||||
const { default: DriveFile } = require('../../built/models/drive-file');
|
||||
|
||||
const now = new Date();
|
||||
const y = now.getFullYear();
|
||||
const m = now.getMonth();
|
||||
const d = now.getDate();
|
||||
const h = now.getHours();
|
||||
const date = new Date(y, m, d, h);
|
||||
|
||||
async function main() {
|
||||
await Stats.update({}, {
|
||||
$set: {
|
||||
span: 'day'
|
||||
}
|
||||
}, {
|
||||
multi: true
|
||||
});
|
||||
|
||||
const localUsersCount = await User.count({
|
||||
host: null
|
||||
});
|
||||
|
||||
const remoteUsersCount = await User.count({
|
||||
host: { $ne: null }
|
||||
});
|
||||
|
||||
const localNotesCount = await Note.count({
|
||||
'_user.host': null
|
||||
});
|
||||
|
||||
const remoteNotesCount = await Note.count({
|
||||
'_user.host': { $ne: null }
|
||||
});
|
||||
|
||||
const localDriveFilesCount = await DriveFile.count({
|
||||
'metadata._user.host': null
|
||||
});
|
||||
|
||||
const remoteDriveFilesCount = await DriveFile.count({
|
||||
'metadata._user.host': { $ne: null }
|
||||
});
|
||||
|
||||
const localDriveFilesSize = await DriveFile
|
||||
.aggregate([{
|
||||
$match: {
|
||||
'metadata._user.host': null,
|
||||
'metadata.deletedAt': { $exists: false }
|
||||
}
|
||||
}, {
|
||||
$project: {
|
||||
length: true
|
||||
}
|
||||
}, {
|
||||
$group: {
|
||||
_id: null,
|
||||
usage: { $sum: '$length' }
|
||||
}
|
||||
}])
|
||||
.then(aggregates => {
|
||||
if (aggregates.length > 0) {
|
||||
return aggregates[0].usage;
|
||||
}
|
||||
return 0;
|
||||
});
|
||||
|
||||
const remoteDriveFilesSize = await DriveFile
|
||||
.aggregate([{
|
||||
$match: {
|
||||
'metadata._user.host': { $ne: null },
|
||||
'metadata.deletedAt': { $exists: false }
|
||||
}
|
||||
}, {
|
||||
$project: {
|
||||
length: true
|
||||
}
|
||||
}, {
|
||||
$group: {
|
||||
_id: null,
|
||||
usage: { $sum: '$length' }
|
||||
}
|
||||
}])
|
||||
.then(aggregates => {
|
||||
if (aggregates.length > 0) {
|
||||
return aggregates[0].usage;
|
||||
}
|
||||
return 0;
|
||||
});
|
||||
|
||||
await Stats.insert({
|
||||
date: date,
|
||||
span: 'hour',
|
||||
users: {
|
||||
local: {
|
||||
total: localUsersCount,
|
||||
diff: 0
|
||||
},
|
||||
remote: {
|
||||
total: remoteUsersCount,
|
||||
diff: 0
|
||||
}
|
||||
},
|
||||
notes: {
|
||||
local: {
|
||||
total: localNotesCount,
|
||||
diff: 0,
|
||||
diffs: {
|
||||
normal: 0,
|
||||
reply: 0,
|
||||
renote: 0
|
||||
}
|
||||
},
|
||||
remote: {
|
||||
total: remoteNotesCount,
|
||||
diff: 0,
|
||||
diffs: {
|
||||
normal: 0,
|
||||
reply: 0,
|
||||
renote: 0
|
||||
}
|
||||
}
|
||||
},
|
||||
drive: {
|
||||
local: {
|
||||
totalCount: localDriveFilesCount,
|
||||
totalSize: localDriveFilesSize,
|
||||
diffCount: 0,
|
||||
diffSize: 0
|
||||
},
|
||||
remote: {
|
||||
totalCount: remoteDriveFilesCount,
|
||||
totalSize: remoteDriveFilesSize,
|
||||
diffCount: 0,
|
||||
diffSize: 0
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
console.log('done');
|
||||
}
|
||||
|
||||
main();
|
||||
@@ -1,42 +0,0 @@
|
||||
const { default: Note } = require('../built/models/note');
|
||||
const { default: Meta } = require('../built/models/meta');
|
||||
const { default: User } = require('../built/models/user');
|
||||
|
||||
async function main() {
|
||||
const meta = await Meta.findOne({});
|
||||
|
||||
const notesCount = await Note.count();
|
||||
|
||||
const usersCount = await User.count();
|
||||
|
||||
const originalNotesCount = await Note.count({
|
||||
'_user.host': null
|
||||
});
|
||||
|
||||
const originalUsersCount = await User.count({
|
||||
host: null
|
||||
});
|
||||
|
||||
const stats = {
|
||||
notesCount,
|
||||
usersCount,
|
||||
originalNotesCount,
|
||||
originalUsersCount
|
||||
};
|
||||
|
||||
if (meta) {
|
||||
await Meta.update({}, {
|
||||
$set: {
|
||||
stats
|
||||
}
|
||||
});
|
||||
} else {
|
||||
await Meta.insert({
|
||||
stats
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
main().then(() => {
|
||||
console.log('done');
|
||||
}).catch(console.error);
|
||||
52
docker-compose.yml
Normal file
52
docker-compose.yml
Normal file
@@ -0,0 +1,52 @@
|
||||
version: "3"
|
||||
|
||||
services:
|
||||
web:
|
||||
build: .
|
||||
restart: always
|
||||
links:
|
||||
- mongo
|
||||
# - redis
|
||||
# - es
|
||||
ports:
|
||||
- "127.0.0.1:3000:3000"
|
||||
networks:
|
||||
- internal_network
|
||||
- external_network
|
||||
|
||||
# redis:
|
||||
# restart: always
|
||||
# image: redis:4.0-alpine
|
||||
# networks:
|
||||
# - internal_network
|
||||
### Uncomment to enable Redis persistance
|
||||
## volumes:
|
||||
## - ./redis:/data
|
||||
|
||||
mongo:
|
||||
restart: always
|
||||
image: mongo:4.1
|
||||
networks:
|
||||
- internal_network
|
||||
environment:
|
||||
MONGO_INITDB_DATABASE: "misskey"
|
||||
volumes:
|
||||
- ./.config/mongo_initdb.js:/docker-entrypoint-initdb.d/mongo_initdb.js:ro
|
||||
### Uncomment to enable MongoDB persistance
|
||||
# - ./mongo:/data
|
||||
|
||||
# es:
|
||||
# restart: always
|
||||
# image: docker.elastic.co/elasticsearch/elasticsearch-oss:6.4.2
|
||||
# environment:
|
||||
# - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
|
||||
# networks:
|
||||
# - internal_network
|
||||
#### Uncomment to enable ES persistence
|
||||
## volumes:
|
||||
## - ./elasticsearch:/usr/share/elasticsearch/data
|
||||
|
||||
networks:
|
||||
internal_network:
|
||||
internal: true
|
||||
external_network:
|
||||
53
docs/docker.en.md
Normal file
53
docs/docker.en.md
Normal file
@@ -0,0 +1,53 @@
|
||||
Docker Guide
|
||||
================================================================
|
||||
|
||||
This guide describes how to install and setup Misskey with Docker.
|
||||
|
||||
[Japanese version also available - 日本語版もあります](./docker.ja.md)
|
||||
|
||||
----------------------------------------------------------------
|
||||
|
||||
*1.* Download Misskey
|
||||
----------------------------------------------------------------
|
||||
1. `git clone -b master git://github.com/syuilo/misskey.git` Clone Misskey repository's master branch.
|
||||
2. `cd misskey` Move to misskey directory.
|
||||
3. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` Checkout to the [latest release](https://github.com/syuilo/misskey/releases/latest) tag.
|
||||
|
||||
*2.* Make configuration files
|
||||
----------------------------------------------------------------
|
||||
1. `cp .config/example.yml .config/default.yml` Copy the `.config/example.yml` and rename it to `default.yml`.
|
||||
2. `cp .config/mongo_initdb_example.js .config/mongo_initdb.js` Copy the `.config/mongo_initdb_example.js` and rename it to `mongo_initdb.js`.
|
||||
2. Edit `default.yml` and `mongo_initdb.js`.
|
||||
|
||||
*3.* Configure Docker
|
||||
----------------------------------------------------------------
|
||||
Edit `docker-compose.yml`.
|
||||
|
||||
*4.* Build Misskey
|
||||
----------------------------------------------------------------
|
||||
Build misskey with the following:
|
||||
|
||||
`docker-compose build`
|
||||
|
||||
*5.* That is it.
|
||||
----------------------------------------------------------------
|
||||
Well done! Now, you have an environment that run to Misskey.
|
||||
|
||||
### Launch normally
|
||||
Just `docker-compose up -d`. GLHF!
|
||||
|
||||
### Way to Update to latest version of your Misskey
|
||||
1. `git fetch`
|
||||
2. `git stash`
|
||||
3. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)`
|
||||
4. `git stash pop`
|
||||
5. `docker-compose build`
|
||||
6. Check [ChangeLog](../CHANGELOG.md) for migration information
|
||||
7. `docker-compose stop && docker-compose up -d`
|
||||
|
||||
### Way to execute cli command:
|
||||
`docker-compose run --rm web node cli/mark-admin @example`
|
||||
|
||||
----------------------------------------------------------------
|
||||
|
||||
If you have any questions or troubles, feel free to contact us!
|
||||
54
docs/docker.ja.md
Normal file
54
docs/docker.ja.md
Normal file
@@ -0,0 +1,54 @@
|
||||
Dockerを使ったMisskey構築方法
|
||||
================================================================
|
||||
|
||||
このガイドはDockerを使ったMisskeyセットアップ方法について解説します。
|
||||
|
||||
[英語版もあります - English version also available](./docker.en.md)
|
||||
|
||||
----------------------------------------------------------------
|
||||
|
||||
*1.* Misskeyのダウンロード
|
||||
----------------------------------------------------------------
|
||||
1. `git clone -b master git://github.com/syuilo/misskey.git` masterブランチからMisskeyレポジトリをクローン
|
||||
2. `cd misskey` misskeyディレクトリに移動
|
||||
3. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` [最新のリリース](https://github.com/syuilo/misskey/releases/latest)を確認
|
||||
|
||||
*2.* 設定ファイルを作成する
|
||||
----------------------------------------------------------------
|
||||
1. `cp .config/example.yml .config/default.yml` `.config/example.yml`をコピーし名前を`default.yml`にする
|
||||
2. `cp .config/mongo_initdb_example.js .config/mongo_initdb.js` `.config/mongo_initdb_example.js`をコピーし名前を`mongo_initdb.js`にする
|
||||
3. `default.yml`と`mongo_initdb.js`を編集する
|
||||
|
||||
*3.* Dockerの設定
|
||||
----------------------------------------------------------------
|
||||
`docker-compose.yml`を編集してください。
|
||||
|
||||
*4.* Misskeyのビルド
|
||||
----------------------------------------------------------------
|
||||
次のコマンドでMisskeyをビルドしてください:
|
||||
|
||||
`docker-compose build`
|
||||
|
||||
*5.* 以上です!
|
||||
----------------------------------------------------------------
|
||||
お疲れ様でした。これでMisskeyを動かす準備は整いました。
|
||||
|
||||
### 通常起動
|
||||
`docker-compose up -d`するだけです。GLHF!
|
||||
|
||||
### Misskeyを最新バージョンにアップデートする方法:
|
||||
1. `git fetch`
|
||||
2. `git stash`
|
||||
3. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)`
|
||||
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 cli/mark-admin @example`
|
||||
|
||||
----------------------------------------------------------------
|
||||
|
||||
なにかお困りのことがありましたらお気軽にご連絡ください。
|
||||
@@ -24,11 +24,11 @@ Please install and setup these softwares:
|
||||
#### Dependencies :package:
|
||||
* **[Node.js](https://nodejs.org/en/)**
|
||||
* **[MongoDB](https://www.mongodb.com/)** >= 3.6
|
||||
* **[Redis](https://redis.io/)**
|
||||
|
||||
##### Optional
|
||||
* [Elasticsearch](https://www.elastic.co/) - used to provide searching feature instead of MongoDB
|
||||
|
||||
* [Redis](https://redis.io/)
|
||||
* Redis is optional, but we strongly recommended to install it
|
||||
* [Elasticsearch](https://www.elastic.co/) - required to enable the search feature
|
||||
|
||||
*3.* Setup MongoDB
|
||||
----------------------------------------------------------------
|
||||
@@ -54,7 +54,7 @@ Please visit https://www.google.com/recaptcha/intro/ and generate keys.
|
||||
|
||||
*(optional)* Generating VAPID keys
|
||||
----------------------------------------------------------------
|
||||
If you want to enable ServiceWroker, you need to generate VAPID keys:
|
||||
If you want to enable ServiceWorker, you need to generate VAPID keys:
|
||||
Unless you have set your global node_modules location elsewhere, you need to run this in root.
|
||||
|
||||
``` shell
|
||||
@@ -131,6 +131,7 @@ You can check if the service is running with `systemctl status misskey`.
|
||||
2. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)`
|
||||
3. `npm install`
|
||||
4. `npm run build`
|
||||
5. Check [ChangeLog](../CHANGELOG.md) for migration information
|
||||
|
||||
----------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ Misskeyサーバーの構築にご関心をお寄せいただきありがとう
|
||||
|
||||
*1.* Misskeyユーザーの作成
|
||||
----------------------------------------------------------------
|
||||
Misskeyのrootで実行しない方がよいため、代わりにユーザーを作成します。
|
||||
Misskeyはrootユーザーで実行しない方がよいため、代わりにユーザーを作成します。
|
||||
Debianの例:
|
||||
|
||||
```
|
||||
@@ -24,10 +24,17 @@ adduser --disabled-password --disabled-login misskey
|
||||
#### 依存関係 :package:
|
||||
* **[Node.js](https://nodejs.org/en/)**
|
||||
* **[MongoDB](https://www.mongodb.com/)** (3.6以上)
|
||||
* **[Redis](https://redis.io/)**
|
||||
|
||||
##### オプション
|
||||
* [Elasticsearch](https://www.elastic.co/) - 検索機能を向上させるために用います。
|
||||
* [Redis](https://redis.io/)
|
||||
* Redisはオプションですが、インストールすることを強く推奨します。
|
||||
* インストールしなくていいのは、あなたのインスタンスが自分専用のときだけとお考えください。
|
||||
* 具体的には、Redisをインストールしないと、次の事が出来なくなります:
|
||||
* Misskeyプロセスを複数起動しての負荷分散
|
||||
* レートリミット
|
||||
* Twitter連携
|
||||
* [Elasticsearch](https://www.elastic.co/)
|
||||
* 検索機能を有効にするためにはインストールが必要です。
|
||||
|
||||
*3.* MongoDBの設定
|
||||
----------------------------------------------------------------
|
||||
@@ -109,6 +116,7 @@ Restart=always
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
CentOSで1024以下のポートを使用してMisskeyを使用する場合は`ExecStart=/usr/bin/sudo /usr/bin/npm start`に変更する必要があります。
|
||||
|
||||
3. `systemctl daemon-reload ; systemctl enable misskey` systemdを再読み込みしmisskeyサービスを有効化
|
||||
4. `systemctl start misskey` misskeyサービスの起動
|
||||
@@ -120,6 +128,7 @@ WantedBy=multi-user.target
|
||||
2. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)`
|
||||
3. `npm install`
|
||||
4. `npm run build`
|
||||
5. [ChangeLog](../CHANGELOG.md)でマイグレーション情報を確認する
|
||||
|
||||
----------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -18,6 +18,10 @@ If you find an untranslated part on Misskey:
|
||||
4. Add the text property using the `foo` keyword below the path that you found or created in step 2. Make sure to type your text in quotation marks. Text should always be inside of quotes.
|
||||
- For example, in this case we add timeline: `timeline: "タイムライン"` to `locales/ja-JP.yml`.
|
||||
|
||||
5. And done!
|
||||
5. When you add text to the ja-JP file (of syuilo/misskey), it will automatically be applied to all other local language files within 24-48 hours. Translations added in ja-JP file should contain the original Japanese strings (example see step 4).
|
||||
|
||||
6. The new strings will automatically appear in the localized language files in the original Japanese text. After that, please go to [CrowdIn](https://crowdin.com/project/misskey) to do the localized translations in your language.
|
||||
|
||||
7. And done!
|
||||
|
||||
For more details, please refer to this [commit](https://github.com/syuilo/misskey/commit/10f6d5980fa7692ccb45fbc5f843458b69b7607c).
|
||||
|
||||
18
gulpfile.ts
18
gulpfile.ts
@@ -2,7 +2,6 @@
|
||||
* Gulp tasks
|
||||
*/
|
||||
|
||||
import * as fs from 'fs';
|
||||
import * as gulp from 'gulp';
|
||||
import * as gutil from 'gulp-util';
|
||||
import * as ts from 'gulp-typescript';
|
||||
@@ -59,7 +58,16 @@ gulp.task('build:copy:views', () =>
|
||||
gulp.src('./src/server/web/views/**/*').pipe(gulp.dest('./built/server/web/views'))
|
||||
);
|
||||
|
||||
gulp.task('build:copy', ['build:copy:views'], () =>
|
||||
// 互換性のため
|
||||
gulp.task('build:copy:lang', () =>
|
||||
gulp.src(['./built/client/assets/*.*-*.js'])
|
||||
.pipe(rename(path => {
|
||||
path.basename = path.basename.replace(/\-(.*)$/, '');
|
||||
}))
|
||||
.pipe(gulp.dest('./built/client/assets/'))
|
||||
);
|
||||
|
||||
gulp.task('build:copy', ['build:copy:views', 'build:copy:lang'], () =>
|
||||
gulp.src([
|
||||
'./build/Release/crypto_key.node',
|
||||
'./src/const.json',
|
||||
@@ -69,7 +77,7 @@ gulp.task('build:copy', ['build:copy:views'], () =>
|
||||
]).pipe(gulp.dest('./built/'))
|
||||
);
|
||||
|
||||
gulp.task('test', ['lint', 'mocha']);
|
||||
gulp.task('test', ['mocha']);
|
||||
|
||||
gulp.task('lint', () =>
|
||||
gulp.src('./src/**/*.ts')
|
||||
@@ -157,9 +165,7 @@ gulp.task('build:client:pug', [
|
||||
.pipe(pug({
|
||||
locals: {
|
||||
themeColor: constants.themeColor,
|
||||
facss: fa.dom.css(),
|
||||
//hljscss: fs.readFileSync('./node_modules/highlight.js/styles/default.css', 'utf8')
|
||||
hljscss: fs.readFileSync('./src/client/assets/code-highlight.css', 'utf8')
|
||||
facss: fa.dom.css()
|
||||
}
|
||||
}))
|
||||
.pipe(htmlmin({
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
# **Please DO NOT edit these files** except `ja-JP.yml`.
|
||||
# **DO NOT edit locale files** except `ja-JP.yml`.
|
||||
|
||||
If you want to...
|
||||
* i18n ... please see [Translation guide](../docs/translate.en.md).
|
||||
* l10n ... please visit https://crowdin.com/project/misskey
|
||||
When you add text to the ja-JP file (of syuilo/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.
|
||||
|
||||
@@ -6,12 +6,33 @@ common:
|
||||
misskey: "A ⭐ of fediverse"
|
||||
about-title: "A ⭐ of fediverse."
|
||||
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
||||
intro:
|
||||
title: "Misskeyって?"
|
||||
about: "Misskeyはオープンソースの<b>分散型マイクロブログSNS</b>です。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。"
|
||||
features: "特徴"
|
||||
rich-contents: "投稿"
|
||||
rich-contents-desc: "自分の考え、話題の出来事、皆と共有したいことについて発信してください。必要であれば、様々な構文を使って投稿を装飾したり、好きな画像、動画などのファイルやアンケートを添付することもできます。"
|
||||
reaction: "リアクション"
|
||||
reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。"
|
||||
ui: "インターフェース"
|
||||
ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。"
|
||||
drive: "ドライブ"
|
||||
drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんか?もしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんか?Misskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。"
|
||||
outro: "他にもMisskeyにしかない機能はまだまだあるので、ぜひあなた自身の目で確かめてください。Misskeyは分散型SNSなので、このインスタンスが気に入らなければ他のインスタンスを試すこともできます。それでは、GLHF!"
|
||||
adblock:
|
||||
detected: "広告ブロッカーを無効にしてください"
|
||||
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
||||
application-authorization: "アプリの連携"
|
||||
close: "閉じる"
|
||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||
BSoD:
|
||||
fatal-error: ":( 致命的な問題が発生しました。"
|
||||
update-browser-os: "お使いのブラウザ(またはOS)のバージョンを更新すると解決する可能性があります。"
|
||||
error-code: "エラーコード"
|
||||
browser-version: "ブラウザ バージョン"
|
||||
client-version: "クライアント バージョン"
|
||||
email-support: "問題が解決しない場合は、上記の情報をお書き添えの上 syuilotan@yahoo.co.jp までご連絡ください。"
|
||||
thanks: "Thank you for using Misskey."
|
||||
got-it: "わかった"
|
||||
customization-tips:
|
||||
title: "カスタマイズのヒント"
|
||||
@@ -41,6 +62,7 @@ common:
|
||||
years_ago: "{}年前"
|
||||
month-and-day: "{month}月 {day}日"
|
||||
trash: "ゴミ箱"
|
||||
drive: "ドライブ"
|
||||
weekday-short:
|
||||
sunday: "日"
|
||||
monday: "月"
|
||||
@@ -58,7 +80,7 @@ common:
|
||||
friday: "金曜日"
|
||||
saturday: "土曜日"
|
||||
reactions:
|
||||
like: "ええやん"
|
||||
like: "いいね"
|
||||
love: "しゅき"
|
||||
laugh: "笑"
|
||||
hmm: "ふぅ~む"
|
||||
@@ -68,6 +90,15 @@ common:
|
||||
confused: "こまこまのこまり"
|
||||
rip: "RIP"
|
||||
pudding: "Pudding"
|
||||
note-visibility:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
followers: "フォロワー"
|
||||
followers-desc: "自分のフォロワーにのみ公開"
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
note-placeholders:
|
||||
a: "今どうしてる?"
|
||||
b: "何かありましたか?"
|
||||
@@ -84,8 +115,21 @@ common:
|
||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
||||
verified-user: "公式アカウント"
|
||||
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
||||
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
||||
show-full-acct: "ユーザー名のホストを省略しない"
|
||||
reduce-motion: "UIの動きを減らす"
|
||||
this-setting-is-this-device-only: "このデバイスのみ"
|
||||
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
||||
is-remote-user: "このユーザー情報はコピーです。"
|
||||
is-remote-post: "この投稿情報はコピーです。"
|
||||
view-on-remote: "正確な情報を見る"
|
||||
error:
|
||||
title: '問題が発生しました'
|
||||
retry: 'やり直す'
|
||||
reversi:
|
||||
drawn: "引き分け"
|
||||
my-turn: "あなたのターンです"
|
||||
@@ -126,7 +170,10 @@ common:
|
||||
home: "ホーム"
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
hashtag: "ハッシュタグ"
|
||||
global: "グローバル"
|
||||
mentions: "あなた宛て"
|
||||
direct: "ダイレクト投稿"
|
||||
notifications: "通知"
|
||||
list: "リスト"
|
||||
swap-left: "左に移動"
|
||||
@@ -138,6 +185,7 @@ common:
|
||||
rename: "名前を変更"
|
||||
stack-left: "左に重ねる"
|
||||
pop-right: "右に出す"
|
||||
dev: "アプリの作成に失敗しました。再度お試しください。"
|
||||
auth/views/form.vue:
|
||||
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
|
||||
permission-ask: "このアプリは次の権限を要求しています:"
|
||||
@@ -229,6 +277,47 @@ common/views/components/connect-failed.troubleshooter.vue:
|
||||
success-desc: "正常に接続できるようです。ページを再度読み込みしてください。"
|
||||
flush: "キャッシュの削除"
|
||||
set-version: "バージョン指定"
|
||||
common/views/components/media-banner.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
common/views/components/theme.vue:
|
||||
light-theme: "非ダークモード時に使用するテーマ"
|
||||
dark-theme: "ダークモード時に使用するテーマ"
|
||||
light-themes: "明るいテーマ"
|
||||
dark-themes: "暗いテーマ"
|
||||
install-a-theme: "テーマのインストール"
|
||||
theme-code: "テーマコード"
|
||||
install: "インストール"
|
||||
installed: "「{}」をインストールしました"
|
||||
create-a-theme: "テーマの作成"
|
||||
save-created-theme: "テーマを保存"
|
||||
primary-color: "プライマリ カラー"
|
||||
secondary-color: "セカンダリ カラー"
|
||||
text-color: "文字色"
|
||||
base-theme: "ベーステーマ"
|
||||
base-theme-light: "Light"
|
||||
base-theme-dark: "Dark"
|
||||
theme-name: "テーマ名"
|
||||
preview-created-theme: "プレビュー"
|
||||
invalid-theme: "テーマが正しくありません。"
|
||||
already-installed: "既にそのテーマはインストールされています。"
|
||||
saved: "保存しました"
|
||||
manage-themes: "テーマの管理"
|
||||
builtin-themes: "標準テーマ"
|
||||
my-themes: "マイテーマ"
|
||||
installed-themes: "インストールされたテーマ"
|
||||
select-theme: "テーマを選択してください"
|
||||
uninstall: "アンインストール"
|
||||
uninstalled: "「{}」をアンインストールしました"
|
||||
author: "作者"
|
||||
desc: "説明"
|
||||
export: "エクスポート"
|
||||
import: "インポート"
|
||||
import-by-code: "またはコードをペースト"
|
||||
theme-name-required: "テーマ名は必須です。"
|
||||
common/views/components/cw-button.vue:
|
||||
hide: "隠す"
|
||||
show: "もっと見る"
|
||||
common/views/components/messaging.vue:
|
||||
search-user: "ユーザーを探す"
|
||||
you: "あなた"
|
||||
@@ -259,8 +348,12 @@ common/views/components/nav.vue:
|
||||
develop: "開発者"
|
||||
feedback: "フィードバック"
|
||||
common/views/components/note-menu.vue:
|
||||
detail: "詳細"
|
||||
copy-link: "リンクをコピー"
|
||||
favorite: "お気に入り"
|
||||
unfavorite: "お気に入り解除"
|
||||
pin: "ピン留め"
|
||||
unpin: "ピン留め解除"
|
||||
delete: "削除"
|
||||
delete-confirm: "この投稿を削除しますか?"
|
||||
remote: "投稿元で見る"
|
||||
@@ -336,6 +429,28 @@ common/views/components/visibility-chooser.vue:
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
common/views/components/trends.vue:
|
||||
count: "{}人が投稿"
|
||||
empty: "トレンドなし"
|
||||
common/views/components/profile-editor.vue:
|
||||
title: "プロフィール"
|
||||
name: "名前"
|
||||
account: "アカウント"
|
||||
location: "場所"
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
is-cat: "このアカウントはCatです"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-locked: "フォローを承認制にする"
|
||||
careful-bot: "Botからのフォローだけ承認制にする"
|
||||
advanced: "その他"
|
||||
privacy: "プライバシー"
|
||||
save: "保存"
|
||||
saved: "プロフィールを保存しました"
|
||||
uploading: "アップロード中"
|
||||
upload-failed: "アップロードに失敗しました"
|
||||
common/views/widgets/broadcast.vue:
|
||||
fetching: "確認中"
|
||||
no-broadcasts: "お知らせはありません"
|
||||
@@ -359,8 +474,6 @@ common/views/widgets/posts-monitor.vue:
|
||||
toggle: "表示を切り替え"
|
||||
common/views/widgets/hashtags.vue:
|
||||
title: "ハッシュタグ"
|
||||
count: "{}人が投稿"
|
||||
empty: "トレンドなし"
|
||||
common/views/widgets/server.vue:
|
||||
title: "サーバー情報"
|
||||
toggle: "表示を切り替え"
|
||||
@@ -398,6 +511,7 @@ common/views/pages/follow.vue:
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-processing: "フォロー処理中"
|
||||
follow-request: "フォロー申請"
|
||||
desktop:
|
||||
banner-crop-title: "バナーとして表示する部分を選択"
|
||||
@@ -410,6 +524,7 @@ desktop:
|
||||
uploading-avatar: "新しいアバターをアップロードしています"
|
||||
avatar-updated: "アバターを更新しました"
|
||||
choose-avatar: "アバターにする画像を選択"
|
||||
invalid-filetype: "この形式のファイルはサポートされていません"
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Black ... Total"
|
||||
notes: "Blue ... Notes"
|
||||
@@ -423,6 +538,31 @@ desktop/views/components/calendar.vue:
|
||||
prev: "前の月"
|
||||
next: "次の月"
|
||||
go: "クリックして時間遡行"
|
||||
desktop/views/components/charts.vue:
|
||||
title: "チャート"
|
||||
per-day: "1日ごと"
|
||||
per-hour: "1時間ごと"
|
||||
federation: "フェデレーション"
|
||||
notes: "投稿"
|
||||
users: "ユーザー"
|
||||
drive: "ドライブ"
|
||||
network: "ネットワーク"
|
||||
charts:
|
||||
federation-instances: "インスタンスの増減"
|
||||
federation-instances-total: "インスタンスの積算"
|
||||
notes: "投稿の増減 (統合)"
|
||||
local-notes: "投稿の増減 (ローカル)"
|
||||
remote-notes: "投稿の増減 (リモート)"
|
||||
notes-total: "投稿の積算"
|
||||
users: "ユーザーの増減"
|
||||
users-total: "ユーザーの積算"
|
||||
drive: "ドライブ使用量の増減"
|
||||
drive-total: "ドライブ使用量の積算"
|
||||
drive-files: "ドライブのファイル数の増減"
|
||||
drive-files-total: "ドライブのファイル数の積算"
|
||||
network-requests: "リクエスト"
|
||||
network-time: "応答時間"
|
||||
network-usage: "通信量"
|
||||
desktop/views/components/choose-file-from-drive-window.vue:
|
||||
choose-file: "ファイル選択中"
|
||||
upload: "PCからドライブにファイルをアップロード"
|
||||
@@ -439,7 +579,6 @@ desktop/views/components/crop-window.vue:
|
||||
ok: "決定"
|
||||
desktop/views/components/drive-window.vue:
|
||||
used: "使用中"
|
||||
drive: "ドライブ"
|
||||
desktop/views/components/drive.file.vue:
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
@@ -469,8 +608,6 @@ desktop/views/components/drive.folder.vue:
|
||||
rename: "名前を変更"
|
||||
rename-folder: "フォルダ名の変更"
|
||||
input-new-folder-name: "新しいフォルダ名を入力してください"
|
||||
desktop/views/components/drive.nav-folder.vue:
|
||||
drive: "ドライブ"
|
||||
desktop/views/components/drive.vue:
|
||||
search: "検索"
|
||||
load-more: "もっと読み込む"
|
||||
@@ -501,6 +638,7 @@ desktop/views/components/follow-button.vue:
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-processing: "フォロー処理中"
|
||||
follow-request: "フォロー申請"
|
||||
desktop/views/components/followers-window.vue:
|
||||
followers: "{} のフォロワー"
|
||||
@@ -537,7 +675,7 @@ desktop/views/components/note-detail.vue:
|
||||
location: "位置情報"
|
||||
renote: "Renote"
|
||||
add-reaction: "リアクション"
|
||||
desktop/views/components/notes.note.vue:
|
||||
desktop/views/components/note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
reply: "返信"
|
||||
renote: "Renote"
|
||||
@@ -545,8 +683,6 @@ desktop/views/components/notes.note.vue:
|
||||
detail: "詳細"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
hide: "隠す"
|
||||
see-more: "もっと見る"
|
||||
desktop/views/components/notes.vue:
|
||||
error: "読み込みに失敗しました。"
|
||||
retry: "リトライ"
|
||||
@@ -605,44 +741,56 @@ desktop/views/components/settings.vue:
|
||||
profile: "プロフィール"
|
||||
notification: "通知"
|
||||
apps: "アプリ"
|
||||
mute: "ミュート"
|
||||
drive: "ドライブ"
|
||||
mute-and-block: "ミュート/ブロック"
|
||||
blocking: "ブロック"
|
||||
security: "セキュリティ"
|
||||
signin: "サインイン履歴"
|
||||
password: "パスワード"
|
||||
2fa: "二段階認証"
|
||||
other: "その他"
|
||||
license: "ライセンス"
|
||||
theme: "テーマ"
|
||||
behaviour: "動作"
|
||||
fetch-on-scroll: "スクロールで自動読み込み"
|
||||
fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。"
|
||||
note-visibility: "投稿の公開範囲"
|
||||
default-note-visibility: "デフォルトの公開範囲"
|
||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||
auto-popout: "ウィンドウの自動ポップアウト"
|
||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
||||
advanced: "詳細設定"
|
||||
api-via-stream: "ストリームを経由したAPIリクエスト"
|
||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||
deck-nav: "デッキ内ナビゲーション"
|
||||
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
|
||||
deck-default: "デッキをデフォルトのUIにする"
|
||||
display: "デザインと表示"
|
||||
customize: "ホームをカスタマイズ"
|
||||
wallpaper: "壁紙"
|
||||
choose-wallpaper: "壁紙を選択"
|
||||
delete-wallpaper: "壁紙を削除"
|
||||
dark-mode: "ダークモード"
|
||||
use-shadow: "UIに影を使用"
|
||||
rounded-corners: "UIの角を丸める"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||
show-clock-on-header: "右上に時計を表示する"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
timeline: "タイムライン"
|
||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||
show-maps: "マップの自動展開"
|
||||
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
||||
deck-column-align: "デッキのカラムの位置"
|
||||
deck-column-align-center: "中央"
|
||||
deck-column-align-left: "左"
|
||||
sound: "サウンド"
|
||||
enable-sounds: "サウンドを有効にする"
|
||||
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
|
||||
volume: "ボリューム"
|
||||
test: "テスト"
|
||||
mobile: "モバイル"
|
||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||
language: "言語"
|
||||
pick-language: "言語を選択"
|
||||
recommended: "推奨"
|
||||
@@ -678,6 +826,10 @@ desktop/views/components/settings.vue:
|
||||
tools: "ツール"
|
||||
task-manager: "タスクマネージャ"
|
||||
third-parties: "サードパーティ"
|
||||
navbar-position: "ナビゲーションバーの位置"
|
||||
navbar-position-top: "上"
|
||||
navbar-position-left: "左"
|
||||
navbar-position-right: "右"
|
||||
desktop/views/components/settings.2fa.vue:
|
||||
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
||||
detail: "詳細..."
|
||||
@@ -696,20 +848,32 @@ desktop/views/components/settings.2fa.vue:
|
||||
success: "設定が完了しました!"
|
||||
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
||||
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
||||
desktop/views/components/settings.api.vue:
|
||||
common/views/components/api-settings.vue:
|
||||
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||
regenerate-token: "トークンを再生成"
|
||||
token: "Token:"
|
||||
enter-password: "パスワードを入力してください"
|
||||
console:
|
||||
title: 'APIコンソール'
|
||||
endpoint: 'エンドポイント'
|
||||
parameter: 'パラメータ'
|
||||
send: '送信'
|
||||
sending: '応答待ち'
|
||||
response: '結果'
|
||||
desktop/views/components/settings.apps.vue:
|
||||
no-apps: "連携しているアプリケーションはありません"
|
||||
desktop/views/components/settings.drive.vue:
|
||||
max: "中"
|
||||
common/views/components/drive-settings.vue:
|
||||
max: "容量"
|
||||
in-use: "使用中"
|
||||
desktop/views/components/settings.mute.vue:
|
||||
no-users: "ミュートしているユーザーはいません"
|
||||
stats: "統計"
|
||||
common/views/components/mute-and-block.vue:
|
||||
mute-and-block: "ミュートとブロック"
|
||||
mute: "ミュート"
|
||||
block: "ブロック"
|
||||
no-muted-users: "ミュートしているユーザーはいません"
|
||||
no-blocked-users: "ブロックしているユーザーはいません"
|
||||
desktop/views/components/settings.password.vue:
|
||||
reset: "パスワードを変更する"
|
||||
enter-current-password: "現在のパスワードを入力してください"
|
||||
@@ -717,20 +881,6 @@ desktop/views/components/settings.password.vue:
|
||||
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
||||
not-match: "新しいパスワードが一致しません"
|
||||
changed: "パスワードを変更しました"
|
||||
desktop/views/components/settings.profile.vue:
|
||||
avatar: "アイコン"
|
||||
choice-avatar: "画像を選択"
|
||||
name: "名前"
|
||||
location: "場所"
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
save: "保存"
|
||||
locked-account: "アカウントの保護"
|
||||
is-locked: "投稿を非公開にする"
|
||||
other: "その他"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
profile-updated: "プロフィールを更新しました"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
@@ -743,17 +893,23 @@ desktop/views/components/timeline.vue:
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
mentions: "あなた宛て"
|
||||
messages: "メッセージ"
|
||||
list: "リスト"
|
||||
hashtag: "ハッシュタグ"
|
||||
add-tag-timeline: "ハッシュタグを追加"
|
||||
add-list: "リストを追加"
|
||||
list-name: "リスト名"
|
||||
desktop/views/components/ui.header.vue:
|
||||
welcome-back: "おかえりなさい、"
|
||||
adjective: "さん"
|
||||
desktop/views/components/ui.header.account.vue:
|
||||
profile: "プロフィール"
|
||||
drive: "ドライブ"
|
||||
favorites: "お気に入り"
|
||||
lists: "リスト"
|
||||
follow-requests: "フォロー申請"
|
||||
customize: "ホームのカスタマイズ"
|
||||
admin: "管理"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
dark: "闇に飲まれる"
|
||||
@@ -792,16 +948,20 @@ desktop/views/components/window.vue:
|
||||
close: "閉じる"
|
||||
desktop/views/pages/admin/admin.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
drive: "ドライブ"
|
||||
users: "ユーザー"
|
||||
update: "更新"
|
||||
announcements: "お知らせ"
|
||||
hashtags: "ハッシュタグ"
|
||||
desktop/views/pages/admin/admin.dashboard.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
all-users: "全てのユーザー"
|
||||
original-users: "このインスタンスのユーザー"
|
||||
all-notes: "全てのノート"
|
||||
original-notes: "このインスタンスのノート"
|
||||
all-notes: "全ての投稿"
|
||||
original-notes: "このインスタンスの投稿"
|
||||
invite: "招待"
|
||||
banner-url: "Banner URL"
|
||||
disableRegistration: "Disable new user registration"
|
||||
disableLocalTimeline: "Disable the local timeline"
|
||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||
suspend-user: "ユーザーの凍結"
|
||||
suspend: "凍結"
|
||||
@@ -818,26 +978,28 @@ desktop/views/pages/admin/admin.unverify-user.vue:
|
||||
unverify-user: "ユーザーの公式アカウント解除"
|
||||
unverify: "公式アカウントを解除する"
|
||||
unverified: "公式アカウントを解除しました"
|
||||
desktop/views/pages/admin/admin.notes-chart.vue:
|
||||
title: "投稿"
|
||||
local: "ローカル"
|
||||
remote: "リモート"
|
||||
desktop/views/pages/admin/admin.users-chart.vue:
|
||||
title: "ユーザー"
|
||||
local: "ローカル"
|
||||
remote: "リモート"
|
||||
desktop/views/pages/admin/admin.drive-chart.vue:
|
||||
title: "ドライブ"
|
||||
local: "ローカル"
|
||||
remote: "リモート"
|
||||
desktop/views/pages/admin/admin.announcements.vue:
|
||||
announcements: "お知らせ"
|
||||
desktop/views/pages/admin/admin.hashtags.vue:
|
||||
hided-tags: "Hidden Tags"
|
||||
desktop/views/pages/deck/deck.tl-column.vue:
|
||||
is-media-only: "メディア投稿のみ"
|
||||
is-media-view: "メディアビュー"
|
||||
edit: "オプション"
|
||||
desktop/views/pages/deck/deck.note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
desktop/views/pages/deck/deck.user-column.vue:
|
||||
posts: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
images: "画像"
|
||||
activity: "アクティビティ"
|
||||
timeline: "タイムライン"
|
||||
pinned-notes: "ピン留めされた投稿"
|
||||
push-to-a-list: "リストに追加"
|
||||
desktop/views/pages/stats/stats.vue:
|
||||
all-users: "全てのユーザー"
|
||||
original-users: "このインスタンスのユーザー"
|
||||
all-notes: "全ての投稿"
|
||||
original-notes: "このインスタンスの投稿"
|
||||
desktop/views/pages/welcome.vue:
|
||||
about: "詳しく..."
|
||||
gotit: "わかった"
|
||||
@@ -846,7 +1008,10 @@ desktop/views/pages/welcome.vue:
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
announcements: "お知らせ"
|
||||
photos: "最近の画像"
|
||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||
info: "情報"
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Misskey Drive"
|
||||
desktop/views/pages/favorites.vue:
|
||||
@@ -882,9 +1047,6 @@ desktop/views/pages/user/user.friends.vue:
|
||||
no-users: "よく話すユーザーはいません"
|
||||
desktop/views/pages/user/user.vue:
|
||||
is-suspended: "このユーザーは凍結されています。"
|
||||
is-remote: "このユーザーはリモートユーザーです。"
|
||||
view-remote: "正確な情報を見る"
|
||||
desktop/views/pages/user/user.home.vue:
|
||||
last-used-at: "最終アクセス"
|
||||
desktop/views/pages/user/user.photos.vue:
|
||||
title: "フォト"
|
||||
@@ -898,6 +1060,9 @@ desktop/views/pages/user/user.profile.vue:
|
||||
mute: "ミュートする"
|
||||
muted: "ミュートしています"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロックする"
|
||||
unblock: "ブロック解除"
|
||||
block-confirm: "このユーザーをブロックしますか?"
|
||||
push-to-a-list: "リストに追加"
|
||||
list-pushed: "{user}を{list}に追加しました。"
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
@@ -905,6 +1070,10 @@ desktop/views/pages/user/user.header.vue:
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
is-bot: "このアカウントはBotです"
|
||||
years-old: "歳"
|
||||
year: "年"
|
||||
month: "月"
|
||||
day: "日"
|
||||
desktop/views/pages/user/user.timeline.vue:
|
||||
default: "投稿"
|
||||
with-replies: "投稿と返信"
|
||||
@@ -934,7 +1103,6 @@ desktop/views/widgets/users.vue:
|
||||
refresh: "他を見る"
|
||||
no-one: "いません!"
|
||||
mobile/views/components/drive.vue:
|
||||
drive: "ドライブ"
|
||||
used: "使用中"
|
||||
folder-count: "フォルダ"
|
||||
count-separator: "、"
|
||||
@@ -964,6 +1132,8 @@ mobile/views/components/drive.file-detail.vue:
|
||||
hash: "ハッシュ (md5)"
|
||||
exif: "EXIF"
|
||||
nsfw: "閲覧注意"
|
||||
mark-as-sensitive: "閲覧注意に設定"
|
||||
unmark-as-sensitive: "閲覧注意を解除"
|
||||
mobile/views/components/media-image.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
@@ -974,6 +1144,7 @@ mobile/views/components/follow-button.vue:
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-processing: "フォロー処理中"
|
||||
follow-request: "フォロー申請"
|
||||
mobile/views/components/friends-maker.vue:
|
||||
title: "気になるユーザーをフォロー"
|
||||
@@ -983,8 +1154,6 @@ mobile/views/components/friends-maker.vue:
|
||||
close: "閉じる"
|
||||
mobile/views/components/note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
more: "もっと見る"
|
||||
less: "隠す"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
location: "位置情報"
|
||||
@@ -1037,13 +1206,13 @@ mobile/views/components/ui.nav.vue:
|
||||
messaging: "メッセージ"
|
||||
follow-requests: "フォロー申請"
|
||||
search: "検索"
|
||||
drive: "ドライブ"
|
||||
favorites: "お気に入り"
|
||||
user-lists: "リスト"
|
||||
widgets: "ウィジェット"
|
||||
game: "ゲーム"
|
||||
darkmode: "ダークモード"
|
||||
settings: "設定"
|
||||
admin: "管理"
|
||||
about: "Misskeyについて"
|
||||
mobile/views/components/user-timeline.vue:
|
||||
no-notes: "このユーザーは投稿していないようです。"
|
||||
@@ -1059,7 +1228,6 @@ mobile/views/pages/user-lists.vue:
|
||||
title: "リスト"
|
||||
enter-list-name: "リスト名を入力してください"
|
||||
mobile/views/pages/drive.vue:
|
||||
drive: "ドライブ"
|
||||
more: "もっと見る"
|
||||
mobile/views/pages/signup.vue:
|
||||
lets-start: "📦 始めましょう"
|
||||
@@ -1072,6 +1240,8 @@ mobile/views/pages/home.vue:
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
mentions: "あなた宛て"
|
||||
messages: "メッセージ"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
mobile/views/pages/welcome.vue:
|
||||
@@ -1102,20 +1272,6 @@ mobile/views/pages/notifications.vue:
|
||||
read-all: "すべての通知を既読にしますか?"
|
||||
mobile/views/pages/games/reversi.vue:
|
||||
reversi: "リバーシ"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
name: "名前"
|
||||
account: "アカウント"
|
||||
location: "場所"
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
is-cat: "このアカウントはCatです"
|
||||
save: "保存"
|
||||
saved: "プロフィールを保存しました"
|
||||
uploading: "アップロード中"
|
||||
upload-failed: "アップロードに失敗しました"
|
||||
mobile/views/pages/search.vue:
|
||||
search: "検索"
|
||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||
@@ -1133,6 +1289,7 @@ mobile/views/pages/settings.vue:
|
||||
dark-mode: "ダークモード"
|
||||
i-am-under-limited-internet: "私は通信を制限されている"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
timeline: "タイムライン"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||
@@ -1141,8 +1298,15 @@ mobile/views/pages/settings.vue:
|
||||
post-style: "投稿の表示スタイル"
|
||||
post-style-standard: "標準"
|
||||
post-style-smart: "スマート"
|
||||
notification-position: "通知の表示"
|
||||
notification-position-bottom: "下"
|
||||
notification-position-top: "上"
|
||||
theme: "テーマ"
|
||||
behavior: "動作"
|
||||
fetch-on-scroll: "スクロールで自動読み込み"
|
||||
note-visibility: "投稿の公開範囲"
|
||||
default-note-visibility: "デフォルトの公開範囲"
|
||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||
load-raw-images: "添付された画像を高画質で表示する"
|
||||
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||
@@ -1161,6 +1325,9 @@ mobile/views/pages/settings.vue:
|
||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
sound: "サウンド"
|
||||
enable-sounds: "サウンドを有効にする"
|
||||
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
|
||||
mobile/views/pages/user.vue:
|
||||
follows-you: "フォローされています"
|
||||
following: "フォロー"
|
||||
@@ -1170,8 +1337,10 @@ mobile/views/pages/user.vue:
|
||||
timeline: "タイムライン"
|
||||
media: "メディア"
|
||||
is-suspended: "このユーザーは凍結されています。"
|
||||
is-remote: "このユーザーはリモートユーザーです。"
|
||||
view-remote: "正確な情報を見る"
|
||||
mute: "ミュート"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロック"
|
||||
unblock: "ブロック解除"
|
||||
mobile/views/pages/user/home.vue:
|
||||
recent-notes: "最近の投稿"
|
||||
images: "画像"
|
||||
@@ -1217,3 +1386,29 @@ docs:
|
||||
description: "説明"
|
||||
dev/views/index.vue:
|
||||
manage-apps: "アプリの管理"
|
||||
dev/views/apps.vue:
|
||||
manage-apps: "アプリを管理"
|
||||
create-app: "アプリ作成"
|
||||
app-missing: "アプリなし"
|
||||
dev/views/new-app.vue:
|
||||
create-app: "アプリケーションの作成"
|
||||
app-name: "アプリケーション名"
|
||||
app-name-desc: "あなたのアプリの名称。"
|
||||
app-name-ex: "ex) Misskey for iOS"
|
||||
app-overview: "アプリの概要"
|
||||
app-desc: "あなたのアプリの簡単な説明や紹介。"
|
||||
app-desc-ex: "ex) Misskey iOSクライアント。"
|
||||
callback-url: "コールバックURL (オプション)"
|
||||
callback-url-desc: "ユーザーが認証フォームで認証した際にリダイレクトするURLを設定できます。"
|
||||
authority: "権限"
|
||||
authority-desc: "ここで要求した機能だけがAPIからアクセスできます。"
|
||||
authority-warning: "アプリ作成後も変更できますが、新たな権限を付与する場合、その時点で関連付けられているユーザーキーはすべて無効になります。"
|
||||
account-read: "アカウントの情報を見る。"
|
||||
account-write: "アカウントの情報を操作する。"
|
||||
note-write: "投稿する。"
|
||||
reaction-write: "リアクションしたりリアクションをキャンセルする。"
|
||||
following-write: "フォローしたりフォロー解除する。"
|
||||
drive-read: "ドライブを見る。"
|
||||
drive-write: "ドライブを操作する。"
|
||||
notification-read: "通知を見る。"
|
||||
notification-write: "通知を操作する。"
|
||||
|
||||
@@ -3,31 +3,52 @@ meta:
|
||||
lang: "Deutsch"
|
||||
divider: ""
|
||||
common:
|
||||
misskey: "A ⭐ of fediverse"
|
||||
about-title: "A ⭐ of fediverse."
|
||||
misskey: "Ein ⭐ des Fediversums"
|
||||
about-title: "Ein ⭐ des Fediversums."
|
||||
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
||||
intro:
|
||||
title: "Was ist Misskey?"
|
||||
about: "Misskeyはオープンソースの<b>分散型マイクロブログSNS</b>です。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。"
|
||||
features: "Funktionen"
|
||||
rich-contents: "Notizen"
|
||||
rich-contents-desc: "自分の考え、話題の出来事、皆と共有したいことについて発信してください。必要であれば、様々な構文を使って投稿を装飾したり、好きな画像、動画などのファイルやアンケートを添付することもできます。"
|
||||
reaction: "Reaktionen"
|
||||
reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。"
|
||||
ui: "Benutzeroberfläche"
|
||||
ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。"
|
||||
drive: "Drive"
|
||||
drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんか?もしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんか?Misskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。"
|
||||
outro: "他にもMisskeyにしかない機能はまだまだあるので、ぜひあなた自身の目で確かめてください。Misskeyは分散型SNSなので、このインスタンスが気に入らなければ他のインスタンスを試すこともできます。それでは、GLHF!"
|
||||
adblock:
|
||||
detected: "広告ブロッカーを無効にしてください"
|
||||
detected: "Bitte deaktiviere den Werbeblocker."
|
||||
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
||||
application-authorization: "アプリの連携"
|
||||
close: "閉じる"
|
||||
application-authorization: "Autorisierte Anwendungen"
|
||||
close: "Schließen"
|
||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||
got-it: "わかった"
|
||||
BSoD:
|
||||
fatal-error: "Ein schwerwiegender Fehler ist aufgetreten :("
|
||||
update-browser-os: "お使いのブラウザ(またはOS)のバージョンを更新すると解決する可能性があります。"
|
||||
error-code: "Fehlercode"
|
||||
browser-version: "Browserversion"
|
||||
client-version: "Clientversion"
|
||||
email-support: "問題が解決しない場合は、上記の情報をお書き添えの上 syuilotan@yahoo.co.jp までご連絡ください。"
|
||||
thanks: "Vielen Dank dass du Misskey verwendest."
|
||||
got-it: "Verstanden!"
|
||||
customization-tips:
|
||||
title: "カスタマイズのヒント"
|
||||
title: "Anpassung-Tipps"
|
||||
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
|
||||
paragraph2: "一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。"
|
||||
paragraph3: "ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。"
|
||||
paragraph4: "カスタマイズを終了するには、右上の「完了」をクリックします。"
|
||||
gotit: "Got it!"
|
||||
gotit: "Verstanden!"
|
||||
notification:
|
||||
file-uploaded: "ファイルがアップロードされました"
|
||||
message-from: "{}さんからメッセージ:"
|
||||
file-uploaded: "Datei hochgeladen!"
|
||||
message-from: "Nachricht von {}:"
|
||||
reversi-invited: "対局への招待があります"
|
||||
reversi-invited-by: "{}さんから"
|
||||
notified-by: "{}さんから"
|
||||
reply-from: "{}さんから返信:"
|
||||
quoted-by: "{}さんが引用:"
|
||||
reversi-invited-by: "Eingeladen von {}:"
|
||||
notified-by: "Benachrichtigt von {}:"
|
||||
reply-from: "Antwort von {}:"
|
||||
quoted-by: "Zitiert von {}:"
|
||||
time:
|
||||
unknown: "Unbekannt"
|
||||
future: "Zukunft"
|
||||
@@ -39,8 +60,9 @@ common:
|
||||
weeks_ago: "vor {0} Woche{0:n}"
|
||||
months_ago: "vor {0} Monat{0:en}"
|
||||
years_ago: "vor {} Jahr{0:en}"
|
||||
month-and-day: "{month}月 {day}日"
|
||||
trash: "ゴミ箱"
|
||||
month-and-day: "{day}/{month}"
|
||||
trash: "Papierkorb"
|
||||
drive: "ドライブ"
|
||||
weekday-short:
|
||||
sunday: "So"
|
||||
monday: "Mo"
|
||||
@@ -50,15 +72,15 @@ common:
|
||||
friday: "Fr"
|
||||
saturday: "Sa"
|
||||
weekday:
|
||||
sunday: "日曜日"
|
||||
monday: "月曜日"
|
||||
tuesday: "火曜日"
|
||||
wednesday: "水曜日"
|
||||
thursday: "木曜日"
|
||||
friday: "金曜日"
|
||||
saturday: "土曜日"
|
||||
sunday: "Sonntag"
|
||||
monday: "Montag"
|
||||
tuesday: "Dienstag"
|
||||
wednesday: "Mittwoch"
|
||||
thursday: "Donnerstag"
|
||||
friday: "Freitag"
|
||||
saturday: "Samstag"
|
||||
reactions:
|
||||
like: "ええやん"
|
||||
like: "Gefällt mir"
|
||||
love: "Lieben"
|
||||
laugh: "Lachen"
|
||||
hmm: "Hmm...?"
|
||||
@@ -68,6 +90,15 @@ common:
|
||||
confused: "Verwirrt"
|
||||
rip: "RIP"
|
||||
pudding: "Pudding"
|
||||
note-visibility:
|
||||
public: "Öffentlich"
|
||||
home: "Startseite"
|
||||
home-desc: "Nur auf die Startseite posten"
|
||||
followers: "Abonnenten"
|
||||
followers-desc: "Nur für diejenigen sichtbar, die dir folgen"
|
||||
specified: "Direkt"
|
||||
specified-desc: "Nur für bestimmte Benutzer posten"
|
||||
private: "Privat"
|
||||
note-placeholders:
|
||||
a: "Was machst du gerade?"
|
||||
b: "Was ist so passiert?"
|
||||
@@ -75,27 +106,40 @@ common:
|
||||
d: "Willst du etwas sagen?"
|
||||
e: "Schreib hier etwas!"
|
||||
f: "Warte darauf, das du schreibst."
|
||||
search: "検索"
|
||||
search: "Suche"
|
||||
delete: "Löschen"
|
||||
loading: "Laden"
|
||||
ok: "OK"
|
||||
update-available-title: "更新があります"
|
||||
update-available-title: "Aktualisierung verfügbar"
|
||||
update-available: "Eine neue Version von Misskey ist verfügbar ({newer}, aktuell ist {current}). Lade die Seite neu um die aktuelle Version zu laden"
|
||||
my-token-regenerated: "Dein Token wurde generiert. Du wirst jetzt abgemeldet."
|
||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||
i-like-sushi: "Ich bevorzuge Sushi anstelle von Pudding"
|
||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||
verified-user: "公式アカウント"
|
||||
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
||||
verified-user: "Verifizierter Benutzer"
|
||||
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
||||
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
||||
show-full-acct: "ユーザー名のホストを省略しない"
|
||||
reduce-motion: "Animationen der Benutzeroberfläche reduzieren"
|
||||
this-setting-is-this-device-only: "Nur auf diesem Gerät"
|
||||
do-not-use-in-production: 'Dies ist eine Entwicklungsversion. Nicht in einer Produktionsumgebung verwenden.'
|
||||
is-remote-user: "このユーザー情報はコピーです。"
|
||||
is-remote-post: "この投稿情報はコピーです。"
|
||||
view-on-remote: "正確な情報を見る"
|
||||
error:
|
||||
title: '問題が発生しました'
|
||||
retry: 'Erneut versuchen'
|
||||
reversi:
|
||||
drawn: "引き分け"
|
||||
my-turn: "あなたのターンです"
|
||||
opponent-turn: "相手のターンです"
|
||||
turn-of: "{}のターンです"
|
||||
past-turn-of: "{}のターン"
|
||||
won: "{}の勝ち"
|
||||
black: "黒"
|
||||
white: "白"
|
||||
total: "合計"
|
||||
drawn: "Unentschieden"
|
||||
my-turn: "Du bist am Zug"
|
||||
opponent-turn: "Dein Gegner ist an der Reihe"
|
||||
turn-of: "{} ist am Zug"
|
||||
past-turn-of: "Zug von {}"
|
||||
won: "{} hat gewonnen!"
|
||||
black: "Schwarz"
|
||||
white: "Weiß"
|
||||
total: "Gesamt"
|
||||
this-turn: "{}ターン目"
|
||||
widgets:
|
||||
analog-clock: "Analoge Uhr"
|
||||
@@ -113,20 +157,23 @@ common:
|
||||
broadcast: "ブロードキャスト"
|
||||
notifications: "Benachrichtigungen"
|
||||
users: "Empfohlene Benutzer"
|
||||
polls: "アンケート"
|
||||
polls: "Umfrage"
|
||||
post-form: "Beitragsform"
|
||||
messaging: "Nachrichten"
|
||||
server: "Server-Info"
|
||||
donation: "Spenden"
|
||||
nav: "Navigation"
|
||||
tips: "Tipps"
|
||||
hashtags: "ハッシュタグ"
|
||||
hashtags: "Hashtags"
|
||||
deck:
|
||||
widgets: "Widget hinzufügen:"
|
||||
home: "Startseite"
|
||||
local: "Lokal"
|
||||
hybrid: "ソーシャル"
|
||||
hybrid: "Sozial"
|
||||
hashtag: "Hashtag"
|
||||
global: "Global"
|
||||
mentions: "Erwähnungen"
|
||||
direct: "Direktnachrichten"
|
||||
notifications: "Mitteilungen"
|
||||
list: "Listen"
|
||||
swap-left: "Nach links"
|
||||
@@ -137,73 +184,74 @@ common:
|
||||
add-column: "Eine Spalte hinzufügen"
|
||||
rename: "Umbenennen"
|
||||
stack-left: "Nach links schichten"
|
||||
pop-right: "右に出す"
|
||||
pop-right: "Rechts andocken"
|
||||
dev: "Fehler beim Erstellen der Applikation. Bitte versuche es erneut."
|
||||
auth/views/form.vue:
|
||||
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
|
||||
permission-ask: "このアプリは次の権限を要求しています:"
|
||||
account-read: "アカウントの情報を見る。"
|
||||
account-write: "アカウントの情報を操作する。"
|
||||
note-write: "投稿する。"
|
||||
note-write: "Senden."
|
||||
like-write: "いいねしたりいいね解除する。"
|
||||
following-write: "フォローしたりフォロー解除する。"
|
||||
drive-read: "ドライブを見る。"
|
||||
drive-write: "ドライブを操作する。"
|
||||
notification-read: "通知を見る。"
|
||||
notification-write: "通知を操作する。"
|
||||
cancel: "キャンセル"
|
||||
accept: "アクセスを許可"
|
||||
notification-write: "Benachrichtigungen verwalten."
|
||||
cancel: "Abbrechen"
|
||||
accept: "Zugriff erlauben."
|
||||
auth/views/index.vue:
|
||||
loading: "読み込み中"
|
||||
denied: "アプリケーションの連携をキャンセルしました。"
|
||||
loading: "Lädt"
|
||||
denied: "Autorisierung der Anwendung wurde verweigert."
|
||||
denied-paragraph: "このアプリがあなたのアカウントにアクセスすることはありません。"
|
||||
already-authorized: "このアプリは既に連携済みです"
|
||||
allowed: "アプリケーションの連携を許可しました"
|
||||
already-authorized: "Diese Anwendung ist bereits autorisiert."
|
||||
allowed: "Autorisierung der Anwendung wurde erlaubt."
|
||||
callback-url: "アプリケーションに戻っています"
|
||||
please-go-back: "アプリケーションに戻って、やっていってください。"
|
||||
error: "セッションが存在しません。"
|
||||
sign-in: "サインインしてください"
|
||||
please-go-back: "Bitte gehe zurück zur Anwendung."
|
||||
error: "Sitzung ist nicht vorhanden."
|
||||
sign-in: "Bitte melde dich an."
|
||||
common/views/components/games/reversi/reversi.vue:
|
||||
matching:
|
||||
waiting-for: "{}を待っています"
|
||||
cancel: "キャンセル"
|
||||
waiting-for: "Warten auf {}"
|
||||
cancel: "Abbrechen"
|
||||
common/views/components/games/reversi/reversi.game.vue:
|
||||
surrender: "投了"
|
||||
surrender: "Aufgeben"
|
||||
surrendered: "投了により"
|
||||
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||
looped-map: "ループマップ"
|
||||
can-put-everywhere: "どこでも置けるモード"
|
||||
common/views/components/games/reversi/reversi.index.vue:
|
||||
title: "Misskey Reversi"
|
||||
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
|
||||
invite: "招待"
|
||||
rule: "遊び方"
|
||||
sub-title: "Spiele Reversi mit deinen Freunden!"
|
||||
invite: "Einladen"
|
||||
rule: "Spielanleitung"
|
||||
rule-desc: "リバーシは、相手と交互に石をボードに置いて、相手の石を挟んで自分の色に変えてゆき、最終的に残った石が多い方が勝ちというボードゲームです。"
|
||||
mode-invite: "招待"
|
||||
mode-invite: "Einladen"
|
||||
mode-invite-desc: "指定したユーザーと対戦するモードです。"
|
||||
invitations: "対局の招待があります!"
|
||||
my-games: "自分の対局"
|
||||
all-games: "みんなの対局"
|
||||
enter-username: "ユーザー名を入力してください"
|
||||
all-games: "Alle Spiele"
|
||||
enter-username: "Bitte gib einen Benutzernamen ein"
|
||||
game-state:
|
||||
ended: "終了"
|
||||
ended: "Fertig"
|
||||
playing: "進行中"
|
||||
common/views/components/games/reversi/reversi.room.vue:
|
||||
settings-of-the-game: "ゲームの設定"
|
||||
choose-map: "マップを選択"
|
||||
random: "ランダム"
|
||||
black-or-white: "先手/後手"
|
||||
black-is: "{}が黒"
|
||||
rules: "ルール"
|
||||
settings-of-the-game: "Spieleinstellungen"
|
||||
choose-map: "Wähle eine Karte"
|
||||
random: "Zufällige Auswahl"
|
||||
black-or-white: "Schwarz/Weiß"
|
||||
black-is: "Schwarz ist {}"
|
||||
rules: "Regeln"
|
||||
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||
looped-map: "ループマップ"
|
||||
can-put-everywhere: "どこでも置けるモード"
|
||||
settings-of-the-bot: "Botの設定"
|
||||
this-game-is-started-soon: "ゲームは数秒後に開始されます"
|
||||
waiting-for-other: "相手の準備が完了するのを待っています"
|
||||
waiting-for-other: "Warte auf den Gegner"
|
||||
waiting-for-me: "あなたの準備が完了するのを待っています"
|
||||
waiting-for-both: "準備中"
|
||||
cancel: "キャンセル"
|
||||
ready: "準備完了"
|
||||
cancel: "Abbrechen"
|
||||
ready: "Bereit"
|
||||
cancel-ready: "準備続行"
|
||||
common/views/components/connect-failed.vue:
|
||||
title: "Verbindung zum Server ist fehlgeschlagen"
|
||||
@@ -229,6 +277,47 @@ common/views/components/connect-failed.troubleshooter.vue:
|
||||
success-desc: "Die Verbindung scheint zu funktionieren. Bitte lade die Seite neu."
|
||||
flush: "Cache leeren"
|
||||
set-version: "Version angeben"
|
||||
common/views/components/media-banner.vue:
|
||||
sensitive: "Dieser Inhalt ist NSFW"
|
||||
click-to-show: "Klicke zum den Inhalt anzusehen"
|
||||
common/views/components/theme.vue:
|
||||
light-theme: "Thema"
|
||||
dark-theme: "Thema während des Nachtmodus"
|
||||
light-themes: "Helles Thema"
|
||||
dark-themes: "Dunkles Thema"
|
||||
install-a-theme: "テーマのインストール"
|
||||
theme-code: "テーマコード"
|
||||
install: "Anwenden"
|
||||
installed: "\"{}\" wurde installiert"
|
||||
create-a-theme: "Thema erstellen"
|
||||
save-created-theme: "Thema speichern"
|
||||
primary-color: "Primäre Farbe"
|
||||
secondary-color: "Sekundäre Farbe"
|
||||
text-color: "Textfarbe"
|
||||
base-theme: "Basisthema"
|
||||
base-theme-light: "Hell"
|
||||
base-theme-dark: "Dunkel"
|
||||
theme-name: "Name des Themas"
|
||||
preview-created-theme: "Vorschau"
|
||||
invalid-theme: "Thema ist ungültig"
|
||||
already-installed: "Thema ist bereits installiert"
|
||||
saved: "保存しました"
|
||||
manage-themes: "テーマの管理"
|
||||
builtin-themes: "標準テーマ"
|
||||
my-themes: "マイテーマ"
|
||||
installed-themes: "インストールされたテーマ"
|
||||
select-theme: "テーマを選択してください"
|
||||
uninstall: "アンインストール"
|
||||
uninstalled: "「{}」をアンインストールしました"
|
||||
author: "Autor"
|
||||
desc: "説明"
|
||||
export: "Exportieren"
|
||||
import: "Importieren"
|
||||
import-by-code: "またはコードをペースト"
|
||||
theme-name-required: "テーマ名は必須です。"
|
||||
common/views/components/cw-button.vue:
|
||||
hide: "隠す"
|
||||
show: "もっと見る"
|
||||
common/views/components/messaging.vue:
|
||||
search-user: "Einen Nutzer suchen"
|
||||
you: "Du"
|
||||
@@ -259,8 +348,12 @@ common/views/components/nav.vue:
|
||||
develop: "Entwickler"
|
||||
feedback: "Feedback"
|
||||
common/views/components/note-menu.vue:
|
||||
favorite: "Diese Anmerkung favorisieren"
|
||||
detail: "詳細"
|
||||
copy-link: "リンクをコピー"
|
||||
favorite: "Diese Notiz favorisieren"
|
||||
unfavorite: "Aus Favoriten entfernen"
|
||||
pin: "An die Profilseite pinnen"
|
||||
unpin: "ピン留め解除"
|
||||
delete: "Löschen"
|
||||
delete-confirm: "Diesen Post löschen?"
|
||||
remote: "Auf Quelle anzeigen"
|
||||
@@ -285,7 +378,7 @@ common/views/components/signin.vue:
|
||||
token: "Token"
|
||||
signing-in: "Melde an..."
|
||||
signin: "Anmelden"
|
||||
or: "または"
|
||||
or: "Oder"
|
||||
signin-with-twitter: "Twitterでログイン"
|
||||
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||
common/views/components/signup.vue:
|
||||
@@ -336,6 +429,28 @@ common/views/components/visibility-chooser.vue:
|
||||
specified: "Direkt"
|
||||
specified-desc: "Poste nur für bestimmte Benutzer"
|
||||
private: "Privat"
|
||||
common/views/components/trends.vue:
|
||||
count: "{}人が投稿"
|
||||
empty: "トレンドなし"
|
||||
common/views/components/profile-editor.vue:
|
||||
title: "プロフィール"
|
||||
name: "名前"
|
||||
account: "アカウント"
|
||||
location: "場所"
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
is-cat: "このアカウントはCatです"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-locked: "フォローを承認制にする"
|
||||
careful-bot: "Botからのフォローだけ承認制にする"
|
||||
advanced: "その他"
|
||||
privacy: "プライバシー"
|
||||
save: "保存"
|
||||
saved: "プロフィールを保存しました"
|
||||
uploading: "アップロード中"
|
||||
upload-failed: "アップロードに失敗しました"
|
||||
common/views/widgets/broadcast.vue:
|
||||
fetching: "Laden"
|
||||
no-broadcasts: "Keine Broadcasts"
|
||||
@@ -359,8 +474,6 @@ common/views/widgets/posts-monitor.vue:
|
||||
toggle: "表示を切り替え"
|
||||
common/views/widgets/hashtags.vue:
|
||||
title: "ハッシュタグ"
|
||||
count: "{}人が投稿"
|
||||
empty: "トレンドなし"
|
||||
common/views/widgets/server.vue:
|
||||
title: "Serverinformationen"
|
||||
toggle: "Sicht umschalten"
|
||||
@@ -398,6 +511,7 @@ common/views/pages/follow.vue:
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-processing: "フォロー処理中"
|
||||
follow-request: "フォロー申請"
|
||||
desktop:
|
||||
banner-crop-title: "バナーとして表示する部分を選択"
|
||||
@@ -410,6 +524,7 @@ desktop:
|
||||
uploading-avatar: "新しいアバターをアップロードしています"
|
||||
avatar-updated: "アバターを更新しました"
|
||||
choose-avatar: "アバターにする画像を選択"
|
||||
invalid-filetype: "この形式のファイルはサポートされていません"
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Schwarz ... komplett"
|
||||
notes: "Blau ... Hinweise"
|
||||
@@ -423,6 +538,31 @@ desktop/views/components/calendar.vue:
|
||||
prev: "Vorheriger Monat"
|
||||
next: "Nächster Monat"
|
||||
go: "Klicke zur Navigation"
|
||||
desktop/views/components/charts.vue:
|
||||
title: "チャート"
|
||||
per-day: "1日ごと"
|
||||
per-hour: "1時間ごと"
|
||||
federation: "フェデレーション"
|
||||
notes: "投稿"
|
||||
users: "ユーザー"
|
||||
drive: "ドライブ"
|
||||
network: "Netzwerk"
|
||||
charts:
|
||||
federation-instances: "インスタンスの増減"
|
||||
federation-instances-total: "インスタンスの積算"
|
||||
notes: "投稿の増減 (統合)"
|
||||
local-notes: "投稿の増減 (ローカル)"
|
||||
remote-notes: "投稿の増減 (リモート)"
|
||||
notes-total: "投稿の積算"
|
||||
users: "ユーザーの増減"
|
||||
users-total: "ユーザーの積算"
|
||||
drive: "ドライブ使用量の増減"
|
||||
drive-total: "ドライブ使用量の積算"
|
||||
drive-files: "ドライブのファイル数の増減"
|
||||
drive-files-total: "ドライブのファイル数の積算"
|
||||
network-requests: "Anfragen"
|
||||
network-time: "Antwortzeit"
|
||||
network-usage: "Datenverkehr"
|
||||
desktop/views/components/choose-file-from-drive-window.vue:
|
||||
choose-file: "Datei auswählen"
|
||||
upload: "Dateien von deinem PC hochladen"
|
||||
@@ -439,7 +579,6 @@ desktop/views/components/crop-window.vue:
|
||||
ok: "OK"
|
||||
desktop/views/components/drive-window.vue:
|
||||
used: "benutzt"
|
||||
drive: "Speicher"
|
||||
desktop/views/components/drive.file.vue:
|
||||
avatar: "Avatar"
|
||||
banner: "Banner"
|
||||
@@ -456,7 +595,7 @@ desktop/views/components/drive.file.vue:
|
||||
open-in-app: "In der App öffnen"
|
||||
add-app: "App hinzufügen"
|
||||
rename-file: "Datei umbennen"
|
||||
input-new-file-name: "Geben Sie den neuen Dateinamen an"
|
||||
input-new-file-name: "Gib den neuen Dateinamen an"
|
||||
copied: "Kopieren erfolgreich"
|
||||
copied-url-to-clipboard: "URL wurde in die Zwischenablage kopiert"
|
||||
desktop/views/components/drive.folder.vue:
|
||||
@@ -469,8 +608,6 @@ desktop/views/components/drive.folder.vue:
|
||||
rename: "Umbenennen"
|
||||
rename-folder: "Ordner umbenennen"
|
||||
input-new-folder-name: "Namen für neuen Ordner eingeben"
|
||||
desktop/views/components/drive.nav-folder.vue:
|
||||
drive: "Laufwerk"
|
||||
desktop/views/components/drive.vue:
|
||||
search: "Suchen"
|
||||
load-more: "Mehr laden"
|
||||
@@ -501,6 +638,7 @@ desktop/views/components/follow-button.vue:
|
||||
following: "Folge ich"
|
||||
follow: "Folgen"
|
||||
request-pending: "Ausstehend"
|
||||
follow-processing: "フォロー処理中"
|
||||
follow-request: "Follower-Anfragen"
|
||||
desktop/views/components/followers-window.vue:
|
||||
followers: "{} のフォロワー"
|
||||
@@ -537,27 +675,25 @@ desktop/views/components/note-detail.vue:
|
||||
location: "Ort"
|
||||
renote: "Anmerkung"
|
||||
add-reaction: "Reaktion hinzufügen"
|
||||
desktop/views/components/notes.note.vue:
|
||||
reposted-by: "Auch geteilt von"
|
||||
reply: "Antworten"
|
||||
renote: "Anmerken"
|
||||
add-reaction: "Eine Reaktion hinzufügen"
|
||||
detail: "Zeige Details"
|
||||
private: "Dieser Beitrag ist eine privat"
|
||||
deleted: "Dieser Beitrag wurde entfernt"
|
||||
hide: "隠す"
|
||||
see-more: "もっと見る"
|
||||
desktop/views/components/note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
reply: "返信"
|
||||
renote: "Renote"
|
||||
add-reaction: "リアクション"
|
||||
detail: "詳細"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
desktop/views/components/notes.vue:
|
||||
error: "Laden fehlgeschlagen."
|
||||
retry: "Erneut versuchen"
|
||||
load-more: "もっと読み込む"
|
||||
load-more: "Mehr laden"
|
||||
desktop/views/components/notifications.vue:
|
||||
more: "Mehr"
|
||||
empty: "Keine Benachrichtigungen"
|
||||
desktop/views/components/post-form.vue:
|
||||
add-visible-user: "+ユーザーを追加"
|
||||
add-visible-user: "+Nutzer hinzufügen"
|
||||
attach-location-information: "位置情報を添付する"
|
||||
hide-contents: "内容を隠す"
|
||||
hide-contents: "Inhalt verstecken"
|
||||
reply-placeholder: "Antworte auf diese Anmerkung..."
|
||||
quote-placeholder: "Zitiere diese Anmerkung..."
|
||||
submit: "Beitragsform"
|
||||
@@ -578,10 +714,10 @@ desktop/views/components/post-form.vue:
|
||||
text-remain: "{} Zeichen verbleibend"
|
||||
recent-tags: "最近"
|
||||
click-to-tagging: "クリックでタグ付け"
|
||||
visibility: "公開範囲"
|
||||
visibility: "Sichtbarkeit"
|
||||
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||
error: "エラー"
|
||||
enter-username: "ユーザー名を入力してください"
|
||||
error: "Fehler"
|
||||
enter-username: "Bitte gib einen Benutzernamen ein..."
|
||||
annotations: "内容への注釈 (オプション)"
|
||||
desktop/views/components/post-form-window.vue:
|
||||
note: "Neue Notiz"
|
||||
@@ -605,44 +741,56 @@ desktop/views/components/settings.vue:
|
||||
profile: "Profil"
|
||||
notification: "Mitteilungen"
|
||||
apps: "In App öffnen"
|
||||
mute: "Stummschalten"
|
||||
drive: "Dateien vom Drive anfügen"
|
||||
mute-and-block: "ミュート/ブロック"
|
||||
blocking: "ブロック"
|
||||
security: "Sicherheit"
|
||||
signin: "サインイン履歴"
|
||||
password: "Passwort"
|
||||
2fa: "Zwei-Faktor-Authentifizierung"
|
||||
other: "Anderes"
|
||||
license: "Lizenz"
|
||||
theme: "テーマ"
|
||||
behaviour: "Verhalten"
|
||||
fetch-on-scroll: "Aktualisieren beim scrollen"
|
||||
fetch-on-scroll-desc: "Wenn du runterscrollst empfängt die Seite automatisch zusätzliche Inhalte."
|
||||
note-visibility: "投稿の公開範囲"
|
||||
default-note-visibility: "デフォルトの公開範囲"
|
||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||
auto-popout: "Automatische Pop-out Fenster"
|
||||
auto-popout-desc: "Pop-out ein offenes Fenster wenn möglich. Diese Einstellung wird im Browser gespeichert."
|
||||
advanced: "Erweiterte Einstellungen"
|
||||
api-via-stream: "API-Anfrage via stream"
|
||||
api-via-stream-desc: "API-Anfrage über WebSocket statt native Aktualisierungs-API (für bessere Leistung). Diese Einstellung wird im Browser gespeichert."
|
||||
deck-nav: "デッキ内ナビゲーション"
|
||||
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
|
||||
deck-default: "デッキをデフォルトのUIにする"
|
||||
display: "Erscheinungsbild und Anzeige"
|
||||
customize: "Startseite anpassen"
|
||||
wallpaper: "壁紙"
|
||||
choose-wallpaper: "壁紙を選択"
|
||||
delete-wallpaper: "壁紙を削除"
|
||||
dark-mode: "Nacht Modus"
|
||||
use-shadow: "UIに影を使用"
|
||||
rounded-corners: "Abgerundete Ecken"
|
||||
circle-icons: "Kreisförmige Icons"
|
||||
gradient-window-header: "Übergang in Fensterköpfen"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||
show-clock-on-header: "右上に時計を表示する"
|
||||
show-reply-target: "Zeige Antworten"
|
||||
timeline: "タイムライン"
|
||||
show-my-renotes: "Zeige meine Reposts auf der Zeitleiste"
|
||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||
show-maps: "Karte anzeigen"
|
||||
show-maps-desc: "Zeige den Standort zu diesem Beitrag automatisch an."
|
||||
deck-column-align: "デッキのカラムの位置"
|
||||
deck-column-align-center: "中央"
|
||||
deck-column-align-left: "左"
|
||||
sound: "Ton"
|
||||
enable-sounds: "Ton aktivieren"
|
||||
enable-sounds-desc: "Spiel einen Ton ab beim Erhalten eines Beitrags bzw. einer Nachricht. Diese Einstellung wird im Browser gespeichert."
|
||||
volume: "Lautstärke"
|
||||
test: "Test"
|
||||
mobile: "Mobil"
|
||||
disable-via-mobile: "Diesen Beitrag nicht mit 'vom Handy' absenden"
|
||||
language: "Sprache"
|
||||
pick-language: "Sprache auswählen"
|
||||
recommended: "Empfohlen"
|
||||
@@ -678,6 +826,10 @@ desktop/views/components/settings.vue:
|
||||
tools: "Werkzeuge"
|
||||
task-manager: "Taskmanager"
|
||||
third-parties: "サードパーティ"
|
||||
navbar-position: "ナビゲーションバーの位置"
|
||||
navbar-position-top: "上"
|
||||
navbar-position-left: "左"
|
||||
navbar-position-right: "右"
|
||||
desktop/views/components/settings.2fa.vue:
|
||||
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
||||
detail: "詳細..."
|
||||
@@ -696,41 +848,39 @@ desktop/views/components/settings.2fa.vue:
|
||||
success: "設定が完了しました!"
|
||||
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
||||
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
||||
desktop/views/components/settings.api.vue:
|
||||
common/views/components/api-settings.vue:
|
||||
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||
regenerate-token: "トークンを再生成"
|
||||
token: "Token:"
|
||||
enter-password: "Bitte Passwort eingeben"
|
||||
enter-password: "パスワードを入力してください"
|
||||
console:
|
||||
title: 'APIコンソール'
|
||||
endpoint: 'エンドポイント'
|
||||
parameter: 'パラメータ'
|
||||
send: '送信'
|
||||
sending: '応答待ち'
|
||||
response: '結果'
|
||||
desktop/views/components/settings.apps.vue:
|
||||
no-apps: "連携しているアプリケーションはありません"
|
||||
desktop/views/components/settings.drive.vue:
|
||||
max: "中"
|
||||
common/views/components/drive-settings.vue:
|
||||
max: "容量"
|
||||
in-use: "使用中"
|
||||
desktop/views/components/settings.mute.vue:
|
||||
no-users: "ミュートしているユーザーはいません"
|
||||
stats: "統計"
|
||||
common/views/components/mute-and-block.vue:
|
||||
mute-and-block: "ミュートとブロック"
|
||||
mute: "ミュート"
|
||||
block: "ブロック"
|
||||
no-muted-users: "ミュートしているユーザーはいません"
|
||||
no-blocked-users: "ブロックしているユーザーはいません"
|
||||
desktop/views/components/settings.password.vue:
|
||||
reset: "パスワードを変更する"
|
||||
reset: "Passwort ändern"
|
||||
enter-current-password: "Derzeitiges Passwort eingeben"
|
||||
enter-new-password: "Neues Passwort eingeben"
|
||||
enter-new-password-again: "Neues Passwort erneut eingeben"
|
||||
not-match: "新しいパスワードが一致しません"
|
||||
changed: "パスワードを変更しました"
|
||||
desktop/views/components/settings.profile.vue:
|
||||
avatar: "アイコン"
|
||||
choice-avatar: "画像を選択"
|
||||
name: "名前"
|
||||
location: "場所"
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
save: "Profil aktualisieren"
|
||||
locked-account: "アカウントの保護"
|
||||
is-locked: "投稿を非公開にする"
|
||||
other: "その他"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
profile-updated: "プロフィールを更新しました"
|
||||
not-match: "Passwörter stimmen nicht überein."
|
||||
changed: "Passwort geändert"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
@@ -743,17 +893,23 @@ desktop/views/components/timeline.vue:
|
||||
local: "Lokal"
|
||||
hybrid: "ソーシャル"
|
||||
global: "Global"
|
||||
mentions: "あなた宛て"
|
||||
messages: "メッセージ"
|
||||
list: "Listen"
|
||||
hashtag: "ハッシュタグ"
|
||||
add-tag-timeline: "ハッシュタグを追加"
|
||||
add-list: "リストを追加"
|
||||
list-name: "リスト名"
|
||||
desktop/views/components/ui.header.vue:
|
||||
welcome-back: "おかえりなさい、"
|
||||
adjective: "さん"
|
||||
desktop/views/components/ui.header.account.vue:
|
||||
profile: "Dein Profil"
|
||||
drive: "Speicher"
|
||||
favorites: "Favoriten"
|
||||
lists: "Listen"
|
||||
follow-requests: "フォロー申請"
|
||||
customize: "ホームのカスタマイズ"
|
||||
admin: "管理"
|
||||
settings: "Einstellungen"
|
||||
signout: "Ausloggen"
|
||||
dark: "Verdunkeln"
|
||||
@@ -783,7 +939,7 @@ desktop/views/components/user-preview.vue:
|
||||
desktop/views/components/users-list.vue:
|
||||
all: "すべて"
|
||||
iknow: "知り合い"
|
||||
load-more: "もっと"
|
||||
load-more: "Mehr"
|
||||
fetching: "Lade…"
|
||||
desktop/views/components/users-list-item.vue:
|
||||
followed: "フォローされています"
|
||||
@@ -792,16 +948,20 @@ desktop/views/components/window.vue:
|
||||
close: "閉じる"
|
||||
desktop/views/pages/admin/admin.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
drive: "ドライブ"
|
||||
users: "ユーザー"
|
||||
update: "更新"
|
||||
announcements: "お知らせ"
|
||||
hashtags: "ハッシュタグ"
|
||||
desktop/views/pages/admin/admin.dashboard.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
all-users: "全てのユーザー"
|
||||
original-users: "このインスタンスのユーザー"
|
||||
all-notes: "全てのノート"
|
||||
original-notes: "このインスタンスのノート"
|
||||
all-notes: "全ての投稿"
|
||||
original-notes: "このインスタンスの投稿"
|
||||
invite: "招待"
|
||||
banner-url: "Banner URL"
|
||||
disableRegistration: "Disable new user registration"
|
||||
disableLocalTimeline: "Disable the local timeline"
|
||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||
suspend-user: "ユーザーの凍結"
|
||||
suspend: "凍結"
|
||||
@@ -818,26 +978,28 @@ desktop/views/pages/admin/admin.unverify-user.vue:
|
||||
unverify-user: "ユーザーの公式アカウント解除"
|
||||
unverify: "公式アカウントを解除する"
|
||||
unverified: "公式アカウントを解除しました"
|
||||
desktop/views/pages/admin/admin.notes-chart.vue:
|
||||
title: "投稿"
|
||||
local: "ローカル"
|
||||
remote: "リモート"
|
||||
desktop/views/pages/admin/admin.users-chart.vue:
|
||||
title: "ユーザー"
|
||||
local: "ローカル"
|
||||
remote: "リモート"
|
||||
desktop/views/pages/admin/admin.drive-chart.vue:
|
||||
title: "ドライブ"
|
||||
local: "ローカル"
|
||||
remote: "リモート"
|
||||
desktop/views/pages/admin/admin.announcements.vue:
|
||||
announcements: "お知らせ"
|
||||
desktop/views/pages/admin/admin.hashtags.vue:
|
||||
hided-tags: "Hidden Tags"
|
||||
desktop/views/pages/deck/deck.tl-column.vue:
|
||||
is-media-only: "メディア投稿のみ"
|
||||
is-media-view: "メディアビュー"
|
||||
edit: "オプション"
|
||||
desktop/views/pages/deck/deck.note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
desktop/views/pages/deck/deck.user-column.vue:
|
||||
posts: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
images: "画像"
|
||||
activity: "アクティビティ"
|
||||
timeline: "タイムライン"
|
||||
pinned-notes: "ピン留めされた投稿"
|
||||
push-to-a-list: "リストに追加"
|
||||
desktop/views/pages/stats/stats.vue:
|
||||
all-users: "全てのユーザー"
|
||||
original-users: "このインスタンスのユーザー"
|
||||
all-notes: "全ての投稿"
|
||||
original-notes: "このインスタンスの投稿"
|
||||
desktop/views/pages/welcome.vue:
|
||||
about: "詳しく..."
|
||||
gotit: "わかった"
|
||||
@@ -846,7 +1008,10 @@ desktop/views/pages/welcome.vue:
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
announcements: "お知らせ"
|
||||
photos: "最近の画像"
|
||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||
info: "情報"
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Misskey Drive"
|
||||
desktop/views/pages/favorites.vue:
|
||||
@@ -882,9 +1047,6 @@ desktop/views/pages/user/user.friends.vue:
|
||||
no-users: "よく話すユーザーはいません"
|
||||
desktop/views/pages/user/user.vue:
|
||||
is-suspended: "このユーザーは凍結されています。"
|
||||
is-remote: "このユーザーはリモートユーザーです。"
|
||||
view-remote: "正確な情報を見る"
|
||||
desktop/views/pages/user/user.home.vue:
|
||||
last-used-at: "最終アクセス"
|
||||
desktop/views/pages/user/user.photos.vue:
|
||||
title: "フォト"
|
||||
@@ -898,6 +1060,9 @@ desktop/views/pages/user/user.profile.vue:
|
||||
mute: "ミュートする"
|
||||
muted: "ミュートしています"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロックする"
|
||||
unblock: "ブロック解除"
|
||||
block-confirm: "このユーザーをブロックしますか?"
|
||||
push-to-a-list: "リストに追加"
|
||||
list-pushed: "{user}を{list}に追加しました。"
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
@@ -905,6 +1070,10 @@ desktop/views/pages/user/user.header.vue:
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
is-bot: "このアカウントはBotです"
|
||||
years-old: "歳"
|
||||
year: "年"
|
||||
month: "月"
|
||||
day: "日"
|
||||
desktop/views/pages/user/user.timeline.vue:
|
||||
default: "投稿"
|
||||
with-replies: "投稿と返信"
|
||||
@@ -934,7 +1103,6 @@ desktop/views/widgets/users.vue:
|
||||
refresh: "他を見る"
|
||||
no-one: "いません!"
|
||||
mobile/views/components/drive.vue:
|
||||
drive: "ドライブ"
|
||||
used: "使用中"
|
||||
folder-count: "フォルダ"
|
||||
count-separator: "、"
|
||||
@@ -964,6 +1132,8 @@ mobile/views/components/drive.file-detail.vue:
|
||||
hash: "ハッシュ (md5)"
|
||||
exif: "EXIF"
|
||||
nsfw: "閲覧注意"
|
||||
mark-as-sensitive: "閲覧注意に設定"
|
||||
unmark-as-sensitive: "閲覧注意を解除"
|
||||
mobile/views/components/media-image.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
@@ -974,6 +1144,7 @@ mobile/views/components/follow-button.vue:
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-processing: "フォロー処理中"
|
||||
follow-request: "フォロー申請"
|
||||
mobile/views/components/friends-maker.vue:
|
||||
title: "気になるユーザーをフォロー"
|
||||
@@ -983,8 +1154,6 @@ mobile/views/components/friends-maker.vue:
|
||||
close: "閉じる"
|
||||
mobile/views/components/note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
more: "もっと見る"
|
||||
less: "隠す"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
location: "位置情報"
|
||||
@@ -1037,30 +1206,29 @@ mobile/views/components/ui.nav.vue:
|
||||
messaging: "メッセージ"
|
||||
follow-requests: "フォロー申請"
|
||||
search: "検索"
|
||||
drive: "ドライブ"
|
||||
favorites: "お気に入り"
|
||||
user-lists: "リスト"
|
||||
widgets: "ウィジェット"
|
||||
game: "ゲーム"
|
||||
darkmode: "ダークモード"
|
||||
settings: "設定"
|
||||
admin: "管理"
|
||||
about: "Misskeyについて"
|
||||
mobile/views/components/user-timeline.vue:
|
||||
no-notes: "このユーザーは投稿していないようです。"
|
||||
no-notes-with-media: "メディア付き投稿はありません。"
|
||||
load-more: "もっと"
|
||||
load-more: "Mehr"
|
||||
mobile/views/components/users-list.vue:
|
||||
all: "すべて"
|
||||
known: "知り合い"
|
||||
load-more: "もっと"
|
||||
load-more: "Mehr"
|
||||
mobile/views/pages/favorites.vue:
|
||||
title: "お気に入り"
|
||||
title: "Favoriten"
|
||||
mobile/views/pages/user-lists.vue:
|
||||
title: "リスト"
|
||||
enter-list-name: "リスト名を入力してください"
|
||||
mobile/views/pages/drive.vue:
|
||||
drive: "ドライブ"
|
||||
more: "もっと見る"
|
||||
more: "Mehr laden"
|
||||
mobile/views/pages/signup.vue:
|
||||
lets-start: "📦 始めましょう"
|
||||
mobile/views/pages/followers.vue:
|
||||
@@ -1072,6 +1240,8 @@ mobile/views/pages/home.vue:
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
mentions: "あなた宛て"
|
||||
messages: "メッセージ"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
mobile/views/pages/welcome.vue:
|
||||
@@ -1102,20 +1272,6 @@ mobile/views/pages/notifications.vue:
|
||||
read-all: "すべての通知を既読にしますか?"
|
||||
mobile/views/pages/games/reversi.vue:
|
||||
reversi: "リバーシ"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "Profil"
|
||||
name: "名前"
|
||||
account: "アカウント"
|
||||
location: "場所"
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
is-cat: "このアカウントはCatです"
|
||||
save: "保存"
|
||||
saved: "Profil wurde aktualisiert"
|
||||
uploading: "アップロード中"
|
||||
upload-failed: "アップロードに失敗しました"
|
||||
mobile/views/pages/search.vue:
|
||||
search: "検索"
|
||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||
@@ -1133,6 +1289,7 @@ mobile/views/pages/settings.vue:
|
||||
dark-mode: "ダークモード"
|
||||
i-am-under-limited-internet: "私は通信を制限されている"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
timeline: "タイムライン"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||
@@ -1141,8 +1298,15 @@ mobile/views/pages/settings.vue:
|
||||
post-style: "投稿の表示スタイル"
|
||||
post-style-standard: "標準"
|
||||
post-style-smart: "スマート"
|
||||
notification-position: "通知の表示"
|
||||
notification-position-bottom: "下"
|
||||
notification-position-top: "上"
|
||||
theme: "テーマ"
|
||||
behavior: "動作"
|
||||
fetch-on-scroll: "スクロールで自動読み込み"
|
||||
note-visibility: "投稿の公開範囲"
|
||||
default-note-visibility: "デフォルトの公開範囲"
|
||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||
load-raw-images: "添付された画像を高画質で表示する"
|
||||
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||
@@ -1161,6 +1325,9 @@ mobile/views/pages/settings.vue:
|
||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
sound: "サウンド"
|
||||
enable-sounds: "サウンドを有効にする"
|
||||
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
|
||||
mobile/views/pages/user.vue:
|
||||
follows-you: "フォローされています"
|
||||
following: "フォロー"
|
||||
@@ -1170,13 +1337,15 @@ mobile/views/pages/user.vue:
|
||||
timeline: "タイムライン"
|
||||
media: "メディア"
|
||||
is-suspended: "このユーザーは凍結されています。"
|
||||
is-remote: "このユーザーはリモートユーザーです。"
|
||||
view-remote: "正確な情報を見る"
|
||||
mute: "ミュート"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロック"
|
||||
unblock: "ブロック解除"
|
||||
mobile/views/pages/user/home.vue:
|
||||
recent-notes: "最近の投稿"
|
||||
images: "画像"
|
||||
activity: "アクティビティ"
|
||||
keywords: "キーワード"
|
||||
keywords: "Schlagwörter"
|
||||
domains: "頻出ドメイン"
|
||||
frequently-replied-users: "よく会話するユーザー"
|
||||
followers-you-know: "知り合いのフォロワー"
|
||||
@@ -1217,3 +1386,29 @@ docs:
|
||||
description: "説明"
|
||||
dev/views/index.vue:
|
||||
manage-apps: "アプリの管理"
|
||||
dev/views/apps.vue:
|
||||
manage-apps: "アプリを管理"
|
||||
create-app: "アプリ作成"
|
||||
app-missing: "アプリなし"
|
||||
dev/views/new-app.vue:
|
||||
create-app: "アプリケーションの作成"
|
||||
app-name: "アプリケーション名"
|
||||
app-name-desc: "あなたのアプリの名称。"
|
||||
app-name-ex: "ex) Misskey for iOS"
|
||||
app-overview: "アプリの概要"
|
||||
app-desc: "あなたのアプリの簡単な説明や紹介。"
|
||||
app-desc-ex: "ex) Misskey iOSクライアント。"
|
||||
callback-url: "コールバックURL (オプション)"
|
||||
callback-url-desc: "ユーザーが認証フォームで認証した際にリダイレクトするURLを設定できます。"
|
||||
authority: "権限"
|
||||
authority-desc: "ここで要求した機能だけがAPIからアクセスできます。"
|
||||
authority-warning: "アプリ作成後も変更できますが、新たな権限を付与する場合、その時点で関連付けられているユーザーキーはすべて無効になります。"
|
||||
account-read: "アカウントの情報を見る。"
|
||||
account-write: "アカウントの情報を操作する。"
|
||||
note-write: "投稿する。"
|
||||
reaction-write: "リアクションしたりリアクションをキャンセルする。"
|
||||
following-write: "フォローしたりフォロー解除する。"
|
||||
drive-read: "ドライブを見る。"
|
||||
drive-write: "ドライブを操作する。"
|
||||
notification-read: "通知を見る。"
|
||||
notification-write: "通知を操作する。"
|
||||
|
||||
@@ -6,12 +6,33 @@ common:
|
||||
misskey: "A ⭐ of the fediverse"
|
||||
about-title: "A ⭐ of the fediverse."
|
||||
about: "Thank you for finding Misskey. Misskey is a <b>decentralized microblogging platform</b> 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?"
|
||||
intro:
|
||||
title: "What is Misskey?"
|
||||
about: "Misskey is a open-source <b>decentralized microblogging service</b>. Sophisticated fully customizable Ui, varieties of reaction for posts, free file storage providing integrated management system and other advancing functions are available. Also, network system called “Fediverse” enables us to communicate with users on other SNSs. Like, if you post something, then your posts will sent not only to Misskey but also mastodon. Just imagine that the planet is sending a microwave to other planet to communication."
|
||||
features: "Features"
|
||||
rich-contents: "Post"
|
||||
rich-contents-desc: "Just post your idea, hot topics and anything you want to share. You may want to decorate your words, attach your favorite pictures, send files including movies and create a poll - those are the things you can do on Misskey!"
|
||||
reaction: "Reactions"
|
||||
reaction-desc: "Easiest way to tell your emotions. Misskey allows you to add various type of reactions to other’s post. The emotional experience on Misskey will never be on other SNSs which only able to push “likes”."
|
||||
ui: "Interface"
|
||||
ui-desc: "No UI fits for everyone. Therefore, Misskey has a highly customizable UI for your taste. Make your original home by editing, adjusting layouts of timeline and placing selectable widgets you can easily customize."
|
||||
drive: "Misskey Drive"
|
||||
drive-desc: "Wanna post a picture you have already uploaded? Wish to organize, name and create a folder for your uploaded files? Misskey Drive is the best solution for you. Very easy to share your files online."
|
||||
outro: "Check further Misskey-unique features on your eyes! Feeling like this is not for you, try other instances as Misskey is a decentralized SNS so that you can easily find your mates. Then, GLHF!"
|
||||
adblock:
|
||||
detected: "Please disable ad blocker."
|
||||
warning: "Some features may be unavailable or cause malfunctions if ad blocking features are enabled. <strong>Misskey is not running ads</strong>."
|
||||
application-authorization: "Application authorizations"
|
||||
close: "Close"
|
||||
do-not-copy-paste: "Please do not enter or paste the code here. Account may be compromised."
|
||||
BSoD:
|
||||
fatal-error: "A fatal error has occurred :("
|
||||
update-browser-os: "You might resolve to update the version of your browser (or OS)."
|
||||
error-code: "Error code"
|
||||
browser-version: "Browser version"
|
||||
client-version: "Client version"
|
||||
email-support: "If the problem persists, contact syuilotan@yahoo.co.jp please on the above information."
|
||||
thanks: "Thank you for using Misskey."
|
||||
got-it: "Got it!"
|
||||
customization-tips:
|
||||
title: "Customization tips"
|
||||
@@ -41,6 +62,7 @@ common:
|
||||
years_ago: "{}year(s) ago"
|
||||
month-and-day: "{month}/{day}"
|
||||
trash: "Trash"
|
||||
drive: "Drive"
|
||||
weekday-short:
|
||||
sunday: "S"
|
||||
monday: "M"
|
||||
@@ -68,6 +90,15 @@ common:
|
||||
confused: "Confused"
|
||||
rip: "RIP"
|
||||
pudding: "Pudding"
|
||||
note-visibility:
|
||||
public: "Public"
|
||||
home: "Home"
|
||||
home-desc: "Post to the home timeline only"
|
||||
followers: "Followers"
|
||||
followers-desc: "Post to followers only"
|
||||
specified: "Direct"
|
||||
specified-desc: "Post to specified users only"
|
||||
private: "Private"
|
||||
note-placeholders:
|
||||
a: "What are you doing?"
|
||||
b: "What's happening?"
|
||||
@@ -84,8 +115,21 @@ common:
|
||||
my-token-regenerated: "Your token has been regenerated, so you will be signed out."
|
||||
i-like-sushi: "I prefer sushi rather than pudding"
|
||||
show-reversi-board-labels: "Show row and column labels in Reversi"
|
||||
use-contrast-reversi-stones: "Make the stone color clear in reversi"
|
||||
verified-user: "Verified account"
|
||||
disable-animated-mfm: "Disable animated texts in a post"
|
||||
always-show-nsfw: "Always show NSFW contents"
|
||||
always-mark-nsfw: "Always mark posts with media attachments as NSFW"
|
||||
show-full-acct: "Do not omit the hostname from the username"
|
||||
reduce-motion: "Reduce motion in UI"
|
||||
this-setting-is-this-device-only: "Only for this device"
|
||||
do-not-use-in-production: 'As this is for development, do not use this in production.'
|
||||
is-remote-user: "This user information is copied."
|
||||
is-remote-post: "This post information is a copy."
|
||||
view-on-remote: "View it on remote"
|
||||
error:
|
||||
title: 'Something happened :('
|
||||
retry: 'Retry'
|
||||
reversi:
|
||||
drawn: "Draw"
|
||||
my-turn: "Your turn"
|
||||
@@ -126,7 +170,10 @@ common:
|
||||
home: "Home"
|
||||
local: "Local"
|
||||
hybrid: "Social"
|
||||
hashtag: "Hashtag"
|
||||
global: "Global"
|
||||
mentions: "Mentions"
|
||||
direct: "Direct post"
|
||||
notifications: "Notifications"
|
||||
list: "Lists"
|
||||
swap-left: "Move to the left"
|
||||
@@ -138,6 +185,7 @@ common:
|
||||
rename: "Rename"
|
||||
stack-left: "Stack to the left"
|
||||
pop-right: "Dock on the right"
|
||||
dev: "Failed to create the application. Please try again."
|
||||
auth/views/form.vue:
|
||||
share-access: "Would you <b>allow</b> <i>{{ app.name }}</i> to access your account?"
|
||||
permission-ask: "This application requires the following permissions:"
|
||||
@@ -229,6 +277,47 @@ common/views/components/connect-failed.troubleshooter.vue:
|
||||
success-desc: "Looks like we have a connection. Please reload the page."
|
||||
flush: "Clean cache"
|
||||
set-version: "Specify version"
|
||||
common/views/components/media-banner.vue:
|
||||
sensitive: "NSFW"
|
||||
click-to-show: "Click to show"
|
||||
common/views/components/theme.vue:
|
||||
light-theme: "Theme"
|
||||
dark-theme: "Theme during dark mode"
|
||||
light-themes: "Light theme"
|
||||
dark-themes: "Dark theme"
|
||||
install-a-theme: "Install a theme"
|
||||
theme-code: "Theme code"
|
||||
install: "Install"
|
||||
installed: "\"{}\" has been installed"
|
||||
create-a-theme: "Create a theme"
|
||||
save-created-theme: "Save a theme"
|
||||
primary-color: "Primary color"
|
||||
secondary-color: "Secondary color"
|
||||
text-color: "Text color"
|
||||
base-theme: "Base theme"
|
||||
base-theme-light: "Light"
|
||||
base-theme-dark: "Dark"
|
||||
theme-name: "Theme name"
|
||||
preview-created-theme: "Preview"
|
||||
invalid-theme: "Not valid theme"
|
||||
already-installed: "This theme is already installed."
|
||||
saved: "Saved"
|
||||
manage-themes: "Themes manager"
|
||||
builtin-themes: "Standard themes"
|
||||
my-themes: "My themes"
|
||||
installed-themes: "Installed themes"
|
||||
select-theme: "Select your theme"
|
||||
uninstall: "Uninstall"
|
||||
uninstalled: "\"{}\" has been uninstalled"
|
||||
author: "Author"
|
||||
desc: "Description"
|
||||
export: "Export"
|
||||
import: "Import"
|
||||
import-by-code: "or paste code"
|
||||
theme-name-required: "Theme name is required"
|
||||
common/views/components/cw-button.vue:
|
||||
hide: "Hide"
|
||||
show: "See more"
|
||||
common/views/components/messaging.vue:
|
||||
search-user: "Find a user"
|
||||
you: "You"
|
||||
@@ -259,8 +348,12 @@ common/views/components/nav.vue:
|
||||
develop: "Developers"
|
||||
feedback: "Feedback"
|
||||
common/views/components/note-menu.vue:
|
||||
detail: "Details"
|
||||
copy-link: "Copy link"
|
||||
favorite: "Favorite this note"
|
||||
unfavorite: "Unfavorite"
|
||||
pin: "Pin to your profile"
|
||||
unpin: "Unpin"
|
||||
delete: "Delete"
|
||||
delete-confirm: "Delete this post?"
|
||||
remote: "Show original note"
|
||||
@@ -336,6 +429,28 @@ common/views/components/visibility-chooser.vue:
|
||||
specified: "Direct"
|
||||
specified-desc: "Post to specified users only"
|
||||
private: "Private"
|
||||
common/views/components/trends.vue:
|
||||
count: "{} users mentioned"
|
||||
empty: "No popular hashtag trends"
|
||||
common/views/components/profile-editor.vue:
|
||||
title: "Profile"
|
||||
name: "Name"
|
||||
account: "Account"
|
||||
location: "Location"
|
||||
description: "About me"
|
||||
birthday: "Birthday"
|
||||
avatar: "Avatar"
|
||||
banner: "Banner"
|
||||
is-cat: "This account is a Cat"
|
||||
is-bot: "This account is a Bot"
|
||||
is-locked: "Follower requests require approval"
|
||||
careful-bot: "Follower requests from bots require approval"
|
||||
advanced: "Advanced"
|
||||
privacy: "Privacy"
|
||||
save: "Update profile"
|
||||
saved: "Profile updated successfully"
|
||||
uploading: "Uploading"
|
||||
upload-failed: "Failed to upload"
|
||||
common/views/widgets/broadcast.vue:
|
||||
fetching: "Fetching"
|
||||
no-broadcasts: "No announcements"
|
||||
@@ -359,8 +474,6 @@ common/views/widgets/posts-monitor.vue:
|
||||
toggle: "Toggle views"
|
||||
common/views/widgets/hashtags.vue:
|
||||
title: "Hashtags"
|
||||
count: "{} users mentioned"
|
||||
empty: "No popular hashtag trends"
|
||||
common/views/widgets/server.vue:
|
||||
title: "Server info"
|
||||
toggle: "Toggle views"
|
||||
@@ -385,7 +498,7 @@ common/views/widgets/tips.vue:
|
||||
tips-line10: "Using the Time Machine widget makes it easy to trace back to the past timeline."
|
||||
tips-line11: "You can pin posts to user page by clicking on \"...\""
|
||||
tips-line13: "All the files attached to the post are saved to Drive."
|
||||
tips-line14: "While customizing the home, you can right click on the widget and change the design."
|
||||
tips-line14: "While customizing your home layout, you can right click on a widget to change its design."
|
||||
tips-line17: "Surrounding the text with ** ** will highlight it."
|
||||
tips-line19: "Several windows can be detached outside the browser."
|
||||
tips-line20: "The percentage of the calendar widget shows the percentage of time elapsed."
|
||||
@@ -398,6 +511,7 @@ common/views/pages/follow.vue:
|
||||
following: "Following"
|
||||
follow: "Follow"
|
||||
request-pending: "Pending follow request"
|
||||
follow-processing: "Processing follow"
|
||||
follow-request: "Follow request"
|
||||
desktop:
|
||||
banner-crop-title: "Crop the part that appears as a banner"
|
||||
@@ -410,6 +524,7 @@ desktop:
|
||||
uploading-avatar: "Uploading a new avatar"
|
||||
avatar-updated: "Successfully updated the avatar"
|
||||
choose-avatar: "Select an image for the avatar"
|
||||
invalid-filetype: "This filetype is not acceptable here"
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Black ... Total"
|
||||
notes: "Blue ... Notes"
|
||||
@@ -423,6 +538,31 @@ desktop/views/components/calendar.vue:
|
||||
prev: "Previous month"
|
||||
next: "Next month"
|
||||
go: "Click to navigate"
|
||||
desktop/views/components/charts.vue:
|
||||
title: "Charts"
|
||||
per-day: "per Day"
|
||||
per-hour: "per Hour"
|
||||
federation: "Federation"
|
||||
notes: "Posts"
|
||||
users: "Users"
|
||||
drive: "Drive"
|
||||
network: "Network"
|
||||
charts:
|
||||
federation-instances: "The number of instances: increase/decrease"
|
||||
federation-instances-total: "Total number of instances"
|
||||
notes: "The number of posts: increase/decrease (Combined)"
|
||||
local-notes: "The number of posts: increase/decrease (Local)"
|
||||
remote-notes: "The number of posts: increase/decrease (Remote)"
|
||||
notes-total: "Total posts"
|
||||
users: "The number of users: increase/decrease"
|
||||
users-total: "Total users"
|
||||
drive: "Capacity used as the storage: increase/decrease"
|
||||
drive-total: "Total usage of Drive"
|
||||
drive-files: "The number of files on the storage: increase/decrease"
|
||||
drive-files-total: "Total number of files on Drive"
|
||||
network-requests: "Requests"
|
||||
network-time: "Response time"
|
||||
network-usage: "Traffic"
|
||||
desktop/views/components/choose-file-from-drive-window.vue:
|
||||
choose-file: "Choose files"
|
||||
upload: "Upload files from your device"
|
||||
@@ -439,7 +579,6 @@ desktop/views/components/crop-window.vue:
|
||||
ok: "OK"
|
||||
desktop/views/components/drive-window.vue:
|
||||
used: "used"
|
||||
drive: "Media storage"
|
||||
desktop/views/components/drive.file.vue:
|
||||
avatar: "Avatar"
|
||||
banner: "Banner"
|
||||
@@ -469,8 +608,6 @@ desktop/views/components/drive.folder.vue:
|
||||
rename: "Rename"
|
||||
rename-folder: "Rename folder"
|
||||
input-new-folder-name: "Enter new name"
|
||||
desktop/views/components/drive.nav-folder.vue:
|
||||
drive: "Media storage"
|
||||
desktop/views/components/drive.vue:
|
||||
search: "Search"
|
||||
load-more: "Load more"
|
||||
@@ -501,6 +638,7 @@ desktop/views/components/follow-button.vue:
|
||||
following: "Following"
|
||||
follow: "Follow"
|
||||
request-pending: "Pending follow request"
|
||||
follow-processing: "Processing follow"
|
||||
follow-request: "Follow request"
|
||||
desktop/views/components/followers-window.vue:
|
||||
followers: "{}'s followers"
|
||||
@@ -537,16 +675,14 @@ desktop/views/components/note-detail.vue:
|
||||
location: "Location"
|
||||
renote: "Repost"
|
||||
add-reaction: "Add a reaction"
|
||||
desktop/views/components/notes.note.vue:
|
||||
desktop/views/components/note.vue:
|
||||
reposted-by: "Reposted by {}"
|
||||
reply: "Reply"
|
||||
renote: "Repost"
|
||||
renote: "Renote"
|
||||
add-reaction: "Add a reaction"
|
||||
detail: "Show details"
|
||||
private: "Post is private"
|
||||
deleted: "Post has been deleted"
|
||||
hide: "Hide"
|
||||
see-more: "See more"
|
||||
detail: "Details"
|
||||
private: "This post is private"
|
||||
deleted: "This post has been deleted"
|
||||
desktop/views/components/notes.vue:
|
||||
error: "Loading failed."
|
||||
retry: "Retry"
|
||||
@@ -605,44 +741,56 @@ desktop/views/components/settings.vue:
|
||||
profile: "Profile"
|
||||
notification: "Notification"
|
||||
apps: "Apps"
|
||||
mute: "Mute"
|
||||
drive: "Drive"
|
||||
mute-and-block: "Mute / Block"
|
||||
blocking: "Blocking"
|
||||
security: "Security"
|
||||
signin: "Sign in history"
|
||||
password: "Password"
|
||||
2fa: "Two-factor authentication"
|
||||
other: "Other"
|
||||
license: "License"
|
||||
theme: "Theme"
|
||||
behaviour: "Behavior"
|
||||
fetch-on-scroll: "Endless loading on scroll"
|
||||
fetch-on-scroll-desc: "When you scroll down the page, it automatically fetches additional content."
|
||||
note-visibility: "Post visibility"
|
||||
default-note-visibility: "Default visibility"
|
||||
remember-note-visibility: "Remember post visibility"
|
||||
auto-popout: "Auto pop-out window"
|
||||
auto-popout-desc: "If it's possible, pop-out display will be used instead of opening a new window. This setting is stored in your browser."
|
||||
advanced: "Advanced settings"
|
||||
api-via-stream: "API request via stream"
|
||||
api-via-stream-desc: "API request is performed via the WebSocket connection instead of native fetch API (for better performance). This setting is stored in the browser."
|
||||
deck-nav: "Transitionless deck navigation"
|
||||
deck-nav-desc: "You get a temporary column without page transitions during navigation when using the deck."
|
||||
deck-default: "Use Deck as default UI"
|
||||
display: "Design and display"
|
||||
customize: "Customize home layout"
|
||||
wallpaper: "Wallpaper"
|
||||
choose-wallpaper: "Choose a background"
|
||||
delete-wallpaper: "Remove background"
|
||||
dark-mode: "Dark Mode"
|
||||
use-shadow: "Use shadows in the UI"
|
||||
rounded-corners: "Round corners of UI"
|
||||
circle-icons: "Use circle icons"
|
||||
gradient-window-header: "Use gradients on window headers"
|
||||
contrasted-acct: "Add contrast to username"
|
||||
post-form-on-timeline: "Display post form at the top of the timeline"
|
||||
suggest-recent-hashtags: "Show recent popular hashtags on the post form"
|
||||
show-clock-on-header: "Show clock on upper-right"
|
||||
show-reply-target: "Display reply target"
|
||||
timeline: "Timeline"
|
||||
show-my-renotes: "Show my renotes in the timeline"
|
||||
show-renoted-my-notes: "Show renoted my posts in timelines"
|
||||
show-renoted-my-notes: "Show renoted posts of mine in timelines"
|
||||
show-local-renotes: "Show renoted local posts in timelines"
|
||||
show-maps: "Display a map to show the location"
|
||||
show-maps-desc: "If there comes a post contains location information, show a map to display the location."
|
||||
deck-column-align: "Deck column alignment"
|
||||
deck-column-align-center: "Center"
|
||||
deck-column-align-left: "Left"
|
||||
sound: "Sound"
|
||||
enable-sounds: "Enable sound"
|
||||
enable-sounds-desc: "Play a sound when you receive a post/message. This setting is stored in the browser."
|
||||
volume: "Volume"
|
||||
test: "Test"
|
||||
mobile: "Mobile"
|
||||
disable-via-mobile: "Don't mark the post as 'from mobile'"
|
||||
language: "Language"
|
||||
pick-language: "Select a language"
|
||||
recommended: "Recommended"
|
||||
@@ -678,6 +826,10 @@ desktop/views/components/settings.vue:
|
||||
tools: "Tools"
|
||||
task-manager: "Task Manager"
|
||||
third-parties: "Third-parties"
|
||||
navbar-position: "Navigation bar position"
|
||||
navbar-position-top: "Top"
|
||||
navbar-position-left: "Left"
|
||||
navbar-position-right: "Right"
|
||||
desktop/views/components/settings.2fa.vue:
|
||||
intro: "If you set up 2-step verification, you will not only need a password at sign-in, but also a pre-registered physical device (such as your smartphone), which will improve security."
|
||||
detail: "Details…"
|
||||
@@ -696,20 +848,32 @@ desktop/views/components/settings.2fa.vue:
|
||||
success: "Settings saved!"
|
||||
failed: "Failed to setup. Please ensure that the token is correct."
|
||||
info: "From the next time you sign in to Misskey, the token displayed on your device will be necessary too, as well as the password."
|
||||
desktop/views/components/settings.api.vue:
|
||||
common/views/components/api-settings.vue:
|
||||
intro: "To access the API, set this token as the key 'i' of request parameters."
|
||||
caution: "Do not enter this token to any apps nor tell this token to others otherwise your account may get compromised."
|
||||
regeneration-of-token: "If your token gets leaked, you can regenerate it."
|
||||
regenerate-token: "Regenerate the token"
|
||||
token: "Token:"
|
||||
enter-password: "Please enter the password"
|
||||
enter-password: "Enter the password"
|
||||
console:
|
||||
title: 'API console'
|
||||
endpoint: 'Endpoint'
|
||||
parameter: 'Parameters'
|
||||
send: 'Send'
|
||||
sending: 'Sending'
|
||||
response: 'Result'
|
||||
desktop/views/components/settings.apps.vue:
|
||||
no-apps: "No linked applications"
|
||||
desktop/views/components/settings.drive.vue:
|
||||
common/views/components/drive-settings.vue:
|
||||
max: "Max"
|
||||
in-use: "In use"
|
||||
desktop/views/components/settings.mute.vue:
|
||||
no-users: "No muted users"
|
||||
stats: "Statistics"
|
||||
common/views/components/mute-and-block.vue:
|
||||
mute-and-block: "Mute / Block"
|
||||
mute: "Mute"
|
||||
block: "Blocking"
|
||||
no-muted-users: "No muted users"
|
||||
no-blocked-users: "No blocked users"
|
||||
desktop/views/components/settings.password.vue:
|
||||
reset: "Change password"
|
||||
enter-current-password: "Enter the current password"
|
||||
@@ -717,20 +881,6 @@ desktop/views/components/settings.password.vue:
|
||||
enter-new-password-again: "Enter new password again"
|
||||
not-match: "The new passwords do not match"
|
||||
changed: "Password updated"
|
||||
desktop/views/components/settings.profile.vue:
|
||||
avatar: "Avatar"
|
||||
choice-avatar: "Select an image"
|
||||
name: "Name"
|
||||
location: "Location"
|
||||
description: "Description"
|
||||
birthday: "Birthday"
|
||||
save: "Update profile"
|
||||
locked-account: "Protect your account"
|
||||
is-locked: "Make your posts private"
|
||||
other: "Other"
|
||||
is-bot: "This account is a Bot"
|
||||
is-cat: "This account is a Cat"
|
||||
profile-updated: "Your profile has been updated"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
private: "This post is private"
|
||||
deleted: "This post has been deleted"
|
||||
@@ -743,20 +893,26 @@ desktop/views/components/timeline.vue:
|
||||
local: "Local"
|
||||
hybrid: "Social"
|
||||
global: "Global"
|
||||
mentions: "Mentions"
|
||||
messages: "Messages"
|
||||
list: "Lists"
|
||||
hashtag: "Hashtag"
|
||||
add-tag-timeline: "Add hashtag tl"
|
||||
add-list: "Add list"
|
||||
list-name: "List name"
|
||||
desktop/views/components/ui.header.vue:
|
||||
welcome-back: "Welcome back,"
|
||||
adjective: "-san"
|
||||
desktop/views/components/ui.header.account.vue:
|
||||
profile: "Your profile"
|
||||
drive: "Media storage"
|
||||
favorites: "Favorites"
|
||||
lists: "Lists"
|
||||
follow-requests: "Follow requests"
|
||||
customize: "Customize home layout"
|
||||
admin: "Admin"
|
||||
settings: "Settings"
|
||||
signout: "Sign out"
|
||||
dark: "Submerge in dark"
|
||||
dark: "Toggle dark mode"
|
||||
desktop/views/components/ui.header.nav.vue:
|
||||
home: "Home"
|
||||
deck: "Deck"
|
||||
@@ -792,16 +948,20 @@ desktop/views/components/window.vue:
|
||||
close: "Close"
|
||||
desktop/views/pages/admin/admin.vue:
|
||||
dashboard: "Dashboard"
|
||||
drive: "Drive"
|
||||
users: "Users"
|
||||
update: "Updates"
|
||||
announcements: "Announcements"
|
||||
hashtags: "Hashtags"
|
||||
desktop/views/pages/admin/admin.dashboard.vue:
|
||||
dashboard: "Dashboard"
|
||||
all-users: "All Users"
|
||||
original-users: "Users on this instance"
|
||||
all-notes: "All Posts"
|
||||
all-notes: "All the posts"
|
||||
original-notes: "Posts on this instance"
|
||||
invite: "Invite"
|
||||
banner-url: "Banner URL"
|
||||
disableRegistration: "Disable new user registration"
|
||||
disableLocalTimeline: "Disable the local timeline"
|
||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||
suspend-user: "Suspend a user"
|
||||
suspend: "Suspend"
|
||||
@@ -818,26 +978,28 @@ desktop/views/pages/admin/admin.unverify-user.vue:
|
||||
unverify-user: "User account unverification settings"
|
||||
unverify: "Unverify account"
|
||||
unverified: "The account is now being unverified"
|
||||
desktop/views/pages/admin/admin.notes-chart.vue:
|
||||
title: "Posts"
|
||||
local: "Local"
|
||||
remote: "Remote"
|
||||
desktop/views/pages/admin/admin.users-chart.vue:
|
||||
title: "Users"
|
||||
local: "Local"
|
||||
remote: "Remote"
|
||||
desktop/views/pages/admin/admin.drive-chart.vue:
|
||||
title: "Drive"
|
||||
local: "Local"
|
||||
remote: "Remote"
|
||||
desktop/views/pages/admin/admin.announcements.vue:
|
||||
announcements: "Announcements"
|
||||
desktop/views/pages/admin/admin.hashtags.vue:
|
||||
hided-tags: "Hidden Tags"
|
||||
desktop/views/pages/deck/deck.tl-column.vue:
|
||||
is-media-only: "Only media posts"
|
||||
is-media-view: "Media view"
|
||||
edit: "Options"
|
||||
desktop/views/pages/deck/deck.note.vue:
|
||||
reposted-by: "Reposted by {}"
|
||||
private: "This post is private"
|
||||
deleted: "This post has been deleted"
|
||||
desktop/views/pages/deck/deck.user-column.vue:
|
||||
posts: "Posts"
|
||||
following: "Following"
|
||||
followers: "Followers"
|
||||
images: "Images"
|
||||
activity: "Activity"
|
||||
timeline: "Timeline"
|
||||
pinned-notes: "Pinned posts"
|
||||
push-to-a-list: "Add to list"
|
||||
desktop/views/pages/stats/stats.vue:
|
||||
all-users: "All Users"
|
||||
original-users: "Users on this instance"
|
||||
all-notes: "All the posts"
|
||||
original-notes: "Posts on this instance"
|
||||
desktop/views/pages/welcome.vue:
|
||||
about: "More details..."
|
||||
gotit: "Got it!"
|
||||
@@ -846,7 +1008,10 @@ desktop/views/pages/welcome.vue:
|
||||
signin-button: "Logging in..."
|
||||
signup-button: "Sign up"
|
||||
timeline: "Timeline"
|
||||
announcements: "Announcements"
|
||||
photos: "Recent Images"
|
||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||
info: "Information"
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Misskey storage"
|
||||
desktop/views/pages/favorites.vue:
|
||||
@@ -882,10 +1047,7 @@ desktop/views/pages/user/user.friends.vue:
|
||||
no-users: "No frequent mentions"
|
||||
desktop/views/pages/user/user.vue:
|
||||
is-suspended: "This account has been suspended."
|
||||
is-remote: "The user is a remote user. The profile that you see here may not complete."
|
||||
view-remote: "See their complete profile"
|
||||
desktop/views/pages/user/user.home.vue:
|
||||
last-used-at: "Last active:"
|
||||
last-used-at: "Last active"
|
||||
desktop/views/pages/user/user.photos.vue:
|
||||
title: "Photos"
|
||||
loading: "Loading"
|
||||
@@ -898,6 +1060,9 @@ desktop/views/pages/user/user.profile.vue:
|
||||
mute: "Mute"
|
||||
muted: "Muting"
|
||||
unmute: "Unmute"
|
||||
block: "Block"
|
||||
unblock: "Unblock"
|
||||
block-confirm: "Are you sure block this user?"
|
||||
push-to-a-list: "Add to list"
|
||||
list-pushed: "Successfully added {user} to {list}."
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
@@ -905,6 +1070,10 @@ desktop/views/pages/user/user.header.vue:
|
||||
following: "Following"
|
||||
followers: "Followers"
|
||||
is-bot: "This account is a Bot"
|
||||
years-old: " years old"
|
||||
year: "/"
|
||||
month: "/"
|
||||
day: "-"
|
||||
desktop/views/pages/user/user.timeline.vue:
|
||||
default: "Posts"
|
||||
with-replies: "Posts and replies"
|
||||
@@ -934,7 +1103,6 @@ desktop/views/widgets/users.vue:
|
||||
refresh: "refresh"
|
||||
no-one: "Anyone!"
|
||||
mobile/views/components/drive.vue:
|
||||
drive: "Media storage"
|
||||
used: "used"
|
||||
folder-count: "Folder(s)"
|
||||
count-separator: ", "
|
||||
@@ -964,6 +1132,8 @@ mobile/views/components/drive.file-detail.vue:
|
||||
hash: "Hash (md5)"
|
||||
exif: "EXIF"
|
||||
nsfw: "NSFW"
|
||||
mark-as-sensitive: "Mark as 'sensitive'"
|
||||
unmark-as-sensitive: "Unmark as 'sensitive'"
|
||||
mobile/views/components/media-image.vue:
|
||||
sensitive: "NSFW"
|
||||
click-to-show: "Click to show"
|
||||
@@ -974,6 +1144,7 @@ mobile/views/components/follow-button.vue:
|
||||
following: "Following"
|
||||
follow: "Follow"
|
||||
request-pending: "Pending follow request"
|
||||
follow-processing: "Processing follow"
|
||||
follow-request: "Follow request"
|
||||
mobile/views/components/friends-maker.vue:
|
||||
title: "Let's follow them"
|
||||
@@ -983,8 +1154,6 @@ mobile/views/components/friends-maker.vue:
|
||||
close: "Close"
|
||||
mobile/views/components/note.vue:
|
||||
reposted-by: "Reposted by {}"
|
||||
more: "See more"
|
||||
less: "Hide"
|
||||
private: "This post is private"
|
||||
deleted: "This post has been deleted"
|
||||
location: "Location"
|
||||
@@ -1037,29 +1206,28 @@ mobile/views/components/ui.nav.vue:
|
||||
messaging: "Messages"
|
||||
follow-requests: "Follow requests"
|
||||
search: "Search"
|
||||
drive: "Drive"
|
||||
favorites: "Favorites"
|
||||
user-lists: "Lists"
|
||||
widgets: "Widgets"
|
||||
game: "Games"
|
||||
darkmode: "Dark theme"
|
||||
settings: "Settings"
|
||||
admin: "Admin"
|
||||
about: "About Misskey"
|
||||
mobile/views/components/user-timeline.vue:
|
||||
no-notes: "It seems this user hasn't posted anything yet."
|
||||
no-notes-with-media: "There are no posts attaching media"
|
||||
no-notes-with-media: "There are no notes with media attachments"
|
||||
load-more: "More"
|
||||
mobile/views/components/users-list.vue:
|
||||
all: "All"
|
||||
known: "You know"
|
||||
known: "In common"
|
||||
load-more: "More"
|
||||
mobile/views/pages/favorites.vue:
|
||||
title: "Favorites"
|
||||
mobile/views/pages/user-lists.vue:
|
||||
title: "Lists"
|
||||
enter-list-name: "Enter list name"
|
||||
enter-list-name: "Enter a name of the list to make"
|
||||
mobile/views/pages/drive.vue:
|
||||
drive: "Drive"
|
||||
more: "Load more"
|
||||
mobile/views/pages/signup.vue:
|
||||
lets-start: "Your account is now ready! 📦"
|
||||
@@ -1072,6 +1240,8 @@ mobile/views/pages/home.vue:
|
||||
local: "Local"
|
||||
hybrid: "Social"
|
||||
global: "Global"
|
||||
mentions: "Mentions"
|
||||
messages: "Messages"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "No posts \"{}\" found."
|
||||
mobile/views/pages/welcome.vue:
|
||||
@@ -1102,20 +1272,6 @@ mobile/views/pages/notifications.vue:
|
||||
read-all: "Do you wish to mark all notifications as read?"
|
||||
mobile/views/pages/games/reversi.vue:
|
||||
reversi: "Reversi"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "Profile"
|
||||
name: "Name"
|
||||
account: "Account"
|
||||
location: "Location"
|
||||
description: "Biography"
|
||||
birthday: "Birthday"
|
||||
avatar: "Avatar"
|
||||
banner: "Banner"
|
||||
is-cat: "This account is a Cat"
|
||||
save: "Update profile"
|
||||
saved: "Profile updated"
|
||||
uploading: "Uploading"
|
||||
upload-failed: "Failed to upload"
|
||||
mobile/views/pages/search.vue:
|
||||
search: "Search"
|
||||
empty: "No posts were found for '{}'"
|
||||
@@ -1133,16 +1289,24 @@ mobile/views/pages/settings.vue:
|
||||
dark-mode: "Dark Mode"
|
||||
i-am-under-limited-internet: "I'm in limited bandwidth"
|
||||
circle-icons: "Use circle icons"
|
||||
contrasted-acct: "Add contrast to username"
|
||||
timeline: "Timeline"
|
||||
show-reply-target: "Show reply target"
|
||||
show-my-renotes: "Show my reposts"
|
||||
show-renoted-my-notes: "Show renoted my posts"
|
||||
show-renoted-my-notes: "Show renoted posts of mine"
|
||||
show-local-renotes: "Show renoted local posts"
|
||||
post-style: "Post design"
|
||||
post-style-standard: "Standard"
|
||||
post-style-smart: "Smart"
|
||||
notification-position: "Notification style"
|
||||
notification-position-bottom: "Bottom"
|
||||
notification-position-top: "Top"
|
||||
theme: "Theme"
|
||||
behavior: "Behavior"
|
||||
fetch-on-scroll: "Endless loading on scroll"
|
||||
note-visibility: "Post visibility"
|
||||
default-note-visibility: "Default visibility"
|
||||
remember-note-visibility: "Remember post visibility"
|
||||
disable-via-mobile: "Don't mark the post as 'from mobile'"
|
||||
load-raw-images: "Show attached images in original quality"
|
||||
load-remote-media: "Show media from a remote server"
|
||||
@@ -1161,6 +1325,9 @@ mobile/views/pages/settings.vue:
|
||||
update-available-desc: "Updates will be applied after reloading the page"
|
||||
settings: "Settings"
|
||||
signout: "Sign out"
|
||||
sound: "Sounds"
|
||||
enable-sounds: "Enable sounds"
|
||||
mark-as-read-all-unread-notes: "Mark all posts as read"
|
||||
mobile/views/pages/user.vue:
|
||||
follows-you: "Follows you"
|
||||
following: "Following"
|
||||
@@ -1170,8 +1337,10 @@ mobile/views/pages/user.vue:
|
||||
timeline: "Timeline"
|
||||
media: "Media"
|
||||
is-suspended: "This account has been suspended."
|
||||
is-remote: "The user is a remote user. The profile that you see here may not complete."
|
||||
view-remote: "See his/her complete profile"
|
||||
mute: "Mute"
|
||||
unmute: "Unmute"
|
||||
block: "Block"
|
||||
unblock: "Unblock"
|
||||
mobile/views/pages/user/home.vue:
|
||||
recent-notes: "Recent notes"
|
||||
images: "Images"
|
||||
@@ -1217,3 +1386,29 @@ docs:
|
||||
description: "Description"
|
||||
dev/views/index.vue:
|
||||
manage-apps: "Manage apps"
|
||||
dev/views/apps.vue:
|
||||
manage-apps: "Manage apps"
|
||||
create-app: "Create app"
|
||||
app-missing: "No apps"
|
||||
dev/views/new-app.vue:
|
||||
create-app: "Creating application"
|
||||
app-name: "Application name"
|
||||
app-name-desc: "The name of your app"
|
||||
app-name-ex: "ex) Misskey for iOS"
|
||||
app-overview: "Application summary"
|
||||
app-desc: "A brief description or introduction of your app."
|
||||
app-desc-ex: "ex) Misskey iOS client."
|
||||
callback-url: "The callback URL (optional)"
|
||||
callback-url-desc: "The URL to redirect to after the user is authenticated via the authentication form."
|
||||
authority: "Permissions"
|
||||
authority-desc: "Only the functions requested here can be accessed via the API."
|
||||
authority-warning: "You can change it even after creating the application, but if you give different permissions, all user keys associated at that time will be invalidated."
|
||||
account-read: "View account information."
|
||||
account-write: "Modify account information."
|
||||
note-write: "Post."
|
||||
reaction-write: "Add or remove reactions."
|
||||
following-write: "Follow and unfollow."
|
||||
drive-read: "Read the drive."
|
||||
drive-write: "Upload/delete files in the drive."
|
||||
notification-read: "Read your notifications."
|
||||
notification-write: "Manage your notifications."
|
||||
|
||||
@@ -6,12 +6,33 @@ common:
|
||||
misskey: "Una ⭐️ del fediverso"
|
||||
about-title: "Una ⭐️ del fediverso"
|
||||
about: "Gracias por encontrae Misskey. Misskey es una <b>plataforma descentralizada de microblogging</b> nacida en la Tierra. Gracias a existir dentro del Fediverso (un universo donde se organizan varias plataformas sociales) se encuentra enlazada mutuamente con otras plataformas sociales. ¿Por què no te tomas un respiro del caos de la ciudad y te sumerges es una nueva manera de entender Internet?"
|
||||
intro:
|
||||
title: "Misskeyって?"
|
||||
about: "Misskeyはオープンソースの<b>分散型マイクロブログSNS</b>です。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。"
|
||||
features: "特徴"
|
||||
rich-contents: "投稿"
|
||||
rich-contents-desc: "自分の考え、話題の出来事、皆と共有したいことについて発信してください。必要であれば、様々な構文を使って投稿を装飾したり、好きな画像、動画などのファイルやアンケートを添付することもできます。"
|
||||
reaction: "リアクション"
|
||||
reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。"
|
||||
ui: "インターフェース"
|
||||
ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。"
|
||||
drive: "ドライブ"
|
||||
drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんか?もしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんか?Misskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。"
|
||||
outro: "他にもMisskeyにしかない機能はまだまだあるので、ぜひあなた自身の目で確かめてください。Misskeyは分散型SNSなので、このインスタンスが気に入らなければ他のインスタンスを試すこともできます。それでは、GLHF!"
|
||||
adblock:
|
||||
detected: "Por favor, desactive el bloqueador de publicidad."
|
||||
warning: "<strong>Misskey no tiene anuncios publicitarios.</strong> Sin embargo, algunas características podrían no estar disponibles si el bloqueador de publicidad está habilitado."
|
||||
application-authorization: "Autorizaciones de la aplicación."
|
||||
close: "Cerrar"
|
||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||
do-not-copy-paste: "Por favor no copies código aquí. Tu cuenta puede resultar comprometida."
|
||||
BSoD:
|
||||
fatal-error: ":( 致命的な問題が発生しました。"
|
||||
update-browser-os: "お使いのブラウザ(またはOS)のバージョンを更新すると解決する可能性があります。"
|
||||
error-code: "エラーコード"
|
||||
browser-version: "ブラウザ バージョン"
|
||||
client-version: "クライアント バージョン"
|
||||
email-support: "問題が解決しない場合は、上記の情報をお書き添えの上 syuilotan@yahoo.co.jp までご連絡ください。"
|
||||
thanks: "Thank you for using Misskey."
|
||||
got-it: "¡Listo!"
|
||||
customization-tips:
|
||||
title: "Consejos de personalización"
|
||||
@@ -41,6 +62,7 @@ common:
|
||||
years_ago: "Hace {} año(s)"
|
||||
month-and-day: "{day} de {month}"
|
||||
trash: "Papelera"
|
||||
drive: "ドライブ"
|
||||
weekday-short:
|
||||
sunday: "domingo"
|
||||
monday: "lunes"
|
||||
@@ -58,7 +80,7 @@ common:
|
||||
friday: "Viernes"
|
||||
saturday: "Sábado"
|
||||
reactions:
|
||||
like: "ええやん"
|
||||
like: "Me gusta"
|
||||
love: "amor"
|
||||
laugh: "risa"
|
||||
hmm: "hmm"
|
||||
@@ -68,6 +90,15 @@ common:
|
||||
confused: "confundido"
|
||||
rip: "RIP"
|
||||
pudding: "Chafado"
|
||||
note-visibility:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
followers: "フォロワー"
|
||||
followers-desc: "自分のフォロワーにのみ公開"
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
note-placeholders:
|
||||
a: "¿Qué haces?"
|
||||
b: "¿Qué está pasando?"
|
||||
@@ -84,8 +115,21 @@ common:
|
||||
my-token-regenerated: "Tu token se ha regenerado vas a ser desconectado."
|
||||
i-like-sushi: "Prefiero sushi a pudín"
|
||||
show-reversi-board-labels: "Mostrar etiquetas de filas y columnas en Reversi"
|
||||
verified-user: "公式アカウント"
|
||||
use-contrast-reversi-stones: "Hacer el color de la piedra claro en Reversi"
|
||||
verified-user: "Cuenta verificada"
|
||||
disable-animated-mfm: "Desactivar texto animado en una publicación"
|
||||
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
||||
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
||||
show-full-acct: "ユーザー名のホストを省略しない"
|
||||
reduce-motion: "UIの動きを減らす"
|
||||
this-setting-is-this-device-only: "このデバイスのみ"
|
||||
do-not-use-in-production: 'Esto está en desarrollo, no usarlo para producción.'
|
||||
is-remote-user: "このユーザー情報はコピーです。"
|
||||
is-remote-post: "この投稿情報はコピーです。"
|
||||
view-on-remote: "正確な情報を見る"
|
||||
error:
|
||||
title: '問題が発生しました'
|
||||
retry: 'やり直す'
|
||||
reversi:
|
||||
drawn: "Empatado"
|
||||
my-turn: "Mi turno"
|
||||
@@ -126,7 +170,10 @@ common:
|
||||
home: "Inicio"
|
||||
local: "Local"
|
||||
hybrid: "Social"
|
||||
hashtag: "ハッシュタグ"
|
||||
global: "Global"
|
||||
mentions: "あなた宛て"
|
||||
direct: "ダイレクト投稿"
|
||||
notifications: "Notificaciones"
|
||||
list: "Listado"
|
||||
swap-left: "Desplazar a la izq."
|
||||
@@ -138,6 +185,7 @@ common:
|
||||
rename: "Renombrar"
|
||||
stack-left: "A la izqda."
|
||||
pop-right: "A la dcha."
|
||||
dev: "アプリの作成に失敗しました。再度お試しください。"
|
||||
auth/views/form.vue:
|
||||
share-access: "¿Deseas <b>permitir</b> a <i>{{ app.name }}</i> acceder a tu cuenta?"
|
||||
permission-ask: "La aplicación requiere los siguientes permisos:"
|
||||
@@ -169,9 +217,9 @@ common/views/components/games/reversi/reversi.vue:
|
||||
common/views/components/games/reversi/reversi.game.vue:
|
||||
surrender: "Rendirse"
|
||||
surrendered: "Por rendirse"
|
||||
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||
looped-map: "ループマップ"
|
||||
can-put-everywhere: "どこでも置けるモード"
|
||||
is-llotheo: "El último gana (Llotheo)"
|
||||
looped-map: "Mapa en bucle"
|
||||
can-put-everywhere: "Puedes colocar donde quieras"
|
||||
common/views/components/games/reversi/reversi.index.vue:
|
||||
title: "Misskey Reversi"
|
||||
sub-title: "¡Juega Reversi con tus amigos!"
|
||||
@@ -229,6 +277,47 @@ common/views/components/connect-failed.troubleshooter.vue:
|
||||
success-desc: "Parece que la conexión ha sido posible. Por favor refresca la página."
|
||||
flush: "Limpiar la memoria caché"
|
||||
set-version: "Escoge la versión"
|
||||
common/views/components/media-banner.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
common/views/components/theme.vue:
|
||||
light-theme: "非ダークモード時に使用するテーマ"
|
||||
dark-theme: "ダークモード時に使用するテーマ"
|
||||
light-themes: "明るいテーマ"
|
||||
dark-themes: "暗いテーマ"
|
||||
install-a-theme: "テーマのインストール"
|
||||
theme-code: "テーマコード"
|
||||
install: "インストール"
|
||||
installed: "「{}」をインストールしました"
|
||||
create-a-theme: "テーマの作成"
|
||||
save-created-theme: "テーマを保存"
|
||||
primary-color: "プライマリ カラー"
|
||||
secondary-color: "セカンダリ カラー"
|
||||
text-color: "文字色"
|
||||
base-theme: "ベーステーマ"
|
||||
base-theme-light: "Light"
|
||||
base-theme-dark: "Dark"
|
||||
theme-name: "テーマ名"
|
||||
preview-created-theme: "プレビュー"
|
||||
invalid-theme: "テーマが正しくありません。"
|
||||
already-installed: "既にそのテーマはインストールされています。"
|
||||
saved: "保存しました"
|
||||
manage-themes: "テーマの管理"
|
||||
builtin-themes: "標準テーマ"
|
||||
my-themes: "マイテーマ"
|
||||
installed-themes: "インストールされたテーマ"
|
||||
select-theme: "テーマを選択してください"
|
||||
uninstall: "アンインストール"
|
||||
uninstalled: "「{}」をアンインストールしました"
|
||||
author: "作者"
|
||||
desc: "説明"
|
||||
export: "エクスポート"
|
||||
import: "インポート"
|
||||
import-by-code: "またはコードをペースト"
|
||||
theme-name-required: "テーマ名は必須です。"
|
||||
common/views/components/cw-button.vue:
|
||||
hide: "隠す"
|
||||
show: "もっと見る"
|
||||
common/views/components/messaging.vue:
|
||||
search-user: "Encuentra un usuario"
|
||||
you: "Tu"
|
||||
@@ -259,8 +348,12 @@ common/views/components/nav.vue:
|
||||
develop: "Desarrolladores"
|
||||
feedback: "Opiniones"
|
||||
common/views/components/note-menu.vue:
|
||||
detail: "Detalles"
|
||||
copy-link: "Copiar enlace"
|
||||
favorite: "Me gusta esta nota"
|
||||
unfavorite: "お気に入り解除"
|
||||
pin: "Fijar en el perfil"
|
||||
unpin: "ピン留め解除"
|
||||
delete: "Borrar"
|
||||
delete-confirm: "¿Seguro que quieres borrar la publicación?"
|
||||
remote: "Ver el original"
|
||||
@@ -287,10 +380,10 @@ common/views/components/signin.vue:
|
||||
signin: "Entra"
|
||||
or: "O"
|
||||
signin-with-twitter: "Ingresar con Twitter"
|
||||
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||
login-failed: "Autenticación fallida. Asegúrate de haber usado el nombre de usuario y contraseña correctos."
|
||||
common/views/components/signup.vue:
|
||||
invitation-code: "招待コード"
|
||||
invitation-info: "招待コードをお持ちでない方は、<a href=\"{}\">管理者</a>までご連絡ください。"
|
||||
invitation-code: "Código de invitación"
|
||||
invitation-info: "Si no tienes un código de invitación, por favor contacta un <a href=\"{}\">administrador</a>."
|
||||
username: "Usuario"
|
||||
checking: "Comprobando..."
|
||||
available: "Disponible"
|
||||
@@ -336,6 +429,28 @@ common/views/components/visibility-chooser.vue:
|
||||
specified: "Directo"
|
||||
specified-desc: "Publica solo para los seguidores que quieras"
|
||||
private: "Privada"
|
||||
common/views/components/trends.vue:
|
||||
count: "{}人が投稿"
|
||||
empty: "トレンドなし"
|
||||
common/views/components/profile-editor.vue:
|
||||
title: "プロフィール"
|
||||
name: "名前"
|
||||
account: "アカウント"
|
||||
location: "場所"
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
is-cat: "このアカウントはCatです"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-locked: "フォローを承認制にする"
|
||||
careful-bot: "Botからのフォローだけ承認制にする"
|
||||
advanced: "その他"
|
||||
privacy: "プライバシー"
|
||||
save: "保存"
|
||||
saved: "プロフィールを保存しました"
|
||||
uploading: "アップロード中"
|
||||
upload-failed: "アップロードに失敗しました"
|
||||
common/views/widgets/broadcast.vue:
|
||||
fetching: "Recuperando"
|
||||
no-broadcasts: "Sin emisión"
|
||||
@@ -359,8 +474,6 @@ common/views/widgets/posts-monitor.vue:
|
||||
toggle: "Alternar vistas"
|
||||
common/views/widgets/hashtags.vue:
|
||||
title: "Etiquetas"
|
||||
count: "{} usuarios mencionados"
|
||||
empty: "Ninguna tendencia popular ahora"
|
||||
common/views/widgets/server.vue:
|
||||
title: "Información del servidor"
|
||||
toggle: "Alternar vistas"
|
||||
@@ -398,6 +511,7 @@ common/views/pages/follow.vue:
|
||||
following: "Siguiendo"
|
||||
follow: "Seguir"
|
||||
request-pending: "Solicitud pendiente"
|
||||
follow-processing: "フォロー処理中"
|
||||
follow-request: "Solicitar suscripción"
|
||||
desktop:
|
||||
banner-crop-title: "Corta la parte que aparece como un banner"
|
||||
@@ -410,6 +524,7 @@ desktop:
|
||||
uploading-avatar: "Cargando un nuevo avatar"
|
||||
avatar-updated: "Avatar actualizado"
|
||||
choose-avatar: "Escoge una imagen de avatar"
|
||||
invalid-filetype: "Este tipo de archivo no es compatible aquí"
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Negro ... Total"
|
||||
notes: "Azul ... Notas"
|
||||
@@ -423,6 +538,31 @@ desktop/views/components/calendar.vue:
|
||||
prev: "Mes anterior"
|
||||
next: "Próximo mes"
|
||||
go: "Click para navegar"
|
||||
desktop/views/components/charts.vue:
|
||||
title: "Gráficos"
|
||||
per-day: "por día"
|
||||
per-hour: "por hora"
|
||||
federation: "フェデレーション"
|
||||
notes: "Publicaciones"
|
||||
users: "Usuarios"
|
||||
drive: "Unidad"
|
||||
network: "ネットワーク"
|
||||
charts:
|
||||
federation-instances: "インスタンスの増減"
|
||||
federation-instances-total: "インスタンスの積算"
|
||||
notes: "Número de publicaciones: aumentar/disminuir (Combinado)"
|
||||
local-notes: "Número de publicaciones: aumentar/disminuir (Local)"
|
||||
remote-notes: "Número de publicaciones: aumentar/disminuir (Remoto)"
|
||||
notes-total: "投稿の積算"
|
||||
users: "Número de usuarios: aumentar/disminuir"
|
||||
users-total: "ユーザーの積算"
|
||||
drive: "Capacidad de almacenamiento usada: aumentar/disminuir"
|
||||
drive-total: "ドライブ使用量の積算"
|
||||
drive-files: "Número de archivos almacenados: aumentar/disminuir"
|
||||
drive-files-total: "ドライブのファイル数の積算"
|
||||
network-requests: "リクエスト"
|
||||
network-time: "応答時間"
|
||||
network-usage: "通信量"
|
||||
desktop/views/components/choose-file-from-drive-window.vue:
|
||||
choose-file: "Escoger archivos"
|
||||
upload: "Cargar archivos de tu dispositivo"
|
||||
@@ -439,11 +579,10 @@ desktop/views/components/crop-window.vue:
|
||||
ok: "OK"
|
||||
desktop/views/components/drive-window.vue:
|
||||
used: "usado"
|
||||
drive: "Disco"
|
||||
desktop/views/components/drive.file.vue:
|
||||
avatar: "Avatar"
|
||||
banner: "Banner"
|
||||
nsfw: "閲覧注意"
|
||||
nsfw: "Ver más"
|
||||
contextmenu:
|
||||
rename: "Renombrar"
|
||||
mark-as-sensitive: "Marcar como 'sensible'"
|
||||
@@ -469,8 +608,6 @@ desktop/views/components/drive.folder.vue:
|
||||
rename: "Renombrar"
|
||||
rename-folder: "Renombrar carpeta"
|
||||
input-new-folder-name: "Escribe el nombre nuevo"
|
||||
desktop/views/components/drive.nav-folder.vue:
|
||||
drive: "Disco"
|
||||
desktop/views/components/drive.vue:
|
||||
search: "Buscar"
|
||||
load-more: "Cargar más"
|
||||
@@ -495,31 +632,32 @@ desktop/views/components/media-image.vue:
|
||||
sensitive: "El contenido es NSFW (no seguro para ver en el trabajo, 'not safe for work')"
|
||||
click-to-show: "Click para mostrar"
|
||||
desktop/views/components/media-video.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
sensitive: "Este contenido no es apropiado para ver en el trabajo"
|
||||
click-to-show: "Click para mostrar"
|
||||
desktop/views/components/follow-button.vue:
|
||||
following: "Siguiendo"
|
||||
follow: "Sigue"
|
||||
request-pending: "Pendiente de aprobación"
|
||||
follow-request: "フォロー申請"
|
||||
follow-processing: "フォロー処理中"
|
||||
follow-request: "Solicitud de seguir"
|
||||
desktop/views/components/followers-window.vue:
|
||||
followers: "{} のフォロワー"
|
||||
followers: "{} seguidores"
|
||||
desktop/views/components/followers.vue:
|
||||
empty: "フォロワーはいないようです。"
|
||||
empty: "Parece que no tienes seguidores aún."
|
||||
desktop/views/components/following-window.vue:
|
||||
following: "{} のフォロー"
|
||||
following: "Siguiendo {}"
|
||||
desktop/views/components/following.vue:
|
||||
empty: "フォロー中のユーザーはいないようです。"
|
||||
empty: "Parece que aún no sigues a nadie."
|
||||
desktop/views/components/friends-maker.vue:
|
||||
title: "気になるユーザーをフォロー:"
|
||||
empty: "おすすめのユーザーは見つかりませんでした。"
|
||||
fetching: "読み込んでいます"
|
||||
refresh: "もっと見る"
|
||||
close: "閉じる"
|
||||
title: "Usuarios recomendados:"
|
||||
empty: "No se pudieron encontrar usuarios para recomendar"
|
||||
fetching: "Cargando"
|
||||
refresh: "Más"
|
||||
close: "Cerrar"
|
||||
desktop/views/components/game-window.vue:
|
||||
game: "リバーシ"
|
||||
game: "Reversi"
|
||||
desktop/views/components/home.vue:
|
||||
done: "完了"
|
||||
done: "Listo"
|
||||
add-widget: "Agregar accesorio:"
|
||||
add: "Agregar"
|
||||
desktop/views/input-dialog.vue:
|
||||
@@ -537,16 +675,14 @@ desktop/views/components/note-detail.vue:
|
||||
location: "Localización"
|
||||
renote: "Republicar"
|
||||
add-reaction: "Agregar una reacción"
|
||||
desktop/views/components/notes.note.vue:
|
||||
reposted-by: "Republicado por {}"
|
||||
reply: "Responder"
|
||||
renote: "Republicar"
|
||||
add-reaction: "Agregar una reacción"
|
||||
detail: "Mostrar detalles"
|
||||
private: "Esta publicación es privada"
|
||||
deleted: "Esta publicación ha sido borrada"
|
||||
hide: "隠す"
|
||||
see-more: "もっと見る"
|
||||
desktop/views/components/note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
reply: "返信"
|
||||
renote: "Renote"
|
||||
add-reaction: "リアクション"
|
||||
detail: "詳細"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
desktop/views/components/notes.vue:
|
||||
error: "Error al cargar."
|
||||
retry: "Reintentar"
|
||||
@@ -582,7 +718,7 @@ desktop/views/components/post-form.vue:
|
||||
geolocation-alert: "Tu dispositivo no tiene soporte de geolocalización."
|
||||
error: "Error"
|
||||
enter-username: "Por favor escribe un nombre de usuario..."
|
||||
annotations: "内容への注釈 (オプション)"
|
||||
annotations: "Anotaciones a la publicación (opcional)"
|
||||
desktop/views/components/post-form-window.vue:
|
||||
note: "Nota nueva"
|
||||
reply: "Responder"
|
||||
@@ -605,44 +741,56 @@ desktop/views/components/settings.vue:
|
||||
profile: "Perfil"
|
||||
notification: "Notificación"
|
||||
apps: "Aplicaciones"
|
||||
mute: "Silenciar"
|
||||
drive: "Disco"
|
||||
mute-and-block: "ミュート/ブロック"
|
||||
blocking: "ブロック"
|
||||
security: "Seguridad"
|
||||
signin: "Historial de inicios de sesión"
|
||||
password: "Contraseña"
|
||||
2fa: "Autenticación de Doble-Factor"
|
||||
other: "Otros"
|
||||
license: "Licencia"
|
||||
theme: "テーマ"
|
||||
behaviour: "Acciones"
|
||||
fetch-on-scroll: "Desplazamiento infinito"
|
||||
fetch-on-scroll-desc: "Cuando te deslizas al final de la página nuevo contenido se carga automáticamente."
|
||||
note-visibility: "投稿の公開範囲"
|
||||
default-note-visibility: "デフォルトの公開範囲"
|
||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||
auto-popout: "Ventana emergente automática"
|
||||
auto-popout-desc: "Muestra una ventana emergente si es posible. Esta configuración depende del navegador."
|
||||
advanced: "Configuración avanzada"
|
||||
api-via-stream: "Solicitar API por medio de un stream"
|
||||
api-via-stream-desc: "Las peticiones de las API se realizan por conexiones WebSocket en lugar de las tradicionales (para una mejora en el rendimiento). Esta función depende del navegador."
|
||||
deck-nav: "デッキ内ナビゲーション"
|
||||
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
|
||||
deck-default: "デッキをデフォルトのUIにする"
|
||||
display: "Diseño y pantalla"
|
||||
customize: "Personaliza la página principal"
|
||||
wallpaper: "壁紙"
|
||||
choose-wallpaper: "Elije un fondo"
|
||||
delete-wallpaper: "Suprimir fondo"
|
||||
dark-mode: "Modo Nocturno"
|
||||
use-shadow: "UIに影を使用"
|
||||
rounded-corners: "UIの角を丸める"
|
||||
circle-icons: "Usar iconos circulares"
|
||||
gradient-window-header: "Usar degradados en las cabeceras de las páginas"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
post-form-on-timeline: "Mostrar el formulario de las entradas encima de la línea de tiempo"
|
||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||
show-clock-on-header: "右上に時計を表示する"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
timeline: "タイムライン"
|
||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||
show-maps: "マップの自動展開"
|
||||
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
||||
deck-column-align: "デッキのカラムの位置"
|
||||
deck-column-align-center: "中央"
|
||||
deck-column-align-left: "左"
|
||||
sound: "サウンド"
|
||||
enable-sounds: "サウンドを有効にする"
|
||||
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
|
||||
volume: "ボリューム"
|
||||
test: "テスト"
|
||||
mobile: "モバイル"
|
||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||
language: "言語"
|
||||
pick-language: "言語を選択"
|
||||
recommended: "推奨"
|
||||
@@ -678,6 +826,10 @@ desktop/views/components/settings.vue:
|
||||
tools: "Herramientas"
|
||||
task-manager: "Navegador de tareas"
|
||||
third-parties: "Servicios externos"
|
||||
navbar-position: "ナビゲーションバーの位置"
|
||||
navbar-position-top: "上"
|
||||
navbar-position-left: "左"
|
||||
navbar-position-right: "右"
|
||||
desktop/views/components/settings.2fa.vue:
|
||||
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
||||
detail: "Ver detalles..."
|
||||
@@ -696,20 +848,32 @@ desktop/views/components/settings.2fa.vue:
|
||||
success: "¡Configuraciones guardadas!"
|
||||
failed: "Error al configurar. Por favor asegúrate de que el token es correcto."
|
||||
info: "Desde ahora, ingresa el token que se muestra en tu dispositivo adicionalmente a tu contraseña cuando inicies sesión en Misskey"
|
||||
desktop/views/components/settings.api.vue:
|
||||
intro: "Para acceder al API, configura este token como la letra \"i\" de los parámetros requeridos."
|
||||
caution: "Por favor no muestres este token a otros (no lo ingreses en otro lugar que no sea aquí). De otra forma, tu cuenta puede llegar a ser comprometida."
|
||||
regeneration-of-token: "En el caso no deseado de que este token lo tenga otra persona, puedes regenerarlo."
|
||||
regenerate-token: "Regenerar el token"
|
||||
common/views/components/api-settings.vue:
|
||||
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||
regenerate-token: "トークンを再生成"
|
||||
token: "Token:"
|
||||
enter-password: "Por favor ingresa tu contraseña"
|
||||
enter-password: "パスワードを入力してください"
|
||||
console:
|
||||
title: 'APIコンソール'
|
||||
endpoint: 'エンドポイント'
|
||||
parameter: 'パラメータ'
|
||||
send: '送信'
|
||||
sending: '応答待ち'
|
||||
response: '結果'
|
||||
desktop/views/components/settings.apps.vue:
|
||||
no-apps: "No hay aplicaciones asociadas"
|
||||
desktop/views/components/settings.drive.vue:
|
||||
max: "Max"
|
||||
in-use: "en uso."
|
||||
desktop/views/components/settings.mute.vue:
|
||||
no-users: "No hay usuarios silenciados"
|
||||
common/views/components/drive-settings.vue:
|
||||
max: "容量"
|
||||
in-use: "使用中"
|
||||
stats: "統計"
|
||||
common/views/components/mute-and-block.vue:
|
||||
mute-and-block: "ミュートとブロック"
|
||||
mute: "ミュート"
|
||||
block: "ブロック"
|
||||
no-muted-users: "ミュートしているユーザーはいません"
|
||||
no-blocked-users: "ブロックしているユーザーはいません"
|
||||
desktop/views/components/settings.password.vue:
|
||||
reset: "Cambiar contraseña"
|
||||
enter-current-password: "Ingresar contraseña actual"
|
||||
@@ -717,20 +881,6 @@ desktop/views/components/settings.password.vue:
|
||||
enter-new-password-again: "Ingresar nueva contraseña de nuevo"
|
||||
not-match: "Las nuevas contraseñas no se corresponden consigo mismas"
|
||||
changed: "Contraseña actualizada"
|
||||
desktop/views/components/settings.profile.vue:
|
||||
avatar: "Avatar"
|
||||
choice-avatar: "Escoger una imagen"
|
||||
name: "Nombre"
|
||||
location: "Localización"
|
||||
description: "Descripción"
|
||||
birthday: "Fecha de nacimiento"
|
||||
save: "Perfil actualizado"
|
||||
locked-account: "Protege tu cuenta"
|
||||
is-locked: "Crear una nota privada"
|
||||
other: "その他"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
profile-updated: "プロフィールを更新しました"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
@@ -743,41 +893,47 @@ desktop/views/components/timeline.vue:
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
mentions: "あなた宛て"
|
||||
messages: "メッセージ"
|
||||
list: "リスト"
|
||||
desktop/views/components/ui.header.vue:
|
||||
welcome-back: "おかえりなさい、"
|
||||
adjective: "さん"
|
||||
desktop/views/components/ui.header.account.vue:
|
||||
profile: "プロフィール"
|
||||
drive: "ドライブ"
|
||||
favorites: "お気に入り"
|
||||
lists: "リスト"
|
||||
follow-requests: "フォロー申請"
|
||||
customize: "ホームのカスタマイズ"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
dark: "闇に飲まれる"
|
||||
desktop/views/components/ui.header.nav.vue:
|
||||
home: "ホーム"
|
||||
deck: "デッキ"
|
||||
messaging: "メッセージ"
|
||||
game: "ゲーム"
|
||||
desktop/views/components/ui.header.notifications.vue:
|
||||
title: "通知"
|
||||
desktop/views/components/ui.header.post.vue:
|
||||
post: "新規投稿"
|
||||
desktop/views/components/ui.header.search.vue:
|
||||
placeholder: "検索"
|
||||
desktop/views/components/received-follow-requests-window.vue:
|
||||
title: "フォロー申請"
|
||||
accept: "承認"
|
||||
reject: "拒否"
|
||||
desktop/views/components/user-lists-window.vue:
|
||||
title: "リスト"
|
||||
create-list: "リストを作成"
|
||||
hashtag: "ハッシュタグ"
|
||||
add-tag-timeline: "ハッシュタグを追加"
|
||||
add-list: "リストを追加"
|
||||
list-name: "リスト名"
|
||||
desktop/views/components/ui.header.vue:
|
||||
welcome-back: "Bienvenido/a de vuelta,"
|
||||
adjective: "-san"
|
||||
desktop/views/components/ui.header.account.vue:
|
||||
profile: "Tu perfil"
|
||||
favorites: "Favoritos"
|
||||
lists: "Listas"
|
||||
follow-requests: "Solicitudes de seguimiento"
|
||||
customize: "Personalizar la página de inicio"
|
||||
admin: "Admin"
|
||||
settings: "Configuraciones"
|
||||
signout: "Desconectarse"
|
||||
dark: "Sumergirse en la oscuridad"
|
||||
desktop/views/components/ui.header.nav.vue:
|
||||
home: "Inicio"
|
||||
deck: "Cubierta"
|
||||
messaging: "Mensajes"
|
||||
game: "Juegos"
|
||||
desktop/views/components/ui.header.notifications.vue:
|
||||
title: "Notificaciones"
|
||||
desktop/views/components/ui.header.post.vue:
|
||||
post: "Crear una publicación"
|
||||
desktop/views/components/ui.header.search.vue:
|
||||
placeholder: "Buscar"
|
||||
desktop/views/components/received-follow-requests-window.vue:
|
||||
title: "Solicitudes de seguidores"
|
||||
accept: "Aceptar"
|
||||
reject: "Rechazar"
|
||||
desktop/views/components/user-lists-window.vue:
|
||||
title: "Listas de usuario"
|
||||
create-list: "Crear lista"
|
||||
list-name: "Nombre de lista"
|
||||
desktop/views/components/user-preview.vue:
|
||||
notes: "投稿"
|
||||
notes: "Publicaciones"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
desktop/views/components/users-list.vue:
|
||||
@@ -792,16 +948,20 @@ desktop/views/components/window.vue:
|
||||
close: "閉じる"
|
||||
desktop/views/pages/admin/admin.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
drive: "ドライブ"
|
||||
users: "ユーザー"
|
||||
update: "更新"
|
||||
announcements: "お知らせ"
|
||||
hashtags: "ハッシュタグ"
|
||||
desktop/views/pages/admin/admin.dashboard.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
all-users: "全てのユーザー"
|
||||
original-users: "このインスタンスのユーザー"
|
||||
all-notes: "全てのノート"
|
||||
original-notes: "このインスタンスのノート"
|
||||
all-notes: "全ての投稿"
|
||||
original-notes: "このインスタンスの投稿"
|
||||
invite: "招待"
|
||||
banner-url: "Banner URL"
|
||||
disableRegistration: "Disable new user registration"
|
||||
disableLocalTimeline: "Disable the local timeline"
|
||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||
suspend-user: "ユーザーの凍結"
|
||||
suspend: "凍結"
|
||||
@@ -818,26 +978,28 @@ desktop/views/pages/admin/admin.unverify-user.vue:
|
||||
unverify-user: "ユーザーの公式アカウント解除"
|
||||
unverify: "公式アカウントを解除する"
|
||||
unverified: "公式アカウントを解除しました"
|
||||
desktop/views/pages/admin/admin.notes-chart.vue:
|
||||
title: "投稿"
|
||||
local: "ローカル"
|
||||
remote: "リモート"
|
||||
desktop/views/pages/admin/admin.users-chart.vue:
|
||||
title: "ユーザー"
|
||||
local: "ローカル"
|
||||
remote: "リモート"
|
||||
desktop/views/pages/admin/admin.drive-chart.vue:
|
||||
title: "ドライブ"
|
||||
local: "ローカル"
|
||||
remote: "リモート"
|
||||
desktop/views/pages/admin/admin.announcements.vue:
|
||||
announcements: "お知らせ"
|
||||
desktop/views/pages/admin/admin.hashtags.vue:
|
||||
hided-tags: "Hidden Tags"
|
||||
desktop/views/pages/deck/deck.tl-column.vue:
|
||||
is-media-only: "メディア投稿のみ"
|
||||
is-media-view: "メディアビュー"
|
||||
edit: "オプション"
|
||||
desktop/views/pages/deck/deck.note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
desktop/views/pages/deck/deck.user-column.vue:
|
||||
posts: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
images: "画像"
|
||||
activity: "アクティビティ"
|
||||
timeline: "タイムライン"
|
||||
pinned-notes: "ピン留めされた投稿"
|
||||
push-to-a-list: "リストに追加"
|
||||
desktop/views/pages/stats/stats.vue:
|
||||
all-users: "全てのユーザー"
|
||||
original-users: "このインスタンスのユーザー"
|
||||
all-notes: "全ての投稿"
|
||||
original-notes: "このインスタンスの投稿"
|
||||
desktop/views/pages/welcome.vue:
|
||||
about: "詳しく..."
|
||||
gotit: "わかった"
|
||||
@@ -846,7 +1008,10 @@ desktop/views/pages/welcome.vue:
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
announcements: "お知らせ"
|
||||
photos: "最近の画像"
|
||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||
info: "情報"
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Misskey Drive"
|
||||
desktop/views/pages/favorites.vue:
|
||||
@@ -882,9 +1047,6 @@ desktop/views/pages/user/user.friends.vue:
|
||||
no-users: "よく話すユーザーはいません"
|
||||
desktop/views/pages/user/user.vue:
|
||||
is-suspended: "このユーザーは凍結されています。"
|
||||
is-remote: "このユーザーはリモートユーザーです。"
|
||||
view-remote: "正確な情報を見る"
|
||||
desktop/views/pages/user/user.home.vue:
|
||||
last-used-at: "最終アクセス"
|
||||
desktop/views/pages/user/user.photos.vue:
|
||||
title: "フォト"
|
||||
@@ -898,6 +1060,9 @@ desktop/views/pages/user/user.profile.vue:
|
||||
mute: "ミュートする"
|
||||
muted: "ミュートしています"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロックする"
|
||||
unblock: "ブロック解除"
|
||||
block-confirm: "このユーザーをブロックしますか?"
|
||||
push-to-a-list: "リストに追加"
|
||||
list-pushed: "{user}を{list}に追加しました。"
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
@@ -905,6 +1070,10 @@ desktop/views/pages/user/user.header.vue:
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
is-bot: "このアカウントはBotです"
|
||||
years-old: "歳"
|
||||
year: "年"
|
||||
month: "月"
|
||||
day: "日"
|
||||
desktop/views/pages/user/user.timeline.vue:
|
||||
default: "投稿"
|
||||
with-replies: "投稿と返信"
|
||||
@@ -934,7 +1103,6 @@ desktop/views/widgets/users.vue:
|
||||
refresh: "他を見る"
|
||||
no-one: "いません!"
|
||||
mobile/views/components/drive.vue:
|
||||
drive: "ドライブ"
|
||||
used: "使用中"
|
||||
folder-count: "フォルダ"
|
||||
count-separator: "、"
|
||||
@@ -964,6 +1132,8 @@ mobile/views/components/drive.file-detail.vue:
|
||||
hash: "ハッシュ (md5)"
|
||||
exif: "EXIF"
|
||||
nsfw: "閲覧注意"
|
||||
mark-as-sensitive: "閲覧注意に設定"
|
||||
unmark-as-sensitive: "閲覧注意を解除"
|
||||
mobile/views/components/media-image.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
@@ -974,6 +1144,7 @@ mobile/views/components/follow-button.vue:
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-processing: "フォロー処理中"
|
||||
follow-request: "フォロー申請"
|
||||
mobile/views/components/friends-maker.vue:
|
||||
title: "気になるユーザーをフォロー"
|
||||
@@ -983,8 +1154,6 @@ mobile/views/components/friends-maker.vue:
|
||||
close: "閉じる"
|
||||
mobile/views/components/note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
more: "もっと見る"
|
||||
less: "隠す"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
location: "位置情報"
|
||||
@@ -1037,13 +1206,13 @@ mobile/views/components/ui.nav.vue:
|
||||
messaging: "メッセージ"
|
||||
follow-requests: "フォロー申請"
|
||||
search: "検索"
|
||||
drive: "ドライブ"
|
||||
favorites: "お気に入り"
|
||||
user-lists: "リスト"
|
||||
widgets: "ウィジェット"
|
||||
game: "ゲーム"
|
||||
darkmode: "ダークモード"
|
||||
settings: "設定"
|
||||
admin: "管理"
|
||||
about: "Misskeyについて"
|
||||
mobile/views/components/user-timeline.vue:
|
||||
no-notes: "このユーザーは投稿していないようです。"
|
||||
@@ -1059,7 +1228,6 @@ mobile/views/pages/user-lists.vue:
|
||||
title: "リスト"
|
||||
enter-list-name: "リスト名を入力してください"
|
||||
mobile/views/pages/drive.vue:
|
||||
drive: "ドライブ"
|
||||
more: "もっと見る"
|
||||
mobile/views/pages/signup.vue:
|
||||
lets-start: "📦 始めましょう"
|
||||
@@ -1072,6 +1240,8 @@ mobile/views/pages/home.vue:
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
mentions: "あなた宛て"
|
||||
messages: "メッセージ"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
mobile/views/pages/welcome.vue:
|
||||
@@ -1102,20 +1272,6 @@ mobile/views/pages/notifications.vue:
|
||||
read-all: "すべての通知を既読にしますか?"
|
||||
mobile/views/pages/games/reversi.vue:
|
||||
reversi: "リバーシ"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
name: "名前"
|
||||
account: "アカウント"
|
||||
location: "場所"
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
is-cat: "このアカウントはCatです"
|
||||
save: "保存"
|
||||
saved: "プロフィールを保存しました"
|
||||
uploading: "アップロード中"
|
||||
upload-failed: "アップロードに失敗しました"
|
||||
mobile/views/pages/search.vue:
|
||||
search: "検索"
|
||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||
@@ -1133,6 +1289,7 @@ mobile/views/pages/settings.vue:
|
||||
dark-mode: "ダークモード"
|
||||
i-am-under-limited-internet: "私は通信を制限されている"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
timeline: "タイムライン"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||
@@ -1141,8 +1298,15 @@ mobile/views/pages/settings.vue:
|
||||
post-style: "投稿の表示スタイル"
|
||||
post-style-standard: "標準"
|
||||
post-style-smart: "スマート"
|
||||
notification-position: "通知の表示"
|
||||
notification-position-bottom: "下"
|
||||
notification-position-top: "上"
|
||||
theme: "テーマ"
|
||||
behavior: "動作"
|
||||
fetch-on-scroll: "スクロールで自動読み込み"
|
||||
note-visibility: "投稿の公開範囲"
|
||||
default-note-visibility: "デフォルトの公開範囲"
|
||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||
load-raw-images: "添付された画像を高画質で表示する"
|
||||
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||
@@ -1161,6 +1325,9 @@ mobile/views/pages/settings.vue:
|
||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
sound: "サウンド"
|
||||
enable-sounds: "サウンドを有効にする"
|
||||
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
|
||||
mobile/views/pages/user.vue:
|
||||
follows-you: "フォローされています"
|
||||
following: "フォロー"
|
||||
@@ -1170,8 +1337,10 @@ mobile/views/pages/user.vue:
|
||||
timeline: "タイムライン"
|
||||
media: "メディア"
|
||||
is-suspended: "このユーザーは凍結されています。"
|
||||
is-remote: "このユーザーはリモートユーザーです。"
|
||||
view-remote: "正確な情報を見る"
|
||||
mute: "ミュート"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロック"
|
||||
unblock: "ブロック解除"
|
||||
mobile/views/pages/user/home.vue:
|
||||
recent-notes: "最近の投稿"
|
||||
images: "画像"
|
||||
@@ -1217,3 +1386,29 @@ docs:
|
||||
description: "説明"
|
||||
dev/views/index.vue:
|
||||
manage-apps: "アプリの管理"
|
||||
dev/views/apps.vue:
|
||||
manage-apps: "アプリを管理"
|
||||
create-app: "アプリ作成"
|
||||
app-missing: "アプリなし"
|
||||
dev/views/new-app.vue:
|
||||
create-app: "アプリケーションの作成"
|
||||
app-name: "アプリケーション名"
|
||||
app-name-desc: "あなたのアプリの名称。"
|
||||
app-name-ex: "ex) Misskey for iOS"
|
||||
app-overview: "アプリの概要"
|
||||
app-desc: "あなたのアプリの簡単な説明や紹介。"
|
||||
app-desc-ex: "ex) Misskey iOSクライアント。"
|
||||
callback-url: "コールバックURL (オプション)"
|
||||
callback-url-desc: "ユーザーが認証フォームで認証した際にリダイレクトするURLを設定できます。"
|
||||
authority: "権限"
|
||||
authority-desc: "ここで要求した機能だけがAPIからアクセスできます。"
|
||||
authority-warning: "アプリ作成後も変更できますが、新たな権限を付与する場合、その時点で関連付けられているユーザーキーはすべて無効になります。"
|
||||
account-read: "アカウントの情報を見る。"
|
||||
account-write: "アカウントの情報を操作する。"
|
||||
note-write: "投稿する。"
|
||||
reaction-write: "リアクションしたりリアクションをキャンセルする。"
|
||||
following-write: "フォローしたりフォロー解除する。"
|
||||
drive-read: "ドライブを見る。"
|
||||
drive-write: "ドライブを操作する。"
|
||||
notification-read: "通知を見る。"
|
||||
notification-write: "通知を操作する。"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -5,24 +5,9 @@
|
||||
const fs = require('fs');
|
||||
const yaml = require('js-yaml');
|
||||
|
||||
const loadLang = lang => yaml.safeLoad(
|
||||
fs.readFileSync(`${__dirname}/${lang}.yml`, 'utf-8'));
|
||||
const langs = ['de-DE', 'en-US', 'fr-FR', 'ja-JP', 'ja-KS', 'pl-PL', 'es-ES', 'nl-NL'];
|
||||
|
||||
const native = loadLang('ja-JP');
|
||||
const loadLocale = lang => yaml.safeLoad(fs.readFileSync(`${__dirname}/${lang}.yml`, 'utf-8'));
|
||||
const locales = langs.map(lang => ({ [lang]: loadLocale(lang) }));
|
||||
|
||||
const langs = {
|
||||
'de-DE': loadLang('de-DE'),
|
||||
'en-US': loadLang('en-US'),
|
||||
'fr-FR': loadLang('fr-FR'),
|
||||
'ja-JP': native,
|
||||
'ja-KS': loadLang('ja-KS'),
|
||||
'pl-PL': loadLang('pl-PL'),
|
||||
'es-ES': loadLang('es-ES')
|
||||
};
|
||||
|
||||
Object.values(langs).forEach(locale => {
|
||||
// Extend native language (Japanese)
|
||||
locale = Object.assign({}, native, locale);
|
||||
});
|
||||
|
||||
module.exports = langs;
|
||||
module.exports = locales.reduce((a, b) => ({ ...a, ...b }));
|
||||
|
||||
@@ -6,12 +6,33 @@ common:
|
||||
misskey: "A ⭐ of fediverse"
|
||||
about-title: "A ⭐ of fediverse."
|
||||
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
||||
intro:
|
||||
title: "Misskeyって?"
|
||||
about: "Misskeyはオープンソースの<b>分散型マイクロブログSNS</b>です。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。"
|
||||
features: "特徴"
|
||||
rich-contents: "投稿"
|
||||
rich-contents-desc: "自分の考え、話題の出来事、皆と共有したいことについて発信してください。必要であれば、様々な構文を使って投稿を装飾したり、好きな画像、動画などのファイルやアンケートを添付することもできます。"
|
||||
reaction: "リアクション"
|
||||
reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。"
|
||||
ui: "インターフェース"
|
||||
ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。"
|
||||
drive: "ドライブ"
|
||||
drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんか?もしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんか?Misskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。"
|
||||
outro: "他にもMisskeyにしかない機能はまだまだあるので、ぜひあなた自身の目で確かめてください。Misskeyは分散型SNSなので、このインスタンスが気に入らなければ他のインスタンスを試すこともできます。それでは、GLHF!"
|
||||
adblock:
|
||||
detected: "広告ブロッカーを無効にしてください"
|
||||
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
||||
application-authorization: "アプリの連携"
|
||||
close: "閉じる"
|
||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||
BSoD:
|
||||
fatal-error: ":( 致命的な問題が発生しました。"
|
||||
update-browser-os: "お使いのブラウザ(またはOS)のバージョンを更新すると解決する可能性があります。"
|
||||
error-code: "エラーコード"
|
||||
browser-version: "ブラウザ バージョン"
|
||||
client-version: "クライアント バージョン"
|
||||
email-support: "問題が解決しない場合は、上記の情報をお書き添えの上 syuilotan@yahoo.co.jp までご連絡ください。"
|
||||
thanks: "Thank you for using Misskey."
|
||||
got-it: "わかった"
|
||||
customization-tips:
|
||||
title: "カスタマイズのヒント"
|
||||
@@ -41,6 +62,7 @@ common:
|
||||
years_ago: "{}年前"
|
||||
month-and-day: "{month}月 {day}日"
|
||||
trash: "ゴミ箱"
|
||||
drive: "ドライブ"
|
||||
weekday-short:
|
||||
sunday: "日"
|
||||
monday: "月"
|
||||
@@ -58,7 +80,7 @@ common:
|
||||
friday: "金曜日"
|
||||
saturday: "土曜日"
|
||||
reactions:
|
||||
like: "ええやん"
|
||||
like: "いいね"
|
||||
love: "しゅき"
|
||||
laugh: "笑"
|
||||
hmm: "ふぅ~む"
|
||||
@@ -68,6 +90,15 @@ common:
|
||||
confused: "こまこまのこまり"
|
||||
rip: "RIP"
|
||||
pudding: "Pudding"
|
||||
note-visibility:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
followers: "フォロワー"
|
||||
followers-desc: "自分のフォロワーにのみ公開"
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
note-placeholders:
|
||||
a: "今どうしてる?"
|
||||
b: "何かありましたか?"
|
||||
@@ -84,8 +115,21 @@ common:
|
||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
||||
verified-user: "公式アカウント"
|
||||
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
||||
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
||||
show-full-acct: "ユーザー名のホストを省略しない"
|
||||
reduce-motion: "UIの動きを減らす"
|
||||
this-setting-is-this-device-only: "このデバイスのみ"
|
||||
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
||||
is-remote-user: "このユーザー情報はコピーです。"
|
||||
is-remote-post: "この投稿情報はコピーです。"
|
||||
view-on-remote: "正確な情報を見る"
|
||||
error:
|
||||
title: '問題が発生しました'
|
||||
retry: 'やり直す'
|
||||
reversi:
|
||||
drawn: "引き分け"
|
||||
my-turn: "あなたのターンです"
|
||||
@@ -126,7 +170,10 @@ common:
|
||||
home: "ホーム"
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
hashtag: "ハッシュタグ"
|
||||
global: "グローバル"
|
||||
mentions: "あなた宛て"
|
||||
direct: "ダイレクト投稿"
|
||||
notifications: "通知"
|
||||
list: "リスト"
|
||||
swap-left: "左に移動"
|
||||
@@ -138,6 +185,7 @@ common:
|
||||
rename: "名前を変更"
|
||||
stack-left: "左に重ねる"
|
||||
pop-right: "右に出す"
|
||||
dev: "アプリの作成に失敗しました。再度お試しください。"
|
||||
auth/views/form.vue:
|
||||
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
|
||||
permission-ask: "このアプリは次の権限を要求しています:"
|
||||
@@ -229,6 +277,47 @@ common/views/components/connect-failed.troubleshooter.vue:
|
||||
success-desc: "正常に接続できるようです。ページを再度読み込みしてください。"
|
||||
flush: "キャッシュの削除"
|
||||
set-version: "バージョン指定"
|
||||
common/views/components/media-banner.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
common/views/components/theme.vue:
|
||||
light-theme: "非ダークモード時に使用するテーマ"
|
||||
dark-theme: "ダークモード時に使用するテーマ"
|
||||
light-themes: "明るいテーマ"
|
||||
dark-themes: "暗いテーマ"
|
||||
install-a-theme: "テーマのインストール"
|
||||
theme-code: "テーマコード"
|
||||
install: "インストール"
|
||||
installed: "「{}」をインストールしました"
|
||||
create-a-theme: "テーマの作成"
|
||||
save-created-theme: "テーマを保存"
|
||||
primary-color: "プライマリ カラー"
|
||||
secondary-color: "セカンダリ カラー"
|
||||
text-color: "文字色"
|
||||
base-theme: "ベーステーマ"
|
||||
base-theme-light: "Light"
|
||||
base-theme-dark: "Dark"
|
||||
theme-name: "テーマ名"
|
||||
preview-created-theme: "プレビュー"
|
||||
invalid-theme: "テーマが正しくありません。"
|
||||
already-installed: "既にそのテーマはインストールされています。"
|
||||
saved: "保存しました"
|
||||
manage-themes: "テーマの管理"
|
||||
builtin-themes: "標準テーマ"
|
||||
my-themes: "マイテーマ"
|
||||
installed-themes: "インストールされたテーマ"
|
||||
select-theme: "テーマを選択してください"
|
||||
uninstall: "アンインストール"
|
||||
uninstalled: "「{}」をアンインストールしました"
|
||||
author: "作者"
|
||||
desc: "説明"
|
||||
export: "エクスポート"
|
||||
import: "インポート"
|
||||
import-by-code: "またはコードをペースト"
|
||||
theme-name-required: "テーマ名は必須です。"
|
||||
common/views/components/cw-button.vue:
|
||||
hide: "隠す"
|
||||
show: "もっと見る"
|
||||
common/views/components/messaging.vue:
|
||||
search-user: "ユーザーを探す"
|
||||
you: "あなた"
|
||||
@@ -259,8 +348,12 @@ common/views/components/nav.vue:
|
||||
develop: "開発者"
|
||||
feedback: "フィードバック"
|
||||
common/views/components/note-menu.vue:
|
||||
detail: "詳細"
|
||||
copy-link: "リンクをコピー"
|
||||
favorite: "お気に入り"
|
||||
unfavorite: "お気に入り解除"
|
||||
pin: "ピン留め"
|
||||
unpin: "ピン留め解除"
|
||||
delete: "削除"
|
||||
delete-confirm: "この投稿を削除しますか?"
|
||||
remote: "投稿元で見る"
|
||||
@@ -336,6 +429,28 @@ common/views/components/visibility-chooser.vue:
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
common/views/components/trends.vue:
|
||||
count: "{}人が投稿"
|
||||
empty: "トレンドなし"
|
||||
common/views/components/profile-editor.vue:
|
||||
title: "プロフィール"
|
||||
name: "名前"
|
||||
account: "アカウント"
|
||||
location: "場所"
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
is-cat: "このアカウントはCatです"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-locked: "フォローを承認制にする"
|
||||
careful-bot: "Botからのフォローだけ承認制にする"
|
||||
advanced: "その他"
|
||||
privacy: "プライバシー"
|
||||
save: "保存"
|
||||
saved: "プロフィールを保存しました"
|
||||
uploading: "アップロード中"
|
||||
upload-failed: "アップロードに失敗しました"
|
||||
common/views/widgets/broadcast.vue:
|
||||
fetching: "確認中"
|
||||
no-broadcasts: "お知らせはありません"
|
||||
@@ -359,8 +474,6 @@ common/views/widgets/posts-monitor.vue:
|
||||
toggle: "表示を切り替え"
|
||||
common/views/widgets/hashtags.vue:
|
||||
title: "ハッシュタグ"
|
||||
count: "{}人が投稿"
|
||||
empty: "トレンドなし"
|
||||
common/views/widgets/server.vue:
|
||||
title: "サーバー情報"
|
||||
toggle: "表示を切り替え"
|
||||
@@ -398,6 +511,7 @@ common/views/pages/follow.vue:
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-processing: "フォロー処理中"
|
||||
follow-request: "フォロー申請"
|
||||
desktop:
|
||||
banner-crop-title: "バナーとして表示する部分を選択"
|
||||
@@ -410,6 +524,7 @@ desktop:
|
||||
uploading-avatar: "新しいアバターをアップロードしています"
|
||||
avatar-updated: "アバターを更新しました"
|
||||
choose-avatar: "アバターにする画像を選択"
|
||||
invalid-filetype: "この形式のファイルはサポートされていません"
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Black ... Total"
|
||||
notes: "Blue ... Notes"
|
||||
@@ -423,6 +538,31 @@ desktop/views/components/calendar.vue:
|
||||
prev: "前の月"
|
||||
next: "次の月"
|
||||
go: "クリックして時間遡行"
|
||||
desktop/views/components/charts.vue:
|
||||
title: "チャート"
|
||||
per-day: "1日ごと"
|
||||
per-hour: "1時間ごと"
|
||||
federation: "フェデレーション"
|
||||
notes: "投稿"
|
||||
users: "ユーザー"
|
||||
drive: "ドライブ"
|
||||
network: "ネットワーク"
|
||||
charts:
|
||||
federation-instances: "インスタンスの増減"
|
||||
federation-instances-total: "インスタンスの積算"
|
||||
notes: "投稿の増減 (統合)"
|
||||
local-notes: "投稿の増減 (ローカル)"
|
||||
remote-notes: "投稿の増減 (リモート)"
|
||||
notes-total: "投稿の積算"
|
||||
users: "ユーザーの増減"
|
||||
users-total: "ユーザーの積算"
|
||||
drive: "ドライブ使用量の増減"
|
||||
drive-total: "ドライブ使用量の積算"
|
||||
drive-files: "ドライブのファイル数の増減"
|
||||
drive-files-total: "ドライブのファイル数の積算"
|
||||
network-requests: "リクエスト"
|
||||
network-time: "応答時間"
|
||||
network-usage: "通信量"
|
||||
desktop/views/components/choose-file-from-drive-window.vue:
|
||||
choose-file: "ファイル選択中"
|
||||
upload: "PCからドライブにファイルをアップロード"
|
||||
@@ -439,7 +579,6 @@ desktop/views/components/crop-window.vue:
|
||||
ok: "決定"
|
||||
desktop/views/components/drive-window.vue:
|
||||
used: "使用中"
|
||||
drive: "ドライブ"
|
||||
desktop/views/components/drive.file.vue:
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
@@ -469,8 +608,6 @@ desktop/views/components/drive.folder.vue:
|
||||
rename: "名前を変更"
|
||||
rename-folder: "フォルダ名の変更"
|
||||
input-new-folder-name: "新しいフォルダ名を入力してください"
|
||||
desktop/views/components/drive.nav-folder.vue:
|
||||
drive: "ドライブ"
|
||||
desktop/views/components/drive.vue:
|
||||
search: "検索"
|
||||
load-more: "もっと読み込む"
|
||||
@@ -501,6 +638,7 @@ desktop/views/components/follow-button.vue:
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-processing: "フォロー処理中"
|
||||
follow-request: "フォロー申請"
|
||||
desktop/views/components/followers-window.vue:
|
||||
followers: "{} のフォロワー"
|
||||
@@ -537,7 +675,7 @@ desktop/views/components/note-detail.vue:
|
||||
location: "位置情報"
|
||||
renote: "Renote"
|
||||
add-reaction: "リアクション"
|
||||
desktop/views/components/notes.note.vue:
|
||||
desktop/views/components/note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
reply: "返信"
|
||||
renote: "Renote"
|
||||
@@ -545,8 +683,6 @@ desktop/views/components/notes.note.vue:
|
||||
detail: "詳細"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
hide: "隠す"
|
||||
see-more: "もっと見る"
|
||||
desktop/views/components/notes.vue:
|
||||
error: "読み込みに失敗しました。"
|
||||
retry: "リトライ"
|
||||
@@ -605,44 +741,56 @@ desktop/views/components/settings.vue:
|
||||
profile: "プロフィール"
|
||||
notification: "通知"
|
||||
apps: "アプリ"
|
||||
mute: "ミュート"
|
||||
drive: "ドライブ"
|
||||
mute-and-block: "ミュート/ブロック"
|
||||
blocking: "ブロック"
|
||||
security: "セキュリティ"
|
||||
signin: "サインイン履歴"
|
||||
password: "パスワード"
|
||||
2fa: "二段階認証"
|
||||
other: "その他"
|
||||
license: "ライセンス"
|
||||
theme: "テーマ"
|
||||
behaviour: "動作"
|
||||
fetch-on-scroll: "スクロールで自動読み込み"
|
||||
fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。"
|
||||
note-visibility: "投稿の公開範囲"
|
||||
default-note-visibility: "デフォルトの公開範囲"
|
||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||
auto-popout: "ウィンドウの自動ポップアウト"
|
||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
||||
advanced: "詳細設定"
|
||||
api-via-stream: "ストリームを経由したAPIリクエスト"
|
||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||
deck-nav: "デッキ内ナビゲーション"
|
||||
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
|
||||
deck-default: "デッキをデフォルトのUIにする"
|
||||
display: "デザインと表示"
|
||||
customize: "ホームをカスタマイズ"
|
||||
wallpaper: "壁紙"
|
||||
choose-wallpaper: "壁紙を選択"
|
||||
delete-wallpaper: "壁紙を削除"
|
||||
dark-mode: "ダークモード"
|
||||
use-shadow: "UIに影を使用"
|
||||
rounded-corners: "UIの角を丸める"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||
show-clock-on-header: "右上に時計を表示する"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
timeline: "タイムライン"
|
||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||
show-maps: "マップの自動展開"
|
||||
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
||||
deck-column-align: "デッキのカラムの位置"
|
||||
deck-column-align-center: "中央"
|
||||
deck-column-align-left: "左"
|
||||
sound: "サウンド"
|
||||
enable-sounds: "サウンドを有効にする"
|
||||
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
|
||||
volume: "ボリューム"
|
||||
test: "テスト"
|
||||
mobile: "モバイル"
|
||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||
language: "言語"
|
||||
pick-language: "言語を選択"
|
||||
recommended: "推奨"
|
||||
@@ -678,6 +826,10 @@ desktop/views/components/settings.vue:
|
||||
tools: "ツール"
|
||||
task-manager: "タスクマネージャ"
|
||||
third-parties: "サードパーティ"
|
||||
navbar-position: "ナビゲーションバーの位置"
|
||||
navbar-position-top: "上"
|
||||
navbar-position-left: "左"
|
||||
navbar-position-right: "右"
|
||||
desktop/views/components/settings.2fa.vue:
|
||||
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
||||
detail: "詳細..."
|
||||
@@ -696,20 +848,32 @@ desktop/views/components/settings.2fa.vue:
|
||||
success: "設定が完了しました!"
|
||||
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
||||
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
||||
desktop/views/components/settings.api.vue:
|
||||
common/views/components/api-settings.vue:
|
||||
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||
regenerate-token: "トークンを再生成"
|
||||
token: "Token:"
|
||||
enter-password: "パスワードを入力してください"
|
||||
console:
|
||||
title: 'APIコンソール'
|
||||
endpoint: 'エンドポイント'
|
||||
parameter: 'パラメータ'
|
||||
send: '送信'
|
||||
sending: '応答待ち'
|
||||
response: '結果'
|
||||
desktop/views/components/settings.apps.vue:
|
||||
no-apps: "連携しているアプリケーションはありません"
|
||||
desktop/views/components/settings.drive.vue:
|
||||
max: "中"
|
||||
common/views/components/drive-settings.vue:
|
||||
max: "容量"
|
||||
in-use: "使用中"
|
||||
desktop/views/components/settings.mute.vue:
|
||||
no-users: "ミュートしているユーザーはいません"
|
||||
stats: "統計"
|
||||
common/views/components/mute-and-block.vue:
|
||||
mute-and-block: "ミュートとブロック"
|
||||
mute: "ミュート"
|
||||
block: "ブロック"
|
||||
no-muted-users: "ミュートしているユーザーはいません"
|
||||
no-blocked-users: "ブロックしているユーザーはいません"
|
||||
desktop/views/components/settings.password.vue:
|
||||
reset: "パスワードを変更する"
|
||||
enter-current-password: "現在のパスワードを入力してください"
|
||||
@@ -717,20 +881,6 @@ desktop/views/components/settings.password.vue:
|
||||
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
||||
not-match: "新しいパスワードが一致しません"
|
||||
changed: "パスワードを変更しました"
|
||||
desktop/views/components/settings.profile.vue:
|
||||
avatar: "アイコン"
|
||||
choice-avatar: "画像を選択"
|
||||
name: "名前"
|
||||
location: "場所"
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
save: "保存"
|
||||
locked-account: "アカウントの保護"
|
||||
is-locked: "投稿を非公開にする"
|
||||
other: "その他"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
profile-updated: "プロフィールを更新しました"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
@@ -743,17 +893,23 @@ desktop/views/components/timeline.vue:
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
mentions: "あなた宛て"
|
||||
messages: "メッセージ"
|
||||
list: "リスト"
|
||||
hashtag: "ハッシュタグ"
|
||||
add-tag-timeline: "ハッシュタグを追加"
|
||||
add-list: "リストを追加"
|
||||
list-name: "リスト名"
|
||||
desktop/views/components/ui.header.vue:
|
||||
welcome-back: "おかえりなさい、"
|
||||
adjective: "さん"
|
||||
desktop/views/components/ui.header.account.vue:
|
||||
profile: "プロフィール"
|
||||
drive: "ドライブ"
|
||||
favorites: "お気に入り"
|
||||
lists: "リスト"
|
||||
follow-requests: "フォロー申請"
|
||||
customize: "ホームのカスタマイズ"
|
||||
admin: "管理"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
dark: "闇に飲まれる"
|
||||
@@ -792,16 +948,20 @@ desktop/views/components/window.vue:
|
||||
close: "閉じる"
|
||||
desktop/views/pages/admin/admin.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
drive: "ドライブ"
|
||||
users: "ユーザー"
|
||||
update: "更新"
|
||||
announcements: "お知らせ"
|
||||
hashtags: "ハッシュタグ"
|
||||
desktop/views/pages/admin/admin.dashboard.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
all-users: "全てのユーザー"
|
||||
original-users: "このインスタンスのユーザー"
|
||||
all-notes: "全てのノート"
|
||||
original-notes: "このインスタンスのノート"
|
||||
all-notes: "全ての投稿"
|
||||
original-notes: "このインスタンスの投稿"
|
||||
invite: "招待"
|
||||
banner-url: "Banner URL"
|
||||
disableRegistration: "Disable new user registration"
|
||||
disableLocalTimeline: "Disable the local timeline"
|
||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||
suspend-user: "ユーザーの凍結"
|
||||
suspend: "凍結"
|
||||
@@ -818,26 +978,28 @@ desktop/views/pages/admin/admin.unverify-user.vue:
|
||||
unverify-user: "ユーザーの公式アカウント解除"
|
||||
unverify: "公式アカウントを解除する"
|
||||
unverified: "公式アカウントを解除しました"
|
||||
desktop/views/pages/admin/admin.notes-chart.vue:
|
||||
title: "投稿"
|
||||
local: "ローカル"
|
||||
remote: "リモート"
|
||||
desktop/views/pages/admin/admin.users-chart.vue:
|
||||
title: "ユーザー"
|
||||
local: "ローカル"
|
||||
remote: "リモート"
|
||||
desktop/views/pages/admin/admin.drive-chart.vue:
|
||||
title: "ドライブ"
|
||||
local: "ローカル"
|
||||
remote: "リモート"
|
||||
desktop/views/pages/admin/admin.announcements.vue:
|
||||
announcements: "お知らせ"
|
||||
desktop/views/pages/admin/admin.hashtags.vue:
|
||||
hided-tags: "Hidden Tags"
|
||||
desktop/views/pages/deck/deck.tl-column.vue:
|
||||
is-media-only: "メディア投稿のみ"
|
||||
is-media-view: "メディアビュー"
|
||||
edit: "オプション"
|
||||
desktop/views/pages/deck/deck.note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
desktop/views/pages/deck/deck.user-column.vue:
|
||||
posts: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
images: "画像"
|
||||
activity: "アクティビティ"
|
||||
timeline: "タイムライン"
|
||||
pinned-notes: "ピン留めされた投稿"
|
||||
push-to-a-list: "リストに追加"
|
||||
desktop/views/pages/stats/stats.vue:
|
||||
all-users: "全てのユーザー"
|
||||
original-users: "このインスタンスのユーザー"
|
||||
all-notes: "全ての投稿"
|
||||
original-notes: "このインスタンスの投稿"
|
||||
desktop/views/pages/welcome.vue:
|
||||
about: "詳しく..."
|
||||
gotit: "わかった"
|
||||
@@ -846,7 +1008,10 @@ desktop/views/pages/welcome.vue:
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
announcements: "お知らせ"
|
||||
photos: "最近の画像"
|
||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||
info: "情報"
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Misskey Drive"
|
||||
desktop/views/pages/favorites.vue:
|
||||
@@ -882,9 +1047,6 @@ desktop/views/pages/user/user.friends.vue:
|
||||
no-users: "よく話すユーザーはいません"
|
||||
desktop/views/pages/user/user.vue:
|
||||
is-suspended: "このユーザーは凍結されています。"
|
||||
is-remote: "このユーザーはリモートユーザーです。"
|
||||
view-remote: "正確な情報を見る"
|
||||
desktop/views/pages/user/user.home.vue:
|
||||
last-used-at: "最終アクセス"
|
||||
desktop/views/pages/user/user.photos.vue:
|
||||
title: "フォト"
|
||||
@@ -898,6 +1060,9 @@ desktop/views/pages/user/user.profile.vue:
|
||||
mute: "ミュートする"
|
||||
muted: "ミュートしています"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロックする"
|
||||
unblock: "ブロック解除"
|
||||
block-confirm: "このユーザーをブロックしますか?"
|
||||
push-to-a-list: "リストに追加"
|
||||
list-pushed: "{user}を{list}に追加しました。"
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
@@ -905,6 +1070,10 @@ desktop/views/pages/user/user.header.vue:
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
is-bot: "このアカウントはBotです"
|
||||
years-old: "歳"
|
||||
year: "年"
|
||||
month: "月"
|
||||
day: "日"
|
||||
desktop/views/pages/user/user.timeline.vue:
|
||||
default: "投稿"
|
||||
with-replies: "投稿と返信"
|
||||
@@ -934,7 +1103,6 @@ desktop/views/widgets/users.vue:
|
||||
refresh: "他を見る"
|
||||
no-one: "いません!"
|
||||
mobile/views/components/drive.vue:
|
||||
drive: "ドライブ"
|
||||
used: "使用中"
|
||||
folder-count: "フォルダ"
|
||||
count-separator: "、"
|
||||
@@ -964,6 +1132,8 @@ mobile/views/components/drive.file-detail.vue:
|
||||
hash: "ハッシュ (md5)"
|
||||
exif: "EXIF"
|
||||
nsfw: "閲覧注意"
|
||||
mark-as-sensitive: "閲覧注意に設定"
|
||||
unmark-as-sensitive: "閲覧注意を解除"
|
||||
mobile/views/components/media-image.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
@@ -974,6 +1144,7 @@ mobile/views/components/follow-button.vue:
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-processing: "フォロー処理中"
|
||||
follow-request: "フォロー申請"
|
||||
mobile/views/components/friends-maker.vue:
|
||||
title: "気になるユーザーをフォロー"
|
||||
@@ -983,8 +1154,6 @@ mobile/views/components/friends-maker.vue:
|
||||
close: "閉じる"
|
||||
mobile/views/components/note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
more: "もっと見る"
|
||||
less: "隠す"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
location: "位置情報"
|
||||
@@ -1037,13 +1206,13 @@ mobile/views/components/ui.nav.vue:
|
||||
messaging: "メッセージ"
|
||||
follow-requests: "フォロー申請"
|
||||
search: "検索"
|
||||
drive: "ドライブ"
|
||||
favorites: "お気に入り"
|
||||
user-lists: "リスト"
|
||||
widgets: "ウィジェット"
|
||||
game: "ゲーム"
|
||||
darkmode: "ダークモード"
|
||||
settings: "設定"
|
||||
admin: "管理"
|
||||
about: "Misskeyについて"
|
||||
mobile/views/components/user-timeline.vue:
|
||||
no-notes: "このユーザーは投稿していないようです。"
|
||||
@@ -1059,7 +1228,6 @@ mobile/views/pages/user-lists.vue:
|
||||
title: "リスト"
|
||||
enter-list-name: "リスト名を入力してください"
|
||||
mobile/views/pages/drive.vue:
|
||||
drive: "ドライブ"
|
||||
more: "もっと見る"
|
||||
mobile/views/pages/signup.vue:
|
||||
lets-start: "📦 始めましょう"
|
||||
@@ -1072,6 +1240,8 @@ mobile/views/pages/home.vue:
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
mentions: "あなた宛て"
|
||||
messages: "メッセージ"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
mobile/views/pages/welcome.vue:
|
||||
@@ -1102,20 +1272,6 @@ mobile/views/pages/notifications.vue:
|
||||
read-all: "すべての通知を既読にしますか?"
|
||||
mobile/views/pages/games/reversi.vue:
|
||||
reversi: "リバーシ"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
name: "名前"
|
||||
account: "アカウント"
|
||||
location: "場所"
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
is-cat: "このアカウントはCatです"
|
||||
save: "保存"
|
||||
saved: "プロフィールを保存しました"
|
||||
uploading: "アップロード中"
|
||||
upload-failed: "アップロードに失敗しました"
|
||||
mobile/views/pages/search.vue:
|
||||
search: "検索"
|
||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||
@@ -1133,6 +1289,7 @@ mobile/views/pages/settings.vue:
|
||||
dark-mode: "ダークモード"
|
||||
i-am-under-limited-internet: "私は通信を制限されている"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
timeline: "タイムライン"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||
@@ -1141,8 +1298,15 @@ mobile/views/pages/settings.vue:
|
||||
post-style: "投稿の表示スタイル"
|
||||
post-style-standard: "標準"
|
||||
post-style-smart: "スマート"
|
||||
notification-position: "通知の表示"
|
||||
notification-position-bottom: "下"
|
||||
notification-position-top: "上"
|
||||
theme: "テーマ"
|
||||
behavior: "動作"
|
||||
fetch-on-scroll: "スクロールで自動読み込み"
|
||||
note-visibility: "投稿の公開範囲"
|
||||
default-note-visibility: "デフォルトの公開範囲"
|
||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||
load-raw-images: "添付された画像を高画質で表示する"
|
||||
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||
@@ -1161,6 +1325,9 @@ mobile/views/pages/settings.vue:
|
||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
sound: "サウンド"
|
||||
enable-sounds: "サウンドを有効にする"
|
||||
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
|
||||
mobile/views/pages/user.vue:
|
||||
follows-you: "フォローされています"
|
||||
following: "フォロー"
|
||||
@@ -1170,8 +1337,10 @@ mobile/views/pages/user.vue:
|
||||
timeline: "タイムライン"
|
||||
media: "メディア"
|
||||
is-suspended: "このユーザーは凍結されています。"
|
||||
is-remote: "このユーザーはリモートユーザーです。"
|
||||
view-remote: "正確な情報を見る"
|
||||
mute: "ミュート"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロック"
|
||||
unblock: "ブロック解除"
|
||||
mobile/views/pages/user/home.vue:
|
||||
recent-notes: "最近の投稿"
|
||||
images: "画像"
|
||||
@@ -1217,3 +1386,29 @@ docs:
|
||||
description: "説明"
|
||||
dev/views/index.vue:
|
||||
manage-apps: "アプリの管理"
|
||||
dev/views/apps.vue:
|
||||
manage-apps: "アプリを管理"
|
||||
create-app: "アプリ作成"
|
||||
app-missing: "アプリなし"
|
||||
dev/views/new-app.vue:
|
||||
create-app: "アプリケーションの作成"
|
||||
app-name: "アプリケーション名"
|
||||
app-name-desc: "あなたのアプリの名称。"
|
||||
app-name-ex: "ex) Misskey for iOS"
|
||||
app-overview: "アプリの概要"
|
||||
app-desc: "あなたのアプリの簡単な説明や紹介。"
|
||||
app-desc-ex: "ex) Misskey iOSクライアント。"
|
||||
callback-url: "コールバックURL (オプション)"
|
||||
callback-url-desc: "ユーザーが認証フォームで認証した際にリダイレクトするURLを設定できます。"
|
||||
authority: "権限"
|
||||
authority-desc: "ここで要求した機能だけがAPIからアクセスできます。"
|
||||
authority-warning: "アプリ作成後も変更できますが、新たな権限を付与する場合、その時点で関連付けられているユーザーキーはすべて無効になります。"
|
||||
account-read: "アカウントの情報を見る。"
|
||||
account-write: "アカウントの情報を操作する。"
|
||||
note-write: "投稿する。"
|
||||
reaction-write: "リアクションしたりリアクションをキャンセルする。"
|
||||
following-write: "フォローしたりフォロー解除する。"
|
||||
drive-read: "ドライブを見る。"
|
||||
drive-write: "ドライブを操作する。"
|
||||
notification-read: "通知を見る。"
|
||||
notification-write: "通知を操作する。"
|
||||
|
||||
@@ -6,12 +6,34 @@ common:
|
||||
misskey: "A ⭐ of fediverse"
|
||||
about-title: "A ⭐ of fediverse."
|
||||
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
||||
intro:
|
||||
title: "Misskeyって?"
|
||||
about: "Misskeyはオープンソースの<b>分散型マイクロブログSNS</b>です。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。"
|
||||
features: "特徴"
|
||||
rich-contents: "投稿"
|
||||
rich-contents-desc: "自分の考え、話題の出来事、皆と共有したいことについて発信してください。必要であれば、様々な構文を使って投稿を装飾したり、好きな画像、動画などのファイルやアンケートを添付することもできます。"
|
||||
reaction: "リアクション"
|
||||
reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。"
|
||||
ui: "インターフェース"
|
||||
ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。"
|
||||
drive: "ドライブ"
|
||||
drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんか?もしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんか?Misskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。"
|
||||
outro: "他にもMisskeyにしかない機能はまだまだあるので、ぜひあなた自身の目で確かめてください。Misskeyは分散型SNSなので、このインスタンスが気に入らなければ他のインスタンスを試すこともできます。それでは、GLHF!"
|
||||
adblock:
|
||||
detected: "広告ブロッカーを無効にしてください"
|
||||
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
||||
application-authorization: "アプリの連携"
|
||||
close: "閉じる"
|
||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||
BSoD:
|
||||
fatal-error: ":( 致命的な問題が発生しました。"
|
||||
update-browser-os: "お使いのブラウザ(またはOS)のバージョンを更新すると解決する可能性があります。"
|
||||
error-code: "エラーコード"
|
||||
browser-version: "ブラウザ バージョン"
|
||||
client-version: "クライアント バージョン"
|
||||
email-support: "問題が解決しない場合は、上記の情報をお書き添えの上 syuilotan@yahoo.co.jp までご連絡ください。"
|
||||
thanks: "Thank you for using Misskey."
|
||||
|
||||
got-it: "わかった"
|
||||
customization-tips:
|
||||
title: "カスタマイズのヒント"
|
||||
@@ -42,6 +64,7 @@ common:
|
||||
month-and-day: "{month}月 {day}日"
|
||||
|
||||
trash: "ゴミ箱"
|
||||
drive: "ドライブ"
|
||||
|
||||
weekday-short:
|
||||
sunday: "日"
|
||||
@@ -73,6 +96,16 @@ common:
|
||||
rip: "RIP"
|
||||
pudding: "Pudding"
|
||||
|
||||
note-visibility:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
followers: "フォロワー"
|
||||
followers-desc: "自分のフォロワーにのみ公開"
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
|
||||
note-placeholders:
|
||||
a: "今どうしてる?"
|
||||
b: "何かありましたか?"
|
||||
@@ -93,6 +126,21 @@ common:
|
||||
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
||||
verified-user: "公式アカウント"
|
||||
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
||||
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
||||
show-full-acct: "ユーザー名のホストを省略しない"
|
||||
reduce-motion: "UIの動きを減らす"
|
||||
this-setting-is-this-device-only: "このデバイスのみ"
|
||||
|
||||
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
||||
|
||||
is-remote-user: "このユーザー情報はコピーです。"
|
||||
is-remote-post: "この投稿情報はコピーです。"
|
||||
view-on-remote: "正確な情報を見る"
|
||||
|
||||
error:
|
||||
title: '問題が発生しました'
|
||||
retry: 'やり直す'
|
||||
|
||||
reversi:
|
||||
drawn: "引き分け"
|
||||
@@ -136,7 +184,10 @@ common:
|
||||
home: "ホーム"
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
hashtag: "ハッシュタグ"
|
||||
global: "グローバル"
|
||||
mentions: "あなた宛て"
|
||||
direct: "ダイレクト投稿"
|
||||
notifications: "通知"
|
||||
list: "リスト"
|
||||
swap-left: "左に移動"
|
||||
@@ -149,6 +200,8 @@ common:
|
||||
stack-left: "左に重ねる"
|
||||
pop-right: "右に出す"
|
||||
|
||||
dev: "アプリの作成に失敗しました。再度お試しください。"
|
||||
|
||||
auth/views/form.vue:
|
||||
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
|
||||
permission-ask: "このアプリは次の権限を要求しています:"
|
||||
@@ -248,6 +301,50 @@ common/views/components/connect-failed.troubleshooter.vue:
|
||||
flush: "キャッシュの削除"
|
||||
set-version: "バージョン指定"
|
||||
|
||||
common/views/components/media-banner.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
|
||||
common/views/components/theme.vue:
|
||||
light-theme: "非ダークモード時に使用するテーマ"
|
||||
dark-theme: "ダークモード時に使用するテーマ"
|
||||
light-themes: "明るいテーマ"
|
||||
dark-themes: "暗いテーマ"
|
||||
install-a-theme: "テーマのインストール"
|
||||
theme-code: "テーマコード"
|
||||
install: "インストール"
|
||||
installed: "「{}」をインストールしました"
|
||||
create-a-theme: "テーマの作成"
|
||||
save-created-theme: "テーマを保存"
|
||||
primary-color: "プライマリ カラー"
|
||||
secondary-color: "セカンダリ カラー"
|
||||
text-color: "文字色"
|
||||
base-theme: "ベーステーマ"
|
||||
base-theme-light: "Light"
|
||||
base-theme-dark: "Dark"
|
||||
theme-name: "テーマ名"
|
||||
preview-created-theme: "プレビュー"
|
||||
invalid-theme: "テーマが正しくありません。"
|
||||
already-installed: "既にそのテーマはインストールされています。"
|
||||
saved: "保存しました"
|
||||
manage-themes: "テーマの管理"
|
||||
builtin-themes: "標準テーマ"
|
||||
my-themes: "マイテーマ"
|
||||
installed-themes: "インストールされたテーマ"
|
||||
select-theme: "テーマを選択してください"
|
||||
uninstall: "アンインストール"
|
||||
uninstalled: "「{}」をアンインストールしました"
|
||||
author: "作者"
|
||||
desc: "説明"
|
||||
export: "エクスポート"
|
||||
import: "インポート"
|
||||
import-by-code: "またはコードをペースト"
|
||||
theme-name-required: "テーマ名は必須です。"
|
||||
|
||||
common/views/components/cw-button.vue:
|
||||
hide: "隠す"
|
||||
show: "もっと見る"
|
||||
|
||||
common/views/components/messaging.vue:
|
||||
search-user: "ユーザーを探す"
|
||||
you: "あなた"
|
||||
@@ -283,8 +380,12 @@ common/views/components/nav.vue:
|
||||
feedback: "フィードバック"
|
||||
|
||||
common/views/components/note-menu.vue:
|
||||
detail: "詳細"
|
||||
copy-link: "リンクをコピー"
|
||||
favorite: "お気に入り"
|
||||
unfavorite: "お気に入り解除"
|
||||
pin: "ピン留め"
|
||||
unpin: "ピン留め解除"
|
||||
delete: "削除"
|
||||
delete-confirm: "この投稿を削除しますか?"
|
||||
remote: "投稿元で見る"
|
||||
@@ -371,6 +472,30 @@ common/views/components/visibility-chooser.vue:
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
|
||||
common/views/components/trends.vue:
|
||||
count: "{}人が投稿"
|
||||
empty: "トレンドなし"
|
||||
|
||||
common/views/components/profile-editor.vue:
|
||||
title: "プロフィール"
|
||||
name: "名前"
|
||||
account: "アカウント"
|
||||
location: "場所"
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
is-cat: "このアカウントはCatです"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-locked: "フォローを承認制にする"
|
||||
careful-bot: "Botからのフォローだけ承認制にする"
|
||||
advanced: "その他"
|
||||
privacy: "プライバシー"
|
||||
save: "保存"
|
||||
saved: "プロフィールを保存しました"
|
||||
uploading: "アップロード中"
|
||||
upload-failed: "アップロードに失敗しました"
|
||||
|
||||
common/views/widgets/broadcast.vue:
|
||||
fetching: "確認中"
|
||||
no-broadcasts: "お知らせはありません"
|
||||
@@ -399,8 +524,6 @@ common/views/widgets/posts-monitor.vue:
|
||||
|
||||
common/views/widgets/hashtags.vue:
|
||||
title: "ハッシュタグ"
|
||||
count: "{}人が投稿"
|
||||
empty: "トレンドなし"
|
||||
|
||||
common/views/widgets/server.vue:
|
||||
title: "サーバー情報"
|
||||
@@ -443,6 +566,7 @@ common/views/pages/follow.vue:
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-processing: "フォロー処理中"
|
||||
follow-request: "フォロー申請"
|
||||
|
||||
desktop:
|
||||
@@ -456,6 +580,7 @@ desktop:
|
||||
uploading-avatar: "新しいアバターをアップロードしています"
|
||||
avatar-updated: "アバターを更新しました"
|
||||
choose-avatar: "アバターにする画像を選択"
|
||||
invalid-filetype: "この形式のファイルはサポートされていません"
|
||||
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Black ... Total"
|
||||
@@ -473,6 +598,32 @@ desktop/views/components/calendar.vue:
|
||||
next: "次の月"
|
||||
go: "クリックして時間遡行"
|
||||
|
||||
desktop/views/components/charts.vue:
|
||||
title: "チャート"
|
||||
per-day: "1日ごと"
|
||||
per-hour: "1時間ごと"
|
||||
federation: "フェデレーション"
|
||||
notes: "投稿"
|
||||
users: "ユーザー"
|
||||
drive: "ドライブ"
|
||||
network: "ネットワーク"
|
||||
charts:
|
||||
federation-instances: "インスタンスの増減"
|
||||
federation-instances-total: "インスタンスの積算"
|
||||
notes: "投稿の増減 (統合)"
|
||||
local-notes: "投稿の増減 (ローカル)"
|
||||
remote-notes: "投稿の増減 (リモート)"
|
||||
notes-total: "投稿の積算"
|
||||
users: "ユーザーの増減"
|
||||
users-total: "ユーザーの積算"
|
||||
drive: "ドライブ使用量の増減"
|
||||
drive-total: "ドライブ使用量の積算"
|
||||
drive-files: "ドライブのファイル数の増減"
|
||||
drive-files-total: "ドライブのファイル数の積算"
|
||||
network-requests: "リクエスト"
|
||||
network-time: "応答時間"
|
||||
network-usage: "通信量"
|
||||
|
||||
desktop/views/components/choose-file-from-drive-window.vue:
|
||||
choose-file: "ファイル選択中"
|
||||
upload: "PCからドライブにファイルをアップロード"
|
||||
@@ -492,7 +643,6 @@ desktop/views/components/crop-window.vue:
|
||||
|
||||
desktop/views/components/drive-window.vue:
|
||||
used: "使用中"
|
||||
drive: "ドライブ"
|
||||
|
||||
desktop/views/components/drive.file.vue:
|
||||
avatar: "アイコン"
|
||||
@@ -525,9 +675,6 @@ desktop/views/components/drive.folder.vue:
|
||||
rename-folder: "フォルダ名の変更"
|
||||
input-new-folder-name: "新しいフォルダ名を入力してください"
|
||||
|
||||
desktop/views/components/drive.nav-folder.vue:
|
||||
drive: "ドライブ"
|
||||
|
||||
desktop/views/components/drive.vue:
|
||||
search: "検索"
|
||||
load-more: "もっと読み込む"
|
||||
@@ -561,6 +708,7 @@ desktop/views/components/follow-button.vue:
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-processing: "フォロー処理中"
|
||||
follow-request: "フォロー申請"
|
||||
|
||||
desktop/views/components/followers-window.vue:
|
||||
@@ -609,7 +757,7 @@ desktop/views/components/note-detail.vue:
|
||||
renote: "Renote"
|
||||
add-reaction: "リアクション"
|
||||
|
||||
desktop/views/components/notes.note.vue:
|
||||
desktop/views/components/note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
reply: "返信"
|
||||
renote: "Renote"
|
||||
@@ -617,8 +765,6 @@ desktop/views/components/notes.note.vue:
|
||||
detail: "詳細"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
hide: "隠す"
|
||||
see-more: "もっと見る"
|
||||
|
||||
desktop/views/components/notes.vue:
|
||||
error: "読み込みに失敗しました。"
|
||||
@@ -686,39 +832,53 @@ desktop/views/components/settings.vue:
|
||||
profile: "プロフィール"
|
||||
notification: "通知"
|
||||
apps: "アプリ"
|
||||
mute: "ミュート"
|
||||
drive: "ドライブ"
|
||||
mute-and-block: "ミュート/ブロック"
|
||||
blocking: "ブロック"
|
||||
security: "セキュリティ"
|
||||
signin: "サインイン履歴"
|
||||
password: "パスワード"
|
||||
2fa: "二段階認証"
|
||||
other: "その他"
|
||||
license: "ライセンス"
|
||||
theme: "テーマ"
|
||||
|
||||
behaviour: "動作"
|
||||
fetch-on-scroll: "スクロールで自動読み込み"
|
||||
fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。"
|
||||
note-visibility: "投稿の公開範囲"
|
||||
default-note-visibility: "デフォルトの公開範囲"
|
||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||
auto-popout: "ウィンドウの自動ポップアウト"
|
||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
||||
advanced: "詳細設定"
|
||||
api-via-stream: "ストリームを経由したAPIリクエスト"
|
||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||
deck-nav: "デッキ内ナビゲーション"
|
||||
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
|
||||
deck-default: "デッキをデフォルトのUIにする"
|
||||
|
||||
display: "デザインと表示"
|
||||
customize: "ホームをカスタマイズ"
|
||||
wallpaper: "壁紙"
|
||||
choose-wallpaper: "壁紙を選択"
|
||||
delete-wallpaper: "壁紙を削除"
|
||||
dark-mode: "ダークモード"
|
||||
use-shadow: "UIに影を使用"
|
||||
rounded-corners: "UIの角を丸める"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||
show-clock-on-header: "右上に時計を表示する"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
timeline: "タイムライン"
|
||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||
show-maps: "マップの自動展開"
|
||||
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
||||
deck-column-align: "デッキのカラムの位置"
|
||||
deck-column-align-center: "中央"
|
||||
deck-column-align-left: "左"
|
||||
|
||||
sound: "サウンド"
|
||||
enable-sounds: "サウンドを有効にする"
|
||||
@@ -726,9 +886,6 @@ desktop/views/components/settings.vue:
|
||||
volume: "ボリューム"
|
||||
test: "テスト"
|
||||
|
||||
mobile: "モバイル"
|
||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||
|
||||
language: "言語"
|
||||
pick-language: "言語を選択"
|
||||
recommended: "推奨"
|
||||
@@ -770,6 +927,11 @@ desktop/views/components/settings.vue:
|
||||
task-manager: "タスクマネージャ"
|
||||
third-parties: "サードパーティ"
|
||||
|
||||
navbar-position: "ナビゲーションバーの位置"
|
||||
navbar-position-top: "上"
|
||||
navbar-position-left: "左"
|
||||
navbar-position-right: "右"
|
||||
|
||||
desktop/views/components/settings.2fa.vue:
|
||||
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
||||
detail: "詳細..."
|
||||
@@ -789,23 +951,35 @@ desktop/views/components/settings.2fa.vue:
|
||||
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
||||
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
||||
|
||||
desktop/views/components/settings.api.vue:
|
||||
common/views/components/api-settings.vue:
|
||||
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||
regenerate-token: "トークンを再生成"
|
||||
token: "Token:"
|
||||
enter-password: "パスワードを入力してください"
|
||||
console:
|
||||
title: 'APIコンソール'
|
||||
endpoint: 'エンドポイント'
|
||||
parameter: 'パラメータ'
|
||||
send: '送信'
|
||||
sending: '応答待ち'
|
||||
response: '結果'
|
||||
|
||||
desktop/views/components/settings.apps.vue:
|
||||
no-apps: "連携しているアプリケーションはありません"
|
||||
|
||||
desktop/views/components/settings.drive.vue:
|
||||
max: "中"
|
||||
common/views/components/drive-settings.vue:
|
||||
max: "容量"
|
||||
in-use: "使用中"
|
||||
stats: "統計"
|
||||
|
||||
desktop/views/components/settings.mute.vue:
|
||||
no-users: "ミュートしているユーザーはいません"
|
||||
common/views/components/mute-and-block.vue:
|
||||
mute-and-block: "ミュートとブロック"
|
||||
mute: "ミュート"
|
||||
block: "ブロック"
|
||||
no-muted-users: "ミュートしているユーザーはいません"
|
||||
no-blocked-users: "ブロックしているユーザーはいません"
|
||||
|
||||
desktop/views/components/settings.password.vue:
|
||||
reset: "パスワードを変更する"
|
||||
@@ -815,21 +989,6 @@ desktop/views/components/settings.password.vue:
|
||||
not-match: "新しいパスワードが一致しません"
|
||||
changed: "パスワードを変更しました"
|
||||
|
||||
desktop/views/components/settings.profile.vue:
|
||||
avatar: "アイコン"
|
||||
choice-avatar: "画像を選択"
|
||||
name: "名前"
|
||||
location: "場所"
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
save: "保存"
|
||||
locked-account: "アカウントの保護"
|
||||
is-locked: "投稿を非公開にする"
|
||||
other: "その他"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
profile-updated: "プロフィールを更新しました"
|
||||
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
@@ -844,7 +1003,13 @@ desktop/views/components/timeline.vue:
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
mentions: "あなた宛て"
|
||||
messages: "メッセージ"
|
||||
list: "リスト"
|
||||
hashtag: "ハッシュタグ"
|
||||
add-tag-timeline: "ハッシュタグを追加"
|
||||
add-list: "リストを追加"
|
||||
list-name: "リスト名"
|
||||
|
||||
desktop/views/components/ui.header.vue:
|
||||
welcome-back: "おかえりなさい、"
|
||||
@@ -852,7 +1017,6 @@ desktop/views/components/ui.header.vue:
|
||||
|
||||
desktop/views/components/ui.header.account.vue:
|
||||
profile: "プロフィール"
|
||||
drive: "ドライブ"
|
||||
favorites: "お気に入り"
|
||||
lists: "リスト"
|
||||
follow-requests: "フォロー申請"
|
||||
@@ -907,17 +1071,21 @@ desktop/views/components/window.vue:
|
||||
|
||||
desktop/views/pages/admin/admin.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
drive: "ドライブ"
|
||||
users: "ユーザー"
|
||||
update: "更新"
|
||||
announcements: "お知らせ"
|
||||
hashtags: "ハッシュタグ"
|
||||
|
||||
desktop/views/pages/admin/admin.dashboard.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
all-users: "全てのユーザー"
|
||||
original-users: "このインスタンスのユーザー"
|
||||
all-notes: "全てのノート"
|
||||
original-notes: "このインスタンスのノート"
|
||||
all-notes: "全ての投稿"
|
||||
original-notes: "このインスタンスの投稿"
|
||||
invite: "招待"
|
||||
banner-url: "Banner URL"
|
||||
disableRegistration: "Disable new user registration"
|
||||
disableLocalTimeline: "Disable the local timeline"
|
||||
|
||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||
suspend-user: "ユーザーの凍結"
|
||||
@@ -939,30 +1107,32 @@ desktop/views/pages/admin/admin.unverify-user.vue:
|
||||
unverify: "公式アカウントを解除する"
|
||||
unverified: "公式アカウントを解除しました"
|
||||
|
||||
desktop/views/pages/admin/admin.notes-chart.vue:
|
||||
title: "投稿"
|
||||
local: "ローカル"
|
||||
remote: "リモート"
|
||||
desktop/views/pages/admin/admin.announcements.vue:
|
||||
announcements: "お知らせ"
|
||||
|
||||
desktop/views/pages/admin/admin.users-chart.vue:
|
||||
title: "ユーザー"
|
||||
local: "ローカル"
|
||||
remote: "リモート"
|
||||
|
||||
desktop/views/pages/admin/admin.drive-chart.vue:
|
||||
title: "ドライブ"
|
||||
local: "ローカル"
|
||||
remote: "リモート"
|
||||
desktop/views/pages/admin/admin.hashtags.vue:
|
||||
hided-tags: "Hidden Tags"
|
||||
|
||||
desktop/views/pages/deck/deck.tl-column.vue:
|
||||
is-media-only: "メディア投稿のみ"
|
||||
is-media-view: "メディアビュー"
|
||||
edit: "オプション"
|
||||
|
||||
desktop/views/pages/deck/deck.note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
desktop/views/pages/deck/deck.user-column.vue:
|
||||
posts: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
images: "画像"
|
||||
activity: "アクティビティ"
|
||||
timeline: "タイムライン"
|
||||
pinned-notes: "ピン留めされた投稿"
|
||||
push-to-a-list: "リストに追加"
|
||||
|
||||
desktop/views/pages/stats/stats.vue:
|
||||
all-users: "全てのユーザー"
|
||||
original-users: "このインスタンスのユーザー"
|
||||
all-notes: "全ての投稿"
|
||||
original-notes: "このインスタンスの投稿"
|
||||
|
||||
desktop/views/pages/welcome.vue:
|
||||
about: "詳しく..."
|
||||
@@ -972,7 +1142,10 @@ desktop/views/pages/welcome.vue:
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
announcements: "お知らせ"
|
||||
photos: "最近の画像"
|
||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||
info: "情報"
|
||||
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Misskey Drive"
|
||||
@@ -1020,10 +1193,6 @@ desktop/views/pages/user/user.friends.vue:
|
||||
|
||||
desktop/views/pages/user/user.vue:
|
||||
is-suspended: "このユーザーは凍結されています。"
|
||||
is-remote: "このユーザーはリモートユーザーです。"
|
||||
view-remote: "正確な情報を見る"
|
||||
|
||||
desktop/views/pages/user/user.home.vue:
|
||||
last-used-at: "最終アクセス"
|
||||
|
||||
desktop/views/pages/user/user.photos.vue:
|
||||
@@ -1039,6 +1208,9 @@ desktop/views/pages/user/user.profile.vue:
|
||||
mute: "ミュートする"
|
||||
muted: "ミュートしています"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロックする"
|
||||
unblock: "ブロック解除"
|
||||
block-confirm: "このユーザーをブロックしますか?"
|
||||
push-to-a-list: "リストに追加"
|
||||
list-pushed: "{user}を{list}に追加しました。"
|
||||
|
||||
@@ -1047,6 +1219,10 @@ desktop/views/pages/user/user.header.vue:
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
is-bot: "このアカウントはBotです"
|
||||
years-old: "歳"
|
||||
year: "年"
|
||||
month: "月"
|
||||
day: "日"
|
||||
|
||||
desktop/views/pages/user/user.timeline.vue:
|
||||
default: "投稿"
|
||||
@@ -1085,7 +1261,6 @@ desktop/views/widgets/users.vue:
|
||||
no-one: "いません!"
|
||||
|
||||
mobile/views/components/drive.vue:
|
||||
drive: "ドライブ"
|
||||
used: "使用中"
|
||||
folder-count: "フォルダ"
|
||||
count-separator: "、"
|
||||
@@ -1120,6 +1295,8 @@ mobile/views/components/drive.file-detail.vue:
|
||||
hash: "ハッシュ (md5)"
|
||||
exif: "EXIF"
|
||||
nsfw: "閲覧注意"
|
||||
mark-as-sensitive: "閲覧注意に設定"
|
||||
unmark-as-sensitive: "閲覧注意を解除"
|
||||
|
||||
mobile/views/components/media-image.vue:
|
||||
sensitive: "閲覧注意"
|
||||
@@ -1133,6 +1310,7 @@ mobile/views/components/follow-button.vue:
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-processing: "フォロー処理中"
|
||||
follow-request: "フォロー申請"
|
||||
|
||||
mobile/views/components/friends-maker.vue:
|
||||
@@ -1144,8 +1322,6 @@ mobile/views/components/friends-maker.vue:
|
||||
|
||||
mobile/views/components/note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
more: "もっと見る"
|
||||
less: "隠す"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
location: "位置情報"
|
||||
@@ -1208,7 +1384,6 @@ mobile/views/components/ui.nav.vue:
|
||||
messaging: "メッセージ"
|
||||
follow-requests: "フォロー申請"
|
||||
search: "検索"
|
||||
drive: "ドライブ"
|
||||
favorites: "お気に入り"
|
||||
user-lists: "リスト"
|
||||
widgets: "ウィジェット"
|
||||
@@ -1236,7 +1411,6 @@ mobile/views/pages/user-lists.vue:
|
||||
enter-list-name: "リスト名を入力してください"
|
||||
|
||||
mobile/views/pages/drive.vue:
|
||||
drive: "ドライブ"
|
||||
more: "もっと見る"
|
||||
|
||||
mobile/views/pages/signup.vue:
|
||||
@@ -1253,6 +1427,8 @@ mobile/views/pages/home.vue:
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
mentions: "あなた宛て"
|
||||
messages: "メッセージ"
|
||||
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
@@ -1295,21 +1471,6 @@ mobile/views/pages/notifications.vue:
|
||||
mobile/views/pages/games/reversi.vue:
|
||||
reversi: "リバーシ"
|
||||
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
name: "名前"
|
||||
account: "アカウント"
|
||||
location: "場所"
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
is-cat: "このアカウントはCatです"
|
||||
save: "保存"
|
||||
saved: "プロフィールを保存しました"
|
||||
uploading: "アップロード中"
|
||||
upload-failed: "アップロードに失敗しました"
|
||||
|
||||
mobile/views/pages/search.vue:
|
||||
search: "検索"
|
||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||
@@ -1329,6 +1490,7 @@ mobile/views/pages/settings.vue:
|
||||
dark-mode: "ダークモード"
|
||||
i-am-under-limited-internet: "私は通信を制限されている"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
timeline: "タイムライン"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||
@@ -1337,8 +1499,15 @@ mobile/views/pages/settings.vue:
|
||||
post-style: "投稿の表示スタイル"
|
||||
post-style-standard: "標準"
|
||||
post-style-smart: "スマート"
|
||||
notification-position: "通知の表示"
|
||||
notification-position-bottom: "下"
|
||||
notification-position-top: "上"
|
||||
theme: "テーマ"
|
||||
behavior: "動作"
|
||||
fetch-on-scroll: "スクロールで自動読み込み"
|
||||
note-visibility: "投稿の公開範囲"
|
||||
default-note-visibility: "デフォルトの公開範囲"
|
||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||
load-raw-images: "添付された画像を高画質で表示する"
|
||||
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||
@@ -1357,6 +1526,9 @@ mobile/views/pages/settings.vue:
|
||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
sound: "サウンド"
|
||||
enable-sounds: "サウンドを有効にする"
|
||||
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
|
||||
|
||||
mobile/views/pages/user.vue:
|
||||
follows-you: "フォローされています"
|
||||
@@ -1367,8 +1539,10 @@ mobile/views/pages/user.vue:
|
||||
timeline: "タイムライン"
|
||||
media: "メディア"
|
||||
is-suspended: "このユーザーは凍結されています。"
|
||||
is-remote: "このユーザーはリモートユーザーです。"
|
||||
view-remote: "正確な情報を見る"
|
||||
mute: "ミュート"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロック"
|
||||
unblock: "ブロック解除"
|
||||
|
||||
mobile/views/pages/user/home.vue:
|
||||
recent-notes: "最近の投稿"
|
||||
@@ -1422,3 +1596,31 @@ docs:
|
||||
|
||||
dev/views/index.vue:
|
||||
manage-apps: "アプリの管理"
|
||||
|
||||
dev/views/apps.vue:
|
||||
manage-apps: "アプリを管理"
|
||||
create-app: "アプリ作成"
|
||||
app-missing: "アプリなし"
|
||||
|
||||
dev/views/new-app.vue:
|
||||
create-app: "アプリケーションの作成"
|
||||
app-name: "アプリケーション名"
|
||||
app-name-desc: "あなたのアプリの名称。"
|
||||
app-name-ex: "ex) Misskey for iOS"
|
||||
app-overview: "アプリの概要"
|
||||
app-desc: "あなたのアプリの簡単な説明や紹介。"
|
||||
app-desc-ex: "ex) Misskey iOSクライアント。"
|
||||
callback-url: "コールバックURL (オプション)"
|
||||
callback-url-desc: "ユーザーが認証フォームで認証した際にリダイレクトするURLを設定できます。"
|
||||
authority: "権限"
|
||||
authority-desc: "ここで要求した機能だけがAPIからアクセスできます。"
|
||||
authority-warning: "アプリ作成後も変更できますが、新たな権限を付与する場合、その時点で関連付けられているユーザーキーはすべて無効になります。"
|
||||
account-read: "アカウントの情報を見る。"
|
||||
account-write: "アカウントの情報を操作する。"
|
||||
note-write: "投稿する。"
|
||||
reaction-write: "リアクションしたりリアクションをキャンセルする。"
|
||||
following-write: "フォローしたりフォロー解除する。"
|
||||
drive-read: "ドライブを見る。"
|
||||
drive-write: "ドライブを操作する。"
|
||||
notification-read: "通知を見る。"
|
||||
notification-write: "通知を操作する。"
|
||||
|
||||
1317
locales/ja-KS.yml
1317
locales/ja-KS.yml
File diff suppressed because it is too large
Load Diff
@@ -3,15 +3,36 @@ meta:
|
||||
lang: "한국어"
|
||||
divider: ""
|
||||
common:
|
||||
misskey: "A ⭐ of fediverse"
|
||||
about-title: "A ⭐ of fediverse."
|
||||
misskey: "연합우주의 ⭐"
|
||||
about-title: "연합우주의 ⭐."
|
||||
about: "Misskey를 찾아 주셔서 감사합니다. Misskey은 지구에서 태어난 <b>분산 마이크로 블로그 SNS </b> 입니다. Fediverse (다양한 SNS로 구성되는 우주)에 존재하는 다른 SNS와 상호 연결되어 있습니다. 잠시 도시의 번잡함에서 벗어나 새로운 인터넷에 다이브 해 보지 않겠습니까."
|
||||
intro:
|
||||
title: "Misskey란?"
|
||||
about: "Misskeyはオープンソースの<b>分散型マイクロブログSNS</b>です。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。"
|
||||
features: "특징"
|
||||
rich-contents: "게시"
|
||||
rich-contents-desc: "自分の考え、話題の出来事、皆と共有したいことについて発信してください。必要であれば、様々な構文を使って投稿を装飾したり、好きな画像、動画などのファイルやアンケートを添付することもできます。"
|
||||
reaction: "반응"
|
||||
reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。"
|
||||
ui: "인터페이스"
|
||||
ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。"
|
||||
drive: "드라이브"
|
||||
drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんか?もしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんか?Misskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。"
|
||||
outro: "他にもMisskeyにしかない機能はまだまだあるので、ぜひあなた自身の目で確かめてください。Misskeyは分散型SNSなので、このインスタンスが気に入らなければ他のインスタンスを試すこともできます。それでは、GLHF!"
|
||||
adblock:
|
||||
detected: "광고 차단기를 해제하십시오"
|
||||
warning: "<strong>Misskey는 광고를 게재하지 않습니다</strong> 그러나 광고를 차단하는 기능 기능을 사용할 경우 일부 기능을 사용할 수 없게 될 가능성이나 결함이 발생하는 경우가 있습니다."
|
||||
application-authorization: "앱의 연계"
|
||||
close: "닫기"
|
||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||
BSoD:
|
||||
fatal-error: ":( 致命的な問題が発生しました。"
|
||||
update-browser-os: "お使いのブラウザ(またはOS)のバージョンを更新すると解決する可能性があります。"
|
||||
error-code: "エラーコード"
|
||||
browser-version: "ブラウザ バージョン"
|
||||
client-version: "クライアント バージョン"
|
||||
email-support: "問題が解決しない場合は、上記の情報をお書き添えの上 syuilotan@yahoo.co.jp までご連絡ください。"
|
||||
thanks: "Thank you for using Misskey."
|
||||
got-it: "알았습니다"
|
||||
customization-tips:
|
||||
title: "사용자 정의 팁"
|
||||
@@ -41,6 +62,7 @@ common:
|
||||
years_ago: "{}년전"
|
||||
month-and-day: "{month}월 {day}일"
|
||||
trash: "휴지통"
|
||||
drive: "ドライブ"
|
||||
weekday-short:
|
||||
sunday: "일"
|
||||
monday: "월"
|
||||
@@ -58,7 +80,7 @@ common:
|
||||
friday: "금요일"
|
||||
saturday: "토요일"
|
||||
reactions:
|
||||
like: "ええやん"
|
||||
like: "좋아요"
|
||||
love: "좋아"
|
||||
laugh: "크크"
|
||||
hmm: "음..."
|
||||
@@ -68,6 +90,15 @@ common:
|
||||
confused: "곤란하고 있어"
|
||||
rip: "RIP"
|
||||
pudding: "Pudding"
|
||||
note-visibility:
|
||||
public: "공개"
|
||||
home: "홈"
|
||||
home-desc: "홈 타임라인에만 공개"
|
||||
followers: "팔로워"
|
||||
followers-desc: "자신의 팔로워에게만 공개"
|
||||
specified: "다이렉트"
|
||||
specified-desc: "지정한 사용자에게만 공개"
|
||||
private: "비공개"
|
||||
note-placeholders:
|
||||
a: "지금 어떻게하고있어?"
|
||||
b: "뭔가 있었습니까?"
|
||||
@@ -84,8 +115,21 @@ common:
|
||||
my-token-regenerated: "당신의 토큰이 업데이트되어 있기 때문에 로그 아웃합니다."
|
||||
i-like-sushi: "나는(푸딩보다 오히려)스시가 좋아"
|
||||
show-reversi-board-labels: "리버시 보드의 행과 열 레이블을 표시"
|
||||
verified-user: "公式アカウント"
|
||||
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
||||
verified-user: "공식 계정"
|
||||
disable-animated-mfm: "게시물의 문자 애니메이션을 비활성화 할"
|
||||
always-show-nsfw: "항상 열람주의 미디어를 표시"
|
||||
always-mark-nsfw: "항상 미디어를 열람주의로 설정하여 게시"
|
||||
show-full-acct: "ユーザー名のホストを省略しない"
|
||||
reduce-motion: "UIの動きを減らす"
|
||||
this-setting-is-this-device-only: "이 장치만"
|
||||
do-not-use-in-production: '이것은 개발 빌드입니다. 프로덕션 환경에서 사용하지 마십시오.'
|
||||
is-remote-user: "このユーザー情報はコピーです。"
|
||||
is-remote-post: "この投稿情報はコピーです。"
|
||||
view-on-remote: "正確な情報を見る"
|
||||
error:
|
||||
title: '問題が発生しました'
|
||||
retry: 'やり直す'
|
||||
reversi:
|
||||
drawn: "무승부"
|
||||
my-turn: "당신의 차례입니다"
|
||||
@@ -126,18 +170,22 @@ common:
|
||||
home: "홈"
|
||||
local: "로컬"
|
||||
hybrid: "소셜"
|
||||
hashtag: "해시태그"
|
||||
global: "글로벌"
|
||||
mentions: "あなた宛て"
|
||||
direct: "ダイレクト投稿"
|
||||
notifications: "통지"
|
||||
list: "목록"
|
||||
swap-left: "左に移動"
|
||||
swap-right: "右に移動"
|
||||
swap-up: "上に移動"
|
||||
swap-down: "下に移動"
|
||||
remove: "カラムを削除"
|
||||
add-column: "カラムを追加"
|
||||
rename: "名前を変更"
|
||||
swap-left: "왼쪽으로 이동"
|
||||
swap-right: "오른쪽으로 이동"
|
||||
swap-up: "위로 이동"
|
||||
swap-down: "아래로 이동"
|
||||
remove: "칼럼 제거"
|
||||
add-column: "칼럼 추가"
|
||||
rename: "이름 변경"
|
||||
stack-left: "左に重ねる"
|
||||
pop-right: "右に出す"
|
||||
dev: "アプリの作成に失敗しました。再度お試しください。"
|
||||
auth/views/form.vue:
|
||||
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
|
||||
permission-ask: "このアプリは次の権限を要求しています:"
|
||||
@@ -216,26 +264,67 @@ common/views/components/connect-failed.troubleshooter.vue:
|
||||
checking-network: "ネットワーク接続を確認中"
|
||||
internet: "インターネット接続"
|
||||
checking-internet: "インターネット接続を確認中"
|
||||
server: "サーバー接続"
|
||||
server: "서버 연결"
|
||||
checking-server: "サーバー接続を確認中"
|
||||
finding: "問題を調べています"
|
||||
no-network: "ネットワークに接続されていません"
|
||||
no-network-desc: "お使いのPCのネットワーク接続が正常か確認してください。"
|
||||
no-internet: "インターネットに接続されていません"
|
||||
no-internet-desc: "ネットワークには接続されていますが、インターネットには接続されていないようです。お使いのPCのインターネット接続が正常か確認してください。"
|
||||
no-server: "Misskeyのサーバーに接続できません"
|
||||
no-server: "Misskey 서버에 연결할 수 없습니다."
|
||||
no-server-desc: "お使いのPCのインターネット接続は正常ですが、Misskeyのサーバーには接続できませんでした。サーバーがダウンまたはメンテナンスしている可能性があるので、しばらくしてから再度御アクセスください。"
|
||||
success: "Misskeyのサーバーに接続できました"
|
||||
success-desc: "正常に接続できるようです。ページを再度読み込みしてください。"
|
||||
flush: "キャッシュの削除"
|
||||
set-version: "バージョン指定"
|
||||
flush: "캐시 삭제"
|
||||
set-version: "버전 지정"
|
||||
common/views/components/media-banner.vue:
|
||||
sensitive: "열람주의"
|
||||
click-to-show: "클릭하여 표시"
|
||||
common/views/components/theme.vue:
|
||||
light-theme: "非ダークモード時に使用するテーマ"
|
||||
dark-theme: "ダークモード時に使用するテーマ"
|
||||
light-themes: "밝은 테마"
|
||||
dark-themes: "어두운 테마"
|
||||
install-a-theme: "테마 설치"
|
||||
theme-code: "테마 코드"
|
||||
install: "설치"
|
||||
installed: "「{}」をインストールしました"
|
||||
create-a-theme: "테마 만들기"
|
||||
save-created-theme: "테마 저장"
|
||||
primary-color: "기본 색"
|
||||
secondary-color: "보조 색"
|
||||
text-color: "글자 색상"
|
||||
base-theme: "ベーステーマ"
|
||||
base-theme-light: "Light"
|
||||
base-theme-dark: "Dark"
|
||||
theme-name: "테마명"
|
||||
preview-created-theme: "미리보기"
|
||||
invalid-theme: "テーマが正しくありません。"
|
||||
already-installed: "既にそのテーマはインストールされています。"
|
||||
saved: "保存しました"
|
||||
manage-themes: "テーマの管理"
|
||||
builtin-themes: "標準テーマ"
|
||||
my-themes: "マイテーマ"
|
||||
installed-themes: "インストールされたテーマ"
|
||||
select-theme: "テーマを選択してください"
|
||||
uninstall: "アンインストール"
|
||||
uninstalled: "「{}」をアンインストールしました"
|
||||
author: "作者"
|
||||
desc: "説明"
|
||||
export: "エクスポート"
|
||||
import: "インポート"
|
||||
import-by-code: "またはコードをペースト"
|
||||
theme-name-required: "テーマ名は必須です。"
|
||||
common/views/components/cw-button.vue:
|
||||
hide: "隠す"
|
||||
show: "もっと見る"
|
||||
common/views/components/messaging.vue:
|
||||
search-user: "ユーザーを探す"
|
||||
you: "당신"
|
||||
no-history: "履歴はありません"
|
||||
common/views/components/messaging-room.vue:
|
||||
empty: "このユーザーと話したことはありません"
|
||||
more: "もっと読む"
|
||||
more: "더 보기"
|
||||
no-history: "これより過去の履歴はありません"
|
||||
resize-form: "ドラッグしてフォームの広さを調整"
|
||||
new-message: "新しいメッセージがあります"
|
||||
@@ -250,17 +339,21 @@ common/views/components/messaging-room.message.vue:
|
||||
is-read: "읽음"
|
||||
deleted: "このメッセージは削除されました"
|
||||
common/views/components/nav.vue:
|
||||
about: "Misskeyについて"
|
||||
stats: "統計"
|
||||
about: "Misskey에 대하여"
|
||||
stats: "통계"
|
||||
status: "ステータス"
|
||||
wiki: "Wiki"
|
||||
donors: "ドナー"
|
||||
repository: "リポジトリ"
|
||||
develop: "開発者"
|
||||
feedback: "フィードバック"
|
||||
donors: "기증자"
|
||||
repository: "저장소"
|
||||
develop: "개발자"
|
||||
feedback: "피드백"
|
||||
common/views/components/note-menu.vue:
|
||||
detail: "詳細"
|
||||
copy-link: "링크 복사"
|
||||
favorite: "お気に入り"
|
||||
unfavorite: "お気に入り解除"
|
||||
pin: "ピン留め"
|
||||
unpin: "ピン留め解除"
|
||||
delete: "削除"
|
||||
delete-confirm: "この投稿を削除しますか?"
|
||||
remote: "投稿元で見る"
|
||||
@@ -336,6 +429,28 @@ common/views/components/visibility-chooser.vue:
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
common/views/components/trends.vue:
|
||||
count: "{}人が投稿"
|
||||
empty: "トレンドなし"
|
||||
common/views/components/profile-editor.vue:
|
||||
title: "プロフィール"
|
||||
name: "名前"
|
||||
account: "アカウント"
|
||||
location: "場所"
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
is-cat: "このアカウントはCatです"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-locked: "フォローを承認制にする"
|
||||
careful-bot: "Botからのフォローだけ承認制にする"
|
||||
advanced: "その他"
|
||||
privacy: "プライバシー"
|
||||
save: "保存"
|
||||
saved: "プロフィールを保存しました"
|
||||
uploading: "アップロード中"
|
||||
upload-failed: "アップロードに失敗しました"
|
||||
common/views/widgets/broadcast.vue:
|
||||
fetching: "確認中"
|
||||
no-broadcasts: "お知らせはありません"
|
||||
@@ -359,8 +474,6 @@ common/views/widgets/posts-monitor.vue:
|
||||
toggle: "表示を切り替え"
|
||||
common/views/widgets/hashtags.vue:
|
||||
title: "ハッシュタグ"
|
||||
count: "{}人が投稿"
|
||||
empty: "トレンドなし"
|
||||
common/views/widgets/server.vue:
|
||||
title: "サーバー情報"
|
||||
toggle: "表示を切り替え"
|
||||
@@ -398,6 +511,7 @@ common/views/pages/follow.vue:
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-processing: "フォロー処理中"
|
||||
follow-request: "フォロー申請"
|
||||
desktop:
|
||||
banner-crop-title: "バナーとして表示する部分を選択"
|
||||
@@ -410,6 +524,7 @@ desktop:
|
||||
uploading-avatar: "新しいアバターをアップロードしています"
|
||||
avatar-updated: "アバターを更新しました"
|
||||
choose-avatar: "アバターにする画像を選択"
|
||||
invalid-filetype: "この形式のファイルはサポートされていません"
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Black ... Total"
|
||||
notes: "Blue ... Notes"
|
||||
@@ -423,6 +538,31 @@ desktop/views/components/calendar.vue:
|
||||
prev: "前の月"
|
||||
next: "次の月"
|
||||
go: "クリックして時間遡行"
|
||||
desktop/views/components/charts.vue:
|
||||
title: "チャート"
|
||||
per-day: "1日ごと"
|
||||
per-hour: "1時間ごと"
|
||||
federation: "フェデレーション"
|
||||
notes: "投稿"
|
||||
users: "ユーザー"
|
||||
drive: "ドライブ"
|
||||
network: "ネットワーク"
|
||||
charts:
|
||||
federation-instances: "インスタンスの増減"
|
||||
federation-instances-total: "インスタンスの積算"
|
||||
notes: "投稿の増減 (統合)"
|
||||
local-notes: "投稿の増減 (ローカル)"
|
||||
remote-notes: "投稿の増減 (リモート)"
|
||||
notes-total: "投稿の積算"
|
||||
users: "ユーザーの増減"
|
||||
users-total: "ユーザーの積算"
|
||||
drive: "ドライブ使用量の増減"
|
||||
drive-total: "ドライブ使用量の積算"
|
||||
drive-files: "ドライブのファイル数の増減"
|
||||
drive-files-total: "ドライブのファイル数の積算"
|
||||
network-requests: "リクエスト"
|
||||
network-time: "応答時間"
|
||||
network-usage: "通信量"
|
||||
desktop/views/components/choose-file-from-drive-window.vue:
|
||||
choose-file: "ファイル選択中"
|
||||
upload: "PCからドライブにファイルをアップロード"
|
||||
@@ -439,7 +579,6 @@ desktop/views/components/crop-window.vue:
|
||||
ok: "決定"
|
||||
desktop/views/components/drive-window.vue:
|
||||
used: "使用中"
|
||||
drive: "ドライブ"
|
||||
desktop/views/components/drive.file.vue:
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
@@ -469,8 +608,6 @@ desktop/views/components/drive.folder.vue:
|
||||
rename: "名前を変更"
|
||||
rename-folder: "フォルダ名の変更"
|
||||
input-new-folder-name: "新しいフォルダ名を入力してください"
|
||||
desktop/views/components/drive.nav-folder.vue:
|
||||
drive: "ドライブ"
|
||||
desktop/views/components/drive.vue:
|
||||
search: "検索"
|
||||
load-more: "もっと読み込む"
|
||||
@@ -501,6 +638,7 @@ desktop/views/components/follow-button.vue:
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-processing: "フォロー処理中"
|
||||
follow-request: "フォロー申請"
|
||||
desktop/views/components/followers-window.vue:
|
||||
followers: "{} のフォロワー"
|
||||
@@ -537,7 +675,7 @@ desktop/views/components/note-detail.vue:
|
||||
location: "位置情報"
|
||||
renote: "Renote"
|
||||
add-reaction: "リアクション"
|
||||
desktop/views/components/notes.note.vue:
|
||||
desktop/views/components/note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
reply: "返信"
|
||||
renote: "Renote"
|
||||
@@ -545,8 +683,6 @@ desktop/views/components/notes.note.vue:
|
||||
detail: "詳細"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
hide: "隠す"
|
||||
see-more: "もっと見る"
|
||||
desktop/views/components/notes.vue:
|
||||
error: "読み込みに失敗しました。"
|
||||
retry: "リトライ"
|
||||
@@ -605,44 +741,56 @@ desktop/views/components/settings.vue:
|
||||
profile: "プロフィール"
|
||||
notification: "通知"
|
||||
apps: "アプリ"
|
||||
mute: "ミュート"
|
||||
drive: "ドライブ"
|
||||
mute-and-block: "ミュート/ブロック"
|
||||
blocking: "ブロック"
|
||||
security: "セキュリティ"
|
||||
signin: "サインイン履歴"
|
||||
password: "パスワード"
|
||||
2fa: "二段階認証"
|
||||
other: "その他"
|
||||
license: "ライセンス"
|
||||
theme: "テーマ"
|
||||
behaviour: "動作"
|
||||
fetch-on-scroll: "スクロールで自動読み込み"
|
||||
fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。"
|
||||
note-visibility: "投稿の公開範囲"
|
||||
default-note-visibility: "デフォルトの公開範囲"
|
||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||
auto-popout: "ウィンドウの自動ポップアウト"
|
||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
||||
advanced: "詳細設定"
|
||||
api-via-stream: "ストリームを経由したAPIリクエスト"
|
||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||
deck-nav: "デッキ内ナビゲーション"
|
||||
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
|
||||
deck-default: "デッキをデフォルトのUIにする"
|
||||
display: "デザインと表示"
|
||||
customize: "ホームをカスタマイズ"
|
||||
wallpaper: "壁紙"
|
||||
choose-wallpaper: "壁紙を選択"
|
||||
delete-wallpaper: "壁紙を削除"
|
||||
dark-mode: "ダークモード"
|
||||
use-shadow: "UIに影を使用"
|
||||
rounded-corners: "UIの角を丸める"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||
show-clock-on-header: "右上に時計を表示する"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
timeline: "タイムライン"
|
||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||
show-maps: "マップの自動展開"
|
||||
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
||||
deck-column-align: "デッキのカラムの位置"
|
||||
deck-column-align-center: "中央"
|
||||
deck-column-align-left: "左"
|
||||
sound: "サウンド"
|
||||
enable-sounds: "サウンドを有効にする"
|
||||
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
|
||||
volume: "ボリューム"
|
||||
test: "テスト"
|
||||
mobile: "モバイル"
|
||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||
language: "言語"
|
||||
pick-language: "言語を選択"
|
||||
recommended: "推奨"
|
||||
@@ -678,6 +826,10 @@ desktop/views/components/settings.vue:
|
||||
tools: "ツール"
|
||||
task-manager: "タスクマネージャ"
|
||||
third-parties: "サードパーティ"
|
||||
navbar-position: "ナビゲーションバーの位置"
|
||||
navbar-position-top: "上"
|
||||
navbar-position-left: "左"
|
||||
navbar-position-right: "右"
|
||||
desktop/views/components/settings.2fa.vue:
|
||||
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
||||
detail: "詳細..."
|
||||
@@ -696,20 +848,32 @@ desktop/views/components/settings.2fa.vue:
|
||||
success: "設定が完了しました!"
|
||||
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
||||
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
||||
desktop/views/components/settings.api.vue:
|
||||
common/views/components/api-settings.vue:
|
||||
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||
regenerate-token: "トークンを再生成"
|
||||
token: "Token:"
|
||||
enter-password: "パスワードを入力してください"
|
||||
console:
|
||||
title: 'APIコンソール'
|
||||
endpoint: 'エンドポイント'
|
||||
parameter: 'パラメータ'
|
||||
send: '送信'
|
||||
sending: '応答待ち'
|
||||
response: '結果'
|
||||
desktop/views/components/settings.apps.vue:
|
||||
no-apps: "連携しているアプリケーションはありません"
|
||||
desktop/views/components/settings.drive.vue:
|
||||
max: "中"
|
||||
common/views/components/drive-settings.vue:
|
||||
max: "容量"
|
||||
in-use: "使用中"
|
||||
desktop/views/components/settings.mute.vue:
|
||||
no-users: "ミュートしているユーザーはいません"
|
||||
stats: "統計"
|
||||
common/views/components/mute-and-block.vue:
|
||||
mute-and-block: "ミュートとブロック"
|
||||
mute: "ミュート"
|
||||
block: "ブロック"
|
||||
no-muted-users: "ミュートしているユーザーはいません"
|
||||
no-blocked-users: "ブロックしているユーザーはいません"
|
||||
desktop/views/components/settings.password.vue:
|
||||
reset: "パスワードを変更する"
|
||||
enter-current-password: "現在のパスワードを入力してください"
|
||||
@@ -717,20 +881,6 @@ desktop/views/components/settings.password.vue:
|
||||
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
||||
not-match: "新しいパスワードが一致しません"
|
||||
changed: "パスワードを変更しました"
|
||||
desktop/views/components/settings.profile.vue:
|
||||
avatar: "アイコン"
|
||||
choice-avatar: "画像を選択"
|
||||
name: "名前"
|
||||
location: "場所"
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
save: "保存"
|
||||
locked-account: "アカウントの保護"
|
||||
is-locked: "投稿を非公開にする"
|
||||
other: "その他"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
profile-updated: "プロフィールを更新しました"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
@@ -743,17 +893,23 @@ desktop/views/components/timeline.vue:
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
mentions: "あなた宛て"
|
||||
messages: "メッセージ"
|
||||
list: "リスト"
|
||||
hashtag: "ハッシュタグ"
|
||||
add-tag-timeline: "ハッシュタグを追加"
|
||||
add-list: "リストを追加"
|
||||
list-name: "リスト名"
|
||||
desktop/views/components/ui.header.vue:
|
||||
welcome-back: "おかえりなさい、"
|
||||
adjective: "さん"
|
||||
desktop/views/components/ui.header.account.vue:
|
||||
profile: "プロフィール"
|
||||
drive: "ドライブ"
|
||||
favorites: "お気に入り"
|
||||
lists: "リスト"
|
||||
follow-requests: "フォロー申請"
|
||||
customize: "ホームのカスタマイズ"
|
||||
admin: "管理"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
dark: "闇に飲まれる"
|
||||
@@ -792,16 +948,20 @@ desktop/views/components/window.vue:
|
||||
close: "閉じる"
|
||||
desktop/views/pages/admin/admin.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
drive: "ドライブ"
|
||||
users: "ユーザー"
|
||||
update: "更新"
|
||||
announcements: "お知らせ"
|
||||
hashtags: "ハッシュタグ"
|
||||
desktop/views/pages/admin/admin.dashboard.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
all-users: "全てのユーザー"
|
||||
original-users: "このインスタンスのユーザー"
|
||||
all-notes: "全てのノート"
|
||||
original-notes: "このインスタンスのノート"
|
||||
all-notes: "全ての投稿"
|
||||
original-notes: "このインスタンスの投稿"
|
||||
invite: "招待"
|
||||
banner-url: "Banner URL"
|
||||
disableRegistration: "Disable new user registration"
|
||||
disableLocalTimeline: "Disable the local timeline"
|
||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||
suspend-user: "ユーザーの凍結"
|
||||
suspend: "凍結"
|
||||
@@ -818,26 +978,28 @@ desktop/views/pages/admin/admin.unverify-user.vue:
|
||||
unverify-user: "ユーザーの公式アカウント解除"
|
||||
unverify: "公式アカウントを解除する"
|
||||
unverified: "公式アカウントを解除しました"
|
||||
desktop/views/pages/admin/admin.notes-chart.vue:
|
||||
title: "投稿"
|
||||
local: "ローカル"
|
||||
remote: "リモート"
|
||||
desktop/views/pages/admin/admin.users-chart.vue:
|
||||
title: "ユーザー"
|
||||
local: "ローカル"
|
||||
remote: "リモート"
|
||||
desktop/views/pages/admin/admin.drive-chart.vue:
|
||||
title: "ドライブ"
|
||||
local: "ローカル"
|
||||
remote: "リモート"
|
||||
desktop/views/pages/admin/admin.announcements.vue:
|
||||
announcements: "お知らせ"
|
||||
desktop/views/pages/admin/admin.hashtags.vue:
|
||||
hided-tags: "Hidden Tags"
|
||||
desktop/views/pages/deck/deck.tl-column.vue:
|
||||
is-media-only: "メディア投稿のみ"
|
||||
is-media-view: "メディアビュー"
|
||||
edit: "オプション"
|
||||
desktop/views/pages/deck/deck.note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
desktop/views/pages/deck/deck.user-column.vue:
|
||||
posts: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
images: "画像"
|
||||
activity: "アクティビティ"
|
||||
timeline: "タイムライン"
|
||||
pinned-notes: "ピン留めされた投稿"
|
||||
push-to-a-list: "リストに追加"
|
||||
desktop/views/pages/stats/stats.vue:
|
||||
all-users: "全てのユーザー"
|
||||
original-users: "このインスタンスのユーザー"
|
||||
all-notes: "全ての投稿"
|
||||
original-notes: "このインスタンスの投稿"
|
||||
desktop/views/pages/welcome.vue:
|
||||
about: "詳しく..."
|
||||
gotit: "わかった"
|
||||
@@ -846,7 +1008,10 @@ desktop/views/pages/welcome.vue:
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
announcements: "お知らせ"
|
||||
photos: "最近の画像"
|
||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||
info: "情報"
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Misskey Drive"
|
||||
desktop/views/pages/favorites.vue:
|
||||
@@ -882,9 +1047,6 @@ desktop/views/pages/user/user.friends.vue:
|
||||
no-users: "よく話すユーザーはいません"
|
||||
desktop/views/pages/user/user.vue:
|
||||
is-suspended: "このユーザーは凍結されています。"
|
||||
is-remote: "このユーザーはリモートユーザーです。"
|
||||
view-remote: "正確な情報を見る"
|
||||
desktop/views/pages/user/user.home.vue:
|
||||
last-used-at: "最終アクセス"
|
||||
desktop/views/pages/user/user.photos.vue:
|
||||
title: "フォト"
|
||||
@@ -898,6 +1060,9 @@ desktop/views/pages/user/user.profile.vue:
|
||||
mute: "ミュートする"
|
||||
muted: "ミュートしています"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロックする"
|
||||
unblock: "ブロック解除"
|
||||
block-confirm: "このユーザーをブロックしますか?"
|
||||
push-to-a-list: "リストに追加"
|
||||
list-pushed: "{user}を{list}に追加しました。"
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
@@ -905,6 +1070,10 @@ desktop/views/pages/user/user.header.vue:
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
is-bot: "このアカウントはBotです"
|
||||
years-old: "歳"
|
||||
year: "年"
|
||||
month: "月"
|
||||
day: "日"
|
||||
desktop/views/pages/user/user.timeline.vue:
|
||||
default: "投稿"
|
||||
with-replies: "投稿と返信"
|
||||
@@ -934,7 +1103,6 @@ desktop/views/widgets/users.vue:
|
||||
refresh: "他を見る"
|
||||
no-one: "いません!"
|
||||
mobile/views/components/drive.vue:
|
||||
drive: "ドライブ"
|
||||
used: "使用中"
|
||||
folder-count: "フォルダ"
|
||||
count-separator: "、"
|
||||
@@ -964,6 +1132,8 @@ mobile/views/components/drive.file-detail.vue:
|
||||
hash: "ハッシュ (md5)"
|
||||
exif: "EXIF"
|
||||
nsfw: "閲覧注意"
|
||||
mark-as-sensitive: "閲覧注意に設定"
|
||||
unmark-as-sensitive: "閲覧注意を解除"
|
||||
mobile/views/components/media-image.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
@@ -974,6 +1144,7 @@ mobile/views/components/follow-button.vue:
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-processing: "フォロー処理中"
|
||||
follow-request: "フォロー申請"
|
||||
mobile/views/components/friends-maker.vue:
|
||||
title: "気になるユーザーをフォロー"
|
||||
@@ -983,8 +1154,6 @@ mobile/views/components/friends-maker.vue:
|
||||
close: "閉じる"
|
||||
mobile/views/components/note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
more: "もっと見る"
|
||||
less: "隠す"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
location: "位置情報"
|
||||
@@ -1037,13 +1206,13 @@ mobile/views/components/ui.nav.vue:
|
||||
messaging: "メッセージ"
|
||||
follow-requests: "フォロー申請"
|
||||
search: "検索"
|
||||
drive: "ドライブ"
|
||||
favorites: "お気に入り"
|
||||
user-lists: "リスト"
|
||||
widgets: "ウィジェット"
|
||||
game: "ゲーム"
|
||||
darkmode: "ダークモード"
|
||||
settings: "設定"
|
||||
admin: "管理"
|
||||
about: "Misskeyについて"
|
||||
mobile/views/components/user-timeline.vue:
|
||||
no-notes: "このユーザーは投稿していないようです。"
|
||||
@@ -1059,7 +1228,6 @@ mobile/views/pages/user-lists.vue:
|
||||
title: "リスト"
|
||||
enter-list-name: "リスト名を入力してください"
|
||||
mobile/views/pages/drive.vue:
|
||||
drive: "ドライブ"
|
||||
more: "もっと見る"
|
||||
mobile/views/pages/signup.vue:
|
||||
lets-start: "📦 始めましょう"
|
||||
@@ -1072,6 +1240,8 @@ mobile/views/pages/home.vue:
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
mentions: "あなた宛て"
|
||||
messages: "メッセージ"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
mobile/views/pages/welcome.vue:
|
||||
@@ -1102,20 +1272,6 @@ mobile/views/pages/notifications.vue:
|
||||
read-all: "すべての通知を既読にしますか?"
|
||||
mobile/views/pages/games/reversi.vue:
|
||||
reversi: "リバーシ"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
name: "名前"
|
||||
account: "アカウント"
|
||||
location: "場所"
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
is-cat: "このアカウントはCatです"
|
||||
save: "保存"
|
||||
saved: "プロフィールを保存しました"
|
||||
uploading: "アップロード中"
|
||||
upload-failed: "アップロードに失敗しました"
|
||||
mobile/views/pages/search.vue:
|
||||
search: "検索"
|
||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||
@@ -1133,6 +1289,7 @@ mobile/views/pages/settings.vue:
|
||||
dark-mode: "ダークモード"
|
||||
i-am-under-limited-internet: "私は通信を制限されている"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
timeline: "タイムライン"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||
@@ -1141,8 +1298,15 @@ mobile/views/pages/settings.vue:
|
||||
post-style: "投稿の表示スタイル"
|
||||
post-style-standard: "標準"
|
||||
post-style-smart: "スマート"
|
||||
notification-position: "通知の表示"
|
||||
notification-position-bottom: "下"
|
||||
notification-position-top: "上"
|
||||
theme: "テーマ"
|
||||
behavior: "動作"
|
||||
fetch-on-scroll: "スクロールで自動読み込み"
|
||||
note-visibility: "投稿の公開範囲"
|
||||
default-note-visibility: "デフォルトの公開範囲"
|
||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||
load-raw-images: "添付された画像を高画質で表示する"
|
||||
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||
@@ -1161,6 +1325,9 @@ mobile/views/pages/settings.vue:
|
||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
sound: "サウンド"
|
||||
enable-sounds: "サウンドを有効にする"
|
||||
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
|
||||
mobile/views/pages/user.vue:
|
||||
follows-you: "フォローされています"
|
||||
following: "フォロー"
|
||||
@@ -1170,8 +1337,10 @@ mobile/views/pages/user.vue:
|
||||
timeline: "タイムライン"
|
||||
media: "メディア"
|
||||
is-suspended: "このユーザーは凍結されています。"
|
||||
is-remote: "このユーザーはリモートユーザーです。"
|
||||
view-remote: "正確な情報を見る"
|
||||
mute: "ミュート"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロック"
|
||||
unblock: "ブロック解除"
|
||||
mobile/views/pages/user/home.vue:
|
||||
recent-notes: "最近の投稿"
|
||||
images: "画像"
|
||||
@@ -1217,3 +1386,29 @@ docs:
|
||||
description: "説明"
|
||||
dev/views/index.vue:
|
||||
manage-apps: "アプリの管理"
|
||||
dev/views/apps.vue:
|
||||
manage-apps: "アプリを管理"
|
||||
create-app: "アプリ作成"
|
||||
app-missing: "アプリなし"
|
||||
dev/views/new-app.vue:
|
||||
create-app: "アプリケーションの作成"
|
||||
app-name: "アプリケーション名"
|
||||
app-name-desc: "あなたのアプリの名称。"
|
||||
app-name-ex: "ex) Misskey for iOS"
|
||||
app-overview: "アプリの概要"
|
||||
app-desc: "あなたのアプリの簡単な説明や紹介。"
|
||||
app-desc-ex: "ex) Misskey iOSクライアント。"
|
||||
callback-url: "コールバックURL (オプション)"
|
||||
callback-url-desc: "ユーザーが認証フォームで認証した際にリダイレクトするURLを設定できます。"
|
||||
authority: "権限"
|
||||
authority-desc: "ここで要求した機能だけがAPIからアクセスできます。"
|
||||
authority-warning: "アプリ作成後も変更できますが、新たな権限を付与する場合、その時点で関連付けられているユーザーキーはすべて無効になります。"
|
||||
account-read: "アカウントの情報を見る。"
|
||||
account-write: "アカウントの情報を操作する。"
|
||||
note-write: "投稿する。"
|
||||
reaction-write: "リアクションしたりリアクションをキャンセルする。"
|
||||
following-write: "フォローしたりフォロー解除する。"
|
||||
drive-read: "ドライブを見る。"
|
||||
drive-write: "ドライブを操作する。"
|
||||
notification-read: "通知を見る。"
|
||||
notification-write: "通知を操作する。"
|
||||
|
||||
1414
locales/nl-NL.yml
Normal file
1414
locales/nl-NL.yml
Normal file
File diff suppressed because it is too large
Load Diff
1414
locales/no-NO.yml
Normal file
1414
locales/no-NO.yml
Normal file
File diff suppressed because it is too large
Load Diff
@@ -6,12 +6,33 @@ common:
|
||||
misskey: "⭐ Fediwersum"
|
||||
about-title: "⭐ Fediwersum"
|
||||
about: "Dziękujemy za znalezienie Misskey. Misskey jest <b>zdecentralizowaną platformą mikroblogową</b> powstałą na Ziemi. Ponieważ działa ona w Fediwersum (uniwersum, w którego skład wchodzi wiele sieci społecznościowych), jest ona połączona z innymi platformami społecznościowymi. Spróbujesz odpocząć od zatłoczoneo miasta i zanurzyć się w nowym Internecie?"
|
||||
intro:
|
||||
title: "Misskeyって?"
|
||||
about: "Misskeyはオープンソースの<b>分散型マイクロブログSNS</b>です。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。"
|
||||
features: "特徴"
|
||||
rich-contents: "投稿"
|
||||
rich-contents-desc: "自分の考え、話題の出来事、皆と共有したいことについて発信してください。必要であれば、様々な構文を使って投稿を装飾したり、好きな画像、動画などのファイルやアンケートを添付することもできます。"
|
||||
reaction: "リアクション"
|
||||
reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。"
|
||||
ui: "インターフェース"
|
||||
ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。"
|
||||
drive: "ドライブ"
|
||||
drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんか?もしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんか?Misskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。"
|
||||
outro: "他にもMisskeyにしかない機能はまだまだあるので、ぜひあなた自身の目で確かめてください。Misskeyは分散型SNSなので、このインスタンスが気に入らなければ他のインスタンスを試すこともできます。それでは、GLHF!"
|
||||
adblock:
|
||||
detected: "Spróbuj wyłączyć blokadę reklam."
|
||||
warning: "<strong>Misskey nie zawiera reklam</strong>, ale część funkcji może nie działać prawidłowo z włączonym blokowaniem reklam."
|
||||
application-authorization: "アプリの連携"
|
||||
close: "Zamknij"
|
||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||
BSoD:
|
||||
fatal-error: ":( 致命的な問題が発生しました。"
|
||||
update-browser-os: "お使いのブラウザ(またはOS)のバージョンを更新すると解決する可能性があります。"
|
||||
error-code: "エラーコード"
|
||||
browser-version: "ブラウザ バージョン"
|
||||
client-version: "クライアント バージョン"
|
||||
email-support: "問題が解決しない場合は、上記の情報をお書き添えの上 syuilotan@yahoo.co.jp までご連絡ください。"
|
||||
thanks: "Thank you for using Misskey."
|
||||
got-it: "Rozumiem!"
|
||||
customization-tips:
|
||||
title: "Wskazówki o dostosowywaniu"
|
||||
@@ -41,6 +62,7 @@ common:
|
||||
years_ago: "{} lat temu"
|
||||
month-and-day: "{month}-{day}"
|
||||
trash: "Kosz"
|
||||
drive: "ドライブ"
|
||||
weekday-short:
|
||||
sunday: "N"
|
||||
monday: "Pn"
|
||||
@@ -58,7 +80,7 @@ common:
|
||||
friday: "Piątek"
|
||||
saturday: "Sobota"
|
||||
reactions:
|
||||
like: "ええやん"
|
||||
like: "いいね"
|
||||
love: "Kocham"
|
||||
laugh: "Śmieszne"
|
||||
hmm: "Hmm…?"
|
||||
@@ -68,6 +90,15 @@ common:
|
||||
confused: "Zmieszany"
|
||||
rip: "RIP"
|
||||
pudding: "Pudding"
|
||||
note-visibility:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
followers: "フォロワー"
|
||||
followers-desc: "自分のフォロワーにのみ公開"
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
note-placeholders:
|
||||
a: "Co robisz?"
|
||||
b: "Co się wydarzyło?"
|
||||
@@ -84,8 +115,21 @@ common:
|
||||
my-token-regenerated: "Twój token został wygenerowany. Zostaniesz wylogowany."
|
||||
i-like-sushi: "Wolę sushi od puddingu"
|
||||
show-reversi-board-labels: "Pokazuj podpisy wierszy i kolumn w Reversi"
|
||||
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
||||
verified-user: "公式アカウント"
|
||||
disable-animated-mfm: "Wyłącz animowany tekst we wpisach"
|
||||
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
||||
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
||||
show-full-acct: "ユーザー名のホストを省略しない"
|
||||
reduce-motion: "UIの動きを減らす"
|
||||
this-setting-is-this-device-only: "このデバイスのみ"
|
||||
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
||||
is-remote-user: "このユーザー情報はコピーです。"
|
||||
is-remote-post: "この投稿情報はコピーです。"
|
||||
view-on-remote: "正確な情報を見る"
|
||||
error:
|
||||
title: '問題が発生しました'
|
||||
retry: 'やり直す'
|
||||
reversi:
|
||||
drawn: "Remis"
|
||||
my-turn: "Twoja kolej"
|
||||
@@ -126,7 +170,10 @@ common:
|
||||
home: "Strona główna"
|
||||
local: "Lokalne"
|
||||
hybrid: "Społeczność"
|
||||
hashtag: "ハッシュタグ"
|
||||
global: "Globalne"
|
||||
mentions: "あなた宛て"
|
||||
direct: "ダイレクト投稿"
|
||||
notifications: "Powiadomienia"
|
||||
list: "Listy"
|
||||
swap-left: "Przesuń w lewo"
|
||||
@@ -138,6 +185,7 @@ common:
|
||||
rename: "Zmień nazwę"
|
||||
stack-left: "Przypnij do lewej"
|
||||
pop-right: "Odepnij w prawo"
|
||||
dev: "アプリの作成に失敗しました。再度お試しください。"
|
||||
auth/views/form.vue:
|
||||
share-access: "Czy chcesz <b>zezwolić</b> <i>{{ app.name }}</i> na dostęp do Twojego konta?"
|
||||
permission-ask: "Ta aplikacja wymaga następujących uprawnień:"
|
||||
@@ -229,6 +277,47 @@ common/views/components/connect-failed.troubleshooter.vue:
|
||||
success-desc: "Wygląda na to, że udało się połączyć. Odśwież stronę."
|
||||
flush: "Wyczyść pamięć podręczną"
|
||||
set-version: "Określ wersję"
|
||||
common/views/components/media-banner.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
common/views/components/theme.vue:
|
||||
light-theme: "非ダークモード時に使用するテーマ"
|
||||
dark-theme: "ダークモード時に使用するテーマ"
|
||||
light-themes: "明るいテーマ"
|
||||
dark-themes: "暗いテーマ"
|
||||
install-a-theme: "テーマのインストール"
|
||||
theme-code: "テーマコード"
|
||||
install: "インストール"
|
||||
installed: "「{}」をインストールしました"
|
||||
create-a-theme: "テーマの作成"
|
||||
save-created-theme: "テーマを保存"
|
||||
primary-color: "プライマリ カラー"
|
||||
secondary-color: "セカンダリ カラー"
|
||||
text-color: "文字色"
|
||||
base-theme: "ベーステーマ"
|
||||
base-theme-light: "Light"
|
||||
base-theme-dark: "Dark"
|
||||
theme-name: "テーマ名"
|
||||
preview-created-theme: "プレビュー"
|
||||
invalid-theme: "テーマが正しくありません。"
|
||||
already-installed: "既にそのテーマはインストールされています。"
|
||||
saved: "保存しました"
|
||||
manage-themes: "テーマの管理"
|
||||
builtin-themes: "標準テーマ"
|
||||
my-themes: "マイテーマ"
|
||||
installed-themes: "インストールされたテーマ"
|
||||
select-theme: "テーマを選択してください"
|
||||
uninstall: "アンインストール"
|
||||
uninstalled: "「{}」をアンインストールしました"
|
||||
author: "作者"
|
||||
desc: "説明"
|
||||
export: "エクスポート"
|
||||
import: "インポート"
|
||||
import-by-code: "またはコードをペースト"
|
||||
theme-name-required: "テーマ名は必須です。"
|
||||
common/views/components/cw-button.vue:
|
||||
hide: "隠す"
|
||||
show: "もっと見る"
|
||||
common/views/components/messaging.vue:
|
||||
search-user: "Znajdź użytkownika"
|
||||
you: "Ty"
|
||||
@@ -259,8 +348,12 @@ common/views/components/nav.vue:
|
||||
develop: "Autorzy"
|
||||
feedback: "Podziel się opinią"
|
||||
common/views/components/note-menu.vue:
|
||||
detail: "詳細"
|
||||
copy-link: "リンクをコピー"
|
||||
favorite: "Dodaj do ulubionych"
|
||||
unfavorite: "お気に入り解除"
|
||||
pin: "Przypnij do profilu"
|
||||
unpin: "ピン留め解除"
|
||||
delete: "Usuń"
|
||||
delete-confirm: "Czy na pewno chcesz usunąć ten wpis?"
|
||||
remote: "Pokaż oryginał"
|
||||
@@ -336,6 +429,28 @@ common/views/components/visibility-chooser.vue:
|
||||
specified: "Bezpośredni"
|
||||
specified-desc: "Tylko dla określonych użytkowników"
|
||||
private: "Prywatny"
|
||||
common/views/components/trends.vue:
|
||||
count: "{}人が投稿"
|
||||
empty: "トレンドなし"
|
||||
common/views/components/profile-editor.vue:
|
||||
title: "プロフィール"
|
||||
name: "名前"
|
||||
account: "アカウント"
|
||||
location: "場所"
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
is-cat: "このアカウントはCatです"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-locked: "フォローを承認制にする"
|
||||
careful-bot: "Botからのフォローだけ承認制にする"
|
||||
advanced: "その他"
|
||||
privacy: "プライバシー"
|
||||
save: "保存"
|
||||
saved: "プロフィールを保存しました"
|
||||
uploading: "アップロード中"
|
||||
upload-failed: "アップロードに失敗しました"
|
||||
common/views/widgets/broadcast.vue:
|
||||
fetching: "Sprawdzanie"
|
||||
no-broadcasts: "Brak transmisji"
|
||||
@@ -359,8 +474,6 @@ common/views/widgets/posts-monitor.vue:
|
||||
toggle: "Przełącz widok"
|
||||
common/views/widgets/hashtags.vue:
|
||||
title: "Hashtagi"
|
||||
count: "Wspomniany przez {} użytkowników"
|
||||
empty: "Brak popularnych hashtagów"
|
||||
common/views/widgets/server.vue:
|
||||
title: "Informacje o serwerze"
|
||||
toggle: "Przełącz widok"
|
||||
@@ -398,6 +511,7 @@ common/views/pages/follow.vue:
|
||||
following: "Śledzisz"
|
||||
follow: "Śledź"
|
||||
request-pending: "Oczekiwanie na pozwolenie"
|
||||
follow-processing: "フォロー処理中"
|
||||
follow-request: "Poproś o śledzenie"
|
||||
desktop:
|
||||
banner-crop-title: "バナーとして表示する部分を選択"
|
||||
@@ -410,6 +524,7 @@ desktop:
|
||||
uploading-avatar: "Wysyłanie awatara"
|
||||
avatar-updated: "Wysłano awatar"
|
||||
choose-avatar: "Wybierz awatar"
|
||||
invalid-filetype: "この形式のファイルはサポートされていません"
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Czarny … Łącznie"
|
||||
notes: "Niebieski … Wpisy"
|
||||
@@ -423,6 +538,31 @@ desktop/views/components/calendar.vue:
|
||||
prev: "Poprzedni miesiąc"
|
||||
next: "Następny miesiąc"
|
||||
go: "Naciśnij, aby przejść"
|
||||
desktop/views/components/charts.vue:
|
||||
title: "チャート"
|
||||
per-day: "1日ごと"
|
||||
per-hour: "1時間ごと"
|
||||
federation: "フェデレーション"
|
||||
notes: "投稿"
|
||||
users: "ユーザー"
|
||||
drive: "ドライブ"
|
||||
network: "ネットワーク"
|
||||
charts:
|
||||
federation-instances: "インスタンスの増減"
|
||||
federation-instances-total: "インスタンスの積算"
|
||||
notes: "投稿の増減 (統合)"
|
||||
local-notes: "投稿の増減 (ローカル)"
|
||||
remote-notes: "投稿の増減 (リモート)"
|
||||
notes-total: "投稿の積算"
|
||||
users: "ユーザーの増減"
|
||||
users-total: "ユーザーの積算"
|
||||
drive: "ドライブ使用量の増減"
|
||||
drive-total: "ドライブ使用量の積算"
|
||||
drive-files: "ドライブのファイル数の増減"
|
||||
drive-files-total: "ドライブのファイル数の積算"
|
||||
network-requests: "リクエスト"
|
||||
network-time: "応答時間"
|
||||
network-usage: "通信量"
|
||||
desktop/views/components/choose-file-from-drive-window.vue:
|
||||
choose-file: "Wybierz plik"
|
||||
upload: "Wyślij pliki z Twojego komputera"
|
||||
@@ -439,7 +579,6 @@ desktop/views/components/crop-window.vue:
|
||||
ok: "OK"
|
||||
desktop/views/components/drive-window.vue:
|
||||
used: "wykorzystane"
|
||||
drive: "Dysk"
|
||||
desktop/views/components/drive.file.vue:
|
||||
avatar: "Awatar"
|
||||
banner: "Baner"
|
||||
@@ -469,8 +608,6 @@ desktop/views/components/drive.folder.vue:
|
||||
rename: "Zmień nazwę"
|
||||
rename-folder: "Zmień nazwę katalogu"
|
||||
input-new-folder-name: "Wprowadź nową nazwę"
|
||||
desktop/views/components/drive.nav-folder.vue:
|
||||
drive: "Dysk"
|
||||
desktop/views/components/drive.vue:
|
||||
search: "Szukaj"
|
||||
load-more: "Załaduj więcej"
|
||||
@@ -501,6 +638,7 @@ desktop/views/components/follow-button.vue:
|
||||
following: "Śledzisz"
|
||||
follow: "Śledź"
|
||||
request-pending: "Oczekiwanie na pozwolenie"
|
||||
follow-processing: "フォロー処理中"
|
||||
follow-request: "Poproś o śledzenie"
|
||||
desktop/views/components/followers-window.vue:
|
||||
followers: "Śledzący"
|
||||
@@ -537,16 +675,14 @@ desktop/views/components/note-detail.vue:
|
||||
location: "Informacje o lokalizacji"
|
||||
renote: "Udostępnienie"
|
||||
add-reaction: "Dodaj reakcję"
|
||||
desktop/views/components/notes.note.vue:
|
||||
reposted-by: "Udostępniono przez {}"
|
||||
reply: "Odpowiedz"
|
||||
renote: "Udostępnij"
|
||||
add-reaction: "Dodaj reakcję"
|
||||
detail: "Pokaż szczegóły"
|
||||
private: "ten wpis jest prywatny"
|
||||
deleted: "ten wpis został usunięty"
|
||||
hide: "Zwiń"
|
||||
see-more: "Więcej"
|
||||
desktop/views/components/note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
reply: "返信"
|
||||
renote: "Renote"
|
||||
add-reaction: "リアクション"
|
||||
detail: "詳細"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
desktop/views/components/notes.vue:
|
||||
error: "Ładowanie nie powiodło się."
|
||||
retry: "Spróbuj ponownie"
|
||||
@@ -605,44 +741,56 @@ desktop/views/components/settings.vue:
|
||||
profile: "Profil"
|
||||
notification: "Powiadomienia"
|
||||
apps: "Aplikacje"
|
||||
mute: "Wyciszanie"
|
||||
drive: "Dysk"
|
||||
mute-and-block: "ミュート/ブロック"
|
||||
blocking: "ブロック"
|
||||
security: "Bezpieczeństwo"
|
||||
signin: "Historia logowań"
|
||||
password: "Hasło"
|
||||
2fa: "Uwierzytelnianie dwuetapowe"
|
||||
other: "Inne"
|
||||
license: "Licencja"
|
||||
theme: "テーマ"
|
||||
behaviour: "Zachowanie"
|
||||
fetch-on-scroll: "Automatycznie ładuj po przeciągnięciu w dół"
|
||||
fetch-on-scroll-desc: "Po przewinięciu na dół strony automatycznie zostaną załadowane nowe treści."
|
||||
note-visibility: "投稿の公開範囲"
|
||||
default-note-visibility: "デフォルトの公開範囲"
|
||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||
auto-popout: "Automatycznie pojawiające się okna"
|
||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
||||
advanced: "Ustawienia zaawansowane"
|
||||
api-via-stream: "ストリームを経由したAPIリクエスト"
|
||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||
deck-nav: "デッキ内ナビゲーション"
|
||||
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
|
||||
deck-default: "デッキをデフォルトのUIにする"
|
||||
display: "Wygląd i wyświetlanie"
|
||||
customize: "Dostosuj stronę główną"
|
||||
wallpaper: "壁紙"
|
||||
choose-wallpaper: "Wybierz tło"
|
||||
delete-wallpaper: "Usuń tło"
|
||||
dark-mode: "Tryb ciemny"
|
||||
use-shadow: "UIに影を使用"
|
||||
rounded-corners: "UIの角を丸める"
|
||||
circle-icons: "Używaj okrągłych ikon"
|
||||
gradient-window-header: "Używaj gradientów na pasku tytułu okna"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
post-form-on-timeline: "Wyświetlaj formularz tworzenia wpisu w górnej części osi czasu"
|
||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||
show-clock-on-header: "右上に時計を表示する"
|
||||
show-reply-target: "Pokazuj cel odpowiedzi"
|
||||
timeline: "タイムライン"
|
||||
show-my-renotes: "Pokazuj moje udostępnienia na osi czasu"
|
||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||
show-maps: "Automatycznie pokazuj mapę"
|
||||
show-maps-desc: "Mapa będzie automatycznie rozwijana dla wpisów zawierających informacje o lokalizacji."
|
||||
deck-column-align: "デッキのカラムの位置"
|
||||
deck-column-align-center: "中央"
|
||||
deck-column-align-left: "左"
|
||||
sound: "Dźwięk"
|
||||
enable-sounds: "Włącz dźwięk"
|
||||
enable-sounds-desc: "Odtwarzaj dźwięk przy wstawianiu wpisów, wysyłaniu lub otrzymywaniu wiadomości. Opcja ta jest zapamiętywana przez przeglądarkę."
|
||||
volume: "Głośność"
|
||||
test: "Test"
|
||||
mobile: "Wersja mobilna"
|
||||
disable-via-mobile: "Nie oznaczaj wpisów jako „wysłane z telefonu”"
|
||||
language: "Język"
|
||||
pick-language: "Wybierz język"
|
||||
recommended: "Zalecane"
|
||||
@@ -678,6 +826,10 @@ desktop/views/components/settings.vue:
|
||||
tools: "Narzędzia"
|
||||
task-manager: "Menedżer zadań"
|
||||
third-parties: "Autorzy trzeci"
|
||||
navbar-position: "ナビゲーションバーの位置"
|
||||
navbar-position-top: "上"
|
||||
navbar-position-left: "左"
|
||||
navbar-position-right: "右"
|
||||
desktop/views/components/settings.2fa.vue:
|
||||
intro: "Jeżeli skonfigurujesz uwierzytelnianie dwuetapowe, aby zablokować się będziesz potrzebować (oprócz hasła) kodu ze skonfigurowanego urządzenia (np. smartfonu), co zwiększy bezpieczeństwo."
|
||||
detail: "Zobacz szczegóły…"
|
||||
@@ -696,20 +848,32 @@ desktop/views/components/settings.2fa.vue:
|
||||
success: "Pomyślnie ukończono konfigurację!"
|
||||
failed: "Nie udało się skonfigurować uwierzytelniania dwuetapowego, upewnij się że wprowadziłeś prawidłowy token."
|
||||
info: "Od teraz, wprowadzaj token wyświetlany na urządzeniu przy każdym logowaniu do Misskey."
|
||||
desktop/views/components/settings.api.vue:
|
||||
intro: "Aby uzyskać dostęp do API, ustaw ten token jako klucz 'i' parametrów żądań."
|
||||
caution: "Nie pokazuj tego tokenu osobom trzecim (nie wprowadzaj go nigdzie indziej), aby konto nie trafiło w niepowołane ręce."
|
||||
regeneration-of-token: "W przypadku wycieku tokenu, możesz wygenerować nowy."
|
||||
regenerate-token: "Wygeneruj nowy token"
|
||||
common/views/components/api-settings.vue:
|
||||
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||
regenerate-token: "トークンを再生成"
|
||||
token: "Token:"
|
||||
enter-password: "Wprowadź hasło"
|
||||
enter-password: "パスワードを入力してください"
|
||||
console:
|
||||
title: 'APIコンソール'
|
||||
endpoint: 'エンドポイント'
|
||||
parameter: 'パラメータ'
|
||||
send: '送信'
|
||||
sending: '応答待ち'
|
||||
response: '結果'
|
||||
desktop/views/components/settings.apps.vue:
|
||||
no-apps: "Brak zautoryzowanych aplikacji"
|
||||
desktop/views/components/settings.drive.vue:
|
||||
max: "Maksymalnie"
|
||||
in-use: " w użyciu."
|
||||
desktop/views/components/settings.mute.vue:
|
||||
no-users: "Brak wyciszonych użytkowników"
|
||||
common/views/components/drive-settings.vue:
|
||||
max: "容量"
|
||||
in-use: "使用中"
|
||||
stats: "統計"
|
||||
common/views/components/mute-and-block.vue:
|
||||
mute-and-block: "ミュートとブロック"
|
||||
mute: "ミュート"
|
||||
block: "ブロック"
|
||||
no-muted-users: "ミュートしているユーザーはいません"
|
||||
no-blocked-users: "ブロックしているユーザーはいません"
|
||||
desktop/views/components/settings.password.vue:
|
||||
reset: "Zmień hasło"
|
||||
enter-current-password: "Wprowadź obecne hasło"
|
||||
@@ -717,20 +881,6 @@ desktop/views/components/settings.password.vue:
|
||||
enter-new-password-again: "Wprowadź ponownie nowe hasło"
|
||||
not-match: "Nowe hasła nie pasują do siebie"
|
||||
changed: "Pomyślnie zmieniono hasło"
|
||||
desktop/views/components/settings.profile.vue:
|
||||
avatar: "Awatar"
|
||||
choice-avatar: "Wybierz obraz"
|
||||
name: "Nazwa"
|
||||
location: "Lokalizacja"
|
||||
description: "Opis"
|
||||
birthday: "Data urodzenia"
|
||||
save: "Aktualizuj profil"
|
||||
locked-account: "Zabezpiecz swoje konto"
|
||||
is-locked: "Uczyń wpis prywatnym"
|
||||
other: "Inne"
|
||||
is-bot: "To konto jest prowadzone przez bota"
|
||||
is-cat: "To konto jest prowadzone przez kota"
|
||||
profile-updated: "Zaktualizowano profil"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
private: "ten wpis jest prywatny"
|
||||
deleted: "ten wpis został usunięty"
|
||||
@@ -743,17 +893,23 @@ desktop/views/components/timeline.vue:
|
||||
local: "Lokalne"
|
||||
hybrid: "Społeczność"
|
||||
global: "Globalne"
|
||||
mentions: "あなた宛て"
|
||||
messages: "メッセージ"
|
||||
list: "Listy"
|
||||
hashtag: "ハッシュタグ"
|
||||
add-tag-timeline: "ハッシュタグを追加"
|
||||
add-list: "リストを追加"
|
||||
list-name: "リスト名"
|
||||
desktop/views/components/ui.header.vue:
|
||||
welcome-back: "Witaj ponownie,"
|
||||
adjective: "さん"
|
||||
desktop/views/components/ui.header.account.vue:
|
||||
profile: "Twój profil"
|
||||
drive: "Dysk"
|
||||
favorites: "Ulubione"
|
||||
lists: "Listy"
|
||||
follow-requests: "Prośby o śledzenie"
|
||||
customize: "Dostosuj stronę główną"
|
||||
admin: "管理"
|
||||
settings: "Ustawienia"
|
||||
signout: "Wyloguj się"
|
||||
dark: "Sprowadź ciemność"
|
||||
@@ -792,16 +948,20 @@ desktop/views/components/window.vue:
|
||||
close: "Zamknij"
|
||||
desktop/views/pages/admin/admin.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
drive: "ドライブ"
|
||||
users: "ユーザー"
|
||||
update: "更新"
|
||||
announcements: "お知らせ"
|
||||
hashtags: "ハッシュタグ"
|
||||
desktop/views/pages/admin/admin.dashboard.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
all-users: "全てのユーザー"
|
||||
original-users: "このインスタンスのユーザー"
|
||||
all-notes: "全てのノート"
|
||||
original-notes: "このインスタンスのノート"
|
||||
all-notes: "全ての投稿"
|
||||
original-notes: "このインスタンスの投稿"
|
||||
invite: "招待"
|
||||
banner-url: "Banner URL"
|
||||
disableRegistration: "Disable new user registration"
|
||||
disableLocalTimeline: "Disable the local timeline"
|
||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||
suspend-user: "ユーザーの凍結"
|
||||
suspend: "凍結"
|
||||
@@ -818,26 +978,28 @@ desktop/views/pages/admin/admin.unverify-user.vue:
|
||||
unverify-user: "ユーザーの公式アカウント解除"
|
||||
unverify: "公式アカウントを解除する"
|
||||
unverified: "公式アカウントを解除しました"
|
||||
desktop/views/pages/admin/admin.notes-chart.vue:
|
||||
title: "投稿"
|
||||
local: "ローカル"
|
||||
remote: "リモート"
|
||||
desktop/views/pages/admin/admin.users-chart.vue:
|
||||
title: "ユーザー"
|
||||
local: "ローカル"
|
||||
remote: "リモート"
|
||||
desktop/views/pages/admin/admin.drive-chart.vue:
|
||||
title: "ドライブ"
|
||||
local: "ローカル"
|
||||
remote: "リモート"
|
||||
desktop/views/pages/admin/admin.announcements.vue:
|
||||
announcements: "お知らせ"
|
||||
desktop/views/pages/admin/admin.hashtags.vue:
|
||||
hided-tags: "Hidden Tags"
|
||||
desktop/views/pages/deck/deck.tl-column.vue:
|
||||
is-media-only: "Tylko wpisy z zawartością multimedialną"
|
||||
is-media-view: "Widok multimediów"
|
||||
edit: "Opcje"
|
||||
desktop/views/pages/deck/deck.note.vue:
|
||||
reposted-by: "Udostępniono przez {}"
|
||||
private: "ten wpis jest prywatny"
|
||||
deleted: "ten wpis został usunięty"
|
||||
desktop/views/pages/deck/deck.user-column.vue:
|
||||
posts: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
images: "画像"
|
||||
activity: "アクティビティ"
|
||||
timeline: "タイムライン"
|
||||
pinned-notes: "ピン留めされた投稿"
|
||||
push-to-a-list: "リストに追加"
|
||||
desktop/views/pages/stats/stats.vue:
|
||||
all-users: "全てのユーザー"
|
||||
original-users: "このインスタンスのユーザー"
|
||||
all-notes: "全ての投稿"
|
||||
original-notes: "このインスタンスの投稿"
|
||||
desktop/views/pages/welcome.vue:
|
||||
about: "O Misskey"
|
||||
gotit: "Rozumiem!"
|
||||
@@ -846,7 +1008,10 @@ desktop/views/pages/welcome.vue:
|
||||
signin-button: "Zaloguj się"
|
||||
signup-button: "Zarejestruj się"
|
||||
timeline: "Oś czasu"
|
||||
announcements: "お知らせ"
|
||||
photos: "最近の画像"
|
||||
powered-by-misskey: "Oparto o <b>Misskey</b>."
|
||||
info: "情報"
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Dysk Misskey"
|
||||
desktop/views/pages/favorites.vue:
|
||||
@@ -882,10 +1047,7 @@ desktop/views/pages/user/user.friends.vue:
|
||||
no-users: "Brak użytkowników"
|
||||
desktop/views/pages/user/user.vue:
|
||||
is-suspended: "To konto zostało zawieszone."
|
||||
is-remote: "To jest użytkownik zdalnej instancji, informacje mogą nie być w pełni dokładne."
|
||||
view-remote: "Wyświetl dokładne informacje"
|
||||
desktop/views/pages/user/user.home.vue:
|
||||
last-used-at: "Ostatnio aktywny: "
|
||||
last-used-at: "最終アクセス"
|
||||
desktop/views/pages/user/user.photos.vue:
|
||||
title: "Zdjęcia"
|
||||
loading: "Ładowanie"
|
||||
@@ -898,6 +1060,9 @@ desktop/views/pages/user/user.profile.vue:
|
||||
mute: "Wycisz"
|
||||
muted: "Wyciszyłeś"
|
||||
unmute: "Cofnij wyciszenie"
|
||||
block: "ブロックする"
|
||||
unblock: "ブロック解除"
|
||||
block-confirm: "このユーザーをブロックしますか?"
|
||||
push-to-a-list: "Dodaj do listy"
|
||||
list-pushed: "Dodałeś(-aś) {user} do {list}."
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
@@ -905,6 +1070,10 @@ desktop/views/pages/user/user.header.vue:
|
||||
following: "Śledzeni"
|
||||
followers: "Śledzący"
|
||||
is-bot: "To konto jest botem"
|
||||
years-old: "歳"
|
||||
year: "年"
|
||||
month: "月"
|
||||
day: "日"
|
||||
desktop/views/pages/user/user.timeline.vue:
|
||||
default: "Wpisy"
|
||||
with-replies: "Wpisy i odpowiedzi"
|
||||
@@ -934,7 +1103,6 @@ desktop/views/widgets/users.vue:
|
||||
refresh: "Pokaż innych"
|
||||
no-one: "Pusto"
|
||||
mobile/views/components/drive.vue:
|
||||
drive: "Dysk"
|
||||
used: "użyto"
|
||||
folder-count: "Katalog(i)"
|
||||
count-separator: ", "
|
||||
@@ -964,6 +1132,8 @@ mobile/views/components/drive.file-detail.vue:
|
||||
hash: "Hash (md5)"
|
||||
exif: "EXIF"
|
||||
nsfw: "閲覧注意"
|
||||
mark-as-sensitive: "閲覧注意に設定"
|
||||
unmark-as-sensitive: "閲覧注意を解除"
|
||||
mobile/views/components/media-image.vue:
|
||||
sensitive: "To jest zawartość NSFW"
|
||||
click-to-show: "Naciśnij aby wyświetlić"
|
||||
@@ -974,6 +1144,7 @@ mobile/views/components/follow-button.vue:
|
||||
following: "Śledzisz"
|
||||
follow: "Śledź"
|
||||
request-pending: "Oczekiwanie na pozwolenie"
|
||||
follow-processing: "フォロー処理中"
|
||||
follow-request: "Poproś o śledzenie"
|
||||
mobile/views/components/friends-maker.vue:
|
||||
title: "Zacznij śledzić ludzi takich jak Ty"
|
||||
@@ -983,8 +1154,6 @@ mobile/views/components/friends-maker.vue:
|
||||
close: "Zamknij"
|
||||
mobile/views/components/note.vue:
|
||||
reposted-by: "Udostępniono przez {}"
|
||||
more: "Rozwiń"
|
||||
less: "Zwiń"
|
||||
private: "ten wpis jest prywatny"
|
||||
deleted: "ten wpis został usunięty"
|
||||
location: "Informacje o lokalizacji"
|
||||
@@ -1037,13 +1206,13 @@ mobile/views/components/ui.nav.vue:
|
||||
messaging: "Wiadomości"
|
||||
follow-requests: "Prośby o śledzenie"
|
||||
search: "Szukaj"
|
||||
drive: "Dysk"
|
||||
favorites: "Ulubione"
|
||||
user-lists: "Listy"
|
||||
widgets: "Widżety"
|
||||
game: "Gry"
|
||||
darkmode: "Tryb ciemny"
|
||||
settings: "Ustawienia"
|
||||
admin: "管理"
|
||||
about: "O Misskey"
|
||||
mobile/views/components/user-timeline.vue:
|
||||
no-notes: "Wygląda na to, że ten użytkownik nie opublikował jeszcze niczego"
|
||||
@@ -1059,7 +1228,6 @@ mobile/views/pages/user-lists.vue:
|
||||
title: "Listy"
|
||||
enter-list-name: "Wprowadź nazwę listy"
|
||||
mobile/views/pages/drive.vue:
|
||||
drive: "Dysk"
|
||||
more: "Załaduj więcej"
|
||||
mobile/views/pages/signup.vue:
|
||||
lets-start: "Rozpocznijmy! 📦"
|
||||
@@ -1072,6 +1240,8 @@ mobile/views/pages/home.vue:
|
||||
local: "Lokalne"
|
||||
hybrid: "Społeczność"
|
||||
global: "Globalne"
|
||||
mentions: "あなた宛て"
|
||||
messages: "メッセージ"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "Nie znaleziono wpisów zawierających „{}”."
|
||||
mobile/views/pages/welcome.vue:
|
||||
@@ -1102,20 +1272,6 @@ mobile/views/pages/notifications.vue:
|
||||
read-all: "Czy na pewno chcesz oznaczyć wszystkie powiadomienia jako przeczytane?"
|
||||
mobile/views/pages/games/reversi.vue:
|
||||
reversi: "Reversi"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "Profil"
|
||||
name: "Nazwa"
|
||||
account: "Konto"
|
||||
location: "Lokalizacja"
|
||||
description: "Opis"
|
||||
birthday: "Data urodzenia"
|
||||
avatar: "Awatar"
|
||||
banner: "Baner"
|
||||
is-cat: "To konto jest prowadzone przez kota"
|
||||
save: "Aktualizuj profil"
|
||||
saved: "Pomyślnie zaktualizowano profil"
|
||||
uploading: "Wysyłanie"
|
||||
upload-failed: "Wysyłanie nie powiodło się"
|
||||
mobile/views/pages/search.vue:
|
||||
search: "Szukaj"
|
||||
empty: "Nie znaleziono wpisów zawierających '{}'"
|
||||
@@ -1133,6 +1289,7 @@ mobile/views/pages/settings.vue:
|
||||
dark-mode: "Tryb ciemny"
|
||||
i-am-under-limited-internet: "Ograniczaj zużycie transferu"
|
||||
circle-icons: "Używaj okrągłych ikon"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
timeline: "Oś czasu"
|
||||
show-reply-target: "Pokazuj cel odpowiedzi"
|
||||
show-my-renotes: "Pokazuj moje udostępnienia"
|
||||
@@ -1141,8 +1298,15 @@ mobile/views/pages/settings.vue:
|
||||
post-style: "Styl wpisów"
|
||||
post-style-standard: "Standardowy"
|
||||
post-style-smart: "Inteligentny"
|
||||
notification-position: "通知の表示"
|
||||
notification-position-bottom: "下"
|
||||
notification-position-top: "上"
|
||||
theme: "テーマ"
|
||||
behavior: "Zachowanie"
|
||||
fetch-on-scroll: "Automatycznie ładuj po przeciągnięciu w dół"
|
||||
note-visibility: "投稿の公開範囲"
|
||||
default-note-visibility: "デフォルトの公開範囲"
|
||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||
disable-via-mobile: "Nie oznaczaj wpisów jako „wysłane z telefonu”"
|
||||
load-raw-images: "Wyświetlaj załączone zdjęcia w wysokiej jakości"
|
||||
load-remote-media: "Wyświetlaj zawartość multimedialną ze zdalnych serwerów"
|
||||
@@ -1161,6 +1325,9 @@ mobile/views/pages/settings.vue:
|
||||
update-available-desc: "Odśwież stronę, aby zastosować aktualizację."
|
||||
settings: "Ustawienia"
|
||||
signout: "Wyloguj"
|
||||
sound: "サウンド"
|
||||
enable-sounds: "サウンドを有効にする"
|
||||
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
|
||||
mobile/views/pages/user.vue:
|
||||
follows-you: "Śledzi Cię"
|
||||
following: "Śledzeni"
|
||||
@@ -1170,8 +1337,10 @@ mobile/views/pages/user.vue:
|
||||
timeline: "Oś czasu"
|
||||
media: "Multimedia"
|
||||
is-suspended: "To konto zostało zablokowane"
|
||||
is-remote: "To jest użytkownik zdalnej instancji, informacje mogą nie być w pełni dokładne."
|
||||
view-remote: "Wyświetl dokładne informacje"
|
||||
mute: "ミュート"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロック"
|
||||
unblock: "ブロック解除"
|
||||
mobile/views/pages/user/home.vue:
|
||||
recent-notes: "Ostatnie wpisy"
|
||||
images: "Zdjęcia"
|
||||
@@ -1217,3 +1386,29 @@ docs:
|
||||
description: "Opis"
|
||||
dev/views/index.vue:
|
||||
manage-apps: "Zarządzaj aplikacjami"
|
||||
dev/views/apps.vue:
|
||||
manage-apps: "アプリを管理"
|
||||
create-app: "アプリ作成"
|
||||
app-missing: "アプリなし"
|
||||
dev/views/new-app.vue:
|
||||
create-app: "アプリケーションの作成"
|
||||
app-name: "アプリケーション名"
|
||||
app-name-desc: "あなたのアプリの名称。"
|
||||
app-name-ex: "ex) Misskey for iOS"
|
||||
app-overview: "アプリの概要"
|
||||
app-desc: "あなたのアプリの簡単な説明や紹介。"
|
||||
app-desc-ex: "ex) Misskey iOSクライアント。"
|
||||
callback-url: "コールバックURL (オプション)"
|
||||
callback-url-desc: "ユーザーが認証フォームで認証した際にリダイレクトするURLを設定できます。"
|
||||
authority: "権限"
|
||||
authority-desc: "ここで要求した機能だけがAPIからアクセスできます。"
|
||||
authority-warning: "アプリ作成後も変更できますが、新たな権限を付与する場合、その時点で関連付けられているユーザーキーはすべて無効になります。"
|
||||
account-read: "アカウントの情報を見る。"
|
||||
account-write: "アカウントの情報を操作する。"
|
||||
note-write: "投稿する。"
|
||||
reaction-write: "リアクションしたりリアクションをキャンセルする。"
|
||||
following-write: "フォローしたりフォロー解除する。"
|
||||
drive-read: "ドライブを見る。"
|
||||
drive-write: "ドライブを操作する。"
|
||||
notification-read: "通知を見る。"
|
||||
notification-write: "通知を操作する。"
|
||||
|
||||
@@ -6,12 +6,33 @@ common:
|
||||
misskey: "Uma ⭐ do fediverso"
|
||||
about-title: "Uma ⭐ do fediverso."
|
||||
about: "Obrigado por encontrar Misskey. Uma <b>plataforma descentralizada de microblog</b> nascida na Terra. Já que ela existe no Fediverso (um universo onde várias plataformas de mídia social são organizadas), ela é ligada com outras plataformas.Por que você não tira uma folga do agito e confusão da cidade, e mergulha em uma nova internet?"
|
||||
intro:
|
||||
title: "O que é Misskey?"
|
||||
about: "Misskey é um <b>serviço de microblog descentralizado</b>. Personalização sofisticada da interface, variedade de reações a posts, armazenamento de arquivos grátis com gerenciamento integrado e outras funções avançadas estão disponíveis. Um sistema em rede chamado \"Fediverso\" permite que nos comuniquemos com usuários em outras redes sociais. Se você postar algo, por exemplo, seu post não será mandado apenas para o Misskey, mas também para o Mastodon. Apenas imagine que o planeta está enviando ondas de rádio para outros planetas para se comunicar."
|
||||
features: "Recursos"
|
||||
rich-contents: "Post"
|
||||
rich-contents-desc: "Apenas poste suas ideias, temas do momento e qualquer coisa que você queira compartilhar. Você pode querer decorar suas palavras, anexar suas imagens favoritas, enviar arquivos, inclusive vídeos ou criar uma enquete. Essas são as coisas que você pode fazer em Misskey."
|
||||
reaction: "Reações"
|
||||
reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。"
|
||||
ui: "インターフェース"
|
||||
ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。"
|
||||
drive: "ドライブ"
|
||||
drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんか?もしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんか?Misskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。"
|
||||
outro: "他にもMisskeyにしかない機能はまだまだあるので、ぜひあなた自身の目で確かめてください。Misskeyは分散型SNSなので、このインスタンスが気に入らなければ他のインスタンスを試すこともできます。それでは、GLHF!"
|
||||
adblock:
|
||||
detected: "Por favor, desative o bloqueador de anúncios."
|
||||
warning: "Alguns recursos podem não estar disponíveis ou apresentar mal funcionamento se o bloqueio de anúncios estiver ativado. <strong>Misskey não está usando anúncios</strong>"
|
||||
application-authorization: "Aplicativos autorizados"
|
||||
close: "Fechar"
|
||||
do-not-copy-paste: "Por favor, não digite ou copie o código aqui. A conta pode ser comprometida."
|
||||
BSoD:
|
||||
fatal-error: ":( 致命的な問題が発生しました。"
|
||||
update-browser-os: "お使いのブラウザ(またはOS)のバージョンを更新すると解決する可能性があります。"
|
||||
error-code: "エラーコード"
|
||||
browser-version: "ブラウザ バージョン"
|
||||
client-version: "クライアント バージョン"
|
||||
email-support: "問題が解決しない場合は、上記の情報をお書き添えの上 syuilotan@yahoo.co.jp までご連絡ください。"
|
||||
thanks: "Thank you for using Misskey."
|
||||
got-it: "Entendi!"
|
||||
customization-tips:
|
||||
title: "Dicas de personalização"
|
||||
@@ -41,6 +62,7 @@ common:
|
||||
years_ago: "{} ano(s) atrás"
|
||||
month-and-day: "{day}/{month}"
|
||||
trash: "Lixo"
|
||||
drive: "ドライブ"
|
||||
weekday-short:
|
||||
sunday: "Dom"
|
||||
monday: "Seg"
|
||||
@@ -58,7 +80,7 @@ common:
|
||||
friday: "sexta"
|
||||
saturday: "sábado"
|
||||
reactions:
|
||||
like: "Legal..."
|
||||
like: "Curtir"
|
||||
love: "Amei"
|
||||
laugh: "Riso"
|
||||
hmm: "Hmm...?"
|
||||
@@ -68,6 +90,15 @@ common:
|
||||
confused: "Confuso"
|
||||
rip: "RIP"
|
||||
pudding: "Pudim"
|
||||
note-visibility:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
followers: "フォロワー"
|
||||
followers-desc: "自分のフォロワーにのみ公開"
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
note-placeholders:
|
||||
a: "O que está fazendo?"
|
||||
b: "O que está acontecendo?"
|
||||
@@ -81,11 +112,24 @@ common:
|
||||
ok: "OK"
|
||||
update-available-title: "Atualização disponível"
|
||||
update-available: "Uma nova versão de Misskey está disponível ({newer}). A versão atual é {current}. Recarregue a página para atualizar."
|
||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
||||
my-token-regenerated: "Seu token foi recriado, portanto você foi deslogado."
|
||||
i-like-sushi: "Eu prefiro sushi a pudim"
|
||||
show-reversi-board-labels: "Mostrar etiquetas de colunas e linhas no Reversi"
|
||||
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
||||
verified-user: "Conta verificada"
|
||||
disable-animated-mfm: "Desativar texto animado nas publicações"
|
||||
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
||||
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
||||
show-full-acct: "ユーザー名のホストを省略しない"
|
||||
reduce-motion: "UIの動きを減らす"
|
||||
this-setting-is-this-device-only: "このデバイスのみ"
|
||||
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
||||
is-remote-user: "このユーザー情報はコピーです。"
|
||||
is-remote-post: "この投稿情報はコピーです。"
|
||||
view-on-remote: "正確な情報を見る"
|
||||
error:
|
||||
title: '問題が発生しました'
|
||||
retry: 'やり直す'
|
||||
reversi:
|
||||
drawn: "Empatado"
|
||||
my-turn: "Seu turno"
|
||||
@@ -96,7 +140,7 @@ common:
|
||||
black: "Pretas"
|
||||
white: "Brancas"
|
||||
total: "Total"
|
||||
this-turn: "{}ターン目"
|
||||
this-turn: "Turno de {}"
|
||||
widgets:
|
||||
analog-clock: "Relógio analógico"
|
||||
profile: "Perfil"
|
||||
@@ -105,16 +149,16 @@ common:
|
||||
activity: "Atividade"
|
||||
rss: "Leitor de RSS"
|
||||
memo: "Nota adesiva"
|
||||
trends: "トレンド"
|
||||
trends: "Tendências"
|
||||
photo-stream: "フォトストリーム"
|
||||
posts-monitor: "投稿チャート"
|
||||
posts-monitor: "Gráfico de publicações"
|
||||
slideshow: "スライドショー"
|
||||
version: "Versão"
|
||||
broadcast: "ブロードキャスト"
|
||||
notifications: "Notificações"
|
||||
users: "Usuário sugeridos"
|
||||
polls: "Enquetes"
|
||||
post-form: "投稿フォーム"
|
||||
post-form: "Formulário de publicação"
|
||||
messaging: "Mensagens"
|
||||
server: "Informações do servidor"
|
||||
donation: "Doações"
|
||||
@@ -126,7 +170,10 @@ common:
|
||||
home: "Início"
|
||||
local: "Local"
|
||||
hybrid: "Social"
|
||||
hashtag: "ハッシュタグ"
|
||||
global: "Global"
|
||||
mentions: "あなた宛て"
|
||||
direct: "ダイレクト投稿"
|
||||
notifications: "Notificações"
|
||||
list: "Listas"
|
||||
swap-left: "Mover para a esquerda"
|
||||
@@ -134,10 +181,11 @@ common:
|
||||
swap-up: "Mover para cima"
|
||||
swap-down: "Mover para baixo"
|
||||
remove: "Remover"
|
||||
add-column: "カラムを追加"
|
||||
add-column: "Adicionar coluna"
|
||||
rename: "Renomear"
|
||||
stack-left: "左に重ねる"
|
||||
pop-right: "右に出す"
|
||||
pop-right: "Acoplar à direita"
|
||||
dev: "アプリの作成に失敗しました。再度お試しください。"
|
||||
auth/views/form.vue:
|
||||
share-access: "Você <b>permite</b> que <i>{{ app.name }}</i> acesse sua conta?"
|
||||
permission-ask: "Este aplicativo precisa das seguintes permissões:"
|
||||
@@ -150,18 +198,18 @@ auth/views/form.vue:
|
||||
drive-write: "ドライブを操作する。"
|
||||
notification-read: "通知を見る。"
|
||||
notification-write: "通知を操作する。"
|
||||
cancel: "キャンセル"
|
||||
accept: "アクセスを許可"
|
||||
cancel: "Cancelar"
|
||||
accept: "Permitir acesso"
|
||||
auth/views/index.vue:
|
||||
loading: "読み込み中"
|
||||
loading: "Carregando"
|
||||
denied: "アプリケーションの連携をキャンセルしました。"
|
||||
denied-paragraph: "このアプリがあなたのアカウントにアクセスすることはありません。"
|
||||
already-authorized: "このアプリは既に連携済みです"
|
||||
allowed: "アプリケーションの連携を許可しました"
|
||||
callback-url: "アプリケーションに戻っています"
|
||||
please-go-back: "アプリケーションに戻って、やっていってください。"
|
||||
error: "セッションが存在しません。"
|
||||
sign-in: "サインインしてください"
|
||||
already-authorized: "Este aplicativo já foi autorizado"
|
||||
allowed: "Aplicativos com acesso autorizado"
|
||||
callback-url: "Voltando ao aplicativo"
|
||||
please-go-back: "Por favor, volte ao aplicativo."
|
||||
error: "A sessão não existe."
|
||||
sign-in: "Por favor, entre."
|
||||
common/views/components/games/reversi/reversi.vue:
|
||||
matching:
|
||||
waiting-for: "{}を待っています"
|
||||
@@ -175,17 +223,17 @@ common/views/components/games/reversi/reversi.game.vue:
|
||||
common/views/components/games/reversi/reversi.index.vue:
|
||||
title: "Misskey Reversi"
|
||||
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
|
||||
invite: "招待"
|
||||
rule: "遊び方"
|
||||
invite: "Convidar"
|
||||
rule: "Como jogar"
|
||||
rule-desc: "リバーシは、相手と交互に石をボードに置いて、相手の石を挟んで自分の色に変えてゆき、最終的に残った石が多い方が勝ちというボードゲームです。"
|
||||
mode-invite: "招待"
|
||||
mode-invite-desc: "指定したユーザーと対戦するモードです。"
|
||||
invitations: "対局の招待があります!"
|
||||
my-games: "自分の対局"
|
||||
all-games: "みんなの対局"
|
||||
enter-username: "ユーザー名を入力してください"
|
||||
mode-invite: "Convidar"
|
||||
mode-invite-desc: "Convidar um usuário para jogar"
|
||||
invitations: "Você foi convidado!"
|
||||
my-games: "Meu jogo"
|
||||
all-games: "Todos os jogos"
|
||||
enter-username: "Digite o nome de usuário."
|
||||
game-state:
|
||||
ended: "終了"
|
||||
ended: "Terminado"
|
||||
playing: "進行中"
|
||||
common/views/components/games/reversi/reversi.room.vue:
|
||||
settings-of-the-game: "ゲームの設定"
|
||||
@@ -227,11 +275,52 @@ common/views/components/connect-failed.troubleshooter.vue:
|
||||
no-server-desc: "お使いのPCのインターネット接続は正常ですが、Misskeyのサーバーには接続できませんでした。サーバーがダウンまたはメンテナンスしている可能性があるので、しばらくしてから再度御アクセスください。"
|
||||
success: "Misskeyのサーバーに接続できました"
|
||||
success-desc: "正常に接続できるようです。ページを再度読み込みしてください。"
|
||||
flush: "キャッシュの削除"
|
||||
flush: "Limpar o cache"
|
||||
set-version: "バージョン指定"
|
||||
common/views/components/media-banner.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
common/views/components/theme.vue:
|
||||
light-theme: "非ダークモード時に使用するテーマ"
|
||||
dark-theme: "ダークモード時に使用するテーマ"
|
||||
light-themes: "明るいテーマ"
|
||||
dark-themes: "暗いテーマ"
|
||||
install-a-theme: "テーマのインストール"
|
||||
theme-code: "テーマコード"
|
||||
install: "インストール"
|
||||
installed: "「{}」をインストールしました"
|
||||
create-a-theme: "テーマの作成"
|
||||
save-created-theme: "テーマを保存"
|
||||
primary-color: "プライマリ カラー"
|
||||
secondary-color: "セカンダリ カラー"
|
||||
text-color: "文字色"
|
||||
base-theme: "ベーステーマ"
|
||||
base-theme-light: "Light"
|
||||
base-theme-dark: "Dark"
|
||||
theme-name: "テーマ名"
|
||||
preview-created-theme: "プレビュー"
|
||||
invalid-theme: "テーマが正しくありません。"
|
||||
already-installed: "既にそのテーマはインストールされています。"
|
||||
saved: "保存しました"
|
||||
manage-themes: "テーマの管理"
|
||||
builtin-themes: "標準テーマ"
|
||||
my-themes: "マイテーマ"
|
||||
installed-themes: "インストールされたテーマ"
|
||||
select-theme: "テーマを選択してください"
|
||||
uninstall: "アンインストール"
|
||||
uninstalled: "「{}」をアンインストールしました"
|
||||
author: "作者"
|
||||
desc: "説明"
|
||||
export: "エクスポート"
|
||||
import: "インポート"
|
||||
import-by-code: "またはコードをペースト"
|
||||
theme-name-required: "テーマ名は必須です。"
|
||||
common/views/components/cw-button.vue:
|
||||
hide: "隠す"
|
||||
show: "もっと見る"
|
||||
common/views/components/messaging.vue:
|
||||
search-user: "ユーザーを探す"
|
||||
you: "あなた"
|
||||
you: "Você"
|
||||
no-history: "履歴はありません"
|
||||
common/views/components/messaging-room.vue:
|
||||
empty: "このユーザーと話したことはありません"
|
||||
@@ -259,8 +348,12 @@ common/views/components/nav.vue:
|
||||
develop: "開発者"
|
||||
feedback: "フィードバック"
|
||||
common/views/components/note-menu.vue:
|
||||
detail: "詳細"
|
||||
copy-link: "リンクをコピー"
|
||||
favorite: "お気に入り"
|
||||
unfavorite: "お気に入り解除"
|
||||
pin: "ピン留め"
|
||||
unpin: "ピン留め解除"
|
||||
delete: "削除"
|
||||
delete-confirm: "この投稿を削除しますか?"
|
||||
remote: "投稿元で見る"
|
||||
@@ -336,6 +429,28 @@ common/views/components/visibility-chooser.vue:
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
common/views/components/trends.vue:
|
||||
count: "{}人が投稿"
|
||||
empty: "トレンドなし"
|
||||
common/views/components/profile-editor.vue:
|
||||
title: "プロフィール"
|
||||
name: "名前"
|
||||
account: "アカウント"
|
||||
location: "場所"
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
is-cat: "このアカウントはCatです"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-locked: "フォローを承認制にする"
|
||||
careful-bot: "Botからのフォローだけ承認制にする"
|
||||
advanced: "その他"
|
||||
privacy: "プライバシー"
|
||||
save: "保存"
|
||||
saved: "プロフィールを保存しました"
|
||||
uploading: "アップロード中"
|
||||
upload-failed: "アップロードに失敗しました"
|
||||
common/views/widgets/broadcast.vue:
|
||||
fetching: "確認中"
|
||||
no-broadcasts: "お知らせはありません"
|
||||
@@ -359,8 +474,6 @@ common/views/widgets/posts-monitor.vue:
|
||||
toggle: "表示を切り替え"
|
||||
common/views/widgets/hashtags.vue:
|
||||
title: "ハッシュタグ"
|
||||
count: "{}人が投稿"
|
||||
empty: "トレンドなし"
|
||||
common/views/widgets/server.vue:
|
||||
title: "サーバー情報"
|
||||
toggle: "表示を切り替え"
|
||||
@@ -398,6 +511,7 @@ common/views/pages/follow.vue:
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-processing: "フォロー処理中"
|
||||
follow-request: "フォロー申請"
|
||||
desktop:
|
||||
banner-crop-title: "バナーとして表示する部分を選択"
|
||||
@@ -410,6 +524,7 @@ desktop:
|
||||
uploading-avatar: "新しいアバターをアップロードしています"
|
||||
avatar-updated: "アバターを更新しました"
|
||||
choose-avatar: "アバターにする画像を選択"
|
||||
invalid-filetype: "この形式のファイルはサポートされていません"
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Black ... Total"
|
||||
notes: "Blue ... Notes"
|
||||
@@ -423,6 +538,31 @@ desktop/views/components/calendar.vue:
|
||||
prev: "前の月"
|
||||
next: "次の月"
|
||||
go: "クリックして時間遡行"
|
||||
desktop/views/components/charts.vue:
|
||||
title: "チャート"
|
||||
per-day: "1日ごと"
|
||||
per-hour: "1時間ごと"
|
||||
federation: "フェデレーション"
|
||||
notes: "投稿"
|
||||
users: "ユーザー"
|
||||
drive: "ドライブ"
|
||||
network: "ネットワーク"
|
||||
charts:
|
||||
federation-instances: "インスタンスの増減"
|
||||
federation-instances-total: "インスタンスの積算"
|
||||
notes: "投稿の増減 (統合)"
|
||||
local-notes: "投稿の増減 (ローカル)"
|
||||
remote-notes: "投稿の増減 (リモート)"
|
||||
notes-total: "投稿の積算"
|
||||
users: "ユーザーの増減"
|
||||
users-total: "ユーザーの積算"
|
||||
drive: "ドライブ使用量の増減"
|
||||
drive-total: "ドライブ使用量の積算"
|
||||
drive-files: "ドライブのファイル数の増減"
|
||||
drive-files-total: "ドライブのファイル数の積算"
|
||||
network-requests: "リクエスト"
|
||||
network-time: "応答時間"
|
||||
network-usage: "通信量"
|
||||
desktop/views/components/choose-file-from-drive-window.vue:
|
||||
choose-file: "ファイル選択中"
|
||||
upload: "PCからドライブにファイルをアップロード"
|
||||
@@ -439,7 +579,6 @@ desktop/views/components/crop-window.vue:
|
||||
ok: "決定"
|
||||
desktop/views/components/drive-window.vue:
|
||||
used: "使用中"
|
||||
drive: "ドライブ"
|
||||
desktop/views/components/drive.file.vue:
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
@@ -469,8 +608,6 @@ desktop/views/components/drive.folder.vue:
|
||||
rename: "名前を変更"
|
||||
rename-folder: "フォルダ名の変更"
|
||||
input-new-folder-name: "新しいフォルダ名を入力してください"
|
||||
desktop/views/components/drive.nav-folder.vue:
|
||||
drive: "ドライブ"
|
||||
desktop/views/components/drive.vue:
|
||||
search: "検索"
|
||||
load-more: "もっと読み込む"
|
||||
@@ -501,6 +638,7 @@ desktop/views/components/follow-button.vue:
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-processing: "フォロー処理中"
|
||||
follow-request: "フォロー申請"
|
||||
desktop/views/components/followers-window.vue:
|
||||
followers: "{} のフォロワー"
|
||||
@@ -537,7 +675,7 @@ desktop/views/components/note-detail.vue:
|
||||
location: "位置情報"
|
||||
renote: "Renote"
|
||||
add-reaction: "リアクション"
|
||||
desktop/views/components/notes.note.vue:
|
||||
desktop/views/components/note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
reply: "返信"
|
||||
renote: "Renote"
|
||||
@@ -545,8 +683,6 @@ desktop/views/components/notes.note.vue:
|
||||
detail: "詳細"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
hide: "隠す"
|
||||
see-more: "もっと見る"
|
||||
desktop/views/components/notes.vue:
|
||||
error: "読み込みに失敗しました。"
|
||||
retry: "リトライ"
|
||||
@@ -605,44 +741,56 @@ desktop/views/components/settings.vue:
|
||||
profile: "プロフィール"
|
||||
notification: "通知"
|
||||
apps: "アプリ"
|
||||
mute: "ミュート"
|
||||
drive: "ドライブ"
|
||||
mute-and-block: "ミュート/ブロック"
|
||||
blocking: "ブロック"
|
||||
security: "セキュリティ"
|
||||
signin: "サインイン履歴"
|
||||
password: "パスワード"
|
||||
2fa: "二段階認証"
|
||||
other: "その他"
|
||||
license: "ライセンス"
|
||||
theme: "テーマ"
|
||||
behaviour: "動作"
|
||||
fetch-on-scroll: "スクロールで自動読み込み"
|
||||
fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。"
|
||||
note-visibility: "投稿の公開範囲"
|
||||
default-note-visibility: "デフォルトの公開範囲"
|
||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||
auto-popout: "ウィンドウの自動ポップアウト"
|
||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
||||
advanced: "詳細設定"
|
||||
api-via-stream: "ストリームを経由したAPIリクエスト"
|
||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||
deck-nav: "デッキ内ナビゲーション"
|
||||
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
|
||||
deck-default: "デッキをデフォルトのUIにする"
|
||||
display: "デザインと表示"
|
||||
customize: "ホームをカスタマイズ"
|
||||
wallpaper: "壁紙"
|
||||
choose-wallpaper: "壁紙を選択"
|
||||
delete-wallpaper: "壁紙を削除"
|
||||
dark-mode: "ダークモード"
|
||||
use-shadow: "UIに影を使用"
|
||||
rounded-corners: "UIの角を丸める"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||
show-clock-on-header: "右上に時計を表示する"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
timeline: "タイムライン"
|
||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||
show-maps: "マップの自動展開"
|
||||
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
||||
deck-column-align: "デッキのカラムの位置"
|
||||
deck-column-align-center: "中央"
|
||||
deck-column-align-left: "左"
|
||||
sound: "サウンド"
|
||||
enable-sounds: "サウンドを有効にする"
|
||||
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
|
||||
volume: "ボリューム"
|
||||
test: "テスト"
|
||||
mobile: "モバイル"
|
||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||
language: "言語"
|
||||
pick-language: "言語を選択"
|
||||
recommended: "推奨"
|
||||
@@ -678,6 +826,10 @@ desktop/views/components/settings.vue:
|
||||
tools: "ツール"
|
||||
task-manager: "タスクマネージャ"
|
||||
third-parties: "サードパーティ"
|
||||
navbar-position: "ナビゲーションバーの位置"
|
||||
navbar-position-top: "上"
|
||||
navbar-position-left: "左"
|
||||
navbar-position-right: "右"
|
||||
desktop/views/components/settings.2fa.vue:
|
||||
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
||||
detail: "詳細..."
|
||||
@@ -696,20 +848,32 @@ desktop/views/components/settings.2fa.vue:
|
||||
success: "設定が完了しました!"
|
||||
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
||||
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
||||
desktop/views/components/settings.api.vue:
|
||||
common/views/components/api-settings.vue:
|
||||
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||
regenerate-token: "トークンを再生成"
|
||||
token: "Token:"
|
||||
enter-password: "パスワードを入力してください"
|
||||
console:
|
||||
title: 'APIコンソール'
|
||||
endpoint: 'エンドポイント'
|
||||
parameter: 'パラメータ'
|
||||
send: '送信'
|
||||
sending: '応答待ち'
|
||||
response: '結果'
|
||||
desktop/views/components/settings.apps.vue:
|
||||
no-apps: "連携しているアプリケーションはありません"
|
||||
desktop/views/components/settings.drive.vue:
|
||||
max: "中"
|
||||
common/views/components/drive-settings.vue:
|
||||
max: "容量"
|
||||
in-use: "使用中"
|
||||
desktop/views/components/settings.mute.vue:
|
||||
no-users: "ミュートしているユーザーはいません"
|
||||
stats: "統計"
|
||||
common/views/components/mute-and-block.vue:
|
||||
mute-and-block: "ミュートとブロック"
|
||||
mute: "ミュート"
|
||||
block: "ブロック"
|
||||
no-muted-users: "ミュートしているユーザーはいません"
|
||||
no-blocked-users: "ブロックしているユーザーはいません"
|
||||
desktop/views/components/settings.password.vue:
|
||||
reset: "パスワードを変更する"
|
||||
enter-current-password: "現在のパスワードを入力してください"
|
||||
@@ -717,20 +881,6 @@ desktop/views/components/settings.password.vue:
|
||||
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
||||
not-match: "新しいパスワードが一致しません"
|
||||
changed: "パスワードを変更しました"
|
||||
desktop/views/components/settings.profile.vue:
|
||||
avatar: "アイコン"
|
||||
choice-avatar: "画像を選択"
|
||||
name: "名前"
|
||||
location: "場所"
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
save: "保存"
|
||||
locked-account: "アカウントの保護"
|
||||
is-locked: "投稿を非公開にする"
|
||||
other: "その他"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
profile-updated: "プロフィールを更新しました"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
@@ -743,17 +893,23 @@ desktop/views/components/timeline.vue:
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
mentions: "あなた宛て"
|
||||
messages: "メッセージ"
|
||||
list: "リスト"
|
||||
hashtag: "ハッシュタグ"
|
||||
add-tag-timeline: "ハッシュタグを追加"
|
||||
add-list: "リストを追加"
|
||||
list-name: "リスト名"
|
||||
desktop/views/components/ui.header.vue:
|
||||
welcome-back: "おかえりなさい、"
|
||||
adjective: "さん"
|
||||
desktop/views/components/ui.header.account.vue:
|
||||
profile: "プロフィール"
|
||||
drive: "ドライブ"
|
||||
favorites: "お気に入り"
|
||||
lists: "リスト"
|
||||
follow-requests: "フォロー申請"
|
||||
customize: "ホームのカスタマイズ"
|
||||
admin: "管理"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
dark: "闇に飲まれる"
|
||||
@@ -792,16 +948,20 @@ desktop/views/components/window.vue:
|
||||
close: "閉じる"
|
||||
desktop/views/pages/admin/admin.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
drive: "ドライブ"
|
||||
users: "Usuários"
|
||||
update: "Actualizações"
|
||||
announcements: "お知らせ"
|
||||
hashtags: "ハッシュタグ"
|
||||
desktop/views/pages/admin/admin.dashboard.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
all-users: "Todos os usuários"
|
||||
original-users: "このインスタンスのユーザー"
|
||||
all-notes: "Todas as notas"
|
||||
original-notes: "このインスタンスのノート"
|
||||
all-notes: "全ての投稿"
|
||||
original-notes: "このインスタンスの投稿"
|
||||
invite: "招待"
|
||||
banner-url: "Banner URL"
|
||||
disableRegistration: "Disable new user registration"
|
||||
disableLocalTimeline: "Disable the local timeline"
|
||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||
suspend-user: "ユーザーの凍結"
|
||||
suspend: "凍結"
|
||||
@@ -818,26 +978,28 @@ desktop/views/pages/admin/admin.unverify-user.vue:
|
||||
unverify-user: "ユーザーの公式アカウント解除"
|
||||
unverify: "公式アカウントを解除する"
|
||||
unverified: "公式アカウントを解除しました"
|
||||
desktop/views/pages/admin/admin.notes-chart.vue:
|
||||
title: "投稿"
|
||||
local: "ローカル"
|
||||
remote: "リモート"
|
||||
desktop/views/pages/admin/admin.users-chart.vue:
|
||||
title: "ユーザー"
|
||||
local: "ローカル"
|
||||
remote: "リモート"
|
||||
desktop/views/pages/admin/admin.drive-chart.vue:
|
||||
title: "ドライブ"
|
||||
local: "ローカル"
|
||||
remote: "リモート"
|
||||
desktop/views/pages/admin/admin.announcements.vue:
|
||||
announcements: "お知らせ"
|
||||
desktop/views/pages/admin/admin.hashtags.vue:
|
||||
hided-tags: "Hidden Tags"
|
||||
desktop/views/pages/deck/deck.tl-column.vue:
|
||||
is-media-only: "メディア投稿のみ"
|
||||
is-media-view: "メディアビュー"
|
||||
edit: "オプション"
|
||||
desktop/views/pages/deck/deck.note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
desktop/views/pages/deck/deck.user-column.vue:
|
||||
posts: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
images: "画像"
|
||||
activity: "アクティビティ"
|
||||
timeline: "タイムライン"
|
||||
pinned-notes: "ピン留めされた投稿"
|
||||
push-to-a-list: "リストに追加"
|
||||
desktop/views/pages/stats/stats.vue:
|
||||
all-users: "全てのユーザー"
|
||||
original-users: "このインスタンスのユーザー"
|
||||
all-notes: "全ての投稿"
|
||||
original-notes: "このインスタンスの投稿"
|
||||
desktop/views/pages/welcome.vue:
|
||||
about: "詳しく..."
|
||||
gotit: "わかった"
|
||||
@@ -846,7 +1008,10 @@ desktop/views/pages/welcome.vue:
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "Timeline"
|
||||
announcements: "お知らせ"
|
||||
photos: "最近の画像"
|
||||
powered-by-misskey: "Desenvolvido por <b>Misskey</b>."
|
||||
info: "情報"
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Drive Misskey"
|
||||
desktop/views/pages/favorites.vue:
|
||||
@@ -882,9 +1047,6 @@ desktop/views/pages/user/user.friends.vue:
|
||||
no-users: "よく話すユーザーはいません"
|
||||
desktop/views/pages/user/user.vue:
|
||||
is-suspended: "このユーザーは凍結されています。"
|
||||
is-remote: "このユーザーはリモートユーザーです。"
|
||||
view-remote: "正確な情報を見る"
|
||||
desktop/views/pages/user/user.home.vue:
|
||||
last-used-at: "最終アクセス"
|
||||
desktop/views/pages/user/user.photos.vue:
|
||||
title: "フォト"
|
||||
@@ -898,6 +1060,9 @@ desktop/views/pages/user/user.profile.vue:
|
||||
mute: "ミュートする"
|
||||
muted: "ミュートしています"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロックする"
|
||||
unblock: "ブロック解除"
|
||||
block-confirm: "このユーザーをブロックしますか?"
|
||||
push-to-a-list: "リストに追加"
|
||||
list-pushed: "{user}を{list}に追加しました。"
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
@@ -905,6 +1070,10 @@ desktop/views/pages/user/user.header.vue:
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
is-bot: "このアカウントはBotです"
|
||||
years-old: "歳"
|
||||
year: "年"
|
||||
month: "月"
|
||||
day: "日"
|
||||
desktop/views/pages/user/user.timeline.vue:
|
||||
default: "投稿"
|
||||
with-replies: "投稿と返信"
|
||||
@@ -934,7 +1103,6 @@ desktop/views/widgets/users.vue:
|
||||
refresh: "他を見る"
|
||||
no-one: "いません!"
|
||||
mobile/views/components/drive.vue:
|
||||
drive: "ドライブ"
|
||||
used: "使用中"
|
||||
folder-count: "フォルダ"
|
||||
count-separator: "、"
|
||||
@@ -964,6 +1132,8 @@ mobile/views/components/drive.file-detail.vue:
|
||||
hash: "ハッシュ (md5)"
|
||||
exif: "EXIF"
|
||||
nsfw: "閲覧注意"
|
||||
mark-as-sensitive: "閲覧注意に設定"
|
||||
unmark-as-sensitive: "閲覧注意を解除"
|
||||
mobile/views/components/media-image.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
@@ -974,6 +1144,7 @@ mobile/views/components/follow-button.vue:
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-processing: "フォロー処理中"
|
||||
follow-request: "フォロー申請"
|
||||
mobile/views/components/friends-maker.vue:
|
||||
title: "気になるユーザーをフォロー"
|
||||
@@ -983,8 +1154,6 @@ mobile/views/components/friends-maker.vue:
|
||||
close: "閉じる"
|
||||
mobile/views/components/note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
more: "もっと見る"
|
||||
less: "隠す"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
location: "位置情報"
|
||||
@@ -1037,13 +1206,13 @@ mobile/views/components/ui.nav.vue:
|
||||
messaging: "メッセージ"
|
||||
follow-requests: "フォロー申請"
|
||||
search: "検索"
|
||||
drive: "ドライブ"
|
||||
favorites: "お気に入り"
|
||||
user-lists: "リスト"
|
||||
widgets: "ウィジェット"
|
||||
game: "ゲーム"
|
||||
darkmode: "ダークモード"
|
||||
settings: "設定"
|
||||
admin: "管理"
|
||||
about: "Misskeyについて"
|
||||
mobile/views/components/user-timeline.vue:
|
||||
no-notes: "このユーザーは投稿していないようです。"
|
||||
@@ -1059,7 +1228,6 @@ mobile/views/pages/user-lists.vue:
|
||||
title: "リスト"
|
||||
enter-list-name: "リスト名を入力してください"
|
||||
mobile/views/pages/drive.vue:
|
||||
drive: "ドライブ"
|
||||
more: "もっと見る"
|
||||
mobile/views/pages/signup.vue:
|
||||
lets-start: "📦 始めましょう"
|
||||
@@ -1072,6 +1240,8 @@ mobile/views/pages/home.vue:
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
mentions: "あなた宛て"
|
||||
messages: "メッセージ"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
mobile/views/pages/welcome.vue:
|
||||
@@ -1102,22 +1272,8 @@ mobile/views/pages/notifications.vue:
|
||||
read-all: "すべての通知を既読にしますか?"
|
||||
mobile/views/pages/games/reversi.vue:
|
||||
reversi: "リバーシ"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
name: "名前"
|
||||
account: "アカウント"
|
||||
location: "場所"
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
is-cat: "このアカウントはCatです"
|
||||
save: "保存"
|
||||
saved: "プロフィールを保存しました"
|
||||
uploading: "アップロード中"
|
||||
upload-failed: "アップロードに失敗しました"
|
||||
mobile/views/pages/search.vue:
|
||||
search: "検索"
|
||||
search: "Pesquisar"
|
||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||
mobile/views/pages/selectdrive.vue:
|
||||
@@ -1133,6 +1289,7 @@ mobile/views/pages/settings.vue:
|
||||
dark-mode: "ダークモード"
|
||||
i-am-under-limited-internet: "私は通信を制限されている"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
timeline: "タイムライン"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||
@@ -1141,51 +1298,63 @@ mobile/views/pages/settings.vue:
|
||||
post-style: "投稿の表示スタイル"
|
||||
post-style-standard: "標準"
|
||||
post-style-smart: "スマート"
|
||||
notification-position: "通知の表示"
|
||||
notification-position-bottom: "下"
|
||||
notification-position-top: "上"
|
||||
theme: "テーマ"
|
||||
behavior: "動作"
|
||||
fetch-on-scroll: "スクロールで自動読み込み"
|
||||
note-visibility: "投稿の公開範囲"
|
||||
default-note-visibility: "デフォルトの公開範囲"
|
||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||
load-raw-images: "添付された画像を高画質で表示する"
|
||||
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||
twitter: "Twitter連携"
|
||||
twitter-connect: "Twitterアカウントに接続する"
|
||||
twitter-reconnect: "再接続する"
|
||||
twitter-disconnect: "切断する"
|
||||
update: "Misskey Update"
|
||||
version: "バージョン:"
|
||||
latest-version: "最新のバージョン:"
|
||||
update-checking: "アップデートを確認中"
|
||||
check-for-updates: "アップデートを確認"
|
||||
no-updates: "利用可能な更新はありません"
|
||||
no-updates-desc: "お使いのMisskeyは最新です。"
|
||||
update-available: "新しいバージョンが利用可能です"
|
||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
twitter-connect: "Conectar à sua conta no Twitter"
|
||||
twitter-reconnect: "Reconectar"
|
||||
twitter-disconnect: "Desconectar"
|
||||
update: "Atualizar Misskey"
|
||||
version: "Versão atual;"
|
||||
latest-version: "Última versão:"
|
||||
update-checking: "Verificando atualizações"
|
||||
check-for-updates: "Verificar atualizações"
|
||||
no-updates: "Sem atualizações"
|
||||
no-updates-desc: "Seu Misskey está atualizado"
|
||||
update-available: "Uma nova versão está disponível"
|
||||
update-available-desc: "Atualizações vão ser aplicadas depois de recarregar a página"
|
||||
settings: "Configurações"
|
||||
signout: "Sair"
|
||||
sound: "Sons"
|
||||
enable-sounds: "Ativar sons"
|
||||
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
|
||||
mobile/views/pages/user.vue:
|
||||
follows-you: "フォローされています"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
notes: "投稿"
|
||||
follows-you: "Te segue"
|
||||
following: "Seguindo"
|
||||
followers: "Seguidores"
|
||||
notes: "Posts"
|
||||
overview: "概要"
|
||||
timeline: "タイムライン"
|
||||
media: "メディア"
|
||||
is-suspended: "このユーザーは凍結されています。"
|
||||
is-remote: "Este é uma usuário remoto. O perfil que vê aqui pode não estar completo."
|
||||
view-remote: "Ver o perfil completo."
|
||||
timeline: "Linha do tempo"
|
||||
media: "Mídia"
|
||||
is-suspended: "Esta conta foi suspensa"
|
||||
mute: "ミュート"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロック"
|
||||
unblock: "ブロック解除"
|
||||
mobile/views/pages/user/home.vue:
|
||||
recent-notes: "Notas recentes"
|
||||
images: "Imagens"
|
||||
activity: "Atividade"
|
||||
keywords: "キーワード"
|
||||
domains: "頻出ドメイン"
|
||||
frequently-replied-users: "よく会話するユーザー"
|
||||
keywords: "Palavras chave"
|
||||
domains: "Domínios"
|
||||
frequently-replied-users: "Perguntas frequentes"
|
||||
followers-you-know: "Seguidores que você conhece"
|
||||
last-used-at: "Ativo pela última vez:"
|
||||
last-used-at: "Ativo pela última vez"
|
||||
mobile/views/pages/user/home.followers-you-know.vue:
|
||||
loading: "Carregando"
|
||||
no-users: "知り合いのユーザーはいません"
|
||||
mobile/views/pages/user/home.friends.vue:
|
||||
loading: "読み込み中"
|
||||
loading: "Carregando"
|
||||
no-users: "よく会話するユーザーはいません"
|
||||
mobile/views/pages/user/home.notes.vue:
|
||||
loading: "Carregando"
|
||||
@@ -1195,14 +1364,14 @@ mobile/views/pages/user/home.photos.vue:
|
||||
no-photos: "Sem fotos"
|
||||
docs:
|
||||
edit-this-page-on-github: "間違いや改善点を見つけましたか?"
|
||||
edit-this-page-on-github-link: "このページをGitHubで編集"
|
||||
edit-this-page-on-github-link: "Edite esta página no GitHub!"
|
||||
api:
|
||||
entities:
|
||||
properties: "プロパティ"
|
||||
properties: "Propriedades"
|
||||
endpoints:
|
||||
params: "パラメータ"
|
||||
no-params: "パラメータはありません"
|
||||
res: "レスポンス"
|
||||
params: "Parâmetros"
|
||||
no-params: "Sem parâmetros"
|
||||
res: "Resposta"
|
||||
require-credential: "このエンドポイントは認証情報が必須です。"
|
||||
require-permission: "このエンドポイントは{permission}の権限を必要とします。"
|
||||
has-limit: "レートリミットがあります。"
|
||||
@@ -1217,3 +1386,29 @@ docs:
|
||||
description: "Descrição"
|
||||
dev/views/index.vue:
|
||||
manage-apps: "Gerenciar aplicativos"
|
||||
dev/views/apps.vue:
|
||||
manage-apps: "アプリを管理"
|
||||
create-app: "アプリ作成"
|
||||
app-missing: "アプリなし"
|
||||
dev/views/new-app.vue:
|
||||
create-app: "アプリケーションの作成"
|
||||
app-name: "アプリケーション名"
|
||||
app-name-desc: "あなたのアプリの名称。"
|
||||
app-name-ex: "ex) Misskey for iOS"
|
||||
app-overview: "アプリの概要"
|
||||
app-desc: "あなたのアプリの簡単な説明や紹介。"
|
||||
app-desc-ex: "ex) Misskey iOSクライアント。"
|
||||
callback-url: "コールバックURL (オプション)"
|
||||
callback-url-desc: "ユーザーが認証フォームで認証した際にリダイレクトするURLを設定できます。"
|
||||
authority: "権限"
|
||||
authority-desc: "ここで要求した機能だけがAPIからアクセスできます。"
|
||||
authority-warning: "アプリ作成後も変更できますが、新たな権限を付与する場合、その時点で関連付けられているユーザーキーはすべて無効になります。"
|
||||
account-read: "アカウントの情報を見る。"
|
||||
account-write: "アカウントの情報を操作する。"
|
||||
note-write: "投稿する。"
|
||||
reaction-write: "リアクションしたりリアクションをキャンセルする。"
|
||||
following-write: "フォローしたりフォロー解除する。"
|
||||
drive-read: "ドライブを見る。"
|
||||
drive-write: "ドライブを操作する。"
|
||||
notification-read: "通知を見る。"
|
||||
notification-write: "通知を操作する。"
|
||||
|
||||
@@ -3,15 +3,36 @@ meta:
|
||||
lang: "Русский язык"
|
||||
divider: ""
|
||||
common:
|
||||
misskey: "A ⭐ of fediverse"
|
||||
about-title: "A ⭐ of fediverse."
|
||||
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
||||
misskey: "Мы — ⭐ fediverse"
|
||||
about-title: "Мы — ⭐ fediverse"
|
||||
about: "Спасибо, что нашли Misskey. Misskey — это <b>децентрализованная платформа для микроблоггинга</b> родом с планеты Земля. Поскольку она существует внутри Fediverse (вселенной различных социальных платформ), она связана с другими платформами. Отдохните от шума большого города — и познакомьтесь с новым интернетом."
|
||||
intro:
|
||||
title: "Misskeyって?"
|
||||
about: "Misskeyはオープンソースの<b>分散型マイクロブログSNS</b>です。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。"
|
||||
features: "特徴"
|
||||
rich-contents: "投稿"
|
||||
rich-contents-desc: "自分の考え、話題の出来事、皆と共有したいことについて発信してください。必要であれば、様々な構文を使って投稿を装飾したり、好きな画像、動画などのファイルやアンケートを添付することもできます。"
|
||||
reaction: "リアクション"
|
||||
reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。"
|
||||
ui: "インターフェース"
|
||||
ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。"
|
||||
drive: "ドライブ"
|
||||
drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんか?もしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんか?Misskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。"
|
||||
outro: "他にもMisskeyにしかない機能はまだまだあるので、ぜひあなた自身の目で確かめてください。Misskeyは分散型SNSなので、このインスタンスが気に入らなければ他のインスタンスを試すこともできます。それでは、GLHF!"
|
||||
adblock:
|
||||
detected: "広告ブロッカーを無効にしてください"
|
||||
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
||||
application-authorization: "アプリの連携"
|
||||
close: "閉じる"
|
||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||
BSoD:
|
||||
fatal-error: ":( 致命的な問題が発生しました。"
|
||||
update-browser-os: "お使いのブラウザ(またはOS)のバージョンを更新すると解決する可能性があります。"
|
||||
error-code: "エラーコード"
|
||||
browser-version: "ブラウザ バージョン"
|
||||
client-version: "クライアント バージョン"
|
||||
email-support: "問題が解決しない場合は、上記の情報をお書き添えの上 syuilotan@yahoo.co.jp までご連絡ください。"
|
||||
thanks: "Thank you for using Misskey."
|
||||
got-it: "わかった"
|
||||
customization-tips:
|
||||
title: "カスタマイズのヒント"
|
||||
@@ -41,6 +62,7 @@ common:
|
||||
years_ago: "{}年前"
|
||||
month-and-day: "{month}月 {day}日"
|
||||
trash: "ゴミ箱"
|
||||
drive: "ドライブ"
|
||||
weekday-short:
|
||||
sunday: "日"
|
||||
monday: "月"
|
||||
@@ -58,7 +80,7 @@ common:
|
||||
friday: "金曜日"
|
||||
saturday: "土曜日"
|
||||
reactions:
|
||||
like: "ええやん"
|
||||
like: "いいね"
|
||||
love: "しゅき"
|
||||
laugh: "笑"
|
||||
hmm: "ふぅ~む"
|
||||
@@ -68,6 +90,15 @@ common:
|
||||
confused: "こまこまのこまり"
|
||||
rip: "RIP"
|
||||
pudding: "Pudding"
|
||||
note-visibility:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
followers: "フォロワー"
|
||||
followers-desc: "自分のフォロワーにのみ公開"
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
note-placeholders:
|
||||
a: "今どうしてる?"
|
||||
b: "何かありましたか?"
|
||||
@@ -84,8 +115,21 @@ common:
|
||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
||||
verified-user: "公式アカウント"
|
||||
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
||||
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
||||
show-full-acct: "ユーザー名のホストを省略しない"
|
||||
reduce-motion: "UIの動きを減らす"
|
||||
this-setting-is-this-device-only: "このデバイスのみ"
|
||||
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
||||
is-remote-user: "このユーザー情報はコピーです。"
|
||||
is-remote-post: "この投稿情報はコピーです。"
|
||||
view-on-remote: "正確な情報を見る"
|
||||
error:
|
||||
title: '問題が発生しました'
|
||||
retry: 'やり直す'
|
||||
reversi:
|
||||
drawn: "引き分け"
|
||||
my-turn: "あなたのターンです"
|
||||
@@ -126,7 +170,10 @@ common:
|
||||
home: "ホーム"
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
hashtag: "ハッシュタグ"
|
||||
global: "グローバル"
|
||||
mentions: "あなた宛て"
|
||||
direct: "ダイレクト投稿"
|
||||
notifications: "通知"
|
||||
list: "リスト"
|
||||
swap-left: "左に移動"
|
||||
@@ -138,6 +185,7 @@ common:
|
||||
rename: "名前を変更"
|
||||
stack-left: "左に重ねる"
|
||||
pop-right: "右に出す"
|
||||
dev: "アプリの作成に失敗しました。再度お試しください。"
|
||||
auth/views/form.vue:
|
||||
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
|
||||
permission-ask: "このアプリは次の権限を要求しています:"
|
||||
@@ -229,6 +277,47 @@ common/views/components/connect-failed.troubleshooter.vue:
|
||||
success-desc: "正常に接続できるようです。ページを再度読み込みしてください。"
|
||||
flush: "キャッシュの削除"
|
||||
set-version: "バージョン指定"
|
||||
common/views/components/media-banner.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
common/views/components/theme.vue:
|
||||
light-theme: "非ダークモード時に使用するテーマ"
|
||||
dark-theme: "ダークモード時に使用するテーマ"
|
||||
light-themes: "明るいテーマ"
|
||||
dark-themes: "暗いテーマ"
|
||||
install-a-theme: "テーマのインストール"
|
||||
theme-code: "テーマコード"
|
||||
install: "インストール"
|
||||
installed: "「{}」をインストールしました"
|
||||
create-a-theme: "テーマの作成"
|
||||
save-created-theme: "テーマを保存"
|
||||
primary-color: "プライマリ カラー"
|
||||
secondary-color: "セカンダリ カラー"
|
||||
text-color: "文字色"
|
||||
base-theme: "ベーステーマ"
|
||||
base-theme-light: "Light"
|
||||
base-theme-dark: "Dark"
|
||||
theme-name: "テーマ名"
|
||||
preview-created-theme: "プレビュー"
|
||||
invalid-theme: "テーマが正しくありません。"
|
||||
already-installed: "既にそのテーマはインストールされています。"
|
||||
saved: "保存しました"
|
||||
manage-themes: "テーマの管理"
|
||||
builtin-themes: "標準テーマ"
|
||||
my-themes: "マイテーマ"
|
||||
installed-themes: "インストールされたテーマ"
|
||||
select-theme: "テーマを選択してください"
|
||||
uninstall: "アンインストール"
|
||||
uninstalled: "「{}」をアンインストールしました"
|
||||
author: "作者"
|
||||
desc: "説明"
|
||||
export: "エクスポート"
|
||||
import: "インポート"
|
||||
import-by-code: "またはコードをペースト"
|
||||
theme-name-required: "テーマ名は必須です。"
|
||||
common/views/components/cw-button.vue:
|
||||
hide: "隠す"
|
||||
show: "もっと見る"
|
||||
common/views/components/messaging.vue:
|
||||
search-user: "ユーザーを探す"
|
||||
you: "あなた"
|
||||
@@ -259,8 +348,12 @@ common/views/components/nav.vue:
|
||||
develop: "開発者"
|
||||
feedback: "フィードバック"
|
||||
common/views/components/note-menu.vue:
|
||||
detail: "詳細"
|
||||
copy-link: "リンクをコピー"
|
||||
favorite: "お気に入り"
|
||||
unfavorite: "お気に入り解除"
|
||||
pin: "ピン留め"
|
||||
unpin: "ピン留め解除"
|
||||
delete: "削除"
|
||||
delete-confirm: "この投稿を削除しますか?"
|
||||
remote: "投稿元で見る"
|
||||
@@ -336,6 +429,28 @@ common/views/components/visibility-chooser.vue:
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
common/views/components/trends.vue:
|
||||
count: "{}人が投稿"
|
||||
empty: "トレンドなし"
|
||||
common/views/components/profile-editor.vue:
|
||||
title: "プロフィール"
|
||||
name: "名前"
|
||||
account: "アカウント"
|
||||
location: "場所"
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
is-cat: "このアカウントはCatです"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-locked: "フォローを承認制にする"
|
||||
careful-bot: "Botからのフォローだけ承認制にする"
|
||||
advanced: "その他"
|
||||
privacy: "プライバシー"
|
||||
save: "保存"
|
||||
saved: "プロフィールを保存しました"
|
||||
uploading: "アップロード中"
|
||||
upload-failed: "アップロードに失敗しました"
|
||||
common/views/widgets/broadcast.vue:
|
||||
fetching: "確認中"
|
||||
no-broadcasts: "お知らせはありません"
|
||||
@@ -359,8 +474,6 @@ common/views/widgets/posts-monitor.vue:
|
||||
toggle: "表示を切り替え"
|
||||
common/views/widgets/hashtags.vue:
|
||||
title: "ハッシュタグ"
|
||||
count: "{}人が投稿"
|
||||
empty: "トレンドなし"
|
||||
common/views/widgets/server.vue:
|
||||
title: "サーバー情報"
|
||||
toggle: "表示を切り替え"
|
||||
@@ -398,6 +511,7 @@ common/views/pages/follow.vue:
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-processing: "フォロー処理中"
|
||||
follow-request: "フォロー申請"
|
||||
desktop:
|
||||
banner-crop-title: "バナーとして表示する部分を選択"
|
||||
@@ -410,6 +524,7 @@ desktop:
|
||||
uploading-avatar: "新しいアバターをアップロードしています"
|
||||
avatar-updated: "アバターを更新しました"
|
||||
choose-avatar: "アバターにする画像を選択"
|
||||
invalid-filetype: "この形式のファイルはサポートされていません"
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Black ... Total"
|
||||
notes: "Blue ... Notes"
|
||||
@@ -423,6 +538,31 @@ desktop/views/components/calendar.vue:
|
||||
prev: "前の月"
|
||||
next: "次の月"
|
||||
go: "クリックして時間遡行"
|
||||
desktop/views/components/charts.vue:
|
||||
title: "チャート"
|
||||
per-day: "1日ごと"
|
||||
per-hour: "1時間ごと"
|
||||
federation: "フェデレーション"
|
||||
notes: "投稿"
|
||||
users: "ユーザー"
|
||||
drive: "ドライブ"
|
||||
network: "ネットワーク"
|
||||
charts:
|
||||
federation-instances: "インスタンスの増減"
|
||||
federation-instances-total: "インスタンスの積算"
|
||||
notes: "投稿の増減 (統合)"
|
||||
local-notes: "投稿の増減 (ローカル)"
|
||||
remote-notes: "投稿の増減 (リモート)"
|
||||
notes-total: "投稿の積算"
|
||||
users: "ユーザーの増減"
|
||||
users-total: "ユーザーの積算"
|
||||
drive: "ドライブ使用量の増減"
|
||||
drive-total: "ドライブ使用量の積算"
|
||||
drive-files: "ドライブのファイル数の増減"
|
||||
drive-files-total: "ドライブのファイル数の積算"
|
||||
network-requests: "リクエスト"
|
||||
network-time: "応答時間"
|
||||
network-usage: "通信量"
|
||||
desktop/views/components/choose-file-from-drive-window.vue:
|
||||
choose-file: "ファイル選択中"
|
||||
upload: "PCからドライブにファイルをアップロード"
|
||||
@@ -439,7 +579,6 @@ desktop/views/components/crop-window.vue:
|
||||
ok: "決定"
|
||||
desktop/views/components/drive-window.vue:
|
||||
used: "使用中"
|
||||
drive: "ドライブ"
|
||||
desktop/views/components/drive.file.vue:
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
@@ -469,8 +608,6 @@ desktop/views/components/drive.folder.vue:
|
||||
rename: "名前を変更"
|
||||
rename-folder: "フォルダ名の変更"
|
||||
input-new-folder-name: "新しいフォルダ名を入力してください"
|
||||
desktop/views/components/drive.nav-folder.vue:
|
||||
drive: "ドライブ"
|
||||
desktop/views/components/drive.vue:
|
||||
search: "検索"
|
||||
load-more: "もっと読み込む"
|
||||
@@ -501,6 +638,7 @@ desktop/views/components/follow-button.vue:
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-processing: "フォロー処理中"
|
||||
follow-request: "フォロー申請"
|
||||
desktop/views/components/followers-window.vue:
|
||||
followers: "{} のフォロワー"
|
||||
@@ -537,7 +675,7 @@ desktop/views/components/note-detail.vue:
|
||||
location: "位置情報"
|
||||
renote: "Renote"
|
||||
add-reaction: "リアクション"
|
||||
desktop/views/components/notes.note.vue:
|
||||
desktop/views/components/note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
reply: "返信"
|
||||
renote: "Renote"
|
||||
@@ -545,8 +683,6 @@ desktop/views/components/notes.note.vue:
|
||||
detail: "詳細"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
hide: "隠す"
|
||||
see-more: "もっと見る"
|
||||
desktop/views/components/notes.vue:
|
||||
error: "読み込みに失敗しました。"
|
||||
retry: "リトライ"
|
||||
@@ -605,44 +741,56 @@ desktop/views/components/settings.vue:
|
||||
profile: "プロフィール"
|
||||
notification: "通知"
|
||||
apps: "アプリ"
|
||||
mute: "ミュート"
|
||||
drive: "ドライブ"
|
||||
mute-and-block: "ミュート/ブロック"
|
||||
blocking: "ブロック"
|
||||
security: "セキュリティ"
|
||||
signin: "サインイン履歴"
|
||||
password: "パスワード"
|
||||
2fa: "二段階認証"
|
||||
other: "その他"
|
||||
license: "ライセンス"
|
||||
theme: "テーマ"
|
||||
behaviour: "動作"
|
||||
fetch-on-scroll: "スクロールで自動読み込み"
|
||||
fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。"
|
||||
note-visibility: "投稿の公開範囲"
|
||||
default-note-visibility: "デフォルトの公開範囲"
|
||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||
auto-popout: "ウィンドウの自動ポップアウト"
|
||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
||||
advanced: "詳細設定"
|
||||
api-via-stream: "ストリームを経由したAPIリクエスト"
|
||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||
deck-nav: "デッキ内ナビゲーション"
|
||||
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
|
||||
deck-default: "デッキをデフォルトのUIにする"
|
||||
display: "デザインと表示"
|
||||
customize: "ホームをカスタマイズ"
|
||||
wallpaper: "壁紙"
|
||||
choose-wallpaper: "壁紙を選択"
|
||||
delete-wallpaper: "壁紙を削除"
|
||||
dark-mode: "ダークモード"
|
||||
use-shadow: "UIに影を使用"
|
||||
rounded-corners: "UIの角を丸める"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||
show-clock-on-header: "右上に時計を表示する"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
timeline: "タイムライン"
|
||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||
show-maps: "マップの自動展開"
|
||||
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
||||
deck-column-align: "デッキのカラムの位置"
|
||||
deck-column-align-center: "中央"
|
||||
deck-column-align-left: "左"
|
||||
sound: "サウンド"
|
||||
enable-sounds: "サウンドを有効にする"
|
||||
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
|
||||
volume: "ボリューム"
|
||||
test: "テスト"
|
||||
mobile: "モバイル"
|
||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||
language: "言語"
|
||||
pick-language: "言語を選択"
|
||||
recommended: "推奨"
|
||||
@@ -678,6 +826,10 @@ desktop/views/components/settings.vue:
|
||||
tools: "ツール"
|
||||
task-manager: "タスクマネージャ"
|
||||
third-parties: "サードパーティ"
|
||||
navbar-position: "ナビゲーションバーの位置"
|
||||
navbar-position-top: "上"
|
||||
navbar-position-left: "左"
|
||||
navbar-position-right: "右"
|
||||
desktop/views/components/settings.2fa.vue:
|
||||
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
||||
detail: "詳細..."
|
||||
@@ -696,20 +848,32 @@ desktop/views/components/settings.2fa.vue:
|
||||
success: "設定が完了しました!"
|
||||
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
||||
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
||||
desktop/views/components/settings.api.vue:
|
||||
common/views/components/api-settings.vue:
|
||||
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||
regenerate-token: "トークンを再生成"
|
||||
token: "Token:"
|
||||
enter-password: "パスワードを入力してください"
|
||||
console:
|
||||
title: 'APIコンソール'
|
||||
endpoint: 'エンドポイント'
|
||||
parameter: 'パラメータ'
|
||||
send: '送信'
|
||||
sending: '応答待ち'
|
||||
response: '結果'
|
||||
desktop/views/components/settings.apps.vue:
|
||||
no-apps: "連携しているアプリケーションはありません"
|
||||
desktop/views/components/settings.drive.vue:
|
||||
max: "中"
|
||||
common/views/components/drive-settings.vue:
|
||||
max: "容量"
|
||||
in-use: "使用中"
|
||||
desktop/views/components/settings.mute.vue:
|
||||
no-users: "ミュートしているユーザーはいません"
|
||||
stats: "統計"
|
||||
common/views/components/mute-and-block.vue:
|
||||
mute-and-block: "ミュートとブロック"
|
||||
mute: "ミュート"
|
||||
block: "ブロック"
|
||||
no-muted-users: "ミュートしているユーザーはいません"
|
||||
no-blocked-users: "ブロックしているユーザーはいません"
|
||||
desktop/views/components/settings.password.vue:
|
||||
reset: "パスワードを変更する"
|
||||
enter-current-password: "現在のパスワードを入力してください"
|
||||
@@ -717,20 +881,6 @@ desktop/views/components/settings.password.vue:
|
||||
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
||||
not-match: "新しいパスワードが一致しません"
|
||||
changed: "パスワードを変更しました"
|
||||
desktop/views/components/settings.profile.vue:
|
||||
avatar: "アイコン"
|
||||
choice-avatar: "画像を選択"
|
||||
name: "名前"
|
||||
location: "場所"
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
save: "保存"
|
||||
locked-account: "アカウントの保護"
|
||||
is-locked: "投稿を非公開にする"
|
||||
other: "その他"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
profile-updated: "プロフィールを更新しました"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
@@ -743,17 +893,23 @@ desktop/views/components/timeline.vue:
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
mentions: "あなた宛て"
|
||||
messages: "メッセージ"
|
||||
list: "リスト"
|
||||
hashtag: "ハッシュタグ"
|
||||
add-tag-timeline: "ハッシュタグを追加"
|
||||
add-list: "リストを追加"
|
||||
list-name: "リスト名"
|
||||
desktop/views/components/ui.header.vue:
|
||||
welcome-back: "おかえりなさい、"
|
||||
adjective: "さん"
|
||||
desktop/views/components/ui.header.account.vue:
|
||||
profile: "プロフィール"
|
||||
drive: "ドライブ"
|
||||
favorites: "お気に入り"
|
||||
lists: "リスト"
|
||||
follow-requests: "フォロー申請"
|
||||
customize: "ホームのカスタマイズ"
|
||||
admin: "管理"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
dark: "闇に飲まれる"
|
||||
@@ -792,16 +948,20 @@ desktop/views/components/window.vue:
|
||||
close: "閉じる"
|
||||
desktop/views/pages/admin/admin.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
drive: "ドライブ"
|
||||
users: "ユーザー"
|
||||
update: "更新"
|
||||
announcements: "お知らせ"
|
||||
hashtags: "ハッシュタグ"
|
||||
desktop/views/pages/admin/admin.dashboard.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
all-users: "全てのユーザー"
|
||||
original-users: "このインスタンスのユーザー"
|
||||
all-notes: "全てのノート"
|
||||
original-notes: "このインスタンスのノート"
|
||||
all-notes: "全ての投稿"
|
||||
original-notes: "このインスタンスの投稿"
|
||||
invite: "招待"
|
||||
banner-url: "Banner URL"
|
||||
disableRegistration: "Disable new user registration"
|
||||
disableLocalTimeline: "Disable the local timeline"
|
||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||
suspend-user: "ユーザーの凍結"
|
||||
suspend: "凍結"
|
||||
@@ -818,26 +978,28 @@ desktop/views/pages/admin/admin.unverify-user.vue:
|
||||
unverify-user: "ユーザーの公式アカウント解除"
|
||||
unverify: "公式アカウントを解除する"
|
||||
unverified: "公式アカウントを解除しました"
|
||||
desktop/views/pages/admin/admin.notes-chart.vue:
|
||||
title: "投稿"
|
||||
local: "ローカル"
|
||||
remote: "リモート"
|
||||
desktop/views/pages/admin/admin.users-chart.vue:
|
||||
title: "ユーザー"
|
||||
local: "ローカル"
|
||||
remote: "リモート"
|
||||
desktop/views/pages/admin/admin.drive-chart.vue:
|
||||
title: "ドライブ"
|
||||
local: "ローカル"
|
||||
remote: "リモート"
|
||||
desktop/views/pages/admin/admin.announcements.vue:
|
||||
announcements: "お知らせ"
|
||||
desktop/views/pages/admin/admin.hashtags.vue:
|
||||
hided-tags: "Hidden Tags"
|
||||
desktop/views/pages/deck/deck.tl-column.vue:
|
||||
is-media-only: "メディア投稿のみ"
|
||||
is-media-view: "メディアビュー"
|
||||
edit: "オプション"
|
||||
desktop/views/pages/deck/deck.note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
desktop/views/pages/deck/deck.user-column.vue:
|
||||
posts: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
images: "画像"
|
||||
activity: "アクティビティ"
|
||||
timeline: "タイムライン"
|
||||
pinned-notes: "ピン留めされた投稿"
|
||||
push-to-a-list: "リストに追加"
|
||||
desktop/views/pages/stats/stats.vue:
|
||||
all-users: "全てのユーザー"
|
||||
original-users: "このインスタンスのユーザー"
|
||||
all-notes: "全ての投稿"
|
||||
original-notes: "このインスタンスの投稿"
|
||||
desktop/views/pages/welcome.vue:
|
||||
about: "詳しく..."
|
||||
gotit: "わかった"
|
||||
@@ -846,7 +1008,10 @@ desktop/views/pages/welcome.vue:
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
announcements: "お知らせ"
|
||||
photos: "最近の画像"
|
||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||
info: "情報"
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Misskey Drive"
|
||||
desktop/views/pages/favorites.vue:
|
||||
@@ -882,9 +1047,6 @@ desktop/views/pages/user/user.friends.vue:
|
||||
no-users: "よく話すユーザーはいません"
|
||||
desktop/views/pages/user/user.vue:
|
||||
is-suspended: "このユーザーは凍結されています。"
|
||||
is-remote: "このユーザーはリモートユーザーです。"
|
||||
view-remote: "正確な情報を見る"
|
||||
desktop/views/pages/user/user.home.vue:
|
||||
last-used-at: "最終アクセス"
|
||||
desktop/views/pages/user/user.photos.vue:
|
||||
title: "フォト"
|
||||
@@ -898,6 +1060,9 @@ desktop/views/pages/user/user.profile.vue:
|
||||
mute: "ミュートする"
|
||||
muted: "ミュートしています"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロックする"
|
||||
unblock: "ブロック解除"
|
||||
block-confirm: "このユーザーをブロックしますか?"
|
||||
push-to-a-list: "リストに追加"
|
||||
list-pushed: "{user}を{list}に追加しました。"
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
@@ -905,6 +1070,10 @@ desktop/views/pages/user/user.header.vue:
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
is-bot: "このアカウントはBotです"
|
||||
years-old: "歳"
|
||||
year: "年"
|
||||
month: "月"
|
||||
day: "日"
|
||||
desktop/views/pages/user/user.timeline.vue:
|
||||
default: "投稿"
|
||||
with-replies: "投稿と返信"
|
||||
@@ -934,7 +1103,6 @@ desktop/views/widgets/users.vue:
|
||||
refresh: "他を見る"
|
||||
no-one: "いません!"
|
||||
mobile/views/components/drive.vue:
|
||||
drive: "ドライブ"
|
||||
used: "使用中"
|
||||
folder-count: "フォルダ"
|
||||
count-separator: "、"
|
||||
@@ -964,6 +1132,8 @@ mobile/views/components/drive.file-detail.vue:
|
||||
hash: "ハッシュ (md5)"
|
||||
exif: "EXIF"
|
||||
nsfw: "閲覧注意"
|
||||
mark-as-sensitive: "閲覧注意に設定"
|
||||
unmark-as-sensitive: "閲覧注意を解除"
|
||||
mobile/views/components/media-image.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
@@ -974,6 +1144,7 @@ mobile/views/components/follow-button.vue:
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-processing: "フォロー処理中"
|
||||
follow-request: "フォロー申請"
|
||||
mobile/views/components/friends-maker.vue:
|
||||
title: "気になるユーザーをフォロー"
|
||||
@@ -983,8 +1154,6 @@ mobile/views/components/friends-maker.vue:
|
||||
close: "閉じる"
|
||||
mobile/views/components/note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
more: "もっと見る"
|
||||
less: "隠す"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
location: "位置情報"
|
||||
@@ -1037,13 +1206,13 @@ mobile/views/components/ui.nav.vue:
|
||||
messaging: "メッセージ"
|
||||
follow-requests: "フォロー申請"
|
||||
search: "検索"
|
||||
drive: "ドライブ"
|
||||
favorites: "お気に入り"
|
||||
user-lists: "リスト"
|
||||
widgets: "ウィジェット"
|
||||
game: "ゲーム"
|
||||
darkmode: "ダークモード"
|
||||
settings: "設定"
|
||||
admin: "管理"
|
||||
about: "Misskeyについて"
|
||||
mobile/views/components/user-timeline.vue:
|
||||
no-notes: "このユーザーは投稿していないようです。"
|
||||
@@ -1059,7 +1228,6 @@ mobile/views/pages/user-lists.vue:
|
||||
title: "リスト"
|
||||
enter-list-name: "リスト名を入力してください"
|
||||
mobile/views/pages/drive.vue:
|
||||
drive: "ドライブ"
|
||||
more: "もっと見る"
|
||||
mobile/views/pages/signup.vue:
|
||||
lets-start: "📦 始めましょう"
|
||||
@@ -1072,6 +1240,8 @@ mobile/views/pages/home.vue:
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
mentions: "あなた宛て"
|
||||
messages: "メッセージ"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
mobile/views/pages/welcome.vue:
|
||||
@@ -1102,20 +1272,6 @@ mobile/views/pages/notifications.vue:
|
||||
read-all: "すべての通知を既読にしますか?"
|
||||
mobile/views/pages/games/reversi.vue:
|
||||
reversi: "リバーシ"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
name: "名前"
|
||||
account: "アカウント"
|
||||
location: "場所"
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
is-cat: "このアカウントはCatです"
|
||||
save: "保存"
|
||||
saved: "プロフィールを保存しました"
|
||||
uploading: "アップロード中"
|
||||
upload-failed: "アップロードに失敗しました"
|
||||
mobile/views/pages/search.vue:
|
||||
search: "検索"
|
||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||
@@ -1133,6 +1289,7 @@ mobile/views/pages/settings.vue:
|
||||
dark-mode: "ダークモード"
|
||||
i-am-under-limited-internet: "私は通信を制限されている"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
timeline: "タイムライン"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||
@@ -1141,8 +1298,15 @@ mobile/views/pages/settings.vue:
|
||||
post-style: "投稿の表示スタイル"
|
||||
post-style-standard: "標準"
|
||||
post-style-smart: "スマート"
|
||||
notification-position: "通知の表示"
|
||||
notification-position-bottom: "下"
|
||||
notification-position-top: "上"
|
||||
theme: "テーマ"
|
||||
behavior: "動作"
|
||||
fetch-on-scroll: "スクロールで自動読み込み"
|
||||
note-visibility: "投稿の公開範囲"
|
||||
default-note-visibility: "デフォルトの公開範囲"
|
||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||
load-raw-images: "添付された画像を高画質で表示する"
|
||||
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||
@@ -1161,6 +1325,9 @@ mobile/views/pages/settings.vue:
|
||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
sound: "サウンド"
|
||||
enable-sounds: "サウンドを有効にする"
|
||||
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
|
||||
mobile/views/pages/user.vue:
|
||||
follows-you: "フォローされています"
|
||||
following: "フォロー"
|
||||
@@ -1170,8 +1337,10 @@ mobile/views/pages/user.vue:
|
||||
timeline: "タイムライン"
|
||||
media: "メディア"
|
||||
is-suspended: "このユーザーは凍結されています。"
|
||||
is-remote: "このユーザーはリモートユーザーです。"
|
||||
view-remote: "正確な情報を見る"
|
||||
mute: "ミュート"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロック"
|
||||
unblock: "ブロック解除"
|
||||
mobile/views/pages/user/home.vue:
|
||||
recent-notes: "最近の投稿"
|
||||
images: "画像"
|
||||
@@ -1217,3 +1386,29 @@ docs:
|
||||
description: "説明"
|
||||
dev/views/index.vue:
|
||||
manage-apps: "アプリの管理"
|
||||
dev/views/apps.vue:
|
||||
manage-apps: "アプリを管理"
|
||||
create-app: "アプリ作成"
|
||||
app-missing: "アプリなし"
|
||||
dev/views/new-app.vue:
|
||||
create-app: "アプリケーションの作成"
|
||||
app-name: "アプリケーション名"
|
||||
app-name-desc: "あなたのアプリの名称。"
|
||||
app-name-ex: "ex) Misskey for iOS"
|
||||
app-overview: "アプリの概要"
|
||||
app-desc: "あなたのアプリの簡単な説明や紹介。"
|
||||
app-desc-ex: "ex) Misskey iOSクライアント。"
|
||||
callback-url: "コールバックURL (オプション)"
|
||||
callback-url-desc: "ユーザーが認証フォームで認証した際にリダイレクトするURLを設定できます。"
|
||||
authority: "権限"
|
||||
authority-desc: "ここで要求した機能だけがAPIからアクセスできます。"
|
||||
authority-warning: "アプリ作成後も変更できますが、新たな権限を付与する場合、その時点で関連付けられているユーザーキーはすべて無効になります。"
|
||||
account-read: "アカウントの情報を見る。"
|
||||
account-write: "アカウントの情報を操作する。"
|
||||
note-write: "投稿する。"
|
||||
reaction-write: "リアクションしたりリアクションをキャンセルする。"
|
||||
following-write: "フォローしたりフォロー解除する。"
|
||||
drive-read: "ドライブを見る。"
|
||||
drive-write: "ドライブを操作する。"
|
||||
notification-read: "通知を見る。"
|
||||
notification-write: "通知を操作する。"
|
||||
|
||||
@@ -6,12 +6,33 @@ common:
|
||||
misskey: "A ⭐ of fediverse"
|
||||
about-title: "A ⭐ of fediverse."
|
||||
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
||||
intro:
|
||||
title: "Misskeyって?"
|
||||
about: "Misskeyはオープンソースの<b>分散型マイクロブログSNS</b>です。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。"
|
||||
features: "特徴"
|
||||
rich-contents: "投稿"
|
||||
rich-contents-desc: "自分の考え、話題の出来事、皆と共有したいことについて発信してください。必要であれば、様々な構文を使って投稿を装飾したり、好きな画像、動画などのファイルやアンケートを添付することもできます。"
|
||||
reaction: "リアクション"
|
||||
reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。"
|
||||
ui: "インターフェース"
|
||||
ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。"
|
||||
drive: "ドライブ"
|
||||
drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんか?もしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんか?Misskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。"
|
||||
outro: "他にもMisskeyにしかない機能はまだまだあるので、ぜひあなた自身の目で確かめてください。Misskeyは分散型SNSなので、このインスタンスが気に入らなければ他のインスタンスを試すこともできます。それでは、GLHF!"
|
||||
adblock:
|
||||
detected: "広告ブロッカーを無効にしてください"
|
||||
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
||||
application-authorization: "アプリの連携"
|
||||
close: "閉じる"
|
||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||
BSoD:
|
||||
fatal-error: ":( 致命的な問題が発生しました。"
|
||||
update-browser-os: "お使いのブラウザ(またはOS)のバージョンを更新すると解決する可能性があります。"
|
||||
error-code: "エラーコード"
|
||||
browser-version: "ブラウザ バージョン"
|
||||
client-version: "クライアント バージョン"
|
||||
email-support: "問題が解決しない場合は、上記の情報をお書き添えの上 syuilotan@yahoo.co.jp までご連絡ください。"
|
||||
thanks: "Thank you for using Misskey."
|
||||
got-it: "わかった"
|
||||
customization-tips:
|
||||
title: "カスタマイズのヒント"
|
||||
@@ -41,6 +62,7 @@ common:
|
||||
years_ago: "{}年前"
|
||||
month-and-day: "{month}月 {day}日"
|
||||
trash: "ゴミ箱"
|
||||
drive: "ドライブ"
|
||||
weekday-short:
|
||||
sunday: "日"
|
||||
monday: "月"
|
||||
@@ -58,7 +80,7 @@ common:
|
||||
friday: "金曜日"
|
||||
saturday: "土曜日"
|
||||
reactions:
|
||||
like: "ええやん"
|
||||
like: "いいね"
|
||||
love: "しゅき"
|
||||
laugh: "笑"
|
||||
hmm: "ふぅ~む"
|
||||
@@ -68,6 +90,15 @@ common:
|
||||
confused: "こまこまのこまり"
|
||||
rip: "RIP"
|
||||
pudding: "Pudding"
|
||||
note-visibility:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
followers: "フォロワー"
|
||||
followers-desc: "自分のフォロワーにのみ公開"
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
note-placeholders:
|
||||
a: "今どうしてる?"
|
||||
b: "何かありましたか?"
|
||||
@@ -84,8 +115,21 @@ common:
|
||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
||||
verified-user: "公式アカウント"
|
||||
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
||||
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
||||
show-full-acct: "ユーザー名のホストを省略しない"
|
||||
reduce-motion: "UIの動きを減らす"
|
||||
this-setting-is-this-device-only: "このデバイスのみ"
|
||||
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
||||
is-remote-user: "このユーザー情報はコピーです。"
|
||||
is-remote-post: "この投稿情報はコピーです。"
|
||||
view-on-remote: "正確な情報を見る"
|
||||
error:
|
||||
title: '問題が発生しました'
|
||||
retry: 'やり直す'
|
||||
reversi:
|
||||
drawn: "引き分け"
|
||||
my-turn: "あなたのターンです"
|
||||
@@ -126,7 +170,10 @@ common:
|
||||
home: "ホーム"
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
hashtag: "ハッシュタグ"
|
||||
global: "グローバル"
|
||||
mentions: "あなた宛て"
|
||||
direct: "ダイレクト投稿"
|
||||
notifications: "通知"
|
||||
list: "リスト"
|
||||
swap-left: "左に移動"
|
||||
@@ -138,6 +185,7 @@ common:
|
||||
rename: "名前を変更"
|
||||
stack-left: "左に重ねる"
|
||||
pop-right: "右に出す"
|
||||
dev: "アプリの作成に失敗しました。再度お試しください。"
|
||||
auth/views/form.vue:
|
||||
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
|
||||
permission-ask: "このアプリは次の権限を要求しています:"
|
||||
@@ -229,6 +277,47 @@ common/views/components/connect-failed.troubleshooter.vue:
|
||||
success-desc: "正常に接続できるようです。ページを再度読み込みしてください。"
|
||||
flush: "キャッシュの削除"
|
||||
set-version: "バージョン指定"
|
||||
common/views/components/media-banner.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
common/views/components/theme.vue:
|
||||
light-theme: "非ダークモード時に使用するテーマ"
|
||||
dark-theme: "ダークモード時に使用するテーマ"
|
||||
light-themes: "明るいテーマ"
|
||||
dark-themes: "暗いテーマ"
|
||||
install-a-theme: "テーマのインストール"
|
||||
theme-code: "テーマコード"
|
||||
install: "インストール"
|
||||
installed: "「{}」をインストールしました"
|
||||
create-a-theme: "テーマの作成"
|
||||
save-created-theme: "テーマを保存"
|
||||
primary-color: "プライマリ カラー"
|
||||
secondary-color: "セカンダリ カラー"
|
||||
text-color: "文字色"
|
||||
base-theme: "ベーステーマ"
|
||||
base-theme-light: "Light"
|
||||
base-theme-dark: "Dark"
|
||||
theme-name: "テーマ名"
|
||||
preview-created-theme: "プレビュー"
|
||||
invalid-theme: "テーマが正しくありません。"
|
||||
already-installed: "既にそのテーマはインストールされています。"
|
||||
saved: "保存しました"
|
||||
manage-themes: "テーマの管理"
|
||||
builtin-themes: "標準テーマ"
|
||||
my-themes: "マイテーマ"
|
||||
installed-themes: "インストールされたテーマ"
|
||||
select-theme: "テーマを選択してください"
|
||||
uninstall: "アンインストール"
|
||||
uninstalled: "「{}」をアンインストールしました"
|
||||
author: "作者"
|
||||
desc: "説明"
|
||||
export: "エクスポート"
|
||||
import: "インポート"
|
||||
import-by-code: "またはコードをペースト"
|
||||
theme-name-required: "テーマ名は必須です。"
|
||||
common/views/components/cw-button.vue:
|
||||
hide: "隠す"
|
||||
show: "もっと見る"
|
||||
common/views/components/messaging.vue:
|
||||
search-user: "ユーザーを探す"
|
||||
you: "あなた"
|
||||
@@ -259,8 +348,12 @@ common/views/components/nav.vue:
|
||||
develop: "開発者"
|
||||
feedback: "フィードバック"
|
||||
common/views/components/note-menu.vue:
|
||||
detail: "詳細"
|
||||
copy-link: "リンクをコピー"
|
||||
favorite: "お気に入り"
|
||||
unfavorite: "お気に入り解除"
|
||||
pin: "ピン留め"
|
||||
unpin: "ピン留め解除"
|
||||
delete: "削除"
|
||||
delete-confirm: "この投稿を削除しますか?"
|
||||
remote: "投稿元で見る"
|
||||
@@ -336,6 +429,28 @@ common/views/components/visibility-chooser.vue:
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
common/views/components/trends.vue:
|
||||
count: "{}人が投稿"
|
||||
empty: "トレンドなし"
|
||||
common/views/components/profile-editor.vue:
|
||||
title: "プロフィール"
|
||||
name: "名前"
|
||||
account: "アカウント"
|
||||
location: "場所"
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
is-cat: "このアカウントはCatです"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-locked: "フォローを承認制にする"
|
||||
careful-bot: "Botからのフォローだけ承認制にする"
|
||||
advanced: "その他"
|
||||
privacy: "プライバシー"
|
||||
save: "保存"
|
||||
saved: "プロフィールを保存しました"
|
||||
uploading: "アップロード中"
|
||||
upload-failed: "アップロードに失敗しました"
|
||||
common/views/widgets/broadcast.vue:
|
||||
fetching: "確認中"
|
||||
no-broadcasts: "お知らせはありません"
|
||||
@@ -359,8 +474,6 @@ common/views/widgets/posts-monitor.vue:
|
||||
toggle: "表示を切り替え"
|
||||
common/views/widgets/hashtags.vue:
|
||||
title: "ハッシュタグ"
|
||||
count: "{}人が投稿"
|
||||
empty: "トレンドなし"
|
||||
common/views/widgets/server.vue:
|
||||
title: "サーバー情報"
|
||||
toggle: "表示を切り替え"
|
||||
@@ -398,6 +511,7 @@ common/views/pages/follow.vue:
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-processing: "フォロー処理中"
|
||||
follow-request: "フォロー申請"
|
||||
desktop:
|
||||
banner-crop-title: "バナーとして表示する部分を選択"
|
||||
@@ -410,6 +524,7 @@ desktop:
|
||||
uploading-avatar: "新しいアバターをアップロードしています"
|
||||
avatar-updated: "アバターを更新しました"
|
||||
choose-avatar: "アバターにする画像を選択"
|
||||
invalid-filetype: "この形式のファイルはサポートされていません"
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Black ... Total"
|
||||
notes: "Blue ... Notes"
|
||||
@@ -423,6 +538,31 @@ desktop/views/components/calendar.vue:
|
||||
prev: "前の月"
|
||||
next: "次の月"
|
||||
go: "クリックして時間遡行"
|
||||
desktop/views/components/charts.vue:
|
||||
title: "チャート"
|
||||
per-day: "1日ごと"
|
||||
per-hour: "1時間ごと"
|
||||
federation: "フェデレーション"
|
||||
notes: "投稿"
|
||||
users: "ユーザー"
|
||||
drive: "ドライブ"
|
||||
network: "ネットワーク"
|
||||
charts:
|
||||
federation-instances: "インスタンスの増減"
|
||||
federation-instances-total: "インスタンスの積算"
|
||||
notes: "投稿の増減 (統合)"
|
||||
local-notes: "投稿の増減 (ローカル)"
|
||||
remote-notes: "投稿の増減 (リモート)"
|
||||
notes-total: "投稿の積算"
|
||||
users: "ユーザーの増減"
|
||||
users-total: "ユーザーの積算"
|
||||
drive: "ドライブ使用量の増減"
|
||||
drive-total: "ドライブ使用量の積算"
|
||||
drive-files: "ドライブのファイル数の増減"
|
||||
drive-files-total: "ドライブのファイル数の積算"
|
||||
network-requests: "リクエスト"
|
||||
network-time: "応答時間"
|
||||
network-usage: "通信量"
|
||||
desktop/views/components/choose-file-from-drive-window.vue:
|
||||
choose-file: "ファイル選択中"
|
||||
upload: "PCからドライブにファイルをアップロード"
|
||||
@@ -439,7 +579,6 @@ desktop/views/components/crop-window.vue:
|
||||
ok: "決定"
|
||||
desktop/views/components/drive-window.vue:
|
||||
used: "使用中"
|
||||
drive: "ドライブ"
|
||||
desktop/views/components/drive.file.vue:
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
@@ -469,8 +608,6 @@ desktop/views/components/drive.folder.vue:
|
||||
rename: "名前を変更"
|
||||
rename-folder: "フォルダ名の変更"
|
||||
input-new-folder-name: "新しいフォルダ名を入力してください"
|
||||
desktop/views/components/drive.nav-folder.vue:
|
||||
drive: "ドライブ"
|
||||
desktop/views/components/drive.vue:
|
||||
search: "検索"
|
||||
load-more: "もっと読み込む"
|
||||
@@ -501,6 +638,7 @@ desktop/views/components/follow-button.vue:
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-processing: "フォロー処理中"
|
||||
follow-request: "フォロー申請"
|
||||
desktop/views/components/followers-window.vue:
|
||||
followers: "{} のフォロワー"
|
||||
@@ -537,7 +675,7 @@ desktop/views/components/note-detail.vue:
|
||||
location: "位置情報"
|
||||
renote: "Renote"
|
||||
add-reaction: "リアクション"
|
||||
desktop/views/components/notes.note.vue:
|
||||
desktop/views/components/note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
reply: "返信"
|
||||
renote: "Renote"
|
||||
@@ -545,8 +683,6 @@ desktop/views/components/notes.note.vue:
|
||||
detail: "詳細"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
hide: "隠す"
|
||||
see-more: "もっと見る"
|
||||
desktop/views/components/notes.vue:
|
||||
error: "読み込みに失敗しました。"
|
||||
retry: "リトライ"
|
||||
@@ -605,44 +741,56 @@ desktop/views/components/settings.vue:
|
||||
profile: "プロフィール"
|
||||
notification: "通知"
|
||||
apps: "アプリ"
|
||||
mute: "ミュート"
|
||||
drive: "ドライブ"
|
||||
mute-and-block: "ミュート/ブロック"
|
||||
blocking: "ブロック"
|
||||
security: "セキュリティ"
|
||||
signin: "サインイン履歴"
|
||||
password: "パスワード"
|
||||
2fa: "二段階認証"
|
||||
other: "その他"
|
||||
license: "ライセンス"
|
||||
theme: "テーマ"
|
||||
behaviour: "動作"
|
||||
fetch-on-scroll: "スクロールで自動読み込み"
|
||||
fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。"
|
||||
note-visibility: "投稿の公開範囲"
|
||||
default-note-visibility: "デフォルトの公開範囲"
|
||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||
auto-popout: "ウィンドウの自動ポップアウト"
|
||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
||||
advanced: "詳細設定"
|
||||
api-via-stream: "ストリームを経由したAPIリクエスト"
|
||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||
deck-nav: "デッキ内ナビゲーション"
|
||||
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
|
||||
deck-default: "デッキをデフォルトのUIにする"
|
||||
display: "デザインと表示"
|
||||
customize: "ホームをカスタマイズ"
|
||||
wallpaper: "壁紙"
|
||||
choose-wallpaper: "壁紙を選択"
|
||||
delete-wallpaper: "壁紙を削除"
|
||||
dark-mode: "ダークモード"
|
||||
use-shadow: "UIに影を使用"
|
||||
rounded-corners: "UIの角を丸める"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||
show-clock-on-header: "右上に時計を表示する"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
timeline: "タイムライン"
|
||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||
show-maps: "マップの自動展開"
|
||||
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
||||
deck-column-align: "デッキのカラムの位置"
|
||||
deck-column-align-center: "中央"
|
||||
deck-column-align-left: "左"
|
||||
sound: "サウンド"
|
||||
enable-sounds: "サウンドを有効にする"
|
||||
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
|
||||
volume: "ボリューム"
|
||||
test: "テスト"
|
||||
mobile: "モバイル"
|
||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||
language: "言語"
|
||||
pick-language: "言語を選択"
|
||||
recommended: "推奨"
|
||||
@@ -678,6 +826,10 @@ desktop/views/components/settings.vue:
|
||||
tools: "ツール"
|
||||
task-manager: "タスクマネージャ"
|
||||
third-parties: "サードパーティ"
|
||||
navbar-position: "ナビゲーションバーの位置"
|
||||
navbar-position-top: "上"
|
||||
navbar-position-left: "左"
|
||||
navbar-position-right: "右"
|
||||
desktop/views/components/settings.2fa.vue:
|
||||
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
||||
detail: "詳細..."
|
||||
@@ -696,20 +848,32 @@ desktop/views/components/settings.2fa.vue:
|
||||
success: "設定が完了しました!"
|
||||
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
||||
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
||||
desktop/views/components/settings.api.vue:
|
||||
common/views/components/api-settings.vue:
|
||||
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||
regenerate-token: "トークンを再生成"
|
||||
token: "Token:"
|
||||
enter-password: "パスワードを入力してください"
|
||||
console:
|
||||
title: 'APIコンソール'
|
||||
endpoint: 'エンドポイント'
|
||||
parameter: 'パラメータ'
|
||||
send: '送信'
|
||||
sending: '応答待ち'
|
||||
response: '結果'
|
||||
desktop/views/components/settings.apps.vue:
|
||||
no-apps: "連携しているアプリケーションはありません"
|
||||
desktop/views/components/settings.drive.vue:
|
||||
max: "中"
|
||||
common/views/components/drive-settings.vue:
|
||||
max: "容量"
|
||||
in-use: "使用中"
|
||||
desktop/views/components/settings.mute.vue:
|
||||
no-users: "ミュートしているユーザーはいません"
|
||||
stats: "統計"
|
||||
common/views/components/mute-and-block.vue:
|
||||
mute-and-block: "ミュートとブロック"
|
||||
mute: "ミュート"
|
||||
block: "ブロック"
|
||||
no-muted-users: "ミュートしているユーザーはいません"
|
||||
no-blocked-users: "ブロックしているユーザーはいません"
|
||||
desktop/views/components/settings.password.vue:
|
||||
reset: "パスワードを変更する"
|
||||
enter-current-password: "現在のパスワードを入力してください"
|
||||
@@ -717,20 +881,6 @@ desktop/views/components/settings.password.vue:
|
||||
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
||||
not-match: "新しいパスワードが一致しません"
|
||||
changed: "パスワードを変更しました"
|
||||
desktop/views/components/settings.profile.vue:
|
||||
avatar: "アイコン"
|
||||
choice-avatar: "画像を選択"
|
||||
name: "名前"
|
||||
location: "場所"
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
save: "保存"
|
||||
locked-account: "アカウントの保護"
|
||||
is-locked: "投稿を非公開にする"
|
||||
other: "その他"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
profile-updated: "プロフィールを更新しました"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
@@ -743,17 +893,23 @@ desktop/views/components/timeline.vue:
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
mentions: "あなた宛て"
|
||||
messages: "メッセージ"
|
||||
list: "リスト"
|
||||
hashtag: "ハッシュタグ"
|
||||
add-tag-timeline: "ハッシュタグを追加"
|
||||
add-list: "リストを追加"
|
||||
list-name: "リスト名"
|
||||
desktop/views/components/ui.header.vue:
|
||||
welcome-back: "おかえりなさい、"
|
||||
adjective: "さん"
|
||||
desktop/views/components/ui.header.account.vue:
|
||||
profile: "プロフィール"
|
||||
drive: "ドライブ"
|
||||
favorites: "お気に入り"
|
||||
lists: "リスト"
|
||||
follow-requests: "フォロー申請"
|
||||
customize: "ホームのカスタマイズ"
|
||||
admin: "管理"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
dark: "闇に飲まれる"
|
||||
@@ -792,16 +948,20 @@ desktop/views/components/window.vue:
|
||||
close: "閉じる"
|
||||
desktop/views/pages/admin/admin.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
drive: "ドライブ"
|
||||
users: "ユーザー"
|
||||
update: "更新"
|
||||
announcements: "お知らせ"
|
||||
hashtags: "ハッシュタグ"
|
||||
desktop/views/pages/admin/admin.dashboard.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
all-users: "全てのユーザー"
|
||||
original-users: "このインスタンスのユーザー"
|
||||
all-notes: "全てのノート"
|
||||
original-notes: "このインスタンスのノート"
|
||||
all-notes: "全ての投稿"
|
||||
original-notes: "このインスタンスの投稿"
|
||||
invite: "招待"
|
||||
banner-url: "Banner URL"
|
||||
disableRegistration: "Disable new user registration"
|
||||
disableLocalTimeline: "Disable the local timeline"
|
||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||
suspend-user: "ユーザーの凍結"
|
||||
suspend: "凍結"
|
||||
@@ -818,26 +978,28 @@ desktop/views/pages/admin/admin.unverify-user.vue:
|
||||
unverify-user: "ユーザーの公式アカウント解除"
|
||||
unverify: "公式アカウントを解除する"
|
||||
unverified: "公式アカウントを解除しました"
|
||||
desktop/views/pages/admin/admin.notes-chart.vue:
|
||||
title: "投稿"
|
||||
local: "ローカル"
|
||||
remote: "リモート"
|
||||
desktop/views/pages/admin/admin.users-chart.vue:
|
||||
title: "ユーザー"
|
||||
local: "ローカル"
|
||||
remote: "リモート"
|
||||
desktop/views/pages/admin/admin.drive-chart.vue:
|
||||
title: "ドライブ"
|
||||
local: "ローカル"
|
||||
remote: "リモート"
|
||||
desktop/views/pages/admin/admin.announcements.vue:
|
||||
announcements: "お知らせ"
|
||||
desktop/views/pages/admin/admin.hashtags.vue:
|
||||
hided-tags: "Hidden Tags"
|
||||
desktop/views/pages/deck/deck.tl-column.vue:
|
||||
is-media-only: "メディア投稿のみ"
|
||||
is-media-view: "メディアビュー"
|
||||
edit: "オプション"
|
||||
desktop/views/pages/deck/deck.note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
desktop/views/pages/deck/deck.user-column.vue:
|
||||
posts: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
images: "画像"
|
||||
activity: "アクティビティ"
|
||||
timeline: "タイムライン"
|
||||
pinned-notes: "ピン留めされた投稿"
|
||||
push-to-a-list: "リストに追加"
|
||||
desktop/views/pages/stats/stats.vue:
|
||||
all-users: "全てのユーザー"
|
||||
original-users: "このインスタンスのユーザー"
|
||||
all-notes: "全ての投稿"
|
||||
original-notes: "このインスタンスの投稿"
|
||||
desktop/views/pages/welcome.vue:
|
||||
about: "詳しく..."
|
||||
gotit: "わかった"
|
||||
@@ -846,7 +1008,10 @@ desktop/views/pages/welcome.vue:
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
announcements: "お知らせ"
|
||||
photos: "最近の画像"
|
||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||
info: "情報"
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Misskey Drive"
|
||||
desktop/views/pages/favorites.vue:
|
||||
@@ -882,9 +1047,6 @@ desktop/views/pages/user/user.friends.vue:
|
||||
no-users: "よく話すユーザーはいません"
|
||||
desktop/views/pages/user/user.vue:
|
||||
is-suspended: "このユーザーは凍結されています。"
|
||||
is-remote: "このユーザーはリモートユーザーです。"
|
||||
view-remote: "正確な情報を見る"
|
||||
desktop/views/pages/user/user.home.vue:
|
||||
last-used-at: "最終アクセス"
|
||||
desktop/views/pages/user/user.photos.vue:
|
||||
title: "フォト"
|
||||
@@ -898,6 +1060,9 @@ desktop/views/pages/user/user.profile.vue:
|
||||
mute: "ミュートする"
|
||||
muted: "ミュートしています"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロックする"
|
||||
unblock: "ブロック解除"
|
||||
block-confirm: "このユーザーをブロックしますか?"
|
||||
push-to-a-list: "リストに追加"
|
||||
list-pushed: "{user}を{list}に追加しました。"
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
@@ -905,6 +1070,10 @@ desktop/views/pages/user/user.header.vue:
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
is-bot: "このアカウントはBotです"
|
||||
years-old: "歳"
|
||||
year: "年"
|
||||
month: "月"
|
||||
day: "日"
|
||||
desktop/views/pages/user/user.timeline.vue:
|
||||
default: "投稿"
|
||||
with-replies: "投稿と返信"
|
||||
@@ -934,7 +1103,6 @@ desktop/views/widgets/users.vue:
|
||||
refresh: "他を見る"
|
||||
no-one: "いません!"
|
||||
mobile/views/components/drive.vue:
|
||||
drive: "ドライブ"
|
||||
used: "使用中"
|
||||
folder-count: "フォルダ"
|
||||
count-separator: "、"
|
||||
@@ -964,6 +1132,8 @@ mobile/views/components/drive.file-detail.vue:
|
||||
hash: "ハッシュ (md5)"
|
||||
exif: "EXIF"
|
||||
nsfw: "閲覧注意"
|
||||
mark-as-sensitive: "閲覧注意に設定"
|
||||
unmark-as-sensitive: "閲覧注意を解除"
|
||||
mobile/views/components/media-image.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
@@ -974,6 +1144,7 @@ mobile/views/components/follow-button.vue:
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-processing: "フォロー処理中"
|
||||
follow-request: "フォロー申請"
|
||||
mobile/views/components/friends-maker.vue:
|
||||
title: "気になるユーザーをフォロー"
|
||||
@@ -983,8 +1154,6 @@ mobile/views/components/friends-maker.vue:
|
||||
close: "閉じる"
|
||||
mobile/views/components/note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
more: "もっと見る"
|
||||
less: "隠す"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
location: "位置情報"
|
||||
@@ -1037,13 +1206,13 @@ mobile/views/components/ui.nav.vue:
|
||||
messaging: "メッセージ"
|
||||
follow-requests: "フォロー申請"
|
||||
search: "検索"
|
||||
drive: "ドライブ"
|
||||
favorites: "お気に入り"
|
||||
user-lists: "リスト"
|
||||
widgets: "ウィジェット"
|
||||
game: "ゲーム"
|
||||
darkmode: "ダークモード"
|
||||
settings: "設定"
|
||||
admin: "管理"
|
||||
about: "Misskeyについて"
|
||||
mobile/views/components/user-timeline.vue:
|
||||
no-notes: "このユーザーは投稿していないようです。"
|
||||
@@ -1059,7 +1228,6 @@ mobile/views/pages/user-lists.vue:
|
||||
title: "リスト"
|
||||
enter-list-name: "リスト名を入力してください"
|
||||
mobile/views/pages/drive.vue:
|
||||
drive: "ドライブ"
|
||||
more: "もっと見る"
|
||||
mobile/views/pages/signup.vue:
|
||||
lets-start: "📦 始めましょう"
|
||||
@@ -1072,6 +1240,8 @@ mobile/views/pages/home.vue:
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
mentions: "あなた宛て"
|
||||
messages: "メッセージ"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
mobile/views/pages/welcome.vue:
|
||||
@@ -1102,20 +1272,6 @@ mobile/views/pages/notifications.vue:
|
||||
read-all: "すべての通知を既読にしますか?"
|
||||
mobile/views/pages/games/reversi.vue:
|
||||
reversi: "リバーシ"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
name: "名前"
|
||||
account: "アカウント"
|
||||
location: "場所"
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
is-cat: "このアカウントはCatです"
|
||||
save: "保存"
|
||||
saved: "プロフィールを保存しました"
|
||||
uploading: "アップロード中"
|
||||
upload-failed: "アップロードに失敗しました"
|
||||
mobile/views/pages/search.vue:
|
||||
search: "検索"
|
||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||
@@ -1133,6 +1289,7 @@ mobile/views/pages/settings.vue:
|
||||
dark-mode: "ダークモード"
|
||||
i-am-under-limited-internet: "私は通信を制限されている"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
timeline: "タイムライン"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||
@@ -1141,8 +1298,15 @@ mobile/views/pages/settings.vue:
|
||||
post-style: "投稿の表示スタイル"
|
||||
post-style-standard: "標準"
|
||||
post-style-smart: "スマート"
|
||||
notification-position: "通知の表示"
|
||||
notification-position-bottom: "下"
|
||||
notification-position-top: "上"
|
||||
theme: "テーマ"
|
||||
behavior: "動作"
|
||||
fetch-on-scroll: "スクロールで自動読み込み"
|
||||
note-visibility: "投稿の公開範囲"
|
||||
default-note-visibility: "デフォルトの公開範囲"
|
||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||
load-raw-images: "添付された画像を高画質で表示する"
|
||||
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||
@@ -1161,6 +1325,9 @@ mobile/views/pages/settings.vue:
|
||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
sound: "サウンド"
|
||||
enable-sounds: "サウンドを有効にする"
|
||||
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
|
||||
mobile/views/pages/user.vue:
|
||||
follows-you: "フォローされています"
|
||||
following: "フォロー"
|
||||
@@ -1170,8 +1337,10 @@ mobile/views/pages/user.vue:
|
||||
timeline: "タイムライン"
|
||||
media: "メディア"
|
||||
is-suspended: "このユーザーは凍結されています。"
|
||||
is-remote: "このユーザーはリモートユーザーです。"
|
||||
view-remote: "正確な情報を見る"
|
||||
mute: "ミュート"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロック"
|
||||
unblock: "ブロック解除"
|
||||
mobile/views/pages/user/home.vue:
|
||||
recent-notes: "最近の投稿"
|
||||
images: "画像"
|
||||
@@ -1217,3 +1386,29 @@ docs:
|
||||
description: "説明"
|
||||
dev/views/index.vue:
|
||||
manage-apps: "アプリの管理"
|
||||
dev/views/apps.vue:
|
||||
manage-apps: "アプリを管理"
|
||||
create-app: "アプリ作成"
|
||||
app-missing: "アプリなし"
|
||||
dev/views/new-app.vue:
|
||||
create-app: "アプリケーションの作成"
|
||||
app-name: "アプリケーション名"
|
||||
app-name-desc: "あなたのアプリの名称。"
|
||||
app-name-ex: "ex) Misskey for iOS"
|
||||
app-overview: "アプリの概要"
|
||||
app-desc: "あなたのアプリの簡単な説明や紹介。"
|
||||
app-desc-ex: "ex) Misskey iOSクライアント。"
|
||||
callback-url: "コールバックURL (オプション)"
|
||||
callback-url-desc: "ユーザーが認証フォームで認証した際にリダイレクトするURLを設定できます。"
|
||||
authority: "権限"
|
||||
authority-desc: "ここで要求した機能だけがAPIからアクセスできます。"
|
||||
authority-warning: "アプリ作成後も変更できますが、新たな権限を付与する場合、その時点で関連付けられているユーザーキーはすべて無効になります。"
|
||||
account-read: "アカウントの情報を見る。"
|
||||
account-write: "アカウントの情報を操作する。"
|
||||
note-write: "投稿する。"
|
||||
reaction-write: "リアクションしたりリアクションをキャンセルする。"
|
||||
following-write: "フォローしたりフォロー解除する。"
|
||||
drive-read: "ドライブを見る。"
|
||||
drive-write: "ドライブを操作する。"
|
||||
notification-read: "通知を見る。"
|
||||
notification-write: "通知を操作する。"
|
||||
|
||||
17367
package-lock.json
generated
Normal file
17367
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
148
package.json
148
package.json
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"name": "misskey",
|
||||
"author": "syuilo <i@syuilo.com>",
|
||||
"version": "7.4.0",
|
||||
"clientVersion": "1.0.8790",
|
||||
"version": "10.36.1",
|
||||
"clientVersion": "1.0.11311",
|
||||
"codename": "nighthike",
|
||||
"main": "./built/index.js",
|
||||
"private": true,
|
||||
@@ -20,26 +20,27 @@
|
||||
"format": "gulp format"
|
||||
},
|
||||
"dependencies": {
|
||||
"@fortawesome/fontawesome": "1.1.8",
|
||||
"@fortawesome/fontawesome-free-brands": "5.0.13",
|
||||
"@fortawesome/fontawesome-free-regular": "5.0.13",
|
||||
"@fortawesome/fontawesome-free-solid": "5.0.13",
|
||||
"@fortawesome/fontawesome-svg-core": "1.2.6",
|
||||
"@fortawesome/free-brands-svg-icons": "5.4.1",
|
||||
"@fortawesome/free-regular-svg-icons": "5.4.1",
|
||||
"@fortawesome/free-solid-svg-icons": "5.4.1",
|
||||
"@koa/cors": "2.2.2",
|
||||
"@prezzemolo/rap": "0.1.2",
|
||||
"@prezzemolo/zip": "0.0.3",
|
||||
"@types/bcryptjs": "2.4.1",
|
||||
"@types/bcryptjs": "2.4.2",
|
||||
"@types/chai-http": "3.0.5",
|
||||
"@types/dateformat": "1.0.1",
|
||||
"@types/debug": "0.0.30",
|
||||
"@types/debug": "0.0.31",
|
||||
"@types/deep-equal": "1.0.1",
|
||||
"@types/double-ended-queue": "2.1.0",
|
||||
"@types/elasticsearch": "5.0.25",
|
||||
"@types/elasticsearch": "5.0.28",
|
||||
"@types/file-type": "5.2.1",
|
||||
"@types/gulp": "3.8.36",
|
||||
"@types/gulp-htmlmin": "1.3.32",
|
||||
"@types/gulp-mocha": "0.0.32",
|
||||
"@types/gulp-rename": "0.0.33",
|
||||
"@types/gulp-replace": "0.0.31",
|
||||
"@types/gulp-uglify": "3.0.5",
|
||||
"@types/gulp-uglify": "3.0.6",
|
||||
"@types/gulp-util": "3.0.34",
|
||||
"@types/is-root": "1.0.0",
|
||||
"@types/is-url": "1.2.28",
|
||||
@@ -48,71 +49,74 @@
|
||||
"@types/koa-bodyparser": "5.0.1",
|
||||
"@types/koa-compress": "2.0.8",
|
||||
"@types/koa-favicon": "2.0.19",
|
||||
"@types/koa-logger": "3.1.0",
|
||||
"@types/koa-logger": "3.1.1",
|
||||
"@types/koa-mount": "3.0.1",
|
||||
"@types/koa-multer": "1.0.0",
|
||||
"@types/koa-router": "7.0.31",
|
||||
"@types/koa-router": "7.0.32",
|
||||
"@types/koa-send": "4.1.1",
|
||||
"@types/koa-views": "2.0.3",
|
||||
"@types/koa__cors": "2.2.3",
|
||||
"@types/minio": "6.0.2",
|
||||
"@types/minio": "7.0.0",
|
||||
"@types/mkdirp": "0.5.2",
|
||||
"@types/mocha": "5.2.3",
|
||||
"@types/mongodb": "3.1.4",
|
||||
"@types/mocha": "5.2.5",
|
||||
"@types/mongodb": "3.1.12",
|
||||
"@types/ms": "0.7.30",
|
||||
"@types/node": "10.7.1",
|
||||
"@types/node": "10.12.0",
|
||||
"@types/portscanner": "2.1.0",
|
||||
"@types/pug": "2.0.4",
|
||||
"@types/qrcode": "1.2.0",
|
||||
"@types/qrcode": "1.3.0",
|
||||
"@types/ratelimiter": "2.1.28",
|
||||
"@types/redis": "2.8.6",
|
||||
"@types/redis": "2.8.7",
|
||||
"@types/request": "2.47.1",
|
||||
"@types/request-promise-native": "1.0.15",
|
||||
"@types/rimraf": "2.0.2",
|
||||
"@types/seedrandom": "2.4.27",
|
||||
"@types/sharp": "0.17.9",
|
||||
"@types/sharp": "0.21.0",
|
||||
"@types/showdown": "1.7.5",
|
||||
"@types/single-line-log": "1.1.0",
|
||||
"@types/speakeasy": "2.0.2",
|
||||
"@types/speakeasy": "2.0.3",
|
||||
"@types/systeminformation": "3.23.0",
|
||||
"@types/tinycolor2": "1.4.1",
|
||||
"@types/tmp": "0.0.33",
|
||||
"@types/uuid": "3.4.3",
|
||||
"@types/webpack": "4.4.10",
|
||||
"@types/uuid": "3.4.4",
|
||||
"@types/webpack": "4.4.17",
|
||||
"@types/webpack-stream": "3.2.10",
|
||||
"@types/websocket": "0.0.39",
|
||||
"@types/ws": "6.0.0",
|
||||
"@types/websocket": "0.0.40",
|
||||
"@types/ws": "6.0.1",
|
||||
"animejs": "2.2.0",
|
||||
"apexcharts": "2.1.9",
|
||||
"autobind-decorator": "2.1.0",
|
||||
"autosize": "4.0.2",
|
||||
"autwh": "0.1.0",
|
||||
"bcryptjs": "2.4.3",
|
||||
"bee-queue": "1.2.2",
|
||||
"bootstrap-vue": "2.0.0-rc.11",
|
||||
"cafy": "11.3.0",
|
||||
"chai": "4.2.0",
|
||||
"chai-http": "4.2.0",
|
||||
"chalk": "2.4.1",
|
||||
"commander": "2.17.1",
|
||||
"chart.js": "2.7.3",
|
||||
"commander": "2.19.0",
|
||||
"crc-32": "1.2.0",
|
||||
"css-loader": "1.0.0",
|
||||
"dateformat": "3.0.3",
|
||||
"debug": "3.1.0",
|
||||
"debug": "4.1.0",
|
||||
"deep-equal": "1.0.1",
|
||||
"deepcopy": "0.6.3",
|
||||
"diskusage": "0.2.4",
|
||||
"dompurify": "1.0.5",
|
||||
"diskusage": "0.2.5",
|
||||
"double-ended-queue": "2.1.0-0",
|
||||
"elasticsearch": "15.1.1",
|
||||
"element-ui": "2.4.6",
|
||||
"emojilib": "2.3.0",
|
||||
"escape-regexp": "0.0.1",
|
||||
"eslint": "5.0.1",
|
||||
"eslint": "5.8.0",
|
||||
"eslint-plugin-vue": "4.7.1",
|
||||
"eventemitter3": "3.1.0",
|
||||
"exif-js": "2.3.0",
|
||||
"file-loader": "1.1.11",
|
||||
"file-type": "9.0.0",
|
||||
"file-loader": "2.0.0",
|
||||
"file-type": "10.2.0",
|
||||
"fuckadblock": "3.2.1",
|
||||
"gulp": "3.9.1",
|
||||
"gulp-cssnano": "2.1.3",
|
||||
"gulp-htmlmin": "4.0.0",
|
||||
"gulp-htmlmin": "5.0.1",
|
||||
"gulp-imagemin": "4.1.0",
|
||||
"gulp-mocha": "6.0.0",
|
||||
"gulp-pug": "4.0.1",
|
||||
@@ -125,41 +129,39 @@
|
||||
"gulp-uglify": "3.0.1",
|
||||
"gulp-util": "3.0.8",
|
||||
"hard-source-webpack-plugin": "0.12.0",
|
||||
"highlight.js": "9.12.0",
|
||||
"html-minifier": "3.5.20",
|
||||
"html-minifier": "3.5.21",
|
||||
"http-signature": "1.2.0",
|
||||
"insert-text-at-cursor": "0.1.1",
|
||||
"is-root": "2.0.0",
|
||||
"is-url": "1.2.4",
|
||||
"jquery": "3.3.1",
|
||||
"js-yaml": "3.12.0",
|
||||
"jsdom": "11.12.0",
|
||||
"koa": "2.5.1",
|
||||
"jsdom": "13.0.0",
|
||||
"json5": "2.1.0",
|
||||
"json5-loader": "1.0.1",
|
||||
"koa": "2.6.1",
|
||||
"koa-bodyparser": "4.2.1",
|
||||
"koa-compress": "3.0.0",
|
||||
"koa-favicon": "2.0.1",
|
||||
"koa-json-body": "5.3.0",
|
||||
"koa-logger": "3.2.0",
|
||||
"koa-mount": "3.0.0",
|
||||
"koa-mount": "4.0.0",
|
||||
"koa-multer": "1.0.2",
|
||||
"koa-router": "7.4.0",
|
||||
"koa-send": "5.0.0",
|
||||
"koa-slow": "2.1.0",
|
||||
"koa-views": "6.1.4",
|
||||
"loader-utils": "1.1.0",
|
||||
"lodash.assign": "4.2.0",
|
||||
"mecab-async": "0.1.2",
|
||||
"minio": "7.0.0",
|
||||
"merge-options": "1.0.1",
|
||||
"minio": "7.0.1",
|
||||
"mkdirp": "0.5.1",
|
||||
"mocha": "5.2.0",
|
||||
"moji": "0.5.1",
|
||||
"mongodb": "3.1.1",
|
||||
"mongodb": "3.1.8",
|
||||
"monk": "6.0.6",
|
||||
"ms": "2.1.1",
|
||||
"nan": "2.10.0",
|
||||
"nan": "2.11.1",
|
||||
"nested-property": "0.0.7",
|
||||
"node-sass": "4.9.3",
|
||||
"node-sass-json-importer": "3.3.1",
|
||||
"nprogress": "0.2.0",
|
||||
"object-assign-deep": "0.4.0",
|
||||
"on-build-webpack": "0.1.0",
|
||||
@@ -167,68 +169,70 @@
|
||||
"parse5": "5.1.0",
|
||||
"portscanner": "2.2.0",
|
||||
"progress-bar-webpack-plugin": "1.11.0",
|
||||
"promise-limit": "2.7.0",
|
||||
"promise-sequential": "1.1.1",
|
||||
"pug": "2.0.3",
|
||||
"punycode": "2.1.1",
|
||||
"qrcode": "1.2.2",
|
||||
"qrcode": "1.3.0",
|
||||
"ratelimiter": "3.2.0",
|
||||
"recaptcha-promise": "0.1.3",
|
||||
"reconnecting-websocket": "3.2.2",
|
||||
"reconnecting-websocket": "4.1.10",
|
||||
"redis": "2.8.0",
|
||||
"request": "2.88.0",
|
||||
"request-promise-native": "1.0.5",
|
||||
"request-stats": "3.0.0",
|
||||
"rimraf": "2.6.2",
|
||||
"rndstr": "1.0.0",
|
||||
"s-age": "1.1.2",
|
||||
"sass-loader": "7.1.0",
|
||||
"seedrandom": "2.4.4",
|
||||
"sharp": "0.20.7",
|
||||
"showdown": "1.8.6",
|
||||
"sharp": "0.21.0",
|
||||
"showdown": "1.8.7",
|
||||
"showdown-highlightjs-extension": "0.1.2",
|
||||
"single-line-log": "1.1.2",
|
||||
"speakeasy": "2.0.0",
|
||||
"stringz": "1.0.0",
|
||||
"style-loader": "0.22.1",
|
||||
"style-loader": "0.23.1",
|
||||
"stylus": "0.54.5",
|
||||
"stylus-loader": "3.0.2",
|
||||
"summaly": "2.1.4",
|
||||
"systeminformation": "3.42.9",
|
||||
"summaly": "2.2.0",
|
||||
"systeminformation": "3.45.9",
|
||||
"syuilo-password-strength": "0.0.1",
|
||||
"textarea-caret": "3.1.0",
|
||||
"tinycolor2": "1.4.1",
|
||||
"tmp": "0.0.33",
|
||||
"ts-loader": "4.4.1",
|
||||
"ts-loader": "5.3.0",
|
||||
"ts-node": "7.0.1",
|
||||
"tslint": "5.10.0",
|
||||
"typescript": "2.9.2",
|
||||
"typescript-eslint-parser": "18.0.0",
|
||||
"typescript": "3.1.4",
|
||||
"typescript-eslint-parser": "20.1.1",
|
||||
"uglify-es": "3.3.9",
|
||||
"url-loader": "1.1.1",
|
||||
"url-loader": "1.1.2",
|
||||
"uuid": "3.3.2",
|
||||
"v-animate-css": "0.0.2",
|
||||
"vue": "2.5.17",
|
||||
"vue-cropperjs": "2.2.1",
|
||||
"vue-js-modal": "1.3.17",
|
||||
"vue-chartjs": "3.4.0",
|
||||
"vue-color": "2.7.0",
|
||||
"vue-content-loading": "1.5.3",
|
||||
"vue-cropperjs": "2.2.2",
|
||||
"vue-js-modal": "1.3.26",
|
||||
"vue-json-tree-view": "2.1.4",
|
||||
"vue-loader": "15.4.0",
|
||||
"vue-loader": "15.4.2",
|
||||
"vue-router": "3.0.1",
|
||||
"vue-style-loader": "4.1.2",
|
||||
"vue-svg-inline-loader": "1.2.1",
|
||||
"vue-sweetalert2": "1.5.6",
|
||||
"vue-template-compiler": "2.5.17",
|
||||
"vuedraggable": "2.16.0",
|
||||
"vuewordcloud": "18.7.11",
|
||||
"vuex": "3.0.1",
|
||||
"vuex-persistedstate": "2.5.4",
|
||||
"web-push": "3.3.2",
|
||||
"web-push": "3.3.3",
|
||||
"webfinger.js": "2.6.6",
|
||||
"webpack": "4.17.0",
|
||||
"webpack-cli": "3.1.0",
|
||||
"websocket": "1.0.26",
|
||||
"ws": "6.0.0",
|
||||
"webpack": "4.23.1",
|
||||
"webpack-cli": "3.1.2",
|
||||
"websocket": "1.0.28",
|
||||
"ws": "6.1.0",
|
||||
"xev": "2.0.1"
|
||||
},
|
||||
"greenkeeper": {
|
||||
"ignore": [
|
||||
"deepcopy",
|
||||
"cafy",
|
||||
"@types/gulp"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
122
src/chart/drive.ts
Normal file
122
src/chart/drive.ts
Normal file
@@ -0,0 +1,122 @@
|
||||
import autobind from 'autobind-decorator';
|
||||
import Chart, { Obj } from './';
|
||||
import DriveFile, { IDriveFile } from '../models/drive-file';
|
||||
import { isLocalUser } from '../models/user';
|
||||
|
||||
/**
|
||||
* ドライブに関するチャート
|
||||
*/
|
||||
type DriveLog = {
|
||||
local: {
|
||||
/**
|
||||
* 集計期間時点での、全ドライブファイル数
|
||||
*/
|
||||
totalCount: number;
|
||||
|
||||
/**
|
||||
* 集計期間時点での、全ドライブファイルの合計サイズ
|
||||
*/
|
||||
totalSize: number;
|
||||
|
||||
/**
|
||||
* 増加したドライブファイル数
|
||||
*/
|
||||
incCount: number;
|
||||
|
||||
/**
|
||||
* 増加したドライブ使用量
|
||||
*/
|
||||
incSize: number;
|
||||
|
||||
/**
|
||||
* 減少したドライブファイル数
|
||||
*/
|
||||
decCount: number;
|
||||
|
||||
/**
|
||||
* 減少したドライブ使用量
|
||||
*/
|
||||
decSize: number;
|
||||
};
|
||||
|
||||
remote: DriveLog['local'];
|
||||
};
|
||||
|
||||
class DriveChart extends Chart<DriveLog> {
|
||||
constructor() {
|
||||
super('drive');
|
||||
}
|
||||
|
||||
@autobind
|
||||
protected async getTemplate(init: boolean, latest?: DriveLog): Promise<DriveLog> {
|
||||
const calcSize = (local: boolean) => DriveFile
|
||||
.aggregate([{
|
||||
$match: {
|
||||
'metadata._user.host': local ? null : { $ne: null },
|
||||
'metadata.deletedAt': { $exists: false }
|
||||
}
|
||||
}, {
|
||||
$project: {
|
||||
length: true
|
||||
}
|
||||
}, {
|
||||
$group: {
|
||||
_id: null,
|
||||
usage: { $sum: '$length' }
|
||||
}
|
||||
}])
|
||||
.then(res => res.length > 0 ? res[0].usage : 0);
|
||||
|
||||
const [localCount, remoteCount, localSize, remoteSize] = init ? await Promise.all([
|
||||
DriveFile.count({ 'metadata._user.host': null }),
|
||||
DriveFile.count({ 'metadata._user.host': { $ne: null } }),
|
||||
calcSize(true),
|
||||
calcSize(false)
|
||||
]) : [
|
||||
latest ? latest.local.totalCount : 0,
|
||||
latest ? latest.remote.totalCount : 0,
|
||||
latest ? latest.local.totalSize : 0,
|
||||
latest ? latest.remote.totalSize : 0
|
||||
];
|
||||
|
||||
return {
|
||||
local: {
|
||||
totalCount: localCount,
|
||||
totalSize: localSize,
|
||||
incCount: 0,
|
||||
incSize: 0,
|
||||
decCount: 0,
|
||||
decSize: 0
|
||||
},
|
||||
remote: {
|
||||
totalCount: remoteCount,
|
||||
totalSize: remoteSize,
|
||||
incCount: 0,
|
||||
incSize: 0,
|
||||
decCount: 0,
|
||||
decSize: 0
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@autobind
|
||||
public async update(file: IDriveFile, isAdditional: boolean) {
|
||||
const update: Obj = {};
|
||||
|
||||
update.totalCount = isAdditional ? 1 : -1;
|
||||
update.totalSize = isAdditional ? file.length : -file.length;
|
||||
if (isAdditional) {
|
||||
update.incCount = 1;
|
||||
update.incSize = file.length;
|
||||
} else {
|
||||
update.decCount = 1;
|
||||
update.decSize = file.length;
|
||||
}
|
||||
|
||||
await this.inc({
|
||||
[isLocalUser(file.metadata._user) ? 'local' : 'remote']: update
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export default new DriveChart();
|
||||
66
src/chart/federation.ts
Normal file
66
src/chart/federation.ts
Normal file
@@ -0,0 +1,66 @@
|
||||
import autobind from 'autobind-decorator';
|
||||
import Chart, { Obj } from '.';
|
||||
import Instance from '../models/instance';
|
||||
|
||||
/**
|
||||
* フェデレーションに関するチャート
|
||||
*/
|
||||
type FederationLog = {
|
||||
instance: {
|
||||
/**
|
||||
* インスタンス数の合計
|
||||
*/
|
||||
total: number;
|
||||
|
||||
/**
|
||||
* 増加インスタンス数
|
||||
*/
|
||||
inc: number;
|
||||
|
||||
/**
|
||||
* 減少インスタンス数
|
||||
*/
|
||||
dec: number;
|
||||
};
|
||||
};
|
||||
|
||||
class FederationChart extends Chart<FederationLog> {
|
||||
constructor() {
|
||||
super('federation');
|
||||
}
|
||||
|
||||
@autobind
|
||||
protected async getTemplate(init: boolean, latest?: FederationLog): Promise<FederationLog> {
|
||||
const [total] = init ? await Promise.all([
|
||||
Instance.count({})
|
||||
]) : [
|
||||
latest ? latest.instance.total : 0
|
||||
];
|
||||
|
||||
return {
|
||||
instance: {
|
||||
total: total,
|
||||
inc: 0,
|
||||
dec: 0
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@autobind
|
||||
public async update(isAdditional: boolean) {
|
||||
const update: Obj = {};
|
||||
|
||||
update.total = isAdditional ? 1 : -1;
|
||||
if (isAdditional) {
|
||||
update.inc = 1;
|
||||
} else {
|
||||
update.dec = 1;
|
||||
}
|
||||
|
||||
await this.inc({
|
||||
instance: update
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export default new FederationChart();
|
||||
56
src/chart/hashtag.ts
Normal file
56
src/chart/hashtag.ts
Normal file
@@ -0,0 +1,56 @@
|
||||
import autobind from 'autobind-decorator';
|
||||
import Chart, { Obj } from './';
|
||||
import { IUser, isLocalUser } from '../models/user';
|
||||
import db from '../db/mongodb';
|
||||
|
||||
/**
|
||||
* ハッシュタグに関するチャート
|
||||
*/
|
||||
type HashtagLog = {
|
||||
local: {
|
||||
/**
|
||||
* 投稿された数
|
||||
*/
|
||||
count: number;
|
||||
};
|
||||
|
||||
remote: HashtagLog['local'];
|
||||
};
|
||||
|
||||
class HashtagChart extends Chart<HashtagLog> {
|
||||
constructor() {
|
||||
super('hashtag', true);
|
||||
|
||||
// 後方互換性のため
|
||||
db.get('chart.hashtag').findOne().then(doc => {
|
||||
if (doc != null && doc.data.local == null) {
|
||||
db.get('chart.hashtag').drop();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@autobind
|
||||
protected async getTemplate(init: boolean, latest?: HashtagLog): Promise<HashtagLog> {
|
||||
return {
|
||||
local: {
|
||||
count: 0
|
||||
},
|
||||
remote: {
|
||||
count: 0
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@autobind
|
||||
public async update(hashtag: string, user: IUser) {
|
||||
const update: Obj = {
|
||||
count: 1
|
||||
};
|
||||
|
||||
await this.incIfUnique({
|
||||
[isLocalUser(user) ? 'local' : 'remote']: update
|
||||
}, 'users', user._id.toHexString(), hashtag);
|
||||
}
|
||||
}
|
||||
|
||||
export default new HashtagChart();
|
||||
306
src/chart/index.ts
Normal file
306
src/chart/index.ts
Normal file
@@ -0,0 +1,306 @@
|
||||
/**
|
||||
* チャートエンジン
|
||||
*/
|
||||
|
||||
const nestedProperty = require('nested-property');
|
||||
import autobind from 'autobind-decorator';
|
||||
import * as mongo from 'mongodb';
|
||||
import db from '../db/mongodb';
|
||||
import { ICollection } from 'monk';
|
||||
|
||||
export type Obj = { [key: string]: any };
|
||||
|
||||
export type Partial<T> = {
|
||||
[P in keyof T]?: Partial<T[P]>;
|
||||
};
|
||||
|
||||
type ArrayValue<T> = {
|
||||
[P in keyof T]: T[P] extends number ? Array<T[P]> : ArrayValue<T[P]>;
|
||||
};
|
||||
|
||||
type Span = 'day' | 'hour';
|
||||
|
||||
type Log<T extends Obj> = {
|
||||
_id: mongo.ObjectID;
|
||||
|
||||
/**
|
||||
* 集計のグループ
|
||||
*/
|
||||
group?: any;
|
||||
|
||||
/**
|
||||
* 集計日時
|
||||
*/
|
||||
date: Date;
|
||||
|
||||
/**
|
||||
* 集計期間
|
||||
*/
|
||||
span: Span;
|
||||
|
||||
/**
|
||||
* データ
|
||||
*/
|
||||
data: T;
|
||||
|
||||
/**
|
||||
* ユニークインクリメント用
|
||||
*/
|
||||
unique?: Obj;
|
||||
};
|
||||
|
||||
/**
|
||||
* 様々なチャートの管理を司るクラス
|
||||
*/
|
||||
export default abstract class Chart<T> {
|
||||
protected collection: ICollection<Log<T>>;
|
||||
protected abstract async getTemplate(init: boolean, latest?: T, group?: any): Promise<T>;
|
||||
|
||||
constructor(name: string, grouped = false) {
|
||||
this.collection = db.get<Log<T>>(`chart.${name}`);
|
||||
if (grouped) {
|
||||
this.collection.createIndex({ span: -1, date: -1, group: -1 }, { unique: true });
|
||||
} else {
|
||||
this.collection.createIndex({ span: -1, date: -1 }, { unique: true });
|
||||
}
|
||||
}
|
||||
|
||||
@autobind
|
||||
private convertQuery(x: Obj, path: string): Obj {
|
||||
const query: Obj = {};
|
||||
|
||||
const dive = (x: Obj, path: string) => {
|
||||
Object.entries(x).forEach(([k, v]) => {
|
||||
const p = path ? `${path}.${k}` : k;
|
||||
if (typeof v === 'number') {
|
||||
query[p] = v;
|
||||
} else {
|
||||
dive(v, p);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
dive(x, path);
|
||||
|
||||
return query;
|
||||
}
|
||||
|
||||
@autobind
|
||||
private getCurrentDate(): [number, number, number, number] {
|
||||
const now = new Date();
|
||||
|
||||
const y = now.getFullYear();
|
||||
const m = now.getMonth();
|
||||
const d = now.getDate();
|
||||
const h = now.getHours();
|
||||
|
||||
return [y, m, d, h];
|
||||
}
|
||||
|
||||
@autobind
|
||||
private getLatestLog(span: Span, group?: any): Promise<Log<T>> {
|
||||
return this.collection.findOne({
|
||||
group: group,
|
||||
span: span
|
||||
}, {
|
||||
sort: {
|
||||
date: -1
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@autobind
|
||||
private async getCurrentLog(span: Span, group?: any): Promise<Log<T>> {
|
||||
const [y, m, d, h] = this.getCurrentDate();
|
||||
|
||||
const current =
|
||||
span == 'day' ? new Date(y, m, d) :
|
||||
span == 'hour' ? new Date(y, m, d, h) :
|
||||
null;
|
||||
|
||||
// 現在(今日または今のHour)のログ
|
||||
const currentLog = await this.collection.findOne({
|
||||
group: group,
|
||||
span: span,
|
||||
date: current
|
||||
});
|
||||
|
||||
// ログがあればそれを返して終了
|
||||
if (currentLog != null) {
|
||||
return currentLog;
|
||||
}
|
||||
|
||||
let log: Log<T>;
|
||||
let data: T;
|
||||
|
||||
// 集計期間が変わってから、初めてのチャート更新なら
|
||||
// 最も最近のログを持ってくる
|
||||
// * 例えば集計期間が「日」である場合で考えると、
|
||||
// * 昨日何もチャートを更新するような出来事がなかった場合は、
|
||||
// * ログがそもそも作られずドキュメントが存在しないということがあり得るため、
|
||||
// * 「昨日の」と決め打ちせずに「もっとも最近の」とします
|
||||
const latest = await this.getLatestLog(span, group);
|
||||
|
||||
if (latest != null) {
|
||||
// 空ログデータを作成
|
||||
data = await this.getTemplate(false, latest.data);
|
||||
} else {
|
||||
// ログが存在しなかったら
|
||||
// (Misskeyインスタンスを建てて初めてのチャート更新時など
|
||||
// または何らかの理由でチャートコレクションを抹消した場合)
|
||||
|
||||
// 初期ログデータを作成
|
||||
data = await this.getTemplate(true, null, group);
|
||||
}
|
||||
|
||||
try {
|
||||
// 新規ログ挿入
|
||||
log = await this.collection.insert({
|
||||
group: group,
|
||||
span: span,
|
||||
date: current,
|
||||
data: data
|
||||
});
|
||||
} catch (e) {
|
||||
// 11000 is duplicate key error
|
||||
// 並列動作している他のチャートエンジンプロセスと処理が重なる場合がある
|
||||
// その場合は再度最も新しいログを持ってくる
|
||||
if (e.code === 11000) {
|
||||
log = await this.getLatestLog(span, group);
|
||||
} else {
|
||||
console.error(e);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
return log;
|
||||
}
|
||||
|
||||
@autobind
|
||||
protected commit(query: Obj, group?: any, uniqueKey?: string, uniqueValue?: string): void {
|
||||
const update = (log: Log<T>) => {
|
||||
// ユニークインクリメントの場合、指定のキーに指定の値が既に存在していたら弾く
|
||||
if (
|
||||
uniqueKey &&
|
||||
log.unique &&
|
||||
log.unique[uniqueKey] &&
|
||||
log.unique[uniqueKey].includes(uniqueValue)
|
||||
) return;
|
||||
|
||||
// ユニークインクリメントの指定のキーに値を追加
|
||||
if (uniqueKey) {
|
||||
query['$push'] = {
|
||||
[`unique.${uniqueKey}`]: uniqueValue
|
||||
};
|
||||
}
|
||||
|
||||
// ログ更新
|
||||
this.collection.update({
|
||||
_id: log._id
|
||||
}, query);
|
||||
};
|
||||
|
||||
this.getCurrentLog('day', group).then(log => update(log));
|
||||
this.getCurrentLog('hour', group).then(log => update(log));
|
||||
}
|
||||
|
||||
@autobind
|
||||
protected inc(inc: Partial<T>, group?: any): void {
|
||||
this.commit({
|
||||
$inc: this.convertQuery(inc, 'data')
|
||||
}, group);
|
||||
}
|
||||
|
||||
@autobind
|
||||
protected incIfUnique(inc: Partial<T>, key: string, value: string, group?: any): void {
|
||||
this.commit({
|
||||
$inc: this.convertQuery(inc, 'data')
|
||||
}, group, key, value);
|
||||
}
|
||||
|
||||
@autobind
|
||||
public async getChart(span: Span, range: number, group?: any): Promise<ArrayValue<T>> {
|
||||
const promisedChart: Promise<T>[] = [];
|
||||
|
||||
const [y, m, d, h] = this.getCurrentDate();
|
||||
|
||||
const gt =
|
||||
span == 'day' ? new Date(y, m, d - range) :
|
||||
span == 'hour' ? new Date(y, m, d, h - range) :
|
||||
null;
|
||||
|
||||
// ログ取得
|
||||
const logs = await this.collection.find({
|
||||
group: group,
|
||||
span: span,
|
||||
date: {
|
||||
$gt: gt
|
||||
}
|
||||
}, {
|
||||
sort: {
|
||||
date: -1
|
||||
},
|
||||
fields: {
|
||||
_id: 0
|
||||
}
|
||||
});
|
||||
|
||||
// 整形
|
||||
for (let i = (range - 1); i >= 0; i--) {
|
||||
const current =
|
||||
span == 'day' ? new Date(y, m, d - i) :
|
||||
span == 'hour' ? new Date(y, m, d, h - i) :
|
||||
null;
|
||||
|
||||
const log = logs.find(l => l.date.getTime() == current.getTime());
|
||||
|
||||
if (log) {
|
||||
promisedChart.unshift(Promise.resolve(log.data));
|
||||
} else {
|
||||
// 隙間埋め
|
||||
const latest = logs.find(l => l.date.getTime() < current.getTime());
|
||||
promisedChart.unshift(this.getTemplate(false, latest ? latest.data : null));
|
||||
}
|
||||
}
|
||||
|
||||
const chart = await Promise.all(promisedChart);
|
||||
|
||||
const res: ArrayValue<T> = {} as any;
|
||||
|
||||
/**
|
||||
* [{
|
||||
* xxxxx: 1,
|
||||
* yyyyy: 5
|
||||
* }, {
|
||||
* xxxxx: 2,
|
||||
* yyyyy: 6
|
||||
* }, {
|
||||
* xxxxx: 3,
|
||||
* yyyyy: 7
|
||||
* }]
|
||||
*
|
||||
* を
|
||||
*
|
||||
* {
|
||||
* xxxxx: [1, 2, 3],
|
||||
* yyyyy: [5, 6, 7]
|
||||
* }
|
||||
*
|
||||
* にする
|
||||
*/
|
||||
const dive = (x: Obj, path?: string) => {
|
||||
Object.entries(x).forEach(([k, v]) => {
|
||||
const p = path ? `${path}.${k}` : k;
|
||||
if (typeof v == 'object') {
|
||||
dive(v, p);
|
||||
} else {
|
||||
nestedProperty.set(res, p, chart.map(s => nestedProperty.get(s, p)));
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
dive(chart[0]);
|
||||
|
||||
return res;
|
||||
}
|
||||
}
|
||||
64
src/chart/network.ts
Normal file
64
src/chart/network.ts
Normal file
@@ -0,0 +1,64 @@
|
||||
import autobind from 'autobind-decorator';
|
||||
import Chart, { Partial } from './';
|
||||
|
||||
/**
|
||||
* ネットワークに関するチャート
|
||||
*/
|
||||
type NetworkLog = {
|
||||
/**
|
||||
* 受信したリクエスト数
|
||||
*/
|
||||
incomingRequests: number;
|
||||
|
||||
/**
|
||||
* 送信したリクエスト数
|
||||
*/
|
||||
outgoingRequests: number;
|
||||
|
||||
/**
|
||||
* 応答時間の合計
|
||||
* TIP: (totalTime / incomingRequests) でひとつのリクエストに平均でどれくらいの時間がかかったか知れる
|
||||
*/
|
||||
totalTime: number;
|
||||
|
||||
/**
|
||||
* 合計受信データ量
|
||||
*/
|
||||
incomingBytes: number;
|
||||
|
||||
/**
|
||||
* 合計送信データ量
|
||||
*/
|
||||
outgoingBytes: number;
|
||||
};
|
||||
|
||||
class NetworkChart extends Chart<NetworkLog> {
|
||||
constructor() {
|
||||
super('network');
|
||||
}
|
||||
|
||||
@autobind
|
||||
protected async getTemplate(init: boolean, latest?: NetworkLog): Promise<NetworkLog> {
|
||||
return {
|
||||
incomingRequests: 0,
|
||||
outgoingRequests: 0,
|
||||
totalTime: 0,
|
||||
incomingBytes: 0,
|
||||
outgoingBytes: 0
|
||||
};
|
||||
}
|
||||
|
||||
@autobind
|
||||
public async update(incomingRequests: number, time: number, incomingBytes: number, outgoingBytes: number) {
|
||||
const inc: Partial<NetworkLog> = {
|
||||
incomingRequests: incomingRequests,
|
||||
totalTime: time,
|
||||
incomingBytes: incomingBytes,
|
||||
outgoingBytes: outgoingBytes
|
||||
};
|
||||
|
||||
await this.inc(inc);
|
||||
}
|
||||
}
|
||||
|
||||
export default new NetworkChart();
|
||||
114
src/chart/notes.ts
Normal file
114
src/chart/notes.ts
Normal file
@@ -0,0 +1,114 @@
|
||||
import autobind from 'autobind-decorator';
|
||||
import Chart, { Obj } from '.';
|
||||
import Note, { INote } from '../models/note';
|
||||
import { isLocalUser } from '../models/user';
|
||||
|
||||
/**
|
||||
* 投稿に関するチャート
|
||||
*/
|
||||
type NotesLog = {
|
||||
local: {
|
||||
/**
|
||||
* 集計期間時点での、全投稿数
|
||||
*/
|
||||
total: number;
|
||||
|
||||
/**
|
||||
* 増加した投稿数
|
||||
*/
|
||||
inc: number;
|
||||
|
||||
/**
|
||||
* 減少した投稿数
|
||||
*/
|
||||
dec: number;
|
||||
|
||||
diffs: {
|
||||
/**
|
||||
* 通常の投稿数の差分
|
||||
*/
|
||||
normal: number;
|
||||
|
||||
/**
|
||||
* リプライの投稿数の差分
|
||||
*/
|
||||
reply: number;
|
||||
|
||||
/**
|
||||
* Renoteの投稿数の差分
|
||||
*/
|
||||
renote: number;
|
||||
};
|
||||
};
|
||||
|
||||
remote: NotesLog['local'];
|
||||
};
|
||||
|
||||
class NotesChart extends Chart<NotesLog> {
|
||||
constructor() {
|
||||
super('notes');
|
||||
}
|
||||
|
||||
@autobind
|
||||
protected async getTemplate(init: boolean, latest?: NotesLog): Promise<NotesLog> {
|
||||
const [localCount, remoteCount] = init ? await Promise.all([
|
||||
Note.count({ '_user.host': null }),
|
||||
Note.count({ '_user.host': { $ne: null } })
|
||||
]) : [
|
||||
latest ? latest.local.total : 0,
|
||||
latest ? latest.remote.total : 0
|
||||
];
|
||||
|
||||
return {
|
||||
local: {
|
||||
total: localCount,
|
||||
inc: 0,
|
||||
dec: 0,
|
||||
diffs: {
|
||||
normal: 0,
|
||||
reply: 0,
|
||||
renote: 0
|
||||
}
|
||||
},
|
||||
remote: {
|
||||
total: remoteCount,
|
||||
inc: 0,
|
||||
dec: 0,
|
||||
diffs: {
|
||||
normal: 0,
|
||||
reply: 0,
|
||||
renote: 0
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@autobind
|
||||
public async update(note: INote, isAdditional: boolean) {
|
||||
const update: Obj = {
|
||||
diffs: {}
|
||||
};
|
||||
|
||||
update.total = isAdditional ? 1 : -1;
|
||||
|
||||
if (isAdditional) {
|
||||
update.inc = 1;
|
||||
} else {
|
||||
update.dec = 1;
|
||||
}
|
||||
|
||||
if (note.replyId != null) {
|
||||
update.diffs.reply = isAdditional ? 1 : -1;
|
||||
} else if (note.renoteId != null) {
|
||||
update.diffs.renote = isAdditional ? 1 : -1;
|
||||
} else {
|
||||
update.diffs.normal = isAdditional ? 1 : -1;
|
||||
}
|
||||
|
||||
await this.inc({
|
||||
[isLocalUser(note._user) ? 'local' : 'remote']: update
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export default new NotesChart();
|
||||
101
src/chart/per-user-drive.ts
Normal file
101
src/chart/per-user-drive.ts
Normal file
@@ -0,0 +1,101 @@
|
||||
import autobind from 'autobind-decorator';
|
||||
import Chart, { Obj } from './';
|
||||
import DriveFile, { IDriveFile } from '../models/drive-file';
|
||||
|
||||
/**
|
||||
* ユーザーごとのドライブに関するチャート
|
||||
*/
|
||||
type PerUserDriveLog = {
|
||||
/**
|
||||
* 集計期間時点での、全ドライブファイル数
|
||||
*/
|
||||
totalCount: number;
|
||||
|
||||
/**
|
||||
* 集計期間時点での、全ドライブファイルの合計サイズ
|
||||
*/
|
||||
totalSize: number;
|
||||
|
||||
/**
|
||||
* 増加したドライブファイル数
|
||||
*/
|
||||
incCount: number;
|
||||
|
||||
/**
|
||||
* 増加したドライブ使用量
|
||||
*/
|
||||
incSize: number;
|
||||
|
||||
/**
|
||||
* 減少したドライブファイル数
|
||||
*/
|
||||
decCount: number;
|
||||
|
||||
/**
|
||||
* 減少したドライブ使用量
|
||||
*/
|
||||
decSize: number;
|
||||
};
|
||||
|
||||
class PerUserDriveChart extends Chart<PerUserDriveLog> {
|
||||
constructor() {
|
||||
super('perUserDrive', true);
|
||||
}
|
||||
|
||||
@autobind
|
||||
protected async getTemplate(init: boolean, latest?: PerUserDriveLog, group?: any): Promise<PerUserDriveLog> {
|
||||
const calcSize = () => DriveFile
|
||||
.aggregate([{
|
||||
$match: {
|
||||
'metadata.userId': group,
|
||||
'metadata.deletedAt': { $exists: false }
|
||||
}
|
||||
}, {
|
||||
$project: {
|
||||
length: true
|
||||
}
|
||||
}, {
|
||||
$group: {
|
||||
_id: null,
|
||||
usage: { $sum: '$length' }
|
||||
}
|
||||
}])
|
||||
.then(res => res.length > 0 ? res[0].usage : 0);
|
||||
|
||||
const [count, size] = init ? await Promise.all([
|
||||
DriveFile.count({ 'metadata.userId': group }),
|
||||
calcSize()
|
||||
]) : [
|
||||
latest ? latest.totalCount : 0,
|
||||
latest ? latest.totalSize : 0
|
||||
];
|
||||
|
||||
return {
|
||||
totalCount: count,
|
||||
totalSize: size,
|
||||
incCount: 0,
|
||||
incSize: 0,
|
||||
decCount: 0,
|
||||
decSize: 0
|
||||
};
|
||||
}
|
||||
|
||||
@autobind
|
||||
public async update(file: IDriveFile, isAdditional: boolean) {
|
||||
const update: Obj = {};
|
||||
|
||||
update.totalCount = isAdditional ? 1 : -1;
|
||||
update.totalSize = isAdditional ? file.length : -file.length;
|
||||
if (isAdditional) {
|
||||
update.incCount = 1;
|
||||
update.incSize = file.length;
|
||||
} else {
|
||||
update.decCount = 1;
|
||||
update.decSize = file.length;
|
||||
}
|
||||
|
||||
await this.inc(update, file.metadata.userId);
|
||||
}
|
||||
}
|
||||
|
||||
export default new PerUserDriveChart();
|
||||
128
src/chart/per-user-following.ts
Normal file
128
src/chart/per-user-following.ts
Normal file
@@ -0,0 +1,128 @@
|
||||
import autobind from 'autobind-decorator';
|
||||
import Chart, { Obj } from './';
|
||||
import Following from '../models/following';
|
||||
import { IUser, isLocalUser } from '../models/user';
|
||||
|
||||
/**
|
||||
* ユーザーごとのフォローに関するチャート
|
||||
*/
|
||||
type PerUserFollowingLog = {
|
||||
local: {
|
||||
/**
|
||||
* フォローしている
|
||||
*/
|
||||
followings: {
|
||||
/**
|
||||
* 合計
|
||||
*/
|
||||
total: number;
|
||||
|
||||
/**
|
||||
* フォローした数
|
||||
*/
|
||||
inc: number;
|
||||
|
||||
/**
|
||||
* フォロー解除した数
|
||||
*/
|
||||
dec: number;
|
||||
};
|
||||
|
||||
/**
|
||||
* フォローされている
|
||||
*/
|
||||
followers: {
|
||||
/**
|
||||
* 合計
|
||||
*/
|
||||
total: number;
|
||||
|
||||
/**
|
||||
* フォローされた数
|
||||
*/
|
||||
inc: number;
|
||||
|
||||
/**
|
||||
* フォロー解除された数
|
||||
*/
|
||||
dec: number;
|
||||
};
|
||||
};
|
||||
|
||||
remote: PerUserFollowingLog['local'];
|
||||
};
|
||||
|
||||
class PerUserFollowingChart extends Chart<PerUserFollowingLog> {
|
||||
constructor() {
|
||||
super('perUserFollowing', true);
|
||||
}
|
||||
|
||||
@autobind
|
||||
protected async getTemplate(init: boolean, latest?: PerUserFollowingLog, group?: any): Promise<PerUserFollowingLog> {
|
||||
const [
|
||||
localFollowingsCount,
|
||||
localFollowersCount,
|
||||
remoteFollowingsCount,
|
||||
remoteFollowersCount
|
||||
] = init ? await Promise.all([
|
||||
Following.count({ followerId: group, '_followee.host': null }),
|
||||
Following.count({ followeeId: group, '_follower.host': null }),
|
||||
Following.count({ followerId: group, '_followee.host': { $ne: null } }),
|
||||
Following.count({ followeeId: group, '_follower.host': { $ne: null } })
|
||||
]) : [
|
||||
latest ? latest.local.followings.total : 0,
|
||||
latest ? latest.local.followers.total : 0,
|
||||
latest ? latest.remote.followings.total : 0,
|
||||
latest ? latest.remote.followers.total : 0
|
||||
];
|
||||
|
||||
return {
|
||||
local: {
|
||||
followings: {
|
||||
total: localFollowingsCount,
|
||||
inc: 0,
|
||||
dec: 0
|
||||
},
|
||||
followers: {
|
||||
total: localFollowersCount,
|
||||
inc: 0,
|
||||
dec: 0
|
||||
}
|
||||
},
|
||||
remote: {
|
||||
followings: {
|
||||
total: remoteFollowingsCount,
|
||||
inc: 0,
|
||||
dec: 0
|
||||
},
|
||||
followers: {
|
||||
total: remoteFollowersCount,
|
||||
inc: 0,
|
||||
dec: 0
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@autobind
|
||||
public async update(follower: IUser, followee: IUser, isFollow: boolean) {
|
||||
const update: Obj = {};
|
||||
|
||||
update.total = isFollow ? 1 : -1;
|
||||
|
||||
if (isFollow) {
|
||||
update.inc = 1;
|
||||
} else {
|
||||
update.dec = 1;
|
||||
}
|
||||
|
||||
this.inc({
|
||||
[isLocalUser(follower) ? 'local' : 'remote']: { followings: update }
|
||||
}, follower._id);
|
||||
this.inc({
|
||||
[isLocalUser(followee) ? 'local' : 'remote']: { followers: update }
|
||||
}, followee._id);
|
||||
}
|
||||
}
|
||||
|
||||
export default new PerUserFollowingChart();
|
||||
94
src/chart/per-user-notes.ts
Normal file
94
src/chart/per-user-notes.ts
Normal file
@@ -0,0 +1,94 @@
|
||||
import autobind from 'autobind-decorator';
|
||||
import Chart, { Obj } from './';
|
||||
import Note, { INote } from '../models/note';
|
||||
import { IUser } from '../models/user';
|
||||
|
||||
/**
|
||||
* ユーザーごとの投稿に関するチャート
|
||||
*/
|
||||
type PerUserNotesLog = {
|
||||
/**
|
||||
* 集計期間時点での、全投稿数
|
||||
*/
|
||||
total: number;
|
||||
|
||||
/**
|
||||
* 増加した投稿数
|
||||
*/
|
||||
inc: number;
|
||||
|
||||
/**
|
||||
* 減少した投稿数
|
||||
*/
|
||||
dec: number;
|
||||
|
||||
diffs: {
|
||||
/**
|
||||
* 通常の投稿数の差分
|
||||
*/
|
||||
normal: number;
|
||||
|
||||
/**
|
||||
* リプライの投稿数の差分
|
||||
*/
|
||||
reply: number;
|
||||
|
||||
/**
|
||||
* Renoteの投稿数の差分
|
||||
*/
|
||||
renote: number;
|
||||
};
|
||||
};
|
||||
|
||||
class PerUserNotesChart extends Chart<PerUserNotesLog> {
|
||||
constructor() {
|
||||
super('perUserNotes', true);
|
||||
}
|
||||
|
||||
@autobind
|
||||
protected async getTemplate(init: boolean, latest?: PerUserNotesLog, group?: any): Promise<PerUserNotesLog> {
|
||||
const [count] = init ? await Promise.all([
|
||||
Note.count({ userId: group, deletedAt: null }),
|
||||
]) : [
|
||||
latest ? latest.total : 0
|
||||
];
|
||||
|
||||
return {
|
||||
total: count,
|
||||
inc: 0,
|
||||
dec: 0,
|
||||
diffs: {
|
||||
normal: 0,
|
||||
reply: 0,
|
||||
renote: 0
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@autobind
|
||||
public async update(user: IUser, note: INote, isAdditional: boolean) {
|
||||
const update: Obj = {
|
||||
diffs: {}
|
||||
};
|
||||
|
||||
update.total = isAdditional ? 1 : -1;
|
||||
|
||||
if (isAdditional) {
|
||||
update.inc = 1;
|
||||
} else {
|
||||
update.dec = 1;
|
||||
}
|
||||
|
||||
if (note.replyId != null) {
|
||||
update.diffs.reply = isAdditional ? 1 : -1;
|
||||
} else if (note.renoteId != null) {
|
||||
update.diffs.renote = isAdditional ? 1 : -1;
|
||||
} else {
|
||||
update.diffs.normal = isAdditional ? 1 : -1;
|
||||
}
|
||||
|
||||
await this.inc(update, user._id);
|
||||
}
|
||||
}
|
||||
|
||||
export default new PerUserNotesChart();
|
||||
45
src/chart/per-user-reactions.ts
Normal file
45
src/chart/per-user-reactions.ts
Normal file
@@ -0,0 +1,45 @@
|
||||
import autobind from 'autobind-decorator';
|
||||
import Chart from './';
|
||||
import { IUser, isLocalUser } from '../models/user';
|
||||
import { INote } from '../models/note';
|
||||
|
||||
/**
|
||||
* ユーザーごとのリアクションに関するチャート
|
||||
*/
|
||||
type PerUserReactionsLog = {
|
||||
local: {
|
||||
/**
|
||||
* リアクションされた数
|
||||
*/
|
||||
count: number;
|
||||
};
|
||||
|
||||
remote: PerUserReactionsLog['local'];
|
||||
};
|
||||
|
||||
class PerUserReactionsChart extends Chart<PerUserReactionsLog> {
|
||||
constructor() {
|
||||
super('perUserReaction', true);
|
||||
}
|
||||
|
||||
@autobind
|
||||
protected async getTemplate(init: boolean, latest?: PerUserReactionsLog, group?: any): Promise<PerUserReactionsLog> {
|
||||
return {
|
||||
local: {
|
||||
count: 0
|
||||
},
|
||||
remote: {
|
||||
count: 0
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@autobind
|
||||
public async update(user: IUser, note: INote) {
|
||||
this.inc({
|
||||
[isLocalUser(user) ? 'local' : 'remote']: { count: 1 }
|
||||
}, note.userId);
|
||||
}
|
||||
}
|
||||
|
||||
export default new PerUserReactionsChart();
|
||||
75
src/chart/users.ts
Normal file
75
src/chart/users.ts
Normal file
@@ -0,0 +1,75 @@
|
||||
import autobind from 'autobind-decorator';
|
||||
import Chart, { Obj } from './';
|
||||
import User, { IUser, isLocalUser } from '../models/user';
|
||||
|
||||
/**
|
||||
* ユーザーに関するチャート
|
||||
*/
|
||||
type UsersLog = {
|
||||
local: {
|
||||
/**
|
||||
* 集計期間時点での、全ユーザー数
|
||||
*/
|
||||
total: number;
|
||||
|
||||
/**
|
||||
* 増加したユーザー数
|
||||
*/
|
||||
inc: number;
|
||||
|
||||
/**
|
||||
* 減少したユーザー数
|
||||
*/
|
||||
dec: number;
|
||||
};
|
||||
|
||||
remote: UsersLog['local'];
|
||||
};
|
||||
|
||||
class UsersChart extends Chart<UsersLog> {
|
||||
constructor() {
|
||||
super('users');
|
||||
}
|
||||
|
||||
@autobind
|
||||
protected async getTemplate(init: boolean, latest?: UsersLog): Promise<UsersLog> {
|
||||
const [localCount, remoteCount] = init ? await Promise.all([
|
||||
User.count({ host: null }),
|
||||
User.count({ host: { $ne: null } })
|
||||
]) : [
|
||||
latest ? latest.local.total : 0,
|
||||
latest ? latest.remote.total : 0
|
||||
];
|
||||
|
||||
return {
|
||||
local: {
|
||||
total: localCount,
|
||||
inc: 0,
|
||||
dec: 0
|
||||
},
|
||||
remote: {
|
||||
total: remoteCount,
|
||||
inc: 0,
|
||||
dec: 0
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@autobind
|
||||
public async update(user: IUser, isAdditional: boolean) {
|
||||
const update: Obj = {};
|
||||
|
||||
update.total = isAdditional ? 1 : -1;
|
||||
if (isAdditional) {
|
||||
update.inc = 1;
|
||||
} else {
|
||||
update.dec = 1;
|
||||
}
|
||||
|
||||
await this.inc({
|
||||
[isLocalUser(user) ? 'local' : 'remote']: update
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export default new UsersChart();
|
||||
@@ -6,6 +6,10 @@ html
|
||||
&, *
|
||||
cursor progress !important
|
||||
|
||||
html
|
||||
// iOSのため
|
||||
overflow auto
|
||||
|
||||
body
|
||||
overflow-wrap break-word
|
||||
|
||||
@@ -23,7 +27,7 @@ body
|
||||
z-index 65536
|
||||
|
||||
.bar
|
||||
background $theme-color
|
||||
background var(--primary)
|
||||
|
||||
position fixed
|
||||
z-index 65537
|
||||
@@ -40,7 +44,7 @@ body
|
||||
right 0px
|
||||
width 100px
|
||||
height 100%
|
||||
box-shadow 0 0 10px $theme-color, 0 0 5px $theme-color
|
||||
box-shadow 0 0 10px var(--primary), 0 0 5px var(--primary)
|
||||
opacity 1
|
||||
|
||||
transform rotate(3deg) translate(0px, -4px)
|
||||
@@ -60,8 +64,8 @@ body
|
||||
box-sizing border-box
|
||||
|
||||
border solid 2px transparent
|
||||
border-top-color $theme-color
|
||||
border-left-color $theme-color
|
||||
border-top-color var(--primary)
|
||||
border-left-color var(--primary)
|
||||
border-radius 50%
|
||||
|
||||
animation progress-spinner 400ms linear infinite
|
||||
@@ -126,3 +130,29 @@ pre
|
||||
|
||||
[data-fa]
|
||||
display inline-block
|
||||
|
||||
.swal2-container
|
||||
z-index 10000 !important
|
||||
|
||||
&.swal2-shown
|
||||
background-color rgba(0, 0, 0, 0.5) !important
|
||||
|
||||
.swal2-popup
|
||||
background var(--face) !important
|
||||
|
||||
.swal2-content
|
||||
color var(--text) !important
|
||||
|
||||
.swal2-confirm
|
||||
background-color var(--primary) !important
|
||||
border-left-color var(--primary) !important
|
||||
border-right-color var(--primary) !important
|
||||
color var(--primaryForeground) !important
|
||||
|
||||
&:hover
|
||||
background-image none !important
|
||||
background-color var(--primaryDarken5) !important
|
||||
|
||||
&:active
|
||||
background-image none !important
|
||||
background-color var(--primaryDarken5) !important
|
||||
|
||||
@@ -1,3 +1,32 @@
|
||||
<template>
|
||||
<router-view id="app"></router-view>
|
||||
<router-view id="app" v-hotkey.global="keymap"></router-view>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import { url, lang } from './config';
|
||||
|
||||
export default Vue.extend({
|
||||
computed: {
|
||||
keymap(): any {
|
||||
return {
|
||||
'h|slash': this.help,
|
||||
'd': this.dark
|
||||
};
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
help() {
|
||||
window.open(`${url}/docs/${lang}/keyboard-shortcut`, '_blank');
|
||||
},
|
||||
|
||||
dark() {
|
||||
this.$store.commit('device/set', {
|
||||
key: 'darkmode',
|
||||
value: !this.$store.state.device.darkmode
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -80,7 +80,7 @@ export default Vue.extend({
|
||||
accepted() {
|
||||
this.state = 'accepted';
|
||||
if (this.session.app.callbackUrl) {
|
||||
location.href = this.session.app.callbackUrl + '?token=' + this.session.token;
|
||||
location.href = `${this.session.app.callbackUrl}?token=${this.session.token}`;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,9 +34,6 @@ html
|
||||
//- FontAwesome style
|
||||
style #{facss}
|
||||
|
||||
//- highlight.js style
|
||||
style #{hljscss}
|
||||
|
||||
body
|
||||
noscript: p
|
||||
| JavaScriptを有効にしてください
|
||||
|
||||
@@ -18,6 +18,17 @@
|
||||
return;
|
||||
}
|
||||
|
||||
const langs = LANGS;
|
||||
|
||||
//#region Apply theme
|
||||
const theme = localStorage.getItem('theme');
|
||||
if (theme) {
|
||||
Object.entries(JSON.parse(theme)).forEach(([k, v]) => {
|
||||
document.documentElement.style.setProperty(`--${k}`, v.toString());
|
||||
});
|
||||
}
|
||||
//#endregion
|
||||
|
||||
//#region Load settings
|
||||
let settings = null;
|
||||
const vuex = localStorage.getItem('vuex');
|
||||
@@ -40,10 +51,10 @@
|
||||
//#region Detect the user language
|
||||
let lang = null;
|
||||
|
||||
if (LANGS.includes(navigator.language)) {
|
||||
if (langs.includes(navigator.language)) {
|
||||
lang = navigator.language;
|
||||
} else {
|
||||
lang = LANGS.find(x => x.split('-')[0] == navigator.language);
|
||||
lang = langs.find(x => x.split('-')[0] == navigator.language);
|
||||
|
||||
if (lang == null) {
|
||||
// Fallback
|
||||
@@ -51,8 +62,9 @@
|
||||
}
|
||||
}
|
||||
|
||||
if (settings) {
|
||||
if (settings.device.lang) lang = settings.device.lang;
|
||||
if (settings && settings.device.lang &&
|
||||
langs.includes(settings.device.lang)) {
|
||||
lang = settings.device.lang;
|
||||
}
|
||||
//#endregion
|
||||
|
||||
@@ -81,19 +93,12 @@
|
||||
app = isMobile ? 'mobile' : 'desktop';
|
||||
}
|
||||
|
||||
// Dark/Light
|
||||
if (settings) {
|
||||
if (settings.device.darkmode) {
|
||||
document.documentElement.setAttribute('data-darkmode', 'true');
|
||||
}
|
||||
}
|
||||
|
||||
// Script version
|
||||
const ver = localStorage.getItem('v') || VERSION;
|
||||
|
||||
// Get salt query
|
||||
const salt = localStorage.getItem('salt')
|
||||
? '?salt=' + localStorage.getItem('salt')
|
||||
? `?salt=${localStorage.getItem('salt')}`
|
||||
: '';
|
||||
|
||||
// Load an app script
|
||||
@@ -137,9 +142,9 @@
|
||||
localStorage.setItem('shouldFlush', 'false');
|
||||
|
||||
// Random
|
||||
localStorage.setItem('salt', Math.random().toString());
|
||||
localStorage.setItem('salt', Math.random().toString().substr(2, 8));
|
||||
|
||||
// Clear cache (serive worker)
|
||||
// Clear cache (service worker)
|
||||
try {
|
||||
navigator.serviceWorker.controller.postMessage('clear');
|
||||
|
||||
|
||||
110
src/client/app/common/hotkey.ts
Normal file
110
src/client/app/common/hotkey.ts
Normal file
@@ -0,0 +1,110 @@
|
||||
import keyCode from './keycode';
|
||||
import { concat } from '../../../prelude/array';
|
||||
|
||||
type pattern = {
|
||||
which: string[];
|
||||
ctrl?: boolean;
|
||||
shift?: boolean;
|
||||
alt?: boolean;
|
||||
};
|
||||
|
||||
type action = {
|
||||
patterns: pattern[];
|
||||
|
||||
callback: Function;
|
||||
};
|
||||
|
||||
const getKeyMap = keymap => Object.entries(keymap).map(([patterns, callback]): action => {
|
||||
const result = {
|
||||
patterns: [],
|
||||
callback: callback
|
||||
} as action;
|
||||
|
||||
result.patterns = patterns.split('|').map(part => {
|
||||
const pattern = {
|
||||
which: [],
|
||||
ctrl: false,
|
||||
alt: false,
|
||||
shift: false
|
||||
} as pattern;
|
||||
|
||||
part.trim().split('+').forEach(key => {
|
||||
key = key.trim().toLowerCase();
|
||||
switch (key) {
|
||||
case 'ctrl': pattern.ctrl = true; break;
|
||||
case 'alt': pattern.alt = true; break;
|
||||
case 'shift': pattern.shift = true; break;
|
||||
default: pattern.which = keyCode(key).map(k => k.toLowerCase());
|
||||
}
|
||||
});
|
||||
|
||||
return pattern;
|
||||
});
|
||||
|
||||
return result;
|
||||
});
|
||||
|
||||
const ignoreElemens = ['input', 'textarea'];
|
||||
|
||||
function match(e: KeyboardEvent, patterns: action['patterns']): boolean {
|
||||
const key = e.code.toLowerCase();
|
||||
return patterns.some(pattern => pattern.which.includes(key) &&
|
||||
pattern.ctrl == e.ctrlKey &&
|
||||
pattern.shift == e.shiftKey &&
|
||||
pattern.alt == e.altKey &&
|
||||
e.metaKey == false
|
||||
);
|
||||
}
|
||||
|
||||
export default {
|
||||
install(Vue) {
|
||||
Vue.directive('hotkey', {
|
||||
bind(el, binding) {
|
||||
el._hotkey_global = binding.modifiers.global === true;
|
||||
|
||||
const actions = getKeyMap(binding.value);
|
||||
|
||||
// flatten
|
||||
const reservedKeys = concat(actions.map(a => a.patterns));
|
||||
|
||||
el._misskey_reservedKeys = reservedKeys;
|
||||
|
||||
el._keyHandler = (e: KeyboardEvent) => {
|
||||
const targetReservedKeys = document.activeElement ? ((document.activeElement as any)._misskey_reservedKeys || []) : [];
|
||||
if (document.activeElement && ignoreElemens.some(el => document.activeElement.matches(el))) return;
|
||||
|
||||
for (const action of actions) {
|
||||
const matched = match(e, action.patterns);
|
||||
|
||||
if (matched) {
|
||||
if (el._hotkey_global) {
|
||||
if (match(e, targetReservedKeys)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
action.callback(e);
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
if (el._hotkey_global) {
|
||||
document.addEventListener('keydown', el._keyHandler);
|
||||
} else {
|
||||
el.addEventListener('keydown', el._keyHandler);
|
||||
}
|
||||
},
|
||||
|
||||
unbind(el) {
|
||||
if (el._hotkey_global) {
|
||||
document.removeEventListener('keydown', el._keyHandler);
|
||||
} else {
|
||||
el.removeEventListener('keydown', el._keyHandler);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
33
src/client/app/common/keycode.ts
Normal file
33
src/client/app/common/keycode.ts
Normal file
@@ -0,0 +1,33 @@
|
||||
export default (input: string): string[] => {
|
||||
if (Object.keys(aliases).some(a => a.toLowerCase() == input.toLowerCase())) {
|
||||
const codes = aliases[input];
|
||||
return Array.isArray(codes) ? codes : [codes];
|
||||
} else {
|
||||
return [input];
|
||||
}
|
||||
};
|
||||
|
||||
export const aliases = {
|
||||
'esc': 'Escape',
|
||||
'enter': ['Enter', 'NumpadEnter'],
|
||||
'up': 'ArrowUp',
|
||||
'down': 'ArrowDown',
|
||||
'left': 'ArrowLeft',
|
||||
'right': 'ArrowRight',
|
||||
'plus': ['NumpadAdd', 'Semicolon'],
|
||||
};
|
||||
|
||||
/*!
|
||||
* Programatically add the following
|
||||
*/
|
||||
|
||||
// lower case chars
|
||||
for (let i = 97; i < 123; i++) {
|
||||
const char = String.fromCharCode(i);
|
||||
aliases[char] = `Key${char.toUpperCase()}`;
|
||||
}
|
||||
|
||||
// numbers
|
||||
for (let i = 0; i < 10; i++) {
|
||||
aliases[i] = [`Numpad${i}`, `Digit${i}`];
|
||||
}
|
||||
@@ -9,7 +9,7 @@ export default async function(mios: MiOS, force = false, silent = false) {
|
||||
localStorage.setItem('should-refresh', 'true');
|
||||
localStorage.setItem('v', newer);
|
||||
|
||||
// Clear cache (serive worker)
|
||||
// Clear cache (service worker)
|
||||
try {
|
||||
if (navigator.serviceWorker.controller) {
|
||||
navigator.serviceWorker.controller.postMessage('clear');
|
||||
|
||||
@@ -13,21 +13,21 @@ type Notification = {
|
||||
|
||||
export default function(type, data): Notification {
|
||||
switch (type) {
|
||||
case 'drive_file_created':
|
||||
case 'driveFileCreated':
|
||||
return {
|
||||
title: '%i18n:common.notification.file-uploaded%',
|
||||
body: data.name,
|
||||
icon: data.url
|
||||
};
|
||||
|
||||
case 'unread_messaging_message':
|
||||
case 'unreadMessagingMessage':
|
||||
return {
|
||||
title: '%i18n:common.notification.message-from%'.split("{}")[0] + `${getUserName(data.user)}` + '%i18n:common.notification.message-from%'.split("{}")[1] ,
|
||||
body: data.text, // TODO: getMessagingMessageSummary(data),
|
||||
icon: data.user.avatarUrl
|
||||
};
|
||||
|
||||
case 'reversi_invited':
|
||||
case 'reversiInvited':
|
||||
return {
|
||||
title: '%i18n:common.notification.reversi-invited%',
|
||||
body: '%i18n:common.notification.reversi-invited-by%'.split("{}")[0] + `${getUserName(data.parent)}` + '%i18n:common.notification.reversi-invited-by%'.split("{}")[1],
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
require('fuckadblock');
|
||||
|
||||
declare const fuckAdBlock: any;
|
||||
|
||||
export default (os) => {
|
||||
require('fuckadblock');
|
||||
|
||||
function adBlockDetected() {
|
||||
os.apis.dialog({
|
||||
title: '%fa:exclamation-triangle%%i18n:common.adblock.detected%',
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
const gcd = (a, b) => !b ? a : gcd(b, a % b);
|
||||
export default gcd;
|
||||
8
src/client/app/common/scripts/get-md5.ts
Normal file
8
src/client/app/common/scripts/get-md5.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
const crypto = require('crypto');
|
||||
|
||||
export default (data: ArrayBuffer) => {
|
||||
const buf = new Buffer(data);
|
||||
const hash = crypto.createHash("md5");
|
||||
hash.update(buf);
|
||||
return hash.digest("hex");
|
||||
};
|
||||
178
src/client/app/common/scripts/note-mixin.ts
Normal file
178
src/client/app/common/scripts/note-mixin.ts
Normal file
@@ -0,0 +1,178 @@
|
||||
import parse from '../../../../mfm/parse';
|
||||
import { sum } from '../../../../prelude/array';
|
||||
import MkNoteMenu from '../views/components/note-menu.vue';
|
||||
import MkReactionPicker from '../views/components/reaction-picker.vue';
|
||||
import Ok from '../views/components/ok.vue';
|
||||
|
||||
function focus(el, fn) {
|
||||
const target = fn(el);
|
||||
if (target) {
|
||||
if (target.hasAttribute('tabindex')) {
|
||||
target.focus();
|
||||
} else {
|
||||
focus(target, fn);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
type Opts = {
|
||||
mobile?: boolean;
|
||||
};
|
||||
|
||||
export default (opts: Opts = {}) => ({
|
||||
data() {
|
||||
return {
|
||||
showContent: false
|
||||
};
|
||||
},
|
||||
|
||||
computed: {
|
||||
keymap(): any {
|
||||
return {
|
||||
'r': () => this.reply(true),
|
||||
'e|a|plus': () => this.react(true),
|
||||
'q': () => this.renote(true),
|
||||
'f|b': this.favorite,
|
||||
'delete|ctrl+d': this.del,
|
||||
'ctrl+q': this.renoteDirectly,
|
||||
'up|k|shift+tab': this.focusBefore,
|
||||
'down|j|tab': this.focusAfter,
|
||||
'esc': this.blur,
|
||||
'm|o': () => this.menu(true),
|
||||
's': this.toggleShowContent,
|
||||
'1': () => this.reactDirectly('like'),
|
||||
'2': () => this.reactDirectly('love'),
|
||||
'3': () => this.reactDirectly('laugh'),
|
||||
'4': () => this.reactDirectly('hmm'),
|
||||
'5': () => this.reactDirectly('surprise'),
|
||||
'6': () => this.reactDirectly('congrats'),
|
||||
'7': () => this.reactDirectly('angry'),
|
||||
'8': () => this.reactDirectly('confused'),
|
||||
'9': () => this.reactDirectly('rip'),
|
||||
'0': () => this.reactDirectly('pudding'),
|
||||
};
|
||||
},
|
||||
|
||||
isRenote(): boolean {
|
||||
return (this.note.renote &&
|
||||
this.note.text == null &&
|
||||
this.note.fileIds.length == 0 &&
|
||||
this.note.poll == null);
|
||||
},
|
||||
|
||||
appearNote(): any {
|
||||
return this.isRenote ? this.note.renote : this.note;
|
||||
},
|
||||
|
||||
reactionsCount(): number {
|
||||
return this.appearNote.reactionCounts
|
||||
? sum(Object.values(this.appearNote.reactionCounts))
|
||||
: 0;
|
||||
},
|
||||
|
||||
title(): string {
|
||||
return new Date(this.appearNote.createdAt).toLocaleString();
|
||||
},
|
||||
|
||||
urls(): string[] {
|
||||
if (this.appearNote.text) {
|
||||
const ast = parse(this.appearNote.text);
|
||||
return ast
|
||||
.filter(t => (t.type == 'url' || t.type == 'link') && !t.silent)
|
||||
.map(t => t.url);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
reply(viaKeyboard = false) {
|
||||
(this as any).apis.post({
|
||||
reply: this.appearNote,
|
||||
animation: !viaKeyboard,
|
||||
cb: () => {
|
||||
this.focus();
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
renote(viaKeyboard = false) {
|
||||
(this as any).apis.post({
|
||||
renote: this.appearNote,
|
||||
animation: !viaKeyboard,
|
||||
cb: () => {
|
||||
this.focus();
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
renoteDirectly() {
|
||||
(this as any).api('notes/create', {
|
||||
renoteId: this.appearNote.id
|
||||
});
|
||||
},
|
||||
|
||||
react(viaKeyboard = false) {
|
||||
this.blur();
|
||||
(this as any).os.new(MkReactionPicker, {
|
||||
source: this.$refs.reactButton,
|
||||
note: this.appearNote,
|
||||
showFocus: viaKeyboard,
|
||||
animation: !viaKeyboard,
|
||||
compact: opts.mobile,
|
||||
big: opts.mobile
|
||||
}).$once('closed', this.focus);
|
||||
},
|
||||
|
||||
reactDirectly(reaction) {
|
||||
(this as any).api('notes/reactions/create', {
|
||||
noteId: this.appearNote.id,
|
||||
reaction: reaction
|
||||
});
|
||||
},
|
||||
|
||||
favorite() {
|
||||
(this as any).api('notes/favorites/create', {
|
||||
noteId: this.appearNote.id
|
||||
}).then(() => {
|
||||
(this as any).os.new(Ok);
|
||||
});
|
||||
},
|
||||
|
||||
del() {
|
||||
(this as any).api('notes/delete', {
|
||||
noteId: this.appearNote.id
|
||||
});
|
||||
},
|
||||
|
||||
menu(viaKeyboard = false) {
|
||||
(this as any).os.new(MkNoteMenu, {
|
||||
source: this.$refs.menuButton,
|
||||
note: this.appearNote,
|
||||
animation: !viaKeyboard,
|
||||
compact: opts.mobile,
|
||||
}).$once('closed', this.focus);
|
||||
},
|
||||
|
||||
toggleShowContent() {
|
||||
this.showContent = !this.showContent;
|
||||
},
|
||||
|
||||
focus() {
|
||||
this.$el.focus();
|
||||
},
|
||||
|
||||
blur() {
|
||||
this.$el.blur();
|
||||
},
|
||||
|
||||
focusBefore() {
|
||||
focus(this.$el, e => e.previousElementSibling);
|
||||
},
|
||||
|
||||
focusAfter() {
|
||||
focus(this.$el, e => e.nextElementSibling);
|
||||
}
|
||||
}
|
||||
});
|
||||
128
src/client/app/common/scripts/note-subscriber.ts
Normal file
128
src/client/app/common/scripts/note-subscriber.ts
Normal file
@@ -0,0 +1,128 @@
|
||||
import Vue from 'vue';
|
||||
|
||||
export default prop => ({
|
||||
data() {
|
||||
return {
|
||||
connection: null
|
||||
};
|
||||
},
|
||||
|
||||
computed: {
|
||||
$_ns_note_(): any {
|
||||
return this[prop];
|
||||
},
|
||||
|
||||
$_ns_isRenote(): boolean {
|
||||
return (this.$_ns_note_.renote != null &&
|
||||
this.$_ns_note_.text == null &&
|
||||
this.$_ns_note_.fileIds.length == 0 &&
|
||||
this.$_ns_note_.poll == null);
|
||||
},
|
||||
|
||||
$_ns_target(): any {
|
||||
return this.$_ns_isRenote ? this.$_ns_note_.renote : this.$_ns_note_;
|
||||
},
|
||||
},
|
||||
|
||||
created() {
|
||||
if (this.$store.getters.isSignedIn) {
|
||||
this.connection = (this as any).os.stream;
|
||||
}
|
||||
},
|
||||
|
||||
mounted() {
|
||||
this.capture(true);
|
||||
|
||||
if (this.$store.getters.isSignedIn) {
|
||||
this.connection.on('_connected_', this.onStreamConnected);
|
||||
}
|
||||
},
|
||||
|
||||
beforeDestroy() {
|
||||
this.decapture(true);
|
||||
|
||||
if (this.$store.getters.isSignedIn) {
|
||||
this.connection.off('_connected_', this.onStreamConnected);
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
capture(withHandler = false) {
|
||||
if (this.$store.getters.isSignedIn) {
|
||||
const data = {
|
||||
id: this.$_ns_target.id
|
||||
} as any;
|
||||
|
||||
if (
|
||||
(this.$_ns_target.visibleUserIds || []).includes(this.$store.state.i.id) ||
|
||||
(this.$_ns_target.mentions || []).includes(this.$store.state.i.id)
|
||||
) {
|
||||
data.read = true;
|
||||
}
|
||||
|
||||
this.connection.send('sn', data);
|
||||
if (withHandler) this.connection.on('noteUpdated', this.onStreamNoteUpdated);
|
||||
}
|
||||
},
|
||||
|
||||
decapture(withHandler = false) {
|
||||
if (this.$store.getters.isSignedIn) {
|
||||
this.connection.send('un', {
|
||||
id: this.$_ns_target.id
|
||||
});
|
||||
if (withHandler) this.connection.off('noteUpdated', this.onStreamNoteUpdated);
|
||||
}
|
||||
},
|
||||
|
||||
onStreamConnected() {
|
||||
this.capture();
|
||||
},
|
||||
|
||||
onStreamNoteUpdated(data) {
|
||||
const { type, id, body } = data;
|
||||
|
||||
if (id !== this.$_ns_target.id) return;
|
||||
|
||||
switch (type) {
|
||||
case 'reacted': {
|
||||
const reaction = body.reaction;
|
||||
|
||||
if (this.$_ns_target.reactionCounts == null) {
|
||||
Vue.set(this.$_ns_target, 'reactionCounts', {});
|
||||
}
|
||||
|
||||
if (this.$_ns_target.reactionCounts[reaction] == null) {
|
||||
Vue.set(this.$_ns_target.reactionCounts, reaction, 0);
|
||||
}
|
||||
|
||||
this.$_ns_target.reactionCounts[reaction]++;
|
||||
|
||||
if (body.userId == this.$store.state.i.id) {
|
||||
Vue.set(this.$_ns_target, 'myReaction', reaction);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case 'pollVoted': {
|
||||
if (body.userId == this.$store.state.i.id) return;
|
||||
const choice = body.choice;
|
||||
this.$_ns_target.poll.choices.find(c => c.id === choice).votes++;
|
||||
break;
|
||||
}
|
||||
|
||||
case 'deleted': {
|
||||
Vue.set(this.$_ns_target, 'deletedAt', body.deletedAt);
|
||||
this.$_ns_target.text = null;
|
||||
this.$_ns_target.tags = [];
|
||||
this.$_ns_target.fileIds = [];
|
||||
this.$_ns_target.poll = null;
|
||||
this.$_ns_target.geo = null;
|
||||
this.$_ns_target.cw = null;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
this.$emit(`update:${prop}`, this.$_ns_note_);
|
||||
},
|
||||
}
|
||||
});
|
||||
@@ -1,53 +0,0 @@
|
||||
export default function(qs: string) {
|
||||
const q = {
|
||||
text: ''
|
||||
};
|
||||
|
||||
qs.split(' ').forEach(x => {
|
||||
if (/^([a-z_]+?):(.+?)$/.test(x)) {
|
||||
const [key, value] = x.split(':');
|
||||
switch (key) {
|
||||
case 'user':
|
||||
q['includeUserUsernames'] = value.split(',');
|
||||
break;
|
||||
case 'exclude_user':
|
||||
q['excludeUserUsernames'] = value.split(',');
|
||||
break;
|
||||
case 'follow':
|
||||
q['following'] = value == 'null' ? null : value == 'true';
|
||||
break;
|
||||
case 'reply':
|
||||
q['reply'] = value == 'null' ? null : value == 'true';
|
||||
break;
|
||||
case 'renote':
|
||||
q['renote'] = value == 'null' ? null : value == 'true';
|
||||
break;
|
||||
case 'media':
|
||||
q['media'] = value == 'null' ? null : value == 'true';
|
||||
break;
|
||||
case 'poll':
|
||||
q['poll'] = value == 'null' ? null : value == 'true';
|
||||
break;
|
||||
case 'until':
|
||||
case 'since':
|
||||
// YYYY-MM-DD
|
||||
if (/^[0-9]+\-[0-9]+\-[0-9]+$/) {
|
||||
const [yyyy, mm, dd] = value.split('-');
|
||||
q[`${key}_date`] = (new Date(parseInt(yyyy, 10), parseInt(mm, 10) - 1, parseInt(dd, 10))).getTime();
|
||||
}
|
||||
break;
|
||||
default:
|
||||
q[key] = value;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
q.text += x + ' ';
|
||||
}
|
||||
});
|
||||
|
||||
if (q.text) {
|
||||
q.text = q.text.trim();
|
||||
}
|
||||
|
||||
return q;
|
||||
}
|
||||
303
src/client/app/common/scripts/stream.ts
Normal file
303
src/client/app/common/scripts/stream.ts
Normal file
@@ -0,0 +1,303 @@
|
||||
import autobind from 'autobind-decorator';
|
||||
import { EventEmitter } from 'eventemitter3';
|
||||
import ReconnectingWebsocket from 'reconnecting-websocket';
|
||||
import { wsUrl } from '../../config';
|
||||
import MiOS from '../../mios';
|
||||
|
||||
/**
|
||||
* Misskey stream connection
|
||||
*/
|
||||
export default class Stream extends EventEmitter {
|
||||
private stream: ReconnectingWebsocket;
|
||||
public state: string;
|
||||
private sharedConnectionPools: Pool[] = [];
|
||||
private sharedConnections: SharedConnection[] = [];
|
||||
private nonSharedConnections: NonSharedConnection[] = [];
|
||||
|
||||
constructor(os: MiOS) {
|
||||
super();
|
||||
|
||||
this.state = 'initializing';
|
||||
|
||||
const user = os.store.state.i;
|
||||
|
||||
this.stream = new ReconnectingWebsocket(wsUrl + (user ? `?i=${user.token}` : ''));
|
||||
this.stream.addEventListener('open', this.onOpen);
|
||||
this.stream.addEventListener('close', this.onClose);
|
||||
this.stream.addEventListener('message', this.onMessage);
|
||||
}
|
||||
|
||||
@autobind
|
||||
public useSharedConnection(channel: string): SharedConnection {
|
||||
let pool = this.sharedConnectionPools.find(p => p.channel === channel);
|
||||
|
||||
if (pool == null) {
|
||||
pool = new Pool(this, channel);
|
||||
this.sharedConnectionPools.push(pool);
|
||||
}
|
||||
|
||||
const connection = new SharedConnection(this, channel, pool);
|
||||
this.sharedConnections.push(connection);
|
||||
return connection;
|
||||
}
|
||||
|
||||
@autobind
|
||||
public removeSharedConnection(connection: SharedConnection) {
|
||||
this.sharedConnections = this.sharedConnections.filter(c => c !== connection);
|
||||
}
|
||||
|
||||
@autobind
|
||||
public removeSharedConnectionPool(pool: Pool) {
|
||||
this.sharedConnectionPools = this.sharedConnectionPools.filter(p => p !== pool);
|
||||
}
|
||||
|
||||
@autobind
|
||||
public connectToChannel(channel: string, params?: any): NonSharedConnection {
|
||||
const connection = new NonSharedConnection(this, channel, params);
|
||||
this.nonSharedConnections.push(connection);
|
||||
return connection;
|
||||
}
|
||||
|
||||
@autobind
|
||||
public disconnectToChannel(connection: NonSharedConnection) {
|
||||
this.nonSharedConnections = this.nonSharedConnections.filter(c => c !== connection);
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback of when open connection
|
||||
*/
|
||||
@autobind
|
||||
private onOpen() {
|
||||
const isReconnect = this.state == 'reconnecting';
|
||||
|
||||
this.state = 'connected';
|
||||
this.emit('_connected_');
|
||||
|
||||
// チャンネル再接続
|
||||
if (isReconnect) {
|
||||
this.sharedConnectionPools.forEach(p => {
|
||||
p.connect();
|
||||
});
|
||||
this.nonSharedConnections.forEach(c => {
|
||||
c.connect();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback of when close connection
|
||||
*/
|
||||
@autobind
|
||||
private onClose() {
|
||||
if (this.state == 'connected') {
|
||||
this.state = 'reconnecting';
|
||||
this.emit('_disconnected_');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback of when received a message from connection
|
||||
*/
|
||||
@autobind
|
||||
private onMessage(message) {
|
||||
const { type, body } = JSON.parse(message.data);
|
||||
|
||||
if (type == 'channel') {
|
||||
const id = body.id;
|
||||
|
||||
let connections: Connection[];
|
||||
|
||||
connections = this.sharedConnections.filter(c => c.id === id);
|
||||
|
||||
if (connections.length === 0) {
|
||||
connections = [this.nonSharedConnections.find(c => c.id === id)];
|
||||
}
|
||||
|
||||
connections.filter(c => c != null).forEach(c => {
|
||||
c.emit(body.type, body.body);
|
||||
});
|
||||
} else {
|
||||
this.emit(type, body);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Send a message to connection
|
||||
*/
|
||||
@autobind
|
||||
public send(typeOrPayload, payload?) {
|
||||
const data = payload === undefined ? typeOrPayload : {
|
||||
type: typeOrPayload,
|
||||
body: payload
|
||||
};
|
||||
|
||||
this.stream.send(JSON.stringify(data));
|
||||
}
|
||||
|
||||
/**
|
||||
* Close this connection
|
||||
*/
|
||||
@autobind
|
||||
public close() {
|
||||
this.stream.removeEventListener('open', this.onOpen);
|
||||
this.stream.removeEventListener('message', this.onMessage);
|
||||
}
|
||||
}
|
||||
|
||||
class Pool {
|
||||
public channel: string;
|
||||
public id: string;
|
||||
protected stream: Stream;
|
||||
public users = 0;
|
||||
private disposeTimerId: any;
|
||||
private isConnected = false;
|
||||
|
||||
constructor(stream: Stream, channel: string) {
|
||||
this.channel = channel;
|
||||
this.stream = stream;
|
||||
|
||||
this.id = Math.random().toString().substr(2, 8);
|
||||
|
||||
this.stream.on('_disconnected_', this.onStreamDisconnected);
|
||||
}
|
||||
|
||||
@autobind
|
||||
private onStreamDisconnected() {
|
||||
this.isConnected = false;
|
||||
}
|
||||
|
||||
@autobind
|
||||
public inc() {
|
||||
if (this.users === 0 && !this.isConnected) {
|
||||
this.connect();
|
||||
}
|
||||
|
||||
this.users++;
|
||||
|
||||
// タイマー解除
|
||||
if (this.disposeTimerId) {
|
||||
clearTimeout(this.disposeTimerId);
|
||||
this.disposeTimerId = null;
|
||||
}
|
||||
}
|
||||
|
||||
@autobind
|
||||
public dec() {
|
||||
this.users--;
|
||||
|
||||
// そのコネクションの利用者が誰もいなくなったら
|
||||
if (this.users === 0) {
|
||||
// また直ぐに再利用される可能性があるので、一定時間待ち、
|
||||
// 新たな利用者が現れなければコネクションを切断する
|
||||
this.disposeTimerId = setTimeout(() => {
|
||||
this.disconnect();
|
||||
}, 3000);
|
||||
}
|
||||
}
|
||||
|
||||
@autobind
|
||||
public connect() {
|
||||
if (this.isConnected) return;
|
||||
this.isConnected = true;
|
||||
this.stream.send('connect', {
|
||||
channel: this.channel,
|
||||
id: this.id
|
||||
});
|
||||
}
|
||||
|
||||
@autobind
|
||||
private disconnect() {
|
||||
this.stream.off('_disconnected_', this.onStreamDisconnected);
|
||||
this.stream.send('disconnect', { id: this.id });
|
||||
this.stream.removeSharedConnectionPool(this);
|
||||
}
|
||||
}
|
||||
|
||||
abstract class Connection extends EventEmitter {
|
||||
public channel: string;
|
||||
protected stream: Stream;
|
||||
public abstract id: string;
|
||||
|
||||
constructor(stream: Stream, channel: string) {
|
||||
super();
|
||||
|
||||
this.stream = stream;
|
||||
this.channel = channel;
|
||||
}
|
||||
|
||||
@autobind
|
||||
public send(id: string, typeOrPayload, payload?) {
|
||||
const type = payload === undefined ? typeOrPayload.type : typeOrPayload;
|
||||
const body = payload === undefined ? typeOrPayload.body : payload;
|
||||
|
||||
this.stream.send('ch', {
|
||||
id: id,
|
||||
type: type,
|
||||
body: body
|
||||
});
|
||||
}
|
||||
|
||||
public abstract dispose(): void;
|
||||
}
|
||||
|
||||
class SharedConnection extends Connection {
|
||||
private pool: Pool;
|
||||
|
||||
public get id(): string {
|
||||
return this.pool.id;
|
||||
}
|
||||
|
||||
constructor(stream: Stream, channel: string, pool: Pool) {
|
||||
super(stream, channel);
|
||||
|
||||
this.pool = pool;
|
||||
this.pool.inc();
|
||||
}
|
||||
|
||||
@autobind
|
||||
public send(typeOrPayload, payload?) {
|
||||
super.send(this.pool.id, typeOrPayload, payload);
|
||||
}
|
||||
|
||||
@autobind
|
||||
public dispose() {
|
||||
this.pool.dec();
|
||||
this.removeAllListeners();
|
||||
this.stream.removeSharedConnection(this);
|
||||
}
|
||||
}
|
||||
|
||||
class NonSharedConnection extends Connection {
|
||||
public id: string;
|
||||
protected params: any;
|
||||
|
||||
constructor(stream: Stream, channel: string, params?: any) {
|
||||
super(stream, channel);
|
||||
|
||||
this.params = params;
|
||||
this.id = Math.random().toString().substr(2, 8);
|
||||
|
||||
this.connect();
|
||||
}
|
||||
|
||||
@autobind
|
||||
public connect() {
|
||||
this.stream.send('connect', {
|
||||
channel: this.channel,
|
||||
id: this.id,
|
||||
params: this.params
|
||||
});
|
||||
}
|
||||
|
||||
@autobind
|
||||
public send(typeOrPayload, payload?) {
|
||||
super.send(this.id, typeOrPayload, payload);
|
||||
}
|
||||
|
||||
@autobind
|
||||
public dispose() {
|
||||
this.removeAllListeners();
|
||||
this.stream.send('disconnect', { id: this.id });
|
||||
this.stream.disconnectToChannel(this);
|
||||
}
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
import Stream from './stream';
|
||||
import StreamManager from './stream-manager';
|
||||
import MiOS from '../../../mios';
|
||||
|
||||
/**
|
||||
* Drive stream connection
|
||||
*/
|
||||
export class DriveStream extends Stream {
|
||||
constructor(os: MiOS, me) {
|
||||
super(os, 'drive', {
|
||||
i: me.token
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export class DriveStreamManager extends StreamManager<DriveStream> {
|
||||
private me;
|
||||
private os: MiOS;
|
||||
|
||||
constructor(os: MiOS, me) {
|
||||
super();
|
||||
|
||||
this.me = me;
|
||||
this.os = os;
|
||||
}
|
||||
|
||||
public getConnection() {
|
||||
if (this.connection == null) {
|
||||
this.connection = new DriveStream(this.os, this.me);
|
||||
}
|
||||
|
||||
return this.connection;
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
import Stream from '../../stream';
|
||||
import MiOS from '../../../../../mios';
|
||||
|
||||
export class ReversiGameStream extends Stream {
|
||||
constructor(os: MiOS, me, game) {
|
||||
super(os, 'games/reversi-game', {
|
||||
i: me ? me.token : null,
|
||||
game: game.id
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -1,31 +0,0 @@
|
||||
import StreamManager from '../../stream-manager';
|
||||
import Stream from '../../stream';
|
||||
import MiOS from '../../../../../mios';
|
||||
|
||||
export class ReversiStream extends Stream {
|
||||
constructor(os: MiOS, me) {
|
||||
super(os, 'games/reversi', {
|
||||
i: me.token
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export class ReversiStreamManager extends StreamManager<ReversiStream> {
|
||||
private me;
|
||||
private os: MiOS;
|
||||
|
||||
constructor(os: MiOS, me) {
|
||||
super();
|
||||
|
||||
this.me = me;
|
||||
this.os = os;
|
||||
}
|
||||
|
||||
public getConnection() {
|
||||
if (this.connection == null) {
|
||||
this.connection = new ReversiStream(this.os, this.me);
|
||||
}
|
||||
|
||||
return this.connection;
|
||||
}
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
import Stream from './stream';
|
||||
import StreamManager from './stream-manager';
|
||||
import MiOS from '../../../mios';
|
||||
|
||||
/**
|
||||
* Global timeline stream connection
|
||||
*/
|
||||
export class GlobalTimelineStream extends Stream {
|
||||
constructor(os: MiOS, me) {
|
||||
super(os, 'global-timeline', {
|
||||
i: me.token
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export class GlobalTimelineStreamManager extends StreamManager<GlobalTimelineStream> {
|
||||
private me;
|
||||
private os: MiOS;
|
||||
|
||||
constructor(os: MiOS, me) {
|
||||
super();
|
||||
|
||||
this.me = me;
|
||||
this.os = os;
|
||||
}
|
||||
|
||||
public getConnection() {
|
||||
if (this.connection == null) {
|
||||
this.connection = new GlobalTimelineStream(this.os, this.me);
|
||||
}
|
||||
|
||||
return this.connection;
|
||||
}
|
||||
}
|
||||
@@ -1,102 +0,0 @@
|
||||
import Stream from './stream';
|
||||
import StreamManager from './stream-manager';
|
||||
import MiOS from '../../../mios';
|
||||
|
||||
/**
|
||||
* Home stream connection
|
||||
*/
|
||||
export class HomeStream extends Stream {
|
||||
constructor(os: MiOS, me) {
|
||||
super(os, '', {
|
||||
i: me.token
|
||||
});
|
||||
|
||||
// 最終利用日時を更新するため定期的にaliveメッセージを送信
|
||||
setInterval(() => {
|
||||
this.send({ type: 'alive' });
|
||||
me.lastUsedAt = new Date();
|
||||
}, 1000 * 60);
|
||||
|
||||
// 自分の情報が更新されたとき
|
||||
this.on('meUpdated', i => {
|
||||
if (os.debug) {
|
||||
console.log('I updated:', i);
|
||||
}
|
||||
|
||||
os.store.dispatch('mergeMe', i);
|
||||
});
|
||||
|
||||
this.on('read_all_notifications', () => {
|
||||
os.store.dispatch('mergeMe', {
|
||||
hasUnreadNotification: false
|
||||
});
|
||||
});
|
||||
|
||||
this.on('unread_notification', () => {
|
||||
os.store.dispatch('mergeMe', {
|
||||
hasUnreadNotification: true
|
||||
});
|
||||
});
|
||||
|
||||
this.on('read_all_messaging_messages', () => {
|
||||
os.store.dispatch('mergeMe', {
|
||||
hasUnreadMessagingMessage: false
|
||||
});
|
||||
});
|
||||
|
||||
this.on('unread_messaging_message', () => {
|
||||
os.store.dispatch('mergeMe', {
|
||||
hasUnreadMessagingMessage: true
|
||||
});
|
||||
});
|
||||
|
||||
this.on('clientSettingUpdated', x => {
|
||||
os.store.commit('settings/set', {
|
||||
key: x.key,
|
||||
value: x.value
|
||||
});
|
||||
});
|
||||
|
||||
this.on('home_updated', x => {
|
||||
os.store.commit('settings/setHome', x);
|
||||
});
|
||||
|
||||
this.on('mobile_home_updated', x => {
|
||||
os.store.commit('settings/setMobileHome', x);
|
||||
});
|
||||
|
||||
this.on('widgetUpdated', x => {
|
||||
os.store.commit('settings/setWidget', {
|
||||
id: x.id,
|
||||
data: x.data
|
||||
});
|
||||
});
|
||||
|
||||
// トークンが再生成されたとき
|
||||
// このままではMisskeyが利用できないので強制的にサインアウトさせる
|
||||
this.on('my_token_regenerated', () => {
|
||||
alert('%i18n:common.my-token-regenerated%');
|
||||
os.signout();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export class HomeStreamManager extends StreamManager<HomeStream> {
|
||||
private me;
|
||||
private os: MiOS;
|
||||
|
||||
constructor(os: MiOS, me) {
|
||||
super();
|
||||
|
||||
this.me = me;
|
||||
this.os = os;
|
||||
}
|
||||
|
||||
public getConnection() {
|
||||
if (this.connection == null) {
|
||||
this.connection = new HomeStream(this.os, this.me);
|
||||
}
|
||||
|
||||
return this.connection;
|
||||
}
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
import Stream from './stream';
|
||||
import StreamManager from './stream-manager';
|
||||
import MiOS from '../../../mios';
|
||||
|
||||
/**
|
||||
* Hybrid timeline stream connection
|
||||
*/
|
||||
export class HybridTimelineStream extends Stream {
|
||||
constructor(os: MiOS, me) {
|
||||
super(os, 'hybrid-timeline', {
|
||||
i: me.token
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export class HybridTimelineStreamManager extends StreamManager<HybridTimelineStream> {
|
||||
private me;
|
||||
private os: MiOS;
|
||||
|
||||
constructor(os: MiOS, me) {
|
||||
super();
|
||||
|
||||
this.me = me;
|
||||
this.os = os;
|
||||
}
|
||||
|
||||
public getConnection() {
|
||||
if (this.connection == null) {
|
||||
this.connection = new HybridTimelineStream(this.os, this.me);
|
||||
}
|
||||
|
||||
return this.connection;
|
||||
}
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
import Stream from './stream';
|
||||
import StreamManager from './stream-manager';
|
||||
import MiOS from '../../../mios';
|
||||
|
||||
/**
|
||||
* Local timeline stream connection
|
||||
*/
|
||||
export class LocalTimelineStream extends Stream {
|
||||
constructor(os: MiOS, me) {
|
||||
super(os, 'local-timeline', {
|
||||
i: me.token
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export class LocalTimelineStreamManager extends StreamManager<LocalTimelineStream> {
|
||||
private me;
|
||||
private os: MiOS;
|
||||
|
||||
constructor(os: MiOS, me) {
|
||||
super();
|
||||
|
||||
this.me = me;
|
||||
this.os = os;
|
||||
}
|
||||
|
||||
public getConnection() {
|
||||
if (this.connection == null) {
|
||||
this.connection = new LocalTimelineStream(this.os, this.me);
|
||||
}
|
||||
|
||||
return this.connection;
|
||||
}
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
import Stream from './stream';
|
||||
import StreamManager from './stream-manager';
|
||||
import MiOS from '../../../mios';
|
||||
|
||||
/**
|
||||
* Messaging index stream connection
|
||||
*/
|
||||
export class MessagingIndexStream extends Stream {
|
||||
constructor(os: MiOS, me) {
|
||||
super(os, 'messaging-index', {
|
||||
i: me.token
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export class MessagingIndexStreamManager extends StreamManager<MessagingIndexStream> {
|
||||
private me;
|
||||
private os: MiOS;
|
||||
|
||||
constructor(os: MiOS, me) {
|
||||
super();
|
||||
|
||||
this.me = me;
|
||||
this.os = os;
|
||||
}
|
||||
|
||||
public getConnection() {
|
||||
if (this.connection == null) {
|
||||
this.connection = new MessagingIndexStream(this.os, this.me);
|
||||
}
|
||||
|
||||
return this.connection;
|
||||
}
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
import Stream from './stream';
|
||||
import MiOS from '../../../mios';
|
||||
|
||||
/**
|
||||
* Messaging stream connection
|
||||
*/
|
||||
export class MessagingStream extends Stream {
|
||||
constructor(os: MiOS, me, otherparty) {
|
||||
super(os, 'messaging', {
|
||||
i: me.token,
|
||||
otherparty
|
||||
});
|
||||
|
||||
(this as any).on('_connected_', () => {
|
||||
this.send({
|
||||
i: me.token
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
import Stream from './stream';
|
||||
import StreamManager from './stream-manager';
|
||||
import MiOS from '../../../mios';
|
||||
|
||||
/**
|
||||
* Notes stats stream connection
|
||||
*/
|
||||
export class NotesStatsStream extends Stream {
|
||||
constructor(os: MiOS) {
|
||||
super(os, 'notes-stats');
|
||||
}
|
||||
}
|
||||
|
||||
export class NotesStatsStreamManager extends StreamManager<NotesStatsStream> {
|
||||
private os: MiOS;
|
||||
|
||||
constructor(os: MiOS) {
|
||||
super();
|
||||
|
||||
this.os = os;
|
||||
}
|
||||
|
||||
public getConnection() {
|
||||
if (this.connection == null) {
|
||||
this.connection = new NotesStatsStream(this.os);
|
||||
}
|
||||
|
||||
return this.connection;
|
||||
}
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
import Stream from './stream';
|
||||
import StreamManager from './stream-manager';
|
||||
import MiOS from '../../../mios';
|
||||
|
||||
/**
|
||||
* Server stats stream connection
|
||||
*/
|
||||
export class ServerStatsStream extends Stream {
|
||||
constructor(os: MiOS) {
|
||||
super(os, 'server-stats');
|
||||
}
|
||||
}
|
||||
|
||||
export class ServerStatsStreamManager extends StreamManager<ServerStatsStream> {
|
||||
private os: MiOS;
|
||||
|
||||
constructor(os: MiOS) {
|
||||
super();
|
||||
|
||||
this.os = os;
|
||||
}
|
||||
|
||||
public getConnection() {
|
||||
if (this.connection == null) {
|
||||
this.connection = new ServerStatsStream(this.os);
|
||||
}
|
||||
|
||||
return this.connection;
|
||||
}
|
||||
}
|
||||
@@ -1,108 +0,0 @@
|
||||
import { EventEmitter } from 'eventemitter3';
|
||||
import * as uuid from 'uuid';
|
||||
import Connection from './stream';
|
||||
|
||||
/**
|
||||
* ストリーム接続を管理するクラス
|
||||
* 複数の場所から同じストリームを利用する際、接続をまとめたりする
|
||||
*/
|
||||
export default abstract class StreamManager<T extends Connection> extends EventEmitter {
|
||||
private _connection: T = null;
|
||||
|
||||
private disposeTimerId: any;
|
||||
|
||||
/**
|
||||
* コネクションを必要としているユーザー
|
||||
*/
|
||||
private users = [];
|
||||
|
||||
protected set connection(connection: T) {
|
||||
this._connection = connection;
|
||||
|
||||
if (this._connection == null) {
|
||||
this.emit('disconnected');
|
||||
} else {
|
||||
this.emit('connected', this._connection);
|
||||
|
||||
this._connection.on('_connected_', () => {
|
||||
this.emit('_connected_');
|
||||
});
|
||||
|
||||
this._connection.on('_disconnected_', () => {
|
||||
this.emit('_disconnected_');
|
||||
});
|
||||
|
||||
this._connection.user = 'Managed';
|
||||
}
|
||||
}
|
||||
|
||||
protected get connection() {
|
||||
return this._connection;
|
||||
}
|
||||
|
||||
/**
|
||||
* コネクションを持っているか否か
|
||||
*/
|
||||
public get hasConnection() {
|
||||
return this._connection != null;
|
||||
}
|
||||
|
||||
public get state(): string {
|
||||
if (!this.hasConnection) return 'no-connection';
|
||||
return this._connection.state;
|
||||
}
|
||||
|
||||
/**
|
||||
* コネクションを要求します
|
||||
*/
|
||||
public abstract getConnection(): T;
|
||||
|
||||
/**
|
||||
* 現在接続しているコネクションを取得します
|
||||
*/
|
||||
public borrow() {
|
||||
return this._connection;
|
||||
}
|
||||
|
||||
/**
|
||||
* コネクションを要求するためのユーザーIDを発行します
|
||||
*/
|
||||
public use() {
|
||||
// タイマー解除
|
||||
if (this.disposeTimerId) {
|
||||
clearTimeout(this.disposeTimerId);
|
||||
this.disposeTimerId = null;
|
||||
}
|
||||
|
||||
// ユーザーID生成
|
||||
const userId = uuid();
|
||||
|
||||
this.users.push(userId);
|
||||
|
||||
this._connection.user = `Managed (${ this.users.length })`;
|
||||
|
||||
return userId;
|
||||
}
|
||||
|
||||
/**
|
||||
* コネクションを利用し終わってもう必要ないことを通知します
|
||||
* @param userId use で発行したユーザーID
|
||||
*/
|
||||
public dispose(userId) {
|
||||
this.users = this.users.filter(id => id != userId);
|
||||
|
||||
this._connection.user = `Managed (${ this.users.length })`;
|
||||
|
||||
// 誰もコネクションの利用者がいなくなったら
|
||||
if (this.users.length == 0) {
|
||||
// また直ぐに再利用される可能性があるので、一定時間待ち、
|
||||
// 新たな利用者が現れなければコネクションを切断する
|
||||
this.disposeTimerId = setTimeout(() => {
|
||||
this.disposeTimerId = null;
|
||||
|
||||
this.connection.close();
|
||||
this.connection = null;
|
||||
}, 3000);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,137 +0,0 @@
|
||||
import { EventEmitter } from 'eventemitter3';
|
||||
import * as uuid from 'uuid';
|
||||
import * as ReconnectingWebsocket from 'reconnecting-websocket';
|
||||
import { wsUrl } from '../../../config';
|
||||
import MiOS from '../../../mios';
|
||||
|
||||
/**
|
||||
* Misskey stream connection
|
||||
*/
|
||||
export default class Connection extends EventEmitter {
|
||||
public state: string;
|
||||
private buffer: any[];
|
||||
public socket: ReconnectingWebsocket;
|
||||
public name: string;
|
||||
public connectedAt: Date;
|
||||
public user: string = null;
|
||||
public in: number = 0;
|
||||
public out: number = 0;
|
||||
public inout: Array<{
|
||||
type: 'in' | 'out',
|
||||
at: Date,
|
||||
data: string
|
||||
}> = [];
|
||||
public id: string;
|
||||
public isSuspended = false;
|
||||
private os: MiOS;
|
||||
|
||||
constructor(os: MiOS, endpoint, params?) {
|
||||
super();
|
||||
|
||||
//#region BIND
|
||||
this.onOpen = this.onOpen.bind(this);
|
||||
this.onClose = this.onClose.bind(this);
|
||||
this.onMessage = this.onMessage.bind(this);
|
||||
this.send = this.send.bind(this);
|
||||
this.close = this.close.bind(this);
|
||||
//#endregion
|
||||
|
||||
this.id = uuid();
|
||||
this.os = os;
|
||||
this.name = endpoint;
|
||||
this.state = 'initializing';
|
||||
this.buffer = [];
|
||||
|
||||
const query = params
|
||||
? Object.keys(params)
|
||||
.map(k => encodeURIComponent(k) + '=' + encodeURIComponent(params[k]))
|
||||
.join('&')
|
||||
: null;
|
||||
|
||||
this.socket = new ReconnectingWebsocket(`${wsUrl}/${endpoint}${query ? '?' + query : ''}`);
|
||||
this.socket.addEventListener('open', this.onOpen);
|
||||
this.socket.addEventListener('close', this.onClose);
|
||||
this.socket.addEventListener('message', this.onMessage);
|
||||
|
||||
// Register this connection for debugging
|
||||
this.os.registerStreamConnection(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback of when open connection
|
||||
*/
|
||||
private onOpen() {
|
||||
this.state = 'connected';
|
||||
this.emit('_connected_');
|
||||
|
||||
this.connectedAt = new Date();
|
||||
|
||||
// バッファーを処理
|
||||
const _buffer = [].concat(this.buffer); // Shallow copy
|
||||
this.buffer = []; // Clear buffer
|
||||
_buffer.forEach(data => {
|
||||
this.send(data); // Resend each buffered messages
|
||||
|
||||
if (this.os.debug) {
|
||||
this.out++;
|
||||
this.inout.push({ type: 'out', at: new Date(), data });
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback of when close connection
|
||||
*/
|
||||
private onClose() {
|
||||
this.state = 'reconnecting';
|
||||
this.emit('_disconnected_');
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback of when received a message from connection
|
||||
*/
|
||||
private onMessage(message) {
|
||||
if (this.isSuspended) return;
|
||||
|
||||
if (this.os.debug) {
|
||||
this.in++;
|
||||
this.inout.push({ type: 'in', at: new Date(), data: message.data });
|
||||
}
|
||||
|
||||
try {
|
||||
const msg = JSON.parse(message.data);
|
||||
if (msg.type) this.emit(msg.type, msg.body);
|
||||
} catch (e) {
|
||||
// noop
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Send a message to connection
|
||||
*/
|
||||
public send(data) {
|
||||
if (this.isSuspended) return;
|
||||
|
||||
// まだ接続が確立されていなかったらバッファリングして次に接続した時に送信する
|
||||
if (this.state != 'connected') {
|
||||
this.buffer.push(data);
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.os.debug) {
|
||||
this.out++;
|
||||
this.inout.push({ type: 'out', at: new Date(), data });
|
||||
}
|
||||
|
||||
this.socket.send(JSON.stringify(data));
|
||||
}
|
||||
|
||||
/**
|
||||
* Close this connection
|
||||
*/
|
||||
public close() {
|
||||
this.os.unregisterStreamConnection(this);
|
||||
this.socket.removeEventListener('open', this.onOpen);
|
||||
this.socket.removeEventListener('message', this.onMessage);
|
||||
}
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
import Stream from './stream';
|
||||
import MiOS from '../../mios';
|
||||
|
||||
export class UserListStream extends Stream {
|
||||
constructor(os: MiOS, me, listId) {
|
||||
super(os, 'user-list', {
|
||||
i: me.token,
|
||||
listId
|
||||
});
|
||||
|
||||
(this as any).on('_connected_', () => {
|
||||
this.send({
|
||||
i: me.token
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -1,19 +1,25 @@
|
||||
<template>
|
||||
<span class="mk-acct">
|
||||
<span class="name">@{{ user.username }}</span>
|
||||
<span class="host" v-if="user.host">@{{ user.host }}</span>
|
||||
<span class="host" :class="{ fade: $store.state.settings.contrastedAcct }" v-if="user.host || detail || $store.state.settings.showFullAcct">@{{ user.host || host }}</span>
|
||||
</span>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import { host } from '../../../config';
|
||||
export default Vue.extend({
|
||||
props: ['user']
|
||||
props: ['user', 'detail'],
|
||||
data() {
|
||||
return {
|
||||
host
|
||||
};
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
.mk-acct
|
||||
> .host
|
||||
> .host.fade
|
||||
opacity 0.5
|
||||
</style>
|
||||
|
||||
72
src/client/app/common/views/components/api-settings.vue
Normal file
72
src/client/app/common/views/components/api-settings.vue
Normal file
@@ -0,0 +1,72 @@
|
||||
<template>
|
||||
<ui-card>
|
||||
<div slot="title">%fa:key% API</div>
|
||||
|
||||
<section class="fit-top">
|
||||
<ui-input :value="$store.state.i.token" readonly>
|
||||
<span>%i18n:@token%</span>
|
||||
</ui-input>
|
||||
<p>%i18n:@intro%</p>
|
||||
<ui-info warn>%i18n:@caution%</ui-info>
|
||||
<p>%i18n:@regeneration-of-token%</p>
|
||||
<ui-button @click="regenerateToken">%fa:sync-alt% %i18n:@regenerate-token%</ui-button>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<header>%fa:terminal% %i18n:@console.title%</header>
|
||||
<ui-input v-model="endpoint">
|
||||
<span>%i18n:@console.endpoint%</span>
|
||||
</ui-input>
|
||||
<ui-textarea v-model="body">
|
||||
<span>%i18n:@console.parameter% (JSON or JSON5)</span>
|
||||
</ui-textarea>
|
||||
<ui-button @click="send" :disabled="sending">
|
||||
<template v-if="sending">%i18n:@console.sending%</template>
|
||||
<template v-else>%fa:paper-plane% %i18n:@console.send%</template>
|
||||
</ui-button>
|
||||
<ui-textarea v-if="res" v-model="res" readonly tall>
|
||||
<span>%i18n:@console.response%</span>
|
||||
</ui-textarea>
|
||||
</section>
|
||||
</ui-card>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import * as JSON5 from 'json5';
|
||||
|
||||
export default Vue.extend({
|
||||
data() {
|
||||
return {
|
||||
endpoint: '',
|
||||
body: '{}',
|
||||
res: null,
|
||||
sending: false
|
||||
};
|
||||
},
|
||||
|
||||
methods: {
|
||||
regenerateToken() {
|
||||
(this as any).apis.input({
|
||||
title: '%i18n:@enter-password%',
|
||||
type: 'password'
|
||||
}).then(password => {
|
||||
(this as any).api('i/regenerate_token', {
|
||||
password: password
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
send() {
|
||||
this.sending = true;
|
||||
(this as any).api(this.endpoint, JSON5.parse(this.body)).then(res => {
|
||||
this.sending = false;
|
||||
this.res = JSON5.stringify(res, null, 2);
|
||||
}, err => {
|
||||
this.sending = false;
|
||||
this.res = JSON5.stringify(err, null, 2);
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
@@ -125,7 +125,7 @@ export default Vue.extend({
|
||||
}
|
||||
|
||||
if (this.type == 'user') {
|
||||
const cacheKey = 'autocomplete:user:' + this.q;
|
||||
const cacheKey = `autocomplete:user:${this.q}`;
|
||||
const cache = sessionStorage.getItem(cacheKey);
|
||||
if (cache) {
|
||||
const users = JSON.parse(cache);
|
||||
@@ -148,7 +148,7 @@ export default Vue.extend({
|
||||
this.hashtags = JSON.parse(localStorage.getItem('hashtags') || '[]');
|
||||
this.fetching = false;
|
||||
} else {
|
||||
const cacheKey = 'autocomplete:hashtag:' + this.q;
|
||||
const cacheKey = `autocomplete:hashtag:${this.q}`;
|
||||
const cache = sessionStorage.getItem(cacheKey);
|
||||
if (cache) {
|
||||
const hashtags = JSON.parse(cache);
|
||||
@@ -259,15 +259,13 @@ export default Vue.extend({
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
@import '~const.styl'
|
||||
|
||||
root(isDark)
|
||||
.mk-autocomplete
|
||||
position fixed
|
||||
z-index 65535
|
||||
max-width 100%
|
||||
margin-top calc(1em + 8px)
|
||||
overflow hidden
|
||||
background isDark ? #313543 : #fff
|
||||
background var(--faceHeader)
|
||||
border solid 1px rgba(#000, 0.1)
|
||||
border-radius 4px
|
||||
transition top 0.1s ease, left 0.1s ease
|
||||
@@ -299,16 +297,16 @@ root(isDark)
|
||||
text-overflow ellipsis
|
||||
|
||||
&:hover
|
||||
background isDark ? rgba(#fff, 0.1) : rgba(#000, 0.1)
|
||||
background var(--autocompleteItemHoverBg)
|
||||
|
||||
&[data-selected='true']
|
||||
background $theme-color
|
||||
background var(--primary)
|
||||
|
||||
&, *
|
||||
color #fff !important
|
||||
|
||||
&:active
|
||||
background darken($theme-color, 10%)
|
||||
background var(--primaryDarken10)
|
||||
|
||||
&, *
|
||||
color #fff !important
|
||||
@@ -325,15 +323,15 @@ root(isDark)
|
||||
|
||||
.name
|
||||
margin 0 8px 0 0
|
||||
color isDark ? rgba(#fff, 0.8) : rgba(#000, 0.8)
|
||||
color var(--autocompleteItemText)
|
||||
|
||||
.username
|
||||
color isDark ? rgba(#fff, 0.3) : rgba(#000, 0.3)
|
||||
color var(--autocompleteItemTextSub)
|
||||
|
||||
> .hashtags > li
|
||||
|
||||
.name
|
||||
color isDark ? rgba(#fff, 0.8) : rgba(#000, 0.8)
|
||||
color var(--autocompleteItemText)
|
||||
|
||||
> .emojis > li
|
||||
|
||||
@@ -343,15 +341,9 @@ root(isDark)
|
||||
width 24px
|
||||
|
||||
.name
|
||||
color isDark ? rgba(#fff, 0.8) : rgba(#000, 0.8)
|
||||
color var(--autocompleteItemText)
|
||||
|
||||
.alias
|
||||
margin 0 0 0 8px
|
||||
color isDark ? rgba(#fff, 0.3) : rgba(#000, 0.3)
|
||||
|
||||
.mk-autocomplete[data-darkmode]
|
||||
root(true)
|
||||
|
||||
.mk-autocomplete:not([data-darkmode])
|
||||
root(false)
|
||||
color var(--autocompleteItemTextSub)
|
||||
</style>
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
<template>
|
||||
<span class="mk-avatar" :class="{ cat }" :title="user | acct" v-if="disableLink && !disablePreview" v-user-preview="user.id" @click="onClick">
|
||||
<span class="inner" :style="style"></span>
|
||||
<span class="mk-avatar" :style="style" :class="{ cat }" :title="user | acct" v-if="disableLink && !disablePreview" v-user-preview="user.id" @click="onClick">
|
||||
<span class="inner" :style="icon"></span>
|
||||
</span>
|
||||
<span class="mk-avatar" :class="{ cat }" :title="user | acct" v-else-if="disableLink && disablePreview" @click="onClick">
|
||||
<span class="inner" :style="style"></span>
|
||||
<span class="mk-avatar" :style="style" :class="{ cat }" :title="user | acct" v-else-if="disableLink && disablePreview" @click="onClick">
|
||||
<span class="inner" :style="icon"></span>
|
||||
</span>
|
||||
<router-link class="mk-avatar" :class="{ cat }" :to="user | userPage" :title="user | acct" :target="target" v-else-if="!disableLink && !disablePreview" v-user-preview="user.id">
|
||||
<span class="inner" :style="style"></span>
|
||||
<router-link class="mk-avatar" :style="style" :class="{ cat }" :to="user | userPage" :title="user | acct" :target="target" v-else-if="!disableLink && !disablePreview" v-user-preview="user.id">
|
||||
<span class="inner" :style="icon"></span>
|
||||
</router-link>
|
||||
<router-link class="mk-avatar" :class="{ cat }" :to="user | userPage" :title="user | acct" :target="target" v-else-if="!disableLink && disablePreview">
|
||||
<span class="inner" :style="style"></span>
|
||||
<router-link class="mk-avatar" :style="style" :class="{ cat }" :to="user | userPage" :title="user | acct" :target="target" v-else-if="!disableLink && disablePreview">
|
||||
<span class="inner" :style="icon"></span>
|
||||
</router-link>
|
||||
</template>
|
||||
|
||||
@@ -42,6 +42,11 @@ export default Vue.extend({
|
||||
return this.user.isCat && this.$store.state.settings.circleIcons;
|
||||
},
|
||||
style(): any {
|
||||
return {
|
||||
borderRadius: this.$store.state.settings.circleIcons ? '100%' : null
|
||||
};
|
||||
},
|
||||
icon(): any {
|
||||
return {
|
||||
backgroundColor: this.lightmode
|
||||
? `rgb(${this.user.avatarColor.slice(0, 3).join(',')})`
|
||||
@@ -53,6 +58,11 @@ export default Vue.extend({
|
||||
};
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
if (this.user.avatarColor) {
|
||||
this.$el.style.color = `rgb(${this.user.avatarColor.slice(0, 3).join(',')})`;
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
onClick(e) {
|
||||
this.$emit('click', e);
|
||||
@@ -62,8 +72,7 @@ export default Vue.extend({
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
|
||||
root(isDark)
|
||||
.mk-avatar
|
||||
display inline-block
|
||||
vertical-align bottom
|
||||
|
||||
@@ -74,7 +83,7 @@ root(isDark)
|
||||
&.cat::before,
|
||||
&.cat::after
|
||||
background #df548f
|
||||
border solid 4px isDark ? #e0eefd : #202224
|
||||
border solid 4px currentColor
|
||||
box-sizing border-box
|
||||
content ''
|
||||
display inline-block
|
||||
@@ -100,9 +109,4 @@ root(isDark)
|
||||
transition border-radius 1s ease
|
||||
z-index 1
|
||||
|
||||
.mk-avatar[data-darkmode]
|
||||
root(true)
|
||||
|
||||
.mk-avatar:not([data-darkmode])
|
||||
root(false)
|
||||
</style>
|
||||
|
||||
@@ -57,7 +57,7 @@ export default Vue.extend({
|
||||
}
|
||||
|
||||
// Check internet connection
|
||||
fetch('https://google.com?rand=' + Math.random(), {
|
||||
fetch(`https://google.com?rand=${Math.random()}`, {
|
||||
mode: 'no-cors'
|
||||
}).then(() => {
|
||||
this.internet = true;
|
||||
|
||||
@@ -39,7 +39,7 @@ export default Vue.extend({
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
@import '~const.styl'
|
||||
|
||||
|
||||
.mk-connect-failed
|
||||
width 100%
|
||||
@@ -70,17 +70,17 @@ export default Vue.extend({
|
||||
display block
|
||||
margin 1em auto 0 auto
|
||||
padding 8px 10px
|
||||
color $theme-color-foreground
|
||||
background $theme-color
|
||||
color var(--primaryForeground)
|
||||
background var(--primary)
|
||||
|
||||
&:focus
|
||||
outline solid 3px rgba($theme-color, 0.3)
|
||||
outline solid 3px var(--primaryAlpha03)
|
||||
|
||||
&:hover
|
||||
background lighten($theme-color, 10%)
|
||||
background var(--primaryLighten10)
|
||||
|
||||
&:active
|
||||
background darken($theme-color, 10%)
|
||||
background var(--primaryDarken10)
|
||||
|
||||
> .thanks
|
||||
display block
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user