Compare commits
1893 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e7180d529a | ||
|
|
b8cd872738 | ||
|
|
efaaa76185 | ||
|
|
19e1f996a6 | ||
|
|
40a69bf200 | ||
|
|
9e3abb9989 | ||
|
|
5ba48e06f7 | ||
|
|
8b3a0a524b | ||
|
|
d9fe9cc5df | ||
|
|
b202c7906a | ||
|
|
b9c868cac6 | ||
|
|
33adf3c88d | ||
|
|
8b84f40975 | ||
|
|
fa131d2023 | ||
|
|
a83b38b50a | ||
|
|
dcd7b286ef | ||
|
|
b85bf769cd | ||
|
|
630a20d61e | ||
|
|
88c3794cf1 | ||
|
|
42eb457ad0 | ||
|
|
d153a8de20 | ||
|
|
7f7551f44c | ||
|
|
23082b55a4 | ||
|
|
dac7387a7f | ||
|
|
8c6856d894 | ||
|
|
2c0e514fb2 | ||
|
|
1917b0339e | ||
|
|
c05419f223 | ||
|
|
e0deaec695 | ||
|
|
d70e2a788e | ||
|
|
7343e6e2e8 | ||
|
|
106d4cc0d6 | ||
|
|
c98879cb7a | ||
|
|
9ca755c313 | ||
|
|
25e0b98840 | ||
|
|
5599c43c71 | ||
|
|
eb7597d7e4 | ||
|
|
d5767e92c4 | ||
|
|
ba3749d373 | ||
|
|
d8088acdf2 | ||
|
|
ad93e0aa3d | ||
|
|
691e58f03d | ||
|
|
95d5bccfca | ||
|
|
2aa8e0a4bf | ||
|
|
6e96d6677d | ||
|
|
8816c20f51 | ||
|
|
e955fe1ffd | ||
|
|
5cbcac713a | ||
|
|
2b50364ab4 | ||
|
|
fa04ac789e | ||
|
|
95ce8dce3d | ||
|
|
0b5eec4ca8 | ||
|
|
6d9716f90e | ||
|
|
aa31061d90 | ||
|
|
acc7797dff | ||
|
|
7959196dc7 | ||
|
|
c6ff6939a5 | ||
|
|
769960f29e | ||
|
|
d92e9759f3 | ||
|
|
bf7e19b288 | ||
|
|
98954cd6d4 | ||
|
|
538bb978ed | ||
|
|
10232c5866 | ||
|
|
5cd6a0db16 | ||
|
|
ff0a05a2d6 | ||
|
|
e34b264af2 | ||
|
|
00d79487cd | ||
|
|
3cace734c7 | ||
|
|
f428372869 | ||
|
|
5dd2feba9b | ||
|
|
a1b026239e | ||
|
|
40735ce76b | ||
|
|
4a00c13b33 | ||
|
|
8e359d54bd | ||
|
|
fb76dff836 | ||
|
|
2448bf4e4e | ||
|
|
91e0fc8c62 | ||
|
|
b4f86feddb | ||
|
|
7167c8c593 | ||
|
|
51b79d4250 | ||
|
|
925fcc1c64 | ||
|
|
fcdc14862c | ||
|
|
dac2844cae | ||
|
|
706b0cea16 | ||
|
|
842e7844c7 | ||
|
|
1dceda50d8 | ||
|
|
af8b9abba4 | ||
|
|
07b07685fa | ||
|
|
cde43fe3c8 | ||
|
|
2fe84aa75b | ||
|
|
7d79a4840d | ||
|
|
3ee9479572 | ||
|
|
ccf8e44acc | ||
|
|
451acb77df | ||
|
|
e2c6227f47 | ||
|
|
ebd1c877ad | ||
|
|
498094b3c7 | ||
|
|
1cc183ecdb | ||
|
|
e8948452fd | ||
|
|
ade7e62836 | ||
|
|
395cfa6108 | ||
|
|
b5ff2abdb9 | ||
|
|
229e85b2c5 | ||
|
|
37058e3480 | ||
|
|
a1b82e9723 | ||
|
|
db943df0c8 | ||
|
|
ff8d300ea8 | ||
|
|
8b490b9b94 | ||
|
|
f83f8631ac | ||
|
|
16da91d8d1 | ||
|
|
8ffd62b462 | ||
|
|
935367e167 | ||
|
|
00618260f2 | ||
|
|
77d66fac7b | ||
|
|
17d7f59b06 | ||
|
|
2561547db1 | ||
|
|
7738438616 | ||
|
|
3d8fc4a794 | ||
|
|
87b4e7905e | ||
|
|
13c5d4985a | ||
|
|
f0df4096fd | ||
|
|
5044424549 | ||
|
|
8ce67cdcd6 | ||
|
|
1915ccabdd | ||
|
|
6fea2f52f1 | ||
|
|
f77eaaa08a | ||
|
|
7c5bc03492 | ||
|
|
72a1af6cd4 | ||
|
|
4bce6f14f3 | ||
|
|
a38ce86f87 | ||
|
|
f539491502 | ||
|
|
d279f8e9ff | ||
|
|
eaec936fa6 | ||
|
|
a0735b0e7a | ||
|
|
5b039a1bee | ||
|
|
921609cab1 | ||
|
|
199573ccee | ||
|
|
977200b7cd | ||
|
|
6abff253ea | ||
|
|
ba64de334a | ||
|
|
dc1d7fa9d7 | ||
|
|
f42665d4bc | ||
|
|
a5eb19c878 | ||
|
|
60fa8e13d6 | ||
|
|
ecbaea463b | ||
|
|
814ddeb436 | ||
|
|
d6466106e8 | ||
|
|
633f5384f9 | ||
|
|
fa7989772c | ||
|
|
0e395612a6 | ||
|
|
fb3f52f3ad | ||
|
|
ba11c71d65 | ||
|
|
bdc3081167 | ||
|
|
430efcf1b9 | ||
|
|
996450dd7c | ||
|
|
fa779f0417 | ||
|
|
25cec6d28a | ||
|
|
c5f8403cea | ||
|
|
a9ae9a65c8 | ||
|
|
3698c679e2 | ||
|
|
881df20f1b | ||
|
|
7d269c0441 | ||
|
|
ba38f64353 | ||
|
|
db3ae303cb | ||
|
|
66f3a155e6 | ||
|
|
639b483e6c | ||
|
|
09843a409b | ||
|
|
e894ed5a8b | ||
|
|
d7808299fd | ||
|
|
f92e0c16d2 | ||
|
|
d94b3757be | ||
|
|
13e822cba6 | ||
|
|
c57bf87f52 | ||
|
|
99fbd60265 | ||
|
|
ea9b48db3c | ||
|
|
c145c994a9 | ||
|
|
d033998b56 | ||
|
|
3136c714bf | ||
|
|
c0ee134f19 | ||
|
|
d15ebe5732 | ||
|
|
ef630195fa | ||
|
|
e31921151e | ||
|
|
f94992abbe | ||
|
|
b00060c09c | ||
|
|
f6217d96d2 | ||
|
|
3a6947c7ed | ||
|
|
0fb528ddf8 | ||
|
|
14c03f226d | ||
|
|
4f0d844b43 | ||
|
|
b93395fc4c | ||
|
|
34eacb7e2d | ||
|
|
0177023ead | ||
|
|
a4678e45de | ||
|
|
f24869625e | ||
|
|
01beb705a2 | ||
|
|
ce28c70c35 | ||
|
|
5e0f5c31e7 | ||
|
|
b28dd4be52 | ||
|
|
291beb45fc | ||
|
|
ffb345ccb5 | ||
|
|
d2abe2cd81 | ||
|
|
acffc3e522 | ||
|
|
0962e62b8c | ||
|
|
91ebd310b7 | ||
|
|
2974c74b4e | ||
|
|
3d24112d2d | ||
|
|
4a977cd523 | ||
|
|
4b1886990f | ||
|
|
f3499b787c | ||
|
|
5209a584a2 | ||
|
|
57a63d38aa | ||
|
|
3efffbcf22 | ||
|
|
15eaebe522 | ||
|
|
eee98358ac | ||
|
|
795fc5e7bc | ||
|
|
70ac668474 | ||
|
|
1004e0d6e8 | ||
|
|
52aa64fcb6 | ||
|
|
7860d97a10 | ||
|
|
409b37b271 | ||
|
|
ad9b9964fa | ||
|
|
d2b5276f43 | ||
|
|
7204e2a84c | ||
|
|
1377fa3332 | ||
|
|
bf087bfccf | ||
|
|
e846e3d571 | ||
|
|
d646e62888 | ||
|
|
c008154d18 | ||
|
|
29bd4de26a | ||
|
|
7559b8da6c | ||
|
|
35218e84fc | ||
|
|
2c135fa2f6 | ||
|
|
21da6bd047 | ||
|
|
f1d65a66b4 | ||
|
|
63e2dbbb0d | ||
|
|
a228c522f1 | ||
|
|
a951c337b8 | ||
|
|
db3efb3791 | ||
|
|
8ee771ca77 | ||
|
|
488bbc9651 | ||
|
|
29b2bdf613 | ||
|
|
7e35048829 | ||
|
|
4d6b9f62e5 | ||
|
|
5f9a9867eb | ||
|
|
059a8e07d2 | ||
|
|
cf82f56e66 | ||
|
|
2778bd14d4 | ||
|
|
5b0446739c | ||
|
|
55f235d0ac | ||
|
|
4ec44c68e9 | ||
|
|
e6952d499a | ||
|
|
e0b82f827b | ||
|
|
0bccb17e82 | ||
|
|
b251b8c6a9 | ||
|
|
c2a62f632b | ||
|
|
359da9a5a1 | ||
|
|
2a235151ed | ||
|
|
9e318d5ebc | ||
|
|
6819eb3b4d | ||
|
|
4c6fb60dd2 | ||
|
|
bffb9a5c45 | ||
|
|
dca4053a67 | ||
|
|
fd07f00d14 | ||
|
|
bbeb6d534e | ||
|
|
37b5afa1a3 | ||
|
|
63b8af4531 | ||
|
|
e89e76076a | ||
|
|
18b4f74cdb | ||
|
|
b80d0a3b12 | ||
|
|
e53dde385c | ||
|
|
6a7a4c20e6 | ||
|
|
6434dac04d | ||
|
|
5deb1bf40e | ||
|
|
9cd334576c | ||
|
|
ae36bf301a | ||
|
|
9f60688d37 | ||
|
|
6a5a9de795 | ||
|
|
ca0ea9e57c | ||
|
|
a77a7e8112 | ||
|
|
b26ea2edc0 | ||
|
|
02b99dfd76 | ||
|
|
af02b0f115 | ||
|
|
9b3c379678 | ||
|
|
a423fd7695 | ||
|
|
de6e1d8c9b | ||
|
|
d9db3e8629 | ||
|
|
ac1c81b7d6 | ||
|
|
49b2eec534 | ||
|
|
f0abc46429 | ||
|
|
9fd4f5ee0a | ||
|
|
5e202c3def | ||
|
|
48223c1c76 | ||
|
|
dddf7834cc | ||
|
|
66ef30b2cc | ||
|
|
f802fe57b9 | ||
|
|
ead884ce89 | ||
|
|
6a87e9f690 | ||
|
|
5b943722fb | ||
|
|
4d92b14308 | ||
|
|
167c96d14e | ||
|
|
8a42373753 | ||
|
|
c1751a9b84 | ||
|
|
4e11da98d9 | ||
|
|
1b7d98c17e | ||
|
|
3038434712 | ||
|
|
117ab633a1 | ||
|
|
e50fa4762d | ||
|
|
aed1e839ba | ||
|
|
00f2974a2a | ||
|
|
073c96af47 | ||
|
|
71da498364 | ||
|
|
8e9c11f160 | ||
|
|
98f6b23249 | ||
|
|
89288d8e0d | ||
|
|
724121eeaa | ||
|
|
edee95a5ca | ||
|
|
0c2361bf72 | ||
|
|
92f8dc48e3 | ||
|
|
06a0fff4b0 | ||
|
|
d55e4621ac | ||
|
|
bc6bda3714 | ||
|
|
d3aafd3f13 | ||
|
|
1a508de1c4 | ||
|
|
768cc0aff5 | ||
|
|
67f4c1f429 | ||
|
|
2d4ceec0a5 | ||
|
|
3e2a0cd89a | ||
|
|
d1f4f2f663 | ||
|
|
6e3bf26cad | ||
|
|
672377f116 | ||
|
|
80ee5afba7 | ||
|
|
f55fcd3305 | ||
|
|
64fc14ade5 | ||
|
|
807f245657 | ||
|
|
62f966dc27 | ||
|
|
09f97bf7a7 | ||
|
|
69460e494c | ||
|
|
9bef723346 | ||
|
|
b99eabb2cf | ||
|
|
17be3f3d0f | ||
|
|
05fe2cb173 | ||
|
|
428be14c27 | ||
|
|
a04fa8441e | ||
|
|
7bcfa84e1a | ||
|
|
1cc5986df3 | ||
|
|
7aa5d03875 | ||
|
|
a59fbfac19 | ||
|
|
677f9ee8f6 | ||
|
|
f4a16be2b4 | ||
|
|
46b967ee4a | ||
|
|
78568accd1 | ||
|
|
e9f20a0fad | ||
|
|
bbd9894e6b | ||
|
|
f92745e381 | ||
|
|
2762b78bcc | ||
|
|
2d4ed2c8c2 | ||
|
|
2de8e8c358 | ||
|
|
eb7b638db3 | ||
|
|
321e851b26 | ||
|
|
f8340be3bf | ||
|
|
02341ceb6e | ||
|
|
3dcdd7a5d7 | ||
|
|
85188b5de2 | ||
|
|
b721d049c6 | ||
|
|
e518fff944 | ||
|
|
048128c7e1 | ||
|
|
d3717449c2 | ||
|
|
04de6218d3 | ||
|
|
0082473d78 | ||
|
|
77baca8e6e | ||
|
|
6a7169630c | ||
|
|
6b2089e043 | ||
|
|
14ad3af30d | ||
|
|
e7e6d833b7 | ||
|
|
d1a9561135 | ||
|
|
c7bda6f908 | ||
|
|
ef43721e32 | ||
|
|
ba6cd874aa | ||
|
|
f283d2423f | ||
|
|
c07f668f14 | ||
|
|
596524a63c | ||
|
|
975e4dd285 | ||
|
|
09b05c8552 | ||
|
|
530ee6f80e | ||
|
|
6ad31dca76 | ||
|
|
d423f8ae57 | ||
|
|
8e5ce7f8e3 | ||
|
|
33dfc21e4b | ||
|
|
3266f3948a | ||
|
|
7259887124 | ||
|
|
800de03187 | ||
|
|
78ba305e5c | ||
|
|
bfed1475bb | ||
|
|
3281d263c4 | ||
|
|
a9a1798e3a | ||
|
|
6806eafaed | ||
|
|
3e20ea5b2e | ||
|
|
3f30a69b8b | ||
|
|
2d2e16d9f6 | ||
|
|
9c32118b77 | ||
|
|
ecf2eb4738 | ||
|
|
3d754ea7eb | ||
|
|
f755f24560 | ||
|
|
699879d95d | ||
|
|
6677508ba7 | ||
|
|
58da32358b | ||
|
|
491bc75095 | ||
|
|
b9eafeee3f | ||
|
|
c56ff5d88d | ||
|
|
f5dd83a44a | ||
|
|
9a295a85b1 | ||
|
|
8e06d93c31 | ||
|
|
1a42200137 | ||
|
|
bbf33d2475 | ||
|
|
93203ebfd1 | ||
|
|
67053eeaa0 | ||
|
|
43baf4ad6a | ||
|
|
5b2a36e47b | ||
|
|
2a0862a24e | ||
|
|
ce31027b2e | ||
|
|
3f66c77821 | ||
|
|
bc713656ec | ||
|
|
46d89faebc | ||
|
|
7135c0e308 | ||
|
|
1962bfb4a5 | ||
|
|
a1fca2550e | ||
|
|
c17f99b7a5 | ||
|
|
7cd76d60c2 | ||
|
|
fa7c8cfe5b | ||
|
|
05fb8d35af | ||
|
|
eaa827e2d9 | ||
|
|
f365ea4585 | ||
|
|
5d2e43ffb9 | ||
|
|
e9a97ed99a | ||
|
|
fe98102600 | ||
|
|
aae8845664 | ||
|
|
81a4388ecc | ||
|
|
be3ab026fd | ||
|
|
f92f9d8cb0 | ||
|
|
08a59591ae | ||
|
|
a09a244242 | ||
|
|
483a61d90d | ||
|
|
385fb7586b | ||
|
|
c624da70ef | ||
|
|
675668c395 | ||
|
|
bc9c7efe85 | ||
|
|
2488d40421 | ||
|
|
bf7875bfaa | ||
|
|
a84fa30774 | ||
|
|
c19a763b3d | ||
|
|
0875460974 | ||
|
|
f0b08d3936 | ||
|
|
16520c7b4c | ||
|
|
65549d06d9 | ||
|
|
52da66d550 | ||
|
|
251c3c3fe4 | ||
|
|
ce2d2a10c1 | ||
|
|
3b6d242ef6 | ||
|
|
0ebe801af4 | ||
|
|
05daa7ac7d | ||
|
|
990a583e5e | ||
|
|
d9b02a18bf | ||
|
|
30aae79e5c | ||
|
|
a149c121fb | ||
|
|
47f4b51207 | ||
|
|
79f4d886d0 | ||
|
|
2b556aba03 | ||
|
|
4f62043b0c | ||
|
|
b1ae304c51 | ||
|
|
425bc032d0 | ||
|
|
0156b75bde | ||
|
|
8bc8fc58de | ||
|
|
9bf847b1fb | ||
|
|
0b078d203b | ||
|
|
df59018b47 | ||
|
|
b2681dcb5d | ||
|
|
46fa471636 | ||
|
|
5f2c441996 | ||
|
|
a79cc42b26 | ||
|
|
739c993911 | ||
|
|
cb180e00de | ||
|
|
4d46a61051 | ||
|
|
81969ea8b2 | ||
|
|
ac474f3884 | ||
|
|
a39aaf6eb1 | ||
|
|
68a7661f08 | ||
|
|
ffcb2f755c | ||
|
|
366e0d6bde | ||
|
|
b3a3238e43 | ||
|
|
92828028db | ||
|
|
bd97e315ff | ||
|
|
51083419f5 | ||
|
|
b23bfd4d86 | ||
|
|
7de3e847bd | ||
|
|
0d1a541dba | ||
|
|
2717109fe2 | ||
|
|
60ca0626ce | ||
|
|
15dae0ae65 | ||
|
|
1c680118a0 | ||
|
|
ad5efbba59 | ||
|
|
6dc7baa5e9 | ||
|
|
c2b886e750 | ||
|
|
edb61e52c5 | ||
|
|
ded297b04c | ||
|
|
65e1d5978a | ||
|
|
86e76358b1 | ||
|
|
435e0257a4 | ||
|
|
1c45cc808b | ||
|
|
ed27a2f963 | ||
|
|
1f53d1a149 | ||
|
|
8295f6d7a3 | ||
|
|
b02f6341c9 | ||
|
|
f6d577d411 | ||
|
|
db3e73318e | ||
|
|
29c2071711 | ||
|
|
3acd524d09 | ||
|
|
dae65cc123 | ||
|
|
695f154d87 | ||
|
|
59dca9a812 | ||
|
|
b9f04f8f53 | ||
|
|
0985f14f18 | ||
|
|
56684dd7c3 | ||
|
|
47a5f3bc67 | ||
|
|
1c1e3009e9 | ||
|
|
c7c3f6999b | ||
|
|
fb4aa9bc1c | ||
|
|
ef57f5907b | ||
|
|
eff44f9cd1 | ||
|
|
d7fa92d58f | ||
|
|
4e8033d5a4 | ||
|
|
8a207d8311 | ||
|
|
94ba9c8437 | ||
|
|
88c71c2998 | ||
|
|
7b6e55047f | ||
|
|
9d85d0bb08 | ||
|
|
27ac0bbc00 | ||
|
|
affde9b4e2 | ||
|
|
88324b6dd9 | ||
|
|
9b95ffe6c6 | ||
|
|
6b137f8d69 | ||
|
|
e78b2b0ab8 | ||
|
|
8b51428347 | ||
|
|
b8d53a7b40 | ||
|
|
b0d9e9caa2 | ||
|
|
1fc4ec8dc1 | ||
|
|
a1e1e25800 | ||
|
|
3b020732ec | ||
|
|
dcf92945fe | ||
|
|
f9f33903d4 | ||
|
|
d8bf06ab0f | ||
|
|
806dabe58b | ||
|
|
a17b8c56d7 | ||
|
|
0eaaaba8f2 | ||
|
|
f359d79d36 | ||
|
|
1d84000d94 | ||
|
|
b70e22c150 | ||
|
|
0774ffe376 | ||
|
|
0096d7d8ac | ||
|
|
38db966b3d | ||
|
|
cb7d313a66 | ||
|
|
91b7905f3f | ||
|
|
9a81fba992 | ||
|
|
43553d5c09 | ||
|
|
e0ca8ce173 | ||
|
|
13624ea7c2 | ||
|
|
9502586c8b | ||
|
|
d6753f2cf2 | ||
|
|
5ba36efcd2 | ||
|
|
fd497ef105 | ||
|
|
9c4a7bf94c | ||
|
|
91f8adc138 | ||
|
|
69fa2373cb | ||
|
|
8b37fc4772 | ||
|
|
81e4ed9591 | ||
|
|
9cda89ec04 | ||
|
|
fc180f030f | ||
|
|
a827b6028d | ||
|
|
4517bf7342 | ||
|
|
b21287262e | ||
|
|
a60ae130c1 | ||
|
|
dd88acd411 | ||
|
|
b63fc1a9e5 | ||
|
|
17f143cfb2 | ||
|
|
cf57d847d1 | ||
|
|
7c4c7bea14 | ||
|
|
e5ec47fc75 | ||
|
|
ad91dc2423 | ||
|
|
7acbe53948 | ||
|
|
fe1b8ba0cb | ||
|
|
b0a8a51b69 | ||
|
|
c3ca21e610 | ||
|
|
c1b47a2119 | ||
|
|
caf625afee | ||
|
|
2bad3865a3 | ||
|
|
3f7d248684 | ||
|
|
4e7382b793 | ||
|
|
552ff4a044 | ||
|
|
afb52a0cd5 | ||
|
|
1ac89b0f5b | ||
|
|
5039ca7ee1 | ||
|
|
a48fd9ce18 | ||
|
|
58859c4811 | ||
|
|
5988fb3111 | ||
|
|
8dce821789 | ||
|
|
16fde0b507 | ||
|
|
9723662706 | ||
|
|
df4415b4fe | ||
|
|
6e179e7cde | ||
|
|
87f248b8ec | ||
|
|
027140eccc | ||
|
|
92cf205c66 | ||
|
|
fa3299840f | ||
|
|
f54529d46f | ||
|
|
b772add064 | ||
|
|
231f2e77a4 | ||
|
|
a000a9e607 | ||
|
|
e8da15ab1e | ||
|
|
e070ccb313 | ||
|
|
2b06579228 | ||
|
|
853c847ba1 | ||
|
|
e852680b0a | ||
|
|
0b0ee915b3 | ||
|
|
516d1d093f | ||
|
|
aee9c79c0f | ||
|
|
2d4b183c14 | ||
|
|
03b20e11ca | ||
|
|
e0e006e284 | ||
|
|
a294a881ec | ||
|
|
53926082e7 | ||
|
|
2d185becc3 | ||
|
|
67fff324b0 | ||
|
|
f64b7fcabc | ||
|
|
4cefa16db6 | ||
|
|
22722379df | ||
|
|
b2b83dc45d | ||
|
|
ebf6f8bbfd | ||
|
|
3e1631d180 | ||
|
|
97cb3c8613 | ||
|
|
6dda3a5d8a | ||
|
|
e50b0540f5 | ||
|
|
63b4aee9bd | ||
|
|
5b5de6a89c | ||
|
|
a11c991f83 | ||
|
|
a0adcf0d1a | ||
|
|
93b2b82993 | ||
|
|
4dee7d91b1 | ||
|
|
839be6477d | ||
|
|
59e2ed8ab0 | ||
|
|
83790004dd | ||
|
|
b70e9824ac | ||
|
|
155d49e8ac | ||
|
|
4ae10ab33d | ||
|
|
7124586eb1 | ||
|
|
74f6ed1851 | ||
|
|
efae7a7bce | ||
|
|
e59f13e8ff | ||
|
|
31ed8949b9 | ||
|
|
f1174a15e0 | ||
|
|
912ffae600 | ||
|
|
71a5662195 | ||
|
|
774834a31f | ||
|
|
91f1c3a10a | ||
|
|
8fc1e07136 | ||
|
|
a62e2b83ff | ||
|
|
e31a2f7e55 | ||
|
|
1598e996b1 | ||
|
|
4fb7ee760a | ||
|
|
37865cb381 | ||
|
|
ab8b882435 | ||
|
|
1b2996947e | ||
|
|
1d9c88e9a1 | ||
|
|
ea56d368e3 | ||
|
|
dbd3a750f5 | ||
|
|
f41818141f | ||
|
|
d2f576accd | ||
|
|
4e483856d4 | ||
|
|
2997f26e3c | ||
|
|
cdab596240 | ||
|
|
fca7a9da94 | ||
|
|
8ba178f795 | ||
|
|
8eb8243153 | ||
|
|
b4967b862c | ||
|
|
aee3517736 | ||
|
|
52ff8e84fa | ||
|
|
9bb6db649c | ||
|
|
da99be9897 | ||
|
|
2d7ec8a471 | ||
|
|
4cbbfdad1a | ||
|
|
2924858311 | ||
|
|
85916bfea1 | ||
|
|
38ccd9e794 | ||
|
|
c64b6be915 | ||
|
|
d98c67e13c | ||
|
|
d129151fdf | ||
|
|
1b9c69f793 | ||
|
|
42dd092334 | ||
|
|
8dc9ec06f8 | ||
|
|
ae5da782e5 | ||
|
|
313b0cec65 | ||
|
|
12a51972ed | ||
|
|
a2f3b2966f | ||
|
|
0c2627f08b | ||
|
|
9535df12dd | ||
|
|
2400471a0d | ||
|
|
784da8c37b | ||
|
|
3778f9c521 | ||
|
|
e1cec85f1e | ||
|
|
ca9c087060 | ||
|
|
5b2d91baad | ||
|
|
08e099b88d | ||
|
|
4153b0db38 | ||
|
|
88701a21bb | ||
|
|
3ddc73ca94 | ||
|
|
693d793265 | ||
|
|
5d685233dd | ||
|
|
16575751d9 | ||
|
|
1f6295f437 | ||
|
|
6737fe2ead | ||
|
|
4e77939fca | ||
|
|
21f528c07d | ||
|
|
23f835fac0 | ||
|
|
f21343225c | ||
|
|
f13a59f7db | ||
|
|
0315b9274c | ||
|
|
da88043962 | ||
|
|
0352bf0cc2 | ||
|
|
baa71070a8 | ||
|
|
2713064f27 | ||
|
|
f6387ac115 | ||
|
|
d704aca035 | ||
|
|
2b54b4ac06 | ||
|
|
7410f2f4c0 | ||
|
|
99c3c1258a | ||
|
|
e51184931d | ||
|
|
3bc9a40b48 | ||
|
|
9f49ca8fdb | ||
|
|
550d1547b4 | ||
|
|
ca0b56ee57 | ||
|
|
ef1d854f2c | ||
|
|
a5023271ef | ||
|
|
c3747db670 | ||
|
|
fe1e60a28c | ||
|
|
f91d2e8c8d | ||
|
|
dccc2c60e3 | ||
|
|
933e25804c | ||
|
|
0b503661af | ||
|
|
58082431ff | ||
|
|
2536bfb5f5 | ||
|
|
6428066552 | ||
|
|
4bf3827b73 | ||
|
|
3cad494404 | ||
|
|
ef0793311f | ||
|
|
6f3e341e89 | ||
|
|
2fea3be7c0 | ||
|
|
82059d4fd9 | ||
|
|
07ddeae2f1 | ||
|
|
f2279758b2 | ||
|
|
1ed189a518 | ||
|
|
137741d307 | ||
|
|
d702f6e090 | ||
|
|
f33701233c | ||
|
|
70003269e5 | ||
|
|
61896d2386 | ||
|
|
52d640c5a7 | ||
|
|
c65f5761e1 | ||
|
|
3016ac4805 | ||
|
|
28a47cd331 | ||
|
|
6ecb88b0d1 | ||
|
|
8df1278c8e | ||
|
|
52bec430d4 | ||
|
|
da4cec8767 | ||
|
|
ad0087d7dd | ||
|
|
9630860035 | ||
|
|
75e4c8d74d | ||
|
|
1a5ee81e7e | ||
|
|
3476be16ab | ||
|
|
c42f61a0f4 | ||
|
|
b42a9e1c4e | ||
|
|
4495525705 | ||
|
|
a603602f32 | ||
|
|
67b28f9b6e | ||
|
|
fd947407af | ||
|
|
30444e5f1a | ||
|
|
f0d818de24 | ||
|
|
3fb98e808f | ||
|
|
2c9bacfcea | ||
|
|
ae0284b1b1 | ||
|
|
166c4ebda0 | ||
|
|
319eed029b | ||
|
|
ec5aa10167 | ||
|
|
a542765cf8 | ||
|
|
fd3f8d43db | ||
|
|
4f4496078a | ||
|
|
8f4f5b4ce0 | ||
|
|
bdc6718ae5 | ||
|
|
09d1f1c20d | ||
|
|
0efb7af17b | ||
|
|
a45a78b94f | ||
|
|
6337c26cf0 | ||
|
|
208dec25d9 | ||
|
|
7d65a0c3d5 | ||
|
|
bb925e5de3 | ||
|
|
c9de5b65d4 | ||
|
|
9bc3fcf74f | ||
|
|
19d979c330 | ||
|
|
bb7b335491 | ||
|
|
be5a0b4794 | ||
|
|
48eea03386 | ||
|
|
566317dc83 | ||
|
|
d4334645c2 | ||
|
|
d60c3c4ee3 | ||
|
|
452514f7fe | ||
|
|
58abb0ce8f | ||
|
|
000d9cc1ce | ||
|
|
8cc017354a | ||
|
|
60269d15e8 | ||
|
|
7caa083612 | ||
|
|
68e1b00eb1 | ||
|
|
1d904c756a | ||
|
|
0a1db1f595 | ||
|
|
e30e8267dd | ||
|
|
288a881817 | ||
|
|
f593790872 | ||
|
|
1044ad8589 | ||
|
|
6e24015e68 | ||
|
|
b9a2c449ff | ||
|
|
7c390cbf7b | ||
|
|
a657d1c774 | ||
|
|
f3936a79aa | ||
|
|
78b560d89a | ||
|
|
2fc6313380 | ||
|
|
c2b882a5d7 | ||
|
|
667b18fe24 | ||
|
|
60c0dac5f2 | ||
|
|
79f3e60dac | ||
|
|
c4e04d6bf2 | ||
|
|
49f8219e54 | ||
|
|
abd873e0a8 | ||
|
|
0e45d0d47f | ||
|
|
043b66f5da | ||
|
|
5d6e1fc391 | ||
|
|
fe292e77de | ||
|
|
c996b5d0c8 | ||
|
|
7beb592f0c | ||
|
|
b3b11acd96 | ||
|
|
3bcdfbbd00 | ||
|
|
fdad5d149f | ||
|
|
2e712a9212 | ||
|
|
86c8e634bb | ||
|
|
197a9306c4 | ||
|
|
2e502a6b61 | ||
|
|
aa8a40e950 | ||
|
|
2f45ac3712 | ||
|
|
8ecf3db608 | ||
|
|
f59c68022f | ||
|
|
7aac2c4e29 | ||
|
|
0481de6629 | ||
|
|
f59d0a75e4 | ||
|
|
22f4b3cc7b | ||
|
|
a4283c415a | ||
|
|
c0fbcee38a | ||
|
|
335200c31e | ||
|
|
df71c90f9f | ||
|
|
4220bdc963 | ||
|
|
97f3b1e46f | ||
|
|
3a9dc358f8 | ||
|
|
2a3ab46a3d | ||
|
|
200a01f65f | ||
|
|
e68936911d | ||
|
|
634ffeec54 | ||
|
|
8486cb785d | ||
|
|
a9eda4e6e2 | ||
|
|
f918f9b307 | ||
|
|
d404d02d2d | ||
|
|
61f7a3974f | ||
|
|
cad8e4dea2 | ||
|
|
ef79903811 | ||
|
|
c3cd0451ad | ||
|
|
773fe28fcb | ||
|
|
69e2576387 | ||
|
|
908a5a1bb4 | ||
|
|
ffbd9ffc75 | ||
|
|
96223dd5e3 | ||
|
|
3231f12b93 | ||
|
|
1408f39d9a | ||
|
|
4ba06541aa | ||
|
|
5c78ed645a | ||
|
|
33e19447aa | ||
|
|
b52d995719 | ||
|
|
db5b90c093 | ||
|
|
39bc75a7f9 | ||
|
|
3492067ecf | ||
|
|
e342a8da05 | ||
|
|
671d71dd47 | ||
|
|
2f18d2ed8f | ||
|
|
f6e8165db0 | ||
|
|
eab3b22772 | ||
|
|
7664aa5a8c | ||
|
|
a366392cbe | ||
|
|
c8c1bc09f9 | ||
|
|
11bb1608cf | ||
|
|
b1d77775aa | ||
|
|
bc3f5e0d78 | ||
|
|
53ea709697 | ||
|
|
b7adbbb9bf | ||
|
|
31aaf559ac | ||
|
|
160185b108 | ||
|
|
848ff4440b | ||
|
|
74291b2cae | ||
|
|
ae6c4e0c5f | ||
|
|
ecb1840e27 | ||
|
|
42eb82a859 | ||
|
|
89a22908ce | ||
|
|
bc3a94aa57 | ||
|
|
77fe579d9b | ||
|
|
e8c7803a2f | ||
|
|
1abaef624c | ||
|
|
72cf2344a9 | ||
|
|
0462512e62 | ||
|
|
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 | ||
|
|
e05e97561a | ||
|
|
f9d21fd34a | ||
|
|
86aef5f3e0 | ||
|
|
e6bc7922ac | ||
|
|
b2f40b7d3e | ||
|
|
3878793405 | ||
|
|
33c7aef220 | ||
|
|
e927f7a4ec | ||
|
|
cd09fa5a28 | ||
|
|
9ca9757418 | ||
|
|
1fae2ffc37 | ||
|
|
71657ddb98 | ||
|
|
63845e0ba7 | ||
|
|
6781b68d33 | ||
|
|
d058eff59a | ||
|
|
f409faea2c | ||
|
|
77da98cd39 | ||
|
|
471afcbd57 | ||
|
|
72809f9d78 | ||
|
|
743fb45c3c | ||
|
|
93d6b71a31 | ||
|
|
9b10e93fba | ||
|
|
0740837b6a | ||
|
|
ff49eacee4 | ||
|
|
fbc6b267ff | ||
|
|
10cae8894e | ||
|
|
42addfed85 | ||
|
|
0dd6494ab9 | ||
|
|
9f4c6a3aef | ||
|
|
9438dc560d | ||
|
|
003ef65b59 | ||
|
|
978fb7e63a | ||
|
|
6203577696 | ||
|
|
f2b61f6a7e | ||
|
|
6f4aa69723 | ||
|
|
b308e1bb2b | ||
|
|
ab3dad2d84 | ||
|
|
0af103f399 | ||
|
|
873608a7de | ||
|
|
b04ad167da | ||
|
|
ad0d06c0d8 | ||
|
|
151476ae8a | ||
|
|
fbf43c1450 | ||
|
|
35a1fa5bf0 | ||
|
|
8d3f71d490 | ||
|
|
2239eddf88 | ||
|
|
94ea21d482 | ||
|
|
6a39f92431 | ||
|
|
7b2efa35c7 | ||
|
|
c41ea84568 | ||
|
|
0e8262e623 | ||
|
|
4d97946943 | ||
|
|
96d48b5519 | ||
|
|
4cc54d081e | ||
|
|
aab5a2ffbd | ||
|
|
c8f165b4ad | ||
|
|
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 |
87
.autogen/autogen.sh
Executable file
87
.autogen/autogen.sh
Executable file
@@ -0,0 +1,87 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# __MISSKEY_BEARER_TOKEN=
|
||||||
|
# __MISSKEY_CAMPAIGN_ID=
|
||||||
|
# __MISSKEY_GITHUB_TOKEN=
|
||||||
|
# __MISSKEY_HEAD=acid-chicken:patch-autogen
|
||||||
|
# __MISSKEY_REPO=syuilo/misskey
|
||||||
|
# __MISSKEY_BRANCH=develop
|
||||||
|
test "$(curl -LSs -w '\n' -- "https://api.github.com/repos/$REPO/pulls?access_token=$__MISSKEY_GITHUB_TOKEN" | jq -r '.[].head.label' | grep $__MISSKEY_HEAD)" && exit 1
|
||||||
|
cd "$(dirname $0)/.." && \
|
||||||
|
touch null.cache && \
|
||||||
|
rm *.cache && \
|
||||||
|
git checkout $__MISSKEY_BRANCH && \
|
||||||
|
git pull origin $__MISSKEY_BRANCH && \
|
||||||
|
git pull upstream $__MISSKEY_BRANCH && \
|
||||||
|
git stash && \
|
||||||
|
git rebase -f upstream/$__MISSKEY_BRANCH && \
|
||||||
|
git branch patch-autogen && \
|
||||||
|
git checkout patch-autogen && \
|
||||||
|
git reset --hard HEAD || \
|
||||||
|
exit 1
|
||||||
|
touch patreon.md.cache && \
|
||||||
|
rm patreon.md.cache && \
|
||||||
|
echo '<!-- PATREON_START -->' > patreon.md.cache && \
|
||||||
|
url="https://www.patreon.com/api/oauth2/v2/campaigns/$__MISSKEY_CAMPAIGN_ID/members?include=currently_entitled_tiers,user&fields%5Btier%5D=title&fields%5Buser%5D=full_name,thumb_url,url,hide_pledges"
|
||||||
|
while :
|
||||||
|
do
|
||||||
|
touch patreon.raw.cache && \
|
||||||
|
rm patreon.raw.cache && \
|
||||||
|
curl -LSs -w '\n' -H "Authorization: Bearer $__MISSKEY_BEARER_TOKEN" -- $url > patreon.raw.cache && \
|
||||||
|
touch patreon.cache && \
|
||||||
|
rm patreon.cache && \
|
||||||
|
cat patreon.raw.cache | \
|
||||||
|
jq -r '(.data|map(select(.relationships.currently_entitled_tiers.data[]))|map(.relationships.user.data.id))as$data|.included|map(select(.attributes.hide_pledges==false))|map(select(.id as$id|$data|contains([$id])))|map(.attributes|[.full_name,.thumb_url,.url]|@tsv)|.[]|@text' >> patreon.cache && \
|
||||||
|
echo '<table><tr>' >> patreon.md.cache && \
|
||||||
|
cat patreon.cache | \
|
||||||
|
awk -F'\t' '{print $2,$1}' | \
|
||||||
|
sed -e 's/ /\\" alt=\\"/' | \
|
||||||
|
xargs -I% echo '<td><img src="%"></td>' >> patreon.md.cache && \
|
||||||
|
echo '</tr><tr>' >> patreon.md.cache && \
|
||||||
|
cat patreon.cache | \
|
||||||
|
awk -F'\t' '{print $3,$1}' | \
|
||||||
|
sed -e 's/ /\\">/' | \
|
||||||
|
xargs -I% echo '<td><a href="%</a></td>' >> patreon.md.cache && \
|
||||||
|
echo '</tr></table>' >> patreon.md.cache || \
|
||||||
|
exit 1
|
||||||
|
new_url="$(cat patreon.raw.cache | jq -r '.links.next')"
|
||||||
|
test "$new_url" = 'null' && \
|
||||||
|
break || \
|
||||||
|
URL="$url"
|
||||||
|
done
|
||||||
|
ignore= && \
|
||||||
|
echo -e "\n**Last updated:** $(date -uR | sed 's/\+0000/UTC/')\n<!-- PATREON_END -->" >> patreon.md.cache && \
|
||||||
|
touch README.md && \
|
||||||
|
touch .autogen/README.md && \
|
||||||
|
rm .autogen/README.md && \
|
||||||
|
mv README.md .autogen/README.md && \
|
||||||
|
cat .autogen/README.md | while IFS= read line;
|
||||||
|
do
|
||||||
|
if [[ -z "$ignore" ]]
|
||||||
|
then
|
||||||
|
if [[ "$line" = '<!-- PATREON_START -->' ]]
|
||||||
|
then
|
||||||
|
ignore='PATREON_INSIDE'
|
||||||
|
else
|
||||||
|
echo "$line" >> README.md
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [[ "$LINE" = '<!-- PATREON_END -->' ]]
|
||||||
|
then
|
||||||
|
ignore=
|
||||||
|
cat patreon.md.cache >> README.md
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
cat patreon.md.cache
|
||||||
|
touch null.cache && \
|
||||||
|
rm *.cache && \
|
||||||
|
diff .autogen/README.md README.md > diff.cache
|
||||||
|
cat diff.cache && \
|
||||||
|
test 4 -lt $(cat diff.cache | wc -l) && \
|
||||||
|
git add README.md && \
|
||||||
|
git commit -m 'Update README.md [AUTOGEN]' && \
|
||||||
|
git push -f origin patch-autogen && \
|
||||||
|
curl -LSs -w '\n' -X POST -d '{"title":"[AUTOMATED] Update README.md","body":"*This pull request was created by a tool.*","head":"'$__MISSKEY_HEAD'","base":"'$__MISSKEY_BRANCH'"}' -- "https://api.github.com/repos/$__MISSKEY_REPO/pulls?access_token=$__MISSKEY_GITHUB_TOKEN"
|
||||||
|
git stash
|
||||||
|
git checkout $__MISSKEY_BRANCH
|
||||||
|
git branch -D patch-autogen
|
||||||
@@ -50,8 +50,11 @@ remoteDriveCapacityMb: 8
|
|||||||
# If enabled:
|
# If enabled:
|
||||||
# Server will not cache remote files (Using direct link instead).
|
# Server will not cache remote files (Using direct link instead).
|
||||||
# You can save your storage.
|
# You can save your storage.
|
||||||
# Users cannot see remote images when they turn off "Show media from a remote server" setting.
|
#
|
||||||
preventCache: false
|
# NOTE:
|
||||||
|
# * Users cannot see remote images when they turn off "Show media from a remote server" setting.
|
||||||
|
# * Since thumbnails are not provided, traffic increases.
|
||||||
|
preventCacheRemoteFiles: false
|
||||||
|
|
||||||
drive:
|
drive:
|
||||||
storage: 'db'
|
storage: 'db'
|
||||||
@@ -64,7 +67,7 @@ drive:
|
|||||||
# config:
|
# config:
|
||||||
# endPoint:
|
# endPoint:
|
||||||
# port:
|
# port:
|
||||||
# secure:
|
# useSSL:
|
||||||
# accessKey:
|
# accessKey:
|
||||||
# secretKey:
|
# secretKey:
|
||||||
|
|
||||||
@@ -75,7 +78,7 @@ drive:
|
|||||||
# config:
|
# config:
|
||||||
# endPoint: s3-us-west-2.amazonaws.com
|
# endPoint: s3-us-west-2.amazonaws.com
|
||||||
# region: us-west-2
|
# region: us-west-2
|
||||||
# secure: true
|
# useSSL: true
|
||||||
# accessKey: XXX
|
# accessKey: XXX
|
||||||
# secretKey: YYY
|
# secretKey: YYY
|
||||||
|
|
||||||
@@ -87,7 +90,7 @@ drive:
|
|||||||
# config:
|
# config:
|
||||||
# endPoint: s3-us-west-2.amazonaws.com
|
# endPoint: s3-us-west-2.amazonaws.com
|
||||||
# region: us-west-2
|
# region: us-west-2
|
||||||
# secure: true
|
# useSSL: true
|
||||||
# accessKey: XXX
|
# accessKey: XXX
|
||||||
# secretKey: YYY
|
# secretKey: YYY
|
||||||
|
|
||||||
@@ -123,6 +126,7 @@ drive:
|
|||||||
# google_maps_api_key: example-google-maps-api-key
|
# google_maps_api_key: example-google-maps-api-key
|
||||||
|
|
||||||
# Twitter integration
|
# Twitter integration
|
||||||
|
# You need to set the oauth callback url as : https://<your-misskey-instance>/api/tw/cb
|
||||||
# twitter:
|
# twitter:
|
||||||
# consumer_key: example-twitter-consumer-key
|
# consumer_key: example-twitter-consumer-key
|
||||||
# consumer_secret: example-twitter-consumer-secret-key
|
# consumer_secret: example-twitter-consumer-secret-key
|
||||||
@@ -131,3 +135,9 @@ drive:
|
|||||||
# Ghost account is an account used for the purpose of delegating
|
# Ghost account is an account used for the purpose of delegating
|
||||||
# followers when putting users in the list.
|
# followers when putting users in the list.
|
||||||
# ghost: user-id-of-your-ghost-account
|
# ghost: user-id-of-your-ghost-account
|
||||||
|
|
||||||
|
# Clustering
|
||||||
|
# clusterLimit: 1
|
||||||
|
|
||||||
|
# Summaly proxy
|
||||||
|
# summalyProxy: "http://example.com"
|
||||||
|
|||||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -4,6 +4,7 @@
|
|||||||
/node_modules
|
/node_modules
|
||||||
/build
|
/build
|
||||||
/built
|
/built
|
||||||
|
built
|
||||||
/data
|
/data
|
||||||
/.cache-loader
|
/.cache-loader
|
||||||
npm-debug.log
|
npm-debug.log
|
||||||
|
|||||||
2
.npmrc
2
.npmrc
@@ -1,2 +1,2 @@
|
|||||||
save-exact=true
|
save-exact = true
|
||||||
package-lock = false
|
package-lock = false
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ addons:
|
|||||||
- ubuntu-toolchain-r-test
|
- ubuntu-toolchain-r-test
|
||||||
packages:
|
packages:
|
||||||
- g++-4.8
|
- g++-4.8
|
||||||
- graphicsmagick
|
|
||||||
|
|
||||||
cache:
|
cache:
|
||||||
directories:
|
directories:
|
||||||
|
|||||||
4
.vsls.json
Normal file
4
.vsls.json
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"$schema": "http://json.schemastore.org/vsls",
|
||||||
|
"gitignore": "exclude"
|
||||||
|
}
|
||||||
32
CHANGELOG.md
32
CHANGELOG.md
@@ -5,6 +5,34 @@ ChangeLog
|
|||||||
|
|
||||||
This document describes breaking changes only.
|
This document describes breaking changes only.
|
||||||
|
|
||||||
|
8.0.0
|
||||||
|
-----
|
||||||
|
|
||||||
|
### Migration
|
||||||
|
|
||||||
|
起動する前に、`node cli/migration/8.0.0`してください。
|
||||||
|
|
||||||
|
Please run `node cli/migration/8.0.0` before launch.
|
||||||
|
|
||||||
|
|
||||||
|
7.0.0
|
||||||
|
-----
|
||||||
|
|
||||||
|
### Migration
|
||||||
|
|
||||||
|
起動する前に、`node cli/migration/7.0.0`してください。
|
||||||
|
|
||||||
|
Please run `node cli/migration/7.0.0` before launch.
|
||||||
|
|
||||||
|
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
|
5.0.0
|
||||||
-----
|
-----
|
||||||
|
|
||||||
@@ -19,13 +47,13 @@ Please run `node cli/migration/5.0.0` before launch.
|
|||||||
|
|
||||||
オセロがリバーシに変更されました。
|
オセロがリバーシに変更されました。
|
||||||
|
|
||||||
Othello is now Reversi.
|
Othello is rename to Reversi.
|
||||||
|
|
||||||
### Migration
|
### Migration
|
||||||
|
|
||||||
MongoDBの、`othelloGames`と`othelloMatchings`コレクションをそれぞれ`reversiGames`と`reversiMatchings`にリネームしてください。
|
MongoDBの、`othelloGames`と`othelloMatchings`コレクションをそれぞれ`reversiGames`と`reversiMatchings`にリネームしてください。
|
||||||
|
|
||||||
You need to rename `othelloGames` and `othelloMatchings` MongoDB collections to `reversiGames` and `reversiMatchings`.
|
Please rename `othelloGames` and `othelloMatchings` MongoDB collections to `reversiGames` and `reversiMatchings` respectively.
|
||||||
|
|
||||||
3.0.0
|
3.0.0
|
||||||
-----
|
-----
|
||||||
|
|||||||
@@ -1,27 +1,27 @@
|
|||||||
# Contribution guide
|
# Contribution guide
|
||||||
:v: Misskeyへの貢献ありがとうございます。 :v:
|
:v: Thanks for your contributions :v:
|
||||||
|
|
||||||
## Issueの報告
|
## Issues
|
||||||
新機能の提案や不具合の報告は https://github.com/syuilo/misskey/issues で管理しています。
|
Feature suggestions and bug reports are filed in https://github.com/syuilo/misskey/issues .
|
||||||
Issueを作成する前に、既に同じIssueが作成されていないかご確認ください。
|
Before creating a new issue, please search existing issues to avoid duplication.
|
||||||
もし既にIssueが作成されている場合は、既存のIssueにコメントをしたりリアクションをするようお願いします。
|
If you find the existing issue, please add your reaction or comment to the issue.
|
||||||
|
|
||||||
## Issueの解決
|
## Internationalization (i18n)
|
||||||
[pr-welcomeのラベルがついているIssue](https://github.com/syuilo/misskey/labels/pr-welcome)
|
Please see [Translation guide](./docs/translate.en.md).
|
||||||
の解決を目的としたPull Requestを作成してくださると非常にありがたいです。
|
|
||||||
|
|
||||||
## 翻訳の改善
|
## Localization (l10n)
|
||||||
ソースコード中の `%i18n:id%` という形の文字列は、言語ファイルの対応するテキストに置換されます。
|
Please use [Crowdin](https://crowdin.com/project/misskey) for localization.
|
||||||
言語ファイルは /locales ディレクトリに存在します。
|
|
||||||
|
|
||||||
## ドキュメントの編集
|

|
||||||
現在Misskeyはドキュメントが大きく不足しています。
|
|
||||||
ドキュメントは /docs ディレクトリに存在します。
|
|
||||||
|
|
||||||
## テストの追加
|
## Documentation
|
||||||
現在Misskeyはテストが大きく不足しています。
|
* Documents for contributors are located in `/docs`.
|
||||||
テストコードは /test ディレクトリに存在します。
|
* Documents for instance admins are located in `/docs`.
|
||||||
|
* Documents for end users are located in `src/docs`.
|
||||||
|
|
||||||
## 自動テスト及び自動リリース
|
## Test
|
||||||
Travis CIで行っています。
|
* Test codes are located in `/test`.
|
||||||
設定ファイルは /.travis に存在します。
|
|
||||||
|
## Continuous integration
|
||||||
|
Misskey uses Travis for automated test.
|
||||||
|
Configuration files are located in `/.travis`.
|
||||||
|
|||||||
62
README.md
62
README.md
@@ -7,10 +7,12 @@
|
|||||||
[![][dependencies-badge]][dependencies-link]
|
[![][dependencies-badge]][dependencies-link]
|
||||||
[](http://makeapullrequest.com) [](https://greenkeeper.io/)
|
[](http://makeapullrequest.com) [](https://greenkeeper.io/)
|
||||||
|
|
||||||
**Microblogging. Redefined.**
|
Sophisticated microblogging platform, evolving forever.
|
||||||
|
|
||||||
**[Misskey](https://misskey.xyz)** is a completely open source,
|
[Misskey](https://misskey.xyz) is a decentralized microblogging platform born on Earth.
|
||||||
ultimately sophisticated professional microblogging software.
|
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>
|
<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>
|
||||||
|
|
||||||
@@ -22,30 +24,58 @@ ultimately sophisticated professional microblogging software.
|
|||||||
* Reactions
|
* Reactions
|
||||||
* User lists
|
* User lists
|
||||||
* Customizable column view (called MisskeyDeck)
|
* Customizable column view (called MisskeyDeck)
|
||||||
* and widgets!
|
* Customizable widgets
|
||||||
* Private messages
|
* Private messages
|
||||||
* ActivityPub support
|
* ActivityPub support
|
||||||
|
|
||||||
and more! You can see it with your own eyes at [misskey.xyz](https://misskey.xyz).
|
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).
|
||||||
please see [Setup and installation guide](./docs/setup.en.md).
|
|
||||||
|
|
||||||
:wrench: Contribute
|
:wrench: Contribution
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
**[PR](https://github.com/syuilo/misskey/pulls)s welcome!**
|
Please see [Contribution guide](./CONTRIBUTING.md).
|
||||||
|
|
||||||
If you want to...
|
|
||||||
* i18n ... please see [Translation guide](./docs/translate.en.md).
|
|
||||||
* l10n ... please visit https://crowdin.com/project/misskey
|
|
||||||
|
|
||||||
:heart: Backers & Sponsors
|
:heart: Backers & Sponsors
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
| <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"> | <img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12378075/0156f769e20f412594fa6b87d85fe228/1?token-time=2145916800&token-hash=IsIJRUXszzoD6-7pDnRY8I05T9nSznc4GTaxj7C9SwU%3D"> | <img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/4503830/ccf2cc867ea64de0b524bb2e24b9a1cb/1?token-time=2145916800&token-hash=S1zP0QyLU52Dqq6dtc9qNYyWfW86XrYHiR4NMbeOrnA%3D"> |
|
<!-- PATREON_START -->
|
||||||
|:-:|:-:|:-:|
|
<table><tr>
|
||||||
| [Gargron](https://www.patreon.com/mastodon) | [39ff](https://www.patreon.com/user/creators?u=12378075) | [dansup](https://www.patreon.com/dansup) |
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12731202/0995c46cdcb54153ab5f073f5869b70a/1?token-time=2145916800&token-hash=Yd60FK_SWfQO56SeiJpy1tDHOnCV4xdEywQe8gn5_Wo%3D" alt="negao"></td>
|
||||||
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/13099460/43cecdbaa63a40d79bf50a96b9910b9d/1?token-time=2145916800&token-hash=d6P5MWHHsCMxUuBAEPAoVc5wLUR19mIhqAq7Ma9h9rI%3D" alt="ne_moni"></td>
|
||||||
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12913507/f7181eacafe8469a93033d85f5969c29/1?token-time=2145916800&token-hash=f03BFb4S2FUx9YEt87TnEmifb4h33OywGBW2akQVtQY%3D" alt="Melilot"></td>
|
||||||
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12999811/5f349fafcce44dd1824a8b1ebbec4564/2?token-time=2145916800&token-hash=rwZ8qvbm_kpA4ib3kc07tVKupXeySpY5ATQFGxfL9v0%3D" alt="Axella"></td>
|
||||||
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/3384329/8b713330cb27404ea6e9fac50ff96efe/1?token-time=2145916800&token-hash=0eu4-m1gTWA9PhptVZt6rdKcusqcD7RB87rJT23VVFI%3D" alt="べすれい"></td>
|
||||||
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12021162/963128bb8d14476dbd8407943db8f31a/1?token-time=2145916800&token-hash=GgJ_NmUB6_nnRNLVGUWjV-WX91On7BOu59LKncYV9fE%3D" alt="gutfuckllc"></td>
|
||||||
|
<td><img src="https://c8.patreon.com/2/100/12718187" alt="Peter G."></td>
|
||||||
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/13039004/509d0c412eb14ae08d6a812a3054f7d6/1?token-time=2145916800&token-hash=zwSu01tOtn5xTUucDZHuPsCxF2HBEMVs9ROJKTlEV_o%3D" alt="nemu"></td>
|
||||||
|
</tr><tr>
|
||||||
|
<td><a href="https://www.patreon.com/user?u=12731202">negao</a></td>
|
||||||
|
<td><a href="https://www.patreon.com/user?u=13099460">ne_moni</a></td>
|
||||||
|
<td><a href="https://www.patreon.com/user?u=12913507">Melilot</a></td>
|
||||||
|
<td><a href="https://www.patreon.com/AxellaMC">Axella</a></td>
|
||||||
|
<td><a href="https://www.patreon.com/user?u=3384329">べすれい</a></td>
|
||||||
|
<td><a href="https://www.patreon.com/gutfuckllc">gutfuckllc</a></td>
|
||||||
|
<td><a href="https://www.patreon.com/user?u=12718187">Peter G.</a></td>
|
||||||
|
<td><a href="https://www.patreon.com/user?u=13039004">nemu</a></td>
|
||||||
|
</tr></table>
|
||||||
|
<table><tr>
|
||||||
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/5881381/6235ca5d3fb04c8e95ef5b4ff2abcc18/2?token-time=2145916800&token-hash=zElv7ZcPL3viGsXbNG_KWiKrbV0vvw1gk0panx8DJoo%3D" alt="Naoki Kosaka"></td>
|
||||||
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12931605/ead494101f364dffa90efe49e36fb494/1?token-time=2145916800&token-hash=NzSFPjIlodXyv41rwK61aZWVZWfI4surJaNj8vWKvqM%3D" alt="Reiju"></td>
|
||||||
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/13034746/c711c7f58e204ecfbc2fd646bc8a4eee/1?token-time=2145916800&token-hash=UERBN4OyP7Nh5XwwdDg0N0IE5cD6_qUQMO81Z5Wizso%3D" alt="Hiratake"></td>
|
||||||
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/4503830/ccf2cc867ea64de0b524bb2e24b9a1cb/1?token-time=2145916800&token-hash=S1zP0QyLU52Dqq6dtc9qNYyWfW86XrYHiR4NMbeOrnA%3D" alt="dansup"></td>
|
||||||
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12531784/93a45137841849329ba692da92ac7c60/1?token-time=2145916800&token-hash=tMosUojzUYJCH_3t--tvYA-SMCyrS__hzSndyaRSnbo%3D" alt="Takashi Shibuya"></td>
|
||||||
|
</tr><tr>
|
||||||
|
<td><a href="https://www.patreon.com/user?u=5881381">Naoki Kosaka</a></td>
|
||||||
|
<td><a href="https://www.patreon.com/user?u=12931605">Reiju</a></td>
|
||||||
|
<td><a href="https://www.patreon.com/hiratake">Hiratake</a></td>
|
||||||
|
<td><a href="https://www.patreon.com/dansup">dansup</a></td>
|
||||||
|
<td><a href="https://www.patreon.com/user?u=12531784">Takashi Shibuya</a></td>
|
||||||
|
</tr></table>
|
||||||
|
|
||||||
|
**Last updated:** Sun, 02 Sep 2018 05:30:06 UTC
|
||||||
|
<!-- PATREON_END -->
|
||||||
|
|
||||||
:four_leaf_clover: Copyright
|
:four_leaf_clover: Copyright
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
|
|||||||
@@ -1,101 +0,0 @@
|
|||||||
const chalk = require('chalk');
|
|
||||||
const log = require('single-line-log').stdout;
|
|
||||||
const sequential = require('promise-sequential');
|
|
||||||
const { default: DriveFile, DriveFileChunk } = require('../built/models/drive-file');
|
|
||||||
const { default: DriveFileThumbnail, DriveFileThumbnailChunk } = require('../built/models/drive-file-thumbnail');
|
|
||||||
const { default: User } = require('../built/models/user');
|
|
||||||
|
|
||||||
const q = {
|
|
||||||
'metadata._user.host': {
|
|
||||||
$ne: null
|
|
||||||
},
|
|
||||||
'metadata.withoutChunks': false
|
|
||||||
};
|
|
||||||
|
|
||||||
async function main() {
|
|
||||||
const promiseGens = [];
|
|
||||||
|
|
||||||
const count = await DriveFile.count(q);
|
|
||||||
|
|
||||||
let prev;
|
|
||||||
|
|
||||||
for (let i = 0; i < count; i++) {
|
|
||||||
promiseGens.push(() => {
|
|
||||||
const promise = new Promise(async (res, rej) => {
|
|
||||||
const file = await DriveFile.findOne(prev ? Object.assign({
|
|
||||||
_id: { $lt: prev._id }
|
|
||||||
}, q) : q, {
|
|
||||||
sort: {
|
|
||||||
_id: -1
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
prev = file;
|
|
||||||
|
|
||||||
function skip() {
|
|
||||||
res([i, file, false]);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (file == null) return skip();
|
|
||||||
|
|
||||||
log(chalk`{gray ${i}} scanning {bold ${file._id}} ${file.filename} ...`);
|
|
||||||
|
|
||||||
const attachingUsersCount = await User.count({
|
|
||||||
$or: [{
|
|
||||||
avatarId: file._id
|
|
||||||
}, {
|
|
||||||
bannerId: file._id
|
|
||||||
}]
|
|
||||||
}, { limit: 1 });
|
|
||||||
if (attachingUsersCount !== 0) return skip();
|
|
||||||
|
|
||||||
Promise.all([
|
|
||||||
// チャンクをすべて削除
|
|
||||||
DriveFileChunk.remove({
|
|
||||||
files_id: file._id
|
|
||||||
}),
|
|
||||||
|
|
||||||
DriveFile.update({ _id: file._id }, {
|
|
||||||
$set: {
|
|
||||||
'metadata.withoutChunks': true
|
|
||||||
}
|
|
||||||
})
|
|
||||||
]).then(async () => {
|
|
||||||
res([i, file, true]);
|
|
||||||
|
|
||||||
//#region サムネイルもあれば削除
|
|
||||||
const thumbnail = await DriveFileThumbnail.findOne({
|
|
||||||
'metadata.originalId': file._id
|
|
||||||
});
|
|
||||||
|
|
||||||
if (thumbnail) {
|
|
||||||
DriveFileThumbnailChunk.remove({
|
|
||||||
files_id: thumbnail._id
|
|
||||||
});
|
|
||||||
|
|
||||||
DriveFileThumbnail.remove({ _id: thumbnail._id });
|
|
||||||
}
|
|
||||||
//#endregion
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
promise.then(([i, file, deleted]) => {
|
|
||||||
if (deleted) {
|
|
||||||
log(chalk`{gray ${i}} {red deleted: {bold ${file._id}} ${file.filename}}`);
|
|
||||||
} else {
|
|
||||||
log(chalk`{gray ${i}} {green skipped: {bold ${file._id}} ${file.filename}}`);
|
|
||||||
}
|
|
||||||
log.clear();
|
|
||||||
console.log();
|
|
||||||
});
|
|
||||||
|
|
||||||
return promise;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
return await sequential(promiseGens);
|
|
||||||
}
|
|
||||||
|
|
||||||
main().then(() => {
|
|
||||||
console.log('ALL DONE');
|
|
||||||
}).catch(console.error);
|
|
||||||
@@ -1,80 +0,0 @@
|
|||||||
const chalk = require('chalk');
|
|
||||||
const log = require('single-line-log').stdout;
|
|
||||||
const sequential = require('promise-sequential');
|
|
||||||
const { default: DriveFile, deleteDriveFile } = require('../built/models/drive-file');
|
|
||||||
const { default: Note } = require('../built/models/note');
|
|
||||||
const { default: MessagingMessage } = require('../built/models/messaging-message');
|
|
||||||
const { default: User } = require('../built/models/user');
|
|
||||||
|
|
||||||
async function main() {
|
|
||||||
const promiseGens = [];
|
|
||||||
|
|
||||||
const count = await DriveFile.count({});
|
|
||||||
|
|
||||||
let prev;
|
|
||||||
|
|
||||||
for (let i = 0; i < count; i++) {
|
|
||||||
promiseGens.push(() => {
|
|
||||||
const promise = new Promise(async (res, rej) => {
|
|
||||||
const file = await DriveFile.findOne(prev ? {
|
|
||||||
_id: { $lt: prev._id }
|
|
||||||
} : {}, {
|
|
||||||
sort: {
|
|
||||||
_id: -1
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
prev = file;
|
|
||||||
|
|
||||||
function skip() {
|
|
||||||
res([i, file, false]);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (file == null) return skip();
|
|
||||||
|
|
||||||
log(chalk`{gray ${i}} scanning {bold ${file._id}} ${file.filename} ...`);
|
|
||||||
|
|
||||||
const attachingUsersCount = await User.count({
|
|
||||||
$or: [{
|
|
||||||
avatarId: file._id
|
|
||||||
}, {
|
|
||||||
bannerId: file._id
|
|
||||||
}]
|
|
||||||
}, { limit: 1 });
|
|
||||||
if (attachingUsersCount !== 0) return skip();
|
|
||||||
|
|
||||||
const attachingNotesCount = await Note.count({
|
|
||||||
mediaIds: file._id
|
|
||||||
}, { limit: 1 });
|
|
||||||
if (attachingNotesCount !== 0) return skip();
|
|
||||||
|
|
||||||
const attachingMessagesCount = await MessagingMessage.count({
|
|
||||||
fileId: file._id
|
|
||||||
}, { limit: 1 });
|
|
||||||
if (attachingMessagesCount !== 0) return skip();
|
|
||||||
|
|
||||||
deleteDriveFile(file).then(() => {
|
|
||||||
res([i, file, true]);
|
|
||||||
}).catch(rej);
|
|
||||||
});
|
|
||||||
|
|
||||||
promise.then(([i, file, deleted]) => {
|
|
||||||
if (deleted) {
|
|
||||||
log(chalk`{gray ${i}} {red deleted: {bold ${file._id}} ${file.filename}}`);
|
|
||||||
} else {
|
|
||||||
log(chalk`{gray ${i}} {green skipped: {bold ${file._id}} ${file.filename}}`);
|
|
||||||
}
|
|
||||||
log.clear();
|
|
||||||
console.log();
|
|
||||||
});
|
|
||||||
|
|
||||||
return promise;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
return await sequential(promiseGens);
|
|
||||||
}
|
|
||||||
|
|
||||||
main().then(() => {
|
|
||||||
console.log('done');
|
|
||||||
}).catch(console.error);
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
const { default: User, deleteUser } = require('../built/models/user');
|
|
||||||
const { default: zip } = require('@prezzemolo/zip')
|
|
||||||
|
|
||||||
const migrate = async (user) => {
|
|
||||||
try {
|
|
||||||
await deleteUser(user._id);
|
|
||||||
return true;
|
|
||||||
} catch (e) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async function main() {
|
|
||||||
const count = await User.count({
|
|
||||||
uri: /#/
|
|
||||||
});
|
|
||||||
|
|
||||||
const dop = 1
|
|
||||||
const idop = ((count - (count % dop)) / dop) + 1
|
|
||||||
|
|
||||||
return zip(
|
|
||||||
1,
|
|
||||||
async (time) => {
|
|
||||||
console.log(`${time} / ${idop}`)
|
|
||||||
const doc = await User.find({
|
|
||||||
uri: /#/
|
|
||||||
}, {
|
|
||||||
limit: dop, skip: time * dop
|
|
||||||
})
|
|
||||||
return Promise.all(doc.map(migrate))
|
|
||||||
},
|
|
||||||
idop
|
|
||||||
).then(a => {
|
|
||||||
const rv = []
|
|
||||||
a.forEach(e => rv.push(...e))
|
|
||||||
return rv
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
main().then(console.dir).catch(console.error)
|
|
||||||
134
cli/migration/7.0.0.js
Normal file
134
cli/migration/7.0.0.js
Normal file
@@ -0,0 +1,134 @@
|
|||||||
|
const { default: Stats } = require('../../built/models/stats');
|
||||||
|
const { default: User } = require('../../built/models/user');
|
||||||
|
const { default: Note } = require('../../built/models/note');
|
||||||
|
const { default: DriveFile } = require('../../built/models/drive-file');
|
||||||
|
|
||||||
|
const now = new Date();
|
||||||
|
const y = now.getFullYear();
|
||||||
|
const m = now.getMonth();
|
||||||
|
const d = now.getDate();
|
||||||
|
const today = new Date(y, m, d);
|
||||||
|
|
||||||
|
async function main() {
|
||||||
|
const localUsersCount = await User.count({
|
||||||
|
host: null
|
||||||
|
});
|
||||||
|
|
||||||
|
const remoteUsersCount = await User.count({
|
||||||
|
host: { $ne: null }
|
||||||
|
});
|
||||||
|
|
||||||
|
const localNotesCount = await Note.count({
|
||||||
|
'_user.host': null
|
||||||
|
});
|
||||||
|
|
||||||
|
const remoteNotesCount = await Note.count({
|
||||||
|
'_user.host': { $ne: null }
|
||||||
|
});
|
||||||
|
|
||||||
|
const localDriveFilesCount = await DriveFile.count({
|
||||||
|
'metadata._user.host': null
|
||||||
|
});
|
||||||
|
|
||||||
|
const remoteDriveFilesCount = await DriveFile.count({
|
||||||
|
'metadata._user.host': { $ne: null }
|
||||||
|
});
|
||||||
|
|
||||||
|
const localDriveFilesSize = await DriveFile
|
||||||
|
.aggregate([{
|
||||||
|
$match: {
|
||||||
|
'metadata._user.host': null,
|
||||||
|
'metadata.deletedAt': { $exists: false }
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
$project: {
|
||||||
|
length: true
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
$group: {
|
||||||
|
_id: null,
|
||||||
|
usage: { $sum: '$length' }
|
||||||
|
}
|
||||||
|
}])
|
||||||
|
.then(aggregates => {
|
||||||
|
if (aggregates.length > 0) {
|
||||||
|
return aggregates[0].usage;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
});
|
||||||
|
|
||||||
|
const remoteDriveFilesSize = await DriveFile
|
||||||
|
.aggregate([{
|
||||||
|
$match: {
|
||||||
|
'metadata._user.host': { $ne: null },
|
||||||
|
'metadata.deletedAt': { $exists: false }
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
$project: {
|
||||||
|
length: true
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
$group: {
|
||||||
|
_id: null,
|
||||||
|
usage: { $sum: '$length' }
|
||||||
|
}
|
||||||
|
}])
|
||||||
|
.then(aggregates => {
|
||||||
|
if (aggregates.length > 0) {
|
||||||
|
return aggregates[0].usage;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
});
|
||||||
|
|
||||||
|
await Stats.insert({
|
||||||
|
date: today,
|
||||||
|
users: {
|
||||||
|
local: {
|
||||||
|
total: localUsersCount,
|
||||||
|
diff: 0
|
||||||
|
},
|
||||||
|
remote: {
|
||||||
|
total: remoteUsersCount,
|
||||||
|
diff: 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
notes: {
|
||||||
|
local: {
|
||||||
|
total: localNotesCount,
|
||||||
|
diff: 0,
|
||||||
|
diffs: {
|
||||||
|
normal: 0,
|
||||||
|
reply: 0,
|
||||||
|
renote: 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
remote: {
|
||||||
|
total: remoteNotesCount,
|
||||||
|
diff: 0,
|
||||||
|
diffs: {
|
||||||
|
normal: 0,
|
||||||
|
reply: 0,
|
||||||
|
renote: 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
drive: {
|
||||||
|
local: {
|
||||||
|
totalCount: localDriveFilesCount,
|
||||||
|
totalSize: localDriveFilesSize,
|
||||||
|
diffCount: 0,
|
||||||
|
diffSize: 0
|
||||||
|
},
|
||||||
|
remote: {
|
||||||
|
totalCount: remoteDriveFilesCount,
|
||||||
|
totalSize: remoteDriveFilesSize,
|
||||||
|
diffCount: 0,
|
||||||
|
diffSize: 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log('done');
|
||||||
|
}
|
||||||
|
|
||||||
|
main();
|
||||||
144
cli/migration/8.0.0.js
Normal file
144
cli/migration/8.0.0.js
Normal file
@@ -0,0 +1,144 @@
|
|||||||
|
const { default: Stats } = require('../../built/models/stats');
|
||||||
|
const { default: User } = require('../../built/models/user');
|
||||||
|
const { default: Note } = require('../../built/models/note');
|
||||||
|
const { default: DriveFile } = require('../../built/models/drive-file');
|
||||||
|
|
||||||
|
const now = new Date();
|
||||||
|
const y = now.getFullYear();
|
||||||
|
const m = now.getMonth();
|
||||||
|
const d = now.getDate();
|
||||||
|
const h = now.getHours();
|
||||||
|
const date = new Date(y, m, d, h);
|
||||||
|
|
||||||
|
async function main() {
|
||||||
|
await Stats.update({}, {
|
||||||
|
$set: {
|
||||||
|
span: 'day'
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
multi: true
|
||||||
|
});
|
||||||
|
|
||||||
|
const localUsersCount = await User.count({
|
||||||
|
host: null
|
||||||
|
});
|
||||||
|
|
||||||
|
const remoteUsersCount = await User.count({
|
||||||
|
host: { $ne: null }
|
||||||
|
});
|
||||||
|
|
||||||
|
const localNotesCount = await Note.count({
|
||||||
|
'_user.host': null
|
||||||
|
});
|
||||||
|
|
||||||
|
const remoteNotesCount = await Note.count({
|
||||||
|
'_user.host': { $ne: null }
|
||||||
|
});
|
||||||
|
|
||||||
|
const localDriveFilesCount = await DriveFile.count({
|
||||||
|
'metadata._user.host': null
|
||||||
|
});
|
||||||
|
|
||||||
|
const remoteDriveFilesCount = await DriveFile.count({
|
||||||
|
'metadata._user.host': { $ne: null }
|
||||||
|
});
|
||||||
|
|
||||||
|
const localDriveFilesSize = await DriveFile
|
||||||
|
.aggregate([{
|
||||||
|
$match: {
|
||||||
|
'metadata._user.host': null,
|
||||||
|
'metadata.deletedAt': { $exists: false }
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
$project: {
|
||||||
|
length: true
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
$group: {
|
||||||
|
_id: null,
|
||||||
|
usage: { $sum: '$length' }
|
||||||
|
}
|
||||||
|
}])
|
||||||
|
.then(aggregates => {
|
||||||
|
if (aggregates.length > 0) {
|
||||||
|
return aggregates[0].usage;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
});
|
||||||
|
|
||||||
|
const remoteDriveFilesSize = await DriveFile
|
||||||
|
.aggregate([{
|
||||||
|
$match: {
|
||||||
|
'metadata._user.host': { $ne: null },
|
||||||
|
'metadata.deletedAt': { $exists: false }
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
$project: {
|
||||||
|
length: true
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
$group: {
|
||||||
|
_id: null,
|
||||||
|
usage: { $sum: '$length' }
|
||||||
|
}
|
||||||
|
}])
|
||||||
|
.then(aggregates => {
|
||||||
|
if (aggregates.length > 0) {
|
||||||
|
return aggregates[0].usage;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
});
|
||||||
|
|
||||||
|
await Stats.insert({
|
||||||
|
date: date,
|
||||||
|
span: 'hour',
|
||||||
|
users: {
|
||||||
|
local: {
|
||||||
|
total: localUsersCount,
|
||||||
|
diff: 0
|
||||||
|
},
|
||||||
|
remote: {
|
||||||
|
total: remoteUsersCount,
|
||||||
|
diff: 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
notes: {
|
||||||
|
local: {
|
||||||
|
total: localNotesCount,
|
||||||
|
diff: 0,
|
||||||
|
diffs: {
|
||||||
|
normal: 0,
|
||||||
|
reply: 0,
|
||||||
|
renote: 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
remote: {
|
||||||
|
total: remoteNotesCount,
|
||||||
|
diff: 0,
|
||||||
|
diffs: {
|
||||||
|
normal: 0,
|
||||||
|
reply: 0,
|
||||||
|
renote: 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
drive: {
|
||||||
|
local: {
|
||||||
|
totalCount: localDriveFilesCount,
|
||||||
|
totalSize: localDriveFilesSize,
|
||||||
|
diffCount: 0,
|
||||||
|
diffSize: 0
|
||||||
|
},
|
||||||
|
remote: {
|
||||||
|
totalCount: remoteDriveFilesCount,
|
||||||
|
totalSize: remoteDriveFilesSize,
|
||||||
|
diffCount: 0,
|
||||||
|
diffSize: 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log('done');
|
||||||
|
}
|
||||||
|
|
||||||
|
main();
|
||||||
29
cli/reset-password.js
Normal file
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);
|
||||||
|
});
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
files:
|
files:
|
||||||
- source: /locales/ja.yml
|
- source: /locales/ja-JP.yml
|
||||||
translation: /locales/%two_letters_code%.yml
|
translation: /locales/%locale%.yml
|
||||||
|
|||||||
@@ -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
|
|
||||||
|
|
||||||
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
|
|
||||||
@@ -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.
|
|
||||||
@@ -29,13 +29,7 @@ node cli/suspend @syuilo
|
|||||||
node cli/suspend @syuilo@misskey.xyz
|
node cli/suspend @syuilo@misskey.xyz
|
||||||
```
|
```
|
||||||
|
|
||||||
## Clean up cached remote files
|
## Reset password
|
||||||
``` shell
|
``` shell
|
||||||
node cli/clean-cached-remote-files
|
node cli/reset-password (User-ID or Username)
|
||||||
```
|
```
|
||||||
|
|
||||||
## 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.
|
|
||||||
|
|||||||
@@ -29,13 +29,7 @@ node cli/suspend @syuilo
|
|||||||
node cli/suspend @syuilo@misskey.xyz
|
node cli/suspend @syuilo@misskey.xyz
|
||||||
```
|
```
|
||||||
|
|
||||||
## キャッシュされたリモートファイルをクリーンアップする
|
## ユーザーのパスワードをリセットする
|
||||||
``` shell
|
``` shell
|
||||||
node cli/clean-cached-remote-files
|
node cli/reset-password (ユーザーID または ユーザー名)
|
||||||
```
|
```
|
||||||
|
|
||||||
## 使われていないドライブのファイルをクリーンアップする
|
|
||||||
``` shell
|
|
||||||
node cli/clean-unused-drive-files
|
|
||||||
```
|
|
||||||
> ユーザーの大事なファイルを削除する可能性があるので、この操作を実行する前にユーザーに告知することをお勧めします。
|
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ Please visit https://www.google.com/recaptcha/intro/ and generate keys.
|
|||||||
|
|
||||||
*(optional)* Generating VAPID keys
|
*(optional)* Generating VAPID keys
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
If you want to enable ServiceWroker, you need to generate VAPID keys:
|
If you want to enable ServiceWorker, you need to generate VAPID keys:
|
||||||
Unless you have set your global node_modules location elsewhere, you need to run this in root.
|
Unless you have set your global node_modules location elsewhere, you need to run this in root.
|
||||||
|
|
||||||
``` shell
|
``` shell
|
||||||
@@ -62,6 +62,13 @@ npm install web-push -g
|
|||||||
web-push generate-vapid-keys
|
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
|
*5.* Make configuration file
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
1. `cp .config/example.yml .config/default.yml` Copy the `.config/example.yml` and rename it to `default.yml`.
|
1. `cp .config/example.yml .config/default.yml` Copy the `.config/example.yml` and rename it to `default.yml`.
|
||||||
@@ -124,6 +131,7 @@ You can check if the service is running with `systemctl status misskey`.
|
|||||||
2. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)`
|
2. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)`
|
||||||
3. `npm install`
|
3. `npm install`
|
||||||
4. `npm run build`
|
4. `npm run build`
|
||||||
|
5. Check [ChangeLog](../CHANGELOG.md) for migration information
|
||||||
|
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
|
|
||||||
|
|||||||
@@ -120,6 +120,7 @@ WantedBy=multi-user.target
|
|||||||
2. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)`
|
2. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)`
|
||||||
3. `npm install`
|
3. `npm install`
|
||||||
4. `npm run build`
|
4. `npm run build`
|
||||||
|
5. [ChangeLog](../CHANGELOG.md)でマイグレーション情報を確認する
|
||||||
|
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
|
|
||||||
|
|||||||
@@ -11,12 +11,12 @@ If you find an untranslated part on Misskey:
|
|||||||
- In fact, `foo` should be a word that is appropriate for the situation and is easy to understand in English.
|
- 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%`.
|
- For example, if the untranslated portion is the following "タイムライン" you must write: `%i18n:@timeline%`.
|
||||||
|
|
||||||
3. Open the `locales/ja.yml`, check whether the <strong>file name (path)</strong> found in step 1 exists, if not, create it.
|
3. Open the `locales/ja-JP.yml`, check whether the <strong>file name (path)</strong> found in step 1 exists, if not, create it.
|
||||||
- Do not put the beginning of the path `src/client/app/` in the locale file.
|
- 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`.
|
- For example, in this case we want to modify untranslated parts of `src/client/app/mobile/views/pages/home.vue`, so the key is `mobile/views/pages/home.vue`.
|
||||||
|
|
||||||
4. Add the text property using the `foo` keyword below the path that you found or created in step 2. Make sure to type your text in quotation marks. Text should always be inside of quotes.
|
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`.
|
- For example, in this case we add timeline: `timeline: "タイムライン"` to `locales/ja-JP.yml`.
|
||||||
|
|
||||||
5. And done!
|
5. And done!
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ Si vous trouvez un segment non-traduit sur Misskey :
|
|||||||
- Par exemple, dans ce cas de figure, nous voulons modifier le segment non-traduit de : `src/client/app/mobile/views/pages/home.vue`donc il faut juste écrire : `mobile/views/pages/home.vue` dans les fichiers linguistiques.
|
- Par exemple, dans ce cas de figure, nous voulons modifier le segment non-traduit de : `src/client/app/mobile/views/pages/home.vue`donc il faut juste écrire : `mobile/views/pages/home.vue` dans les fichiers linguistiques.
|
||||||
|
|
||||||
4. Ajoutez la propriété du texte traduit grâce à la clef `foo`, en-dessous du chemin correspondant à votre modification que vous avez trouvé ou créé dans l'étape 2. À côté, veuillez indiquer entre "guillemets" la valeur de votre traduction.
|
4. Ajoutez la propriété du texte traduit grâce à la clef `foo`, en-dessous du chemin correspondant à votre modification que vous avez trouvé ou créé dans l'étape 2. À côté, veuillez indiquer entre "guillemets" la valeur de votre traduction.
|
||||||
- Par exemple, dans ce cas de figure, nous ajoutons la propriété et la traduction `timeline: "Timeline"` à `locales/fr.yml`, mais aussi la propriété et la version originale `timeline: "タイムライン"` à `locales/ja.yml`.
|
- Par exemple, dans ce cas de figure, nous ajoutons la propriété et la traduction `timeline: "Timeline"` à `locales/fr.yml`, mais aussi la propriété et la version originale `timeline: "タイムライン"` à `locales/ja-JP.yml`.
|
||||||
|
|
||||||
5. Vous avez réussi à traduire une portion de misskey !
|
5. Vous avez réussi à traduire une portion de misskey !
|
||||||
|
|
||||||
|
|||||||
@@ -11,12 +11,12 @@ Misskey内の未翻訳箇所を見つけたら
|
|||||||
- `foo`は実際にはその場に適したわかりやすい(英語の)名前にしてください。
|
- `foo`は実際にはその場に適したわかりやすい(英語の)名前にしてください。
|
||||||
- 例えば未翻訳箇所が「タイムライン」というテキストだった場合、`%i18n:@timeline%`のようにします。
|
- 例えば未翻訳箇所が「タイムライン」というテキストだった場合、`%i18n:@timeline%`のようにします。
|
||||||
|
|
||||||
3. `locales/ja.yml`を開き、1.で見つけた<strong>ファイル名(パス)</strong>のキーが存在するか確認し、無ければ作成してください。
|
3. `locales/ja-JP.yml`を開き、1.で見つけた<strong>ファイル名(パス)</strong>のキーが存在するか確認し、無ければ作成してください。
|
||||||
- パスの`src/client/app/`は省略してください。
|
- パスの`src/client/app/`は省略してください。
|
||||||
- 例えば、今回の例では`src/client/app/mobile/views/pages/home.vue`の未翻訳箇所を修正したいので、キーは`mobile/views/pages/home.vue`になります。
|
- 例えば、今回の例では`src/client/app/mobile/views/pages/home.vue`の未翻訳箇所を修正したいので、キーは`mobile/views/pages/home.vue`になります。
|
||||||
|
|
||||||
4. そのキーの直下に2.で置換した`foo`の部分をキーとし、テキストを値とするプロパティを追加します。
|
4. そのキーの直下に2.で置換した`foo`の部分をキーとし、テキストを値とするプロパティを追加します。
|
||||||
- 例えば、今回の例で言うと`locales/ja.yml`に`timeline: "タイムライン"`を追加します。
|
- 例えば、今回の例で言うと`locales/ja-JP.yml`に`timeline: "タイムライン"`を追加します。
|
||||||
|
|
||||||
5. 完了です!
|
5. 完了です!
|
||||||
|
|
||||||
|
|||||||
13
gulpfile.ts
13
gulpfile.ts
@@ -23,7 +23,6 @@ const uglifyes = require('uglify-es');
|
|||||||
|
|
||||||
const locales = require('./locales');
|
const locales = require('./locales');
|
||||||
import { fa } from './src/misc/fa';
|
import { fa } from './src/misc/fa';
|
||||||
import config from './src/config';
|
|
||||||
|
|
||||||
const uglify = uglifyComposer(uglifyes, console);
|
const uglify = uglifyComposer(uglifyes, console);
|
||||||
|
|
||||||
@@ -60,7 +59,16 @@ gulp.task('build:copy:views', () =>
|
|||||||
gulp.src('./src/server/web/views/**/*').pipe(gulp.dest('./built/server/web/views'))
|
gulp.src('./src/server/web/views/**/*').pipe(gulp.dest('./built/server/web/views'))
|
||||||
);
|
);
|
||||||
|
|
||||||
gulp.task('build:copy', ['build:copy:views'], () =>
|
// 互換性のため
|
||||||
|
gulp.task('build:copy:lang', () =>
|
||||||
|
gulp.src(['./built/client/assets/*.*-*.js'])
|
||||||
|
.pipe(rename(path => {
|
||||||
|
path.basename = path.basename.replace(/\-(.*)$/, '');
|
||||||
|
}))
|
||||||
|
.pipe(gulp.dest('./built/client/assets/'))
|
||||||
|
);
|
||||||
|
|
||||||
|
gulp.task('build:copy', ['build:copy:views', 'build:copy:lang'], () =>
|
||||||
gulp.src([
|
gulp.src([
|
||||||
'./build/Release/crypto_key.node',
|
'./build/Release/crypto_key.node',
|
||||||
'./src/const.json',
|
'./src/const.json',
|
||||||
@@ -118,7 +126,6 @@ gulp.task('build:client:script', () => {
|
|||||||
const client = require('./built/client/meta.json');
|
const client = require('./built/client/meta.json');
|
||||||
return gulp.src(['./src/client/app/boot.js', './src/client/app/safe.js'])
|
return gulp.src(['./src/client/app/boot.js', './src/client/app/safe.js'])
|
||||||
.pipe(replace('VERSION', JSON.stringify(client.version)))
|
.pipe(replace('VERSION', JSON.stringify(client.version)))
|
||||||
.pipe(replace('API', JSON.stringify(config.api_url)))
|
|
||||||
.pipe(replace('ENV', JSON.stringify(env)))
|
.pipe(replace('ENV', JSON.stringify(env)))
|
||||||
.pipe(replace('LANGS', JSON.stringify(Object.keys(locales))))
|
.pipe(replace('LANGS', JSON.stringify(Object.keys(locales))))
|
||||||
.pipe(isProduction ? uglify({
|
.pipe(isProduction ? uglify({
|
||||||
|
|||||||
3
locales/README.md
Normal file
3
locales/README.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# **DO NOT edit locale files** except `ja-JP.yml`.
|
||||||
|
|
||||||
|
Please see [Contribution guide](../CONTRIBUTING.md) for more information.
|
||||||
@@ -6,6 +6,28 @@ common:
|
|||||||
misskey: "A ⭐ of fediverse"
|
misskey: "A ⭐ of fediverse"
|
||||||
about-title: "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>右</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:
|
time:
|
||||||
unknown: "なぞのじかん"
|
unknown: "なぞのじかん"
|
||||||
future: "未来"
|
future: "未来"
|
||||||
@@ -17,6 +39,8 @@ common:
|
|||||||
weeks_ago: "{}週間前"
|
weeks_ago: "{}週間前"
|
||||||
months_ago: "{}ヶ月前"
|
months_ago: "{}ヶ月前"
|
||||||
years_ago: "{}年前"
|
years_ago: "{}年前"
|
||||||
|
month-and-day: "{month}月 {day}日"
|
||||||
|
trash: "ゴミ箱"
|
||||||
weekday-short:
|
weekday-short:
|
||||||
sunday: "日"
|
sunday: "日"
|
||||||
monday: "月"
|
monday: "月"
|
||||||
@@ -25,6 +49,14 @@ common:
|
|||||||
thursday: "木"
|
thursday: "木"
|
||||||
friday: "金"
|
friday: "金"
|
||||||
saturday: "土"
|
saturday: "土"
|
||||||
|
weekday:
|
||||||
|
sunday: "日曜日"
|
||||||
|
monday: "月曜日"
|
||||||
|
tuesday: "火曜日"
|
||||||
|
wednesday: "水曜日"
|
||||||
|
thursday: "木曜日"
|
||||||
|
friday: "金曜日"
|
||||||
|
saturday: "土曜日"
|
||||||
reactions:
|
reactions:
|
||||||
like: "いいね"
|
like: "いいね"
|
||||||
love: "しゅき"
|
love: "しゅき"
|
||||||
@@ -34,6 +66,7 @@ common:
|
|||||||
congrats: "おめでとう"
|
congrats: "おめでとう"
|
||||||
angry: "おこ"
|
angry: "おこ"
|
||||||
confused: "こまこまのこまり"
|
confused: "こまこまのこまり"
|
||||||
|
rip: "RIP"
|
||||||
pudding: "Pudding"
|
pudding: "Pudding"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "今どうしてる?"
|
a: "今どうしてる?"
|
||||||
@@ -51,13 +84,21 @@ common:
|
|||||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
||||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||||
verified-user: "認証済みのユーザー"
|
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
||||||
|
verified-user: "公式アカウント"
|
||||||
|
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||||
|
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "引き分け"
|
drawn: "引き分け"
|
||||||
my-turn: "あなたのターンです"
|
my-turn: "あなたのターンです"
|
||||||
opponent-turn: "相手のターンです"
|
opponent-turn: "相手のターンです"
|
||||||
turn-of: "{}のターンです"
|
turn-of: "{}のターンです"
|
||||||
past-turn-of: "{}のターン"
|
past-turn-of: "{}のターン"
|
||||||
|
won: "{}の勝ち"
|
||||||
|
black: "黒"
|
||||||
|
white: "白"
|
||||||
|
total: "合計"
|
||||||
|
this-turn: "{}ターン目"
|
||||||
widgets:
|
widgets:
|
||||||
analog-clock: "アナログ時計"
|
analog-clock: "アナログ時計"
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
@@ -99,6 +140,73 @@ common:
|
|||||||
rename: "名前を変更"
|
rename: "名前を変更"
|
||||||
stack-left: "左に重ねる"
|
stack-left: "左に重ねる"
|
||||||
pop-right: "右に出す"
|
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:
|
common/views/components/connect-failed.vue:
|
||||||
title: "サーバーに接続できません"
|
title: "サーバーに接続できません"
|
||||||
description: "インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから{再度お試し}ください。"
|
description: "インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから{再度お試し}ください。"
|
||||||
@@ -133,11 +241,13 @@ common/views/components/messaging-room.vue:
|
|||||||
no-history: "これより過去の履歴はありません"
|
no-history: "これより過去の履歴はありません"
|
||||||
resize-form: "ドラッグしてフォームの広さを調整"
|
resize-form: "ドラッグしてフォームの広さを調整"
|
||||||
new-message: "新しいメッセージがあります"
|
new-message: "新しいメッセージがあります"
|
||||||
|
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||||
common/views/components/messaging-room.form.vue:
|
common/views/components/messaging-room.form.vue:
|
||||||
input-message-here: "ここにメッセージを入力"
|
input-message-here: "ここにメッセージを入力"
|
||||||
send: "送信"
|
send: "送信"
|
||||||
attach-from-local: "PCからファイルを添付する"
|
attach-from-local: "PCからファイルを添付する"
|
||||||
attach-from-drive: "ドライブからファイルを添付する"
|
attach-from-drive: "ドライブからファイルを添付する"
|
||||||
|
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||||
common/views/components/messaging-room.message.vue:
|
common/views/components/messaging-room.message.vue:
|
||||||
is-read: "既読"
|
is-read: "既読"
|
||||||
deleted: "このメッセージは削除されました"
|
deleted: "このメッセージは削除されました"
|
||||||
@@ -151,6 +261,8 @@ common/views/components/nav.vue:
|
|||||||
develop: "開発者"
|
develop: "開発者"
|
||||||
feedback: "フィードバック"
|
feedback: "フィードバック"
|
||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
|
detail: "詳細"
|
||||||
|
copy-link: "リンクをコピー"
|
||||||
favorite: "お気に入り"
|
favorite: "お気に入り"
|
||||||
pin: "ピン留め"
|
pin: "ピン留め"
|
||||||
delete: "削除"
|
delete: "削除"
|
||||||
@@ -177,7 +289,12 @@ common/views/components/signin.vue:
|
|||||||
token: "トークン"
|
token: "トークン"
|
||||||
signing-in: "やってます..."
|
signing-in: "やってます..."
|
||||||
signin: "サインイン"
|
signin: "サインイン"
|
||||||
|
or: "または"
|
||||||
|
signin-with-twitter: "Twitterでログイン"
|
||||||
|
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
|
invitation-code: "招待コード"
|
||||||
|
invitation-info: "招待コードをお持ちでない方は、<a href=\"{}\">管理者</a>までご連絡ください。"
|
||||||
username: "ユーザー名"
|
username: "ユーザー名"
|
||||||
checking: "確認しています..."
|
checking: "確認しています..."
|
||||||
available: "利用できます"
|
available: "利用できます"
|
||||||
@@ -223,11 +340,21 @@ common/views/components/visibility-chooser.vue:
|
|||||||
specified: "ダイレクト"
|
specified: "ダイレクト"
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
private: "非公開"
|
private: "非公開"
|
||||||
|
common/views/components/trends.vue:
|
||||||
|
count: "{}人が投稿"
|
||||||
|
empty: "トレンドなし"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "確認中"
|
fetching: "確認中"
|
||||||
no-broadcasts: "お知らせはありません"
|
no-broadcasts: "お知らせはありません"
|
||||||
have-a-nice-day: "良い一日を!"
|
have-a-nice-day: "良い一日を!"
|
||||||
next: "次"
|
next: "次"
|
||||||
|
common/views/widgets/calendar.vue:
|
||||||
|
year: "{}年"
|
||||||
|
month: "{}月"
|
||||||
|
day: "{}日"
|
||||||
|
today: "今日:"
|
||||||
|
this-month: "今月:"
|
||||||
|
this-year: "今年:"
|
||||||
common/views/widgets/donation.vue:
|
common/views/widgets/donation.vue:
|
||||||
title: "寄付のお願い"
|
title: "寄付のお願い"
|
||||||
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
||||||
@@ -239,8 +366,6 @@ common/views/widgets/posts-monitor.vue:
|
|||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
common/views/widgets/hashtags.vue:
|
common/views/widgets/hashtags.vue:
|
||||||
title: "ハッシュタグ"
|
title: "ハッシュタグ"
|
||||||
count: "{}人が投稿"
|
|
||||||
empty: "トレンドなし"
|
|
||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "サーバー情報"
|
title: "サーバー情報"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
@@ -248,12 +373,49 @@ common/views/widgets/memo.vue:
|
|||||||
title: "付箋"
|
title: "付箋"
|
||||||
memo: "ここに書いて!"
|
memo: "ここに書いて!"
|
||||||
save: "保存"
|
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:
|
common/views/pages/follow.vue:
|
||||||
signed-in-as: "{}としてサインイン中"
|
signed-in-as: "{}としてサインイン中"
|
||||||
following: "フォロー中"
|
following: "フォロー中"
|
||||||
follow: "フォロー"
|
follow: "フォロー"
|
||||||
request-pending: "フォロー許可待ち"
|
request-pending: "フォロー許可待ち"
|
||||||
follow-request: "フォロー申請"
|
follow-request: "フォロー申請"
|
||||||
|
desktop:
|
||||||
|
banner-crop-title: "バナーとして表示する部分を選択"
|
||||||
|
banner: "バナー"
|
||||||
|
uploading-banner: "新しいバナーをアップロードしています"
|
||||||
|
banner-updated: "バナーを更新しました"
|
||||||
|
choose-banner: "バナーにする画像を選択"
|
||||||
|
avatar-crop-title: "アバターとして表示する部分を選択"
|
||||||
|
avatar: "アバター"
|
||||||
|
uploading-avatar: "新しいアバターをアップロードしています"
|
||||||
|
avatar-updated: "アバターを更新しました"
|
||||||
|
choose-avatar: "アバターにする画像を選択"
|
||||||
|
invalid-filetype: "この形式のファイルはサポートされていません"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
@@ -267,6 +429,24 @@ desktop/views/components/calendar.vue:
|
|||||||
prev: "前の月"
|
prev: "前の月"
|
||||||
next: "次の月"
|
next: "次の月"
|
||||||
go: "クリックして時間遡行"
|
go: "クリックして時間遡行"
|
||||||
|
desktop/views/components/charts.vue:
|
||||||
|
title: "チャート"
|
||||||
|
per-day: "1日ごと"
|
||||||
|
per-hour: "1時間ごと"
|
||||||
|
notes: "投稿"
|
||||||
|
users: "ユーザー"
|
||||||
|
drive: "ドライブ"
|
||||||
|
charts:
|
||||||
|
notes: "投稿の増減 (統合)"
|
||||||
|
local-notes: "投稿の増減 (ローカル)"
|
||||||
|
remote-notes: "投稿の増減 (リモート)"
|
||||||
|
notes-total: "投稿の累計"
|
||||||
|
users: "ユーザーの増減"
|
||||||
|
users-total: "ユーザーの累計"
|
||||||
|
drive: "ドライブ使用量の増減"
|
||||||
|
drive-total: "ドライブ使用量の累計"
|
||||||
|
drive-files: "ドライブのファイル数の増減"
|
||||||
|
drive-files-total: "ドライブのファイル数の累計"
|
||||||
desktop/views/components/choose-file-from-drive-window.vue:
|
desktop/views/components/choose-file-from-drive-window.vue:
|
||||||
choose-file: "ファイル選択中"
|
choose-file: "ファイル選択中"
|
||||||
upload: "PCからドライブにファイルをアップロード"
|
upload: "PCからドライブにファイルをアップロード"
|
||||||
@@ -287,6 +467,7 @@ desktop/views/components/drive-window.vue:
|
|||||||
desktop/views/components/drive.file.vue:
|
desktop/views/components/drive.file.vue:
|
||||||
avatar: "アイコン"
|
avatar: "アイコン"
|
||||||
banner: "バナー"
|
banner: "バナー"
|
||||||
|
nsfw: "閲覧注意"
|
||||||
contextmenu:
|
contextmenu:
|
||||||
rename: "名前を変更"
|
rename: "名前を変更"
|
||||||
mark-as-sensitive: "閲覧注意に設定"
|
mark-as-sensitive: "閲覧注意に設定"
|
||||||
@@ -388,6 +569,8 @@ desktop/views/components/notes.note.vue:
|
|||||||
detail: "詳細"
|
detail: "詳細"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
|
hide: "隠す"
|
||||||
|
see-more: "もっと見る"
|
||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "読み込みに失敗しました。"
|
error: "読み込みに失敗しました。"
|
||||||
retry: "リトライ"
|
retry: "リトライ"
|
||||||
@@ -396,6 +579,9 @@ desktop/views/components/notifications.vue:
|
|||||||
more: "もっと見る"
|
more: "もっと見る"
|
||||||
empty: "ありません!"
|
empty: "ありません!"
|
||||||
desktop/views/components/post-form.vue:
|
desktop/views/components/post-form.vue:
|
||||||
|
add-visible-user: "+ユーザーを追加"
|
||||||
|
attach-location-information: "位置情報を添付する"
|
||||||
|
hide-contents: "内容を隠す"
|
||||||
reply-placeholder: "この投稿への返信..."
|
reply-placeholder: "この投稿への返信..."
|
||||||
quote-placeholder: "この投稿を引用..."
|
quote-placeholder: "この投稿を引用..."
|
||||||
submit: "投稿"
|
submit: "投稿"
|
||||||
@@ -416,6 +602,11 @@ desktop/views/components/post-form.vue:
|
|||||||
text-remain: "残り{}文字"
|
text-remain: "残り{}文字"
|
||||||
recent-tags: "最近"
|
recent-tags: "最近"
|
||||||
click-to-tagging: "クリックでタグ付け"
|
click-to-tagging: "クリックでタグ付け"
|
||||||
|
visibility: "公開範囲"
|
||||||
|
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||||
|
error: "エラー"
|
||||||
|
enter-username: "ユーザー名を入力してください"
|
||||||
|
annotations: "内容への注釈 (オプション)"
|
||||||
desktop/views/components/post-form-window.vue:
|
desktop/views/components/post-form-window.vue:
|
||||||
note: "新規投稿"
|
note: "新規投稿"
|
||||||
reply: "返信"
|
reply: "返信"
|
||||||
@@ -460,11 +651,15 @@ desktop/views/components/settings.vue:
|
|||||||
delete-wallpaper: "壁紙を削除"
|
delete-wallpaper: "壁紙を削除"
|
||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||||
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿をタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "マップの自動展開"
|
show-maps: "マップの自動展開"
|
||||||
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
||||||
sound: "サウンド"
|
sound: "サウンド"
|
||||||
@@ -536,6 +731,9 @@ desktop/views/components/settings.api.vue:
|
|||||||
enter-password: "パスワードを入力してください"
|
enter-password: "パスワードを入力してください"
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "連携しているアプリケーションはありません"
|
no-apps: "連携しているアプリケーションはありません"
|
||||||
|
desktop/views/components/settings.drive.vue:
|
||||||
|
max: "中"
|
||||||
|
in-use: "使用中"
|
||||||
desktop/views/components/settings.mute.vue:
|
desktop/views/components/settings.mute.vue:
|
||||||
no-users: "ミュートしているユーザーはいません"
|
no-users: "ミュートしているユーザーはいません"
|
||||||
desktop/views/components/settings.password.vue:
|
desktop/views/components/settings.password.vue:
|
||||||
@@ -558,6 +756,7 @@ desktop/views/components/settings.profile.vue:
|
|||||||
other: "その他"
|
other: "その他"
|
||||||
is-bot: "このアカウントはBotです"
|
is-bot: "このアカウントはBotです"
|
||||||
is-cat: "このアカウントはCatです"
|
is-cat: "このアカウントはCatです"
|
||||||
|
profile-updated: "プロフィールを更新しました"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
@@ -573,6 +772,7 @@ desktop/views/components/timeline.vue:
|
|||||||
list: "リスト"
|
list: "リスト"
|
||||||
desktop/views/components/ui.header.vue:
|
desktop/views/components/ui.header.vue:
|
||||||
welcome-back: "おかえりなさい、"
|
welcome-back: "おかえりなさい、"
|
||||||
|
adjective: "さん"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
drive: "ドライブ"
|
drive: "ドライブ"
|
||||||
@@ -580,6 +780,7 @@ desktop/views/components/ui.header.account.vue:
|
|||||||
lists: "リスト"
|
lists: "リスト"
|
||||||
follow-requests: "フォロー申請"
|
follow-requests: "フォロー申請"
|
||||||
customize: "ホームのカスタマイズ"
|
customize: "ホームのカスタマイズ"
|
||||||
|
admin: "管理"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
dark: "闇に飲まれる"
|
dark: "闇に飲まれる"
|
||||||
@@ -601,6 +802,7 @@ desktop/views/components/received-follow-requests-window.vue:
|
|||||||
desktop/views/components/user-lists-window.vue:
|
desktop/views/components/user-lists-window.vue:
|
||||||
title: "リスト"
|
title: "リスト"
|
||||||
create-list: "リストを作成"
|
create-list: "リストを作成"
|
||||||
|
list-name: "リスト名"
|
||||||
desktop/views/components/user-preview.vue:
|
desktop/views/components/user-preview.vue:
|
||||||
notes: "投稿"
|
notes: "投稿"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@@ -615,6 +817,34 @@ desktop/views/components/users-list-item.vue:
|
|||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
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.unverify-user.vue:
|
||||||
|
unverify-user: "ユーザーの公式アカウント解除"
|
||||||
|
unverify: "公式アカウントを解除する"
|
||||||
|
unverified: "公式アカウントを解除しました"
|
||||||
desktop/views/pages/deck/deck.tl-column.vue:
|
desktop/views/pages/deck/deck.tl-column.vue:
|
||||||
is-media-only: "メディア投稿のみ"
|
is-media-only: "メディア投稿のみ"
|
||||||
is-media-view: "メディアビュー"
|
is-media-view: "メディアビュー"
|
||||||
@@ -623,6 +853,11 @@ desktop/views/pages/deck/deck.note.vue:
|
|||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
|
desktop/views/pages/stats/stats.vue:
|
||||||
|
all-users: "全てのユーザー"
|
||||||
|
original-users: "このインスタンスのユーザー"
|
||||||
|
all-notes: "全ての投稿"
|
||||||
|
original-notes: "このインスタンスの投稿"
|
||||||
desktop/views/pages/welcome.vue:
|
desktop/views/pages/welcome.vue:
|
||||||
about: "詳しく..."
|
about: "詳しく..."
|
||||||
gotit: "わかった"
|
gotit: "わかった"
|
||||||
@@ -631,6 +866,10 @@ desktop/views/pages/welcome.vue:
|
|||||||
signin-button: "やってる"
|
signin-button: "やってる"
|
||||||
signup-button: "やる"
|
signup-button: "やる"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
|
announcements: "お知らせ"
|
||||||
|
photos: "最近の画像"
|
||||||
|
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||||
|
info: "情報"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
@@ -645,6 +884,13 @@ desktop/views/pages/selectdrive.vue:
|
|||||||
ok: "決定"
|
ok: "決定"
|
||||||
cancel: "キャンセル"
|
cancel: "キャンセル"
|
||||||
upload: "PCからドライブにファイルをアップロード"
|
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:
|
desktop/views/pages/user-list.users.vue:
|
||||||
users: "ユーザー"
|
users: "ユーザー"
|
||||||
add-user: "ユーザーを追加"
|
add-user: "ユーザーを追加"
|
||||||
@@ -675,6 +921,8 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "ミュートする"
|
mute: "ミュートする"
|
||||||
muted: "ミュートしています"
|
muted: "ミュートしています"
|
||||||
unmute: "ミュート解除"
|
unmute: "ミュート解除"
|
||||||
|
push-to-a-list: "リストに追加"
|
||||||
|
list-pushed: "{user}を{list}に追加しました。"
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.header.vue:
|
||||||
posts: "投稿"
|
posts: "投稿"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@@ -730,12 +978,15 @@ mobile/views/components/drive-file-chooser.vue:
|
|||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
mobile/views/components/drive-folder-chooser.vue:
|
mobile/views/components/drive-folder-chooser.vue:
|
||||||
select-folder: "フォルダーを選択"
|
select-folder: "フォルダーを選択"
|
||||||
|
mobile/views/components/drive.file.vue:
|
||||||
|
nsfw: "閲覧注意"
|
||||||
mobile/views/components/drive.file-detail.vue:
|
mobile/views/components/drive.file-detail.vue:
|
||||||
download: "ダウンロード"
|
download: "ダウンロード"
|
||||||
rename: "名前を変更"
|
rename: "名前を変更"
|
||||||
move: "移動"
|
move: "移動"
|
||||||
hash: "ハッシュ (md5)"
|
hash: "ハッシュ (md5)"
|
||||||
exif: "EXIF"
|
exif: "EXIF"
|
||||||
|
nsfw: "閲覧注意"
|
||||||
mobile/views/components/media-image.vue:
|
mobile/views/components/media-image.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
@@ -800,6 +1051,9 @@ mobile/views/components/sub-note-content.vue:
|
|||||||
mobile/views/components/timeline.vue:
|
mobile/views/components/timeline.vue:
|
||||||
empty: "投稿がありません"
|
empty: "投稿がありません"
|
||||||
load-more: "もっと"
|
load-more: "もっと"
|
||||||
|
mobile/views/components/ui.header.vue:
|
||||||
|
welcome-back: "おかえりなさい、"
|
||||||
|
adjective: "さん"
|
||||||
mobile/views/components/ui.nav.vue:
|
mobile/views/components/ui.nav.vue:
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
@@ -813,6 +1067,7 @@ mobile/views/components/ui.nav.vue:
|
|||||||
game: "ゲーム"
|
game: "ゲーム"
|
||||||
darkmode: "ダークモード"
|
darkmode: "ダークモード"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
|
admin: "管理"
|
||||||
about: "Misskeyについて"
|
about: "Misskeyについて"
|
||||||
mobile/views/components/user-timeline.vue:
|
mobile/views/components/user-timeline.vue:
|
||||||
no-notes: "このユーザーは投稿していないようです。"
|
no-notes: "このユーザーは投稿していないようです。"
|
||||||
@@ -830,6 +1085,8 @@ mobile/views/pages/user-lists.vue:
|
|||||||
mobile/views/pages/drive.vue:
|
mobile/views/pages/drive.vue:
|
||||||
drive: "ドライブ"
|
drive: "ドライブ"
|
||||||
more: "もっと見る"
|
more: "もっと見る"
|
||||||
|
mobile/views/pages/signup.vue:
|
||||||
|
lets-start: "📦 始めましょう"
|
||||||
mobile/views/pages/followers.vue:
|
mobile/views/pages/followers.vue:
|
||||||
followers-of: "{}のフォロワー"
|
followers-of: "{}のフォロワー"
|
||||||
mobile/views/pages/following.vue:
|
mobile/views/pages/following.vue:
|
||||||
@@ -839,6 +1096,19 @@ mobile/views/pages/home.vue:
|
|||||||
local: "ローカル"
|
local: "ローカル"
|
||||||
hybrid: "ソーシャル"
|
hybrid: "ソーシャル"
|
||||||
global: "グローバル"
|
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:
|
mobile/views/pages/messaging.vue:
|
||||||
messaging: "メッセージ"
|
messaging: "メッセージ"
|
||||||
mobile/views/pages/messaging-room.vue:
|
mobile/views/pages/messaging-room.vue:
|
||||||
@@ -854,6 +1124,8 @@ mobile/views/pages/note.vue:
|
|||||||
mobile/views/pages/notifications.vue:
|
mobile/views/pages/notifications.vue:
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
read-all: "すべての通知を既読にしますか?"
|
read-all: "すべての通知を既読にしますか?"
|
||||||
|
mobile/views/pages/games/reversi.vue:
|
||||||
|
reversi: "リバーシ"
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
mobile/views/pages/settings/settings.profile.vue:
|
||||||
title: "プロフィール"
|
title: "プロフィール"
|
||||||
name: "名前"
|
name: "名前"
|
||||||
@@ -871,6 +1143,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
search: "検索"
|
search: "検索"
|
||||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
|
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
mobile/views/pages/selectdrive.vue:
|
mobile/views/pages/selectdrive.vue:
|
||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
mobile/views/pages/settings.vue:
|
mobile/views/pages/settings.vue:
|
||||||
@@ -884,13 +1157,18 @@ mobile/views/pages/settings.vue:
|
|||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
i-am-under-limited-internet: "私は通信を制限されている"
|
i-am-under-limited-internet: "私は通信を制限されている"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteを表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteを表示する"
|
||||||
post-style: "投稿の表示スタイル"
|
post-style: "投稿の表示スタイル"
|
||||||
post-style-standard: "標準"
|
post-style-standard: "標準"
|
||||||
post-style-smart: "スマート"
|
post-style-smart: "スマート"
|
||||||
|
notification-position: "通知の表示"
|
||||||
|
notification-position-bottom: "下"
|
||||||
|
notification-position-top: "上"
|
||||||
behavior: "動作"
|
behavior: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
@@ -911,6 +1189,8 @@ mobile/views/pages/settings.vue:
|
|||||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
|
sound: "サウンド"
|
||||||
|
enable-sounds: "サウンドを有効にする"
|
||||||
mobile/views/pages/user.vue:
|
mobile/views/pages/user.vue:
|
||||||
follows-you: "フォローされています"
|
follows-you: "フォローされています"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@@ -965,3 +1245,5 @@ docs:
|
|||||||
name: "名前"
|
name: "名前"
|
||||||
type: "型"
|
type: "型"
|
||||||
description: "説明"
|
description: "説明"
|
||||||
|
dev/views/index.vue:
|
||||||
|
manage-apps: "アプリの管理"
|
||||||
@@ -6,6 +6,28 @@ common:
|
|||||||
misskey: "A ⭐ of fediverse"
|
misskey: "A ⭐ of fediverse"
|
||||||
about-title: "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>右</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:
|
time:
|
||||||
unknown: "Unbekannt"
|
unknown: "Unbekannt"
|
||||||
future: "Zukunft"
|
future: "Zukunft"
|
||||||
@@ -17,6 +39,8 @@ common:
|
|||||||
weeks_ago: "vor {0} Woche{0:n}"
|
weeks_ago: "vor {0} Woche{0:n}"
|
||||||
months_ago: "vor {0} Monat{0:en}"
|
months_ago: "vor {0} Monat{0:en}"
|
||||||
years_ago: "vor {} Jahr{0:en}"
|
years_ago: "vor {} Jahr{0:en}"
|
||||||
|
month-and-day: "{month}月 {day}日"
|
||||||
|
trash: "ゴミ箱"
|
||||||
weekday-short:
|
weekday-short:
|
||||||
sunday: "So"
|
sunday: "So"
|
||||||
monday: "Mo"
|
monday: "Mo"
|
||||||
@@ -25,8 +49,16 @@ common:
|
|||||||
thursday: "Do"
|
thursday: "Do"
|
||||||
friday: "Fr"
|
friday: "Fr"
|
||||||
saturday: "Sa"
|
saturday: "Sa"
|
||||||
|
weekday:
|
||||||
|
sunday: "日曜日"
|
||||||
|
monday: "月曜日"
|
||||||
|
tuesday: "火曜日"
|
||||||
|
wednesday: "水曜日"
|
||||||
|
thursday: "木曜日"
|
||||||
|
friday: "金曜日"
|
||||||
|
saturday: "土曜日"
|
||||||
reactions:
|
reactions:
|
||||||
like: "Gefällt mir"
|
like: "いいね"
|
||||||
love: "Lieben"
|
love: "Lieben"
|
||||||
laugh: "Lachen"
|
laugh: "Lachen"
|
||||||
hmm: "Hmm...?"
|
hmm: "Hmm...?"
|
||||||
@@ -34,6 +66,7 @@ common:
|
|||||||
congrats: "Glückwunsch!"
|
congrats: "Glückwunsch!"
|
||||||
angry: "Wütend"
|
angry: "Wütend"
|
||||||
confused: "Verwirrt"
|
confused: "Verwirrt"
|
||||||
|
rip: "RIP"
|
||||||
pudding: "Pudding"
|
pudding: "Pudding"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "Was machst du gerade?"
|
a: "Was machst du gerade?"
|
||||||
@@ -51,13 +84,21 @@ common:
|
|||||||
my-token-regenerated: "Dein Token wurde generiert. Du wirst jetzt abgemeldet."
|
my-token-regenerated: "Dein Token wurde generiert. Du wirst jetzt abgemeldet."
|
||||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||||
verified-user: "認証済みのユーザー"
|
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
||||||
|
verified-user: "公式アカウント"
|
||||||
|
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||||
|
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "引き分け"
|
drawn: "引き分け"
|
||||||
my-turn: "あなたのターンです"
|
my-turn: "あなたのターンです"
|
||||||
opponent-turn: "相手のターンです"
|
opponent-turn: "相手のターンです"
|
||||||
turn-of: "{}のターンです"
|
turn-of: "{}のターンです"
|
||||||
past-turn-of: "{}のターン"
|
past-turn-of: "{}のターン"
|
||||||
|
won: "{}の勝ち"
|
||||||
|
black: "黒"
|
||||||
|
white: "白"
|
||||||
|
total: "合計"
|
||||||
|
this-turn: "{}ターン目"
|
||||||
widgets:
|
widgets:
|
||||||
analog-clock: "Analoge Uhr"
|
analog-clock: "Analoge Uhr"
|
||||||
profile: "Profil"
|
profile: "Profil"
|
||||||
@@ -99,6 +140,73 @@ common:
|
|||||||
rename: "Umbenennen"
|
rename: "Umbenennen"
|
||||||
stack-left: "Nach links schichten"
|
stack-left: "Nach links schichten"
|
||||||
pop-right: "右に出す"
|
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:
|
common/views/components/connect-failed.vue:
|
||||||
title: "Verbindung zum Server ist fehlgeschlagen"
|
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."
|
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."
|
||||||
@@ -133,11 +241,13 @@ common/views/components/messaging-room.vue:
|
|||||||
no-history: "Keine weitere Chronik vorhanden"
|
no-history: "Keine weitere Chronik vorhanden"
|
||||||
resize-form: "Ziehen um die Größe zu verändern"
|
resize-form: "Ziehen um die Größe zu verändern"
|
||||||
new-message: "Neue Nachricht"
|
new-message: "Neue Nachricht"
|
||||||
|
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||||
common/views/components/messaging-room.form.vue:
|
common/views/components/messaging-room.form.vue:
|
||||||
input-message-here: "Nachricht hier eingeben"
|
input-message-here: "Nachricht hier eingeben"
|
||||||
send: "Senden"
|
send: "Senden"
|
||||||
attach-from-local: "Wähle Dateien von deinem PC aus"
|
attach-from-local: "Wähle Dateien von deinem PC aus"
|
||||||
attach-from-drive: "Wähle Dateien von deinem Speicher aus"
|
attach-from-drive: "Wähle Dateien von deinem Speicher aus"
|
||||||
|
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||||
common/views/components/messaging-room.message.vue:
|
common/views/components/messaging-room.message.vue:
|
||||||
is-read: "Gelesen"
|
is-read: "Gelesen"
|
||||||
deleted: "Diese Nachricht wurde gelöscht"
|
deleted: "Diese Nachricht wurde gelöscht"
|
||||||
@@ -151,6 +261,8 @@ common/views/components/nav.vue:
|
|||||||
develop: "Entwickler"
|
develop: "Entwickler"
|
||||||
feedback: "Feedback"
|
feedback: "Feedback"
|
||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
|
detail: "詳細"
|
||||||
|
copy-link: "リンクをコピー"
|
||||||
favorite: "Diese Anmerkung favorisieren"
|
favorite: "Diese Anmerkung favorisieren"
|
||||||
pin: "An die Profilseite pinnen"
|
pin: "An die Profilseite pinnen"
|
||||||
delete: "Löschen"
|
delete: "Löschen"
|
||||||
@@ -177,7 +289,12 @@ common/views/components/signin.vue:
|
|||||||
token: "Token"
|
token: "Token"
|
||||||
signing-in: "Melde an..."
|
signing-in: "Melde an..."
|
||||||
signin: "Anmelden"
|
signin: "Anmelden"
|
||||||
|
or: "または"
|
||||||
|
signin-with-twitter: "Twitterでログイン"
|
||||||
|
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
|
invitation-code: "招待コード"
|
||||||
|
invitation-info: "招待コードをお持ちでない方は、<a href=\"{}\">管理者</a>までご連絡ください。"
|
||||||
username: "Benutzername"
|
username: "Benutzername"
|
||||||
checking: "Überprüfung..."
|
checking: "Überprüfung..."
|
||||||
available: "Verfügbar"
|
available: "Verfügbar"
|
||||||
@@ -223,11 +340,21 @@ common/views/components/visibility-chooser.vue:
|
|||||||
specified: "Direkt"
|
specified: "Direkt"
|
||||||
specified-desc: "Poste nur für bestimmte Benutzer"
|
specified-desc: "Poste nur für bestimmte Benutzer"
|
||||||
private: "Privat"
|
private: "Privat"
|
||||||
|
common/views/components/trends.vue:
|
||||||
|
count: "{}人が投稿"
|
||||||
|
empty: "トレンドなし"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "Laden"
|
fetching: "Laden"
|
||||||
no-broadcasts: "Keine Broadcasts"
|
no-broadcasts: "Keine Broadcasts"
|
||||||
have-a-nice-day: "Schönen Tag!"
|
have-a-nice-day: "Schönen Tag!"
|
||||||
next: "Nächster"
|
next: "Nächster"
|
||||||
|
common/views/widgets/calendar.vue:
|
||||||
|
year: "{}年"
|
||||||
|
month: "{}月"
|
||||||
|
day: "{}日"
|
||||||
|
today: "今日:"
|
||||||
|
this-month: "今月:"
|
||||||
|
this-year: "今年:"
|
||||||
common/views/widgets/donation.vue:
|
common/views/widgets/donation.vue:
|
||||||
title: "Spende"
|
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!"
|
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!"
|
||||||
@@ -239,8 +366,6 @@ common/views/widgets/posts-monitor.vue:
|
|||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
common/views/widgets/hashtags.vue:
|
common/views/widgets/hashtags.vue:
|
||||||
title: "ハッシュタグ"
|
title: "ハッシュタグ"
|
||||||
count: "{}人が投稿"
|
|
||||||
empty: "トレンドなし"
|
|
||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "Serverinformationen"
|
title: "Serverinformationen"
|
||||||
toggle: "Sicht umschalten"
|
toggle: "Sicht umschalten"
|
||||||
@@ -248,12 +373,49 @@ common/views/widgets/memo.vue:
|
|||||||
title: "Notizen"
|
title: "Notizen"
|
||||||
memo: "Schreib hier!"
|
memo: "Schreib hier!"
|
||||||
save: "Speichern"
|
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:
|
common/views/pages/follow.vue:
|
||||||
signed-in-as: "{}としてサインイン中"
|
signed-in-as: "{}としてサインイン中"
|
||||||
following: "フォロー中"
|
following: "フォロー中"
|
||||||
follow: "フォロー"
|
follow: "フォロー"
|
||||||
request-pending: "フォロー許可待ち"
|
request-pending: "フォロー許可待ち"
|
||||||
follow-request: "フォロー申請"
|
follow-request: "フォロー申請"
|
||||||
|
desktop:
|
||||||
|
banner-crop-title: "バナーとして表示する部分を選択"
|
||||||
|
banner: "バナー"
|
||||||
|
uploading-banner: "新しいバナーをアップロードしています"
|
||||||
|
banner-updated: "バナーを更新しました"
|
||||||
|
choose-banner: "バナーにする画像を選択"
|
||||||
|
avatar-crop-title: "アバターとして表示する部分を選択"
|
||||||
|
avatar: "アバター"
|
||||||
|
uploading-avatar: "新しいアバターをアップロードしています"
|
||||||
|
avatar-updated: "アバターを更新しました"
|
||||||
|
choose-avatar: "アバターにする画像を選択"
|
||||||
|
invalid-filetype: "この形式のファイルはサポートされていません"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Schwarz ... komplett"
|
total: "Schwarz ... komplett"
|
||||||
notes: "Blau ... Hinweise"
|
notes: "Blau ... Hinweise"
|
||||||
@@ -267,6 +429,24 @@ desktop/views/components/calendar.vue:
|
|||||||
prev: "Vorheriger Monat"
|
prev: "Vorheriger Monat"
|
||||||
next: "Nächster Monat"
|
next: "Nächster Monat"
|
||||||
go: "Klicke zur Navigation"
|
go: "Klicke zur Navigation"
|
||||||
|
desktop/views/components/charts.vue:
|
||||||
|
title: "チャート"
|
||||||
|
per-day: "1日ごと"
|
||||||
|
per-hour: "1時間ごと"
|
||||||
|
notes: "投稿"
|
||||||
|
users: "ユーザー"
|
||||||
|
drive: "ドライブ"
|
||||||
|
charts:
|
||||||
|
notes: "投稿の増減 (統合)"
|
||||||
|
local-notes: "投稿の増減 (ローカル)"
|
||||||
|
remote-notes: "投稿の増減 (リモート)"
|
||||||
|
notes-total: "投稿の累計"
|
||||||
|
users: "ユーザーの増減"
|
||||||
|
users-total: "ユーザーの累計"
|
||||||
|
drive: "ドライブ使用量の増減"
|
||||||
|
drive-total: "ドライブ使用量の累計"
|
||||||
|
drive-files: "ドライブのファイル数の増減"
|
||||||
|
drive-files-total: "ドライブのファイル数の累計"
|
||||||
desktop/views/components/choose-file-from-drive-window.vue:
|
desktop/views/components/choose-file-from-drive-window.vue:
|
||||||
choose-file: "Datei auswählen"
|
choose-file: "Datei auswählen"
|
||||||
upload: "Dateien von deinem PC hochladen"
|
upload: "Dateien von deinem PC hochladen"
|
||||||
@@ -287,6 +467,7 @@ desktop/views/components/drive-window.vue:
|
|||||||
desktop/views/components/drive.file.vue:
|
desktop/views/components/drive.file.vue:
|
||||||
avatar: "Avatar"
|
avatar: "Avatar"
|
||||||
banner: "Banner"
|
banner: "Banner"
|
||||||
|
nsfw: "閲覧注意"
|
||||||
contextmenu:
|
contextmenu:
|
||||||
rename: "Umbenennen"
|
rename: "Umbenennen"
|
||||||
mark-as-sensitive: "閲覧注意に設定"
|
mark-as-sensitive: "閲覧注意に設定"
|
||||||
@@ -388,6 +569,8 @@ desktop/views/components/notes.note.vue:
|
|||||||
detail: "Zeige Details"
|
detail: "Zeige Details"
|
||||||
private: "Dieser Beitrag ist eine privat"
|
private: "Dieser Beitrag ist eine privat"
|
||||||
deleted: "Dieser Beitrag wurde entfernt"
|
deleted: "Dieser Beitrag wurde entfernt"
|
||||||
|
hide: "隠す"
|
||||||
|
see-more: "もっと見る"
|
||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "Laden fehlgeschlagen."
|
error: "Laden fehlgeschlagen."
|
||||||
retry: "Erneut versuchen"
|
retry: "Erneut versuchen"
|
||||||
@@ -396,6 +579,9 @@ desktop/views/components/notifications.vue:
|
|||||||
more: "Mehr"
|
more: "Mehr"
|
||||||
empty: "Keine Benachrichtigungen"
|
empty: "Keine Benachrichtigungen"
|
||||||
desktop/views/components/post-form.vue:
|
desktop/views/components/post-form.vue:
|
||||||
|
add-visible-user: "+ユーザーを追加"
|
||||||
|
attach-location-information: "位置情報を添付する"
|
||||||
|
hide-contents: "内容を隠す"
|
||||||
reply-placeholder: "Antworte auf diese Anmerkung..."
|
reply-placeholder: "Antworte auf diese Anmerkung..."
|
||||||
quote-placeholder: "Zitiere diese Anmerkung..."
|
quote-placeholder: "Zitiere diese Anmerkung..."
|
||||||
submit: "Beitragsform"
|
submit: "Beitragsform"
|
||||||
@@ -416,6 +602,11 @@ desktop/views/components/post-form.vue:
|
|||||||
text-remain: "{} Zeichen verbleibend"
|
text-remain: "{} Zeichen verbleibend"
|
||||||
recent-tags: "最近"
|
recent-tags: "最近"
|
||||||
click-to-tagging: "クリックでタグ付け"
|
click-to-tagging: "クリックでタグ付け"
|
||||||
|
visibility: "公開範囲"
|
||||||
|
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||||
|
error: "エラー"
|
||||||
|
enter-username: "ユーザー名を入力してください"
|
||||||
|
annotations: "内容への注釈 (オプション)"
|
||||||
desktop/views/components/post-form-window.vue:
|
desktop/views/components/post-form-window.vue:
|
||||||
note: "Neue Notiz"
|
note: "Neue Notiz"
|
||||||
reply: "Antworten"
|
reply: "Antworten"
|
||||||
@@ -460,11 +651,15 @@ desktop/views/components/settings.vue:
|
|||||||
delete-wallpaper: "壁紙を削除"
|
delete-wallpaper: "壁紙を削除"
|
||||||
dark-mode: "Nacht Modus"
|
dark-mode: "Nacht Modus"
|
||||||
circle-icons: "Kreisförmige Icons"
|
circle-icons: "Kreisförmige Icons"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
gradient-window-header: "Übergang in Fensterköpfen"
|
gradient-window-header: "Übergang in Fensterköpfen"
|
||||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||||
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "Zeige Antworten"
|
show-reply-target: "Zeige Antworten"
|
||||||
show-my-renotes: "Zeige meine Reposts auf der Zeitleiste"
|
show-my-renotes: "Zeige meine Reposts auf der Zeitleiste"
|
||||||
show-renoted-my-notes: "Zeige meine Reposts, die geteilt wurden, auf der Zeitleiste"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "Karte anzeigen"
|
show-maps: "Karte anzeigen"
|
||||||
show-maps-desc: "Zeige den Standort zu diesem Beitrag automatisch an."
|
show-maps-desc: "Zeige den Standort zu diesem Beitrag automatisch an."
|
||||||
sound: "Ton"
|
sound: "Ton"
|
||||||
@@ -536,6 +731,9 @@ desktop/views/components/settings.api.vue:
|
|||||||
enter-password: "Bitte Passwort eingeben"
|
enter-password: "Bitte Passwort eingeben"
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "連携しているアプリケーションはありません"
|
no-apps: "連携しているアプリケーションはありません"
|
||||||
|
desktop/views/components/settings.drive.vue:
|
||||||
|
max: "中"
|
||||||
|
in-use: "使用中"
|
||||||
desktop/views/components/settings.mute.vue:
|
desktop/views/components/settings.mute.vue:
|
||||||
no-users: "ミュートしているユーザーはいません"
|
no-users: "ミュートしているユーザーはいません"
|
||||||
desktop/views/components/settings.password.vue:
|
desktop/views/components/settings.password.vue:
|
||||||
@@ -558,6 +756,7 @@ desktop/views/components/settings.profile.vue:
|
|||||||
other: "その他"
|
other: "その他"
|
||||||
is-bot: "このアカウントはBotです"
|
is-bot: "このアカウントはBotです"
|
||||||
is-cat: "このアカウントはCatです"
|
is-cat: "このアカウントはCatです"
|
||||||
|
profile-updated: "プロフィールを更新しました"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
@@ -573,6 +772,7 @@ desktop/views/components/timeline.vue:
|
|||||||
list: "Listen"
|
list: "Listen"
|
||||||
desktop/views/components/ui.header.vue:
|
desktop/views/components/ui.header.vue:
|
||||||
welcome-back: "おかえりなさい、"
|
welcome-back: "おかえりなさい、"
|
||||||
|
adjective: "さん"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "Dein Profil"
|
profile: "Dein Profil"
|
||||||
drive: "Speicher"
|
drive: "Speicher"
|
||||||
@@ -580,6 +780,7 @@ desktop/views/components/ui.header.account.vue:
|
|||||||
lists: "Listen"
|
lists: "Listen"
|
||||||
follow-requests: "フォロー申請"
|
follow-requests: "フォロー申請"
|
||||||
customize: "ホームのカスタマイズ"
|
customize: "ホームのカスタマイズ"
|
||||||
|
admin: "管理"
|
||||||
settings: "Einstellungen"
|
settings: "Einstellungen"
|
||||||
signout: "Ausloggen"
|
signout: "Ausloggen"
|
||||||
dark: "Verdunkeln"
|
dark: "Verdunkeln"
|
||||||
@@ -601,6 +802,7 @@ desktop/views/components/received-follow-requests-window.vue:
|
|||||||
desktop/views/components/user-lists-window.vue:
|
desktop/views/components/user-lists-window.vue:
|
||||||
title: "リスト"
|
title: "リスト"
|
||||||
create-list: "リストを作成"
|
create-list: "リストを作成"
|
||||||
|
list-name: "リスト名"
|
||||||
desktop/views/components/user-preview.vue:
|
desktop/views/components/user-preview.vue:
|
||||||
notes: "投稿"
|
notes: "投稿"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@@ -615,6 +817,34 @@ desktop/views/components/users-list-item.vue:
|
|||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
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.unverify-user.vue:
|
||||||
|
unverify-user: "ユーザーの公式アカウント解除"
|
||||||
|
unverify: "公式アカウントを解除する"
|
||||||
|
unverified: "公式アカウントを解除しました"
|
||||||
desktop/views/pages/deck/deck.tl-column.vue:
|
desktop/views/pages/deck/deck.tl-column.vue:
|
||||||
is-media-only: "メディア投稿のみ"
|
is-media-only: "メディア投稿のみ"
|
||||||
is-media-view: "メディアビュー"
|
is-media-view: "メディアビュー"
|
||||||
@@ -623,6 +853,11 @@ desktop/views/pages/deck/deck.note.vue:
|
|||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
|
desktop/views/pages/stats/stats.vue:
|
||||||
|
all-users: "全てのユーザー"
|
||||||
|
original-users: "このインスタンスのユーザー"
|
||||||
|
all-notes: "全ての投稿"
|
||||||
|
original-notes: "このインスタンスの投稿"
|
||||||
desktop/views/pages/welcome.vue:
|
desktop/views/pages/welcome.vue:
|
||||||
about: "詳しく..."
|
about: "詳しく..."
|
||||||
gotit: "わかった"
|
gotit: "わかった"
|
||||||
@@ -631,6 +866,10 @@ desktop/views/pages/welcome.vue:
|
|||||||
signin-button: "やってる"
|
signin-button: "やってる"
|
||||||
signup-button: "やる"
|
signup-button: "やる"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
|
announcements: "お知らせ"
|
||||||
|
photos: "最近の画像"
|
||||||
|
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||||
|
info: "情報"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
@@ -645,6 +884,13 @@ desktop/views/pages/selectdrive.vue:
|
|||||||
ok: "OK"
|
ok: "OK"
|
||||||
cancel: "Abbrechen"
|
cancel: "Abbrechen"
|
||||||
upload: "PCからドライブにファイルをアップロード"
|
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:
|
desktop/views/pages/user-list.users.vue:
|
||||||
users: "ユーザー"
|
users: "ユーザー"
|
||||||
add-user: "ユーザーを追加"
|
add-user: "ユーザーを追加"
|
||||||
@@ -675,6 +921,8 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "ミュートする"
|
mute: "ミュートする"
|
||||||
muted: "ミュートしています"
|
muted: "ミュートしています"
|
||||||
unmute: "ミュート解除"
|
unmute: "ミュート解除"
|
||||||
|
push-to-a-list: "リストに追加"
|
||||||
|
list-pushed: "{user}を{list}に追加しました。"
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.header.vue:
|
||||||
posts: "投稿"
|
posts: "投稿"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@@ -730,12 +978,15 @@ mobile/views/components/drive-file-chooser.vue:
|
|||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
mobile/views/components/drive-folder-chooser.vue:
|
mobile/views/components/drive-folder-chooser.vue:
|
||||||
select-folder: "フォルダーを選択"
|
select-folder: "フォルダーを選択"
|
||||||
|
mobile/views/components/drive.file.vue:
|
||||||
|
nsfw: "閲覧注意"
|
||||||
mobile/views/components/drive.file-detail.vue:
|
mobile/views/components/drive.file-detail.vue:
|
||||||
download: "ダウンロード"
|
download: "ダウンロード"
|
||||||
rename: "名前を変更"
|
rename: "名前を変更"
|
||||||
move: "移動"
|
move: "移動"
|
||||||
hash: "ハッシュ (md5)"
|
hash: "ハッシュ (md5)"
|
||||||
exif: "EXIF"
|
exif: "EXIF"
|
||||||
|
nsfw: "閲覧注意"
|
||||||
mobile/views/components/media-image.vue:
|
mobile/views/components/media-image.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
@@ -800,6 +1051,9 @@ mobile/views/components/sub-note-content.vue:
|
|||||||
mobile/views/components/timeline.vue:
|
mobile/views/components/timeline.vue:
|
||||||
empty: "投稿がありません"
|
empty: "投稿がありません"
|
||||||
load-more: "もっと"
|
load-more: "もっと"
|
||||||
|
mobile/views/components/ui.header.vue:
|
||||||
|
welcome-back: "おかえりなさい、"
|
||||||
|
adjective: "さん"
|
||||||
mobile/views/components/ui.nav.vue:
|
mobile/views/components/ui.nav.vue:
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
@@ -813,6 +1067,7 @@ mobile/views/components/ui.nav.vue:
|
|||||||
game: "ゲーム"
|
game: "ゲーム"
|
||||||
darkmode: "ダークモード"
|
darkmode: "ダークモード"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
|
admin: "管理"
|
||||||
about: "Misskeyについて"
|
about: "Misskeyについて"
|
||||||
mobile/views/components/user-timeline.vue:
|
mobile/views/components/user-timeline.vue:
|
||||||
no-notes: "このユーザーは投稿していないようです。"
|
no-notes: "このユーザーは投稿していないようです。"
|
||||||
@@ -830,6 +1085,8 @@ mobile/views/pages/user-lists.vue:
|
|||||||
mobile/views/pages/drive.vue:
|
mobile/views/pages/drive.vue:
|
||||||
drive: "ドライブ"
|
drive: "ドライブ"
|
||||||
more: "もっと見る"
|
more: "もっと見る"
|
||||||
|
mobile/views/pages/signup.vue:
|
||||||
|
lets-start: "📦 始めましょう"
|
||||||
mobile/views/pages/followers.vue:
|
mobile/views/pages/followers.vue:
|
||||||
followers-of: "{}のフォロワー"
|
followers-of: "{}のフォロワー"
|
||||||
mobile/views/pages/following.vue:
|
mobile/views/pages/following.vue:
|
||||||
@@ -839,6 +1096,19 @@ mobile/views/pages/home.vue:
|
|||||||
local: "ローカル"
|
local: "ローカル"
|
||||||
hybrid: "ソーシャル"
|
hybrid: "ソーシャル"
|
||||||
global: "グローバル"
|
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:
|
mobile/views/pages/messaging.vue:
|
||||||
messaging: "メッセージ"
|
messaging: "メッセージ"
|
||||||
mobile/views/pages/messaging-room.vue:
|
mobile/views/pages/messaging-room.vue:
|
||||||
@@ -854,6 +1124,8 @@ mobile/views/pages/note.vue:
|
|||||||
mobile/views/pages/notifications.vue:
|
mobile/views/pages/notifications.vue:
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
read-all: "すべての通知を既読にしますか?"
|
read-all: "すべての通知を既読にしますか?"
|
||||||
|
mobile/views/pages/games/reversi.vue:
|
||||||
|
reversi: "リバーシ"
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
mobile/views/pages/settings/settings.profile.vue:
|
||||||
title: "Profil"
|
title: "Profil"
|
||||||
name: "名前"
|
name: "名前"
|
||||||
@@ -871,6 +1143,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
search: "検索"
|
search: "検索"
|
||||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
|
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
mobile/views/pages/selectdrive.vue:
|
mobile/views/pages/selectdrive.vue:
|
||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
mobile/views/pages/settings.vue:
|
mobile/views/pages/settings.vue:
|
||||||
@@ -884,13 +1157,18 @@ mobile/views/pages/settings.vue:
|
|||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
i-am-under-limited-internet: "私は通信を制限されている"
|
i-am-under-limited-internet: "私は通信を制限されている"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteを表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteを表示する"
|
||||||
post-style: "投稿の表示スタイル"
|
post-style: "投稿の表示スタイル"
|
||||||
post-style-standard: "標準"
|
post-style-standard: "標準"
|
||||||
post-style-smart: "スマート"
|
post-style-smart: "スマート"
|
||||||
|
notification-position: "通知の表示"
|
||||||
|
notification-position-bottom: "下"
|
||||||
|
notification-position-top: "上"
|
||||||
behavior: "動作"
|
behavior: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
@@ -911,6 +1189,8 @@ mobile/views/pages/settings.vue:
|
|||||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
|
sound: "サウンド"
|
||||||
|
enable-sounds: "サウンドを有効にする"
|
||||||
mobile/views/pages/user.vue:
|
mobile/views/pages/user.vue:
|
||||||
follows-you: "フォローされています"
|
follows-you: "フォローされています"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@@ -965,3 +1245,5 @@ docs:
|
|||||||
name: "名前"
|
name: "名前"
|
||||||
type: "型"
|
type: "型"
|
||||||
description: "説明"
|
description: "説明"
|
||||||
|
dev/views/index.vue:
|
||||||
|
manage-apps: "アプリの管理"
|
||||||
@@ -6,6 +6,28 @@ common:
|
|||||||
misskey: "A ⭐ of the fediverse"
|
misskey: "A ⭐ of the fediverse"
|
||||||
about-title: "A ⭐ of the fediverse."
|
about-title: "A ⭐ of the fediverse."
|
||||||
about: "Thank you for finding Misskey. Misskey is a <b>decentralized microblogging platform</b> born on Earth. Since it exists within the Fediverse (a universe where various social media platforms are organized), it is mutually linked with other social media platforms. Why don't you take a short break from the hustle and bustle of the city, and dive into a new Internet?"
|
about: "Thank you for finding Misskey. Misskey is a <b>decentralized microblogging platform</b> born on Earth. Since it exists within the Fediverse (a universe where various social media platforms are organized), it is mutually linked with other social media platforms. Why don't you take a short break from the hustle and bustle of the city, and dive into a new Internet?"
|
||||||
|
adblock:
|
||||||
|
detected: "Please disable ad blocker."
|
||||||
|
warning: "Some features may be unavailable or cause malfunctions if ad blocking features are enabled. <strong>Misskey is not running ads</strong>."
|
||||||
|
application-authorization: "Application authorizations"
|
||||||
|
close: "Close"
|
||||||
|
do-not-copy-paste: "Please do not enter or paste the code here. Account may be compromised."
|
||||||
|
got-it: "Got it!"
|
||||||
|
customization-tips:
|
||||||
|
title: "Customization tips"
|
||||||
|
paragraph1: "Home customization allows you to add/delete, drag and drop and rearrange widgets."
|
||||||
|
paragraph2: "You can change the display by <strong><strong>right</strong> clicking</strong> on some widgets."
|
||||||
|
paragraph3: "To delete a widget, drag and drop the widget onto <strong>the area labeled \"Trash\"</strong> in the header."
|
||||||
|
paragraph4: "To finish the customization, click \"Finish\" on the upper right."
|
||||||
|
gotit: "Got it!"
|
||||||
|
notification:
|
||||||
|
file-uploaded: "File uploaded!"
|
||||||
|
message-from: "Message from {}:"
|
||||||
|
reversi-invited: "Invited to a game"
|
||||||
|
reversi-invited-by: "Invited by {}:"
|
||||||
|
notified-by: "Notified by {}:"
|
||||||
|
reply-from: "Reply from {}:"
|
||||||
|
quoted-by: "Quoted by {}:"
|
||||||
time:
|
time:
|
||||||
unknown: "unknown"
|
unknown: "unknown"
|
||||||
future: "future"
|
future: "future"
|
||||||
@@ -17,6 +39,8 @@ common:
|
|||||||
weeks_ago: "{}week(s) ago"
|
weeks_ago: "{}week(s) ago"
|
||||||
months_ago: "{}month(s) ago"
|
months_ago: "{}month(s) ago"
|
||||||
years_ago: "{}year(s) ago"
|
years_ago: "{}year(s) ago"
|
||||||
|
month-and-day: "{month}/{day}"
|
||||||
|
trash: "Trash"
|
||||||
weekday-short:
|
weekday-short:
|
||||||
sunday: "S"
|
sunday: "S"
|
||||||
monday: "M"
|
monday: "M"
|
||||||
@@ -25,6 +49,14 @@ common:
|
|||||||
thursday: "T"
|
thursday: "T"
|
||||||
friday: "F"
|
friday: "F"
|
||||||
saturday: "S"
|
saturday: "S"
|
||||||
|
weekday:
|
||||||
|
sunday: "Sunday"
|
||||||
|
monday: "Monday"
|
||||||
|
tuesday: "Tuesday"
|
||||||
|
wednesday: "Wednesday"
|
||||||
|
thursday: "Thursday"
|
||||||
|
friday: "Friday"
|
||||||
|
saturday: "Saturday"
|
||||||
reactions:
|
reactions:
|
||||||
like: "Like"
|
like: "Like"
|
||||||
love: "Love"
|
love: "Love"
|
||||||
@@ -34,14 +66,15 @@ common:
|
|||||||
congrats: "Congrats!"
|
congrats: "Congrats!"
|
||||||
angry: "Angry"
|
angry: "Angry"
|
||||||
confused: "Confused"
|
confused: "Confused"
|
||||||
|
rip: "RIP"
|
||||||
pudding: "Pudding"
|
pudding: "Pudding"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "What are you doing?"
|
a: "What are you doing?"
|
||||||
b: "What's happening?"
|
b: "What's happening?"
|
||||||
c: "What’s on your mind?"
|
c: "What’s on your mind?"
|
||||||
d: "What do you wish to say?"
|
d: "Would you post any words?"
|
||||||
e: "Write here"
|
e: "Write here"
|
||||||
f: "Waiting for your writing..."
|
f: "Waiting for your writing."
|
||||||
search: "Search"
|
search: "Search"
|
||||||
delete: "Delete"
|
delete: "Delete"
|
||||||
loading: "Loading"
|
loading: "Loading"
|
||||||
@@ -51,13 +84,21 @@ common:
|
|||||||
my-token-regenerated: "Your token has been regenerated, so you will be signed out."
|
my-token-regenerated: "Your token has been regenerated, so you will be signed out."
|
||||||
i-like-sushi: "I prefer sushi rather than pudding"
|
i-like-sushi: "I prefer sushi rather than pudding"
|
||||||
show-reversi-board-labels: "Show row and column labels in Reversi"
|
show-reversi-board-labels: "Show row and column labels in Reversi"
|
||||||
verified-user: "Verified user"
|
use-contrast-reversi-stones: "Make the stone color clear in reversi"
|
||||||
|
verified-user: "Verified account"
|
||||||
|
disable-animated-mfm: "Disable animated texts in a post"
|
||||||
|
do-not-use-in-production: 'As this is for development, do not use this in production.'
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "Draw"
|
drawn: "Draw"
|
||||||
my-turn: "Your turn"
|
my-turn: "Your turn"
|
||||||
opponent-turn: "Opponent's turn"
|
opponent-turn: "Opponent's turn"
|
||||||
turn-of: "{}'s turn"
|
turn-of: "{}'s turn"
|
||||||
past-turn-of: "{}'s turn"
|
past-turn-of: "{}'s turn"
|
||||||
|
won: "{} won"
|
||||||
|
black: "Black"
|
||||||
|
white: "White"
|
||||||
|
total: "Total"
|
||||||
|
this-turn: "Turn {}"
|
||||||
widgets:
|
widgets:
|
||||||
analog-clock: "Analog clock"
|
analog-clock: "Analog clock"
|
||||||
profile: "Profile"
|
profile: "Profile"
|
||||||
@@ -99,9 +140,76 @@ common:
|
|||||||
rename: "Rename"
|
rename: "Rename"
|
||||||
stack-left: "Stack to the left"
|
stack-left: "Stack to the left"
|
||||||
pop-right: "Dock on the right"
|
pop-right: "Dock on the right"
|
||||||
|
auth/views/form.vue:
|
||||||
|
share-access: "Would you <b>allow</b> <i>{{ app.name }}</i> to access your account?"
|
||||||
|
permission-ask: "This application requires the following permissions:"
|
||||||
|
account-read: "View account information."
|
||||||
|
account-write: "Modify account information."
|
||||||
|
note-write: "Post."
|
||||||
|
like-write: "React to posts."
|
||||||
|
following-write: "Follow and unfollow."
|
||||||
|
drive-read: "Read your drive."
|
||||||
|
drive-write: "Upload/delete files in your drive."
|
||||||
|
notification-read: "Read your notifications."
|
||||||
|
notification-write: "Manage your notifications."
|
||||||
|
cancel: "Cancel"
|
||||||
|
accept: "Allow access."
|
||||||
|
auth/views/index.vue:
|
||||||
|
loading: "Loading"
|
||||||
|
denied: "Application authorization has been denied."
|
||||||
|
denied-paragraph: "This application will not access your account."
|
||||||
|
already-authorized: "This application has already been authorized."
|
||||||
|
allowed: "Application authorizations allowed."
|
||||||
|
callback-url: "Going back to the application."
|
||||||
|
please-go-back: "Please go back to the application."
|
||||||
|
error: "Session does not exist."
|
||||||
|
sign-in: "Please sign in."
|
||||||
|
common/views/components/games/reversi/reversi.vue:
|
||||||
|
matching:
|
||||||
|
waiting-for: "Waiting for {}"
|
||||||
|
cancel: "Cancel"
|
||||||
|
common/views/components/games/reversi/reversi.game.vue:
|
||||||
|
surrender: "Surrender"
|
||||||
|
surrendered: "By surrender"
|
||||||
|
is-llotheo: "The lesser one wins(Llotheo)"
|
||||||
|
looped-map: "Looped map"
|
||||||
|
can-put-everywhere: "Can put everywhere"
|
||||||
|
common/views/components/games/reversi/reversi.index.vue:
|
||||||
|
title: "Misskey Reversi"
|
||||||
|
sub-title: "Play reversi with your friends!"
|
||||||
|
invite: "Invite"
|
||||||
|
rule: "How to play"
|
||||||
|
rule-desc: "Reversi is a strategy board game for two players, played on an 8×8 uncheckered board. There are sixty-four identical game pieces called disks (often spelled \"discs\"), which are light on one side and dark on the other. Players take turns placing disks on the board with their assigned color facing up. During a play, any disks of the opponent's color that are in a straight line and bounded by the disk just placed and another disk of the current player's color are turned over to the current player's color. The object of the game is to have the majority of disks turned to display your color when the last playable empty square is filled."
|
||||||
|
mode-invite: "Invite"
|
||||||
|
mode-invite-desc: "Game with a specified user."
|
||||||
|
invitations: "You’ve got an invitation!"
|
||||||
|
my-games: "My game"
|
||||||
|
all-games: "All games"
|
||||||
|
enter-username: "Enter a username"
|
||||||
|
game-state:
|
||||||
|
ended: "Finished"
|
||||||
|
playing: "In Progress"
|
||||||
|
common/views/components/games/reversi/reversi.room.vue:
|
||||||
|
settings-of-the-game: "Game settings"
|
||||||
|
choose-map: "Choose a map"
|
||||||
|
random: "Random"
|
||||||
|
black-or-white: "Black/White"
|
||||||
|
black-is: "Black is {}"
|
||||||
|
rules: "Rules"
|
||||||
|
is-llotheo: "The lesser side wins"
|
||||||
|
looped-map: "Looped map"
|
||||||
|
can-put-everywhere: "Can put everywhere"
|
||||||
|
settings-of-the-bot: "Bot settings"
|
||||||
|
this-game-is-started-soon: "The game will begin in seconds"
|
||||||
|
waiting-for-other: "Waiting for the opponent"
|
||||||
|
waiting-for-me: "Waiting for the your preparation"
|
||||||
|
waiting-for-both: "Prepareing"
|
||||||
|
cancel: "Cancel"
|
||||||
|
ready: "Ready"
|
||||||
|
cancel-ready: "Cancel \"Ready\""
|
||||||
common/views/components/connect-failed.vue:
|
common/views/components/connect-failed.vue:
|
||||||
title: "Unable to connect to the server"
|
title: "Unable to connect to the server"
|
||||||
description: "There is a problem with your Internet connection, or the server may be down or under maintenance. Please try again later."
|
description: "There is a problem with your Internet connection, or the server may be down or under maintenance. Please {try again} later."
|
||||||
thanks: "Thank you for using Misskey."
|
thanks: "Thank you for using Misskey."
|
||||||
troubleshoot: "Troubleshoot"
|
troubleshoot: "Troubleshoot"
|
||||||
common/views/components/connect-failed.troubleshooter.vue:
|
common/views/components/connect-failed.troubleshooter.vue:
|
||||||
@@ -120,7 +228,7 @@ common/views/components/connect-failed.troubleshooter.vue:
|
|||||||
no-server: "Unable to connect to the Misskey server"
|
no-server: "Unable to connect to the Misskey server"
|
||||||
no-server-desc: "The network connection of your device is normal, but you could not connect to the Misskey server. There is a possibility that the server is either down, or under maintenance, please try again later."
|
no-server-desc: "The network connection of your device is normal, but you could not connect to the Misskey server. There is a possibility that the server is either down, or under maintenance, please try again later."
|
||||||
success: "Successfully connected to the Misskey server"
|
success: "Successfully connected to the Misskey server"
|
||||||
success-desc: "It seems to be able to connect. Please reload the page."
|
success-desc: "Looks like we have a connection. Please reload the page."
|
||||||
flush: "Clean cache"
|
flush: "Clean cache"
|
||||||
set-version: "Specify version"
|
set-version: "Specify version"
|
||||||
common/views/components/messaging.vue:
|
common/views/components/messaging.vue:
|
||||||
@@ -133,11 +241,13 @@ common/views/components/messaging-room.vue:
|
|||||||
no-history: "There is no further history"
|
no-history: "There is no further history"
|
||||||
resize-form: "Drag to resize"
|
resize-form: "Drag to resize"
|
||||||
new-message: "New message"
|
new-message: "New message"
|
||||||
|
only-one-file-attached: "Only ONE file can be attached to a message."
|
||||||
common/views/components/messaging-room.form.vue:
|
common/views/components/messaging-room.form.vue:
|
||||||
input-message-here: "Enter message here"
|
input-message-here: "Enter message here"
|
||||||
send: "Send"
|
send: "Send"
|
||||||
attach-from-local: "Attach files from your device"
|
attach-from-local: "Attach files from your device"
|
||||||
attach-from-drive: "Attach files from your Drive"
|
attach-from-drive: "Attach files from your Drive"
|
||||||
|
only-one-file-attached: "Only one file can be attached to the message."
|
||||||
common/views/components/messaging-room.message.vue:
|
common/views/components/messaging-room.message.vue:
|
||||||
is-read: "Read"
|
is-read: "Read"
|
||||||
deleted: "This message has been deleted"
|
deleted: "This message has been deleted"
|
||||||
@@ -151,11 +261,13 @@ common/views/components/nav.vue:
|
|||||||
develop: "Developers"
|
develop: "Developers"
|
||||||
feedback: "Feedback"
|
feedback: "Feedback"
|
||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
|
detail: "Details"
|
||||||
|
copy-link: "Copy link"
|
||||||
favorite: "Favorite this note"
|
favorite: "Favorite this note"
|
||||||
pin: "Pin to your profile page"
|
pin: "Pin to your profile"
|
||||||
delete: "Delete"
|
delete: "Delete"
|
||||||
delete-confirm: "Delete this post for sure?"
|
delete-confirm: "Delete this post?"
|
||||||
remote: "Show the originating note"
|
remote: "Show original note"
|
||||||
common/views/components/poll.vue:
|
common/views/components/poll.vue:
|
||||||
vote-to: "Vote for '{}'"
|
vote-to: "Vote for '{}'"
|
||||||
vote-count: "{} votes"
|
vote-count: "{} votes"
|
||||||
@@ -164,30 +276,35 @@ common/views/components/poll.vue:
|
|||||||
show-result: "Show results"
|
show-result: "Show results"
|
||||||
voted: "Voted"
|
voted: "Voted"
|
||||||
common/views/components/poll-editor.vue:
|
common/views/components/poll-editor.vue:
|
||||||
no-only-one-choice: "At least two choices are required for this survey."
|
no-only-one-choice: "At least two choices are required"
|
||||||
choice-n: "Choice {}"
|
choice-n: "Choice {}"
|
||||||
remove: "Delete this choice"
|
remove: "Delete the choice"
|
||||||
add: "+ Add a choice"
|
add: "+ Add a choice"
|
||||||
destroy: "Discard the poll"
|
destroy: "Discard the poll"
|
||||||
common/views/components/reaction-picker.vue:
|
common/views/components/reaction-picker.vue:
|
||||||
choose-reaction: "Express a reaction"
|
choose-reaction: "Send a reaction"
|
||||||
common/views/components/signin.vue:
|
common/views/components/signin.vue:
|
||||||
username: "Username"
|
username: "Username"
|
||||||
password: "Password"
|
password: "Password"
|
||||||
token: "Token"
|
token: "Token"
|
||||||
signing-in: "Signing in..."
|
signing-in: "Signing in..."
|
||||||
signin: "Sign in"
|
signin: "Sign in"
|
||||||
|
or: "Or"
|
||||||
|
signin-with-twitter: "Log in with Twitter"
|
||||||
|
login-failed: "Log in failed. Make sure you have entered your correct username and password."
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
|
invitation-code: "Invitation code"
|
||||||
|
invitation-info: "If you do not have an invitation code, please contact an <a href=\"{}\">administrator</a>."
|
||||||
username: "Username"
|
username: "Username"
|
||||||
checking: "Checking..."
|
checking: "Confirming..."
|
||||||
available: "Available"
|
available: "Available"
|
||||||
unavailable: "Unavailable"
|
unavailable: "Unavailable"
|
||||||
error: "Network error"
|
error: "Network error"
|
||||||
invalid-format: "Only use letters, numbers and -."
|
invalid-format: "letters, numbers and _ are acceptable."
|
||||||
too-short: "Please enter at least 1 character!"
|
too-short: "Should not be blank!"
|
||||||
too-long: "Please enter up to 20 characters."
|
too-long: "Enter within 20 characters."
|
||||||
password: "Password"
|
password: "Password"
|
||||||
password-placeholder: "We recommend more than 8 characters."
|
password-placeholder: "More than 8 characters are recommended."
|
||||||
weak-password: "Weak password"
|
weak-password: "Weak password"
|
||||||
normal-password: "Fair password"
|
normal-password: "Fair password"
|
||||||
strong-password: "Strong password"
|
strong-password: "Strong password"
|
||||||
@@ -217,20 +334,30 @@ common/views/components/uploader.vue:
|
|||||||
common/views/components/visibility-chooser.vue:
|
common/views/components/visibility-chooser.vue:
|
||||||
public: "Public"
|
public: "Public"
|
||||||
home: "Home"
|
home: "Home"
|
||||||
home-desc: "Post to the home timeline only"
|
home-desc: "Post to Home only"
|
||||||
followers: "Followers"
|
followers: "Followers"
|
||||||
followers-desc: "Post to followers only"
|
followers-desc: "Post to Followers only"
|
||||||
specified: "Direct"
|
specified: "Direct"
|
||||||
specified-desc: "Post to specified users only"
|
specified-desc: "Post to specified users only"
|
||||||
private: "Private"
|
private: "Private"
|
||||||
|
common/views/components/trends.vue:
|
||||||
|
count: "{} users mentioned"
|
||||||
|
empty: "No popular hashtag trends"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "Fetching"
|
fetching: "Fetching"
|
||||||
no-broadcasts: "No announcements"
|
no-broadcasts: "No announcements"
|
||||||
have-a-nice-day: "Have a nice day!"
|
have-a-nice-day: "Have a nice day!"
|
||||||
next: "Next"
|
next: "Next"
|
||||||
|
common/views/widgets/calendar.vue:
|
||||||
|
year: "Year {}"
|
||||||
|
month: "{},"
|
||||||
|
day: "{}"
|
||||||
|
today: "Today: "
|
||||||
|
this-month: "This month: "
|
||||||
|
this-year: "This year: "
|
||||||
common/views/widgets/donation.vue:
|
common/views/widgets/donation.vue:
|
||||||
title: "Request for donations"
|
title: "Request for donations"
|
||||||
text: "To keep Misskey up and running, we have to spend money on our domain name, the server costs and so on. Since we don't receive money from advertisements, we count on donations from all of you. If you're interested in helping, contact {}. Thank you for your contribution!"
|
text: "To keep Misskey up and running, there have to happen some expense for the domain name, the server and so on. Since our policy is not to display any advertisements, we count on your donations. If you're interested in helping, contact {}. Thank you for your contribution!"
|
||||||
common/views/widgets/photo-stream.vue:
|
common/views/widgets/photo-stream.vue:
|
||||||
title: "Photo stream"
|
title: "Photo stream"
|
||||||
no-photos: "No photos"
|
no-photos: "No photos"
|
||||||
@@ -239,8 +366,6 @@ common/views/widgets/posts-monitor.vue:
|
|||||||
toggle: "Toggle views"
|
toggle: "Toggle views"
|
||||||
common/views/widgets/hashtags.vue:
|
common/views/widgets/hashtags.vue:
|
||||||
title: "Hashtags"
|
title: "Hashtags"
|
||||||
count: "{} users mentioned"
|
|
||||||
empty: "No popular hashtag trends"
|
|
||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "Server info"
|
title: "Server info"
|
||||||
toggle: "Toggle views"
|
toggle: "Toggle views"
|
||||||
@@ -248,12 +373,49 @@ common/views/widgets/memo.vue:
|
|||||||
title: "Sticky note"
|
title: "Sticky note"
|
||||||
memo: "Write here!"
|
memo: "Write here!"
|
||||||
save: "Save"
|
save: "Save"
|
||||||
|
common/views/widgets/slideshow.vue:
|
||||||
|
folder-customize-mode: "To specify a folder, please exit customize mode"
|
||||||
|
folder: "Please click and specify a folder"
|
||||||
|
no-image: "There is no image in this folder"
|
||||||
|
common/views/widgets/tips.vue:
|
||||||
|
tips-line1: "You can focus on the timeline with <kbd>t</kbd>."
|
||||||
|
tips-line2: "Open posting form with <kbd>p</kbd> or <kbd>n</kbd>."
|
||||||
|
tips-line3: "You can drag and drop files on the post form."
|
||||||
|
tips-line4: "You can paste an image from the clipboard into the submission form."
|
||||||
|
tips-line5: "You can upload files by dragging and dropping them to Drive."
|
||||||
|
tips-line6: "You can move a folder by dragging it within the Drive."
|
||||||
|
tips-line7: "You can move folders by dragging them within the Drive."
|
||||||
|
tips-line8: "Home can be customized from the settings."
|
||||||
|
tips-line9: "Misskey is licensed under AGPLv3."
|
||||||
|
tips-line10: "Using the Time Machine widget makes it easy to trace back to the past timeline."
|
||||||
|
tips-line11: "You can pin posts to user page by clicking on \"...\""
|
||||||
|
tips-line13: "All the files attached to the post are saved to Drive."
|
||||||
|
tips-line14: "While customizing the home, you can right click on the widget and change the design."
|
||||||
|
tips-line17: "Surrounding the text with ** ** will highlight it."
|
||||||
|
tips-line19: "Several windows can be detached outside the browser."
|
||||||
|
tips-line20: "The percentage of the calendar widget shows the percentage of time elapsed."
|
||||||
|
tips-line21: "You can also use the API to develop bots."
|
||||||
|
tips-line23: "Mayu is so cute with its eyebrows."
|
||||||
|
tips-line24: "Misskey has been running since 2014."
|
||||||
|
tips-line25: "In a browser compatible with notification features, you can receive notifications in case Misskey is not open"
|
||||||
common/views/pages/follow.vue:
|
common/views/pages/follow.vue:
|
||||||
signed-in-as: "Signed in as {}"
|
signed-in-as: "Signed in as {}"
|
||||||
following: "Following"
|
following: "Following"
|
||||||
follow: "Follow"
|
follow: "Follow"
|
||||||
request-pending: "Pending follow request"
|
request-pending: "Pending follow request"
|
||||||
follow-request: "Follow request"
|
follow-request: "Follow request"
|
||||||
|
desktop:
|
||||||
|
banner-crop-title: "Crop the part that appears as a banner"
|
||||||
|
banner: "Banner"
|
||||||
|
uploading-banner: "Uploading a new banner"
|
||||||
|
banner-updated: "Successfully updated the banner"
|
||||||
|
choose-banner: "Choose the banner"
|
||||||
|
avatar-crop-title: "Crop the part that appears as an avatar"
|
||||||
|
avatar: "Avatar"
|
||||||
|
uploading-avatar: "Uploading a new avatar"
|
||||||
|
avatar-updated: "Successfully updated the avatar"
|
||||||
|
choose-avatar: "Select an image for the avatar"
|
||||||
|
invalid-filetype: "This filetype is not acceptable here"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
@@ -267,6 +429,24 @@ desktop/views/components/calendar.vue:
|
|||||||
prev: "Previous month"
|
prev: "Previous month"
|
||||||
next: "Next month"
|
next: "Next month"
|
||||||
go: "Click to navigate"
|
go: "Click to navigate"
|
||||||
|
desktop/views/components/charts.vue:
|
||||||
|
title: "Charts"
|
||||||
|
per-day: "per Day"
|
||||||
|
per-hour: "per Hour"
|
||||||
|
notes: "Posts"
|
||||||
|
users: "Users"
|
||||||
|
drive: "Drive"
|
||||||
|
charts:
|
||||||
|
notes: "The number of posts: increase/decrease (Combined)"
|
||||||
|
local-notes: "The number of posts: increase/decrease (Local)"
|
||||||
|
remote-notes: "The number of posts: increase/decrease (Remote)"
|
||||||
|
notes-total: "The number of posts: cumulative total"
|
||||||
|
users: "The number of users: increase/decrease"
|
||||||
|
users-total: "The number of users: cumulative total"
|
||||||
|
drive: "Capacity used as the storage: increase/decrease"
|
||||||
|
drive-total: "Capacity used as the storage: cumulative total"
|
||||||
|
drive-files: "The number of files on the storage: increase/decrease"
|
||||||
|
drive-files-total: "The number of files on the storage: cumulative total"
|
||||||
desktop/views/components/choose-file-from-drive-window.vue:
|
desktop/views/components/choose-file-from-drive-window.vue:
|
||||||
choose-file: "Choose files"
|
choose-file: "Choose files"
|
||||||
upload: "Upload files from your device"
|
upload: "Upload files from your device"
|
||||||
@@ -287,6 +467,7 @@ desktop/views/components/drive-window.vue:
|
|||||||
desktop/views/components/drive.file.vue:
|
desktop/views/components/drive.file.vue:
|
||||||
avatar: "Avatar"
|
avatar: "Avatar"
|
||||||
banner: "Banner"
|
banner: "Banner"
|
||||||
|
nsfw: "NSFW"
|
||||||
contextmenu:
|
contextmenu:
|
||||||
rename: "Rename"
|
rename: "Rename"
|
||||||
mark-as-sensitive: "Mark as 'sensitive'"
|
mark-as-sensitive: "Mark as 'sensitive'"
|
||||||
@@ -301,7 +482,7 @@ desktop/views/components/drive.file.vue:
|
|||||||
rename-file: "Rename file"
|
rename-file: "Rename file"
|
||||||
input-new-file-name: "Enter new name"
|
input-new-file-name: "Enter new name"
|
||||||
copied: "Copied"
|
copied: "Copied"
|
||||||
copied-url-to-clipboard: "Copied URL to clipboard"
|
copied-url-to-clipboard: "URL has been copied to clipboard"
|
||||||
desktop/views/components/drive.folder.vue:
|
desktop/views/components/drive.folder.vue:
|
||||||
unable-to-process: "The operation could not be completed."
|
unable-to-process: "The operation could not be completed."
|
||||||
circular-reference-detected: "The destination folder is a subfolder of the folder you wish to move."
|
circular-reference-detected: "The destination folder is a subfolder of the folder you wish to move."
|
||||||
@@ -317,7 +498,7 @@ desktop/views/components/drive.nav-folder.vue:
|
|||||||
desktop/views/components/drive.vue:
|
desktop/views/components/drive.vue:
|
||||||
search: "Search"
|
search: "Search"
|
||||||
load-more: "Load more"
|
load-more: "Load more"
|
||||||
empty-draghover: "Drop it here, don't I look cute?"
|
empty-draghover: "Drop it here! Yep, cuz you know I'm cute, right?"
|
||||||
empty-drive: "Your media storage is empty"
|
empty-drive: "Your media storage is empty"
|
||||||
empty-drive-description: "Right-click to open the menu, or drag and drop a file onto here for uploading."
|
empty-drive-description: "Right-click to open the menu, or drag and drop a file onto here for uploading."
|
||||||
empty-folder: "This folder is empty"
|
empty-folder: "This folder is empty"
|
||||||
@@ -327,7 +508,7 @@ desktop/views/components/drive.vue:
|
|||||||
url-upload: "Upload from a URL"
|
url-upload: "Upload from a URL"
|
||||||
url-of-file: "URL of file you want to upload"
|
url-of-file: "URL of file you want to upload"
|
||||||
url-upload-requested: "Upload requested"
|
url-upload-requested: "Upload requested"
|
||||||
may-take-time: "It may take some time for the upload to complete."
|
may-take-time: "It may take some time until the upload is complete."
|
||||||
create-folder: "Create a folder"
|
create-folder: "Create a folder"
|
||||||
folder-name: "Folder name"
|
folder-name: "Folder name"
|
||||||
contextmenu:
|
contextmenu:
|
||||||
@@ -335,7 +516,7 @@ desktop/views/components/drive.vue:
|
|||||||
upload: "Upload a file"
|
upload: "Upload a file"
|
||||||
url-upload: "Upload from a URL"
|
url-upload: "Upload from a URL"
|
||||||
desktop/views/components/media-image.vue:
|
desktop/views/components/media-image.vue:
|
||||||
sensitive: "The content is NSFW"
|
sensitive: "NSFW"
|
||||||
click-to-show: "Click to show"
|
click-to-show: "Click to show"
|
||||||
desktop/views/components/media-video.vue:
|
desktop/views/components/media-video.vue:
|
||||||
sensitive: "The content is NSFW"
|
sensitive: "The content is NSFW"
|
||||||
@@ -352,7 +533,7 @@ desktop/views/components/followers.vue:
|
|||||||
desktop/views/components/following-window.vue:
|
desktop/views/components/following-window.vue:
|
||||||
following: "Following {}"
|
following: "Following {}"
|
||||||
desktop/views/components/following.vue:
|
desktop/views/components/following.vue:
|
||||||
empty: "You don’t follow anyone."
|
empty: "It seems you don't have any following users…"
|
||||||
desktop/views/components/friends-maker.vue:
|
desktop/views/components/friends-maker.vue:
|
||||||
title: "Recommended users:"
|
title: "Recommended users:"
|
||||||
empty: "Couldn't find any recommended users."
|
empty: "Couldn't find any recommended users."
|
||||||
@@ -374,8 +555,8 @@ desktop/views/components/messaging-window.vue:
|
|||||||
title: "Messaging"
|
title: "Messaging"
|
||||||
desktop/views/components/note-detail.vue:
|
desktop/views/components/note-detail.vue:
|
||||||
more: "Load more conversations"
|
more: "Load more conversations"
|
||||||
private: "This post is private"
|
private: "Post is private"
|
||||||
deleted: "This post has been removed"
|
deleted: "Post has been removed"
|
||||||
reposted-by: "Reposted by {}"
|
reposted-by: "Reposted by {}"
|
||||||
location: "Location"
|
location: "Location"
|
||||||
renote: "Repost"
|
renote: "Repost"
|
||||||
@@ -386,8 +567,10 @@ desktop/views/components/notes.note.vue:
|
|||||||
renote: "Repost"
|
renote: "Repost"
|
||||||
add-reaction: "Add a reaction"
|
add-reaction: "Add a reaction"
|
||||||
detail: "Show details"
|
detail: "Show details"
|
||||||
private: "This post is private"
|
private: "Post is private"
|
||||||
deleted: "The post has been deleted"
|
deleted: "Post has been deleted"
|
||||||
|
hide: "Hide"
|
||||||
|
see-more: "See more"
|
||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "Loading failed."
|
error: "Loading failed."
|
||||||
retry: "Retry"
|
retry: "Retry"
|
||||||
@@ -396,15 +579,18 @@ desktop/views/components/notifications.vue:
|
|||||||
more: "More"
|
more: "More"
|
||||||
empty: "No notifications!"
|
empty: "No notifications!"
|
||||||
desktop/views/components/post-form.vue:
|
desktop/views/components/post-form.vue:
|
||||||
reply-placeholder: "Reply to this note..."
|
add-visible-user: "+Add a user"
|
||||||
quote-placeholder: "Quote this note..."
|
attach-location-information: "Attach location information"
|
||||||
|
hide-contents: "Hide contents"
|
||||||
|
reply-placeholder: "Reply to this post..."
|
||||||
|
quote-placeholder: "Quote this Post..."
|
||||||
submit: "Post"
|
submit: "Post"
|
||||||
reply: "Reply"
|
reply: "Reply"
|
||||||
renote: "Repost"
|
renote: "Repost"
|
||||||
posted: "Posted!"
|
posted: "Posted!"
|
||||||
replied: "Replied!"
|
replied: "Replied!"
|
||||||
reposted: "Reposted!"
|
reposted: "Reposted!"
|
||||||
note-failed: "Failed to post the note"
|
note-failed: "Failed to post"
|
||||||
reply-failed: "Failed to reply"
|
reply-failed: "Failed to reply"
|
||||||
renote-failed: "Failed to repost"
|
renote-failed: "Failed to repost"
|
||||||
posting: "Posting"
|
posting: "Posting"
|
||||||
@@ -416,8 +602,13 @@ desktop/views/components/post-form.vue:
|
|||||||
text-remain: "{} characters remaining"
|
text-remain: "{} characters remaining"
|
||||||
recent-tags: "Recent"
|
recent-tags: "Recent"
|
||||||
click-to-tagging: "Click to tagging"
|
click-to-tagging: "Click to tagging"
|
||||||
|
visibility: "Visibility"
|
||||||
|
geolocation-alert: "Your device does not provide location services."
|
||||||
|
error: "Error"
|
||||||
|
enter-username: "Please enter a username..."
|
||||||
|
annotations: "Annotations for the post (optional)"
|
||||||
desktop/views/components/post-form-window.vue:
|
desktop/views/components/post-form-window.vue:
|
||||||
note: "New note"
|
note: "New Post"
|
||||||
reply: "Reply"
|
reply: "Reply"
|
||||||
attaches: "{} media attached"
|
attaches: "{} media attached"
|
||||||
uploading-media: "Uploading {} media"
|
uploading-media: "Uploading {} media"
|
||||||
@@ -429,9 +620,9 @@ desktop/views/components/renote-form.vue:
|
|||||||
renote: "Repost"
|
renote: "Repost"
|
||||||
reposting: "Reposting..."
|
reposting: "Reposting..."
|
||||||
success: "Reposted!"
|
success: "Reposted!"
|
||||||
failure: "Repost failed"
|
failure: "Failed to Repost"
|
||||||
desktop/views/components/renote-form-window.vue:
|
desktop/views/components/renote-form-window.vue:
|
||||||
title: "Are you sure you want to repost this?"
|
title: "Do you want to Repost it?"
|
||||||
desktop/views/components/settings-window.vue:
|
desktop/views/components/settings-window.vue:
|
||||||
settings: "Settings"
|
settings: "Settings"
|
||||||
desktop/views/components/settings.vue:
|
desktop/views/components/settings.vue:
|
||||||
@@ -450,7 +641,7 @@ desktop/views/components/settings.vue:
|
|||||||
fetch-on-scroll: "Endless loading on scroll"
|
fetch-on-scroll: "Endless loading on scroll"
|
||||||
fetch-on-scroll-desc: "When you scroll down the page, it automatically fetches additional content."
|
fetch-on-scroll-desc: "When you scroll down the page, it automatically fetches additional content."
|
||||||
auto-popout: "Auto pop-out window"
|
auto-popout: "Auto pop-out window"
|
||||||
auto-popout-desc: "Pops-out a newly opened window (onto a new tab), if possible. This setting is stored in the browser."
|
auto-popout-desc: "If it's possible, pop-out display will be used instead of opening a new window. This setting is stored in your browser."
|
||||||
advanced: "Advanced settings"
|
advanced: "Advanced settings"
|
||||||
api-via-stream: "API request via stream"
|
api-via-stream: "API request via stream"
|
||||||
api-via-stream-desc: "API request is performed via the WebSocket connection instead of native fetch API (for better performance). This setting is stored in the browser."
|
api-via-stream-desc: "API request is performed via the WebSocket connection instead of native fetch API (for better performance). This setting is stored in the browser."
|
||||||
@@ -460,13 +651,17 @@ desktop/views/components/settings.vue:
|
|||||||
delete-wallpaper: "Remove background"
|
delete-wallpaper: "Remove background"
|
||||||
dark-mode: "Dark Mode"
|
dark-mode: "Dark Mode"
|
||||||
circle-icons: "Use circle icons"
|
circle-icons: "Use circle icons"
|
||||||
|
contrasted-acct: "Add contrast to username"
|
||||||
gradient-window-header: "Use gradients on window headers"
|
gradient-window-header: "Use gradients on window headers"
|
||||||
post-form-on-timeline: "Display post form at the top of the timeline"
|
post-form-on-timeline: "Display post form at the top of the timeline"
|
||||||
|
suggest-recent-hashtags: "Show recent popular hashtags on the post form"
|
||||||
|
show-clock-on-header: "Show clock on upper-right"
|
||||||
show-reply-target: "Display reply target"
|
show-reply-target: "Display reply target"
|
||||||
show-my-renotes: "Show my reposts in the timeline"
|
show-my-renotes: "Show my renotes in the timeline"
|
||||||
show-renoted-my-notes: "Show my posts that have been shared in the timeline"
|
show-renoted-my-notes: "Show renoted my posts in timelines"
|
||||||
show-maps: "Show the map"
|
show-local-renotes: "Show renoted local posts in timelines"
|
||||||
show-maps-desc: "Automatically show the location on the map attached to this post."
|
show-maps: "Display a map to show the location"
|
||||||
|
show-maps-desc: "If there comes a post contains location information, show a map to display the location."
|
||||||
sound: "Sound"
|
sound: "Sound"
|
||||||
enable-sounds: "Enable sound"
|
enable-sounds: "Enable sound"
|
||||||
enable-sounds-desc: "Play a sound when you receive a post/message. This setting is stored in the browser."
|
enable-sounds-desc: "Play a sound when you receive a post/message. This setting is stored in the browser."
|
||||||
@@ -511,31 +706,34 @@ desktop/views/components/settings.vue:
|
|||||||
third-parties: "Third-parties"
|
third-parties: "Third-parties"
|
||||||
desktop/views/components/settings.2fa.vue:
|
desktop/views/components/settings.2fa.vue:
|
||||||
intro: "If you set up 2-step verification, you will not only need a password at sign-in, but also a pre-registered physical device (such as your smartphone), which will improve security."
|
intro: "If you set up 2-step verification, you will not only need a password at sign-in, but also a pre-registered physical device (such as your smartphone), which will improve security."
|
||||||
detail: "See details..."
|
detail: "Details…"
|
||||||
url: "https://www.google.com/landing/2step/"
|
url: "https://www.google.com/landing/2step/"
|
||||||
caution: "If you lose access to your device, you won't be able to connect to Misskey anymore!"
|
caution: "If you lose access to your registered device, you won't be able to connect to Misskey anymore!"
|
||||||
register: "Register a device"
|
register: "Register a device"
|
||||||
already-registered: "A device is already registered"
|
already-registered: "This device is already registered"
|
||||||
unregister: "Disable"
|
unregister: "Unregister"
|
||||||
unregistered: "Two-factor authentication has been disabled."
|
unregistered: "Two-factor authentication has been disabled."
|
||||||
enter-password: "Enter the password"
|
enter-password: "Enter the password"
|
||||||
authenticator: "First, you need to install Google Authenticator on your device:"
|
authenticator: "First, you need to install Google Authenticator on your device:"
|
||||||
howtoinstall: "How to install"
|
howtoinstall: "How to install"
|
||||||
scan: "And then, scan the QR code:"
|
scan: "And then, scan the QR code:"
|
||||||
done: "Please enter the token displaying on your device:"
|
done: "Please enter the token displayed on your device:"
|
||||||
submit: "Submit"
|
submit: "Submit"
|
||||||
success: "Settings saved!"
|
success: "Settings saved!"
|
||||||
failed: "Failed to setup. Please ensure that the token is correct."
|
failed: "Failed to setup. Please ensure that the token is correct."
|
||||||
info: "From now on, enter the token that is displayed on your device in addition to your password when signing-in to Misskey."
|
info: "From the next time you sign in to Misskey, the token displayed on your device will be necessary too, as well as the password."
|
||||||
desktop/views/components/settings.api.vue:
|
desktop/views/components/settings.api.vue:
|
||||||
intro: "To access the API, set this token as the key 'i' of request parameters."
|
intro: "To access the API, set this token as the key 'i' of request parameters."
|
||||||
caution: "Please do not show this token to third parties (do not enter it somewhere else other than here) otherwise your account could get compromised."
|
caution: "Do not enter this token to any apps nor tell this token to others otherwise your account may get compromised."
|
||||||
regeneration-of-token: "In the unlikely event that this token leaks out, you can regenerate it."
|
regeneration-of-token: "If your token gets leaked, you can regenerate it."
|
||||||
regenerate-token: "Regenerate the token"
|
regenerate-token: "Regenerate the token"
|
||||||
token: "Token:"
|
token: "Token:"
|
||||||
enter-password: "Please enter the password"
|
enter-password: "Please enter the password"
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "No linked applications"
|
no-apps: "No linked applications"
|
||||||
|
desktop/views/components/settings.drive.vue:
|
||||||
|
max: "Max"
|
||||||
|
in-use: "In use"
|
||||||
desktop/views/components/settings.mute.vue:
|
desktop/views/components/settings.mute.vue:
|
||||||
no-users: "No muted users"
|
no-users: "No muted users"
|
||||||
desktop/views/components/settings.password.vue:
|
desktop/views/components/settings.password.vue:
|
||||||
@@ -547,17 +745,18 @@ desktop/views/components/settings.password.vue:
|
|||||||
changed: "Password updated"
|
changed: "Password updated"
|
||||||
desktop/views/components/settings.profile.vue:
|
desktop/views/components/settings.profile.vue:
|
||||||
avatar: "Avatar"
|
avatar: "Avatar"
|
||||||
choice-avatar: "Choose an image"
|
choice-avatar: "Select an image"
|
||||||
name: "Name"
|
name: "Name"
|
||||||
location: "Location"
|
location: "Location"
|
||||||
description: "Description"
|
description: "Description"
|
||||||
birthday: "Birthday"
|
birthday: "Birthday"
|
||||||
save: "Update profile"
|
save: "Update profile"
|
||||||
locked-account: "Protect your account"
|
locked-account: "Protect your account"
|
||||||
is-locked: "Make a note private"
|
is-locked: "Make your posts private"
|
||||||
other: "Other"
|
other: "Other"
|
||||||
is-bot: "This account is a Bot"
|
is-bot: "This account is a Bot"
|
||||||
is-cat: "This account is a Cat"
|
is-cat: "This account is a Cat"
|
||||||
|
profile-updated: "Your profile has been updated"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
private: "This post is private"
|
private: "This post is private"
|
||||||
deleted: "This post has been deleted"
|
deleted: "This post has been deleted"
|
||||||
@@ -573,6 +772,7 @@ desktop/views/components/timeline.vue:
|
|||||||
list: "Lists"
|
list: "Lists"
|
||||||
desktop/views/components/ui.header.vue:
|
desktop/views/components/ui.header.vue:
|
||||||
welcome-back: "Welcome back,"
|
welcome-back: "Welcome back,"
|
||||||
|
adjective: "-san"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "Your profile"
|
profile: "Your profile"
|
||||||
drive: "Media storage"
|
drive: "Media storage"
|
||||||
@@ -580,6 +780,7 @@ desktop/views/components/ui.header.account.vue:
|
|||||||
lists: "Lists"
|
lists: "Lists"
|
||||||
follow-requests: "Follow requests"
|
follow-requests: "Follow requests"
|
||||||
customize: "Customize home layout"
|
customize: "Customize home layout"
|
||||||
|
admin: "Admin"
|
||||||
settings: "Settings"
|
settings: "Settings"
|
||||||
signout: "Sign out"
|
signout: "Sign out"
|
||||||
dark: "Submerge in dark"
|
dark: "Submerge in dark"
|
||||||
@@ -600,7 +801,8 @@ desktop/views/components/received-follow-requests-window.vue:
|
|||||||
reject: "Reject"
|
reject: "Reject"
|
||||||
desktop/views/components/user-lists-window.vue:
|
desktop/views/components/user-lists-window.vue:
|
||||||
title: "User lists"
|
title: "User lists"
|
||||||
create-list: "Create new list"
|
create-list: "Create list"
|
||||||
|
list-name: "List name"
|
||||||
desktop/views/components/user-preview.vue:
|
desktop/views/components/user-preview.vue:
|
||||||
notes: "Posts"
|
notes: "Posts"
|
||||||
following: "Following"
|
following: "Following"
|
||||||
@@ -615,6 +817,34 @@ desktop/views/components/users-list-item.vue:
|
|||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "Pop-out"
|
popout: "Pop-out"
|
||||||
close: "Close"
|
close: "Close"
|
||||||
|
desktop/views/pages/admin/admin.vue:
|
||||||
|
dashboard: "Dashboard"
|
||||||
|
drive: "Drive"
|
||||||
|
users: "Users"
|
||||||
|
update: "Updates"
|
||||||
|
desktop/views/pages/admin/admin.dashboard.vue:
|
||||||
|
dashboard: "Dashboard"
|
||||||
|
all-users: "All Users"
|
||||||
|
original-users: "Users on this instance"
|
||||||
|
all-notes: "All the posts"
|
||||||
|
original-notes: "Posts on this instance"
|
||||||
|
invite: "Invite"
|
||||||
|
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||||
|
suspend-user: "Suspend a user"
|
||||||
|
suspend: "Suspend"
|
||||||
|
suspended: "Successfully suspended."
|
||||||
|
desktop/views/pages/admin/admin.unsuspend-user.vue:
|
||||||
|
unsuspend-user: "Unsuspend users"
|
||||||
|
unsuspend: "Unsuspend"
|
||||||
|
unsuspended: "The user has successfully unsuspended."
|
||||||
|
desktop/views/pages/admin/admin.verify-user.vue:
|
||||||
|
verify-user: "User account verification settings"
|
||||||
|
verify: "Verify account"
|
||||||
|
verified: "The account is now being verified"
|
||||||
|
desktop/views/pages/admin/admin.unverify-user.vue:
|
||||||
|
unverify-user: "User account unverification settings"
|
||||||
|
unverify: "Unverify account"
|
||||||
|
unverified: "The account is now being unverified"
|
||||||
desktop/views/pages/deck/deck.tl-column.vue:
|
desktop/views/pages/deck/deck.tl-column.vue:
|
||||||
is-media-only: "Only media posts"
|
is-media-only: "Only media posts"
|
||||||
is-media-view: "Media view"
|
is-media-view: "Media view"
|
||||||
@@ -623,14 +853,23 @@ desktop/views/pages/deck/deck.note.vue:
|
|||||||
reposted-by: "Reposted by {}"
|
reposted-by: "Reposted by {}"
|
||||||
private: "This post is private"
|
private: "This post is private"
|
||||||
deleted: "This post has been deleted"
|
deleted: "This post has been deleted"
|
||||||
|
desktop/views/pages/stats/stats.vue:
|
||||||
|
all-users: "All Users"
|
||||||
|
original-users: "Users on this instance"
|
||||||
|
all-notes: "All the posts"
|
||||||
|
original-notes: "Posts on this instance"
|
||||||
desktop/views/pages/welcome.vue:
|
desktop/views/pages/welcome.vue:
|
||||||
about: "More details..."
|
about: "More details..."
|
||||||
gotit: "Got it!"
|
gotit: "Got it!"
|
||||||
signin: "Log In"
|
signin: "Log In"
|
||||||
signup: "Sign up"
|
signup: "Sign up"
|
||||||
signin-button: "Log in"
|
signin-button: "Logging in..."
|
||||||
signup-button: "Sign up"
|
signup-button: "Sign up"
|
||||||
timeline: "Timeline"
|
timeline: "Timeline"
|
||||||
|
announcements: "Announcements"
|
||||||
|
photos: "Recent uploaded"
|
||||||
|
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||||
|
info: "Information"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey storage"
|
title: "Misskey storage"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
@@ -638,28 +877,35 @@ desktop/views/pages/favorites.vue:
|
|||||||
desktop/views/pages/home-customize.vue:
|
desktop/views/pages/home-customize.vue:
|
||||||
title: "Customize home layout"
|
title: "Customize home layout"
|
||||||
desktop/views/pages/note.vue:
|
desktop/views/pages/note.vue:
|
||||||
prev: "Previous note"
|
prev: "Previous post"
|
||||||
next: "Next note"
|
next: "Next post"
|
||||||
desktop/views/pages/selectdrive.vue:
|
desktop/views/pages/selectdrive.vue:
|
||||||
title: "Choose file(s)"
|
title: "Choose file(s)"
|
||||||
ok: "OK"
|
ok: "OK"
|
||||||
cancel: "Cancel"
|
cancel: "Cancel"
|
||||||
upload: "Upload files from your device"
|
upload: "Upload files from your device"
|
||||||
|
desktop/views/pages/search.vue:
|
||||||
|
not-available: "Search feature is turned off in the settings for this instance."
|
||||||
|
not-found: "No posts were found for '{}'"
|
||||||
|
desktop/views/pages/share.vue:
|
||||||
|
share-with: "Share with {}."
|
||||||
|
desktop/views/pages/tag.vue:
|
||||||
|
no-posts-found: "No posts contains \"{}\" found."
|
||||||
desktop/views/pages/user-list.users.vue:
|
desktop/views/pages/user-list.users.vue:
|
||||||
users: "User"
|
users: "User"
|
||||||
add-user: "Add a user"
|
add-user: "Add a user"
|
||||||
username: "Username"
|
username: "Username"
|
||||||
desktop/views/pages/user/user.followers-you-know.vue:
|
desktop/views/pages/user/user.followers-you-know.vue:
|
||||||
title: "Followers you know"
|
title: "Followers you may know"
|
||||||
loading: "Loading"
|
loading: "Loading"
|
||||||
no-users: "No followers you know"
|
no-users: "No followers you know"
|
||||||
desktop/views/pages/user/user.friends.vue:
|
desktop/views/pages/user/user.friends.vue:
|
||||||
title: "Frequent mentions"
|
title: "Frequent mentions"
|
||||||
loading: "Loading"
|
loading: "Loading"
|
||||||
no-users: "No users"
|
no-users: "No frequent mentions"
|
||||||
desktop/views/pages/user/user.vue:
|
desktop/views/pages/user/user.vue:
|
||||||
is-suspended: "This account has been suspended."
|
is-suspended: "This account has been suspended."
|
||||||
is-remote: "This user is a remote user, so the information about them that you see here is not complete. "
|
is-remote: "The user is a remote user. The profile that you see here may not complete."
|
||||||
view-remote: "See their complete profile"
|
view-remote: "See their complete profile"
|
||||||
desktop/views/pages/user/user.home.vue:
|
desktop/views/pages/user/user.home.vue:
|
||||||
last-used-at: "Last active:"
|
last-used-at: "Last active:"
|
||||||
@@ -675,6 +921,8 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "Mute"
|
mute: "Mute"
|
||||||
muted: "Muting"
|
muted: "Muting"
|
||||||
unmute: "Unmute"
|
unmute: "Unmute"
|
||||||
|
push-to-a-list: "Add to list"
|
||||||
|
list-pushed: "Successfully added {user} to {list}."
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.header.vue:
|
||||||
posts: "Notes"
|
posts: "Notes"
|
||||||
following: "Following"
|
following: "Following"
|
||||||
@@ -682,18 +930,18 @@ desktop/views/pages/user/user.header.vue:
|
|||||||
is-bot: "This account is a Bot"
|
is-bot: "This account is a Bot"
|
||||||
desktop/views/pages/user/user.timeline.vue:
|
desktop/views/pages/user/user.timeline.vue:
|
||||||
default: "Posts"
|
default: "Posts"
|
||||||
with-replies: "Notes and replies"
|
with-replies: "Posts and replies"
|
||||||
with-media: "Media"
|
with-media: "Media"
|
||||||
empty: "This user doesn't seem to have posted anything yet."
|
empty: "This user doesn't seem to have posted anything yet."
|
||||||
desktop/views/widgets/messaging.vue:
|
desktop/views/widgets/messaging.vue:
|
||||||
title: "Messaging"
|
title: "Message"
|
||||||
desktop/views/widgets/notifications.vue:
|
desktop/views/widgets/notifications.vue:
|
||||||
title: "Notifications"
|
title: "Notifications"
|
||||||
settings: "Settings"
|
settings: "Settings"
|
||||||
desktop/views/widgets/polls.vue:
|
desktop/views/widgets/polls.vue:
|
||||||
title: "Polls"
|
title: "Polls"
|
||||||
refresh: "refresh"
|
refresh: "refresh"
|
||||||
nothing: "Nothing"
|
nothing: "No polls found!"
|
||||||
desktop/views/widgets/post-form.vue:
|
desktop/views/widgets/post-form.vue:
|
||||||
title: "Post"
|
title: "Post"
|
||||||
note: "Post"
|
note: "Post"
|
||||||
@@ -703,11 +951,11 @@ desktop/views/widgets/profile.vue:
|
|||||||
desktop/views/widgets/trends.vue:
|
desktop/views/widgets/trends.vue:
|
||||||
title: "Trend"
|
title: "Trend"
|
||||||
refresh: "refresh"
|
refresh: "refresh"
|
||||||
nothing: "Nothing"
|
nothing: "No trends found!"
|
||||||
desktop/views/widgets/users.vue:
|
desktop/views/widgets/users.vue:
|
||||||
title: "Recommended users"
|
title: "Recommended users"
|
||||||
refresh: "refresh"
|
refresh: "refresh"
|
||||||
no-one: "No one"
|
no-one: "Anyone!"
|
||||||
mobile/views/components/drive.vue:
|
mobile/views/components/drive.vue:
|
||||||
drive: "Media storage"
|
drive: "Media storage"
|
||||||
used: "used"
|
used: "used"
|
||||||
@@ -730,14 +978,17 @@ mobile/views/components/drive-file-chooser.vue:
|
|||||||
select-file: "Choose files"
|
select-file: "Choose files"
|
||||||
mobile/views/components/drive-folder-chooser.vue:
|
mobile/views/components/drive-folder-chooser.vue:
|
||||||
select-folder: "Choose a folder"
|
select-folder: "Choose a folder"
|
||||||
|
mobile/views/components/drive.file.vue:
|
||||||
|
nsfw: "NSFW"
|
||||||
mobile/views/components/drive.file-detail.vue:
|
mobile/views/components/drive.file-detail.vue:
|
||||||
download: "Download"
|
download: "Download"
|
||||||
rename: "Rename"
|
rename: "Rename"
|
||||||
move: "Move"
|
move: "Move"
|
||||||
hash: "Hash (md5)"
|
hash: "Hash (md5)"
|
||||||
exif: "EXIF"
|
exif: "EXIF"
|
||||||
|
nsfw: "NSFW"
|
||||||
mobile/views/components/media-image.vue:
|
mobile/views/components/media-image.vue:
|
||||||
sensitive: "The content is NSFW"
|
sensitive: "NSFW"
|
||||||
click-to-show: "Click to show"
|
click-to-show: "Click to show"
|
||||||
mobile/views/components/media-video.vue:
|
mobile/views/components/media-video.vue:
|
||||||
sensitive: "The content is NSFW"
|
sensitive: "The content is NSFW"
|
||||||
@@ -748,7 +999,7 @@ mobile/views/components/follow-button.vue:
|
|||||||
request-pending: "Pending follow request"
|
request-pending: "Pending follow request"
|
||||||
follow-request: "Follow request"
|
follow-request: "Follow request"
|
||||||
mobile/views/components/friends-maker.vue:
|
mobile/views/components/friends-maker.vue:
|
||||||
title: "Let's follow users"
|
title: "Let's follow them"
|
||||||
empty: "Featured user was not found."
|
empty: "Featured user was not found."
|
||||||
fetching: "Loading"
|
fetching: "Loading"
|
||||||
refresh: "See more"
|
refresh: "See more"
|
||||||
@@ -779,7 +1030,7 @@ mobile/views/components/notes.vue:
|
|||||||
failed: "Failed to load"
|
failed: "Failed to load"
|
||||||
retry: "Retry"
|
retry: "Retry"
|
||||||
mobile/views/components/notifications.vue:
|
mobile/views/components/notifications.vue:
|
||||||
more: "More"
|
more: "See more"
|
||||||
empty: "No notifications"
|
empty: "No notifications"
|
||||||
mobile/views/components/post-form.vue:
|
mobile/views/components/post-form.vue:
|
||||||
add-visible-user: "Add a user"
|
add-visible-user: "Add a user"
|
||||||
@@ -788,7 +1039,7 @@ mobile/views/components/post-form.vue:
|
|||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
quote-placeholder: "Quote this post... (optional)"
|
quote-placeholder: "Quote this post... (optional)"
|
||||||
reply-placeholder: "Reply to this note..."
|
reply-placeholder: "Reply to this note..."
|
||||||
cw-placeholder: "Comments about content (optional)"
|
cw-placeholder: "Comments for the post (optional)"
|
||||||
location-alert: "Your device does not provide location services"
|
location-alert: "Your device does not provide location services"
|
||||||
error: "Error"
|
error: "Error"
|
||||||
username-prompt: "Enter user name"
|
username-prompt: "Enter user name"
|
||||||
@@ -800,6 +1051,9 @@ mobile/views/components/sub-note-content.vue:
|
|||||||
mobile/views/components/timeline.vue:
|
mobile/views/components/timeline.vue:
|
||||||
empty: "No notes"
|
empty: "No notes"
|
||||||
load-more: "More"
|
load-more: "More"
|
||||||
|
mobile/views/components/ui.header.vue:
|
||||||
|
welcome-back: "Welcome back, "
|
||||||
|
adjective: "Sir"
|
||||||
mobile/views/components/ui.nav.vue:
|
mobile/views/components/ui.nav.vue:
|
||||||
timeline: "Timeline"
|
timeline: "Timeline"
|
||||||
notifications: "Notifications"
|
notifications: "Notifications"
|
||||||
@@ -811,12 +1065,13 @@ mobile/views/components/ui.nav.vue:
|
|||||||
user-lists: "Lists"
|
user-lists: "Lists"
|
||||||
widgets: "Widgets"
|
widgets: "Widgets"
|
||||||
game: "Games"
|
game: "Games"
|
||||||
darkmode: "Dark mode"
|
darkmode: "Dark theme"
|
||||||
settings: "Settings"
|
settings: "Settings"
|
||||||
|
admin: "Admin"
|
||||||
about: "About Misskey"
|
about: "About Misskey"
|
||||||
mobile/views/components/user-timeline.vue:
|
mobile/views/components/user-timeline.vue:
|
||||||
no-notes: "It seems this user hasn't posted anything yet."
|
no-notes: "It seems this user hasn't posted anything yet."
|
||||||
no-notes-with-media: "There are no notes with media attachments"
|
no-notes-with-media: "There are no posts attaching media"
|
||||||
load-more: "More"
|
load-more: "More"
|
||||||
mobile/views/components/users-list.vue:
|
mobile/views/components/users-list.vue:
|
||||||
all: "All"
|
all: "All"
|
||||||
@@ -826,10 +1081,12 @@ mobile/views/pages/favorites.vue:
|
|||||||
title: "Favorites"
|
title: "Favorites"
|
||||||
mobile/views/pages/user-lists.vue:
|
mobile/views/pages/user-lists.vue:
|
||||||
title: "Lists"
|
title: "Lists"
|
||||||
enter-list-name: "Enter list name"
|
enter-list-name: "Enter a name of the list to make"
|
||||||
mobile/views/pages/drive.vue:
|
mobile/views/pages/drive.vue:
|
||||||
drive: "Drive"
|
drive: "Drive"
|
||||||
more: "Load more"
|
more: "Load more"
|
||||||
|
mobile/views/pages/signup.vue:
|
||||||
|
lets-start: "Your account is now ready! 📦"
|
||||||
mobile/views/pages/followers.vue:
|
mobile/views/pages/followers.vue:
|
||||||
followers-of: "Followers of {}"
|
followers-of: "Followers of {}"
|
||||||
mobile/views/pages/following.vue:
|
mobile/views/pages/following.vue:
|
||||||
@@ -839,6 +1096,19 @@ mobile/views/pages/home.vue:
|
|||||||
local: "Local"
|
local: "Local"
|
||||||
hybrid: "Social"
|
hybrid: "Social"
|
||||||
global: "Global"
|
global: "Global"
|
||||||
|
mobile/views/pages/tag.vue:
|
||||||
|
no-posts-found: "No posts \"{}\" found."
|
||||||
|
mobile/views/pages/welcome.vue:
|
||||||
|
signup: "Sign up"
|
||||||
|
mobile/views/pages/widgets.vue:
|
||||||
|
dashboard: "Dashboard"
|
||||||
|
widgets-hints: "You can add/delete/rearrange widgets. To move the widget, drag \"三\". Tap \"x\" to delete the widget. Some widgets can change display by tapping."
|
||||||
|
add-widget: "Add"
|
||||||
|
customization-tips: "Customization tips"
|
||||||
|
mobile/views/pages/widgets/activity.vue:
|
||||||
|
activity: "Activity"
|
||||||
|
mobile/views/pages/share.vue:
|
||||||
|
share-with: "Share with {}."
|
||||||
mobile/views/pages/messaging.vue:
|
mobile/views/pages/messaging.vue:
|
||||||
messaging: "Messaging"
|
messaging: "Messaging"
|
||||||
mobile/views/pages/messaging-room.vue:
|
mobile/views/pages/messaging-room.vue:
|
||||||
@@ -854,6 +1124,8 @@ mobile/views/pages/note.vue:
|
|||||||
mobile/views/pages/notifications.vue:
|
mobile/views/pages/notifications.vue:
|
||||||
notifications: "Notifications"
|
notifications: "Notifications"
|
||||||
read-all: "Do you wish to mark all notifications as read?"
|
read-all: "Do you wish to mark all notifications as read?"
|
||||||
|
mobile/views/pages/games/reversi.vue:
|
||||||
|
reversi: "Reversi"
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
mobile/views/pages/settings/settings.profile.vue:
|
||||||
title: "Profile"
|
title: "Profile"
|
||||||
name: "Name"
|
name: "Name"
|
||||||
@@ -871,6 +1143,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
search: "Search"
|
search: "Search"
|
||||||
empty: "No posts were found for '{}'"
|
empty: "No posts were found for '{}'"
|
||||||
|
not-found: "No posts were found for \"{}\"."
|
||||||
mobile/views/pages/selectdrive.vue:
|
mobile/views/pages/selectdrive.vue:
|
||||||
select-file: "Choose files"
|
select-file: "Choose files"
|
||||||
mobile/views/pages/settings.vue:
|
mobile/views/pages/settings.vue:
|
||||||
@@ -882,19 +1155,24 @@ mobile/views/pages/settings.vue:
|
|||||||
specify-language: "Select your language"
|
specify-language: "Select your language"
|
||||||
design: "Design and display"
|
design: "Design and display"
|
||||||
dark-mode: "Dark Mode"
|
dark-mode: "Dark Mode"
|
||||||
i-am-under-limited-internet: "I'm under limited internet"
|
i-am-under-limited-internet: "I'm in limited bandwidth"
|
||||||
circle-icons: "Use circle icons"
|
circle-icons: "Use circle icons"
|
||||||
|
contrasted-acct: "Add contrast to username"
|
||||||
timeline: "Timeline"
|
timeline: "Timeline"
|
||||||
show-reply-target: "Show reply target"
|
show-reply-target: "Show reply target"
|
||||||
show-my-renotes: "Show my reposts"
|
show-my-renotes: "Show my reposts"
|
||||||
show-renoted-my-notes: "Show my reposted posts"
|
show-renoted-my-notes: "Show renoted my posts"
|
||||||
|
show-local-renotes: "Show renoted local posts"
|
||||||
post-style: "Post design"
|
post-style: "Post design"
|
||||||
post-style-standard: "Standard"
|
post-style-standard: "Standard"
|
||||||
post-style-smart: "Smart"
|
post-style-smart: "Smart"
|
||||||
|
notification-position: "Notification style"
|
||||||
|
notification-position-bottom: "Bottom"
|
||||||
|
notification-position-top: "Top"
|
||||||
behavior: "Behavior"
|
behavior: "Behavior"
|
||||||
fetch-on-scroll: "Endless loading on scroll"
|
fetch-on-scroll: "Endless loading on scroll"
|
||||||
disable-via-mobile: "Don't mark the post as 'from mobile'"
|
disable-via-mobile: "Don't mark the post as 'from mobile'"
|
||||||
load-raw-images: "Show attached images in high-quality"
|
load-raw-images: "Show attached images in original quality"
|
||||||
load-remote-media: "Show media from a remote server"
|
load-remote-media: "Show media from a remote server"
|
||||||
twitter: "Twitter integration"
|
twitter: "Twitter integration"
|
||||||
twitter-connect: "Connect to your Twitter account"
|
twitter-connect: "Connect to your Twitter account"
|
||||||
@@ -911,17 +1189,19 @@ mobile/views/pages/settings.vue:
|
|||||||
update-available-desc: "Updates will be applied after reloading the page"
|
update-available-desc: "Updates will be applied after reloading the page"
|
||||||
settings: "Settings"
|
settings: "Settings"
|
||||||
signout: "Sign out"
|
signout: "Sign out"
|
||||||
|
sound: "Sounds"
|
||||||
|
enable-sounds: "Enable sounds"
|
||||||
mobile/views/pages/user.vue:
|
mobile/views/pages/user.vue:
|
||||||
follows-you: "Follows you"
|
follows-you: "Follows you"
|
||||||
following: "Following"
|
following: "Following"
|
||||||
followers: "Followers"
|
followers: "Followers"
|
||||||
notes: "Notes"
|
notes: "Posts"
|
||||||
overview: "Overview"
|
overview: "Overview"
|
||||||
timeline: "Timeline"
|
timeline: "Timeline"
|
||||||
media: "Media"
|
media: "Media"
|
||||||
is-suspended: "This account has been suspended."
|
is-suspended: "This account has been suspended."
|
||||||
is-remote: "This user is a remote user, so the information you see here is not complete."
|
is-remote: "The user is a remote user. The profile that you see here may not complete."
|
||||||
view-remote: "See their complete profile"
|
view-remote: "See his/her complete profile"
|
||||||
mobile/views/pages/user/home.vue:
|
mobile/views/pages/user/home.vue:
|
||||||
recent-notes: "Recent notes"
|
recent-notes: "Recent notes"
|
||||||
images: "Images"
|
images: "Images"
|
||||||
@@ -944,8 +1224,8 @@ mobile/views/pages/user/home.photos.vue:
|
|||||||
loading: "Loading"
|
loading: "Loading"
|
||||||
no-photos: "No photos"
|
no-photos: "No photos"
|
||||||
docs:
|
docs:
|
||||||
edit-this-page-on-github: "Did you find an error or do you want to contribute to the documentation? "
|
edit-this-page-on-github: "Found a mistake or want to contribute for the documentation?"
|
||||||
edit-this-page-on-github-link: "Edit this page on Github!"
|
edit-this-page-on-github-link: "Edit this page at GitHub!"
|
||||||
api:
|
api:
|
||||||
entities:
|
entities:
|
||||||
properties: "Properties"
|
properties: "Properties"
|
||||||
@@ -956,12 +1236,14 @@ docs:
|
|||||||
require-credential: "This endpoint requires the authentication information."
|
require-credential: "This endpoint requires the authentication information."
|
||||||
require-permission: "This endpoint requires {permission} permission."
|
require-permission: "This endpoint requires {permission} permission."
|
||||||
has-limit: "There is a rate limit."
|
has-limit: "There is a rate limit."
|
||||||
duration-limit: "You can't request when a frequency of a request in during {duration} milliseconds exceeds {max} times."
|
duration-limit: "If you have sent your requests more than {max} times in {duration} milliseconds, you will be unable to send more requests."
|
||||||
min-interval-limit: "You can't request before {interval} milliseconds has passed since previous request."
|
min-interval-limit: "If {interval} milliseconds haven't passed since the last request, you can't send a request."
|
||||||
show-src: "You can view source code for this endpoint."
|
show-src: "You can view the source code for this endpoint."
|
||||||
show-src-link: "See the code on GitHub"
|
show-src-link: "See the code on GitHub"
|
||||||
generated: "This doc is generated by an API definition."
|
generated: "This document is generated by the API definition."
|
||||||
props:
|
props:
|
||||||
name: "Name"
|
name: "Name"
|
||||||
type: "Type"
|
type: "Type"
|
||||||
description: "Description"
|
description: "Description"
|
||||||
|
dev/views/index.vue:
|
||||||
|
manage-apps: "Manage apps"
|
||||||
@@ -6,6 +6,28 @@ common:
|
|||||||
misskey: "Una ⭐️ del fediverso"
|
misskey: "Una ⭐️ del fediverso"
|
||||||
about-title: "Una ⭐️ del fediverso"
|
about-title: "Una ⭐️ del fediverso"
|
||||||
about: "Gracias por encontrae Misskey. Misskey es una <b>plataforma descentralizada de microblogging</b> nacida en la Tierra. Gracias a existir dentro del Fediverso (un universo donde se organizan varias plataformas sociales) se encuentra enlazada mutuamente con otras plataformas sociales. ¿Por què no te tomas un respiro del caos de la ciudad y te sumerges es una nueva manera de entender Internet?"
|
about: "Gracias por encontrae Misskey. Misskey es una <b>plataforma descentralizada de microblogging</b> nacida en la Tierra. Gracias a existir dentro del Fediverso (un universo donde se organizan varias plataformas sociales) se encuentra enlazada mutuamente con otras plataformas sociales. ¿Por què no te tomas un respiro del caos de la ciudad y te sumerges es una nueva manera de entender Internet?"
|
||||||
|
adblock:
|
||||||
|
detected: "Por favor, desactive el bloqueador de publicidad."
|
||||||
|
warning: "<strong>Misskey no tiene anuncios publicitarios.</strong> Sin embargo, algunas características podrían no estar disponibles si el bloqueador de publicidad está habilitado."
|
||||||
|
application-authorization: "Autorizaciones de la aplicación."
|
||||||
|
close: "Cerrar"
|
||||||
|
do-not-copy-paste: "Por favor no copies código aquí. Tu cuenta puede resultar comprometida."
|
||||||
|
got-it: "¡Listo!"
|
||||||
|
customization-tips:
|
||||||
|
title: "Consejos de personalización"
|
||||||
|
paragraph1: "Customización de inicio le permite agregar, borrar, o reorganizar los accesorios."
|
||||||
|
paragraph2: "Puede cambiar la visualización de algunos accesorios haciendo <strong> click derecho.</strong>"
|
||||||
|
paragraph3: "Para borrar un widget, <strong> desplace el accesorio hasta el área etiquetada \"Papelera\"</strong> en el encabezado."
|
||||||
|
paragraph4: "Para finalizar la personalización, cliquee \"Finalizar\" en la parte de arriba a la derecha."
|
||||||
|
gotit: "¡Comprendido!"
|
||||||
|
notification:
|
||||||
|
file-uploaded: "Archivo cargado."
|
||||||
|
message-from: "Mensaje de {}:"
|
||||||
|
reversi-invited: "Invitado a un juego"
|
||||||
|
reversi-invited-by: "Invitado por {}:"
|
||||||
|
notified-by: "Notificado por {}:"
|
||||||
|
reply-from: "Respuesta de {}:"
|
||||||
|
quoted-by: "Citado por {}:"
|
||||||
time:
|
time:
|
||||||
unknown: "Desconocido"
|
unknown: "Desconocido"
|
||||||
future: "Futuro"
|
future: "Futuro"
|
||||||
@@ -17,6 +39,8 @@ common:
|
|||||||
weeks_ago: "Hace {} semana(s)"
|
weeks_ago: "Hace {} semana(s)"
|
||||||
months_ago: "Hace {} mes(es)"
|
months_ago: "Hace {} mes(es)"
|
||||||
years_ago: "Hace {} año(s)"
|
years_ago: "Hace {} año(s)"
|
||||||
|
month-and-day: "{day} de {month}"
|
||||||
|
trash: "Papelera"
|
||||||
weekday-short:
|
weekday-short:
|
||||||
sunday: "domingo"
|
sunday: "domingo"
|
||||||
monday: "lunes"
|
monday: "lunes"
|
||||||
@@ -25,8 +49,16 @@ common:
|
|||||||
thursday: "jueves"
|
thursday: "jueves"
|
||||||
friday: "viernes"
|
friday: "viernes"
|
||||||
saturday: "sábado"
|
saturday: "sábado"
|
||||||
|
weekday:
|
||||||
|
sunday: "Domingo"
|
||||||
|
monday: "Lunes"
|
||||||
|
tuesday: "Martes"
|
||||||
|
wednesday: "Miércoles"
|
||||||
|
thursday: "Jueves"
|
||||||
|
friday: "Viernes"
|
||||||
|
saturday: "Sábado"
|
||||||
reactions:
|
reactions:
|
||||||
like: "me gusta"
|
like: "Me gusta"
|
||||||
love: "amor"
|
love: "amor"
|
||||||
laugh: "risa"
|
laugh: "risa"
|
||||||
hmm: "hmm"
|
hmm: "hmm"
|
||||||
@@ -34,6 +66,7 @@ common:
|
|||||||
congrats: "felicidades"
|
congrats: "felicidades"
|
||||||
angry: "enfadado"
|
angry: "enfadado"
|
||||||
confused: "confundido"
|
confused: "confundido"
|
||||||
|
rip: "RIP"
|
||||||
pudding: "Chafado"
|
pudding: "Chafado"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "¿Qué haces?"
|
a: "¿Qué haces?"
|
||||||
@@ -42,22 +75,30 @@ common:
|
|||||||
d: "¿Quieres decir algo?"
|
d: "¿Quieres decir algo?"
|
||||||
e: "¡Escribe aquí!"
|
e: "¡Escribe aquí!"
|
||||||
f: "Esperando a que escribas algo..."
|
f: "Esperando a que escribas algo..."
|
||||||
search: "検索"
|
search: "Buscar"
|
||||||
delete: "eliminar"
|
delete: "eliminar"
|
||||||
loading: "cargando"
|
loading: "cargando"
|
||||||
ok: "OK"
|
ok: "OK"
|
||||||
update-available-title: "更新があります"
|
update-available-title: "Actualización disponible"
|
||||||
update-available: "Hay disponible una nueva versión de Misskey ({newer}, la versión actual es {current}). Refresca la página para aplicar las actualizaciones."
|
update-available: "Hay disponible una nueva versión de Misskey ({newer}, la versión actual es {current}). Refresca la página para aplicar las actualizaciones."
|
||||||
my-token-regenerated: "Tu token se ha regenerado vas a ser desconectado."
|
my-token-regenerated: "Tu token se ha regenerado vas a ser desconectado."
|
||||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
i-like-sushi: "Prefiero sushi a pudín"
|
||||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
show-reversi-board-labels: "Mostrar etiquetas de filas y columnas en Reversi"
|
||||||
verified-user: "認証済みのユーザー"
|
use-contrast-reversi-stones: "Hacer el color de la piedra claro en Reversi"
|
||||||
|
verified-user: "Cuenta verificada"
|
||||||
|
disable-animated-mfm: "Desactivar texto animado en una publicación"
|
||||||
|
do-not-use-in-production: 'Esto está en desarrollo, no usarlo para producción.'
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "引き分け"
|
drawn: "Empatado"
|
||||||
my-turn: "あなたのターンです"
|
my-turn: "Mi turno"
|
||||||
opponent-turn: "相手のターンです"
|
opponent-turn: "Turno del oponente"
|
||||||
turn-of: "{}のターンです"
|
turn-of: "Es turno de {}"
|
||||||
past-turn-of: "{}のターン"
|
past-turn-of: "Turno de {}"
|
||||||
|
won: "{} ha ganado"
|
||||||
|
black: "Negro"
|
||||||
|
white: "Blanco"
|
||||||
|
total: "Total"
|
||||||
|
this-turn: "Turno de {}"
|
||||||
widgets:
|
widgets:
|
||||||
analog-clock: "Reloj analógico"
|
analog-clock: "Reloj analógico"
|
||||||
profile: "Perfil"
|
profile: "Perfil"
|
||||||
@@ -86,7 +127,7 @@ common:
|
|||||||
widgets: "Accesorios"
|
widgets: "Accesorios"
|
||||||
home: "Inicio"
|
home: "Inicio"
|
||||||
local: "Local"
|
local: "Local"
|
||||||
hybrid: "ソーシャル"
|
hybrid: "Social"
|
||||||
global: "Global"
|
global: "Global"
|
||||||
notifications: "Notificaciones"
|
notifications: "Notificaciones"
|
||||||
list: "Listado"
|
list: "Listado"
|
||||||
@@ -99,6 +140,73 @@ common:
|
|||||||
rename: "Renombrar"
|
rename: "Renombrar"
|
||||||
stack-left: "A la izqda."
|
stack-left: "A la izqda."
|
||||||
pop-right: "A la dcha."
|
pop-right: "A la dcha."
|
||||||
|
auth/views/form.vue:
|
||||||
|
share-access: "¿Deseas <b>permitir</b> a <i>{{ app.name }}</i> acceder a tu cuenta?"
|
||||||
|
permission-ask: "La aplicación requiere los siguientes permisos:"
|
||||||
|
account-read: "Viendo información de la cuenta:"
|
||||||
|
account-write: "Modificar información de la cuenta:"
|
||||||
|
note-write: "Publicación."
|
||||||
|
like-write: "Para reaccionar a las publicaciones."
|
||||||
|
following-write: "Seguir o dejar de seguir"
|
||||||
|
drive-read: "Leer tu unidad."
|
||||||
|
drive-write: "Cargar o borrar archivos de tu unidad."
|
||||||
|
notification-read: "Leer tus notificaciones."
|
||||||
|
notification-write: "Administrar tus notificaciones."
|
||||||
|
cancel: "Cancelar"
|
||||||
|
accept: "Garantizar acceso."
|
||||||
|
auth/views/index.vue:
|
||||||
|
loading: "Cargando"
|
||||||
|
denied: "Acceso de aplicación denegado."
|
||||||
|
denied-paragraph: "Esta aplicación no tendrá acceso a tu cuenta."
|
||||||
|
already-authorized: "Esta aplicación ha sido previamente autorizada."
|
||||||
|
allowed: "Accesos de aplicaciones autorizados."
|
||||||
|
callback-url: "Volviendo a la aplicación."
|
||||||
|
please-go-back: "Por favor, vuelve a la aplicación."
|
||||||
|
error: "Esta sesión no existe."
|
||||||
|
sign-in: "Por favor inicia sesión."
|
||||||
|
common/views/components/games/reversi/reversi.vue:
|
||||||
|
matching:
|
||||||
|
waiting-for: "Esperando por {}"
|
||||||
|
cancel: "Cancelar"
|
||||||
|
common/views/components/games/reversi/reversi.game.vue:
|
||||||
|
surrender: "Rendirse"
|
||||||
|
surrendered: "Por rendirse"
|
||||||
|
is-llotheo: "El último gana (Llotheo)"
|
||||||
|
looped-map: "Mapa en bucle"
|
||||||
|
can-put-everywhere: "Puedes colocar donde quieras"
|
||||||
|
common/views/components/games/reversi/reversi.index.vue:
|
||||||
|
title: "Misskey Reversi"
|
||||||
|
sub-title: "¡Juega Reversi con tus amigos!"
|
||||||
|
invite: "Invitar"
|
||||||
|
rule: "Cómo jugar"
|
||||||
|
rule-desc: "リバーシは、相手と交互に石をボードに置いて、相手の石を挟んで自分の色に変えてゆき、最終的に残った石が多い方が勝ちというボードゲームです。"
|
||||||
|
mode-invite: "Invitar"
|
||||||
|
mode-invite-desc: "Invitar un usuario al juego."
|
||||||
|
invitations: "¡Has recibido una invitación!"
|
||||||
|
my-games: "Mis juegos"
|
||||||
|
all-games: "Todos los juegos"
|
||||||
|
enter-username: "Ingresar nombre de usuario"
|
||||||
|
game-state:
|
||||||
|
ended: "Finalizado"
|
||||||
|
playing: "En progreso"
|
||||||
|
common/views/components/games/reversi/reversi.room.vue:
|
||||||
|
settings-of-the-game: "Configuración de juego"
|
||||||
|
choose-map: "Elije un mapa"
|
||||||
|
random: "Aleatorio"
|
||||||
|
black-or-white: "Negro/Blanco"
|
||||||
|
black-is: "Negro es {}"
|
||||||
|
rules: "Reglas"
|
||||||
|
is-llotheo: "El que tenga menos gana"
|
||||||
|
looped-map: "Mapa en bucle"
|
||||||
|
can-put-everywhere: "Puedes colocar donde quieras"
|
||||||
|
settings-of-the-bot: "Configuración de bot"
|
||||||
|
this-game-is-started-soon: "El juego comenzará pronto"
|
||||||
|
waiting-for-other: "Esperando a que se prepare el adversario"
|
||||||
|
waiting-for-me: "Esperando por la preparación"
|
||||||
|
waiting-for-both: "Esperando por ti"
|
||||||
|
cancel: "Cancelar"
|
||||||
|
ready: "Listo"
|
||||||
|
cancel-ready: "Cancelar \"Listo\""
|
||||||
common/views/components/connect-failed.vue:
|
common/views/components/connect-failed.vue:
|
||||||
title: "Imposible conectar al servidor"
|
title: "Imposible conectar al servidor"
|
||||||
description: "Hay un problema en tu conexió o puede que el servidor esté caido o en mantenimiento. Por favor {try again} más tarde."
|
description: "Hay un problema en tu conexió o puede que el servidor esté caido o en mantenimiento. Por favor {try again} más tarde."
|
||||||
@@ -133,11 +241,13 @@ common/views/components/messaging-room.vue:
|
|||||||
no-history: "El historial se ha acabado"
|
no-history: "El historial se ha acabado"
|
||||||
resize-form: "Arrastra para redimensionar"
|
resize-form: "Arrastra para redimensionar"
|
||||||
new-message: "Nuevo mensaje"
|
new-message: "Nuevo mensaje"
|
||||||
|
only-one-file-attached: "Un único archivo se puede conectar al mensaje"
|
||||||
common/views/components/messaging-room.form.vue:
|
common/views/components/messaging-room.form.vue:
|
||||||
input-message-here: "Escribe el mensaje aquí"
|
input-message-here: "Escribe el mensaje aquí"
|
||||||
send: "Enviar"
|
send: "Enviar"
|
||||||
attach-from-local: "Adjunta ficheros desde tu PC"
|
attach-from-local: "Adjunta ficheros desde tu PC"
|
||||||
attach-from-drive: "Adjunta ficheros desde tu disco"
|
attach-from-drive: "Adjunta ficheros desde tu disco"
|
||||||
|
only-one-file-attached: "Un único archivo se puede conectar al mensaje"
|
||||||
common/views/components/messaging-room.message.vue:
|
common/views/components/messaging-room.message.vue:
|
||||||
is-read: "Leer"
|
is-read: "Leer"
|
||||||
deleted: "El mensaje se ha borrado"
|
deleted: "El mensaje se ha borrado"
|
||||||
@@ -151,6 +261,8 @@ common/views/components/nav.vue:
|
|||||||
develop: "Desarrolladores"
|
develop: "Desarrolladores"
|
||||||
feedback: "Opiniones"
|
feedback: "Opiniones"
|
||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
|
detail: "Detalles"
|
||||||
|
copy-link: "Copiar enlace"
|
||||||
favorite: "Me gusta esta nota"
|
favorite: "Me gusta esta nota"
|
||||||
pin: "Fijar en el perfil"
|
pin: "Fijar en el perfil"
|
||||||
delete: "Borrar"
|
delete: "Borrar"
|
||||||
@@ -177,7 +289,12 @@ common/views/components/signin.vue:
|
|||||||
token: "Identificador"
|
token: "Identificador"
|
||||||
signing-in: "Entrando..."
|
signing-in: "Entrando..."
|
||||||
signin: "Entra"
|
signin: "Entra"
|
||||||
|
or: "O"
|
||||||
|
signin-with-twitter: "Ingresar con Twitter"
|
||||||
|
login-failed: "Autenticación fallida. Asegúrate de haber usado el nombre de usuario y contraseña correctos."
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
|
invitation-code: "Código de invitación"
|
||||||
|
invitation-info: "Si no tienes un código de invitación, por favor contacta un <a href=\"{}\">administrador</a>."
|
||||||
username: "Usuario"
|
username: "Usuario"
|
||||||
checking: "Comprobando..."
|
checking: "Comprobando..."
|
||||||
available: "Disponible"
|
available: "Disponible"
|
||||||
@@ -223,62 +340,125 @@ common/views/components/visibility-chooser.vue:
|
|||||||
specified: "Directo"
|
specified: "Directo"
|
||||||
specified-desc: "Publica solo para los seguidores que quieras"
|
specified-desc: "Publica solo para los seguidores que quieras"
|
||||||
private: "Privada"
|
private: "Privada"
|
||||||
|
common/views/components/trends.vue:
|
||||||
|
count: "{}人が投稿"
|
||||||
|
empty: "トレンドなし"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "Recuperando"
|
fetching: "Recuperando"
|
||||||
no-broadcasts: "Sin emisión"
|
no-broadcasts: "Sin emisión"
|
||||||
have-a-nice-day: "¡Buenos dias!"
|
have-a-nice-day: "¡Buenos dias!"
|
||||||
next: "Siguiente"
|
next: "Siguiente"
|
||||||
|
common/views/widgets/calendar.vue:
|
||||||
|
year: "Año {}"
|
||||||
|
month: "Mes {}"
|
||||||
|
day: "Día {}"
|
||||||
|
today: "Hoy:"
|
||||||
|
this-month: "Este mes:"
|
||||||
|
this-year: "Este año:"
|
||||||
common/views/widgets/donation.vue:
|
common/views/widgets/donation.vue:
|
||||||
title: "Donaciones"
|
title: "Donaciones"
|
||||||
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
text: "Para mantener Misskey funcionando tenemos que pagar por el dominio, los costos de hospedaje y otros costos. Como no recibimos dinero de publicidad, contamos con el apoyo de todos ustedes. Si estás interesado en ayudar, contacta a {}. ¡Muchas gracias por tu contribución!"
|
||||||
common/views/widgets/photo-stream.vue:
|
common/views/widgets/photo-stream.vue:
|
||||||
title: "フォトストリーム"
|
title: "Galería de fotos"
|
||||||
no-photos: "写真はありません"
|
no-photos: "No hay fotos."
|
||||||
common/views/widgets/posts-monitor.vue:
|
common/views/widgets/posts-monitor.vue:
|
||||||
title: "投稿チャート"
|
title: "Tabla de publicaciones"
|
||||||
toggle: "表示を切り替え"
|
toggle: "Alternar vistas"
|
||||||
common/views/widgets/hashtags.vue:
|
common/views/widgets/hashtags.vue:
|
||||||
title: "ハッシュタグ"
|
title: "Etiquetas"
|
||||||
count: "{}人が投稿"
|
|
||||||
empty: "トレンドなし"
|
|
||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "サーバー情報"
|
title: "Información del servidor"
|
||||||
toggle: "表示を切り替え"
|
toggle: "Alternar vistas"
|
||||||
common/views/widgets/memo.vue:
|
common/views/widgets/memo.vue:
|
||||||
title: "付箋"
|
title: "Notas"
|
||||||
memo: "ここに書いて!"
|
memo: "¡Escribe aquí!"
|
||||||
save: "保存"
|
save: "Guardar"
|
||||||
|
common/views/widgets/slideshow.vue:
|
||||||
|
folder-customize-mode: "Para especificar una carpeta, por favor sal de modo de personalización"
|
||||||
|
folder: "Por favor, cliquea y especifica una carpeta"
|
||||||
|
no-image: "No hay imágenes en esta carpeta"
|
||||||
|
common/views/widgets/tips.vue:
|
||||||
|
tips-line1: "Puedes enfocarte en las publicaciones con <kbd>t</kbd>"
|
||||||
|
tips-line2: "Abrir formulario de publicación con <kbd>p</kbd> or <kbd>n</kbd>"
|
||||||
|
tips-line3: "Puedes arrastrar y soltar archivos en el formulario de publicación"
|
||||||
|
tips-line4: "Puedes pegar una imagen del portapapeles en el formulario de publicación"
|
||||||
|
tips-line5: "Puedes cargar archivos con sólo arrastrarlos y soltarlos en Drive"
|
||||||
|
tips-line6: "Puedes mover una carpeta arrastrándola hacia el Drive"
|
||||||
|
tips-line7: "Puedes mover una carpeta arrastrándola hacia el Drive"
|
||||||
|
tips-line8: "Inicio se puede personalizar desde la configuración"
|
||||||
|
tips-line9: "Misskey está hecho bajo licencia AGPLv3"
|
||||||
|
tips-line10: "Usando el accesorio de Máquina del Tiempo puedes encontrar publicaciones antiguas"
|
||||||
|
tips-line11: "Puedes resaltar publicaciones en la página de usuario haciendo click en \"...\""
|
||||||
|
tips-line13: "Todos los archivos añadidos a la publicación se han guardado en tu unidad."
|
||||||
|
tips-line14: "Cuando personalizas el inicio puedas dar click derecho a un accesorio y cambiar el diseño."
|
||||||
|
tips-line17: "Al colocar ** delante y luego del texto, lo estarás destacando en negrillas"
|
||||||
|
tips-line19: "Algunas ventanas pueden ser separadas fuera del navegador"
|
||||||
|
tips-line20: "El porcentaje mostrando en el accesorio de calendario indica el porcentaje de tiempo transcurrido."
|
||||||
|
tips-line21: "También puedes usar la API para desarrollar tus propios bots."
|
||||||
|
tips-line23: "Mayu is tan bonito con sus cejas."
|
||||||
|
tips-line24: "Misskey inició en 2014."
|
||||||
|
tips-line25: "Puedes recibir notificaciones incluso si Misskey no está abierto en un navegador compatible."
|
||||||
common/views/pages/follow.vue:
|
common/views/pages/follow.vue:
|
||||||
signed-in-as: "{}としてサインイン中"
|
signed-in-as: "Autenticado como {}"
|
||||||
following: "フォロー中"
|
following: "Siguiendo"
|
||||||
follow: "フォロー"
|
follow: "Seguir"
|
||||||
request-pending: "フォロー許可待ち"
|
request-pending: "Solicitud pendiente"
|
||||||
follow-request: "フォロー申請"
|
follow-request: "Solicitar suscripción"
|
||||||
|
desktop:
|
||||||
|
banner-crop-title: "Corta la parte que aparece como un banner"
|
||||||
|
banner: "Banner"
|
||||||
|
uploading-banner: "Cargando un nuevo banner"
|
||||||
|
banner-updated: "Banner actualizado"
|
||||||
|
choose-banner: "Escoge un banner"
|
||||||
|
avatar-crop-title: "Corta la parte que aparece como un avatar"
|
||||||
|
avatar: "Avatar"
|
||||||
|
uploading-avatar: "Cargando un nuevo avatar"
|
||||||
|
avatar-updated: "Avatar actualizado"
|
||||||
|
choose-avatar: "Escoge una imagen de avatar"
|
||||||
|
invalid-filetype: "Este tipo de archivo no es compatible aquí"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Negro ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Azul ... Notas"
|
||||||
replies: "Red ... Replies"
|
replies: "Rojo ... Respuestas"
|
||||||
renotes: "Green ... Renotes"
|
renotes: "Verde ... Republicaciones"
|
||||||
desktop/views/components/activity.vue:
|
desktop/views/components/activity.vue:
|
||||||
title: "アクティビティ"
|
title: "Actividad"
|
||||||
toggle: "表示を切り替え"
|
toggle: "Alternar vistas"
|
||||||
desktop/views/components/calendar.vue:
|
desktop/views/components/calendar.vue:
|
||||||
title: "{1}年 {2}月"
|
title: "{1} / {2}"
|
||||||
prev: "前の月"
|
prev: "Mes anterior"
|
||||||
next: "次の月"
|
next: "Próximo mes"
|
||||||
go: "クリックして時間遡行"
|
go: "Click para navegar"
|
||||||
|
desktop/views/components/charts.vue:
|
||||||
|
title: "Gráficos"
|
||||||
|
per-day: "por día"
|
||||||
|
per-hour: "por hora"
|
||||||
|
notes: "Publicaciones"
|
||||||
|
users: "Usuarios"
|
||||||
|
drive: "Unidad"
|
||||||
|
charts:
|
||||||
|
notes: "Número de publicaciones: aumentar/disminuir (Combinado)"
|
||||||
|
local-notes: "Número de publicaciones: aumentar/disminuir (Local)"
|
||||||
|
remote-notes: "Número de publicaciones: aumentar/disminuir (Remoto)"
|
||||||
|
notes-total: "Número de publicaciones: Acumulativo total"
|
||||||
|
users: "Número de usuarios: aumentar/disminuir"
|
||||||
|
users-total: "Número de usuarios: Acumulativo total"
|
||||||
|
drive: "Capacidad de almacenamiento usada: aumentar/disminuir"
|
||||||
|
drive-total: "Capacidad de almacenamiento usada: Acumulativa total"
|
||||||
|
drive-files: "Número de archivos almacenados: aumentar/disminuir"
|
||||||
|
drive-files-total: "Número de archivos almacenados: Acumulativo total"
|
||||||
desktop/views/components/choose-file-from-drive-window.vue:
|
desktop/views/components/choose-file-from-drive-window.vue:
|
||||||
choose-file: "ファイル選択中"
|
choose-file: "Escoger archivos"
|
||||||
upload: "PCからドライブにファイルをアップロード"
|
upload: "Cargar archivos de tu dispositivo"
|
||||||
cancel: "キャンセル"
|
cancel: "Cancelar"
|
||||||
ok: "決定"
|
ok: "OK"
|
||||||
choose-prompt: "ファイルを選択"
|
choose-prompt: "Escoger archivos"
|
||||||
desktop/views/components/choose-folder-from-drive-window.vue:
|
desktop/views/components/choose-folder-from-drive-window.vue:
|
||||||
cancel: "キャンセル"
|
cancel: "Cancelar"
|
||||||
ok: "決定"
|
ok: "OK"
|
||||||
choose-prompt: "Escoge una Carpeta"
|
choose-prompt: "Escoge una Carpeta"
|
||||||
desktop/views/components/crop-window.vue:
|
desktop/views/components/crop-window.vue:
|
||||||
skip: "クロップをスキップ"
|
skip: "Ignorar el cortado"
|
||||||
cancel: "Cancelar"
|
cancel: "Cancelar"
|
||||||
ok: "OK"
|
ok: "OK"
|
||||||
desktop/views/components/drive-window.vue:
|
desktop/views/components/drive-window.vue:
|
||||||
@@ -287,10 +467,11 @@ desktop/views/components/drive-window.vue:
|
|||||||
desktop/views/components/drive.file.vue:
|
desktop/views/components/drive.file.vue:
|
||||||
avatar: "Avatar"
|
avatar: "Avatar"
|
||||||
banner: "Banner"
|
banner: "Banner"
|
||||||
|
nsfw: "Ver más"
|
||||||
contextmenu:
|
contextmenu:
|
||||||
rename: "Renombrar"
|
rename: "Renombrar"
|
||||||
mark-as-sensitive: "閲覧注意に設定"
|
mark-as-sensitive: "Marcar como 'sensible'"
|
||||||
unmark-as-sensitive: "閲覧注意を解除"
|
unmark-as-sensitive: "Desmarcar como 'sensible'"
|
||||||
copy-url: "Copia la URL"
|
copy-url: "Copia la URL"
|
||||||
download: "Descargar"
|
download: "Descargar"
|
||||||
else-files: "Otros"
|
else-files: "Otros"
|
||||||
@@ -335,87 +516,97 @@ desktop/views/components/drive.vue:
|
|||||||
upload: "Subir fichero"
|
upload: "Subir fichero"
|
||||||
url-upload: "Subir desde una URL"
|
url-upload: "Subir desde una URL"
|
||||||
desktop/views/components/media-image.vue:
|
desktop/views/components/media-image.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "El contenido es NSFW (no seguro para ver en el trabajo, 'not safe for work')"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "Click para mostrar"
|
||||||
desktop/views/components/media-video.vue:
|
desktop/views/components/media-video.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "Este contenido no es apropiado para ver en el trabajo"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "Click para mostrar"
|
||||||
desktop/views/components/follow-button.vue:
|
desktop/views/components/follow-button.vue:
|
||||||
following: "Siguiendo"
|
following: "Siguiendo"
|
||||||
follow: "Sigue"
|
follow: "Sigue"
|
||||||
request-pending: "Pendiente de aprobación"
|
request-pending: "Pendiente de aprobación"
|
||||||
follow-request: "フォロー申請"
|
follow-request: "Solicitud de seguir"
|
||||||
desktop/views/components/followers-window.vue:
|
desktop/views/components/followers-window.vue:
|
||||||
followers: "{} のフォロワー"
|
followers: "{} seguidores"
|
||||||
desktop/views/components/followers.vue:
|
desktop/views/components/followers.vue:
|
||||||
empty: "フォロワーはいないようです。"
|
empty: "Parece que no tienes seguidores aún."
|
||||||
desktop/views/components/following-window.vue:
|
desktop/views/components/following-window.vue:
|
||||||
following: "{} のフォロー"
|
following: "Siguiendo {}"
|
||||||
desktop/views/components/following.vue:
|
desktop/views/components/following.vue:
|
||||||
empty: "フォロー中のユーザーはいないようです。"
|
empty: "Parece que aún no sigues a nadie."
|
||||||
desktop/views/components/friends-maker.vue:
|
desktop/views/components/friends-maker.vue:
|
||||||
title: "気になるユーザーをフォロー:"
|
title: "Usuarios recomendados:"
|
||||||
empty: "おすすめのユーザーは見つかりませんでした。"
|
empty: "No se pudieron encontrar usuarios para recomendar"
|
||||||
fetching: "読み込んでいます"
|
fetching: "Cargando"
|
||||||
refresh: "もっと見る"
|
refresh: "Más"
|
||||||
close: "閉じる"
|
close: "Cerrar"
|
||||||
desktop/views/components/game-window.vue:
|
desktop/views/components/game-window.vue:
|
||||||
game: "リバーシ"
|
game: "Reversi"
|
||||||
desktop/views/components/home.vue:
|
desktop/views/components/home.vue:
|
||||||
done: "完了"
|
done: "Listo"
|
||||||
add-widget: "ウィジェットを追加:"
|
add-widget: "Agregar accesorio:"
|
||||||
add: "追加"
|
add: "Agregar"
|
||||||
desktop/views/input-dialog.vue:
|
desktop/views/input-dialog.vue:
|
||||||
cancel: "キャンセル"
|
cancel: "Cancelar"
|
||||||
ok: "決定"
|
ok: "OK"
|
||||||
desktop/views/components/messaging-room-window.vue:
|
desktop/views/components/messaging-room-window.vue:
|
||||||
title: "メッセージ:"
|
title: "Mensajes:"
|
||||||
desktop/views/components/messaging-window.vue:
|
desktop/views/components/messaging-window.vue:
|
||||||
title: "メッセージ"
|
title: "Mensajes"
|
||||||
desktop/views/components/note-detail.vue:
|
desktop/views/components/note-detail.vue:
|
||||||
more: "会話をもっと読み込む"
|
more: "Cargar más conversaciones"
|
||||||
private: "この投稿は非公開です"
|
private: "Esta publicación es privada"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "Esta publicación ha sido removida"
|
||||||
reposted-by: "{}がRenote"
|
reposted-by: "Republicado por {}"
|
||||||
location: "位置情報"
|
location: "Localización"
|
||||||
renote: "Renote"
|
renote: "Republicar"
|
||||||
add-reaction: "リアクション"
|
add-reaction: "Agregar una reacción"
|
||||||
desktop/views/components/notes.note.vue:
|
desktop/views/components/notes.note.vue:
|
||||||
reposted-by: "{}がRenote"
|
reposted-by: "Republicado por {}"
|
||||||
reply: "返信"
|
reply: "Responder"
|
||||||
renote: "Renote"
|
renote: "Republicar"
|
||||||
add-reaction: "リアクション"
|
add-reaction: "Agregar una reacción"
|
||||||
detail: "詳細"
|
detail: "Mostrar detalles"
|
||||||
private: "この投稿は非公開です"
|
private: "Esta publicación es privada"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "Esta publicación ha sido borrada"
|
||||||
|
hide: "Esconder"
|
||||||
|
see-more: "Ver más"
|
||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "読み込みに失敗しました。"
|
error: "Error al cargar."
|
||||||
retry: "リトライ"
|
retry: "Reintentar"
|
||||||
load-more: "もっと読み込む"
|
load-more: "Leer más"
|
||||||
desktop/views/components/notifications.vue:
|
desktop/views/components/notifications.vue:
|
||||||
more: "もっと見る"
|
more: "Más"
|
||||||
empty: "ありません!"
|
empty: "No hay notificaciones"
|
||||||
desktop/views/components/post-form.vue:
|
desktop/views/components/post-form.vue:
|
||||||
reply-placeholder: "この投稿への返信..."
|
add-visible-user: "+Agregar usuario"
|
||||||
quote-placeholder: "この投稿を引用..."
|
attach-location-information: "Agregar localización"
|
||||||
submit: "投稿"
|
hide-contents: "Esconder contenidos"
|
||||||
reply: "返信"
|
reply-placeholder: "Responder a esta nota..."
|
||||||
renote: "Renote"
|
quote-placeholder: "Citar esta nota..."
|
||||||
posted: "投稿しました!"
|
submit: "Publicar"
|
||||||
replied: "返信しました!"
|
reply: "Responder"
|
||||||
reposted: "Renoteしました!"
|
renote: "Republicar"
|
||||||
note-failed: "投稿に失敗しました"
|
posted: "¡Publicado!"
|
||||||
reply-failed: "返信に失敗しました"
|
replied: "¡Respondido!"
|
||||||
renote-failed: "Renoteに失敗しました"
|
reposted: "¡Republicado!"
|
||||||
posting: "投稿中"
|
note-failed: "Error al publicar nota"
|
||||||
attach-media-from-local: "PCからメディアを添付"
|
reply-failed: "Error al responder"
|
||||||
|
renote-failed: "Error al republicar"
|
||||||
|
posting: "Publicando"
|
||||||
|
attach-media-from-local: "Agregar medios de tu dispositivo"
|
||||||
attach-media-from-drive: "Adjunta multimedia desde tu Disco"
|
attach-media-from-drive: "Adjunta multimedia desde tu Disco"
|
||||||
attach-cancel: "Quitar el archivo adjunto"
|
attach-cancel: "Quitar el archivo adjunto"
|
||||||
insert-a-kao: "v('ω')v"
|
insert-a-kao: "v('ω')v"
|
||||||
create-poll: "Crea una encuesta"
|
create-poll: "Crea una encuesta"
|
||||||
text-remain: "quedan {} caracteres"
|
text-remain: "quedan {} caracteres"
|
||||||
recent-tags: "最近"
|
recent-tags: "Reciente"
|
||||||
click-to-tagging: "クリックでタグ付け"
|
click-to-tagging: "Click para etiquetar"
|
||||||
|
visibility: "Visibilidad"
|
||||||
|
geolocation-alert: "Tu dispositivo no tiene soporte de geolocalización."
|
||||||
|
error: "Error"
|
||||||
|
enter-username: "Por favor escribe un nombre de usuario..."
|
||||||
|
annotations: "Anotaciones a la publicación (opcional)"
|
||||||
desktop/views/components/post-form-window.vue:
|
desktop/views/components/post-form-window.vue:
|
||||||
note: "Nota nueva"
|
note: "Nota nueva"
|
||||||
reply: "Responder"
|
reply: "Responder"
|
||||||
@@ -456,15 +647,19 @@ desktop/views/components/settings.vue:
|
|||||||
api-via-stream-desc: "Las peticiones de las API se realizan por conexiones WebSocket en lugar de las tradicionales (para una mejora en el rendimiento). Esta función depende del navegador."
|
api-via-stream-desc: "Las peticiones de las API se realizan por conexiones WebSocket en lugar de las tradicionales (para una mejora en el rendimiento). Esta función depende del navegador."
|
||||||
display: "Diseño y pantalla"
|
display: "Diseño y pantalla"
|
||||||
customize: "Personaliza la página principal"
|
customize: "Personaliza la página principal"
|
||||||
choose-wallpaper: "壁紙を選択"
|
choose-wallpaper: "Elije un fondo"
|
||||||
delete-wallpaper: "壁紙を削除"
|
delete-wallpaper: "Suprimir fondo"
|
||||||
dark-mode: "Modo Nocturno"
|
dark-mode: "Modo Nocturno"
|
||||||
circle-icons: "Usar iconos circulares"
|
circle-icons: "Usar iconos circulares"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
gradient-window-header: "Usar degradados en las cabeceras de las páginas"
|
gradient-window-header: "Usar degradados en las cabeceras de las páginas"
|
||||||
post-form-on-timeline: "Mostrar el formulario de las entradas encima de la línea de tiempo"
|
post-form-on-timeline: "Mostrar el formulario de las entradas encima de la línea de tiempo"
|
||||||
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿をタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "マップの自動展開"
|
show-maps: "マップの自動展開"
|
||||||
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
||||||
sound: "サウンド"
|
sound: "サウンド"
|
||||||
@@ -493,71 +688,75 @@ desktop/views/components/settings.vue:
|
|||||||
version: "バージョン:"
|
version: "バージョン:"
|
||||||
latest-version: "最新のバージョン:"
|
latest-version: "最新のバージョン:"
|
||||||
update-checking: "アップデートを確認中"
|
update-checking: "アップデートを確認中"
|
||||||
do-update: "アップデートを確認"
|
do-update: "Chequear por actualizaciones"
|
||||||
update-settings: "詳細設定"
|
update-settings: "Configuración avanzada"
|
||||||
prevent-update: "アップデートを延期する(非推奨)"
|
prevent-update: "Posponer actualizaciones (no recomendado)"
|
||||||
prevent-update-desc: "この設定をオンにしてもアップデートが反映される場合があります。この設定はこのデバイスのみ有効です。"
|
prevent-update-desc: "Incluso si activas esta configuración, algunas actualizaciones podrían aplicarse. Esta configuración está habilitada sólo para este dispositivo."
|
||||||
no-updates: "利用可能な更新はありません"
|
no-updates: "No hay actualizaciones disponibles"
|
||||||
no-updates-desc: "お使いのMisskeyは最新です。"
|
no-updates-desc: "Tu Misskey está actualizado"
|
||||||
update-available: "新しいバージョンが利用可能です"
|
update-available: "Una nueva versión está disponible"
|
||||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
update-available-desc: "Las actualizaciones se aplicarán cuando actualices la página nuevamente."
|
||||||
advanced-settings: "高度な設定"
|
advanced-settings: "Avanzado"
|
||||||
debug-mode: "デバッグモードを有効にする"
|
debug-mode: "Habilitar modo de depuración"
|
||||||
debug-mode-desc: "この設定はブラウザに記憶されます。"
|
debug-mode-desc: "Esta configuración se ha guardado en el navegador."
|
||||||
experimental: "実験的機能を有効にする"
|
experimental: "Habilitar herramientas experimentales"
|
||||||
experimental-desc: "実験的機能を有効にするとMisskeyの動作が不安定になる可能性があります。この設定はブラウザに記憶されます。"
|
experimental-desc: "Activar esto puede hacer que tu cliente de Misskey se vuelva inestable. La configuración se ha guardado en el navegador."
|
||||||
tools: "ツール"
|
tools: "Herramientas"
|
||||||
task-manager: "タスクマネージャ"
|
task-manager: "Navegador de tareas"
|
||||||
third-parties: "サードパーティ"
|
third-parties: "Servicios externos"
|
||||||
desktop/views/components/settings.2fa.vue:
|
desktop/views/components/settings.2fa.vue:
|
||||||
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
||||||
detail: "詳細..."
|
detail: "Ver detalles..."
|
||||||
url: "https://www.google.co.jp/intl/ja/landing/2step/"
|
url: "https://www.google.com/landing/2step/"
|
||||||
caution: "登録したデバイスを紛失するなどした場合、Misskeyにサインインできなくなりますのでご注意ください。"
|
caution: "Si pierdes acceso al dispositivo, no podrás conectarte a Misskey."
|
||||||
register: "デバイスを登録する"
|
register: "Registrar un dispositivo"
|
||||||
already-registered: "既に設定は完了しています。"
|
already-registered: "Un dispositivo ya fue registrado"
|
||||||
unregister: "設定を解除"
|
unregister: "Inhabilitado"
|
||||||
unregistered: "二段階認証が無効になりました。"
|
unregistered: "Autenticación de dos pasos fue deshabilitada."
|
||||||
enter-password: "パスワードを入力してください"
|
enter-password: "Escribe una contraseña"
|
||||||
authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:"
|
authenticator: "Primero, necesitas instalar Google Authenticator en tu dispositivo:"
|
||||||
howtoinstall: "インストール方法はこちら"
|
howtoinstall: "Cómo instalar"
|
||||||
scan: "次に、表示されているQRコードをスキャンします:"
|
scan: "Luego, escanea el código QR:"
|
||||||
done: "お使いのデバイスに表示されているトークンを入力して完了します:"
|
done: "Por favor ingresa el token mostrado en tu dispositivo:"
|
||||||
submit: "完了"
|
submit: "Enviar"
|
||||||
success: "設定が完了しました!"
|
success: "¡Configuraciones guardadas!"
|
||||||
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
failed: "Error al configurar. Por favor asegúrate de que el token es correcto."
|
||||||
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
info: "Desde ahora, ingresa el token que se muestra en tu dispositivo adicionalmente a tu contraseña cuando inicies sesión en Misskey"
|
||||||
desktop/views/components/settings.api.vue:
|
desktop/views/components/settings.api.vue:
|
||||||
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
intro: "Para acceder al API, configura este token como la letra \"i\" de los parámetros requeridos."
|
||||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
caution: "Por favor no muestres este token a otros (no lo ingreses en otro lugar que no sea aquí). De otra forma, tu cuenta puede llegar a ser comprometida."
|
||||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
regeneration-of-token: "En el caso no deseado de que este token lo tenga otra persona, puedes regenerarlo."
|
||||||
regenerate-token: "トークンを再生成"
|
regenerate-token: "Regenerar el token"
|
||||||
token: "Token:"
|
token: "Token:"
|
||||||
enter-password: "パスワードを入力してください"
|
enter-password: "Por favor ingresa tu contraseña"
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "連携しているアプリケーションはありません"
|
no-apps: "No hay aplicaciones asociadas"
|
||||||
|
desktop/views/components/settings.drive.vue:
|
||||||
|
max: "Max"
|
||||||
|
in-use: "en uso."
|
||||||
desktop/views/components/settings.mute.vue:
|
desktop/views/components/settings.mute.vue:
|
||||||
no-users: "ミュートしているユーザーはいません"
|
no-users: "No hay usuarios silenciados"
|
||||||
desktop/views/components/settings.password.vue:
|
desktop/views/components/settings.password.vue:
|
||||||
reset: "パスワードを変更する"
|
reset: "Cambiar contraseña"
|
||||||
enter-current-password: "現在のパスワードを入力してください"
|
enter-current-password: "Ingresar contraseña actual"
|
||||||
enter-new-password: "新しいパスワードを入力してください"
|
enter-new-password: "Ingresar nueva contraseña"
|
||||||
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
enter-new-password-again: "Ingresar nueva contraseña de nuevo"
|
||||||
not-match: "新しいパスワードが一致しません"
|
not-match: "Las nuevas contraseñas no se corresponden consigo mismas"
|
||||||
changed: "パスワードを変更しました"
|
changed: "Contraseña actualizada"
|
||||||
desktop/views/components/settings.profile.vue:
|
desktop/views/components/settings.profile.vue:
|
||||||
avatar: "アイコン"
|
avatar: "Avatar"
|
||||||
choice-avatar: "画像を選択"
|
choice-avatar: "Escoger una imagen"
|
||||||
name: "名前"
|
name: "Nombre"
|
||||||
location: "場所"
|
location: "Localización"
|
||||||
description: "自己紹介"
|
description: "Descripción"
|
||||||
birthday: "誕生日"
|
birthday: "Fecha de nacimiento"
|
||||||
save: "保存"
|
save: "Perfil actualizado"
|
||||||
locked-account: "アカウントの保護"
|
locked-account: "Protege tu cuenta"
|
||||||
is-locked: "投稿を非公開にする"
|
is-locked: "Crear una nota privada"
|
||||||
other: "その他"
|
other: "その他"
|
||||||
is-bot: "このアカウントはBotです"
|
is-bot: "このアカウントはBotです"
|
||||||
is-cat: "このアカウントはCatです"
|
is-cat: "このアカウントはCatです"
|
||||||
|
profile-updated: "プロフィールを更新しました"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
@@ -572,37 +771,40 @@ desktop/views/components/timeline.vue:
|
|||||||
global: "グローバル"
|
global: "グローバル"
|
||||||
list: "リスト"
|
list: "リスト"
|
||||||
desktop/views/components/ui.header.vue:
|
desktop/views/components/ui.header.vue:
|
||||||
welcome-back: "おかえりなさい、"
|
welcome-back: "Bienvenido/a de vuelta,"
|
||||||
|
adjective: "-san"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "プロフィール"
|
profile: "Tu perfil"
|
||||||
drive: "ドライブ"
|
drive: "Unidad"
|
||||||
favorites: "お気に入り"
|
favorites: "Favoritos"
|
||||||
lists: "リスト"
|
lists: "Listas"
|
||||||
follow-requests: "フォロー申請"
|
follow-requests: "Solicitudes de seguimiento"
|
||||||
customize: "ホームのカスタマイズ"
|
customize: "Personalizar la página de inicio"
|
||||||
settings: "設定"
|
admin: "Admin"
|
||||||
signout: "サインアウト"
|
settings: "Configuraciones"
|
||||||
dark: "闇に飲まれる"
|
signout: "Desconectarse"
|
||||||
|
dark: "Sumergirse en la oscuridad"
|
||||||
desktop/views/components/ui.header.nav.vue:
|
desktop/views/components/ui.header.nav.vue:
|
||||||
home: "ホーム"
|
home: "Inicio"
|
||||||
deck: "デッキ"
|
deck: "Cubierta"
|
||||||
messaging: "メッセージ"
|
messaging: "Mensajes"
|
||||||
game: "ゲーム"
|
game: "Juegos"
|
||||||
desktop/views/components/ui.header.notifications.vue:
|
desktop/views/components/ui.header.notifications.vue:
|
||||||
title: "通知"
|
title: "Notificaciones"
|
||||||
desktop/views/components/ui.header.post.vue:
|
desktop/views/components/ui.header.post.vue:
|
||||||
post: "新規投稿"
|
post: "Crear una publicación"
|
||||||
desktop/views/components/ui.header.search.vue:
|
desktop/views/components/ui.header.search.vue:
|
||||||
placeholder: "検索"
|
placeholder: "Buscar"
|
||||||
desktop/views/components/received-follow-requests-window.vue:
|
desktop/views/components/received-follow-requests-window.vue:
|
||||||
title: "フォロー申請"
|
title: "Solicitudes de seguidores"
|
||||||
accept: "承認"
|
accept: "Aceptar"
|
||||||
reject: "拒否"
|
reject: "Rechazar"
|
||||||
desktop/views/components/user-lists-window.vue:
|
desktop/views/components/user-lists-window.vue:
|
||||||
title: "リスト"
|
title: "Listas de usuario"
|
||||||
create-list: "リストを作成"
|
create-list: "Crear lista"
|
||||||
|
list-name: "Nombre de lista"
|
||||||
desktop/views/components/user-preview.vue:
|
desktop/views/components/user-preview.vue:
|
||||||
notes: "投稿"
|
notes: "Publicaciones"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
followers: "フォロワー"
|
followers: "フォロワー"
|
||||||
desktop/views/components/users-list.vue:
|
desktop/views/components/users-list.vue:
|
||||||
@@ -615,6 +817,34 @@ desktop/views/components/users-list-item.vue:
|
|||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
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.unverify-user.vue:
|
||||||
|
unverify-user: "ユーザーの公式アカウント解除"
|
||||||
|
unverify: "公式アカウントを解除する"
|
||||||
|
unverified: "公式アカウントを解除しました"
|
||||||
desktop/views/pages/deck/deck.tl-column.vue:
|
desktop/views/pages/deck/deck.tl-column.vue:
|
||||||
is-media-only: "メディア投稿のみ"
|
is-media-only: "メディア投稿のみ"
|
||||||
is-media-view: "メディアビュー"
|
is-media-view: "メディアビュー"
|
||||||
@@ -623,6 +853,11 @@ desktop/views/pages/deck/deck.note.vue:
|
|||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
|
desktop/views/pages/stats/stats.vue:
|
||||||
|
all-users: "全てのユーザー"
|
||||||
|
original-users: "このインスタンスのユーザー"
|
||||||
|
all-notes: "全ての投稿"
|
||||||
|
original-notes: "このインスタンスの投稿"
|
||||||
desktop/views/pages/welcome.vue:
|
desktop/views/pages/welcome.vue:
|
||||||
about: "詳しく..."
|
about: "詳しく..."
|
||||||
gotit: "わかった"
|
gotit: "わかった"
|
||||||
@@ -631,6 +866,10 @@ desktop/views/pages/welcome.vue:
|
|||||||
signin-button: "やってる"
|
signin-button: "やってる"
|
||||||
signup-button: "やる"
|
signup-button: "やる"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
|
announcements: "お知らせ"
|
||||||
|
photos: "最近の画像"
|
||||||
|
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||||
|
info: "情報"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
@@ -645,6 +884,13 @@ desktop/views/pages/selectdrive.vue:
|
|||||||
ok: "決定"
|
ok: "決定"
|
||||||
cancel: "キャンセル"
|
cancel: "キャンセル"
|
||||||
upload: "PCからドライブにファイルをアップロード"
|
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:
|
desktop/views/pages/user-list.users.vue:
|
||||||
users: "ユーザー"
|
users: "ユーザー"
|
||||||
add-user: "ユーザーを追加"
|
add-user: "ユーザーを追加"
|
||||||
@@ -675,6 +921,8 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "ミュートする"
|
mute: "ミュートする"
|
||||||
muted: "ミュートしています"
|
muted: "ミュートしています"
|
||||||
unmute: "ミュート解除"
|
unmute: "ミュート解除"
|
||||||
|
push-to-a-list: "リストに追加"
|
||||||
|
list-pushed: "{user}を{list}に追加しました。"
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.header.vue:
|
||||||
posts: "投稿"
|
posts: "投稿"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@@ -730,12 +978,15 @@ mobile/views/components/drive-file-chooser.vue:
|
|||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
mobile/views/components/drive-folder-chooser.vue:
|
mobile/views/components/drive-folder-chooser.vue:
|
||||||
select-folder: "フォルダーを選択"
|
select-folder: "フォルダーを選択"
|
||||||
|
mobile/views/components/drive.file.vue:
|
||||||
|
nsfw: "閲覧注意"
|
||||||
mobile/views/components/drive.file-detail.vue:
|
mobile/views/components/drive.file-detail.vue:
|
||||||
download: "ダウンロード"
|
download: "ダウンロード"
|
||||||
rename: "名前を変更"
|
rename: "名前を変更"
|
||||||
move: "移動"
|
move: "移動"
|
||||||
hash: "ハッシュ (md5)"
|
hash: "ハッシュ (md5)"
|
||||||
exif: "EXIF"
|
exif: "EXIF"
|
||||||
|
nsfw: "閲覧注意"
|
||||||
mobile/views/components/media-image.vue:
|
mobile/views/components/media-image.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
@@ -800,6 +1051,9 @@ mobile/views/components/sub-note-content.vue:
|
|||||||
mobile/views/components/timeline.vue:
|
mobile/views/components/timeline.vue:
|
||||||
empty: "投稿がありません"
|
empty: "投稿がありません"
|
||||||
load-more: "もっと"
|
load-more: "もっと"
|
||||||
|
mobile/views/components/ui.header.vue:
|
||||||
|
welcome-back: "おかえりなさい、"
|
||||||
|
adjective: "さん"
|
||||||
mobile/views/components/ui.nav.vue:
|
mobile/views/components/ui.nav.vue:
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
@@ -813,6 +1067,7 @@ mobile/views/components/ui.nav.vue:
|
|||||||
game: "ゲーム"
|
game: "ゲーム"
|
||||||
darkmode: "ダークモード"
|
darkmode: "ダークモード"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
|
admin: "管理"
|
||||||
about: "Misskeyについて"
|
about: "Misskeyについて"
|
||||||
mobile/views/components/user-timeline.vue:
|
mobile/views/components/user-timeline.vue:
|
||||||
no-notes: "このユーザーは投稿していないようです。"
|
no-notes: "このユーザーは投稿していないようです。"
|
||||||
@@ -830,6 +1085,8 @@ mobile/views/pages/user-lists.vue:
|
|||||||
mobile/views/pages/drive.vue:
|
mobile/views/pages/drive.vue:
|
||||||
drive: "ドライブ"
|
drive: "ドライブ"
|
||||||
more: "もっと見る"
|
more: "もっと見る"
|
||||||
|
mobile/views/pages/signup.vue:
|
||||||
|
lets-start: "📦 始めましょう"
|
||||||
mobile/views/pages/followers.vue:
|
mobile/views/pages/followers.vue:
|
||||||
followers-of: "{}のフォロワー"
|
followers-of: "{}のフォロワー"
|
||||||
mobile/views/pages/following.vue:
|
mobile/views/pages/following.vue:
|
||||||
@@ -839,6 +1096,19 @@ mobile/views/pages/home.vue:
|
|||||||
local: "ローカル"
|
local: "ローカル"
|
||||||
hybrid: "ソーシャル"
|
hybrid: "ソーシャル"
|
||||||
global: "グローバル"
|
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:
|
mobile/views/pages/messaging.vue:
|
||||||
messaging: "メッセージ"
|
messaging: "メッセージ"
|
||||||
mobile/views/pages/messaging-room.vue:
|
mobile/views/pages/messaging-room.vue:
|
||||||
@@ -854,6 +1124,8 @@ mobile/views/pages/note.vue:
|
|||||||
mobile/views/pages/notifications.vue:
|
mobile/views/pages/notifications.vue:
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
read-all: "すべての通知を既読にしますか?"
|
read-all: "すべての通知を既読にしますか?"
|
||||||
|
mobile/views/pages/games/reversi.vue:
|
||||||
|
reversi: "リバーシ"
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
mobile/views/pages/settings/settings.profile.vue:
|
||||||
title: "プロフィール"
|
title: "プロフィール"
|
||||||
name: "名前"
|
name: "名前"
|
||||||
@@ -871,6 +1143,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
search: "検索"
|
search: "検索"
|
||||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
|
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
mobile/views/pages/selectdrive.vue:
|
mobile/views/pages/selectdrive.vue:
|
||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
mobile/views/pages/settings.vue:
|
mobile/views/pages/settings.vue:
|
||||||
@@ -884,13 +1157,18 @@ mobile/views/pages/settings.vue:
|
|||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
i-am-under-limited-internet: "私は通信を制限されている"
|
i-am-under-limited-internet: "私は通信を制限されている"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteを表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteを表示する"
|
||||||
post-style: "投稿の表示スタイル"
|
post-style: "投稿の表示スタイル"
|
||||||
post-style-standard: "標準"
|
post-style-standard: "標準"
|
||||||
post-style-smart: "スマート"
|
post-style-smart: "スマート"
|
||||||
|
notification-position: "通知の表示"
|
||||||
|
notification-position-bottom: "下"
|
||||||
|
notification-position-top: "上"
|
||||||
behavior: "動作"
|
behavior: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
@@ -911,6 +1189,8 @@ mobile/views/pages/settings.vue:
|
|||||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
|
sound: "サウンド"
|
||||||
|
enable-sounds: "サウンドを有効にする"
|
||||||
mobile/views/pages/user.vue:
|
mobile/views/pages/user.vue:
|
||||||
follows-you: "フォローされています"
|
follows-you: "フォローされています"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@@ -965,3 +1245,5 @@ docs:
|
|||||||
name: "名前"
|
name: "名前"
|
||||||
type: "型"
|
type: "型"
|
||||||
description: "説明"
|
description: "説明"
|
||||||
|
dev/views/index.vue:
|
||||||
|
manage-apps: "アプリの管理"
|
||||||
@@ -4,11 +4,33 @@ meta:
|
|||||||
divider: ""
|
divider: ""
|
||||||
common:
|
common:
|
||||||
misskey: "Une ⭐ du fédiverse"
|
misskey: "Une ⭐ du fédiverse"
|
||||||
about-title: "Une ⭐ du fédiverse."
|
about-title: "Une ⭐ du fédivers."
|
||||||
about: "Merci d'avoir découvert Misskey. Misskey est une <b>plateforme de micro-blogging distribuée</b> née sur Terre. Parce qu'il fait partie du Fédiverse (un univers composé de diverses plateformes de réseaux sociaux organisées), il est mutuellement connecté avec d'autres plateformes de réseaux sociaux. Désirez-vous prendre une pause, pendant un instant, loin de l'agitation de la ville et plonger dans un nouvel Internet ?"
|
about: "Merci d'avoir découvert Misskey. Misskey est une <b>plateforme de microblogage distribuée</b> née sur Terre. Parce qu'il fait partie du Fédivers (un univers composé de diverses plateformes de réseaux sociaux organisées), il est mutuellement connecté avec d'autres plateformes de réseaux sociaux. Désirez-vous prendre une pause, pendant un instant, loin de l'agitation de la ville et plonger dans un nouvel Internet ?"
|
||||||
|
adblock:
|
||||||
|
detected: "Veuillez désactiver votre bloqueur de publicités"
|
||||||
|
warning: "<strong>Misskey n'utilise pas de publicités</strong>, mais quelques options peuvent être non disponibles ou fonctionneraient mal si un bloqueur de publicités est activé."
|
||||||
|
application-authorization: "Permissions de l'application"
|
||||||
|
close: "Fermer"
|
||||||
|
do-not-copy-paste: "Veuillez ne pas entrer ou coller le code ici. Le compte peut être compromis."
|
||||||
|
got-it: "J'ai compris !"
|
||||||
|
customization-tips:
|
||||||
|
title: "Conseils de personnalisation"
|
||||||
|
paragraph1: "La personnalisation à la maison vous permet d'ajouter / supprimer, glisser et déposer et réorganiser les widgets."
|
||||||
|
paragraph2: "Vous pouvez changer l'affichage en <strong>cliquant droit</strong> sur certains widgets."
|
||||||
|
paragraph3: "Pour supprimer un widget, <strong>glissez et déposez le widget sur la zone étiquetée « Corbeille »</strong> dans l'en-tête."
|
||||||
|
paragraph4: "Pour terminer la personnalisation, cliquez sur \"Terminer\" dans le coin supérieur droit."
|
||||||
|
gotit: "Compris!"
|
||||||
|
notification:
|
||||||
|
file-uploaded: "Le fichier a été téléversé !"
|
||||||
|
message-from: "Message de {} :"
|
||||||
|
reversi-invited: "Invité à jouer"
|
||||||
|
reversi-invited-by: "Invité par {} :"
|
||||||
|
notified-by: "Notifié par {} :"
|
||||||
|
reply-from: "Réponse de {} :"
|
||||||
|
quoted-by: "Cité·e par {} :"
|
||||||
time:
|
time:
|
||||||
unknown: "inconnu"
|
unknown: "inconnu"
|
||||||
future: "future"
|
future: "à l'instant"
|
||||||
just_now: "à l'instant"
|
just_now: "à l'instant"
|
||||||
seconds_ago: "Il y a {} seconde·s"
|
seconds_ago: "Il y a {} seconde·s"
|
||||||
minutes_ago: "Il y a {} minute·s"
|
minutes_ago: "Il y a {} minute·s"
|
||||||
@@ -17,6 +39,8 @@ common:
|
|||||||
weeks_ago: "Il y a {} semaines·s"
|
weeks_ago: "Il y a {} semaines·s"
|
||||||
months_ago: "Il y a {} mois"
|
months_ago: "Il y a {} mois"
|
||||||
years_ago: "Il y a {} an·s"
|
years_ago: "Il y a {} an·s"
|
||||||
|
month-and-day: "{month}/{day}"
|
||||||
|
trash: "Corbeille"
|
||||||
weekday-short:
|
weekday-short:
|
||||||
sunday: "D"
|
sunday: "D"
|
||||||
monday: "L"
|
monday: "L"
|
||||||
@@ -25,21 +49,30 @@ common:
|
|||||||
thursday: "J"
|
thursday: "J"
|
||||||
friday: "V"
|
friday: "V"
|
||||||
saturday: "S"
|
saturday: "S"
|
||||||
|
weekday:
|
||||||
|
sunday: "Dimanche"
|
||||||
|
monday: "Lundi"
|
||||||
|
tuesday: "Mardi"
|
||||||
|
wednesday: "Mercredi"
|
||||||
|
thursday: "Jeudi"
|
||||||
|
friday: "Vendredi"
|
||||||
|
saturday: "Samedi"
|
||||||
reactions:
|
reactions:
|
||||||
like: "Aime"
|
like: "J'aime"
|
||||||
love: "Adore"
|
love: "Adore"
|
||||||
laugh: "Rire"
|
laugh: "Rire"
|
||||||
hmm: "Hmm ... ?"
|
hmm: "Hmm … ?"
|
||||||
surprise: "Wow"
|
surprise: "Wow"
|
||||||
congrats: "Félicitations !"
|
congrats: "Félicitations !"
|
||||||
angry: "En colère"
|
angry: "En colère"
|
||||||
confused: "Confus"
|
confused: "Confus"
|
||||||
|
rip: "RIP"
|
||||||
pudding: "Pudding"
|
pudding: "Pudding"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "Que faîtes vous maintenant ?"
|
a: "Que faites-vous maintenant ?"
|
||||||
b: "Quoi de neuf ?"
|
b: "Quoi de neuf ?"
|
||||||
c: "Qu'avez-vous en tête ?"
|
c: "Qu'avez-vous en tête ?"
|
||||||
d: "Voulez-vous exprimer quelque chose ?"
|
d: "Désirez-vous publier quelques mots ?"
|
||||||
e: "Écrivez ici"
|
e: "Écrivez ici"
|
||||||
f: "En attente de vos écrits"
|
f: "En attente de vos écrits"
|
||||||
search: "Recherche"
|
search: "Recherche"
|
||||||
@@ -49,33 +82,41 @@ common:
|
|||||||
update-available-title: "Mise à jour disponible"
|
update-available-title: "Mise à jour disponible"
|
||||||
update-available: "Une nouvelle version de Misskey est disponible ({newer}, version actuelle: {current}). Veuillez recharger la page pour appliquer la mise à jour."
|
update-available: "Une nouvelle version de Misskey est disponible ({newer}, version actuelle: {current}). Veuillez recharger la page pour appliquer la mise à jour."
|
||||||
my-token-regenerated: "Votre token vient d'être généré, vous allez maintenant être déconnecté."
|
my-token-regenerated: "Votre token vient d'être généré, vous allez maintenant être déconnecté."
|
||||||
i-like-sushi: "Je préfère les sushis (au pudding)"
|
i-like-sushi: "Je préfère les sushis plutôt que le pudding"
|
||||||
show-reversi-board-labels: "Afficher les étiquettes des lignes et colonnes dans Reversi"
|
show-reversi-board-labels: "Afficher les étiquettes des lignes et colonnes dans Reversi"
|
||||||
verified-user: "認証済みのユーザー"
|
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
||||||
|
verified-user: "Compte vérifié"
|
||||||
|
disable-animated-mfm: "Désactiver les textes animés dans les publications"
|
||||||
|
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "Partie nulle"
|
drawn: "Partie nulle"
|
||||||
my-turn: "C’est votre tour"
|
my-turn: "C’est votre tour"
|
||||||
opponent-turn: "Tour de l’adversaire"
|
opponent-turn: "Tour de l’adversaire"
|
||||||
turn-of: "C’est le tour de {}"
|
turn-of: "C’est le tour de {}"
|
||||||
past-turn-of: "C'est au tour de {}"
|
past-turn-of: "C'est au tour de {}"
|
||||||
|
won: "{} a gagné"
|
||||||
|
black: "Noirs"
|
||||||
|
white: "Blancs"
|
||||||
|
total: "Total"
|
||||||
|
this-turn: "Tour {}"
|
||||||
widgets:
|
widgets:
|
||||||
analog-clock: "Horloge analogique"
|
analog-clock: "Horloge analogique"
|
||||||
profile: "Profil"
|
profile: "Profil"
|
||||||
calendar: "Calendrier"
|
calendar: "Calendrier"
|
||||||
timemachine: "カレンダー(タイムマシン)"
|
timemachine: "Calendrier (Machine temporelle)"
|
||||||
activity: "Activité"
|
activity: "Activité"
|
||||||
rss: "Lecteur de flux RSS"
|
rss: "Lecteur de flux RSS"
|
||||||
memo: "Pense-bête"
|
memo: "Pense-bête"
|
||||||
trends: "Tendances"
|
trends: "Tendances"
|
||||||
photo-stream: "Flux de photos"
|
photo-stream: "Flux de photos"
|
||||||
posts-monitor: "Graph des publications"
|
posts-monitor: "Graphe des publications"
|
||||||
slideshow: "Diaporama"
|
slideshow: "Diaporama"
|
||||||
version: "Version"
|
version: "Version"
|
||||||
broadcast: "Diffusion"
|
broadcast: "Diffusion"
|
||||||
notifications: "Notifications"
|
notifications: "Notifications"
|
||||||
users: "Utilisateurs"
|
users: "Utilisateur·rice·s"
|
||||||
polls: "Sondages"
|
polls: "Sondages"
|
||||||
post-form: "投稿フォーム"
|
post-form: "Formulaire de publication"
|
||||||
messaging: "Messagerie"
|
messaging: "Messagerie"
|
||||||
server: "Info sur le serveur"
|
server: "Info sur le serveur"
|
||||||
donation: "Dons"
|
donation: "Dons"
|
||||||
@@ -86,7 +127,7 @@ common:
|
|||||||
widgets: "Widgets"
|
widgets: "Widgets"
|
||||||
home: "Accueil"
|
home: "Accueil"
|
||||||
local: "Local"
|
local: "Local"
|
||||||
hybrid: "ソーシャル"
|
hybrid: "Social"
|
||||||
global: "Global"
|
global: "Global"
|
||||||
notifications: "Notifications"
|
notifications: "Notifications"
|
||||||
list: "Liste"
|
list: "Liste"
|
||||||
@@ -99,8 +140,75 @@ common:
|
|||||||
rename: "Renommer"
|
rename: "Renommer"
|
||||||
stack-left: "Vers la gauche"
|
stack-left: "Vers la gauche"
|
||||||
pop-right: "Vers la droite"
|
pop-right: "Vers la droite"
|
||||||
|
auth/views/form.vue:
|
||||||
|
share-access: "Désirez-vous <b>autoriser</b> <i>{{ app.name }}</i> à avoir accès à votre compte ?"
|
||||||
|
permission-ask: "Cette application nécessite les autorisations suivantes :"
|
||||||
|
account-read: "Afficher les informations du compte :"
|
||||||
|
account-write: "Modifications des informations du compte :"
|
||||||
|
note-write: "Publier."
|
||||||
|
like-write: "Réagir aux publications."
|
||||||
|
following-write: "S'abonner et se désabonner."
|
||||||
|
drive-read: "Lire votre Drive"
|
||||||
|
drive-write: "Téléverser/supprimer des fichiers dans votre Drive."
|
||||||
|
notification-read: "Lire vos notifications."
|
||||||
|
notification-write: "Gérer vos notifications."
|
||||||
|
cancel: "Annuler"
|
||||||
|
accept: "Autoriser l’accès"
|
||||||
|
auth/views/index.vue:
|
||||||
|
loading: "Chargement en cours"
|
||||||
|
denied: "L'autorisation de l'application a été refusée."
|
||||||
|
denied-paragraph: "Cette application ne va pas accéder à votre compte."
|
||||||
|
already-authorized: "Cette application est déjà autorisée"
|
||||||
|
allowed: "アプリケーションの連携を許可しました"
|
||||||
|
callback-url: "Retour vers l'application"
|
||||||
|
please-go-back: "Veillez retourner à l'application."
|
||||||
|
error: "La session n'existe pas."
|
||||||
|
sign-in: "Veuillez vous connecter"
|
||||||
|
common/views/components/games/reversi/reversi.vue:
|
||||||
|
matching:
|
||||||
|
waiting-for: "En attente de {}"
|
||||||
|
cancel: "Annuler"
|
||||||
|
common/views/components/games/reversi/reversi.game.vue:
|
||||||
|
surrender: "Se rendre"
|
||||||
|
surrendered: "Par abandon"
|
||||||
|
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||||
|
looped-map: "Carte en boucle"
|
||||||
|
can-put-everywhere: "どこでも置けるモード"
|
||||||
|
common/views/components/games/reversi/reversi.index.vue:
|
||||||
|
title: "Misskey Reversi"
|
||||||
|
sub-title: "Jouer à Reversi avec vos ami·e·s !"
|
||||||
|
invite: "Inviter"
|
||||||
|
rule: "Comment jouer ?"
|
||||||
|
rule-desc: "リバーシは、相手と交互に石をボードに置いて、相手の石を挟んで自分の色に変えてゆき、最終的に残った石が多い方が勝ちというボードゲームです。"
|
||||||
|
mode-invite: "Inviter"
|
||||||
|
mode-invite-desc: "Inviter un·e joueur·se."
|
||||||
|
invitations: "Vous avez reçu une invitation !"
|
||||||
|
my-games: "Mes jeux"
|
||||||
|
all-games: "Tous les jeux"
|
||||||
|
enter-username: "Saisir un nom d'utilisateur·rice"
|
||||||
|
game-state:
|
||||||
|
ended: "Terminée"
|
||||||
|
playing: "En cours"
|
||||||
|
common/views/components/games/reversi/reversi.room.vue:
|
||||||
|
settings-of-the-game: "Paramètres du jeu"
|
||||||
|
choose-map: "Sélectionnez une carte"
|
||||||
|
random: "Aléatoire"
|
||||||
|
black-or-white: "Noirs/Blancs"
|
||||||
|
black-is: "{} Noirs"
|
||||||
|
rules: "Règles"
|
||||||
|
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||||
|
looped-map: "Carte en boucle"
|
||||||
|
can-put-everywhere: "どこでも置けるモード"
|
||||||
|
settings-of-the-bot: "Configuration du bot"
|
||||||
|
this-game-is-started-soon: "La partie commencera dans quelques instants"
|
||||||
|
waiting-for-other: "En attente que l'adversaire soit prêt"
|
||||||
|
waiting-for-me: "En attente que vous soyez prêt"
|
||||||
|
waiting-for-both: "En attente que vous soyez prêt"
|
||||||
|
cancel: "Annuler"
|
||||||
|
ready: "Prêt"
|
||||||
|
cancel-ready: "Annuler « Prêt »"
|
||||||
common/views/components/connect-failed.vue:
|
common/views/components/connect-failed.vue:
|
||||||
title: "Impossible de se connecter au server."
|
title: "Échec de connexion au serveur"
|
||||||
description: "Il y a soit un problème avec votre connexion internet, soit le serveur est hors-ligne ou en maintenance. Veuillez {ressayer} plus tard."
|
description: "Il y a soit un problème avec votre connexion internet, soit le serveur est hors-ligne ou en maintenance. Veuillez {ressayer} plus tard."
|
||||||
thanks: "On vous remercie d'utiliser Misskey."
|
thanks: "On vous remercie d'utiliser Misskey."
|
||||||
troubleshoot: "dépanner"
|
troubleshoot: "dépanner"
|
||||||
@@ -110,7 +218,7 @@ common/views/components/connect-failed.troubleshooter.vue:
|
|||||||
checking-network: "Vérification de la connexion au réseau"
|
checking-network: "Vérification de la connexion au réseau"
|
||||||
internet: "Connexion Internet"
|
internet: "Connexion Internet"
|
||||||
checking-internet: "Vérification de la connexion internet"
|
checking-internet: "Vérification de la connexion internet"
|
||||||
server: "Connexion au server"
|
server: "Connexion au serveur"
|
||||||
checking-server: "Vérification de la connexion au serveur"
|
checking-server: "Vérification de la connexion au serveur"
|
||||||
finding: "Recherche d'un problème"
|
finding: "Recherche d'un problème"
|
||||||
no-network: "Aucune connexion au réseau"
|
no-network: "Aucune connexion au réseau"
|
||||||
@@ -118,48 +226,52 @@ common/views/components/connect-failed.troubleshooter.vue:
|
|||||||
no-internet: "Aucune connexion internet."
|
no-internet: "Aucune connexion internet."
|
||||||
no-internet-desc: "Veuillez vérifier que vous êtes bien connecté à internet."
|
no-internet-desc: "Veuillez vérifier que vous êtes bien connecté à internet."
|
||||||
no-server: "Impossible de se connecter au serveur"
|
no-server: "Impossible de se connecter au serveur"
|
||||||
no-server-desc: "Votre connexion est OK, mais il a été impossible de vous connecter au serveur de Misskey. Il y a des chances que le serveur soit hors-ligne ou en maintenance, veuillez ressayer plus tard."
|
no-server-desc: "Votre connexion semble correcte, mais il a été impossible de vous connecter au serveur de Misskey. Il se peut que le serveur soit hors-ligne ou en maintenance, veuillez ressayer plus tard."
|
||||||
success: "Connexion au serveur de Misskey reussie!"
|
success: "Connexion au serveur de Misskey réussie !"
|
||||||
success-desc: "La connexion au serveur a été reussie. Veuillez recharger la page."
|
success-desc: "Succès de la connexion au serveur de Misskey. Veuillez recharger la page."
|
||||||
flush: "Vider le cache"
|
flush: "Vider le cache"
|
||||||
set-version: "Choisissez une version"
|
set-version: "Choisissez une version"
|
||||||
common/views/components/messaging.vue:
|
common/views/components/messaging.vue:
|
||||||
search-user: "Trouver un utilisateur"
|
search-user: "Trouver un·e utilisateur·trice"
|
||||||
you: "Vous"
|
you: "Vous"
|
||||||
no-history: "Pas d'historique"
|
no-history: "Pas d'historique"
|
||||||
common/views/components/messaging-room.vue:
|
common/views/components/messaging-room.vue:
|
||||||
empty: "Pas de conversations"
|
empty: "Pas de conversations"
|
||||||
more: "Voir Plus"
|
more: "Voir plus"
|
||||||
no-history: "Il n'y a pas plus d'historique"
|
no-history: "Il n'y a pas plus d'historique"
|
||||||
resize-form: "Faites glisser pour redimensionner"
|
resize-form: "Faites glisser pour redimensionner"
|
||||||
new-message: "Nouveau message"
|
new-message: "Nouveau message"
|
||||||
|
only-one-file-attached: "Un seul fichier peut être joint au message"
|
||||||
common/views/components/messaging-room.form.vue:
|
common/views/components/messaging-room.form.vue:
|
||||||
input-message-here: "Tapez ici votre message"
|
input-message-here: "Tapez ici votre message"
|
||||||
send: "Envoyer"
|
send: "Envoyer"
|
||||||
attach-from-local: "Joindre un fichier depuis votre PC"
|
attach-from-local: "Joindre un fichier depuis votre ordinateur"
|
||||||
attach-from-drive: "Joindre un fichier depuis votre Drive"
|
attach-from-drive: "Joindre un fichier depuis votre Drive"
|
||||||
|
only-one-file-attached: "Un seul fichier uniquement peut être joint au message"
|
||||||
common/views/components/messaging-room.message.vue:
|
common/views/components/messaging-room.message.vue:
|
||||||
is-read: "Lu"
|
is-read: "Lu"
|
||||||
deleted: "Ce message a été supprimé"
|
deleted: "Ce message a été supprimé"
|
||||||
common/views/components/nav.vue:
|
common/views/components/nav.vue:
|
||||||
about: "À propos"
|
about: "À propos"
|
||||||
stats: "Stats"
|
stats: "Statistiques"
|
||||||
status: "Status"
|
status: "Statut"
|
||||||
wiki: "Wiki"
|
wiki: "Wiki"
|
||||||
donors: "Donateurs"
|
donors: "Donateur·rice·s"
|
||||||
repository: "Repo"
|
repository: "Dépôt"
|
||||||
develop: "Développeurs"
|
develop: "Développeur·se·s"
|
||||||
feedback: "Remarques"
|
feedback: "Remarques"
|
||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
favorite: "Favorite this note"
|
detail: "詳細"
|
||||||
pin: "Épingler sur votre profile"
|
copy-link: "リンクをコピー"
|
||||||
|
favorite: "Mettre cette note en favoris"
|
||||||
|
pin: "Épingler sur votre profil"
|
||||||
delete: "Supprimer"
|
delete: "Supprimer"
|
||||||
delete-confirm: "Supprimer cette publication ?"
|
delete-confirm: "Supprimer cette publication ?"
|
||||||
remote: "Afficher les note originale"
|
remote: "Afficher la note originale"
|
||||||
common/views/components/poll.vue:
|
common/views/components/poll.vue:
|
||||||
vote-to: "Voter pour '{}'"
|
vote-to: "Voter pour '{}'"
|
||||||
vote-count: "{} votes"
|
vote-count: "{} votes"
|
||||||
total-users: "{} utilisateurs ont voté"
|
total-users: "{} utilisateur·rice·s ont voté·e·s"
|
||||||
vote: "Vote"
|
vote: "Vote"
|
||||||
show-result: "Montrer les résultats"
|
show-result: "Montrer les résultats"
|
||||||
voted: "Voté"
|
voted: "Voté"
|
||||||
@@ -172,104 +284,172 @@ common/views/components/poll-editor.vue:
|
|||||||
common/views/components/reaction-picker.vue:
|
common/views/components/reaction-picker.vue:
|
||||||
choose-reaction: "Choisissez votre réaction"
|
choose-reaction: "Choisissez votre réaction"
|
||||||
common/views/components/signin.vue:
|
common/views/components/signin.vue:
|
||||||
username: "Nom d'utilisateur"
|
username: "Nom d'utilisateur·rice"
|
||||||
password: "Mot de passe"
|
password: "Mot de passe"
|
||||||
token: "Token"
|
token: "Token"
|
||||||
signing-in: "Connexion...."
|
signing-in: "Connexion…"
|
||||||
signin: "Se connecter"
|
signin: "Se connecter"
|
||||||
|
or: "Ou"
|
||||||
|
signin-with-twitter: "Se connecter via Twitter"
|
||||||
|
login-failed: "Échec d'authentification. Veuillez vérifier que votre nom d'utilisateur et mot de passe sont corrects."
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
username: "Nom d'utilisateur"
|
invitation-code: "Code d’invitation"
|
||||||
checking: "Vérification"
|
invitation-info: "Si vous n’avez pas de code d’invitation, contactez un·e <a href=\"{}\">administrateur·rice</a>."
|
||||||
|
username: "Nom d'utilisateur·rice"
|
||||||
|
checking: "Vérification…"
|
||||||
available: "Disponible"
|
available: "Disponible"
|
||||||
unavailable: "Non disponible"
|
unavailable: "Non disponible"
|
||||||
error: "Erreur de réseau"
|
error: "Erreur du réseau"
|
||||||
invalid-format: "Utilisez seulement des lettres, nombres et/ou -."
|
invalid-format: "Vous pouvez utiliser des lettres, des nombres et _."
|
||||||
too-short: "Veuillez taper au moins un charactère!"
|
too-short: "Veuillez saisir au moins un caractère !"
|
||||||
too-long: "Veuillez entrer au maximum 20 charactères."
|
too-long: "Veuillez entrer au maximum 20 caractères."
|
||||||
password: "Mot de Passe"
|
password: "Mot de passe"
|
||||||
password-placeholder: "Nous recommendons au moins 8 charactères."
|
password-placeholder: "Nous recommandons au moins 8 caractères."
|
||||||
weak-password: "Faible"
|
weak-password: "Faible"
|
||||||
normal-password: "Moyen"
|
normal-password: "Moyen"
|
||||||
strong-password: "Fort"
|
strong-password: "Fort"
|
||||||
retype: "Retapez"
|
retype: "Retapez"
|
||||||
retype-placeholder: "Confirmez votre mot de passe"
|
retype-placeholder: "Confirmez votre mot de passe"
|
||||||
password-matched: "OK"
|
password-matched: "OK"
|
||||||
password-not-matched: "Les mots de passes ne correspondent pas."
|
password-not-matched: "Les mots de passe ne correspondent pas."
|
||||||
recaptcha: "Vérifier"
|
recaptcha: "Vérifier"
|
||||||
create: "Créer un compte"
|
create: "Créer un compte"
|
||||||
some-error: "La création de compte a échoué. Veuillez ressayer."
|
some-error: "La création du compte a échoué. Veuillez réessayer."
|
||||||
common/views/components/special-message.vue:
|
common/views/components/special-message.vue:
|
||||||
new-year: "Bonne année!"
|
new-year: "Bonne année !"
|
||||||
christmas: "Joyeux Noël!"
|
christmas: "Joyeux Noël !"
|
||||||
common/views/components/stream-indicator.vue:
|
common/views/components/stream-indicator.vue:
|
||||||
connecting: "Connexion en cours"
|
connecting: "Connexion en cours"
|
||||||
reconnecting: "Re-connexion en cours"
|
reconnecting: "Reconnexion en cours"
|
||||||
connected: "Connecté"
|
connected: "Connecté"
|
||||||
common/views/components/twitter-setting.vue:
|
common/views/components/twitter-setting.vue:
|
||||||
description: "Si vous liez votre compte Twitter à votre compte Misskey, vous verrez ensuite votre compte Twitter s'afficher sur votre profile, vous aurez aussi la possibilité de vous connecter à Misskey en utilisant votre compte Twitter."
|
description: "Si vous liez votre compte Twitter à votre compte Misskey, vous verrez ensuite votre compte Twitter s'afficher sur votre profil, vous aurez aussi la possibilité de vous connecter à Misskey en utilisant votre compte Twitter."
|
||||||
connected-to: "Vous êtes connecté à ce compte"
|
connected-to: "Vous êtes connecté à ce compte Twitter"
|
||||||
detail: "Detail..."
|
detail: "Détails…"
|
||||||
reconnect: "Reconnecter"
|
reconnect: "Reconnexion"
|
||||||
connect: "Lier votre compte Twitter"
|
connect: "Lier votre compte Twitter"
|
||||||
disconnect: "Deconnecter"
|
disconnect: "Déconnexion"
|
||||||
common/views/components/uploader.vue:
|
common/views/components/uploader.vue:
|
||||||
waiting: "En attente"
|
waiting: "Veuillez patienter"
|
||||||
common/views/components/visibility-chooser.vue:
|
common/views/components/visibility-chooser.vue:
|
||||||
public: "Public"
|
public: "Public"
|
||||||
home: "Accueil"
|
home: "Accueil"
|
||||||
home-desc: "Publier sur le fil d'Accueil uniquement"
|
home-desc: "Publier sur le fil d'Accueil uniquement"
|
||||||
followers: "Abonnés"
|
followers: "Abonné·e·s"
|
||||||
followers-desc: "Publier à vos abonnés uniquement"
|
followers-desc: "Publier à vos abonné·e·s uniquement"
|
||||||
specified: "Direct"
|
specified: "Direct"
|
||||||
specified-desc: "Publier aux utilisateurs mentionnés"
|
specified-desc: "Publier aux utilisateur·rice·s mentionné·e·s"
|
||||||
private: "Privé"
|
private: "Privé"
|
||||||
|
common/views/components/trends.vue:
|
||||||
|
count: "{}人が投稿"
|
||||||
|
empty: "トレンドなし"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "Récuperation"
|
fetching: "Récupération"
|
||||||
no-broadcasts: "No broadcasts"
|
no-broadcasts: "Aucune annonce"
|
||||||
have-a-nice-day: "Passez une bonne journée!"
|
have-a-nice-day: "Passez une bonne journée !"
|
||||||
next: "Suivant"
|
next: "Suivant"
|
||||||
|
common/views/widgets/calendar.vue:
|
||||||
|
year: "Année {}"
|
||||||
|
month: "Mois {}"
|
||||||
|
day: "Jour {}"
|
||||||
|
today: "Aujourd'hui :"
|
||||||
|
this-month: "Ce mois-ci :"
|
||||||
|
this-year: "Cette année :"
|
||||||
common/views/widgets/donation.vue:
|
common/views/widgets/donation.vue:
|
||||||
title: "Dons"
|
title: "Faire un don"
|
||||||
text: "Toutes les depences pour couvrir les frais de Misskey sortent directement de notre poche. Nous ne recevons pas d'argent, si vous pouvez nous faire dons d'argent, on vous serait eternellement reconnaissant. Si vous êtes intéressés veuilles contacter {}. Merci pour votre contribution!"
|
text: "Les frais pour faire fonctionner Misskey sortent directement de notre poche. Nous ne recevons pas d'argent issu de la publicité, si vous pouvez nous faire des dons, on vous serait éternellement reconnaissants. Si vous êtes intéressé·es veuillez contacter {}. Merci pour votre contribution !"
|
||||||
common/views/widgets/photo-stream.vue:
|
common/views/widgets/photo-stream.vue:
|
||||||
title: "Flux de photo"
|
title: "Flux de photos"
|
||||||
no-photos: "Pas de photos"
|
no-photos: "Pas de photo"
|
||||||
common/views/widgets/posts-monitor.vue:
|
common/views/widgets/posts-monitor.vue:
|
||||||
title: "Graph des publications"
|
title: "Graphe des publications"
|
||||||
toggle: "Basculer les vues"
|
toggle: "Basculer entre les vues"
|
||||||
common/views/widgets/hashtags.vue:
|
common/views/widgets/hashtags.vue:
|
||||||
title: "Étiquettes"
|
title: "Étiquettes"
|
||||||
count: "{} utilisateurs mentionnés"
|
|
||||||
empty: "Aucune tendance"
|
|
||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "Info sur le serveur"
|
title: "Informations sur le serveur"
|
||||||
toggle: "Afficher les vues"
|
toggle: "Afficher les vues"
|
||||||
common/views/widgets/memo.vue:
|
common/views/widgets/memo.vue:
|
||||||
title: "Pense-bête"
|
title: "Pense-bête"
|
||||||
memo: "Écrivez ici !"
|
memo: "Écrivez ici !"
|
||||||
save: "Enregistrer"
|
save: "Enregistrer"
|
||||||
|
common/views/widgets/slideshow.vue:
|
||||||
|
folder-customize-mode: "Pour pouvoir spécifier un dossier, veuillez quitter le mode de personnalisation"
|
||||||
|
folder: "Veuillez cliquer pour spécifier le dossier"
|
||||||
|
no-image: "Il n'y a aucune image dans ce dossier"
|
||||||
|
common/views/widgets/tips.vue:
|
||||||
|
tips-line1: "<kbd>t</kbd>でタイムラインにフォーカスできます"
|
||||||
|
tips-line2: "<kbd>p</kbd>または<kbd>n</kbd>で投稿フォームを開きます"
|
||||||
|
tips-line3: "Vous pouvez glisser et déposer des fichiers sur la fenêtre de la note"
|
||||||
|
tips-line4: "Vous pouvez coller des images à partir du presse-papier sur la fenêtre de la note"
|
||||||
|
tips-line5: "Vous pouvez téléverser des fichiers sur le Drive en faisant un glisser-déposer"
|
||||||
|
tips-line6: "Vous pouvez déplacer un dossier en le glissant dans le Drive"
|
||||||
|
tips-line7: "ドライブでフォルダをドラッグしてフォルダ移動できます"
|
||||||
|
tips-line8: "Vous pouvez personnaliser l'Accueil via les paramètres"
|
||||||
|
tips-line9: "Misskey est sous licence AGPLv3"
|
||||||
|
tips-line10: "タイムマシンウィジェットを利用すると、簡単に過去のタイムラインに遡れます"
|
||||||
|
tips-line11: "Vous pouvez épingler des notes sur votre page en cliquant sur « … »"
|
||||||
|
tips-line13: "Tous les fichiers attachés à cette publication sont sauvegardés dans le Drive"
|
||||||
|
tips-line14: "ホームのカスタマイズ中、ウィジェットを右クリックしてデザインを変更できます"
|
||||||
|
tips-line17: "Vous pouvez mettre un texte en surbrillance en le mettant entre ** **"
|
||||||
|
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
|
||||||
|
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
|
||||||
|
tips-line21: "Vous pouvez aussi utiliser l'API pour développer des Bots."
|
||||||
|
tips-line23: "まゆかわいいよまゆ"
|
||||||
|
tips-line24: "Misskey a vu le jour en 2014"
|
||||||
|
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
||||||
common/views/pages/follow.vue:
|
common/views/pages/follow.vue:
|
||||||
signed-in-as: "Connecté en tant que {}"
|
signed-in-as: "Connecté·e en tant que {}"
|
||||||
following: "Suit"
|
following: "Suit"
|
||||||
follow: "Suivre"
|
follow: "Suivre"
|
||||||
request-pending: "Demande d'abonnement en attente"
|
request-pending: "Demande d'abonnement en attente"
|
||||||
follow-request: "Demande d'abonnement"
|
follow-request: "Demande d'abonnement"
|
||||||
|
desktop:
|
||||||
|
banner-crop-title: "Découpez la partie qui apparaitra comme bannière"
|
||||||
|
banner: "Bannière"
|
||||||
|
uploading-banner: "Téléversement d'une nouvelle bannière"
|
||||||
|
banner-updated: "La bannière est mise à jour"
|
||||||
|
choose-banner: "Choisir une bannière"
|
||||||
|
avatar-crop-title: "Découpez la partie qui apparaitra comme avatar"
|
||||||
|
avatar: "Avatar"
|
||||||
|
uploading-avatar: "Téléversement du nouvel avatar"
|
||||||
|
avatar-updated: "L'avatar est mis à jour"
|
||||||
|
choose-avatar: "Choisir un avatar"
|
||||||
|
invalid-filetype: "この形式のファイルはサポートされていません"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Noir ... Total"
|
total: "Noirs ... Total"
|
||||||
notes: "Bleu ... Notes"
|
notes: "Bleu ... Notes"
|
||||||
replies: "Rouge ... Réponses"
|
replies: "Rouge ... Réponses"
|
||||||
renotes: "Vert ... Partages"
|
renotes: "Vert ... Partages"
|
||||||
desktop/views/components/activity.vue:
|
desktop/views/components/activity.vue:
|
||||||
title: "Activitié"
|
title: "Activité"
|
||||||
toggle: "Afficher les vues"
|
toggle: "Afficher les vues"
|
||||||
desktop/views/components/calendar.vue:
|
desktop/views/components/calendar.vue:
|
||||||
title: "{1} / {2}"
|
title: "{1} / {2}"
|
||||||
prev: "Mois dernier"
|
prev: "Mois dernier"
|
||||||
next: "Mois prochain"
|
next: "Mois prochain"
|
||||||
go: "Cliquer pour naviguer"
|
go: "Cliquez pour naviguer"
|
||||||
|
desktop/views/components/charts.vue:
|
||||||
|
title: "Graphiques"
|
||||||
|
per-day: "par jour"
|
||||||
|
per-hour: "par heure"
|
||||||
|
notes: "Publications"
|
||||||
|
users: "Utilisateurs"
|
||||||
|
drive: "Drive"
|
||||||
|
charts:
|
||||||
|
notes: "投稿の増減 (統合)"
|
||||||
|
local-notes: "投稿の増減 (ローカル)"
|
||||||
|
remote-notes: "投稿の増減 (リモート)"
|
||||||
|
notes-total: "投稿の累計"
|
||||||
|
users: "ユーザーの増減"
|
||||||
|
users-total: "ユーザーの累計"
|
||||||
|
drive: "ドライブ使用量の増減"
|
||||||
|
drive-total: "ドライブ使用量の累計"
|
||||||
|
drive-files: "ドライブのファイル数の増減"
|
||||||
|
drive-files-total: "ドライブのファイル数の累計"
|
||||||
desktop/views/components/choose-file-from-drive-window.vue:
|
desktop/views/components/choose-file-from-drive-window.vue:
|
||||||
choose-file: "Sélection de fichiers"
|
choose-file: "Sélection de fichiers"
|
||||||
upload: "Téléverser des fichiers à partir de votre PC"
|
upload: "Téléverser des fichiers à partir de votre ordinateur"
|
||||||
cancel: "Annuler"
|
cancel: "Annuler"
|
||||||
ok: "OK"
|
ok: "OK"
|
||||||
choose-prompt: "Choisir un fichier"
|
choose-prompt: "Choisir un fichier"
|
||||||
@@ -287,6 +467,7 @@ desktop/views/components/drive-window.vue:
|
|||||||
desktop/views/components/drive.file.vue:
|
desktop/views/components/drive.file.vue:
|
||||||
avatar: "Avatar"
|
avatar: "Avatar"
|
||||||
banner: "Bannière"
|
banner: "Bannière"
|
||||||
|
nsfw: "CW"
|
||||||
contextmenu:
|
contextmenu:
|
||||||
rename: "Renommer"
|
rename: "Renommer"
|
||||||
mark-as-sensitive: "Marquer comme sensible"
|
mark-as-sensitive: "Marquer comme sensible"
|
||||||
@@ -300,14 +481,14 @@ desktop/views/components/drive.file.vue:
|
|||||||
add-app: "Ajouter une application"
|
add-app: "Ajouter une application"
|
||||||
rename-file: "Renommer le ficher"
|
rename-file: "Renommer le ficher"
|
||||||
input-new-file-name: "Entrer un nouveau nom"
|
input-new-file-name: "Entrer un nouveau nom"
|
||||||
copied: "Copied"
|
copied: "Copié"
|
||||||
copied-url-to-clipboard: "L'URL a été copié dans le presse-papier"
|
copied-url-to-clipboard: "L'URL a été copiée dans le presse-papier"
|
||||||
desktop/views/components/drive.folder.vue:
|
desktop/views/components/drive.folder.vue:
|
||||||
unable-to-process: "L'opération n'a pas pu être complétée"
|
unable-to-process: "L'opération n'a pas pu être complétée"
|
||||||
circular-reference-detected: "Le dossier de destination est un sous-dossier du dossier que vous souhaitez déplacer."
|
circular-reference-detected: "Le dossier de destination est un sous-dossier du dossier que vous souhaitez déplacer."
|
||||||
unhandled-error: "Erreur inconnue"
|
unhandled-error: "Erreur inconnue"
|
||||||
contextmenu:
|
contextmenu:
|
||||||
move-to-this-folder: "Bouger dans ce dossier"
|
move-to-this-folder: "Déplacer dans ce dossier"
|
||||||
show-in-new-window: "Ouvrir dans une nouvelle fenêtre"
|
show-in-new-window: "Ouvrir dans une nouvelle fenêtre"
|
||||||
rename: "Renommer"
|
rename: "Renommer"
|
||||||
rename-folder: "Renommer le dossier"
|
rename-folder: "Renommer le dossier"
|
||||||
@@ -335,7 +516,7 @@ desktop/views/components/drive.vue:
|
|||||||
upload: "Uploader un fichier"
|
upload: "Uploader un fichier"
|
||||||
url-upload: "Uploader d'un URL"
|
url-upload: "Uploader d'un URL"
|
||||||
desktop/views/components/media-image.vue:
|
desktop/views/components/media-image.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "Le contenu est NSFW"
|
||||||
click-to-show: "Cliquer pour afficher"
|
click-to-show: "Cliquer pour afficher"
|
||||||
desktop/views/components/media-video.vue:
|
desktop/views/components/media-video.vue:
|
||||||
sensitive: "Le contenu est NSFW"
|
sensitive: "Le contenu est NSFW"
|
||||||
@@ -346,16 +527,16 @@ desktop/views/components/follow-button.vue:
|
|||||||
request-pending: "En attente d'approbation"
|
request-pending: "En attente d'approbation"
|
||||||
follow-request: "Demande d'abonnement"
|
follow-request: "Demande d'abonnement"
|
||||||
desktop/views/components/followers-window.vue:
|
desktop/views/components/followers-window.vue:
|
||||||
followers: "{} abonnés"
|
followers: "{} abonné·e·s"
|
||||||
desktop/views/components/followers.vue:
|
desktop/views/components/followers.vue:
|
||||||
empty: "Il semble que vous n'avez pas encore d'abonnés."
|
empty: "Il semble que vous n'avez pas encore d'abonné·e·s."
|
||||||
desktop/views/components/following-window.vue:
|
desktop/views/components/following-window.vue:
|
||||||
following: "Suit {}"
|
following: "Suit {}"
|
||||||
desktop/views/components/following.vue:
|
desktop/views/components/following.vue:
|
||||||
empty: "Vous ne suivez aucun compte."
|
empty: "Vous ne suivez aucun compte."
|
||||||
desktop/views/components/friends-maker.vue:
|
desktop/views/components/friends-maker.vue:
|
||||||
title: "Utilisateurs recommandés :"
|
title: "Utilisateurs recommandés :"
|
||||||
empty: "Impossible de trouver des utilisateurs à recommander."
|
empty: "Impossible de trouver des utilisateurs·trices à recommander."
|
||||||
fetching: "Chargement"
|
fetching: "Chargement"
|
||||||
refresh: "Plus"
|
refresh: "Plus"
|
||||||
close: "Fermer"
|
close: "Fermer"
|
||||||
@@ -388,6 +569,8 @@ desktop/views/components/notes.note.vue:
|
|||||||
detail: "Afficher les détails"
|
detail: "Afficher les détails"
|
||||||
private: "cette publication est privée"
|
private: "cette publication est privée"
|
||||||
deleted: "cette publication a été supprimée"
|
deleted: "cette publication a été supprimée"
|
||||||
|
hide: "Masquer"
|
||||||
|
see-more: "Voir plus"
|
||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "Échec du chargement."
|
error: "Échec du chargement."
|
||||||
retry: "Réessayer"
|
retry: "Réessayer"
|
||||||
@@ -396,6 +579,9 @@ desktop/views/components/notifications.vue:
|
|||||||
more: "Plus"
|
more: "Plus"
|
||||||
empty: "Pas de notifications"
|
empty: "Pas de notifications"
|
||||||
desktop/views/components/post-form.vue:
|
desktop/views/components/post-form.vue:
|
||||||
|
add-visible-user: "+Ajouter un utilisateur"
|
||||||
|
attach-location-information: "Attacher des informations de localisation"
|
||||||
|
hide-contents: "Masquer les contenus"
|
||||||
reply-placeholder: "Répondre à cette note"
|
reply-placeholder: "Répondre à cette note"
|
||||||
quote-placeholder: "Citer cette note"
|
quote-placeholder: "Citer cette note"
|
||||||
submit: "Poster"
|
submit: "Poster"
|
||||||
@@ -415,7 +601,12 @@ desktop/views/components/post-form.vue:
|
|||||||
create-poll: "Créer un sondage"
|
create-poll: "Créer un sondage"
|
||||||
text-remain: "{} charactères restants"
|
text-remain: "{} charactères restants"
|
||||||
recent-tags: "Récent"
|
recent-tags: "Récent"
|
||||||
click-to-tagging: "クリックでタグ付け"
|
click-to-tagging: "Cliquer pour tagguer"
|
||||||
|
visibility: "Visibilité"
|
||||||
|
geolocation-alert: "Votre appareil ne prend pas en charge les services de localisation"
|
||||||
|
error: "Erreur"
|
||||||
|
enter-username: "Saisir un nom d'utilisateur …"
|
||||||
|
annotations: "内容への注釈 (オプション)"
|
||||||
desktop/views/components/post-form-window.vue:
|
desktop/views/components/post-form-window.vue:
|
||||||
note: "Nouvelle note"
|
note: "Nouvelle note"
|
||||||
reply: "Répondre"
|
reply: "Répondre"
|
||||||
@@ -460,16 +651,20 @@ desktop/views/components/settings.vue:
|
|||||||
delete-wallpaper: "Supprimer le fond d'écran"
|
delete-wallpaper: "Supprimer le fond d'écran"
|
||||||
dark-mode: "Mode nuit"
|
dark-mode: "Mode nuit"
|
||||||
circle-icons: "Utiliser des icônes circulaires"
|
circle-icons: "Utiliser des icônes circulaires"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
gradient-window-header: "Utiliser les dégradés sur la barre de titre de la fenêtre"
|
gradient-window-header: "Utiliser les dégradés sur la barre de titre de la fenêtre"
|
||||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
suggest-recent-hashtags: "Afficher les hashtags populaires dans le champs de saisie"
|
||||||
|
show-clock-on-header: "Afficher l'horloge à droite sur le coté supérieur"
|
||||||
|
show-reply-target: "Afficher les réponses"
|
||||||
show-my-renotes: "Afficher mes republications dans le fil"
|
show-my-renotes: "Afficher mes republications dans le fil"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿をタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "Afficher la carte"
|
show-maps: "Afficher la carte"
|
||||||
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
||||||
sound: "Son"
|
sound: "Son"
|
||||||
enable-sounds: "Activer le son"
|
enable-sounds: "Activer le son"
|
||||||
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
|
enable-sounds-desc: "Jouer un son lorsque vous recevez un message. Ce paramètre est sauvegardé dans le navigateur."
|
||||||
volume: "Volume"
|
volume: "Volume"
|
||||||
test: "Test"
|
test: "Test"
|
||||||
mobile: "Mobile"
|
mobile: "Mobile"
|
||||||
@@ -530,12 +725,15 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
desktop/views/components/settings.api.vue:
|
desktop/views/components/settings.api.vue:
|
||||||
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
||||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
regeneration-of-token: "Si votre jeton est compromis, vous pouvez le régénérer."
|
||||||
regenerate-token: "Regenerer le token"
|
regenerate-token: "Regenerer le token"
|
||||||
token: "Jeton :"
|
token: "Jeton :"
|
||||||
enter-password: "Veuillez entrer le mot de passe"
|
enter-password: "Veuillez entrer le mot de passe"
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "Aucune application autorisée"
|
no-apps: "Aucune application autorisée"
|
||||||
|
desktop/views/components/settings.drive.vue:
|
||||||
|
max: "Maximum"
|
||||||
|
in-use: "en cours d’utilisation"
|
||||||
desktop/views/components/settings.mute.vue:
|
desktop/views/components/settings.mute.vue:
|
||||||
no-users: "Aucun utilisateurs mis en sourdine"
|
no-users: "Aucun utilisateurs mis en sourdine"
|
||||||
desktop/views/components/settings.password.vue:
|
desktop/views/components/settings.password.vue:
|
||||||
@@ -554,10 +752,11 @@ desktop/views/components/settings.profile.vue:
|
|||||||
birthday: "Date de naissance"
|
birthday: "Date de naissance"
|
||||||
save: "Mettre à jour le profil"
|
save: "Mettre à jour le profil"
|
||||||
locked-account: "Protéger votre compte"
|
locked-account: "Protéger votre compte"
|
||||||
is-locked: "投稿を非公開にする"
|
is-locked: "Rendre la note privée"
|
||||||
other: "Autre"
|
other: "Autre"
|
||||||
is-bot: "Ce compte est un Bot"
|
is-bot: "Ce compte est un Bot"
|
||||||
is-cat: "Ce compte est un Chat"
|
is-cat: "Ce compte est un Chat"
|
||||||
|
profile-updated: "Profil mis à jour"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
private: "cette publication est privée"
|
private: "cette publication est privée"
|
||||||
deleted: "cette publication a été supprimée"
|
deleted: "cette publication a été supprimée"
|
||||||
@@ -572,14 +771,16 @@ desktop/views/components/timeline.vue:
|
|||||||
global: "Global"
|
global: "Global"
|
||||||
list: "Listes"
|
list: "Listes"
|
||||||
desktop/views/components/ui.header.vue:
|
desktop/views/components/ui.header.vue:
|
||||||
welcome-back: "Vous êtes de retour !"
|
welcome-back: "Content de vous revoir !"
|
||||||
|
adjective: "さん"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "Votre profil"
|
profile: "Votre profil"
|
||||||
drive: "Drive"
|
drive: "Drive"
|
||||||
favorites: "Favorites"
|
favorites: "Favorites"
|
||||||
lists: "Listes"
|
lists: "Listes"
|
||||||
follow-requests: "Demandes de suivi"
|
follow-requests: "Demandes de suivi"
|
||||||
customize: "ホームのカスタマイズ"
|
customize: "Personnaliser l'Accueil"
|
||||||
|
admin: "Admin"
|
||||||
settings: "Réglages"
|
settings: "Réglages"
|
||||||
signout: "Déconnexion"
|
signout: "Déconnexion"
|
||||||
dark: "Fall in dark"
|
dark: "Fall in dark"
|
||||||
@@ -601,10 +802,11 @@ desktop/views/components/received-follow-requests-window.vue:
|
|||||||
desktop/views/components/user-lists-window.vue:
|
desktop/views/components/user-lists-window.vue:
|
||||||
title: "Listes de l'utilisateur"
|
title: "Listes de l'utilisateur"
|
||||||
create-list: "Créer une liste"
|
create-list: "Créer une liste"
|
||||||
|
list-name: "Nom de la liste"
|
||||||
desktop/views/components/user-preview.vue:
|
desktop/views/components/user-preview.vue:
|
||||||
notes: "Publications"
|
notes: "Publications"
|
||||||
following: "Abonné à"
|
following: "Abonné à"
|
||||||
followers: "Abonnés"
|
followers: "Abonné·e·s"
|
||||||
desktop/views/components/users-list.vue:
|
desktop/views/components/users-list.vue:
|
||||||
all: "Tout"
|
all: "Tout"
|
||||||
iknow: "Vous connaissez"
|
iknow: "Vous connaissez"
|
||||||
@@ -615,6 +817,34 @@ desktop/views/components/users-list-item.vue:
|
|||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "Fermer"
|
close: "Fermer"
|
||||||
|
desktop/views/pages/admin/admin.vue:
|
||||||
|
dashboard: "Tableau de bord"
|
||||||
|
drive: "Drive"
|
||||||
|
users: "Utilisateur·rice·s"
|
||||||
|
update: "Mises à jour"
|
||||||
|
desktop/views/pages/admin/admin.dashboard.vue:
|
||||||
|
dashboard: "Tableau de bord"
|
||||||
|
all-users: "Toutes les utilisateurrices"
|
||||||
|
original-users: "Utilisateurrices sur cette instance"
|
||||||
|
all-notes: "Toutes les publications"
|
||||||
|
original-notes: "Publication sur cette instance"
|
||||||
|
invite: "Invitation"
|
||||||
|
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||||
|
suspend-user: "Suspendre un·e utilisateur·rice"
|
||||||
|
suspend: "Suspendre"
|
||||||
|
suspended: "Suspendu avec succès"
|
||||||
|
desktop/views/pages/admin/admin.unsuspend-user.vue:
|
||||||
|
unsuspend-user: "Lever la suspension d’utilisateur·rice·s"
|
||||||
|
unsuspend: "Suspension levée"
|
||||||
|
unsuspended: "La suspension de l’utilisateur·rice a été levée avec succès"
|
||||||
|
desktop/views/pages/admin/admin.verify-user.vue:
|
||||||
|
verify-user: "Paramètres de vérification du compte utilisateur"
|
||||||
|
verify: "Vérification du compte"
|
||||||
|
verified: "Le compte a été vérifié"
|
||||||
|
desktop/views/pages/admin/admin.unverify-user.vue:
|
||||||
|
unverify-user: "ユーザーの公式アカウント解除"
|
||||||
|
unverify: "Ôter la vérification du compte"
|
||||||
|
unverified: "Ce compte n'est pas vérifié"
|
||||||
desktop/views/pages/deck/deck.tl-column.vue:
|
desktop/views/pages/deck/deck.tl-column.vue:
|
||||||
is-media-only: "Les publications médias uniquement"
|
is-media-only: "Les publications médias uniquement"
|
||||||
is-media-view: "Vue média"
|
is-media-view: "Vue média"
|
||||||
@@ -623,6 +853,11 @@ desktop/views/pages/deck/deck.note.vue:
|
|||||||
reposted-by: "Reposté par {}"
|
reposted-by: "Reposté par {}"
|
||||||
private: "cette publication est privée"
|
private: "cette publication est privée"
|
||||||
deleted: "cette publication a été supprimée"
|
deleted: "cette publication a été supprimée"
|
||||||
|
desktop/views/pages/stats/stats.vue:
|
||||||
|
all-users: "Toutes les utilisateurrices"
|
||||||
|
original-users: "Utilisateurrices sur cette instance"
|
||||||
|
all-notes: "Toutes les publications"
|
||||||
|
original-notes: "Publication sur cette instance"
|
||||||
desktop/views/pages/welcome.vue:
|
desktop/views/pages/welcome.vue:
|
||||||
about: "à propos"
|
about: "à propos"
|
||||||
gotit: "J'ai compris !"
|
gotit: "J'ai compris !"
|
||||||
@@ -631,6 +866,10 @@ desktop/views/pages/welcome.vue:
|
|||||||
signin-button: "Se connecter"
|
signin-button: "Se connecter"
|
||||||
signup-button: "S'inscrire"
|
signup-button: "S'inscrire"
|
||||||
timeline: "Fil d'actualité"
|
timeline: "Fil d'actualité"
|
||||||
|
announcements: "お知らせ"
|
||||||
|
photos: "最近の画像"
|
||||||
|
powered-by-misskey: "Propulsé par <b>Misskey</b>."
|
||||||
|
info: "情報"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Lecteur de Misskey"
|
title: "Lecteur de Misskey"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
@@ -645,12 +884,19 @@ desktop/views/pages/selectdrive.vue:
|
|||||||
ok: "OK"
|
ok: "OK"
|
||||||
cancel: "Annuler"
|
cancel: "Annuler"
|
||||||
upload: "Uploader un ou plusieurs fichier(s) depuis votre PC"
|
upload: "Uploader un ou plusieurs fichier(s) depuis votre PC"
|
||||||
|
desktop/views/pages/search.vue:
|
||||||
|
not-available: "検索機能はインスタンスの設定で無効になっています。"
|
||||||
|
not-found: "Aucun message trouvé pour '{}'"
|
||||||
|
desktop/views/pages/share.vue:
|
||||||
|
share-with: "Partager avec {}"
|
||||||
|
desktop/views/pages/tag.vue:
|
||||||
|
no-posts-found: "Pas de message avec un hashtag {} trouvé."
|
||||||
desktop/views/pages/user-list.users.vue:
|
desktop/views/pages/user-list.users.vue:
|
||||||
users: "Utilisateurs"
|
users: "Utilisateurs"
|
||||||
add-user: "Ajouter un utilisateur"
|
add-user: "Ajouter un utilisateur"
|
||||||
username: "Nom d'utilisateur"
|
username: "Nom d'utilisateur"
|
||||||
desktop/views/pages/user/user.followers-you-know.vue:
|
desktop/views/pages/user/user.followers-you-know.vue:
|
||||||
title: "Abonnés que vous connaissez"
|
title: "Abonné·e·s que vous connaissez"
|
||||||
loading: "Chargement en cours"
|
loading: "Chargement en cours"
|
||||||
no-users: "Pas d'utilisateurs"
|
no-users: "Pas d'utilisateurs"
|
||||||
desktop/views/pages/user/user.friends.vue:
|
desktop/views/pages/user/user.friends.vue:
|
||||||
@@ -669,16 +915,18 @@ desktop/views/pages/user/user.photos.vue:
|
|||||||
no-photos: "Pas de photos"
|
no-photos: "Pas de photos"
|
||||||
desktop/views/pages/user/user.profile.vue:
|
desktop/views/pages/user/user.profile.vue:
|
||||||
follows-you: "Vous suis"
|
follows-you: "Vous suis"
|
||||||
stalk: "ストークする"
|
stalk: "Traquer"
|
||||||
stalking: "ストーキングしています"
|
stalking: "ストーキングしています"
|
||||||
unstalk: "ストーク解除"
|
unstalk: "ストーク解除"
|
||||||
mute: "Mettre en sourdine"
|
mute: "Mettre en sourdine"
|
||||||
muted: "Muting"
|
muted: "Muting"
|
||||||
unmute: "Enlever la sourdine"
|
unmute: "Enlever la sourdine"
|
||||||
|
push-to-a-list: "Ajouter à la liste"
|
||||||
|
list-pushed: "Vous avez ajouté {user} à la liste {list}."
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.header.vue:
|
||||||
posts: "Notes"
|
posts: "Notes"
|
||||||
following: "Suit"
|
following: "Suit"
|
||||||
followers: "Abonnés"
|
followers: "Abonné·e·s"
|
||||||
is-bot: "Ce compte est un Bot"
|
is-bot: "Ce compte est un Bot"
|
||||||
desktop/views/pages/user/user.timeline.vue:
|
desktop/views/pages/user/user.timeline.vue:
|
||||||
default: "Publications"
|
default: "Publications"
|
||||||
@@ -717,11 +965,11 @@ mobile/views/components/drive.vue:
|
|||||||
load-more: "Charger plus"
|
load-more: "Charger plus"
|
||||||
nothing-in-drive: "Rien"
|
nothing-in-drive: "Rien"
|
||||||
folder-is-empty: "Ce dossier est vide"
|
folder-is-empty: "Ce dossier est vide"
|
||||||
prompt: "何をしますか?(数字を入力してください): <1 → ファイルをアップロード | 2 → ファイルをURLでアップロード | 3 → フォルダ作成 | 4 → このフォルダ名を変更 | 5 → このフォルダを移動 | 6 → このフォルダを削除>"
|
prompt: "Que veux-tu faire ? (Entrez un nombre): <1 → Télécharger le fichier | 2 → Télécharger le fichier avec l'URL | 3 → Créer le dossier | 4 → Modifier le nom du dossier | 5 → Déplacer ce dossier | 6 → Supprimer ce dossier >"
|
||||||
deletion-alert: "Désolé ! La suppression d’un dossier n’est pas encore implémentée."
|
deletion-alert: "Désolé ! La suppression d’un dossier n’est pas encore implémentée."
|
||||||
folder-name: "Nom du dossier"
|
folder-name: "Nom du dossier"
|
||||||
root-rename-alert: "現在いる場所はルートで、フォルダではないため名前の変更はできません。名前を変更したいフォルダに移動してからやってください。"
|
root-rename-alert: "L'emplacement actuel est la racine, pas le dossier, vous ne pouvez donc pas le renommer. Veuillez vous déplacer dans le dossier dont vous souhaitez modifier le nom."
|
||||||
root-move-alert: "現在いる場所はルートで、フォルダではないため移動はできません。移動したいフォルダに移動してからやってください。"
|
root-move-alert: "L'emplacement actuel est la racine, ce n'est pas un dossier et il ne peut pas être déplacé. Veuillez vous déplacer dans le dossier que vous souhaitez déplacer."
|
||||||
url-prompt: "URL du fichier que vous souhaitez téléverser"
|
url-prompt: "URL du fichier que vous souhaitez téléverser"
|
||||||
uploading: "アップロードをリクエストしました。アップロードが完了するまで時間がかかる場合があります。"
|
uploading: "アップロードをリクエストしました。アップロードが完了するまで時間がかかる場合があります。"
|
||||||
mobile/views/components/drive-file-detail.vue:
|
mobile/views/components/drive-file-detail.vue:
|
||||||
@@ -730,12 +978,15 @@ mobile/views/components/drive-file-chooser.vue:
|
|||||||
select-file: "Choisissez un fichier"
|
select-file: "Choisissez un fichier"
|
||||||
mobile/views/components/drive-folder-chooser.vue:
|
mobile/views/components/drive-folder-chooser.vue:
|
||||||
select-folder: "Choisissez un dossier"
|
select-folder: "Choisissez un dossier"
|
||||||
|
mobile/views/components/drive.file.vue:
|
||||||
|
nsfw: "閲覧注意"
|
||||||
mobile/views/components/drive.file-detail.vue:
|
mobile/views/components/drive.file-detail.vue:
|
||||||
download: "Télécharger"
|
download: "Télécharger"
|
||||||
rename: "Renommer"
|
rename: "Renommer"
|
||||||
move: "Déplacer"
|
move: "Déplacer"
|
||||||
hash: "Hash (md5)"
|
hash: "Hash (md5)"
|
||||||
exif: "EXIF"
|
exif: "EXIF"
|
||||||
|
nsfw: "閲覧注意"
|
||||||
mobile/views/components/media-image.vue:
|
mobile/views/components/media-image.vue:
|
||||||
sensitive: "Le contenu est NSFW"
|
sensitive: "Le contenu est NSFW"
|
||||||
click-to-show: "Cliquer pour afficher"
|
click-to-show: "Cliquer pour afficher"
|
||||||
@@ -749,7 +1000,7 @@ mobile/views/components/follow-button.vue:
|
|||||||
follow-request: "Demande d'abonnement"
|
follow-request: "Demande d'abonnement"
|
||||||
mobile/views/components/friends-maker.vue:
|
mobile/views/components/friends-maker.vue:
|
||||||
title: "Abonnez-vous aux utilisateurs"
|
title: "Abonnez-vous aux utilisateurs"
|
||||||
empty: "Impossible de trouver des utilisateurs à recommander."
|
empty: "Impossible de trouver des utilisateurs·trices à recommander."
|
||||||
fetching: "Chargement"
|
fetching: "Chargement"
|
||||||
refresh: "Voir plus"
|
refresh: "Voir plus"
|
||||||
close: "Fermer"
|
close: "Fermer"
|
||||||
@@ -788,7 +1039,7 @@ mobile/views/components/post-form.vue:
|
|||||||
renote: "Republier"
|
renote: "Republier"
|
||||||
quote-placeholder: "Citer ce billet ... (Facultatif)"
|
quote-placeholder: "Citer ce billet ... (Facultatif)"
|
||||||
reply-placeholder: "Répondre à cette note"
|
reply-placeholder: "Répondre à cette note"
|
||||||
cw-placeholder: "内容への注釈 (オプション)"
|
cw-placeholder: "Commenter le contenu (optionnel)"
|
||||||
location-alert: "Votre appareil ne prend pas en charge les services de localisation"
|
location-alert: "Votre appareil ne prend pas en charge les services de localisation"
|
||||||
error: "Erreur"
|
error: "Erreur"
|
||||||
username-prompt: "Saisir un nom d'utilisateur"
|
username-prompt: "Saisir un nom d'utilisateur"
|
||||||
@@ -800,6 +1051,9 @@ mobile/views/components/sub-note-content.vue:
|
|||||||
mobile/views/components/timeline.vue:
|
mobile/views/components/timeline.vue:
|
||||||
empty: "Pas de notes"
|
empty: "Pas de notes"
|
||||||
load-more: "Afficher plus"
|
load-more: "Afficher plus"
|
||||||
|
mobile/views/components/ui.header.vue:
|
||||||
|
welcome-back: "Content de vous revoir ! "
|
||||||
|
adjective: "さん"
|
||||||
mobile/views/components/ui.nav.vue:
|
mobile/views/components/ui.nav.vue:
|
||||||
timeline: "Fil d'actualité"
|
timeline: "Fil d'actualité"
|
||||||
notifications: "Notifications"
|
notifications: "Notifications"
|
||||||
@@ -813,6 +1067,7 @@ mobile/views/components/ui.nav.vue:
|
|||||||
game: "Jeux"
|
game: "Jeux"
|
||||||
darkmode: "Mode nuit"
|
darkmode: "Mode nuit"
|
||||||
settings: "Réglages"
|
settings: "Réglages"
|
||||||
|
admin: "Admin"
|
||||||
about: "À propose de Misskey"
|
about: "À propose de Misskey"
|
||||||
mobile/views/components/user-timeline.vue:
|
mobile/views/components/user-timeline.vue:
|
||||||
no-notes: "Cette utilisateur semble n'avoir rien poster pour le moment"
|
no-notes: "Cette utilisateur semble n'avoir rien poster pour le moment"
|
||||||
@@ -830,8 +1085,10 @@ mobile/views/pages/user-lists.vue:
|
|||||||
mobile/views/pages/drive.vue:
|
mobile/views/pages/drive.vue:
|
||||||
drive: "Drive"
|
drive: "Drive"
|
||||||
more: "Afficher plus ..."
|
more: "Afficher plus ..."
|
||||||
|
mobile/views/pages/signup.vue:
|
||||||
|
lets-start: "Commençons ! 📦"
|
||||||
mobile/views/pages/followers.vue:
|
mobile/views/pages/followers.vue:
|
||||||
followers-of: "Abonnés de {}"
|
followers-of: "Abonné·e·s de {}"
|
||||||
mobile/views/pages/following.vue:
|
mobile/views/pages/following.vue:
|
||||||
following-of: "Abonnements de {}"
|
following-of: "Abonnements de {}"
|
||||||
mobile/views/pages/home.vue:
|
mobile/views/pages/home.vue:
|
||||||
@@ -839,6 +1096,19 @@ mobile/views/pages/home.vue:
|
|||||||
local: "Local"
|
local: "Local"
|
||||||
hybrid: "Social"
|
hybrid: "Social"
|
||||||
global: "Global"
|
global: "Global"
|
||||||
|
mobile/views/pages/tag.vue:
|
||||||
|
no-posts-found: "Pas de message avec un hashtag {} trouvé."
|
||||||
|
mobile/views/pages/welcome.vue:
|
||||||
|
signup: "S'enregistrer"
|
||||||
|
mobile/views/pages/widgets.vue:
|
||||||
|
dashboard: "Tableau de bord"
|
||||||
|
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||||
|
add-widget: "Ajouter"
|
||||||
|
customization-tips: "Conseils de personnalisation"
|
||||||
|
mobile/views/pages/widgets/activity.vue:
|
||||||
|
activity: "Activité"
|
||||||
|
mobile/views/pages/share.vue:
|
||||||
|
share-with: "Partager avec {}"
|
||||||
mobile/views/pages/messaging.vue:
|
mobile/views/pages/messaging.vue:
|
||||||
messaging: "Messagerie"
|
messaging: "Messagerie"
|
||||||
mobile/views/pages/messaging-room.vue:
|
mobile/views/pages/messaging-room.vue:
|
||||||
@@ -854,6 +1124,8 @@ mobile/views/pages/note.vue:
|
|||||||
mobile/views/pages/notifications.vue:
|
mobile/views/pages/notifications.vue:
|
||||||
notifications: "Notifications"
|
notifications: "Notifications"
|
||||||
read-all: "Êtes vous sûr de vouloir marqués toutes les notifications non-lus en tant que lus?"
|
read-all: "Êtes vous sûr de vouloir marqués toutes les notifications non-lus en tant que lus?"
|
||||||
|
mobile/views/pages/games/reversi.vue:
|
||||||
|
reversi: "Reversi"
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
mobile/views/pages/settings/settings.profile.vue:
|
||||||
title: "Profil"
|
title: "Profil"
|
||||||
name: "Nom"
|
name: "Nom"
|
||||||
@@ -871,10 +1143,11 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
search: "Chercher"
|
search: "Chercher"
|
||||||
empty: "Aucun message trouvé pour '{}' "
|
empty: "Aucun message trouvé pour '{}' "
|
||||||
|
not-found: "Aucun post pour {} n'a été trouvé."
|
||||||
mobile/views/pages/selectdrive.vue:
|
mobile/views/pages/selectdrive.vue:
|
||||||
select-file: "Choisissez un fichier"
|
select-file: "Choisissez un fichier"
|
||||||
mobile/views/pages/settings.vue:
|
mobile/views/pages/settings.vue:
|
||||||
signed-in-as: "Connecté en tant que {}"
|
signed-in-as: "Connecté·e en tant que {}"
|
||||||
lang: "Langue"
|
lang: "Langue"
|
||||||
lang-tip: "Le rechargement de la page est requis afin d'appliquer les modifications."
|
lang-tip: "Le rechargement de la page est requis afin d'appliquer les modifications."
|
||||||
recommended: "Recommandé"
|
recommended: "Recommandé"
|
||||||
@@ -884,13 +1157,18 @@ mobile/views/pages/settings.vue:
|
|||||||
dark-mode: "Mode nuit"
|
dark-mode: "Mode nuit"
|
||||||
i-am-under-limited-internet: "J'ai un accès Internet limité"
|
i-am-under-limited-internet: "J'ai un accès Internet limité"
|
||||||
circle-icons: "Utiliser des icônes circulaires"
|
circle-icons: "Utiliser des icônes circulaires"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
timeline: "Fil d'actualité"
|
timeline: "Fil d'actualité"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "Afficher les réponses"
|
||||||
show-my-renotes: "Afficher mes republications"
|
show-my-renotes: "Afficher mes republications"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteを表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteを表示する"
|
||||||
post-style: "Style de la publication"
|
post-style: "Style de la publication"
|
||||||
post-style-standard: "Standard"
|
post-style-standard: "Standard"
|
||||||
post-style-smart: "Intelligent"
|
post-style-smart: "Intelligent"
|
||||||
|
notification-position: "通知の表示"
|
||||||
|
notification-position-bottom: "下"
|
||||||
|
notification-position-top: "上"
|
||||||
behavior: "Comportement"
|
behavior: "Comportement"
|
||||||
fetch-on-scroll: "Chargement lors du défilement"
|
fetch-on-scroll: "Chargement lors du défilement"
|
||||||
disable-via-mobile: "Ne pas mentionner que ma publication provient d'un 'périphérique mobile'"
|
disable-via-mobile: "Ne pas mentionner que ma publication provient d'un 'périphérique mobile'"
|
||||||
@@ -911,11 +1189,13 @@ mobile/views/pages/settings.vue:
|
|||||||
update-available-desc: "Les mises à jour seront appliquées une fois la page est rechargée."
|
update-available-desc: "Les mises à jour seront appliquées une fois la page est rechargée."
|
||||||
settings: "Réglages"
|
settings: "Réglages"
|
||||||
signout: "Déconnexion"
|
signout: "Déconnexion"
|
||||||
|
sound: "Sons"
|
||||||
|
enable-sounds: "サウンドを有効にする"
|
||||||
mobile/views/pages/user.vue:
|
mobile/views/pages/user.vue:
|
||||||
follows-you: "vous suit"
|
follows-you: "vous suit"
|
||||||
following: "Abonnements"
|
following: "Abonnements"
|
||||||
followers: "Abonnés"
|
followers: "Abonné·e·s"
|
||||||
notes: "Posts"
|
notes: "Notes"
|
||||||
overview: "Aperçu"
|
overview: "Aperçu"
|
||||||
timeline: "Fil d'actualité"
|
timeline: "Fil d'actualité"
|
||||||
media: "Media"
|
media: "Media"
|
||||||
@@ -929,7 +1209,7 @@ mobile/views/pages/user/home.vue:
|
|||||||
keywords: "Mot clés"
|
keywords: "Mot clés"
|
||||||
domains: "Domaines"
|
domains: "Domaines"
|
||||||
frequently-replied-users: "Utilisateurs qui interagissent souvent"
|
frequently-replied-users: "Utilisateurs qui interagissent souvent"
|
||||||
followers-you-know: "Abonnés que vous connaissez"
|
followers-you-know: "Abonné·e·s que vous connaissez"
|
||||||
last-used-at: "Dernière connexion il y a"
|
last-used-at: "Dernière connexion il y a"
|
||||||
mobile/views/pages/user/home.followers-you-know.vue:
|
mobile/views/pages/user/home.followers-you-know.vue:
|
||||||
loading: "Chargement"
|
loading: "Chargement"
|
||||||
@@ -953,15 +1233,17 @@ docs:
|
|||||||
params: "Paramètres"
|
params: "Paramètres"
|
||||||
no-params: "Aucun paramètre"
|
no-params: "Aucun paramètre"
|
||||||
res: "Réponse"
|
res: "Réponse"
|
||||||
require-credential: "このエンドポイントは認証情報が必須です。"
|
require-credential: "Ce point de communication nécessite une authentification."
|
||||||
require-permission: "このエンドポイントは{permission}の権限を必要とします。"
|
require-permission: "Ce point de communication nécessite la permission {permission}."
|
||||||
has-limit: "レートリミットがあります。"
|
has-limit: "レートリミットがあります。"
|
||||||
duration-limit: "直近{duration}ミリ秒の間のこのエンドポイントへのリクエスト数の合計が{max}を超える場合はリクエストできません。"
|
duration-limit: "直近{duration}ミリ秒の間のこのエンドポイントへのリクエスト数の合計が{max}を超える場合はリクエストできません。"
|
||||||
min-interval-limit: "前回のリクエストから{interval}ミリ秒経っていない場合はリクエストできません。"
|
min-interval-limit: "前回のリクエストから{interval}ミリ秒経っていない場合はリクエストできません。"
|
||||||
show-src: "このエンドポイントのソースコードも閲覧できます。"
|
show-src: "Vous pouvez voir le code source ce point de communication."
|
||||||
show-src-link: "Consulter le code sur GitHub"
|
show-src-link: "Consulter le code sur GitHub"
|
||||||
generated: "このドキュメントはAPI定義に基づき自動生成されています。"
|
generated: "Ce document est généré à partir de la définition de l’API."
|
||||||
props:
|
props:
|
||||||
name: "Nom"
|
name: "Nom"
|
||||||
type: "Type"
|
type: "Type"
|
||||||
description: "Description"
|
description: "Description"
|
||||||
|
dev/views/index.vue:
|
||||||
|
manage-apps: "Gestion des applications"
|
||||||
@@ -5,23 +5,9 @@
|
|||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const yaml = require('js-yaml');
|
const yaml = require('js-yaml');
|
||||||
|
|
||||||
const loadLang = lang => yaml.safeLoad(
|
const langs = ['de-DE', 'en-US', 'fr-FR', 'ja-JP', 'ja-KS', 'pl-PL', 'es-ES', 'nl-NL'];
|
||||||
fs.readFileSync(`${__dirname}/${lang}.yml`, 'utf-8'));
|
|
||||||
|
|
||||||
const native = loadLang('ja');
|
const loadLocale = lang => yaml.safeLoad(fs.readFileSync(`${__dirname}/${lang}.yml`, 'utf-8'));
|
||||||
|
const locales = langs.map(lang => ({ [lang]: loadLocale(lang) }));
|
||||||
|
|
||||||
const langs = {
|
module.exports = locales.reduce((a, b) => ({ ...a, ...b }));
|
||||||
'de': loadLang('de'),
|
|
||||||
'en': loadLang('en'),
|
|
||||||
'fr': loadLang('fr'),
|
|
||||||
'ja': native,
|
|
||||||
'pl': loadLang('pl'),
|
|
||||||
'es': loadLang('es')
|
|
||||||
};
|
|
||||||
|
|
||||||
Object.values(langs).forEach(locale => {
|
|
||||||
// Extend native language (Japanese)
|
|
||||||
Object.assign(locale, native);
|
|
||||||
});
|
|
||||||
|
|
||||||
module.exports = langs;
|
|
||||||
|
|||||||
@@ -6,6 +6,28 @@ common:
|
|||||||
misskey: "A ⭐ of fediverse"
|
misskey: "A ⭐ of fediverse"
|
||||||
about-title: "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>右</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:
|
time:
|
||||||
unknown: "なぞのじかん"
|
unknown: "なぞのじかん"
|
||||||
future: "未来"
|
future: "未来"
|
||||||
@@ -17,6 +39,8 @@ common:
|
|||||||
weeks_ago: "{}週間前"
|
weeks_ago: "{}週間前"
|
||||||
months_ago: "{}ヶ月前"
|
months_ago: "{}ヶ月前"
|
||||||
years_ago: "{}年前"
|
years_ago: "{}年前"
|
||||||
|
month-and-day: "{month}月 {day}日"
|
||||||
|
trash: "ゴミ箱"
|
||||||
weekday-short:
|
weekday-short:
|
||||||
sunday: "日"
|
sunday: "日"
|
||||||
monday: "月"
|
monday: "月"
|
||||||
@@ -25,6 +49,14 @@ common:
|
|||||||
thursday: "木"
|
thursday: "木"
|
||||||
friday: "金"
|
friday: "金"
|
||||||
saturday: "土"
|
saturday: "土"
|
||||||
|
weekday:
|
||||||
|
sunday: "日曜日"
|
||||||
|
monday: "月曜日"
|
||||||
|
tuesday: "火曜日"
|
||||||
|
wednesday: "水曜日"
|
||||||
|
thursday: "木曜日"
|
||||||
|
friday: "金曜日"
|
||||||
|
saturday: "土曜日"
|
||||||
reactions:
|
reactions:
|
||||||
like: "いいね"
|
like: "いいね"
|
||||||
love: "しゅき"
|
love: "しゅき"
|
||||||
@@ -34,6 +66,7 @@ common:
|
|||||||
congrats: "おめでとう"
|
congrats: "おめでとう"
|
||||||
angry: "おこ"
|
angry: "おこ"
|
||||||
confused: "こまこまのこまり"
|
confused: "こまこまのこまり"
|
||||||
|
rip: "RIP"
|
||||||
pudding: "Pudding"
|
pudding: "Pudding"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "今どうしてる?"
|
a: "今どうしてる?"
|
||||||
@@ -51,13 +84,21 @@ common:
|
|||||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
||||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||||
verified-user: "認証済みのユーザー"
|
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
||||||
|
verified-user: "公式アカウント"
|
||||||
|
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||||
|
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "引き分け"
|
drawn: "引き分け"
|
||||||
my-turn: "あなたのターンです"
|
my-turn: "あなたのターンです"
|
||||||
opponent-turn: "相手のターンです"
|
opponent-turn: "相手のターンです"
|
||||||
turn-of: "{}のターンです"
|
turn-of: "{}のターンです"
|
||||||
past-turn-of: "{}のターン"
|
past-turn-of: "{}のターン"
|
||||||
|
won: "{}の勝ち"
|
||||||
|
black: "黒"
|
||||||
|
white: "白"
|
||||||
|
total: "合計"
|
||||||
|
this-turn: "{}ターン目"
|
||||||
widgets:
|
widgets:
|
||||||
analog-clock: "アナログ時計"
|
analog-clock: "アナログ時計"
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
@@ -99,6 +140,73 @@ common:
|
|||||||
rename: "名前を変更"
|
rename: "名前を変更"
|
||||||
stack-left: "左に重ねる"
|
stack-left: "左に重ねる"
|
||||||
pop-right: "右に出す"
|
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:
|
common/views/components/connect-failed.vue:
|
||||||
title: "サーバーに接続できません"
|
title: "サーバーに接続できません"
|
||||||
description: "インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから{再度お試し}ください。"
|
description: "インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから{再度お試し}ください。"
|
||||||
@@ -133,11 +241,13 @@ common/views/components/messaging-room.vue:
|
|||||||
no-history: "これより過去の履歴はありません"
|
no-history: "これより過去の履歴はありません"
|
||||||
resize-form: "ドラッグしてフォームの広さを調整"
|
resize-form: "ドラッグしてフォームの広さを調整"
|
||||||
new-message: "新しいメッセージがあります"
|
new-message: "新しいメッセージがあります"
|
||||||
|
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||||
common/views/components/messaging-room.form.vue:
|
common/views/components/messaging-room.form.vue:
|
||||||
input-message-here: "ここにメッセージを入力"
|
input-message-here: "ここにメッセージを入力"
|
||||||
send: "送信"
|
send: "送信"
|
||||||
attach-from-local: "PCからファイルを添付する"
|
attach-from-local: "PCからファイルを添付する"
|
||||||
attach-from-drive: "ドライブからファイルを添付する"
|
attach-from-drive: "ドライブからファイルを添付する"
|
||||||
|
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||||
common/views/components/messaging-room.message.vue:
|
common/views/components/messaging-room.message.vue:
|
||||||
is-read: "既読"
|
is-read: "既読"
|
||||||
deleted: "このメッセージは削除されました"
|
deleted: "このメッセージは削除されました"
|
||||||
@@ -151,6 +261,8 @@ common/views/components/nav.vue:
|
|||||||
develop: "開発者"
|
develop: "開発者"
|
||||||
feedback: "フィードバック"
|
feedback: "フィードバック"
|
||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
|
detail: "詳細"
|
||||||
|
copy-link: "リンクをコピー"
|
||||||
favorite: "お気に入り"
|
favorite: "お気に入り"
|
||||||
pin: "ピン留め"
|
pin: "ピン留め"
|
||||||
delete: "削除"
|
delete: "削除"
|
||||||
@@ -177,7 +289,12 @@ common/views/components/signin.vue:
|
|||||||
token: "トークン"
|
token: "トークン"
|
||||||
signing-in: "やってます..."
|
signing-in: "やってます..."
|
||||||
signin: "サインイン"
|
signin: "サインイン"
|
||||||
|
or: "または"
|
||||||
|
signin-with-twitter: "Twitterでログイン"
|
||||||
|
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
|
invitation-code: "招待コード"
|
||||||
|
invitation-info: "招待コードをお持ちでない方は、<a href=\"{}\">管理者</a>までご連絡ください。"
|
||||||
username: "ユーザー名"
|
username: "ユーザー名"
|
||||||
checking: "確認しています..."
|
checking: "確認しています..."
|
||||||
available: "利用できます"
|
available: "利用できます"
|
||||||
@@ -223,11 +340,21 @@ common/views/components/visibility-chooser.vue:
|
|||||||
specified: "ダイレクト"
|
specified: "ダイレクト"
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
private: "非公開"
|
private: "非公開"
|
||||||
|
common/views/components/trends.vue:
|
||||||
|
count: "{}人が投稿"
|
||||||
|
empty: "トレンドなし"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "確認中"
|
fetching: "確認中"
|
||||||
no-broadcasts: "お知らせはありません"
|
no-broadcasts: "お知らせはありません"
|
||||||
have-a-nice-day: "良い一日を!"
|
have-a-nice-day: "良い一日を!"
|
||||||
next: "次"
|
next: "次"
|
||||||
|
common/views/widgets/calendar.vue:
|
||||||
|
year: "{}年"
|
||||||
|
month: "{}月"
|
||||||
|
day: "{}日"
|
||||||
|
today: "今日:"
|
||||||
|
this-month: "今月:"
|
||||||
|
this-year: "今年:"
|
||||||
common/views/widgets/donation.vue:
|
common/views/widgets/donation.vue:
|
||||||
title: "寄付のお願い"
|
title: "寄付のお願い"
|
||||||
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
||||||
@@ -239,8 +366,6 @@ common/views/widgets/posts-monitor.vue:
|
|||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
common/views/widgets/hashtags.vue:
|
common/views/widgets/hashtags.vue:
|
||||||
title: "ハッシュタグ"
|
title: "ハッシュタグ"
|
||||||
count: "{}人が投稿"
|
|
||||||
empty: "トレンドなし"
|
|
||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "サーバー情報"
|
title: "サーバー情報"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
@@ -248,12 +373,49 @@ common/views/widgets/memo.vue:
|
|||||||
title: "付箋"
|
title: "付箋"
|
||||||
memo: "ここに書いて!"
|
memo: "ここに書いて!"
|
||||||
save: "保存"
|
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:
|
common/views/pages/follow.vue:
|
||||||
signed-in-as: "{}としてサインイン中"
|
signed-in-as: "{}としてサインイン中"
|
||||||
following: "フォロー中"
|
following: "フォロー中"
|
||||||
follow: "フォロー"
|
follow: "フォロー"
|
||||||
request-pending: "フォロー許可待ち"
|
request-pending: "フォロー許可待ち"
|
||||||
follow-request: "フォロー申請"
|
follow-request: "フォロー申請"
|
||||||
|
desktop:
|
||||||
|
banner-crop-title: "バナーとして表示する部分を選択"
|
||||||
|
banner: "バナー"
|
||||||
|
uploading-banner: "新しいバナーをアップロードしています"
|
||||||
|
banner-updated: "バナーを更新しました"
|
||||||
|
choose-banner: "バナーにする画像を選択"
|
||||||
|
avatar-crop-title: "アバターとして表示する部分を選択"
|
||||||
|
avatar: "アバター"
|
||||||
|
uploading-avatar: "新しいアバターをアップロードしています"
|
||||||
|
avatar-updated: "アバターを更新しました"
|
||||||
|
choose-avatar: "アバターにする画像を選択"
|
||||||
|
invalid-filetype: "この形式のファイルはサポートされていません"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
@@ -267,6 +429,24 @@ desktop/views/components/calendar.vue:
|
|||||||
prev: "前の月"
|
prev: "前の月"
|
||||||
next: "次の月"
|
next: "次の月"
|
||||||
go: "クリックして時間遡行"
|
go: "クリックして時間遡行"
|
||||||
|
desktop/views/components/charts.vue:
|
||||||
|
title: "チャート"
|
||||||
|
per-day: "1日ごと"
|
||||||
|
per-hour: "1時間ごと"
|
||||||
|
notes: "投稿"
|
||||||
|
users: "ユーザー"
|
||||||
|
drive: "ドライブ"
|
||||||
|
charts:
|
||||||
|
notes: "投稿の増減 (統合)"
|
||||||
|
local-notes: "投稿の増減 (ローカル)"
|
||||||
|
remote-notes: "投稿の増減 (リモート)"
|
||||||
|
notes-total: "投稿の累計"
|
||||||
|
users: "ユーザーの増減"
|
||||||
|
users-total: "ユーザーの累計"
|
||||||
|
drive: "ドライブ使用量の増減"
|
||||||
|
drive-total: "ドライブ使用量の累計"
|
||||||
|
drive-files: "ドライブのファイル数の増減"
|
||||||
|
drive-files-total: "ドライブのファイル数の累計"
|
||||||
desktop/views/components/choose-file-from-drive-window.vue:
|
desktop/views/components/choose-file-from-drive-window.vue:
|
||||||
choose-file: "ファイル選択中"
|
choose-file: "ファイル選択中"
|
||||||
upload: "PCからドライブにファイルをアップロード"
|
upload: "PCからドライブにファイルをアップロード"
|
||||||
@@ -287,6 +467,7 @@ desktop/views/components/drive-window.vue:
|
|||||||
desktop/views/components/drive.file.vue:
|
desktop/views/components/drive.file.vue:
|
||||||
avatar: "アイコン"
|
avatar: "アイコン"
|
||||||
banner: "バナー"
|
banner: "バナー"
|
||||||
|
nsfw: "閲覧注意"
|
||||||
contextmenu:
|
contextmenu:
|
||||||
rename: "名前を変更"
|
rename: "名前を変更"
|
||||||
mark-as-sensitive: "閲覧注意に設定"
|
mark-as-sensitive: "閲覧注意に設定"
|
||||||
@@ -388,6 +569,8 @@ desktop/views/components/notes.note.vue:
|
|||||||
detail: "詳細"
|
detail: "詳細"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
|
hide: "隠す"
|
||||||
|
see-more: "もっと見る"
|
||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "読み込みに失敗しました。"
|
error: "読み込みに失敗しました。"
|
||||||
retry: "リトライ"
|
retry: "リトライ"
|
||||||
@@ -396,6 +579,9 @@ desktop/views/components/notifications.vue:
|
|||||||
more: "もっと見る"
|
more: "もっと見る"
|
||||||
empty: "ありません!"
|
empty: "ありません!"
|
||||||
desktop/views/components/post-form.vue:
|
desktop/views/components/post-form.vue:
|
||||||
|
add-visible-user: "+ユーザーを追加"
|
||||||
|
attach-location-information: "位置情報を添付する"
|
||||||
|
hide-contents: "内容を隠す"
|
||||||
reply-placeholder: "この投稿への返信..."
|
reply-placeholder: "この投稿への返信..."
|
||||||
quote-placeholder: "この投稿を引用..."
|
quote-placeholder: "この投稿を引用..."
|
||||||
submit: "投稿"
|
submit: "投稿"
|
||||||
@@ -416,6 +602,11 @@ desktop/views/components/post-form.vue:
|
|||||||
text-remain: "残り{}文字"
|
text-remain: "残り{}文字"
|
||||||
recent-tags: "最近"
|
recent-tags: "最近"
|
||||||
click-to-tagging: "クリックでタグ付け"
|
click-to-tagging: "クリックでタグ付け"
|
||||||
|
visibility: "公開範囲"
|
||||||
|
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||||
|
error: "エラー"
|
||||||
|
enter-username: "ユーザー名を入力してください"
|
||||||
|
annotations: "内容への注釈 (オプション)"
|
||||||
desktop/views/components/post-form-window.vue:
|
desktop/views/components/post-form-window.vue:
|
||||||
note: "新規投稿"
|
note: "新規投稿"
|
||||||
reply: "返信"
|
reply: "返信"
|
||||||
@@ -460,11 +651,15 @@ desktop/views/components/settings.vue:
|
|||||||
delete-wallpaper: "壁紙を削除"
|
delete-wallpaper: "壁紙を削除"
|
||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||||
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿をタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "マップの自動展開"
|
show-maps: "マップの自動展開"
|
||||||
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
||||||
sound: "サウンド"
|
sound: "サウンド"
|
||||||
@@ -536,6 +731,9 @@ desktop/views/components/settings.api.vue:
|
|||||||
enter-password: "パスワードを入力してください"
|
enter-password: "パスワードを入力してください"
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "連携しているアプリケーションはありません"
|
no-apps: "連携しているアプリケーションはありません"
|
||||||
|
desktop/views/components/settings.drive.vue:
|
||||||
|
max: "中"
|
||||||
|
in-use: "使用中"
|
||||||
desktop/views/components/settings.mute.vue:
|
desktop/views/components/settings.mute.vue:
|
||||||
no-users: "ミュートしているユーザーはいません"
|
no-users: "ミュートしているユーザーはいません"
|
||||||
desktop/views/components/settings.password.vue:
|
desktop/views/components/settings.password.vue:
|
||||||
@@ -558,6 +756,7 @@ desktop/views/components/settings.profile.vue:
|
|||||||
other: "その他"
|
other: "その他"
|
||||||
is-bot: "このアカウントはBotです"
|
is-bot: "このアカウントはBotです"
|
||||||
is-cat: "このアカウントはCatです"
|
is-cat: "このアカウントはCatです"
|
||||||
|
profile-updated: "プロフィールを更新しました"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
@@ -573,6 +772,7 @@ desktop/views/components/timeline.vue:
|
|||||||
list: "リスト"
|
list: "リスト"
|
||||||
desktop/views/components/ui.header.vue:
|
desktop/views/components/ui.header.vue:
|
||||||
welcome-back: "おかえりなさい、"
|
welcome-back: "おかえりなさい、"
|
||||||
|
adjective: "さん"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
drive: "ドライブ"
|
drive: "ドライブ"
|
||||||
@@ -580,6 +780,7 @@ desktop/views/components/ui.header.account.vue:
|
|||||||
lists: "リスト"
|
lists: "リスト"
|
||||||
follow-requests: "フォロー申請"
|
follow-requests: "フォロー申請"
|
||||||
customize: "ホームのカスタマイズ"
|
customize: "ホームのカスタマイズ"
|
||||||
|
admin: "管理"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
dark: "闇に飲まれる"
|
dark: "闇に飲まれる"
|
||||||
@@ -601,6 +802,7 @@ desktop/views/components/received-follow-requests-window.vue:
|
|||||||
desktop/views/components/user-lists-window.vue:
|
desktop/views/components/user-lists-window.vue:
|
||||||
title: "リスト"
|
title: "リスト"
|
||||||
create-list: "リストを作成"
|
create-list: "リストを作成"
|
||||||
|
list-name: "リスト名"
|
||||||
desktop/views/components/user-preview.vue:
|
desktop/views/components/user-preview.vue:
|
||||||
notes: "投稿"
|
notes: "投稿"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@@ -615,6 +817,34 @@ desktop/views/components/users-list-item.vue:
|
|||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
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.unverify-user.vue:
|
||||||
|
unverify-user: "ユーザーの公式アカウント解除"
|
||||||
|
unverify: "公式アカウントを解除する"
|
||||||
|
unverified: "公式アカウントを解除しました"
|
||||||
desktop/views/pages/deck/deck.tl-column.vue:
|
desktop/views/pages/deck/deck.tl-column.vue:
|
||||||
is-media-only: "メディア投稿のみ"
|
is-media-only: "メディア投稿のみ"
|
||||||
is-media-view: "メディアビュー"
|
is-media-view: "メディアビュー"
|
||||||
@@ -623,6 +853,11 @@ desktop/views/pages/deck/deck.note.vue:
|
|||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
|
desktop/views/pages/stats/stats.vue:
|
||||||
|
all-users: "全てのユーザー"
|
||||||
|
original-users: "このインスタンスのユーザー"
|
||||||
|
all-notes: "全ての投稿"
|
||||||
|
original-notes: "このインスタンスの投稿"
|
||||||
desktop/views/pages/welcome.vue:
|
desktop/views/pages/welcome.vue:
|
||||||
about: "詳しく..."
|
about: "詳しく..."
|
||||||
gotit: "わかった"
|
gotit: "わかった"
|
||||||
@@ -631,6 +866,10 @@ desktop/views/pages/welcome.vue:
|
|||||||
signin-button: "やってる"
|
signin-button: "やってる"
|
||||||
signup-button: "やる"
|
signup-button: "やる"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
|
announcements: "お知らせ"
|
||||||
|
photos: "最近の画像"
|
||||||
|
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||||
|
info: "情報"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
@@ -645,6 +884,13 @@ desktop/views/pages/selectdrive.vue:
|
|||||||
ok: "決定"
|
ok: "決定"
|
||||||
cancel: "キャンセル"
|
cancel: "キャンセル"
|
||||||
upload: "PCからドライブにファイルをアップロード"
|
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:
|
desktop/views/pages/user-list.users.vue:
|
||||||
users: "ユーザー"
|
users: "ユーザー"
|
||||||
add-user: "ユーザーを追加"
|
add-user: "ユーザーを追加"
|
||||||
@@ -675,6 +921,8 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "ミュートする"
|
mute: "ミュートする"
|
||||||
muted: "ミュートしています"
|
muted: "ミュートしています"
|
||||||
unmute: "ミュート解除"
|
unmute: "ミュート解除"
|
||||||
|
push-to-a-list: "リストに追加"
|
||||||
|
list-pushed: "{user}を{list}に追加しました。"
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.header.vue:
|
||||||
posts: "投稿"
|
posts: "投稿"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@@ -730,12 +978,15 @@ mobile/views/components/drive-file-chooser.vue:
|
|||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
mobile/views/components/drive-folder-chooser.vue:
|
mobile/views/components/drive-folder-chooser.vue:
|
||||||
select-folder: "フォルダーを選択"
|
select-folder: "フォルダーを選択"
|
||||||
|
mobile/views/components/drive.file.vue:
|
||||||
|
nsfw: "閲覧注意"
|
||||||
mobile/views/components/drive.file-detail.vue:
|
mobile/views/components/drive.file-detail.vue:
|
||||||
download: "ダウンロード"
|
download: "ダウンロード"
|
||||||
rename: "名前を変更"
|
rename: "名前を変更"
|
||||||
move: "移動"
|
move: "移動"
|
||||||
hash: "ハッシュ (md5)"
|
hash: "ハッシュ (md5)"
|
||||||
exif: "EXIF"
|
exif: "EXIF"
|
||||||
|
nsfw: "閲覧注意"
|
||||||
mobile/views/components/media-image.vue:
|
mobile/views/components/media-image.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
@@ -800,6 +1051,9 @@ mobile/views/components/sub-note-content.vue:
|
|||||||
mobile/views/components/timeline.vue:
|
mobile/views/components/timeline.vue:
|
||||||
empty: "投稿がありません"
|
empty: "投稿がありません"
|
||||||
load-more: "もっと"
|
load-more: "もっと"
|
||||||
|
mobile/views/components/ui.header.vue:
|
||||||
|
welcome-back: "おかえりなさい、"
|
||||||
|
adjective: "さん"
|
||||||
mobile/views/components/ui.nav.vue:
|
mobile/views/components/ui.nav.vue:
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
@@ -813,6 +1067,7 @@ mobile/views/components/ui.nav.vue:
|
|||||||
game: "ゲーム"
|
game: "ゲーム"
|
||||||
darkmode: "ダークモード"
|
darkmode: "ダークモード"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
|
admin: "管理"
|
||||||
about: "Misskeyについて"
|
about: "Misskeyについて"
|
||||||
mobile/views/components/user-timeline.vue:
|
mobile/views/components/user-timeline.vue:
|
||||||
no-notes: "このユーザーは投稿していないようです。"
|
no-notes: "このユーザーは投稿していないようです。"
|
||||||
@@ -830,6 +1085,8 @@ mobile/views/pages/user-lists.vue:
|
|||||||
mobile/views/pages/drive.vue:
|
mobile/views/pages/drive.vue:
|
||||||
drive: "ドライブ"
|
drive: "ドライブ"
|
||||||
more: "もっと見る"
|
more: "もっと見る"
|
||||||
|
mobile/views/pages/signup.vue:
|
||||||
|
lets-start: "📦 始めましょう"
|
||||||
mobile/views/pages/followers.vue:
|
mobile/views/pages/followers.vue:
|
||||||
followers-of: "{}のフォロワー"
|
followers-of: "{}のフォロワー"
|
||||||
mobile/views/pages/following.vue:
|
mobile/views/pages/following.vue:
|
||||||
@@ -839,6 +1096,19 @@ mobile/views/pages/home.vue:
|
|||||||
local: "ローカル"
|
local: "ローカル"
|
||||||
hybrid: "ソーシャル"
|
hybrid: "ソーシャル"
|
||||||
global: "グローバル"
|
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:
|
mobile/views/pages/messaging.vue:
|
||||||
messaging: "メッセージ"
|
messaging: "メッセージ"
|
||||||
mobile/views/pages/messaging-room.vue:
|
mobile/views/pages/messaging-room.vue:
|
||||||
@@ -854,6 +1124,8 @@ mobile/views/pages/note.vue:
|
|||||||
mobile/views/pages/notifications.vue:
|
mobile/views/pages/notifications.vue:
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
read-all: "すべての通知を既読にしますか?"
|
read-all: "すべての通知を既読にしますか?"
|
||||||
|
mobile/views/pages/games/reversi.vue:
|
||||||
|
reversi: "リバーシ"
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
mobile/views/pages/settings/settings.profile.vue:
|
||||||
title: "プロフィール"
|
title: "プロフィール"
|
||||||
name: "名前"
|
name: "名前"
|
||||||
@@ -871,6 +1143,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
search: "検索"
|
search: "検索"
|
||||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
|
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
mobile/views/pages/selectdrive.vue:
|
mobile/views/pages/selectdrive.vue:
|
||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
mobile/views/pages/settings.vue:
|
mobile/views/pages/settings.vue:
|
||||||
@@ -884,13 +1157,18 @@ mobile/views/pages/settings.vue:
|
|||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
i-am-under-limited-internet: "私は通信を制限されている"
|
i-am-under-limited-internet: "私は通信を制限されている"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteを表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteを表示する"
|
||||||
post-style: "投稿の表示スタイル"
|
post-style: "投稿の表示スタイル"
|
||||||
post-style-standard: "標準"
|
post-style-standard: "標準"
|
||||||
post-style-smart: "スマート"
|
post-style-smart: "スマート"
|
||||||
|
notification-position: "通知の表示"
|
||||||
|
notification-position-bottom: "下"
|
||||||
|
notification-position-top: "上"
|
||||||
behavior: "動作"
|
behavior: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
@@ -911,6 +1189,8 @@ mobile/views/pages/settings.vue:
|
|||||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
|
sound: "サウンド"
|
||||||
|
enable-sounds: "サウンドを有効にする"
|
||||||
mobile/views/pages/user.vue:
|
mobile/views/pages/user.vue:
|
||||||
follows-you: "フォローされています"
|
follows-you: "フォローされています"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@@ -965,3 +1245,5 @@ docs:
|
|||||||
name: "名前"
|
name: "名前"
|
||||||
type: "型"
|
type: "型"
|
||||||
description: "説明"
|
description: "説明"
|
||||||
|
dev/views/index.vue:
|
||||||
|
manage-apps: "アプリの管理"
|
||||||
@@ -6,7 +6,28 @@ common:
|
|||||||
misskey: "A ⭐ of fediverse"
|
misskey: "A ⭐ of fediverse"
|
||||||
about-title: "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>右</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:
|
time:
|
||||||
unknown: "なぞのじかん"
|
unknown: "なぞのじかん"
|
||||||
future: "未来"
|
future: "未来"
|
||||||
@@ -18,6 +39,9 @@ common:
|
|||||||
weeks_ago: "{}週間前"
|
weeks_ago: "{}週間前"
|
||||||
months_ago: "{}ヶ月前"
|
months_ago: "{}ヶ月前"
|
||||||
years_ago: "{}年前"
|
years_ago: "{}年前"
|
||||||
|
month-and-day: "{month}月 {day}日"
|
||||||
|
|
||||||
|
trash: "ゴミ箱"
|
||||||
|
|
||||||
weekday-short:
|
weekday-short:
|
||||||
sunday: "日"
|
sunday: "日"
|
||||||
@@ -28,6 +52,15 @@ common:
|
|||||||
friday: "金"
|
friday: "金"
|
||||||
saturday: "土"
|
saturday: "土"
|
||||||
|
|
||||||
|
weekday:
|
||||||
|
sunday: "日曜日"
|
||||||
|
monday: "月曜日"
|
||||||
|
tuesday: "火曜日"
|
||||||
|
wednesday: "水曜日"
|
||||||
|
thursday: "木曜日"
|
||||||
|
friday: "金曜日"
|
||||||
|
saturday: "土曜日"
|
||||||
|
|
||||||
reactions:
|
reactions:
|
||||||
like: "いいね"
|
like: "いいね"
|
||||||
love: "しゅき"
|
love: "しゅき"
|
||||||
@@ -37,8 +70,19 @@ common:
|
|||||||
congrats: "おめでとう"
|
congrats: "おめでとう"
|
||||||
angry: "おこ"
|
angry: "おこ"
|
||||||
confused: "こまこまのこまり"
|
confused: "こまこまのこまり"
|
||||||
|
rip: "RIP"
|
||||||
pudding: "Pudding"
|
pudding: "Pudding"
|
||||||
|
|
||||||
|
note-visibility:
|
||||||
|
public: "公開"
|
||||||
|
home: "ホーム"
|
||||||
|
home-desc: "ホームタイムラインにのみ公開"
|
||||||
|
followers: "フォロワー"
|
||||||
|
followers-desc: "自分のフォロワーにのみ公開"
|
||||||
|
specified: "ダイレクト"
|
||||||
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
|
private: "非公開"
|
||||||
|
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "今どうしてる?"
|
a: "今どうしてる?"
|
||||||
b: "何かありましたか?"
|
b: "何かありましたか?"
|
||||||
@@ -56,7 +100,11 @@ common:
|
|||||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
||||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||||
verified-user: "認証済みのユーザー"
|
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
||||||
|
verified-user: "公式アカウント"
|
||||||
|
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||||
|
|
||||||
|
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
||||||
|
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "引き分け"
|
drawn: "引き分け"
|
||||||
@@ -64,6 +112,11 @@ common:
|
|||||||
opponent-turn: "相手のターンです"
|
opponent-turn: "相手のターンです"
|
||||||
turn-of: "{}のターンです"
|
turn-of: "{}のターンです"
|
||||||
past-turn-of: "{}のターン"
|
past-turn-of: "{}のターン"
|
||||||
|
won: "{}の勝ち"
|
||||||
|
black: "黒"
|
||||||
|
white: "白"
|
||||||
|
total: "合計"
|
||||||
|
this-turn: "{}ターン目"
|
||||||
|
|
||||||
widgets:
|
widgets:
|
||||||
analog-clock: "アナログ時計"
|
analog-clock: "アナログ時計"
|
||||||
@@ -108,6 +161,79 @@ common:
|
|||||||
stack-left: "左に重ねる"
|
stack-left: "左に重ねる"
|
||||||
pop-right: "右に出す"
|
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:
|
common/views/components/connect-failed.vue:
|
||||||
title: "サーバーに接続できません"
|
title: "サーバーに接続できません"
|
||||||
description: "インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから{再度お試し}ください。"
|
description: "インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから{再度お試し}ください。"
|
||||||
@@ -145,12 +271,14 @@ common/views/components/messaging-room.vue:
|
|||||||
no-history: "これより過去の履歴はありません"
|
no-history: "これより過去の履歴はありません"
|
||||||
resize-form: "ドラッグしてフォームの広さを調整"
|
resize-form: "ドラッグしてフォームの広さを調整"
|
||||||
new-message: "新しいメッセージがあります"
|
new-message: "新しいメッセージがあります"
|
||||||
|
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||||
|
|
||||||
common/views/components/messaging-room.form.vue:
|
common/views/components/messaging-room.form.vue:
|
||||||
input-message-here: "ここにメッセージを入力"
|
input-message-here: "ここにメッセージを入力"
|
||||||
send: "送信"
|
send: "送信"
|
||||||
attach-from-local: "PCからファイルを添付する"
|
attach-from-local: "PCからファイルを添付する"
|
||||||
attach-from-drive: "ドライブからファイルを添付する"
|
attach-from-drive: "ドライブからファイルを添付する"
|
||||||
|
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||||
|
|
||||||
common/views/components/messaging-room.message.vue:
|
common/views/components/messaging-room.message.vue:
|
||||||
is-read: "既読"
|
is-read: "既読"
|
||||||
@@ -167,6 +295,8 @@ common/views/components/nav.vue:
|
|||||||
feedback: "フィードバック"
|
feedback: "フィードバック"
|
||||||
|
|
||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
|
detail: "詳細"
|
||||||
|
copy-link: "リンクをコピー"
|
||||||
favorite: "お気に入り"
|
favorite: "お気に入り"
|
||||||
pin: "ピン留め"
|
pin: "ピン留め"
|
||||||
delete: "削除"
|
delete: "削除"
|
||||||
@@ -197,8 +327,13 @@ common/views/components/signin.vue:
|
|||||||
token: "トークン"
|
token: "トークン"
|
||||||
signing-in: "やってます..."
|
signing-in: "やってます..."
|
||||||
signin: "サインイン"
|
signin: "サインイン"
|
||||||
|
or: "または"
|
||||||
|
signin-with-twitter: "Twitterでログイン"
|
||||||
|
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||||
|
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
|
invitation-code: "招待コード"
|
||||||
|
invitation-info: "招待コードをお持ちでない方は、<a href=\"{}\">管理者</a>までご連絡ください。"
|
||||||
username: "ユーザー名"
|
username: "ユーザー名"
|
||||||
checking: "確認しています..."
|
checking: "確認しています..."
|
||||||
available: "利用できます"
|
available: "利用できます"
|
||||||
@@ -250,12 +385,24 @@ common/views/components/visibility-chooser.vue:
|
|||||||
specified-desc: "指定したユーザーにのみ公開"
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
private: "非公開"
|
private: "非公開"
|
||||||
|
|
||||||
|
common/views/components/trends.vue:
|
||||||
|
count: "{}人が投稿"
|
||||||
|
empty: "トレンドなし"
|
||||||
|
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "確認中"
|
fetching: "確認中"
|
||||||
no-broadcasts: "お知らせはありません"
|
no-broadcasts: "お知らせはありません"
|
||||||
have-a-nice-day: "良い一日を!"
|
have-a-nice-day: "良い一日を!"
|
||||||
next: "次"
|
next: "次"
|
||||||
|
|
||||||
|
common/views/widgets/calendar.vue:
|
||||||
|
year: "{}年"
|
||||||
|
month: "{}月"
|
||||||
|
day: "{}日"
|
||||||
|
today: "今日:"
|
||||||
|
this-month: "今月:"
|
||||||
|
this-year: "今年:"
|
||||||
|
|
||||||
common/views/widgets/donation.vue:
|
common/views/widgets/donation.vue:
|
||||||
title: "寄付のお願い"
|
title: "寄付のお願い"
|
||||||
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
||||||
@@ -270,8 +417,6 @@ common/views/widgets/posts-monitor.vue:
|
|||||||
|
|
||||||
common/views/widgets/hashtags.vue:
|
common/views/widgets/hashtags.vue:
|
||||||
title: "ハッシュタグ"
|
title: "ハッシュタグ"
|
||||||
count: "{}人が投稿"
|
|
||||||
empty: "トレンドなし"
|
|
||||||
|
|
||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "サーバー情報"
|
title: "サーバー情報"
|
||||||
@@ -282,6 +427,33 @@ common/views/widgets/memo.vue:
|
|||||||
memo: "ここに書いて!"
|
memo: "ここに書いて!"
|
||||||
save: "保存"
|
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:
|
common/views/pages/follow.vue:
|
||||||
signed-in-as: "{}としてサインイン中"
|
signed-in-as: "{}としてサインイン中"
|
||||||
following: "フォロー中"
|
following: "フォロー中"
|
||||||
@@ -289,6 +461,19 @@ common/views/pages/follow.vue:
|
|||||||
request-pending: "フォロー許可待ち"
|
request-pending: "フォロー許可待ち"
|
||||||
follow-request: "フォロー申請"
|
follow-request: "フォロー申請"
|
||||||
|
|
||||||
|
desktop:
|
||||||
|
banner-crop-title: "バナーとして表示する部分を選択"
|
||||||
|
banner: "バナー"
|
||||||
|
uploading-banner: "新しいバナーをアップロードしています"
|
||||||
|
banner-updated: "バナーを更新しました"
|
||||||
|
choose-banner: "バナーにする画像を選択"
|
||||||
|
avatar-crop-title: "アバターとして表示する部分を選択"
|
||||||
|
avatar: "アバター"
|
||||||
|
uploading-avatar: "新しいアバターをアップロードしています"
|
||||||
|
avatar-updated: "アバターを更新しました"
|
||||||
|
choose-avatar: "アバターにする画像を選択"
|
||||||
|
invalid-filetype: "この形式のファイルはサポートされていません"
|
||||||
|
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
@@ -305,6 +490,25 @@ desktop/views/components/calendar.vue:
|
|||||||
next: "次の月"
|
next: "次の月"
|
||||||
go: "クリックして時間遡行"
|
go: "クリックして時間遡行"
|
||||||
|
|
||||||
|
desktop/views/components/charts.vue:
|
||||||
|
title: "チャート"
|
||||||
|
per-day: "1日ごと"
|
||||||
|
per-hour: "1時間ごと"
|
||||||
|
notes: "投稿"
|
||||||
|
users: "ユーザー"
|
||||||
|
drive: "ドライブ"
|
||||||
|
charts:
|
||||||
|
notes: "投稿の増減 (統合)"
|
||||||
|
local-notes: "投稿の増減 (ローカル)"
|
||||||
|
remote-notes: "投稿の増減 (リモート)"
|
||||||
|
notes-total: "投稿の累計"
|
||||||
|
users: "ユーザーの増減"
|
||||||
|
users-total: "ユーザーの累計"
|
||||||
|
drive: "ドライブ使用量の増減"
|
||||||
|
drive-total: "ドライブ使用量の累計"
|
||||||
|
drive-files: "ドライブのファイル数の増減"
|
||||||
|
drive-files-total: "ドライブのファイル数の累計"
|
||||||
|
|
||||||
desktop/views/components/choose-file-from-drive-window.vue:
|
desktop/views/components/choose-file-from-drive-window.vue:
|
||||||
choose-file: "ファイル選択中"
|
choose-file: "ファイル選択中"
|
||||||
upload: "PCからドライブにファイルをアップロード"
|
upload: "PCからドライブにファイルをアップロード"
|
||||||
@@ -329,6 +533,7 @@ desktop/views/components/drive-window.vue:
|
|||||||
desktop/views/components/drive.file.vue:
|
desktop/views/components/drive.file.vue:
|
||||||
avatar: "アイコン"
|
avatar: "アイコン"
|
||||||
banner: "バナー"
|
banner: "バナー"
|
||||||
|
nsfw: "閲覧注意"
|
||||||
contextmenu:
|
contextmenu:
|
||||||
rename: "名前を変更"
|
rename: "名前を変更"
|
||||||
mark-as-sensitive: "閲覧注意に設定"
|
mark-as-sensitive: "閲覧注意に設定"
|
||||||
@@ -448,6 +653,8 @@ desktop/views/components/notes.note.vue:
|
|||||||
detail: "詳細"
|
detail: "詳細"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
|
hide: "隠す"
|
||||||
|
see-more: "もっと見る"
|
||||||
|
|
||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "読み込みに失敗しました。"
|
error: "読み込みに失敗しました。"
|
||||||
@@ -459,6 +666,9 @@ desktop/views/components/notifications.vue:
|
|||||||
empty: "ありません!"
|
empty: "ありません!"
|
||||||
|
|
||||||
desktop/views/components/post-form.vue:
|
desktop/views/components/post-form.vue:
|
||||||
|
add-visible-user: "+ユーザーを追加"
|
||||||
|
attach-location-information: "位置情報を添付する"
|
||||||
|
hide-contents: "内容を隠す"
|
||||||
reply-placeholder: "この投稿への返信..."
|
reply-placeholder: "この投稿への返信..."
|
||||||
quote-placeholder: "この投稿を引用..."
|
quote-placeholder: "この投稿を引用..."
|
||||||
submit: "投稿"
|
submit: "投稿"
|
||||||
@@ -479,6 +689,11 @@ desktop/views/components/post-form.vue:
|
|||||||
text-remain: "残り{}文字"
|
text-remain: "残り{}文字"
|
||||||
recent-tags: "最近"
|
recent-tags: "最近"
|
||||||
click-to-tagging: "クリックでタグ付け"
|
click-to-tagging: "クリックでタグ付け"
|
||||||
|
visibility: "公開範囲"
|
||||||
|
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||||
|
error: "エラー"
|
||||||
|
enter-username: "ユーザー名を入力してください"
|
||||||
|
annotations: "内容への注釈 (オプション)"
|
||||||
|
|
||||||
desktop/views/components/post-form-window.vue:
|
desktop/views/components/post-form-window.vue:
|
||||||
note: "新規投稿"
|
note: "新規投稿"
|
||||||
@@ -519,6 +734,9 @@ desktop/views/components/settings.vue:
|
|||||||
behaviour: "動作"
|
behaviour: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。"
|
fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。"
|
||||||
|
note-visibility: "投稿の公開範囲"
|
||||||
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
auto-popout: "ウィンドウの自動ポップアウト"
|
auto-popout: "ウィンドウの自動ポップアウト"
|
||||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
||||||
advanced: "詳細設定"
|
advanced: "詳細設定"
|
||||||
@@ -531,11 +749,15 @@ desktop/views/components/settings.vue:
|
|||||||
delete-wallpaper: "壁紙を削除"
|
delete-wallpaper: "壁紙を削除"
|
||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||||
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿をタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "マップの自動展開"
|
show-maps: "マップの自動展開"
|
||||||
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
||||||
|
|
||||||
@@ -619,6 +841,10 @@ desktop/views/components/settings.api.vue:
|
|||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "連携しているアプリケーションはありません"
|
no-apps: "連携しているアプリケーションはありません"
|
||||||
|
|
||||||
|
desktop/views/components/settings.drive.vue:
|
||||||
|
max: "中"
|
||||||
|
in-use: "使用中"
|
||||||
|
|
||||||
desktop/views/components/settings.mute.vue:
|
desktop/views/components/settings.mute.vue:
|
||||||
no-users: "ミュートしているユーザーはいません"
|
no-users: "ミュートしているユーザーはいません"
|
||||||
|
|
||||||
@@ -643,6 +869,7 @@ desktop/views/components/settings.profile.vue:
|
|||||||
other: "その他"
|
other: "その他"
|
||||||
is-bot: "このアカウントはBotです"
|
is-bot: "このアカウントはBotです"
|
||||||
is-cat: "このアカウントはCatです"
|
is-cat: "このアカウントはCatです"
|
||||||
|
profile-updated: "プロフィールを更新しました"
|
||||||
|
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
@@ -662,6 +889,7 @@ desktop/views/components/timeline.vue:
|
|||||||
|
|
||||||
desktop/views/components/ui.header.vue:
|
desktop/views/components/ui.header.vue:
|
||||||
welcome-back: "おかえりなさい、"
|
welcome-back: "おかえりなさい、"
|
||||||
|
adjective: "さん"
|
||||||
|
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
@@ -670,6 +898,7 @@ desktop/views/components/ui.header.account.vue:
|
|||||||
lists: "リスト"
|
lists: "リスト"
|
||||||
follow-requests: "フォロー申請"
|
follow-requests: "フォロー申請"
|
||||||
customize: "ホームのカスタマイズ"
|
customize: "ホームのカスタマイズ"
|
||||||
|
admin: "管理"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
dark: "闇に飲まれる"
|
dark: "闇に飲まれる"
|
||||||
@@ -697,6 +926,7 @@ desktop/views/components/received-follow-requests-window.vue:
|
|||||||
desktop/views/components/user-lists-window.vue:
|
desktop/views/components/user-lists-window.vue:
|
||||||
title: "リスト"
|
title: "リスト"
|
||||||
create-list: "リストを作成"
|
create-list: "リストを作成"
|
||||||
|
list-name: "リスト名"
|
||||||
|
|
||||||
desktop/views/components/user-preview.vue:
|
desktop/views/components/user-preview.vue:
|
||||||
notes: "投稿"
|
notes: "投稿"
|
||||||
@@ -716,6 +946,40 @@ desktop/views/components/window.vue:
|
|||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
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.unverify-user.vue:
|
||||||
|
unverify-user: "ユーザーの公式アカウント解除"
|
||||||
|
unverify: "公式アカウントを解除する"
|
||||||
|
unverified: "公式アカウントを解除しました"
|
||||||
|
|
||||||
desktop/views/pages/deck/deck.tl-column.vue:
|
desktop/views/pages/deck/deck.tl-column.vue:
|
||||||
is-media-only: "メディア投稿のみ"
|
is-media-only: "メディア投稿のみ"
|
||||||
is-media-view: "メディアビュー"
|
is-media-view: "メディアビュー"
|
||||||
@@ -726,6 +990,12 @@ desktop/views/pages/deck/deck.note.vue:
|
|||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
|
|
||||||
|
desktop/views/pages/stats/stats.vue:
|
||||||
|
all-users: "全てのユーザー"
|
||||||
|
original-users: "このインスタンスのユーザー"
|
||||||
|
all-notes: "全ての投稿"
|
||||||
|
original-notes: "このインスタンスの投稿"
|
||||||
|
|
||||||
desktop/views/pages/welcome.vue:
|
desktop/views/pages/welcome.vue:
|
||||||
about: "詳しく..."
|
about: "詳しく..."
|
||||||
gotit: "わかった"
|
gotit: "わかった"
|
||||||
@@ -734,6 +1004,10 @@ desktop/views/pages/welcome.vue:
|
|||||||
signin-button: "やってる"
|
signin-button: "やってる"
|
||||||
signup-button: "やる"
|
signup-button: "やる"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
|
announcements: "お知らせ"
|
||||||
|
photos: "最近の画像"
|
||||||
|
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||||
|
info: "情報"
|
||||||
|
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
@@ -754,6 +1028,16 @@ desktop/views/pages/selectdrive.vue:
|
|||||||
cancel: "キャンセル"
|
cancel: "キャンセル"
|
||||||
upload: "PCからドライブにファイルをアップロード"
|
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:
|
desktop/views/pages/user-list.users.vue:
|
||||||
users: "ユーザー"
|
users: "ユーザー"
|
||||||
add-user: "ユーザーを追加"
|
add-user: "ユーザーを追加"
|
||||||
@@ -790,6 +1074,8 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "ミュートする"
|
mute: "ミュートする"
|
||||||
muted: "ミュートしています"
|
muted: "ミュートしています"
|
||||||
unmute: "ミュート解除"
|
unmute: "ミュート解除"
|
||||||
|
push-to-a-list: "リストに追加"
|
||||||
|
list-pushed: "{user}を{list}に追加しました。"
|
||||||
|
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.header.vue:
|
||||||
posts: "投稿"
|
posts: "投稿"
|
||||||
@@ -859,12 +1145,16 @@ mobile/views/components/drive-file-chooser.vue:
|
|||||||
mobile/views/components/drive-folder-chooser.vue:
|
mobile/views/components/drive-folder-chooser.vue:
|
||||||
select-folder: "フォルダーを選択"
|
select-folder: "フォルダーを選択"
|
||||||
|
|
||||||
|
mobile/views/components/drive.file.vue:
|
||||||
|
nsfw: "閲覧注意"
|
||||||
|
|
||||||
mobile/views/components/drive.file-detail.vue:
|
mobile/views/components/drive.file-detail.vue:
|
||||||
download: "ダウンロード"
|
download: "ダウンロード"
|
||||||
rename: "名前を変更"
|
rename: "名前を変更"
|
||||||
move: "移動"
|
move: "移動"
|
||||||
hash: "ハッシュ (md5)"
|
hash: "ハッシュ (md5)"
|
||||||
exif: "EXIF"
|
exif: "EXIF"
|
||||||
|
nsfw: "閲覧注意"
|
||||||
|
|
||||||
mobile/views/components/media-image.vue:
|
mobile/views/components/media-image.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
@@ -943,6 +1233,10 @@ mobile/views/components/timeline.vue:
|
|||||||
empty: "投稿がありません"
|
empty: "投稿がありません"
|
||||||
load-more: "もっと"
|
load-more: "もっと"
|
||||||
|
|
||||||
|
mobile/views/components/ui.header.vue:
|
||||||
|
welcome-back: "おかえりなさい、"
|
||||||
|
adjective: "さん"
|
||||||
|
|
||||||
mobile/views/components/ui.nav.vue:
|
mobile/views/components/ui.nav.vue:
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
@@ -956,6 +1250,7 @@ mobile/views/components/ui.nav.vue:
|
|||||||
game: "ゲーム"
|
game: "ゲーム"
|
||||||
darkmode: "ダークモード"
|
darkmode: "ダークモード"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
|
admin: "管理"
|
||||||
about: "Misskeyについて"
|
about: "Misskeyについて"
|
||||||
|
|
||||||
mobile/views/components/user-timeline.vue:
|
mobile/views/components/user-timeline.vue:
|
||||||
@@ -979,6 +1274,9 @@ mobile/views/pages/drive.vue:
|
|||||||
drive: "ドライブ"
|
drive: "ドライブ"
|
||||||
more: "もっと見る"
|
more: "もっと見る"
|
||||||
|
|
||||||
|
mobile/views/pages/signup.vue:
|
||||||
|
lets-start: "📦 始めましょう"
|
||||||
|
|
||||||
mobile/views/pages/followers.vue:
|
mobile/views/pages/followers.vue:
|
||||||
followers-of: "{}のフォロワー"
|
followers-of: "{}のフォロワー"
|
||||||
|
|
||||||
@@ -991,6 +1289,24 @@ mobile/views/pages/home.vue:
|
|||||||
hybrid: "ソーシャル"
|
hybrid: "ソーシャル"
|
||||||
global: "グローバル"
|
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:
|
mobile/views/pages/messaging.vue:
|
||||||
messaging: "メッセージ"
|
messaging: "メッセージ"
|
||||||
|
|
||||||
@@ -1011,6 +1327,9 @@ mobile/views/pages/notifications.vue:
|
|||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
read-all: "すべての通知を既読にしますか?"
|
read-all: "すべての通知を既読にしますか?"
|
||||||
|
|
||||||
|
mobile/views/pages/games/reversi.vue:
|
||||||
|
reversi: "リバーシ"
|
||||||
|
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
mobile/views/pages/settings/settings.profile.vue:
|
||||||
title: "プロフィール"
|
title: "プロフィール"
|
||||||
name: "名前"
|
name: "名前"
|
||||||
@@ -1029,6 +1348,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
search: "検索"
|
search: "検索"
|
||||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
|
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
|
|
||||||
mobile/views/pages/selectdrive.vue:
|
mobile/views/pages/selectdrive.vue:
|
||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
@@ -1044,15 +1364,23 @@ mobile/views/pages/settings.vue:
|
|||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
i-am-under-limited-internet: "私は通信を制限されている"
|
i-am-under-limited-internet: "私は通信を制限されている"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteを表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteを表示する"
|
||||||
post-style: "投稿の表示スタイル"
|
post-style: "投稿の表示スタイル"
|
||||||
post-style-standard: "標準"
|
post-style-standard: "標準"
|
||||||
post-style-smart: "スマート"
|
post-style-smart: "スマート"
|
||||||
|
notification-position: "通知の表示"
|
||||||
|
notification-position-bottom: "下"
|
||||||
|
notification-position-top: "上"
|
||||||
behavior: "動作"
|
behavior: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
|
note-visibility: "投稿の公開範囲"
|
||||||
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
load-raw-images: "添付された画像を高画質で表示する"
|
load-raw-images: "添付された画像を高画質で表示する"
|
||||||
load-remote-media: "リモートサーバーのメディアを表示する"
|
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||||
@@ -1071,6 +1399,8 @@ mobile/views/pages/settings.vue:
|
|||||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
|
sound: "サウンド"
|
||||||
|
enable-sounds: "サウンドを有効にする"
|
||||||
|
|
||||||
mobile/views/pages/user.vue:
|
mobile/views/pages/user.vue:
|
||||||
follows-you: "フォローされています"
|
follows-you: "フォローされています"
|
||||||
@@ -1133,3 +1463,6 @@ docs:
|
|||||||
name: "名前"
|
name: "名前"
|
||||||
type: "型"
|
type: "型"
|
||||||
description: "説明"
|
description: "説明"
|
||||||
|
|
||||||
|
dev/views/index.vue:
|
||||||
|
manage-apps: "アプリの管理"
|
||||||
1249
locales/ja-KS.yml
Normal file
1249
locales/ja-KS.yml
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,95 +1,136 @@
|
|||||||
---
|
---
|
||||||
meta:
|
meta:
|
||||||
lang: "日本語"
|
lang: "한국어"
|
||||||
divider: ""
|
divider: ""
|
||||||
common:
|
common:
|
||||||
misskey: "A ⭐ of fediverse"
|
misskey: "A ⭐ of fediverse"
|
||||||
about-title: "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:
|
time:
|
||||||
unknown: "なぞのじかん"
|
unknown: "수수께끼의 시간"
|
||||||
future: "未来"
|
future: "미래"
|
||||||
just_now: "たった今"
|
just_now: "방금"
|
||||||
seconds_ago: "{}秒前"
|
seconds_ago: "{}초전"
|
||||||
minutes_ago: "{}分前"
|
minutes_ago: "{}분전"
|
||||||
hours_ago: "{}時間前"
|
hours_ago: "{}시간전"
|
||||||
days_ago: "{}日前"
|
days_ago: "{}일전"
|
||||||
weeks_ago: "{}週間前"
|
weeks_ago: "{}주전"
|
||||||
months_ago: "{}ヶ月前"
|
months_ago: "{}개월전"
|
||||||
years_ago: "{}年前"
|
years_ago: "{}년전"
|
||||||
|
month-and-day: "{month}월 {day}일"
|
||||||
|
trash: "휴지통"
|
||||||
weekday-short:
|
weekday-short:
|
||||||
sunday: "日"
|
sunday: "일"
|
||||||
monday: "月"
|
monday: "월"
|
||||||
tuesday: "火"
|
tuesday: "화"
|
||||||
wednesday: "水"
|
wednesday: "수"
|
||||||
thursday: "木"
|
thursday: "목"
|
||||||
friday: "金"
|
friday: "금"
|
||||||
saturday: "土"
|
saturday: "토"
|
||||||
|
weekday:
|
||||||
|
sunday: "일요일"
|
||||||
|
monday: "월요일"
|
||||||
|
tuesday: "화요일"
|
||||||
|
wednesday: "수요일"
|
||||||
|
thursday: "목요일"
|
||||||
|
friday: "금요일"
|
||||||
|
saturday: "토요일"
|
||||||
reactions:
|
reactions:
|
||||||
like: "いいね"
|
like: "いいね"
|
||||||
love: "しゅき"
|
love: "좋아"
|
||||||
laugh: "笑"
|
laugh: "크크"
|
||||||
hmm: "ふぅ~む"
|
hmm: "음..."
|
||||||
surprise: "わお"
|
surprise: "와우"
|
||||||
congrats: "おめでとう"
|
congrats: "받으세요"
|
||||||
angry: "おこ"
|
angry: "화냈어"
|
||||||
confused: "こまこまのこまり"
|
confused: "곤란하고 있어"
|
||||||
|
rip: "RIP"
|
||||||
pudding: "Pudding"
|
pudding: "Pudding"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "今どうしてる?"
|
a: "지금 어떻게하고있어?"
|
||||||
b: "何かありましたか?"
|
b: "뭔가 있었습니까?"
|
||||||
c: "何をお考えですか?"
|
c: "무엇을 생각하십니까?"
|
||||||
d: "言いたいことは?"
|
d: "말하고 싶은 것은?"
|
||||||
e: "ここに書いてください"
|
e: "여기에 써주십시오"
|
||||||
f: "あなたが書くのを待っています..."
|
f: "당신이 쓸 것을 당신 기다리고 있습니다..."
|
||||||
search: "検索"
|
search: "검색"
|
||||||
delete: "削除"
|
delete: "삭제"
|
||||||
loading: "読み込み中"
|
loading: "로드 중"
|
||||||
ok: "わかった"
|
ok: "확인"
|
||||||
update-available-title: "更新があります"
|
update-available-title: "갱신이 있습니다"
|
||||||
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
|
update-available: "Misskey의 새로운 버전이 있습니다 ({newer} 현재 {current}을 사용 중). 페이지를 다시로드하면 업데이트가 적용됩니다."
|
||||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
my-token-regenerated: "당신의 토큰이 업데이트되어 있기 때문에 로그 아웃합니다."
|
||||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
i-like-sushi: "나는(푸딩보다 오히려)스시가 좋아"
|
||||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
show-reversi-board-labels: "리버시 보드의 행과 열 레이블을 표시"
|
||||||
verified-user: "認証済みのユーザー"
|
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
||||||
|
verified-user: "公式アカウント"
|
||||||
|
disable-animated-mfm: "게시물의 문자 애니메이션을 비활성화 할"
|
||||||
|
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "引き分け"
|
drawn: "무승부"
|
||||||
my-turn: "あなたのターンです"
|
my-turn: "당신의 차례입니다"
|
||||||
opponent-turn: "相手のターンです"
|
opponent-turn: "상대의 차례입니다"
|
||||||
turn-of: "{}のターンです"
|
turn-of: "{}의 차례입니다"
|
||||||
past-turn-of: "{}のターン"
|
past-turn-of: "{} 턴"
|
||||||
|
won: "{} 승리"
|
||||||
|
black: "검정"
|
||||||
|
white: "흰색"
|
||||||
|
total: "합계"
|
||||||
|
this-turn: "{}턴눈"
|
||||||
widgets:
|
widgets:
|
||||||
analog-clock: "アナログ時計"
|
analog-clock: "아날로그 시계"
|
||||||
profile: "プロフィール"
|
profile: "프로필"
|
||||||
calendar: "カレンダー"
|
calendar: "달력"
|
||||||
timemachine: "カレンダー(タイムマシン)"
|
timemachine: "달력(타임머신)"
|
||||||
activity: "アクティビティ"
|
activity: "활동"
|
||||||
rss: "RSSリーダー"
|
rss: "RSS 리더"
|
||||||
memo: "付箋"
|
memo: "끈끈이"
|
||||||
trends: "トレンド"
|
trends: "트렌드"
|
||||||
photo-stream: "フォトストリーム"
|
photo-stream: "포토 스트림"
|
||||||
posts-monitor: "投稿チャート"
|
posts-monitor: "게시물 차트"
|
||||||
slideshow: "スライドショー"
|
slideshow: "슬라이드 쇼"
|
||||||
version: "バージョン"
|
version: "버전"
|
||||||
broadcast: "ブロードキャスト"
|
broadcast: "브로드 캐스트"
|
||||||
notifications: "通知"
|
notifications: "통지"
|
||||||
users: "おすすめユーザー"
|
users: "추천 사용자"
|
||||||
polls: "アンケート"
|
polls: "설문"
|
||||||
post-form: "投稿フォーム"
|
post-form: "게시 양식"
|
||||||
messaging: "メッセージ"
|
messaging: "메시지"
|
||||||
server: "サーバー情報"
|
server: "서버 정보"
|
||||||
donation: "寄付のお願い"
|
donation: "기부 요청"
|
||||||
nav: "ナビゲーション"
|
nav: "네비게이션"
|
||||||
tips: "ヒント"
|
tips: "팁"
|
||||||
hashtags: "ハッシュタグ"
|
hashtags: "해시 태그"
|
||||||
deck:
|
deck:
|
||||||
widgets: "ウィジェット"
|
widgets: "위젯"
|
||||||
home: "ホーム"
|
home: "홈"
|
||||||
local: "ローカル"
|
local: "로컬"
|
||||||
hybrid: "ソーシャル"
|
hybrid: "소셜"
|
||||||
global: "グローバル"
|
global: "글로벌"
|
||||||
notifications: "通知"
|
notifications: "통지"
|
||||||
list: "リスト"
|
list: "목록"
|
||||||
swap-left: "左に移動"
|
swap-left: "左に移動"
|
||||||
swap-right: "右に移動"
|
swap-right: "右に移動"
|
||||||
swap-up: "上に移動"
|
swap-up: "上に移動"
|
||||||
@@ -99,6 +140,73 @@ common:
|
|||||||
rename: "名前を変更"
|
rename: "名前を変更"
|
||||||
stack-left: "左に重ねる"
|
stack-left: "左に重ねる"
|
||||||
pop-right: "右に出す"
|
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:
|
common/views/components/connect-failed.vue:
|
||||||
title: "サーバーに接続できません"
|
title: "サーバーに接続できません"
|
||||||
description: "インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから{再度お試し}ください。"
|
description: "インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから{再度お試し}ください。"
|
||||||
@@ -125,7 +233,7 @@ common/views/components/connect-failed.troubleshooter.vue:
|
|||||||
set-version: "バージョン指定"
|
set-version: "バージョン指定"
|
||||||
common/views/components/messaging.vue:
|
common/views/components/messaging.vue:
|
||||||
search-user: "ユーザーを探す"
|
search-user: "ユーザーを探す"
|
||||||
you: "あなた"
|
you: "당신"
|
||||||
no-history: "履歴はありません"
|
no-history: "履歴はありません"
|
||||||
common/views/components/messaging-room.vue:
|
common/views/components/messaging-room.vue:
|
||||||
empty: "このユーザーと話したことはありません"
|
empty: "このユーザーと話したことはありません"
|
||||||
@@ -133,13 +241,15 @@ common/views/components/messaging-room.vue:
|
|||||||
no-history: "これより過去の履歴はありません"
|
no-history: "これより過去の履歴はありません"
|
||||||
resize-form: "ドラッグしてフォームの広さを調整"
|
resize-form: "ドラッグしてフォームの広さを調整"
|
||||||
new-message: "新しいメッセージがあります"
|
new-message: "新しいメッセージがあります"
|
||||||
|
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||||
common/views/components/messaging-room.form.vue:
|
common/views/components/messaging-room.form.vue:
|
||||||
input-message-here: "ここにメッセージを入力"
|
input-message-here: "ここにメッセージを入力"
|
||||||
send: "送信"
|
send: "전송"
|
||||||
attach-from-local: "PCからファイルを添付する"
|
attach-from-local: "PCからファイルを添付する"
|
||||||
attach-from-drive: "ドライブからファイルを添付する"
|
attach-from-drive: "ドライブからファイルを添付する"
|
||||||
|
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||||
common/views/components/messaging-room.message.vue:
|
common/views/components/messaging-room.message.vue:
|
||||||
is-read: "既読"
|
is-read: "읽음"
|
||||||
deleted: "このメッセージは削除されました"
|
deleted: "このメッセージは削除されました"
|
||||||
common/views/components/nav.vue:
|
common/views/components/nav.vue:
|
||||||
about: "Misskeyについて"
|
about: "Misskeyについて"
|
||||||
@@ -151,6 +261,8 @@ common/views/components/nav.vue:
|
|||||||
develop: "開発者"
|
develop: "開発者"
|
||||||
feedback: "フィードバック"
|
feedback: "フィードバック"
|
||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
|
detail: "詳細"
|
||||||
|
copy-link: "リンクをコピー"
|
||||||
favorite: "お気に入り"
|
favorite: "お気に入り"
|
||||||
pin: "ピン留め"
|
pin: "ピン留め"
|
||||||
delete: "削除"
|
delete: "削除"
|
||||||
@@ -177,7 +289,12 @@ common/views/components/signin.vue:
|
|||||||
token: "トークン"
|
token: "トークン"
|
||||||
signing-in: "やってます..."
|
signing-in: "やってます..."
|
||||||
signin: "サインイン"
|
signin: "サインイン"
|
||||||
|
or: "または"
|
||||||
|
signin-with-twitter: "Twitterでログイン"
|
||||||
|
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
|
invitation-code: "招待コード"
|
||||||
|
invitation-info: "招待コードをお持ちでない方は、<a href=\"{}\">管理者</a>までご連絡ください。"
|
||||||
username: "ユーザー名"
|
username: "ユーザー名"
|
||||||
checking: "確認しています..."
|
checking: "確認しています..."
|
||||||
available: "利用できます"
|
available: "利用できます"
|
||||||
@@ -223,11 +340,21 @@ common/views/components/visibility-chooser.vue:
|
|||||||
specified: "ダイレクト"
|
specified: "ダイレクト"
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
private: "非公開"
|
private: "非公開"
|
||||||
|
common/views/components/trends.vue:
|
||||||
|
count: "{}人が投稿"
|
||||||
|
empty: "トレンドなし"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "確認中"
|
fetching: "確認中"
|
||||||
no-broadcasts: "お知らせはありません"
|
no-broadcasts: "お知らせはありません"
|
||||||
have-a-nice-day: "良い一日を!"
|
have-a-nice-day: "良い一日を!"
|
||||||
next: "次"
|
next: "次"
|
||||||
|
common/views/widgets/calendar.vue:
|
||||||
|
year: "{}年"
|
||||||
|
month: "{}月"
|
||||||
|
day: "{}日"
|
||||||
|
today: "今日:"
|
||||||
|
this-month: "今月:"
|
||||||
|
this-year: "今年:"
|
||||||
common/views/widgets/donation.vue:
|
common/views/widgets/donation.vue:
|
||||||
title: "寄付のお願い"
|
title: "寄付のお願い"
|
||||||
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
||||||
@@ -239,8 +366,6 @@ common/views/widgets/posts-monitor.vue:
|
|||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
common/views/widgets/hashtags.vue:
|
common/views/widgets/hashtags.vue:
|
||||||
title: "ハッシュタグ"
|
title: "ハッシュタグ"
|
||||||
count: "{}人が投稿"
|
|
||||||
empty: "トレンドなし"
|
|
||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "サーバー情報"
|
title: "サーバー情報"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
@@ -248,12 +373,49 @@ common/views/widgets/memo.vue:
|
|||||||
title: "付箋"
|
title: "付箋"
|
||||||
memo: "ここに書いて!"
|
memo: "ここに書いて!"
|
||||||
save: "保存"
|
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:
|
common/views/pages/follow.vue:
|
||||||
signed-in-as: "{}としてサインイン中"
|
signed-in-as: "{}としてサインイン中"
|
||||||
following: "フォロー中"
|
following: "フォロー中"
|
||||||
follow: "フォロー"
|
follow: "フォロー"
|
||||||
request-pending: "フォロー許可待ち"
|
request-pending: "フォロー許可待ち"
|
||||||
follow-request: "フォロー申請"
|
follow-request: "フォロー申請"
|
||||||
|
desktop:
|
||||||
|
banner-crop-title: "バナーとして表示する部分を選択"
|
||||||
|
banner: "バナー"
|
||||||
|
uploading-banner: "新しいバナーをアップロードしています"
|
||||||
|
banner-updated: "バナーを更新しました"
|
||||||
|
choose-banner: "バナーにする画像を選択"
|
||||||
|
avatar-crop-title: "アバターとして表示する部分を選択"
|
||||||
|
avatar: "アバター"
|
||||||
|
uploading-avatar: "新しいアバターをアップロードしています"
|
||||||
|
avatar-updated: "アバターを更新しました"
|
||||||
|
choose-avatar: "アバターにする画像を選択"
|
||||||
|
invalid-filetype: "この形式のファイルはサポートされていません"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
@@ -267,6 +429,24 @@ desktop/views/components/calendar.vue:
|
|||||||
prev: "前の月"
|
prev: "前の月"
|
||||||
next: "次の月"
|
next: "次の月"
|
||||||
go: "クリックして時間遡行"
|
go: "クリックして時間遡行"
|
||||||
|
desktop/views/components/charts.vue:
|
||||||
|
title: "チャート"
|
||||||
|
per-day: "1日ごと"
|
||||||
|
per-hour: "1時間ごと"
|
||||||
|
notes: "投稿"
|
||||||
|
users: "ユーザー"
|
||||||
|
drive: "ドライブ"
|
||||||
|
charts:
|
||||||
|
notes: "投稿の増減 (統合)"
|
||||||
|
local-notes: "投稿の増減 (ローカル)"
|
||||||
|
remote-notes: "投稿の増減 (リモート)"
|
||||||
|
notes-total: "投稿の累計"
|
||||||
|
users: "ユーザーの増減"
|
||||||
|
users-total: "ユーザーの累計"
|
||||||
|
drive: "ドライブ使用量の増減"
|
||||||
|
drive-total: "ドライブ使用量の累計"
|
||||||
|
drive-files: "ドライブのファイル数の増減"
|
||||||
|
drive-files-total: "ドライブのファイル数の累計"
|
||||||
desktop/views/components/choose-file-from-drive-window.vue:
|
desktop/views/components/choose-file-from-drive-window.vue:
|
||||||
choose-file: "ファイル選択中"
|
choose-file: "ファイル選択中"
|
||||||
upload: "PCからドライブにファイルをアップロード"
|
upload: "PCからドライブにファイルをアップロード"
|
||||||
@@ -287,6 +467,7 @@ desktop/views/components/drive-window.vue:
|
|||||||
desktop/views/components/drive.file.vue:
|
desktop/views/components/drive.file.vue:
|
||||||
avatar: "アイコン"
|
avatar: "アイコン"
|
||||||
banner: "バナー"
|
banner: "バナー"
|
||||||
|
nsfw: "閲覧注意"
|
||||||
contextmenu:
|
contextmenu:
|
||||||
rename: "名前を変更"
|
rename: "名前を変更"
|
||||||
mark-as-sensitive: "閲覧注意に設定"
|
mark-as-sensitive: "閲覧注意に設定"
|
||||||
@@ -388,6 +569,8 @@ desktop/views/components/notes.note.vue:
|
|||||||
detail: "詳細"
|
detail: "詳細"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
|
hide: "隠す"
|
||||||
|
see-more: "もっと見る"
|
||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "読み込みに失敗しました。"
|
error: "読み込みに失敗しました。"
|
||||||
retry: "リトライ"
|
retry: "リトライ"
|
||||||
@@ -396,6 +579,9 @@ desktop/views/components/notifications.vue:
|
|||||||
more: "もっと見る"
|
more: "もっと見る"
|
||||||
empty: "ありません!"
|
empty: "ありません!"
|
||||||
desktop/views/components/post-form.vue:
|
desktop/views/components/post-form.vue:
|
||||||
|
add-visible-user: "+ユーザーを追加"
|
||||||
|
attach-location-information: "位置情報を添付する"
|
||||||
|
hide-contents: "内容を隠す"
|
||||||
reply-placeholder: "この投稿への返信..."
|
reply-placeholder: "この投稿への返信..."
|
||||||
quote-placeholder: "この投稿を引用..."
|
quote-placeholder: "この投稿を引用..."
|
||||||
submit: "投稿"
|
submit: "投稿"
|
||||||
@@ -416,6 +602,11 @@ desktop/views/components/post-form.vue:
|
|||||||
text-remain: "残り{}文字"
|
text-remain: "残り{}文字"
|
||||||
recent-tags: "最近"
|
recent-tags: "最近"
|
||||||
click-to-tagging: "クリックでタグ付け"
|
click-to-tagging: "クリックでタグ付け"
|
||||||
|
visibility: "公開範囲"
|
||||||
|
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||||
|
error: "エラー"
|
||||||
|
enter-username: "ユーザー名を入力してください"
|
||||||
|
annotations: "内容への注釈 (オプション)"
|
||||||
desktop/views/components/post-form-window.vue:
|
desktop/views/components/post-form-window.vue:
|
||||||
note: "新規投稿"
|
note: "新規投稿"
|
||||||
reply: "返信"
|
reply: "返信"
|
||||||
@@ -460,11 +651,15 @@ desktop/views/components/settings.vue:
|
|||||||
delete-wallpaper: "壁紙を削除"
|
delete-wallpaper: "壁紙を削除"
|
||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||||
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿をタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "マップの自動展開"
|
show-maps: "マップの自動展開"
|
||||||
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
||||||
sound: "サウンド"
|
sound: "サウンド"
|
||||||
@@ -536,6 +731,9 @@ desktop/views/components/settings.api.vue:
|
|||||||
enter-password: "パスワードを入力してください"
|
enter-password: "パスワードを入力してください"
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "連携しているアプリケーションはありません"
|
no-apps: "連携しているアプリケーションはありません"
|
||||||
|
desktop/views/components/settings.drive.vue:
|
||||||
|
max: "中"
|
||||||
|
in-use: "使用中"
|
||||||
desktop/views/components/settings.mute.vue:
|
desktop/views/components/settings.mute.vue:
|
||||||
no-users: "ミュートしているユーザーはいません"
|
no-users: "ミュートしているユーザーはいません"
|
||||||
desktop/views/components/settings.password.vue:
|
desktop/views/components/settings.password.vue:
|
||||||
@@ -558,6 +756,7 @@ desktop/views/components/settings.profile.vue:
|
|||||||
other: "その他"
|
other: "その他"
|
||||||
is-bot: "このアカウントはBotです"
|
is-bot: "このアカウントはBotです"
|
||||||
is-cat: "このアカウントはCatです"
|
is-cat: "このアカウントはCatです"
|
||||||
|
profile-updated: "プロフィールを更新しました"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
@@ -573,6 +772,7 @@ desktop/views/components/timeline.vue:
|
|||||||
list: "リスト"
|
list: "リスト"
|
||||||
desktop/views/components/ui.header.vue:
|
desktop/views/components/ui.header.vue:
|
||||||
welcome-back: "おかえりなさい、"
|
welcome-back: "おかえりなさい、"
|
||||||
|
adjective: "さん"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
drive: "ドライブ"
|
drive: "ドライブ"
|
||||||
@@ -580,6 +780,7 @@ desktop/views/components/ui.header.account.vue:
|
|||||||
lists: "リスト"
|
lists: "リスト"
|
||||||
follow-requests: "フォロー申請"
|
follow-requests: "フォロー申請"
|
||||||
customize: "ホームのカスタマイズ"
|
customize: "ホームのカスタマイズ"
|
||||||
|
admin: "管理"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
dark: "闇に飲まれる"
|
dark: "闇に飲まれる"
|
||||||
@@ -601,6 +802,7 @@ desktop/views/components/received-follow-requests-window.vue:
|
|||||||
desktop/views/components/user-lists-window.vue:
|
desktop/views/components/user-lists-window.vue:
|
||||||
title: "リスト"
|
title: "リスト"
|
||||||
create-list: "リストを作成"
|
create-list: "リストを作成"
|
||||||
|
list-name: "リスト名"
|
||||||
desktop/views/components/user-preview.vue:
|
desktop/views/components/user-preview.vue:
|
||||||
notes: "投稿"
|
notes: "投稿"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@@ -615,6 +817,34 @@ desktop/views/components/users-list-item.vue:
|
|||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
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.unverify-user.vue:
|
||||||
|
unverify-user: "ユーザーの公式アカウント解除"
|
||||||
|
unverify: "公式アカウントを解除する"
|
||||||
|
unverified: "公式アカウントを解除しました"
|
||||||
desktop/views/pages/deck/deck.tl-column.vue:
|
desktop/views/pages/deck/deck.tl-column.vue:
|
||||||
is-media-only: "メディア投稿のみ"
|
is-media-only: "メディア投稿のみ"
|
||||||
is-media-view: "メディアビュー"
|
is-media-view: "メディアビュー"
|
||||||
@@ -623,6 +853,11 @@ desktop/views/pages/deck/deck.note.vue:
|
|||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
|
desktop/views/pages/stats/stats.vue:
|
||||||
|
all-users: "全てのユーザー"
|
||||||
|
original-users: "このインスタンスのユーザー"
|
||||||
|
all-notes: "全ての投稿"
|
||||||
|
original-notes: "このインスタンスの投稿"
|
||||||
desktop/views/pages/welcome.vue:
|
desktop/views/pages/welcome.vue:
|
||||||
about: "詳しく..."
|
about: "詳しく..."
|
||||||
gotit: "わかった"
|
gotit: "わかった"
|
||||||
@@ -631,6 +866,10 @@ desktop/views/pages/welcome.vue:
|
|||||||
signin-button: "やってる"
|
signin-button: "やってる"
|
||||||
signup-button: "やる"
|
signup-button: "やる"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
|
announcements: "お知らせ"
|
||||||
|
photos: "最近の画像"
|
||||||
|
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||||
|
info: "情報"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
@@ -645,6 +884,13 @@ desktop/views/pages/selectdrive.vue:
|
|||||||
ok: "決定"
|
ok: "決定"
|
||||||
cancel: "キャンセル"
|
cancel: "キャンセル"
|
||||||
upload: "PCからドライブにファイルをアップロード"
|
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:
|
desktop/views/pages/user-list.users.vue:
|
||||||
users: "ユーザー"
|
users: "ユーザー"
|
||||||
add-user: "ユーザーを追加"
|
add-user: "ユーザーを追加"
|
||||||
@@ -675,6 +921,8 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "ミュートする"
|
mute: "ミュートする"
|
||||||
muted: "ミュートしています"
|
muted: "ミュートしています"
|
||||||
unmute: "ミュート解除"
|
unmute: "ミュート解除"
|
||||||
|
push-to-a-list: "リストに追加"
|
||||||
|
list-pushed: "{user}を{list}に追加しました。"
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.header.vue:
|
||||||
posts: "投稿"
|
posts: "投稿"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@@ -730,12 +978,15 @@ mobile/views/components/drive-file-chooser.vue:
|
|||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
mobile/views/components/drive-folder-chooser.vue:
|
mobile/views/components/drive-folder-chooser.vue:
|
||||||
select-folder: "フォルダーを選択"
|
select-folder: "フォルダーを選択"
|
||||||
|
mobile/views/components/drive.file.vue:
|
||||||
|
nsfw: "閲覧注意"
|
||||||
mobile/views/components/drive.file-detail.vue:
|
mobile/views/components/drive.file-detail.vue:
|
||||||
download: "ダウンロード"
|
download: "ダウンロード"
|
||||||
rename: "名前を変更"
|
rename: "名前を変更"
|
||||||
move: "移動"
|
move: "移動"
|
||||||
hash: "ハッシュ (md5)"
|
hash: "ハッシュ (md5)"
|
||||||
exif: "EXIF"
|
exif: "EXIF"
|
||||||
|
nsfw: "閲覧注意"
|
||||||
mobile/views/components/media-image.vue:
|
mobile/views/components/media-image.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
@@ -800,6 +1051,9 @@ mobile/views/components/sub-note-content.vue:
|
|||||||
mobile/views/components/timeline.vue:
|
mobile/views/components/timeline.vue:
|
||||||
empty: "投稿がありません"
|
empty: "投稿がありません"
|
||||||
load-more: "もっと"
|
load-more: "もっと"
|
||||||
|
mobile/views/components/ui.header.vue:
|
||||||
|
welcome-back: "おかえりなさい、"
|
||||||
|
adjective: "さん"
|
||||||
mobile/views/components/ui.nav.vue:
|
mobile/views/components/ui.nav.vue:
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
@@ -813,6 +1067,7 @@ mobile/views/components/ui.nav.vue:
|
|||||||
game: "ゲーム"
|
game: "ゲーム"
|
||||||
darkmode: "ダークモード"
|
darkmode: "ダークモード"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
|
admin: "管理"
|
||||||
about: "Misskeyについて"
|
about: "Misskeyについて"
|
||||||
mobile/views/components/user-timeline.vue:
|
mobile/views/components/user-timeline.vue:
|
||||||
no-notes: "このユーザーは投稿していないようです。"
|
no-notes: "このユーザーは投稿していないようです。"
|
||||||
@@ -830,6 +1085,8 @@ mobile/views/pages/user-lists.vue:
|
|||||||
mobile/views/pages/drive.vue:
|
mobile/views/pages/drive.vue:
|
||||||
drive: "ドライブ"
|
drive: "ドライブ"
|
||||||
more: "もっと見る"
|
more: "もっと見る"
|
||||||
|
mobile/views/pages/signup.vue:
|
||||||
|
lets-start: "📦 始めましょう"
|
||||||
mobile/views/pages/followers.vue:
|
mobile/views/pages/followers.vue:
|
||||||
followers-of: "{}のフォロワー"
|
followers-of: "{}のフォロワー"
|
||||||
mobile/views/pages/following.vue:
|
mobile/views/pages/following.vue:
|
||||||
@@ -839,6 +1096,19 @@ mobile/views/pages/home.vue:
|
|||||||
local: "ローカル"
|
local: "ローカル"
|
||||||
hybrid: "ソーシャル"
|
hybrid: "ソーシャル"
|
||||||
global: "グローバル"
|
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:
|
mobile/views/pages/messaging.vue:
|
||||||
messaging: "メッセージ"
|
messaging: "メッセージ"
|
||||||
mobile/views/pages/messaging-room.vue:
|
mobile/views/pages/messaging-room.vue:
|
||||||
@@ -854,6 +1124,8 @@ mobile/views/pages/note.vue:
|
|||||||
mobile/views/pages/notifications.vue:
|
mobile/views/pages/notifications.vue:
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
read-all: "すべての通知を既読にしますか?"
|
read-all: "すべての通知を既読にしますか?"
|
||||||
|
mobile/views/pages/games/reversi.vue:
|
||||||
|
reversi: "リバーシ"
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
mobile/views/pages/settings/settings.profile.vue:
|
||||||
title: "プロフィール"
|
title: "プロフィール"
|
||||||
name: "名前"
|
name: "名前"
|
||||||
@@ -871,6 +1143,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
search: "検索"
|
search: "検索"
|
||||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
|
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
mobile/views/pages/selectdrive.vue:
|
mobile/views/pages/selectdrive.vue:
|
||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
mobile/views/pages/settings.vue:
|
mobile/views/pages/settings.vue:
|
||||||
@@ -884,13 +1157,18 @@ mobile/views/pages/settings.vue:
|
|||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
i-am-under-limited-internet: "私は通信を制限されている"
|
i-am-under-limited-internet: "私は通信を制限されている"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteを表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteを表示する"
|
||||||
post-style: "投稿の表示スタイル"
|
post-style: "投稿の表示スタイル"
|
||||||
post-style-standard: "標準"
|
post-style-standard: "標準"
|
||||||
post-style-smart: "スマート"
|
post-style-smart: "スマート"
|
||||||
|
notification-position: "通知の表示"
|
||||||
|
notification-position-bottom: "下"
|
||||||
|
notification-position-top: "上"
|
||||||
behavior: "動作"
|
behavior: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
@@ -911,6 +1189,8 @@ mobile/views/pages/settings.vue:
|
|||||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
|
sound: "サウンド"
|
||||||
|
enable-sounds: "サウンドを有効にする"
|
||||||
mobile/views/pages/user.vue:
|
mobile/views/pages/user.vue:
|
||||||
follows-you: "フォローされています"
|
follows-you: "フォローされています"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@@ -965,3 +1245,5 @@ docs:
|
|||||||
name: "名前"
|
name: "名前"
|
||||||
type: "型"
|
type: "型"
|
||||||
description: "説明"
|
description: "説明"
|
||||||
|
dev/views/index.vue:
|
||||||
|
manage-apps: "アプリの管理"
|
||||||
1249
locales/nl-NL.yml
Normal file
1249
locales/nl-NL.yml
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,39 +1,72 @@
|
|||||||
---
|
---
|
||||||
meta:
|
meta:
|
||||||
lang: "Português"
|
lang: "norsk"
|
||||||
divider: ""
|
divider: ""
|
||||||
common:
|
common:
|
||||||
misskey: "A ⭐ of fediverse"
|
misskey: "A ⭐ of fediverse"
|
||||||
about-title: "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>右</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:
|
time:
|
||||||
unknown: "なぞのじかん"
|
unknown: "ukjent"
|
||||||
future: "未来"
|
future: "fremtidig"
|
||||||
just_now: "たった今"
|
just_now: "akkurat nå"
|
||||||
seconds_ago: "{}秒前"
|
seconds_ago: "{} sekunder siden"
|
||||||
minutes_ago: "{}分前"
|
minutes_ago: "{} minutter siden"
|
||||||
hours_ago: "{}時間前"
|
hours_ago: "{} time siden"
|
||||||
days_ago: "{}日前"
|
days_ago: "{} dag siden"
|
||||||
weeks_ago: "{}週間前"
|
weeks_ago: "{} uke(r) siden"
|
||||||
months_ago: "{}ヶ月前"
|
months_ago: "{} måned(er) siden"
|
||||||
years_ago: "{}年前"
|
years_ago: "{} år siden"
|
||||||
|
month-and-day: "{month}月 {day}日"
|
||||||
|
trash: "ゴミ箱"
|
||||||
weekday-short:
|
weekday-short:
|
||||||
sunday: "日"
|
sunday: "S"
|
||||||
monday: "月"
|
monday: "M"
|
||||||
tuesday: "火"
|
tuesday: "T"
|
||||||
wednesday: "水"
|
wednesday: "O"
|
||||||
thursday: "木"
|
thursday: "T"
|
||||||
friday: "金"
|
friday: "F"
|
||||||
saturday: "土"
|
saturday: "L"
|
||||||
|
weekday:
|
||||||
|
sunday: "日曜日"
|
||||||
|
monday: "月曜日"
|
||||||
|
tuesday: "火曜日"
|
||||||
|
wednesday: "水曜日"
|
||||||
|
thursday: "木曜日"
|
||||||
|
friday: "金曜日"
|
||||||
|
saturday: "土曜日"
|
||||||
reactions:
|
reactions:
|
||||||
like: "いいね"
|
like: "Lik"
|
||||||
love: "しゅき"
|
love: "Elsk"
|
||||||
laugh: "笑"
|
laugh: "Le"
|
||||||
hmm: "ふぅ~む"
|
hmm: "Hmm…?"
|
||||||
surprise: "わお"
|
surprise: "Wow"
|
||||||
congrats: "おめでとう"
|
congrats: "Gratulerer!"
|
||||||
angry: "おこ"
|
angry: "Sint"
|
||||||
confused: "こまこまのこまり"
|
confused: "Forvirret"
|
||||||
|
rip: "RIP"
|
||||||
pudding: "Pudding"
|
pudding: "Pudding"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "今どうしてる?"
|
a: "今どうしてる?"
|
||||||
@@ -47,17 +80,25 @@ common:
|
|||||||
loading: "読み込み中"
|
loading: "読み込み中"
|
||||||
ok: "わかった"
|
ok: "わかった"
|
||||||
update-available-title: "更新があります"
|
update-available-title: "更新があります"
|
||||||
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
|
update-available: "En ny versjon av Misskey er nå tilgjengelig ({newer}, nåværende versjon er {current}). Last inn siden igjen for at oppdateringen skal tre i kraft."
|
||||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
my-token-regenerated: "Ditt synbol har blitt generert. Du vil nå bli utlogget."
|
||||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||||
verified-user: "認証済みのユーザー"
|
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
||||||
|
verified-user: "公式アカウント"
|
||||||
|
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||||
|
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "引き分け"
|
drawn: "引き分け"
|
||||||
my-turn: "あなたのターンです"
|
my-turn: "あなたのターンです"
|
||||||
opponent-turn: "相手のターンです"
|
opponent-turn: "相手のターンです"
|
||||||
turn-of: "{}のターンです"
|
turn-of: "{}のターンです"
|
||||||
past-turn-of: "{}のターン"
|
past-turn-of: "{}のターン"
|
||||||
|
won: "{}の勝ち"
|
||||||
|
black: "黒"
|
||||||
|
white: "白"
|
||||||
|
total: "合計"
|
||||||
|
this-turn: "{}ターン目"
|
||||||
widgets:
|
widgets:
|
||||||
analog-clock: "アナログ時計"
|
analog-clock: "アナログ時計"
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
@@ -99,9 +140,76 @@ common:
|
|||||||
rename: "名前を変更"
|
rename: "名前を変更"
|
||||||
stack-left: "左に重ねる"
|
stack-left: "左に重ねる"
|
||||||
pop-right: "右に出す"
|
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:
|
common/views/components/connect-failed.vue:
|
||||||
title: "サーバーに接続できません"
|
title: "Kunne ikke koble til tjeneren."
|
||||||
description: "インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから{再度お試し}ください。"
|
description: "Det er enten et problem med internettilknytningen din, eller så har tjeneren blitt tatt ned for vedlikehold. {Prøv igjen} senere."
|
||||||
thanks: "いつもMisskeyをご利用いただきありがとうございます。"
|
thanks: "いつもMisskeyをご利用いただきありがとうございます。"
|
||||||
troubleshoot: "トラブルシュート"
|
troubleshoot: "トラブルシュート"
|
||||||
common/views/components/connect-failed.troubleshooter.vue:
|
common/views/components/connect-failed.troubleshooter.vue:
|
||||||
@@ -133,11 +241,13 @@ common/views/components/messaging-room.vue:
|
|||||||
no-history: "これより過去の履歴はありません"
|
no-history: "これより過去の履歴はありません"
|
||||||
resize-form: "ドラッグしてフォームの広さを調整"
|
resize-form: "ドラッグしてフォームの広さを調整"
|
||||||
new-message: "新しいメッセージがあります"
|
new-message: "新しいメッセージがあります"
|
||||||
|
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||||
common/views/components/messaging-room.form.vue:
|
common/views/components/messaging-room.form.vue:
|
||||||
input-message-here: "ここにメッセージを入力"
|
input-message-here: "ここにメッセージを入力"
|
||||||
send: "送信"
|
send: "送信"
|
||||||
attach-from-local: "PCからファイルを添付する"
|
attach-from-local: "PCからファイルを添付する"
|
||||||
attach-from-drive: "ドライブからファイルを添付する"
|
attach-from-drive: "ドライブからファイルを添付する"
|
||||||
|
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||||
common/views/components/messaging-room.message.vue:
|
common/views/components/messaging-room.message.vue:
|
||||||
is-read: "既読"
|
is-read: "既読"
|
||||||
deleted: "このメッセージは削除されました"
|
deleted: "このメッセージは削除されました"
|
||||||
@@ -151,6 +261,8 @@ common/views/components/nav.vue:
|
|||||||
develop: "開発者"
|
develop: "開発者"
|
||||||
feedback: "フィードバック"
|
feedback: "フィードバック"
|
||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
|
detail: "詳細"
|
||||||
|
copy-link: "リンクをコピー"
|
||||||
favorite: "お気に入り"
|
favorite: "お気に入り"
|
||||||
pin: "ピン留め"
|
pin: "ピン留め"
|
||||||
delete: "削除"
|
delete: "削除"
|
||||||
@@ -177,7 +289,12 @@ common/views/components/signin.vue:
|
|||||||
token: "トークン"
|
token: "トークン"
|
||||||
signing-in: "やってます..."
|
signing-in: "やってます..."
|
||||||
signin: "サインイン"
|
signin: "サインイン"
|
||||||
|
or: "または"
|
||||||
|
signin-with-twitter: "Twitterでログイン"
|
||||||
|
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
|
invitation-code: "招待コード"
|
||||||
|
invitation-info: "招待コードをお持ちでない方は、<a href=\"{}\">管理者</a>までご連絡ください。"
|
||||||
username: "ユーザー名"
|
username: "ユーザー名"
|
||||||
checking: "確認しています..."
|
checking: "確認しています..."
|
||||||
available: "利用できます"
|
available: "利用できます"
|
||||||
@@ -223,11 +340,21 @@ common/views/components/visibility-chooser.vue:
|
|||||||
specified: "ダイレクト"
|
specified: "ダイレクト"
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
private: "非公開"
|
private: "非公開"
|
||||||
|
common/views/components/trends.vue:
|
||||||
|
count: "{}人が投稿"
|
||||||
|
empty: "トレンドなし"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "確認中"
|
fetching: "確認中"
|
||||||
no-broadcasts: "お知らせはありません"
|
no-broadcasts: "お知らせはありません"
|
||||||
have-a-nice-day: "良い一日を!"
|
have-a-nice-day: "良い一日を!"
|
||||||
next: "次"
|
next: "次"
|
||||||
|
common/views/widgets/calendar.vue:
|
||||||
|
year: "{}年"
|
||||||
|
month: "{}月"
|
||||||
|
day: "{}日"
|
||||||
|
today: "今日:"
|
||||||
|
this-month: "今月:"
|
||||||
|
this-year: "今年:"
|
||||||
common/views/widgets/donation.vue:
|
common/views/widgets/donation.vue:
|
||||||
title: "寄付のお願い"
|
title: "寄付のお願い"
|
||||||
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
||||||
@@ -239,8 +366,6 @@ common/views/widgets/posts-monitor.vue:
|
|||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
common/views/widgets/hashtags.vue:
|
common/views/widgets/hashtags.vue:
|
||||||
title: "ハッシュタグ"
|
title: "ハッシュタグ"
|
||||||
count: "{}人が投稿"
|
|
||||||
empty: "トレンドなし"
|
|
||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "サーバー情報"
|
title: "サーバー情報"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
@@ -248,12 +373,49 @@ common/views/widgets/memo.vue:
|
|||||||
title: "付箋"
|
title: "付箋"
|
||||||
memo: "ここに書いて!"
|
memo: "ここに書いて!"
|
||||||
save: "保存"
|
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:
|
common/views/pages/follow.vue:
|
||||||
signed-in-as: "{}としてサインイン中"
|
signed-in-as: "{}としてサインイン中"
|
||||||
following: "フォロー中"
|
following: "フォロー中"
|
||||||
follow: "フォロー"
|
follow: "フォロー"
|
||||||
request-pending: "フォロー許可待ち"
|
request-pending: "フォロー許可待ち"
|
||||||
follow-request: "フォロー申請"
|
follow-request: "フォロー申請"
|
||||||
|
desktop:
|
||||||
|
banner-crop-title: "バナーとして表示する部分を選択"
|
||||||
|
banner: "バナー"
|
||||||
|
uploading-banner: "新しいバナーをアップロードしています"
|
||||||
|
banner-updated: "バナーを更新しました"
|
||||||
|
choose-banner: "バナーにする画像を選択"
|
||||||
|
avatar-crop-title: "アバターとして表示する部分を選択"
|
||||||
|
avatar: "アバター"
|
||||||
|
uploading-avatar: "新しいアバターをアップロードしています"
|
||||||
|
avatar-updated: "アバターを更新しました"
|
||||||
|
choose-avatar: "アバターにする画像を選択"
|
||||||
|
invalid-filetype: "この形式のファイルはサポートされていません"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
@@ -267,6 +429,24 @@ desktop/views/components/calendar.vue:
|
|||||||
prev: "前の月"
|
prev: "前の月"
|
||||||
next: "次の月"
|
next: "次の月"
|
||||||
go: "クリックして時間遡行"
|
go: "クリックして時間遡行"
|
||||||
|
desktop/views/components/charts.vue:
|
||||||
|
title: "チャート"
|
||||||
|
per-day: "1日ごと"
|
||||||
|
per-hour: "1時間ごと"
|
||||||
|
notes: "投稿"
|
||||||
|
users: "ユーザー"
|
||||||
|
drive: "ドライブ"
|
||||||
|
charts:
|
||||||
|
notes: "投稿の増減 (統合)"
|
||||||
|
local-notes: "投稿の増減 (ローカル)"
|
||||||
|
remote-notes: "投稿の増減 (リモート)"
|
||||||
|
notes-total: "投稿の累計"
|
||||||
|
users: "ユーザーの増減"
|
||||||
|
users-total: "ユーザーの累計"
|
||||||
|
drive: "ドライブ使用量の増減"
|
||||||
|
drive-total: "ドライブ使用量の累計"
|
||||||
|
drive-files: "ドライブのファイル数の増減"
|
||||||
|
drive-files-total: "ドライブのファイル数の累計"
|
||||||
desktop/views/components/choose-file-from-drive-window.vue:
|
desktop/views/components/choose-file-from-drive-window.vue:
|
||||||
choose-file: "ファイル選択中"
|
choose-file: "ファイル選択中"
|
||||||
upload: "PCからドライブにファイルをアップロード"
|
upload: "PCからドライブにファイルをアップロード"
|
||||||
@@ -287,6 +467,7 @@ desktop/views/components/drive-window.vue:
|
|||||||
desktop/views/components/drive.file.vue:
|
desktop/views/components/drive.file.vue:
|
||||||
avatar: "アイコン"
|
avatar: "アイコン"
|
||||||
banner: "バナー"
|
banner: "バナー"
|
||||||
|
nsfw: "閲覧注意"
|
||||||
contextmenu:
|
contextmenu:
|
||||||
rename: "名前を変更"
|
rename: "名前を変更"
|
||||||
mark-as-sensitive: "閲覧注意に設定"
|
mark-as-sensitive: "閲覧注意に設定"
|
||||||
@@ -388,6 +569,8 @@ desktop/views/components/notes.note.vue:
|
|||||||
detail: "詳細"
|
detail: "詳細"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
|
hide: "隠す"
|
||||||
|
see-more: "もっと見る"
|
||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "読み込みに失敗しました。"
|
error: "読み込みに失敗しました。"
|
||||||
retry: "リトライ"
|
retry: "リトライ"
|
||||||
@@ -396,6 +579,9 @@ desktop/views/components/notifications.vue:
|
|||||||
more: "もっと見る"
|
more: "もっと見る"
|
||||||
empty: "ありません!"
|
empty: "ありません!"
|
||||||
desktop/views/components/post-form.vue:
|
desktop/views/components/post-form.vue:
|
||||||
|
add-visible-user: "+ユーザーを追加"
|
||||||
|
attach-location-information: "位置情報を添付する"
|
||||||
|
hide-contents: "内容を隠す"
|
||||||
reply-placeholder: "この投稿への返信..."
|
reply-placeholder: "この投稿への返信..."
|
||||||
quote-placeholder: "この投稿を引用..."
|
quote-placeholder: "この投稿を引用..."
|
||||||
submit: "投稿"
|
submit: "投稿"
|
||||||
@@ -416,6 +602,11 @@ desktop/views/components/post-form.vue:
|
|||||||
text-remain: "残り{}文字"
|
text-remain: "残り{}文字"
|
||||||
recent-tags: "最近"
|
recent-tags: "最近"
|
||||||
click-to-tagging: "クリックでタグ付け"
|
click-to-tagging: "クリックでタグ付け"
|
||||||
|
visibility: "公開範囲"
|
||||||
|
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||||
|
error: "エラー"
|
||||||
|
enter-username: "ユーザー名を入力してください"
|
||||||
|
annotations: "内容への注釈 (オプション)"
|
||||||
desktop/views/components/post-form-window.vue:
|
desktop/views/components/post-form-window.vue:
|
||||||
note: "新規投稿"
|
note: "新規投稿"
|
||||||
reply: "返信"
|
reply: "返信"
|
||||||
@@ -460,11 +651,15 @@ desktop/views/components/settings.vue:
|
|||||||
delete-wallpaper: "壁紙を削除"
|
delete-wallpaper: "壁紙を削除"
|
||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||||
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿をタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "マップの自動展開"
|
show-maps: "マップの自動展開"
|
||||||
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
||||||
sound: "サウンド"
|
sound: "サウンド"
|
||||||
@@ -536,6 +731,9 @@ desktop/views/components/settings.api.vue:
|
|||||||
enter-password: "パスワードを入力してください"
|
enter-password: "パスワードを入力してください"
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "連携しているアプリケーションはありません"
|
no-apps: "連携しているアプリケーションはありません"
|
||||||
|
desktop/views/components/settings.drive.vue:
|
||||||
|
max: "中"
|
||||||
|
in-use: "使用中"
|
||||||
desktop/views/components/settings.mute.vue:
|
desktop/views/components/settings.mute.vue:
|
||||||
no-users: "ミュートしているユーザーはいません"
|
no-users: "ミュートしているユーザーはいません"
|
||||||
desktop/views/components/settings.password.vue:
|
desktop/views/components/settings.password.vue:
|
||||||
@@ -558,6 +756,7 @@ desktop/views/components/settings.profile.vue:
|
|||||||
other: "その他"
|
other: "その他"
|
||||||
is-bot: "このアカウントはBotです"
|
is-bot: "このアカウントはBotです"
|
||||||
is-cat: "このアカウントはCatです"
|
is-cat: "このアカウントはCatです"
|
||||||
|
profile-updated: "プロフィールを更新しました"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
@@ -573,6 +772,7 @@ desktop/views/components/timeline.vue:
|
|||||||
list: "リスト"
|
list: "リスト"
|
||||||
desktop/views/components/ui.header.vue:
|
desktop/views/components/ui.header.vue:
|
||||||
welcome-back: "おかえりなさい、"
|
welcome-back: "おかえりなさい、"
|
||||||
|
adjective: "さん"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
drive: "ドライブ"
|
drive: "ドライブ"
|
||||||
@@ -580,6 +780,7 @@ desktop/views/components/ui.header.account.vue:
|
|||||||
lists: "リスト"
|
lists: "リスト"
|
||||||
follow-requests: "フォロー申請"
|
follow-requests: "フォロー申請"
|
||||||
customize: "ホームのカスタマイズ"
|
customize: "ホームのカスタマイズ"
|
||||||
|
admin: "管理"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
dark: "闇に飲まれる"
|
dark: "闇に飲まれる"
|
||||||
@@ -601,6 +802,7 @@ desktop/views/components/received-follow-requests-window.vue:
|
|||||||
desktop/views/components/user-lists-window.vue:
|
desktop/views/components/user-lists-window.vue:
|
||||||
title: "リスト"
|
title: "リスト"
|
||||||
create-list: "リストを作成"
|
create-list: "リストを作成"
|
||||||
|
list-name: "リスト名"
|
||||||
desktop/views/components/user-preview.vue:
|
desktop/views/components/user-preview.vue:
|
||||||
notes: "投稿"
|
notes: "投稿"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@@ -615,6 +817,34 @@ desktop/views/components/users-list-item.vue:
|
|||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
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.unverify-user.vue:
|
||||||
|
unverify-user: "ユーザーの公式アカウント解除"
|
||||||
|
unverify: "公式アカウントを解除する"
|
||||||
|
unverified: "公式アカウントを解除しました"
|
||||||
desktop/views/pages/deck/deck.tl-column.vue:
|
desktop/views/pages/deck/deck.tl-column.vue:
|
||||||
is-media-only: "メディア投稿のみ"
|
is-media-only: "メディア投稿のみ"
|
||||||
is-media-view: "メディアビュー"
|
is-media-view: "メディアビュー"
|
||||||
@@ -623,6 +853,11 @@ desktop/views/pages/deck/deck.note.vue:
|
|||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
|
desktop/views/pages/stats/stats.vue:
|
||||||
|
all-users: "全てのユーザー"
|
||||||
|
original-users: "このインスタンスのユーザー"
|
||||||
|
all-notes: "全ての投稿"
|
||||||
|
original-notes: "このインスタンスの投稿"
|
||||||
desktop/views/pages/welcome.vue:
|
desktop/views/pages/welcome.vue:
|
||||||
about: "詳しく..."
|
about: "詳しく..."
|
||||||
gotit: "わかった"
|
gotit: "わかった"
|
||||||
@@ -631,6 +866,10 @@ desktop/views/pages/welcome.vue:
|
|||||||
signin-button: "やってる"
|
signin-button: "やってる"
|
||||||
signup-button: "やる"
|
signup-button: "やる"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
|
announcements: "お知らせ"
|
||||||
|
photos: "最近の画像"
|
||||||
|
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||||
|
info: "情報"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
@@ -645,6 +884,13 @@ desktop/views/pages/selectdrive.vue:
|
|||||||
ok: "決定"
|
ok: "決定"
|
||||||
cancel: "キャンセル"
|
cancel: "キャンセル"
|
||||||
upload: "PCからドライブにファイルをアップロード"
|
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:
|
desktop/views/pages/user-list.users.vue:
|
||||||
users: "ユーザー"
|
users: "ユーザー"
|
||||||
add-user: "ユーザーを追加"
|
add-user: "ユーザーを追加"
|
||||||
@@ -675,6 +921,8 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "ミュートする"
|
mute: "ミュートする"
|
||||||
muted: "ミュートしています"
|
muted: "ミュートしています"
|
||||||
unmute: "ミュート解除"
|
unmute: "ミュート解除"
|
||||||
|
push-to-a-list: "リストに追加"
|
||||||
|
list-pushed: "{user}を{list}に追加しました。"
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.header.vue:
|
||||||
posts: "投稿"
|
posts: "投稿"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@@ -730,12 +978,15 @@ mobile/views/components/drive-file-chooser.vue:
|
|||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
mobile/views/components/drive-folder-chooser.vue:
|
mobile/views/components/drive-folder-chooser.vue:
|
||||||
select-folder: "フォルダーを選択"
|
select-folder: "フォルダーを選択"
|
||||||
|
mobile/views/components/drive.file.vue:
|
||||||
|
nsfw: "閲覧注意"
|
||||||
mobile/views/components/drive.file-detail.vue:
|
mobile/views/components/drive.file-detail.vue:
|
||||||
download: "ダウンロード"
|
download: "ダウンロード"
|
||||||
rename: "名前を変更"
|
rename: "名前を変更"
|
||||||
move: "移動"
|
move: "移動"
|
||||||
hash: "ハッシュ (md5)"
|
hash: "ハッシュ (md5)"
|
||||||
exif: "EXIF"
|
exif: "EXIF"
|
||||||
|
nsfw: "閲覧注意"
|
||||||
mobile/views/components/media-image.vue:
|
mobile/views/components/media-image.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
@@ -800,6 +1051,9 @@ mobile/views/components/sub-note-content.vue:
|
|||||||
mobile/views/components/timeline.vue:
|
mobile/views/components/timeline.vue:
|
||||||
empty: "投稿がありません"
|
empty: "投稿がありません"
|
||||||
load-more: "もっと"
|
load-more: "もっと"
|
||||||
|
mobile/views/components/ui.header.vue:
|
||||||
|
welcome-back: "おかえりなさい、"
|
||||||
|
adjective: "さん"
|
||||||
mobile/views/components/ui.nav.vue:
|
mobile/views/components/ui.nav.vue:
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
@@ -813,6 +1067,7 @@ mobile/views/components/ui.nav.vue:
|
|||||||
game: "ゲーム"
|
game: "ゲーム"
|
||||||
darkmode: "ダークモード"
|
darkmode: "ダークモード"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
|
admin: "管理"
|
||||||
about: "Misskeyについて"
|
about: "Misskeyについて"
|
||||||
mobile/views/components/user-timeline.vue:
|
mobile/views/components/user-timeline.vue:
|
||||||
no-notes: "このユーザーは投稿していないようです。"
|
no-notes: "このユーザーは投稿していないようです。"
|
||||||
@@ -830,6 +1085,8 @@ mobile/views/pages/user-lists.vue:
|
|||||||
mobile/views/pages/drive.vue:
|
mobile/views/pages/drive.vue:
|
||||||
drive: "ドライブ"
|
drive: "ドライブ"
|
||||||
more: "もっと見る"
|
more: "もっと見る"
|
||||||
|
mobile/views/pages/signup.vue:
|
||||||
|
lets-start: "📦 始めましょう"
|
||||||
mobile/views/pages/followers.vue:
|
mobile/views/pages/followers.vue:
|
||||||
followers-of: "{}のフォロワー"
|
followers-of: "{}のフォロワー"
|
||||||
mobile/views/pages/following.vue:
|
mobile/views/pages/following.vue:
|
||||||
@@ -839,6 +1096,19 @@ mobile/views/pages/home.vue:
|
|||||||
local: "ローカル"
|
local: "ローカル"
|
||||||
hybrid: "ソーシャル"
|
hybrid: "ソーシャル"
|
||||||
global: "グローバル"
|
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:
|
mobile/views/pages/messaging.vue:
|
||||||
messaging: "メッセージ"
|
messaging: "メッセージ"
|
||||||
mobile/views/pages/messaging-room.vue:
|
mobile/views/pages/messaging-room.vue:
|
||||||
@@ -854,6 +1124,8 @@ mobile/views/pages/note.vue:
|
|||||||
mobile/views/pages/notifications.vue:
|
mobile/views/pages/notifications.vue:
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
read-all: "すべての通知を既読にしますか?"
|
read-all: "すべての通知を既読にしますか?"
|
||||||
|
mobile/views/pages/games/reversi.vue:
|
||||||
|
reversi: "リバーシ"
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
mobile/views/pages/settings/settings.profile.vue:
|
||||||
title: "プロフィール"
|
title: "プロフィール"
|
||||||
name: "名前"
|
name: "名前"
|
||||||
@@ -871,6 +1143,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
search: "検索"
|
search: "検索"
|
||||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
|
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
mobile/views/pages/selectdrive.vue:
|
mobile/views/pages/selectdrive.vue:
|
||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
mobile/views/pages/settings.vue:
|
mobile/views/pages/settings.vue:
|
||||||
@@ -884,13 +1157,18 @@ mobile/views/pages/settings.vue:
|
|||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
i-am-under-limited-internet: "私は通信を制限されている"
|
i-am-under-limited-internet: "私は通信を制限されている"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteを表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteを表示する"
|
||||||
post-style: "投稿の表示スタイル"
|
post-style: "投稿の表示スタイル"
|
||||||
post-style-standard: "標準"
|
post-style-standard: "標準"
|
||||||
post-style-smart: "スマート"
|
post-style-smart: "スマート"
|
||||||
|
notification-position: "通知の表示"
|
||||||
|
notification-position-bottom: "下"
|
||||||
|
notification-position-top: "上"
|
||||||
behavior: "動作"
|
behavior: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
@@ -911,6 +1189,8 @@ mobile/views/pages/settings.vue:
|
|||||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
|
sound: "サウンド"
|
||||||
|
enable-sounds: "サウンドを有効にする"
|
||||||
mobile/views/pages/user.vue:
|
mobile/views/pages/user.vue:
|
||||||
follows-you: "フォローされています"
|
follows-you: "フォローされています"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@@ -965,3 +1245,5 @@ docs:
|
|||||||
name: "名前"
|
name: "名前"
|
||||||
type: "型"
|
type: "型"
|
||||||
description: "説明"
|
description: "説明"
|
||||||
|
dev/views/index.vue:
|
||||||
|
manage-apps: "アプリの管理"
|
||||||
@@ -6,6 +6,28 @@ common:
|
|||||||
misskey: "⭐ Fediwersum"
|
misskey: "⭐ Fediwersum"
|
||||||
about-title: "⭐ Fediwersum"
|
about-title: "⭐ Fediwersum"
|
||||||
about: "Dziękujemy za znalezienie Misskey. Misskey jest <b>zdecentralizowaną platformą mikroblogową</b> powstałą na Ziemi. Ponieważ działa ona w Fediwersum (uniwersum, w którego skład wchodzi wiele sieci społecznościowych), jest ona połączona z innymi platformami społecznościowymi. Spróbujesz odpocząć od zatłoczoneo miasta i zanurzyć się w nowym Internecie?"
|
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:
|
time:
|
||||||
unknown: "nieznany"
|
unknown: "nieznany"
|
||||||
future: "w przyszłości"
|
future: "w przyszłości"
|
||||||
@@ -17,6 +39,8 @@ common:
|
|||||||
weeks_ago: "{} tyg. temu"
|
weeks_ago: "{} tyg. temu"
|
||||||
months_ago: "{} mies. temu"
|
months_ago: "{} mies. temu"
|
||||||
years_ago: "{} lat temu"
|
years_ago: "{} lat temu"
|
||||||
|
month-and-day: "{month}-{day}"
|
||||||
|
trash: "Kosz"
|
||||||
weekday-short:
|
weekday-short:
|
||||||
sunday: "N"
|
sunday: "N"
|
||||||
monday: "Pn"
|
monday: "Pn"
|
||||||
@@ -25,8 +49,16 @@ common:
|
|||||||
thursday: "C"
|
thursday: "C"
|
||||||
friday: "P"
|
friday: "P"
|
||||||
saturday: "S"
|
saturday: "S"
|
||||||
|
weekday:
|
||||||
|
sunday: "Niedziela"
|
||||||
|
monday: "Poniedziałek"
|
||||||
|
tuesday: "Wtorek"
|
||||||
|
wednesday: "Środa"
|
||||||
|
thursday: "Czwartek"
|
||||||
|
friday: "Piątek"
|
||||||
|
saturday: "Sobota"
|
||||||
reactions:
|
reactions:
|
||||||
like: "Lubię"
|
like: "いいね"
|
||||||
love: "Kocham"
|
love: "Kocham"
|
||||||
laugh: "Śmieszne"
|
laugh: "Śmieszne"
|
||||||
hmm: "Hmm…?"
|
hmm: "Hmm…?"
|
||||||
@@ -34,6 +66,7 @@ common:
|
|||||||
congrats: "Gratuluję!"
|
congrats: "Gratuluję!"
|
||||||
angry: "Wściekły"
|
angry: "Wściekły"
|
||||||
confused: "Zmieszany"
|
confused: "Zmieszany"
|
||||||
|
rip: "RIP"
|
||||||
pudding: "Pudding"
|
pudding: "Pudding"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "Co robisz?"
|
a: "Co robisz?"
|
||||||
@@ -51,13 +84,21 @@ common:
|
|||||||
my-token-regenerated: "Twój token został wygenerowany. Zostaniesz wylogowany."
|
my-token-regenerated: "Twój token został wygenerowany. Zostaniesz wylogowany."
|
||||||
i-like-sushi: "Wolę sushi od puddingu"
|
i-like-sushi: "Wolę sushi od puddingu"
|
||||||
show-reversi-board-labels: "Pokazuj podpisy wierszy i kolumn w Reversi"
|
show-reversi-board-labels: "Pokazuj podpisy wierszy i kolumn w Reversi"
|
||||||
verified-user: "Zweryfikowany użytkownik"
|
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
||||||
|
verified-user: "公式アカウント"
|
||||||
|
disable-animated-mfm: "Wyłącz animowany tekst we wpisach"
|
||||||
|
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "Remis"
|
drawn: "Remis"
|
||||||
my-turn: "Twoja kolej"
|
my-turn: "Twoja kolej"
|
||||||
opponent-turn: "Kolej na przeciwnika"
|
opponent-turn: "Kolej na przeciwnika"
|
||||||
turn-of: "Kolej na {}"
|
turn-of: "Kolej na {}"
|
||||||
past-turn-of: "Kolej {}"
|
past-turn-of: "Kolej {}"
|
||||||
|
won: "{}の勝ち"
|
||||||
|
black: "Czarny"
|
||||||
|
white: "Biały"
|
||||||
|
total: "Łącznie"
|
||||||
|
this-turn: "Ruch {}"
|
||||||
widgets:
|
widgets:
|
||||||
analog-clock: "Zegar analogowy"
|
analog-clock: "Zegar analogowy"
|
||||||
profile: "Profil"
|
profile: "Profil"
|
||||||
@@ -99,6 +140,73 @@ common:
|
|||||||
rename: "Zmień nazwę"
|
rename: "Zmień nazwę"
|
||||||
stack-left: "Przypnij do lewej"
|
stack-left: "Przypnij do lewej"
|
||||||
pop-right: "Odepnij w prawo"
|
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:
|
common/views/components/connect-failed.vue:
|
||||||
title: "Nie udało się połączyć z serwerem"
|
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."
|
description: "Wystąpił problem z Twoim połączeniem z Internetem, lub z serwerem. {Spróbuj ponownie} wkrótce."
|
||||||
@@ -133,11 +241,13 @@ common/views/components/messaging-room.vue:
|
|||||||
no-history: "Brak dalszej historii"
|
no-history: "Brak dalszej historii"
|
||||||
resize-form: "Przeciągnij aby zmienić rozmiar"
|
resize-form: "Przeciągnij aby zmienić rozmiar"
|
||||||
new-message: "Nowa wiadomość"
|
new-message: "Nowa wiadomość"
|
||||||
|
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||||
common/views/components/messaging-room.form.vue:
|
common/views/components/messaging-room.form.vue:
|
||||||
input-message-here: "Wprowadź wiadomość tutaj"
|
input-message-here: "Wprowadź wiadomość tutaj"
|
||||||
send: "Wyślij"
|
send: "Wyślij"
|
||||||
attach-from-local: "Załącz pliki z komputera"
|
attach-from-local: "Załącz pliki z komputera"
|
||||||
attach-from-drive: "Załącz pliki z dysku"
|
attach-from-drive: "Załącz pliki z dysku"
|
||||||
|
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||||
common/views/components/messaging-room.message.vue:
|
common/views/components/messaging-room.message.vue:
|
||||||
is-read: "Przeczytano"
|
is-read: "Przeczytano"
|
||||||
deleted: "Wiadomość została usunięta"
|
deleted: "Wiadomość została usunięta"
|
||||||
@@ -151,6 +261,8 @@ common/views/components/nav.vue:
|
|||||||
develop: "Autorzy"
|
develop: "Autorzy"
|
||||||
feedback: "Podziel się opinią"
|
feedback: "Podziel się opinią"
|
||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
|
detail: "詳細"
|
||||||
|
copy-link: "リンクをコピー"
|
||||||
favorite: "Dodaj do ulubionych"
|
favorite: "Dodaj do ulubionych"
|
||||||
pin: "Przypnij do profilu"
|
pin: "Przypnij do profilu"
|
||||||
delete: "Usuń"
|
delete: "Usuń"
|
||||||
@@ -177,7 +289,12 @@ common/views/components/signin.vue:
|
|||||||
token: "Token"
|
token: "Token"
|
||||||
signing-in: "Logowanie…"
|
signing-in: "Logowanie…"
|
||||||
signin: "Zaloguj"
|
signin: "Zaloguj"
|
||||||
|
or: "または"
|
||||||
|
signin-with-twitter: "Zaloguj się za pomocą Twittera"
|
||||||
|
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
|
invitation-code: "招待コード"
|
||||||
|
invitation-info: "招待コードをお持ちでない方は、<a href=\"{}\">管理者</a>までご連絡ください。"
|
||||||
username: "Nazwa użytkownika"
|
username: "Nazwa użytkownika"
|
||||||
checking: "Sprawdzanie…"
|
checking: "Sprawdzanie…"
|
||||||
available: "Dostępna"
|
available: "Dostępna"
|
||||||
@@ -223,11 +340,21 @@ common/views/components/visibility-chooser.vue:
|
|||||||
specified: "Bezpośredni"
|
specified: "Bezpośredni"
|
||||||
specified-desc: "Tylko dla określonych użytkowników"
|
specified-desc: "Tylko dla określonych użytkowników"
|
||||||
private: "Prywatny"
|
private: "Prywatny"
|
||||||
|
common/views/components/trends.vue:
|
||||||
|
count: "{}人が投稿"
|
||||||
|
empty: "トレンドなし"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "Sprawdzanie"
|
fetching: "Sprawdzanie"
|
||||||
no-broadcasts: "Brak transmisji"
|
no-broadcasts: "Brak transmisji"
|
||||||
have-a-nice-day: "Miłego dnia!"
|
have-a-nice-day: "Miłego dnia!"
|
||||||
next: "Dalej"
|
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:
|
common/views/widgets/donation.vue:
|
||||||
title: "Dotacje"
|
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!"
|
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!"
|
||||||
@@ -239,8 +366,6 @@ common/views/widgets/posts-monitor.vue:
|
|||||||
toggle: "Przełącz widok"
|
toggle: "Przełącz widok"
|
||||||
common/views/widgets/hashtags.vue:
|
common/views/widgets/hashtags.vue:
|
||||||
title: "Hashtagi"
|
title: "Hashtagi"
|
||||||
count: "Wspomniany przez {} użytkowników"
|
|
||||||
empty: "Brak popularnych hashtagów"
|
|
||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "Informacje o serwerze"
|
title: "Informacje o serwerze"
|
||||||
toggle: "Przełącz widok"
|
toggle: "Przełącz widok"
|
||||||
@@ -248,12 +373,49 @@ common/views/widgets/memo.vue:
|
|||||||
title: "Notatka"
|
title: "Notatka"
|
||||||
memo: "Napisz tutaj!"
|
memo: "Napisz tutaj!"
|
||||||
save: "Zapisz"
|
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:
|
common/views/pages/follow.vue:
|
||||||
signed-in-as: "Zalogowany jako {}"
|
signed-in-as: "Zalogowany jako {}"
|
||||||
following: "Śledzisz"
|
following: "Śledzisz"
|
||||||
follow: "Śledź"
|
follow: "Śledź"
|
||||||
request-pending: "Oczekiwanie na pozwolenie"
|
request-pending: "Oczekiwanie na pozwolenie"
|
||||||
follow-request: "Poproś o śledzenie"
|
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"
|
||||||
|
invalid-filetype: "この形式のファイルはサポートされていません"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Czarny … Łącznie"
|
total: "Czarny … Łącznie"
|
||||||
notes: "Niebieski … Wpisy"
|
notes: "Niebieski … Wpisy"
|
||||||
@@ -267,6 +429,24 @@ desktop/views/components/calendar.vue:
|
|||||||
prev: "Poprzedni miesiąc"
|
prev: "Poprzedni miesiąc"
|
||||||
next: "Następny miesiąc"
|
next: "Następny miesiąc"
|
||||||
go: "Naciśnij, aby przejść"
|
go: "Naciśnij, aby przejść"
|
||||||
|
desktop/views/components/charts.vue:
|
||||||
|
title: "チャート"
|
||||||
|
per-day: "1日ごと"
|
||||||
|
per-hour: "1時間ごと"
|
||||||
|
notes: "投稿"
|
||||||
|
users: "ユーザー"
|
||||||
|
drive: "ドライブ"
|
||||||
|
charts:
|
||||||
|
notes: "投稿の増減 (統合)"
|
||||||
|
local-notes: "投稿の増減 (ローカル)"
|
||||||
|
remote-notes: "投稿の増減 (リモート)"
|
||||||
|
notes-total: "投稿の累計"
|
||||||
|
users: "ユーザーの増減"
|
||||||
|
users-total: "ユーザーの累計"
|
||||||
|
drive: "ドライブ使用量の増減"
|
||||||
|
drive-total: "ドライブ使用量の累計"
|
||||||
|
drive-files: "ドライブのファイル数の増減"
|
||||||
|
drive-files-total: "ドライブのファイル数の累計"
|
||||||
desktop/views/components/choose-file-from-drive-window.vue:
|
desktop/views/components/choose-file-from-drive-window.vue:
|
||||||
choose-file: "Wybierz plik"
|
choose-file: "Wybierz plik"
|
||||||
upload: "Wyślij pliki z Twojego komputera"
|
upload: "Wyślij pliki z Twojego komputera"
|
||||||
@@ -287,6 +467,7 @@ desktop/views/components/drive-window.vue:
|
|||||||
desktop/views/components/drive.file.vue:
|
desktop/views/components/drive.file.vue:
|
||||||
avatar: "Awatar"
|
avatar: "Awatar"
|
||||||
banner: "Baner"
|
banner: "Baner"
|
||||||
|
nsfw: "閲覧注意"
|
||||||
contextmenu:
|
contextmenu:
|
||||||
rename: "Zmień nazwę"
|
rename: "Zmień nazwę"
|
||||||
mark-as-sensitive: "Oznacz jako zawartość wrażliwą"
|
mark-as-sensitive: "Oznacz jako zawartość wrażliwą"
|
||||||
@@ -388,6 +569,8 @@ desktop/views/components/notes.note.vue:
|
|||||||
detail: "Pokaż szczegóły"
|
detail: "Pokaż szczegóły"
|
||||||
private: "ten wpis jest prywatny"
|
private: "ten wpis jest prywatny"
|
||||||
deleted: "ten wpis został usunięty"
|
deleted: "ten wpis został usunięty"
|
||||||
|
hide: "Zwiń"
|
||||||
|
see-more: "Więcej"
|
||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "Ładowanie nie powiodło się."
|
error: "Ładowanie nie powiodło się."
|
||||||
retry: "Spróbuj ponownie"
|
retry: "Spróbuj ponownie"
|
||||||
@@ -396,6 +579,9 @@ desktop/views/components/notifications.vue:
|
|||||||
more: "Więcej"
|
more: "Więcej"
|
||||||
empty: "Brak powiadomień"
|
empty: "Brak powiadomień"
|
||||||
desktop/views/components/post-form.vue:
|
desktop/views/components/post-form.vue:
|
||||||
|
add-visible-user: "+Dodaj użytkownika"
|
||||||
|
attach-location-information: "Załącz informacje o lokalizacji"
|
||||||
|
hide-contents: "Ukryj zawartość"
|
||||||
reply-placeholder: "Odpowiedz na ten wpis…"
|
reply-placeholder: "Odpowiedz na ten wpis…"
|
||||||
quote-placeholder: "Zacytuj ten wpis…"
|
quote-placeholder: "Zacytuj ten wpis…"
|
||||||
submit: "Wyślij"
|
submit: "Wyślij"
|
||||||
@@ -416,6 +602,11 @@ desktop/views/components/post-form.vue:
|
|||||||
text-remain: "pozostałe znaki: {}"
|
text-remain: "pozostałe znaki: {}"
|
||||||
recent-tags: "Ostatnie"
|
recent-tags: "Ostatnie"
|
||||||
click-to-tagging: "Naciśnij aby oznaczyć"
|
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:
|
desktop/views/components/post-form-window.vue:
|
||||||
note: "Nowy wpis"
|
note: "Nowy wpis"
|
||||||
reply: "Odpowiedz"
|
reply: "Odpowiedz"
|
||||||
@@ -460,11 +651,15 @@ desktop/views/components/settings.vue:
|
|||||||
delete-wallpaper: "Usuń tło"
|
delete-wallpaper: "Usuń tło"
|
||||||
dark-mode: "Tryb ciemny"
|
dark-mode: "Tryb ciemny"
|
||||||
circle-icons: "Używaj okrągłych ikon"
|
circle-icons: "Używaj okrągłych ikon"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
gradient-window-header: "Używaj gradientów na pasku tytułu okna"
|
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"
|
post-form-on-timeline: "Wyświetlaj formularz tworzenia wpisu w górnej części osi czasu"
|
||||||
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "Pokazuj cel odpowiedzi"
|
show-reply-target: "Pokazuj cel odpowiedzi"
|
||||||
show-my-renotes: "Pokazuj moje udostępnienia na osi czasu"
|
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: "Automatycznie pokazuj mapę"
|
||||||
show-maps-desc: "Mapa będzie automatycznie rozwijana dla wpisów zawierających informacje o lokalizacji."
|
show-maps-desc: "Mapa będzie automatycznie rozwijana dla wpisów zawierających informacje o lokalizacji."
|
||||||
sound: "Dźwięk"
|
sound: "Dźwięk"
|
||||||
@@ -536,6 +731,9 @@ desktop/views/components/settings.api.vue:
|
|||||||
enter-password: "Wprowadź hasło"
|
enter-password: "Wprowadź hasło"
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "Brak zautoryzowanych aplikacji"
|
no-apps: "Brak zautoryzowanych aplikacji"
|
||||||
|
desktop/views/components/settings.drive.vue:
|
||||||
|
max: "Maksymalnie"
|
||||||
|
in-use: " w użyciu."
|
||||||
desktop/views/components/settings.mute.vue:
|
desktop/views/components/settings.mute.vue:
|
||||||
no-users: "Brak wyciszonych użytkowników"
|
no-users: "Brak wyciszonych użytkowników"
|
||||||
desktop/views/components/settings.password.vue:
|
desktop/views/components/settings.password.vue:
|
||||||
@@ -558,6 +756,7 @@ desktop/views/components/settings.profile.vue:
|
|||||||
other: "Inne"
|
other: "Inne"
|
||||||
is-bot: "To konto jest prowadzone przez bota"
|
is-bot: "To konto jest prowadzone przez bota"
|
||||||
is-cat: "To konto jest prowadzone przez kota"
|
is-cat: "To konto jest prowadzone przez kota"
|
||||||
|
profile-updated: "Zaktualizowano profil"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
private: "ten wpis jest prywatny"
|
private: "ten wpis jest prywatny"
|
||||||
deleted: "ten wpis został usunięty"
|
deleted: "ten wpis został usunięty"
|
||||||
@@ -573,6 +772,7 @@ desktop/views/components/timeline.vue:
|
|||||||
list: "Listy"
|
list: "Listy"
|
||||||
desktop/views/components/ui.header.vue:
|
desktop/views/components/ui.header.vue:
|
||||||
welcome-back: "Witaj ponownie,"
|
welcome-back: "Witaj ponownie,"
|
||||||
|
adjective: "さん"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "Twój profil"
|
profile: "Twój profil"
|
||||||
drive: "Dysk"
|
drive: "Dysk"
|
||||||
@@ -580,6 +780,7 @@ desktop/views/components/ui.header.account.vue:
|
|||||||
lists: "Listy"
|
lists: "Listy"
|
||||||
follow-requests: "Prośby o śledzenie"
|
follow-requests: "Prośby o śledzenie"
|
||||||
customize: "Dostosuj stronę główną"
|
customize: "Dostosuj stronę główną"
|
||||||
|
admin: "管理"
|
||||||
settings: "Ustawienia"
|
settings: "Ustawienia"
|
||||||
signout: "Wyloguj się"
|
signout: "Wyloguj się"
|
||||||
dark: "Sprowadź ciemność"
|
dark: "Sprowadź ciemność"
|
||||||
@@ -601,6 +802,7 @@ desktop/views/components/received-follow-requests-window.vue:
|
|||||||
desktop/views/components/user-lists-window.vue:
|
desktop/views/components/user-lists-window.vue:
|
||||||
title: "Listy"
|
title: "Listy"
|
||||||
create-list: "Utwórz listę"
|
create-list: "Utwórz listę"
|
||||||
|
list-name: "Nazwa listy"
|
||||||
desktop/views/components/user-preview.vue:
|
desktop/views/components/user-preview.vue:
|
||||||
notes: "Wpisy"
|
notes: "Wpisy"
|
||||||
following: "Śledzeni"
|
following: "Śledzeni"
|
||||||
@@ -615,6 +817,34 @@ desktop/views/components/users-list-item.vue:
|
|||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "Pop-out"
|
popout: "Pop-out"
|
||||||
close: "Zamknij"
|
close: "Zamknij"
|
||||||
|
desktop/views/pages/admin/admin.vue:
|
||||||
|
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.unverify-user.vue:
|
||||||
|
unverify-user: "ユーザーの公式アカウント解除"
|
||||||
|
unverify: "公式アカウントを解除する"
|
||||||
|
unverified: "公式アカウントを解除しました"
|
||||||
desktop/views/pages/deck/deck.tl-column.vue:
|
desktop/views/pages/deck/deck.tl-column.vue:
|
||||||
is-media-only: "Tylko wpisy z zawartością multimedialną"
|
is-media-only: "Tylko wpisy z zawartością multimedialną"
|
||||||
is-media-view: "Widok multimediów"
|
is-media-view: "Widok multimediów"
|
||||||
@@ -623,6 +853,11 @@ desktop/views/pages/deck/deck.note.vue:
|
|||||||
reposted-by: "Udostępniono przez {}"
|
reposted-by: "Udostępniono przez {}"
|
||||||
private: "ten wpis jest prywatny"
|
private: "ten wpis jest prywatny"
|
||||||
deleted: "ten wpis został usunięty"
|
deleted: "ten wpis został usunięty"
|
||||||
|
desktop/views/pages/stats/stats.vue:
|
||||||
|
all-users: "全てのユーザー"
|
||||||
|
original-users: "このインスタンスのユーザー"
|
||||||
|
all-notes: "全ての投稿"
|
||||||
|
original-notes: "このインスタンスの投稿"
|
||||||
desktop/views/pages/welcome.vue:
|
desktop/views/pages/welcome.vue:
|
||||||
about: "O Misskey"
|
about: "O Misskey"
|
||||||
gotit: "Rozumiem!"
|
gotit: "Rozumiem!"
|
||||||
@@ -631,6 +866,10 @@ desktop/views/pages/welcome.vue:
|
|||||||
signin-button: "Zaloguj się"
|
signin-button: "Zaloguj się"
|
||||||
signup-button: "Zarejestruj się"
|
signup-button: "Zarejestruj się"
|
||||||
timeline: "Oś czasu"
|
timeline: "Oś czasu"
|
||||||
|
announcements: "お知らせ"
|
||||||
|
photos: "最近の画像"
|
||||||
|
powered-by-misskey: "Oparto o <b>Misskey</b>."
|
||||||
|
info: "情報"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Dysk Misskey"
|
title: "Dysk Misskey"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
@@ -645,6 +884,13 @@ desktop/views/pages/selectdrive.vue:
|
|||||||
ok: "OK"
|
ok: "OK"
|
||||||
cancel: "Anuluj"
|
cancel: "Anuluj"
|
||||||
upload: "Wyślij pliki z Twojego komputera"
|
upload: "Wyślij pliki z Twojego komputera"
|
||||||
|
desktop/views/pages/search.vue:
|
||||||
|
not-available: "検索機能はインスタンスの設定で無効になっています。"
|
||||||
|
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:
|
desktop/views/pages/user-list.users.vue:
|
||||||
users: "Użytkownicy"
|
users: "Użytkownicy"
|
||||||
add-user: "Dodaj użytkownika"
|
add-user: "Dodaj użytkownika"
|
||||||
@@ -675,6 +921,8 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "Wycisz"
|
mute: "Wycisz"
|
||||||
muted: "Wyciszyłeś"
|
muted: "Wyciszyłeś"
|
||||||
unmute: "Cofnij wyciszenie"
|
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:
|
desktop/views/pages/user/user.header.vue:
|
||||||
posts: "Wpisy"
|
posts: "Wpisy"
|
||||||
following: "Śledzeni"
|
following: "Śledzeni"
|
||||||
@@ -730,12 +978,15 @@ mobile/views/components/drive-file-chooser.vue:
|
|||||||
select-file: "Wybierz plik"
|
select-file: "Wybierz plik"
|
||||||
mobile/views/components/drive-folder-chooser.vue:
|
mobile/views/components/drive-folder-chooser.vue:
|
||||||
select-folder: "Wybierz katalog"
|
select-folder: "Wybierz katalog"
|
||||||
|
mobile/views/components/drive.file.vue:
|
||||||
|
nsfw: "閲覧注意"
|
||||||
mobile/views/components/drive.file-detail.vue:
|
mobile/views/components/drive.file-detail.vue:
|
||||||
download: "Pobierz"
|
download: "Pobierz"
|
||||||
rename: "Zmień nazwę"
|
rename: "Zmień nazwę"
|
||||||
move: "Przenieś"
|
move: "Przenieś"
|
||||||
hash: "Hash (md5)"
|
hash: "Hash (md5)"
|
||||||
exif: "EXIF"
|
exif: "EXIF"
|
||||||
|
nsfw: "閲覧注意"
|
||||||
mobile/views/components/media-image.vue:
|
mobile/views/components/media-image.vue:
|
||||||
sensitive: "To jest zawartość NSFW"
|
sensitive: "To jest zawartość NSFW"
|
||||||
click-to-show: "Naciśnij aby wyświetlić"
|
click-to-show: "Naciśnij aby wyświetlić"
|
||||||
@@ -800,6 +1051,9 @@ mobile/views/components/sub-note-content.vue:
|
|||||||
mobile/views/components/timeline.vue:
|
mobile/views/components/timeline.vue:
|
||||||
empty: "Brak wpisów"
|
empty: "Brak wpisów"
|
||||||
load-more: "Więcej"
|
load-more: "Więcej"
|
||||||
|
mobile/views/components/ui.header.vue:
|
||||||
|
welcome-back: "Witaj ponownie, "
|
||||||
|
adjective: "さん"
|
||||||
mobile/views/components/ui.nav.vue:
|
mobile/views/components/ui.nav.vue:
|
||||||
timeline: "Oś czasu"
|
timeline: "Oś czasu"
|
||||||
notifications: "Powiadomienia"
|
notifications: "Powiadomienia"
|
||||||
@@ -813,6 +1067,7 @@ mobile/views/components/ui.nav.vue:
|
|||||||
game: "Gry"
|
game: "Gry"
|
||||||
darkmode: "Tryb ciemny"
|
darkmode: "Tryb ciemny"
|
||||||
settings: "Ustawienia"
|
settings: "Ustawienia"
|
||||||
|
admin: "管理"
|
||||||
about: "O Misskey"
|
about: "O Misskey"
|
||||||
mobile/views/components/user-timeline.vue:
|
mobile/views/components/user-timeline.vue:
|
||||||
no-notes: "Wygląda na to, że ten użytkownik nie opublikował jeszcze niczego"
|
no-notes: "Wygląda na to, że ten użytkownik nie opublikował jeszcze niczego"
|
||||||
@@ -830,6 +1085,8 @@ mobile/views/pages/user-lists.vue:
|
|||||||
mobile/views/pages/drive.vue:
|
mobile/views/pages/drive.vue:
|
||||||
drive: "Dysk"
|
drive: "Dysk"
|
||||||
more: "Załaduj więcej"
|
more: "Załaduj więcej"
|
||||||
|
mobile/views/pages/signup.vue:
|
||||||
|
lets-start: "Rozpocznijmy! 📦"
|
||||||
mobile/views/pages/followers.vue:
|
mobile/views/pages/followers.vue:
|
||||||
followers-of: "Śledzący {}"
|
followers-of: "Śledzący {}"
|
||||||
mobile/views/pages/following.vue:
|
mobile/views/pages/following.vue:
|
||||||
@@ -839,6 +1096,19 @@ mobile/views/pages/home.vue:
|
|||||||
local: "Lokalne"
|
local: "Lokalne"
|
||||||
hybrid: "Społeczność"
|
hybrid: "Społeczność"
|
||||||
global: "Globalne"
|
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:
|
mobile/views/pages/messaging.vue:
|
||||||
messaging: "Wiadomości"
|
messaging: "Wiadomości"
|
||||||
mobile/views/pages/messaging-room.vue:
|
mobile/views/pages/messaging-room.vue:
|
||||||
@@ -854,6 +1124,8 @@ mobile/views/pages/note.vue:
|
|||||||
mobile/views/pages/notifications.vue:
|
mobile/views/pages/notifications.vue:
|
||||||
notifications: "Powiadomienia"
|
notifications: "Powiadomienia"
|
||||||
read-all: "Czy na pewno chcesz oznaczyć wszystkie powiadomienia jako przeczytane?"
|
read-all: "Czy na pewno chcesz oznaczyć wszystkie powiadomienia jako przeczytane?"
|
||||||
|
mobile/views/pages/games/reversi.vue:
|
||||||
|
reversi: "Reversi"
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
mobile/views/pages/settings/settings.profile.vue:
|
||||||
title: "Profil"
|
title: "Profil"
|
||||||
name: "Nazwa"
|
name: "Nazwa"
|
||||||
@@ -871,6 +1143,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
search: "Szukaj"
|
search: "Szukaj"
|
||||||
empty: "Nie znaleziono wpisów zawierających '{}'"
|
empty: "Nie znaleziono wpisów zawierających '{}'"
|
||||||
|
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
mobile/views/pages/selectdrive.vue:
|
mobile/views/pages/selectdrive.vue:
|
||||||
select-file: "Wybierz plik"
|
select-file: "Wybierz plik"
|
||||||
mobile/views/pages/settings.vue:
|
mobile/views/pages/settings.vue:
|
||||||
@@ -884,13 +1157,18 @@ mobile/views/pages/settings.vue:
|
|||||||
dark-mode: "Tryb ciemny"
|
dark-mode: "Tryb ciemny"
|
||||||
i-am-under-limited-internet: "Ograniczaj zużycie transferu"
|
i-am-under-limited-internet: "Ograniczaj zużycie transferu"
|
||||||
circle-icons: "Używaj okrągłych ikon"
|
circle-icons: "Używaj okrągłych ikon"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
timeline: "Oś czasu"
|
timeline: "Oś czasu"
|
||||||
show-reply-target: "Pokazuj cel odpowiedzi"
|
show-reply-target: "Pokazuj cel odpowiedzi"
|
||||||
show-my-renotes: "Pokazuj moje udostępnienia"
|
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: "Styl wpisów"
|
||||||
post-style-standard: "Standardowy"
|
post-style-standard: "Standardowy"
|
||||||
post-style-smart: "Inteligentny"
|
post-style-smart: "Inteligentny"
|
||||||
|
notification-position: "通知の表示"
|
||||||
|
notification-position-bottom: "下"
|
||||||
|
notification-position-top: "上"
|
||||||
behavior: "Zachowanie"
|
behavior: "Zachowanie"
|
||||||
fetch-on-scroll: "Automatycznie ładuj po przeciągnięciu w dół"
|
fetch-on-scroll: "Automatycznie ładuj po przeciągnięciu w dół"
|
||||||
disable-via-mobile: "Nie oznaczaj wpisów jako „wysłane z telefonu”"
|
disable-via-mobile: "Nie oznaczaj wpisów jako „wysłane z telefonu”"
|
||||||
@@ -911,6 +1189,8 @@ mobile/views/pages/settings.vue:
|
|||||||
update-available-desc: "Odśwież stronę, aby zastosować aktualizację."
|
update-available-desc: "Odśwież stronę, aby zastosować aktualizację."
|
||||||
settings: "Ustawienia"
|
settings: "Ustawienia"
|
||||||
signout: "Wyloguj"
|
signout: "Wyloguj"
|
||||||
|
sound: "サウンド"
|
||||||
|
enable-sounds: "サウンドを有効にする"
|
||||||
mobile/views/pages/user.vue:
|
mobile/views/pages/user.vue:
|
||||||
follows-you: "Śledzi Cię"
|
follows-you: "Śledzi Cię"
|
||||||
following: "Śledzeni"
|
following: "Śledzeni"
|
||||||
@@ -965,3 +1245,5 @@ docs:
|
|||||||
name: "Nazwa"
|
name: "Nazwa"
|
||||||
type: "Rodzaj"
|
type: "Rodzaj"
|
||||||
description: "Opis"
|
description: "Opis"
|
||||||
|
dev/views/index.vue:
|
||||||
|
manage-apps: "Zarządzaj aplikacjami"
|
||||||
1249
locales/pt-PT.yml
Normal file
1249
locales/pt-PT.yml
Normal file
File diff suppressed because it is too large
Load Diff
@@ -6,6 +6,28 @@ common:
|
|||||||
misskey: "A ⭐ of fediverse"
|
misskey: "A ⭐ of fediverse"
|
||||||
about-title: "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>右</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:
|
time:
|
||||||
unknown: "なぞのじかん"
|
unknown: "なぞのじかん"
|
||||||
future: "未来"
|
future: "未来"
|
||||||
@@ -17,6 +39,8 @@ common:
|
|||||||
weeks_ago: "{}週間前"
|
weeks_ago: "{}週間前"
|
||||||
months_ago: "{}ヶ月前"
|
months_ago: "{}ヶ月前"
|
||||||
years_ago: "{}年前"
|
years_ago: "{}年前"
|
||||||
|
month-and-day: "{month}月 {day}日"
|
||||||
|
trash: "ゴミ箱"
|
||||||
weekday-short:
|
weekday-short:
|
||||||
sunday: "日"
|
sunday: "日"
|
||||||
monday: "月"
|
monday: "月"
|
||||||
@@ -25,6 +49,14 @@ common:
|
|||||||
thursday: "木"
|
thursday: "木"
|
||||||
friday: "金"
|
friday: "金"
|
||||||
saturday: "土"
|
saturday: "土"
|
||||||
|
weekday:
|
||||||
|
sunday: "日曜日"
|
||||||
|
monday: "月曜日"
|
||||||
|
tuesday: "火曜日"
|
||||||
|
wednesday: "水曜日"
|
||||||
|
thursday: "木曜日"
|
||||||
|
friday: "金曜日"
|
||||||
|
saturday: "土曜日"
|
||||||
reactions:
|
reactions:
|
||||||
like: "いいね"
|
like: "いいね"
|
||||||
love: "しゅき"
|
love: "しゅき"
|
||||||
@@ -34,6 +66,7 @@ common:
|
|||||||
congrats: "おめでとう"
|
congrats: "おめでとう"
|
||||||
angry: "おこ"
|
angry: "おこ"
|
||||||
confused: "こまこまのこまり"
|
confused: "こまこまのこまり"
|
||||||
|
rip: "RIP"
|
||||||
pudding: "Pudding"
|
pudding: "Pudding"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "今どうしてる?"
|
a: "今どうしてる?"
|
||||||
@@ -51,13 +84,21 @@ common:
|
|||||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
||||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||||
verified-user: "認証済みのユーザー"
|
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
||||||
|
verified-user: "公式アカウント"
|
||||||
|
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||||
|
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "引き分け"
|
drawn: "引き分け"
|
||||||
my-turn: "あなたのターンです"
|
my-turn: "あなたのターンです"
|
||||||
opponent-turn: "相手のターンです"
|
opponent-turn: "相手のターンです"
|
||||||
turn-of: "{}のターンです"
|
turn-of: "{}のターンです"
|
||||||
past-turn-of: "{}のターン"
|
past-turn-of: "{}のターン"
|
||||||
|
won: "{}の勝ち"
|
||||||
|
black: "黒"
|
||||||
|
white: "白"
|
||||||
|
total: "合計"
|
||||||
|
this-turn: "{}ターン目"
|
||||||
widgets:
|
widgets:
|
||||||
analog-clock: "アナログ時計"
|
analog-clock: "アナログ時計"
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
@@ -99,6 +140,73 @@ common:
|
|||||||
rename: "名前を変更"
|
rename: "名前を変更"
|
||||||
stack-left: "左に重ねる"
|
stack-left: "左に重ねる"
|
||||||
pop-right: "右に出す"
|
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:
|
common/views/components/connect-failed.vue:
|
||||||
title: "サーバーに接続できません"
|
title: "サーバーに接続できません"
|
||||||
description: "インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから{再度お試し}ください。"
|
description: "インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから{再度お試し}ください。"
|
||||||
@@ -133,11 +241,13 @@ common/views/components/messaging-room.vue:
|
|||||||
no-history: "これより過去の履歴はありません"
|
no-history: "これより過去の履歴はありません"
|
||||||
resize-form: "ドラッグしてフォームの広さを調整"
|
resize-form: "ドラッグしてフォームの広さを調整"
|
||||||
new-message: "新しいメッセージがあります"
|
new-message: "新しいメッセージがあります"
|
||||||
|
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||||
common/views/components/messaging-room.form.vue:
|
common/views/components/messaging-room.form.vue:
|
||||||
input-message-here: "ここにメッセージを入力"
|
input-message-here: "ここにメッセージを入力"
|
||||||
send: "送信"
|
send: "送信"
|
||||||
attach-from-local: "PCからファイルを添付する"
|
attach-from-local: "PCからファイルを添付する"
|
||||||
attach-from-drive: "ドライブからファイルを添付する"
|
attach-from-drive: "ドライブからファイルを添付する"
|
||||||
|
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||||
common/views/components/messaging-room.message.vue:
|
common/views/components/messaging-room.message.vue:
|
||||||
is-read: "既読"
|
is-read: "既読"
|
||||||
deleted: "このメッセージは削除されました"
|
deleted: "このメッセージは削除されました"
|
||||||
@@ -151,6 +261,8 @@ common/views/components/nav.vue:
|
|||||||
develop: "開発者"
|
develop: "開発者"
|
||||||
feedback: "フィードバック"
|
feedback: "フィードバック"
|
||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
|
detail: "詳細"
|
||||||
|
copy-link: "リンクをコピー"
|
||||||
favorite: "お気に入り"
|
favorite: "お気に入り"
|
||||||
pin: "ピン留め"
|
pin: "ピン留め"
|
||||||
delete: "削除"
|
delete: "削除"
|
||||||
@@ -177,7 +289,12 @@ common/views/components/signin.vue:
|
|||||||
token: "トークン"
|
token: "トークン"
|
||||||
signing-in: "やってます..."
|
signing-in: "やってます..."
|
||||||
signin: "サインイン"
|
signin: "サインイン"
|
||||||
|
or: "または"
|
||||||
|
signin-with-twitter: "Twitterでログイン"
|
||||||
|
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
|
invitation-code: "招待コード"
|
||||||
|
invitation-info: "招待コードをお持ちでない方は、<a href=\"{}\">管理者</a>までご連絡ください。"
|
||||||
username: "ユーザー名"
|
username: "ユーザー名"
|
||||||
checking: "確認しています..."
|
checking: "確認しています..."
|
||||||
available: "利用できます"
|
available: "利用できます"
|
||||||
@@ -223,11 +340,21 @@ common/views/components/visibility-chooser.vue:
|
|||||||
specified: "ダイレクト"
|
specified: "ダイレクト"
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
private: "非公開"
|
private: "非公開"
|
||||||
|
common/views/components/trends.vue:
|
||||||
|
count: "{}人が投稿"
|
||||||
|
empty: "トレンドなし"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "確認中"
|
fetching: "確認中"
|
||||||
no-broadcasts: "お知らせはありません"
|
no-broadcasts: "お知らせはありません"
|
||||||
have-a-nice-day: "良い一日を!"
|
have-a-nice-day: "良い一日を!"
|
||||||
next: "次"
|
next: "次"
|
||||||
|
common/views/widgets/calendar.vue:
|
||||||
|
year: "{}年"
|
||||||
|
month: "{}月"
|
||||||
|
day: "{}日"
|
||||||
|
today: "今日:"
|
||||||
|
this-month: "今月:"
|
||||||
|
this-year: "今年:"
|
||||||
common/views/widgets/donation.vue:
|
common/views/widgets/donation.vue:
|
||||||
title: "寄付のお願い"
|
title: "寄付のお願い"
|
||||||
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
||||||
@@ -239,8 +366,6 @@ common/views/widgets/posts-monitor.vue:
|
|||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
common/views/widgets/hashtags.vue:
|
common/views/widgets/hashtags.vue:
|
||||||
title: "ハッシュタグ"
|
title: "ハッシュタグ"
|
||||||
count: "{}人が投稿"
|
|
||||||
empty: "トレンドなし"
|
|
||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "サーバー情報"
|
title: "サーバー情報"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
@@ -248,12 +373,49 @@ common/views/widgets/memo.vue:
|
|||||||
title: "付箋"
|
title: "付箋"
|
||||||
memo: "ここに書いて!"
|
memo: "ここに書いて!"
|
||||||
save: "保存"
|
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:
|
common/views/pages/follow.vue:
|
||||||
signed-in-as: "{}としてサインイン中"
|
signed-in-as: "{}としてサインイン中"
|
||||||
following: "フォロー中"
|
following: "フォロー中"
|
||||||
follow: "フォロー"
|
follow: "フォロー"
|
||||||
request-pending: "フォロー許可待ち"
|
request-pending: "フォロー許可待ち"
|
||||||
follow-request: "フォロー申請"
|
follow-request: "フォロー申請"
|
||||||
|
desktop:
|
||||||
|
banner-crop-title: "バナーとして表示する部分を選択"
|
||||||
|
banner: "バナー"
|
||||||
|
uploading-banner: "新しいバナーをアップロードしています"
|
||||||
|
banner-updated: "バナーを更新しました"
|
||||||
|
choose-banner: "バナーにする画像を選択"
|
||||||
|
avatar-crop-title: "アバターとして表示する部分を選択"
|
||||||
|
avatar: "アバター"
|
||||||
|
uploading-avatar: "新しいアバターをアップロードしています"
|
||||||
|
avatar-updated: "アバターを更新しました"
|
||||||
|
choose-avatar: "アバターにする画像を選択"
|
||||||
|
invalid-filetype: "この形式のファイルはサポートされていません"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
@@ -267,6 +429,24 @@ desktop/views/components/calendar.vue:
|
|||||||
prev: "前の月"
|
prev: "前の月"
|
||||||
next: "次の月"
|
next: "次の月"
|
||||||
go: "クリックして時間遡行"
|
go: "クリックして時間遡行"
|
||||||
|
desktop/views/components/charts.vue:
|
||||||
|
title: "チャート"
|
||||||
|
per-day: "1日ごと"
|
||||||
|
per-hour: "1時間ごと"
|
||||||
|
notes: "投稿"
|
||||||
|
users: "ユーザー"
|
||||||
|
drive: "ドライブ"
|
||||||
|
charts:
|
||||||
|
notes: "投稿の増減 (統合)"
|
||||||
|
local-notes: "投稿の増減 (ローカル)"
|
||||||
|
remote-notes: "投稿の増減 (リモート)"
|
||||||
|
notes-total: "投稿の累計"
|
||||||
|
users: "ユーザーの増減"
|
||||||
|
users-total: "ユーザーの累計"
|
||||||
|
drive: "ドライブ使用量の増減"
|
||||||
|
drive-total: "ドライブ使用量の累計"
|
||||||
|
drive-files: "ドライブのファイル数の増減"
|
||||||
|
drive-files-total: "ドライブのファイル数の累計"
|
||||||
desktop/views/components/choose-file-from-drive-window.vue:
|
desktop/views/components/choose-file-from-drive-window.vue:
|
||||||
choose-file: "ファイル選択中"
|
choose-file: "ファイル選択中"
|
||||||
upload: "PCからドライブにファイルをアップロード"
|
upload: "PCからドライブにファイルをアップロード"
|
||||||
@@ -287,6 +467,7 @@ desktop/views/components/drive-window.vue:
|
|||||||
desktop/views/components/drive.file.vue:
|
desktop/views/components/drive.file.vue:
|
||||||
avatar: "アイコン"
|
avatar: "アイコン"
|
||||||
banner: "バナー"
|
banner: "バナー"
|
||||||
|
nsfw: "閲覧注意"
|
||||||
contextmenu:
|
contextmenu:
|
||||||
rename: "名前を変更"
|
rename: "名前を変更"
|
||||||
mark-as-sensitive: "閲覧注意に設定"
|
mark-as-sensitive: "閲覧注意に設定"
|
||||||
@@ -388,6 +569,8 @@ desktop/views/components/notes.note.vue:
|
|||||||
detail: "詳細"
|
detail: "詳細"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
|
hide: "隠す"
|
||||||
|
see-more: "もっと見る"
|
||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "読み込みに失敗しました。"
|
error: "読み込みに失敗しました。"
|
||||||
retry: "リトライ"
|
retry: "リトライ"
|
||||||
@@ -396,6 +579,9 @@ desktop/views/components/notifications.vue:
|
|||||||
more: "もっと見る"
|
more: "もっと見る"
|
||||||
empty: "ありません!"
|
empty: "ありません!"
|
||||||
desktop/views/components/post-form.vue:
|
desktop/views/components/post-form.vue:
|
||||||
|
add-visible-user: "+ユーザーを追加"
|
||||||
|
attach-location-information: "位置情報を添付する"
|
||||||
|
hide-contents: "内容を隠す"
|
||||||
reply-placeholder: "この投稿への返信..."
|
reply-placeholder: "この投稿への返信..."
|
||||||
quote-placeholder: "この投稿を引用..."
|
quote-placeholder: "この投稿を引用..."
|
||||||
submit: "投稿"
|
submit: "投稿"
|
||||||
@@ -416,6 +602,11 @@ desktop/views/components/post-form.vue:
|
|||||||
text-remain: "残り{}文字"
|
text-remain: "残り{}文字"
|
||||||
recent-tags: "最近"
|
recent-tags: "最近"
|
||||||
click-to-tagging: "クリックでタグ付け"
|
click-to-tagging: "クリックでタグ付け"
|
||||||
|
visibility: "公開範囲"
|
||||||
|
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||||
|
error: "エラー"
|
||||||
|
enter-username: "ユーザー名を入力してください"
|
||||||
|
annotations: "内容への注釈 (オプション)"
|
||||||
desktop/views/components/post-form-window.vue:
|
desktop/views/components/post-form-window.vue:
|
||||||
note: "新規投稿"
|
note: "新規投稿"
|
||||||
reply: "返信"
|
reply: "返信"
|
||||||
@@ -460,11 +651,15 @@ desktop/views/components/settings.vue:
|
|||||||
delete-wallpaper: "壁紙を削除"
|
delete-wallpaper: "壁紙を削除"
|
||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||||
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿をタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "マップの自動展開"
|
show-maps: "マップの自動展開"
|
||||||
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
||||||
sound: "サウンド"
|
sound: "サウンド"
|
||||||
@@ -536,6 +731,9 @@ desktop/views/components/settings.api.vue:
|
|||||||
enter-password: "パスワードを入力してください"
|
enter-password: "パスワードを入力してください"
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "連携しているアプリケーションはありません"
|
no-apps: "連携しているアプリケーションはありません"
|
||||||
|
desktop/views/components/settings.drive.vue:
|
||||||
|
max: "中"
|
||||||
|
in-use: "使用中"
|
||||||
desktop/views/components/settings.mute.vue:
|
desktop/views/components/settings.mute.vue:
|
||||||
no-users: "ミュートしているユーザーはいません"
|
no-users: "ミュートしているユーザーはいません"
|
||||||
desktop/views/components/settings.password.vue:
|
desktop/views/components/settings.password.vue:
|
||||||
@@ -558,6 +756,7 @@ desktop/views/components/settings.profile.vue:
|
|||||||
other: "その他"
|
other: "その他"
|
||||||
is-bot: "このアカウントはBotです"
|
is-bot: "このアカウントはBotです"
|
||||||
is-cat: "このアカウントはCatです"
|
is-cat: "このアカウントはCatです"
|
||||||
|
profile-updated: "プロフィールを更新しました"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
@@ -573,6 +772,7 @@ desktop/views/components/timeline.vue:
|
|||||||
list: "リスト"
|
list: "リスト"
|
||||||
desktop/views/components/ui.header.vue:
|
desktop/views/components/ui.header.vue:
|
||||||
welcome-back: "おかえりなさい、"
|
welcome-back: "おかえりなさい、"
|
||||||
|
adjective: "さん"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
drive: "ドライブ"
|
drive: "ドライブ"
|
||||||
@@ -580,6 +780,7 @@ desktop/views/components/ui.header.account.vue:
|
|||||||
lists: "リスト"
|
lists: "リスト"
|
||||||
follow-requests: "フォロー申請"
|
follow-requests: "フォロー申請"
|
||||||
customize: "ホームのカスタマイズ"
|
customize: "ホームのカスタマイズ"
|
||||||
|
admin: "管理"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
dark: "闇に飲まれる"
|
dark: "闇に飲まれる"
|
||||||
@@ -601,6 +802,7 @@ desktop/views/components/received-follow-requests-window.vue:
|
|||||||
desktop/views/components/user-lists-window.vue:
|
desktop/views/components/user-lists-window.vue:
|
||||||
title: "リスト"
|
title: "リスト"
|
||||||
create-list: "リストを作成"
|
create-list: "リストを作成"
|
||||||
|
list-name: "リスト名"
|
||||||
desktop/views/components/user-preview.vue:
|
desktop/views/components/user-preview.vue:
|
||||||
notes: "投稿"
|
notes: "投稿"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@@ -615,6 +817,34 @@ desktop/views/components/users-list-item.vue:
|
|||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
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.unverify-user.vue:
|
||||||
|
unverify-user: "ユーザーの公式アカウント解除"
|
||||||
|
unverify: "公式アカウントを解除する"
|
||||||
|
unverified: "公式アカウントを解除しました"
|
||||||
desktop/views/pages/deck/deck.tl-column.vue:
|
desktop/views/pages/deck/deck.tl-column.vue:
|
||||||
is-media-only: "メディア投稿のみ"
|
is-media-only: "メディア投稿のみ"
|
||||||
is-media-view: "メディアビュー"
|
is-media-view: "メディアビュー"
|
||||||
@@ -623,6 +853,11 @@ desktop/views/pages/deck/deck.note.vue:
|
|||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
|
desktop/views/pages/stats/stats.vue:
|
||||||
|
all-users: "全てのユーザー"
|
||||||
|
original-users: "このインスタンスのユーザー"
|
||||||
|
all-notes: "全ての投稿"
|
||||||
|
original-notes: "このインスタンスの投稿"
|
||||||
desktop/views/pages/welcome.vue:
|
desktop/views/pages/welcome.vue:
|
||||||
about: "詳しく..."
|
about: "詳しく..."
|
||||||
gotit: "わかった"
|
gotit: "わかった"
|
||||||
@@ -631,6 +866,10 @@ desktop/views/pages/welcome.vue:
|
|||||||
signin-button: "やってる"
|
signin-button: "やってる"
|
||||||
signup-button: "やる"
|
signup-button: "やる"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
|
announcements: "お知らせ"
|
||||||
|
photos: "最近の画像"
|
||||||
|
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||||
|
info: "情報"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
@@ -645,6 +884,13 @@ desktop/views/pages/selectdrive.vue:
|
|||||||
ok: "決定"
|
ok: "決定"
|
||||||
cancel: "キャンセル"
|
cancel: "キャンセル"
|
||||||
upload: "PCからドライブにファイルをアップロード"
|
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:
|
desktop/views/pages/user-list.users.vue:
|
||||||
users: "ユーザー"
|
users: "ユーザー"
|
||||||
add-user: "ユーザーを追加"
|
add-user: "ユーザーを追加"
|
||||||
@@ -675,6 +921,8 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "ミュートする"
|
mute: "ミュートする"
|
||||||
muted: "ミュートしています"
|
muted: "ミュートしています"
|
||||||
unmute: "ミュート解除"
|
unmute: "ミュート解除"
|
||||||
|
push-to-a-list: "リストに追加"
|
||||||
|
list-pushed: "{user}を{list}に追加しました。"
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.header.vue:
|
||||||
posts: "投稿"
|
posts: "投稿"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@@ -730,12 +978,15 @@ mobile/views/components/drive-file-chooser.vue:
|
|||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
mobile/views/components/drive-folder-chooser.vue:
|
mobile/views/components/drive-folder-chooser.vue:
|
||||||
select-folder: "フォルダーを選択"
|
select-folder: "フォルダーを選択"
|
||||||
|
mobile/views/components/drive.file.vue:
|
||||||
|
nsfw: "閲覧注意"
|
||||||
mobile/views/components/drive.file-detail.vue:
|
mobile/views/components/drive.file-detail.vue:
|
||||||
download: "ダウンロード"
|
download: "ダウンロード"
|
||||||
rename: "名前を変更"
|
rename: "名前を変更"
|
||||||
move: "移動"
|
move: "移動"
|
||||||
hash: "ハッシュ (md5)"
|
hash: "ハッシュ (md5)"
|
||||||
exif: "EXIF"
|
exif: "EXIF"
|
||||||
|
nsfw: "閲覧注意"
|
||||||
mobile/views/components/media-image.vue:
|
mobile/views/components/media-image.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
@@ -800,6 +1051,9 @@ mobile/views/components/sub-note-content.vue:
|
|||||||
mobile/views/components/timeline.vue:
|
mobile/views/components/timeline.vue:
|
||||||
empty: "投稿がありません"
|
empty: "投稿がありません"
|
||||||
load-more: "もっと"
|
load-more: "もっと"
|
||||||
|
mobile/views/components/ui.header.vue:
|
||||||
|
welcome-back: "おかえりなさい、"
|
||||||
|
adjective: "さん"
|
||||||
mobile/views/components/ui.nav.vue:
|
mobile/views/components/ui.nav.vue:
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
@@ -813,6 +1067,7 @@ mobile/views/components/ui.nav.vue:
|
|||||||
game: "ゲーム"
|
game: "ゲーム"
|
||||||
darkmode: "ダークモード"
|
darkmode: "ダークモード"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
|
admin: "管理"
|
||||||
about: "Misskeyについて"
|
about: "Misskeyについて"
|
||||||
mobile/views/components/user-timeline.vue:
|
mobile/views/components/user-timeline.vue:
|
||||||
no-notes: "このユーザーは投稿していないようです。"
|
no-notes: "このユーザーは投稿していないようです。"
|
||||||
@@ -830,6 +1085,8 @@ mobile/views/pages/user-lists.vue:
|
|||||||
mobile/views/pages/drive.vue:
|
mobile/views/pages/drive.vue:
|
||||||
drive: "ドライブ"
|
drive: "ドライブ"
|
||||||
more: "もっと見る"
|
more: "もっと見る"
|
||||||
|
mobile/views/pages/signup.vue:
|
||||||
|
lets-start: "📦 始めましょう"
|
||||||
mobile/views/pages/followers.vue:
|
mobile/views/pages/followers.vue:
|
||||||
followers-of: "{}のフォロワー"
|
followers-of: "{}のフォロワー"
|
||||||
mobile/views/pages/following.vue:
|
mobile/views/pages/following.vue:
|
||||||
@@ -839,6 +1096,19 @@ mobile/views/pages/home.vue:
|
|||||||
local: "ローカル"
|
local: "ローカル"
|
||||||
hybrid: "ソーシャル"
|
hybrid: "ソーシャル"
|
||||||
global: "グローバル"
|
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:
|
mobile/views/pages/messaging.vue:
|
||||||
messaging: "メッセージ"
|
messaging: "メッセージ"
|
||||||
mobile/views/pages/messaging-room.vue:
|
mobile/views/pages/messaging-room.vue:
|
||||||
@@ -854,6 +1124,8 @@ mobile/views/pages/note.vue:
|
|||||||
mobile/views/pages/notifications.vue:
|
mobile/views/pages/notifications.vue:
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
read-all: "すべての通知を既読にしますか?"
|
read-all: "すべての通知を既読にしますか?"
|
||||||
|
mobile/views/pages/games/reversi.vue:
|
||||||
|
reversi: "リバーシ"
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
mobile/views/pages/settings/settings.profile.vue:
|
||||||
title: "プロフィール"
|
title: "プロフィール"
|
||||||
name: "名前"
|
name: "名前"
|
||||||
@@ -871,6 +1143,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
search: "検索"
|
search: "検索"
|
||||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
|
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
mobile/views/pages/selectdrive.vue:
|
mobile/views/pages/selectdrive.vue:
|
||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
mobile/views/pages/settings.vue:
|
mobile/views/pages/settings.vue:
|
||||||
@@ -884,13 +1157,18 @@ mobile/views/pages/settings.vue:
|
|||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
i-am-under-limited-internet: "私は通信を制限されている"
|
i-am-under-limited-internet: "私は通信を制限されている"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteを表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteを表示する"
|
||||||
post-style: "投稿の表示スタイル"
|
post-style: "投稿の表示スタイル"
|
||||||
post-style-standard: "標準"
|
post-style-standard: "標準"
|
||||||
post-style-smart: "スマート"
|
post-style-smart: "スマート"
|
||||||
|
notification-position: "通知の表示"
|
||||||
|
notification-position-bottom: "下"
|
||||||
|
notification-position-top: "上"
|
||||||
behavior: "動作"
|
behavior: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
@@ -911,6 +1189,8 @@ mobile/views/pages/settings.vue:
|
|||||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
|
sound: "サウンド"
|
||||||
|
enable-sounds: "サウンドを有効にする"
|
||||||
mobile/views/pages/user.vue:
|
mobile/views/pages/user.vue:
|
||||||
follows-you: "フォローされています"
|
follows-you: "フォローされています"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@@ -965,3 +1245,5 @@ docs:
|
|||||||
name: "名前"
|
name: "名前"
|
||||||
type: "型"
|
type: "型"
|
||||||
description: "説明"
|
description: "説明"
|
||||||
|
dev/views/index.vue:
|
||||||
|
manage-apps: "アプリの管理"
|
||||||
@@ -6,6 +6,28 @@ common:
|
|||||||
misskey: "A ⭐ of fediverse"
|
misskey: "A ⭐ of fediverse"
|
||||||
about-title: "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>右</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:
|
time:
|
||||||
unknown: "なぞのじかん"
|
unknown: "なぞのじかん"
|
||||||
future: "未来"
|
future: "未来"
|
||||||
@@ -17,6 +39,8 @@ common:
|
|||||||
weeks_ago: "{}週間前"
|
weeks_ago: "{}週間前"
|
||||||
months_ago: "{}ヶ月前"
|
months_ago: "{}ヶ月前"
|
||||||
years_ago: "{}年前"
|
years_ago: "{}年前"
|
||||||
|
month-and-day: "{month}月 {day}日"
|
||||||
|
trash: "ゴミ箱"
|
||||||
weekday-short:
|
weekday-short:
|
||||||
sunday: "日"
|
sunday: "日"
|
||||||
monday: "月"
|
monday: "月"
|
||||||
@@ -25,6 +49,14 @@ common:
|
|||||||
thursday: "木"
|
thursday: "木"
|
||||||
friday: "金"
|
friday: "金"
|
||||||
saturday: "土"
|
saturday: "土"
|
||||||
|
weekday:
|
||||||
|
sunday: "日曜日"
|
||||||
|
monday: "月曜日"
|
||||||
|
tuesday: "火曜日"
|
||||||
|
wednesday: "水曜日"
|
||||||
|
thursday: "木曜日"
|
||||||
|
friday: "金曜日"
|
||||||
|
saturday: "土曜日"
|
||||||
reactions:
|
reactions:
|
||||||
like: "いいね"
|
like: "いいね"
|
||||||
love: "しゅき"
|
love: "しゅき"
|
||||||
@@ -34,6 +66,7 @@ common:
|
|||||||
congrats: "おめでとう"
|
congrats: "おめでとう"
|
||||||
angry: "おこ"
|
angry: "おこ"
|
||||||
confused: "こまこまのこまり"
|
confused: "こまこまのこまり"
|
||||||
|
rip: "RIP"
|
||||||
pudding: "Pudding"
|
pudding: "Pudding"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "今どうしてる?"
|
a: "今どうしてる?"
|
||||||
@@ -51,13 +84,21 @@ common:
|
|||||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
||||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||||
verified-user: "認証済みのユーザー"
|
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
||||||
|
verified-user: "公式アカウント"
|
||||||
|
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||||
|
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "引き分け"
|
drawn: "引き分け"
|
||||||
my-turn: "あなたのターンです"
|
my-turn: "あなたのターンです"
|
||||||
opponent-turn: "相手のターンです"
|
opponent-turn: "相手のターンです"
|
||||||
turn-of: "{}のターンです"
|
turn-of: "{}のターンです"
|
||||||
past-turn-of: "{}のターン"
|
past-turn-of: "{}のターン"
|
||||||
|
won: "{}の勝ち"
|
||||||
|
black: "黒"
|
||||||
|
white: "白"
|
||||||
|
total: "合計"
|
||||||
|
this-turn: "{}ターン目"
|
||||||
widgets:
|
widgets:
|
||||||
analog-clock: "アナログ時計"
|
analog-clock: "アナログ時計"
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
@@ -99,6 +140,73 @@ common:
|
|||||||
rename: "名前を変更"
|
rename: "名前を変更"
|
||||||
stack-left: "左に重ねる"
|
stack-left: "左に重ねる"
|
||||||
pop-right: "右に出す"
|
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:
|
common/views/components/connect-failed.vue:
|
||||||
title: "サーバーに接続できません"
|
title: "サーバーに接続できません"
|
||||||
description: "インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから{再度お試し}ください。"
|
description: "インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから{再度お試し}ください。"
|
||||||
@@ -133,11 +241,13 @@ common/views/components/messaging-room.vue:
|
|||||||
no-history: "これより過去の履歴はありません"
|
no-history: "これより過去の履歴はありません"
|
||||||
resize-form: "ドラッグしてフォームの広さを調整"
|
resize-form: "ドラッグしてフォームの広さを調整"
|
||||||
new-message: "新しいメッセージがあります"
|
new-message: "新しいメッセージがあります"
|
||||||
|
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||||
common/views/components/messaging-room.form.vue:
|
common/views/components/messaging-room.form.vue:
|
||||||
input-message-here: "ここにメッセージを入力"
|
input-message-here: "ここにメッセージを入力"
|
||||||
send: "送信"
|
send: "送信"
|
||||||
attach-from-local: "PCからファイルを添付する"
|
attach-from-local: "PCからファイルを添付する"
|
||||||
attach-from-drive: "ドライブからファイルを添付する"
|
attach-from-drive: "ドライブからファイルを添付する"
|
||||||
|
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||||
common/views/components/messaging-room.message.vue:
|
common/views/components/messaging-room.message.vue:
|
||||||
is-read: "既読"
|
is-read: "既読"
|
||||||
deleted: "このメッセージは削除されました"
|
deleted: "このメッセージは削除されました"
|
||||||
@@ -151,6 +261,8 @@ common/views/components/nav.vue:
|
|||||||
develop: "開発者"
|
develop: "開発者"
|
||||||
feedback: "フィードバック"
|
feedback: "フィードバック"
|
||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
|
detail: "詳細"
|
||||||
|
copy-link: "リンクをコピー"
|
||||||
favorite: "お気に入り"
|
favorite: "お気に入り"
|
||||||
pin: "ピン留め"
|
pin: "ピン留め"
|
||||||
delete: "削除"
|
delete: "削除"
|
||||||
@@ -177,7 +289,12 @@ common/views/components/signin.vue:
|
|||||||
token: "トークン"
|
token: "トークン"
|
||||||
signing-in: "やってます..."
|
signing-in: "やってます..."
|
||||||
signin: "サインイン"
|
signin: "サインイン"
|
||||||
|
or: "または"
|
||||||
|
signin-with-twitter: "Twitterでログイン"
|
||||||
|
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
|
invitation-code: "招待コード"
|
||||||
|
invitation-info: "招待コードをお持ちでない方は、<a href=\"{}\">管理者</a>までご連絡ください。"
|
||||||
username: "ユーザー名"
|
username: "ユーザー名"
|
||||||
checking: "確認しています..."
|
checking: "確認しています..."
|
||||||
available: "利用できます"
|
available: "利用できます"
|
||||||
@@ -223,11 +340,21 @@ common/views/components/visibility-chooser.vue:
|
|||||||
specified: "ダイレクト"
|
specified: "ダイレクト"
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
private: "非公開"
|
private: "非公開"
|
||||||
|
common/views/components/trends.vue:
|
||||||
|
count: "{}人が投稿"
|
||||||
|
empty: "トレンドなし"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "確認中"
|
fetching: "確認中"
|
||||||
no-broadcasts: "お知らせはありません"
|
no-broadcasts: "お知らせはありません"
|
||||||
have-a-nice-day: "良い一日を!"
|
have-a-nice-day: "良い一日を!"
|
||||||
next: "次"
|
next: "次"
|
||||||
|
common/views/widgets/calendar.vue:
|
||||||
|
year: "{}年"
|
||||||
|
month: "{}月"
|
||||||
|
day: "{}日"
|
||||||
|
today: "今日:"
|
||||||
|
this-month: "今月:"
|
||||||
|
this-year: "今年:"
|
||||||
common/views/widgets/donation.vue:
|
common/views/widgets/donation.vue:
|
||||||
title: "寄付のお願い"
|
title: "寄付のお願い"
|
||||||
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
||||||
@@ -239,8 +366,6 @@ common/views/widgets/posts-monitor.vue:
|
|||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
common/views/widgets/hashtags.vue:
|
common/views/widgets/hashtags.vue:
|
||||||
title: "ハッシュタグ"
|
title: "ハッシュタグ"
|
||||||
count: "{}人が投稿"
|
|
||||||
empty: "トレンドなし"
|
|
||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "サーバー情報"
|
title: "サーバー情報"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
@@ -248,12 +373,49 @@ common/views/widgets/memo.vue:
|
|||||||
title: "付箋"
|
title: "付箋"
|
||||||
memo: "ここに書いて!"
|
memo: "ここに書いて!"
|
||||||
save: "保存"
|
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:
|
common/views/pages/follow.vue:
|
||||||
signed-in-as: "{}としてサインイン中"
|
signed-in-as: "{}としてサインイン中"
|
||||||
following: "フォロー中"
|
following: "フォロー中"
|
||||||
follow: "フォロー"
|
follow: "フォロー"
|
||||||
request-pending: "フォロー許可待ち"
|
request-pending: "フォロー許可待ち"
|
||||||
follow-request: "フォロー申請"
|
follow-request: "フォロー申請"
|
||||||
|
desktop:
|
||||||
|
banner-crop-title: "バナーとして表示する部分を選択"
|
||||||
|
banner: "バナー"
|
||||||
|
uploading-banner: "新しいバナーをアップロードしています"
|
||||||
|
banner-updated: "バナーを更新しました"
|
||||||
|
choose-banner: "バナーにする画像を選択"
|
||||||
|
avatar-crop-title: "アバターとして表示する部分を選択"
|
||||||
|
avatar: "アバター"
|
||||||
|
uploading-avatar: "新しいアバターをアップロードしています"
|
||||||
|
avatar-updated: "アバターを更新しました"
|
||||||
|
choose-avatar: "アバターにする画像を選択"
|
||||||
|
invalid-filetype: "この形式のファイルはサポートされていません"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
@@ -267,6 +429,24 @@ desktop/views/components/calendar.vue:
|
|||||||
prev: "前の月"
|
prev: "前の月"
|
||||||
next: "次の月"
|
next: "次の月"
|
||||||
go: "クリックして時間遡行"
|
go: "クリックして時間遡行"
|
||||||
|
desktop/views/components/charts.vue:
|
||||||
|
title: "チャート"
|
||||||
|
per-day: "1日ごと"
|
||||||
|
per-hour: "1時間ごと"
|
||||||
|
notes: "投稿"
|
||||||
|
users: "ユーザー"
|
||||||
|
drive: "ドライブ"
|
||||||
|
charts:
|
||||||
|
notes: "投稿の増減 (統合)"
|
||||||
|
local-notes: "投稿の増減 (ローカル)"
|
||||||
|
remote-notes: "投稿の増減 (リモート)"
|
||||||
|
notes-total: "投稿の累計"
|
||||||
|
users: "ユーザーの増減"
|
||||||
|
users-total: "ユーザーの累計"
|
||||||
|
drive: "ドライブ使用量の増減"
|
||||||
|
drive-total: "ドライブ使用量の累計"
|
||||||
|
drive-files: "ドライブのファイル数の増減"
|
||||||
|
drive-files-total: "ドライブのファイル数の累計"
|
||||||
desktop/views/components/choose-file-from-drive-window.vue:
|
desktop/views/components/choose-file-from-drive-window.vue:
|
||||||
choose-file: "ファイル選択中"
|
choose-file: "ファイル選択中"
|
||||||
upload: "PCからドライブにファイルをアップロード"
|
upload: "PCからドライブにファイルをアップロード"
|
||||||
@@ -287,6 +467,7 @@ desktop/views/components/drive-window.vue:
|
|||||||
desktop/views/components/drive.file.vue:
|
desktop/views/components/drive.file.vue:
|
||||||
avatar: "アイコン"
|
avatar: "アイコン"
|
||||||
banner: "バナー"
|
banner: "バナー"
|
||||||
|
nsfw: "閲覧注意"
|
||||||
contextmenu:
|
contextmenu:
|
||||||
rename: "名前を変更"
|
rename: "名前を変更"
|
||||||
mark-as-sensitive: "閲覧注意に設定"
|
mark-as-sensitive: "閲覧注意に設定"
|
||||||
@@ -388,6 +569,8 @@ desktop/views/components/notes.note.vue:
|
|||||||
detail: "詳細"
|
detail: "詳細"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
|
hide: "隠す"
|
||||||
|
see-more: "もっと見る"
|
||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "読み込みに失敗しました。"
|
error: "読み込みに失敗しました。"
|
||||||
retry: "リトライ"
|
retry: "リトライ"
|
||||||
@@ -396,6 +579,9 @@ desktop/views/components/notifications.vue:
|
|||||||
more: "もっと見る"
|
more: "もっと見る"
|
||||||
empty: "ありません!"
|
empty: "ありません!"
|
||||||
desktop/views/components/post-form.vue:
|
desktop/views/components/post-form.vue:
|
||||||
|
add-visible-user: "+ユーザーを追加"
|
||||||
|
attach-location-information: "位置情報を添付する"
|
||||||
|
hide-contents: "内容を隠す"
|
||||||
reply-placeholder: "この投稿への返信..."
|
reply-placeholder: "この投稿への返信..."
|
||||||
quote-placeholder: "この投稿を引用..."
|
quote-placeholder: "この投稿を引用..."
|
||||||
submit: "投稿"
|
submit: "投稿"
|
||||||
@@ -416,6 +602,11 @@ desktop/views/components/post-form.vue:
|
|||||||
text-remain: "残り{}文字"
|
text-remain: "残り{}文字"
|
||||||
recent-tags: "最近"
|
recent-tags: "最近"
|
||||||
click-to-tagging: "クリックでタグ付け"
|
click-to-tagging: "クリックでタグ付け"
|
||||||
|
visibility: "公開範囲"
|
||||||
|
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||||
|
error: "エラー"
|
||||||
|
enter-username: "ユーザー名を入力してください"
|
||||||
|
annotations: "内容への注釈 (オプション)"
|
||||||
desktop/views/components/post-form-window.vue:
|
desktop/views/components/post-form-window.vue:
|
||||||
note: "新規投稿"
|
note: "新規投稿"
|
||||||
reply: "返信"
|
reply: "返信"
|
||||||
@@ -460,11 +651,15 @@ desktop/views/components/settings.vue:
|
|||||||
delete-wallpaper: "壁紙を削除"
|
delete-wallpaper: "壁紙を削除"
|
||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||||
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿をタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "マップの自動展開"
|
show-maps: "マップの自動展開"
|
||||||
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
||||||
sound: "サウンド"
|
sound: "サウンド"
|
||||||
@@ -536,6 +731,9 @@ desktop/views/components/settings.api.vue:
|
|||||||
enter-password: "パスワードを入力してください"
|
enter-password: "パスワードを入力してください"
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "連携しているアプリケーションはありません"
|
no-apps: "連携しているアプリケーションはありません"
|
||||||
|
desktop/views/components/settings.drive.vue:
|
||||||
|
max: "中"
|
||||||
|
in-use: "使用中"
|
||||||
desktop/views/components/settings.mute.vue:
|
desktop/views/components/settings.mute.vue:
|
||||||
no-users: "ミュートしているユーザーはいません"
|
no-users: "ミュートしているユーザーはいません"
|
||||||
desktop/views/components/settings.password.vue:
|
desktop/views/components/settings.password.vue:
|
||||||
@@ -558,6 +756,7 @@ desktop/views/components/settings.profile.vue:
|
|||||||
other: "その他"
|
other: "その他"
|
||||||
is-bot: "このアカウントはBotです"
|
is-bot: "このアカウントはBotです"
|
||||||
is-cat: "このアカウントはCatです"
|
is-cat: "このアカウントはCatです"
|
||||||
|
profile-updated: "プロフィールを更新しました"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
@@ -573,6 +772,7 @@ desktop/views/components/timeline.vue:
|
|||||||
list: "リスト"
|
list: "リスト"
|
||||||
desktop/views/components/ui.header.vue:
|
desktop/views/components/ui.header.vue:
|
||||||
welcome-back: "おかえりなさい、"
|
welcome-back: "おかえりなさい、"
|
||||||
|
adjective: "さん"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
drive: "ドライブ"
|
drive: "ドライブ"
|
||||||
@@ -580,6 +780,7 @@ desktop/views/components/ui.header.account.vue:
|
|||||||
lists: "リスト"
|
lists: "リスト"
|
||||||
follow-requests: "フォロー申請"
|
follow-requests: "フォロー申請"
|
||||||
customize: "ホームのカスタマイズ"
|
customize: "ホームのカスタマイズ"
|
||||||
|
admin: "管理"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
dark: "闇に飲まれる"
|
dark: "闇に飲まれる"
|
||||||
@@ -601,6 +802,7 @@ desktop/views/components/received-follow-requests-window.vue:
|
|||||||
desktop/views/components/user-lists-window.vue:
|
desktop/views/components/user-lists-window.vue:
|
||||||
title: "リスト"
|
title: "リスト"
|
||||||
create-list: "リストを作成"
|
create-list: "リストを作成"
|
||||||
|
list-name: "リスト名"
|
||||||
desktop/views/components/user-preview.vue:
|
desktop/views/components/user-preview.vue:
|
||||||
notes: "投稿"
|
notes: "投稿"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@@ -615,6 +817,34 @@ desktop/views/components/users-list-item.vue:
|
|||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
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.unverify-user.vue:
|
||||||
|
unverify-user: "ユーザーの公式アカウント解除"
|
||||||
|
unverify: "公式アカウントを解除する"
|
||||||
|
unverified: "公式アカウントを解除しました"
|
||||||
desktop/views/pages/deck/deck.tl-column.vue:
|
desktop/views/pages/deck/deck.tl-column.vue:
|
||||||
is-media-only: "メディア投稿のみ"
|
is-media-only: "メディア投稿のみ"
|
||||||
is-media-view: "メディアビュー"
|
is-media-view: "メディアビュー"
|
||||||
@@ -623,6 +853,11 @@ desktop/views/pages/deck/deck.note.vue:
|
|||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
|
desktop/views/pages/stats/stats.vue:
|
||||||
|
all-users: "全てのユーザー"
|
||||||
|
original-users: "このインスタンスのユーザー"
|
||||||
|
all-notes: "全ての投稿"
|
||||||
|
original-notes: "このインスタンスの投稿"
|
||||||
desktop/views/pages/welcome.vue:
|
desktop/views/pages/welcome.vue:
|
||||||
about: "詳しく..."
|
about: "詳しく..."
|
||||||
gotit: "わかった"
|
gotit: "わかった"
|
||||||
@@ -631,6 +866,10 @@ desktop/views/pages/welcome.vue:
|
|||||||
signin-button: "やってる"
|
signin-button: "やってる"
|
||||||
signup-button: "やる"
|
signup-button: "やる"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
|
announcements: "お知らせ"
|
||||||
|
photos: "最近の画像"
|
||||||
|
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||||
|
info: "情報"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
@@ -645,6 +884,13 @@ desktop/views/pages/selectdrive.vue:
|
|||||||
ok: "決定"
|
ok: "決定"
|
||||||
cancel: "キャンセル"
|
cancel: "キャンセル"
|
||||||
upload: "PCからドライブにファイルをアップロード"
|
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:
|
desktop/views/pages/user-list.users.vue:
|
||||||
users: "ユーザー"
|
users: "ユーザー"
|
||||||
add-user: "ユーザーを追加"
|
add-user: "ユーザーを追加"
|
||||||
@@ -675,6 +921,8 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "ミュートする"
|
mute: "ミュートする"
|
||||||
muted: "ミュートしています"
|
muted: "ミュートしています"
|
||||||
unmute: "ミュート解除"
|
unmute: "ミュート解除"
|
||||||
|
push-to-a-list: "リストに追加"
|
||||||
|
list-pushed: "{user}を{list}に追加しました。"
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.header.vue:
|
||||||
posts: "投稿"
|
posts: "投稿"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@@ -730,12 +978,15 @@ mobile/views/components/drive-file-chooser.vue:
|
|||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
mobile/views/components/drive-folder-chooser.vue:
|
mobile/views/components/drive-folder-chooser.vue:
|
||||||
select-folder: "フォルダーを選択"
|
select-folder: "フォルダーを選択"
|
||||||
|
mobile/views/components/drive.file.vue:
|
||||||
|
nsfw: "閲覧注意"
|
||||||
mobile/views/components/drive.file-detail.vue:
|
mobile/views/components/drive.file-detail.vue:
|
||||||
download: "ダウンロード"
|
download: "ダウンロード"
|
||||||
rename: "名前を変更"
|
rename: "名前を変更"
|
||||||
move: "移動"
|
move: "移動"
|
||||||
hash: "ハッシュ (md5)"
|
hash: "ハッシュ (md5)"
|
||||||
exif: "EXIF"
|
exif: "EXIF"
|
||||||
|
nsfw: "閲覧注意"
|
||||||
mobile/views/components/media-image.vue:
|
mobile/views/components/media-image.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
@@ -800,6 +1051,9 @@ mobile/views/components/sub-note-content.vue:
|
|||||||
mobile/views/components/timeline.vue:
|
mobile/views/components/timeline.vue:
|
||||||
empty: "投稿がありません"
|
empty: "投稿がありません"
|
||||||
load-more: "もっと"
|
load-more: "もっと"
|
||||||
|
mobile/views/components/ui.header.vue:
|
||||||
|
welcome-back: "おかえりなさい、"
|
||||||
|
adjective: "さん"
|
||||||
mobile/views/components/ui.nav.vue:
|
mobile/views/components/ui.nav.vue:
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
@@ -813,6 +1067,7 @@ mobile/views/components/ui.nav.vue:
|
|||||||
game: "ゲーム"
|
game: "ゲーム"
|
||||||
darkmode: "ダークモード"
|
darkmode: "ダークモード"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
|
admin: "管理"
|
||||||
about: "Misskeyについて"
|
about: "Misskeyについて"
|
||||||
mobile/views/components/user-timeline.vue:
|
mobile/views/components/user-timeline.vue:
|
||||||
no-notes: "このユーザーは投稿していないようです。"
|
no-notes: "このユーザーは投稿していないようです。"
|
||||||
@@ -830,6 +1085,8 @@ mobile/views/pages/user-lists.vue:
|
|||||||
mobile/views/pages/drive.vue:
|
mobile/views/pages/drive.vue:
|
||||||
drive: "ドライブ"
|
drive: "ドライブ"
|
||||||
more: "もっと見る"
|
more: "もっと見る"
|
||||||
|
mobile/views/pages/signup.vue:
|
||||||
|
lets-start: "📦 始めましょう"
|
||||||
mobile/views/pages/followers.vue:
|
mobile/views/pages/followers.vue:
|
||||||
followers-of: "{}のフォロワー"
|
followers-of: "{}のフォロワー"
|
||||||
mobile/views/pages/following.vue:
|
mobile/views/pages/following.vue:
|
||||||
@@ -839,6 +1096,19 @@ mobile/views/pages/home.vue:
|
|||||||
local: "ローカル"
|
local: "ローカル"
|
||||||
hybrid: "ソーシャル"
|
hybrid: "ソーシャル"
|
||||||
global: "グローバル"
|
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:
|
mobile/views/pages/messaging.vue:
|
||||||
messaging: "メッセージ"
|
messaging: "メッセージ"
|
||||||
mobile/views/pages/messaging-room.vue:
|
mobile/views/pages/messaging-room.vue:
|
||||||
@@ -854,6 +1124,8 @@ mobile/views/pages/note.vue:
|
|||||||
mobile/views/pages/notifications.vue:
|
mobile/views/pages/notifications.vue:
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
read-all: "すべての通知を既読にしますか?"
|
read-all: "すべての通知を既読にしますか?"
|
||||||
|
mobile/views/pages/games/reversi.vue:
|
||||||
|
reversi: "リバーシ"
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
mobile/views/pages/settings/settings.profile.vue:
|
||||||
title: "プロフィール"
|
title: "プロフィール"
|
||||||
name: "名前"
|
name: "名前"
|
||||||
@@ -871,6 +1143,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
search: "検索"
|
search: "検索"
|
||||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
|
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
mobile/views/pages/selectdrive.vue:
|
mobile/views/pages/selectdrive.vue:
|
||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
mobile/views/pages/settings.vue:
|
mobile/views/pages/settings.vue:
|
||||||
@@ -884,13 +1157,18 @@ mobile/views/pages/settings.vue:
|
|||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
i-am-under-limited-internet: "私は通信を制限されている"
|
i-am-under-limited-internet: "私は通信を制限されている"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteを表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteを表示する"
|
||||||
post-style: "投稿の表示スタイル"
|
post-style: "投稿の表示スタイル"
|
||||||
post-style-standard: "標準"
|
post-style-standard: "標準"
|
||||||
post-style-smart: "スマート"
|
post-style-smart: "スマート"
|
||||||
|
notification-position: "通知の表示"
|
||||||
|
notification-position-bottom: "下"
|
||||||
|
notification-position-top: "上"
|
||||||
behavior: "動作"
|
behavior: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
@@ -911,6 +1189,8 @@ mobile/views/pages/settings.vue:
|
|||||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
|
sound: "サウンド"
|
||||||
|
enable-sounds: "サウンドを有効にする"
|
||||||
mobile/views/pages/user.vue:
|
mobile/views/pages/user.vue:
|
||||||
follows-you: "フォローされています"
|
follows-you: "フォローされています"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@@ -965,3 +1245,5 @@ docs:
|
|||||||
name: "名前"
|
name: "名前"
|
||||||
type: "型"
|
type: "型"
|
||||||
description: "説明"
|
description: "説明"
|
||||||
|
dev/views/index.vue:
|
||||||
|
manage-apps: "アプリの管理"
|
||||||
92
package.json
92
package.json
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"name": "misskey",
|
"name": "misskey",
|
||||||
"author": "syuilo <i@syuilo.com>",
|
"author": "syuilo <i@syuilo.com>",
|
||||||
"version": "5.3.0",
|
"version": "8.30.0",
|
||||||
"clientVersion": "1.0.7588",
|
"clientVersion": "1.0.9481",
|
||||||
"codename": "nighthike",
|
"codename": "nighthike",
|
||||||
"main": "./built/index.js",
|
"main": "./built/index.js",
|
||||||
"private": true,
|
"private": true,
|
||||||
@@ -31,7 +31,8 @@
|
|||||||
"@types/dateformat": "1.0.1",
|
"@types/dateformat": "1.0.1",
|
||||||
"@types/debug": "0.0.30",
|
"@types/debug": "0.0.30",
|
||||||
"@types/deep-equal": "1.0.1",
|
"@types/deep-equal": "1.0.1",
|
||||||
"@types/elasticsearch": "5.0.25",
|
"@types/double-ended-queue": "2.1.0",
|
||||||
|
"@types/elasticsearch": "5.0.26",
|
||||||
"@types/file-type": "5.2.1",
|
"@types/file-type": "5.2.1",
|
||||||
"@types/gulp": "3.8.36",
|
"@types/gulp": "3.8.36",
|
||||||
"@types/gulp-htmlmin": "1.3.32",
|
"@types/gulp-htmlmin": "1.3.32",
|
||||||
@@ -43,7 +44,6 @@
|
|||||||
"@types/is-root": "1.0.0",
|
"@types/is-root": "1.0.0",
|
||||||
"@types/is-url": "1.2.28",
|
"@types/is-url": "1.2.28",
|
||||||
"@types/js-yaml": "3.11.2",
|
"@types/js-yaml": "3.11.2",
|
||||||
"@types/jsdom": "11.0.6",
|
|
||||||
"@types/koa": "2.0.46",
|
"@types/koa": "2.0.46",
|
||||||
"@types/koa-bodyparser": "5.0.1",
|
"@types/koa-bodyparser": "5.0.1",
|
||||||
"@types/koa-compress": "2.0.8",
|
"@types/koa-compress": "2.0.8",
|
||||||
@@ -51,17 +51,16 @@
|
|||||||
"@types/koa-logger": "3.1.0",
|
"@types/koa-logger": "3.1.0",
|
||||||
"@types/koa-mount": "3.0.1",
|
"@types/koa-mount": "3.0.1",
|
||||||
"@types/koa-multer": "1.0.0",
|
"@types/koa-multer": "1.0.0",
|
||||||
"@types/koa-router": "7.0.30",
|
"@types/koa-router": "7.0.31",
|
||||||
"@types/koa-send": "4.1.1",
|
"@types/koa-send": "4.1.1",
|
||||||
"@types/koa-views": "2.0.3",
|
"@types/koa-views": "2.0.3",
|
||||||
"@types/koa__cors": "2.2.2",
|
"@types/koa__cors": "2.2.3",
|
||||||
"@types/minio": "6.0.2",
|
"@types/minio": "7.0.0",
|
||||||
"@types/mkdirp": "0.5.2",
|
"@types/mkdirp": "0.5.2",
|
||||||
"@types/mocha": "5.2.3",
|
"@types/mocha": "5.2.3",
|
||||||
"@types/mongodb": "3.1.2",
|
"@types/mongodb": "3.1.4",
|
||||||
"@types/ms": "0.7.30",
|
"@types/ms": "0.7.30",
|
||||||
"@types/node": "10.5.3",
|
"@types/node": "10.9.4",
|
||||||
"@types/parse5": "5.0.0",
|
|
||||||
"@types/portscanner": "2.1.0",
|
"@types/portscanner": "2.1.0",
|
||||||
"@types/pug": "2.0.4",
|
"@types/pug": "2.0.4",
|
||||||
"@types/qrcode": "1.2.0",
|
"@types/qrcode": "1.2.0",
|
||||||
@@ -71,16 +70,17 @@
|
|||||||
"@types/request-promise-native": "1.0.15",
|
"@types/request-promise-native": "1.0.15",
|
||||||
"@types/rimraf": "2.0.2",
|
"@types/rimraf": "2.0.2",
|
||||||
"@types/seedrandom": "2.4.27",
|
"@types/seedrandom": "2.4.27",
|
||||||
"@types/sharp": "0.17.9",
|
"@types/sharp": "0.17.10",
|
||||||
"@types/showdown": "1.7.5",
|
"@types/showdown": "1.7.5",
|
||||||
"@types/single-line-log": "1.1.0",
|
"@types/single-line-log": "1.1.0",
|
||||||
"@types/speakeasy": "2.0.2",
|
"@types/speakeasy": "2.0.2",
|
||||||
|
"@types/systeminformation": "3.23.0",
|
||||||
"@types/tmp": "0.0.33",
|
"@types/tmp": "0.0.33",
|
||||||
"@types/uuid": "3.4.3",
|
"@types/uuid": "3.4.4",
|
||||||
"@types/webpack": "4.4.8",
|
"@types/webpack": "4.4.11",
|
||||||
"@types/webpack-stream": "3.2.10",
|
"@types/webpack-stream": "3.2.10",
|
||||||
"@types/websocket": "0.0.39",
|
"@types/websocket": "0.0.40",
|
||||||
"@types/ws": "5.1.2",
|
"@types/ws": "6.0.1",
|
||||||
"animejs": "2.2.0",
|
"animejs": "2.2.0",
|
||||||
"autosize": "4.0.2",
|
"autosize": "4.0.2",
|
||||||
"autwh": "0.1.0",
|
"autwh": "0.1.0",
|
||||||
@@ -89,6 +89,8 @@
|
|||||||
"bootstrap-vue": "2.0.0-rc.11",
|
"bootstrap-vue": "2.0.0-rc.11",
|
||||||
"cafy": "11.3.0",
|
"cafy": "11.3.0",
|
||||||
"chalk": "2.4.1",
|
"chalk": "2.4.1",
|
||||||
|
"chart.js": "2.7.2",
|
||||||
|
"commander": "2.17.1",
|
||||||
"crc-32": "1.2.0",
|
"crc-32": "1.2.0",
|
||||||
"css-loader": "1.0.0",
|
"css-loader": "1.0.0",
|
||||||
"dateformat": "3.0.3",
|
"dateformat": "3.0.3",
|
||||||
@@ -97,8 +99,9 @@
|
|||||||
"deepcopy": "0.6.3",
|
"deepcopy": "0.6.3",
|
||||||
"diskusage": "0.2.4",
|
"diskusage": "0.2.4",
|
||||||
"dompurify": "1.0.5",
|
"dompurify": "1.0.5",
|
||||||
|
"double-ended-queue": "2.1.0-0",
|
||||||
"elasticsearch": "15.1.1",
|
"elasticsearch": "15.1.1",
|
||||||
"element-ui": "2.4.5",
|
"element-ui": "2.4.6",
|
||||||
"emojilib": "2.3.0",
|
"emojilib": "2.3.0",
|
||||||
"escape-regexp": "0.0.1",
|
"escape-regexp": "0.0.1",
|
||||||
"eslint": "5.0.1",
|
"eslint": "5.0.1",
|
||||||
@@ -106,7 +109,7 @@
|
|||||||
"eventemitter3": "3.1.0",
|
"eventemitter3": "3.1.0",
|
||||||
"exif-js": "2.3.0",
|
"exif-js": "2.3.0",
|
||||||
"file-loader": "1.1.11",
|
"file-loader": "1.1.11",
|
||||||
"file-type": "8.1.0",
|
"file-type": "9.0.0",
|
||||||
"fuckadblock": "3.2.1",
|
"fuckadblock": "3.2.1",
|
||||||
"gulp": "3.9.1",
|
"gulp": "3.9.1",
|
||||||
"gulp-cssnano": "2.1.3",
|
"gulp-cssnano": "2.1.3",
|
||||||
@@ -122,16 +125,16 @@
|
|||||||
"gulp-typescript": "4.0.2",
|
"gulp-typescript": "4.0.2",
|
||||||
"gulp-uglify": "3.0.1",
|
"gulp-uglify": "3.0.1",
|
||||||
"gulp-util": "3.0.8",
|
"gulp-util": "3.0.8",
|
||||||
"hard-source-webpack-plugin": "0.11.2",
|
"hard-source-webpack-plugin": "0.12.0",
|
||||||
"highlight.js": "9.12.0",
|
"highlight.js": "9.12.0",
|
||||||
"html-minifier": "3.5.19",
|
"html-minifier": "3.5.20",
|
||||||
"http-signature": "1.2.0",
|
"http-signature": "1.2.0",
|
||||||
"insert-text-at-cursor": "0.1.1",
|
"insert-text-at-cursor": "0.1.1",
|
||||||
"is-root": "2.0.0",
|
"is-root": "2.0.0",
|
||||||
"is-url": "1.2.4",
|
"is-url": "1.2.4",
|
||||||
"jquery": "3.3.1",
|
"jquery": "3.3.1",
|
||||||
"js-yaml": "3.12.0",
|
"js-yaml": "3.12.0",
|
||||||
"jsdom": "11.11.0",
|
"jsdom": "11.12.0",
|
||||||
"koa": "2.5.1",
|
"koa": "2.5.1",
|
||||||
"koa-bodyparser": "4.2.1",
|
"koa-bodyparser": "4.2.1",
|
||||||
"koa-compress": "3.0.0",
|
"koa-compress": "3.0.0",
|
||||||
@@ -145,74 +148,81 @@
|
|||||||
"koa-slow": "2.1.0",
|
"koa-slow": "2.1.0",
|
||||||
"koa-views": "6.1.4",
|
"koa-views": "6.1.4",
|
||||||
"loader-utils": "1.1.0",
|
"loader-utils": "1.1.0",
|
||||||
|
"lodash.assign": "4.2.0",
|
||||||
"mecab-async": "0.1.2",
|
"mecab-async": "0.1.2",
|
||||||
"minio": "6.0.0",
|
"merge-options": "1.0.1",
|
||||||
|
"minio": "7.0.1",
|
||||||
"mkdirp": "0.5.1",
|
"mkdirp": "0.5.1",
|
||||||
"mocha": "5.2.0",
|
"mocha": "5.2.0",
|
||||||
"moji": "0.5.1",
|
"moji": "0.5.1",
|
||||||
"mongodb": "3.1.1",
|
"mongodb": "3.1.1",
|
||||||
"monk": "6.0.6",
|
"monk": "6.0.6",
|
||||||
"ms": "2.1.1",
|
"ms": "2.1.1",
|
||||||
"nan": "2.10.0",
|
"nan": "2.11.0",
|
||||||
"node-sass": "4.9.2",
|
"nested-property": "0.0.7",
|
||||||
"node-sass-json-importer": "3.3.1",
|
"node-sass": "4.9.3",
|
||||||
|
"node-sass-json-importer": "4.0.1",
|
||||||
"nprogress": "0.2.0",
|
"nprogress": "0.2.0",
|
||||||
"object-assign-deep": "0.4.0",
|
"object-assign-deep": "0.4.0",
|
||||||
"on-build-webpack": "0.1.0",
|
"on-build-webpack": "0.1.0",
|
||||||
"os-utils": "0.0.14",
|
"os-utils": "0.0.14",
|
||||||
"parse5": "5.0.0",
|
"parse5": "5.1.0",
|
||||||
"portscanner": "2.2.0",
|
"portscanner": "2.2.0",
|
||||||
"progress-bar-webpack-plugin": "1.11.0",
|
"progress-bar-webpack-plugin": "1.11.0",
|
||||||
"promise-sequential": "1.1.1",
|
"promise-sequential": "1.1.1",
|
||||||
"pug": "2.0.3",
|
"pug": "2.0.3",
|
||||||
"punycode": "2.1.1",
|
"punycode": "2.1.1",
|
||||||
"qrcode": "1.2.0",
|
"qrcode": "1.2.2",
|
||||||
"ratelimiter": "3.2.0",
|
"ratelimiter": "3.2.0",
|
||||||
"recaptcha-promise": "0.1.3",
|
"recaptcha-promise": "0.1.3",
|
||||||
"reconnecting-websocket": "3.2.2",
|
"reconnecting-websocket": "3.2.2",
|
||||||
"redis": "2.8.0",
|
"redis": "2.8.0",
|
||||||
"request": "2.87.0",
|
"request": "2.88.0",
|
||||||
"request-promise-native": "1.0.5",
|
"request-promise-native": "1.0.5",
|
||||||
"rimraf": "2.6.2",
|
"rimraf": "2.6.2",
|
||||||
"rndstr": "1.0.0",
|
"rndstr": "1.0.0",
|
||||||
"s-age": "1.1.2",
|
"s-age": "1.1.2",
|
||||||
"sass-loader": "7.0.3",
|
"sass-loader": "7.1.0",
|
||||||
"seedrandom": "2.4.3",
|
"seedrandom": "2.4.4",
|
||||||
"sharp": "0.20.5",
|
"sharp": "0.20.7",
|
||||||
"showdown": "1.8.6",
|
"showdown": "1.8.6",
|
||||||
"showdown-highlightjs-extension": "0.1.2",
|
"showdown-highlightjs-extension": "0.1.2",
|
||||||
"single-line-log": "1.1.2",
|
"single-line-log": "1.1.2",
|
||||||
"speakeasy": "2.0.0",
|
"speakeasy": "2.0.0",
|
||||||
"style-loader": "0.21.0",
|
"stringz": "1.0.0",
|
||||||
|
"style-loader": "0.23.0",
|
||||||
"stylus": "0.54.5",
|
"stylus": "0.54.5",
|
||||||
"stylus-loader": "3.0.2",
|
"stylus-loader": "3.0.2",
|
||||||
"summaly": "2.0.6",
|
"summaly": "2.2.0",
|
||||||
|
"systeminformation": "3.45.1",
|
||||||
"syuilo-password-strength": "0.0.1",
|
"syuilo-password-strength": "0.0.1",
|
||||||
"textarea-caret": "3.1.0",
|
"textarea-caret": "3.1.0",
|
||||||
"tmp": "0.0.33",
|
"tmp": "0.0.33",
|
||||||
"ts-loader": "4.4.1",
|
"ts-loader": "4.4.1",
|
||||||
"ts-node": "7.0.0",
|
"ts-node": "7.0.1",
|
||||||
"tslint": "5.10.0",
|
"tslint": "5.10.0",
|
||||||
"typescript": "2.9.2",
|
"typescript": "2.9.2",
|
||||||
"typescript-eslint-parser": "17.0.0",
|
"typescript-eslint-parser": "18.0.0",
|
||||||
"uglify-es": "3.3.9",
|
"uglify-es": "3.3.9",
|
||||||
"url-loader": "1.0.1",
|
"url-loader": "1.1.1",
|
||||||
"uuid": "3.3.2",
|
"uuid": "3.3.2",
|
||||||
"v-animate-css": "0.0.2",
|
"v-animate-css": "0.0.2",
|
||||||
"vue": "2.5.16",
|
"vue": "2.5.17",
|
||||||
|
"vue-chartjs": "3.4.0",
|
||||||
"vue-cropperjs": "2.2.1",
|
"vue-cropperjs": "2.2.1",
|
||||||
"vue-js-modal": "1.3.16",
|
"vue-js-modal": "1.3.26",
|
||||||
"vue-json-tree-view": "2.1.4",
|
"vue-json-tree-view": "2.1.4",
|
||||||
"vue-loader": "15.2.6",
|
"vue-loader": "15.4.1",
|
||||||
"vue-router": "3.0.1",
|
"vue-router": "3.0.1",
|
||||||
"vue-style-loader": "4.1.1",
|
"vue-style-loader": "4.1.2",
|
||||||
"vue-template-compiler": "2.5.16",
|
"vue-template-compiler": "2.5.17",
|
||||||
"vuedraggable": "2.16.0",
|
"vuedraggable": "2.16.0",
|
||||||
|
"vuewordcloud": "18.7.11",
|
||||||
"vuex": "3.0.1",
|
"vuex": "3.0.1",
|
||||||
"vuex-persistedstate": "2.5.4",
|
"vuex-persistedstate": "2.5.4",
|
||||||
"web-push": "3.3.2",
|
"web-push": "3.3.2",
|
||||||
"webfinger.js": "2.6.6",
|
"webfinger.js": "2.6.6",
|
||||||
"webpack": "4.16.2",
|
"webpack": "4.17.2",
|
||||||
"webpack-cli": "3.1.0",
|
"webpack-cli": "3.1.0",
|
||||||
"websocket": "1.0.26",
|
"websocket": "1.0.26",
|
||||||
"ws": "6.0.0",
|
"ws": "6.0.0",
|
||||||
|
|||||||
@@ -6,6 +6,10 @@ html
|
|||||||
&, *
|
&, *
|
||||||
cursor progress !important
|
cursor progress !important
|
||||||
|
|
||||||
|
html
|
||||||
|
// iOSのため
|
||||||
|
overflow auto
|
||||||
|
|
||||||
body
|
body
|
||||||
overflow-wrap break-word
|
overflow-wrap break-word
|
||||||
|
|
||||||
|
|||||||
@@ -8,14 +8,14 @@ import VueRouter from 'vue-router';
|
|||||||
import './style.styl';
|
import './style.styl';
|
||||||
|
|
||||||
import init from '../init';
|
import init from '../init';
|
||||||
|
|
||||||
import Index from './views/index.vue';
|
import Index from './views/index.vue';
|
||||||
|
import * as config from '../config';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* init
|
* init
|
||||||
*/
|
*/
|
||||||
init(launch => {
|
init(launch => {
|
||||||
document.title = 'Misskey | アプリの連携';
|
document.title = `${config.name} | %i18n:common.application-authorization%`;
|
||||||
|
|
||||||
// Init router
|
// Init router
|
||||||
const router = new VueRouter({
|
const router = new VueRouter({
|
||||||
|
|||||||
@@ -1,35 +1,35 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="form">
|
<div class="form">
|
||||||
<header>
|
<header>
|
||||||
<h1><i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?</h1>
|
<h1>%i18n:@share-access%</h1>
|
||||||
<img :src="app.iconUrl"/>
|
<img :src="app.iconUrl"/>
|
||||||
</header>
|
</header>
|
||||||
<div class="app">
|
<div class="app">
|
||||||
<section>
|
<section>
|
||||||
<h2>{{ app.name }}</h2>
|
<h2>{{ app.name }}</h2>
|
||||||
<p class="nid">{{ app.nameId }}</p>
|
<p class="id">{{ app.id }}</p>
|
||||||
<p class="description">{{ app.description }}</p>
|
<p class="description">{{ app.description }}</p>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<h2>このアプリは次の権限を要求しています:</h2>
|
<h2>%i18n:@permission-ask%</h2>
|
||||||
<ul>
|
<ul>
|
||||||
<template v-for="p in app.permission">
|
<template v-for="p in app.permission">
|
||||||
<li v-if="p == 'account-read'">アカウントの情報を見る。</li>
|
<li v-if="p == 'account-read'">%i18n:@account-read%</li>
|
||||||
<li v-if="p == 'account-write'">アカウントの情報を操作する。</li>
|
<li v-if="p == 'account-write'">%i18n:@account-write%</li>
|
||||||
<li v-if="p == 'note-write'">投稿する。</li>
|
<li v-if="p == 'note-write'">%i18n:@note-write%</li>
|
||||||
<li v-if="p == 'like-write'">いいねしたりいいね解除する。</li>
|
<li v-if="p == 'like-write'">%i18n:@like-write%</li>
|
||||||
<li v-if="p == 'following-write'">フォローしたりフォロー解除する。</li>
|
<li v-if="p == 'following-write'">%i18n:@following-write%</li>
|
||||||
<li v-if="p == 'drive-read'">ドライブを見る。</li>
|
<li v-if="p == 'drive-read'">%i18n:@drive-read%</li>
|
||||||
<li v-if="p == 'drive-write'">ドライブを操作する。</li>
|
<li v-if="p == 'drive-write'">%i18n:@drive-write%</li>
|
||||||
<li v-if="p == 'notification-read'">通知を見る。</li>
|
<li v-if="p == 'notification-read'">%i18n:@notification-read%</li>
|
||||||
<li v-if="p == 'notification-write'">通知を操作する。</li>
|
<li v-if="p == 'notification-write'">%i18n:@notification-write%</li>
|
||||||
</template>
|
</template>
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
<div class="action">
|
<div class="action">
|
||||||
<button @click="cancel">キャンセル</button>
|
<button @click="cancel">%i18n:@cancel%</button>
|
||||||
<button @click="accept">アクセスを許可</button>
|
<button @click="accept">%i18n:@accept%</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="index">
|
<div class="index">
|
||||||
<main v-if="$store.getters.isSignedIn">
|
<main v-if="$store.getters.isSignedIn">
|
||||||
<p class="fetching" v-if="fetching">読み込み中<mk-ellipsis/></p>
|
<p class="fetching" v-if="fetching">%i18n:@loading%<mk-ellipsis/></p>
|
||||||
<x-form
|
<x-form
|
||||||
class="form"
|
class="form"
|
||||||
ref="form"
|
ref="form"
|
||||||
@@ -11,20 +11,20 @@
|
|||||||
@accepted="accepted"
|
@accepted="accepted"
|
||||||
/>
|
/>
|
||||||
<div class="denied" v-if="state == 'denied'">
|
<div class="denied" v-if="state == 'denied'">
|
||||||
<h1>アプリケーションの連携をキャンセルしました。</h1>
|
<h1>%i18n:@denied%</h1>
|
||||||
<p>このアプリがあなたのアカウントにアクセスすることはありません。</p>
|
<p>%i18n:@denied-paragraph%</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="accepted" v-if="state == 'accepted'">
|
<div class="accepted" v-if="state == 'accepted'">
|
||||||
<h1>{{ session.app.isAuthorized ? 'このアプリは既に連携済みです' : 'アプリケーションの連携を許可しました' }}</h1>
|
<h1>{{ session.app.isAuthorized ? '%i18n:@already-authorized%' : '%i18n:@allowed%' }}</h1>
|
||||||
<p v-if="session.app.callbackUrl">アプリケーションに戻っています<mk-ellipsis/></p>
|
<p v-if="session.app.callbackUrl">%i18n:@callback-url%<mk-ellipsis/></p>
|
||||||
<p v-if="!session.app.callbackUrl">アプリケーションに戻って、やっていってください。</p>
|
<p v-if="!session.app.callbackUrl">%i18n:@please-go-back%</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="error" v-if="state == 'fetch-session-error'">
|
<div class="error" v-if="state == 'fetch-session-error'">
|
||||||
<p>セッションが存在しません。</p>
|
<p>%i18n:@error%</p>
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
<main class="signin" v-if="!$store.getters.isSignedIn">
|
<main class="signin" v-if="!$store.getters.isSignedIn">
|
||||||
<h1>サインインしてください</h1>
|
<h1>%i18n:@sign-in%</h1>
|
||||||
<mk-signin/>
|
<mk-signin/>
|
||||||
</main>
|
</main>
|
||||||
<footer><img src="/assets/auth/icon.svg" alt="Misskey"/></footer>
|
<footer><img src="/assets/auth/icon.svg" alt="Misskey"/></footer>
|
||||||
@@ -80,7 +80,7 @@ export default Vue.extend({
|
|||||||
accepted() {
|
accepted() {
|
||||||
this.state = 'accepted';
|
this.state = 'accepted';
|
||||||
if (this.session.app.callbackUrl) {
|
if (this.session.app.callbackUrl) {
|
||||||
location.href = this.session.app.callbackUrl + '?token=' + this.session.token;
|
location.href = `${this.session.app.callbackUrl}?token=${this.session.token}`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,19 +32,28 @@
|
|||||||
//#region Detect app name
|
//#region Detect app name
|
||||||
let app = null;
|
let app = null;
|
||||||
|
|
||||||
if (url.pathname == '/docs' || url.pathname.startsWith('/docs/')) app = 'docs';
|
if (`${url.pathname}/`.startsWith('/docs/')) app = 'docs';
|
||||||
if (url.pathname == '/dev' || url.pathname.startsWith('/dev/')) app = 'dev';
|
if (`${url.pathname}/`.startsWith('/dev/')) app = 'dev';
|
||||||
if (url.pathname == '/auth' || url.pathname.startsWith('/auth/')) app = 'auth';
|
if (`${url.pathname}/`.startsWith('/auth/')) app = 'auth';
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
//#region Detect the user language
|
//#region Detect the user language
|
||||||
let lang = navigator.language.split('-')[0];
|
let lang = null;
|
||||||
|
|
||||||
// The default language is English
|
if (LANGS.includes(navigator.language)) {
|
||||||
if (!LANGS.includes(lang)) lang = 'en';
|
lang = navigator.language;
|
||||||
|
} else {
|
||||||
|
lang = LANGS.find(x => x.split('-')[0] == navigator.language);
|
||||||
|
|
||||||
if (settings) {
|
if (lang == null) {
|
||||||
if (settings.device.lang) lang = settings.device.lang;
|
// Fallback
|
||||||
|
lang = 'en-US';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settings && settings.device.lang &&
|
||||||
|
LANGS.includes(settings.device.lang)) {
|
||||||
|
lang = settings.device.lang;
|
||||||
}
|
}
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
@@ -85,7 +94,7 @@
|
|||||||
|
|
||||||
// Get salt query
|
// Get salt query
|
||||||
const salt = localStorage.getItem('salt')
|
const salt = localStorage.getItem('salt')
|
||||||
? '?salt=' + localStorage.getItem('salt')
|
? `?salt=${localStorage.getItem('salt')}`
|
||||||
: '';
|
: '';
|
||||||
|
|
||||||
// Load an app script
|
// Load an app script
|
||||||
@@ -104,7 +113,7 @@
|
|||||||
// グローバルにタイマーIDを代入しておく
|
// グローバルにタイマーIDを代入しておく
|
||||||
window.mkBootTimer = window.setTimeout(async () => {
|
window.mkBootTimer = window.setTimeout(async () => {
|
||||||
// Fetch meta
|
// Fetch meta
|
||||||
const res = await fetch(API + '/meta', {
|
const res = await fetch('/api/meta', {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
cache: 'no-cache'
|
cache: 'no-cache'
|
||||||
});
|
});
|
||||||
@@ -131,7 +140,7 @@
|
|||||||
// Random
|
// Random
|
||||||
localStorage.setItem('salt', Math.random().toString());
|
localStorage.setItem('salt', Math.random().toString());
|
||||||
|
|
||||||
// Clear cache (serive worker)
|
// Clear cache (service worker)
|
||||||
try {
|
try {
|
||||||
navigator.serviceWorker.controller.postMessage('clear');
|
navigator.serviceWorker.controller.postMessage('clear');
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ export default async function(mios: MiOS, force = false, silent = false) {
|
|||||||
localStorage.setItem('should-refresh', 'true');
|
localStorage.setItem('should-refresh', 'true');
|
||||||
localStorage.setItem('v', newer);
|
localStorage.setItem('v', newer);
|
||||||
|
|
||||||
// Clear cache (serive worker)
|
// Clear cache (service worker)
|
||||||
try {
|
try {
|
||||||
if (navigator.serviceWorker.controller) {
|
if (navigator.serviceWorker.controller) {
|
||||||
navigator.serviceWorker.controller.postMessage('clear');
|
navigator.serviceWorker.controller.postMessage('clear');
|
||||||
|
|||||||
@@ -15,22 +15,22 @@ export default function(type, data): Notification {
|
|||||||
switch (type) {
|
switch (type) {
|
||||||
case 'drive_file_created':
|
case 'drive_file_created':
|
||||||
return {
|
return {
|
||||||
title: 'ファイルがアップロードされました',
|
title: '%i18n:common.notification.file-uploaded%',
|
||||||
body: data.name,
|
body: data.name,
|
||||||
icon: data.url
|
icon: data.url
|
||||||
};
|
};
|
||||||
|
|
||||||
case 'unread_messaging_message':
|
case 'unread_messaging_message':
|
||||||
return {
|
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),
|
body: data.text, // TODO: getMessagingMessageSummary(data),
|
||||||
icon: data.user.avatarUrl
|
icon: data.user.avatarUrl
|
||||||
};
|
};
|
||||||
|
|
||||||
case 'reversi_invited':
|
case 'reversi_invited':
|
||||||
return {
|
return {
|
||||||
title: '対局への招待があります',
|
title: '%i18n:common.notification.reversi-invited%',
|
||||||
body: `${getUserName(data.parent)}さんから`,
|
body: '%i18n:common.notification.reversi-invited-by%'.split("{}")[0] + `${getUserName(data.parent)}` + '%i18n:common.notification.reversi-invited-by%'.split("{}")[1],
|
||||||
icon: data.parent.avatarUrl
|
icon: data.parent.avatarUrl
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -38,21 +38,21 @@ export default function(type, data): Notification {
|
|||||||
switch (data.type) {
|
switch (data.type) {
|
||||||
case 'mention':
|
case 'mention':
|
||||||
return {
|
return {
|
||||||
title: `${getUserName(data.user)}さんから:`,
|
title: '%i18n:common.notification.notified-by%'.split("{}")[0] + `${getUserName(data.user)}:` + '%i18n:common.notification.notified-by%'.split("{}")[1],
|
||||||
body: getNoteSummary(data),
|
body: getNoteSummary(data),
|
||||||
icon: data.user.avatarUrl
|
icon: data.user.avatarUrl
|
||||||
};
|
};
|
||||||
|
|
||||||
case 'reply':
|
case 'reply':
|
||||||
return {
|
return {
|
||||||
title: `${getUserName(data.user)}さんから返信:`,
|
title: '%i18n:common.notification.reply-from%'.split("{}")[0] + `${getUserName(data.user)}` + '%i18n:common.notification.reply-from%'.split("{}")[1],
|
||||||
body: getNoteSummary(data),
|
body: getNoteSummary(data),
|
||||||
icon: data.user.avatarUrl
|
icon: data.user.avatarUrl
|
||||||
};
|
};
|
||||||
|
|
||||||
case 'quote':
|
case 'quote':
|
||||||
return {
|
return {
|
||||||
title: `${getUserName(data.user)}さんが引用:`,
|
title: '%i18n:common.notification.quoted-by%'.split("{}")[0] + `${getUserName(data.user)}` + '%i18n:common.notification.quoted-by%'.split("{}")[1],
|
||||||
body: getNoteSummary(data),
|
body: getNoteSummary(data),
|
||||||
icon: data.user.avatarUrl
|
icon: data.user.avatarUrl
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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) => {
|
export default (os) => {
|
||||||
function adBlockDetected() {
|
function adBlockDetected() {
|
||||||
os.apis.dialog({
|
os.apis.dialog({
|
||||||
title: '%fa:exclamation-triangle%広告ブロッカーを無効にしてください',
|
title: '%fa:exclamation-triangle%%i18n:common.adblock.detected%',
|
||||||
text: '<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。',
|
text: '%i18n:common.adblock.warning%',
|
||||||
actins: [{
|
actins: [{
|
||||||
text: 'OK'
|
text: 'OK'
|
||||||
}]
|
}]
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
const gcd = (a, b) => !b ? a : gcd(b, a % b);
|
|
||||||
export default gcd;
|
|
||||||
10
src/client/app/common/scripts/get-face.ts
Normal file
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)];
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
export default function(qs: string) {
|
|
||||||
const q = {
|
|
||||||
text: ''
|
|
||||||
};
|
|
||||||
|
|
||||||
qs.split(' ').forEach(x => {
|
|
||||||
if (/^([a-z_]+?):(.+?)$/.test(x)) {
|
|
||||||
const [key, value] = x.split(':');
|
|
||||||
switch (key) {
|
|
||||||
case 'user':
|
|
||||||
q['includeUserUsernames'] = value.split(',');
|
|
||||||
break;
|
|
||||||
case 'exclude_user':
|
|
||||||
q['excludeUserUsernames'] = value.split(',');
|
|
||||||
break;
|
|
||||||
case 'follow':
|
|
||||||
q['following'] = value == 'null' ? null : value == 'true';
|
|
||||||
break;
|
|
||||||
case 'reply':
|
|
||||||
q['reply'] = value == 'null' ? null : value == 'true';
|
|
||||||
break;
|
|
||||||
case 'renote':
|
|
||||||
q['renote'] = value == 'null' ? null : value == 'true';
|
|
||||||
break;
|
|
||||||
case 'media':
|
|
||||||
q['media'] = value == 'null' ? null : value == 'true';
|
|
||||||
break;
|
|
||||||
case 'poll':
|
|
||||||
q['poll'] = value == 'null' ? null : value == 'true';
|
|
||||||
break;
|
|
||||||
case 'until':
|
|
||||||
case 'since':
|
|
||||||
// YYYY-MM-DD
|
|
||||||
if (/^[0-9]+\-[0-9]+\-[0-9]+$/) {
|
|
||||||
const [yyyy, mm, dd] = value.split('-');
|
|
||||||
q[`${key}_date`] = (new Date(parseInt(yyyy, 10), parseInt(mm, 10) - 1, parseInt(dd, 10))).getTime();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
q[key] = value;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
q.text += x + ' ';
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if (q.text) {
|
|
||||||
q.text = q.text.trim();
|
|
||||||
}
|
|
||||||
|
|
||||||
return q;
|
|
||||||
}
|
|
||||||
@@ -3,8 +3,10 @@ import MiOS from '../../../../../mios';
|
|||||||
|
|
||||||
export class ReversiGameStream extends Stream {
|
export class ReversiGameStream extends Stream {
|
||||||
constructor(os: MiOS, me, game) {
|
constructor(os: MiOS, me, game) {
|
||||||
super(os, 'games/reversi-game', {
|
super(os, 'games/reversi-game', me ? {
|
||||||
i: me ? me.token : null,
|
i: me.token,
|
||||||
|
game: game.id
|
||||||
|
} : {
|
||||||
game: game.id
|
game: game.id
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,9 +7,9 @@ import MiOS from '../../../mios';
|
|||||||
*/
|
*/
|
||||||
export class LocalTimelineStream extends Stream {
|
export class LocalTimelineStream extends Stream {
|
||||||
constructor(os: MiOS, me) {
|
constructor(os: MiOS, me) {
|
||||||
super(os, 'local-timeline', {
|
super(os, 'local-timeline', me ? {
|
||||||
i: me.token
|
i: me.token
|
||||||
});
|
} : {});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import { EventEmitter } from 'eventemitter3';
|
import { EventEmitter } from 'eventemitter3';
|
||||||
import * as uuid from 'uuid';
|
import * as uuid from 'uuid';
|
||||||
import Connection from './stream';
|
import Connection from './stream';
|
||||||
|
import { erase } from '../../../../../prelude/array';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ストリーム接続を管理するクラス
|
* ストリーム接続を管理するクラス
|
||||||
@@ -89,7 +90,7 @@ export default abstract class StreamManager<T extends Connection> extends EventE
|
|||||||
* @param userId use で発行したユーザーID
|
* @param userId use で発行したユーザーID
|
||||||
*/
|
*/
|
||||||
public dispose(userId) {
|
public dispose(userId) {
|
||||||
this.users = this.users.filter(id => id != userId);
|
this.users = erase(userId, this.users);
|
||||||
|
|
||||||
this._connection.user = `Managed (${ this.users.length })`;
|
this._connection.user = `Managed (${ this.users.length })`;
|
||||||
|
|
||||||
|
|||||||
@@ -44,11 +44,11 @@ export default class Connection extends EventEmitter {
|
|||||||
|
|
||||||
const query = params
|
const query = params
|
||||||
? Object.keys(params)
|
? Object.keys(params)
|
||||||
.map(k => encodeURIComponent(k) + '=' + encodeURIComponent(params[k]))
|
.map(k => `${encodeURIComponent(k)}=${encodeURIComponent(params[k])}`)
|
||||||
.join('&')
|
.join('&')
|
||||||
: null;
|
: null;
|
||||||
|
|
||||||
this.socket = new ReconnectingWebsocket(`${wsUrl}/${endpoint}${query ? '?' + query : ''}`);
|
this.socket = new ReconnectingWebsocket(`${wsUrl}/${endpoint}${query ? `?${query}` : ''}`);
|
||||||
this.socket.addEventListener('open', this.onOpen);
|
this.socket.addEventListener('open', this.onOpen);
|
||||||
this.socket.addEventListener('close', this.onClose);
|
this.socket.addEventListener('close', this.onClose);
|
||||||
this.socket.addEventListener('message', this.onMessage);
|
this.socket.addEventListener('message', this.onMessage);
|
||||||
|
|||||||
@@ -1,19 +1,25 @@
|
|||||||
<template>
|
<template>
|
||||||
<span class="mk-acct">
|
<span class="mk-acct">
|
||||||
<span class="name">@{{ user.username }}</span>
|
<span class="name">@{{ user.username }}</span>
|
||||||
<span class="host" v-if="user.host">@{{ user.host }}</span>
|
<span class="host" :class="{ fade: $store.state.settings.contrastedAcct }" v-if="user.host || detail">@{{ user.host || host }}</span>
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
|
import { host } from '../../../config';
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
props: ['user']
|
props: ['user', 'detail'],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
host
|
||||||
|
};
|
||||||
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
.mk-acct
|
.mk-acct
|
||||||
> .host
|
> .host.fade
|
||||||
opacity 0.5
|
opacity 0.5
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -125,14 +125,14 @@ export default Vue.extend({
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (this.type == 'user') {
|
if (this.type == 'user') {
|
||||||
const cacheKey = 'autocomplete:user:' + this.q;
|
const cacheKey = `autocomplete:user:${this.q}`;
|
||||||
const cache = sessionStorage.getItem(cacheKey);
|
const cache = sessionStorage.getItem(cacheKey);
|
||||||
if (cache) {
|
if (cache) {
|
||||||
const users = JSON.parse(cache);
|
const users = JSON.parse(cache);
|
||||||
this.users = users;
|
this.users = users;
|
||||||
this.fetching = false;
|
this.fetching = false;
|
||||||
} else {
|
} else {
|
||||||
(this as any).api('users/search_by_username', {
|
(this as any).api('users/search', {
|
||||||
query: this.q,
|
query: this.q,
|
||||||
limit: 30
|
limit: 30
|
||||||
}).then(users => {
|
}).then(users => {
|
||||||
@@ -148,7 +148,7 @@ export default Vue.extend({
|
|||||||
this.hashtags = JSON.parse(localStorage.getItem('hashtags') || '[]');
|
this.hashtags = JSON.parse(localStorage.getItem('hashtags') || '[]');
|
||||||
this.fetching = false;
|
this.fetching = false;
|
||||||
} else {
|
} else {
|
||||||
const cacheKey = 'autocomplete:hashtag:' + this.q;
|
const cacheKey = `autocomplete:hashtag:${this.q}`;
|
||||||
const cache = sessionStorage.getItem(cacheKey);
|
const cache = sessionStorage.getItem(cacheKey);
|
||||||
if (cache) {
|
if (cache) {
|
||||||
const hashtags = JSON.parse(cache);
|
const hashtags = JSON.parse(cache);
|
||||||
|
|||||||
@@ -1,6 +1,16 @@
|
|||||||
<template>
|
<template>
|
||||||
<router-link class="mk-avatar" :to="user | userPage" :title="user | acct" :target="target" :style="style" v-if="disablePreview"></router-link>
|
<span class="mk-avatar" :class="{ cat }" :title="user | acct" v-if="disableLink && !disablePreview" v-user-preview="user.id" @click="onClick">
|
||||||
<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="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>
|
</template>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
@@ -15,6 +25,10 @@ export default Vue.extend({
|
|||||||
required: false,
|
required: false,
|
||||||
default: null
|
default: null
|
||||||
},
|
},
|
||||||
|
disableLink: {
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
disablePreview: {
|
disablePreview: {
|
||||||
required: false,
|
required: false,
|
||||||
default: false
|
default: false
|
||||||
@@ -24,26 +38,71 @@ export default Vue.extend({
|
|||||||
lightmode(): boolean {
|
lightmode(): boolean {
|
||||||
return this.$store.state.device.lightmode;
|
return this.$store.state.device.lightmode;
|
||||||
},
|
},
|
||||||
|
cat(): boolean {
|
||||||
|
return this.user.isCat && this.$store.state.settings.circleIcons;
|
||||||
|
},
|
||||||
style(): any {
|
style(): any {
|
||||||
return {
|
return {
|
||||||
backgroundColor: this.lightmode
|
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
|
: this.user.avatarColor && this.user.avatarColor.length == 3
|
||||||
? `rgb(${ this.user.avatarColor.join(',') })`
|
? `rgb(${this.user.avatarColor.join(',')})`
|
||||||
: null,
|
: null,
|
||||||
backgroundImage: this.lightmode ? null : `url(${ this.user.avatarUrl })`,
|
backgroundImage: this.lightmode ? null : `url(${this.user.avatarUrl})`,
|
||||||
borderRadius: this.$store.state.settings.circleIcons ? '100%' : null
|
borderRadius: this.$store.state.settings.circleIcons ? '100%' : null
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onClick(e) {
|
||||||
|
this.$emit('click', e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
.mk-avatar
|
|
||||||
|
root(isDark)
|
||||||
display inline-block
|
display inline-block
|
||||||
vertical-align bottom
|
vertical-align bottom
|
||||||
background-size cover
|
|
||||||
background-position center center
|
&:not(.cat)
|
||||||
transition border-radius 1s ease
|
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>
|
</style>
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ export default Vue.extend({
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Check internet connection
|
// Check internet connection
|
||||||
fetch('https://google.com?rand=' + Math.random(), {
|
fetch(`https://google.com?rand=${Math.random()}`, {
|
||||||
mode: 'no-cors'
|
mode: 'no-cors'
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.internet = true;
|
this.internet = true;
|
||||||
|
|||||||
@@ -1,24 +1,28 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="root">
|
<div class="xqnhankfuuilcwvhgsopeqncafzsquya">
|
||||||
<header><b>{{ blackUser.name }}</b>(黒) vs <b>{{ whiteUser.name }}</b>(白)</header>
|
<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">
|
<div style="overflow: hidden; line-height: 28px;">
|
||||||
<p class="turn" v-if="!iAmPlayer && !game.isEnded">{{ '%i18n:common.reversi.turn-of%'.replace('{}', turnUser.name) }}<mk-ellipsis/></p>
|
<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('{}', turnUser.name) }}</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="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="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">
|
<p class="result" v-if="game.isEnded && logPos == logs.length">
|
||||||
<template v-if="game.winner"><b>{{ game.winner.name }}</b>の勝ち{{ game.settings.isLlotheo ? ' (ロセオ)' : '' }}</template>
|
<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>
|
<template v-else>%i18n:common.reversi.drawn%</template>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="board">
|
<div class="board">
|
||||||
<div class="labels-x" v-if="this.$store.state.settings.reversiBoardLabels">
|
<div class="labels-x" v-if="this.$store.state.settings.games.reversi.showBoardLabels">
|
||||||
<span v-for="i in game.settings.map[0].length">{{ String.fromCharCode(64 + i) }}</span>
|
<span v-for="i in game.settings.map[0].length">{{ String.fromCharCode(64 + i) }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex">
|
<div class="flex">
|
||||||
<div class="labels-y" v-if="this.$store.state.settings.reversiBoardLabels">
|
<div class="labels-y" v-if="this.$store.state.settings.games.reversi.showBoardLabels">
|
||||||
<div v-for="i in game.settings.map.length">{{ i }}</div>
|
<div v-for="i in game.settings.map.length">{{ i }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="cells" :style="cellsStyle">
|
<div class="cells" :style="cellsStyle">
|
||||||
@@ -26,20 +30,24 @@
|
|||||||
: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 }"
|
: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)"
|
@click="set(i)"
|
||||||
:title="`${String.fromCharCode(65 + o.transformPosToXy(i)[0])}${o.transformPosToXy(i)[1] + 1}`">
|
: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 === true" :src="blackUser.avatarUrl" alt="black" :class="{ contrast: $store.state.settings.games.reversi.useContrastStones }">
|
||||||
<img v-if="stone === false" :src="whiteUser.avatarUrl" alt="">
|
<img v-if="stone === false" :src="whiteUser.avatarUrl" alt="white" :class="{ contrast: $store.state.settings.games.reversi.useContrastStones }">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="labels-y" v-if="this.$store.state.settings.reversiBoardLabels">
|
<div class="labels-y" v-if="this.$store.state.settings.games.reversi.showBoardLabels">
|
||||||
<div v-for="i in game.settings.map.length">{{ i }}</div>
|
<div v-for="i in game.settings.map.length">{{ i }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="labels-x" v-if="this.$store.state.settings.reversiBoardLabels">
|
<div class="labels-x" v-if="this.$store.state.settings.games.reversi.showBoardLabels">
|
||||||
<span v-for="i in game.settings.map[0].length">{{ String.fromCharCode(64 + i) }}</span>
|
<span v-for="i in game.settings.map[0].length">{{ String.fromCharCode(64 + i) }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p class="status"><b>{{ logPos }}ターン目</b> 黒:{{ o.blackCount }} 白:{{ o.whiteCount }} 合計:{{ o.blackCount + o.whiteCount }}</p>
|
<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">
|
<div class="player" v-if="game.isEnded">
|
||||||
<el-button-group>
|
<el-button-group>
|
||||||
@@ -52,6 +60,12 @@
|
|||||||
<el-button type="primary" @click="logPos = logs.length" :disabled="logPos == logs.length">%fa:angle-double-right%</el-button>
|
<el-button type="primary" @click="logPos = logs.length" :disabled="logPos == logs.length">%fa:angle-double-right%</el-button>
|
||||||
</el-button-group>
|
</el-button-group>
|
||||||
</div>
|
</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>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -62,7 +76,20 @@ import Reversi, { Color } from '../../../../../../../games/reversi/core';
|
|||||||
import { url } from '../../../../../config';
|
import { url } from '../../../../../config';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
props: ['initGame', 'connection'],
|
props: {
|
||||||
|
initGame: {
|
||||||
|
type: Object,
|
||||||
|
require: true
|
||||||
|
},
|
||||||
|
connection: {
|
||||||
|
type: Object,
|
||||||
|
require: true
|
||||||
|
},
|
||||||
|
selfNav: {
|
||||||
|
type: Boolean,
|
||||||
|
require: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@@ -79,22 +106,27 @@ export default Vue.extend({
|
|||||||
if (!this.$store.getters.isSignedIn) return false;
|
if (!this.$store.getters.isSignedIn) return false;
|
||||||
return this.game.user1Id == this.$store.state.i.id || this.game.user2Id == this.$store.state.i.id;
|
return this.game.user1Id == this.$store.state.i.id || this.game.user2Id == this.$store.state.i.id;
|
||||||
},
|
},
|
||||||
|
|
||||||
myColor(): Color {
|
myColor(): Color {
|
||||||
if (!this.iAmPlayer) return null;
|
if (!this.iAmPlayer) return null;
|
||||||
if (this.game.user1Id == this.$store.state.i.id && this.game.black == 1) return true;
|
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;
|
if (this.game.user2Id == this.$store.state.i.id && this.game.black == 2) return true;
|
||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
|
|
||||||
opColor(): Color {
|
opColor(): Color {
|
||||||
if (!this.iAmPlayer) return null;
|
if (!this.iAmPlayer) return null;
|
||||||
return this.myColor === true ? false : true;
|
return this.myColor === true ? false : true;
|
||||||
},
|
},
|
||||||
|
|
||||||
blackUser(): any {
|
blackUser(): any {
|
||||||
return this.game.black == 1 ? this.game.user1 : this.game.user2;
|
return this.game.black == 1 ? this.game.user1 : this.game.user2;
|
||||||
},
|
},
|
||||||
|
|
||||||
whiteUser(): any {
|
whiteUser(): any {
|
||||||
return this.game.black == 1 ? this.game.user2 : this.game.user1;
|
return this.game.black == 1 ? this.game.user2 : this.game.user1;
|
||||||
},
|
},
|
||||||
|
|
||||||
turnUser(): any {
|
turnUser(): any {
|
||||||
if (this.o.turn === true) {
|
if (this.o.turn === true) {
|
||||||
return this.game.black == 1 ? this.game.user1 : this.game.user2;
|
return this.game.black == 1 ? this.game.user1 : this.game.user2;
|
||||||
@@ -104,14 +136,17 @@ export default Vue.extend({
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
isMyTurn(): boolean {
|
isMyTurn(): boolean {
|
||||||
if (this.turnUser == null) return null;
|
if (!this.iAmPlayer) return false;
|
||||||
|
if (this.turnUser == null) return false;
|
||||||
return this.turnUser.id == this.$store.state.i.id;
|
return this.turnUser.id == this.$store.state.i.id;
|
||||||
},
|
},
|
||||||
|
|
||||||
cellsStyle(): any {
|
cellsStyle(): any {
|
||||||
return {
|
return {
|
||||||
'grid-template-rows': `repeat(${ this.game.settings.map.length }, 1fr)`,
|
'grid-template-rows': `repeat(${this.game.settings.map.length}, 1fr)`,
|
||||||
'grid-template-columns': `repeat(${ this.game.settings.map[0].length }, 1fr)`
|
'grid-template-columns': `repeat(${this.game.settings.map[0].length}, 1fr)`
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -124,11 +159,9 @@ export default Vue.extend({
|
|||||||
canPutEverywhere: this.game.settings.canPutEverywhere,
|
canPutEverywhere: this.game.settings.canPutEverywhere,
|
||||||
loopedBoard: this.game.settings.loopedBoard
|
loopedBoard: this.game.settings.loopedBoard
|
||||||
});
|
});
|
||||||
this.logs.forEach((log, i) => {
|
for (const log of this.logs.slice(0, v)) {
|
||||||
if (i < v) {
|
this.o.put(log.color, log.pos);
|
||||||
this.o.put(log.color, log.pos);
|
}
|
||||||
}
|
|
||||||
});
|
|
||||||
this.$forceUpdate();
|
this.$forceUpdate();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -164,11 +197,13 @@ export default Vue.extend({
|
|||||||
mounted() {
|
mounted() {
|
||||||
this.connection.on('set', this.onSet);
|
this.connection.on('set', this.onSet);
|
||||||
this.connection.on('rescue', this.onRescue);
|
this.connection.on('rescue', this.onRescue);
|
||||||
|
this.connection.on('ended', this.onEnded);
|
||||||
},
|
},
|
||||||
|
|
||||||
beforeDestroy() {
|
beforeDestroy() {
|
||||||
this.connection.off('set', this.onSet);
|
this.connection.off('set', this.onSet);
|
||||||
this.connection.off('rescue', this.onRescue);
|
this.connection.off('rescue', this.onRescue);
|
||||||
|
this.connection.off('ended', this.onEnded);
|
||||||
|
|
||||||
clearInterval(this.pollingClock);
|
clearInterval(this.pollingClock);
|
||||||
},
|
},
|
||||||
@@ -214,6 +249,10 @@ export default Vue.extend({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
onEnded(x) {
|
||||||
|
this.game = x.game;
|
||||||
|
},
|
||||||
|
|
||||||
checkEnd() {
|
checkEnd() {
|
||||||
this.game.isEnded = this.o.isEnded;
|
this.game.isEnded = this.o.isEnded;
|
||||||
if (this.game.isEnded) {
|
if (this.game.isEnded) {
|
||||||
@@ -249,6 +288,16 @@ export default Vue.extend({
|
|||||||
|
|
||||||
this.checkEnd();
|
this.checkEnd();
|
||||||
this.$forceUpdate();
|
this.$forceUpdate();
|
||||||
|
},
|
||||||
|
|
||||||
|
surrender() {
|
||||||
|
(this as any).api('games/reversi/games/surrender', {
|
||||||
|
gameId: this.game.id
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
goIndex() {
|
||||||
|
this.$emit('go-index');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -257,12 +306,23 @@ export default Vue.extend({
|
|||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
@import '~const.styl'
|
@import '~const.styl'
|
||||||
|
|
||||||
.root
|
root(isDark)
|
||||||
text-align center
|
text-align center
|
||||||
|
|
||||||
|
> .go-index
|
||||||
|
position absolute
|
||||||
|
top 0
|
||||||
|
left 0
|
||||||
|
z-index 1
|
||||||
|
width 42px
|
||||||
|
height 42px
|
||||||
|
|
||||||
> header
|
> header
|
||||||
padding 8px
|
padding 8px
|
||||||
border-bottom dashed 1px #c4cdd4
|
border-bottom dashed 1px isDark ? #4c5761 : #c4cdd4
|
||||||
|
|
||||||
|
a
|
||||||
|
color inherit
|
||||||
|
|
||||||
> .board
|
> .board
|
||||||
width calc(100% - 16px)
|
width calc(100% - 16px)
|
||||||
@@ -326,16 +386,16 @@ export default Vue.extend({
|
|||||||
user-select none
|
user-select none
|
||||||
|
|
||||||
&.empty
|
&.empty
|
||||||
border solid 2px #eee
|
border solid 2px isDark ? #51595f : #eee
|
||||||
|
|
||||||
&.empty.can
|
&.empty.can
|
||||||
background #eee
|
background isDark ? #51595f : #eee
|
||||||
|
|
||||||
&.empty.myTurn
|
&.empty.myTurn
|
||||||
border-color #ddd
|
border-color isDark ? #6a767f : #ddd
|
||||||
|
|
||||||
&.can
|
&.can
|
||||||
background #eee
|
background isDark ? #51595f : #eee
|
||||||
cursor pointer
|
cursor pointer
|
||||||
|
|
||||||
&:hover
|
&:hover
|
||||||
@@ -349,7 +409,7 @@ export default Vue.extend({
|
|||||||
box-shadow 0 0 0 4px rgba($theme-color, 0.7)
|
box-shadow 0 0 0 4px rgba($theme-color, 0.7)
|
||||||
|
|
||||||
&.isEnded
|
&.isEnded
|
||||||
border-color #ddd
|
border-color isDark ? #6a767f : #ddd
|
||||||
|
|
||||||
&.none
|
&.none
|
||||||
border-color transparent !important
|
border-color transparent !important
|
||||||
@@ -359,6 +419,13 @@ export default Vue.extend({
|
|||||||
width 100%
|
width 100%
|
||||||
height 100%
|
height 100%
|
||||||
|
|
||||||
|
&.contrast
|
||||||
|
&[alt="black"]
|
||||||
|
filter brightness(.5)
|
||||||
|
|
||||||
|
&[alt="white"]
|
||||||
|
filter brightness(2)
|
||||||
|
|
||||||
> .graph
|
> .graph
|
||||||
display grid
|
display grid
|
||||||
grid-template-columns repeat(61, 1fr)
|
grid-template-columns repeat(61, 1fr)
|
||||||
@@ -380,6 +447,9 @@ export default Vue.extend({
|
|||||||
margin 0
|
margin 0
|
||||||
padding 16px 0
|
padding 16px 0
|
||||||
|
|
||||||
|
> .actions
|
||||||
|
padding-bottom 16px
|
||||||
|
|
||||||
> .player
|
> .player
|
||||||
padding-bottom 32px
|
padding-bottom 32px
|
||||||
|
|
||||||
@@ -387,4 +457,11 @@ export default Vue.extend({
|
|||||||
display inline-block
|
display inline-block
|
||||||
margin 0 8px
|
margin 0 8px
|
||||||
min-width 70px
|
min-width 70px
|
||||||
|
|
||||||
|
.xqnhankfuuilcwvhgsopeqncafzsquya[data-darkmode]
|
||||||
|
root(true)
|
||||||
|
|
||||||
|
.xqnhankfuuilcwvhgsopeqncafzsquya:not([data-darkmode])
|
||||||
|
root(false)
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<x-room v-if="!g.isStarted" :game="g" :connection="connection"/>
|
<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>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -16,7 +16,16 @@ export default Vue.extend({
|
|||||||
XGame,
|
XGame,
|
||||||
XRoom
|
XRoom
|
||||||
},
|
},
|
||||||
props: ['game'],
|
props: {
|
||||||
|
game: {
|
||||||
|
type: Object,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
selfNav: {
|
||||||
|
type: Boolean,
|
||||||
|
require: true
|
||||||
|
}
|
||||||
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
connection: null,
|
connection: null,
|
||||||
@@ -36,6 +45,9 @@ export default Vue.extend({
|
|||||||
onStarted(game) {
|
onStarted(game) {
|
||||||
Object.assign(this.g, game);
|
Object.assign(this.g, game);
|
||||||
this.$forceUpdate();
|
this.$forceUpdate();
|
||||||
|
},
|
||||||
|
goIndex() {
|
||||||
|
this.$emit('go-index');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -0,0 +1,256 @@
|
|||||||
|
<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>
|
||||||
|
<mk-time :time="g.createdAt" />
|
||||||
|
</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>
|
||||||
|
<mk-time :time="g.createdAt" />
|
||||||
|
</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>
|
||||||
@@ -1,92 +1,118 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="root">
|
<div class="urbixznjwwuukfsckrwzwsqzsxornqij">
|
||||||
<header><b>{{ game.user1.name }}</b> vs <b>{{ game.user2.name }}</b></header>
|
<header><b>{{ game.user1 | userName }}</b> vs <b>{{ game.user2 | userName }}</b></header>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<p>ゲームの設定</p>
|
<p>%i18n:@settings-of-the-game%</p>
|
||||||
|
|
||||||
<el-card class="map">
|
<div class="card map">
|
||||||
<div slot="header">
|
<header>
|
||||||
<el-select :class="$style.mapSelect" v-model="mapName" placeholder="マップを選択" @change="onMapChange">
|
<select v-model="mapName" placeholder="%i18n:@choose-map%" @change="onMapChange">
|
||||||
<el-option label="ランダム" :value="null"/>
|
<option label="-Custom-" :value="mapName" v-if="mapName == '-Custom-'"/>
|
||||||
<el-option-group v-for="c in mapCategories" :key="c" :label="c">
|
<option label="%i18n:@random%" :value="null"/>
|
||||||
<el-option v-for="m in maps" v-if="m.category == c" :key="m.name" :label="m.name" :value="m.name">
|
<optgroup v-for="c in mapCategories" :key="c" :label="c">
|
||||||
<span style="float: left">{{ m.name }}</span>
|
<option v-for="m in maps" v-if="m.category == c" :key="m.name" :label="m.name" :value="m.name">{{ m.name }}</option>
|
||||||
<span style="float: right; color: #8492a6; font-size: 13px" v-if="m.author">(by <i>{{ m.author }}</i>)</span>
|
</optgroup>
|
||||||
</el-option>
|
</select>
|
||||||
</el-option-group>
|
</header>
|
||||||
</el-select>
|
|
||||||
</div>
|
<div>
|
||||||
<div :class="$style.board" v-if="game.settings.map != null" :style="{ 'grid-template-rows': `repeat(${ game.settings.map.length }, 1fr)`, 'grid-template-columns': `repeat(${ game.settings.map[0].length }, 1fr)` }">
|
<div class="random" v-if="game.settings.map == null">%fa:dice%</div>
|
||||||
<div v-for="(x, i) in game.settings.map.join('')"
|
<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)` }">
|
||||||
:data-none="x == ' '"
|
<div v-for="(x, i) in game.settings.map.join('')"
|
||||||
@click="onPixelClick(i, x)"
|
:data-none="x == ' '"
|
||||||
>
|
@click="onPixelClick(i, x)">
|
||||||
<template v-if="x == 'b'">%fa:circle%</template>
|
<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'">%fa:circle R%</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>
|
||||||
</el-card>
|
</div>
|
||||||
|
|
||||||
<el-card class="bw">
|
<div class="card">
|
||||||
<div slot="header">
|
<header>
|
||||||
<span>先手/後手</span>
|
<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>
|
||||||
<el-radio v-model="game.settings.bw" label="random" @change="updateSettings">ランダム</el-radio>
|
</div>
|
||||||
<el-radio v-model="game.settings.bw" :label="1" @change="updateSettings">{{ game.user1.name }}が黒</el-radio>
|
|
||||||
<el-radio v-model="game.settings.bw" :label="2" @change="updateSettings">{{ game.user2.name }}が黒</el-radio>
|
|
||||||
</el-card>
|
|
||||||
|
|
||||||
<el-card class="rules">
|
<div class="card">
|
||||||
<div slot="header">
|
<header>
|
||||||
<span>ルール</span>
|
<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>
|
||||||
<mk-switch v-model="game.settings.isLlotheo" @change="updateSettings" text="石の少ない方が勝ち(ロセオ)"/>
|
</div>
|
||||||
<mk-switch v-model="game.settings.loopedBoard" @change="updateSettings" text="ループマップ"/>
|
|
||||||
<mk-switch v-model="game.settings.canPutEverywhere" @change="updateSettings" text="どこでも置けるモード"/>
|
|
||||||
</el-card>
|
|
||||||
|
|
||||||
<el-card class="bot-form" v-if="form">
|
<div class="card form" v-if="form">
|
||||||
<div slot="header">
|
<header>
|
||||||
<span>Botの設定</span>
|
<span>%i18n:@settings-of-the-bot%</span>
|
||||||
</div>
|
</header>
|
||||||
<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 == 'button'" v-model="item.value" :key="item.id" :text="item.label" @change="onChangeForm($event, item)">{{ item.desc || '' }}</mk-switch>
|
|
||||||
|
|
||||||
<el-card v-if="item.type == 'radio'" :key="item.id">
|
<div>
|
||||||
<div slot="header">
|
<el-alert v-for="message in messages"
|
||||||
<span>{{ item.label }}</span>
|
: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>
|
||||||
<el-radio v-for="(r, i) in item.items" :key="item.id + ':' + i" v-model="item.value" :label="r.value" @change="onChangeForm($event, item)">{{ r.label }}</el-radio>
|
|
||||||
</el-card>
|
|
||||||
|
|
||||||
<el-card v-if="item.type == 'textbox'" :key="item.id">
|
<div class="card" v-if="item.type == 'slider'" :key="item.id">
|
||||||
<div slot="header">
|
<header>
|
||||||
<span>{{ item.label }}</span>
|
<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>
|
||||||
<el-input v-model="item.value" @change="onChangeForm($event, item)"/>
|
|
||||||
</el-card>
|
<div class="card" v-if="item.type == 'textbox'" :key="item.id">
|
||||||
</template>
|
<header>
|
||||||
</el-card>
|
<span>{{ item.label }}</span>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<el-input v-model="item.value" @change="onChangeForm(item)"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<footer>
|
<footer>
|
||||||
<p class="status">
|
<p class="status">
|
||||||
<template v-if="isAccepted && isOpAccepted">ゲームは数秒後に開始されます<mk-ellipsis/></template>
|
<template v-if="isAccepted && isOpAccepted">%i18n:@this-game-is-started-soon%<mk-ellipsis/></template>
|
||||||
<template v-if="isAccepted && !isOpAccepted">相手の準備が完了するのを待っています<mk-ellipsis/></template>
|
<template v-if="isAccepted && !isOpAccepted">%i18n:@waiting-for-other%<mk-ellipsis/></template>
|
||||||
<template v-if="!isAccepted && isOpAccepted">あなたの準備が完了するのを待っています</template>
|
<template v-if="!isAccepted && isOpAccepted">%i18n:@waiting-for-me%</template>
|
||||||
<template v-if="!isAccepted && !isOpAccepted">準備中<mk-ellipsis/></template>
|
<template v-if="!isAccepted && !isOpAccepted">%i18n:@waiting-for-both%<mk-ellipsis/></template>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="actions">
|
<div class="actions">
|
||||||
<el-button @click="exit">キャンセル</el-button>
|
<form-button @click="exit">%i18n:@cancel%</form-button>
|
||||||
<el-button type="primary" @click="accept" v-if="!isAccepted">準備完了</el-button>
|
<form-button primary @click="accept" v-if="!isAccepted">%i18n:@ready%</form-button>
|
||||||
<el-button type="primary" @click="cancel" v-if="isAccepted">準備続行</el-button>
|
<form-button primary @click="cancel" v-if="isAccepted">%i18n:@cancel-ready%</form-button>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
</div>
|
</div>
|
||||||
@@ -194,19 +220,19 @@ export default Vue.extend({
|
|||||||
this.messages.unshift(x.message);
|
this.messages.unshift(x.message);
|
||||||
},
|
},
|
||||||
|
|
||||||
onChangeForm(v, item) {
|
onChangeForm(item) {
|
||||||
this.connection.send({
|
this.connection.send({
|
||||||
type: 'update-form',
|
type: 'update-form',
|
||||||
id: item.id,
|
id: item.id,
|
||||||
value: v
|
value: item.value
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
onMapChange(v) {
|
onMapChange() {
|
||||||
if (v == null) {
|
if (this.mapName == null) {
|
||||||
this.game.settings.map = null;
|
this.game.settings.map = null;
|
||||||
} else {
|
} else {
|
||||||
this.game.settings.map = Object.values(maps).find(x => x.name == v).data;
|
this.game.settings.map = Object.values(maps).find(x => x.name == this.mapName).data;
|
||||||
}
|
}
|
||||||
this.$forceUpdate();
|
this.$forceUpdate();
|
||||||
this.updateSettings();
|
this.updateSettings();
|
||||||
@@ -233,9 +259,9 @@ export default Vue.extend({
|
|||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
@import '~const.styl'
|
@import '~const.styl'
|
||||||
|
|
||||||
.root
|
root(isDark)
|
||||||
text-align center
|
text-align center
|
||||||
background #f9f9f9
|
background isDark ? #191b22 : #f9f9f9
|
||||||
|
|
||||||
> header
|
> header
|
||||||
padding 8px
|
padding 8px
|
||||||
@@ -244,54 +270,98 @@ export default Vue.extend({
|
|||||||
> div
|
> div
|
||||||
padding 0 16px
|
padding 0 16px
|
||||||
|
|
||||||
> .map
|
> .card
|
||||||
> .bw
|
|
||||||
> .rules
|
|
||||||
> .bot-form
|
|
||||||
max-width 400px
|
|
||||||
margin 0 auto 16px auto
|
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
|
> footer
|
||||||
position sticky
|
position sticky
|
||||||
bottom 0
|
bottom 0
|
||||||
padding 16px
|
padding 16px
|
||||||
background rgba(255, 255, 255, 0.9)
|
background rgba(isDark ? #191b22 : #fff, 0.9)
|
||||||
border-top solid 1px #c4cdd4
|
border-top solid 1px isDark ? #606266 : #c4cdd4
|
||||||
|
|
||||||
> .status
|
> .status
|
||||||
margin 0 0 16px 0
|
margin 0 0 16px 0
|
||||||
</style>
|
|
||||||
|
|
||||||
<style lang="stylus" module>
|
.urbixznjwwuukfsckrwzwsqzsxornqij[data-darkmode]
|
||||||
.mapSelect
|
root(true)
|
||||||
width 100%
|
|
||||||
|
|
||||||
.board
|
.urbixznjwwuukfsckrwzwsqzsxornqij:not([data-darkmode])
|
||||||
display grid
|
root(false)
|
||||||
grid-gap 4px
|
|
||||||
width 300px
|
|
||||||
height 300px
|
|
||||||
margin 0 auto
|
|
||||||
|
|
||||||
> div
|
|
||||||
background transparent
|
|
||||||
border solid 2px #ddd
|
|
||||||
border-radius 6px
|
|
||||||
overflow hidden
|
|
||||||
cursor pointer
|
|
||||||
|
|
||||||
*
|
|
||||||
pointer-events none
|
|
||||||
user-select none
|
|
||||||
width 100%
|
|
||||||
height 100%
|
|
||||||
|
|
||||||
&[data-none]
|
|
||||||
border-color transparent
|
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style lang="stylus">
|
|
||||||
.el-alert__content
|
|
||||||
position initial !important
|
|
||||||
</style>
|
|
||||||
|
|||||||
@@ -1,60 +1,19 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="mk-reversi">
|
<div class="vchtoekanapleubgzioubdtmlkribzfd">
|
||||||
<div v-if="game">
|
<div v-if="game">
|
||||||
<x-gameroom :game="game"/>
|
<x-gameroom :game="game" :self-nav="selfNav" @go-index="goIndex"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="matching" v-else-if="matching">
|
<div class="matching" v-else-if="matching">
|
||||||
<h1><b>{{ matching.name }}</b>を待っています<mk-ellipsis/></h1>
|
<h1>{{ '%i18n:@matching.waiting-for%'.split('{}')[0] }}<b>{{ matching | userName }}</b>{{ '%i18n:@matching.waiting-for%'.split('{}')[1] }}<mk-ellipsis/></h1>
|
||||||
<div class="cancel">
|
<div class="cancel">
|
||||||
<el-button round @click="cancel">キャンセル</el-button>
|
<form-button round @click="cancel">%i18n:@matching.cancel%</form-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div v-else-if="gameId">
|
||||||
|
...
|
||||||
|
</div>
|
||||||
<div class="index" v-else>
|
<div class="index" v-else>
|
||||||
<h1>Misskey Reversi</h1>
|
<x-index @go="nav" @matching="onMatching"/>
|
||||||
<p>他のMisskeyユーザーとリバーシで対戦しよう</p>
|
|
||||||
<div class="play">
|
|
||||||
<el-button round>フリーマッチ(準備中)</el-button>
|
|
||||||
<el-button type="primary" round @click="match">指名</el-button>
|
|
||||||
<details>
|
|
||||||
<summary>遊び方</summary>
|
|
||||||
<div>
|
|
||||||
<p>リバーシは、相手と交互に石をボードに置いてゆき、相手の石を挟んでひっくり返しながら、最終的に残った石が多い方が勝ちというボードゲームです。</p>
|
|
||||||
<dl>
|
|
||||||
<dt><b>フリーマッチ</b></dt>
|
|
||||||
<dd>ランダムなユーザーと対戦するモードです。</dd>
|
|
||||||
<dt><b>指名</b></dt>
|
|
||||||
<dd>指定したユーザーと対戦するモードです。</dd>
|
|
||||||
</dl>
|
|
||||||
</div>
|
|
||||||
</details>
|
|
||||||
</div>
|
|
||||||
<section v-if="invitations.length > 0">
|
|
||||||
<h2>対局の招待があります!:</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.name }}</b></span>
|
|
||||||
<span class="username">@{{ i.parent.username }}</span>
|
|
||||||
<mk-time :time="i.createdAt"/>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<section v-if="myGames.length > 0">
|
|
||||||
<h2>自分の対局</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.name }}</b> vs <b>{{ g.user2.name }}</b></span>
|
|
||||||
<span class="state">{{ g.isEnded ? '終了' : '進行中' }}</span>
|
|
||||||
</a>
|
|
||||||
</section>
|
|
||||||
<section v-if="games.length > 0">
|
|
||||||
<h2>みんなの対局</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.name }}</b> vs <b>{{ g.user2.name }}</b></span>
|
|
||||||
<span class="state">{{ g.isEnded ? '終了' : '進行中' }}</span>
|
|
||||||
</a>
|
|
||||||
</section>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -62,122 +21,135 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import XGameroom from './reversi.gameroom.vue';
|
import XGameroom from './reversi.gameroom.vue';
|
||||||
|
import XIndex from './reversi.index.vue';
|
||||||
|
import Progress from '../../../../scripts/loading';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
components: {
|
components: {
|
||||||
XGameroom
|
XGameroom,
|
||||||
|
XIndex
|
||||||
},
|
},
|
||||||
props: ['initGame'],
|
|
||||||
|
props: {
|
||||||
|
gameId: {
|
||||||
|
type: String,
|
||||||
|
required: false
|
||||||
|
},
|
||||||
|
selfNav: {
|
||||||
|
type: Boolean,
|
||||||
|
require: false,
|
||||||
|
default: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
game: null,
|
game: null,
|
||||||
games: [],
|
|
||||||
gamesFetching: true,
|
|
||||||
gamesMoreFetching: false,
|
|
||||||
myGames: [],
|
|
||||||
matching: null,
|
matching: null,
|
||||||
invitations: [],
|
|
||||||
connection: null,
|
connection: null,
|
||||||
connectionId: null,
|
connectionId: null,
|
||||||
pingClock: null
|
pingClock: null
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
watch: {
|
watch: {
|
||||||
game(g) {
|
game() {
|
||||||
this.$emit('gamed', g);
|
this.$emit('gamed', this.game);
|
||||||
}
|
},
|
||||||
},
|
|
||||||
created() {
|
gameId() {
|
||||||
if (this.initGame) {
|
this.fetch();
|
||||||
this.game = this.initGame;
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
mounted() {
|
mounted() {
|
||||||
this.connection = (this as any).os.streams.reversiStream.getConnection();
|
this.fetch();
|
||||||
this.connectionId = (this as any).os.streams.reversiStream.use();
|
|
||||||
|
|
||||||
this.connection.on('matched', this.onMatched);
|
if (this.$store.getters.isSignedIn) {
|
||||||
this.connection.on('invited', this.onInvited);
|
this.connection = (this as any).os.streams.reversiStream.getConnection();
|
||||||
|
this.connectionId = (this as any).os.streams.reversiStream.use();
|
||||||
|
|
||||||
(this as any).api('games/reversi/games', {
|
this.connection.on('matched', this.onMatched);
|
||||||
my: true
|
|
||||||
}).then(games => {
|
|
||||||
this.myGames = games;
|
|
||||||
});
|
|
||||||
|
|
||||||
(this as any).api('games/reversi/games').then(games => {
|
this.pingClock = setInterval(() => {
|
||||||
this.games = games;
|
if (this.matching) {
|
||||||
this.gamesFetching = false;
|
this.connection.send({
|
||||||
});
|
type: 'ping',
|
||||||
|
id: this.matching.id
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}, 3000);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
(this as any).api('games/reversi/invitations').then(invitations => {
|
beforeDestroy() {
|
||||||
this.invitations = this.invitations.concat(invitations);
|
if (this.connection) {
|
||||||
});
|
this.connection.off('matched', this.onMatched);
|
||||||
|
(this as any).os.streams.reversiStream.dispose(this.connectionId);
|
||||||
|
|
||||||
this.pingClock = setInterval(() => {
|
clearInterval(this.pingClock);
|
||||||
if (this.matching) {
|
}
|
||||||
this.connection.send({
|
},
|
||||||
type: 'ping',
|
|
||||||
id: this.matching.id
|
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();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}, 3000);
|
},
|
||||||
},
|
|
||||||
beforeDestroy() {
|
|
||||||
this.connection.off('matched', this.onMatched);
|
|
||||||
this.connection.off('invited', this.onInvited);
|
|
||||||
(this as any).os.streams.reversiStream.dispose(this.connectionId);
|
|
||||||
|
|
||||||
clearInterval(this.pingClock);
|
async nav(game, actualNav = true) {
|
||||||
},
|
if (this.selfNav) {
|
||||||
methods: {
|
// 受け取ったゲーム情報が省略されたものなら完全な情報を取得する
|
||||||
go(game) {
|
if (game != null && (game.settings == null || game.settings.map == null)) {
|
||||||
(this as any).api('games/reversi/games/show', {
|
game = await (this as any).api('games/reversi/games/show', {
|
||||||
gameId: game.id
|
gameId: game.id
|
||||||
}).then(game => {
|
|
||||||
this.matching = null;
|
|
||||||
this.game = game;
|
|
||||||
});
|
|
||||||
},
|
|
||||||
match() {
|
|
||||||
(this as any).apis.input({
|
|
||||||
title: 'ユーザー名を入力してください'
|
|
||||||
}).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.matching = user;
|
|
||||||
} else {
|
|
||||||
this.game = res;
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
});
|
}
|
||||||
});
|
|
||||||
|
this.game = game;
|
||||||
|
} else {
|
||||||
|
this.$emit('nav', game, actualNav);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
onMatching(user) {
|
||||||
|
this.matching = user;
|
||||||
|
},
|
||||||
|
|
||||||
cancel() {
|
cancel() {
|
||||||
this.matching = null;
|
this.matching = null;
|
||||||
(this as any).api('games/reversi/match/cancel');
|
(this as any).api('games/reversi/match/cancel');
|
||||||
},
|
},
|
||||||
|
|
||||||
accept(invitation) {
|
accept(invitation) {
|
||||||
(this as any).api('games/reversi/match', {
|
(this as any).api('games/reversi/match', {
|
||||||
userId: invitation.parent.id
|
userId: invitation.parent.id
|
||||||
}).then(game => {
|
}).then(game => {
|
||||||
if (game) {
|
if (game) {
|
||||||
this.matching = null;
|
this.matching = null;
|
||||||
this.game = game;
|
|
||||||
|
this.nav(game);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
onMatched(game) {
|
onMatched(game) {
|
||||||
this.matching = null;
|
this.matching = null;
|
||||||
this.game = game;
|
this.game = game;
|
||||||
|
this.nav(game, false);
|
||||||
},
|
},
|
||||||
onInvited(invite) {
|
|
||||||
this.invitations.unshift(invite);
|
goIndex() {
|
||||||
|
this.nav(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -186,9 +158,9 @@ export default Vue.extend({
|
|||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
@import '~const.styl'
|
@import '~const.styl'
|
||||||
|
|
||||||
.mk-reversi
|
root(isDark)
|
||||||
color #677f84
|
color isDark ? #fff : #677f84
|
||||||
background #fff
|
background isDark ? #191b22 : #fff
|
||||||
|
|
||||||
> .matching
|
> .matching
|
||||||
> h1
|
> h1
|
||||||
@@ -205,109 +177,10 @@ export default Vue.extend({
|
|||||||
text-align center
|
text-align center
|
||||||
border-top dashed 1px #c4cdd4
|
border-top dashed 1px #c4cdd4
|
||||||
|
|
||||||
> .index
|
.vchtoekanapleubgzioubdtmlkribzfd[data-darkmode]
|
||||||
> h1
|
root(true)
|
||||||
margin 0
|
|
||||||
padding 24px
|
|
||||||
font-size 24px
|
|
||||||
text-align center
|
|
||||||
font-weight normal
|
|
||||||
color #fff
|
|
||||||
background linear-gradient(to bottom, #8bca3e, #d6cf31)
|
|
||||||
|
|
||||||
& + p
|
.vchtoekanapleubgzioubdtmlkribzfd:not([data-darkmode])
|
||||||
margin 0
|
root(false)
|
||||||
padding 12px
|
|
||||||
margin-bottom 12px
|
|
||||||
text-align center
|
|
||||||
font-size 14px
|
|
||||||
border-bottom solid 1px #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 #f5f5f5
|
|
||||||
border-radius 8px
|
|
||||||
|
|
||||||
> section
|
|
||||||
margin 0 auto
|
|
||||||
padding 0 16px 16px 16px
|
|
||||||
max-width 500px
|
|
||||||
border-top solid 1px #d3d9dc
|
|
||||||
|
|
||||||
> h2
|
|
||||||
margin 0
|
|
||||||
padding 16px 0 8px 0
|
|
||||||
font-size 16px
|
|
||||||
font-weight bold
|
|
||||||
|
|
||||||
.invitation
|
|
||||||
margin 8px 0
|
|
||||||
padding 8px
|
|
||||||
border solid 1px #e1e5e8
|
|
||||||
border-radius 6px
|
|
||||||
cursor pointer
|
|
||||||
|
|
||||||
*
|
|
||||||
pointer-events none
|
|
||||||
user-select none
|
|
||||||
|
|
||||||
&:focus
|
|
||||||
border-color $theme-color
|
|
||||||
|
|
||||||
&:hover
|
|
||||||
background #f5f5f5
|
|
||||||
|
|
||||||
&:active
|
|
||||||
background #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 #677f84
|
|
||||||
border solid 1px #e1e5e8
|
|
||||||
border-radius 6px
|
|
||||||
cursor pointer
|
|
||||||
|
|
||||||
*
|
|
||||||
pointer-events none
|
|
||||||
user-select none
|
|
||||||
|
|
||||||
&:focus
|
|
||||||
border-color $theme-color
|
|
||||||
|
|
||||||
&:hover
|
|
||||||
background #f5f5f5
|
|
||||||
|
|
||||||
&:active
|
|
||||||
background #eee
|
|
||||||
|
|
||||||
> .avatar
|
|
||||||
width 32px
|
|
||||||
height 32px
|
|
||||||
border-radius 100%
|
|
||||||
|
|
||||||
> span
|
|
||||||
margin 0 8px
|
|
||||||
line-height 32px
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
|
|
||||||
|
import tagCloud from './tag-cloud.vue';
|
||||||
|
import trends from './trends.vue';
|
||||||
import analogClock from './analog-clock.vue';
|
import analogClock from './analog-clock.vue';
|
||||||
import menu from './menu.vue';
|
import menu from './menu.vue';
|
||||||
import noteHeader from './note-header.vue';
|
import noteHeader from './note-header.vue';
|
||||||
@@ -37,7 +39,11 @@ import uiTextarea from './ui/textarea.vue';
|
|||||||
import uiSwitch from './ui/switch.vue';
|
import uiSwitch from './ui/switch.vue';
|
||||||
import uiRadio from './ui/radio.vue';
|
import uiRadio from './ui/radio.vue';
|
||||||
import uiSelect from './ui/select.vue';
|
import uiSelect from './ui/select.vue';
|
||||||
|
import formButton from './ui/form/button.vue';
|
||||||
|
import formRadio from './ui/form/radio.vue';
|
||||||
|
|
||||||
|
Vue.component('mk-tag-cloud', tagCloud);
|
||||||
|
Vue.component('mk-trends', trends);
|
||||||
Vue.component('mk-analog-clock', analogClock);
|
Vue.component('mk-analog-clock', analogClock);
|
||||||
Vue.component('mk-menu', menu);
|
Vue.component('mk-menu', menu);
|
||||||
Vue.component('mk-note-header', noteHeader);
|
Vue.component('mk-note-header', noteHeader);
|
||||||
@@ -75,3 +81,5 @@ Vue.component('ui-textarea', uiTextarea);
|
|||||||
Vue.component('ui-switch', uiSwitch);
|
Vue.component('ui-switch', uiSwitch);
|
||||||
Vue.component('ui-radio', uiRadio);
|
Vue.component('ui-radio', uiRadio);
|
||||||
Vue.component('ui-select', uiSelect);
|
Vue.component('ui-select', uiSelect);
|
||||||
|
Vue.component('form-button', formButton);
|
||||||
|
Vue.component('form-radio', formRadio);
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="mk-menu">
|
<div class="onchrpzrvnoruiaenfcqvccjfuupzzwv">
|
||||||
<div class="backdrop" ref="backdrop" @click="close"></div>
|
<div class="backdrop" ref="backdrop" @click="close"></div>
|
||||||
<div class="popover" :class="{ hukidasi }" ref="popover">
|
<div class="popover" :class="{ hukidasi }" ref="popover">
|
||||||
<template v-for="item in items">
|
<template v-for="item in items">
|
||||||
@@ -119,9 +119,10 @@ export default Vue.extend({
|
|||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
@import '~const.styl'
|
@import '~const.styl'
|
||||||
|
|
||||||
$border-color = rgba(27, 31, 35, 0.15)
|
root(isDark)
|
||||||
|
$bg-color = isDark ? #2c303c : #fff
|
||||||
|
$border-color = rgba(27, 31, 35, 0.15)
|
||||||
|
|
||||||
.mk-menu
|
|
||||||
position initial
|
position initial
|
||||||
|
|
||||||
> .backdrop
|
> .backdrop
|
||||||
@@ -131,14 +132,14 @@ $border-color = rgba(27, 31, 35, 0.15)
|
|||||||
z-index 10000
|
z-index 10000
|
||||||
width 100%
|
width 100%
|
||||||
height 100%
|
height 100%
|
||||||
background rgba(#000, 0.1)
|
background rgba(#000, isDark ? 0.5 : 0.1)
|
||||||
opacity 0
|
opacity 0
|
||||||
|
|
||||||
> .popover
|
> .popover
|
||||||
position absolute
|
position absolute
|
||||||
z-index 10001
|
z-index 10001
|
||||||
padding 8px 0
|
padding 8px 0
|
||||||
background #fff
|
background $bg-color
|
||||||
border 1px solid $border-color
|
border 1px solid $border-color
|
||||||
border-radius 4px
|
border-radius 4px
|
||||||
box-shadow 0 3px 12px rgba(27, 31, 35, 0.15)
|
box-shadow 0 3px 12px rgba(27, 31, 35, 0.15)
|
||||||
@@ -172,12 +173,13 @@ $border-color = rgba(27, 31, 35, 0.15)
|
|||||||
border-top solid $balloon-size transparent
|
border-top solid $balloon-size transparent
|
||||||
border-left solid $balloon-size transparent
|
border-left solid $balloon-size transparent
|
||||||
border-right solid $balloon-size transparent
|
border-right solid $balloon-size transparent
|
||||||
border-bottom solid $balloon-size #fff
|
border-bottom solid $balloon-size $bg-color
|
||||||
|
|
||||||
> button
|
> button
|
||||||
display block
|
display block
|
||||||
padding 8px 16px
|
padding 8px 16px
|
||||||
width 100%
|
width 100%
|
||||||
|
color isDark ? #d6dce2 : #111
|
||||||
|
|
||||||
&:hover
|
&:hover
|
||||||
color $theme-color-foreground
|
color $theme-color-foreground
|
||||||
@@ -191,6 +193,12 @@ $border-color = rgba(27, 31, 35, 0.15)
|
|||||||
> div
|
> div
|
||||||
margin 8px 0
|
margin 8px 0
|
||||||
height 1px
|
height 1px
|
||||||
background #eee
|
background isDark ? #1c2023 : #eee
|
||||||
|
|
||||||
|
.onchrpzrvnoruiaenfcqvccjfuupzzwv[data-darkmode]
|
||||||
|
root(true)
|
||||||
|
|
||||||
|
.onchrpzrvnoruiaenfcqvccjfuupzzwv:not([data-darkmode])
|
||||||
|
root(false)
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ export default Vue.extend({
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (items[0].kind == 'file') {
|
if (items[0].kind == 'file') {
|
||||||
alert('メッセージに添付できるのはひとつのファイルのみです');
|
alert('%i18n:only-one-file-attached%');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -105,7 +105,7 @@ export default Vue.extend({
|
|||||||
return;
|
return;
|
||||||
} else if (e.dataTransfer.files.length > 1) {
|
} else if (e.dataTransfer.files.length > 1) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
alert('メッセージに添付できるのはひとつのファイルのみです');
|
alert('%i18n:only-one-file-attached%');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -79,7 +79,8 @@ root(isDark)
|
|||||||
> .content
|
> .content
|
||||||
|
|
||||||
> .balloon
|
> .balloon
|
||||||
display block
|
display flex
|
||||||
|
align-items center
|
||||||
padding 0
|
padding 0
|
||||||
max-width calc(100% - 16px)
|
max-width calc(100% - 16px)
|
||||||
min-height 38px
|
min-height 38px
|
||||||
@@ -254,7 +255,7 @@ root(isDark)
|
|||||||
font-size 11px
|
font-size 11px
|
||||||
|
|
||||||
&[data-is-deleted]
|
&[data-is-deleted]
|
||||||
> .baloon
|
> .balloon
|
||||||
opacity 0.5
|
opacity 0.5
|
||||||
|
|
||||||
.message[data-darkmode]
|
.message[data-darkmode]
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
@dragover.prevent.stop="onDragover"
|
@dragover.prevent.stop="onDragover"
|
||||||
@drop.prevent.stop="onDrop"
|
@drop.prevent.stop="onDrop"
|
||||||
>
|
>
|
||||||
<div class="stream">
|
<div class="body">
|
||||||
<p class="init" v-if="init">%fa:spinner .spin%%i18n:common.loading%</p>
|
<p class="init" v-if="init">%fa:spinner .spin%%i18n:common.loading%</p>
|
||||||
<p class="empty" v-if="!init && messages.length == 0">%fa:info-circle%%i18n:@empty%</p>
|
<p class="empty" v-if="!init && messages.length == 0">%fa:info-circle%%i18n:@empty%</p>
|
||||||
<p class="no-history" v-if="!init && messages.length > 0 && !existMoreMessages">%fa:flag%%i18n:@no-history%</p>
|
<p class="no-history" v-if="!init && messages.length > 0 && !existMoreMessages">%fa:flag%%i18n:@no-history%</p>
|
||||||
@@ -61,7 +61,7 @@ export default Vue.extend({
|
|||||||
const date = new Date(message.createdAt).getDate();
|
const date = new Date(message.createdAt).getDate();
|
||||||
const month = new Date(message.createdAt).getMonth() + 1;
|
const month = new Date(message.createdAt).getMonth() + 1;
|
||||||
message._date = date;
|
message._date = date;
|
||||||
message._datetext = `${month}月 ${date}日`;
|
message._datetext = '%i18n:common.month-and-day%'.replace('{month}', month.toString()).replace('{day}', date.toString());
|
||||||
return message;
|
return message;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
@@ -77,6 +77,12 @@ export default Vue.extend({
|
|||||||
this.connection.on('message', this.onMessage);
|
this.connection.on('message', this.onMessage);
|
||||||
this.connection.on('read', this.onRead);
|
this.connection.on('read', this.onRead);
|
||||||
|
|
||||||
|
if (this.isNaked) {
|
||||||
|
window.addEventListener('scroll', this.onScroll, { passive: true });
|
||||||
|
} else {
|
||||||
|
this.$el.addEventListener('scroll', this.onScroll, { passive: true });
|
||||||
|
}
|
||||||
|
|
||||||
document.addEventListener('visibilitychange', this.onVisibilitychange);
|
document.addEventListener('visibilitychange', this.onVisibilitychange);
|
||||||
|
|
||||||
this.fetchMessages().then(() => {
|
this.fetchMessages().then(() => {
|
||||||
@@ -90,6 +96,12 @@ export default Vue.extend({
|
|||||||
this.connection.off('read', this.onRead);
|
this.connection.off('read', this.onRead);
|
||||||
this.connection.close();
|
this.connection.close();
|
||||||
|
|
||||||
|
if (this.isNaked) {
|
||||||
|
window.removeEventListener('scroll', this.onScroll);
|
||||||
|
} else {
|
||||||
|
this.$el.removeEventListener('scroll', this.onScroll);
|
||||||
|
}
|
||||||
|
|
||||||
document.removeEventListener('visibilitychange', this.onVisibilitychange);
|
document.removeEventListener('visibilitychange', this.onVisibilitychange);
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -111,7 +123,7 @@ export default Vue.extend({
|
|||||||
this.form.upload(e.dataTransfer.files[0]);
|
this.form.upload(e.dataTransfer.files[0]);
|
||||||
return;
|
return;
|
||||||
} else if (e.dataTransfer.files.length > 1) {
|
} else if (e.dataTransfer.files.length > 1) {
|
||||||
alert('メッセージに添付できるのはひとつのファイルのみです');
|
alert('%i18n:@only-one-file-attached%');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -226,6 +238,14 @@ export default Vue.extend({
|
|||||||
}, 4000);
|
}, 4000);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
onScroll() {
|
||||||
|
const el = this.isNaked ? window.document.documentElement : this.$el;
|
||||||
|
const current = el.scrollTop + el.clientHeight;
|
||||||
|
if (current > el.scrollHeight - 1) {
|
||||||
|
this.showIndicator = false;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
onVisibilitychange() {
|
onVisibilitychange() {
|
||||||
if (document.hidden) return;
|
if (document.hidden) return;
|
||||||
this.messages.forEach(message => {
|
this.messages.forEach(message => {
|
||||||
@@ -251,7 +271,7 @@ root(isDark)
|
|||||||
height 100%
|
height 100%
|
||||||
background isDark ? #191b22 : #fff
|
background isDark ? #191b22 : #fff
|
||||||
|
|
||||||
> .stream
|
> .body
|
||||||
width 100%
|
width 100%
|
||||||
max-width 600px
|
max-width 600px
|
||||||
margin 0 auto
|
margin 0 auto
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import * as emojilib from 'emojilib';
|
import * as emojilib from 'emojilib';
|
||||||
|
import { length } from 'stringz';
|
||||||
import parse from '../../../../../mfm/parse';
|
import parse from '../../../../../mfm/parse';
|
||||||
import getAcct from '../../../../../misc/acct/render';
|
import getAcct from '../../../../../misc/acct/render';
|
||||||
import { url } from '../../../config';
|
import { url } from '../../../config';
|
||||||
@@ -40,10 +41,13 @@ export default Vue.component('misskey-flavored-markdown', {
|
|||||||
ast = this.ast;
|
ast = this.ast;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let bigCount = 0;
|
||||||
|
let motionCount = 0;
|
||||||
|
|
||||||
// Parse ast to DOM
|
// Parse ast to DOM
|
||||||
const els = flatten(ast.map(token => {
|
const els = flatten(ast.map(token => {
|
||||||
switch (token.type) {
|
switch (token.type) {
|
||||||
case 'text':
|
case 'text': {
|
||||||
const text = token.content.replace(/(\r\n|\n|\r)/g, '\n');
|
const text = token.content.replace(/(\r\n|\n|\r)/g, '\n');
|
||||||
|
|
||||||
if (this.shouldBreak) {
|
if (this.shouldBreak) {
|
||||||
@@ -54,19 +58,52 @@ export default Vue.component('misskey-flavored-markdown', {
|
|||||||
} else {
|
} else {
|
||||||
return createElement('span', text.replace(/\n/g, ' '));
|
return createElement('span', text.replace(/\n/g, ' '));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
case 'bold':
|
case 'bold': {
|
||||||
return createElement('strong', token.bold);
|
return createElement('b', token.bold);
|
||||||
|
}
|
||||||
|
|
||||||
case 'url':
|
case 'big': {
|
||||||
|
bigCount++;
|
||||||
|
const isLong = length(token.big) > 10;
|
||||||
|
const isMany = bigCount > 3;
|
||||||
|
return (createElement as any)('strong', {
|
||||||
|
attrs: {
|
||||||
|
style: `display: inline-block; font-size: ${ isMany ? '100%' : '150%' };`
|
||||||
|
},
|
||||||
|
directives: [this.$store.state.settings.disableAnimatedMfm || isLong || isMany ? {} : {
|
||||||
|
name: 'animate-css',
|
||||||
|
value: { classes: 'tada', iteration: 'infinite' }
|
||||||
|
}]
|
||||||
|
}, token.big);
|
||||||
|
}
|
||||||
|
|
||||||
|
case 'motion': {
|
||||||
|
motionCount++;
|
||||||
|
const isLong = length(token.motion) > 10;
|
||||||
|
const isMany = motionCount > 3;
|
||||||
|
return (createElement as any)('span', {
|
||||||
|
attrs: {
|
||||||
|
style: 'display: inline-block;'
|
||||||
|
},
|
||||||
|
directives: [this.$store.state.settings.disableAnimatedMfm || isLong || isMany ? {} : {
|
||||||
|
name: 'animate-css',
|
||||||
|
value: { classes: 'rubberBand', iteration: 'infinite' }
|
||||||
|
}]
|
||||||
|
}, token.motion);
|
||||||
|
}
|
||||||
|
|
||||||
|
case 'url': {
|
||||||
return createElement(MkUrl, {
|
return createElement(MkUrl, {
|
||||||
props: {
|
props: {
|
||||||
url: token.content,
|
url: token.content,
|
||||||
target: '_blank'
|
target: '_blank'
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
case 'link':
|
case 'link': {
|
||||||
return createElement('a', {
|
return createElement('a', {
|
||||||
attrs: {
|
attrs: {
|
||||||
class: 'link',
|
class: 'link',
|
||||||
@@ -75,8 +112,9 @@ export default Vue.component('misskey-flavored-markdown', {
|
|||||||
title: token.url
|
title: token.url
|
||||||
}
|
}
|
||||||
}, token.title);
|
}, token.title);
|
||||||
|
}
|
||||||
|
|
||||||
case 'mention':
|
case 'mention': {
|
||||||
return (createElement as any)('a', {
|
return (createElement as any)('a', {
|
||||||
attrs: {
|
attrs: {
|
||||||
href: `${url}/@${getAcct(token)}`,
|
href: `${url}/@${getAcct(token)}`,
|
||||||
@@ -88,16 +126,18 @@ export default Vue.component('misskey-flavored-markdown', {
|
|||||||
value: token.content
|
value: token.content
|
||||||
}]
|
}]
|
||||||
}, token.content);
|
}, token.content);
|
||||||
|
}
|
||||||
|
|
||||||
case 'hashtag':
|
case 'hashtag': {
|
||||||
return createElement('a', {
|
return createElement('a', {
|
||||||
attrs: {
|
attrs: {
|
||||||
href: `${url}/tags/${encodeURIComponent(token.hashtag)}`,
|
href: `${url}/tags/${encodeURIComponent(token.hashtag)}`,
|
||||||
target: '_blank'
|
target: '_blank'
|
||||||
}
|
}
|
||||||
}, token.content);
|
}, token.content);
|
||||||
|
}
|
||||||
|
|
||||||
case 'code':
|
case 'code': {
|
||||||
return createElement('pre', {
|
return createElement('pre', {
|
||||||
class: 'code'
|
class: 'code'
|
||||||
}, [
|
}, [
|
||||||
@@ -107,15 +147,17 @@ export default Vue.component('misskey-flavored-markdown', {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
]);
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
case 'inline-code':
|
case 'inline-code': {
|
||||||
return createElement('code', {
|
return createElement('code', {
|
||||||
domProps: {
|
domProps: {
|
||||||
innerHTML: token.html
|
innerHTML: token.html
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
case 'quote':
|
case 'quote': {
|
||||||
const text2 = token.quote.replace(/(\r\n|\n|\r)/g, '\n');
|
const text2 = token.quote.replace(/(\r\n|\n|\r)/g, '\n');
|
||||||
|
|
||||||
if (this.shouldBreak) {
|
if (this.shouldBreak) {
|
||||||
@@ -134,41 +176,37 @@ export default Vue.component('misskey-flavored-markdown', {
|
|||||||
}
|
}
|
||||||
}, text2.replace(/\n/g, ' '));
|
}, text2.replace(/\n/g, ' '));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
case 'title':
|
case 'title': {
|
||||||
return createElement('div', {
|
return createElement('div', {
|
||||||
attrs: {
|
attrs: {
|
||||||
class: 'title'
|
class: 'title'
|
||||||
}
|
}
|
||||||
}, token.title);
|
}, token.title);
|
||||||
|
}
|
||||||
|
|
||||||
case 'emoji':
|
case 'emoji': {
|
||||||
const emoji = emojilib.lib[token.emoji];
|
const emoji = emojilib.lib[token.emoji];
|
||||||
return createElement('span', emoji ? emoji.char : token.content);
|
return createElement('span', emoji ? emoji.char : token.content);
|
||||||
|
}
|
||||||
|
|
||||||
case 'search':
|
case 'search': {
|
||||||
return createElement(MkGoogle, {
|
return createElement(MkGoogle, {
|
||||||
props: {
|
props: {
|
||||||
q: token.query
|
q: token.query
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default: {
|
||||||
console.log('unknown ast type:', token.type);
|
console.log('unknown ast type:', token.type);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
|
||||||
const _els = [];
|
// el.tag === 'br' のとき i !== 0 が保証されるため、短絡評価により els[i - 1] は配列外参照しない
|
||||||
els.forEach((el, i) => {
|
const _els = els.filter((el, i) => !(el.tag === 'br' && ['div', 'pre'].includes(els[i - 1].tag)));
|
||||||
if (el.tag == 'br') {
|
|
||||||
if (!['div', 'pre'].includes(els[i - 1].tag)) {
|
|
||||||
_els.push(el);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
_els.push(el);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return createElement('span', _els);
|
return createElement('span', _els);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<i>・</i>
|
<i>・</i>
|
||||||
<a :href="feedbackUrl" target="_blank">%i18n:@feedback%</a>
|
<a :href="feedbackUrl" target="_blank">%i18n:@feedback%</a>
|
||||||
<i>・</i>
|
<i>・</i>
|
||||||
<a :href="devUrl">%i18n:@develop%</a>
|
<a href="/dev">%i18n:@develop%</a>
|
||||||
<i>・</i>
|
<i>・</i>
|
||||||
<a href="https://twitter.com/misskey_xyz" target="_blank">Follow us on %fa:B twitter%</a>
|
<a href="https://twitter.com/misskey_xyz" target="_blank">Follow us on %fa:B twitter%</a>
|
||||||
</span>
|
</span>
|
||||||
@@ -14,18 +14,21 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import { docsUrl, statsUrl, statusUrl, devUrl, repositoryUrl, feedbackUrl, lang } from '../../../config';
|
import { lang } from '../../../config';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
aboutUrl: `${docsUrl}/${lang}/about`,
|
aboutUrl: `/docs/${lang}/about`,
|
||||||
statsUrl,
|
repositoryUrl: 'https://github.com/syuilo/misskey',
|
||||||
statusUrl,
|
feedbackUrl: 'https://github.com/syuilo/misskey/issues/new'
|
||||||
devUrl,
|
|
||||||
repositoryUrl: repositoryUrl || `https://github.com/syuilo/misskey`,
|
|
||||||
feedbackUrl: feedbackUrl || `https://github.com/syuilo/misskey/issues/new`
|
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
(this as any).os.getMeta().then(meta => {
|
||||||
|
if (meta.maintainer.repository_url) this.repositoryUrl = meta.maintainer.repository_url;
|
||||||
|
if (meta.maintainer.feedback_url) this.feedbackUrl = meta.maintainer.feedback_url;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<header class="bvonvjxbwzaiskogyhbwgyxvcgserpmu">
|
<header class="bvonvjxbwzaiskogyhbwgyxvcgserpmu">
|
||||||
<mk-avatar class="avatar" :user="note.user" v-if="$store.state.device.postStyle == 'smart'"/>
|
<mk-avatar class="avatar" :user="note.user" v-if="$store.state.device.postStyle == 'smart'"/>
|
||||||
<router-link class="name" :to="note.user | userPage" v-user-preview="note.user.id">{{ note.user | userName }}</router-link>
|
<router-link class="name" :to="note.user | userPage" v-user-preview="note.user.id">{{ note.user | userName }}</router-link>
|
||||||
<span class="is-verified" v-if="note.user.isVerified" title="%i18n:common.verified-user%">%fa:bookmark%</span>
|
<span class="is-verified" v-if="note.user.isVerified" title="%i18n:common.verified-user%">%fa:star%</span>
|
||||||
<span class="is-admin" v-if="note.user.isAdmin">admin</span>
|
<span class="is-admin" v-if="note.user.isAdmin">admin</span>
|
||||||
<span class="is-bot" v-if="note.user.isBot">bot</span>
|
<span class="is-bot" v-if="note.user.isBot">bot</span>
|
||||||
<span class="is-cat" v-if="note.user.isCat">cat</span>
|
<span class="is-cat" v-if="note.user.isCat">cat</span>
|
||||||
|
|||||||
@@ -6,17 +6,27 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
|
import { url } from '../../../config';
|
||||||
|
import copyToClipboard from '../../../common/scripts/copy-to-clipboard';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
props: ['note', 'source', 'compact'],
|
props: ['note', 'source', 'compact'],
|
||||||
computed: {
|
computed: {
|
||||||
items() {
|
items() {
|
||||||
const items = [];
|
const items = [{
|
||||||
items.push({
|
icon: '%fa:info-circle%',
|
||||||
|
text: '%i18n:@detail%',
|
||||||
|
action: this.detail
|
||||||
|
}, {
|
||||||
|
icon: '%fa:link%',
|
||||||
|
text: '%i18n:@copy-link%',
|
||||||
|
action: this.copyLink
|
||||||
|
}, null, {
|
||||||
icon: '%fa:star%',
|
icon: '%fa:star%',
|
||||||
text: '%i18n:@favorite%',
|
text: '%i18n:@favorite%',
|
||||||
action: this.favorite
|
action: this.favorite
|
||||||
});
|
}];
|
||||||
|
|
||||||
if (this.note.userId == this.$store.state.i.id) {
|
if (this.note.userId == this.$store.state.i.id) {
|
||||||
items.push({
|
items.push({
|
||||||
icon: '%fa:thumbtack%',
|
icon: '%fa:thumbtack%',
|
||||||
@@ -42,6 +52,14 @@ export default Vue.extend({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
detail() {
|
||||||
|
this.$router.push(`/notes/${ this.note.id }`);
|
||||||
|
},
|
||||||
|
|
||||||
|
copyLink() {
|
||||||
|
copyToClipboard(`${url}/notes/${ this.note.id }`);
|
||||||
|
},
|
||||||
|
|
||||||
pin() {
|
pin() {
|
||||||
(this as any).api('i/pin', {
|
(this as any).api('i/pin', {
|
||||||
noteId: this.note.id
|
noteId: this.note.id
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
|
import { erase } from '../../../../../prelude/array';
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@@ -53,7 +54,7 @@ export default Vue.extend({
|
|||||||
|
|
||||||
get() {
|
get() {
|
||||||
return {
|
return {
|
||||||
choices: this.choices.filter(choice => choice != '')
|
choices: erase('', this.choices)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,7 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
|
import { sum } from '../../../../../prelude/array';
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
props: ['note'],
|
props: ['note'],
|
||||||
data() {
|
data() {
|
||||||
@@ -33,7 +34,7 @@ export default Vue.extend({
|
|||||||
return this.note.poll;
|
return this.note.poll;
|
||||||
},
|
},
|
||||||
total(): number {
|
total(): number {
|
||||||
return this.poll.choices.reduce((a, b) => a + b.votes, 0);
|
return sum(this.poll.choices.map(x => x.votes));
|
||||||
},
|
},
|
||||||
isVoted(): boolean {
|
isVoted(): boolean {
|
||||||
return this.poll.choices.some(c => c.isVoted);
|
return this.poll.choices.some(c => c.isVoted);
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
<img v-if="reaction == 'congrats'" src="/assets/reactions/congrats.png" alt="%i18n:common.reactions.congrats%">
|
<img v-if="reaction == 'congrats'" src="/assets/reactions/congrats.png" alt="%i18n:common.reactions.congrats%">
|
||||||
<img v-if="reaction == 'angry'" src="/assets/reactions/angry.png" alt="%i18n:common.reactions.angry%">
|
<img v-if="reaction == 'angry'" src="/assets/reactions/angry.png" alt="%i18n:common.reactions.angry%">
|
||||||
<img v-if="reaction == 'confused'" src="/assets/reactions/confused.png" alt="%i18n:common.reactions.confused%">
|
<img v-if="reaction == 'confused'" src="/assets/reactions/confused.png" alt="%i18n:common.reactions.confused%">
|
||||||
|
<img v-if="reaction == 'rip'" src="/assets/reactions/rip.png" alt="%i18n:common.reactions.rip%">
|
||||||
<template v-if="reaction == 'pudding'">
|
<template v-if="reaction == 'pudding'">
|
||||||
<img v-if="$store.getters.isSignedIn && $store.state.settings.iLikeSushi" src="/assets/reactions/sushi.png" alt="%i18n:common.reactions.pudding%">
|
<img v-if="$store.getters.isSignedIn && $store.state.settings.iLikeSushi" src="/assets/reactions/sushi.png" alt="%i18n:common.reactions.pudding%">
|
||||||
<img v-else src="/assets/reactions/pudding.png" alt="%i18n:common.reactions.pudding%">
|
<img v-else src="/assets/reactions/pudding.png" alt="%i18n:common.reactions.pudding%">
|
||||||
|
|||||||
@@ -10,9 +10,10 @@
|
|||||||
<button @click="react('hmm')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="4" title="%i18n:common.reactions.hmm%"><mk-reaction-icon reaction='hmm'/></button>
|
<button @click="react('hmm')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="4" title="%i18n:common.reactions.hmm%"><mk-reaction-icon reaction='hmm'/></button>
|
||||||
<button @click="react('surprise')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="5" title="%i18n:common.reactions.surprise%"><mk-reaction-icon reaction='surprise'/></button>
|
<button @click="react('surprise')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="5" title="%i18n:common.reactions.surprise%"><mk-reaction-icon reaction='surprise'/></button>
|
||||||
<button @click="react('congrats')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="6" title="%i18n:common.reactions.congrats%"><mk-reaction-icon reaction='congrats'/></button>
|
<button @click="react('congrats')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="6" title="%i18n:common.reactions.congrats%"><mk-reaction-icon reaction='congrats'/></button>
|
||||||
<button @click="react('angry')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="4" title="%i18n:common.reactions.angry%"><mk-reaction-icon reaction='angry'/></button>
|
<button @click="react('angry')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="7" title="%i18n:common.reactions.angry%"><mk-reaction-icon reaction='angry'/></button>
|
||||||
<button @click="react('confused')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="5" title="%i18n:common.reactions.confused%"><mk-reaction-icon reaction='confused'/></button>
|
<button @click="react('confused')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="8" title="%i18n:common.reactions.confused%"><mk-reaction-icon reaction='confused'/></button>
|
||||||
<button @click="react('pudding')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="6" title="%i18n:common.reactions.pudding%"><mk-reaction-icon reaction='pudding'/></button>
|
<button @click="react('rip')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="9" title="%i18n:common.reactions.rip%"><mk-reaction-icon reaction='rip'/></button>
|
||||||
|
<button @click="react('pudding')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="10" title="%i18n:common.reactions.pudding%"><mk-reaction-icon reaction='pudding'/></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,15 +1,16 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="mk-reactions-viewer">
|
<div class="mk-reactions-viewer">
|
||||||
<template v-if="reactions">
|
<template v-if="reactions">
|
||||||
<span v-if="reactions.like"><mk-reaction-icon reaction="like"/><span>{{ reactions.like }}</span></span>
|
<span :class="{notReacted}" @click="react('like')" v-if="reactions.like"><mk-reaction-icon reaction="like"/><span>{{ reactions.like }}</span></span>
|
||||||
<span v-if="reactions.love"><mk-reaction-icon reaction="love"/><span>{{ reactions.love }}</span></span>
|
<span :class="{notReacted}" @click="react('love')" v-if="reactions.love"><mk-reaction-icon reaction="love"/><span>{{ reactions.love }}</span></span>
|
||||||
<span v-if="reactions.laugh"><mk-reaction-icon reaction="laugh"/><span>{{ reactions.laugh }}</span></span>
|
<span :class="{notReacted}" @click="react('laugh')" v-if="reactions.laugh"><mk-reaction-icon reaction="laugh"/><span>{{ reactions.laugh }}</span></span>
|
||||||
<span v-if="reactions.hmm"><mk-reaction-icon reaction="hmm"/><span>{{ reactions.hmm }}</span></span>
|
<span :class="{notReacted}" @click="react('hmm')" v-if="reactions.hmm"><mk-reaction-icon reaction="hmm"/><span>{{ reactions.hmm }}</span></span>
|
||||||
<span v-if="reactions.surprise"><mk-reaction-icon reaction="surprise"/><span>{{ reactions.surprise }}</span></span>
|
<span :class="{notReacted}" @click="react('surprise')" v-if="reactions.surprise"><mk-reaction-icon reaction="surprise"/><span>{{ reactions.surprise }}</span></span>
|
||||||
<span v-if="reactions.congrats"><mk-reaction-icon reaction="congrats"/><span>{{ reactions.congrats }}</span></span>
|
<span :class="{notReacted}" @click="react('congrats')" v-if="reactions.congrats"><mk-reaction-icon reaction="congrats"/><span>{{ reactions.congrats }}</span></span>
|
||||||
<span v-if="reactions.angry"><mk-reaction-icon reaction="angry"/><span>{{ reactions.angry }}</span></span>
|
<span :class="{notReacted}" @click="react('angry')" v-if="reactions.angry"><mk-reaction-icon reaction="angry"/><span>{{ reactions.angry }}</span></span>
|
||||||
<span v-if="reactions.confused"><mk-reaction-icon reaction="confused"/><span>{{ reactions.confused }}</span></span>
|
<span :class="{notReacted}" @click="react('confused')" v-if="reactions.confused"><mk-reaction-icon reaction="confused"/><span>{{ reactions.confused }}</span></span>
|
||||||
<span v-if="reactions.pudding"><mk-reaction-icon reaction="pudding"/><span>{{ reactions.pudding }}</span></span>
|
<span :class="{notReacted}" @click="react('rip')" v-if="reactions.rip"><mk-reaction-icon reaction="rip"/><span>{{ reactions.rip }}</span></span>
|
||||||
|
<span :class="{notReacted}" @click="react('pudding')" v-if="reactions.pudding"><mk-reaction-icon reaction="pudding"/><span>{{ reactions.pudding }}</span></span>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -21,6 +22,17 @@ export default Vue.extend({
|
|||||||
computed: {
|
computed: {
|
||||||
reactions(): number {
|
reactions(): number {
|
||||||
return this.note.reactionCounts;
|
return this.note.reactionCounts;
|
||||||
|
},
|
||||||
|
notReacted(): boolean {
|
||||||
|
return this.note.myReaction == null;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
react(reaction: string) {
|
||||||
|
(this as any).api('notes/reactions/create', {
|
||||||
|
noteId: this.note.id,
|
||||||
|
reaction: reaction
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -39,6 +51,9 @@ root(isDark)
|
|||||||
> span
|
> span
|
||||||
margin-right 8px
|
margin-right 8px
|
||||||
|
|
||||||
|
&.notReacted
|
||||||
|
cursor pointer
|
||||||
|
|
||||||
> .mk-reaction-icon
|
> .mk-reaction-icon
|
||||||
font-size 1.4em
|
font-size 1.4em
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
</ui-input>
|
</ui-input>
|
||||||
<ui-input v-if="user && user.twoFactorEnabled" v-model="token" type="number" required/>
|
<ui-input v-if="user && user.twoFactorEnabled" v-model="token" type="number" required/>
|
||||||
<ui-button type="submit" :disabled="signing">{{ signing ? '%i18n:@signing-in%' : '%i18n:@signin%' }}</ui-button>
|
<ui-button type="submit" :disabled="signing">{{ signing ? '%i18n:@signing-in%' : '%i18n:@signin%' }}</ui-button>
|
||||||
<p style="margin: 8px 0;">または<a :href="`${apiUrl}/signin/twitter`">Twitterでログイン</a></p>
|
<p style="margin: 8px 0;">%i18n:@or% <a :href="`${apiUrl}/signin/twitter`">%i18n:@signin-with-twitter%</a></p>
|
||||||
</form>
|
</form>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -59,7 +59,7 @@ export default Vue.extend({
|
|||||||
}).then(() => {
|
}).then(() => {
|
||||||
location.reload();
|
location.reload();
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
alert('something happened');
|
alert('%i18n:@login-failed%');
|
||||||
this.signing = false;
|
this.signing = false;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -78,7 +78,7 @@ export default Vue.extend({
|
|||||||
cursor wait !important
|
cursor wait !important
|
||||||
|
|
||||||
> .avatar
|
> .avatar
|
||||||
margin 16px auto 0 auto
|
margin 0 auto 0 auto
|
||||||
width 64px
|
width 64px
|
||||||
height 64px
|
height 64px
|
||||||
background #ddd
|
background #ddd
|
||||||
|
|||||||
@@ -1,43 +1,50 @@
|
|||||||
<template>
|
<template>
|
||||||
<form class="mk-signup" @submit.prevent="onSubmit" :autocomplete="Math.random()">
|
<form class="mk-signup" @submit.prevent="onSubmit" :autocomplete="Math.random()">
|
||||||
<ui-input v-model="username" type="text" pattern="^[a-zA-Z0-9_]{1,20}$" :autocomplete="Math.random()" spellcheck="false" required @input="onChangeUsername">
|
<template v-if="meta">
|
||||||
<span>%i18n:@username%</span>
|
<ui-input v-if="meta.disableRegistration" v-model="invitationCode" type="text" :autocomplete="Math.random()" spellcheck="false" required>
|
||||||
<span slot="prefix">@</span>
|
<span>%i18n:@invitation-code%</span>
|
||||||
<span slot="suffix">@{{ host }}</span>
|
<span slot="prefix">%fa:id-card-alt%</span>
|
||||||
<p slot="text" v-if="usernameState == 'wait'" style="color:#999">%fa:spinner .pulse .fw% %i18n:@checking%</p>
|
<p slot="text" v-html="'%i18n:@invitation-info%'.replace('{}', meta.maintainer.url)"></p>
|
||||||
<p slot="text" v-if="usernameState == 'ok'" style="color:#3CB7B5">%fa:check .fw% %i18n:@available%</p>
|
</ui-input>
|
||||||
<p slot="text" v-if="usernameState == 'unavailable'" style="color:#FF1161">%fa:exclamation-triangle .fw% %i18n:@unavailable%</p>
|
<ui-input v-model="username" type="text" pattern="^[a-zA-Z0-9_]{1,20}$" :autocomplete="Math.random()" spellcheck="false" required @input="onChangeUsername">
|
||||||
<p slot="text" v-if="usernameState == 'error'" style="color:#FF1161">%fa:exclamation-triangle .fw% %i18n:@error%</p>
|
<span>%i18n:@username%</span>
|
||||||
<p slot="text" v-if="usernameState == 'invalid-format'" style="color:#FF1161">%fa:exclamation-triangle .fw% %i18n:@invalid-format%</p>
|
<span slot="prefix">@</span>
|
||||||
<p slot="text" v-if="usernameState == 'min-range'" style="color:#FF1161">%fa:exclamation-triangle .fw% %i18n:@too-short%</p>
|
<span slot="suffix">@{{ host }}</span>
|
||||||
<p slot="text" v-if="usernameState == 'max-range'" style="color:#FF1161">%fa:exclamation-triangle .fw% %i18n:@too-long%</p>
|
<p slot="text" v-if="usernameState == 'wait'" style="color:#999">%fa:spinner .pulse .fw% %i18n:@checking%</p>
|
||||||
</ui-input>
|
<p slot="text" v-if="usernameState == 'ok'" style="color:#3CB7B5">%fa:check .fw% %i18n:@available%</p>
|
||||||
<ui-input v-model="password" type="password" :autocomplete="Math.random()" required @input="onChangePassword" :with-password-meter="true">
|
<p slot="text" v-if="usernameState == 'unavailable'" style="color:#FF1161">%fa:exclamation-triangle .fw% %i18n:@unavailable%</p>
|
||||||
<span>%i18n:@password%</span>
|
<p slot="text" v-if="usernameState == 'error'" style="color:#FF1161">%fa:exclamation-triangle .fw% %i18n:@error%</p>
|
||||||
<span slot="prefix">%fa:lock%</span>
|
<p slot="text" v-if="usernameState == 'invalid-format'" style="color:#FF1161">%fa:exclamation-triangle .fw% %i18n:@invalid-format%</p>
|
||||||
<div slot="text">
|
<p slot="text" v-if="usernameState == 'min-range'" style="color:#FF1161">%fa:exclamation-triangle .fw% %i18n:@too-short%</p>
|
||||||
<p slot="text" v-if="passwordStrength == 'low'" style="color:#FF1161">%fa:exclamation-triangle .fw% %i18n:@weak-password%</p>
|
<p slot="text" v-if="usernameState == 'max-range'" style="color:#FF1161">%fa:exclamation-triangle .fw% %i18n:@too-long%</p>
|
||||||
<p slot="text" v-if="passwordStrength == 'medium'" style="color:#3CB7B5">%fa:check .fw% %i18n:@normal-password%</p>
|
</ui-input>
|
||||||
<p slot="text" v-if="passwordStrength == 'high'" style="color:#3CB7B5">%fa:check .fw% %i18n:@strong-password%</p>
|
<ui-input v-model="password" type="password" :autocomplete="Math.random()" required @input="onChangePassword" :with-password-meter="true">
|
||||||
</div>
|
<span>%i18n:@password%</span>
|
||||||
</ui-input>
|
<span slot="prefix">%fa:lock%</span>
|
||||||
<ui-input v-model="retypedPassword" type="password" :autocomplete="Math.random()" required @input="onChangePasswordRetype">
|
<div slot="text">
|
||||||
<span>%i18n:@password% (%i18n:@retype%)</span>
|
<p slot="text" v-if="passwordStrength == 'low'" style="color:#FF1161">%fa:exclamation-triangle .fw% %i18n:@weak-password%</p>
|
||||||
<span slot="prefix">%fa:lock%</span>
|
<p slot="text" v-if="passwordStrength == 'medium'" style="color:#3CB7B5">%fa:check .fw% %i18n:@normal-password%</p>
|
||||||
<div slot="text">
|
<p slot="text" v-if="passwordStrength == 'high'" style="color:#3CB7B5">%fa:check .fw% %i18n:@strong-password%</p>
|
||||||
<p slot="text" v-if="passwordRetypeState == 'match'" style="color:#3CB7B5">%fa:check .fw% %i18n:@password-matched%</p>
|
</div>
|
||||||
<p slot="text" v-if="passwordRetypeState == 'not-match'" style="color:#FF1161">%fa:exclamation-triangle .fw% %i18n:@password-not-matched%</p>
|
</ui-input>
|
||||||
</div>
|
<ui-input v-model="retypedPassword" type="password" :autocomplete="Math.random()" required @input="onChangePasswordRetype">
|
||||||
</ui-input>
|
<span>%i18n:@password% (%i18n:@retype%)</span>
|
||||||
<div v-if="recaptchaSitekey != null" class="g-recaptcha" :data-sitekey="recaptchaSitekey" style="margin: 16px 0;"></div>
|
<span slot="prefix">%fa:lock%</span>
|
||||||
<ui-button type="submit">%i18n:@create%</ui-button>
|
<div slot="text">
|
||||||
|
<p slot="text" v-if="passwordRetypeState == 'match'" style="color:#3CB7B5">%fa:check .fw% %i18n:@password-matched%</p>
|
||||||
|
<p slot="text" v-if="passwordRetypeState == 'not-match'" style="color:#FF1161">%fa:exclamation-triangle .fw% %i18n:@password-not-matched%</p>
|
||||||
|
</div>
|
||||||
|
</ui-input>
|
||||||
|
<div v-if="meta.recaptchaSitekey != null" class="g-recaptcha" :data-sitekey="meta.recaptchaSitekey" style="margin: 16px 0;"></div>
|
||||||
|
<ui-button type="submit">%i18n:@create%</ui-button>
|
||||||
|
</template>
|
||||||
</form>
|
</form>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
const getPasswordStrength = require('syuilo-password-strength');
|
const getPasswordStrength = require('syuilo-password-strength');
|
||||||
import { host, url, recaptchaSitekey } from '../../../config';
|
import { host, url } from '../../../config';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
data() {
|
data() {
|
||||||
@@ -46,11 +53,12 @@ export default Vue.extend({
|
|||||||
username: '',
|
username: '',
|
||||||
password: '',
|
password: '',
|
||||||
retypedPassword: '',
|
retypedPassword: '',
|
||||||
|
invitationCode: '',
|
||||||
url,
|
url,
|
||||||
recaptchaSitekey,
|
|
||||||
usernameState: null,
|
usernameState: null,
|
||||||
passwordStrength: '',
|
passwordStrength: '',
|
||||||
passwordRetypeState: null
|
passwordRetypeState: null,
|
||||||
|
meta: null
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@@ -61,6 +69,17 @@ export default Vue.extend({
|
|||||||
this.usernameState != 'max-range');
|
this.usernameState != 'max-range');
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
created() {
|
||||||
|
(this as any).os.getMeta().then(meta => {
|
||||||
|
this.meta = meta;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
const head = document.getElementsByTagName('head')[0];
|
||||||
|
const script = document.createElement('script');
|
||||||
|
script.setAttribute('src', 'https://www.google.com/recaptcha/api.js');
|
||||||
|
head.appendChild(script);
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
onChangeUsername() {
|
onChangeUsername() {
|
||||||
if (this.username == '') {
|
if (this.username == '') {
|
||||||
@@ -110,7 +129,8 @@ export default Vue.extend({
|
|||||||
(this as any).api('signup', {
|
(this as any).api('signup', {
|
||||||
username: this.username,
|
username: this.username,
|
||||||
password: this.password,
|
password: this.password,
|
||||||
'g-recaptcha-response': recaptchaSitekey != null ? (window as any).grecaptcha.getResponse() : null
|
invitationCode: this.invitationCode,
|
||||||
|
'g-recaptcha-response': this.meta.recaptchaSitekey != null ? (window as any).grecaptcha.getResponse() : null
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
(this as any).api('signin', {
|
(this as any).api('signin', {
|
||||||
username: this.username,
|
username: this.username,
|
||||||
@@ -121,19 +141,11 @@ export default Vue.extend({
|
|||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
alert('%i18n:@some-error%');
|
alert('%i18n:@some-error%');
|
||||||
|
|
||||||
if (recaptchaSitekey != null) {
|
if (this.meta.recaptchaSitekey != null) {
|
||||||
(window as any).grecaptcha.reset();
|
(window as any).grecaptcha.reset();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
if (recaptchaSitekey != null) {
|
|
||||||
const head = document.getElementsByTagName('head')[0];
|
|
||||||
const script = document.createElement('script');
|
|
||||||
script.setAttribute('src', 'https://www.google.com/recaptcha/api.js');
|
|
||||||
head.appendChild(script);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
90
src/client/app/common/views/components/tag-cloud.vue
Normal file
90
src/client/app/common/views/components/tag-cloud.vue
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
<template>
|
||||||
|
<div class="jtivnzhfwquxpsfidertopbmwmchmnmo">
|
||||||
|
<p class="fetching" v-if="fetching">%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
|
||||||
|
<p class="empty" v-else-if="tags.length == 0">%fa:exclamation-circle%%i18n:@empty%</p>
|
||||||
|
<div v-else>
|
||||||
|
<vue-word-cloud
|
||||||
|
:words="tags.map(x => [x.name, x.count])"
|
||||||
|
:color="color"
|
||||||
|
font-family="Roboto">
|
||||||
|
<template slot-scope="{word, text, weight}">
|
||||||
|
<div style="cursor: pointer;" :title="weight">
|
||||||
|
{{ text }}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</vue-word-cloud>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
import * as VueWordCloud from 'vuewordcloud';
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
components: {
|
||||||
|
[VueWordCloud.name]: VueWordCloud
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tags: [],
|
||||||
|
fetching: true,
|
||||||
|
clock: null
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.fetch();
|
||||||
|
this.clock = setInterval(this.fetch, 1000 * 60);
|
||||||
|
},
|
||||||
|
beforeDestroy() {
|
||||||
|
clearInterval(this.clock);
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
fetch() {
|
||||||
|
(this as any).api('aggregation/hashtags').then(tags => {
|
||||||
|
this.tags = tags;
|
||||||
|
this.fetching = false;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
color([, weight]) {
|
||||||
|
const peak = Math.max.apply(null, this.tags.map(x => x.count));
|
||||||
|
const w = weight / peak;
|
||||||
|
|
||||||
|
if (w == 1) {
|
||||||
|
return this.$store.state.device.darkmode ? '#ff4e69' : '#ff4e69';
|
||||||
|
} else if (w > 0.5) {
|
||||||
|
return this.$store.state.device.darkmode ? '#3bc4c7' : '#3bc4c7';
|
||||||
|
} else {
|
||||||
|
return this.$store.state.device.darkmode ? '#fff' : '#555';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
root(isDark)
|
||||||
|
height 100%
|
||||||
|
width 100%
|
||||||
|
|
||||||
|
> .fetching
|
||||||
|
> .empty
|
||||||
|
margin 0
|
||||||
|
padding 16px
|
||||||
|
text-align center
|
||||||
|
color #aaa
|
||||||
|
|
||||||
|
> [data-fa]
|
||||||
|
margin-right 4px
|
||||||
|
|
||||||
|
> div
|
||||||
|
height 100%
|
||||||
|
width 100%
|
||||||
|
|
||||||
|
.jtivnzhfwquxpsfidertopbmwmchmnmo[data-darkmode]
|
||||||
|
root(true)
|
||||||
|
|
||||||
|
.jtivnzhfwquxpsfidertopbmwmchmnmo:not([data-darkmode])
|
||||||
|
root(false)
|
||||||
|
|
||||||
|
</style>
|
||||||
105
src/client/app/common/views/components/trends.vue
Normal file
105
src/client/app/common/views/components/trends.vue
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
<template>
|
||||||
|
<div class="csqvmxybqbycalfhkxvyfrgbrdalkaoc">
|
||||||
|
<p class="fetching" v-if="fetching">%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
|
||||||
|
<p class="empty" v-else-if="stats.length == 0">%fa:exclamation-circle%%i18n:@empty%</p>
|
||||||
|
<!-- トランジションを有効にするとなぜかメモリリークする -->
|
||||||
|
<!-- <transition-group v-else tag="div" name="chart"> -->
|
||||||
|
<div>
|
||||||
|
<div v-for="stat in stats" :key="stat.tag">
|
||||||
|
<div class="tag">
|
||||||
|
<router-link :to="`/tags/${ encodeURIComponent(stat.tag) }`" :title="stat.tag">#{{ stat.tag }}</router-link>
|
||||||
|
<p>{{ '%i18n:@count%'.replace('{}', stat.usersCount) }}</p>
|
||||||
|
</div>
|
||||||
|
<x-chart class="chart" :src="stat.chart"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- </transition-group> -->
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
import XChart from './trends.chart.vue';
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
components: {
|
||||||
|
XChart
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
stats: [],
|
||||||
|
fetching: true,
|
||||||
|
clock: null
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.fetch();
|
||||||
|
this.clock = setInterval(this.fetch, 1000 * 60);
|
||||||
|
},
|
||||||
|
beforeDestroy() {
|
||||||
|
clearInterval(this.clock);
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
fetch() {
|
||||||
|
(this as any).api('hashtags/trend').then(stats => {
|
||||||
|
this.stats = stats;
|
||||||
|
this.fetching = false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
root(isDark)
|
||||||
|
> .fetching
|
||||||
|
> .empty
|
||||||
|
margin 0
|
||||||
|
padding 16px
|
||||||
|
text-align center
|
||||||
|
color #aaa
|
||||||
|
|
||||||
|
> [data-fa]
|
||||||
|
margin-right 4px
|
||||||
|
|
||||||
|
> div
|
||||||
|
.chart-move
|
||||||
|
transition transform 1s ease
|
||||||
|
|
||||||
|
> div
|
||||||
|
display flex
|
||||||
|
align-items center
|
||||||
|
padding 14px 16px
|
||||||
|
|
||||||
|
&:not(:last-child)
|
||||||
|
border-bottom solid 1px isDark ? #393f4f : #eee
|
||||||
|
|
||||||
|
> .tag
|
||||||
|
flex 1
|
||||||
|
overflow hidden
|
||||||
|
font-size 14px
|
||||||
|
color isDark ? #9baec8 : #65727b
|
||||||
|
|
||||||
|
> a
|
||||||
|
display block
|
||||||
|
width 100%
|
||||||
|
white-space nowrap
|
||||||
|
overflow hidden
|
||||||
|
text-overflow ellipsis
|
||||||
|
color inherit
|
||||||
|
|
||||||
|
> p
|
||||||
|
margin 0
|
||||||
|
font-size 75%
|
||||||
|
opacity 0.7
|
||||||
|
|
||||||
|
> .chart
|
||||||
|
height 30px
|
||||||
|
|
||||||
|
.csqvmxybqbycalfhkxvyfrgbrdalkaoc[data-darkmode]
|
||||||
|
root(true)
|
||||||
|
|
||||||
|
.csqvmxybqbycalfhkxvyfrgbrdalkaoc:not([data-darkmode])
|
||||||
|
root(false)
|
||||||
|
|
||||||
|
</style>
|
||||||
@@ -24,19 +24,34 @@ export default Vue.extend({
|
|||||||
|
|
||||||
root(isDark)
|
root(isDark)
|
||||||
margin 16px
|
margin 16px
|
||||||
padding 16px
|
|
||||||
color isDark ? #fff : #000
|
color isDark ? #fff : #000
|
||||||
background isDark ? #282C37 : #fff
|
background isDark ? #282C37 : #fff
|
||||||
box-shadow 0 3px 1px -2px rgba(#000, 0.2), 0 2px 2px 0 rgba(#000, 0.14), 0 1px 5px 0 rgba(#000, 0.12)
|
box-shadow 0 3px 1px -2px rgba(#000, 0.2), 0 2px 2px 0 rgba(#000, 0.14), 0 1px 5px 0 rgba(#000, 0.12)
|
||||||
|
|
||||||
@media (min-width 500px)
|
|
||||||
padding 32px
|
|
||||||
|
|
||||||
> header
|
> header
|
||||||
font-weight normal
|
padding 16px
|
||||||
font-size 24px
|
font-weight bold
|
||||||
|
font-size 20px
|
||||||
color isDark ? #fff : #444
|
color isDark ? #fff : #444
|
||||||
|
|
||||||
|
@media (min-width 500px)
|
||||||
|
padding 24px 32px
|
||||||
|
|
||||||
|
> section
|
||||||
|
padding 20px 16px
|
||||||
|
border-top solid 1px isDark ? rgba(#000, 0.3) : rgba(#000, 0.1)
|
||||||
|
|
||||||
|
@media (min-width 500px)
|
||||||
|
padding 32px
|
||||||
|
|
||||||
|
&.fit-top
|
||||||
|
padding-top 0
|
||||||
|
|
||||||
|
> header
|
||||||
|
margin-bottom 16px
|
||||||
|
font-weight bold
|
||||||
|
color isDark ? #fff : #444
|
||||||
|
|
||||||
.ui-card[data-darkmode]
|
.ui-card[data-darkmode]
|
||||||
root(true)
|
root(true)
|
||||||
|
|
||||||
|
|||||||
89
src/client/app/common/views/components/ui/form/button.vue
Normal file
89
src/client/app/common/views/components/ui/form/button.vue
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
<template>
|
||||||
|
<div class="nvemkhtwcnnpkdrwfcbzuwhfulejhmzg" :class="{ round, primary }">
|
||||||
|
<button @click="$emit('click')">
|
||||||
|
<slot></slot>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
export default Vue.extend({
|
||||||
|
props: {
|
||||||
|
round: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
primary: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
@import '~const.styl'
|
||||||
|
|
||||||
|
root(isDark)
|
||||||
|
display inline-block
|
||||||
|
|
||||||
|
& + .nvemkhtwcnnpkdrwfcbzuwhfulejhmzg
|
||||||
|
margin-left 12px
|
||||||
|
|
||||||
|
> button
|
||||||
|
display inline-block
|
||||||
|
margin 0
|
||||||
|
padding 12px 20px
|
||||||
|
font-size 14px
|
||||||
|
border 1px solid isDark ? #6d727d : #dcdfe6
|
||||||
|
border-radius 4px
|
||||||
|
outline none
|
||||||
|
box-shadow none
|
||||||
|
color isDark ? #fff : #606266
|
||||||
|
transition 0.1s
|
||||||
|
|
||||||
|
*
|
||||||
|
pointer-events none
|
||||||
|
|
||||||
|
&:hover
|
||||||
|
&:focus
|
||||||
|
color $theme-color
|
||||||
|
background rgba($theme-color, isDark ? 0.2 : 0.12)
|
||||||
|
border-color rgba($theme-color, isDark ? 0.5 : 0.3)
|
||||||
|
|
||||||
|
&:active
|
||||||
|
color darken($theme-color, 20%)
|
||||||
|
background rgba($theme-color, 0.12)
|
||||||
|
border-color $theme-color
|
||||||
|
transition all 0s
|
||||||
|
|
||||||
|
&.primary
|
||||||
|
> button
|
||||||
|
border 1px solid $theme-color
|
||||||
|
background $theme-color
|
||||||
|
color $theme-color-foreground
|
||||||
|
|
||||||
|
&:hover
|
||||||
|
&:focus
|
||||||
|
background lighten($theme-color, 20%)
|
||||||
|
border-color lighten($theme-color, 20%)
|
||||||
|
|
||||||
|
&:active
|
||||||
|
background darken($theme-color, 20%)
|
||||||
|
border-color darken($theme-color, 20%)
|
||||||
|
transition all 0s
|
||||||
|
|
||||||
|
&.round
|
||||||
|
> button
|
||||||
|
border-radius 64px
|
||||||
|
|
||||||
|
.nvemkhtwcnnpkdrwfcbzuwhfulejhmzg[data-darkmode]
|
||||||
|
root(true)
|
||||||
|
|
||||||
|
.nvemkhtwcnnpkdrwfcbzuwhfulejhmzg:not([data-darkmode])
|
||||||
|
root(false)
|
||||||
|
|
||||||
|
</style>
|
||||||
126
src/client/app/common/views/components/ui/form/radio.vue
Normal file
126
src/client/app/common/views/components/ui/form/radio.vue
Normal file
@@ -0,0 +1,126 @@
|
|||||||
|
<template>
|
||||||
|
<div
|
||||||
|
class="uywduthvrdnlpsvsjkqigicixgyfctto"
|
||||||
|
:class="{ disabled, checked }"
|
||||||
|
:aria-checked="checked"
|
||||||
|
:aria-disabled="disabled"
|
||||||
|
@click="toggle"
|
||||||
|
>
|
||||||
|
<input type="radio"
|
||||||
|
:disabled="disabled"
|
||||||
|
>
|
||||||
|
<span class="button">
|
||||||
|
<span></span>
|
||||||
|
</span>
|
||||||
|
<span class="label"><slot></slot></span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
export default Vue.extend({
|
||||||
|
model: {
|
||||||
|
prop: 'model',
|
||||||
|
event: 'change'
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
model: {
|
||||||
|
required: false
|
||||||
|
},
|
||||||
|
value: {
|
||||||
|
required: false
|
||||||
|
},
|
||||||
|
disabled: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
checked(): boolean {
|
||||||
|
return this.model === this.value;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
toggle() {
|
||||||
|
this.$emit('change', this.value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
@import '~const.styl'
|
||||||
|
|
||||||
|
root(isDark)
|
||||||
|
display inline-flex
|
||||||
|
margin 0 16px 0 0
|
||||||
|
cursor pointer
|
||||||
|
transition all 0.3s
|
||||||
|
|
||||||
|
> *
|
||||||
|
user-select none
|
||||||
|
|
||||||
|
&:hover
|
||||||
|
> .button
|
||||||
|
border solid 2px isDark ? rgba(#fff, 0.7) : rgba(#000, 0.54)
|
||||||
|
|
||||||
|
&.disabled
|
||||||
|
opacity 0.6
|
||||||
|
cursor not-allowed
|
||||||
|
|
||||||
|
&.checked
|
||||||
|
> .button
|
||||||
|
border-color $theme-color
|
||||||
|
|
||||||
|
&:after
|
||||||
|
background-color $theme-color
|
||||||
|
transform scale(1)
|
||||||
|
opacity 1
|
||||||
|
|
||||||
|
> .label
|
||||||
|
color $theme-color
|
||||||
|
|
||||||
|
> input
|
||||||
|
position absolute
|
||||||
|
width 0
|
||||||
|
height 0
|
||||||
|
opacity 0
|
||||||
|
margin 0
|
||||||
|
|
||||||
|
> .button
|
||||||
|
display inline-block
|
||||||
|
flex-shrink 0
|
||||||
|
width 20px
|
||||||
|
height 20px
|
||||||
|
background none
|
||||||
|
border solid 2px isDark ? rgba(#fff, 0.6) : rgba(#000, 0.4)
|
||||||
|
border-radius 100%
|
||||||
|
transition inherit
|
||||||
|
|
||||||
|
&:after
|
||||||
|
content ''
|
||||||
|
display block
|
||||||
|
position absolute
|
||||||
|
top 3px
|
||||||
|
right 3px
|
||||||
|
bottom 3px
|
||||||
|
left 3px
|
||||||
|
border-radius 100%
|
||||||
|
opacity 0
|
||||||
|
transform scale(0)
|
||||||
|
transition 0.4s cubic-bezier(0.25, 0.8, 0.25, 1)
|
||||||
|
|
||||||
|
> .label
|
||||||
|
margin-left 8px
|
||||||
|
display block
|
||||||
|
font-size 14px
|
||||||
|
line-height 20px
|
||||||
|
cursor pointer
|
||||||
|
|
||||||
|
.uywduthvrdnlpsvsjkqigicixgyfctto[data-darkmode]
|
||||||
|
root(true)
|
||||||
|
|
||||||
|
.uywduthvrdnlpsvsjkqigicixgyfctto:not([data-darkmode])
|
||||||
|
root(false)
|
||||||
|
|
||||||
|
</style>
|
||||||
@@ -55,7 +55,7 @@ export default Vue.extend({
|
|||||||
|
|
||||||
root(isDark)
|
root(isDark)
|
||||||
display inline-block
|
display inline-block
|
||||||
margin 32px 32px 32px 0
|
margin 0 32px 0 0
|
||||||
cursor pointer
|
cursor pointer
|
||||||
transition all 0.3s
|
transition all 0.3s
|
||||||
|
|
||||||
|
|||||||
@@ -64,6 +64,12 @@ root(isDark)
|
|||||||
cursor pointer
|
cursor pointer
|
||||||
transition all 0.3s
|
transition all 0.3s
|
||||||
|
|
||||||
|
&:first-child
|
||||||
|
margin-top 0
|
||||||
|
|
||||||
|
&:last-child
|
||||||
|
margin-bottom 0
|
||||||
|
|
||||||
> *
|
> *
|
||||||
user-select none
|
user-select none
|
||||||
|
|
||||||
@@ -89,6 +95,7 @@ root(isDark)
|
|||||||
|
|
||||||
> .button
|
> .button
|
||||||
display inline-block
|
display inline-block
|
||||||
|
flex-shrink 0
|
||||||
margin 3px 0 0 0
|
margin 3px 0 0 0
|
||||||
width 34px
|
width 34px
|
||||||
height 14px
|
height 14px
|
||||||
|
|||||||
@@ -1,20 +1,20 @@
|
|||||||
<template>
|
<template>
|
||||||
<iframe v-if="youtubeId" type="text/html" height="250"
|
<div v-if="player.url" class="player" :style="`padding: ${(player.height || 0) / (player.width || 1) * 100}% 0 0`">
|
||||||
:src="`https://www.youtube.com/embed/${youtubeId}?origin=${misskeyUrl}`"
|
<iframe :src="player.url" :width="player.width || '100%'" :heigth="player.height || 250" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen />
|
||||||
frameborder="0"/>
|
</div>
|
||||||
<div v-else-if="tweetUrl && detail" class="twitter">
|
<div v-else-if="tweetUrl && detail" class="twitter">
|
||||||
<blockquote ref="tweet" class="twitter-tweet" :data-theme="$store.state.device.darkmode ? 'dark' : null">
|
<blockquote ref="tweet" class="twitter-tweet" :data-theme="$store.state.device.darkmode ? 'dark' : null">
|
||||||
<a :href="url"></a>
|
<a :href="url"></a>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
</div>
|
</div>
|
||||||
<div v-else class="mk-url-preview">
|
<div v-else class="mk-url-preview">
|
||||||
<a :href="url" target="_blank" :title="url" v-if="!fetching">
|
<a :class="{ mini }" :href="url" target="_blank" :title="url" v-if="!fetching">
|
||||||
<div class="thumbnail" v-if="thumbnail" :style="`background-image: url(${thumbnail})`"></div>
|
<div class="thumbnail" v-if="thumbnail" :style="`background-image: url(${thumbnail})`"></div>
|
||||||
<article>
|
<article>
|
||||||
<header>
|
<header>
|
||||||
<h1>{{ title }}</h1>
|
<h1>{{ title }}</h1>
|
||||||
</header>
|
</header>
|
||||||
<p>{{ description }}</p>
|
<p>{{ description.length > 85 ? description.slice(0, 85) + '…' : description }}</p>
|
||||||
<footer>
|
<footer>
|
||||||
<img class="icon" v-if="icon" :src="icon"/>
|
<img class="icon" v-if="icon" :src="icon"/>
|
||||||
<p>{{ sitename }}</p>
|
<p>{{ sitename }}</p>
|
||||||
@@ -28,18 +28,105 @@
|
|||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import { url as misskeyUrl } from '../../../config';
|
import { url as misskeyUrl } from '../../../config';
|
||||||
|
|
||||||
|
// THIS IS THE WHITELIST FOR THE EMBED PLAYER
|
||||||
|
const whiteList = [
|
||||||
|
'afreecatv.com',
|
||||||
|
'aparat.com',
|
||||||
|
'applemusic.com',
|
||||||
|
'amazon.com',
|
||||||
|
'awa.fm',
|
||||||
|
'bandcamp.com',
|
||||||
|
'bbc.co.uk',
|
||||||
|
'beatport.com',
|
||||||
|
'bilibili.com',
|
||||||
|
'boomstream.com',
|
||||||
|
'breakers.tv',
|
||||||
|
'cam4.com',
|
||||||
|
'cavelis.net',
|
||||||
|
'chaturbate.com',
|
||||||
|
'cnn.com',
|
||||||
|
'cybergame.tv',
|
||||||
|
'dailymotion.com',
|
||||||
|
'deezer.com',
|
||||||
|
'djlive.pl',
|
||||||
|
'e-onkyo.com',
|
||||||
|
'eventials.com',
|
||||||
|
'facebook.com',
|
||||||
|
'fc2.com',
|
||||||
|
'gameplank.tv',
|
||||||
|
'goodgame.ru',
|
||||||
|
'google.com',
|
||||||
|
'hardtunes.com',
|
||||||
|
'instagram.com',
|
||||||
|
'johnnylooch.com',
|
||||||
|
'kexp.org',
|
||||||
|
'lahzenegar.com',
|
||||||
|
'liveedu.tv',
|
||||||
|
'livetube.cc',
|
||||||
|
'livestream.com',
|
||||||
|
'meridix.com',
|
||||||
|
'mixcloud.com',
|
||||||
|
'mixer.com',
|
||||||
|
'mobcrush.com',
|
||||||
|
'mylive.in.th',
|
||||||
|
'myspace.com',
|
||||||
|
'netflix.com',
|
||||||
|
'newretrowave.com',
|
||||||
|
'nhk.or.jp',
|
||||||
|
'nicovideo.jp',
|
||||||
|
'nico.ms',
|
||||||
|
'noisetrade.com',
|
||||||
|
'nood.tv',
|
||||||
|
'npr.org',
|
||||||
|
'openrec.tv',
|
||||||
|
'pandora.com',
|
||||||
|
'pandora.tv',
|
||||||
|
'picarto.tv',
|
||||||
|
'pscp.tv',
|
||||||
|
'restream.io',
|
||||||
|
'reverbnation.com',
|
||||||
|
'sermonaudio.com',
|
||||||
|
'smashcast.tv',
|
||||||
|
'songkick.com',
|
||||||
|
'soundcloud.com',
|
||||||
|
'spinninrecords.com',
|
||||||
|
'spotify.com',
|
||||||
|
'stitcher.com',
|
||||||
|
'stream.me',
|
||||||
|
'switchboard.live',
|
||||||
|
'tunein.com',
|
||||||
|
'twitcasting.tv',
|
||||||
|
'twitch.tv',
|
||||||
|
'twitter.com',
|
||||||
|
'vaughnlive.tv',
|
||||||
|
'veoh.com',
|
||||||
|
'vimeo.com',
|
||||||
|
'watchpeoplecode.com',
|
||||||
|
'web.tv',
|
||||||
|
'youtube.com',
|
||||||
|
'youtu.be'
|
||||||
|
];
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
props: {
|
props: {
|
||||||
url: {
|
url: {
|
||||||
type: String,
|
type: String,
|
||||||
require: true
|
require: true
|
||||||
},
|
},
|
||||||
|
|
||||||
detail: {
|
detail: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
required: false,
|
required: false,
|
||||||
default: false
|
default: false
|
||||||
|
},
|
||||||
|
|
||||||
|
mini: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
fetching: true,
|
fetching: true,
|
||||||
@@ -48,19 +135,20 @@ export default Vue.extend({
|
|||||||
thumbnail: null,
|
thumbnail: null,
|
||||||
icon: null,
|
icon: null,
|
||||||
sitename: null,
|
sitename: null,
|
||||||
youtubeId: null,
|
player: {
|
||||||
|
url: null,
|
||||||
|
width: null,
|
||||||
|
height: null
|
||||||
|
},
|
||||||
tweetUrl: null,
|
tweetUrl: null,
|
||||||
misskeyUrl
|
misskeyUrl
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
created() {
|
created() {
|
||||||
const url = new URL(this.url);
|
const url = new URL(this.url);
|
||||||
|
|
||||||
if (url.hostname == 'www.youtube.com') {
|
if (this.detail && url.hostname == 'twitter.com' && /^\/.+\/status(es)?\/\d+/.test(url.pathname)) {
|
||||||
this.youtubeId = url.searchParams.get('v');
|
|
||||||
} else if (url.hostname == 'youtu.be') {
|
|
||||||
this.youtubeId = url.pathname;
|
|
||||||
} else if (this.detail && url.hostname == 'twitter.com' && /^\/.+\/status(es)?\/\d+/.test(url.pathname)) {
|
|
||||||
this.tweetUrl = url;
|
this.tweetUrl = url;
|
||||||
const twttr = (window as any).twttr || {};
|
const twttr = (window as any).twttr || {};
|
||||||
const loadTweet = () => twttr.widgets.load(this.$refs.tweet);
|
const loadTweet = () => twttr.widgets.load(this.$refs.tweet);
|
||||||
@@ -79,27 +167,39 @@ export default Vue.extend({
|
|||||||
twttr.ready = loadTweet;
|
twttr.ready = loadTweet;
|
||||||
(window as any).twttr = twttr;
|
(window as any).twttr = twttr;
|
||||||
}
|
}
|
||||||
} else {
|
return;
|
||||||
fetch('/url?url=' + encodeURIComponent(this.url)).then(res => {
|
|
||||||
res.json().then(info => {
|
|
||||||
this.title = info.title;
|
|
||||||
this.description = info.description;
|
|
||||||
this.thumbnail = info.thumbnail;
|
|
||||||
this.icon = info.icon;
|
|
||||||
this.sitename = info.sitename;
|
|
||||||
|
|
||||||
this.fetching = false;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fetch(`/url?url=${encodeURIComponent(this.url)}`).then(res => {
|
||||||
|
res.json().then(info => {
|
||||||
|
if (info.url == null) return;
|
||||||
|
this.title = info.title;
|
||||||
|
this.description = info.description;
|
||||||
|
this.thumbnail = info.thumbnail;
|
||||||
|
this.icon = info.icon;
|
||||||
|
this.sitename = info.sitename;
|
||||||
|
this.fetching = false;
|
||||||
|
if (whiteList.some(x => x == url.hostname || url.hostname.endsWith(`.${x}`))) {
|
||||||
|
this.player = info.player;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
iframe
|
.player
|
||||||
|
position relative
|
||||||
width 100%
|
width 100%
|
||||||
|
|
||||||
|
> iframe
|
||||||
|
height 100%
|
||||||
|
left 0
|
||||||
|
position absolute
|
||||||
|
top 0
|
||||||
|
width 100%
|
||||||
|
|
||||||
root(isDark)
|
root(isDark)
|
||||||
> a
|
> a
|
||||||
display block
|
display block
|
||||||
@@ -199,6 +299,29 @@ root(isDark)
|
|||||||
width 12px
|
width 12px
|
||||||
height 12px
|
height 12px
|
||||||
|
|
||||||
|
&.mini
|
||||||
|
font-size 10px
|
||||||
|
|
||||||
|
> .thumbnail
|
||||||
|
position relative
|
||||||
|
width 100%
|
||||||
|
height 60px
|
||||||
|
|
||||||
|
> article
|
||||||
|
left 0
|
||||||
|
width 100%
|
||||||
|
padding 8px
|
||||||
|
|
||||||
|
> header
|
||||||
|
margin-bottom 4px
|
||||||
|
|
||||||
|
> footer
|
||||||
|
margin-top 4px
|
||||||
|
|
||||||
|
> img
|
||||||
|
width 12px
|
||||||
|
height 12px
|
||||||
|
|
||||||
.mk-url-preview[data-darkmode]
|
.mk-url-preview[data-darkmode]
|
||||||
root(true)
|
root(true)
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
|
import { toUnicode as decodePunycode } from 'punycode';
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
props: ['url', 'target'],
|
props: ['url', 'target'],
|
||||||
data() {
|
data() {
|
||||||
@@ -27,11 +28,11 @@ export default Vue.extend({
|
|||||||
created() {
|
created() {
|
||||||
const url = new URL(this.url);
|
const url = new URL(this.url);
|
||||||
this.schema = url.protocol;
|
this.schema = url.protocol;
|
||||||
this.hostname = url.hostname;
|
this.hostname = decodePunycode(url.hostname);
|
||||||
this.port = url.port;
|
this.port = url.port;
|
||||||
this.pathname = url.pathname;
|
this.pathname = decodeURIComponent(url.pathname);
|
||||||
this.query = url.search;
|
this.query = decodeURIComponent(url.search);
|
||||||
this.hash = url.hash;
|
this.hash = decodeURIComponent(url.hash);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -44,7 +44,12 @@ import Vue from 'vue';
|
|||||||
import * as anime from 'animejs';
|
import * as anime from 'animejs';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
props: ['source', 'compact', 'v'],
|
props: ['source', 'compact'],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
v: this.$store.state.settings.rememberNoteVisibility ? (this.$store.state.device.visibility || this.$store.state.settings.defaultNoteVisibility) : this.$store.state.settings.defaultNoteVisibility
|
||||||
|
}
|
||||||
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
const popover = this.$refs.popover as any;
|
const popover = this.$refs.popover as any;
|
||||||
@@ -92,6 +97,9 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
choose(visibility) {
|
choose(visibility) {
|
||||||
|
if (this.$store.state.settings.rememberNoteVisibility) {
|
||||||
|
this.$store.commit('device/setVisibility', visibility);
|
||||||
|
}
|
||||||
this.$emit('chosen', visibility);
|
this.$emit('chosen', visibility);
|
||||||
this.$destroy();
|
this.$destroy();
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -31,15 +31,30 @@ export default Vue.extend({
|
|||||||
default: undefined
|
default: undefined
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
fetching: true,
|
fetching: true,
|
||||||
notes: []
|
notes: [],
|
||||||
|
connection: null,
|
||||||
|
connectionId: null
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
mounted() {
|
mounted() {
|
||||||
this.fetch();
|
this.fetch();
|
||||||
|
|
||||||
|
this.connection = (this as any).os.streams.localTimelineStream.getConnection();
|
||||||
|
this.connectionId = (this as any).os.streams.localTimelineStream.use();
|
||||||
|
|
||||||
|
this.connection.on('note', this.onNote);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
beforeDestroy() {
|
||||||
|
this.connection.off('note', this.onNote);
|
||||||
|
(this as any).os.streams.localTimelineStream.dispose(this.connectionId);
|
||||||
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
fetch(cb?) {
|
fetch(cb?) {
|
||||||
this.fetching = true;
|
this.fetching = true;
|
||||||
@@ -48,14 +63,21 @@ export default Vue.extend({
|
|||||||
local: true,
|
local: true,
|
||||||
reply: false,
|
reply: false,
|
||||||
renote: false,
|
renote: false,
|
||||||
media: false,
|
file: false,
|
||||||
poll: false,
|
poll: false
|
||||||
bot: false
|
|
||||||
}).then(notes => {
|
}).then(notes => {
|
||||||
this.notes = notes;
|
this.notes = notes;
|
||||||
this.fetching = false;
|
this.fetching = false;
|
||||||
});
|
});
|
||||||
}
|
},
|
||||||
|
|
||||||
|
onNote(note) {
|
||||||
|
if (note.replyId != null) return;
|
||||||
|
if (note.renoteId != null) return;
|
||||||
|
if (note.poll != null) return;
|
||||||
|
|
||||||
|
this.notes.unshift(note);
|
||||||
|
},
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -69,25 +69,25 @@ class Autocomplete {
|
|||||||
*/
|
*/
|
||||||
private onInput() {
|
private onInput() {
|
||||||
const caretPos = this.textarea.selectionStart;
|
const caretPos = this.textarea.selectionStart;
|
||||||
const text = this.text.substr(0, caretPos);
|
const text = this.text.substr(0, caretPos).split('\n').pop();
|
||||||
|
|
||||||
const mentionIndex = text.lastIndexOf('@');
|
const mentionIndex = text.lastIndexOf('@');
|
||||||
const hashtagIndex = text.lastIndexOf('#');
|
const hashtagIndex = text.lastIndexOf('#');
|
||||||
const emojiIndex = text.lastIndexOf(':');
|
const emojiIndex = text.lastIndexOf(':');
|
||||||
|
|
||||||
const start = Math.min(
|
const max = Math.max(
|
||||||
mentionIndex == -1 ? Infinity : mentionIndex,
|
mentionIndex,
|
||||||
hashtagIndex == -1 ? Infinity : hashtagIndex,
|
hashtagIndex,
|
||||||
emojiIndex == -1 ? Infinity : emojiIndex);
|
emojiIndex);
|
||||||
|
|
||||||
if (start == Infinity) {
|
if (max == -1) {
|
||||||
this.close();
|
this.close();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const isMention = mentionIndex == start;
|
const isMention = mentionIndex != -1;
|
||||||
const isHashtag = hashtagIndex == start;
|
const isHashtag = hashtagIndex != -1;
|
||||||
const isEmoji = emojiIndex == start;
|
const isEmoji = emojiIndex != -1;
|
||||||
|
|
||||||
let opened = false;
|
let opened = false;
|
||||||
|
|
||||||
@@ -99,15 +99,15 @@ class Autocomplete {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isHashtag || opened == false) {
|
if (isHashtag && opened == false) {
|
||||||
const hashtag = text.substr(hashtagIndex + 1);
|
const hashtag = text.substr(hashtagIndex + 1);
|
||||||
if (!hashtag.includes(' ') && !hashtag.includes('\n')) {
|
if (!hashtag.includes(' ')) {
|
||||||
this.open('hashtag', hashtag);
|
this.open('hashtag', hashtag);
|
||||||
opened = true;
|
opened = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isEmoji || opened == false) {
|
if (isEmoji && opened == false) {
|
||||||
const emoji = text.substr(emojiIndex + 1);
|
const emoji = text.substr(emojiIndex + 1);
|
||||||
if (emoji != '' && emoji.match(/^[\+\-a-z0-9_]+$/)) {
|
if (emoji != '' && emoji.match(/^[\+\-a-z0-9_]+$/)) {
|
||||||
this.open('emoji', emoji);
|
this.open('emoji', emoji);
|
||||||
@@ -191,7 +191,7 @@ class Autocomplete {
|
|||||||
const acct = renderAcct(value);
|
const acct = renderAcct(value);
|
||||||
|
|
||||||
// 挿入
|
// 挿入
|
||||||
this.text = trimmedBefore + '@' + acct + ' ' + after;
|
this.text = `${trimmedBefore}@${acct} ${after}`;
|
||||||
|
|
||||||
// キャレットを戻す
|
// キャレットを戻す
|
||||||
this.vm.$nextTick(() => {
|
this.vm.$nextTick(() => {
|
||||||
@@ -207,7 +207,7 @@ class Autocomplete {
|
|||||||
const after = source.substr(caret);
|
const after = source.substr(caret);
|
||||||
|
|
||||||
// 挿入
|
// 挿入
|
||||||
this.text = trimmedBefore + '#' + value + ' ' + after;
|
this.text = `${trimmedBefore}#${value} ${after}`;
|
||||||
|
|
||||||
// キャレットを戻す
|
// キャレットを戻す
|
||||||
this.vm.$nextTick(() => {
|
this.vm.$nextTick(() => {
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user