Compare commits
2407 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b7adbbb9bf | ||
|
|
31aaf559ac | ||
|
|
160185b108 | ||
|
|
1d6b2bd969 | ||
|
|
5df90fdc4a | ||
|
|
607a5326d9 | ||
|
|
2cbd35acc4 | ||
|
|
9a0224ee21 | ||
|
|
2beedc5978 | ||
|
|
6d53e64798 | ||
|
|
3478cdea08 | ||
|
|
b360f2ed45 | ||
|
|
7b0c4c29b4 | ||
|
|
03f5d7575c | ||
|
|
e922d8904c | ||
|
|
45b55a8c98 | ||
|
|
8973b76bda | ||
|
|
41cf856e26 | ||
|
|
b7aeb10304 | ||
|
|
b8d9c1aa45 | ||
|
|
d7dbe503b6 | ||
|
|
c625dd074a | ||
|
|
f8a977f1c0 | ||
|
|
c35e760fd3 | ||
|
|
bc34ac82cf | ||
|
|
98f25c9159 | ||
|
|
ae9c13df66 | ||
|
|
9f8d21b2bc | ||
|
|
cd09fa5a28 | ||
|
|
9ca9757418 | ||
|
|
1fae2ffc37 | ||
|
|
71657ddb98 | ||
|
|
63845e0ba7 | ||
|
|
6781b68d33 | ||
|
|
d058eff59a | ||
|
|
42addfed85 | ||
|
|
0dd6494ab9 | ||
|
|
9f4c6a3aef | ||
|
|
ad0d06c0d8 | ||
|
|
fbf43c1450 | ||
|
|
35a1fa5bf0 | ||
|
|
8d3f71d490 | ||
|
|
9776d8e06b | ||
|
|
10f845ae76 | ||
|
|
2c8f962889 | ||
|
|
1721a82352 | ||
|
|
59bec546e4 | ||
|
|
86503f2d69 | ||
|
|
e4b8c688bb | ||
|
|
4535ab4c43 | ||
|
|
dcdb57df9d | ||
|
|
cfc2808c56 | ||
|
|
4a3d74c608 | ||
|
|
e18655d18f | ||
|
|
12b4b78763 | ||
|
|
550a528fc1 | ||
|
|
4e3429a5c7 | ||
|
|
ef98383075 | ||
|
|
d66d1f142f | ||
|
|
c896055cb1 | ||
|
|
2e8b2e0cf9 | ||
|
|
59012b5693 | ||
|
|
dfb51e8d26 | ||
|
|
5107824352 | ||
|
|
bf7ec18316 | ||
|
|
77d82d2d17 | ||
|
|
2777460150 | ||
|
|
9476a240d9 | ||
|
|
bddb878931 | ||
|
|
b0768d8a4a | ||
|
|
46bb7f9efb | ||
|
|
a507b7c0b0 | ||
|
|
939c0dc5f9 | ||
|
|
a89c206572 | ||
|
|
8b55263e72 | ||
|
|
f2ad1e4639 | ||
|
|
0fbcec1c16 | ||
|
|
ec2b73d076 | ||
|
|
6630bb0b39 | ||
|
|
bef0d4c8bd | ||
|
|
a57cb3bd31 | ||
|
|
1e4577a988 | ||
|
|
fe792b5bbb | ||
|
|
d4005133d0 | ||
|
|
abe8e80268 | ||
|
|
e38e4940b4 | ||
|
|
48dc1678c3 | ||
|
|
431383ab54 | ||
|
|
7a8d252f63 | ||
|
|
04525e2997 | ||
|
|
a2f96f3f20 | ||
|
|
a81ecb0b28 | ||
|
|
1122368ee0 | ||
|
|
6c54328391 | ||
|
|
1a26816f7a | ||
|
|
8538334d08 | ||
|
|
9387ebc569 | ||
|
|
c99dce68ed | ||
|
|
6dea84c6d2 | ||
|
|
39060374c2 | ||
|
|
d3ebb5d13f | ||
|
|
4e7c10d3d9 | ||
|
|
e93ea66d2d | ||
|
|
152dd70ea5 | ||
|
|
7b94cf9f84 | ||
|
|
d70e27a865 | ||
|
|
b780ea336c | ||
|
|
bd9f589d32 | ||
|
|
d9d18bd8f9 | ||
|
|
ffdaa6bc56 | ||
|
|
c7f60e337e | ||
|
|
7f265dbd52 | ||
|
|
8929c5cabc | ||
|
|
4a610f3b0a | ||
|
|
55ec19edb5 | ||
|
|
c319c61832 | ||
|
|
66db99b8cd | ||
|
|
ff2162974d | ||
|
|
78e86af086 | ||
|
|
2dcf89eecf | ||
|
|
fdf94be998 | ||
|
|
0e913a5727 | ||
|
|
f3be077adc | ||
|
|
a6e0471f8c | ||
|
|
c5d734f9ad | ||
|
|
ee12d887ae | ||
|
|
b78d24be1e | ||
|
|
d5379e2b36 | ||
|
|
cf36557084 | ||
|
|
fd1ee129dc | ||
|
|
1471b7a6b5 | ||
|
|
1d39d7efcb | ||
|
|
69ee97f6e2 | ||
|
|
12092e6083 | ||
|
|
6e29e40b8b | ||
|
|
842c9e735b | ||
|
|
2f63a25058 | ||
|
|
d3b084003c | ||
|
|
0da9d3d8b0 | ||
|
|
58f3c6aab7 | ||
|
|
22e79675ad | ||
|
|
e5c350d740 | ||
|
|
210124ac34 | ||
|
|
7f9a35d7ac | ||
|
|
71a30f9001 | ||
|
|
95a34d55fb | ||
|
|
34f052b672 | ||
|
|
0178c2e696 | ||
|
|
5cb0c07627 | ||
|
|
d8fdbfe164 | ||
|
|
74e0b2734d | ||
|
|
3f5785bd03 | ||
|
|
15e5c69c15 | ||
|
|
57019c0b40 | ||
|
|
9d6641be3a | ||
|
|
ac15c2e71f | ||
|
|
1fc9206c6d | ||
|
|
a8fb0d477f | ||
|
|
0c372b68d4 | ||
|
|
e7d9018944 | ||
|
|
ce16884587 | ||
|
|
3345733d00 | ||
|
|
f91cccb6b1 | ||
|
|
6183262037 | ||
|
|
1c7a194950 | ||
|
|
286e15b967 | ||
|
|
744d366874 | ||
|
|
afa62d3d44 | ||
|
|
270c7997c6 | ||
|
|
fa95641f88 | ||
|
|
aa9fe38c25 | ||
|
|
0d33cbbbbb | ||
|
|
bf077da72f | ||
|
|
d8f8e19d06 | ||
|
|
3c3d3e4c0c | ||
|
|
0efbeb36df | ||
|
|
73c396cb39 | ||
|
|
8e75f8a125 | ||
|
|
e8a7e95c65 | ||
|
|
70a6889fe5 | ||
|
|
6aff7375f6 | ||
|
|
d2ef95a8c3 | ||
|
|
1ae51df74a | ||
|
|
3098c6a915 | ||
|
|
ab3f8fd10c | ||
|
|
4bdef3720c | ||
|
|
c02cecc9e5 | ||
|
|
08b431723a | ||
|
|
83dcfec053 | ||
|
|
69ac7b739f | ||
|
|
9ccf9a2496 | ||
|
|
78563ef9a0 | ||
|
|
019d157b92 | ||
|
|
14de35e3f5 | ||
|
|
a860479e88 | ||
|
|
b351b3fae5 | ||
|
|
89918a9f79 | ||
|
|
cadd020915 | ||
|
|
e80933b8ae | ||
|
|
4c0832884f | ||
|
|
e4ca940979 | ||
|
|
3fd9be3967 | ||
|
|
79ec7aba1d | ||
|
|
42b1f7eddd | ||
|
|
889a73caa4 | ||
|
|
c34a89e962 | ||
|
|
2b4bf681e5 | ||
|
|
d1d59e3557 | ||
|
|
668c21830c | ||
|
|
7c37ed07f8 | ||
|
|
a135d8fd59 | ||
|
|
0db9aae162 | ||
|
|
1875c362af | ||
|
|
9b36dd9565 | ||
|
|
69452a27de | ||
|
|
6aa5c5895f | ||
|
|
12f20c67b1 | ||
|
|
66b8e5647d | ||
|
|
188a23fec7 | ||
|
|
b408b45000 | ||
|
|
c53cb94250 | ||
|
|
ba2eeabe38 | ||
|
|
259fac224e | ||
|
|
aad5440c9e | ||
|
|
5c40f0010f | ||
|
|
fb1d181424 | ||
|
|
12cbd8ef5b | ||
|
|
cfc4385d1f | ||
|
|
880ef024d0 | ||
|
|
c6c6edbc0a | ||
|
|
83ba951bf9 | ||
|
|
9c22b1a68a | ||
|
|
cd6a1d3446 | ||
|
|
4a9fc0c8ed | ||
|
|
fada899b30 | ||
|
|
22b099fa8a | ||
|
|
e0bc0d2830 | ||
|
|
90768d30aa | ||
|
|
177c549493 | ||
|
|
5e1ee68189 | ||
|
|
175f6303bc | ||
|
|
cf9f2a5562 | ||
|
|
f04526baca | ||
|
|
f085ecedb3 | ||
|
|
0986301788 | ||
|
|
fe418d8d9a | ||
|
|
6009be34dc | ||
|
|
01a0a54a2c | ||
|
|
cfcaf77e21 | ||
|
|
3b37bdc0b9 | ||
|
|
ec07112f94 | ||
|
|
464faf2673 | ||
|
|
bde20a1a65 | ||
|
|
86c7276da9 | ||
|
|
fec988bb79 | ||
|
|
0702d0974b | ||
|
|
f443d36dbb | ||
|
|
5477f0a865 | ||
|
|
dc02168f33 | ||
|
|
cc5c32b4d2 | ||
|
|
a35680a838 | ||
|
|
770cba73a6 | ||
|
|
401fc758fd | ||
|
|
e8503e6351 | ||
|
|
de23753409 | ||
|
|
4857d86cdd | ||
|
|
dc4a072678 | ||
|
|
c6ee5ccd88 | ||
|
|
68b630cb37 | ||
|
|
94c0238d3a | ||
|
|
dbea387433 | ||
|
|
d35f62d0e4 | ||
|
|
09b8e81a77 | ||
|
|
3b38979a34 | ||
|
|
0fd8c86c24 | ||
|
|
58d0ed1a2e | ||
|
|
8939452036 | ||
|
|
a2931d6f7e | ||
|
|
38b75ad977 | ||
|
|
dc4f585954 | ||
|
|
1fbe5365f7 | ||
|
|
04257db938 | ||
|
|
ba08d1aa53 | ||
|
|
c29cb5bfb9 | ||
|
|
fb1e2efbdd | ||
|
|
131a454e7c | ||
|
|
92e5cff285 | ||
|
|
b24e32e14e | ||
|
|
943805bdcd | ||
|
|
ba9340a26b | ||
|
|
00119328f2 | ||
|
|
a73c65da07 | ||
|
|
9021bb5694 | ||
|
|
a3cf63823f | ||
|
|
f15878cc6f | ||
|
|
33469ff87a | ||
|
|
23b0723168 | ||
|
|
fda1ab3e05 | ||
|
|
490c05a869 | ||
|
|
f0137daebe | ||
|
|
b9fc0e6d71 | ||
|
|
979efee412 | ||
|
|
f079041827 | ||
|
|
4edd9efc0b | ||
|
|
2913c7ccfb | ||
|
|
e1f460f90f | ||
|
|
70f927ea43 | ||
|
|
80d343bb0b | ||
|
|
9e41fddea3 | ||
|
|
8384efc8c7 | ||
|
|
7797c86581 | ||
|
|
4da8cc478f | ||
|
|
285deeec52 | ||
|
|
2916e49422 | ||
|
|
41e5b9134b | ||
|
|
d0d853dcb2 | ||
|
|
be46c7e4c5 | ||
|
|
8e0f41d608 | ||
|
|
a7b438072c | ||
|
|
99958e2fce | ||
|
|
b82843d359 | ||
|
|
4dfc2dfa89 | ||
|
|
50c945607f | ||
|
|
01f28b21dd | ||
|
|
2cb39a8882 | ||
|
|
6ddb6bc160 | ||
|
|
92befbb4cc | ||
|
|
ab701bb93e | ||
|
|
7f9a88fd1c | ||
|
|
c5073b33ef | ||
|
|
765b922a8b | ||
|
|
9b7d6274fa | ||
|
|
26b384aef1 | ||
|
|
0b1e5e3e08 | ||
|
|
5b7506756e | ||
|
|
1f28a0dfeb | ||
|
|
f56ec82f6b | ||
|
|
8ccbabf5ca | ||
|
|
7c763600b7 | ||
|
|
499491003b | ||
|
|
3a77d871d5 | ||
|
|
4ee6d0b549 | ||
|
|
64aa733b16 | ||
|
|
c8c4ec6ad4 | ||
|
|
c9ee737078 | ||
|
|
ebc2cca0b4 | ||
|
|
fc94df06eb | ||
|
|
190a03103e | ||
|
|
0d75ae9d9a | ||
|
|
3129f8f073 | ||
|
|
7f751d3f20 | ||
|
|
0b5b834f8b | ||
|
|
0f649f7d37 | ||
|
|
a1b100d412 | ||
|
|
dd4ee1627e | ||
|
|
1da0fdcf78 | ||
|
|
800eec73b8 | ||
|
|
166cb5e179 | ||
|
|
4a5e145048 | ||
|
|
be68f42220 | ||
|
|
7942aa677f | ||
|
|
2fcf9288a5 | ||
|
|
9bc17974f2 | ||
|
|
19c872a1f3 | ||
|
|
9252c59d90 | ||
|
|
a8f142096c | ||
|
|
3c90abfb96 | ||
|
|
12037fab9b | ||
|
|
73cc425093 | ||
|
|
5c97da935d | ||
|
|
0b154ac7ba | ||
|
|
d4eb0c8df9 | ||
|
|
5ba6f20701 | ||
|
|
695a082582 | ||
|
|
a52c588f49 | ||
|
|
fa469725c7 | ||
|
|
a1f0cb1bc7 | ||
|
|
fbbd33ded2 | ||
|
|
9658e2b3fb | ||
|
|
3d10b19727 | ||
|
|
ab7725ff69 | ||
|
|
6372451d17 | ||
|
|
2c11cc3f0a | ||
|
|
7f65f896f9 | ||
|
|
def823ceea | ||
|
|
454d294cf3 | ||
|
|
1affdbdbab | ||
|
|
52286f4be8 | ||
|
|
1b9f293959 | ||
|
|
7289d5b401 | ||
|
|
01d3f5f09d | ||
|
|
4333ff00a0 | ||
|
|
25b88afbb7 | ||
|
|
6a92c19227 | ||
|
|
5bdbf98f8c | ||
|
|
56b69b5fb7 | ||
|
|
ebf0479ecc | ||
|
|
196c55edbc | ||
|
|
e724c1e7e8 | ||
|
|
4e915e96a5 | ||
|
|
e148f6ce5e | ||
|
|
652d7d2c05 | ||
|
|
0b0111fe23 | ||
|
|
869c19c666 | ||
|
|
86a5f715d3 | ||
|
|
514aeac2d8 | ||
|
|
8980a26713 | ||
|
|
a39e2b28d1 | ||
|
|
bef617cb7c | ||
|
|
1dc1feca0f | ||
|
|
5d097fb29d | ||
|
|
f29fe986af | ||
|
|
0c774979c0 | ||
|
|
f0bc2ed1d7 | ||
|
|
b174e5e57a | ||
|
|
90eed0ea0d | ||
|
|
ae50b71c07 | ||
|
|
c730e5edfa | ||
|
|
b2eb50f260 | ||
|
|
790c7f2249 | ||
|
|
6a0f34c283 | ||
|
|
d151445db7 | ||
|
|
18a3007273 | ||
|
|
bea8c3c65c | ||
|
|
391ee01fe3 | ||
|
|
be7cf9f731 | ||
|
|
b92c2aa40e | ||
|
|
45ebcbf785 | ||
|
|
5f32484be0 | ||
|
|
7bd33ecc72 | ||
|
|
e245122f12 | ||
|
|
d4f7058574 | ||
|
|
21570e2111 | ||
|
|
63e1165a01 | ||
|
|
89b5a69127 | ||
|
|
1152a9d03a | ||
|
|
10092d4570 | ||
|
|
429b4bec64 | ||
|
|
99f96583b6 | ||
|
|
5adb765f85 | ||
|
|
0eb787e0d0 | ||
|
|
4493c856a9 | ||
|
|
59d3d4a749 | ||
|
|
980ae3dcb3 | ||
|
|
3a76113b78 | ||
|
|
ec8105b2ae | ||
|
|
bf05785345 | ||
|
|
82346d788b | ||
|
|
d86cfa86e4 | ||
|
|
b85f13dad3 | ||
|
|
eb8c3fe884 | ||
|
|
ff325d9588 | ||
|
|
a98392ff27 | ||
|
|
22b8aab7a0 | ||
|
|
24de518922 | ||
|
|
a169c7756f | ||
|
|
249a7f4f68 | ||
|
|
4f590e0a96 | ||
|
|
f5b5b290e4 | ||
|
|
1f75cf4ace | ||
|
|
1e4f11a979 | ||
|
|
be12e23aa1 | ||
|
|
790e6ceca4 | ||
|
|
a303d52990 | ||
|
|
096fab575c | ||
|
|
a256393b81 | ||
|
|
e8eee9057a | ||
|
|
d81acae17e | ||
|
|
313715bc75 | ||
|
|
94dabd2038 | ||
|
|
a3d58e5bc7 | ||
|
|
bfdfd026a2 | ||
|
|
b713f06599 | ||
|
|
2172c5edca | ||
|
|
9bc0cfacfa | ||
|
|
546cfeadbe | ||
|
|
2413583ce9 | ||
|
|
d7510491a5 | ||
|
|
61db07edf4 | ||
|
|
5c3ac8f952 | ||
|
|
5bfcb75ec3 | ||
|
|
d733a1b445 | ||
|
|
75c44cd349 | ||
|
|
f4d247cfae | ||
|
|
4260ec713f | ||
|
|
99f4ab7000 | ||
|
|
b6157e0012 | ||
|
|
4405c19852 | ||
|
|
5f208a7d99 | ||
|
|
2ec4cc9a07 | ||
|
|
06390380f8 | ||
|
|
752186066b | ||
|
|
10f9549a04 | ||
|
|
84a4174883 | ||
|
|
ee765d0812 | ||
|
|
1ccd2def50 | ||
|
|
0d9782571f | ||
|
|
973018fc98 | ||
|
|
d0926a3ba1 | ||
|
|
be67f5f422 | ||
|
|
b70b607c4f | ||
|
|
2bd38fa052 | ||
|
|
43b6140dbe | ||
|
|
813804a43e | ||
|
|
bec9604445 | ||
|
|
2e454dad2d | ||
|
|
7d64435e56 | ||
|
|
6ef28214df | ||
|
|
5bbc95d659 | ||
|
|
83794f254c | ||
|
|
005d25a07b | ||
|
|
255222bfb4 | ||
|
|
9e5e3c2f2e | ||
|
|
5bd80f115f | ||
|
|
c86e1a3e9b | ||
|
|
128a201b9d | ||
|
|
b68f74f39c | ||
|
|
cd28504dd8 | ||
|
|
911762fedf | ||
|
|
de448fc99f | ||
|
|
a3531981ee | ||
|
|
fc8d06a9ab | ||
|
|
5de8edf15f | ||
|
|
f762cf2770 | ||
|
|
d84cae9358 | ||
|
|
9c54721010 | ||
|
|
16f35c81a1 | ||
|
|
d0dbb62a54 | ||
|
|
9fa68f4478 | ||
|
|
0d76625868 | ||
|
|
5a8a701188 | ||
|
|
121344afbb | ||
|
|
d647cf3446 | ||
|
|
04a23b3f2f | ||
|
|
08826e1c41 | ||
|
|
2e31e3c7cb | ||
|
|
7aed50f9fa | ||
|
|
2de782dbe4 | ||
|
|
50693fbe25 | ||
|
|
9a2ff56a79 | ||
|
|
daed63d66c | ||
|
|
f2241a47b7 | ||
|
|
de95aac59b | ||
|
|
8612ac0c6a | ||
|
|
2118e500a8 | ||
|
|
a7063eab85 | ||
|
|
5b5ae0e47f | ||
|
|
b19ecc1a0d | ||
|
|
ac9223957f | ||
|
|
e580adc41e | ||
|
|
607a105b78 | ||
|
|
cc601cf600 | ||
|
|
be9f6ad294 | ||
|
|
a2952c02cf | ||
|
|
244d567b3a | ||
|
|
61a9ad23f1 | ||
|
|
4f7c19461e | ||
|
|
4ba6e1c2b2 | ||
|
|
b60af54db1 | ||
|
|
047320e50a | ||
|
|
29418ecbb4 | ||
|
|
67e97310cf | ||
|
|
33d3d5c570 | ||
|
|
864d1a39cd | ||
|
|
ee050cc37e | ||
|
|
e14f244e83 | ||
|
|
1ba43d83b0 | ||
|
|
72fc6d387f | ||
|
|
4a935e0659 | ||
|
|
8a0dab49e0 | ||
|
|
65574abab7 | ||
|
|
37d21462b8 | ||
|
|
1acd25810c | ||
|
|
a81b771f15 | ||
|
|
d30b2e7270 | ||
|
|
69f82508cb | ||
|
|
fddaa11645 | ||
|
|
bbe740785d | ||
|
|
0389afa0fe | ||
|
|
caec6933d1 | ||
|
|
420164c59a | ||
|
|
b13f42645b | ||
|
|
22c945d21b | ||
|
|
12fab6fa53 | ||
|
|
51651e0c87 | ||
|
|
ce395e626f | ||
|
|
b0f93588bb | ||
|
|
d456e5e45c | ||
|
|
84e47bad7e | ||
|
|
deee2391ba | ||
|
|
5cdd06ca2f | ||
|
|
6245a86a6f | ||
|
|
c72e8bd88d | ||
|
|
c58719348f | ||
|
|
40525a9d6d | ||
|
|
eac5d6d127 | ||
|
|
9cd7af6b99 | ||
|
|
5cd441c0cb | ||
|
|
32cc778ed3 | ||
|
|
c966b3f371 | ||
|
|
9baa0128df | ||
|
|
42fbc7ab66 | ||
|
|
8272118e29 | ||
|
|
1dc8d4f926 | ||
|
|
4beb93055b | ||
|
|
e66ec6823d | ||
|
|
1d2b01df5c | ||
|
|
5defcd6592 | ||
|
|
13451f6843 | ||
|
|
6d1d6f1e6e | ||
|
|
bb064e47f7 | ||
|
|
4e239f6089 | ||
|
|
b35b458001 | ||
|
|
315c28234e | ||
|
|
d996cd6dda | ||
|
|
8a61e12cc8 | ||
|
|
99f4cbab4b | ||
|
|
1b4da6f26d | ||
|
|
14ebc8f2b6 | ||
|
|
f97c1a0895 | ||
|
|
533448d835 | ||
|
|
cbcf3fd7f1 | ||
|
|
4f4fd65a56 | ||
|
|
d2a7b471f6 | ||
|
|
df05071636 | ||
|
|
bd8aee7b2c | ||
|
|
3459112732 | ||
|
|
8e8c02840d | ||
|
|
f376f0e03a | ||
|
|
59f6d767b3 | ||
|
|
e46857af00 | ||
|
|
e987e47d18 | ||
|
|
588cd27d5b | ||
|
|
d9efc4793a | ||
|
|
9d5983938b | ||
|
|
9686f45d24 | ||
|
|
cb0a0a7aa4 | ||
|
|
254495cd3d | ||
|
|
6da9da0e8f | ||
|
|
d8260a4aaa | ||
|
|
000635252c | ||
|
|
faac4dbe22 | ||
|
|
a3007a266d | ||
|
|
3f0f1048fe | ||
|
|
c016d212ed | ||
|
|
8f228b20de | ||
|
|
a64945a8dd | ||
|
|
2986876810 | ||
|
|
166ef3ba52 | ||
|
|
8bbd36a7dd | ||
|
|
55c2254c3f | ||
|
|
f7e72829ad | ||
|
|
cd6829ca64 | ||
|
|
a88942f58a | ||
|
|
b4d79ce4a4 | ||
|
|
51b4f95f79 | ||
|
|
125da8d843 | ||
|
|
8385cb436e | ||
|
|
95ffeceb7f | ||
|
|
1e3cff6174 | ||
|
|
3f29a0382b | ||
|
|
e42d26f965 | ||
|
|
8f91a98b65 | ||
|
|
58f62e21ff | ||
|
|
fc45d47e15 | ||
|
|
5409bc6392 | ||
|
|
dcad453069 | ||
|
|
5ef1678a8c | ||
|
|
a682dff069 | ||
|
|
8afa11913c | ||
|
|
2cf139145e | ||
|
|
a219bee4f0 | ||
|
|
2efb0972f6 | ||
|
|
7b33c63f78 | ||
|
|
0df093383d | ||
|
|
cdf65aedcb | ||
|
|
b9dfb937f1 | ||
|
|
2ea3b57499 | ||
|
|
fd9200cbb0 | ||
|
|
40d422c6f3 | ||
|
|
9d6bbbc4e3 | ||
|
|
3fa8433a0e | ||
|
|
82af341261 | ||
|
|
436519f4f4 | ||
|
|
6be5984868 | ||
|
|
503d10145a | ||
|
|
97ed8d1728 | ||
|
|
8c16ed243a | ||
|
|
0c482175a2 | ||
|
|
acfd7896ea | ||
|
|
8d6e0bd43d | ||
|
|
b35ef61515 | ||
|
|
ec18dac5e5 | ||
|
|
ccdc33e476 | ||
|
|
3f5972be7b | ||
|
|
5fbf3c3f72 | ||
|
|
5c497d7563 | ||
|
|
7ee3f63eff | ||
|
|
ee85a76678 | ||
|
|
e691524416 | ||
|
|
ce0f6f7ebe | ||
|
|
dfa5cb567f | ||
|
|
bcf854b7bb | ||
|
|
be0e811e45 | ||
|
|
ab009cfbd7 | ||
|
|
3fc7ebf80b | ||
|
|
8c02c0cb30 | ||
|
|
11c015c24e | ||
|
|
d937730ab7 | ||
|
|
b2b5b1e4c9 | ||
|
|
d84b3088ec | ||
|
|
24f2a4731e | ||
|
|
152fba9ba7 | ||
|
|
3e2edcb815 | ||
|
|
9c8e92b2bc | ||
|
|
24c9e1b8d9 | ||
|
|
127cad8bc1 | ||
|
|
1d4f4b829f | ||
|
|
66d7135a5c | ||
|
|
635eee980d | ||
|
|
23f2370c4b | ||
|
|
f2b88002a3 | ||
|
|
6c41265625 | ||
|
|
b939cb8b4c | ||
|
|
d74710260a | ||
|
|
609a15cfb1 | ||
|
|
644532d4db | ||
|
|
e9b0ffef0f | ||
|
|
31a133e7f0 | ||
|
|
277a24f8e0 | ||
|
|
6c07411755 | ||
|
|
6894eee6d4 | ||
|
|
babdeb5d6e | ||
|
|
7f08d84989 | ||
|
|
32053d963f | ||
|
|
5994ea9465 | ||
|
|
7384a3825a | ||
|
|
e31bf214a7 | ||
|
|
48c143d47c | ||
|
|
35d17d4274 | ||
|
|
1e2b8cab02 | ||
|
|
0a9a45b33b | ||
|
|
63a512306d | ||
|
|
190c0c687c | ||
|
|
c7094986c9 | ||
|
|
c201a65f82 | ||
|
|
dd167a476f | ||
|
|
b255bbf62a | ||
|
|
e19300f424 | ||
|
|
aeb0512eaf | ||
|
|
192abef237 | ||
|
|
2d278c563e | ||
|
|
7de9066dda | ||
|
|
5a2a2371fb | ||
|
|
a433a25b16 | ||
|
|
9098aaee3e | ||
|
|
ea28b788bc | ||
|
|
bd9981b998 | ||
|
|
b7f1b087e8 | ||
|
|
b0fdf25b24 | ||
|
|
58f6e4cf00 | ||
|
|
d6fe396c76 | ||
|
|
5a01c6c9a5 | ||
|
|
dc98b2b5c2 | ||
|
|
60626c2a07 | ||
|
|
0459ce07fa | ||
|
|
b480865031 | ||
|
|
c928d38ec0 | ||
|
|
1f44602f38 | ||
|
|
932d007745 | ||
|
|
a1dd839909 | ||
|
|
12b1c6c886 | ||
|
|
e4a4a4a469 | ||
|
|
2ffb8f7cf8 | ||
|
|
25dec8b977 | ||
|
|
8b4ee292b1 | ||
|
|
2f8b64d6fb | ||
|
|
b608e594af | ||
|
|
9652440579 | ||
|
|
55d2ae2050 | ||
|
|
bdde0c3c63 | ||
|
|
08afa44e09 | ||
|
|
3ec3fa2d1e | ||
|
|
df74a4eb20 | ||
|
|
fdaf483293 | ||
|
|
5ab4d0c29b | ||
|
|
d6fab5fd6c | ||
|
|
8df35650e5 | ||
|
|
c5b682dc89 | ||
|
|
86d49c6704 | ||
|
|
9e251b3ea0 | ||
|
|
8630cd8df6 | ||
|
|
e42c8859b4 | ||
|
|
3636db3f85 | ||
|
|
fd4d03db58 | ||
|
|
2c3ea0cfef | ||
|
|
bc34b4f198 | ||
|
|
e93503066c | ||
|
|
c4351acf7c | ||
|
|
bffd7bbb3b | ||
|
|
aad131c913 | ||
|
|
77faf7a84c | ||
|
|
86a7c4772e | ||
|
|
7430e258b1 | ||
|
|
4efdd90066 | ||
|
|
4c0da272ce | ||
|
|
cf48b5348f | ||
|
|
aa74262564 | ||
|
|
209383274e | ||
|
|
c6b1f206a6 | ||
|
|
be504fc1fc | ||
|
|
7118f7fec1 | ||
|
|
7451a735e6 | ||
|
|
604a900664 | ||
|
|
d7066de378 | ||
|
|
f0bfb051c3 | ||
|
|
54c4eb512f | ||
|
|
3750b4d7d0 | ||
|
|
29c5f8c8e7 | ||
|
|
6b87edf63b | ||
|
|
9b3180d74f | ||
|
|
70331a0383 | ||
|
|
2220b852c0 | ||
|
|
e5fa171df5 | ||
|
|
d083c10ae3 | ||
|
|
7a37b1c641 | ||
|
|
e54449fbdb | ||
|
|
b5b384772a | ||
|
|
733755bb5a | ||
|
|
d6341d8ab6 | ||
|
|
b39384258c | ||
|
|
dfa032d3f2 | ||
|
|
f28fc08a57 | ||
|
|
e20e35c48d | ||
|
|
bddb47b0bd | ||
|
|
469b21bb29 | ||
|
|
0a8213b851 | ||
|
|
460a4edb13 | ||
|
|
2855ec0372 | ||
|
|
0f34ed3ccd | ||
|
|
cbb73e4e15 | ||
|
|
99de2cd0ae | ||
|
|
aed7d06af5 | ||
|
|
2c348b51f1 | ||
|
|
14ac8327cf | ||
|
|
c520f17f3b | ||
|
|
6c3d3ed322 | ||
|
|
f4cf3840e4 | ||
|
|
3b2f116af0 | ||
|
|
bba8f87687 | ||
|
|
41b799b369 | ||
|
|
d59c6af32c | ||
|
|
1b5023793a | ||
|
|
f01a62c83b | ||
|
|
ca84202f4c | ||
|
|
9d7ffd1ae1 | ||
|
|
8f6886db82 | ||
|
|
da5e708e0f | ||
|
|
ff6993478f | ||
|
|
a54950f101 | ||
|
|
6b567fdc05 | ||
|
|
a4788fae45 | ||
|
|
1ba1a7aa40 | ||
|
|
835057d970 | ||
|
|
48f39e70c3 | ||
|
|
3314640b01 | ||
|
|
83d9730d93 | ||
|
|
4e6dcd16ac | ||
|
|
6debf45004 | ||
|
|
66b57e11db | ||
|
|
1fc1c8a025 | ||
|
|
6076f52390 | ||
|
|
3f33dbf6e8 | ||
|
|
33f0dd8d43 | ||
|
|
921fb0012b | ||
|
|
2bdad9c411 | ||
|
|
01f60c829d | ||
|
|
1d6c0e1c6f | ||
|
|
fb74f1d72b | ||
|
|
33e1c08273 | ||
|
|
23c32f1211 | ||
|
|
c8a5d693ed | ||
|
|
4a54d01ca8 | ||
|
|
359a7a7b98 | ||
|
|
aaa25deaa9 | ||
|
|
cd07ae4d2e | ||
|
|
1e8c1efe2f | ||
|
|
ce405fc4f6 | ||
|
|
50a6efd568 | ||
|
|
2c6f881093 | ||
|
|
e4bf0392af | ||
|
|
fcb9133f27 | ||
|
|
5c6f24dc39 | ||
|
|
ce562f3bca | ||
|
|
9ef477f04b | ||
|
|
5268fee5b5 | ||
|
|
68e28faedc | ||
|
|
12f63db62e | ||
|
|
08e1c87fa6 | ||
|
|
8ee962b729 | ||
|
|
3d8b45ecdd | ||
|
|
2347d9cea2 | ||
|
|
8a57f490ce | ||
|
|
a880f5cbb8 | ||
|
|
df5a7c7e0c | ||
|
|
b7b82456d8 | ||
|
|
6b19e54c23 | ||
|
|
75d04858e6 | ||
|
|
9332551791 | ||
|
|
32117a573b | ||
|
|
d4d3316d18 | ||
|
|
43a7eb233c | ||
|
|
178093861b | ||
|
|
3fb26534b7 | ||
|
|
19a9fdfd38 | ||
|
|
6438e97324 | ||
|
|
b29492e8eb | ||
|
|
5ab4f10230 | ||
|
|
80b251e12c | ||
|
|
bfd8b12a4f | ||
|
|
1c2e94658b | ||
|
|
286da28cd6 | ||
|
|
a4ee93a355 | ||
|
|
ab56cb1788 | ||
|
|
32435e4d8e | ||
|
|
900cdf9d9a | ||
|
|
e79019266f | ||
|
|
deee7361f0 | ||
|
|
bdcf09c618 | ||
|
|
7b5d6dcd9b | ||
|
|
0595d87759 | ||
|
|
fab0a0d6e2 | ||
|
|
3eb6b36866 | ||
|
|
50327158e2 | ||
|
|
a99756ef85 | ||
|
|
1c25dbed66 | ||
|
|
7e8c5c0c3c | ||
|
|
0b747b901c | ||
|
|
8dd5051201 | ||
|
|
f7b0fedc9d | ||
|
|
0411d0b242 | ||
|
|
3fcc793269 | ||
|
|
fd27a0efef | ||
|
|
4474a2568e | ||
|
|
9d944243a3 | ||
|
|
8ef38ebab1 | ||
|
|
f457a23eab | ||
|
|
5d1eeaf1d8 | ||
|
|
77f732c6a4 | ||
|
|
ac07f04ad8 | ||
|
|
dddd760efd | ||
|
|
0f7fbacb17 | ||
|
|
2697107770 | ||
|
|
e1e1cd0574 | ||
|
|
93786aa510 | ||
|
|
d8b9a8715b | ||
|
|
e8783b15b1 | ||
|
|
0995d5c5a2 | ||
|
|
0852045928 | ||
|
|
04de0e9a50 | ||
|
|
951b693d17 | ||
|
|
308f357c4f | ||
|
|
206ddd6d36 | ||
|
|
b4cf963bd6 | ||
|
|
77b493c9b0 | ||
|
|
95a5ff5625 | ||
|
|
190753aa99 | ||
|
|
f778696a76 | ||
|
|
ce4fb49d4c | ||
|
|
91b89b79d2 | ||
|
|
3cd3e19199 | ||
|
|
ed36ceadbc | ||
|
|
8736c9dfe6 | ||
|
|
e44f33bf14 | ||
|
|
6e39b73f07 | ||
|
|
01703e5584 | ||
|
|
fee7cb41cb | ||
|
|
bb14af8b40 | ||
|
|
54b849e548 | ||
|
|
8f50482896 | ||
|
|
b3b82e7595 | ||
|
|
9c4e0a4ae6 | ||
|
|
0b656999d8 | ||
|
|
7605a512ba | ||
|
|
2018a29968 | ||
|
|
dbf335a05d | ||
|
|
ad5a7e9d70 | ||
|
|
f8477fa88d | ||
|
|
a22ddb05ba | ||
|
|
9455edf2da | ||
|
|
4a2244327f | ||
|
|
708a800a25 | ||
|
|
a34193ca16 | ||
|
|
a4886975e4 | ||
|
|
8b6a015602 | ||
|
|
f915560752 | ||
|
|
f2f0910771 | ||
|
|
9316e2ce15 | ||
|
|
128573e73e | ||
|
|
3d132ad803 | ||
|
|
6f671325fa | ||
|
|
7e6ac77341 | ||
|
|
51bafe8259 | ||
|
|
f1bbbcfedf | ||
|
|
7d99b154c0 | ||
|
|
575da76235 | ||
|
|
c3b3b9b9a6 | ||
|
|
7432de3d33 | ||
|
|
03ce87d710 | ||
|
|
5e9fb8bd84 | ||
|
|
68a205486e | ||
|
|
94c106a87a | ||
|
|
1b2a04bd2a | ||
|
|
a048939cf1 | ||
|
|
6296846078 | ||
|
|
e530d12f7f | ||
|
|
adc3c16ef3 | ||
|
|
5458b10774 | ||
|
|
9ad403af00 | ||
|
|
8d7f16caed | ||
|
|
e5c20ca9a7 | ||
|
|
bd4a7d8cbb | ||
|
|
5b116737b6 | ||
|
|
8adc799041 | ||
|
|
41e657b64e | ||
|
|
f16cda51fb | ||
|
|
886510d721 | ||
|
|
427b3dcd73 | ||
|
|
138fa1454f | ||
|
|
7ec9b03990 | ||
|
|
65a91c5709 | ||
|
|
e679f47c1a | ||
|
|
337ecafa56 | ||
|
|
2c46098fb5 | ||
|
|
35247af220 | ||
|
|
e71da1f659 | ||
|
|
91daa1958b | ||
|
|
900a9cb34f | ||
|
|
297a7f541e | ||
|
|
049085fb7a | ||
|
|
f594a2d0f4 | ||
|
|
ffd13accca | ||
|
|
edf2503ee5 | ||
|
|
4d0c303660 | ||
|
|
49bc00102b | ||
|
|
29f074267c | ||
|
|
7671c37f2a | ||
|
|
91ad9e4c41 | ||
|
|
ed48349e39 | ||
|
|
2df02a9d70 | ||
|
|
1d027613e4 | ||
|
|
e9de73d2f6 | ||
|
|
7b9b01688c | ||
|
|
afcf2fddb1 | ||
|
|
78de3ba691 | ||
|
|
2cfefee94d | ||
|
|
d50940cdf8 | ||
|
|
e38ee663dc | ||
|
|
5a160a76f7 | ||
|
|
c504f27a51 | ||
|
|
3f5155e9b5 | ||
|
|
dcb85073da | ||
|
|
2a5f3491a6 | ||
|
|
6f6b01344d | ||
|
|
73810758d9 | ||
|
|
6cb527fd58 | ||
|
|
7316352ff5 | ||
|
|
ad76d5d8e2 | ||
|
|
539f307500 | ||
|
|
5f68d08cbc | ||
|
|
bc8bea11c0 | ||
|
|
9bb02e5bf6 | ||
|
|
ae68e6372c | ||
|
|
69593994ef | ||
|
|
cb52ebe65b | ||
|
|
9b989ebac6 | ||
|
|
f13bef4ac8 | ||
|
|
29b1aa0d9b | ||
|
|
5aa2e47c49 | ||
|
|
773d104306 | ||
|
|
b8e948b009 | ||
|
|
49298d2f3f | ||
|
|
ac19567f2b | ||
|
|
bc627fc55c | ||
|
|
eb6c2d0f73 | ||
|
|
436757c71d | ||
|
|
5d09b7e38b | ||
|
|
a8cf67198f | ||
|
|
06539db1a0 | ||
|
|
de10890bd8 | ||
|
|
8dc5375d55 | ||
|
|
1d23076191 | ||
|
|
cbdc061891 | ||
|
|
9536d76b61 | ||
|
|
7a030901c8 | ||
|
|
bcc02047ca | ||
|
|
c61616388e | ||
|
|
499486f559 | ||
|
|
179d231fd8 | ||
|
|
2e4a391eda | ||
|
|
3d214fee4b | ||
|
|
509a4c7955 | ||
|
|
c754046eaf | ||
|
|
92571d9133 | ||
|
|
add425abdb | ||
|
|
1890d9e2ee | ||
|
|
83f2926f0c | ||
|
|
738ced81ec | ||
|
|
b22c1ae520 | ||
|
|
e2e7489b1f | ||
|
|
6ae7b8303d | ||
|
|
55f40af51c | ||
|
|
7a784cea3b | ||
|
|
f86cccec0c | ||
|
|
9d90a28d76 | ||
|
|
1724cf7c17 | ||
|
|
d64d92ccf5 | ||
|
|
f64ced8677 | ||
|
|
db1c0468aa | ||
|
|
77c5d3276a | ||
|
|
ec2b1ec3f0 | ||
|
|
85bf76dd98 | ||
|
|
bfa326af2c | ||
|
|
534c47935a | ||
|
|
31a6f2b421 | ||
|
|
66c106722c | ||
|
|
9d0204f2fa | ||
|
|
fceb0e2158 | ||
|
|
14e7caaa5d | ||
|
|
744e009690 | ||
|
|
713dcd9083 | ||
|
|
e03ec67b5c | ||
|
|
7e27e2757f | ||
|
|
f05c5ff617 | ||
|
|
1afb26f04a | ||
|
|
7873905cde | ||
|
|
41a9100477 | ||
|
|
b8cc1eb993 | ||
|
|
adbbfd9dc2 | ||
|
|
84da99d56c | ||
|
|
aaf8f09cfd | ||
|
|
6da464fd1b | ||
|
|
efaa41ba49 | ||
|
|
67e8e1d819 | ||
|
|
532f8f8e4c | ||
|
|
0109e8e57c | ||
|
|
6e720b2798 | ||
|
|
d3f2a97dd4 | ||
|
|
9f7b04b0ec | ||
|
|
c4118c78b7 | ||
|
|
84147c558f | ||
|
|
4cb51a2d32 | ||
|
|
4727780a3d | ||
|
|
df20f5063d | ||
|
|
d2a5f4c5c1 | ||
|
|
64ba85aa9b | ||
|
|
51c33989fe | ||
|
|
4713822122 | ||
|
|
e10de62a7a | ||
|
|
14b235e3a4 | ||
|
|
eb4aac3902 | ||
|
|
180bf33a28 | ||
|
|
935a254c97 | ||
|
|
3c678f0e92 | ||
|
|
a053e1c1de | ||
|
|
b8fa1751ba | ||
|
|
c4243d54a9 | ||
|
|
1767f54fed | ||
|
|
7e465cdbbe | ||
|
|
47f67fcba9 | ||
|
|
3fff20fb13 | ||
|
|
06a2d87129 | ||
|
|
a8076e306a | ||
|
|
05e5829260 | ||
|
|
5a91416f34 | ||
|
|
70db1d0066 | ||
|
|
26c936d19e | ||
|
|
3b0ae3f80d | ||
|
|
2570d85543 | ||
|
|
b274c4160e | ||
|
|
f9d5d9e30b | ||
|
|
8cdf5ff6df | ||
|
|
409ebf6e14 | ||
|
|
a3d34ba919 | ||
|
|
242bb1a428 | ||
|
|
4a25ed0627 | ||
|
|
f65fbf9d55 | ||
|
|
6169acd478 | ||
|
|
481f1a7c36 | ||
|
|
16726789da | ||
|
|
e71f650ade | ||
|
|
e8a7f571e1 | ||
|
|
3117c8a98f | ||
|
|
90b845f3db | ||
|
|
f5dd972e38 | ||
|
|
4b210e1a6a | ||
|
|
1a7eb3c1df | ||
|
|
52f84d8603 | ||
|
|
f92d218c0c | ||
|
|
81c5ece8a9 | ||
|
|
a97bc38f3e | ||
|
|
aacfb5e221 | ||
|
|
f88ac3c04e | ||
|
|
1fb53acc46 | ||
|
|
ae3b0d5437 | ||
|
|
f9b2da1bb0 | ||
|
|
d0bea052ad | ||
|
|
c012faa958 | ||
|
|
c8cfd1ee65 | ||
|
|
e8da0bcd80 | ||
|
|
591ff9095a | ||
|
|
6df91d3078 | ||
|
|
288c14efce | ||
|
|
ee8d636ca8 | ||
|
|
a3ceecae91 | ||
|
|
5ad89a3b3d | ||
|
|
e1089cc18d | ||
|
|
f9e780187c | ||
|
|
42cbe96a14 | ||
|
|
1f23b11dcc | ||
|
|
ad3b4bbd58 | ||
|
|
455f4ffa27 | ||
|
|
1d867b8aca | ||
|
|
1f9c18e615 | ||
|
|
5bf439851d | ||
|
|
9df3f99a1c | ||
|
|
f41232703b | ||
|
|
abc4e53943 | ||
|
|
f846508fc1 | ||
|
|
7343003287 | ||
|
|
25ca3d610b | ||
|
|
9d286786d4 | ||
|
|
91037ebdd6 | ||
|
|
26b2eafea0 | ||
|
|
432beedd94 | ||
|
|
3a919bab45 | ||
|
|
11af9b808d | ||
|
|
af35335772 | ||
|
|
7b9047cc82 | ||
|
|
4cad36572c | ||
|
|
b5625a4550 | ||
|
|
ec41d8053c | ||
|
|
284cfe6989 | ||
|
|
ad8f363c5d | ||
|
|
3d3cf73c30 | ||
|
|
fd9bd28361 | ||
|
|
d2919dece0 | ||
|
|
a86442bff7 | ||
|
|
4b915d43cf | ||
|
|
b20c3d84a6 | ||
|
|
d2bbf5ffc4 | ||
|
|
4ef9411f35 | ||
|
|
168d13d6e6 | ||
|
|
1e921a9fd5 | ||
|
|
9e438ed674 | ||
|
|
3a02a7dad8 | ||
|
|
1744316656 | ||
|
|
1e4a86da8e | ||
|
|
2b31b6a6b0 | ||
|
|
c7a3f40eba | ||
|
|
8b9710df9f | ||
|
|
ce6f750fa5 | ||
|
|
468eb02ff3 | ||
|
|
dfca7f1340 | ||
|
|
7bfa56d199 | ||
|
|
c579cbdf10 | ||
|
|
0b3609c775 | ||
|
|
be52eb9b3f | ||
|
|
5f5156561f | ||
|
|
d47f92f396 | ||
|
|
2a30bc9a56 | ||
|
|
a427b7a1af | ||
|
|
05d5e70c58 | ||
|
|
62858caaa4 | ||
|
|
b9b48a55ef | ||
|
|
7276ec185b | ||
|
|
e063ac10c5 | ||
|
|
eca9a7ea13 | ||
|
|
86d9a72bbf | ||
|
|
073707b2d0 | ||
|
|
b971fbaac6 | ||
|
|
86795f1091 | ||
|
|
5b9dd4fb80 | ||
|
|
5ff31e197b | ||
|
|
0bd5e64b86 | ||
|
|
3089b56f70 | ||
|
|
46bf0eae40 | ||
|
|
97f411130f | ||
|
|
b9ce7bc99d | ||
|
|
9d3ecda43d | ||
|
|
8356f6d128 | ||
|
|
05a084dadf | ||
|
|
f338fa552e | ||
|
|
7ab9d01bac | ||
|
|
5b0aaf66eb | ||
|
|
6a4e92a999 | ||
|
|
0a4b652493 | ||
|
|
eebc1af672 | ||
|
|
41fa045999 | ||
|
|
4b52c89a75 | ||
|
|
28dcf8bc1e | ||
|
|
5af469282a | ||
|
|
4c58dc61bc | ||
|
|
c4bf80c262 | ||
|
|
e485e8936f | ||
|
|
e495e0d2e6 | ||
|
|
3695e6db15 | ||
|
|
ac7df96f68 | ||
|
|
cf17a39446 | ||
|
|
87cc5f790c | ||
|
|
b03987290c | ||
|
|
1f4969547b | ||
|
|
d12d201ef4 | ||
|
|
c91a4c9da1 | ||
|
|
1213e95ddd | ||
|
|
90a836d587 | ||
|
|
973c2ebafd | ||
|
|
24f52aee46 | ||
|
|
4d2c0e4161 | ||
|
|
b687546fcd | ||
|
|
3c701aaf86 | ||
|
|
d50e99c17b | ||
|
|
41d5e0ab24 | ||
|
|
c99e864dbc | ||
|
|
f39adfdf87 | ||
|
|
0d1ffb581f | ||
|
|
4add44f3bd | ||
|
|
baae9f6f39 | ||
|
|
0a9958f45f | ||
|
|
7e5d25cf2c | ||
|
|
9666e6b4d3 | ||
|
|
c937cb94f9 | ||
|
|
5e54d093f5 | ||
|
|
c7f099276e | ||
|
|
ee4235ba71 | ||
|
|
71066d69fb | ||
|
|
4581376198 | ||
|
|
04ebde62bc | ||
|
|
fec47f05cf | ||
|
|
b9e2fb74ed | ||
|
|
a1d6637dd1 | ||
|
|
e6fa5a07ce | ||
|
|
eec6226c8d | ||
|
|
356fe8180e | ||
|
|
30c120596a | ||
|
|
c6e330ea8d | ||
|
|
dca55d12ac | ||
|
|
4426da6233 | ||
|
|
381fe2f436 | ||
|
|
28cd7a67de | ||
|
|
97f75cea52 | ||
|
|
5e788f0da4 | ||
|
|
1fc9d034d0 | ||
|
|
dc8f14c23a | ||
|
|
e9717da916 | ||
|
|
73c328f90b | ||
|
|
25a6f7041a | ||
|
|
ff278c8bea | ||
|
|
35dd6a5ac3 | ||
|
|
98ea238087 | ||
|
|
3830b0d831 | ||
|
|
b6de5a2268 | ||
|
|
77327c7a40 | ||
|
|
26664a8351 | ||
|
|
912964104b | ||
|
|
63653ccb01 | ||
|
|
5df54700b8 | ||
|
|
f952dde1d4 | ||
|
|
2c0aac5eed | ||
|
|
4e3a2c4bb8 | ||
|
|
17ccfcfb53 | ||
|
|
f2959ada85 | ||
|
|
e427c12ac2 | ||
|
|
874837666c | ||
|
|
c66532d18f | ||
|
|
2bc572b4cc | ||
|
|
2db01f3d5c | ||
|
|
a0a116b7bf | ||
|
|
aec7d53414 | ||
|
|
09416c9893 | ||
|
|
0e7fe670aa | ||
|
|
bd805f1d88 | ||
|
|
b984aecaf2 | ||
|
|
56efffffa3 | ||
|
|
2f92be1da0 | ||
|
|
baa52921a0 | ||
|
|
20e0c44f9a | ||
|
|
ebc83c8f60 | ||
|
|
2d48d9fd87 | ||
|
|
5eb06a3a52 | ||
|
|
9917a1c7e1 | ||
|
|
e9c886e871 | ||
|
|
0074f8da1b | ||
|
|
1c98b51e6a | ||
|
|
837bdb1b43 | ||
|
|
48e034be0e | ||
|
|
b067162ce6 | ||
|
|
db42d5b065 | ||
|
|
c41ccf7821 | ||
|
|
f5fd523ca7 | ||
|
|
5f9482e7d5 | ||
|
|
bb98ee27a1 | ||
|
|
3506dd3656 | ||
|
|
88d0b09c88 | ||
|
|
25b88f89a6 | ||
|
|
85343b80b7 | ||
|
|
6766fbdfb3 | ||
|
|
c488fca2f2 | ||
|
|
ea51460169 | ||
|
|
80e7af30d0 | ||
|
|
8f20edaed0 | ||
|
|
4d7b2d7215 | ||
|
|
d0993a8988 | ||
|
|
b68af344cb | ||
|
|
58fdeb50f3 | ||
|
|
1af3c42001 | ||
|
|
8ef066adda | ||
|
|
5cc7fa8e8b | ||
|
|
fc998ac57c | ||
|
|
9e4fe16f56 | ||
|
|
0cc00101dc | ||
|
|
227cfd6e2f | ||
|
|
876f659847 | ||
|
|
555501d534 | ||
|
|
eb392b1251 | ||
|
|
e32bf34830 | ||
|
|
94ff21649d | ||
|
|
35ff0ab2b6 | ||
|
|
c3e3007cd5 | ||
|
|
fadc80166b | ||
|
|
9201b5318b | ||
|
|
c94a9671a2 | ||
|
|
7b3f52505e | ||
|
|
313afbd6db | ||
|
|
0c4f02f288 | ||
|
|
b2d33fba66 | ||
|
|
a673393db5 | ||
|
|
9f55d4057d | ||
|
|
c00a58fc06 | ||
|
|
f49db22311 | ||
|
|
204f43e717 | ||
|
|
77a8894ced | ||
|
|
f85122b141 | ||
|
|
0cd07cd605 | ||
|
|
eb8604f926 | ||
|
|
8b3cb850a5 | ||
|
|
48d1b9444c | ||
|
|
fda0a991a2 | ||
|
|
bb61bd0c96 | ||
|
|
10e89e656a | ||
|
|
741756d114 | ||
|
|
4f36ff0233 | ||
|
|
5be69edf2e | ||
|
|
730cdceab1 | ||
|
|
fa0600afe0 | ||
|
|
fc7db7f23c | ||
|
|
e09429f932 | ||
|
|
947cd32e85 | ||
|
|
65a3c7dae4 | ||
|
|
0374f58a11 | ||
|
|
a7ff8678b5 | ||
|
|
b85ae2f77f | ||
|
|
9f93353519 | ||
|
|
37935ed467 | ||
|
|
8ed9e44a78 | ||
|
|
a796a68e8a | ||
|
|
f2b467c5e7 | ||
|
|
21d22b60b4 | ||
|
|
f76d204e09 | ||
|
|
6775d4da9b | ||
|
|
0264430831 | ||
|
|
76c1077b8e | ||
|
|
6efb4eeb6e | ||
|
|
f7eb7322fb | ||
|
|
cf8b8bad01 | ||
|
|
07fc3360b6 | ||
|
|
61f57e3f53 | ||
|
|
cd8696076e | ||
|
|
fb45e7148a | ||
|
|
404823eadb | ||
|
|
324822599a | ||
|
|
053530ed34 | ||
|
|
4f1cb005d7 | ||
|
|
f3d2183a23 | ||
|
|
cdac86d104 | ||
|
|
291627ac15 | ||
|
|
0025f3b526 | ||
|
|
678e80bb8b | ||
|
|
88c37cdcac | ||
|
|
8ed2ca9018 | ||
|
|
27c99ef894 | ||
|
|
41bed99b4c | ||
|
|
b127b772fe | ||
|
|
2698c2d3b5 | ||
|
|
7c984d20d7 | ||
|
|
844085d7a7 | ||
|
|
404cc016e2 | ||
|
|
98f643f98e | ||
|
|
9985f85aad | ||
|
|
959f2cd61d | ||
|
|
2a2ef53e4f | ||
|
|
3648b56fc1 | ||
|
|
d422fa58cd | ||
|
|
ee7e9b328d | ||
|
|
450c1224fd | ||
|
|
7885d73f80 | ||
|
|
7bdcdcc1ce | ||
|
|
d375588f7c | ||
|
|
2484894d43 | ||
|
|
d82fe69469 | ||
|
|
cb5657e15c | ||
|
|
16e2ee2759 | ||
|
|
5621b280ff | ||
|
|
8cd6efbc38 | ||
|
|
0f4f862840 | ||
|
|
14f74a561c | ||
|
|
bd970cf215 | ||
|
|
57052013bb | ||
|
|
8e11e2e3fc | ||
|
|
ef58503537 | ||
|
|
a46d230308 | ||
|
|
e85ac32c2d | ||
|
|
a7e27c2419 | ||
|
|
a4c9a93b6d | ||
|
|
1f3837a8c6 | ||
|
|
d92044cf6a | ||
|
|
aa4ef6745a | ||
|
|
865fd25af1 | ||
|
|
2cdcbcc80e | ||
|
|
5ea0f23389 | ||
|
|
196a93dc4d | ||
|
|
eb6d9d66cf | ||
|
|
142de603bd | ||
|
|
8ed710965f | ||
|
|
dc2a7ca2d5 | ||
|
|
32cdbb70d6 | ||
|
|
f2e168bd0a | ||
|
|
311a5cc9e3 | ||
|
|
878f2f9015 | ||
|
|
2923950d40 | ||
|
|
0cd1cd787a | ||
|
|
ae8a87c40b | ||
|
|
c3597941db | ||
|
|
d26524767d | ||
|
|
8d61a52eaa | ||
|
|
d5bad25c63 | ||
|
|
165e0a3d54 | ||
|
|
e74c1f2ac6 | ||
|
|
42d4e6610f | ||
|
|
4179685bb6 | ||
|
|
a81a34cd76 | ||
|
|
118db9b267 | ||
|
|
fd67d5cb4c | ||
|
|
cb0f95ee7d | ||
|
|
029b92935c | ||
|
|
bc13538167 | ||
|
|
9b41023c43 | ||
|
|
9f1ede0e3e | ||
|
|
fcfd9239c1 | ||
|
|
10e9d3f32f | ||
|
|
11439afde7 | ||
|
|
359d3b4392 | ||
|
|
d53d45f797 | ||
|
|
c6ea5419ff | ||
|
|
7dcb979983 | ||
|
|
034d529afa | ||
|
|
fb764abeae | ||
|
|
d0bce21993 | ||
|
|
5ba4d0a8c4 | ||
|
|
8864158d85 | ||
|
|
85b8749f02 | ||
|
|
b412b4a9ff | ||
|
|
081ad9adcf | ||
|
|
80f2cc6728 | ||
|
|
bc627da923 | ||
|
|
c1b77365a0 | ||
|
|
7994aa96e2 | ||
|
|
ccc79eac91 | ||
|
|
f0fbff824b | ||
|
|
7293baa1f9 | ||
|
|
20abea6744 | ||
|
|
b666fdcc1a | ||
|
|
70c3357f39 | ||
|
|
9d49636cd1 | ||
|
|
67afe968b4 | ||
|
|
09cc5afad6 | ||
|
|
ab53d80fcf | ||
|
|
1d520473ed | ||
|
|
4636768810 | ||
|
|
01e9402b2c | ||
|
|
947690870b | ||
|
|
dd93551ebf | ||
|
|
bf237c3dca | ||
|
|
7e108e9f5c | ||
|
|
75dbbd115b | ||
|
|
09ca24b032 | ||
|
|
f3d125a3f9 | ||
|
|
51a9666b91 | ||
|
|
2118fc1f0a | ||
|
|
4182e2bd6d | ||
|
|
c349711e0d | ||
|
|
810b4c7191 | ||
|
|
9f730f23e9 | ||
|
|
8a6c9a9e35 | ||
|
|
3a98f5a419 | ||
|
|
597784a3e8 | ||
|
|
48354ece42 | ||
|
|
be8624250d | ||
|
|
168f73e988 | ||
|
|
a4d62c7c7a | ||
|
|
83eab954f1 | ||
|
|
f934fb171a | ||
|
|
fe3d95f394 | ||
|
|
10e5caa766 | ||
|
|
5fb8f5a8c7 | ||
|
|
1673957aa6 | ||
|
|
91db717485 | ||
|
|
be90e179c6 | ||
|
|
3b1b8e9493 | ||
|
|
4a1ed5a3ca | ||
|
|
212db199e8 | ||
|
|
b57a43b26c | ||
|
|
a1ba5b1316 | ||
|
|
92457f91ae | ||
|
|
e84bae9e84 | ||
|
|
1b2682c228 | ||
|
|
6fa825f15d | ||
|
|
beae1c2860 | ||
|
|
6f975acbb6 | ||
|
|
5e7bed8db3 | ||
|
|
177510afdf | ||
|
|
d912cd3b75 | ||
|
|
c426748fe2 | ||
|
|
64d80f8f48 | ||
|
|
c1d767b0ae | ||
|
|
edeb09eee2 | ||
|
|
bdb5081c05 | ||
|
|
7dc410691d | ||
|
|
772b9d0ae7 | ||
|
|
b0ff4533e2 | ||
|
|
72a09434e3 | ||
|
|
87df50b7e7 | ||
|
|
d3d21be588 | ||
|
|
5b92ebfabd | ||
|
|
a9d1d8f034 | ||
|
|
436ded4f4f | ||
|
|
de55794761 | ||
|
|
a23ef386ea | ||
|
|
572aa662f6 | ||
|
|
8b10bee881 | ||
|
|
f492458d85 | ||
|
|
d2289039d6 | ||
|
|
019fbf5268 | ||
|
|
8d7b04b0e2 | ||
|
|
6e1f8d0533 | ||
|
|
b412d2a30a | ||
|
|
cbd9f57468 | ||
|
|
2e0ee21964 | ||
|
|
24b20b8d32 | ||
|
|
d1843e2e27 | ||
|
|
30e7aa23d8 | ||
|
|
9f5c22e7c2 | ||
|
|
4f88739b01 | ||
|
|
18c50c82bc | ||
|
|
0b87b16cba | ||
|
|
d454cf7493 | ||
|
|
66e5b36d16 | ||
|
|
f582cd5c71 | ||
|
|
bf731897a3 | ||
|
|
a823792d8d | ||
|
|
9e894dfd55 | ||
|
|
bd90ebeafd | ||
|
|
ee12027739 | ||
|
|
e02f3558eb | ||
|
|
f410e1c4fa | ||
|
|
e41bc54d43 | ||
|
|
1599e06ffb | ||
|
|
84c49a23c9 | ||
|
|
95c94758cb | ||
|
|
3bc5c5914b | ||
|
|
69d2cd3b6d | ||
|
|
4bca467bd3 | ||
|
|
20061ae5a1 | ||
|
|
78867c3cc9 | ||
|
|
f8911cad32 | ||
|
|
dd9a461cf5 | ||
|
|
1516ce86f4 | ||
|
|
58ab04f2f4 | ||
|
|
3e651e3ea2 | ||
|
|
b02c00eb41 | ||
|
|
a9ee45d977 | ||
|
|
156e66438a | ||
|
|
9ac34badad | ||
|
|
fdf145657d | ||
|
|
f93e0a624e | ||
|
|
c8e3af32be | ||
|
|
62b3a49b5f | ||
|
|
be88eee8f6 | ||
|
|
e7fb192f5d | ||
|
|
18e2ca89b7 | ||
|
|
ec8c388f99 | ||
|
|
a1518df41a | ||
|
|
312ef38d62 | ||
|
|
ed3e0a9d9c | ||
|
|
d7ca93b9fa | ||
|
|
910dfd6ad2 | ||
|
|
041415519b | ||
|
|
0ba877fef1 | ||
|
|
839c93961c | ||
|
|
30b1be97dd | ||
|
|
55be57ad21 | ||
|
|
58064ec633 | ||
|
|
d63044a15e | ||
|
|
5422697397 | ||
|
|
36c2f8fe5d | ||
|
|
2defddc153 | ||
|
|
fb9a219349 | ||
|
|
3b5e4276c8 | ||
|
|
fab2e08a0d | ||
|
|
19e9099a78 | ||
|
|
91c2b07cd8 | ||
|
|
fd00c7bd81 | ||
|
|
8919082179 | ||
|
|
2f7c191547 | ||
|
|
80519dc366 | ||
|
|
4d53c813e4 | ||
|
|
750f479d58 | ||
|
|
e9a7e99108 | ||
|
|
ebf10b3452 | ||
|
|
5d621f5318 | ||
|
|
35dedfc7e4 | ||
|
|
39094adfcf | ||
|
|
74a25bfaa0 | ||
|
|
04ef2f0c8d | ||
|
|
fb99906a8c | ||
|
|
da0d3e4129 | ||
|
|
3ffe90146c | ||
|
|
81cea41154 | ||
|
|
3ff4f53bbd | ||
|
|
a77f67fc32 | ||
|
|
47c45d48b1 | ||
|
|
cdd9585cb8 | ||
|
|
db60188847 | ||
|
|
21a2e5f415 | ||
|
|
2377c9b4cb | ||
|
|
296f6b1553 | ||
|
|
e15643ca46 | ||
|
|
9632ba40cc | ||
|
|
a2cdeeb6c7 | ||
|
|
a23857ce3c | ||
|
|
78677b3aa7 | ||
|
|
7dd264953f | ||
|
|
17af9c3ab6 | ||
|
|
4b49f8fbb8 | ||
|
|
e253225c66 | ||
|
|
6abb6f90f6 | ||
|
|
9fb2743a38 | ||
|
|
17792716a7 | ||
|
|
ae7282358e | ||
|
|
abc082f7c0 | ||
|
|
bf1163ae84 | ||
|
|
be74ca472a | ||
|
|
31b472fa47 | ||
|
|
b502627494 | ||
|
|
a8017369d0 | ||
|
|
3f0b5e4318 | ||
|
|
aea8f93e02 | ||
|
|
874411990b | ||
|
|
780268f70e | ||
|
|
3a8a374e87 | ||
|
|
488f36d491 | ||
|
|
4d48b0be99 | ||
|
|
44f3888c24 | ||
|
|
a76fb4c173 | ||
|
|
e4aa003157 | ||
|
|
247f334334 | ||
|
|
509cdae832 | ||
|
|
5ff59b3339 | ||
|
|
2b1a785f24 | ||
|
|
2c0b137848 | ||
|
|
ef68e633cf | ||
|
|
e9e63ba950 | ||
|
|
3fd6167e71 | ||
|
|
6b0573ded1 | ||
|
|
328dc80324 | ||
|
|
24d8617f81 | ||
|
|
e2c3d4f2fb | ||
|
|
60229d73c9 | ||
|
|
40235463bc | ||
|
|
c6cbadc514 | ||
|
|
3c3c67a34c | ||
|
|
72eedd2ff9 | ||
|
|
a7e9d5a60b | ||
|
|
c3d081b700 | ||
|
|
57f62c919c | ||
|
|
19bdd4fa2a | ||
|
|
9d8391583f | ||
|
|
6037b0acc5 | ||
|
|
09c5efc161 | ||
|
|
16c2aefe7b | ||
|
|
06cfa207fc | ||
|
|
0be8bbc19f | ||
|
|
bad85375de | ||
|
|
6c11a7a6c4 | ||
|
|
6f38c6f339 | ||
|
|
fb1d727db9 | ||
|
|
d98d286dc4 | ||
|
|
1be279dbaa | ||
|
|
90e6feeb4c | ||
|
|
f1f9f235c7 | ||
|
|
eb3f938281 | ||
|
|
d6ef923134 | ||
|
|
5b01577810 | ||
|
|
2a111d472a | ||
|
|
a8809e89b9 | ||
|
|
1ab9a49d01 | ||
|
|
f92c116564 | ||
|
|
b54539b647 | ||
|
|
87fc6522fb | ||
|
|
b0408d1d6e | ||
|
|
39779ca8d5 | ||
|
|
8c34f7559d | ||
|
|
740c7c2476 | ||
|
|
abd43dd471 | ||
|
|
c24b5410bc | ||
|
|
cde7d0f463 | ||
|
|
54548c3ed0 | ||
|
|
221d1edf0f | ||
|
|
02e75f9539 | ||
|
|
6bed2ff106 | ||
|
|
f3e1e4d1da | ||
|
|
370f6384d9 | ||
|
|
0105587d04 | ||
|
|
e327970ab9 | ||
|
|
9e247f39ff | ||
|
|
09f3a10b46 | ||
|
|
c3679a84e5 | ||
|
|
75f8d5e7d9 | ||
|
|
6ba4fa50b9 | ||
|
|
f5e130f2a6 | ||
|
|
cd5dcd87b0 | ||
|
|
54f319af0e | ||
|
|
96949059cf | ||
|
|
763368db99 | ||
|
|
f622ea654f | ||
|
|
70c4e6c287 | ||
|
|
d7692e875a | ||
|
|
0a94010668 | ||
|
|
50bd1d9a5d | ||
|
|
d45121a93b | ||
|
|
a55e3fb225 | ||
|
|
426b2f5858 | ||
|
|
3d10b5e538 | ||
|
|
b639599620 | ||
|
|
63c51c6ee0 | ||
|
|
f39934c274 | ||
|
|
adec1643bf | ||
|
|
229ea7d3ab | ||
|
|
03899f042d | ||
|
|
46d7cee639 | ||
|
|
eb0c378138 | ||
|
|
79d1bf30a4 | ||
|
|
5786434f37 | ||
|
|
3633d7ada1 | ||
|
|
b95d4aed11 | ||
|
|
c2f599a33c | ||
|
|
89361cfce4 | ||
|
|
278a6c504a | ||
|
|
e140ddf7be | ||
|
|
f00ba4e704 | ||
|
|
8128656a9e | ||
|
|
f2f7a6de6b | ||
|
|
8651d81b73 | ||
|
|
2458255e22 | ||
|
|
ea12c6e2c0 | ||
|
|
2e22bd2ecf | ||
|
|
777cb0033e | ||
|
|
127c126ef5 | ||
|
|
01ff8d171a | ||
|
|
457c23fffa | ||
|
|
b07911ec68 | ||
|
|
fb211d59a8 | ||
|
|
4e586d35a9 | ||
|
|
52f2461fe6 | ||
|
|
ac7dab8b6e | ||
|
|
5e171c2ad1 | ||
|
|
b4a139515c | ||
|
|
30219f6b6f | ||
|
|
d19e6bdd03 | ||
|
|
65ce0a5e54 | ||
|
|
c2659d68dc | ||
|
|
773c7ba14b | ||
|
|
93e617f488 | ||
|
|
f7959c073f | ||
|
|
6953970be7 | ||
|
|
1496fdaf80 | ||
|
|
0fc034b1ac | ||
|
|
c3312c918e | ||
|
|
5a13964ced | ||
|
|
fe07b1cb7f | ||
|
|
d805a70508 | ||
|
|
0f0009e0db | ||
|
|
4c4cb2bb17 | ||
|
|
fe319a529f | ||
|
|
91bea1f6c7 | ||
|
|
01745f7c65 | ||
|
|
5d3943ffa8 | ||
|
|
e66d7babc5 | ||
|
|
80e5645a84 | ||
|
|
a766faeae9 | ||
|
|
4d2d226446 | ||
|
|
61e83b10c3 | ||
|
|
ed675f0956 | ||
|
|
9cce8ab214 | ||
|
|
daa409cd82 | ||
|
|
9d65415fdc | ||
|
|
8c40917cc2 | ||
|
|
871f886702 | ||
|
|
f19075c50a | ||
|
|
71da205ab7 | ||
|
|
a34cc47a11 | ||
|
|
cbddaf1d19 | ||
|
|
1f1ed2da4c | ||
|
|
8d81bd0dc0 | ||
|
|
5773a5bfa6 | ||
|
|
7275a48102 | ||
|
|
8f84dd610c | ||
|
|
f1f466ed23 | ||
|
|
0ca5237139 | ||
|
|
20549bfdf0 | ||
|
|
d692bb3c52 | ||
|
|
44cd1e9223 | ||
|
|
f0fec654ff | ||
|
|
4e04e5e0c0 | ||
|
|
4991fb2769 | ||
|
|
4d90d554f8 | ||
|
|
e5468713ac | ||
|
|
77013f982d | ||
|
|
0460cdedd7 | ||
|
|
73f5bf69e8 | ||
|
|
750c0d7df2 | ||
|
|
2fcebdd281 | ||
|
|
e4e65a4cd5 | ||
|
|
e010ecb03f | ||
|
|
fc74db668d | ||
|
|
1bac3418b4 | ||
|
|
53df8c48b7 | ||
|
|
92702fe47e | ||
|
|
017c4c12cd | ||
|
|
830d246ba4 | ||
|
|
6b33afa916 | ||
|
|
69a3efd534 | ||
|
|
2d0adb8f4c | ||
|
|
da9d8cb138 | ||
|
|
2acaca8582 | ||
|
|
11cf82c6a4 | ||
|
|
1ef66c962a | ||
|
|
03f20599ba | ||
|
|
d150b10b3e | ||
|
|
c4f323aae3 | ||
|
|
8297f8ccd0 | ||
|
|
f336241576 | ||
|
|
f6d9a7e7c3 | ||
|
|
80d1ee7543 | ||
|
|
e55a254353 | ||
|
|
555a0f276c | ||
|
|
792632d726 | ||
|
|
9cac293efc | ||
|
|
cd8bfca29c | ||
|
|
b5b437b878 | ||
|
|
cc2947063a | ||
|
|
2864a9027f | ||
|
|
e11f547308 | ||
|
|
cdce7aa5e2 | ||
|
|
82cea185b2 | ||
|
|
f92a4bb195 | ||
|
|
9f4f88df9c | ||
|
|
e69803cbd1 | ||
|
|
f164661ef2 | ||
|
|
c9d993b838 | ||
|
|
65f35dc9f4 | ||
|
|
b600d462c1 | ||
|
|
fa5a82c9ab | ||
|
|
a9885be09e | ||
|
|
7b011f4a91 | ||
|
|
41c404abe6 | ||
|
|
2089a761cf | ||
|
|
0ee2df010d | ||
|
|
466844c016 | ||
|
|
bbf9a08649 | ||
|
|
c985c66652 | ||
|
|
f9dc96320e | ||
|
|
42552789fe | ||
|
|
1a2ffeb0b5 | ||
|
|
4f75493249 | ||
|
|
42193695fb | ||
|
|
02af0de21e | ||
|
|
5f8e10e524 | ||
|
|
cee93d746c | ||
|
|
08704a383f | ||
|
|
7c596be638 | ||
|
|
07265f594b | ||
|
|
392cb1ba89 | ||
|
|
e6f33e997f | ||
|
|
a44387f250 | ||
|
|
b1b1b7592b | ||
|
|
ca668898f4 | ||
|
|
fcd437c89f | ||
|
|
7f7d7edc7f | ||
|
|
bd827f946a | ||
|
|
ad8aa1c179 | ||
|
|
3ebaf83ce0 | ||
|
|
39b1978ff3 | ||
|
|
bddff17e5e | ||
|
|
0ac9120064 | ||
|
|
d90f75425f | ||
|
|
dec7d537dc | ||
|
|
11e95ea092 | ||
|
|
c5e9b69eb3 | ||
|
|
120c11b181 | ||
|
|
a1ae832129 | ||
|
|
3a4833818f | ||
|
|
8814fc9c9c | ||
|
|
e6e02ece89 | ||
|
|
9059c149dd | ||
|
|
7d8e70b2ac | ||
|
|
89105f5641 | ||
|
|
1813d17b4c | ||
|
|
ce27b36fd0 | ||
|
|
e635a87628 | ||
|
|
80c52433cc | ||
|
|
1472f0b141 | ||
|
|
4d914f5c0a | ||
|
|
0318f7344f | ||
|
|
413fbb3d0c | ||
|
|
8bc47baf4f | ||
|
|
e3f6d42a47 | ||
|
|
8230935fd3 | ||
|
|
f968d05ea0 | ||
|
|
d6e5dc2167 | ||
|
|
460147fea2 | ||
|
|
cea44834bb | ||
|
|
1af50fd7b8 | ||
|
|
b18013025f | ||
|
|
acdf7c244f | ||
|
|
399eb60809 | ||
|
|
ed67e3506b | ||
|
|
a72b6745aa | ||
|
|
24086e9023 | ||
|
|
c3d4b5ad38 | ||
|
|
cc618a83e5 | ||
|
|
9eaa0b27db | ||
|
|
a8835a679e | ||
|
|
656bc6df84 | ||
|
|
019aaf7d82 | ||
|
|
76bafbf398 | ||
|
|
030bcb99b1 | ||
|
|
d8ff37fc45 | ||
|
|
2fcc3bb1ea | ||
|
|
2e680c3d1e | ||
|
|
af0a0ef41b | ||
|
|
bbfccb0bbf | ||
|
|
c89eb5d69f | ||
|
|
ebde84214e | ||
|
|
03fbae7b6d | ||
|
|
f90e9596d4 | ||
|
|
944f9524e2 | ||
|
|
c61050244e | ||
|
|
90337adbbc | ||
|
|
7b67e41c5b | ||
|
|
91db24fcfc | ||
|
|
bb53db905f | ||
|
|
0e9a1efe46 | ||
|
|
289cd3e200 | ||
|
|
e0f847e539 | ||
|
|
c2842b486e | ||
|
|
7235ade42f | ||
|
|
850be2df1d | ||
|
|
d504501440 | ||
|
|
208392f12c | ||
|
|
0fe036c640 | ||
|
|
a40c41f0b0 | ||
|
|
4affa5b710 | ||
|
|
4eb574d991 | ||
|
|
2c1577ea24 | ||
|
|
b87e7e50b6 | ||
|
|
36215d50bd | ||
|
|
5ff1245d0c | ||
|
|
ebd189fb27 | ||
|
|
6f724827bd | ||
|
|
b6a0982012 | ||
|
|
c3e375e8a5 | ||
|
|
302409fd83 | ||
|
|
a2046461c1 | ||
|
|
6660c34120 | ||
|
|
b88ccf0ddd | ||
|
|
b898bbf94c | ||
|
|
787e89eb95 | ||
|
|
1022c2c438 | ||
|
|
ba21c62ed4 | ||
|
|
bfe66c919b | ||
|
|
3dacf7f661 | ||
|
|
c0a3ae2612 | ||
|
|
da612ef789 | ||
|
|
df9cb7cf6e | ||
|
|
9c1a26110e | ||
|
|
0883d18a6c | ||
|
|
c7246c61a5 | ||
|
|
c5a1431fc0 | ||
|
|
f0118a0dff | ||
|
|
cffe96e46f | ||
|
|
a9256578f0 | ||
|
|
05ed202904 | ||
|
|
963b63389a | ||
|
|
e04706dc74 | ||
|
|
04d4ce5ce1 | ||
|
|
24cf3730fa | ||
|
|
0700be86e2 | ||
|
|
7cca509eb3 | ||
|
|
7d7193cb63 | ||
|
|
1cf10d05ff | ||
|
|
2ec25a7729 | ||
|
|
2a9065a61e | ||
|
|
7518e30dcf | ||
|
|
dc3c80e3ce | ||
|
|
a25f61f6be | ||
|
|
e70fb71a04 | ||
|
|
f499630c2b | ||
|
|
43319a8588 | ||
|
|
d62b943c5d | ||
|
|
8baddf2ea3 | ||
|
|
600482660b | ||
|
|
72ab5c143e | ||
|
|
96ab0e7b4c | ||
|
|
b60903e2b4 | ||
|
|
b4f4d3f267 | ||
|
|
6e017c86e8 | ||
|
|
afcfc2dca5 | ||
|
|
59e22a12a9 | ||
|
|
b740ac3e01 | ||
|
|
9719f0df03 | ||
|
|
d4be599538 | ||
|
|
f88195c90a | ||
|
|
3b33f7e752 | ||
|
|
67a37294f7 | ||
|
|
fd88955696 | ||
|
|
9d248dbb5a | ||
|
|
20ec4104c6 | ||
|
|
6c232d116d | ||
|
|
2ef78bcd40 | ||
|
|
94ce658ab9 | ||
|
|
d8cf4cd341 | ||
|
|
0360337df9 | ||
|
|
119d38ea08 | ||
|
|
bee77afb7f | ||
|
|
16d4b16872 | ||
|
|
951b2346ab | ||
|
|
b29ff0e94b | ||
|
|
c8dd8341ca | ||
|
|
8bcf44bc16 | ||
|
|
50b37a8420 | ||
|
|
22df795733 | ||
|
|
7e3bf06db1 | ||
|
|
6630ca595c | ||
|
|
5d01e19ce7 | ||
|
|
56df89f8dd | ||
|
|
13de984ce3 | ||
|
|
15fc0e30d7 | ||
|
|
4289c11185 | ||
|
|
a3f564e702 | ||
|
|
f6734a0c98 | ||
|
|
72fb416239 | ||
|
|
833f5b09d2 | ||
|
|
b21b21f30a | ||
|
|
2f77a3f6d2 | ||
|
|
0bda655452 | ||
|
|
4f80bb7031 | ||
|
|
fbe7b3cc9b | ||
|
|
8402f0abd7 | ||
|
|
149b2ee5a7 | ||
|
|
f9d5af0600 | ||
|
|
72c4ccaee8 | ||
|
|
92999dcaf2 | ||
|
|
5bbd318518 | ||
|
|
8807894890 | ||
|
|
63b7820717 | ||
|
|
9e7e2d6977 | ||
|
|
89e4c280ae | ||
|
|
b6c9f29be4 | ||
|
|
74cbbc84ed | ||
|
|
ead4197670 | ||
|
|
4fc69ccdc8 | ||
|
|
f556cb44b9 | ||
|
|
45b540d375 | ||
|
|
af2d36a3c9 | ||
|
|
42a4f92cfa | ||
|
|
ccb9ed3489 | ||
|
|
773b2aa3d1 | ||
|
|
30d5b8d65b | ||
|
|
763676a18c | ||
|
|
e166ad6780 | ||
|
|
034c96d070 | ||
|
|
f34f8d304c | ||
|
|
944000c05c | ||
|
|
e2503cdb47 | ||
|
|
52db63bca2 | ||
|
|
55dfd9e2a1 | ||
|
|
d193cbf2b7 | ||
|
|
bdec56a543 | ||
|
|
e0a6d9740c | ||
|
|
0ce9c057e1 | ||
|
|
12a2fdbc20 | ||
|
|
57c294bc89 | ||
|
|
9758757805 | ||
|
|
f9350fa35f | ||
|
|
e120da4ecd | ||
|
|
328a10b70c | ||
|
|
1ed97c8deb | ||
|
|
91b970e2aa | ||
|
|
99af1bb479 | ||
|
|
11ddcbdee3 | ||
|
|
6e8a1086d8 | ||
|
|
c78945436e | ||
|
|
6eff8fde74 | ||
|
|
726d5a177e | ||
|
|
33495b5cb3 | ||
|
|
fe159a13a9 | ||
|
|
22a1dc0566 | ||
|
|
02e6b732e9 | ||
|
|
cc6fa135ac | ||
|
|
5747732156 | ||
|
|
581d1617d8 | ||
|
|
6152fd20bf | ||
|
|
19300ca65c | ||
|
|
2f3d744e19 | ||
|
|
724e812972 | ||
|
|
9a6246fd4e | ||
|
|
34f44de59c | ||
|
|
16e446c121 | ||
|
|
8f232a9da9 | ||
|
|
ebeb7f8578 | ||
|
|
f790673068 | ||
|
|
335ab5ab54 | ||
|
|
00e0d6ce2c | ||
|
|
414fb6d303 | ||
|
|
9c35a12211 | ||
|
|
bb4fe5174f | ||
|
|
3ffd6ff5a2 | ||
|
|
b05feb5bf7 | ||
|
|
fa171f237d | ||
|
|
f2ccb684eb | ||
|
|
ffea6522ac | ||
|
|
3d40a7df00 | ||
|
|
638c41476b | ||
|
|
c6d3088374 | ||
|
|
0f93be9dd4 | ||
|
|
f59982c9c5 | ||
|
|
dff67a5e54 | ||
|
|
6adcc3b2ed | ||
|
|
877ed3663c | ||
|
|
6000a82917 | ||
|
|
6805f9b3e0 | ||
|
|
1366c785f9 | ||
|
|
70540b4500 | ||
|
|
0967f23b6e | ||
|
|
1f7d66169c | ||
|
|
af501f5eeb | ||
|
|
60be60c923 | ||
|
|
48746101e0 | ||
|
|
af9c5c6ab7 | ||
|
|
602284d38c | ||
|
|
26898142c2 | ||
|
|
b0a8d7abe9 | ||
|
|
dc2b266b75 | ||
|
|
07bbd9506a | ||
|
|
14bb218287 | ||
|
|
29f238c929 | ||
|
|
a39a1d4fa5 | ||
|
|
15117c63f5 | ||
|
|
507ffb6fc6 | ||
|
|
6b2e0164cf | ||
|
|
02e06eb1de | ||
|
|
1b50f78733 | ||
|
|
ead629407c | ||
|
|
0abbc9e7dd | ||
|
|
37681e859e | ||
|
|
caabdc68f3 | ||
|
|
9e97eaf24d | ||
|
|
4cd06a789b | ||
|
|
a3ffd968de | ||
|
|
0cf40563aa | ||
|
|
3e7e7f864b | ||
|
|
6ae415e36a | ||
|
|
6cefa3ae26 | ||
|
|
70de3af3ea | ||
|
|
66ed814527 | ||
|
|
e12cc3b7a8 | ||
|
|
93ea19d7ad | ||
|
|
79d592b431 | ||
|
|
c9c3a0be82 | ||
|
|
f04be199dd | ||
|
|
f36cb1cc66 | ||
|
|
a5597e3df9 | ||
|
|
7f4c28053e | ||
|
|
ea24043b22 | ||
|
|
44ef60c8a2 | ||
|
|
bd68ff2cf3 | ||
|
|
0e8a592b26 | ||
|
|
d3b51bf94a | ||
|
|
cc137ee1cc | ||
|
|
c088482cef | ||
|
|
70e3febe0a | ||
|
|
f500cce293 | ||
|
|
c6b836b7be | ||
|
|
15485da1bb | ||
|
|
7195f55a44 | ||
|
|
176f8803eb | ||
|
|
5a3a925a3c | ||
|
|
29bfb9d19b | ||
|
|
86b0dfdd33 | ||
|
|
ab04f2fce0 | ||
|
|
be9f836b21 | ||
|
|
818bc96aab | ||
|
|
14d12c21f2 | ||
|
|
aa5250a37c | ||
|
|
2053a041e5 | ||
|
|
0534a0a41e | ||
|
|
d2f9a99beb | ||
|
|
9625047dc3 | ||
|
|
d6b18ce536 | ||
|
|
df00af1dfa | ||
|
|
3570ec0430 | ||
|
|
a111b014f8 | ||
|
|
50eebe834a | ||
|
|
f965e9f218 | ||
|
|
0ac5fdab49 | ||
|
|
39099909bf | ||
|
|
999ce8e366 | ||
|
|
8678e30cc8 | ||
|
|
8a59e9d9c8 | ||
|
|
dddace9d6a | ||
|
|
388cb7db3a | ||
|
|
46b74b3e1c | ||
|
|
d53e80c88a | ||
|
|
d8a8f36676 | ||
|
|
dafdbbf552 | ||
|
|
52bc52293b | ||
|
|
0733aefb64 | ||
|
|
aac6dec5da | ||
|
|
d44c59ea3e | ||
|
|
9b3c3881c4 | ||
|
|
cdd722dca0 | ||
|
|
9ad7a80496 | ||
|
|
b85597b15d | ||
|
|
ebb98d975b | ||
|
|
c1b320710b | ||
|
|
1201794bef | ||
|
|
dc58c9bd2f | ||
|
|
9787da7240 | ||
|
|
b0f989dbac | ||
|
|
a0ec6b8ea7 | ||
|
|
fac6868305 | ||
|
|
ed8fa59639 | ||
|
|
e8edda01a9 | ||
|
|
380a369eca | ||
|
|
781fffee42 | ||
|
|
69b5de3346 | ||
|
|
0d8c83f27c | ||
|
|
8ca58de2ba | ||
|
|
d8cd24fab0 | ||
|
|
f918081168 | ||
|
|
f88fb9bc1d | ||
|
|
062fbd7d27 | ||
|
|
6b6af008d0 | ||
|
|
4d35def548 | ||
|
|
b369d6bd5c | ||
|
|
63dfe2726c | ||
|
|
1002d29cc2 | ||
|
|
868240666a | ||
|
|
02a88fdc9c | ||
|
|
bc4adf7107 | ||
|
|
bd67785802 | ||
|
|
68c90e8ebe | ||
|
|
64519a9fd4 | ||
|
|
d21da0211c | ||
|
|
2e919b788f | ||
|
|
2d2056f2bd | ||
|
|
334dabc1de | ||
|
|
dfa2c951d6 | ||
|
|
e28d1c7569 | ||
|
|
9ce0f96de3 | ||
|
|
a408b19bbe | ||
|
|
f9a17b8021 | ||
|
|
5eeb200913 | ||
|
|
643a0e6b13 | ||
|
|
e7e5f76e9e | ||
|
|
247acd81a9 | ||
|
|
a2457a6ac4 | ||
|
|
af7a320493 | ||
|
|
4dd8b7e85d | ||
|
|
3a4392af40 | ||
|
|
44f70f0009 | ||
|
|
238c4cf181 | ||
|
|
9171c49d85 | ||
|
|
81ee670dc2 | ||
|
|
faf215685b | ||
|
|
83e9711274 |
@@ -1,57 +1,140 @@
|
||||
# サーバーのメンテナ情報
|
||||
name: example-instance-name # Name of your instance
|
||||
description: example-description # Description of your instance
|
||||
|
||||
maintainer:
|
||||
# メンテナの名前
|
||||
name:
|
||||
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)
|
||||
|
||||
# メンテナの連絡先(URLかmailto形式のURL)
|
||||
url:
|
||||
# URL and Port settings overview
|
||||
# e.g., If you want to realize following structure:
|
||||
#
|
||||
# +--- https://example.com:123 ----------+
|
||||
# +------+ |+-------------+ +---------------+|
|
||||
# | User | ---> || Proxy (123) | ---> | Misskey (456) ||
|
||||
# +------+ |+-------------+ +---------------+|
|
||||
# +--------------------------------------+
|
||||
#
|
||||
# You need to set 'https://example.com:123' to 'url' prop and
|
||||
# You need to set 456 to 'port' prop.
|
||||
#
|
||||
# In other words, the 'url' prop should be the final accessible URL seen by a user.
|
||||
# 'port' prop is a port that the Misskey server should actually listen
|
||||
# on and it is not necessarily the port that a user accesses.
|
||||
|
||||
# (Misskeyを動かす)URL
|
||||
url:
|
||||
url: http://localhost/
|
||||
|
||||
# 待受ポート
|
||||
port:
|
||||
# A port that your Misskey server should listen.
|
||||
# This value is not a port to use when accessing with a browser.
|
||||
port: 80
|
||||
|
||||
# TLSの設定(利用しない場合は省略してください)
|
||||
https:
|
||||
# 証明書のパス...
|
||||
key:
|
||||
cert:
|
||||
|
||||
# MongoDBの設定
|
||||
mongodb:
|
||||
host: localhost
|
||||
port: 27017
|
||||
db: misskey
|
||||
user:
|
||||
pass:
|
||||
user: example-misskey-user
|
||||
pass: example-misskey-pass
|
||||
|
||||
# Redisの設定
|
||||
redis:
|
||||
host: localhost
|
||||
port: 6379
|
||||
pass:
|
||||
pass: example-pass
|
||||
|
||||
# reCAPTCHAの設定
|
||||
recaptcha:
|
||||
site_key:
|
||||
secret_key:
|
||||
# Drive capacity of a local user (MB)
|
||||
localDriveCapacityMb: 256
|
||||
|
||||
# ServiceWrokerの設定
|
||||
sw:
|
||||
# VAPIDの公開鍵
|
||||
public_key:
|
||||
# Drive capacity of a remote user (MB)
|
||||
remoteDriveCapacityMb: 8
|
||||
|
||||
# VAPIDの秘密鍵
|
||||
private_key:
|
||||
# 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
|
||||
|
||||
# Google Maps API
|
||||
google_maps_api_key:
|
||||
drive:
|
||||
storage: 'db'
|
||||
|
||||
# Twitterインテグレーションの設定(利用しない場合は省略可能)
|
||||
twitter:
|
||||
# インテグレーション用アプリのコンシューマーキー
|
||||
consumer_key:
|
||||
# OR
|
||||
|
||||
# インテグレーション用アプリのコンシューマーシークレット
|
||||
consumer_secret:
|
||||
# storage: 'minio'
|
||||
# bucket:
|
||||
# prefix:
|
||||
# config:
|
||||
# endPoint:
|
||||
# port:
|
||||
# useSSL:
|
||||
# accessKey:
|
||||
# secretKey:
|
||||
|
||||
# S3 example
|
||||
# storage: 'minio'
|
||||
# bucket: bucket-name
|
||||
# prefix: files
|
||||
# config:
|
||||
# endPoint: s3-us-west-2.amazonaws.com
|
||||
# region: us-west-2
|
||||
# useSSL: true
|
||||
# accessKey: XXX
|
||||
# secretKey: YYY
|
||||
|
||||
# S3 example (with CDN, custom domain)
|
||||
# storage: 'minio'
|
||||
# bucket: drive.example.com
|
||||
# prefix: files
|
||||
# baseUrl: https://drive.example.com
|
||||
# config:
|
||||
# endPoint: s3-us-west-2.amazonaws.com
|
||||
# region: us-west-2
|
||||
# useSSL: true
|
||||
# accessKey: XXX
|
||||
# secretKey: YYY
|
||||
|
||||
#
|
||||
# Below settings are optional
|
||||
#
|
||||
|
||||
# TLS
|
||||
# https:
|
||||
# # path for certification
|
||||
# key: example-tls-key
|
||||
# cert: example-tls-cert
|
||||
|
||||
# Elasticsearch
|
||||
# elasticsearch:
|
||||
# host: localhost
|
||||
# port: 9200
|
||||
# pass: null
|
||||
|
||||
# reCAPTCHA
|
||||
# recaptcha:
|
||||
# site_key: example-site-key
|
||||
# secret_key: example-secret-key
|
||||
|
||||
# ServiceWorker
|
||||
# sw:
|
||||
# # Public key of VAPID
|
||||
# public_key: example-sw-public-key
|
||||
|
||||
# # Private key of VAPID
|
||||
# private_key: example-sw-private-key
|
||||
|
||||
# google_maps_api_key: example-google-maps-api-key
|
||||
|
||||
# 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
|
||||
# clusterLimit: 1
|
||||
|
||||
2
.gitattributes
vendored
@@ -1,3 +1,5 @@
|
||||
*.svg -diff -text
|
||||
*.psd -diff -text
|
||||
*.ai -diff -text
|
||||
yarn.lock -diff -text
|
||||
package-lock.json -diff -text
|
||||
|
||||
7
.github/ISSUE_TEMPLATE
vendored
@@ -1,7 +0,0 @@
|
||||
<!--
|
||||
Misskeyへの貢献ありがとうございます。
|
||||
|
||||
バグの報告や提案などで、可能であれば以下の情報を含めてください。
|
||||
* お使いのブラウザ
|
||||
* デスクトップ版Misskeyかモバイル版Misskeyか
|
||||
-->
|
||||
22
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
---
|
||||
name: Bug Report
|
||||
about: Create a report to help us improve
|
||||
---
|
||||
|
||||
# Summary
|
||||
<!-- Tell us what the bug is -->
|
||||
|
||||
# Expected Behavior
|
||||
<!--- Tell us what should happen -->
|
||||
|
||||
# Actual Behavior
|
||||
<!--- Tell us what happens instead of the expected behavior -->
|
||||
|
||||
# Steps to Reproduce
|
||||
1.
|
||||
2.
|
||||
3.
|
||||
|
||||
# Environment
|
||||
<!-- Tell us where on the platform it happens -->
|
||||
<!-- e.g. desktop or mobile version, your browser, your OS -->
|
||||
11
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
---
|
||||
name: Feature Request
|
||||
about: Suggest an idea for this project
|
||||
---
|
||||
|
||||
# Summary
|
||||
<!-- Tell us what the suggestion is -->
|
||||
|
||||
# Environment
|
||||
<!-- Tell us where on the platform it related -->
|
||||
<!-- e.g. desktop or mobile version, your browser, your OS -->
|
||||
4
.gitignore
vendored
@@ -4,11 +4,11 @@
|
||||
/node_modules
|
||||
/build
|
||||
/built
|
||||
built
|
||||
/data
|
||||
/.cache-loader
|
||||
npm-debug.log
|
||||
*.pem
|
||||
run.bat
|
||||
api-docs.json
|
||||
package-lock.json
|
||||
yarn.lock
|
||||
*.log
|
||||
|
||||
@@ -22,7 +22,6 @@ addons:
|
||||
- ubuntu-toolchain-r-test
|
||||
packages:
|
||||
- g++-4.8
|
||||
- graphicsmagick
|
||||
|
||||
cache:
|
||||
directories:
|
||||
|
||||
12
.vscode/extensions.json
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"recommendations": [
|
||||
"ducksoupdev.vue2",
|
||||
"editorconfig.editorconfig",
|
||||
"eg2.tslint",
|
||||
"eg2.vscode-npm-script",
|
||||
"hollowtree.vue-snippets",
|
||||
"ms-vscode.typescript-javascript-grammar",
|
||||
"octref.vetur",
|
||||
"sysoev.language-stylus"
|
||||
]
|
||||
}
|
||||
4
.vsls.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"$schema": "http://json.schemastore.org/vsls",
|
||||
"gitignore": "exclude"
|
||||
}
|
||||
46
CHANGELOG.md
Normal file
@@ -0,0 +1,46 @@
|
||||
ChangeLog
|
||||
=========
|
||||
|
||||
破壊的変更のみ記載。
|
||||
|
||||
This document describes breaking changes only.
|
||||
|
||||
6.0.0
|
||||
-----
|
||||
|
||||
### Migration
|
||||
|
||||
オブジェクトストレージを使用している場合、設定ファイルの`drive.config.secure`を`drive.config.useSSL`にリネームしてください。
|
||||
|
||||
If you use object storage, please rename `drive.config.secure` to `drive.config.useSSL` in config.
|
||||
|
||||
5.0.0
|
||||
-----
|
||||
|
||||
### Migration
|
||||
|
||||
起動する前に、`node cli/migration/5.0.0`してください。
|
||||
|
||||
Please run `node cli/migration/5.0.0` before launch.
|
||||
|
||||
4.0.0
|
||||
-----
|
||||
|
||||
オセロがリバーシに変更されました。
|
||||
|
||||
Othello is now Reversi.
|
||||
|
||||
### Migration
|
||||
|
||||
MongoDBの、`othelloGames`と`othelloMatchings`コレクションをそれぞれ`reversiGames`と`reversiMatchings`にリネームしてください。
|
||||
|
||||
You need to rename `othelloGames` and `othelloMatchings` MongoDB collections to `reversiGames` and `reversiMatchings`.
|
||||
|
||||
3.0.0
|
||||
-----
|
||||
|
||||
### Migration
|
||||
|
||||
起動する前に、`node cli/recount-stats`してください。
|
||||
|
||||
Please run `node cli/recount-stats` before launch.
|
||||
91
README.md
@@ -5,29 +5,32 @@
|
||||
|
||||
[![][travis-badge]][travis-link]
|
||||
[![][dependencies-badge]][dependencies-link]
|
||||
[![][himawari-badge]][himasaku]
|
||||
[![][sakurako-badge]][himasaku]
|
||||
[](http://makeapullrequest.com)
|
||||
[](http://makeapullrequest.com) [](https://greenkeeper.io/)
|
||||
|
||||
> Lead Maintainer: [syuilo][syuilo-link]
|
||||
Sophisticated microblogging platform, evolving forever.
|
||||
|
||||
**[Misskey](https://misskey.xyz)** is a completely open source,
|
||||
ultimately sophisticated new type of mini-blog based SNS.
|
||||
[Misskey](https://misskey.xyz) is a decentralized microblogging platform born on Earth.
|
||||
Since it exists within the Fediverse (a universe where various social media platforms are organized),
|
||||
it is mutually linked with other social media platforms.
|
||||
Why don't you take a short break from the hustle and bustle of the city, and dive into a new Internet?
|
||||
|
||||
<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>
|
||||
|
||||

|
||||
|
||||
:sparkles: Features
|
||||
----------------------------------------------------------------
|
||||
* Rich text contents
|
||||
* Reactions
|
||||
* User lists
|
||||
* Customizable column view (called MisskeyDeck)
|
||||
* and widgets!
|
||||
* Private messages
|
||||
* Mute
|
||||
* Real time contents
|
||||
* ActivityPub compatible
|
||||
* ActivityPub support
|
||||
|
||||
and more! You can see it with your own eyes at [misskey.xyz](https://misskey.xyz).
|
||||
|
||||
:package: Create your instance
|
||||
:package: Create your own instance
|
||||
----------------------------------------------------------------
|
||||
If you want to run your own instance of Misskey,
|
||||
please see [Setup and installation guide](./docs/setup.en.md).
|
||||
@@ -42,27 +45,42 @@ If you want to...
|
||||
|
||||
:heart: Backers & Sponsors
|
||||
----------------------------------------------------------------
|
||||
[![Backers][backers-image]][support-url]
|
||||
[![Sponsors][sponsors-image]][support-url]
|
||||
|
||||
:mortar_board: Notable contributors
|
||||
----------------------------------------------------------------
|
||||
| ![syuilo][syuilo-icon] | ![Morisawa Aya][ayamorisawa-icon] | ![otofune][otofune-icon] | ![akihikodaki][akihikodaki-icon] | ![tamaina][tamaina-icon] | ![rinsuki][rinsuki-icon] |
|
||||
|:-:|:-:|:-:|:-:|:-:|:-:|
|
||||
| [syuilo][syuilo-link]<br>Owner | [Aya Morisawa][ayamorisawa-link]<br>Collaborator | [otofune][otofune-link]<br>Collaborator | [akihikodaki][akihikodaki-link] | [tamaina][tamaina-link] | [rinsuki][rinsuki-link] |
|
||||
|
||||
[List of all contributors](https://github.com/syuilo/misskey/graphs/contributors)
|
||||
|
||||
### :earth_americas: Translators
|
||||
| ![][mirro-san-icon] | ![][Conan-kun-icon] | ![][m4sk1n-icon] |
|
||||
|:-:|:-:|:-:|
|
||||
| [Mirro][mirro-san-link]<br>English, French | [Asriel][Conan-kun-link]<br>English, French | [Marcin Mikołajczak][m4sk1n-link]<br>Polish |
|
||||
<!-- PATREON_START -->
|
||||
<table>
|
||||
<tr>
|
||||
<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"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12378075/0156f769e20f412594fa6b87d85fe228/1?token-time=2145916800&token-hash=IsIJRUXszzoD6-7pDnRY8I05T9nSznc4GTaxj7C9SwU%3D"></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"></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"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12959468/c249e15aebec4424b5c0f427173671b6/1?token-time=2145916800&token-hash=lubpCEdxAkxPlpR2O6bvZ7BIh8Q4nGf-U_mE1qpjVAQ%3D"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12913507/f7181eacafe8469a93033d85f5969c29/1?token-time=2145916800&token-hash=f03BFb4S2FUx9YEt87TnEmifb4h33OywGBW2akQVtQY%3D"></td>
|
||||
<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"></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"></td>
|
||||
<td><img src="https://c8.patreon.com/2/100/12718187"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12931605/ead494101f364dffa90efe49e36fb494/1?token-time=2145916800&token-hash=NzSFPjIlodXyv41rwK61aZWVZWfI4surJaNj8vWKvqM%3D"></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"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://www.patreon.com/mastodon">Gargron</a></td>
|
||||
<td><a href="https://www.patreon.com/user/creators?u=12378075">39ff</a></td>
|
||||
<td><a href="https://www.patreon.com/dansup">dansup</a></td>
|
||||
<td><a href="https://www.patreon.com/user/creators?u=12531784">Takashi Shibuya</a></td>
|
||||
<td><a href="https://www.patreon.com/fujishan">fujishan</a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=12913507">Melilot</a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=5881381">Naoki Kosaka</a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=12731202">negao</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=12931605">Reiju</a></td>
|
||||
<td><a href="https://www.patreon.com/gutfuckllc">gutfuckllc</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<!-- PATREON_END -->
|
||||
|
||||
:four_leaf_clover: Copyright
|
||||
----------------------------------------------------------------
|
||||
> Copyright (c) 2014-2018 syuilo
|
||||
|
||||
Misskey is an open-source software licensed under [GNU AGPLv3](LICENSE).
|
||||
Misskey is an open-source software licensed under the [GNU AGPLv3](LICENSE).
|
||||
|
||||
[![][agpl-3.0-badge]][AGPL-3.0]
|
||||
|
||||
@@ -72,9 +90,6 @@ Misskey is an open-source software licensed under [GNU AGPLv3](LICENSE).
|
||||
[travis-badge]: http://img.shields.io/travis/syuilo/misskey/master.svg?style=flat-square
|
||||
[dependencies-link]: https://david-dm.org/syuilo/misskey
|
||||
[dependencies-badge]: https://img.shields.io/david/syuilo/misskey.svg?style=flat-square
|
||||
[himasaku]: https://himasaku.net
|
||||
[himawari-badge]: https://img.shields.io/badge/%E5%8F%A4%E8%B0%B7-%E5%90%91%E6%97%A5%E8%91%B5-1684c5.svg?style=flat-square
|
||||
[sakurako-badge]: https://img.shields.io/badge/%E5%A4%A7%E5%AE%A4-%E6%AB%BB%E5%AD%90-efb02a.svg?style=flat-square
|
||||
|
||||
[backer-url]: #backers
|
||||
[backer-badge]: https://opencollective.com/misskey/backers/badge.svg
|
||||
@@ -84,23 +99,5 @@ Misskey is an open-source software licensed under [GNU AGPLv3](LICENSE).
|
||||
[sponsors-image]: https://opencollective.com/misskey/sponsors.svg
|
||||
[support-url]: https://opencollective.com/misskey#support
|
||||
|
||||
<!-- Contributors Info -->
|
||||
[syuilo-link]: https://syuilo.com
|
||||
[syuilo-icon]: https://avatars2.githubusercontent.com/u/4439005?v=3&s=70
|
||||
[ayamorisawa-link]: https://github.com/ayamorisawa
|
||||
[ayamorisawa-icon]: https://avatars0.githubusercontent.com/u/10798641?v=3&s=70
|
||||
[otofune-link]: https://github.com/otofune
|
||||
[otofune-icon]: https://avatars0.githubusercontent.com/u/15062473?v=3&s=70
|
||||
[akihikodaki-link]: https://github.com/akihikodaki
|
||||
[akihikodaki-icon]: https://avatars2.githubusercontent.com/u/17036990?s=70&v=4
|
||||
[rinsuki-link]: https://github.com/rinsuki
|
||||
[rinsuki-icon]: https://avatars0.githubusercontent.com/u/6533808?s=70&v=4
|
||||
[tamaina-link]: https://github.com/tamaina
|
||||
[tamaina-icon]: https://avatars1.githubusercontent.com/u/7973572?s=70&v=4
|
||||
|
||||
[mirro-san-link]: https://github.com/mirro-san
|
||||
[mirro-san-icon]: https://avatars1.githubusercontent.com/u/17948612?s=70&v=4
|
||||
[Conan-kun-link]: https://github.com/Conan-kun
|
||||
[Conan-kun-icon]: https://avatars3.githubusercontent.com/u/30003708?s=70&v=4
|
||||
[m4sk1n-link]: https://github.com/m4sk1n
|
||||
[m4sk1n-icon]: https://avatars3.githubusercontent.com/u/21127288?s=70&v=4
|
||||
|
||||
41
appveyor.yml
@@ -1,41 +0,0 @@
|
||||
# appveyor file
|
||||
# http://www.appveyor.com/docs/appveyor-yml
|
||||
|
||||
environment:
|
||||
matrix:
|
||||
- nodejs_version: 10.1.0
|
||||
|
||||
cache:
|
||||
- node_modules
|
||||
|
||||
build: off
|
||||
|
||||
install:
|
||||
# Update Node.js
|
||||
# 標準で入っている Node.js を更新します (2014/11/13 時点では、v0.10.32 が標準)
|
||||
- ps: Update-NodeJsInstallation (Get-NodeJsLatestBuild $env:nodejs_version)
|
||||
- node --version
|
||||
|
||||
# Update NPM
|
||||
- npm install -g npm
|
||||
- npm --version
|
||||
|
||||
# Update node-gyp
|
||||
# 必須! node-gyp のバージョンを上げないと、ネイティブモジュールのコンパイルに失敗します
|
||||
- npm install -g node-gyp
|
||||
|
||||
- npm install
|
||||
|
||||
init:
|
||||
# git clone の際の改行を変換しないようにします
|
||||
- git config --global core.autocrlf false
|
||||
|
||||
before_test:
|
||||
# 設定ファイルを配置
|
||||
- cp ./.travis/default.yml ./.config
|
||||
- cp ./.travis/test.yml ./.config
|
||||
|
||||
- npm run build
|
||||
|
||||
test_script:
|
||||
- npm test
|
||||
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 3.9 KiB |
BIN
assets/icons/128.png
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
assets/icons/16.png
Normal file
|
After Width: | Height: | Size: 446 B |
BIN
assets/icons/192.png
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
BIN
assets/icons/256.png
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
assets/icons/32.png
Normal file
|
After Width: | Height: | Size: 774 B |
BIN
assets/icons/64.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
assets/title.png
|
Before Width: | Height: | Size: 6.6 KiB After Width: | Height: | Size: 3.8 KiB |
@@ -9,7 +9,7 @@ const q = {
|
||||
'metadata._user.host': {
|
||||
$ne: null
|
||||
},
|
||||
'metadata.isMetaOnly': false
|
||||
'metadata.withoutChunks': false
|
||||
};
|
||||
|
||||
async function main() {
|
||||
@@ -57,7 +57,7 @@ async function main() {
|
||||
|
||||
DriveFile.update({ _id: file._id }, {
|
||||
$set: {
|
||||
'metadata.isMetaOnly': true
|
||||
'metadata.withoutChunks': true
|
||||
}
|
||||
})
|
||||
]).then(async () => {
|
||||
|
||||
168
cli/init.js
@@ -1,168 +0,0 @@
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const yaml = require('js-yaml');
|
||||
const inquirer = require('inquirer');
|
||||
const chalk = require('chalk');
|
||||
|
||||
const configDirPath = `${__dirname}/../.config`;
|
||||
const configPath = `${configDirPath}/default.yml`;
|
||||
|
||||
const form = [{
|
||||
type: 'input',
|
||||
name: 'maintainerName',
|
||||
message: 'Your name:'
|
||||
}, {
|
||||
type: 'input',
|
||||
name: 'maintainerUrl',
|
||||
message: 'Your home page URL or your mailto URL:'
|
||||
}, {
|
||||
type: 'input',
|
||||
name: 'url',
|
||||
message: 'URL you want to run Misskey:',
|
||||
validate: function(wannabeurl) {
|
||||
return wannabeurl.match('^http\(s?\)://') ? true :
|
||||
'URL needs to start with http:// or https://';
|
||||
}
|
||||
}, {
|
||||
type: 'input',
|
||||
name: 'port',
|
||||
message: 'Listen port (e.g. 443):'
|
||||
}, {
|
||||
type: 'confirm',
|
||||
name: 'https',
|
||||
message: 'Use TLS?',
|
||||
default: false
|
||||
}, {
|
||||
type: 'input',
|
||||
name: 'https_key',
|
||||
message: 'Path of tls key:',
|
||||
when: ctx => ctx.https
|
||||
}, {
|
||||
type: 'input',
|
||||
name: 'https_cert',
|
||||
message: 'Path of tls cert:',
|
||||
when: ctx => ctx.https
|
||||
}, {
|
||||
type: 'input',
|
||||
name: 'https_ca',
|
||||
message: 'Path of tls ca:',
|
||||
when: ctx => ctx.https
|
||||
}, {
|
||||
type: 'input',
|
||||
name: 'mongo_host',
|
||||
message: 'MongoDB\'s host:',
|
||||
default: 'localhost'
|
||||
}, {
|
||||
type: 'input',
|
||||
name: 'mongo_port',
|
||||
message: 'MongoDB\'s port:',
|
||||
default: '27017'
|
||||
}, {
|
||||
type: 'input',
|
||||
name: 'mongo_db',
|
||||
message: 'MongoDB\'s db:',
|
||||
default: 'misskey'
|
||||
}, {
|
||||
type: 'input',
|
||||
name: 'mongo_user',
|
||||
message: 'MongoDB\'s user:'
|
||||
}, {
|
||||
type: 'password',
|
||||
name: 'mongo_pass',
|
||||
message: 'MongoDB\'s password:'
|
||||
}, {
|
||||
type: 'input',
|
||||
name: 'redis_host',
|
||||
message: 'Redis\'s host:',
|
||||
default: 'localhost'
|
||||
}, {
|
||||
type: 'input',
|
||||
name: 'redis_port',
|
||||
message: 'Redis\'s port:',
|
||||
default: '6379'
|
||||
}, {
|
||||
type: 'password',
|
||||
name: 'redis_pass',
|
||||
message: 'Redis\'s password:'
|
||||
}, {
|
||||
type: 'confirm',
|
||||
name: 'elasticsearch',
|
||||
message: 'Use Elasticsearch?',
|
||||
default: false
|
||||
}, {
|
||||
type: 'input',
|
||||
name: 'es_host',
|
||||
message: 'Elasticsearch\'s host:',
|
||||
default: 'localhost',
|
||||
when: ctx => ctx.elasticsearch
|
||||
}, {
|
||||
type: 'input',
|
||||
name: 'es_port',
|
||||
message: 'Elasticsearch\'s port:',
|
||||
default: '9200',
|
||||
when: ctx => ctx.elasticsearch
|
||||
}, {
|
||||
type: 'password',
|
||||
name: 'es_pass',
|
||||
message: 'Elasticsearch\'s password:',
|
||||
when: ctx => ctx.elasticsearch
|
||||
}, {
|
||||
type: 'input',
|
||||
name: 'recaptcha_site',
|
||||
message: 'reCAPTCHA\'s site key:'
|
||||
}, {
|
||||
type: 'input',
|
||||
name: 'recaptcha_secret',
|
||||
message: 'reCAPTCHA\'s secret key:'
|
||||
}];
|
||||
|
||||
inquirer.prompt(form).then(as => {
|
||||
// Mapping answers
|
||||
const conf = {
|
||||
maintainer: {
|
||||
name: as['maintainerName'],
|
||||
url: as['maintainerUrl']
|
||||
},
|
||||
url: as['url'],
|
||||
port: parseInt(as['port'], 10),
|
||||
mongodb: {
|
||||
host: as['mongo_host'],
|
||||
port: parseInt(as['mongo_port'], 10),
|
||||
db: as['mongo_db'],
|
||||
user: as['mongo_user'],
|
||||
pass: as['mongo_pass']
|
||||
},
|
||||
redis: {
|
||||
host: as['redis_host'],
|
||||
port: parseInt(as['redis_port'], 10),
|
||||
pass: as['redis_pass']
|
||||
},
|
||||
elasticsearch: {
|
||||
enable: as['elasticsearch'],
|
||||
host: as['es_host'] || null,
|
||||
port: parseInt(as['es_port'], 10) || null,
|
||||
pass: as['es_pass'] || null
|
||||
},
|
||||
recaptcha: {
|
||||
site_key: as['recaptcha_site'],
|
||||
secret_key: as['recaptcha_secret']
|
||||
}
|
||||
};
|
||||
|
||||
if (as['https']) {
|
||||
conf.https = {
|
||||
key: as['https_key'] || null,
|
||||
cert: as['https_cert'] || null,
|
||||
ca: as['https_ca'] || null
|
||||
};
|
||||
}
|
||||
|
||||
console.log(`Thanks. Writing the configuration to ${chalk.bold(path.resolve(configPath))}`);
|
||||
|
||||
try {
|
||||
fs.writeFileSync(configPath, yaml.dump(conf));
|
||||
console.log(chalk.green('Well done.'));
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
});
|
||||
23
cli/mark-admin.js
Normal file
@@ -0,0 +1,23 @@
|
||||
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 admin ${user}...`);
|
||||
|
||||
User.update(q, {
|
||||
$set: {
|
||||
isAdmin: true
|
||||
}
|
||||
}).then(() => {
|
||||
console.log(`Done ${user}`);
|
||||
}, e => {
|
||||
console.error(e);
|
||||
});
|
||||
23
cli/mark-verified.js
Normal file
@@ -0,0 +1,23 @@
|
||||
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);
|
||||
});
|
||||
@@ -3,8 +3,8 @@
|
||||
const chalk = require('chalk');
|
||||
const sequential = require('promise-sequential');
|
||||
|
||||
const { default: User } = require('../built/models/user');
|
||||
const { default: DriveFile } = require('../built/models/drive-file');
|
||||
const { default: User } = require('../../built/models/user');
|
||||
const { default: DriveFile } = require('../../built/models/drive-file');
|
||||
|
||||
async function main() {
|
||||
const promiseGens = [];
|
||||
@@ -3,8 +3,8 @@
|
||||
const chalk = require('chalk');
|
||||
const sequential = require('promise-sequential');
|
||||
|
||||
const { default: User } = require('../built/models/user');
|
||||
const { default: DriveFile } = require('../built/models/drive-file');
|
||||
const { default: User } = require('../../built/models/user');
|
||||
const { default: DriveFile } = require('../../built/models/drive-file');
|
||||
|
||||
async function main() {
|
||||
const promiseGens = [];
|
||||
9
cli/migration/5.0.0.js
Normal file
@@ -0,0 +1,9 @@
|
||||
const { default: DriveFile } = require('../../built/models/drive-file');
|
||||
|
||||
DriveFile.update({}, {
|
||||
$rename: {
|
||||
'metadata.isMetaOnly': 'metadata.withoutChunks'
|
||||
}
|
||||
}, {
|
||||
multi: true
|
||||
});
|
||||
42
cli/recount-stats.js
Normal file
@@ -0,0 +1,42 @@
|
||||
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);
|
||||
29
cli/reset-password.js
Normal file
@@ -0,0 +1,29 @@
|
||||
const mongo = require('mongodb');
|
||||
const bcrypt = require('bcryptjs');
|
||||
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(`Resetting password for ${user}...`);
|
||||
|
||||
const passwd = 'yo';
|
||||
|
||||
// Generate hash of password
|
||||
const hash = bcrypt.hashSync(passwd);
|
||||
|
||||
User.update(q, {
|
||||
$set: {
|
||||
password: hash
|
||||
}
|
||||
}).then(() => {
|
||||
console.log(`Password of ${user} is now '${passwd}'`);
|
||||
}, e => {
|
||||
console.error(e);
|
||||
});
|
||||
@@ -3,16 +3,21 @@ const User = require('../built/models/user').default;
|
||||
|
||||
const args = process.argv.slice(2);
|
||||
|
||||
const userId = new mongo.ObjectID(args[0]);
|
||||
const user = args[0];
|
||||
|
||||
console.log(`Suspending ${userId}...`);
|
||||
const q = user.startsWith('@') ? {
|
||||
username: user.split('@')[1],
|
||||
host: user.split('@')[2] || null
|
||||
} : { _id: new mongo.ObjectID(user) };
|
||||
|
||||
User.update({ _id: userId }, {
|
||||
console.log(`Suspending ${user}...`);
|
||||
|
||||
User.update(q, {
|
||||
$set: {
|
||||
isSuspended: true
|
||||
}
|
||||
}).then(() => {
|
||||
console.log(`Suspended ${userId}`);
|
||||
console.log(`Suspended ${user}`);
|
||||
}, e => {
|
||||
console.error(e);
|
||||
});
|
||||
|
||||
12
cli/update-remote-user.js
Normal file
@@ -0,0 +1,12 @@
|
||||
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);
|
||||
});
|
||||
@@ -1,26 +0,0 @@
|
||||
FROM base/archlinux
|
||||
|
||||
MAINTAINER Aya Morisawa
|
||||
|
||||
RUN rm /etc/pacman.d/mirrorlist
|
||||
RUN echo 'Server = http://ftp.jaist.ac.jp/pub/Linux/ArchLinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist
|
||||
RUN echo 'Server = http://ftp.tsukuba.wide.ad.jp/Linux/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist
|
||||
|
||||
RUN rm /etc/localtime
|
||||
RUN ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
|
||||
|
||||
RUN pacman -Sy --noconfirm
|
||||
RUN pacman -S --noconfirm pacman
|
||||
RUN pacman-db-upgrade
|
||||
RUN pacman -S --noconfirm archlinux-keyring
|
||||
RUN pacman -Syyu --noconfirm
|
||||
RUN pacman -S --noconfirm git nodejs npm mongodb redis imagemagick
|
||||
|
||||
COPY misskey.sh /root/misskey.sh
|
||||
RUN chmod u+x /root/misskey.sh
|
||||
|
||||
EXPOSE 80
|
||||
EXPOSE 443
|
||||
EXPOSE 27017
|
||||
|
||||
CMD ["/root/misskey.sh"]
|
||||
@@ -1,6 +0,0 @@
|
||||
#!/bin/sh
|
||||
redis-server --daemonize yes
|
||||
mongod > /dev/null &
|
||||
cd /root/misskey
|
||||
npm start
|
||||
tail -f /dev/null
|
||||
@@ -22,8 +22,4 @@ The list of people who have sent donation for Misskey.
|
||||
|
||||
---
|
||||
|
||||
If your name is missing, please contact us!
|
||||
|
||||
If you want to donate to Misskey, please get in touch with [@syuilo][syuilo-link].
|
||||
|
||||
[syuilo-link]: https://syuilo.com
|
||||
If your name is missing, please contact us!
|
||||
6
docs/README.md
Normal file
@@ -0,0 +1,6 @@
|
||||
# Docs
|
||||
These docs are for contributors of Misskey or admins of instance of Misskey.
|
||||
Docs for users are located in `src/docs`.
|
||||
|
||||
これらのドキュメントはMisskeyの開発者またはMisskeyインスタンス運営者向けです。
|
||||
利用者向けのドキュメントは`src/docs`にあります。
|
||||
@@ -1,29 +0,0 @@
|
||||
Setup with Docker :whale:
|
||||
================================================================
|
||||
|
||||
Ensure that the working directory is the repository root directory.
|
||||
|
||||
To create misskey image:
|
||||
``` console
|
||||
$ sudo docker build -t misskey ./docker
|
||||
```
|
||||
|
||||
To run misskey:
|
||||
``` console
|
||||
$ sudo docker run --rm -i -t -p $PORT:80 -v $(pwd):/root/misskey -v $DBPATH:/data/db misskey
|
||||
```
|
||||
|
||||
where `$PORT` is the port used to access Misskey Web from host browser
|
||||
and `$DBPATH` is the path of MongoDB database on the host for data persistence.
|
||||
|
||||
ex:
|
||||
``` console
|
||||
$ sudo docker run --rm -i -t -p 80:80 -v $(pwd):/root/misskey -v /data/db:/data/db misskey
|
||||
```
|
||||
|
||||
If you want to run misskey in production mode, add `--env NODE_ENV=production` like this:
|
||||
``` console
|
||||
$ sudo docker run --rm -i -t -p 80:80 -v $(pwd):/root/misskey -v /data/db:/data/db --env NODE_ENV=production misskey
|
||||
```
|
||||
|
||||
Note that `$(pwd)` is the working directory.
|
||||
@@ -1,26 +0,0 @@
|
||||
# Misskeyにカンパする方法
|
||||
Misskeyのサポートにご興味をお持ちいただきありがとうございます!
|
||||
Misskeyにカンパをしていただくと、貴方のお名前と好きなURLなどをMisskeyのリポジトリに刻む権利がもらえます。
|
||||
|
||||
Misskeyにカンパして開発・運営をサポートするには、次のいくつかの方法があります:
|
||||
|
||||
## ConoHaカードを購入する
|
||||
(本家)Misskeyは、ConoHaというVPSサービスを利用しています。ConoHaカードを購入して、
|
||||
カードに記載されているクーポンコードを syuilotan@yahoo.co.jp までお送りいただければ、
|
||||
そのクーポンをチャージしてサーバーの運営費に充てることができます。
|
||||
|
||||
ConoHaカードについてはこちらをご覧ください: https://www.conoha.jp/conohacard/
|
||||
|
||||
Amazonでも買えます: https://www.amazon.co.jp/dp/B01N9E3416
|
||||
|
||||
## Amazonギフトカード
|
||||
これは間接的な方法です。
|
||||
|
||||
## 銀行振込
|
||||
syuilotan@yahoo.co.jp までお問い合わせください。
|
||||
|
||||
## 手渡し
|
||||
オフ会を行ったときなどに行使できる方法です。
|
||||
|
||||
## その他
|
||||
なにかいいアイデアがあればお教えください。
|
||||
46
docs/manage.en.md
Normal file
@@ -0,0 +1,46 @@
|
||||
# Management guide
|
||||
|
||||
## Check the status of the job queue
|
||||
coming soon
|
||||
|
||||
## Mark as 'admin' user
|
||||
``` shell
|
||||
node cli/mark-admin (User-ID or Username)
|
||||
```
|
||||
|
||||
## Mark as 'verified' user
|
||||
``` shell
|
||||
node cli/mark-verified (User-ID or Username)
|
||||
```
|
||||
|
||||
## Suspend users
|
||||
``` shell
|
||||
node cli/suspend (User-ID or Username)
|
||||
```
|
||||
e.g.
|
||||
``` shell
|
||||
# Use id
|
||||
node cli/suspend 57d01a501fdf2d07be417afe
|
||||
|
||||
# Use username
|
||||
node cli/suspend @syuilo
|
||||
|
||||
# Use username (remote)
|
||||
node cli/suspend @syuilo@misskey.xyz
|
||||
```
|
||||
|
||||
## Reset password
|
||||
``` shell
|
||||
node cli/reset-password (User-ID or Username)
|
||||
```
|
||||
|
||||
## Clean up cached remote files
|
||||
``` shell
|
||||
node cli/clean-cached-remote-files
|
||||
```
|
||||
|
||||
## Clean up unused drive files
|
||||
``` shell
|
||||
node cli/clean-unused-drive-files
|
||||
```
|
||||
> We recommend that you announce a user that unused drive files will be deleted before performing this operation, as it may delete the user's important files.
|
||||
@@ -1,13 +1,46 @@
|
||||
# 運営ガイド
|
||||
|
||||
## ジョブキューの状態を調べる
|
||||
Misskeyのディレクトリで:
|
||||
coming soon
|
||||
|
||||
## 管理者ユーザーを設定する
|
||||
``` shell
|
||||
node_modules/kue/bin/kue-dashboard -p 3050
|
||||
node cli/mark-admin (ユーザーID または ユーザー名)
|
||||
```
|
||||
|
||||
## 'verified'ユーザーを設定する
|
||||
``` shell
|
||||
node cli/mark-verified (ユーザーID または ユーザー名)
|
||||
```
|
||||
ポート3050にアクセスするとUIが表示されます
|
||||
|
||||
## ユーザーを凍結する
|
||||
``` shell
|
||||
node cli/suspend (ユーザーID)
|
||||
node cli/suspend (ユーザーID または ユーザー名)
|
||||
```
|
||||
例:
|
||||
``` shell
|
||||
# ユーザーID
|
||||
node cli/suspend 57d01a501fdf2d07be417afe
|
||||
|
||||
# ユーザー名
|
||||
node cli/suspend @syuilo
|
||||
|
||||
# ユーザー名 (リモート)
|
||||
node cli/suspend @syuilo@misskey.xyz
|
||||
```
|
||||
|
||||
## ユーザーのパスワードをリセットする
|
||||
``` shell
|
||||
node cli/reset-password (ユーザーID または ユーザー名)
|
||||
```
|
||||
|
||||
## キャッシュされたリモートファイルをクリーンアップする
|
||||
``` shell
|
||||
node cli/clean-cached-remote-files
|
||||
```
|
||||
|
||||
## 使われていないドライブのファイルをクリーンアップする
|
||||
``` shell
|
||||
node cli/clean-unused-drive-files
|
||||
```
|
||||
> ユーザーの大事なファイルを削除する可能性があるので、この操作を実行する前にユーザーに告知することをお勧めします。
|
||||
|
||||
117
docs/setup.en.md
@@ -8,18 +8,13 @@ This guide describes how to install and setup Misskey.
|
||||
|
||||
----------------------------------------------------------------
|
||||
|
||||
*1.* reCAPTCHA tokens
|
||||
*1.* Create Misskey user
|
||||
----------------------------------------------------------------
|
||||
Misskey requires reCAPTCHA tokens.
|
||||
Please visit https://www.google.com/recaptcha/intro/ and generate keys.
|
||||
Running misskey on root is not a good idea so we create a user for that.
|
||||
In debian for exemple :
|
||||
|
||||
*(optional)* Generating VAPID keys
|
||||
----------------------------------------------------------------
|
||||
If you want to enable ServiceWroker, you need to generate VAPID keys:
|
||||
|
||||
``` shell
|
||||
npm install web-push -g
|
||||
web-push generate-vapid-keys
|
||||
```
|
||||
adduser --disabled-password --disabled-login misskey
|
||||
```
|
||||
|
||||
*2.* Install dependencies
|
||||
@@ -27,25 +22,59 @@ web-push generate-vapid-keys
|
||||
Please install and setup these softwares:
|
||||
|
||||
#### Dependencies :package:
|
||||
* *Node.js* and *npm*
|
||||
* **[MongoDB](https://www.mongodb.com/)**
|
||||
* **[Node.js](https://nodejs.org/en/)**
|
||||
* **[MongoDB](https://www.mongodb.com/)** >= 3.6
|
||||
* **[Redis](https://redis.io/)**
|
||||
* **[ImageMagick](http://www.imagemagick.org/script/index.php)** >= 7.0
|
||||
|
||||
##### Optional
|
||||
* [Elasticsearch](https://www.elastic.co/) - used to provide searching feature instead of MongoDB
|
||||
|
||||
*3.* Install Misskey
|
||||
----------------------------------------------------------------
|
||||
1. `git clone -b master git://github.com/syuilo/misskey.git`
|
||||
2. `cd misskey`
|
||||
3. `npm install`
|
||||
|
||||
*4.* Prepare configuration
|
||||
*3.* Setup MongoDB
|
||||
----------------------------------------------------------------
|
||||
You need to generate config file via `npm run config` command.
|
||||
In root :
|
||||
1. `mongo` Go to the mongo shell
|
||||
2. `use misskey` Use the misskey database
|
||||
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" } ] } )` Create the misskey user.
|
||||
5. `exit` You're done !
|
||||
|
||||
*5.* Build Misskey
|
||||
*4.* Install Misskey
|
||||
----------------------------------------------------------------
|
||||
1. `su - misskey` Connect to misskey user.
|
||||
2. `git clone -b master git://github.com/syuilo/misskey.git` Clone the misskey repo from master branch.
|
||||
3. `cd misskey` Navigate to misskey directory
|
||||
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.
|
||||
|
||||
*(optional)* reCAPTCHA tokens
|
||||
----------------------------------------------------------------
|
||||
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 ServiceWroker, you need to generate VAPID keys:
|
||||
Unless you have set your global node_modules location elsewhere, you need to run this in root.
|
||||
|
||||
``` shell
|
||||
npm install web-push -g
|
||||
web-push generate-vapid-keys
|
||||
```
|
||||
|
||||
*(optional)* Create a twitter application
|
||||
----------------------------------------------------------------
|
||||
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`.
|
||||
2. Edit `default.yml`
|
||||
|
||||
*6.* Build Misskey
|
||||
----------------------------------------------------------------
|
||||
|
||||
Build misskey with the following:
|
||||
@@ -61,14 +90,48 @@ If you're still encountering errors about some modules, use node-gyp:
|
||||
3. `node-gyp build`
|
||||
4. `npm run build`
|
||||
|
||||
*6.* That is it.
|
||||
*7.* That is it.
|
||||
----------------------------------------------------------------
|
||||
Well done! Now, you have an environment that run to Misskey.
|
||||
|
||||
### Launch
|
||||
Just `sudo npm start`. GLHF!
|
||||
### Launch normally
|
||||
Just `npm start`. GLHF!
|
||||
|
||||
### Launch with systemd
|
||||
|
||||
1. Create a systemd service here: `/etc/systemd/system/misskey.service`
|
||||
2. Edit it, and paste this and save:
|
||||
|
||||
```
|
||||
[Unit]
|
||||
Description=Misskey daemon
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=misskey
|
||||
ExecStart=/usr/bin/npm start
|
||||
WorkingDirectory=/home/misskey/misskey
|
||||
TimeoutSec=60
|
||||
StandardOutput=syslog
|
||||
StandardError=syslog
|
||||
SyslogIdentifier=misskey
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
3. `systemctl daemon-reload ; systemctl enable misskey` Reload systemd and enable the misskey service.
|
||||
4. `systemctl start misskey` Start the misskey service.
|
||||
|
||||
You can check if the service is running with `systemctl status misskey`.
|
||||
|
||||
### Way to Update to latest version of your Misskey
|
||||
1. `git reset --hard && git pull origin master`
|
||||
2. `npm install`
|
||||
3. `npm run build`
|
||||
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`
|
||||
|
||||
----------------------------------------------------------------
|
||||
|
||||
If you have any questions or troubles, feel free to contact us!
|
||||
|
||||
127
docs/setup.ja.md
@@ -8,10 +8,48 @@ Misskeyサーバーの構築にご関心をお寄せいただきありがとう
|
||||
|
||||
----------------------------------------------------------------
|
||||
|
||||
*1.* reCAPTCHAトークンの用意
|
||||
*1.* Misskeyユーザーの作成
|
||||
----------------------------------------------------------------
|
||||
MisskeyはreCAPTCHAトークンを必要とします。
|
||||
https://www.google.com/recaptcha/intro/ にアクセスしてトークンを生成してください。
|
||||
Misskeyのrootで実行しない方がよいため、代わりにユーザーを作成します。
|
||||
Debianの例:
|
||||
|
||||
```
|
||||
adduser --disabled-password --disabled-login misskey
|
||||
```
|
||||
|
||||
*2.* 依存関係をインストールする
|
||||
----------------------------------------------------------------
|
||||
これらのソフトウェアをインストール・設定してください:
|
||||
|
||||
#### 依存関係 :package:
|
||||
* **[Node.js](https://nodejs.org/en/)**
|
||||
* **[MongoDB](https://www.mongodb.com/)** (3.6以上)
|
||||
* **[Redis](https://redis.io/)**
|
||||
|
||||
##### オプション
|
||||
* [Elasticsearch](https://www.elastic.co/) - 検索機能を向上させるために用います。
|
||||
|
||||
*3.* MongoDBの設定
|
||||
----------------------------------------------------------------
|
||||
ルートで:
|
||||
1. `mongo` mongoシェルを起動
|
||||
2. `use misskey` misskeyデータベースを使用
|
||||
3. `db.users.save( {dummy:"dummy"} )` ダミーデータを書き込みDBを初期化
|
||||
4. `db.createUser( { user: "misskey", pwd: "<password>", roles: [ { role: "readWrite", db: "misskey" } ] } )` misskeyユーザーを作成
|
||||
5. `exit` mongoシェルを終了
|
||||
|
||||
*4.* Misskeyのインストール
|
||||
----------------------------------------------------------------
|
||||
1. `su - misskey` misskeyユーザーを使用
|
||||
2. `git clone -b master git://github.com/syuilo/misskey.git` masterブランチからMisskeyレポジトリをクローン
|
||||
3. `cd misskey` misskeyディレクトリに移動
|
||||
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の依存パッケージをインストール
|
||||
|
||||
*(オプション)* reCAPTCHAトークン
|
||||
----------------------------------------------------------------
|
||||
reCAPTCHAを有効にする場合、reCAPTCHAトークンを取得する必要があります。
|
||||
https://www.google.com/recaptcha/intro/ にアクセスしてトークンを取得してください。
|
||||
|
||||
*(オプション)* VAPIDキーペアの生成
|
||||
----------------------------------------------------------------
|
||||
@@ -22,56 +60,67 @@ npm install web-push -g
|
||||
web-push generate-vapid-keys
|
||||
```
|
||||
|
||||
*2.* 依存関係をインストールする
|
||||
*5.* 設定ファイルを作成する
|
||||
----------------------------------------------------------------
|
||||
これらのソフトウェアをインストール・設定してください:
|
||||
1. `cp .config/example.yml .config/default.yml` `.config/example.yml`をコピーし名前を`default.yml`にする。
|
||||
2. `default.yml` を編集する。
|
||||
|
||||
#### 依存関係 :package:
|
||||
* *Node.js* と *npm*
|
||||
* **[MongoDB](https://www.mongodb.com/)**
|
||||
* **[Redis](https://redis.io/)**
|
||||
* **[ImageMagick](http://www.imagemagick.org/script/index.php)**
|
||||
|
||||
##### オプション
|
||||
* [Elasticsearch](https://www.elastic.co/) - 検索機能を向上させるために用います。
|
||||
|
||||
*3.* Misskeyのインストール
|
||||
*6.* Misskeyのビルド
|
||||
----------------------------------------------------------------
|
||||
1. `git clone -b master git://github.com/syuilo/misskey.git`
|
||||
2. `cd misskey`
|
||||
3. `npm install`
|
||||
|
||||
*4.* 設定ファイルを用意する
|
||||
----------------------------------------------------------------
|
||||
`npm run config`コマンドを利用して、ガイドに従って情報を入力してください。
|
||||
次のコマンドでMisskeyをビルドしてください:
|
||||
|
||||
*5.* Misskeyのビルド
|
||||
----------------------------------------------------------------
|
||||
`npm run build`
|
||||
|
||||
Debianをお使いであれば、`build-essential`パッケージをインストールする必要があります。
|
||||
|
||||
何らかのモジュールでエラーが発生する場合はnode-gypを使ってください:
|
||||
1. `npm install -g node-gyp`
|
||||
2. `node-gyp configure`
|
||||
3. `node-gyp build`
|
||||
4. `npm run build`
|
||||
|
||||
*6.* 以上です!
|
||||
*7.* 以上です!
|
||||
----------------------------------------------------------------
|
||||
お疲れ様でした。これでMisskeyを動かす準備は整いました。
|
||||
|
||||
### 起動
|
||||
`sudo npm start`するだけです。GLHF!
|
||||
### 通常起動
|
||||
`npm start`するだけです。GLHF!
|
||||
|
||||
### systemdを用いた起動
|
||||
1. systemdサービスのファイルを作成: `/etc/systemd/system/misskey.service`
|
||||
2. エディタで開き、以下のコードを貼り付けて保存:
|
||||
|
||||
```
|
||||
[Unit]
|
||||
Description=Misskey daemon
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=misskey
|
||||
ExecStart=/usr/bin/npm start
|
||||
WorkingDirectory=/home/misskey/misskey
|
||||
TimeoutSec=60
|
||||
StandardOutput=syslog
|
||||
StandardError=syslog
|
||||
SyslogIdentifier=misskey
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
3. `systemctl daemon-reload ; systemctl enable misskey` systemdを再読み込みしmisskeyサービスを有効化
|
||||
4. `systemctl start misskey` misskeyサービスの起動
|
||||
|
||||
`systemctl status misskey`と入力すると、サービスの状態を調べることができます。
|
||||
|
||||
### Misskeyを最新バージョンにアップデートする方法:
|
||||
1. `git reset --hard && git pull origin master`
|
||||
2. `npm install`
|
||||
3. `npm run build`
|
||||
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`
|
||||
|
||||
## メモリが足りなくてビルドできない場合
|
||||
Misskeyの(クライアントの)ビルドには、目安として8GBくらいのメモリを必要とします。
|
||||
VPSなどでビルドする時は、もしかしたらメモリが足りなくなる可能性があります。
|
||||
そうなった場合、もしVPSではなくあなたのPCが十分なメモリを搭載しているなら、あなたのPC上でビルドし、生成されたファイルをVPSにFTPでアップロードする方法を採ることができます。
|
||||
----------------------------------------------------------------
|
||||
|
||||
1. あなたのPC上にMisskeyをインストールする
|
||||
2. 設定ファイルを用意する。設定ファイルは、サーバーに合わせた設定にします。
|
||||
3. npm run webpack
|
||||
4. built/client をサーバーにアップロードする
|
||||
5. サーバー上で、npm run gulp
|
||||
6. 完了
|
||||
なにかお困りのことがありましたらお気軽にご連絡ください。
|
||||
|
||||
@@ -4,19 +4,19 @@ Misskey's Translation
|
||||
If you find an untranslated part on Misskey:
|
||||
--------------------------------------------
|
||||
|
||||
1. Look for untranslated parts in the miskey's source code.
|
||||
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 each language file in /locales, check whether the <strong>file name (path)</strong> found in step 1 exists, if not, create it.
|
||||
3. Open the `locales/ja.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 translated 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: "Timeline"` to `locales/en.yml`, and `timeline: "タイムライン"` to `locales/ja.yml`.
|
||||
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.yml`.
|
||||
|
||||
5. And done!
|
||||
|
||||
|
||||
@@ -11,12 +11,12 @@ Misskey内の未翻訳箇所を見つけたら
|
||||
- `foo`は実際にはその場に適したわかりやすい(英語の)名前にしてください。
|
||||
- 例えば未翻訳箇所が「タイムライン」というテキストだった場合、`%i18n:@timeline%`のようにします。
|
||||
|
||||
3. /locales 内にあるそれぞれの言語ファイルを開き、1.で見つけた<strong>ファイル名(パス)</strong>のキーが存在するか確認し、無ければ作成してください。
|
||||
3. `locales/ja.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.yml`に`timeline: "タイムライン"`、`locales/en.yml`に`timeline: "Timeline"`を追加します。
|
||||
4. そのキーの直下に2.で置換した`foo`の部分をキーとし、テキストを値とするプロパティを追加します。
|
||||
- 例えば、今回の例で言うと`locales/ja.yml`に`timeline: "タイムライン"`を追加します。
|
||||
|
||||
5. 完了です!
|
||||
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
How to create indexes
|
||||
=====================
|
||||
|
||||
``` shell
|
||||
curl -XPOST localhost:9200/misskey -d @path/to/mappings.json
|
||||
```
|
||||
@@ -1,65 +0,0 @@
|
||||
{
|
||||
"settings": {
|
||||
"analysis": {
|
||||
"analyzer": {
|
||||
"bigram": {
|
||||
"tokenizer": "bigram_tokenizer"
|
||||
}
|
||||
},
|
||||
"tokenizer": {
|
||||
"bigram_tokenizer": {
|
||||
"type": "nGram",
|
||||
"min_gram": 2,
|
||||
"max_gram": 2,
|
||||
"token_chars": [
|
||||
"letter",
|
||||
"digit"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"mappings": {
|
||||
"user": {
|
||||
"properties": {
|
||||
"username": {
|
||||
"type": "string",
|
||||
"index": "analyzed",
|
||||
"analyzer": "bigram"
|
||||
},
|
||||
"name": {
|
||||
"type": "string",
|
||||
"index": "analyzed",
|
||||
"analyzer": "bigram"
|
||||
},
|
||||
"bio": {
|
||||
"type": "string",
|
||||
"index": "analyzed",
|
||||
"analyzer": "kuromoji"
|
||||
}
|
||||
}
|
||||
},
|
||||
"post": {
|
||||
"properties": {
|
||||
"text": {
|
||||
"type": "string",
|
||||
"index": "analyzed",
|
||||
"analyzer": "kuromoji"
|
||||
}
|
||||
}
|
||||
},
|
||||
"drive_file": {
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"index": "analyzed",
|
||||
"analyzer": "kuromoji"
|
||||
},
|
||||
"user": {
|
||||
"type": "string",
|
||||
"index": "not_analyzed"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
46
gulpfile.ts
@@ -8,21 +8,21 @@ import * as gutil from 'gulp-util';
|
||||
import * as ts from 'gulp-typescript';
|
||||
const sourcemaps = require('gulp-sourcemaps');
|
||||
import tslint from 'gulp-tslint';
|
||||
import cssnano = require('gulp-cssnano');
|
||||
const cssnano = require('gulp-cssnano');
|
||||
const stylus = require('gulp-stylus');
|
||||
import * as uglifyComposer from 'gulp-uglify/composer';
|
||||
import pug = require('gulp-pug');
|
||||
import * as rimraf from 'rimraf';
|
||||
import chalk from 'chalk';
|
||||
import imagemin = require('gulp-imagemin');
|
||||
const imagemin = require('gulp-imagemin');
|
||||
import * as rename from 'gulp-rename';
|
||||
import * as mocha from 'gulp-mocha';
|
||||
import * as replace from 'gulp-replace';
|
||||
import * as htmlmin from 'gulp-htmlmin';
|
||||
const uglifyes = require('uglify-es');
|
||||
|
||||
import locales from './locales';
|
||||
import { fa } from './src/build/fa';
|
||||
const client = require('./built/client/meta.json');
|
||||
const locales = require('./locales');
|
||||
import { fa } from './src/misc/fa';
|
||||
import config from './src/config';
|
||||
|
||||
const uglify = uglifyComposer(uglifyes, console);
|
||||
@@ -38,8 +38,6 @@ if (isDebug) {
|
||||
|
||||
const constants = require('./src/const.json');
|
||||
|
||||
require('./src/client/docs/gulpfile.ts');
|
||||
|
||||
gulp.task('build', [
|
||||
'build:ts',
|
||||
'build:copy',
|
||||
@@ -47,8 +45,6 @@ gulp.task('build', [
|
||||
'doc'
|
||||
]);
|
||||
|
||||
gulp.task('rebuild', ['clean', 'build']);
|
||||
|
||||
gulp.task('build:ts', () => {
|
||||
const tsProject = ts.createProject('./tsconfig.json');
|
||||
|
||||
@@ -85,19 +81,19 @@ gulp.task('lint', () =>
|
||||
);
|
||||
|
||||
gulp.task('format', () =>
|
||||
gulp.src('./src/**/*.ts')
|
||||
.pipe(tslint({
|
||||
formatter: 'verbose',
|
||||
fix: true
|
||||
}))
|
||||
.pipe(tslint.report())
|
||||
gulp.src('./src/**/*.ts')
|
||||
.pipe(tslint({
|
||||
formatter: 'verbose',
|
||||
fix: true
|
||||
}))
|
||||
.pipe(tslint.report())
|
||||
);
|
||||
|
||||
gulp.task('mocha', () =>
|
||||
gulp.src([])
|
||||
gulp.src('./test/**/*.ts')
|
||||
.pipe(mocha({
|
||||
exit: true,
|
||||
compilers: 'ts:ts-node/register'
|
||||
require: 'ts-node/register'
|
||||
} as any))
|
||||
);
|
||||
|
||||
@@ -118,8 +114,9 @@ gulp.task('build:client', [
|
||||
'copy:client'
|
||||
]);
|
||||
|
||||
gulp.task('build:client:script', () =>
|
||||
gulp.src(['./src/client/app/boot.js', './src/client/app/safe.js'])
|
||||
gulp.task('build:client:script', () => {
|
||||
const client = require('./built/client/meta.json');
|
||||
return gulp.src(['./src/client/app/boot.js', './src/client/app/safe.js'])
|
||||
.pipe(replace('VERSION', JSON.stringify(client.version)))
|
||||
.pipe(replace('API', JSON.stringify(config.api_url)))
|
||||
.pipe(replace('ENV', JSON.stringify(env)))
|
||||
@@ -127,8 +124,8 @@ gulp.task('build:client:script', () =>
|
||||
.pipe(isProduction ? uglify({
|
||||
toplevel: true
|
||||
} as any) : gutil.noop())
|
||||
.pipe(gulp.dest('./built/client/assets/')) as any
|
||||
);
|
||||
.pipe(gulp.dest('./built/client/assets/'));
|
||||
});
|
||||
|
||||
gulp.task('build:client:styles', () =>
|
||||
gulp.src('./src/client/app/init.css')
|
||||
@@ -201,3 +198,10 @@ gulp.task('build:client:pug', [
|
||||
}))
|
||||
.pipe(gulp.dest('./built/client/app/'))
|
||||
);
|
||||
|
||||
gulp.task('doc', () =>
|
||||
gulp.src('./src/docs/**/*.styl')
|
||||
.pipe(stylus())
|
||||
.pipe((cssnano as any)())
|
||||
.pipe(gulp.dest('./built/docs/assets/'))
|
||||
);
|
||||
|
||||
1192
locales/ca.yml
Normal file
520
locales/de.yml
@@ -3,9 +3,31 @@ meta:
|
||||
lang: "Deutsch"
|
||||
divider: ""
|
||||
common:
|
||||
misskey: "A planet of fediverse"
|
||||
misskey: "A ⭐ of fediverse"
|
||||
about-title: "A ⭐ of fediverse."
|
||||
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
||||
adblock:
|
||||
detected: "広告ブロッカーを無効にしてください"
|
||||
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
||||
application-authorization: "アプリの連携"
|
||||
close: "閉じる"
|
||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||
got-it: "わかった"
|
||||
customization-tips:
|
||||
title: "カスタマイズのヒント"
|
||||
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
|
||||
paragraph2: "一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。"
|
||||
paragraph3: "ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。"
|
||||
paragraph4: "カスタマイズを終了するには、右上の「完了」をクリックします。"
|
||||
gotit: "Got it!"
|
||||
notification:
|
||||
file-uploaded: "ファイルがアップロードされました"
|
||||
message-from: "{}さんからメッセージ:"
|
||||
reversi-invited: "対局への招待があります"
|
||||
reversi-invited-by: "{}さんから"
|
||||
notified-by: "{}さんから"
|
||||
reply-from: "{}さんから返信:"
|
||||
quoted-by: "{}さんが引用:"
|
||||
time:
|
||||
unknown: "Unbekannt"
|
||||
future: "Zukunft"
|
||||
@@ -17,6 +39,8 @@ common:
|
||||
weeks_ago: "vor {0} Woche{0:n}"
|
||||
months_ago: "vor {0} Monat{0:en}"
|
||||
years_ago: "vor {} Jahr{0:en}"
|
||||
month-and-day: "{month}月 {day}日"
|
||||
trash: "ゴミ箱"
|
||||
weekday-short:
|
||||
sunday: "So"
|
||||
monday: "Mo"
|
||||
@@ -25,6 +49,14 @@ common:
|
||||
thursday: "Do"
|
||||
friday: "Fr"
|
||||
saturday: "Sa"
|
||||
weekday:
|
||||
sunday: "日曜日"
|
||||
monday: "月曜日"
|
||||
tuesday: "火曜日"
|
||||
wednesday: "水曜日"
|
||||
thursday: "木曜日"
|
||||
friday: "金曜日"
|
||||
saturday: "土曜日"
|
||||
reactions:
|
||||
like: "Gefällt mir"
|
||||
love: "Lieben"
|
||||
@@ -34,6 +66,7 @@ common:
|
||||
congrats: "Glückwunsch!"
|
||||
angry: "Wütend"
|
||||
confused: "Verwirrt"
|
||||
rip: "RIP"
|
||||
pudding: "Pudding"
|
||||
note-placeholders:
|
||||
a: "Was machst du gerade?"
|
||||
@@ -42,11 +75,28 @@ common:
|
||||
d: "Willst du etwas sagen?"
|
||||
e: "Schreib hier etwas!"
|
||||
f: "Warte darauf, das du schreibst."
|
||||
search: "検索"
|
||||
delete: "Löschen"
|
||||
loading: "Laden"
|
||||
ok: "OK"
|
||||
update-available-title: "更新があります"
|
||||
update-available: "Eine neue Version von Misskey ist verfügbar ({newer}, aktuell ist {current}). Lade die Seite neu um die aktuelle Version zu laden"
|
||||
my-token-regenerated: "Dein Token wurde generiert. Du wirst jetzt abgemeldet."
|
||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||
verified-user: "公式アカウント"
|
||||
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||
reversi:
|
||||
drawn: "引き分け"
|
||||
my-turn: "あなたのターンです"
|
||||
opponent-turn: "相手のターンです"
|
||||
turn-of: "{}のターンです"
|
||||
past-turn-of: "{}のターン"
|
||||
won: "{}の勝ち"
|
||||
black: "黒"
|
||||
white: "白"
|
||||
total: "合計"
|
||||
this-turn: "{}ターン目"
|
||||
widgets:
|
||||
analog-clock: "Analoge Uhr"
|
||||
profile: "Profil"
|
||||
@@ -57,18 +107,104 @@ common:
|
||||
memo: "Notizen"
|
||||
trends: "Trends"
|
||||
photo-stream: "Bilder"
|
||||
posts-monitor: "投稿チャート"
|
||||
slideshow: "Diashow"
|
||||
version: "Version"
|
||||
broadcast: "ブロードキャスト"
|
||||
notifications: "Benachrichtigungen"
|
||||
users: "Empfohlene Benutzer"
|
||||
polls: "Umfragen"
|
||||
post-form: "投稿フォーム"
|
||||
polls: "アンケート"
|
||||
post-form: "Beitragsform"
|
||||
messaging: "Nachrichten"
|
||||
server: "Server-Info"
|
||||
donation: "Spenden"
|
||||
nav: "Navigation"
|
||||
tips: "Tipps"
|
||||
hashtags: "ハッシュタグ"
|
||||
deck:
|
||||
widgets: "Widget hinzufügen:"
|
||||
home: "Startseite"
|
||||
local: "Lokal"
|
||||
hybrid: "ソーシャル"
|
||||
global: "Global"
|
||||
notifications: "Mitteilungen"
|
||||
list: "Listen"
|
||||
swap-left: "Nach links"
|
||||
swap-right: "Nach rechts"
|
||||
swap-up: "Nach oben"
|
||||
swap-down: "Nach unten"
|
||||
remove: "Spalte löschen"
|
||||
add-column: "Eine Spalte hinzufügen"
|
||||
rename: "Umbenennen"
|
||||
stack-left: "Nach links schichten"
|
||||
pop-right: "右に出す"
|
||||
auth/views/form.vue:
|
||||
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
|
||||
permission-ask: "このアプリは次の権限を要求しています:"
|
||||
account-read: "アカウントの情報を見る。"
|
||||
account-write: "アカウントの情報を操作する。"
|
||||
note-write: "投稿する。"
|
||||
like-write: "いいねしたりいいね解除する。"
|
||||
following-write: "フォローしたりフォロー解除する。"
|
||||
drive-read: "ドライブを見る。"
|
||||
drive-write: "ドライブを操作する。"
|
||||
notification-read: "通知を見る。"
|
||||
notification-write: "通知を操作する。"
|
||||
cancel: "キャンセル"
|
||||
accept: "アクセスを許可"
|
||||
auth/views/index.vue:
|
||||
loading: "読み込み中"
|
||||
denied: "アプリケーションの連携をキャンセルしました。"
|
||||
denied-paragraph: "このアプリがあなたのアカウントにアクセスすることはありません。"
|
||||
already-authorized: "このアプリは既に連携済みです"
|
||||
allowed: "アプリケーションの連携を許可しました"
|
||||
callback-url: "アプリケーションに戻っています"
|
||||
please-go-back: "アプリケーションに戻って、やっていってください。"
|
||||
error: "セッションが存在しません。"
|
||||
sign-in: "サインインしてください"
|
||||
common/views/components/games/reversi/reversi.vue:
|
||||
matching:
|
||||
waiting-for: "{}を待っています"
|
||||
cancel: "キャンセル"
|
||||
common/views/components/games/reversi/reversi.game.vue:
|
||||
surrender: "投了"
|
||||
surrendered: "投了により"
|
||||
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||
looped-map: "ループマップ"
|
||||
can-put-everywhere: "どこでも置けるモード"
|
||||
common/views/components/games/reversi/reversi.index.vue:
|
||||
title: "Misskey Reversi"
|
||||
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
|
||||
invite: "招待"
|
||||
rule: "遊び方"
|
||||
rule-desc: "リバーシは、相手と交互に石をボードに置いて、相手の石を挟んで自分の色に変えてゆき、最終的に残った石が多い方が勝ちというボードゲームです。"
|
||||
mode-invite: "招待"
|
||||
mode-invite-desc: "指定したユーザーと対戦するモードです。"
|
||||
invitations: "対局の招待があります!"
|
||||
my-games: "自分の対局"
|
||||
all-games: "みんなの対局"
|
||||
enter-username: "ユーザー名を入力してください"
|
||||
game-state:
|
||||
ended: "終了"
|
||||
playing: "進行中"
|
||||
common/views/components/games/reversi/reversi.room.vue:
|
||||
settings-of-the-game: "ゲームの設定"
|
||||
choose-map: "マップを選択"
|
||||
random: "ランダム"
|
||||
black-or-white: "先手/後手"
|
||||
black-is: "{}が黒"
|
||||
rules: "ルール"
|
||||
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||
looped-map: "ループマップ"
|
||||
can-put-everywhere: "どこでも置けるモード"
|
||||
settings-of-the-bot: "Botの設定"
|
||||
this-game-is-started-soon: "ゲームは数秒後に開始されます"
|
||||
waiting-for-other: "相手の準備が完了するのを待っています"
|
||||
waiting-for-me: "あなたの準備が完了するのを待っています"
|
||||
waiting-for-both: "準備中"
|
||||
cancel: "キャンセル"
|
||||
ready: "準備完了"
|
||||
cancel-ready: "準備続行"
|
||||
common/views/components/connect-failed.vue:
|
||||
title: "Verbindung zum Server ist fehlgeschlagen"
|
||||
description: "Es gibt entweder ein Problem mit deiner Internetverbindung, der Server ist nicht erreichbar oder wird gerade gewartet. Bitte versuche es später noch einmal."
|
||||
@@ -103,11 +239,13 @@ common/views/components/messaging-room.vue:
|
||||
no-history: "Keine weitere Chronik vorhanden"
|
||||
resize-form: "Ziehen um die Größe zu verändern"
|
||||
new-message: "Neue Nachricht"
|
||||
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||
common/views/components/messaging-room.form.vue:
|
||||
input-message-here: "Nachricht hier eingeben"
|
||||
send: "Senden"
|
||||
attach-from-local: "Wähle Dateien von deinem PC aus"
|
||||
attach-from-drive: "Wähle Dateien von deinem Speicher aus"
|
||||
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||
common/views/components/messaging-room.message.vue:
|
||||
is-read: "Gelesen"
|
||||
deleted: "Diese Nachricht wurde gelöscht"
|
||||
@@ -147,6 +285,9 @@ common/views/components/signin.vue:
|
||||
token: "Token"
|
||||
signing-in: "Melde an..."
|
||||
signin: "Anmelden"
|
||||
or: "または"
|
||||
signin-with-twitter: "Twitterでログイン"
|
||||
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||
common/views/components/signup.vue:
|
||||
username: "Benutzername"
|
||||
checking: "Überprüfung..."
|
||||
@@ -187,7 +328,7 @@ common/views/components/uploader.vue:
|
||||
common/views/components/visibility-chooser.vue:
|
||||
public: "Öffentlich"
|
||||
home: "Home"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
home-desc: "Nur auf die Startseite posten"
|
||||
followers: "Folgende"
|
||||
followers-desc: "Nur für diejenigen sichtbar, die dir folgen"
|
||||
specified: "Direkt"
|
||||
@@ -198,12 +339,26 @@ common/views/widgets/broadcast.vue:
|
||||
no-broadcasts: "Keine Broadcasts"
|
||||
have-a-nice-day: "Schönen Tag!"
|
||||
next: "Nächster"
|
||||
common/views/widgets/calendar.vue:
|
||||
year: "{}年"
|
||||
month: "{}月"
|
||||
day: "{}日"
|
||||
today: "今日:"
|
||||
this-month: "今月:"
|
||||
this-year: "今年:"
|
||||
common/views/widgets/donation.vue:
|
||||
title: "Spende"
|
||||
text: "Um Misskey am Laufen zu halten geben wir Geld für Domain, Server usw. aus. Wir bekommen dafür kein Geld und würden uns freuen, wenn du spenden würdest. Wenn du interessiert bist, dann kontaktiere {}. Danke für deine Unterstützung!"
|
||||
common/views/widgets/photo-stream.vue:
|
||||
title: "Fotostream"
|
||||
no-photos: "Keine Fotos"
|
||||
common/views/widgets/posts-monitor.vue:
|
||||
title: "投稿チャート"
|
||||
toggle: "表示を切り替え"
|
||||
common/views/widgets/hashtags.vue:
|
||||
title: "ハッシュタグ"
|
||||
count: "{}人が投稿"
|
||||
empty: "トレンドなし"
|
||||
common/views/widgets/server.vue:
|
||||
title: "Serverinformationen"
|
||||
toggle: "Sicht umschalten"
|
||||
@@ -211,6 +366,48 @@ common/views/widgets/memo.vue:
|
||||
title: "Notizen"
|
||||
memo: "Schreib hier!"
|
||||
save: "Speichern"
|
||||
common/views/widgets/slideshow.vue:
|
||||
folder-customize-mode: "フォルダを指定するには、カスタマイズモードを終了してください"
|
||||
folder: "クリックしてフォルダを指定してください"
|
||||
no-image: "このフォルダには画像がありません"
|
||||
common/views/widgets/tips.vue:
|
||||
tips-line1: "<kbd>t</kbd>でタイムラインにフォーカスできます"
|
||||
tips-line2: "<kbd>p</kbd>または<kbd>n</kbd>で投稿フォームを開きます"
|
||||
tips-line3: "投稿フォームにはファイルをドラッグ&ドロップできます"
|
||||
tips-line4: "投稿フォームにクリップボードにある画像データをペーストできます"
|
||||
tips-line5: "ドライブにファイルをドラッグ&ドロップしてアップロードできます"
|
||||
tips-line6: "ドライブでファイルをドラッグしてフォルダ移動できます"
|
||||
tips-line7: "ドライブでフォルダをドラッグしてフォルダ移動できます"
|
||||
tips-line8: "ホームは設定からカスタマイズできます"
|
||||
tips-line9: "MisskeyはAGPLv3です"
|
||||
tips-line10: "タイムマシンウィジェットを利用すると、簡単に過去のタイムラインに遡れます"
|
||||
tips-line11: "投稿の ... をクリックして、投稿をユーザーページにピン留めできます"
|
||||
tips-line13: "投稿に添付したファイルは全てドライブに保存されます"
|
||||
tips-line14: "ホームのカスタマイズ中、ウィジェットを右クリックしてデザインを変更できます"
|
||||
tips-line17: "「**」でテキストを囲むと**強調表示**されます"
|
||||
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
|
||||
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
|
||||
tips-line21: "APIを利用してbotの開発なども行えます"
|
||||
tips-line23: "まゆかわいいよまゆ"
|
||||
tips-line24: "Misskeyは2014年にサービスを開始しました"
|
||||
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
||||
common/views/pages/follow.vue:
|
||||
signed-in-as: "{}としてサインイン中"
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-request: "フォロー申請"
|
||||
desktop:
|
||||
banner-crop-title: "バナーとして表示する部分を選択"
|
||||
banner: "バナー"
|
||||
uploading-banner: "新しいバナーをアップロードしています"
|
||||
banner-updated: "バナーを更新しました"
|
||||
choose-banner: "バナーにする画像を選択"
|
||||
avatar-crop-title: "アバターとして表示する部分を選択"
|
||||
avatar: "アバター"
|
||||
uploading-avatar: "新しいアバターをアップロードしています"
|
||||
avatar-updated: "アバターを更新しました"
|
||||
choose-avatar: "アバターにする画像を選択"
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Schwarz ... komplett"
|
||||
notes: "Blau ... Hinweise"
|
||||
@@ -246,9 +443,11 @@ desktop/views/components/drive.file.vue:
|
||||
banner: "Banner"
|
||||
contextmenu:
|
||||
rename: "Umbenennen"
|
||||
mark-as-sensitive: "閲覧注意に設定"
|
||||
unmark-as-sensitive: "閲覧注意を解除"
|
||||
copy-url: "URL kopieren"
|
||||
download: "Download"
|
||||
else-files: "その他..."
|
||||
else-files: "Anderes…"
|
||||
set-as-avatar: "Als Avatar festlegen"
|
||||
set-as-banner: "Setze als Banner"
|
||||
open-in-app: "In der App öffnen"
|
||||
@@ -289,11 +488,17 @@ desktop/views/components/drive.vue:
|
||||
create-folder: "Ein Verzeichnis erstellen"
|
||||
upload: "Eine Datei hochladen"
|
||||
url-upload: "Von einer URL hochladen"
|
||||
desktop/views/components/media-image.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
desktop/views/components/media-video.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
desktop/views/components/follow-button.vue:
|
||||
unfollow: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-request: "フォロー申請"
|
||||
following: "Folge ich"
|
||||
follow: "Folgen"
|
||||
request-pending: "Ausstehend"
|
||||
follow-request: "Follower-Anfragen"
|
||||
desktop/views/components/followers-window.vue:
|
||||
followers: "{} のフォロワー"
|
||||
desktop/views/components/followers.vue:
|
||||
@@ -301,18 +506,18 @@ desktop/views/components/followers.vue:
|
||||
desktop/views/components/following-window.vue:
|
||||
following: "{} のフォロー"
|
||||
desktop/views/components/following.vue:
|
||||
empty: "フォロー中のユーザーはいないようです。"
|
||||
empty: "Du folgst niemanden"
|
||||
desktop/views/components/friends-maker.vue:
|
||||
title: "気になるユーザーをフォロー:"
|
||||
empty: "おすすめのユーザーは見つかりませんでした。"
|
||||
fetching: "読み込んでいます"
|
||||
refresh: "もっと見る"
|
||||
close: "閉じる"
|
||||
title: "Wem folgen?"
|
||||
empty: "Der ausgewählte Benutzer konnte nicht gefunden werden."
|
||||
fetching: "Lade…"
|
||||
refresh: "Mehr"
|
||||
close: "Schließen"
|
||||
desktop/views/components/game-window.vue:
|
||||
game: "オセロ"
|
||||
game: "リバーシ"
|
||||
desktop/views/components/home.vue:
|
||||
done: "完了"
|
||||
add-widget: "ウィジェットを追加:"
|
||||
done: "Verbunden"
|
||||
add-widget: "Widget hinzufügen:"
|
||||
add: "Hinzufügen"
|
||||
desktop/views/input-dialog.vue:
|
||||
cancel: "Abbrechen"
|
||||
@@ -323,9 +528,9 @@ desktop/views/components/messaging-window.vue:
|
||||
title: "Nachrichten"
|
||||
desktop/views/components/note-detail.vue:
|
||||
more: "Lade weitere Konversationen"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
reposted-by: "{}がRenote"
|
||||
private: "Dieser Post ist privat"
|
||||
deleted: "Dieser Beitrag wurde entfernt"
|
||||
reposted-by: "Repostet von {}"
|
||||
location: "Ort"
|
||||
renote: "Anmerkung"
|
||||
add-reaction: "Reaktion hinzufügen"
|
||||
@@ -335,18 +540,24 @@ desktop/views/components/notes.note.vue:
|
||||
renote: "Anmerken"
|
||||
add-reaction: "Eine Reaktion hinzufügen"
|
||||
detail: "Zeige Details"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
private: "Dieser Beitrag ist eine privat"
|
||||
deleted: "Dieser Beitrag wurde entfernt"
|
||||
hide: "隠す"
|
||||
see-more: "もっと見る"
|
||||
desktop/views/components/notes.vue:
|
||||
error: "Laden fehlgeschlagen."
|
||||
retry: "Erneut versuchen"
|
||||
load-more: "もっと読み込む"
|
||||
desktop/views/components/notifications.vue:
|
||||
more: "Mehr"
|
||||
empty: "Keine Benachrichtigungen"
|
||||
desktop/views/components/post-form.vue:
|
||||
add-visible-user: "+ユーザーを追加"
|
||||
attach-location-information: "位置情報を添付する"
|
||||
hide-contents: "内容を隠す"
|
||||
reply-placeholder: "Antworte auf diese Anmerkung..."
|
||||
quote-placeholder: "Zitiere diese Anmerkung..."
|
||||
submit: "投稿"
|
||||
submit: "Beitragsform"
|
||||
reply: "Antworten"
|
||||
renote: "Anmerkung"
|
||||
posted: "Gepostet!"
|
||||
@@ -359,9 +570,16 @@ desktop/views/components/post-form.vue:
|
||||
attach-media-from-local: "Medien von deinem PC hinzufügen"
|
||||
attach-media-from-drive: "Medien von deinem Speicher hinzufügen"
|
||||
attach-cancel: "Hinzufügen abbrechen"
|
||||
insert-a-kao: "v(‘ω’)v"
|
||||
insert-a-kao: "v('ω')v"
|
||||
create-poll: "Eine Abstimmung erstellen"
|
||||
text-remain: "{} Zeichen verbleibend"
|
||||
recent-tags: "最近"
|
||||
click-to-tagging: "クリックでタグ付け"
|
||||
visibility: "公開範囲"
|
||||
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||
error: "エラー"
|
||||
enter-username: "ユーザー名を入力してください"
|
||||
annotations: "内容への注釈 (オプション)"
|
||||
desktop/views/components/post-form-window.vue:
|
||||
note: "Neue Notiz"
|
||||
reply: "Antworten"
|
||||
@@ -377,56 +595,60 @@ desktop/views/components/renote-form.vue:
|
||||
success: "Weitergesagt!"
|
||||
failure: "Weitersagen fehlgeschlagen"
|
||||
desktop/views/components/renote-form-window.vue:
|
||||
title: "この投稿をRenoteしますか?"
|
||||
title: "Bist du dir sicher, dass du das reposten willst?"
|
||||
desktop/views/components/settings-window.vue:
|
||||
settings: "設定"
|
||||
settings: "Experimentelles"
|
||||
desktop/views/components/settings.vue:
|
||||
profile: "プロフィール"
|
||||
notification: "通知"
|
||||
apps: "アプリ"
|
||||
mute: "ミュート"
|
||||
drive: "ドライブ"
|
||||
security: "セキュリティ"
|
||||
profile: "Profil"
|
||||
notification: "Mitteilungen"
|
||||
apps: "In App öffnen"
|
||||
mute: "Stummschalten"
|
||||
drive: "Dateien vom Drive anfügen"
|
||||
security: "Sicherheit"
|
||||
signin: "サインイン履歴"
|
||||
password: "パスワード"
|
||||
2fa: "二段階認証"
|
||||
other: "その他"
|
||||
license: "ライセンス"
|
||||
behaviour: "動作"
|
||||
fetch-on-scroll: "スクロールで自動読み込み"
|
||||
fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。"
|
||||
auto-popout: "ウィンドウの自動ポップアウト"
|
||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
||||
advanced: "詳細設定"
|
||||
api-via-stream: "ストリームを経由したAPIリクエスト"
|
||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||
display: "デザインと表示"
|
||||
customize: "ホームをカスタマイズ"
|
||||
dark-mode: "ダークモード"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||
password: "Passwort"
|
||||
2fa: "Zwei-Faktor-Authentifizierung"
|
||||
other: "Anderes"
|
||||
license: "Lizenz"
|
||||
behaviour: "Verhalten"
|
||||
fetch-on-scroll: "Aktualisieren beim scrollen"
|
||||
fetch-on-scroll-desc: "Wenn du runterscrollst empfängt die Seite automatisch zusätzliche Inhalte."
|
||||
auto-popout: "Automatische Pop-out Fenster"
|
||||
auto-popout-desc: "Pop-out ein offenes Fenster wenn möglich. Diese Einstellung wird im Browser gespeichert."
|
||||
advanced: "Erweiterte Einstellungen"
|
||||
api-via-stream: "API-Anfrage via stream"
|
||||
api-via-stream-desc: "API-Anfrage über WebSocket statt native Aktualisierungs-API (für bessere Leistung). Diese Einstellung wird im Browser gespeichert."
|
||||
display: "Erscheinungsbild und Anzeige"
|
||||
customize: "Startseite anpassen"
|
||||
choose-wallpaper: "壁紙を選択"
|
||||
delete-wallpaper: "壁紙を削除"
|
||||
dark-mode: "Nacht Modus"
|
||||
circle-icons: "Kreisförmige Icons"
|
||||
gradient-window-header: "Übergang in Fensterköpfen"
|
||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||
show-renoted-my-notes: "Renoteされた自分の投稿をタイムラインに表示する"
|
||||
show-maps: "マップの自動展開"
|
||||
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
||||
sound: "サウンド"
|
||||
enable-sounds: "サウンドを有効にする"
|
||||
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
|
||||
volume: "ボリューム"
|
||||
test: "テスト"
|
||||
mobile: "モバイル"
|
||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||
language: "言語"
|
||||
pick-language: "言語を選択"
|
||||
recommended: "推奨"
|
||||
auto: "自動"
|
||||
specify-language: "言語を指定"
|
||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||
show-reply-target: "Zeige Antworten"
|
||||
show-my-renotes: "Zeige meine Reposts auf der Zeitleiste"
|
||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||
show-maps: "Karte anzeigen"
|
||||
show-maps-desc: "Zeige den Standort zu diesem Beitrag automatisch an."
|
||||
sound: "Ton"
|
||||
enable-sounds: "Ton aktivieren"
|
||||
enable-sounds-desc: "Spiel einen Ton ab beim Erhalten eines Beitrags bzw. einer Nachricht. Diese Einstellung wird im Browser gespeichert."
|
||||
volume: "Lautstärke"
|
||||
test: "Test"
|
||||
mobile: "Mobil"
|
||||
disable-via-mobile: "Diesen Beitrag nicht mit 'vom Handy' absenden"
|
||||
language: "Sprache"
|
||||
pick-language: "Sprache auswählen"
|
||||
recommended: "Empfohlen"
|
||||
auto: "Automatisch"
|
||||
specify-language: "Sprache auswählen"
|
||||
language-desc: "変更はページの再度読み込み後に反映されます。"
|
||||
cache: "キャッシュ"
|
||||
clean-cache: "クリーンアップ"
|
||||
cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。"
|
||||
cache-warn: "Der Cache deines Benutzerkontos (Info, Beiträge, Antworten, Direktnachrichten, Einstellungen), die lokal im Browser gespeichert sind werden gelöscht.\nDu musst die Seite aktualisieren nachdem du aufgeräumt hast."
|
||||
cache-cleared: "キャッシュを削除しました"
|
||||
cache-cleared-desc: "ページを再度読み込みしてください。"
|
||||
auto-watch: "投稿の自動ウォッチ"
|
||||
@@ -435,9 +657,9 @@ desktop/views/components/settings.vue:
|
||||
operator: "このサーバーの運営者"
|
||||
update: "Misskey Update"
|
||||
version: "バージョン:"
|
||||
latest-version: "最新のバージョン:"
|
||||
update-checking: "アップデートを確認中"
|
||||
do-update: "アップデートを確認"
|
||||
latest-version: "Neuste Version:"
|
||||
update-checking: "Suche nach Updates"
|
||||
do-update: "Suche nach Updates"
|
||||
update-settings: "詳細設定"
|
||||
prevent-update: "アップデートを延期する(非推奨)"
|
||||
prevent-update-desc: "この設定をオンにしてもアップデートが反映される場合があります。この設定はこのデバイスのみ有効です。"
|
||||
@@ -449,20 +671,20 @@ desktop/views/components/settings.vue:
|
||||
debug-mode: "デバッグモードを有効にする"
|
||||
debug-mode-desc: "この設定はブラウザに記憶されます。"
|
||||
experimental: "実験的機能を有効にする"
|
||||
experimental-desc: "実験的機能を有効にするとMisskeyの動作が不安定になる可能性があります。この設定はブラウザに記憶されます。"
|
||||
tools: "ツール"
|
||||
task-manager: "タスクマネージャ"
|
||||
experimental-desc: "Experimentelle Funktionen können die Stabilität von Misskey beeinträchtigen. Diese Einstellung wird im Browser gespeichert."
|
||||
tools: "Werkzeuge"
|
||||
task-manager: "Taskmanager"
|
||||
third-parties: "サードパーティ"
|
||||
desktop/views/components/settings.2fa.vue:
|
||||
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
||||
detail: "詳細..."
|
||||
url: "https://www.google.co.jp/intl/ja/landing/2step/"
|
||||
url: "https://www.google.de/intl/de/landing/2step/"
|
||||
caution: "登録したデバイスを紛失するなどした場合、Misskeyにサインインできなくなりますのでご注意ください。"
|
||||
register: "デバイスを登録する"
|
||||
already-registered: "既に設定は完了しています。"
|
||||
unregister: "設定を解除"
|
||||
unregistered: "二段階認証が無効になりました。"
|
||||
enter-password: "パスワードを入力してください"
|
||||
register: "Ein Gerät registrieren"
|
||||
already-registered: "Das Gerät wurde bereits registriert"
|
||||
unregister: "Abschalten"
|
||||
unregistered: "Zwei-Faktor-Authentifizierung wurde deaktiviert."
|
||||
enter-password: "Bitte Passwort eingeben"
|
||||
authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:"
|
||||
howtoinstall: "インストール方法はこちら"
|
||||
scan: "次に、表示されているQRコードをスキャンします:"
|
||||
@@ -477,16 +699,19 @@ desktop/views/components/settings.api.vue:
|
||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||
regenerate-token: "トークンを再生成"
|
||||
token: "Token:"
|
||||
enter-password: "パスワードを入力してください"
|
||||
enter-password: "Bitte Passwort eingeben"
|
||||
desktop/views/components/settings.apps.vue:
|
||||
no-apps: "連携しているアプリケーションはありません"
|
||||
desktop/views/components/settings.drive.vue:
|
||||
max: "中"
|
||||
in-use: "使用中"
|
||||
desktop/views/components/settings.mute.vue:
|
||||
no-users: "ミュートしているユーザーはいません"
|
||||
desktop/views/components/settings.password.vue:
|
||||
reset: "パスワードを変更する"
|
||||
enter-current-password: "現在のパスワードを入力してください"
|
||||
enter-new-password: "新しいパスワードを入力してください"
|
||||
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
||||
enter-current-password: "Derzeitiges Passwort eingeben"
|
||||
enter-new-password: "Neues Passwort eingeben"
|
||||
enter-new-password-again: "Neues Passwort erneut eingeben"
|
||||
not-match: "新しいパスワードが一致しません"
|
||||
changed: "パスワードを変更しました"
|
||||
desktop/views/components/settings.profile.vue:
|
||||
@@ -497,32 +722,41 @@ desktop/views/components/settings.profile.vue:
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
save: "Profil aktualisieren"
|
||||
locked-account: "アカウントの保護"
|
||||
is-locked: "投稿を非公開にする"
|
||||
other: "その他"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
profile-updated: "プロフィールを更新しました"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
media-count: "{}つのメディア"
|
||||
poll: "投票"
|
||||
poll: "アンケート"
|
||||
desktop/views/components/taskmanager.vue:
|
||||
title: "タスクマネージャ"
|
||||
title: "Taskmanager"
|
||||
desktop/views/components/timeline.vue:
|
||||
home: "Home"
|
||||
local: "Lokal"
|
||||
hybrid: "ソーシャル"
|
||||
global: "Global"
|
||||
list: "Listen"
|
||||
desktop/views/components/ui.header.vue:
|
||||
welcome-back: "おかえりなさい、"
|
||||
adjective: "さん"
|
||||
desktop/views/components/ui.header.account.vue:
|
||||
profile: "Dein Profil"
|
||||
drive: "Speicher"
|
||||
favorites: "Favoriten"
|
||||
lists: "Listen"
|
||||
follow-requests: "フォロー申請"
|
||||
customize: "Anpassen"
|
||||
customize: "ホームのカスタマイズ"
|
||||
settings: "Einstellungen"
|
||||
signout: "Ausloggen"
|
||||
dark: "Verdunkeln"
|
||||
desktop/views/components/ui.header.nav.vue:
|
||||
home: "Home"
|
||||
deck: "デッキ"
|
||||
messaging: "Nachrichten"
|
||||
game: "Spielen"
|
||||
desktop/views/components/ui.header.notifications.vue:
|
||||
@@ -538,6 +772,7 @@ desktop/views/components/received-follow-requests-window.vue:
|
||||
desktop/views/components/user-lists-window.vue:
|
||||
title: "リスト"
|
||||
create-list: "リストを作成"
|
||||
list-name: "リスト名"
|
||||
desktop/views/components/user-preview.vue:
|
||||
notes: "投稿"
|
||||
following: "フォロー"
|
||||
@@ -546,12 +781,39 @@ desktop/views/components/users-list.vue:
|
||||
all: "すべて"
|
||||
iknow: "知り合い"
|
||||
load-more: "もっと"
|
||||
fetching: "読み込んでいます"
|
||||
fetching: "Lade…"
|
||||
desktop/views/components/users-list-item.vue:
|
||||
followed: "フォローされています"
|
||||
desktop/views/components/window.vue:
|
||||
popout: "ポップアウト"
|
||||
close: "閉じる"
|
||||
desktop/views/pages/admin/admin.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
drive: "ドライブ"
|
||||
users: "ユーザー"
|
||||
update: "更新"
|
||||
desktop/views/pages/admin/admin.dashboard.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
all-users: "全てのユーザー"
|
||||
original-users: "このインスタンスのユーザー"
|
||||
all-notes: "全てのノート"
|
||||
original-notes: "このインスタンスのノート"
|
||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||
suspend-user: "ユーザーの凍結"
|
||||
suspend: "凍結"
|
||||
suspended: "凍結しました"
|
||||
desktop/views/pages/admin/admin.unsuspend-user.vue:
|
||||
unsuspend-user: "ユーザーの凍結の解除"
|
||||
unsuspend: "凍結の解除"
|
||||
unsuspended: "凍結を解除しました"
|
||||
desktop/views/pages/deck/deck.tl-column.vue:
|
||||
is-media-only: "メディア投稿のみ"
|
||||
is-media-view: "メディアビュー"
|
||||
edit: "オプション"
|
||||
desktop/views/pages/deck/deck.note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
desktop/views/pages/welcome.vue:
|
||||
about: "詳しく..."
|
||||
gotit: "わかった"
|
||||
@@ -560,6 +822,7 @@ desktop/views/pages/welcome.vue:
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Misskey Drive"
|
||||
desktop/views/pages/favorites.vue:
|
||||
@@ -574,6 +837,13 @@ desktop/views/pages/selectdrive.vue:
|
||||
ok: "OK"
|
||||
cancel: "Abbrechen"
|
||||
upload: "PCからドライブにファイルをアップロード"
|
||||
desktop/views/pages/search.vue:
|
||||
not-available: "検索機能を利用することができません。"
|
||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||
desktop/views/pages/share.vue:
|
||||
share-with: "{}で共有"
|
||||
desktop/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
desktop/views/pages/user-list.users.vue:
|
||||
users: "ユーザー"
|
||||
add-user: "ユーザーを追加"
|
||||
@@ -586,7 +856,7 @@ desktop/views/pages/user/user.friends.vue:
|
||||
title: "よく話すユーザー"
|
||||
loading: "読み込み中"
|
||||
no-users: "よく話すユーザーはいません"
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
desktop/views/pages/user/user.vue:
|
||||
is-suspended: "このユーザーは凍結されています。"
|
||||
is-remote: "このユーザーはリモートユーザーです。"
|
||||
view-remote: "正確な情報を見る"
|
||||
@@ -604,6 +874,13 @@ desktop/views/pages/user/user.profile.vue:
|
||||
mute: "ミュートする"
|
||||
muted: "ミュートしています"
|
||||
unmute: "ミュート解除"
|
||||
push-to-a-list: "リストに追加"
|
||||
list-pushed: "{user}を{list}に追加しました。"
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
posts: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
is-bot: "このアカウントはBotです"
|
||||
desktop/views/pages/user/user.timeline.vue:
|
||||
default: "投稿"
|
||||
with-replies: "投稿と返信"
|
||||
@@ -615,7 +892,7 @@ desktop/views/widgets/notifications.vue:
|
||||
title: "通知"
|
||||
settings: "通知の設定"
|
||||
desktop/views/widgets/polls.vue:
|
||||
title: "投票"
|
||||
title: "アンケート"
|
||||
refresh: "他を見る"
|
||||
nothing: "ありません!"
|
||||
desktop/views/widgets/post-form.vue:
|
||||
@@ -660,15 +937,21 @@ mobile/views/components/drive.file-detail.vue:
|
||||
move: "移動"
|
||||
hash: "ハッシュ (md5)"
|
||||
exif: "EXIF"
|
||||
mobile/views/components/media-image.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
mobile/views/components/media-video.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
mobile/views/components/follow-button.vue:
|
||||
unfollow: "フォロー中"
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-request: "フォロー申請"
|
||||
mobile/views/components/friends-maker.vue:
|
||||
title: "気になるユーザーをフォロー"
|
||||
empty: "おすすめのユーザーは見つかりませんでした。"
|
||||
fetching: "読み込んでいます"
|
||||
fetching: "Lade…"
|
||||
refresh: "もっと見る"
|
||||
close: "閉じる"
|
||||
mobile/views/components/note.vue:
|
||||
@@ -714,10 +997,13 @@ mobile/views/components/sub-note-content.vue:
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
media-count: "{}つのメディア"
|
||||
poll: "投票"
|
||||
poll: "アンケート"
|
||||
mobile/views/components/timeline.vue:
|
||||
empty: "投稿がありません"
|
||||
load-more: "もっと"
|
||||
mobile/views/components/ui.header.vue:
|
||||
welcome-back: "おかえりなさい、"
|
||||
adjective: "さん"
|
||||
mobile/views/components/ui.nav.vue:
|
||||
timeline: "タイムライン"
|
||||
notifications: "通知"
|
||||
@@ -748,6 +1034,8 @@ mobile/views/pages/user-lists.vue:
|
||||
mobile/views/pages/drive.vue:
|
||||
drive: "ドライブ"
|
||||
more: "もっと見る"
|
||||
mobile/views/pages/signup.vue:
|
||||
lets-start: "📦 始めましょう"
|
||||
mobile/views/pages/followers.vue:
|
||||
followers-of: "{}のフォロワー"
|
||||
mobile/views/pages/following.vue:
|
||||
@@ -755,7 +1043,21 @@ mobile/views/pages/following.vue:
|
||||
mobile/views/pages/home.vue:
|
||||
home: "ホーム"
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
mobile/views/pages/welcome.vue:
|
||||
signup: "新規登録"
|
||||
mobile/views/pages/widgets.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||
add-widget: "追加"
|
||||
customization-tips: "カスタマイズのヒント"
|
||||
mobile/views/pages/widgets/activity.vue:
|
||||
activity: "アクティビティ"
|
||||
mobile/views/pages/share.vue:
|
||||
share-with: "{}で共有"
|
||||
mobile/views/pages/messaging.vue:
|
||||
messaging: "メッセージ"
|
||||
mobile/views/pages/messaging-room.vue:
|
||||
@@ -771,8 +1073,10 @@ mobile/views/pages/note.vue:
|
||||
mobile/views/pages/notifications.vue:
|
||||
notifications: "通知"
|
||||
read-all: "すべての通知を既読にしますか?"
|
||||
mobile/views/pages/games/reversi.vue:
|
||||
reversi: "リバーシ"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
title: "Profil"
|
||||
name: "名前"
|
||||
account: "アカウント"
|
||||
location: "場所"
|
||||
@@ -782,12 +1086,13 @@ mobile/views/pages/settings/settings.profile.vue:
|
||||
banner: "バナー"
|
||||
is-cat: "このアカウントはCatです"
|
||||
save: "保存"
|
||||
saved: "プロフィールを保存しました"
|
||||
saved: "Profil wurde aktualisiert"
|
||||
uploading: "アップロード中"
|
||||
upload-failed: "アップロードに失敗しました"
|
||||
mobile/views/pages/search.vue:
|
||||
search: "検索"
|
||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||
mobile/views/pages/selectdrive.vue:
|
||||
select-file: "ファイルを選択"
|
||||
mobile/views/pages/settings.vue:
|
||||
@@ -796,7 +1101,7 @@ mobile/views/pages/settings.vue:
|
||||
lang-tip: "変更はページの再読み込み後に反映されます。"
|
||||
recommended: "推奨"
|
||||
auto: "自動"
|
||||
specify-language: "言語を指定"
|
||||
specify-language: "Sprache auswählen"
|
||||
design: "デザインと表示"
|
||||
dark-mode: "ダークモード"
|
||||
i-am-under-limited-internet: "私は通信を制限されている"
|
||||
@@ -804,7 +1109,8 @@ mobile/views/pages/settings.vue:
|
||||
timeline: "タイムライン"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
||||
show-renoted-my-notes: "自分の投稿のRenoteを表示する"
|
||||
show-local-renotes: "ローカルの投稿のRenoteを表示する"
|
||||
post-style: "投稿の表示スタイル"
|
||||
post-style-standard: "標準"
|
||||
post-style-smart: "スマート"
|
||||
@@ -819,9 +1125,9 @@ mobile/views/pages/settings.vue:
|
||||
twitter-disconnect: "切断する"
|
||||
update: "Misskey Update"
|
||||
version: "バージョン:"
|
||||
latest-version: "最新のバージョン:"
|
||||
update-checking: "アップデートを確認中"
|
||||
check-for-updates: "アップデートを確認"
|
||||
latest-version: "Neuste Version:"
|
||||
update-checking: "Suche nach Updates"
|
||||
check-for-updates: "Suche nach Updates"
|
||||
no-updates: "利用可能な更新はありません"
|
||||
no-updates-desc: "お使いのMisskeyは最新です。"
|
||||
update-available: "新しいバージョンが利用可能です"
|
||||
@@ -868,11 +1174,19 @@ docs:
|
||||
properties: "プロパティ"
|
||||
endpoints:
|
||||
params: "パラメータ"
|
||||
no-params: "パラメータはありません"
|
||||
res: "レスポンス"
|
||||
require-credential: "このエンドポイントは認証情報が必須です。"
|
||||
require-permission: "このエンドポイントは{permission}の権限を必要とします。"
|
||||
has-limit: "レートリミットがあります。"
|
||||
duration-limit: "直近{duration}ミリ秒の間のこのエンドポイントへのリクエスト数の合計が{max}を超える場合はリクエストできません。"
|
||||
min-interval-limit: "前回のリクエストから{interval}ミリ秒経っていない場合はリクエストできません。"
|
||||
show-src: "このエンドポイントのソースコードも閲覧できます。"
|
||||
show-src-link: "コードをGitHubで見る"
|
||||
generated: "このドキュメントはAPI定義に基づき自動生成されています。"
|
||||
props:
|
||||
name: "名前"
|
||||
type: "型"
|
||||
optional: "オプション"
|
||||
description: "説明"
|
||||
yes: "はい"
|
||||
no: "いいえ"
|
||||
dev/views/index.vue:
|
||||
manage-apps: "アプリの管理"
|
||||
|
||||
684
locales/en.yml
1096
locales/es.yml
1016
locales/fr.yml
@@ -2,11 +2,11 @@
|
||||
* Languages Loader
|
||||
*/
|
||||
|
||||
import * as fs from 'fs';
|
||||
import * as yaml from 'js-yaml';
|
||||
const fs = require('fs');
|
||||
const yaml = require('js-yaml');
|
||||
|
||||
const loadLang = lang => yaml.safeLoad(
|
||||
fs.readFileSync(`./locales/${lang}.yml`, 'utf-8'));
|
||||
fs.readFileSync(`${__dirname}/${lang}.yml`, 'utf-8'));
|
||||
|
||||
const native = loadLang('ja');
|
||||
|
||||
@@ -15,12 +15,13 @@ const langs = {
|
||||
'en': loadLang('en'),
|
||||
'fr': loadLang('fr'),
|
||||
'ja': native,
|
||||
'pl': loadLang('pl')
|
||||
'pl': loadLang('pl'),
|
||||
'es': loadLang('es')
|
||||
};
|
||||
|
||||
Object.entries(langs).map(([, locale]) => {
|
||||
Object.values(langs).forEach(locale => {
|
||||
// Extend native language (Japanese)
|
||||
locale = Object.assign({}, native, locale);
|
||||
});
|
||||
|
||||
export default langs;
|
||||
module.exports = langs;
|
||||
356
locales/it.yml
@@ -3,9 +3,31 @@ meta:
|
||||
lang: "日本語"
|
||||
divider: ""
|
||||
common:
|
||||
misskey: "A planet of fediverse"
|
||||
misskey: "A ⭐ of fediverse"
|
||||
about-title: "A ⭐ of fediverse."
|
||||
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
||||
adblock:
|
||||
detected: "広告ブロッカーを無効にしてください"
|
||||
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
||||
application-authorization: "アプリの連携"
|
||||
close: "閉じる"
|
||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||
got-it: "わかった"
|
||||
customization-tips:
|
||||
title: "カスタマイズのヒント"
|
||||
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
|
||||
paragraph2: "一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。"
|
||||
paragraph3: "ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。"
|
||||
paragraph4: "カスタマイズを終了するには、右上の「完了」をクリックします。"
|
||||
gotit: "Got it!"
|
||||
notification:
|
||||
file-uploaded: "ファイルがアップロードされました"
|
||||
message-from: "{}さんからメッセージ:"
|
||||
reversi-invited: "対局への招待があります"
|
||||
reversi-invited-by: "{}さんから"
|
||||
notified-by: "{}さんから"
|
||||
reply-from: "{}さんから返信:"
|
||||
quoted-by: "{}さんが引用:"
|
||||
time:
|
||||
unknown: "なぞのじかん"
|
||||
future: "未来"
|
||||
@@ -17,6 +39,8 @@ common:
|
||||
weeks_ago: "{}週間前"
|
||||
months_ago: "{}ヶ月前"
|
||||
years_ago: "{}年前"
|
||||
month-and-day: "{month}月 {day}日"
|
||||
trash: "ゴミ箱"
|
||||
weekday-short:
|
||||
sunday: "日"
|
||||
monday: "月"
|
||||
@@ -25,6 +49,14 @@ common:
|
||||
thursday: "木"
|
||||
friday: "金"
|
||||
saturday: "土"
|
||||
weekday:
|
||||
sunday: "日曜日"
|
||||
monday: "月曜日"
|
||||
tuesday: "火曜日"
|
||||
wednesday: "水曜日"
|
||||
thursday: "木曜日"
|
||||
friday: "金曜日"
|
||||
saturday: "土曜日"
|
||||
reactions:
|
||||
like: "いいね"
|
||||
love: "しゅき"
|
||||
@@ -34,6 +66,7 @@ common:
|
||||
congrats: "おめでとう"
|
||||
angry: "おこ"
|
||||
confused: "こまこまのこまり"
|
||||
rip: "RIP"
|
||||
pudding: "Pudding"
|
||||
note-placeholders:
|
||||
a: "今どうしてる?"
|
||||
@@ -42,11 +75,28 @@ common:
|
||||
d: "言いたいことは?"
|
||||
e: "ここに書いてください"
|
||||
f: "あなたが書くのを待っています..."
|
||||
search: "検索"
|
||||
delete: "削除"
|
||||
loading: "読み込み中"
|
||||
ok: "わかった"
|
||||
update-available-title: "更新があります"
|
||||
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
|
||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||
verified-user: "公式アカウント"
|
||||
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||
reversi:
|
||||
drawn: "引き分け"
|
||||
my-turn: "あなたのターンです"
|
||||
opponent-turn: "相手のターンです"
|
||||
turn-of: "{}のターンです"
|
||||
past-turn-of: "{}のターン"
|
||||
won: "{}の勝ち"
|
||||
black: "黒"
|
||||
white: "白"
|
||||
total: "合計"
|
||||
this-turn: "{}ターン目"
|
||||
widgets:
|
||||
analog-clock: "アナログ時計"
|
||||
profile: "プロフィール"
|
||||
@@ -54,21 +104,107 @@ common:
|
||||
timemachine: "カレンダー(タイムマシン)"
|
||||
activity: "アクティビティ"
|
||||
rss: "RSSリーダー"
|
||||
memo: "メモ"
|
||||
memo: "付箋"
|
||||
trends: "トレンド"
|
||||
photo-stream: "フォトストリーム"
|
||||
posts-monitor: "投稿チャート"
|
||||
slideshow: "スライドショー"
|
||||
version: "バージョン"
|
||||
broadcast: "ブロードキャスト"
|
||||
notifications: "通知"
|
||||
users: "おすすめユーザー"
|
||||
polls: "投票"
|
||||
polls: "アンケート"
|
||||
post-form: "投稿フォーム"
|
||||
messaging: "メッセージ"
|
||||
server: "サーバー情報"
|
||||
donation: "寄付のお願い"
|
||||
nav: "ナビゲーション"
|
||||
tips: "ヒント"
|
||||
hashtags: "ハッシュタグ"
|
||||
deck:
|
||||
widgets: "ウィジェット"
|
||||
home: "ホーム"
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
notifications: "通知"
|
||||
list: "リスト"
|
||||
swap-left: "左に移動"
|
||||
swap-right: "右に移動"
|
||||
swap-up: "上に移動"
|
||||
swap-down: "下に移動"
|
||||
remove: "カラムを削除"
|
||||
add-column: "カラムを追加"
|
||||
rename: "名前を変更"
|
||||
stack-left: "左に重ねる"
|
||||
pop-right: "右に出す"
|
||||
auth/views/form.vue:
|
||||
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
|
||||
permission-ask: "このアプリは次の権限を要求しています:"
|
||||
account-read: "アカウントの情報を見る。"
|
||||
account-write: "アカウントの情報を操作する。"
|
||||
note-write: "投稿する。"
|
||||
like-write: "いいねしたりいいね解除する。"
|
||||
following-write: "フォローしたりフォロー解除する。"
|
||||
drive-read: "ドライブを見る。"
|
||||
drive-write: "ドライブを操作する。"
|
||||
notification-read: "通知を見る。"
|
||||
notification-write: "通知を操作する。"
|
||||
cancel: "キャンセル"
|
||||
accept: "アクセスを許可"
|
||||
auth/views/index.vue:
|
||||
loading: "読み込み中"
|
||||
denied: "アプリケーションの連携をキャンセルしました。"
|
||||
denied-paragraph: "このアプリがあなたのアカウントにアクセスすることはありません。"
|
||||
already-authorized: "このアプリは既に連携済みです"
|
||||
allowed: "アプリケーションの連携を許可しました"
|
||||
callback-url: "アプリケーションに戻っています"
|
||||
please-go-back: "アプリケーションに戻って、やっていってください。"
|
||||
error: "セッションが存在しません。"
|
||||
sign-in: "サインインしてください"
|
||||
common/views/components/games/reversi/reversi.vue:
|
||||
matching:
|
||||
waiting-for: "{}を待っています"
|
||||
cancel: "キャンセル"
|
||||
common/views/components/games/reversi/reversi.game.vue:
|
||||
surrender: "投了"
|
||||
surrendered: "投了により"
|
||||
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||
looped-map: "ループマップ"
|
||||
can-put-everywhere: "どこでも置けるモード"
|
||||
common/views/components/games/reversi/reversi.index.vue:
|
||||
title: "Misskey Reversi"
|
||||
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
|
||||
invite: "招待"
|
||||
rule: "遊び方"
|
||||
rule-desc: "リバーシは、相手と交互に石をボードに置いて、相手の石を挟んで自分の色に変えてゆき、最終的に残った石が多い方が勝ちというボードゲームです。"
|
||||
mode-invite: "招待"
|
||||
mode-invite-desc: "指定したユーザーと対戦するモードです。"
|
||||
invitations: "対局の招待があります!"
|
||||
my-games: "自分の対局"
|
||||
all-games: "みんなの対局"
|
||||
enter-username: "ユーザー名を入力してください"
|
||||
game-state:
|
||||
ended: "終了"
|
||||
playing: "進行中"
|
||||
common/views/components/games/reversi/reversi.room.vue:
|
||||
settings-of-the-game: "ゲームの設定"
|
||||
choose-map: "マップを選択"
|
||||
random: "ランダム"
|
||||
black-or-white: "先手/後手"
|
||||
black-is: "{}が黒"
|
||||
rules: "ルール"
|
||||
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||
looped-map: "ループマップ"
|
||||
can-put-everywhere: "どこでも置けるモード"
|
||||
settings-of-the-bot: "Botの設定"
|
||||
this-game-is-started-soon: "ゲームは数秒後に開始されます"
|
||||
waiting-for-other: "相手の準備が完了するのを待っています"
|
||||
waiting-for-me: "あなたの準備が完了するのを待っています"
|
||||
waiting-for-both: "準備中"
|
||||
cancel: "キャンセル"
|
||||
ready: "準備完了"
|
||||
cancel-ready: "準備続行"
|
||||
common/views/components/connect-failed.vue:
|
||||
title: "サーバーに接続できません"
|
||||
description: "インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから{再度お試し}ください。"
|
||||
@@ -103,11 +239,13 @@ common/views/components/messaging-room.vue:
|
||||
no-history: "これより過去の履歴はありません"
|
||||
resize-form: "ドラッグしてフォームの広さを調整"
|
||||
new-message: "新しいメッセージがあります"
|
||||
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||
common/views/components/messaging-room.form.vue:
|
||||
input-message-here: "ここにメッセージを入力"
|
||||
send: "送信"
|
||||
attach-from-local: "PCからファイルを添付する"
|
||||
attach-from-drive: "ドライブからファイルを添付する"
|
||||
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||
common/views/components/messaging-room.message.vue:
|
||||
is-read: "既読"
|
||||
deleted: "このメッセージは削除されました"
|
||||
@@ -134,11 +272,11 @@ common/views/components/poll.vue:
|
||||
show-result: "結果を見る"
|
||||
voted: "投票済み"
|
||||
common/views/components/poll-editor.vue:
|
||||
no-only-one-choice: "投票には、選択肢が最低2つ必要です"
|
||||
no-only-one-choice: "アンケートには、選択肢が最低2つ必要です"
|
||||
choice-n: "選択肢{}"
|
||||
remove: "この選択肢を削除"
|
||||
add: "+選択肢を追加"
|
||||
destroy: "投票を破棄"
|
||||
destroy: "アンケートを破棄"
|
||||
common/views/components/reaction-picker.vue:
|
||||
choose-reaction: "リアクションを選択"
|
||||
common/views/components/signin.vue:
|
||||
@@ -147,6 +285,9 @@ common/views/components/signin.vue:
|
||||
token: "トークン"
|
||||
signing-in: "やってます..."
|
||||
signin: "サインイン"
|
||||
or: "または"
|
||||
signin-with-twitter: "Twitterでログイン"
|
||||
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||
common/views/components/signup.vue:
|
||||
username: "ユーザー名"
|
||||
checking: "確認しています..."
|
||||
@@ -198,19 +339,75 @@ common/views/widgets/broadcast.vue:
|
||||
no-broadcasts: "お知らせはありません"
|
||||
have-a-nice-day: "良い一日を!"
|
||||
next: "次"
|
||||
common/views/widgets/calendar.vue:
|
||||
year: "{}年"
|
||||
month: "{}月"
|
||||
day: "{}日"
|
||||
today: "今日:"
|
||||
this-month: "今月:"
|
||||
this-year: "今年:"
|
||||
common/views/widgets/donation.vue:
|
||||
title: "寄付のお願い"
|
||||
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
||||
common/views/widgets/photo-stream.vue:
|
||||
title: "フォトストリーム"
|
||||
no-photos: "写真はありません"
|
||||
common/views/widgets/posts-monitor.vue:
|
||||
title: "投稿チャート"
|
||||
toggle: "表示を切り替え"
|
||||
common/views/widgets/hashtags.vue:
|
||||
title: "ハッシュタグ"
|
||||
count: "{}人が投稿"
|
||||
empty: "トレンドなし"
|
||||
common/views/widgets/server.vue:
|
||||
title: "サーバー情報"
|
||||
toggle: "表示を切り替え"
|
||||
common/views/widgets/memo.vue:
|
||||
title: "メモ"
|
||||
title: "付箋"
|
||||
memo: "ここに書いて!"
|
||||
save: "保存"
|
||||
common/views/widgets/slideshow.vue:
|
||||
folder-customize-mode: "フォルダを指定するには、カスタマイズモードを終了してください"
|
||||
folder: "クリックしてフォルダを指定してください"
|
||||
no-image: "このフォルダには画像がありません"
|
||||
common/views/widgets/tips.vue:
|
||||
tips-line1: "<kbd>t</kbd>でタイムラインにフォーカスできます"
|
||||
tips-line2: "<kbd>p</kbd>または<kbd>n</kbd>で投稿フォームを開きます"
|
||||
tips-line3: "投稿フォームにはファイルをドラッグ&ドロップできます"
|
||||
tips-line4: "投稿フォームにクリップボードにある画像データをペーストできます"
|
||||
tips-line5: "ドライブにファイルをドラッグ&ドロップしてアップロードできます"
|
||||
tips-line6: "ドライブでファイルをドラッグしてフォルダ移動できます"
|
||||
tips-line7: "ドライブでフォルダをドラッグしてフォルダ移動できます"
|
||||
tips-line8: "ホームは設定からカスタマイズできます"
|
||||
tips-line9: "MisskeyはAGPLv3です"
|
||||
tips-line10: "タイムマシンウィジェットを利用すると、簡単に過去のタイムラインに遡れます"
|
||||
tips-line11: "投稿の ... をクリックして、投稿をユーザーページにピン留めできます"
|
||||
tips-line13: "投稿に添付したファイルは全てドライブに保存されます"
|
||||
tips-line14: "ホームのカスタマイズ中、ウィジェットを右クリックしてデザインを変更できます"
|
||||
tips-line17: "「**」でテキストを囲むと**強調表示**されます"
|
||||
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
|
||||
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
|
||||
tips-line21: "APIを利用してbotの開発なども行えます"
|
||||
tips-line23: "まゆかわいいよまゆ"
|
||||
tips-line24: "Misskeyは2014年にサービスを開始しました"
|
||||
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
||||
common/views/pages/follow.vue:
|
||||
signed-in-as: "{}としてサインイン中"
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-request: "フォロー申請"
|
||||
desktop:
|
||||
banner-crop-title: "バナーとして表示する部分を選択"
|
||||
banner: "バナー"
|
||||
uploading-banner: "新しいバナーをアップロードしています"
|
||||
banner-updated: "バナーを更新しました"
|
||||
choose-banner: "バナーにする画像を選択"
|
||||
avatar-crop-title: "アバターとして表示する部分を選択"
|
||||
avatar: "アバター"
|
||||
uploading-avatar: "新しいアバターをアップロードしています"
|
||||
avatar-updated: "アバターを更新しました"
|
||||
choose-avatar: "アバターにする画像を選択"
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Black ... Total"
|
||||
notes: "Blue ... Notes"
|
||||
@@ -246,6 +443,8 @@ desktop/views/components/drive.file.vue:
|
||||
banner: "バナー"
|
||||
contextmenu:
|
||||
rename: "名前を変更"
|
||||
mark-as-sensitive: "閲覧注意に設定"
|
||||
unmark-as-sensitive: "閲覧注意を解除"
|
||||
copy-url: "URLをコピー"
|
||||
download: "ダウンロード"
|
||||
else-files: "その他..."
|
||||
@@ -289,8 +488,14 @@ desktop/views/components/drive.vue:
|
||||
create-folder: "フォルダーを作成"
|
||||
upload: "ファイルをアップロード"
|
||||
url-upload: "URLからアップロード"
|
||||
desktop/views/components/media-image.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
desktop/views/components/media-video.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
desktop/views/components/follow-button.vue:
|
||||
unfollow: "フォロー中"
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-request: "フォロー申請"
|
||||
@@ -309,7 +514,7 @@ desktop/views/components/friends-maker.vue:
|
||||
refresh: "もっと見る"
|
||||
close: "閉じる"
|
||||
desktop/views/components/game-window.vue:
|
||||
game: "オセロ"
|
||||
game: "リバーシ"
|
||||
desktop/views/components/home.vue:
|
||||
done: "完了"
|
||||
add-widget: "ウィジェットを追加:"
|
||||
@@ -337,13 +542,19 @@ desktop/views/components/notes.note.vue:
|
||||
detail: "詳細"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
hide: "隠す"
|
||||
see-more: "もっと見る"
|
||||
desktop/views/components/notes.vue:
|
||||
error: "読み込みに失敗しました。"
|
||||
retry: "リトライ"
|
||||
load-more: "もっと読み込む"
|
||||
desktop/views/components/notifications.vue:
|
||||
more: "もっと見る"
|
||||
empty: "ありません!"
|
||||
desktop/views/components/post-form.vue:
|
||||
add-visible-user: "+ユーザーを追加"
|
||||
attach-location-information: "位置情報を添付する"
|
||||
hide-contents: "内容を隠す"
|
||||
reply-placeholder: "この投稿への返信..."
|
||||
quote-placeholder: "この投稿を引用..."
|
||||
submit: "投稿"
|
||||
@@ -359,9 +570,16 @@ desktop/views/components/post-form.vue:
|
||||
attach-media-from-local: "PCからメディアを添付"
|
||||
attach-media-from-drive: "ドライブからメディアを添付"
|
||||
attach-cancel: "添付取り消し"
|
||||
insert-a-kao: "v(‘ω’)v"
|
||||
create-poll: "投票を作成"
|
||||
insert-a-kao: "v('ω')v"
|
||||
create-poll: "アンケートを作成"
|
||||
text-remain: "残り{}文字"
|
||||
recent-tags: "最近"
|
||||
click-to-tagging: "クリックでタグ付け"
|
||||
visibility: "公開範囲"
|
||||
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||
error: "エラー"
|
||||
enter-username: "ユーザー名を入力してください"
|
||||
annotations: "内容への注釈 (オプション)"
|
||||
desktop/views/components/post-form-window.vue:
|
||||
note: "新規投稿"
|
||||
reply: "返信"
|
||||
@@ -402,13 +620,17 @@ desktop/views/components/settings.vue:
|
||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||
display: "デザインと表示"
|
||||
customize: "ホームをカスタマイズ"
|
||||
choose-wallpaper: "壁紙を選択"
|
||||
delete-wallpaper: "壁紙を削除"
|
||||
dark-mode: "ダークモード"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||
show-renoted-my-notes: "Renoteされた自分の投稿をタイムラインに表示する"
|
||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||
show-maps: "マップの自動展開"
|
||||
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
||||
sound: "サウンド"
|
||||
@@ -480,6 +702,9 @@ desktop/views/components/settings.api.vue:
|
||||
enter-password: "パスワードを入力してください"
|
||||
desktop/views/components/settings.apps.vue:
|
||||
no-apps: "連携しているアプリケーションはありません"
|
||||
desktop/views/components/settings.drive.vue:
|
||||
max: "中"
|
||||
in-use: "使用中"
|
||||
desktop/views/components/settings.mute.vue:
|
||||
no-users: "ミュートしているユーザーはいません"
|
||||
desktop/views/components/settings.password.vue:
|
||||
@@ -497,32 +722,41 @@ desktop/views/components/settings.profile.vue:
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
save: "保存"
|
||||
locked-account: "アカウントの保護"
|
||||
is-locked: "投稿を非公開にする"
|
||||
other: "その他"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
profile-updated: "プロフィールを更新しました"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
media-count: "{}つのメディア"
|
||||
poll: "投票"
|
||||
poll: "アンケート"
|
||||
desktop/views/components/taskmanager.vue:
|
||||
title: "タスクマネージャ"
|
||||
desktop/views/components/timeline.vue:
|
||||
home: "ホーム"
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
list: "リスト"
|
||||
desktop/views/components/ui.header.vue:
|
||||
welcome-back: "おかえりなさい、"
|
||||
adjective: "さん"
|
||||
desktop/views/components/ui.header.account.vue:
|
||||
profile: "プロフィール"
|
||||
drive: "ドライブ"
|
||||
favorites: "お気に入り"
|
||||
lists: "リスト"
|
||||
follow-requests: "フォロー申請"
|
||||
customize: "カスタマイズ"
|
||||
customize: "ホームのカスタマイズ"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
dark: "闇に飲まれる"
|
||||
desktop/views/components/ui.header.nav.vue:
|
||||
home: "ホーム"
|
||||
deck: "デッキ"
|
||||
messaging: "メッセージ"
|
||||
game: "ゲーム"
|
||||
desktop/views/components/ui.header.notifications.vue:
|
||||
@@ -538,6 +772,7 @@ desktop/views/components/received-follow-requests-window.vue:
|
||||
desktop/views/components/user-lists-window.vue:
|
||||
title: "リスト"
|
||||
create-list: "リストを作成"
|
||||
list-name: "リスト名"
|
||||
desktop/views/components/user-preview.vue:
|
||||
notes: "投稿"
|
||||
following: "フォロー"
|
||||
@@ -552,6 +787,33 @@ desktop/views/components/users-list-item.vue:
|
||||
desktop/views/components/window.vue:
|
||||
popout: "ポップアウト"
|
||||
close: "閉じる"
|
||||
desktop/views/pages/admin/admin.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
drive: "ドライブ"
|
||||
users: "ユーザー"
|
||||
update: "更新"
|
||||
desktop/views/pages/admin/admin.dashboard.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
all-users: "全てのユーザー"
|
||||
original-users: "このインスタンスのユーザー"
|
||||
all-notes: "全てのノート"
|
||||
original-notes: "このインスタンスのノート"
|
||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||
suspend-user: "ユーザーの凍結"
|
||||
suspend: "凍結"
|
||||
suspended: "凍結しました"
|
||||
desktop/views/pages/admin/admin.unsuspend-user.vue:
|
||||
unsuspend-user: "ユーザーの凍結の解除"
|
||||
unsuspend: "凍結の解除"
|
||||
unsuspended: "凍結を解除しました"
|
||||
desktop/views/pages/deck/deck.tl-column.vue:
|
||||
is-media-only: "メディア投稿のみ"
|
||||
is-media-view: "メディアビュー"
|
||||
edit: "オプション"
|
||||
desktop/views/pages/deck/deck.note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
desktop/views/pages/welcome.vue:
|
||||
about: "詳しく..."
|
||||
gotit: "わかった"
|
||||
@@ -560,6 +822,7 @@ desktop/views/pages/welcome.vue:
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Misskey Drive"
|
||||
desktop/views/pages/favorites.vue:
|
||||
@@ -574,6 +837,13 @@ desktop/views/pages/selectdrive.vue:
|
||||
ok: "決定"
|
||||
cancel: "キャンセル"
|
||||
upload: "PCからドライブにファイルをアップロード"
|
||||
desktop/views/pages/search.vue:
|
||||
not-available: "検索機能を利用することができません。"
|
||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||
desktop/views/pages/share.vue:
|
||||
share-with: "{}で共有"
|
||||
desktop/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
desktop/views/pages/user-list.users.vue:
|
||||
users: "ユーザー"
|
||||
add-user: "ユーザーを追加"
|
||||
@@ -586,7 +856,7 @@ desktop/views/pages/user/user.friends.vue:
|
||||
title: "よく話すユーザー"
|
||||
loading: "読み込み中"
|
||||
no-users: "よく話すユーザーはいません"
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
desktop/views/pages/user/user.vue:
|
||||
is-suspended: "このユーザーは凍結されています。"
|
||||
is-remote: "このユーザーはリモートユーザーです。"
|
||||
view-remote: "正確な情報を見る"
|
||||
@@ -604,6 +874,13 @@ desktop/views/pages/user/user.profile.vue:
|
||||
mute: "ミュートする"
|
||||
muted: "ミュートしています"
|
||||
unmute: "ミュート解除"
|
||||
push-to-a-list: "リストに追加"
|
||||
list-pushed: "{user}を{list}に追加しました。"
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
posts: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
is-bot: "このアカウントはBotです"
|
||||
desktop/views/pages/user/user.timeline.vue:
|
||||
default: "投稿"
|
||||
with-replies: "投稿と返信"
|
||||
@@ -615,7 +892,7 @@ desktop/views/widgets/notifications.vue:
|
||||
title: "通知"
|
||||
settings: "通知の設定"
|
||||
desktop/views/widgets/polls.vue:
|
||||
title: "投票"
|
||||
title: "アンケート"
|
||||
refresh: "他を見る"
|
||||
nothing: "ありません!"
|
||||
desktop/views/widgets/post-form.vue:
|
||||
@@ -660,8 +937,14 @@ mobile/views/components/drive.file-detail.vue:
|
||||
move: "移動"
|
||||
hash: "ハッシュ (md5)"
|
||||
exif: "EXIF"
|
||||
mobile/views/components/media-image.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
mobile/views/components/media-video.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
mobile/views/components/follow-button.vue:
|
||||
unfollow: "フォロー中"
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-request: "フォロー申請"
|
||||
@@ -714,10 +997,13 @@ mobile/views/components/sub-note-content.vue:
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
media-count: "{}つのメディア"
|
||||
poll: "投票"
|
||||
poll: "アンケート"
|
||||
mobile/views/components/timeline.vue:
|
||||
empty: "投稿がありません"
|
||||
load-more: "もっと"
|
||||
mobile/views/components/ui.header.vue:
|
||||
welcome-back: "おかえりなさい、"
|
||||
adjective: "さん"
|
||||
mobile/views/components/ui.nav.vue:
|
||||
timeline: "タイムライン"
|
||||
notifications: "通知"
|
||||
@@ -748,6 +1034,8 @@ mobile/views/pages/user-lists.vue:
|
||||
mobile/views/pages/drive.vue:
|
||||
drive: "ドライブ"
|
||||
more: "もっと見る"
|
||||
mobile/views/pages/signup.vue:
|
||||
lets-start: "📦 始めましょう"
|
||||
mobile/views/pages/followers.vue:
|
||||
followers-of: "{}のフォロワー"
|
||||
mobile/views/pages/following.vue:
|
||||
@@ -755,7 +1043,21 @@ mobile/views/pages/following.vue:
|
||||
mobile/views/pages/home.vue:
|
||||
home: "ホーム"
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
mobile/views/pages/welcome.vue:
|
||||
signup: "新規登録"
|
||||
mobile/views/pages/widgets.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||
add-widget: "追加"
|
||||
customization-tips: "カスタマイズのヒント"
|
||||
mobile/views/pages/widgets/activity.vue:
|
||||
activity: "アクティビティ"
|
||||
mobile/views/pages/share.vue:
|
||||
share-with: "{}で共有"
|
||||
mobile/views/pages/messaging.vue:
|
||||
messaging: "メッセージ"
|
||||
mobile/views/pages/messaging-room.vue:
|
||||
@@ -771,6 +1073,8 @@ mobile/views/pages/note.vue:
|
||||
mobile/views/pages/notifications.vue:
|
||||
notifications: "通知"
|
||||
read-all: "すべての通知を既読にしますか?"
|
||||
mobile/views/pages/games/reversi.vue:
|
||||
reversi: "リバーシ"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
name: "名前"
|
||||
@@ -788,6 +1092,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
||||
mobile/views/pages/search.vue:
|
||||
search: "検索"
|
||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||
mobile/views/pages/selectdrive.vue:
|
||||
select-file: "ファイルを選択"
|
||||
mobile/views/pages/settings.vue:
|
||||
@@ -804,7 +1109,8 @@ mobile/views/pages/settings.vue:
|
||||
timeline: "タイムライン"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
||||
show-renoted-my-notes: "自分の投稿のRenoteを表示する"
|
||||
show-local-renotes: "ローカルの投稿のRenoteを表示する"
|
||||
post-style: "投稿の表示スタイル"
|
||||
post-style-standard: "標準"
|
||||
post-style-smart: "スマート"
|
||||
@@ -868,11 +1174,19 @@ docs:
|
||||
properties: "プロパティ"
|
||||
endpoints:
|
||||
params: "パラメータ"
|
||||
no-params: "パラメータはありません"
|
||||
res: "レスポンス"
|
||||
require-credential: "このエンドポイントは認証情報が必須です。"
|
||||
require-permission: "このエンドポイントは{permission}の権限を必要とします。"
|
||||
has-limit: "レートリミットがあります。"
|
||||
duration-limit: "直近{duration}ミリ秒の間のこのエンドポイントへのリクエスト数の合計が{max}を超える場合はリクエストできません。"
|
||||
min-interval-limit: "前回のリクエストから{interval}ミリ秒経っていない場合はリクエストできません。"
|
||||
show-src: "このエンドポイントのソースコードも閲覧できます。"
|
||||
show-src-link: "コードをGitHubで見る"
|
||||
generated: "このドキュメントはAPI定義に基づき自動生成されています。"
|
||||
props:
|
||||
name: "名前"
|
||||
type: "型"
|
||||
optional: "オプション"
|
||||
description: "説明"
|
||||
yes: "はい"
|
||||
no: "いいえ"
|
||||
dev/views/index.vue:
|
||||
manage-apps: "アプリの管理"
|
||||
|
||||
414
locales/ja.yml
@@ -3,10 +3,31 @@ meta:
|
||||
divider: ""
|
||||
|
||||
common:
|
||||
misskey: "A planet of fediverse"
|
||||
misskey: "A ⭐ of fediverse"
|
||||
about-title: "A ⭐ of fediverse."
|
||||
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
||||
|
||||
adblock:
|
||||
detected: "広告ブロッカーを無効にしてください"
|
||||
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
||||
application-authorization: "アプリの連携"
|
||||
close: "閉じる"
|
||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||
got-it: "わかった"
|
||||
customization-tips:
|
||||
title: "カスタマイズのヒント"
|
||||
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
|
||||
paragraph2: "一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。"
|
||||
paragraph3: "ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。"
|
||||
paragraph4: "カスタマイズを終了するには、右上の「完了」をクリックします。"
|
||||
gotit: "Got it!"
|
||||
notification:
|
||||
file-uploaded: "ファイルがアップロードされました"
|
||||
message-from: "{}さんからメッセージ:"
|
||||
reversi-invited: "対局への招待があります"
|
||||
reversi-invited-by: "{}さんから"
|
||||
notified-by: "{}さんから"
|
||||
reply-from: "{}さんから返信:"
|
||||
quoted-by: "{}さんが引用:"
|
||||
time:
|
||||
unknown: "なぞのじかん"
|
||||
future: "未来"
|
||||
@@ -18,6 +39,9 @@ common:
|
||||
weeks_ago: "{}週間前"
|
||||
months_ago: "{}ヶ月前"
|
||||
years_ago: "{}年前"
|
||||
month-and-day: "{month}月 {day}日"
|
||||
|
||||
trash: "ゴミ箱"
|
||||
|
||||
weekday-short:
|
||||
sunday: "日"
|
||||
@@ -28,6 +52,15 @@ common:
|
||||
friday: "金"
|
||||
saturday: "土"
|
||||
|
||||
weekday:
|
||||
sunday: "日曜日"
|
||||
monday: "月曜日"
|
||||
tuesday: "火曜日"
|
||||
wednesday: "水曜日"
|
||||
thursday: "木曜日"
|
||||
friday: "金曜日"
|
||||
saturday: "土曜日"
|
||||
|
||||
reactions:
|
||||
like: "いいね"
|
||||
love: "しゅき"
|
||||
@@ -37,6 +70,7 @@ common:
|
||||
congrats: "おめでとう"
|
||||
angry: "おこ"
|
||||
confused: "こまこまのこまり"
|
||||
rip: "RIP"
|
||||
pudding: "Pudding"
|
||||
|
||||
note-placeholders:
|
||||
@@ -47,11 +81,29 @@ common:
|
||||
e: "ここに書いてください"
|
||||
f: "あなたが書くのを待っています..."
|
||||
|
||||
search: "検索"
|
||||
delete: "削除"
|
||||
loading: "読み込み中"
|
||||
ok: "わかった"
|
||||
update-available-title: "更新があります"
|
||||
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
|
||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||
verified-user: "公式アカウント"
|
||||
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||
|
||||
reversi:
|
||||
drawn: "引き分け"
|
||||
my-turn: "あなたのターンです"
|
||||
opponent-turn: "相手のターンです"
|
||||
turn-of: "{}のターンです"
|
||||
past-turn-of: "{}のターン"
|
||||
won: "{}の勝ち"
|
||||
black: "黒"
|
||||
white: "白"
|
||||
total: "合計"
|
||||
this-turn: "{}ターン目"
|
||||
|
||||
widgets:
|
||||
analog-clock: "アナログ時計"
|
||||
@@ -60,21 +112,114 @@ common:
|
||||
timemachine: "カレンダー(タイムマシン)"
|
||||
activity: "アクティビティ"
|
||||
rss: "RSSリーダー"
|
||||
memo: "メモ"
|
||||
memo: "付箋"
|
||||
trends: "トレンド"
|
||||
photo-stream: "フォトストリーム"
|
||||
posts-monitor: "投稿チャート"
|
||||
slideshow: "スライドショー"
|
||||
version: "バージョン"
|
||||
broadcast: "ブロードキャスト"
|
||||
notifications: "通知"
|
||||
users: "おすすめユーザー"
|
||||
polls: "投票"
|
||||
polls: "アンケート"
|
||||
post-form: "投稿フォーム"
|
||||
messaging: "メッセージ"
|
||||
server: "サーバー情報"
|
||||
donation: "寄付のお願い"
|
||||
nav: "ナビゲーション"
|
||||
tips: "ヒント"
|
||||
hashtags: "ハッシュタグ"
|
||||
|
||||
deck:
|
||||
widgets: "ウィジェット"
|
||||
home: "ホーム"
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
notifications: "通知"
|
||||
list: "リスト"
|
||||
swap-left: "左に移動"
|
||||
swap-right: "右に移動"
|
||||
swap-up: "上に移動"
|
||||
swap-down: "下に移動"
|
||||
remove: "カラムを削除"
|
||||
add-column: "カラムを追加"
|
||||
rename: "名前を変更"
|
||||
stack-left: "左に重ねる"
|
||||
pop-right: "右に出す"
|
||||
|
||||
auth/views/form.vue:
|
||||
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
|
||||
permission-ask: "このアプリは次の権限を要求しています:"
|
||||
account-read: "アカウントの情報を見る。"
|
||||
account-write: "アカウントの情報を操作する。"
|
||||
note-write: "投稿する。"
|
||||
like-write: "いいねしたりいいね解除する。"
|
||||
following-write: "フォローしたりフォロー解除する。"
|
||||
drive-read: "ドライブを見る。"
|
||||
drive-write: "ドライブを操作する。"
|
||||
notification-read: "通知を見る。"
|
||||
notification-write: "通知を操作する。"
|
||||
cancel: "キャンセル"
|
||||
accept: "アクセスを許可"
|
||||
|
||||
auth/views/index.vue:
|
||||
loading: "読み込み中"
|
||||
denied: "アプリケーションの連携をキャンセルしました。"
|
||||
denied-paragraph: "このアプリがあなたのアカウントにアクセスすることはありません。"
|
||||
already-authorized: "このアプリは既に連携済みです"
|
||||
allowed: "アプリケーションの連携を許可しました"
|
||||
callback-url: "アプリケーションに戻っています"
|
||||
please-go-back: "アプリケーションに戻って、やっていってください。"
|
||||
error: "セッションが存在しません。"
|
||||
sign-in: "サインインしてください"
|
||||
|
||||
common/views/components/games/reversi/reversi.vue:
|
||||
matching:
|
||||
waiting-for: "{}を待っています"
|
||||
cancel: "キャンセル"
|
||||
|
||||
common/views/components/games/reversi/reversi.game.vue:
|
||||
surrender: "投了"
|
||||
surrendered: "投了により"
|
||||
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||
looped-map: "ループマップ"
|
||||
can-put-everywhere: "どこでも置けるモード"
|
||||
|
||||
common/views/components/games/reversi/reversi.index.vue:
|
||||
title: "Misskey Reversi"
|
||||
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
|
||||
invite: "招待"
|
||||
rule: "遊び方"
|
||||
rule-desc: "リバーシは、相手と交互に石をボードに置いて、相手の石を挟んで自分の色に変えてゆき、最終的に残った石が多い方が勝ちというボードゲームです。"
|
||||
mode-invite: "招待"
|
||||
mode-invite-desc: "指定したユーザーと対戦するモードです。"
|
||||
invitations: "対局の招待があります!"
|
||||
my-games: "自分の対局"
|
||||
all-games: "みんなの対局"
|
||||
enter-username: "ユーザー名を入力してください"
|
||||
game-state:
|
||||
ended: "終了"
|
||||
playing: "進行中"
|
||||
|
||||
common/views/components/games/reversi/reversi.room.vue:
|
||||
settings-of-the-game: "ゲームの設定"
|
||||
choose-map: "マップを選択"
|
||||
random: "ランダム"
|
||||
black-or-white: "先手/後手"
|
||||
black-is: "{}が黒"
|
||||
rules: "ルール"
|
||||
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||
looped-map: "ループマップ"
|
||||
can-put-everywhere: "どこでも置けるモード"
|
||||
settings-of-the-bot: "Botの設定"
|
||||
this-game-is-started-soon: "ゲームは数秒後に開始されます"
|
||||
waiting-for-other: "相手の準備が完了するのを待っています"
|
||||
waiting-for-me: "あなたの準備が完了するのを待っています"
|
||||
waiting-for-both: "準備中"
|
||||
cancel: "キャンセル"
|
||||
ready: "準備完了"
|
||||
cancel-ready: "準備続行"
|
||||
|
||||
common/views/components/connect-failed.vue:
|
||||
title: "サーバーに接続できません"
|
||||
@@ -113,12 +258,14 @@ common/views/components/messaging-room.vue:
|
||||
no-history: "これより過去の履歴はありません"
|
||||
resize-form: "ドラッグしてフォームの広さを調整"
|
||||
new-message: "新しいメッセージがあります"
|
||||
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||
|
||||
common/views/components/messaging-room.form.vue:
|
||||
input-message-here: "ここにメッセージを入力"
|
||||
send: "送信"
|
||||
attach-from-local: "PCからファイルを添付する"
|
||||
attach-from-drive: "ドライブからファイルを添付する"
|
||||
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||
|
||||
common/views/components/messaging-room.message.vue:
|
||||
is-read: "既読"
|
||||
@@ -150,11 +297,11 @@ common/views/components/poll.vue:
|
||||
voted: "投票済み"
|
||||
|
||||
common/views/components/poll-editor.vue:
|
||||
no-only-one-choice: "投票には、選択肢が最低2つ必要です"
|
||||
no-only-one-choice: "アンケートには、選択肢が最低2つ必要です"
|
||||
choice-n: "選択肢{}"
|
||||
remove: "この選択肢を削除"
|
||||
add: "+選択肢を追加"
|
||||
destroy: "投票を破棄"
|
||||
destroy: "アンケートを破棄"
|
||||
|
||||
common/views/components/reaction-picker.vue:
|
||||
choose-reaction: "リアクションを選択"
|
||||
@@ -165,8 +312,13 @@ common/views/components/signin.vue:
|
||||
token: "トークン"
|
||||
signing-in: "やってます..."
|
||||
signin: "サインイン"
|
||||
or: "または"
|
||||
signin-with-twitter: "Twitterでログイン"
|
||||
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||
|
||||
common/views/components/signup.vue:
|
||||
invitation-code: "招待コード"
|
||||
invitation-info: "招待コードをお持ちでない方は、<a href=\"{}\">管理者</a>までご連絡ください。"
|
||||
username: "ユーザー名"
|
||||
checking: "確認しています..."
|
||||
available: "利用できます"
|
||||
@@ -224,6 +376,14 @@ common/views/widgets/broadcast.vue:
|
||||
have-a-nice-day: "良い一日を!"
|
||||
next: "次"
|
||||
|
||||
common/views/widgets/calendar.vue:
|
||||
year: "{}年"
|
||||
month: "{}月"
|
||||
day: "{}日"
|
||||
today: "今日:"
|
||||
this-month: "今月:"
|
||||
this-year: "今年:"
|
||||
|
||||
common/views/widgets/donation.vue:
|
||||
title: "寄付のお願い"
|
||||
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
||||
@@ -232,15 +392,70 @@ common/views/widgets/photo-stream.vue:
|
||||
title: "フォトストリーム"
|
||||
no-photos: "写真はありません"
|
||||
|
||||
common/views/widgets/posts-monitor.vue:
|
||||
title: "投稿チャート"
|
||||
toggle: "表示を切り替え"
|
||||
|
||||
common/views/widgets/hashtags.vue:
|
||||
title: "ハッシュタグ"
|
||||
count: "{}人が投稿"
|
||||
empty: "トレンドなし"
|
||||
|
||||
common/views/widgets/server.vue:
|
||||
title: "サーバー情報"
|
||||
toggle: "表示を切り替え"
|
||||
|
||||
common/views/widgets/memo.vue:
|
||||
title: "メモ"
|
||||
title: "付箋"
|
||||
memo: "ここに書いて!"
|
||||
save: "保存"
|
||||
|
||||
common/views/widgets/slideshow.vue:
|
||||
folder-customize-mode: "フォルダを指定するには、カスタマイズモードを終了してください"
|
||||
folder: "クリックしてフォルダを指定してください"
|
||||
no-image: "このフォルダには画像がありません"
|
||||
|
||||
common/views/widgets/tips.vue:
|
||||
tips-line1: "<kbd>t</kbd>でタイムラインにフォーカスできます"
|
||||
tips-line2: "<kbd>p</kbd>または<kbd>n</kbd>で投稿フォームを開きます"
|
||||
tips-line3: "投稿フォームにはファイルをドラッグ&ドロップできます"
|
||||
tips-line4: "投稿フォームにクリップボードにある画像データをペーストできます"
|
||||
tips-line5: "ドライブにファイルをドラッグ&ドロップしてアップロードできます"
|
||||
tips-line6: "ドライブでファイルをドラッグしてフォルダ移動できます"
|
||||
tips-line7: "ドライブでフォルダをドラッグしてフォルダ移動できます"
|
||||
tips-line8: "ホームは設定からカスタマイズできます"
|
||||
tips-line9: "MisskeyはAGPLv3です"
|
||||
tips-line10: "タイムマシンウィジェットを利用すると、簡単に過去のタイムラインに遡れます"
|
||||
tips-line11: "投稿の ... をクリックして、投稿をユーザーページにピン留めできます"
|
||||
tips-line13: "投稿に添付したファイルは全てドライブに保存されます"
|
||||
tips-line14: "ホームのカスタマイズ中、ウィジェットを右クリックしてデザインを変更できます"
|
||||
tips-line17: "「**」でテキストを囲むと**強調表示**されます"
|
||||
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
|
||||
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
|
||||
tips-line21: "APIを利用してbotの開発なども行えます"
|
||||
tips-line23: "まゆかわいいよまゆ"
|
||||
tips-line24: "Misskeyは2014年にサービスを開始しました"
|
||||
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
||||
|
||||
common/views/pages/follow.vue:
|
||||
signed-in-as: "{}としてサインイン中"
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-request: "フォロー申請"
|
||||
|
||||
desktop:
|
||||
banner-crop-title: "バナーとして表示する部分を選択"
|
||||
banner: "バナー"
|
||||
uploading-banner: "新しいバナーをアップロードしています"
|
||||
banner-updated: "バナーを更新しました"
|
||||
choose-banner: "バナーにする画像を選択"
|
||||
avatar-crop-title: "アバターとして表示する部分を選択"
|
||||
avatar: "アバター"
|
||||
uploading-avatar: "新しいアバターをアップロードしています"
|
||||
avatar-updated: "アバターを更新しました"
|
||||
choose-avatar: "アバターにする画像を選択"
|
||||
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Black ... Total"
|
||||
notes: "Blue ... Notes"
|
||||
@@ -283,6 +498,8 @@ desktop/views/components/drive.file.vue:
|
||||
banner: "バナー"
|
||||
contextmenu:
|
||||
rename: "名前を変更"
|
||||
mark-as-sensitive: "閲覧注意に設定"
|
||||
unmark-as-sensitive: "閲覧注意を解除"
|
||||
copy-url: "URLをコピー"
|
||||
download: "ダウンロード"
|
||||
else-files: "その他..."
|
||||
@@ -330,6 +547,14 @@ desktop/views/components/drive.vue:
|
||||
upload: "ファイルをアップロード"
|
||||
url-upload: "URLからアップロード"
|
||||
|
||||
desktop/views/components/media-image.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
|
||||
desktop/views/components/media-video.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
|
||||
desktop/views/components/follow-button.vue:
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
@@ -356,7 +581,7 @@ desktop/views/components/friends-maker.vue:
|
||||
close: "閉じる"
|
||||
|
||||
desktop/views/components/game-window.vue:
|
||||
game: "オセロ"
|
||||
game: "リバーシ"
|
||||
|
||||
desktop/views/components/home.vue:
|
||||
done: "完了"
|
||||
@@ -390,16 +615,22 @@ desktop/views/components/notes.note.vue:
|
||||
detail: "詳細"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
hide: "隠す"
|
||||
see-more: "もっと見る"
|
||||
|
||||
desktop/views/components/notes.vue:
|
||||
error: "読み込みに失敗しました。"
|
||||
retry: "リトライ"
|
||||
load-more: "もっと読み込む"
|
||||
|
||||
desktop/views/components/notifications.vue:
|
||||
more: "もっと見る"
|
||||
empty: "ありません!"
|
||||
|
||||
desktop/views/components/post-form.vue:
|
||||
add-visible-user: "+ユーザーを追加"
|
||||
attach-location-information: "位置情報を添付する"
|
||||
hide-contents: "内容を隠す"
|
||||
reply-placeholder: "この投稿への返信..."
|
||||
quote-placeholder: "この投稿を引用..."
|
||||
submit: "投稿"
|
||||
@@ -415,9 +646,16 @@ desktop/views/components/post-form.vue:
|
||||
attach-media-from-local: "PCからメディアを添付"
|
||||
attach-media-from-drive: "ドライブからメディアを添付"
|
||||
attach-cancel: "添付取り消し"
|
||||
insert-a-kao: "v(‘ω’)v"
|
||||
create-poll: "投票を作成"
|
||||
insert-a-kao: "v('ω')v"
|
||||
create-poll: "アンケートを作成"
|
||||
text-remain: "残り{}文字"
|
||||
recent-tags: "最近"
|
||||
click-to-tagging: "クリックでタグ付け"
|
||||
visibility: "公開範囲"
|
||||
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||
error: "エラー"
|
||||
enter-username: "ユーザー名を入力してください"
|
||||
annotations: "内容への注釈 (オプション)"
|
||||
|
||||
desktop/views/components/post-form-window.vue:
|
||||
note: "新規投稿"
|
||||
@@ -466,13 +704,17 @@ desktop/views/components/settings.vue:
|
||||
|
||||
display: "デザインと表示"
|
||||
customize: "ホームをカスタマイズ"
|
||||
choose-wallpaper: "壁紙を選択"
|
||||
delete-wallpaper: "壁紙を削除"
|
||||
dark-mode: "ダークモード"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||
show-renoted-my-notes: "Renoteされた自分の投稿をタイムラインに表示する"
|
||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||
show-maps: "マップの自動展開"
|
||||
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
||||
|
||||
@@ -556,6 +798,10 @@ desktop/views/components/settings.api.vue:
|
||||
desktop/views/components/settings.apps.vue:
|
||||
no-apps: "連携しているアプリケーションはありません"
|
||||
|
||||
desktop/views/components/settings.drive.vue:
|
||||
max: "中"
|
||||
in-use: "使用中"
|
||||
|
||||
desktop/views/components/settings.mute.vue:
|
||||
no-users: "ミュートしているユーザーはいません"
|
||||
|
||||
@@ -575,14 +821,18 @@ desktop/views/components/settings.profile.vue:
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
save: "保存"
|
||||
locked-account: "アカウントの保護"
|
||||
is-locked: "投稿を非公開にする"
|
||||
other: "その他"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
profile-updated: "プロフィールを更新しました"
|
||||
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
media-count: "{}つのメディア"
|
||||
poll: "投票"
|
||||
poll: "アンケート"
|
||||
|
||||
desktop/views/components/taskmanager.vue:
|
||||
title: "タスクマネージャ"
|
||||
@@ -590,22 +840,28 @@ desktop/views/components/taskmanager.vue:
|
||||
desktop/views/components/timeline.vue:
|
||||
home: "ホーム"
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
list: "リスト"
|
||||
|
||||
desktop/views/components/ui.header.vue:
|
||||
welcome-back: "おかえりなさい、"
|
||||
adjective: "さん"
|
||||
|
||||
desktop/views/components/ui.header.account.vue:
|
||||
profile: "プロフィール"
|
||||
drive: "ドライブ"
|
||||
favorites: "お気に入り"
|
||||
lists: "リスト"
|
||||
follow-requests: "フォロー申請"
|
||||
customize: "カスタマイズ"
|
||||
customize: "ホームのカスタマイズ"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
dark: "闇に飲まれる"
|
||||
|
||||
desktop/views/components/ui.header.nav.vue:
|
||||
home: "ホーム"
|
||||
deck: "デッキ"
|
||||
messaging: "メッセージ"
|
||||
game: "ゲーム"
|
||||
|
||||
@@ -626,6 +882,7 @@ desktop/views/components/received-follow-requests-window.vue:
|
||||
desktop/views/components/user-lists-window.vue:
|
||||
title: "リスト"
|
||||
create-list: "リストを作成"
|
||||
list-name: "リスト名"
|
||||
|
||||
desktop/views/components/user-preview.vue:
|
||||
notes: "投稿"
|
||||
@@ -645,6 +902,55 @@ desktop/views/components/window.vue:
|
||||
popout: "ポップアウト"
|
||||
close: "閉じる"
|
||||
|
||||
desktop/views/pages/admin/admin.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
drive: "ドライブ"
|
||||
users: "ユーザー"
|
||||
update: "更新"
|
||||
|
||||
desktop/views/pages/admin/admin.dashboard.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
all-users: "全てのユーザー"
|
||||
original-users: "このインスタンスのユーザー"
|
||||
all-notes: "全てのノート"
|
||||
original-notes: "このインスタンスのノート"
|
||||
invite: "招待"
|
||||
|
||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||
suspend-user: "ユーザーの凍結"
|
||||
suspend: "凍結"
|
||||
suspended: "凍結しました"
|
||||
|
||||
desktop/views/pages/admin/admin.unsuspend-user.vue:
|
||||
unsuspend-user: "ユーザーの凍結の解除"
|
||||
unsuspend: "凍結の解除"
|
||||
unsuspended: "凍結を解除しました"
|
||||
|
||||
desktop/views/pages/admin/admin.verify-user.vue:
|
||||
verify-user: "ユーザーの公式アカウント設定"
|
||||
verify: "公式アカウントにする"
|
||||
verified: "公式アカウントにしました"
|
||||
|
||||
desktop/views/pages/admin/admin.notes-chart.vue:
|
||||
title: "投稿"
|
||||
local: "ローカル"
|
||||
remote: "リモート"
|
||||
|
||||
desktop/views/pages/admin/admin.users-chart.vue:
|
||||
title: "ユーザー"
|
||||
local: "ローカル"
|
||||
remote: "リモート"
|
||||
|
||||
desktop/views/pages/deck/deck.tl-column.vue:
|
||||
is-media-only: "メディア投稿のみ"
|
||||
is-media-view: "メディアビュー"
|
||||
edit: "オプション"
|
||||
|
||||
desktop/views/pages/deck/deck.note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
|
||||
desktop/views/pages/welcome.vue:
|
||||
about: "詳しく..."
|
||||
gotit: "わかった"
|
||||
@@ -653,6 +959,7 @@ desktop/views/pages/welcome.vue:
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Misskey Drive"
|
||||
@@ -673,6 +980,16 @@ desktop/views/pages/selectdrive.vue:
|
||||
cancel: "キャンセル"
|
||||
upload: "PCからドライブにファイルをアップロード"
|
||||
|
||||
desktop/views/pages/search.vue:
|
||||
not-available: "検索機能を利用することができません。"
|
||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||
|
||||
desktop/views/pages/share.vue:
|
||||
share-with: "{}で共有"
|
||||
|
||||
desktop/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
|
||||
desktop/views/pages/user-list.users.vue:
|
||||
users: "ユーザー"
|
||||
add-user: "ユーザーを追加"
|
||||
@@ -688,7 +1005,7 @@ desktop/views/pages/user/user.friends.vue:
|
||||
loading: "読み込み中"
|
||||
no-users: "よく話すユーザーはいません"
|
||||
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
desktop/views/pages/user/user.vue:
|
||||
is-suspended: "このユーザーは凍結されています。"
|
||||
is-remote: "このユーザーはリモートユーザーです。"
|
||||
view-remote: "正確な情報を見る"
|
||||
@@ -709,6 +1026,14 @@ desktop/views/pages/user/user.profile.vue:
|
||||
mute: "ミュートする"
|
||||
muted: "ミュートしています"
|
||||
unmute: "ミュート解除"
|
||||
push-to-a-list: "リストに追加"
|
||||
list-pushed: "{user}を{list}に追加しました。"
|
||||
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
posts: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
is-bot: "このアカウントはBotです"
|
||||
|
||||
desktop/views/pages/user/user.timeline.vue:
|
||||
default: "投稿"
|
||||
@@ -724,7 +1049,7 @@ desktop/views/widgets/notifications.vue:
|
||||
settings: "通知の設定"
|
||||
|
||||
desktop/views/widgets/polls.vue:
|
||||
title: "投票"
|
||||
title: "アンケート"
|
||||
refresh: "他を見る"
|
||||
nothing: "ありません!"
|
||||
|
||||
@@ -779,6 +1104,14 @@ mobile/views/components/drive.file-detail.vue:
|
||||
hash: "ハッシュ (md5)"
|
||||
exif: "EXIF"
|
||||
|
||||
mobile/views/components/media-image.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
|
||||
mobile/views/components/media-video.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
|
||||
mobile/views/components/follow-button.vue:
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
@@ -842,12 +1175,16 @@ mobile/views/components/sub-note-content.vue:
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
media-count: "{}つのメディア"
|
||||
poll: "投票"
|
||||
poll: "アンケート"
|
||||
|
||||
mobile/views/components/timeline.vue:
|
||||
empty: "投稿がありません"
|
||||
load-more: "もっと"
|
||||
|
||||
mobile/views/components/ui.header.vue:
|
||||
welcome-back: "おかえりなさい、"
|
||||
adjective: "さん"
|
||||
|
||||
mobile/views/components/ui.nav.vue:
|
||||
timeline: "タイムライン"
|
||||
notifications: "通知"
|
||||
@@ -884,6 +1221,9 @@ mobile/views/pages/drive.vue:
|
||||
drive: "ドライブ"
|
||||
more: "もっと見る"
|
||||
|
||||
mobile/views/pages/signup.vue:
|
||||
lets-start: "📦 始めましょう"
|
||||
|
||||
mobile/views/pages/followers.vue:
|
||||
followers-of: "{}のフォロワー"
|
||||
|
||||
@@ -893,8 +1233,27 @@ mobile/views/pages/following.vue:
|
||||
mobile/views/pages/home.vue:
|
||||
home: "ホーム"
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
|
||||
mobile/views/pages/welcome.vue:
|
||||
signup: "新規登録"
|
||||
|
||||
mobile/views/pages/widgets.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||
add-widget: "追加"
|
||||
customization-tips: "カスタマイズのヒント"
|
||||
|
||||
mobile/views/pages/widgets/activity.vue:
|
||||
activity: "アクティビティ"
|
||||
|
||||
mobile/views/pages/share.vue:
|
||||
share-with: "{}で共有"
|
||||
|
||||
mobile/views/pages/messaging.vue:
|
||||
messaging: "メッセージ"
|
||||
|
||||
@@ -915,6 +1274,9 @@ mobile/views/pages/notifications.vue:
|
||||
notifications: "通知"
|
||||
read-all: "すべての通知を既読にしますか?"
|
||||
|
||||
mobile/views/pages/games/reversi.vue:
|
||||
reversi: "リバーシ"
|
||||
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
name: "名前"
|
||||
@@ -933,6 +1295,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
||||
mobile/views/pages/search.vue:
|
||||
search: "検索"
|
||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||
|
||||
mobile/views/pages/selectdrive.vue:
|
||||
select-file: "ファイルを選択"
|
||||
@@ -951,7 +1314,8 @@ mobile/views/pages/settings.vue:
|
||||
timeline: "タイムライン"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
||||
show-renoted-my-notes: "自分の投稿のRenoteを表示する"
|
||||
show-local-renotes: "ローカルの投稿のRenoteを表示する"
|
||||
post-style: "投稿の表示スタイル"
|
||||
post-style-standard: "標準"
|
||||
post-style-smart: "スマート"
|
||||
@@ -1023,11 +1387,21 @@ docs:
|
||||
properties: "プロパティ"
|
||||
endpoints:
|
||||
params: "パラメータ"
|
||||
no-params: "パラメータはありません"
|
||||
res: "レスポンス"
|
||||
require-credential: "このエンドポイントは認証情報が必須です。"
|
||||
require-permission: "このエンドポイントは{permission}の権限を必要とします。"
|
||||
has-limit: "レートリミットがあります。"
|
||||
duration-limit: "直近{duration}ミリ秒の間のこのエンドポイントへのリクエスト数の合計が{max}を超える場合はリクエストできません。"
|
||||
min-interval-limit: "前回のリクエストから{interval}ミリ秒経っていない場合はリクエストできません。"
|
||||
show-src: "このエンドポイントのソースコードも閲覧できます。"
|
||||
show-src-link: "コードをGitHubで見る"
|
||||
generated: "このドキュメントはAPI定義に基づき自動生成されています。"
|
||||
props:
|
||||
name: "名前"
|
||||
type: "型"
|
||||
optional: "オプション"
|
||||
description: "説明"
|
||||
yes: "はい"
|
||||
no: "いいえ"
|
||||
|
||||
|
||||
dev/views/index.vue:
|
||||
manage-apps: "アプリの管理"
|
||||
|
||||
476
locales/ko.yml
@@ -1,74 +1,210 @@
|
||||
---
|
||||
meta:
|
||||
lang: "日本語"
|
||||
lang: "한국어"
|
||||
divider: ""
|
||||
common:
|
||||
misskey: "A planet of fediverse"
|
||||
misskey: "A ⭐ of fediverse"
|
||||
about-title: "A ⭐ of fediverse."
|
||||
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
||||
about: "Misskey를 찾아 주셔서 감사합니다. Misskey은 지구에서 태어난 <b>분산 마이크로 블로그 SNS </b> 입니다. Fediverse (다양한 SNS로 구성되는 우주)에 존재하는 다른 SNS와 상호 연결되어 있습니다. 잠시 도시의 번잡함에서 벗어나 새로운 인터넷에 다이브 해 보지 않겠습니까."
|
||||
adblock:
|
||||
detected: "광고 차단기를 해제하십시오"
|
||||
warning: "<strong>Misskey는 광고를 게재하지 않습니다</strong> 그러나 광고를 차단하는 기능 기능을 사용할 경우 일부 기능을 사용할 수 없게 될 가능성이나 결함이 발생하는 경우가 있습니다."
|
||||
application-authorization: "앱의 연계"
|
||||
close: "닫기"
|
||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||
got-it: "알았습니다"
|
||||
customization-tips:
|
||||
title: "사용자 정의 팁"
|
||||
paragraph1: "홈 정의는 위젯을 추가 / 삭제하거나 드래그 앤 드롭하여 정렬 할 수 있습니다."
|
||||
paragraph2: "일부 위젯은 <strong>오른쪽 클릭</strong> 하여 모양을 변경할 수 있습니다."
|
||||
paragraph3: "위젯을 삭제하려면 헤더 <strong>\"휴지통\"</strong> 라고 쓰여진 영역으로 끌어다 놓습니다."
|
||||
paragraph4: "사용자 정의를 종료하려면 오른쪽 상단의 '완료' 를 클릭합니다."
|
||||
gotit: "Got it!"
|
||||
notification:
|
||||
file-uploaded: "파일이 업로드되었습니다"
|
||||
message-from: "{}씨로부터 메시지:"
|
||||
reversi-invited: "대결에 초대되어 있습니다"
|
||||
reversi-invited-by: "{}님"
|
||||
notified-by: "{}님"
|
||||
reply-from: "{}님으로부터 답글:"
|
||||
quoted-by: "{}씨가 인용:"
|
||||
time:
|
||||
unknown: "なぞのじかん"
|
||||
future: "未来"
|
||||
just_now: "たった今"
|
||||
seconds_ago: "{}秒前"
|
||||
minutes_ago: "{}分前"
|
||||
hours_ago: "{}時間前"
|
||||
days_ago: "{}日前"
|
||||
weeks_ago: "{}週間前"
|
||||
months_ago: "{}ヶ月前"
|
||||
years_ago: "{}年前"
|
||||
unknown: "수수께끼의 시간"
|
||||
future: "미래"
|
||||
just_now: "방금"
|
||||
seconds_ago: "{}초전"
|
||||
minutes_ago: "{}분전"
|
||||
hours_ago: "{}시간전"
|
||||
days_ago: "{}일전"
|
||||
weeks_ago: "{}주전"
|
||||
months_ago: "{}개월전"
|
||||
years_ago: "{}년전"
|
||||
month-and-day: "{month}월 {day}일"
|
||||
trash: "휴지통"
|
||||
weekday-short:
|
||||
sunday: "日"
|
||||
monday: "月"
|
||||
tuesday: "火"
|
||||
wednesday: "水"
|
||||
thursday: "木"
|
||||
friday: "金"
|
||||
saturday: "土"
|
||||
sunday: "일"
|
||||
monday: "월"
|
||||
tuesday: "화"
|
||||
wednesday: "수"
|
||||
thursday: "목"
|
||||
friday: "금"
|
||||
saturday: "토"
|
||||
weekday:
|
||||
sunday: "일요일"
|
||||
monday: "월요일"
|
||||
tuesday: "화요일"
|
||||
wednesday: "수요일"
|
||||
thursday: "목요일"
|
||||
friday: "금요일"
|
||||
saturday: "토요일"
|
||||
reactions:
|
||||
like: "いいね"
|
||||
love: "しゅき"
|
||||
laugh: "笑"
|
||||
hmm: "ふぅ~む"
|
||||
surprise: "わお"
|
||||
congrats: "おめでとう"
|
||||
angry: "おこ"
|
||||
confused: "こまこまのこまり"
|
||||
like: "좋네"
|
||||
love: "좋아"
|
||||
laugh: "크크"
|
||||
hmm: "음..."
|
||||
surprise: "와우"
|
||||
congrats: "받으세요"
|
||||
angry: "화냈어"
|
||||
confused: "곤란하고 있어"
|
||||
rip: "RIP"
|
||||
pudding: "Pudding"
|
||||
note-placeholders:
|
||||
a: "今どうしてる?"
|
||||
b: "何かありましたか?"
|
||||
c: "何をお考えですか?"
|
||||
d: "言いたいことは?"
|
||||
e: "ここに書いてください"
|
||||
f: "あなたが書くのを待っています..."
|
||||
delete: "削除"
|
||||
loading: "読み込み中"
|
||||
ok: "わかった"
|
||||
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
|
||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
||||
a: "지금 어떻게하고있어?"
|
||||
b: "뭔가 있었습니까?"
|
||||
c: "무엇을 생각하십니까?"
|
||||
d: "말하고 싶은 것은?"
|
||||
e: "여기에 써주십시오"
|
||||
f: "당신이 쓸 것을 당신 기다리고 있습니다..."
|
||||
search: "검색"
|
||||
delete: "삭제"
|
||||
loading: "로드 중"
|
||||
ok: "확인"
|
||||
update-available-title: "갱신이 있습니다"
|
||||
update-available: "Misskey의 새로운 버전이 있습니다 ({newer} 현재 {current}을 사용 중). 페이지를 다시로드하면 업데이트가 적용됩니다."
|
||||
my-token-regenerated: "당신의 토큰이 업데이트되어 있기 때문에 로그 아웃합니다."
|
||||
i-like-sushi: "나는(푸딩보다 오히려)스시가 좋아"
|
||||
show-reversi-board-labels: "리버시 보드의 행과 열 레이블을 표시"
|
||||
verified-user: "公式アカウント"
|
||||
disable-animated-mfm: "게시물의 문자 애니메이션을 비활성화 할"
|
||||
reversi:
|
||||
drawn: "무승부"
|
||||
my-turn: "당신의 차례입니다"
|
||||
opponent-turn: "상대의 차례입니다"
|
||||
turn-of: "{}의 차례입니다"
|
||||
past-turn-of: "{} 턴"
|
||||
won: "{} 승리"
|
||||
black: "검정"
|
||||
white: "흰색"
|
||||
total: "합계"
|
||||
this-turn: "{}턴눈"
|
||||
widgets:
|
||||
analog-clock: "アナログ時計"
|
||||
profile: "プロフィール"
|
||||
calendar: "カレンダー"
|
||||
timemachine: "カレンダー(タイムマシン)"
|
||||
activity: "アクティビティ"
|
||||
rss: "RSSリーダー"
|
||||
memo: "メモ"
|
||||
trends: "トレンド"
|
||||
photo-stream: "フォトストリーム"
|
||||
slideshow: "スライドショー"
|
||||
version: "バージョン"
|
||||
broadcast: "ブロードキャスト"
|
||||
notifications: "通知"
|
||||
users: "おすすめユーザー"
|
||||
polls: "投票"
|
||||
post-form: "投稿フォーム"
|
||||
messaging: "メッセージ"
|
||||
server: "サーバー情報"
|
||||
donation: "寄付のお願い"
|
||||
nav: "ナビゲーション"
|
||||
tips: "ヒント"
|
||||
analog-clock: "아날로그 시계"
|
||||
profile: "프로필"
|
||||
calendar: "달력"
|
||||
timemachine: "달력(타임머신)"
|
||||
activity: "활동"
|
||||
rss: "RSS 리더"
|
||||
memo: "끈끈이"
|
||||
trends: "트렌드"
|
||||
photo-stream: "포토 스트림"
|
||||
posts-monitor: "게시물 차트"
|
||||
slideshow: "슬라이드 쇼"
|
||||
version: "버전"
|
||||
broadcast: "브로드 캐스트"
|
||||
notifications: "통지"
|
||||
users: "추천 사용자"
|
||||
polls: "설문"
|
||||
post-form: "게시 양식"
|
||||
messaging: "메시지"
|
||||
server: "서버 정보"
|
||||
donation: "기부 요청"
|
||||
nav: "네비게이션"
|
||||
tips: "팁"
|
||||
hashtags: "해시 태그"
|
||||
deck:
|
||||
widgets: "위젯"
|
||||
home: "홈"
|
||||
local: "로컬"
|
||||
hybrid: "소셜"
|
||||
global: "글로벌"
|
||||
notifications: "통지"
|
||||
list: "목록"
|
||||
swap-left: "左に移動"
|
||||
swap-right: "右に移動"
|
||||
swap-up: "上に移動"
|
||||
swap-down: "下に移動"
|
||||
remove: "カラムを削除"
|
||||
add-column: "カラムを追加"
|
||||
rename: "名前を変更"
|
||||
stack-left: "左に重ねる"
|
||||
pop-right: "右に出す"
|
||||
auth/views/form.vue:
|
||||
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
|
||||
permission-ask: "このアプリは次の権限を要求しています:"
|
||||
account-read: "アカウントの情報を見る。"
|
||||
account-write: "アカウントの情報を操作する。"
|
||||
note-write: "投稿する。"
|
||||
like-write: "いいねしたりいいね解除する。"
|
||||
following-write: "フォローしたりフォロー解除する。"
|
||||
drive-read: "ドライブを見る。"
|
||||
drive-write: "ドライブを操作する。"
|
||||
notification-read: "通知を見る。"
|
||||
notification-write: "通知を操作する。"
|
||||
cancel: "취소"
|
||||
accept: "アクセスを許可"
|
||||
auth/views/index.vue:
|
||||
loading: "로드 중"
|
||||
denied: "アプリケーションの連携をキャンセルしました。"
|
||||
denied-paragraph: "このアプリがあなたのアカウントにアクセスすることはありません。"
|
||||
already-authorized: "このアプリは既に連携済みです"
|
||||
allowed: "アプリケーションの連携を許可しました"
|
||||
callback-url: "アプリケーションに戻っています"
|
||||
please-go-back: "アプリケーションに戻って、やっていってください。"
|
||||
error: "セッションが存在しません。"
|
||||
sign-in: "サインインしてください"
|
||||
common/views/components/games/reversi/reversi.vue:
|
||||
matching:
|
||||
waiting-for: "{}を待っています"
|
||||
cancel: "취소"
|
||||
common/views/components/games/reversi/reversi.game.vue:
|
||||
surrender: "기권"
|
||||
surrendered: "投了により"
|
||||
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||
looped-map: "루프 지도"
|
||||
can-put-everywhere: "どこでも置けるモード"
|
||||
common/views/components/games/reversi/reversi.index.vue:
|
||||
title: "Misskey Reversi"
|
||||
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
|
||||
invite: "초대"
|
||||
rule: "게임 방법"
|
||||
rule-desc: "リバーシは、相手と交互に石をボードに置いて、相手の石を挟んで自分の色に変えてゆき、最終的に残った石が多い方が勝ちというボードゲームです。"
|
||||
mode-invite: "招待"
|
||||
mode-invite-desc: "指定したユーザーと対戦するモードです。"
|
||||
invitations: "対局の招待があります!"
|
||||
my-games: "自分の対局"
|
||||
all-games: "みんなの対局"
|
||||
enter-username: "ユーザー名を入力してください"
|
||||
game-state:
|
||||
ended: "종료"
|
||||
playing: "진행중"
|
||||
common/views/components/games/reversi/reversi.room.vue:
|
||||
settings-of-the-game: "ゲームの設定"
|
||||
choose-map: "マップを選択"
|
||||
random: "ランダム"
|
||||
black-or-white: "先手/後手"
|
||||
black-is: "{}が黒"
|
||||
rules: "규칙"
|
||||
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||
looped-map: "루프 지도"
|
||||
can-put-everywhere: "どこでも置けるモード"
|
||||
settings-of-the-bot: "Botの設定"
|
||||
this-game-is-started-soon: "ゲームは数秒後に開始されます"
|
||||
waiting-for-other: "相手の準備が完了するのを待っています"
|
||||
waiting-for-me: "あなたの準備が完了するのを待っています"
|
||||
waiting-for-both: "준비중"
|
||||
cancel: "취소"
|
||||
ready: "준비 완료"
|
||||
cancel-ready: "준비 계속"
|
||||
common/views/components/connect-failed.vue:
|
||||
title: "サーバーに接続できません"
|
||||
description: "インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから{再度お試し}ください。"
|
||||
@@ -95,7 +231,7 @@ common/views/components/connect-failed.troubleshooter.vue:
|
||||
set-version: "バージョン指定"
|
||||
common/views/components/messaging.vue:
|
||||
search-user: "ユーザーを探す"
|
||||
you: "あなた"
|
||||
you: "당신"
|
||||
no-history: "履歴はありません"
|
||||
common/views/components/messaging-room.vue:
|
||||
empty: "このユーザーと話したことはありません"
|
||||
@@ -103,13 +239,15 @@ common/views/components/messaging-room.vue:
|
||||
no-history: "これより過去の履歴はありません"
|
||||
resize-form: "ドラッグしてフォームの広さを調整"
|
||||
new-message: "新しいメッセージがあります"
|
||||
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||
common/views/components/messaging-room.form.vue:
|
||||
input-message-here: "ここにメッセージを入力"
|
||||
send: "送信"
|
||||
send: "전송"
|
||||
attach-from-local: "PCからファイルを添付する"
|
||||
attach-from-drive: "ドライブからファイルを添付する"
|
||||
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||
common/views/components/messaging-room.message.vue:
|
||||
is-read: "既読"
|
||||
is-read: "읽음"
|
||||
deleted: "このメッセージは削除されました"
|
||||
common/views/components/nav.vue:
|
||||
about: "Misskeyについて"
|
||||
@@ -134,11 +272,11 @@ common/views/components/poll.vue:
|
||||
show-result: "結果を見る"
|
||||
voted: "投票済み"
|
||||
common/views/components/poll-editor.vue:
|
||||
no-only-one-choice: "投票には、選択肢が最低2つ必要です"
|
||||
no-only-one-choice: "アンケートには、選択肢が最低2つ必要です"
|
||||
choice-n: "選択肢{}"
|
||||
remove: "この選択肢を削除"
|
||||
add: "+選択肢を追加"
|
||||
destroy: "投票を破棄"
|
||||
destroy: "アンケートを破棄"
|
||||
common/views/components/reaction-picker.vue:
|
||||
choose-reaction: "リアクションを選択"
|
||||
common/views/components/signin.vue:
|
||||
@@ -147,6 +285,9 @@ common/views/components/signin.vue:
|
||||
token: "トークン"
|
||||
signing-in: "やってます..."
|
||||
signin: "サインイン"
|
||||
or: "または"
|
||||
signin-with-twitter: "Twitterでログイン"
|
||||
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||
common/views/components/signup.vue:
|
||||
username: "ユーザー名"
|
||||
checking: "確認しています..."
|
||||
@@ -198,19 +339,75 @@ common/views/widgets/broadcast.vue:
|
||||
no-broadcasts: "お知らせはありません"
|
||||
have-a-nice-day: "良い一日を!"
|
||||
next: "次"
|
||||
common/views/widgets/calendar.vue:
|
||||
year: "{}年"
|
||||
month: "{}月"
|
||||
day: "{}日"
|
||||
today: "今日:"
|
||||
this-month: "今月:"
|
||||
this-year: "今年:"
|
||||
common/views/widgets/donation.vue:
|
||||
title: "寄付のお願い"
|
||||
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
||||
common/views/widgets/photo-stream.vue:
|
||||
title: "フォトストリーム"
|
||||
no-photos: "写真はありません"
|
||||
common/views/widgets/posts-monitor.vue:
|
||||
title: "投稿チャート"
|
||||
toggle: "表示を切り替え"
|
||||
common/views/widgets/hashtags.vue:
|
||||
title: "ハッシュタグ"
|
||||
count: "{}人が投稿"
|
||||
empty: "トレンドなし"
|
||||
common/views/widgets/server.vue:
|
||||
title: "サーバー情報"
|
||||
toggle: "表示を切り替え"
|
||||
common/views/widgets/memo.vue:
|
||||
title: "メモ"
|
||||
title: "付箋"
|
||||
memo: "ここに書いて!"
|
||||
save: "保存"
|
||||
common/views/widgets/slideshow.vue:
|
||||
folder-customize-mode: "フォルダを指定するには、カスタマイズモードを終了してください"
|
||||
folder: "クリックしてフォルダを指定してください"
|
||||
no-image: "このフォルダには画像がありません"
|
||||
common/views/widgets/tips.vue:
|
||||
tips-line1: "<kbd>t</kbd>でタイムラインにフォーカスできます"
|
||||
tips-line2: "<kbd>p</kbd>または<kbd>n</kbd>で投稿フォームを開きます"
|
||||
tips-line3: "投稿フォームにはファイルをドラッグ&ドロップできます"
|
||||
tips-line4: "投稿フォームにクリップボードにある画像データをペーストできます"
|
||||
tips-line5: "ドライブにファイルをドラッグ&ドロップしてアップロードできます"
|
||||
tips-line6: "ドライブでファイルをドラッグしてフォルダ移動できます"
|
||||
tips-line7: "ドライブでフォルダをドラッグしてフォルダ移動できます"
|
||||
tips-line8: "ホームは設定からカスタマイズできます"
|
||||
tips-line9: "MisskeyはAGPLv3です"
|
||||
tips-line10: "タイムマシンウィジェットを利用すると、簡単に過去のタイムラインに遡れます"
|
||||
tips-line11: "投稿の ... をクリックして、投稿をユーザーページにピン留めできます"
|
||||
tips-line13: "投稿に添付したファイルは全てドライブに保存されます"
|
||||
tips-line14: "ホームのカスタマイズ中、ウィジェットを右クリックしてデザインを変更できます"
|
||||
tips-line17: "「**」でテキストを囲むと**強調表示**されます"
|
||||
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
|
||||
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
|
||||
tips-line21: "APIを利用してbotの開発なども行えます"
|
||||
tips-line23: "まゆかわいいよまゆ"
|
||||
tips-line24: "Misskeyは2014年にサービスを開始しました"
|
||||
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
||||
common/views/pages/follow.vue:
|
||||
signed-in-as: "{}としてサインイン中"
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-request: "フォロー申請"
|
||||
desktop:
|
||||
banner-crop-title: "バナーとして表示する部分を選択"
|
||||
banner: "バナー"
|
||||
uploading-banner: "新しいバナーをアップロードしています"
|
||||
banner-updated: "バナーを更新しました"
|
||||
choose-banner: "バナーにする画像を選択"
|
||||
avatar-crop-title: "アバターとして表示する部分を選択"
|
||||
avatar: "アバター"
|
||||
uploading-avatar: "新しいアバターをアップロードしています"
|
||||
avatar-updated: "アバターを更新しました"
|
||||
choose-avatar: "アバターにする画像を選択"
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Black ... Total"
|
||||
notes: "Blue ... Notes"
|
||||
@@ -246,6 +443,8 @@ desktop/views/components/drive.file.vue:
|
||||
banner: "バナー"
|
||||
contextmenu:
|
||||
rename: "名前を変更"
|
||||
mark-as-sensitive: "閲覧注意に設定"
|
||||
unmark-as-sensitive: "閲覧注意を解除"
|
||||
copy-url: "URLをコピー"
|
||||
download: "ダウンロード"
|
||||
else-files: "その他..."
|
||||
@@ -289,8 +488,14 @@ desktop/views/components/drive.vue:
|
||||
create-folder: "フォルダーを作成"
|
||||
upload: "ファイルをアップロード"
|
||||
url-upload: "URLからアップロード"
|
||||
desktop/views/components/media-image.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
desktop/views/components/media-video.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
desktop/views/components/follow-button.vue:
|
||||
unfollow: "フォロー中"
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-request: "フォロー申請"
|
||||
@@ -309,7 +514,7 @@ desktop/views/components/friends-maker.vue:
|
||||
refresh: "もっと見る"
|
||||
close: "閉じる"
|
||||
desktop/views/components/game-window.vue:
|
||||
game: "オセロ"
|
||||
game: "リバーシ"
|
||||
desktop/views/components/home.vue:
|
||||
done: "完了"
|
||||
add-widget: "ウィジェットを追加:"
|
||||
@@ -337,13 +542,19 @@ desktop/views/components/notes.note.vue:
|
||||
detail: "詳細"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
hide: "隠す"
|
||||
see-more: "もっと見る"
|
||||
desktop/views/components/notes.vue:
|
||||
error: "読み込みに失敗しました。"
|
||||
retry: "リトライ"
|
||||
load-more: "もっと読み込む"
|
||||
desktop/views/components/notifications.vue:
|
||||
more: "もっと見る"
|
||||
empty: "ありません!"
|
||||
desktop/views/components/post-form.vue:
|
||||
add-visible-user: "+ユーザーを追加"
|
||||
attach-location-information: "位置情報を添付する"
|
||||
hide-contents: "内容を隠す"
|
||||
reply-placeholder: "この投稿への返信..."
|
||||
quote-placeholder: "この投稿を引用..."
|
||||
submit: "投稿"
|
||||
@@ -359,9 +570,16 @@ desktop/views/components/post-form.vue:
|
||||
attach-media-from-local: "PCからメディアを添付"
|
||||
attach-media-from-drive: "ドライブからメディアを添付"
|
||||
attach-cancel: "添付取り消し"
|
||||
insert-a-kao: "v(‘ω’)v"
|
||||
create-poll: "投票を作成"
|
||||
insert-a-kao: "v('ω')v"
|
||||
create-poll: "アンケートを作成"
|
||||
text-remain: "残り{}文字"
|
||||
recent-tags: "最近"
|
||||
click-to-tagging: "クリックでタグ付け"
|
||||
visibility: "公開範囲"
|
||||
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||
error: "エラー"
|
||||
enter-username: "ユーザー名を入力してください"
|
||||
annotations: "内容への注釈 (オプション)"
|
||||
desktop/views/components/post-form-window.vue:
|
||||
note: "新規投稿"
|
||||
reply: "返信"
|
||||
@@ -402,13 +620,17 @@ desktop/views/components/settings.vue:
|
||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||
display: "デザインと表示"
|
||||
customize: "ホームをカスタマイズ"
|
||||
choose-wallpaper: "壁紙を選択"
|
||||
delete-wallpaper: "壁紙を削除"
|
||||
dark-mode: "ダークモード"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||
show-renoted-my-notes: "Renoteされた自分の投稿をタイムラインに表示する"
|
||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||
show-maps: "マップの自動展開"
|
||||
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
||||
sound: "サウンド"
|
||||
@@ -480,6 +702,9 @@ desktop/views/components/settings.api.vue:
|
||||
enter-password: "パスワードを入力してください"
|
||||
desktop/views/components/settings.apps.vue:
|
||||
no-apps: "連携しているアプリケーションはありません"
|
||||
desktop/views/components/settings.drive.vue:
|
||||
max: "中"
|
||||
in-use: "使用中"
|
||||
desktop/views/components/settings.mute.vue:
|
||||
no-users: "ミュートしているユーザーはいません"
|
||||
desktop/views/components/settings.password.vue:
|
||||
@@ -497,32 +722,41 @@ desktop/views/components/settings.profile.vue:
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
save: "保存"
|
||||
locked-account: "アカウントの保護"
|
||||
is-locked: "投稿を非公開にする"
|
||||
other: "その他"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
profile-updated: "プロフィールを更新しました"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
media-count: "{}つのメディア"
|
||||
poll: "投票"
|
||||
poll: "アンケート"
|
||||
desktop/views/components/taskmanager.vue:
|
||||
title: "タスクマネージャ"
|
||||
desktop/views/components/timeline.vue:
|
||||
home: "ホーム"
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
list: "リスト"
|
||||
desktop/views/components/ui.header.vue:
|
||||
welcome-back: "おかえりなさい、"
|
||||
adjective: "さん"
|
||||
desktop/views/components/ui.header.account.vue:
|
||||
profile: "プロフィール"
|
||||
drive: "ドライブ"
|
||||
favorites: "お気に入り"
|
||||
lists: "リスト"
|
||||
follow-requests: "フォロー申請"
|
||||
customize: "カスタマイズ"
|
||||
customize: "ホームのカスタマイズ"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
dark: "闇に飲まれる"
|
||||
desktop/views/components/ui.header.nav.vue:
|
||||
home: "ホーム"
|
||||
deck: "デッキ"
|
||||
messaging: "メッセージ"
|
||||
game: "ゲーム"
|
||||
desktop/views/components/ui.header.notifications.vue:
|
||||
@@ -538,6 +772,7 @@ desktop/views/components/received-follow-requests-window.vue:
|
||||
desktop/views/components/user-lists-window.vue:
|
||||
title: "リスト"
|
||||
create-list: "リストを作成"
|
||||
list-name: "リスト名"
|
||||
desktop/views/components/user-preview.vue:
|
||||
notes: "投稿"
|
||||
following: "フォロー"
|
||||
@@ -552,6 +787,33 @@ desktop/views/components/users-list-item.vue:
|
||||
desktop/views/components/window.vue:
|
||||
popout: "ポップアウト"
|
||||
close: "閉じる"
|
||||
desktop/views/pages/admin/admin.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
drive: "ドライブ"
|
||||
users: "ユーザー"
|
||||
update: "更新"
|
||||
desktop/views/pages/admin/admin.dashboard.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
all-users: "全てのユーザー"
|
||||
original-users: "このインスタンスのユーザー"
|
||||
all-notes: "全てのノート"
|
||||
original-notes: "このインスタンスのノート"
|
||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||
suspend-user: "ユーザーの凍結"
|
||||
suspend: "凍結"
|
||||
suspended: "凍結しました"
|
||||
desktop/views/pages/admin/admin.unsuspend-user.vue:
|
||||
unsuspend-user: "ユーザーの凍結の解除"
|
||||
unsuspend: "凍結の解除"
|
||||
unsuspended: "凍結を解除しました"
|
||||
desktop/views/pages/deck/deck.tl-column.vue:
|
||||
is-media-only: "メディア投稿のみ"
|
||||
is-media-view: "メディアビュー"
|
||||
edit: "オプション"
|
||||
desktop/views/pages/deck/deck.note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
desktop/views/pages/welcome.vue:
|
||||
about: "詳しく..."
|
||||
gotit: "わかった"
|
||||
@@ -560,6 +822,7 @@ desktop/views/pages/welcome.vue:
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Misskey Drive"
|
||||
desktop/views/pages/favorites.vue:
|
||||
@@ -574,6 +837,13 @@ desktop/views/pages/selectdrive.vue:
|
||||
ok: "決定"
|
||||
cancel: "キャンセル"
|
||||
upload: "PCからドライブにファイルをアップロード"
|
||||
desktop/views/pages/search.vue:
|
||||
not-available: "検索機能を利用することができません。"
|
||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||
desktop/views/pages/share.vue:
|
||||
share-with: "{}で共有"
|
||||
desktop/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
desktop/views/pages/user-list.users.vue:
|
||||
users: "ユーザー"
|
||||
add-user: "ユーザーを追加"
|
||||
@@ -586,7 +856,7 @@ desktop/views/pages/user/user.friends.vue:
|
||||
title: "よく話すユーザー"
|
||||
loading: "読み込み中"
|
||||
no-users: "よく話すユーザーはいません"
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
desktop/views/pages/user/user.vue:
|
||||
is-suspended: "このユーザーは凍結されています。"
|
||||
is-remote: "このユーザーはリモートユーザーです。"
|
||||
view-remote: "正確な情報を見る"
|
||||
@@ -604,6 +874,13 @@ desktop/views/pages/user/user.profile.vue:
|
||||
mute: "ミュートする"
|
||||
muted: "ミュートしています"
|
||||
unmute: "ミュート解除"
|
||||
push-to-a-list: "リストに追加"
|
||||
list-pushed: "{user}を{list}に追加しました。"
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
posts: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
is-bot: "このアカウントはBotです"
|
||||
desktop/views/pages/user/user.timeline.vue:
|
||||
default: "投稿"
|
||||
with-replies: "投稿と返信"
|
||||
@@ -615,7 +892,7 @@ desktop/views/widgets/notifications.vue:
|
||||
title: "通知"
|
||||
settings: "通知の設定"
|
||||
desktop/views/widgets/polls.vue:
|
||||
title: "投票"
|
||||
title: "アンケート"
|
||||
refresh: "他を見る"
|
||||
nothing: "ありません!"
|
||||
desktop/views/widgets/post-form.vue:
|
||||
@@ -660,8 +937,14 @@ mobile/views/components/drive.file-detail.vue:
|
||||
move: "移動"
|
||||
hash: "ハッシュ (md5)"
|
||||
exif: "EXIF"
|
||||
mobile/views/components/media-image.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
mobile/views/components/media-video.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
mobile/views/components/follow-button.vue:
|
||||
unfollow: "フォロー中"
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-request: "フォロー申請"
|
||||
@@ -714,10 +997,13 @@ mobile/views/components/sub-note-content.vue:
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
media-count: "{}つのメディア"
|
||||
poll: "投票"
|
||||
poll: "アンケート"
|
||||
mobile/views/components/timeline.vue:
|
||||
empty: "投稿がありません"
|
||||
load-more: "もっと"
|
||||
mobile/views/components/ui.header.vue:
|
||||
welcome-back: "おかえりなさい、"
|
||||
adjective: "さん"
|
||||
mobile/views/components/ui.nav.vue:
|
||||
timeline: "タイムライン"
|
||||
notifications: "通知"
|
||||
@@ -748,6 +1034,8 @@ mobile/views/pages/user-lists.vue:
|
||||
mobile/views/pages/drive.vue:
|
||||
drive: "ドライブ"
|
||||
more: "もっと見る"
|
||||
mobile/views/pages/signup.vue:
|
||||
lets-start: "📦 始めましょう"
|
||||
mobile/views/pages/followers.vue:
|
||||
followers-of: "{}のフォロワー"
|
||||
mobile/views/pages/following.vue:
|
||||
@@ -755,7 +1043,21 @@ mobile/views/pages/following.vue:
|
||||
mobile/views/pages/home.vue:
|
||||
home: "ホーム"
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
mobile/views/pages/welcome.vue:
|
||||
signup: "新規登録"
|
||||
mobile/views/pages/widgets.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||
add-widget: "追加"
|
||||
customization-tips: "カスタマイズのヒント"
|
||||
mobile/views/pages/widgets/activity.vue:
|
||||
activity: "アクティビティ"
|
||||
mobile/views/pages/share.vue:
|
||||
share-with: "{}で共有"
|
||||
mobile/views/pages/messaging.vue:
|
||||
messaging: "メッセージ"
|
||||
mobile/views/pages/messaging-room.vue:
|
||||
@@ -771,6 +1073,8 @@ mobile/views/pages/note.vue:
|
||||
mobile/views/pages/notifications.vue:
|
||||
notifications: "通知"
|
||||
read-all: "すべての通知を既読にしますか?"
|
||||
mobile/views/pages/games/reversi.vue:
|
||||
reversi: "リバーシ"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
name: "名前"
|
||||
@@ -788,6 +1092,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
||||
mobile/views/pages/search.vue:
|
||||
search: "検索"
|
||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||
mobile/views/pages/selectdrive.vue:
|
||||
select-file: "ファイルを選択"
|
||||
mobile/views/pages/settings.vue:
|
||||
@@ -804,7 +1109,8 @@ mobile/views/pages/settings.vue:
|
||||
timeline: "タイムライン"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
||||
show-renoted-my-notes: "自分の投稿のRenoteを表示する"
|
||||
show-local-renotes: "ローカルの投稿のRenoteを表示する"
|
||||
post-style: "投稿の表示スタイル"
|
||||
post-style-standard: "標準"
|
||||
post-style-smart: "スマート"
|
||||
@@ -868,11 +1174,19 @@ docs:
|
||||
properties: "プロパティ"
|
||||
endpoints:
|
||||
params: "パラメータ"
|
||||
no-params: "パラメータはありません"
|
||||
res: "レスポンス"
|
||||
require-credential: "このエンドポイントは認証情報が必須です。"
|
||||
require-permission: "このエンドポイントは{permission}の権限を必要とします。"
|
||||
has-limit: "レートリミットがあります。"
|
||||
duration-limit: "直近{duration}ミリ秒の間のこのエンドポイントへのリクエスト数の合計が{max}を超える場合はリクエストできません。"
|
||||
min-interval-limit: "前回のリクエストから{interval}ミリ秒経っていない場合はリクエストできません。"
|
||||
show-src: "このエンドポイントのソースコードも閲覧できます。"
|
||||
show-src-link: "コードをGitHubで見る"
|
||||
generated: "このドキュメントはAPI定義に基づき自動生成されています。"
|
||||
props:
|
||||
name: "名前"
|
||||
type: "型"
|
||||
optional: "オプション"
|
||||
description: "説明"
|
||||
yes: "はい"
|
||||
no: "いいえ"
|
||||
dev/views/index.vue:
|
||||
manage-apps: "アプリの管理"
|
||||
|
||||
378
locales/pl.yml
@@ -3,9 +3,31 @@ meta:
|
||||
lang: "język polski"
|
||||
divider: ""
|
||||
common:
|
||||
misskey: "Planeta Fediwersum"
|
||||
misskey: "⭐ Fediwersum"
|
||||
about-title: "⭐ Fediwersum"
|
||||
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
||||
about: "Dziękujemy za znalezienie Misskey. Misskey jest <b>zdecentralizowaną platformą mikroblogową</b> powstałą na Ziemi. Ponieważ działa ona w Fediwersum (uniwersum, w którego skład wchodzi wiele sieci społecznościowych), jest ona połączona z innymi platformami społecznościowymi. Spróbujesz odpocząć od zatłoczoneo miasta i zanurzyć się w nowym Internecie?"
|
||||
adblock:
|
||||
detected: "Spróbuj wyłączyć blokadę reklam."
|
||||
warning: "<strong>Misskey nie zawiera reklam</strong>, ale część funkcji może nie działać prawidłowo z włączonym blokowaniem reklam."
|
||||
application-authorization: "アプリの連携"
|
||||
close: "Zamknij"
|
||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||
got-it: "Rozumiem!"
|
||||
customization-tips:
|
||||
title: "Wskazówki o dostosowywaniu"
|
||||
paragraph1: "Dostosowywanie strony głównej pozwala na dodawanie, usuwanie, przeciąganie i zmienianie kolejności widżetów."
|
||||
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!"
|
||||
notification:
|
||||
file-uploaded: "Wysłano plik!"
|
||||
message-from: "Wiadomość od {}:"
|
||||
reversi-invited: "Zaproszono do gry"
|
||||
reversi-invited-by: "Zaproszono przez {}:"
|
||||
notified-by: "Powiadomiono przez {}:"
|
||||
reply-from: "Odpowiedź od {}:"
|
||||
quoted-by: "Zacytowano przez {}:"
|
||||
time:
|
||||
unknown: "nieznany"
|
||||
future: "w przyszłości"
|
||||
@@ -17,6 +39,8 @@ common:
|
||||
weeks_ago: "{} tyg. temu"
|
||||
months_ago: "{} mies. temu"
|
||||
years_ago: "{} lat temu"
|
||||
month-and-day: "{month}-{day}"
|
||||
trash: "Kosz"
|
||||
weekday-short:
|
||||
sunday: "N"
|
||||
monday: "Pn"
|
||||
@@ -25,6 +49,14 @@ common:
|
||||
thursday: "C"
|
||||
friday: "P"
|
||||
saturday: "S"
|
||||
weekday:
|
||||
sunday: "Niedziela"
|
||||
monday: "Poniedziałek"
|
||||
tuesday: "Wtorek"
|
||||
wednesday: "Środa"
|
||||
thursday: "Czwartek"
|
||||
friday: "Piątek"
|
||||
saturday: "Sobota"
|
||||
reactions:
|
||||
like: "Lubię"
|
||||
love: "Kocham"
|
||||
@@ -34,6 +66,7 @@ common:
|
||||
congrats: "Gratuluję!"
|
||||
angry: "Wściekły"
|
||||
confused: "Zmieszany"
|
||||
rip: "RIP"
|
||||
pudding: "Pudding"
|
||||
note-placeholders:
|
||||
a: "Co robisz?"
|
||||
@@ -42,11 +75,28 @@ common:
|
||||
d: "Czy masz coś do powiedzenia?"
|
||||
e: "Napisz coś tutaj!"
|
||||
f: "Czekamy, aż coś napiszesz."
|
||||
search: "Szukaj"
|
||||
delete: "Usuń"
|
||||
loading: "Ładowanie"
|
||||
ok: "OK"
|
||||
update-available-title: "Aktualizacja jest dostępna"
|
||||
update-available: "Nowa wersja Misskey jest dostępna ({newer}, obecna to {current}). Odśwież stronę, aby zastosować aktualizację."
|
||||
my-token-regenerated: "Twój token został wygenerowany. Zostaniesz wylogowany."
|
||||
i-like-sushi: "Wolę sushi od puddingu"
|
||||
show-reversi-board-labels: "Pokazuj podpisy wierszy i kolumn w Reversi"
|
||||
verified-user: "公式アカウント"
|
||||
disable-animated-mfm: "Wyłącz animowany tekst we wpisach"
|
||||
reversi:
|
||||
drawn: "Remis"
|
||||
my-turn: "Twoja kolej"
|
||||
opponent-turn: "Kolej na przeciwnika"
|
||||
turn-of: "Kolej na {}"
|
||||
past-turn-of: "Kolej {}"
|
||||
won: "{}の勝ち"
|
||||
black: "Czarny"
|
||||
white: "Biały"
|
||||
total: "Łącznie"
|
||||
this-turn: "Ruch {}"
|
||||
widgets:
|
||||
analog-clock: "Zegar analogowy"
|
||||
profile: "Profil"
|
||||
@@ -54,9 +104,10 @@ common:
|
||||
timemachine: "Kalendarz (wehikuł czasu)"
|
||||
activity: "Aktywność"
|
||||
rss: "Czytnik RSS"
|
||||
memo: "Notatki"
|
||||
memo: "Notatka"
|
||||
trends: "Na czasie"
|
||||
photo-stream: "Photostream"
|
||||
posts-monitor: "Wykres wpisów"
|
||||
slideshow: "Pokaz slajdów"
|
||||
version: "Wersja"
|
||||
broadcast: "Transmisja"
|
||||
@@ -69,6 +120,91 @@ common:
|
||||
donation: "Dotacje"
|
||||
nav: "Nawigacja"
|
||||
tips: "Wskazówki"
|
||||
hashtags: "Hashtagi"
|
||||
deck:
|
||||
widgets: "Widżety"
|
||||
home: "Strona główna"
|
||||
local: "Lokalne"
|
||||
hybrid: "Społeczność"
|
||||
global: "Globalne"
|
||||
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:
|
||||
share-access: "Czy chcesz <b>zezwolić</b> <i>{{ app.name }}</i> na dostęp do Twojego konta?"
|
||||
permission-ask: "Ta aplikacja wymaga następujących uprawnień:"
|
||||
account-read: "Wyświetlanie informacji o koncie:"
|
||||
account-write: "Modyfikowanie informacji o koncie:"
|
||||
note-write: "Publikacja."
|
||||
like-write: "Reagowanie na wpisy."
|
||||
following-write: "Śledzenie i cofanie śledzenia."
|
||||
drive-read: "Odczytywanie Twojego dysku."
|
||||
drive-write: "Wysyłanie i usuwanie plików na Twoim dysku."
|
||||
notification-read: "Odczytywanie Twoich powiadomień."
|
||||
notification-write: "Zarządzanie Twoimi powiadomieniami."
|
||||
cancel: "Anuluj"
|
||||
accept: "Przyznaj dostęp."
|
||||
auth/views/index.vue:
|
||||
loading: "Ładowanie"
|
||||
denied: "Odrzucono uwierzytelnianie aplikacji."
|
||||
denied-paragraph: "Ta aplikacja nie uzyska dostępu do Twojego konta."
|
||||
already-authorized: "Ta aplikacja została już uwierzytelniona."
|
||||
allowed: "アプリケーションの連携を許可しました"
|
||||
callback-url: "Powracam do aplikacji."
|
||||
please-go-back: "Wróć do aplikacji."
|
||||
error: "Sesja nie istnieje."
|
||||
sign-in: "Proszę zalogować się."
|
||||
common/views/components/games/reversi/reversi.vue:
|
||||
matching:
|
||||
waiting-for: "Oczekiwanie na {}"
|
||||
cancel: "Anuluj"
|
||||
common/views/components/games/reversi/reversi.game.vue:
|
||||
surrender: "投了"
|
||||
surrendered: "投了により"
|
||||
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||
looped-map: "ループマップ"
|
||||
can-put-everywhere: "どこでも置けるモード"
|
||||
common/views/components/games/reversi/reversi.index.vue:
|
||||
title: "Misskey Reversi"
|
||||
sub-title: "Zagraj w Reversi ze znajomymi!"
|
||||
invite: "Zaproś"
|
||||
rule: "Jak grać"
|
||||
rule-desc: "リバーシは、相手と交互に石をボードに置いて、相手の石を挟んで自分の色に変えてゆき、最終的に残った石が多い方が勝ちというボードゲームです。"
|
||||
mode-invite: "Zaproś"
|
||||
mode-invite-desc: "Zaproś użytkownika do gry."
|
||||
invitations: "Otrzymałeś(-aś) zaproszenie!"
|
||||
my-games: "Moje gry"
|
||||
all-games: "Wszystkie gry"
|
||||
enter-username: "Wprowadź nazwę użytkownika"
|
||||
game-state:
|
||||
ended: "Zakończono"
|
||||
playing: "W trakcie"
|
||||
common/views/components/games/reversi/reversi.room.vue:
|
||||
settings-of-the-game: "Ustawienia gry"
|
||||
choose-map: "Wybierz mapę"
|
||||
random: "Losowy"
|
||||
black-or-white: "Czarny/biały"
|
||||
black-is: "{}が黒"
|
||||
rules: "Zasady"
|
||||
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||
looped-map: "ループマップ"
|
||||
can-put-everywhere: "どこでも置けるモード"
|
||||
settings-of-the-bot: "Ustawienia bota"
|
||||
this-game-is-started-soon: "Gra rozpocznie się wkrótce"
|
||||
waiting-for-other: "相手の準備が完了するのを待っています"
|
||||
waiting-for-me: "あなたの準備が完了するのを待っています"
|
||||
waiting-for-both: "Oczekiwanie na Ciebie"
|
||||
cancel: "Anuluj"
|
||||
ready: "Gotowy"
|
||||
cancel-ready: "Cofnij „gotowy”"
|
||||
common/views/components/connect-failed.vue:
|
||||
title: "Nie udało się połączyć z serwerem"
|
||||
description: "Wystąpił problem z Twoim połączeniem z Internetem, lub z serwerem. {Spróbuj ponownie} wkrótce."
|
||||
@@ -103,11 +239,13 @@ common/views/components/messaging-room.vue:
|
||||
no-history: "Brak dalszej historii"
|
||||
resize-form: "Przeciągnij aby zmienić rozmiar"
|
||||
new-message: "Nowa wiadomość"
|
||||
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||
common/views/components/messaging-room.form.vue:
|
||||
input-message-here: "Wprowadź wiadomość tutaj"
|
||||
send: "Wyślij"
|
||||
attach-from-local: "Załącz pliki z komputera"
|
||||
attach-from-drive: "Załącz pliki z dysku"
|
||||
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||
common/views/components/messaging-room.message.vue:
|
||||
is-read: "Przeczytano"
|
||||
deleted: "Wiadomość została usunięta"
|
||||
@@ -134,11 +272,11 @@ common/views/components/poll.vue:
|
||||
show-result: "Pokaż wyniki"
|
||||
voted: "Zagłosowano"
|
||||
common/views/components/poll-editor.vue:
|
||||
no-only-one-choice: "Musisz wprowadzić dwie lub więcej opcji."
|
||||
no-only-one-choice: "Musisz wprowadzić przynajmniej dwie opcje."
|
||||
choice-n: "Opcja {}"
|
||||
remove: "Usuń tą opcję"
|
||||
add: "+ Dodaj opcję"
|
||||
destroy: "Usuń ankietę"
|
||||
destroy: "Usuń tę ankietę"
|
||||
common/views/components/reaction-picker.vue:
|
||||
choose-reaction: "Wybierz reakcję"
|
||||
common/views/components/signin.vue:
|
||||
@@ -147,6 +285,9 @@ common/views/components/signin.vue:
|
||||
token: "Token"
|
||||
signing-in: "Logowanie…"
|
||||
signin: "Zaloguj"
|
||||
or: "または"
|
||||
signin-with-twitter: "Zaloguj się za pomocą Twittera"
|
||||
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||
common/views/components/signup.vue:
|
||||
username: "Nazwa użytkownika"
|
||||
checking: "Sprawdzanie…"
|
||||
@@ -198,19 +339,75 @@ common/views/widgets/broadcast.vue:
|
||||
no-broadcasts: "Brak transmisji"
|
||||
have-a-nice-day: "Miłego dnia!"
|
||||
next: "Dalej"
|
||||
common/views/widgets/calendar.vue:
|
||||
year: "Rok {}"
|
||||
month: "Miesiąc {}"
|
||||
day: "Dzień {}"
|
||||
today: "Dzisiaj:"
|
||||
this-month: "Ten miesiąc:"
|
||||
this-year: "Ten rok:"
|
||||
common/views/widgets/donation.vue:
|
||||
title: "Dotacje"
|
||||
text: "Aby utrzymywać Misskey, płacimy za domenę, serwery i nie tylko… Nie zarabiamy na tym, więc byłoby nam miło, gdybyśmy uzyskali od Ciebie dotację. Jeżeli jesteś zainteresowany, skontaktuj się z {}. Dziękujemy za wsparcie!"
|
||||
common/views/widgets/photo-stream.vue:
|
||||
title: "Photostream"
|
||||
no-photos: "Brak zdjęć"
|
||||
common/views/widgets/posts-monitor.vue:
|
||||
title: "Wykres wpisów"
|
||||
toggle: "Przełącz widok"
|
||||
common/views/widgets/hashtags.vue:
|
||||
title: "Hashtagi"
|
||||
count: "Wspomniany przez {} użytkowników"
|
||||
empty: "Brak popularnych hashtagów"
|
||||
common/views/widgets/server.vue:
|
||||
title: "Informacje o serwerze"
|
||||
toggle: "Przełącz widok"
|
||||
common/views/widgets/memo.vue:
|
||||
title: "Notatki"
|
||||
title: "Notatka"
|
||||
memo: "Napisz tutaj!"
|
||||
save: "Zapisz"
|
||||
common/views/widgets/slideshow.vue:
|
||||
folder-customize-mode: "Aby określić katalog, opuść tryb dostosowywania"
|
||||
folder: "Naciśnij i wybierz folder"
|
||||
no-image: "Brak obrazu w tym folderze"
|
||||
common/views/widgets/tips.vue:
|
||||
tips-line1: "Możesz przejść do osi czasu używając <kbd>t</kbd>."
|
||||
tips-line2: "Otwórz formularz nowego wpisu używając <kbd>p</kbd> lub <kbd>n</kbd>."
|
||||
tips-line3: "Możesz przeciągnąć i upuścić pliki w formularzu wpisu."
|
||||
tips-line4: "投稿フォームにクリップボードにある画像データをペーストできます"
|
||||
tips-line5: "Możesz wysłać pliki przeciągając i upuszczając je w Dysku."
|
||||
tips-line6: "Możesz przenieść katalog przeciągając go w Dysku."
|
||||
tips-line7: "Możesz przenieść katalog przeciągając go w Dysku."
|
||||
tips-line8: "Strona główna może zostać dostosowana w ustawieniach."
|
||||
tips-line9: "Misskey jest dostępny na licencji AGPLv3."
|
||||
tips-line10: "タイムマシンウィジェットを利用すると、簡単に過去のタイムラインに遡れます"
|
||||
tips-line11: "Możesz przypiąć wpis na stronie użytkownika klikając na „…”"
|
||||
tips-line13: "投稿に添付したファイルは全てドライブに保存されます"
|
||||
tips-line14: "ホームのカスタマイズ中、ウィジェットを右クリックしてデザインを変更できます"
|
||||
tips-line17: "Oznaczenie tekstu **w ten sposób** wyróżni go."
|
||||
tips-line19: "Część okien może zostać odłączona z przeglądarki."
|
||||
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
|
||||
tips-line21: "Możesz też używać API, aby tworzyć boty."
|
||||
tips-line23: "まゆかわいいよまゆ"
|
||||
tips-line24: "Misskey zaczął działać w 2014."
|
||||
tips-line25: "Możesz otrzymywać powiadomienia nawet jeżeli Misskey nie jest otwarty w obsługiwanej przeglądarce."
|
||||
common/views/pages/follow.vue:
|
||||
signed-in-as: "Zalogowany jako {}"
|
||||
following: "Śledzisz"
|
||||
follow: "Śledź"
|
||||
request-pending: "Oczekiwanie na pozwolenie"
|
||||
follow-request: "Poproś o śledzenie"
|
||||
desktop:
|
||||
banner-crop-title: "バナーとして表示する部分を選択"
|
||||
banner: "Baner"
|
||||
uploading-banner: "Wysyłanie baneru"
|
||||
banner-updated: "Zmieniono baner"
|
||||
choose-banner: "Wybierz baner"
|
||||
avatar-crop-title: "Wybierz część obrazu, która zostanie użyta jako awatar"
|
||||
avatar: "Awatar"
|
||||
uploading-avatar: "Wysyłanie awatara"
|
||||
avatar-updated: "Wysłano awatar"
|
||||
choose-avatar: "Wybierz awatar"
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Czarny … Łącznie"
|
||||
notes: "Niebieski … Wpisy"
|
||||
@@ -246,6 +443,8 @@ desktop/views/components/drive.file.vue:
|
||||
banner: "Baner"
|
||||
contextmenu:
|
||||
rename: "Zmień nazwę"
|
||||
mark-as-sensitive: "Oznacz jako zawartość wrażliwą"
|
||||
unmark-as-sensitive: "Cofnij oznaczenie jako zawartość wrażliwą"
|
||||
copy-url: "Skopiuj adres"
|
||||
download: "Pobierz"
|
||||
else-files: "Inne"
|
||||
@@ -289,11 +488,17 @@ desktop/views/components/drive.vue:
|
||||
create-folder: "Utwórz katalog"
|
||||
upload: "Wyślij plik"
|
||||
url-upload: "Wyślij z adresu URL"
|
||||
desktop/views/components/media-image.vue:
|
||||
sensitive: "To jest zawartość NSFW"
|
||||
click-to-show: "Naciśnij aby wyświetlić"
|
||||
desktop/views/components/media-video.vue:
|
||||
sensitive: "To jest zawartość NSFW"
|
||||
click-to-show: "Naciśnij aby wyświetlić"
|
||||
desktop/views/components/follow-button.vue:
|
||||
unfollow: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-request: "フォロー申請"
|
||||
following: "Śledzisz"
|
||||
follow: "Śledź"
|
||||
request-pending: "Oczekiwanie na pozwolenie"
|
||||
follow-request: "Poproś o śledzenie"
|
||||
desktop/views/components/followers-window.vue:
|
||||
followers: "Śledzący"
|
||||
desktop/views/components/followers.vue:
|
||||
@@ -309,7 +514,7 @@ desktop/views/components/friends-maker.vue:
|
||||
refresh: "Więcej"
|
||||
close: "Zamknij"
|
||||
desktop/views/components/game-window.vue:
|
||||
game: "Othello"
|
||||
game: "Reversi"
|
||||
desktop/views/components/home.vue:
|
||||
done: "Wyślij"
|
||||
add-widget: "Dodaj widżet:"
|
||||
@@ -337,13 +542,19 @@ desktop/views/components/notes.note.vue:
|
||||
detail: "Pokaż szczegóły"
|
||||
private: "ten wpis jest prywatny"
|
||||
deleted: "ten wpis został usunięty"
|
||||
hide: "Zwiń"
|
||||
see-more: "Więcej"
|
||||
desktop/views/components/notes.vue:
|
||||
error: "Ładowanie nie powiodło się."
|
||||
retry: "Spróbuj ponownie"
|
||||
load-more: "Załaduj więcej"
|
||||
desktop/views/components/notifications.vue:
|
||||
more: "Więcej"
|
||||
empty: "Brak powiadomień"
|
||||
desktop/views/components/post-form.vue:
|
||||
add-visible-user: "+Dodaj użytkownika"
|
||||
attach-location-information: "Załącz informacje o lokalizacji"
|
||||
hide-contents: "Ukryj zawartość"
|
||||
reply-placeholder: "Odpowiedz na ten wpis…"
|
||||
quote-placeholder: "Zacytuj ten wpis…"
|
||||
submit: "Wyślij"
|
||||
@@ -359,9 +570,16 @@ desktop/views/components/post-form.vue:
|
||||
attach-media-from-local: "Załącz zawartość multimedialną z komputera"
|
||||
attach-media-from-drive: "Załącz zawartość multimedialną z dysku"
|
||||
attach-cancel: "Usuń załącznik"
|
||||
insert-a-kao: "v(‘ω’)v"
|
||||
insert-a-kao: "v('ω')v"
|
||||
create-poll: "Utwórz ankietę"
|
||||
text-remain: "pozostałe znaki: {}"
|
||||
recent-tags: "Ostatnie"
|
||||
click-to-tagging: "Naciśnij aby oznaczyć"
|
||||
visibility: "Widoczność"
|
||||
geolocation-alert: "Twoje urządzenie nie obsługuje geolokalizacji."
|
||||
error: "Bład"
|
||||
enter-username: "Wprowadź nazwę użytkownika…"
|
||||
annotations: "Treść ostrzeżenia (opcjonalnie)"
|
||||
desktop/views/components/post-form-window.vue:
|
||||
note: "Nowy wpis"
|
||||
reply: "Odpowiedz"
|
||||
@@ -402,13 +620,17 @@ desktop/views/components/settings.vue:
|
||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||
display: "Wygląd i wyświetlanie"
|
||||
customize: "Dostosuj stronę główną"
|
||||
choose-wallpaper: "Wybierz tło"
|
||||
delete-wallpaper: "Usuń tło"
|
||||
dark-mode: "Tryb ciemny"
|
||||
circle-icons: "Używaj okrągłych ikon"
|
||||
gradient-window-header: "Używaj gradientów na pasku tytułu okna"
|
||||
post-form-on-timeline: "Wyświetlaj formularz tworzenia wpisu w górnej części osi czasu"
|
||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||
show-reply-target: "Pokazuj cel odpowiedzi"
|
||||
show-my-renotes: "Pokazuj moje udostępnienia na osi czasu"
|
||||
show-renoted-my-notes: "Pokazuj udostępnienia moich wpisów na osi czasu"
|
||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||
show-maps: "Automatycznie pokazuj mapę"
|
||||
show-maps-desc: "Mapa będzie automatycznie rozwijana dla wpisów zawierających informacje o lokalizacji."
|
||||
sound: "Dźwięk"
|
||||
@@ -480,6 +702,9 @@ desktop/views/components/settings.api.vue:
|
||||
enter-password: "Wprowadź hasło"
|
||||
desktop/views/components/settings.apps.vue:
|
||||
no-apps: "Brak zautoryzowanych aplikacji"
|
||||
desktop/views/components/settings.drive.vue:
|
||||
max: "Maksymalnie"
|
||||
in-use: " w użyciu."
|
||||
desktop/views/components/settings.mute.vue:
|
||||
no-users: "Brak wyciszonych użytkowników"
|
||||
desktop/views/components/settings.password.vue:
|
||||
@@ -497,32 +722,41 @@ desktop/views/components/settings.profile.vue:
|
||||
description: "Opis"
|
||||
birthday: "Data urodzenia"
|
||||
save: "Aktualizuj profil"
|
||||
locked-account: "Zabezpiecz swoje konto"
|
||||
is-locked: "Uczyń wpis prywatnym"
|
||||
other: "Inne"
|
||||
is-bot: "To konto jest prowadzone przez bota"
|
||||
is-cat: "To konto jest prowadzone przez kota"
|
||||
profile-updated: "Zaktualizowano profil"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
private: "ten wpis jest prywatny"
|
||||
deleted: "ten wpis został usunięty"
|
||||
media-count: "{}zawartości multimedialnej"
|
||||
poll: "Ankiety"
|
||||
poll: "Ankieta"
|
||||
desktop/views/components/taskmanager.vue:
|
||||
title: "Menedżer zadań"
|
||||
desktop/views/components/timeline.vue:
|
||||
home: "Strona główna"
|
||||
local: "Lokalne"
|
||||
hybrid: "Społeczność"
|
||||
global: "Globalne"
|
||||
list: "Listy"
|
||||
desktop/views/components/ui.header.vue:
|
||||
welcome-back: "Witaj ponownie,"
|
||||
adjective: "さん"
|
||||
desktop/views/components/ui.header.account.vue:
|
||||
profile: "Twój profil"
|
||||
drive: "Dysk"
|
||||
favorites: "Ulubione"
|
||||
lists: "Listy"
|
||||
follow-requests: "フォロー申請"
|
||||
customize: "Dostosuj"
|
||||
follow-requests: "Prośby o śledzenie"
|
||||
customize: "Dostosuj stronę główną"
|
||||
settings: "Ustawienia"
|
||||
signout: "Wyloguj się"
|
||||
dark: "Sprowadź ciemność"
|
||||
desktop/views/components/ui.header.nav.vue:
|
||||
home: "Strona główna"
|
||||
deck: "Talia"
|
||||
messaging: "Wiadomości"
|
||||
game: "Gra"
|
||||
desktop/views/components/ui.header.notifications.vue:
|
||||
@@ -532,12 +766,13 @@ desktop/views/components/ui.header.post.vue:
|
||||
desktop/views/components/ui.header.search.vue:
|
||||
placeholder: "Szukaj"
|
||||
desktop/views/components/received-follow-requests-window.vue:
|
||||
title: "フォロー申請"
|
||||
accept: "承認"
|
||||
reject: "拒否"
|
||||
title: "Poproś o śledzenie"
|
||||
accept: "Zatwierdź"
|
||||
reject: "Odmów"
|
||||
desktop/views/components/user-lists-window.vue:
|
||||
title: "リスト"
|
||||
title: "Listy"
|
||||
create-list: "Utwórz listę"
|
||||
list-name: "Nazwa listy"
|
||||
desktop/views/components/user-preview.vue:
|
||||
notes: "Wpisy"
|
||||
following: "Śledzeni"
|
||||
@@ -552,6 +787,33 @@ desktop/views/components/users-list-item.vue:
|
||||
desktop/views/components/window.vue:
|
||||
popout: "Pop-out"
|
||||
close: "Zamknij"
|
||||
desktop/views/pages/admin/admin.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
drive: "ドライブ"
|
||||
users: "ユーザー"
|
||||
update: "更新"
|
||||
desktop/views/pages/admin/admin.dashboard.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
all-users: "全てのユーザー"
|
||||
original-users: "このインスタンスのユーザー"
|
||||
all-notes: "全てのノート"
|
||||
original-notes: "このインスタンスのノート"
|
||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||
suspend-user: "ユーザーの凍結"
|
||||
suspend: "凍結"
|
||||
suspended: "凍結しました"
|
||||
desktop/views/pages/admin/admin.unsuspend-user.vue:
|
||||
unsuspend-user: "ユーザーの凍結の解除"
|
||||
unsuspend: "凍結の解除"
|
||||
unsuspended: "凍結を解除しました"
|
||||
desktop/views/pages/deck/deck.tl-column.vue:
|
||||
is-media-only: "Tylko wpisy z zawartością multimedialną"
|
||||
is-media-view: "Widok multimediów"
|
||||
edit: "Opcje"
|
||||
desktop/views/pages/deck/deck.note.vue:
|
||||
reposted-by: "Udostępniono przez {}"
|
||||
private: "ten wpis jest prywatny"
|
||||
deleted: "ten wpis został usunięty"
|
||||
desktop/views/pages/welcome.vue:
|
||||
about: "O Misskey"
|
||||
gotit: "Rozumiem!"
|
||||
@@ -560,6 +822,7 @@ desktop/views/pages/welcome.vue:
|
||||
signin-button: "Zaloguj się"
|
||||
signup-button: "Zarejestruj się"
|
||||
timeline: "Oś czasu"
|
||||
powered-by-misskey: "Oparto o <b>Misskey</b>."
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Dysk Misskey"
|
||||
desktop/views/pages/favorites.vue:
|
||||
@@ -574,6 +837,13 @@ desktop/views/pages/selectdrive.vue:
|
||||
ok: "OK"
|
||||
cancel: "Anuluj"
|
||||
upload: "Wyślij pliki z Twojego komputera"
|
||||
desktop/views/pages/search.vue:
|
||||
not-available: "Funkcja wyszukiwania nie może zostać wykorzystywana."
|
||||
not-found: "Nie znaleziono wpisów zawierających „{}”"
|
||||
desktop/views/pages/share.vue:
|
||||
share-with: "Udostępnij z {}."
|
||||
desktop/views/pages/tag.vue:
|
||||
no-posts-found: "Nie znaleziono wpisów zawierających „{}”."
|
||||
desktop/views/pages/user-list.users.vue:
|
||||
users: "Użytkownicy"
|
||||
add-user: "Dodaj użytkownika"
|
||||
@@ -586,7 +856,7 @@ desktop/views/pages/user/user.friends.vue:
|
||||
title: "Najbardziej aktywni"
|
||||
loading: "Ładowanie"
|
||||
no-users: "Brak użytkowników"
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
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"
|
||||
@@ -604,6 +874,13 @@ desktop/views/pages/user/user.profile.vue:
|
||||
mute: "Wycisz"
|
||||
muted: "Wyciszyłeś"
|
||||
unmute: "Cofnij wyciszenie"
|
||||
push-to-a-list: "Dodaj do listy"
|
||||
list-pushed: "Dodałeś(-aś) {user} do {list}."
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
posts: "Wpisy"
|
||||
following: "Śledzeni"
|
||||
followers: "Śledzący"
|
||||
is-bot: "To konto jest botem"
|
||||
desktop/views/pages/user/user.timeline.vue:
|
||||
default: "Wpisy"
|
||||
with-replies: "Wpisy i odpowiedzi"
|
||||
@@ -660,11 +937,17 @@ mobile/views/components/drive.file-detail.vue:
|
||||
move: "Przenieś"
|
||||
hash: "Hash (md5)"
|
||||
exif: "EXIF"
|
||||
mobile/views/components/media-image.vue:
|
||||
sensitive: "To jest zawartość NSFW"
|
||||
click-to-show: "Naciśnij aby wyświetlić"
|
||||
mobile/views/components/media-video.vue:
|
||||
sensitive: "To jest zawartość NSFW"
|
||||
click-to-show: "Naciśnij aby wyświetlić"
|
||||
mobile/views/components/follow-button.vue:
|
||||
unfollow: "フォロー中"
|
||||
following: "Śledzisz"
|
||||
follow: "Śledź"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-request: "フォロー申請"
|
||||
request-pending: "Oczekiwanie na pozwolenie"
|
||||
follow-request: "Poproś o śledzenie"
|
||||
mobile/views/components/friends-maker.vue:
|
||||
title: "Zacznij śledzić ludzi takich jak Ty"
|
||||
empty: "Nie znaleziono podobnych użytkowników."
|
||||
@@ -718,11 +1001,14 @@ mobile/views/components/sub-note-content.vue:
|
||||
mobile/views/components/timeline.vue:
|
||||
empty: "Brak wpisów"
|
||||
load-more: "Więcej"
|
||||
mobile/views/components/ui.header.vue:
|
||||
welcome-back: "Witaj ponownie, "
|
||||
adjective: "さん"
|
||||
mobile/views/components/ui.nav.vue:
|
||||
timeline: "Oś czasu"
|
||||
notifications: "Powiadomienia"
|
||||
messaging: "Wiadomości"
|
||||
follow-requests: "フォロー申請"
|
||||
follow-requests: "Prośby o śledzenie"
|
||||
search: "Szukaj"
|
||||
drive: "Dysk"
|
||||
favorites: "Ulubione"
|
||||
@@ -748,6 +1034,8 @@ mobile/views/pages/user-lists.vue:
|
||||
mobile/views/pages/drive.vue:
|
||||
drive: "Dysk"
|
||||
more: "Załaduj więcej"
|
||||
mobile/views/pages/signup.vue:
|
||||
lets-start: "Rozpocznijmy! 📦"
|
||||
mobile/views/pages/followers.vue:
|
||||
followers-of: "Śledzący {}"
|
||||
mobile/views/pages/following.vue:
|
||||
@@ -755,15 +1043,29 @@ mobile/views/pages/following.vue:
|
||||
mobile/views/pages/home.vue:
|
||||
home: "Strona główna"
|
||||
local: "Lokalne"
|
||||
hybrid: "Społeczność"
|
||||
global: "Globalne"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "Nie znaleziono wpisów zawierających „{}”."
|
||||
mobile/views/pages/welcome.vue:
|
||||
signup: "Zarejestruj się"
|
||||
mobile/views/pages/widgets.vue:
|
||||
dashboard: "Kokpit"
|
||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||
add-widget: "Dodaj"
|
||||
customization-tips: "カスタマイズのヒント"
|
||||
mobile/views/pages/widgets/activity.vue:
|
||||
activity: "Aktywność"
|
||||
mobile/views/pages/share.vue:
|
||||
share-with: "Udostępnij z {}."
|
||||
mobile/views/pages/messaging.vue:
|
||||
messaging: "Wiadomości"
|
||||
mobile/views/pages/messaging-room.vue:
|
||||
messaging: "Wiadomości"
|
||||
mobile/views/pages/received-follow-requests.vue:
|
||||
title: "フォロー申請"
|
||||
accept: "承認"
|
||||
reject: "拒否"
|
||||
title: "Prośby o śledzenie"
|
||||
accept: "Zatwierdź"
|
||||
reject: "Odmów"
|
||||
mobile/views/pages/note.vue:
|
||||
title: "Wpis"
|
||||
prev: "Poprzedni wpis"
|
||||
@@ -771,6 +1073,8 @@ mobile/views/pages/note.vue:
|
||||
mobile/views/pages/notifications.vue:
|
||||
notifications: "Powiadomienia"
|
||||
read-all: "Czy na pewno chcesz oznaczyć wszystkie powiadomienia jako przeczytane?"
|
||||
mobile/views/pages/games/reversi.vue:
|
||||
reversi: "Reversi"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "Profil"
|
||||
name: "Nazwa"
|
||||
@@ -788,6 +1092,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
||||
mobile/views/pages/search.vue:
|
||||
search: "Szukaj"
|
||||
empty: "Nie znaleziono wpisów zawierających '{}'"
|
||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||
mobile/views/pages/selectdrive.vue:
|
||||
select-file: "Wybierz plik"
|
||||
mobile/views/pages/settings.vue:
|
||||
@@ -804,7 +1109,8 @@ mobile/views/pages/settings.vue:
|
||||
timeline: "Oś czasu"
|
||||
show-reply-target: "Pokazuj cel odpowiedzi"
|
||||
show-my-renotes: "Pokazuj moje udostępnienia"
|
||||
show-renoted-my-notes: "Pokazuj udostępnienia moich wpisów"
|
||||
show-renoted-my-notes: "自分の投稿のRenoteを表示する"
|
||||
show-local-renotes: "ローカルの投稿のRenoteを表示する"
|
||||
post-style: "Styl wpisów"
|
||||
post-style-standard: "Standardowy"
|
||||
post-style-smart: "Inteligentny"
|
||||
@@ -868,11 +1174,19 @@ docs:
|
||||
properties: "Właściwości"
|
||||
endpoints:
|
||||
params: "Parametry"
|
||||
no-params: "Brak parametrów."
|
||||
res: "Odpowiedź"
|
||||
require-credential: "Punkt końcowy wymaga informacji o uwierzytelnieniu."
|
||||
require-permission: "Ten punkt końcowy wymaga uprawnienia {permission}."
|
||||
has-limit: "Istnieje limit częstotliwości."
|
||||
duration-limit: "直近{duration}ミリ秒の間のこのエンドポイントへのリクエスト数の合計が{max}を超える場合はリクエストできません。"
|
||||
min-interval-limit: "Nie możesz wykonać żądania przed upłynięciem {interval} od ostatniego żądania."
|
||||
show-src: "Możesz zobaczyć kod źródłowy tego punktu końcowego."
|
||||
show-src-link: "Zobacz kod na GitHubie"
|
||||
generated: "このドキュメントはAPI定義に基づき自動生成されています。"
|
||||
props:
|
||||
name: "Nazwa"
|
||||
type: "Rodzaj"
|
||||
optional: "Nieobowiązkowy"
|
||||
description: "Opis"
|
||||
yes: "Tak"
|
||||
no: "Nie"
|
||||
dev/views/index.vue:
|
||||
manage-apps: "Zarządzaj aplikacjami"
|
||||
|
||||
356
locales/pt.yml
@@ -3,9 +3,31 @@ meta:
|
||||
lang: "Português"
|
||||
divider: ""
|
||||
common:
|
||||
misskey: "A planet of fediverse"
|
||||
misskey: "A ⭐ of fediverse"
|
||||
about-title: "A ⭐ of fediverse."
|
||||
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
||||
adblock:
|
||||
detected: "広告ブロッカーを無効にしてください"
|
||||
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
||||
application-authorization: "アプリの連携"
|
||||
close: "閉じる"
|
||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||
got-it: "わかった"
|
||||
customization-tips:
|
||||
title: "カスタマイズのヒント"
|
||||
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
|
||||
paragraph2: "一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。"
|
||||
paragraph3: "ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。"
|
||||
paragraph4: "カスタマイズを終了するには、右上の「完了」をクリックします。"
|
||||
gotit: "Got it!"
|
||||
notification:
|
||||
file-uploaded: "ファイルがアップロードされました"
|
||||
message-from: "{}さんからメッセージ:"
|
||||
reversi-invited: "対局への招待があります"
|
||||
reversi-invited-by: "{}さんから"
|
||||
notified-by: "{}さんから"
|
||||
reply-from: "{}さんから返信:"
|
||||
quoted-by: "{}さんが引用:"
|
||||
time:
|
||||
unknown: "なぞのじかん"
|
||||
future: "未来"
|
||||
@@ -17,6 +39,8 @@ common:
|
||||
weeks_ago: "{}週間前"
|
||||
months_ago: "{}ヶ月前"
|
||||
years_ago: "{}年前"
|
||||
month-and-day: "{month}月 {day}日"
|
||||
trash: "ゴミ箱"
|
||||
weekday-short:
|
||||
sunday: "日"
|
||||
monday: "月"
|
||||
@@ -25,6 +49,14 @@ common:
|
||||
thursday: "木"
|
||||
friday: "金"
|
||||
saturday: "土"
|
||||
weekday:
|
||||
sunday: "日曜日"
|
||||
monday: "月曜日"
|
||||
tuesday: "火曜日"
|
||||
wednesday: "水曜日"
|
||||
thursday: "木曜日"
|
||||
friday: "金曜日"
|
||||
saturday: "土曜日"
|
||||
reactions:
|
||||
like: "いいね"
|
||||
love: "しゅき"
|
||||
@@ -34,6 +66,7 @@ common:
|
||||
congrats: "おめでとう"
|
||||
angry: "おこ"
|
||||
confused: "こまこまのこまり"
|
||||
rip: "RIP"
|
||||
pudding: "Pudding"
|
||||
note-placeholders:
|
||||
a: "今どうしてる?"
|
||||
@@ -42,11 +75,28 @@ common:
|
||||
d: "言いたいことは?"
|
||||
e: "ここに書いてください"
|
||||
f: "あなたが書くのを待っています..."
|
||||
search: "検索"
|
||||
delete: "削除"
|
||||
loading: "読み込み中"
|
||||
ok: "わかった"
|
||||
update-available-title: "更新があります"
|
||||
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
|
||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||
verified-user: "公式アカウント"
|
||||
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||
reversi:
|
||||
drawn: "引き分け"
|
||||
my-turn: "あなたのターンです"
|
||||
opponent-turn: "相手のターンです"
|
||||
turn-of: "{}のターンです"
|
||||
past-turn-of: "{}のターン"
|
||||
won: "{}の勝ち"
|
||||
black: "黒"
|
||||
white: "白"
|
||||
total: "合計"
|
||||
this-turn: "{}ターン目"
|
||||
widgets:
|
||||
analog-clock: "アナログ時計"
|
||||
profile: "プロフィール"
|
||||
@@ -54,21 +104,107 @@ common:
|
||||
timemachine: "カレンダー(タイムマシン)"
|
||||
activity: "アクティビティ"
|
||||
rss: "RSSリーダー"
|
||||
memo: "メモ"
|
||||
memo: "付箋"
|
||||
trends: "トレンド"
|
||||
photo-stream: "フォトストリーム"
|
||||
posts-monitor: "投稿チャート"
|
||||
slideshow: "スライドショー"
|
||||
version: "バージョン"
|
||||
broadcast: "ブロードキャスト"
|
||||
notifications: "通知"
|
||||
users: "おすすめユーザー"
|
||||
polls: "投票"
|
||||
polls: "アンケート"
|
||||
post-form: "投稿フォーム"
|
||||
messaging: "メッセージ"
|
||||
server: "サーバー情報"
|
||||
donation: "寄付のお願い"
|
||||
nav: "ナビゲーション"
|
||||
tips: "ヒント"
|
||||
hashtags: "ハッシュタグ"
|
||||
deck:
|
||||
widgets: "ウィジェット"
|
||||
home: "ホーム"
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
notifications: "通知"
|
||||
list: "リスト"
|
||||
swap-left: "左に移動"
|
||||
swap-right: "右に移動"
|
||||
swap-up: "上に移動"
|
||||
swap-down: "下に移動"
|
||||
remove: "カラムを削除"
|
||||
add-column: "カラムを追加"
|
||||
rename: "名前を変更"
|
||||
stack-left: "左に重ねる"
|
||||
pop-right: "右に出す"
|
||||
auth/views/form.vue:
|
||||
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
|
||||
permission-ask: "このアプリは次の権限を要求しています:"
|
||||
account-read: "アカウントの情報を見る。"
|
||||
account-write: "アカウントの情報を操作する。"
|
||||
note-write: "投稿する。"
|
||||
like-write: "いいねしたりいいね解除する。"
|
||||
following-write: "フォローしたりフォロー解除する。"
|
||||
drive-read: "ドライブを見る。"
|
||||
drive-write: "ドライブを操作する。"
|
||||
notification-read: "通知を見る。"
|
||||
notification-write: "通知を操作する。"
|
||||
cancel: "キャンセル"
|
||||
accept: "アクセスを許可"
|
||||
auth/views/index.vue:
|
||||
loading: "読み込み中"
|
||||
denied: "アプリケーションの連携をキャンセルしました。"
|
||||
denied-paragraph: "このアプリがあなたのアカウントにアクセスすることはありません。"
|
||||
already-authorized: "このアプリは既に連携済みです"
|
||||
allowed: "アプリケーションの連携を許可しました"
|
||||
callback-url: "アプリケーションに戻っています"
|
||||
please-go-back: "アプリケーションに戻って、やっていってください。"
|
||||
error: "セッションが存在しません。"
|
||||
sign-in: "サインインしてください"
|
||||
common/views/components/games/reversi/reversi.vue:
|
||||
matching:
|
||||
waiting-for: "{}を待っています"
|
||||
cancel: "キャンセル"
|
||||
common/views/components/games/reversi/reversi.game.vue:
|
||||
surrender: "投了"
|
||||
surrendered: "投了により"
|
||||
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||
looped-map: "ループマップ"
|
||||
can-put-everywhere: "どこでも置けるモード"
|
||||
common/views/components/games/reversi/reversi.index.vue:
|
||||
title: "Misskey Reversi"
|
||||
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
|
||||
invite: "招待"
|
||||
rule: "遊び方"
|
||||
rule-desc: "リバーシは、相手と交互に石をボードに置いて、相手の石を挟んで自分の色に変えてゆき、最終的に残った石が多い方が勝ちというボードゲームです。"
|
||||
mode-invite: "招待"
|
||||
mode-invite-desc: "指定したユーザーと対戦するモードです。"
|
||||
invitations: "対局の招待があります!"
|
||||
my-games: "自分の対局"
|
||||
all-games: "みんなの対局"
|
||||
enter-username: "ユーザー名を入力してください"
|
||||
game-state:
|
||||
ended: "終了"
|
||||
playing: "進行中"
|
||||
common/views/components/games/reversi/reversi.room.vue:
|
||||
settings-of-the-game: "ゲームの設定"
|
||||
choose-map: "マップを選択"
|
||||
random: "ランダム"
|
||||
black-or-white: "先手/後手"
|
||||
black-is: "{}が黒"
|
||||
rules: "ルール"
|
||||
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||
looped-map: "ループマップ"
|
||||
can-put-everywhere: "どこでも置けるモード"
|
||||
settings-of-the-bot: "Botの設定"
|
||||
this-game-is-started-soon: "ゲームは数秒後に開始されます"
|
||||
waiting-for-other: "相手の準備が完了するのを待っています"
|
||||
waiting-for-me: "あなたの準備が完了するのを待っています"
|
||||
waiting-for-both: "準備中"
|
||||
cancel: "キャンセル"
|
||||
ready: "準備完了"
|
||||
cancel-ready: "準備続行"
|
||||
common/views/components/connect-failed.vue:
|
||||
title: "サーバーに接続できません"
|
||||
description: "インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから{再度お試し}ください。"
|
||||
@@ -103,11 +239,13 @@ common/views/components/messaging-room.vue:
|
||||
no-history: "これより過去の履歴はありません"
|
||||
resize-form: "ドラッグしてフォームの広さを調整"
|
||||
new-message: "新しいメッセージがあります"
|
||||
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||
common/views/components/messaging-room.form.vue:
|
||||
input-message-here: "ここにメッセージを入力"
|
||||
send: "送信"
|
||||
attach-from-local: "PCからファイルを添付する"
|
||||
attach-from-drive: "ドライブからファイルを添付する"
|
||||
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||
common/views/components/messaging-room.message.vue:
|
||||
is-read: "既読"
|
||||
deleted: "このメッセージは削除されました"
|
||||
@@ -134,11 +272,11 @@ common/views/components/poll.vue:
|
||||
show-result: "結果を見る"
|
||||
voted: "投票済み"
|
||||
common/views/components/poll-editor.vue:
|
||||
no-only-one-choice: "投票には、選択肢が最低2つ必要です"
|
||||
no-only-one-choice: "アンケートには、選択肢が最低2つ必要です"
|
||||
choice-n: "選択肢{}"
|
||||
remove: "この選択肢を削除"
|
||||
add: "+選択肢を追加"
|
||||
destroy: "投票を破棄"
|
||||
destroy: "アンケートを破棄"
|
||||
common/views/components/reaction-picker.vue:
|
||||
choose-reaction: "リアクションを選択"
|
||||
common/views/components/signin.vue:
|
||||
@@ -147,6 +285,9 @@ common/views/components/signin.vue:
|
||||
token: "トークン"
|
||||
signing-in: "やってます..."
|
||||
signin: "サインイン"
|
||||
or: "または"
|
||||
signin-with-twitter: "Twitterでログイン"
|
||||
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||
common/views/components/signup.vue:
|
||||
username: "ユーザー名"
|
||||
checking: "確認しています..."
|
||||
@@ -198,19 +339,75 @@ common/views/widgets/broadcast.vue:
|
||||
no-broadcasts: "お知らせはありません"
|
||||
have-a-nice-day: "良い一日を!"
|
||||
next: "次"
|
||||
common/views/widgets/calendar.vue:
|
||||
year: "{}年"
|
||||
month: "{}月"
|
||||
day: "{}日"
|
||||
today: "今日:"
|
||||
this-month: "今月:"
|
||||
this-year: "今年:"
|
||||
common/views/widgets/donation.vue:
|
||||
title: "寄付のお願い"
|
||||
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
||||
common/views/widgets/photo-stream.vue:
|
||||
title: "フォトストリーム"
|
||||
no-photos: "写真はありません"
|
||||
common/views/widgets/posts-monitor.vue:
|
||||
title: "投稿チャート"
|
||||
toggle: "表示を切り替え"
|
||||
common/views/widgets/hashtags.vue:
|
||||
title: "ハッシュタグ"
|
||||
count: "{}人が投稿"
|
||||
empty: "トレンドなし"
|
||||
common/views/widgets/server.vue:
|
||||
title: "サーバー情報"
|
||||
toggle: "表示を切り替え"
|
||||
common/views/widgets/memo.vue:
|
||||
title: "メモ"
|
||||
title: "付箋"
|
||||
memo: "ここに書いて!"
|
||||
save: "保存"
|
||||
common/views/widgets/slideshow.vue:
|
||||
folder-customize-mode: "フォルダを指定するには、カスタマイズモードを終了してください"
|
||||
folder: "クリックしてフォルダを指定してください"
|
||||
no-image: "このフォルダには画像がありません"
|
||||
common/views/widgets/tips.vue:
|
||||
tips-line1: "<kbd>t</kbd>でタイムラインにフォーカスできます"
|
||||
tips-line2: "<kbd>p</kbd>または<kbd>n</kbd>で投稿フォームを開きます"
|
||||
tips-line3: "投稿フォームにはファイルをドラッグ&ドロップできます"
|
||||
tips-line4: "投稿フォームにクリップボードにある画像データをペーストできます"
|
||||
tips-line5: "ドライブにファイルをドラッグ&ドロップしてアップロードできます"
|
||||
tips-line6: "ドライブでファイルをドラッグしてフォルダ移動できます"
|
||||
tips-line7: "ドライブでフォルダをドラッグしてフォルダ移動できます"
|
||||
tips-line8: "ホームは設定からカスタマイズできます"
|
||||
tips-line9: "MisskeyはAGPLv3です"
|
||||
tips-line10: "タイムマシンウィジェットを利用すると、簡単に過去のタイムラインに遡れます"
|
||||
tips-line11: "投稿の ... をクリックして、投稿をユーザーページにピン留めできます"
|
||||
tips-line13: "投稿に添付したファイルは全てドライブに保存されます"
|
||||
tips-line14: "ホームのカスタマイズ中、ウィジェットを右クリックしてデザインを変更できます"
|
||||
tips-line17: "「**」でテキストを囲むと**強調表示**されます"
|
||||
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
|
||||
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
|
||||
tips-line21: "APIを利用してbotの開発なども行えます"
|
||||
tips-line23: "まゆかわいいよまゆ"
|
||||
tips-line24: "Misskeyは2014年にサービスを開始しました"
|
||||
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
||||
common/views/pages/follow.vue:
|
||||
signed-in-as: "{}としてサインイン中"
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-request: "フォロー申請"
|
||||
desktop:
|
||||
banner-crop-title: "バナーとして表示する部分を選択"
|
||||
banner: "バナー"
|
||||
uploading-banner: "新しいバナーをアップロードしています"
|
||||
banner-updated: "バナーを更新しました"
|
||||
choose-banner: "バナーにする画像を選択"
|
||||
avatar-crop-title: "アバターとして表示する部分を選択"
|
||||
avatar: "アバター"
|
||||
uploading-avatar: "新しいアバターをアップロードしています"
|
||||
avatar-updated: "アバターを更新しました"
|
||||
choose-avatar: "アバターにする画像を選択"
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Black ... Total"
|
||||
notes: "Blue ... Notes"
|
||||
@@ -246,6 +443,8 @@ desktop/views/components/drive.file.vue:
|
||||
banner: "バナー"
|
||||
contextmenu:
|
||||
rename: "名前を変更"
|
||||
mark-as-sensitive: "閲覧注意に設定"
|
||||
unmark-as-sensitive: "閲覧注意を解除"
|
||||
copy-url: "URLをコピー"
|
||||
download: "ダウンロード"
|
||||
else-files: "その他..."
|
||||
@@ -289,8 +488,14 @@ desktop/views/components/drive.vue:
|
||||
create-folder: "フォルダーを作成"
|
||||
upload: "ファイルをアップロード"
|
||||
url-upload: "URLからアップロード"
|
||||
desktop/views/components/media-image.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
desktop/views/components/media-video.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
desktop/views/components/follow-button.vue:
|
||||
unfollow: "フォロー中"
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-request: "フォロー申請"
|
||||
@@ -309,7 +514,7 @@ desktop/views/components/friends-maker.vue:
|
||||
refresh: "もっと見る"
|
||||
close: "閉じる"
|
||||
desktop/views/components/game-window.vue:
|
||||
game: "オセロ"
|
||||
game: "リバーシ"
|
||||
desktop/views/components/home.vue:
|
||||
done: "完了"
|
||||
add-widget: "ウィジェットを追加:"
|
||||
@@ -337,13 +542,19 @@ desktop/views/components/notes.note.vue:
|
||||
detail: "詳細"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
hide: "隠す"
|
||||
see-more: "もっと見る"
|
||||
desktop/views/components/notes.vue:
|
||||
error: "読み込みに失敗しました。"
|
||||
retry: "リトライ"
|
||||
load-more: "もっと読み込む"
|
||||
desktop/views/components/notifications.vue:
|
||||
more: "もっと見る"
|
||||
empty: "ありません!"
|
||||
desktop/views/components/post-form.vue:
|
||||
add-visible-user: "+ユーザーを追加"
|
||||
attach-location-information: "位置情報を添付する"
|
||||
hide-contents: "内容を隠す"
|
||||
reply-placeholder: "この投稿への返信..."
|
||||
quote-placeholder: "この投稿を引用..."
|
||||
submit: "投稿"
|
||||
@@ -359,9 +570,16 @@ desktop/views/components/post-form.vue:
|
||||
attach-media-from-local: "PCからメディアを添付"
|
||||
attach-media-from-drive: "ドライブからメディアを添付"
|
||||
attach-cancel: "添付取り消し"
|
||||
insert-a-kao: "v(‘ω’)v"
|
||||
create-poll: "投票を作成"
|
||||
insert-a-kao: "v('ω')v"
|
||||
create-poll: "アンケートを作成"
|
||||
text-remain: "残り{}文字"
|
||||
recent-tags: "最近"
|
||||
click-to-tagging: "クリックでタグ付け"
|
||||
visibility: "公開範囲"
|
||||
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||
error: "エラー"
|
||||
enter-username: "ユーザー名を入力してください"
|
||||
annotations: "内容への注釈 (オプション)"
|
||||
desktop/views/components/post-form-window.vue:
|
||||
note: "新規投稿"
|
||||
reply: "返信"
|
||||
@@ -402,13 +620,17 @@ desktop/views/components/settings.vue:
|
||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||
display: "デザインと表示"
|
||||
customize: "ホームをカスタマイズ"
|
||||
choose-wallpaper: "壁紙を選択"
|
||||
delete-wallpaper: "壁紙を削除"
|
||||
dark-mode: "ダークモード"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||
show-renoted-my-notes: "Renoteされた自分の投稿をタイムラインに表示する"
|
||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||
show-maps: "マップの自動展開"
|
||||
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
||||
sound: "サウンド"
|
||||
@@ -480,6 +702,9 @@ desktop/views/components/settings.api.vue:
|
||||
enter-password: "パスワードを入力してください"
|
||||
desktop/views/components/settings.apps.vue:
|
||||
no-apps: "連携しているアプリケーションはありません"
|
||||
desktop/views/components/settings.drive.vue:
|
||||
max: "中"
|
||||
in-use: "使用中"
|
||||
desktop/views/components/settings.mute.vue:
|
||||
no-users: "ミュートしているユーザーはいません"
|
||||
desktop/views/components/settings.password.vue:
|
||||
@@ -497,32 +722,41 @@ desktop/views/components/settings.profile.vue:
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
save: "保存"
|
||||
locked-account: "アカウントの保護"
|
||||
is-locked: "投稿を非公開にする"
|
||||
other: "その他"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
profile-updated: "プロフィールを更新しました"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
media-count: "{}つのメディア"
|
||||
poll: "投票"
|
||||
poll: "アンケート"
|
||||
desktop/views/components/taskmanager.vue:
|
||||
title: "タスクマネージャ"
|
||||
desktop/views/components/timeline.vue:
|
||||
home: "ホーム"
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
list: "リスト"
|
||||
desktop/views/components/ui.header.vue:
|
||||
welcome-back: "おかえりなさい、"
|
||||
adjective: "さん"
|
||||
desktop/views/components/ui.header.account.vue:
|
||||
profile: "プロフィール"
|
||||
drive: "ドライブ"
|
||||
favorites: "お気に入り"
|
||||
lists: "リスト"
|
||||
follow-requests: "フォロー申請"
|
||||
customize: "カスタマイズ"
|
||||
customize: "ホームのカスタマイズ"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
dark: "闇に飲まれる"
|
||||
desktop/views/components/ui.header.nav.vue:
|
||||
home: "ホーム"
|
||||
deck: "デッキ"
|
||||
messaging: "メッセージ"
|
||||
game: "ゲーム"
|
||||
desktop/views/components/ui.header.notifications.vue:
|
||||
@@ -538,6 +772,7 @@ desktop/views/components/received-follow-requests-window.vue:
|
||||
desktop/views/components/user-lists-window.vue:
|
||||
title: "リスト"
|
||||
create-list: "リストを作成"
|
||||
list-name: "リスト名"
|
||||
desktop/views/components/user-preview.vue:
|
||||
notes: "投稿"
|
||||
following: "フォロー"
|
||||
@@ -552,6 +787,33 @@ desktop/views/components/users-list-item.vue:
|
||||
desktop/views/components/window.vue:
|
||||
popout: "ポップアウト"
|
||||
close: "閉じる"
|
||||
desktop/views/pages/admin/admin.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
drive: "ドライブ"
|
||||
users: "ユーザー"
|
||||
update: "更新"
|
||||
desktop/views/pages/admin/admin.dashboard.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
all-users: "全てのユーザー"
|
||||
original-users: "このインスタンスのユーザー"
|
||||
all-notes: "全てのノート"
|
||||
original-notes: "このインスタンスのノート"
|
||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||
suspend-user: "ユーザーの凍結"
|
||||
suspend: "凍結"
|
||||
suspended: "凍結しました"
|
||||
desktop/views/pages/admin/admin.unsuspend-user.vue:
|
||||
unsuspend-user: "ユーザーの凍結の解除"
|
||||
unsuspend: "凍結の解除"
|
||||
unsuspended: "凍結を解除しました"
|
||||
desktop/views/pages/deck/deck.tl-column.vue:
|
||||
is-media-only: "メディア投稿のみ"
|
||||
is-media-view: "メディアビュー"
|
||||
edit: "オプション"
|
||||
desktop/views/pages/deck/deck.note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
desktop/views/pages/welcome.vue:
|
||||
about: "詳しく..."
|
||||
gotit: "わかった"
|
||||
@@ -560,6 +822,7 @@ desktop/views/pages/welcome.vue:
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Misskey Drive"
|
||||
desktop/views/pages/favorites.vue:
|
||||
@@ -574,6 +837,13 @@ desktop/views/pages/selectdrive.vue:
|
||||
ok: "決定"
|
||||
cancel: "キャンセル"
|
||||
upload: "PCからドライブにファイルをアップロード"
|
||||
desktop/views/pages/search.vue:
|
||||
not-available: "検索機能を利用することができません。"
|
||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||
desktop/views/pages/share.vue:
|
||||
share-with: "{}で共有"
|
||||
desktop/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
desktop/views/pages/user-list.users.vue:
|
||||
users: "ユーザー"
|
||||
add-user: "ユーザーを追加"
|
||||
@@ -586,7 +856,7 @@ desktop/views/pages/user/user.friends.vue:
|
||||
title: "よく話すユーザー"
|
||||
loading: "読み込み中"
|
||||
no-users: "よく話すユーザーはいません"
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
desktop/views/pages/user/user.vue:
|
||||
is-suspended: "このユーザーは凍結されています。"
|
||||
is-remote: "このユーザーはリモートユーザーです。"
|
||||
view-remote: "正確な情報を見る"
|
||||
@@ -604,6 +874,13 @@ desktop/views/pages/user/user.profile.vue:
|
||||
mute: "ミュートする"
|
||||
muted: "ミュートしています"
|
||||
unmute: "ミュート解除"
|
||||
push-to-a-list: "リストに追加"
|
||||
list-pushed: "{user}を{list}に追加しました。"
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
posts: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
is-bot: "このアカウントはBotです"
|
||||
desktop/views/pages/user/user.timeline.vue:
|
||||
default: "投稿"
|
||||
with-replies: "投稿と返信"
|
||||
@@ -615,7 +892,7 @@ desktop/views/widgets/notifications.vue:
|
||||
title: "通知"
|
||||
settings: "通知の設定"
|
||||
desktop/views/widgets/polls.vue:
|
||||
title: "投票"
|
||||
title: "アンケート"
|
||||
refresh: "他を見る"
|
||||
nothing: "ありません!"
|
||||
desktop/views/widgets/post-form.vue:
|
||||
@@ -660,8 +937,14 @@ mobile/views/components/drive.file-detail.vue:
|
||||
move: "移動"
|
||||
hash: "ハッシュ (md5)"
|
||||
exif: "EXIF"
|
||||
mobile/views/components/media-image.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
mobile/views/components/media-video.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
mobile/views/components/follow-button.vue:
|
||||
unfollow: "フォロー中"
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-request: "フォロー申請"
|
||||
@@ -714,10 +997,13 @@ mobile/views/components/sub-note-content.vue:
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
media-count: "{}つのメディア"
|
||||
poll: "投票"
|
||||
poll: "アンケート"
|
||||
mobile/views/components/timeline.vue:
|
||||
empty: "投稿がありません"
|
||||
load-more: "もっと"
|
||||
mobile/views/components/ui.header.vue:
|
||||
welcome-back: "おかえりなさい、"
|
||||
adjective: "さん"
|
||||
mobile/views/components/ui.nav.vue:
|
||||
timeline: "タイムライン"
|
||||
notifications: "通知"
|
||||
@@ -748,6 +1034,8 @@ mobile/views/pages/user-lists.vue:
|
||||
mobile/views/pages/drive.vue:
|
||||
drive: "ドライブ"
|
||||
more: "もっと見る"
|
||||
mobile/views/pages/signup.vue:
|
||||
lets-start: "📦 始めましょう"
|
||||
mobile/views/pages/followers.vue:
|
||||
followers-of: "{}のフォロワー"
|
||||
mobile/views/pages/following.vue:
|
||||
@@ -755,7 +1043,21 @@ mobile/views/pages/following.vue:
|
||||
mobile/views/pages/home.vue:
|
||||
home: "ホーム"
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
mobile/views/pages/welcome.vue:
|
||||
signup: "新規登録"
|
||||
mobile/views/pages/widgets.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||
add-widget: "追加"
|
||||
customization-tips: "カスタマイズのヒント"
|
||||
mobile/views/pages/widgets/activity.vue:
|
||||
activity: "アクティビティ"
|
||||
mobile/views/pages/share.vue:
|
||||
share-with: "{}で共有"
|
||||
mobile/views/pages/messaging.vue:
|
||||
messaging: "メッセージ"
|
||||
mobile/views/pages/messaging-room.vue:
|
||||
@@ -771,6 +1073,8 @@ mobile/views/pages/note.vue:
|
||||
mobile/views/pages/notifications.vue:
|
||||
notifications: "通知"
|
||||
read-all: "すべての通知を既読にしますか?"
|
||||
mobile/views/pages/games/reversi.vue:
|
||||
reversi: "リバーシ"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
name: "名前"
|
||||
@@ -788,6 +1092,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
||||
mobile/views/pages/search.vue:
|
||||
search: "検索"
|
||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||
mobile/views/pages/selectdrive.vue:
|
||||
select-file: "ファイルを選択"
|
||||
mobile/views/pages/settings.vue:
|
||||
@@ -804,7 +1109,8 @@ mobile/views/pages/settings.vue:
|
||||
timeline: "タイムライン"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
||||
show-renoted-my-notes: "自分の投稿のRenoteを表示する"
|
||||
show-local-renotes: "ローカルの投稿のRenoteを表示する"
|
||||
post-style: "投稿の表示スタイル"
|
||||
post-style-standard: "標準"
|
||||
post-style-smart: "スマート"
|
||||
@@ -868,11 +1174,19 @@ docs:
|
||||
properties: "プロパティ"
|
||||
endpoints:
|
||||
params: "パラメータ"
|
||||
no-params: "パラメータはありません"
|
||||
res: "レスポンス"
|
||||
require-credential: "このエンドポイントは認証情報が必須です。"
|
||||
require-permission: "このエンドポイントは{permission}の権限を必要とします。"
|
||||
has-limit: "レートリミットがあります。"
|
||||
duration-limit: "直近{duration}ミリ秒の間のこのエンドポイントへのリクエスト数の合計が{max}を超える場合はリクエストできません。"
|
||||
min-interval-limit: "前回のリクエストから{interval}ミリ秒経っていない場合はリクエストできません。"
|
||||
show-src: "このエンドポイントのソースコードも閲覧できます。"
|
||||
show-src-link: "コードをGitHubで見る"
|
||||
generated: "このドキュメントはAPI定義に基づき自動生成されています。"
|
||||
props:
|
||||
name: "名前"
|
||||
type: "型"
|
||||
optional: "オプション"
|
||||
description: "説明"
|
||||
yes: "はい"
|
||||
no: "いいえ"
|
||||
dev/views/index.vue:
|
||||
manage-apps: "アプリの管理"
|
||||
|
||||
356
locales/ru.yml
@@ -3,9 +3,31 @@ meta:
|
||||
lang: "Русский язык"
|
||||
divider: ""
|
||||
common:
|
||||
misskey: "A planet of fediverse"
|
||||
misskey: "A ⭐ of fediverse"
|
||||
about-title: "A ⭐ of fediverse."
|
||||
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
||||
adblock:
|
||||
detected: "広告ブロッカーを無効にしてください"
|
||||
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
||||
application-authorization: "アプリの連携"
|
||||
close: "閉じる"
|
||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||
got-it: "わかった"
|
||||
customization-tips:
|
||||
title: "カスタマイズのヒント"
|
||||
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
|
||||
paragraph2: "一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。"
|
||||
paragraph3: "ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。"
|
||||
paragraph4: "カスタマイズを終了するには、右上の「完了」をクリックします。"
|
||||
gotit: "Got it!"
|
||||
notification:
|
||||
file-uploaded: "ファイルがアップロードされました"
|
||||
message-from: "{}さんからメッセージ:"
|
||||
reversi-invited: "対局への招待があります"
|
||||
reversi-invited-by: "{}さんから"
|
||||
notified-by: "{}さんから"
|
||||
reply-from: "{}さんから返信:"
|
||||
quoted-by: "{}さんが引用:"
|
||||
time:
|
||||
unknown: "なぞのじかん"
|
||||
future: "未来"
|
||||
@@ -17,6 +39,8 @@ common:
|
||||
weeks_ago: "{}週間前"
|
||||
months_ago: "{}ヶ月前"
|
||||
years_ago: "{}年前"
|
||||
month-and-day: "{month}月 {day}日"
|
||||
trash: "ゴミ箱"
|
||||
weekday-short:
|
||||
sunday: "日"
|
||||
monday: "月"
|
||||
@@ -25,6 +49,14 @@ common:
|
||||
thursday: "木"
|
||||
friday: "金"
|
||||
saturday: "土"
|
||||
weekday:
|
||||
sunday: "日曜日"
|
||||
monday: "月曜日"
|
||||
tuesday: "火曜日"
|
||||
wednesday: "水曜日"
|
||||
thursday: "木曜日"
|
||||
friday: "金曜日"
|
||||
saturday: "土曜日"
|
||||
reactions:
|
||||
like: "いいね"
|
||||
love: "しゅき"
|
||||
@@ -34,6 +66,7 @@ common:
|
||||
congrats: "おめでとう"
|
||||
angry: "おこ"
|
||||
confused: "こまこまのこまり"
|
||||
rip: "RIP"
|
||||
pudding: "Pudding"
|
||||
note-placeholders:
|
||||
a: "今どうしてる?"
|
||||
@@ -42,11 +75,28 @@ common:
|
||||
d: "言いたいことは?"
|
||||
e: "ここに書いてください"
|
||||
f: "あなたが書くのを待っています..."
|
||||
search: "検索"
|
||||
delete: "削除"
|
||||
loading: "読み込み中"
|
||||
ok: "わかった"
|
||||
update-available-title: "更新があります"
|
||||
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
|
||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||
verified-user: "公式アカウント"
|
||||
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||
reversi:
|
||||
drawn: "引き分け"
|
||||
my-turn: "あなたのターンです"
|
||||
opponent-turn: "相手のターンです"
|
||||
turn-of: "{}のターンです"
|
||||
past-turn-of: "{}のターン"
|
||||
won: "{}の勝ち"
|
||||
black: "黒"
|
||||
white: "白"
|
||||
total: "合計"
|
||||
this-turn: "{}ターン目"
|
||||
widgets:
|
||||
analog-clock: "アナログ時計"
|
||||
profile: "プロフィール"
|
||||
@@ -54,21 +104,107 @@ common:
|
||||
timemachine: "カレンダー(タイムマシン)"
|
||||
activity: "アクティビティ"
|
||||
rss: "RSSリーダー"
|
||||
memo: "メモ"
|
||||
memo: "付箋"
|
||||
trends: "トレンド"
|
||||
photo-stream: "フォトストリーム"
|
||||
posts-monitor: "投稿チャート"
|
||||
slideshow: "スライドショー"
|
||||
version: "バージョン"
|
||||
broadcast: "ブロードキャスト"
|
||||
notifications: "通知"
|
||||
users: "おすすめユーザー"
|
||||
polls: "投票"
|
||||
polls: "アンケート"
|
||||
post-form: "投稿フォーム"
|
||||
messaging: "メッセージ"
|
||||
server: "サーバー情報"
|
||||
donation: "寄付のお願い"
|
||||
nav: "ナビゲーション"
|
||||
tips: "ヒント"
|
||||
hashtags: "ハッシュタグ"
|
||||
deck:
|
||||
widgets: "ウィジェット"
|
||||
home: "ホーム"
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
notifications: "通知"
|
||||
list: "リスト"
|
||||
swap-left: "左に移動"
|
||||
swap-right: "右に移動"
|
||||
swap-up: "上に移動"
|
||||
swap-down: "下に移動"
|
||||
remove: "カラムを削除"
|
||||
add-column: "カラムを追加"
|
||||
rename: "名前を変更"
|
||||
stack-left: "左に重ねる"
|
||||
pop-right: "右に出す"
|
||||
auth/views/form.vue:
|
||||
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
|
||||
permission-ask: "このアプリは次の権限を要求しています:"
|
||||
account-read: "アカウントの情報を見る。"
|
||||
account-write: "アカウントの情報を操作する。"
|
||||
note-write: "投稿する。"
|
||||
like-write: "いいねしたりいいね解除する。"
|
||||
following-write: "フォローしたりフォロー解除する。"
|
||||
drive-read: "ドライブを見る。"
|
||||
drive-write: "ドライブを操作する。"
|
||||
notification-read: "通知を見る。"
|
||||
notification-write: "通知を操作する。"
|
||||
cancel: "キャンセル"
|
||||
accept: "アクセスを許可"
|
||||
auth/views/index.vue:
|
||||
loading: "読み込み中"
|
||||
denied: "アプリケーションの連携をキャンセルしました。"
|
||||
denied-paragraph: "このアプリがあなたのアカウントにアクセスすることはありません。"
|
||||
already-authorized: "このアプリは既に連携済みです"
|
||||
allowed: "アプリケーションの連携を許可しました"
|
||||
callback-url: "アプリケーションに戻っています"
|
||||
please-go-back: "アプリケーションに戻って、やっていってください。"
|
||||
error: "セッションが存在しません。"
|
||||
sign-in: "サインインしてください"
|
||||
common/views/components/games/reversi/reversi.vue:
|
||||
matching:
|
||||
waiting-for: "{}を待っています"
|
||||
cancel: "キャンセル"
|
||||
common/views/components/games/reversi/reversi.game.vue:
|
||||
surrender: "投了"
|
||||
surrendered: "投了により"
|
||||
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||
looped-map: "ループマップ"
|
||||
can-put-everywhere: "どこでも置けるモード"
|
||||
common/views/components/games/reversi/reversi.index.vue:
|
||||
title: "Misskey Reversi"
|
||||
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
|
||||
invite: "招待"
|
||||
rule: "遊び方"
|
||||
rule-desc: "リバーシは、相手と交互に石をボードに置いて、相手の石を挟んで自分の色に変えてゆき、最終的に残った石が多い方が勝ちというボードゲームです。"
|
||||
mode-invite: "招待"
|
||||
mode-invite-desc: "指定したユーザーと対戦するモードです。"
|
||||
invitations: "対局の招待があります!"
|
||||
my-games: "自分の対局"
|
||||
all-games: "みんなの対局"
|
||||
enter-username: "ユーザー名を入力してください"
|
||||
game-state:
|
||||
ended: "終了"
|
||||
playing: "進行中"
|
||||
common/views/components/games/reversi/reversi.room.vue:
|
||||
settings-of-the-game: "ゲームの設定"
|
||||
choose-map: "マップを選択"
|
||||
random: "ランダム"
|
||||
black-or-white: "先手/後手"
|
||||
black-is: "{}が黒"
|
||||
rules: "ルール"
|
||||
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||
looped-map: "ループマップ"
|
||||
can-put-everywhere: "どこでも置けるモード"
|
||||
settings-of-the-bot: "Botの設定"
|
||||
this-game-is-started-soon: "ゲームは数秒後に開始されます"
|
||||
waiting-for-other: "相手の準備が完了するのを待っています"
|
||||
waiting-for-me: "あなたの準備が完了するのを待っています"
|
||||
waiting-for-both: "準備中"
|
||||
cancel: "キャンセル"
|
||||
ready: "準備完了"
|
||||
cancel-ready: "準備続行"
|
||||
common/views/components/connect-failed.vue:
|
||||
title: "サーバーに接続できません"
|
||||
description: "インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから{再度お試し}ください。"
|
||||
@@ -103,11 +239,13 @@ common/views/components/messaging-room.vue:
|
||||
no-history: "これより過去の履歴はありません"
|
||||
resize-form: "ドラッグしてフォームの広さを調整"
|
||||
new-message: "新しいメッセージがあります"
|
||||
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||
common/views/components/messaging-room.form.vue:
|
||||
input-message-here: "ここにメッセージを入力"
|
||||
send: "送信"
|
||||
attach-from-local: "PCからファイルを添付する"
|
||||
attach-from-drive: "ドライブからファイルを添付する"
|
||||
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||
common/views/components/messaging-room.message.vue:
|
||||
is-read: "既読"
|
||||
deleted: "このメッセージは削除されました"
|
||||
@@ -134,11 +272,11 @@ common/views/components/poll.vue:
|
||||
show-result: "結果を見る"
|
||||
voted: "投票済み"
|
||||
common/views/components/poll-editor.vue:
|
||||
no-only-one-choice: "投票には、選択肢が最低2つ必要です"
|
||||
no-only-one-choice: "アンケートには、選択肢が最低2つ必要です"
|
||||
choice-n: "選択肢{}"
|
||||
remove: "この選択肢を削除"
|
||||
add: "+選択肢を追加"
|
||||
destroy: "投票を破棄"
|
||||
destroy: "アンケートを破棄"
|
||||
common/views/components/reaction-picker.vue:
|
||||
choose-reaction: "リアクションを選択"
|
||||
common/views/components/signin.vue:
|
||||
@@ -147,6 +285,9 @@ common/views/components/signin.vue:
|
||||
token: "トークン"
|
||||
signing-in: "やってます..."
|
||||
signin: "サインイン"
|
||||
or: "または"
|
||||
signin-with-twitter: "Twitterでログイン"
|
||||
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||
common/views/components/signup.vue:
|
||||
username: "ユーザー名"
|
||||
checking: "確認しています..."
|
||||
@@ -198,19 +339,75 @@ common/views/widgets/broadcast.vue:
|
||||
no-broadcasts: "お知らせはありません"
|
||||
have-a-nice-day: "良い一日を!"
|
||||
next: "次"
|
||||
common/views/widgets/calendar.vue:
|
||||
year: "{}年"
|
||||
month: "{}月"
|
||||
day: "{}日"
|
||||
today: "今日:"
|
||||
this-month: "今月:"
|
||||
this-year: "今年:"
|
||||
common/views/widgets/donation.vue:
|
||||
title: "寄付のお願い"
|
||||
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
||||
common/views/widgets/photo-stream.vue:
|
||||
title: "フォトストリーム"
|
||||
no-photos: "写真はありません"
|
||||
common/views/widgets/posts-monitor.vue:
|
||||
title: "投稿チャート"
|
||||
toggle: "表示を切り替え"
|
||||
common/views/widgets/hashtags.vue:
|
||||
title: "ハッシュタグ"
|
||||
count: "{}人が投稿"
|
||||
empty: "トレンドなし"
|
||||
common/views/widgets/server.vue:
|
||||
title: "サーバー情報"
|
||||
toggle: "表示を切り替え"
|
||||
common/views/widgets/memo.vue:
|
||||
title: "メモ"
|
||||
title: "付箋"
|
||||
memo: "ここに書いて!"
|
||||
save: "保存"
|
||||
common/views/widgets/slideshow.vue:
|
||||
folder-customize-mode: "フォルダを指定するには、カスタマイズモードを終了してください"
|
||||
folder: "クリックしてフォルダを指定してください"
|
||||
no-image: "このフォルダには画像がありません"
|
||||
common/views/widgets/tips.vue:
|
||||
tips-line1: "<kbd>t</kbd>でタイムラインにフォーカスできます"
|
||||
tips-line2: "<kbd>p</kbd>または<kbd>n</kbd>で投稿フォームを開きます"
|
||||
tips-line3: "投稿フォームにはファイルをドラッグ&ドロップできます"
|
||||
tips-line4: "投稿フォームにクリップボードにある画像データをペーストできます"
|
||||
tips-line5: "ドライブにファイルをドラッグ&ドロップしてアップロードできます"
|
||||
tips-line6: "ドライブでファイルをドラッグしてフォルダ移動できます"
|
||||
tips-line7: "ドライブでフォルダをドラッグしてフォルダ移動できます"
|
||||
tips-line8: "ホームは設定からカスタマイズできます"
|
||||
tips-line9: "MisskeyはAGPLv3です"
|
||||
tips-line10: "タイムマシンウィジェットを利用すると、簡単に過去のタイムラインに遡れます"
|
||||
tips-line11: "投稿の ... をクリックして、投稿をユーザーページにピン留めできます"
|
||||
tips-line13: "投稿に添付したファイルは全てドライブに保存されます"
|
||||
tips-line14: "ホームのカスタマイズ中、ウィジェットを右クリックしてデザインを変更できます"
|
||||
tips-line17: "「**」でテキストを囲むと**強調表示**されます"
|
||||
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
|
||||
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
|
||||
tips-line21: "APIを利用してbotの開発なども行えます"
|
||||
tips-line23: "まゆかわいいよまゆ"
|
||||
tips-line24: "Misskeyは2014年にサービスを開始しました"
|
||||
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
||||
common/views/pages/follow.vue:
|
||||
signed-in-as: "{}としてサインイン中"
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-request: "フォロー申請"
|
||||
desktop:
|
||||
banner-crop-title: "バナーとして表示する部分を選択"
|
||||
banner: "バナー"
|
||||
uploading-banner: "新しいバナーをアップロードしています"
|
||||
banner-updated: "バナーを更新しました"
|
||||
choose-banner: "バナーにする画像を選択"
|
||||
avatar-crop-title: "アバターとして表示する部分を選択"
|
||||
avatar: "アバター"
|
||||
uploading-avatar: "新しいアバターをアップロードしています"
|
||||
avatar-updated: "アバターを更新しました"
|
||||
choose-avatar: "アバターにする画像を選択"
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Black ... Total"
|
||||
notes: "Blue ... Notes"
|
||||
@@ -246,6 +443,8 @@ desktop/views/components/drive.file.vue:
|
||||
banner: "バナー"
|
||||
contextmenu:
|
||||
rename: "名前を変更"
|
||||
mark-as-sensitive: "閲覧注意に設定"
|
||||
unmark-as-sensitive: "閲覧注意を解除"
|
||||
copy-url: "URLをコピー"
|
||||
download: "ダウンロード"
|
||||
else-files: "その他..."
|
||||
@@ -289,8 +488,14 @@ desktop/views/components/drive.vue:
|
||||
create-folder: "フォルダーを作成"
|
||||
upload: "ファイルをアップロード"
|
||||
url-upload: "URLからアップロード"
|
||||
desktop/views/components/media-image.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
desktop/views/components/media-video.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
desktop/views/components/follow-button.vue:
|
||||
unfollow: "フォロー中"
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-request: "フォロー申請"
|
||||
@@ -309,7 +514,7 @@ desktop/views/components/friends-maker.vue:
|
||||
refresh: "もっと見る"
|
||||
close: "閉じる"
|
||||
desktop/views/components/game-window.vue:
|
||||
game: "オセロ"
|
||||
game: "リバーシ"
|
||||
desktop/views/components/home.vue:
|
||||
done: "完了"
|
||||
add-widget: "ウィジェットを追加:"
|
||||
@@ -337,13 +542,19 @@ desktop/views/components/notes.note.vue:
|
||||
detail: "詳細"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
hide: "隠す"
|
||||
see-more: "もっと見る"
|
||||
desktop/views/components/notes.vue:
|
||||
error: "読み込みに失敗しました。"
|
||||
retry: "リトライ"
|
||||
load-more: "もっと読み込む"
|
||||
desktop/views/components/notifications.vue:
|
||||
more: "もっと見る"
|
||||
empty: "ありません!"
|
||||
desktop/views/components/post-form.vue:
|
||||
add-visible-user: "+ユーザーを追加"
|
||||
attach-location-information: "位置情報を添付する"
|
||||
hide-contents: "内容を隠す"
|
||||
reply-placeholder: "この投稿への返信..."
|
||||
quote-placeholder: "この投稿を引用..."
|
||||
submit: "投稿"
|
||||
@@ -359,9 +570,16 @@ desktop/views/components/post-form.vue:
|
||||
attach-media-from-local: "PCからメディアを添付"
|
||||
attach-media-from-drive: "ドライブからメディアを添付"
|
||||
attach-cancel: "添付取り消し"
|
||||
insert-a-kao: "v(‘ω’)v"
|
||||
create-poll: "投票を作成"
|
||||
insert-a-kao: "v('ω')v"
|
||||
create-poll: "アンケートを作成"
|
||||
text-remain: "残り{}文字"
|
||||
recent-tags: "最近"
|
||||
click-to-tagging: "クリックでタグ付け"
|
||||
visibility: "公開範囲"
|
||||
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||
error: "エラー"
|
||||
enter-username: "ユーザー名を入力してください"
|
||||
annotations: "内容への注釈 (オプション)"
|
||||
desktop/views/components/post-form-window.vue:
|
||||
note: "新規投稿"
|
||||
reply: "返信"
|
||||
@@ -402,13 +620,17 @@ desktop/views/components/settings.vue:
|
||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||
display: "デザインと表示"
|
||||
customize: "ホームをカスタマイズ"
|
||||
choose-wallpaper: "壁紙を選択"
|
||||
delete-wallpaper: "壁紙を削除"
|
||||
dark-mode: "ダークモード"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||
show-renoted-my-notes: "Renoteされた自分の投稿をタイムラインに表示する"
|
||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||
show-maps: "マップの自動展開"
|
||||
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
||||
sound: "サウンド"
|
||||
@@ -480,6 +702,9 @@ desktop/views/components/settings.api.vue:
|
||||
enter-password: "パスワードを入力してください"
|
||||
desktop/views/components/settings.apps.vue:
|
||||
no-apps: "連携しているアプリケーションはありません"
|
||||
desktop/views/components/settings.drive.vue:
|
||||
max: "中"
|
||||
in-use: "使用中"
|
||||
desktop/views/components/settings.mute.vue:
|
||||
no-users: "ミュートしているユーザーはいません"
|
||||
desktop/views/components/settings.password.vue:
|
||||
@@ -497,32 +722,41 @@ desktop/views/components/settings.profile.vue:
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
save: "保存"
|
||||
locked-account: "アカウントの保護"
|
||||
is-locked: "投稿を非公開にする"
|
||||
other: "その他"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
profile-updated: "プロフィールを更新しました"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
media-count: "{}つのメディア"
|
||||
poll: "投票"
|
||||
poll: "アンケート"
|
||||
desktop/views/components/taskmanager.vue:
|
||||
title: "タスクマネージャ"
|
||||
desktop/views/components/timeline.vue:
|
||||
home: "ホーム"
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
list: "リスト"
|
||||
desktop/views/components/ui.header.vue:
|
||||
welcome-back: "おかえりなさい、"
|
||||
adjective: "さん"
|
||||
desktop/views/components/ui.header.account.vue:
|
||||
profile: "プロフィール"
|
||||
drive: "ドライブ"
|
||||
favorites: "お気に入り"
|
||||
lists: "リスト"
|
||||
follow-requests: "フォロー申請"
|
||||
customize: "カスタマイズ"
|
||||
customize: "ホームのカスタマイズ"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
dark: "闇に飲まれる"
|
||||
desktop/views/components/ui.header.nav.vue:
|
||||
home: "ホーム"
|
||||
deck: "デッキ"
|
||||
messaging: "メッセージ"
|
||||
game: "ゲーム"
|
||||
desktop/views/components/ui.header.notifications.vue:
|
||||
@@ -538,6 +772,7 @@ desktop/views/components/received-follow-requests-window.vue:
|
||||
desktop/views/components/user-lists-window.vue:
|
||||
title: "リスト"
|
||||
create-list: "リストを作成"
|
||||
list-name: "リスト名"
|
||||
desktop/views/components/user-preview.vue:
|
||||
notes: "投稿"
|
||||
following: "フォロー"
|
||||
@@ -552,6 +787,33 @@ desktop/views/components/users-list-item.vue:
|
||||
desktop/views/components/window.vue:
|
||||
popout: "ポップアウト"
|
||||
close: "閉じる"
|
||||
desktop/views/pages/admin/admin.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
drive: "ドライブ"
|
||||
users: "ユーザー"
|
||||
update: "更新"
|
||||
desktop/views/pages/admin/admin.dashboard.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
all-users: "全てのユーザー"
|
||||
original-users: "このインスタンスのユーザー"
|
||||
all-notes: "全てのノート"
|
||||
original-notes: "このインスタンスのノート"
|
||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||
suspend-user: "ユーザーの凍結"
|
||||
suspend: "凍結"
|
||||
suspended: "凍結しました"
|
||||
desktop/views/pages/admin/admin.unsuspend-user.vue:
|
||||
unsuspend-user: "ユーザーの凍結の解除"
|
||||
unsuspend: "凍結の解除"
|
||||
unsuspended: "凍結を解除しました"
|
||||
desktop/views/pages/deck/deck.tl-column.vue:
|
||||
is-media-only: "メディア投稿のみ"
|
||||
is-media-view: "メディアビュー"
|
||||
edit: "オプション"
|
||||
desktop/views/pages/deck/deck.note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
desktop/views/pages/welcome.vue:
|
||||
about: "詳しく..."
|
||||
gotit: "わかった"
|
||||
@@ -560,6 +822,7 @@ desktop/views/pages/welcome.vue:
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Misskey Drive"
|
||||
desktop/views/pages/favorites.vue:
|
||||
@@ -574,6 +837,13 @@ desktop/views/pages/selectdrive.vue:
|
||||
ok: "決定"
|
||||
cancel: "キャンセル"
|
||||
upload: "PCからドライブにファイルをアップロード"
|
||||
desktop/views/pages/search.vue:
|
||||
not-available: "検索機能を利用することができません。"
|
||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||
desktop/views/pages/share.vue:
|
||||
share-with: "{}で共有"
|
||||
desktop/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
desktop/views/pages/user-list.users.vue:
|
||||
users: "ユーザー"
|
||||
add-user: "ユーザーを追加"
|
||||
@@ -586,7 +856,7 @@ desktop/views/pages/user/user.friends.vue:
|
||||
title: "よく話すユーザー"
|
||||
loading: "読み込み中"
|
||||
no-users: "よく話すユーザーはいません"
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
desktop/views/pages/user/user.vue:
|
||||
is-suspended: "このユーザーは凍結されています。"
|
||||
is-remote: "このユーザーはリモートユーザーです。"
|
||||
view-remote: "正確な情報を見る"
|
||||
@@ -604,6 +874,13 @@ desktop/views/pages/user/user.profile.vue:
|
||||
mute: "ミュートする"
|
||||
muted: "ミュートしています"
|
||||
unmute: "ミュート解除"
|
||||
push-to-a-list: "リストに追加"
|
||||
list-pushed: "{user}を{list}に追加しました。"
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
posts: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
is-bot: "このアカウントはBotです"
|
||||
desktop/views/pages/user/user.timeline.vue:
|
||||
default: "投稿"
|
||||
with-replies: "投稿と返信"
|
||||
@@ -615,7 +892,7 @@ desktop/views/widgets/notifications.vue:
|
||||
title: "通知"
|
||||
settings: "通知の設定"
|
||||
desktop/views/widgets/polls.vue:
|
||||
title: "投票"
|
||||
title: "アンケート"
|
||||
refresh: "他を見る"
|
||||
nothing: "ありません!"
|
||||
desktop/views/widgets/post-form.vue:
|
||||
@@ -660,8 +937,14 @@ mobile/views/components/drive.file-detail.vue:
|
||||
move: "移動"
|
||||
hash: "ハッシュ (md5)"
|
||||
exif: "EXIF"
|
||||
mobile/views/components/media-image.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
mobile/views/components/media-video.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
mobile/views/components/follow-button.vue:
|
||||
unfollow: "フォロー中"
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-request: "フォロー申請"
|
||||
@@ -714,10 +997,13 @@ mobile/views/components/sub-note-content.vue:
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
media-count: "{}つのメディア"
|
||||
poll: "投票"
|
||||
poll: "アンケート"
|
||||
mobile/views/components/timeline.vue:
|
||||
empty: "投稿がありません"
|
||||
load-more: "もっと"
|
||||
mobile/views/components/ui.header.vue:
|
||||
welcome-back: "おかえりなさい、"
|
||||
adjective: "さん"
|
||||
mobile/views/components/ui.nav.vue:
|
||||
timeline: "タイムライン"
|
||||
notifications: "通知"
|
||||
@@ -748,6 +1034,8 @@ mobile/views/pages/user-lists.vue:
|
||||
mobile/views/pages/drive.vue:
|
||||
drive: "ドライブ"
|
||||
more: "もっと見る"
|
||||
mobile/views/pages/signup.vue:
|
||||
lets-start: "📦 始めましょう"
|
||||
mobile/views/pages/followers.vue:
|
||||
followers-of: "{}のフォロワー"
|
||||
mobile/views/pages/following.vue:
|
||||
@@ -755,7 +1043,21 @@ mobile/views/pages/following.vue:
|
||||
mobile/views/pages/home.vue:
|
||||
home: "ホーム"
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
mobile/views/pages/welcome.vue:
|
||||
signup: "新規登録"
|
||||
mobile/views/pages/widgets.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||
add-widget: "追加"
|
||||
customization-tips: "カスタマイズのヒント"
|
||||
mobile/views/pages/widgets/activity.vue:
|
||||
activity: "アクティビティ"
|
||||
mobile/views/pages/share.vue:
|
||||
share-with: "{}で共有"
|
||||
mobile/views/pages/messaging.vue:
|
||||
messaging: "メッセージ"
|
||||
mobile/views/pages/messaging-room.vue:
|
||||
@@ -771,6 +1073,8 @@ mobile/views/pages/note.vue:
|
||||
mobile/views/pages/notifications.vue:
|
||||
notifications: "通知"
|
||||
read-all: "すべての通知を既読にしますか?"
|
||||
mobile/views/pages/games/reversi.vue:
|
||||
reversi: "リバーシ"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
name: "名前"
|
||||
@@ -788,6 +1092,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
||||
mobile/views/pages/search.vue:
|
||||
search: "検索"
|
||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||
mobile/views/pages/selectdrive.vue:
|
||||
select-file: "ファイルを選択"
|
||||
mobile/views/pages/settings.vue:
|
||||
@@ -804,7 +1109,8 @@ mobile/views/pages/settings.vue:
|
||||
timeline: "タイムライン"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
||||
show-renoted-my-notes: "自分の投稿のRenoteを表示する"
|
||||
show-local-renotes: "ローカルの投稿のRenoteを表示する"
|
||||
post-style: "投稿の表示スタイル"
|
||||
post-style-standard: "標準"
|
||||
post-style-smart: "スマート"
|
||||
@@ -868,11 +1174,19 @@ docs:
|
||||
properties: "プロパティ"
|
||||
endpoints:
|
||||
params: "パラメータ"
|
||||
no-params: "パラメータはありません"
|
||||
res: "レスポンス"
|
||||
require-credential: "このエンドポイントは認証情報が必須です。"
|
||||
require-permission: "このエンドポイントは{permission}の権限を必要とします。"
|
||||
has-limit: "レートリミットがあります。"
|
||||
duration-limit: "直近{duration}ミリ秒の間のこのエンドポイントへのリクエスト数の合計が{max}を超える場合はリクエストできません。"
|
||||
min-interval-limit: "前回のリクエストから{interval}ミリ秒経っていない場合はリクエストできません。"
|
||||
show-src: "このエンドポイントのソースコードも閲覧できます。"
|
||||
show-src-link: "コードをGitHubで見る"
|
||||
generated: "このドキュメントはAPI定義に基づき自動生成されています。"
|
||||
props:
|
||||
name: "名前"
|
||||
type: "型"
|
||||
optional: "オプション"
|
||||
description: "説明"
|
||||
yes: "はい"
|
||||
no: "いいえ"
|
||||
dev/views/index.vue:
|
||||
manage-apps: "アプリの管理"
|
||||
|
||||
356
locales/zh.yml
@@ -3,9 +3,31 @@ meta:
|
||||
lang: "中文(简体)"
|
||||
divider: ""
|
||||
common:
|
||||
misskey: "A planet of fediverse"
|
||||
misskey: "A ⭐ of fediverse"
|
||||
about-title: "A ⭐ of fediverse."
|
||||
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
||||
adblock:
|
||||
detected: "広告ブロッカーを無効にしてください"
|
||||
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
||||
application-authorization: "アプリの連携"
|
||||
close: "閉じる"
|
||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||
got-it: "わかった"
|
||||
customization-tips:
|
||||
title: "カスタマイズのヒント"
|
||||
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
|
||||
paragraph2: "一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。"
|
||||
paragraph3: "ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。"
|
||||
paragraph4: "カスタマイズを終了するには、右上の「完了」をクリックします。"
|
||||
gotit: "Got it!"
|
||||
notification:
|
||||
file-uploaded: "ファイルがアップロードされました"
|
||||
message-from: "{}さんからメッセージ:"
|
||||
reversi-invited: "対局への招待があります"
|
||||
reversi-invited-by: "{}さんから"
|
||||
notified-by: "{}さんから"
|
||||
reply-from: "{}さんから返信:"
|
||||
quoted-by: "{}さんが引用:"
|
||||
time:
|
||||
unknown: "なぞのじかん"
|
||||
future: "未来"
|
||||
@@ -17,6 +39,8 @@ common:
|
||||
weeks_ago: "{}週間前"
|
||||
months_ago: "{}ヶ月前"
|
||||
years_ago: "{}年前"
|
||||
month-and-day: "{month}月 {day}日"
|
||||
trash: "ゴミ箱"
|
||||
weekday-short:
|
||||
sunday: "日"
|
||||
monday: "月"
|
||||
@@ -25,6 +49,14 @@ common:
|
||||
thursday: "木"
|
||||
friday: "金"
|
||||
saturday: "土"
|
||||
weekday:
|
||||
sunday: "日曜日"
|
||||
monday: "月曜日"
|
||||
tuesday: "火曜日"
|
||||
wednesday: "水曜日"
|
||||
thursday: "木曜日"
|
||||
friday: "金曜日"
|
||||
saturday: "土曜日"
|
||||
reactions:
|
||||
like: "いいね"
|
||||
love: "しゅき"
|
||||
@@ -34,6 +66,7 @@ common:
|
||||
congrats: "おめでとう"
|
||||
angry: "おこ"
|
||||
confused: "こまこまのこまり"
|
||||
rip: "RIP"
|
||||
pudding: "Pudding"
|
||||
note-placeholders:
|
||||
a: "今どうしてる?"
|
||||
@@ -42,11 +75,28 @@ common:
|
||||
d: "言いたいことは?"
|
||||
e: "ここに書いてください"
|
||||
f: "あなたが書くのを待っています..."
|
||||
search: "検索"
|
||||
delete: "削除"
|
||||
loading: "読み込み中"
|
||||
ok: "わかった"
|
||||
update-available-title: "更新があります"
|
||||
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
|
||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||
verified-user: "公式アカウント"
|
||||
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||
reversi:
|
||||
drawn: "引き分け"
|
||||
my-turn: "あなたのターンです"
|
||||
opponent-turn: "相手のターンです"
|
||||
turn-of: "{}のターンです"
|
||||
past-turn-of: "{}のターン"
|
||||
won: "{}の勝ち"
|
||||
black: "黒"
|
||||
white: "白"
|
||||
total: "合計"
|
||||
this-turn: "{}ターン目"
|
||||
widgets:
|
||||
analog-clock: "アナログ時計"
|
||||
profile: "プロフィール"
|
||||
@@ -54,21 +104,107 @@ common:
|
||||
timemachine: "カレンダー(タイムマシン)"
|
||||
activity: "アクティビティ"
|
||||
rss: "RSSリーダー"
|
||||
memo: "メモ"
|
||||
memo: "付箋"
|
||||
trends: "トレンド"
|
||||
photo-stream: "フォトストリーム"
|
||||
posts-monitor: "投稿チャート"
|
||||
slideshow: "スライドショー"
|
||||
version: "バージョン"
|
||||
broadcast: "ブロードキャスト"
|
||||
notifications: "通知"
|
||||
users: "おすすめユーザー"
|
||||
polls: "投票"
|
||||
polls: "アンケート"
|
||||
post-form: "投稿フォーム"
|
||||
messaging: "メッセージ"
|
||||
server: "サーバー情報"
|
||||
donation: "寄付のお願い"
|
||||
nav: "ナビゲーション"
|
||||
tips: "ヒント"
|
||||
hashtags: "ハッシュタグ"
|
||||
deck:
|
||||
widgets: "ウィジェット"
|
||||
home: "ホーム"
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
notifications: "通知"
|
||||
list: "リスト"
|
||||
swap-left: "左に移動"
|
||||
swap-right: "右に移動"
|
||||
swap-up: "上に移動"
|
||||
swap-down: "下に移動"
|
||||
remove: "カラムを削除"
|
||||
add-column: "カラムを追加"
|
||||
rename: "名前を変更"
|
||||
stack-left: "左に重ねる"
|
||||
pop-right: "右に出す"
|
||||
auth/views/form.vue:
|
||||
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
|
||||
permission-ask: "このアプリは次の権限を要求しています:"
|
||||
account-read: "アカウントの情報を見る。"
|
||||
account-write: "アカウントの情報を操作する。"
|
||||
note-write: "投稿する。"
|
||||
like-write: "いいねしたりいいね解除する。"
|
||||
following-write: "フォローしたりフォロー解除する。"
|
||||
drive-read: "ドライブを見る。"
|
||||
drive-write: "ドライブを操作する。"
|
||||
notification-read: "通知を見る。"
|
||||
notification-write: "通知を操作する。"
|
||||
cancel: "キャンセル"
|
||||
accept: "アクセスを許可"
|
||||
auth/views/index.vue:
|
||||
loading: "読み込み中"
|
||||
denied: "アプリケーションの連携をキャンセルしました。"
|
||||
denied-paragraph: "このアプリがあなたのアカウントにアクセスすることはありません。"
|
||||
already-authorized: "このアプリは既に連携済みです"
|
||||
allowed: "アプリケーションの連携を許可しました"
|
||||
callback-url: "アプリケーションに戻っています"
|
||||
please-go-back: "アプリケーションに戻って、やっていってください。"
|
||||
error: "セッションが存在しません。"
|
||||
sign-in: "サインインしてください"
|
||||
common/views/components/games/reversi/reversi.vue:
|
||||
matching:
|
||||
waiting-for: "{}を待っています"
|
||||
cancel: "キャンセル"
|
||||
common/views/components/games/reversi/reversi.game.vue:
|
||||
surrender: "投了"
|
||||
surrendered: "投了により"
|
||||
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||
looped-map: "ループマップ"
|
||||
can-put-everywhere: "どこでも置けるモード"
|
||||
common/views/components/games/reversi/reversi.index.vue:
|
||||
title: "Misskey Reversi"
|
||||
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
|
||||
invite: "招待"
|
||||
rule: "遊び方"
|
||||
rule-desc: "リバーシは、相手と交互に石をボードに置いて、相手の石を挟んで自分の色に変えてゆき、最終的に残った石が多い方が勝ちというボードゲームです。"
|
||||
mode-invite: "招待"
|
||||
mode-invite-desc: "指定したユーザーと対戦するモードです。"
|
||||
invitations: "対局の招待があります!"
|
||||
my-games: "自分の対局"
|
||||
all-games: "みんなの対局"
|
||||
enter-username: "ユーザー名を入力してください"
|
||||
game-state:
|
||||
ended: "終了"
|
||||
playing: "進行中"
|
||||
common/views/components/games/reversi/reversi.room.vue:
|
||||
settings-of-the-game: "ゲームの設定"
|
||||
choose-map: "マップを選択"
|
||||
random: "ランダム"
|
||||
black-or-white: "先手/後手"
|
||||
black-is: "{}が黒"
|
||||
rules: "ルール"
|
||||
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||
looped-map: "ループマップ"
|
||||
can-put-everywhere: "どこでも置けるモード"
|
||||
settings-of-the-bot: "Botの設定"
|
||||
this-game-is-started-soon: "ゲームは数秒後に開始されます"
|
||||
waiting-for-other: "相手の準備が完了するのを待っています"
|
||||
waiting-for-me: "あなたの準備が完了するのを待っています"
|
||||
waiting-for-both: "準備中"
|
||||
cancel: "キャンセル"
|
||||
ready: "準備完了"
|
||||
cancel-ready: "準備続行"
|
||||
common/views/components/connect-failed.vue:
|
||||
title: "サーバーに接続できません"
|
||||
description: "インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから{再度お試し}ください。"
|
||||
@@ -103,11 +239,13 @@ common/views/components/messaging-room.vue:
|
||||
no-history: "これより過去の履歴はありません"
|
||||
resize-form: "ドラッグしてフォームの広さを調整"
|
||||
new-message: "新しいメッセージがあります"
|
||||
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||
common/views/components/messaging-room.form.vue:
|
||||
input-message-here: "ここにメッセージを入力"
|
||||
send: "送信"
|
||||
attach-from-local: "PCからファイルを添付する"
|
||||
attach-from-drive: "ドライブからファイルを添付する"
|
||||
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||
common/views/components/messaging-room.message.vue:
|
||||
is-read: "既読"
|
||||
deleted: "このメッセージは削除されました"
|
||||
@@ -134,11 +272,11 @@ common/views/components/poll.vue:
|
||||
show-result: "結果を見る"
|
||||
voted: "投票済み"
|
||||
common/views/components/poll-editor.vue:
|
||||
no-only-one-choice: "投票には、選択肢が最低2つ必要です"
|
||||
no-only-one-choice: "アンケートには、選択肢が最低2つ必要です"
|
||||
choice-n: "選択肢{}"
|
||||
remove: "この選択肢を削除"
|
||||
add: "+選択肢を追加"
|
||||
destroy: "投票を破棄"
|
||||
destroy: "アンケートを破棄"
|
||||
common/views/components/reaction-picker.vue:
|
||||
choose-reaction: "リアクションを選択"
|
||||
common/views/components/signin.vue:
|
||||
@@ -147,6 +285,9 @@ common/views/components/signin.vue:
|
||||
token: "トークン"
|
||||
signing-in: "やってます..."
|
||||
signin: "サインイン"
|
||||
or: "または"
|
||||
signin-with-twitter: "Twitterでログイン"
|
||||
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||
common/views/components/signup.vue:
|
||||
username: "ユーザー名"
|
||||
checking: "確認しています..."
|
||||
@@ -198,19 +339,75 @@ common/views/widgets/broadcast.vue:
|
||||
no-broadcasts: "お知らせはありません"
|
||||
have-a-nice-day: "良い一日を!"
|
||||
next: "次"
|
||||
common/views/widgets/calendar.vue:
|
||||
year: "{}年"
|
||||
month: "{}月"
|
||||
day: "{}日"
|
||||
today: "今日:"
|
||||
this-month: "今月:"
|
||||
this-year: "今年:"
|
||||
common/views/widgets/donation.vue:
|
||||
title: "寄付のお願い"
|
||||
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
||||
common/views/widgets/photo-stream.vue:
|
||||
title: "フォトストリーム"
|
||||
no-photos: "写真はありません"
|
||||
common/views/widgets/posts-monitor.vue:
|
||||
title: "投稿チャート"
|
||||
toggle: "表示を切り替え"
|
||||
common/views/widgets/hashtags.vue:
|
||||
title: "ハッシュタグ"
|
||||
count: "{}人が投稿"
|
||||
empty: "トレンドなし"
|
||||
common/views/widgets/server.vue:
|
||||
title: "サーバー情報"
|
||||
toggle: "表示を切り替え"
|
||||
common/views/widgets/memo.vue:
|
||||
title: "メモ"
|
||||
title: "付箋"
|
||||
memo: "ここに書いて!"
|
||||
save: "保存"
|
||||
common/views/widgets/slideshow.vue:
|
||||
folder-customize-mode: "フォルダを指定するには、カスタマイズモードを終了してください"
|
||||
folder: "クリックしてフォルダを指定してください"
|
||||
no-image: "このフォルダには画像がありません"
|
||||
common/views/widgets/tips.vue:
|
||||
tips-line1: "<kbd>t</kbd>でタイムラインにフォーカスできます"
|
||||
tips-line2: "<kbd>p</kbd>または<kbd>n</kbd>で投稿フォームを開きます"
|
||||
tips-line3: "投稿フォームにはファイルをドラッグ&ドロップできます"
|
||||
tips-line4: "投稿フォームにクリップボードにある画像データをペーストできます"
|
||||
tips-line5: "ドライブにファイルをドラッグ&ドロップしてアップロードできます"
|
||||
tips-line6: "ドライブでファイルをドラッグしてフォルダ移動できます"
|
||||
tips-line7: "ドライブでフォルダをドラッグしてフォルダ移動できます"
|
||||
tips-line8: "ホームは設定からカスタマイズできます"
|
||||
tips-line9: "MisskeyはAGPLv3です"
|
||||
tips-line10: "タイムマシンウィジェットを利用すると、簡単に過去のタイムラインに遡れます"
|
||||
tips-line11: "投稿の ... をクリックして、投稿をユーザーページにピン留めできます"
|
||||
tips-line13: "投稿に添付したファイルは全てドライブに保存されます"
|
||||
tips-line14: "ホームのカスタマイズ中、ウィジェットを右クリックしてデザインを変更できます"
|
||||
tips-line17: "「**」でテキストを囲むと**強調表示**されます"
|
||||
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
|
||||
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
|
||||
tips-line21: "APIを利用してbotの開発なども行えます"
|
||||
tips-line23: "まゆかわいいよまゆ"
|
||||
tips-line24: "Misskeyは2014年にサービスを開始しました"
|
||||
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
||||
common/views/pages/follow.vue:
|
||||
signed-in-as: "{}としてサインイン中"
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-request: "フォロー申請"
|
||||
desktop:
|
||||
banner-crop-title: "バナーとして表示する部分を選択"
|
||||
banner: "バナー"
|
||||
uploading-banner: "新しいバナーをアップロードしています"
|
||||
banner-updated: "バナーを更新しました"
|
||||
choose-banner: "バナーにする画像を選択"
|
||||
avatar-crop-title: "アバターとして表示する部分を選択"
|
||||
avatar: "アバター"
|
||||
uploading-avatar: "新しいアバターをアップロードしています"
|
||||
avatar-updated: "アバターを更新しました"
|
||||
choose-avatar: "アバターにする画像を選択"
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Black ... Total"
|
||||
notes: "Blue ... Notes"
|
||||
@@ -246,6 +443,8 @@ desktop/views/components/drive.file.vue:
|
||||
banner: "バナー"
|
||||
contextmenu:
|
||||
rename: "名前を変更"
|
||||
mark-as-sensitive: "閲覧注意に設定"
|
||||
unmark-as-sensitive: "閲覧注意を解除"
|
||||
copy-url: "URLをコピー"
|
||||
download: "ダウンロード"
|
||||
else-files: "その他..."
|
||||
@@ -289,8 +488,14 @@ desktop/views/components/drive.vue:
|
||||
create-folder: "フォルダーを作成"
|
||||
upload: "ファイルをアップロード"
|
||||
url-upload: "URLからアップロード"
|
||||
desktop/views/components/media-image.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
desktop/views/components/media-video.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
desktop/views/components/follow-button.vue:
|
||||
unfollow: "フォロー中"
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-request: "フォロー申請"
|
||||
@@ -309,7 +514,7 @@ desktop/views/components/friends-maker.vue:
|
||||
refresh: "もっと見る"
|
||||
close: "閉じる"
|
||||
desktop/views/components/game-window.vue:
|
||||
game: "オセロ"
|
||||
game: "リバーシ"
|
||||
desktop/views/components/home.vue:
|
||||
done: "完了"
|
||||
add-widget: "ウィジェットを追加:"
|
||||
@@ -337,13 +542,19 @@ desktop/views/components/notes.note.vue:
|
||||
detail: "詳細"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
hide: "隠す"
|
||||
see-more: "もっと見る"
|
||||
desktop/views/components/notes.vue:
|
||||
error: "読み込みに失敗しました。"
|
||||
retry: "リトライ"
|
||||
load-more: "もっと読み込む"
|
||||
desktop/views/components/notifications.vue:
|
||||
more: "もっと見る"
|
||||
empty: "ありません!"
|
||||
desktop/views/components/post-form.vue:
|
||||
add-visible-user: "+ユーザーを追加"
|
||||
attach-location-information: "位置情報を添付する"
|
||||
hide-contents: "内容を隠す"
|
||||
reply-placeholder: "この投稿への返信..."
|
||||
quote-placeholder: "この投稿を引用..."
|
||||
submit: "投稿"
|
||||
@@ -359,9 +570,16 @@ desktop/views/components/post-form.vue:
|
||||
attach-media-from-local: "PCからメディアを添付"
|
||||
attach-media-from-drive: "ドライブからメディアを添付"
|
||||
attach-cancel: "添付取り消し"
|
||||
insert-a-kao: "v(‘ω’)v"
|
||||
create-poll: "投票を作成"
|
||||
insert-a-kao: "v('ω')v"
|
||||
create-poll: "アンケートを作成"
|
||||
text-remain: "残り{}文字"
|
||||
recent-tags: "最近"
|
||||
click-to-tagging: "クリックでタグ付け"
|
||||
visibility: "公開範囲"
|
||||
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||
error: "エラー"
|
||||
enter-username: "ユーザー名を入力してください"
|
||||
annotations: "内容への注釈 (オプション)"
|
||||
desktop/views/components/post-form-window.vue:
|
||||
note: "新規投稿"
|
||||
reply: "返信"
|
||||
@@ -402,13 +620,17 @@ desktop/views/components/settings.vue:
|
||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||
display: "デザインと表示"
|
||||
customize: "ホームをカスタマイズ"
|
||||
choose-wallpaper: "壁紙を選択"
|
||||
delete-wallpaper: "壁紙を削除"
|
||||
dark-mode: "ダークモード"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||
show-renoted-my-notes: "Renoteされた自分の投稿をタイムラインに表示する"
|
||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||
show-maps: "マップの自動展開"
|
||||
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
||||
sound: "サウンド"
|
||||
@@ -480,6 +702,9 @@ desktop/views/components/settings.api.vue:
|
||||
enter-password: "パスワードを入力してください"
|
||||
desktop/views/components/settings.apps.vue:
|
||||
no-apps: "連携しているアプリケーションはありません"
|
||||
desktop/views/components/settings.drive.vue:
|
||||
max: "中"
|
||||
in-use: "使用中"
|
||||
desktop/views/components/settings.mute.vue:
|
||||
no-users: "ミュートしているユーザーはいません"
|
||||
desktop/views/components/settings.password.vue:
|
||||
@@ -497,32 +722,41 @@ desktop/views/components/settings.profile.vue:
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
save: "保存"
|
||||
locked-account: "アカウントの保護"
|
||||
is-locked: "投稿を非公開にする"
|
||||
other: "その他"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
profile-updated: "プロフィールを更新しました"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
media-count: "{}つのメディア"
|
||||
poll: "投票"
|
||||
poll: "アンケート"
|
||||
desktop/views/components/taskmanager.vue:
|
||||
title: "タスクマネージャ"
|
||||
desktop/views/components/timeline.vue:
|
||||
home: "ホーム"
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
list: "リスト"
|
||||
desktop/views/components/ui.header.vue:
|
||||
welcome-back: "おかえりなさい、"
|
||||
adjective: "さん"
|
||||
desktop/views/components/ui.header.account.vue:
|
||||
profile: "プロフィール"
|
||||
drive: "ドライブ"
|
||||
favorites: "お気に入り"
|
||||
lists: "リスト"
|
||||
follow-requests: "フォロー申請"
|
||||
customize: "カスタマイズ"
|
||||
customize: "ホームのカスタマイズ"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
dark: "闇に飲まれる"
|
||||
desktop/views/components/ui.header.nav.vue:
|
||||
home: "ホーム"
|
||||
deck: "デッキ"
|
||||
messaging: "メッセージ"
|
||||
game: "ゲーム"
|
||||
desktop/views/components/ui.header.notifications.vue:
|
||||
@@ -538,6 +772,7 @@ desktop/views/components/received-follow-requests-window.vue:
|
||||
desktop/views/components/user-lists-window.vue:
|
||||
title: "リスト"
|
||||
create-list: "リストを作成"
|
||||
list-name: "リスト名"
|
||||
desktop/views/components/user-preview.vue:
|
||||
notes: "投稿"
|
||||
following: "フォロー"
|
||||
@@ -552,6 +787,33 @@ desktop/views/components/users-list-item.vue:
|
||||
desktop/views/components/window.vue:
|
||||
popout: "ポップアウト"
|
||||
close: "閉じる"
|
||||
desktop/views/pages/admin/admin.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
drive: "ドライブ"
|
||||
users: "ユーザー"
|
||||
update: "更新"
|
||||
desktop/views/pages/admin/admin.dashboard.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
all-users: "全てのユーザー"
|
||||
original-users: "このインスタンスのユーザー"
|
||||
all-notes: "全てのノート"
|
||||
original-notes: "このインスタンスのノート"
|
||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||
suspend-user: "ユーザーの凍結"
|
||||
suspend: "凍結"
|
||||
suspended: "凍結しました"
|
||||
desktop/views/pages/admin/admin.unsuspend-user.vue:
|
||||
unsuspend-user: "ユーザーの凍結の解除"
|
||||
unsuspend: "凍結の解除"
|
||||
unsuspended: "凍結を解除しました"
|
||||
desktop/views/pages/deck/deck.tl-column.vue:
|
||||
is-media-only: "メディア投稿のみ"
|
||||
is-media-view: "メディアビュー"
|
||||
edit: "オプション"
|
||||
desktop/views/pages/deck/deck.note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
desktop/views/pages/welcome.vue:
|
||||
about: "詳しく..."
|
||||
gotit: "わかった"
|
||||
@@ -560,6 +822,7 @@ desktop/views/pages/welcome.vue:
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Misskey Drive"
|
||||
desktop/views/pages/favorites.vue:
|
||||
@@ -574,6 +837,13 @@ desktop/views/pages/selectdrive.vue:
|
||||
ok: "決定"
|
||||
cancel: "キャンセル"
|
||||
upload: "PCからドライブにファイルをアップロード"
|
||||
desktop/views/pages/search.vue:
|
||||
not-available: "検索機能を利用することができません。"
|
||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||
desktop/views/pages/share.vue:
|
||||
share-with: "{}で共有"
|
||||
desktop/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
desktop/views/pages/user-list.users.vue:
|
||||
users: "ユーザー"
|
||||
add-user: "ユーザーを追加"
|
||||
@@ -586,7 +856,7 @@ desktop/views/pages/user/user.friends.vue:
|
||||
title: "よく話すユーザー"
|
||||
loading: "読み込み中"
|
||||
no-users: "よく話すユーザーはいません"
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
desktop/views/pages/user/user.vue:
|
||||
is-suspended: "このユーザーは凍結されています。"
|
||||
is-remote: "このユーザーはリモートユーザーです。"
|
||||
view-remote: "正確な情報を見る"
|
||||
@@ -604,6 +874,13 @@ desktop/views/pages/user/user.profile.vue:
|
||||
mute: "ミュートする"
|
||||
muted: "ミュートしています"
|
||||
unmute: "ミュート解除"
|
||||
push-to-a-list: "リストに追加"
|
||||
list-pushed: "{user}を{list}に追加しました。"
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
posts: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
is-bot: "このアカウントはBotです"
|
||||
desktop/views/pages/user/user.timeline.vue:
|
||||
default: "投稿"
|
||||
with-replies: "投稿と返信"
|
||||
@@ -615,7 +892,7 @@ desktop/views/widgets/notifications.vue:
|
||||
title: "通知"
|
||||
settings: "通知の設定"
|
||||
desktop/views/widgets/polls.vue:
|
||||
title: "投票"
|
||||
title: "アンケート"
|
||||
refresh: "他を見る"
|
||||
nothing: "ありません!"
|
||||
desktop/views/widgets/post-form.vue:
|
||||
@@ -660,8 +937,14 @@ mobile/views/components/drive.file-detail.vue:
|
||||
move: "移動"
|
||||
hash: "ハッシュ (md5)"
|
||||
exif: "EXIF"
|
||||
mobile/views/components/media-image.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
mobile/views/components/media-video.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
mobile/views/components/follow-button.vue:
|
||||
unfollow: "フォロー中"
|
||||
following: "フォロー中"
|
||||
follow: "フォロー"
|
||||
request-pending: "フォロー許可待ち"
|
||||
follow-request: "フォロー申請"
|
||||
@@ -714,10 +997,13 @@ mobile/views/components/sub-note-content.vue:
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
media-count: "{}つのメディア"
|
||||
poll: "投票"
|
||||
poll: "アンケート"
|
||||
mobile/views/components/timeline.vue:
|
||||
empty: "投稿がありません"
|
||||
load-more: "もっと"
|
||||
mobile/views/components/ui.header.vue:
|
||||
welcome-back: "おかえりなさい、"
|
||||
adjective: "さん"
|
||||
mobile/views/components/ui.nav.vue:
|
||||
timeline: "タイムライン"
|
||||
notifications: "通知"
|
||||
@@ -748,6 +1034,8 @@ mobile/views/pages/user-lists.vue:
|
||||
mobile/views/pages/drive.vue:
|
||||
drive: "ドライブ"
|
||||
more: "もっと見る"
|
||||
mobile/views/pages/signup.vue:
|
||||
lets-start: "📦 始めましょう"
|
||||
mobile/views/pages/followers.vue:
|
||||
followers-of: "{}のフォロワー"
|
||||
mobile/views/pages/following.vue:
|
||||
@@ -755,7 +1043,21 @@ mobile/views/pages/following.vue:
|
||||
mobile/views/pages/home.vue:
|
||||
home: "ホーム"
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
mobile/views/pages/welcome.vue:
|
||||
signup: "新規登録"
|
||||
mobile/views/pages/widgets.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||
add-widget: "追加"
|
||||
customization-tips: "カスタマイズのヒント"
|
||||
mobile/views/pages/widgets/activity.vue:
|
||||
activity: "アクティビティ"
|
||||
mobile/views/pages/share.vue:
|
||||
share-with: "{}で共有"
|
||||
mobile/views/pages/messaging.vue:
|
||||
messaging: "メッセージ"
|
||||
mobile/views/pages/messaging-room.vue:
|
||||
@@ -771,6 +1073,8 @@ mobile/views/pages/note.vue:
|
||||
mobile/views/pages/notifications.vue:
|
||||
notifications: "通知"
|
||||
read-all: "すべての通知を既読にしますか?"
|
||||
mobile/views/pages/games/reversi.vue:
|
||||
reversi: "リバーシ"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
name: "名前"
|
||||
@@ -788,6 +1092,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
||||
mobile/views/pages/search.vue:
|
||||
search: "検索"
|
||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||
mobile/views/pages/selectdrive.vue:
|
||||
select-file: "ファイルを選択"
|
||||
mobile/views/pages/settings.vue:
|
||||
@@ -804,7 +1109,8 @@ mobile/views/pages/settings.vue:
|
||||
timeline: "タイムライン"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
||||
show-renoted-my-notes: "自分の投稿のRenoteを表示する"
|
||||
show-local-renotes: "ローカルの投稿のRenoteを表示する"
|
||||
post-style: "投稿の表示スタイル"
|
||||
post-style-standard: "標準"
|
||||
post-style-smart: "スマート"
|
||||
@@ -868,11 +1174,19 @@ docs:
|
||||
properties: "プロパティ"
|
||||
endpoints:
|
||||
params: "パラメータ"
|
||||
no-params: "パラメータはありません"
|
||||
res: "レスポンス"
|
||||
require-credential: "このエンドポイントは認証情報が必須です。"
|
||||
require-permission: "このエンドポイントは{permission}の権限を必要とします。"
|
||||
has-limit: "レートリミットがあります。"
|
||||
duration-limit: "直近{duration}ミリ秒の間のこのエンドポイントへのリクエスト数の合計が{max}を超える場合はリクエストできません。"
|
||||
min-interval-limit: "前回のリクエストから{interval}ミリ秒経っていない場合はリクエストできません。"
|
||||
show-src: "このエンドポイントのソースコードも閲覧できます。"
|
||||
show-src-link: "コードをGitHubで見る"
|
||||
generated: "このドキュメントはAPI定義に基づき自動生成されています。"
|
||||
props:
|
||||
name: "名前"
|
||||
type: "型"
|
||||
optional: "オプション"
|
||||
description: "説明"
|
||||
yes: "はい"
|
||||
no: "いいえ"
|
||||
dev/views/index.vue:
|
||||
manage-apps: "アプリの管理"
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
Misskeyの破壊的変更に対応するいくつかのスニペットがあります。
|
||||
MongoDBシェルで実行する必要のあるものとnodeで直接実行する必要のあるものがあります。
|
||||
ファイル名が `shell.` から始まるものは前者、 `node.` から始まるものは後者です。
|
||||
|
||||
MongoDBシェルで実行する場合、`use`でデータベースを選択しておく必要があります。
|
||||
|
||||
nodeで実行するいくつかのスニペットは、並列処理させる数を引数で設定できるものがあります。
|
||||
処理中にエラーで落ちる場合は、メモリが足りていない可能性があるので、少ない数に設定してみてください。
|
||||
※デフォルトは`5`です。
|
||||
|
||||
ファイルを作成する際は `../init-migration-file.sh -t _type_ -n _name_` を実行すると _type_._unixtime_._name_.js が生成されます
|
||||
@@ -1,37 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
usage() {
|
||||
echo "$0 [-t type] [-n name]"
|
||||
echo " type: [node | shell]"
|
||||
echo " name: if no present, set untitled"
|
||||
exit 0
|
||||
}
|
||||
|
||||
while getopts :t:n:h OPT
|
||||
do
|
||||
case $OPT in
|
||||
t) type=$OPTARG
|
||||
;;
|
||||
n) name=$OPTARG
|
||||
;;
|
||||
h) usage
|
||||
;;
|
||||
\?) usage
|
||||
;;
|
||||
:) usage
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ "$type" = "" ]
|
||||
then
|
||||
echo "no type present!!!"
|
||||
usage
|
||||
fi
|
||||
|
||||
if [ "$name" = "" ]
|
||||
then
|
||||
name="untitled"
|
||||
fi
|
||||
|
||||
touch "$(realpath $(dirname $BASH_SOURCE))/migration/$type.$(date +%s).$name.js"
|
||||
182
package.json
@@ -1,21 +1,18 @@
|
||||
{
|
||||
"name": "misskey",
|
||||
"author": "syuilo <i@syuilo.com>",
|
||||
"version": "2.25.2",
|
||||
"clientVersion": "1.0.6116",
|
||||
"version": "6.4.1",
|
||||
"clientVersion": "1.0.8520",
|
||||
"codename": "nighthike",
|
||||
"main": "./built/index.js",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"config": "node ./cli/init.js",
|
||||
"start": "node ./built",
|
||||
"debug": "DEBUG=misskey:* node ./built",
|
||||
"swagger": "node ./swagger.js",
|
||||
"build": "webpack && gulp build",
|
||||
"webpack": "webpack",
|
||||
"watch": "webpack --watch",
|
||||
"gulp": "gulp build",
|
||||
"rebuild": "gulp rebuild",
|
||||
"clean": "gulp clean",
|
||||
"cleanall": "gulp cleanall",
|
||||
"lint": "gulp lint",
|
||||
@@ -23,19 +20,20 @@
|
||||
"format": "gulp format"
|
||||
},
|
||||
"dependencies": {
|
||||
"@fortawesome/fontawesome": "1.0.1",
|
||||
"@fortawesome/fontawesome-free-brands": "5.0.2",
|
||||
"@fortawesome/fontawesome-free-regular": "5.0.2",
|
||||
"@fortawesome/fontawesome-free-solid": "5.0.2",
|
||||
"@koa/cors": "2.2.1",
|
||||
"@fortawesome/fontawesome": "1.1.8",
|
||||
"@fortawesome/fontawesome-free-brands": "5.0.13",
|
||||
"@fortawesome/fontawesome-free-regular": "5.0.13",
|
||||
"@fortawesome/fontawesome-free-solid": "5.0.13",
|
||||
"@koa/cors": "2.2.2",
|
||||
"@prezzemolo/rap": "0.1.2",
|
||||
"@prezzemolo/zip": "0.0.3",
|
||||
"@types/bcryptjs": "2.4.1",
|
||||
"@types/dateformat": "1.0.1",
|
||||
"@types/debug": "0.0.30",
|
||||
"@types/deep-equal": "1.0.1",
|
||||
"@types/elasticsearch": "5.0.23",
|
||||
"@types/eventemitter3": "2.0.2",
|
||||
"@types/gm": "1.18.0",
|
||||
"@types/double-ended-queue": "2.1.0",
|
||||
"@types/elasticsearch": "5.0.25",
|
||||
"@types/file-type": "5.2.1",
|
||||
"@types/gulp": "3.8.36",
|
||||
"@types/gulp-htmlmin": "1.3.32",
|
||||
"@types/gulp-mocha": "0.0.32",
|
||||
@@ -43,96 +41,99 @@
|
||||
"@types/gulp-replace": "0.0.31",
|
||||
"@types/gulp-uglify": "3.0.5",
|
||||
"@types/gulp-util": "3.0.34",
|
||||
"@types/inquirer": "0.0.41",
|
||||
"@types/is-root": "1.0.0",
|
||||
"@types/is-url": "1.2.28",
|
||||
"@types/js-yaml": "3.11.1",
|
||||
"@types/koa": "2.0.45",
|
||||
"@types/koa-bodyparser": "4.2.0",
|
||||
"@types/js-yaml": "3.11.2",
|
||||
"@types/koa": "2.0.46",
|
||||
"@types/koa-bodyparser": "5.0.1",
|
||||
"@types/koa-compress": "2.0.8",
|
||||
"@types/koa-favicon": "2.0.19",
|
||||
"@types/koa-logger": "3.1.0",
|
||||
"@types/koa-mount": "3.0.1",
|
||||
"@types/koa-multer": "1.0.0",
|
||||
"@types/koa-router": "7.0.28",
|
||||
"@types/koa-router": "7.0.31",
|
||||
"@types/koa-send": "4.1.1",
|
||||
"@types/koa-views": "2.0.3",
|
||||
"@types/koa__cors": "2.2.2",
|
||||
"@types/kue": "0.11.8",
|
||||
"@types/license-checker": "15.0.0",
|
||||
"@types/koa__cors": "2.2.3",
|
||||
"@types/minio": "6.0.2",
|
||||
"@types/mkdirp": "0.5.2",
|
||||
"@types/mocha": "5.2.0",
|
||||
"@types/mongodb": "3.0.18",
|
||||
"@types/monk": "6.0.0",
|
||||
"@types/mocha": "5.2.3",
|
||||
"@types/mongodb": "3.1.4",
|
||||
"@types/ms": "0.7.30",
|
||||
"@types/node": "10.1.2",
|
||||
"@types/nopt": "3.0.29",
|
||||
"@types/parse5": "3.0.0",
|
||||
"@types/node": "10.7.1",
|
||||
"@types/portscanner": "2.1.0",
|
||||
"@types/pug": "2.0.4",
|
||||
"@types/qrcode": "0.8.1",
|
||||
"@types/qrcode": "1.2.0",
|
||||
"@types/ratelimiter": "2.1.28",
|
||||
"@types/redis": "2.8.6",
|
||||
"@types/request": "2.47.0",
|
||||
"@types/request-promise-native": "1.0.14",
|
||||
"@types/request": "2.47.1",
|
||||
"@types/request-promise-native": "1.0.15",
|
||||
"@types/rimraf": "2.0.2",
|
||||
"@types/seedrandom": "2.4.27",
|
||||
"@types/sharp": "0.17.9",
|
||||
"@types/showdown": "1.7.5",
|
||||
"@types/single-line-log": "1.1.0",
|
||||
"@types/speakeasy": "2.0.2",
|
||||
"@types/systeminformation": "3.23.0",
|
||||
"@types/tmp": "0.0.33",
|
||||
"@types/uuid": "3.4.3",
|
||||
"@types/webpack": "4.4.0",
|
||||
"@types/webpack": "4.4.10",
|
||||
"@types/webpack-stream": "3.2.10",
|
||||
"@types/websocket": "0.0.39",
|
||||
"@types/ws": "5.1.1",
|
||||
"@types/ws": "6.0.0",
|
||||
"animejs": "2.2.0",
|
||||
"autosize": "4.0.2",
|
||||
"autwh": "0.1.0",
|
||||
"bcryptjs": "2.4.3",
|
||||
"bootstrap-vue": "2.0.0-rc.6",
|
||||
"cafy": "8.0.0",
|
||||
"bee-queue": "1.2.2",
|
||||
"bootstrap-vue": "2.0.0-rc.11",
|
||||
"cafy": "11.3.0",
|
||||
"chalk": "2.4.1",
|
||||
"commander": "2.17.1",
|
||||
"crc-32": "1.2.0",
|
||||
"css-loader": "0.28.11",
|
||||
"css-loader": "1.0.0",
|
||||
"dateformat": "3.0.3",
|
||||
"debug": "3.1.0",
|
||||
"deep-equal": "1.0.1",
|
||||
"deepcopy": "0.6.3",
|
||||
"diskusage": "0.2.4",
|
||||
"dompurify": "1.0.4",
|
||||
"elasticsearch": "15.0.0",
|
||||
"element-ui": "2.3.9",
|
||||
"emojilib": "2.2.12",
|
||||
"dompurify": "1.0.5",
|
||||
"double-ended-queue": "2.1.0-0",
|
||||
"elasticsearch": "15.1.1",
|
||||
"element-ui": "2.4.6",
|
||||
"emojilib": "2.3.0",
|
||||
"escape-regexp": "0.0.1",
|
||||
"eslint": "4.19.1",
|
||||
"eslint-plugin-vue": "4.5.0",
|
||||
"eslint": "5.0.1",
|
||||
"eslint-plugin-vue": "4.7.1",
|
||||
"eventemitter3": "3.1.0",
|
||||
"exif-js": "2.3.0",
|
||||
"file-loader": "1.1.11",
|
||||
"file-type": "8.0.0",
|
||||
"file-type": "9.0.0",
|
||||
"fuckadblock": "3.2.1",
|
||||
"gm": "1.23.1",
|
||||
"gulp": "3.9.1",
|
||||
"gulp-cssnano": "2.1.3",
|
||||
"gulp-htmlmin": "4.0.0",
|
||||
"gulp-imagemin": "4.1.0",
|
||||
"gulp-mocha": "6.0.0",
|
||||
"gulp-pug": "4.0.1",
|
||||
"gulp-rename": "1.2.3",
|
||||
"gulp-rename": "1.4.0",
|
||||
"gulp-replace": "1.0.0",
|
||||
"gulp-sourcemaps": "2.6.4",
|
||||
"gulp-stylus": "2.7.0",
|
||||
"gulp-tslint": "8.1.3",
|
||||
"gulp-typescript": "4.0.2",
|
||||
"gulp-uglify": "3.0.0",
|
||||
"gulp-uglify": "3.0.1",
|
||||
"gulp-util": "3.0.8",
|
||||
"hard-source-webpack-plugin": "0.6.10",
|
||||
"hard-source-webpack-plugin": "0.12.0",
|
||||
"highlight.js": "9.12.0",
|
||||
"html-minifier": "3.5.16",
|
||||
"html-minifier": "3.5.19",
|
||||
"http-signature": "1.2.0",
|
||||
"inquirer": "5.2.0",
|
||||
"insert-text-at-cursor": "0.1.1",
|
||||
"is-root": "2.0.0",
|
||||
"is-url": "1.2.4",
|
||||
"js-yaml": "3.11.0",
|
||||
"jsdom": "11.11.0",
|
||||
"jquery": "3.3.1",
|
||||
"js-yaml": "3.12.0",
|
||||
"jsdom": "11.12.0",
|
||||
"koa": "2.5.1",
|
||||
"koa-bodyparser": "4.2.1",
|
||||
"koa-compress": "3.0.0",
|
||||
@@ -142,82 +143,91 @@
|
||||
"koa-mount": "3.0.0",
|
||||
"koa-multer": "1.0.2",
|
||||
"koa-router": "7.4.0",
|
||||
"koa-send": "4.1.3",
|
||||
"koa-send": "5.0.0",
|
||||
"koa-slow": "2.1.0",
|
||||
"koa-views": "6.1.4",
|
||||
"kue": "0.11.6",
|
||||
"license-checker": "20.0.0",
|
||||
"loader-utils": "1.1.0",
|
||||
"lodash.assign": "4.2.0",
|
||||
"mecab-async": "0.1.2",
|
||||
"minio": "7.0.0",
|
||||
"mkdirp": "0.5.1",
|
||||
"mocha": "5.2.0",
|
||||
"moji": "0.5.1",
|
||||
"mongodb": "3.0.8",
|
||||
"mongodb": "3.1.1",
|
||||
"monk": "6.0.6",
|
||||
"ms": "2.1.1",
|
||||
"nan": "2.10.0",
|
||||
"node-sass": "4.9.0",
|
||||
"node-sass-json-importer": "3.2.0",
|
||||
"nopt": "4.0.1",
|
||||
"node-sass": "4.9.3",
|
||||
"node-sass-json-importer": "3.3.1",
|
||||
"nprogress": "0.2.0",
|
||||
"object-assign-deep": "0.4.0",
|
||||
"on-build-webpack": "0.1.0",
|
||||
"os-utils": "0.0.14",
|
||||
"parse5": "5.0.0",
|
||||
"parse5": "5.1.0",
|
||||
"portscanner": "2.2.0",
|
||||
"progress-bar-webpack-plugin": "1.11.0",
|
||||
"prominence": "0.2.0",
|
||||
"promise-sequential": "1.1.1",
|
||||
"pug": "2.0.3",
|
||||
"punycode": "2.1.1",
|
||||
"qrcode": "1.2.0",
|
||||
"ratelimiter": "3.0.3",
|
||||
"qrcode": "1.2.2",
|
||||
"ratelimiter": "3.2.0",
|
||||
"recaptcha-promise": "0.1.3",
|
||||
"reconnecting-websocket": "3.2.2",
|
||||
"redis": "2.8.0",
|
||||
"request": "2.87.0",
|
||||
"request": "2.88.0",
|
||||
"request-promise-native": "1.0.5",
|
||||
"rimraf": "2.6.2",
|
||||
"rndstr": "1.0.0",
|
||||
"s-age": "1.1.2",
|
||||
"sass-loader": "7.0.1",
|
||||
"seedrandom": "2.4.3",
|
||||
"sass-loader": "7.1.0",
|
||||
"seedrandom": "2.4.4",
|
||||
"sharp": "0.20.5",
|
||||
"showdown": "1.8.6",
|
||||
"showdown-highlightjs-extension": "0.1.2",
|
||||
"single-line-log": "1.1.2",
|
||||
"speakeasy": "2.0.0",
|
||||
"style-loader": "0.21.0",
|
||||
"stringz": "1.0.0",
|
||||
"style-loader": "0.22.1",
|
||||
"stylus": "0.54.5",
|
||||
"stylus-loader": "3.0.2",
|
||||
"summaly": "2.0.6",
|
||||
"swagger-jsdoc": "1.9.7",
|
||||
"summaly": "2.1.3",
|
||||
"systeminformation": "3.42.9",
|
||||
"syuilo-password-strength": "0.0.1",
|
||||
"tcp-port-used": "0.1.2",
|
||||
"textarea-caret": "3.1.0",
|
||||
"tmp": "0.0.33",
|
||||
"ts-loader": "4.3.0",
|
||||
"ts-node": "6.0.4",
|
||||
"ts-loader": "4.4.1",
|
||||
"ts-node": "7.0.1",
|
||||
"tslint": "5.10.0",
|
||||
"typescript": "2.8.3",
|
||||
"typescript-eslint-parser": "15.0.0",
|
||||
"typescript": "2.9.2",
|
||||
"typescript-eslint-parser": "18.0.0",
|
||||
"uglify-es": "3.3.9",
|
||||
"url-loader": "1.0.1",
|
||||
"uuid": "3.2.1",
|
||||
"url-loader": "1.1.1",
|
||||
"uuid": "3.3.2",
|
||||
"v-animate-css": "0.0.2",
|
||||
"vue": "2.5.16",
|
||||
"vue-cropperjs": "2.2.0",
|
||||
"vue-js-modal": "1.3.13",
|
||||
"vue": "2.5.17",
|
||||
"vue-cropperjs": "2.2.1",
|
||||
"vue-js-modal": "1.3.17",
|
||||
"vue-json-tree-view": "2.1.4",
|
||||
"vue-loader": "15.2.1",
|
||||
"vue-material": "^1.0.0-beta-10.2",
|
||||
"vue-loader": "15.3.0",
|
||||
"vue-router": "3.0.1",
|
||||
"vue-template-compiler": "2.5.16",
|
||||
"vue-style-loader": "4.1.2",
|
||||
"vue-template-compiler": "2.5.17",
|
||||
"vuedraggable": "2.16.0",
|
||||
"vuex": "3.0.1",
|
||||
"vuex-persistedstate": "^2.5.4",
|
||||
"web-push": "3.3.1",
|
||||
"vuex-persistedstate": "2.5.4",
|
||||
"web-push": "3.3.2",
|
||||
"webfinger.js": "2.6.6",
|
||||
"webpack": "4.9.1",
|
||||
"webpack-cli": "2.1.4",
|
||||
"webpack": "4.16.5",
|
||||
"webpack-cli": "3.1.0",
|
||||
"websocket": "1.0.26",
|
||||
"ws": "5.2.0",
|
||||
"xev": "2.0.0"
|
||||
"ws": "6.0.0",
|
||||
"xev": "2.0.1"
|
||||
},
|
||||
"greenkeeper": {
|
||||
"ignore": [
|
||||
"deepcopy",
|
||||
"cafy",
|
||||
"@types/gulp"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
export default user => {
|
||||
return user.host === null ? user.username : `${user.username}@${user.host}`;
|
||||
};
|
||||
@@ -7,11 +7,6 @@ html
|
||||
cursor progress !important
|
||||
|
||||
body
|
||||
// for md
|
||||
font-size 16px !important
|
||||
line-height initial !important
|
||||
letter-spacing initial !important
|
||||
|
||||
overflow-wrap break-word
|
||||
|
||||
#error
|
||||
|
||||
@@ -8,14 +8,14 @@ import VueRouter from 'vue-router';
|
||||
import './style.styl';
|
||||
|
||||
import init from '../init';
|
||||
|
||||
import Index from './views/index.vue';
|
||||
import * as config from '../config';
|
||||
|
||||
/**
|
||||
* init
|
||||
*/
|
||||
init(launch => {
|
||||
document.title = 'Misskey | アプリの連携';
|
||||
document.title = `${config.name} | %i18n:common.application-authorization%`;
|
||||
|
||||
// Init router
|
||||
const router = new VueRouter({
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<template>
|
||||
<div class="form">
|
||||
<header>
|
||||
<h1><i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?</h1>
|
||||
<img :src="`${app.iconUrl}?thumbnail&size=64`"/>
|
||||
<h1>%i18n:@share-access%</h1>
|
||||
<img :src="app.iconUrl"/>
|
||||
</header>
|
||||
<div class="app">
|
||||
<section>
|
||||
@@ -11,25 +11,25 @@
|
||||
<p class="description">{{ app.description }}</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>このアプリは次の権限を要求しています:</h2>
|
||||
<h2>%i18n:@permission-ask%</h2>
|
||||
<ul>
|
||||
<template v-for="p in app.permission">
|
||||
<li v-if="p == 'account-read'">アカウントの情報を見る。</li>
|
||||
<li v-if="p == 'account-write'">アカウントの情報を操作する。</li>
|
||||
<li v-if="p == 'note-write'">投稿する。</li>
|
||||
<li v-if="p == 'like-write'">いいねしたりいいね解除する。</li>
|
||||
<li v-if="p == 'following-write'">フォローしたりフォロー解除する。</li>
|
||||
<li v-if="p == 'drive-read'">ドライブを見る。</li>
|
||||
<li v-if="p == 'drive-write'">ドライブを操作する。</li>
|
||||
<li v-if="p == 'notification-read'">通知を見る。</li>
|
||||
<li v-if="p == 'notification-write'">通知を操作する。</li>
|
||||
<li v-if="p == 'account-read'">%i18n:@account-read%</li>
|
||||
<li v-if="p == 'account-write'">%i18n:@account-write%</li>
|
||||
<li v-if="p == 'note-write'">%i18n:@note-write%</li>
|
||||
<li v-if="p == 'like-write'">%i18n:@like-write%</li>
|
||||
<li v-if="p == 'following-write'">%i18n:@following-write%</li>
|
||||
<li v-if="p == 'drive-read'">%i18n:@drive-read%</li>
|
||||
<li v-if="p == 'drive-write'">%i18n:@drive-write%</li>
|
||||
<li v-if="p == 'notification-read'">%i18n:@notification-read%</li>
|
||||
<li v-if="p == 'notification-write'">%i18n:@notification-write%</li>
|
||||
</template>
|
||||
</ul>
|
||||
</section>
|
||||
</div>
|
||||
<div class="action">
|
||||
<button @click="cancel">キャンセル</button>
|
||||
<button @click="accept">アクセスを許可</button>
|
||||
<button @click="cancel">%i18n:@cancel%</button>
|
||||
<button @click="accept">%i18n:@accept%</button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="index">
|
||||
<main v-if="$store.getters.isSignedIn">
|
||||
<p class="fetching" v-if="fetching">読み込み中<mk-ellipsis/></p>
|
||||
<p class="fetching" v-if="fetching">%i18n:@loading%<mk-ellipsis/></p>
|
||||
<x-form
|
||||
class="form"
|
||||
ref="form"
|
||||
@@ -11,20 +11,20 @@
|
||||
@accepted="accepted"
|
||||
/>
|
||||
<div class="denied" v-if="state == 'denied'">
|
||||
<h1>アプリケーションの連携をキャンセルしました。</h1>
|
||||
<p>このアプリがあなたのアカウントにアクセスすることはありません。</p>
|
||||
<h1>%i18n:@denied%</h1>
|
||||
<p>%i18n:@denied-paragraph%</p>
|
||||
</div>
|
||||
<div class="accepted" v-if="state == 'accepted'">
|
||||
<h1>{{ session.app.isAuthorized ? 'このアプリは既に連携済みです' : 'アプリケーションの連携を許可しました' }}</h1>
|
||||
<p v-if="session.app.callbackUrl">アプリケーションに戻っています<mk-ellipsis/></p>
|
||||
<p v-if="!session.app.callbackUrl">アプリケーションに戻って、やっていってください。</p>
|
||||
<h1>{{ session.app.isAuthorized ? '%i18n:@already-authorized%' : '%i18n:@allowed%' }}</h1>
|
||||
<p v-if="session.app.callbackUrl">%i18n:@callback-url%<mk-ellipsis/></p>
|
||||
<p v-if="!session.app.callbackUrl">%i18n:@please-go-back%</p>
|
||||
</div>
|
||||
<div class="error" v-if="state == 'fetch-session-error'">
|
||||
<p>セッションが存在しません。</p>
|
||||
<p>%i18n:@error%</p>
|
||||
</div>
|
||||
</main>
|
||||
<main class="signin" v-if="!$store.getters.isSignedIn">
|
||||
<h1>サインインしてください</h1>
|
||||
<h1>%i18n:@sign-in%</h1>
|
||||
<mk-signin/>
|
||||
</main>
|
||||
<footer><img src="/assets/auth/icon.svg" alt="Misskey"/></footer>
|
||||
|
||||
@@ -42,7 +42,7 @@ html
|
||||
| JavaScriptを有効にしてください
|
||||
br
|
||||
| Please turn on your JavaScript
|
||||
div#ini: p
|
||||
span .
|
||||
span .
|
||||
span .
|
||||
div#ini.
|
||||
<svg viewBox="0 0 50 50">
|
||||
<path fill=#{themeColor} d="M25.251,6.461c-10.318,0-18.683,8.365-18.683,18.683h4.068c0-8.071,6.543-14.615,14.615-14.615V6.461z" />
|
||||
</svg>
|
||||
|
||||
@@ -9,9 +9,9 @@ export default function<T extends object>(data: {
|
||||
widget: {
|
||||
type: Object
|
||||
},
|
||||
isMobile: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
platform: {
|
||||
type: String,
|
||||
required: true
|
||||
},
|
||||
isCustomizeMode: {
|
||||
type: Boolean,
|
||||
@@ -66,17 +66,10 @@ export default function<T extends object>(data: {
|
||||
|
||||
this.bakeProps();
|
||||
|
||||
if (this.isMobile) {
|
||||
(this as any).api('i/update_mobile_home', {
|
||||
id: this.id,
|
||||
data: this.props
|
||||
});
|
||||
} else {
|
||||
(this as any).api('i/update_home', {
|
||||
id: this.id,
|
||||
data: this.props
|
||||
});
|
||||
}
|
||||
(this as any).api('i/update_widget', {
|
||||
id: this.id,
|
||||
data: this.props
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
export default function(note) {
|
||||
if (note.text == null) return true;
|
||||
|
||||
let txt = note.text;
|
||||
|
||||
if (note.media) {
|
||||
note.media.forEach(file => {
|
||||
txt = txt.replace(file.url, '');
|
||||
if (file.src) txt = txt.replace(file.src, '');
|
||||
});
|
||||
|
||||
if (txt == '') return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
@@ -23,7 +23,10 @@ export default async function(mios: MiOS, force = false, silent = false) {
|
||||
}
|
||||
|
||||
if (!silent) {
|
||||
alert('%i18n:common.update-available%'.replace('{newer}', newer).replace('{current}', current));
|
||||
mios.apis.dialog({
|
||||
title: '%i18n:common.update-available-title%',
|
||||
text: '%i18n:common.update-available%'.replace('{newer}', newer).replace('{current}', current)
|
||||
});
|
||||
}
|
||||
|
||||
return newer;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import getNoteSummary from '../../../../renderers/get-note-summary';
|
||||
import getReactionEmoji from '../../../../renderers/get-reaction-emoji';
|
||||
import getUserName from '../../../../renderers/get-user-name';
|
||||
import getNoteSummary from '../../../../misc/get-note-summary';
|
||||
import getReactionEmoji from '../../../../misc/get-reaction-emoji';
|
||||
import getUserName from '../../../../misc/get-user-name';
|
||||
|
||||
type Notification = {
|
||||
title: string;
|
||||
@@ -15,53 +15,59 @@ export default function(type, data): Notification {
|
||||
switch (type) {
|
||||
case 'drive_file_created':
|
||||
return {
|
||||
title: 'ファイルがアップロードされました',
|
||||
title: '%i18n:common.notification.file-uploaded%',
|
||||
body: data.name,
|
||||
icon: data.url + '?thumbnail&size=64'
|
||||
};
|
||||
|
||||
case 'mention':
|
||||
return {
|
||||
title: `${getUserName(data.user)}さんから:`,
|
||||
body: getNoteSummary(data),
|
||||
icon: data.user.avatarUrl + '?thumbnail&size=64'
|
||||
};
|
||||
|
||||
case 'reply':
|
||||
return {
|
||||
title: `${getUserName(data.user)}さんから返信:`,
|
||||
body: getNoteSummary(data),
|
||||
icon: data.user.avatarUrl + '?thumbnail&size=64'
|
||||
};
|
||||
|
||||
case 'quote':
|
||||
return {
|
||||
title: `${getUserName(data.user)}さんが引用:`,
|
||||
body: getNoteSummary(data),
|
||||
icon: data.user.avatarUrl + '?thumbnail&size=64'
|
||||
};
|
||||
|
||||
case 'reaction':
|
||||
return {
|
||||
title: `${getUserName(data.user)}: ${getReactionEmoji(data.reaction)}:`,
|
||||
body: getNoteSummary(data.note),
|
||||
icon: data.user.avatarUrl + '?thumbnail&size=64'
|
||||
icon: data.url
|
||||
};
|
||||
|
||||
case 'unread_messaging_message':
|
||||
return {
|
||||
title: `${getUserName(data.user)}さんからメッセージ:`,
|
||||
title: '%i18n:common.notification.message-from%'.split("{}")[0] + `${getUserName(data.user)}` + '%i18n:common.notification.message-from%'.split("{}")[1] ,
|
||||
body: data.text, // TODO: getMessagingMessageSummary(data),
|
||||
icon: data.user.avatarUrl + '?thumbnail&size=64'
|
||||
icon: data.user.avatarUrl
|
||||
};
|
||||
|
||||
case 'othello_invited':
|
||||
case 'reversi_invited':
|
||||
return {
|
||||
title: '対局への招待があります',
|
||||
body: `${getUserName(data.parent)}さんから`,
|
||||
icon: data.parent.avatarUrl + '?thumbnail&size=64'
|
||||
title: '%i18n:common.notification.reversi-invited%',
|
||||
body: '%i18n:common.notification.reversi-invited-by%'.split("{}")[0] + `${getUserName(data.parent)}` + '%i18n:common.notification.reversi-invited-by%'.split("{}")[1],
|
||||
icon: data.parent.avatarUrl
|
||||
};
|
||||
|
||||
case 'notification':
|
||||
switch (data.type) {
|
||||
case 'mention':
|
||||
return {
|
||||
title: '%i18n:common.notification.notified-by%'.split("{}")[0] + `${getUserName(data.user)}:` + '%i18n:common.notification.notified-by%'.split("{}")[1],
|
||||
body: getNoteSummary(data),
|
||||
icon: data.user.avatarUrl
|
||||
};
|
||||
|
||||
case 'reply':
|
||||
return {
|
||||
title: '%i18n:common.notification.reply-from%'.split("{}")[0] + `${getUserName(data.user)}` + '%i18n:common.notification.reply-from%'.split("{}")[1],
|
||||
body: getNoteSummary(data),
|
||||
icon: data.user.avatarUrl
|
||||
};
|
||||
|
||||
case 'quote':
|
||||
return {
|
||||
title: '%i18n:common.notification.quoted-by%'.split("{}")[0] + `${getUserName(data.user)}` + '%i18n:common.notification.quoted-by%'.split("{}")[1],
|
||||
body: getNoteSummary(data),
|
||||
icon: data.user.avatarUrl
|
||||
};
|
||||
|
||||
case 'reaction':
|
||||
return {
|
||||
title: `${getUserName(data.user)}: ${getReactionEmoji(data.reaction)}:`,
|
||||
body: getNoteSummary(data.note),
|
||||
icon: data.user.avatarUrl
|
||||
};
|
||||
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
export default date => {
|
||||
if (typeof date == 'string') date = new Date(date);
|
||||
return (
|
||||
date.getFullYear() + '年' +
|
||||
(date.getMonth() + 1) + '月' +
|
||||
date.getDate() + '日' +
|
||||
' ' +
|
||||
date.getHours() + '時' +
|
||||
date.getMinutes() + '分' +
|
||||
' ' +
|
||||
`(${['日', '月', '火', '水', '木', '金', '土'][date.getDay()]})`
|
||||
);
|
||||
};
|
||||
@@ -5,8 +5,8 @@ declare const fuckAdBlock: any;
|
||||
export default (os) => {
|
||||
function adBlockDetected() {
|
||||
os.apis.dialog({
|
||||
title: '%fa:exclamation-triangle%広告ブロッカーを無効にしてください',
|
||||
text: '<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。',
|
||||
title: '%fa:exclamation-triangle%%i18n:common.adblock.detected%',
|
||||
text: '%i18n:common.adblock.warning%',
|
||||
actins: [{
|
||||
text: 'OK'
|
||||
}]
|
||||
|
||||
10
src/client/app/common/scripts/get-face.ts
Normal file
@@ -0,0 +1,10 @@
|
||||
const faces = [
|
||||
'(=^・・^=)',
|
||||
'v(\'ω\')v',
|
||||
'🐡( \'-\' 🐡 )フグパンチ!!!!',
|
||||
'🖕(´・_・`)🖕',
|
||||
'(。>﹏<。)',
|
||||
'(Δ・x・Δ)'
|
||||
];
|
||||
|
||||
export default () => faces[Math.floor(Math.random() * faces.length)];
|
||||
@@ -1,5 +0,0 @@
|
||||
export default () => [
|
||||
'(=^・・^=)',
|
||||
'v(‘ω’)v',
|
||||
'🐡( \'-\' 🐡 )フグパンチ!!!!'
|
||||
][Math.floor(Math.random() * 3)];
|
||||
@@ -0,0 +1,11 @@
|
||||
import Stream from '../../stream';
|
||||
import MiOS from '../../../../../mios';
|
||||
|
||||
export class ReversiGameStream extends Stream {
|
||||
constructor(os: MiOS, me, game) {
|
||||
super(os, 'games/reversi-game', {
|
||||
i: me ? me.token : null,
|
||||
game: game.id
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
import StreamManager from '../../stream-manager';
|
||||
import Stream from '../../stream';
|
||||
import MiOS from '../../../../../mios';
|
||||
|
||||
export class ReversiStream extends Stream {
|
||||
constructor(os: MiOS, me) {
|
||||
super(os, 'games/reversi', {
|
||||
i: me.token
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export class ReversiStreamManager extends StreamManager<ReversiStream> {
|
||||
private me;
|
||||
private os: MiOS;
|
||||
|
||||
constructor(os: MiOS, me) {
|
||||
super();
|
||||
|
||||
this.me = me;
|
||||
this.os = os;
|
||||
}
|
||||
|
||||
public getConnection() {
|
||||
if (this.connection == null) {
|
||||
this.connection = new ReversiStream(this.os, this.me);
|
||||
}
|
||||
|
||||
return this.connection;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,3 @@
|
||||
import * as merge from 'object-assign-deep';
|
||||
|
||||
import Stream from './stream';
|
||||
import StreamManager from './stream-manager';
|
||||
import MiOS from '../../../mios';
|
||||
@@ -60,25 +58,18 @@ export class HomeStream extends Stream {
|
||||
});
|
||||
|
||||
this.on('home_updated', x => {
|
||||
if (x.home) {
|
||||
os.store.commit('settings/setHome', x.home);
|
||||
} else {
|
||||
os.store.commit('settings/setHomeWidget', {
|
||||
id: x.id,
|
||||
data: x.data
|
||||
});
|
||||
}
|
||||
os.store.commit('settings/setHome', x);
|
||||
});
|
||||
|
||||
this.on('mobile_home_updated', x => {
|
||||
if (x.home) {
|
||||
os.store.commit('settings/setMobileHome', x.home);
|
||||
} else {
|
||||
os.store.commit('settings/setMobileHomeWidget', {
|
||||
id: x.id,
|
||||
data: x.data
|
||||
});
|
||||
}
|
||||
os.store.commit('settings/setMobileHome', x);
|
||||
});
|
||||
|
||||
this.on('widgetUpdated', x => {
|
||||
os.store.commit('settings/setWidget', {
|
||||
id: x.id,
|
||||
data: x.data
|
||||
});
|
||||
});
|
||||
|
||||
// トークンが再生成されたとき
|
||||
|
||||
@@ -1,16 +1,19 @@
|
||||
import StreamManager from './stream-manager';
|
||||
import Stream from './stream';
|
||||
import StreamManager from './stream-manager';
|
||||
import MiOS from '../../../mios';
|
||||
|
||||
export class OthelloStream extends Stream {
|
||||
/**
|
||||
* Hybrid timeline stream connection
|
||||
*/
|
||||
export class HybridTimelineStream extends Stream {
|
||||
constructor(os: MiOS, me) {
|
||||
super(os, 'othello', {
|
||||
super(os, 'hybrid-timeline', {
|
||||
i: me.token
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export class OthelloStreamManager extends StreamManager<OthelloStream> {
|
||||
export class HybridTimelineStreamManager extends StreamManager<HybridTimelineStream> {
|
||||
private me;
|
||||
private os: MiOS;
|
||||
|
||||
@@ -23,7 +26,7 @@ export class OthelloStreamManager extends StreamManager<OthelloStream> {
|
||||
|
||||
public getConnection() {
|
||||
if (this.connection == null) {
|
||||
this.connection = new OthelloStream(this.os, this.me);
|
||||
this.connection = new HybridTimelineStream(this.os, this.me);
|
||||
}
|
||||
|
||||
return this.connection;
|
||||
@@ -3,15 +3,15 @@ import StreamManager from './stream-manager';
|
||||
import MiOS from '../../../mios';
|
||||
|
||||
/**
|
||||
* Server stream connection
|
||||
* Notes stats stream connection
|
||||
*/
|
||||
export class ServerStream extends Stream {
|
||||
export class NotesStatsStream extends Stream {
|
||||
constructor(os: MiOS) {
|
||||
super(os, 'server');
|
||||
super(os, 'notes-stats');
|
||||
}
|
||||
}
|
||||
|
||||
export class ServerStreamManager extends StreamManager<ServerStream> {
|
||||
export class NotesStatsStreamManager extends StreamManager<NotesStatsStream> {
|
||||
private os: MiOS;
|
||||
|
||||
constructor(os: MiOS) {
|
||||
@@ -22,7 +22,7 @@ export class ServerStreamManager extends StreamManager<ServerStream> {
|
||||
|
||||
public getConnection() {
|
||||
if (this.connection == null) {
|
||||
this.connection = new ServerStream(this.os);
|
||||
this.connection = new NotesStatsStream(this.os);
|
||||
}
|
||||
|
||||
return this.connection;
|
||||
@@ -1,11 +0,0 @@
|
||||
import Stream from './stream';
|
||||
import MiOS from '../../../mios';
|
||||
|
||||
export class OthelloGameStream extends Stream {
|
||||
constructor(os: MiOS, me, game) {
|
||||
super(os, 'othello-game', {
|
||||
i: me ? me.token : null,
|
||||
game: game.id
|
||||
});
|
||||
}
|
||||
}
|
||||
30
src/client/app/common/scripts/streaming/server-stats.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
import Stream from './stream';
|
||||
import StreamManager from './stream-manager';
|
||||
import MiOS from '../../../mios';
|
||||
|
||||
/**
|
||||
* Server stats stream connection
|
||||
*/
|
||||
export class ServerStatsStream extends Stream {
|
||||
constructor(os: MiOS) {
|
||||
super(os, 'server-stats');
|
||||
}
|
||||
}
|
||||
|
||||
export class ServerStatsStreamManager extends StreamManager<ServerStatsStream> {
|
||||
private os: MiOS;
|
||||
|
||||
constructor(os: MiOS) {
|
||||
super();
|
||||
|
||||
this.os = os;
|
||||
}
|
||||
|
||||
public getConnection() {
|
||||
if (this.connection == null) {
|
||||
this.connection = new ServerStatsStream(this.os);
|
||||
}
|
||||
|
||||
return this.connection;
|
||||
}
|
||||
}
|
||||
@@ -39,13 +39,17 @@ export default Vue.extend({
|
||||
dark: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
smooth: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
|
||||
data() {
|
||||
return {
|
||||
now: new Date(),
|
||||
clock: null,
|
||||
enabled: true,
|
||||
|
||||
graduationsPadding: 0.5,
|
||||
handsPadding: 1,
|
||||
@@ -74,6 +78,9 @@ export default Vue.extend({
|
||||
return themeColor;
|
||||
},
|
||||
|
||||
ms(): number {
|
||||
return this.now.getMilliseconds() * this.smooth;
|
||||
}
|
||||
s(): number {
|
||||
return this.now.getSeconds();
|
||||
},
|
||||
@@ -85,13 +92,13 @@ export default Vue.extend({
|
||||
},
|
||||
|
||||
hAngle(): number {
|
||||
return Math.PI * (this.h % 12 + this.m / 60) / 6;
|
||||
return Math.PI * (this.h % 12 + (this.m + (this.s + this.ms / 1000) / 60) / 60) / 6;
|
||||
},
|
||||
mAngle(): number {
|
||||
return Math.PI * (this.m + this.s / 60) / 30;
|
||||
return Math.PI * (this.m + (this.s + this.ms / 1000) / 60) / 30;
|
||||
},
|
||||
sAngle(): number {
|
||||
return Math.PI * this.s / 30;
|
||||
return Math.PI * (this.s + this.ms / 1000) / 30;
|
||||
},
|
||||
|
||||
graduations(): any {
|
||||
@@ -106,11 +113,17 @@ export default Vue.extend({
|
||||
},
|
||||
|
||||
mounted() {
|
||||
this.clock = setInterval(this.tick, 1000);
|
||||
const update = () => {
|
||||
if (this.enabled) {
|
||||
this.tick();
|
||||
requestAnimationFrame(update);
|
||||
}
|
||||
};
|
||||
update();
|
||||
},
|
||||
|
||||
beforeDestroy() {
|
||||
clearInterval(this.clock);
|
||||
this.enabled = false;
|
||||
},
|
||||
|
||||
methods: {
|
||||
|
||||
@@ -2,11 +2,16 @@
|
||||
<div class="mk-autocomplete" @contextmenu.prevent="() => {}">
|
||||
<ol class="users" ref="suggests" v-if="users.length > 0">
|
||||
<li v-for="user in users" @click="complete(type, user)" @keydown="onKeydown" tabindex="-1">
|
||||
<img class="avatar" :src="`${user.avatarUrl}?thumbnail&size=32`" alt=""/>
|
||||
<img class="avatar" :src="user.avatarUrl" alt=""/>
|
||||
<span class="name">{{ user | userName }}</span>
|
||||
<span class="username">@{{ user | acct }}</span>
|
||||
</li>
|
||||
</ol>
|
||||
<ol class="hashtags" ref="suggests" v-if="hashtags.length > 0">
|
||||
<li v-for="hashtag in hashtags" @click="complete(type, hashtag)" @keydown="onKeydown" tabindex="-1">
|
||||
<span class="name">{{ hashtag }}</span>
|
||||
</li>
|
||||
</ol>
|
||||
<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">
|
||||
<span class="emoji">{{ emoji.emoji }}</span>
|
||||
@@ -48,33 +53,33 @@ emjdb.sort((a, b) => a.name.length - b.name.length);
|
||||
|
||||
export default Vue.extend({
|
||||
props: ['type', 'q', 'textarea', 'complete', 'close', 'x', 'y'],
|
||||
|
||||
data() {
|
||||
return {
|
||||
fetching: true,
|
||||
users: [],
|
||||
hashtags: [],
|
||||
emojis: [],
|
||||
select: -1,
|
||||
emojilib
|
||||
}
|
||||
},
|
||||
|
||||
computed: {
|
||||
items(): HTMLCollection {
|
||||
return (this.$refs.suggests as Element).children;
|
||||
}
|
||||
},
|
||||
|
||||
updated() {
|
||||
//#region 位置調整
|
||||
const margin = 32;
|
||||
|
||||
if (this.x + this.$el.offsetWidth > window.innerWidth - margin) {
|
||||
this.$el.style.left = (this.x - this.$el.offsetWidth) + 'px';
|
||||
this.$el.style.marginLeft = '-16px';
|
||||
if (this.x + this.$el.offsetWidth > window.innerWidth) {
|
||||
this.$el.style.left = (window.innerWidth - this.$el.offsetWidth) + 'px';
|
||||
} else {
|
||||
this.$el.style.left = this.x + 'px';
|
||||
this.$el.style.marginLeft = '0';
|
||||
}
|
||||
|
||||
if (this.y + this.$el.offsetHeight > window.innerHeight - margin) {
|
||||
if (this.y + this.$el.offsetHeight > window.innerHeight) {
|
||||
this.$el.style.top = (this.y - this.$el.offsetHeight) + 'px';
|
||||
this.$el.style.marginTop = '0';
|
||||
} else {
|
||||
@@ -83,6 +88,7 @@ export default Vue.extend({
|
||||
}
|
||||
//#endregion
|
||||
},
|
||||
|
||||
mounted() {
|
||||
this.textarea.addEventListener('keydown', this.onKeydown);
|
||||
|
||||
@@ -100,6 +106,7 @@ export default Vue.extend({
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
beforeDestroy() {
|
||||
this.textarea.removeEventListener('keydown', this.onKeydown);
|
||||
|
||||
@@ -107,6 +114,7 @@ export default Vue.extend({
|
||||
el.removeEventListener('mousedown', this.onMousedown);
|
||||
});
|
||||
},
|
||||
|
||||
methods: {
|
||||
exec() {
|
||||
this.select = -1;
|
||||
@@ -117,13 +125,14 @@ export default Vue.extend({
|
||||
}
|
||||
|
||||
if (this.type == 'user') {
|
||||
const cache = sessionStorage.getItem(this.q);
|
||||
const cacheKey = 'autocomplete:user:' + this.q;
|
||||
const cache = sessionStorage.getItem(cacheKey);
|
||||
if (cache) {
|
||||
const users = JSON.parse(cache);
|
||||
this.users = users;
|
||||
this.fetching = false;
|
||||
} else {
|
||||
(this as any).api('users/search_by_username', {
|
||||
(this as any).api('users/search', {
|
||||
query: this.q,
|
||||
limit: 30
|
||||
}).then(users => {
|
||||
@@ -131,9 +140,33 @@ export default Vue.extend({
|
||||
this.fetching = false;
|
||||
|
||||
// キャッシュ
|
||||
sessionStorage.setItem(this.q, JSON.stringify(users));
|
||||
sessionStorage.setItem(cacheKey, JSON.stringify(users));
|
||||
});
|
||||
}
|
||||
} else if (this.type == 'hashtag') {
|
||||
if (this.q == null || this.q == '') {
|
||||
this.hashtags = JSON.parse(localStorage.getItem('hashtags') || '[]');
|
||||
this.fetching = false;
|
||||
} else {
|
||||
const cacheKey = 'autocomplete:hashtag:' + this.q;
|
||||
const cache = sessionStorage.getItem(cacheKey);
|
||||
if (cache) {
|
||||
const hashtags = JSON.parse(cache);
|
||||
this.hashtags = hashtags;
|
||||
this.fetching = false;
|
||||
} else {
|
||||
(this as any).api('hashtags/search', {
|
||||
query: this.q,
|
||||
limit: 30
|
||||
}).then(hashtags => {
|
||||
this.hashtags = hashtags;
|
||||
this.fetching = false;
|
||||
|
||||
// キャッシュ
|
||||
sessionStorage.setItem(cacheKey, JSON.stringify(hashtags));
|
||||
});
|
||||
}
|
||||
}
|
||||
} else if (this.type == 'emoji') {
|
||||
const matched = [];
|
||||
emjdb.some(x => {
|
||||
@@ -228,12 +261,13 @@ export default Vue.extend({
|
||||
<style lang="stylus" scoped>
|
||||
@import '~const.styl'
|
||||
|
||||
.mk-autocomplete
|
||||
root(isDark)
|
||||
position fixed
|
||||
z-index 65535
|
||||
max-width 100%
|
||||
margin-top calc(1em + 8px)
|
||||
overflow hidden
|
||||
background #fff
|
||||
background isDark ? #313543 : #fff
|
||||
border solid 1px rgba(#000, 0.1)
|
||||
border-radius 4px
|
||||
transition top 0.1s ease, left 0.1s ease
|
||||
@@ -248,7 +282,8 @@ export default Vue.extend({
|
||||
list-style none
|
||||
|
||||
> li
|
||||
display block
|
||||
display flex
|
||||
align-items center
|
||||
padding 4px 12px
|
||||
white-space nowrap
|
||||
overflow hidden
|
||||
@@ -259,7 +294,13 @@ export default Vue.extend({
|
||||
&, *
|
||||
user-select none
|
||||
|
||||
*
|
||||
overflow hidden
|
||||
text-overflow ellipsis
|
||||
|
||||
&:hover
|
||||
background isDark ? rgba(#fff, 0.1) : rgba(#000, 0.1)
|
||||
|
||||
&[data-selected='true']
|
||||
background $theme-color
|
||||
|
||||
@@ -275,7 +316,6 @@ export default Vue.extend({
|
||||
> .users > li
|
||||
|
||||
.avatar
|
||||
vertical-align middle
|
||||
min-width 28px
|
||||
min-height 28px
|
||||
max-width 28px
|
||||
@@ -285,10 +325,15 @@ export default Vue.extend({
|
||||
|
||||
.name
|
||||
margin 0 8px 0 0
|
||||
color rgba(#000, 0.8)
|
||||
color isDark ? rgba(#fff, 0.8) : rgba(#000, 0.8)
|
||||
|
||||
.username
|
||||
color rgba(#000, 0.3)
|
||||
color isDark ? rgba(#fff, 0.3) : rgba(#000, 0.3)
|
||||
|
||||
> .hashtags > li
|
||||
|
||||
.name
|
||||
color isDark ? rgba(#fff, 0.8) : rgba(#000, 0.8)
|
||||
|
||||
> .emojis > li
|
||||
|
||||
@@ -298,10 +343,15 @@ export default Vue.extend({
|
||||
width 24px
|
||||
|
||||
.name
|
||||
color rgba(#000, 0.8)
|
||||
color isDark ? rgba(#fff, 0.8) : rgba(#000, 0.8)
|
||||
|
||||
.alias
|
||||
margin 0 0 0 8px
|
||||
color rgba(#000, 0.3)
|
||||
color isDark ? rgba(#fff, 0.3) : rgba(#000, 0.3)
|
||||
|
||||
.mk-autocomplete[data-darkmode]
|
||||
root(true)
|
||||
|
||||
.mk-autocomplete:not([data-darkmode])
|
||||
root(false)
|
||||
</style>
|
||||
|
||||
@@ -1,6 +1,16 @@
|
||||
<template>
|
||||
<router-link class="mk-avatar" :to="user | userPage" :title="user | acct" :target="target" :style="style" v-if="disablePreview"></router-link>
|
||||
<router-link class="mk-avatar" :to="user | userPage" :title="user | acct" :target="target" :style="style" v-else v-user-preview="user.id"></router-link>
|
||||
<span class="mk-avatar" :class="{ cat }" :title="user | acct" v-if="disableLink && !disablePreview" v-user-preview="user.id" @click="onClick">
|
||||
<span class="inner" :style="style"></span>
|
||||
</span>
|
||||
<span class="mk-avatar" :class="{ cat }" :title="user | acct" v-else-if="disableLink && disablePreview" @click="onClick">
|
||||
<span class="inner" :style="style"></span>
|
||||
</span>
|
||||
<router-link class="mk-avatar" :class="{ cat }" :to="user | userPage" :title="user | acct" :target="target" v-else-if="!disableLink && !disablePreview" v-user-preview="user.id">
|
||||
<span class="inner" :style="style"></span>
|
||||
</router-link>
|
||||
<router-link class="mk-avatar" :class="{ cat }" :to="user | userPage" :title="user | acct" :target="target" v-else-if="!disableLink && disablePreview">
|
||||
<span class="inner" :style="style"></span>
|
||||
</router-link>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
@@ -15,6 +25,10 @@ export default Vue.extend({
|
||||
required: false,
|
||||
default: null
|
||||
},
|
||||
disableLink: {
|
||||
required: false,
|
||||
default: false
|
||||
},
|
||||
disablePreview: {
|
||||
required: false,
|
||||
default: false
|
||||
@@ -24,26 +38,71 @@ export default Vue.extend({
|
||||
lightmode(): boolean {
|
||||
return this.$store.state.device.lightmode;
|
||||
},
|
||||
cat(): boolean {
|
||||
return this.user.isCat && this.$store.state.settings.circleIcons;
|
||||
},
|
||||
style(): any {
|
||||
return {
|
||||
backgroundColor: this.lightmode
|
||||
? `rgb(${ this.user.avatarColor.slice(0, 3).join(',') })`
|
||||
? `rgb(${this.user.avatarColor.slice(0, 3).join(',')})`
|
||||
: this.user.avatarColor && this.user.avatarColor.length == 3
|
||||
? `rgb(${ this.user.avatarColor.join(',') })`
|
||||
? `rgb(${this.user.avatarColor.join(',')})`
|
||||
: null,
|
||||
backgroundImage: this.lightmode ? null : `url(${ this.user.avatarUrl }?thumbnail)`,
|
||||
backgroundImage: this.lightmode ? null : `url(${this.user.avatarUrl})`,
|
||||
borderRadius: this.$store.state.settings.circleIcons ? '100%' : null
|
||||
};
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
onClick(e) {
|
||||
this.$emit('click', e);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
.mk-avatar
|
||||
|
||||
root(isDark)
|
||||
display inline-block
|
||||
vertical-align bottom
|
||||
background-size cover
|
||||
background-position center center
|
||||
transition border-radius 1s ease
|
||||
|
||||
&:not(.cat)
|
||||
overflow hidden
|
||||
border-radius 8px
|
||||
|
||||
&.cat::before,
|
||||
&.cat::after
|
||||
background #df548f
|
||||
border solid 4px isDark ? #e0eefd : #202224
|
||||
box-sizing border-box
|
||||
content ''
|
||||
display inline-block
|
||||
height 50%
|
||||
width 50%
|
||||
|
||||
&.cat::before
|
||||
border-radius 0 75% 75%
|
||||
transform rotate(37.5deg) skew(30deg)
|
||||
|
||||
&.cat::after
|
||||
border-radius 75% 0 75% 75%
|
||||
transform rotate(-37.5deg) skew(-30deg)
|
||||
|
||||
.inner
|
||||
background-position center center
|
||||
background-size cover
|
||||
bottom 0
|
||||
left 0
|
||||
position absolute
|
||||
right 0
|
||||
top 0
|
||||
transition border-radius 1s ease
|
||||
z-index 1
|
||||
|
||||
.mk-avatar[data-darkmode]
|
||||
root(true)
|
||||
|
||||
.mk-avatar:not([data-darkmode])
|
||||
root(false)
|
||||
</style>
|
||||
|
||||
@@ -13,9 +13,6 @@
|
||||
|
||||
.a
|
||||
display block
|
||||
position fixed
|
||||
top 0
|
||||
right 0
|
||||
|
||||
> svg
|
||||
display block
|
||||
|
||||
@@ -0,0 +1,462 @@
|
||||
<template>
|
||||
<div class="xqnhankfuuilcwvhgsopeqncafzsquya">
|
||||
<button class="go-index" v-if="selfNav" @click="goIndex">%fa:arrow-left%</button>
|
||||
<header><b><router-link :to="blackUser | userPage">{{ blackUser | userName }}</router-link></b>(%i18n:common.reversi.black%) vs <b><router-link :to="whiteUser | userPage">{{ whiteUser | userName }}</router-link></b>(%i18n:common.reversi.white%)</header>
|
||||
|
||||
<div style="overflow: hidden; line-height: 28px;">
|
||||
<p class="turn" v-if="!iAmPlayer && !game.isEnded">{{ '%i18n:common.reversi.turn-of%'.replace('{}', $options.filters.userName(turnUser)) }}<mk-ellipsis/></p>
|
||||
<p class="turn" v-if="logPos != logs.length">{{ '%i18n:common.reversi.past-turn-of%'.replace('{}', $options.filters.userName(turnUser)) }}</p>
|
||||
<p class="turn1" v-if="iAmPlayer && !game.isEnded && !isMyTurn">%i18n:common.reversi.opponent-turn%<mk-ellipsis/></p>
|
||||
<p class="turn2" v-if="iAmPlayer && !game.isEnded && isMyTurn" v-animate-css="{ classes: 'tada', iteration: 'infinite' }">%i18n:common.reversi.my-turn%</p>
|
||||
<p class="result" v-if="game.isEnded && logPos == logs.length">
|
||||
<template v-if="game.winner">
|
||||
<span>{{ '%i18n:common.reversi.won%'.replace('{}', $options.filters.userName(game.winner)) }}</span>
|
||||
<span v-if="game.surrendered != null"> (%i18n:@surrendered%)</span>
|
||||
</template>
|
||||
<template v-else>%i18n:common.reversi.drawn%</template>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="board">
|
||||
<div class="labels-x" v-if="this.$store.state.settings.reversiBoardLabels">
|
||||
<span v-for="i in game.settings.map[0].length">{{ String.fromCharCode(64 + i) }}</span>
|
||||
</div>
|
||||
<div class="flex">
|
||||
<div class="labels-y" v-if="this.$store.state.settings.reversiBoardLabels">
|
||||
<div v-for="i in game.settings.map.length">{{ i }}</div>
|
||||
</div>
|
||||
<div class="cells" :style="cellsStyle">
|
||||
<div v-for="(stone, i) in o.board"
|
||||
:class="{ empty: stone == null, none: o.map[i] == 'null', isEnded: game.isEnded, myTurn: !game.isEnded && isMyTurn, can: turnUser ? o.canPut(turnUser.id == blackUser.id, i) : null, prev: o.prevPos == i }"
|
||||
@click="set(i)"
|
||||
:title="`${String.fromCharCode(65 + o.transformPosToXy(i)[0])}${o.transformPosToXy(i)[1] + 1}`">
|
||||
<img v-if="stone === true" :src="blackUser.avatarUrl" alt="">
|
||||
<img v-if="stone === false" :src="whiteUser.avatarUrl" alt="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="labels-y" v-if="this.$store.state.settings.reversiBoardLabels">
|
||||
<div v-for="i in game.settings.map.length">{{ i }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="labels-x" v-if="this.$store.state.settings.reversiBoardLabels">
|
||||
<span v-for="i in game.settings.map[0].length">{{ String.fromCharCode(64 + i) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p class="status"><b>{{ '%i18n:common.reversi.this-turn%'.split('{}')[0] }}{{ logPos }}{{ '%i18n:common.reversi.this-turn%'.split('{}')[1] }}</b> %i18n:common.reversi.black%:{{ o.blackCount }} %i18n:common.reversi.white%:{{ o.whiteCount }} %i18n:common.reversi.total%:{{ o.blackCount + o.whiteCount }}</p>
|
||||
|
||||
<div class="actions" v-if="!game.isEnded && iAmPlayer">
|
||||
<form-button @click="surrender">%i18n:@surrender%</form-button>
|
||||
</div>
|
||||
|
||||
<div class="player" v-if="game.isEnded">
|
||||
<el-button-group>
|
||||
<el-button type="primary" @click="logPos = 0" :disabled="logPos == 0">%fa:angle-double-left%</el-button>
|
||||
<el-button type="primary" @click="logPos--" :disabled="logPos == 0">%fa:angle-left%</el-button>
|
||||
</el-button-group>
|
||||
<span>{{ logPos }} / {{ logs.length }}</span>
|
||||
<el-button-group>
|
||||
<el-button type="primary" @click="logPos++" :disabled="logPos == logs.length">%fa:angle-right%</el-button>
|
||||
<el-button type="primary" @click="logPos = logs.length" :disabled="logPos == logs.length">%fa:angle-double-right%</el-button>
|
||||
</el-button-group>
|
||||
</div>
|
||||
|
||||
<div class="info">
|
||||
<p v-if="game.settings.isLlotheo">%i18n:@is-llotheo%</p>
|
||||
<p v-if="game.settings.loopedBoard">%i18n:@looped-map%</p>
|
||||
<p v-if="game.settings.canPutEverywhere">%i18n:@can-put-everywhere%</p>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import * as CRC32 from 'crc-32';
|
||||
import Reversi, { Color } from '../../../../../../../games/reversi/core';
|
||||
import { url } from '../../../../../config';
|
||||
|
||||
export default Vue.extend({
|
||||
props: {
|
||||
initGame: {
|
||||
type: Object,
|
||||
require: true
|
||||
},
|
||||
connection: {
|
||||
type: Object,
|
||||
require: true
|
||||
},
|
||||
selfNav: {
|
||||
type: Boolean,
|
||||
require: true
|
||||
}
|
||||
},
|
||||
|
||||
data() {
|
||||
return {
|
||||
game: null,
|
||||
o: null as Reversi,
|
||||
logs: [],
|
||||
logPos: 0,
|
||||
pollingClock: null
|
||||
};
|
||||
},
|
||||
|
||||
computed: {
|
||||
iAmPlayer(): boolean {
|
||||
if (!this.$store.getters.isSignedIn) return false;
|
||||
return this.game.user1Id == this.$store.state.i.id || this.game.user2Id == this.$store.state.i.id;
|
||||
},
|
||||
|
||||
myColor(): Color {
|
||||
if (!this.iAmPlayer) return null;
|
||||
if (this.game.user1Id == this.$store.state.i.id && this.game.black == 1) return true;
|
||||
if (this.game.user2Id == this.$store.state.i.id && this.game.black == 2) return true;
|
||||
return false;
|
||||
},
|
||||
|
||||
opColor(): Color {
|
||||
if (!this.iAmPlayer) return null;
|
||||
return this.myColor === true ? false : true;
|
||||
},
|
||||
|
||||
blackUser(): any {
|
||||
return this.game.black == 1 ? this.game.user1 : this.game.user2;
|
||||
},
|
||||
|
||||
whiteUser(): any {
|
||||
return this.game.black == 1 ? this.game.user2 : this.game.user1;
|
||||
},
|
||||
|
||||
turnUser(): any {
|
||||
if (this.o.turn === true) {
|
||||
return this.game.black == 1 ? this.game.user1 : this.game.user2;
|
||||
} else if (this.o.turn === false) {
|
||||
return this.game.black == 1 ? this.game.user2 : this.game.user1;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
},
|
||||
|
||||
isMyTurn(): boolean {
|
||||
if (!this.iAmPlayer) return false;
|
||||
if (this.turnUser == null) return false;
|
||||
return this.turnUser.id == this.$store.state.i.id;
|
||||
},
|
||||
|
||||
cellsStyle(): any {
|
||||
return {
|
||||
'grid-template-rows': `repeat(${this.game.settings.map.length}, 1fr)`,
|
||||
'grid-template-columns': `repeat(${this.game.settings.map[0].length}, 1fr)`
|
||||
};
|
||||
}
|
||||
},
|
||||
|
||||
watch: {
|
||||
logPos(v) {
|
||||
if (!this.game.isEnded) return;
|
||||
this.o = new Reversi(this.game.settings.map, {
|
||||
isLlotheo: this.game.settings.isLlotheo,
|
||||
canPutEverywhere: this.game.settings.canPutEverywhere,
|
||||
loopedBoard: this.game.settings.loopedBoard
|
||||
});
|
||||
this.logs.forEach((log, i) => {
|
||||
if (i < v) {
|
||||
this.o.put(log.color, log.pos);
|
||||
}
|
||||
});
|
||||
this.$forceUpdate();
|
||||
}
|
||||
},
|
||||
|
||||
created() {
|
||||
this.game = this.initGame;
|
||||
|
||||
this.o = new Reversi(this.game.settings.map, {
|
||||
isLlotheo: this.game.settings.isLlotheo,
|
||||
canPutEverywhere: this.game.settings.canPutEverywhere,
|
||||
loopedBoard: this.game.settings.loopedBoard
|
||||
});
|
||||
|
||||
this.game.logs.forEach(log => {
|
||||
this.o.put(log.color, log.pos);
|
||||
});
|
||||
|
||||
this.logs = this.game.logs;
|
||||
this.logPos = this.logs.length;
|
||||
|
||||
// 通信を取りこぼしてもいいように定期的にポーリングさせる
|
||||
if (this.game.isStarted && !this.game.isEnded) {
|
||||
this.pollingClock = setInterval(() => {
|
||||
const crc32 = CRC32.str(this.logs.map(x => x.pos.toString()).join(''));
|
||||
this.connection.send({
|
||||
type: 'check',
|
||||
crc32
|
||||
});
|
||||
}, 3000);
|
||||
}
|
||||
},
|
||||
|
||||
mounted() {
|
||||
this.connection.on('set', this.onSet);
|
||||
this.connection.on('rescue', this.onRescue);
|
||||
this.connection.on('ended', this.onEnded);
|
||||
},
|
||||
|
||||
beforeDestroy() {
|
||||
this.connection.off('set', this.onSet);
|
||||
this.connection.off('rescue', this.onRescue);
|
||||
this.connection.off('ended', this.onEnded);
|
||||
|
||||
clearInterval(this.pollingClock);
|
||||
},
|
||||
|
||||
methods: {
|
||||
set(pos) {
|
||||
if (this.game.isEnded) return;
|
||||
if (!this.iAmPlayer) return;
|
||||
if (!this.isMyTurn) return;
|
||||
if (!this.o.canPut(this.myColor, pos)) return;
|
||||
|
||||
this.o.put(this.myColor, pos);
|
||||
|
||||
// サウンドを再生する
|
||||
if (this.$store.state.device.enableSounds) {
|
||||
const sound = new Audio(`${url}/assets/reversi-put-me.mp3`);
|
||||
sound.volume = this.$store.state.device.soundVolume;
|
||||
sound.play();
|
||||
}
|
||||
|
||||
this.connection.send({
|
||||
type: 'set',
|
||||
pos
|
||||
});
|
||||
|
||||
this.checkEnd();
|
||||
|
||||
this.$forceUpdate();
|
||||
},
|
||||
|
||||
onSet(x) {
|
||||
this.logs.push(x);
|
||||
this.logPos++;
|
||||
this.o.put(x.color, x.pos);
|
||||
this.checkEnd();
|
||||
this.$forceUpdate();
|
||||
|
||||
// サウンドを再生する
|
||||
if (this.$store.state.device.enableSounds && x.color != this.myColor) {
|
||||
const sound = new Audio(`${url}/assets/reversi-put-you.mp3`);
|
||||
sound.volume = this.$store.state.device.soundVolume;
|
||||
sound.play();
|
||||
}
|
||||
},
|
||||
|
||||
onEnded(x) {
|
||||
this.game = x.game;
|
||||
},
|
||||
|
||||
checkEnd() {
|
||||
this.game.isEnded = this.o.isEnded;
|
||||
if (this.game.isEnded) {
|
||||
if (this.o.winner === true) {
|
||||
this.game.winnerId = this.game.black == 1 ? this.game.user1Id : this.game.user2Id;
|
||||
this.game.winner = this.game.black == 1 ? this.game.user1 : this.game.user2;
|
||||
} else if (this.o.winner === false) {
|
||||
this.game.winnerId = this.game.black == 1 ? this.game.user2Id : this.game.user1Id;
|
||||
this.game.winner = this.game.black == 1 ? this.game.user2 : this.game.user1;
|
||||
} else {
|
||||
this.game.winnerId = null;
|
||||
this.game.winner = null;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// 正しいゲーム情報が送られてきたとき
|
||||
onRescue(game) {
|
||||
this.game = game;
|
||||
|
||||
this.o = new Reversi(this.game.settings.map, {
|
||||
isLlotheo: this.game.settings.isLlotheo,
|
||||
canPutEverywhere: this.game.settings.canPutEverywhere,
|
||||
loopedBoard: this.game.settings.loopedBoard
|
||||
});
|
||||
|
||||
this.game.logs.forEach(log => {
|
||||
this.o.put(log.color, log.pos, true);
|
||||
});
|
||||
|
||||
this.logs = this.game.logs;
|
||||
this.logPos = this.logs.length;
|
||||
|
||||
this.checkEnd();
|
||||
this.$forceUpdate();
|
||||
},
|
||||
|
||||
surrender() {
|
||||
(this as any).api('games/reversi/games/surrender', {
|
||||
gameId: this.game.id
|
||||
});
|
||||
},
|
||||
|
||||
goIndex() {
|
||||
this.$emit('go-index');
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
@import '~const.styl'
|
||||
|
||||
root(isDark)
|
||||
text-align center
|
||||
|
||||
> .go-index
|
||||
position absolute
|
||||
top 0
|
||||
left 0
|
||||
z-index 1
|
||||
width 42px
|
||||
height 42px
|
||||
|
||||
> header
|
||||
padding 8px
|
||||
border-bottom dashed 1px isDark ? #4c5761 : #c4cdd4
|
||||
|
||||
a
|
||||
color inherit
|
||||
|
||||
> .board
|
||||
width calc(100% - 16px)
|
||||
max-width 500px
|
||||
margin 0 auto
|
||||
|
||||
$label-size = 16px
|
||||
$gap = 4px
|
||||
|
||||
> .labels-x
|
||||
height $label-size
|
||||
padding 0 $label-size
|
||||
display flex
|
||||
|
||||
> *
|
||||
flex 1
|
||||
display flex
|
||||
align-items center
|
||||
justify-content center
|
||||
font-size 12px
|
||||
|
||||
&:first-child
|
||||
margin-left -($gap / 2)
|
||||
|
||||
&:last-child
|
||||
margin-right -($gap / 2)
|
||||
|
||||
> .flex
|
||||
display flex
|
||||
|
||||
> .labels-y
|
||||
width $label-size
|
||||
display flex
|
||||
flex-direction column
|
||||
|
||||
> *
|
||||
flex 1
|
||||
display flex
|
||||
align-items center
|
||||
justify-content center
|
||||
font-size 12px
|
||||
|
||||
&:first-child
|
||||
margin-top -($gap / 2)
|
||||
|
||||
&:last-child
|
||||
margin-bottom -($gap / 2)
|
||||
|
||||
> .cells
|
||||
flex 1
|
||||
display grid
|
||||
grid-gap $gap
|
||||
|
||||
> div
|
||||
background transparent
|
||||
border-radius 6px
|
||||
overflow hidden
|
||||
|
||||
*
|
||||
pointer-events none
|
||||
user-select none
|
||||
|
||||
&.empty
|
||||
border solid 2px isDark ? #51595f : #eee
|
||||
|
||||
&.empty.can
|
||||
background isDark ? #51595f : #eee
|
||||
|
||||
&.empty.myTurn
|
||||
border-color isDark ? #6a767f : #ddd
|
||||
|
||||
&.can
|
||||
background isDark ? #51595f : #eee
|
||||
cursor pointer
|
||||
|
||||
&:hover
|
||||
border-color darken($theme-color, 10%)
|
||||
background $theme-color
|
||||
|
||||
&:active
|
||||
background darken($theme-color, 10%)
|
||||
|
||||
&.prev
|
||||
box-shadow 0 0 0 4px rgba($theme-color, 0.7)
|
||||
|
||||
&.isEnded
|
||||
border-color isDark ? #6a767f : #ddd
|
||||
|
||||
&.none
|
||||
border-color transparent !important
|
||||
|
||||
> img
|
||||
display block
|
||||
width 100%
|
||||
height 100%
|
||||
|
||||
> .graph
|
||||
display grid
|
||||
grid-template-columns repeat(61, 1fr)
|
||||
width 300px
|
||||
height 38px
|
||||
margin 0 auto 16px auto
|
||||
|
||||
> div
|
||||
&:not(:empty)
|
||||
background #ccc
|
||||
|
||||
> div:first-child
|
||||
background #333
|
||||
|
||||
> div:last-child
|
||||
background #ccc
|
||||
|
||||
> .status
|
||||
margin 0
|
||||
padding 16px 0
|
||||
|
||||
> .actions
|
||||
padding-bottom 16px
|
||||
|
||||
> .player
|
||||
padding-bottom 32px
|
||||
|
||||
> span
|
||||
display inline-block
|
||||
margin 0 8px
|
||||
min-width 70px
|
||||
|
||||
.xqnhankfuuilcwvhgsopeqncafzsquya[data-darkmode]
|
||||
root(true)
|
||||
|
||||
.xqnhankfuuilcwvhgsopeqncafzsquya:not([data-darkmode])
|
||||
root(false)
|
||||
|
||||
</style>
|
||||
@@ -1,22 +1,31 @@
|
||||
<template>
|
||||
<div>
|
||||
<x-room v-if="!g.isStarted" :game="g" :connection="connection"/>
|
||||
<x-game v-else :init-game="g" :connection="connection"/>
|
||||
<x-game v-else :init-game="g" :connection="connection" :self-nav="selfNav" @go-index="goIndex"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import XGame from './othello.game.vue';
|
||||
import XRoom from './othello.room.vue';
|
||||
import { OthelloGameStream } from '../../scripts/streaming/othello-game';
|
||||
import XGame from './reversi.game.vue';
|
||||
import XRoom from './reversi.room.vue';
|
||||
import { ReversiGameStream } from '../../../../scripts/streaming/games/reversi/reversi-game';
|
||||
|
||||
export default Vue.extend({
|
||||
components: {
|
||||
XGame,
|
||||
XRoom
|
||||
},
|
||||
props: ['game'],
|
||||
props: {
|
||||
game: {
|
||||
type: Object,
|
||||
required: true
|
||||
},
|
||||
selfNav: {
|
||||
type: Boolean,
|
||||
require: true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
connection: null,
|
||||
@@ -25,7 +34,7 @@ export default Vue.extend({
|
||||
},
|
||||
created() {
|
||||
this.g = this.game;
|
||||
this.connection = new OthelloGameStream((this as any).os, this.$store.state.i, this.game);
|
||||
this.connection = new ReversiGameStream((this as any).os, this.$store.state.i, this.game);
|
||||
this.connection.on('started', this.onStarted);
|
||||
},
|
||||
beforeDestroy() {
|
||||
@@ -36,6 +45,9 @@ export default Vue.extend({
|
||||
onStarted(game) {
|
||||
Object.assign(this.g, game);
|
||||
this.$forceUpdate();
|
||||
},
|
||||
goIndex() {
|
||||
this.$emit('go-index');
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -0,0 +1,254 @@
|
||||
<template>
|
||||
<div class="phgnkghfpyvkrvwiajkiuoxyrdaqpzcx">
|
||||
<h1>%i18n:@title%</h1>
|
||||
<p>%i18n:@sub-title%</p>
|
||||
<div class="play">
|
||||
<!--<el-button round>フリーマッチ(準備中)</el-button>-->
|
||||
<form-button primary round @click="match">%i18n:@invite%</form-button>
|
||||
<details>
|
||||
<summary>%i18n:@rule%</summary>
|
||||
<div>
|
||||
<p>%i18n:@rule-desc%</p>
|
||||
<dl>
|
||||
<dt><b>%i18n:@mode-invite%</b></dt>
|
||||
<dd>%i18n:@mode-invite-desc%</dd>
|
||||
</dl>
|
||||
</div>
|
||||
</details>
|
||||
</div>
|
||||
<section v-if="invitations.length > 0">
|
||||
<h2>%i18n:@invitations%</h2>
|
||||
<div class="invitation" v-for="i in invitations" tabindex="-1" @click="accept(i)">
|
||||
<mk-avatar class="avatar" :user="i.parent"/>
|
||||
<span class="name"><b>{{ i.parent | userName }}</b></span>
|
||||
<span class="username">@{{ i.parent.username }}</span>
|
||||
<mk-time :time="i.createdAt"/>
|
||||
</div>
|
||||
</section>
|
||||
<section v-if="myGames.length > 0">
|
||||
<h2>%i18n:@my-games%</h2>
|
||||
<a class="game" v-for="g in myGames" tabindex="-1" @click.prevent="go(g)" :href="`/reversi/${g.id}`">
|
||||
<mk-avatar class="avatar" :user="g.user1"/>
|
||||
<mk-avatar class="avatar" :user="g.user2"/>
|
||||
<span><b>{{ g.user1 | userName }}</b> vs <b>{{ g.user2 | userName }}</b></span>
|
||||
<span class="state">{{ g.isEnded ? '%i18n:@game-state.ended%' : '%i18n:@game-state.playing%' }}</span>
|
||||
</a>
|
||||
</section>
|
||||
<section v-if="games.length > 0">
|
||||
<h2>%i18n:@all-games%</h2>
|
||||
<a class="game" v-for="g in games" tabindex="-1" @click.prevent="go(g)" :href="`/reversi/${g.id}`">
|
||||
<mk-avatar class="avatar" :user="g.user1"/>
|
||||
<mk-avatar class="avatar" :user="g.user2"/>
|
||||
<span><b>{{ g.user1 | userName }}</b> vs <b>{{ g.user2 | userName }}</b></span>
|
||||
<span class="state">{{ g.isEnded ? '%i18n:@game-state.ended%' : '%i18n:@game-state.playing%' }}</span>
|
||||
</a>
|
||||
</section>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
|
||||
export default Vue.extend({
|
||||
data() {
|
||||
return {
|
||||
games: [],
|
||||
gamesFetching: true,
|
||||
gamesMoreFetching: false,
|
||||
myGames: [],
|
||||
matching: null,
|
||||
invitations: [],
|
||||
connection: null,
|
||||
connectionId: null
|
||||
};
|
||||
},
|
||||
|
||||
mounted() {
|
||||
if (this.$store.getters.isSignedIn) {
|
||||
this.connection = (this as any).os.streams.reversiStream.getConnection();
|
||||
this.connectionId = (this as any).os.streams.reversiStream.use();
|
||||
|
||||
this.connection.on('invited', this.onInvited);
|
||||
|
||||
(this as any).api('games/reversi/games', {
|
||||
my: true
|
||||
}).then(games => {
|
||||
this.myGames = games;
|
||||
});
|
||||
|
||||
(this as any).api('games/reversi/invitations').then(invitations => {
|
||||
this.invitations = this.invitations.concat(invitations);
|
||||
});
|
||||
}
|
||||
|
||||
(this as any).api('games/reversi/games').then(games => {
|
||||
this.games = games;
|
||||
this.gamesFetching = false;
|
||||
});
|
||||
},
|
||||
|
||||
beforeDestroy() {
|
||||
if (this.connection) {
|
||||
this.connection.off('invited', this.onInvited);
|
||||
(this as any).os.streams.reversiStream.dispose(this.connectionId);
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
go(game) {
|
||||
this.$emit('go', game);
|
||||
},
|
||||
|
||||
match() {
|
||||
(this as any).apis.input({
|
||||
title: '%i18n:@enter-username%'
|
||||
}).then(username => {
|
||||
(this as any).api('users/show', {
|
||||
username
|
||||
}).then(user => {
|
||||
(this as any).api('games/reversi/match', {
|
||||
userId: user.id
|
||||
}).then(res => {
|
||||
if (res == null) {
|
||||
this.$emit('matching', user);
|
||||
} else {
|
||||
this.$emit('go', res);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
accept(invitation) {
|
||||
(this as any).api('games/reversi/match', {
|
||||
userId: invitation.parent.id
|
||||
}).then(game => {
|
||||
if (game) {
|
||||
this.$emit('go', game);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
onInvited(invite) {
|
||||
this.invitations.unshift(invite);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
@import '~const.styl'
|
||||
|
||||
root(isDark)
|
||||
> h1
|
||||
margin 0
|
||||
padding 24px
|
||||
font-size 24px
|
||||
text-align center
|
||||
font-weight normal
|
||||
color #fff
|
||||
background linear-gradient(to bottom, isDark ? #45730e : #8bca3e, isDark ? #464300 : #d6cf31)
|
||||
|
||||
& + p
|
||||
margin 0
|
||||
padding 12px
|
||||
margin-bottom 12px
|
||||
text-align center
|
||||
font-size 14px
|
||||
border-bottom solid 1px isDark ? #535f65 : #d3d9dc
|
||||
|
||||
> .play
|
||||
margin 0 auto
|
||||
padding 0 16px
|
||||
max-width 500px
|
||||
text-align center
|
||||
|
||||
> details
|
||||
margin 8px 0
|
||||
|
||||
> div
|
||||
padding 16px
|
||||
font-size 14px
|
||||
text-align left
|
||||
background isDark ? #282c37 : #f5f5f5
|
||||
border-radius 8px
|
||||
|
||||
> section
|
||||
margin 0 auto
|
||||
padding 0 16px 16px 16px
|
||||
max-width 500px
|
||||
border-top solid 1px isDark ? #535f65 : #d3d9dc
|
||||
|
||||
> h2
|
||||
margin 0
|
||||
padding 16px 0 8px 0
|
||||
font-size 16px
|
||||
font-weight bold
|
||||
|
||||
.invitation
|
||||
margin 8px 0
|
||||
padding 8px
|
||||
color isDark ? #fff : #677f84
|
||||
background isDark ? #282c37 : #fff
|
||||
box-shadow 0 2px 16px rgba(#000, isDark ? 0.7 : 0.15)
|
||||
border-radius 6px
|
||||
cursor pointer
|
||||
|
||||
*
|
||||
pointer-events none
|
||||
user-select none
|
||||
|
||||
&:focus
|
||||
border-color $theme-color
|
||||
|
||||
&:hover
|
||||
background isDark ? #313543 : #f5f5f5
|
||||
|
||||
&:active
|
||||
background isDark ? #1e222b : #eee
|
||||
|
||||
> .avatar
|
||||
width 32px
|
||||
height 32px
|
||||
border-radius 100%
|
||||
|
||||
> span
|
||||
margin 0 8px
|
||||
line-height 32px
|
||||
|
||||
.game
|
||||
display block
|
||||
margin 8px 0
|
||||
padding 8px
|
||||
color isDark ? #fff : #677f84
|
||||
background isDark ? #282c37 : #fff
|
||||
box-shadow 0 2px 16px rgba(#000, isDark ? 0.7 : 0.15)
|
||||
border-radius 6px
|
||||
cursor pointer
|
||||
|
||||
*
|
||||
pointer-events none
|
||||
user-select none
|
||||
|
||||
&:hover
|
||||
background isDark ? #313543 : #f5f5f5
|
||||
|
||||
&:active
|
||||
background isDark ? #1e222b : #eee
|
||||
|
||||
> .avatar
|
||||
width 32px
|
||||
height 32px
|
||||
border-radius 100%
|
||||
|
||||
> span
|
||||
margin 0 8px
|
||||
line-height 32px
|
||||
|
||||
.phgnkghfpyvkrvwiajkiuoxyrdaqpzcx[data-darkmode]
|
||||
root(true)
|
||||
|
||||
.phgnkghfpyvkrvwiajkiuoxyrdaqpzcx:not([data-darkmode])
|
||||
root(false)
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,367 @@
|
||||
<template>
|
||||
<div class="urbixznjwwuukfsckrwzwsqzsxornqij">
|
||||
<header><b>{{ game.user1 | userName }}</b> vs <b>{{ game.user2 | userName }}</b></header>
|
||||
|
||||
<div>
|
||||
<p>%i18n:@settings-of-the-game%</p>
|
||||
|
||||
<div class="card map">
|
||||
<header>
|
||||
<select v-model="mapName" placeholder="%i18n:@choose-map%" @change="onMapChange">
|
||||
<option label="-Custom-" :value="mapName" v-if="mapName == '-Custom-'"/>
|
||||
<option label="%i18n:@random%" :value="null"/>
|
||||
<optgroup v-for="c in mapCategories" :key="c" :label="c">
|
||||
<option v-for="m in maps" v-if="m.category == c" :key="m.name" :label="m.name" :value="m.name">{{ m.name }}</option>
|
||||
</optgroup>
|
||||
</select>
|
||||
</header>
|
||||
|
||||
<div>
|
||||
<div class="random" v-if="game.settings.map == null">%fa:dice%</div>
|
||||
<div class="board" v-else :style="{ 'grid-template-rows': `repeat(${ game.settings.map.length }, 1fr)`, 'grid-template-columns': `repeat(${ game.settings.map[0].length }, 1fr)` }">
|
||||
<div v-for="(x, i) in game.settings.map.join('')"
|
||||
:data-none="x == ' '"
|
||||
@click="onPixelClick(i, x)">
|
||||
<template v-if="x == 'b'"><template v-if="$store.state.device.darkmode">%fa:circle R%</template><template v-else>%fa:circle%</template></template>
|
||||
<template v-if="x == 'w'"><template v-if="$store.state.device.darkmode">%fa:circle%</template><template v-else>%fa:circle R%</template></template>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<header>
|
||||
<span>%i18n:@black-or-white%</span>
|
||||
</header>
|
||||
|
||||
<div>
|
||||
<form-radio v-model="game.settings.bw" value="random" @change="updateSettings">%i18n:@random%</form-radio>
|
||||
<form-radio v-model="game.settings.bw" :value="1" @change="updateSettings">{{ '%i18n:@black-is%'.split('{}')[0] }}<b>{{ game.user1 | userName }}</b>{{ '%i18n:@black-is%'.split('{}')[1] }}</form-radio>
|
||||
<form-radio v-model="game.settings.bw" :value="2" @change="updateSettings">{{ '%i18n:@black-is%'.split('{}')[0] }}<b>{{ game.user2 | userName }}</b>{{ '%i18n:@black-is%'.split('{}')[1] }}</form-radio>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<header>
|
||||
<span>%i18n:@rules%</span>
|
||||
</header>
|
||||
|
||||
<div>
|
||||
<mk-switch v-model="game.settings.isLlotheo" @change="updateSettings" text="%i18n:@is-llotheo%"/>
|
||||
<mk-switch v-model="game.settings.loopedBoard" @change="updateSettings" text="%i18n:@looped-map%"/>
|
||||
<mk-switch v-model="game.settings.canPutEverywhere" @change="updateSettings" text="%i18n:@can-put-everywhere%"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card form" v-if="form">
|
||||
<header>
|
||||
<span>%i18n:@settings-of-the-bot%</span>
|
||||
</header>
|
||||
|
||||
<div>
|
||||
<el-alert v-for="message in messages"
|
||||
:title="message.text"
|
||||
:type="message.type"
|
||||
:key="message.id"/>
|
||||
|
||||
<template v-for="item in form">
|
||||
<mk-switch v-if="item.type == 'switch'" v-model="item.value" :key="item.id" :text="item.label" @change="onChangeForm(item)">{{ item.desc || '' }}</mk-switch>
|
||||
|
||||
<div class="card" v-if="item.type == 'radio'" :key="item.id">
|
||||
<header>
|
||||
<span>{{ item.label }}</span>
|
||||
</header>
|
||||
|
||||
<div>
|
||||
<form-radio v-for="(r, i) in item.items" :key="item.id + ':' + i" v-model="item.value" :value="r.value" @change="onChangeForm(item)">{{ r.label }}</form-radio>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card" v-if="item.type == 'slider'" :key="item.id">
|
||||
<header>
|
||||
<span>{{ item.label }}</span>
|
||||
</header>
|
||||
|
||||
<div>
|
||||
<input type="range" :min="item.min" :max="item.max" :step="item.step || 1" v-model="item.value" @change="onChangeForm(item)"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card" v-if="item.type == 'textbox'" :key="item.id">
|
||||
<header>
|
||||
<span>{{ item.label }}</span>
|
||||
</header>
|
||||
|
||||
<div>
|
||||
<el-input v-model="item.value" @change="onChangeForm(item)"/>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer>
|
||||
<p class="status">
|
||||
<template v-if="isAccepted && isOpAccepted">%i18n:@this-game-is-started-soon%<mk-ellipsis/></template>
|
||||
<template v-if="isAccepted && !isOpAccepted">%i18n:@waiting-for-other%<mk-ellipsis/></template>
|
||||
<template v-if="!isAccepted && isOpAccepted">%i18n:@waiting-for-me%</template>
|
||||
<template v-if="!isAccepted && !isOpAccepted">%i18n:@waiting-for-both%<mk-ellipsis/></template>
|
||||
</p>
|
||||
|
||||
<div class="actions">
|
||||
<form-button @click="exit">%i18n:@cancel%</form-button>
|
||||
<form-button primary @click="accept" v-if="!isAccepted">%i18n:@ready%</form-button>
|
||||
<form-button primary @click="cancel" v-if="isAccepted">%i18n:@cancel-ready%</form-button>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import * as maps from '../../../../../../../games/reversi/maps';
|
||||
|
||||
export default Vue.extend({
|
||||
props: ['game', 'connection'],
|
||||
|
||||
data() {
|
||||
return {
|
||||
o: null,
|
||||
isLlotheo: false,
|
||||
mapName: maps.eighteight.name,
|
||||
maps: maps,
|
||||
form: null,
|
||||
messages: []
|
||||
};
|
||||
},
|
||||
|
||||
computed: {
|
||||
mapCategories(): string[] {
|
||||
const categories = Object.values(maps).map(x => x.category);
|
||||
return categories.filter((item, pos) => categories.indexOf(item) == pos);
|
||||
},
|
||||
isAccepted(): boolean {
|
||||
if (this.game.user1Id == this.$store.state.i.id && this.game.user1Accepted) return true;
|
||||
if (this.game.user2Id == this.$store.state.i.id && this.game.user2Accepted) return true;
|
||||
return false;
|
||||
},
|
||||
isOpAccepted(): boolean {
|
||||
if (this.game.user1Id != this.$store.state.i.id && this.game.user1Accepted) return true;
|
||||
if (this.game.user2Id != this.$store.state.i.id && this.game.user2Accepted) return true;
|
||||
return false;
|
||||
}
|
||||
},
|
||||
|
||||
created() {
|
||||
this.connection.on('change-accepts', this.onChangeAccepts);
|
||||
this.connection.on('update-settings', this.onUpdateSettings);
|
||||
this.connection.on('init-form', this.onInitForm);
|
||||
this.connection.on('message', this.onMessage);
|
||||
|
||||
if (this.game.user1Id != this.$store.state.i.id && this.game.settings.form1) this.form = this.game.settings.form1;
|
||||
if (this.game.user2Id != this.$store.state.i.id && this.game.settings.form2) this.form = this.game.settings.form2;
|
||||
},
|
||||
|
||||
beforeDestroy() {
|
||||
this.connection.off('change-accepts', this.onChangeAccepts);
|
||||
this.connection.off('update-settings', this.onUpdateSettings);
|
||||
this.connection.off('init-form', this.onInitForm);
|
||||
this.connection.off('message', this.onMessage);
|
||||
},
|
||||
|
||||
methods: {
|
||||
exit() {
|
||||
|
||||
},
|
||||
|
||||
accept() {
|
||||
this.connection.send({
|
||||
type: 'accept'
|
||||
});
|
||||
},
|
||||
|
||||
cancel() {
|
||||
this.connection.send({
|
||||
type: 'cancel-accept'
|
||||
});
|
||||
},
|
||||
|
||||
onChangeAccepts(accepts) {
|
||||
this.game.user1Accepted = accepts.user1;
|
||||
this.game.user2Accepted = accepts.user2;
|
||||
this.$forceUpdate();
|
||||
},
|
||||
|
||||
updateSettings() {
|
||||
this.connection.send({
|
||||
type: 'update-settings',
|
||||
settings: this.game.settings
|
||||
});
|
||||
},
|
||||
|
||||
onUpdateSettings(settings) {
|
||||
this.game.settings = settings;
|
||||
if (this.game.settings.map == null) {
|
||||
this.mapName = null;
|
||||
} else {
|
||||
const found = Object.values(maps).find(x => x.data.join('') == this.game.settings.map.join(''));
|
||||
this.mapName = found ? found.name : '-Custom-';
|
||||
}
|
||||
},
|
||||
|
||||
onInitForm(x) {
|
||||
if (x.userId == this.$store.state.i.id) return;
|
||||
this.form = x.form;
|
||||
},
|
||||
|
||||
onMessage(x) {
|
||||
if (x.userId == this.$store.state.i.id) return;
|
||||
this.messages.unshift(x.message);
|
||||
},
|
||||
|
||||
onChangeForm(item) {
|
||||
this.connection.send({
|
||||
type: 'update-form',
|
||||
id: item.id,
|
||||
value: item.value
|
||||
});
|
||||
},
|
||||
|
||||
onMapChange() {
|
||||
if (this.mapName == null) {
|
||||
this.game.settings.map = null;
|
||||
} else {
|
||||
this.game.settings.map = Object.values(maps).find(x => x.name == this.mapName).data;
|
||||
}
|
||||
this.$forceUpdate();
|
||||
this.updateSettings();
|
||||
},
|
||||
|
||||
onPixelClick(pos, pixel) {
|
||||
const x = pos % this.game.settings.map[0].length;
|
||||
const y = Math.floor(pos / this.game.settings.map[0].length);
|
||||
const newPixel =
|
||||
pixel == ' ' ? '-' :
|
||||
pixel == '-' ? 'b' :
|
||||
pixel == 'b' ? 'w' :
|
||||
' ';
|
||||
const line = this.game.settings.map[y].split('');
|
||||
line[x] = newPixel;
|
||||
this.$set(this.game.settings.map, y, line.join(''));
|
||||
this.$forceUpdate();
|
||||
this.updateSettings();
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
@import '~const.styl'
|
||||
|
||||
root(isDark)
|
||||
text-align center
|
||||
background isDark ? #191b22 : #f9f9f9
|
||||
|
||||
> header
|
||||
padding 8px
|
||||
border-bottom dashed 1px #c4cdd4
|
||||
|
||||
> div
|
||||
padding 0 16px
|
||||
|
||||
> .card
|
||||
margin 0 auto 16px auto
|
||||
|
||||
&.map
|
||||
> header
|
||||
> select
|
||||
width 100%
|
||||
padding 12px 14px
|
||||
background isDark ? #282C37 : #fff
|
||||
border 1px solid isDark ? #6a707d : #dcdfe6
|
||||
border-radius 4px
|
||||
color isDark ? #fff : #606266
|
||||
cursor pointer
|
||||
transition border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1)
|
||||
-webkit-appearance none
|
||||
-moz-appearance none
|
||||
appearance none
|
||||
|
||||
&:hover
|
||||
border-color isDark ? #a7aebd : #c0c4cc
|
||||
|
||||
&:focus
|
||||
&:active
|
||||
border-color $theme-color
|
||||
|
||||
> div
|
||||
> .random
|
||||
padding 32px 0
|
||||
font-size 64px
|
||||
color isDark ? #4e5961 : #d8d8d8
|
||||
|
||||
> .board
|
||||
display grid
|
||||
grid-gap 4px
|
||||
width 300px
|
||||
height 300px
|
||||
margin 0 auto
|
||||
color isDark ? #fff : #444
|
||||
|
||||
> div
|
||||
background transparent
|
||||
border solid 2px isDark ? #6a767f : #ddd
|
||||
border-radius 6px
|
||||
overflow hidden
|
||||
cursor pointer
|
||||
|
||||
*
|
||||
pointer-events none
|
||||
user-select none
|
||||
width 100%
|
||||
height 100%
|
||||
|
||||
&[data-none]
|
||||
border-color transparent
|
||||
|
||||
&.form
|
||||
> div
|
||||
> .card + .card
|
||||
margin-top 16px
|
||||
|
||||
input[type='range']
|
||||
width 100%
|
||||
|
||||
.card
|
||||
max-width 400px
|
||||
border-radius 4px
|
||||
background isDark ? #282C37 : #fff
|
||||
color isDark ? #fff : #303133
|
||||
box-shadow 0 2px 12px 0 rgba(#000, isDark ? 0.7 : 0.1)
|
||||
|
||||
> header
|
||||
padding 18px 20px
|
||||
border-bottom 1px solid isDark ? #1c2023 : #ebeef5
|
||||
|
||||
> div
|
||||
padding 20px
|
||||
color isDark ? #fff : #606266
|
||||
|
||||
> footer
|
||||
position sticky
|
||||
bottom 0
|
||||
padding 16px
|
||||
background rgba(isDark ? #191b22 : #fff, 0.9)
|
||||
border-top solid 1px isDark ? #606266 : #c4cdd4
|
||||
|
||||
> .status
|
||||
margin 0 0 16px 0
|
||||
|
||||
.urbixznjwwuukfsckrwzwsqzsxornqij[data-darkmode]
|
||||
root(true)
|
||||
|
||||
.urbixznjwwuukfsckrwzwsqzsxornqij:not([data-darkmode])
|
||||
root(false)
|
||||
|
||||
</style>
|
||||
186
src/client/app/common/views/components/games/reversi/reversi.vue
Normal file
@@ -0,0 +1,186 @@
|
||||
<template>
|
||||
<div class="vchtoekanapleubgzioubdtmlkribzfd">
|
||||
<div v-if="game">
|
||||
<x-gameroom :game="game" :self-nav="selfNav" @go-index="goIndex"/>
|
||||
</div>
|
||||
<div class="matching" v-else-if="matching">
|
||||
<h1>{{ '%i18n:@matching.waiting-for%'.split('{}')[0] }}<b>{{ matching | userName }}</b>{{ '%i18n:@matching.waiting-for%'.split('{}')[1] }}<mk-ellipsis/></h1>
|
||||
<div class="cancel">
|
||||
<form-button round @click="cancel">%i18n:@matching.cancel%</form-button>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else-if="gameId">
|
||||
...
|
||||
</div>
|
||||
<div class="index" v-else>
|
||||
<x-index @go="nav" @matching="onMatching"/>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import XGameroom from './reversi.gameroom.vue';
|
||||
import XIndex from './reversi.index.vue';
|
||||
import Progress from '../../../../scripts/loading';
|
||||
|
||||
export default Vue.extend({
|
||||
components: {
|
||||
XGameroom,
|
||||
XIndex
|
||||
},
|
||||
|
||||
props: {
|
||||
gameId: {
|
||||
type: String,
|
||||
required: false
|
||||
},
|
||||
selfNav: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: true
|
||||
}
|
||||
},
|
||||
|
||||
data() {
|
||||
return {
|
||||
game: null,
|
||||
matching: null,
|
||||
connection: null,
|
||||
connectionId: null,
|
||||
pingClock: null
|
||||
};
|
||||
},
|
||||
|
||||
watch: {
|
||||
game() {
|
||||
this.$emit('gamed', this.game);
|
||||
},
|
||||
|
||||
gameId() {
|
||||
this.fetch();
|
||||
}
|
||||
},
|
||||
|
||||
mounted() {
|
||||
this.fetch();
|
||||
|
||||
if (this.$store.getters.isSignedIn) {
|
||||
this.connection = (this as any).os.streams.reversiStream.getConnection();
|
||||
this.connectionId = (this as any).os.streams.reversiStream.use();
|
||||
|
||||
this.connection.on('matched', this.onMatched);
|
||||
|
||||
this.pingClock = setInterval(() => {
|
||||
if (this.matching) {
|
||||
this.connection.send({
|
||||
type: 'ping',
|
||||
id: this.matching.id
|
||||
});
|
||||
}
|
||||
}, 3000);
|
||||
}
|
||||
},
|
||||
|
||||
beforeDestroy() {
|
||||
if (this.connection) {
|
||||
this.connection.off('matched', this.onMatched);
|
||||
(this as any).os.streams.reversiStream.dispose(this.connectionId);
|
||||
|
||||
clearInterval(this.pingClock);
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
fetch() {
|
||||
if (this.gameId == null) {
|
||||
this.game = null;
|
||||
} else {
|
||||
Progress.start();
|
||||
(this as any).api('games/reversi/games/show', {
|
||||
gameId: this.gameId
|
||||
}).then(game => {
|
||||
this.game = game;
|
||||
Progress.done();
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
async nav(game, actualNav = true) {
|
||||
if (this.selfNav) {
|
||||
// 受け取ったゲーム情報が省略されたものなら完全な情報を取得する
|
||||
if (game != null && (game.settings == null || game.settings.map == null)) {
|
||||
game = await (this as any).api('games/reversi/games/show', {
|
||||
gameId: game.id
|
||||
});
|
||||
}
|
||||
|
||||
this.game = game;
|
||||
} else {
|
||||
this.$emit('nav', game, actualNav);
|
||||
}
|
||||
},
|
||||
|
||||
onMatching(user) {
|
||||
this.matching = user;
|
||||
},
|
||||
|
||||
cancel() {
|
||||
this.matching = null;
|
||||
(this as any).api('games/reversi/match/cancel');
|
||||
},
|
||||
|
||||
accept(invitation) {
|
||||
(this as any).api('games/reversi/match', {
|
||||
userId: invitation.parent.id
|
||||
}).then(game => {
|
||||
if (game) {
|
||||
this.matching = null;
|
||||
|
||||
this.nav(game);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
onMatched(game) {
|
||||
this.matching = null;
|
||||
this.game = game;
|
||||
this.nav(game, false);
|
||||
},
|
||||
|
||||
goIndex() {
|
||||
this.nav(null);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
@import '~const.styl'
|
||||
|
||||
root(isDark)
|
||||
color isDark ? #fff : #677f84
|
||||
background isDark ? #191b22 : #fff
|
||||
|
||||
> .matching
|
||||
> h1
|
||||
margin 0
|
||||
padding 24px
|
||||
font-size 20px
|
||||
text-align center
|
||||
font-weight normal
|
||||
|
||||
> .cancel
|
||||
margin 0 auto
|
||||
padding 24px 0 0 0
|
||||
max-width 200px
|
||||
text-align center
|
||||
border-top dashed 1px #c4cdd4
|
||||
|
||||
.vchtoekanapleubgzioubdtmlkribzfd[data-darkmode]
|
||||
root(true)
|
||||
|
||||
.vchtoekanapleubgzioubdtmlkribzfd:not([data-darkmode])
|
||||
root(false)
|
||||
|
||||
</style>
|
||||
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="mk-google">
|
||||
<input type="search" v-model="query" :placeholder="q">
|
||||
<button @click="search">検索</button>
|
||||
<button @click="search">%fa:search% %i18n:common.search%</button>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -1,13 +1,15 @@
|
||||
import Vue from 'vue';
|
||||
|
||||
import analogClock from './analog-clock.vue';
|
||||
import menu from './menu.vue';
|
||||
import noteHeader from './note-header.vue';
|
||||
import signin from './signin.vue';
|
||||
import signup from './signup.vue';
|
||||
import forkit from './forkit.vue';
|
||||
import acct from './acct.vue';
|
||||
import avatar from './avatar.vue';
|
||||
import nav from './nav.vue';
|
||||
import noteHtml from './note-html';
|
||||
import misskeyFlavoredMarkdown from './misskey-flavored-markdown';
|
||||
import poll from './poll.vue';
|
||||
import pollEditor from './poll-editor.vue';
|
||||
import reactionIcon from './reaction-icon.vue';
|
||||
@@ -25,17 +27,29 @@ import urlPreview from './url-preview.vue';
|
||||
import twitterSetting from './twitter-setting.vue';
|
||||
import fileTypeIcon from './file-type-icon.vue';
|
||||
import Switch from './switch.vue';
|
||||
import Othello from './othello.vue';
|
||||
import Reversi from './games/reversi/reversi.vue';
|
||||
import welcomeTimeline from './welcome-timeline.vue';
|
||||
import uiInput from './ui/input.vue';
|
||||
import uiButton from './ui/button.vue';
|
||||
import uiCard from './ui/card.vue';
|
||||
import uiForm from './ui/form.vue';
|
||||
import uiTextarea from './ui/textarea.vue';
|
||||
import uiSwitch from './ui/switch.vue';
|
||||
import uiRadio from './ui/radio.vue';
|
||||
import uiSelect from './ui/select.vue';
|
||||
import formButton from './ui/form/button.vue';
|
||||
import formRadio from './ui/form/radio.vue';
|
||||
|
||||
Vue.component('mk-analog-clock', analogClock);
|
||||
Vue.component('mk-menu', menu);
|
||||
Vue.component('mk-note-header', noteHeader);
|
||||
Vue.component('mk-signin', signin);
|
||||
Vue.component('mk-signup', signup);
|
||||
Vue.component('mk-forkit', forkit);
|
||||
Vue.component('mk-acct', acct);
|
||||
Vue.component('mk-avatar', avatar);
|
||||
Vue.component('mk-nav', nav);
|
||||
Vue.component('mk-note-html', noteHtml);
|
||||
Vue.component('misskey-flavored-markdown', misskeyFlavoredMarkdown);
|
||||
Vue.component('mk-poll', poll);
|
||||
Vue.component('mk-poll-editor', pollEditor);
|
||||
Vue.component('mk-reaction-icon', reactionIcon);
|
||||
@@ -53,5 +67,15 @@ Vue.component('mk-url-preview', urlPreview);
|
||||
Vue.component('mk-twitter-setting', twitterSetting);
|
||||
Vue.component('mk-file-type-icon', fileTypeIcon);
|
||||
Vue.component('mk-switch', Switch);
|
||||
Vue.component('mk-othello', Othello);
|
||||
Vue.component('mk-reversi', Reversi);
|
||||
Vue.component('mk-welcome-timeline', welcomeTimeline);
|
||||
Vue.component('ui-input', uiInput);
|
||||
Vue.component('ui-button', uiButton);
|
||||
Vue.component('ui-card', uiCard);
|
||||
Vue.component('ui-form', uiForm);
|
||||
Vue.component('ui-textarea', uiTextarea);
|
||||
Vue.component('ui-switch', uiSwitch);
|
||||
Vue.component('ui-radio', uiRadio);
|
||||
Vue.component('ui-select', uiSelect);
|
||||
Vue.component('form-button', formButton);
|
||||
Vue.component('form-radio', formRadio);
|
||||
|
||||
@@ -46,33 +46,45 @@ export default Vue.extend({
|
||||
display grid
|
||||
grid-gap 4px
|
||||
|
||||
> *
|
||||
overflow hidden
|
||||
border-radius 4px
|
||||
|
||||
&[data-count="1"]
|
||||
grid-template-rows 1fr
|
||||
|
||||
&[data-count="2"]
|
||||
grid-template-columns 1fr 1fr
|
||||
grid-template-rows 1fr
|
||||
|
||||
&[data-count="3"]
|
||||
grid-template-columns 1fr 0.5fr
|
||||
grid-template-rows 1fr 1fr
|
||||
:nth-child(1)
|
||||
|
||||
> *:nth-child(1)
|
||||
grid-row 1 / 3
|
||||
:nth-child(3)
|
||||
|
||||
> *:nth-child(3)
|
||||
grid-column 2 / 3
|
||||
grid-row 2 / 3
|
||||
|
||||
&[data-count="4"]
|
||||
grid-template-columns 1fr 1fr
|
||||
grid-template-rows 1fr 1fr
|
||||
|
||||
:nth-child(1)
|
||||
> *:nth-child(1)
|
||||
grid-column 1 / 2
|
||||
grid-row 1 / 2
|
||||
:nth-child(2)
|
||||
|
||||
> *:nth-child(2)
|
||||
grid-column 2 / 3
|
||||
grid-row 1 / 2
|
||||
:nth-child(3)
|
||||
|
||||
> *:nth-child(3)
|
||||
grid-column 1 / 2
|
||||
grid-row 2 / 3
|
||||
:nth-child(4)
|
||||
|
||||
> *:nth-child(4)
|
||||
grid-column 2 / 3
|
||||
grid-row 2 / 3
|
||||
|
||||
|
||||
196
src/client/app/common/views/components/menu.vue
Normal file
@@ -0,0 +1,196 @@
|
||||
<template>
|
||||
<div class="mk-menu">
|
||||
<div class="backdrop" ref="backdrop" @click="close"></div>
|
||||
<div class="popover" :class="{ hukidasi }" ref="popover">
|
||||
<template v-for="item in items">
|
||||
<div v-if="item === null"></div>
|
||||
<button v-if="item" @click="clicked(item.action)" v-html="item.icon ? item.icon + ' ' + item.text : item.text"></button>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import * as anime from 'animejs';
|
||||
|
||||
export default Vue.extend({
|
||||
props: {
|
||||
source: {
|
||||
required: true
|
||||
},
|
||||
items: {
|
||||
type: Array,
|
||||
required: true
|
||||
},
|
||||
compact: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
hukidasi: !this.compact
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.$nextTick(() => {
|
||||
const popover = this.$refs.popover as any;
|
||||
|
||||
const rect = this.source.getBoundingClientRect();
|
||||
const width = popover.offsetWidth;
|
||||
const height = popover.offsetHeight;
|
||||
|
||||
let left;
|
||||
let top;
|
||||
|
||||
if (this.compact) {
|
||||
const x = rect.left + window.pageXOffset + (this.source.offsetWidth / 2);
|
||||
const y = rect.top + window.pageYOffset + (this.source.offsetHeight / 2);
|
||||
left = (x - (width / 2));
|
||||
top = (y - (height / 2));
|
||||
} else {
|
||||
const x = rect.left + window.pageXOffset + (this.source.offsetWidth / 2);
|
||||
const y = rect.top + window.pageYOffset + this.source.offsetHeight;
|
||||
left = (x - (width / 2));
|
||||
top = y;
|
||||
}
|
||||
|
||||
if (left + width - window.pageXOffset > window.innerWidth) {
|
||||
left = window.innerWidth - width + window.pageXOffset;
|
||||
this.hukidasi = false;
|
||||
}
|
||||
|
||||
if (top + height - window.pageYOffset > window.innerHeight) {
|
||||
top = window.innerHeight - height + window.pageYOffset;
|
||||
this.hukidasi = false;
|
||||
}
|
||||
|
||||
popover.style.left = left + 'px';
|
||||
popover.style.top = top + 'px';
|
||||
|
||||
anime({
|
||||
targets: this.$refs.backdrop,
|
||||
opacity: 1,
|
||||
duration: 100,
|
||||
easing: 'linear'
|
||||
});
|
||||
|
||||
anime({
|
||||
targets: this.$refs.popover,
|
||||
opacity: 1,
|
||||
scale: [0.5, 1],
|
||||
duration: 500
|
||||
});
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
clicked(fn) {
|
||||
fn();
|
||||
this.close();
|
||||
},
|
||||
close() {
|
||||
(this.$refs.backdrop as any).style.pointerEvents = 'none';
|
||||
anime({
|
||||
targets: this.$refs.backdrop,
|
||||
opacity: 0,
|
||||
duration: 200,
|
||||
easing: 'linear'
|
||||
});
|
||||
|
||||
(this.$refs.popover as any).style.pointerEvents = 'none';
|
||||
anime({
|
||||
targets: this.$refs.popover,
|
||||
opacity: 0,
|
||||
scale: 0.5,
|
||||
duration: 200,
|
||||
easing: 'easeInBack',
|
||||
complete: () => {
|
||||
this.$emit('closed');
|
||||
this.$destroy();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
@import '~const.styl'
|
||||
|
||||
$border-color = rgba(27, 31, 35, 0.15)
|
||||
|
||||
.mk-menu
|
||||
position initial
|
||||
|
||||
> .backdrop
|
||||
position fixed
|
||||
top 0
|
||||
left 0
|
||||
z-index 10000
|
||||
width 100%
|
||||
height 100%
|
||||
background rgba(#000, 0.1)
|
||||
opacity 0
|
||||
|
||||
> .popover
|
||||
position absolute
|
||||
z-index 10001
|
||||
padding 8px 0
|
||||
background #fff
|
||||
border 1px solid $border-color
|
||||
border-radius 4px
|
||||
box-shadow 0 3px 12px rgba(27, 31, 35, 0.15)
|
||||
transform scale(0.5)
|
||||
opacity 0
|
||||
|
||||
$balloon-size = 16px
|
||||
|
||||
&.hukidasi
|
||||
margin-top $balloon-size
|
||||
transform-origin center -($balloon-size)
|
||||
|
||||
&:before
|
||||
&:after
|
||||
content ""
|
||||
display block
|
||||
position absolute
|
||||
pointer-events none
|
||||
|
||||
&:before
|
||||
top -($balloon-size * 2)
|
||||
left s('calc(50% - %s)', $balloon-size)
|
||||
border-top solid $balloon-size transparent
|
||||
border-left solid $balloon-size transparent
|
||||
border-right solid $balloon-size transparent
|
||||
border-bottom solid $balloon-size $border-color
|
||||
|
||||
&:after
|
||||
top -($balloon-size * 2) + 1.5px
|
||||
left s('calc(50% - %s)', $balloon-size)
|
||||
border-top solid $balloon-size transparent
|
||||
border-left solid $balloon-size transparent
|
||||
border-right solid $balloon-size transparent
|
||||
border-bottom solid $balloon-size #fff
|
||||
|
||||
> button
|
||||
display block
|
||||
padding 8px 16px
|
||||
width 100%
|
||||
|
||||
&:hover
|
||||
color $theme-color-foreground
|
||||
background $theme-color
|
||||
text-decoration none
|
||||
|
||||
&:active
|
||||
color $theme-color-foreground
|
||||
background darken($theme-color, 10%)
|
||||
|
||||
> div
|
||||
margin 8px 0
|
||||
height 1px
|
||||
background #eee
|
||||
|
||||
</style>
|
||||
@@ -83,7 +83,7 @@ export default Vue.extend({
|
||||
}
|
||||
} else {
|
||||
if (items[0].kind == 'file') {
|
||||
alert('メッセージに添付できるのはひとつのファイルのみです');
|
||||
alert('%i18n:only-one-file-attached%');
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -105,7 +105,7 @@ export default Vue.extend({
|
||||
return;
|
||||
} else if (e.dataTransfer.files.length > 1) {
|
||||
e.preventDefault();
|
||||
alert('メッセージに添付できるのはひとつのファイルのみです');
|
||||
alert('%i18n:only-one-file-attached%');
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -119,7 +119,7 @@ export default Vue.extend({
|
||||
},
|
||||
|
||||
onKeypress(e) {
|
||||
if ((e.which == 10 || e.which == 13) && e.ctrlKey) {
|
||||
if ((e.which == 10 || e.which == 13) && e.ctrlKey && this.canSend) {
|
||||
this.send();
|
||||
}
|
||||
},
|
||||
|
||||
@@ -3,12 +3,11 @@
|
||||
<mk-avatar class="avatar" :user="message.user" target="_blank"/>
|
||||
<div class="content">
|
||||
<div class="balloon" :data-no-text="message.text == null">
|
||||
<p class="read" v-if="isMe && message.isRead">%i18n:@is-read%</p>
|
||||
<button class="delete-button" v-if="isMe" title="%i18n:common.delete%">
|
||||
<!-- <button class="delete-button" v-if="isMe" title="%i18n:common.delete%">
|
||||
<img src="/assets/desktop/messaging/delete.png" alt="Delete"/>
|
||||
</button>
|
||||
</button> -->
|
||||
<div class="content" v-if="!message.isDeleted">
|
||||
<mk-note-html class="text" v-if="message.text" ref="text" :text="message.text" :i="$store.state.i"/>
|
||||
<misskey-flavored-markdown class="text" v-if="message.text" ref="text" :text="message.text" :i="$store.state.i"/>
|
||||
<div class="file" v-if="message.file">
|
||||
<a :href="message.file.url" target="_blank" :title="message.file.name">
|
||||
<img v-if="message.file.type.split('/')[0] == 'image'" :src="message.file.url" :alt="message.file.name"/>
|
||||
@@ -23,6 +22,7 @@
|
||||
<div></div>
|
||||
<mk-url-preview v-for="url in urls" :url="url" :key="url"/>
|
||||
<footer>
|
||||
<span class="read" v-if="isMe && message.isRead">%i18n:@is-read%</span>
|
||||
<mk-time :time="message.createdAt"/>
|
||||
<template v-if="message.is_edited">%fa:pencil-alt%</template>
|
||||
</footer>
|
||||
@@ -32,7 +32,7 @@
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import parse from '../../../../../text/parse';
|
||||
import parse from '../../../../../mfm/parse';
|
||||
|
||||
export default Vue.extend({
|
||||
props: {
|
||||
@@ -79,7 +79,8 @@ root(isDark)
|
||||
> .content
|
||||
|
||||
> .balloon
|
||||
display block
|
||||
display flex
|
||||
align-items center
|
||||
padding 0
|
||||
max-width calc(100% - 16px)
|
||||
min-height 38px
|
||||
@@ -120,17 +121,6 @@ root(isDark)
|
||||
height 16px
|
||||
cursor pointer
|
||||
|
||||
> .read
|
||||
user-select none
|
||||
display block
|
||||
position absolute
|
||||
z-index 1
|
||||
bottom -4px
|
||||
left -12px
|
||||
margin 0
|
||||
color isDark ? rgba(#fff, 0.5) : rgba(#000, 0.5)
|
||||
font-size 11px
|
||||
|
||||
> .content
|
||||
|
||||
> .is-deleted
|
||||
@@ -258,8 +248,14 @@ root(isDark)
|
||||
> footer
|
||||
text-align right
|
||||
|
||||
> .read
|
||||
user-select none
|
||||
margin 0 4px 0 0
|
||||
color isDark ? rgba(#fff, 0.5) : rgba(#000, 0.5)
|
||||
font-size 11px
|
||||
|
||||
&[data-is-deleted]
|
||||
> .baloon
|
||||
> .balloon
|
||||
opacity 0.5
|
||||
|
||||
.message[data-darkmode]
|
||||
|
||||