Compare commits
1377 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cb0874f15a | ||
|
|
9239e37b45 | ||
|
|
57d80932a4 | ||
|
|
8569970fbe | ||
|
|
713e9ad5f4 | ||
|
|
59e229d962 | ||
|
|
3c5f09cda2 | ||
|
|
e42aa2530d | ||
|
|
1fd298ac9c | ||
|
|
1a73f52541 | ||
|
|
27e458f884 | ||
|
|
ba3e2a9371 | ||
|
|
831e8f8583 | ||
|
|
0ff390ed80 | ||
|
|
e3b8495431 | ||
|
|
da10ba3fea | ||
|
|
cc7de853b4 | ||
|
|
23d8235197 | ||
|
|
37e3d60ade | ||
|
|
83a3426dd5 | ||
|
|
a2549192ca | ||
|
|
9d3a1cab6e | ||
|
|
06f8d8f0a3 | ||
|
|
fa66b79e2d | ||
|
|
81312f5a93 | ||
|
|
ad84901f39 | ||
|
|
d2385a0e52 | ||
|
|
39285fc2d0 | ||
|
|
6e491c1466 | ||
|
|
84152aa663 | ||
|
|
600fc65c2f | ||
|
|
40e2733424 | ||
|
|
bceb02d760 | ||
|
|
aaaaf2681a | ||
|
|
3c3ef9bba0 | ||
|
|
338f3a981f | ||
|
|
a86ae9fa50 | ||
|
|
a3c4e8a1bc | ||
|
|
6a7c18e8db | ||
|
|
672b7a4c3d | ||
|
|
bf3fee4481 | ||
|
|
a3c8d1d732 | ||
|
|
bb03d8c49a | ||
|
|
fbd5abe3b6 | ||
|
|
5ac390abe9 | ||
|
|
766cae2299 | ||
|
|
d9828fdc6a | ||
|
|
4114ce4a04 | ||
|
|
6090630260 | ||
|
|
259cfeae17 | ||
|
|
ebe15c4711 | ||
|
|
75a740a110 | ||
|
|
0c085c4f74 | ||
|
|
1d819e79db | ||
|
|
515b79dcf0 | ||
|
|
269e12abb4 | ||
|
|
cf5be6ff5a | ||
|
|
f140adbc9d | ||
|
|
6c31406bb0 | ||
|
|
b6e8626908 | ||
|
|
64a3a4915a | ||
|
|
fd71f24d46 | ||
|
|
65b5c6753f | ||
|
|
7408bbce37 | ||
|
|
0f58978c9f | ||
|
|
01ca3fd6b2 | ||
|
|
26c366156b | ||
|
|
9d8f7b081d | ||
|
|
9d8ebb795d | ||
|
|
8be98e4cb8 | ||
|
|
3c229c9950 | ||
|
|
f2263faf7d | ||
|
|
39c7cf3e66 | ||
|
|
5ee24e5c09 | ||
|
|
a34fdc2068 | ||
|
|
2c2cd893b8 | ||
|
|
a43b0548ed | ||
|
|
93e95f56f4 | ||
|
|
cb0673b1ec | ||
|
|
cd018db945 | ||
|
|
50fe67b99b | ||
|
|
1dba82aae5 | ||
|
|
17c6d64750 | ||
|
|
b4c04efa23 | ||
|
|
152dd74abf | ||
|
|
0985f7f609 | ||
|
|
aecf9329bd | ||
|
|
b2384605e7 | ||
|
|
57ab5ab604 | ||
|
|
e493a20301 | ||
|
|
0bd5ed937c | ||
|
|
6a9b3bc64e | ||
|
|
4c1ef3e6a5 | ||
|
|
2ea250f954 | ||
|
|
5d810980f8 | ||
|
|
d51b4e27cc | ||
|
|
c01c555309 | ||
|
|
ce2e66d9b0 | ||
|
|
9550acd61e | ||
|
|
d95b5daa6d | ||
|
|
56d571c0f0 | ||
|
|
dc9a19b9c7 | ||
|
|
88a2c7715a | ||
|
|
2fa8cb1b73 | ||
|
|
5f8a66fdb9 | ||
|
|
57320a94f9 | ||
|
|
89f045d624 | ||
|
|
1a77dea7ed | ||
|
|
532a7b90f3 | ||
|
|
4e8c200349 | ||
|
|
d063d59a91 | ||
|
|
90429b787c | ||
|
|
7a2ef04ec3 | ||
|
|
76a9ea8d3d | ||
|
|
0a05a2d060 | ||
|
|
a7e2ee3b0c | ||
|
|
40efa90dd5 | ||
|
|
4ca0a22bfc | ||
|
|
20a943b193 | ||
|
|
552df8737d | ||
|
|
860f622d79 | ||
|
|
e76bf5707a | ||
|
|
bf37a72f59 | ||
|
|
840ad75830 | ||
|
|
4c7dd7228f | ||
|
|
46a51addad | ||
|
|
0a5fe37025 | ||
|
|
00bb403497 | ||
|
|
11afa8140c | ||
|
|
850396e9da | ||
|
|
5ee75be49e | ||
|
|
879116a20c | ||
|
|
e509b1f488 | ||
|
|
468ff7037f | ||
|
|
df23504ccf | ||
|
|
66e3cb8eda | ||
|
|
6ddd2389dc | ||
|
|
402efb8c50 | ||
|
|
7b6eae0ce4 | ||
|
|
26ce9725ce | ||
|
|
ebfaa18f12 | ||
|
|
cc81d41a05 | ||
|
|
212176ee5c | ||
|
|
a63ec05e41 | ||
|
|
0dcb527bf3 | ||
|
|
54710f17fc | ||
|
|
e58a6593c0 | ||
|
|
62132570e1 | ||
|
|
9f0b8ba2f8 | ||
|
|
adbe0fbcd1 | ||
|
|
7896242f57 | ||
|
|
4a6722b9e9 | ||
|
|
7c9fb5228b | ||
|
|
81805b01cc | ||
|
|
50824a7245 | ||
|
|
6f2953f3a7 | ||
|
|
dd3f007582 | ||
|
|
a4b2b093fc | ||
|
|
0fbf56219f | ||
|
|
0acacf7a8e | ||
|
|
c84500d914 | ||
|
|
a9cfbda858 | ||
|
|
33e79e4bb8 | ||
|
|
fab389e624 | ||
|
|
b1b02d0e32 | ||
|
|
0b40194d31 | ||
|
|
c2038bec73 | ||
|
|
8674d55c8e | ||
|
|
c7c0c9e79d | ||
|
|
2dff48167c | ||
|
|
71d42f64dc | ||
|
|
1b4072610a | ||
|
|
3826a820bb | ||
|
|
625eb376ae | ||
|
|
72cbab6514 | ||
|
|
c7a7059e26 | ||
|
|
550593b208 | ||
|
|
f76255fa63 | ||
|
|
15a2881083 | ||
|
|
37bfb79123 | ||
|
|
b62203b1f1 | ||
|
|
16136c252a | ||
|
|
75864a5125 | ||
|
|
a59f53e6da | ||
|
|
2ceaccf9ab | ||
|
|
036d46c459 | ||
|
|
5d3d78a73e | ||
|
|
6012e98ae6 | ||
|
|
9c0e990568 | ||
|
|
6167ed4c9f | ||
|
|
988d5405c3 | ||
|
|
ad0ea2fab2 | ||
|
|
d62c67208f | ||
|
|
2da1432e52 | ||
|
|
69eefc1425 | ||
|
|
27bdb26202 | ||
|
|
8b9454eaee | ||
|
|
6827bc0624 | ||
|
|
1fa24d709d | ||
|
|
fa4ea494bf | ||
|
|
9f32713093 | ||
|
|
380f9bb975 | ||
|
|
5bcce97ff0 | ||
|
|
825fdb2475 | ||
|
|
460bb21c1e | ||
|
|
251cef3129 | ||
|
|
d81c87af22 | ||
|
|
8f58e7208d | ||
|
|
cf0b7e26b5 | ||
|
|
3a1c3f9656 | ||
|
|
035bdd0279 | ||
|
|
f7c596beac | ||
|
|
ac8817ef34 | ||
|
|
372db65604 | ||
|
|
4a92635eae | ||
|
|
5e140d9a11 | ||
|
|
0b53ef9bae | ||
|
|
3f79c9ae49 | ||
|
|
5d882dc3df | ||
|
|
5b4205bdbc | ||
|
|
20cf2b3f77 | ||
|
|
3c0d2db3bc | ||
|
|
9aa65fb600 | ||
|
|
4dcb15ef0d | ||
|
|
ae6293cb6b | ||
|
|
2614771a7c | ||
|
|
ba2ebfad4f | ||
|
|
51ba738c4b | ||
|
|
c8081ed353 | ||
|
|
500fc47618 | ||
|
|
276edd7cc2 | ||
|
|
a9436306ab | ||
|
|
21d9afebc3 | ||
|
|
ab66162dbe | ||
|
|
0aacca3e78 | ||
|
|
bdcaa07cc8 | ||
|
|
5b684c6deb | ||
|
|
5ef8a8b5f0 | ||
|
|
10fa824f95 | ||
|
|
fccbecf159 | ||
|
|
60ef3e3563 | ||
|
|
ba845f5218 | ||
|
|
5105981e93 | ||
|
|
f05a688ac2 | ||
|
|
4bc919a912 | ||
|
|
25a69ec1b6 | ||
|
|
21303bd06a | ||
|
|
480d1c9f09 | ||
|
|
57f6ce280e | ||
|
|
f052d8912b | ||
|
|
6c95120023 | ||
|
|
24766fb79e | ||
|
|
300d3da6ff | ||
|
|
d779e18546 | ||
|
|
3261d54cd3 | ||
|
|
e0ec56abb5 | ||
|
|
1056a7167d | ||
|
|
b8e1162e2d | ||
|
|
4c81e400c4 | ||
|
|
a29d7a0475 | ||
|
|
d5408c429b | ||
|
|
501b07c383 | ||
|
|
9dd21a19ff | ||
|
|
a8d05cba5a | ||
|
|
f5ddfb29f2 | ||
|
|
ba228a6b10 | ||
|
|
cb6f390fb6 | ||
|
|
5675ecead9 | ||
|
|
001bb7bbcd | ||
|
|
1585bb12cf | ||
|
|
26b47c18fd | ||
|
|
665fa7f2aa | ||
|
|
0068dc30d3 | ||
|
|
8f39655fef | ||
|
|
b1a4fc03bc | ||
|
|
05d20f1044 | ||
|
|
66a90b3fb1 | ||
|
|
826d9d9fdf | ||
|
|
4a9a61f108 | ||
|
|
b72d15b56c | ||
|
|
8c68992594 | ||
|
|
c052028fc3 | ||
|
|
c46fbcf345 | ||
|
|
06b66f0209 | ||
|
|
2de48110bb | ||
|
|
87d4452d19 | ||
|
|
328fc64ca9 | ||
|
|
a6f8327aa2 | ||
|
|
d5ab6b41c9 | ||
|
|
ffdd0b7de7 | ||
|
|
1808eb6eee | ||
|
|
438563b505 | ||
|
|
92dfcdad57 | ||
|
|
c178cfabfa | ||
|
|
260e4c955d | ||
|
|
0c46f5ce70 | ||
|
|
6d67cd07a0 | ||
|
|
fb8af53751 | ||
|
|
37999f4af7 | ||
|
|
3b6ab327c1 | ||
|
|
d3ff3a7d54 | ||
|
|
cf36106520 | ||
|
|
1642fbec31 | ||
|
|
b195fd8145 | ||
|
|
5f59b980a7 | ||
|
|
2a5c19cd01 | ||
|
|
42e007ddb7 | ||
|
|
756dc397d9 | ||
|
|
8f714b5b12 | ||
|
|
06bb2a1c7c | ||
|
|
ac50bb9225 | ||
|
|
8fd95de25b | ||
|
|
0e14b2eba4 | ||
|
|
08413a7550 | ||
|
|
5e0f2a5b06 | ||
|
|
3b505709c6 | ||
|
|
af32d1f81e | ||
|
|
67d8773e38 | ||
|
|
e445d39c2f | ||
|
|
961ed969db | ||
|
|
e9a3495225 | ||
|
|
6c5a78aeb2 | ||
|
|
34e249317a | ||
|
|
6d8ea89f09 | ||
|
|
64f89ba13e | ||
|
|
f6b2f76bbf | ||
|
|
1235bef038 | ||
|
|
2e11f3a843 | ||
|
|
84b7e0bb7d | ||
|
|
9f5dc2c0df | ||
|
|
e640dbc501 | ||
|
|
85db090d9f | ||
|
|
9f2d8e1d51 | ||
|
|
0c98a90b75 | ||
|
|
0047920c1a | ||
|
|
e4bb534f20 | ||
|
|
3fc04fcdc5 | ||
|
|
e542dcac30 | ||
|
|
a0b13505a0 | ||
|
|
389f9bfea2 | ||
|
|
630a534cee | ||
|
|
5744c391e6 | ||
|
|
b9b05a7401 | ||
|
|
359470a263 | ||
|
|
3fe934ee62 | ||
|
|
3abe632f06 | ||
|
|
65961bc15b | ||
|
|
12f932d48a | ||
|
|
54e9147782 | ||
|
|
31b7626d01 | ||
|
|
200ebefe92 | ||
|
|
9d29a2e85a | ||
|
|
c62a225542 | ||
|
|
d5d995a3e6 | ||
|
|
b7f10fdc10 | ||
|
|
cbba03b376 | ||
|
|
f84e9c7dc8 | ||
|
|
a22ddb1fb9 | ||
|
|
0d23ce3d45 | ||
|
|
9719387bee | ||
|
|
dca110ebaa | ||
|
|
136f23c7ad | ||
|
|
0963e6d6e1 | ||
|
|
712802e682 | ||
|
|
abe99c3c73 | ||
|
|
d7a3b71028 | ||
|
|
10c434f24a | ||
|
|
fe46c53ea6 | ||
|
|
cdd123dfd3 | ||
|
|
a1a3ee44b5 | ||
|
|
4e7fbd8967 | ||
|
|
a86c419f95 | ||
|
|
e3ec0ad97e | ||
|
|
75791981ce | ||
|
|
e813fe16b9 | ||
|
|
42ac7b954d | ||
|
|
c1bbf5dab6 | ||
|
|
e16dc2a910 | ||
|
|
e236c05d79 | ||
|
|
454c1e3faf | ||
|
|
43daf814df | ||
|
|
c40b630530 | ||
|
|
7fc0698ecf | ||
|
|
4f3c8b940e | ||
|
|
1855ab60f1 | ||
|
|
af4f1a7bd6 | ||
|
|
8646a9c49c | ||
|
|
8d7c033cf5 | ||
|
|
b8900e32de | ||
|
|
d48c25d2c9 | ||
|
|
a87c5899c5 | ||
|
|
147ad69864 | ||
|
|
c146006476 | ||
|
|
a0f10d7ca1 | ||
|
|
299b91edc4 | ||
|
|
95c89ca6db | ||
|
|
7fe0d71e7f | ||
|
|
fbbb506e86 | ||
|
|
ec80b06a45 | ||
|
|
41e1619f1f | ||
|
|
ba6a9c6a93 | ||
|
|
18571c52fb | ||
|
|
5d5dfeaa83 | ||
|
|
3669d8c0f3 | ||
|
|
69d72819c6 | ||
|
|
54dcc10250 | ||
|
|
1edfce8f73 | ||
|
|
675e573a8c | ||
|
|
1080fa63a9 | ||
|
|
8047086988 | ||
|
|
449b9f7fa0 | ||
|
|
b7a15bf6ca | ||
|
|
7c3873887d | ||
|
|
247ea4cf12 | ||
|
|
0b7af5c669 | ||
|
|
2b62a4e2e5 | ||
|
|
65bfa3c0d6 | ||
|
|
84db15694d | ||
|
|
746189ba37 | ||
|
|
74e845b3ac | ||
|
|
90fe70540e | ||
|
|
f28af75191 | ||
|
|
924bb2bc70 | ||
|
|
19d60f3d51 | ||
|
|
6903476868 | ||
|
|
cf0dccc209 | ||
|
|
cfd959129d | ||
|
|
819287951c | ||
|
|
e136193925 | ||
|
|
8c631864d9 | ||
|
|
d7d0f6ae2e | ||
|
|
b83b3fb9d1 | ||
|
|
dfce5bc0af | ||
|
|
3487ddabea | ||
|
|
2dbff75e7a | ||
|
|
02465ded9f | ||
|
|
ffcd387945 | ||
|
|
4806346707 | ||
|
|
31c3f6abf7 | ||
|
|
83e47fdd60 | ||
|
|
340ce7fa4c | ||
|
|
ac86fee9b4 | ||
|
|
6dfa283d7a | ||
|
|
0cce8a4d21 | ||
|
|
1c6d9ab2ef | ||
|
|
6ca265e579 | ||
|
|
c612c4bf18 | ||
|
|
481a791a60 | ||
|
|
cb516c2943 | ||
|
|
c0abd6f0c0 | ||
|
|
47695ed685 | ||
|
|
4ca8020ef5 | ||
|
|
bfac83d5b8 | ||
|
|
4cd2e55fd3 | ||
|
|
61c7e7bc48 | ||
|
|
bef41718e2 | ||
|
|
5b4b52bb97 | ||
|
|
8901b6d774 | ||
|
|
e3a24e9215 | ||
|
|
a515c1f53e | ||
|
|
2e22874dec | ||
|
|
30f0b1c30d | ||
|
|
600aea4dbb | ||
|
|
f5d53d784d | ||
|
|
1061e1f7ae | ||
|
|
1d5fc04aa6 | ||
|
|
d1cf0c7998 | ||
|
|
84218abf2b | ||
|
|
5bebdb2511 | ||
|
|
9c8e9b4165 | ||
|
|
7b786bfde3 | ||
|
|
42a08642a4 | ||
|
|
e88f7ca7b2 | ||
|
|
c26ed1421b | ||
|
|
ed2f94a3c1 | ||
|
|
daba7fe87c | ||
|
|
afc9caf7bf | ||
|
|
67697a7aa6 | ||
|
|
1623d9e70c | ||
|
|
c304351335 | ||
|
|
c1520763c6 | ||
|
|
4853bc9414 | ||
|
|
e7c865f8e3 | ||
|
|
46cb377bc2 | ||
|
|
373a5ba3e1 | ||
|
|
3bedef67c8 | ||
|
|
17ea19ada8 | ||
|
|
1f5b2285fd | ||
|
|
17f0001966 | ||
|
|
04ba09a6af | ||
|
|
70d2744319 | ||
|
|
6b2f0929ec | ||
|
|
f2629bd3f2 | ||
|
|
9e6c29c3c0 | ||
|
|
abda973094 | ||
|
|
86b08dd5bd | ||
|
|
617e331f0f | ||
|
|
cc438a9372 | ||
|
|
b0fb218bfd | ||
|
|
fc85a607e6 | ||
|
|
fb244c45e3 | ||
|
|
c123784c54 | ||
|
|
342a5276fc | ||
|
|
51a32846ee | ||
|
|
35865429a8 | ||
|
|
aadd5b95b8 | ||
|
|
f9f2ca51ac | ||
|
|
1cb93a8c10 | ||
|
|
7e5dbb2ba5 | ||
|
|
2772e3d80e | ||
|
|
223c578734 | ||
|
|
d01315dee2 | ||
|
|
7dafb4ce4c | ||
|
|
9671db9b14 | ||
|
|
bec559f67c | ||
|
|
14053c1394 | ||
|
|
55e4b1c828 | ||
|
|
dda3421159 | ||
|
|
45e7488e60 | ||
|
|
30c7bd66b7 | ||
|
|
af4f5bdac0 | ||
|
|
3d1a8cc341 | ||
|
|
0e52fb2544 | ||
|
|
e6d6c0a17c | ||
|
|
cfd2d47e00 | ||
|
|
83301a879d | ||
|
|
d7881ba129 | ||
|
|
b9fef1edf7 | ||
|
|
2c606f7b23 | ||
|
|
03797607ed | ||
|
|
254b7f500d | ||
|
|
51edd51bf2 | ||
|
|
0d403f4a3f | ||
|
|
0fa134addd | ||
|
|
7002270084 | ||
|
|
1c5452d047 | ||
|
|
f0d62c07bf | ||
|
|
496ca55bba | ||
|
|
79cfba226b | ||
|
|
f69b60dffe | ||
|
|
513385133f | ||
|
|
6f1e2f6636 | ||
|
|
8ae94c034d | ||
|
|
cd9696f25e | ||
|
|
d62a6bab41 | ||
|
|
20df002746 | ||
|
|
fa6b01546e | ||
|
|
91b37a6e52 | ||
|
|
d8171d7c8b | ||
|
|
fa96e2daf1 | ||
|
|
87708c3b84 | ||
|
|
6319023cc9 | ||
|
|
efad9d1b60 | ||
|
|
a1dea657fa | ||
|
|
6b1b75717b | ||
|
|
efe08e0bd3 | ||
|
|
62892c4894 | ||
|
|
0c2a62da11 | ||
|
|
5bc9e9aadd | ||
|
|
112c33d35b | ||
|
|
864da3030f | ||
|
|
f2e719b361 | ||
|
|
6aab515389 | ||
|
|
819b535ab0 | ||
|
|
60e95ac2ac | ||
|
|
9b94ddff0a | ||
|
|
174f8022eb | ||
|
|
ddc3c5ba68 | ||
|
|
a7e6b766be | ||
|
|
befc35a3ac | ||
|
|
2e9bbf389e | ||
|
|
80b5fda292 | ||
|
|
c48cbd95f6 | ||
|
|
931bdc6aac | ||
|
|
7f81506c8b | ||
|
|
b4b9e76c8d | ||
|
|
e5a3dcf868 | ||
|
|
825648535c | ||
|
|
5cbc908ba3 | ||
|
|
895cf53ee1 | ||
|
|
e41f74e77c | ||
|
|
c21caad1c5 | ||
|
|
86fcd3a378 | ||
|
|
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 | ||
|
|
935b074a7a | ||
|
|
9d9c609bfb | ||
|
|
f6a664f181 | ||
|
|
fce68d1f75 | ||
|
|
88739c2444 | ||
|
|
7e2f10fce3 | ||
|
|
a494c3a5cc | ||
|
|
d6bb702883 | ||
|
|
d15a972c68 | ||
|
|
2ae7d31725 | ||
|
|
2e329b1888 | ||
|
|
522d40328b | ||
|
|
2ecbff45bf | ||
|
|
b6f7282c13 |
@@ -30,7 +30,7 @@ while :
|
|||||||
touch patreon.cache && \
|
touch patreon.cache && \
|
||||||
rm patreon.cache && \
|
rm patreon.cache && \
|
||||||
cat patreon.raw.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 && \
|
echo '<table><tr>' >> patreon.md.cache && \
|
||||||
cat patreon.cache | \
|
cat patreon.cache | \
|
||||||
awk -F'\t' '{print $2,$1}' | \
|
awk -F'\t' '{print $2,$1}' | \
|
||||||
|
|||||||
168
.circleci/config.yml
Normal file
168
.circleci/config.yml
Normal file
@@ -0,0 +1,168 @@
|
|||||||
|
version: 2.1
|
||||||
|
|
||||||
|
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
|
||||||
|
alpine:
|
||||||
|
working_directory: /tmp/workspace
|
||||||
|
docker:
|
||||||
|
- image: alpine:latest
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
ok:
|
||||||
|
executor: alpine
|
||||||
|
steps:
|
||||||
|
- run:
|
||||||
|
name: OK
|
||||||
|
command: |
|
||||||
|
echo -e '\033[0;32mOK\033[0;39m'
|
||||||
|
|
||||||
|
build:
|
||||||
|
executor: default
|
||||||
|
steps:
|
||||||
|
- checkout
|
||||||
|
- run:
|
||||||
|
name: Ensure package-lock.json
|
||||||
|
command: |
|
||||||
|
[ ! -e package-lock.json ] && echo '{}' > package-lock.json
|
||||||
|
- 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
|
||||||
|
npm prune
|
||||||
|
- run:
|
||||||
|
name: Configure
|
||||||
|
command: |
|
||||||
|
cp .circleci/misskey/default.yml .config
|
||||||
|
cp .circleci/misskey/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 -t misskey/misskey .
|
||||||
|
- when:
|
||||||
|
condition: <<parameters.with_deploy>>
|
||||||
|
steps:
|
||||||
|
- run:
|
||||||
|
name: Deploy
|
||||||
|
command: |
|
||||||
|
if [ "$DOCKERHUB_USERNAME$DOCKERHUB_PASSWORD" ]
|
||||||
|
then
|
||||||
|
apk update && apk add jq
|
||||||
|
docker tag misskey/misskey misskey/misskey:$(cat package.json | jq -r .version)
|
||||||
|
docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASSWORD
|
||||||
|
docker push misskey/misskey
|
||||||
|
else
|
||||||
|
echo -e '\033[0;33mAborted deploying to Docker Hub\033[0;39m'
|
||||||
|
fi
|
||||||
|
|
||||||
|
workflows:
|
||||||
|
version: 2
|
||||||
|
build-and-test:
|
||||||
|
jobs:
|
||||||
|
- ok:
|
||||||
|
filters:
|
||||||
|
branches:
|
||||||
|
only:
|
||||||
|
- l10n_develop
|
||||||
|
- imgbot
|
||||||
|
- build:
|
||||||
|
filters:
|
||||||
|
branches:
|
||||||
|
ignore:
|
||||||
|
- l10n_develop
|
||||||
|
- imgbot
|
||||||
|
- test:
|
||||||
|
requires:
|
||||||
|
- build
|
||||||
|
filters:
|
||||||
|
branches:
|
||||||
|
ignore:
|
||||||
|
# - master
|
||||||
|
- l10n_develop
|
||||||
|
- imgbot
|
||||||
|
- test:
|
||||||
|
without_redis: "true"
|
||||||
|
requires:
|
||||||
|
- build
|
||||||
|
filters:
|
||||||
|
branches:
|
||||||
|
only: master
|
||||||
|
# - docker:
|
||||||
|
# filters:
|
||||||
|
# branches:
|
||||||
|
# ignore: master
|
||||||
|
- docker:
|
||||||
|
with_deploy: "true"
|
||||||
|
filters:
|
||||||
|
branches:
|
||||||
|
only: master
|
||||||
12
.circleci/misskey/default.yml
Normal file
12
.circleci/misskey/default.yml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
url: 'http://misskey.local'
|
||||||
|
port: 80
|
||||||
|
mongodb:
|
||||||
|
host: localhost
|
||||||
|
port: 27017
|
||||||
|
db: misskey
|
||||||
|
user: syuilo
|
||||||
|
pass: ''
|
||||||
|
redis:
|
||||||
|
host: localhost
|
||||||
|
port: 6379
|
||||||
|
pass: ''
|
||||||
13
.circleci/misskey/test.yml
Normal file
13
.circleci/misskey/test.yml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
url: 'http://misskey.local'
|
||||||
|
port: 80
|
||||||
|
mongodb:
|
||||||
|
host: localhost
|
||||||
|
port: 27017
|
||||||
|
db: test-misskey
|
||||||
|
user: admin
|
||||||
|
pass: ''
|
||||||
|
# __REDIS__
|
||||||
|
redis:
|
||||||
|
host: localhost
|
||||||
|
port: 6379
|
||||||
|
pass: ''
|
||||||
@@ -1,13 +1,3 @@
|
|||||||
name: example-instance-name # Name of your instance
|
|
||||||
description: example-description # Description of your instance
|
|
||||||
|
|
||||||
maintainer:
|
|
||||||
name: example-maitainer-name # Your name
|
|
||||||
url: http://example.com/ # Your contact (http or mailto)
|
|
||||||
repository_url: https://github.com/syuilo/misskey # Repository URL
|
|
||||||
feedback_url: https://github.com/syuilo/misskey/issues # Feedback URL (e.g. github issue)
|
|
||||||
|
|
||||||
|
|
||||||
# Final accessible URL seen by a user.
|
# Final accessible URL seen by a user.
|
||||||
url: https://example.tld/
|
url: https://example.tld/
|
||||||
|
|
||||||
@@ -25,7 +15,7 @@ url: https://example.tld/
|
|||||||
# +------+ |+-------------+ +----------------+|
|
# +------+ |+-------------+ +----------------+|
|
||||||
# +---------------------------------------+
|
# +---------------------------------------+
|
||||||
#
|
#
|
||||||
# You need to setup reverse proxy. (eg. Nginx)
|
# You need to setup reverse proxy. (eg. nginx)
|
||||||
# You do not define 'https' section.
|
# You do not define 'https' section.
|
||||||
|
|
||||||
# Option 2: Standalone
|
# Option 2: Standalone
|
||||||
@@ -60,21 +50,6 @@ mongodb:
|
|||||||
user: example-misskey-user
|
user: example-misskey-user
|
||||||
pass: example-misskey-pass
|
pass: example-misskey-pass
|
||||||
|
|
||||||
# Drive capacity of a local user (MB)
|
|
||||||
localDriveCapacityMb: 256
|
|
||||||
|
|
||||||
# Drive capacity of a remote user (MB)
|
|
||||||
remoteDriveCapacityMb: 8
|
|
||||||
|
|
||||||
# If enabled:
|
|
||||||
# Server will not cache remote files (Using direct link instead).
|
|
||||||
# You can save your storage.
|
|
||||||
#
|
|
||||||
# NOTE:
|
|
||||||
# * Users cannot see remote images when they turn off "Show media from a remote server" setting.
|
|
||||||
# * Since thumbnails are not provided, traffic increases.
|
|
||||||
preventCacheRemoteFiles: false
|
|
||||||
|
|
||||||
drive:
|
drive:
|
||||||
storage: 'db'
|
storage: 'db'
|
||||||
|
|
||||||
@@ -113,6 +88,10 @@ drive:
|
|||||||
# accessKey: XXX
|
# accessKey: XXX
|
||||||
# secretKey: YYY
|
# secretKey: YYY
|
||||||
|
|
||||||
|
# If enabled:
|
||||||
|
# The first account created is automatically marked as Admin.
|
||||||
|
autoAdmin: true
|
||||||
|
|
||||||
#
|
#
|
||||||
# Below settings are optional
|
# Below settings are optional
|
||||||
#
|
#
|
||||||
@@ -129,11 +108,6 @@ drive:
|
|||||||
# port: 9200
|
# port: 9200
|
||||||
# pass: null
|
# pass: null
|
||||||
|
|
||||||
# reCAPTCHA
|
|
||||||
#recaptcha:
|
|
||||||
# site_key: example-site-key
|
|
||||||
# secret_key: example-secret-key
|
|
||||||
|
|
||||||
# ServiceWorker
|
# ServiceWorker
|
||||||
#sw:
|
#sw:
|
||||||
# # Public key of VAPID
|
# # Public key of VAPID
|
||||||
@@ -142,17 +116,6 @@ drive:
|
|||||||
# # Private key of VAPID
|
# # Private key of VAPID
|
||||||
# private_key: example-sw-private-key
|
# 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
|
|
||||||
|
|
||||||
# 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
|
|
||||||
|
|
||||||
# Clustering
|
# Clustering
|
||||||
#clusterLimit: 1
|
#clusterLimit: 1
|
||||||
|
|
||||||
|
|||||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -16,3 +16,4 @@ api-docs.json
|
|||||||
/redis
|
/redis
|
||||||
/mongo
|
/mongo
|
||||||
/elasticsearch
|
/elasticsearch
|
||||||
|
*.code-workspace
|
||||||
|
|||||||
41
.travis.yml
41
.travis.yml
@@ -1,41 +0,0 @@
|
|||||||
# travis file
|
|
||||||
# https://docs.travis-ci.com/user/customizing-the-build
|
|
||||||
|
|
||||||
notifications:
|
|
||||||
email: false
|
|
||||||
|
|
||||||
branches:
|
|
||||||
except:
|
|
||||||
- l10n_master
|
|
||||||
|
|
||||||
language: node_js
|
|
||||||
|
|
||||||
node_js:
|
|
||||||
- 10.1.0
|
|
||||||
|
|
||||||
env:
|
|
||||||
- CXX=g++-4.8 NODE_ENV=production
|
|
||||||
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
packages:
|
|
||||||
- g++-4.8
|
|
||||||
|
|
||||||
cache:
|
|
||||||
directories:
|
|
||||||
- node_modules
|
|
||||||
|
|
||||||
services:
|
|
||||||
- mongodb
|
|
||||||
- redis-server
|
|
||||||
|
|
||||||
before_script:
|
|
||||||
- npm install
|
|
||||||
|
|
||||||
# 設定ファイルを配置
|
|
||||||
- cp ./.travis/default.yml ./.config
|
|
||||||
- cp ./.travis/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
|
|
||||||
@@ -6,14 +6,14 @@ Feature suggestions and bug reports are filed in https://github.com/syuilo/missk
|
|||||||
Before creating a new issue, please search existing issues to avoid duplication.
|
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.
|
If you find the existing issue, please add your reaction or comment to the issue.
|
||||||
|
|
||||||
## Internationalization (i18n)
|
|
||||||
Please see [Translation guide](./docs/translate.en.md).
|
|
||||||
|
|
||||||
## Localization (l10n)
|
## Localization (l10n)
|
||||||
Please use [Crowdin](https://crowdin.com/project/misskey) for localization.
|
Please use [Crowdin](https://crowdin.com/project/misskey) for localization.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
## Internationalization (i18n)
|
||||||
|
Misskey uses [vue-i18n](https://github.com/kazupon/vue-i18n).
|
||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
* Documents for contributors are located in `/docs`.
|
* Documents for contributors are located in `/docs`.
|
||||||
* Documents for instance admins are located in `/docs`.
|
* Documents for instance admins are located in `/docs`.
|
||||||
@@ -23,5 +23,5 @@ Please use [Crowdin](https://crowdin.com/project/misskey) for localization.
|
|||||||
* Test codes are located in `/test`.
|
* Test codes are located in `/test`.
|
||||||
|
|
||||||
## Continuous integration
|
## Continuous integration
|
||||||
Misskey uses Travis for automated test.
|
Misskey uses CircleCI for automated test.
|
||||||
Configuration files are located in `/.travis`.
|
Configuration files are located in `/.circleci`.
|
||||||
|
|||||||
43
Dockerfile
43
Dockerfile
@@ -1,28 +1,43 @@
|
|||||||
FROM alpine:latest AS base
|
FROM node:11-alpine AS base
|
||||||
|
|
||||||
ENV NODE_ENV=production
|
ENV NODE_ENV=production
|
||||||
|
|
||||||
RUN apk add --no-cache nodejs nodejs-npm
|
RUN npm i -g npm@latest
|
||||||
RUN apk add vips fftw --update-cache --repository https://dl-3.alpinelinux.org/alpine/edge/testing/
|
|
||||||
WORKDIR /misskey
|
WORKDIR /misskey
|
||||||
COPY . ./
|
|
||||||
|
|
||||||
FROM base AS builder
|
FROM base AS builder
|
||||||
|
|
||||||
RUN apk add --no-cache gcc g++ python autoconf automake file make nasm
|
RUN apk add --no-cache \
|
||||||
RUN apk add vips-dev fftw-dev --update-cache --repository https://dl-3.alpinelinux.org/alpine/edge/testing/
|
gcc \
|
||||||
RUN npm install \
|
g++ \
|
||||||
&& npm install -g node-gyp \
|
libc-dev \
|
||||||
&& node-gyp configure \
|
python \
|
||||||
&& node-gyp build \
|
autoconf \
|
||||||
&& npm run build
|
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
|
FROM base AS runner
|
||||||
|
|
||||||
COPY --from=builder /misskey/built ./built
|
|
||||||
COPY --from=builder /misskey/node_modules ./node_modules
|
|
||||||
|
|
||||||
RUN apk add --no-cache tini
|
RUN apk add --no-cache tini
|
||||||
ENTRYPOINT ["/sbin/tini", "--"]
|
ENTRYPOINT ["/sbin/tini", "--"]
|
||||||
|
|
||||||
|
COPY --from=builder /misskey/node_modules ./node_modules
|
||||||
|
COPY --from=builder /misskey/built ./built
|
||||||
|
COPY . ./
|
||||||
|
|
||||||
CMD ["npm", "start"]
|
CMD ["npm", "start"]
|
||||||
|
|||||||
59
README.md
59
README.md
@@ -3,16 +3,18 @@
|
|||||||
[](https://misskey.xyz/)
|
[](https://misskey.xyz/)
|
||||||
================================================================
|
================================================================
|
||||||
|
|
||||||
[![][travis-badge]][travis-link]
|
[](https://circleci.com/gh/syuilo/misskey)
|
||||||
[![][dependencies-badge]][dependencies-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.
|
<p align="justify">
|
||||||
|
<a href="https://misskey.xyz">Misskey</a> is a decentralized microblogging platform born on Earth.
|
||||||
Since it exists within the Fediverse (a universe where various social media platforms are organized),
|
Since it exists within the Fediverse (a universe where various social media platforms are organized),
|
||||||
it is mutually linked with other social media platforms.
|
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? [Find instance!](https://joinmisskey.github.io/)
|
Why don't you take a short break from the hustle and bustle of the city, and dive into a new Internet? <a href="https://joinmisskey.github.io/">Find instance!</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
<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>
|
<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>
|
||||||
|
|
||||||
@@ -24,8 +26,8 @@ Why don't you take a short break from the hustle and bustle of the city, and div
|
|||||||
<img src="/assets/about/post.png" align="left" height="200px"/>
|
<img src="/assets/about/post.png" align="left" height="200px"/>
|
||||||
|
|
||||||
<h3 align="left">Posting</h3>
|
<h3 align="left">Posting</h3>
|
||||||
<p align="left">
|
<p align="justify">
|
||||||
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!
|
Just post your idea, hot topics and anything you want to share. You may decorate your words, attach your favorite pictures or movies, and create a poll - those are all supported in Misskey!
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -33,8 +35,8 @@ Just post your idea, hot topics and anything you want to share. You may want to
|
|||||||
<img src="/assets/about/reaction.png" align="right" height="200px"/>
|
<img src="/assets/about/reaction.png" align="right" height="200px"/>
|
||||||
|
|
||||||
<h3 align="right">Reactions</h3>
|
<h3 align="right">Reactions</h3>
|
||||||
<p align="right">
|
<p align="justify">
|
||||||
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”.
|
The simplest way to tell your emotions to the posts. You can choose the best reaction from various reactions. Reactions on Misskey has much more expressive than other social media which only allows pushing “likes”.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -42,8 +44,8 @@ Easiest way to tell your emotions. Misskey allows you to add various type of rea
|
|||||||
<img src="/assets/about/ui.png" align="left" height="200px"/>
|
<img src="/assets/about/ui.png" align="left" height="200px"/>
|
||||||
|
|
||||||
<h3 align="left">Interface</h3>
|
<h3 align="left">Interface</h3>
|
||||||
<p align="left">
|
<p align="justify">
|
||||||
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.
|
Highly customizable UI for your taste. We understand no UI fits for everyone. Make your graceful home by editing, adjusting layouts of timeline, and placing widgets.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -51,13 +53,13 @@ No UI fits for everyone. Therefore, Misskey has a highly customizable UI for you
|
|||||||
<img src="/assets/about/drive.png" align="right" width="300px"/>
|
<img src="/assets/about/drive.png" align="right" width="300px"/>
|
||||||
|
|
||||||
<h3 align="right">Misskey Drive</h3>
|
<h3 align="right">Misskey Drive</h3>
|
||||||
<p align="right">
|
<p align="justify">
|
||||||
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.
|
Organized uploaded files. Wanna post a picture you have already uploaded? Wish to create a folder for your files? Misskey Drive is the best solution for you.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
and more! You can see it with your own eyes at [misskey.xyz](https://misskey.xyz) or [other instances](https://joinmisskey.github.io/).
|
and more! Now it's time to experience the world with your own eyes at [misskey.xyz](https://misskey.xyz) or [other instances](https://joinmisskey.github.io/).
|
||||||
|
|
||||||
:package: Create your own instance
|
:package: Create your own instance
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
@@ -71,39 +73,46 @@ Please see [Contribution guide](./CONTRIBUTING.md).
|
|||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
<!-- PATREON_START -->
|
<!-- PATREON_START -->
|
||||||
<table><tr>
|
<table><tr>
|
||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/619786/32cf01444db24e578cd1982c197f6fc6/1?token-time=2145916800&token-hash=CXe9AqlZy9AsYfiWd3OBYVOzvODoN47Litz0Tu4BFpU%3D" alt="Gargron"></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/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/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/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/12999811/5f349fafcce44dd1824a8b1ebbec4564/2?token-time=2145916800&token-hash=rwZ8qvbm_kpA4ib3kc07tVKupXeySpY5ATQFGxfL9v0%3D" alt="Xeltica"></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/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/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://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>
|
</tr><tr>
|
||||||
<td><a href="https://www.patreon.com/mastodon">Gargron</a></td>
|
|
||||||
<td><a href="https://www.patreon.com/negao">negao</a></td>
|
<td><a href="https://www.patreon.com/negao">negao</a></td>
|
||||||
<td><a href="https://www.patreon.com/user?u=13099460">ne_moni</a></td>
|
|
||||||
<td><a href="https://www.patreon.com/user?u=12913507">Melilot</a></td>
|
<td><a href="https://www.patreon.com/user?u=12913507">Melilot</a></td>
|
||||||
<td><a href="https://www.patreon.com/AxellaMC">Xeltica</a></td>
|
|
||||||
<td><a href="https://www.patreon.com/user?u=3384329">べすれい</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/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=12718187">Peter G.</a></td>
|
||||||
<td><a href="https://www.patreon.com/user?u=13039004">nemu</a></td>
|
|
||||||
</tr></table>
|
</tr></table>
|
||||||
<table><tr>
|
<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/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/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/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/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/12531784/93a45137841849329ba692da92ac7c60/1?token-time=2145916800&token-hash=tMosUojzUYJCH_3t--tvYA-SMCyrS__hzSndyaRSnbo%3D" alt="Takashi Shibuya"></td>
|
||||||
</tr><tr>
|
</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=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/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/dansup">dansup</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/user?u=12531784">Takashi Shibuya</a></td>
|
||||||
</tr></table>
|
</tr></table>
|
||||||
|
<table><tr>
|
||||||
|
</tr><tr>
|
||||||
|
</tr></table>
|
||||||
|
|
||||||
**Last updated:** Tue, 02 Oct 2018 09:25:07 UTC
|
**Last updated:** Wed, 31 Oct 2018 23:21:06 UTC
|
||||||
<!-- PATREON_END -->
|
<!-- PATREON_END -->
|
||||||
|
|
||||||
:four_leaf_clover: Copyright
|
:four_leaf_clover: Copyright
|
||||||
@@ -116,8 +125,6 @@ Misskey is an open-source software licensed under the [GNU AGPLv3](LICENSE).
|
|||||||
|
|
||||||
[agpl-3.0]: https://www.gnu.org/licenses/agpl-3.0.en.html
|
[agpl-3.0]: https://www.gnu.org/licenses/agpl-3.0.en.html
|
||||||
[agpl-3.0-badge]: https://img.shields.io/badge/license-AGPL--3.0-444444.svg?style=flat-square
|
[agpl-3.0-badge]: https://img.shields.io/badge/license-AGPL--3.0-444444.svg?style=flat-square
|
||||||
[travis-link]: https://travis-ci.org/syuilo/misskey
|
|
||||||
[travis-badge]: http://img.shields.io/travis/syuilo/misskey/master.svg?style=flat-square
|
|
||||||
[dependencies-link]: https://david-dm.org/syuilo/misskey
|
[dependencies-link]: https://david-dm.org/syuilo/misskey
|
||||||
[dependencies-badge]: https://img.shields.io/david/syuilo/misskey.svg?style=flat-square
|
[dependencies-badge]: https://img.shields.io/david/syuilo/misskey.svg?style=flat-square
|
||||||
|
|
||||||
|
|||||||
@@ -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,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);
|
|
||||||
});
|
|
||||||
@@ -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);
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
const updatePerson = require('../built/remote/activitypub/models/person').updatePerson;
|
|
||||||
|
|
||||||
const args = process.argv.slice(2);
|
|
||||||
const user = args[0];
|
|
||||||
|
|
||||||
console.log(`Updating ${user}...`);
|
|
||||||
|
|
||||||
updatePerson(user).then(() => {
|
|
||||||
console.log(`Updated ${user}`);
|
|
||||||
}, e => {
|
|
||||||
console.error(e);
|
|
||||||
});
|
|
||||||
@@ -6,7 +6,7 @@ services:
|
|||||||
restart: always
|
restart: always
|
||||||
links:
|
links:
|
||||||
- mongo
|
- mongo
|
||||||
- redis
|
# - redis
|
||||||
# - es
|
# - es
|
||||||
ports:
|
ports:
|
||||||
- "127.0.0.1:3000:3000"
|
- "127.0.0.1:3000:3000"
|
||||||
@@ -14,18 +14,18 @@ services:
|
|||||||
- internal_network
|
- internal_network
|
||||||
- external_network
|
- external_network
|
||||||
|
|
||||||
redis:
|
# redis:
|
||||||
restart: always
|
# restart: always
|
||||||
image: redis:4.0-alpine
|
# image: redis:4.0-alpine
|
||||||
networks:
|
# networks:
|
||||||
- internal_network
|
# - internal_network
|
||||||
### Uncomment to enable Redis persistance
|
### Uncomment to enable Redis persistance
|
||||||
# volumes:
|
## volumes:
|
||||||
# - ./redis:/data
|
## - ./redis:/data
|
||||||
|
|
||||||
mongo:
|
mongo:
|
||||||
restart: always
|
restart: always
|
||||||
image: mongo:4.1-bionic
|
image: mongo:4.1
|
||||||
networks:
|
networks:
|
||||||
- internal_network
|
- internal_network
|
||||||
environment:
|
environment:
|
||||||
|
|||||||
@@ -7,30 +7,36 @@ This guide describes how to install and setup Misskey with Docker.
|
|||||||
|
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
|
|
||||||
*1.* Make configuration files
|
*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.* Configure Misskey
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
1. `cp .config/example.yml .config/default.yml` Copy the `.config/example.yml` and rename it to `default.yml`.
|
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. `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`.
|
2. Edit `default.yml` and `mongo_initdb.js`.
|
||||||
|
|
||||||
*2.* Configure Docker
|
*3.* Configure Docker
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
Edit `docker-compose.yml`.
|
Edit `docker-compose.yml`.
|
||||||
|
|
||||||
*3.* Build Misskey
|
*4.* Build Misskey
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
Build misskey with the following:
|
Build misskey with the following:
|
||||||
|
|
||||||
`docker-compose build`
|
`docker-compose build`
|
||||||
|
|
||||||
*4.* That is it.
|
*5.* That is it.
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
Well done! Now, you have an environment that run to Misskey.
|
Well done! Now you have an environment to run Misskey.
|
||||||
|
|
||||||
### Launch normally
|
### Launch normally
|
||||||
Just `docker-compose up -d`. GLHF!
|
Just `docker-compose up -d`. GLHF!
|
||||||
|
|
||||||
### Way to Update to latest version of your Misskey
|
### How to update your Misskey server to the latest version
|
||||||
1. `git fetch`
|
1. `git fetch`
|
||||||
2. `git stash`
|
2. `git stash`
|
||||||
3. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)`
|
3. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)`
|
||||||
@@ -39,9 +45,9 @@ Just `docker-compose up -d`. GLHF!
|
|||||||
6. Check [ChangeLog](../CHANGELOG.md) for migration information
|
6. Check [ChangeLog](../CHANGELOG.md) for migration information
|
||||||
7. `docker-compose stop && docker-compose up -d`
|
7. `docker-compose stop && docker-compose up -d`
|
||||||
|
|
||||||
### Way to execute cli command:
|
### How to execute [cli commands](manage.en.md):
|
||||||
`docker-compose run --rm web node cli/mark-admin @example`
|
`docker-compose run --rm web node cli/mark-admin @example`
|
||||||
|
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
|
|
||||||
If you have any questions or troubles, feel free to contact us!
|
If you have any questions or trouble, feel free to contact us!
|
||||||
|
|||||||
@@ -7,23 +7,29 @@ Dockerを使ったMisskey構築方法
|
|||||||
|
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
|
|
||||||
*1.* 設定ファイルを作成する
|
*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`にする
|
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`にする
|
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. `default.yml`と`mongo_initdb.js`を編集する
|
||||||
|
|
||||||
*2.* Dockerの設定
|
*3.* Dockerの設定
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
`docker-compose.yml`を編集してください。
|
`docker-compose.yml`を編集してください。
|
||||||
|
|
||||||
*3.* Misskeyのビルド
|
*4.* Misskeyのビルド
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
次のコマンドでMisskeyをビルドしてください:
|
次のコマンドでMisskeyをビルドしてください:
|
||||||
|
|
||||||
`docker-compose build`
|
`docker-compose build`
|
||||||
|
|
||||||
*4.* 以上です!
|
*5.* 以上です!
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
お疲れ様でした。これでMisskeyを動かす準備は整いました。
|
お疲れ様でした。これでMisskeyを動かす準備は整いました。
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ This guide describes how to install and setup Misskey.
|
|||||||
|
|
||||||
*1.* Create Misskey user
|
*1.* Create Misskey user
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
Running misskey on root is not a good idea so we create a user for that.
|
Running misskey as root is not a good idea so we create a user for that.
|
||||||
In debian for exemple :
|
In debian for exemple :
|
||||||
|
|
||||||
```
|
```
|
||||||
@@ -22,17 +22,17 @@ adduser --disabled-password --disabled-login misskey
|
|||||||
Please install and setup these softwares:
|
Please install and setup these softwares:
|
||||||
|
|
||||||
#### Dependencies :package:
|
#### Dependencies :package:
|
||||||
* **[Node.js](https://nodejs.org/en/)**
|
* **[Node.js](https://nodejs.org/en/)** >= 10.0.0
|
||||||
* **[MongoDB](https://www.mongodb.com/)** >= 3.6
|
* **[MongoDB](https://www.mongodb.com/)** >= 3.6
|
||||||
|
|
||||||
##### Optional
|
##### Optional
|
||||||
* [Redis](https://redis.io/)
|
* [Redis](https://redis.io/)
|
||||||
* Redis is optional, but we strongly recommended to install it
|
* Redis is optional, but we strongly recommended to install it
|
||||||
* [Elasticsearch](https://www.elastic.co/) - used to provide searching feature instead of MongoDB
|
* [Elasticsearch](https://www.elastic.co/) - required to enable the search feature
|
||||||
|
|
||||||
*3.* Setup MongoDB
|
*3.* Setup MongoDB
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
In root :
|
As root:
|
||||||
1. `mongo` Go to the mongo shell
|
1. `mongo` Go to the mongo shell
|
||||||
2. `use misskey` Use the misskey database
|
2. `use misskey` Use the misskey database
|
||||||
3. `db.users.save( {dummy:"dummy"} )` Write dummy data to initialize the db.
|
3. `db.users.save( {dummy:"dummy"} )` Write dummy data to initialize the db.
|
||||||
@@ -47,29 +47,17 @@ In root :
|
|||||||
4. `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)
|
4. `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)
|
||||||
5. `npm install` Install misskey dependencies.
|
5. `npm install` Install misskey dependencies.
|
||||||
|
|
||||||
*(optional)* reCAPTCHA tokens
|
*(optional)* Generate VAPID keys
|
||||||
----------------------------------------------------------------
|
|
||||||
If you want to enable reCAPTCHA, you need to generate reCAPTCHA tokens:
|
|
||||||
Please visit https://www.google.com/recaptcha/intro/ and generate keys.
|
|
||||||
|
|
||||||
*(optional)* Generating VAPID keys
|
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
If you want to enable ServiceWorker, 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.
|
Unless you have set your global node_modules location elsewhere, you need to run this as root.
|
||||||
|
|
||||||
``` shell
|
``` shell
|
||||||
npm install web-push -g
|
npm install web-push -g
|
||||||
web-push generate-vapid-keys
|
web-push generate-vapid-keys
|
||||||
```
|
```
|
||||||
|
|
||||||
*(optional)* Create a twitter application
|
*5.* Configure Misskey
|
||||||
----------------------------------------------------------------
|
|
||||||
If you want to enable the twitter integration, you need to create a twitter app at [https://developer.twitter.com/en/apply/user](https://developer.twitter.com/en/apply/user).
|
|
||||||
|
|
||||||
In the app you need to set the oauth callback url as : https://misskey-instance/api/tw/cb
|
|
||||||
|
|
||||||
|
|
||||||
*5.* Make configuration file
|
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
1. `cp .config/example.yml .config/default.yml` Copy the `.config/example.yml` and rename it to `default.yml`.
|
1. `cp .config/example.yml .config/default.yml` Copy the `.config/example.yml` and rename it to `default.yml`.
|
||||||
2. Edit `default.yml`
|
2. Edit `default.yml`
|
||||||
@@ -81,7 +69,7 @@ Build misskey with the following:
|
|||||||
|
|
||||||
`npm run build`
|
`npm run build`
|
||||||
|
|
||||||
If you're on Debian, you will need to install the `build-essential` package.
|
If you're on Debian, you will need to install the `build-essential`, `python` package.
|
||||||
|
|
||||||
If you're still encountering errors about some modules, use node-gyp:
|
If you're still encountering errors about some modules, use node-gyp:
|
||||||
|
|
||||||
@@ -126,7 +114,7 @@ WantedBy=multi-user.target
|
|||||||
|
|
||||||
You can check if the service is running with `systemctl status misskey`.
|
You can check if the service is running with `systemctl status misskey`.
|
||||||
|
|
||||||
### Way to Update to latest version of your Misskey
|
### How to update your Misskey server to the latest version
|
||||||
1. `git fetch`
|
1. `git fetch`
|
||||||
2. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)`
|
2. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)`
|
||||||
3. `npm install`
|
3. `npm install`
|
||||||
|
|||||||
126
docs/setup.fr.md
Normal file
126
docs/setup.fr.md
Normal file
@@ -0,0 +1,126 @@
|
|||||||
|
Guide d'installation et de configuration de Misskey
|
||||||
|
================================================================
|
||||||
|
|
||||||
|
Nous vous remerçions de l'intrêt que vous manifestez pour l'installation de votre propre instance Misskey !
|
||||||
|
Ce guide décrit les étapes à suivre afin d'installer et de configurer une instance Misskey.
|
||||||
|
|
||||||
|
[La version en japonnais est également disponible sur - 日本語版もあります](./setup.ja.md)
|
||||||
|
|
||||||
|
----------------------------------------------------------------
|
||||||
|
|
||||||
|
*1.* Création de l'utilisateur Misskey
|
||||||
|
----------------------------------------------------------------
|
||||||
|
Lancer misskey en tant qu'utilisateur est une mauvaise idée, nous avons besoin de créer un utilisateur dédié.
|
||||||
|
Sur Debian, à titre d'exemple :
|
||||||
|
|
||||||
|
```
|
||||||
|
adduser --disabled-password --disabled-login misskey
|
||||||
|
```
|
||||||
|
|
||||||
|
*2.* Installation des dépendances
|
||||||
|
----------------------------------------------------------------
|
||||||
|
Installez les paquets suivants :
|
||||||
|
|
||||||
|
#### Dépendences :package:
|
||||||
|
* **[Node.js](https://nodejs.org/en/)** >= 10.0.0
|
||||||
|
* **[MongoDB](https://www.mongodb.com/)** >= 3.6
|
||||||
|
|
||||||
|
##### Optionnels
|
||||||
|
* [Redis](https://redis.io/)
|
||||||
|
* Redis est optionnel mais nous vous recommandons vivement de l'installer
|
||||||
|
* [Elasticsearch](https://www.elastic.co/) - requis pour pouvoir activer la fonctionnalité de recherche
|
||||||
|
|
||||||
|
*3.* Paramètrage de MongoDB
|
||||||
|
----------------------------------------------------------------
|
||||||
|
En mode root :
|
||||||
|
1. `mongo` Accédez au shell de mango
|
||||||
|
2. `use misskey` Utilisez la base de données misskey
|
||||||
|
3. `db.users.save( {dummy:"dummy"} )` Write dummy data to initialize the db.
|
||||||
|
4. `db.createUser( { user: "misskey", pwd: "<password>", roles: [ { role: "readWrite", db: "misskey" } ] } )` Créez l'utilisateur misskey.
|
||||||
|
5. `exit` Vous avez terminé !
|
||||||
|
|
||||||
|
*4.* Installation de Misskey
|
||||||
|
----------------------------------------------------------------
|
||||||
|
1. `su - misskey` Basculez vers l'utilisateur misskey.
|
||||||
|
2. `git clone -b master git://github.com/syuilo/misskey.git` Clonez la branche master du dépôt misskey.
|
||||||
|
3. `cd misskey` Accédez au dossier misskey.
|
||||||
|
4. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` Télécharge la [version la plus récente](https://github.com/syuilo/misskey/releases/latest)
|
||||||
|
5. `npm install` Installez les dépendances de misskey.
|
||||||
|
|
||||||
|
*(optionnel)* Génération des clés VAPID
|
||||||
|
----------------------------------------------------------------
|
||||||
|
Si vous désirez activer ServiceWorker, vous devez générer les clés VAPID :
|
||||||
|
Unless you have set your global node_modules location elsewhere, vous devez lancer ceci en mode root.
|
||||||
|
|
||||||
|
``` shell
|
||||||
|
npm install web-push -g
|
||||||
|
web-push generate-vapid-keys
|
||||||
|
```
|
||||||
|
|
||||||
|
*5.* Création du fichier de configuration
|
||||||
|
----------------------------------------------------------------
|
||||||
|
1. `cp .config/example.yml .config/default.yml` Copiez le fichier `.config/example.yml` et renommez-le `default.yml`.
|
||||||
|
2. Editez le fichier `default.yml`
|
||||||
|
|
||||||
|
*6.* Construction de Misskey
|
||||||
|
----------------------------------------------------------------
|
||||||
|
|
||||||
|
Construisez Misskey comme ceci :
|
||||||
|
|
||||||
|
`npm run build`
|
||||||
|
|
||||||
|
Si vous êtes sous Debian, vous serez amené à installer les paquets `build-essential`, `python`.
|
||||||
|
|
||||||
|
Si vous rencontrez des erreurs concernant certains modules, utilisez node-gyp:
|
||||||
|
|
||||||
|
1. `npm install -g node-gyp`
|
||||||
|
2. `node-gyp configure`
|
||||||
|
3. `node-gyp build`
|
||||||
|
4. `npm run build`
|
||||||
|
|
||||||
|
*7.* C'est tout.
|
||||||
|
----------------------------------------------------------------
|
||||||
|
Excellent ! Maintenant, vous avez un environnement prêt pour lancer Misskey
|
||||||
|
|
||||||
|
### Lancement conventionnel
|
||||||
|
Lancez tout simplement `npm start`. Bonne chance et amusez-vous bien !
|
||||||
|
|
||||||
|
### Démarrage avec systemd
|
||||||
|
|
||||||
|
1. Créez une service systemd sur : `/etc/systemd/system/misskey.service`
|
||||||
|
2. Editez-le puis copiez et coller ceci dans le fichier :
|
||||||
|
|
||||||
|
```
|
||||||
|
[Unit]
|
||||||
|
Description=Misskey daemon
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
User=misskey
|
||||||
|
ExecStart=/usr/bin/npm start
|
||||||
|
WorkingDirectory=/home/misskey/misskey
|
||||||
|
TimeoutSec=60
|
||||||
|
StandardOutput=syslog
|
||||||
|
StandardError=syslog
|
||||||
|
SyslogIdentifier=misskey
|
||||||
|
Restart=always
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
```
|
||||||
|
|
||||||
|
3. `systemctl daemon-reload ; systemctl enable misskey` Redémarre systemd et active le service misskey.
|
||||||
|
4. `systemctl start misskey` Démarre le service misskey.
|
||||||
|
|
||||||
|
Vous pouvez vérifier si le service a démarré en utilisant la commande `systemctl status misskey`.
|
||||||
|
|
||||||
|
### Méthode de mise à jour vers la plus récente version de Misskey
|
||||||
|
1. `git fetch`
|
||||||
|
2. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)`
|
||||||
|
3. `npm install`
|
||||||
|
4. `npm run build`
|
||||||
|
5. Consultez [ChangeLog](../CHANGELOG.md) pour les information de migration.
|
||||||
|
|
||||||
|
----------------------------------------------------------------
|
||||||
|
|
||||||
|
Si vous rencontrez des difficultés ou avez d'autres questions, n'hésitez pas à nous contacter !
|
||||||
@@ -22,7 +22,7 @@ adduser --disabled-password --disabled-login misskey
|
|||||||
これらのソフトウェアをインストール・設定してください:
|
これらのソフトウェアをインストール・設定してください:
|
||||||
|
|
||||||
#### 依存関係 :package:
|
#### 依存関係 :package:
|
||||||
* **[Node.js](https://nodejs.org/en/)**
|
* **[Node.js](https://nodejs.org/en/)** (10.0.0以上)
|
||||||
* **[MongoDB](https://www.mongodb.com/)** (3.6以上)
|
* **[MongoDB](https://www.mongodb.com/)** (3.6以上)
|
||||||
|
|
||||||
##### オプション
|
##### オプション
|
||||||
@@ -53,11 +53,6 @@ adduser --disabled-password --disabled-login misskey
|
|||||||
4. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` [最新のリリース](https://github.com/syuilo/misskey/releases/latest)を確認
|
4. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` [最新のリリース](https://github.com/syuilo/misskey/releases/latest)を確認
|
||||||
5. `npm install` Misskeyの依存パッケージをインストール
|
5. `npm install` Misskeyの依存パッケージをインストール
|
||||||
|
|
||||||
*(オプション)* reCAPTCHAトークン
|
|
||||||
----------------------------------------------------------------
|
|
||||||
reCAPTCHAを有効にする場合、reCAPTCHAトークンを取得する必要があります。
|
|
||||||
https://www.google.com/recaptcha/intro/ にアクセスしてトークンを取得してください。
|
|
||||||
|
|
||||||
*(オプション)* VAPIDキーペアの生成
|
*(オプション)* VAPIDキーペアの生成
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
ServiceWorkerを有効にする場合、VAPIDキーペアを生成する必要があります:
|
ServiceWorkerを有効にする場合、VAPIDキーペアを生成する必要があります:
|
||||||
|
|||||||
@@ -1,23 +0,0 @@
|
|||||||
Misskey's Translation
|
|
||||||
=====================
|
|
||||||
|
|
||||||
If you find an untranslated part on Misskey:
|
|
||||||
--------------------------------------------
|
|
||||||
|
|
||||||
1. Look for untranslated parts in the misskey's source code.
|
|
||||||
- For instance, if you find an untranslated part in: `src/client/app/mobile/views/pages/home.vue`.
|
|
||||||
|
|
||||||
2. Replace the untranslated portion with a character string of the form `%i18n:@foo%`.
|
|
||||||
- In fact, `foo` should be a word that is appropriate for the situation and is easy to understand in English.
|
|
||||||
- For example, if the untranslated portion is the following "タイムライン" you must write: `%i18n:@timeline%`.
|
|
||||||
|
|
||||||
3. Open the `locales/ja-JP.yml`, check whether the <strong>file name (path)</strong> found in step 1 exists, if not, create it.
|
|
||||||
- Do not put the beginning of the path `src/client/app/` in the locale file.
|
|
||||||
- For example, in this case we want to modify untranslated parts of `src/client/app/mobile/views/pages/home.vue`, so the key is `mobile/views/pages/home.vue`.
|
|
||||||
|
|
||||||
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!
|
|
||||||
|
|
||||||
For more details, please refer to this [commit](https://github.com/syuilo/misskey/commit/10f6d5980fa7692ccb45fbc5f843458b69b7607c).
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
Traduction de Misskey
|
|
||||||
=====================
|
|
||||||
|
|
||||||
Si vous trouvez un segment non-traduit sur Misskey :
|
|
||||||
----------------------------------------------------
|
|
||||||
|
|
||||||
1. Veuillez chercher des parties non-traduites dans le code source de Misskey.
|
|
||||||
- Par exemple, supposons que vous trouviez un segment non-traduit dans : `src/client/app/mobile/views/pages/home.vue`.
|
|
||||||
|
|
||||||
2. Remplacez la portion non-traduite par une chaîne de caractères de type `%i18n:@foo%`.
|
|
||||||
- En fait, `foo` doit être un mot approprié à la situation et facile à comprendre en français.
|
|
||||||
- Par exemple, si le segment non-traduit est「タイムライン」on peut écrire : `%i18n:@timeline%`.
|
|
||||||
|
|
||||||
3. Ouvrez chaque fichier linguistique dans /locales, vérifiez si le <strong>nom du fichier (chemin)</strong> trouvé dans l'étape 1 existe, sinon créez-le.
|
|
||||||
- Ne mettez pas le début du chemin `src/client/app/` dans les fichiers /locales.
|
|
||||||
- Par exemple, dans ce cas de figure, nous voulons modifier le segment non-traduit de : `src/client/app/mobile/views/pages/home.vue`donc il faut juste écrire : `mobile/views/pages/home.vue` dans les fichiers linguistiques.
|
|
||||||
|
|
||||||
4. Ajoutez la propriété du texte traduit grâce à la clef `foo`, en-dessous du chemin correspondant à votre modification que vous avez trouvé ou créé dans l'étape 2. À côté, veuillez indiquer entre "guillemets" la valeur de votre traduction.
|
|
||||||
- Par exemple, dans ce cas de figure, nous ajoutons la propriété et la traduction `timeline: "Timeline"` à `locales/fr.yml`, mais aussi la propriété et la version originale `timeline: "タイムライン"` à `locales/ja-JP.yml`.
|
|
||||||
|
|
||||||
5. Vous avez réussi à traduire une portion de misskey !
|
|
||||||
|
|
||||||
Pour plus de détails, veuillez vous référer à ce [commit](https://github.com/syuilo/misskey/commit/10f6d5980fa7692ccb45fbc5f843458b69b7607c).
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
Misskeyの翻訳
|
|
||||||
============
|
|
||||||
|
|
||||||
Misskey内の未翻訳箇所を見つけたら
|
|
||||||
-------------------------------
|
|
||||||
|
|
||||||
1. Misskeyのソースコード内から未翻訳箇所を探してください。
|
|
||||||
- 例えば`src/client/app/mobile/views/pages/home.vue`で未翻訳箇所を見つけたとします。
|
|
||||||
|
|
||||||
2. 未翻訳箇所を`%i18n:@foo%`のような形式の文字列に置換してください。
|
|
||||||
- `foo`は実際にはその場に適したわかりやすい(英語の)名前にしてください。
|
|
||||||
- 例えば未翻訳箇所が「タイムライン」というテキストだった場合、`%i18n:@timeline%`のようにします。
|
|
||||||
|
|
||||||
3. `locales/ja-JP.yml`を開き、1.で見つけた<strong>ファイル名(パス)</strong>のキーが存在するか確認し、無ければ作成してください。
|
|
||||||
- パスの`src/client/app/`は省略してください。
|
|
||||||
- 例えば、今回の例では`src/client/app/mobile/views/pages/home.vue`の未翻訳箇所を修正したいので、キーは`mobile/views/pages/home.vue`になります。
|
|
||||||
|
|
||||||
4. そのキーの直下に2.で置換した`foo`の部分をキーとし、テキストを値とするプロパティを追加します。
|
|
||||||
- 例えば、今回の例で言うと`locales/ja-JP.yml`に`timeline: "タイムライン"`を追加します。
|
|
||||||
|
|
||||||
5. 完了です!
|
|
||||||
|
|
||||||
詳しくは、[このコミット](https://github.com/syuilo/misskey/commit/10f6d5980fa7692ccb45fbc5f843458b69b7607c)などを参考にしてください。
|
|
||||||
23
gulpfile.ts
23
gulpfile.ts
@@ -5,6 +5,7 @@
|
|||||||
import * as gulp from 'gulp';
|
import * as gulp from 'gulp';
|
||||||
import * as gutil from 'gulp-util';
|
import * as gutil from 'gulp-util';
|
||||||
import * as ts from 'gulp-typescript';
|
import * as ts from 'gulp-typescript';
|
||||||
|
const yaml = require('gulp-yaml');
|
||||||
const sourcemaps = require('gulp-sourcemaps');
|
const sourcemaps = require('gulp-sourcemaps');
|
||||||
import tslint from 'gulp-tslint';
|
import tslint from 'gulp-tslint';
|
||||||
const cssnano = require('gulp-cssnano');
|
const cssnano = require('gulp-cssnano');
|
||||||
@@ -21,7 +22,6 @@ import * as htmlmin from 'gulp-htmlmin';
|
|||||||
const uglifyes = require('uglify-es');
|
const uglifyes = require('uglify-es');
|
||||||
|
|
||||||
const locales = require('./locales');
|
const locales = require('./locales');
|
||||||
import { fa } from './src/misc/fa';
|
|
||||||
|
|
||||||
const uglify = uglifyComposer(uglifyes, console);
|
const uglify = uglifyComposer(uglifyes, console);
|
||||||
|
|
||||||
@@ -40,6 +40,7 @@ gulp.task('build', [
|
|||||||
'build:ts',
|
'build:ts',
|
||||||
'build:copy',
|
'build:copy',
|
||||||
'build:client',
|
'build:client',
|
||||||
|
'locales',
|
||||||
'doc'
|
'doc'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
@@ -58,16 +59,7 @@ gulp.task('build:copy:views', () =>
|
|||||||
gulp.src('./src/server/web/views/**/*').pipe(gulp.dest('./built/server/web/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([
|
gulp.src([
|
||||||
'./build/Release/crypto_key.node',
|
'./build/Release/crypto_key.node',
|
||||||
'./src/const.json',
|
'./src/const.json',
|
||||||
@@ -164,8 +156,7 @@ gulp.task('build:client:pug', [
|
|||||||
gulp.src('./src/client/app/base.pug')
|
gulp.src('./src/client/app/base.pug')
|
||||||
.pipe(pug({
|
.pipe(pug({
|
||||||
locals: {
|
locals: {
|
||||||
themeColor: constants.themeColor,
|
themeColor: constants.themeColor
|
||||||
facss: fa.dom.css()
|
|
||||||
}
|
}
|
||||||
}))
|
}))
|
||||||
.pipe(htmlmin({
|
.pipe(htmlmin({
|
||||||
@@ -203,6 +194,12 @@ gulp.task('build:client:pug', [
|
|||||||
.pipe(gulp.dest('./built/client/app/'))
|
.pipe(gulp.dest('./built/client/app/'))
|
||||||
);
|
);
|
||||||
|
|
||||||
|
gulp.task('locales', () =>
|
||||||
|
gulp.src('./locales/*.yml')
|
||||||
|
.pipe(yaml({ schema: 'DEFAULT_SAFE_SCHEMA' }))
|
||||||
|
.pipe(gulp.dest('./built/client/assets/locales/'))
|
||||||
|
);
|
||||||
|
|
||||||
gulp.task('doc', () =>
|
gulp.task('doc', () =>
|
||||||
gulp.src('./src/docs/**/*.styl')
|
gulp.src('./src/docs/**/*.styl')
|
||||||
.pipe(stylus())
|
.pipe(stylus())
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
# **DO NOT edit locale files** except `ja-JP.yml`.
|
# **DO NOT edit locale files** except `ja-JP.yml`.
|
||||||
|
|
||||||
|
When you add text to the ja-JP file (of syuilo/misskey), it will automatically be applied to other language files.
|
||||||
|
Translations added in ja-JP file should contain the original Japanese strings.
|
||||||
|
|
||||||
Please see [Contribution guide](../CONTRIBUTING.md) for more information.
|
Please see [Contribution guide](../CONTRIBUTING.md) for more information.
|
||||||
|
|||||||
@@ -25,13 +25,11 @@ common:
|
|||||||
application-authorization: "アプリの連携"
|
application-authorization: "アプリの連携"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||||
|
load-more: "もっと読み込む"
|
||||||
got-it: "わかった"
|
got-it: "わかった"
|
||||||
customization-tips:
|
customization-tips:
|
||||||
title: "カスタマイズのヒント"
|
title: "カスタマイズのヒント"
|
||||||
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
|
paragraph: "<p>ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。</p><p>一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。</p><p>ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。</p><p>カスタマイズを終了するには、右上の「完了」をクリックします。</p>"
|
||||||
paragraph2: "一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。"
|
|
||||||
paragraph3: "ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。"
|
|
||||||
paragraph4: "カスタマイズを終了するには、右上の「完了」をクリックします。"
|
|
||||||
gotit: "Got it!"
|
gotit: "Got it!"
|
||||||
notification:
|
notification:
|
||||||
file-uploaded: "ファイルがアップロードされました"
|
file-uploaded: "ファイルがアップロードされました"
|
||||||
@@ -54,6 +52,8 @@ common:
|
|||||||
years_ago: "{}年前"
|
years_ago: "{}年前"
|
||||||
month-and-day: "{month}月 {day}日"
|
month-and-day: "{month}月 {day}日"
|
||||||
trash: "ゴミ箱"
|
trash: "ゴミ箱"
|
||||||
|
drive: "ドライブ"
|
||||||
|
messaging: "トーク"
|
||||||
weekday-short:
|
weekday-short:
|
||||||
sunday: "日"
|
sunday: "日"
|
||||||
monday: "月"
|
monday: "月"
|
||||||
@@ -112,20 +112,28 @@ common:
|
|||||||
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
||||||
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
||||||
show-full-acct: "ユーザー名のホストを省略しない"
|
show-full-acct: "ユーザー名のホストを省略しない"
|
||||||
|
show-via: "viaを表示する"
|
||||||
reduce-motion: "UIの動きを減らす"
|
reduce-motion: "UIの動きを減らす"
|
||||||
this-setting-is-this-device-only: "このデバイスのみ"
|
this-setting-is-this-device-only: "このデバイスのみ"
|
||||||
|
use-os-default-emojis: "OS標準の絵文字を使用"
|
||||||
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
||||||
|
is-remote-user: "このユーザー情報はコピーです。"
|
||||||
|
is-remote-post: "この投稿情報はコピーです。"
|
||||||
|
view-on-remote: "正確な情報を見る"
|
||||||
|
error:
|
||||||
|
title: '問題が発生しました'
|
||||||
|
retry: 'やり直す'
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "引き分け"
|
drawn: "引き分け"
|
||||||
my-turn: "あなたのターンです"
|
my-turn: "あなたのターンです"
|
||||||
opponent-turn: "相手のターンです"
|
opponent-turn: "相手のターンです"
|
||||||
turn-of: "{}のターンです"
|
turn-of: "{name}のターンです"
|
||||||
past-turn-of: "{}のターン"
|
past-turn-of: "{name}のターン"
|
||||||
won: "{}の勝ち"
|
won: "{name}の勝ち"
|
||||||
black: "黒"
|
black: "黒"
|
||||||
white: "白"
|
white: "白"
|
||||||
total: "合計"
|
total: "合計"
|
||||||
this-turn: "{}ターン目"
|
this-turn: "{count}ターン目"
|
||||||
widgets:
|
widgets:
|
||||||
analog-clock: "アナログ時計"
|
analog-clock: "アナログ時計"
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
@@ -144,34 +152,15 @@ common:
|
|||||||
users: "おすすめユーザー"
|
users: "おすすめユーザー"
|
||||||
polls: "アンケート"
|
polls: "アンケート"
|
||||||
post-form: "投稿フォーム"
|
post-form: "投稿フォーム"
|
||||||
messaging: "メッセージ"
|
|
||||||
server: "サーバー情報"
|
server: "サーバー情報"
|
||||||
donation: "寄付のお願い"
|
donation: "寄付のお願い"
|
||||||
nav: "ナビゲーション"
|
nav: "ナビゲーション"
|
||||||
tips: "ヒント"
|
tips: "ヒント"
|
||||||
hashtags: "ハッシュタグ"
|
hashtags: "ハッシュタグ"
|
||||||
deck:
|
dev: "アプリの作成に失敗しました。再度お試しください。"
|
||||||
widgets: "ウィジェット"
|
ai-chan-kawaii: "藍ちゃかわいい"
|
||||||
home: "ホーム"
|
|
||||||
local: "ローカル"
|
|
||||||
hybrid: "ソーシャル"
|
|
||||||
hashtag: "ハッシュタグ"
|
|
||||||
global: "グローバル"
|
|
||||||
mentions: "あなた宛て"
|
|
||||||
direct: "ダイレクト投稿"
|
|
||||||
notifications: "通知"
|
|
||||||
list: "リスト"
|
|
||||||
swap-left: "左に移動"
|
|
||||||
swap-right: "右に移動"
|
|
||||||
swap-up: "上に移動"
|
|
||||||
swap-down: "下に移動"
|
|
||||||
remove: "カラムを削除"
|
|
||||||
add-column: "カラムを追加"
|
|
||||||
rename: "名前を変更"
|
|
||||||
stack-left: "左に重ねる"
|
|
||||||
pop-right: "右に出す"
|
|
||||||
auth/views/form.vue:
|
auth/views/form.vue:
|
||||||
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
|
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
|
||||||
permission-ask: "このアプリは次の権限を要求しています:"
|
permission-ask: "このアプリは次の権限を要求しています:"
|
||||||
account-read: "アカウントの情報を見る。"
|
account-read: "アカウントの情報を見る。"
|
||||||
account-write: "アカウントの情報を操作する。"
|
account-write: "アカウントの情報を操作する。"
|
||||||
@@ -308,7 +297,6 @@ common/views/components/messaging.vue:
|
|||||||
no-history: "履歴はありません"
|
no-history: "履歴はありません"
|
||||||
common/views/components/messaging-room.vue:
|
common/views/components/messaging-room.vue:
|
||||||
empty: "このユーザーと話したことはありません"
|
empty: "このユーザーと話したことはありません"
|
||||||
more: "もっと読む"
|
|
||||||
no-history: "これより過去の履歴はありません"
|
no-history: "これより過去の履歴はありません"
|
||||||
resize-form: "ドラッグしてフォームの広さを調整"
|
resize-form: "ドラッグしてフォームの広さを調整"
|
||||||
new-message: "新しいメッセージがあります"
|
new-message: "新しいメッセージがあります"
|
||||||
@@ -356,6 +344,16 @@ common/views/components/poll-editor.vue:
|
|||||||
destroy: "アンケートを破棄"
|
destroy: "アンケートを破棄"
|
||||||
common/views/components/reaction-picker.vue:
|
common/views/components/reaction-picker.vue:
|
||||||
choose-reaction: "リアクションを選択"
|
choose-reaction: "リアクションを選択"
|
||||||
|
common/views/components/emoji-picker.vue:
|
||||||
|
custom-emoji: "カスタム絵文字"
|
||||||
|
people: "人"
|
||||||
|
animals-and-nature: "動物&自然"
|
||||||
|
food-and-drink: "食べ物&飲み物"
|
||||||
|
activity: "アクティビティ"
|
||||||
|
travel-and-places: "場所"
|
||||||
|
objects: "物"
|
||||||
|
symbols: "記号"
|
||||||
|
flags: "旗"
|
||||||
common/views/components/signin.vue:
|
common/views/components/signin.vue:
|
||||||
username: "ユーザー名"
|
username: "ユーザー名"
|
||||||
password: "パスワード"
|
password: "パスワード"
|
||||||
@@ -364,6 +362,8 @@ common/views/components/signin.vue:
|
|||||||
signin: "サインイン"
|
signin: "サインイン"
|
||||||
or: "または"
|
or: "または"
|
||||||
signin-with-twitter: "Twitterでログイン"
|
signin-with-twitter: "Twitterでログイン"
|
||||||
|
signin-with-github: "GitHubでログイン"
|
||||||
|
signin-with-discord: "Discordでログイン"
|
||||||
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
invitation-code: "招待コード"
|
invitation-code: "招待コード"
|
||||||
@@ -402,6 +402,20 @@ common/views/components/twitter-setting.vue:
|
|||||||
reconnect: "再接続する"
|
reconnect: "再接続する"
|
||||||
connect: "Twitterと接続する"
|
connect: "Twitterと接続する"
|
||||||
disconnect: "切断する"
|
disconnect: "切断する"
|
||||||
|
common/views/components/github-setting.vue:
|
||||||
|
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
|
||||||
|
connected-to: "次のGitHubアカウントに接続されています"
|
||||||
|
detail: "詳細..."
|
||||||
|
reconnect: "再接続する"
|
||||||
|
connect: "GitHubと接続する"
|
||||||
|
disconnect: "切断する"
|
||||||
|
common/views/components/discord-setting.vue:
|
||||||
|
description: "お使いのDiscordアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでDiscordアカウント情報が表示されるようになったり、Discordを用いた便利なサインインを利用できるようになります。"
|
||||||
|
connected-to: "次のDiscordアカウントに接続されています"
|
||||||
|
detail: "詳細..."
|
||||||
|
reconnect: "再接続する"
|
||||||
|
connect: "Discordと接続する"
|
||||||
|
disconnect: "切断する"
|
||||||
common/views/components/uploader.vue:
|
common/views/components/uploader.vue:
|
||||||
waiting: "待機中"
|
waiting: "待機中"
|
||||||
common/views/components/visibility-chooser.vue:
|
common/views/components/visibility-chooser.vue:
|
||||||
@@ -416,6 +430,25 @@ common/views/components/visibility-chooser.vue:
|
|||||||
common/views/components/trends.vue:
|
common/views/components/trends.vue:
|
||||||
count: "{}人が投稿"
|
count: "{}人が投稿"
|
||||||
empty: "トレンドなし"
|
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:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "確認中"
|
fetching: "確認中"
|
||||||
no-broadcasts: "お知らせはありません"
|
no-broadcasts: "お知らせはありません"
|
||||||
@@ -499,34 +532,12 @@ desktop/views/components/activity.vue:
|
|||||||
title: "アクティビティ"
|
title: "アクティビティ"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
desktop/views/components/calendar.vue:
|
desktop/views/components/calendar.vue:
|
||||||
title: "{1}年 {2}月"
|
title: "{year}年 {month}月"
|
||||||
prev: "前の月"
|
prev: "前の月"
|
||||||
next: "次の月"
|
next: "次の月"
|
||||||
go: "クリックして時間遡行"
|
go: "クリックして時間遡行"
|
||||||
desktop/views/components/charts.vue:
|
|
||||||
title: "チャート"
|
|
||||||
per-day: "1日ごと"
|
|
||||||
per-hour: "1時間ごと"
|
|
||||||
notes: "投稿"
|
|
||||||
users: "ユーザー"
|
|
||||||
drive: "ドライブ"
|
|
||||||
network: "ネットワーク"
|
|
||||||
charts:
|
|
||||||
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:
|
desktop/views/components/choose-file-from-drive-window.vue:
|
||||||
choose-file: "ファイル選択中"
|
chosen-files: "{count}ファイル選択中"
|
||||||
upload: "PCからドライブにファイルをアップロード"
|
upload: "PCからドライブにファイルをアップロード"
|
||||||
cancel: "キャンセル"
|
cancel: "キャンセル"
|
||||||
ok: "決定"
|
ok: "決定"
|
||||||
@@ -541,7 +552,6 @@ desktop/views/components/crop-window.vue:
|
|||||||
ok: "決定"
|
ok: "決定"
|
||||||
desktop/views/components/drive-window.vue:
|
desktop/views/components/drive-window.vue:
|
||||||
used: "使用中"
|
used: "使用中"
|
||||||
drive: "ドライブ"
|
|
||||||
desktop/views/components/drive.file.vue:
|
desktop/views/components/drive.file.vue:
|
||||||
avatar: "アイコン"
|
avatar: "アイコン"
|
||||||
banner: "バナー"
|
banner: "バナー"
|
||||||
@@ -571,11 +581,8 @@ desktop/views/components/drive.folder.vue:
|
|||||||
rename: "名前を変更"
|
rename: "名前を変更"
|
||||||
rename-folder: "フォルダ名の変更"
|
rename-folder: "フォルダ名の変更"
|
||||||
input-new-folder-name: "新しいフォルダ名を入力してください"
|
input-new-folder-name: "新しいフォルダ名を入力してください"
|
||||||
desktop/views/components/drive.nav-folder.vue:
|
|
||||||
drive: "ドライブ"
|
|
||||||
desktop/views/components/drive.vue:
|
desktop/views/components/drive.vue:
|
||||||
search: "検索"
|
search: "検索"
|
||||||
load-more: "もっと読み込む"
|
|
||||||
empty-draghover: "ドロップですか?いいですよ、ボクはカワイイですからね"
|
empty-draghover: "ドロップですか?いいですよ、ボクはカワイイですからね"
|
||||||
empty-drive: "ドライブには何もありません。"
|
empty-drive: "ドライブには何もありません。"
|
||||||
empty-drive-description: "右クリックして「ファイルをアップロード」を選んだり、ファイルをドラッグ&ドロップすることでもアップロードできます。"
|
empty-drive-description: "右クリックして「ファイルをアップロード」を選んだり、ファイルをドラッグ&ドロップすることでもアップロードできます。"
|
||||||
@@ -599,12 +606,6 @@ desktop/views/components/media-image.vue:
|
|||||||
desktop/views/components/media-video.vue:
|
desktop/views/components/media-video.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
desktop/views/components/follow-button.vue:
|
|
||||||
following: "フォロー中"
|
|
||||||
follow: "フォロー"
|
|
||||||
request-pending: "フォロー許可待ち"
|
|
||||||
follow-processing: "フォロー処理中"
|
|
||||||
follow-request: "フォロー申請"
|
|
||||||
desktop/views/components/followers-window.vue:
|
desktop/views/components/followers-window.vue:
|
||||||
followers: "{} のフォロワー"
|
followers: "{} のフォロワー"
|
||||||
desktop/views/components/followers.vue:
|
desktop/views/components/followers.vue:
|
||||||
@@ -633,14 +634,13 @@ desktop/views/components/messaging-room-window.vue:
|
|||||||
desktop/views/components/messaging-window.vue:
|
desktop/views/components/messaging-window.vue:
|
||||||
title: "メッセージ"
|
title: "メッセージ"
|
||||||
desktop/views/components/note-detail.vue:
|
desktop/views/components/note-detail.vue:
|
||||||
more: "会話をもっと読み込む"
|
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
location: "位置情報"
|
location: "位置情報"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
add-reaction: "リアクション"
|
add-reaction: "リアクション"
|
||||||
desktop/views/components/notes.note.vue:
|
desktop/views/components/note.vue:
|
||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
reply: "返信"
|
reply: "返信"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
@@ -651,9 +651,7 @@ desktop/views/components/notes.note.vue:
|
|||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "読み込みに失敗しました。"
|
error: "読み込みに失敗しました。"
|
||||||
retry: "リトライ"
|
retry: "リトライ"
|
||||||
load-more: "もっと読み込む"
|
|
||||||
desktop/views/components/notifications.vue:
|
desktop/views/components/notifications.vue:
|
||||||
more: "もっと見る"
|
|
||||||
empty: "ありません!"
|
empty: "ありません!"
|
||||||
desktop/views/components/post-form.vue:
|
desktop/views/components/post-form.vue:
|
||||||
add-visible-user: "+ユーザーを追加"
|
add-visible-user: "+ユーザーを追加"
|
||||||
@@ -700,14 +698,17 @@ desktop/views/components/renote-form.vue:
|
|||||||
failure: "Renoteに失敗しました"
|
failure: "Renoteに失敗しました"
|
||||||
desktop/views/components/renote-form-window.vue:
|
desktop/views/components/renote-form-window.vue:
|
||||||
title: "この投稿をRenoteしますか?"
|
title: "この投稿をRenoteしますか?"
|
||||||
|
desktop/views/pages/user-following-or-followers.vue:
|
||||||
|
following: "{user}のフォロー"
|
||||||
|
followers: "{user}のフォロワー"
|
||||||
desktop/views/components/settings-window.vue:
|
desktop/views/components/settings-window.vue:
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
desktop/views/components/settings.vue:
|
desktop/views/components/settings.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
notification: "通知"
|
notification: "通知"
|
||||||
apps: "アプリ"
|
apps: "アプリ"
|
||||||
mute: "ミュート"
|
mute-and-block: "ミュート/ブロック"
|
||||||
drive: "ドライブ"
|
blocking: "ブロック"
|
||||||
security: "セキュリティ"
|
security: "セキュリティ"
|
||||||
signin: "サインイン履歴"
|
signin: "サインイン履歴"
|
||||||
password: "パスワード"
|
password: "パスワード"
|
||||||
@@ -726,8 +727,12 @@ desktop/views/components/settings.vue:
|
|||||||
advanced: "詳細設定"
|
advanced: "詳細設定"
|
||||||
api-via-stream: "ストリームを経由したAPIリクエスト"
|
api-via-stream: "ストリームを経由したAPIリクエスト"
|
||||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||||
|
deck-nav: "デッキ内ナビゲーション"
|
||||||
|
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
|
||||||
|
deck-default: "デッキをデフォルトのUIにする"
|
||||||
display: "デザインと表示"
|
display: "デザインと表示"
|
||||||
customize: "ホームをカスタマイズ"
|
customize: "ホームをカスタマイズ"
|
||||||
|
wallpaper: "壁紙"
|
||||||
choose-wallpaper: "壁紙を選択"
|
choose-wallpaper: "壁紙を選択"
|
||||||
delete-wallpaper: "壁紙を削除"
|
delete-wallpaper: "壁紙を削除"
|
||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
@@ -739,17 +744,19 @@ desktop/views/components/settings.vue:
|
|||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
show-clock-on-header: "右上に時計を表示する"
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
|
timeline: "タイムライン"
|
||||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "マップの自動展開"
|
show-maps: "マップの自動展開"
|
||||||
|
deck-column-align: "デッキのカラムの位置"
|
||||||
|
deck-column-align-center: "中央"
|
||||||
|
deck-column-align-left: "左"
|
||||||
sound: "サウンド"
|
sound: "サウンド"
|
||||||
enable-sounds: "サウンドを有効にする"
|
enable-sounds: "サウンドを有効にする"
|
||||||
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
|
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
|
||||||
volume: "ボリューム"
|
volume: "ボリューム"
|
||||||
test: "テスト"
|
test: "テスト"
|
||||||
mobile: "モバイル"
|
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
|
||||||
language: "言語"
|
language: "言語"
|
||||||
pick-language: "言語を選択"
|
pick-language: "言語を選択"
|
||||||
recommended: "推奨"
|
recommended: "推奨"
|
||||||
@@ -785,6 +792,10 @@ desktop/views/components/settings.vue:
|
|||||||
tools: "ツール"
|
tools: "ツール"
|
||||||
task-manager: "タスクマネージャ"
|
task-manager: "タスクマネージャ"
|
||||||
third-parties: "サードパーティ"
|
third-parties: "サードパーティ"
|
||||||
|
navbar-position: "ナビゲーションバーの位置"
|
||||||
|
navbar-position-top: "上"
|
||||||
|
navbar-position-left: "左"
|
||||||
|
navbar-position-right: "右"
|
||||||
desktop/views/components/settings.2fa.vue:
|
desktop/views/components/settings.2fa.vue:
|
||||||
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
||||||
detail: "詳細..."
|
detail: "詳細..."
|
||||||
@@ -803,41 +814,44 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
success: "設定が完了しました!"
|
success: "設定が完了しました!"
|
||||||
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
||||||
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
||||||
desktop/views/components/settings.api.vue:
|
common/views/components/api-settings.vue:
|
||||||
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
||||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||||
regenerate-token: "トークンを再生成"
|
regenerate-token: "トークンを再生成"
|
||||||
token: "Token:"
|
token: "Token:"
|
||||||
enter-password: "パスワードを入力してください"
|
enter-password: "パスワードを入力してください"
|
||||||
|
console:
|
||||||
|
title: 'APIコンソール'
|
||||||
|
endpoint: 'エンドポイント'
|
||||||
|
parameter: 'パラメータ'
|
||||||
|
credential-info: "「i」パラメータは自動で付与されます。"
|
||||||
|
send: '送信'
|
||||||
|
sending: '応答待ち'
|
||||||
|
response: '結果'
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "連携しているアプリケーションはありません"
|
no-apps: "連携しているアプリケーションはありません"
|
||||||
desktop/views/components/settings.drive.vue:
|
common/views/components/drive-settings.vue:
|
||||||
max: "中"
|
max: "容量"
|
||||||
in-use: "使用中"
|
in-use: "使用中"
|
||||||
desktop/views/components/settings.mute.vue:
|
stats: "統計"
|
||||||
no-users: "ミュートしているユーザーはいません"
|
common/views/components/mute-and-block.vue:
|
||||||
desktop/views/components/settings.password.vue:
|
mute-and-block: "ミュートとブロック"
|
||||||
|
mute: "ミュート"
|
||||||
|
block: "ブロック"
|
||||||
|
no-muted-users: "ミュートしているユーザーはいません"
|
||||||
|
no-blocked-users: "ブロックしているユーザーはいません"
|
||||||
|
word-mute: "ワードミュート"
|
||||||
|
muted-words: "ミュートされたキーワード"
|
||||||
|
muted-words-description: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります"
|
||||||
|
save: "保存"
|
||||||
|
common/views/components/password-settings.vue:
|
||||||
reset: "パスワードを変更する"
|
reset: "パスワードを変更する"
|
||||||
enter-current-password: "現在のパスワードを入力してください"
|
enter-current-password: "現在のパスワードを入力してください"
|
||||||
enter-new-password: "新しいパスワードを入力してください"
|
enter-new-password: "新しいパスワードを入力してください"
|
||||||
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
||||||
not-match: "新しいパスワードが一致しません"
|
not-match: "新しいパスワードが一致しません"
|
||||||
changed: "パスワードを変更しました"
|
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:
|
desktop/views/components/sub-note-content.vue:
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
@@ -862,7 +876,6 @@ desktop/views/components/ui.header.vue:
|
|||||||
adjective: "さん"
|
adjective: "さん"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
drive: "ドライブ"
|
|
||||||
favorites: "お気に入り"
|
favorites: "お気に入り"
|
||||||
lists: "リスト"
|
lists: "リスト"
|
||||||
follow-requests: "フォロー申請"
|
follow-requests: "フォロー申請"
|
||||||
@@ -874,7 +887,6 @@ desktop/views/components/ui.header.account.vue:
|
|||||||
desktop/views/components/ui.header.nav.vue:
|
desktop/views/components/ui.header.nav.vue:
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
deck: "デッキ"
|
deck: "デッキ"
|
||||||
messaging: "メッセージ"
|
|
||||||
game: "ゲーム"
|
game: "ゲーム"
|
||||||
desktop/views/components/ui.header.notifications.vue:
|
desktop/views/components/ui.header.notifications.vue:
|
||||||
title: "通知"
|
title: "通知"
|
||||||
@@ -897,54 +909,153 @@ desktop/views/components/user-preview.vue:
|
|||||||
desktop/views/components/users-list.vue:
|
desktop/views/components/users-list.vue:
|
||||||
all: "すべて"
|
all: "すべて"
|
||||||
iknow: "知り合い"
|
iknow: "知り合い"
|
||||||
load-more: "もっと"
|
|
||||||
fetching: "読み込んでいます"
|
fetching: "読み込んでいます"
|
||||||
desktop/views/components/users-list-item.vue:
|
desktop/views/components/users-list-item.vue:
|
||||||
followed: "フォローされています"
|
followed: "フォローされています"
|
||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
desktop/views/pages/admin/admin.vue:
|
admin/views/index.vue:
|
||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
drive: "ドライブ"
|
instance: "インスタンス"
|
||||||
|
emoji: "カスタム絵文字"
|
||||||
|
moderators: "モデレーター"
|
||||||
users: "ユーザー"
|
users: "ユーザー"
|
||||||
update: "更新"
|
update: "更新"
|
||||||
desktop/views/pages/admin/admin.dashboard.vue:
|
announcements: "お知らせ"
|
||||||
|
hashtags: "ハッシュタグ"
|
||||||
|
back-to-misskey: "Misskeyに戻る"
|
||||||
|
admin/views/dashboard.vue:
|
||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
all-users: "全てのユーザー"
|
accounts: "アカウント"
|
||||||
original-users: "このインスタンスのユーザー"
|
notes: "投稿"
|
||||||
all-notes: "全ての投稿"
|
drive: "ドライブ"
|
||||||
original-notes: "このインスタンスの投稿"
|
instances: "インスタンス"
|
||||||
|
this-instance: "このインスタンス"
|
||||||
|
federated: "連合"
|
||||||
|
admin/views/instance.vue:
|
||||||
|
instance: "インスタンス"
|
||||||
|
instance-name: "インスタンス名"
|
||||||
|
instance-description: "インスタンスの紹介"
|
||||||
|
host: "ホスト"
|
||||||
|
banner-url: "バナー画像URL"
|
||||||
|
languages: "インスタンスの対象言語"
|
||||||
|
languages-desc: "スペースで区切って複数設定できます。"
|
||||||
|
maintainer-config: "管理者情報"
|
||||||
|
maintainer-name: "管理者名"
|
||||||
|
maintainer-email: "管理者の連絡先"
|
||||||
|
drive-config: "ドライブの設定"
|
||||||
|
cache-remote-files: "リモートのファイルをキャッシュする"
|
||||||
|
cache-remote-files-desc: "この設定を無効にすると、リモートファイルをキャッシュせず直リンクするようになります。そのためサーバーのストレージを節約できますが、プライバシー設定で直リンクを無効にしているユーザーにはファイルが見えなくなったり、サムネイルが生成されないので通信量が増加します。通常はこの設定をオンにしておくことをおすすめします。"
|
||||||
|
local-drive-capacity-mb: "ローカルユーザーひとりあたりのドライブ容量"
|
||||||
|
remote-drive-capacity-mb: "リモートユーザーひとりあたりのドライブ容量"
|
||||||
|
mb: "メガバイト単位"
|
||||||
|
recaptcha-config: "reCAPTCHAの設定"
|
||||||
|
recaptcha-info: "reCAPTCHAを有効にする場合、reCAPTCHAトークンを取得する必要があります。https://www.google.com/recaptcha/intro/ にアクセスしてトークンを取得してください。"
|
||||||
|
enable-recaptcha: "reCAPTCHAを有効にする"
|
||||||
|
recaptcha-site-key: "reCAPTCHA site key"
|
||||||
|
recaptcha-secret-key: "reCAPTCHA secret key"
|
||||||
|
twitter-integration-config: "Twitter連携の設定"
|
||||||
|
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。"
|
||||||
|
enable-twitter-integration: "Twitter連携を有効にする"
|
||||||
|
twitter-integration-consumer-key: "Consumer key"
|
||||||
|
twitter-integration-consumer-secret: "Consumer secret"
|
||||||
|
github-integration-config: "GitHub連携の設定"
|
||||||
|
github-integration-info: "コールバックURLは /api/gh/cb に設定します。"
|
||||||
|
enable-github-integration: "GitHub連携を有効にする"
|
||||||
|
github-integration-client-id: "Client ID"
|
||||||
|
github-integration-client-secret: "Client Secret"
|
||||||
|
discord-integration-config: "Discord連携の設定"
|
||||||
|
discord-integration-info: "コールバックURLは /api/dc/cb に設定します。"
|
||||||
|
enable-discord-integration: "Discord連携を有効にする"
|
||||||
|
discord-integration-client-id: "Client ID"
|
||||||
|
discord-integration-client-secret: "Client Secret"
|
||||||
|
proxy-account-config: "プロキシアカウントの設定"
|
||||||
|
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
|
||||||
|
proxy-account-username: "プロキシアカウントのユーザー名"
|
||||||
|
proxy-account-username-desc: "プロキシとして使用するアカウントのユーザー名を指定してください。"
|
||||||
|
proxy-account-warn: "アカウントは自動で作られないため、そのユーザー名のアカウントを予め作成しておく必要があります。"
|
||||||
|
max-note-text-length: "投稿の最大文字数"
|
||||||
|
disable-registration: "ユーザー登録の受付を停止する"
|
||||||
|
disable-local-timeline: "ローカルタイムラインを無効にする"
|
||||||
invite: "招待"
|
invite: "招待"
|
||||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
save: "保存"
|
||||||
|
saved: "保存しました"
|
||||||
|
admin/views/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: "通信量"
|
||||||
|
admin/views/users.vue:
|
||||||
suspend-user: "ユーザーの凍結"
|
suspend-user: "ユーザーの凍結"
|
||||||
suspend: "凍結"
|
suspend: "凍結"
|
||||||
suspended: "凍結しました"
|
suspended: "凍結しました"
|
||||||
desktop/views/pages/admin/admin.unsuspend-user.vue:
|
|
||||||
unsuspend-user: "ユーザーの凍結の解除"
|
unsuspend-user: "ユーザーの凍結の解除"
|
||||||
unsuspend: "凍結の解除"
|
unsuspend: "凍結の解除"
|
||||||
unsuspended: "凍結を解除しました"
|
unsuspended: "凍結を解除しました"
|
||||||
desktop/views/pages/admin/admin.verify-user.vue:
|
|
||||||
verify-user: "ユーザーの公式アカウント設定"
|
verify-user: "ユーザーの公式アカウント設定"
|
||||||
verify: "公式アカウントにする"
|
verify: "公式アカウントにする"
|
||||||
verified: "公式アカウントにしました"
|
verified: "公式アカウントにしました"
|
||||||
desktop/views/pages/admin/admin.unverify-user.vue:
|
|
||||||
unverify-user: "ユーザーの公式アカウント解除"
|
unverify-user: "ユーザーの公式アカウント解除"
|
||||||
unverify: "公式アカウントを解除する"
|
unverify: "公式アカウントを解除する"
|
||||||
unverified: "公式アカウントを解除しました"
|
unverified: "公式アカウントを解除しました"
|
||||||
desktop/views/pages/deck/deck.tl-column.vue:
|
admin/views/moderators.vue:
|
||||||
is-media-only: "メディア投稿のみ"
|
add-moderator:
|
||||||
is-media-view: "メディアビュー"
|
title: "モデレーターの登録"
|
||||||
edit: "オプション"
|
add: "登録"
|
||||||
desktop/views/pages/deck/deck.note.vue:
|
added: "モデレーターを登録しました"
|
||||||
reposted-by: "{}がRenote"
|
admin/views/emoji.vue:
|
||||||
private: "この投稿は非公開です"
|
add-emoji:
|
||||||
deleted: "この投稿は削除されました"
|
title: "絵文字の登録"
|
||||||
desktop/views/pages/stats/stats.vue:
|
name: "絵文字名"
|
||||||
all-users: "全てのユーザー"
|
name-desc: "a~z 0~9 _ の文字が使えます。"
|
||||||
original-users: "このインスタンスのユーザー"
|
aliases: "エイリアス"
|
||||||
all-notes: "全ての投稿"
|
aliases-desc: "スペースで区切って複数設定できます。"
|
||||||
original-notes: "このインスタンスの投稿"
|
url: "絵文字画像URL"
|
||||||
|
add: "追加"
|
||||||
|
info: "50KB以下のPNG画像をおすすめします。"
|
||||||
|
added: "絵文字を登録しました"
|
||||||
|
emojis:
|
||||||
|
title: "絵文字一覧"
|
||||||
|
update: "更新"
|
||||||
|
remove: "削除"
|
||||||
|
updated: "更新しました"
|
||||||
|
remove-emoji:
|
||||||
|
are-you-sure: "「$1」を削除しますか?"
|
||||||
|
removed: "削除しました"
|
||||||
|
admin/views/announcements.vue:
|
||||||
|
announcements: "お知らせ"
|
||||||
|
save: "保存"
|
||||||
|
remove: "削除"
|
||||||
|
add: "追加"
|
||||||
|
title: "タイトル"
|
||||||
|
text: "内容"
|
||||||
|
saved: "保存しました"
|
||||||
|
_remove:
|
||||||
|
are-you-sure: "「$1」を削除しますか?"
|
||||||
|
removed: "削除しました"
|
||||||
|
admin/views/hashtags.vue:
|
||||||
|
hided-tags: "Hidden Tags"
|
||||||
desktop/views/pages/welcome.vue:
|
desktop/views/pages/welcome.vue:
|
||||||
about: "詳しく..."
|
about: "詳しく..."
|
||||||
gotit: "わかった"
|
gotit: "わかった"
|
||||||
@@ -959,8 +1070,6 @@ desktop/views/pages/welcome.vue:
|
|||||||
info: "情報"
|
info: "情報"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
desktop/views/pages/favorites.vue:
|
|
||||||
more: "さらに読み込む"
|
|
||||||
desktop/views/pages/home-customize.vue:
|
desktop/views/pages/home-customize.vue:
|
||||||
title: "ホームのカスタマイズ"
|
title: "ホームのカスタマイズ"
|
||||||
desktop/views/pages/note.vue:
|
desktop/views/pages/note.vue:
|
||||||
@@ -973,11 +1082,11 @@ desktop/views/pages/selectdrive.vue:
|
|||||||
upload: "PCからドライブにファイルをアップロード"
|
upload: "PCからドライブにファイルをアップロード"
|
||||||
desktop/views/pages/search.vue:
|
desktop/views/pages/search.vue:
|
||||||
not-available: "検索機能はインスタンスの設定で無効になっています。"
|
not-available: "検索機能はインスタンスの設定で無効になっています。"
|
||||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
not-found: "「{q}」に関する投稿は見つかりませんでした。"
|
||||||
desktop/views/pages/share.vue:
|
desktop/views/pages/share.vue:
|
||||||
share-with: "{}で共有"
|
share-with: "{name}で共有"
|
||||||
desktop/views/pages/tag.vue:
|
desktop/views/pages/tag.vue:
|
||||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
|
||||||
desktop/views/pages/user-list.users.vue:
|
desktop/views/pages/user-list.users.vue:
|
||||||
users: "ユーザー"
|
users: "ユーザー"
|
||||||
add-user: "ユーザーを追加"
|
add-user: "ユーザーを追加"
|
||||||
@@ -990,12 +1099,6 @@ desktop/views/pages/user/user.friends.vue:
|
|||||||
title: "よく話すユーザー"
|
title: "よく話すユーザー"
|
||||||
loading: "読み込み中"
|
loading: "読み込み中"
|
||||||
no-users: "よく話すユーザーはいません"
|
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:
|
desktop/views/pages/user/user.photos.vue:
|
||||||
title: "フォト"
|
title: "フォト"
|
||||||
loading: "読み込み中"
|
loading: "読み込み中"
|
||||||
@@ -1008,6 +1111,9 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "ミュートする"
|
mute: "ミュートする"
|
||||||
muted: "ミュートしています"
|
muted: "ミュートしています"
|
||||||
unmute: "ミュート解除"
|
unmute: "ミュート解除"
|
||||||
|
block: "ブロックする"
|
||||||
|
unblock: "ブロック解除"
|
||||||
|
block-confirm: "このユーザーをブロックしますか?"
|
||||||
push-to-a-list: "リストに追加"
|
push-to-a-list: "リストに追加"
|
||||||
list-pushed: "{user}を{list}に追加しました。"
|
list-pushed: "{user}を{list}に追加しました。"
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.header.vue:
|
||||||
@@ -1015,6 +1121,10 @@ desktop/views/pages/user/user.header.vue:
|
|||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
followers: "フォロワー"
|
followers: "フォロワー"
|
||||||
is-bot: "このアカウントはBotです"
|
is-bot: "このアカウントはBotです"
|
||||||
|
years-old: "{age}歳"
|
||||||
|
year: "年"
|
||||||
|
month: "月"
|
||||||
|
day: "日"
|
||||||
desktop/views/pages/user/user.timeline.vue:
|
desktop/views/pages/user/user.timeline.vue:
|
||||||
default: "投稿"
|
default: "投稿"
|
||||||
with-replies: "投稿と返信"
|
with-replies: "投稿と返信"
|
||||||
@@ -1044,12 +1154,10 @@ desktop/views/widgets/users.vue:
|
|||||||
refresh: "他を見る"
|
refresh: "他を見る"
|
||||||
no-one: "いません!"
|
no-one: "いません!"
|
||||||
mobile/views/components/drive.vue:
|
mobile/views/components/drive.vue:
|
||||||
drive: "ドライブ"
|
|
||||||
used: "使用中"
|
used: "使用中"
|
||||||
folder-count: "フォルダ"
|
folder-count: "フォルダ"
|
||||||
count-separator: "、"
|
count-separator: "、"
|
||||||
file-count: "ファイル"
|
file-count: "ファイル"
|
||||||
load-more: "もっと読み込む"
|
|
||||||
nothing-in-drive: "ドライブには何もありません"
|
nothing-in-drive: "ドライブには何もありません"
|
||||||
folder-is-empty: "このフォルダは空です"
|
folder-is-empty: "このフォルダは空です"
|
||||||
prompt: "何をしますか?(数字を入力してください): <1 → ファイルをアップロード | 2 → ファイルをURLでアップロード | 3 → フォルダ作成 | 4 → このフォルダ名を変更 | 5 → このフォルダを移動 | 6 → このフォルダを削除>"
|
prompt: "何をしますか?(数字を入力してください): <1 → ファイルをアップロード | 2 → ファイルをURLでアップロード | 3 → フォルダ作成 | 4 → このフォルダ名を変更 | 5 → このフォルダを移動 | 6 → このフォルダを削除>"
|
||||||
@@ -1059,8 +1167,6 @@ mobile/views/components/drive.vue:
|
|||||||
root-move-alert: "現在いる場所はルートで、フォルダではないため移動はできません。移動したいフォルダに移動してからやってください。"
|
root-move-alert: "現在いる場所はルートで、フォルダではないため移動はできません。移動したいフォルダに移動してからやってください。"
|
||||||
url-prompt: "アップロードしたいファイルのURL"
|
url-prompt: "アップロードしたいファイルのURL"
|
||||||
uploading: "アップロードをリクエストしました。アップロードが完了するまで時間がかかる場合があります。"
|
uploading: "アップロードをリクエストしました。アップロードが完了するまで時間がかかる場合があります。"
|
||||||
mobile/views/components/drive-file-detail.vue:
|
|
||||||
rename: "名前を変更"
|
|
||||||
mobile/views/components/drive-file-chooser.vue:
|
mobile/views/components/drive-file-chooser.vue:
|
||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
mobile/views/components/drive-folder-chooser.vue:
|
mobile/views/components/drive-folder-chooser.vue:
|
||||||
@@ -1074,13 +1180,15 @@ mobile/views/components/drive.file-detail.vue:
|
|||||||
hash: "ハッシュ (md5)"
|
hash: "ハッシュ (md5)"
|
||||||
exif: "EXIF"
|
exif: "EXIF"
|
||||||
nsfw: "閲覧注意"
|
nsfw: "閲覧注意"
|
||||||
|
mark-as-sensitive: "閲覧注意に設定"
|
||||||
|
unmark-as-sensitive: "閲覧注意を解除"
|
||||||
mobile/views/components/media-image.vue:
|
mobile/views/components/media-image.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
mobile/views/components/media-video.vue:
|
mobile/views/components/media-video.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
mobile/views/components/follow-button.vue:
|
common/views/components/follow-button.vue:
|
||||||
following: "フォロー中"
|
following: "フォロー中"
|
||||||
follow: "フォロー"
|
follow: "フォロー"
|
||||||
request-pending: "フォロー許可待ち"
|
request-pending: "フォロー許可待ち"
|
||||||
@@ -1112,11 +1220,7 @@ mobile/views/components/note-sub.vue:
|
|||||||
admin: "admin"
|
admin: "admin"
|
||||||
bot: "bot"
|
bot: "bot"
|
||||||
cat: "cat"
|
cat: "cat"
|
||||||
mobile/views/components/notes.vue:
|
|
||||||
failed: "読み込みに失敗しました。"
|
|
||||||
retry: "リトライ"
|
|
||||||
mobile/views/components/notifications.vue:
|
mobile/views/components/notifications.vue:
|
||||||
more: "もっと見る"
|
|
||||||
empty: "ありません!"
|
empty: "ありません!"
|
||||||
mobile/views/components/post-form.vue:
|
mobile/views/components/post-form.vue:
|
||||||
add-visible-user: "ユーザーを追加"
|
add-visible-user: "ユーザーを追加"
|
||||||
@@ -1136,17 +1240,14 @@ mobile/views/components/sub-note-content.vue:
|
|||||||
poll: "アンケート"
|
poll: "アンケート"
|
||||||
mobile/views/components/timeline.vue:
|
mobile/views/components/timeline.vue:
|
||||||
empty: "投稿がありません"
|
empty: "投稿がありません"
|
||||||
load-more: "もっと"
|
|
||||||
mobile/views/components/ui.header.vue:
|
mobile/views/components/ui.header.vue:
|
||||||
welcome-back: "おかえりなさい、"
|
welcome-back: "おかえりなさい、"
|
||||||
adjective: "さん"
|
adjective: "さん"
|
||||||
mobile/views/components/ui.nav.vue:
|
mobile/views/components/ui.nav.vue:
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
messaging: "メッセージ"
|
|
||||||
follow-requests: "フォロー申請"
|
follow-requests: "フォロー申請"
|
||||||
search: "検索"
|
search: "検索"
|
||||||
drive: "ドライブ"
|
|
||||||
favorites: "お気に入り"
|
favorites: "お気に入り"
|
||||||
user-lists: "リスト"
|
user-lists: "リスト"
|
||||||
widgets: "ウィジェット"
|
widgets: "ウィジェット"
|
||||||
@@ -1158,25 +1259,20 @@ mobile/views/components/ui.nav.vue:
|
|||||||
mobile/views/components/user-timeline.vue:
|
mobile/views/components/user-timeline.vue:
|
||||||
no-notes: "このユーザーは投稿していないようです。"
|
no-notes: "このユーザーは投稿していないようです。"
|
||||||
no-notes-with-media: "メディア付き投稿はありません。"
|
no-notes-with-media: "メディア付き投稿はありません。"
|
||||||
load-more: "もっと"
|
|
||||||
mobile/views/components/users-list.vue:
|
mobile/views/components/users-list.vue:
|
||||||
all: "すべて"
|
all: "すべて"
|
||||||
known: "知り合い"
|
known: "知り合い"
|
||||||
load-more: "もっと"
|
|
||||||
mobile/views/pages/favorites.vue:
|
mobile/views/pages/favorites.vue:
|
||||||
title: "お気に入り"
|
title: "お気に入り"
|
||||||
mobile/views/pages/user-lists.vue:
|
mobile/views/pages/user-lists.vue:
|
||||||
title: "リスト"
|
title: "リスト"
|
||||||
enter-list-name: "リスト名を入力してください"
|
enter-list-name: "リスト名を入力してください"
|
||||||
mobile/views/pages/drive.vue:
|
|
||||||
drive: "ドライブ"
|
|
||||||
more: "もっと見る"
|
|
||||||
mobile/views/pages/signup.vue:
|
mobile/views/pages/signup.vue:
|
||||||
lets-start: "📦 始めましょう"
|
lets-start: "📦 始めましょう"
|
||||||
mobile/views/pages/followers.vue:
|
mobile/views/pages/followers.vue:
|
||||||
followers-of: "{}のフォロワー"
|
followers-of: "{name}のフォロワー"
|
||||||
mobile/views/pages/following.vue:
|
mobile/views/pages/following.vue:
|
||||||
following-of: "{}のフォロー"
|
following-of: "{name}のフォロー"
|
||||||
mobile/views/pages/home.vue:
|
mobile/views/pages/home.vue:
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
local: "ローカル"
|
local: "ローカル"
|
||||||
@@ -1185,7 +1281,7 @@ mobile/views/pages/home.vue:
|
|||||||
mentions: "あなた宛て"
|
mentions: "あなた宛て"
|
||||||
messages: "メッセージ"
|
messages: "メッセージ"
|
||||||
mobile/views/pages/tag.vue:
|
mobile/views/pages/tag.vue:
|
||||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
|
||||||
mobile/views/pages/welcome.vue:
|
mobile/views/pages/welcome.vue:
|
||||||
signup: "新規登録"
|
signup: "新規登録"
|
||||||
mobile/views/pages/widgets.vue:
|
mobile/views/pages/widgets.vue:
|
||||||
@@ -1196,11 +1292,7 @@ mobile/views/pages/widgets.vue:
|
|||||||
mobile/views/pages/widgets/activity.vue:
|
mobile/views/pages/widgets/activity.vue:
|
||||||
activity: "アクティビティ"
|
activity: "アクティビティ"
|
||||||
mobile/views/pages/share.vue:
|
mobile/views/pages/share.vue:
|
||||||
share-with: "{}で共有"
|
share-with: "{name}で共有"
|
||||||
mobile/views/pages/messaging.vue:
|
|
||||||
messaging: "メッセージ"
|
|
||||||
mobile/views/pages/messaging-room.vue:
|
|
||||||
messaging: "メッセージ"
|
|
||||||
mobile/views/pages/received-follow-requests.vue:
|
mobile/views/pages/received-follow-requests.vue:
|
||||||
title: "フォロー申請"
|
title: "フォロー申請"
|
||||||
accept: "承認"
|
accept: "承認"
|
||||||
@@ -1214,27 +1306,9 @@ mobile/views/pages/notifications.vue:
|
|||||||
read-all: "すべての通知を既読にしますか?"
|
read-all: "すべての通知を既読にしますか?"
|
||||||
mobile/views/pages/games/reversi.vue:
|
mobile/views/pages/games/reversi.vue:
|
||||||
reversi: "リバーシ"
|
reversi: "リバーシ"
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
|
||||||
title: "プロフィール"
|
|
||||||
name: "名前"
|
|
||||||
account: "アカウント"
|
|
||||||
location: "場所"
|
|
||||||
description: "自己紹介"
|
|
||||||
birthday: "誕生日"
|
|
||||||
avatar: "アイコン"
|
|
||||||
banner: "バナー"
|
|
||||||
is-cat: "このアカウントはCatです"
|
|
||||||
is-locked: "フォローを承認制にする"
|
|
||||||
advanced: "その他"
|
|
||||||
privacy: "プライバシー"
|
|
||||||
save: "保存"
|
|
||||||
saved: "プロフィールを保存しました"
|
|
||||||
uploading: "アップロード中"
|
|
||||||
upload-failed: "アップロードに失敗しました"
|
|
||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
search: "検索"
|
search: "検索"
|
||||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
not-found: "「{q}」に関する投稿は見つかりませんでした。"
|
||||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
|
||||||
mobile/views/pages/selectdrive.vue:
|
mobile/views/pages/selectdrive.vue:
|
||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
mobile/views/pages/settings.vue:
|
mobile/views/pages/settings.vue:
|
||||||
@@ -1273,6 +1347,14 @@ mobile/views/pages/settings.vue:
|
|||||||
twitter-connect: "Twitterアカウントに接続する"
|
twitter-connect: "Twitterアカウントに接続する"
|
||||||
twitter-reconnect: "再接続する"
|
twitter-reconnect: "再接続する"
|
||||||
twitter-disconnect: "切断する"
|
twitter-disconnect: "切断する"
|
||||||
|
github: "GitHub連携"
|
||||||
|
github-connect: "GitHubアカウントに接続する"
|
||||||
|
github-reconnect: "再接続する"
|
||||||
|
github-disconnect: "切断する"
|
||||||
|
discord: "Discord連携"
|
||||||
|
discord-connect: "Discordアカウントに接続する"
|
||||||
|
discord-reconnect: "再接続する"
|
||||||
|
discord-disconnect: "切断する"
|
||||||
update: "Misskey Update"
|
update: "Misskey Update"
|
||||||
version: "バージョン:"
|
version: "バージョン:"
|
||||||
latest-version: "最新のバージョン:"
|
latest-version: "最新のバージョン:"
|
||||||
@@ -1286,6 +1368,8 @@ mobile/views/pages/settings.vue:
|
|||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
sound: "サウンド"
|
sound: "サウンド"
|
||||||
enable-sounds: "サウンドを有効にする"
|
enable-sounds: "サウンドを有効にする"
|
||||||
|
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
|
||||||
|
password: "パスワード"
|
||||||
mobile/views/pages/user.vue:
|
mobile/views/pages/user.vue:
|
||||||
follows-you: "フォローされています"
|
follows-you: "フォローされています"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@@ -1295,8 +1379,11 @@ mobile/views/pages/user.vue:
|
|||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
media: "メディア"
|
media: "メディア"
|
||||||
is-suspended: "このユーザーは凍結されています。"
|
is-suspended: "このユーザーは凍結されています。"
|
||||||
is-remote: "このユーザーはリモートユーザーです。"
|
mute: "ミュート"
|
||||||
view-remote: "正確な情報を見る"
|
unmute: "ミュート解除"
|
||||||
|
block: "ブロック"
|
||||||
|
unblock: "ブロック解除"
|
||||||
|
years-old: "{age}歳"
|
||||||
mobile/views/pages/user/home.vue:
|
mobile/views/pages/user/home.vue:
|
||||||
recent-notes: "最近の投稿"
|
recent-notes: "最近の投稿"
|
||||||
images: "画像"
|
images: "画像"
|
||||||
@@ -1307,17 +1394,46 @@ mobile/views/pages/user/home.vue:
|
|||||||
followers-you-know: "知り合いのフォロワー"
|
followers-you-know: "知り合いのフォロワー"
|
||||||
last-used-at: "最終ログイン"
|
last-used-at: "最終ログイン"
|
||||||
mobile/views/pages/user/home.followers-you-know.vue:
|
mobile/views/pages/user/home.followers-you-know.vue:
|
||||||
loading: "読み込み中"
|
|
||||||
no-users: "知り合いのユーザーはいません"
|
no-users: "知り合いのユーザーはいません"
|
||||||
mobile/views/pages/user/home.friends.vue:
|
mobile/views/pages/user/home.friends.vue:
|
||||||
loading: "読み込み中"
|
|
||||||
no-users: "よく会話するユーザーはいません"
|
no-users: "よく会話するユーザーはいません"
|
||||||
mobile/views/pages/user/home.notes.vue:
|
mobile/views/pages/user/home.notes.vue:
|
||||||
loading: "読み込み中"
|
|
||||||
no-notes: "投稿はありません"
|
no-notes: "投稿はありません"
|
||||||
mobile/views/pages/user/home.photos.vue:
|
mobile/views/pages/user/home.photos.vue:
|
||||||
loading: "読み込み中"
|
|
||||||
no-photos: "写真はありません"
|
no-photos: "写真はありません"
|
||||||
|
deck:
|
||||||
|
widgets: "ウィジェット"
|
||||||
|
home: "ホーム"
|
||||||
|
local: "ローカル"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
|
hashtag: "ハッシュタグ"
|
||||||
|
global: "グローバル"
|
||||||
|
mentions: "あなた宛て"
|
||||||
|
direct: "ダイレクト投稿"
|
||||||
|
notifications: "通知"
|
||||||
|
list: "リスト"
|
||||||
|
swap-left: "左に移動"
|
||||||
|
swap-right: "右に移動"
|
||||||
|
swap-up: "上に移動"
|
||||||
|
swap-down: "下に移動"
|
||||||
|
remove: "カラムを削除"
|
||||||
|
add-column: "カラムを追加"
|
||||||
|
rename: "名前を変更"
|
||||||
|
stack-left: "左に重ねる"
|
||||||
|
pop-right: "右に出す"
|
||||||
|
deck/deck.tl-column.vue:
|
||||||
|
is-media-only: "メディア投稿のみ"
|
||||||
|
is-media-view: "メディアビュー"
|
||||||
|
edit: "オプション"
|
||||||
|
deck/deck.user-column.vue:
|
||||||
|
posts: "投稿"
|
||||||
|
following: "フォロー"
|
||||||
|
followers: "フォロワー"
|
||||||
|
images: "画像"
|
||||||
|
activity: "アクティビティ"
|
||||||
|
timeline: "タイムライン"
|
||||||
|
pinned-notes: "ピン留めされた投稿"
|
||||||
|
push-to-a-list: "リストに追加"
|
||||||
docs:
|
docs:
|
||||||
edit-this-page-on-github: "間違いや改善点を見つけましたか?"
|
edit-this-page-on-github: "間違いや改善点を見つけましたか?"
|
||||||
edit-this-page-on-github-link: "このページをGitHubで編集"
|
edit-this-page-on-github-link: "このページをGitHubで編集"
|
||||||
@@ -1342,3 +1458,29 @@ docs:
|
|||||||
description: "説明"
|
description: "説明"
|
||||||
dev/views/index.vue:
|
dev/views/index.vue:
|
||||||
manage-apps: "アプリの管理"
|
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
@@ -16,7 +16,7 @@ common:
|
|||||||
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”."
|
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: "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."
|
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: "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."
|
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!"
|
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:
|
adblock:
|
||||||
@@ -25,13 +25,11 @@ common:
|
|||||||
application-authorization: "Application authorizations"
|
application-authorization: "Application authorizations"
|
||||||
close: "Close"
|
close: "Close"
|
||||||
do-not-copy-paste: "Please do not enter or paste the code here. Account may be compromised."
|
do-not-copy-paste: "Please do not enter or paste the code here. Account may be compromised."
|
||||||
|
load-more: "Load more"
|
||||||
got-it: "Got it!"
|
got-it: "Got it!"
|
||||||
customization-tips:
|
customization-tips:
|
||||||
title: "Customization tips"
|
title: "Customization tips"
|
||||||
paragraph1: "Home customization allows you to add/delete, drag and drop and rearrange widgets."
|
paragraph: "<p>Home customization allows you to add/delete, drag and drop and rearrange widgets.</p><p>You can change the display by <strong><strong>right</strong> clicking</strong> on some widgets.</p><p>To delete a widget, drag and drop the widget onto <strong>the area labeled \"Trash\"</strong> in the header.</p><p>To finish the customization, click \"Finish\" on the upper right.</p>"
|
||||||
paragraph2: "You can change the display by <strong><strong>right</strong> clicking</strong> on some widgets."
|
|
||||||
paragraph3: "To delete a widget, drag and drop the widget onto <strong>the area labeled \"Trash\"</strong> in the header."
|
|
||||||
paragraph4: "To finish the customization, click \"Finish\" on the upper right."
|
|
||||||
gotit: "Got it!"
|
gotit: "Got it!"
|
||||||
notification:
|
notification:
|
||||||
file-uploaded: "File uploaded!"
|
file-uploaded: "File uploaded!"
|
||||||
@@ -54,6 +52,8 @@ common:
|
|||||||
years_ago: "{}year(s) ago"
|
years_ago: "{}year(s) ago"
|
||||||
month-and-day: "{month}/{day}"
|
month-and-day: "{month}/{day}"
|
||||||
trash: "Trash"
|
trash: "Trash"
|
||||||
|
drive: "Drive"
|
||||||
|
messaging: "Talk"
|
||||||
weekday-short:
|
weekday-short:
|
||||||
sunday: "S"
|
sunday: "S"
|
||||||
monday: "M"
|
monday: "M"
|
||||||
@@ -110,22 +110,30 @@ common:
|
|||||||
verified-user: "Verified account"
|
verified-user: "Verified account"
|
||||||
disable-animated-mfm: "Disable animated texts in a post"
|
disable-animated-mfm: "Disable animated texts in a post"
|
||||||
always-show-nsfw: "Always show NSFW contents"
|
always-show-nsfw: "Always show NSFW contents"
|
||||||
always-mark-nsfw: "Always post with a warning about media attachment"
|
always-mark-nsfw: "Always mark posts with media attachments as NSFW"
|
||||||
show-full-acct: "Do not omit the hostname from the username"
|
show-full-acct: "Do not omit the hostname from the username"
|
||||||
|
show-via: "Show via"
|
||||||
reduce-motion: "Reduce motion in UI"
|
reduce-motion: "Reduce motion in UI"
|
||||||
this-setting-is-this-device-only: "Only for this device"
|
this-setting-is-this-device-only: "Only for this device"
|
||||||
|
use-os-default-emojis: "Use the OS default Emojis"
|
||||||
do-not-use-in-production: 'As this is for development, do not use this in production.'
|
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:
|
reversi:
|
||||||
drawn: "Draw"
|
drawn: "Draw"
|
||||||
my-turn: "Your turn"
|
my-turn: "Your turn"
|
||||||
opponent-turn: "Opponent's turn"
|
opponent-turn: "Opponent's turn"
|
||||||
turn-of: "{}'s turn"
|
turn-of: "{name}'s turn"
|
||||||
past-turn-of: "{}'s turn"
|
past-turn-of: "{name}'s turn"
|
||||||
won: "{} won"
|
won: "{name} won"
|
||||||
black: "Black"
|
black: "Black"
|
||||||
white: "White"
|
white: "White"
|
||||||
total: "Total"
|
total: "Total"
|
||||||
this-turn: "Turn {}"
|
this-turn: "Turn {count}"
|
||||||
widgets:
|
widgets:
|
||||||
analog-clock: "Analog clock"
|
analog-clock: "Analog clock"
|
||||||
profile: "Profile"
|
profile: "Profile"
|
||||||
@@ -144,34 +152,15 @@ common:
|
|||||||
users: "Recommended users"
|
users: "Recommended users"
|
||||||
polls: "Polls"
|
polls: "Polls"
|
||||||
post-form: "Post form"
|
post-form: "Post form"
|
||||||
messaging: "Messages"
|
|
||||||
server: "Server info"
|
server: "Server info"
|
||||||
donation: "Request for donations"
|
donation: "Request for donations"
|
||||||
nav: "Navigation"
|
nav: "Navigation"
|
||||||
tips: "Tips"
|
tips: "Tips"
|
||||||
hashtags: "Hashtags"
|
hashtags: "Hashtags"
|
||||||
deck:
|
dev: "Failed to create the application. Please try again."
|
||||||
widgets: "Widgets"
|
ai-chan-kawaii: "Ai-chan kawaii!"
|
||||||
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"
|
|
||||||
swap-right: "Move to the right"
|
|
||||||
swap-up: "Move up"
|
|
||||||
swap-down: "Move downward"
|
|
||||||
remove: "Remove"
|
|
||||||
add-column: "Add a column"
|
|
||||||
rename: "Rename"
|
|
||||||
stack-left: "Stack to the left"
|
|
||||||
pop-right: "Dock on the right"
|
|
||||||
auth/views/form.vue:
|
auth/views/form.vue:
|
||||||
share-access: "Would you <b>allow</b> <i>{{ app.name }}</i> to access your account?"
|
share-access: "Would you allow <i>{name}</i> to access your account?"
|
||||||
permission-ask: "This application requires the following permissions:"
|
permission-ask: "This application requires the following permissions:"
|
||||||
account-read: "View account information."
|
account-read: "View account information."
|
||||||
account-write: "Modify account information."
|
account-write: "Modify account information."
|
||||||
@@ -233,7 +222,7 @@ common/views/components/games/reversi/reversi.room.vue:
|
|||||||
this-game-is-started-soon: "The game will begin in seconds"
|
this-game-is-started-soon: "The game will begin in seconds"
|
||||||
waiting-for-other: "Waiting for the opponent"
|
waiting-for-other: "Waiting for the opponent"
|
||||||
waiting-for-me: "Waiting for the your preparation"
|
waiting-for-me: "Waiting for the your preparation"
|
||||||
waiting-for-both: "Prepareing"
|
waiting-for-both: "Preparing"
|
||||||
cancel: "Cancel"
|
cancel: "Cancel"
|
||||||
ready: "Ready"
|
ready: "Ready"
|
||||||
cancel-ready: "Cancel \"Ready\""
|
cancel-ready: "Cancel \"Ready\""
|
||||||
@@ -265,7 +254,7 @@ common/views/components/media-banner.vue:
|
|||||||
sensitive: "NSFW"
|
sensitive: "NSFW"
|
||||||
click-to-show: "Click to show"
|
click-to-show: "Click to show"
|
||||||
common/views/components/theme.vue:
|
common/views/components/theme.vue:
|
||||||
light-theme: "Theme during non-dark mode"
|
light-theme: "Theme"
|
||||||
dark-theme: "Theme during dark mode"
|
dark-theme: "Theme during dark mode"
|
||||||
light-themes: "Light theme"
|
light-themes: "Light theme"
|
||||||
dark-themes: "Dark theme"
|
dark-themes: "Dark theme"
|
||||||
@@ -308,7 +297,6 @@ common/views/components/messaging.vue:
|
|||||||
no-history: "Without history"
|
no-history: "Without history"
|
||||||
common/views/components/messaging-room.vue:
|
common/views/components/messaging-room.vue:
|
||||||
empty: "No conversations"
|
empty: "No conversations"
|
||||||
more: "Read more"
|
|
||||||
no-history: "There is no further history"
|
no-history: "There is no further history"
|
||||||
resize-form: "Drag to resize"
|
resize-form: "Drag to resize"
|
||||||
new-message: "New message"
|
new-message: "New message"
|
||||||
@@ -356,6 +344,16 @@ common/views/components/poll-editor.vue:
|
|||||||
destroy: "Discard the poll"
|
destroy: "Discard the poll"
|
||||||
common/views/components/reaction-picker.vue:
|
common/views/components/reaction-picker.vue:
|
||||||
choose-reaction: "Send a reaction"
|
choose-reaction: "Send a reaction"
|
||||||
|
common/views/components/emoji-picker.vue:
|
||||||
|
custom-emoji: "Custom Emoji"
|
||||||
|
people: "People"
|
||||||
|
animals-and-nature: "Animals & Nature"
|
||||||
|
food-and-drink: "Food & drink"
|
||||||
|
activity: "Activity"
|
||||||
|
travel-and-places: "Travel & Places"
|
||||||
|
objects: "Objects"
|
||||||
|
symbols: "Symbols"
|
||||||
|
flags: "Flags"
|
||||||
common/views/components/signin.vue:
|
common/views/components/signin.vue:
|
||||||
username: "Username"
|
username: "Username"
|
||||||
password: "Password"
|
password: "Password"
|
||||||
@@ -364,6 +362,8 @@ common/views/components/signin.vue:
|
|||||||
signin: "Sign in"
|
signin: "Sign in"
|
||||||
or: "Or"
|
or: "Or"
|
||||||
signin-with-twitter: "Log in with Twitter"
|
signin-with-twitter: "Log in with Twitter"
|
||||||
|
signin-with-github: "Log in with GitHub"
|
||||||
|
signin-with-discord: "Login with Discord"
|
||||||
login-failed: "Log in failed. Make sure you have entered your correct username and password."
|
login-failed: "Log in failed. Make sure you have entered your correct username and password."
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
invitation-code: "Invitation code"
|
invitation-code: "Invitation code"
|
||||||
@@ -402,6 +402,20 @@ common/views/components/twitter-setting.vue:
|
|||||||
reconnect: "Reconnect"
|
reconnect: "Reconnect"
|
||||||
connect: "Link your Twitter account"
|
connect: "Link your Twitter account"
|
||||||
disconnect: "Disconnect"
|
disconnect: "Disconnect"
|
||||||
|
common/views/components/github-setting.vue:
|
||||||
|
description: "Once you connect your GitHub account to your Misskey account, you will be able to see information about your GitHub account on your profile, and you will be able to sign-in via GitHub."
|
||||||
|
connected-to: "You are connected to this GitHub account"
|
||||||
|
detail: "More..."
|
||||||
|
reconnect: "Reconnect"
|
||||||
|
connect: "Link your GitHub account"
|
||||||
|
disconnect: "Disconnect"
|
||||||
|
common/views/components/discord-setting.vue:
|
||||||
|
description: "Once you connect your Discord account to your Misskey account, you will be able to see information about your Discord account on your profile, and you will be able to sign-in using Discord."
|
||||||
|
connected-to: "You are connected to this Discord account"
|
||||||
|
detail: "Details…"
|
||||||
|
reconnect: "Reconnect"
|
||||||
|
connect: "Link your Discord account"
|
||||||
|
disconnect: "Disconnect"
|
||||||
common/views/components/uploader.vue:
|
common/views/components/uploader.vue:
|
||||||
waiting: "Waiting"
|
waiting: "Waiting"
|
||||||
common/views/components/visibility-chooser.vue:
|
common/views/components/visibility-chooser.vue:
|
||||||
@@ -416,6 +430,25 @@ common/views/components/visibility-chooser.vue:
|
|||||||
common/views/components/trends.vue:
|
common/views/components/trends.vue:
|
||||||
count: "{} users mentioned"
|
count: "{} users mentioned"
|
||||||
empty: "No popular hashtag trends"
|
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:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "Fetching"
|
fetching: "Fetching"
|
||||||
no-broadcasts: "No announcements"
|
no-broadcasts: "No announcements"
|
||||||
@@ -463,7 +496,7 @@ common/views/widgets/tips.vue:
|
|||||||
tips-line10: "Using the Time Machine widget makes it easy to trace back to the past timeline."
|
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-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-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-line17: "Surrounding the text with ** ** will highlight it."
|
||||||
tips-line19: "Several windows can be detached outside the browser."
|
tips-line19: "Several windows can be detached outside the browser."
|
||||||
tips-line20: "The percentage of the calendar widget shows the percentage of time elapsed."
|
tips-line20: "The percentage of the calendar widget shows the percentage of time elapsed."
|
||||||
@@ -499,34 +532,12 @@ desktop/views/components/activity.vue:
|
|||||||
title: "Activity"
|
title: "Activity"
|
||||||
toggle: "Toggle views"
|
toggle: "Toggle views"
|
||||||
desktop/views/components/calendar.vue:
|
desktop/views/components/calendar.vue:
|
||||||
title: "{1} / {2}"
|
title: "{year} / {month}"
|
||||||
prev: "Previous month"
|
prev: "Previous month"
|
||||||
next: "Next month"
|
next: "Next month"
|
||||||
go: "Click to navigate"
|
go: "Click to navigate"
|
||||||
desktop/views/components/charts.vue:
|
|
||||||
title: "Charts"
|
|
||||||
per-day: "per Day"
|
|
||||||
per-hour: "per Hour"
|
|
||||||
notes: "Posts"
|
|
||||||
users: "Users"
|
|
||||||
drive: "Drive"
|
|
||||||
network: "Network"
|
|
||||||
charts:
|
|
||||||
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:
|
desktop/views/components/choose-file-from-drive-window.vue:
|
||||||
choose-file: "Choose files"
|
chosen-files: "{count} File(s) selected"
|
||||||
upload: "Upload files from your device"
|
upload: "Upload files from your device"
|
||||||
cancel: "Cancel"
|
cancel: "Cancel"
|
||||||
ok: "OK"
|
ok: "OK"
|
||||||
@@ -541,7 +552,6 @@ desktop/views/components/crop-window.vue:
|
|||||||
ok: "OK"
|
ok: "OK"
|
||||||
desktop/views/components/drive-window.vue:
|
desktop/views/components/drive-window.vue:
|
||||||
used: "used"
|
used: "used"
|
||||||
drive: "Media storage"
|
|
||||||
desktop/views/components/drive.file.vue:
|
desktop/views/components/drive.file.vue:
|
||||||
avatar: "Avatar"
|
avatar: "Avatar"
|
||||||
banner: "Banner"
|
banner: "Banner"
|
||||||
@@ -571,11 +581,8 @@ desktop/views/components/drive.folder.vue:
|
|||||||
rename: "Rename"
|
rename: "Rename"
|
||||||
rename-folder: "Rename folder"
|
rename-folder: "Rename folder"
|
||||||
input-new-folder-name: "Enter new name"
|
input-new-folder-name: "Enter new name"
|
||||||
desktop/views/components/drive.nav-folder.vue:
|
|
||||||
drive: "Media storage"
|
|
||||||
desktop/views/components/drive.vue:
|
desktop/views/components/drive.vue:
|
||||||
search: "Search"
|
search: "Search"
|
||||||
load-more: "Load more"
|
|
||||||
empty-draghover: "Drop it here! Yep, cuz you know I'm cute, right?"
|
empty-draghover: "Drop it here! Yep, cuz you know I'm cute, right?"
|
||||||
empty-drive: "Your media storage is empty"
|
empty-drive: "Your media storage is empty"
|
||||||
empty-drive-description: "Right-click to open the menu, or drag and drop a file onto here for uploading."
|
empty-drive-description: "Right-click to open the menu, or drag and drop a file onto here for uploading."
|
||||||
@@ -599,12 +606,6 @@ desktop/views/components/media-image.vue:
|
|||||||
desktop/views/components/media-video.vue:
|
desktop/views/components/media-video.vue:
|
||||||
sensitive: "The content is NSFW"
|
sensitive: "The content is NSFW"
|
||||||
click-to-show: "Click to show"
|
click-to-show: "Click to show"
|
||||||
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:
|
desktop/views/components/followers-window.vue:
|
||||||
followers: "{}'s followers"
|
followers: "{}'s followers"
|
||||||
desktop/views/components/followers.vue:
|
desktop/views/components/followers.vue:
|
||||||
@@ -633,27 +634,24 @@ desktop/views/components/messaging-room-window.vue:
|
|||||||
desktop/views/components/messaging-window.vue:
|
desktop/views/components/messaging-window.vue:
|
||||||
title: "Messaging"
|
title: "Messaging"
|
||||||
desktop/views/components/note-detail.vue:
|
desktop/views/components/note-detail.vue:
|
||||||
more: "Load more conversations"
|
|
||||||
private: "Post is private"
|
private: "Post is private"
|
||||||
deleted: "Post has been removed"
|
deleted: "Post has been removed"
|
||||||
reposted-by: "Reposted by {}"
|
reposted-by: "Reposted by {}"
|
||||||
location: "Location"
|
location: "Location"
|
||||||
renote: "Repost"
|
renote: "Repost"
|
||||||
add-reaction: "Add a reaction"
|
add-reaction: "Add a reaction"
|
||||||
desktop/views/components/notes.note.vue:
|
desktop/views/components/note.vue:
|
||||||
reposted-by: "Reposted by {}"
|
reposted-by: "Reposted by {}"
|
||||||
reply: "Reply"
|
reply: "Reply"
|
||||||
renote: "Repost"
|
renote: "Renote"
|
||||||
add-reaction: "Add a reaction"
|
add-reaction: "Add a reaction"
|
||||||
detail: "Show details"
|
detail: "Details"
|
||||||
private: "Post is private"
|
private: "This post is private"
|
||||||
deleted: "Post has been deleted"
|
deleted: "This post has been deleted"
|
||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "Loading failed."
|
error: "Loading failed."
|
||||||
retry: "Retry"
|
retry: "Retry"
|
||||||
load-more: "Read more"
|
|
||||||
desktop/views/components/notifications.vue:
|
desktop/views/components/notifications.vue:
|
||||||
more: "More"
|
|
||||||
empty: "No notifications!"
|
empty: "No notifications!"
|
||||||
desktop/views/components/post-form.vue:
|
desktop/views/components/post-form.vue:
|
||||||
add-visible-user: "+Add a user"
|
add-visible-user: "+Add a user"
|
||||||
@@ -700,14 +698,17 @@ desktop/views/components/renote-form.vue:
|
|||||||
failure: "Failed to Repost"
|
failure: "Failed to Repost"
|
||||||
desktop/views/components/renote-form-window.vue:
|
desktop/views/components/renote-form-window.vue:
|
||||||
title: "Do you want to Repost it?"
|
title: "Do you want to Repost it?"
|
||||||
|
desktop/views/pages/user-following-or-followers.vue:
|
||||||
|
following: "{user}'s following"
|
||||||
|
followers: "{user}'s follower"
|
||||||
desktop/views/components/settings-window.vue:
|
desktop/views/components/settings-window.vue:
|
||||||
settings: "Settings"
|
settings: "Settings"
|
||||||
desktop/views/components/settings.vue:
|
desktop/views/components/settings.vue:
|
||||||
profile: "Profile"
|
profile: "Profile"
|
||||||
notification: "Notification"
|
notification: "Notification"
|
||||||
apps: "Apps"
|
apps: "Apps"
|
||||||
mute: "Mute"
|
mute-and-block: "Mute / Block"
|
||||||
drive: "Drive"
|
blocking: "Blocking"
|
||||||
security: "Security"
|
security: "Security"
|
||||||
signin: "Sign in history"
|
signin: "Sign in history"
|
||||||
password: "Password"
|
password: "Password"
|
||||||
@@ -726,8 +727,12 @@ desktop/views/components/settings.vue:
|
|||||||
advanced: "Advanced settings"
|
advanced: "Advanced settings"
|
||||||
api-via-stream: "API request via stream"
|
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."
|
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"
|
display: "Design and display"
|
||||||
customize: "Customize home layout"
|
customize: "Customize home layout"
|
||||||
|
wallpaper: "Wallpaper"
|
||||||
choose-wallpaper: "Choose a background"
|
choose-wallpaper: "Choose a background"
|
||||||
delete-wallpaper: "Remove background"
|
delete-wallpaper: "Remove background"
|
||||||
dark-mode: "Dark Mode"
|
dark-mode: "Dark Mode"
|
||||||
@@ -739,17 +744,19 @@ desktop/views/components/settings.vue:
|
|||||||
suggest-recent-hashtags: "Show recent popular hashtags on the post form"
|
suggest-recent-hashtags: "Show recent popular hashtags on the post form"
|
||||||
show-clock-on-header: "Show clock on upper-right"
|
show-clock-on-header: "Show clock on upper-right"
|
||||||
show-reply-target: "Display reply target"
|
show-reply-target: "Display reply target"
|
||||||
|
timeline: "Timeline"
|
||||||
show-my-renotes: "Show my renotes in the 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-local-renotes: "Show renoted local posts in timelines"
|
||||||
show-maps: "Display a map to show the location"
|
show-maps: "Display a map to show the location"
|
||||||
|
deck-column-align: "Deck column alignment"
|
||||||
|
deck-column-align-center: "Center"
|
||||||
|
deck-column-align-left: "Left"
|
||||||
sound: "Sound"
|
sound: "Sound"
|
||||||
enable-sounds: "Enable sound"
|
enable-sounds: "Enable sound"
|
||||||
enable-sounds-desc: "Play a sound when you receive a post/message. This setting is stored in the browser."
|
enable-sounds-desc: "Play a sound when you receive a post/message. This setting is stored in the browser."
|
||||||
volume: "Volume"
|
volume: "Volume"
|
||||||
test: "Test"
|
test: "Test"
|
||||||
mobile: "Mobile"
|
|
||||||
disable-via-mobile: "Don't mark the post as 'from mobile'"
|
|
||||||
language: "Language"
|
language: "Language"
|
||||||
pick-language: "Select a language"
|
pick-language: "Select a language"
|
||||||
recommended: "Recommended"
|
recommended: "Recommended"
|
||||||
@@ -785,6 +792,10 @@ desktop/views/components/settings.vue:
|
|||||||
tools: "Tools"
|
tools: "Tools"
|
||||||
task-manager: "Task Manager"
|
task-manager: "Task Manager"
|
||||||
third-parties: "Third-parties"
|
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:
|
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."
|
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…"
|
detail: "Details…"
|
||||||
@@ -803,41 +814,44 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
success: "Settings saved!"
|
success: "Settings saved!"
|
||||||
failed: "Failed to setup. Please ensure that the token is correct."
|
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."
|
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."
|
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."
|
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."
|
regeneration-of-token: "If your token gets leaked, you can regenerate it."
|
||||||
regenerate-token: "Regenerate the token"
|
regenerate-token: "Regenerate the token"
|
||||||
token: "Token:"
|
token: "Token:"
|
||||||
enter-password: "Please enter the password"
|
enter-password: "Enter the password"
|
||||||
|
console:
|
||||||
|
title: 'API console'
|
||||||
|
endpoint: 'Endpoint'
|
||||||
|
parameter: 'Parameters'
|
||||||
|
credential-info: "Parameter \"i\" is not required at this console."
|
||||||
|
send: 'Send'
|
||||||
|
sending: 'Sending'
|
||||||
|
response: 'Result'
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "No linked applications"
|
no-apps: "No linked applications"
|
||||||
desktop/views/components/settings.drive.vue:
|
common/views/components/drive-settings.vue:
|
||||||
max: "Max"
|
max: "Max"
|
||||||
in-use: "In use"
|
in-use: "In use"
|
||||||
desktop/views/components/settings.mute.vue:
|
stats: "Statistics"
|
||||||
no-users: "No muted users"
|
common/views/components/mute-and-block.vue:
|
||||||
desktop/views/components/settings.password.vue:
|
mute-and-block: "Mute / Block"
|
||||||
|
mute: "Mute"
|
||||||
|
block: "Blocking"
|
||||||
|
no-muted-users: "No muted users"
|
||||||
|
no-blocked-users: "No blocked users"
|
||||||
|
word-mute: "Word mute"
|
||||||
|
muted-words: "Muted keywords"
|
||||||
|
muted-words-description: "Separating with spaces results in AND specifications, and delimiting with line breaks results in OR specifications"
|
||||||
|
save: "Save"
|
||||||
|
common/views/components/password-settings.vue:
|
||||||
reset: "Change password"
|
reset: "Change password"
|
||||||
enter-current-password: "Enter the current password"
|
enter-current-password: "Enter the current password"
|
||||||
enter-new-password: "Enter the new password"
|
enter-new-password: "Enter the new password"
|
||||||
enter-new-password-again: "Enter new password again"
|
enter-new-password-again: "Enter the new password again"
|
||||||
not-match: "The new passwords do not match"
|
not-match: "The new passwords do not match"
|
||||||
changed: "Password updated"
|
changed: "Password changed"
|
||||||
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: "Follow request needs approval"
|
|
||||||
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:
|
desktop/views/components/sub-note-content.vue:
|
||||||
private: "This post is private"
|
private: "This post is private"
|
||||||
deleted: "This post has been deleted"
|
deleted: "This post has been deleted"
|
||||||
@@ -862,7 +876,6 @@ desktop/views/components/ui.header.vue:
|
|||||||
adjective: "-san"
|
adjective: "-san"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "Your profile"
|
profile: "Your profile"
|
||||||
drive: "Media storage"
|
|
||||||
favorites: "Favorites"
|
favorites: "Favorites"
|
||||||
lists: "Lists"
|
lists: "Lists"
|
||||||
follow-requests: "Follow requests"
|
follow-requests: "Follow requests"
|
||||||
@@ -870,11 +883,10 @@ desktop/views/components/ui.header.account.vue:
|
|||||||
admin: "Admin"
|
admin: "Admin"
|
||||||
settings: "Settings"
|
settings: "Settings"
|
||||||
signout: "Sign out"
|
signout: "Sign out"
|
||||||
dark: "Submerge in dark"
|
dark: "Toggle dark mode"
|
||||||
desktop/views/components/ui.header.nav.vue:
|
desktop/views/components/ui.header.nav.vue:
|
||||||
home: "Home"
|
home: "Home"
|
||||||
deck: "Deck"
|
deck: "Deck"
|
||||||
messaging: "Messages"
|
|
||||||
game: "Games"
|
game: "Games"
|
||||||
desktop/views/components/ui.header.notifications.vue:
|
desktop/views/components/ui.header.notifications.vue:
|
||||||
title: "Notifications"
|
title: "Notifications"
|
||||||
@@ -897,54 +909,153 @@ desktop/views/components/user-preview.vue:
|
|||||||
desktop/views/components/users-list.vue:
|
desktop/views/components/users-list.vue:
|
||||||
all: "All"
|
all: "All"
|
||||||
iknow: "You know"
|
iknow: "You know"
|
||||||
load-more: "More"
|
|
||||||
fetching: "Loading…"
|
fetching: "Loading…"
|
||||||
desktop/views/components/users-list-item.vue:
|
desktop/views/components/users-list-item.vue:
|
||||||
followed: "Follows you"
|
followed: "Follows you"
|
||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "Pop-out"
|
popout: "Pop-out"
|
||||||
close: "Close"
|
close: "Close"
|
||||||
desktop/views/pages/admin/admin.vue:
|
admin/views/index.vue:
|
||||||
dashboard: "Dashboard"
|
dashboard: "Dashboard"
|
||||||
drive: "Drive"
|
instance: "Instance"
|
||||||
|
emoji: "Emoji"
|
||||||
|
moderators: "Moderator"
|
||||||
users: "Users"
|
users: "Users"
|
||||||
update: "Updates"
|
update: "Update"
|
||||||
desktop/views/pages/admin/admin.dashboard.vue:
|
announcements: "Announcements"
|
||||||
|
hashtags: "Hashtags"
|
||||||
|
back-to-misskey: "Back to Misskey"
|
||||||
|
admin/views/dashboard.vue:
|
||||||
dashboard: "Dashboard"
|
dashboard: "Dashboard"
|
||||||
all-users: "All Users"
|
accounts: "Accounts"
|
||||||
original-users: "Users on this instance"
|
notes: "Notes"
|
||||||
all-notes: "All the posts"
|
drive: "Drive"
|
||||||
original-notes: "Posts on this instance"
|
instances: "Instances"
|
||||||
|
this-instance: "This instance"
|
||||||
|
federated: "Federated"
|
||||||
|
admin/views/instance.vue:
|
||||||
|
instance: "Instance"
|
||||||
|
instance-name: "Instance name"
|
||||||
|
instance-description: "Instance description"
|
||||||
|
host: "Host"
|
||||||
|
banner-url: "Banner image URL"
|
||||||
|
languages: "Language of this instance"
|
||||||
|
languages-desc: "You can add more than one, separated by spaces."
|
||||||
|
maintainer-config: "Administrator information"
|
||||||
|
maintainer-name: "Administrator name"
|
||||||
|
maintainer-email: "Contact Administrator"
|
||||||
|
drive-config: "Drive settings"
|
||||||
|
cache-remote-files: "Cache remote files"
|
||||||
|
cache-remote-files-desc: "Without this parameter, all remote files are linked to their host server directly. This will be an effective solution to save your server storage, however make remote files invisible to users who set direct-link disabled, since no thumbnail will be generated, increase traffic. It is recommended that this parameter set enabled."
|
||||||
|
local-drive-capacity-mb: "Volume of Drive per user"
|
||||||
|
remote-drive-capacity-mb: "Volume of Drive per remote user"
|
||||||
|
mb: "In megabytes"
|
||||||
|
recaptcha-config: "the reCAPTCHA settings"
|
||||||
|
recaptcha-info: "reCAPTCHA token is required. Please get it on https://www.google.com/recaptcha/intro/"
|
||||||
|
enable-recaptcha: "enable reCAPTCHA"
|
||||||
|
recaptcha-site-key: "reCAPTCHA site key"
|
||||||
|
recaptcha-secret-key: "reCAPTCHA secret key"
|
||||||
|
twitter-integration-config: "Settings of connecting to Twitter"
|
||||||
|
twitter-integration-info: "The callback URL is set on /api/tw/cb."
|
||||||
|
enable-twitter-integration: "Enable connection to Twitter"
|
||||||
|
twitter-integration-consumer-key: "Consumer key"
|
||||||
|
twitter-integration-consumer-secret: "Consumer Secret"
|
||||||
|
github-integration-config: "Setting of connecting to GitHub"
|
||||||
|
github-integration-info: "The callback URL is set on /api/gh/cb."
|
||||||
|
enable-github-integration: "Enable connection to GitHub"
|
||||||
|
github-integration-client-id: "Client ID"
|
||||||
|
github-integration-client-secret: "Client Secret"
|
||||||
|
discord-integration-config: "Setting of Discord Integration"
|
||||||
|
discord-integration-info: "The callback URL is set on /api/dc/cb."
|
||||||
|
enable-discord-integration: "Enable Discord connection"
|
||||||
|
discord-integration-client-id: "Client ID"
|
||||||
|
discord-integration-client-secret: "Client Secret"
|
||||||
|
proxy-account-config: "Proxy account"
|
||||||
|
proxy-account-info: "Proxy account can follow a remote user to deliver activities if no one in this instance follow him or her. When you add a remote user who is followed by nobody in this instance to your list, in order to get his or her data, proxy account follow him or her instead of your following."
|
||||||
|
proxy-account-username: "Proxy account user name"
|
||||||
|
proxy-account-username-desc: "Specify the user name of the account that is used as a proxy."
|
||||||
|
proxy-account-warn: "You must make an account having this username before this action."
|
||||||
|
max-note-text-length: "Maximum numbers of post characters"
|
||||||
|
disable-registration: "Stop user registration"
|
||||||
|
disable-local-timeline: "Make Local Timeline disabled"
|
||||||
invite: "Invite"
|
invite: "Invite"
|
||||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
save: "Save"
|
||||||
|
saved: "Saved"
|
||||||
|
admin/views/charts.vue:
|
||||||
|
title: "Chart"
|
||||||
|
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"
|
||||||
|
admin/views/users.vue:
|
||||||
suspend-user: "Suspend a user"
|
suspend-user: "Suspend a user"
|
||||||
suspend: "Suspend"
|
suspend: "Suspend"
|
||||||
suspended: "Successfully suspended."
|
suspended: "Successfully suspended."
|
||||||
desktop/views/pages/admin/admin.unsuspend-user.vue:
|
|
||||||
unsuspend-user: "Unsuspend users"
|
unsuspend-user: "Unsuspend users"
|
||||||
unsuspend: "Unsuspend"
|
unsuspend: "Unsuspend"
|
||||||
unsuspended: "The user has successfully unsuspended."
|
unsuspended: "The user has successfully unsuspended."
|
||||||
desktop/views/pages/admin/admin.verify-user.vue:
|
|
||||||
verify-user: "User account verification settings"
|
verify-user: "User account verification settings"
|
||||||
verify: "Verify account"
|
verify: "Verify account"
|
||||||
verified: "The account is now being verified"
|
verified: "The account is now being verified"
|
||||||
desktop/views/pages/admin/admin.unverify-user.vue:
|
|
||||||
unverify-user: "User account unverification settings"
|
unverify-user: "User account unverification settings"
|
||||||
unverify: "Unverify account"
|
unverify: "Unverify account"
|
||||||
unverified: "The account is now being unverified"
|
unverified: "The account is now being unverified"
|
||||||
desktop/views/pages/deck/deck.tl-column.vue:
|
admin/views/moderators.vue:
|
||||||
is-media-only: "Only media posts"
|
add-moderator:
|
||||||
is-media-view: "Media view"
|
title: "Register Moderator"
|
||||||
edit: "Options"
|
add: "Register"
|
||||||
desktop/views/pages/deck/deck.note.vue:
|
added: "Registered a Moderator."
|
||||||
reposted-by: "Reposted by {}"
|
admin/views/emoji.vue:
|
||||||
private: "This post is private"
|
add-emoji:
|
||||||
deleted: "This post has been deleted"
|
title: "Add emoji"
|
||||||
desktop/views/pages/stats/stats.vue:
|
name: "Emoji name"
|
||||||
all-users: "All Users"
|
name-desc: "You can use the characters a~z 0~9 _"
|
||||||
original-users: "Users on this instance"
|
aliases: "Aliases"
|
||||||
all-notes: "All the posts"
|
aliases-desc: "You can add more than one, separated by spaces."
|
||||||
original-notes: "Posts on this instance"
|
url: "Image URL"
|
||||||
|
add: "Add"
|
||||||
|
info: "We recommend PNG images under 50KB."
|
||||||
|
added: "Emoji was added"
|
||||||
|
emojis:
|
||||||
|
title: "Emojis"
|
||||||
|
update: "Update"
|
||||||
|
remove: "Remove"
|
||||||
|
updated: "Updated"
|
||||||
|
remove-emoji:
|
||||||
|
are-you-sure: "Delete \"%1$s\"?"
|
||||||
|
removed: "Deleted"
|
||||||
|
admin/views/announcements.vue:
|
||||||
|
announcements: "Announcements"
|
||||||
|
save: "Save"
|
||||||
|
remove: "Remove"
|
||||||
|
add: "Add"
|
||||||
|
title: "Title"
|
||||||
|
text: "Content"
|
||||||
|
saved: "Saved"
|
||||||
|
_remove:
|
||||||
|
are-you-sure: "Delete \"%1$s\"?"
|
||||||
|
removed: "Deleted"
|
||||||
|
admin/views/hashtags.vue:
|
||||||
|
hided-tags: "Hidden Tags"
|
||||||
desktop/views/pages/welcome.vue:
|
desktop/views/pages/welcome.vue:
|
||||||
about: "More details..."
|
about: "More details..."
|
||||||
gotit: "Got it!"
|
gotit: "Got it!"
|
||||||
@@ -954,13 +1065,11 @@ desktop/views/pages/welcome.vue:
|
|||||||
signup-button: "Sign up"
|
signup-button: "Sign up"
|
||||||
timeline: "Timeline"
|
timeline: "Timeline"
|
||||||
announcements: "Announcements"
|
announcements: "Announcements"
|
||||||
photos: "Recent uploaded"
|
photos: "Recent Images"
|
||||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||||
info: "Information"
|
info: "Information"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey storage"
|
title: "Misskey storage"
|
||||||
desktop/views/pages/favorites.vue:
|
|
||||||
more: "Load more"
|
|
||||||
desktop/views/pages/home-customize.vue:
|
desktop/views/pages/home-customize.vue:
|
||||||
title: "Customize home layout"
|
title: "Customize home layout"
|
||||||
desktop/views/pages/note.vue:
|
desktop/views/pages/note.vue:
|
||||||
@@ -973,11 +1082,11 @@ desktop/views/pages/selectdrive.vue:
|
|||||||
upload: "Upload files from your device"
|
upload: "Upload files from your device"
|
||||||
desktop/views/pages/search.vue:
|
desktop/views/pages/search.vue:
|
||||||
not-available: "Search feature is turned off in the settings for this instance."
|
not-available: "Search feature is turned off in the settings for this instance."
|
||||||
not-found: "No posts were found for '{}'"
|
not-found: "No posts were found for '{q}'"
|
||||||
desktop/views/pages/share.vue:
|
desktop/views/pages/share.vue:
|
||||||
share-with: "Share with {}."
|
share-with: "Share on {name}"
|
||||||
desktop/views/pages/tag.vue:
|
desktop/views/pages/tag.vue:
|
||||||
no-posts-found: "No posts contains \"{}\" found."
|
no-posts-found: "No posts contains \"{q}\" found."
|
||||||
desktop/views/pages/user-list.users.vue:
|
desktop/views/pages/user-list.users.vue:
|
||||||
users: "User"
|
users: "User"
|
||||||
add-user: "Add a user"
|
add-user: "Add a user"
|
||||||
@@ -990,12 +1099,6 @@ desktop/views/pages/user/user.friends.vue:
|
|||||||
title: "Frequent mentions"
|
title: "Frequent mentions"
|
||||||
loading: "Loading"
|
loading: "Loading"
|
||||||
no-users: "No frequent mentions"
|
no-users: "No frequent mentions"
|
||||||
desktop/views/pages/user/user.vue:
|
|
||||||
is-suspended: "This account has been suspended."
|
|
||||||
is-remote: "This profile belongs to a remote user. The profile that you see here may not be complete. "
|
|
||||||
view-remote: "See their complete profile"
|
|
||||||
desktop/views/pages/user/user.home.vue:
|
|
||||||
last-used-at: "Last active:"
|
|
||||||
desktop/views/pages/user/user.photos.vue:
|
desktop/views/pages/user/user.photos.vue:
|
||||||
title: "Photos"
|
title: "Photos"
|
||||||
loading: "Loading"
|
loading: "Loading"
|
||||||
@@ -1008,6 +1111,9 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "Mute"
|
mute: "Mute"
|
||||||
muted: "Muting"
|
muted: "Muting"
|
||||||
unmute: "Unmute"
|
unmute: "Unmute"
|
||||||
|
block: "Block"
|
||||||
|
unblock: "Unblock"
|
||||||
|
block-confirm: "Are you sure block this user?"
|
||||||
push-to-a-list: "Add to list"
|
push-to-a-list: "Add to list"
|
||||||
list-pushed: "Successfully added {user} to {list}."
|
list-pushed: "Successfully added {user} to {list}."
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.header.vue:
|
||||||
@@ -1015,6 +1121,10 @@ desktop/views/pages/user/user.header.vue:
|
|||||||
following: "Following"
|
following: "Following"
|
||||||
followers: "Followers"
|
followers: "Followers"
|
||||||
is-bot: "This account is a Bot"
|
is-bot: "This account is a Bot"
|
||||||
|
years-old: "{age} years old"
|
||||||
|
year: "/"
|
||||||
|
month: "/"
|
||||||
|
day: "-"
|
||||||
desktop/views/pages/user/user.timeline.vue:
|
desktop/views/pages/user/user.timeline.vue:
|
||||||
default: "Posts"
|
default: "Posts"
|
||||||
with-replies: "Posts and replies"
|
with-replies: "Posts and replies"
|
||||||
@@ -1044,12 +1154,10 @@ desktop/views/widgets/users.vue:
|
|||||||
refresh: "refresh"
|
refresh: "refresh"
|
||||||
no-one: "Anyone!"
|
no-one: "Anyone!"
|
||||||
mobile/views/components/drive.vue:
|
mobile/views/components/drive.vue:
|
||||||
drive: "Media storage"
|
|
||||||
used: "used"
|
used: "used"
|
||||||
folder-count: "Folder(s)"
|
folder-count: "Folder(s)"
|
||||||
count-separator: ", "
|
count-separator: ", "
|
||||||
file-count: "File(s)"
|
file-count: "File(s)"
|
||||||
load-more: "Load more"
|
|
||||||
nothing-in-drive: "There's nothing stored."
|
nothing-in-drive: "There's nothing stored."
|
||||||
folder-is-empty: "This folder is empty"
|
folder-is-empty: "This folder is empty"
|
||||||
prompt: "What do you want to do? (Please enter a number): <1 → Upload a file | 2 → Upload a file from a URL | 3 → Create a folder | 4 → Change this folder's name | 5 → Move this folder | 6 → Delete this folder>"
|
prompt: "What do you want to do? (Please enter a number): <1 → Upload a file | 2 → Upload a file from a URL | 3 → Create a folder | 4 → Change this folder's name | 5 → Move this folder | 6 → Delete this folder>"
|
||||||
@@ -1059,8 +1167,6 @@ mobile/views/components/drive.vue:
|
|||||||
root-move-alert: "You're in the root; it can't be moved because it's not a folder. Navigate to a folder you want to move and try again."
|
root-move-alert: "You're in the root; it can't be moved because it's not a folder. Navigate to a folder you want to move and try again."
|
||||||
url-prompt: "URL of the file you want to upload"
|
url-prompt: "URL of the file you want to upload"
|
||||||
uploading: "Upload requested. It may take a while for the upload to finish."
|
uploading: "Upload requested. It may take a while for the upload to finish."
|
||||||
mobile/views/components/drive-file-detail.vue:
|
|
||||||
rename: "Rename"
|
|
||||||
mobile/views/components/drive-file-chooser.vue:
|
mobile/views/components/drive-file-chooser.vue:
|
||||||
select-file: "Choose files"
|
select-file: "Choose files"
|
||||||
mobile/views/components/drive-folder-chooser.vue:
|
mobile/views/components/drive-folder-chooser.vue:
|
||||||
@@ -1074,17 +1180,19 @@ mobile/views/components/drive.file-detail.vue:
|
|||||||
hash: "Hash (md5)"
|
hash: "Hash (md5)"
|
||||||
exif: "EXIF"
|
exif: "EXIF"
|
||||||
nsfw: "NSFW"
|
nsfw: "NSFW"
|
||||||
|
mark-as-sensitive: "Mark as 'sensitive'"
|
||||||
|
unmark-as-sensitive: "Unmark as 'sensitive'"
|
||||||
mobile/views/components/media-image.vue:
|
mobile/views/components/media-image.vue:
|
||||||
sensitive: "NSFW"
|
sensitive: "NSFW"
|
||||||
click-to-show: "Click to show"
|
click-to-show: "Click to show"
|
||||||
mobile/views/components/media-video.vue:
|
mobile/views/components/media-video.vue:
|
||||||
sensitive: "The content is NSFW"
|
sensitive: "The content is NSFW"
|
||||||
click-to-show: "Click to show"
|
click-to-show: "Click to show"
|
||||||
mobile/views/components/follow-button.vue:
|
common/views/components/follow-button.vue:
|
||||||
following: "Following"
|
following: "Following"
|
||||||
follow: "Follow"
|
follow: "Follow"
|
||||||
request-pending: "Pending follow request"
|
request-pending: "Pending"
|
||||||
follow-processing: "Processing follow"
|
follow-processing: "Processing"
|
||||||
follow-request: "Follow request"
|
follow-request: "Follow request"
|
||||||
mobile/views/components/friends-maker.vue:
|
mobile/views/components/friends-maker.vue:
|
||||||
title: "Let's follow them"
|
title: "Let's follow them"
|
||||||
@@ -1112,11 +1220,7 @@ mobile/views/components/note-sub.vue:
|
|||||||
admin: "admin"
|
admin: "admin"
|
||||||
bot: "bot"
|
bot: "bot"
|
||||||
cat: "cat"
|
cat: "cat"
|
||||||
mobile/views/components/notes.vue:
|
|
||||||
failed: "Failed to load"
|
|
||||||
retry: "Retry"
|
|
||||||
mobile/views/components/notifications.vue:
|
mobile/views/components/notifications.vue:
|
||||||
more: "See more"
|
|
||||||
empty: "No notifications"
|
empty: "No notifications"
|
||||||
mobile/views/components/post-form.vue:
|
mobile/views/components/post-form.vue:
|
||||||
add-visible-user: "Add a user"
|
add-visible-user: "Add a user"
|
||||||
@@ -1136,17 +1240,14 @@ mobile/views/components/sub-note-content.vue:
|
|||||||
poll: "Poll"
|
poll: "Poll"
|
||||||
mobile/views/components/timeline.vue:
|
mobile/views/components/timeline.vue:
|
||||||
empty: "No notes"
|
empty: "No notes"
|
||||||
load-more: "More"
|
|
||||||
mobile/views/components/ui.header.vue:
|
mobile/views/components/ui.header.vue:
|
||||||
welcome-back: "Welcome back, "
|
welcome-back: "Welcome back, "
|
||||||
adjective: "Sir"
|
adjective: "Sir"
|
||||||
mobile/views/components/ui.nav.vue:
|
mobile/views/components/ui.nav.vue:
|
||||||
timeline: "Timeline"
|
timeline: "Timeline"
|
||||||
notifications: "Notifications"
|
notifications: "Notifications"
|
||||||
messaging: "Messages"
|
|
||||||
follow-requests: "Follow requests"
|
follow-requests: "Follow requests"
|
||||||
search: "Search"
|
search: "Search"
|
||||||
drive: "Drive"
|
|
||||||
favorites: "Favorites"
|
favorites: "Favorites"
|
||||||
user-lists: "Lists"
|
user-lists: "Lists"
|
||||||
widgets: "Widgets"
|
widgets: "Widgets"
|
||||||
@@ -1157,26 +1258,21 @@ mobile/views/components/ui.nav.vue:
|
|||||||
about: "About Misskey"
|
about: "About Misskey"
|
||||||
mobile/views/components/user-timeline.vue:
|
mobile/views/components/user-timeline.vue:
|
||||||
no-notes: "It seems this user hasn't posted anything yet."
|
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:
|
mobile/views/components/users-list.vue:
|
||||||
all: "All"
|
all: "All"
|
||||||
known: "You know"
|
known: "In common"
|
||||||
load-more: "More"
|
|
||||||
mobile/views/pages/favorites.vue:
|
mobile/views/pages/favorites.vue:
|
||||||
title: "Favorites"
|
title: "Favorites"
|
||||||
mobile/views/pages/user-lists.vue:
|
mobile/views/pages/user-lists.vue:
|
||||||
title: "Lists"
|
title: "Lists"
|
||||||
enter-list-name: "Enter a name of the list to make"
|
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:
|
mobile/views/pages/signup.vue:
|
||||||
lets-start: "Your account is now ready! 📦"
|
lets-start: "Your account is now ready! 📦"
|
||||||
mobile/views/pages/followers.vue:
|
mobile/views/pages/followers.vue:
|
||||||
followers-of: "Followers of {}"
|
followers-of: "{name}'s followers"
|
||||||
mobile/views/pages/following.vue:
|
mobile/views/pages/following.vue:
|
||||||
following-of: "Following of {}"
|
following-of: "{name}'s following"
|
||||||
mobile/views/pages/home.vue:
|
mobile/views/pages/home.vue:
|
||||||
home: "Home"
|
home: "Home"
|
||||||
local: "Local"
|
local: "Local"
|
||||||
@@ -1185,7 +1281,7 @@ mobile/views/pages/home.vue:
|
|||||||
mentions: "Mentions"
|
mentions: "Mentions"
|
||||||
messages: "Messages"
|
messages: "Messages"
|
||||||
mobile/views/pages/tag.vue:
|
mobile/views/pages/tag.vue:
|
||||||
no-posts-found: "No posts \"{}\" found."
|
no-posts-found: "No posts contains \"{q}\" found."
|
||||||
mobile/views/pages/welcome.vue:
|
mobile/views/pages/welcome.vue:
|
||||||
signup: "Sign up"
|
signup: "Sign up"
|
||||||
mobile/views/pages/widgets.vue:
|
mobile/views/pages/widgets.vue:
|
||||||
@@ -1196,11 +1292,7 @@ mobile/views/pages/widgets.vue:
|
|||||||
mobile/views/pages/widgets/activity.vue:
|
mobile/views/pages/widgets/activity.vue:
|
||||||
activity: "Activity"
|
activity: "Activity"
|
||||||
mobile/views/pages/share.vue:
|
mobile/views/pages/share.vue:
|
||||||
share-with: "Share with {}."
|
share-with: "Share on {name}"
|
||||||
mobile/views/pages/messaging.vue:
|
|
||||||
messaging: "Messaging"
|
|
||||||
mobile/views/pages/messaging-room.vue:
|
|
||||||
messaging: "Messaging"
|
|
||||||
mobile/views/pages/received-follow-requests.vue:
|
mobile/views/pages/received-follow-requests.vue:
|
||||||
title: "Follow requests"
|
title: "Follow requests"
|
||||||
accept: "Accept"
|
accept: "Accept"
|
||||||
@@ -1214,27 +1306,9 @@ mobile/views/pages/notifications.vue:
|
|||||||
read-all: "Do you wish to mark all notifications as read?"
|
read-all: "Do you wish to mark all notifications as read?"
|
||||||
mobile/views/pages/games/reversi.vue:
|
mobile/views/pages/games/reversi.vue:
|
||||||
reversi: "Reversi"
|
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"
|
|
||||||
is-locked: "Follow request needs approval"
|
|
||||||
advanced: "Advanced"
|
|
||||||
privacy: "Privacy"
|
|
||||||
save: "Update profile"
|
|
||||||
saved: "Profile updated"
|
|
||||||
uploading: "Uploading"
|
|
||||||
upload-failed: "Failed to upload"
|
|
||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
search: "Search"
|
search: "Search"
|
||||||
empty: "No posts were found for '{}'"
|
not-found: "No posts were found for '{q}'"
|
||||||
not-found: "No posts were found for \"{}\"."
|
|
||||||
mobile/views/pages/selectdrive.vue:
|
mobile/views/pages/selectdrive.vue:
|
||||||
select-file: "Choose files"
|
select-file: "Choose files"
|
||||||
mobile/views/pages/settings.vue:
|
mobile/views/pages/settings.vue:
|
||||||
@@ -1252,7 +1326,7 @@ mobile/views/pages/settings.vue:
|
|||||||
timeline: "Timeline"
|
timeline: "Timeline"
|
||||||
show-reply-target: "Show reply target"
|
show-reply-target: "Show reply target"
|
||||||
show-my-renotes: "Show my reposts"
|
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"
|
show-local-renotes: "Show renoted local posts"
|
||||||
post-style: "Post design"
|
post-style: "Post design"
|
||||||
post-style-standard: "Standard"
|
post-style-standard: "Standard"
|
||||||
@@ -1273,6 +1347,14 @@ mobile/views/pages/settings.vue:
|
|||||||
twitter-connect: "Connect to your Twitter account"
|
twitter-connect: "Connect to your Twitter account"
|
||||||
twitter-reconnect: "Reconnect"
|
twitter-reconnect: "Reconnect"
|
||||||
twitter-disconnect: "Disconnect"
|
twitter-disconnect: "Disconnect"
|
||||||
|
github: "GitHub Integration"
|
||||||
|
github-connect: "Connect to your GitHub account"
|
||||||
|
github-reconnect: "Reconnect"
|
||||||
|
github-disconnect: "Disconnect"
|
||||||
|
discord: "Discord Integration"
|
||||||
|
discord-connect: "Connect to your Discord account"
|
||||||
|
discord-reconnect: "Reconnect"
|
||||||
|
discord-disconnect: "Disconnect"
|
||||||
update: "Misskey Update"
|
update: "Misskey Update"
|
||||||
version: "Current version:"
|
version: "Current version:"
|
||||||
latest-version: "Latest version:"
|
latest-version: "Latest version:"
|
||||||
@@ -1286,6 +1368,8 @@ mobile/views/pages/settings.vue:
|
|||||||
signout: "Sign out"
|
signout: "Sign out"
|
||||||
sound: "Sounds"
|
sound: "Sounds"
|
||||||
enable-sounds: "Enable sounds"
|
enable-sounds: "Enable sounds"
|
||||||
|
mark-as-read-all-unread-notes: "Mark all posts as read"
|
||||||
|
password: "Password"
|
||||||
mobile/views/pages/user.vue:
|
mobile/views/pages/user.vue:
|
||||||
follows-you: "Follows you"
|
follows-you: "Follows you"
|
||||||
following: "Following"
|
following: "Following"
|
||||||
@@ -1295,8 +1379,11 @@ mobile/views/pages/user.vue:
|
|||||||
timeline: "Timeline"
|
timeline: "Timeline"
|
||||||
media: "Media"
|
media: "Media"
|
||||||
is-suspended: "This account has been suspended."
|
is-suspended: "This account has been suspended."
|
||||||
is-remote: "The user is a remote user. The profile that you see here may not complete."
|
mute: "Mute"
|
||||||
view-remote: "See his/her complete profile"
|
unmute: "Unmute"
|
||||||
|
block: "Block"
|
||||||
|
unblock: "Unblock"
|
||||||
|
years-old: "{age} years old"
|
||||||
mobile/views/pages/user/home.vue:
|
mobile/views/pages/user/home.vue:
|
||||||
recent-notes: "Recent notes"
|
recent-notes: "Recent notes"
|
||||||
images: "Images"
|
images: "Images"
|
||||||
@@ -1307,17 +1394,46 @@ mobile/views/pages/user/home.vue:
|
|||||||
followers-you-know: "Followers you know"
|
followers-you-know: "Followers you know"
|
||||||
last-used-at: "Last active:"
|
last-used-at: "Last active:"
|
||||||
mobile/views/pages/user/home.followers-you-know.vue:
|
mobile/views/pages/user/home.followers-you-know.vue:
|
||||||
loading: "Loading"
|
|
||||||
no-users: "No users you know"
|
no-users: "No users you know"
|
||||||
mobile/views/pages/user/home.friends.vue:
|
mobile/views/pages/user/home.friends.vue:
|
||||||
loading: "Loading"
|
|
||||||
no-users: "There are no users that you know"
|
no-users: "There are no users that you know"
|
||||||
mobile/views/pages/user/home.notes.vue:
|
mobile/views/pages/user/home.notes.vue:
|
||||||
loading: "Loading"
|
|
||||||
no-notes: "No notes"
|
no-notes: "No notes"
|
||||||
mobile/views/pages/user/home.photos.vue:
|
mobile/views/pages/user/home.photos.vue:
|
||||||
loading: "Loading"
|
|
||||||
no-photos: "No photos"
|
no-photos: "No photos"
|
||||||
|
deck:
|
||||||
|
widgets: "Widgets"
|
||||||
|
home: "Home"
|
||||||
|
local: "Local"
|
||||||
|
hybrid: "Social"
|
||||||
|
hashtag: "Hashtag"
|
||||||
|
global: "Global"
|
||||||
|
mentions: "Mentions"
|
||||||
|
direct: "Direct posts"
|
||||||
|
notifications: "Notifications"
|
||||||
|
list: "List"
|
||||||
|
swap-left: "Move left"
|
||||||
|
swap-right: "Move right"
|
||||||
|
swap-up: "Move up"
|
||||||
|
swap-down: "Move down"
|
||||||
|
remove: "Remove"
|
||||||
|
add-column: "Add a column"
|
||||||
|
rename: "Rename"
|
||||||
|
stack-left: "Stack to the left"
|
||||||
|
pop-right: "Dock on the right"
|
||||||
|
deck/deck.tl-column.vue:
|
||||||
|
is-media-only: "Only media posts"
|
||||||
|
is-media-view: "Media view"
|
||||||
|
edit: "Option"
|
||||||
|
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"
|
||||||
docs:
|
docs:
|
||||||
edit-this-page-on-github: "Found a mistake or want to contribute for the documentation?"
|
edit-this-page-on-github: "Found a mistake or want to contribute for the documentation?"
|
||||||
edit-this-page-on-github-link: "Edit this page at GitHub!"
|
edit-this-page-on-github-link: "Edit this page at GitHub!"
|
||||||
@@ -1342,3 +1458,29 @@ docs:
|
|||||||
description: "Description"
|
description: "Description"
|
||||||
dev/views/index.vue:
|
dev/views/index.vue:
|
||||||
manage-apps: "Manage apps"
|
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."
|
||||||
|
|||||||
@@ -25,13 +25,11 @@ common:
|
|||||||
application-authorization: "Autorizaciones de la aplicación."
|
application-authorization: "Autorizaciones de la aplicación."
|
||||||
close: "Cerrar"
|
close: "Cerrar"
|
||||||
do-not-copy-paste: "Por favor no copies código aquí. Tu cuenta puede resultar comprometida."
|
do-not-copy-paste: "Por favor no copies código aquí. Tu cuenta puede resultar comprometida."
|
||||||
|
load-more: "もっと読み込む"
|
||||||
got-it: "¡Listo!"
|
got-it: "¡Listo!"
|
||||||
customization-tips:
|
customization-tips:
|
||||||
title: "Consejos de personalización"
|
title: "Consejos de personalización"
|
||||||
paragraph1: "Customización de inicio le permite agregar, borrar, o reorganizar los accesorios."
|
paragraph: "<p>ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。</p><p>一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。</p><p>ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。</p><p>カスタマイズを終了するには、右上の「完了」をクリックします。</p>"
|
||||||
paragraph2: "Puede cambiar la visualización de algunos accesorios haciendo <strong> click derecho.</strong>"
|
|
||||||
paragraph3: "Para borrar un widget, <strong> desplace el accesorio hasta el área etiquetada \"Papelera\"</strong> en el encabezado."
|
|
||||||
paragraph4: "Para finalizar la personalización, cliquee \"Finalizar\" en la parte de arriba a la derecha."
|
|
||||||
gotit: "¡Comprendido!"
|
gotit: "¡Comprendido!"
|
||||||
notification:
|
notification:
|
||||||
file-uploaded: "Archivo cargado."
|
file-uploaded: "Archivo cargado."
|
||||||
@@ -54,6 +52,8 @@ common:
|
|||||||
years_ago: "Hace {} año(s)"
|
years_ago: "Hace {} año(s)"
|
||||||
month-and-day: "{day} de {month}"
|
month-and-day: "{day} de {month}"
|
||||||
trash: "Papelera"
|
trash: "Papelera"
|
||||||
|
drive: "ドライブ"
|
||||||
|
messaging: "トーク"
|
||||||
weekday-short:
|
weekday-short:
|
||||||
sunday: "domingo"
|
sunday: "domingo"
|
||||||
monday: "lunes"
|
monday: "lunes"
|
||||||
@@ -112,20 +112,28 @@ common:
|
|||||||
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
||||||
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
||||||
show-full-acct: "ユーザー名のホストを省略しない"
|
show-full-acct: "ユーザー名のホストを省略しない"
|
||||||
|
show-via: "viaを表示する"
|
||||||
reduce-motion: "UIの動きを減らす"
|
reduce-motion: "UIの動きを減らす"
|
||||||
this-setting-is-this-device-only: "このデバイスのみ"
|
this-setting-is-this-device-only: "このデバイスのみ"
|
||||||
|
use-os-default-emojis: "OS標準の絵文字を使用"
|
||||||
do-not-use-in-production: 'Esto está en desarrollo, no usarlo para producción.'
|
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:
|
reversi:
|
||||||
drawn: "Empatado"
|
drawn: "Empatado"
|
||||||
my-turn: "Mi turno"
|
my-turn: "Mi turno"
|
||||||
opponent-turn: "Turno del oponente"
|
opponent-turn: "Turno del oponente"
|
||||||
turn-of: "Es turno de {}"
|
turn-of: "{name}のターンです"
|
||||||
past-turn-of: "Turno de {}"
|
past-turn-of: "{name}のターン"
|
||||||
won: "{} ha ganado"
|
won: "{name}の勝ち"
|
||||||
black: "Negro"
|
black: "Negro"
|
||||||
white: "Blanco"
|
white: "Blanco"
|
||||||
total: "Total"
|
total: "Total"
|
||||||
this-turn: "Turno de {}"
|
this-turn: "{count}ターン目"
|
||||||
widgets:
|
widgets:
|
||||||
analog-clock: "Reloj analógico"
|
analog-clock: "Reloj analógico"
|
||||||
profile: "Perfil"
|
profile: "Perfil"
|
||||||
@@ -144,34 +152,15 @@ common:
|
|||||||
users: "Usuarios destacados"
|
users: "Usuarios destacados"
|
||||||
polls: "Encuestas"
|
polls: "Encuestas"
|
||||||
post-form: "Formulario"
|
post-form: "Formulario"
|
||||||
messaging: "Mensajes"
|
|
||||||
server: "Información del servidor"
|
server: "Información del servidor"
|
||||||
donation: "Donaciones"
|
donation: "Donaciones"
|
||||||
nav: "Navegación"
|
nav: "Navegación"
|
||||||
tips: "Consejos"
|
tips: "Consejos"
|
||||||
hashtags: "Etiquetas"
|
hashtags: "Etiquetas"
|
||||||
deck:
|
dev: "アプリの作成に失敗しました。再度お試しください。"
|
||||||
widgets: "Accesorios"
|
ai-chan-kawaii: "藍ちゃかわいい"
|
||||||
home: "Inicio"
|
|
||||||
local: "Local"
|
|
||||||
hybrid: "Social"
|
|
||||||
hashtag: "ハッシュタグ"
|
|
||||||
global: "Global"
|
|
||||||
mentions: "あなた宛て"
|
|
||||||
direct: "ダイレクト投稿"
|
|
||||||
notifications: "Notificaciones"
|
|
||||||
list: "Listado"
|
|
||||||
swap-left: "Desplazar a la izq."
|
|
||||||
swap-right: "Desplazar a la dcha."
|
|
||||||
swap-up: "Desplazar arriba"
|
|
||||||
swap-down: "Desplazar abajo"
|
|
||||||
remove: "Borrar"
|
|
||||||
add-column: "Añadir columna"
|
|
||||||
rename: "Renombrar"
|
|
||||||
stack-left: "A la izqda."
|
|
||||||
pop-right: "A la dcha."
|
|
||||||
auth/views/form.vue:
|
auth/views/form.vue:
|
||||||
share-access: "¿Deseas <b>permitir</b> a <i>{{ app.name }}</i> acceder a tu cuenta?"
|
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
|
||||||
permission-ask: "La aplicación requiere los siguientes permisos:"
|
permission-ask: "La aplicación requiere los siguientes permisos:"
|
||||||
account-read: "Viendo información de la cuenta:"
|
account-read: "Viendo información de la cuenta:"
|
||||||
account-write: "Modificar información de la cuenta:"
|
account-write: "Modificar información de la cuenta:"
|
||||||
@@ -308,7 +297,6 @@ common/views/components/messaging.vue:
|
|||||||
no-history: "Sin historial"
|
no-history: "Sin historial"
|
||||||
common/views/components/messaging-room.vue:
|
common/views/components/messaging-room.vue:
|
||||||
empty: "Sin conversaciones"
|
empty: "Sin conversaciones"
|
||||||
more: "Leer más"
|
|
||||||
no-history: "El historial se ha acabado"
|
no-history: "El historial se ha acabado"
|
||||||
resize-form: "Arrastra para redimensionar"
|
resize-form: "Arrastra para redimensionar"
|
||||||
new-message: "Nuevo mensaje"
|
new-message: "Nuevo mensaje"
|
||||||
@@ -356,6 +344,16 @@ common/views/components/poll-editor.vue:
|
|||||||
destroy: "Cancelar la encuesta"
|
destroy: "Cancelar la encuesta"
|
||||||
common/views/components/reaction-picker.vue:
|
common/views/components/reaction-picker.vue:
|
||||||
choose-reaction: "Escoge una reacción"
|
choose-reaction: "Escoge una reacción"
|
||||||
|
common/views/components/emoji-picker.vue:
|
||||||
|
custom-emoji: "カスタム絵文字"
|
||||||
|
people: "人"
|
||||||
|
animals-and-nature: "動物&自然"
|
||||||
|
food-and-drink: "食べ物&飲み物"
|
||||||
|
activity: "アクティビティ"
|
||||||
|
travel-and-places: "場所"
|
||||||
|
objects: "物"
|
||||||
|
symbols: "記号"
|
||||||
|
flags: "旗"
|
||||||
common/views/components/signin.vue:
|
common/views/components/signin.vue:
|
||||||
username: "Usuario"
|
username: "Usuario"
|
||||||
password: "Contraseña"
|
password: "Contraseña"
|
||||||
@@ -364,6 +362,8 @@ common/views/components/signin.vue:
|
|||||||
signin: "Entra"
|
signin: "Entra"
|
||||||
or: "O"
|
or: "O"
|
||||||
signin-with-twitter: "Ingresar con Twitter"
|
signin-with-twitter: "Ingresar con Twitter"
|
||||||
|
signin-with-github: "GitHubでログイン"
|
||||||
|
signin-with-discord: "Discordでログイン"
|
||||||
login-failed: "Autenticación fallida. Asegúrate de haber usado el nombre de usuario y contraseña correctos."
|
login-failed: "Autenticación fallida. Asegúrate de haber usado el nombre de usuario y contraseña correctos."
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
invitation-code: "Código de invitación"
|
invitation-code: "Código de invitación"
|
||||||
@@ -402,6 +402,20 @@ common/views/components/twitter-setting.vue:
|
|||||||
reconnect: "Conectar de nuevo"
|
reconnect: "Conectar de nuevo"
|
||||||
connect: "Conectate usando Twitter"
|
connect: "Conectate usando Twitter"
|
||||||
disconnect: "Desconectado"
|
disconnect: "Desconectado"
|
||||||
|
common/views/components/github-setting.vue:
|
||||||
|
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
|
||||||
|
connected-to: "次のGitHubアカウントに接続されています"
|
||||||
|
detail: "詳細..."
|
||||||
|
reconnect: "再接続する"
|
||||||
|
connect: "GitHubと接続する"
|
||||||
|
disconnect: "切断する"
|
||||||
|
common/views/components/discord-setting.vue:
|
||||||
|
description: "お使いのDiscordアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでDiscordアカウント情報が表示されるようになったり、Discordを用いた便利なサインインを利用できるようになります。"
|
||||||
|
connected-to: "次のDiscordアカウントに接続されています"
|
||||||
|
detail: "詳細..."
|
||||||
|
reconnect: "再接続する"
|
||||||
|
connect: "Discordと接続する"
|
||||||
|
disconnect: "切断する"
|
||||||
common/views/components/uploader.vue:
|
common/views/components/uploader.vue:
|
||||||
waiting: "Un momento"
|
waiting: "Un momento"
|
||||||
common/views/components/visibility-chooser.vue:
|
common/views/components/visibility-chooser.vue:
|
||||||
@@ -416,6 +430,25 @@ common/views/components/visibility-chooser.vue:
|
|||||||
common/views/components/trends.vue:
|
common/views/components/trends.vue:
|
||||||
count: "{}人が投稿"
|
count: "{}人が投稿"
|
||||||
empty: "トレンドなし"
|
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:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "Recuperando"
|
fetching: "Recuperando"
|
||||||
no-broadcasts: "Sin emisión"
|
no-broadcasts: "Sin emisión"
|
||||||
@@ -499,34 +532,12 @@ desktop/views/components/activity.vue:
|
|||||||
title: "Actividad"
|
title: "Actividad"
|
||||||
toggle: "Alternar vistas"
|
toggle: "Alternar vistas"
|
||||||
desktop/views/components/calendar.vue:
|
desktop/views/components/calendar.vue:
|
||||||
title: "{1} / {2}"
|
title: "{year}年 {month}月"
|
||||||
prev: "Mes anterior"
|
prev: "Mes anterior"
|
||||||
next: "Próximo mes"
|
next: "Próximo mes"
|
||||||
go: "Click para navegar"
|
go: "Click para navegar"
|
||||||
desktop/views/components/charts.vue:
|
|
||||||
title: "Gráficos"
|
|
||||||
per-day: "por día"
|
|
||||||
per-hour: "por hora"
|
|
||||||
notes: "Publicaciones"
|
|
||||||
users: "Usuarios"
|
|
||||||
drive: "Unidad"
|
|
||||||
network: "ネットワーク"
|
|
||||||
charts:
|
|
||||||
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:
|
desktop/views/components/choose-file-from-drive-window.vue:
|
||||||
choose-file: "Escoger archivos"
|
chosen-files: "{count}ファイル選択中"
|
||||||
upload: "Cargar archivos de tu dispositivo"
|
upload: "Cargar archivos de tu dispositivo"
|
||||||
cancel: "Cancelar"
|
cancel: "Cancelar"
|
||||||
ok: "OK"
|
ok: "OK"
|
||||||
@@ -541,7 +552,6 @@ desktop/views/components/crop-window.vue:
|
|||||||
ok: "OK"
|
ok: "OK"
|
||||||
desktop/views/components/drive-window.vue:
|
desktop/views/components/drive-window.vue:
|
||||||
used: "usado"
|
used: "usado"
|
||||||
drive: "Disco"
|
|
||||||
desktop/views/components/drive.file.vue:
|
desktop/views/components/drive.file.vue:
|
||||||
avatar: "Avatar"
|
avatar: "Avatar"
|
||||||
banner: "Banner"
|
banner: "Banner"
|
||||||
@@ -571,11 +581,8 @@ desktop/views/components/drive.folder.vue:
|
|||||||
rename: "Renombrar"
|
rename: "Renombrar"
|
||||||
rename-folder: "Renombrar carpeta"
|
rename-folder: "Renombrar carpeta"
|
||||||
input-new-folder-name: "Escribe el nombre nuevo"
|
input-new-folder-name: "Escribe el nombre nuevo"
|
||||||
desktop/views/components/drive.nav-folder.vue:
|
|
||||||
drive: "Disco"
|
|
||||||
desktop/views/components/drive.vue:
|
desktop/views/components/drive.vue:
|
||||||
search: "Buscar"
|
search: "Buscar"
|
||||||
load-more: "Cargar más"
|
|
||||||
empty-draghover: "¡Saluda!"
|
empty-draghover: "¡Saluda!"
|
||||||
empty-drive: "Tu disco está vacio"
|
empty-drive: "Tu disco está vacio"
|
||||||
empty-drive-description: "También puedes subir archivos seleccionándolos y con el botón derecho selecciona \"Subir fichero\" o puedes arrastrarlo hasta la ventana."
|
empty-drive-description: "También puedes subir archivos seleccionándolos y con el botón derecho selecciona \"Subir fichero\" o puedes arrastrarlo hasta la ventana."
|
||||||
@@ -599,12 +606,6 @@ desktop/views/components/media-image.vue:
|
|||||||
desktop/views/components/media-video.vue:
|
desktop/views/components/media-video.vue:
|
||||||
sensitive: "Este contenido no es apropiado para ver en el trabajo"
|
sensitive: "Este contenido no es apropiado para ver en el trabajo"
|
||||||
click-to-show: "Click para mostrar"
|
click-to-show: "Click para mostrar"
|
||||||
desktop/views/components/follow-button.vue:
|
|
||||||
following: "Siguiendo"
|
|
||||||
follow: "Sigue"
|
|
||||||
request-pending: "Pendiente de aprobación"
|
|
||||||
follow-processing: "フォロー処理中"
|
|
||||||
follow-request: "Solicitud de seguir"
|
|
||||||
desktop/views/components/followers-window.vue:
|
desktop/views/components/followers-window.vue:
|
||||||
followers: "{} seguidores"
|
followers: "{} seguidores"
|
||||||
desktop/views/components/followers.vue:
|
desktop/views/components/followers.vue:
|
||||||
@@ -633,27 +634,24 @@ desktop/views/components/messaging-room-window.vue:
|
|||||||
desktop/views/components/messaging-window.vue:
|
desktop/views/components/messaging-window.vue:
|
||||||
title: "Mensajes"
|
title: "Mensajes"
|
||||||
desktop/views/components/note-detail.vue:
|
desktop/views/components/note-detail.vue:
|
||||||
more: "Cargar más conversaciones"
|
|
||||||
private: "Esta publicación es privada"
|
private: "Esta publicación es privada"
|
||||||
deleted: "Esta publicación ha sido removida"
|
deleted: "Esta publicación ha sido removida"
|
||||||
reposted-by: "Republicado por {}"
|
reposted-by: "Republicado por {}"
|
||||||
location: "Localización"
|
location: "Localización"
|
||||||
renote: "Republicar"
|
renote: "Republicar"
|
||||||
add-reaction: "Agregar una reacción"
|
add-reaction: "Agregar una reacción"
|
||||||
desktop/views/components/notes.note.vue:
|
desktop/views/components/note.vue:
|
||||||
reposted-by: "Republicado por {}"
|
reposted-by: "{}がRenote"
|
||||||
reply: "Responder"
|
reply: "返信"
|
||||||
renote: "Republicar"
|
renote: "Renote"
|
||||||
add-reaction: "Agregar una reacción"
|
add-reaction: "リアクション"
|
||||||
detail: "Mostrar detalles"
|
detail: "詳細"
|
||||||
private: "Esta publicación es privada"
|
private: "この投稿は非公開です"
|
||||||
deleted: "Esta publicación ha sido borrada"
|
deleted: "この投稿は削除されました"
|
||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "Error al cargar."
|
error: "Error al cargar."
|
||||||
retry: "Reintentar"
|
retry: "Reintentar"
|
||||||
load-more: "Leer más"
|
|
||||||
desktop/views/components/notifications.vue:
|
desktop/views/components/notifications.vue:
|
||||||
more: "Más"
|
|
||||||
empty: "No hay notificaciones"
|
empty: "No hay notificaciones"
|
||||||
desktop/views/components/post-form.vue:
|
desktop/views/components/post-form.vue:
|
||||||
add-visible-user: "+Agregar usuario"
|
add-visible-user: "+Agregar usuario"
|
||||||
@@ -700,14 +698,17 @@ desktop/views/components/renote-form.vue:
|
|||||||
failure: "La publicación ha fallado"
|
failure: "La publicación ha fallado"
|
||||||
desktop/views/components/renote-form-window.vue:
|
desktop/views/components/renote-form-window.vue:
|
||||||
title: "¿Seguro qué quieres volver a publicarlo?"
|
title: "¿Seguro qué quieres volver a publicarlo?"
|
||||||
|
desktop/views/pages/user-following-or-followers.vue:
|
||||||
|
following: "{user}のフォロー"
|
||||||
|
followers: "{user}のフォロワー"
|
||||||
desktop/views/components/settings-window.vue:
|
desktop/views/components/settings-window.vue:
|
||||||
settings: "Configuración"
|
settings: "Configuración"
|
||||||
desktop/views/components/settings.vue:
|
desktop/views/components/settings.vue:
|
||||||
profile: "Perfil"
|
profile: "Perfil"
|
||||||
notification: "Notificación"
|
notification: "Notificación"
|
||||||
apps: "Aplicaciones"
|
apps: "Aplicaciones"
|
||||||
mute: "Silenciar"
|
mute-and-block: "ミュート/ブロック"
|
||||||
drive: "Disco"
|
blocking: "ブロック"
|
||||||
security: "Seguridad"
|
security: "Seguridad"
|
||||||
signin: "Historial de inicios de sesión"
|
signin: "Historial de inicios de sesión"
|
||||||
password: "Contraseña"
|
password: "Contraseña"
|
||||||
@@ -726,8 +727,12 @@ desktop/views/components/settings.vue:
|
|||||||
advanced: "Configuración avanzada"
|
advanced: "Configuración avanzada"
|
||||||
api-via-stream: "Solicitar API por medio de un stream"
|
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."
|
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"
|
display: "Diseño y pantalla"
|
||||||
customize: "Personaliza la página principal"
|
customize: "Personaliza la página principal"
|
||||||
|
wallpaper: "壁紙"
|
||||||
choose-wallpaper: "Elije un fondo"
|
choose-wallpaper: "Elije un fondo"
|
||||||
delete-wallpaper: "Suprimir fondo"
|
delete-wallpaper: "Suprimir fondo"
|
||||||
dark-mode: "Modo Nocturno"
|
dark-mode: "Modo Nocturno"
|
||||||
@@ -739,17 +744,19 @@ desktop/views/components/settings.vue:
|
|||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
show-clock-on-header: "右上に時計を表示する"
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
|
timeline: "タイムライン"
|
||||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "マップの自動展開"
|
show-maps: "マップの自動展開"
|
||||||
|
deck-column-align: "デッキのカラムの位置"
|
||||||
|
deck-column-align-center: "中央"
|
||||||
|
deck-column-align-left: "左"
|
||||||
sound: "サウンド"
|
sound: "サウンド"
|
||||||
enable-sounds: "サウンドを有効にする"
|
enable-sounds: "サウンドを有効にする"
|
||||||
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
|
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
|
||||||
volume: "ボリューム"
|
volume: "ボリューム"
|
||||||
test: "テスト"
|
test: "テスト"
|
||||||
mobile: "モバイル"
|
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
|
||||||
language: "言語"
|
language: "言語"
|
||||||
pick-language: "言語を選択"
|
pick-language: "言語を選択"
|
||||||
recommended: "推奨"
|
recommended: "推奨"
|
||||||
@@ -785,6 +792,10 @@ desktop/views/components/settings.vue:
|
|||||||
tools: "Herramientas"
|
tools: "Herramientas"
|
||||||
task-manager: "Navegador de tareas"
|
task-manager: "Navegador de tareas"
|
||||||
third-parties: "Servicios externos"
|
third-parties: "Servicios externos"
|
||||||
|
navbar-position: "ナビゲーションバーの位置"
|
||||||
|
navbar-position-top: "上"
|
||||||
|
navbar-position-left: "左"
|
||||||
|
navbar-position-right: "右"
|
||||||
desktop/views/components/settings.2fa.vue:
|
desktop/views/components/settings.2fa.vue:
|
||||||
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
||||||
detail: "Ver detalles..."
|
detail: "Ver detalles..."
|
||||||
@@ -803,41 +814,44 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
success: "¡Configuraciones guardadas!"
|
success: "¡Configuraciones guardadas!"
|
||||||
failed: "Error al configurar. Por favor asegúrate de que el token es correcto."
|
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"
|
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:
|
common/views/components/api-settings.vue:
|
||||||
intro: "Para acceder al API, configura este token como la letra \"i\" de los parámetros requeridos."
|
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
||||||
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."
|
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||||
regeneration-of-token: "En el caso no deseado de que este token lo tenga otra persona, puedes regenerarlo."
|
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||||
regenerate-token: "Regenerar el token"
|
regenerate-token: "トークンを再生成"
|
||||||
token: "Token:"
|
token: "Token:"
|
||||||
enter-password: "Por favor ingresa tu contraseña"
|
enter-password: "パスワードを入力してください"
|
||||||
|
console:
|
||||||
|
title: 'APIコンソール'
|
||||||
|
endpoint: 'エンドポイント'
|
||||||
|
parameter: 'パラメータ'
|
||||||
|
credential-info: "「i」パラメータは自動で付与されます。"
|
||||||
|
send: '送信'
|
||||||
|
sending: '応答待ち'
|
||||||
|
response: '結果'
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "No hay aplicaciones asociadas"
|
no-apps: "No hay aplicaciones asociadas"
|
||||||
desktop/views/components/settings.drive.vue:
|
common/views/components/drive-settings.vue:
|
||||||
max: "Max"
|
max: "容量"
|
||||||
in-use: "en uso."
|
in-use: "使用中"
|
||||||
desktop/views/components/settings.mute.vue:
|
stats: "統計"
|
||||||
no-users: "No hay usuarios silenciados"
|
common/views/components/mute-and-block.vue:
|
||||||
desktop/views/components/settings.password.vue:
|
mute-and-block: "ミュートとブロック"
|
||||||
reset: "Cambiar contraseña"
|
mute: "ミュート"
|
||||||
enter-current-password: "Ingresar contraseña actual"
|
block: "ブロック"
|
||||||
enter-new-password: "Ingresar nueva contraseña"
|
no-muted-users: "ミュートしているユーザーはいません"
|
||||||
enter-new-password-again: "Ingresar nueva contraseña de nuevo"
|
no-blocked-users: "ブロックしているユーザーはいません"
|
||||||
not-match: "Las nuevas contraseñas no se corresponden consigo mismas"
|
word-mute: "ワードミュート"
|
||||||
changed: "Contraseña actualizada"
|
muted-words: "ミュートされたキーワード"
|
||||||
desktop/views/components/settings.profile.vue:
|
muted-words-description: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります"
|
||||||
avatar: "Avatar"
|
save: "保存"
|
||||||
choice-avatar: "Escoger una imagen"
|
common/views/components/password-settings.vue:
|
||||||
name: "Nombre"
|
reset: "パスワードを変更する"
|
||||||
location: "Localización"
|
enter-current-password: "現在のパスワードを入力してください"
|
||||||
description: "Descripción"
|
enter-new-password: "新しいパスワードを入力してください"
|
||||||
birthday: "Fecha de nacimiento"
|
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
||||||
save: "Perfil actualizado"
|
not-match: "新しいパスワードが一致しません"
|
||||||
locked-account: "Protege tu cuenta"
|
changed: "パスワードを変更しました"
|
||||||
is-locked: "フォローを承認制にする"
|
|
||||||
other: "その他"
|
|
||||||
is-bot: "このアカウントはBotです"
|
|
||||||
is-cat: "このアカウントはCatです"
|
|
||||||
profile-updated: "プロフィールを更新しました"
|
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
@@ -862,7 +876,6 @@ desktop/views/components/ui.header.vue:
|
|||||||
adjective: "-san"
|
adjective: "-san"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "Tu perfil"
|
profile: "Tu perfil"
|
||||||
drive: "Unidad"
|
|
||||||
favorites: "Favoritos"
|
favorites: "Favoritos"
|
||||||
lists: "Listas"
|
lists: "Listas"
|
||||||
follow-requests: "Solicitudes de seguimiento"
|
follow-requests: "Solicitudes de seguimiento"
|
||||||
@@ -874,7 +887,6 @@ desktop/views/components/ui.header.account.vue:
|
|||||||
desktop/views/components/ui.header.nav.vue:
|
desktop/views/components/ui.header.nav.vue:
|
||||||
home: "Inicio"
|
home: "Inicio"
|
||||||
deck: "Cubierta"
|
deck: "Cubierta"
|
||||||
messaging: "Mensajes"
|
|
||||||
game: "Juegos"
|
game: "Juegos"
|
||||||
desktop/views/components/ui.header.notifications.vue:
|
desktop/views/components/ui.header.notifications.vue:
|
||||||
title: "Notificaciones"
|
title: "Notificaciones"
|
||||||
@@ -897,54 +909,153 @@ desktop/views/components/user-preview.vue:
|
|||||||
desktop/views/components/users-list.vue:
|
desktop/views/components/users-list.vue:
|
||||||
all: "すべて"
|
all: "すべて"
|
||||||
iknow: "知り合い"
|
iknow: "知り合い"
|
||||||
load-more: "もっと"
|
|
||||||
fetching: "読み込んでいます"
|
fetching: "読み込んでいます"
|
||||||
desktop/views/components/users-list-item.vue:
|
desktop/views/components/users-list-item.vue:
|
||||||
followed: "フォローされています"
|
followed: "フォローされています"
|
||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
desktop/views/pages/admin/admin.vue:
|
admin/views/index.vue:
|
||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
drive: "ドライブ"
|
instance: "インスタンス"
|
||||||
|
emoji: "カスタム絵文字"
|
||||||
|
moderators: "モデレーター"
|
||||||
users: "ユーザー"
|
users: "ユーザー"
|
||||||
update: "更新"
|
update: "更新"
|
||||||
desktop/views/pages/admin/admin.dashboard.vue:
|
announcements: "お知らせ"
|
||||||
|
hashtags: "ハッシュタグ"
|
||||||
|
back-to-misskey: "Misskeyに戻る"
|
||||||
|
admin/views/dashboard.vue:
|
||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
all-users: "全てのユーザー"
|
accounts: "アカウント"
|
||||||
original-users: "このインスタンスのユーザー"
|
notes: "投稿"
|
||||||
all-notes: "全ての投稿"
|
drive: "ドライブ"
|
||||||
original-notes: "このインスタンスの投稿"
|
instances: "インスタンス"
|
||||||
|
this-instance: "このインスタンス"
|
||||||
|
federated: "連合"
|
||||||
|
admin/views/instance.vue:
|
||||||
|
instance: "インスタンス"
|
||||||
|
instance-name: "インスタンス名"
|
||||||
|
instance-description: "インスタンスの紹介"
|
||||||
|
host: "ホスト"
|
||||||
|
banner-url: "バナー画像URL"
|
||||||
|
languages: "インスタンスの対象言語"
|
||||||
|
languages-desc: "スペースで区切って複数設定できます。"
|
||||||
|
maintainer-config: "管理者情報"
|
||||||
|
maintainer-name: "管理者名"
|
||||||
|
maintainer-email: "管理者の連絡先"
|
||||||
|
drive-config: "ドライブの設定"
|
||||||
|
cache-remote-files: "リモートのファイルをキャッシュする"
|
||||||
|
cache-remote-files-desc: "この設定を無効にすると、リモートファイルをキャッシュせず直リンクするようになります。そのためサーバーのストレージを節約できますが、プライバシー設定で直リンクを無効にしているユーザーにはファイルが見えなくなったり、サムネイルが生成されないので通信量が増加します。通常はこの設定をオンにしておくことをおすすめします。"
|
||||||
|
local-drive-capacity-mb: "ローカルユーザーひとりあたりのドライブ容量"
|
||||||
|
remote-drive-capacity-mb: "リモートユーザーひとりあたりのドライブ容量"
|
||||||
|
mb: "メガバイト単位"
|
||||||
|
recaptcha-config: "reCAPTCHAの設定"
|
||||||
|
recaptcha-info: "reCAPTCHAを有効にする場合、reCAPTCHAトークンを取得する必要があります。https://www.google.com/recaptcha/intro/ にアクセスしてトークンを取得してください。"
|
||||||
|
enable-recaptcha: "reCAPTCHAを有効にする"
|
||||||
|
recaptcha-site-key: "reCAPTCHA site key"
|
||||||
|
recaptcha-secret-key: "reCAPTCHA secret key"
|
||||||
|
twitter-integration-config: "Twitter連携の設定"
|
||||||
|
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。"
|
||||||
|
enable-twitter-integration: "Twitter連携を有効にする"
|
||||||
|
twitter-integration-consumer-key: "Consumer key"
|
||||||
|
twitter-integration-consumer-secret: "Consumer secret"
|
||||||
|
github-integration-config: "GitHub連携の設定"
|
||||||
|
github-integration-info: "コールバックURLは /api/gh/cb に設定します。"
|
||||||
|
enable-github-integration: "GitHub連携を有効にする"
|
||||||
|
github-integration-client-id: "Client ID"
|
||||||
|
github-integration-client-secret: "Client Secret"
|
||||||
|
discord-integration-config: "Discord連携の設定"
|
||||||
|
discord-integration-info: "コールバックURLは /api/dc/cb に設定します。"
|
||||||
|
enable-discord-integration: "Discord連携を有効にする"
|
||||||
|
discord-integration-client-id: "Client ID"
|
||||||
|
discord-integration-client-secret: "Client Secret"
|
||||||
|
proxy-account-config: "プロキシアカウントの設定"
|
||||||
|
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
|
||||||
|
proxy-account-username: "プロキシアカウントのユーザー名"
|
||||||
|
proxy-account-username-desc: "プロキシとして使用するアカウントのユーザー名を指定してください。"
|
||||||
|
proxy-account-warn: "アカウントは自動で作られないため、そのユーザー名のアカウントを予め作成しておく必要があります。"
|
||||||
|
max-note-text-length: "投稿の最大文字数"
|
||||||
|
disable-registration: "ユーザー登録の受付を停止する"
|
||||||
|
disable-local-timeline: "ローカルタイムラインを無効にする"
|
||||||
invite: "招待"
|
invite: "招待"
|
||||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
save: "保存"
|
||||||
|
saved: "保存しました"
|
||||||
|
admin/views/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: "通信量"
|
||||||
|
admin/views/users.vue:
|
||||||
suspend-user: "ユーザーの凍結"
|
suspend-user: "ユーザーの凍結"
|
||||||
suspend: "凍結"
|
suspend: "凍結"
|
||||||
suspended: "凍結しました"
|
suspended: "凍結しました"
|
||||||
desktop/views/pages/admin/admin.unsuspend-user.vue:
|
|
||||||
unsuspend-user: "ユーザーの凍結の解除"
|
unsuspend-user: "ユーザーの凍結の解除"
|
||||||
unsuspend: "凍結の解除"
|
unsuspend: "凍結の解除"
|
||||||
unsuspended: "凍結を解除しました"
|
unsuspended: "凍結を解除しました"
|
||||||
desktop/views/pages/admin/admin.verify-user.vue:
|
|
||||||
verify-user: "ユーザーの公式アカウント設定"
|
verify-user: "ユーザーの公式アカウント設定"
|
||||||
verify: "公式アカウントにする"
|
verify: "公式アカウントにする"
|
||||||
verified: "公式アカウントにしました"
|
verified: "公式アカウントにしました"
|
||||||
desktop/views/pages/admin/admin.unverify-user.vue:
|
|
||||||
unverify-user: "ユーザーの公式アカウント解除"
|
unverify-user: "ユーザーの公式アカウント解除"
|
||||||
unverify: "公式アカウントを解除する"
|
unverify: "公式アカウントを解除する"
|
||||||
unverified: "公式アカウントを解除しました"
|
unverified: "公式アカウントを解除しました"
|
||||||
desktop/views/pages/deck/deck.tl-column.vue:
|
admin/views/moderators.vue:
|
||||||
is-media-only: "メディア投稿のみ"
|
add-moderator:
|
||||||
is-media-view: "メディアビュー"
|
title: "モデレーターの登録"
|
||||||
edit: "オプション"
|
add: "登録"
|
||||||
desktop/views/pages/deck/deck.note.vue:
|
added: "モデレーターを登録しました"
|
||||||
reposted-by: "{}がRenote"
|
admin/views/emoji.vue:
|
||||||
private: "この投稿は非公開です"
|
add-emoji:
|
||||||
deleted: "この投稿は削除されました"
|
title: "絵文字の登録"
|
||||||
desktop/views/pages/stats/stats.vue:
|
name: "絵文字名"
|
||||||
all-users: "全てのユーザー"
|
name-desc: "a~z 0~9 _ の文字が使えます。"
|
||||||
original-users: "このインスタンスのユーザー"
|
aliases: "エイリアス"
|
||||||
all-notes: "全ての投稿"
|
aliases-desc: "スペースで区切って複数設定できます。"
|
||||||
original-notes: "このインスタンスの投稿"
|
url: "絵文字画像URL"
|
||||||
|
add: "追加"
|
||||||
|
info: "50KB以下のPNG画像をおすすめします。"
|
||||||
|
added: "絵文字を登録しました"
|
||||||
|
emojis:
|
||||||
|
title: "絵文字一覧"
|
||||||
|
update: "更新"
|
||||||
|
remove: "削除"
|
||||||
|
updated: "更新しました"
|
||||||
|
remove-emoji:
|
||||||
|
are-you-sure: "「$1」を削除しますか?"
|
||||||
|
removed: "削除しました"
|
||||||
|
admin/views/announcements.vue:
|
||||||
|
announcements: "お知らせ"
|
||||||
|
save: "保存"
|
||||||
|
remove: "削除"
|
||||||
|
add: "追加"
|
||||||
|
title: "タイトル"
|
||||||
|
text: "内容"
|
||||||
|
saved: "保存しました"
|
||||||
|
_remove:
|
||||||
|
are-you-sure: "「$1」を削除しますか?"
|
||||||
|
removed: "削除しました"
|
||||||
|
admin/views/hashtags.vue:
|
||||||
|
hided-tags: "Hidden Tags"
|
||||||
desktop/views/pages/welcome.vue:
|
desktop/views/pages/welcome.vue:
|
||||||
about: "詳しく..."
|
about: "詳しく..."
|
||||||
gotit: "わかった"
|
gotit: "わかった"
|
||||||
@@ -959,8 +1070,6 @@ desktop/views/pages/welcome.vue:
|
|||||||
info: "情報"
|
info: "情報"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
desktop/views/pages/favorites.vue:
|
|
||||||
more: "さらに読み込む"
|
|
||||||
desktop/views/pages/home-customize.vue:
|
desktop/views/pages/home-customize.vue:
|
||||||
title: "ホームのカスタマイズ"
|
title: "ホームのカスタマイズ"
|
||||||
desktop/views/pages/note.vue:
|
desktop/views/pages/note.vue:
|
||||||
@@ -973,11 +1082,11 @@ desktop/views/pages/selectdrive.vue:
|
|||||||
upload: "PCからドライブにファイルをアップロード"
|
upload: "PCからドライブにファイルをアップロード"
|
||||||
desktop/views/pages/search.vue:
|
desktop/views/pages/search.vue:
|
||||||
not-available: "検索機能はインスタンスの設定で無効になっています。"
|
not-available: "検索機能はインスタンスの設定で無効になっています。"
|
||||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
not-found: "「{q}」に関する投稿は見つかりませんでした。"
|
||||||
desktop/views/pages/share.vue:
|
desktop/views/pages/share.vue:
|
||||||
share-with: "{}で共有"
|
share-with: "{name}で共有"
|
||||||
desktop/views/pages/tag.vue:
|
desktop/views/pages/tag.vue:
|
||||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
|
||||||
desktop/views/pages/user-list.users.vue:
|
desktop/views/pages/user-list.users.vue:
|
||||||
users: "ユーザー"
|
users: "ユーザー"
|
||||||
add-user: "ユーザーを追加"
|
add-user: "ユーザーを追加"
|
||||||
@@ -990,12 +1099,6 @@ desktop/views/pages/user/user.friends.vue:
|
|||||||
title: "よく話すユーザー"
|
title: "よく話すユーザー"
|
||||||
loading: "読み込み中"
|
loading: "読み込み中"
|
||||||
no-users: "よく話すユーザーはいません"
|
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:
|
desktop/views/pages/user/user.photos.vue:
|
||||||
title: "フォト"
|
title: "フォト"
|
||||||
loading: "読み込み中"
|
loading: "読み込み中"
|
||||||
@@ -1008,6 +1111,9 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "ミュートする"
|
mute: "ミュートする"
|
||||||
muted: "ミュートしています"
|
muted: "ミュートしています"
|
||||||
unmute: "ミュート解除"
|
unmute: "ミュート解除"
|
||||||
|
block: "ブロックする"
|
||||||
|
unblock: "ブロック解除"
|
||||||
|
block-confirm: "このユーザーをブロックしますか?"
|
||||||
push-to-a-list: "リストに追加"
|
push-to-a-list: "リストに追加"
|
||||||
list-pushed: "{user}を{list}に追加しました。"
|
list-pushed: "{user}を{list}に追加しました。"
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.header.vue:
|
||||||
@@ -1015,6 +1121,10 @@ desktop/views/pages/user/user.header.vue:
|
|||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
followers: "フォロワー"
|
followers: "フォロワー"
|
||||||
is-bot: "このアカウントはBotです"
|
is-bot: "このアカウントはBotです"
|
||||||
|
years-old: "{age}歳"
|
||||||
|
year: "年"
|
||||||
|
month: "月"
|
||||||
|
day: "日"
|
||||||
desktop/views/pages/user/user.timeline.vue:
|
desktop/views/pages/user/user.timeline.vue:
|
||||||
default: "投稿"
|
default: "投稿"
|
||||||
with-replies: "投稿と返信"
|
with-replies: "投稿と返信"
|
||||||
@@ -1044,12 +1154,10 @@ desktop/views/widgets/users.vue:
|
|||||||
refresh: "他を見る"
|
refresh: "他を見る"
|
||||||
no-one: "いません!"
|
no-one: "いません!"
|
||||||
mobile/views/components/drive.vue:
|
mobile/views/components/drive.vue:
|
||||||
drive: "ドライブ"
|
|
||||||
used: "使用中"
|
used: "使用中"
|
||||||
folder-count: "フォルダ"
|
folder-count: "フォルダ"
|
||||||
count-separator: "、"
|
count-separator: "、"
|
||||||
file-count: "ファイル"
|
file-count: "ファイル"
|
||||||
load-more: "もっと読み込む"
|
|
||||||
nothing-in-drive: "ドライブには何もありません"
|
nothing-in-drive: "ドライブには何もありません"
|
||||||
folder-is-empty: "このフォルダは空です"
|
folder-is-empty: "このフォルダは空です"
|
||||||
prompt: "何をしますか?(数字を入力してください): <1 → ファイルをアップロード | 2 → ファイルをURLでアップロード | 3 → フォルダ作成 | 4 → このフォルダ名を変更 | 5 → このフォルダを移動 | 6 → このフォルダを削除>"
|
prompt: "何をしますか?(数字を入力してください): <1 → ファイルをアップロード | 2 → ファイルをURLでアップロード | 3 → フォルダ作成 | 4 → このフォルダ名を変更 | 5 → このフォルダを移動 | 6 → このフォルダを削除>"
|
||||||
@@ -1059,8 +1167,6 @@ mobile/views/components/drive.vue:
|
|||||||
root-move-alert: "現在いる場所はルートで、フォルダではないため移動はできません。移動したいフォルダに移動してからやってください。"
|
root-move-alert: "現在いる場所はルートで、フォルダではないため移動はできません。移動したいフォルダに移動してからやってください。"
|
||||||
url-prompt: "アップロードしたいファイルのURL"
|
url-prompt: "アップロードしたいファイルのURL"
|
||||||
uploading: "アップロードをリクエストしました。アップロードが完了するまで時間がかかる場合があります。"
|
uploading: "アップロードをリクエストしました。アップロードが完了するまで時間がかかる場合があります。"
|
||||||
mobile/views/components/drive-file-detail.vue:
|
|
||||||
rename: "名前を変更"
|
|
||||||
mobile/views/components/drive-file-chooser.vue:
|
mobile/views/components/drive-file-chooser.vue:
|
||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
mobile/views/components/drive-folder-chooser.vue:
|
mobile/views/components/drive-folder-chooser.vue:
|
||||||
@@ -1074,13 +1180,15 @@ mobile/views/components/drive.file-detail.vue:
|
|||||||
hash: "ハッシュ (md5)"
|
hash: "ハッシュ (md5)"
|
||||||
exif: "EXIF"
|
exif: "EXIF"
|
||||||
nsfw: "閲覧注意"
|
nsfw: "閲覧注意"
|
||||||
|
mark-as-sensitive: "閲覧注意に設定"
|
||||||
|
unmark-as-sensitive: "閲覧注意を解除"
|
||||||
mobile/views/components/media-image.vue:
|
mobile/views/components/media-image.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
mobile/views/components/media-video.vue:
|
mobile/views/components/media-video.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
mobile/views/components/follow-button.vue:
|
common/views/components/follow-button.vue:
|
||||||
following: "フォロー中"
|
following: "フォロー中"
|
||||||
follow: "フォロー"
|
follow: "フォロー"
|
||||||
request-pending: "フォロー許可待ち"
|
request-pending: "フォロー許可待ち"
|
||||||
@@ -1112,11 +1220,7 @@ mobile/views/components/note-sub.vue:
|
|||||||
admin: "admin"
|
admin: "admin"
|
||||||
bot: "bot"
|
bot: "bot"
|
||||||
cat: "cat"
|
cat: "cat"
|
||||||
mobile/views/components/notes.vue:
|
|
||||||
failed: "読み込みに失敗しました。"
|
|
||||||
retry: "リトライ"
|
|
||||||
mobile/views/components/notifications.vue:
|
mobile/views/components/notifications.vue:
|
||||||
more: "もっと見る"
|
|
||||||
empty: "ありません!"
|
empty: "ありません!"
|
||||||
mobile/views/components/post-form.vue:
|
mobile/views/components/post-form.vue:
|
||||||
add-visible-user: "ユーザーを追加"
|
add-visible-user: "ユーザーを追加"
|
||||||
@@ -1136,17 +1240,14 @@ mobile/views/components/sub-note-content.vue:
|
|||||||
poll: "アンケート"
|
poll: "アンケート"
|
||||||
mobile/views/components/timeline.vue:
|
mobile/views/components/timeline.vue:
|
||||||
empty: "投稿がありません"
|
empty: "投稿がありません"
|
||||||
load-more: "もっと"
|
|
||||||
mobile/views/components/ui.header.vue:
|
mobile/views/components/ui.header.vue:
|
||||||
welcome-back: "おかえりなさい、"
|
welcome-back: "おかえりなさい、"
|
||||||
adjective: "さん"
|
adjective: "さん"
|
||||||
mobile/views/components/ui.nav.vue:
|
mobile/views/components/ui.nav.vue:
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
messaging: "メッセージ"
|
|
||||||
follow-requests: "フォロー申請"
|
follow-requests: "フォロー申請"
|
||||||
search: "検索"
|
search: "検索"
|
||||||
drive: "ドライブ"
|
|
||||||
favorites: "お気に入り"
|
favorites: "お気に入り"
|
||||||
user-lists: "リスト"
|
user-lists: "リスト"
|
||||||
widgets: "ウィジェット"
|
widgets: "ウィジェット"
|
||||||
@@ -1158,25 +1259,20 @@ mobile/views/components/ui.nav.vue:
|
|||||||
mobile/views/components/user-timeline.vue:
|
mobile/views/components/user-timeline.vue:
|
||||||
no-notes: "このユーザーは投稿していないようです。"
|
no-notes: "このユーザーは投稿していないようです。"
|
||||||
no-notes-with-media: "メディア付き投稿はありません。"
|
no-notes-with-media: "メディア付き投稿はありません。"
|
||||||
load-more: "もっと"
|
|
||||||
mobile/views/components/users-list.vue:
|
mobile/views/components/users-list.vue:
|
||||||
all: "すべて"
|
all: "すべて"
|
||||||
known: "知り合い"
|
known: "知り合い"
|
||||||
load-more: "もっと"
|
|
||||||
mobile/views/pages/favorites.vue:
|
mobile/views/pages/favorites.vue:
|
||||||
title: "お気に入り"
|
title: "お気に入り"
|
||||||
mobile/views/pages/user-lists.vue:
|
mobile/views/pages/user-lists.vue:
|
||||||
title: "リスト"
|
title: "リスト"
|
||||||
enter-list-name: "リスト名を入力してください"
|
enter-list-name: "リスト名を入力してください"
|
||||||
mobile/views/pages/drive.vue:
|
|
||||||
drive: "ドライブ"
|
|
||||||
more: "もっと見る"
|
|
||||||
mobile/views/pages/signup.vue:
|
mobile/views/pages/signup.vue:
|
||||||
lets-start: "📦 始めましょう"
|
lets-start: "📦 始めましょう"
|
||||||
mobile/views/pages/followers.vue:
|
mobile/views/pages/followers.vue:
|
||||||
followers-of: "{}のフォロワー"
|
followers-of: "{name}のフォロワー"
|
||||||
mobile/views/pages/following.vue:
|
mobile/views/pages/following.vue:
|
||||||
following-of: "{}のフォロー"
|
following-of: "{name}のフォロー"
|
||||||
mobile/views/pages/home.vue:
|
mobile/views/pages/home.vue:
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
local: "ローカル"
|
local: "ローカル"
|
||||||
@@ -1185,7 +1281,7 @@ mobile/views/pages/home.vue:
|
|||||||
mentions: "あなた宛て"
|
mentions: "あなた宛て"
|
||||||
messages: "メッセージ"
|
messages: "メッセージ"
|
||||||
mobile/views/pages/tag.vue:
|
mobile/views/pages/tag.vue:
|
||||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
|
||||||
mobile/views/pages/welcome.vue:
|
mobile/views/pages/welcome.vue:
|
||||||
signup: "新規登録"
|
signup: "新規登録"
|
||||||
mobile/views/pages/widgets.vue:
|
mobile/views/pages/widgets.vue:
|
||||||
@@ -1196,11 +1292,7 @@ mobile/views/pages/widgets.vue:
|
|||||||
mobile/views/pages/widgets/activity.vue:
|
mobile/views/pages/widgets/activity.vue:
|
||||||
activity: "アクティビティ"
|
activity: "アクティビティ"
|
||||||
mobile/views/pages/share.vue:
|
mobile/views/pages/share.vue:
|
||||||
share-with: "{}で共有"
|
share-with: "{name}で共有"
|
||||||
mobile/views/pages/messaging.vue:
|
|
||||||
messaging: "メッセージ"
|
|
||||||
mobile/views/pages/messaging-room.vue:
|
|
||||||
messaging: "メッセージ"
|
|
||||||
mobile/views/pages/received-follow-requests.vue:
|
mobile/views/pages/received-follow-requests.vue:
|
||||||
title: "フォロー申請"
|
title: "フォロー申請"
|
||||||
accept: "承認"
|
accept: "承認"
|
||||||
@@ -1214,27 +1306,9 @@ mobile/views/pages/notifications.vue:
|
|||||||
read-all: "すべての通知を既読にしますか?"
|
read-all: "すべての通知を既読にしますか?"
|
||||||
mobile/views/pages/games/reversi.vue:
|
mobile/views/pages/games/reversi.vue:
|
||||||
reversi: "リバーシ"
|
reversi: "リバーシ"
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
|
||||||
title: "プロフィール"
|
|
||||||
name: "名前"
|
|
||||||
account: "アカウント"
|
|
||||||
location: "場所"
|
|
||||||
description: "自己紹介"
|
|
||||||
birthday: "誕生日"
|
|
||||||
avatar: "アイコン"
|
|
||||||
banner: "バナー"
|
|
||||||
is-cat: "このアカウントはCatです"
|
|
||||||
is-locked: "フォローを承認制にする"
|
|
||||||
advanced: "その他"
|
|
||||||
privacy: "プライバシー"
|
|
||||||
save: "保存"
|
|
||||||
saved: "プロフィールを保存しました"
|
|
||||||
uploading: "アップロード中"
|
|
||||||
upload-failed: "アップロードに失敗しました"
|
|
||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
search: "検索"
|
search: "検索"
|
||||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
not-found: "「{q}」に関する投稿は見つかりませんでした。"
|
||||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
|
||||||
mobile/views/pages/selectdrive.vue:
|
mobile/views/pages/selectdrive.vue:
|
||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
mobile/views/pages/settings.vue:
|
mobile/views/pages/settings.vue:
|
||||||
@@ -1273,6 +1347,14 @@ mobile/views/pages/settings.vue:
|
|||||||
twitter-connect: "Twitterアカウントに接続する"
|
twitter-connect: "Twitterアカウントに接続する"
|
||||||
twitter-reconnect: "再接続する"
|
twitter-reconnect: "再接続する"
|
||||||
twitter-disconnect: "切断する"
|
twitter-disconnect: "切断する"
|
||||||
|
github: "GitHub連携"
|
||||||
|
github-connect: "GitHubアカウントに接続する"
|
||||||
|
github-reconnect: "再接続する"
|
||||||
|
github-disconnect: "切断する"
|
||||||
|
discord: "Discord連携"
|
||||||
|
discord-connect: "Discordアカウントに接続する"
|
||||||
|
discord-reconnect: "再接続する"
|
||||||
|
discord-disconnect: "切断する"
|
||||||
update: "Misskey Update"
|
update: "Misskey Update"
|
||||||
version: "バージョン:"
|
version: "バージョン:"
|
||||||
latest-version: "最新のバージョン:"
|
latest-version: "最新のバージョン:"
|
||||||
@@ -1286,6 +1368,8 @@ mobile/views/pages/settings.vue:
|
|||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
sound: "サウンド"
|
sound: "サウンド"
|
||||||
enable-sounds: "サウンドを有効にする"
|
enable-sounds: "サウンドを有効にする"
|
||||||
|
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
|
||||||
|
password: "パスワード"
|
||||||
mobile/views/pages/user.vue:
|
mobile/views/pages/user.vue:
|
||||||
follows-you: "フォローされています"
|
follows-you: "フォローされています"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@@ -1295,8 +1379,11 @@ mobile/views/pages/user.vue:
|
|||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
media: "メディア"
|
media: "メディア"
|
||||||
is-suspended: "このユーザーは凍結されています。"
|
is-suspended: "このユーザーは凍結されています。"
|
||||||
is-remote: "このユーザーはリモートユーザーです。"
|
mute: "ミュート"
|
||||||
view-remote: "正確な情報を見る"
|
unmute: "ミュート解除"
|
||||||
|
block: "ブロック"
|
||||||
|
unblock: "ブロック解除"
|
||||||
|
years-old: "{age}歳"
|
||||||
mobile/views/pages/user/home.vue:
|
mobile/views/pages/user/home.vue:
|
||||||
recent-notes: "最近の投稿"
|
recent-notes: "最近の投稿"
|
||||||
images: "画像"
|
images: "画像"
|
||||||
@@ -1307,17 +1394,46 @@ mobile/views/pages/user/home.vue:
|
|||||||
followers-you-know: "知り合いのフォロワー"
|
followers-you-know: "知り合いのフォロワー"
|
||||||
last-used-at: "最終ログイン"
|
last-used-at: "最終ログイン"
|
||||||
mobile/views/pages/user/home.followers-you-know.vue:
|
mobile/views/pages/user/home.followers-you-know.vue:
|
||||||
loading: "読み込み中"
|
|
||||||
no-users: "知り合いのユーザーはいません"
|
no-users: "知り合いのユーザーはいません"
|
||||||
mobile/views/pages/user/home.friends.vue:
|
mobile/views/pages/user/home.friends.vue:
|
||||||
loading: "読み込み中"
|
|
||||||
no-users: "よく会話するユーザーはいません"
|
no-users: "よく会話するユーザーはいません"
|
||||||
mobile/views/pages/user/home.notes.vue:
|
mobile/views/pages/user/home.notes.vue:
|
||||||
loading: "読み込み中"
|
|
||||||
no-notes: "投稿はありません"
|
no-notes: "投稿はありません"
|
||||||
mobile/views/pages/user/home.photos.vue:
|
mobile/views/pages/user/home.photos.vue:
|
||||||
loading: "読み込み中"
|
|
||||||
no-photos: "写真はありません"
|
no-photos: "写真はありません"
|
||||||
|
deck:
|
||||||
|
widgets: "ウィジェット"
|
||||||
|
home: "ホーム"
|
||||||
|
local: "ローカル"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
|
hashtag: "ハッシュタグ"
|
||||||
|
global: "グローバル"
|
||||||
|
mentions: "あなた宛て"
|
||||||
|
direct: "ダイレクト投稿"
|
||||||
|
notifications: "通知"
|
||||||
|
list: "リスト"
|
||||||
|
swap-left: "左に移動"
|
||||||
|
swap-right: "右に移動"
|
||||||
|
swap-up: "上に移動"
|
||||||
|
swap-down: "下に移動"
|
||||||
|
remove: "カラムを削除"
|
||||||
|
add-column: "カラムを追加"
|
||||||
|
rename: "名前を変更"
|
||||||
|
stack-left: "左に重ねる"
|
||||||
|
pop-right: "右に出す"
|
||||||
|
deck/deck.tl-column.vue:
|
||||||
|
is-media-only: "メディア投稿のみ"
|
||||||
|
is-media-view: "メディアビュー"
|
||||||
|
edit: "オプション"
|
||||||
|
deck/deck.user-column.vue:
|
||||||
|
posts: "投稿"
|
||||||
|
following: "フォロー"
|
||||||
|
followers: "フォロワー"
|
||||||
|
images: "画像"
|
||||||
|
activity: "アクティビティ"
|
||||||
|
timeline: "タイムライン"
|
||||||
|
pinned-notes: "ピン留めされた投稿"
|
||||||
|
push-to-a-list: "リストに追加"
|
||||||
docs:
|
docs:
|
||||||
edit-this-page-on-github: "間違いや改善点を見つけましたか?"
|
edit-this-page-on-github: "間違いや改善点を見つけましたか?"
|
||||||
edit-this-page-on-github-link: "このページをGitHubで編集"
|
edit-this-page-on-github-link: "このページをGitHubで編集"
|
||||||
@@ -1342,3 +1458,29 @@ docs:
|
|||||||
description: "説明"
|
description: "説明"
|
||||||
dev/views/index.vue:
|
dev/views/index.vue:
|
||||||
manage-apps: "アプリの管理"
|
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
@@ -25,13 +25,11 @@ common:
|
|||||||
application-authorization: "アプリの連携"
|
application-authorization: "アプリの連携"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||||
|
load-more: "もっと読み込む"
|
||||||
got-it: "わかった"
|
got-it: "わかった"
|
||||||
customization-tips:
|
customization-tips:
|
||||||
title: "カスタマイズのヒント"
|
title: "カスタマイズのヒント"
|
||||||
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
|
paragraph: "<p>ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。</p><p>一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。</p><p>ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。</p><p>カスタマイズを終了するには、右上の「完了」をクリックします。</p>"
|
||||||
paragraph2: "一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。"
|
|
||||||
paragraph3: "ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。"
|
|
||||||
paragraph4: "カスタマイズを終了するには、右上の「完了」をクリックします。"
|
|
||||||
gotit: "Got it!"
|
gotit: "Got it!"
|
||||||
notification:
|
notification:
|
||||||
file-uploaded: "ファイルがアップロードされました"
|
file-uploaded: "ファイルがアップロードされました"
|
||||||
@@ -54,6 +52,8 @@ common:
|
|||||||
years_ago: "{}年前"
|
years_ago: "{}年前"
|
||||||
month-and-day: "{month}月 {day}日"
|
month-and-day: "{month}月 {day}日"
|
||||||
trash: "ゴミ箱"
|
trash: "ゴミ箱"
|
||||||
|
drive: "ドライブ"
|
||||||
|
messaging: "トーク"
|
||||||
weekday-short:
|
weekday-short:
|
||||||
sunday: "日"
|
sunday: "日"
|
||||||
monday: "月"
|
monday: "月"
|
||||||
@@ -112,20 +112,28 @@ common:
|
|||||||
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
||||||
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
||||||
show-full-acct: "ユーザー名のホストを省略しない"
|
show-full-acct: "ユーザー名のホストを省略しない"
|
||||||
|
show-via: "viaを表示する"
|
||||||
reduce-motion: "UIの動きを減らす"
|
reduce-motion: "UIの動きを減らす"
|
||||||
this-setting-is-this-device-only: "このデバイスのみ"
|
this-setting-is-this-device-only: "このデバイスのみ"
|
||||||
|
use-os-default-emojis: "OS標準の絵文字を使用"
|
||||||
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
||||||
|
is-remote-user: "このユーザー情報はコピーです。"
|
||||||
|
is-remote-post: "この投稿情報はコピーです。"
|
||||||
|
view-on-remote: "正確な情報を見る"
|
||||||
|
error:
|
||||||
|
title: '問題が発生しました'
|
||||||
|
retry: 'やり直す'
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "引き分け"
|
drawn: "引き分け"
|
||||||
my-turn: "あなたのターンです"
|
my-turn: "あなたのターンです"
|
||||||
opponent-turn: "相手のターンです"
|
opponent-turn: "相手のターンです"
|
||||||
turn-of: "{}のターンです"
|
turn-of: "{name}のターンです"
|
||||||
past-turn-of: "{}のターン"
|
past-turn-of: "{name}のターン"
|
||||||
won: "{}の勝ち"
|
won: "{name}の勝ち"
|
||||||
black: "黒"
|
black: "黒"
|
||||||
white: "白"
|
white: "白"
|
||||||
total: "合計"
|
total: "合計"
|
||||||
this-turn: "{}ターン目"
|
this-turn: "{count}ターン目"
|
||||||
widgets:
|
widgets:
|
||||||
analog-clock: "アナログ時計"
|
analog-clock: "アナログ時計"
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
@@ -144,34 +152,15 @@ common:
|
|||||||
users: "おすすめユーザー"
|
users: "おすすめユーザー"
|
||||||
polls: "アンケート"
|
polls: "アンケート"
|
||||||
post-form: "投稿フォーム"
|
post-form: "投稿フォーム"
|
||||||
messaging: "メッセージ"
|
|
||||||
server: "サーバー情報"
|
server: "サーバー情報"
|
||||||
donation: "寄付のお願い"
|
donation: "寄付のお願い"
|
||||||
nav: "ナビゲーション"
|
nav: "ナビゲーション"
|
||||||
tips: "ヒント"
|
tips: "ヒント"
|
||||||
hashtags: "ハッシュタグ"
|
hashtags: "ハッシュタグ"
|
||||||
deck:
|
dev: "アプリの作成に失敗しました。再度お試しください。"
|
||||||
widgets: "ウィジェット"
|
ai-chan-kawaii: "藍ちゃかわいい"
|
||||||
home: "ホーム"
|
|
||||||
local: "ローカル"
|
|
||||||
hybrid: "ソーシャル"
|
|
||||||
hashtag: "ハッシュタグ"
|
|
||||||
global: "グローバル"
|
|
||||||
mentions: "あなた宛て"
|
|
||||||
direct: "ダイレクト投稿"
|
|
||||||
notifications: "通知"
|
|
||||||
list: "リスト"
|
|
||||||
swap-left: "左に移動"
|
|
||||||
swap-right: "右に移動"
|
|
||||||
swap-up: "上に移動"
|
|
||||||
swap-down: "下に移動"
|
|
||||||
remove: "カラムを削除"
|
|
||||||
add-column: "カラムを追加"
|
|
||||||
rename: "名前を変更"
|
|
||||||
stack-left: "左に重ねる"
|
|
||||||
pop-right: "右に出す"
|
|
||||||
auth/views/form.vue:
|
auth/views/form.vue:
|
||||||
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
|
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
|
||||||
permission-ask: "このアプリは次の権限を要求しています:"
|
permission-ask: "このアプリは次の権限を要求しています:"
|
||||||
account-read: "アカウントの情報を見る。"
|
account-read: "アカウントの情報を見る。"
|
||||||
account-write: "アカウントの情報を操作する。"
|
account-write: "アカウントの情報を操作する。"
|
||||||
@@ -308,7 +297,6 @@ common/views/components/messaging.vue:
|
|||||||
no-history: "履歴はありません"
|
no-history: "履歴はありません"
|
||||||
common/views/components/messaging-room.vue:
|
common/views/components/messaging-room.vue:
|
||||||
empty: "このユーザーと話したことはありません"
|
empty: "このユーザーと話したことはありません"
|
||||||
more: "もっと読む"
|
|
||||||
no-history: "これより過去の履歴はありません"
|
no-history: "これより過去の履歴はありません"
|
||||||
resize-form: "ドラッグしてフォームの広さを調整"
|
resize-form: "ドラッグしてフォームの広さを調整"
|
||||||
new-message: "新しいメッセージがあります"
|
new-message: "新しいメッセージがあります"
|
||||||
@@ -356,6 +344,16 @@ common/views/components/poll-editor.vue:
|
|||||||
destroy: "アンケートを破棄"
|
destroy: "アンケートを破棄"
|
||||||
common/views/components/reaction-picker.vue:
|
common/views/components/reaction-picker.vue:
|
||||||
choose-reaction: "リアクションを選択"
|
choose-reaction: "リアクションを選択"
|
||||||
|
common/views/components/emoji-picker.vue:
|
||||||
|
custom-emoji: "カスタム絵文字"
|
||||||
|
people: "人"
|
||||||
|
animals-and-nature: "動物&自然"
|
||||||
|
food-and-drink: "食べ物&飲み物"
|
||||||
|
activity: "アクティビティ"
|
||||||
|
travel-and-places: "場所"
|
||||||
|
objects: "物"
|
||||||
|
symbols: "記号"
|
||||||
|
flags: "旗"
|
||||||
common/views/components/signin.vue:
|
common/views/components/signin.vue:
|
||||||
username: "ユーザー名"
|
username: "ユーザー名"
|
||||||
password: "パスワード"
|
password: "パスワード"
|
||||||
@@ -364,6 +362,8 @@ common/views/components/signin.vue:
|
|||||||
signin: "サインイン"
|
signin: "サインイン"
|
||||||
or: "または"
|
or: "または"
|
||||||
signin-with-twitter: "Twitterでログイン"
|
signin-with-twitter: "Twitterでログイン"
|
||||||
|
signin-with-github: "GitHubでログイン"
|
||||||
|
signin-with-discord: "Discordでログイン"
|
||||||
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
invitation-code: "招待コード"
|
invitation-code: "招待コード"
|
||||||
@@ -402,6 +402,20 @@ common/views/components/twitter-setting.vue:
|
|||||||
reconnect: "再接続する"
|
reconnect: "再接続する"
|
||||||
connect: "Twitterと接続する"
|
connect: "Twitterと接続する"
|
||||||
disconnect: "切断する"
|
disconnect: "切断する"
|
||||||
|
common/views/components/github-setting.vue:
|
||||||
|
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
|
||||||
|
connected-to: "次のGitHubアカウントに接続されています"
|
||||||
|
detail: "詳細..."
|
||||||
|
reconnect: "再接続する"
|
||||||
|
connect: "GitHubと接続する"
|
||||||
|
disconnect: "切断する"
|
||||||
|
common/views/components/discord-setting.vue:
|
||||||
|
description: "お使いのDiscordアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでDiscordアカウント情報が表示されるようになったり、Discordを用いた便利なサインインを利用できるようになります。"
|
||||||
|
connected-to: "次のDiscordアカウントに接続されています"
|
||||||
|
detail: "詳細..."
|
||||||
|
reconnect: "再接続する"
|
||||||
|
connect: "Discordと接続する"
|
||||||
|
disconnect: "切断する"
|
||||||
common/views/components/uploader.vue:
|
common/views/components/uploader.vue:
|
||||||
waiting: "待機中"
|
waiting: "待機中"
|
||||||
common/views/components/visibility-chooser.vue:
|
common/views/components/visibility-chooser.vue:
|
||||||
@@ -416,6 +430,25 @@ common/views/components/visibility-chooser.vue:
|
|||||||
common/views/components/trends.vue:
|
common/views/components/trends.vue:
|
||||||
count: "{}人が投稿"
|
count: "{}人が投稿"
|
||||||
empty: "トレンドなし"
|
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:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "確認中"
|
fetching: "確認中"
|
||||||
no-broadcasts: "お知らせはありません"
|
no-broadcasts: "お知らせはありません"
|
||||||
@@ -499,34 +532,12 @@ desktop/views/components/activity.vue:
|
|||||||
title: "アクティビティ"
|
title: "アクティビティ"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
desktop/views/components/calendar.vue:
|
desktop/views/components/calendar.vue:
|
||||||
title: "{1}年 {2}月"
|
title: "{year}年 {month}月"
|
||||||
prev: "前の月"
|
prev: "前の月"
|
||||||
next: "次の月"
|
next: "次の月"
|
||||||
go: "クリックして時間遡行"
|
go: "クリックして時間遡行"
|
||||||
desktop/views/components/charts.vue:
|
|
||||||
title: "チャート"
|
|
||||||
per-day: "1日ごと"
|
|
||||||
per-hour: "1時間ごと"
|
|
||||||
notes: "投稿"
|
|
||||||
users: "ユーザー"
|
|
||||||
drive: "ドライブ"
|
|
||||||
network: "ネットワーク"
|
|
||||||
charts:
|
|
||||||
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:
|
desktop/views/components/choose-file-from-drive-window.vue:
|
||||||
choose-file: "ファイル選択中"
|
chosen-files: "{count}ファイル選択中"
|
||||||
upload: "PCからドライブにファイルをアップロード"
|
upload: "PCからドライブにファイルをアップロード"
|
||||||
cancel: "キャンセル"
|
cancel: "キャンセル"
|
||||||
ok: "決定"
|
ok: "決定"
|
||||||
@@ -541,7 +552,6 @@ desktop/views/components/crop-window.vue:
|
|||||||
ok: "決定"
|
ok: "決定"
|
||||||
desktop/views/components/drive-window.vue:
|
desktop/views/components/drive-window.vue:
|
||||||
used: "使用中"
|
used: "使用中"
|
||||||
drive: "ドライブ"
|
|
||||||
desktop/views/components/drive.file.vue:
|
desktop/views/components/drive.file.vue:
|
||||||
avatar: "アイコン"
|
avatar: "アイコン"
|
||||||
banner: "バナー"
|
banner: "バナー"
|
||||||
@@ -571,11 +581,8 @@ desktop/views/components/drive.folder.vue:
|
|||||||
rename: "名前を変更"
|
rename: "名前を変更"
|
||||||
rename-folder: "フォルダ名の変更"
|
rename-folder: "フォルダ名の変更"
|
||||||
input-new-folder-name: "新しいフォルダ名を入力してください"
|
input-new-folder-name: "新しいフォルダ名を入力してください"
|
||||||
desktop/views/components/drive.nav-folder.vue:
|
|
||||||
drive: "ドライブ"
|
|
||||||
desktop/views/components/drive.vue:
|
desktop/views/components/drive.vue:
|
||||||
search: "検索"
|
search: "検索"
|
||||||
load-more: "もっと読み込む"
|
|
||||||
empty-draghover: "ドロップですか?いいですよ、ボクはカワイイですからね"
|
empty-draghover: "ドロップですか?いいですよ、ボクはカワイイですからね"
|
||||||
empty-drive: "ドライブには何もありません。"
|
empty-drive: "ドライブには何もありません。"
|
||||||
empty-drive-description: "右クリックして「ファイルをアップロード」を選んだり、ファイルをドラッグ&ドロップすることでもアップロードできます。"
|
empty-drive-description: "右クリックして「ファイルをアップロード」を選んだり、ファイルをドラッグ&ドロップすることでもアップロードできます。"
|
||||||
@@ -599,12 +606,6 @@ desktop/views/components/media-image.vue:
|
|||||||
desktop/views/components/media-video.vue:
|
desktop/views/components/media-video.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
desktop/views/components/follow-button.vue:
|
|
||||||
following: "フォロー中"
|
|
||||||
follow: "フォロー"
|
|
||||||
request-pending: "フォロー許可待ち"
|
|
||||||
follow-processing: "フォロー処理中"
|
|
||||||
follow-request: "フォロー申請"
|
|
||||||
desktop/views/components/followers-window.vue:
|
desktop/views/components/followers-window.vue:
|
||||||
followers: "{} のフォロワー"
|
followers: "{} のフォロワー"
|
||||||
desktop/views/components/followers.vue:
|
desktop/views/components/followers.vue:
|
||||||
@@ -633,14 +634,13 @@ desktop/views/components/messaging-room-window.vue:
|
|||||||
desktop/views/components/messaging-window.vue:
|
desktop/views/components/messaging-window.vue:
|
||||||
title: "メッセージ"
|
title: "メッセージ"
|
||||||
desktop/views/components/note-detail.vue:
|
desktop/views/components/note-detail.vue:
|
||||||
more: "会話をもっと読み込む"
|
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
location: "位置情報"
|
location: "位置情報"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
add-reaction: "リアクション"
|
add-reaction: "リアクション"
|
||||||
desktop/views/components/notes.note.vue:
|
desktop/views/components/note.vue:
|
||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
reply: "返信"
|
reply: "返信"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
@@ -651,9 +651,7 @@ desktop/views/components/notes.note.vue:
|
|||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "読み込みに失敗しました。"
|
error: "読み込みに失敗しました。"
|
||||||
retry: "リトライ"
|
retry: "リトライ"
|
||||||
load-more: "もっと読み込む"
|
|
||||||
desktop/views/components/notifications.vue:
|
desktop/views/components/notifications.vue:
|
||||||
more: "もっと見る"
|
|
||||||
empty: "ありません!"
|
empty: "ありません!"
|
||||||
desktop/views/components/post-form.vue:
|
desktop/views/components/post-form.vue:
|
||||||
add-visible-user: "+ユーザーを追加"
|
add-visible-user: "+ユーザーを追加"
|
||||||
@@ -700,14 +698,17 @@ desktop/views/components/renote-form.vue:
|
|||||||
failure: "Renoteに失敗しました"
|
failure: "Renoteに失敗しました"
|
||||||
desktop/views/components/renote-form-window.vue:
|
desktop/views/components/renote-form-window.vue:
|
||||||
title: "この投稿をRenoteしますか?"
|
title: "この投稿をRenoteしますか?"
|
||||||
|
desktop/views/pages/user-following-or-followers.vue:
|
||||||
|
following: "{user}のフォロー"
|
||||||
|
followers: "{user}のフォロワー"
|
||||||
desktop/views/components/settings-window.vue:
|
desktop/views/components/settings-window.vue:
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
desktop/views/components/settings.vue:
|
desktop/views/components/settings.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
notification: "通知"
|
notification: "通知"
|
||||||
apps: "アプリ"
|
apps: "アプリ"
|
||||||
mute: "ミュート"
|
mute-and-block: "ミュート/ブロック"
|
||||||
drive: "ドライブ"
|
blocking: "ブロック"
|
||||||
security: "セキュリティ"
|
security: "セキュリティ"
|
||||||
signin: "サインイン履歴"
|
signin: "サインイン履歴"
|
||||||
password: "パスワード"
|
password: "パスワード"
|
||||||
@@ -726,8 +727,12 @@ desktop/views/components/settings.vue:
|
|||||||
advanced: "詳細設定"
|
advanced: "詳細設定"
|
||||||
api-via-stream: "ストリームを経由したAPIリクエスト"
|
api-via-stream: "ストリームを経由したAPIリクエスト"
|
||||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||||
|
deck-nav: "デッキ内ナビゲーション"
|
||||||
|
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
|
||||||
|
deck-default: "デッキをデフォルトのUIにする"
|
||||||
display: "デザインと表示"
|
display: "デザインと表示"
|
||||||
customize: "ホームをカスタマイズ"
|
customize: "ホームをカスタマイズ"
|
||||||
|
wallpaper: "壁紙"
|
||||||
choose-wallpaper: "壁紙を選択"
|
choose-wallpaper: "壁紙を選択"
|
||||||
delete-wallpaper: "壁紙を削除"
|
delete-wallpaper: "壁紙を削除"
|
||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
@@ -739,17 +744,19 @@ desktop/views/components/settings.vue:
|
|||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
show-clock-on-header: "右上に時計を表示する"
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
|
timeline: "タイムライン"
|
||||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "マップの自動展開"
|
show-maps: "マップの自動展開"
|
||||||
|
deck-column-align: "デッキのカラムの位置"
|
||||||
|
deck-column-align-center: "中央"
|
||||||
|
deck-column-align-left: "左"
|
||||||
sound: "サウンド"
|
sound: "サウンド"
|
||||||
enable-sounds: "サウンドを有効にする"
|
enable-sounds: "サウンドを有効にする"
|
||||||
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
|
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
|
||||||
volume: "ボリューム"
|
volume: "ボリューム"
|
||||||
test: "テスト"
|
test: "テスト"
|
||||||
mobile: "モバイル"
|
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
|
||||||
language: "言語"
|
language: "言語"
|
||||||
pick-language: "言語を選択"
|
pick-language: "言語を選択"
|
||||||
recommended: "推奨"
|
recommended: "推奨"
|
||||||
@@ -785,6 +792,10 @@ desktop/views/components/settings.vue:
|
|||||||
tools: "ツール"
|
tools: "ツール"
|
||||||
task-manager: "タスクマネージャ"
|
task-manager: "タスクマネージャ"
|
||||||
third-parties: "サードパーティ"
|
third-parties: "サードパーティ"
|
||||||
|
navbar-position: "ナビゲーションバーの位置"
|
||||||
|
navbar-position-top: "上"
|
||||||
|
navbar-position-left: "左"
|
||||||
|
navbar-position-right: "右"
|
||||||
desktop/views/components/settings.2fa.vue:
|
desktop/views/components/settings.2fa.vue:
|
||||||
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
||||||
detail: "詳細..."
|
detail: "詳細..."
|
||||||
@@ -803,41 +814,44 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
success: "設定が完了しました!"
|
success: "設定が完了しました!"
|
||||||
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
||||||
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
||||||
desktop/views/components/settings.api.vue:
|
common/views/components/api-settings.vue:
|
||||||
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
||||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||||
regenerate-token: "トークンを再生成"
|
regenerate-token: "トークンを再生成"
|
||||||
token: "Token:"
|
token: "Token:"
|
||||||
enter-password: "パスワードを入力してください"
|
enter-password: "パスワードを入力してください"
|
||||||
|
console:
|
||||||
|
title: 'APIコンソール'
|
||||||
|
endpoint: 'エンドポイント'
|
||||||
|
parameter: 'パラメータ'
|
||||||
|
credential-info: "「i」パラメータは自動で付与されます。"
|
||||||
|
send: '送信'
|
||||||
|
sending: '応答待ち'
|
||||||
|
response: '結果'
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "連携しているアプリケーションはありません"
|
no-apps: "連携しているアプリケーションはありません"
|
||||||
desktop/views/components/settings.drive.vue:
|
common/views/components/drive-settings.vue:
|
||||||
max: "中"
|
max: "容量"
|
||||||
in-use: "使用中"
|
in-use: "使用中"
|
||||||
desktop/views/components/settings.mute.vue:
|
stats: "統計"
|
||||||
no-users: "ミュートしているユーザーはいません"
|
common/views/components/mute-and-block.vue:
|
||||||
desktop/views/components/settings.password.vue:
|
mute-and-block: "ミュートとブロック"
|
||||||
|
mute: "ミュート"
|
||||||
|
block: "ブロック"
|
||||||
|
no-muted-users: "ミュートしているユーザーはいません"
|
||||||
|
no-blocked-users: "ブロックしているユーザーはいません"
|
||||||
|
word-mute: "ワードミュート"
|
||||||
|
muted-words: "ミュートされたキーワード"
|
||||||
|
muted-words-description: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります"
|
||||||
|
save: "保存"
|
||||||
|
common/views/components/password-settings.vue:
|
||||||
reset: "パスワードを変更する"
|
reset: "パスワードを変更する"
|
||||||
enter-current-password: "現在のパスワードを入力してください"
|
enter-current-password: "現在のパスワードを入力してください"
|
||||||
enter-new-password: "新しいパスワードを入力してください"
|
enter-new-password: "新しいパスワードを入力してください"
|
||||||
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
||||||
not-match: "新しいパスワードが一致しません"
|
not-match: "新しいパスワードが一致しません"
|
||||||
changed: "パスワードを変更しました"
|
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:
|
desktop/views/components/sub-note-content.vue:
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
@@ -862,7 +876,6 @@ desktop/views/components/ui.header.vue:
|
|||||||
adjective: "さん"
|
adjective: "さん"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
drive: "ドライブ"
|
|
||||||
favorites: "お気に入り"
|
favorites: "お気に入り"
|
||||||
lists: "リスト"
|
lists: "リスト"
|
||||||
follow-requests: "フォロー申請"
|
follow-requests: "フォロー申請"
|
||||||
@@ -874,7 +887,6 @@ desktop/views/components/ui.header.account.vue:
|
|||||||
desktop/views/components/ui.header.nav.vue:
|
desktop/views/components/ui.header.nav.vue:
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
deck: "デッキ"
|
deck: "デッキ"
|
||||||
messaging: "メッセージ"
|
|
||||||
game: "ゲーム"
|
game: "ゲーム"
|
||||||
desktop/views/components/ui.header.notifications.vue:
|
desktop/views/components/ui.header.notifications.vue:
|
||||||
title: "通知"
|
title: "通知"
|
||||||
@@ -897,54 +909,153 @@ desktop/views/components/user-preview.vue:
|
|||||||
desktop/views/components/users-list.vue:
|
desktop/views/components/users-list.vue:
|
||||||
all: "すべて"
|
all: "すべて"
|
||||||
iknow: "知り合い"
|
iknow: "知り合い"
|
||||||
load-more: "もっと"
|
|
||||||
fetching: "読み込んでいます"
|
fetching: "読み込んでいます"
|
||||||
desktop/views/components/users-list-item.vue:
|
desktop/views/components/users-list-item.vue:
|
||||||
followed: "フォローされています"
|
followed: "フォローされています"
|
||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
desktop/views/pages/admin/admin.vue:
|
admin/views/index.vue:
|
||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
drive: "ドライブ"
|
instance: "インスタンス"
|
||||||
|
emoji: "カスタム絵文字"
|
||||||
|
moderators: "モデレーター"
|
||||||
users: "ユーザー"
|
users: "ユーザー"
|
||||||
update: "更新"
|
update: "更新"
|
||||||
desktop/views/pages/admin/admin.dashboard.vue:
|
announcements: "お知らせ"
|
||||||
|
hashtags: "ハッシュタグ"
|
||||||
|
back-to-misskey: "Misskeyに戻る"
|
||||||
|
admin/views/dashboard.vue:
|
||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
all-users: "全てのユーザー"
|
accounts: "アカウント"
|
||||||
original-users: "このインスタンスのユーザー"
|
notes: "投稿"
|
||||||
all-notes: "全ての投稿"
|
drive: "ドライブ"
|
||||||
original-notes: "このインスタンスの投稿"
|
instances: "インスタンス"
|
||||||
|
this-instance: "このインスタンス"
|
||||||
|
federated: "連合"
|
||||||
|
admin/views/instance.vue:
|
||||||
|
instance: "インスタンス"
|
||||||
|
instance-name: "インスタンス名"
|
||||||
|
instance-description: "インスタンスの紹介"
|
||||||
|
host: "ホスト"
|
||||||
|
banner-url: "バナー画像URL"
|
||||||
|
languages: "インスタンスの対象言語"
|
||||||
|
languages-desc: "スペースで区切って複数設定できます。"
|
||||||
|
maintainer-config: "管理者情報"
|
||||||
|
maintainer-name: "管理者名"
|
||||||
|
maintainer-email: "管理者の連絡先"
|
||||||
|
drive-config: "ドライブの設定"
|
||||||
|
cache-remote-files: "リモートのファイルをキャッシュする"
|
||||||
|
cache-remote-files-desc: "この設定を無効にすると、リモートファイルをキャッシュせず直リンクするようになります。そのためサーバーのストレージを節約できますが、プライバシー設定で直リンクを無効にしているユーザーにはファイルが見えなくなったり、サムネイルが生成されないので通信量が増加します。通常はこの設定をオンにしておくことをおすすめします。"
|
||||||
|
local-drive-capacity-mb: "ローカルユーザーひとりあたりのドライブ容量"
|
||||||
|
remote-drive-capacity-mb: "リモートユーザーひとりあたりのドライブ容量"
|
||||||
|
mb: "メガバイト単位"
|
||||||
|
recaptcha-config: "reCAPTCHAの設定"
|
||||||
|
recaptcha-info: "reCAPTCHAを有効にする場合、reCAPTCHAトークンを取得する必要があります。https://www.google.com/recaptcha/intro/ にアクセスしてトークンを取得してください。"
|
||||||
|
enable-recaptcha: "reCAPTCHAを有効にする"
|
||||||
|
recaptcha-site-key: "reCAPTCHA site key"
|
||||||
|
recaptcha-secret-key: "reCAPTCHA secret key"
|
||||||
|
twitter-integration-config: "Twitter連携の設定"
|
||||||
|
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。"
|
||||||
|
enable-twitter-integration: "Twitter連携を有効にする"
|
||||||
|
twitter-integration-consumer-key: "Consumer key"
|
||||||
|
twitter-integration-consumer-secret: "Consumer secret"
|
||||||
|
github-integration-config: "GitHub連携の設定"
|
||||||
|
github-integration-info: "コールバックURLは /api/gh/cb に設定します。"
|
||||||
|
enable-github-integration: "GitHub連携を有効にする"
|
||||||
|
github-integration-client-id: "Client ID"
|
||||||
|
github-integration-client-secret: "Client Secret"
|
||||||
|
discord-integration-config: "Discord連携の設定"
|
||||||
|
discord-integration-info: "コールバックURLは /api/dc/cb に設定します。"
|
||||||
|
enable-discord-integration: "Discord連携を有効にする"
|
||||||
|
discord-integration-client-id: "Client ID"
|
||||||
|
discord-integration-client-secret: "Client Secret"
|
||||||
|
proxy-account-config: "プロキシアカウントの設定"
|
||||||
|
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
|
||||||
|
proxy-account-username: "プロキシアカウントのユーザー名"
|
||||||
|
proxy-account-username-desc: "プロキシとして使用するアカウントのユーザー名を指定してください。"
|
||||||
|
proxy-account-warn: "アカウントは自動で作られないため、そのユーザー名のアカウントを予め作成しておく必要があります。"
|
||||||
|
max-note-text-length: "投稿の最大文字数"
|
||||||
|
disable-registration: "ユーザー登録の受付を停止する"
|
||||||
|
disable-local-timeline: "ローカルタイムラインを無効にする"
|
||||||
invite: "招待"
|
invite: "招待"
|
||||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
save: "保存"
|
||||||
|
saved: "保存しました"
|
||||||
|
admin/views/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: "通信量"
|
||||||
|
admin/views/users.vue:
|
||||||
suspend-user: "ユーザーの凍結"
|
suspend-user: "ユーザーの凍結"
|
||||||
suspend: "凍結"
|
suspend: "凍結"
|
||||||
suspended: "凍結しました"
|
suspended: "凍結しました"
|
||||||
desktop/views/pages/admin/admin.unsuspend-user.vue:
|
|
||||||
unsuspend-user: "ユーザーの凍結の解除"
|
unsuspend-user: "ユーザーの凍結の解除"
|
||||||
unsuspend: "凍結の解除"
|
unsuspend: "凍結の解除"
|
||||||
unsuspended: "凍結を解除しました"
|
unsuspended: "凍結を解除しました"
|
||||||
desktop/views/pages/admin/admin.verify-user.vue:
|
|
||||||
verify-user: "ユーザーの公式アカウント設定"
|
verify-user: "ユーザーの公式アカウント設定"
|
||||||
verify: "公式アカウントにする"
|
verify: "公式アカウントにする"
|
||||||
verified: "公式アカウントにしました"
|
verified: "公式アカウントにしました"
|
||||||
desktop/views/pages/admin/admin.unverify-user.vue:
|
|
||||||
unverify-user: "ユーザーの公式アカウント解除"
|
unverify-user: "ユーザーの公式アカウント解除"
|
||||||
unverify: "公式アカウントを解除する"
|
unverify: "公式アカウントを解除する"
|
||||||
unverified: "公式アカウントを解除しました"
|
unverified: "公式アカウントを解除しました"
|
||||||
desktop/views/pages/deck/deck.tl-column.vue:
|
admin/views/moderators.vue:
|
||||||
is-media-only: "メディア投稿のみ"
|
add-moderator:
|
||||||
is-media-view: "メディアビュー"
|
title: "モデレーターの登録"
|
||||||
edit: "オプション"
|
add: "登録"
|
||||||
desktop/views/pages/deck/deck.note.vue:
|
added: "モデレーターを登録しました"
|
||||||
reposted-by: "{}がRenote"
|
admin/views/emoji.vue:
|
||||||
private: "この投稿は非公開です"
|
add-emoji:
|
||||||
deleted: "この投稿は削除されました"
|
title: "絵文字の登録"
|
||||||
desktop/views/pages/stats/stats.vue:
|
name: "絵文字名"
|
||||||
all-users: "全てのユーザー"
|
name-desc: "a~z 0~9 _ の文字が使えます。"
|
||||||
original-users: "このインスタンスのユーザー"
|
aliases: "エイリアス"
|
||||||
all-notes: "全ての投稿"
|
aliases-desc: "スペースで区切って複数設定できます。"
|
||||||
original-notes: "このインスタンスの投稿"
|
url: "絵文字画像URL"
|
||||||
|
add: "追加"
|
||||||
|
info: "50KB以下のPNG画像をおすすめします。"
|
||||||
|
added: "絵文字を登録しました"
|
||||||
|
emojis:
|
||||||
|
title: "絵文字一覧"
|
||||||
|
update: "更新"
|
||||||
|
remove: "削除"
|
||||||
|
updated: "更新しました"
|
||||||
|
remove-emoji:
|
||||||
|
are-you-sure: "「$1」を削除しますか?"
|
||||||
|
removed: "削除しました"
|
||||||
|
admin/views/announcements.vue:
|
||||||
|
announcements: "お知らせ"
|
||||||
|
save: "保存"
|
||||||
|
remove: "削除"
|
||||||
|
add: "追加"
|
||||||
|
title: "タイトル"
|
||||||
|
text: "内容"
|
||||||
|
saved: "保存しました"
|
||||||
|
_remove:
|
||||||
|
are-you-sure: "「$1」を削除しますか?"
|
||||||
|
removed: "削除しました"
|
||||||
|
admin/views/hashtags.vue:
|
||||||
|
hided-tags: "Hidden Tags"
|
||||||
desktop/views/pages/welcome.vue:
|
desktop/views/pages/welcome.vue:
|
||||||
about: "詳しく..."
|
about: "詳しく..."
|
||||||
gotit: "わかった"
|
gotit: "わかった"
|
||||||
@@ -959,8 +1070,6 @@ desktop/views/pages/welcome.vue:
|
|||||||
info: "情報"
|
info: "情報"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
desktop/views/pages/favorites.vue:
|
|
||||||
more: "さらに読み込む"
|
|
||||||
desktop/views/pages/home-customize.vue:
|
desktop/views/pages/home-customize.vue:
|
||||||
title: "ホームのカスタマイズ"
|
title: "ホームのカスタマイズ"
|
||||||
desktop/views/pages/note.vue:
|
desktop/views/pages/note.vue:
|
||||||
@@ -973,11 +1082,11 @@ desktop/views/pages/selectdrive.vue:
|
|||||||
upload: "PCからドライブにファイルをアップロード"
|
upload: "PCからドライブにファイルをアップロード"
|
||||||
desktop/views/pages/search.vue:
|
desktop/views/pages/search.vue:
|
||||||
not-available: "検索機能はインスタンスの設定で無効になっています。"
|
not-available: "検索機能はインスタンスの設定で無効になっています。"
|
||||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
not-found: "「{q}」に関する投稿は見つかりませんでした。"
|
||||||
desktop/views/pages/share.vue:
|
desktop/views/pages/share.vue:
|
||||||
share-with: "{}で共有"
|
share-with: "{name}で共有"
|
||||||
desktop/views/pages/tag.vue:
|
desktop/views/pages/tag.vue:
|
||||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
|
||||||
desktop/views/pages/user-list.users.vue:
|
desktop/views/pages/user-list.users.vue:
|
||||||
users: "ユーザー"
|
users: "ユーザー"
|
||||||
add-user: "ユーザーを追加"
|
add-user: "ユーザーを追加"
|
||||||
@@ -990,12 +1099,6 @@ desktop/views/pages/user/user.friends.vue:
|
|||||||
title: "よく話すユーザー"
|
title: "よく話すユーザー"
|
||||||
loading: "読み込み中"
|
loading: "読み込み中"
|
||||||
no-users: "よく話すユーザーはいません"
|
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:
|
desktop/views/pages/user/user.photos.vue:
|
||||||
title: "フォト"
|
title: "フォト"
|
||||||
loading: "読み込み中"
|
loading: "読み込み中"
|
||||||
@@ -1008,6 +1111,9 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "ミュートする"
|
mute: "ミュートする"
|
||||||
muted: "ミュートしています"
|
muted: "ミュートしています"
|
||||||
unmute: "ミュート解除"
|
unmute: "ミュート解除"
|
||||||
|
block: "ブロックする"
|
||||||
|
unblock: "ブロック解除"
|
||||||
|
block-confirm: "このユーザーをブロックしますか?"
|
||||||
push-to-a-list: "リストに追加"
|
push-to-a-list: "リストに追加"
|
||||||
list-pushed: "{user}を{list}に追加しました。"
|
list-pushed: "{user}を{list}に追加しました。"
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.header.vue:
|
||||||
@@ -1015,6 +1121,10 @@ desktop/views/pages/user/user.header.vue:
|
|||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
followers: "フォロワー"
|
followers: "フォロワー"
|
||||||
is-bot: "このアカウントはBotです"
|
is-bot: "このアカウントはBotです"
|
||||||
|
years-old: "{age}歳"
|
||||||
|
year: "年"
|
||||||
|
month: "月"
|
||||||
|
day: "日"
|
||||||
desktop/views/pages/user/user.timeline.vue:
|
desktop/views/pages/user/user.timeline.vue:
|
||||||
default: "投稿"
|
default: "投稿"
|
||||||
with-replies: "投稿と返信"
|
with-replies: "投稿と返信"
|
||||||
@@ -1044,12 +1154,10 @@ desktop/views/widgets/users.vue:
|
|||||||
refresh: "他を見る"
|
refresh: "他を見る"
|
||||||
no-one: "いません!"
|
no-one: "いません!"
|
||||||
mobile/views/components/drive.vue:
|
mobile/views/components/drive.vue:
|
||||||
drive: "ドライブ"
|
|
||||||
used: "使用中"
|
used: "使用中"
|
||||||
folder-count: "フォルダ"
|
folder-count: "フォルダ"
|
||||||
count-separator: "、"
|
count-separator: "、"
|
||||||
file-count: "ファイル"
|
file-count: "ファイル"
|
||||||
load-more: "もっと読み込む"
|
|
||||||
nothing-in-drive: "ドライブには何もありません"
|
nothing-in-drive: "ドライブには何もありません"
|
||||||
folder-is-empty: "このフォルダは空です"
|
folder-is-empty: "このフォルダは空です"
|
||||||
prompt: "何をしますか?(数字を入力してください): <1 → ファイルをアップロード | 2 → ファイルをURLでアップロード | 3 → フォルダ作成 | 4 → このフォルダ名を変更 | 5 → このフォルダを移動 | 6 → このフォルダを削除>"
|
prompt: "何をしますか?(数字を入力してください): <1 → ファイルをアップロード | 2 → ファイルをURLでアップロード | 3 → フォルダ作成 | 4 → このフォルダ名を変更 | 5 → このフォルダを移動 | 6 → このフォルダを削除>"
|
||||||
@@ -1059,8 +1167,6 @@ mobile/views/components/drive.vue:
|
|||||||
root-move-alert: "現在いる場所はルートで、フォルダではないため移動はできません。移動したいフォルダに移動してからやってください。"
|
root-move-alert: "現在いる場所はルートで、フォルダではないため移動はできません。移動したいフォルダに移動してからやってください。"
|
||||||
url-prompt: "アップロードしたいファイルのURL"
|
url-prompt: "アップロードしたいファイルのURL"
|
||||||
uploading: "アップロードをリクエストしました。アップロードが完了するまで時間がかかる場合があります。"
|
uploading: "アップロードをリクエストしました。アップロードが完了するまで時間がかかる場合があります。"
|
||||||
mobile/views/components/drive-file-detail.vue:
|
|
||||||
rename: "名前を変更"
|
|
||||||
mobile/views/components/drive-file-chooser.vue:
|
mobile/views/components/drive-file-chooser.vue:
|
||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
mobile/views/components/drive-folder-chooser.vue:
|
mobile/views/components/drive-folder-chooser.vue:
|
||||||
@@ -1074,13 +1180,15 @@ mobile/views/components/drive.file-detail.vue:
|
|||||||
hash: "ハッシュ (md5)"
|
hash: "ハッシュ (md5)"
|
||||||
exif: "EXIF"
|
exif: "EXIF"
|
||||||
nsfw: "閲覧注意"
|
nsfw: "閲覧注意"
|
||||||
|
mark-as-sensitive: "閲覧注意に設定"
|
||||||
|
unmark-as-sensitive: "閲覧注意を解除"
|
||||||
mobile/views/components/media-image.vue:
|
mobile/views/components/media-image.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
mobile/views/components/media-video.vue:
|
mobile/views/components/media-video.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
mobile/views/components/follow-button.vue:
|
common/views/components/follow-button.vue:
|
||||||
following: "フォロー中"
|
following: "フォロー中"
|
||||||
follow: "フォロー"
|
follow: "フォロー"
|
||||||
request-pending: "フォロー許可待ち"
|
request-pending: "フォロー許可待ち"
|
||||||
@@ -1112,11 +1220,7 @@ mobile/views/components/note-sub.vue:
|
|||||||
admin: "admin"
|
admin: "admin"
|
||||||
bot: "bot"
|
bot: "bot"
|
||||||
cat: "cat"
|
cat: "cat"
|
||||||
mobile/views/components/notes.vue:
|
|
||||||
failed: "読み込みに失敗しました。"
|
|
||||||
retry: "リトライ"
|
|
||||||
mobile/views/components/notifications.vue:
|
mobile/views/components/notifications.vue:
|
||||||
more: "もっと見る"
|
|
||||||
empty: "ありません!"
|
empty: "ありません!"
|
||||||
mobile/views/components/post-form.vue:
|
mobile/views/components/post-form.vue:
|
||||||
add-visible-user: "ユーザーを追加"
|
add-visible-user: "ユーザーを追加"
|
||||||
@@ -1136,17 +1240,14 @@ mobile/views/components/sub-note-content.vue:
|
|||||||
poll: "アンケート"
|
poll: "アンケート"
|
||||||
mobile/views/components/timeline.vue:
|
mobile/views/components/timeline.vue:
|
||||||
empty: "投稿がありません"
|
empty: "投稿がありません"
|
||||||
load-more: "もっと"
|
|
||||||
mobile/views/components/ui.header.vue:
|
mobile/views/components/ui.header.vue:
|
||||||
welcome-back: "おかえりなさい、"
|
welcome-back: "おかえりなさい、"
|
||||||
adjective: "さん"
|
adjective: "さん"
|
||||||
mobile/views/components/ui.nav.vue:
|
mobile/views/components/ui.nav.vue:
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
messaging: "メッセージ"
|
|
||||||
follow-requests: "フォロー申請"
|
follow-requests: "フォロー申請"
|
||||||
search: "検索"
|
search: "検索"
|
||||||
drive: "ドライブ"
|
|
||||||
favorites: "お気に入り"
|
favorites: "お気に入り"
|
||||||
user-lists: "リスト"
|
user-lists: "リスト"
|
||||||
widgets: "ウィジェット"
|
widgets: "ウィジェット"
|
||||||
@@ -1158,25 +1259,20 @@ mobile/views/components/ui.nav.vue:
|
|||||||
mobile/views/components/user-timeline.vue:
|
mobile/views/components/user-timeline.vue:
|
||||||
no-notes: "このユーザーは投稿していないようです。"
|
no-notes: "このユーザーは投稿していないようです。"
|
||||||
no-notes-with-media: "メディア付き投稿はありません。"
|
no-notes-with-media: "メディア付き投稿はありません。"
|
||||||
load-more: "もっと"
|
|
||||||
mobile/views/components/users-list.vue:
|
mobile/views/components/users-list.vue:
|
||||||
all: "すべて"
|
all: "すべて"
|
||||||
known: "知り合い"
|
known: "知り合い"
|
||||||
load-more: "もっと"
|
|
||||||
mobile/views/pages/favorites.vue:
|
mobile/views/pages/favorites.vue:
|
||||||
title: "お気に入り"
|
title: "お気に入り"
|
||||||
mobile/views/pages/user-lists.vue:
|
mobile/views/pages/user-lists.vue:
|
||||||
title: "リスト"
|
title: "リスト"
|
||||||
enter-list-name: "リスト名を入力してください"
|
enter-list-name: "リスト名を入力してください"
|
||||||
mobile/views/pages/drive.vue:
|
|
||||||
drive: "ドライブ"
|
|
||||||
more: "もっと見る"
|
|
||||||
mobile/views/pages/signup.vue:
|
mobile/views/pages/signup.vue:
|
||||||
lets-start: "📦 始めましょう"
|
lets-start: "📦 始めましょう"
|
||||||
mobile/views/pages/followers.vue:
|
mobile/views/pages/followers.vue:
|
||||||
followers-of: "{}のフォロワー"
|
followers-of: "{name}のフォロワー"
|
||||||
mobile/views/pages/following.vue:
|
mobile/views/pages/following.vue:
|
||||||
following-of: "{}のフォロー"
|
following-of: "{name}のフォロー"
|
||||||
mobile/views/pages/home.vue:
|
mobile/views/pages/home.vue:
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
local: "ローカル"
|
local: "ローカル"
|
||||||
@@ -1185,7 +1281,7 @@ mobile/views/pages/home.vue:
|
|||||||
mentions: "あなた宛て"
|
mentions: "あなた宛て"
|
||||||
messages: "メッセージ"
|
messages: "メッセージ"
|
||||||
mobile/views/pages/tag.vue:
|
mobile/views/pages/tag.vue:
|
||||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
|
||||||
mobile/views/pages/welcome.vue:
|
mobile/views/pages/welcome.vue:
|
||||||
signup: "新規登録"
|
signup: "新規登録"
|
||||||
mobile/views/pages/widgets.vue:
|
mobile/views/pages/widgets.vue:
|
||||||
@@ -1196,11 +1292,7 @@ mobile/views/pages/widgets.vue:
|
|||||||
mobile/views/pages/widgets/activity.vue:
|
mobile/views/pages/widgets/activity.vue:
|
||||||
activity: "アクティビティ"
|
activity: "アクティビティ"
|
||||||
mobile/views/pages/share.vue:
|
mobile/views/pages/share.vue:
|
||||||
share-with: "{}で共有"
|
share-with: "{name}で共有"
|
||||||
mobile/views/pages/messaging.vue:
|
|
||||||
messaging: "メッセージ"
|
|
||||||
mobile/views/pages/messaging-room.vue:
|
|
||||||
messaging: "メッセージ"
|
|
||||||
mobile/views/pages/received-follow-requests.vue:
|
mobile/views/pages/received-follow-requests.vue:
|
||||||
title: "フォロー申請"
|
title: "フォロー申請"
|
||||||
accept: "承認"
|
accept: "承認"
|
||||||
@@ -1214,27 +1306,9 @@ mobile/views/pages/notifications.vue:
|
|||||||
read-all: "すべての通知を既読にしますか?"
|
read-all: "すべての通知を既読にしますか?"
|
||||||
mobile/views/pages/games/reversi.vue:
|
mobile/views/pages/games/reversi.vue:
|
||||||
reversi: "リバーシ"
|
reversi: "リバーシ"
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
|
||||||
title: "プロフィール"
|
|
||||||
name: "名前"
|
|
||||||
account: "アカウント"
|
|
||||||
location: "場所"
|
|
||||||
description: "自己紹介"
|
|
||||||
birthday: "誕生日"
|
|
||||||
avatar: "アイコン"
|
|
||||||
banner: "バナー"
|
|
||||||
is-cat: "このアカウントはCatです"
|
|
||||||
is-locked: "フォローを承認制にする"
|
|
||||||
advanced: "その他"
|
|
||||||
privacy: "プライバシー"
|
|
||||||
save: "保存"
|
|
||||||
saved: "プロフィールを保存しました"
|
|
||||||
uploading: "アップロード中"
|
|
||||||
upload-failed: "アップロードに失敗しました"
|
|
||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
search: "検索"
|
search: "検索"
|
||||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
not-found: "「{q}」に関する投稿は見つかりませんでした。"
|
||||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
|
||||||
mobile/views/pages/selectdrive.vue:
|
mobile/views/pages/selectdrive.vue:
|
||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
mobile/views/pages/settings.vue:
|
mobile/views/pages/settings.vue:
|
||||||
@@ -1273,6 +1347,14 @@ mobile/views/pages/settings.vue:
|
|||||||
twitter-connect: "Twitterアカウントに接続する"
|
twitter-connect: "Twitterアカウントに接続する"
|
||||||
twitter-reconnect: "再接続する"
|
twitter-reconnect: "再接続する"
|
||||||
twitter-disconnect: "切断する"
|
twitter-disconnect: "切断する"
|
||||||
|
github: "GitHub連携"
|
||||||
|
github-connect: "GitHubアカウントに接続する"
|
||||||
|
github-reconnect: "再接続する"
|
||||||
|
github-disconnect: "切断する"
|
||||||
|
discord: "Discord連携"
|
||||||
|
discord-connect: "Discordアカウントに接続する"
|
||||||
|
discord-reconnect: "再接続する"
|
||||||
|
discord-disconnect: "切断する"
|
||||||
update: "Misskey Update"
|
update: "Misskey Update"
|
||||||
version: "バージョン:"
|
version: "バージョン:"
|
||||||
latest-version: "最新のバージョン:"
|
latest-version: "最新のバージョン:"
|
||||||
@@ -1286,6 +1368,8 @@ mobile/views/pages/settings.vue:
|
|||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
sound: "サウンド"
|
sound: "サウンド"
|
||||||
enable-sounds: "サウンドを有効にする"
|
enable-sounds: "サウンドを有効にする"
|
||||||
|
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
|
||||||
|
password: "パスワード"
|
||||||
mobile/views/pages/user.vue:
|
mobile/views/pages/user.vue:
|
||||||
follows-you: "フォローされています"
|
follows-you: "フォローされています"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@@ -1295,8 +1379,11 @@ mobile/views/pages/user.vue:
|
|||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
media: "メディア"
|
media: "メディア"
|
||||||
is-suspended: "このユーザーは凍結されています。"
|
is-suspended: "このユーザーは凍結されています。"
|
||||||
is-remote: "このユーザーはリモートユーザーです。"
|
mute: "ミュート"
|
||||||
view-remote: "正確な情報を見る"
|
unmute: "ミュート解除"
|
||||||
|
block: "ブロック"
|
||||||
|
unblock: "ブロック解除"
|
||||||
|
years-old: "{age}歳"
|
||||||
mobile/views/pages/user/home.vue:
|
mobile/views/pages/user/home.vue:
|
||||||
recent-notes: "最近の投稿"
|
recent-notes: "最近の投稿"
|
||||||
images: "画像"
|
images: "画像"
|
||||||
@@ -1307,17 +1394,46 @@ mobile/views/pages/user/home.vue:
|
|||||||
followers-you-know: "知り合いのフォロワー"
|
followers-you-know: "知り合いのフォロワー"
|
||||||
last-used-at: "最終ログイン"
|
last-used-at: "最終ログイン"
|
||||||
mobile/views/pages/user/home.followers-you-know.vue:
|
mobile/views/pages/user/home.followers-you-know.vue:
|
||||||
loading: "読み込み中"
|
|
||||||
no-users: "知り合いのユーザーはいません"
|
no-users: "知り合いのユーザーはいません"
|
||||||
mobile/views/pages/user/home.friends.vue:
|
mobile/views/pages/user/home.friends.vue:
|
||||||
loading: "読み込み中"
|
|
||||||
no-users: "よく会話するユーザーはいません"
|
no-users: "よく会話するユーザーはいません"
|
||||||
mobile/views/pages/user/home.notes.vue:
|
mobile/views/pages/user/home.notes.vue:
|
||||||
loading: "読み込み中"
|
|
||||||
no-notes: "投稿はありません"
|
no-notes: "投稿はありません"
|
||||||
mobile/views/pages/user/home.photos.vue:
|
mobile/views/pages/user/home.photos.vue:
|
||||||
loading: "読み込み中"
|
|
||||||
no-photos: "写真はありません"
|
no-photos: "写真はありません"
|
||||||
|
deck:
|
||||||
|
widgets: "ウィジェット"
|
||||||
|
home: "ホーム"
|
||||||
|
local: "ローカル"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
|
hashtag: "ハッシュタグ"
|
||||||
|
global: "グローバル"
|
||||||
|
mentions: "あなた宛て"
|
||||||
|
direct: "ダイレクト投稿"
|
||||||
|
notifications: "通知"
|
||||||
|
list: "リスト"
|
||||||
|
swap-left: "左に移動"
|
||||||
|
swap-right: "右に移動"
|
||||||
|
swap-up: "上に移動"
|
||||||
|
swap-down: "下に移動"
|
||||||
|
remove: "カラムを削除"
|
||||||
|
add-column: "カラムを追加"
|
||||||
|
rename: "名前を変更"
|
||||||
|
stack-left: "左に重ねる"
|
||||||
|
pop-right: "右に出す"
|
||||||
|
deck/deck.tl-column.vue:
|
||||||
|
is-media-only: "メディア投稿のみ"
|
||||||
|
is-media-view: "メディアビュー"
|
||||||
|
edit: "オプション"
|
||||||
|
deck/deck.user-column.vue:
|
||||||
|
posts: "投稿"
|
||||||
|
following: "フォロー"
|
||||||
|
followers: "フォロワー"
|
||||||
|
images: "画像"
|
||||||
|
activity: "アクティビティ"
|
||||||
|
timeline: "タイムライン"
|
||||||
|
pinned-notes: "ピン留めされた投稿"
|
||||||
|
push-to-a-list: "リストに追加"
|
||||||
docs:
|
docs:
|
||||||
edit-this-page-on-github: "間違いや改善点を見つけましたか?"
|
edit-this-page-on-github: "間違いや改善点を見つけましたか?"
|
||||||
edit-this-page-on-github-link: "このページをGitHubで編集"
|
edit-this-page-on-github-link: "このページをGitHubで編集"
|
||||||
@@ -1342,3 +1458,29 @@ docs:
|
|||||||
description: "説明"
|
description: "説明"
|
||||||
dev/views/index.vue:
|
dev/views/index.vue:
|
||||||
manage-apps: "アプリの管理"
|
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: "通知を操作する。"
|
||||||
|
|||||||
@@ -25,13 +25,12 @@ common:
|
|||||||
application-authorization: "アプリの連携"
|
application-authorization: "アプリの連携"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||||
|
load-more: "もっと読み込む"
|
||||||
|
|
||||||
got-it: "わかった"
|
got-it: "わかった"
|
||||||
customization-tips:
|
customization-tips:
|
||||||
title: "カスタマイズのヒント"
|
title: "カスタマイズのヒント"
|
||||||
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
|
paragraph: "<p>ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。</p><p>一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。</p><p>ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。</p><p>カスタマイズを終了するには、右上の「完了」をクリックします。</p>"
|
||||||
paragraph2: "一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。"
|
|
||||||
paragraph3: "ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。"
|
|
||||||
paragraph4: "カスタマイズを終了するには、右上の「完了」をクリックします。"
|
|
||||||
gotit: "Got it!"
|
gotit: "Got it!"
|
||||||
notification:
|
notification:
|
||||||
file-uploaded: "ファイルがアップロードされました"
|
file-uploaded: "ファイルがアップロードされました"
|
||||||
@@ -55,6 +54,8 @@ common:
|
|||||||
month-and-day: "{month}月 {day}日"
|
month-and-day: "{month}月 {day}日"
|
||||||
|
|
||||||
trash: "ゴミ箱"
|
trash: "ゴミ箱"
|
||||||
|
drive: "ドライブ"
|
||||||
|
messaging: "トーク"
|
||||||
|
|
||||||
weekday-short:
|
weekday-short:
|
||||||
sunday: "日"
|
sunday: "日"
|
||||||
@@ -95,6 +96,9 @@ common:
|
|||||||
specified: "ダイレクト"
|
specified: "ダイレクト"
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
private: "非公開"
|
private: "非公開"
|
||||||
|
local-public: "公開(ローカルのみ)"
|
||||||
|
local-home: "ホーム(ローカルのみ)"
|
||||||
|
local-followers: "フォロワー(ローカルのみ)"
|
||||||
|
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "今どうしてる?"
|
a: "今どうしてる?"
|
||||||
@@ -119,22 +123,32 @@ common:
|
|||||||
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
||||||
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
||||||
show-full-acct: "ユーザー名のホストを省略しない"
|
show-full-acct: "ユーザー名のホストを省略しない"
|
||||||
|
show-via: "viaを表示する"
|
||||||
reduce-motion: "UIの動きを減らす"
|
reduce-motion: "UIの動きを減らす"
|
||||||
this-setting-is-this-device-only: "このデバイスのみ"
|
this-setting-is-this-device-only: "このデバイスのみ"
|
||||||
|
use-os-default-emojis: "OS標準の絵文字を使用"
|
||||||
|
|
||||||
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
||||||
|
|
||||||
|
is-remote-user: "このユーザー情報はコピーです。"
|
||||||
|
is-remote-post: "この投稿情報はコピーです。"
|
||||||
|
view-on-remote: "正確な情報を見る"
|
||||||
|
|
||||||
|
error:
|
||||||
|
title: '問題が発生しました'
|
||||||
|
retry: 'やり直す'
|
||||||
|
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "引き分け"
|
drawn: "引き分け"
|
||||||
my-turn: "あなたのターンです"
|
my-turn: "あなたのターンです"
|
||||||
opponent-turn: "相手のターンです"
|
opponent-turn: "相手のターンです"
|
||||||
turn-of: "{}のターンです"
|
turn-of: "{name}のターンです"
|
||||||
past-turn-of: "{}のターン"
|
past-turn-of: "{name}のターン"
|
||||||
won: "{}の勝ち"
|
won: "{name}の勝ち"
|
||||||
black: "黒"
|
black: "黒"
|
||||||
white: "白"
|
white: "白"
|
||||||
total: "合計"
|
total: "合計"
|
||||||
this-turn: "{}ターン目"
|
this-turn: "{count}ターン目"
|
||||||
|
|
||||||
widgets:
|
widgets:
|
||||||
analog-clock: "アナログ時計"
|
analog-clock: "アナログ時計"
|
||||||
@@ -154,36 +168,17 @@ common:
|
|||||||
users: "おすすめユーザー"
|
users: "おすすめユーザー"
|
||||||
polls: "アンケート"
|
polls: "アンケート"
|
||||||
post-form: "投稿フォーム"
|
post-form: "投稿フォーム"
|
||||||
messaging: "メッセージ"
|
|
||||||
server: "サーバー情報"
|
server: "サーバー情報"
|
||||||
donation: "寄付のお願い"
|
donation: "寄付のお願い"
|
||||||
nav: "ナビゲーション"
|
nav: "ナビゲーション"
|
||||||
tips: "ヒント"
|
tips: "ヒント"
|
||||||
hashtags: "ハッシュタグ"
|
hashtags: "ハッシュタグ"
|
||||||
|
|
||||||
deck:
|
dev: "アプリの作成に失敗しました。再度お試しください。"
|
||||||
widgets: "ウィジェット"
|
ai-chan-kawaii: "藍ちゃかわいい"
|
||||||
home: "ホーム"
|
|
||||||
local: "ローカル"
|
|
||||||
hybrid: "ソーシャル"
|
|
||||||
hashtag: "ハッシュタグ"
|
|
||||||
global: "グローバル"
|
|
||||||
mentions: "あなた宛て"
|
|
||||||
direct: "ダイレクト投稿"
|
|
||||||
notifications: "通知"
|
|
||||||
list: "リスト"
|
|
||||||
swap-left: "左に移動"
|
|
||||||
swap-right: "右に移動"
|
|
||||||
swap-up: "上に移動"
|
|
||||||
swap-down: "下に移動"
|
|
||||||
remove: "カラムを削除"
|
|
||||||
add-column: "カラムを追加"
|
|
||||||
rename: "名前を変更"
|
|
||||||
stack-left: "左に重ねる"
|
|
||||||
pop-right: "右に出す"
|
|
||||||
|
|
||||||
auth/views/form.vue:
|
auth/views/form.vue:
|
||||||
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
|
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
|
||||||
permission-ask: "このアプリは次の権限を要求しています:"
|
permission-ask: "このアプリは次の権限を要求しています:"
|
||||||
account-read: "アカウントの情報を見る。"
|
account-read: "アカウントの情報を見る。"
|
||||||
account-write: "アカウントの情報を操作する。"
|
account-write: "アカウントの情報を操作する。"
|
||||||
@@ -332,7 +327,6 @@ common/views/components/messaging.vue:
|
|||||||
|
|
||||||
common/views/components/messaging-room.vue:
|
common/views/components/messaging-room.vue:
|
||||||
empty: "このユーザーと話したことはありません"
|
empty: "このユーザーと話したことはありません"
|
||||||
more: "もっと読む"
|
|
||||||
no-history: "これより過去の履歴はありません"
|
no-history: "これより過去の履歴はありません"
|
||||||
resize-form: "ドラッグしてフォームの広さを調整"
|
resize-form: "ドラッグしてフォームの広さを調整"
|
||||||
new-message: "新しいメッセージがあります"
|
new-message: "新しいメッセージがあります"
|
||||||
@@ -388,6 +382,17 @@ common/views/components/poll-editor.vue:
|
|||||||
common/views/components/reaction-picker.vue:
|
common/views/components/reaction-picker.vue:
|
||||||
choose-reaction: "リアクションを選択"
|
choose-reaction: "リアクションを選択"
|
||||||
|
|
||||||
|
common/views/components/emoji-picker.vue:
|
||||||
|
custom-emoji: "カスタム絵文字"
|
||||||
|
people: "人"
|
||||||
|
animals-and-nature: "動物&自然"
|
||||||
|
food-and-drink: "食べ物&飲み物"
|
||||||
|
activity: "アクティビティ"
|
||||||
|
travel-and-places: "場所"
|
||||||
|
objects: "物"
|
||||||
|
symbols: "記号"
|
||||||
|
flags: "旗"
|
||||||
|
|
||||||
common/views/components/signin.vue:
|
common/views/components/signin.vue:
|
||||||
username: "ユーザー名"
|
username: "ユーザー名"
|
||||||
password: "パスワード"
|
password: "パスワード"
|
||||||
@@ -396,6 +401,8 @@ common/views/components/signin.vue:
|
|||||||
signin: "サインイン"
|
signin: "サインイン"
|
||||||
or: "または"
|
or: "または"
|
||||||
signin-with-twitter: "Twitterでログイン"
|
signin-with-twitter: "Twitterでログイン"
|
||||||
|
signin-with-github: "GitHubでログイン"
|
||||||
|
signin-with-discord: "Discordでログイン"
|
||||||
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||||
|
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
@@ -439,6 +446,22 @@ common/views/components/twitter-setting.vue:
|
|||||||
connect: "Twitterと接続する"
|
connect: "Twitterと接続する"
|
||||||
disconnect: "切断する"
|
disconnect: "切断する"
|
||||||
|
|
||||||
|
common/views/components/github-setting.vue:
|
||||||
|
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
|
||||||
|
connected-to: "次のGitHubアカウントに接続されています"
|
||||||
|
detail: "詳細..."
|
||||||
|
reconnect: "再接続する"
|
||||||
|
connect: "GitHubと接続する"
|
||||||
|
disconnect: "切断する"
|
||||||
|
|
||||||
|
common/views/components/discord-setting.vue:
|
||||||
|
description: "お使いのDiscordアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでDiscordアカウント情報が表示されるようになったり、Discordを用いた便利なサインインを利用できるようになります。"
|
||||||
|
connected-to: "次のDiscordアカウントに接続されています"
|
||||||
|
detail: "詳細..."
|
||||||
|
reconnect: "再接続する"
|
||||||
|
connect: "Discordと接続する"
|
||||||
|
disconnect: "切断する"
|
||||||
|
|
||||||
common/views/components/uploader.vue:
|
common/views/components/uploader.vue:
|
||||||
waiting: "待機中"
|
waiting: "待機中"
|
||||||
|
|
||||||
@@ -451,11 +474,34 @@ common/views/components/visibility-chooser.vue:
|
|||||||
specified: "ダイレクト"
|
specified: "ダイレクト"
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
private: "非公開"
|
private: "非公開"
|
||||||
|
local-public: "公開(ローカルのみ)"
|
||||||
|
local-home: "ホーム(ローカルのみ)"
|
||||||
|
local-followers: "フォロワー(ローカルのみ)"
|
||||||
|
|
||||||
common/views/components/trends.vue:
|
common/views/components/trends.vue:
|
||||||
count: "{}人が投稿"
|
count: "{}人が投稿"
|
||||||
empty: "トレンドなし"
|
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:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "確認中"
|
fetching: "確認中"
|
||||||
no-broadcasts: "お知らせはありません"
|
no-broadcasts: "お知らせはありません"
|
||||||
@@ -553,36 +599,13 @@ desktop/views/components/activity.vue:
|
|||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
|
|
||||||
desktop/views/components/calendar.vue:
|
desktop/views/components/calendar.vue:
|
||||||
title: "{1}年 {2}月"
|
title: "{year}年 {month}月"
|
||||||
prev: "前の月"
|
prev: "前の月"
|
||||||
next: "次の月"
|
next: "次の月"
|
||||||
go: "クリックして時間遡行"
|
go: "クリックして時間遡行"
|
||||||
|
|
||||||
desktop/views/components/charts.vue:
|
|
||||||
title: "チャート"
|
|
||||||
per-day: "1日ごと"
|
|
||||||
per-hour: "1時間ごと"
|
|
||||||
notes: "投稿"
|
|
||||||
users: "ユーザー"
|
|
||||||
drive: "ドライブ"
|
|
||||||
network: "ネットワーク"
|
|
||||||
charts:
|
|
||||||
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:
|
desktop/views/components/choose-file-from-drive-window.vue:
|
||||||
choose-file: "ファイル選択中"
|
chosen-files: "{count}ファイル選択中"
|
||||||
upload: "PCからドライブにファイルをアップロード"
|
upload: "PCからドライブにファイルをアップロード"
|
||||||
cancel: "キャンセル"
|
cancel: "キャンセル"
|
||||||
ok: "決定"
|
ok: "決定"
|
||||||
@@ -600,7 +623,6 @@ desktop/views/components/crop-window.vue:
|
|||||||
|
|
||||||
desktop/views/components/drive-window.vue:
|
desktop/views/components/drive-window.vue:
|
||||||
used: "使用中"
|
used: "使用中"
|
||||||
drive: "ドライブ"
|
|
||||||
|
|
||||||
desktop/views/components/drive.file.vue:
|
desktop/views/components/drive.file.vue:
|
||||||
avatar: "アイコン"
|
avatar: "アイコン"
|
||||||
@@ -633,12 +655,8 @@ desktop/views/components/drive.folder.vue:
|
|||||||
rename-folder: "フォルダ名の変更"
|
rename-folder: "フォルダ名の変更"
|
||||||
input-new-folder-name: "新しいフォルダ名を入力してください"
|
input-new-folder-name: "新しいフォルダ名を入力してください"
|
||||||
|
|
||||||
desktop/views/components/drive.nav-folder.vue:
|
|
||||||
drive: "ドライブ"
|
|
||||||
|
|
||||||
desktop/views/components/drive.vue:
|
desktop/views/components/drive.vue:
|
||||||
search: "検索"
|
search: "検索"
|
||||||
load-more: "もっと読み込む"
|
|
||||||
empty-draghover: "ドロップですか?いいですよ、ボクはカワイイですからね"
|
empty-draghover: "ドロップですか?いいですよ、ボクはカワイイですからね"
|
||||||
empty-drive: "ドライブには何もありません。"
|
empty-drive: "ドライブには何もありません。"
|
||||||
empty-drive-description: "右クリックして「ファイルをアップロード」を選んだり、ファイルをドラッグ&ドロップすることでもアップロードできます。"
|
empty-drive-description: "右クリックして「ファイルをアップロード」を選んだり、ファイルをドラッグ&ドロップすることでもアップロードできます。"
|
||||||
@@ -665,13 +683,6 @@ desktop/views/components/media-video.vue:
|
|||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
|
|
||||||
desktop/views/components/follow-button.vue:
|
|
||||||
following: "フォロー中"
|
|
||||||
follow: "フォロー"
|
|
||||||
request-pending: "フォロー許可待ち"
|
|
||||||
follow-processing: "フォロー処理中"
|
|
||||||
follow-request: "フォロー申請"
|
|
||||||
|
|
||||||
desktop/views/components/followers-window.vue:
|
desktop/views/components/followers-window.vue:
|
||||||
followers: "{} のフォロワー"
|
followers: "{} のフォロワー"
|
||||||
|
|
||||||
@@ -710,7 +721,6 @@ desktop/views/components/messaging-window.vue:
|
|||||||
title: "メッセージ"
|
title: "メッセージ"
|
||||||
|
|
||||||
desktop/views/components/note-detail.vue:
|
desktop/views/components/note-detail.vue:
|
||||||
more: "会話をもっと読み込む"
|
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
@@ -718,7 +728,7 @@ desktop/views/components/note-detail.vue:
|
|||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
add-reaction: "リアクション"
|
add-reaction: "リアクション"
|
||||||
|
|
||||||
desktop/views/components/notes.note.vue:
|
desktop/views/components/note.vue:
|
||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
reply: "返信"
|
reply: "返信"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
@@ -730,10 +740,8 @@ desktop/views/components/notes.note.vue:
|
|||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "読み込みに失敗しました。"
|
error: "読み込みに失敗しました。"
|
||||||
retry: "リトライ"
|
retry: "リトライ"
|
||||||
load-more: "もっと読み込む"
|
|
||||||
|
|
||||||
desktop/views/components/notifications.vue:
|
desktop/views/components/notifications.vue:
|
||||||
more: "もっと見る"
|
|
||||||
empty: "ありません!"
|
empty: "ありません!"
|
||||||
|
|
||||||
desktop/views/components/post-form.vue:
|
desktop/views/components/post-form.vue:
|
||||||
@@ -759,6 +767,7 @@ desktop/views/components/post-form.vue:
|
|||||||
create-poll: "アンケートを作成"
|
create-poll: "アンケートを作成"
|
||||||
text-remain: "残り{}文字"
|
text-remain: "残り{}文字"
|
||||||
recent-tags: "最近"
|
recent-tags: "最近"
|
||||||
|
local-only-message: "この投稿はローカルにのみ公開されます"
|
||||||
click-to-tagging: "クリックでタグ付け"
|
click-to-tagging: "クリックでタグ付け"
|
||||||
visibility: "公開範囲"
|
visibility: "公開範囲"
|
||||||
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||||
@@ -786,6 +795,10 @@ desktop/views/components/renote-form.vue:
|
|||||||
desktop/views/components/renote-form-window.vue:
|
desktop/views/components/renote-form-window.vue:
|
||||||
title: "この投稿をRenoteしますか?"
|
title: "この投稿をRenoteしますか?"
|
||||||
|
|
||||||
|
desktop/views/pages/user-following-or-followers.vue:
|
||||||
|
following: "{user}のフォロー"
|
||||||
|
followers: "{user}のフォロワー"
|
||||||
|
|
||||||
desktop/views/components/settings-window.vue:
|
desktop/views/components/settings-window.vue:
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
|
|
||||||
@@ -793,8 +806,9 @@ desktop/views/components/settings.vue:
|
|||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
notification: "通知"
|
notification: "通知"
|
||||||
apps: "アプリ"
|
apps: "アプリ"
|
||||||
mute: "ミュート"
|
tags: "ハッシュタグ"
|
||||||
drive: "ドライブ"
|
mute-and-block: "ミュート/ブロック"
|
||||||
|
blocking: "ブロック"
|
||||||
security: "セキュリティ"
|
security: "セキュリティ"
|
||||||
signin: "サインイン履歴"
|
signin: "サインイン履歴"
|
||||||
password: "パスワード"
|
password: "パスワード"
|
||||||
@@ -814,9 +828,13 @@ desktop/views/components/settings.vue:
|
|||||||
advanced: "詳細設定"
|
advanced: "詳細設定"
|
||||||
api-via-stream: "ストリームを経由したAPIリクエスト"
|
api-via-stream: "ストリームを経由したAPIリクエスト"
|
||||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||||
|
deck-nav: "デッキ内ナビゲーション"
|
||||||
|
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
|
||||||
|
deck-default: "デッキをデフォルトのUIにする"
|
||||||
|
|
||||||
display: "デザインと表示"
|
display: "デザインと表示"
|
||||||
customize: "ホームをカスタマイズ"
|
customize: "ホームをカスタマイズ"
|
||||||
|
wallpaper: "壁紙"
|
||||||
choose-wallpaper: "壁紙を選択"
|
choose-wallpaper: "壁紙を選択"
|
||||||
delete-wallpaper: "壁紙を削除"
|
delete-wallpaper: "壁紙を削除"
|
||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
@@ -828,10 +846,15 @@ desktop/views/components/settings.vue:
|
|||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
show-clock-on-header: "右上に時計を表示する"
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
|
timeline: "タイムライン"
|
||||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "マップの自動展開"
|
show-maps: "マップの自動展開"
|
||||||
|
remain-deleted-note: "削除された投稿を表示し続ける"
|
||||||
|
deck-column-align: "デッキのカラムの位置"
|
||||||
|
deck-column-align-center: "中央"
|
||||||
|
deck-column-align-left: "左"
|
||||||
|
|
||||||
sound: "サウンド"
|
sound: "サウンド"
|
||||||
enable-sounds: "サウンドを有効にする"
|
enable-sounds: "サウンドを有効にする"
|
||||||
@@ -839,9 +862,6 @@ desktop/views/components/settings.vue:
|
|||||||
volume: "ボリューム"
|
volume: "ボリューム"
|
||||||
test: "テスト"
|
test: "テスト"
|
||||||
|
|
||||||
mobile: "モバイル"
|
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
|
||||||
|
|
||||||
language: "言語"
|
language: "言語"
|
||||||
pick-language: "言語を選択"
|
pick-language: "言語を選択"
|
||||||
recommended: "推奨"
|
recommended: "推奨"
|
||||||
@@ -883,6 +903,11 @@ desktop/views/components/settings.vue:
|
|||||||
task-manager: "タスクマネージャ"
|
task-manager: "タスクマネージャ"
|
||||||
third-parties: "サードパーティ"
|
third-parties: "サードパーティ"
|
||||||
|
|
||||||
|
navbar-position: "ナビゲーションバーの位置"
|
||||||
|
navbar-position-top: "上"
|
||||||
|
navbar-position-left: "左"
|
||||||
|
navbar-position-right: "右"
|
||||||
|
|
||||||
desktop/views/components/settings.2fa.vue:
|
desktop/views/components/settings.2fa.vue:
|
||||||
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
||||||
detail: "詳細..."
|
detail: "詳細..."
|
||||||
@@ -902,25 +927,42 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
||||||
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
||||||
|
|
||||||
desktop/views/components/settings.api.vue:
|
common/views/components/api-settings.vue:
|
||||||
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
||||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||||
regenerate-token: "トークンを再生成"
|
regenerate-token: "トークンを再生成"
|
||||||
token: "Token:"
|
token: "Token:"
|
||||||
enter-password: "パスワードを入力してください"
|
enter-password: "パスワードを入力してください"
|
||||||
|
console:
|
||||||
|
title: 'APIコンソール'
|
||||||
|
endpoint: 'エンドポイント'
|
||||||
|
parameter: 'パラメータ'
|
||||||
|
credential-info: "「i」パラメータは自動で付与されます。"
|
||||||
|
send: '送信'
|
||||||
|
sending: '応答待ち'
|
||||||
|
response: '結果'
|
||||||
|
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "連携しているアプリケーションはありません"
|
no-apps: "連携しているアプリケーションはありません"
|
||||||
|
|
||||||
desktop/views/components/settings.drive.vue:
|
common/views/components/drive-settings.vue:
|
||||||
max: "中"
|
max: "容量"
|
||||||
in-use: "使用中"
|
in-use: "使用中"
|
||||||
|
stats: "統計"
|
||||||
|
|
||||||
desktop/views/components/settings.mute.vue:
|
common/views/components/mute-and-block.vue:
|
||||||
no-users: "ミュートしているユーザーはいません"
|
mute-and-block: "ミュートとブロック"
|
||||||
|
mute: "ミュート"
|
||||||
|
block: "ブロック"
|
||||||
|
no-muted-users: "ミュートしているユーザーはいません"
|
||||||
|
no-blocked-users: "ブロックしているユーザーはいません"
|
||||||
|
word-mute: "ワードミュート"
|
||||||
|
muted-words: "ミュートされたキーワード"
|
||||||
|
muted-words-description: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります"
|
||||||
|
save: "保存"
|
||||||
|
|
||||||
desktop/views/components/settings.password.vue:
|
common/views/components/password-settings.vue:
|
||||||
reset: "パスワードを変更する"
|
reset: "パスワードを変更する"
|
||||||
enter-current-password: "現在のパスワードを入力してください"
|
enter-current-password: "現在のパスワードを入力してください"
|
||||||
enter-new-password: "新しいパスワードを入力してください"
|
enter-new-password: "新しいパスワードを入力してください"
|
||||||
@@ -928,22 +970,6 @@ desktop/views/components/settings.password.vue:
|
|||||||
not-match: "新しいパスワードが一致しません"
|
not-match: "新しいパスワードが一致しません"
|
||||||
changed: "パスワードを変更しました"
|
changed: "パスワードを変更しました"
|
||||||
|
|
||||||
desktop/views/components/settings.profile.vue:
|
|
||||||
avatar: "アイコン"
|
|
||||||
choice-avatar: "画像を選択"
|
|
||||||
name: "名前"
|
|
||||||
location: "場所"
|
|
||||||
description: "自己紹介"
|
|
||||||
birthday: "誕生日"
|
|
||||||
save: "保存"
|
|
||||||
locked-account: "アカウントの保護"
|
|
||||||
is-locked: "フォローを承認制にする"
|
|
||||||
careful-bot: "Botからのフォローだけ承認制にする"
|
|
||||||
other: "その他"
|
|
||||||
is-bot: "このアカウントはBotです"
|
|
||||||
is-cat: "このアカウントはCatです"
|
|
||||||
profile-updated: "プロフィールを更新しました"
|
|
||||||
|
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
@@ -972,7 +998,6 @@ desktop/views/components/ui.header.vue:
|
|||||||
|
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
drive: "ドライブ"
|
|
||||||
favorites: "お気に入り"
|
favorites: "お気に入り"
|
||||||
lists: "リスト"
|
lists: "リスト"
|
||||||
follow-requests: "フォロー申請"
|
follow-requests: "フォロー申請"
|
||||||
@@ -985,7 +1010,6 @@ desktop/views/components/ui.header.account.vue:
|
|||||||
desktop/views/components/ui.header.nav.vue:
|
desktop/views/components/ui.header.nav.vue:
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
deck: "デッキ"
|
deck: "デッキ"
|
||||||
messaging: "メッセージ"
|
|
||||||
game: "ゲーム"
|
game: "ゲーム"
|
||||||
|
|
||||||
desktop/views/components/ui.header.notifications.vue:
|
desktop/views/components/ui.header.notifications.vue:
|
||||||
@@ -1015,7 +1039,6 @@ desktop/views/components/user-preview.vue:
|
|||||||
desktop/views/components/users-list.vue:
|
desktop/views/components/users-list.vue:
|
||||||
all: "すべて"
|
all: "すべて"
|
||||||
iknow: "知り合い"
|
iknow: "知り合い"
|
||||||
load-more: "もっと"
|
|
||||||
fetching: "読み込んでいます"
|
fetching: "読み込んでいます"
|
||||||
|
|
||||||
desktop/views/components/users-list-item.vue:
|
desktop/views/components/users-list-item.vue:
|
||||||
@@ -1025,55 +1048,155 @@ desktop/views/components/window.vue:
|
|||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
|
|
||||||
desktop/views/pages/admin/admin.vue:
|
admin/views/index.vue:
|
||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
drive: "ドライブ"
|
instance: "インスタンス"
|
||||||
|
emoji: "カスタム絵文字"
|
||||||
|
moderators: "モデレーター"
|
||||||
users: "ユーザー"
|
users: "ユーザー"
|
||||||
update: "更新"
|
federation: "連合"
|
||||||
|
announcements: "お知らせ"
|
||||||
|
hashtags: "ハッシュタグ"
|
||||||
|
back-to-misskey: "Misskeyに戻る"
|
||||||
|
|
||||||
desktop/views/pages/admin/admin.dashboard.vue:
|
admin/views/dashboard.vue:
|
||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
all-users: "全てのユーザー"
|
accounts: "アカウント"
|
||||||
original-users: "このインスタンスのユーザー"
|
notes: "投稿"
|
||||||
all-notes: "全ての投稿"
|
drive: "ドライブ"
|
||||||
original-notes: "このインスタンスの投稿"
|
instances: "インスタンス"
|
||||||
invite: "招待"
|
this-instance: "このインスタンス"
|
||||||
|
federated: "連合"
|
||||||
|
|
||||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
admin/views/instance.vue:
|
||||||
|
instance: "インスタンス"
|
||||||
|
instance-name: "インスタンス名"
|
||||||
|
instance-description: "インスタンスの紹介"
|
||||||
|
host: "ホスト"
|
||||||
|
banner-url: "バナー画像URL"
|
||||||
|
languages: "インスタンスの対象言語"
|
||||||
|
languages-desc: "スペースで区切って複数設定できます。"
|
||||||
|
maintainer-config: "管理者情報"
|
||||||
|
maintainer-name: "管理者名"
|
||||||
|
maintainer-email: "管理者の連絡先"
|
||||||
|
drive-config: "ドライブの設定"
|
||||||
|
cache-remote-files: "リモートのファイルをキャッシュする"
|
||||||
|
cache-remote-files-desc: "この設定を無効にすると、リモートファイルをキャッシュせず直リンクするようになります。そのためサーバーのストレージを節約できますが、プライバシー設定で直リンクを無効にしているユーザーにはファイルが見えなくなったり、サムネイルが生成されないので通信量が増加します。通常はこの設定をオンにしておくことをおすすめします。"
|
||||||
|
local-drive-capacity-mb: "ローカルユーザーひとりあたりのドライブ容量"
|
||||||
|
remote-drive-capacity-mb: "リモートユーザーひとりあたりのドライブ容量"
|
||||||
|
mb: "メガバイト単位"
|
||||||
|
recaptcha-config: "reCAPTCHAの設定"
|
||||||
|
recaptcha-info: "reCAPTCHAを有効にする場合、reCAPTCHAトークンを取得する必要があります。https://www.google.com/recaptcha/intro/ にアクセスしてトークンを取得してください。"
|
||||||
|
enable-recaptcha: "reCAPTCHAを有効にする"
|
||||||
|
recaptcha-site-key: "reCAPTCHA site key"
|
||||||
|
recaptcha-secret-key: "reCAPTCHA secret key"
|
||||||
|
twitter-integration-config: "Twitter連携の設定"
|
||||||
|
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。"
|
||||||
|
enable-twitter-integration: "Twitter連携を有効にする"
|
||||||
|
twitter-integration-consumer-key: "Consumer key"
|
||||||
|
twitter-integration-consumer-secret: "Consumer secret"
|
||||||
|
github-integration-config: "GitHub連携の設定"
|
||||||
|
github-integration-info: "コールバックURLは /api/gh/cb に設定します。"
|
||||||
|
enable-github-integration: "GitHub連携を有効にする"
|
||||||
|
github-integration-client-id: "Client ID"
|
||||||
|
github-integration-client-secret: "Client Secret"
|
||||||
|
discord-integration-config: "Discord連携の設定"
|
||||||
|
discord-integration-info: "コールバックURLは /api/dc/cb に設定します。"
|
||||||
|
enable-discord-integration: "Discord連携を有効にする"
|
||||||
|
discord-integration-client-id: "Client ID"
|
||||||
|
discord-integration-client-secret: "Client Secret"
|
||||||
|
proxy-account-config: "プロキシアカウントの設定"
|
||||||
|
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
|
||||||
|
proxy-account-username: "プロキシアカウントのユーザー名"
|
||||||
|
proxy-account-username-desc: "プロキシとして使用するアカウントのユーザー名を指定してください。"
|
||||||
|
proxy-account-warn: "アカウントは自動で作られないため、そのユーザー名のアカウントを予め作成しておく必要があります。"
|
||||||
|
max-note-text-length: "投稿の最大文字数"
|
||||||
|
disable-registration: "ユーザー登録の受付を停止する"
|
||||||
|
disable-local-timeline: "ローカルタイムラインを無効にする"
|
||||||
|
invite: "招待"
|
||||||
|
save: "保存"
|
||||||
|
saved: "保存しました"
|
||||||
|
|
||||||
|
admin/views/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: "通信量"
|
||||||
|
|
||||||
|
admin/views/users.vue:
|
||||||
suspend-user: "ユーザーの凍結"
|
suspend-user: "ユーザーの凍結"
|
||||||
suspend: "凍結"
|
suspend: "凍結"
|
||||||
suspended: "凍結しました"
|
suspended: "凍結しました"
|
||||||
|
|
||||||
desktop/views/pages/admin/admin.unsuspend-user.vue:
|
|
||||||
unsuspend-user: "ユーザーの凍結の解除"
|
unsuspend-user: "ユーザーの凍結の解除"
|
||||||
unsuspend: "凍結の解除"
|
unsuspend: "凍結の解除"
|
||||||
unsuspended: "凍結を解除しました"
|
unsuspended: "凍結を解除しました"
|
||||||
|
|
||||||
desktop/views/pages/admin/admin.verify-user.vue:
|
|
||||||
verify-user: "ユーザーの公式アカウント設定"
|
verify-user: "ユーザーの公式アカウント設定"
|
||||||
verify: "公式アカウントにする"
|
verify: "公式アカウントにする"
|
||||||
verified: "公式アカウントにしました"
|
verified: "公式アカウントにしました"
|
||||||
|
|
||||||
desktop/views/pages/admin/admin.unverify-user.vue:
|
|
||||||
unverify-user: "ユーザーの公式アカウント解除"
|
unverify-user: "ユーザーの公式アカウント解除"
|
||||||
unverify: "公式アカウントを解除する"
|
unverify: "公式アカウントを解除する"
|
||||||
unverified: "公式アカウントを解除しました"
|
unverified: "公式アカウントを解除しました"
|
||||||
|
|
||||||
desktop/views/pages/deck/deck.tl-column.vue:
|
admin/views/moderators.vue:
|
||||||
is-media-only: "メディア投稿のみ"
|
add-moderator:
|
||||||
is-media-view: "メディアビュー"
|
title: "モデレーターの登録"
|
||||||
edit: "オプション"
|
add: "登録"
|
||||||
|
added: "モデレーターを登録しました"
|
||||||
|
|
||||||
desktop/views/pages/deck/deck.note.vue:
|
admin/views/emoji.vue:
|
||||||
reposted-by: "{}がRenote"
|
add-emoji:
|
||||||
private: "この投稿は非公開です"
|
title: "絵文字の登録"
|
||||||
deleted: "この投稿は削除されました"
|
name: "絵文字名"
|
||||||
|
name-desc: "a~z 0~9 _ の文字が使えます。"
|
||||||
|
aliases: "エイリアス"
|
||||||
|
aliases-desc: "スペースで区切って複数設定できます。"
|
||||||
|
url: "絵文字画像URL"
|
||||||
|
add: "追加"
|
||||||
|
info: "50KB以下のPNG画像をおすすめします。"
|
||||||
|
added: "絵文字を登録しました"
|
||||||
|
emojis:
|
||||||
|
title: "絵文字一覧"
|
||||||
|
update: "更新"
|
||||||
|
remove: "削除"
|
||||||
|
updated: "更新しました"
|
||||||
|
remove-emoji:
|
||||||
|
are-you-sure: "「$1」を削除しますか?"
|
||||||
|
removed: "削除しました"
|
||||||
|
|
||||||
desktop/views/pages/stats/stats.vue:
|
admin/views/announcements.vue:
|
||||||
all-users: "全てのユーザー"
|
announcements: "お知らせ"
|
||||||
original-users: "このインスタンスのユーザー"
|
save: "保存"
|
||||||
all-notes: "全ての投稿"
|
remove: "削除"
|
||||||
original-notes: "このインスタンスの投稿"
|
add: "追加"
|
||||||
|
title: "タイトル"
|
||||||
|
text: "内容"
|
||||||
|
saved: "保存しました"
|
||||||
|
_remove:
|
||||||
|
are-you-sure: "「$1」を削除しますか?"
|
||||||
|
removed: "削除しました"
|
||||||
|
|
||||||
|
admin/views/hashtags.vue:
|
||||||
|
hided-tags: "Hidden Tags"
|
||||||
|
|
||||||
desktop/views/pages/welcome.vue:
|
desktop/views/pages/welcome.vue:
|
||||||
about: "詳しく..."
|
about: "詳しく..."
|
||||||
@@ -1091,9 +1214,6 @@ desktop/views/pages/welcome.vue:
|
|||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
|
|
||||||
desktop/views/pages/favorites.vue:
|
|
||||||
more: "さらに読み込む"
|
|
||||||
|
|
||||||
desktop/views/pages/home-customize.vue:
|
desktop/views/pages/home-customize.vue:
|
||||||
title: "ホームのカスタマイズ"
|
title: "ホームのカスタマイズ"
|
||||||
|
|
||||||
@@ -1109,13 +1229,13 @@ desktop/views/pages/selectdrive.vue:
|
|||||||
|
|
||||||
desktop/views/pages/search.vue:
|
desktop/views/pages/search.vue:
|
||||||
not-available: "検索機能はインスタンスの設定で無効になっています。"
|
not-available: "検索機能はインスタンスの設定で無効になっています。"
|
||||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
not-found: "「{q}」に関する投稿は見つかりませんでした。"
|
||||||
|
|
||||||
desktop/views/pages/share.vue:
|
desktop/views/pages/share.vue:
|
||||||
share-with: "{}で共有"
|
share-with: "{name}で共有"
|
||||||
|
|
||||||
desktop/views/pages/tag.vue:
|
desktop/views/pages/tag.vue:
|
||||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
|
||||||
|
|
||||||
desktop/views/pages/user-list.users.vue:
|
desktop/views/pages/user-list.users.vue:
|
||||||
users: "ユーザー"
|
users: "ユーザー"
|
||||||
@@ -1132,14 +1252,6 @@ desktop/views/pages/user/user.friends.vue:
|
|||||||
loading: "読み込み中"
|
loading: "読み込み中"
|
||||||
no-users: "よく話すユーザーはいません"
|
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:
|
desktop/views/pages/user/user.photos.vue:
|
||||||
title: "フォト"
|
title: "フォト"
|
||||||
loading: "読み込み中"
|
loading: "読み込み中"
|
||||||
@@ -1153,6 +1265,9 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "ミュートする"
|
mute: "ミュートする"
|
||||||
muted: "ミュートしています"
|
muted: "ミュートしています"
|
||||||
unmute: "ミュート解除"
|
unmute: "ミュート解除"
|
||||||
|
block: "ブロックする"
|
||||||
|
unblock: "ブロック解除"
|
||||||
|
block-confirm: "このユーザーをブロックしますか?"
|
||||||
push-to-a-list: "リストに追加"
|
push-to-a-list: "リストに追加"
|
||||||
list-pushed: "{user}を{list}に追加しました。"
|
list-pushed: "{user}を{list}に追加しました。"
|
||||||
|
|
||||||
@@ -1161,6 +1276,10 @@ desktop/views/pages/user/user.header.vue:
|
|||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
followers: "フォロワー"
|
followers: "フォロワー"
|
||||||
is-bot: "このアカウントはBotです"
|
is-bot: "このアカウントはBotです"
|
||||||
|
years-old: "{age}歳"
|
||||||
|
year: "年"
|
||||||
|
month: "月"
|
||||||
|
day: "日"
|
||||||
|
|
||||||
desktop/views/pages/user/user.timeline.vue:
|
desktop/views/pages/user/user.timeline.vue:
|
||||||
default: "投稿"
|
default: "投稿"
|
||||||
@@ -1199,12 +1318,10 @@ desktop/views/widgets/users.vue:
|
|||||||
no-one: "いません!"
|
no-one: "いません!"
|
||||||
|
|
||||||
mobile/views/components/drive.vue:
|
mobile/views/components/drive.vue:
|
||||||
drive: "ドライブ"
|
|
||||||
used: "使用中"
|
used: "使用中"
|
||||||
folder-count: "フォルダ"
|
folder-count: "フォルダ"
|
||||||
count-separator: "、"
|
count-separator: "、"
|
||||||
file-count: "ファイル"
|
file-count: "ファイル"
|
||||||
load-more: "もっと読み込む"
|
|
||||||
nothing-in-drive: "ドライブには何もありません"
|
nothing-in-drive: "ドライブには何もありません"
|
||||||
folder-is-empty: "このフォルダは空です"
|
folder-is-empty: "このフォルダは空です"
|
||||||
prompt: "何をしますか?(数字を入力してください): <1 → ファイルをアップロード | 2 → ファイルをURLでアップロード | 3 → フォルダ作成 | 4 → このフォルダ名を変更 | 5 → このフォルダを移動 | 6 → このフォルダを削除>"
|
prompt: "何をしますか?(数字を入力してください): <1 → ファイルをアップロード | 2 → ファイルをURLでアップロード | 3 → フォルダ作成 | 4 → このフォルダ名を変更 | 5 → このフォルダを移動 | 6 → このフォルダを削除>"
|
||||||
@@ -1215,9 +1332,6 @@ mobile/views/components/drive.vue:
|
|||||||
url-prompt: "アップロードしたいファイルのURL"
|
url-prompt: "アップロードしたいファイルのURL"
|
||||||
uploading: "アップロードをリクエストしました。アップロードが完了するまで時間がかかる場合があります。"
|
uploading: "アップロードをリクエストしました。アップロードが完了するまで時間がかかる場合があります。"
|
||||||
|
|
||||||
mobile/views/components/drive-file-detail.vue:
|
|
||||||
rename: "名前を変更"
|
|
||||||
|
|
||||||
mobile/views/components/drive-file-chooser.vue:
|
mobile/views/components/drive-file-chooser.vue:
|
||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
|
|
||||||
@@ -1234,6 +1348,8 @@ mobile/views/components/drive.file-detail.vue:
|
|||||||
hash: "ハッシュ (md5)"
|
hash: "ハッシュ (md5)"
|
||||||
exif: "EXIF"
|
exif: "EXIF"
|
||||||
nsfw: "閲覧注意"
|
nsfw: "閲覧注意"
|
||||||
|
mark-as-sensitive: "閲覧注意に設定"
|
||||||
|
unmark-as-sensitive: "閲覧注意を解除"
|
||||||
|
|
||||||
mobile/views/components/media-image.vue:
|
mobile/views/components/media-image.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
@@ -1243,7 +1359,7 @@ mobile/views/components/media-video.vue:
|
|||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
|
|
||||||
mobile/views/components/follow-button.vue:
|
common/views/components/follow-button.vue:
|
||||||
following: "フォロー中"
|
following: "フォロー中"
|
||||||
follow: "フォロー"
|
follow: "フォロー"
|
||||||
request-pending: "フォロー許可待ち"
|
request-pending: "フォロー許可待ち"
|
||||||
@@ -1281,12 +1397,7 @@ mobile/views/components/note-sub.vue:
|
|||||||
bot: "bot"
|
bot: "bot"
|
||||||
cat: "cat"
|
cat: "cat"
|
||||||
|
|
||||||
mobile/views/components/notes.vue:
|
|
||||||
failed: "読み込みに失敗しました。"
|
|
||||||
retry: "リトライ"
|
|
||||||
|
|
||||||
mobile/views/components/notifications.vue:
|
mobile/views/components/notifications.vue:
|
||||||
more: "もっと見る"
|
|
||||||
empty: "ありません!"
|
empty: "ありません!"
|
||||||
|
|
||||||
mobile/views/components/post-form.vue:
|
mobile/views/components/post-form.vue:
|
||||||
@@ -1309,7 +1420,6 @@ mobile/views/components/sub-note-content.vue:
|
|||||||
|
|
||||||
mobile/views/components/timeline.vue:
|
mobile/views/components/timeline.vue:
|
||||||
empty: "投稿がありません"
|
empty: "投稿がありません"
|
||||||
load-more: "もっと"
|
|
||||||
|
|
||||||
mobile/views/components/ui.header.vue:
|
mobile/views/components/ui.header.vue:
|
||||||
welcome-back: "おかえりなさい、"
|
welcome-back: "おかえりなさい、"
|
||||||
@@ -1318,10 +1428,8 @@ mobile/views/components/ui.header.vue:
|
|||||||
mobile/views/components/ui.nav.vue:
|
mobile/views/components/ui.nav.vue:
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
messaging: "メッセージ"
|
|
||||||
follow-requests: "フォロー申請"
|
follow-requests: "フォロー申請"
|
||||||
search: "検索"
|
search: "検索"
|
||||||
drive: "ドライブ"
|
|
||||||
favorites: "お気に入り"
|
favorites: "お気に入り"
|
||||||
user-lists: "リスト"
|
user-lists: "リスト"
|
||||||
widgets: "ウィジェット"
|
widgets: "ウィジェット"
|
||||||
@@ -1334,12 +1442,10 @@ mobile/views/components/ui.nav.vue:
|
|||||||
mobile/views/components/user-timeline.vue:
|
mobile/views/components/user-timeline.vue:
|
||||||
no-notes: "このユーザーは投稿していないようです。"
|
no-notes: "このユーザーは投稿していないようです。"
|
||||||
no-notes-with-media: "メディア付き投稿はありません。"
|
no-notes-with-media: "メディア付き投稿はありません。"
|
||||||
load-more: "もっと"
|
|
||||||
|
|
||||||
mobile/views/components/users-list.vue:
|
mobile/views/components/users-list.vue:
|
||||||
all: "すべて"
|
all: "すべて"
|
||||||
known: "知り合い"
|
known: "知り合い"
|
||||||
load-more: "もっと"
|
|
||||||
|
|
||||||
mobile/views/pages/favorites.vue:
|
mobile/views/pages/favorites.vue:
|
||||||
title: "お気に入り"
|
title: "お気に入り"
|
||||||
@@ -1348,18 +1454,14 @@ mobile/views/pages/user-lists.vue:
|
|||||||
title: "リスト"
|
title: "リスト"
|
||||||
enter-list-name: "リスト名を入力してください"
|
enter-list-name: "リスト名を入力してください"
|
||||||
|
|
||||||
mobile/views/pages/drive.vue:
|
|
||||||
drive: "ドライブ"
|
|
||||||
more: "もっと見る"
|
|
||||||
|
|
||||||
mobile/views/pages/signup.vue:
|
mobile/views/pages/signup.vue:
|
||||||
lets-start: "📦 始めましょう"
|
lets-start: "📦 始めましょう"
|
||||||
|
|
||||||
mobile/views/pages/followers.vue:
|
mobile/views/pages/followers.vue:
|
||||||
followers-of: "{}のフォロワー"
|
followers-of: "{name}のフォロワー"
|
||||||
|
|
||||||
mobile/views/pages/following.vue:
|
mobile/views/pages/following.vue:
|
||||||
following-of: "{}のフォロー"
|
following-of: "{name}のフォロー"
|
||||||
|
|
||||||
mobile/views/pages/home.vue:
|
mobile/views/pages/home.vue:
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
@@ -1370,7 +1472,7 @@ mobile/views/pages/home.vue:
|
|||||||
messages: "メッセージ"
|
messages: "メッセージ"
|
||||||
|
|
||||||
mobile/views/pages/tag.vue:
|
mobile/views/pages/tag.vue:
|
||||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
|
||||||
|
|
||||||
mobile/views/pages/welcome.vue:
|
mobile/views/pages/welcome.vue:
|
||||||
signup: "新規登録"
|
signup: "新規登録"
|
||||||
@@ -1385,13 +1487,7 @@ mobile/views/pages/widgets/activity.vue:
|
|||||||
activity: "アクティビティ"
|
activity: "アクティビティ"
|
||||||
|
|
||||||
mobile/views/pages/share.vue:
|
mobile/views/pages/share.vue:
|
||||||
share-with: "{}で共有"
|
share-with: "{name}で共有"
|
||||||
|
|
||||||
mobile/views/pages/messaging.vue:
|
|
||||||
messaging: "メッセージ"
|
|
||||||
|
|
||||||
mobile/views/pages/messaging-room.vue:
|
|
||||||
messaging: "メッセージ"
|
|
||||||
|
|
||||||
mobile/views/pages/received-follow-requests.vue:
|
mobile/views/pages/received-follow-requests.vue:
|
||||||
title: "フォロー申請"
|
title: "フォロー申請"
|
||||||
@@ -1410,29 +1506,9 @@ mobile/views/pages/notifications.vue:
|
|||||||
mobile/views/pages/games/reversi.vue:
|
mobile/views/pages/games/reversi.vue:
|
||||||
reversi: "リバーシ"
|
reversi: "リバーシ"
|
||||||
|
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
|
||||||
title: "プロフィール"
|
|
||||||
name: "名前"
|
|
||||||
account: "アカウント"
|
|
||||||
location: "場所"
|
|
||||||
description: "自己紹介"
|
|
||||||
birthday: "誕生日"
|
|
||||||
avatar: "アイコン"
|
|
||||||
banner: "バナー"
|
|
||||||
is-cat: "このアカウントはCatです"
|
|
||||||
is-locked: "フォローを承認制にする"
|
|
||||||
careful-bot: "Botからのフォローだけ承認制にする"
|
|
||||||
advanced: "その他"
|
|
||||||
privacy: "プライバシー"
|
|
||||||
save: "保存"
|
|
||||||
saved: "プロフィールを保存しました"
|
|
||||||
uploading: "アップロード中"
|
|
||||||
upload-failed: "アップロードに失敗しました"
|
|
||||||
|
|
||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
search: "検索"
|
search: "検索"
|
||||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
not-found: "「{q}」に関する投稿は見つかりませんでした。"
|
||||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
|
||||||
|
|
||||||
mobile/views/pages/selectdrive.vue:
|
mobile/views/pages/selectdrive.vue:
|
||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
@@ -1473,6 +1549,14 @@ mobile/views/pages/settings.vue:
|
|||||||
twitter-connect: "Twitterアカウントに接続する"
|
twitter-connect: "Twitterアカウントに接続する"
|
||||||
twitter-reconnect: "再接続する"
|
twitter-reconnect: "再接続する"
|
||||||
twitter-disconnect: "切断する"
|
twitter-disconnect: "切断する"
|
||||||
|
github: "GitHub連携"
|
||||||
|
github-connect: "GitHubアカウントに接続する"
|
||||||
|
github-reconnect: "再接続する"
|
||||||
|
github-disconnect: "切断する"
|
||||||
|
discord: "Discord連携"
|
||||||
|
discord-connect: "Discordアカウントに接続する"
|
||||||
|
discord-reconnect: "再接続する"
|
||||||
|
discord-disconnect: "切断する"
|
||||||
update: "Misskey Update"
|
update: "Misskey Update"
|
||||||
version: "バージョン:"
|
version: "バージョン:"
|
||||||
latest-version: "最新のバージョン:"
|
latest-version: "最新のバージョン:"
|
||||||
@@ -1486,6 +1570,8 @@ mobile/views/pages/settings.vue:
|
|||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
sound: "サウンド"
|
sound: "サウンド"
|
||||||
enable-sounds: "サウンドを有効にする"
|
enable-sounds: "サウンドを有効にする"
|
||||||
|
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
|
||||||
|
password: "パスワード"
|
||||||
|
|
||||||
mobile/views/pages/user.vue:
|
mobile/views/pages/user.vue:
|
||||||
follows-you: "フォローされています"
|
follows-you: "フォローされています"
|
||||||
@@ -1496,8 +1582,11 @@ mobile/views/pages/user.vue:
|
|||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
media: "メディア"
|
media: "メディア"
|
||||||
is-suspended: "このユーザーは凍結されています。"
|
is-suspended: "このユーザーは凍結されています。"
|
||||||
is-remote: "このユーザーはリモートユーザーです。"
|
mute: "ミュート"
|
||||||
view-remote: "正確な情報を見る"
|
unmute: "ミュート解除"
|
||||||
|
block: "ブロック"
|
||||||
|
unblock: "ブロック解除"
|
||||||
|
years-old: "{age}歳"
|
||||||
|
|
||||||
mobile/views/pages/user/home.vue:
|
mobile/views/pages/user/home.vue:
|
||||||
recent-notes: "最近の投稿"
|
recent-notes: "最近の投稿"
|
||||||
@@ -1510,21 +1599,53 @@ mobile/views/pages/user/home.vue:
|
|||||||
last-used-at: "最終ログイン"
|
last-used-at: "最終ログイン"
|
||||||
|
|
||||||
mobile/views/pages/user/home.followers-you-know.vue:
|
mobile/views/pages/user/home.followers-you-know.vue:
|
||||||
loading: "読み込み中"
|
|
||||||
no-users: "知り合いのユーザーはいません"
|
no-users: "知り合いのユーザーはいません"
|
||||||
|
|
||||||
mobile/views/pages/user/home.friends.vue:
|
mobile/views/pages/user/home.friends.vue:
|
||||||
loading: "読み込み中"
|
|
||||||
no-users: "よく会話するユーザーはいません"
|
no-users: "よく会話するユーザーはいません"
|
||||||
|
|
||||||
mobile/views/pages/user/home.notes.vue:
|
mobile/views/pages/user/home.notes.vue:
|
||||||
loading: "読み込み中"
|
|
||||||
no-notes: "投稿はありません"
|
no-notes: "投稿はありません"
|
||||||
|
|
||||||
mobile/views/pages/user/home.photos.vue:
|
mobile/views/pages/user/home.photos.vue:
|
||||||
loading: "読み込み中"
|
|
||||||
no-photos: "写真はありません"
|
no-photos: "写真はありません"
|
||||||
|
|
||||||
|
deck:
|
||||||
|
widgets: "ウィジェット"
|
||||||
|
home: "ホーム"
|
||||||
|
local: "ローカル"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
|
hashtag: "ハッシュタグ"
|
||||||
|
global: "グローバル"
|
||||||
|
mentions: "あなた宛て"
|
||||||
|
direct: "ダイレクト投稿"
|
||||||
|
notifications: "通知"
|
||||||
|
list: "リスト"
|
||||||
|
swap-left: "左に移動"
|
||||||
|
swap-right: "右に移動"
|
||||||
|
swap-up: "上に移動"
|
||||||
|
swap-down: "下に移動"
|
||||||
|
remove: "カラムを削除"
|
||||||
|
add-column: "カラムを追加"
|
||||||
|
rename: "名前を変更"
|
||||||
|
stack-left: "左に重ねる"
|
||||||
|
pop-right: "右に出す"
|
||||||
|
|
||||||
|
deck/deck.tl-column.vue:
|
||||||
|
is-media-only: "メディア投稿のみ"
|
||||||
|
is-media-view: "メディアビュー"
|
||||||
|
edit: "オプション"
|
||||||
|
|
||||||
|
deck/deck.user-column.vue:
|
||||||
|
posts: "投稿"
|
||||||
|
following: "フォロー"
|
||||||
|
followers: "フォロワー"
|
||||||
|
images: "画像"
|
||||||
|
activity: "アクティビティ"
|
||||||
|
timeline: "タイムライン"
|
||||||
|
pinned-notes: "ピン留めされた投稿"
|
||||||
|
push-to-a-list: "リストに追加"
|
||||||
|
|
||||||
docs:
|
docs:
|
||||||
edit-this-page-on-github: "間違いや改善点を見つけましたか?"
|
edit-this-page-on-github: "間違いや改善点を見つけましたか?"
|
||||||
edit-this-page-on-github-link: "このページをGitHubで編集"
|
edit-this-page-on-github-link: "このページをGitHubで編集"
|
||||||
@@ -1551,3 +1672,31 @@ docs:
|
|||||||
|
|
||||||
dev/views/index.vue:
|
dev/views/index.vue:
|
||||||
manage-apps: "アプリの管理"
|
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
@@ -25,13 +25,11 @@ common:
|
|||||||
application-authorization: "앱의 연계"
|
application-authorization: "앱의 연계"
|
||||||
close: "닫기"
|
close: "닫기"
|
||||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||||
|
load-more: "もっと読み込む"
|
||||||
got-it: "알았습니다"
|
got-it: "알았습니다"
|
||||||
customization-tips:
|
customization-tips:
|
||||||
title: "사용자 정의 팁"
|
title: "사용자 정의 팁"
|
||||||
paragraph1: "홈 정의는 위젯을 추가 / 삭제하거나 드래그 앤 드롭하여 정렬 할 수 있습니다."
|
paragraph: "<p>ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。</p><p>一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。</p><p>ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。</p><p>カスタマイズを終了するには、右上の「完了」をクリックします。</p>"
|
||||||
paragraph2: "일부 위젯은 <strong>오른쪽 클릭</strong> 하여 모양을 변경할 수 있습니다."
|
|
||||||
paragraph3: "위젯을 삭제하려면 헤더 <strong>\"휴지통\"</strong> 라고 쓰여진 영역으로 끌어다 놓습니다."
|
|
||||||
paragraph4: "사용자 정의를 종료하려면 오른쪽 상단의 '완료' 를 클릭합니다."
|
|
||||||
gotit: "Got it!"
|
gotit: "Got it!"
|
||||||
notification:
|
notification:
|
||||||
file-uploaded: "파일이 업로드되었습니다"
|
file-uploaded: "파일이 업로드되었습니다"
|
||||||
@@ -54,6 +52,8 @@ common:
|
|||||||
years_ago: "{}년전"
|
years_ago: "{}년전"
|
||||||
month-and-day: "{month}월 {day}일"
|
month-and-day: "{month}월 {day}일"
|
||||||
trash: "휴지통"
|
trash: "휴지통"
|
||||||
|
drive: "ドライブ"
|
||||||
|
messaging: "トーク"
|
||||||
weekday-short:
|
weekday-short:
|
||||||
sunday: "일"
|
sunday: "일"
|
||||||
monday: "월"
|
monday: "월"
|
||||||
@@ -112,20 +112,28 @@ common:
|
|||||||
always-show-nsfw: "항상 열람주의 미디어를 표시"
|
always-show-nsfw: "항상 열람주의 미디어를 표시"
|
||||||
always-mark-nsfw: "항상 미디어를 열람주의로 설정하여 게시"
|
always-mark-nsfw: "항상 미디어를 열람주의로 설정하여 게시"
|
||||||
show-full-acct: "ユーザー名のホストを省略しない"
|
show-full-acct: "ユーザー名のホストを省略しない"
|
||||||
|
show-via: "viaを表示する"
|
||||||
reduce-motion: "UIの動きを減らす"
|
reduce-motion: "UIの動きを減らす"
|
||||||
this-setting-is-this-device-only: "이 장치만"
|
this-setting-is-this-device-only: "이 장치만"
|
||||||
|
use-os-default-emojis: "OS標準の絵文字を使用"
|
||||||
do-not-use-in-production: '이것은 개발 빌드입니다. 프로덕션 환경에서 사용하지 마십시오.'
|
do-not-use-in-production: '이것은 개발 빌드입니다. 프로덕션 환경에서 사용하지 마십시오.'
|
||||||
|
is-remote-user: "このユーザー情報はコピーです。"
|
||||||
|
is-remote-post: "この投稿情報はコピーです。"
|
||||||
|
view-on-remote: "正確な情報を見る"
|
||||||
|
error:
|
||||||
|
title: '問題が発生しました'
|
||||||
|
retry: 'やり直す'
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "무승부"
|
drawn: "무승부"
|
||||||
my-turn: "당신의 차례입니다"
|
my-turn: "당신의 차례입니다"
|
||||||
opponent-turn: "상대의 차례입니다"
|
opponent-turn: "상대의 차례입니다"
|
||||||
turn-of: "{}의 차례입니다"
|
turn-of: "{name}のターンです"
|
||||||
past-turn-of: "{} 턴"
|
past-turn-of: "{name}のターン"
|
||||||
won: "{} 승리"
|
won: "{name}の勝ち"
|
||||||
black: "검정"
|
black: "검정"
|
||||||
white: "흰색"
|
white: "흰색"
|
||||||
total: "합계"
|
total: "합계"
|
||||||
this-turn: "{}턴눈"
|
this-turn: "{count}ターン目"
|
||||||
widgets:
|
widgets:
|
||||||
analog-clock: "아날로그 시계"
|
analog-clock: "아날로그 시계"
|
||||||
profile: "프로필"
|
profile: "프로필"
|
||||||
@@ -144,34 +152,15 @@ common:
|
|||||||
users: "추천 사용자"
|
users: "추천 사용자"
|
||||||
polls: "설문"
|
polls: "설문"
|
||||||
post-form: "게시 양식"
|
post-form: "게시 양식"
|
||||||
messaging: "메시지"
|
|
||||||
server: "서버 정보"
|
server: "서버 정보"
|
||||||
donation: "기부 요청"
|
donation: "기부 요청"
|
||||||
nav: "네비게이션"
|
nav: "네비게이션"
|
||||||
tips: "팁"
|
tips: "팁"
|
||||||
hashtags: "해시 태그"
|
hashtags: "해시 태그"
|
||||||
deck:
|
dev: "アプリの作成に失敗しました。再度お試しください。"
|
||||||
widgets: "위젯"
|
ai-chan-kawaii: "藍ちゃかわいい"
|
||||||
home: "홈"
|
|
||||||
local: "로컬"
|
|
||||||
hybrid: "소셜"
|
|
||||||
hashtag: "해시태그"
|
|
||||||
global: "글로벌"
|
|
||||||
mentions: "あなた宛て"
|
|
||||||
direct: "ダイレクト投稿"
|
|
||||||
notifications: "통지"
|
|
||||||
list: "목록"
|
|
||||||
swap-left: "왼쪽으로 이동"
|
|
||||||
swap-right: "오른쪽으로 이동"
|
|
||||||
swap-up: "위로 이동"
|
|
||||||
swap-down: "아래로 이동"
|
|
||||||
remove: "칼럼 제거"
|
|
||||||
add-column: "칼럼 추가"
|
|
||||||
rename: "이름 변경"
|
|
||||||
stack-left: "左に重ねる"
|
|
||||||
pop-right: "右に出す"
|
|
||||||
auth/views/form.vue:
|
auth/views/form.vue:
|
||||||
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
|
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
|
||||||
permission-ask: "このアプリは次の権限を要求しています:"
|
permission-ask: "このアプリは次の権限を要求しています:"
|
||||||
account-read: "アカウントの情報を見る。"
|
account-read: "アカウントの情報を見る。"
|
||||||
account-write: "アカウントの情報を操作する。"
|
account-write: "アカウントの情報を操作する。"
|
||||||
@@ -308,7 +297,6 @@ common/views/components/messaging.vue:
|
|||||||
no-history: "履歴はありません"
|
no-history: "履歴はありません"
|
||||||
common/views/components/messaging-room.vue:
|
common/views/components/messaging-room.vue:
|
||||||
empty: "このユーザーと話したことはありません"
|
empty: "このユーザーと話したことはありません"
|
||||||
more: "더 보기"
|
|
||||||
no-history: "これより過去の履歴はありません"
|
no-history: "これより過去の履歴はありません"
|
||||||
resize-form: "ドラッグしてフォームの広さを調整"
|
resize-form: "ドラッグしてフォームの広さを調整"
|
||||||
new-message: "新しいメッセージがあります"
|
new-message: "新しいメッセージがあります"
|
||||||
@@ -356,6 +344,16 @@ common/views/components/poll-editor.vue:
|
|||||||
destroy: "アンケートを破棄"
|
destroy: "アンケートを破棄"
|
||||||
common/views/components/reaction-picker.vue:
|
common/views/components/reaction-picker.vue:
|
||||||
choose-reaction: "リアクションを選択"
|
choose-reaction: "リアクションを選択"
|
||||||
|
common/views/components/emoji-picker.vue:
|
||||||
|
custom-emoji: "カスタム絵文字"
|
||||||
|
people: "人"
|
||||||
|
animals-and-nature: "動物&自然"
|
||||||
|
food-and-drink: "食べ物&飲み物"
|
||||||
|
activity: "アクティビティ"
|
||||||
|
travel-and-places: "場所"
|
||||||
|
objects: "物"
|
||||||
|
symbols: "記号"
|
||||||
|
flags: "旗"
|
||||||
common/views/components/signin.vue:
|
common/views/components/signin.vue:
|
||||||
username: "ユーザー名"
|
username: "ユーザー名"
|
||||||
password: "パスワード"
|
password: "パスワード"
|
||||||
@@ -364,6 +362,8 @@ common/views/components/signin.vue:
|
|||||||
signin: "サインイン"
|
signin: "サインイン"
|
||||||
or: "または"
|
or: "または"
|
||||||
signin-with-twitter: "Twitterでログイン"
|
signin-with-twitter: "Twitterでログイン"
|
||||||
|
signin-with-github: "GitHubでログイン"
|
||||||
|
signin-with-discord: "Discordでログイン"
|
||||||
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
invitation-code: "招待コード"
|
invitation-code: "招待コード"
|
||||||
@@ -402,6 +402,20 @@ common/views/components/twitter-setting.vue:
|
|||||||
reconnect: "再接続する"
|
reconnect: "再接続する"
|
||||||
connect: "Twitterと接続する"
|
connect: "Twitterと接続する"
|
||||||
disconnect: "切断する"
|
disconnect: "切断する"
|
||||||
|
common/views/components/github-setting.vue:
|
||||||
|
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
|
||||||
|
connected-to: "次のGitHubアカウントに接続されています"
|
||||||
|
detail: "詳細..."
|
||||||
|
reconnect: "再接続する"
|
||||||
|
connect: "GitHubと接続する"
|
||||||
|
disconnect: "切断する"
|
||||||
|
common/views/components/discord-setting.vue:
|
||||||
|
description: "お使いのDiscordアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでDiscordアカウント情報が表示されるようになったり、Discordを用いた便利なサインインを利用できるようになります。"
|
||||||
|
connected-to: "次のDiscordアカウントに接続されています"
|
||||||
|
detail: "詳細..."
|
||||||
|
reconnect: "再接続する"
|
||||||
|
connect: "Discordと接続する"
|
||||||
|
disconnect: "切断する"
|
||||||
common/views/components/uploader.vue:
|
common/views/components/uploader.vue:
|
||||||
waiting: "待機中"
|
waiting: "待機中"
|
||||||
common/views/components/visibility-chooser.vue:
|
common/views/components/visibility-chooser.vue:
|
||||||
@@ -416,6 +430,25 @@ common/views/components/visibility-chooser.vue:
|
|||||||
common/views/components/trends.vue:
|
common/views/components/trends.vue:
|
||||||
count: "{}人が投稿"
|
count: "{}人が投稿"
|
||||||
empty: "トレンドなし"
|
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:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "確認中"
|
fetching: "確認中"
|
||||||
no-broadcasts: "お知らせはありません"
|
no-broadcasts: "お知らせはありません"
|
||||||
@@ -499,34 +532,12 @@ desktop/views/components/activity.vue:
|
|||||||
title: "アクティビティ"
|
title: "アクティビティ"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
desktop/views/components/calendar.vue:
|
desktop/views/components/calendar.vue:
|
||||||
title: "{1}年 {2}月"
|
title: "{year}年 {month}月"
|
||||||
prev: "前の月"
|
prev: "前の月"
|
||||||
next: "次の月"
|
next: "次の月"
|
||||||
go: "クリックして時間遡行"
|
go: "クリックして時間遡行"
|
||||||
desktop/views/components/charts.vue:
|
|
||||||
title: "チャート"
|
|
||||||
per-day: "1日ごと"
|
|
||||||
per-hour: "1時間ごと"
|
|
||||||
notes: "投稿"
|
|
||||||
users: "ユーザー"
|
|
||||||
drive: "ドライブ"
|
|
||||||
network: "ネットワーク"
|
|
||||||
charts:
|
|
||||||
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:
|
desktop/views/components/choose-file-from-drive-window.vue:
|
||||||
choose-file: "ファイル選択中"
|
chosen-files: "{count}ファイル選択中"
|
||||||
upload: "PCからドライブにファイルをアップロード"
|
upload: "PCからドライブにファイルをアップロード"
|
||||||
cancel: "キャンセル"
|
cancel: "キャンセル"
|
||||||
ok: "決定"
|
ok: "決定"
|
||||||
@@ -541,7 +552,6 @@ desktop/views/components/crop-window.vue:
|
|||||||
ok: "決定"
|
ok: "決定"
|
||||||
desktop/views/components/drive-window.vue:
|
desktop/views/components/drive-window.vue:
|
||||||
used: "使用中"
|
used: "使用中"
|
||||||
drive: "ドライブ"
|
|
||||||
desktop/views/components/drive.file.vue:
|
desktop/views/components/drive.file.vue:
|
||||||
avatar: "アイコン"
|
avatar: "アイコン"
|
||||||
banner: "バナー"
|
banner: "バナー"
|
||||||
@@ -571,11 +581,8 @@ desktop/views/components/drive.folder.vue:
|
|||||||
rename: "名前を変更"
|
rename: "名前を変更"
|
||||||
rename-folder: "フォルダ名の変更"
|
rename-folder: "フォルダ名の変更"
|
||||||
input-new-folder-name: "新しいフォルダ名を入力してください"
|
input-new-folder-name: "新しいフォルダ名を入力してください"
|
||||||
desktop/views/components/drive.nav-folder.vue:
|
|
||||||
drive: "ドライブ"
|
|
||||||
desktop/views/components/drive.vue:
|
desktop/views/components/drive.vue:
|
||||||
search: "検索"
|
search: "検索"
|
||||||
load-more: "もっと読み込む"
|
|
||||||
empty-draghover: "ドロップですか?いいですよ、ボクはカワイイですからね"
|
empty-draghover: "ドロップですか?いいですよ、ボクはカワイイですからね"
|
||||||
empty-drive: "ドライブには何もありません。"
|
empty-drive: "ドライブには何もありません。"
|
||||||
empty-drive-description: "右クリックして「ファイルをアップロード」を選んだり、ファイルをドラッグ&ドロップすることでもアップロードできます。"
|
empty-drive-description: "右クリックして「ファイルをアップロード」を選んだり、ファイルをドラッグ&ドロップすることでもアップロードできます。"
|
||||||
@@ -599,12 +606,6 @@ desktop/views/components/media-image.vue:
|
|||||||
desktop/views/components/media-video.vue:
|
desktop/views/components/media-video.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
desktop/views/components/follow-button.vue:
|
|
||||||
following: "フォロー中"
|
|
||||||
follow: "フォロー"
|
|
||||||
request-pending: "フォロー許可待ち"
|
|
||||||
follow-processing: "フォロー処理中"
|
|
||||||
follow-request: "フォロー申請"
|
|
||||||
desktop/views/components/followers-window.vue:
|
desktop/views/components/followers-window.vue:
|
||||||
followers: "{} のフォロワー"
|
followers: "{} のフォロワー"
|
||||||
desktop/views/components/followers.vue:
|
desktop/views/components/followers.vue:
|
||||||
@@ -633,14 +634,13 @@ desktop/views/components/messaging-room-window.vue:
|
|||||||
desktop/views/components/messaging-window.vue:
|
desktop/views/components/messaging-window.vue:
|
||||||
title: "メッセージ"
|
title: "メッセージ"
|
||||||
desktop/views/components/note-detail.vue:
|
desktop/views/components/note-detail.vue:
|
||||||
more: "会話をもっと読み込む"
|
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
location: "位置情報"
|
location: "位置情報"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
add-reaction: "リアクション"
|
add-reaction: "リアクション"
|
||||||
desktop/views/components/notes.note.vue:
|
desktop/views/components/note.vue:
|
||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
reply: "返信"
|
reply: "返信"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
@@ -651,9 +651,7 @@ desktop/views/components/notes.note.vue:
|
|||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "読み込みに失敗しました。"
|
error: "読み込みに失敗しました。"
|
||||||
retry: "リトライ"
|
retry: "リトライ"
|
||||||
load-more: "もっと読み込む"
|
|
||||||
desktop/views/components/notifications.vue:
|
desktop/views/components/notifications.vue:
|
||||||
more: "もっと見る"
|
|
||||||
empty: "ありません!"
|
empty: "ありません!"
|
||||||
desktop/views/components/post-form.vue:
|
desktop/views/components/post-form.vue:
|
||||||
add-visible-user: "+ユーザーを追加"
|
add-visible-user: "+ユーザーを追加"
|
||||||
@@ -700,14 +698,17 @@ desktop/views/components/renote-form.vue:
|
|||||||
failure: "Renoteに失敗しました"
|
failure: "Renoteに失敗しました"
|
||||||
desktop/views/components/renote-form-window.vue:
|
desktop/views/components/renote-form-window.vue:
|
||||||
title: "この投稿をRenoteしますか?"
|
title: "この投稿をRenoteしますか?"
|
||||||
|
desktop/views/pages/user-following-or-followers.vue:
|
||||||
|
following: "{user}のフォロー"
|
||||||
|
followers: "{user}のフォロワー"
|
||||||
desktop/views/components/settings-window.vue:
|
desktop/views/components/settings-window.vue:
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
desktop/views/components/settings.vue:
|
desktop/views/components/settings.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
notification: "通知"
|
notification: "通知"
|
||||||
apps: "アプリ"
|
apps: "アプリ"
|
||||||
mute: "ミュート"
|
mute-and-block: "ミュート/ブロック"
|
||||||
drive: "ドライブ"
|
blocking: "ブロック"
|
||||||
security: "セキュリティ"
|
security: "セキュリティ"
|
||||||
signin: "サインイン履歴"
|
signin: "サインイン履歴"
|
||||||
password: "パスワード"
|
password: "パスワード"
|
||||||
@@ -726,8 +727,12 @@ desktop/views/components/settings.vue:
|
|||||||
advanced: "詳細設定"
|
advanced: "詳細設定"
|
||||||
api-via-stream: "ストリームを経由したAPIリクエスト"
|
api-via-stream: "ストリームを経由したAPIリクエスト"
|
||||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||||
|
deck-nav: "デッキ内ナビゲーション"
|
||||||
|
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
|
||||||
|
deck-default: "デッキをデフォルトのUIにする"
|
||||||
display: "デザインと表示"
|
display: "デザインと表示"
|
||||||
customize: "ホームをカスタマイズ"
|
customize: "ホームをカスタマイズ"
|
||||||
|
wallpaper: "壁紙"
|
||||||
choose-wallpaper: "壁紙を選択"
|
choose-wallpaper: "壁紙を選択"
|
||||||
delete-wallpaper: "壁紙を削除"
|
delete-wallpaper: "壁紙を削除"
|
||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
@@ -739,17 +744,19 @@ desktop/views/components/settings.vue:
|
|||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
show-clock-on-header: "右上に時計を表示する"
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
|
timeline: "タイムライン"
|
||||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "マップの自動展開"
|
show-maps: "マップの自動展開"
|
||||||
|
deck-column-align: "デッキのカラムの位置"
|
||||||
|
deck-column-align-center: "中央"
|
||||||
|
deck-column-align-left: "左"
|
||||||
sound: "サウンド"
|
sound: "サウンド"
|
||||||
enable-sounds: "サウンドを有効にする"
|
enable-sounds: "サウンドを有効にする"
|
||||||
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
|
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
|
||||||
volume: "ボリューム"
|
volume: "ボリューム"
|
||||||
test: "テスト"
|
test: "テスト"
|
||||||
mobile: "モバイル"
|
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
|
||||||
language: "言語"
|
language: "言語"
|
||||||
pick-language: "言語を選択"
|
pick-language: "言語を選択"
|
||||||
recommended: "推奨"
|
recommended: "推奨"
|
||||||
@@ -785,6 +792,10 @@ desktop/views/components/settings.vue:
|
|||||||
tools: "ツール"
|
tools: "ツール"
|
||||||
task-manager: "タスクマネージャ"
|
task-manager: "タスクマネージャ"
|
||||||
third-parties: "サードパーティ"
|
third-parties: "サードパーティ"
|
||||||
|
navbar-position: "ナビゲーションバーの位置"
|
||||||
|
navbar-position-top: "上"
|
||||||
|
navbar-position-left: "左"
|
||||||
|
navbar-position-right: "右"
|
||||||
desktop/views/components/settings.2fa.vue:
|
desktop/views/components/settings.2fa.vue:
|
||||||
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
||||||
detail: "詳細..."
|
detail: "詳細..."
|
||||||
@@ -803,41 +814,44 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
success: "設定が完了しました!"
|
success: "設定が完了しました!"
|
||||||
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
||||||
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
||||||
desktop/views/components/settings.api.vue:
|
common/views/components/api-settings.vue:
|
||||||
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
||||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||||
regenerate-token: "トークンを再生成"
|
regenerate-token: "トークンを再生成"
|
||||||
token: "Token:"
|
token: "Token:"
|
||||||
enter-password: "パスワードを入力してください"
|
enter-password: "パスワードを入力してください"
|
||||||
|
console:
|
||||||
|
title: 'APIコンソール'
|
||||||
|
endpoint: 'エンドポイント'
|
||||||
|
parameter: 'パラメータ'
|
||||||
|
credential-info: "「i」パラメータは自動で付与されます。"
|
||||||
|
send: '送信'
|
||||||
|
sending: '応答待ち'
|
||||||
|
response: '結果'
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "連携しているアプリケーションはありません"
|
no-apps: "連携しているアプリケーションはありません"
|
||||||
desktop/views/components/settings.drive.vue:
|
common/views/components/drive-settings.vue:
|
||||||
max: "中"
|
max: "容量"
|
||||||
in-use: "使用中"
|
in-use: "使用中"
|
||||||
desktop/views/components/settings.mute.vue:
|
stats: "統計"
|
||||||
no-users: "ミュートしているユーザーはいません"
|
common/views/components/mute-and-block.vue:
|
||||||
desktop/views/components/settings.password.vue:
|
mute-and-block: "ミュートとブロック"
|
||||||
|
mute: "ミュート"
|
||||||
|
block: "ブロック"
|
||||||
|
no-muted-users: "ミュートしているユーザーはいません"
|
||||||
|
no-blocked-users: "ブロックしているユーザーはいません"
|
||||||
|
word-mute: "ワードミュート"
|
||||||
|
muted-words: "ミュートされたキーワード"
|
||||||
|
muted-words-description: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります"
|
||||||
|
save: "保存"
|
||||||
|
common/views/components/password-settings.vue:
|
||||||
reset: "パスワードを変更する"
|
reset: "パスワードを変更する"
|
||||||
enter-current-password: "現在のパスワードを入力してください"
|
enter-current-password: "現在のパスワードを入力してください"
|
||||||
enter-new-password: "新しいパスワードを入力してください"
|
enter-new-password: "新しいパスワードを入力してください"
|
||||||
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
||||||
not-match: "新しいパスワードが一致しません"
|
not-match: "新しいパスワードが一致しません"
|
||||||
changed: "パスワードを変更しました"
|
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:
|
desktop/views/components/sub-note-content.vue:
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
@@ -862,7 +876,6 @@ desktop/views/components/ui.header.vue:
|
|||||||
adjective: "さん"
|
adjective: "さん"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
drive: "ドライブ"
|
|
||||||
favorites: "お気に入り"
|
favorites: "お気に入り"
|
||||||
lists: "リスト"
|
lists: "リスト"
|
||||||
follow-requests: "フォロー申請"
|
follow-requests: "フォロー申請"
|
||||||
@@ -874,7 +887,6 @@ desktop/views/components/ui.header.account.vue:
|
|||||||
desktop/views/components/ui.header.nav.vue:
|
desktop/views/components/ui.header.nav.vue:
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
deck: "デッキ"
|
deck: "デッキ"
|
||||||
messaging: "メッセージ"
|
|
||||||
game: "ゲーム"
|
game: "ゲーム"
|
||||||
desktop/views/components/ui.header.notifications.vue:
|
desktop/views/components/ui.header.notifications.vue:
|
||||||
title: "通知"
|
title: "通知"
|
||||||
@@ -897,54 +909,153 @@ desktop/views/components/user-preview.vue:
|
|||||||
desktop/views/components/users-list.vue:
|
desktop/views/components/users-list.vue:
|
||||||
all: "すべて"
|
all: "すべて"
|
||||||
iknow: "知り合い"
|
iknow: "知り合い"
|
||||||
load-more: "もっと"
|
|
||||||
fetching: "読み込んでいます"
|
fetching: "読み込んでいます"
|
||||||
desktop/views/components/users-list-item.vue:
|
desktop/views/components/users-list-item.vue:
|
||||||
followed: "フォローされています"
|
followed: "フォローされています"
|
||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
desktop/views/pages/admin/admin.vue:
|
admin/views/index.vue:
|
||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
drive: "ドライブ"
|
instance: "インスタンス"
|
||||||
|
emoji: "カスタム絵文字"
|
||||||
|
moderators: "モデレーター"
|
||||||
users: "ユーザー"
|
users: "ユーザー"
|
||||||
update: "更新"
|
update: "更新"
|
||||||
desktop/views/pages/admin/admin.dashboard.vue:
|
announcements: "お知らせ"
|
||||||
|
hashtags: "ハッシュタグ"
|
||||||
|
back-to-misskey: "Misskeyに戻る"
|
||||||
|
admin/views/dashboard.vue:
|
||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
all-users: "全てのユーザー"
|
accounts: "アカウント"
|
||||||
original-users: "このインスタンスのユーザー"
|
notes: "投稿"
|
||||||
all-notes: "全ての投稿"
|
drive: "ドライブ"
|
||||||
original-notes: "このインスタンスの投稿"
|
instances: "インスタンス"
|
||||||
|
this-instance: "このインスタンス"
|
||||||
|
federated: "連合"
|
||||||
|
admin/views/instance.vue:
|
||||||
|
instance: "インスタンス"
|
||||||
|
instance-name: "インスタンス名"
|
||||||
|
instance-description: "インスタンスの紹介"
|
||||||
|
host: "ホスト"
|
||||||
|
banner-url: "バナー画像URL"
|
||||||
|
languages: "インスタンスの対象言語"
|
||||||
|
languages-desc: "スペースで区切って複数設定できます。"
|
||||||
|
maintainer-config: "管理者情報"
|
||||||
|
maintainer-name: "管理者名"
|
||||||
|
maintainer-email: "管理者の連絡先"
|
||||||
|
drive-config: "ドライブの設定"
|
||||||
|
cache-remote-files: "リモートのファイルをキャッシュする"
|
||||||
|
cache-remote-files-desc: "この設定を無効にすると、リモートファイルをキャッシュせず直リンクするようになります。そのためサーバーのストレージを節約できますが、プライバシー設定で直リンクを無効にしているユーザーにはファイルが見えなくなったり、サムネイルが生成されないので通信量が増加します。通常はこの設定をオンにしておくことをおすすめします。"
|
||||||
|
local-drive-capacity-mb: "ローカルユーザーひとりあたりのドライブ容量"
|
||||||
|
remote-drive-capacity-mb: "リモートユーザーひとりあたりのドライブ容量"
|
||||||
|
mb: "メガバイト単位"
|
||||||
|
recaptcha-config: "reCAPTCHAの設定"
|
||||||
|
recaptcha-info: "reCAPTCHAを有効にする場合、reCAPTCHAトークンを取得する必要があります。https://www.google.com/recaptcha/intro/ にアクセスしてトークンを取得してください。"
|
||||||
|
enable-recaptcha: "reCAPTCHAを有効にする"
|
||||||
|
recaptcha-site-key: "reCAPTCHA site key"
|
||||||
|
recaptcha-secret-key: "reCAPTCHA secret key"
|
||||||
|
twitter-integration-config: "Twitter連携の設定"
|
||||||
|
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。"
|
||||||
|
enable-twitter-integration: "Twitter連携を有効にする"
|
||||||
|
twitter-integration-consumer-key: "Consumer key"
|
||||||
|
twitter-integration-consumer-secret: "Consumer secret"
|
||||||
|
github-integration-config: "GitHub連携の設定"
|
||||||
|
github-integration-info: "コールバックURLは /api/gh/cb に設定します。"
|
||||||
|
enable-github-integration: "GitHub連携を有効にする"
|
||||||
|
github-integration-client-id: "Client ID"
|
||||||
|
github-integration-client-secret: "Client Secret"
|
||||||
|
discord-integration-config: "Discord連携の設定"
|
||||||
|
discord-integration-info: "コールバックURLは /api/dc/cb に設定します。"
|
||||||
|
enable-discord-integration: "Discord連携を有効にする"
|
||||||
|
discord-integration-client-id: "Client ID"
|
||||||
|
discord-integration-client-secret: "Client Secret"
|
||||||
|
proxy-account-config: "プロキシアカウントの設定"
|
||||||
|
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
|
||||||
|
proxy-account-username: "プロキシアカウントのユーザー名"
|
||||||
|
proxy-account-username-desc: "プロキシとして使用するアカウントのユーザー名を指定してください。"
|
||||||
|
proxy-account-warn: "アカウントは自動で作られないため、そのユーザー名のアカウントを予め作成しておく必要があります。"
|
||||||
|
max-note-text-length: "投稿の最大文字数"
|
||||||
|
disable-registration: "ユーザー登録の受付を停止する"
|
||||||
|
disable-local-timeline: "ローカルタイムラインを無効にする"
|
||||||
invite: "招待"
|
invite: "招待"
|
||||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
save: "保存"
|
||||||
|
saved: "保存しました"
|
||||||
|
admin/views/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: "通信量"
|
||||||
|
admin/views/users.vue:
|
||||||
suspend-user: "ユーザーの凍結"
|
suspend-user: "ユーザーの凍結"
|
||||||
suspend: "凍結"
|
suspend: "凍結"
|
||||||
suspended: "凍結しました"
|
suspended: "凍結しました"
|
||||||
desktop/views/pages/admin/admin.unsuspend-user.vue:
|
|
||||||
unsuspend-user: "ユーザーの凍結の解除"
|
unsuspend-user: "ユーザーの凍結の解除"
|
||||||
unsuspend: "凍結の解除"
|
unsuspend: "凍結の解除"
|
||||||
unsuspended: "凍結を解除しました"
|
unsuspended: "凍結を解除しました"
|
||||||
desktop/views/pages/admin/admin.verify-user.vue:
|
|
||||||
verify-user: "ユーザーの公式アカウント設定"
|
verify-user: "ユーザーの公式アカウント設定"
|
||||||
verify: "公式アカウントにする"
|
verify: "公式アカウントにする"
|
||||||
verified: "公式アカウントにしました"
|
verified: "公式アカウントにしました"
|
||||||
desktop/views/pages/admin/admin.unverify-user.vue:
|
|
||||||
unverify-user: "ユーザーの公式アカウント解除"
|
unverify-user: "ユーザーの公式アカウント解除"
|
||||||
unverify: "公式アカウントを解除する"
|
unverify: "公式アカウントを解除する"
|
||||||
unverified: "公式アカウントを解除しました"
|
unverified: "公式アカウントを解除しました"
|
||||||
desktop/views/pages/deck/deck.tl-column.vue:
|
admin/views/moderators.vue:
|
||||||
is-media-only: "メディア投稿のみ"
|
add-moderator:
|
||||||
is-media-view: "メディアビュー"
|
title: "モデレーターの登録"
|
||||||
edit: "オプション"
|
add: "登録"
|
||||||
desktop/views/pages/deck/deck.note.vue:
|
added: "モデレーターを登録しました"
|
||||||
reposted-by: "{}がRenote"
|
admin/views/emoji.vue:
|
||||||
private: "この投稿は非公開です"
|
add-emoji:
|
||||||
deleted: "この投稿は削除されました"
|
title: "絵文字の登録"
|
||||||
desktop/views/pages/stats/stats.vue:
|
name: "絵文字名"
|
||||||
all-users: "全てのユーザー"
|
name-desc: "a~z 0~9 _ の文字が使えます。"
|
||||||
original-users: "このインスタンスのユーザー"
|
aliases: "エイリアス"
|
||||||
all-notes: "全ての投稿"
|
aliases-desc: "スペースで区切って複数設定できます。"
|
||||||
original-notes: "このインスタンスの投稿"
|
url: "絵文字画像URL"
|
||||||
|
add: "追加"
|
||||||
|
info: "50KB以下のPNG画像をおすすめします。"
|
||||||
|
added: "絵文字を登録しました"
|
||||||
|
emojis:
|
||||||
|
title: "絵文字一覧"
|
||||||
|
update: "更新"
|
||||||
|
remove: "削除"
|
||||||
|
updated: "更新しました"
|
||||||
|
remove-emoji:
|
||||||
|
are-you-sure: "「$1」を削除しますか?"
|
||||||
|
removed: "削除しました"
|
||||||
|
admin/views/announcements.vue:
|
||||||
|
announcements: "お知らせ"
|
||||||
|
save: "保存"
|
||||||
|
remove: "削除"
|
||||||
|
add: "追加"
|
||||||
|
title: "タイトル"
|
||||||
|
text: "内容"
|
||||||
|
saved: "保存しました"
|
||||||
|
_remove:
|
||||||
|
are-you-sure: "「$1」を削除しますか?"
|
||||||
|
removed: "削除しました"
|
||||||
|
admin/views/hashtags.vue:
|
||||||
|
hided-tags: "Hidden Tags"
|
||||||
desktop/views/pages/welcome.vue:
|
desktop/views/pages/welcome.vue:
|
||||||
about: "詳しく..."
|
about: "詳しく..."
|
||||||
gotit: "わかった"
|
gotit: "わかった"
|
||||||
@@ -959,8 +1070,6 @@ desktop/views/pages/welcome.vue:
|
|||||||
info: "情報"
|
info: "情報"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
desktop/views/pages/favorites.vue:
|
|
||||||
more: "さらに読み込む"
|
|
||||||
desktop/views/pages/home-customize.vue:
|
desktop/views/pages/home-customize.vue:
|
||||||
title: "ホームのカスタマイズ"
|
title: "ホームのカスタマイズ"
|
||||||
desktop/views/pages/note.vue:
|
desktop/views/pages/note.vue:
|
||||||
@@ -973,11 +1082,11 @@ desktop/views/pages/selectdrive.vue:
|
|||||||
upload: "PCからドライブにファイルをアップロード"
|
upload: "PCからドライブにファイルをアップロード"
|
||||||
desktop/views/pages/search.vue:
|
desktop/views/pages/search.vue:
|
||||||
not-available: "検索機能はインスタンスの設定で無効になっています。"
|
not-available: "検索機能はインスタンスの設定で無効になっています。"
|
||||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
not-found: "「{q}」に関する投稿は見つかりませんでした。"
|
||||||
desktop/views/pages/share.vue:
|
desktop/views/pages/share.vue:
|
||||||
share-with: "{}で共有"
|
share-with: "{name}で共有"
|
||||||
desktop/views/pages/tag.vue:
|
desktop/views/pages/tag.vue:
|
||||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
|
||||||
desktop/views/pages/user-list.users.vue:
|
desktop/views/pages/user-list.users.vue:
|
||||||
users: "ユーザー"
|
users: "ユーザー"
|
||||||
add-user: "ユーザーを追加"
|
add-user: "ユーザーを追加"
|
||||||
@@ -990,12 +1099,6 @@ desktop/views/pages/user/user.friends.vue:
|
|||||||
title: "よく話すユーザー"
|
title: "よく話すユーザー"
|
||||||
loading: "読み込み中"
|
loading: "読み込み中"
|
||||||
no-users: "よく話すユーザーはいません"
|
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:
|
desktop/views/pages/user/user.photos.vue:
|
||||||
title: "フォト"
|
title: "フォト"
|
||||||
loading: "読み込み中"
|
loading: "読み込み中"
|
||||||
@@ -1008,6 +1111,9 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "ミュートする"
|
mute: "ミュートする"
|
||||||
muted: "ミュートしています"
|
muted: "ミュートしています"
|
||||||
unmute: "ミュート解除"
|
unmute: "ミュート解除"
|
||||||
|
block: "ブロックする"
|
||||||
|
unblock: "ブロック解除"
|
||||||
|
block-confirm: "このユーザーをブロックしますか?"
|
||||||
push-to-a-list: "リストに追加"
|
push-to-a-list: "リストに追加"
|
||||||
list-pushed: "{user}を{list}に追加しました。"
|
list-pushed: "{user}を{list}に追加しました。"
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.header.vue:
|
||||||
@@ -1015,6 +1121,10 @@ desktop/views/pages/user/user.header.vue:
|
|||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
followers: "フォロワー"
|
followers: "フォロワー"
|
||||||
is-bot: "このアカウントはBotです"
|
is-bot: "このアカウントはBotです"
|
||||||
|
years-old: "{age}歳"
|
||||||
|
year: "年"
|
||||||
|
month: "月"
|
||||||
|
day: "日"
|
||||||
desktop/views/pages/user/user.timeline.vue:
|
desktop/views/pages/user/user.timeline.vue:
|
||||||
default: "投稿"
|
default: "投稿"
|
||||||
with-replies: "投稿と返信"
|
with-replies: "投稿と返信"
|
||||||
@@ -1044,12 +1154,10 @@ desktop/views/widgets/users.vue:
|
|||||||
refresh: "他を見る"
|
refresh: "他を見る"
|
||||||
no-one: "いません!"
|
no-one: "いません!"
|
||||||
mobile/views/components/drive.vue:
|
mobile/views/components/drive.vue:
|
||||||
drive: "ドライブ"
|
|
||||||
used: "使用中"
|
used: "使用中"
|
||||||
folder-count: "フォルダ"
|
folder-count: "フォルダ"
|
||||||
count-separator: "、"
|
count-separator: "、"
|
||||||
file-count: "ファイル"
|
file-count: "ファイル"
|
||||||
load-more: "もっと読み込む"
|
|
||||||
nothing-in-drive: "ドライブには何もありません"
|
nothing-in-drive: "ドライブには何もありません"
|
||||||
folder-is-empty: "このフォルダは空です"
|
folder-is-empty: "このフォルダは空です"
|
||||||
prompt: "何をしますか?(数字を入力してください): <1 → ファイルをアップロード | 2 → ファイルをURLでアップロード | 3 → フォルダ作成 | 4 → このフォルダ名を変更 | 5 → このフォルダを移動 | 6 → このフォルダを削除>"
|
prompt: "何をしますか?(数字を入力してください): <1 → ファイルをアップロード | 2 → ファイルをURLでアップロード | 3 → フォルダ作成 | 4 → このフォルダ名を変更 | 5 → このフォルダを移動 | 6 → このフォルダを削除>"
|
||||||
@@ -1059,8 +1167,6 @@ mobile/views/components/drive.vue:
|
|||||||
root-move-alert: "現在いる場所はルートで、フォルダではないため移動はできません。移動したいフォルダに移動してからやってください。"
|
root-move-alert: "現在いる場所はルートで、フォルダではないため移動はできません。移動したいフォルダに移動してからやってください。"
|
||||||
url-prompt: "アップロードしたいファイルのURL"
|
url-prompt: "アップロードしたいファイルのURL"
|
||||||
uploading: "アップロードをリクエストしました。アップロードが完了するまで時間がかかる場合があります。"
|
uploading: "アップロードをリクエストしました。アップロードが完了するまで時間がかかる場合があります。"
|
||||||
mobile/views/components/drive-file-detail.vue:
|
|
||||||
rename: "名前を変更"
|
|
||||||
mobile/views/components/drive-file-chooser.vue:
|
mobile/views/components/drive-file-chooser.vue:
|
||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
mobile/views/components/drive-folder-chooser.vue:
|
mobile/views/components/drive-folder-chooser.vue:
|
||||||
@@ -1074,13 +1180,15 @@ mobile/views/components/drive.file-detail.vue:
|
|||||||
hash: "ハッシュ (md5)"
|
hash: "ハッシュ (md5)"
|
||||||
exif: "EXIF"
|
exif: "EXIF"
|
||||||
nsfw: "閲覧注意"
|
nsfw: "閲覧注意"
|
||||||
|
mark-as-sensitive: "閲覧注意に設定"
|
||||||
|
unmark-as-sensitive: "閲覧注意を解除"
|
||||||
mobile/views/components/media-image.vue:
|
mobile/views/components/media-image.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
mobile/views/components/media-video.vue:
|
mobile/views/components/media-video.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
mobile/views/components/follow-button.vue:
|
common/views/components/follow-button.vue:
|
||||||
following: "フォロー中"
|
following: "フォロー中"
|
||||||
follow: "フォロー"
|
follow: "フォロー"
|
||||||
request-pending: "フォロー許可待ち"
|
request-pending: "フォロー許可待ち"
|
||||||
@@ -1112,11 +1220,7 @@ mobile/views/components/note-sub.vue:
|
|||||||
admin: "admin"
|
admin: "admin"
|
||||||
bot: "bot"
|
bot: "bot"
|
||||||
cat: "cat"
|
cat: "cat"
|
||||||
mobile/views/components/notes.vue:
|
|
||||||
failed: "読み込みに失敗しました。"
|
|
||||||
retry: "リトライ"
|
|
||||||
mobile/views/components/notifications.vue:
|
mobile/views/components/notifications.vue:
|
||||||
more: "もっと見る"
|
|
||||||
empty: "ありません!"
|
empty: "ありません!"
|
||||||
mobile/views/components/post-form.vue:
|
mobile/views/components/post-form.vue:
|
||||||
add-visible-user: "ユーザーを追加"
|
add-visible-user: "ユーザーを追加"
|
||||||
@@ -1136,17 +1240,14 @@ mobile/views/components/sub-note-content.vue:
|
|||||||
poll: "アンケート"
|
poll: "アンケート"
|
||||||
mobile/views/components/timeline.vue:
|
mobile/views/components/timeline.vue:
|
||||||
empty: "投稿がありません"
|
empty: "投稿がありません"
|
||||||
load-more: "もっと"
|
|
||||||
mobile/views/components/ui.header.vue:
|
mobile/views/components/ui.header.vue:
|
||||||
welcome-back: "おかえりなさい、"
|
welcome-back: "おかえりなさい、"
|
||||||
adjective: "さん"
|
adjective: "さん"
|
||||||
mobile/views/components/ui.nav.vue:
|
mobile/views/components/ui.nav.vue:
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
messaging: "メッセージ"
|
|
||||||
follow-requests: "フォロー申請"
|
follow-requests: "フォロー申請"
|
||||||
search: "検索"
|
search: "検索"
|
||||||
drive: "ドライブ"
|
|
||||||
favorites: "お気に入り"
|
favorites: "お気に入り"
|
||||||
user-lists: "リスト"
|
user-lists: "リスト"
|
||||||
widgets: "ウィジェット"
|
widgets: "ウィジェット"
|
||||||
@@ -1158,25 +1259,20 @@ mobile/views/components/ui.nav.vue:
|
|||||||
mobile/views/components/user-timeline.vue:
|
mobile/views/components/user-timeline.vue:
|
||||||
no-notes: "このユーザーは投稿していないようです。"
|
no-notes: "このユーザーは投稿していないようです。"
|
||||||
no-notes-with-media: "メディア付き投稿はありません。"
|
no-notes-with-media: "メディア付き投稿はありません。"
|
||||||
load-more: "もっと"
|
|
||||||
mobile/views/components/users-list.vue:
|
mobile/views/components/users-list.vue:
|
||||||
all: "すべて"
|
all: "すべて"
|
||||||
known: "知り合い"
|
known: "知り合い"
|
||||||
load-more: "もっと"
|
|
||||||
mobile/views/pages/favorites.vue:
|
mobile/views/pages/favorites.vue:
|
||||||
title: "お気に入り"
|
title: "お気に入り"
|
||||||
mobile/views/pages/user-lists.vue:
|
mobile/views/pages/user-lists.vue:
|
||||||
title: "リスト"
|
title: "リスト"
|
||||||
enter-list-name: "リスト名を入力してください"
|
enter-list-name: "リスト名を入力してください"
|
||||||
mobile/views/pages/drive.vue:
|
|
||||||
drive: "ドライブ"
|
|
||||||
more: "もっと見る"
|
|
||||||
mobile/views/pages/signup.vue:
|
mobile/views/pages/signup.vue:
|
||||||
lets-start: "📦 始めましょう"
|
lets-start: "📦 始めましょう"
|
||||||
mobile/views/pages/followers.vue:
|
mobile/views/pages/followers.vue:
|
||||||
followers-of: "{}のフォロワー"
|
followers-of: "{name}のフォロワー"
|
||||||
mobile/views/pages/following.vue:
|
mobile/views/pages/following.vue:
|
||||||
following-of: "{}のフォロー"
|
following-of: "{name}のフォロー"
|
||||||
mobile/views/pages/home.vue:
|
mobile/views/pages/home.vue:
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
local: "ローカル"
|
local: "ローカル"
|
||||||
@@ -1185,7 +1281,7 @@ mobile/views/pages/home.vue:
|
|||||||
mentions: "あなた宛て"
|
mentions: "あなた宛て"
|
||||||
messages: "メッセージ"
|
messages: "メッセージ"
|
||||||
mobile/views/pages/tag.vue:
|
mobile/views/pages/tag.vue:
|
||||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
|
||||||
mobile/views/pages/welcome.vue:
|
mobile/views/pages/welcome.vue:
|
||||||
signup: "新規登録"
|
signup: "新規登録"
|
||||||
mobile/views/pages/widgets.vue:
|
mobile/views/pages/widgets.vue:
|
||||||
@@ -1196,11 +1292,7 @@ mobile/views/pages/widgets.vue:
|
|||||||
mobile/views/pages/widgets/activity.vue:
|
mobile/views/pages/widgets/activity.vue:
|
||||||
activity: "アクティビティ"
|
activity: "アクティビティ"
|
||||||
mobile/views/pages/share.vue:
|
mobile/views/pages/share.vue:
|
||||||
share-with: "{}で共有"
|
share-with: "{name}で共有"
|
||||||
mobile/views/pages/messaging.vue:
|
|
||||||
messaging: "メッセージ"
|
|
||||||
mobile/views/pages/messaging-room.vue:
|
|
||||||
messaging: "メッセージ"
|
|
||||||
mobile/views/pages/received-follow-requests.vue:
|
mobile/views/pages/received-follow-requests.vue:
|
||||||
title: "フォロー申請"
|
title: "フォロー申請"
|
||||||
accept: "承認"
|
accept: "承認"
|
||||||
@@ -1214,27 +1306,9 @@ mobile/views/pages/notifications.vue:
|
|||||||
read-all: "すべての通知を既読にしますか?"
|
read-all: "すべての通知を既読にしますか?"
|
||||||
mobile/views/pages/games/reversi.vue:
|
mobile/views/pages/games/reversi.vue:
|
||||||
reversi: "リバーシ"
|
reversi: "リバーシ"
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
|
||||||
title: "プロフィール"
|
|
||||||
name: "名前"
|
|
||||||
account: "アカウント"
|
|
||||||
location: "場所"
|
|
||||||
description: "自己紹介"
|
|
||||||
birthday: "誕生日"
|
|
||||||
avatar: "アイコン"
|
|
||||||
banner: "バナー"
|
|
||||||
is-cat: "このアカウントはCatです"
|
|
||||||
is-locked: "フォローを承認制にする"
|
|
||||||
advanced: "その他"
|
|
||||||
privacy: "プライバシー"
|
|
||||||
save: "保存"
|
|
||||||
saved: "プロフィールを保存しました"
|
|
||||||
uploading: "アップロード中"
|
|
||||||
upload-failed: "アップロードに失敗しました"
|
|
||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
search: "検索"
|
search: "検索"
|
||||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
not-found: "「{q}」に関する投稿は見つかりませんでした。"
|
||||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
|
||||||
mobile/views/pages/selectdrive.vue:
|
mobile/views/pages/selectdrive.vue:
|
||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
mobile/views/pages/settings.vue:
|
mobile/views/pages/settings.vue:
|
||||||
@@ -1273,6 +1347,14 @@ mobile/views/pages/settings.vue:
|
|||||||
twitter-connect: "Twitterアカウントに接続する"
|
twitter-connect: "Twitterアカウントに接続する"
|
||||||
twitter-reconnect: "再接続する"
|
twitter-reconnect: "再接続する"
|
||||||
twitter-disconnect: "切断する"
|
twitter-disconnect: "切断する"
|
||||||
|
github: "GitHub連携"
|
||||||
|
github-connect: "GitHubアカウントに接続する"
|
||||||
|
github-reconnect: "再接続する"
|
||||||
|
github-disconnect: "切断する"
|
||||||
|
discord: "Discord連携"
|
||||||
|
discord-connect: "Discordアカウントに接続する"
|
||||||
|
discord-reconnect: "再接続する"
|
||||||
|
discord-disconnect: "切断する"
|
||||||
update: "Misskey Update"
|
update: "Misskey Update"
|
||||||
version: "バージョン:"
|
version: "バージョン:"
|
||||||
latest-version: "最新のバージョン:"
|
latest-version: "最新のバージョン:"
|
||||||
@@ -1286,6 +1368,8 @@ mobile/views/pages/settings.vue:
|
|||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
sound: "サウンド"
|
sound: "サウンド"
|
||||||
enable-sounds: "サウンドを有効にする"
|
enable-sounds: "サウンドを有効にする"
|
||||||
|
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
|
||||||
|
password: "パスワード"
|
||||||
mobile/views/pages/user.vue:
|
mobile/views/pages/user.vue:
|
||||||
follows-you: "フォローされています"
|
follows-you: "フォローされています"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@@ -1295,8 +1379,11 @@ mobile/views/pages/user.vue:
|
|||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
media: "メディア"
|
media: "メディア"
|
||||||
is-suspended: "このユーザーは凍結されています。"
|
is-suspended: "このユーザーは凍結されています。"
|
||||||
is-remote: "このユーザーはリモートユーザーです。"
|
mute: "ミュート"
|
||||||
view-remote: "正確な情報を見る"
|
unmute: "ミュート解除"
|
||||||
|
block: "ブロック"
|
||||||
|
unblock: "ブロック解除"
|
||||||
|
years-old: "{age}歳"
|
||||||
mobile/views/pages/user/home.vue:
|
mobile/views/pages/user/home.vue:
|
||||||
recent-notes: "最近の投稿"
|
recent-notes: "最近の投稿"
|
||||||
images: "画像"
|
images: "画像"
|
||||||
@@ -1307,17 +1394,46 @@ mobile/views/pages/user/home.vue:
|
|||||||
followers-you-know: "知り合いのフォロワー"
|
followers-you-know: "知り合いのフォロワー"
|
||||||
last-used-at: "最終ログイン"
|
last-used-at: "最終ログイン"
|
||||||
mobile/views/pages/user/home.followers-you-know.vue:
|
mobile/views/pages/user/home.followers-you-know.vue:
|
||||||
loading: "読み込み中"
|
|
||||||
no-users: "知り合いのユーザーはいません"
|
no-users: "知り合いのユーザーはいません"
|
||||||
mobile/views/pages/user/home.friends.vue:
|
mobile/views/pages/user/home.friends.vue:
|
||||||
loading: "読み込み中"
|
|
||||||
no-users: "よく会話するユーザーはいません"
|
no-users: "よく会話するユーザーはいません"
|
||||||
mobile/views/pages/user/home.notes.vue:
|
mobile/views/pages/user/home.notes.vue:
|
||||||
loading: "読み込み中"
|
|
||||||
no-notes: "投稿はありません"
|
no-notes: "投稿はありません"
|
||||||
mobile/views/pages/user/home.photos.vue:
|
mobile/views/pages/user/home.photos.vue:
|
||||||
loading: "読み込み中"
|
|
||||||
no-photos: "写真はありません"
|
no-photos: "写真はありません"
|
||||||
|
deck:
|
||||||
|
widgets: "ウィジェット"
|
||||||
|
home: "ホーム"
|
||||||
|
local: "ローカル"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
|
hashtag: "ハッシュタグ"
|
||||||
|
global: "グローバル"
|
||||||
|
mentions: "あなた宛て"
|
||||||
|
direct: "ダイレクト投稿"
|
||||||
|
notifications: "通知"
|
||||||
|
list: "リスト"
|
||||||
|
swap-left: "左に移動"
|
||||||
|
swap-right: "右に移動"
|
||||||
|
swap-up: "上に移動"
|
||||||
|
swap-down: "下に移動"
|
||||||
|
remove: "カラムを削除"
|
||||||
|
add-column: "カラムを追加"
|
||||||
|
rename: "名前を変更"
|
||||||
|
stack-left: "左に重ねる"
|
||||||
|
pop-right: "右に出す"
|
||||||
|
deck/deck.tl-column.vue:
|
||||||
|
is-media-only: "メディア投稿のみ"
|
||||||
|
is-media-view: "メディアビュー"
|
||||||
|
edit: "オプション"
|
||||||
|
deck/deck.user-column.vue:
|
||||||
|
posts: "投稿"
|
||||||
|
following: "フォロー"
|
||||||
|
followers: "フォロワー"
|
||||||
|
images: "画像"
|
||||||
|
activity: "アクティビティ"
|
||||||
|
timeline: "タイムライン"
|
||||||
|
pinned-notes: "ピン留めされた投稿"
|
||||||
|
push-to-a-list: "リストに追加"
|
||||||
docs:
|
docs:
|
||||||
edit-this-page-on-github: "間違いや改善点を見つけましたか?"
|
edit-this-page-on-github: "間違いや改善点を見つけましたか?"
|
||||||
edit-this-page-on-github-link: "このページをGitHubで編集"
|
edit-this-page-on-github-link: "このページをGitHubで編集"
|
||||||
@@ -1342,3 +1458,29 @@ docs:
|
|||||||
description: "説明"
|
description: "説明"
|
||||||
dev/views/index.vue:
|
dev/views/index.vue:
|
||||||
manage-apps: "アプリの管理"
|
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: "通知を操作する。"
|
||||||
|
|||||||
@@ -25,13 +25,11 @@ common:
|
|||||||
application-authorization: "アプリの連携"
|
application-authorization: "アプリの連携"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||||
|
load-more: "もっと読み込む"
|
||||||
got-it: "わかった"
|
got-it: "わかった"
|
||||||
customization-tips:
|
customization-tips:
|
||||||
title: "カスタマイズのヒント"
|
title: "カスタマイズのヒント"
|
||||||
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
|
paragraph: "<p>ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。</p><p>一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。</p><p>ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。</p><p>カスタマイズを終了するには、右上の「完了」をクリックします。</p>"
|
||||||
paragraph2: "一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。"
|
|
||||||
paragraph3: "ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。"
|
|
||||||
paragraph4: "カスタマイズを終了するには、右上の「完了」をクリックします。"
|
|
||||||
gotit: "Got it!"
|
gotit: "Got it!"
|
||||||
notification:
|
notification:
|
||||||
file-uploaded: "ファイルがアップロードされました"
|
file-uploaded: "ファイルがアップロードされました"
|
||||||
@@ -54,6 +52,8 @@ common:
|
|||||||
years_ago: "{}jaar geleden"
|
years_ago: "{}jaar geleden"
|
||||||
month-and-day: "{month}月 {day}日"
|
month-and-day: "{month}月 {day}日"
|
||||||
trash: "ゴミ箱"
|
trash: "ゴミ箱"
|
||||||
|
drive: "ドライブ"
|
||||||
|
messaging: "トーク"
|
||||||
weekday-short:
|
weekday-short:
|
||||||
sunday: "Z"
|
sunday: "Z"
|
||||||
monday: "M"
|
monday: "M"
|
||||||
@@ -112,20 +112,28 @@ common:
|
|||||||
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
||||||
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
||||||
show-full-acct: "ユーザー名のホストを省略しない"
|
show-full-acct: "ユーザー名のホストを省略しない"
|
||||||
|
show-via: "viaを表示する"
|
||||||
reduce-motion: "UIの動きを減らす"
|
reduce-motion: "UIの動きを減らす"
|
||||||
this-setting-is-this-device-only: "このデバイスのみ"
|
this-setting-is-this-device-only: "このデバイスのみ"
|
||||||
|
use-os-default-emojis: "OS標準の絵文字を使用"
|
||||||
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
||||||
|
is-remote-user: "このユーザー情報はコピーです。"
|
||||||
|
is-remote-post: "この投稿情報はコピーです。"
|
||||||
|
view-on-remote: "正確な情報を見る"
|
||||||
|
error:
|
||||||
|
title: '問題が発生しました'
|
||||||
|
retry: 'やり直す'
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "引き分け"
|
drawn: "引き分け"
|
||||||
my-turn: "あなたのターンです"
|
my-turn: "あなたのターンです"
|
||||||
opponent-turn: "相手のターンです"
|
opponent-turn: "相手のターンです"
|
||||||
turn-of: "{}のターンです"
|
turn-of: "{name}のターンです"
|
||||||
past-turn-of: "{}のターン"
|
past-turn-of: "{name}のターン"
|
||||||
won: "{}の勝ち"
|
won: "{name}の勝ち"
|
||||||
black: "黒"
|
black: "黒"
|
||||||
white: "白"
|
white: "白"
|
||||||
total: "合計"
|
total: "合計"
|
||||||
this-turn: "{}ターン目"
|
this-turn: "{count}ターン目"
|
||||||
widgets:
|
widgets:
|
||||||
analog-clock: "アナログ時計"
|
analog-clock: "アナログ時計"
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
@@ -144,34 +152,15 @@ common:
|
|||||||
users: "おすすめユーザー"
|
users: "おすすめユーザー"
|
||||||
polls: "アンケート"
|
polls: "アンケート"
|
||||||
post-form: "投稿フォーム"
|
post-form: "投稿フォーム"
|
||||||
messaging: "メッセージ"
|
|
||||||
server: "サーバー情報"
|
server: "サーバー情報"
|
||||||
donation: "寄付のお願い"
|
donation: "寄付のお願い"
|
||||||
nav: "ナビゲーション"
|
nav: "ナビゲーション"
|
||||||
tips: "ヒント"
|
tips: "ヒント"
|
||||||
hashtags: "ハッシュタグ"
|
hashtags: "ハッシュタグ"
|
||||||
deck:
|
dev: "アプリの作成に失敗しました。再度お試しください。"
|
||||||
widgets: "ウィジェット"
|
ai-chan-kawaii: "藍ちゃかわいい"
|
||||||
home: "ホーム"
|
|
||||||
local: "ローカル"
|
|
||||||
hybrid: "ソーシャル"
|
|
||||||
hashtag: "ハッシュタグ"
|
|
||||||
global: "グローバル"
|
|
||||||
mentions: "あなた宛て"
|
|
||||||
direct: "ダイレクト投稿"
|
|
||||||
notifications: "通知"
|
|
||||||
list: "リスト"
|
|
||||||
swap-left: "左に移動"
|
|
||||||
swap-right: "右に移動"
|
|
||||||
swap-up: "上に移動"
|
|
||||||
swap-down: "下に移動"
|
|
||||||
remove: "カラムを削除"
|
|
||||||
add-column: "カラムを追加"
|
|
||||||
rename: "名前を変更"
|
|
||||||
stack-left: "左に重ねる"
|
|
||||||
pop-right: "右に出す"
|
|
||||||
auth/views/form.vue:
|
auth/views/form.vue:
|
||||||
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
|
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
|
||||||
permission-ask: "このアプリは次の権限を要求しています:"
|
permission-ask: "このアプリは次の権限を要求しています:"
|
||||||
account-read: "アカウントの情報を見る。"
|
account-read: "アカウントの情報を見る。"
|
||||||
account-write: "アカウントの情報を操作する。"
|
account-write: "アカウントの情報を操作する。"
|
||||||
@@ -308,7 +297,6 @@ common/views/components/messaging.vue:
|
|||||||
no-history: "Geen geschiedenis"
|
no-history: "Geen geschiedenis"
|
||||||
common/views/components/messaging-room.vue:
|
common/views/components/messaging-room.vue:
|
||||||
empty: "Geen gesprekken"
|
empty: "Geen gesprekken"
|
||||||
more: "Meer"
|
|
||||||
no-history: "Er is geen verdere geschiedenis"
|
no-history: "Er is geen verdere geschiedenis"
|
||||||
resize-form: "Versleep om grootte te wijzigen"
|
resize-form: "Versleep om grootte te wijzigen"
|
||||||
new-message: "Nieuw bericht"
|
new-message: "Nieuw bericht"
|
||||||
@@ -356,6 +344,16 @@ common/views/components/poll-editor.vue:
|
|||||||
destroy: "Deze peiling vernietigen"
|
destroy: "Deze peiling vernietigen"
|
||||||
common/views/components/reaction-picker.vue:
|
common/views/components/reaction-picker.vue:
|
||||||
choose-reaction: "Kies een reactie"
|
choose-reaction: "Kies een reactie"
|
||||||
|
common/views/components/emoji-picker.vue:
|
||||||
|
custom-emoji: "カスタム絵文字"
|
||||||
|
people: "人"
|
||||||
|
animals-and-nature: "動物&自然"
|
||||||
|
food-and-drink: "食べ物&飲み物"
|
||||||
|
activity: "アクティビティ"
|
||||||
|
travel-and-places: "場所"
|
||||||
|
objects: "物"
|
||||||
|
symbols: "記号"
|
||||||
|
flags: "旗"
|
||||||
common/views/components/signin.vue:
|
common/views/components/signin.vue:
|
||||||
username: "Gebruikersnaam"
|
username: "Gebruikersnaam"
|
||||||
password: "Wachtwoord"
|
password: "Wachtwoord"
|
||||||
@@ -364,6 +362,8 @@ common/views/components/signin.vue:
|
|||||||
signin: "Inloggen"
|
signin: "Inloggen"
|
||||||
or: "または"
|
or: "または"
|
||||||
signin-with-twitter: "Twitterでログイン"
|
signin-with-twitter: "Twitterでログイン"
|
||||||
|
signin-with-github: "GitHubでログイン"
|
||||||
|
signin-with-discord: "Discordでログイン"
|
||||||
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
invitation-code: "招待コード"
|
invitation-code: "招待コード"
|
||||||
@@ -402,6 +402,20 @@ common/views/components/twitter-setting.vue:
|
|||||||
reconnect: "Opnieuw verbinden"
|
reconnect: "Opnieuw verbinden"
|
||||||
connect: "Koppel je Twitter-account"
|
connect: "Koppel je Twitter-account"
|
||||||
disconnect: "Verbinding verbreken"
|
disconnect: "Verbinding verbreken"
|
||||||
|
common/views/components/github-setting.vue:
|
||||||
|
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
|
||||||
|
connected-to: "次のGitHubアカウントに接続されています"
|
||||||
|
detail: "詳細..."
|
||||||
|
reconnect: "再接続する"
|
||||||
|
connect: "GitHubと接続する"
|
||||||
|
disconnect: "切断する"
|
||||||
|
common/views/components/discord-setting.vue:
|
||||||
|
description: "お使いのDiscordアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでDiscordアカウント情報が表示されるようになったり、Discordを用いた便利なサインインを利用できるようになります。"
|
||||||
|
connected-to: "次のDiscordアカウントに接続されています"
|
||||||
|
detail: "詳細..."
|
||||||
|
reconnect: "再接続する"
|
||||||
|
connect: "Discordと接続する"
|
||||||
|
disconnect: "切断する"
|
||||||
common/views/components/uploader.vue:
|
common/views/components/uploader.vue:
|
||||||
waiting: "Bezig met wachten"
|
waiting: "Bezig met wachten"
|
||||||
common/views/components/visibility-chooser.vue:
|
common/views/components/visibility-chooser.vue:
|
||||||
@@ -416,6 +430,25 @@ common/views/components/visibility-chooser.vue:
|
|||||||
common/views/components/trends.vue:
|
common/views/components/trends.vue:
|
||||||
count: "{}人が投稿"
|
count: "{}人が投稿"
|
||||||
empty: "トレンドなし"
|
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:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "Bezig met ophalen"
|
fetching: "Bezig met ophalen"
|
||||||
no-broadcasts: "Geen uitzendingen"
|
no-broadcasts: "Geen uitzendingen"
|
||||||
@@ -499,34 +532,12 @@ desktop/views/components/activity.vue:
|
|||||||
title: "Activiteit"
|
title: "Activiteit"
|
||||||
toggle: "Schakelen tussen weergaven"
|
toggle: "Schakelen tussen weergaven"
|
||||||
desktop/views/components/calendar.vue:
|
desktop/views/components/calendar.vue:
|
||||||
title: "{1} / {2}"
|
title: "{year}年 {month}月"
|
||||||
prev: "Vorige maand"
|
prev: "Vorige maand"
|
||||||
next: "Volgende maand"
|
next: "Volgende maand"
|
||||||
go: "Klik om te navigeren"
|
go: "Klik om te navigeren"
|
||||||
desktop/views/components/charts.vue:
|
|
||||||
title: "チャート"
|
|
||||||
per-day: "1日ごと"
|
|
||||||
per-hour: "1時間ごと"
|
|
||||||
notes: "投稿"
|
|
||||||
users: "ユーザー"
|
|
||||||
drive: "ドライブ"
|
|
||||||
network: "ネットワーク"
|
|
||||||
charts:
|
|
||||||
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:
|
desktop/views/components/choose-file-from-drive-window.vue:
|
||||||
choose-file: "Bestanden kiezen"
|
chosen-files: "{count}ファイル選択中"
|
||||||
upload: "Bestanden uploaden van je computer"
|
upload: "Bestanden uploaden van je computer"
|
||||||
cancel: "Annuleren"
|
cancel: "Annuleren"
|
||||||
ok: "Oké"
|
ok: "Oké"
|
||||||
@@ -541,7 +552,6 @@ desktop/views/components/crop-window.vue:
|
|||||||
ok: "Oké"
|
ok: "Oké"
|
||||||
desktop/views/components/drive-window.vue:
|
desktop/views/components/drive-window.vue:
|
||||||
used: "gebruikt"
|
used: "gebruikt"
|
||||||
drive: "Drive"
|
|
||||||
desktop/views/components/drive.file.vue:
|
desktop/views/components/drive.file.vue:
|
||||||
avatar: "Gebruikersafbeelding"
|
avatar: "Gebruikersafbeelding"
|
||||||
banner: "Omslagfoto"
|
banner: "Omslagfoto"
|
||||||
@@ -571,11 +581,8 @@ desktop/views/components/drive.folder.vue:
|
|||||||
rename: "Naam wijzigen"
|
rename: "Naam wijzigen"
|
||||||
rename-folder: "Mapnaam wijzigen"
|
rename-folder: "Mapnaam wijzigen"
|
||||||
input-new-folder-name: "Voer een nieuwe naam in"
|
input-new-folder-name: "Voer een nieuwe naam in"
|
||||||
desktop/views/components/drive.nav-folder.vue:
|
|
||||||
drive: "Drive"
|
|
||||||
desktop/views/components/drive.vue:
|
desktop/views/components/drive.vue:
|
||||||
search: "Zoeken"
|
search: "Zoeken"
|
||||||
load-more: "Meer laden"
|
|
||||||
empty-draghover: "Welkom!"
|
empty-draghover: "Welkom!"
|
||||||
empty-drive: "Je schijf is leeg"
|
empty-drive: "Je schijf is leeg"
|
||||||
empty-drive-description: "Je kunt ook uploaden door te klikken met de rechtermuisknop en te kiezen voor \"Bestand uploaden\" of door een bestand naar dit venster te slepen."
|
empty-drive-description: "Je kunt ook uploaden door te klikken met de rechtermuisknop en te kiezen voor \"Bestand uploaden\" of door een bestand naar dit venster te slepen."
|
||||||
@@ -599,12 +606,6 @@ desktop/views/components/media-image.vue:
|
|||||||
desktop/views/components/media-video.vue:
|
desktop/views/components/media-video.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
desktop/views/components/follow-button.vue:
|
|
||||||
following: "フォロー中"
|
|
||||||
follow: "Volgen"
|
|
||||||
request-pending: "フォロー許可待ち"
|
|
||||||
follow-processing: "フォロー処理中"
|
|
||||||
follow-request: "フォロー申請"
|
|
||||||
desktop/views/components/followers-window.vue:
|
desktop/views/components/followers-window.vue:
|
||||||
followers: "Volgers van {}"
|
followers: "Volgers van {}"
|
||||||
desktop/views/components/followers.vue:
|
desktop/views/components/followers.vue:
|
||||||
@@ -633,27 +634,24 @@ desktop/views/components/messaging-room-window.vue:
|
|||||||
desktop/views/components/messaging-window.vue:
|
desktop/views/components/messaging-window.vue:
|
||||||
title: "Gesprekken"
|
title: "Gesprekken"
|
||||||
desktop/views/components/note-detail.vue:
|
desktop/views/components/note-detail.vue:
|
||||||
more: "Meer gesprekken laden"
|
|
||||||
private: "(dit bericht is privé)"
|
private: "(dit bericht is privé)"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
location: "Locatie"
|
location: "Locatie"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
add-reaction: "リアクション"
|
add-reaction: "リアクション"
|
||||||
desktop/views/components/notes.note.vue:
|
desktop/views/components/note.vue:
|
||||||
reposted-by: "Hergeplaatst door {}"
|
reposted-by: "{}がRenote"
|
||||||
reply: "Antwoord"
|
reply: "返信"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
add-reaction: "Reactie toevoegen"
|
add-reaction: "リアクション"
|
||||||
detail: "Details tonen"
|
detail: "詳細"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "Laden mislukt."
|
error: "Laden mislukt."
|
||||||
retry: "Opnieuw proberen"
|
retry: "Opnieuw proberen"
|
||||||
load-more: "もっと読み込む"
|
|
||||||
desktop/views/components/notifications.vue:
|
desktop/views/components/notifications.vue:
|
||||||
more: "Meer"
|
|
||||||
empty: "Geen meldingen"
|
empty: "Geen meldingen"
|
||||||
desktop/views/components/post-form.vue:
|
desktop/views/components/post-form.vue:
|
||||||
add-visible-user: "+ユーザーを追加"
|
add-visible-user: "+ユーザーを追加"
|
||||||
@@ -700,14 +698,17 @@ desktop/views/components/renote-form.vue:
|
|||||||
failure: "Renote mislukt"
|
failure: "Renote mislukt"
|
||||||
desktop/views/components/renote-form-window.vue:
|
desktop/views/components/renote-form-window.vue:
|
||||||
title: "Weet je zeker dat je deze notitie wilt renoten?"
|
title: "Weet je zeker dat je deze notitie wilt renoten?"
|
||||||
|
desktop/views/pages/user-following-or-followers.vue:
|
||||||
|
following: "{user}のフォロー"
|
||||||
|
followers: "{user}のフォロワー"
|
||||||
desktop/views/components/settings-window.vue:
|
desktop/views/components/settings-window.vue:
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
desktop/views/components/settings.vue:
|
desktop/views/components/settings.vue:
|
||||||
profile: "Profiel"
|
profile: "Profiel"
|
||||||
notification: "Melding"
|
notification: "Melding"
|
||||||
apps: "Apps"
|
apps: "Apps"
|
||||||
mute: "Dempen"
|
mute-and-block: "ミュート/ブロック"
|
||||||
drive: "Drive"
|
blocking: "ブロック"
|
||||||
security: "Beveiliging"
|
security: "Beveiliging"
|
||||||
signin: "Inloggeschiedenis"
|
signin: "Inloggeschiedenis"
|
||||||
password: "Wachtwoord"
|
password: "Wachtwoord"
|
||||||
@@ -726,8 +727,12 @@ desktop/views/components/settings.vue:
|
|||||||
advanced: "Geavanceerde instellingen"
|
advanced: "Geavanceerde instellingen"
|
||||||
api-via-stream: "API-verzoek via stream"
|
api-via-stream: "API-verzoek via stream"
|
||||||
api-via-stream-desc: "API-verzoek wordt uitgevoerd via de WebSocket-verbinding i.p.v. de ingebouwde ophaal-API (voor verbeterde prestaties). Deze instelling wordt opgeslagen in je browser."
|
api-via-stream-desc: "API-verzoek wordt uitgevoerd via de WebSocket-verbinding i.p.v. de ingebouwde ophaal-API (voor verbeterde prestaties). Deze instelling wordt opgeslagen in je browser."
|
||||||
|
deck-nav: "デッキ内ナビゲーション"
|
||||||
|
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
|
||||||
|
deck-default: "デッキをデフォルトのUIにする"
|
||||||
display: "Ontwerp en weergave"
|
display: "Ontwerp en weergave"
|
||||||
customize: "Startpagina aanpassen"
|
customize: "Startpagina aanpassen"
|
||||||
|
wallpaper: "壁紙"
|
||||||
choose-wallpaper: "壁紙を選択"
|
choose-wallpaper: "壁紙を選択"
|
||||||
delete-wallpaper: "壁紙を削除"
|
delete-wallpaper: "壁紙を削除"
|
||||||
dark-mode: "Donkere modus"
|
dark-mode: "Donkere modus"
|
||||||
@@ -739,17 +744,19 @@ desktop/views/components/settings.vue:
|
|||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
show-clock-on-header: "右上に時計を表示する"
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "Antwoord-knop tonen"
|
show-reply-target: "Antwoord-knop tonen"
|
||||||
|
timeline: "タイムライン"
|
||||||
show-my-renotes: "Mijn renote tonen op de tijdlijn"
|
show-my-renotes: "Mijn renote tonen op de tijdlijn"
|
||||||
show-renoted-my-notes: "Mijn gerenote bericht tonen op de tijdlijn"
|
show-renoted-my-notes: "Mijn gerenote bericht tonen op de tijdlijn"
|
||||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "Kaart tonen"
|
show-maps: "Kaart tonen"
|
||||||
|
deck-column-align: "デッキのカラムの位置"
|
||||||
|
deck-column-align-center: "中央"
|
||||||
|
deck-column-align-left: "左"
|
||||||
sound: "Geluid"
|
sound: "Geluid"
|
||||||
enable-sounds: "Geluid inschakelen"
|
enable-sounds: "Geluid inschakelen"
|
||||||
enable-sounds-desc: "Een geluid afspelen bij het ontvangen van een bericht. Deze instelling wordt opgeslagen in je browser."
|
enable-sounds-desc: "Een geluid afspelen bij het ontvangen van een bericht. Deze instelling wordt opgeslagen in je browser."
|
||||||
volume: "Volume"
|
volume: "Volume"
|
||||||
test: "Testen"
|
test: "Testen"
|
||||||
mobile: "Mobiel"
|
|
||||||
disable-via-mobile: "Berichten niet markeren als 'via mobiel'"
|
|
||||||
language: "Taal"
|
language: "Taal"
|
||||||
pick-language: "Selecteer een taal"
|
pick-language: "Selecteer een taal"
|
||||||
recommended: "Aanbevolen"
|
recommended: "Aanbevolen"
|
||||||
@@ -785,6 +792,10 @@ desktop/views/components/settings.vue:
|
|||||||
tools: "Hulpmiddelen"
|
tools: "Hulpmiddelen"
|
||||||
task-manager: "Taakbeheer"
|
task-manager: "Taakbeheer"
|
||||||
third-parties: "Derde partij"
|
third-parties: "Derde partij"
|
||||||
|
navbar-position: "ナビゲーションバーの位置"
|
||||||
|
navbar-position-top: "上"
|
||||||
|
navbar-position-left: "左"
|
||||||
|
navbar-position-right: "右"
|
||||||
desktop/views/components/settings.2fa.vue:
|
desktop/views/components/settings.2fa.vue:
|
||||||
intro: "Als je verificatie in twee stappen instelt, dan heb je niet alleen een wachtwoord nodig bij het inloggen, maar ook een geregistreerd fysiek apparaat (zoals je smartphone). Dit verhoogt de veiligheid. "
|
intro: "Als je verificatie in twee stappen instelt, dan heb je niet alleen een wachtwoord nodig bij het inloggen, maar ook een geregistreerd fysiek apparaat (zoals je smartphone). Dit verhoogt de veiligheid. "
|
||||||
detail: "Details bekijken..."
|
detail: "Details bekijken..."
|
||||||
@@ -803,41 +814,44 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
success: "Instellen voltooid!"
|
success: "Instellen voltooid!"
|
||||||
failed: "Instellen mislukt. Zorg ervoor dat de sleutel juist is."
|
failed: "Instellen mislukt. Zorg ervoor dat de sleutel juist is."
|
||||||
info: "Vanaf nu moet je ook de op je apparaat getoonde sleutel tonen bij het inloggen op Misskey."
|
info: "Vanaf nu moet je ook de op je apparaat getoonde sleutel tonen bij het inloggen op Misskey."
|
||||||
desktop/views/components/settings.api.vue:
|
common/views/components/api-settings.vue:
|
||||||
intro: "Als je toegang wilt tot de API, stel deze sleutel dan in als 'i' bij de verzoekparameters."
|
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
||||||
caution: "Laat deze sleutel niet zien aan derde partijen (en voer hem nergens anders in dan hier), anders kan je account gehackt worden."
|
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||||
regeneration-of-token: "Mocht deze sleutel tóch uitlekken, dan kun je hem opnieuw genereren."
|
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||||
regenerate-token: "Sleutel opnieuw genereren"
|
regenerate-token: "トークンを再生成"
|
||||||
token: "Sleutel:"
|
token: "Token:"
|
||||||
enter-password: "Voer je wachtwoord in"
|
enter-password: "パスワードを入力してください"
|
||||||
|
console:
|
||||||
|
title: 'APIコンソール'
|
||||||
|
endpoint: 'エンドポイント'
|
||||||
|
parameter: 'パラメータ'
|
||||||
|
credential-info: "「i」パラメータは自動で付与されます。"
|
||||||
|
send: '送信'
|
||||||
|
sending: '応答待ち'
|
||||||
|
response: '結果'
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "連携しているアプリケーションはありません"
|
no-apps: "連携しているアプリケーションはありません"
|
||||||
desktop/views/components/settings.drive.vue:
|
common/views/components/drive-settings.vue:
|
||||||
max: "中"
|
max: "容量"
|
||||||
in-use: "使用中"
|
in-use: "使用中"
|
||||||
desktop/views/components/settings.mute.vue:
|
stats: "統計"
|
||||||
no-users: "Geen gedempte gebruikers"
|
common/views/components/mute-and-block.vue:
|
||||||
desktop/views/components/settings.password.vue:
|
mute-and-block: "ミュートとブロック"
|
||||||
reset: "Wachtwoord wijzigen"
|
mute: "ミュート"
|
||||||
enter-current-password: "Voer je huidige wachtwoord in"
|
block: "ブロック"
|
||||||
enter-new-password: "Voer je nieuwe wachtwoord in"
|
no-muted-users: "ミュートしているユーザーはいません"
|
||||||
enter-new-password-again: "Voer je nieuwe wachtwoord nogmaals in"
|
no-blocked-users: "ブロックしているユーザーはいません"
|
||||||
not-match: "Het nieuwe wachtwoord komt niet overeen"
|
word-mute: "ワードミュート"
|
||||||
changed: "Wachtwoord bijgewerkt"
|
muted-words: "ミュートされたキーワード"
|
||||||
desktop/views/components/settings.profile.vue:
|
muted-words-description: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります"
|
||||||
avatar: "Gebruikersafbeelding"
|
save: "保存"
|
||||||
choice-avatar: "Kies een afbeelding"
|
common/views/components/password-settings.vue:
|
||||||
name: "Naam"
|
reset: "パスワードを変更する"
|
||||||
location: "Locatie"
|
enter-current-password: "現在のパスワードを入力してください"
|
||||||
description: "Omschrijving"
|
enter-new-password: "新しいパスワードを入力してください"
|
||||||
birthday: "Geboortedatum"
|
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
||||||
save: "Profiel bijwerken"
|
not-match: "新しいパスワードが一致しません"
|
||||||
locked-account: "アカウントの保護"
|
changed: "パスワードを変更しました"
|
||||||
is-locked: "フォローを承認制にする"
|
|
||||||
other: "その他"
|
|
||||||
is-bot: "Dit account is een Bot"
|
|
||||||
is-cat: "Dit account is een Kat"
|
|
||||||
profile-updated: "プロフィールを更新しました"
|
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
@@ -862,7 +876,6 @@ desktop/views/components/ui.header.vue:
|
|||||||
adjective: "さん"
|
adjective: "さん"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "Je profiel"
|
profile: "Je profiel"
|
||||||
drive: "Drive"
|
|
||||||
favorites: "Favorieten"
|
favorites: "Favorieten"
|
||||||
lists: "Lijsten"
|
lists: "Lijsten"
|
||||||
follow-requests: "フォロー申請"
|
follow-requests: "フォロー申請"
|
||||||
@@ -874,7 +887,6 @@ desktop/views/components/ui.header.account.vue:
|
|||||||
desktop/views/components/ui.header.nav.vue:
|
desktop/views/components/ui.header.nav.vue:
|
||||||
home: "Startpagina"
|
home: "Startpagina"
|
||||||
deck: "デッキ"
|
deck: "デッキ"
|
||||||
messaging: "Berichten"
|
|
||||||
game: "Othello spelen"
|
game: "Othello spelen"
|
||||||
desktop/views/components/ui.header.notifications.vue:
|
desktop/views/components/ui.header.notifications.vue:
|
||||||
title: "Meldingen"
|
title: "Meldingen"
|
||||||
@@ -897,54 +909,153 @@ desktop/views/components/user-preview.vue:
|
|||||||
desktop/views/components/users-list.vue:
|
desktop/views/components/users-list.vue:
|
||||||
all: "Alle"
|
all: "Alle"
|
||||||
iknow: "die ik ken"
|
iknow: "die ik ken"
|
||||||
load-more: "Meer"
|
|
||||||
fetching: "Bezig met laden…"
|
fetching: "Bezig met laden…"
|
||||||
desktop/views/components/users-list-item.vue:
|
desktop/views/components/users-list-item.vue:
|
||||||
followed: "Volgt jou"
|
followed: "Volgt jou"
|
||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "Uitvouwen"
|
popout: "Uitvouwen"
|
||||||
close: "Sluiten"
|
close: "Sluiten"
|
||||||
desktop/views/pages/admin/admin.vue:
|
admin/views/index.vue:
|
||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
drive: "ドライブ"
|
instance: "インスタンス"
|
||||||
|
emoji: "カスタム絵文字"
|
||||||
|
moderators: "モデレーター"
|
||||||
users: "ユーザー"
|
users: "ユーザー"
|
||||||
update: "更新"
|
update: "更新"
|
||||||
desktop/views/pages/admin/admin.dashboard.vue:
|
announcements: "お知らせ"
|
||||||
|
hashtags: "ハッシュタグ"
|
||||||
|
back-to-misskey: "Misskeyに戻る"
|
||||||
|
admin/views/dashboard.vue:
|
||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
all-users: "全てのユーザー"
|
accounts: "アカウント"
|
||||||
original-users: "このインスタンスのユーザー"
|
notes: "投稿"
|
||||||
all-notes: "全ての投稿"
|
drive: "ドライブ"
|
||||||
original-notes: "このインスタンスの投稿"
|
instances: "インスタンス"
|
||||||
|
this-instance: "このインスタンス"
|
||||||
|
federated: "連合"
|
||||||
|
admin/views/instance.vue:
|
||||||
|
instance: "インスタンス"
|
||||||
|
instance-name: "インスタンス名"
|
||||||
|
instance-description: "インスタンスの紹介"
|
||||||
|
host: "ホスト"
|
||||||
|
banner-url: "バナー画像URL"
|
||||||
|
languages: "インスタンスの対象言語"
|
||||||
|
languages-desc: "スペースで区切って複数設定できます。"
|
||||||
|
maintainer-config: "管理者情報"
|
||||||
|
maintainer-name: "管理者名"
|
||||||
|
maintainer-email: "管理者の連絡先"
|
||||||
|
drive-config: "ドライブの設定"
|
||||||
|
cache-remote-files: "リモートのファイルをキャッシュする"
|
||||||
|
cache-remote-files-desc: "この設定を無効にすると、リモートファイルをキャッシュせず直リンクするようになります。そのためサーバーのストレージを節約できますが、プライバシー設定で直リンクを無効にしているユーザーにはファイルが見えなくなったり、サムネイルが生成されないので通信量が増加します。通常はこの設定をオンにしておくことをおすすめします。"
|
||||||
|
local-drive-capacity-mb: "ローカルユーザーひとりあたりのドライブ容量"
|
||||||
|
remote-drive-capacity-mb: "リモートユーザーひとりあたりのドライブ容量"
|
||||||
|
mb: "メガバイト単位"
|
||||||
|
recaptcha-config: "reCAPTCHAの設定"
|
||||||
|
recaptcha-info: "reCAPTCHAを有効にする場合、reCAPTCHAトークンを取得する必要があります。https://www.google.com/recaptcha/intro/ にアクセスしてトークンを取得してください。"
|
||||||
|
enable-recaptcha: "reCAPTCHAを有効にする"
|
||||||
|
recaptcha-site-key: "reCAPTCHA site key"
|
||||||
|
recaptcha-secret-key: "reCAPTCHA secret key"
|
||||||
|
twitter-integration-config: "Twitter連携の設定"
|
||||||
|
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。"
|
||||||
|
enable-twitter-integration: "Twitter連携を有効にする"
|
||||||
|
twitter-integration-consumer-key: "Consumer key"
|
||||||
|
twitter-integration-consumer-secret: "Consumer secret"
|
||||||
|
github-integration-config: "GitHub連携の設定"
|
||||||
|
github-integration-info: "コールバックURLは /api/gh/cb に設定します。"
|
||||||
|
enable-github-integration: "GitHub連携を有効にする"
|
||||||
|
github-integration-client-id: "Client ID"
|
||||||
|
github-integration-client-secret: "Client Secret"
|
||||||
|
discord-integration-config: "Discord連携の設定"
|
||||||
|
discord-integration-info: "コールバックURLは /api/dc/cb に設定します。"
|
||||||
|
enable-discord-integration: "Discord連携を有効にする"
|
||||||
|
discord-integration-client-id: "Client ID"
|
||||||
|
discord-integration-client-secret: "Client Secret"
|
||||||
|
proxy-account-config: "プロキシアカウントの設定"
|
||||||
|
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
|
||||||
|
proxy-account-username: "プロキシアカウントのユーザー名"
|
||||||
|
proxy-account-username-desc: "プロキシとして使用するアカウントのユーザー名を指定してください。"
|
||||||
|
proxy-account-warn: "アカウントは自動で作られないため、そのユーザー名のアカウントを予め作成しておく必要があります。"
|
||||||
|
max-note-text-length: "投稿の最大文字数"
|
||||||
|
disable-registration: "ユーザー登録の受付を停止する"
|
||||||
|
disable-local-timeline: "ローカルタイムラインを無効にする"
|
||||||
invite: "招待"
|
invite: "招待"
|
||||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
save: "保存"
|
||||||
|
saved: "保存しました"
|
||||||
|
admin/views/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: "通信量"
|
||||||
|
admin/views/users.vue:
|
||||||
suspend-user: "ユーザーの凍結"
|
suspend-user: "ユーザーの凍結"
|
||||||
suspend: "凍結"
|
suspend: "凍結"
|
||||||
suspended: "凍結しました"
|
suspended: "凍結しました"
|
||||||
desktop/views/pages/admin/admin.unsuspend-user.vue:
|
|
||||||
unsuspend-user: "ユーザーの凍結の解除"
|
unsuspend-user: "ユーザーの凍結の解除"
|
||||||
unsuspend: "凍結の解除"
|
unsuspend: "凍結の解除"
|
||||||
unsuspended: "凍結を解除しました"
|
unsuspended: "凍結を解除しました"
|
||||||
desktop/views/pages/admin/admin.verify-user.vue:
|
|
||||||
verify-user: "ユーザーの公式アカウント設定"
|
verify-user: "ユーザーの公式アカウント設定"
|
||||||
verify: "公式アカウントにする"
|
verify: "公式アカウントにする"
|
||||||
verified: "公式アカウントにしました"
|
verified: "公式アカウントにしました"
|
||||||
desktop/views/pages/admin/admin.unverify-user.vue:
|
|
||||||
unverify-user: "ユーザーの公式アカウント解除"
|
unverify-user: "ユーザーの公式アカウント解除"
|
||||||
unverify: "公式アカウントを解除する"
|
unverify: "公式アカウントを解除する"
|
||||||
unverified: "公式アカウントを解除しました"
|
unverified: "公式アカウントを解除しました"
|
||||||
desktop/views/pages/deck/deck.tl-column.vue:
|
admin/views/moderators.vue:
|
||||||
is-media-only: "メディア投稿のみ"
|
add-moderator:
|
||||||
is-media-view: "メディアビュー"
|
title: "モデレーターの登録"
|
||||||
edit: "オプション"
|
add: "登録"
|
||||||
desktop/views/pages/deck/deck.note.vue:
|
added: "モデレーターを登録しました"
|
||||||
reposted-by: "{}がRenote"
|
admin/views/emoji.vue:
|
||||||
private: "この投稿は非公開です"
|
add-emoji:
|
||||||
deleted: "この投稿は削除されました"
|
title: "絵文字の登録"
|
||||||
desktop/views/pages/stats/stats.vue:
|
name: "絵文字名"
|
||||||
all-users: "全てのユーザー"
|
name-desc: "a~z 0~9 _ の文字が使えます。"
|
||||||
original-users: "このインスタンスのユーザー"
|
aliases: "エイリアス"
|
||||||
all-notes: "全ての投稿"
|
aliases-desc: "スペースで区切って複数設定できます。"
|
||||||
original-notes: "このインスタンスの投稿"
|
url: "絵文字画像URL"
|
||||||
|
add: "追加"
|
||||||
|
info: "50KB以下のPNG画像をおすすめします。"
|
||||||
|
added: "絵文字を登録しました"
|
||||||
|
emojis:
|
||||||
|
title: "絵文字一覧"
|
||||||
|
update: "更新"
|
||||||
|
remove: "削除"
|
||||||
|
updated: "更新しました"
|
||||||
|
remove-emoji:
|
||||||
|
are-you-sure: "「$1」を削除しますか?"
|
||||||
|
removed: "削除しました"
|
||||||
|
admin/views/announcements.vue:
|
||||||
|
announcements: "お知らせ"
|
||||||
|
save: "保存"
|
||||||
|
remove: "削除"
|
||||||
|
add: "追加"
|
||||||
|
title: "タイトル"
|
||||||
|
text: "内容"
|
||||||
|
saved: "保存しました"
|
||||||
|
_remove:
|
||||||
|
are-you-sure: "「$1」を削除しますか?"
|
||||||
|
removed: "削除しました"
|
||||||
|
admin/views/hashtags.vue:
|
||||||
|
hided-tags: "Hidden Tags"
|
||||||
desktop/views/pages/welcome.vue:
|
desktop/views/pages/welcome.vue:
|
||||||
about: "詳しく..."
|
about: "詳しく..."
|
||||||
gotit: "わかった"
|
gotit: "わかった"
|
||||||
@@ -959,8 +1070,6 @@ desktop/views/pages/welcome.vue:
|
|||||||
info: "情報"
|
info: "情報"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
desktop/views/pages/favorites.vue:
|
|
||||||
more: "Meer laden"
|
|
||||||
desktop/views/pages/home-customize.vue:
|
desktop/views/pages/home-customize.vue:
|
||||||
title: "Startpagina aanpassen"
|
title: "Startpagina aanpassen"
|
||||||
desktop/views/pages/note.vue:
|
desktop/views/pages/note.vue:
|
||||||
@@ -973,11 +1082,11 @@ desktop/views/pages/selectdrive.vue:
|
|||||||
upload: "Bestanden uploaden van je PC"
|
upload: "Bestanden uploaden van je PC"
|
||||||
desktop/views/pages/search.vue:
|
desktop/views/pages/search.vue:
|
||||||
not-available: "検索機能はインスタンスの設定で無効になっています。"
|
not-available: "検索機能はインスタンスの設定で無効になっています。"
|
||||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
not-found: "「{q}」に関する投稿は見つかりませんでした。"
|
||||||
desktop/views/pages/share.vue:
|
desktop/views/pages/share.vue:
|
||||||
share-with: "{}で共有"
|
share-with: "{name}で共有"
|
||||||
desktop/views/pages/tag.vue:
|
desktop/views/pages/tag.vue:
|
||||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
|
||||||
desktop/views/pages/user-list.users.vue:
|
desktop/views/pages/user-list.users.vue:
|
||||||
users: "Gebruiker"
|
users: "Gebruiker"
|
||||||
add-user: "Gebruiker toevoegen"
|
add-user: "Gebruiker toevoegen"
|
||||||
@@ -990,12 +1099,6 @@ desktop/views/pages/user/user.friends.vue:
|
|||||||
title: "Frequent beantwoord"
|
title: "Frequent beantwoord"
|
||||||
loading: "Bezig met laden"
|
loading: "Bezig met laden"
|
||||||
no-users: "Geen gebruikers"
|
no-users: "Geen gebruikers"
|
||||||
desktop/views/pages/user/user.vue:
|
|
||||||
is-suspended: "このユーザーは凍結されています。"
|
|
||||||
is-remote: "このユーザーはリモートユーザーです。"
|
|
||||||
view-remote: "正確な情報を見る"
|
|
||||||
desktop/views/pages/user/user.home.vue:
|
|
||||||
last-used-at: "Laatst actief: "
|
|
||||||
desktop/views/pages/user/user.photos.vue:
|
desktop/views/pages/user/user.photos.vue:
|
||||||
title: "Foto's"
|
title: "Foto's"
|
||||||
loading: "Bezig met laden"
|
loading: "Bezig met laden"
|
||||||
@@ -1008,6 +1111,9 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "Dempen"
|
mute: "Dempen"
|
||||||
muted: "Dempend"
|
muted: "Dempend"
|
||||||
unmute: "Ontdempen"
|
unmute: "Ontdempen"
|
||||||
|
block: "ブロックする"
|
||||||
|
unblock: "ブロック解除"
|
||||||
|
block-confirm: "このユーザーをブロックしますか?"
|
||||||
push-to-a-list: "リストに追加"
|
push-to-a-list: "リストに追加"
|
||||||
list-pushed: "{user}を{list}に追加しました。"
|
list-pushed: "{user}を{list}に追加しました。"
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.header.vue:
|
||||||
@@ -1015,6 +1121,10 @@ desktop/views/pages/user/user.header.vue:
|
|||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
followers: "フォロワー"
|
followers: "フォロワー"
|
||||||
is-bot: "このアカウントはBotです"
|
is-bot: "このアカウントはBotです"
|
||||||
|
years-old: "{age}歳"
|
||||||
|
year: "年"
|
||||||
|
month: "月"
|
||||||
|
day: "日"
|
||||||
desktop/views/pages/user/user.timeline.vue:
|
desktop/views/pages/user/user.timeline.vue:
|
||||||
default: "Berichten"
|
default: "Berichten"
|
||||||
with-replies: "Berichten en antwoorden"
|
with-replies: "Berichten en antwoorden"
|
||||||
@@ -1044,12 +1154,10 @@ desktop/views/widgets/users.vue:
|
|||||||
refresh: "Anderen tonen"
|
refresh: "Anderen tonen"
|
||||||
no-one: "Niemand"
|
no-one: "Niemand"
|
||||||
mobile/views/components/drive.vue:
|
mobile/views/components/drive.vue:
|
||||||
drive: "Drive"
|
|
||||||
used: "gebruikt"
|
used: "gebruikt"
|
||||||
folder-count: "Map(pen)"
|
folder-count: "Map(pen)"
|
||||||
count-separator: ", "
|
count-separator: ", "
|
||||||
file-count: "Bestand(en)"
|
file-count: "Bestand(en)"
|
||||||
load-more: "Meer laden"
|
|
||||||
nothing-in-drive: "Niks"
|
nothing-in-drive: "Niks"
|
||||||
folder-is-empty: "Deze map is leeg"
|
folder-is-empty: "Deze map is leeg"
|
||||||
prompt: "何をしますか?(数字を入力してください): <1 → ファイルをアップロード | 2 → ファイルをURLでアップロード | 3 → フォルダ作成 | 4 → このフォルダ名を変更 | 5 → このフォルダを移動 | 6 → このフォルダを削除>"
|
prompt: "何をしますか?(数字を入力してください): <1 → ファイルをアップロード | 2 → ファイルをURLでアップロード | 3 → フォルダ作成 | 4 → このフォルダ名を変更 | 5 → このフォルダを移動 | 6 → このフォルダを削除>"
|
||||||
@@ -1059,8 +1167,6 @@ mobile/views/components/drive.vue:
|
|||||||
root-move-alert: "現在いる場所はルートで、フォルダではないため移動はできません。移動したいフォルダに移動してからやってください。"
|
root-move-alert: "現在いる場所はルートで、フォルダではないため移動はできません。移動したいフォルダに移動してからやってください。"
|
||||||
url-prompt: "アップロードしたいファイルのURL"
|
url-prompt: "アップロードしたいファイルのURL"
|
||||||
uploading: "アップロードをリクエストしました。アップロードが完了するまで時間がかかる場合があります。"
|
uploading: "アップロードをリクエストしました。アップロードが完了するまで時間がかかる場合があります。"
|
||||||
mobile/views/components/drive-file-detail.vue:
|
|
||||||
rename: "名前を変更"
|
|
||||||
mobile/views/components/drive-file-chooser.vue:
|
mobile/views/components/drive-file-chooser.vue:
|
||||||
select-file: "Kies een bestand"
|
select-file: "Kies een bestand"
|
||||||
mobile/views/components/drive-folder-chooser.vue:
|
mobile/views/components/drive-folder-chooser.vue:
|
||||||
@@ -1074,15 +1180,17 @@ mobile/views/components/drive.file-detail.vue:
|
|||||||
hash: "Hash (md5)"
|
hash: "Hash (md5)"
|
||||||
exif: "EXIF"
|
exif: "EXIF"
|
||||||
nsfw: "閲覧注意"
|
nsfw: "閲覧注意"
|
||||||
|
mark-as-sensitive: "閲覧注意に設定"
|
||||||
|
unmark-as-sensitive: "閲覧注意を解除"
|
||||||
mobile/views/components/media-image.vue:
|
mobile/views/components/media-image.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
mobile/views/components/media-video.vue:
|
mobile/views/components/media-video.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
mobile/views/components/follow-button.vue:
|
common/views/components/follow-button.vue:
|
||||||
following: "フォロー中"
|
following: "フォロー中"
|
||||||
follow: "Volgen"
|
follow: "フォロー"
|
||||||
request-pending: "フォロー許可待ち"
|
request-pending: "フォロー許可待ち"
|
||||||
follow-processing: "フォロー処理中"
|
follow-processing: "フォロー処理中"
|
||||||
follow-request: "フォロー申請"
|
follow-request: "フォロー申請"
|
||||||
@@ -1112,11 +1220,7 @@ mobile/views/components/note-sub.vue:
|
|||||||
admin: "admin"
|
admin: "admin"
|
||||||
bot: "bot"
|
bot: "bot"
|
||||||
cat: "cat"
|
cat: "cat"
|
||||||
mobile/views/components/notes.vue:
|
|
||||||
failed: "読み込みに失敗しました。"
|
|
||||||
retry: "リトライ"
|
|
||||||
mobile/views/components/notifications.vue:
|
mobile/views/components/notifications.vue:
|
||||||
more: "Meer"
|
|
||||||
empty: "Geen meldingen"
|
empty: "Geen meldingen"
|
||||||
mobile/views/components/post-form.vue:
|
mobile/views/components/post-form.vue:
|
||||||
add-visible-user: "ユーザーを追加"
|
add-visible-user: "ユーザーを追加"
|
||||||
@@ -1136,17 +1240,14 @@ mobile/views/components/sub-note-content.vue:
|
|||||||
poll: "Peiling"
|
poll: "Peiling"
|
||||||
mobile/views/components/timeline.vue:
|
mobile/views/components/timeline.vue:
|
||||||
empty: "Geen notities"
|
empty: "Geen notities"
|
||||||
load-more: "Meer"
|
|
||||||
mobile/views/components/ui.header.vue:
|
mobile/views/components/ui.header.vue:
|
||||||
welcome-back: "おかえりなさい、"
|
welcome-back: "おかえりなさい、"
|
||||||
adjective: "さん"
|
adjective: "さん"
|
||||||
mobile/views/components/ui.nav.vue:
|
mobile/views/components/ui.nav.vue:
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
notifications: "Meldingen"
|
notifications: "Meldingen"
|
||||||
messaging: "Gesprekken"
|
|
||||||
follow-requests: "フォロー申請"
|
follow-requests: "フォロー申請"
|
||||||
search: "Zoeken"
|
search: "Zoeken"
|
||||||
drive: "Drive"
|
|
||||||
favorites: "お気に入り"
|
favorites: "お気に入り"
|
||||||
user-lists: "リスト"
|
user-lists: "リスト"
|
||||||
widgets: "ウィジェット"
|
widgets: "ウィジェット"
|
||||||
@@ -1158,25 +1259,20 @@ mobile/views/components/ui.nav.vue:
|
|||||||
mobile/views/components/user-timeline.vue:
|
mobile/views/components/user-timeline.vue:
|
||||||
no-notes: "Het lijkt erop dat deze gebruiker nog niks heeft geplaatst"
|
no-notes: "Het lijkt erop dat deze gebruiker nog niks heeft geplaatst"
|
||||||
no-notes-with-media: "Er zijn geen notities met bijgevoegde media"
|
no-notes-with-media: "Er zijn geen notities met bijgevoegde media"
|
||||||
load-more: "Meer"
|
|
||||||
mobile/views/components/users-list.vue:
|
mobile/views/components/users-list.vue:
|
||||||
all: "Alles"
|
all: "Alles"
|
||||||
known: "die je kent"
|
known: "die je kent"
|
||||||
load-more: "Meer"
|
|
||||||
mobile/views/pages/favorites.vue:
|
mobile/views/pages/favorites.vue:
|
||||||
title: "お気に入り"
|
title: "お気に入り"
|
||||||
mobile/views/pages/user-lists.vue:
|
mobile/views/pages/user-lists.vue:
|
||||||
title: "リスト"
|
title: "リスト"
|
||||||
enter-list-name: "リスト名を入力してください"
|
enter-list-name: "リスト名を入力してください"
|
||||||
mobile/views/pages/drive.vue:
|
|
||||||
drive: "Drive"
|
|
||||||
more: "もっと見る"
|
|
||||||
mobile/views/pages/signup.vue:
|
mobile/views/pages/signup.vue:
|
||||||
lets-start: "📦 始めましょう"
|
lets-start: "📦 始めましょう"
|
||||||
mobile/views/pages/followers.vue:
|
mobile/views/pages/followers.vue:
|
||||||
followers-of: "Volgers van {}"
|
followers-of: "{name}のフォロワー"
|
||||||
mobile/views/pages/following.vue:
|
mobile/views/pages/following.vue:
|
||||||
following-of: "Volgenden van {}"
|
following-of: "{name}のフォロー"
|
||||||
mobile/views/pages/home.vue:
|
mobile/views/pages/home.vue:
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
local: "ローカル"
|
local: "ローカル"
|
||||||
@@ -1185,7 +1281,7 @@ mobile/views/pages/home.vue:
|
|||||||
mentions: "あなた宛て"
|
mentions: "あなた宛て"
|
||||||
messages: "メッセージ"
|
messages: "メッセージ"
|
||||||
mobile/views/pages/tag.vue:
|
mobile/views/pages/tag.vue:
|
||||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
|
||||||
mobile/views/pages/welcome.vue:
|
mobile/views/pages/welcome.vue:
|
||||||
signup: "新規登録"
|
signup: "新規登録"
|
||||||
mobile/views/pages/widgets.vue:
|
mobile/views/pages/widgets.vue:
|
||||||
@@ -1196,11 +1292,7 @@ mobile/views/pages/widgets.vue:
|
|||||||
mobile/views/pages/widgets/activity.vue:
|
mobile/views/pages/widgets/activity.vue:
|
||||||
activity: "アクティビティ"
|
activity: "アクティビティ"
|
||||||
mobile/views/pages/share.vue:
|
mobile/views/pages/share.vue:
|
||||||
share-with: "{}で共有"
|
share-with: "{name}で共有"
|
||||||
mobile/views/pages/messaging.vue:
|
|
||||||
messaging: "Gesprekken"
|
|
||||||
mobile/views/pages/messaging-room.vue:
|
|
||||||
messaging: "Gesprekken"
|
|
||||||
mobile/views/pages/received-follow-requests.vue:
|
mobile/views/pages/received-follow-requests.vue:
|
||||||
title: "フォロー申請"
|
title: "フォロー申請"
|
||||||
accept: "承認"
|
accept: "承認"
|
||||||
@@ -1214,27 +1306,9 @@ mobile/views/pages/notifications.vue:
|
|||||||
read-all: "Weet je zeker dat je alle meldingen wilt markeren als gelezen?"
|
read-all: "Weet je zeker dat je alle meldingen wilt markeren als gelezen?"
|
||||||
mobile/views/pages/games/reversi.vue:
|
mobile/views/pages/games/reversi.vue:
|
||||||
reversi: "リバーシ"
|
reversi: "リバーシ"
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
|
||||||
title: "Profiel"
|
|
||||||
name: "Naam"
|
|
||||||
account: "Account"
|
|
||||||
location: "Locatie"
|
|
||||||
description: "Omschrijving"
|
|
||||||
birthday: "Geboortedatum"
|
|
||||||
avatar: "Gebruikersafbeelding"
|
|
||||||
banner: "Omslagfoto"
|
|
||||||
is-cat: "Dit account is een Kat"
|
|
||||||
is-locked: "フォローを承認制にする"
|
|
||||||
advanced: "その他"
|
|
||||||
privacy: "プライバシー"
|
|
||||||
save: "Profiel bijwerken"
|
|
||||||
saved: "Profiel bijgewerkt"
|
|
||||||
uploading: "Bezig met uploaden"
|
|
||||||
upload-failed: "Upload mislukt"
|
|
||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
search: "Zoeken"
|
search: "Zoeken"
|
||||||
empty: "Geen berichten gevonden voor '{}'"
|
not-found: "「{q}」に関する投稿は見つかりませんでした。"
|
||||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
|
||||||
mobile/views/pages/selectdrive.vue:
|
mobile/views/pages/selectdrive.vue:
|
||||||
select-file: "Kies een bestand"
|
select-file: "Kies een bestand"
|
||||||
mobile/views/pages/settings.vue:
|
mobile/views/pages/settings.vue:
|
||||||
@@ -1273,6 +1347,14 @@ mobile/views/pages/settings.vue:
|
|||||||
twitter-connect: "Mijn Twitter-account verbinden"
|
twitter-connect: "Mijn Twitter-account verbinden"
|
||||||
twitter-reconnect: "Opnieuw verbinden"
|
twitter-reconnect: "Opnieuw verbinden"
|
||||||
twitter-disconnect: "Verbinding verbreken"
|
twitter-disconnect: "Verbinding verbreken"
|
||||||
|
github: "GitHub連携"
|
||||||
|
github-connect: "GitHubアカウントに接続する"
|
||||||
|
github-reconnect: "再接続する"
|
||||||
|
github-disconnect: "切断する"
|
||||||
|
discord: "Discord連携"
|
||||||
|
discord-connect: "Discordアカウントに接続する"
|
||||||
|
discord-reconnect: "再接続する"
|
||||||
|
discord-disconnect: "切断する"
|
||||||
update: "Misskey-update"
|
update: "Misskey-update"
|
||||||
version: "Huidige versie:"
|
version: "Huidige versie:"
|
||||||
latest-version: "Nieuwste versie:"
|
latest-version: "Nieuwste versie:"
|
||||||
@@ -1286,6 +1368,8 @@ mobile/views/pages/settings.vue:
|
|||||||
signout: "Uitloggen"
|
signout: "Uitloggen"
|
||||||
sound: "サウンド"
|
sound: "サウンド"
|
||||||
enable-sounds: "サウンドを有効にする"
|
enable-sounds: "サウンドを有効にする"
|
||||||
|
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
|
||||||
|
password: "パスワード"
|
||||||
mobile/views/pages/user.vue:
|
mobile/views/pages/user.vue:
|
||||||
follows-you: "Volgt jou"
|
follows-you: "Volgt jou"
|
||||||
following: "Volgend"
|
following: "Volgend"
|
||||||
@@ -1295,8 +1379,11 @@ mobile/views/pages/user.vue:
|
|||||||
timeline: "Tijdlijn"
|
timeline: "Tijdlijn"
|
||||||
media: "Media"
|
media: "Media"
|
||||||
is-suspended: "Dit account is geschorst."
|
is-suspended: "Dit account is geschorst."
|
||||||
is-remote: "Deze gebruiker is een externe gebruiker; de informatie is daarom niet volledig. "
|
mute: "ミュート"
|
||||||
view-remote: "Volledige informatie bekijken"
|
unmute: "ミュート解除"
|
||||||
|
block: "ブロック"
|
||||||
|
unblock: "ブロック解除"
|
||||||
|
years-old: "{age}歳"
|
||||||
mobile/views/pages/user/home.vue:
|
mobile/views/pages/user/home.vue:
|
||||||
recent-notes: "Recente notities"
|
recent-notes: "Recente notities"
|
||||||
images: "Afbeeldingen"
|
images: "Afbeeldingen"
|
||||||
@@ -1305,19 +1392,48 @@ mobile/views/pages/user/home.vue:
|
|||||||
domains: "Domeinnamen"
|
domains: "Domeinnamen"
|
||||||
frequently-replied-users: "Frequent gesproken gebruikers"
|
frequently-replied-users: "Frequent gesproken gebruikers"
|
||||||
followers-you-know: "Volgers die je kent"
|
followers-you-know: "Volgers die je kent"
|
||||||
last-used-at: "Laatst actief:"
|
last-used-at: "Laatst actief"
|
||||||
mobile/views/pages/user/home.followers-you-know.vue:
|
mobile/views/pages/user/home.followers-you-know.vue:
|
||||||
loading: "Bezig met laden"
|
|
||||||
no-users: "Geen gebruikers"
|
no-users: "Geen gebruikers"
|
||||||
mobile/views/pages/user/home.friends.vue:
|
mobile/views/pages/user/home.friends.vue:
|
||||||
loading: "Bezig met laden"
|
|
||||||
no-users: "Geen gebruikers"
|
no-users: "Geen gebruikers"
|
||||||
mobile/views/pages/user/home.notes.vue:
|
mobile/views/pages/user/home.notes.vue:
|
||||||
loading: "Bezig met laden"
|
|
||||||
no-notes: "Geen notities"
|
no-notes: "Geen notities"
|
||||||
mobile/views/pages/user/home.photos.vue:
|
mobile/views/pages/user/home.photos.vue:
|
||||||
loading: "Bezig met laden"
|
|
||||||
no-photos: "Geen foto's"
|
no-photos: "Geen foto's"
|
||||||
|
deck:
|
||||||
|
widgets: "ウィジェット"
|
||||||
|
home: "ホーム"
|
||||||
|
local: "ローカル"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
|
hashtag: "ハッシュタグ"
|
||||||
|
global: "グローバル"
|
||||||
|
mentions: "あなた宛て"
|
||||||
|
direct: "ダイレクト投稿"
|
||||||
|
notifications: "通知"
|
||||||
|
list: "リスト"
|
||||||
|
swap-left: "左に移動"
|
||||||
|
swap-right: "右に移動"
|
||||||
|
swap-up: "上に移動"
|
||||||
|
swap-down: "下に移動"
|
||||||
|
remove: "カラムを削除"
|
||||||
|
add-column: "カラムを追加"
|
||||||
|
rename: "名前を変更"
|
||||||
|
stack-left: "左に重ねる"
|
||||||
|
pop-right: "右に出す"
|
||||||
|
deck/deck.tl-column.vue:
|
||||||
|
is-media-only: "メディア投稿のみ"
|
||||||
|
is-media-view: "メディアビュー"
|
||||||
|
edit: "オプション"
|
||||||
|
deck/deck.user-column.vue:
|
||||||
|
posts: "投稿"
|
||||||
|
following: "フォロー"
|
||||||
|
followers: "フォロワー"
|
||||||
|
images: "画像"
|
||||||
|
activity: "アクティビティ"
|
||||||
|
timeline: "タイムライン"
|
||||||
|
pinned-notes: "ピン留めされた投稿"
|
||||||
|
push-to-a-list: "リストに追加"
|
||||||
docs:
|
docs:
|
||||||
edit-this-page-on-github: "Heb je een fout ontdekt of wil je bijdragen aan de documentatie? "
|
edit-this-page-on-github: "Heb je een fout ontdekt of wil je bijdragen aan de documentatie? "
|
||||||
edit-this-page-on-github-link: "Bewerk deze pagina op GitHub!"
|
edit-this-page-on-github-link: "Bewerk deze pagina op GitHub!"
|
||||||
@@ -1342,3 +1458,29 @@ docs:
|
|||||||
description: "Omschrijving"
|
description: "Omschrijving"
|
||||||
dev/views/index.vue:
|
dev/views/index.vue:
|
||||||
manage-apps: "アプリの管理"
|
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: "通知を操作する。"
|
||||||
|
|||||||
@@ -25,13 +25,11 @@ common:
|
|||||||
application-authorization: "アプリの連携"
|
application-authorization: "アプリの連携"
|
||||||
close: "Lukk"
|
close: "Lukk"
|
||||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||||
|
load-more: "もっと読み込む"
|
||||||
got-it: "Skjønner!"
|
got-it: "Skjønner!"
|
||||||
customization-tips:
|
customization-tips:
|
||||||
title: "カスタマイズのヒント"
|
title: "カスタマイズのヒント"
|
||||||
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
|
paragraph: "<p>ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。</p><p>一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。</p><p>ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。</p><p>カスタマイズを終了するには、右上の「完了」をクリックします。</p>"
|
||||||
paragraph2: "一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。"
|
|
||||||
paragraph3: "ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。"
|
|
||||||
paragraph4: "カスタマイズを終了するには、右上の「完了」をクリックします。"
|
|
||||||
gotit: "Got it!"
|
gotit: "Got it!"
|
||||||
notification:
|
notification:
|
||||||
file-uploaded: "Filen ble lastet opp!"
|
file-uploaded: "Filen ble lastet opp!"
|
||||||
@@ -54,6 +52,8 @@ common:
|
|||||||
years_ago: "{} år siden"
|
years_ago: "{} år siden"
|
||||||
month-and-day: "{day}/{month}"
|
month-and-day: "{day}/{month}"
|
||||||
trash: "Papirkurv"
|
trash: "Papirkurv"
|
||||||
|
drive: "ドライブ"
|
||||||
|
messaging: "トーク"
|
||||||
weekday-short:
|
weekday-short:
|
||||||
sunday: "S"
|
sunday: "S"
|
||||||
monday: "M"
|
monday: "M"
|
||||||
@@ -112,20 +112,28 @@ common:
|
|||||||
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
||||||
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
||||||
show-full-acct: "ユーザー名のホストを省略しない"
|
show-full-acct: "ユーザー名のホストを省略しない"
|
||||||
|
show-via: "viaを表示する"
|
||||||
reduce-motion: "UIの動きを減らす"
|
reduce-motion: "UIの動きを減らす"
|
||||||
this-setting-is-this-device-only: "このデバイスのみ"
|
this-setting-is-this-device-only: "このデバイスのみ"
|
||||||
|
use-os-default-emojis: "OS標準の絵文字を使用"
|
||||||
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
||||||
|
is-remote-user: "このユーザー情報はコピーです。"
|
||||||
|
is-remote-post: "この投稿情報はコピーです。"
|
||||||
|
view-on-remote: "正確な情報を見る"
|
||||||
|
error:
|
||||||
|
title: '問題が発生しました'
|
||||||
|
retry: 'やり直す'
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "引き分け"
|
drawn: "引き分け"
|
||||||
my-turn: "あなたのターンです"
|
my-turn: "あなたのターンです"
|
||||||
opponent-turn: "相手のターンです"
|
opponent-turn: "相手のターンです"
|
||||||
turn-of: "{}のターンです"
|
turn-of: "{name}のターンです"
|
||||||
past-turn-of: "{}のターン"
|
past-turn-of: "{name}のターン"
|
||||||
won: "{}の勝ち"
|
won: "{name}の勝ち"
|
||||||
black: "Sort"
|
black: "Sort"
|
||||||
white: "Hvit"
|
white: "Hvit"
|
||||||
total: "Totalt"
|
total: "Totalt"
|
||||||
this-turn: "{}ターン目"
|
this-turn: "{count}ターン目"
|
||||||
widgets:
|
widgets:
|
||||||
analog-clock: "アナログ時計"
|
analog-clock: "アナログ時計"
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
@@ -144,34 +152,15 @@ common:
|
|||||||
users: "おすすめユーザー"
|
users: "おすすめユーザー"
|
||||||
polls: "アンケート"
|
polls: "アンケート"
|
||||||
post-form: "投稿フォーム"
|
post-form: "投稿フォーム"
|
||||||
messaging: "Meldinger"
|
|
||||||
server: "サーバー情報"
|
server: "サーバー情報"
|
||||||
donation: "寄付のお願い"
|
donation: "寄付のお願い"
|
||||||
nav: "ナビゲーション"
|
nav: "ナビゲーション"
|
||||||
tips: "Tips"
|
tips: "Tips"
|
||||||
hashtags: "ハッシュタグ"
|
hashtags: "ハッシュタグ"
|
||||||
deck:
|
dev: "アプリの作成に失敗しました。再度お試しください。"
|
||||||
widgets: "ウィジェット"
|
ai-chan-kawaii: "藍ちゃかわいい"
|
||||||
home: "Hjem"
|
|
||||||
local: "Lokalt"
|
|
||||||
hybrid: "ソーシャル"
|
|
||||||
hashtag: "ハッシュタグ"
|
|
||||||
global: "Globalt"
|
|
||||||
mentions: "あなた宛て"
|
|
||||||
direct: "ダイレクト投稿"
|
|
||||||
notifications: "Notifikasjon"
|
|
||||||
list: "Lister"
|
|
||||||
swap-left: "Flytt til venstre"
|
|
||||||
swap-right: "Flytt til høyre"
|
|
||||||
swap-up: "Flytt opp"
|
|
||||||
swap-down: "Flytt ned"
|
|
||||||
remove: "カラムを削除"
|
|
||||||
add-column: "カラムを追加"
|
|
||||||
rename: "Endre navn"
|
|
||||||
stack-left: "左に重ねる"
|
|
||||||
pop-right: "Til høyre"
|
|
||||||
auth/views/form.vue:
|
auth/views/form.vue:
|
||||||
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
|
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
|
||||||
permission-ask: "このアプリは次の権限を要求しています:"
|
permission-ask: "このアプリは次の権限を要求しています:"
|
||||||
account-read: "アカウントの情報を見る。"
|
account-read: "アカウントの情報を見る。"
|
||||||
account-write: "アカウントの情報を操作する。"
|
account-write: "アカウントの情報を操作する。"
|
||||||
@@ -308,7 +297,6 @@ common/views/components/messaging.vue:
|
|||||||
no-history: "履歴はありません"
|
no-history: "履歴はありません"
|
||||||
common/views/components/messaging-room.vue:
|
common/views/components/messaging-room.vue:
|
||||||
empty: "このユーザーと話したことはありません"
|
empty: "このユーザーと話したことはありません"
|
||||||
more: "Les mer"
|
|
||||||
no-history: "これより過去の履歴はありません"
|
no-history: "これより過去の履歴はありません"
|
||||||
resize-form: "ドラッグしてフォームの広さを調整"
|
resize-form: "ドラッグしてフォームの広さを調整"
|
||||||
new-message: "新しいメッセージがあります"
|
new-message: "新しいメッセージがあります"
|
||||||
@@ -356,6 +344,16 @@ common/views/components/poll-editor.vue:
|
|||||||
destroy: "アンケートを破棄"
|
destroy: "アンケートを破棄"
|
||||||
common/views/components/reaction-picker.vue:
|
common/views/components/reaction-picker.vue:
|
||||||
choose-reaction: "リアクションを選択"
|
choose-reaction: "リアクションを選択"
|
||||||
|
common/views/components/emoji-picker.vue:
|
||||||
|
custom-emoji: "カスタム絵文字"
|
||||||
|
people: "人"
|
||||||
|
animals-and-nature: "動物&自然"
|
||||||
|
food-and-drink: "食べ物&飲み物"
|
||||||
|
activity: "アクティビティ"
|
||||||
|
travel-and-places: "場所"
|
||||||
|
objects: "物"
|
||||||
|
symbols: "記号"
|
||||||
|
flags: "旗"
|
||||||
common/views/components/signin.vue:
|
common/views/components/signin.vue:
|
||||||
username: "Brukernavn"
|
username: "Brukernavn"
|
||||||
password: "Passord"
|
password: "Passord"
|
||||||
@@ -364,6 +362,8 @@ common/views/components/signin.vue:
|
|||||||
signin: "Logg inn"
|
signin: "Logg inn"
|
||||||
or: "Eller"
|
or: "Eller"
|
||||||
signin-with-twitter: "Twitterでログイン"
|
signin-with-twitter: "Twitterでログイン"
|
||||||
|
signin-with-github: "GitHubでログイン"
|
||||||
|
signin-with-discord: "Discordでログイン"
|
||||||
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
invitation-code: "招待コード"
|
invitation-code: "招待コード"
|
||||||
@@ -402,6 +402,20 @@ common/views/components/twitter-setting.vue:
|
|||||||
reconnect: "Koble til på nytt"
|
reconnect: "Koble til på nytt"
|
||||||
connect: "Twitterと接続する"
|
connect: "Twitterと接続する"
|
||||||
disconnect: "Koble fra"
|
disconnect: "Koble fra"
|
||||||
|
common/views/components/github-setting.vue:
|
||||||
|
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
|
||||||
|
connected-to: "次のGitHubアカウントに接続されています"
|
||||||
|
detail: "詳細..."
|
||||||
|
reconnect: "再接続する"
|
||||||
|
connect: "GitHubと接続する"
|
||||||
|
disconnect: "切断する"
|
||||||
|
common/views/components/discord-setting.vue:
|
||||||
|
description: "お使いのDiscordアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでDiscordアカウント情報が表示されるようになったり、Discordを用いた便利なサインインを利用できるようになります。"
|
||||||
|
connected-to: "次のDiscordアカウントに接続されています"
|
||||||
|
detail: "詳細..."
|
||||||
|
reconnect: "再接続する"
|
||||||
|
connect: "Discordと接続する"
|
||||||
|
disconnect: "切断する"
|
||||||
common/views/components/uploader.vue:
|
common/views/components/uploader.vue:
|
||||||
waiting: "Venter"
|
waiting: "Venter"
|
||||||
common/views/components/visibility-chooser.vue:
|
common/views/components/visibility-chooser.vue:
|
||||||
@@ -416,6 +430,25 @@ common/views/components/visibility-chooser.vue:
|
|||||||
common/views/components/trends.vue:
|
common/views/components/trends.vue:
|
||||||
count: "{}人が投稿"
|
count: "{}人が投稿"
|
||||||
empty: "トレンドなし"
|
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:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "Henter"
|
fetching: "Henter"
|
||||||
no-broadcasts: "お知らせはありません"
|
no-broadcasts: "お知らせはありません"
|
||||||
@@ -499,34 +532,12 @@ desktop/views/components/activity.vue:
|
|||||||
title: "アクティビティ"
|
title: "アクティビティ"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
desktop/views/components/calendar.vue:
|
desktop/views/components/calendar.vue:
|
||||||
title: "{1}年 {2}月"
|
title: "{year}年 {month}月"
|
||||||
prev: "Forrige måned"
|
prev: "Forrige måned"
|
||||||
next: "Neste måned"
|
next: "Neste måned"
|
||||||
go: "クリックして時間遡行"
|
go: "クリックして時間遡行"
|
||||||
desktop/views/components/charts.vue:
|
|
||||||
title: "Diagrammer"
|
|
||||||
per-day: "per dag"
|
|
||||||
per-hour: "1時間ごと"
|
|
||||||
notes: "Innlegg"
|
|
||||||
users: "Brukere"
|
|
||||||
drive: "Disk"
|
|
||||||
network: "ネットワーク"
|
|
||||||
charts:
|
|
||||||
notes: "投稿の増減 (統合)"
|
|
||||||
local-notes: "投稿の増減 (ローカル)"
|
|
||||||
remote-notes: "投稿の増減 (リモート)"
|
|
||||||
notes-total: "投稿の積算"
|
|
||||||
users: "ユーザーの増減"
|
|
||||||
users-total: "ユーザーの積算"
|
|
||||||
drive: "ドライブ使用量の増減"
|
|
||||||
drive-total: "ドライブ使用量の積算"
|
|
||||||
drive-files: "ドライブのファイル数の増減"
|
|
||||||
drive-files-total: "ドライブのファイル数の積算"
|
|
||||||
network-requests: "リクエスト"
|
|
||||||
network-time: "Responstid"
|
|
||||||
network-usage: "Nettverks bruk"
|
|
||||||
desktop/views/components/choose-file-from-drive-window.vue:
|
desktop/views/components/choose-file-from-drive-window.vue:
|
||||||
choose-file: "ファイル選択中"
|
chosen-files: "{count}ファイル選択中"
|
||||||
upload: "PCからドライブにファイルをアップロード"
|
upload: "PCからドライブにファイルをアップロード"
|
||||||
cancel: "Avbryt"
|
cancel: "Avbryt"
|
||||||
ok: "Ok"
|
ok: "Ok"
|
||||||
@@ -541,7 +552,6 @@ desktop/views/components/crop-window.vue:
|
|||||||
ok: "Ok"
|
ok: "Ok"
|
||||||
desktop/views/components/drive-window.vue:
|
desktop/views/components/drive-window.vue:
|
||||||
used: "brukt"
|
used: "brukt"
|
||||||
drive: "Disk"
|
|
||||||
desktop/views/components/drive.file.vue:
|
desktop/views/components/drive.file.vue:
|
||||||
avatar: "Avatar"
|
avatar: "Avatar"
|
||||||
banner: "Banner"
|
banner: "Banner"
|
||||||
@@ -571,11 +581,8 @@ desktop/views/components/drive.folder.vue:
|
|||||||
rename: "Endre navn"
|
rename: "Endre navn"
|
||||||
rename-folder: "フォルダ名の変更"
|
rename-folder: "フォルダ名の変更"
|
||||||
input-new-folder-name: "新しいフォルダ名を入力してください"
|
input-new-folder-name: "新しいフォルダ名を入力してください"
|
||||||
desktop/views/components/drive.nav-folder.vue:
|
|
||||||
drive: "Disk"
|
|
||||||
desktop/views/components/drive.vue:
|
desktop/views/components/drive.vue:
|
||||||
search: "Søk"
|
search: "Søk"
|
||||||
load-more: "もっと読み込む"
|
|
||||||
empty-draghover: "ドロップですか?いいですよ、ボクはカワイイですからね"
|
empty-draghover: "ドロップですか?いいですよ、ボクはカワイイですからね"
|
||||||
empty-drive: "ドライブには何もありません。"
|
empty-drive: "ドライブには何もありません。"
|
||||||
empty-drive-description: "右クリックして「ファイルをアップロード」を選んだり、ファイルをドラッグ&ドロップすることでもアップロードできます。"
|
empty-drive-description: "右クリックして「ファイルをアップロード」を選んだり、ファイルをドラッグ&ドロップすることでもアップロードできます。"
|
||||||
@@ -599,12 +606,6 @@ desktop/views/components/media-image.vue:
|
|||||||
desktop/views/components/media-video.vue:
|
desktop/views/components/media-video.vue:
|
||||||
sensitive: "Innholdet er NSFW"
|
sensitive: "Innholdet er NSFW"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
desktop/views/components/follow-button.vue:
|
|
||||||
following: "Følger"
|
|
||||||
follow: "Følg"
|
|
||||||
request-pending: "フォロー許可待ち"
|
|
||||||
follow-processing: "フォロー処理中"
|
|
||||||
follow-request: "フォロー申請"
|
|
||||||
desktop/views/components/followers-window.vue:
|
desktop/views/components/followers-window.vue:
|
||||||
followers: "{} のフォロワー"
|
followers: "{} のフォロワー"
|
||||||
desktop/views/components/followers.vue:
|
desktop/views/components/followers.vue:
|
||||||
@@ -633,27 +634,24 @@ desktop/views/components/messaging-room-window.vue:
|
|||||||
desktop/views/components/messaging-window.vue:
|
desktop/views/components/messaging-window.vue:
|
||||||
title: "Samtaler"
|
title: "Samtaler"
|
||||||
desktop/views/components/note-detail.vue:
|
desktop/views/components/note-detail.vue:
|
||||||
more: "会話をもっと読み込む"
|
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
location: "Lokasjon"
|
location: "Lokasjon"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
add-reaction: "リアクション"
|
add-reaction: "リアクション"
|
||||||
desktop/views/components/notes.note.vue:
|
desktop/views/components/note.vue:
|
||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
reply: "Svar"
|
reply: "返信"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
add-reaction: "リアクション"
|
add-reaction: "リアクション"
|
||||||
detail: "Vis detaljer"
|
detail: "詳細"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "読み込みに失敗しました。"
|
error: "読み込みに失敗しました。"
|
||||||
retry: "Prøv på nytt"
|
retry: "Prøv på nytt"
|
||||||
load-more: "もっと読み込む"
|
|
||||||
desktop/views/components/notifications.vue:
|
desktop/views/components/notifications.vue:
|
||||||
more: "Mer"
|
|
||||||
empty: "ありません!"
|
empty: "ありません!"
|
||||||
desktop/views/components/post-form.vue:
|
desktop/views/components/post-form.vue:
|
||||||
add-visible-user: "+ユーザーを追加"
|
add-visible-user: "+ユーザーを追加"
|
||||||
@@ -700,14 +698,17 @@ desktop/views/components/renote-form.vue:
|
|||||||
failure: "Renoteに失敗しました"
|
failure: "Renoteに失敗しました"
|
||||||
desktop/views/components/renote-form-window.vue:
|
desktop/views/components/renote-form-window.vue:
|
||||||
title: "この投稿をRenoteしますか?"
|
title: "この投稿をRenoteしますか?"
|
||||||
|
desktop/views/pages/user-following-or-followers.vue:
|
||||||
|
following: "{user}のフォロー"
|
||||||
|
followers: "{user}のフォロワー"
|
||||||
desktop/views/components/settings-window.vue:
|
desktop/views/components/settings-window.vue:
|
||||||
settings: "Innstillinger"
|
settings: "Innstillinger"
|
||||||
desktop/views/components/settings.vue:
|
desktop/views/components/settings.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
notification: "Notifikasjon"
|
notification: "Notifikasjon"
|
||||||
apps: "Apper"
|
apps: "Apper"
|
||||||
mute: "Demp"
|
mute-and-block: "ミュート/ブロック"
|
||||||
drive: "Disk"
|
blocking: "ブロック"
|
||||||
security: "セキュリティ"
|
security: "セキュリティ"
|
||||||
signin: "サインイン履歴"
|
signin: "サインイン履歴"
|
||||||
password: "Passord"
|
password: "Passord"
|
||||||
@@ -726,8 +727,12 @@ desktop/views/components/settings.vue:
|
|||||||
advanced: "Avanserte innstillinger"
|
advanced: "Avanserte innstillinger"
|
||||||
api-via-stream: "ストリームを経由したAPIリクエスト"
|
api-via-stream: "ストリームを経由したAPIリクエスト"
|
||||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||||
|
deck-nav: "デッキ内ナビゲーション"
|
||||||
|
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
|
||||||
|
deck-default: "デッキをデフォルトのUIにする"
|
||||||
display: "デザインと表示"
|
display: "デザインと表示"
|
||||||
customize: "ホームをカスタマイズ"
|
customize: "ホームをカスタマイズ"
|
||||||
|
wallpaper: "壁紙"
|
||||||
choose-wallpaper: "壁紙を選択"
|
choose-wallpaper: "壁紙を選択"
|
||||||
delete-wallpaper: "壁紙を削除"
|
delete-wallpaper: "壁紙を削除"
|
||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
@@ -739,17 +744,19 @@ desktop/views/components/settings.vue:
|
|||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
show-clock-on-header: "右上に時計を表示する"
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
|
timeline: "タイムライン"
|
||||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "マップの自動展開"
|
show-maps: "マップの自動展開"
|
||||||
|
deck-column-align: "デッキのカラムの位置"
|
||||||
|
deck-column-align-center: "中央"
|
||||||
|
deck-column-align-left: "左"
|
||||||
sound: "Lyd"
|
sound: "Lyd"
|
||||||
enable-sounds: "サウンドを有効にする"
|
enable-sounds: "サウンドを有効にする"
|
||||||
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
|
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
|
||||||
volume: "Volum"
|
volume: "Volum"
|
||||||
test: "Test"
|
test: "Test"
|
||||||
mobile: "Mobil"
|
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
|
||||||
language: "Språk"
|
language: "Språk"
|
||||||
pick-language: "Velg språk"
|
pick-language: "Velg språk"
|
||||||
recommended: "Anbefalt"
|
recommended: "Anbefalt"
|
||||||
@@ -785,6 +792,10 @@ desktop/views/components/settings.vue:
|
|||||||
tools: "Verktøy"
|
tools: "Verktøy"
|
||||||
task-manager: "タスクマネージャ"
|
task-manager: "タスクマネージャ"
|
||||||
third-parties: "サードパーティ"
|
third-parties: "サードパーティ"
|
||||||
|
navbar-position: "ナビゲーションバーの位置"
|
||||||
|
navbar-position-top: "上"
|
||||||
|
navbar-position-left: "左"
|
||||||
|
navbar-position-right: "右"
|
||||||
desktop/views/components/settings.2fa.vue:
|
desktop/views/components/settings.2fa.vue:
|
||||||
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
||||||
detail: "Detaljer..."
|
detail: "Detaljer..."
|
||||||
@@ -803,41 +814,44 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
success: "設定が完了しました!"
|
success: "設定が完了しました!"
|
||||||
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
||||||
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
||||||
desktop/views/components/settings.api.vue:
|
common/views/components/api-settings.vue:
|
||||||
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
||||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||||
regenerate-token: "トークンを再生成"
|
regenerate-token: "トークンを再生成"
|
||||||
token: "Token:"
|
token: "Token:"
|
||||||
enter-password: "パスワードを入力してください"
|
enter-password: "パスワードを入力してください"
|
||||||
|
console:
|
||||||
|
title: 'APIコンソール'
|
||||||
|
endpoint: 'エンドポイント'
|
||||||
|
parameter: 'パラメータ'
|
||||||
|
credential-info: "「i」パラメータは自動で付与されます。"
|
||||||
|
send: '送信'
|
||||||
|
sending: '応答待ち'
|
||||||
|
response: '結果'
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "連携しているアプリケーションはありません"
|
no-apps: "連携しているアプリケーションはありません"
|
||||||
desktop/views/components/settings.drive.vue:
|
common/views/components/drive-settings.vue:
|
||||||
max: "Maks"
|
max: "容量"
|
||||||
in-use: "I bruk"
|
in-use: "使用中"
|
||||||
desktop/views/components/settings.mute.vue:
|
stats: "統計"
|
||||||
no-users: "ミュートしているユーザーはいません"
|
common/views/components/mute-and-block.vue:
|
||||||
desktop/views/components/settings.password.vue:
|
mute-and-block: "ミュートとブロック"
|
||||||
|
mute: "ミュート"
|
||||||
|
block: "ブロック"
|
||||||
|
no-muted-users: "ミュートしているユーザーはいません"
|
||||||
|
no-blocked-users: "ブロックしているユーザーはいません"
|
||||||
|
word-mute: "ワードミュート"
|
||||||
|
muted-words: "ミュートされたキーワード"
|
||||||
|
muted-words-description: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります"
|
||||||
|
save: "保存"
|
||||||
|
common/views/components/password-settings.vue:
|
||||||
reset: "パスワードを変更する"
|
reset: "パスワードを変更する"
|
||||||
enter-current-password: "現在のパスワードを入力してください"
|
enter-current-password: "現在のパスワードを入力してください"
|
||||||
enter-new-password: "新しいパスワードを入力してください"
|
enter-new-password: "新しいパスワードを入力してください"
|
||||||
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
||||||
not-match: "新しいパスワードが一致しません"
|
not-match: "新しいパスワードが一致しません"
|
||||||
changed: "パスワードを変更しました"
|
changed: "パスワードを変更しました"
|
||||||
desktop/views/components/settings.profile.vue:
|
|
||||||
avatar: "Avatar"
|
|
||||||
choice-avatar: "Velg et bilde"
|
|
||||||
name: "Navn"
|
|
||||||
location: "Lokasjon"
|
|
||||||
description: "Om meg"
|
|
||||||
birthday: "Bursdag"
|
|
||||||
save: "Lagre profilen"
|
|
||||||
locked-account: "アカウントの保護"
|
|
||||||
is-locked: "フォローを承認制にする"
|
|
||||||
other: "Annet"
|
|
||||||
is-bot: "このアカウントはBotです"
|
|
||||||
is-cat: "このアカウントはCatです"
|
|
||||||
profile-updated: "プロフィールを更新しました"
|
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
@@ -862,7 +876,6 @@ desktop/views/components/ui.header.vue:
|
|||||||
adjective: "-san"
|
adjective: "-san"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
drive: "Disk"
|
|
||||||
favorites: "Favoritter"
|
favorites: "Favoritter"
|
||||||
lists: "Lister"
|
lists: "Lister"
|
||||||
follow-requests: "フォロー申請"
|
follow-requests: "フォロー申請"
|
||||||
@@ -874,7 +887,6 @@ desktop/views/components/ui.header.account.vue:
|
|||||||
desktop/views/components/ui.header.nav.vue:
|
desktop/views/components/ui.header.nav.vue:
|
||||||
home: "Hjem"
|
home: "Hjem"
|
||||||
deck: "Kolonner"
|
deck: "Kolonner"
|
||||||
messaging: "Samtaler"
|
|
||||||
game: "Spill"
|
game: "Spill"
|
||||||
desktop/views/components/ui.header.notifications.vue:
|
desktop/views/components/ui.header.notifications.vue:
|
||||||
title: "Notifikasjon"
|
title: "Notifikasjon"
|
||||||
@@ -897,54 +909,153 @@ desktop/views/components/user-preview.vue:
|
|||||||
desktop/views/components/users-list.vue:
|
desktop/views/components/users-list.vue:
|
||||||
all: "Alle"
|
all: "Alle"
|
||||||
iknow: "Du kjenner"
|
iknow: "Du kjenner"
|
||||||
load-more: "Mer"
|
|
||||||
fetching: "読み込んでいます"
|
fetching: "読み込んでいます"
|
||||||
desktop/views/components/users-list-item.vue:
|
desktop/views/components/users-list-item.vue:
|
||||||
followed: "フォローされています"
|
followed: "フォローされています"
|
||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "Lukk"
|
close: "Lukk"
|
||||||
desktop/views/pages/admin/admin.vue:
|
admin/views/index.vue:
|
||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
drive: "Disk"
|
instance: "インスタンス"
|
||||||
users: "Brukere"
|
emoji: "カスタム絵文字"
|
||||||
update: "Oppdater"
|
moderators: "モデレーター"
|
||||||
desktop/views/pages/admin/admin.dashboard.vue:
|
users: "ユーザー"
|
||||||
|
update: "更新"
|
||||||
|
announcements: "お知らせ"
|
||||||
|
hashtags: "ハッシュタグ"
|
||||||
|
back-to-misskey: "Misskeyに戻る"
|
||||||
|
admin/views/dashboard.vue:
|
||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
all-users: "全てのユーザー"
|
accounts: "アカウント"
|
||||||
original-users: "このインスタンスのユーザー"
|
notes: "投稿"
|
||||||
all-notes: "全ての投稿"
|
drive: "ドライブ"
|
||||||
original-notes: "このインスタンスの投稿"
|
instances: "インスタンス"
|
||||||
invite: "Inviter"
|
this-instance: "このインスタンス"
|
||||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
federated: "連合"
|
||||||
|
admin/views/instance.vue:
|
||||||
|
instance: "インスタンス"
|
||||||
|
instance-name: "インスタンス名"
|
||||||
|
instance-description: "インスタンスの紹介"
|
||||||
|
host: "ホスト"
|
||||||
|
banner-url: "バナー画像URL"
|
||||||
|
languages: "インスタンスの対象言語"
|
||||||
|
languages-desc: "スペースで区切って複数設定できます。"
|
||||||
|
maintainer-config: "管理者情報"
|
||||||
|
maintainer-name: "管理者名"
|
||||||
|
maintainer-email: "管理者の連絡先"
|
||||||
|
drive-config: "ドライブの設定"
|
||||||
|
cache-remote-files: "リモートのファイルをキャッシュする"
|
||||||
|
cache-remote-files-desc: "この設定を無効にすると、リモートファイルをキャッシュせず直リンクするようになります。そのためサーバーのストレージを節約できますが、プライバシー設定で直リンクを無効にしているユーザーにはファイルが見えなくなったり、サムネイルが生成されないので通信量が増加します。通常はこの設定をオンにしておくことをおすすめします。"
|
||||||
|
local-drive-capacity-mb: "ローカルユーザーひとりあたりのドライブ容量"
|
||||||
|
remote-drive-capacity-mb: "リモートユーザーひとりあたりのドライブ容量"
|
||||||
|
mb: "メガバイト単位"
|
||||||
|
recaptcha-config: "reCAPTCHAの設定"
|
||||||
|
recaptcha-info: "reCAPTCHAを有効にする場合、reCAPTCHAトークンを取得する必要があります。https://www.google.com/recaptcha/intro/ にアクセスしてトークンを取得してください。"
|
||||||
|
enable-recaptcha: "reCAPTCHAを有効にする"
|
||||||
|
recaptcha-site-key: "reCAPTCHA site key"
|
||||||
|
recaptcha-secret-key: "reCAPTCHA secret key"
|
||||||
|
twitter-integration-config: "Twitter連携の設定"
|
||||||
|
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。"
|
||||||
|
enable-twitter-integration: "Twitter連携を有効にする"
|
||||||
|
twitter-integration-consumer-key: "Consumer key"
|
||||||
|
twitter-integration-consumer-secret: "Consumer secret"
|
||||||
|
github-integration-config: "GitHub連携の設定"
|
||||||
|
github-integration-info: "コールバックURLは /api/gh/cb に設定します。"
|
||||||
|
enable-github-integration: "GitHub連携を有効にする"
|
||||||
|
github-integration-client-id: "Client ID"
|
||||||
|
github-integration-client-secret: "Client Secret"
|
||||||
|
discord-integration-config: "Discord連携の設定"
|
||||||
|
discord-integration-info: "コールバックURLは /api/dc/cb に設定します。"
|
||||||
|
enable-discord-integration: "Discord連携を有効にする"
|
||||||
|
discord-integration-client-id: "Client ID"
|
||||||
|
discord-integration-client-secret: "Client Secret"
|
||||||
|
proxy-account-config: "プロキシアカウントの設定"
|
||||||
|
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
|
||||||
|
proxy-account-username: "プロキシアカウントのユーザー名"
|
||||||
|
proxy-account-username-desc: "プロキシとして使用するアカウントのユーザー名を指定してください。"
|
||||||
|
proxy-account-warn: "アカウントは自動で作られないため、そのユーザー名のアカウントを予め作成しておく必要があります。"
|
||||||
|
max-note-text-length: "投稿の最大文字数"
|
||||||
|
disable-registration: "ユーザー登録の受付を停止する"
|
||||||
|
disable-local-timeline: "ローカルタイムラインを無効にする"
|
||||||
|
invite: "招待"
|
||||||
|
save: "保存"
|
||||||
|
saved: "保存しました"
|
||||||
|
admin/views/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: "通信量"
|
||||||
|
admin/views/users.vue:
|
||||||
suspend-user: "ユーザーの凍結"
|
suspend-user: "ユーザーの凍結"
|
||||||
suspend: "Suspender"
|
suspend: "凍結"
|
||||||
suspended: "凍結しました"
|
suspended: "凍結しました"
|
||||||
desktop/views/pages/admin/admin.unsuspend-user.vue:
|
|
||||||
unsuspend-user: "ユーザーの凍結の解除"
|
unsuspend-user: "ユーザーの凍結の解除"
|
||||||
unsuspend: "凍結の解除"
|
unsuspend: "凍結の解除"
|
||||||
unsuspended: "凍結を解除しました"
|
unsuspended: "凍結を解除しました"
|
||||||
desktop/views/pages/admin/admin.verify-user.vue:
|
|
||||||
verify-user: "ユーザーの公式アカウント設定"
|
verify-user: "ユーザーの公式アカウント設定"
|
||||||
verify: "公式アカウントにする"
|
verify: "公式アカウントにする"
|
||||||
verified: "公式アカウントにしました"
|
verified: "公式アカウントにしました"
|
||||||
desktop/views/pages/admin/admin.unverify-user.vue:
|
|
||||||
unverify-user: "ユーザーの公式アカウント解除"
|
unverify-user: "ユーザーの公式アカウント解除"
|
||||||
unverify: "公式アカウントを解除する"
|
unverify: "公式アカウントを解除する"
|
||||||
unverified: "公式アカウントを解除しました"
|
unverified: "公式アカウントを解除しました"
|
||||||
desktop/views/pages/deck/deck.tl-column.vue:
|
admin/views/moderators.vue:
|
||||||
is-media-only: "メディア投稿のみ"
|
add-moderator:
|
||||||
is-media-view: "メディアビュー"
|
title: "モデレーターの登録"
|
||||||
edit: "オプション"
|
add: "登録"
|
||||||
desktop/views/pages/deck/deck.note.vue:
|
added: "モデレーターを登録しました"
|
||||||
reposted-by: "{}がRenote"
|
admin/views/emoji.vue:
|
||||||
private: "この投稿は非公開です"
|
add-emoji:
|
||||||
deleted: "この投稿は削除されました"
|
title: "絵文字の登録"
|
||||||
desktop/views/pages/stats/stats.vue:
|
name: "絵文字名"
|
||||||
all-users: "全てのユーザー"
|
name-desc: "a~z 0~9 _ の文字が使えます。"
|
||||||
original-users: "このインスタンスのユーザー"
|
aliases: "エイリアス"
|
||||||
all-notes: "全ての投稿"
|
aliases-desc: "スペースで区切って複数設定できます。"
|
||||||
original-notes: "このインスタンスの投稿"
|
url: "絵文字画像URL"
|
||||||
|
add: "追加"
|
||||||
|
info: "50KB以下のPNG画像をおすすめします。"
|
||||||
|
added: "絵文字を登録しました"
|
||||||
|
emojis:
|
||||||
|
title: "絵文字一覧"
|
||||||
|
update: "更新"
|
||||||
|
remove: "削除"
|
||||||
|
updated: "更新しました"
|
||||||
|
remove-emoji:
|
||||||
|
are-you-sure: "「$1」を削除しますか?"
|
||||||
|
removed: "削除しました"
|
||||||
|
admin/views/announcements.vue:
|
||||||
|
announcements: "お知らせ"
|
||||||
|
save: "保存"
|
||||||
|
remove: "削除"
|
||||||
|
add: "追加"
|
||||||
|
title: "タイトル"
|
||||||
|
text: "内容"
|
||||||
|
saved: "保存しました"
|
||||||
|
_remove:
|
||||||
|
are-you-sure: "「$1」を削除しますか?"
|
||||||
|
removed: "削除しました"
|
||||||
|
admin/views/hashtags.vue:
|
||||||
|
hided-tags: "Hidden Tags"
|
||||||
desktop/views/pages/welcome.vue:
|
desktop/views/pages/welcome.vue:
|
||||||
about: "詳しく..."
|
about: "詳しく..."
|
||||||
gotit: "Skjønner!"
|
gotit: "Skjønner!"
|
||||||
@@ -959,8 +1070,6 @@ desktop/views/pages/welcome.vue:
|
|||||||
info: "Informasjon"
|
info: "Informasjon"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
desktop/views/pages/favorites.vue:
|
|
||||||
more: "さらに読み込む"
|
|
||||||
desktop/views/pages/home-customize.vue:
|
desktop/views/pages/home-customize.vue:
|
||||||
title: "ホームのカスタマイズ"
|
title: "ホームのカスタマイズ"
|
||||||
desktop/views/pages/note.vue:
|
desktop/views/pages/note.vue:
|
||||||
@@ -973,11 +1082,11 @@ desktop/views/pages/selectdrive.vue:
|
|||||||
upload: "PCからドライブにファイルをアップロード"
|
upload: "PCからドライブにファイルをアップロード"
|
||||||
desktop/views/pages/search.vue:
|
desktop/views/pages/search.vue:
|
||||||
not-available: "検索機能はインスタンスの設定で無効になっています。"
|
not-available: "検索機能はインスタンスの設定で無効になっています。"
|
||||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
not-found: "「{q}」に関する投稿は見つかりませんでした。"
|
||||||
desktop/views/pages/share.vue:
|
desktop/views/pages/share.vue:
|
||||||
share-with: "{}で共有"
|
share-with: "{name}で共有"
|
||||||
desktop/views/pages/tag.vue:
|
desktop/views/pages/tag.vue:
|
||||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
|
||||||
desktop/views/pages/user-list.users.vue:
|
desktop/views/pages/user-list.users.vue:
|
||||||
users: "Bruker"
|
users: "Bruker"
|
||||||
add-user: "ユーザーを追加"
|
add-user: "ユーザーを追加"
|
||||||
@@ -990,12 +1099,6 @@ desktop/views/pages/user/user.friends.vue:
|
|||||||
title: "よく話すユーザー"
|
title: "よく話すユーザー"
|
||||||
loading: "Laster inn"
|
loading: "Laster inn"
|
||||||
no-users: "よく話すユーザーはいません"
|
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:
|
desktop/views/pages/user/user.photos.vue:
|
||||||
title: "Bilder"
|
title: "Bilder"
|
||||||
loading: "Laster inn"
|
loading: "Laster inn"
|
||||||
@@ -1008,6 +1111,9 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "ミュートする"
|
mute: "ミュートする"
|
||||||
muted: "ミュートしています"
|
muted: "ミュートしています"
|
||||||
unmute: "ミュート解除"
|
unmute: "ミュート解除"
|
||||||
|
block: "ブロックする"
|
||||||
|
unblock: "ブロック解除"
|
||||||
|
block-confirm: "このユーザーをブロックしますか?"
|
||||||
push-to-a-list: "リストに追加"
|
push-to-a-list: "リストに追加"
|
||||||
list-pushed: "{user}を{list}に追加しました。"
|
list-pushed: "{user}を{list}に追加しました。"
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.header.vue:
|
||||||
@@ -1015,6 +1121,10 @@ desktop/views/pages/user/user.header.vue:
|
|||||||
following: "Følger"
|
following: "Følger"
|
||||||
followers: "フォロワー"
|
followers: "フォロワー"
|
||||||
is-bot: "このアカウントはBotです"
|
is-bot: "このアカウントはBotです"
|
||||||
|
years-old: "{age}歳"
|
||||||
|
year: "年"
|
||||||
|
month: "月"
|
||||||
|
day: "日"
|
||||||
desktop/views/pages/user/user.timeline.vue:
|
desktop/views/pages/user/user.timeline.vue:
|
||||||
default: "Innlegg"
|
default: "Innlegg"
|
||||||
with-replies: "Innlegg og svar"
|
with-replies: "Innlegg og svar"
|
||||||
@@ -1044,12 +1154,10 @@ desktop/views/widgets/users.vue:
|
|||||||
refresh: "Oppdater"
|
refresh: "Oppdater"
|
||||||
no-one: "Ingen"
|
no-one: "Ingen"
|
||||||
mobile/views/components/drive.vue:
|
mobile/views/components/drive.vue:
|
||||||
drive: "Disk"
|
|
||||||
used: "brukt"
|
used: "brukt"
|
||||||
folder-count: "Mappe(r)"
|
folder-count: "Mappe(r)"
|
||||||
count-separator: ","
|
count-separator: ","
|
||||||
file-count: "Fil(er)"
|
file-count: "Fil(er)"
|
||||||
load-more: "もっと読み込む"
|
|
||||||
nothing-in-drive: "ドライブには何もありません"
|
nothing-in-drive: "ドライブには何もありません"
|
||||||
folder-is-empty: "このフォルダは空です"
|
folder-is-empty: "このフォルダは空です"
|
||||||
prompt: "何をしますか?(数字を入力してください): <1 → ファイルをアップロード | 2 → ファイルをURLでアップロード | 3 → フォルダ作成 | 4 → このフォルダ名を変更 | 5 → このフォルダを移動 | 6 → このフォルダを削除>"
|
prompt: "何をしますか?(数字を入力してください): <1 → ファイルをアップロード | 2 → ファイルをURLでアップロード | 3 → フォルダ作成 | 4 → このフォルダ名を変更 | 5 → このフォルダを移動 | 6 → このフォルダを削除>"
|
||||||
@@ -1059,8 +1167,6 @@ mobile/views/components/drive.vue:
|
|||||||
root-move-alert: "現在いる場所はルートで、フォルダではないため移動はできません。移動したいフォルダに移動してからやってください。"
|
root-move-alert: "現在いる場所はルートで、フォルダではないため移動はできません。移動したいフォルダに移動してからやってください。"
|
||||||
url-prompt: "アップロードしたいファイルのURL"
|
url-prompt: "アップロードしたいファイルのURL"
|
||||||
uploading: "アップロードをリクエストしました。アップロードが完了するまで時間がかかる場合があります。"
|
uploading: "アップロードをリクエストしました。アップロードが完了するまで時間がかかる場合があります。"
|
||||||
mobile/views/components/drive-file-detail.vue:
|
|
||||||
rename: "Endre navn"
|
|
||||||
mobile/views/components/drive-file-chooser.vue:
|
mobile/views/components/drive-file-chooser.vue:
|
||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
mobile/views/components/drive-folder-chooser.vue:
|
mobile/views/components/drive-folder-chooser.vue:
|
||||||
@@ -1074,15 +1180,17 @@ mobile/views/components/drive.file-detail.vue:
|
|||||||
hash: "ハッシュ (md5)"
|
hash: "ハッシュ (md5)"
|
||||||
exif: "EXIF"
|
exif: "EXIF"
|
||||||
nsfw: "NSFW"
|
nsfw: "NSFW"
|
||||||
|
mark-as-sensitive: "閲覧注意に設定"
|
||||||
|
unmark-as-sensitive: "閲覧注意を解除"
|
||||||
mobile/views/components/media-image.vue:
|
mobile/views/components/media-image.vue:
|
||||||
sensitive: "NSFW"
|
sensitive: "NSFW"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
mobile/views/components/media-video.vue:
|
mobile/views/components/media-video.vue:
|
||||||
sensitive: "Innholdet er NSFW"
|
sensitive: "Innholdet er NSFW"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
mobile/views/components/follow-button.vue:
|
common/views/components/follow-button.vue:
|
||||||
following: "Følger"
|
following: "フォロー中"
|
||||||
follow: "Følg"
|
follow: "フォロー"
|
||||||
request-pending: "フォロー許可待ち"
|
request-pending: "フォロー許可待ち"
|
||||||
follow-processing: "フォロー処理中"
|
follow-processing: "フォロー処理中"
|
||||||
follow-request: "フォロー申請"
|
follow-request: "フォロー申請"
|
||||||
@@ -1112,11 +1220,7 @@ mobile/views/components/note-sub.vue:
|
|||||||
admin: "admin"
|
admin: "admin"
|
||||||
bot: "bot"
|
bot: "bot"
|
||||||
cat: "katt"
|
cat: "katt"
|
||||||
mobile/views/components/notes.vue:
|
|
||||||
failed: "読み込みに失敗しました。"
|
|
||||||
retry: "Prøv på nytt"
|
|
||||||
mobile/views/components/notifications.vue:
|
mobile/views/components/notifications.vue:
|
||||||
more: "Mer"
|
|
||||||
empty: "ありません!"
|
empty: "ありません!"
|
||||||
mobile/views/components/post-form.vue:
|
mobile/views/components/post-form.vue:
|
||||||
add-visible-user: "ユーザーを追加"
|
add-visible-user: "ユーザーを追加"
|
||||||
@@ -1136,17 +1240,14 @@ mobile/views/components/sub-note-content.vue:
|
|||||||
poll: "アンケート"
|
poll: "アンケート"
|
||||||
mobile/views/components/timeline.vue:
|
mobile/views/components/timeline.vue:
|
||||||
empty: "投稿がありません"
|
empty: "投稿がありません"
|
||||||
load-more: "Mer"
|
|
||||||
mobile/views/components/ui.header.vue:
|
mobile/views/components/ui.header.vue:
|
||||||
welcome-back: "おかえりなさい、"
|
welcome-back: "おかえりなさい、"
|
||||||
adjective: "Mr."
|
adjective: "Mr."
|
||||||
mobile/views/components/ui.nav.vue:
|
mobile/views/components/ui.nav.vue:
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
notifications: "Notifikasjon"
|
notifications: "Notifikasjon"
|
||||||
messaging: "Meldinger"
|
|
||||||
follow-requests: "フォロー申請"
|
follow-requests: "フォロー申請"
|
||||||
search: "Søk"
|
search: "Søk"
|
||||||
drive: "Disk"
|
|
||||||
favorites: "Favoritter"
|
favorites: "Favoritter"
|
||||||
user-lists: "Lister"
|
user-lists: "Lister"
|
||||||
widgets: "ウィジェット"
|
widgets: "ウィジェット"
|
||||||
@@ -1158,25 +1259,20 @@ mobile/views/components/ui.nav.vue:
|
|||||||
mobile/views/components/user-timeline.vue:
|
mobile/views/components/user-timeline.vue:
|
||||||
no-notes: "このユーザーは投稿していないようです。"
|
no-notes: "このユーザーは投稿していないようです。"
|
||||||
no-notes-with-media: "メディア付き投稿はありません。"
|
no-notes-with-media: "メディア付き投稿はありません。"
|
||||||
load-more: "Mer"
|
|
||||||
mobile/views/components/users-list.vue:
|
mobile/views/components/users-list.vue:
|
||||||
all: "Alle"
|
all: "Alle"
|
||||||
known: "Du kjenner"
|
known: "Du kjenner"
|
||||||
load-more: "Mer"
|
|
||||||
mobile/views/pages/favorites.vue:
|
mobile/views/pages/favorites.vue:
|
||||||
title: "Favoritter"
|
title: "Favoritter"
|
||||||
mobile/views/pages/user-lists.vue:
|
mobile/views/pages/user-lists.vue:
|
||||||
title: "Lister"
|
title: "Lister"
|
||||||
enter-list-name: "リスト名を入力してください"
|
enter-list-name: "リスト名を入力してください"
|
||||||
mobile/views/pages/drive.vue:
|
|
||||||
drive: "Disk"
|
|
||||||
more: "Vis mer"
|
|
||||||
mobile/views/pages/signup.vue:
|
mobile/views/pages/signup.vue:
|
||||||
lets-start: "📦 始めましょう"
|
lets-start: "📦 始めましょう"
|
||||||
mobile/views/pages/followers.vue:
|
mobile/views/pages/followers.vue:
|
||||||
followers-of: "{}のフォロワー"
|
followers-of: "{name}のフォロワー"
|
||||||
mobile/views/pages/following.vue:
|
mobile/views/pages/following.vue:
|
||||||
following-of: "{}のフォロー"
|
following-of: "{name}のフォロー"
|
||||||
mobile/views/pages/home.vue:
|
mobile/views/pages/home.vue:
|
||||||
home: "Hjem"
|
home: "Hjem"
|
||||||
local: "Lokalt"
|
local: "Lokalt"
|
||||||
@@ -1185,7 +1281,7 @@ mobile/views/pages/home.vue:
|
|||||||
mentions: "あなた宛て"
|
mentions: "あなた宛て"
|
||||||
messages: "メッセージ"
|
messages: "メッセージ"
|
||||||
mobile/views/pages/tag.vue:
|
mobile/views/pages/tag.vue:
|
||||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
|
||||||
mobile/views/pages/welcome.vue:
|
mobile/views/pages/welcome.vue:
|
||||||
signup: "Bli med"
|
signup: "Bli med"
|
||||||
mobile/views/pages/widgets.vue:
|
mobile/views/pages/widgets.vue:
|
||||||
@@ -1196,11 +1292,7 @@ mobile/views/pages/widgets.vue:
|
|||||||
mobile/views/pages/widgets/activity.vue:
|
mobile/views/pages/widgets/activity.vue:
|
||||||
activity: "アクティビティ"
|
activity: "アクティビティ"
|
||||||
mobile/views/pages/share.vue:
|
mobile/views/pages/share.vue:
|
||||||
share-with: "{}で共有"
|
share-with: "{name}で共有"
|
||||||
mobile/views/pages/messaging.vue:
|
|
||||||
messaging: "Meldinger"
|
|
||||||
mobile/views/pages/messaging-room.vue:
|
|
||||||
messaging: "Meldinger"
|
|
||||||
mobile/views/pages/received-follow-requests.vue:
|
mobile/views/pages/received-follow-requests.vue:
|
||||||
title: "フォロー申請"
|
title: "フォロー申請"
|
||||||
accept: "Godta"
|
accept: "Godta"
|
||||||
@@ -1214,27 +1306,9 @@ mobile/views/pages/notifications.vue:
|
|||||||
read-all: "すべての通知を既読にしますか?"
|
read-all: "すべての通知を既読にしますか?"
|
||||||
mobile/views/pages/games/reversi.vue:
|
mobile/views/pages/games/reversi.vue:
|
||||||
reversi: "Reversi"
|
reversi: "Reversi"
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
|
||||||
title: "プロフィール"
|
|
||||||
name: "Navn"
|
|
||||||
account: "Konto"
|
|
||||||
location: "Lokasjon"
|
|
||||||
description: "Om meg"
|
|
||||||
birthday: "Bursdag"
|
|
||||||
avatar: "Avatar"
|
|
||||||
banner: "Banner"
|
|
||||||
is-cat: "このアカウントはCatです"
|
|
||||||
is-locked: "フォローを承認制にする"
|
|
||||||
advanced: "Avansert"
|
|
||||||
privacy: "プライバシー"
|
|
||||||
save: "Lagre profilen"
|
|
||||||
saved: "プロフィールを保存しました"
|
|
||||||
uploading: "アップロード中"
|
|
||||||
upload-failed: "アップロードに失敗しました"
|
|
||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
search: "Søk"
|
search: "Søk"
|
||||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
not-found: "「{q}」に関する投稿は見つかりませんでした。"
|
||||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
|
||||||
mobile/views/pages/selectdrive.vue:
|
mobile/views/pages/selectdrive.vue:
|
||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
mobile/views/pages/settings.vue:
|
mobile/views/pages/settings.vue:
|
||||||
@@ -1273,6 +1347,14 @@ mobile/views/pages/settings.vue:
|
|||||||
twitter-connect: "Twitterアカウントに接続する"
|
twitter-connect: "Twitterアカウントに接続する"
|
||||||
twitter-reconnect: "Koble til på nytt"
|
twitter-reconnect: "Koble til på nytt"
|
||||||
twitter-disconnect: "Koble fra"
|
twitter-disconnect: "Koble fra"
|
||||||
|
github: "GitHub連携"
|
||||||
|
github-connect: "GitHubアカウントに接続する"
|
||||||
|
github-reconnect: "再接続する"
|
||||||
|
github-disconnect: "切断する"
|
||||||
|
discord: "Discord連携"
|
||||||
|
discord-connect: "Discordアカウントに接続する"
|
||||||
|
discord-reconnect: "再接続する"
|
||||||
|
discord-disconnect: "切断する"
|
||||||
update: "Misskey Update"
|
update: "Misskey Update"
|
||||||
version: "バージョン:"
|
version: "バージョン:"
|
||||||
latest-version: "最新のバージョン:"
|
latest-version: "最新のバージョン:"
|
||||||
@@ -1286,6 +1368,8 @@ mobile/views/pages/settings.vue:
|
|||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
sound: "Lyder"
|
sound: "Lyder"
|
||||||
enable-sounds: "サウンドを有効にする"
|
enable-sounds: "サウンドを有効にする"
|
||||||
|
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
|
||||||
|
password: "パスワード"
|
||||||
mobile/views/pages/user.vue:
|
mobile/views/pages/user.vue:
|
||||||
follows-you: "フォローされています"
|
follows-you: "フォローされています"
|
||||||
following: "Følger"
|
following: "Følger"
|
||||||
@@ -1295,8 +1379,11 @@ mobile/views/pages/user.vue:
|
|||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
media: "Media"
|
media: "Media"
|
||||||
is-suspended: "このユーザーは凍結されています。"
|
is-suspended: "このユーザーは凍結されています。"
|
||||||
is-remote: "このユーザーはリモートユーザーです。"
|
mute: "ミュート"
|
||||||
view-remote: "正確な情報を見る"
|
unmute: "ミュート解除"
|
||||||
|
block: "ブロック"
|
||||||
|
unblock: "ブロック解除"
|
||||||
|
years-old: "{age}歳"
|
||||||
mobile/views/pages/user/home.vue:
|
mobile/views/pages/user/home.vue:
|
||||||
recent-notes: "Nylige innlegg"
|
recent-notes: "Nylige innlegg"
|
||||||
images: "Bilder"
|
images: "Bilder"
|
||||||
@@ -1307,17 +1394,46 @@ mobile/views/pages/user/home.vue:
|
|||||||
followers-you-know: "知り合いのフォロワー"
|
followers-you-know: "知り合いのフォロワー"
|
||||||
last-used-at: "最終ログイン"
|
last-used-at: "最終ログイン"
|
||||||
mobile/views/pages/user/home.followers-you-know.vue:
|
mobile/views/pages/user/home.followers-you-know.vue:
|
||||||
loading: "Laster inn"
|
|
||||||
no-users: "知り合いのユーザーはいません"
|
no-users: "知り合いのユーザーはいません"
|
||||||
mobile/views/pages/user/home.friends.vue:
|
mobile/views/pages/user/home.friends.vue:
|
||||||
loading: "Laster inn"
|
|
||||||
no-users: "よく会話するユーザーはいません"
|
no-users: "よく会話するユーザーはいません"
|
||||||
mobile/views/pages/user/home.notes.vue:
|
mobile/views/pages/user/home.notes.vue:
|
||||||
loading: "Laster inn"
|
|
||||||
no-notes: "投稿はありません"
|
no-notes: "投稿はありません"
|
||||||
mobile/views/pages/user/home.photos.vue:
|
mobile/views/pages/user/home.photos.vue:
|
||||||
loading: "Laster inn"
|
|
||||||
no-photos: "写真はありません"
|
no-photos: "写真はありません"
|
||||||
|
deck:
|
||||||
|
widgets: "ウィジェット"
|
||||||
|
home: "ホーム"
|
||||||
|
local: "ローカル"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
|
hashtag: "ハッシュタグ"
|
||||||
|
global: "グローバル"
|
||||||
|
mentions: "あなた宛て"
|
||||||
|
direct: "ダイレクト投稿"
|
||||||
|
notifications: "通知"
|
||||||
|
list: "リスト"
|
||||||
|
swap-left: "左に移動"
|
||||||
|
swap-right: "右に移動"
|
||||||
|
swap-up: "上に移動"
|
||||||
|
swap-down: "下に移動"
|
||||||
|
remove: "カラムを削除"
|
||||||
|
add-column: "カラムを追加"
|
||||||
|
rename: "名前を変更"
|
||||||
|
stack-left: "左に重ねる"
|
||||||
|
pop-right: "右に出す"
|
||||||
|
deck/deck.tl-column.vue:
|
||||||
|
is-media-only: "メディア投稿のみ"
|
||||||
|
is-media-view: "メディアビュー"
|
||||||
|
edit: "オプション"
|
||||||
|
deck/deck.user-column.vue:
|
||||||
|
posts: "投稿"
|
||||||
|
following: "フォロー"
|
||||||
|
followers: "フォロワー"
|
||||||
|
images: "画像"
|
||||||
|
activity: "アクティビティ"
|
||||||
|
timeline: "タイムライン"
|
||||||
|
pinned-notes: "ピン留めされた投稿"
|
||||||
|
push-to-a-list: "リストに追加"
|
||||||
docs:
|
docs:
|
||||||
edit-this-page-on-github: "間違いや改善点を見つけましたか?"
|
edit-this-page-on-github: "間違いや改善点を見つけましたか?"
|
||||||
edit-this-page-on-github-link: "このページをGitHubで編集"
|
edit-this-page-on-github-link: "このページをGitHubで編集"
|
||||||
@@ -1342,3 +1458,29 @@ docs:
|
|||||||
description: "Beskrivelse"
|
description: "Beskrivelse"
|
||||||
dev/views/index.vue:
|
dev/views/index.vue:
|
||||||
manage-apps: "アプリの管理"
|
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: "通知を操作する。"
|
||||||
|
|||||||
@@ -25,13 +25,11 @@ common:
|
|||||||
application-authorization: "アプリの連携"
|
application-authorization: "アプリの連携"
|
||||||
close: "Zamknij"
|
close: "Zamknij"
|
||||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||||
|
load-more: "もっと読み込む"
|
||||||
got-it: "Rozumiem!"
|
got-it: "Rozumiem!"
|
||||||
customization-tips:
|
customization-tips:
|
||||||
title: "Wskazówki o dostosowywaniu"
|
title: "Wskazówki o dostosowywaniu"
|
||||||
paragraph1: "Dostosowywanie strony głównej pozwala na dodawanie, usuwanie, przeciąganie i zmienianie kolejności widżetów."
|
paragraph: "<p>ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。</p><p>一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。</p><p>ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。</p><p>カスタマイズを終了するには、右上の「完了」をクリックします。</p>"
|
||||||
paragraph2: "一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。"
|
|
||||||
paragraph3: "Aby usunąć widżet, <strong>przeciągnij i upuść widżet do części nazwanej „Kosz”</strong> w nagłówku."
|
|
||||||
paragraph4: "Aby zakończyć dostosowywanie, naciśnij „Zakończ” w w prawym górnym rogu."
|
|
||||||
gotit: "Rozumiem!"
|
gotit: "Rozumiem!"
|
||||||
notification:
|
notification:
|
||||||
file-uploaded: "Wysłano plik!"
|
file-uploaded: "Wysłano plik!"
|
||||||
@@ -54,6 +52,8 @@ common:
|
|||||||
years_ago: "{} lat temu"
|
years_ago: "{} lat temu"
|
||||||
month-and-day: "{month}-{day}"
|
month-and-day: "{month}-{day}"
|
||||||
trash: "Kosz"
|
trash: "Kosz"
|
||||||
|
drive: "ドライブ"
|
||||||
|
messaging: "トーク"
|
||||||
weekday-short:
|
weekday-short:
|
||||||
sunday: "N"
|
sunday: "N"
|
||||||
monday: "Pn"
|
monday: "Pn"
|
||||||
@@ -112,20 +112,28 @@ common:
|
|||||||
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
||||||
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
||||||
show-full-acct: "ユーザー名のホストを省略しない"
|
show-full-acct: "ユーザー名のホストを省略しない"
|
||||||
|
show-via: "viaを表示する"
|
||||||
reduce-motion: "UIの動きを減らす"
|
reduce-motion: "UIの動きを減らす"
|
||||||
this-setting-is-this-device-only: "このデバイスのみ"
|
this-setting-is-this-device-only: "このデバイスのみ"
|
||||||
|
use-os-default-emojis: "OS標準の絵文字を使用"
|
||||||
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
||||||
|
is-remote-user: "このユーザー情報はコピーです。"
|
||||||
|
is-remote-post: "この投稿情報はコピーです。"
|
||||||
|
view-on-remote: "正確な情報を見る"
|
||||||
|
error:
|
||||||
|
title: '問題が発生しました'
|
||||||
|
retry: 'やり直す'
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "Remis"
|
drawn: "Remis"
|
||||||
my-turn: "Twoja kolej"
|
my-turn: "Twoja kolej"
|
||||||
opponent-turn: "Kolej na przeciwnika"
|
opponent-turn: "Kolej na przeciwnika"
|
||||||
turn-of: "Kolej na {}"
|
turn-of: "{name}のターンです"
|
||||||
past-turn-of: "Kolej {}"
|
past-turn-of: "{name}のターン"
|
||||||
won: "{}の勝ち"
|
won: "{name}の勝ち"
|
||||||
black: "Czarny"
|
black: "Czarny"
|
||||||
white: "Biały"
|
white: "Biały"
|
||||||
total: "Łącznie"
|
total: "Łącznie"
|
||||||
this-turn: "Ruch {}"
|
this-turn: "{count}ターン目"
|
||||||
widgets:
|
widgets:
|
||||||
analog-clock: "Zegar analogowy"
|
analog-clock: "Zegar analogowy"
|
||||||
profile: "Profil"
|
profile: "Profil"
|
||||||
@@ -144,34 +152,15 @@ common:
|
|||||||
users: "Polecani użytkownicy"
|
users: "Polecani użytkownicy"
|
||||||
polls: "Ankiety"
|
polls: "Ankiety"
|
||||||
post-form: "Formularz tworzenia"
|
post-form: "Formularz tworzenia"
|
||||||
messaging: "Wiadomości"
|
|
||||||
server: "Informacje o serwerze"
|
server: "Informacje o serwerze"
|
||||||
donation: "Dotacje"
|
donation: "Dotacje"
|
||||||
nav: "Nawigacja"
|
nav: "Nawigacja"
|
||||||
tips: "Wskazówki"
|
tips: "Wskazówki"
|
||||||
hashtags: "Hashtagi"
|
hashtags: "Hashtagi"
|
||||||
deck:
|
dev: "アプリの作成に失敗しました。再度お試しください。"
|
||||||
widgets: "Widżety"
|
ai-chan-kawaii: "藍ちゃかわいい"
|
||||||
home: "Strona główna"
|
|
||||||
local: "Lokalne"
|
|
||||||
hybrid: "Społeczność"
|
|
||||||
hashtag: "ハッシュタグ"
|
|
||||||
global: "Globalne"
|
|
||||||
mentions: "あなた宛て"
|
|
||||||
direct: "ダイレクト投稿"
|
|
||||||
notifications: "Powiadomienia"
|
|
||||||
list: "Listy"
|
|
||||||
swap-left: "Przesuń w lewo"
|
|
||||||
swap-right: "Przesuń w prawo"
|
|
||||||
swap-up: "Przenieś w górę"
|
|
||||||
swap-down: "Przenieś w dół"
|
|
||||||
remove: "Usuń"
|
|
||||||
add-column: "Dodaj kolumnę"
|
|
||||||
rename: "Zmień nazwę"
|
|
||||||
stack-left: "Przypnij do lewej"
|
|
||||||
pop-right: "Odepnij w prawo"
|
|
||||||
auth/views/form.vue:
|
auth/views/form.vue:
|
||||||
share-access: "Czy chcesz <b>zezwolić</b> <i>{{ app.name }}</i> na dostęp do Twojego konta?"
|
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
|
||||||
permission-ask: "Ta aplikacja wymaga następujących uprawnień:"
|
permission-ask: "Ta aplikacja wymaga następujących uprawnień:"
|
||||||
account-read: "Wyświetlanie informacji o koncie:"
|
account-read: "Wyświetlanie informacji o koncie:"
|
||||||
account-write: "Modyfikowanie informacji o koncie:"
|
account-write: "Modyfikowanie informacji o koncie:"
|
||||||
@@ -308,7 +297,6 @@ common/views/components/messaging.vue:
|
|||||||
no-history: "Brak historii"
|
no-history: "Brak historii"
|
||||||
common/views/components/messaging-room.vue:
|
common/views/components/messaging-room.vue:
|
||||||
empty: "Brak konwersacji"
|
empty: "Brak konwersacji"
|
||||||
more: "Więcej"
|
|
||||||
no-history: "Brak dalszej historii"
|
no-history: "Brak dalszej historii"
|
||||||
resize-form: "Przeciągnij aby zmienić rozmiar"
|
resize-form: "Przeciągnij aby zmienić rozmiar"
|
||||||
new-message: "Nowa wiadomość"
|
new-message: "Nowa wiadomość"
|
||||||
@@ -356,6 +344,16 @@ common/views/components/poll-editor.vue:
|
|||||||
destroy: "Usuń tę ankietę"
|
destroy: "Usuń tę ankietę"
|
||||||
common/views/components/reaction-picker.vue:
|
common/views/components/reaction-picker.vue:
|
||||||
choose-reaction: "Wybierz reakcję"
|
choose-reaction: "Wybierz reakcję"
|
||||||
|
common/views/components/emoji-picker.vue:
|
||||||
|
custom-emoji: "カスタム絵文字"
|
||||||
|
people: "人"
|
||||||
|
animals-and-nature: "動物&自然"
|
||||||
|
food-and-drink: "食べ物&飲み物"
|
||||||
|
activity: "アクティビティ"
|
||||||
|
travel-and-places: "場所"
|
||||||
|
objects: "物"
|
||||||
|
symbols: "記号"
|
||||||
|
flags: "旗"
|
||||||
common/views/components/signin.vue:
|
common/views/components/signin.vue:
|
||||||
username: "Nazwa użytkownika"
|
username: "Nazwa użytkownika"
|
||||||
password: "Hasło"
|
password: "Hasło"
|
||||||
@@ -364,6 +362,8 @@ common/views/components/signin.vue:
|
|||||||
signin: "Zaloguj"
|
signin: "Zaloguj"
|
||||||
or: "または"
|
or: "または"
|
||||||
signin-with-twitter: "Zaloguj się za pomocą Twittera"
|
signin-with-twitter: "Zaloguj się za pomocą Twittera"
|
||||||
|
signin-with-github: "GitHubでログイン"
|
||||||
|
signin-with-discord: "Discordでログイン"
|
||||||
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
invitation-code: "招待コード"
|
invitation-code: "招待コード"
|
||||||
@@ -402,6 +402,20 @@ common/views/components/twitter-setting.vue:
|
|||||||
reconnect: "Połącz ponownie"
|
reconnect: "Połącz ponownie"
|
||||||
connect: "Połącz z kontem Twittera"
|
connect: "Połącz z kontem Twittera"
|
||||||
disconnect: "Rozłącz"
|
disconnect: "Rozłącz"
|
||||||
|
common/views/components/github-setting.vue:
|
||||||
|
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
|
||||||
|
connected-to: "次のGitHubアカウントに接続されています"
|
||||||
|
detail: "詳細..."
|
||||||
|
reconnect: "再接続する"
|
||||||
|
connect: "GitHubと接続する"
|
||||||
|
disconnect: "切断する"
|
||||||
|
common/views/components/discord-setting.vue:
|
||||||
|
description: "お使いのDiscordアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでDiscordアカウント情報が表示されるようになったり、Discordを用いた便利なサインインを利用できるようになります。"
|
||||||
|
connected-to: "次のDiscordアカウントに接続されています"
|
||||||
|
detail: "詳細..."
|
||||||
|
reconnect: "再接続する"
|
||||||
|
connect: "Discordと接続する"
|
||||||
|
disconnect: "切断する"
|
||||||
common/views/components/uploader.vue:
|
common/views/components/uploader.vue:
|
||||||
waiting: "Oczekiwanie"
|
waiting: "Oczekiwanie"
|
||||||
common/views/components/visibility-chooser.vue:
|
common/views/components/visibility-chooser.vue:
|
||||||
@@ -416,6 +430,25 @@ common/views/components/visibility-chooser.vue:
|
|||||||
common/views/components/trends.vue:
|
common/views/components/trends.vue:
|
||||||
count: "{}人が投稿"
|
count: "{}人が投稿"
|
||||||
empty: "トレンドなし"
|
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:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "Sprawdzanie"
|
fetching: "Sprawdzanie"
|
||||||
no-broadcasts: "Brak transmisji"
|
no-broadcasts: "Brak transmisji"
|
||||||
@@ -499,34 +532,12 @@ desktop/views/components/activity.vue:
|
|||||||
title: "Aktywność"
|
title: "Aktywność"
|
||||||
toggle: "Przełącz widok"
|
toggle: "Przełącz widok"
|
||||||
desktop/views/components/calendar.vue:
|
desktop/views/components/calendar.vue:
|
||||||
title: "{1} / {2}"
|
title: "{year}年 {month}月"
|
||||||
prev: "Poprzedni miesiąc"
|
prev: "Poprzedni miesiąc"
|
||||||
next: "Następny miesiąc"
|
next: "Następny miesiąc"
|
||||||
go: "Naciśnij, aby przejść"
|
go: "Naciśnij, aby przejść"
|
||||||
desktop/views/components/charts.vue:
|
|
||||||
title: "チャート"
|
|
||||||
per-day: "1日ごと"
|
|
||||||
per-hour: "1時間ごと"
|
|
||||||
notes: "投稿"
|
|
||||||
users: "ユーザー"
|
|
||||||
drive: "ドライブ"
|
|
||||||
network: "ネットワーク"
|
|
||||||
charts:
|
|
||||||
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:
|
desktop/views/components/choose-file-from-drive-window.vue:
|
||||||
choose-file: "Wybierz plik"
|
chosen-files: "{count}ファイル選択中"
|
||||||
upload: "Wyślij pliki z Twojego komputera"
|
upload: "Wyślij pliki z Twojego komputera"
|
||||||
cancel: "Anuluj"
|
cancel: "Anuluj"
|
||||||
ok: "OK"
|
ok: "OK"
|
||||||
@@ -541,7 +552,6 @@ desktop/views/components/crop-window.vue:
|
|||||||
ok: "OK"
|
ok: "OK"
|
||||||
desktop/views/components/drive-window.vue:
|
desktop/views/components/drive-window.vue:
|
||||||
used: "wykorzystane"
|
used: "wykorzystane"
|
||||||
drive: "Dysk"
|
|
||||||
desktop/views/components/drive.file.vue:
|
desktop/views/components/drive.file.vue:
|
||||||
avatar: "Awatar"
|
avatar: "Awatar"
|
||||||
banner: "Baner"
|
banner: "Baner"
|
||||||
@@ -571,11 +581,8 @@ desktop/views/components/drive.folder.vue:
|
|||||||
rename: "Zmień nazwę"
|
rename: "Zmień nazwę"
|
||||||
rename-folder: "Zmień nazwę katalogu"
|
rename-folder: "Zmień nazwę katalogu"
|
||||||
input-new-folder-name: "Wprowadź nową nazwę"
|
input-new-folder-name: "Wprowadź nową nazwę"
|
||||||
desktop/views/components/drive.nav-folder.vue:
|
|
||||||
drive: "Dysk"
|
|
||||||
desktop/views/components/drive.vue:
|
desktop/views/components/drive.vue:
|
||||||
search: "Szukaj"
|
search: "Szukaj"
|
||||||
load-more: "Załaduj więcej"
|
|
||||||
empty-draghover: "Przeciągnij tutaj!"
|
empty-draghover: "Przeciągnij tutaj!"
|
||||||
empty-drive: "Twój dysk jest pusty"
|
empty-drive: "Twój dysk jest pusty"
|
||||||
empty-drive-description: "Możesz wysłać plik klikając prawym przyciskiem myszy i wybierając \"Wyślij plik\" lub przeciągnąć plik i upuścić w tym oknie."
|
empty-drive-description: "Możesz wysłać plik klikając prawym przyciskiem myszy i wybierając \"Wyślij plik\" lub przeciągnąć plik i upuścić w tym oknie."
|
||||||
@@ -599,12 +606,6 @@ desktop/views/components/media-image.vue:
|
|||||||
desktop/views/components/media-video.vue:
|
desktop/views/components/media-video.vue:
|
||||||
sensitive: "To jest zawartość NSFW"
|
sensitive: "To jest zawartość NSFW"
|
||||||
click-to-show: "Naciśnij aby wyświetlić"
|
click-to-show: "Naciśnij aby wyświetlić"
|
||||||
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:
|
desktop/views/components/followers-window.vue:
|
||||||
followers: "Śledzący"
|
followers: "Śledzący"
|
||||||
desktop/views/components/followers.vue:
|
desktop/views/components/followers.vue:
|
||||||
@@ -633,27 +634,24 @@ desktop/views/components/messaging-room-window.vue:
|
|||||||
desktop/views/components/messaging-window.vue:
|
desktop/views/components/messaging-window.vue:
|
||||||
title: "Wiadomości"
|
title: "Wiadomości"
|
||||||
desktop/views/components/note-detail.vue:
|
desktop/views/components/note-detail.vue:
|
||||||
more: "Załaduj więcej konwersacji"
|
|
||||||
private: "ten wpis jest prywatny"
|
private: "ten wpis jest prywatny"
|
||||||
deleted: "ten wpis został usunięty"
|
deleted: "ten wpis został usunięty"
|
||||||
reposted-by: "Udostępniono przez {}"
|
reposted-by: "Udostępniono przez {}"
|
||||||
location: "Informacje o lokalizacji"
|
location: "Informacje o lokalizacji"
|
||||||
renote: "Udostępnienie"
|
renote: "Udostępnienie"
|
||||||
add-reaction: "Dodaj reakcję"
|
add-reaction: "Dodaj reakcję"
|
||||||
desktop/views/components/notes.note.vue:
|
desktop/views/components/note.vue:
|
||||||
reposted-by: "Udostępniono przez {}"
|
reposted-by: "{}がRenote"
|
||||||
reply: "Odpowiedz"
|
reply: "返信"
|
||||||
renote: "Udostępnij"
|
renote: "Renote"
|
||||||
add-reaction: "Dodaj reakcję"
|
add-reaction: "リアクション"
|
||||||
detail: "Pokaż szczegóły"
|
detail: "詳細"
|
||||||
private: "ten wpis jest prywatny"
|
private: "この投稿は非公開です"
|
||||||
deleted: "ten wpis został usunięty"
|
deleted: "この投稿は削除されました"
|
||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "Ładowanie nie powiodło się."
|
error: "Ładowanie nie powiodło się."
|
||||||
retry: "Spróbuj ponownie"
|
retry: "Spróbuj ponownie"
|
||||||
load-more: "Załaduj więcej"
|
|
||||||
desktop/views/components/notifications.vue:
|
desktop/views/components/notifications.vue:
|
||||||
more: "Więcej"
|
|
||||||
empty: "Brak powiadomień"
|
empty: "Brak powiadomień"
|
||||||
desktop/views/components/post-form.vue:
|
desktop/views/components/post-form.vue:
|
||||||
add-visible-user: "+Dodaj użytkownika"
|
add-visible-user: "+Dodaj użytkownika"
|
||||||
@@ -700,14 +698,17 @@ desktop/views/components/renote-form.vue:
|
|||||||
failure: "Nie udało się udostępnić"
|
failure: "Nie udało się udostępnić"
|
||||||
desktop/views/components/renote-form-window.vue:
|
desktop/views/components/renote-form-window.vue:
|
||||||
title: "Czy na pewno chcesz udostępnić ten wpis?"
|
title: "Czy na pewno chcesz udostępnić ten wpis?"
|
||||||
|
desktop/views/pages/user-following-or-followers.vue:
|
||||||
|
following: "{user}のフォロー"
|
||||||
|
followers: "{user}のフォロワー"
|
||||||
desktop/views/components/settings-window.vue:
|
desktop/views/components/settings-window.vue:
|
||||||
settings: "Ustawienia"
|
settings: "Ustawienia"
|
||||||
desktop/views/components/settings.vue:
|
desktop/views/components/settings.vue:
|
||||||
profile: "Profil"
|
profile: "Profil"
|
||||||
notification: "Powiadomienia"
|
notification: "Powiadomienia"
|
||||||
apps: "Aplikacje"
|
apps: "Aplikacje"
|
||||||
mute: "Wyciszanie"
|
mute-and-block: "ミュート/ブロック"
|
||||||
drive: "Dysk"
|
blocking: "ブロック"
|
||||||
security: "Bezpieczeństwo"
|
security: "Bezpieczeństwo"
|
||||||
signin: "Historia logowań"
|
signin: "Historia logowań"
|
||||||
password: "Hasło"
|
password: "Hasło"
|
||||||
@@ -726,8 +727,12 @@ desktop/views/components/settings.vue:
|
|||||||
advanced: "Ustawienia zaawansowane"
|
advanced: "Ustawienia zaawansowane"
|
||||||
api-via-stream: "ストリームを経由したAPIリクエスト"
|
api-via-stream: "ストリームを経由したAPIリクエスト"
|
||||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||||
|
deck-nav: "デッキ内ナビゲーション"
|
||||||
|
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
|
||||||
|
deck-default: "デッキをデフォルトのUIにする"
|
||||||
display: "Wygląd i wyświetlanie"
|
display: "Wygląd i wyświetlanie"
|
||||||
customize: "Dostosuj stronę główną"
|
customize: "Dostosuj stronę główną"
|
||||||
|
wallpaper: "壁紙"
|
||||||
choose-wallpaper: "Wybierz tło"
|
choose-wallpaper: "Wybierz tło"
|
||||||
delete-wallpaper: "Usuń tło"
|
delete-wallpaper: "Usuń tło"
|
||||||
dark-mode: "Tryb ciemny"
|
dark-mode: "Tryb ciemny"
|
||||||
@@ -739,17 +744,19 @@ desktop/views/components/settings.vue:
|
|||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
show-clock-on-header: "右上に時計を表示する"
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "Pokazuj cel odpowiedzi"
|
show-reply-target: "Pokazuj cel odpowiedzi"
|
||||||
|
timeline: "タイムライン"
|
||||||
show-my-renotes: "Pokazuj moje udostępnienia na osi czasu"
|
show-my-renotes: "Pokazuj moje udostępnienia na osi czasu"
|
||||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "Automatycznie pokazuj mapę"
|
show-maps: "Automatycznie pokazuj mapę"
|
||||||
|
deck-column-align: "デッキのカラムの位置"
|
||||||
|
deck-column-align-center: "中央"
|
||||||
|
deck-column-align-left: "左"
|
||||||
sound: "Dźwięk"
|
sound: "Dźwięk"
|
||||||
enable-sounds: "Włącz 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ę."
|
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ść"
|
volume: "Głośność"
|
||||||
test: "Test"
|
test: "Test"
|
||||||
mobile: "Wersja mobilna"
|
|
||||||
disable-via-mobile: "Nie oznaczaj wpisów jako „wysłane z telefonu”"
|
|
||||||
language: "Język"
|
language: "Język"
|
||||||
pick-language: "Wybierz język"
|
pick-language: "Wybierz język"
|
||||||
recommended: "Zalecane"
|
recommended: "Zalecane"
|
||||||
@@ -785,6 +792,10 @@ desktop/views/components/settings.vue:
|
|||||||
tools: "Narzędzia"
|
tools: "Narzędzia"
|
||||||
task-manager: "Menedżer zadań"
|
task-manager: "Menedżer zadań"
|
||||||
third-parties: "Autorzy trzeci"
|
third-parties: "Autorzy trzeci"
|
||||||
|
navbar-position: "ナビゲーションバーの位置"
|
||||||
|
navbar-position-top: "上"
|
||||||
|
navbar-position-left: "左"
|
||||||
|
navbar-position-right: "右"
|
||||||
desktop/views/components/settings.2fa.vue:
|
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."
|
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…"
|
detail: "Zobacz szczegóły…"
|
||||||
@@ -803,41 +814,44 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
success: "Pomyślnie ukończono konfigurację!"
|
success: "Pomyślnie ukończono konfigurację!"
|
||||||
failed: "Nie udało się skonfigurować uwierzytelniania dwuetapowego, upewnij się że wprowadziłeś prawidłowy token."
|
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."
|
info: "Od teraz, wprowadzaj token wyświetlany na urządzeniu przy każdym logowaniu do Misskey."
|
||||||
desktop/views/components/settings.api.vue:
|
common/views/components/api-settings.vue:
|
||||||
intro: "Aby uzyskać dostęp do API, ustaw ten token jako klucz 'i' parametrów żądań."
|
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
||||||
caution: "Nie pokazuj tego tokenu osobom trzecim (nie wprowadzaj go nigdzie indziej), aby konto nie trafiło w niepowołane ręce."
|
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||||
regeneration-of-token: "W przypadku wycieku tokenu, możesz wygenerować nowy."
|
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||||
regenerate-token: "Wygeneruj nowy token"
|
regenerate-token: "トークンを再生成"
|
||||||
token: "Token:"
|
token: "Token:"
|
||||||
enter-password: "Wprowadź hasło"
|
enter-password: "パスワードを入力してください"
|
||||||
|
console:
|
||||||
|
title: 'APIコンソール'
|
||||||
|
endpoint: 'エンドポイント'
|
||||||
|
parameter: 'パラメータ'
|
||||||
|
credential-info: "「i」パラメータは自動で付与されます。"
|
||||||
|
send: '送信'
|
||||||
|
sending: '応答待ち'
|
||||||
|
response: '結果'
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "Brak zautoryzowanych aplikacji"
|
no-apps: "Brak zautoryzowanych aplikacji"
|
||||||
desktop/views/components/settings.drive.vue:
|
common/views/components/drive-settings.vue:
|
||||||
max: "Maksymalnie"
|
max: "容量"
|
||||||
in-use: " w użyciu."
|
in-use: "使用中"
|
||||||
desktop/views/components/settings.mute.vue:
|
stats: "統計"
|
||||||
no-users: "Brak wyciszonych użytkowników"
|
common/views/components/mute-and-block.vue:
|
||||||
desktop/views/components/settings.password.vue:
|
mute-and-block: "ミュートとブロック"
|
||||||
reset: "Zmień hasło"
|
mute: "ミュート"
|
||||||
enter-current-password: "Wprowadź obecne hasło"
|
block: "ブロック"
|
||||||
enter-new-password: "Wprowadź nowe hasło"
|
no-muted-users: "ミュートしているユーザーはいません"
|
||||||
enter-new-password-again: "Wprowadź ponownie nowe hasło"
|
no-blocked-users: "ブロックしているユーザーはいません"
|
||||||
not-match: "Nowe hasła nie pasują do siebie"
|
word-mute: "ワードミュート"
|
||||||
changed: "Pomyślnie zmieniono hasło"
|
muted-words: "ミュートされたキーワード"
|
||||||
desktop/views/components/settings.profile.vue:
|
muted-words-description: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります"
|
||||||
avatar: "Awatar"
|
save: "保存"
|
||||||
choice-avatar: "Wybierz obraz"
|
common/views/components/password-settings.vue:
|
||||||
name: "Nazwa"
|
reset: "パスワードを変更する"
|
||||||
location: "Lokalizacja"
|
enter-current-password: "現在のパスワードを入力してください"
|
||||||
description: "Opis"
|
enter-new-password: "新しいパスワードを入力してください"
|
||||||
birthday: "Data urodzenia"
|
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
||||||
save: "Aktualizuj profil"
|
not-match: "新しいパスワードが一致しません"
|
||||||
locked-account: "Zabezpiecz swoje konto"
|
changed: "パスワードを変更しました"
|
||||||
is-locked: "フォローを承認制にする"
|
|
||||||
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:
|
desktop/views/components/sub-note-content.vue:
|
||||||
private: "ten wpis jest prywatny"
|
private: "ten wpis jest prywatny"
|
||||||
deleted: "ten wpis został usunięty"
|
deleted: "ten wpis został usunięty"
|
||||||
@@ -862,7 +876,6 @@ desktop/views/components/ui.header.vue:
|
|||||||
adjective: "さん"
|
adjective: "さん"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "Twój profil"
|
profile: "Twój profil"
|
||||||
drive: "Dysk"
|
|
||||||
favorites: "Ulubione"
|
favorites: "Ulubione"
|
||||||
lists: "Listy"
|
lists: "Listy"
|
||||||
follow-requests: "Prośby o śledzenie"
|
follow-requests: "Prośby o śledzenie"
|
||||||
@@ -874,7 +887,6 @@ desktop/views/components/ui.header.account.vue:
|
|||||||
desktop/views/components/ui.header.nav.vue:
|
desktop/views/components/ui.header.nav.vue:
|
||||||
home: "Strona główna"
|
home: "Strona główna"
|
||||||
deck: "Talia"
|
deck: "Talia"
|
||||||
messaging: "Wiadomości"
|
|
||||||
game: "Gra"
|
game: "Gra"
|
||||||
desktop/views/components/ui.header.notifications.vue:
|
desktop/views/components/ui.header.notifications.vue:
|
||||||
title: "Powiadomienia"
|
title: "Powiadomienia"
|
||||||
@@ -897,54 +909,153 @@ desktop/views/components/user-preview.vue:
|
|||||||
desktop/views/components/users-list.vue:
|
desktop/views/components/users-list.vue:
|
||||||
all: "Wszyscy"
|
all: "Wszyscy"
|
||||||
iknow: "Znasz"
|
iknow: "Znasz"
|
||||||
load-more: "Więcej"
|
|
||||||
fetching: "Ładowanie…"
|
fetching: "Ładowanie…"
|
||||||
desktop/views/components/users-list-item.vue:
|
desktop/views/components/users-list-item.vue:
|
||||||
followed: "Obserwuje Cię"
|
followed: "Obserwuje Cię"
|
||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "Pop-out"
|
popout: "Pop-out"
|
||||||
close: "Zamknij"
|
close: "Zamknij"
|
||||||
desktop/views/pages/admin/admin.vue:
|
admin/views/index.vue:
|
||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
drive: "ドライブ"
|
instance: "インスタンス"
|
||||||
|
emoji: "カスタム絵文字"
|
||||||
|
moderators: "モデレーター"
|
||||||
users: "ユーザー"
|
users: "ユーザー"
|
||||||
update: "更新"
|
update: "更新"
|
||||||
desktop/views/pages/admin/admin.dashboard.vue:
|
announcements: "お知らせ"
|
||||||
|
hashtags: "ハッシュタグ"
|
||||||
|
back-to-misskey: "Misskeyに戻る"
|
||||||
|
admin/views/dashboard.vue:
|
||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
all-users: "全てのユーザー"
|
accounts: "アカウント"
|
||||||
original-users: "このインスタンスのユーザー"
|
notes: "投稿"
|
||||||
all-notes: "全ての投稿"
|
drive: "ドライブ"
|
||||||
original-notes: "このインスタンスの投稿"
|
instances: "インスタンス"
|
||||||
|
this-instance: "このインスタンス"
|
||||||
|
federated: "連合"
|
||||||
|
admin/views/instance.vue:
|
||||||
|
instance: "インスタンス"
|
||||||
|
instance-name: "インスタンス名"
|
||||||
|
instance-description: "インスタンスの紹介"
|
||||||
|
host: "ホスト"
|
||||||
|
banner-url: "バナー画像URL"
|
||||||
|
languages: "インスタンスの対象言語"
|
||||||
|
languages-desc: "スペースで区切って複数設定できます。"
|
||||||
|
maintainer-config: "管理者情報"
|
||||||
|
maintainer-name: "管理者名"
|
||||||
|
maintainer-email: "管理者の連絡先"
|
||||||
|
drive-config: "ドライブの設定"
|
||||||
|
cache-remote-files: "リモートのファイルをキャッシュする"
|
||||||
|
cache-remote-files-desc: "この設定を無効にすると、リモートファイルをキャッシュせず直リンクするようになります。そのためサーバーのストレージを節約できますが、プライバシー設定で直リンクを無効にしているユーザーにはファイルが見えなくなったり、サムネイルが生成されないので通信量が増加します。通常はこの設定をオンにしておくことをおすすめします。"
|
||||||
|
local-drive-capacity-mb: "ローカルユーザーひとりあたりのドライブ容量"
|
||||||
|
remote-drive-capacity-mb: "リモートユーザーひとりあたりのドライブ容量"
|
||||||
|
mb: "メガバイト単位"
|
||||||
|
recaptcha-config: "reCAPTCHAの設定"
|
||||||
|
recaptcha-info: "reCAPTCHAを有効にする場合、reCAPTCHAトークンを取得する必要があります。https://www.google.com/recaptcha/intro/ にアクセスしてトークンを取得してください。"
|
||||||
|
enable-recaptcha: "reCAPTCHAを有効にする"
|
||||||
|
recaptcha-site-key: "reCAPTCHA site key"
|
||||||
|
recaptcha-secret-key: "reCAPTCHA secret key"
|
||||||
|
twitter-integration-config: "Twitter連携の設定"
|
||||||
|
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。"
|
||||||
|
enable-twitter-integration: "Twitter連携を有効にする"
|
||||||
|
twitter-integration-consumer-key: "Consumer key"
|
||||||
|
twitter-integration-consumer-secret: "Consumer secret"
|
||||||
|
github-integration-config: "GitHub連携の設定"
|
||||||
|
github-integration-info: "コールバックURLは /api/gh/cb に設定します。"
|
||||||
|
enable-github-integration: "GitHub連携を有効にする"
|
||||||
|
github-integration-client-id: "Client ID"
|
||||||
|
github-integration-client-secret: "Client Secret"
|
||||||
|
discord-integration-config: "Discord連携の設定"
|
||||||
|
discord-integration-info: "コールバックURLは /api/dc/cb に設定します。"
|
||||||
|
enable-discord-integration: "Discord連携を有効にする"
|
||||||
|
discord-integration-client-id: "Client ID"
|
||||||
|
discord-integration-client-secret: "Client Secret"
|
||||||
|
proxy-account-config: "プロキシアカウントの設定"
|
||||||
|
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
|
||||||
|
proxy-account-username: "プロキシアカウントのユーザー名"
|
||||||
|
proxy-account-username-desc: "プロキシとして使用するアカウントのユーザー名を指定してください。"
|
||||||
|
proxy-account-warn: "アカウントは自動で作られないため、そのユーザー名のアカウントを予め作成しておく必要があります。"
|
||||||
|
max-note-text-length: "投稿の最大文字数"
|
||||||
|
disable-registration: "ユーザー登録の受付を停止する"
|
||||||
|
disable-local-timeline: "ローカルタイムラインを無効にする"
|
||||||
invite: "招待"
|
invite: "招待"
|
||||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
save: "保存"
|
||||||
|
saved: "保存しました"
|
||||||
|
admin/views/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: "通信量"
|
||||||
|
admin/views/users.vue:
|
||||||
suspend-user: "ユーザーの凍結"
|
suspend-user: "ユーザーの凍結"
|
||||||
suspend: "凍結"
|
suspend: "凍結"
|
||||||
suspended: "凍結しました"
|
suspended: "凍結しました"
|
||||||
desktop/views/pages/admin/admin.unsuspend-user.vue:
|
|
||||||
unsuspend-user: "ユーザーの凍結の解除"
|
unsuspend-user: "ユーザーの凍結の解除"
|
||||||
unsuspend: "凍結の解除"
|
unsuspend: "凍結の解除"
|
||||||
unsuspended: "凍結を解除しました"
|
unsuspended: "凍結を解除しました"
|
||||||
desktop/views/pages/admin/admin.verify-user.vue:
|
|
||||||
verify-user: "ユーザーの公式アカウント設定"
|
verify-user: "ユーザーの公式アカウント設定"
|
||||||
verify: "公式アカウントにする"
|
verify: "公式アカウントにする"
|
||||||
verified: "公式アカウントにしました"
|
verified: "公式アカウントにしました"
|
||||||
desktop/views/pages/admin/admin.unverify-user.vue:
|
|
||||||
unverify-user: "ユーザーの公式アカウント解除"
|
unverify-user: "ユーザーの公式アカウント解除"
|
||||||
unverify: "公式アカウントを解除する"
|
unverify: "公式アカウントを解除する"
|
||||||
unverified: "公式アカウントを解除しました"
|
unverified: "公式アカウントを解除しました"
|
||||||
desktop/views/pages/deck/deck.tl-column.vue:
|
admin/views/moderators.vue:
|
||||||
is-media-only: "Tylko wpisy z zawartością multimedialną"
|
add-moderator:
|
||||||
is-media-view: "Widok multimediów"
|
title: "モデレーターの登録"
|
||||||
edit: "Opcje"
|
add: "登録"
|
||||||
desktop/views/pages/deck/deck.note.vue:
|
added: "モデレーターを登録しました"
|
||||||
reposted-by: "Udostępniono przez {}"
|
admin/views/emoji.vue:
|
||||||
private: "ten wpis jest prywatny"
|
add-emoji:
|
||||||
deleted: "ten wpis został usunięty"
|
title: "絵文字の登録"
|
||||||
desktop/views/pages/stats/stats.vue:
|
name: "絵文字名"
|
||||||
all-users: "全てのユーザー"
|
name-desc: "a~z 0~9 _ の文字が使えます。"
|
||||||
original-users: "このインスタンスのユーザー"
|
aliases: "エイリアス"
|
||||||
all-notes: "全ての投稿"
|
aliases-desc: "スペースで区切って複数設定できます。"
|
||||||
original-notes: "このインスタンスの投稿"
|
url: "絵文字画像URL"
|
||||||
|
add: "追加"
|
||||||
|
info: "50KB以下のPNG画像をおすすめします。"
|
||||||
|
added: "絵文字を登録しました"
|
||||||
|
emojis:
|
||||||
|
title: "絵文字一覧"
|
||||||
|
update: "更新"
|
||||||
|
remove: "削除"
|
||||||
|
updated: "更新しました"
|
||||||
|
remove-emoji:
|
||||||
|
are-you-sure: "「$1」を削除しますか?"
|
||||||
|
removed: "削除しました"
|
||||||
|
admin/views/announcements.vue:
|
||||||
|
announcements: "お知らせ"
|
||||||
|
save: "保存"
|
||||||
|
remove: "削除"
|
||||||
|
add: "追加"
|
||||||
|
title: "タイトル"
|
||||||
|
text: "内容"
|
||||||
|
saved: "保存しました"
|
||||||
|
_remove:
|
||||||
|
are-you-sure: "「$1」を削除しますか?"
|
||||||
|
removed: "削除しました"
|
||||||
|
admin/views/hashtags.vue:
|
||||||
|
hided-tags: "Hidden Tags"
|
||||||
desktop/views/pages/welcome.vue:
|
desktop/views/pages/welcome.vue:
|
||||||
about: "O Misskey"
|
about: "O Misskey"
|
||||||
gotit: "Rozumiem!"
|
gotit: "Rozumiem!"
|
||||||
@@ -959,8 +1070,6 @@ desktop/views/pages/welcome.vue:
|
|||||||
info: "情報"
|
info: "情報"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Dysk Misskey"
|
title: "Dysk Misskey"
|
||||||
desktop/views/pages/favorites.vue:
|
|
||||||
more: "Załaduj więcej"
|
|
||||||
desktop/views/pages/home-customize.vue:
|
desktop/views/pages/home-customize.vue:
|
||||||
title: "Dostosuj stronę główną"
|
title: "Dostosuj stronę główną"
|
||||||
desktop/views/pages/note.vue:
|
desktop/views/pages/note.vue:
|
||||||
@@ -973,11 +1082,11 @@ desktop/views/pages/selectdrive.vue:
|
|||||||
upload: "Wyślij pliki z Twojego komputera"
|
upload: "Wyślij pliki z Twojego komputera"
|
||||||
desktop/views/pages/search.vue:
|
desktop/views/pages/search.vue:
|
||||||
not-available: "検索機能はインスタンスの設定で無効になっています。"
|
not-available: "検索機能はインスタンスの設定で無効になっています。"
|
||||||
not-found: "Nie znaleziono wpisów zawierających „{}”"
|
not-found: "「{q}」に関する投稿は見つかりませんでした。"
|
||||||
desktop/views/pages/share.vue:
|
desktop/views/pages/share.vue:
|
||||||
share-with: "Udostępnij z {}."
|
share-with: "{name}で共有"
|
||||||
desktop/views/pages/tag.vue:
|
desktop/views/pages/tag.vue:
|
||||||
no-posts-found: "Nie znaleziono wpisów zawierających „{}”."
|
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
|
||||||
desktop/views/pages/user-list.users.vue:
|
desktop/views/pages/user-list.users.vue:
|
||||||
users: "Użytkownicy"
|
users: "Użytkownicy"
|
||||||
add-user: "Dodaj użytkownika"
|
add-user: "Dodaj użytkownika"
|
||||||
@@ -990,12 +1099,6 @@ desktop/views/pages/user/user.friends.vue:
|
|||||||
title: "Najbardziej aktywni"
|
title: "Najbardziej aktywni"
|
||||||
loading: "Ładowanie"
|
loading: "Ładowanie"
|
||||||
no-users: "Brak użytkowników"
|
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: "
|
|
||||||
desktop/views/pages/user/user.photos.vue:
|
desktop/views/pages/user/user.photos.vue:
|
||||||
title: "Zdjęcia"
|
title: "Zdjęcia"
|
||||||
loading: "Ładowanie"
|
loading: "Ładowanie"
|
||||||
@@ -1008,6 +1111,9 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "Wycisz"
|
mute: "Wycisz"
|
||||||
muted: "Wyciszyłeś"
|
muted: "Wyciszyłeś"
|
||||||
unmute: "Cofnij wyciszenie"
|
unmute: "Cofnij wyciszenie"
|
||||||
|
block: "ブロックする"
|
||||||
|
unblock: "ブロック解除"
|
||||||
|
block-confirm: "このユーザーをブロックしますか?"
|
||||||
push-to-a-list: "Dodaj do listy"
|
push-to-a-list: "Dodaj do listy"
|
||||||
list-pushed: "Dodałeś(-aś) {user} do {list}."
|
list-pushed: "Dodałeś(-aś) {user} do {list}."
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.header.vue:
|
||||||
@@ -1015,6 +1121,10 @@ desktop/views/pages/user/user.header.vue:
|
|||||||
following: "Śledzeni"
|
following: "Śledzeni"
|
||||||
followers: "Śledzący"
|
followers: "Śledzący"
|
||||||
is-bot: "To konto jest botem"
|
is-bot: "To konto jest botem"
|
||||||
|
years-old: "{age}歳"
|
||||||
|
year: "年"
|
||||||
|
month: "月"
|
||||||
|
day: "日"
|
||||||
desktop/views/pages/user/user.timeline.vue:
|
desktop/views/pages/user/user.timeline.vue:
|
||||||
default: "Wpisy"
|
default: "Wpisy"
|
||||||
with-replies: "Wpisy i odpowiedzi"
|
with-replies: "Wpisy i odpowiedzi"
|
||||||
@@ -1044,12 +1154,10 @@ desktop/views/widgets/users.vue:
|
|||||||
refresh: "Pokaż innych"
|
refresh: "Pokaż innych"
|
||||||
no-one: "Pusto"
|
no-one: "Pusto"
|
||||||
mobile/views/components/drive.vue:
|
mobile/views/components/drive.vue:
|
||||||
drive: "Dysk"
|
|
||||||
used: "użyto"
|
used: "użyto"
|
||||||
folder-count: "Katalog(i)"
|
folder-count: "Katalog(i)"
|
||||||
count-separator: ", "
|
count-separator: ", "
|
||||||
file-count: "Plik(i)"
|
file-count: "Plik(i)"
|
||||||
load-more: "Załaduj więcej"
|
|
||||||
nothing-in-drive: "Pusto"
|
nothing-in-drive: "Pusto"
|
||||||
folder-is-empty: "Ten katalog jest pusty"
|
folder-is-empty: "Ten katalog jest pusty"
|
||||||
prompt: "Co chcesz zrobić? (wprowadź odpowiednią cyfrę): <1 → Wysłać plik | 2 → Wysłać plik z adresu URL | 3 → Utworzyć katalog | 4 → Zmienić nazwę tego katalogu | 5 → Przenieść ten katalog | 6 → Usunąć ten katalog>"
|
prompt: "Co chcesz zrobić? (wprowadź odpowiednią cyfrę): <1 → Wysłać plik | 2 → Wysłać plik z adresu URL | 3 → Utworzyć katalog | 4 → Zmienić nazwę tego katalogu | 5 → Przenieść ten katalog | 6 → Usunąć ten katalog>"
|
||||||
@@ -1059,8 +1167,6 @@ mobile/views/components/drive.vue:
|
|||||||
root-move-alert: "Nie można przenieść tego katalogu, ponieważ jest on katalogiem głównym. Przejdź do katalogu, który chcesz przenieść."
|
root-move-alert: "Nie można przenieść tego katalogu, ponieważ jest on katalogiem głównym. Przejdź do katalogu, który chcesz przenieść."
|
||||||
url-prompt: "Adres URL pliku, który chcesz wysłać"
|
url-prompt: "Adres URL pliku, który chcesz wysłać"
|
||||||
uploading: "Rozpoczęto wysyłanie. Może to trochę potrwać."
|
uploading: "Rozpoczęto wysyłanie. Może to trochę potrwać."
|
||||||
mobile/views/components/drive-file-detail.vue:
|
|
||||||
rename: "Zmień nazwę"
|
|
||||||
mobile/views/components/drive-file-chooser.vue:
|
mobile/views/components/drive-file-chooser.vue:
|
||||||
select-file: "Wybierz plik"
|
select-file: "Wybierz plik"
|
||||||
mobile/views/components/drive-folder-chooser.vue:
|
mobile/views/components/drive-folder-chooser.vue:
|
||||||
@@ -1074,18 +1180,20 @@ mobile/views/components/drive.file-detail.vue:
|
|||||||
hash: "Hash (md5)"
|
hash: "Hash (md5)"
|
||||||
exif: "EXIF"
|
exif: "EXIF"
|
||||||
nsfw: "閲覧注意"
|
nsfw: "閲覧注意"
|
||||||
|
mark-as-sensitive: "閲覧注意に設定"
|
||||||
|
unmark-as-sensitive: "閲覧注意を解除"
|
||||||
mobile/views/components/media-image.vue:
|
mobile/views/components/media-image.vue:
|
||||||
sensitive: "To jest zawartość NSFW"
|
sensitive: "To jest zawartość NSFW"
|
||||||
click-to-show: "Naciśnij aby wyświetlić"
|
click-to-show: "Naciśnij aby wyświetlić"
|
||||||
mobile/views/components/media-video.vue:
|
mobile/views/components/media-video.vue:
|
||||||
sensitive: "To jest zawartość NSFW"
|
sensitive: "To jest zawartość NSFW"
|
||||||
click-to-show: "Naciśnij aby wyświetlić"
|
click-to-show: "Naciśnij aby wyświetlić"
|
||||||
mobile/views/components/follow-button.vue:
|
common/views/components/follow-button.vue:
|
||||||
following: "Śledzisz"
|
following: "フォロー中"
|
||||||
follow: "Śledź"
|
follow: "フォロー"
|
||||||
request-pending: "Oczekiwanie na pozwolenie"
|
request-pending: "フォロー許可待ち"
|
||||||
follow-processing: "フォロー処理中"
|
follow-processing: "フォロー処理中"
|
||||||
follow-request: "Poproś o śledzenie"
|
follow-request: "フォロー申請"
|
||||||
mobile/views/components/friends-maker.vue:
|
mobile/views/components/friends-maker.vue:
|
||||||
title: "Zacznij śledzić ludzi takich jak Ty"
|
title: "Zacznij śledzić ludzi takich jak Ty"
|
||||||
empty: "Nie znaleziono podobnych użytkowników."
|
empty: "Nie znaleziono podobnych użytkowników."
|
||||||
@@ -1112,11 +1220,7 @@ mobile/views/components/note-sub.vue:
|
|||||||
admin: "admin"
|
admin: "admin"
|
||||||
bot: "bot"
|
bot: "bot"
|
||||||
cat: "kot"
|
cat: "kot"
|
||||||
mobile/views/components/notes.vue:
|
|
||||||
failed: "Ładowanie nie powiodło się."
|
|
||||||
retry: "Spróbuj ponownie"
|
|
||||||
mobile/views/components/notifications.vue:
|
mobile/views/components/notifications.vue:
|
||||||
more: "Więcej"
|
|
||||||
empty: "Brak powiadomień"
|
empty: "Brak powiadomień"
|
||||||
mobile/views/components/post-form.vue:
|
mobile/views/components/post-form.vue:
|
||||||
add-visible-user: "Dodaj użytkownika"
|
add-visible-user: "Dodaj użytkownika"
|
||||||
@@ -1136,17 +1240,14 @@ mobile/views/components/sub-note-content.vue:
|
|||||||
poll: "Ankieta"
|
poll: "Ankieta"
|
||||||
mobile/views/components/timeline.vue:
|
mobile/views/components/timeline.vue:
|
||||||
empty: "Brak wpisów"
|
empty: "Brak wpisów"
|
||||||
load-more: "Więcej"
|
|
||||||
mobile/views/components/ui.header.vue:
|
mobile/views/components/ui.header.vue:
|
||||||
welcome-back: "Witaj ponownie, "
|
welcome-back: "Witaj ponownie, "
|
||||||
adjective: "さん"
|
adjective: "さん"
|
||||||
mobile/views/components/ui.nav.vue:
|
mobile/views/components/ui.nav.vue:
|
||||||
timeline: "Oś czasu"
|
timeline: "Oś czasu"
|
||||||
notifications: "Powiadomienia"
|
notifications: "Powiadomienia"
|
||||||
messaging: "Wiadomości"
|
|
||||||
follow-requests: "Prośby o śledzenie"
|
follow-requests: "Prośby o śledzenie"
|
||||||
search: "Szukaj"
|
search: "Szukaj"
|
||||||
drive: "Dysk"
|
|
||||||
favorites: "Ulubione"
|
favorites: "Ulubione"
|
||||||
user-lists: "Listy"
|
user-lists: "Listy"
|
||||||
widgets: "Widżety"
|
widgets: "Widżety"
|
||||||
@@ -1158,25 +1259,20 @@ mobile/views/components/ui.nav.vue:
|
|||||||
mobile/views/components/user-timeline.vue:
|
mobile/views/components/user-timeline.vue:
|
||||||
no-notes: "Wygląda na to, że ten użytkownik nie opublikował jeszcze niczego"
|
no-notes: "Wygląda na to, że ten użytkownik nie opublikował jeszcze niczego"
|
||||||
no-notes-with-media: "Brak wpisów z zawartością multimedialną"
|
no-notes-with-media: "Brak wpisów z zawartością multimedialną"
|
||||||
load-more: "Więcej"
|
|
||||||
mobile/views/components/users-list.vue:
|
mobile/views/components/users-list.vue:
|
||||||
all: "Wszyscy"
|
all: "Wszyscy"
|
||||||
known: "Znasz"
|
known: "Znasz"
|
||||||
load-more: "Więcej"
|
|
||||||
mobile/views/pages/favorites.vue:
|
mobile/views/pages/favorites.vue:
|
||||||
title: "Ulubione"
|
title: "Ulubione"
|
||||||
mobile/views/pages/user-lists.vue:
|
mobile/views/pages/user-lists.vue:
|
||||||
title: "Listy"
|
title: "Listy"
|
||||||
enter-list-name: "Wprowadź nazwę listy"
|
enter-list-name: "Wprowadź nazwę listy"
|
||||||
mobile/views/pages/drive.vue:
|
|
||||||
drive: "Dysk"
|
|
||||||
more: "Załaduj więcej"
|
|
||||||
mobile/views/pages/signup.vue:
|
mobile/views/pages/signup.vue:
|
||||||
lets-start: "Rozpocznijmy! 📦"
|
lets-start: "Rozpocznijmy! 📦"
|
||||||
mobile/views/pages/followers.vue:
|
mobile/views/pages/followers.vue:
|
||||||
followers-of: "Śledzący {}"
|
followers-of: "{name}のフォロワー"
|
||||||
mobile/views/pages/following.vue:
|
mobile/views/pages/following.vue:
|
||||||
following-of: "Śledzeni przez {}"
|
following-of: "{name}のフォロー"
|
||||||
mobile/views/pages/home.vue:
|
mobile/views/pages/home.vue:
|
||||||
home: "Strona główna"
|
home: "Strona główna"
|
||||||
local: "Lokalne"
|
local: "Lokalne"
|
||||||
@@ -1185,7 +1281,7 @@ mobile/views/pages/home.vue:
|
|||||||
mentions: "あなた宛て"
|
mentions: "あなた宛て"
|
||||||
messages: "メッセージ"
|
messages: "メッセージ"
|
||||||
mobile/views/pages/tag.vue:
|
mobile/views/pages/tag.vue:
|
||||||
no-posts-found: "Nie znaleziono wpisów zawierających „{}”."
|
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
|
||||||
mobile/views/pages/welcome.vue:
|
mobile/views/pages/welcome.vue:
|
||||||
signup: "Zarejestruj się"
|
signup: "Zarejestruj się"
|
||||||
mobile/views/pages/widgets.vue:
|
mobile/views/pages/widgets.vue:
|
||||||
@@ -1196,11 +1292,7 @@ mobile/views/pages/widgets.vue:
|
|||||||
mobile/views/pages/widgets/activity.vue:
|
mobile/views/pages/widgets/activity.vue:
|
||||||
activity: "Aktywność"
|
activity: "Aktywność"
|
||||||
mobile/views/pages/share.vue:
|
mobile/views/pages/share.vue:
|
||||||
share-with: "Udostępnij z {}."
|
share-with: "{name}で共有"
|
||||||
mobile/views/pages/messaging.vue:
|
|
||||||
messaging: "Wiadomości"
|
|
||||||
mobile/views/pages/messaging-room.vue:
|
|
||||||
messaging: "Wiadomości"
|
|
||||||
mobile/views/pages/received-follow-requests.vue:
|
mobile/views/pages/received-follow-requests.vue:
|
||||||
title: "Prośby o śledzenie"
|
title: "Prośby o śledzenie"
|
||||||
accept: "Zatwierdź"
|
accept: "Zatwierdź"
|
||||||
@@ -1214,27 +1306,9 @@ mobile/views/pages/notifications.vue:
|
|||||||
read-all: "Czy na pewno chcesz oznaczyć wszystkie powiadomienia jako przeczytane?"
|
read-all: "Czy na pewno chcesz oznaczyć wszystkie powiadomienia jako przeczytane?"
|
||||||
mobile/views/pages/games/reversi.vue:
|
mobile/views/pages/games/reversi.vue:
|
||||||
reversi: "Reversi"
|
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"
|
|
||||||
is-locked: "フォローを承認制にする"
|
|
||||||
advanced: "その他"
|
|
||||||
privacy: "プライバシー"
|
|
||||||
save: "Aktualizuj profil"
|
|
||||||
saved: "Pomyślnie zaktualizowano profil"
|
|
||||||
uploading: "Wysyłanie"
|
|
||||||
upload-failed: "Wysyłanie nie powiodło się"
|
|
||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
search: "Szukaj"
|
search: "Szukaj"
|
||||||
empty: "Nie znaleziono wpisów zawierających '{}'"
|
not-found: "「{q}」に関する投稿は見つかりませんでした。"
|
||||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
|
||||||
mobile/views/pages/selectdrive.vue:
|
mobile/views/pages/selectdrive.vue:
|
||||||
select-file: "Wybierz plik"
|
select-file: "Wybierz plik"
|
||||||
mobile/views/pages/settings.vue:
|
mobile/views/pages/settings.vue:
|
||||||
@@ -1273,6 +1347,14 @@ mobile/views/pages/settings.vue:
|
|||||||
twitter-connect: "Połącz z Twitterem"
|
twitter-connect: "Połącz z Twitterem"
|
||||||
twitter-reconnect: "Połącz ponownie"
|
twitter-reconnect: "Połącz ponownie"
|
||||||
twitter-disconnect: "Rozłącz"
|
twitter-disconnect: "Rozłącz"
|
||||||
|
github: "GitHub連携"
|
||||||
|
github-connect: "GitHubアカウントに接続する"
|
||||||
|
github-reconnect: "再接続する"
|
||||||
|
github-disconnect: "切断する"
|
||||||
|
discord: "Discord連携"
|
||||||
|
discord-connect: "Discordアカウントに接続する"
|
||||||
|
discord-reconnect: "再接続する"
|
||||||
|
discord-disconnect: "切断する"
|
||||||
update: "Aktualizacja Misskey"
|
update: "Aktualizacja Misskey"
|
||||||
version: "Wersja:"
|
version: "Wersja:"
|
||||||
latest-version: "Najnowsza wersja:"
|
latest-version: "Najnowsza wersja:"
|
||||||
@@ -1286,6 +1368,8 @@ mobile/views/pages/settings.vue:
|
|||||||
signout: "Wyloguj"
|
signout: "Wyloguj"
|
||||||
sound: "サウンド"
|
sound: "サウンド"
|
||||||
enable-sounds: "サウンドを有効にする"
|
enable-sounds: "サウンドを有効にする"
|
||||||
|
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
|
||||||
|
password: "パスワード"
|
||||||
mobile/views/pages/user.vue:
|
mobile/views/pages/user.vue:
|
||||||
follows-you: "Śledzi Cię"
|
follows-you: "Śledzi Cię"
|
||||||
following: "Śledzeni"
|
following: "Śledzeni"
|
||||||
@@ -1295,8 +1379,11 @@ mobile/views/pages/user.vue:
|
|||||||
timeline: "Oś czasu"
|
timeline: "Oś czasu"
|
||||||
media: "Multimedia"
|
media: "Multimedia"
|
||||||
is-suspended: "To konto zostało zablokowane"
|
is-suspended: "To konto zostało zablokowane"
|
||||||
is-remote: "To jest użytkownik zdalnej instancji, informacje mogą nie być w pełni dokładne."
|
mute: "ミュート"
|
||||||
view-remote: "Wyświetl dokładne informacje"
|
unmute: "ミュート解除"
|
||||||
|
block: "ブロック"
|
||||||
|
unblock: "ブロック解除"
|
||||||
|
years-old: "{age}歳"
|
||||||
mobile/views/pages/user/home.vue:
|
mobile/views/pages/user/home.vue:
|
||||||
recent-notes: "Ostatnie wpisy"
|
recent-notes: "Ostatnie wpisy"
|
||||||
images: "Zdjęcia"
|
images: "Zdjęcia"
|
||||||
@@ -1307,17 +1394,46 @@ mobile/views/pages/user/home.vue:
|
|||||||
followers-you-know: "Śledzący których znasz"
|
followers-you-know: "Śledzący których znasz"
|
||||||
last-used-at: "Ostatnio aktywny"
|
last-used-at: "Ostatnio aktywny"
|
||||||
mobile/views/pages/user/home.followers-you-know.vue:
|
mobile/views/pages/user/home.followers-you-know.vue:
|
||||||
loading: "Ładowanie"
|
|
||||||
no-users: "Brak użytkowników"
|
no-users: "Brak użytkowników"
|
||||||
mobile/views/pages/user/home.friends.vue:
|
mobile/views/pages/user/home.friends.vue:
|
||||||
loading: "Ładowanie"
|
|
||||||
no-users: "Brak użytkowników"
|
no-users: "Brak użytkowników"
|
||||||
mobile/views/pages/user/home.notes.vue:
|
mobile/views/pages/user/home.notes.vue:
|
||||||
loading: "Ładowanie"
|
|
||||||
no-notes: "Brak wpisów"
|
no-notes: "Brak wpisów"
|
||||||
mobile/views/pages/user/home.photos.vue:
|
mobile/views/pages/user/home.photos.vue:
|
||||||
loading: "Ładowanie"
|
|
||||||
no-photos: "Brak zdjęć"
|
no-photos: "Brak zdjęć"
|
||||||
|
deck:
|
||||||
|
widgets: "ウィジェット"
|
||||||
|
home: "ホーム"
|
||||||
|
local: "ローカル"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
|
hashtag: "ハッシュタグ"
|
||||||
|
global: "グローバル"
|
||||||
|
mentions: "あなた宛て"
|
||||||
|
direct: "ダイレクト投稿"
|
||||||
|
notifications: "通知"
|
||||||
|
list: "リスト"
|
||||||
|
swap-left: "左に移動"
|
||||||
|
swap-right: "右に移動"
|
||||||
|
swap-up: "上に移動"
|
||||||
|
swap-down: "下に移動"
|
||||||
|
remove: "カラムを削除"
|
||||||
|
add-column: "カラムを追加"
|
||||||
|
rename: "名前を変更"
|
||||||
|
stack-left: "左に重ねる"
|
||||||
|
pop-right: "右に出す"
|
||||||
|
deck/deck.tl-column.vue:
|
||||||
|
is-media-only: "メディア投稿のみ"
|
||||||
|
is-media-view: "メディアビュー"
|
||||||
|
edit: "オプション"
|
||||||
|
deck/deck.user-column.vue:
|
||||||
|
posts: "投稿"
|
||||||
|
following: "フォロー"
|
||||||
|
followers: "フォロワー"
|
||||||
|
images: "画像"
|
||||||
|
activity: "アクティビティ"
|
||||||
|
timeline: "タイムライン"
|
||||||
|
pinned-notes: "ピン留めされた投稿"
|
||||||
|
push-to-a-list: "リストに追加"
|
||||||
docs:
|
docs:
|
||||||
edit-this-page-on-github: "Znalazłeś błąd lub chcesz pomóc w tworzeniu dokumentacji?"
|
edit-this-page-on-github: "Znalazłeś błąd lub chcesz pomóc w tworzeniu dokumentacji?"
|
||||||
edit-this-page-on-github-link: "Edytuj stronę na GitHubie!"
|
edit-this-page-on-github-link: "Edytuj stronę na GitHubie!"
|
||||||
@@ -1342,3 +1458,29 @@ docs:
|
|||||||
description: "Opis"
|
description: "Opis"
|
||||||
dev/views/index.vue:
|
dev/views/index.vue:
|
||||||
manage-apps: "Zarządzaj aplikacjami"
|
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: "通知を操作する。"
|
||||||
|
|||||||
@@ -25,13 +25,11 @@ common:
|
|||||||
application-authorization: "Aplicativos autorizados"
|
application-authorization: "Aplicativos autorizados"
|
||||||
close: "Fechar"
|
close: "Fechar"
|
||||||
do-not-copy-paste: "Por favor, não digite ou copie o código aqui. A conta pode ser comprometida."
|
do-not-copy-paste: "Por favor, não digite ou copie o código aqui. A conta pode ser comprometida."
|
||||||
|
load-more: "もっと読み込む"
|
||||||
got-it: "Entendi!"
|
got-it: "Entendi!"
|
||||||
customization-tips:
|
customization-tips:
|
||||||
title: "Dicas de personalização"
|
title: "Dicas de personalização"
|
||||||
paragraph1: "Personalização da página inicial permite adicionar/remover, arrastar e soltar e reorganizar widgets."
|
paragraph: "<p>ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。</p><p>一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。</p><p>ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。</p><p>カスタマイズを終了するには、右上の「完了」をクリックします。</p>"
|
||||||
paragraph2: "Você pode mudar a visualização de alguns widgets <strong>clicando com o botão <strong>direito.</strong></strong>"
|
|
||||||
paragraph3: "Para apagar um widget, o arraste e solte <strong>na área chamada \"Lixo\"</strong> no cabeçalho."
|
|
||||||
paragraph4: "Para terminar a personalização clique em \"Terminar\" acima e à direita."
|
|
||||||
gotit: "Entendi!"
|
gotit: "Entendi!"
|
||||||
notification:
|
notification:
|
||||||
file-uploaded: "Arquivo enviado!"
|
file-uploaded: "Arquivo enviado!"
|
||||||
@@ -54,6 +52,8 @@ common:
|
|||||||
years_ago: "{} ano(s) atrás"
|
years_ago: "{} ano(s) atrás"
|
||||||
month-and-day: "{day}/{month}"
|
month-and-day: "{day}/{month}"
|
||||||
trash: "Lixo"
|
trash: "Lixo"
|
||||||
|
drive: "ドライブ"
|
||||||
|
messaging: "トーク"
|
||||||
weekday-short:
|
weekday-short:
|
||||||
sunday: "Dom"
|
sunday: "Dom"
|
||||||
monday: "Seg"
|
monday: "Seg"
|
||||||
@@ -112,20 +112,28 @@ common:
|
|||||||
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
||||||
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
||||||
show-full-acct: "ユーザー名のホストを省略しない"
|
show-full-acct: "ユーザー名のホストを省略しない"
|
||||||
|
show-via: "viaを表示する"
|
||||||
reduce-motion: "UIの動きを減らす"
|
reduce-motion: "UIの動きを減らす"
|
||||||
this-setting-is-this-device-only: "このデバイスのみ"
|
this-setting-is-this-device-only: "このデバイスのみ"
|
||||||
|
use-os-default-emojis: "OS標準の絵文字を使用"
|
||||||
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
||||||
|
is-remote-user: "このユーザー情報はコピーです。"
|
||||||
|
is-remote-post: "この投稿情報はコピーです。"
|
||||||
|
view-on-remote: "正確な情報を見る"
|
||||||
|
error:
|
||||||
|
title: '問題が発生しました'
|
||||||
|
retry: 'やり直す'
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "Empatado"
|
drawn: "Empatado"
|
||||||
my-turn: "Seu turno"
|
my-turn: "Seu turno"
|
||||||
opponent-turn: "Turno do oponente"
|
opponent-turn: "Turno do oponente"
|
||||||
turn-of: "turno de {}"
|
turn-of: "{name}のターンです"
|
||||||
past-turn-of: "turno de {}"
|
past-turn-of: "{name}のターン"
|
||||||
won: "{} venceu"
|
won: "{name}の勝ち"
|
||||||
black: "Pretas"
|
black: "Pretas"
|
||||||
white: "Brancas"
|
white: "Brancas"
|
||||||
total: "Total"
|
total: "Total"
|
||||||
this-turn: "Turno de {}"
|
this-turn: "{count}ターン目"
|
||||||
widgets:
|
widgets:
|
||||||
analog-clock: "Relógio analógico"
|
analog-clock: "Relógio analógico"
|
||||||
profile: "Perfil"
|
profile: "Perfil"
|
||||||
@@ -144,34 +152,15 @@ common:
|
|||||||
users: "Usuário sugeridos"
|
users: "Usuário sugeridos"
|
||||||
polls: "Enquetes"
|
polls: "Enquetes"
|
||||||
post-form: "Formulário de publicação"
|
post-form: "Formulário de publicação"
|
||||||
messaging: "Mensagens"
|
|
||||||
server: "Informações do servidor"
|
server: "Informações do servidor"
|
||||||
donation: "Doações"
|
donation: "Doações"
|
||||||
nav: "Navegação"
|
nav: "Navegação"
|
||||||
tips: "Dicas"
|
tips: "Dicas"
|
||||||
hashtags: "Hashtags"
|
hashtags: "Hashtags"
|
||||||
deck:
|
dev: "アプリの作成に失敗しました。再度お試しください。"
|
||||||
widgets: "Widgets"
|
ai-chan-kawaii: "藍ちゃかわいい"
|
||||||
home: "Início"
|
|
||||||
local: "Local"
|
|
||||||
hybrid: "Social"
|
|
||||||
hashtag: "ハッシュタグ"
|
|
||||||
global: "Global"
|
|
||||||
mentions: "あなた宛て"
|
|
||||||
direct: "ダイレクト投稿"
|
|
||||||
notifications: "Notificações"
|
|
||||||
list: "Listas"
|
|
||||||
swap-left: "Mover para a esquerda"
|
|
||||||
swap-right: "Mover para a direita"
|
|
||||||
swap-up: "Mover para cima"
|
|
||||||
swap-down: "Mover para baixo"
|
|
||||||
remove: "Remover"
|
|
||||||
add-column: "Adicionar coluna"
|
|
||||||
rename: "Renomear"
|
|
||||||
stack-left: "左に重ねる"
|
|
||||||
pop-right: "Acoplar à direita"
|
|
||||||
auth/views/form.vue:
|
auth/views/form.vue:
|
||||||
share-access: "Você <b>permite</b> que <i>{{ app.name }}</i> acesse sua conta?"
|
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
|
||||||
permission-ask: "Este aplicativo precisa das seguintes permissões:"
|
permission-ask: "Este aplicativo precisa das seguintes permissões:"
|
||||||
account-read: "Ver informações da conta."
|
account-read: "Ver informações da conta."
|
||||||
account-write: "Modificar informações da conta."
|
account-write: "Modificar informações da conta."
|
||||||
@@ -308,7 +297,6 @@ common/views/components/messaging.vue:
|
|||||||
no-history: "履歴はありません"
|
no-history: "履歴はありません"
|
||||||
common/views/components/messaging-room.vue:
|
common/views/components/messaging-room.vue:
|
||||||
empty: "このユーザーと話したことはありません"
|
empty: "このユーザーと話したことはありません"
|
||||||
more: "もっと読む"
|
|
||||||
no-history: "これより過去の履歴はありません"
|
no-history: "これより過去の履歴はありません"
|
||||||
resize-form: "ドラッグしてフォームの広さを調整"
|
resize-form: "ドラッグしてフォームの広さを調整"
|
||||||
new-message: "新しいメッセージがあります"
|
new-message: "新しいメッセージがあります"
|
||||||
@@ -356,6 +344,16 @@ common/views/components/poll-editor.vue:
|
|||||||
destroy: "アンケートを破棄"
|
destroy: "アンケートを破棄"
|
||||||
common/views/components/reaction-picker.vue:
|
common/views/components/reaction-picker.vue:
|
||||||
choose-reaction: "リアクションを選択"
|
choose-reaction: "リアクションを選択"
|
||||||
|
common/views/components/emoji-picker.vue:
|
||||||
|
custom-emoji: "カスタム絵文字"
|
||||||
|
people: "人"
|
||||||
|
animals-and-nature: "動物&自然"
|
||||||
|
food-and-drink: "食べ物&飲み物"
|
||||||
|
activity: "アクティビティ"
|
||||||
|
travel-and-places: "場所"
|
||||||
|
objects: "物"
|
||||||
|
symbols: "記号"
|
||||||
|
flags: "旗"
|
||||||
common/views/components/signin.vue:
|
common/views/components/signin.vue:
|
||||||
username: "ユーザー名"
|
username: "ユーザー名"
|
||||||
password: "パスワード"
|
password: "パスワード"
|
||||||
@@ -364,6 +362,8 @@ common/views/components/signin.vue:
|
|||||||
signin: "サインイン"
|
signin: "サインイン"
|
||||||
or: "または"
|
or: "または"
|
||||||
signin-with-twitter: "Twitterでログイン"
|
signin-with-twitter: "Twitterでログイン"
|
||||||
|
signin-with-github: "GitHubでログイン"
|
||||||
|
signin-with-discord: "Discordでログイン"
|
||||||
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
invitation-code: "招待コード"
|
invitation-code: "招待コード"
|
||||||
@@ -402,6 +402,20 @@ common/views/components/twitter-setting.vue:
|
|||||||
reconnect: "再接続する"
|
reconnect: "再接続する"
|
||||||
connect: "Twitterと接続する"
|
connect: "Twitterと接続する"
|
||||||
disconnect: "切断する"
|
disconnect: "切断する"
|
||||||
|
common/views/components/github-setting.vue:
|
||||||
|
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
|
||||||
|
connected-to: "次のGitHubアカウントに接続されています"
|
||||||
|
detail: "詳細..."
|
||||||
|
reconnect: "再接続する"
|
||||||
|
connect: "GitHubと接続する"
|
||||||
|
disconnect: "切断する"
|
||||||
|
common/views/components/discord-setting.vue:
|
||||||
|
description: "お使いのDiscordアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでDiscordアカウント情報が表示されるようになったり、Discordを用いた便利なサインインを利用できるようになります。"
|
||||||
|
connected-to: "次のDiscordアカウントに接続されています"
|
||||||
|
detail: "詳細..."
|
||||||
|
reconnect: "再接続する"
|
||||||
|
connect: "Discordと接続する"
|
||||||
|
disconnect: "切断する"
|
||||||
common/views/components/uploader.vue:
|
common/views/components/uploader.vue:
|
||||||
waiting: "待機中"
|
waiting: "待機中"
|
||||||
common/views/components/visibility-chooser.vue:
|
common/views/components/visibility-chooser.vue:
|
||||||
@@ -416,6 +430,25 @@ common/views/components/visibility-chooser.vue:
|
|||||||
common/views/components/trends.vue:
|
common/views/components/trends.vue:
|
||||||
count: "{}人が投稿"
|
count: "{}人が投稿"
|
||||||
empty: "トレンドなし"
|
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:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "確認中"
|
fetching: "確認中"
|
||||||
no-broadcasts: "お知らせはありません"
|
no-broadcasts: "お知らせはありません"
|
||||||
@@ -499,34 +532,12 @@ desktop/views/components/activity.vue:
|
|||||||
title: "アクティビティ"
|
title: "アクティビティ"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
desktop/views/components/calendar.vue:
|
desktop/views/components/calendar.vue:
|
||||||
title: "{1}年 {2}月"
|
title: "{year}年 {month}月"
|
||||||
prev: "前の月"
|
prev: "前の月"
|
||||||
next: "次の月"
|
next: "次の月"
|
||||||
go: "クリックして時間遡行"
|
go: "クリックして時間遡行"
|
||||||
desktop/views/components/charts.vue:
|
|
||||||
title: "チャート"
|
|
||||||
per-day: "1日ごと"
|
|
||||||
per-hour: "1時間ごと"
|
|
||||||
notes: "投稿"
|
|
||||||
users: "ユーザー"
|
|
||||||
drive: "ドライブ"
|
|
||||||
network: "ネットワーク"
|
|
||||||
charts:
|
|
||||||
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:
|
desktop/views/components/choose-file-from-drive-window.vue:
|
||||||
choose-file: "ファイル選択中"
|
chosen-files: "{count}ファイル選択中"
|
||||||
upload: "PCからドライブにファイルをアップロード"
|
upload: "PCからドライブにファイルをアップロード"
|
||||||
cancel: "キャンセル"
|
cancel: "キャンセル"
|
||||||
ok: "決定"
|
ok: "決定"
|
||||||
@@ -541,7 +552,6 @@ desktop/views/components/crop-window.vue:
|
|||||||
ok: "決定"
|
ok: "決定"
|
||||||
desktop/views/components/drive-window.vue:
|
desktop/views/components/drive-window.vue:
|
||||||
used: "使用中"
|
used: "使用中"
|
||||||
drive: "ドライブ"
|
|
||||||
desktop/views/components/drive.file.vue:
|
desktop/views/components/drive.file.vue:
|
||||||
avatar: "アイコン"
|
avatar: "アイコン"
|
||||||
banner: "バナー"
|
banner: "バナー"
|
||||||
@@ -571,11 +581,8 @@ desktop/views/components/drive.folder.vue:
|
|||||||
rename: "名前を変更"
|
rename: "名前を変更"
|
||||||
rename-folder: "フォルダ名の変更"
|
rename-folder: "フォルダ名の変更"
|
||||||
input-new-folder-name: "新しいフォルダ名を入力してください"
|
input-new-folder-name: "新しいフォルダ名を入力してください"
|
||||||
desktop/views/components/drive.nav-folder.vue:
|
|
||||||
drive: "ドライブ"
|
|
||||||
desktop/views/components/drive.vue:
|
desktop/views/components/drive.vue:
|
||||||
search: "検索"
|
search: "検索"
|
||||||
load-more: "もっと読み込む"
|
|
||||||
empty-draghover: "ドロップですか?いいですよ、ボクはカワイイですからね"
|
empty-draghover: "ドロップですか?いいですよ、ボクはカワイイですからね"
|
||||||
empty-drive: "ドライブには何もありません。"
|
empty-drive: "ドライブには何もありません。"
|
||||||
empty-drive-description: "右クリックして「ファイルをアップロード」を選んだり、ファイルをドラッグ&ドロップすることでもアップロードできます。"
|
empty-drive-description: "右クリックして「ファイルをアップロード」を選んだり、ファイルをドラッグ&ドロップすることでもアップロードできます。"
|
||||||
@@ -599,12 +606,6 @@ desktop/views/components/media-image.vue:
|
|||||||
desktop/views/components/media-video.vue:
|
desktop/views/components/media-video.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
desktop/views/components/follow-button.vue:
|
|
||||||
following: "フォロー中"
|
|
||||||
follow: "フォロー"
|
|
||||||
request-pending: "フォロー許可待ち"
|
|
||||||
follow-processing: "フォロー処理中"
|
|
||||||
follow-request: "フォロー申請"
|
|
||||||
desktop/views/components/followers-window.vue:
|
desktop/views/components/followers-window.vue:
|
||||||
followers: "{} のフォロワー"
|
followers: "{} のフォロワー"
|
||||||
desktop/views/components/followers.vue:
|
desktop/views/components/followers.vue:
|
||||||
@@ -633,14 +634,13 @@ desktop/views/components/messaging-room-window.vue:
|
|||||||
desktop/views/components/messaging-window.vue:
|
desktop/views/components/messaging-window.vue:
|
||||||
title: "メッセージ"
|
title: "メッセージ"
|
||||||
desktop/views/components/note-detail.vue:
|
desktop/views/components/note-detail.vue:
|
||||||
more: "会話をもっと読み込む"
|
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
location: "位置情報"
|
location: "位置情報"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
add-reaction: "リアクション"
|
add-reaction: "リアクション"
|
||||||
desktop/views/components/notes.note.vue:
|
desktop/views/components/note.vue:
|
||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
reply: "返信"
|
reply: "返信"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
@@ -651,9 +651,7 @@ desktop/views/components/notes.note.vue:
|
|||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "読み込みに失敗しました。"
|
error: "読み込みに失敗しました。"
|
||||||
retry: "リトライ"
|
retry: "リトライ"
|
||||||
load-more: "もっと読み込む"
|
|
||||||
desktop/views/components/notifications.vue:
|
desktop/views/components/notifications.vue:
|
||||||
more: "もっと見る"
|
|
||||||
empty: "ありません!"
|
empty: "ありません!"
|
||||||
desktop/views/components/post-form.vue:
|
desktop/views/components/post-form.vue:
|
||||||
add-visible-user: "+ユーザーを追加"
|
add-visible-user: "+ユーザーを追加"
|
||||||
@@ -700,14 +698,17 @@ desktop/views/components/renote-form.vue:
|
|||||||
failure: "Renoteに失敗しました"
|
failure: "Renoteに失敗しました"
|
||||||
desktop/views/components/renote-form-window.vue:
|
desktop/views/components/renote-form-window.vue:
|
||||||
title: "この投稿をRenoteしますか?"
|
title: "この投稿をRenoteしますか?"
|
||||||
|
desktop/views/pages/user-following-or-followers.vue:
|
||||||
|
following: "{user}のフォロー"
|
||||||
|
followers: "{user}のフォロワー"
|
||||||
desktop/views/components/settings-window.vue:
|
desktop/views/components/settings-window.vue:
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
desktop/views/components/settings.vue:
|
desktop/views/components/settings.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
notification: "通知"
|
notification: "通知"
|
||||||
apps: "アプリ"
|
apps: "アプリ"
|
||||||
mute: "ミュート"
|
mute-and-block: "ミュート/ブロック"
|
||||||
drive: "ドライブ"
|
blocking: "ブロック"
|
||||||
security: "セキュリティ"
|
security: "セキュリティ"
|
||||||
signin: "サインイン履歴"
|
signin: "サインイン履歴"
|
||||||
password: "パスワード"
|
password: "パスワード"
|
||||||
@@ -726,8 +727,12 @@ desktop/views/components/settings.vue:
|
|||||||
advanced: "詳細設定"
|
advanced: "詳細設定"
|
||||||
api-via-stream: "ストリームを経由したAPIリクエスト"
|
api-via-stream: "ストリームを経由したAPIリクエスト"
|
||||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||||
|
deck-nav: "デッキ内ナビゲーション"
|
||||||
|
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
|
||||||
|
deck-default: "デッキをデフォルトのUIにする"
|
||||||
display: "デザインと表示"
|
display: "デザインと表示"
|
||||||
customize: "ホームをカスタマイズ"
|
customize: "ホームをカスタマイズ"
|
||||||
|
wallpaper: "壁紙"
|
||||||
choose-wallpaper: "壁紙を選択"
|
choose-wallpaper: "壁紙を選択"
|
||||||
delete-wallpaper: "壁紙を削除"
|
delete-wallpaper: "壁紙を削除"
|
||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
@@ -739,17 +744,19 @@ desktop/views/components/settings.vue:
|
|||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
show-clock-on-header: "右上に時計を表示する"
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
|
timeline: "タイムライン"
|
||||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "マップの自動展開"
|
show-maps: "マップの自動展開"
|
||||||
|
deck-column-align: "デッキのカラムの位置"
|
||||||
|
deck-column-align-center: "中央"
|
||||||
|
deck-column-align-left: "左"
|
||||||
sound: "サウンド"
|
sound: "サウンド"
|
||||||
enable-sounds: "サウンドを有効にする"
|
enable-sounds: "サウンドを有効にする"
|
||||||
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
|
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
|
||||||
volume: "ボリューム"
|
volume: "ボリューム"
|
||||||
test: "テスト"
|
test: "テスト"
|
||||||
mobile: "モバイル"
|
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
|
||||||
language: "言語"
|
language: "言語"
|
||||||
pick-language: "言語を選択"
|
pick-language: "言語を選択"
|
||||||
recommended: "推奨"
|
recommended: "推奨"
|
||||||
@@ -785,6 +792,10 @@ desktop/views/components/settings.vue:
|
|||||||
tools: "ツール"
|
tools: "ツール"
|
||||||
task-manager: "タスクマネージャ"
|
task-manager: "タスクマネージャ"
|
||||||
third-parties: "サードパーティ"
|
third-parties: "サードパーティ"
|
||||||
|
navbar-position: "ナビゲーションバーの位置"
|
||||||
|
navbar-position-top: "上"
|
||||||
|
navbar-position-left: "左"
|
||||||
|
navbar-position-right: "右"
|
||||||
desktop/views/components/settings.2fa.vue:
|
desktop/views/components/settings.2fa.vue:
|
||||||
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
||||||
detail: "詳細..."
|
detail: "詳細..."
|
||||||
@@ -803,41 +814,44 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
success: "設定が完了しました!"
|
success: "設定が完了しました!"
|
||||||
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
||||||
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
||||||
desktop/views/components/settings.api.vue:
|
common/views/components/api-settings.vue:
|
||||||
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
||||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||||
regenerate-token: "トークンを再生成"
|
regenerate-token: "トークンを再生成"
|
||||||
token: "Token:"
|
token: "Token:"
|
||||||
enter-password: "パスワードを入力してください"
|
enter-password: "パスワードを入力してください"
|
||||||
|
console:
|
||||||
|
title: 'APIコンソール'
|
||||||
|
endpoint: 'エンドポイント'
|
||||||
|
parameter: 'パラメータ'
|
||||||
|
credential-info: "「i」パラメータは自動で付与されます。"
|
||||||
|
send: '送信'
|
||||||
|
sending: '応答待ち'
|
||||||
|
response: '結果'
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "連携しているアプリケーションはありません"
|
no-apps: "連携しているアプリケーションはありません"
|
||||||
desktop/views/components/settings.drive.vue:
|
common/views/components/drive-settings.vue:
|
||||||
max: "中"
|
max: "容量"
|
||||||
in-use: "使用中"
|
in-use: "使用中"
|
||||||
desktop/views/components/settings.mute.vue:
|
stats: "統計"
|
||||||
no-users: "ミュートしているユーザーはいません"
|
common/views/components/mute-and-block.vue:
|
||||||
desktop/views/components/settings.password.vue:
|
mute-and-block: "ミュートとブロック"
|
||||||
|
mute: "ミュート"
|
||||||
|
block: "ブロック"
|
||||||
|
no-muted-users: "ミュートしているユーザーはいません"
|
||||||
|
no-blocked-users: "ブロックしているユーザーはいません"
|
||||||
|
word-mute: "ワードミュート"
|
||||||
|
muted-words: "ミュートされたキーワード"
|
||||||
|
muted-words-description: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります"
|
||||||
|
save: "保存"
|
||||||
|
common/views/components/password-settings.vue:
|
||||||
reset: "パスワードを変更する"
|
reset: "パスワードを変更する"
|
||||||
enter-current-password: "現在のパスワードを入力してください"
|
enter-current-password: "現在のパスワードを入力してください"
|
||||||
enter-new-password: "新しいパスワードを入力してください"
|
enter-new-password: "新しいパスワードを入力してください"
|
||||||
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
||||||
not-match: "新しいパスワードが一致しません"
|
not-match: "新しいパスワードが一致しません"
|
||||||
changed: "パスワードを変更しました"
|
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:
|
desktop/views/components/sub-note-content.vue:
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
@@ -862,7 +876,6 @@ desktop/views/components/ui.header.vue:
|
|||||||
adjective: "さん"
|
adjective: "さん"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
drive: "ドライブ"
|
|
||||||
favorites: "お気に入り"
|
favorites: "お気に入り"
|
||||||
lists: "リスト"
|
lists: "リスト"
|
||||||
follow-requests: "フォロー申請"
|
follow-requests: "フォロー申請"
|
||||||
@@ -874,7 +887,6 @@ desktop/views/components/ui.header.account.vue:
|
|||||||
desktop/views/components/ui.header.nav.vue:
|
desktop/views/components/ui.header.nav.vue:
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
deck: "デッキ"
|
deck: "デッキ"
|
||||||
messaging: "メッセージ"
|
|
||||||
game: "ゲーム"
|
game: "ゲーム"
|
||||||
desktop/views/components/ui.header.notifications.vue:
|
desktop/views/components/ui.header.notifications.vue:
|
||||||
title: "通知"
|
title: "通知"
|
||||||
@@ -897,54 +909,153 @@ desktop/views/components/user-preview.vue:
|
|||||||
desktop/views/components/users-list.vue:
|
desktop/views/components/users-list.vue:
|
||||||
all: "すべて"
|
all: "すべて"
|
||||||
iknow: "知り合い"
|
iknow: "知り合い"
|
||||||
load-more: "もっと"
|
|
||||||
fetching: "読み込んでいます"
|
fetching: "読み込んでいます"
|
||||||
desktop/views/components/users-list-item.vue:
|
desktop/views/components/users-list-item.vue:
|
||||||
followed: "フォローされています"
|
followed: "フォローされています"
|
||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
desktop/views/pages/admin/admin.vue:
|
admin/views/index.vue:
|
||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
|
instance: "インスタンス"
|
||||||
|
emoji: "カスタム絵文字"
|
||||||
|
moderators: "モデレーター"
|
||||||
|
users: "ユーザー"
|
||||||
|
update: "更新"
|
||||||
|
announcements: "お知らせ"
|
||||||
|
hashtags: "ハッシュタグ"
|
||||||
|
back-to-misskey: "Misskeyに戻る"
|
||||||
|
admin/views/dashboard.vue:
|
||||||
|
dashboard: "ダッシュボード"
|
||||||
|
accounts: "アカウント"
|
||||||
|
notes: "投稿"
|
||||||
drive: "ドライブ"
|
drive: "ドライブ"
|
||||||
users: "Usuários"
|
instances: "インスタンス"
|
||||||
update: "Actualizações"
|
this-instance: "このインスタンス"
|
||||||
desktop/views/pages/admin/admin.dashboard.vue:
|
federated: "連合"
|
||||||
dashboard: "ダッシュボード"
|
admin/views/instance.vue:
|
||||||
all-users: "Todos os usuários"
|
instance: "インスタンス"
|
||||||
original-users: "このインスタンスのユーザー"
|
instance-name: "インスタンス名"
|
||||||
all-notes: "全ての投稿"
|
instance-description: "インスタンスの紹介"
|
||||||
original-notes: "このインスタンスの投稿"
|
host: "ホスト"
|
||||||
|
banner-url: "バナー画像URL"
|
||||||
|
languages: "インスタンスの対象言語"
|
||||||
|
languages-desc: "スペースで区切って複数設定できます。"
|
||||||
|
maintainer-config: "管理者情報"
|
||||||
|
maintainer-name: "管理者名"
|
||||||
|
maintainer-email: "管理者の連絡先"
|
||||||
|
drive-config: "ドライブの設定"
|
||||||
|
cache-remote-files: "リモートのファイルをキャッシュする"
|
||||||
|
cache-remote-files-desc: "この設定を無効にすると、リモートファイルをキャッシュせず直リンクするようになります。そのためサーバーのストレージを節約できますが、プライバシー設定で直リンクを無効にしているユーザーにはファイルが見えなくなったり、サムネイルが生成されないので通信量が増加します。通常はこの設定をオンにしておくことをおすすめします。"
|
||||||
|
local-drive-capacity-mb: "ローカルユーザーひとりあたりのドライブ容量"
|
||||||
|
remote-drive-capacity-mb: "リモートユーザーひとりあたりのドライブ容量"
|
||||||
|
mb: "メガバイト単位"
|
||||||
|
recaptcha-config: "reCAPTCHAの設定"
|
||||||
|
recaptcha-info: "reCAPTCHAを有効にする場合、reCAPTCHAトークンを取得する必要があります。https://www.google.com/recaptcha/intro/ にアクセスしてトークンを取得してください。"
|
||||||
|
enable-recaptcha: "reCAPTCHAを有効にする"
|
||||||
|
recaptcha-site-key: "reCAPTCHA site key"
|
||||||
|
recaptcha-secret-key: "reCAPTCHA secret key"
|
||||||
|
twitter-integration-config: "Twitter連携の設定"
|
||||||
|
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。"
|
||||||
|
enable-twitter-integration: "Twitter連携を有効にする"
|
||||||
|
twitter-integration-consumer-key: "Consumer key"
|
||||||
|
twitter-integration-consumer-secret: "Consumer secret"
|
||||||
|
github-integration-config: "GitHub連携の設定"
|
||||||
|
github-integration-info: "コールバックURLは /api/gh/cb に設定します。"
|
||||||
|
enable-github-integration: "GitHub連携を有効にする"
|
||||||
|
github-integration-client-id: "Client ID"
|
||||||
|
github-integration-client-secret: "Client Secret"
|
||||||
|
discord-integration-config: "Discord連携の設定"
|
||||||
|
discord-integration-info: "コールバックURLは /api/dc/cb に設定します。"
|
||||||
|
enable-discord-integration: "Discord連携を有効にする"
|
||||||
|
discord-integration-client-id: "Client ID"
|
||||||
|
discord-integration-client-secret: "Client Secret"
|
||||||
|
proxy-account-config: "プロキシアカウントの設定"
|
||||||
|
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
|
||||||
|
proxy-account-username: "プロキシアカウントのユーザー名"
|
||||||
|
proxy-account-username-desc: "プロキシとして使用するアカウントのユーザー名を指定してください。"
|
||||||
|
proxy-account-warn: "アカウントは自動で作られないため、そのユーザー名のアカウントを予め作成しておく必要があります。"
|
||||||
|
max-note-text-length: "投稿の最大文字数"
|
||||||
|
disable-registration: "ユーザー登録の受付を停止する"
|
||||||
|
disable-local-timeline: "ローカルタイムラインを無効にする"
|
||||||
invite: "招待"
|
invite: "招待"
|
||||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
save: "保存"
|
||||||
|
saved: "保存しました"
|
||||||
|
admin/views/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: "通信量"
|
||||||
|
admin/views/users.vue:
|
||||||
suspend-user: "ユーザーの凍結"
|
suspend-user: "ユーザーの凍結"
|
||||||
suspend: "凍結"
|
suspend: "凍結"
|
||||||
suspended: "凍結しました"
|
suspended: "凍結しました"
|
||||||
desktop/views/pages/admin/admin.unsuspend-user.vue:
|
|
||||||
unsuspend-user: "ユーザーの凍結の解除"
|
unsuspend-user: "ユーザーの凍結の解除"
|
||||||
unsuspend: "凍結の解除"
|
unsuspend: "凍結の解除"
|
||||||
unsuspended: "凍結を解除しました"
|
unsuspended: "凍結を解除しました"
|
||||||
desktop/views/pages/admin/admin.verify-user.vue:
|
|
||||||
verify-user: "ユーザーの公式アカウント設定"
|
verify-user: "ユーザーの公式アカウント設定"
|
||||||
verify: "公式アカウントにする"
|
verify: "公式アカウントにする"
|
||||||
verified: "公式アカウントにしました"
|
verified: "公式アカウントにしました"
|
||||||
desktop/views/pages/admin/admin.unverify-user.vue:
|
|
||||||
unverify-user: "ユーザーの公式アカウント解除"
|
unverify-user: "ユーザーの公式アカウント解除"
|
||||||
unverify: "公式アカウントを解除する"
|
unverify: "公式アカウントを解除する"
|
||||||
unverified: "公式アカウントを解除しました"
|
unverified: "公式アカウントを解除しました"
|
||||||
desktop/views/pages/deck/deck.tl-column.vue:
|
admin/views/moderators.vue:
|
||||||
is-media-only: "メディア投稿のみ"
|
add-moderator:
|
||||||
is-media-view: "メディアビュー"
|
title: "モデレーターの登録"
|
||||||
edit: "オプション"
|
add: "登録"
|
||||||
desktop/views/pages/deck/deck.note.vue:
|
added: "モデレーターを登録しました"
|
||||||
reposted-by: "{}がRenote"
|
admin/views/emoji.vue:
|
||||||
private: "この投稿は非公開です"
|
add-emoji:
|
||||||
deleted: "この投稿は削除されました"
|
title: "絵文字の登録"
|
||||||
desktop/views/pages/stats/stats.vue:
|
name: "絵文字名"
|
||||||
all-users: "全てのユーザー"
|
name-desc: "a~z 0~9 _ の文字が使えます。"
|
||||||
original-users: "このインスタンスのユーザー"
|
aliases: "エイリアス"
|
||||||
all-notes: "全ての投稿"
|
aliases-desc: "スペースで区切って複数設定できます。"
|
||||||
original-notes: "このインスタンスの投稿"
|
url: "絵文字画像URL"
|
||||||
|
add: "追加"
|
||||||
|
info: "50KB以下のPNG画像をおすすめします。"
|
||||||
|
added: "絵文字を登録しました"
|
||||||
|
emojis:
|
||||||
|
title: "絵文字一覧"
|
||||||
|
update: "更新"
|
||||||
|
remove: "削除"
|
||||||
|
updated: "更新しました"
|
||||||
|
remove-emoji:
|
||||||
|
are-you-sure: "「$1」を削除しますか?"
|
||||||
|
removed: "削除しました"
|
||||||
|
admin/views/announcements.vue:
|
||||||
|
announcements: "お知らせ"
|
||||||
|
save: "保存"
|
||||||
|
remove: "削除"
|
||||||
|
add: "追加"
|
||||||
|
title: "タイトル"
|
||||||
|
text: "内容"
|
||||||
|
saved: "保存しました"
|
||||||
|
_remove:
|
||||||
|
are-you-sure: "「$1」を削除しますか?"
|
||||||
|
removed: "削除しました"
|
||||||
|
admin/views/hashtags.vue:
|
||||||
|
hided-tags: "Hidden Tags"
|
||||||
desktop/views/pages/welcome.vue:
|
desktop/views/pages/welcome.vue:
|
||||||
about: "詳しく..."
|
about: "詳しく..."
|
||||||
gotit: "わかった"
|
gotit: "わかった"
|
||||||
@@ -959,8 +1070,6 @@ desktop/views/pages/welcome.vue:
|
|||||||
info: "情報"
|
info: "情報"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Drive Misskey"
|
title: "Drive Misskey"
|
||||||
desktop/views/pages/favorites.vue:
|
|
||||||
more: "Carregar mais"
|
|
||||||
desktop/views/pages/home-customize.vue:
|
desktop/views/pages/home-customize.vue:
|
||||||
title: "Personalizar a página inicial"
|
title: "Personalizar a página inicial"
|
||||||
desktop/views/pages/note.vue:
|
desktop/views/pages/note.vue:
|
||||||
@@ -973,11 +1082,11 @@ desktop/views/pages/selectdrive.vue:
|
|||||||
upload: "Envie arquivos do seu dispositivo"
|
upload: "Envie arquivos do seu dispositivo"
|
||||||
desktop/views/pages/search.vue:
|
desktop/views/pages/search.vue:
|
||||||
not-available: "A pesquisa está desligada nas configurações desta instância."
|
not-available: "A pesquisa está desligada nas configurações desta instância."
|
||||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
not-found: "「{q}」に関する投稿は見つかりませんでした。"
|
||||||
desktop/views/pages/share.vue:
|
desktop/views/pages/share.vue:
|
||||||
share-with: "{}で共有"
|
share-with: "{name}で共有"
|
||||||
desktop/views/pages/tag.vue:
|
desktop/views/pages/tag.vue:
|
||||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
|
||||||
desktop/views/pages/user-list.users.vue:
|
desktop/views/pages/user-list.users.vue:
|
||||||
users: "ユーザー"
|
users: "ユーザー"
|
||||||
add-user: "ユーザーを追加"
|
add-user: "ユーザーを追加"
|
||||||
@@ -990,12 +1099,6 @@ desktop/views/pages/user/user.friends.vue:
|
|||||||
title: "よく話すユーザー"
|
title: "よく話すユーザー"
|
||||||
loading: "読み込み中"
|
loading: "読み込み中"
|
||||||
no-users: "よく話すユーザーはいません"
|
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:
|
desktop/views/pages/user/user.photos.vue:
|
||||||
title: "フォト"
|
title: "フォト"
|
||||||
loading: "読み込み中"
|
loading: "読み込み中"
|
||||||
@@ -1008,6 +1111,9 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "ミュートする"
|
mute: "ミュートする"
|
||||||
muted: "ミュートしています"
|
muted: "ミュートしています"
|
||||||
unmute: "ミュート解除"
|
unmute: "ミュート解除"
|
||||||
|
block: "ブロックする"
|
||||||
|
unblock: "ブロック解除"
|
||||||
|
block-confirm: "このユーザーをブロックしますか?"
|
||||||
push-to-a-list: "リストに追加"
|
push-to-a-list: "リストに追加"
|
||||||
list-pushed: "{user}を{list}に追加しました。"
|
list-pushed: "{user}を{list}に追加しました。"
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.header.vue:
|
||||||
@@ -1015,6 +1121,10 @@ desktop/views/pages/user/user.header.vue:
|
|||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
followers: "フォロワー"
|
followers: "フォロワー"
|
||||||
is-bot: "このアカウントはBotです"
|
is-bot: "このアカウントはBotです"
|
||||||
|
years-old: "{age}歳"
|
||||||
|
year: "年"
|
||||||
|
month: "月"
|
||||||
|
day: "日"
|
||||||
desktop/views/pages/user/user.timeline.vue:
|
desktop/views/pages/user/user.timeline.vue:
|
||||||
default: "投稿"
|
default: "投稿"
|
||||||
with-replies: "投稿と返信"
|
with-replies: "投稿と返信"
|
||||||
@@ -1044,12 +1154,10 @@ desktop/views/widgets/users.vue:
|
|||||||
refresh: "他を見る"
|
refresh: "他を見る"
|
||||||
no-one: "いません!"
|
no-one: "いません!"
|
||||||
mobile/views/components/drive.vue:
|
mobile/views/components/drive.vue:
|
||||||
drive: "ドライブ"
|
|
||||||
used: "使用中"
|
used: "使用中"
|
||||||
folder-count: "フォルダ"
|
folder-count: "フォルダ"
|
||||||
count-separator: "、"
|
count-separator: "、"
|
||||||
file-count: "ファイル"
|
file-count: "ファイル"
|
||||||
load-more: "もっと読み込む"
|
|
||||||
nothing-in-drive: "ドライブには何もありません"
|
nothing-in-drive: "ドライブには何もありません"
|
||||||
folder-is-empty: "このフォルダは空です"
|
folder-is-empty: "このフォルダは空です"
|
||||||
prompt: "何をしますか?(数字を入力してください): <1 → ファイルをアップロード | 2 → ファイルをURLでアップロード | 3 → フォルダ作成 | 4 → このフォルダ名を変更 | 5 → このフォルダを移動 | 6 → このフォルダを削除>"
|
prompt: "何をしますか?(数字を入力してください): <1 → ファイルをアップロード | 2 → ファイルをURLでアップロード | 3 → フォルダ作成 | 4 → このフォルダ名を変更 | 5 → このフォルダを移動 | 6 → このフォルダを削除>"
|
||||||
@@ -1059,8 +1167,6 @@ mobile/views/components/drive.vue:
|
|||||||
root-move-alert: "現在いる場所はルートで、フォルダではないため移動はできません。移動したいフォルダに移動してからやってください。"
|
root-move-alert: "現在いる場所はルートで、フォルダではないため移動はできません。移動したいフォルダに移動してからやってください。"
|
||||||
url-prompt: "アップロードしたいファイルのURL"
|
url-prompt: "アップロードしたいファイルのURL"
|
||||||
uploading: "アップロードをリクエストしました。アップロードが完了するまで時間がかかる場合があります。"
|
uploading: "アップロードをリクエストしました。アップロードが完了するまで時間がかかる場合があります。"
|
||||||
mobile/views/components/drive-file-detail.vue:
|
|
||||||
rename: "名前を変更"
|
|
||||||
mobile/views/components/drive-file-chooser.vue:
|
mobile/views/components/drive-file-chooser.vue:
|
||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
mobile/views/components/drive-folder-chooser.vue:
|
mobile/views/components/drive-folder-chooser.vue:
|
||||||
@@ -1074,13 +1180,15 @@ mobile/views/components/drive.file-detail.vue:
|
|||||||
hash: "ハッシュ (md5)"
|
hash: "ハッシュ (md5)"
|
||||||
exif: "EXIF"
|
exif: "EXIF"
|
||||||
nsfw: "閲覧注意"
|
nsfw: "閲覧注意"
|
||||||
|
mark-as-sensitive: "閲覧注意に設定"
|
||||||
|
unmark-as-sensitive: "閲覧注意を解除"
|
||||||
mobile/views/components/media-image.vue:
|
mobile/views/components/media-image.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
mobile/views/components/media-video.vue:
|
mobile/views/components/media-video.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
mobile/views/components/follow-button.vue:
|
common/views/components/follow-button.vue:
|
||||||
following: "フォロー中"
|
following: "フォロー中"
|
||||||
follow: "フォロー"
|
follow: "フォロー"
|
||||||
request-pending: "フォロー許可待ち"
|
request-pending: "フォロー許可待ち"
|
||||||
@@ -1112,11 +1220,7 @@ mobile/views/components/note-sub.vue:
|
|||||||
admin: "admin"
|
admin: "admin"
|
||||||
bot: "bot"
|
bot: "bot"
|
||||||
cat: "cat"
|
cat: "cat"
|
||||||
mobile/views/components/notes.vue:
|
|
||||||
failed: "読み込みに失敗しました。"
|
|
||||||
retry: "リトライ"
|
|
||||||
mobile/views/components/notifications.vue:
|
mobile/views/components/notifications.vue:
|
||||||
more: "もっと見る"
|
|
||||||
empty: "ありません!"
|
empty: "ありません!"
|
||||||
mobile/views/components/post-form.vue:
|
mobile/views/components/post-form.vue:
|
||||||
add-visible-user: "ユーザーを追加"
|
add-visible-user: "ユーザーを追加"
|
||||||
@@ -1136,17 +1240,14 @@ mobile/views/components/sub-note-content.vue:
|
|||||||
poll: "アンケート"
|
poll: "アンケート"
|
||||||
mobile/views/components/timeline.vue:
|
mobile/views/components/timeline.vue:
|
||||||
empty: "投稿がありません"
|
empty: "投稿がありません"
|
||||||
load-more: "もっと"
|
|
||||||
mobile/views/components/ui.header.vue:
|
mobile/views/components/ui.header.vue:
|
||||||
welcome-back: "おかえりなさい、"
|
welcome-back: "おかえりなさい、"
|
||||||
adjective: "さん"
|
adjective: "さん"
|
||||||
mobile/views/components/ui.nav.vue:
|
mobile/views/components/ui.nav.vue:
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
messaging: "メッセージ"
|
|
||||||
follow-requests: "フォロー申請"
|
follow-requests: "フォロー申請"
|
||||||
search: "検索"
|
search: "検索"
|
||||||
drive: "ドライブ"
|
|
||||||
favorites: "お気に入り"
|
favorites: "お気に入り"
|
||||||
user-lists: "リスト"
|
user-lists: "リスト"
|
||||||
widgets: "ウィジェット"
|
widgets: "ウィジェット"
|
||||||
@@ -1158,25 +1259,20 @@ mobile/views/components/ui.nav.vue:
|
|||||||
mobile/views/components/user-timeline.vue:
|
mobile/views/components/user-timeline.vue:
|
||||||
no-notes: "このユーザーは投稿していないようです。"
|
no-notes: "このユーザーは投稿していないようです。"
|
||||||
no-notes-with-media: "メディア付き投稿はありません。"
|
no-notes-with-media: "メディア付き投稿はありません。"
|
||||||
load-more: "もっと"
|
|
||||||
mobile/views/components/users-list.vue:
|
mobile/views/components/users-list.vue:
|
||||||
all: "すべて"
|
all: "すべて"
|
||||||
known: "知り合い"
|
known: "知り合い"
|
||||||
load-more: "もっと"
|
|
||||||
mobile/views/pages/favorites.vue:
|
mobile/views/pages/favorites.vue:
|
||||||
title: "お気に入り"
|
title: "お気に入り"
|
||||||
mobile/views/pages/user-lists.vue:
|
mobile/views/pages/user-lists.vue:
|
||||||
title: "リスト"
|
title: "リスト"
|
||||||
enter-list-name: "リスト名を入力してください"
|
enter-list-name: "リスト名を入力してください"
|
||||||
mobile/views/pages/drive.vue:
|
|
||||||
drive: "ドライブ"
|
|
||||||
more: "もっと見る"
|
|
||||||
mobile/views/pages/signup.vue:
|
mobile/views/pages/signup.vue:
|
||||||
lets-start: "📦 始めましょう"
|
lets-start: "📦 始めましょう"
|
||||||
mobile/views/pages/followers.vue:
|
mobile/views/pages/followers.vue:
|
||||||
followers-of: "{}のフォロワー"
|
followers-of: "{name}のフォロワー"
|
||||||
mobile/views/pages/following.vue:
|
mobile/views/pages/following.vue:
|
||||||
following-of: "{}のフォロー"
|
following-of: "{name}のフォロー"
|
||||||
mobile/views/pages/home.vue:
|
mobile/views/pages/home.vue:
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
local: "ローカル"
|
local: "ローカル"
|
||||||
@@ -1185,7 +1281,7 @@ mobile/views/pages/home.vue:
|
|||||||
mentions: "あなた宛て"
|
mentions: "あなた宛て"
|
||||||
messages: "メッセージ"
|
messages: "メッセージ"
|
||||||
mobile/views/pages/tag.vue:
|
mobile/views/pages/tag.vue:
|
||||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
|
||||||
mobile/views/pages/welcome.vue:
|
mobile/views/pages/welcome.vue:
|
||||||
signup: "新規登録"
|
signup: "新規登録"
|
||||||
mobile/views/pages/widgets.vue:
|
mobile/views/pages/widgets.vue:
|
||||||
@@ -1196,11 +1292,7 @@ mobile/views/pages/widgets.vue:
|
|||||||
mobile/views/pages/widgets/activity.vue:
|
mobile/views/pages/widgets/activity.vue:
|
||||||
activity: "アクティビティ"
|
activity: "アクティビティ"
|
||||||
mobile/views/pages/share.vue:
|
mobile/views/pages/share.vue:
|
||||||
share-with: "{}で共有"
|
share-with: "{name}で共有"
|
||||||
mobile/views/pages/messaging.vue:
|
|
||||||
messaging: "メッセージ"
|
|
||||||
mobile/views/pages/messaging-room.vue:
|
|
||||||
messaging: "メッセージ"
|
|
||||||
mobile/views/pages/received-follow-requests.vue:
|
mobile/views/pages/received-follow-requests.vue:
|
||||||
title: "フォロー申請"
|
title: "フォロー申請"
|
||||||
accept: "承認"
|
accept: "承認"
|
||||||
@@ -1214,27 +1306,9 @@ mobile/views/pages/notifications.vue:
|
|||||||
read-all: "すべての通知を既読にしますか?"
|
read-all: "すべての通知を既読にしますか?"
|
||||||
mobile/views/pages/games/reversi.vue:
|
mobile/views/pages/games/reversi.vue:
|
||||||
reversi: "リバーシ"
|
reversi: "リバーシ"
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
|
||||||
title: "プロフィール"
|
|
||||||
name: "Nome"
|
|
||||||
account: "Conta"
|
|
||||||
location: "Lugar"
|
|
||||||
description: "Biografia"
|
|
||||||
birthday: "Data de nascimento"
|
|
||||||
avatar: "Avatar"
|
|
||||||
banner: "Capa"
|
|
||||||
is-cat: "Esta conta é gato"
|
|
||||||
is-locked: "Pedido para seguir precisa ser aprovado"
|
|
||||||
advanced: "Avançado"
|
|
||||||
privacy: "Provacidade"
|
|
||||||
save: "Atualizar perfil"
|
|
||||||
saved: "Perfil atualizado"
|
|
||||||
uploading: "Enviando"
|
|
||||||
upload-failed: "Falha ao enviar"
|
|
||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
search: "Pesquisar"
|
search: "Pesquisar"
|
||||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
not-found: "「{q}」に関する投稿は見つかりませんでした。"
|
||||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
|
||||||
mobile/views/pages/selectdrive.vue:
|
mobile/views/pages/selectdrive.vue:
|
||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
mobile/views/pages/settings.vue:
|
mobile/views/pages/settings.vue:
|
||||||
@@ -1273,6 +1347,14 @@ mobile/views/pages/settings.vue:
|
|||||||
twitter-connect: "Conectar à sua conta no Twitter"
|
twitter-connect: "Conectar à sua conta no Twitter"
|
||||||
twitter-reconnect: "Reconectar"
|
twitter-reconnect: "Reconectar"
|
||||||
twitter-disconnect: "Desconectar"
|
twitter-disconnect: "Desconectar"
|
||||||
|
github: "GitHub連携"
|
||||||
|
github-connect: "GitHubアカウントに接続する"
|
||||||
|
github-reconnect: "再接続する"
|
||||||
|
github-disconnect: "切断する"
|
||||||
|
discord: "Discord連携"
|
||||||
|
discord-connect: "Discordアカウントに接続する"
|
||||||
|
discord-reconnect: "再接続する"
|
||||||
|
discord-disconnect: "切断する"
|
||||||
update: "Atualizar Misskey"
|
update: "Atualizar Misskey"
|
||||||
version: "Versão atual;"
|
version: "Versão atual;"
|
||||||
latest-version: "Última versão:"
|
latest-version: "Última versão:"
|
||||||
@@ -1286,6 +1368,8 @@ mobile/views/pages/settings.vue:
|
|||||||
signout: "Sair"
|
signout: "Sair"
|
||||||
sound: "Sons"
|
sound: "Sons"
|
||||||
enable-sounds: "Ativar sons"
|
enable-sounds: "Ativar sons"
|
||||||
|
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
|
||||||
|
password: "パスワード"
|
||||||
mobile/views/pages/user.vue:
|
mobile/views/pages/user.vue:
|
||||||
follows-you: "Te segue"
|
follows-you: "Te segue"
|
||||||
following: "Seguindo"
|
following: "Seguindo"
|
||||||
@@ -1295,8 +1379,11 @@ mobile/views/pages/user.vue:
|
|||||||
timeline: "Linha do tempo"
|
timeline: "Linha do tempo"
|
||||||
media: "Mídia"
|
media: "Mídia"
|
||||||
is-suspended: "Esta conta foi suspensa"
|
is-suspended: "Esta conta foi suspensa"
|
||||||
is-remote: "Este é uma usuário remoto. O perfil que vê aqui pode não estar completo."
|
mute: "ミュート"
|
||||||
view-remote: "Ver o perfil completo."
|
unmute: "ミュート解除"
|
||||||
|
block: "ブロック"
|
||||||
|
unblock: "ブロック解除"
|
||||||
|
years-old: "{age}歳"
|
||||||
mobile/views/pages/user/home.vue:
|
mobile/views/pages/user/home.vue:
|
||||||
recent-notes: "Notas recentes"
|
recent-notes: "Notas recentes"
|
||||||
images: "Imagens"
|
images: "Imagens"
|
||||||
@@ -1305,19 +1392,48 @@ mobile/views/pages/user/home.vue:
|
|||||||
domains: "Domínios"
|
domains: "Domínios"
|
||||||
frequently-replied-users: "Perguntas frequentes"
|
frequently-replied-users: "Perguntas frequentes"
|
||||||
followers-you-know: "Seguidores que você conhece"
|
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:
|
mobile/views/pages/user/home.followers-you-know.vue:
|
||||||
loading: "Carregando"
|
|
||||||
no-users: "知り合いのユーザーはいません"
|
no-users: "知り合いのユーザーはいません"
|
||||||
mobile/views/pages/user/home.friends.vue:
|
mobile/views/pages/user/home.friends.vue:
|
||||||
loading: "Carregando"
|
|
||||||
no-users: "よく会話するユーザーはいません"
|
no-users: "よく会話するユーザーはいません"
|
||||||
mobile/views/pages/user/home.notes.vue:
|
mobile/views/pages/user/home.notes.vue:
|
||||||
loading: "Carregando"
|
|
||||||
no-notes: "Nenhuma mensagem"
|
no-notes: "Nenhuma mensagem"
|
||||||
mobile/views/pages/user/home.photos.vue:
|
mobile/views/pages/user/home.photos.vue:
|
||||||
loading: "Carregando"
|
|
||||||
no-photos: "Sem fotos"
|
no-photos: "Sem fotos"
|
||||||
|
deck:
|
||||||
|
widgets: "ウィジェット"
|
||||||
|
home: "ホーム"
|
||||||
|
local: "ローカル"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
|
hashtag: "ハッシュタグ"
|
||||||
|
global: "グローバル"
|
||||||
|
mentions: "あなた宛て"
|
||||||
|
direct: "ダイレクト投稿"
|
||||||
|
notifications: "通知"
|
||||||
|
list: "リスト"
|
||||||
|
swap-left: "左に移動"
|
||||||
|
swap-right: "右に移動"
|
||||||
|
swap-up: "上に移動"
|
||||||
|
swap-down: "下に移動"
|
||||||
|
remove: "カラムを削除"
|
||||||
|
add-column: "カラムを追加"
|
||||||
|
rename: "名前を変更"
|
||||||
|
stack-left: "左に重ねる"
|
||||||
|
pop-right: "右に出す"
|
||||||
|
deck/deck.tl-column.vue:
|
||||||
|
is-media-only: "メディア投稿のみ"
|
||||||
|
is-media-view: "メディアビュー"
|
||||||
|
edit: "オプション"
|
||||||
|
deck/deck.user-column.vue:
|
||||||
|
posts: "投稿"
|
||||||
|
following: "フォロー"
|
||||||
|
followers: "フォロワー"
|
||||||
|
images: "画像"
|
||||||
|
activity: "アクティビティ"
|
||||||
|
timeline: "タイムライン"
|
||||||
|
pinned-notes: "ピン留めされた投稿"
|
||||||
|
push-to-a-list: "リストに追加"
|
||||||
docs:
|
docs:
|
||||||
edit-this-page-on-github: "間違いや改善点を見つけましたか?"
|
edit-this-page-on-github: "間違いや改善点を見つけましたか?"
|
||||||
edit-this-page-on-github-link: "Edite esta página no GitHub!"
|
edit-this-page-on-github-link: "Edite esta página no GitHub!"
|
||||||
@@ -1342,3 +1458,29 @@ docs:
|
|||||||
description: "Descrição"
|
description: "Descrição"
|
||||||
dev/views/index.vue:
|
dev/views/index.vue:
|
||||||
manage-apps: "Gerenciar aplicativos"
|
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,9 +3,9 @@ meta:
|
|||||||
lang: "Русский язык"
|
lang: "Русский язык"
|
||||||
divider: ""
|
divider: ""
|
||||||
common:
|
common:
|
||||||
misskey: "A ⭐ of fediverse"
|
misskey: "Мы — ⭐ fediverse"
|
||||||
about-title: "A ⭐ of fediverse."
|
about-title: "Мы — ⭐ fediverse"
|
||||||
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
about: "Спасибо, что нашли Misskey. Misskey — это <b>децентрализованная платформа для микроблоггинга</b> родом с планеты Земля. Поскольку она существует внутри Fediverse (вселенной различных социальных платформ), она связана с другими платформами. Отдохните от шума большого города — и познакомьтесь с новым интернетом."
|
||||||
intro:
|
intro:
|
||||||
title: "Misskeyって?"
|
title: "Misskeyって?"
|
||||||
about: "Misskeyはオープンソースの<b>分散型マイクロブログSNS</b>です。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。"
|
about: "Misskeyはオープンソースの<b>分散型マイクロブログSNS</b>です。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。"
|
||||||
@@ -25,13 +25,11 @@ common:
|
|||||||
application-authorization: "アプリの連携"
|
application-authorization: "アプリの連携"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||||
|
load-more: "もっと読み込む"
|
||||||
got-it: "わかった"
|
got-it: "わかった"
|
||||||
customization-tips:
|
customization-tips:
|
||||||
title: "カスタマイズのヒント"
|
title: "カスタマイズのヒント"
|
||||||
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
|
paragraph: "<p>ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。</p><p>一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。</p><p>ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。</p><p>カスタマイズを終了するには、右上の「完了」をクリックします。</p>"
|
||||||
paragraph2: "一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。"
|
|
||||||
paragraph3: "ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。"
|
|
||||||
paragraph4: "カスタマイズを終了するには、右上の「完了」をクリックします。"
|
|
||||||
gotit: "Got it!"
|
gotit: "Got it!"
|
||||||
notification:
|
notification:
|
||||||
file-uploaded: "ファイルがアップロードされました"
|
file-uploaded: "ファイルがアップロードされました"
|
||||||
@@ -54,6 +52,8 @@ common:
|
|||||||
years_ago: "{}年前"
|
years_ago: "{}年前"
|
||||||
month-and-day: "{month}月 {day}日"
|
month-and-day: "{month}月 {day}日"
|
||||||
trash: "ゴミ箱"
|
trash: "ゴミ箱"
|
||||||
|
drive: "ドライブ"
|
||||||
|
messaging: "トーク"
|
||||||
weekday-short:
|
weekday-short:
|
||||||
sunday: "日"
|
sunday: "日"
|
||||||
monday: "月"
|
monday: "月"
|
||||||
@@ -112,20 +112,28 @@ common:
|
|||||||
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
||||||
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
||||||
show-full-acct: "ユーザー名のホストを省略しない"
|
show-full-acct: "ユーザー名のホストを省略しない"
|
||||||
|
show-via: "viaを表示する"
|
||||||
reduce-motion: "UIの動きを減らす"
|
reduce-motion: "UIの動きを減らす"
|
||||||
this-setting-is-this-device-only: "このデバイスのみ"
|
this-setting-is-this-device-only: "このデバイスのみ"
|
||||||
|
use-os-default-emojis: "OS標準の絵文字を使用"
|
||||||
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
||||||
|
is-remote-user: "このユーザー情報はコピーです。"
|
||||||
|
is-remote-post: "この投稿情報はコピーです。"
|
||||||
|
view-on-remote: "正確な情報を見る"
|
||||||
|
error:
|
||||||
|
title: '問題が発生しました'
|
||||||
|
retry: 'やり直す'
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "引き分け"
|
drawn: "引き分け"
|
||||||
my-turn: "あなたのターンです"
|
my-turn: "あなたのターンです"
|
||||||
opponent-turn: "相手のターンです"
|
opponent-turn: "相手のターンです"
|
||||||
turn-of: "{}のターンです"
|
turn-of: "{name}のターンです"
|
||||||
past-turn-of: "{}のターン"
|
past-turn-of: "{name}のターン"
|
||||||
won: "{}の勝ち"
|
won: "{name}の勝ち"
|
||||||
black: "黒"
|
black: "黒"
|
||||||
white: "白"
|
white: "白"
|
||||||
total: "合計"
|
total: "合計"
|
||||||
this-turn: "{}ターン目"
|
this-turn: "{count}ターン目"
|
||||||
widgets:
|
widgets:
|
||||||
analog-clock: "アナログ時計"
|
analog-clock: "アナログ時計"
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
@@ -144,34 +152,15 @@ common:
|
|||||||
users: "おすすめユーザー"
|
users: "おすすめユーザー"
|
||||||
polls: "アンケート"
|
polls: "アンケート"
|
||||||
post-form: "投稿フォーム"
|
post-form: "投稿フォーム"
|
||||||
messaging: "メッセージ"
|
|
||||||
server: "サーバー情報"
|
server: "サーバー情報"
|
||||||
donation: "寄付のお願い"
|
donation: "寄付のお願い"
|
||||||
nav: "ナビゲーション"
|
nav: "ナビゲーション"
|
||||||
tips: "ヒント"
|
tips: "ヒント"
|
||||||
hashtags: "ハッシュタグ"
|
hashtags: "ハッシュタグ"
|
||||||
deck:
|
dev: "アプリの作成に失敗しました。再度お試しください。"
|
||||||
widgets: "ウィジェット"
|
ai-chan-kawaii: "藍ちゃかわいい"
|
||||||
home: "ホーム"
|
|
||||||
local: "ローカル"
|
|
||||||
hybrid: "ソーシャル"
|
|
||||||
hashtag: "ハッシュタグ"
|
|
||||||
global: "グローバル"
|
|
||||||
mentions: "あなた宛て"
|
|
||||||
direct: "ダイレクト投稿"
|
|
||||||
notifications: "通知"
|
|
||||||
list: "リスト"
|
|
||||||
swap-left: "左に移動"
|
|
||||||
swap-right: "右に移動"
|
|
||||||
swap-up: "上に移動"
|
|
||||||
swap-down: "下に移動"
|
|
||||||
remove: "カラムを削除"
|
|
||||||
add-column: "カラムを追加"
|
|
||||||
rename: "名前を変更"
|
|
||||||
stack-left: "左に重ねる"
|
|
||||||
pop-right: "右に出す"
|
|
||||||
auth/views/form.vue:
|
auth/views/form.vue:
|
||||||
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
|
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
|
||||||
permission-ask: "このアプリは次の権限を要求しています:"
|
permission-ask: "このアプリは次の権限を要求しています:"
|
||||||
account-read: "アカウントの情報を見る。"
|
account-read: "アカウントの情報を見る。"
|
||||||
account-write: "アカウントの情報を操作する。"
|
account-write: "アカウントの情報を操作する。"
|
||||||
@@ -308,7 +297,6 @@ common/views/components/messaging.vue:
|
|||||||
no-history: "履歴はありません"
|
no-history: "履歴はありません"
|
||||||
common/views/components/messaging-room.vue:
|
common/views/components/messaging-room.vue:
|
||||||
empty: "このユーザーと話したことはありません"
|
empty: "このユーザーと話したことはありません"
|
||||||
more: "もっと読む"
|
|
||||||
no-history: "これより過去の履歴はありません"
|
no-history: "これより過去の履歴はありません"
|
||||||
resize-form: "ドラッグしてフォームの広さを調整"
|
resize-form: "ドラッグしてフォームの広さを調整"
|
||||||
new-message: "新しいメッセージがあります"
|
new-message: "新しいメッセージがあります"
|
||||||
@@ -356,6 +344,16 @@ common/views/components/poll-editor.vue:
|
|||||||
destroy: "アンケートを破棄"
|
destroy: "アンケートを破棄"
|
||||||
common/views/components/reaction-picker.vue:
|
common/views/components/reaction-picker.vue:
|
||||||
choose-reaction: "リアクションを選択"
|
choose-reaction: "リアクションを選択"
|
||||||
|
common/views/components/emoji-picker.vue:
|
||||||
|
custom-emoji: "カスタム絵文字"
|
||||||
|
people: "人"
|
||||||
|
animals-and-nature: "動物&自然"
|
||||||
|
food-and-drink: "食べ物&飲み物"
|
||||||
|
activity: "アクティビティ"
|
||||||
|
travel-and-places: "場所"
|
||||||
|
objects: "物"
|
||||||
|
symbols: "記号"
|
||||||
|
flags: "旗"
|
||||||
common/views/components/signin.vue:
|
common/views/components/signin.vue:
|
||||||
username: "ユーザー名"
|
username: "ユーザー名"
|
||||||
password: "パスワード"
|
password: "パスワード"
|
||||||
@@ -364,6 +362,8 @@ common/views/components/signin.vue:
|
|||||||
signin: "サインイン"
|
signin: "サインイン"
|
||||||
or: "または"
|
or: "または"
|
||||||
signin-with-twitter: "Twitterでログイン"
|
signin-with-twitter: "Twitterでログイン"
|
||||||
|
signin-with-github: "GitHubでログイン"
|
||||||
|
signin-with-discord: "Discordでログイン"
|
||||||
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
invitation-code: "招待コード"
|
invitation-code: "招待コード"
|
||||||
@@ -402,6 +402,20 @@ common/views/components/twitter-setting.vue:
|
|||||||
reconnect: "再接続する"
|
reconnect: "再接続する"
|
||||||
connect: "Twitterと接続する"
|
connect: "Twitterと接続する"
|
||||||
disconnect: "切断する"
|
disconnect: "切断する"
|
||||||
|
common/views/components/github-setting.vue:
|
||||||
|
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
|
||||||
|
connected-to: "次のGitHubアカウントに接続されています"
|
||||||
|
detail: "詳細..."
|
||||||
|
reconnect: "再接続する"
|
||||||
|
connect: "GitHubと接続する"
|
||||||
|
disconnect: "切断する"
|
||||||
|
common/views/components/discord-setting.vue:
|
||||||
|
description: "お使いのDiscordアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでDiscordアカウント情報が表示されるようになったり、Discordを用いた便利なサインインを利用できるようになります。"
|
||||||
|
connected-to: "次のDiscordアカウントに接続されています"
|
||||||
|
detail: "詳細..."
|
||||||
|
reconnect: "再接続する"
|
||||||
|
connect: "Discordと接続する"
|
||||||
|
disconnect: "切断する"
|
||||||
common/views/components/uploader.vue:
|
common/views/components/uploader.vue:
|
||||||
waiting: "待機中"
|
waiting: "待機中"
|
||||||
common/views/components/visibility-chooser.vue:
|
common/views/components/visibility-chooser.vue:
|
||||||
@@ -416,6 +430,25 @@ common/views/components/visibility-chooser.vue:
|
|||||||
common/views/components/trends.vue:
|
common/views/components/trends.vue:
|
||||||
count: "{}人が投稿"
|
count: "{}人が投稿"
|
||||||
empty: "トレンドなし"
|
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:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "確認中"
|
fetching: "確認中"
|
||||||
no-broadcasts: "お知らせはありません"
|
no-broadcasts: "お知らせはありません"
|
||||||
@@ -499,34 +532,12 @@ desktop/views/components/activity.vue:
|
|||||||
title: "アクティビティ"
|
title: "アクティビティ"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
desktop/views/components/calendar.vue:
|
desktop/views/components/calendar.vue:
|
||||||
title: "{1}年 {2}月"
|
title: "{year}年 {month}月"
|
||||||
prev: "前の月"
|
prev: "前の月"
|
||||||
next: "次の月"
|
next: "次の月"
|
||||||
go: "クリックして時間遡行"
|
go: "クリックして時間遡行"
|
||||||
desktop/views/components/charts.vue:
|
|
||||||
title: "チャート"
|
|
||||||
per-day: "1日ごと"
|
|
||||||
per-hour: "1時間ごと"
|
|
||||||
notes: "投稿"
|
|
||||||
users: "ユーザー"
|
|
||||||
drive: "ドライブ"
|
|
||||||
network: "ネットワーク"
|
|
||||||
charts:
|
|
||||||
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:
|
desktop/views/components/choose-file-from-drive-window.vue:
|
||||||
choose-file: "ファイル選択中"
|
chosen-files: "{count}ファイル選択中"
|
||||||
upload: "PCからドライブにファイルをアップロード"
|
upload: "PCからドライブにファイルをアップロード"
|
||||||
cancel: "キャンセル"
|
cancel: "キャンセル"
|
||||||
ok: "決定"
|
ok: "決定"
|
||||||
@@ -541,7 +552,6 @@ desktop/views/components/crop-window.vue:
|
|||||||
ok: "決定"
|
ok: "決定"
|
||||||
desktop/views/components/drive-window.vue:
|
desktop/views/components/drive-window.vue:
|
||||||
used: "使用中"
|
used: "使用中"
|
||||||
drive: "ドライブ"
|
|
||||||
desktop/views/components/drive.file.vue:
|
desktop/views/components/drive.file.vue:
|
||||||
avatar: "アイコン"
|
avatar: "アイコン"
|
||||||
banner: "バナー"
|
banner: "バナー"
|
||||||
@@ -571,11 +581,8 @@ desktop/views/components/drive.folder.vue:
|
|||||||
rename: "名前を変更"
|
rename: "名前を変更"
|
||||||
rename-folder: "フォルダ名の変更"
|
rename-folder: "フォルダ名の変更"
|
||||||
input-new-folder-name: "新しいフォルダ名を入力してください"
|
input-new-folder-name: "新しいフォルダ名を入力してください"
|
||||||
desktop/views/components/drive.nav-folder.vue:
|
|
||||||
drive: "ドライブ"
|
|
||||||
desktop/views/components/drive.vue:
|
desktop/views/components/drive.vue:
|
||||||
search: "検索"
|
search: "検索"
|
||||||
load-more: "もっと読み込む"
|
|
||||||
empty-draghover: "ドロップですか?いいですよ、ボクはカワイイですからね"
|
empty-draghover: "ドロップですか?いいですよ、ボクはカワイイですからね"
|
||||||
empty-drive: "ドライブには何もありません。"
|
empty-drive: "ドライブには何もありません。"
|
||||||
empty-drive-description: "右クリックして「ファイルをアップロード」を選んだり、ファイルをドラッグ&ドロップすることでもアップロードできます。"
|
empty-drive-description: "右クリックして「ファイルをアップロード」を選んだり、ファイルをドラッグ&ドロップすることでもアップロードできます。"
|
||||||
@@ -599,12 +606,6 @@ desktop/views/components/media-image.vue:
|
|||||||
desktop/views/components/media-video.vue:
|
desktop/views/components/media-video.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
desktop/views/components/follow-button.vue:
|
|
||||||
following: "フォロー中"
|
|
||||||
follow: "フォロー"
|
|
||||||
request-pending: "フォロー許可待ち"
|
|
||||||
follow-processing: "フォロー処理中"
|
|
||||||
follow-request: "フォロー申請"
|
|
||||||
desktop/views/components/followers-window.vue:
|
desktop/views/components/followers-window.vue:
|
||||||
followers: "{} のフォロワー"
|
followers: "{} のフォロワー"
|
||||||
desktop/views/components/followers.vue:
|
desktop/views/components/followers.vue:
|
||||||
@@ -633,14 +634,13 @@ desktop/views/components/messaging-room-window.vue:
|
|||||||
desktop/views/components/messaging-window.vue:
|
desktop/views/components/messaging-window.vue:
|
||||||
title: "メッセージ"
|
title: "メッセージ"
|
||||||
desktop/views/components/note-detail.vue:
|
desktop/views/components/note-detail.vue:
|
||||||
more: "会話をもっと読み込む"
|
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
location: "位置情報"
|
location: "位置情報"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
add-reaction: "リアクション"
|
add-reaction: "リアクション"
|
||||||
desktop/views/components/notes.note.vue:
|
desktop/views/components/note.vue:
|
||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
reply: "返信"
|
reply: "返信"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
@@ -651,9 +651,7 @@ desktop/views/components/notes.note.vue:
|
|||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "読み込みに失敗しました。"
|
error: "読み込みに失敗しました。"
|
||||||
retry: "リトライ"
|
retry: "リトライ"
|
||||||
load-more: "もっと読み込む"
|
|
||||||
desktop/views/components/notifications.vue:
|
desktop/views/components/notifications.vue:
|
||||||
more: "もっと見る"
|
|
||||||
empty: "ありません!"
|
empty: "ありません!"
|
||||||
desktop/views/components/post-form.vue:
|
desktop/views/components/post-form.vue:
|
||||||
add-visible-user: "+ユーザーを追加"
|
add-visible-user: "+ユーザーを追加"
|
||||||
@@ -700,14 +698,17 @@ desktop/views/components/renote-form.vue:
|
|||||||
failure: "Renoteに失敗しました"
|
failure: "Renoteに失敗しました"
|
||||||
desktop/views/components/renote-form-window.vue:
|
desktop/views/components/renote-form-window.vue:
|
||||||
title: "この投稿をRenoteしますか?"
|
title: "この投稿をRenoteしますか?"
|
||||||
|
desktop/views/pages/user-following-or-followers.vue:
|
||||||
|
following: "{user}のフォロー"
|
||||||
|
followers: "{user}のフォロワー"
|
||||||
desktop/views/components/settings-window.vue:
|
desktop/views/components/settings-window.vue:
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
desktop/views/components/settings.vue:
|
desktop/views/components/settings.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
notification: "通知"
|
notification: "通知"
|
||||||
apps: "アプリ"
|
apps: "アプリ"
|
||||||
mute: "ミュート"
|
mute-and-block: "ミュート/ブロック"
|
||||||
drive: "ドライブ"
|
blocking: "ブロック"
|
||||||
security: "セキュリティ"
|
security: "セキュリティ"
|
||||||
signin: "サインイン履歴"
|
signin: "サインイン履歴"
|
||||||
password: "パスワード"
|
password: "パスワード"
|
||||||
@@ -726,8 +727,12 @@ desktop/views/components/settings.vue:
|
|||||||
advanced: "詳細設定"
|
advanced: "詳細設定"
|
||||||
api-via-stream: "ストリームを経由したAPIリクエスト"
|
api-via-stream: "ストリームを経由したAPIリクエスト"
|
||||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||||
|
deck-nav: "デッキ内ナビゲーション"
|
||||||
|
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
|
||||||
|
deck-default: "デッキをデフォルトのUIにする"
|
||||||
display: "デザインと表示"
|
display: "デザインと表示"
|
||||||
customize: "ホームをカスタマイズ"
|
customize: "ホームをカスタマイズ"
|
||||||
|
wallpaper: "壁紙"
|
||||||
choose-wallpaper: "壁紙を選択"
|
choose-wallpaper: "壁紙を選択"
|
||||||
delete-wallpaper: "壁紙を削除"
|
delete-wallpaper: "壁紙を削除"
|
||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
@@ -739,17 +744,19 @@ desktop/views/components/settings.vue:
|
|||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
show-clock-on-header: "右上に時計を表示する"
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
|
timeline: "タイムライン"
|
||||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "マップの自動展開"
|
show-maps: "マップの自動展開"
|
||||||
|
deck-column-align: "デッキのカラムの位置"
|
||||||
|
deck-column-align-center: "中央"
|
||||||
|
deck-column-align-left: "左"
|
||||||
sound: "サウンド"
|
sound: "サウンド"
|
||||||
enable-sounds: "サウンドを有効にする"
|
enable-sounds: "サウンドを有効にする"
|
||||||
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
|
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
|
||||||
volume: "ボリューム"
|
volume: "ボリューム"
|
||||||
test: "テスト"
|
test: "テスト"
|
||||||
mobile: "モバイル"
|
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
|
||||||
language: "言語"
|
language: "言語"
|
||||||
pick-language: "言語を選択"
|
pick-language: "言語を選択"
|
||||||
recommended: "推奨"
|
recommended: "推奨"
|
||||||
@@ -785,6 +792,10 @@ desktop/views/components/settings.vue:
|
|||||||
tools: "ツール"
|
tools: "ツール"
|
||||||
task-manager: "タスクマネージャ"
|
task-manager: "タスクマネージャ"
|
||||||
third-parties: "サードパーティ"
|
third-parties: "サードパーティ"
|
||||||
|
navbar-position: "ナビゲーションバーの位置"
|
||||||
|
navbar-position-top: "上"
|
||||||
|
navbar-position-left: "左"
|
||||||
|
navbar-position-right: "右"
|
||||||
desktop/views/components/settings.2fa.vue:
|
desktop/views/components/settings.2fa.vue:
|
||||||
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
||||||
detail: "詳細..."
|
detail: "詳細..."
|
||||||
@@ -803,41 +814,44 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
success: "設定が完了しました!"
|
success: "設定が完了しました!"
|
||||||
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
||||||
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
||||||
desktop/views/components/settings.api.vue:
|
common/views/components/api-settings.vue:
|
||||||
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
||||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||||
regenerate-token: "トークンを再生成"
|
regenerate-token: "トークンを再生成"
|
||||||
token: "Token:"
|
token: "Token:"
|
||||||
enter-password: "パスワードを入力してください"
|
enter-password: "パスワードを入力してください"
|
||||||
|
console:
|
||||||
|
title: 'APIコンソール'
|
||||||
|
endpoint: 'エンドポイント'
|
||||||
|
parameter: 'パラメータ'
|
||||||
|
credential-info: "「i」パラメータは自動で付与されます。"
|
||||||
|
send: '送信'
|
||||||
|
sending: '応答待ち'
|
||||||
|
response: '結果'
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "連携しているアプリケーションはありません"
|
no-apps: "連携しているアプリケーションはありません"
|
||||||
desktop/views/components/settings.drive.vue:
|
common/views/components/drive-settings.vue:
|
||||||
max: "中"
|
max: "容量"
|
||||||
in-use: "使用中"
|
in-use: "使用中"
|
||||||
desktop/views/components/settings.mute.vue:
|
stats: "統計"
|
||||||
no-users: "ミュートしているユーザーはいません"
|
common/views/components/mute-and-block.vue:
|
||||||
desktop/views/components/settings.password.vue:
|
mute-and-block: "ミュートとブロック"
|
||||||
|
mute: "ミュート"
|
||||||
|
block: "ブロック"
|
||||||
|
no-muted-users: "ミュートしているユーザーはいません"
|
||||||
|
no-blocked-users: "ブロックしているユーザーはいません"
|
||||||
|
word-mute: "ワードミュート"
|
||||||
|
muted-words: "ミュートされたキーワード"
|
||||||
|
muted-words-description: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります"
|
||||||
|
save: "保存"
|
||||||
|
common/views/components/password-settings.vue:
|
||||||
reset: "パスワードを変更する"
|
reset: "パスワードを変更する"
|
||||||
enter-current-password: "現在のパスワードを入力してください"
|
enter-current-password: "現在のパスワードを入力してください"
|
||||||
enter-new-password: "新しいパスワードを入力してください"
|
enter-new-password: "新しいパスワードを入力してください"
|
||||||
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
||||||
not-match: "新しいパスワードが一致しません"
|
not-match: "新しいパスワードが一致しません"
|
||||||
changed: "パスワードを変更しました"
|
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:
|
desktop/views/components/sub-note-content.vue:
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
@@ -862,7 +876,6 @@ desktop/views/components/ui.header.vue:
|
|||||||
adjective: "さん"
|
adjective: "さん"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
drive: "ドライブ"
|
|
||||||
favorites: "お気に入り"
|
favorites: "お気に入り"
|
||||||
lists: "リスト"
|
lists: "リスト"
|
||||||
follow-requests: "フォロー申請"
|
follow-requests: "フォロー申請"
|
||||||
@@ -874,7 +887,6 @@ desktop/views/components/ui.header.account.vue:
|
|||||||
desktop/views/components/ui.header.nav.vue:
|
desktop/views/components/ui.header.nav.vue:
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
deck: "デッキ"
|
deck: "デッキ"
|
||||||
messaging: "メッセージ"
|
|
||||||
game: "ゲーム"
|
game: "ゲーム"
|
||||||
desktop/views/components/ui.header.notifications.vue:
|
desktop/views/components/ui.header.notifications.vue:
|
||||||
title: "通知"
|
title: "通知"
|
||||||
@@ -897,54 +909,153 @@ desktop/views/components/user-preview.vue:
|
|||||||
desktop/views/components/users-list.vue:
|
desktop/views/components/users-list.vue:
|
||||||
all: "すべて"
|
all: "すべて"
|
||||||
iknow: "知り合い"
|
iknow: "知り合い"
|
||||||
load-more: "もっと"
|
|
||||||
fetching: "読み込んでいます"
|
fetching: "読み込んでいます"
|
||||||
desktop/views/components/users-list-item.vue:
|
desktop/views/components/users-list-item.vue:
|
||||||
followed: "フォローされています"
|
followed: "フォローされています"
|
||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
desktop/views/pages/admin/admin.vue:
|
admin/views/index.vue:
|
||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
drive: "ドライブ"
|
instance: "インスタンス"
|
||||||
|
emoji: "カスタム絵文字"
|
||||||
|
moderators: "モデレーター"
|
||||||
users: "ユーザー"
|
users: "ユーザー"
|
||||||
update: "更新"
|
update: "更新"
|
||||||
desktop/views/pages/admin/admin.dashboard.vue:
|
announcements: "お知らせ"
|
||||||
|
hashtags: "ハッシュタグ"
|
||||||
|
back-to-misskey: "Misskeyに戻る"
|
||||||
|
admin/views/dashboard.vue:
|
||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
all-users: "全てのユーザー"
|
accounts: "アカウント"
|
||||||
original-users: "このインスタンスのユーザー"
|
notes: "投稿"
|
||||||
all-notes: "全ての投稿"
|
drive: "ドライブ"
|
||||||
original-notes: "このインスタンスの投稿"
|
instances: "インスタンス"
|
||||||
|
this-instance: "このインスタンス"
|
||||||
|
federated: "連合"
|
||||||
|
admin/views/instance.vue:
|
||||||
|
instance: "インスタンス"
|
||||||
|
instance-name: "インスタンス名"
|
||||||
|
instance-description: "インスタンスの紹介"
|
||||||
|
host: "ホスト"
|
||||||
|
banner-url: "バナー画像URL"
|
||||||
|
languages: "インスタンスの対象言語"
|
||||||
|
languages-desc: "スペースで区切って複数設定できます。"
|
||||||
|
maintainer-config: "管理者情報"
|
||||||
|
maintainer-name: "管理者名"
|
||||||
|
maintainer-email: "管理者の連絡先"
|
||||||
|
drive-config: "ドライブの設定"
|
||||||
|
cache-remote-files: "リモートのファイルをキャッシュする"
|
||||||
|
cache-remote-files-desc: "この設定を無効にすると、リモートファイルをキャッシュせず直リンクするようになります。そのためサーバーのストレージを節約できますが、プライバシー設定で直リンクを無効にしているユーザーにはファイルが見えなくなったり、サムネイルが生成されないので通信量が増加します。通常はこの設定をオンにしておくことをおすすめします。"
|
||||||
|
local-drive-capacity-mb: "ローカルユーザーひとりあたりのドライブ容量"
|
||||||
|
remote-drive-capacity-mb: "リモートユーザーひとりあたりのドライブ容量"
|
||||||
|
mb: "メガバイト単位"
|
||||||
|
recaptcha-config: "reCAPTCHAの設定"
|
||||||
|
recaptcha-info: "reCAPTCHAを有効にする場合、reCAPTCHAトークンを取得する必要があります。https://www.google.com/recaptcha/intro/ にアクセスしてトークンを取得してください。"
|
||||||
|
enable-recaptcha: "reCAPTCHAを有効にする"
|
||||||
|
recaptcha-site-key: "reCAPTCHA site key"
|
||||||
|
recaptcha-secret-key: "reCAPTCHA secret key"
|
||||||
|
twitter-integration-config: "Twitter連携の設定"
|
||||||
|
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。"
|
||||||
|
enable-twitter-integration: "Twitter連携を有効にする"
|
||||||
|
twitter-integration-consumer-key: "Consumer key"
|
||||||
|
twitter-integration-consumer-secret: "Consumer secret"
|
||||||
|
github-integration-config: "GitHub連携の設定"
|
||||||
|
github-integration-info: "コールバックURLは /api/gh/cb に設定します。"
|
||||||
|
enable-github-integration: "GitHub連携を有効にする"
|
||||||
|
github-integration-client-id: "Client ID"
|
||||||
|
github-integration-client-secret: "Client Secret"
|
||||||
|
discord-integration-config: "Discord連携の設定"
|
||||||
|
discord-integration-info: "コールバックURLは /api/dc/cb に設定します。"
|
||||||
|
enable-discord-integration: "Discord連携を有効にする"
|
||||||
|
discord-integration-client-id: "Client ID"
|
||||||
|
discord-integration-client-secret: "Client Secret"
|
||||||
|
proxy-account-config: "プロキシアカウントの設定"
|
||||||
|
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
|
||||||
|
proxy-account-username: "プロキシアカウントのユーザー名"
|
||||||
|
proxy-account-username-desc: "プロキシとして使用するアカウントのユーザー名を指定してください。"
|
||||||
|
proxy-account-warn: "アカウントは自動で作られないため、そのユーザー名のアカウントを予め作成しておく必要があります。"
|
||||||
|
max-note-text-length: "投稿の最大文字数"
|
||||||
|
disable-registration: "ユーザー登録の受付を停止する"
|
||||||
|
disable-local-timeline: "ローカルタイムラインを無効にする"
|
||||||
invite: "招待"
|
invite: "招待"
|
||||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
save: "保存"
|
||||||
|
saved: "保存しました"
|
||||||
|
admin/views/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: "通信量"
|
||||||
|
admin/views/users.vue:
|
||||||
suspend-user: "ユーザーの凍結"
|
suspend-user: "ユーザーの凍結"
|
||||||
suspend: "凍結"
|
suspend: "凍結"
|
||||||
suspended: "凍結しました"
|
suspended: "凍結しました"
|
||||||
desktop/views/pages/admin/admin.unsuspend-user.vue:
|
|
||||||
unsuspend-user: "ユーザーの凍結の解除"
|
unsuspend-user: "ユーザーの凍結の解除"
|
||||||
unsuspend: "凍結の解除"
|
unsuspend: "凍結の解除"
|
||||||
unsuspended: "凍結を解除しました"
|
unsuspended: "凍結を解除しました"
|
||||||
desktop/views/pages/admin/admin.verify-user.vue:
|
|
||||||
verify-user: "ユーザーの公式アカウント設定"
|
verify-user: "ユーザーの公式アカウント設定"
|
||||||
verify: "公式アカウントにする"
|
verify: "公式アカウントにする"
|
||||||
verified: "公式アカウントにしました"
|
verified: "公式アカウントにしました"
|
||||||
desktop/views/pages/admin/admin.unverify-user.vue:
|
|
||||||
unverify-user: "ユーザーの公式アカウント解除"
|
unverify-user: "ユーザーの公式アカウント解除"
|
||||||
unverify: "公式アカウントを解除する"
|
unverify: "公式アカウントを解除する"
|
||||||
unverified: "公式アカウントを解除しました"
|
unverified: "公式アカウントを解除しました"
|
||||||
desktop/views/pages/deck/deck.tl-column.vue:
|
admin/views/moderators.vue:
|
||||||
is-media-only: "メディア投稿のみ"
|
add-moderator:
|
||||||
is-media-view: "メディアビュー"
|
title: "モデレーターの登録"
|
||||||
edit: "オプション"
|
add: "登録"
|
||||||
desktop/views/pages/deck/deck.note.vue:
|
added: "モデレーターを登録しました"
|
||||||
reposted-by: "{}がRenote"
|
admin/views/emoji.vue:
|
||||||
private: "この投稿は非公開です"
|
add-emoji:
|
||||||
deleted: "この投稿は削除されました"
|
title: "絵文字の登録"
|
||||||
desktop/views/pages/stats/stats.vue:
|
name: "絵文字名"
|
||||||
all-users: "全てのユーザー"
|
name-desc: "a~z 0~9 _ の文字が使えます。"
|
||||||
original-users: "このインスタンスのユーザー"
|
aliases: "エイリアス"
|
||||||
all-notes: "全ての投稿"
|
aliases-desc: "スペースで区切って複数設定できます。"
|
||||||
original-notes: "このインスタンスの投稿"
|
url: "絵文字画像URL"
|
||||||
|
add: "追加"
|
||||||
|
info: "50KB以下のPNG画像をおすすめします。"
|
||||||
|
added: "絵文字を登録しました"
|
||||||
|
emojis:
|
||||||
|
title: "絵文字一覧"
|
||||||
|
update: "更新"
|
||||||
|
remove: "削除"
|
||||||
|
updated: "更新しました"
|
||||||
|
remove-emoji:
|
||||||
|
are-you-sure: "「$1」を削除しますか?"
|
||||||
|
removed: "削除しました"
|
||||||
|
admin/views/announcements.vue:
|
||||||
|
announcements: "お知らせ"
|
||||||
|
save: "保存"
|
||||||
|
remove: "削除"
|
||||||
|
add: "追加"
|
||||||
|
title: "タイトル"
|
||||||
|
text: "内容"
|
||||||
|
saved: "保存しました"
|
||||||
|
_remove:
|
||||||
|
are-you-sure: "「$1」を削除しますか?"
|
||||||
|
removed: "削除しました"
|
||||||
|
admin/views/hashtags.vue:
|
||||||
|
hided-tags: "Hidden Tags"
|
||||||
desktop/views/pages/welcome.vue:
|
desktop/views/pages/welcome.vue:
|
||||||
about: "詳しく..."
|
about: "詳しく..."
|
||||||
gotit: "わかった"
|
gotit: "わかった"
|
||||||
@@ -959,8 +1070,6 @@ desktop/views/pages/welcome.vue:
|
|||||||
info: "情報"
|
info: "情報"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
desktop/views/pages/favorites.vue:
|
|
||||||
more: "さらに読み込む"
|
|
||||||
desktop/views/pages/home-customize.vue:
|
desktop/views/pages/home-customize.vue:
|
||||||
title: "ホームのカスタマイズ"
|
title: "ホームのカスタマイズ"
|
||||||
desktop/views/pages/note.vue:
|
desktop/views/pages/note.vue:
|
||||||
@@ -973,11 +1082,11 @@ desktop/views/pages/selectdrive.vue:
|
|||||||
upload: "PCからドライブにファイルをアップロード"
|
upload: "PCからドライブにファイルをアップロード"
|
||||||
desktop/views/pages/search.vue:
|
desktop/views/pages/search.vue:
|
||||||
not-available: "検索機能はインスタンスの設定で無効になっています。"
|
not-available: "検索機能はインスタンスの設定で無効になっています。"
|
||||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
not-found: "「{q}」に関する投稿は見つかりませんでした。"
|
||||||
desktop/views/pages/share.vue:
|
desktop/views/pages/share.vue:
|
||||||
share-with: "{}で共有"
|
share-with: "{name}で共有"
|
||||||
desktop/views/pages/tag.vue:
|
desktop/views/pages/tag.vue:
|
||||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
|
||||||
desktop/views/pages/user-list.users.vue:
|
desktop/views/pages/user-list.users.vue:
|
||||||
users: "ユーザー"
|
users: "ユーザー"
|
||||||
add-user: "ユーザーを追加"
|
add-user: "ユーザーを追加"
|
||||||
@@ -990,12 +1099,6 @@ desktop/views/pages/user/user.friends.vue:
|
|||||||
title: "よく話すユーザー"
|
title: "よく話すユーザー"
|
||||||
loading: "読み込み中"
|
loading: "読み込み中"
|
||||||
no-users: "よく話すユーザーはいません"
|
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:
|
desktop/views/pages/user/user.photos.vue:
|
||||||
title: "フォト"
|
title: "フォト"
|
||||||
loading: "読み込み中"
|
loading: "読み込み中"
|
||||||
@@ -1008,6 +1111,9 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "ミュートする"
|
mute: "ミュートする"
|
||||||
muted: "ミュートしています"
|
muted: "ミュートしています"
|
||||||
unmute: "ミュート解除"
|
unmute: "ミュート解除"
|
||||||
|
block: "ブロックする"
|
||||||
|
unblock: "ブロック解除"
|
||||||
|
block-confirm: "このユーザーをブロックしますか?"
|
||||||
push-to-a-list: "リストに追加"
|
push-to-a-list: "リストに追加"
|
||||||
list-pushed: "{user}を{list}に追加しました。"
|
list-pushed: "{user}を{list}に追加しました。"
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.header.vue:
|
||||||
@@ -1015,6 +1121,10 @@ desktop/views/pages/user/user.header.vue:
|
|||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
followers: "フォロワー"
|
followers: "フォロワー"
|
||||||
is-bot: "このアカウントはBotです"
|
is-bot: "このアカウントはBotです"
|
||||||
|
years-old: "{age}歳"
|
||||||
|
year: "年"
|
||||||
|
month: "月"
|
||||||
|
day: "日"
|
||||||
desktop/views/pages/user/user.timeline.vue:
|
desktop/views/pages/user/user.timeline.vue:
|
||||||
default: "投稿"
|
default: "投稿"
|
||||||
with-replies: "投稿と返信"
|
with-replies: "投稿と返信"
|
||||||
@@ -1044,12 +1154,10 @@ desktop/views/widgets/users.vue:
|
|||||||
refresh: "他を見る"
|
refresh: "他を見る"
|
||||||
no-one: "いません!"
|
no-one: "いません!"
|
||||||
mobile/views/components/drive.vue:
|
mobile/views/components/drive.vue:
|
||||||
drive: "ドライブ"
|
|
||||||
used: "使用中"
|
used: "使用中"
|
||||||
folder-count: "フォルダ"
|
folder-count: "フォルダ"
|
||||||
count-separator: "、"
|
count-separator: "、"
|
||||||
file-count: "ファイル"
|
file-count: "ファイル"
|
||||||
load-more: "もっと読み込む"
|
|
||||||
nothing-in-drive: "ドライブには何もありません"
|
nothing-in-drive: "ドライブには何もありません"
|
||||||
folder-is-empty: "このフォルダは空です"
|
folder-is-empty: "このフォルダは空です"
|
||||||
prompt: "何をしますか?(数字を入力してください): <1 → ファイルをアップロード | 2 → ファイルをURLでアップロード | 3 → フォルダ作成 | 4 → このフォルダ名を変更 | 5 → このフォルダを移動 | 6 → このフォルダを削除>"
|
prompt: "何をしますか?(数字を入力してください): <1 → ファイルをアップロード | 2 → ファイルをURLでアップロード | 3 → フォルダ作成 | 4 → このフォルダ名を変更 | 5 → このフォルダを移動 | 6 → このフォルダを削除>"
|
||||||
@@ -1059,8 +1167,6 @@ mobile/views/components/drive.vue:
|
|||||||
root-move-alert: "現在いる場所はルートで、フォルダではないため移動はできません。移動したいフォルダに移動してからやってください。"
|
root-move-alert: "現在いる場所はルートで、フォルダではないため移動はできません。移動したいフォルダに移動してからやってください。"
|
||||||
url-prompt: "アップロードしたいファイルのURL"
|
url-prompt: "アップロードしたいファイルのURL"
|
||||||
uploading: "アップロードをリクエストしました。アップロードが完了するまで時間がかかる場合があります。"
|
uploading: "アップロードをリクエストしました。アップロードが完了するまで時間がかかる場合があります。"
|
||||||
mobile/views/components/drive-file-detail.vue:
|
|
||||||
rename: "名前を変更"
|
|
||||||
mobile/views/components/drive-file-chooser.vue:
|
mobile/views/components/drive-file-chooser.vue:
|
||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
mobile/views/components/drive-folder-chooser.vue:
|
mobile/views/components/drive-folder-chooser.vue:
|
||||||
@@ -1074,13 +1180,15 @@ mobile/views/components/drive.file-detail.vue:
|
|||||||
hash: "ハッシュ (md5)"
|
hash: "ハッシュ (md5)"
|
||||||
exif: "EXIF"
|
exif: "EXIF"
|
||||||
nsfw: "閲覧注意"
|
nsfw: "閲覧注意"
|
||||||
|
mark-as-sensitive: "閲覧注意に設定"
|
||||||
|
unmark-as-sensitive: "閲覧注意を解除"
|
||||||
mobile/views/components/media-image.vue:
|
mobile/views/components/media-image.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
mobile/views/components/media-video.vue:
|
mobile/views/components/media-video.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
mobile/views/components/follow-button.vue:
|
common/views/components/follow-button.vue:
|
||||||
following: "フォロー中"
|
following: "フォロー中"
|
||||||
follow: "フォロー"
|
follow: "フォロー"
|
||||||
request-pending: "フォロー許可待ち"
|
request-pending: "フォロー許可待ち"
|
||||||
@@ -1112,11 +1220,7 @@ mobile/views/components/note-sub.vue:
|
|||||||
admin: "admin"
|
admin: "admin"
|
||||||
bot: "bot"
|
bot: "bot"
|
||||||
cat: "cat"
|
cat: "cat"
|
||||||
mobile/views/components/notes.vue:
|
|
||||||
failed: "読み込みに失敗しました。"
|
|
||||||
retry: "リトライ"
|
|
||||||
mobile/views/components/notifications.vue:
|
mobile/views/components/notifications.vue:
|
||||||
more: "もっと見る"
|
|
||||||
empty: "ありません!"
|
empty: "ありません!"
|
||||||
mobile/views/components/post-form.vue:
|
mobile/views/components/post-form.vue:
|
||||||
add-visible-user: "ユーザーを追加"
|
add-visible-user: "ユーザーを追加"
|
||||||
@@ -1136,17 +1240,14 @@ mobile/views/components/sub-note-content.vue:
|
|||||||
poll: "アンケート"
|
poll: "アンケート"
|
||||||
mobile/views/components/timeline.vue:
|
mobile/views/components/timeline.vue:
|
||||||
empty: "投稿がありません"
|
empty: "投稿がありません"
|
||||||
load-more: "もっと"
|
|
||||||
mobile/views/components/ui.header.vue:
|
mobile/views/components/ui.header.vue:
|
||||||
welcome-back: "おかえりなさい、"
|
welcome-back: "おかえりなさい、"
|
||||||
adjective: "さん"
|
adjective: "さん"
|
||||||
mobile/views/components/ui.nav.vue:
|
mobile/views/components/ui.nav.vue:
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
messaging: "メッセージ"
|
|
||||||
follow-requests: "フォロー申請"
|
follow-requests: "フォロー申請"
|
||||||
search: "検索"
|
search: "検索"
|
||||||
drive: "ドライブ"
|
|
||||||
favorites: "お気に入り"
|
favorites: "お気に入り"
|
||||||
user-lists: "リスト"
|
user-lists: "リスト"
|
||||||
widgets: "ウィジェット"
|
widgets: "ウィジェット"
|
||||||
@@ -1158,25 +1259,20 @@ mobile/views/components/ui.nav.vue:
|
|||||||
mobile/views/components/user-timeline.vue:
|
mobile/views/components/user-timeline.vue:
|
||||||
no-notes: "このユーザーは投稿していないようです。"
|
no-notes: "このユーザーは投稿していないようです。"
|
||||||
no-notes-with-media: "メディア付き投稿はありません。"
|
no-notes-with-media: "メディア付き投稿はありません。"
|
||||||
load-more: "もっと"
|
|
||||||
mobile/views/components/users-list.vue:
|
mobile/views/components/users-list.vue:
|
||||||
all: "すべて"
|
all: "すべて"
|
||||||
known: "知り合い"
|
known: "知り合い"
|
||||||
load-more: "もっと"
|
|
||||||
mobile/views/pages/favorites.vue:
|
mobile/views/pages/favorites.vue:
|
||||||
title: "お気に入り"
|
title: "お気に入り"
|
||||||
mobile/views/pages/user-lists.vue:
|
mobile/views/pages/user-lists.vue:
|
||||||
title: "リスト"
|
title: "リスト"
|
||||||
enter-list-name: "リスト名を入力してください"
|
enter-list-name: "リスト名を入力してください"
|
||||||
mobile/views/pages/drive.vue:
|
|
||||||
drive: "ドライブ"
|
|
||||||
more: "もっと見る"
|
|
||||||
mobile/views/pages/signup.vue:
|
mobile/views/pages/signup.vue:
|
||||||
lets-start: "📦 始めましょう"
|
lets-start: "📦 始めましょう"
|
||||||
mobile/views/pages/followers.vue:
|
mobile/views/pages/followers.vue:
|
||||||
followers-of: "{}のフォロワー"
|
followers-of: "{name}のフォロワー"
|
||||||
mobile/views/pages/following.vue:
|
mobile/views/pages/following.vue:
|
||||||
following-of: "{}のフォロー"
|
following-of: "{name}のフォロー"
|
||||||
mobile/views/pages/home.vue:
|
mobile/views/pages/home.vue:
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
local: "ローカル"
|
local: "ローカル"
|
||||||
@@ -1185,7 +1281,7 @@ mobile/views/pages/home.vue:
|
|||||||
mentions: "あなた宛て"
|
mentions: "あなた宛て"
|
||||||
messages: "メッセージ"
|
messages: "メッセージ"
|
||||||
mobile/views/pages/tag.vue:
|
mobile/views/pages/tag.vue:
|
||||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
|
||||||
mobile/views/pages/welcome.vue:
|
mobile/views/pages/welcome.vue:
|
||||||
signup: "新規登録"
|
signup: "新規登録"
|
||||||
mobile/views/pages/widgets.vue:
|
mobile/views/pages/widgets.vue:
|
||||||
@@ -1196,11 +1292,7 @@ mobile/views/pages/widgets.vue:
|
|||||||
mobile/views/pages/widgets/activity.vue:
|
mobile/views/pages/widgets/activity.vue:
|
||||||
activity: "アクティビティ"
|
activity: "アクティビティ"
|
||||||
mobile/views/pages/share.vue:
|
mobile/views/pages/share.vue:
|
||||||
share-with: "{}で共有"
|
share-with: "{name}で共有"
|
||||||
mobile/views/pages/messaging.vue:
|
|
||||||
messaging: "メッセージ"
|
|
||||||
mobile/views/pages/messaging-room.vue:
|
|
||||||
messaging: "メッセージ"
|
|
||||||
mobile/views/pages/received-follow-requests.vue:
|
mobile/views/pages/received-follow-requests.vue:
|
||||||
title: "フォロー申請"
|
title: "フォロー申請"
|
||||||
accept: "承認"
|
accept: "承認"
|
||||||
@@ -1214,27 +1306,9 @@ mobile/views/pages/notifications.vue:
|
|||||||
read-all: "すべての通知を既読にしますか?"
|
read-all: "すべての通知を既読にしますか?"
|
||||||
mobile/views/pages/games/reversi.vue:
|
mobile/views/pages/games/reversi.vue:
|
||||||
reversi: "リバーシ"
|
reversi: "リバーシ"
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
|
||||||
title: "プロフィール"
|
|
||||||
name: "名前"
|
|
||||||
account: "アカウント"
|
|
||||||
location: "場所"
|
|
||||||
description: "自己紹介"
|
|
||||||
birthday: "誕生日"
|
|
||||||
avatar: "アイコン"
|
|
||||||
banner: "バナー"
|
|
||||||
is-cat: "このアカウントはCatです"
|
|
||||||
is-locked: "フォローを承認制にする"
|
|
||||||
advanced: "その他"
|
|
||||||
privacy: "プライバシー"
|
|
||||||
save: "保存"
|
|
||||||
saved: "プロフィールを保存しました"
|
|
||||||
uploading: "アップロード中"
|
|
||||||
upload-failed: "アップロードに失敗しました"
|
|
||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
search: "検索"
|
search: "検索"
|
||||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
not-found: "「{q}」に関する投稿は見つかりませんでした。"
|
||||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
|
||||||
mobile/views/pages/selectdrive.vue:
|
mobile/views/pages/selectdrive.vue:
|
||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
mobile/views/pages/settings.vue:
|
mobile/views/pages/settings.vue:
|
||||||
@@ -1273,6 +1347,14 @@ mobile/views/pages/settings.vue:
|
|||||||
twitter-connect: "Twitterアカウントに接続する"
|
twitter-connect: "Twitterアカウントに接続する"
|
||||||
twitter-reconnect: "再接続する"
|
twitter-reconnect: "再接続する"
|
||||||
twitter-disconnect: "切断する"
|
twitter-disconnect: "切断する"
|
||||||
|
github: "GitHub連携"
|
||||||
|
github-connect: "GitHubアカウントに接続する"
|
||||||
|
github-reconnect: "再接続する"
|
||||||
|
github-disconnect: "切断する"
|
||||||
|
discord: "Discord連携"
|
||||||
|
discord-connect: "Discordアカウントに接続する"
|
||||||
|
discord-reconnect: "再接続する"
|
||||||
|
discord-disconnect: "切断する"
|
||||||
update: "Misskey Update"
|
update: "Misskey Update"
|
||||||
version: "バージョン:"
|
version: "バージョン:"
|
||||||
latest-version: "最新のバージョン:"
|
latest-version: "最新のバージョン:"
|
||||||
@@ -1286,6 +1368,8 @@ mobile/views/pages/settings.vue:
|
|||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
sound: "サウンド"
|
sound: "サウンド"
|
||||||
enable-sounds: "サウンドを有効にする"
|
enable-sounds: "サウンドを有効にする"
|
||||||
|
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
|
||||||
|
password: "パスワード"
|
||||||
mobile/views/pages/user.vue:
|
mobile/views/pages/user.vue:
|
||||||
follows-you: "フォローされています"
|
follows-you: "フォローされています"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@@ -1295,8 +1379,11 @@ mobile/views/pages/user.vue:
|
|||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
media: "メディア"
|
media: "メディア"
|
||||||
is-suspended: "このユーザーは凍結されています。"
|
is-suspended: "このユーザーは凍結されています。"
|
||||||
is-remote: "このユーザーはリモートユーザーです。"
|
mute: "ミュート"
|
||||||
view-remote: "正確な情報を見る"
|
unmute: "ミュート解除"
|
||||||
|
block: "ブロック"
|
||||||
|
unblock: "ブロック解除"
|
||||||
|
years-old: "{age}歳"
|
||||||
mobile/views/pages/user/home.vue:
|
mobile/views/pages/user/home.vue:
|
||||||
recent-notes: "最近の投稿"
|
recent-notes: "最近の投稿"
|
||||||
images: "画像"
|
images: "画像"
|
||||||
@@ -1307,17 +1394,46 @@ mobile/views/pages/user/home.vue:
|
|||||||
followers-you-know: "知り合いのフォロワー"
|
followers-you-know: "知り合いのフォロワー"
|
||||||
last-used-at: "最終ログイン"
|
last-used-at: "最終ログイン"
|
||||||
mobile/views/pages/user/home.followers-you-know.vue:
|
mobile/views/pages/user/home.followers-you-know.vue:
|
||||||
loading: "読み込み中"
|
|
||||||
no-users: "知り合いのユーザーはいません"
|
no-users: "知り合いのユーザーはいません"
|
||||||
mobile/views/pages/user/home.friends.vue:
|
mobile/views/pages/user/home.friends.vue:
|
||||||
loading: "読み込み中"
|
|
||||||
no-users: "よく会話するユーザーはいません"
|
no-users: "よく会話するユーザーはいません"
|
||||||
mobile/views/pages/user/home.notes.vue:
|
mobile/views/pages/user/home.notes.vue:
|
||||||
loading: "読み込み中"
|
|
||||||
no-notes: "投稿はありません"
|
no-notes: "投稿はありません"
|
||||||
mobile/views/pages/user/home.photos.vue:
|
mobile/views/pages/user/home.photos.vue:
|
||||||
loading: "読み込み中"
|
|
||||||
no-photos: "写真はありません"
|
no-photos: "写真はありません"
|
||||||
|
deck:
|
||||||
|
widgets: "ウィジェット"
|
||||||
|
home: "ホーム"
|
||||||
|
local: "ローカル"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
|
hashtag: "ハッシュタグ"
|
||||||
|
global: "グローバル"
|
||||||
|
mentions: "あなた宛て"
|
||||||
|
direct: "ダイレクト投稿"
|
||||||
|
notifications: "通知"
|
||||||
|
list: "リスト"
|
||||||
|
swap-left: "左に移動"
|
||||||
|
swap-right: "右に移動"
|
||||||
|
swap-up: "上に移動"
|
||||||
|
swap-down: "下に移動"
|
||||||
|
remove: "カラムを削除"
|
||||||
|
add-column: "カラムを追加"
|
||||||
|
rename: "名前を変更"
|
||||||
|
stack-left: "左に重ねる"
|
||||||
|
pop-right: "右に出す"
|
||||||
|
deck/deck.tl-column.vue:
|
||||||
|
is-media-only: "メディア投稿のみ"
|
||||||
|
is-media-view: "メディアビュー"
|
||||||
|
edit: "オプション"
|
||||||
|
deck/deck.user-column.vue:
|
||||||
|
posts: "投稿"
|
||||||
|
following: "フォロー"
|
||||||
|
followers: "フォロワー"
|
||||||
|
images: "画像"
|
||||||
|
activity: "アクティビティ"
|
||||||
|
timeline: "タイムライン"
|
||||||
|
pinned-notes: "ピン留めされた投稿"
|
||||||
|
push-to-a-list: "リストに追加"
|
||||||
docs:
|
docs:
|
||||||
edit-this-page-on-github: "間違いや改善点を見つけましたか?"
|
edit-this-page-on-github: "間違いや改善点を見つけましたか?"
|
||||||
edit-this-page-on-github-link: "このページをGitHubで編集"
|
edit-this-page-on-github-link: "このページをGitHubで編集"
|
||||||
@@ -1342,3 +1458,29 @@ docs:
|
|||||||
description: "説明"
|
description: "説明"
|
||||||
dev/views/index.vue:
|
dev/views/index.vue:
|
||||||
manage-apps: "アプリの管理"
|
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
109
package.json
109
package.json
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"name": "misskey",
|
"name": "misskey",
|
||||||
"author": "syuilo <i@syuilo.com>",
|
"author": "syuilo <i@syuilo.com>",
|
||||||
"version": "10.13.0",
|
"version": "10.54.0",
|
||||||
"clientVersion": "1.0.10517",
|
"clientVersion": "2.0.11894",
|
||||||
"codename": "nighthike",
|
"codename": "nighthike",
|
||||||
"main": "./built/index.js",
|
"main": "./built/index.js",
|
||||||
"private": true,
|
"private": true,
|
||||||
@@ -20,30 +20,33 @@
|
|||||||
"format": "gulp format"
|
"format": "gulp format"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@fortawesome/fontawesome-svg-core": "1.2.4",
|
"@fortawesome/fontawesome-svg-core": "1.2.8",
|
||||||
"@fortawesome/free-brands-svg-icons": "5.3.1",
|
"@fortawesome/free-brands-svg-icons": "5.5.0",
|
||||||
"@fortawesome/free-regular-svg-icons": "5.3.1",
|
"@fortawesome/free-regular-svg-icons": "5.5.0",
|
||||||
"@fortawesome/free-solid-svg-icons": "5.3.1",
|
"@fortawesome/free-solid-svg-icons": "5.5.0",
|
||||||
|
"@fortawesome/vue-fontawesome": "0.1.2",
|
||||||
"@koa/cors": "2.2.2",
|
"@koa/cors": "2.2.2",
|
||||||
"@prezzemolo/rap": "0.1.2",
|
"@prezzemolo/rap": "0.1.2",
|
||||||
"@prezzemolo/zip": "0.0.3",
|
"@prezzemolo/zip": "0.0.3",
|
||||||
"@types/bcryptjs": "2.4.2",
|
"@types/bcryptjs": "2.4.2",
|
||||||
|
"@types/chai-http": "3.0.5",
|
||||||
"@types/dateformat": "1.0.1",
|
"@types/dateformat": "1.0.1",
|
||||||
"@types/debug": "0.0.31",
|
"@types/debug": "0.0.31",
|
||||||
"@types/deep-equal": "1.0.1",
|
"@types/deep-equal": "1.0.1",
|
||||||
"@types/double-ended-queue": "2.1.0",
|
"@types/double-ended-queue": "2.1.0",
|
||||||
"@types/elasticsearch": "5.0.27",
|
"@types/elasticsearch": "5.0.28",
|
||||||
"@types/file-type": "5.2.1",
|
"@types/file-type": "5.2.1",
|
||||||
"@types/gulp": "3.8.36",
|
"@types/gulp": "3.8.36",
|
||||||
"@types/gulp-htmlmin": "1.3.32",
|
"@types/gulp-htmlmin": "1.3.32",
|
||||||
"@types/gulp-mocha": "0.0.32",
|
"@types/gulp-mocha": "0.0.32",
|
||||||
"@types/gulp-rename": "0.0.33",
|
"@types/gulp-rename": "0.0.33",
|
||||||
"@types/gulp-replace": "0.0.31",
|
"@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/gulp-util": "3.0.34",
|
||||||
"@types/is-root": "1.0.0",
|
"@types/is-root": "1.0.0",
|
||||||
"@types/is-url": "1.2.28",
|
"@types/is-url": "1.2.28",
|
||||||
"@types/js-yaml": "3.11.2",
|
"@types/js-yaml": "3.11.2",
|
||||||
|
"@types/katex": "0.5.0",
|
||||||
"@types/koa": "2.0.46",
|
"@types/koa": "2.0.46",
|
||||||
"@types/koa-bodyparser": "5.0.1",
|
"@types/koa-bodyparser": "5.0.1",
|
||||||
"@types/koa-compress": "2.0.8",
|
"@types/koa-compress": "2.0.8",
|
||||||
@@ -51,66 +54,67 @@
|
|||||||
"@types/koa-logger": "3.1.1",
|
"@types/koa-logger": "3.1.1",
|
||||||
"@types/koa-mount": "3.0.1",
|
"@types/koa-mount": "3.0.1",
|
||||||
"@types/koa-multer": "1.0.0",
|
"@types/koa-multer": "1.0.0",
|
||||||
"@types/koa-router": "7.0.32",
|
"@types/koa-router": "7.0.33",
|
||||||
"@types/koa-send": "4.1.1",
|
"@types/koa-send": "4.1.1",
|
||||||
"@types/koa-views": "2.0.3",
|
"@types/koa-views": "2.0.3",
|
||||||
"@types/koa__cors": "2.2.3",
|
"@types/koa__cors": "2.2.3",
|
||||||
"@types/minio": "7.0.0",
|
"@types/minio": "7.0.1",
|
||||||
"@types/mkdirp": "0.5.2",
|
"@types/mkdirp": "0.5.2",
|
||||||
"@types/mocha": "5.2.3",
|
"@types/mocha": "5.2.5",
|
||||||
"@types/mongodb": "3.1.12",
|
"@types/mongodb": "3.1.14",
|
||||||
"@types/ms": "0.7.30",
|
"@types/ms": "0.7.30",
|
||||||
"@types/node": "10.11.7",
|
"@types/node": "10.12.2",
|
||||||
|
"@types/oauth": "0.9.1",
|
||||||
"@types/portscanner": "2.1.0",
|
"@types/portscanner": "2.1.0",
|
||||||
"@types/pug": "2.0.4",
|
"@types/pug": "2.0.4",
|
||||||
"@types/qrcode": "1.3.0",
|
"@types/qrcode": "1.3.0",
|
||||||
"@types/ratelimiter": "2.1.28",
|
"@types/ratelimiter": "2.1.28",
|
||||||
"@types/redis": "2.8.7",
|
"@types/redis": "2.8.7",
|
||||||
"@types/request": "2.47.1",
|
"@types/request": "2.48.1",
|
||||||
"@types/request-promise-native": "1.0.15",
|
"@types/request-promise-native": "1.0.15",
|
||||||
"@types/rimraf": "2.0.2",
|
"@types/rimraf": "2.0.2",
|
||||||
"@types/seedrandom": "2.4.27",
|
"@types/seedrandom": "2.4.27",
|
||||||
"@types/sharp": "0.17.10",
|
"@types/sharp": "0.21.0",
|
||||||
"@types/showdown": "1.7.5",
|
"@types/showdown": "1.7.5",
|
||||||
"@types/single-line-log": "1.1.0",
|
"@types/speakeasy": "2.0.3",
|
||||||
"@types/speakeasy": "2.0.2",
|
|
||||||
"@types/systeminformation": "3.23.0",
|
"@types/systeminformation": "3.23.0",
|
||||||
"@types/tinycolor2": "1.4.1",
|
"@types/tinycolor2": "1.4.1",
|
||||||
"@types/tmp": "0.0.33",
|
"@types/tmp": "0.0.33",
|
||||||
"@types/uuid": "3.4.4",
|
"@types/uuid": "3.4.4",
|
||||||
"@types/webpack": "4.4.16",
|
"@types/webpack": "4.4.18",
|
||||||
"@types/webpack-stream": "3.2.10",
|
"@types/webpack-stream": "3.2.10",
|
||||||
"@types/websocket": "0.0.40",
|
"@types/websocket": "0.0.40",
|
||||||
"@types/ws": "6.0.1",
|
"@types/ws": "6.0.1",
|
||||||
"animejs": "2.2.0",
|
"animejs": "2.2.0",
|
||||||
"autobind-decorator": "2.1.0",
|
"apexcharts": "2.2.0",
|
||||||
|
"autobind-decorator": "2.2.1",
|
||||||
"autosize": "4.0.2",
|
"autosize": "4.0.2",
|
||||||
"autwh": "0.1.0",
|
"autwh": "0.1.0",
|
||||||
"bcryptjs": "2.4.3",
|
"bcryptjs": "2.4.3",
|
||||||
"bee-queue": "1.2.2",
|
"bee-queue": "1.2.2",
|
||||||
"bootstrap-vue": "2.0.0-rc.11",
|
"bootstrap-vue": "2.0.0-rc.11",
|
||||||
"cafy": "11.3.0",
|
"cafy": "12.0.0",
|
||||||
|
"chai": "4.2.0",
|
||||||
|
"chai-http": "4.2.0",
|
||||||
"chalk": "2.4.1",
|
"chalk": "2.4.1",
|
||||||
"chart.js": "2.7.2",
|
|
||||||
"commander": "2.19.0",
|
"commander": "2.19.0",
|
||||||
"crc-32": "1.2.0",
|
"crc-32": "1.2.0",
|
||||||
"css-loader": "1.0.0",
|
"css-loader": "1.0.1",
|
||||||
|
"cssnano": "4.1.7",
|
||||||
"dateformat": "3.0.3",
|
"dateformat": "3.0.3",
|
||||||
"debug": "4.1.0",
|
"debug": "4.1.0",
|
||||||
"deep-equal": "1.0.1",
|
"deep-equal": "1.0.1",
|
||||||
"deepcopy": "0.6.3",
|
"deepcopy": "0.6.3",
|
||||||
"diskusage": "0.2.5",
|
"diskusage": "0.2.5",
|
||||||
"dompurify": "1.0.5",
|
|
||||||
"double-ended-queue": "2.1.0-0",
|
"double-ended-queue": "2.1.0-0",
|
||||||
"elasticsearch": "15.1.1",
|
"elasticsearch": "15.2.0",
|
||||||
"emojilib": "2.3.0",
|
"emojilib": "2.3.0",
|
||||||
"escape-regexp": "0.0.1",
|
"escape-regexp": "0.0.1",
|
||||||
"eslint": "5.0.1",
|
"eslint": "5.8.0",
|
||||||
"eslint-plugin-vue": "4.7.1",
|
"eslint-plugin-vue": "4.7.1",
|
||||||
"eventemitter3": "3.1.0",
|
"eventemitter3": "3.1.0",
|
||||||
"exif-js": "2.3.0",
|
|
||||||
"file-loader": "2.0.0",
|
"file-loader": "2.0.0",
|
||||||
"file-type": "10.0.0",
|
"file-type": "10.4.0",
|
||||||
"fuckadblock": "3.2.1",
|
"fuckadblock": "3.2.1",
|
||||||
"gulp": "3.9.1",
|
"gulp": "3.9.1",
|
||||||
"gulp-cssnano": "2.1.3",
|
"gulp-cssnano": "2.1.3",
|
||||||
@@ -126,18 +130,19 @@
|
|||||||
"gulp-typescript": "4.0.2",
|
"gulp-typescript": "4.0.2",
|
||||||
"gulp-uglify": "3.0.1",
|
"gulp-uglify": "3.0.1",
|
||||||
"gulp-util": "3.0.8",
|
"gulp-util": "3.0.8",
|
||||||
|
"gulp-yaml": "2.0.2",
|
||||||
"hard-source-webpack-plugin": "0.12.0",
|
"hard-source-webpack-plugin": "0.12.0",
|
||||||
"highlight.js": "9.12.0",
|
"html-minifier": "3.5.21",
|
||||||
"html-minifier": "3.5.20",
|
|
||||||
"http-signature": "1.2.0",
|
"http-signature": "1.2.0",
|
||||||
"insert-text-at-cursor": "0.1.1",
|
"insert-text-at-cursor": "0.1.1",
|
||||||
"is-root": "2.0.0",
|
"is-root": "2.0.0",
|
||||||
"is-url": "1.2.4",
|
"is-url": "1.2.4",
|
||||||
"js-yaml": "3.12.0",
|
"js-yaml": "3.12.0",
|
||||||
"jsdom": "12.2.0",
|
"jsdom": "13.0.0",
|
||||||
"json5": "2.1.0",
|
"json5": "2.1.0",
|
||||||
"json5-loader": "1.0.1",
|
"json5-loader": "1.0.1",
|
||||||
"koa": "2.5.1",
|
"katex": "0.10.0",
|
||||||
|
"koa": "2.6.1",
|
||||||
"koa-bodyparser": "4.2.1",
|
"koa-bodyparser": "4.2.1",
|
||||||
"koa-compress": "3.0.0",
|
"koa-compress": "3.0.0",
|
||||||
"koa-favicon": "2.0.1",
|
"koa-favicon": "2.0.1",
|
||||||
@@ -150,14 +155,12 @@
|
|||||||
"koa-slow": "2.1.0",
|
"koa-slow": "2.1.0",
|
||||||
"koa-views": "6.1.4",
|
"koa-views": "6.1.4",
|
||||||
"loader-utils": "1.1.0",
|
"loader-utils": "1.1.0",
|
||||||
"lodash.assign": "4.2.0",
|
|
||||||
"mecab-async": "0.1.2",
|
|
||||||
"merge-options": "1.0.1",
|
|
||||||
"minio": "7.0.1",
|
"minio": "7.0.1",
|
||||||
"mkdirp": "0.5.1",
|
"mkdirp": "0.5.1",
|
||||||
"mocha": "5.2.0",
|
"mocha": "5.2.0",
|
||||||
"moji": "0.5.1",
|
"moji": "0.5.1",
|
||||||
"mongodb": "3.1.1",
|
"moment": "2.22.2",
|
||||||
|
"mongodb": "3.1.9",
|
||||||
"monk": "6.0.6",
|
"monk": "6.0.6",
|
||||||
"ms": "2.1.1",
|
"ms": "2.1.1",
|
||||||
"nan": "2.11.1",
|
"nan": "2.11.1",
|
||||||
@@ -168,15 +171,17 @@
|
|||||||
"os-utils": "0.0.14",
|
"os-utils": "0.0.14",
|
||||||
"parse5": "5.1.0",
|
"parse5": "5.1.0",
|
||||||
"portscanner": "2.2.0",
|
"portscanner": "2.2.0",
|
||||||
|
"postcss-loader": "3.0.0",
|
||||||
"progress-bar-webpack-plugin": "1.11.0",
|
"progress-bar-webpack-plugin": "1.11.0",
|
||||||
"promise-limit": "2.7.0",
|
"promise-limit": "2.7.0",
|
||||||
"promise-sequential": "1.1.1",
|
"promise-sequential": "1.1.1",
|
||||||
"pug": "2.0.3",
|
"pug": "2.0.3",
|
||||||
"punycode": "2.1.1",
|
"punycode": "2.1.1",
|
||||||
"qrcode": "1.3.0",
|
"qrcode": "1.3.2",
|
||||||
|
"randomcolor": "0.5.3",
|
||||||
"ratelimiter": "3.2.0",
|
"ratelimiter": "3.2.0",
|
||||||
"recaptcha-promise": "0.1.3",
|
"recaptcha-promise": "0.1.3",
|
||||||
"reconnecting-websocket": "4.1.8",
|
"reconnecting-websocket": "4.1.10",
|
||||||
"redis": "2.8.0",
|
"redis": "2.8.0",
|
||||||
"request": "2.88.0",
|
"request": "2.88.0",
|
||||||
"request-promise-native": "1.0.5",
|
"request-promise-native": "1.0.5",
|
||||||
@@ -184,43 +189,42 @@
|
|||||||
"rimraf": "2.6.2",
|
"rimraf": "2.6.2",
|
||||||
"rndstr": "1.0.0",
|
"rndstr": "1.0.0",
|
||||||
"s-age": "1.1.2",
|
"s-age": "1.1.2",
|
||||||
"sass-loader": "7.1.0",
|
|
||||||
"seedrandom": "2.4.4",
|
"seedrandom": "2.4.4",
|
||||||
"sharp": "0.21.0",
|
"sharp": "0.21.0",
|
||||||
"showdown": "1.8.6",
|
"showdown": "1.9.0",
|
||||||
"showdown-highlightjs-extension": "0.1.2",
|
"showdown-highlightjs-extension": "0.1.2",
|
||||||
"single-line-log": "1.1.2",
|
|
||||||
"speakeasy": "2.0.0",
|
"speakeasy": "2.0.0",
|
||||||
"stringz": "1.0.0",
|
"stringz": "1.0.0",
|
||||||
"style-loader": "0.23.1",
|
"style-loader": "0.23.1",
|
||||||
"stylus": "0.54.5",
|
"stylus": "0.54.5",
|
||||||
"stylus-loader": "3.0.2",
|
"stylus-loader": "3.0.2",
|
||||||
"summaly": "2.2.0",
|
"summaly": "2.2.0",
|
||||||
"systeminformation": "3.45.7",
|
"systeminformation": "3.47.0",
|
||||||
"syuilo-password-strength": "0.0.1",
|
"syuilo-password-strength": "0.0.1",
|
||||||
|
"terser-webpack-plugin": "1.1.0",
|
||||||
"textarea-caret": "3.1.0",
|
"textarea-caret": "3.1.0",
|
||||||
"tinycolor2": "1.4.1",
|
"tinycolor2": "1.4.1",
|
||||||
"tmp": "0.0.33",
|
"tmp": "0.0.33",
|
||||||
"ts-loader": "4.4.1",
|
"ts-loader": "5.3.0",
|
||||||
"ts-node": "7.0.1",
|
"ts-node": "7.0.1",
|
||||||
"tslint": "5.10.0",
|
"tslint": "5.10.0",
|
||||||
"typescript": "2.9.2",
|
"typescript": "3.1.6",
|
||||||
"typescript-eslint-parser": "20.0.0",
|
"typescript-eslint-parser": "21.0.0",
|
||||||
"uglify-es": "3.3.9",
|
"uglify-es": "3.3.9",
|
||||||
"url-loader": "1.1.2",
|
"url-loader": "1.1.2",
|
||||||
"uuid": "3.3.2",
|
"uuid": "3.3.2",
|
||||||
"v-animate-css": "0.0.2",
|
"v-animate-css": "0.0.2",
|
||||||
"vue": "2.5.17",
|
"vue": "2.5.17",
|
||||||
"vue-chartjs": "3.4.0",
|
|
||||||
"vue-color": "2.7.0",
|
"vue-color": "2.7.0",
|
||||||
|
"vue-content-loading": "1.5.3",
|
||||||
"vue-cropperjs": "2.2.2",
|
"vue-cropperjs": "2.2.2",
|
||||||
|
"vue-i18n": "8.3.1",
|
||||||
"vue-js-modal": "1.3.26",
|
"vue-js-modal": "1.3.26",
|
||||||
"vue-json-tree-view": "2.1.4",
|
|
||||||
"vue-loader": "15.4.2",
|
"vue-loader": "15.4.2",
|
||||||
|
"vue-marquee-text-component": "1.1.0",
|
||||||
"vue-router": "3.0.1",
|
"vue-router": "3.0.1",
|
||||||
"vue-style-loader": "4.1.2",
|
"vue-style-loader": "4.1.2",
|
||||||
"vue-svg-inline-loader": "1.2.0",
|
"vue-svg-inline-loader": "1.2.1",
|
||||||
"vue-sweetalert2": "1.5.5",
|
|
||||||
"vue-template-compiler": "2.5.17",
|
"vue-template-compiler": "2.5.17",
|
||||||
"vuedraggable": "2.16.0",
|
"vuedraggable": "2.16.0",
|
||||||
"vuewordcloud": "18.7.11",
|
"vuewordcloud": "18.7.11",
|
||||||
@@ -228,17 +232,10 @@
|
|||||||
"vuex-persistedstate": "2.5.4",
|
"vuex-persistedstate": "2.5.4",
|
||||||
"web-push": "3.3.3",
|
"web-push": "3.3.3",
|
||||||
"webfinger.js": "2.6.6",
|
"webfinger.js": "2.6.6",
|
||||||
"webpack": "4.20.2",
|
"webpack": "4.25.1",
|
||||||
"webpack-cli": "3.1.2",
|
"webpack-cli": "3.1.2",
|
||||||
"websocket": "1.0.28",
|
"websocket": "1.0.28",
|
||||||
"ws": "6.1.0",
|
"ws": "6.1.0",
|
||||||
"xev": "2.0.1"
|
"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();
|
||||||
350
src/chart/index.ts
Normal file
350
src/chart/index.ts
Normal file
@@ -0,0 +1,350 @@
|
|||||||
|
/**
|
||||||
|
* チャートエンジン
|
||||||
|
*/
|
||||||
|
|
||||||
|
import * as moment from 'moment';
|
||||||
|
const nestedProperty = require('nested-property');
|
||||||
|
import autobind from 'autobind-decorator';
|
||||||
|
import * as mongo from 'mongodb';
|
||||||
|
import db from '../db/mongodb';
|
||||||
|
import { ICollection } from 'monk';
|
||||||
|
|
||||||
|
const utc = moment.utc;
|
||||||
|
|
||||||
|
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 = moment().utc();
|
||||||
|
|
||||||
|
const y = now.year();
|
||||||
|
const m = now.month();
|
||||||
|
const d = now.date();
|
||||||
|
const h = now.hour();
|
||||||
|
|
||||||
|
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' ? utc([y, m, d]) :
|
||||||
|
span == 'hour' ? utc([y, m, d, h]) :
|
||||||
|
null;
|
||||||
|
|
||||||
|
// 現在(今日または今のHour)のログ
|
||||||
|
const currentLog = await this.collection.findOne({
|
||||||
|
group: group,
|
||||||
|
span: span,
|
||||||
|
date: current.toDate()
|
||||||
|
});
|
||||||
|
|
||||||
|
// ログがあればそれを返して終了
|
||||||
|
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.toDate(),
|
||||||
|
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' ? utc([y, m, d]).subtract(range, 'days') :
|
||||||
|
span == 'hour' ? utc([y, m, d, h]).subtract(range, 'hours') :
|
||||||
|
null;
|
||||||
|
|
||||||
|
// ログ取得
|
||||||
|
let logs = await this.collection.find({
|
||||||
|
group: group,
|
||||||
|
span: span,
|
||||||
|
date: {
|
||||||
|
$gte: gt.toDate()
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
sort: {
|
||||||
|
date: -1
|
||||||
|
},
|
||||||
|
fields: {
|
||||||
|
_id: 0
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 要求された範囲にログがひとつもなかったら
|
||||||
|
if (logs.length == 0) {
|
||||||
|
// もっとも新しいログを持ってくる
|
||||||
|
// (すくなくともひとつログが無いと隙間埋めできないため)
|
||||||
|
const recentLog = await this.collection.findOne({
|
||||||
|
group: group,
|
||||||
|
span: span
|
||||||
|
}, {
|
||||||
|
sort: {
|
||||||
|
date: -1
|
||||||
|
},
|
||||||
|
fields: {
|
||||||
|
_id: 0
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (recentLog) {
|
||||||
|
logs = [recentLog];
|
||||||
|
}
|
||||||
|
|
||||||
|
// 要求された範囲の最も古い箇所に位置するログが存在しなかったら
|
||||||
|
} else if (!utc(logs[logs.length - 1].date).isSame(gt)) {
|
||||||
|
// 要求された範囲の最も古い箇所時点での最も新しいログを持ってきて末尾に追加する
|
||||||
|
// (隙間埋めできないため)
|
||||||
|
const outdatedLog = await this.collection.findOne({
|
||||||
|
group: group,
|
||||||
|
span: span,
|
||||||
|
date: {
|
||||||
|
$lt: gt.toDate()
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
sort: {
|
||||||
|
date: -1
|
||||||
|
},
|
||||||
|
fields: {
|
||||||
|
_id: 0
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (outdatedLog) {
|
||||||
|
logs.push(outdatedLog);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 整形
|
||||||
|
for (let i = (range - 1); i >= 0; i--) {
|
||||||
|
const current =
|
||||||
|
span == 'day' ? utc([y, m, d]).subtract(i, 'days') :
|
||||||
|
span == 'hour' ? utc([y, m, d, h]).subtract(i, 'hours') :
|
||||||
|
null;
|
||||||
|
|
||||||
|
const log = logs.find(l => utc(l.date).isSame(current));
|
||||||
|
|
||||||
|
if (log) {
|
||||||
|
promisedChart.unshift(Promise.resolve(log.data));
|
||||||
|
} else {
|
||||||
|
// 隙間埋め
|
||||||
|
const latest = logs.find(l => utc(l.date).isBefore(current));
|
||||||
|
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();
|
||||||
150
src/client/app/admin/assets/header-icon.svg
Normal file
150
src/client/app/admin/assets/header-icon.svg
Normal file
@@ -0,0 +1,150 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="512"
|
||||||
|
height="512"
|
||||||
|
viewBox="0 0 135.46667 135.46667"
|
||||||
|
version="1.1"
|
||||||
|
id="svg8"
|
||||||
|
inkscape:version="0.92.1 r15371"
|
||||||
|
sodipodi:docname="header-icon.dark.svg"
|
||||||
|
inkscape:export-filename="C:\Users\syuilo\projects\misskey\assets\favicon\32.png"
|
||||||
|
inkscape:export-xdpi="6"
|
||||||
|
inkscape:export-ydpi="6">
|
||||||
|
<defs
|
||||||
|
id="defs2">
|
||||||
|
<inkscape:path-effect
|
||||||
|
effect="simplify"
|
||||||
|
id="path-effect5115"
|
||||||
|
is_visible="true"
|
||||||
|
steps="1"
|
||||||
|
threshold="0.000408163"
|
||||||
|
smooth_angles="360"
|
||||||
|
helper_size="0"
|
||||||
|
simplify_individual_paths="false"
|
||||||
|
simplify_just_coalesce="false"
|
||||||
|
simplifyindividualpaths="false"
|
||||||
|
simplifyJustCoalesce="false" />
|
||||||
|
<inkscape:path-effect
|
||||||
|
effect="simplify"
|
||||||
|
id="path-effect5111"
|
||||||
|
is_visible="true"
|
||||||
|
steps="1"
|
||||||
|
threshold="0.000408163"
|
||||||
|
smooth_angles="360"
|
||||||
|
helper_size="0"
|
||||||
|
simplify_individual_paths="false"
|
||||||
|
simplify_just_coalesce="false"
|
||||||
|
simplifyindividualpaths="false"
|
||||||
|
simplifyJustCoalesce="false" />
|
||||||
|
<inkscape:path-effect
|
||||||
|
effect="simplify"
|
||||||
|
id="path-effect5104"
|
||||||
|
is_visible="true"
|
||||||
|
steps="1"
|
||||||
|
threshold="0.000408163"
|
||||||
|
smooth_angles="360"
|
||||||
|
helper_size="0"
|
||||||
|
simplify_individual_paths="false"
|
||||||
|
simplify_just_coalesce="false"
|
||||||
|
simplifyindividualpaths="false"
|
||||||
|
simplifyJustCoalesce="false" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="1.4142136"
|
||||||
|
inkscape:cx="114.309"
|
||||||
|
inkscape:cy="251.50613"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="g4502"
|
||||||
|
showgrid="true"
|
||||||
|
units="px"
|
||||||
|
inkscape:snap-bbox="true"
|
||||||
|
inkscape:bbox-nodes="true"
|
||||||
|
inkscape:snap-bbox-edge-midpoints="false"
|
||||||
|
inkscape:snap-smooth-nodes="true"
|
||||||
|
inkscape:snap-center="true"
|
||||||
|
inkscape:snap-page="true"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1027"
|
||||||
|
inkscape:window-x="-8"
|
||||||
|
inkscape:window-y="1072"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:snap-object-midpoints="true"
|
||||||
|
inkscape:snap-midpoints="true"
|
||||||
|
inkscape:object-paths="true"
|
||||||
|
fit-margin-top="0"
|
||||||
|
fit-margin-left="0"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-bottom="0"
|
||||||
|
objecttolerance="1"
|
||||||
|
guidetolerance="1"
|
||||||
|
inkscape:snap-nodes="false"
|
||||||
|
inkscape:snap-others="false">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid4504"
|
||||||
|
spacingx="4.2333334"
|
||||||
|
spacingy="4.2333334"
|
||||||
|
empcolor="#ff3fff"
|
||||||
|
empopacity="0.25098039"
|
||||||
|
empspacing="4" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<metadata
|
||||||
|
id="metadata5">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="レイヤー 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(-30.809093,-111.78601)">
|
||||||
|
<g
|
||||||
|
id="g4502"
|
||||||
|
transform="matrix(1.096096,0,0,1.096096,-2.960633,-44.023579)">
|
||||||
|
<g
|
||||||
|
style="fill-opacity:1"
|
||||||
|
transform="translate(-1.3333333e-6,-1.3439941e-6)"
|
||||||
|
id="g5125">
|
||||||
|
<g
|
||||||
|
transform="matrix(0.91391326,0,0,0.91391326,7.9719907,17.595761)"
|
||||||
|
id="text4489"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:141.03404236px;line-height:476.69509888px;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';letter-spacing:0px;word-spacing:0px;fill-opacity:1;stroke:none;stroke-width:0.28950602px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
aria-label="Mi">
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="zccssscssccscczzzccsccsscscsccz"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path5210"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';fill-opacity:1;stroke-width:0.28950602px"
|
||||||
|
d="m 75.196381,231.17126 c -5.855419,0.0202 -10.885068,-3.50766 -13.2572,-7.61584 -1.266603,-1.79454 -3.772419,-2.43291 -3.807919,0 v 11.2332 c 0,4.51309 -1.645397,8.41504 -4.936191,11.70583 -3.196772,3.19677 -7.098714,4.79516 -11.705826,4.79516 -4.513089,0 -8.415031,-1.59839 -11.705825,-4.79516 -3.196772,-3.29079 -4.795158,-7.19274 -4.795158,-11.70583 v -61.7729 c 0,-3.47884 0.987238,-6.6286 2.961715,-9.44928 2.068499,-2.91471 4.701135,-4.9362 7.897906,-6.06447 1.786431,-0.65816 3.666885,-0.98724 5.641362,-0.98724 5.077225,0 9.308247,1.97448 12.693064,5.92343 1.786431,1.97448 2.820681,3.00873 3.102749,3.10275 0,0 13.408119,16.21319 13.78421,16.49526 0.376091,0.28206 1.480789,2.43848 4.127113,2.43848 2.646324,0 3.89218,-2.15642 4.26827,-2.43848 0.376091,-0.28207 13.784088,-16.49526 13.784088,-16.49526 0.09402,0.094 1.081261,-0.94022 2.961715,-3.10275 3.478837,-3.94895 7.756866,-5.92343 12.834096,-5.92343 1.88045,0 3.76091,0.32908 5.64136,0.98724 3.19677,1.12827 5.7824,3.14976 7.75688,6.06447 2.06849,2.82068 3.10274,5.97044 3.10274,9.44928 v 61.7729 c 0,4.51309 -1.6454,8.41504 -4.93619,11.70583 -3.19677,3.19677 -7.09871,4.79516 -11.70582,4.79516 -4.51309,0 -8.41504,-1.59839 -11.705828,-4.79516 -3.196772,-3.29079 -4.795158,-7.19274 -4.795158,-11.70583 v -11.2332 c -0.277898,-3.06563 -2.987588,-1.13379 -3.948953,0 -2.538613,4.70114 -7.401781,7.59567 -13.2572,7.61584 z" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path5212"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';fill-opacity:1;stroke-width:0.28950602px"
|
||||||
|
d="m 145.83461,185.00361 q -5.92343,0 -10.15445,-4.08999 -4.08999,-4.23102 -4.08999,-10.15445 0,-5.92343 4.08999,-10.01342 4.23102,-4.23102 10.15445,-4.23102 5.92343,0 10.15445,4.23102 4.23102,4.08999 4.23102,10.01342 0,5.92343 -4.23102,10.15445 -4.23102,4.08999 -10.15445,4.08999 z m 0.14103,2.82068 q 5.92343,0 10.01342,4.23102 4.23102,4.23102 4.23102,10.15445 v 34.83541 q 0,5.92343 -4.23102,10.15445 -4.08999,4.08999 -10.01342,4.08999 -5.92343,0 -10.15445,-4.08999 -4.23102,-4.23102 -4.23102,-10.15445 v -34.83541 q 0,-5.92343 4.23102,-10.15445 4.23102,-4.23102 10.15445,-4.23102 z" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 7.0 KiB |
27
src/client/app/admin/script.ts
Normal file
27
src/client/app/admin/script.ts
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
/**
|
||||||
|
* Admin
|
||||||
|
*/
|
||||||
|
|
||||||
|
import VueRouter from 'vue-router';
|
||||||
|
|
||||||
|
// Style
|
||||||
|
import './style.styl';
|
||||||
|
|
||||||
|
import init from '../init';
|
||||||
|
import Index from './views/index.vue';
|
||||||
|
|
||||||
|
init(launch => {
|
||||||
|
document.title = 'Admin';
|
||||||
|
|
||||||
|
// Init router
|
||||||
|
const router = new VueRouter({
|
||||||
|
mode: 'history',
|
||||||
|
base: '/admin/',
|
||||||
|
routes: [
|
||||||
|
{ path: '/', component: Index },
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
// Launch the app
|
||||||
|
launch(router);
|
||||||
|
});
|
||||||
6
src/client/app/admin/style.styl
Normal file
6
src/client/app/admin/style.styl
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
@import "../app"
|
||||||
|
@import "../reset"
|
||||||
|
|
||||||
|
html
|
||||||
|
height 100%
|
||||||
|
background var(--bg)
|
||||||
92
src/client/app/admin/views/announcements.vue
Normal file
92
src/client/app/admin/views/announcements.vue
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
<template>
|
||||||
|
<div class="cdeuzmsthagexbkpofbmatmugjuvogfb">
|
||||||
|
<ui-card>
|
||||||
|
<div slot="title"><fa icon="broadcast-tower"/> {{ $t('announcements') }}</div>
|
||||||
|
<section v-for="(announcement, i) in announcements" class="fit-top">
|
||||||
|
<ui-input v-model="announcement.title" @change="save">
|
||||||
|
<span>{{ $t('title') }}</span>
|
||||||
|
</ui-input>
|
||||||
|
<ui-textarea v-model="announcement.text">
|
||||||
|
<span>{{ $t('text') }}</span>
|
||||||
|
</ui-textarea>
|
||||||
|
<ui-horizon-group>
|
||||||
|
<ui-button @click="save()"><fa :icon="['far', 'save']"/> {{ $t('save') }}</ui-button>
|
||||||
|
<ui-button @click="remove(i)"><fa :icon="['far', 'trash-alt']"/> {{ $t('remove') }}</ui-button>
|
||||||
|
</ui-horizon-group>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<ui-button @click="add"><fa icon="plus"/> {{ $t('add') }}</ui-button>
|
||||||
|
</section>
|
||||||
|
</ui-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
import i18n from '../../i18n';
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
i18n: i18n('admin/views/announcements.vue'),
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
announcements: [],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
created() {
|
||||||
|
this.$root.getMeta().then(meta => {
|
||||||
|
this.announcements = meta.broadcasts;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
add() {
|
||||||
|
this.announcements.unshift({
|
||||||
|
title: '',
|
||||||
|
text: ''
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
remove(i) {
|
||||||
|
this.$root.alert({
|
||||||
|
type: 'warning',
|
||||||
|
text: this.$t('_remove.are-you-sure').replace('$1', this.announcements.find((_, j) => j == i).title),
|
||||||
|
showCancelButton: true
|
||||||
|
}).then(res => {
|
||||||
|
if (!res) return;
|
||||||
|
this.announcements = this.announcements.filter((_, j) => j !== i);
|
||||||
|
this.save(true);
|
||||||
|
this.$root.alert({
|
||||||
|
type: 'success',
|
||||||
|
text: this.$t('_remove.removed')
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
save(silent) {
|
||||||
|
this.$root.api('admin/update-meta', {
|
||||||
|
broadcasts: this.announcements
|
||||||
|
}).then(() => {
|
||||||
|
if (!silent) {
|
||||||
|
this.$root.alert({
|
||||||
|
type: 'success',
|
||||||
|
text: this.$t('saved')
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}).catch(e => {
|
||||||
|
this.$root.alert({
|
||||||
|
type: 'error',
|
||||||
|
text: e
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
.cdeuzmsthagexbkpofbmatmugjuvogfb
|
||||||
|
@media (min-width 500px)
|
||||||
|
padding 16px
|
||||||
|
|
||||||
|
</style>
|
||||||
107
src/client/app/admin/views/ap-log.vue
Normal file
107
src/client/app/admin/views/ap-log.vue
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
<template>
|
||||||
|
<div class="hyhctythnmwihguaaapnbrbszsjqxpio">
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th><fa :icon="faExchangeAlt"/> In/Out</th>
|
||||||
|
<th><fa :icon="faBolt"/> Activity</th>
|
||||||
|
<th><fa icon="server"/> Host</th>
|
||||||
|
<th><fa icon="user"/> Actor</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr v-for="log in logs" :key="log.id">
|
||||||
|
<td :class="log.direction">{{ log.direction == 'in' ? '<' : '>' }} {{ log.direction }}</td>
|
||||||
|
<td>{{ log.activity }}</td>
|
||||||
|
<td>{{ log.host }}</td>
|
||||||
|
<td>@{{ log.actor }}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
import { faBolt, faExchangeAlt } from '@fortawesome/free-solid-svg-icons';
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
logs: [],
|
||||||
|
connection: null,
|
||||||
|
faBolt, faExchangeAlt
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
mounted() {
|
||||||
|
this.connection = this.$root.stream.useSharedConnection('apLog');
|
||||||
|
this.connection.on('log', this.onLog);
|
||||||
|
this.connection.on('logs', this.onLogs);
|
||||||
|
this.connection.send('requestLog', {
|
||||||
|
id: Math.random().toString().substr(2, 8),
|
||||||
|
length: 50
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
beforeDestroy() {
|
||||||
|
this.connection.dispose();
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
onLog(log) {
|
||||||
|
log.id = Math.random();
|
||||||
|
this.logs.unshift(log);
|
||||||
|
if (this.logs.length > 50) this.logs.pop();
|
||||||
|
},
|
||||||
|
|
||||||
|
onLogs(logs) {
|
||||||
|
logs.reverse().forEach(log => this.onLog(log));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
.hyhctythnmwihguaaapnbrbszsjqxpio
|
||||||
|
display block
|
||||||
|
padding 12px 16px 16px 16px
|
||||||
|
height 250px
|
||||||
|
overflow hidden
|
||||||
|
box-shadow 0 2px 4px rgba(0, 0, 0, 0.1)
|
||||||
|
background var(--adminDashboardCardBg)
|
||||||
|
border-radius 8px
|
||||||
|
|
||||||
|
> table
|
||||||
|
width 100%
|
||||||
|
max-width 100%
|
||||||
|
overflow auto
|
||||||
|
border-spacing 0
|
||||||
|
border-collapse collapse
|
||||||
|
color var(--adminDashboardCardFg)
|
||||||
|
font-size 14px
|
||||||
|
|
||||||
|
thead
|
||||||
|
border-bottom solid 1px var(--adminDashboardCardDivider)
|
||||||
|
|
||||||
|
tr
|
||||||
|
th
|
||||||
|
font-weight normal
|
||||||
|
text-align left
|
||||||
|
|
||||||
|
tbody
|
||||||
|
tr
|
||||||
|
&:nth-child(odd)
|
||||||
|
background rgba(0, 0, 0, 0.025)
|
||||||
|
|
||||||
|
th, td
|
||||||
|
padding 8px 16px
|
||||||
|
min-width 128px
|
||||||
|
|
||||||
|
td.in
|
||||||
|
color #d26755
|
||||||
|
|
||||||
|
td.out
|
||||||
|
color #55bb83
|
||||||
|
|
||||||
|
</style>
|
||||||
497
src/client/app/admin/views/charts.vue
Normal file
497
src/client/app/admin/views/charts.vue
Normal file
@@ -0,0 +1,497 @@
|
|||||||
|
<template>
|
||||||
|
<div class="qvgidhudpqhjttdhxubzuyrhyzgslujw">
|
||||||
|
<header>
|
||||||
|
<b><fa :icon="['far', 'chart-bar']"/> {{ $t('title') }}:</b>
|
||||||
|
<select v-model="src">
|
||||||
|
<optgroup :label="$t('federation')">
|
||||||
|
<option value="federation-instances">{{ $t('charts.federation-instances') }}</option>
|
||||||
|
<option value="federation-instances-total">{{ $t('charts.federation-instances-total') }}</option>
|
||||||
|
</optgroup>
|
||||||
|
<optgroup :label="$t('users')">
|
||||||
|
<option value="users">{{ $t('charts.users') }}</option>
|
||||||
|
<option value="users-total">{{ $t('charts.users-total') }}</option>
|
||||||
|
</optgroup>
|
||||||
|
<optgroup :label="$t('notes')">
|
||||||
|
<option value="notes">{{ $t('charts.notes') }}</option>
|
||||||
|
<option value="local-notes">{{ $t('charts.local-notes') }}</option>
|
||||||
|
<option value="remote-notes">{{ $t('charts.remote-notes') }}</option>
|
||||||
|
<option value="notes-total">{{ $t('charts.notes-total') }}</option>
|
||||||
|
</optgroup>
|
||||||
|
<optgroup :label="$t('drive')">
|
||||||
|
<option value="drive-files">{{ $t('charts.drive-files') }}</option>
|
||||||
|
<option value="drive-files-total">{{ $t('charts.drive-files-total') }}</option>
|
||||||
|
<option value="drive">{{ $t('charts.drive') }}</option>
|
||||||
|
<option value="drive-total">{{ $t('charts.drive-total') }}</option>
|
||||||
|
</optgroup>
|
||||||
|
<optgroup :label="$t('network')">
|
||||||
|
<option value="network-requests">{{ $t('charts.network-requests') }}</option>
|
||||||
|
<option value="network-time">{{ $t('charts.network-time') }}</option>
|
||||||
|
<option value="network-usage">{{ $t('charts.network-usage') }}</option>
|
||||||
|
</optgroup>
|
||||||
|
</select>
|
||||||
|
<div>
|
||||||
|
<span @click="span = 'day'" :class="{ active: span == 'day' }">{{ $t('per-day') }}</span> | <span @click="span = 'hour'" :class="{ active: span == 'hour' }">{{ $t('per-hour') }}</span>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
<div ref="chart"></div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
import i18n from '../../i18n';
|
||||||
|
import * as tinycolor from 'tinycolor2';
|
||||||
|
import * as ApexCharts from 'apexcharts';
|
||||||
|
|
||||||
|
const limit = 90;
|
||||||
|
|
||||||
|
const sum = (...arr) => arr.reduce((r, a) => r.map((b, i) => a[i] + b));
|
||||||
|
const negate = arr => arr.map(x => -x);
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
i18n: i18n('admin/views/charts.vue'),
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
chart: null,
|
||||||
|
src: 'notes',
|
||||||
|
span: 'hour',
|
||||||
|
chartInstance: null
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
computed: {
|
||||||
|
data(): any {
|
||||||
|
if (this.chart == null) return null;
|
||||||
|
switch (this.src) {
|
||||||
|
case 'federation-instances': return this.federationInstancesChart(false);
|
||||||
|
case 'federation-instances-total': return this.federationInstancesChart(true);
|
||||||
|
case 'users': return this.usersChart(false);
|
||||||
|
case 'users-total': return this.usersChart(true);
|
||||||
|
case 'notes': return this.notesChart('combined');
|
||||||
|
case 'local-notes': return this.notesChart('local');
|
||||||
|
case 'remote-notes': return this.notesChart('remote');
|
||||||
|
case 'notes-total': return this.notesTotalChart();
|
||||||
|
case 'drive': return this.driveChart();
|
||||||
|
case 'drive-total': return this.driveTotalChart();
|
||||||
|
case 'drive-files': return this.driveFilesChart();
|
||||||
|
case 'drive-files-total': return this.driveFilesTotalChart();
|
||||||
|
case 'network-requests': return this.networkRequestsChart();
|
||||||
|
case 'network-time': return this.networkTimeChart();
|
||||||
|
case 'network-usage': return this.networkUsageChart();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
stats(): any[] {
|
||||||
|
const stats =
|
||||||
|
this.span == 'day' ? this.chart.perDay :
|
||||||
|
this.span == 'hour' ? this.chart.perHour :
|
||||||
|
null;
|
||||||
|
|
||||||
|
return stats;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
watch: {
|
||||||
|
src() {
|
||||||
|
this.render();
|
||||||
|
},
|
||||||
|
|
||||||
|
span() {
|
||||||
|
this.render();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
async mounted() {
|
||||||
|
this.now = new Date();
|
||||||
|
|
||||||
|
const [perHour, perDay] = await Promise.all([Promise.all([
|
||||||
|
this.$root.api('charts/federation', { limit: limit, span: 'hour' }),
|
||||||
|
this.$root.api('charts/users', { limit: limit, span: 'hour' }),
|
||||||
|
this.$root.api('charts/notes', { limit: limit, span: 'hour' }),
|
||||||
|
this.$root.api('charts/drive', { limit: limit, span: 'hour' }),
|
||||||
|
this.$root.api('charts/network', { limit: limit, span: 'hour' })
|
||||||
|
]), Promise.all([
|
||||||
|
this.$root.api('charts/federation', { limit: limit, span: 'day' }),
|
||||||
|
this.$root.api('charts/users', { limit: limit, span: 'day' }),
|
||||||
|
this.$root.api('charts/notes', { limit: limit, span: 'day' }),
|
||||||
|
this.$root.api('charts/drive', { limit: limit, span: 'day' }),
|
||||||
|
this.$root.api('charts/network', { limit: limit, span: 'day' })
|
||||||
|
])]);
|
||||||
|
|
||||||
|
const chart = {
|
||||||
|
perHour: {
|
||||||
|
federation: perHour[0],
|
||||||
|
users: perHour[1],
|
||||||
|
notes: perHour[2],
|
||||||
|
drive: perHour[3],
|
||||||
|
network: perHour[4]
|
||||||
|
},
|
||||||
|
perDay: {
|
||||||
|
federation: perDay[0],
|
||||||
|
users: perDay[1],
|
||||||
|
notes: perDay[2],
|
||||||
|
drive: perDay[3],
|
||||||
|
network: perDay[4]
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
this.chart = chart;
|
||||||
|
|
||||||
|
this.render();
|
||||||
|
},
|
||||||
|
|
||||||
|
beforeDestroy() {
|
||||||
|
this.chartInstance.destroy();
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
setSrc(src) {
|
||||||
|
this.src = src;
|
||||||
|
},
|
||||||
|
|
||||||
|
render() {
|
||||||
|
if (this.chartInstance) {
|
||||||
|
this.chartInstance.destroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.chartInstance = new ApexCharts(this.$refs.chart, {
|
||||||
|
chart: {
|
||||||
|
type: 'area',
|
||||||
|
height: 300,
|
||||||
|
animations: {
|
||||||
|
dynamicAnimation: {
|
||||||
|
enabled: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
toolbar: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
zoom: {
|
||||||
|
enabled: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dataLabels: {
|
||||||
|
enabled: false
|
||||||
|
},
|
||||||
|
grid: {
|
||||||
|
clipMarkers: false,
|
||||||
|
borderColor: 'rgba(0, 0, 0, 0.1)'
|
||||||
|
},
|
||||||
|
stroke: {
|
||||||
|
curve: 'straight',
|
||||||
|
width: 2
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
labels: {
|
||||||
|
color: tinycolor(getComputedStyle(document.documentElement).getPropertyValue('--text')).toRgbString()
|
||||||
|
},
|
||||||
|
},
|
||||||
|
xaxis: {
|
||||||
|
type: 'datetime',
|
||||||
|
labels: {
|
||||||
|
style: {
|
||||||
|
colors: tinycolor(getComputedStyle(document.documentElement).getPropertyValue('--text')).toRgbString()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
axisBorder: {
|
||||||
|
color: 'rgba(0, 0, 0, 0.1)'
|
||||||
|
},
|
||||||
|
axisTicks: {
|
||||||
|
color: 'rgba(0, 0, 0, 0.1)'
|
||||||
|
},
|
||||||
|
},
|
||||||
|
yaxis: {
|
||||||
|
labels: {
|
||||||
|
formatter: this.data.bytes ? v => Vue.filter('bytes')(v, 0) : v => Vue.filter('number')(v),
|
||||||
|
style: {
|
||||||
|
color: tinycolor(getComputedStyle(document.documentElement).getPropertyValue('--text')).toRgbString()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: this.data.series
|
||||||
|
});
|
||||||
|
|
||||||
|
this.chartInstance.render();
|
||||||
|
},
|
||||||
|
|
||||||
|
getDate(i: number) {
|
||||||
|
const y = this.now.getFullYear();
|
||||||
|
const m = this.now.getMonth();
|
||||||
|
const d = this.now.getDate();
|
||||||
|
const h = this.now.getHours();
|
||||||
|
|
||||||
|
return (
|
||||||
|
this.span == 'day' ? new Date(y, m, d - i) :
|
||||||
|
this.span == 'hour' ? new Date(y, m, d, h - i) :
|
||||||
|
null
|
||||||
|
);
|
||||||
|
},
|
||||||
|
|
||||||
|
format(arr) {
|
||||||
|
return arr.map((v, i) => ({ x: this.getDate(i).getTime(), y: v }));
|
||||||
|
},
|
||||||
|
|
||||||
|
federationInstancesChart(total: boolean): any {
|
||||||
|
return {
|
||||||
|
series: [{
|
||||||
|
data: this.format(total
|
||||||
|
? this.stats.federation.instance.total
|
||||||
|
: sum(this.stats.federation.instance.inc, negate(this.stats.federation.instance.dec))
|
||||||
|
)
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
notesChart(type: string): any {
|
||||||
|
return {
|
||||||
|
series: [{
|
||||||
|
name: 'All',
|
||||||
|
type: 'line',
|
||||||
|
data: this.format(type == 'combined'
|
||||||
|
? sum(this.stats.notes.local.inc, negate(this.stats.notes.local.dec), this.stats.notes.remote.inc, negate(this.stats.notes.remote.dec))
|
||||||
|
: sum(this.stats.notes[type].inc, negate(this.stats.notes[type].dec))
|
||||||
|
)
|
||||||
|
}, {
|
||||||
|
name: 'Renotes',
|
||||||
|
type: 'area',
|
||||||
|
data: this.format(type == 'combined'
|
||||||
|
? sum(this.stats.notes.local.diffs.renote, this.stats.notes.remote.diffs.renote)
|
||||||
|
: this.stats.notes[type].diffs.renote
|
||||||
|
)
|
||||||
|
}, {
|
||||||
|
name: 'Replies',
|
||||||
|
type: 'area',
|
||||||
|
data: this.format(type == 'combined'
|
||||||
|
? sum(this.stats.notes.local.diffs.reply, this.stats.notes.remote.diffs.reply)
|
||||||
|
: this.stats.notes[type].diffs.reply
|
||||||
|
)
|
||||||
|
}, {
|
||||||
|
name: 'Normal',
|
||||||
|
type: 'area',
|
||||||
|
data: this.format(type == 'combined'
|
||||||
|
? sum(this.stats.notes.local.diffs.normal, this.stats.notes.remote.diffs.normal)
|
||||||
|
: this.stats.notes[type].diffs.normal
|
||||||
|
)
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
notesTotalChart(): any {
|
||||||
|
return {
|
||||||
|
series: [{
|
||||||
|
name: 'Combined',
|
||||||
|
type: 'line',
|
||||||
|
data: this.format(sum(this.stats.notes.local.total, this.stats.notes.remote.total))
|
||||||
|
}, {
|
||||||
|
name: 'Local',
|
||||||
|
type: 'area',
|
||||||
|
data: this.format(this.stats.notes.local.total)
|
||||||
|
}, {
|
||||||
|
name: 'Remote',
|
||||||
|
type: 'area',
|
||||||
|
data: this.format(this.stats.notes.remote.total)
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
usersChart(total: boolean): any {
|
||||||
|
return {
|
||||||
|
series: [{
|
||||||
|
name: 'Combined',
|
||||||
|
type: 'line',
|
||||||
|
data: this.format(total
|
||||||
|
? sum(this.stats.users.local.total, this.stats.users.remote.total)
|
||||||
|
: sum(this.stats.users.local.inc, negate(this.stats.users.local.dec), this.stats.users.remote.inc, negate(this.stats.users.remote.dec))
|
||||||
|
)
|
||||||
|
}, {
|
||||||
|
name: 'Local',
|
||||||
|
type: 'area',
|
||||||
|
data: this.format(total
|
||||||
|
? this.stats.users.local.total
|
||||||
|
: sum(this.stats.users.local.inc, negate(this.stats.users.local.dec))
|
||||||
|
)
|
||||||
|
}, {
|
||||||
|
name: 'Remote',
|
||||||
|
type: 'area',
|
||||||
|
data: this.format(total
|
||||||
|
? this.stats.users.remote.total
|
||||||
|
: sum(this.stats.users.remote.inc, negate(this.stats.users.remote.dec))
|
||||||
|
)
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
driveChart(): any {
|
||||||
|
return {
|
||||||
|
bytes: true,
|
||||||
|
series: [{
|
||||||
|
name: 'All',
|
||||||
|
type: 'line',
|
||||||
|
data: this.format(
|
||||||
|
sum(
|
||||||
|
this.stats.drive.local.incSize,
|
||||||
|
negate(this.stats.drive.local.decSize),
|
||||||
|
this.stats.drive.remote.incSize,
|
||||||
|
negate(this.stats.drive.remote.decSize)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}, {
|
||||||
|
name: 'Local +',
|
||||||
|
type: 'area',
|
||||||
|
data: this.format(this.stats.drive.local.incSize)
|
||||||
|
}, {
|
||||||
|
name: 'Local -',
|
||||||
|
type: 'area',
|
||||||
|
data: this.format(negate(this.stats.drive.local.decSize))
|
||||||
|
}, {
|
||||||
|
name: 'Remote +',
|
||||||
|
type: 'area',
|
||||||
|
data: this.format(this.stats.drive.remote.incSize)
|
||||||
|
}, {
|
||||||
|
name: 'Remote -',
|
||||||
|
type: 'area',
|
||||||
|
data: this.format(negate(this.stats.drive.remote.decSize))
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
driveTotalChart(): any {
|
||||||
|
return {
|
||||||
|
bytes: true,
|
||||||
|
series: [{
|
||||||
|
name: 'Combined',
|
||||||
|
type: 'line',
|
||||||
|
data: this.format(sum(this.stats.drive.local.totalSize, this.stats.drive.remote.totalSize))
|
||||||
|
}, {
|
||||||
|
name: 'Local',
|
||||||
|
type: 'area',
|
||||||
|
data: this.format(this.stats.drive.local.totalSize)
|
||||||
|
}, {
|
||||||
|
name: 'Remote',
|
||||||
|
type: 'area',
|
||||||
|
data: this.format(this.stats.drive.remote.totalSize)
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
driveFilesChart(): any {
|
||||||
|
return {
|
||||||
|
series: [{
|
||||||
|
name: 'All',
|
||||||
|
type: 'line',
|
||||||
|
data: this.format(
|
||||||
|
sum(
|
||||||
|
this.stats.drive.local.incCount,
|
||||||
|
negate(this.stats.drive.local.decCount),
|
||||||
|
this.stats.drive.remote.incCount,
|
||||||
|
negate(this.stats.drive.remote.decCount)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}, {
|
||||||
|
name: 'Local +',
|
||||||
|
type: 'area',
|
||||||
|
data: this.format(this.stats.drive.local.incCount)
|
||||||
|
}, {
|
||||||
|
name: 'Local -',
|
||||||
|
type: 'area',
|
||||||
|
data: this.format(negate(this.stats.drive.local.decCount))
|
||||||
|
}, {
|
||||||
|
name: 'Remote +',
|
||||||
|
type: 'area',
|
||||||
|
data: this.format(this.stats.drive.remote.incCount)
|
||||||
|
}, {
|
||||||
|
name: 'Remote -',
|
||||||
|
type: 'area',
|
||||||
|
data: this.format(negate(this.stats.drive.remote.decCount))
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
driveFilesTotalChart(): any {
|
||||||
|
return {
|
||||||
|
series: [{
|
||||||
|
name: 'Combined',
|
||||||
|
type: 'line',
|
||||||
|
data: this.format(sum(this.stats.drive.local.totalCount, this.stats.drive.remote.totalCount))
|
||||||
|
}, {
|
||||||
|
name: 'Local',
|
||||||
|
type: 'area',
|
||||||
|
data: this.format(this.stats.drive.local.totalCount)
|
||||||
|
}, {
|
||||||
|
name: 'Remote',
|
||||||
|
type: 'area',
|
||||||
|
data: this.format(this.stats.drive.remote.totalCount)
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
networkRequestsChart(): any {
|
||||||
|
return {
|
||||||
|
series: [{
|
||||||
|
name: 'Incoming',
|
||||||
|
data: this.format(this.stats.network.incomingRequests)
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
networkTimeChart(): any {
|
||||||
|
const data = [];
|
||||||
|
|
||||||
|
for (let i = 0; i < limit; i++) {
|
||||||
|
data.push(this.stats.network.incomingRequests[i] != 0 ? (this.stats.network.totalTime[i] / this.stats.network.incomingRequests[i]) : 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
series: [{
|
||||||
|
name: 'Avg time',
|
||||||
|
data: this.format(data)
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
networkUsageChart(): any {
|
||||||
|
return {
|
||||||
|
bytes: true,
|
||||||
|
series: [{
|
||||||
|
name: 'Incoming',
|
||||||
|
data: this.format(this.stats.network.incomingBytes)
|
||||||
|
}, {
|
||||||
|
name: 'Outgoing',
|
||||||
|
data: this.format(this.stats.network.outgoingBytes)
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
},
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
.qvgidhudpqhjttdhxubzuyrhyzgslujw
|
||||||
|
display block
|
||||||
|
flex 1
|
||||||
|
padding 32px 24px
|
||||||
|
padding-bottom 0
|
||||||
|
box-shadow 0 2px 4px rgba(0, 0, 0, 0.1)
|
||||||
|
background var(--face)
|
||||||
|
border-radius 8px
|
||||||
|
|
||||||
|
> header
|
||||||
|
display flex
|
||||||
|
margin 0 8px
|
||||||
|
padding 0 0 8px 0
|
||||||
|
font-size 1em
|
||||||
|
color var(--adminDashboardCardFg)
|
||||||
|
border-bottom solid 1px var(--adminDashboardCardDivider)
|
||||||
|
|
||||||
|
> b
|
||||||
|
margin-right 8px
|
||||||
|
|
||||||
|
> *:last-child
|
||||||
|
margin-left auto
|
||||||
|
|
||||||
|
*
|
||||||
|
&:not(.active)
|
||||||
|
color var(--primary)
|
||||||
|
cursor pointer
|
||||||
|
|
||||||
|
</style>
|
||||||
183
src/client/app/admin/views/cpu-memory.vue
Normal file
183
src/client/app/admin/views/cpu-memory.vue
Normal file
@@ -0,0 +1,183 @@
|
|||||||
|
<template>
|
||||||
|
<div class="zyknedwtlthezamcjlolyusmipqmjgxz">
|
||||||
|
<div>
|
||||||
|
<header>
|
||||||
|
<span><fa icon="microchip"/> CPU <span>{{ cpuP }}%</span></span>
|
||||||
|
<span v-if="meta">{{ meta.cpu.model }}</span>
|
||||||
|
</header>
|
||||||
|
<div ref="cpu"></div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<header>
|
||||||
|
<span><fa icon="memory"/> MEM <span>{{ memP }}%</span></span>
|
||||||
|
<span v-if="meta"></span>
|
||||||
|
</header>
|
||||||
|
<div ref="mem"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
import * as ApexCharts from 'apexcharts';
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
props: ['connection'],
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
stats: [],
|
||||||
|
cpuChart: null,
|
||||||
|
memChart: null,
|
||||||
|
cpuP: '',
|
||||||
|
memP: '',
|
||||||
|
meta: null
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
watch: {
|
||||||
|
stats(stats) {
|
||||||
|
this.cpuChart.updateSeries([{
|
||||||
|
data: stats.map((x, i) => ({ x: i, y: x.cpu_usage }))
|
||||||
|
}]);
|
||||||
|
this.memChart.updateSeries([{
|
||||||
|
data: stats.map((x, i) => ({ x: i, y: (x.mem.used / x.mem.total) }))
|
||||||
|
}]);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
mounted() {
|
||||||
|
this.$root.getMeta().then(meta => {
|
||||||
|
this.meta = meta;
|
||||||
|
});
|
||||||
|
|
||||||
|
this.connection.on('stats', this.onStats);
|
||||||
|
this.connection.on('statsLog', this.onStatsLog);
|
||||||
|
this.connection.send('requestLog', {
|
||||||
|
id: Math.random().toString().substr(2, 8),
|
||||||
|
length: 200
|
||||||
|
});
|
||||||
|
|
||||||
|
const chartOpts = {
|
||||||
|
chart: {
|
||||||
|
type: 'area',
|
||||||
|
height: 200,
|
||||||
|
animations: {
|
||||||
|
dynamicAnimation: {
|
||||||
|
enabled: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
toolbar: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
zoom: {
|
||||||
|
enabled: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dataLabels: {
|
||||||
|
enabled: false
|
||||||
|
},
|
||||||
|
grid: {
|
||||||
|
clipMarkers: false,
|
||||||
|
borderColor: 'rgba(0, 0, 0, 0.1)'
|
||||||
|
},
|
||||||
|
stroke: {
|
||||||
|
curve: 'straight',
|
||||||
|
width: 2
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
enabled: false
|
||||||
|
},
|
||||||
|
series: [{
|
||||||
|
data: []
|
||||||
|
}],
|
||||||
|
xaxis: {
|
||||||
|
type: 'numeric',
|
||||||
|
labels: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
enabled: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
yaxis: {
|
||||||
|
show: false,
|
||||||
|
min: 0,
|
||||||
|
max: 1
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
this.cpuChart = new ApexCharts(this.$refs.cpu, chartOpts);
|
||||||
|
this.memChart = new ApexCharts(this.$refs.mem, chartOpts);
|
||||||
|
|
||||||
|
this.cpuChart.render();
|
||||||
|
this.memChart.render();
|
||||||
|
},
|
||||||
|
|
||||||
|
beforeDestroy() {
|
||||||
|
this.connection.off('stats', this.onStats);
|
||||||
|
this.connection.off('statsLog', this.onStatsLog);
|
||||||
|
|
||||||
|
this.cpuChart.destroy();
|
||||||
|
this.memChart.destroy();
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
onStats(stats) {
|
||||||
|
this.stats.push(stats);
|
||||||
|
if (this.stats.length > 200) this.stats.shift();
|
||||||
|
|
||||||
|
this.cpuP = (stats.cpu_usage * 100).toFixed(0);
|
||||||
|
this.memP = (stats.mem.used / stats.mem.total * 100).toFixed(0);
|
||||||
|
},
|
||||||
|
|
||||||
|
onStatsLog(statsLog) {
|
||||||
|
statsLog.reverse().forEach(stats => this.onStats(stats));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
.zyknedwtlthezamcjlolyusmipqmjgxz
|
||||||
|
display flex
|
||||||
|
|
||||||
|
> div
|
||||||
|
display block
|
||||||
|
flex 1
|
||||||
|
padding 20px 12px 0 12px
|
||||||
|
box-shadow 0 2px 4px rgba(0, 0, 0, 0.1)
|
||||||
|
background var(--face)
|
||||||
|
border-radius 8px
|
||||||
|
|
||||||
|
&:first-child
|
||||||
|
margin-right 16px
|
||||||
|
|
||||||
|
> header
|
||||||
|
display flex
|
||||||
|
padding 0 8px
|
||||||
|
margin-bottom -16px
|
||||||
|
color var(--adminDashboardCardFg)
|
||||||
|
font-size 14px
|
||||||
|
|
||||||
|
> span
|
||||||
|
&:last-child
|
||||||
|
margin-left auto
|
||||||
|
opacity 0.7
|
||||||
|
|
||||||
|
> span
|
||||||
|
opacity 0.7
|
||||||
|
|
||||||
|
> div
|
||||||
|
margin-bottom -10px
|
||||||
|
|
||||||
|
@media (max-width 1000px)
|
||||||
|
display block
|
||||||
|
margin-bottom 26px
|
||||||
|
|
||||||
|
> div
|
||||||
|
&:first-child
|
||||||
|
margin-right 0
|
||||||
|
margin-bottom 26px
|
||||||
|
|
||||||
|
</style>
|
||||||
280
src/client/app/admin/views/dashboard.vue
Normal file
280
src/client/app/admin/views/dashboard.vue
Normal file
@@ -0,0 +1,280 @@
|
|||||||
|
<template>
|
||||||
|
<div class="obdskegsannmntldydackcpzezagxqfy">
|
||||||
|
<header v-if="meta">
|
||||||
|
<p><b>Misskey</b><span>{{ meta.version }}</span></p>
|
||||||
|
<p><b>Machine</b><span>{{ meta.machine }}</span></p>
|
||||||
|
<p><b>OS</b><span>{{ meta.os }}</span></p>
|
||||||
|
<p><b>Node</b><span>{{ meta.node }}</span></p>
|
||||||
|
<p>{{ $t('@.ai-chan-kawaii') }}</p>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<marquee-text v-if="instances.length > 0" class="instances" :repeat="10" :duration="60">
|
||||||
|
<span v-for="instance in instances" class="instance">
|
||||||
|
<b :style="{ background: instance.bg }">{{ instance.host }}</b>{{ instance.notesCount | number }} / {{ instance.usersCount | number }}
|
||||||
|
</span>
|
||||||
|
</marquee-text>
|
||||||
|
|
||||||
|
<div v-if="stats" class="stats">
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<div><fa icon="user"/></div>
|
||||||
|
<div>
|
||||||
|
<span>{{ $t('accounts') }}</span>
|
||||||
|
<b>{{ stats.originalUsersCount | number }}</b>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span><fa icon="home"/> {{ $t('this-instance') }}</span>
|
||||||
|
<span @click="setChartSrc('users')"><fa :icon="['far', 'chart-bar']"/></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<div><fa icon="pencil-alt"/></div>
|
||||||
|
<div>
|
||||||
|
<span>{{ $t('notes') }}</span>
|
||||||
|
<b>{{ stats.originalNotesCount | number }}</b>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span><fa icon="home"/> {{ $t('this-instance') }}</span>
|
||||||
|
<span @click="setChartSrc('notes')"><fa :icon="['far', 'chart-bar']"/></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<div><fa :icon="faDatabase"/></div>
|
||||||
|
<div>
|
||||||
|
<span>{{ $t('drive') }}</span>
|
||||||
|
<b>{{ stats.driveUsageLocal | bytes }}</b>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span><fa icon="home"/> {{ $t('this-instance') }}</span>
|
||||||
|
<span @click="setChartSrc('drive')"><fa :icon="['far', 'chart-bar']"/></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<div><fa :icon="['far', 'hdd']"/></div>
|
||||||
|
<div>
|
||||||
|
<span>{{ $t('instances') }}</span>
|
||||||
|
<b>{{ stats.instances | number }}</b>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span><fa icon="globe"/> {{ $t('federated') }}</span>
|
||||||
|
<span @click="setChartSrc('federation-instances-total')"><fa :icon="['far', 'chart-bar']"/></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="charts">
|
||||||
|
<x-charts ref="charts"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="cpu-memory">
|
||||||
|
<x-cpu-memory :connection="connection"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ap">
|
||||||
|
<x-ap-log/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
import i18n from '../../i18n';
|
||||||
|
import XCpuMemory from "./cpu-memory.vue";
|
||||||
|
import XCharts from "./charts.vue";
|
||||||
|
import XApLog from "./ap-log.vue";
|
||||||
|
import { faDatabase } from '@fortawesome/free-solid-svg-icons';
|
||||||
|
import MarqueeText from 'vue-marquee-text-component';
|
||||||
|
import randomColor from 'randomcolor';
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
i18n: i18n('admin/views/dashboard.vue'),
|
||||||
|
|
||||||
|
components: {
|
||||||
|
XCpuMemory,
|
||||||
|
XCharts,
|
||||||
|
XApLog,
|
||||||
|
MarqueeText
|
||||||
|
},
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
stats: null,
|
||||||
|
connection: null,
|
||||||
|
meta: null,
|
||||||
|
instances: [],
|
||||||
|
clock: null,
|
||||||
|
faDatabase
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
created() {
|
||||||
|
this.connection = this.$root.stream.useSharedConnection('serverStats');
|
||||||
|
|
||||||
|
this.updateStats();
|
||||||
|
this.clock = setInterval(this.updateStats, 1000);
|
||||||
|
|
||||||
|
this.$root.getMeta().then(meta => {
|
||||||
|
this.meta = meta;
|
||||||
|
});
|
||||||
|
|
||||||
|
this.$root.api('instances', {
|
||||||
|
sort: '+notes'
|
||||||
|
}).then(instances => {
|
||||||
|
instances.forEach(i => {
|
||||||
|
i.bg = randomColor({
|
||||||
|
seed: i.host,
|
||||||
|
luminosity: 'dark'
|
||||||
|
});
|
||||||
|
});
|
||||||
|
this.instances = instances;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
beforeDestroy() {
|
||||||
|
this.connection.dispose();
|
||||||
|
clearInterval(this.clock);
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
setChartSrc(src) {
|
||||||
|
this.$refs.charts.setSrc(src);
|
||||||
|
},
|
||||||
|
|
||||||
|
updateStats() {
|
||||||
|
this.$root.api('stats', {}, false, true).then(stats => {
|
||||||
|
this.stats = stats;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
.obdskegsannmntldydackcpzezagxqfy
|
||||||
|
padding 16px
|
||||||
|
|
||||||
|
@media (min-width 500px)
|
||||||
|
padding 32px
|
||||||
|
|
||||||
|
> header
|
||||||
|
display flex
|
||||||
|
padding-bottom 16px
|
||||||
|
border-bottom solid 1px var(--adminDashboardHeaderBorder)
|
||||||
|
color var(--adminDashboardHeaderFg)
|
||||||
|
font-size 14px
|
||||||
|
white-space nowrap
|
||||||
|
|
||||||
|
@media (max-width 1000px)
|
||||||
|
display none
|
||||||
|
|
||||||
|
> p
|
||||||
|
display block
|
||||||
|
margin 0 32px 0 0
|
||||||
|
overflow hidden
|
||||||
|
text-overflow ellipsis
|
||||||
|
|
||||||
|
> b
|
||||||
|
&:after
|
||||||
|
content ':'
|
||||||
|
margin-right 8px
|
||||||
|
|
||||||
|
&:last-child
|
||||||
|
margin-left auto
|
||||||
|
margin-right 0
|
||||||
|
|
||||||
|
> .instances
|
||||||
|
padding 16px
|
||||||
|
color var(--adminDashboardHeaderFg)
|
||||||
|
font-size 13px
|
||||||
|
|
||||||
|
>>> .instance
|
||||||
|
margin 0 10px
|
||||||
|
|
||||||
|
> b
|
||||||
|
padding 2px 6px
|
||||||
|
margin-right 4px
|
||||||
|
border-radius 4px
|
||||||
|
color #fff
|
||||||
|
|
||||||
|
> .stats
|
||||||
|
display flex
|
||||||
|
justify-content space-between
|
||||||
|
margin-bottom 16px
|
||||||
|
|
||||||
|
> div
|
||||||
|
flex 1
|
||||||
|
margin-right 16px
|
||||||
|
color var(--adminDashboardCardFg)
|
||||||
|
box-shadow 0 2px 4px rgba(0, 0, 0, 0.1)
|
||||||
|
background var(--adminDashboardCardBg)
|
||||||
|
border-radius 8px
|
||||||
|
|
||||||
|
&:last-child
|
||||||
|
margin-right 0
|
||||||
|
|
||||||
|
> div:first-child
|
||||||
|
display flex
|
||||||
|
align-items center
|
||||||
|
text-align center
|
||||||
|
|
||||||
|
&:last-child
|
||||||
|
margin-right 0
|
||||||
|
|
||||||
|
> div:first-child
|
||||||
|
padding 16px 24px
|
||||||
|
font-size 28px
|
||||||
|
|
||||||
|
> div:last-child
|
||||||
|
flex 1
|
||||||
|
padding 16px 32px 16px 0
|
||||||
|
text-align right
|
||||||
|
|
||||||
|
> span
|
||||||
|
font-size 70%
|
||||||
|
opacity 0.7
|
||||||
|
|
||||||
|
> b
|
||||||
|
display block
|
||||||
|
|
||||||
|
> div:last-child
|
||||||
|
display flex
|
||||||
|
padding 6px 16px
|
||||||
|
border-top solid 1px var(--adminDashboardCardDivider)
|
||||||
|
|
||||||
|
> span
|
||||||
|
font-size 70%
|
||||||
|
opacity 0.7
|
||||||
|
|
||||||
|
&:last-child
|
||||||
|
margin-left auto
|
||||||
|
cursor pointer
|
||||||
|
|
||||||
|
@media (max-width 900px)
|
||||||
|
display grid
|
||||||
|
grid-template-columns 1fr 1fr
|
||||||
|
grid-template-rows 1fr 1fr
|
||||||
|
gap 16px
|
||||||
|
|
||||||
|
> div
|
||||||
|
margin-right 0
|
||||||
|
|
||||||
|
@media (max-width 500px)
|
||||||
|
display block
|
||||||
|
|
||||||
|
> div:not(:last-child)
|
||||||
|
margin-bottom 16px
|
||||||
|
|
||||||
|
> .charts
|
||||||
|
margin-bottom 16px
|
||||||
|
|
||||||
|
> .cpu-memory
|
||||||
|
margin-bottom 16px
|
||||||
|
|
||||||
|
</style>
|
||||||
151
src/client/app/admin/views/emoji.vue
Normal file
151
src/client/app/admin/views/emoji.vue
Normal file
@@ -0,0 +1,151 @@
|
|||||||
|
<template>
|
||||||
|
<div class="tumhkfkmgtvzljezfvmgkeurkfncshbe">
|
||||||
|
<ui-card>
|
||||||
|
<div slot="title"><fa icon="plus"/> {{ $t('add-emoji.title') }}</div>
|
||||||
|
<section class="fit-top">
|
||||||
|
<ui-horizon-group inputs>
|
||||||
|
<ui-input v-model="name">
|
||||||
|
<span>{{ $t('add-emoji.name') }}</span>
|
||||||
|
<span slot="desc">{{ $t('add-emoji.name-desc') }}</span>
|
||||||
|
</ui-input>
|
||||||
|
<ui-input v-model="aliases">
|
||||||
|
<span>{{ $t('add-emoji.aliases') }}</span>
|
||||||
|
<span slot="desc">{{ $t('add-emoji.aliases-desc') }}</span>
|
||||||
|
</ui-input>
|
||||||
|
</ui-horizon-group>
|
||||||
|
<ui-input v-model="url">
|
||||||
|
<i slot="icon"><fa icon="link"/></i>
|
||||||
|
<span>{{ $t('add-emoji.url') }}</span>
|
||||||
|
</ui-input>
|
||||||
|
<ui-info>{{ $t('add-emoji.info') }}</ui-info>
|
||||||
|
<ui-button @click="add">{{ $t('add-emoji.add') }}</ui-button>
|
||||||
|
</section>
|
||||||
|
</ui-card>
|
||||||
|
|
||||||
|
<ui-card>
|
||||||
|
<div slot="title"><fa :icon="faGrin"/> {{ $t('emojis.title') }}</div>
|
||||||
|
<section v-for="emoji in emojis">
|
||||||
|
<img :src="emoji.url" :alt="emoji.name" style="width: 64px;"/>
|
||||||
|
<ui-horizon-group inputs>
|
||||||
|
<ui-input v-model="emoji.name">
|
||||||
|
<span>{{ $t('add-emoji.name') }}</span>
|
||||||
|
</ui-input>
|
||||||
|
<ui-input v-model="emoji.aliases">
|
||||||
|
<span>{{ $t('add-emoji.aliases') }}</span>
|
||||||
|
</ui-input>
|
||||||
|
</ui-horizon-group>
|
||||||
|
<ui-input v-model="emoji.url">
|
||||||
|
<i slot="icon"><fa icon="link"/></i>
|
||||||
|
<span>{{ $t('add-emoji.url') }}</span>
|
||||||
|
</ui-input>
|
||||||
|
<ui-horizon-group>
|
||||||
|
<ui-button @click="updateEmoji(emoji)"><fa :icon="['far', 'save']"/> {{ $t('emojis.update') }}</ui-button>
|
||||||
|
<ui-button @click="removeEmoji(emoji)"><fa :icon="['far', 'trash-alt']"/> {{ $t('emojis.remove') }}</ui-button>
|
||||||
|
</ui-horizon-group>
|
||||||
|
</section>
|
||||||
|
</ui-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
import i18n from '../../i18n';
|
||||||
|
import { faGrin } from '@fortawesome/free-regular-svg-icons';
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
i18n: i18n('admin/views/emoji.vue'),
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
name: '',
|
||||||
|
url: '',
|
||||||
|
aliases: '',
|
||||||
|
emojis: [],
|
||||||
|
faGrin
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
mounted() {
|
||||||
|
this.fetchEmojis();
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
add() {
|
||||||
|
this.$root.api('admin/emoji/add', {
|
||||||
|
name: this.name,
|
||||||
|
url: this.url,
|
||||||
|
aliases: this.aliases.split(' ').filter(x => x.length > 0)
|
||||||
|
}).then(() => {
|
||||||
|
this.$root.alert({
|
||||||
|
type: 'success',
|
||||||
|
text: this.$t('add-emoji.added')
|
||||||
|
});
|
||||||
|
this.fetchEmojis();
|
||||||
|
}).catch(e => {
|
||||||
|
this.$root.alert({
|
||||||
|
type: 'error',
|
||||||
|
text: e
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
fetchEmojis() {
|
||||||
|
this.$root.api('admin/emoji/list').then(emojis => {
|
||||||
|
emojis.reverse();
|
||||||
|
emojis.forEach(e => e.aliases = (e.aliases || []).join(' '));
|
||||||
|
this.emojis = emojis;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
updateEmoji(emoji) {
|
||||||
|
this.$root.api('admin/emoji/update', {
|
||||||
|
id: emoji.id,
|
||||||
|
name: emoji.name,
|
||||||
|
url: emoji.url,
|
||||||
|
aliases: emoji.aliases.split(' ').filter(x => x.length > 0)
|
||||||
|
}).then(() => {
|
||||||
|
this.$root.alert({
|
||||||
|
type: 'success',
|
||||||
|
text: this.$t('updated')
|
||||||
|
});
|
||||||
|
}).catch(e => {
|
||||||
|
this.$root.alert({
|
||||||
|
type: 'error',
|
||||||
|
text: e
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
removeEmoji(emoji) {
|
||||||
|
this.$root.alert({
|
||||||
|
type: 'warning',
|
||||||
|
text: this.$t('remove-emoji.are-you-sure').replace('$1', emoji.name),
|
||||||
|
showCancelButton: true
|
||||||
|
}).then(res => {
|
||||||
|
if (!res) return;
|
||||||
|
|
||||||
|
this.$root.api('admin/emoji/remove', {
|
||||||
|
id: emoji.id
|
||||||
|
}).then(() => {
|
||||||
|
this.$root.alert({
|
||||||
|
type: 'success',
|
||||||
|
text: this.$t('remove-emoji.removed')
|
||||||
|
});
|
||||||
|
this.fetchEmojis();
|
||||||
|
}).catch(e => {
|
||||||
|
this.$root.alert({
|
||||||
|
type: 'error',
|
||||||
|
text: e
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
.tumhkfkmgtvzljezfvmgkeurkfncshbe
|
||||||
|
@media (min-width 500px)
|
||||||
|
padding 16px
|
||||||
|
|
||||||
|
</style>
|
||||||
48
src/client/app/admin/views/hashtags.vue
Normal file
48
src/client/app/admin/views/hashtags.vue
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<ui-card>
|
||||||
|
<div slot="title">{{ $t('hided-tags') }}</div>
|
||||||
|
<section>
|
||||||
|
<textarea class="jdnqwkzlnxcfftthoybjxrebyolvoucw" v-model="hidedTags"></textarea>
|
||||||
|
<ui-button @click="save">{{ $t('save') }}</ui-button>
|
||||||
|
</section>
|
||||||
|
</ui-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
import i18n from '../../i18n';
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
i18n: i18n('admin/views/hashtags.vue'),
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
hidedTags: '',
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.$root.getMeta().then(meta => {
|
||||||
|
this.hidedTags = meta.hidedTags.join('\n');
|
||||||
|
});
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
save() {
|
||||||
|
this.$root.api('admin/update-meta', {
|
||||||
|
hidedTags: this.hidedTags.split('\n')
|
||||||
|
}).then(() => {
|
||||||
|
//this.$root.os.apis.dialog({ text: `Saved` });
|
||||||
|
}).catch(e => {
|
||||||
|
//this.$root.os.apis.dialog({ text: `Failed ${e}` });
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
.jdnqwkzlnxcfftthoybjxrebyolvoucw
|
||||||
|
width 100%
|
||||||
|
min-height 300px
|
||||||
|
|
||||||
|
</style>
|
||||||
276
src/client/app/admin/views/index.vue
Normal file
276
src/client/app/admin/views/index.vue
Normal file
@@ -0,0 +1,276 @@
|
|||||||
|
<template>
|
||||||
|
<div class="mk-admin" :class="{ isMobile }">
|
||||||
|
<header v-show="isMobile">
|
||||||
|
<button class="nav" @click="navOpend = true"><fa icon="bars"/></button>
|
||||||
|
<span>MisskeyMyAdmin</span>
|
||||||
|
</header>
|
||||||
|
<div class="nav-backdrop"
|
||||||
|
v-if="navOpend && isMobile"
|
||||||
|
@click="navOpend = false"
|
||||||
|
@touchstart="navOpend = false"
|
||||||
|
></div>
|
||||||
|
<nav v-show="navOpend">
|
||||||
|
<div class="mi">
|
||||||
|
<img svg-inline src="../assets/header-icon.svg"/>
|
||||||
|
</div>
|
||||||
|
<div class="me">
|
||||||
|
<img class="avatar" :src="$store.state.i.avatarUrl" alt="avatar"/>
|
||||||
|
<p class="name">{{ $store.state.i | userName }}</p>
|
||||||
|
</div>
|
||||||
|
<ul>
|
||||||
|
<li @click="nav('dashboard')" :class="{ active: page == 'dashboard' }"><fa icon="home" fixed-width/>{{ $t('dashboard') }}</li>
|
||||||
|
<li @click="nav('instance')" :class="{ active: page == 'instance' }"><fa icon="cog" fixed-width/>{{ $t('instance') }}</li>
|
||||||
|
<li @click="nav('moderators')" :class="{ active: page == 'moderators' }"><fa :icon="faHeadset" fixed-width/>{{ $t('moderators') }}</li>
|
||||||
|
<li @click="nav('users')" :class="{ active: page == 'users' }"><fa icon="users" fixed-width/>{{ $t('users') }}</li>
|
||||||
|
<!-- <li @click="nav('federation')" :class="{ active: page == 'federation' }"><fa :icon="faShareAlt" fixed-width/>{{ $t('federation') }}</li> -->
|
||||||
|
<li @click="nav('emoji')" :class="{ active: page == 'emoji' }"><fa :icon="faGrin" fixed-width/>{{ $t('emoji') }}</li>
|
||||||
|
<li @click="nav('announcements')" :class="{ active: page == 'announcements' }"><fa icon="broadcast-tower" fixed-width/>{{ $t('announcements') }}</li>
|
||||||
|
<li @click="nav('hashtags')" :class="{ active: page == 'hashtags' }"><fa icon="hashtag" fixed-width/>{{ $t('hashtags') }}</li>
|
||||||
|
|
||||||
|
<!-- <li @click="nav('drive')" :class="{ active: page == 'drive' }"><fa icon="cloud" fixed-width/>{{ $t('@.drive') }}</li> -->
|
||||||
|
</ul>
|
||||||
|
<div class="back-to-misskey">
|
||||||
|
<a href="/"><fa :icon="faArrowLeft"/> {{ $t('back-to-misskey') }}</a>
|
||||||
|
</div>
|
||||||
|
<div class="version">
|
||||||
|
<small>Misskey {{ version }}</small>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
<main>
|
||||||
|
<div class="page">
|
||||||
|
<div v-if="page == 'dashboard'"><x-dashboard/></div>
|
||||||
|
<div v-if="page == 'instance'"><x-instance/></div>
|
||||||
|
<div v-if="page == 'moderators'"><x-moderators/></div>
|
||||||
|
<div v-if="page == 'users'"><x-users/></div>
|
||||||
|
<div v-if="page == 'emoji'"><x-emoji/></div>
|
||||||
|
<div v-if="page == 'announcements'"><x-announcements/></div>
|
||||||
|
<div v-if="page == 'hashtags'"><x-hashtags/></div>
|
||||||
|
<div v-if="page == 'drive'"></div>
|
||||||
|
<div v-if="page == 'update'"></div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
import i18n from '../../i18n';
|
||||||
|
import { version } from '../../config';
|
||||||
|
import XDashboard from "./dashboard.vue";
|
||||||
|
import XInstance from "./instance.vue";
|
||||||
|
import XModerators from "./moderators.vue";
|
||||||
|
import XEmoji from "./emoji.vue";
|
||||||
|
import XAnnouncements from "./announcements.vue";
|
||||||
|
import XHashtags from "./hashtags.vue";
|
||||||
|
import XUsers from "./users.vue";
|
||||||
|
import { faHeadset, faArrowLeft, faShareAlt } from '@fortawesome/free-solid-svg-icons';
|
||||||
|
import { faGrin } from '@fortawesome/free-regular-svg-icons';
|
||||||
|
|
||||||
|
// Detect the user agent
|
||||||
|
const ua = navigator.userAgent.toLowerCase();
|
||||||
|
const isMobile = /mobile|iphone|ipad|android/.test(ua);
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
i18n: i18n('admin/views/index.vue'),
|
||||||
|
components: {
|
||||||
|
XDashboard,
|
||||||
|
XInstance,
|
||||||
|
XModerators,
|
||||||
|
XEmoji,
|
||||||
|
XAnnouncements,
|
||||||
|
XHashtags,
|
||||||
|
XUsers
|
||||||
|
},
|
||||||
|
provide: {
|
||||||
|
isMobile
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
page: 'dashboard',
|
||||||
|
version,
|
||||||
|
isMobile,
|
||||||
|
navOpend: !isMobile,
|
||||||
|
faGrin,
|
||||||
|
faArrowLeft,
|
||||||
|
faHeadset,
|
||||||
|
faShareAlt
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
nav(page: string) {
|
||||||
|
this.page = page;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
.mk-admin
|
||||||
|
$headerHeight = 48px
|
||||||
|
|
||||||
|
display flex
|
||||||
|
height 100%
|
||||||
|
|
||||||
|
> header
|
||||||
|
position fixed
|
||||||
|
top 0
|
||||||
|
z-index 10000
|
||||||
|
width 100%
|
||||||
|
color var(--mobileHeaderFg)
|
||||||
|
background-color var(--mobileHeaderBg)
|
||||||
|
box-shadow 0 1px 0 rgba(#000, 0.075)
|
||||||
|
|
||||||
|
&, *
|
||||||
|
user-select none
|
||||||
|
|
||||||
|
> span
|
||||||
|
display block
|
||||||
|
line-height $headerHeight
|
||||||
|
text-align center
|
||||||
|
|
||||||
|
> .nav
|
||||||
|
display block
|
||||||
|
position absolute
|
||||||
|
top 0
|
||||||
|
left 0
|
||||||
|
z-index 10001
|
||||||
|
padding 0
|
||||||
|
width $headerHeight
|
||||||
|
font-size 1.4em
|
||||||
|
line-height $headerHeight
|
||||||
|
border-right solid 1px rgba(#000, 0.1)
|
||||||
|
|
||||||
|
> [data-icon]
|
||||||
|
transition all 0.2s ease
|
||||||
|
|
||||||
|
> nav
|
||||||
|
position fixed
|
||||||
|
z-index 20001
|
||||||
|
top 0
|
||||||
|
left 0
|
||||||
|
width 250px
|
||||||
|
height 100vh
|
||||||
|
overflow auto
|
||||||
|
background #333
|
||||||
|
color #fff
|
||||||
|
|
||||||
|
> .mi
|
||||||
|
text-align center
|
||||||
|
|
||||||
|
> svg
|
||||||
|
width 24px
|
||||||
|
height 82px
|
||||||
|
vertical-align top
|
||||||
|
fill #fff
|
||||||
|
opacity 0.7
|
||||||
|
|
||||||
|
> .me
|
||||||
|
display flex
|
||||||
|
margin 0 16px 16px 16px
|
||||||
|
padding 16px 0
|
||||||
|
align-items center
|
||||||
|
border-top solid 1px #555
|
||||||
|
border-bottom solid 1px #555
|
||||||
|
|
||||||
|
> .avatar
|
||||||
|
height 48px
|
||||||
|
border-radius 100%
|
||||||
|
vertical-align middle
|
||||||
|
|
||||||
|
> .name
|
||||||
|
margin 0 16px
|
||||||
|
padding 0
|
||||||
|
color #fff
|
||||||
|
overflow hidden
|
||||||
|
text-overflow ellipsis
|
||||||
|
white-space nowrap
|
||||||
|
font-size 15px
|
||||||
|
|
||||||
|
> .back-to-misskey
|
||||||
|
margin 16px 16px 0 16px
|
||||||
|
padding 0
|
||||||
|
border-top solid 1px #555
|
||||||
|
|
||||||
|
> a
|
||||||
|
display block
|
||||||
|
padding 16px 4px
|
||||||
|
color inherit
|
||||||
|
text-decoration none
|
||||||
|
color #eee
|
||||||
|
font-size 15px
|
||||||
|
|
||||||
|
&:hover
|
||||||
|
color #fff
|
||||||
|
|
||||||
|
> [data-icon]
|
||||||
|
margin-right 6px
|
||||||
|
|
||||||
|
> .version
|
||||||
|
margin 0 16px 16px 16px
|
||||||
|
padding-top 16px
|
||||||
|
border-top solid 1px #555
|
||||||
|
text-align center
|
||||||
|
|
||||||
|
> small
|
||||||
|
opacity 0.7
|
||||||
|
|
||||||
|
> ul
|
||||||
|
margin 0
|
||||||
|
padding 0
|
||||||
|
list-style none
|
||||||
|
font-size 15px
|
||||||
|
|
||||||
|
> li
|
||||||
|
display block
|
||||||
|
padding 10px 16px
|
||||||
|
margin 0
|
||||||
|
cursor pointer
|
||||||
|
user-select none
|
||||||
|
color #eee
|
||||||
|
transition margin-left 0.2s ease
|
||||||
|
|
||||||
|
&:hover
|
||||||
|
color #fff
|
||||||
|
|
||||||
|
> [data-icon]
|
||||||
|
margin-right 6px
|
||||||
|
|
||||||
|
&.active
|
||||||
|
margin-left 8px
|
||||||
|
color var(--primary) !important
|
||||||
|
|
||||||
|
&:after
|
||||||
|
content ""
|
||||||
|
display block
|
||||||
|
position absolute
|
||||||
|
top 0
|
||||||
|
right 0
|
||||||
|
bottom 0
|
||||||
|
margin auto 0
|
||||||
|
height 0
|
||||||
|
border-top solid 16px transparent
|
||||||
|
border-right solid 16px var(--bg)
|
||||||
|
border-bottom solid 16px transparent
|
||||||
|
border-left solid 16px transparent
|
||||||
|
|
||||||
|
> .nav-backdrop
|
||||||
|
position fixed
|
||||||
|
top 0
|
||||||
|
left 0
|
||||||
|
z-index 20000
|
||||||
|
width 100%
|
||||||
|
height 100%
|
||||||
|
background var(--mobileNavBackdrop)
|
||||||
|
|
||||||
|
> main
|
||||||
|
width 100%
|
||||||
|
padding 0 0 0 250px
|
||||||
|
|
||||||
|
> .page
|
||||||
|
max-width 1150px
|
||||||
|
|
||||||
|
&.isMobile
|
||||||
|
> main
|
||||||
|
padding $headerHeight 0 0 0
|
||||||
|
|
||||||
|
</style>
|
||||||
224
src/client/app/admin/views/instance.vue
Normal file
224
src/client/app/admin/views/instance.vue
Normal file
@@ -0,0 +1,224 @@
|
|||||||
|
<template>
|
||||||
|
<div class="axbwjelsbymowqjyywpirzhdlszoncqs">
|
||||||
|
<ui-card>
|
||||||
|
<div slot="title"><fa icon="cog"/> {{ $t('instance') }}</div>
|
||||||
|
<section class="fit-top fit-bottom">
|
||||||
|
<ui-input :value="host" readonly>{{ $t('host') }}</ui-input>
|
||||||
|
<ui-input v-model="name">{{ $t('instance-name') }}</ui-input>
|
||||||
|
<ui-textarea v-model="description">{{ $t('instance-description') }}</ui-textarea>
|
||||||
|
<ui-input v-model="bannerUrl"><i slot="icon"><fa icon="link"/></i>{{ $t('banner-url') }}</ui-input>
|
||||||
|
<ui-input v-model="languages"><i slot="icon"><fa icon="language"/></i>{{ $t('languages') }}<span slot="desc">{{ $t('languages-desc') }}</span></ui-input>
|
||||||
|
</section>
|
||||||
|
<section class="fit-bottom">
|
||||||
|
<header><fa :icon="faHeadset"/> {{ $t('maintainer-config') }}</header>
|
||||||
|
<ui-input v-model="maintainerName">{{ $t('maintainer-name') }}</ui-input>
|
||||||
|
<ui-input v-model="maintainerEmail" type="email"><i slot="icon"><fa :icon="['far', 'envelope']"/></i>{{ $t('maintainer-email') }}</ui-input>
|
||||||
|
</section>
|
||||||
|
<section class="fit-top fit-bottom">
|
||||||
|
<ui-input v-model="maxNoteTextLength">{{ $t('max-note-text-length') }}</ui-input>
|
||||||
|
</section>
|
||||||
|
<section class="fit-bottom">
|
||||||
|
<header><fa icon="cloud"/> {{ $t('drive-config') }}</header>
|
||||||
|
<ui-switch v-model="cacheRemoteFiles">{{ $t('cache-remote-files') }}<span slot="desc">{{ $t('cache-remote-files-desc') }}</span></ui-switch>
|
||||||
|
<ui-input v-model="localDriveCapacityMb" type="number">{{ $t('local-drive-capacity-mb') }}<span slot="suffix">MB</span><span slot="desc">{{ $t('mb') }}</span></ui-input>
|
||||||
|
<ui-input v-model="remoteDriveCapacityMb" type="number" :disabled="!cacheRemoteFiles">{{ $t('remote-drive-capacity-mb') }}<span slot="suffix">MB</span><span slot="desc">{{ $t('mb') }}</span></ui-input>
|
||||||
|
</section>
|
||||||
|
<section class="fit-bottom">
|
||||||
|
<header><fa :icon="faShieldAlt"/> {{ $t('recaptcha-config') }}</header>
|
||||||
|
<ui-switch v-model="enableRecaptcha">{{ $t('enable-recaptcha') }}</ui-switch>
|
||||||
|
<ui-info>{{ $t('recaptcha-info') }}</ui-info>
|
||||||
|
<ui-input v-model="recaptchaSiteKey" :disabled="!enableRecaptcha"><i slot="icon"><fa icon="key"/></i>{{ $t('recaptcha-site-key') }}</ui-input>
|
||||||
|
<ui-input v-model="recaptchaSecretKey" :disabled="!enableRecaptcha"><i slot="icon"><fa icon="key"/></i>{{ $t('recaptcha-secret-key') }}</ui-input>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<header><fa :icon="faGhost"/> {{ $t('proxy-account-config') }}</header>
|
||||||
|
<ui-info>{{ $t('proxy-account-info') }}</ui-info>
|
||||||
|
<ui-input v-model="proxyAccount"><span slot="prefix">@</span>{{ $t('proxy-account-username') }}<span slot="desc">{{ $t('proxy-account-username-desc') }}</span></ui-input>
|
||||||
|
<ui-info warn>{{ $t('proxy-account-warn') }}</ui-info>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<ui-switch v-model="disableRegistration">{{ $t('disable-registration') }}</ui-switch>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<ui-switch v-model="disableLocalTimeline">{{ $t('disable-local-timeline') }}</ui-switch>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<ui-button @click="updateMeta">{{ $t('save') }}</ui-button>
|
||||||
|
</section>
|
||||||
|
</ui-card>
|
||||||
|
|
||||||
|
<ui-card>
|
||||||
|
<div slot="title">{{ $t('invite') }}</div>
|
||||||
|
<section>
|
||||||
|
<ui-button @click="invite">{{ $t('invite') }}</ui-button>
|
||||||
|
<p v-if="inviteCode">Code: <code>{{ inviteCode }}</code></p>
|
||||||
|
</section>
|
||||||
|
</ui-card>
|
||||||
|
|
||||||
|
<ui-card>
|
||||||
|
<div slot="title"><fa :icon="['fab', 'twitter']"/> {{ $t('twitter-integration-config') }}</div>
|
||||||
|
<section>
|
||||||
|
<ui-switch v-model="enableTwitterIntegration">{{ $t('enable-twitter-integration') }}</ui-switch>
|
||||||
|
<ui-info>{{ $t('twitter-integration-info') }}</ui-info>
|
||||||
|
<ui-input v-model="twitterConsumerKey" :disabled="!enableTwitterIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('twitter-integration-consumer-key') }}</ui-input>
|
||||||
|
<ui-input v-model="twitterConsumerSecret" :disabled="!enableTwitterIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('twitter-integration-consumer-secret') }}</ui-input>
|
||||||
|
<ui-button @click="updateMeta">{{ $t('save') }}</ui-button>
|
||||||
|
</section>
|
||||||
|
</ui-card>
|
||||||
|
|
||||||
|
<ui-card>
|
||||||
|
<div slot="title"><fa :icon="['fab', 'github']"/> {{ $t('github-integration-config') }}</div>
|
||||||
|
<section>
|
||||||
|
<ui-switch v-model="enableGithubIntegration">{{ $t('enable-github-integration') }}</ui-switch>
|
||||||
|
<ui-info>{{ $t('github-integration-info') }}</ui-info>
|
||||||
|
<ui-input v-model="githubClientId" :disabled="!enableGithubIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('github-integration-client-id') }}</ui-input>
|
||||||
|
<ui-input v-model="githubClientSecret" :disabled="!enableGithubIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('github-integration-client-secret') }}</ui-input>
|
||||||
|
<ui-button @click="updateMeta">{{ $t('save') }}</ui-button>
|
||||||
|
</section>
|
||||||
|
</ui-card>
|
||||||
|
|
||||||
|
<ui-card>
|
||||||
|
<div slot="title"><fa :icon="['fab', 'discord']"/> {{ $t('discord-integration-config') }}</div>
|
||||||
|
<section>
|
||||||
|
<ui-switch v-model="enableDiscordIntegration">{{ $t('enable-discord-integration') }}</ui-switch>
|
||||||
|
<ui-info>{{ $t('discord-integration-info') }}</ui-info>
|
||||||
|
<ui-input v-model="discordClientId" :disabled="!enableDiscordIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('discord-integration-client-id') }}</ui-input>
|
||||||
|
<ui-input v-model="discordClientSecret" :disabled="!enableDiscordIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('discord-integration-client-secret') }}</ui-input>
|
||||||
|
<ui-button @click="updateMeta">{{ $t('save') }}</ui-button>
|
||||||
|
</section>
|
||||||
|
</ui-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
import i18n from '../../i18n';
|
||||||
|
import { host } from '../../config';
|
||||||
|
import { toUnicode } from 'punycode';
|
||||||
|
import { faHeadset, faShieldAlt, faGhost } from '@fortawesome/free-solid-svg-icons';
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
i18n: i18n('admin/views/instance.vue'),
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
host: toUnicode(host),
|
||||||
|
maintainerName: null,
|
||||||
|
maintainerEmail: null,
|
||||||
|
disableRegistration: false,
|
||||||
|
disableLocalTimeline: false,
|
||||||
|
bannerUrl: null,
|
||||||
|
name: null,
|
||||||
|
description: null,
|
||||||
|
languages: null,
|
||||||
|
cacheRemoteFiles: false,
|
||||||
|
localDriveCapacityMb: null,
|
||||||
|
remoteDriveCapacityMb: null,
|
||||||
|
maxNoteTextLength: null,
|
||||||
|
enableRecaptcha: false,
|
||||||
|
recaptchaSiteKey: null,
|
||||||
|
recaptchaSecretKey: null,
|
||||||
|
enableTwitterIntegration: false,
|
||||||
|
twitterConsumerKey: null,
|
||||||
|
twitterConsumerSecret: null,
|
||||||
|
enableGithubIntegration: false,
|
||||||
|
githubClientId: null,
|
||||||
|
githubClientSecret: null,
|
||||||
|
enableDiscordIntegration: false,
|
||||||
|
discordClientId: null,
|
||||||
|
discordClientSecret: null,
|
||||||
|
proxyAccount: null,
|
||||||
|
inviteCode: null,
|
||||||
|
faHeadset, faShieldAlt, faGhost
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
created() {
|
||||||
|
this.$root.getMeta().then(meta => {
|
||||||
|
this.maintainerName = meta.maintainer.name;
|
||||||
|
this.maintainerEmail = meta.maintainer.email;
|
||||||
|
this.bannerUrl = meta.bannerUrl;
|
||||||
|
this.name = meta.name;
|
||||||
|
this.description = meta.description;
|
||||||
|
this.languages = meta.langs.join(' ');
|
||||||
|
this.cacheRemoteFiles = meta.cacheRemoteFiles;
|
||||||
|
this.localDriveCapacityMb = meta.driveCapacityPerLocalUserMb;
|
||||||
|
this.remoteDriveCapacityMb = meta.driveCapacityPerRemoteUserMb;
|
||||||
|
this.maxNoteTextLength = meta.maxNoteTextLength;
|
||||||
|
this.enableRecaptcha = meta.enableRecaptcha;
|
||||||
|
this.recaptchaSiteKey = meta.recaptchaSiteKey;
|
||||||
|
this.recaptchaSecretKey = meta.recaptchaSecretKey;
|
||||||
|
this.proxyAccount = meta.proxyAccount;
|
||||||
|
this.enableTwitterIntegration = meta.enableTwitterIntegration;
|
||||||
|
this.twitterConsumerKey = meta.twitterConsumerKey;
|
||||||
|
this.twitterConsumerSecret = meta.twitterConsumerSecret;
|
||||||
|
this.enableGithubIntegration = meta.enableGithubIntegration;
|
||||||
|
this.githubClientId = meta.githubClientId;
|
||||||
|
this.githubClientSecret = meta.githubClientSecret;
|
||||||
|
this.enableDiscordIntegration = meta.enableDiscordIntegration;
|
||||||
|
this.discordClientId = meta.discordClientId;
|
||||||
|
this.discordClientSecret = meta.discordClientSecret;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
invite() {
|
||||||
|
this.$root.api('admin/invite').then(x => {
|
||||||
|
this.inviteCode = x.code;
|
||||||
|
}).catch(e => {
|
||||||
|
this.$root.alert({
|
||||||
|
type: 'error',
|
||||||
|
text: e
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
updateMeta() {
|
||||||
|
this.$root.api('admin/update-meta', {
|
||||||
|
maintainerName: this.maintainerName,
|
||||||
|
maintainerEmail: this.maintainerEmail,
|
||||||
|
disableRegistration: this.disableRegistration,
|
||||||
|
disableLocalTimeline: this.disableLocalTimeline,
|
||||||
|
bannerUrl: this.bannerUrl,
|
||||||
|
name: this.name,
|
||||||
|
description: this.description,
|
||||||
|
langs: this.languages.split(' '),
|
||||||
|
cacheRemoteFiles: this.cacheRemoteFiles,
|
||||||
|
localDriveCapacityMb: parseInt(this.localDriveCapacityMb, 10),
|
||||||
|
remoteDriveCapacityMb: parseInt(this.remoteDriveCapacityMb, 10),
|
||||||
|
maxNoteTextLength: parseInt(this.maxNoteTextLength, 10),
|
||||||
|
enableRecaptcha: this.enableRecaptcha,
|
||||||
|
recaptchaSiteKey: this.recaptchaSiteKey,
|
||||||
|
recaptchaSecretKey: this.recaptchaSecretKey,
|
||||||
|
proxyAccount: this.proxyAccount,
|
||||||
|
enableTwitterIntegration: this.enableTwitterIntegration,
|
||||||
|
twitterConsumerKey: this.twitterConsumerKey,
|
||||||
|
twitterConsumerSecret: this.twitterConsumerSecret,
|
||||||
|
enableGithubIntegration: this.enableGithubIntegration,
|
||||||
|
githubClientId: this.githubClientId,
|
||||||
|
githubClientSecret: this.githubClientSecret,
|
||||||
|
enableDiscordIntegration: this.enableDiscordIntegration,
|
||||||
|
discordClientId: this.discordClientId,
|
||||||
|
discordClientSecret: this.discordClientSecret
|
||||||
|
}).then(() => {
|
||||||
|
this.$root.alert({
|
||||||
|
type: 'success',
|
||||||
|
text: this.$t('saved')
|
||||||
|
});
|
||||||
|
}).catch(e => {
|
||||||
|
this.$root.alert({
|
||||||
|
type: 'error',
|
||||||
|
text: e
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
.axbwjelsbymowqjyywpirzhdlszoncqs
|
||||||
|
@media (min-width 500px)
|
||||||
|
padding 16px
|
||||||
|
|
||||||
|
</style>
|
||||||
61
src/client/app/admin/views/moderators.vue
Normal file
61
src/client/app/admin/views/moderators.vue
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
<template>
|
||||||
|
<div class="jnhmugbb">
|
||||||
|
<ui-card>
|
||||||
|
<div slot="title"><fa icon="plus"/> {{ $t('add-moderator.title') }}</div>
|
||||||
|
<section class="fit-top">
|
||||||
|
<ui-input v-model="username" type="text">
|
||||||
|
<span slot="prefix">@</span>
|
||||||
|
</ui-input>
|
||||||
|
<ui-button @click="add" :disabled="adding">{{ $t('add-moderator.add') }}</ui-button>
|
||||||
|
</section>
|
||||||
|
</ui-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
import i18n from '../../i18n';
|
||||||
|
import parseAcct from "../../../../misc/acct/parse";
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
i18n: i18n('admin/views/moderators.vue'),
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
username: '',
|
||||||
|
adding: false
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
async add() {
|
||||||
|
this.adding = true;
|
||||||
|
|
||||||
|
const process = async () => {
|
||||||
|
const user = await this.$root.api('users/show', parseAcct(this.username));
|
||||||
|
await this.$root.api('admin/moderators/add', { userId: user.id });
|
||||||
|
this.$root.alert({
|
||||||
|
type: 'success',
|
||||||
|
text: this.$t('add-moderator.added')
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
await process().catch(e => {
|
||||||
|
this.$root.alert({
|
||||||
|
type: 'error',
|
||||||
|
text: e.toString()
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
this.adding = false;
|
||||||
|
},
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
.jnhmugbb
|
||||||
|
@media (min-width 500px)
|
||||||
|
padding 16px
|
||||||
|
|
||||||
|
</style>
|
||||||
163
src/client/app/admin/views/users.vue
Normal file
163
src/client/app/admin/views/users.vue
Normal file
@@ -0,0 +1,163 @@
|
|||||||
|
<template>
|
||||||
|
<div class="ucnffhbtogqgscfmqcymwmmupoknpfsw">
|
||||||
|
<ui-card>
|
||||||
|
<div slot="title">{{ $t('verify-user') }}</div>
|
||||||
|
<section class="fit-top">
|
||||||
|
<ui-input v-model="verifyUsername" type="text">
|
||||||
|
<span slot="prefix">@</span>
|
||||||
|
</ui-input>
|
||||||
|
<ui-button @click="verifyUser" :disabled="verifying">{{ $t('verify') }}</ui-button>
|
||||||
|
</section>
|
||||||
|
</ui-card>
|
||||||
|
|
||||||
|
<ui-card>
|
||||||
|
<div slot="title">{{ $t('unverify-user') }}</div>
|
||||||
|
<section class="fit-top">
|
||||||
|
<ui-input v-model="unverifyUsername" type="text">
|
||||||
|
<span slot="prefix">@</span>
|
||||||
|
</ui-input>
|
||||||
|
<ui-button @click="unverifyUser" :disabled="unverifying">{{ $t('unverify') }}</ui-button>
|
||||||
|
</section>
|
||||||
|
</ui-card>
|
||||||
|
|
||||||
|
<ui-card>
|
||||||
|
<div slot="title">{{ $t('suspend-user') }}</div>
|
||||||
|
<section class="fit-top">
|
||||||
|
<ui-input v-model="suspendUsername" type="text">
|
||||||
|
<span slot="prefix">@</span>
|
||||||
|
</ui-input>
|
||||||
|
<ui-button @click="suspendUser" :disabled="suspending">{{ $t('suspend') }}</ui-button>
|
||||||
|
</section>
|
||||||
|
</ui-card>
|
||||||
|
|
||||||
|
<ui-card>
|
||||||
|
<div slot="title">{{ $t('unsuspend-user') }}</div>
|
||||||
|
<section class="fit-top">
|
||||||
|
<ui-input v-model="unsuspendUsername" type="text">
|
||||||
|
<span slot="prefix">@</span>
|
||||||
|
</ui-input>
|
||||||
|
<ui-button @click="unsuspendUser" :disabled="unsuspending">{{ $t('unsuspend') }}</ui-button>
|
||||||
|
</section>
|
||||||
|
</ui-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
import i18n from '../../i18n';
|
||||||
|
import parseAcct from "../../../../misc/acct/parse";
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
i18n: i18n('admin/views/users.vue'),
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
verifyUsername: null,
|
||||||
|
verifying: false,
|
||||||
|
unverifyUsername: null,
|
||||||
|
unverifying: false,
|
||||||
|
suspendUsername: null,
|
||||||
|
suspending: false,
|
||||||
|
unsuspendUsername: null,
|
||||||
|
unsuspending: false
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
async verifyUser() {
|
||||||
|
this.verifying = true;
|
||||||
|
|
||||||
|
const process = async () => {
|
||||||
|
const user = await this.$root.api('users/show', parseAcct(this.verifyUsername));
|
||||||
|
await this.$root.api('admin/verify-user', { userId: user.id });
|
||||||
|
this.$root.alert({
|
||||||
|
type: 'success',
|
||||||
|
text: this.$t('verified')
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
await process().catch(e => {
|
||||||
|
this.$root.alert({
|
||||||
|
type: 'error',
|
||||||
|
text: e.toString()
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
this.verifying = false;
|
||||||
|
},
|
||||||
|
|
||||||
|
async unverifyUser() {
|
||||||
|
this.unverifying = true;
|
||||||
|
|
||||||
|
const process = async () => {
|
||||||
|
const user = await this.$root.api('users/show', parseAcct(this.unverifyUsername));
|
||||||
|
await this.$root.api('admin/unverify-user', { userId: user.id });
|
||||||
|
this.$root.alert({
|
||||||
|
type: 'success',
|
||||||
|
text: this.$t('unverified')
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
await process().catch(e => {
|
||||||
|
this.$root.alert({
|
||||||
|
type: 'error',
|
||||||
|
text: e.toString()
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
this.unverifying = false;
|
||||||
|
},
|
||||||
|
|
||||||
|
async suspendUser() {
|
||||||
|
this.suspending = true;
|
||||||
|
|
||||||
|
const process = async () => {
|
||||||
|
const user = await this.$root.api('users/show', parseAcct(this.suspendUsername));
|
||||||
|
await this.$root.api('admin/suspend-user', { userId: user.id });
|
||||||
|
this.$root.alert({
|
||||||
|
type: 'success',
|
||||||
|
text: this.$t('suspended')
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
await process().catch(e => {
|
||||||
|
this.$root.alert({
|
||||||
|
type: 'error',
|
||||||
|
text: e.toString()
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
this.suspending = false;
|
||||||
|
},
|
||||||
|
|
||||||
|
async unsuspendUser() {
|
||||||
|
this.unsuspending = true;
|
||||||
|
|
||||||
|
const process = async () => {
|
||||||
|
const user = await this.$root.api('users/show', parseAcct(this.unsuspendUsername));
|
||||||
|
await this.$root.api('admin/unsuspend-user', { userId: user.id });
|
||||||
|
this.$root.alert({
|
||||||
|
type: 'success',
|
||||||
|
text: this.$t('unsuspended')
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
await process().catch(e => {
|
||||||
|
this.$root.alert({
|
||||||
|
type: 'error',
|
||||||
|
text: e.toString()
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
this.unsuspending = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
.ucnffhbtogqgscfmqcymwmmupoknpfsw
|
||||||
|
@media (min-width 500px)
|
||||||
|
padding 16px
|
||||||
|
|
||||||
|
</style>
|
||||||
@@ -13,13 +13,6 @@ html
|
|||||||
body
|
body
|
||||||
overflow-wrap break-word
|
overflow-wrap break-word
|
||||||
|
|
||||||
#error
|
|
||||||
padding 32px
|
|
||||||
color #fff
|
|
||||||
|
|
||||||
hr
|
|
||||||
border solid 1px #fff
|
|
||||||
|
|
||||||
#nprogress
|
#nprogress
|
||||||
pointer-events none
|
pointer-events none
|
||||||
|
|
||||||
@@ -128,31 +121,5 @@ pre
|
|||||||
overflow auto
|
overflow auto
|
||||||
tab-size 2
|
tab-size 2
|
||||||
|
|
||||||
[data-fa]
|
[data-icon]
|
||||||
display inline-block
|
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
|
|
||||||
|
|||||||
@@ -9,14 +9,11 @@ import './style.styl';
|
|||||||
|
|
||||||
import init from '../init';
|
import init from '../init';
|
||||||
import Index from './views/index.vue';
|
import Index from './views/index.vue';
|
||||||
import * as config from '../config';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* init
|
* init
|
||||||
*/
|
*/
|
||||||
init(launch => {
|
init(launch => {
|
||||||
document.title = `${config.name} | %i18n:common.application-authorization%`;
|
|
||||||
|
|
||||||
// Init router
|
// Init router
|
||||||
const router = new VueRouter({
|
const router = new VueRouter({
|
||||||
mode: 'history',
|
mode: 'history',
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="form">
|
<div class="form">
|
||||||
<header>
|
<header>
|
||||||
<h1>%i18n:@share-access%</h1>
|
<h1 v-html="$t('share-access', { name: app.name })"></h1>
|
||||||
<img :src="app.iconUrl"/>
|
<img :src="app.iconUrl"/>
|
||||||
</header>
|
</header>
|
||||||
<div class="app">
|
<div class="app">
|
||||||
@@ -11,32 +11,35 @@
|
|||||||
<p class="description">{{ app.description }}</p>
|
<p class="description">{{ app.description }}</p>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<h2>%i18n:@permission-ask%</h2>
|
<h2>{{ $t('permission-ask') }}</h2>
|
||||||
<ul>
|
<ul>
|
||||||
<template v-for="p in app.permission">
|
<template v-for="p in app.permission">
|
||||||
<li v-if="p == 'account-read'">%i18n:@account-read%</li>
|
<li v-if="p == 'account-read'">{{ $t('account-read') }}</li>
|
||||||
<li v-if="p == 'account-write'">%i18n:@account-write%</li>
|
<li v-if="p == 'account-write'">{{ $t('account-write') }}</li>
|
||||||
<li v-if="p == 'note-write'">%i18n:@note-write%</li>
|
<li v-if="p == 'note-write'">{{ $t('note-write') }}</li>
|
||||||
<li v-if="p == 'like-write'">%i18n:@like-write%</li>
|
<li v-if="p == 'like-write'">{{ $t('like-write') }}</li>
|
||||||
<li v-if="p == 'following-write'">%i18n:@following-write%</li>
|
<li v-if="p == 'following-write'">{{ $t('following-write') }}</li>
|
||||||
<li v-if="p == 'drive-read'">%i18n:@drive-read%</li>
|
<li v-if="p == 'drive-read'">{{ $t('drive-read') }}</li>
|
||||||
<li v-if="p == 'drive-write'">%i18n:@drive-write%</li>
|
<li v-if="p == 'drive-write'">{{ $t('drive-write') }}</li>
|
||||||
<li v-if="p == 'notification-read'">%i18n:@notification-read%</li>
|
<li v-if="p == 'notification-read'">{{ $t('notification-read') }}</li>
|
||||||
<li v-if="p == 'notification-write'">%i18n:@notification-write%</li>
|
<li v-if="p == 'notification-write'">{{ $t('notification-write') }}</li>
|
||||||
</template>
|
</template>
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
<div class="action">
|
<div class="action">
|
||||||
<button @click="cancel">%i18n:@cancel%</button>
|
<button @click="cancel">{{ $t('cancel') }}</button>
|
||||||
<button @click="accept">%i18n:@accept%</button>
|
<button @click="accept">{{ $t('accept') }}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
|
import i18n from '../../i18n';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
|
i18n: i18n('auth/views/form.vue'),
|
||||||
props: ['session'],
|
props: ['session'],
|
||||||
computed: {
|
computed: {
|
||||||
app(): any {
|
app(): any {
|
||||||
@@ -45,7 +48,7 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
cancel() {
|
cancel() {
|
||||||
(this as any).api('auth/deny', {
|
this.$root.api('auth/deny', {
|
||||||
token: this.session.token
|
token: this.session.token
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.$emit('denied');
|
this.$emit('denied');
|
||||||
@@ -53,7 +56,7 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
accept() {
|
accept() {
|
||||||
(this as any).api('auth/accept', {
|
this.$root.api('auth/accept', {
|
||||||
token: this.session.token
|
token: this.session.token
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.$emit('accepted');
|
this.$emit('accepted');
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="index">
|
<div class="index">
|
||||||
<main v-if="$store.getters.isSignedIn">
|
<main v-if="$store.getters.isSignedIn">
|
||||||
<p class="fetching" v-if="fetching">%i18n:@loading%<mk-ellipsis/></p>
|
<p class="fetching" v-if="fetching">{{ $t('loading') }}<mk-ellipsis/></p>
|
||||||
<x-form
|
<x-form
|
||||||
class="form"
|
class="form"
|
||||||
ref="form"
|
ref="form"
|
||||||
@@ -11,20 +11,20 @@
|
|||||||
@accepted="accepted"
|
@accepted="accepted"
|
||||||
/>
|
/>
|
||||||
<div class="denied" v-if="state == 'denied'">
|
<div class="denied" v-if="state == 'denied'">
|
||||||
<h1>%i18n:@denied%</h1>
|
<h1>{{ $t('denied') }}</h1>
|
||||||
<p>%i18n:@denied-paragraph%</p>
|
<p>{{ $t('denied-paragraph') }}</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="accepted" v-if="state == 'accepted'">
|
<div class="accepted" v-if="state == 'accepted'">
|
||||||
<h1>{{ session.app.isAuthorized ? '%i18n:@already-authorized%' : '%i18n:@allowed%' }}</h1>
|
<h1>{{ session.app.isAuthorized ? this.$t('already-authorized') : this.$t('allowed') }}</h1>
|
||||||
<p v-if="session.app.callbackUrl">%i18n:@callback-url%<mk-ellipsis/></p>
|
<p v-if="session.app.callbackUrl">{{ $t('callback-url') }}<mk-ellipsis/></p>
|
||||||
<p v-if="!session.app.callbackUrl">%i18n:@please-go-back%</p>
|
<p v-if="!session.app.callbackUrl">{{ $t('please-go-back') }}</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="error" v-if="state == 'fetch-session-error'">
|
<div class="error" v-if="state == 'fetch-session-error'">
|
||||||
<p>%i18n:@error%</p>
|
<p>{{ $t('error') }}</p>
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
<main class="signin" v-if="!$store.getters.isSignedIn">
|
<main class="signin" v-if="!$store.getters.isSignedIn">
|
||||||
<h1>%i18n:@sign-in%</h1>
|
<h1>{{ $t('sign-in') }}</h1>
|
||||||
<mk-signin/>
|
<mk-signin/>
|
||||||
</main>
|
</main>
|
||||||
<footer><img src="/assets/auth/icon.svg" alt="Misskey"/></footer>
|
<footer><img src="/assets/auth/icon.svg" alt="Misskey"/></footer>
|
||||||
@@ -33,9 +33,11 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
|
import i18n from '../../i18n';
|
||||||
import XForm from './form.vue';
|
import XForm from './form.vue';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
|
i18n: i18n('auth/views/index.vue'),
|
||||||
components: {
|
components: {
|
||||||
XForm
|
XForm
|
||||||
},
|
},
|
||||||
@@ -55,7 +57,7 @@ export default Vue.extend({
|
|||||||
if (!this.$store.getters.isSignedIn) return;
|
if (!this.$store.getters.isSignedIn) return;
|
||||||
|
|
||||||
// Fetch session
|
// Fetch session
|
||||||
(this as any).api('auth/session/show', {
|
this.$root.api('auth/session/show', {
|
||||||
token: this.token
|
token: this.token
|
||||||
}).then(session => {
|
}).then(session => {
|
||||||
this.session = session;
|
this.session = session;
|
||||||
@@ -63,7 +65,7 @@ export default Vue.extend({
|
|||||||
|
|
||||||
// 既に連携していた場合
|
// 既に連携していた場合
|
||||||
if (this.session.app.isAuthorized) {
|
if (this.session.app.isAuthorized) {
|
||||||
(this as any).api('auth/accept', {
|
this.$root.api('auth/accept', {
|
||||||
token: this.session.token
|
token: this.session.token
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.accepted();
|
this.accepted();
|
||||||
|
|||||||
@@ -3,15 +3,9 @@
|
|||||||
* (ENTRY POINT)
|
* (ENTRY POINT)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
|
||||||
* ドメインに基づいて適切なスクリプトを読み込みます。
|
|
||||||
* ユーザーの言語およびモバイル端末か否かも考慮します。
|
|
||||||
* webpackは介さないためrequireやimportは使えません。
|
|
||||||
*/
|
|
||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
(function() {
|
(async function() {
|
||||||
// キャッシュ削除要求があれば従う
|
// キャッシュ削除要求があれば従う
|
||||||
if (localStorage.getItem('shouldFlush') == 'true') {
|
if (localStorage.getItem('shouldFlush') == 'true') {
|
||||||
refresh();
|
refresh();
|
||||||
@@ -46,8 +40,12 @@
|
|||||||
if (`${url.pathname}/`.startsWith('/docs/')) app = 'docs';
|
if (`${url.pathname}/`.startsWith('/docs/')) app = 'docs';
|
||||||
if (`${url.pathname}/`.startsWith('/dev/')) app = 'dev';
|
if (`${url.pathname}/`.startsWith('/dev/')) app = 'dev';
|
||||||
if (`${url.pathname}/`.startsWith('/auth/')) app = 'auth';
|
if (`${url.pathname}/`.startsWith('/auth/')) app = 'auth';
|
||||||
|
if (`${url.pathname}/`.startsWith('/admin/')) app = 'admin';
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
|
// Script version
|
||||||
|
const ver = localStorage.getItem('v') || VERSION;
|
||||||
|
|
||||||
//#region Detect the user language
|
//#region Detect the user language
|
||||||
let lang = null;
|
let lang = null;
|
||||||
|
|
||||||
@@ -66,8 +64,21 @@
|
|||||||
langs.includes(settings.device.lang)) {
|
langs.includes(settings.device.lang)) {
|
||||||
lang = settings.device.lang;
|
lang = settings.device.lang;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
window.lang = lang;
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
|
let locale = localStorage.getItem('locale');
|
||||||
|
const localeKey = localStorage.getItem('localeKey');
|
||||||
|
|
||||||
|
if (locale == null || localeKey != `${ver}.${lang}`) {
|
||||||
|
const locale = await fetch(`/assets/locales/${lang}.json?ver=${ver}`)
|
||||||
|
.then(response => response.json());
|
||||||
|
|
||||||
|
localStorage.setItem('locale', JSON.stringify(locale));
|
||||||
|
localStorage.setItem('localeKey', `${ver}.${lang}`);
|
||||||
|
}
|
||||||
|
|
||||||
// Detect the user agent
|
// Detect the user agent
|
||||||
const ua = navigator.userAgent.toLowerCase();
|
const ua = navigator.userAgent.toLowerCase();
|
||||||
const isMobile = /mobile|iphone|ipad|android/.test(ua);
|
const isMobile = /mobile|iphone|ipad|android/.test(ua);
|
||||||
@@ -93,9 +104,6 @@
|
|||||||
app = isMobile ? 'mobile' : 'desktop';
|
app = isMobile ? 'mobile' : 'desktop';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Script version
|
|
||||||
const ver = localStorage.getItem('v') || VERSION;
|
|
||||||
|
|
||||||
// Get salt query
|
// Get salt query
|
||||||
const salt = localStorage.getItem('salt')
|
const salt = localStorage.getItem('salt')
|
||||||
? `?salt=${localStorage.getItem('salt')}`
|
? `?salt=${localStorage.getItem('salt')}`
|
||||||
@@ -105,7 +113,7 @@
|
|||||||
// Note: 'async' make it possible to load the script asyncly.
|
// Note: 'async' make it possible to load the script asyncly.
|
||||||
// 'defer' make it possible to run the script when the dom loaded.
|
// 'defer' make it possible to run the script when the dom loaded.
|
||||||
const script = document.createElement('script');
|
const script = document.createElement('script');
|
||||||
script.setAttribute('src', `/assets/${app}.${ver}.${lang}.js${salt}`);
|
script.setAttribute('src', `/assets/${app}.${ver}.js${salt}`);
|
||||||
script.setAttribute('async', 'true');
|
script.setAttribute('async', 'true');
|
||||||
script.setAttribute('defer', 'true');
|
script.setAttribute('defer', 'true');
|
||||||
head.appendChild(script);
|
head.appendChild(script);
|
||||||
@@ -141,6 +149,8 @@
|
|||||||
function refresh() {
|
function refresh() {
|
||||||
localStorage.setItem('shouldFlush', 'false');
|
localStorage.setItem('shouldFlush', 'false');
|
||||||
|
|
||||||
|
localStorage.removeItem('locale');
|
||||||
|
|
||||||
// Random
|
// Random
|
||||||
localStorage.setItem('salt', Math.random().toString().substr(2, 8));
|
localStorage.setItem('salt', Math.random().toString().substr(2, 8));
|
||||||
|
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ export default function<T extends object>(data: {
|
|||||||
|
|
||||||
this.bakeProps();
|
this.bakeProps();
|
||||||
|
|
||||||
(this as any).api('i/update_widget', {
|
this.$root.api('i/update_widget', {
|
||||||
id: this.id,
|
id: this.id,
|
||||||
data: this.props
|
data: this.props
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -46,6 +46,16 @@ const getKeyMap = keymap => Object.entries(keymap).map(([patterns, callback]): a
|
|||||||
|
|
||||||
const ignoreElemens = ['input', 'textarea'];
|
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 {
|
export default {
|
||||||
install(Vue) {
|
install(Vue) {
|
||||||
Vue.directive('hotkey', {
|
Vue.directive('hotkey', {
|
||||||
@@ -55,37 +65,27 @@ export default {
|
|||||||
const actions = getKeyMap(binding.value);
|
const actions = getKeyMap(binding.value);
|
||||||
|
|
||||||
// flatten
|
// flatten
|
||||||
const reservedKeys = concat(concat(actions.map(a => a.patterns.map(p => p.which))));
|
const reservedKeys = concat(actions.map(a => a.patterns));
|
||||||
|
|
||||||
el.dataset.reservedKeys = reservedKeys.map(key => `'${key}'`).join(' ');
|
el._misskey_reservedKeys = reservedKeys;
|
||||||
|
|
||||||
el._keyHandler = (e: KeyboardEvent) => {
|
el._keyHandler = (e: KeyboardEvent) => {
|
||||||
const key = e.code.toLowerCase();
|
const targetReservedKeys = document.activeElement ? ((document.activeElement as any)._misskey_reservedKeys || []) : [];
|
||||||
|
|
||||||
const targetReservedKeys = document.activeElement ? ((document.activeElement as any).dataset || {}).reservedKeys || '' : '';
|
|
||||||
if (document.activeElement && ignoreElemens.some(el => document.activeElement.matches(el))) return;
|
if (document.activeElement && ignoreElemens.some(el => document.activeElement.matches(el))) return;
|
||||||
|
|
||||||
for (const action of actions) {
|
for (const action of actions) {
|
||||||
if (el._hotkey_global && targetReservedKeys.includes(`'${key}'`)) break;
|
const matched = match(e, action.patterns);
|
||||||
|
|
||||||
const matched = action.patterns.some(pattern => {
|
|
||||||
const matched = pattern.which.includes(key) &&
|
|
||||||
pattern.ctrl == e.ctrlKey &&
|
|
||||||
pattern.shift == e.shiftKey &&
|
|
||||||
pattern.alt == e.altKey &&
|
|
||||||
e.metaKey == false;
|
|
||||||
|
|
||||||
if (matched) {
|
|
||||||
e.preventDefault();
|
|
||||||
e.stopPropagation();
|
|
||||||
action.callback(e);
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if (matched) {
|
if (matched) {
|
||||||
|
if (el._hotkey_global) {
|
||||||
|
if (match(e, targetReservedKeys)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
e.preventDefault();
|
||||||
|
e.stopPropagation();
|
||||||
|
action.callback(e);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
import MiOS from '../../mios';
|
import { clientVersion as current } from '../../config';
|
||||||
import { version as current } from '../../config';
|
|
||||||
|
|
||||||
export default async function(mios: MiOS, force = false, silent = false) {
|
export default async function($root: any, force = false, silent = false) {
|
||||||
const meta = await mios.getMeta(force);
|
const meta = await $root.getMeta(force);
|
||||||
const newer = meta.clientVersion;
|
const newer = meta.clientVersion;
|
||||||
|
|
||||||
if (newer != current) {
|
if (newer != current) {
|
||||||
@@ -23,9 +22,9 @@ export default async function(mios: MiOS, force = false, silent = false) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!silent) {
|
if (!silent) {
|
||||||
mios.apis.dialog({
|
$root.alert({
|
||||||
title: '%i18n:common.update-available-title%',
|
title: $root.$t('@.update-available-title'),
|
||||||
text: '%i18n:common.update-available%'.replace('{newer}', newer).replace('{current}', current)
|
text: $root.$t('@.update-available', { newer, current })
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,15 +1,12 @@
|
|||||||
declare const fuckAdBlock: any;
|
declare const fuckAdBlock: any;
|
||||||
|
|
||||||
export default (os) => {
|
export default ($root: any) => {
|
||||||
require('fuckadblock');
|
require('fuckadblock');
|
||||||
|
|
||||||
function adBlockDetected() {
|
function adBlockDetected() {
|
||||||
os.apis.dialog({
|
$root.alert({
|
||||||
title: '%fa:exclamation-triangle%%i18n:common.adblock.detected%',
|
title: $root.$t('@.adblock.detected'),
|
||||||
text: '%i18n:common.adblock.warning%',
|
text: $root.$t('@.adblock.warning')
|
||||||
actins: [{
|
|
||||||
text: 'OK'
|
|
||||||
}]
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
const crypto = require('crypto');
|
// スクリプトサイズがデカい
|
||||||
|
//const crypto = require('crypto');
|
||||||
|
|
||||||
export default (data: ArrayBuffer) => {
|
export default (data: ArrayBuffer) => {
|
||||||
const buf = new Buffer(data);
|
//const buf = new Buffer(data);
|
||||||
const hash = crypto.createHash("md5");
|
//const hash = crypto.createHash("md5");
|
||||||
hash.update(buf);
|
//hash.update(buf);
|
||||||
return hash.digest("hex");
|
//return hash.digest("hex");
|
||||||
|
return '';
|
||||||
};
|
};
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
import parse from '../../../../mfm/parse';
|
import parse from '../../../../mfm/parse';
|
||||||
import { sum } from '../../../../prelude/array';
|
import { sum, unique } from '../../../../prelude/array';
|
||||||
|
import shouldMuteNote from './should-mute-note';
|
||||||
import MkNoteMenu from '../views/components/note-menu.vue';
|
import MkNoteMenu from '../views/components/note-menu.vue';
|
||||||
import MkReactionPicker from '../views/components/reaction-picker.vue';
|
import MkReactionPicker from '../views/components/reaction-picker.vue';
|
||||||
import Ok from '../views/components/ok.vue';
|
|
||||||
|
|
||||||
function focus(el, fn) {
|
function focus(el, fn) {
|
||||||
const target = fn(el);
|
const target = fn(el);
|
||||||
@@ -22,19 +22,20 @@ type Opts = {
|
|||||||
export default (opts: Opts = {}) => ({
|
export default (opts: Opts = {}) => ({
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
showContent: false
|
showContent: false,
|
||||||
|
hideThisNote: false
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
computed: {
|
computed: {
|
||||||
keymap(): any {
|
keymap(): any {
|
||||||
return {
|
return {
|
||||||
'r|left': () => this.reply(true),
|
'r': () => this.reply(true),
|
||||||
'e|a|plus': () => this.react(true),
|
'e|a|plus': () => this.react(true),
|
||||||
'q|right': () => this.renote(true),
|
'q': () => this.renote(true),
|
||||||
'f|b': this.favorite,
|
'f|b': this.favorite,
|
||||||
'delete|ctrl+d': this.del,
|
'delete|ctrl+d': this.del,
|
||||||
'ctrl+q|ctrl+right': this.renoteDirectly,
|
'ctrl+q': this.renoteDirectly,
|
||||||
'up|k|shift+tab': this.focusBefore,
|
'up|k|shift+tab': this.focusBefore,
|
||||||
'down|j|tab': this.focusAfter,
|
'down|j|tab': this.focusAfter,
|
||||||
'esc': this.blur,
|
'esc': this.blur,
|
||||||
@@ -77,18 +78,22 @@ export default (opts: Opts = {}) => ({
|
|||||||
urls(): string[] {
|
urls(): string[] {
|
||||||
if (this.appearNote.text) {
|
if (this.appearNote.text) {
|
||||||
const ast = parse(this.appearNote.text);
|
const ast = parse(this.appearNote.text);
|
||||||
return ast
|
return unique(ast
|
||||||
.filter(t => (t.type == 'url' || t.type == 'link') && !t.silent)
|
.filter(t => (t.type == 'url' || t.type == 'link') && !t.silent)
|
||||||
.map(t => t.url);
|
.map(t => t.url));
|
||||||
} else {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
created() {
|
||||||
|
this.hideThisNote = shouldMuteNote(this.$store.state.i, this.$store.state.settings, this.appearNote);
|
||||||
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
reply(viaKeyboard = false) {
|
reply(viaKeyboard = false) {
|
||||||
(this as any).apis.post({
|
this.$root.$post({
|
||||||
reply: this.appearNote,
|
reply: this.appearNote,
|
||||||
animation: !viaKeyboard,
|
animation: !viaKeyboard,
|
||||||
cb: () => {
|
cb: () => {
|
||||||
@@ -98,7 +103,7 @@ export default (opts: Opts = {}) => ({
|
|||||||
},
|
},
|
||||||
|
|
||||||
renote(viaKeyboard = false) {
|
renote(viaKeyboard = false) {
|
||||||
(this as any).apis.post({
|
this.$root.$post({
|
||||||
renote: this.appearNote,
|
renote: this.appearNote,
|
||||||
animation: !viaKeyboard,
|
animation: !viaKeyboard,
|
||||||
cb: () => {
|
cb: () => {
|
||||||
@@ -115,7 +120,7 @@ export default (opts: Opts = {}) => ({
|
|||||||
|
|
||||||
react(viaKeyboard = false) {
|
react(viaKeyboard = false) {
|
||||||
this.blur();
|
this.blur();
|
||||||
(this as any).os.new(MkReactionPicker, {
|
this.$root.new(MkReactionPicker, {
|
||||||
source: this.$refs.reactButton,
|
source: this.$refs.reactButton,
|
||||||
note: this.appearNote,
|
note: this.appearNote,
|
||||||
showFocus: viaKeyboard,
|
showFocus: viaKeyboard,
|
||||||
@@ -126,28 +131,31 @@ export default (opts: Opts = {}) => ({
|
|||||||
},
|
},
|
||||||
|
|
||||||
reactDirectly(reaction) {
|
reactDirectly(reaction) {
|
||||||
(this as any).api('notes/reactions/create', {
|
(this.$root.api('notes/reactions/create', {
|
||||||
noteId: this.appearNote.id,
|
noteId: this.appearNote.id,
|
||||||
reaction: reaction
|
reaction: reaction
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
favorite() {
|
favorite() {
|
||||||
(this as any).api('notes/favorites/create', {
|
this.$root.api('notes/favorites/create', {
|
||||||
noteId: this.appearNote.id
|
noteId: this.appearNote.id
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
(this as any).os.new(Ok);
|
this.$root.alert({
|
||||||
|
type: 'success',
|
||||||
|
splash: true
|
||||||
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
del() {
|
del() {
|
||||||
(this as any).api('notes/delete', {
|
this.$root.api('notes/delete', {
|
||||||
noteId: this.appearNote.id
|
noteId: this.appearNote.id
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
menu(viaKeyboard = false) {
|
menu(viaKeyboard = false) {
|
||||||
(this as any).os.new(MkNoteMenu, {
|
this.$root.new(MkNoteMenu, {
|
||||||
source: this.$refs.menuButton,
|
source: this.$refs.menuButton,
|
||||||
note: this.appearNote,
|
note: this.appearNote,
|
||||||
animation: !viaKeyboard,
|
animation: !viaKeyboard,
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ export default prop => ({
|
|||||||
|
|
||||||
created() {
|
created() {
|
||||||
if (this.$store.getters.isSignedIn) {
|
if (this.$store.getters.isSignedIn) {
|
||||||
this.connection = (this as any).os.stream;
|
this.connection = this.$root.stream;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
28
src/client/app/common/scripts/should-mute-note.ts
Normal file
28
src/client/app/common/scripts/should-mute-note.ts
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
export default function(me, settings, note) {
|
||||||
|
const isMyNote = note.userId == me.id;
|
||||||
|
const isPureRenote = note.renoteId != null && note.text == null && note.fileIds.length == 0 && note.poll == null;
|
||||||
|
|
||||||
|
if (settings.showMyRenotes === false) {
|
||||||
|
if (isMyNote && isPureRenote) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settings.showRenotedMyNotes === false) {
|
||||||
|
if (isPureRenote && (note.renote.userId == me.id)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settings.showLocalRenotes === false) {
|
||||||
|
if (isPureRenote && (note.renote.user.host == null)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isMyNote && note.text && settings.mutedWords.some(q => !q.some(word => !note.text.includes(word)))) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
@@ -9,7 +9,7 @@ import MiOS from '../../mios';
|
|||||||
*/
|
*/
|
||||||
export default class Stream extends EventEmitter {
|
export default class Stream extends EventEmitter {
|
||||||
private stream: ReconnectingWebsocket;
|
private stream: ReconnectingWebsocket;
|
||||||
private state: string;
|
public state: string;
|
||||||
private sharedConnectionPools: Pool[] = [];
|
private sharedConnectionPools: Pool[] = [];
|
||||||
private sharedConnections: SharedConnection[] = [];
|
private sharedConnections: SharedConnection[] = [];
|
||||||
private nonSharedConnections: NonSharedConnection[] = [];
|
private nonSharedConnections: NonSharedConnection[] = [];
|
||||||
|
|||||||
@@ -8,11 +8,12 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import { host } from '../../../config';
|
import { host } from '../../../config';
|
||||||
|
import { toUnicode } from 'punycode';
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
props: ['user', 'detail'],
|
props: ['user', 'detail'],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
host
|
host: toUnicode(host)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
197
src/client/app/common/views/components/alert.vue
Normal file
197
src/client/app/common/views/components/alert.vue
Normal file
@@ -0,0 +1,197 @@
|
|||||||
|
<template>
|
||||||
|
<div class="felqjxyj" :class="{ splash }">
|
||||||
|
<div class="bg" ref="bg" @click="onBgClick"></div>
|
||||||
|
<div class="main" ref="main">
|
||||||
|
<div class="icon" :class="type"><fa :icon="icon"/></div>
|
||||||
|
<header v-if="title" v-html="title"></header>
|
||||||
|
<div class="body" v-if="text" v-html="text"></div>
|
||||||
|
<ui-horizon-group no-grow class="buttons" v-if="!splash">
|
||||||
|
<ui-button @click="ok" primary autofocus>OK</ui-button>
|
||||||
|
<ui-button @click="cancel" v-if="showCancelButton">Cancel</ui-button>
|
||||||
|
</ui-horizon-group>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
import * as anime from 'animejs';
|
||||||
|
import { faTimesCircle, faQuestionCircle } from '@fortawesome/free-regular-svg-icons';
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
props: {
|
||||||
|
type: {
|
||||||
|
type: String,
|
||||||
|
required: false,
|
||||||
|
default: 'info'
|
||||||
|
},
|
||||||
|
title: {
|
||||||
|
type: String,
|
||||||
|
required: false
|
||||||
|
},
|
||||||
|
text: {
|
||||||
|
type: String,
|
||||||
|
required: false
|
||||||
|
},
|
||||||
|
showCancelButton: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
splash: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
computed: {
|
||||||
|
icon(): any {
|
||||||
|
switch (this.type) {
|
||||||
|
case 'success': return 'check';
|
||||||
|
case 'error': return faTimesCircle;
|
||||||
|
case 'warning': return 'exclamation-triangle';
|
||||||
|
case 'info': return 'info-circle';
|
||||||
|
case 'question': return faQuestionCircle;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
mounted() {
|
||||||
|
this.$nextTick(() => {
|
||||||
|
(this.$refs.bg as any).style.pointerEvents = 'auto';
|
||||||
|
anime({
|
||||||
|
targets: this.$refs.bg,
|
||||||
|
opacity: 1,
|
||||||
|
duration: 100,
|
||||||
|
easing: 'linear'
|
||||||
|
});
|
||||||
|
|
||||||
|
anime({
|
||||||
|
targets: this.$refs.main,
|
||||||
|
opacity: 1,
|
||||||
|
scale: [1.2, 1],
|
||||||
|
duration: 300,
|
||||||
|
easing: [0, 0.5, 0.5, 1]
|
||||||
|
});
|
||||||
|
|
||||||
|
if (this.splash) {
|
||||||
|
setTimeout(() => {
|
||||||
|
this.close();
|
||||||
|
}, 1000);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
ok() {
|
||||||
|
this.$emit('ok');
|
||||||
|
this.close();
|
||||||
|
},
|
||||||
|
|
||||||
|
cancel() {
|
||||||
|
this.$emit('cancel');
|
||||||
|
this.close();
|
||||||
|
},
|
||||||
|
|
||||||
|
close() {
|
||||||
|
(this.$refs.bg as any).style.pointerEvents = 'none';
|
||||||
|
anime({
|
||||||
|
targets: this.$refs.bg,
|
||||||
|
opacity: 0,
|
||||||
|
duration: 300,
|
||||||
|
easing: 'linear'
|
||||||
|
});
|
||||||
|
|
||||||
|
(this.$refs.main as any).style.pointerEvents = 'none';
|
||||||
|
anime({
|
||||||
|
targets: this.$refs.main,
|
||||||
|
opacity: 0,
|
||||||
|
scale: 0.8,
|
||||||
|
duration: 300,
|
||||||
|
easing: [0, 0.5, 0.5, 1],
|
||||||
|
complete: () => this.destroyDom()
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
onBgClick() {
|
||||||
|
this.cancel();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
.felqjxyj
|
||||||
|
display flex
|
||||||
|
align-items center
|
||||||
|
justify-content center
|
||||||
|
position fixed
|
||||||
|
z-index 30000
|
||||||
|
top 0
|
||||||
|
left 0
|
||||||
|
width 100%
|
||||||
|
height 100%
|
||||||
|
|
||||||
|
&.splash
|
||||||
|
&, *
|
||||||
|
pointer-events none !important
|
||||||
|
|
||||||
|
> .main
|
||||||
|
min-width 0
|
||||||
|
width initial
|
||||||
|
|
||||||
|
> .bg
|
||||||
|
display block
|
||||||
|
position fixed
|
||||||
|
top 0
|
||||||
|
left 0
|
||||||
|
width 100%
|
||||||
|
height 100%
|
||||||
|
background rgba(#000, 0.7)
|
||||||
|
opacity 0
|
||||||
|
pointer-events none
|
||||||
|
|
||||||
|
> .main
|
||||||
|
display block
|
||||||
|
position fixed
|
||||||
|
margin auto
|
||||||
|
padding 32px
|
||||||
|
min-width 320px
|
||||||
|
max-width 480px
|
||||||
|
width calc(100% - 32px)
|
||||||
|
text-align center
|
||||||
|
background var(--face)
|
||||||
|
border-radius 8px
|
||||||
|
color var(--faceText)
|
||||||
|
opacity 0
|
||||||
|
|
||||||
|
> .icon
|
||||||
|
font-size 32px
|
||||||
|
|
||||||
|
&.success
|
||||||
|
color #37ec92
|
||||||
|
|
||||||
|
&.error
|
||||||
|
color #ec4137
|
||||||
|
|
||||||
|
&.warning
|
||||||
|
color #ecb637
|
||||||
|
|
||||||
|
> *
|
||||||
|
display block
|
||||||
|
margin 0 auto
|
||||||
|
|
||||||
|
> header
|
||||||
|
margin 16px 0 8px 0
|
||||||
|
font-weight bold
|
||||||
|
font-size 20px
|
||||||
|
|
||||||
|
& + .body
|
||||||
|
margin-top 8px
|
||||||
|
|
||||||
|
> .body
|
||||||
|
margin 16px 0
|
||||||
|
|
||||||
|
> .buttons
|
||||||
|
margin-top 16px
|
||||||
|
|
||||||
|
</style>
|
||||||
75
src/client/app/common/views/components/api-settings.vue
Normal file
75
src/client/app/common/views/components/api-settings.vue
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
<template>
|
||||||
|
<ui-card>
|
||||||
|
<div slot="title"><fa icon="key"/> API</div>
|
||||||
|
|
||||||
|
<section class="fit-top">
|
||||||
|
<ui-input :value="$store.state.i.token" readonly>
|
||||||
|
<span>{{ $t('token') }}</span>
|
||||||
|
</ui-input>
|
||||||
|
<p>{{ $t('intro') }}</p>
|
||||||
|
<ui-info warn>{{ $t('caution') }}</ui-info>
|
||||||
|
<p>{{ $t('regeneration-of-token') }}</p>
|
||||||
|
<ui-button @click="regenerateToken"><fa icon="sync-alt"/> {{ $t('regenerate-token') }}</ui-button>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<header><fa icon="terminal"/> {{ $t('console.title') }}</header>
|
||||||
|
<ui-input v-model="endpoint">
|
||||||
|
<span>{{ $t('console.endpoint') }}</span>
|
||||||
|
</ui-input>
|
||||||
|
<ui-textarea v-model="body">
|
||||||
|
<span>{{ $t('console.parameter') }} (JSON or JSON5)</span>
|
||||||
|
<span slot="desc">{{ $t('console.credential-info') }}</span>
|
||||||
|
</ui-textarea>
|
||||||
|
<ui-button @click="send" :disabled="sending">
|
||||||
|
<template v-if="sending">{{ $t('console.sending') }}</template>
|
||||||
|
<template v-else><fa icon="paper-plane"/> {{ $t('console.send') }}</template>
|
||||||
|
</ui-button>
|
||||||
|
<ui-textarea v-if="res" v-model="res" readonly tall>
|
||||||
|
<span>{{ $t('console.response') }}</span>
|
||||||
|
</ui-textarea>
|
||||||
|
</section>
|
||||||
|
</ui-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
import i18n from '../../../i18n';
|
||||||
|
import * as JSON5 from 'json5';
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
i18n: i18n('common/views/components/api-settings.vue'),
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
endpoint: '',
|
||||||
|
body: '{}',
|
||||||
|
res: null,
|
||||||
|
sending: false
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
regenerateToken() {
|
||||||
|
this.$input({
|
||||||
|
title: this.$t('enter-password'),
|
||||||
|
type: 'password'
|
||||||
|
}).then(password => {
|
||||||
|
this.$root.api('i/regenerate_token', {
|
||||||
|
password: password
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
send() {
|
||||||
|
this.sending = true;
|
||||||
|
this.$root.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>
|
||||||
@@ -14,9 +14,11 @@
|
|||||||
</ol>
|
</ol>
|
||||||
<ol class="emojis" ref="suggests" v-if="emojis.length > 0">
|
<ol class="emojis" ref="suggests" v-if="emojis.length > 0">
|
||||||
<li v-for="emoji in emojis" @click="complete(type, emoji.emoji)" @keydown="onKeydown" tabindex="-1">
|
<li v-for="emoji in emojis" @click="complete(type, emoji.emoji)" @keydown="onKeydown" tabindex="-1">
|
||||||
<span class="emoji">{{ emoji.emoji }}</span>
|
<span class="emoji" v-if="emoji.isCustomEmoji"><img :src="emoji.url" :alt="emoji.emoji"/></span>
|
||||||
|
<span class="emoji" v-else-if="!useOsDefaultEmojis"><img :src="emoji.url" :alt="emoji.emoji"/></span>
|
||||||
|
<span class="emoji" v-else>{{ emoji.emoji }}</span>
|
||||||
<span class="name" v-html="emoji.name.replace(q, `<b>${q}</b>`)"></span>
|
<span class="name" v-html="emoji.name.replace(q, `<b>${q}</b>`)"></span>
|
||||||
<span class="alias" v-if="emoji.alias">({{ emoji.alias }})</span>
|
<span class="alias" v-if="emoji.aliasOf">({{ emoji.aliasOf }})</span>
|
||||||
</li>
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
</div>
|
</div>
|
||||||
@@ -27,14 +29,29 @@ import Vue from 'vue';
|
|||||||
import * as emojilib from 'emojilib';
|
import * as emojilib from 'emojilib';
|
||||||
import contains from '../../../common/scripts/contains';
|
import contains from '../../../common/scripts/contains';
|
||||||
|
|
||||||
|
type EmojiDef = {
|
||||||
|
emoji: string;
|
||||||
|
name: string;
|
||||||
|
aliasOf?: string;
|
||||||
|
url?: string;
|
||||||
|
isCustomEmoji?: boolean;
|
||||||
|
};
|
||||||
|
|
||||||
const lib = Object.entries(emojilib.lib).filter((x: any) => {
|
const lib = Object.entries(emojilib.lib).filter((x: any) => {
|
||||||
return x[1].category != 'flags';
|
return x[1].category != 'flags';
|
||||||
});
|
});
|
||||||
|
|
||||||
const emjdb = lib.map((x: any) => ({
|
const char2file = (char: string) => {
|
||||||
|
let codes = [...char].map(x => x.codePointAt(0).toString(16));
|
||||||
|
if (!codes.includes('200d')) codes = codes.filter(x => x != 'fe0f');
|
||||||
|
return codes.join('-');
|
||||||
|
};
|
||||||
|
|
||||||
|
const emjdb: EmojiDef[] = lib.map((x: any) => ({
|
||||||
emoji: x[1].char,
|
emoji: x[1].char,
|
||||||
name: x[0],
|
name: x[0],
|
||||||
alias: null
|
aliasOf: null,
|
||||||
|
url: `https://twemoji.maxcdn.com/2/svg/${char2file(x[1].char)}.svg`
|
||||||
}));
|
}));
|
||||||
|
|
||||||
lib.forEach((x: any) => {
|
lib.forEach((x: any) => {
|
||||||
@@ -43,7 +60,8 @@ lib.forEach((x: any) => {
|
|||||||
emjdb.push({
|
emjdb.push({
|
||||||
emoji: x[1].char,
|
emoji: x[1].char,
|
||||||
name: k,
|
name: k,
|
||||||
alias: x[0]
|
aliasOf: x[0],
|
||||||
|
url: `https://twemoji.maxcdn.com/2/svg/${char2file(x[1].char)}.svg`
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -61,13 +79,18 @@ export default Vue.extend({
|
|||||||
hashtags: [],
|
hashtags: [],
|
||||||
emojis: [],
|
emojis: [],
|
||||||
select: -1,
|
select: -1,
|
||||||
emojilib
|
emojilib,
|
||||||
|
emojiDb: [] as EmojiDef[]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
computed: {
|
computed: {
|
||||||
items(): HTMLCollection {
|
items(): HTMLCollection {
|
||||||
return (this.$refs.suggests as Element).children;
|
return (this.$refs.suggests as Element).children;
|
||||||
|
},
|
||||||
|
|
||||||
|
useOsDefaultEmojis(): boolean {
|
||||||
|
return this.$store.state.device.useOsDefaultEmojis;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -90,6 +113,36 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
mounted() {
|
mounted() {
|
||||||
|
//#region Construct Emoji DB
|
||||||
|
const customEmojis = (this.$root.getMetaSync() || { emojis: [] }).emojis || [];
|
||||||
|
const emojiDefinitions: EmojiDef[] = [];
|
||||||
|
|
||||||
|
customEmojis.forEach(x => {
|
||||||
|
emojiDefinitions.push({
|
||||||
|
name: x.name,
|
||||||
|
emoji: `:${x.name}:`,
|
||||||
|
url: x.url,
|
||||||
|
isCustomEmoji: true
|
||||||
|
});
|
||||||
|
|
||||||
|
if (x.aliases) {
|
||||||
|
x.aliases.forEach(alias => {
|
||||||
|
emojiDefinitions.push({
|
||||||
|
name: alias,
|
||||||
|
aliasOf: x.name,
|
||||||
|
emoji: `:${x.name}:`,
|
||||||
|
url: x.url,
|
||||||
|
isCustomEmoji: true
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
emojiDefinitions.sort((a, b) => a.name.length - b.name.length);
|
||||||
|
|
||||||
|
this.emojiDb = emojiDefinitions.concat(emjdb);
|
||||||
|
//#endregion
|
||||||
|
|
||||||
this.textarea.addEventListener('keydown', this.onKeydown);
|
this.textarea.addEventListener('keydown', this.onKeydown);
|
||||||
|
|
||||||
Array.from(document.querySelectorAll('body *')).forEach(el => {
|
Array.from(document.querySelectorAll('body *')).forEach(el => {
|
||||||
@@ -132,7 +185,7 @@ export default Vue.extend({
|
|||||||
this.users = users;
|
this.users = users;
|
||||||
this.fetching = false;
|
this.fetching = false;
|
||||||
} else {
|
} else {
|
||||||
(this as any).api('users/search', {
|
this.$root.api('users/search', {
|
||||||
query: this.q,
|
query: this.q,
|
||||||
limit: 30
|
limit: 30
|
||||||
}).then(users => {
|
}).then(users => {
|
||||||
@@ -155,7 +208,7 @@ export default Vue.extend({
|
|||||||
this.hashtags = hashtags;
|
this.hashtags = hashtags;
|
||||||
this.fetching = false;
|
this.fetching = false;
|
||||||
} else {
|
} else {
|
||||||
(this as any).api('hashtags/search', {
|
this.$root.api('hashtags/search', {
|
||||||
query: this.q,
|
query: this.q,
|
||||||
limit: 30
|
limit: 30
|
||||||
}).then(hashtags => {
|
}).then(hashtags => {
|
||||||
@@ -168,23 +221,35 @@ export default Vue.extend({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (this.type == 'emoji') {
|
} else if (this.type == 'emoji') {
|
||||||
|
if (this.q == null || this.q == '') {
|
||||||
|
this.emojis = this.emojiDb.filter(x => x.isCustomEmoji && !x.aliasOf).sort((a, b) => {
|
||||||
|
var textA = a.name.toUpperCase();
|
||||||
|
var textB = b.name.toUpperCase();
|
||||||
|
return (textA < textB) ? -1 : (textA > textB) ? 1 : 0;
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const matched = [];
|
const matched = [];
|
||||||
emjdb.some(x => {
|
const max = 30;
|
||||||
if (x.name.indexOf(this.q) == 0 && !x.alias && !matched.some(y => y.emoji == x.emoji)) matched.push(x);
|
|
||||||
return matched.length == 30;
|
this.emojiDb.some(x => {
|
||||||
|
if (x.name.startsWith(this.q) && !x.aliasOf && !matched.some(y => y.emoji == x.emoji)) matched.push(x);
|
||||||
|
return matched.length == max;
|
||||||
});
|
});
|
||||||
if (matched.length < 30) {
|
if (matched.length < max) {
|
||||||
emjdb.some(x => {
|
this.emojiDb.some(x => {
|
||||||
if (x.name.indexOf(this.q) == 0 && !matched.some(y => y.emoji == x.emoji)) matched.push(x);
|
if (x.name.startsWith(this.q) && !matched.some(y => y.emoji == x.emoji)) matched.push(x);
|
||||||
return matched.length == 30;
|
return matched.length == max;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (matched.length < 30) {
|
if (matched.length < max) {
|
||||||
emjdb.some(x => {
|
this.emojiDb.some(x => {
|
||||||
if (x.name.indexOf(this.q) > -1 && !matched.some(y => y.emoji == x.emoji)) matched.push(x);
|
if (x.name.includes(this.q) && !matched.some(y => y.emoji == x.emoji)) matched.push(x);
|
||||||
return matched.length == 30;
|
return matched.length == max;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
this.emojis = matched;
|
this.emojis = matched;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -340,6 +405,10 @@ export default Vue.extend({
|
|||||||
margin 0 4px 0 0
|
margin 0 4px 0 0
|
||||||
width 24px
|
width 24px
|
||||||
|
|
||||||
|
> img
|
||||||
|
width 24px
|
||||||
|
vertical-align bottom
|
||||||
|
|
||||||
.name
|
.name
|
||||||
color var(--autocompleteItemText)
|
color var(--autocompleteItemText)
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
props: {
|
props: {
|
||||||
user: {
|
user: {
|
||||||
|
|||||||
@@ -1,47 +1,49 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="troubleshooter">
|
<div class="troubleshooter">
|
||||||
<div class="body">
|
<div class="body">
|
||||||
<h1>%fa:wrench%%i18n:@title%</h1>
|
<h1><fa icon="wrench"/>{{ $t('title') }}</h1>
|
||||||
<div>
|
<div>
|
||||||
<p :data-wip="network == null">
|
<p :data-wip="network == null">
|
||||||
<template v-if="network != null">
|
<template v-if="network != null">
|
||||||
<template v-if="network">%fa:check%</template>
|
<template v-if="network"><fa icon="check"/></template>
|
||||||
<template v-if="!network">%fa:times%</template>
|
<template v-if="!network"><fa icon="times"/></template>
|
||||||
</template>
|
</template>
|
||||||
{{ network == null ? '%i18n:@checking-network%' : '%i18n:@network%' }}<mk-ellipsis v-if="network == null"/>
|
{{ network == null ? this.$t('checking-network') : this.$t('network') }}<mk-ellipsis v-if="network == null"/>
|
||||||
</p>
|
</p>
|
||||||
<p v-if="network == true" :data-wip="internet == null">
|
<p v-if="network == true" :data-wip="internet == null">
|
||||||
<template v-if="internet != null">
|
<template v-if="internet != null">
|
||||||
<template v-if="internet">%fa:check%</template>
|
<template v-if="internet"><fa icon="check"/></template>
|
||||||
<template v-if="!internet">%fa:times%</template>
|
<template v-if="!internet"><fa icon="times"/></template>
|
||||||
</template>
|
</template>
|
||||||
{{ internet == null ? '%i18n:@checking-internet%' : '%i18n:@internet%' }}<mk-ellipsis v-if="internet == null"/>
|
{{ internet == null ? this.$t('checking-internet') : this.$t('internet') }}<mk-ellipsis v-if="internet == null"/>
|
||||||
</p>
|
</p>
|
||||||
<p v-if="internet == true" :data-wip="server == null">
|
<p v-if="internet == true" :data-wip="server == null">
|
||||||
<template v-if="server != null">
|
<template v-if="server != null">
|
||||||
<template v-if="server">%fa:check%</template>
|
<template v-if="server"><fa icon="check"/></template>
|
||||||
<template v-if="!server">%fa:times%</template>
|
<template v-if="!server"><fa icon="times"/></template>
|
||||||
</template>
|
</template>
|
||||||
{{ server == null ? '%i18n:@checking-server%' : '%i18n:@server%' }}<mk-ellipsis v-if="server == null"/>
|
{{ server == null ? this.$t('checking-server') : this.$t('server') }}<mk-ellipsis v-if="server == null"/>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<p v-if="!end">%i18n:@finding%<mk-ellipsis/></p>
|
<p v-if="!end">{{ $t('finding') }}<mk-ellipsis/></p>
|
||||||
<p v-if="network === false"><b>%fa:exclamation-triangle%%i18n:@no-network%</b><br>%i18n:@no-network-desc%</p>
|
<p v-if="network === false"><b><fa icon="exclamation-triangle"/>{{ $t('no-network') }}</b><br>{{ $t('no-network-desc') }}</p>
|
||||||
<p v-if="internet === false"><b>%fa:exclamation-triangle%%i18n:@no-internet%</b><br>%i18n:@no-internet-desc%</p>
|
<p v-if="internet === false"><b><fa icon="exclamation-triangle"/>{{ $t('no-internet') }}</b><br>{{ $t('no-internet-desc') }}</p>
|
||||||
<p v-if="server === false"><b>%fa:exclamation-triangle%%i18n:@no-server%</b><br>%i18n:@no-server-desc%</p>
|
<p v-if="server === false"><b><fa icon="exclamation-triangle"/>{{ $t('no-server') }}</b><br>{{ $t('no-server-desc') }}</p>
|
||||||
<p v-if="server === true" class="success"><b>%fa:info-circle%%i18n:@success%</b><br>%i18n:@success-desc%</p>
|
<p v-if="server === true" class="success"><b><fa icon="info-circle"/>{{ $t('success') }}</b><br>{{ $t('success-desc') }}</p>
|
||||||
</div>
|
</div>
|
||||||
<footer>
|
<footer>
|
||||||
<a href="/assets/flush.html">%i18n:@flush%</a> | <a href="/assets/version.html">%i18n:@set-version%</a>
|
<a href="/assets/flush.html">{{ $t('flush') }}</a> | <a href="/assets/version.html">{{ $t('set-version') }}</a>
|
||||||
</footer>
|
</footer>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
|
import i18n from '../../../i18n';
|
||||||
import { apiUrl } from '../../../config';
|
import { apiUrl } from '../../../config';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
|
i18n: i18n('common/views/components/connect-failed.troubleshooter.vue'),
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
network: navigator.onLine,
|
network: navigator.onLine,
|
||||||
@@ -100,7 +102,7 @@ export default Vue.extend({
|
|||||||
color #444
|
color #444
|
||||||
border-bottom solid 1px #eee
|
border-bottom solid 1px #eee
|
||||||
|
|
||||||
> [data-fa]
|
> [data-icon]
|
||||||
margin-right 0.25em
|
margin-right 0.25em
|
||||||
|
|
||||||
> div
|
> div
|
||||||
@@ -115,7 +117,7 @@ export default Vue.extend({
|
|||||||
&[data-wip]
|
&[data-wip]
|
||||||
color #888
|
color #888
|
||||||
|
|
||||||
> [data-fa]
|
> [data-icon]
|
||||||
margin-right 0.25em
|
margin-right 0.25em
|
||||||
|
|
||||||
&.times
|
&.times
|
||||||
@@ -132,7 +134,7 @@ export default Vue.extend({
|
|||||||
border-top solid 1px #eee
|
border-top solid 1px #eee
|
||||||
|
|
||||||
> b
|
> b
|
||||||
> [data-fa]
|
> [data-icon]
|
||||||
margin-right 0.25em
|
margin-right 0.25em
|
||||||
|
|
||||||
&.success
|
&.success
|
||||||
|
|||||||
@@ -1,23 +1,25 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="mk-connect-failed">
|
<div class="mk-connect-failed">
|
||||||
<img src="data:image/jpeg;base64,%base64:/assets/error.jpg%" alt=""/>
|
<img src="https://raw.githubusercontent.com/syuilo/misskey/develop/src/client/assets/error.jpg" alt=""/>
|
||||||
<h1>%i18n:@title%</h1>
|
<h1>{{ $t('title') }}</h1>
|
||||||
<p class="text">
|
<p class="text">
|
||||||
<span>{{ '%i18n:@description%'.substr(0, '%i18n:@description%'.indexOf('{')) }}</span>
|
<span>{{ this.$t('description').substr(0, this.$t('description').indexOf('{')) }}</span>
|
||||||
<a @click="reload">{{ '%i18n:@description%'.match(/\{(.+?)\}/)[1] }}</a>
|
<a @click="reload">{{ this.$t('description').match(/\{(.+?)\}/)[1] }}</a>
|
||||||
<span>{{ '%i18n:@description%'.substr('%i18n:@description%'.indexOf('}') + 1) }}</span>
|
<span>{{ this.$t('description').substr(this.$t('description').indexOf('}') + 1) }}</span>
|
||||||
</p>
|
</p>
|
||||||
<button v-if="!troubleshooting" @click="troubleshooting = true">%i18n:@troubleshoot%</button>
|
<button v-if="!troubleshooting" @click="troubleshooting = true">{{ $t('troubleshoot') }}</button>
|
||||||
<x-troubleshooter v-if="troubleshooting"/>
|
<x-troubleshooter v-if="troubleshooting"/>
|
||||||
<p class="thanks">%i18n:@thanks%</p>
|
<p class="thanks">{{ $t('thanks') }}</p>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
|
import i18n from '../../../i18n';
|
||||||
import XTroubleshooter from './connect-failed.troubleshooter.vue';
|
import XTroubleshooter from './connect-failed.troubleshooter.vue';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
|
i18n: i18n('common/views/components/connect-failed.vue'),
|
||||||
components: {
|
components: {
|
||||||
XTroubleshooter
|
XTroubleshooter
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
<template>
|
<template>
|
||||||
<button class="nrvgflfuaxwgkxoynpnumyookecqrrvh" @click="toggle">{{ value ? '%i18n:@hide%' : '%i18n:@show%' }}</button>
|
<button class="nrvgflfuaxwgkxoynpnumyookecqrrvh" @click="toggle">{{ value ? this.$t('hide') : this.$t('show') }}</button>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
|
import i18n from '../../../i18n';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
|
i18n: i18n('common/views/components/cw-button.vue'),
|
||||||
props: {
|
props: {
|
||||||
value: {
|
value: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
|
|||||||
64
src/client/app/common/views/components/discord-setting.vue
Normal file
64
src/client/app/common/views/components/discord-setting.vue
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
<template>
|
||||||
|
<div class="mk-discord-setting">
|
||||||
|
<p>{{ $t('description') }}</p>
|
||||||
|
<p class="account" v-if="$store.state.i.discord" :title="`Discord ID: ${$store.state.i.discord.id}`">{{ $t('connected-to') }}: <a :href="`https://discordapp.com/users/${$store.state.i.discord.id}`" target="_blank">@{{ $store.state.i.discord.username }}#{{ $store.state.i.discord.discriminator }}</a></p>
|
||||||
|
<p>
|
||||||
|
<a :href="`${apiUrl}/connect/discord`" target="_blank" @click.prevent="connect">{{ $store.state.i.discord ? this.$t('reconnect') : this.$t('connect') }}</a>
|
||||||
|
<span v-if="$store.state.i.discord"> or </span>
|
||||||
|
<a :href="`${apiUrl}/disconnect/discord`" target="_blank" v-if="$store.state.i.discord" @click.prevent="disconnect">{{ $t('disconnect') }}</a>
|
||||||
|
</p>
|
||||||
|
<p class="id" v-if="$store.state.i.discord">Discord ID: {{ $store.state.i.discord.id }}</p>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
import i18n from '../../../i18n';
|
||||||
|
import { apiUrl } from '../../../config';
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
i18n: i18n('common/views/components/discord-setting.vue'),
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
form: null,
|
||||||
|
apiUrl
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.$watch('$store.state.i', () => {
|
||||||
|
if (this.$store.state.i.discord && this.form)
|
||||||
|
this.form.close();
|
||||||
|
}, {
|
||||||
|
deep: true
|
||||||
|
});
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
connect() {
|
||||||
|
this.form = window.open(apiUrl + '/connect/discord',
|
||||||
|
'discord_connect_window',
|
||||||
|
'height=570, width=520');
|
||||||
|
},
|
||||||
|
|
||||||
|
disconnect() {
|
||||||
|
window.open(apiUrl + '/disconnect/discord',
|
||||||
|
'discord_disconnect_window',
|
||||||
|
'height=570, width=520');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
.mk-discord-setting
|
||||||
|
.account
|
||||||
|
border solid 1px #e1e8ed
|
||||||
|
border-radius 4px
|
||||||
|
padding 16px
|
||||||
|
|
||||||
|
a
|
||||||
|
font-weight bold
|
||||||
|
color inherit
|
||||||
|
|
||||||
|
.id
|
||||||
|
color #8899a6
|
||||||
|
</style>
|
||||||
173
src/client/app/common/views/components/drive-settings.vue
Normal file
173
src/client/app/common/views/components/drive-settings.vue
Normal file
@@ -0,0 +1,173 @@
|
|||||||
|
<template>
|
||||||
|
<ui-card>
|
||||||
|
<div slot="title"><fa icon="cloud"/> {{ $t('@.drive') }}</div>
|
||||||
|
|
||||||
|
<section v-if="!fetching" class="juakhbxthdewydyreaphkepoxgxvfogn">
|
||||||
|
<div class="meter"><div :style="meterStyle"></div></div>
|
||||||
|
<p>{{ $t('max') }}: <b>{{ capacity | bytes }}</b> {{ $t('in-use') }}: <b>{{ usage | bytes }}</b></p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<header>{{ $t('stats') }}</header>
|
||||||
|
<div ref="chart" style="margin-bottom: -16px; margin-left: -8px; color: #000;"></div>
|
||||||
|
</section>
|
||||||
|
</ui-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
import i18n from '../../../i18n';
|
||||||
|
import * as tinycolor from 'tinycolor2';
|
||||||
|
import * as ApexCharts from 'apexcharts';
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
i18n: i18n('common/views/components/drive-settings.vue'),
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
fetching: true,
|
||||||
|
usage: null,
|
||||||
|
capacity: null
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
computed: {
|
||||||
|
meterStyle(): any {
|
||||||
|
return {
|
||||||
|
width: `${this.usage / this.capacity * 100}%`,
|
||||||
|
background: tinycolor({
|
||||||
|
h: 180 - (this.usage / this.capacity * 180),
|
||||||
|
s: 0.7,
|
||||||
|
l: 0.5
|
||||||
|
})
|
||||||
|
};
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
mounted() {
|
||||||
|
this.$root.api('drive').then(info => {
|
||||||
|
this.capacity = info.capacity;
|
||||||
|
this.usage = info.usage;
|
||||||
|
this.fetching = false;
|
||||||
|
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.renderChart();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
renderChart() {
|
||||||
|
this.$root.api('charts/user/drive', {
|
||||||
|
userId: this.$store.state.i.id,
|
||||||
|
span: 'day',
|
||||||
|
limit: 21
|
||||||
|
}).then(stats => {
|
||||||
|
const addition = [];
|
||||||
|
const deletion = [];
|
||||||
|
|
||||||
|
const now = new Date();
|
||||||
|
const y = now.getFullYear();
|
||||||
|
const m = now.getMonth();
|
||||||
|
const d = now.getDate();
|
||||||
|
|
||||||
|
for (let i = 0; i < 21; i++) {
|
||||||
|
const x = new Date(y, m, d - i);
|
||||||
|
addition.push([
|
||||||
|
x,
|
||||||
|
stats.incSize[i]
|
||||||
|
]);
|
||||||
|
deletion.push([
|
||||||
|
x,
|
||||||
|
-stats.decSize[i]
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
const chart = new ApexCharts(this.$refs.chart, {
|
||||||
|
chart: {
|
||||||
|
type: 'bar',
|
||||||
|
stacked: true,
|
||||||
|
height: 150,
|
||||||
|
zoom: {
|
||||||
|
enabled: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
plotOptions: {
|
||||||
|
bar: {
|
||||||
|
columnWidth: '90%',
|
||||||
|
endingShape: 'rounded'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
grid: {
|
||||||
|
clipMarkers: false,
|
||||||
|
borderColor: 'rgba(0, 0, 0, 0.1)'
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
shared: true,
|
||||||
|
intersect: false
|
||||||
|
},
|
||||||
|
dataLabels: {
|
||||||
|
enabled: false
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
series: [{
|
||||||
|
name: 'Additions',
|
||||||
|
data: addition
|
||||||
|
}, {
|
||||||
|
name: 'Deletions',
|
||||||
|
data: deletion
|
||||||
|
}],
|
||||||
|
xaxis: {
|
||||||
|
type: 'datetime',
|
||||||
|
labels: {
|
||||||
|
style: {
|
||||||
|
colors: tinycolor(getComputedStyle(document.documentElement).getPropertyValue('--text')).toRgbString()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
axisBorder: {
|
||||||
|
color: 'rgba(0, 0, 0, 0.1)'
|
||||||
|
},
|
||||||
|
axisTicks: {
|
||||||
|
color: 'rgba(0, 0, 0, 0.1)'
|
||||||
|
},
|
||||||
|
crosshairs: {
|
||||||
|
width: 1,
|
||||||
|
opacity: 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
yaxis: {
|
||||||
|
labels: {
|
||||||
|
formatter: v => Vue.filter('bytes')(v, 0),
|
||||||
|
style: {
|
||||||
|
color: tinycolor(getComputedStyle(document.documentElement).getPropertyValue('--text')).toRgbString()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
chart.render();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
.juakhbxthdewydyreaphkepoxgxvfogn
|
||||||
|
> .meter
|
||||||
|
$size = 12px
|
||||||
|
|
||||||
|
margin-bottom 16px
|
||||||
|
background rgba(0, 0, 0, 0.1)
|
||||||
|
border-radius ($size / 2)
|
||||||
|
overflow hidden
|
||||||
|
|
||||||
|
> div
|
||||||
|
height $size
|
||||||
|
border-radius ($size / 2)
|
||||||
|
|
||||||
|
> p
|
||||||
|
margin 0
|
||||||
|
|
||||||
|
</style>
|
||||||
202
src/client/app/common/views/components/emoji-picker.vue
Normal file
202
src/client/app/common/views/components/emoji-picker.vue
Normal file
@@ -0,0 +1,202 @@
|
|||||||
|
<template>
|
||||||
|
<div class="prlncendiewqqkrevzeruhndoakghvtx">
|
||||||
|
<header>
|
||||||
|
<button v-for="category in categories"
|
||||||
|
:title="category.text"
|
||||||
|
@click="go(category.ref)"
|
||||||
|
:class="{ active: category.isActive }"
|
||||||
|
>
|
||||||
|
<fa :icon="category.icon" fixed-width/>
|
||||||
|
</button>
|
||||||
|
</header>
|
||||||
|
<div class="emojis" ref="emojis" @scroll.passive="onScroll">
|
||||||
|
<section v-for="category in categories" :ref="category.ref">
|
||||||
|
<header><fa :icon="category.icon" fixed-width/> {{ category.text }}</header>
|
||||||
|
<div v-if="category.name">
|
||||||
|
<button v-for="emoji in Object.entries(lib).filter(([k, v]) => v.category === category.name)"
|
||||||
|
:title="emoji[0]"
|
||||||
|
@click="chosen(emoji[1].char)"
|
||||||
|
>
|
||||||
|
<mk-emoji :emoji="emoji[1].char"/>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div v-else>
|
||||||
|
<button v-for="emoji in customEmojis"
|
||||||
|
:title="emoji.name"
|
||||||
|
@click="chosen(`:${emoji.name}:`)"
|
||||||
|
>
|
||||||
|
<img :src="emoji.url" :alt="emoji.name"/>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
import i18n from '../../../i18n';
|
||||||
|
import { lib } from 'emojilib';
|
||||||
|
import { faAsterisk, faLeaf, faUtensils, faFutbol, faCity, faDice } from '@fortawesome/free-solid-svg-icons';
|
||||||
|
import { faHeart, faFlag } from '@fortawesome/free-regular-svg-icons';
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
i18n: i18n('common/views/components/emoji-picker.vue'),
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
lib,
|
||||||
|
customEmojis: [],
|
||||||
|
categories: [{
|
||||||
|
ref: 'customEmojiSection',
|
||||||
|
text: this.$t('custom-emoji'),
|
||||||
|
icon: faAsterisk,
|
||||||
|
isActive: true
|
||||||
|
}, {
|
||||||
|
name: 'people',
|
||||||
|
ref: 'peopleSection',
|
||||||
|
text: this.$t('people'),
|
||||||
|
icon: ['far', 'laugh'],
|
||||||
|
isActive: false
|
||||||
|
}, {
|
||||||
|
name: 'animals_and_nature',
|
||||||
|
ref: 'animalsAndNatureSection',
|
||||||
|
text: this.$t('animals-and-nature'),
|
||||||
|
icon: faLeaf,
|
||||||
|
isActive: false
|
||||||
|
}, {
|
||||||
|
name: 'food_and_drink',
|
||||||
|
ref: 'foodAndDrinkSection',
|
||||||
|
text: this.$t('food-and-drink'),
|
||||||
|
icon: faUtensils,
|
||||||
|
isActive: false
|
||||||
|
}, {
|
||||||
|
name: 'activity',
|
||||||
|
ref: 'activitySection',
|
||||||
|
text: this.$t('activity'),
|
||||||
|
icon: faFutbol,
|
||||||
|
isActive: false
|
||||||
|
}, {
|
||||||
|
name: 'travel_and_places',
|
||||||
|
ref: 'travelAndPlacesSection',
|
||||||
|
text: this.$t('travel-and-places'),
|
||||||
|
icon: faCity,
|
||||||
|
isActive: false
|
||||||
|
}, {
|
||||||
|
name: 'objects',
|
||||||
|
ref: 'objectsSection',
|
||||||
|
text: this.$t('objects'),
|
||||||
|
icon: faDice,
|
||||||
|
isActive: false
|
||||||
|
}, {
|
||||||
|
name: 'symbols',
|
||||||
|
ref: 'symbolsSection',
|
||||||
|
text: this.$t('symbols'),
|
||||||
|
icon: faHeart,
|
||||||
|
isActive: false
|
||||||
|
}, {
|
||||||
|
name: 'flags',
|
||||||
|
ref: 'flagsSection',
|
||||||
|
text: this.$t('flags'),
|
||||||
|
icon: faFlag,
|
||||||
|
isActive: false
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
created() {
|
||||||
|
this.customEmojis = (this.$root.getMetaSync() || { emojis: [] }).emojis || [];
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
go(ref) {
|
||||||
|
this.$refs.emojis.scrollTop = this.$refs[ref][0].offsetTop;
|
||||||
|
},
|
||||||
|
|
||||||
|
onScroll(e) {
|
||||||
|
const section = this.categories.forEach(x => {
|
||||||
|
const top = e.target.scrollTop;
|
||||||
|
const el = this.$refs[x.ref][0];
|
||||||
|
x.isActive = el.offsetTop <= top && el.offsetTop + el.offsetHeight > top;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
chosen(emoji) {
|
||||||
|
this.$emit('chosen', emoji);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
.prlncendiewqqkrevzeruhndoakghvtx
|
||||||
|
width 350px
|
||||||
|
background var(--face)
|
||||||
|
|
||||||
|
> header
|
||||||
|
display flex
|
||||||
|
|
||||||
|
> button
|
||||||
|
flex 1
|
||||||
|
padding 10px 0
|
||||||
|
font-size 16px
|
||||||
|
color var(--text)
|
||||||
|
transition color 0.2s ease
|
||||||
|
|
||||||
|
&:hover
|
||||||
|
color var(--textHighlighted)
|
||||||
|
transition color 0s
|
||||||
|
|
||||||
|
&.active
|
||||||
|
color var(--primary)
|
||||||
|
transition color 0s
|
||||||
|
|
||||||
|
> .emojis
|
||||||
|
height 300px
|
||||||
|
overflow-y auto
|
||||||
|
overflow-x hidden
|
||||||
|
|
||||||
|
> section
|
||||||
|
> header
|
||||||
|
position sticky
|
||||||
|
top 0
|
||||||
|
left 0
|
||||||
|
z-index 1
|
||||||
|
padding 8px
|
||||||
|
background var(--faceHeader)
|
||||||
|
color var(--text)
|
||||||
|
font-size 12px
|
||||||
|
|
||||||
|
> div
|
||||||
|
display grid
|
||||||
|
grid-template-columns 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr
|
||||||
|
gap 4px
|
||||||
|
padding 8px
|
||||||
|
|
||||||
|
> button
|
||||||
|
padding 0
|
||||||
|
width 100%
|
||||||
|
|
||||||
|
&:before
|
||||||
|
content ''
|
||||||
|
display block
|
||||||
|
width 1px
|
||||||
|
height 0
|
||||||
|
padding-bottom 100%
|
||||||
|
|
||||||
|
&:hover
|
||||||
|
> *
|
||||||
|
transform scale(1.2)
|
||||||
|
transition transform 0s
|
||||||
|
|
||||||
|
> *
|
||||||
|
position absolute
|
||||||
|
top 0
|
||||||
|
left 0
|
||||||
|
width 100%
|
||||||
|
height 100%
|
||||||
|
font-size 28px
|
||||||
|
transition transform 0.2s ease
|
||||||
|
pointer-events none
|
||||||
|
|
||||||
|
</style>
|
||||||
86
src/client/app/common/views/components/emoji.vue
Normal file
86
src/client/app/common/views/components/emoji.vue
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
<template>
|
||||||
|
<img v-if="customEmoji" class="fvgwvorwhxigeolkkrcderjzcawqrscl custom" :src="url" :alt="alt" :title="alt"/>
|
||||||
|
<img v-else-if="char && !useOsDefaultEmojis" class="fvgwvorwhxigeolkkrcderjzcawqrscl" :src="url" :alt="alt" :title="alt"/>
|
||||||
|
<span v-else-if="char && useOsDefaultEmojis">{{ char }}</span>
|
||||||
|
<span v-else>:{{ name }}:</span>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
// スクリプトサイズがデカい
|
||||||
|
//import { lib } from 'emojilib';
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
props: {
|
||||||
|
name: {
|
||||||
|
type: String,
|
||||||
|
required: false
|
||||||
|
},
|
||||||
|
emoji: {
|
||||||
|
type: String,
|
||||||
|
required: false
|
||||||
|
},
|
||||||
|
customEmojis: {
|
||||||
|
required: false,
|
||||||
|
default: () => []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
url: null,
|
||||||
|
char: null,
|
||||||
|
customEmoji: null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
computed: {
|
||||||
|
alt(): string {
|
||||||
|
return this.customEmoji ? `:${this.customEmoji.name}:` : this.char;
|
||||||
|
},
|
||||||
|
|
||||||
|
useOsDefaultEmojis(): boolean {
|
||||||
|
return this.$store.state.device.useOsDefaultEmojis;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
created() {
|
||||||
|
if (this.name) {
|
||||||
|
const customEmoji = this.customEmojis.find(x => x.name == this.name);
|
||||||
|
if (customEmoji) {
|
||||||
|
this.customEmoji = customEmoji;
|
||||||
|
this.url = customEmoji.url;
|
||||||
|
} else {
|
||||||
|
//const emoji = lib[this.name];
|
||||||
|
//if (emoji) {
|
||||||
|
// this.char = emoji.char;
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.char = this.emoji;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.char) {
|
||||||
|
let codes = [...this.char].map(x => x.codePointAt(0).toString(16));
|
||||||
|
if (!codes.includes('200d')) codes = codes.filter(x => x != 'fe0f');
|
||||||
|
|
||||||
|
this.url = `https://twemoji.maxcdn.com/2/svg/${codes.join('-')}.svg`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
.fvgwvorwhxigeolkkrcderjzcawqrscl
|
||||||
|
height 1.25em
|
||||||
|
vertical-align -0.25em
|
||||||
|
|
||||||
|
&.custom
|
||||||
|
height 2.5em
|
||||||
|
vertical-align middle
|
||||||
|
transition transform 0.2s ease
|
||||||
|
|
||||||
|
&:hover
|
||||||
|
transform scale(1.2)
|
||||||
|
|
||||||
|
</style>
|
||||||
28
src/client/app/common/views/components/error.vue
Normal file
28
src/client/app/common/views/components/error.vue
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
<template>
|
||||||
|
<div class="wjqjnyhzogztorhrdgcpqlkxhkmuetgj">
|
||||||
|
<p><fa icon="exclamation-triangle"/> {{ $t('@.error.title') }}</p>
|
||||||
|
<ui-button @click="() => $emit('retry')">{{ $t('@.error.retry') }}</ui-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
import i18n from '../../../i18n';
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
i18n: i18n()
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
.wjqjnyhzogztorhrdgcpqlkxhkmuetgj
|
||||||
|
max-width 350px
|
||||||
|
margin 0 auto
|
||||||
|
padding 32px
|
||||||
|
text-align center
|
||||||
|
color var(--text)
|
||||||
|
|
||||||
|
> p
|
||||||
|
margin 0 0 8px 0
|
||||||
|
|
||||||
|
</style>
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<span class="mk-file-type-icon">
|
<span class="mk-file-type-icon">
|
||||||
<template v-if="kind == 'image'">%fa:file-image%</template>
|
<template v-if="kind == 'image'"><fa icon="file-image"/></template>
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|||||||
184
src/client/app/common/views/components/follow-button.vue
Normal file
184
src/client/app/common/views/components/follow-button.vue
Normal file
@@ -0,0 +1,184 @@
|
|||||||
|
<template>
|
||||||
|
<button class="wfliddvnhxvyusikowhxozkyxyenqxqr"
|
||||||
|
:class="{ wait, block, mini, active: isFollowing || hasPendingFollowRequestFromYou }"
|
||||||
|
@click="onClick"
|
||||||
|
:disabled="wait"
|
||||||
|
>
|
||||||
|
<template v-if="!wait">
|
||||||
|
<fa :icon="iconAndText[0]"/> <template v-if="!mini">{{ iconAndText[1] }}</template>
|
||||||
|
</template>
|
||||||
|
<template v-else><fa icon="spinner" pulse fixed-width/></template>
|
||||||
|
</button>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
import i18n from '../../../i18n';
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
i18n: i18n('common/views/components/follow-button.vue'),
|
||||||
|
|
||||||
|
props: {
|
||||||
|
user: {
|
||||||
|
type: Object,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
block: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
mini: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
isFollowing: this.user.isFollowing,
|
||||||
|
hasPendingFollowRequestFromYou: this.user.hasPendingFollowRequestFromYou,
|
||||||
|
wait: false,
|
||||||
|
connection: null
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
computed: {
|
||||||
|
iconAndText(): any[] {
|
||||||
|
return (
|
||||||
|
(this.hasPendingFollowRequestFromYou && this.user.isLocked) ? ['hourglass-half', this.$t('request-pending')] :
|
||||||
|
(this.hasPendingFollowRequestFromYou && !this.user.isLocked) ? ['hourglass-start', this.$t('follow-processing')] :
|
||||||
|
(this.isFollowing) ? ['minus', this.$t('following')] :
|
||||||
|
(!this.isFollowing && this.user.isLocked) ? ['plus', this.$t('follow-request')] :
|
||||||
|
(!this.isFollowing && !this.user.isLocked) ? ['plus', this.$t('follow')] :
|
||||||
|
[]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
mounted() {
|
||||||
|
this.connection = this.$root.stream.useSharedConnection('main');
|
||||||
|
|
||||||
|
this.connection.on('follow', this.onFollowChange);
|
||||||
|
this.connection.on('unfollow', this.onFollowChange);
|
||||||
|
},
|
||||||
|
|
||||||
|
beforeDestroy() {
|
||||||
|
this.connection.dispose();
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
onFollowChange(user) {
|
||||||
|
if (user.id == this.user.id) {
|
||||||
|
this.isFollowing = user.isFollowing;
|
||||||
|
this.hasPendingFollowRequestFromYou = user.hasPendingFollowRequestFromYou;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
async onClick() {
|
||||||
|
this.wait = true;
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (this.isFollowing) {
|
||||||
|
await this.$root.api('following/delete', {
|
||||||
|
userId: this.user.id
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
if (this.hasPendingFollowRequestFromYou) {
|
||||||
|
await this.$root.api('following/requests/cancel', {
|
||||||
|
userId: this.user.id
|
||||||
|
});
|
||||||
|
} else if (this.user.isLocked) {
|
||||||
|
await this.$root.api('following/create', {
|
||||||
|
userId: this.user.id
|
||||||
|
});
|
||||||
|
this.hasPendingFollowRequestFromYou = true;
|
||||||
|
} else {
|
||||||
|
await this.$root.api('following/create', {
|
||||||
|
userId: this.user.id
|
||||||
|
});
|
||||||
|
this.hasPendingFollowRequestFromYou = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
} finally {
|
||||||
|
this.wait = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
.wfliddvnhxvyusikowhxozkyxyenqxqr
|
||||||
|
display block
|
||||||
|
user-select none
|
||||||
|
cursor pointer
|
||||||
|
padding 0 16px
|
||||||
|
margin 0
|
||||||
|
min-width 100px
|
||||||
|
line-height 36px
|
||||||
|
font-size 14px
|
||||||
|
font-weight bold
|
||||||
|
color var(--primary)
|
||||||
|
background transparent
|
||||||
|
outline none
|
||||||
|
border solid 1px var(--primary)
|
||||||
|
border-radius 36px
|
||||||
|
|
||||||
|
&.mini
|
||||||
|
padding 0
|
||||||
|
min-width 0
|
||||||
|
width 32px
|
||||||
|
height 32px
|
||||||
|
font-size 16px
|
||||||
|
border-radius 4px
|
||||||
|
line-height 32px
|
||||||
|
|
||||||
|
&:focus
|
||||||
|
&:after
|
||||||
|
border-radius 8px
|
||||||
|
|
||||||
|
&.block
|
||||||
|
width 100%
|
||||||
|
|
||||||
|
&:focus
|
||||||
|
&:after
|
||||||
|
content ""
|
||||||
|
pointer-events none
|
||||||
|
position absolute
|
||||||
|
top -5px
|
||||||
|
right -5px
|
||||||
|
bottom -5px
|
||||||
|
left -5px
|
||||||
|
border 2px solid var(--primaryAlpha03)
|
||||||
|
border-radius 36px
|
||||||
|
|
||||||
|
&:hover
|
||||||
|
background var(--primaryAlpha01)
|
||||||
|
|
||||||
|
&:active
|
||||||
|
background var(--primaryAlpha02)
|
||||||
|
|
||||||
|
&.active
|
||||||
|
color var(--primaryForeground)
|
||||||
|
background var(--primary)
|
||||||
|
|
||||||
|
&:hover
|
||||||
|
background var(--primaryLighten10)
|
||||||
|
border-color var(--primaryLighten10)
|
||||||
|
|
||||||
|
&:active
|
||||||
|
background var(--primaryDarken10)
|
||||||
|
border-color var(--primaryDarken10)
|
||||||
|
|
||||||
|
&.wait
|
||||||
|
cursor wait !important
|
||||||
|
opacity 0.7
|
||||||
|
|
||||||
|
*
|
||||||
|
pointer-events none
|
||||||
|
|
||||||
|
</style>
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<a class="a" href="https://github.com/syuilo/misskey" target="_blank" title="View source on Github">
|
<a class="a" href="https://github.com/syuilo/misskey" target="_blank" title="View source on GitHub">
|
||||||
<svg width="80" height="80" viewBox="0 0 250 250" aria-hidden="aria-hidden">
|
<svg width="80" height="80" viewBox="0 0 250 250" aria-hidden="aria-hidden">
|
||||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path>
|
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path>
|
||||||
<path class="octo-arm" d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor"></path>
|
<path class="octo-arm" d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor"></path>
|
||||||
|
|||||||
26
src/client/app/common/views/components/formula-core.vue
Normal file
26
src/client/app/common/views/components/formula-core.vue
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
<template>
|
||||||
|
<span v-html="compiledFormula"></span>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
import * as katex from 'katex';
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
props: {
|
||||||
|
formula: {
|
||||||
|
type: String,
|
||||||
|
required: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
compiledFormula(): any {
|
||||||
|
return katex.renderToString(this.formula);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
@import "../../../../../../node_modules/katex/dist/katex.min.css";
|
||||||
|
</style>
|
||||||
20
src/client/app/common/views/components/formula.vue
Normal file
20
src/client/app/common/views/components/formula.vue
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<template>
|
||||||
|
<x-formula :formula="formula"/>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
components: {
|
||||||
|
XFormula: () => import('./formula-core.vue').then(m => m.default)
|
||||||
|
},
|
||||||
|
|
||||||
|
props: {
|
||||||
|
formula: {
|
||||||
|
type: String,
|
||||||
|
required: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user