Compare commits
733 Commits
Author | SHA1 | Date | |
---|---|---|---|
0b3609c775 | |||
be52eb9b3f | |||
5f5156561f | |||
d47f92f396 | |||
2a30bc9a56 | |||
a427b7a1af | |||
05d5e70c58 | |||
62858caaa4 | |||
b9b48a55ef | |||
7276ec185b | |||
e063ac10c5 | |||
eca9a7ea13 | |||
86d9a72bbf | |||
073707b2d0 | |||
b971fbaac6 | |||
86795f1091 | |||
5b9dd4fb80 | |||
5ff31e197b | |||
0bd5e64b86 | |||
3089b56f70 | |||
46bf0eae40 | |||
97f411130f | |||
b9ce7bc99d | |||
9d3ecda43d | |||
8356f6d128 | |||
05a084dadf | |||
f338fa552e | |||
7ab9d01bac | |||
5b0aaf66eb | |||
6a4e92a999 | |||
0a4b652493 | |||
eebc1af672 | |||
41fa045999 | |||
4b52c89a75 | |||
28dcf8bc1e | |||
5af469282a | |||
4c58dc61bc | |||
c4bf80c262 | |||
e485e8936f | |||
e495e0d2e6 | |||
3695e6db15 | |||
ac7df96f68 | |||
cf17a39446 | |||
87cc5f790c | |||
b03987290c | |||
1f4969547b | |||
d12d201ef4 | |||
c91a4c9da1 | |||
1213e95ddd | |||
90a836d587 | |||
973c2ebafd | |||
24f52aee46 | |||
4d2c0e4161 | |||
b687546fcd | |||
3c701aaf86 | |||
d50e99c17b | |||
41d5e0ab24 | |||
c99e864dbc | |||
f39adfdf87 | |||
0d1ffb581f | |||
4add44f3bd | |||
baae9f6f39 | |||
0a9958f45f | |||
7e5d25cf2c | |||
9666e6b4d3 | |||
c937cb94f9 | |||
5e54d093f5 | |||
c7f099276e | |||
ee4235ba71 | |||
71066d69fb | |||
4581376198 | |||
04ebde62bc | |||
fec47f05cf | |||
b9e2fb74ed | |||
a1d6637dd1 | |||
e6fa5a07ce | |||
eec6226c8d | |||
356fe8180e | |||
30c120596a | |||
c6e330ea8d | |||
dca55d12ac | |||
4426da6233 | |||
381fe2f436 | |||
28cd7a67de | |||
97f75cea52 | |||
5e788f0da4 | |||
1fc9d034d0 | |||
dc8f14c23a | |||
e9717da916 | |||
73c328f90b | |||
25a6f7041a | |||
ff278c8bea | |||
35dd6a5ac3 | |||
98ea238087 | |||
3830b0d831 | |||
b6de5a2268 | |||
77327c7a40 | |||
26664a8351 | |||
912964104b | |||
63653ccb01 | |||
5df54700b8 | |||
f952dde1d4 | |||
2c0aac5eed | |||
4e3a2c4bb8 | |||
17ccfcfb53 | |||
f2959ada85 | |||
e427c12ac2 | |||
874837666c | |||
c66532d18f | |||
2bc572b4cc | |||
2db01f3d5c | |||
a0a116b7bf | |||
aec7d53414 | |||
09416c9893 | |||
0e7fe670aa | |||
bd805f1d88 | |||
b984aecaf2 | |||
56efffffa3 | |||
2f92be1da0 | |||
baa52921a0 | |||
20e0c44f9a | |||
ebc83c8f60 | |||
2d48d9fd87 | |||
5eb06a3a52 | |||
9917a1c7e1 | |||
e9c886e871 | |||
0074f8da1b | |||
1c98b51e6a | |||
837bdb1b43 | |||
48e034be0e | |||
b067162ce6 | |||
db42d5b065 | |||
c41ccf7821 | |||
f5fd523ca7 | |||
5f9482e7d5 | |||
bb98ee27a1 | |||
3506dd3656 | |||
88d0b09c88 | |||
25b88f89a6 | |||
85343b80b7 | |||
6766fbdfb3 | |||
c488fca2f2 | |||
ea51460169 | |||
80e7af30d0 | |||
8f20edaed0 | |||
4d7b2d7215 | |||
d0993a8988 | |||
b68af344cb | |||
58fdeb50f3 | |||
1af3c42001 | |||
8ef066adda | |||
5cc7fa8e8b | |||
fc998ac57c | |||
9e4fe16f56 | |||
0cc00101dc | |||
227cfd6e2f | |||
876f659847 | |||
555501d534 | |||
eb392b1251 | |||
e32bf34830 | |||
94ff21649d | |||
35ff0ab2b6 | |||
c3e3007cd5 | |||
fadc80166b | |||
9201b5318b | |||
c94a9671a2 | |||
7b3f52505e | |||
313afbd6db | |||
0c4f02f288 | |||
b2d33fba66 | |||
a673393db5 | |||
9f55d4057d | |||
c00a58fc06 | |||
f49db22311 | |||
204f43e717 | |||
77a8894ced | |||
f85122b141 | |||
0cd07cd605 | |||
eb8604f926 | |||
8b3cb850a5 | |||
48d1b9444c | |||
fda0a991a2 | |||
bb61bd0c96 | |||
10e89e656a | |||
741756d114 | |||
4f36ff0233 | |||
5be69edf2e | |||
730cdceab1 | |||
fa0600afe0 | |||
fc7db7f23c | |||
e09429f932 | |||
947cd32e85 | |||
65a3c7dae4 | |||
0374f58a11 | |||
a7ff8678b5 | |||
b85ae2f77f | |||
9f93353519 | |||
37935ed467 | |||
8ed9e44a78 | |||
a796a68e8a | |||
f2b467c5e7 | |||
21d22b60b4 | |||
f76d204e09 | |||
6775d4da9b | |||
0264430831 | |||
76c1077b8e | |||
6efb4eeb6e | |||
f7eb7322fb | |||
cf8b8bad01 | |||
07fc3360b6 | |||
61f57e3f53 | |||
cd8696076e | |||
fb45e7148a | |||
404823eadb | |||
324822599a | |||
053530ed34 | |||
4f1cb005d7 | |||
f3d2183a23 | |||
cdac86d104 | |||
291627ac15 | |||
0025f3b526 | |||
678e80bb8b | |||
88c37cdcac | |||
8ed2ca9018 | |||
27c99ef894 | |||
41bed99b4c | |||
b127b772fe | |||
2698c2d3b5 | |||
7c984d20d7 | |||
844085d7a7 | |||
404cc016e2 | |||
98f643f98e | |||
9985f85aad | |||
959f2cd61d | |||
2a2ef53e4f | |||
3648b56fc1 | |||
d422fa58cd | |||
ee7e9b328d | |||
450c1224fd | |||
7885d73f80 | |||
7bdcdcc1ce | |||
d375588f7c | |||
2484894d43 | |||
d82fe69469 | |||
cb5657e15c | |||
16e2ee2759 | |||
5621b280ff | |||
8cd6efbc38 | |||
0f4f862840 | |||
14f74a561c | |||
bd970cf215 | |||
57052013bb | |||
8e11e2e3fc | |||
ef58503537 | |||
a46d230308 | |||
e85ac32c2d | |||
a7e27c2419 | |||
a4c9a93b6d | |||
1f3837a8c6 | |||
d92044cf6a | |||
aa4ef6745a | |||
865fd25af1 | |||
2cdcbcc80e | |||
5ea0f23389 | |||
196a93dc4d | |||
eb6d9d66cf | |||
142de603bd | |||
8ed710965f | |||
dc2a7ca2d5 | |||
32cdbb70d6 | |||
f2e168bd0a | |||
311a5cc9e3 | |||
878f2f9015 | |||
2923950d40 | |||
0cd1cd787a | |||
ae8a87c40b | |||
c3597941db | |||
d26524767d | |||
8d61a52eaa | |||
d5bad25c63 | |||
165e0a3d54 | |||
e74c1f2ac6 | |||
42d4e6610f | |||
4179685bb6 | |||
a81a34cd76 | |||
118db9b267 | |||
fd67d5cb4c | |||
cb0f95ee7d | |||
029b92935c | |||
bc13538167 | |||
9b41023c43 | |||
9f1ede0e3e | |||
fcfd9239c1 | |||
10e9d3f32f | |||
11439afde7 | |||
359d3b4392 | |||
d53d45f797 | |||
c6ea5419ff | |||
7dcb979983 | |||
034d529afa | |||
fb764abeae | |||
d0bce21993 | |||
5ba4d0a8c4 | |||
8864158d85 | |||
85b8749f02 | |||
b412b4a9ff | |||
081ad9adcf | |||
80f2cc6728 | |||
bc627da923 | |||
c1b77365a0 | |||
7994aa96e2 | |||
ccc79eac91 | |||
f0fbff824b | |||
7293baa1f9 | |||
20abea6744 | |||
b666fdcc1a | |||
70c3357f39 | |||
9d49636cd1 | |||
67afe968b4 | |||
09cc5afad6 | |||
ab53d80fcf | |||
1d520473ed | |||
4636768810 | |||
01e9402b2c | |||
947690870b | |||
dd93551ebf | |||
bf237c3dca | |||
7e108e9f5c | |||
75dbbd115b | |||
09ca24b032 | |||
f3d125a3f9 | |||
51a9666b91 | |||
2118fc1f0a | |||
4182e2bd6d | |||
c349711e0d | |||
810b4c7191 | |||
9f730f23e9 | |||
8a6c9a9e35 | |||
3a98f5a419 | |||
597784a3e8 | |||
48354ece42 | |||
be8624250d | |||
168f73e988 | |||
a4d62c7c7a | |||
83eab954f1 | |||
f934fb171a | |||
fe3d95f394 | |||
10e5caa766 | |||
5fb8f5a8c7 | |||
1673957aa6 | |||
91db717485 | |||
be90e179c6 | |||
3b1b8e9493 | |||
4a1ed5a3ca | |||
212db199e8 | |||
b57a43b26c | |||
a1ba5b1316 | |||
92457f91ae | |||
e84bae9e84 | |||
1b2682c228 | |||
6fa825f15d | |||
beae1c2860 | |||
6f975acbb6 | |||
5e7bed8db3 | |||
177510afdf | |||
d912cd3b75 | |||
c426748fe2 | |||
64d80f8f48 | |||
c1d767b0ae | |||
edeb09eee2 | |||
bdb5081c05 | |||
7dc410691d | |||
772b9d0ae7 | |||
b0ff4533e2 | |||
72a09434e3 | |||
87df50b7e7 | |||
d3d21be588 | |||
5b92ebfabd | |||
a9d1d8f034 | |||
436ded4f4f | |||
de55794761 | |||
a23ef386ea | |||
572aa662f6 | |||
8b10bee881 | |||
f492458d85 | |||
d2289039d6 | |||
019fbf5268 | |||
8d7b04b0e2 | |||
6e1f8d0533 | |||
b412d2a30a | |||
cbd9f57468 | |||
2e0ee21964 | |||
24b20b8d32 | |||
d1843e2e27 | |||
30e7aa23d8 | |||
9f5c22e7c2 | |||
4f88739b01 | |||
18c50c82bc | |||
0b87b16cba | |||
d454cf7493 | |||
66e5b36d16 | |||
f582cd5c71 | |||
bf731897a3 | |||
a823792d8d | |||
9e894dfd55 | |||
bd90ebeafd | |||
ee12027739 | |||
e02f3558eb | |||
f410e1c4fa | |||
e41bc54d43 | |||
1599e06ffb | |||
84c49a23c9 | |||
95c94758cb | |||
3bc5c5914b | |||
69d2cd3b6d | |||
4bca467bd3 | |||
20061ae5a1 | |||
78867c3cc9 | |||
f8911cad32 | |||
dd9a461cf5 | |||
1516ce86f4 | |||
58ab04f2f4 | |||
3e651e3ea2 | |||
b02c00eb41 | |||
a9ee45d977 | |||
156e66438a | |||
9ac34badad | |||
fdf145657d | |||
f93e0a624e | |||
c8e3af32be | |||
62b3a49b5f | |||
be88eee8f6 | |||
e7fb192f5d | |||
18e2ca89b7 | |||
ec8c388f99 | |||
a1518df41a | |||
312ef38d62 | |||
ed3e0a9d9c | |||
d7ca93b9fa | |||
910dfd6ad2 | |||
041415519b | |||
0ba877fef1 | |||
839c93961c | |||
30b1be97dd | |||
55be57ad21 | |||
58064ec633 | |||
d63044a15e | |||
5422697397 | |||
36c2f8fe5d | |||
2defddc153 | |||
fb9a219349 | |||
3b5e4276c8 | |||
fab2e08a0d | |||
19e9099a78 | |||
91c2b07cd8 | |||
fd00c7bd81 | |||
8919082179 | |||
2f7c191547 | |||
80519dc366 | |||
4d53c813e4 | |||
750f479d58 | |||
e9a7e99108 | |||
ebf10b3452 | |||
5d621f5318 | |||
35dedfc7e4 | |||
39094adfcf | |||
74a25bfaa0 | |||
04ef2f0c8d | |||
fb99906a8c | |||
da0d3e4129 | |||
3ffe90146c | |||
81cea41154 | |||
3ff4f53bbd | |||
a77f67fc32 | |||
47c45d48b1 | |||
cdd9585cb8 | |||
db60188847 | |||
21a2e5f415 | |||
2377c9b4cb | |||
296f6b1553 | |||
e15643ca46 | |||
9632ba40cc | |||
a2cdeeb6c7 | |||
a23857ce3c | |||
78677b3aa7 | |||
7dd264953f | |||
17af9c3ab6 | |||
4b49f8fbb8 | |||
e253225c66 | |||
6abb6f90f6 | |||
9fb2743a38 | |||
17792716a7 | |||
ae7282358e | |||
abc082f7c0 | |||
bf1163ae84 | |||
be74ca472a | |||
31b472fa47 | |||
b502627494 | |||
a8017369d0 | |||
3f0b5e4318 | |||
aea8f93e02 | |||
874411990b | |||
780268f70e | |||
3a8a374e87 | |||
488f36d491 | |||
4d48b0be99 | |||
44f3888c24 | |||
a76fb4c173 | |||
e4aa003157 | |||
247f334334 | |||
509cdae832 | |||
5ff59b3339 | |||
2b1a785f24 | |||
2c0b137848 | |||
ef68e633cf | |||
e9e63ba950 | |||
3fd6167e71 | |||
6b0573ded1 | |||
328dc80324 | |||
24d8617f81 | |||
e2c3d4f2fb | |||
60229d73c9 | |||
40235463bc | |||
c6cbadc514 | |||
3c3c67a34c | |||
72eedd2ff9 | |||
a7e9d5a60b | |||
c3d081b700 | |||
57f62c919c | |||
19bdd4fa2a | |||
9d8391583f | |||
6037b0acc5 | |||
09c5efc161 | |||
16c2aefe7b | |||
06cfa207fc | |||
0be8bbc19f | |||
bad85375de | |||
6c11a7a6c4 | |||
6f38c6f339 | |||
fb1d727db9 | |||
d98d286dc4 | |||
1be279dbaa | |||
90e6feeb4c | |||
f1f9f235c7 | |||
eb3f938281 | |||
d6ef923134 | |||
5b01577810 | |||
2a111d472a | |||
a8809e89b9 | |||
1ab9a49d01 | |||
f92c116564 | |||
b54539b647 | |||
87fc6522fb | |||
b0408d1d6e | |||
39779ca8d5 | |||
8c34f7559d | |||
740c7c2476 | |||
abd43dd471 | |||
c24b5410bc | |||
cde7d0f463 | |||
54548c3ed0 | |||
221d1edf0f | |||
02e75f9539 | |||
6bed2ff106 | |||
f3e1e4d1da | |||
370f6384d9 | |||
0105587d04 | |||
e327970ab9 | |||
9e247f39ff | |||
09f3a10b46 | |||
c3679a84e5 | |||
75f8d5e7d9 | |||
6ba4fa50b9 | |||
f5e130f2a6 | |||
cd5dcd87b0 | |||
54f319af0e | |||
96949059cf | |||
763368db99 | |||
f622ea654f | |||
70c4e6c287 | |||
d7692e875a | |||
0a94010668 | |||
50bd1d9a5d | |||
d45121a93b | |||
a55e3fb225 | |||
426b2f5858 | |||
3d10b5e538 | |||
b639599620 | |||
63c51c6ee0 | |||
f39934c274 | |||
adec1643bf | |||
229ea7d3ab | |||
03899f042d | |||
46d7cee639 | |||
eb0c378138 | |||
79d1bf30a4 | |||
5786434f37 | |||
3633d7ada1 | |||
b95d4aed11 | |||
c2f599a33c | |||
89361cfce4 | |||
278a6c504a | |||
e140ddf7be | |||
f00ba4e704 | |||
8128656a9e | |||
f2f7a6de6b | |||
8651d81b73 | |||
2458255e22 | |||
ea12c6e2c0 | |||
2e22bd2ecf | |||
777cb0033e | |||
127c126ef5 | |||
01ff8d171a | |||
457c23fffa | |||
b07911ec68 | |||
fb211d59a8 | |||
4e586d35a9 | |||
52f2461fe6 | |||
ac7dab8b6e | |||
5e171c2ad1 | |||
b4a139515c | |||
30219f6b6f | |||
d19e6bdd03 | |||
65ce0a5e54 | |||
c2659d68dc | |||
773c7ba14b | |||
93e617f488 | |||
f7959c073f | |||
6953970be7 | |||
1496fdaf80 | |||
0fc034b1ac | |||
c3312c918e | |||
5a13964ced | |||
fe07b1cb7f | |||
d805a70508 | |||
0f0009e0db | |||
4c4cb2bb17 | |||
fe319a529f | |||
91bea1f6c7 | |||
01745f7c65 | |||
5d3943ffa8 | |||
e66d7babc5 | |||
80e5645a84 | |||
a766faeae9 | |||
4d2d226446 | |||
61e83b10c3 | |||
ed675f0956 | |||
9cce8ab214 | |||
daa409cd82 | |||
9d65415fdc | |||
8c40917cc2 | |||
871f886702 | |||
f19075c50a | |||
71da205ab7 | |||
a34cc47a11 | |||
cbddaf1d19 | |||
1f1ed2da4c | |||
8d81bd0dc0 | |||
5773a5bfa6 | |||
7275a48102 | |||
8f84dd610c | |||
f1f466ed23 | |||
0ca5237139 | |||
20549bfdf0 | |||
d692bb3c52 | |||
44cd1e9223 | |||
f0fec654ff | |||
4e04e5e0c0 | |||
4991fb2769 | |||
4d90d554f8 | |||
e5468713ac | |||
77013f982d | |||
0460cdedd7 | |||
73f5bf69e8 | |||
750c0d7df2 | |||
2fcebdd281 | |||
e4e65a4cd5 | |||
e010ecb03f | |||
fc74db668d | |||
1bac3418b4 | |||
53df8c48b7 | |||
92702fe47e | |||
017c4c12cd | |||
830d246ba4 | |||
6b33afa916 | |||
69a3efd534 | |||
2d0adb8f4c | |||
da9d8cb138 | |||
2acaca8582 | |||
11cf82c6a4 | |||
1ef66c962a | |||
03f20599ba | |||
d150b10b3e | |||
c4f323aae3 | |||
8297f8ccd0 | |||
f336241576 | |||
f6d9a7e7c3 | |||
80d1ee7543 | |||
e55a254353 | |||
555a0f276c | |||
cdce7aa5e2 | |||
82cea185b2 | |||
f92a4bb195 | |||
9f4f88df9c | |||
e69803cbd1 | |||
a9885be09e | |||
7b011f4a91 | |||
41c404abe6 | |||
2089a761cf | |||
0ee2df010d | |||
466844c016 | |||
bbf9a08649 | |||
c985c66652 | |||
f9dc96320e | |||
42552789fe | |||
1a2ffeb0b5 | |||
4f75493249 | |||
42193695fb | |||
02af0de21e | |||
5f8e10e524 | |||
cee93d746c | |||
08704a383f | |||
acdf7c244f | |||
a72b6745aa | |||
24086e9023 | |||
c3d4b5ad38 | |||
cc618a83e5 | |||
9eaa0b27db | |||
a8835a679e | |||
656bc6df84 | |||
019aaf7d82 | |||
76bafbf398 | |||
030bcb99b1 |
@ -1,67 +1,83 @@
|
|||||||
# インスタンス名
|
name: example-instance-name # Name of your instance
|
||||||
name:
|
description: example-description # Description of your instance
|
||||||
|
|
||||||
# インスタンスの紹介
|
|
||||||
description:
|
|
||||||
|
|
||||||
# サーバーのメンテナ情報
|
|
||||||
maintainer:
|
maintainer:
|
||||||
# メンテナの名前
|
name: example-maitainer-name # Your name
|
||||||
name:
|
url: http://example.com/ # Your contact (http or mailto)
|
||||||
|
repository_url: https://github.com/syuilo/misskey # Repository URL
|
||||||
|
feedback_url: https://github.com/syuilo/misskey/issues # Feedback URL (e.g. github issue)
|
||||||
|
|
||||||
# メンテナの連絡先(URLかmailto形式のURL)
|
# URL and Port settings overview
|
||||||
url:
|
# e.g., If you want to realize following structure:
|
||||||
|
#
|
||||||
|
# +--- https://example.com:123 ----------+
|
||||||
|
# +------+ |+-------------+ +---------------+|
|
||||||
|
# | User | ---> || Proxy (123) | ---> | Misskey (456) ||
|
||||||
|
# +------+ |+-------------+ +---------------+|
|
||||||
|
# +--------------------------------------+
|
||||||
|
#
|
||||||
|
# You need to set 'https://example.com:123' to 'url' prop and
|
||||||
|
# You need to set 456 to 'port' prop.
|
||||||
|
#
|
||||||
|
# In other words, the 'url' prop should be the final accessible URL seen by a user.
|
||||||
|
# 'port' prop is a port that the Misskey server should actually listen
|
||||||
|
# on and it is not necessarily the port that a user accesses.
|
||||||
|
|
||||||
# (Misskeyを動かす)URL
|
url: http://localhost/
|
||||||
url:
|
|
||||||
|
|
||||||
# 待受ポート
|
# A port that your Misskey server should listen.
|
||||||
port:
|
# This value is not a port to use when accessing with a browser.
|
||||||
|
port: 80
|
||||||
|
|
||||||
# TLSの設定(利用しない場合は省略してください)
|
|
||||||
https:
|
|
||||||
# 証明書のパス...
|
|
||||||
key:
|
|
||||||
cert:
|
|
||||||
|
|
||||||
# MongoDBの設定
|
|
||||||
mongodb:
|
mongodb:
|
||||||
host: localhost
|
host: localhost
|
||||||
port: 27017
|
port: 27017
|
||||||
db: misskey
|
db: misskey
|
||||||
user:
|
user: example-misskey-user
|
||||||
pass:
|
pass: example-misskey-pass
|
||||||
|
|
||||||
# Redisの設定
|
|
||||||
redis:
|
redis:
|
||||||
host: localhost
|
host: localhost
|
||||||
port: 6379
|
port: 6379
|
||||||
pass:
|
pass: example-pass
|
||||||
|
|
||||||
# reCAPTCHAの設定
|
|
||||||
recaptcha:
|
recaptcha:
|
||||||
site_key:
|
site_key: example-site-key
|
||||||
secret_key:
|
secret_key: example-secret-key
|
||||||
|
|
||||||
# ServiceWrokerの設定
|
# If enabled:
|
||||||
sw:
|
# Server will not cache remote files (Using direct link instead).
|
||||||
# VAPIDの公開鍵
|
# You can save your storage.
|
||||||
public_key:
|
# Users cannot see remote images when they turn off "Show media from a remote server" setting.
|
||||||
|
|
||||||
# VAPIDの秘密鍵
|
|
||||||
private_key:
|
|
||||||
|
|
||||||
# Google Maps API
|
|
||||||
google_maps_api_key:
|
|
||||||
|
|
||||||
# Twitterインテグレーションの設定(利用しない場合は省略可能)
|
|
||||||
twitter:
|
|
||||||
# インテグレーション用アプリのコンシューマーキー
|
|
||||||
consumer_key:
|
|
||||||
|
|
||||||
# インテグレーション用アプリのコンシューマーシークレット
|
|
||||||
consumer_secret:
|
|
||||||
|
|
||||||
# true にすると、リモートのファイルをキャッシュしなくなります(直リンクします)。
|
|
||||||
# ストレージ容量を節約することができますが、「リモートメディアを表示しない」設定をオンにしているユーザーは、リモートの画像などは見えなくなります。
|
|
||||||
preventCache: false
|
preventCache: false
|
||||||
|
|
||||||
|
#
|
||||||
|
# Below settings are optional
|
||||||
|
#
|
||||||
|
|
||||||
|
# TLS
|
||||||
|
# https:
|
||||||
|
# # path for certification
|
||||||
|
# key: example-tls-key
|
||||||
|
# cert: example-tls-cert
|
||||||
|
|
||||||
|
# Elasticsearch
|
||||||
|
# elasticsearch:
|
||||||
|
# host: localhost
|
||||||
|
# port: 9200
|
||||||
|
# pass: null
|
||||||
|
|
||||||
|
# ServiceWorker
|
||||||
|
# sw:
|
||||||
|
# # Public key of VAPID
|
||||||
|
# public_key: example-sw-public-key
|
||||||
|
|
||||||
|
# # Private key of VAPID
|
||||||
|
# private_key: example-sw-private-key
|
||||||
|
|
||||||
|
# google_maps_api_key: example-google-maps-api-key
|
||||||
|
|
||||||
|
# Twitter integration
|
||||||
|
# twitter:
|
||||||
|
# consumer_key: example-twitter-consumer-key
|
||||||
|
# consumer_secret: example-twitter-consumer-secret-key
|
||||||
|
1
.gitattributes
vendored
@ -2,3 +2,4 @@
|
|||||||
*.psd -diff -text
|
*.psd -diff -text
|
||||||
*.ai -diff -text
|
*.ai -diff -text
|
||||||
yarn.lock -diff -text
|
yarn.lock -diff -text
|
||||||
|
package-lock.json -diff -text
|
||||||
|
1
.gitignore
vendored
@ -10,5 +10,4 @@ npm-debug.log
|
|||||||
*.pem
|
*.pem
|
||||||
run.bat
|
run.bat
|
||||||
api-docs.json
|
api-docs.json
|
||||||
package-lock.json
|
|
||||||
*.log
|
*.log
|
||||||
|
17
CHANGELOG.md
@ -1,6 +1,23 @@
|
|||||||
ChangeLog
|
ChangeLog
|
||||||
=========
|
=========
|
||||||
|
|
||||||
|
破壊的変更のみ記載。
|
||||||
|
|
||||||
|
This document describes breaking changes only.
|
||||||
|
|
||||||
|
4.0.0
|
||||||
|
-----
|
||||||
|
|
||||||
|
オセロがリバーシに変更されました。
|
||||||
|
|
||||||
|
Othello is now Reversi.
|
||||||
|
|
||||||
|
### Migration
|
||||||
|
|
||||||
|
MongoDBの、`othelloGames`と`othelloMatchings`コレクションをそれぞれ`reversiGames`と`reversiMatchings`にリネームしてください。
|
||||||
|
|
||||||
|
You need to rename `othelloGames` and `othelloMatchings` MongoDB collections to `reversiGames` and `reversiMatchings`.
|
||||||
|
|
||||||
3.0.0
|
3.0.0
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
31
README.md
@ -5,9 +5,7 @@
|
|||||||
|
|
||||||
[![][travis-badge]][travis-link]
|
[![][travis-badge]][travis-link]
|
||||||
[![][dependencies-badge]][dependencies-link]
|
[![][dependencies-badge]][dependencies-link]
|
||||||
[![][himawari-badge]][himasaku]
|
[](http://makeapullrequest.com) [](https://greenkeeper.io/)
|
||||||
[![][sakurako-badge]][himasaku]
|
|
||||||
[](http://makeapullrequest.com)
|
|
||||||
|
|
||||||
> Lead Maintainer: [syuilo][syuilo-link]
|
> Lead Maintainer: [syuilo][syuilo-link]
|
||||||
|
|
||||||
@ -16,17 +14,17 @@ ultimately sophisticated professional microblogging software.
|
|||||||
|
|
||||||
<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>
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
:sparkles: Features
|
:sparkles: Features
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
* Reactions
|
* Reactions
|
||||||
* User lists
|
* User lists
|
||||||
* Customizable column view (known as MisskeyDeck)
|
* Customizable column view (called MisskeyDeck)
|
||||||
* and widgets!
|
* and widgets!
|
||||||
* Private messages
|
* Private messages
|
||||||
* Mute
|
* Mute
|
||||||
* Streaming
|
* Real-time timelines
|
||||||
* ActivityPub compatible
|
* ActivityPub compatible
|
||||||
|
|
||||||
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).
|
||||||
@ -46,18 +44,15 @@ If you want to...
|
|||||||
|
|
||||||
:heart: Backers & Sponsors
|
:heart: Backers & Sponsors
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
[![Backers][backers-image]][support-url]
|
| ![][nagarus-icon] | ![][dansup-icon] |
|
||||||
[![Sponsors][sponsors-image]][support-url]
|
|:-:|:-:|
|
||||||
|
| [nagarus][nagarus-link] | [dansup][dansup-link] |
|
||||||
| ![][ooo-icon] |
|
|
||||||
|:-:|
|
|
||||||
| [ooo][ooo-link] |
|
|
||||||
|
|
||||||
:four_leaf_clover: Copyright
|
:four_leaf_clover: Copyright
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
> Copyright (c) 2014-2018 syuilo
|
> Copyright (c) 2014-2018 syuilo
|
||||||
|
|
||||||
Misskey is an open-source software licensed under [GNU AGPLv3](LICENSE).
|
Misskey is an open-source software licensed under the [GNU AGPLv3](LICENSE).
|
||||||
|
|
||||||
[![][agpl-3.0-badge]][AGPL-3.0]
|
[![][agpl-3.0-badge]][AGPL-3.0]
|
||||||
|
|
||||||
@ -67,9 +62,6 @@ Misskey is an open-source software licensed under [GNU AGPLv3](LICENSE).
|
|||||||
[travis-badge]: http://img.shields.io/travis/syuilo/misskey/master.svg?style=flat-square
|
[travis-badge]: http://img.shields.io/travis/syuilo/misskey/master.svg?style=flat-square
|
||||||
[dependencies-link]: https://david-dm.org/syuilo/misskey
|
[dependencies-link]: https://david-dm.org/syuilo/misskey
|
||||||
[dependencies-badge]: https://img.shields.io/david/syuilo/misskey.svg?style=flat-square
|
[dependencies-badge]: https://img.shields.io/david/syuilo/misskey.svg?style=flat-square
|
||||||
[himasaku]: https://himasaku.net
|
|
||||||
[himawari-badge]: https://img.shields.io/badge/%E5%8F%A4%E8%B0%B7-%E5%90%91%E6%97%A5%E8%91%B5-1684c5.svg?style=flat-square
|
|
||||||
[sakurako-badge]: https://img.shields.io/badge/%E5%A4%A7%E5%AE%A4-%E6%AB%BB%E5%AD%90-efb02a.svg?style=flat-square
|
|
||||||
|
|
||||||
[backer-url]: #backers
|
[backer-url]: #backers
|
||||||
[backer-badge]: https://opencollective.com/misskey/backers/badge.svg
|
[backer-badge]: https://opencollective.com/misskey/backers/badge.svg
|
||||||
@ -82,5 +74,8 @@ Misskey is an open-source software licensed under [GNU AGPLv3](LICENSE).
|
|||||||
[syuilo-link]: https://syuilo.com
|
[syuilo-link]: https://syuilo.com
|
||||||
[syuilo-icon]: https://avatars2.githubusercontent.com/u/4439005?v=3&s=70
|
[syuilo-icon]: https://avatars2.githubusercontent.com/u/4439005?v=3&s=70
|
||||||
|
|
||||||
[ooo-link]: https://www.patreon.com/user/creators?u=11601413
|
[nagarus-link]: https://www.patreon.com/user/creators?u=11601413
|
||||||
[ooo-icon]: https://c10.patreonusercontent.com/3/eyJ2IjoiMSIsInciOjIwMH0%3D/patreon-media/user/11601413/20cb15f209924302b399b99d3c98b850?token-time=2145916800&token-hash=IO31nK6VZCMWBWU2VAk2c824BX2QZ4DNPKyHHZXS0iw%3D
|
[nagarus-icon]: https://c10.patreonusercontent.com/3/eyJ2IjoiMSIsInciOjIwMH0%3D/patreon-media/user/11601413/20cb15f209924302b399b99d3c98b850?token-time=2145916800&token-hash=IO31nK6VZCMWBWU2VAk2c824BX2QZ4DNPKyHHZXS0iw%3D
|
||||||
|
[dansup-link]: https://www.patreon.com/dansup
|
||||||
|
[dansup-icon]: https://c10.patreonusercontent.com/3/eyJ2IjoiMSIsInciOjIwMH0%3D/patreon-media/user/4503830/ccf2cc867ea64de0b524bb2e24b9a1cb?token-time=2145916800&token-hash=opXAM_pnhUTuN1jCA6p_Nn_YsaqohY465YFjWFqMEEE%3D
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 3.9 KiB |
BIN
assets/icons/128.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
assets/icons/16.png
Normal file
After Width: | Height: | Size: 446 B |
BIN
assets/icons/192.png
Normal file
After Width: | Height: | Size: 3.8 KiB |
BIN
assets/icons/256.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
assets/icons/32.png
Normal file
After Width: | Height: | Size: 774 B |
BIN
assets/icons/64.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
assets/title.png
Before Width: | Height: | Size: 6.6 KiB After Width: | Height: | Size: 3.8 KiB |
168
cli/init.js
@ -1,168 +0,0 @@
|
|||||||
const fs = require('fs');
|
|
||||||
const path = require('path');
|
|
||||||
const yaml = require('js-yaml');
|
|
||||||
const inquirer = require('inquirer');
|
|
||||||
const chalk = require('chalk');
|
|
||||||
|
|
||||||
const configDirPath = `${__dirname}/../.config`;
|
|
||||||
const configPath = `${configDirPath}/default.yml`;
|
|
||||||
|
|
||||||
const form = [{
|
|
||||||
type: 'input',
|
|
||||||
name: 'maintainerName',
|
|
||||||
message: 'Your name:'
|
|
||||||
}, {
|
|
||||||
type: 'input',
|
|
||||||
name: 'maintainerUrl',
|
|
||||||
message: 'Your home page URL or your mailto URL:'
|
|
||||||
}, {
|
|
||||||
type: 'input',
|
|
||||||
name: 'url',
|
|
||||||
message: 'URL you want to run Misskey:',
|
|
||||||
validate: function(wannabeurl) {
|
|
||||||
return wannabeurl.match('^http\(s?\)://') ? true :
|
|
||||||
'URL needs to start with http:// or https://';
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
type: 'input',
|
|
||||||
name: 'port',
|
|
||||||
message: 'Listen port (e.g. 443):'
|
|
||||||
}, {
|
|
||||||
type: 'confirm',
|
|
||||||
name: 'https',
|
|
||||||
message: 'Use TLS?',
|
|
||||||
default: false
|
|
||||||
}, {
|
|
||||||
type: 'input',
|
|
||||||
name: 'https_key',
|
|
||||||
message: 'Path of tls key:',
|
|
||||||
when: ctx => ctx.https
|
|
||||||
}, {
|
|
||||||
type: 'input',
|
|
||||||
name: 'https_cert',
|
|
||||||
message: 'Path of tls cert:',
|
|
||||||
when: ctx => ctx.https
|
|
||||||
}, {
|
|
||||||
type: 'input',
|
|
||||||
name: 'https_ca',
|
|
||||||
message: 'Path of tls ca:',
|
|
||||||
when: ctx => ctx.https
|
|
||||||
}, {
|
|
||||||
type: 'input',
|
|
||||||
name: 'mongo_host',
|
|
||||||
message: 'MongoDB\'s host:',
|
|
||||||
default: 'localhost'
|
|
||||||
}, {
|
|
||||||
type: 'input',
|
|
||||||
name: 'mongo_port',
|
|
||||||
message: 'MongoDB\'s port:',
|
|
||||||
default: '27017'
|
|
||||||
}, {
|
|
||||||
type: 'input',
|
|
||||||
name: 'mongo_db',
|
|
||||||
message: 'MongoDB\'s db:',
|
|
||||||
default: 'misskey'
|
|
||||||
}, {
|
|
||||||
type: 'input',
|
|
||||||
name: 'mongo_user',
|
|
||||||
message: 'MongoDB\'s user:'
|
|
||||||
}, {
|
|
||||||
type: 'password',
|
|
||||||
name: 'mongo_pass',
|
|
||||||
message: 'MongoDB\'s password:'
|
|
||||||
}, {
|
|
||||||
type: 'input',
|
|
||||||
name: 'redis_host',
|
|
||||||
message: 'Redis\'s host:',
|
|
||||||
default: 'localhost'
|
|
||||||
}, {
|
|
||||||
type: 'input',
|
|
||||||
name: 'redis_port',
|
|
||||||
message: 'Redis\'s port:',
|
|
||||||
default: '6379'
|
|
||||||
}, {
|
|
||||||
type: 'password',
|
|
||||||
name: 'redis_pass',
|
|
||||||
message: 'Redis\'s password:'
|
|
||||||
}, {
|
|
||||||
type: 'confirm',
|
|
||||||
name: 'elasticsearch',
|
|
||||||
message: 'Use Elasticsearch?',
|
|
||||||
default: false
|
|
||||||
}, {
|
|
||||||
type: 'input',
|
|
||||||
name: 'es_host',
|
|
||||||
message: 'Elasticsearch\'s host:',
|
|
||||||
default: 'localhost',
|
|
||||||
when: ctx => ctx.elasticsearch
|
|
||||||
}, {
|
|
||||||
type: 'input',
|
|
||||||
name: 'es_port',
|
|
||||||
message: 'Elasticsearch\'s port:',
|
|
||||||
default: '9200',
|
|
||||||
when: ctx => ctx.elasticsearch
|
|
||||||
}, {
|
|
||||||
type: 'password',
|
|
||||||
name: 'es_pass',
|
|
||||||
message: 'Elasticsearch\'s password:',
|
|
||||||
when: ctx => ctx.elasticsearch
|
|
||||||
}, {
|
|
||||||
type: 'input',
|
|
||||||
name: 'recaptcha_site',
|
|
||||||
message: 'reCAPTCHA\'s site key:'
|
|
||||||
}, {
|
|
||||||
type: 'input',
|
|
||||||
name: 'recaptcha_secret',
|
|
||||||
message: 'reCAPTCHA\'s secret key:'
|
|
||||||
}];
|
|
||||||
|
|
||||||
inquirer.prompt(form).then(as => {
|
|
||||||
// Mapping answers
|
|
||||||
const conf = {
|
|
||||||
maintainer: {
|
|
||||||
name: as['maintainerName'],
|
|
||||||
url: as['maintainerUrl']
|
|
||||||
},
|
|
||||||
url: as['url'],
|
|
||||||
port: parseInt(as['port'], 10),
|
|
||||||
mongodb: {
|
|
||||||
host: as['mongo_host'],
|
|
||||||
port: parseInt(as['mongo_port'], 10),
|
|
||||||
db: as['mongo_db'],
|
|
||||||
user: as['mongo_user'],
|
|
||||||
pass: as['mongo_pass']
|
|
||||||
},
|
|
||||||
redis: {
|
|
||||||
host: as['redis_host'],
|
|
||||||
port: parseInt(as['redis_port'], 10),
|
|
||||||
pass: as['redis_pass']
|
|
||||||
},
|
|
||||||
elasticsearch: {
|
|
||||||
enable: as['elasticsearch'],
|
|
||||||
host: as['es_host'] || null,
|
|
||||||
port: parseInt(as['es_port'], 10) || null,
|
|
||||||
pass: as['es_pass'] || null
|
|
||||||
},
|
|
||||||
recaptcha: {
|
|
||||||
site_key: as['recaptcha_site'],
|
|
||||||
secret_key: as['recaptcha_secret']
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
if (as['https']) {
|
|
||||||
conf.https = {
|
|
||||||
key: as['https_key'] || null,
|
|
||||||
cert: as['https_cert'] || null,
|
|
||||||
ca: as['https_ca'] || null
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log(`Thanks. Writing the configuration to ${chalk.bold(path.resolve(configPath))}`);
|
|
||||||
|
|
||||||
try {
|
|
||||||
fs.writeFileSync(configPath, yaml.dump(conf));
|
|
||||||
console.log(chalk.green('Well done.'));
|
|
||||||
} catch (e) {
|
|
||||||
console.error(e);
|
|
||||||
}
|
|
||||||
});
|
|
@ -22,8 +22,4 @@ The list of people who have sent donation for Misskey.
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
If your name is missing, please contact us!
|
If your name is missing, please contact us!
|
||||||
|
|
||||||
If you want to donate to Misskey, please get in touch with [@syuilo][syuilo-link].
|
|
||||||
|
|
||||||
[syuilo-link]: https://syuilo.com
|
|
@ -1,26 +0,0 @@
|
|||||||
# Misskeyにカンパする方法
|
|
||||||
Misskeyのサポートにご興味をお持ちいただきありがとうございます!
|
|
||||||
Misskeyにカンパをしていただくと、貴方のお名前と好きなURLなどをMisskeyのリポジトリに刻む権利がもらえます。
|
|
||||||
|
|
||||||
Misskeyにカンパして開発・運営をサポートするには、次のいくつかの方法があります:
|
|
||||||
|
|
||||||
## ConoHaカードを購入する
|
|
||||||
(本家)Misskeyは、ConoHaというVPSサービスを利用しています。ConoHaカードを購入して、
|
|
||||||
カードに記載されているクーポンコードを syuilotan@yahoo.co.jp までお送りいただければ、
|
|
||||||
そのクーポンをチャージしてサーバーの運営費に充てることができます。
|
|
||||||
|
|
||||||
ConoHaカードについてはこちらをご覧ください: https://www.conoha.jp/conohacard/
|
|
||||||
|
|
||||||
Amazonでも買えます: https://www.amazon.co.jp/dp/B01N9E3416
|
|
||||||
|
|
||||||
## Amazonギフトカード
|
|
||||||
これは間接的な方法です。
|
|
||||||
|
|
||||||
## 銀行振込
|
|
||||||
syuilotan@yahoo.co.jp までお問い合わせください。
|
|
||||||
|
|
||||||
## 手渡し
|
|
||||||
オフ会を行ったときなどに行使できる方法です。
|
|
||||||
|
|
||||||
## その他
|
|
||||||
なにかいいアイデアがあればお教えください。
|
|
35
docs/manage.en.md
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
# Management guide
|
||||||
|
|
||||||
|
## Check the status of the job queue
|
||||||
|
In the directory of Misskey:
|
||||||
|
``` shell
|
||||||
|
node_modules/kue/bin/kue-dashboard -p 3050
|
||||||
|
```
|
||||||
|
When you access port 3050, you will see the UI.
|
||||||
|
|
||||||
|
## Suspend users
|
||||||
|
``` shell
|
||||||
|
node cli/suspend (User-ID or Username)
|
||||||
|
```
|
||||||
|
e.g.
|
||||||
|
``` shell
|
||||||
|
# Use id
|
||||||
|
node cli/suspend 57d01a501fdf2d07be417afe
|
||||||
|
|
||||||
|
# Use username
|
||||||
|
node cli/suspend @syuilo
|
||||||
|
|
||||||
|
# Use username (remote)
|
||||||
|
node cli/suspend @syuilo@misskey.xyz
|
||||||
|
```
|
||||||
|
|
||||||
|
## Clean up cached remote files
|
||||||
|
``` shell
|
||||||
|
node cli/clean-cached-remote-files
|
||||||
|
```
|
||||||
|
|
||||||
|
## Clean up unused drive files
|
||||||
|
``` shell
|
||||||
|
node cli/clean-unused-drive-files
|
||||||
|
```
|
||||||
|
> We recommend that you announce a user that unused drive files will be deleted before performing this operation, as it may delete the user's important files.
|
@ -9,5 +9,27 @@ node_modules/kue/bin/kue-dashboard -p 3050
|
|||||||
|
|
||||||
## ユーザーを凍結する
|
## ユーザーを凍結する
|
||||||
``` shell
|
``` shell
|
||||||
node cli/suspend (ユーザーID)
|
node cli/suspend (ユーザーID または ユーザー名)
|
||||||
```
|
```
|
||||||
|
例:
|
||||||
|
``` shell
|
||||||
|
# ユーザーID
|
||||||
|
node cli/suspend 57d01a501fdf2d07be417afe
|
||||||
|
|
||||||
|
# ユーザー名
|
||||||
|
node cli/suspend @syuilo
|
||||||
|
|
||||||
|
# ユーザー名 (リモート)
|
||||||
|
node cli/suspend @syuilo@misskey.xyz
|
||||||
|
```
|
||||||
|
|
||||||
|
## キャッシュされたリモートファイルをクリーンアップする
|
||||||
|
``` shell
|
||||||
|
node cli/clean-cached-remote-files
|
||||||
|
```
|
||||||
|
|
||||||
|
## 使われていないドライブのファイルをクリーンアップする
|
||||||
|
``` shell
|
||||||
|
node cli/clean-unused-drive-files
|
||||||
|
```
|
||||||
|
> ユーザーの大事なファイルを削除する可能性があるので、この操作を実行する前にユーザーに告知することをお勧めします。
|
||||||
|
104
docs/setup.en.md
@ -8,18 +8,13 @@ This guide describes how to install and setup Misskey.
|
|||||||
|
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
|
|
||||||
*1.* reCAPTCHA tokens
|
*1.* Create Misskey user
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
Misskey requires reCAPTCHA tokens.
|
Running misskey on root is not a good idea so we create a user for that.
|
||||||
Please visit https://www.google.com/recaptcha/intro/ and generate keys.
|
In debian for exemple :
|
||||||
|
|
||||||
*(optional)* Generating VAPID keys
|
```
|
||||||
----------------------------------------------------------------
|
adduser --disabled-password --disabled-login misskey
|
||||||
If you want to enable ServiceWroker, you need to generate VAPID keys:
|
|
||||||
|
|
||||||
``` shell
|
|
||||||
npm install web-push -g
|
|
||||||
web-push generate-vapid-keys
|
|
||||||
```
|
```
|
||||||
|
|
||||||
*2.* Install dependencies
|
*2.* Install dependencies
|
||||||
@ -28,24 +23,53 @@ Please install and setup these softwares:
|
|||||||
|
|
||||||
#### Dependencies :package:
|
#### Dependencies :package:
|
||||||
* *Node.js* and *npm*
|
* *Node.js* and *npm*
|
||||||
* **[MongoDB](https://www.mongodb.com/)**
|
* **[MongoDB](https://www.mongodb.com/)** >= 3.6
|
||||||
* **[Redis](https://redis.io/)**
|
* **[Redis](https://redis.io/)**
|
||||||
* **[ImageMagick](http://www.imagemagick.org/script/index.php)** >= 7.0
|
* **[ImageMagick](http://www.imagemagick.org/script/index.php)** >= 7.0
|
||||||
|
|
||||||
##### Optional
|
##### Optional
|
||||||
* [Elasticsearch](https://www.elastic.co/) - used to provide searching feature instead of MongoDB
|
* [Elasticsearch](https://www.elastic.co/) - used to provide searching feature instead of MongoDB
|
||||||
|
|
||||||
*3.* Install Misskey
|
|
||||||
----------------------------------------------------------------
|
|
||||||
1. `git clone -b master git://github.com/syuilo/misskey.git`
|
|
||||||
2. `cd misskey`
|
|
||||||
3. `npm install`
|
|
||||||
|
|
||||||
*4.* Prepare configuration
|
*3.* Setup Mongodb Database
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
You need to generate config file via `npm run config` command.
|
In root :
|
||||||
|
1. `mongo` Go to the mongo shell
|
||||||
|
2. `use misskey` Use the misskey database
|
||||||
|
3. `db.users.save( {dummy:"dummy"} )` Write dummy data to initialize the db.
|
||||||
|
4. `db.createUser( { user: "misskey", pwd: "<password>", roles: [ { role: "readWrite", db: "misskey" } ] } )` Create the misskey user.
|
||||||
|
5. `exit` You're done !
|
||||||
|
|
||||||
*5.* Build Misskey
|
*4.* Install Misskey
|
||||||
|
----------------------------------------------------------------
|
||||||
|
1. `su - misskey` Connect to misskey user.
|
||||||
|
2. `git clone -b master git://github.com/syuilo/misskey.git` Clone the misskey repo from master branch.
|
||||||
|
3. `cd misskey` Navigate to misskey directory
|
||||||
|
4. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` Checkout to the [latest release](https://github.com/syuilo/misskey/releases/latest)
|
||||||
|
5. `npm install` Install misskey dependencies.
|
||||||
|
|
||||||
|
*5.* reCAPTCHA tokens
|
||||||
|
----------------------------------------------------------------
|
||||||
|
Misskey requires reCAPTCHA tokens.
|
||||||
|
Please visit https://www.google.com/recaptcha/intro/ and generate keys.
|
||||||
|
|
||||||
|
*(optional)* Generating VAPID keys
|
||||||
|
----------------------------------------------------------------
|
||||||
|
If you want to enable ServiceWroker, you need to generate VAPID keys:
|
||||||
|
Unless you have set your global node_modules location elsewhere, you need to run this in root.
|
||||||
|
|
||||||
|
``` shell
|
||||||
|
npm install web-push -g
|
||||||
|
web-push generate-vapid-keys
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
*6.* Make configuration file
|
||||||
|
----------------------------------------------------------------
|
||||||
|
1. `cp .config/example.yml .config/default.yml` Copy the `.config/example.yml` and rename it to `default.yml`.
|
||||||
|
2. Edit `default.yml`
|
||||||
|
|
||||||
|
*7.* Build Misskey
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
|
|
||||||
Build misskey with the following:
|
Build misskey with the following:
|
||||||
@ -61,14 +85,44 @@ If you're still encountering errors about some modules, use node-gyp:
|
|||||||
3. `node-gyp build`
|
3. `node-gyp build`
|
||||||
4. `npm run build`
|
4. `npm run build`
|
||||||
|
|
||||||
*6.* That is it.
|
*8.* That is it.
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
Well done! Now, you have an environment that run to Misskey.
|
Well done! Now, you have an environment that run to Misskey.
|
||||||
|
|
||||||
### Launch
|
### Launch normally
|
||||||
Just `sudo npm start`. GLHF!
|
Just `npm start`. GLHF!
|
||||||
|
|
||||||
|
### Launch with systemd
|
||||||
|
|
||||||
|
1. Create a systemd service here: `/etc/systemd/system/misskey.service`
|
||||||
|
2. Edit it, and paste this and save:
|
||||||
|
|
||||||
|
```
|
||||||
|
[Unit]
|
||||||
|
Description=Misskey daemon
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
User=misskey
|
||||||
|
ExecStart=/usr/bin/npm start
|
||||||
|
WorkingDirectory=/home/misskey/misskey
|
||||||
|
TimeoutSec=60
|
||||||
|
StandardOutput=syslog
|
||||||
|
StandardError=syslog
|
||||||
|
SyslogIdentifier=misskey
|
||||||
|
Restart=always
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
```
|
||||||
|
|
||||||
|
3. `systemctl daemon-reload ; systemctl enable misskey` Reload systemd and enable the misskey service.
|
||||||
|
4. `systemctl start misskey` Start the misskey service.
|
||||||
|
|
||||||
|
You can check if the service is running with `systemctl status misskey`.
|
||||||
|
|
||||||
### Way to Update to latest version of your Misskey
|
### Way to Update to latest version of your Misskey
|
||||||
1. `git reset --hard && git pull origin master`
|
1. `git fetch`
|
||||||
2. `npm install`
|
2. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)`
|
||||||
3. `npm run build`
|
3. `npm install`
|
||||||
|
4. `npm run build`
|
||||||
|
112
docs/setup.ja.md
@ -8,7 +8,46 @@ Misskeyサーバーの構築にご関心をお寄せいただきありがとう
|
|||||||
|
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
|
|
||||||
*1.* reCAPTCHAトークンの用意
|
*1.* Misskeyユーザーの作成
|
||||||
|
----------------------------------------------------------------
|
||||||
|
Misskeyのrootで実行しない方がよいため、代わりにユーザーを作成します。
|
||||||
|
Debianの例:
|
||||||
|
|
||||||
|
```
|
||||||
|
adduser --disabled-password --disabled-login misskey
|
||||||
|
```
|
||||||
|
|
||||||
|
*2.* 依存関係をインストールする
|
||||||
|
----------------------------------------------------------------
|
||||||
|
これらのソフトウェアをインストール・設定してください:
|
||||||
|
|
||||||
|
#### 依存関係 :package:
|
||||||
|
* *Node.js* と *npm*
|
||||||
|
* **[MongoDB](https://www.mongodb.com/)** (3.6以上)
|
||||||
|
* **[Redis](https://redis.io/)**
|
||||||
|
* **[ImageMagick](http://www.imagemagick.org/script/index.php)**
|
||||||
|
|
||||||
|
##### オプション
|
||||||
|
* [Elasticsearch](https://www.elastic.co/) - 検索機能を向上させるために用います。
|
||||||
|
|
||||||
|
*3.* Mongodbの設定
|
||||||
|
----------------------------------------------------------------
|
||||||
|
ルートで:
|
||||||
|
1. `mongo` mongoシェルを起動
|
||||||
|
2. `use misskey` misskeyデータベースを使用
|
||||||
|
3. `db.users.save( {dummy:"dummy"} )` ダミーデータを書き込みDBを初期化
|
||||||
|
4. `db.createUser( { user: "misskey", pwd: "<password>", roles: [ { role: "readWrite", db: "misskey" } ] } )` misskeyユーザーを作成
|
||||||
|
5. `exit` mongoシェルを終了
|
||||||
|
|
||||||
|
*4.* Misskeyのインストール
|
||||||
|
----------------------------------------------------------------
|
||||||
|
1. `su - misskey` misskeyユーザーを使用
|
||||||
|
2. `git clone -b master git://github.com/syuilo/misskey.git` masterブランチからMisskeyレポジトリをクローン
|
||||||
|
3. `cd misskey` misskeyディレクトリに移動
|
||||||
|
4. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` [最新のリリース](https://github.com/syuilo/misskey/releases/latest)を確認
|
||||||
|
5. `npm install` Misskeyの依存パッケージをインストール
|
||||||
|
|
||||||
|
*5.* reCAPTCHAトークン
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
MisskeyはreCAPTCHAトークンを必要とします。
|
MisskeyはreCAPTCHAトークンを必要とします。
|
||||||
https://www.google.com/recaptcha/intro/ にアクセスしてトークンを生成してください。
|
https://www.google.com/recaptcha/intro/ にアクセスしてトークンを生成してください。
|
||||||
@ -22,47 +61,67 @@ npm install web-push -g
|
|||||||
web-push generate-vapid-keys
|
web-push generate-vapid-keys
|
||||||
```
|
```
|
||||||
|
|
||||||
*2.* 依存関係をインストールする
|
*6.* Make configuration file
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
これらのソフトウェアをインストール・設定してください:
|
1. `cp .config/example.yml .config/default.yml` `.config/example.yml`をコピーし名前を`default.yml`にする。
|
||||||
|
2. `default.yml` を編集する。
|
||||||
|
|
||||||
#### 依存関係 :package:
|
*7.* Misskeyのビルド
|
||||||
* *Node.js* と *npm*
|
|
||||||
* **[MongoDB](https://www.mongodb.com/)**
|
|
||||||
* **[Redis](https://redis.io/)**
|
|
||||||
* **[ImageMagick](http://www.imagemagick.org/script/index.php)**
|
|
||||||
|
|
||||||
##### オプション
|
|
||||||
* [Elasticsearch](https://www.elastic.co/) - 検索機能を向上させるために用います。
|
|
||||||
|
|
||||||
*3.* Misskeyのインストール
|
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
1. `git clone -b master git://github.com/syuilo/misskey.git`
|
|
||||||
2. `cd misskey`
|
|
||||||
3. `npm install`
|
|
||||||
|
|
||||||
*4.* 設定ファイルを用意する
|
次のコマンドでMisskeyをビルドしてください:
|
||||||
----------------------------------------------------------------
|
|
||||||
`npm run config`コマンドを利用して、ガイドに従って情報を入力してください。
|
|
||||||
|
|
||||||
*5.* Misskeyのビルド
|
`npm run build`
|
||||||
----------------------------------------------------------------
|
|
||||||
|
Debianをお使いであれば、`build-essential`パッケージをインストールする必要があります。
|
||||||
|
|
||||||
|
何らかのモジュールでエラーが発生する場合はnode-gypを使ってください:
|
||||||
1. `npm install -g node-gyp`
|
1. `npm install -g node-gyp`
|
||||||
2. `node-gyp configure`
|
2. `node-gyp configure`
|
||||||
3. `node-gyp build`
|
3. `node-gyp build`
|
||||||
4. `npm run build`
|
4. `npm run build`
|
||||||
|
|
||||||
|
|
||||||
*6.* 以上です!
|
*6.* 以上です!
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
お疲れ様でした。これでMisskeyを動かす準備は整いました。
|
お疲れ様でした。これでMisskeyを動かす準備は整いました。
|
||||||
|
|
||||||
### 起動
|
### 通常起動
|
||||||
`sudo npm start`するだけです。GLHF!
|
`npm start`するだけです。GLHF!
|
||||||
|
|
||||||
|
### systemdを用いた起動
|
||||||
|
1. systemdサービスのファイルを作成: `/etc/systemd/system/misskey.service`
|
||||||
|
2. エディタで開き、以下のコードを貼り付けて保存:
|
||||||
|
|
||||||
|
```
|
||||||
|
[Unit]
|
||||||
|
Description=Misskey daemon
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
User=misskey
|
||||||
|
ExecStart=/usr/bin/npm start
|
||||||
|
WorkingDirectory=/home/misskey/misskey
|
||||||
|
TimeoutSec=60
|
||||||
|
StandardOutput=syslog
|
||||||
|
StandardError=syslog
|
||||||
|
SyslogIdentifier=misskey
|
||||||
|
Restart=always
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
```
|
||||||
|
|
||||||
|
3. `systemctl daemon-reload ; systemctl enable misskey` systemdを再読み込みしmisskeyサービスを有効化
|
||||||
|
4. `systemctl start misskey` misskeyサービスの起動
|
||||||
|
|
||||||
|
`systemctl status misskey`と入力すると、サービスの状態を調べることができます。
|
||||||
|
|
||||||
### Misskeyを最新バージョンにアップデートする方法:
|
### Misskeyを最新バージョンにアップデートする方法:
|
||||||
1. `git reset --hard && git pull origin master`
|
1. `git fetch`
|
||||||
2. `npm install`
|
2. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)`
|
||||||
3. `npm run build`
|
3. `npm install`
|
||||||
|
4. `npm run build`
|
||||||
|
|
||||||
## メモリが足りなくてビルドできない場合
|
## メモリが足りなくてビルドできない場合
|
||||||
Misskeyの(クライアントの)ビルドには、目安として8GBくらいのメモリを必要とします。
|
Misskeyの(クライアントの)ビルドには、目安として8GBくらいのメモリを必要とします。
|
||||||
@ -74,4 +133,3 @@ VPSなどでビルドする時は、もしかしたらメモリが足りなく
|
|||||||
3. npm run webpack
|
3. npm run webpack
|
||||||
4. built/client をサーバーにアップロードする
|
4. built/client をサーバーにアップロードする
|
||||||
5. サーバー上で、npm run gulp
|
5. サーバー上で、npm run gulp
|
||||||
6. 完了
|
|
||||||
|
@ -4,19 +4,19 @@ Misskey's Translation
|
|||||||
If you find an untranslated part on Misskey:
|
If you find an untranslated part on Misskey:
|
||||||
--------------------------------------------
|
--------------------------------------------
|
||||||
|
|
||||||
1. Look for untranslated parts in the miskey's source code.
|
1. Look for untranslated parts in the misskey's source code.
|
||||||
- For instance, if you find an untranslated part in: `src/client/app/mobile/views/pages/home.vue`.
|
- For instance, if you find an untranslated part in: `src/client/app/mobile/views/pages/home.vue`.
|
||||||
|
|
||||||
2. Replace the untranslated portion with a character string of the form `%i18n:@foo%`.
|
2. Replace the untranslated portion with a character string of the form `%i18n:@foo%`.
|
||||||
- In fact, `foo` should be a word that is appropriate for the situation and is easy to understand in English.
|
- 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 each language file in /locales, check whether the <strong>file name (path)</strong> found in step 1 exists, if not, create it.
|
3. Open the `locales/ja.yml`, check whether the <strong>file name (path)</strong> found in step 1 exists, if not, create it.
|
||||||
- Do not put the beginning of the path `src/client/app/` in the locale file.
|
- 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 translated text property using the `foo` keyword below the path that you found or created in step 2. Make sure to type your text in quotation marks. Text should always be inside of quotes.
|
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: "Timeline"` to `locales/en.yml`, and `timeline: "タイムライン"` to `locales/ja.yml`.
|
- For example, in this case we add timeline: `timeline: "タイムライン"` to `locales/ja.yml`.
|
||||||
|
|
||||||
5. And done!
|
5. And done!
|
||||||
|
|
||||||
|
@ -11,12 +11,12 @@ Misskey内の未翻訳箇所を見つけたら
|
|||||||
- `foo`は実際にはその場に適したわかりやすい(英語の)名前にしてください。
|
- `foo`は実際にはその場に適したわかりやすい(英語の)名前にしてください。
|
||||||
- 例えば未翻訳箇所が「タイムライン」というテキストだった場合、`%i18n:@timeline%`のようにします。
|
- 例えば未翻訳箇所が「タイムライン」というテキストだった場合、`%i18n:@timeline%`のようにします。
|
||||||
|
|
||||||
3. /locales 内にあるそれぞれの言語ファイルを開き、1.で見つけた<strong>ファイル名(パス)</strong>のキーが存在するか確認し、無ければ作成してください。
|
3. `locales/ja.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/en.yml`に`timeline: "Timeline"`を追加します。
|
- 例えば、今回の例で言うと`locales/ja.yml`に`timeline: "タイムライン"`を追加します。
|
||||||
|
|
||||||
5. 完了です!
|
5. 完了です!
|
||||||
|
|
||||||
|
@ -1,6 +0,0 @@
|
|||||||
How to create indexes
|
|
||||||
=====================
|
|
||||||
|
|
||||||
``` shell
|
|
||||||
curl -XPOST localhost:9200/misskey -d @path/to/mappings.json
|
|
||||||
```
|
|
@ -1,65 +0,0 @@
|
|||||||
{
|
|
||||||
"settings": {
|
|
||||||
"analysis": {
|
|
||||||
"analyzer": {
|
|
||||||
"bigram": {
|
|
||||||
"tokenizer": "bigram_tokenizer"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"tokenizer": {
|
|
||||||
"bigram_tokenizer": {
|
|
||||||
"type": "nGram",
|
|
||||||
"min_gram": 2,
|
|
||||||
"max_gram": 2,
|
|
||||||
"token_chars": [
|
|
||||||
"letter",
|
|
||||||
"digit"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"mappings": {
|
|
||||||
"user": {
|
|
||||||
"properties": {
|
|
||||||
"username": {
|
|
||||||
"type": "string",
|
|
||||||
"index": "analyzed",
|
|
||||||
"analyzer": "bigram"
|
|
||||||
},
|
|
||||||
"name": {
|
|
||||||
"type": "string",
|
|
||||||
"index": "analyzed",
|
|
||||||
"analyzer": "bigram"
|
|
||||||
},
|
|
||||||
"bio": {
|
|
||||||
"type": "string",
|
|
||||||
"index": "analyzed",
|
|
||||||
"analyzer": "kuromoji"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"post": {
|
|
||||||
"properties": {
|
|
||||||
"text": {
|
|
||||||
"type": "string",
|
|
||||||
"index": "analyzed",
|
|
||||||
"analyzer": "kuromoji"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"drive_file": {
|
|
||||||
"properties": {
|
|
||||||
"name": {
|
|
||||||
"type": "string",
|
|
||||||
"index": "analyzed",
|
|
||||||
"analyzer": "kuromoji"
|
|
||||||
},
|
|
||||||
"user": {
|
|
||||||
"type": "string",
|
|
||||||
"index": "not_analyzed"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
18
gulpfile.ts
@ -8,20 +8,21 @@ import * as gutil from 'gulp-util';
|
|||||||
import * as ts from 'gulp-typescript';
|
import * as ts from 'gulp-typescript';
|
||||||
const sourcemaps = require('gulp-sourcemaps');
|
const sourcemaps = require('gulp-sourcemaps');
|
||||||
import tslint from 'gulp-tslint';
|
import tslint from 'gulp-tslint';
|
||||||
import cssnano = require('gulp-cssnano');
|
const cssnano = require('gulp-cssnano');
|
||||||
|
const stylus = require('gulp-stylus');
|
||||||
import * as uglifyComposer from 'gulp-uglify/composer';
|
import * as uglifyComposer from 'gulp-uglify/composer';
|
||||||
import pug = require('gulp-pug');
|
import pug = require('gulp-pug');
|
||||||
import * as rimraf from 'rimraf';
|
import * as rimraf from 'rimraf';
|
||||||
import chalk from 'chalk';
|
import chalk from 'chalk';
|
||||||
import imagemin = require('gulp-imagemin');
|
const imagemin = require('gulp-imagemin');
|
||||||
import * as rename from 'gulp-rename';
|
import * as rename from 'gulp-rename';
|
||||||
import * as mocha from 'gulp-mocha';
|
import * as mocha from 'gulp-mocha';
|
||||||
import * as replace from 'gulp-replace';
|
import * as replace from 'gulp-replace';
|
||||||
import * as htmlmin from 'gulp-htmlmin';
|
import * as htmlmin from 'gulp-htmlmin';
|
||||||
const uglifyes = require('uglify-es');
|
const uglifyes = require('uglify-es');
|
||||||
|
|
||||||
import locales from './locales';
|
const locales = require('./locales');
|
||||||
import { fa } from './src/build/fa';
|
import { fa } from './src/misc/fa';
|
||||||
const client = require('./built/client/meta.json');
|
const client = require('./built/client/meta.json');
|
||||||
import config from './src/config';
|
import config from './src/config';
|
||||||
|
|
||||||
@ -38,8 +39,6 @@ if (isDebug) {
|
|||||||
|
|
||||||
const constants = require('./src/const.json');
|
const constants = require('./src/const.json');
|
||||||
|
|
||||||
require('./src/client/docs/gulpfile.ts');
|
|
||||||
|
|
||||||
gulp.task('build', [
|
gulp.task('build', [
|
||||||
'build:ts',
|
'build:ts',
|
||||||
'build:copy',
|
'build:copy',
|
||||||
@ -201,3 +200,10 @@ gulp.task('build:client:pug', [
|
|||||||
}))
|
}))
|
||||||
.pipe(gulp.dest('./built/client/app/'))
|
.pipe(gulp.dest('./built/client/app/'))
|
||||||
);
|
);
|
||||||
|
|
||||||
|
gulp.task('doc', () =>
|
||||||
|
gulp.src('./src/docs/**/*.styl')
|
||||||
|
.pipe(stylus())
|
||||||
|
.pipe((cssnano as any)())
|
||||||
|
.pipe(gulp.dest('./built/docs/assets/'))
|
||||||
|
);
|
||||||
|
941
locales/ca.yml
Normal file
@ -0,0 +1,941 @@
|
|||||||
|
---
|
||||||
|
meta:
|
||||||
|
lang: "日本語"
|
||||||
|
divider: ""
|
||||||
|
common:
|
||||||
|
misskey: "A ⭐ of fediverse"
|
||||||
|
about-title: "A ⭐ of fediverse."
|
||||||
|
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
||||||
|
time:
|
||||||
|
unknown: "なぞのじかん"
|
||||||
|
future: "未来"
|
||||||
|
just_now: "たった今"
|
||||||
|
seconds_ago: "{}秒前"
|
||||||
|
minutes_ago: "{}分前"
|
||||||
|
hours_ago: "{}時間前"
|
||||||
|
days_ago: "{}日前"
|
||||||
|
weeks_ago: "{}週間前"
|
||||||
|
months_ago: "{}ヶ月前"
|
||||||
|
years_ago: "{}年前"
|
||||||
|
weekday-short:
|
||||||
|
sunday: "日"
|
||||||
|
monday: "月"
|
||||||
|
tuesday: "火"
|
||||||
|
wednesday: "水"
|
||||||
|
thursday: "木"
|
||||||
|
friday: "金"
|
||||||
|
saturday: "土"
|
||||||
|
reactions:
|
||||||
|
like: "いいね"
|
||||||
|
love: "しゅき"
|
||||||
|
laugh: "笑"
|
||||||
|
hmm: "ふぅ~む"
|
||||||
|
surprise: "わお"
|
||||||
|
congrats: "おめでとう"
|
||||||
|
angry: "おこ"
|
||||||
|
confused: "こまこまのこまり"
|
||||||
|
pudding: "Pudding"
|
||||||
|
note-placeholders:
|
||||||
|
a: "今どうしてる?"
|
||||||
|
b: "何かありましたか?"
|
||||||
|
c: "何をお考えですか?"
|
||||||
|
d: "言いたいことは?"
|
||||||
|
e: "ここに書いてください"
|
||||||
|
f: "あなたが書くのを待っています..."
|
||||||
|
search: "検索"
|
||||||
|
delete: "削除"
|
||||||
|
loading: "読み込み中"
|
||||||
|
ok: "わかった"
|
||||||
|
update-available-title: "更新があります"
|
||||||
|
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
|
||||||
|
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
||||||
|
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||||
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||||
|
reversi:
|
||||||
|
drawn: "引き分け"
|
||||||
|
my-turn: "あなたのターンです"
|
||||||
|
opponent-turn: "相手のターンです"
|
||||||
|
turn-of: "{}のターンです"
|
||||||
|
past-turn-of: "{}のターン"
|
||||||
|
widgets:
|
||||||
|
analog-clock: "アナログ時計"
|
||||||
|
profile: "プロフィール"
|
||||||
|
calendar: "カレンダー"
|
||||||
|
timemachine: "カレンダー(タイムマシン)"
|
||||||
|
activity: "アクティビティ"
|
||||||
|
rss: "RSSリーダー"
|
||||||
|
memo: "付箋"
|
||||||
|
trends: "トレンド"
|
||||||
|
photo-stream: "フォトストリーム"
|
||||||
|
posts-monitor: "投稿チャート"
|
||||||
|
slideshow: "スライドショー"
|
||||||
|
version: "バージョン"
|
||||||
|
broadcast: "ブロードキャスト"
|
||||||
|
notifications: "通知"
|
||||||
|
users: "おすすめユーザー"
|
||||||
|
polls: "アンケート"
|
||||||
|
post-form: "投稿フォーム"
|
||||||
|
messaging: "メッセージ"
|
||||||
|
server: "サーバー情報"
|
||||||
|
donation: "寄付のお願い"
|
||||||
|
nav: "ナビゲーション"
|
||||||
|
tips: "ヒント"
|
||||||
|
hashtags: "ハッシュタグ"
|
||||||
|
deck:
|
||||||
|
widgets: "ウィジェット"
|
||||||
|
home: "ホーム"
|
||||||
|
local: "ローカル"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
|
global: "グローバル"
|
||||||
|
notifications: "通知"
|
||||||
|
list: "リスト"
|
||||||
|
swap-left: "左に移動"
|
||||||
|
swap-right: "右に移動"
|
||||||
|
swap-up: "上に移動"
|
||||||
|
swap-down: "下に移動"
|
||||||
|
remove: "カラムを削除"
|
||||||
|
add-column: "カラムを追加"
|
||||||
|
rename: "名前を変更"
|
||||||
|
stack-left: "左に重ねる"
|
||||||
|
pop-right: "右に出す"
|
||||||
|
common/views/components/connect-failed.vue:
|
||||||
|
title: "サーバーに接続できません"
|
||||||
|
description: "インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから{再度お試し}ください。"
|
||||||
|
thanks: "いつもMisskeyをご利用いただきありがとうございます。"
|
||||||
|
troubleshoot: "トラブルシュート"
|
||||||
|
common/views/components/connect-failed.troubleshooter.vue:
|
||||||
|
title: "トラブルシューティング"
|
||||||
|
network: "ネットワーク接続"
|
||||||
|
checking-network: "ネットワーク接続を確認中"
|
||||||
|
internet: "インターネット接続"
|
||||||
|
checking-internet: "インターネット接続を確認中"
|
||||||
|
server: "サーバー接続"
|
||||||
|
checking-server: "サーバー接続を確認中"
|
||||||
|
finding: "問題を調べています"
|
||||||
|
no-network: "ネットワークに接続されていません"
|
||||||
|
no-network-desc: "お使いのPCのネットワーク接続が正常か確認してください。"
|
||||||
|
no-internet: "インターネットに接続されていません"
|
||||||
|
no-internet-desc: "ネットワークには接続されていますが、インターネットには接続されていないようです。お使いのPCのインターネット接続が正常か確認してください。"
|
||||||
|
no-server: "Misskeyのサーバーに接続できません"
|
||||||
|
no-server-desc: "お使いのPCのインターネット接続は正常ですが、Misskeyのサーバーには接続できませんでした。サーバーがダウンまたはメンテナンスしている可能性があるので、しばらくしてから再度御アクセスください。"
|
||||||
|
success: "Misskeyのサーバーに接続できました"
|
||||||
|
success-desc: "正常に接続できるようです。ページを再度読み込みしてください。"
|
||||||
|
flush: "キャッシュの削除"
|
||||||
|
set-version: "バージョン指定"
|
||||||
|
common/views/components/messaging.vue:
|
||||||
|
search-user: "ユーザーを探す"
|
||||||
|
you: "あなた"
|
||||||
|
no-history: "履歴はありません"
|
||||||
|
common/views/components/messaging-room.vue:
|
||||||
|
empty: "このユーザーと話したことはありません"
|
||||||
|
more: "もっと読む"
|
||||||
|
no-history: "これより過去の履歴はありません"
|
||||||
|
resize-form: "ドラッグしてフォームの広さを調整"
|
||||||
|
new-message: "新しいメッセージがあります"
|
||||||
|
common/views/components/messaging-room.form.vue:
|
||||||
|
input-message-here: "ここにメッセージを入力"
|
||||||
|
send: "送信"
|
||||||
|
attach-from-local: "PCからファイルを添付する"
|
||||||
|
attach-from-drive: "ドライブからファイルを添付する"
|
||||||
|
common/views/components/messaging-room.message.vue:
|
||||||
|
is-read: "既読"
|
||||||
|
deleted: "このメッセージは削除されました"
|
||||||
|
common/views/components/nav.vue:
|
||||||
|
about: "Misskeyについて"
|
||||||
|
stats: "統計"
|
||||||
|
status: "ステータス"
|
||||||
|
wiki: "Wiki"
|
||||||
|
donors: "ドナー"
|
||||||
|
repository: "リポジトリ"
|
||||||
|
develop: "開発者"
|
||||||
|
feedback: "フィードバック"
|
||||||
|
common/views/components/note-menu.vue:
|
||||||
|
favorite: "お気に入り"
|
||||||
|
pin: "ピン留め"
|
||||||
|
delete: "削除"
|
||||||
|
delete-confirm: "この投稿を削除しますか?"
|
||||||
|
remote: "投稿元で見る"
|
||||||
|
common/views/components/poll.vue:
|
||||||
|
vote-to: "「{}」に投票する"
|
||||||
|
vote-count: "{}票"
|
||||||
|
total-users: "{}人が投票"
|
||||||
|
vote: "投票する"
|
||||||
|
show-result: "結果を見る"
|
||||||
|
voted: "投票済み"
|
||||||
|
common/views/components/poll-editor.vue:
|
||||||
|
no-only-one-choice: "アンケートには、選択肢が最低2つ必要です"
|
||||||
|
choice-n: "選択肢{}"
|
||||||
|
remove: "この選択肢を削除"
|
||||||
|
add: "+選択肢を追加"
|
||||||
|
destroy: "アンケートを破棄"
|
||||||
|
common/views/components/reaction-picker.vue:
|
||||||
|
choose-reaction: "リアクションを選択"
|
||||||
|
common/views/components/signin.vue:
|
||||||
|
username: "ユーザー名"
|
||||||
|
password: "パスワード"
|
||||||
|
token: "トークン"
|
||||||
|
signing-in: "やってます..."
|
||||||
|
signin: "サインイン"
|
||||||
|
common/views/components/signup.vue:
|
||||||
|
username: "ユーザー名"
|
||||||
|
checking: "確認しています..."
|
||||||
|
available: "利用できます"
|
||||||
|
unavailable: "既に利用されています"
|
||||||
|
error: "通信エラー"
|
||||||
|
invalid-format: "a~z、A~Z、0~9、_が使えます"
|
||||||
|
too-short: "1文字以上でお願いします!"
|
||||||
|
too-long: "20文字以内でお願いします"
|
||||||
|
password: "パスワード"
|
||||||
|
password-placeholder: "8文字以上を推奨します"
|
||||||
|
weak-password: "弱いパスワード"
|
||||||
|
normal-password: "まあまあのパスワード"
|
||||||
|
strong-password: "強いパスワード"
|
||||||
|
retype: "再入力"
|
||||||
|
retype-placeholder: "確認のため再入力してください"
|
||||||
|
password-matched: "確認されました"
|
||||||
|
password-not-matched: "一致していません"
|
||||||
|
recaptcha: "認証"
|
||||||
|
create: "アカウント作成"
|
||||||
|
some-error: "何らかの原因によりアカウントの作成に失敗しました。再度お試しください。"
|
||||||
|
common/views/components/special-message.vue:
|
||||||
|
new-year: "Happy New Year!"
|
||||||
|
christmas: "Merry Christmas!"
|
||||||
|
common/views/components/stream-indicator.vue:
|
||||||
|
connecting: "接続中"
|
||||||
|
reconnecting: "再接続中"
|
||||||
|
connected: "接続完了"
|
||||||
|
common/views/components/twitter-setting.vue:
|
||||||
|
description: "お使いのTwitterアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでTwitterアカウント情報が表示されるようになったり、Twitterを用いた便利なサインインを利用できるようになります。"
|
||||||
|
connected-to: "次のTwitterアカウントに接続されています"
|
||||||
|
detail: "詳細..."
|
||||||
|
reconnect: "再接続する"
|
||||||
|
connect: "Twitterと接続する"
|
||||||
|
disconnect: "切断する"
|
||||||
|
common/views/components/uploader.vue:
|
||||||
|
waiting: "待機中"
|
||||||
|
common/views/components/visibility-chooser.vue:
|
||||||
|
public: "公開"
|
||||||
|
home: "ホーム"
|
||||||
|
home-desc: "ホームタイムラインにのみ公開"
|
||||||
|
followers: "フォロワー"
|
||||||
|
followers-desc: "自分のフォロワーにのみ公開"
|
||||||
|
specified: "ダイレクト"
|
||||||
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
|
private: "非公開"
|
||||||
|
common/views/widgets/broadcast.vue:
|
||||||
|
fetching: "確認中"
|
||||||
|
no-broadcasts: "お知らせはありません"
|
||||||
|
have-a-nice-day: "良い一日を!"
|
||||||
|
next: "次"
|
||||||
|
common/views/widgets/donation.vue:
|
||||||
|
title: "寄付のお願い"
|
||||||
|
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
||||||
|
common/views/widgets/photo-stream.vue:
|
||||||
|
title: "フォトストリーム"
|
||||||
|
no-photos: "写真はありません"
|
||||||
|
common/views/widgets/posts-monitor.vue:
|
||||||
|
title: "投稿チャート"
|
||||||
|
toggle: "表示を切り替え"
|
||||||
|
common/views/widgets/hashtags.vue:
|
||||||
|
title: "ハッシュタグ"
|
||||||
|
count: "{}人が投稿"
|
||||||
|
empty: "トレンドなし"
|
||||||
|
common/views/widgets/server.vue:
|
||||||
|
title: "サーバー情報"
|
||||||
|
toggle: "表示を切り替え"
|
||||||
|
common/views/widgets/memo.vue:
|
||||||
|
title: "付箋"
|
||||||
|
memo: "ここに書いて!"
|
||||||
|
save: "保存"
|
||||||
|
common/views/pages/follow.vue:
|
||||||
|
signed-in-as: "{}としてサインイン中"
|
||||||
|
following: "フォロー中"
|
||||||
|
follow: "フォロー"
|
||||||
|
request-pending: "フォロー許可待ち"
|
||||||
|
follow-request: "フォロー申請"
|
||||||
|
desktop/views/components/activity.chart.vue:
|
||||||
|
total: "Black ... Total"
|
||||||
|
notes: "Blue ... Notes"
|
||||||
|
replies: "Red ... Replies"
|
||||||
|
renotes: "Green ... Renotes"
|
||||||
|
desktop/views/components/activity.vue:
|
||||||
|
title: "アクティビティ"
|
||||||
|
toggle: "表示を切り替え"
|
||||||
|
desktop/views/components/calendar.vue:
|
||||||
|
title: "{1}年 {2}月"
|
||||||
|
prev: "前の月"
|
||||||
|
next: "次の月"
|
||||||
|
go: "クリックして時間遡行"
|
||||||
|
desktop/views/components/choose-file-from-drive-window.vue:
|
||||||
|
choose-file: "ファイル選択中"
|
||||||
|
upload: "PCからドライブにファイルをアップロード"
|
||||||
|
cancel: "キャンセル"
|
||||||
|
ok: "決定"
|
||||||
|
choose-prompt: "ファイルを選択"
|
||||||
|
desktop/views/components/choose-folder-from-drive-window.vue:
|
||||||
|
cancel: "キャンセル"
|
||||||
|
ok: "決定"
|
||||||
|
choose-prompt: "フォルダを選択"
|
||||||
|
desktop/views/components/crop-window.vue:
|
||||||
|
skip: "クロップをスキップ"
|
||||||
|
cancel: "キャンセル"
|
||||||
|
ok: "決定"
|
||||||
|
desktop/views/components/drive-window.vue:
|
||||||
|
used: "使用中"
|
||||||
|
drive: "ドライブ"
|
||||||
|
desktop/views/components/drive.file.vue:
|
||||||
|
avatar: "アイコン"
|
||||||
|
banner: "バナー"
|
||||||
|
contextmenu:
|
||||||
|
rename: "名前を変更"
|
||||||
|
copy-url: "URLをコピー"
|
||||||
|
download: "ダウンロード"
|
||||||
|
else-files: "その他..."
|
||||||
|
set-as-avatar: "アイコンに設定"
|
||||||
|
set-as-banner: "バナーに設定"
|
||||||
|
open-in-app: "アプリで開く"
|
||||||
|
add-app: "アプリを追加"
|
||||||
|
rename-file: "ファイル名の変更"
|
||||||
|
input-new-file-name: "新しいファイル名を入力してください"
|
||||||
|
copied: "コピー完了"
|
||||||
|
copied-url-to-clipboard: "URLをクリップボードにコピーしました"
|
||||||
|
desktop/views/components/drive.folder.vue:
|
||||||
|
unable-to-process: "操作を完了できません"
|
||||||
|
circular-reference-detected: "移動先のフォルダーは、移動するフォルダーのサブフォルダーです。"
|
||||||
|
unhandled-error: "不明なエラー"
|
||||||
|
contextmenu:
|
||||||
|
move-to-this-folder: "このフォルダへ移動"
|
||||||
|
show-in-new-window: "新しいウィンドウで表示"
|
||||||
|
rename: "名前を変更"
|
||||||
|
rename-folder: "フォルダ名の変更"
|
||||||
|
input-new-folder-name: "新しいフォルダ名を入力してください"
|
||||||
|
desktop/views/components/drive.nav-folder.vue:
|
||||||
|
drive: "ドライブ"
|
||||||
|
desktop/views/components/drive.vue:
|
||||||
|
search: "検索"
|
||||||
|
load-more: "もっと読み込む"
|
||||||
|
empty-draghover: "ドロップですか?いいですよ、ボクはカワイイですからね"
|
||||||
|
empty-drive: "ドライブには何もありません。"
|
||||||
|
empty-drive-description: "右クリックして「ファイルをアップロード」を選んだり、ファイルをドラッグ&ドロップすることでもアップロードできます。"
|
||||||
|
empty-folder: "このフォルダーは空です"
|
||||||
|
unable-to-process: "操作を完了できません"
|
||||||
|
circular-reference-detected: "移動先のフォルダーは、移動するフォルダーのサブフォルダーです。"
|
||||||
|
unhandled-error: "不明なエラー"
|
||||||
|
url-upload: "URLアップロード"
|
||||||
|
url-of-file: "アップロードしたいファイルのURL"
|
||||||
|
url-upload-requested: "アップロードをリクエストしました"
|
||||||
|
may-take-time: "アップロードが完了するまで時間がかかる場合があります。"
|
||||||
|
create-folder: "フォルダー作成"
|
||||||
|
folder-name: "フォルダー名"
|
||||||
|
contextmenu:
|
||||||
|
create-folder: "フォルダーを作成"
|
||||||
|
upload: "ファイルをアップロード"
|
||||||
|
url-upload: "URLからアップロード"
|
||||||
|
desktop/views/components/follow-button.vue:
|
||||||
|
following: "フォロー中"
|
||||||
|
follow: "フォロー"
|
||||||
|
request-pending: "フォロー許可待ち"
|
||||||
|
follow-request: "フォロー申請"
|
||||||
|
desktop/views/components/followers-window.vue:
|
||||||
|
followers: "{} のフォロワー"
|
||||||
|
desktop/views/components/followers.vue:
|
||||||
|
empty: "フォロワーはいないようです。"
|
||||||
|
desktop/views/components/following-window.vue:
|
||||||
|
following: "{} のフォロー"
|
||||||
|
desktop/views/components/following.vue:
|
||||||
|
empty: "フォロー中のユーザーはいないようです。"
|
||||||
|
desktop/views/components/friends-maker.vue:
|
||||||
|
title: "気になるユーザーをフォロー:"
|
||||||
|
empty: "おすすめのユーザーは見つかりませんでした。"
|
||||||
|
fetching: "読み込んでいます"
|
||||||
|
refresh: "もっと見る"
|
||||||
|
close: "閉じる"
|
||||||
|
desktop/views/components/game-window.vue:
|
||||||
|
game: "リバーシ"
|
||||||
|
desktop/views/components/home.vue:
|
||||||
|
done: "完了"
|
||||||
|
add-widget: "ウィジェットを追加:"
|
||||||
|
add: "追加"
|
||||||
|
desktop/views/input-dialog.vue:
|
||||||
|
cancel: "キャンセル"
|
||||||
|
ok: "決定"
|
||||||
|
desktop/views/components/messaging-room-window.vue:
|
||||||
|
title: "メッセージ:"
|
||||||
|
desktop/views/components/messaging-window.vue:
|
||||||
|
title: "メッセージ"
|
||||||
|
desktop/views/components/note-detail.vue:
|
||||||
|
more: "会話をもっと読み込む"
|
||||||
|
private: "この投稿は非公開です"
|
||||||
|
deleted: "この投稿は削除されました"
|
||||||
|
reposted-by: "{}がRenote"
|
||||||
|
location: "位置情報"
|
||||||
|
renote: "Renote"
|
||||||
|
add-reaction: "リアクション"
|
||||||
|
desktop/views/components/notes.note.vue:
|
||||||
|
reposted-by: "{}がRenote"
|
||||||
|
reply: "返信"
|
||||||
|
renote: "Renote"
|
||||||
|
add-reaction: "リアクション"
|
||||||
|
detail: "詳細"
|
||||||
|
private: "この投稿は非公開です"
|
||||||
|
deleted: "この投稿は削除されました"
|
||||||
|
desktop/views/components/notes.vue:
|
||||||
|
error: "読み込みに失敗しました。"
|
||||||
|
retry: "リトライ"
|
||||||
|
load-more: "もっと読み込む"
|
||||||
|
desktop/views/components/notifications.vue:
|
||||||
|
more: "もっと見る"
|
||||||
|
empty: "ありません!"
|
||||||
|
desktop/views/components/post-form.vue:
|
||||||
|
reply-placeholder: "この投稿への返信..."
|
||||||
|
quote-placeholder: "この投稿を引用..."
|
||||||
|
submit: "投稿"
|
||||||
|
reply: "返信"
|
||||||
|
renote: "Renote"
|
||||||
|
posted: "投稿しました!"
|
||||||
|
replied: "返信しました!"
|
||||||
|
reposted: "Renoteしました!"
|
||||||
|
note-failed: "投稿に失敗しました"
|
||||||
|
reply-failed: "返信に失敗しました"
|
||||||
|
renote-failed: "Renoteに失敗しました"
|
||||||
|
posting: "投稿中"
|
||||||
|
attach-media-from-local: "PCからメディアを添付"
|
||||||
|
attach-media-from-drive: "ドライブからメディアを添付"
|
||||||
|
attach-cancel: "添付取り消し"
|
||||||
|
insert-a-kao: "v('ω')v"
|
||||||
|
create-poll: "アンケートを作成"
|
||||||
|
text-remain: "残り{}文字"
|
||||||
|
desktop/views/components/post-form-window.vue:
|
||||||
|
note: "新規投稿"
|
||||||
|
reply: "返信"
|
||||||
|
attaches: "添付: {}メディア"
|
||||||
|
uploading-media: "{}個のメディアをアップロード中"
|
||||||
|
desktop/views/components/progress-dialog.vue:
|
||||||
|
waiting: "待機中"
|
||||||
|
desktop/views/components/renote-form.vue:
|
||||||
|
quote: "引用する..."
|
||||||
|
cancel: "キャンセル"
|
||||||
|
renote: "Renote"
|
||||||
|
reposting: "しています..."
|
||||||
|
success: "Renoteしました!"
|
||||||
|
failure: "Renoteに失敗しました"
|
||||||
|
desktop/views/components/renote-form-window.vue:
|
||||||
|
title: "この投稿をRenoteしますか?"
|
||||||
|
desktop/views/components/settings-window.vue:
|
||||||
|
settings: "設定"
|
||||||
|
desktop/views/components/settings.vue:
|
||||||
|
profile: "プロフィール"
|
||||||
|
notification: "通知"
|
||||||
|
apps: "アプリ"
|
||||||
|
mute: "ミュート"
|
||||||
|
drive: "ドライブ"
|
||||||
|
security: "セキュリティ"
|
||||||
|
signin: "サインイン履歴"
|
||||||
|
password: "パスワード"
|
||||||
|
2fa: "二段階認証"
|
||||||
|
other: "その他"
|
||||||
|
license: "ライセンス"
|
||||||
|
behaviour: "動作"
|
||||||
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
|
fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。"
|
||||||
|
auto-popout: "ウィンドウの自動ポップアウト"
|
||||||
|
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
||||||
|
advanced: "詳細設定"
|
||||||
|
api-via-stream: "ストリームを経由したAPIリクエスト"
|
||||||
|
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||||
|
display: "デザインと表示"
|
||||||
|
customize: "ホームをカスタマイズ"
|
||||||
|
choose-wallpaper: "壁紙を選択"
|
||||||
|
delete-wallpaper: "壁紙を削除"
|
||||||
|
dark-mode: "ダークモード"
|
||||||
|
circle-icons: "円形のアイコンを使用"
|
||||||
|
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||||
|
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||||
|
show-reply-target: "リプライ先を表示する"
|
||||||
|
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||||
|
show-renoted-my-notes: "Renoteされた自分の投稿をタイムラインに表示する"
|
||||||
|
show-maps: "マップの自動展開"
|
||||||
|
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
||||||
|
sound: "サウンド"
|
||||||
|
enable-sounds: "サウンドを有効にする"
|
||||||
|
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
|
||||||
|
volume: "ボリューム"
|
||||||
|
test: "テスト"
|
||||||
|
mobile: "モバイル"
|
||||||
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
|
language: "言語"
|
||||||
|
pick-language: "言語を選択"
|
||||||
|
recommended: "推奨"
|
||||||
|
auto: "自動"
|
||||||
|
specify-language: "言語を指定"
|
||||||
|
language-desc: "変更はページの再度読み込み後に反映されます。"
|
||||||
|
cache: "キャッシュ"
|
||||||
|
clean-cache: "クリーンアップ"
|
||||||
|
cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。"
|
||||||
|
cache-cleared: "キャッシュを削除しました"
|
||||||
|
cache-cleared-desc: "ページを再度読み込みしてください。"
|
||||||
|
auto-watch: "投稿の自動ウォッチ"
|
||||||
|
auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。"
|
||||||
|
about: "Misskeyについて"
|
||||||
|
operator: "このサーバーの運営者"
|
||||||
|
update: "Misskey Update"
|
||||||
|
version: "バージョン:"
|
||||||
|
latest-version: "最新のバージョン:"
|
||||||
|
update-checking: "アップデートを確認中"
|
||||||
|
do-update: "アップデートを確認"
|
||||||
|
update-settings: "詳細設定"
|
||||||
|
prevent-update: "アップデートを延期する(非推奨)"
|
||||||
|
prevent-update-desc: "この設定をオンにしてもアップデートが反映される場合があります。この設定はこのデバイスのみ有効です。"
|
||||||
|
no-updates: "利用可能な更新はありません"
|
||||||
|
no-updates-desc: "お使いのMisskeyは最新です。"
|
||||||
|
update-available: "新しいバージョンが利用可能です"
|
||||||
|
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||||
|
advanced-settings: "高度な設定"
|
||||||
|
debug-mode: "デバッグモードを有効にする"
|
||||||
|
debug-mode-desc: "この設定はブラウザに記憶されます。"
|
||||||
|
experimental: "実験的機能を有効にする"
|
||||||
|
experimental-desc: "実験的機能を有効にするとMisskeyの動作が不安定になる可能性があります。この設定はブラウザに記憶されます。"
|
||||||
|
tools: "ツール"
|
||||||
|
task-manager: "タスクマネージャ"
|
||||||
|
third-parties: "サードパーティ"
|
||||||
|
desktop/views/components/settings.2fa.vue:
|
||||||
|
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
||||||
|
detail: "詳細..."
|
||||||
|
url: "https://www.google.co.jp/intl/ja/landing/2step/"
|
||||||
|
caution: "登録したデバイスを紛失するなどした場合、Misskeyにサインインできなくなりますのでご注意ください。"
|
||||||
|
register: "デバイスを登録する"
|
||||||
|
already-registered: "既に設定は完了しています。"
|
||||||
|
unregister: "設定を解除"
|
||||||
|
unregistered: "二段階認証が無効になりました。"
|
||||||
|
enter-password: "パスワードを入力してください"
|
||||||
|
authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:"
|
||||||
|
howtoinstall: "インストール方法はこちら"
|
||||||
|
scan: "次に、表示されているQRコードをスキャンします:"
|
||||||
|
done: "お使いのデバイスに表示されているトークンを入力して完了します:"
|
||||||
|
submit: "完了"
|
||||||
|
success: "設定が完了しました!"
|
||||||
|
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
||||||
|
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
||||||
|
desktop/views/components/settings.api.vue:
|
||||||
|
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
||||||
|
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||||
|
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||||
|
regenerate-token: "トークンを再生成"
|
||||||
|
token: "Token:"
|
||||||
|
enter-password: "パスワードを入力してください"
|
||||||
|
desktop/views/components/settings.apps.vue:
|
||||||
|
no-apps: "連携しているアプリケーションはありません"
|
||||||
|
desktop/views/components/settings.mute.vue:
|
||||||
|
no-users: "ミュートしているユーザーはいません"
|
||||||
|
desktop/views/components/settings.password.vue:
|
||||||
|
reset: "パスワードを変更する"
|
||||||
|
enter-current-password: "現在のパスワードを入力してください"
|
||||||
|
enter-new-password: "新しいパスワードを入力してください"
|
||||||
|
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
||||||
|
not-match: "新しいパスワードが一致しません"
|
||||||
|
changed: "パスワードを変更しました"
|
||||||
|
desktop/views/components/settings.profile.vue:
|
||||||
|
avatar: "アイコン"
|
||||||
|
choice-avatar: "画像を選択"
|
||||||
|
name: "名前"
|
||||||
|
location: "場所"
|
||||||
|
description: "自己紹介"
|
||||||
|
birthday: "誕生日"
|
||||||
|
save: "保存"
|
||||||
|
locked-account: "アカウントの保護"
|
||||||
|
is-locked: "投稿を非公開にする"
|
||||||
|
other: "その他"
|
||||||
|
is-bot: "このアカウントはBotです"
|
||||||
|
is-cat: "このアカウントはCatです"
|
||||||
|
desktop/views/components/sub-note-content.vue:
|
||||||
|
private: "この投稿は非公開です"
|
||||||
|
deleted: "この投稿は削除されました"
|
||||||
|
media-count: "{}つのメディア"
|
||||||
|
poll: "アンケート"
|
||||||
|
desktop/views/components/taskmanager.vue:
|
||||||
|
title: "タスクマネージャ"
|
||||||
|
desktop/views/components/timeline.vue:
|
||||||
|
home: "ホーム"
|
||||||
|
local: "ローカル"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
|
global: "グローバル"
|
||||||
|
list: "リスト"
|
||||||
|
desktop/views/components/ui.header.vue:
|
||||||
|
welcome-back: "おかえりなさい、"
|
||||||
|
desktop/views/components/ui.header.account.vue:
|
||||||
|
profile: "プロフィール"
|
||||||
|
drive: "ドライブ"
|
||||||
|
favorites: "お気に入り"
|
||||||
|
lists: "リスト"
|
||||||
|
follow-requests: "フォロー申請"
|
||||||
|
customize: "ホームのカスタマイズ"
|
||||||
|
settings: "設定"
|
||||||
|
signout: "サインアウト"
|
||||||
|
dark: "闇に飲まれる"
|
||||||
|
desktop/views/components/ui.header.nav.vue:
|
||||||
|
home: "ホーム"
|
||||||
|
deck: "デッキ"
|
||||||
|
messaging: "メッセージ"
|
||||||
|
game: "ゲーム"
|
||||||
|
desktop/views/components/ui.header.notifications.vue:
|
||||||
|
title: "通知"
|
||||||
|
desktop/views/components/ui.header.post.vue:
|
||||||
|
post: "新規投稿"
|
||||||
|
desktop/views/components/ui.header.search.vue:
|
||||||
|
placeholder: "検索"
|
||||||
|
desktop/views/components/received-follow-requests-window.vue:
|
||||||
|
title: "フォロー申請"
|
||||||
|
accept: "承認"
|
||||||
|
reject: "拒否"
|
||||||
|
desktop/views/components/user-lists-window.vue:
|
||||||
|
title: "リスト"
|
||||||
|
create-list: "リストを作成"
|
||||||
|
desktop/views/components/user-preview.vue:
|
||||||
|
notes: "投稿"
|
||||||
|
following: "フォロー"
|
||||||
|
followers: "フォロワー"
|
||||||
|
desktop/views/components/users-list.vue:
|
||||||
|
all: "すべて"
|
||||||
|
iknow: "知り合い"
|
||||||
|
load-more: "もっと"
|
||||||
|
fetching: "読み込んでいます"
|
||||||
|
desktop/views/components/users-list-item.vue:
|
||||||
|
followed: "フォローされています"
|
||||||
|
desktop/views/components/window.vue:
|
||||||
|
popout: "ポップアウト"
|
||||||
|
close: "閉じる"
|
||||||
|
desktop/views/pages/deck/deck.tl-column.vue:
|
||||||
|
is-media-only: "メディア投稿のみ"
|
||||||
|
is-media-view: "メディアビュー"
|
||||||
|
edit: "オプション"
|
||||||
|
desktop/views/pages/deck/deck.note.vue:
|
||||||
|
reposted-by: "{}がRenote"
|
||||||
|
private: "この投稿は非公開です"
|
||||||
|
deleted: "この投稿は削除されました"
|
||||||
|
desktop/views/pages/welcome.vue:
|
||||||
|
about: "詳しく..."
|
||||||
|
gotit: "わかった"
|
||||||
|
signin: "ログイン"
|
||||||
|
signup: "新規登録"
|
||||||
|
signin-button: "やってる"
|
||||||
|
signup-button: "やる"
|
||||||
|
timeline: "タイムライン"
|
||||||
|
desktop/views/pages/drive.vue:
|
||||||
|
title: "Misskey Drive"
|
||||||
|
desktop/views/pages/favorites.vue:
|
||||||
|
more: "さらに読み込む"
|
||||||
|
desktop/views/pages/home-customize.vue:
|
||||||
|
title: "ホームのカスタマイズ"
|
||||||
|
desktop/views/pages/note.vue:
|
||||||
|
prev: "前の投稿"
|
||||||
|
next: "次の投稿"
|
||||||
|
desktop/views/pages/selectdrive.vue:
|
||||||
|
title: "ファイルを選択してください"
|
||||||
|
ok: "決定"
|
||||||
|
cancel: "キャンセル"
|
||||||
|
upload: "PCからドライブにファイルをアップロード"
|
||||||
|
desktop/views/pages/user-list.users.vue:
|
||||||
|
users: "ユーザー"
|
||||||
|
add-user: "ユーザーを追加"
|
||||||
|
username: "ユーザー名"
|
||||||
|
desktop/views/pages/user/user.followers-you-know.vue:
|
||||||
|
title: "知り合いのフォロワー"
|
||||||
|
loading: "読み込み中"
|
||||||
|
no-users: "知り合いのフォロワーはいません"
|
||||||
|
desktop/views/pages/user/user.friends.vue:
|
||||||
|
title: "よく話すユーザー"
|
||||||
|
loading: "読み込み中"
|
||||||
|
no-users: "よく話すユーザーはいません"
|
||||||
|
desktop/views/pages/user/user.vue:
|
||||||
|
is-suspended: "このユーザーは凍結されています。"
|
||||||
|
is-remote: "このユーザーはリモートユーザーです。"
|
||||||
|
view-remote: "正確な情報を見る"
|
||||||
|
desktop/views/pages/user/user.home.vue:
|
||||||
|
last-used-at: "最終アクセス"
|
||||||
|
desktop/views/pages/user/user.photos.vue:
|
||||||
|
title: "フォト"
|
||||||
|
loading: "読み込み中"
|
||||||
|
no-photos: "写真はありません"
|
||||||
|
desktop/views/pages/user/user.profile.vue:
|
||||||
|
follows-you: "フォローされています"
|
||||||
|
stalk: "ストークする"
|
||||||
|
stalking: "ストーキングしています"
|
||||||
|
unstalk: "ストーク解除"
|
||||||
|
mute: "ミュートする"
|
||||||
|
muted: "ミュートしています"
|
||||||
|
unmute: "ミュート解除"
|
||||||
|
desktop/views/pages/user/user.header.vue:
|
||||||
|
posts: "投稿"
|
||||||
|
following: "フォロー"
|
||||||
|
followers: "フォロワー"
|
||||||
|
is-bot: "このアカウントはBotです"
|
||||||
|
desktop/views/pages/user/user.timeline.vue:
|
||||||
|
default: "投稿"
|
||||||
|
with-replies: "投稿と返信"
|
||||||
|
with-media: "メディア"
|
||||||
|
empty: "このユーザーはまだ何も投稿していないようです。"
|
||||||
|
desktop/views/widgets/messaging.vue:
|
||||||
|
title: "メッセージ"
|
||||||
|
desktop/views/widgets/notifications.vue:
|
||||||
|
title: "通知"
|
||||||
|
settings: "通知の設定"
|
||||||
|
desktop/views/widgets/polls.vue:
|
||||||
|
title: "アンケート"
|
||||||
|
refresh: "他を見る"
|
||||||
|
nothing: "ありません!"
|
||||||
|
desktop/views/widgets/post-form.vue:
|
||||||
|
title: "投稿"
|
||||||
|
note: "投稿"
|
||||||
|
desktop/views/widgets/profile.vue:
|
||||||
|
update-banner: "クリックでバナー編集"
|
||||||
|
update-avatar: "クリックでアバター編集"
|
||||||
|
desktop/views/widgets/trends.vue:
|
||||||
|
title: "トレンド"
|
||||||
|
refresh: "他を見る"
|
||||||
|
nothing: "ありません!"
|
||||||
|
desktop/views/widgets/users.vue:
|
||||||
|
title: "おすすめユーザー"
|
||||||
|
refresh: "他を見る"
|
||||||
|
no-one: "いません!"
|
||||||
|
mobile/views/components/drive.vue:
|
||||||
|
drive: "ドライブ"
|
||||||
|
used: "使用中"
|
||||||
|
folder-count: "フォルダ"
|
||||||
|
count-separator: "、"
|
||||||
|
file-count: "ファイル"
|
||||||
|
load-more: "もっと読み込む"
|
||||||
|
nothing-in-drive: "ドライブには何もありません"
|
||||||
|
folder-is-empty: "このフォルダは空です"
|
||||||
|
prompt: "何をしますか?(数字を入力してください): <1 → ファイルをアップロード | 2 → ファイルをURLでアップロード | 3 → フォルダ作成 | 4 → このフォルダ名を変更 | 5 → このフォルダを移動 | 6 → このフォルダを削除>"
|
||||||
|
deletion-alert: "ごめんなさい!フォルダの削除は未実装です...。"
|
||||||
|
folder-name: "フォルダー名"
|
||||||
|
root-rename-alert: "現在いる場所はルートで、フォルダではないため名前の変更はできません。名前を変更したいフォルダに移動してからやってください。"
|
||||||
|
root-move-alert: "現在いる場所はルートで、フォルダではないため移動はできません。移動したいフォルダに移動してからやってください。"
|
||||||
|
url-prompt: "アップロードしたいファイルのURL"
|
||||||
|
uploading: "アップロードをリクエストしました。アップロードが完了するまで時間がかかる場合があります。"
|
||||||
|
mobile/views/components/drive-file-detail.vue:
|
||||||
|
rename: "名前を変更"
|
||||||
|
mobile/views/components/drive-file-chooser.vue:
|
||||||
|
select-file: "ファイルを選択"
|
||||||
|
mobile/views/components/drive-folder-chooser.vue:
|
||||||
|
select-folder: "フォルダーを選択"
|
||||||
|
mobile/views/components/drive.file-detail.vue:
|
||||||
|
download: "ダウンロード"
|
||||||
|
rename: "名前を変更"
|
||||||
|
move: "移動"
|
||||||
|
hash: "ハッシュ (md5)"
|
||||||
|
exif: "EXIF"
|
||||||
|
mobile/views/components/follow-button.vue:
|
||||||
|
following: "フォロー中"
|
||||||
|
follow: "フォロー"
|
||||||
|
request-pending: "フォロー許可待ち"
|
||||||
|
follow-request: "フォロー申請"
|
||||||
|
mobile/views/components/friends-maker.vue:
|
||||||
|
title: "気になるユーザーをフォロー"
|
||||||
|
empty: "おすすめのユーザーは見つかりませんでした。"
|
||||||
|
fetching: "読み込んでいます"
|
||||||
|
refresh: "もっと見る"
|
||||||
|
close: "閉じる"
|
||||||
|
mobile/views/components/note.vue:
|
||||||
|
reposted-by: "{}がRenote"
|
||||||
|
more: "もっと見る"
|
||||||
|
less: "隠す"
|
||||||
|
private: "この投稿は非公開です"
|
||||||
|
deleted: "この投稿は削除されました"
|
||||||
|
location: "位置情報"
|
||||||
|
mobile/views/components/note-detail.vue:
|
||||||
|
reply: "返信"
|
||||||
|
reaction: "リアクション"
|
||||||
|
reposted-by: "{}がRenote"
|
||||||
|
private: "この投稿は非公開です"
|
||||||
|
deleted: "この投稿は削除されました"
|
||||||
|
location: "位置情報"
|
||||||
|
mobile/views/components/note-preview.vue:
|
||||||
|
admin: "admin"
|
||||||
|
bot: "bot"
|
||||||
|
cat: "cat"
|
||||||
|
mobile/views/components/note-sub.vue:
|
||||||
|
admin: "admin"
|
||||||
|
bot: "bot"
|
||||||
|
cat: "cat"
|
||||||
|
mobile/views/components/notes.vue:
|
||||||
|
failed: "読み込みに失敗しました。"
|
||||||
|
retry: "リトライ"
|
||||||
|
mobile/views/components/notifications.vue:
|
||||||
|
more: "もっと見る"
|
||||||
|
empty: "ありません!"
|
||||||
|
mobile/views/components/post-form.vue:
|
||||||
|
add-visible-user: "ユーザーを追加"
|
||||||
|
submit: "投稿"
|
||||||
|
reply: "返信"
|
||||||
|
renote: "Renote"
|
||||||
|
quote-placeholder: "この投稿を引用... (オプション)"
|
||||||
|
reply-placeholder: "この投稿への返信..."
|
||||||
|
cw-placeholder: "内容への注釈 (オプション)"
|
||||||
|
location-alert: "お使いの端末は位置情報に対応していません"
|
||||||
|
error: "エラー"
|
||||||
|
username-prompt: "ユーザー名を入力してください"
|
||||||
|
mobile/views/components/sub-note-content.vue:
|
||||||
|
private: "この投稿は非公開です"
|
||||||
|
deleted: "この投稿は削除されました"
|
||||||
|
media-count: "{}つのメディア"
|
||||||
|
poll: "アンケート"
|
||||||
|
mobile/views/components/timeline.vue:
|
||||||
|
empty: "投稿がありません"
|
||||||
|
load-more: "もっと"
|
||||||
|
mobile/views/components/ui.nav.vue:
|
||||||
|
timeline: "タイムライン"
|
||||||
|
notifications: "通知"
|
||||||
|
messaging: "メッセージ"
|
||||||
|
follow-requests: "フォロー申請"
|
||||||
|
search: "検索"
|
||||||
|
drive: "ドライブ"
|
||||||
|
favorites: "お気に入り"
|
||||||
|
user-lists: "リスト"
|
||||||
|
widgets: "ウィジェット"
|
||||||
|
game: "ゲーム"
|
||||||
|
darkmode: "ダークモード"
|
||||||
|
settings: "設定"
|
||||||
|
about: "Misskeyについて"
|
||||||
|
mobile/views/components/user-timeline.vue:
|
||||||
|
no-notes: "このユーザーは投稿していないようです。"
|
||||||
|
no-notes-with-media: "メディア付き投稿はありません。"
|
||||||
|
load-more: "もっと"
|
||||||
|
mobile/views/components/users-list.vue:
|
||||||
|
all: "すべて"
|
||||||
|
known: "知り合い"
|
||||||
|
load-more: "もっと"
|
||||||
|
mobile/views/pages/favorites.vue:
|
||||||
|
title: "お気に入り"
|
||||||
|
mobile/views/pages/user-lists.vue:
|
||||||
|
title: "リスト"
|
||||||
|
enter-list-name: "リスト名を入力してください"
|
||||||
|
mobile/views/pages/drive.vue:
|
||||||
|
drive: "ドライブ"
|
||||||
|
more: "もっと見る"
|
||||||
|
mobile/views/pages/followers.vue:
|
||||||
|
followers-of: "{}のフォロワー"
|
||||||
|
mobile/views/pages/following.vue:
|
||||||
|
following-of: "{}のフォロー"
|
||||||
|
mobile/views/pages/home.vue:
|
||||||
|
home: "ホーム"
|
||||||
|
local: "ローカル"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
|
global: "グローバル"
|
||||||
|
mobile/views/pages/messaging.vue:
|
||||||
|
messaging: "メッセージ"
|
||||||
|
mobile/views/pages/messaging-room.vue:
|
||||||
|
messaging: "メッセージ"
|
||||||
|
mobile/views/pages/received-follow-requests.vue:
|
||||||
|
title: "フォロー申請"
|
||||||
|
accept: "承認"
|
||||||
|
reject: "拒否"
|
||||||
|
mobile/views/pages/note.vue:
|
||||||
|
title: "投稿"
|
||||||
|
prev: "前の投稿"
|
||||||
|
next: "次の投稿"
|
||||||
|
mobile/views/pages/notifications.vue:
|
||||||
|
notifications: "通知"
|
||||||
|
read-all: "すべての通知を既読にしますか?"
|
||||||
|
mobile/views/pages/settings/settings.profile.vue:
|
||||||
|
title: "プロフィール"
|
||||||
|
name: "名前"
|
||||||
|
account: "アカウント"
|
||||||
|
location: "場所"
|
||||||
|
description: "自己紹介"
|
||||||
|
birthday: "誕生日"
|
||||||
|
avatar: "アイコン"
|
||||||
|
banner: "バナー"
|
||||||
|
is-cat: "このアカウントはCatです"
|
||||||
|
save: "保存"
|
||||||
|
saved: "プロフィールを保存しました"
|
||||||
|
uploading: "アップロード中"
|
||||||
|
upload-failed: "アップロードに失敗しました"
|
||||||
|
mobile/views/pages/search.vue:
|
||||||
|
search: "検索"
|
||||||
|
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
|
mobile/views/pages/selectdrive.vue:
|
||||||
|
select-file: "ファイルを選択"
|
||||||
|
mobile/views/pages/settings.vue:
|
||||||
|
signed-in-as: "{}としてサインイン中"
|
||||||
|
lang: "言語"
|
||||||
|
lang-tip: "変更はページの再読み込み後に反映されます。"
|
||||||
|
recommended: "推奨"
|
||||||
|
auto: "自動"
|
||||||
|
specify-language: "言語を指定"
|
||||||
|
design: "デザインと表示"
|
||||||
|
dark-mode: "ダークモード"
|
||||||
|
i-am-under-limited-internet: "私は通信を制限されている"
|
||||||
|
circle-icons: "円形のアイコンを使用"
|
||||||
|
timeline: "タイムライン"
|
||||||
|
show-reply-target: "リプライ先を表示する"
|
||||||
|
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||||
|
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
||||||
|
post-style: "投稿の表示スタイル"
|
||||||
|
post-style-standard: "標準"
|
||||||
|
post-style-smart: "スマート"
|
||||||
|
behavior: "動作"
|
||||||
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
|
load-raw-images: "添付された画像を高画質で表示する"
|
||||||
|
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||||
|
twitter: "Twitter連携"
|
||||||
|
twitter-connect: "Twitterアカウントに接続する"
|
||||||
|
twitter-reconnect: "再接続する"
|
||||||
|
twitter-disconnect: "切断する"
|
||||||
|
update: "Misskey Update"
|
||||||
|
version: "バージョン:"
|
||||||
|
latest-version: "最新のバージョン:"
|
||||||
|
update-checking: "アップデートを確認中"
|
||||||
|
check-for-updates: "アップデートを確認"
|
||||||
|
no-updates: "利用可能な更新はありません"
|
||||||
|
no-updates-desc: "お使いのMisskeyは最新です。"
|
||||||
|
update-available: "新しいバージョンが利用可能です"
|
||||||
|
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||||
|
settings: "設定"
|
||||||
|
signout: "サインアウト"
|
||||||
|
mobile/views/pages/user.vue:
|
||||||
|
follows-you: "フォローされています"
|
||||||
|
following: "フォロー"
|
||||||
|
followers: "フォロワー"
|
||||||
|
notes: "投稿"
|
||||||
|
overview: "概要"
|
||||||
|
timeline: "タイムライン"
|
||||||
|
media: "メディア"
|
||||||
|
is-suspended: "このユーザーは凍結されています。"
|
||||||
|
is-remote: "このユーザーはリモートユーザーです。"
|
||||||
|
view-remote: "正確な情報を見る"
|
||||||
|
mobile/views/pages/user/home.vue:
|
||||||
|
recent-notes: "最近の投稿"
|
||||||
|
images: "画像"
|
||||||
|
activity: "アクティビティ"
|
||||||
|
keywords: "キーワード"
|
||||||
|
domains: "頻出ドメイン"
|
||||||
|
frequently-replied-users: "よく会話するユーザー"
|
||||||
|
followers-you-know: "知り合いのフォロワー"
|
||||||
|
last-used-at: "最終ログイン"
|
||||||
|
mobile/views/pages/user/home.followers-you-know.vue:
|
||||||
|
loading: "読み込み中"
|
||||||
|
no-users: "知り合いのユーザーはいません"
|
||||||
|
mobile/views/pages/user/home.friends.vue:
|
||||||
|
loading: "読み込み中"
|
||||||
|
no-users: "よく会話するユーザーはいません"
|
||||||
|
mobile/views/pages/user/home.notes.vue:
|
||||||
|
loading: "読み込み中"
|
||||||
|
no-notes: "投稿はありません"
|
||||||
|
mobile/views/pages/user/home.photos.vue:
|
||||||
|
loading: "読み込み中"
|
||||||
|
no-photos: "写真はありません"
|
||||||
|
docs:
|
||||||
|
edit-this-page-on-github: "間違いや改善点を見つけましたか?"
|
||||||
|
edit-this-page-on-github-link: "このページをGitHubで編集"
|
||||||
|
api:
|
||||||
|
entities:
|
||||||
|
properties: "プロパティ"
|
||||||
|
endpoints:
|
||||||
|
params: "パラメータ"
|
||||||
|
res: "レスポンス"
|
||||||
|
props:
|
||||||
|
name: "名前"
|
||||||
|
type: "型"
|
||||||
|
description: "説明"
|
@ -3,7 +3,7 @@ meta:
|
|||||||
lang: "Deutsch"
|
lang: "Deutsch"
|
||||||
divider: ""
|
divider: ""
|
||||||
common:
|
common:
|
||||||
misskey: "A planet 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と相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
||||||
time:
|
time:
|
||||||
@ -42,11 +42,21 @@ common:
|
|||||||
d: "Willst du etwas sagen?"
|
d: "Willst du etwas sagen?"
|
||||||
e: "Schreib hier etwas!"
|
e: "Schreib hier etwas!"
|
||||||
f: "Warte darauf, das du schreibst."
|
f: "Warte darauf, das du schreibst."
|
||||||
|
search: "検索"
|
||||||
delete: "Löschen"
|
delete: "Löschen"
|
||||||
loading: "Laden"
|
loading: "Laden"
|
||||||
ok: "OK"
|
ok: "OK"
|
||||||
|
update-available-title: "更新があります"
|
||||||
update-available: "Eine neue Version von Misskey ist verfügbar ({newer}, aktuell ist {current}). Lade die Seite neu um die aktuelle Version zu laden"
|
update-available: "Eine neue Version von Misskey ist verfügbar ({newer}, aktuell ist {current}). Lade die Seite neu um die aktuelle Version zu laden"
|
||||||
my-token-regenerated: "Dein Token wurde generiert. Du wirst jetzt abgemeldet."
|
my-token-regenerated: "Dein Token wurde generiert. Du wirst jetzt abgemeldet."
|
||||||
|
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||||
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||||
|
reversi:
|
||||||
|
drawn: "引き分け"
|
||||||
|
my-turn: "あなたのターンです"
|
||||||
|
opponent-turn: "相手のターンです"
|
||||||
|
turn-of: "{}のターンです"
|
||||||
|
past-turn-of: "{}のターン"
|
||||||
widgets:
|
widgets:
|
||||||
analog-clock: "Analoge Uhr"
|
analog-clock: "Analoge Uhr"
|
||||||
profile: "Profil"
|
profile: "Profil"
|
||||||
@ -75,6 +85,7 @@ common:
|
|||||||
widgets: "Widget hinzufügen:"
|
widgets: "Widget hinzufügen:"
|
||||||
home: "Startseite"
|
home: "Startseite"
|
||||||
local: "Lokal"
|
local: "Lokal"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
global: "Global"
|
global: "Global"
|
||||||
notifications: "Mitteilungen"
|
notifications: "Mitteilungen"
|
||||||
list: "Listen"
|
list: "Listen"
|
||||||
@ -228,6 +239,7 @@ common/views/widgets/posts-monitor.vue:
|
|||||||
common/views/widgets/hashtags.vue:
|
common/views/widgets/hashtags.vue:
|
||||||
title: "ハッシュタグ"
|
title: "ハッシュタグ"
|
||||||
count: "{}人が投稿"
|
count: "{}人が投稿"
|
||||||
|
empty: "トレンドなし"
|
||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "Serverinformationen"
|
title: "Serverinformationen"
|
||||||
toggle: "Sicht umschalten"
|
toggle: "Sicht umschalten"
|
||||||
@ -235,6 +247,12 @@ common/views/widgets/memo.vue:
|
|||||||
title: "Notizen"
|
title: "Notizen"
|
||||||
memo: "Schreib hier!"
|
memo: "Schreib hier!"
|
||||||
save: "Speichern"
|
save: "Speichern"
|
||||||
|
common/views/pages/follow.vue:
|
||||||
|
signed-in-as: "{}としてサインイン中"
|
||||||
|
following: "フォロー中"
|
||||||
|
follow: "フォロー"
|
||||||
|
request-pending: "フォロー許可待ち"
|
||||||
|
follow-request: "フォロー申請"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Schwarz ... komplett"
|
total: "Schwarz ... komplett"
|
||||||
notes: "Blau ... Hinweise"
|
notes: "Blau ... Hinweise"
|
||||||
@ -333,7 +351,7 @@ desktop/views/components/friends-maker.vue:
|
|||||||
refresh: "Mehr"
|
refresh: "Mehr"
|
||||||
close: "Schließen"
|
close: "Schließen"
|
||||||
desktop/views/components/game-window.vue:
|
desktop/views/components/game-window.vue:
|
||||||
game: "Othello"
|
game: "リバーシ"
|
||||||
desktop/views/components/home.vue:
|
desktop/views/components/home.vue:
|
||||||
done: "Verbunden"
|
done: "Verbunden"
|
||||||
add-widget: "Widget hinzufügen:"
|
add-widget: "Widget hinzufügen:"
|
||||||
@ -364,6 +382,7 @@ desktop/views/components/notes.note.vue:
|
|||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "Laden fehlgeschlagen."
|
error: "Laden fehlgeschlagen."
|
||||||
retry: "Erneut versuchen"
|
retry: "Erneut versuchen"
|
||||||
|
load-more: "もっと読み込む"
|
||||||
desktop/views/components/notifications.vue:
|
desktop/views/components/notifications.vue:
|
||||||
more: "Mehr"
|
more: "Mehr"
|
||||||
empty: "Keine Benachrichtigungen"
|
empty: "Keine Benachrichtigungen"
|
||||||
@ -383,7 +402,7 @@ desktop/views/components/post-form.vue:
|
|||||||
attach-media-from-local: "Medien von deinem PC hinzufügen"
|
attach-media-from-local: "Medien von deinem PC hinzufügen"
|
||||||
attach-media-from-drive: "Medien von deinem Speicher hinzufügen"
|
attach-media-from-drive: "Medien von deinem Speicher hinzufügen"
|
||||||
attach-cancel: "Hinzufügen abbrechen"
|
attach-cancel: "Hinzufügen abbrechen"
|
||||||
insert-a-kao: "v(‘ω’)v"
|
insert-a-kao: "v('ω')v"
|
||||||
create-poll: "Eine Abstimmung erstellen"
|
create-poll: "Eine Abstimmung erstellen"
|
||||||
text-remain: "{} Zeichen verbleibend"
|
text-remain: "{} Zeichen verbleibend"
|
||||||
desktop/views/components/post-form-window.vue:
|
desktop/views/components/post-form-window.vue:
|
||||||
@ -426,6 +445,8 @@ desktop/views/components/settings.vue:
|
|||||||
api-via-stream-desc: "API-Anfrage über WebSocket statt native Aktualisierungs-API (für bessere Leistung). Diese Einstellung wird im Browser gespeichert."
|
api-via-stream-desc: "API-Anfrage über WebSocket statt native Aktualisierungs-API (für bessere Leistung). Diese Einstellung wird im Browser gespeichert."
|
||||||
display: "Erscheinungsbild und Anzeige"
|
display: "Erscheinungsbild und Anzeige"
|
||||||
customize: "Startseite anpassen"
|
customize: "Startseite anpassen"
|
||||||
|
choose-wallpaper: "壁紙を選択"
|
||||||
|
delete-wallpaper: "壁紙を削除"
|
||||||
dark-mode: "Nacht Modus"
|
dark-mode: "Nacht Modus"
|
||||||
circle-icons: "Kreisförmige Icons"
|
circle-icons: "Kreisförmige Icons"
|
||||||
gradient-window-header: "Übergang in Fensterköpfen"
|
gradient-window-header: "Übergang in Fensterköpfen"
|
||||||
@ -521,6 +542,9 @@ desktop/views/components/settings.profile.vue:
|
|||||||
description: "自己紹介"
|
description: "自己紹介"
|
||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
save: "Profil aktualisieren"
|
save: "Profil aktualisieren"
|
||||||
|
locked-account: "アカウントの保護"
|
||||||
|
is-locked: "投稿を非公開にする"
|
||||||
|
other: "その他"
|
||||||
is-bot: "このアカウントはBotです"
|
is-bot: "このアカウントはBotです"
|
||||||
is-cat: "このアカウントはCatです"
|
is-cat: "このアカウントはCatです"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
@ -533,15 +557,18 @@ desktop/views/components/taskmanager.vue:
|
|||||||
desktop/views/components/timeline.vue:
|
desktop/views/components/timeline.vue:
|
||||||
home: "Home"
|
home: "Home"
|
||||||
local: "Lokal"
|
local: "Lokal"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
global: "Global"
|
global: "Global"
|
||||||
list: "Listen"
|
list: "Listen"
|
||||||
|
desktop/views/components/ui.header.vue:
|
||||||
|
welcome-back: "おかえりなさい、"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "Dein Profil"
|
profile: "Dein Profil"
|
||||||
drive: "Speicher"
|
drive: "Speicher"
|
||||||
favorites: "Favoriten"
|
favorites: "Favoriten"
|
||||||
lists: "Listen"
|
lists: "Listen"
|
||||||
follow-requests: "フォロー申請"
|
follow-requests: "フォロー申請"
|
||||||
customize: "Anpassen"
|
customize: "ホームのカスタマイズ"
|
||||||
settings: "Einstellungen"
|
settings: "Einstellungen"
|
||||||
signout: "Ausloggen"
|
signout: "Ausloggen"
|
||||||
dark: "Verdunkeln"
|
dark: "Verdunkeln"
|
||||||
@ -580,6 +607,7 @@ desktop/views/components/window.vue:
|
|||||||
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: "メディアビュー"
|
||||||
|
edit: "オプション"
|
||||||
desktop/views/pages/deck/deck.note.vue:
|
desktop/views/pages/deck/deck.note.vue:
|
||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
@ -618,7 +646,7 @@ desktop/views/pages/user/user.friends.vue:
|
|||||||
title: "よく話すユーザー"
|
title: "よく話すユーザー"
|
||||||
loading: "読み込み中"
|
loading: "読み込み中"
|
||||||
no-users: "よく話すユーザーはいません"
|
no-users: "よく話すユーザーはいません"
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.vue:
|
||||||
is-suspended: "このユーザーは凍結されています。"
|
is-suspended: "このユーザーは凍結されています。"
|
||||||
is-remote: "このユーザーはリモートユーザーです。"
|
is-remote: "このユーザーはリモートユーザーです。"
|
||||||
view-remote: "正確な情報を見る"
|
view-remote: "正確な情報を見る"
|
||||||
@ -636,6 +664,11 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "ミュートする"
|
mute: "ミュートする"
|
||||||
muted: "ミュートしています"
|
muted: "ミュートしています"
|
||||||
unmute: "ミュート解除"
|
unmute: "ミュート解除"
|
||||||
|
desktop/views/pages/user/user.header.vue:
|
||||||
|
posts: "投稿"
|
||||||
|
following: "フォロー"
|
||||||
|
followers: "フォロワー"
|
||||||
|
is-bot: "このアカウントはBotです"
|
||||||
desktop/views/pages/user/user.timeline.vue:
|
desktop/views/pages/user/user.timeline.vue:
|
||||||
default: "投稿"
|
default: "投稿"
|
||||||
with-replies: "投稿と返信"
|
with-replies: "投稿と返信"
|
||||||
@ -787,6 +820,7 @@ mobile/views/pages/following.vue:
|
|||||||
mobile/views/pages/home.vue:
|
mobile/views/pages/home.vue:
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
local: "ローカル"
|
local: "ローカル"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
global: "グローバル"
|
global: "グローバル"
|
||||||
mobile/views/pages/messaging.vue:
|
mobile/views/pages/messaging.vue:
|
||||||
messaging: "メッセージ"
|
messaging: "メッセージ"
|
||||||
@ -904,7 +938,4 @@ docs:
|
|||||||
props:
|
props:
|
||||||
name: "名前"
|
name: "名前"
|
||||||
type: "型"
|
type: "型"
|
||||||
optional: "オプション"
|
|
||||||
description: "説明"
|
description: "説明"
|
||||||
yes: "はい"
|
|
||||||
no: "いいえ"
|
|
||||||
|
323
locales/en.yml
@ -3,13 +3,13 @@ meta:
|
|||||||
lang: "English"
|
lang: "English"
|
||||||
divider: ""
|
divider: ""
|
||||||
common:
|
common:
|
||||||
misskey: "A planet of fediverse"
|
misskey: "A ⭐ of the fediverse"
|
||||||
about-title: "A ⭐ of fediverse."
|
about-title: "A ⭐ of the fediverse."
|
||||||
about: "Thanks for finding Misskey. Misskey is a <b>decentralized microblogging platform</b> born on Earth. Since it exists within 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?"
|
||||||
time:
|
time:
|
||||||
unknown: "unknown"
|
unknown: "unknown"
|
||||||
future: "future"
|
future: "future"
|
||||||
just_now: "just now"
|
just_now: "now"
|
||||||
seconds_ago: "{}s ago"
|
seconds_ago: "{}s ago"
|
||||||
minutes_ago: "{}m ago"
|
minutes_ago: "{}m ago"
|
||||||
hours_ago: "{}h ago"
|
hours_ago: "{}h ago"
|
||||||
@ -39,14 +39,24 @@ common:
|
|||||||
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: "Do you want to say something?"
|
d: "What do you wish to say?"
|
||||||
e: "Write here!"
|
e: "Write here"
|
||||||
f: "Waiting for your writing."
|
f: "Waiting for your writing..."
|
||||||
|
search: "Search"
|
||||||
delete: "Delete"
|
delete: "Delete"
|
||||||
loading: "Loading"
|
loading: "Loading"
|
||||||
ok: "OK"
|
ok: "OK"
|
||||||
|
update-available-title: "Update available"
|
||||||
update-available: "A new version of Misskey is now available({newer}, the current version is {current}). Reload the page to apply updates."
|
update-available: "A new version of Misskey is now available({newer}, the current version is {current}). Reload the page to apply updates."
|
||||||
my-token-regenerated: "Your token has been renewed 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"
|
||||||
|
show-reversi-board-labels: "Show row and column labels in Reversi"
|
||||||
|
reversi:
|
||||||
|
drawn: "Draw"
|
||||||
|
my-turn: "Your turn"
|
||||||
|
opponent-turn: "Opponent's turn"
|
||||||
|
turn-of: "{}'s turn"
|
||||||
|
past-turn-of: "{}'s turn"
|
||||||
widgets:
|
widgets:
|
||||||
analog-clock: "Analog clock"
|
analog-clock: "Analog clock"
|
||||||
profile: "Profile"
|
profile: "Profile"
|
||||||
@ -56,7 +66,7 @@ common:
|
|||||||
rss: "RSS reader"
|
rss: "RSS reader"
|
||||||
memo: "Sticky note"
|
memo: "Sticky note"
|
||||||
trends: "Trends"
|
trends: "Trends"
|
||||||
photo-stream: "Photo stream"
|
photo-stream: "Photostream"
|
||||||
posts-monitor: "Chart of posts"
|
posts-monitor: "Chart of posts"
|
||||||
slideshow: "Slideshow"
|
slideshow: "Slideshow"
|
||||||
version: "Version"
|
version: "Version"
|
||||||
@ -67,7 +77,7 @@ common:
|
|||||||
post-form: "Post form"
|
post-form: "Post form"
|
||||||
messaging: "Messages"
|
messaging: "Messages"
|
||||||
server: "Server info"
|
server: "Server info"
|
||||||
donation: "Donation"
|
donation: "Request for donations"
|
||||||
nav: "Navigation"
|
nav: "Navigation"
|
||||||
tips: "Tips"
|
tips: "Tips"
|
||||||
hashtags: "Hashtags"
|
hashtags: "Hashtags"
|
||||||
@ -75,21 +85,22 @@ common:
|
|||||||
widgets: "Widgets"
|
widgets: "Widgets"
|
||||||
home: "Home"
|
home: "Home"
|
||||||
local: "Local"
|
local: "Local"
|
||||||
|
hybrid: "Social"
|
||||||
global: "Global"
|
global: "Global"
|
||||||
notifications: "Notifications"
|
notifications: "Notifications"
|
||||||
list: "List"
|
list: "Lists"
|
||||||
swap-left: "Move left"
|
swap-left: "Move to the left"
|
||||||
swap-right: "Move right"
|
swap-right: "Move to the right"
|
||||||
swap-up: "Move upward"
|
swap-up: "Move up"
|
||||||
swap-down: "Move downward"
|
swap-down: "Move downward"
|
||||||
remove: "Remove"
|
remove: "Remove"
|
||||||
add-column: "Add a column"
|
add-column: "Add a column"
|
||||||
rename: "Rename"
|
rename: "Rename"
|
||||||
stack-left: "Stack to left"
|
stack-left: "Stack to the left"
|
||||||
pop-right: "Pop to right"
|
pop-right: "Dock on the right"
|
||||||
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 either 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:
|
||||||
@ -102,11 +113,11 @@ common/views/components/connect-failed.troubleshooter.vue:
|
|||||||
checking-server: "Checking server connection"
|
checking-server: "Checking server connection"
|
||||||
finding: "Searching for issues"
|
finding: "Searching for issues"
|
||||||
no-network: "No connection"
|
no-network: "No connection"
|
||||||
no-network-desc: "Please make sure you are connected to the network."
|
no-network-desc: "Please make sure that you have a network connection."
|
||||||
no-internet: "There is no Internet connection"
|
no-internet: "There is no Internet connection"
|
||||||
no-internet-desc: "Please make sure you are connected to the Internet."
|
no-internet-desc: "Please make sure you are connected to the Internet."
|
||||||
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 PC 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: "It seems to be able to connect. Please reload the page."
|
||||||
flush: "Clean cache"
|
flush: "Clean cache"
|
||||||
@ -114,17 +125,17 @@ common/views/components/connect-failed.troubleshooter.vue:
|
|||||||
common/views/components/messaging.vue:
|
common/views/components/messaging.vue:
|
||||||
search-user: "Find a user"
|
search-user: "Find a user"
|
||||||
you: "You"
|
you: "You"
|
||||||
no-history: "No history"
|
no-history: "Without history"
|
||||||
common/views/components/messaging-room.vue:
|
common/views/components/messaging-room.vue:
|
||||||
empty: "You haven't messaged this user"
|
empty: "No conversations"
|
||||||
more: "Read more"
|
more: "Read more"
|
||||||
no-history: "There is no more 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"
|
||||||
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 PC"
|
attach-from-local: "Attach files from your device"
|
||||||
attach-from-drive: "Attach files from your Drive"
|
attach-from-drive: "Attach files from your Drive"
|
||||||
common/views/components/messaging-room.message.vue:
|
common/views/components/messaging-room.message.vue:
|
||||||
is-read: "Read"
|
is-read: "Read"
|
||||||
@ -140,10 +151,10 @@ common/views/components/nav.vue:
|
|||||||
feedback: "Feedback"
|
feedback: "Feedback"
|
||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
favorite: "Favorite this note"
|
favorite: "Favorite this note"
|
||||||
pin: "Pin to profile page"
|
pin: "Pin to your profile page"
|
||||||
delete: "Delete"
|
delete: "Delete"
|
||||||
delete-confirm: "Are you sure you want to delete this post?"
|
delete-confirm: "Delete this post for sure?"
|
||||||
remote: "Show on origin"
|
remote: "Show the originating 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"
|
||||||
@ -152,13 +163,13 @@ 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: "You need to enter two or more choices."
|
no-only-one-choice: "At least two choices are required for this survey."
|
||||||
choice-n: "Choice {}"
|
choice-n: "Choice {}"
|
||||||
remove: "Remove this choice"
|
remove: "Delete this choice"
|
||||||
add: "+ Add a choice"
|
add: "+ Add a choice"
|
||||||
destroy: "Cancel this poll"
|
destroy: "Discard the poll"
|
||||||
common/views/components/reaction-picker.vue:
|
common/views/components/reaction-picker.vue:
|
||||||
choose-reaction: "Choose a reaction"
|
choose-reaction: "Express a reaction"
|
||||||
common/views/components/signin.vue:
|
common/views/components/signin.vue:
|
||||||
username: "Username"
|
username: "Username"
|
||||||
password: "Password"
|
password: "Password"
|
||||||
@ -183,9 +194,9 @@ common/views/components/signup.vue:
|
|||||||
retype-placeholder: "Confirm your password"
|
retype-placeholder: "Confirm your password"
|
||||||
password-matched: "OK"
|
password-matched: "OK"
|
||||||
password-not-matched: "Doesn't match"
|
password-not-matched: "Doesn't match"
|
||||||
recaptcha: "Verify"
|
recaptcha: "Verification"
|
||||||
create: "Create an Account"
|
create: "Create an Account"
|
||||||
some-error: "Account creation failed for some reason. Please try again."
|
some-error: "An attempt at account creation has failed for some reason. Please try again."
|
||||||
common/views/components/special-message.vue:
|
common/views/components/special-message.vue:
|
||||||
new-year: "Happy New Year!"
|
new-year: "Happy New Year!"
|
||||||
christmas: "Merry Christmas!"
|
christmas: "Merry Christmas!"
|
||||||
@ -194,7 +205,7 @@ common/views/components/stream-indicator.vue:
|
|||||||
reconnecting: "Reconnecting"
|
reconnecting: "Reconnecting"
|
||||||
connected: "Connected"
|
connected: "Connected"
|
||||||
common/views/components/twitter-setting.vue:
|
common/views/components/twitter-setting.vue:
|
||||||
description: "If you connect your Twitter account to your Misskey account, you will be able to see your Twitter account information on your profile and you can sign-in using Twitter."
|
description: "Once you connect your Twitter account to your Misskey account, you will be able to see information about your Twitter account on your profile, and you will be able to sign-in using Twitter."
|
||||||
connected-to: "You are connected to this Twitter account"
|
connected-to: "You are connected to this Twitter account"
|
||||||
detail: "Details..."
|
detail: "Details..."
|
||||||
reconnect: "Reconnect"
|
reconnect: "Reconnect"
|
||||||
@ -213,14 +224,14 @@ common/views/components/visibility-chooser.vue:
|
|||||||
private: "Private"
|
private: "Private"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "Fetching"
|
fetching: "Fetching"
|
||||||
no-broadcasts: "No broadcasts"
|
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/donation.vue:
|
common/views/widgets/donation.vue:
|
||||||
title: "Donation"
|
title: "Request for donations"
|
||||||
text: "To keep Misskey up and running we spend money for our domain name, servers and so on. Since we don't get money from advertisements, we count on donations from all of you. If you're interested contact {}. Thank you for your contribution!"
|
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!"
|
||||||
common/views/widgets/photo-stream.vue:
|
common/views/widgets/photo-stream.vue:
|
||||||
title: "Photostream"
|
title: "Photo stream"
|
||||||
no-photos: "No photos"
|
no-photos: "No photos"
|
||||||
common/views/widgets/posts-monitor.vue:
|
common/views/widgets/posts-monitor.vue:
|
||||||
title: "Chart of posts"
|
title: "Chart of posts"
|
||||||
@ -228,6 +239,7 @@ common/views/widgets/posts-monitor.vue:
|
|||||||
common/views/widgets/hashtags.vue:
|
common/views/widgets/hashtags.vue:
|
||||||
title: "Hashtags"
|
title: "Hashtags"
|
||||||
count: "{} users mentioned"
|
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"
|
||||||
@ -235,11 +247,17 @@ common/views/widgets/memo.vue:
|
|||||||
title: "Sticky note"
|
title: "Sticky note"
|
||||||
memo: "Write here!"
|
memo: "Write here!"
|
||||||
save: "Save"
|
save: "Save"
|
||||||
|
common/views/pages/follow.vue:
|
||||||
|
signed-in-as: "Signed in as {}"
|
||||||
|
following: "Following"
|
||||||
|
follow: "Follow"
|
||||||
|
request-pending: "Pending follow request"
|
||||||
|
follow-request: "Follow request"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
replies: "Red ... Replies"
|
replies: "Red ... Replies"
|
||||||
renotes: "Green ... Renotes"
|
renotes: "Green ... Repost"
|
||||||
desktop/views/components/activity.vue:
|
desktop/views/components/activity.vue:
|
||||||
title: "Activity"
|
title: "Activity"
|
||||||
toggle: "Toggle views"
|
toggle: "Toggle views"
|
||||||
@ -249,22 +267,22 @@ desktop/views/components/calendar.vue:
|
|||||||
next: "Next month"
|
next: "Next month"
|
||||||
go: "Click to navigate"
|
go: "Click to navigate"
|
||||||
desktop/views/components/choose-file-from-drive-window.vue:
|
desktop/views/components/choose-file-from-drive-window.vue:
|
||||||
choose-file: "Choosing files"
|
choose-file: "Choose files"
|
||||||
upload: "Upload files from your PC"
|
upload: "Upload files from your device"
|
||||||
cancel: "Cancel"
|
cancel: "Cancel"
|
||||||
ok: "OK"
|
ok: "OK"
|
||||||
choose-prompt: "Choose a file"
|
choose-prompt: "Choose files"
|
||||||
desktop/views/components/choose-folder-from-drive-window.vue:
|
desktop/views/components/choose-folder-from-drive-window.vue:
|
||||||
cancel: "Cancel"
|
cancel: "Cancel"
|
||||||
ok: "OK"
|
ok: "OK"
|
||||||
choose-prompt: "Choose a Folder"
|
choose-prompt: "Choose a folder"
|
||||||
desktop/views/components/crop-window.vue:
|
desktop/views/components/crop-window.vue:
|
||||||
skip: "Skip cropping"
|
skip: "Skip cropping"
|
||||||
cancel: "Cancel"
|
cancel: "Cancel"
|
||||||
ok: "OK"
|
ok: "OK"
|
||||||
desktop/views/components/drive-window.vue:
|
desktop/views/components/drive-window.vue:
|
||||||
used: "used"
|
used: "used"
|
||||||
drive: "Drive"
|
drive: "Media storage"
|
||||||
desktop/views/components/drive.file.vue:
|
desktop/views/components/drive.file.vue:
|
||||||
avatar: "Avatar"
|
avatar: "Avatar"
|
||||||
banner: "Banner"
|
banner: "Banner"
|
||||||
@ -292,13 +310,13 @@ desktop/views/components/drive.folder.vue:
|
|||||||
rename-folder: "Rename folder"
|
rename-folder: "Rename folder"
|
||||||
input-new-folder-name: "Enter new name"
|
input-new-folder-name: "Enter new name"
|
||||||
desktop/views/components/drive.nav-folder.vue:
|
desktop/views/components/drive.nav-folder.vue:
|
||||||
drive: "Drive"
|
drive: "Media storage"
|
||||||
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 Welcome!"
|
empty-draghover: "Drop it here, don't I look cute?"
|
||||||
empty-drive: "Your drive is empty"
|
empty-drive: "Your media storage is empty"
|
||||||
empty-drive-description: "You can also upload by right clicking and selecting \"Upload file\" or you can drag and drop a file onto the window."
|
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"
|
||||||
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."
|
||||||
@ -316,7 +334,7 @@ desktop/views/components/drive.vue:
|
|||||||
desktop/views/components/follow-button.vue:
|
desktop/views/components/follow-button.vue:
|
||||||
following: "Following"
|
following: "Following"
|
||||||
follow: "Follow"
|
follow: "Follow"
|
||||||
request-pending: "フォロー許可待ち"
|
request-pending: "Pending follow request"
|
||||||
follow-request: "Follow request"
|
follow-request: "Follow request"
|
||||||
desktop/views/components/followers-window.vue:
|
desktop/views/components/followers-window.vue:
|
||||||
followers: "{}'s followers"
|
followers: "{}'s followers"
|
||||||
@ -329,13 +347,13 @@ desktop/views/components/following.vue:
|
|||||||
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."
|
||||||
fetching: "Loading…"
|
fetching: "Loading"
|
||||||
refresh: "More"
|
refresh: "More"
|
||||||
close: "Close"
|
close: "Close"
|
||||||
desktop/views/components/game-window.vue:
|
desktop/views/components/game-window.vue:
|
||||||
game: "Othello"
|
game: "Reversi"
|
||||||
desktop/views/components/home.vue:
|
desktop/views/components/home.vue:
|
||||||
done: "Submit"
|
done: "Done"
|
||||||
add-widget: "Add widget:"
|
add-widget: "Add widget:"
|
||||||
add: "Add"
|
add: "Add"
|
||||||
desktop/views/input-dialog.vue:
|
desktop/views/input-dialog.vue:
|
||||||
@ -347,8 +365,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: "This post is private"
|
||||||
deleted: "this post has been deleted"
|
deleted: "This post has been removed"
|
||||||
reposted-by: "Reposted by {}"
|
reposted-by: "Reposted by {}"
|
||||||
location: "Location"
|
location: "Location"
|
||||||
renote: "Repost"
|
renote: "Repost"
|
||||||
@ -359,14 +377,15 @@ 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: "This post is private"
|
||||||
deleted: "this post has been deleted"
|
deleted: "The post has been deleted"
|
||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "Loading failed."
|
error: "Loading failed."
|
||||||
retry: "Retry"
|
retry: "Retry"
|
||||||
|
load-more: "Read more"
|
||||||
desktop/views/components/notifications.vue:
|
desktop/views/components/notifications.vue:
|
||||||
more: "More"
|
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..."
|
reply-placeholder: "Reply to this note..."
|
||||||
quote-placeholder: "Quote this note..."
|
quote-placeholder: "Quote this note..."
|
||||||
@ -376,14 +395,14 @@ desktop/views/components/post-form.vue:
|
|||||||
posted: "Posted!"
|
posted: "Posted!"
|
||||||
replied: "Replied!"
|
replied: "Replied!"
|
||||||
reposted: "Reposted!"
|
reposted: "Reposted!"
|
||||||
note-failed: "Failed to note"
|
note-failed: "Failed to post the note"
|
||||||
reply-failed: "Failed to reply"
|
reply-failed: "Failed to reply"
|
||||||
renote-failed: "Failed to repost"
|
renote-failed: "Failed to repost"
|
||||||
posting: "Posting"
|
posting: "Posting"
|
||||||
attach-media-from-local: "Attach media from your PC"
|
attach-media-from-local: "Attach media from your device"
|
||||||
attach-media-from-drive: "Attach media from your Drive"
|
attach-media-from-drive: "Attach media from your Drive"
|
||||||
attach-cancel: "Cancel attachment"
|
attach-cancel: "Cancel attachment"
|
||||||
insert-a-kao: "v(‘ω’)v"
|
insert-a-kao: "v('ω')v"
|
||||||
create-poll: "Create a poll"
|
create-poll: "Create a poll"
|
||||||
text-remain: "{} characters remaining"
|
text-remain: "{} characters remaining"
|
||||||
desktop/views/components/post-form-window.vue:
|
desktop/views/components/post-form-window.vue:
|
||||||
@ -417,15 +436,17 @@ desktop/views/components/settings.vue:
|
|||||||
other: "Other"
|
other: "Other"
|
||||||
license: "License"
|
license: "License"
|
||||||
behaviour: "Behavior"
|
behaviour: "Behavior"
|
||||||
fetch-on-scroll: "Fetch on scroll"
|
fetch-on-scroll: "Endless loading on scroll"
|
||||||
fetch-on-scroll-desc: "When you scroll down the page 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: "Pop-out an opened window if possible. This setting is stored in the browser."
|
auto-popout-desc: "Pops-out a newly opened window (onto a new tab), if possible. This setting is stored in the 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."
|
||||||
display: "Design and display"
|
display: "Design and display"
|
||||||
customize: "Customize Home"
|
customize: "Customize home layout"
|
||||||
|
choose-wallpaper: "Choose a background"
|
||||||
|
delete-wallpaper: "Remove background"
|
||||||
dark-mode: "Dark Mode"
|
dark-mode: "Dark Mode"
|
||||||
circle-icons: "Use circle icons"
|
circle-icons: "Use circle icons"
|
||||||
gradient-window-header: "Use gradients on window headers"
|
gradient-window-header: "Use gradients on window headers"
|
||||||
@ -445,15 +466,15 @@ desktop/views/components/settings.vue:
|
|||||||
language: "Language"
|
language: "Language"
|
||||||
pick-language: "Select a language"
|
pick-language: "Select a language"
|
||||||
recommended: "Recommended"
|
recommended: "Recommended"
|
||||||
auto: "Auto"
|
auto: "Automatic"
|
||||||
specify-language: "Specify language"
|
specify-language: "Specify language"
|
||||||
language-desc: "You need to reload the page for the changes to take effect."
|
language-desc: "You need to reload the page for the changes to take effect."
|
||||||
cache: "Cache"
|
cache: "Cache"
|
||||||
clean-cache: "Cleanup"
|
clean-cache: "Clear cache"
|
||||||
cache-warn: "The cache of account info/posts/replies/messages/settings stored in the browser will be deleted. You need to reload the page after cleaning up."
|
cache-warn: "The cache of account info/posts/replies/messages/settings stored in the browser will be deleted. You need to reload the page after cleaning up."
|
||||||
cache-cleared: "Cache cleared"
|
cache-cleared: "Cache cleared"
|
||||||
cache-cleared-desc: "Please reload the page."
|
cache-cleared-desc: "Please reload the page."
|
||||||
auto-watch: "Auto watch"
|
auto-watch: "Automatic watch"
|
||||||
auto-watch-desc: "Receive notifications about the post/reply/reaction automatically."
|
auto-watch-desc: "Receive notifications about the post/reply/reaction automatically."
|
||||||
about: "About Misskey"
|
about: "About Misskey"
|
||||||
operator: "The admin of this instance"
|
operator: "The admin of this instance"
|
||||||
@ -461,44 +482,44 @@ desktop/views/components/settings.vue:
|
|||||||
version: "Version:"
|
version: "Version:"
|
||||||
latest-version: "Latest version:"
|
latest-version: "Latest version:"
|
||||||
update-checking: "Checking for updates"
|
update-checking: "Checking for updates"
|
||||||
do-update: "Check for update"
|
do-update: "Check for updates"
|
||||||
update-settings: "Advanced settings"
|
update-settings: "Advanced settings"
|
||||||
prevent-update: "Postpone updates (not recommended)"
|
prevent-update: "Postpone updates (not recommended)"
|
||||||
prevent-update-desc: "Even if you turn this setting on updates may apply. This setting is valid only for this device."
|
prevent-update-desc: "Even if you turn this setting on, updates may apply. This setting is enabled only for this device."
|
||||||
no-updates: "No updates available"
|
no-updates: "No updates available"
|
||||||
no-updates-desc: "Your Misskey is up to date."
|
no-updates-desc: "Your Misskey is up to date."
|
||||||
update-available: "New version is available!"
|
update-available: "A new version is available"
|
||||||
update-available-desc: "The updates will apply if you reload the page again."
|
update-available-desc: "The updates will apply if you reload the page again."
|
||||||
advanced-settings: "Advanced"
|
advanced-settings: "Advanced"
|
||||||
debug-mode: "Enable the debug mode"
|
debug-mode: "Enable the debug mode"
|
||||||
debug-mode-desc: "This setting is stored in the browser."
|
debug-mode-desc: "This setting is stored in the browser."
|
||||||
experimental: "Enable experimental features"
|
experimental: "Enable experimental features"
|
||||||
experimental-desc: "It would make Misskey client unstable. This setting is stored in the browser."
|
experimental-desc: "Activating this might make the Misskey client unstable. This setting is stored in the browser."
|
||||||
tools: "Tools"
|
tools: "Tools"
|
||||||
task-manager: "Task Manager"
|
task-manager: "Task Manager"
|
||||||
third-parties: "Third-party"
|
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 need not only 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: "See 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 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: "A device is already registered"
|
||||||
unregister: "Disable"
|
unregister: "Disable"
|
||||||
unregistered: "Two-step 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 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 displaying on your device:"
|
||||||
submit: "Submit"
|
submit: "Submit"
|
||||||
success: "Setup completed successfully!"
|
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 now on, enter the token that is displayed on your device in addition to your password when signing-in to Misskey."
|
||||||
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: "Please do not show this token to third parties (do not enter it somewhere else other than here) otherwise your account could get compromised."
|
||||||
regeneration-of-token: "In the unlikely event that this token leaks out you can regenerate it."
|
regeneration-of-token: "In the unlikely event that this token leaks out, 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"
|
||||||
@ -507,12 +528,12 @@ desktop/views/components/settings.apps.vue:
|
|||||||
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:
|
||||||
reset: "Change your password"
|
reset: "Change password"
|
||||||
enter-current-password: "Enter the current password"
|
enter-current-password: "Enter the current password"
|
||||||
enter-new-password: "Enter the new password"
|
enter-new-password: "Enter the new password"
|
||||||
enter-new-password-again: "Enter the new password again"
|
enter-new-password-again: "Enter new password again"
|
||||||
not-match: "New password doesn't match"
|
not-match: "The new passwords do not match"
|
||||||
changed: "Password updated successfully"
|
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: "Choose an image"
|
||||||
@ -521,11 +542,14 @@ desktop/views/components/settings.profile.vue:
|
|||||||
description: "Description"
|
description: "Description"
|
||||||
birthday: "Birthday"
|
birthday: "Birthday"
|
||||||
save: "Update profile"
|
save: "Update profile"
|
||||||
|
locked-account: "Protect your account"
|
||||||
|
is-locked: "Make a note private"
|
||||||
|
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"
|
||||||
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"
|
||||||
media-count: "{} media attached"
|
media-count: "{} media attached"
|
||||||
poll: "Poll"
|
poll: "Poll"
|
||||||
desktop/views/components/taskmanager.vue:
|
desktop/views/components/taskmanager.vue:
|
||||||
@ -533,23 +557,26 @@ desktop/views/components/taskmanager.vue:
|
|||||||
desktop/views/components/timeline.vue:
|
desktop/views/components/timeline.vue:
|
||||||
home: "Home"
|
home: "Home"
|
||||||
local: "Local"
|
local: "Local"
|
||||||
|
hybrid: "Social"
|
||||||
global: "Global"
|
global: "Global"
|
||||||
list: "Lists"
|
list: "Lists"
|
||||||
|
desktop/views/components/ui.header.vue:
|
||||||
|
welcome-back: "Welcome back,"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "Your profile"
|
profile: "Your profile"
|
||||||
drive: "Drive"
|
drive: "Media storage"
|
||||||
favorites: "Favorites"
|
favorites: "Favorites"
|
||||||
lists: "Lists"
|
lists: "Lists"
|
||||||
follow-requests: "Follow requests"
|
follow-requests: "Follow requests"
|
||||||
customize: "Customize"
|
customize: "Customize home layout"
|
||||||
settings: "Settings"
|
settings: "Settings"
|
||||||
signout: "Sign out"
|
signout: "Sign out"
|
||||||
dark: "Fall in dark"
|
dark: "Submerge in dark"
|
||||||
desktop/views/components/ui.header.nav.vue:
|
desktop/views/components/ui.header.nav.vue:
|
||||||
home: "Home"
|
home: "Home"
|
||||||
deck: "Deck"
|
deck: "Deck"
|
||||||
messaging: "Messages"
|
messaging: "Messages"
|
||||||
game: "Play Othello"
|
game: "Games"
|
||||||
desktop/views/components/ui.header.notifications.vue:
|
desktop/views/components/ui.header.notifications.vue:
|
||||||
title: "Notifications"
|
title: "Notifications"
|
||||||
desktop/views/components/ui.header.post.vue:
|
desktop/views/components/ui.header.post.vue:
|
||||||
@ -562,7 +589,7 @@ 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 list"
|
create-list: "Create new list"
|
||||||
desktop/views/components/user-preview.vue:
|
desktop/views/components/user-preview.vue:
|
||||||
notes: "Posts"
|
notes: "Posts"
|
||||||
following: "Following"
|
following: "Following"
|
||||||
@ -575,17 +602,18 @@ desktop/views/components/users-list.vue:
|
|||||||
desktop/views/components/users-list-item.vue:
|
desktop/views/components/users-list-item.vue:
|
||||||
followed: "Follows you"
|
followed: "Follows you"
|
||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "Popout"
|
popout: "Pop-out"
|
||||||
close: "Close"
|
close: "Close"
|
||||||
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"
|
||||||
|
edit: "Options"
|
||||||
desktop/views/pages/deck/deck.note.vue:
|
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/welcome.vue:
|
desktop/views/pages/welcome.vue:
|
||||||
about: "about"
|
about: "More details..."
|
||||||
gotit: "Got it!"
|
gotit: "Got it!"
|
||||||
signin: "Log In"
|
signin: "Log In"
|
||||||
signup: "Sign up"
|
signup: "Sign up"
|
||||||
@ -593,11 +621,11 @@ desktop/views/pages/welcome.vue:
|
|||||||
signup-button: "Sign up"
|
signup-button: "Sign up"
|
||||||
timeline: "Timeline"
|
timeline: "Timeline"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey storage"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
more: "Load More"
|
more: "Load more"
|
||||||
desktop/views/pages/home-customize.vue:
|
desktop/views/pages/home-customize.vue:
|
||||||
title: "Customize home"
|
title: "Customize home layout"
|
||||||
desktop/views/pages/note.vue:
|
desktop/views/pages/note.vue:
|
||||||
prev: "Previous note"
|
prev: "Previous note"
|
||||||
next: "Next note"
|
next: "Next note"
|
||||||
@ -605,7 +633,7 @@ 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 you PC"
|
upload: "Upload files from your device"
|
||||||
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"
|
||||||
@ -613,17 +641,17 @@ desktop/views/pages/user-list.users.vue:
|
|||||||
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 know"
|
||||||
loading: "Loading"
|
loading: "Loading"
|
||||||
no-users: "No users"
|
no-users: "No followers you know"
|
||||||
desktop/views/pages/user/user.friends.vue:
|
desktop/views/pages/user/user.friends.vue:
|
||||||
title: "Frequently replied"
|
title: "Frequent mentions"
|
||||||
loading: "Loading"
|
loading: "Loading"
|
||||||
no-users: "No users"
|
no-users: "No users"
|
||||||
desktop/views/pages/user/user.header.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 is not accurate. "
|
is-remote: "This user is a remote user, so the information about them that you see here is not complete. "
|
||||||
view-remote: "See accurate information"
|
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:"
|
||||||
desktop/views/pages/user/user.photos.vue:
|
desktop/views/pages/user/user.photos.vue:
|
||||||
title: "Photos"
|
title: "Photos"
|
||||||
loading: "Loading"
|
loading: "Loading"
|
||||||
@ -636,11 +664,16 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "Mute"
|
mute: "Mute"
|
||||||
muted: "Muting"
|
muted: "Muting"
|
||||||
unmute: "Unmute"
|
unmute: "Unmute"
|
||||||
|
desktop/views/pages/user/user.header.vue:
|
||||||
|
posts: "Notes"
|
||||||
|
following: "Following"
|
||||||
|
followers: "Followers"
|
||||||
|
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: "Posts and replies"
|
with-replies: "Notes and replies"
|
||||||
with-media: "Media"
|
with-media: "Media"
|
||||||
empty: "This user has never posted 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: "Messaging"
|
||||||
desktop/views/widgets/notifications.vue:
|
desktop/views/widgets/notifications.vue:
|
||||||
@ -648,7 +681,7 @@ desktop/views/widgets/notifications.vue:
|
|||||||
settings: "Settings"
|
settings: "Settings"
|
||||||
desktop/views/widgets/polls.vue:
|
desktop/views/widgets/polls.vue:
|
||||||
title: "Polls"
|
title: "Polls"
|
||||||
refresh: "Show others"
|
refresh: "refresh"
|
||||||
nothing: "Nothing"
|
nothing: "Nothing"
|
||||||
desktop/views/widgets/post-form.vue:
|
desktop/views/widgets/post-form.vue:
|
||||||
title: "Post"
|
title: "Post"
|
||||||
@ -658,32 +691,32 @@ desktop/views/widgets/profile.vue:
|
|||||||
update-avatar: "Click to edit your avatar"
|
update-avatar: "Click to edit your avatar"
|
||||||
desktop/views/widgets/trends.vue:
|
desktop/views/widgets/trends.vue:
|
||||||
title: "Trend"
|
title: "Trend"
|
||||||
refresh: "Show others"
|
refresh: "refresh"
|
||||||
nothing: "Nothing"
|
nothing: "Nothing"
|
||||||
desktop/views/widgets/users.vue:
|
desktop/views/widgets/users.vue:
|
||||||
title: "Recommended users"
|
title: "Recommended users"
|
||||||
refresh: "Show others"
|
refresh: "refresh"
|
||||||
no-one: "No one"
|
no-one: "No one"
|
||||||
mobile/views/components/drive.vue:
|
mobile/views/components/drive.vue:
|
||||||
drive: "Drive"
|
drive: "Media storage"
|
||||||
used: "used"
|
used: "used"
|
||||||
folder-count: "Folder(s)"
|
folder-count: "Folder(s)"
|
||||||
count-separator: ", "
|
count-separator: ", "
|
||||||
file-count: "File(s)"
|
file-count: "File(s)"
|
||||||
load-more: "Load more"
|
load-more: "Load more"
|
||||||
nothing-in-drive: "Nothing"
|
nothing-in-drive: "There's nothing stored."
|
||||||
folder-is-empty: "This folder is empty"
|
folder-is-empty: "This folder is empty"
|
||||||
prompt: "What do you want to do? (Please enter a number): <1 → Upload a file | 2 → Upload a file from a URL | 3 → Create a folder | 4 → Change this folder's name | 5 → Move this folder | 6 → Delete this folder>"
|
prompt: "What do you want to do? (Please enter a number): <1 → Upload a file | 2 → Upload a file from a URL | 3 → Create a folder | 4 → Change this folder's name | 5 → Move this folder | 6 → Delete this folder>"
|
||||||
deletion-alert: "Sorry! Deleting a folder is not yet implemented."
|
deletion-alert: "Sorry! Deleting a folder is not yet implemented."
|
||||||
folder-name: "Folder name"
|
folder-name: "Folder name"
|
||||||
root-rename-alert: "You're in the root; it can't be renamed because it's not a folder. Navigate to a folder you want to rename and try again."
|
root-rename-alert: "You're in the root; it can't be renamed because it's not a folder. Navigate to a folder you want to rename and try again."
|
||||||
root-move-alert: "You're in the root; it can't be moved because it's not a folder. Navigate to a folder you want to move and try again."
|
root-move-alert: "You're in the root; it can't be moved because it's not a folder. Navigate to a folder you want to move and try again."
|
||||||
url-prompt: "URL of file you want to upload"
|
url-prompt: "URL of the file you want to upload"
|
||||||
uploading: "Upload requested. It may take some time for the upload to complete."
|
uploading: "Upload requested. It may take a while for the upload to finish."
|
||||||
mobile/views/components/drive-file-detail.vue:
|
mobile/views/components/drive-file-detail.vue:
|
||||||
rename: "Rename"
|
rename: "Rename"
|
||||||
mobile/views/components/drive-file-chooser.vue:
|
mobile/views/components/drive-file-chooser.vue:
|
||||||
select-file: "Choose a file"
|
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-detail.vue:
|
mobile/views/components/drive.file-detail.vue:
|
||||||
@ -695,7 +728,7 @@ mobile/views/components/drive.file-detail.vue:
|
|||||||
mobile/views/components/follow-button.vue:
|
mobile/views/components/follow-button.vue:
|
||||||
following: "Following"
|
following: "Following"
|
||||||
follow: "Follow"
|
follow: "Follow"
|
||||||
request-pending: "フォロー許可待ち"
|
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 users"
|
||||||
@ -707,15 +740,15 @@ mobile/views/components/note.vue:
|
|||||||
reposted-by: "Reposted by {}"
|
reposted-by: "Reposted by {}"
|
||||||
more: "See more"
|
more: "See more"
|
||||||
less: "Hide"
|
less: "Hide"
|
||||||
private: "this post is private"
|
private: "This post is private"
|
||||||
deleted: "this post has been deleted"
|
deleted: "This post has been deleted"
|
||||||
location: "Location"
|
location: "Location"
|
||||||
mobile/views/components/note-detail.vue:
|
mobile/views/components/note-detail.vue:
|
||||||
reply: "Reply"
|
reply: "Reply"
|
||||||
reaction: "Reaction"
|
reaction: "Reaction"
|
||||||
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"
|
||||||
location: "Location"
|
location: "Location"
|
||||||
mobile/views/components/note-preview.vue:
|
mobile/views/components/note-preview.vue:
|
||||||
admin: "admin"
|
admin: "admin"
|
||||||
@ -726,7 +759,7 @@ mobile/views/components/note-sub.vue:
|
|||||||
bot: "bot"
|
bot: "bot"
|
||||||
cat: "cat"
|
cat: "cat"
|
||||||
mobile/views/components/notes.vue:
|
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: "More"
|
||||||
@ -735,16 +768,16 @@ mobile/views/components/post-form.vue:
|
|||||||
add-visible-user: "Add a user"
|
add-visible-user: "Add a user"
|
||||||
submit: "Post"
|
submit: "Post"
|
||||||
reply: "Reply"
|
reply: "Reply"
|
||||||
renote: "Repost"
|
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 about content (optional)"
|
||||||
location-alert: "Your device does not support 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"
|
||||||
mobile/views/components/sub-note-content.vue:
|
mobile/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"
|
||||||
media-count: "{} media attached"
|
media-count: "{} media attached"
|
||||||
poll: "Poll"
|
poll: "Poll"
|
||||||
mobile/views/components/timeline.vue:
|
mobile/views/components/timeline.vue:
|
||||||
@ -765,8 +798,8 @@ mobile/views/components/ui.nav.vue:
|
|||||||
settings: "Settings"
|
settings: "Settings"
|
||||||
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 yet"
|
no-notes: "It seems this user hasn't posted anything yet."
|
||||||
no-notes-with-media: "There is no notes with attached media"
|
no-notes-with-media: "There are no notes with media attachments"
|
||||||
load-more: "More"
|
load-more: "More"
|
||||||
mobile/views/components/users-list.vue:
|
mobile/views/components/users-list.vue:
|
||||||
all: "All"
|
all: "All"
|
||||||
@ -787,6 +820,7 @@ mobile/views/pages/following.vue:
|
|||||||
mobile/views/pages/home.vue:
|
mobile/views/pages/home.vue:
|
||||||
home: "Home"
|
home: "Home"
|
||||||
local: "Local"
|
local: "Local"
|
||||||
|
hybrid: "Social"
|
||||||
global: "Global"
|
global: "Global"
|
||||||
mobile/views/pages/messaging.vue:
|
mobile/views/pages/messaging.vue:
|
||||||
messaging: "Messaging"
|
messaging: "Messaging"
|
||||||
@ -802,33 +836,33 @@ mobile/views/pages/note.vue:
|
|||||||
next: "Next note"
|
next: "Next note"
|
||||||
mobile/views/pages/notifications.vue:
|
mobile/views/pages/notifications.vue:
|
||||||
notifications: "Notifications"
|
notifications: "Notifications"
|
||||||
read-all: "Are you sure you want to mark all unread notifications as read?"
|
read-all: "Do you wish to mark all notifications as read?"
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
mobile/views/pages/settings/settings.profile.vue:
|
||||||
title: "Profile"
|
title: "Profile"
|
||||||
name: "Name"
|
name: "Name"
|
||||||
account: "Account"
|
account: "Account"
|
||||||
location: "Location"
|
location: "Location"
|
||||||
description: "Description"
|
description: "Biography"
|
||||||
birthday: "Birthday"
|
birthday: "Birthday"
|
||||||
avatar: "Avatar"
|
avatar: "Avatar"
|
||||||
banner: "Banner"
|
banner: "Banner"
|
||||||
is-cat: "This account is a Cat"
|
is-cat: "This account is a Cat"
|
||||||
save: "Update profile"
|
save: "Update profile"
|
||||||
saved: "Profile updated successfully"
|
saved: "Profile updated"
|
||||||
uploading: "Uploading"
|
uploading: "Uploading"
|
||||||
upload-failed: "Upload failed"
|
upload-failed: "Failed to upload"
|
||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
search: "Search"
|
search: "Search"
|
||||||
empty: "No posts were found for '{}'"
|
empty: "No posts were found for '{}'"
|
||||||
mobile/views/pages/selectdrive.vue:
|
mobile/views/pages/selectdrive.vue:
|
||||||
select-file: "Choose a file"
|
select-file: "Choose files"
|
||||||
mobile/views/pages/settings.vue:
|
mobile/views/pages/settings.vue:
|
||||||
signed-in-as: "Signed in as {}"
|
signed-in-as: "Signed in as {}"
|
||||||
lang: "Language"
|
lang: "Language"
|
||||||
lang-tip: "You will need to reload the page for the changes to take effect."
|
lang-tip: "You will need to reload the page for the changes to take effect."
|
||||||
recommended: "Recommended"
|
recommended: "Recommended"
|
||||||
auto: "Auto"
|
auto: "Auto"
|
||||||
specify-language: "Specify the 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 under limited internet"
|
||||||
@ -841,10 +875,10 @@ mobile/views/pages/settings.vue:
|
|||||||
post-style-standard: "Standard"
|
post-style-standard: "Standard"
|
||||||
post-style-smart: "Smart"
|
post-style-smart: "Smart"
|
||||||
behavior: "Behavior"
|
behavior: "Behavior"
|
||||||
fetch-on-scroll: "Fetch on scroll"
|
fetch-on-scroll: "Endless loading on scroll"
|
||||||
disable-via-mobile: "Without the \"mobile posts\" flag"
|
disable-via-mobile: "Don't mark the post as 'from mobile'"
|
||||||
load-raw-images: "Show attached pictures in high-quality"
|
load-raw-images: "Show attached images in high-quality"
|
||||||
load-remote-media: "Show media on 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"
|
||||||
twitter-reconnect: "Reconnect"
|
twitter-reconnect: "Reconnect"
|
||||||
@ -853,39 +887,39 @@ mobile/views/pages/settings.vue:
|
|||||||
version: "Current version:"
|
version: "Current version:"
|
||||||
latest-version: "Latest version:"
|
latest-version: "Latest version:"
|
||||||
update-checking: "Checking for updates"
|
update-checking: "Checking for updates"
|
||||||
check-for-updates: "Check for update"
|
check-for-updates: "Check for updates"
|
||||||
no-updates: "No updates available"
|
no-updates: "No updates available"
|
||||||
no-updates-desc: "Your Misskey is up to date."
|
no-updates-desc: "Your Misskey is up to date."
|
||||||
update-available: "New version is available!"
|
update-available: "A new version is available"
|
||||||
update-available-desc: "To reload the page and updates are applied."
|
update-available-desc: "Updates will be applied after reloading the page"
|
||||||
settings: "Settings"
|
settings: "Settings"
|
||||||
signout: "Sign out"
|
signout: "Sign out"
|
||||||
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: "Posts"
|
notes: "Notes"
|
||||||
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 is not accurate. "
|
is-remote: "This user is a remote user, so the information you see here is not complete."
|
||||||
view-remote: "See accurate information"
|
view-remote: "See their 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"
|
||||||
activity: "Activity"
|
activity: "Activity"
|
||||||
keywords: "Keywords"
|
keywords: "Keywords"
|
||||||
domains: "Domains"
|
domains: "Domains"
|
||||||
frequently-replied-users: "Frequently talking users"
|
frequently-replied-users: "Frequently mentioned users"
|
||||||
followers-you-know: "Followers you know"
|
followers-you-know: "Followers you know"
|
||||||
last-used-at: "Last active:"
|
last-used-at: "Last active:"
|
||||||
mobile/views/pages/user/home.followers-you-know.vue:
|
mobile/views/pages/user/home.followers-you-know.vue:
|
||||||
loading: "Loading"
|
loading: "Loading"
|
||||||
no-users: "No users"
|
no-users: "No users you know"
|
||||||
mobile/views/pages/user/home.friends.vue:
|
mobile/views/pages/user/home.friends.vue:
|
||||||
loading: "Loading"
|
loading: "Loading"
|
||||||
no-users: "No users"
|
no-users: "There are no users that you know"
|
||||||
mobile/views/pages/user/home.notes.vue:
|
mobile/views/pages/user/home.notes.vue:
|
||||||
loading: "Loading"
|
loading: "Loading"
|
||||||
no-notes: "No notes"
|
no-notes: "No notes"
|
||||||
@ -904,7 +938,4 @@ docs:
|
|||||||
props:
|
props:
|
||||||
name: "Name"
|
name: "Name"
|
||||||
type: "Type"
|
type: "Type"
|
||||||
optional: "Optional"
|
|
||||||
description: "Description"
|
description: "Description"
|
||||||
yes: "Yes"
|
|
||||||
no: "No"
|
|
||||||
|
605
locales/es.yml
@ -1,223 +1,234 @@
|
|||||||
---
|
---
|
||||||
meta:
|
meta:
|
||||||
lang: "日本語"
|
lang: "Español"
|
||||||
divider: ""
|
divider: ""
|
||||||
common:
|
common:
|
||||||
misskey: "A planet of fediverse"
|
misskey: "Una ⭐️ del fediverso"
|
||||||
about-title: "A ⭐ of fediverse."
|
about-title: "Una ⭐️ del fediverso"
|
||||||
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
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?"
|
||||||
time:
|
time:
|
||||||
unknown: "なぞのじかん"
|
unknown: "Desconocido"
|
||||||
future: "未来"
|
future: "Futuro"
|
||||||
just_now: "たった今"
|
just_now: "Ahora mismo"
|
||||||
seconds_ago: "{}秒前"
|
seconds_ago: "Hace {}"
|
||||||
minutes_ago: "{}分前"
|
minutes_ago: "Hace {} minuto(s)"
|
||||||
hours_ago: "{}時間前"
|
hours_ago: "Hace {} hora(s)"
|
||||||
days_ago: "{}日前"
|
days_ago: "Hace {} dia(s)"
|
||||||
weeks_ago: "{}週間前"
|
weeks_ago: "Hace {} semana(s)"
|
||||||
months_ago: "{}ヶ月前"
|
months_ago: "Hace {} mes(es)"
|
||||||
years_ago: "{}年前"
|
years_ago: "Hace {} año(s)"
|
||||||
weekday-short:
|
weekday-short:
|
||||||
sunday: "日"
|
sunday: "domingo"
|
||||||
monday: "月"
|
monday: "lunes"
|
||||||
tuesday: "火"
|
tuesday: "martes"
|
||||||
wednesday: "水"
|
wednesday: "miércoles"
|
||||||
thursday: "木"
|
thursday: "jueves"
|
||||||
friday: "金"
|
friday: "viernes"
|
||||||
saturday: "土"
|
saturday: "sábado"
|
||||||
reactions:
|
reactions:
|
||||||
like: "いいね"
|
like: "me gusta"
|
||||||
love: "しゅき"
|
love: "amor"
|
||||||
laugh: "笑"
|
laugh: "risa"
|
||||||
hmm: "ふぅ~む"
|
hmm: "hmm"
|
||||||
surprise: "わお"
|
surprise: "sorpresa"
|
||||||
congrats: "おめでとう"
|
congrats: "felicidades"
|
||||||
angry: "おこ"
|
angry: "enfadado"
|
||||||
confused: "こまこまのこまり"
|
confused: "confundido"
|
||||||
pudding: "Pudding"
|
pudding: "Chafado"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "今どうしてる?"
|
a: "¿Qué haces?"
|
||||||
b: "何かありましたか?"
|
b: "¿Qué está pasando?"
|
||||||
c: "何をお考えですか?"
|
c: "¿Qué te pasa por la cabeza?"
|
||||||
d: "言いたいことは?"
|
d: "¿Quieres decir algo?"
|
||||||
e: "ここに書いてください"
|
e: "¡Escribe aquí!"
|
||||||
f: "あなたが書くのを待っています..."
|
f: "Esperando a que escribas algo..."
|
||||||
delete: "削除"
|
search: "検索"
|
||||||
loading: "読み込み中"
|
delete: "eliminar"
|
||||||
ok: "わかった"
|
loading: "cargando"
|
||||||
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
|
ok: "OK"
|
||||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
update-available-title: "更新があります"
|
||||||
|
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."
|
||||||
|
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||||
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||||
|
reversi:
|
||||||
|
drawn: "引き分け"
|
||||||
|
my-turn: "あなたのターンです"
|
||||||
|
opponent-turn: "相手のターンです"
|
||||||
|
turn-of: "{}のターンです"
|
||||||
|
past-turn-of: "{}のターン"
|
||||||
widgets:
|
widgets:
|
||||||
analog-clock: "アナログ時計"
|
analog-clock: "Reloj analógico"
|
||||||
profile: "プロフィール"
|
profile: "Perfil"
|
||||||
calendar: "カレンダー"
|
calendar: "Calendario"
|
||||||
timemachine: "カレンダー(タイムマシン)"
|
timemachine: "Calendario (máquina del tiempo)"
|
||||||
activity: "アクティビティ"
|
activity: "Actividad"
|
||||||
rss: "RSSリーダー"
|
rss: "Lector RSS"
|
||||||
memo: "付箋"
|
memo: "Notas adhesivas"
|
||||||
trends: "トレンド"
|
trends: "Tendencias"
|
||||||
photo-stream: "フォトストリーム"
|
photo-stream: "Secuencia de fotos"
|
||||||
posts-monitor: "投稿チャート"
|
posts-monitor: "Gráfico de publicaciones"
|
||||||
slideshow: "スライドショー"
|
slideshow: "Diapositivas"
|
||||||
version: "バージョン"
|
version: "Versión"
|
||||||
broadcast: "ブロードキャスト"
|
broadcast: "Transmisión"
|
||||||
notifications: "通知"
|
notifications: "Notificaciones"
|
||||||
users: "おすすめユーザー"
|
users: "Usuarios destacados"
|
||||||
polls: "アンケート"
|
polls: "Encuestas"
|
||||||
post-form: "投稿フォーム"
|
post-form: "Formulario"
|
||||||
messaging: "メッセージ"
|
messaging: "Mensajes"
|
||||||
server: "サーバー情報"
|
server: "Información del servidor"
|
||||||
donation: "寄付のお願い"
|
donation: "Donaciones"
|
||||||
nav: "ナビゲーション"
|
nav: "Navegación"
|
||||||
tips: "ヒント"
|
tips: "Consejos"
|
||||||
hashtags: "ハッシュタグ"
|
hashtags: "Etiquetas"
|
||||||
deck:
|
deck:
|
||||||
widgets: "ウィジェット"
|
widgets: "Accesorios"
|
||||||
home: "ホーム"
|
home: "Inicio"
|
||||||
local: "ローカル"
|
local: "Local"
|
||||||
global: "グローバル"
|
hybrid: "ソーシャル"
|
||||||
notifications: "通知"
|
global: "Global"
|
||||||
list: "リスト"
|
notifications: "Notificaciones"
|
||||||
swap-left: "左に移動"
|
list: "Listado"
|
||||||
swap-right: "右に移動"
|
swap-left: "Desplazar a la izq."
|
||||||
swap-up: "上に移動"
|
swap-right: "Desplazar a la dcha."
|
||||||
swap-down: "下に移動"
|
swap-up: "Desplazar arriba"
|
||||||
remove: "カラムを削除"
|
swap-down: "Desplazar abajo"
|
||||||
add-column: "カラムを追加"
|
remove: "Borrar"
|
||||||
rename: "名前を変更"
|
add-column: "Añadir columna"
|
||||||
stack-left: "左に重ねる"
|
rename: "Renombrar"
|
||||||
pop-right: "右に出す"
|
stack-left: "A la izqda."
|
||||||
|
pop-right: "A la dcha."
|
||||||
common/views/components/connect-failed.vue:
|
common/views/components/connect-failed.vue:
|
||||||
title: "サーバーに接続できません"
|
title: "Imposible conectar al servidor"
|
||||||
description: "インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから{再度お試し}ください。"
|
description: "Hay un problema en tu conexió o puede que el servidor esté caido o en mantenimiento. Por favor {try again} más tarde."
|
||||||
thanks: "いつもMisskeyをご利用いただきありがとうございます。"
|
thanks: "Gracias por usar Misskey."
|
||||||
troubleshoot: "トラブルシュート"
|
troubleshoot: "Problemas más frecuentes"
|
||||||
common/views/components/connect-failed.troubleshooter.vue:
|
common/views/components/connect-failed.troubleshooter.vue:
|
||||||
title: "トラブルシューティング"
|
title: "Resolución de problemas"
|
||||||
network: "ネットワーク接続"
|
network: "Conexión de red"
|
||||||
checking-network: "ネットワーク接続を確認中"
|
checking-network: "Verificar la conexión a la red"
|
||||||
internet: "インターネット接続"
|
internet: "Conexión a Internet"
|
||||||
checking-internet: "インターネット接続を確認中"
|
checking-internet: "Comprobando la conexión a Internet"
|
||||||
server: "サーバー接続"
|
server: "Conexión al servidor"
|
||||||
checking-server: "サーバー接続を確認中"
|
checking-server: "Probando la conexión al servidor"
|
||||||
finding: "問題を調べています"
|
finding: "Buscando cualquier problema"
|
||||||
no-network: "ネットワークに接続されていません"
|
no-network: "Sin conexión"
|
||||||
no-network-desc: "お使いのPCのネットワーク接続が正常か確認してください。"
|
no-network-desc: "Por favor, asegurate que estás conectado a una red"
|
||||||
no-internet: "インターネットに接続されていません"
|
no-internet: "Sin conexión a Internet"
|
||||||
no-internet-desc: "ネットワークには接続されていますが、インターネットには接続されていないようです。お使いのPCのインターネット接続が正常か確認してください。"
|
no-internet-desc: "Por favor, asegurate de estar conectado a Internet."
|
||||||
no-server: "Misskeyのサーバーに接続できません"
|
no-server: "Imposible conectarse al servidor de Misskey"
|
||||||
no-server-desc: "お使いのPCのインターネット接続は正常ですが、Misskeyのサーバーには接続できませんでした。サーバーがダウンまたはメンテナンスしている可能性があるので、しばらくしてから再度御アクセスください。"
|
no-server-desc: "La conexión de red de tu PC es correcta, aún así no puedes conectarte al servidor de Misskey. Es posible que el servidor esté caido o en mantenimiento. Por favor vuelve a intentarlo más tarde."
|
||||||
success: "Misskeyのサーバーに接続できました"
|
success: "Conectado al servidor de Misskey de manera correcta"
|
||||||
success-desc: "正常に接続できるようです。ページを再度読み込みしてください。"
|
success-desc: "Parece que la conexión ha sido posible. Por favor refresca la página."
|
||||||
flush: "キャッシュの削除"
|
flush: "Limpiar la memoria caché"
|
||||||
set-version: "バージョン指定"
|
set-version: "Escoge la versión"
|
||||||
common/views/components/messaging.vue:
|
common/views/components/messaging.vue:
|
||||||
search-user: "ユーザーを探す"
|
search-user: "Encuentra un usuario"
|
||||||
you: "あなた"
|
you: "Tu"
|
||||||
no-history: "履歴はありません"
|
no-history: "Sin historial"
|
||||||
common/views/components/messaging-room.vue:
|
common/views/components/messaging-room.vue:
|
||||||
empty: "このユーザーと話したことはありません"
|
empty: "Sin conversaciones"
|
||||||
more: "もっと読む"
|
more: "Leer más"
|
||||||
no-history: "これより過去の履歴はありません"
|
no-history: "El historial se ha acabado"
|
||||||
resize-form: "ドラッグしてフォームの広さを調整"
|
resize-form: "Arrastra para redimensionar"
|
||||||
new-message: "新しいメッセージがあります"
|
new-message: "Nuevo mensaje"
|
||||||
common/views/components/messaging-room.form.vue:
|
common/views/components/messaging-room.form.vue:
|
||||||
input-message-here: "ここにメッセージを入力"
|
input-message-here: "Escribe el mensaje aquí"
|
||||||
send: "送信"
|
send: "Enviar"
|
||||||
attach-from-local: "PCからファイルを添付する"
|
attach-from-local: "Adjunta ficheros desde tu PC"
|
||||||
attach-from-drive: "ドライブからファイルを添付する"
|
attach-from-drive: "Adjunta ficheros desde tu disco"
|
||||||
common/views/components/messaging-room.message.vue:
|
common/views/components/messaging-room.message.vue:
|
||||||
is-read: "既読"
|
is-read: "Leer"
|
||||||
deleted: "このメッセージは削除されました"
|
deleted: "El mensaje se ha borrado"
|
||||||
common/views/components/nav.vue:
|
common/views/components/nav.vue:
|
||||||
about: "Misskeyについて"
|
about: "Sobre"
|
||||||
stats: "統計"
|
stats: "Estadísticas"
|
||||||
status: "ステータス"
|
status: "Estado"
|
||||||
wiki: "Wiki"
|
wiki: "Wiki"
|
||||||
donors: "ドナー"
|
donors: "Donantes"
|
||||||
repository: "リポジトリ"
|
repository: "Repositorio"
|
||||||
develop: "開発者"
|
develop: "Desarrolladores"
|
||||||
feedback: "フィードバック"
|
feedback: "Opiniones"
|
||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
favorite: "お気に入り"
|
favorite: "Me gusta esta nota"
|
||||||
pin: "ピン留め"
|
pin: "Fijar en el perfil"
|
||||||
delete: "削除"
|
delete: "Borrar"
|
||||||
delete-confirm: "この投稿を削除しますか?"
|
delete-confirm: "¿Seguro que quieres borrar la publicación?"
|
||||||
remote: "投稿元で見る"
|
remote: "Ver el original"
|
||||||
common/views/components/poll.vue:
|
common/views/components/poll.vue:
|
||||||
vote-to: "「{}」に投票する"
|
vote-to: "'{}' para votar"
|
||||||
vote-count: "{}票"
|
vote-count: "{} votos"
|
||||||
total-users: "{}人が投票"
|
total-users: "{} usuario(s) que ha(n) votado"
|
||||||
vote: "投票する"
|
vote: "Vota"
|
||||||
show-result: "結果を見る"
|
show-result: "Mostrar resultados"
|
||||||
voted: "投票済み"
|
voted: "Votado"
|
||||||
common/views/components/poll-editor.vue:
|
common/views/components/poll-editor.vue:
|
||||||
no-only-one-choice: "アンケートには、選択肢が最低2つ必要です"
|
no-only-one-choice: "Selecciona dos o más opciones."
|
||||||
choice-n: "選択肢{}"
|
choice-n: "{} opcion(es)"
|
||||||
remove: "この選択肢を削除"
|
remove: "Borra la opción"
|
||||||
add: "+選択肢を追加"
|
add: "+ Añade una opción"
|
||||||
destroy: "アンケートを破棄"
|
destroy: "Cancelar la encuesta"
|
||||||
common/views/components/reaction-picker.vue:
|
common/views/components/reaction-picker.vue:
|
||||||
choose-reaction: "リアクションを選択"
|
choose-reaction: "Escoge una reacción"
|
||||||
common/views/components/signin.vue:
|
common/views/components/signin.vue:
|
||||||
username: "ユーザー名"
|
username: "Usuario"
|
||||||
password: "パスワード"
|
password: "Contraseña"
|
||||||
token: "トークン"
|
token: "Identificador"
|
||||||
signing-in: "やってます..."
|
signing-in: "Entrando..."
|
||||||
signin: "サインイン"
|
signin: "Entra"
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
username: "ユーザー名"
|
username: "Usuario"
|
||||||
checking: "確認しています..."
|
checking: "Comprobando..."
|
||||||
available: "利用できます"
|
available: "Disponible"
|
||||||
unavailable: "既に利用されています"
|
unavailable: "Utilizado"
|
||||||
error: "通信エラー"
|
error: "Error de conexión"
|
||||||
invalid-format: "a~z、A~Z、0~9、_が使えます"
|
invalid-format: "utiliza letras, números y/o -."
|
||||||
too-short: "1文字以上でお願いします!"
|
too-short: "¡Mínimo tienes que introducir un caracter!"
|
||||||
too-long: "20文字以内でお願いします"
|
too-long: "No puedes usar más de 20 caracteres."
|
||||||
password: "パスワード"
|
password: "Contraseña"
|
||||||
password-placeholder: "8文字以上を推奨します"
|
password-placeholder: "Te recomendamos más de 8 caracteres"
|
||||||
weak-password: "弱いパスワード"
|
weak-password: "Contraseña débil"
|
||||||
normal-password: "まあまあのパスワード"
|
normal-password: "No está mal"
|
||||||
strong-password: "強いパスワード"
|
strong-password: "Muy buena contraseña"
|
||||||
retype: "再入力"
|
retype: "Inténtalo otra vez"
|
||||||
retype-placeholder: "確認のため再入力してください"
|
retype-placeholder: "Confirma la contraseña"
|
||||||
password-matched: "確認されました"
|
password-matched: "OK"
|
||||||
password-not-matched: "一致していません"
|
password-not-matched: "Las contraseñas no son las mismas"
|
||||||
recaptcha: "認証"
|
recaptcha: "Verificar"
|
||||||
create: "アカウント作成"
|
create: "Crea una cuenta"
|
||||||
some-error: "何らかの原因によりアカウントの作成に失敗しました。再度お試しください。"
|
some-error: "Por algún motivo no se ha podido crear la cuenta. Por favor inténtalo de nuevo."
|
||||||
common/views/components/special-message.vue:
|
common/views/components/special-message.vue:
|
||||||
new-year: "Happy New Year!"
|
new-year: "¡Feliz Año Nuevo!"
|
||||||
christmas: "Merry Christmas!"
|
christmas: "¡Feliz Navidad!"
|
||||||
common/views/components/stream-indicator.vue:
|
common/views/components/stream-indicator.vue:
|
||||||
connecting: "接続中"
|
connecting: "Conectando"
|
||||||
reconnecting: "再接続中"
|
reconnecting: "Reconectando"
|
||||||
connected: "接続完了"
|
connected: "Conectado"
|
||||||
common/views/components/twitter-setting.vue:
|
common/views/components/twitter-setting.vue:
|
||||||
description: "お使いのTwitterアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでTwitterアカウント情報が表示されるようになったり、Twitterを用いた便利なサインインを利用できるようになります。"
|
description: "Si comectas tu cuenta de Twitter con tu cuenta de Misskey podrás ver la información de tu cuemta de Twitter en tu perfil y además podrás entrar usando Twitter."
|
||||||
connected-to: "次のTwitterアカウントに接続されています"
|
connected-to: "Estas comectado con las siguientes cuentas de Twitter"
|
||||||
detail: "詳細..."
|
detail: "Detalles..."
|
||||||
reconnect: "再接続する"
|
reconnect: "Conectar de nuevo"
|
||||||
connect: "Twitterと接続する"
|
connect: "Conectate usando Twitter"
|
||||||
disconnect: "切断する"
|
disconnect: "Desconectado"
|
||||||
common/views/components/uploader.vue:
|
common/views/components/uploader.vue:
|
||||||
waiting: "待機中"
|
waiting: "Un momento"
|
||||||
common/views/components/visibility-chooser.vue:
|
common/views/components/visibility-chooser.vue:
|
||||||
public: "公開"
|
public: "Público"
|
||||||
home: "ホーム"
|
home: "Inicio"
|
||||||
home-desc: "ホームタイムラインにのみ公開"
|
home-desc: "Publica solo en la página de inicio"
|
||||||
followers: "フォロワー"
|
followers: "Seguidores"
|
||||||
followers-desc: "自分のフォロワーにのみ公開"
|
followers-desc: "Piblica solo para tus seguidores"
|
||||||
specified: "ダイレクト"
|
specified: "Directo"
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
specified-desc: "Publica solo para los seguidores que quieras"
|
||||||
private: "非公開"
|
private: "Privada"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "確認中"
|
fetching: "Recuperando"
|
||||||
no-broadcasts: "お知らせはありません"
|
no-broadcasts: "Sin emisión"
|
||||||
have-a-nice-day: "良い一日を!"
|
have-a-nice-day: "¡Buenos dias!"
|
||||||
next: "次"
|
next: "Siguiente"
|
||||||
common/views/widgets/donation.vue:
|
common/views/widgets/donation.vue:
|
||||||
title: "寄付のお願い"
|
title: "Donaciones"
|
||||||
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
||||||
common/views/widgets/photo-stream.vue:
|
common/views/widgets/photo-stream.vue:
|
||||||
title: "フォトストリーム"
|
title: "フォトストリーム"
|
||||||
@ -228,6 +239,7 @@ common/views/widgets/posts-monitor.vue:
|
|||||||
common/views/widgets/hashtags.vue:
|
common/views/widgets/hashtags.vue:
|
||||||
title: "ハッシュタグ"
|
title: "ハッシュタグ"
|
||||||
count: "{}人が投稿"
|
count: "{}人が投稿"
|
||||||
|
empty: "トレンドなし"
|
||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "サーバー情報"
|
title: "サーバー情報"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
@ -235,6 +247,12 @@ common/views/widgets/memo.vue:
|
|||||||
title: "付箋"
|
title: "付箋"
|
||||||
memo: "ここに書いて!"
|
memo: "ここに書いて!"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
|
common/views/pages/follow.vue:
|
||||||
|
signed-in-as: "{}としてサインイン中"
|
||||||
|
following: "フォロー中"
|
||||||
|
follow: "フォロー"
|
||||||
|
request-pending: "フォロー許可待ち"
|
||||||
|
follow-request: "フォロー申請"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
@ -257,66 +275,66 @@ desktop/views/components/choose-file-from-drive-window.vue:
|
|||||||
desktop/views/components/choose-folder-from-drive-window.vue:
|
desktop/views/components/choose-folder-from-drive-window.vue:
|
||||||
cancel: "キャンセル"
|
cancel: "キャンセル"
|
||||||
ok: "決定"
|
ok: "決定"
|
||||||
choose-prompt: "フォルダを選択"
|
choose-prompt: "Escoge una Carpeta"
|
||||||
desktop/views/components/crop-window.vue:
|
desktop/views/components/crop-window.vue:
|
||||||
skip: "クロップをスキップ"
|
skip: "クロップをスキップ"
|
||||||
cancel: "キャンセル"
|
cancel: "Cancelar"
|
||||||
ok: "決定"
|
ok: "OK"
|
||||||
desktop/views/components/drive-window.vue:
|
desktop/views/components/drive-window.vue:
|
||||||
used: "使用中"
|
used: "usado"
|
||||||
drive: "ドライブ"
|
drive: "Disco"
|
||||||
desktop/views/components/drive.file.vue:
|
desktop/views/components/drive.file.vue:
|
||||||
avatar: "アイコン"
|
avatar: "Avatar"
|
||||||
banner: "バナー"
|
banner: "Banner"
|
||||||
contextmenu:
|
contextmenu:
|
||||||
rename: "名前を変更"
|
rename: "Renombrar"
|
||||||
copy-url: "URLをコピー"
|
copy-url: "Copia la URL"
|
||||||
download: "ダウンロード"
|
download: "Descargar"
|
||||||
else-files: "その他..."
|
else-files: "Otros"
|
||||||
set-as-avatar: "アイコンに設定"
|
set-as-avatar: "Utilizar como avatar"
|
||||||
set-as-banner: "バナーに設定"
|
set-as-banner: "Utilizar como banner"
|
||||||
open-in-app: "アプリで開く"
|
open-in-app: "Abrir en la aplicación"
|
||||||
add-app: "アプリを追加"
|
add-app: "Añadir aplicación"
|
||||||
rename-file: "ファイル名の変更"
|
rename-file: "Renombra el fichero"
|
||||||
input-new-file-name: "新しいファイル名を入力してください"
|
input-new-file-name: "Escribe el nombre nuevo"
|
||||||
copied: "コピー完了"
|
copied: "Copiado"
|
||||||
copied-url-to-clipboard: "URLをクリップボードにコピーしました"
|
copied-url-to-clipboard: "URL copiada al porta papeles"
|
||||||
desktop/views/components/drive.folder.vue:
|
desktop/views/components/drive.folder.vue:
|
||||||
unable-to-process: "操作を完了できません"
|
unable-to-process: "La operación no se puede llevar a cabo"
|
||||||
circular-reference-detected: "移動先のフォルダーは、移動するフォルダーのサブフォルダーです。"
|
circular-reference-detected: "La carpeta de destino es una sub-carpeta de la carpeta que quieres mover."
|
||||||
unhandled-error: "不明なエラー"
|
unhandled-error: "Error desconocido"
|
||||||
contextmenu:
|
contextmenu:
|
||||||
move-to-this-folder: "このフォルダへ移動"
|
move-to-this-folder: "Mover a esta carpeta"
|
||||||
show-in-new-window: "新しいウィンドウで表示"
|
show-in-new-window: "Abrir en una ventana nueva"
|
||||||
rename: "名前を変更"
|
rename: "Renombrar"
|
||||||
rename-folder: "フォルダ名の変更"
|
rename-folder: "Renombrar carpeta"
|
||||||
input-new-folder-name: "新しいフォルダ名を入力してください"
|
input-new-folder-name: "Escribe el nombre nuevo"
|
||||||
desktop/views/components/drive.nav-folder.vue:
|
desktop/views/components/drive.nav-folder.vue:
|
||||||
drive: "ドライブ"
|
drive: "Disco"
|
||||||
desktop/views/components/drive.vue:
|
desktop/views/components/drive.vue:
|
||||||
search: "検索"
|
search: "Buscar"
|
||||||
load-more: "もっと読み込む"
|
load-more: "Cargar más"
|
||||||
empty-draghover: "ドロップですか?いいですよ、ボクはカワイイですからね"
|
empty-draghover: "¡Saluda!"
|
||||||
empty-drive: "ドライブには何もありません。"
|
empty-drive: "Tu disco está vacio"
|
||||||
empty-drive-description: "右クリックして「ファイルをアップロード」を選んだり、ファイルをドラッグ&ドロップすることでもアップロードできます。"
|
empty-drive-description: "También puedes subir archivos seleccionándolos y con el botón derecho selecciona \"Subir fichero\" o puedes arrastrarlo hasta la ventana."
|
||||||
empty-folder: "このフォルダーは空です"
|
empty-folder: "La carpeta está vacia"
|
||||||
unable-to-process: "操作を完了できません"
|
unable-to-process: "La operación no se puede llevar a cabo."
|
||||||
circular-reference-detected: "移動先のフォルダーは、移動するフォルダーのサブフォルダーです。"
|
circular-reference-detected: "La carpeta de destino es una sub-carpeta de la carpeta que quieres mover."
|
||||||
unhandled-error: "不明なエラー"
|
unhandled-error: "Errer desconocido"
|
||||||
url-upload: "URLアップロード"
|
url-upload: "Subir desde una URL"
|
||||||
url-of-file: "アップロードしたいファイルのURL"
|
url-of-file: "URL del fichero que quieres subir"
|
||||||
url-upload-requested: "アップロードをリクエストしました"
|
url-upload-requested: "Subida solicitada"
|
||||||
may-take-time: "アップロードが完了するまで時間がかかる場合があります。"
|
may-take-time: "Subir el fichero puede tardar un tiempo."
|
||||||
create-folder: "フォルダー作成"
|
create-folder: "Crear una carpeta"
|
||||||
folder-name: "フォルダー名"
|
folder-name: "Nombre de la carpeta"
|
||||||
contextmenu:
|
contextmenu:
|
||||||
create-folder: "フォルダーを作成"
|
create-folder: "Crear una carpeta"
|
||||||
upload: "ファイルをアップロード"
|
upload: "Subir fichero"
|
||||||
url-upload: "URLからアップロード"
|
url-upload: "Subir desde una URL"
|
||||||
desktop/views/components/follow-button.vue:
|
desktop/views/components/follow-button.vue:
|
||||||
following: "フォロー中"
|
following: "Siguiendo"
|
||||||
follow: "フォロー"
|
follow: "Sigue"
|
||||||
request-pending: "フォロー許可待ち"
|
request-pending: "Pendiente de aprobación"
|
||||||
follow-request: "フォロー申請"
|
follow-request: "フォロー申請"
|
||||||
desktop/views/components/followers-window.vue:
|
desktop/views/components/followers-window.vue:
|
||||||
followers: "{} のフォロワー"
|
followers: "{} のフォロワー"
|
||||||
@ -333,7 +351,7 @@ desktop/views/components/friends-maker.vue:
|
|||||||
refresh: "もっと見る"
|
refresh: "もっと見る"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
desktop/views/components/game-window.vue:
|
desktop/views/components/game-window.vue:
|
||||||
game: "オセロ"
|
game: "リバーシ"
|
||||||
desktop/views/components/home.vue:
|
desktop/views/components/home.vue:
|
||||||
done: "完了"
|
done: "完了"
|
||||||
add-widget: "ウィジェットを追加:"
|
add-widget: "ウィジェットを追加:"
|
||||||
@ -364,6 +382,7 @@ desktop/views/components/notes.note.vue:
|
|||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "読み込みに失敗しました。"
|
error: "読み込みに失敗しました。"
|
||||||
retry: "リトライ"
|
retry: "リトライ"
|
||||||
|
load-more: "もっと読み込む"
|
||||||
desktop/views/components/notifications.vue:
|
desktop/views/components/notifications.vue:
|
||||||
more: "もっと見る"
|
more: "もっと見る"
|
||||||
empty: "ありません!"
|
empty: "ありません!"
|
||||||
@ -381,55 +400,57 @@ desktop/views/components/post-form.vue:
|
|||||||
renote-failed: "Renoteに失敗しました"
|
renote-failed: "Renoteに失敗しました"
|
||||||
posting: "投稿中"
|
posting: "投稿中"
|
||||||
attach-media-from-local: "PCからメディアを添付"
|
attach-media-from-local: "PCからメディアを添付"
|
||||||
attach-media-from-drive: "ドライブからメディアを添付"
|
attach-media-from-drive: "Adjunta multimedia desde tu Disco"
|
||||||
attach-cancel: "添付取り消し"
|
attach-cancel: "Quitar el archivo adjunto"
|
||||||
insert-a-kao: "v(‘ω’)v"
|
insert-a-kao: "v('ω')v"
|
||||||
create-poll: "アンケートを作成"
|
create-poll: "Crea una encuesta"
|
||||||
text-remain: "残り{}文字"
|
text-remain: "quedan {} caracteres"
|
||||||
desktop/views/components/post-form-window.vue:
|
desktop/views/components/post-form-window.vue:
|
||||||
note: "新規投稿"
|
note: "Nota nueva"
|
||||||
reply: "返信"
|
reply: "Responder"
|
||||||
attaches: "添付: {}メディア"
|
attaches: "{} archivo(s) multimedia adjuntados"
|
||||||
uploading-media: "{}個のメディアをアップロード中"
|
uploading-media: "Subiendo {} archivo(s) multimedia"
|
||||||
desktop/views/components/progress-dialog.vue:
|
desktop/views/components/progress-dialog.vue:
|
||||||
waiting: "待機中"
|
waiting: "Un momento"
|
||||||
desktop/views/components/renote-form.vue:
|
desktop/views/components/renote-form.vue:
|
||||||
quote: "引用する..."
|
quote: "Cita..."
|
||||||
cancel: "キャンセル"
|
cancel: "Cancelar"
|
||||||
renote: "Renote"
|
renote: "Volver a publicar"
|
||||||
reposting: "しています..."
|
reposting: "Publicando de nuevo..."
|
||||||
success: "Renoteしました!"
|
success: "¡Publicado!"
|
||||||
failure: "Renoteに失敗しました"
|
failure: "La publicación ha fallado"
|
||||||
desktop/views/components/renote-form-window.vue:
|
desktop/views/components/renote-form-window.vue:
|
||||||
title: "この投稿をRenoteしますか?"
|
title: "¿Seguro qué quieres volver a publicarlo?"
|
||||||
desktop/views/components/settings-window.vue:
|
desktop/views/components/settings-window.vue:
|
||||||
settings: "設定"
|
settings: "Configuración"
|
||||||
desktop/views/components/settings.vue:
|
desktop/views/components/settings.vue:
|
||||||
profile: "プロフィール"
|
profile: "Perfil"
|
||||||
notification: "通知"
|
notification: "Notificación"
|
||||||
apps: "アプリ"
|
apps: "Aplicaciones"
|
||||||
mute: "ミュート"
|
mute: "Silenciar"
|
||||||
drive: "ドライブ"
|
drive: "Disco"
|
||||||
security: "セキュリティ"
|
security: "Seguridad"
|
||||||
signin: "サインイン履歴"
|
signin: "Historial de inicios de sesión"
|
||||||
password: "パスワード"
|
password: "Contraseña"
|
||||||
2fa: "二段階認証"
|
2fa: "Autenticación de Doble-Factor"
|
||||||
other: "その他"
|
other: "Otros"
|
||||||
license: "ライセンス"
|
license: "Licencia"
|
||||||
behaviour: "動作"
|
behaviour: "Acciones"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "Desplazamiento infinito"
|
||||||
fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。"
|
fetch-on-scroll-desc: "Cuando te deslizas al final de la página nuevo contenido se carga automáticamente."
|
||||||
auto-popout: "ウィンドウの自動ポップアウト"
|
auto-popout: "Ventana emergente automática"
|
||||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
auto-popout-desc: "Muestra una ventana emergente si es posible. Esta configuración depende del navegador."
|
||||||
advanced: "詳細設定"
|
advanced: "Configuración avanzada"
|
||||||
api-via-stream: "ストリームを経由したAPIリクエスト"
|
api-via-stream: "Solicitar API por medio de un stream"
|
||||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
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: "デザインと表示"
|
display: "Diseño y pantalla"
|
||||||
customize: "ホームをカスタマイズ"
|
customize: "Personaliza la página principal"
|
||||||
dark-mode: "ダークモード"
|
choose-wallpaper: "壁紙を選択"
|
||||||
circle-icons: "円形のアイコンを使用"
|
delete-wallpaper: "壁紙を削除"
|
||||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
dark-mode: "Modo Nocturno"
|
||||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
circle-icons: "Usar iconos circulares"
|
||||||
|
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"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿をタイムラインに表示する"
|
show-renoted-my-notes: "Renoteされた自分の投稿をタイムラインに表示する"
|
||||||
@ -521,6 +542,9 @@ desktop/views/components/settings.profile.vue:
|
|||||||
description: "自己紹介"
|
description: "自己紹介"
|
||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
|
locked-account: "アカウントの保護"
|
||||||
|
is-locked: "投稿を非公開にする"
|
||||||
|
other: "その他"
|
||||||
is-bot: "このアカウントはBotです"
|
is-bot: "このアカウントはBotです"
|
||||||
is-cat: "このアカウントはCatです"
|
is-cat: "このアカウントはCatです"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
@ -533,15 +557,18 @@ desktop/views/components/taskmanager.vue:
|
|||||||
desktop/views/components/timeline.vue:
|
desktop/views/components/timeline.vue:
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
local: "ローカル"
|
local: "ローカル"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
global: "グローバル"
|
global: "グローバル"
|
||||||
list: "リスト"
|
list: "リスト"
|
||||||
|
desktop/views/components/ui.header.vue:
|
||||||
|
welcome-back: "おかえりなさい、"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
drive: "ドライブ"
|
drive: "ドライブ"
|
||||||
favorites: "お気に入り"
|
favorites: "お気に入り"
|
||||||
lists: "リスト"
|
lists: "リスト"
|
||||||
follow-requests: "フォロー申請"
|
follow-requests: "フォロー申請"
|
||||||
customize: "カスタマイズ"
|
customize: "ホームのカスタマイズ"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
dark: "闇に飲まれる"
|
dark: "闇に飲まれる"
|
||||||
@ -580,6 +607,7 @@ desktop/views/components/window.vue:
|
|||||||
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: "メディアビュー"
|
||||||
|
edit: "オプション"
|
||||||
desktop/views/pages/deck/deck.note.vue:
|
desktop/views/pages/deck/deck.note.vue:
|
||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
@ -618,7 +646,7 @@ desktop/views/pages/user/user.friends.vue:
|
|||||||
title: "よく話すユーザー"
|
title: "よく話すユーザー"
|
||||||
loading: "読み込み中"
|
loading: "読み込み中"
|
||||||
no-users: "よく話すユーザーはいません"
|
no-users: "よく話すユーザーはいません"
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.vue:
|
||||||
is-suspended: "このユーザーは凍結されています。"
|
is-suspended: "このユーザーは凍結されています。"
|
||||||
is-remote: "このユーザーはリモートユーザーです。"
|
is-remote: "このユーザーはリモートユーザーです。"
|
||||||
view-remote: "正確な情報を見る"
|
view-remote: "正確な情報を見る"
|
||||||
@ -636,6 +664,11 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "ミュートする"
|
mute: "ミュートする"
|
||||||
muted: "ミュートしています"
|
muted: "ミュートしています"
|
||||||
unmute: "ミュート解除"
|
unmute: "ミュート解除"
|
||||||
|
desktop/views/pages/user/user.header.vue:
|
||||||
|
posts: "投稿"
|
||||||
|
following: "フォロー"
|
||||||
|
followers: "フォロワー"
|
||||||
|
is-bot: "このアカウントはBotです"
|
||||||
desktop/views/pages/user/user.timeline.vue:
|
desktop/views/pages/user/user.timeline.vue:
|
||||||
default: "投稿"
|
default: "投稿"
|
||||||
with-replies: "投稿と返信"
|
with-replies: "投稿と返信"
|
||||||
@ -787,6 +820,7 @@ mobile/views/pages/following.vue:
|
|||||||
mobile/views/pages/home.vue:
|
mobile/views/pages/home.vue:
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
local: "ローカル"
|
local: "ローカル"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
global: "グローバル"
|
global: "グローバル"
|
||||||
mobile/views/pages/messaging.vue:
|
mobile/views/pages/messaging.vue:
|
||||||
messaging: "メッセージ"
|
messaging: "メッセージ"
|
||||||
@ -904,7 +938,4 @@ docs:
|
|||||||
props:
|
props:
|
||||||
name: "名前"
|
name: "名前"
|
||||||
type: "型"
|
type: "型"
|
||||||
optional: "オプション"
|
|
||||||
description: "説明"
|
description: "説明"
|
||||||
yes: "はい"
|
|
||||||
no: "いいえ"
|
|
||||||
|
119
locales/fr.yml
@ -3,20 +3,20 @@ meta:
|
|||||||
lang: "Français"
|
lang: "Français"
|
||||||
divider: ""
|
divider: ""
|
||||||
common:
|
common:
|
||||||
misskey: "Une planète du fédiverse"
|
misskey: "Une ⭐ du fédiverse"
|
||||||
about-title: "Une ⭐ du fédiverse."
|
about-title: "Une ⭐ du fédiverse."
|
||||||
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 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 ?"
|
||||||
time:
|
time:
|
||||||
unknown: "inconnu"
|
unknown: "inconnu"
|
||||||
future: "future"
|
future: "future"
|
||||||
just_now: "maintenant"
|
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"
|
||||||
hours_ago: "Il y a {}heure(s)"
|
hours_ago: "Il y a {} heure·s"
|
||||||
days_ago: "Il y a {}jour(s)"
|
days_ago: "Il y a {} jour·s"
|
||||||
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"
|
||||||
weekday-short:
|
weekday-short:
|
||||||
sunday: "D"
|
sunday: "D"
|
||||||
monday: "L"
|
monday: "L"
|
||||||
@ -29,24 +29,34 @@ common:
|
|||||||
like: "Aime"
|
like: "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"
|
||||||
pudding: "Pudding"
|
pudding: "Pudding"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "Que faîtes vous à cet instant ?"
|
a: "Que faîtes 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: "Voulez-vous exprimer quelque chose ?"
|
||||||
e: "Écrivez ici"
|
e: "Écrivez ici"
|
||||||
f: "En attente de vos écrits"
|
f: "En attente de vos écrits"
|
||||||
|
search: "Recherche"
|
||||||
delete: "Supprimer"
|
delete: "Supprimer"
|
||||||
loading: "Chargement"
|
loading: "Chargement"
|
||||||
ok: "OK"
|
ok: "OK"
|
||||||
update-available: "Une nouvelle version de Misskey est disponible({newer}, version actuelle: {current}). Recharger la page pour appliquer la mise à jour."
|
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."
|
||||||
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)"
|
||||||
|
show-reversi-board-labels: "Afficher les étiquettes des lignes et colonnes dans Reversi"
|
||||||
|
reversi:
|
||||||
|
drawn: "Partie nulle"
|
||||||
|
my-turn: "C’est votre tour"
|
||||||
|
opponent-turn: "Tour de l’adversaire"
|
||||||
|
turn-of: "C’est le tour de {}"
|
||||||
|
past-turn-of: "C'est au tour de {}"
|
||||||
widgets:
|
widgets:
|
||||||
analog-clock: "Horloge analogique"
|
analog-clock: "Horloge analogique"
|
||||||
profile: "Profil"
|
profile: "Profil"
|
||||||
@ -70,11 +80,12 @@ common:
|
|||||||
donation: "Dons"
|
donation: "Dons"
|
||||||
nav: "Navigation"
|
nav: "Navigation"
|
||||||
tips: "Conseils"
|
tips: "Conseils"
|
||||||
hashtags: "ハッシュタグ"
|
hashtags: "Étiquettes"
|
||||||
deck:
|
deck:
|
||||||
widgets: "Widgets"
|
widgets: "Widgets"
|
||||||
home: "Accueil"
|
home: "Accueil"
|
||||||
local: "Local"
|
local: "Local"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
global: "Global"
|
global: "Global"
|
||||||
notifications: "Notifications"
|
notifications: "Notifications"
|
||||||
list: "Liste"
|
list: "Liste"
|
||||||
@ -143,7 +154,7 @@ common/views/components/note-menu.vue:
|
|||||||
pin: "Épingler sur votre profile"
|
pin: "Épingler sur votre profile"
|
||||||
delete: "Supprimer"
|
delete: "Supprimer"
|
||||||
delete-confirm: "Supprimer cette publication ?"
|
delete-confirm: "Supprimer cette publication ?"
|
||||||
remote: "投稿元で見る"
|
remote: "Afficher les 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"
|
||||||
@ -224,10 +235,11 @@ common/views/widgets/photo-stream.vue:
|
|||||||
no-photos: "Pas de photos"
|
no-photos: "Pas de photos"
|
||||||
common/views/widgets/posts-monitor.vue:
|
common/views/widgets/posts-monitor.vue:
|
||||||
title: "Graph des publications"
|
title: "Graph des publications"
|
||||||
toggle: "表示を切り替え"
|
toggle: "Basculer les vues"
|
||||||
common/views/widgets/hashtags.vue:
|
common/views/widgets/hashtags.vue:
|
||||||
title: "ハッシュタグ"
|
title: "Étiquettes"
|
||||||
count: "{}人が投稿"
|
count: "{} utilisateurs mentionnés"
|
||||||
|
empty: "Aucune tendance"
|
||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "Info sur le serveur"
|
title: "Info sur le serveur"
|
||||||
toggle: "Afficher les vues"
|
toggle: "Afficher les vues"
|
||||||
@ -235,8 +247,14 @@ 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/pages/follow.vue:
|
||||||
|
signed-in-as: "Connecté en tant que {}"
|
||||||
|
following: "Suit"
|
||||||
|
follow: "Suivre"
|
||||||
|
request-pending: "Demande d'abonnement en attente"
|
||||||
|
follow-request: "Demande d'abonnement"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Noir ... Total"
|
||||||
notes: "Bleu ... Notes"
|
notes: "Bleu ... Notes"
|
||||||
replies: "Rouge ... Réponses"
|
replies: "Rouge ... Réponses"
|
||||||
renotes: "Vert ... Partages"
|
renotes: "Vert ... Partages"
|
||||||
@ -333,7 +351,7 @@ desktop/views/components/friends-maker.vue:
|
|||||||
refresh: "Plus"
|
refresh: "Plus"
|
||||||
close: "Fermer"
|
close: "Fermer"
|
||||||
desktop/views/components/game-window.vue:
|
desktop/views/components/game-window.vue:
|
||||||
game: "Othello"
|
game: "Reversi"
|
||||||
desktop/views/components/home.vue:
|
desktop/views/components/home.vue:
|
||||||
done: "Envoyer"
|
done: "Envoyer"
|
||||||
add-widget: "Ajouter un widget"
|
add-widget: "Ajouter un widget"
|
||||||
@ -364,6 +382,7 @@ desktop/views/components/notes.note.vue:
|
|||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "Échec du chargement."
|
error: "Échec du chargement."
|
||||||
retry: "Réessayer"
|
retry: "Réessayer"
|
||||||
|
load-more: "もっと読み込む"
|
||||||
desktop/views/components/notifications.vue:
|
desktop/views/components/notifications.vue:
|
||||||
more: "Plus"
|
more: "Plus"
|
||||||
empty: "Pas de notifications"
|
empty: "Pas de notifications"
|
||||||
@ -383,7 +402,7 @@ desktop/views/components/post-form.vue:
|
|||||||
attach-media-from-local: "Joindre un media depuis votre PC"
|
attach-media-from-local: "Joindre un media depuis votre PC"
|
||||||
attach-media-from-drive: "Joindre un media depuis votre Drive"
|
attach-media-from-drive: "Joindre un media depuis votre Drive"
|
||||||
attach-cancel: "Annuler la jointure de fichier"
|
attach-cancel: "Annuler la jointure de fichier"
|
||||||
insert-a-kao: "v(‘ω’)v"
|
insert-a-kao: "v('ω')v"
|
||||||
create-poll: "Créer un sondage"
|
create-poll: "Créer un sondage"
|
||||||
text-remain: "{} charactères restants"
|
text-remain: "{} charactères restants"
|
||||||
desktop/views/components/post-form-window.vue:
|
desktop/views/components/post-form-window.vue:
|
||||||
@ -411,7 +430,7 @@ desktop/views/components/settings.vue:
|
|||||||
mute: "Mettre en sourdine"
|
mute: "Mettre en sourdine"
|
||||||
drive: "Drive"
|
drive: "Drive"
|
||||||
security: "Sécurité"
|
security: "Sécurité"
|
||||||
signin: "サインイン履歴"
|
signin: "Historique de connexion"
|
||||||
password: "Mot de Passe"
|
password: "Mot de Passe"
|
||||||
2fa: "Vérification en deux étapes"
|
2fa: "Vérification en deux étapes"
|
||||||
other: "Autres"
|
other: "Autres"
|
||||||
@ -426,9 +445,11 @@ desktop/views/components/settings.vue:
|
|||||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||||
display: "Affichage et design"
|
display: "Affichage et design"
|
||||||
customize: "Personnaliser l'Accueil"
|
customize: "Personnaliser l'Accueil"
|
||||||
|
choose-wallpaper: "壁紙を選択"
|
||||||
|
delete-wallpaper: "壁紙を削除"
|
||||||
dark-mode: "Mode nuit"
|
dark-mode: "Mode nuit"
|
||||||
circle-icons: "Utiliser des icônes circulaires"
|
circle-icons: "Utiliser des icônes circulaires"
|
||||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
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: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "Afficher mes republications dans le fil"
|
show-my-renotes: "Afficher mes republications dans le fil"
|
||||||
@ -441,13 +462,13 @@ desktop/views/components/settings.vue:
|
|||||||
volume: "Volume"
|
volume: "Volume"
|
||||||
test: "Test"
|
test: "Test"
|
||||||
mobile: "Mobile"
|
mobile: "Mobile"
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "Enlever la mention publié via 'un périphérique mobile'"
|
||||||
language: "Langue"
|
language: "Langue"
|
||||||
pick-language: "Sélectionner une langue"
|
pick-language: "Sélectionner une langue"
|
||||||
recommended: "Recommandé"
|
recommended: "Recommandé"
|
||||||
auto: "Automatique"
|
auto: "Automatique"
|
||||||
specify-language: "Spécifier la langue"
|
specify-language: "Spécifier la langue"
|
||||||
language-desc: "変更はページの再度読み込み後に反映されます。"
|
language-desc: "Le rechargement de la page est requis afin d'appliquer les modifications."
|
||||||
cache: "Cache"
|
cache: "Cache"
|
||||||
clean-cache: "Nettoyage"
|
clean-cache: "Nettoyage"
|
||||||
cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。"
|
cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。"
|
||||||
@ -463,12 +484,12 @@ desktop/views/components/settings.vue:
|
|||||||
update-checking: "Recherche de mises à jour"
|
update-checking: "Recherche de mises à jour"
|
||||||
do-update: "Rechercher des mises à jour"
|
do-update: "Rechercher des mises à jour"
|
||||||
update-settings: "Paramètres avancés"
|
update-settings: "Paramètres avancés"
|
||||||
prevent-update: "アップデートを延期する(非推奨)"
|
prevent-update: "Reporter les mises à jour (non recommandé)"
|
||||||
prevent-update-desc: "この設定をオンにしてもアップデートが反映される場合があります。この設定はこのデバイスのみ有効です。"
|
prevent-update-desc: "この設定をオンにしてもアップデートが反映される場合があります。この設定はこのデバイスのみ有効です。"
|
||||||
no-updates: "Aucune mise à jour disponible"
|
no-updates: "Aucune mise à jour disponible"
|
||||||
no-updates-desc: "Votre Misskey est à jour."
|
no-updates-desc: "Votre Misskey est à jour."
|
||||||
update-available: "Nouvelle version disponible !"
|
update-available: "Nouvelle version disponible !"
|
||||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
update-available-desc: "Les mises à jour seront appliquées une fois la page est rechargée."
|
||||||
advanced-settings: "Réglages avancés"
|
advanced-settings: "Réglages avancés"
|
||||||
debug-mode: "Activer le mode debug"
|
debug-mode: "Activer le mode debug"
|
||||||
debug-mode-desc: "Ce paramètre est stocké dans le navigateur."
|
debug-mode-desc: "Ce paramètre est stocké dans le navigateur."
|
||||||
@ -521,6 +542,9 @@ desktop/views/components/settings.profile.vue:
|
|||||||
description: "Description"
|
description: "Description"
|
||||||
birthday: "Date de naissance"
|
birthday: "Date de naissance"
|
||||||
save: "Mettre à jour le profil"
|
save: "Mettre à jour le profil"
|
||||||
|
locked-account: "アカウントの保護"
|
||||||
|
is-locked: "投稿を非公開にする"
|
||||||
|
other: "その他"
|
||||||
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"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
@ -533,15 +557,18 @@ desktop/views/components/taskmanager.vue:
|
|||||||
desktop/views/components/timeline.vue:
|
desktop/views/components/timeline.vue:
|
||||||
home: "Accueil"
|
home: "Accueil"
|
||||||
local: "Local"
|
local: "Local"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
global: "Global"
|
global: "Global"
|
||||||
list: "Listes"
|
list: "Listes"
|
||||||
|
desktop/views/components/ui.header.vue:
|
||||||
|
welcome-back: "Vous êtes de retour !"
|
||||||
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: "Modifications"
|
customize: "ホームのカスタマイズ"
|
||||||
settings: "Réglages"
|
settings: "Réglages"
|
||||||
signout: "Déconnexion"
|
signout: "Déconnexion"
|
||||||
dark: "Fall in dark"
|
dark: "Fall in dark"
|
||||||
@ -578,8 +605,9 @@ desktop/views/components/window.vue:
|
|||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "Fermer"
|
close: "Fermer"
|
||||||
desktop/views/pages/deck/deck.tl-column.vue:
|
desktop/views/pages/deck/deck.tl-column.vue:
|
||||||
is-media-only: "メディア投稿のみ"
|
is-media-only: "Les publications médias uniquement"
|
||||||
is-media-view: "メディアビュー"
|
is-media-view: "Vue média"
|
||||||
|
edit: "オプション"
|
||||||
desktop/views/pages/deck/deck.note.vue:
|
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"
|
||||||
@ -618,9 +646,9 @@ desktop/views/pages/user/user.friends.vue:
|
|||||||
title: "Personnes qui répondent le plus"
|
title: "Personnes qui répondent le plus"
|
||||||
loading: "Chargement en cours"
|
loading: "Chargement en cours"
|
||||||
no-users: "Pas d'utilisateurs"
|
no-users: "Pas d'utilisateurs"
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.vue:
|
||||||
is-suspended: "This account has been suspended."
|
is-suspended: "Ce compte a été suspendu."
|
||||||
is-remote: "Cet utilisateur n'est pas un utilisateur de Misskey. Certaines informations peuvent être erronées "
|
is-remote: "Cet utilisateur n'est pas un utilisateur de Misskey. Certaines informations peuvent être erronées"
|
||||||
view-remote: "Voir les informations détaillées"
|
view-remote: "Voir les informations détaillées"
|
||||||
desktop/views/pages/user/user.home.vue:
|
desktop/views/pages/user/user.home.vue:
|
||||||
last-used-at: "Last used at"
|
last-used-at: "Last used at"
|
||||||
@ -636,6 +664,11 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "Mettre en sourdine"
|
mute: "Mettre en sourdine"
|
||||||
muted: "Muting"
|
muted: "Muting"
|
||||||
unmute: "Enlever la sourdine"
|
unmute: "Enlever la sourdine"
|
||||||
|
desktop/views/pages/user/user.header.vue:
|
||||||
|
posts: "投稿"
|
||||||
|
following: "Suit"
|
||||||
|
followers: "Abonnés"
|
||||||
|
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"
|
||||||
with-replies: "Publications et réponses"
|
with-replies: "Publications et réponses"
|
||||||
@ -678,7 +711,7 @@ mobile/views/components/drive.vue:
|
|||||||
folder-name: "Nom du dossier"
|
folder-name: "Nom du dossier"
|
||||||
root-rename-alert: "現在いる場所はルートで、フォルダではないため名前の変更はできません。名前を変更したいフォルダに移動してからやってください。"
|
root-rename-alert: "現在いる場所はルートで、フォルダではないため名前の変更はできません。名前を変更したいフォルダに移動してからやってください。"
|
||||||
root-move-alert: "現在いる場所はルートで、フォルダではないため移動はできません。移動したいフォルダに移動してからやってください。"
|
root-move-alert: "現在いる場所はルートで、フォルダではないため移動はできません。移動したいフォルダに移動してからやってください。"
|
||||||
url-prompt: "アップロードしたいファイルのURL"
|
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:
|
||||||
rename: "Renommer"
|
rename: "Renommer"
|
||||||
@ -693,13 +726,13 @@ mobile/views/components/drive.file-detail.vue:
|
|||||||
hash: "Hash (md5)"
|
hash: "Hash (md5)"
|
||||||
exif: "EXIF"
|
exif: "EXIF"
|
||||||
mobile/views/components/follow-button.vue:
|
mobile/views/components/follow-button.vue:
|
||||||
following: "フォロー中"
|
following: "Abonnements"
|
||||||
follow: "Suivre"
|
follow: "Suivre"
|
||||||
request-pending: "フォロー許可待ち"
|
request-pending: "En attente d'approbation"
|
||||||
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: "おすすめのユーザーは見つかりませんでした。"
|
empty: "Impossible de trouver des utilisateurs à recommander."
|
||||||
fetching: "Chargement"
|
fetching: "Chargement"
|
||||||
refresh: "Voir plus"
|
refresh: "Voir plus"
|
||||||
close: "Fermer"
|
close: "Fermer"
|
||||||
@ -746,7 +779,7 @@ mobile/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"
|
||||||
media-count: "{} médias attachés"
|
media-count: "{} médias attachés"
|
||||||
poll: "アンケート"
|
poll: "Sondage"
|
||||||
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"
|
||||||
@ -787,6 +820,7 @@ mobile/views/pages/following.vue:
|
|||||||
mobile/views/pages/home.vue:
|
mobile/views/pages/home.vue:
|
||||||
home: "Accueil"
|
home: "Accueil"
|
||||||
local: "Local"
|
local: "Local"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
global: "Global"
|
global: "Global"
|
||||||
mobile/views/pages/messaging.vue:
|
mobile/views/pages/messaging.vue:
|
||||||
messaging: "Messagerie"
|
messaging: "Messagerie"
|
||||||
@ -842,7 +876,7 @@ mobile/views/pages/settings.vue:
|
|||||||
post-style-smart: "Intelligent"
|
post-style-smart: "Intelligent"
|
||||||
behavior: "Comportement"
|
behavior: "Comportement"
|
||||||
fetch-on-scroll: "Chargement lors du défilement"
|
fetch-on-scroll: "Chargement lors du défilement"
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "Ne pas mentionner que ma publication provient d'un 'périphérique mobile'"
|
||||||
load-raw-images: "Afficher les photos jointes en haute qualité"
|
load-raw-images: "Afficher les photos jointes en haute qualité"
|
||||||
load-remote-media: "Afficher les médias sur le serveur distant"
|
load-remote-media: "Afficher les médias sur le serveur distant"
|
||||||
twitter: "Intégration à Twitter"
|
twitter: "Intégration à Twitter"
|
||||||
@ -857,7 +891,7 @@ mobile/views/pages/settings.vue:
|
|||||||
no-updates: "Aucune mise à jour disponible"
|
no-updates: "Aucune mise à jour disponible"
|
||||||
no-updates-desc: "Votre Misskey est à jour."
|
no-updates-desc: "Votre Misskey est à jour."
|
||||||
update-available: "Nouvelle version disponible !"
|
update-available: "Nouvelle version disponible !"
|
||||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
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"
|
||||||
mobile/views/pages/user.vue:
|
mobile/views/pages/user.vue:
|
||||||
@ -904,7 +938,4 @@ docs:
|
|||||||
props:
|
props:
|
||||||
name: "Nom"
|
name: "Nom"
|
||||||
type: "Type"
|
type: "Type"
|
||||||
optional: "Optionel"
|
|
||||||
description: "Description"
|
description: "Description"
|
||||||
yes: "Oui"
|
|
||||||
no: "Non"
|
|
||||||
|
@ -2,11 +2,11 @@
|
|||||||
* Languages Loader
|
* Languages Loader
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import * as fs from 'fs';
|
const fs = require('fs');
|
||||||
import * as yaml from 'js-yaml';
|
const yaml = require('js-yaml');
|
||||||
|
|
||||||
const loadLang = lang => yaml.safeLoad(
|
const loadLang = lang => yaml.safeLoad(
|
||||||
fs.readFileSync(`./locales/${lang}.yml`, 'utf-8'));
|
fs.readFileSync(`${__dirname}/${lang}.yml`, 'utf-8'));
|
||||||
|
|
||||||
const native = loadLang('ja');
|
const native = loadLang('ja');
|
||||||
|
|
||||||
@ -15,7 +15,8 @@ const langs = {
|
|||||||
'en': loadLang('en'),
|
'en': loadLang('en'),
|
||||||
'fr': loadLang('fr'),
|
'fr': loadLang('fr'),
|
||||||
'ja': native,
|
'ja': native,
|
||||||
'pl': loadLang('pl')
|
'pl': loadLang('pl'),
|
||||||
|
'es': loadLang('es')
|
||||||
};
|
};
|
||||||
|
|
||||||
Object.entries(langs).map(([, locale]) => {
|
Object.entries(langs).map(([, locale]) => {
|
||||||
@ -23,4 +24,4 @@ Object.entries(langs).map(([, locale]) => {
|
|||||||
locale = Object.assign({}, native, locale);
|
locale = Object.assign({}, native, locale);
|
||||||
});
|
});
|
||||||
|
|
||||||
export default langs;
|
module.exports = langs;
|
@ -3,7 +3,7 @@ meta:
|
|||||||
lang: "日本語"
|
lang: "日本語"
|
||||||
divider: ""
|
divider: ""
|
||||||
common:
|
common:
|
||||||
misskey: "A planet 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と相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
||||||
time:
|
time:
|
||||||
@ -42,11 +42,21 @@ common:
|
|||||||
d: "言いたいことは?"
|
d: "言いたいことは?"
|
||||||
e: "ここに書いてください"
|
e: "ここに書いてください"
|
||||||
f: "あなたが書くのを待っています..."
|
f: "あなたが書くのを待っています..."
|
||||||
|
search: "検索"
|
||||||
delete: "削除"
|
delete: "削除"
|
||||||
loading: "読み込み中"
|
loading: "読み込み中"
|
||||||
ok: "わかった"
|
ok: "わかった"
|
||||||
|
update-available-title: "更新があります"
|
||||||
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
|
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
|
||||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
||||||
|
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||||
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||||
|
reversi:
|
||||||
|
drawn: "引き分け"
|
||||||
|
my-turn: "あなたのターンです"
|
||||||
|
opponent-turn: "相手のターンです"
|
||||||
|
turn-of: "{}のターンです"
|
||||||
|
past-turn-of: "{}のターン"
|
||||||
widgets:
|
widgets:
|
||||||
analog-clock: "アナログ時計"
|
analog-clock: "アナログ時計"
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
@ -75,6 +85,7 @@ common:
|
|||||||
widgets: "ウィジェット"
|
widgets: "ウィジェット"
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
local: "ローカル"
|
local: "ローカル"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
global: "グローバル"
|
global: "グローバル"
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
list: "リスト"
|
list: "リスト"
|
||||||
@ -228,6 +239,7 @@ common/views/widgets/posts-monitor.vue:
|
|||||||
common/views/widgets/hashtags.vue:
|
common/views/widgets/hashtags.vue:
|
||||||
title: "ハッシュタグ"
|
title: "ハッシュタグ"
|
||||||
count: "{}人が投稿"
|
count: "{}人が投稿"
|
||||||
|
empty: "トレンドなし"
|
||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "サーバー情報"
|
title: "サーバー情報"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
@ -235,6 +247,12 @@ common/views/widgets/memo.vue:
|
|||||||
title: "付箋"
|
title: "付箋"
|
||||||
memo: "ここに書いて!"
|
memo: "ここに書いて!"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
|
common/views/pages/follow.vue:
|
||||||
|
signed-in-as: "{}としてサインイン中"
|
||||||
|
following: "フォロー中"
|
||||||
|
follow: "フォロー"
|
||||||
|
request-pending: "フォロー許可待ち"
|
||||||
|
follow-request: "フォロー申請"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
@ -333,7 +351,7 @@ desktop/views/components/friends-maker.vue:
|
|||||||
refresh: "もっと見る"
|
refresh: "もっと見る"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
desktop/views/components/game-window.vue:
|
desktop/views/components/game-window.vue:
|
||||||
game: "オセロ"
|
game: "リバーシ"
|
||||||
desktop/views/components/home.vue:
|
desktop/views/components/home.vue:
|
||||||
done: "完了"
|
done: "完了"
|
||||||
add-widget: "ウィジェットを追加:"
|
add-widget: "ウィジェットを追加:"
|
||||||
@ -364,6 +382,7 @@ desktop/views/components/notes.note.vue:
|
|||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "読み込みに失敗しました。"
|
error: "読み込みに失敗しました。"
|
||||||
retry: "リトライ"
|
retry: "リトライ"
|
||||||
|
load-more: "もっと読み込む"
|
||||||
desktop/views/components/notifications.vue:
|
desktop/views/components/notifications.vue:
|
||||||
more: "もっと見る"
|
more: "もっと見る"
|
||||||
empty: "ありません!"
|
empty: "ありません!"
|
||||||
@ -383,7 +402,7 @@ desktop/views/components/post-form.vue:
|
|||||||
attach-media-from-local: "PCからメディアを添付"
|
attach-media-from-local: "PCからメディアを添付"
|
||||||
attach-media-from-drive: "ドライブからメディアを添付"
|
attach-media-from-drive: "ドライブからメディアを添付"
|
||||||
attach-cancel: "添付取り消し"
|
attach-cancel: "添付取り消し"
|
||||||
insert-a-kao: "v(‘ω’)v"
|
insert-a-kao: "v('ω')v"
|
||||||
create-poll: "アンケートを作成"
|
create-poll: "アンケートを作成"
|
||||||
text-remain: "残り{}文字"
|
text-remain: "残り{}文字"
|
||||||
desktop/views/components/post-form-window.vue:
|
desktop/views/components/post-form-window.vue:
|
||||||
@ -426,6 +445,8 @@ desktop/views/components/settings.vue:
|
|||||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||||
display: "デザインと表示"
|
display: "デザインと表示"
|
||||||
customize: "ホームをカスタマイズ"
|
customize: "ホームをカスタマイズ"
|
||||||
|
choose-wallpaper: "壁紙を選択"
|
||||||
|
delete-wallpaper: "壁紙を削除"
|
||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||||
@ -521,6 +542,9 @@ desktop/views/components/settings.profile.vue:
|
|||||||
description: "自己紹介"
|
description: "自己紹介"
|
||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
|
locked-account: "アカウントの保護"
|
||||||
|
is-locked: "投稿を非公開にする"
|
||||||
|
other: "その他"
|
||||||
is-bot: "このアカウントはBotです"
|
is-bot: "このアカウントはBotです"
|
||||||
is-cat: "このアカウントはCatです"
|
is-cat: "このアカウントはCatです"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
@ -533,15 +557,18 @@ desktop/views/components/taskmanager.vue:
|
|||||||
desktop/views/components/timeline.vue:
|
desktop/views/components/timeline.vue:
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
local: "ローカル"
|
local: "ローカル"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
global: "グローバル"
|
global: "グローバル"
|
||||||
list: "リスト"
|
list: "リスト"
|
||||||
|
desktop/views/components/ui.header.vue:
|
||||||
|
welcome-back: "おかえりなさい、"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
drive: "ドライブ"
|
drive: "ドライブ"
|
||||||
favorites: "お気に入り"
|
favorites: "お気に入り"
|
||||||
lists: "リスト"
|
lists: "リスト"
|
||||||
follow-requests: "フォロー申請"
|
follow-requests: "フォロー申請"
|
||||||
customize: "カスタマイズ"
|
customize: "ホームのカスタマイズ"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
dark: "闇に飲まれる"
|
dark: "闇に飲まれる"
|
||||||
@ -580,6 +607,7 @@ desktop/views/components/window.vue:
|
|||||||
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: "メディアビュー"
|
||||||
|
edit: "オプション"
|
||||||
desktop/views/pages/deck/deck.note.vue:
|
desktop/views/pages/deck/deck.note.vue:
|
||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
@ -618,7 +646,7 @@ desktop/views/pages/user/user.friends.vue:
|
|||||||
title: "よく話すユーザー"
|
title: "よく話すユーザー"
|
||||||
loading: "読み込み中"
|
loading: "読み込み中"
|
||||||
no-users: "よく話すユーザーはいません"
|
no-users: "よく話すユーザーはいません"
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.vue:
|
||||||
is-suspended: "このユーザーは凍結されています。"
|
is-suspended: "このユーザーは凍結されています。"
|
||||||
is-remote: "このユーザーはリモートユーザーです。"
|
is-remote: "このユーザーはリモートユーザーです。"
|
||||||
view-remote: "正確な情報を見る"
|
view-remote: "正確な情報を見る"
|
||||||
@ -636,6 +664,11 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "ミュートする"
|
mute: "ミュートする"
|
||||||
muted: "ミュートしています"
|
muted: "ミュートしています"
|
||||||
unmute: "ミュート解除"
|
unmute: "ミュート解除"
|
||||||
|
desktop/views/pages/user/user.header.vue:
|
||||||
|
posts: "投稿"
|
||||||
|
following: "フォロー"
|
||||||
|
followers: "フォロワー"
|
||||||
|
is-bot: "このアカウントはBotです"
|
||||||
desktop/views/pages/user/user.timeline.vue:
|
desktop/views/pages/user/user.timeline.vue:
|
||||||
default: "投稿"
|
default: "投稿"
|
||||||
with-replies: "投稿と返信"
|
with-replies: "投稿と返信"
|
||||||
@ -787,6 +820,7 @@ mobile/views/pages/following.vue:
|
|||||||
mobile/views/pages/home.vue:
|
mobile/views/pages/home.vue:
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
local: "ローカル"
|
local: "ローカル"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
global: "グローバル"
|
global: "グローバル"
|
||||||
mobile/views/pages/messaging.vue:
|
mobile/views/pages/messaging.vue:
|
||||||
messaging: "メッセージ"
|
messaging: "メッセージ"
|
||||||
@ -904,7 +938,4 @@ docs:
|
|||||||
props:
|
props:
|
||||||
name: "名前"
|
name: "名前"
|
||||||
type: "型"
|
type: "型"
|
||||||
optional: "オプション"
|
|
||||||
description: "説明"
|
description: "説明"
|
||||||
yes: "はい"
|
|
||||||
no: "いいえ"
|
|
||||||
|
@ -47,11 +47,22 @@ common:
|
|||||||
e: "ここに書いてください"
|
e: "ここに書いてください"
|
||||||
f: "あなたが書くのを待っています..."
|
f: "あなたが書くのを待っています..."
|
||||||
|
|
||||||
|
search: "検索"
|
||||||
delete: "削除"
|
delete: "削除"
|
||||||
loading: "読み込み中"
|
loading: "読み込み中"
|
||||||
ok: "わかった"
|
ok: "わかった"
|
||||||
|
update-available-title: "更新があります"
|
||||||
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
|
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
|
||||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
||||||
|
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||||
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||||
|
|
||||||
|
reversi:
|
||||||
|
drawn: "引き分け"
|
||||||
|
my-turn: "あなたのターンです"
|
||||||
|
opponent-turn: "相手のターンです"
|
||||||
|
turn-of: "{}のターンです"
|
||||||
|
past-turn-of: "{}のターン"
|
||||||
|
|
||||||
widgets:
|
widgets:
|
||||||
analog-clock: "アナログ時計"
|
analog-clock: "アナログ時計"
|
||||||
@ -82,6 +93,7 @@ common:
|
|||||||
widgets: "ウィジェット"
|
widgets: "ウィジェット"
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
local: "ローカル"
|
local: "ローカル"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
global: "グローバル"
|
global: "グローバル"
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
list: "リスト"
|
list: "リスト"
|
||||||
@ -269,6 +281,13 @@ common/views/widgets/memo.vue:
|
|||||||
memo: "ここに書いて!"
|
memo: "ここに書いて!"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
|
|
||||||
|
common/views/pages/follow.vue:
|
||||||
|
signed-in-as: "{}としてサインイン中"
|
||||||
|
following: "フォロー中"
|
||||||
|
follow: "フォロー"
|
||||||
|
request-pending: "フォロー許可待ち"
|
||||||
|
follow-request: "フォロー申請"
|
||||||
|
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
@ -384,7 +403,7 @@ desktop/views/components/friends-maker.vue:
|
|||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
|
|
||||||
desktop/views/components/game-window.vue:
|
desktop/views/components/game-window.vue:
|
||||||
game: "オセロ"
|
game: "リバーシ"
|
||||||
|
|
||||||
desktop/views/components/home.vue:
|
desktop/views/components/home.vue:
|
||||||
done: "完了"
|
done: "完了"
|
||||||
@ -422,6 +441,7 @@ desktop/views/components/notes.note.vue:
|
|||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "読み込みに失敗しました。"
|
error: "読み込みに失敗しました。"
|
||||||
retry: "リトライ"
|
retry: "リトライ"
|
||||||
|
load-more: "もっと読み込む"
|
||||||
|
|
||||||
desktop/views/components/notifications.vue:
|
desktop/views/components/notifications.vue:
|
||||||
more: "もっと見る"
|
more: "もっと見る"
|
||||||
@ -443,7 +463,7 @@ desktop/views/components/post-form.vue:
|
|||||||
attach-media-from-local: "PCからメディアを添付"
|
attach-media-from-local: "PCからメディアを添付"
|
||||||
attach-media-from-drive: "ドライブからメディアを添付"
|
attach-media-from-drive: "ドライブからメディアを添付"
|
||||||
attach-cancel: "添付取り消し"
|
attach-cancel: "添付取り消し"
|
||||||
insert-a-kao: "v(‘ω’)v"
|
insert-a-kao: "v('ω')v"
|
||||||
create-poll: "アンケートを作成"
|
create-poll: "アンケートを作成"
|
||||||
text-remain: "残り{}文字"
|
text-remain: "残り{}文字"
|
||||||
|
|
||||||
@ -494,6 +514,8 @@ desktop/views/components/settings.vue:
|
|||||||
|
|
||||||
display: "デザインと表示"
|
display: "デザインと表示"
|
||||||
customize: "ホームをカスタマイズ"
|
customize: "ホームをカスタマイズ"
|
||||||
|
choose-wallpaper: "壁紙を選択"
|
||||||
|
delete-wallpaper: "壁紙を削除"
|
||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||||
@ -603,6 +625,9 @@ desktop/views/components/settings.profile.vue:
|
|||||||
description: "自己紹介"
|
description: "自己紹介"
|
||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
|
locked-account: "アカウントの保護"
|
||||||
|
is-locked: "投稿を非公開にする"
|
||||||
|
other: "その他"
|
||||||
is-bot: "このアカウントはBotです"
|
is-bot: "このアカウントはBotです"
|
||||||
is-cat: "このアカウントはCatです"
|
is-cat: "このアカウントはCatです"
|
||||||
|
|
||||||
@ -618,16 +643,20 @@ desktop/views/components/taskmanager.vue:
|
|||||||
desktop/views/components/timeline.vue:
|
desktop/views/components/timeline.vue:
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
local: "ローカル"
|
local: "ローカル"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
global: "グローバル"
|
global: "グローバル"
|
||||||
list: "リスト"
|
list: "リスト"
|
||||||
|
|
||||||
|
desktop/views/components/ui.header.vue:
|
||||||
|
welcome-back: "おかえりなさい、"
|
||||||
|
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
drive: "ドライブ"
|
drive: "ドライブ"
|
||||||
favorites: "お気に入り"
|
favorites: "お気に入り"
|
||||||
lists: "リスト"
|
lists: "リスト"
|
||||||
follow-requests: "フォロー申請"
|
follow-requests: "フォロー申請"
|
||||||
customize: "カスタマイズ"
|
customize: "ホームのカスタマイズ"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
dark: "闇に飲まれる"
|
dark: "闇に飲まれる"
|
||||||
@ -677,6 +706,7 @@ desktop/views/components/window.vue:
|
|||||||
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: "メディアビュー"
|
||||||
|
edit: "オプション"
|
||||||
|
|
||||||
desktop/views/pages/deck/deck.note.vue:
|
desktop/views/pages/deck/deck.note.vue:
|
||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
@ -726,7 +756,7 @@ desktop/views/pages/user/user.friends.vue:
|
|||||||
loading: "読み込み中"
|
loading: "読み込み中"
|
||||||
no-users: "よく話すユーザーはいません"
|
no-users: "よく話すユーザーはいません"
|
||||||
|
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.vue:
|
||||||
is-suspended: "このユーザーは凍結されています。"
|
is-suspended: "このユーザーは凍結されています。"
|
||||||
is-remote: "このユーザーはリモートユーザーです。"
|
is-remote: "このユーザーはリモートユーザーです。"
|
||||||
view-remote: "正確な情報を見る"
|
view-remote: "正確な情報を見る"
|
||||||
@ -748,6 +778,12 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
muted: "ミュートしています"
|
muted: "ミュートしています"
|
||||||
unmute: "ミュート解除"
|
unmute: "ミュート解除"
|
||||||
|
|
||||||
|
desktop/views/pages/user/user.header.vue:
|
||||||
|
posts: "投稿"
|
||||||
|
following: "フォロー"
|
||||||
|
followers: "フォロワー"
|
||||||
|
is-bot: "このアカウントはBotです"
|
||||||
|
|
||||||
desktop/views/pages/user/user.timeline.vue:
|
desktop/views/pages/user/user.timeline.vue:
|
||||||
default: "投稿"
|
default: "投稿"
|
||||||
with-replies: "投稿と返信"
|
with-replies: "投稿と返信"
|
||||||
@ -931,6 +967,7 @@ mobile/views/pages/following.vue:
|
|||||||
mobile/views/pages/home.vue:
|
mobile/views/pages/home.vue:
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
local: "ローカル"
|
local: "ローカル"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
global: "グローバル"
|
global: "グローバル"
|
||||||
|
|
||||||
mobile/views/pages/messaging.vue:
|
mobile/views/pages/messaging.vue:
|
||||||
@ -1065,7 +1102,4 @@ docs:
|
|||||||
props:
|
props:
|
||||||
name: "名前"
|
name: "名前"
|
||||||
type: "型"
|
type: "型"
|
||||||
optional: "オプション"
|
|
||||||
description: "説明"
|
description: "説明"
|
||||||
yes: "はい"
|
|
||||||
no: "いいえ"
|
|
||||||
|
@ -3,7 +3,7 @@ meta:
|
|||||||
lang: "日本語"
|
lang: "日本語"
|
||||||
divider: ""
|
divider: ""
|
||||||
common:
|
common:
|
||||||
misskey: "A planet 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と相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
||||||
time:
|
time:
|
||||||
@ -42,11 +42,21 @@ common:
|
|||||||
d: "言いたいことは?"
|
d: "言いたいことは?"
|
||||||
e: "ここに書いてください"
|
e: "ここに書いてください"
|
||||||
f: "あなたが書くのを待っています..."
|
f: "あなたが書くのを待っています..."
|
||||||
|
search: "検索"
|
||||||
delete: "削除"
|
delete: "削除"
|
||||||
loading: "読み込み中"
|
loading: "読み込み中"
|
||||||
ok: "わかった"
|
ok: "わかった"
|
||||||
|
update-available-title: "更新があります"
|
||||||
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
|
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
|
||||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
||||||
|
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||||
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||||
|
reversi:
|
||||||
|
drawn: "引き分け"
|
||||||
|
my-turn: "あなたのターンです"
|
||||||
|
opponent-turn: "相手のターンです"
|
||||||
|
turn-of: "{}のターンです"
|
||||||
|
past-turn-of: "{}のターン"
|
||||||
widgets:
|
widgets:
|
||||||
analog-clock: "アナログ時計"
|
analog-clock: "アナログ時計"
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
@ -75,6 +85,7 @@ common:
|
|||||||
widgets: "ウィジェット"
|
widgets: "ウィジェット"
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
local: "ローカル"
|
local: "ローカル"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
global: "グローバル"
|
global: "グローバル"
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
list: "リスト"
|
list: "リスト"
|
||||||
@ -228,6 +239,7 @@ common/views/widgets/posts-monitor.vue:
|
|||||||
common/views/widgets/hashtags.vue:
|
common/views/widgets/hashtags.vue:
|
||||||
title: "ハッシュタグ"
|
title: "ハッシュタグ"
|
||||||
count: "{}人が投稿"
|
count: "{}人が投稿"
|
||||||
|
empty: "トレンドなし"
|
||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "サーバー情報"
|
title: "サーバー情報"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
@ -235,6 +247,12 @@ common/views/widgets/memo.vue:
|
|||||||
title: "付箋"
|
title: "付箋"
|
||||||
memo: "ここに書いて!"
|
memo: "ここに書いて!"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
|
common/views/pages/follow.vue:
|
||||||
|
signed-in-as: "{}としてサインイン中"
|
||||||
|
following: "フォロー中"
|
||||||
|
follow: "フォロー"
|
||||||
|
request-pending: "フォロー許可待ち"
|
||||||
|
follow-request: "フォロー申請"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
@ -333,7 +351,7 @@ desktop/views/components/friends-maker.vue:
|
|||||||
refresh: "もっと見る"
|
refresh: "もっと見る"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
desktop/views/components/game-window.vue:
|
desktop/views/components/game-window.vue:
|
||||||
game: "オセロ"
|
game: "リバーシ"
|
||||||
desktop/views/components/home.vue:
|
desktop/views/components/home.vue:
|
||||||
done: "完了"
|
done: "完了"
|
||||||
add-widget: "ウィジェットを追加:"
|
add-widget: "ウィジェットを追加:"
|
||||||
@ -364,6 +382,7 @@ desktop/views/components/notes.note.vue:
|
|||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "読み込みに失敗しました。"
|
error: "読み込みに失敗しました。"
|
||||||
retry: "リトライ"
|
retry: "リトライ"
|
||||||
|
load-more: "もっと読み込む"
|
||||||
desktop/views/components/notifications.vue:
|
desktop/views/components/notifications.vue:
|
||||||
more: "もっと見る"
|
more: "もっと見る"
|
||||||
empty: "ありません!"
|
empty: "ありません!"
|
||||||
@ -383,7 +402,7 @@ desktop/views/components/post-form.vue:
|
|||||||
attach-media-from-local: "PCからメディアを添付"
|
attach-media-from-local: "PCからメディアを添付"
|
||||||
attach-media-from-drive: "ドライブからメディアを添付"
|
attach-media-from-drive: "ドライブからメディアを添付"
|
||||||
attach-cancel: "添付取り消し"
|
attach-cancel: "添付取り消し"
|
||||||
insert-a-kao: "v(‘ω’)v"
|
insert-a-kao: "v('ω')v"
|
||||||
create-poll: "アンケートを作成"
|
create-poll: "アンケートを作成"
|
||||||
text-remain: "残り{}文字"
|
text-remain: "残り{}文字"
|
||||||
desktop/views/components/post-form-window.vue:
|
desktop/views/components/post-form-window.vue:
|
||||||
@ -426,6 +445,8 @@ desktop/views/components/settings.vue:
|
|||||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||||
display: "デザインと表示"
|
display: "デザインと表示"
|
||||||
customize: "ホームをカスタマイズ"
|
customize: "ホームをカスタマイズ"
|
||||||
|
choose-wallpaper: "壁紙を選択"
|
||||||
|
delete-wallpaper: "壁紙を削除"
|
||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||||
@ -521,6 +542,9 @@ desktop/views/components/settings.profile.vue:
|
|||||||
description: "自己紹介"
|
description: "自己紹介"
|
||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
|
locked-account: "アカウントの保護"
|
||||||
|
is-locked: "投稿を非公開にする"
|
||||||
|
other: "その他"
|
||||||
is-bot: "このアカウントはBotです"
|
is-bot: "このアカウントはBotです"
|
||||||
is-cat: "このアカウントはCatです"
|
is-cat: "このアカウントはCatです"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
@ -533,15 +557,18 @@ desktop/views/components/taskmanager.vue:
|
|||||||
desktop/views/components/timeline.vue:
|
desktop/views/components/timeline.vue:
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
local: "ローカル"
|
local: "ローカル"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
global: "グローバル"
|
global: "グローバル"
|
||||||
list: "リスト"
|
list: "リスト"
|
||||||
|
desktop/views/components/ui.header.vue:
|
||||||
|
welcome-back: "おかえりなさい、"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
drive: "ドライブ"
|
drive: "ドライブ"
|
||||||
favorites: "お気に入り"
|
favorites: "お気に入り"
|
||||||
lists: "リスト"
|
lists: "リスト"
|
||||||
follow-requests: "フォロー申請"
|
follow-requests: "フォロー申請"
|
||||||
customize: "カスタマイズ"
|
customize: "ホームのカスタマイズ"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
dark: "闇に飲まれる"
|
dark: "闇に飲まれる"
|
||||||
@ -580,6 +607,7 @@ desktop/views/components/window.vue:
|
|||||||
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: "メディアビュー"
|
||||||
|
edit: "オプション"
|
||||||
desktop/views/pages/deck/deck.note.vue:
|
desktop/views/pages/deck/deck.note.vue:
|
||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
@ -618,7 +646,7 @@ desktop/views/pages/user/user.friends.vue:
|
|||||||
title: "よく話すユーザー"
|
title: "よく話すユーザー"
|
||||||
loading: "読み込み中"
|
loading: "読み込み中"
|
||||||
no-users: "よく話すユーザーはいません"
|
no-users: "よく話すユーザーはいません"
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.vue:
|
||||||
is-suspended: "このユーザーは凍結されています。"
|
is-suspended: "このユーザーは凍結されています。"
|
||||||
is-remote: "このユーザーはリモートユーザーです。"
|
is-remote: "このユーザーはリモートユーザーです。"
|
||||||
view-remote: "正確な情報を見る"
|
view-remote: "正確な情報を見る"
|
||||||
@ -636,6 +664,11 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "ミュートする"
|
mute: "ミュートする"
|
||||||
muted: "ミュートしています"
|
muted: "ミュートしています"
|
||||||
unmute: "ミュート解除"
|
unmute: "ミュート解除"
|
||||||
|
desktop/views/pages/user/user.header.vue:
|
||||||
|
posts: "投稿"
|
||||||
|
following: "フォロー"
|
||||||
|
followers: "フォロワー"
|
||||||
|
is-bot: "このアカウントはBotです"
|
||||||
desktop/views/pages/user/user.timeline.vue:
|
desktop/views/pages/user/user.timeline.vue:
|
||||||
default: "投稿"
|
default: "投稿"
|
||||||
with-replies: "投稿と返信"
|
with-replies: "投稿と返信"
|
||||||
@ -787,6 +820,7 @@ mobile/views/pages/following.vue:
|
|||||||
mobile/views/pages/home.vue:
|
mobile/views/pages/home.vue:
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
local: "ローカル"
|
local: "ローカル"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
global: "グローバル"
|
global: "グローバル"
|
||||||
mobile/views/pages/messaging.vue:
|
mobile/views/pages/messaging.vue:
|
||||||
messaging: "メッセージ"
|
messaging: "メッセージ"
|
||||||
@ -904,7 +938,4 @@ docs:
|
|||||||
props:
|
props:
|
||||||
name: "名前"
|
name: "名前"
|
||||||
type: "型"
|
type: "型"
|
||||||
optional: "オプション"
|
|
||||||
description: "説明"
|
description: "説明"
|
||||||
yes: "はい"
|
|
||||||
no: "いいえ"
|
|
||||||
|
@ -3,7 +3,7 @@ meta:
|
|||||||
lang: "język polski"
|
lang: "język polski"
|
||||||
divider: ""
|
divider: ""
|
||||||
common:
|
common:
|
||||||
misskey: "Planeta 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?"
|
||||||
time:
|
time:
|
||||||
@ -42,11 +42,21 @@ common:
|
|||||||
d: "Czy masz coś do powiedzenia?"
|
d: "Czy masz coś do powiedzenia?"
|
||||||
e: "Napisz coś tutaj!"
|
e: "Napisz coś tutaj!"
|
||||||
f: "Czekamy, aż coś napiszesz."
|
f: "Czekamy, aż coś napiszesz."
|
||||||
|
search: "Szukaj"
|
||||||
delete: "Usuń"
|
delete: "Usuń"
|
||||||
loading: "Ładowanie"
|
loading: "Ładowanie"
|
||||||
ok: "OK"
|
ok: "OK"
|
||||||
|
update-available-title: "Aktualizacja jest dostępna"
|
||||||
update-available: "Nowa wersja Misskey jest dostępna ({newer}, obecna to {current}). Odśwież stronę, aby zastosować aktualizację."
|
update-available: "Nowa wersja Misskey jest dostępna ({newer}, obecna to {current}). Odśwież stronę, aby zastosować aktualizację."
|
||||||
my-token-regenerated: "Twój token został wygenerowany. Zostaniesz wylogowany."
|
my-token-regenerated: "Twój token został wygenerowany. Zostaniesz wylogowany."
|
||||||
|
i-like-sushi: "Wolę sushi od puddingu"
|
||||||
|
show-reversi-board-labels: "Pokazuj podpisy wierszy i kolumn w Reversi"
|
||||||
|
reversi:
|
||||||
|
drawn: "Remis"
|
||||||
|
my-turn: "Twoja kolej"
|
||||||
|
opponent-turn: "Kolej na przeciwnika"
|
||||||
|
turn-of: "Kolej na {}"
|
||||||
|
past-turn-of: "Kolej {}"
|
||||||
widgets:
|
widgets:
|
||||||
analog-clock: "Zegar analogowy"
|
analog-clock: "Zegar analogowy"
|
||||||
profile: "Profil"
|
profile: "Profil"
|
||||||
@ -75,6 +85,7 @@ common:
|
|||||||
widgets: "Widżety"
|
widgets: "Widżety"
|
||||||
home: "Strona główna"
|
home: "Strona główna"
|
||||||
local: "Lokalne"
|
local: "Lokalne"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
global: "Globalne"
|
global: "Globalne"
|
||||||
notifications: "Powiadomienia"
|
notifications: "Powiadomienia"
|
||||||
list: "Listy"
|
list: "Listy"
|
||||||
@ -85,8 +96,8 @@ common:
|
|||||||
remove: "Usuń"
|
remove: "Usuń"
|
||||||
add-column: "Dodaj kolumnę"
|
add-column: "Dodaj kolumnę"
|
||||||
rename: "Zmień nazwę"
|
rename: "Zmień nazwę"
|
||||||
stack-left: "左に重ねる"
|
stack-left: "Przypnij do lewej"
|
||||||
pop-right: "右に出す"
|
pop-right: "Odepnij w prawo"
|
||||||
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."
|
||||||
@ -228,6 +239,7 @@ common/views/widgets/posts-monitor.vue:
|
|||||||
common/views/widgets/hashtags.vue:
|
common/views/widgets/hashtags.vue:
|
||||||
title: "Hashtagi"
|
title: "Hashtagi"
|
||||||
count: "Wspomniany przez {} użytkowników"
|
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"
|
||||||
@ -235,6 +247,12 @@ common/views/widgets/memo.vue:
|
|||||||
title: "Notatka"
|
title: "Notatka"
|
||||||
memo: "Napisz tutaj!"
|
memo: "Napisz tutaj!"
|
||||||
save: "Zapisz"
|
save: "Zapisz"
|
||||||
|
common/views/pages/follow.vue:
|
||||||
|
signed-in-as: "Zalogowany jako {}"
|
||||||
|
following: "Śledzisz"
|
||||||
|
follow: "Śledź"
|
||||||
|
request-pending: "Oczekiwanie na pozwolenie"
|
||||||
|
follow-request: "Poproś o śledzenie"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Czarny … Łącznie"
|
total: "Czarny … Łącznie"
|
||||||
notes: "Niebieski … Wpisy"
|
notes: "Niebieski … Wpisy"
|
||||||
@ -333,7 +351,7 @@ desktop/views/components/friends-maker.vue:
|
|||||||
refresh: "Więcej"
|
refresh: "Więcej"
|
||||||
close: "Zamknij"
|
close: "Zamknij"
|
||||||
desktop/views/components/game-window.vue:
|
desktop/views/components/game-window.vue:
|
||||||
game: "Othello"
|
game: "Reversi"
|
||||||
desktop/views/components/home.vue:
|
desktop/views/components/home.vue:
|
||||||
done: "Wyślij"
|
done: "Wyślij"
|
||||||
add-widget: "Dodaj widżet:"
|
add-widget: "Dodaj widżet:"
|
||||||
@ -364,6 +382,7 @@ desktop/views/components/notes.note.vue:
|
|||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "Ładowanie nie powiodło się."
|
error: "Ładowanie nie powiodło się."
|
||||||
retry: "Spróbuj ponownie"
|
retry: "Spróbuj ponownie"
|
||||||
|
load-more: "Załaduj więcej"
|
||||||
desktop/views/components/notifications.vue:
|
desktop/views/components/notifications.vue:
|
||||||
more: "Więcej"
|
more: "Więcej"
|
||||||
empty: "Brak powiadomień"
|
empty: "Brak powiadomień"
|
||||||
@ -383,7 +402,7 @@ desktop/views/components/post-form.vue:
|
|||||||
attach-media-from-local: "Załącz zawartość multimedialną z komputera"
|
attach-media-from-local: "Załącz zawartość multimedialną z komputera"
|
||||||
attach-media-from-drive: "Załącz zawartość multimedialną z dysku"
|
attach-media-from-drive: "Załącz zawartość multimedialną z dysku"
|
||||||
attach-cancel: "Usuń załącznik"
|
attach-cancel: "Usuń załącznik"
|
||||||
insert-a-kao: "v(‘ω’)v"
|
insert-a-kao: "v('ω')v"
|
||||||
create-poll: "Utwórz ankietę"
|
create-poll: "Utwórz ankietę"
|
||||||
text-remain: "pozostałe znaki: {}"
|
text-remain: "pozostałe znaki: {}"
|
||||||
desktop/views/components/post-form-window.vue:
|
desktop/views/components/post-form-window.vue:
|
||||||
@ -426,6 +445,8 @@ desktop/views/components/settings.vue:
|
|||||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||||
display: "Wygląd i wyświetlanie"
|
display: "Wygląd i wyświetlanie"
|
||||||
customize: "Dostosuj stronę główną"
|
customize: "Dostosuj stronę główną"
|
||||||
|
choose-wallpaper: "Wybierz 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"
|
||||||
gradient-window-header: "Używaj gradientów na pasku tytułu okna"
|
gradient-window-header: "Używaj gradientów na pasku tytułu okna"
|
||||||
@ -521,6 +542,9 @@ desktop/views/components/settings.profile.vue:
|
|||||||
description: "Opis"
|
description: "Opis"
|
||||||
birthday: "Data urodzenia"
|
birthday: "Data urodzenia"
|
||||||
save: "Aktualizuj profil"
|
save: "Aktualizuj profil"
|
||||||
|
locked-account: "Zabezpiecz swoje konto"
|
||||||
|
is-locked: "Uczyń wpis prywatnym"
|
||||||
|
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"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
@ -533,15 +557,18 @@ desktop/views/components/taskmanager.vue:
|
|||||||
desktop/views/components/timeline.vue:
|
desktop/views/components/timeline.vue:
|
||||||
home: "Strona główna"
|
home: "Strona główna"
|
||||||
local: "Lokalne"
|
local: "Lokalne"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
global: "Globalne"
|
global: "Globalne"
|
||||||
list: "Listy"
|
list: "Listy"
|
||||||
|
desktop/views/components/ui.header.vue:
|
||||||
|
welcome-back: "Witaj ponownie,"
|
||||||
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"
|
||||||
favorites: "Ulubione"
|
favorites: "Ulubione"
|
||||||
lists: "Listy"
|
lists: "Listy"
|
||||||
follow-requests: "Prośby o śledzenie"
|
follow-requests: "Prośby o śledzenie"
|
||||||
customize: "Dostosuj"
|
customize: "Dostosuj stronę główną"
|
||||||
settings: "Ustawienia"
|
settings: "Ustawienia"
|
||||||
signout: "Wyloguj się"
|
signout: "Wyloguj się"
|
||||||
dark: "Sprowadź ciemność"
|
dark: "Sprowadź ciemność"
|
||||||
@ -580,6 +607,7 @@ desktop/views/components/window.vue:
|
|||||||
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"
|
||||||
|
edit: "Opcje"
|
||||||
desktop/views/pages/deck/deck.note.vue:
|
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"
|
||||||
@ -618,7 +646,7 @@ desktop/views/pages/user/user.friends.vue:
|
|||||||
title: "Najbardziej aktywni"
|
title: "Najbardziej aktywni"
|
||||||
loading: "Ładowanie"
|
loading: "Ładowanie"
|
||||||
no-users: "Brak użytkowników"
|
no-users: "Brak użytkowników"
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.vue:
|
||||||
is-suspended: "To konto zostało zawieszone."
|
is-suspended: "To konto zostało zawieszone."
|
||||||
is-remote: "To jest użytkownik zdalnej instancji, informacje mogą nie być w pełni dokładne."
|
is-remote: "To jest użytkownik zdalnej instancji, informacje mogą nie być w pełni dokładne."
|
||||||
view-remote: "Wyświetl dokładne informacje"
|
view-remote: "Wyświetl dokładne informacje"
|
||||||
@ -636,6 +664,11 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "Wycisz"
|
mute: "Wycisz"
|
||||||
muted: "Wyciszyłeś"
|
muted: "Wyciszyłeś"
|
||||||
unmute: "Cofnij wyciszenie"
|
unmute: "Cofnij wyciszenie"
|
||||||
|
desktop/views/pages/user/user.header.vue:
|
||||||
|
posts: "Wpisy"
|
||||||
|
following: "Śledzeni"
|
||||||
|
followers: "Śledzący"
|
||||||
|
is-bot: "To konto jest botem"
|
||||||
desktop/views/pages/user/user.timeline.vue:
|
desktop/views/pages/user/user.timeline.vue:
|
||||||
default: "Wpisy"
|
default: "Wpisy"
|
||||||
with-replies: "Wpisy i odpowiedzi"
|
with-replies: "Wpisy i odpowiedzi"
|
||||||
@ -787,6 +820,7 @@ mobile/views/pages/following.vue:
|
|||||||
mobile/views/pages/home.vue:
|
mobile/views/pages/home.vue:
|
||||||
home: "Strona główna"
|
home: "Strona główna"
|
||||||
local: "Lokalne"
|
local: "Lokalne"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
global: "Globalne"
|
global: "Globalne"
|
||||||
mobile/views/pages/messaging.vue:
|
mobile/views/pages/messaging.vue:
|
||||||
messaging: "Wiadomości"
|
messaging: "Wiadomości"
|
||||||
@ -904,7 +938,4 @@ docs:
|
|||||||
props:
|
props:
|
||||||
name: "Nazwa"
|
name: "Nazwa"
|
||||||
type: "Rodzaj"
|
type: "Rodzaj"
|
||||||
optional: "Nieobowiązkowy"
|
|
||||||
description: "Opis"
|
description: "Opis"
|
||||||
yes: "Tak"
|
|
||||||
no: "Nie"
|
|
||||||
|
@ -3,7 +3,7 @@ meta:
|
|||||||
lang: "Português"
|
lang: "Português"
|
||||||
divider: ""
|
divider: ""
|
||||||
common:
|
common:
|
||||||
misskey: "A planet 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と相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
||||||
time:
|
time:
|
||||||
@ -42,11 +42,21 @@ common:
|
|||||||
d: "言いたいことは?"
|
d: "言いたいことは?"
|
||||||
e: "ここに書いてください"
|
e: "ここに書いてください"
|
||||||
f: "あなたが書くのを待っています..."
|
f: "あなたが書くのを待っています..."
|
||||||
|
search: "検索"
|
||||||
delete: "削除"
|
delete: "削除"
|
||||||
loading: "読み込み中"
|
loading: "読み込み中"
|
||||||
ok: "わかった"
|
ok: "わかった"
|
||||||
|
update-available-title: "更新があります"
|
||||||
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
|
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
|
||||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
||||||
|
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||||
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||||
|
reversi:
|
||||||
|
drawn: "引き分け"
|
||||||
|
my-turn: "あなたのターンです"
|
||||||
|
opponent-turn: "相手のターンです"
|
||||||
|
turn-of: "{}のターンです"
|
||||||
|
past-turn-of: "{}のターン"
|
||||||
widgets:
|
widgets:
|
||||||
analog-clock: "アナログ時計"
|
analog-clock: "アナログ時計"
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
@ -75,6 +85,7 @@ common:
|
|||||||
widgets: "ウィジェット"
|
widgets: "ウィジェット"
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
local: "ローカル"
|
local: "ローカル"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
global: "グローバル"
|
global: "グローバル"
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
list: "リスト"
|
list: "リスト"
|
||||||
@ -228,6 +239,7 @@ common/views/widgets/posts-monitor.vue:
|
|||||||
common/views/widgets/hashtags.vue:
|
common/views/widgets/hashtags.vue:
|
||||||
title: "ハッシュタグ"
|
title: "ハッシュタグ"
|
||||||
count: "{}人が投稿"
|
count: "{}人が投稿"
|
||||||
|
empty: "トレンドなし"
|
||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "サーバー情報"
|
title: "サーバー情報"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
@ -235,6 +247,12 @@ common/views/widgets/memo.vue:
|
|||||||
title: "付箋"
|
title: "付箋"
|
||||||
memo: "ここに書いて!"
|
memo: "ここに書いて!"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
|
common/views/pages/follow.vue:
|
||||||
|
signed-in-as: "{}としてサインイン中"
|
||||||
|
following: "フォロー中"
|
||||||
|
follow: "フォロー"
|
||||||
|
request-pending: "フォロー許可待ち"
|
||||||
|
follow-request: "フォロー申請"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
@ -333,7 +351,7 @@ desktop/views/components/friends-maker.vue:
|
|||||||
refresh: "もっと見る"
|
refresh: "もっと見る"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
desktop/views/components/game-window.vue:
|
desktop/views/components/game-window.vue:
|
||||||
game: "オセロ"
|
game: "リバーシ"
|
||||||
desktop/views/components/home.vue:
|
desktop/views/components/home.vue:
|
||||||
done: "完了"
|
done: "完了"
|
||||||
add-widget: "ウィジェットを追加:"
|
add-widget: "ウィジェットを追加:"
|
||||||
@ -364,6 +382,7 @@ desktop/views/components/notes.note.vue:
|
|||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "読み込みに失敗しました。"
|
error: "読み込みに失敗しました。"
|
||||||
retry: "リトライ"
|
retry: "リトライ"
|
||||||
|
load-more: "もっと読み込む"
|
||||||
desktop/views/components/notifications.vue:
|
desktop/views/components/notifications.vue:
|
||||||
more: "もっと見る"
|
more: "もっと見る"
|
||||||
empty: "ありません!"
|
empty: "ありません!"
|
||||||
@ -383,7 +402,7 @@ desktop/views/components/post-form.vue:
|
|||||||
attach-media-from-local: "PCからメディアを添付"
|
attach-media-from-local: "PCからメディアを添付"
|
||||||
attach-media-from-drive: "ドライブからメディアを添付"
|
attach-media-from-drive: "ドライブからメディアを添付"
|
||||||
attach-cancel: "添付取り消し"
|
attach-cancel: "添付取り消し"
|
||||||
insert-a-kao: "v(‘ω’)v"
|
insert-a-kao: "v('ω')v"
|
||||||
create-poll: "アンケートを作成"
|
create-poll: "アンケートを作成"
|
||||||
text-remain: "残り{}文字"
|
text-remain: "残り{}文字"
|
||||||
desktop/views/components/post-form-window.vue:
|
desktop/views/components/post-form-window.vue:
|
||||||
@ -426,6 +445,8 @@ desktop/views/components/settings.vue:
|
|||||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||||
display: "デザインと表示"
|
display: "デザインと表示"
|
||||||
customize: "ホームをカスタマイズ"
|
customize: "ホームをカスタマイズ"
|
||||||
|
choose-wallpaper: "壁紙を選択"
|
||||||
|
delete-wallpaper: "壁紙を削除"
|
||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||||
@ -521,6 +542,9 @@ desktop/views/components/settings.profile.vue:
|
|||||||
description: "自己紹介"
|
description: "自己紹介"
|
||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
|
locked-account: "アカウントの保護"
|
||||||
|
is-locked: "投稿を非公開にする"
|
||||||
|
other: "その他"
|
||||||
is-bot: "このアカウントはBotです"
|
is-bot: "このアカウントはBotです"
|
||||||
is-cat: "このアカウントはCatです"
|
is-cat: "このアカウントはCatです"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
@ -533,15 +557,18 @@ desktop/views/components/taskmanager.vue:
|
|||||||
desktop/views/components/timeline.vue:
|
desktop/views/components/timeline.vue:
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
local: "ローカル"
|
local: "ローカル"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
global: "グローバル"
|
global: "グローバル"
|
||||||
list: "リスト"
|
list: "リスト"
|
||||||
|
desktop/views/components/ui.header.vue:
|
||||||
|
welcome-back: "おかえりなさい、"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
drive: "ドライブ"
|
drive: "ドライブ"
|
||||||
favorites: "お気に入り"
|
favorites: "お気に入り"
|
||||||
lists: "リスト"
|
lists: "リスト"
|
||||||
follow-requests: "フォロー申請"
|
follow-requests: "フォロー申請"
|
||||||
customize: "カスタマイズ"
|
customize: "ホームのカスタマイズ"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
dark: "闇に飲まれる"
|
dark: "闇に飲まれる"
|
||||||
@ -580,6 +607,7 @@ desktop/views/components/window.vue:
|
|||||||
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: "メディアビュー"
|
||||||
|
edit: "オプション"
|
||||||
desktop/views/pages/deck/deck.note.vue:
|
desktop/views/pages/deck/deck.note.vue:
|
||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
@ -618,7 +646,7 @@ desktop/views/pages/user/user.friends.vue:
|
|||||||
title: "よく話すユーザー"
|
title: "よく話すユーザー"
|
||||||
loading: "読み込み中"
|
loading: "読み込み中"
|
||||||
no-users: "よく話すユーザーはいません"
|
no-users: "よく話すユーザーはいません"
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.vue:
|
||||||
is-suspended: "このユーザーは凍結されています。"
|
is-suspended: "このユーザーは凍結されています。"
|
||||||
is-remote: "このユーザーはリモートユーザーです。"
|
is-remote: "このユーザーはリモートユーザーです。"
|
||||||
view-remote: "正確な情報を見る"
|
view-remote: "正確な情報を見る"
|
||||||
@ -636,6 +664,11 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "ミュートする"
|
mute: "ミュートする"
|
||||||
muted: "ミュートしています"
|
muted: "ミュートしています"
|
||||||
unmute: "ミュート解除"
|
unmute: "ミュート解除"
|
||||||
|
desktop/views/pages/user/user.header.vue:
|
||||||
|
posts: "投稿"
|
||||||
|
following: "フォロー"
|
||||||
|
followers: "フォロワー"
|
||||||
|
is-bot: "このアカウントはBotです"
|
||||||
desktop/views/pages/user/user.timeline.vue:
|
desktop/views/pages/user/user.timeline.vue:
|
||||||
default: "投稿"
|
default: "投稿"
|
||||||
with-replies: "投稿と返信"
|
with-replies: "投稿と返信"
|
||||||
@ -787,6 +820,7 @@ mobile/views/pages/following.vue:
|
|||||||
mobile/views/pages/home.vue:
|
mobile/views/pages/home.vue:
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
local: "ローカル"
|
local: "ローカル"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
global: "グローバル"
|
global: "グローバル"
|
||||||
mobile/views/pages/messaging.vue:
|
mobile/views/pages/messaging.vue:
|
||||||
messaging: "メッセージ"
|
messaging: "メッセージ"
|
||||||
@ -904,7 +938,4 @@ docs:
|
|||||||
props:
|
props:
|
||||||
name: "名前"
|
name: "名前"
|
||||||
type: "型"
|
type: "型"
|
||||||
optional: "オプション"
|
|
||||||
description: "説明"
|
description: "説明"
|
||||||
yes: "はい"
|
|
||||||
no: "いいえ"
|
|
||||||
|
@ -3,7 +3,7 @@ meta:
|
|||||||
lang: "Русский язык"
|
lang: "Русский язык"
|
||||||
divider: ""
|
divider: ""
|
||||||
common:
|
common:
|
||||||
misskey: "A planet 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と相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
||||||
time:
|
time:
|
||||||
@ -42,11 +42,21 @@ common:
|
|||||||
d: "言いたいことは?"
|
d: "言いたいことは?"
|
||||||
e: "ここに書いてください"
|
e: "ここに書いてください"
|
||||||
f: "あなたが書くのを待っています..."
|
f: "あなたが書くのを待っています..."
|
||||||
|
search: "検索"
|
||||||
delete: "削除"
|
delete: "削除"
|
||||||
loading: "読み込み中"
|
loading: "読み込み中"
|
||||||
ok: "わかった"
|
ok: "わかった"
|
||||||
|
update-available-title: "更新があります"
|
||||||
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
|
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
|
||||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
||||||
|
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||||
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||||
|
reversi:
|
||||||
|
drawn: "引き分け"
|
||||||
|
my-turn: "あなたのターンです"
|
||||||
|
opponent-turn: "相手のターンです"
|
||||||
|
turn-of: "{}のターンです"
|
||||||
|
past-turn-of: "{}のターン"
|
||||||
widgets:
|
widgets:
|
||||||
analog-clock: "アナログ時計"
|
analog-clock: "アナログ時計"
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
@ -75,6 +85,7 @@ common:
|
|||||||
widgets: "ウィジェット"
|
widgets: "ウィジェット"
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
local: "ローカル"
|
local: "ローカル"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
global: "グローバル"
|
global: "グローバル"
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
list: "リスト"
|
list: "リスト"
|
||||||
@ -228,6 +239,7 @@ common/views/widgets/posts-monitor.vue:
|
|||||||
common/views/widgets/hashtags.vue:
|
common/views/widgets/hashtags.vue:
|
||||||
title: "ハッシュタグ"
|
title: "ハッシュタグ"
|
||||||
count: "{}人が投稿"
|
count: "{}人が投稿"
|
||||||
|
empty: "トレンドなし"
|
||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "サーバー情報"
|
title: "サーバー情報"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
@ -235,6 +247,12 @@ common/views/widgets/memo.vue:
|
|||||||
title: "付箋"
|
title: "付箋"
|
||||||
memo: "ここに書いて!"
|
memo: "ここに書いて!"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
|
common/views/pages/follow.vue:
|
||||||
|
signed-in-as: "{}としてサインイン中"
|
||||||
|
following: "フォロー中"
|
||||||
|
follow: "フォロー"
|
||||||
|
request-pending: "フォロー許可待ち"
|
||||||
|
follow-request: "フォロー申請"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
@ -333,7 +351,7 @@ desktop/views/components/friends-maker.vue:
|
|||||||
refresh: "もっと見る"
|
refresh: "もっと見る"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
desktop/views/components/game-window.vue:
|
desktop/views/components/game-window.vue:
|
||||||
game: "オセロ"
|
game: "リバーシ"
|
||||||
desktop/views/components/home.vue:
|
desktop/views/components/home.vue:
|
||||||
done: "完了"
|
done: "完了"
|
||||||
add-widget: "ウィジェットを追加:"
|
add-widget: "ウィジェットを追加:"
|
||||||
@ -364,6 +382,7 @@ desktop/views/components/notes.note.vue:
|
|||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "読み込みに失敗しました。"
|
error: "読み込みに失敗しました。"
|
||||||
retry: "リトライ"
|
retry: "リトライ"
|
||||||
|
load-more: "もっと読み込む"
|
||||||
desktop/views/components/notifications.vue:
|
desktop/views/components/notifications.vue:
|
||||||
more: "もっと見る"
|
more: "もっと見る"
|
||||||
empty: "ありません!"
|
empty: "ありません!"
|
||||||
@ -383,7 +402,7 @@ desktop/views/components/post-form.vue:
|
|||||||
attach-media-from-local: "PCからメディアを添付"
|
attach-media-from-local: "PCからメディアを添付"
|
||||||
attach-media-from-drive: "ドライブからメディアを添付"
|
attach-media-from-drive: "ドライブからメディアを添付"
|
||||||
attach-cancel: "添付取り消し"
|
attach-cancel: "添付取り消し"
|
||||||
insert-a-kao: "v(‘ω’)v"
|
insert-a-kao: "v('ω')v"
|
||||||
create-poll: "アンケートを作成"
|
create-poll: "アンケートを作成"
|
||||||
text-remain: "残り{}文字"
|
text-remain: "残り{}文字"
|
||||||
desktop/views/components/post-form-window.vue:
|
desktop/views/components/post-form-window.vue:
|
||||||
@ -426,6 +445,8 @@ desktop/views/components/settings.vue:
|
|||||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||||
display: "デザインと表示"
|
display: "デザインと表示"
|
||||||
customize: "ホームをカスタマイズ"
|
customize: "ホームをカスタマイズ"
|
||||||
|
choose-wallpaper: "壁紙を選択"
|
||||||
|
delete-wallpaper: "壁紙を削除"
|
||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||||
@ -521,6 +542,9 @@ desktop/views/components/settings.profile.vue:
|
|||||||
description: "自己紹介"
|
description: "自己紹介"
|
||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
|
locked-account: "アカウントの保護"
|
||||||
|
is-locked: "投稿を非公開にする"
|
||||||
|
other: "その他"
|
||||||
is-bot: "このアカウントはBotです"
|
is-bot: "このアカウントはBotです"
|
||||||
is-cat: "このアカウントはCatです"
|
is-cat: "このアカウントはCatです"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
@ -533,15 +557,18 @@ desktop/views/components/taskmanager.vue:
|
|||||||
desktop/views/components/timeline.vue:
|
desktop/views/components/timeline.vue:
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
local: "ローカル"
|
local: "ローカル"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
global: "グローバル"
|
global: "グローバル"
|
||||||
list: "リスト"
|
list: "リスト"
|
||||||
|
desktop/views/components/ui.header.vue:
|
||||||
|
welcome-back: "おかえりなさい、"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
drive: "ドライブ"
|
drive: "ドライブ"
|
||||||
favorites: "お気に入り"
|
favorites: "お気に入り"
|
||||||
lists: "リスト"
|
lists: "リスト"
|
||||||
follow-requests: "フォロー申請"
|
follow-requests: "フォロー申請"
|
||||||
customize: "カスタマイズ"
|
customize: "ホームのカスタマイズ"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
dark: "闇に飲まれる"
|
dark: "闇に飲まれる"
|
||||||
@ -580,6 +607,7 @@ desktop/views/components/window.vue:
|
|||||||
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: "メディアビュー"
|
||||||
|
edit: "オプション"
|
||||||
desktop/views/pages/deck/deck.note.vue:
|
desktop/views/pages/deck/deck.note.vue:
|
||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
@ -618,7 +646,7 @@ desktop/views/pages/user/user.friends.vue:
|
|||||||
title: "よく話すユーザー"
|
title: "よく話すユーザー"
|
||||||
loading: "読み込み中"
|
loading: "読み込み中"
|
||||||
no-users: "よく話すユーザーはいません"
|
no-users: "よく話すユーザーはいません"
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.vue:
|
||||||
is-suspended: "このユーザーは凍結されています。"
|
is-suspended: "このユーザーは凍結されています。"
|
||||||
is-remote: "このユーザーはリモートユーザーです。"
|
is-remote: "このユーザーはリモートユーザーです。"
|
||||||
view-remote: "正確な情報を見る"
|
view-remote: "正確な情報を見る"
|
||||||
@ -636,6 +664,11 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "ミュートする"
|
mute: "ミュートする"
|
||||||
muted: "ミュートしています"
|
muted: "ミュートしています"
|
||||||
unmute: "ミュート解除"
|
unmute: "ミュート解除"
|
||||||
|
desktop/views/pages/user/user.header.vue:
|
||||||
|
posts: "投稿"
|
||||||
|
following: "フォロー"
|
||||||
|
followers: "フォロワー"
|
||||||
|
is-bot: "このアカウントはBotです"
|
||||||
desktop/views/pages/user/user.timeline.vue:
|
desktop/views/pages/user/user.timeline.vue:
|
||||||
default: "投稿"
|
default: "投稿"
|
||||||
with-replies: "投稿と返信"
|
with-replies: "投稿と返信"
|
||||||
@ -787,6 +820,7 @@ mobile/views/pages/following.vue:
|
|||||||
mobile/views/pages/home.vue:
|
mobile/views/pages/home.vue:
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
local: "ローカル"
|
local: "ローカル"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
global: "グローバル"
|
global: "グローバル"
|
||||||
mobile/views/pages/messaging.vue:
|
mobile/views/pages/messaging.vue:
|
||||||
messaging: "メッセージ"
|
messaging: "メッセージ"
|
||||||
@ -904,7 +938,4 @@ docs:
|
|||||||
props:
|
props:
|
||||||
name: "名前"
|
name: "名前"
|
||||||
type: "型"
|
type: "型"
|
||||||
optional: "オプション"
|
|
||||||
description: "説明"
|
description: "説明"
|
||||||
yes: "はい"
|
|
||||||
no: "いいえ"
|
|
||||||
|
@ -3,7 +3,7 @@ meta:
|
|||||||
lang: "中文(简体)"
|
lang: "中文(简体)"
|
||||||
divider: ""
|
divider: ""
|
||||||
common:
|
common:
|
||||||
misskey: "A planet 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と相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
||||||
time:
|
time:
|
||||||
@ -42,11 +42,21 @@ common:
|
|||||||
d: "言いたいことは?"
|
d: "言いたいことは?"
|
||||||
e: "ここに書いてください"
|
e: "ここに書いてください"
|
||||||
f: "あなたが書くのを待っています..."
|
f: "あなたが書くのを待っています..."
|
||||||
|
search: "検索"
|
||||||
delete: "削除"
|
delete: "削除"
|
||||||
loading: "読み込み中"
|
loading: "読み込み中"
|
||||||
ok: "わかった"
|
ok: "わかった"
|
||||||
|
update-available-title: "更新があります"
|
||||||
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
|
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
|
||||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
||||||
|
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||||
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||||
|
reversi:
|
||||||
|
drawn: "引き分け"
|
||||||
|
my-turn: "あなたのターンです"
|
||||||
|
opponent-turn: "相手のターンです"
|
||||||
|
turn-of: "{}のターンです"
|
||||||
|
past-turn-of: "{}のターン"
|
||||||
widgets:
|
widgets:
|
||||||
analog-clock: "アナログ時計"
|
analog-clock: "アナログ時計"
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
@ -75,6 +85,7 @@ common:
|
|||||||
widgets: "ウィジェット"
|
widgets: "ウィジェット"
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
local: "ローカル"
|
local: "ローカル"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
global: "グローバル"
|
global: "グローバル"
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
list: "リスト"
|
list: "リスト"
|
||||||
@ -228,6 +239,7 @@ common/views/widgets/posts-monitor.vue:
|
|||||||
common/views/widgets/hashtags.vue:
|
common/views/widgets/hashtags.vue:
|
||||||
title: "ハッシュタグ"
|
title: "ハッシュタグ"
|
||||||
count: "{}人が投稿"
|
count: "{}人が投稿"
|
||||||
|
empty: "トレンドなし"
|
||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "サーバー情報"
|
title: "サーバー情報"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
@ -235,6 +247,12 @@ common/views/widgets/memo.vue:
|
|||||||
title: "付箋"
|
title: "付箋"
|
||||||
memo: "ここに書いて!"
|
memo: "ここに書いて!"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
|
common/views/pages/follow.vue:
|
||||||
|
signed-in-as: "{}としてサインイン中"
|
||||||
|
following: "フォロー中"
|
||||||
|
follow: "フォロー"
|
||||||
|
request-pending: "フォロー許可待ち"
|
||||||
|
follow-request: "フォロー申請"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
@ -333,7 +351,7 @@ desktop/views/components/friends-maker.vue:
|
|||||||
refresh: "もっと見る"
|
refresh: "もっと見る"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
desktop/views/components/game-window.vue:
|
desktop/views/components/game-window.vue:
|
||||||
game: "オセロ"
|
game: "リバーシ"
|
||||||
desktop/views/components/home.vue:
|
desktop/views/components/home.vue:
|
||||||
done: "完了"
|
done: "完了"
|
||||||
add-widget: "ウィジェットを追加:"
|
add-widget: "ウィジェットを追加:"
|
||||||
@ -364,6 +382,7 @@ desktop/views/components/notes.note.vue:
|
|||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "読み込みに失敗しました。"
|
error: "読み込みに失敗しました。"
|
||||||
retry: "リトライ"
|
retry: "リトライ"
|
||||||
|
load-more: "もっと読み込む"
|
||||||
desktop/views/components/notifications.vue:
|
desktop/views/components/notifications.vue:
|
||||||
more: "もっと見る"
|
more: "もっと見る"
|
||||||
empty: "ありません!"
|
empty: "ありません!"
|
||||||
@ -383,7 +402,7 @@ desktop/views/components/post-form.vue:
|
|||||||
attach-media-from-local: "PCからメディアを添付"
|
attach-media-from-local: "PCからメディアを添付"
|
||||||
attach-media-from-drive: "ドライブからメディアを添付"
|
attach-media-from-drive: "ドライブからメディアを添付"
|
||||||
attach-cancel: "添付取り消し"
|
attach-cancel: "添付取り消し"
|
||||||
insert-a-kao: "v(‘ω’)v"
|
insert-a-kao: "v('ω')v"
|
||||||
create-poll: "アンケートを作成"
|
create-poll: "アンケートを作成"
|
||||||
text-remain: "残り{}文字"
|
text-remain: "残り{}文字"
|
||||||
desktop/views/components/post-form-window.vue:
|
desktop/views/components/post-form-window.vue:
|
||||||
@ -426,6 +445,8 @@ desktop/views/components/settings.vue:
|
|||||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||||
display: "デザインと表示"
|
display: "デザインと表示"
|
||||||
customize: "ホームをカスタマイズ"
|
customize: "ホームをカスタマイズ"
|
||||||
|
choose-wallpaper: "壁紙を選択"
|
||||||
|
delete-wallpaper: "壁紙を削除"
|
||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||||
@ -521,6 +542,9 @@ desktop/views/components/settings.profile.vue:
|
|||||||
description: "自己紹介"
|
description: "自己紹介"
|
||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
|
locked-account: "アカウントの保護"
|
||||||
|
is-locked: "投稿を非公開にする"
|
||||||
|
other: "その他"
|
||||||
is-bot: "このアカウントはBotです"
|
is-bot: "このアカウントはBotです"
|
||||||
is-cat: "このアカウントはCatです"
|
is-cat: "このアカウントはCatです"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
@ -533,15 +557,18 @@ desktop/views/components/taskmanager.vue:
|
|||||||
desktop/views/components/timeline.vue:
|
desktop/views/components/timeline.vue:
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
local: "ローカル"
|
local: "ローカル"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
global: "グローバル"
|
global: "グローバル"
|
||||||
list: "リスト"
|
list: "リスト"
|
||||||
|
desktop/views/components/ui.header.vue:
|
||||||
|
welcome-back: "おかえりなさい、"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
drive: "ドライブ"
|
drive: "ドライブ"
|
||||||
favorites: "お気に入り"
|
favorites: "お気に入り"
|
||||||
lists: "リスト"
|
lists: "リスト"
|
||||||
follow-requests: "フォロー申請"
|
follow-requests: "フォロー申請"
|
||||||
customize: "カスタマイズ"
|
customize: "ホームのカスタマイズ"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
dark: "闇に飲まれる"
|
dark: "闇に飲まれる"
|
||||||
@ -580,6 +607,7 @@ desktop/views/components/window.vue:
|
|||||||
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: "メディアビュー"
|
||||||
|
edit: "オプション"
|
||||||
desktop/views/pages/deck/deck.note.vue:
|
desktop/views/pages/deck/deck.note.vue:
|
||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
@ -618,7 +646,7 @@ desktop/views/pages/user/user.friends.vue:
|
|||||||
title: "よく話すユーザー"
|
title: "よく話すユーザー"
|
||||||
loading: "読み込み中"
|
loading: "読み込み中"
|
||||||
no-users: "よく話すユーザーはいません"
|
no-users: "よく話すユーザーはいません"
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.vue:
|
||||||
is-suspended: "このユーザーは凍結されています。"
|
is-suspended: "このユーザーは凍結されています。"
|
||||||
is-remote: "このユーザーはリモートユーザーです。"
|
is-remote: "このユーザーはリモートユーザーです。"
|
||||||
view-remote: "正確な情報を見る"
|
view-remote: "正確な情報を見る"
|
||||||
@ -636,6 +664,11 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "ミュートする"
|
mute: "ミュートする"
|
||||||
muted: "ミュートしています"
|
muted: "ミュートしています"
|
||||||
unmute: "ミュート解除"
|
unmute: "ミュート解除"
|
||||||
|
desktop/views/pages/user/user.header.vue:
|
||||||
|
posts: "投稿"
|
||||||
|
following: "フォロー"
|
||||||
|
followers: "フォロワー"
|
||||||
|
is-bot: "このアカウントはBotです"
|
||||||
desktop/views/pages/user/user.timeline.vue:
|
desktop/views/pages/user/user.timeline.vue:
|
||||||
default: "投稿"
|
default: "投稿"
|
||||||
with-replies: "投稿と返信"
|
with-replies: "投稿と返信"
|
||||||
@ -787,6 +820,7 @@ mobile/views/pages/following.vue:
|
|||||||
mobile/views/pages/home.vue:
|
mobile/views/pages/home.vue:
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
local: "ローカル"
|
local: "ローカル"
|
||||||
|
hybrid: "ソーシャル"
|
||||||
global: "グローバル"
|
global: "グローバル"
|
||||||
mobile/views/pages/messaging.vue:
|
mobile/views/pages/messaging.vue:
|
||||||
messaging: "メッセージ"
|
messaging: "メッセージ"
|
||||||
@ -904,7 +938,4 @@ docs:
|
|||||||
props:
|
props:
|
||||||
name: "名前"
|
name: "名前"
|
||||||
type: "型"
|
type: "型"
|
||||||
optional: "オプション"
|
|
||||||
description: "説明"
|
description: "説明"
|
||||||
yes: "はい"
|
|
||||||
no: "いいえ"
|
|
||||||
|
18135
package-lock.json
generated
Normal file
285
package.json
@ -1,13 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "misskey",
|
"name": "misskey",
|
||||||
"author": "syuilo <i@syuilo.com>",
|
"author": "syuilo <i@syuilo.com>",
|
||||||
"version": "3.0.1",
|
"version": "4.20.0",
|
||||||
"clientVersion": "1.0.6517",
|
"clientVersion": "1.0.7257",
|
||||||
"codename": "nighthike",
|
"codename": "nighthike",
|
||||||
"main": "./built/index.js",
|
"main": "./built/index.js",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"config": "node ./cli/init.js",
|
|
||||||
"start": "node ./built",
|
"start": "node ./built",
|
||||||
"debug": "DEBUG=misskey:* node ./built",
|
"debug": "DEBUG=misskey:* node ./built",
|
||||||
"swagger": "node ./swagger.js",
|
"swagger": "node ./swagger.js",
|
||||||
@ -23,29 +22,116 @@
|
|||||||
"format": "gulp format"
|
"format": "gulp format"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@fortawesome/fontawesome": "1.0.1",
|
"@fortawesome/fontawesome": "1.1.8",
|
||||||
"@fortawesome/fontawesome-free-brands": "5.0.2",
|
"@fortawesome/fontawesome-free-brands": "5.0.13",
|
||||||
"@fortawesome/fontawesome-free-regular": "5.0.2",
|
"@fortawesome/fontawesome-free-regular": "5.0.13",
|
||||||
"@fortawesome/fontawesome-free-solid": "5.0.2",
|
"@fortawesome/fontawesome-free-solid": "5.0.13",
|
||||||
"@koa/cors": "2.2.1",
|
"@koa/cors": "2.2.2",
|
||||||
"@prezzemolo/rap": "0.1.2",
|
"@prezzemolo/rap": "0.1.2",
|
||||||
|
"@prezzemolo/zip": "0.0.3",
|
||||||
|
"@types/bcryptjs": "2.4.1",
|
||||||
|
"@types/dateformat": "1.0.1",
|
||||||
|
"@types/debug": "0.0.30",
|
||||||
|
"@types/deep-equal": "1.0.1",
|
||||||
|
"@types/elasticsearch": "5.0.25",
|
||||||
|
"@types/file-type": "5.2.1",
|
||||||
|
"@types/gm": "1.18.0",
|
||||||
|
"@types/gulp": "3.8.36",
|
||||||
|
"@types/gulp-htmlmin": "1.3.32",
|
||||||
|
"@types/gulp-mocha": "0.0.32",
|
||||||
|
"@types/gulp-rename": "0.0.33",
|
||||||
|
"@types/gulp-replace": "0.0.31",
|
||||||
|
"@types/gulp-uglify": "3.0.5",
|
||||||
|
"@types/gulp-util": "3.0.34",
|
||||||
|
"@types/is-root": "1.0.0",
|
||||||
|
"@types/is-url": "1.2.28",
|
||||||
|
"@types/js-yaml": "3.11.2",
|
||||||
|
"@types/jsdom": "11.0.6",
|
||||||
|
"@types/koa": "2.0.46",
|
||||||
|
"@types/koa-bodyparser": "5.0.1",
|
||||||
|
"@types/koa-compress": "2.0.8",
|
||||||
|
"@types/koa-favicon": "2.0.19",
|
||||||
|
"@types/koa-logger": "3.1.0",
|
||||||
|
"@types/koa-mount": "3.0.1",
|
||||||
|
"@types/koa-multer": "1.0.0",
|
||||||
|
"@types/koa-router": "7.0.30",
|
||||||
|
"@types/koa-send": "4.1.1",
|
||||||
|
"@types/koa-views": "2.0.3",
|
||||||
|
"@types/koa__cors": "2.2.2",
|
||||||
|
"@types/kue": "0.11.9",
|
||||||
|
"@types/mkdirp": "0.5.2",
|
||||||
|
"@types/mocha": "5.2.3",
|
||||||
|
"@types/mongodb": "3.1.1",
|
||||||
|
"@types/ms": "0.7.30",
|
||||||
|
"@types/node": "10.5.2",
|
||||||
|
"@types/parse5": "5.0.0",
|
||||||
|
"@types/portscanner": "2.1.0",
|
||||||
|
"@types/pug": "2.0.4",
|
||||||
|
"@types/qrcode": "1.2.0",
|
||||||
|
"@types/ratelimiter": "2.1.28",
|
||||||
|
"@types/redis": "2.8.6",
|
||||||
|
"@types/request": "2.47.1",
|
||||||
|
"@types/request-promise-native": "1.0.15",
|
||||||
|
"@types/rimraf": "2.0.2",
|
||||||
|
"@types/seedrandom": "2.4.27",
|
||||||
|
"@types/showdown": "1.7.5",
|
||||||
|
"@types/single-line-log": "1.1.0",
|
||||||
|
"@types/speakeasy": "2.0.2",
|
||||||
|
"@types/tmp": "0.0.33",
|
||||||
|
"@types/uuid": "3.4.3",
|
||||||
|
"@types/webpack": "4.4.6",
|
||||||
|
"@types/webpack-stream": "3.2.10",
|
||||||
|
"@types/websocket": "0.0.39",
|
||||||
|
"@types/ws": "5.1.2",
|
||||||
|
"animejs": "2.2.0",
|
||||||
|
"autosize": "4.0.2",
|
||||||
"autwh": "0.1.0",
|
"autwh": "0.1.0",
|
||||||
"bcryptjs": "2.4.3",
|
"bcryptjs": "2.4.3",
|
||||||
"cafy": "8.0.0",
|
"bootstrap-vue": "2.0.0-rc.11",
|
||||||
|
"cafy": "11.3.0",
|
||||||
"chalk": "2.4.1",
|
"chalk": "2.4.1",
|
||||||
"crc-32": "1.2.0",
|
"crc-32": "1.2.0",
|
||||||
|
"css-loader": "1.0.0",
|
||||||
|
"dateformat": "3.0.3",
|
||||||
"debug": "3.1.0",
|
"debug": "3.1.0",
|
||||||
|
"deep-equal": "1.0.1",
|
||||||
"deepcopy": "0.6.3",
|
"deepcopy": "0.6.3",
|
||||||
"diskusage": "0.2.4",
|
"diskusage": "0.2.4",
|
||||||
"elasticsearch": "15.0.0",
|
"dompurify": "1.0.5",
|
||||||
|
"elasticsearch": "15.1.1",
|
||||||
|
"element-ui": "2.4.4",
|
||||||
"emojilib": "2.2.12",
|
"emojilib": "2.2.12",
|
||||||
"escape-regexp": "0.0.1",
|
"escape-regexp": "0.0.1",
|
||||||
"file-type": "8.0.0",
|
"eslint": "5.0.1",
|
||||||
|
"eslint-plugin-vue": "4.7.0",
|
||||||
|
"eventemitter3": "3.1.0",
|
||||||
|
"exif-js": "2.3.0",
|
||||||
|
"file-loader": "1.1.11",
|
||||||
|
"file-type": "8.1.0",
|
||||||
|
"fuckadblock": "3.2.1",
|
||||||
"gm": "1.23.1",
|
"gm": "1.23.1",
|
||||||
|
"gulp": "3.9.1",
|
||||||
|
"gulp-cssnano": "2.1.3",
|
||||||
|
"gulp-htmlmin": "4.0.0",
|
||||||
|
"gulp-imagemin": "4.1.0",
|
||||||
|
"gulp-mocha": "6.0.0",
|
||||||
|
"gulp-pug": "4.0.1",
|
||||||
|
"gulp-rename": "1.3.0",
|
||||||
|
"gulp-replace": "1.0.0",
|
||||||
|
"gulp-sourcemaps": "2.6.4",
|
||||||
|
"gulp-stylus": "2.7.0",
|
||||||
|
"gulp-tslint": "8.1.3",
|
||||||
|
"gulp-typescript": "4.0.2",
|
||||||
|
"gulp-uglify": "3.0.0",
|
||||||
|
"gulp-util": "3.0.8",
|
||||||
|
"hard-source-webpack-plugin": "0.11.1",
|
||||||
|
"highlight.js": "9.12.0",
|
||||||
|
"html-minifier": "3.5.19",
|
||||||
"http-signature": "1.2.0",
|
"http-signature": "1.2.0",
|
||||||
"is-root": "2.0.0",
|
"is-root": "2.0.0",
|
||||||
"is-url": "1.2.4",
|
"is-url": "1.2.4",
|
||||||
"js-yaml": "3.11.0",
|
"jquery": "3.3.1",
|
||||||
|
"js-yaml": "3.12.0",
|
||||||
"jsdom": "11.11.0",
|
"jsdom": "11.11.0",
|
||||||
"koa": "2.5.1",
|
"koa": "2.5.1",
|
||||||
"koa-bodyparser": "4.2.1",
|
"koa-bodyparser": "4.2.1",
|
||||||
@ -56,166 +142,87 @@
|
|||||||
"koa-mount": "3.0.0",
|
"koa-mount": "3.0.0",
|
||||||
"koa-multer": "1.0.2",
|
"koa-multer": "1.0.2",
|
||||||
"koa-router": "7.4.0",
|
"koa-router": "7.4.0",
|
||||||
"koa-send": "4.1.3",
|
"koa-send": "5.0.0",
|
||||||
"koa-slow": "2.1.0",
|
"koa-slow": "2.1.0",
|
||||||
"koa-views": "6.1.4",
|
"koa-views": "6.1.4",
|
||||||
"kue": "0.11.6",
|
"kue": "0.11.6",
|
||||||
"mongodb": "3.0.10",
|
|
||||||
"monk": "6.0.6",
|
|
||||||
"ms": "2.1.1",
|
|
||||||
"nopt": "4.0.1",
|
|
||||||
"os-utils": "0.0.14",
|
|
||||||
"parse5": "5.0.0",
|
|
||||||
"prominence": "0.2.0",
|
|
||||||
"promise-sequential": "1.1.1",
|
|
||||||
"punycode": "2.1.1",
|
|
||||||
"qrcode": "1.2.0",
|
|
||||||
"ratelimiter": "3.0.3",
|
|
||||||
"recaptcha-promise": "0.1.3",
|
|
||||||
"reconnecting-websocket": "3.2.2",
|
|
||||||
"redis": "2.8.0",
|
|
||||||
"request": "2.87.0",
|
|
||||||
"request-promise-native": "1.0.5",
|
|
||||||
"rndstr": "1.0.0",
|
|
||||||
"speakeasy": "2.0.0",
|
|
||||||
"summaly": "2.0.6",
|
|
||||||
"tcp-port-used": "0.1.2",
|
|
||||||
"tmp": "0.0.33",
|
|
||||||
"uuid": "3.2.1",
|
|
||||||
"web-push": "3.3.1",
|
|
||||||
"webfinger.js": "2.6.6",
|
|
||||||
"websocket": "1.0.26",
|
|
||||||
"ws": "5.2.0",
|
|
||||||
"xev": "2.0.1",
|
|
||||||
|
|
||||||
"@prezzemolo/zip": "0.0.3",
|
|
||||||
"@types/bcryptjs": "2.4.1",
|
|
||||||
"@types/debug": "0.0.30",
|
|
||||||
"@types/deep-equal": "1.0.1",
|
|
||||||
"@types/elasticsearch": "5.0.23",
|
|
||||||
"@types/gm": "1.18.0",
|
|
||||||
"@types/gulp": "3.8.36",
|
|
||||||
"@types/gulp-htmlmin": "1.3.32",
|
|
||||||
"@types/gulp-mocha": "0.0.32",
|
|
||||||
"@types/gulp-rename": "0.0.33",
|
|
||||||
"@types/gulp-replace": "0.0.31",
|
|
||||||
"@types/gulp-uglify": "3.0.5",
|
|
||||||
"@types/gulp-util": "3.0.34",
|
|
||||||
"@types/inquirer": "0.0.41",
|
|
||||||
"@types/is-root": "1.0.0",
|
|
||||||
"@types/is-url": "1.2.28",
|
|
||||||
"@types/js-yaml": "3.11.1",
|
|
||||||
"@types/koa": "2.0.45",
|
|
||||||
"@types/koa-bodyparser": "4.2.0",
|
|
||||||
"@types/koa-compress": "2.0.8",
|
|
||||||
"@types/koa-favicon": "2.0.19",
|
|
||||||
"@types/koa-logger": "3.1.0",
|
|
||||||
"@types/koa-mount": "3.0.1",
|
|
||||||
"@types/koa-multer": "1.0.0",
|
|
||||||
"@types/koa-router": "7.0.28",
|
|
||||||
"@types/koa-send": "4.1.1",
|
|
||||||
"@types/koa-views": "2.0.3",
|
|
||||||
"@types/koa__cors": "2.2.2",
|
|
||||||
"@types/kue": "0.11.8",
|
|
||||||
"@types/license-checker": "15.0.0",
|
|
||||||
"@types/mkdirp": "0.5.2",
|
|
||||||
"@types/mocha": "5.2.0",
|
|
||||||
"@types/mongodb": "3.0.18",
|
|
||||||
"@types/ms": "0.7.30",
|
|
||||||
"@types/node": "10.1.2",
|
|
||||||
"@types/nopt": "3.0.29",
|
|
||||||
"@types/parse5": "3.0.0",
|
|
||||||
"@types/pug": "2.0.4",
|
|
||||||
"@types/qrcode": "0.8.1",
|
|
||||||
"@types/ratelimiter": "2.1.28",
|
|
||||||
"@types/redis": "2.8.6",
|
|
||||||
"@types/request": "2.47.0",
|
|
||||||
"@types/request-promise-native": "1.0.14",
|
|
||||||
"@types/rimraf": "2.0.2",
|
|
||||||
"@types/seedrandom": "2.4.27",
|
|
||||||
"@types/single-line-log": "1.1.0",
|
|
||||||
"@types/speakeasy": "2.0.2",
|
|
||||||
"@types/tmp": "0.0.33",
|
|
||||||
"@types/uuid": "3.4.3",
|
|
||||||
"@types/webpack": "4.4.0",
|
|
||||||
"@types/webpack-stream": "3.2.10",
|
|
||||||
"@types/websocket": "0.0.39",
|
|
||||||
"@types/ws": "5.1.1",
|
|
||||||
"animejs": "2.2.0",
|
|
||||||
"autosize": "4.0.2",
|
|
||||||
"bootstrap-vue": "2.0.0-rc.6",
|
|
||||||
"css-loader": "0.28.11",
|
|
||||||
"deep-equal": "1.0.1",
|
|
||||||
"dompurify": "1.0.4",
|
|
||||||
"element-ui": "2.3.9",
|
|
||||||
"eslint": "4.19.1",
|
|
||||||
"eslint-plugin-vue": "4.5.0",
|
|
||||||
"eventemitter3": "3.1.0",
|
|
||||||
"exif-js": "2.3.0",
|
|
||||||
"file-loader": "1.1.11",
|
|
||||||
"fuckadblock": "3.2.1",
|
|
||||||
"gulp": "3.9.1",
|
|
||||||
"gulp-cssnano": "2.1.3",
|
|
||||||
"gulp-htmlmin": "4.0.0",
|
|
||||||
"gulp-imagemin": "4.1.0",
|
|
||||||
"gulp-mocha": "6.0.0",
|
|
||||||
"gulp-pug": "4.0.1",
|
|
||||||
"gulp-rename": "1.2.3",
|
|
||||||
"gulp-replace": "1.0.0",
|
|
||||||
"gulp-sourcemaps": "2.6.4",
|
|
||||||
"gulp-stylus": "2.7.0",
|
|
||||||
"gulp-tslint": "8.1.3",
|
|
||||||
"gulp-typescript": "4.0.2",
|
|
||||||
"gulp-uglify": "3.0.0",
|
|
||||||
"gulp-util": "3.0.8",
|
|
||||||
"hard-source-webpack-plugin": "0.6.10",
|
|
||||||
"highlight.js": "9.12.0",
|
|
||||||
"html-minifier": "3.5.16",
|
|
||||||
"inquirer": "5.2.0",
|
|
||||||
"license-checker": "20.0.0",
|
|
||||||
"loader-utils": "1.1.0",
|
"loader-utils": "1.1.0",
|
||||||
"mecab-async": "0.1.2",
|
"mecab-async": "0.1.2",
|
||||||
"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",
|
||||||
|
"monk": "6.0.6",
|
||||||
|
"ms": "2.1.1",
|
||||||
"nan": "2.10.0",
|
"nan": "2.10.0",
|
||||||
"node-sass": "4.9.0",
|
"node-sass": "4.9.2",
|
||||||
"node-sass-json-importer": "3.2.0",
|
"node-sass-json-importer": "3.3.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",
|
||||||
|
"parse5": "5.0.0",
|
||||||
|
"portscanner": "2.2.0",
|
||||||
"progress-bar-webpack-plugin": "1.11.0",
|
"progress-bar-webpack-plugin": "1.11.0",
|
||||||
|
"prominence": "0.2.0",
|
||||||
|
"promise-sequential": "1.1.1",
|
||||||
"pug": "2.0.3",
|
"pug": "2.0.3",
|
||||||
|
"punycode": "2.1.1",
|
||||||
|
"qrcode": "1.2.0",
|
||||||
|
"ratelimiter": "3.1.0",
|
||||||
|
"recaptcha-promise": "0.1.3",
|
||||||
|
"reconnecting-websocket": "3.2.2",
|
||||||
|
"redis": "2.8.0",
|
||||||
|
"request": "2.87.0",
|
||||||
|
"request-promise-native": "1.0.5",
|
||||||
"rimraf": "2.6.2",
|
"rimraf": "2.6.2",
|
||||||
|
"rndstr": "1.0.0",
|
||||||
"s-age": "1.1.2",
|
"s-age": "1.1.2",
|
||||||
"sass-loader": "7.0.1",
|
"sass-loader": "7.0.3",
|
||||||
"seedrandom": "2.4.3",
|
"seedrandom": "2.4.3",
|
||||||
|
"showdown": "1.8.6",
|
||||||
"single-line-log": "1.1.2",
|
"single-line-log": "1.1.2",
|
||||||
|
"speakeasy": "2.0.0",
|
||||||
"style-loader": "0.21.0",
|
"style-loader": "0.21.0",
|
||||||
"stylus": "0.54.5",
|
"stylus": "0.54.5",
|
||||||
"stylus-loader": "3.0.2",
|
"stylus-loader": "3.0.2",
|
||||||
|
"summaly": "2.0.6",
|
||||||
"swagger-jsdoc": "1.9.7",
|
"swagger-jsdoc": "1.9.7",
|
||||||
"syuilo-password-strength": "0.0.1",
|
"syuilo-password-strength": "0.0.1",
|
||||||
"textarea-caret": "3.1.0",
|
"textarea-caret": "3.1.0",
|
||||||
"ts-loader": "4.3.0",
|
"tmp": "0.0.33",
|
||||||
"ts-node": "6.0.4",
|
"ts-loader": "4.4.1",
|
||||||
|
"ts-node": "7.0.0",
|
||||||
"tslint": "5.10.0",
|
"tslint": "5.10.0",
|
||||||
"typescript": "2.8.3",
|
"typescript": "2.9.2",
|
||||||
"typescript-eslint-parser": "15.0.0",
|
"typescript-eslint-parser": "16.0.1",
|
||||||
"uglify-es": "3.3.9",
|
"uglify-es": "3.3.9",
|
||||||
"url-loader": "1.0.1",
|
"url-loader": "1.0.1",
|
||||||
|
"uuid": "3.3.2",
|
||||||
"v-animate-css": "0.0.2",
|
"v-animate-css": "0.0.2",
|
||||||
"vue": "2.5.16",
|
"vue": "2.5.16",
|
||||||
"vue-cropperjs": "2.2.0",
|
"vue-cropperjs": "2.2.1",
|
||||||
"vue-js-modal": "1.3.13",
|
"vue-js-modal": "1.3.16",
|
||||||
"vue-json-tree-view": "2.1.4",
|
"vue-json-tree-view": "2.1.4",
|
||||||
"vue-loader": "15.2.1",
|
"vue-loader": "15.2.4",
|
||||||
"vue-router": "3.0.1",
|
"vue-router": "3.0.1",
|
||||||
"vue-template-compiler": "2.5.16",
|
"vue-template-compiler": "2.5.16",
|
||||||
"vuedraggable": "2.16.0",
|
"vuedraggable": "2.16.0",
|
||||||
"vuex": "3.0.1",
|
"vuex": "3.0.1",
|
||||||
"vuex-persistedstate": "^2.5.4",
|
"vuex-persistedstate": "2.5.4",
|
||||||
"webpack": "4.9.1",
|
"web-push": "3.3.2",
|
||||||
"webpack-cli": "2.1.4"
|
"webfinger.js": "2.6.6",
|
||||||
|
"webpack": "4.16.0",
|
||||||
|
"webpack-cli": "3.0.8",
|
||||||
|
"websocket": "1.0.26",
|
||||||
|
"ws": "5.2.2",
|
||||||
|
"xev": "2.0.1"
|
||||||
|
},
|
||||||
|
"greenkeeper": {
|
||||||
|
"ignore": [
|
||||||
|
"deepcopy",
|
||||||
|
"cafy",
|
||||||
|
"@types/gulp"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,16 +0,0 @@
|
|||||||
export default function(note) {
|
|
||||||
if (note.text == null) return true;
|
|
||||||
|
|
||||||
let txt = note.text;
|
|
||||||
|
|
||||||
if (note.media) {
|
|
||||||
note.media.forEach(file => {
|
|
||||||
txt = txt.replace(file.url, '');
|
|
||||||
if (file.src) txt = txt.replace(file.src, '');
|
|
||||||
});
|
|
||||||
|
|
||||||
if (txt == '') return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
@ -23,7 +23,10 @@ export default async function(mios: MiOS, force = false, silent = false) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!silent) {
|
if (!silent) {
|
||||||
alert('%i18n:common.update-available%'.replace('{newer}', newer).replace('{current}', current));
|
mios.apis.dialog({
|
||||||
|
title: '%i18n:common.update-available-title%',
|
||||||
|
text: '%i18n:common.update-available%'.replace('{newer}', newer).replace('{current}', current)
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
return newer;
|
return newer;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import getNoteSummary from '../../../../renderers/get-note-summary';
|
import getNoteSummary from '../../../../misc/get-note-summary';
|
||||||
import getReactionEmoji from '../../../../renderers/get-reaction-emoji';
|
import getReactionEmoji from '../../../../misc/get-reaction-emoji';
|
||||||
import getUserName from '../../../../renderers/get-user-name';
|
import getUserName from '../../../../misc/get-user-name';
|
||||||
|
|
||||||
type Notification = {
|
type Notification = {
|
||||||
title: string;
|
title: string;
|
||||||
@ -20,34 +20,6 @@ export default function(type, data): Notification {
|
|||||||
icon: data.url + '?thumbnail&size=64'
|
icon: data.url + '?thumbnail&size=64'
|
||||||
};
|
};
|
||||||
|
|
||||||
case 'mention':
|
|
||||||
return {
|
|
||||||
title: `${getUserName(data.user)}さんから:`,
|
|
||||||
body: getNoteSummary(data),
|
|
||||||
icon: data.user.avatarUrl + '?thumbnail&size=64'
|
|
||||||
};
|
|
||||||
|
|
||||||
case 'reply':
|
|
||||||
return {
|
|
||||||
title: `${getUserName(data.user)}さんから返信:`,
|
|
||||||
body: getNoteSummary(data),
|
|
||||||
icon: data.user.avatarUrl + '?thumbnail&size=64'
|
|
||||||
};
|
|
||||||
|
|
||||||
case 'quote':
|
|
||||||
return {
|
|
||||||
title: `${getUserName(data.user)}さんが引用:`,
|
|
||||||
body: getNoteSummary(data),
|
|
||||||
icon: data.user.avatarUrl + '?thumbnail&size=64'
|
|
||||||
};
|
|
||||||
|
|
||||||
case 'reaction':
|
|
||||||
return {
|
|
||||||
title: `${getUserName(data.user)}: ${getReactionEmoji(data.reaction)}:`,
|
|
||||||
body: getNoteSummary(data.note),
|
|
||||||
icon: data.user.avatarUrl + '?thumbnail&size=64'
|
|
||||||
};
|
|
||||||
|
|
||||||
case 'unread_messaging_message':
|
case 'unread_messaging_message':
|
||||||
return {
|
return {
|
||||||
title: `${getUserName(data.user)}さんからメッセージ:`,
|
title: `${getUserName(data.user)}さんからメッセージ:`,
|
||||||
@ -55,13 +27,47 @@ export default function(type, data): Notification {
|
|||||||
icon: data.user.avatarUrl + '?thumbnail&size=64'
|
icon: data.user.avatarUrl + '?thumbnail&size=64'
|
||||||
};
|
};
|
||||||
|
|
||||||
case 'othello_invited':
|
case 'reversi_invited':
|
||||||
return {
|
return {
|
||||||
title: '対局への招待があります',
|
title: '対局への招待があります',
|
||||||
body: `${getUserName(data.parent)}さんから`,
|
body: `${getUserName(data.parent)}さんから`,
|
||||||
icon: data.parent.avatarUrl + '?thumbnail&size=64'
|
icon: data.parent.avatarUrl + '?thumbnail&size=64'
|
||||||
};
|
};
|
||||||
|
|
||||||
|
case 'notification':
|
||||||
|
switch (data.type) {
|
||||||
|
case 'mention':
|
||||||
|
return {
|
||||||
|
title: `${getUserName(data.user)}さんから:`,
|
||||||
|
body: getNoteSummary(data),
|
||||||
|
icon: data.user.avatarUrl + '?thumbnail&size=64'
|
||||||
|
};
|
||||||
|
|
||||||
|
case 'reply':
|
||||||
|
return {
|
||||||
|
title: `${getUserName(data.user)}さんから返信:`,
|
||||||
|
body: getNoteSummary(data),
|
||||||
|
icon: data.user.avatarUrl + '?thumbnail&size=64'
|
||||||
|
};
|
||||||
|
|
||||||
|
case 'quote':
|
||||||
|
return {
|
||||||
|
title: `${getUserName(data.user)}さんが引用:`,
|
||||||
|
body: getNoteSummary(data),
|
||||||
|
icon: data.user.avatarUrl + '?thumbnail&size=64'
|
||||||
|
};
|
||||||
|
|
||||||
|
case 'reaction':
|
||||||
|
return {
|
||||||
|
title: `${getUserName(data.user)}: ${getReactionEmoji(data.reaction)}:`,
|
||||||
|
body: getNoteSummary(data.note),
|
||||||
|
icon: data.user.avatarUrl + '?thumbnail&size=64'
|
||||||
|
};
|
||||||
|
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
export default () => [
|
export default () => [
|
||||||
'(=^・・^=)',
|
'(=^・・^=)',
|
||||||
'v(‘ω’)v',
|
'v(\'ω\')v',
|
||||||
'🐡( \'-\' 🐡 )フグパンチ!!!!'
|
'🐡( \'-\' 🐡 )フグパンチ!!!!'
|
||||||
][Math.floor(Math.random() * 3)];
|
][Math.floor(Math.random() * 3)];
|
||||||
|
@ -0,0 +1,11 @@
|
|||||||
|
import Stream from '../../stream';
|
||||||
|
import MiOS from '../../../../../mios';
|
||||||
|
|
||||||
|
export class ReversiGameStream extends Stream {
|
||||||
|
constructor(os: MiOS, me, game) {
|
||||||
|
super(os, 'games/reversi-game', {
|
||||||
|
i: me ? me.token : null,
|
||||||
|
game: game.id
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
import StreamManager from '../../stream-manager';
|
||||||
|
import Stream from '../../stream';
|
||||||
|
import MiOS from '../../../../../mios';
|
||||||
|
|
||||||
|
export class ReversiStream extends Stream {
|
||||||
|
constructor(os: MiOS, me) {
|
||||||
|
super(os, 'games/reversi', {
|
||||||
|
i: me.token
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class ReversiStreamManager extends StreamManager<ReversiStream> {
|
||||||
|
private me;
|
||||||
|
private os: MiOS;
|
||||||
|
|
||||||
|
constructor(os: MiOS, me) {
|
||||||
|
super();
|
||||||
|
|
||||||
|
this.me = me;
|
||||||
|
this.os = os;
|
||||||
|
}
|
||||||
|
|
||||||
|
public getConnection() {
|
||||||
|
if (this.connection == null) {
|
||||||
|
this.connection = new ReversiStream(this.os, this.me);
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.connection;
|
||||||
|
}
|
||||||
|
}
|
@ -1,16 +1,19 @@
|
|||||||
import StreamManager from './stream-manager';
|
|
||||||
import Stream from './stream';
|
import Stream from './stream';
|
||||||
|
import StreamManager from './stream-manager';
|
||||||
import MiOS from '../../../mios';
|
import MiOS from '../../../mios';
|
||||||
|
|
||||||
export class OthelloStream extends Stream {
|
/**
|
||||||
|
* Hybrid timeline stream connection
|
||||||
|
*/
|
||||||
|
export class HybridTimelineStream extends Stream {
|
||||||
constructor(os: MiOS, me) {
|
constructor(os: MiOS, me) {
|
||||||
super(os, 'othello', {
|
super(os, 'hybrid-timeline', {
|
||||||
i: me.token
|
i: me.token
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class OthelloStreamManager extends StreamManager<OthelloStream> {
|
export class HybridTimelineStreamManager extends StreamManager<HybridTimelineStream> {
|
||||||
private me;
|
private me;
|
||||||
private os: MiOS;
|
private os: MiOS;
|
||||||
|
|
||||||
@ -23,7 +26,7 @@ export class OthelloStreamManager extends StreamManager<OthelloStream> {
|
|||||||
|
|
||||||
public getConnection() {
|
public getConnection() {
|
||||||
if (this.connection == null) {
|
if (this.connection == null) {
|
||||||
this.connection = new OthelloStream(this.os, this.me);
|
this.connection = new HybridTimelineStream(this.os, this.me);
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.connection;
|
return this.connection;
|
@ -1,11 +0,0 @@
|
|||||||
import Stream from './stream';
|
|
||||||
import MiOS from '../../../mios';
|
|
||||||
|
|
||||||
export class OthelloGameStream extends Stream {
|
|
||||||
constructor(os: MiOS, me, game) {
|
|
||||||
super(os, 'othello-game', {
|
|
||||||
i: me ? me.token : null,
|
|
||||||
game: game.id
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
@ -228,12 +228,12 @@ export default Vue.extend({
|
|||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
@import '~const.styl'
|
@import '~const.styl'
|
||||||
|
|
||||||
.mk-autocomplete
|
root(isDark)
|
||||||
position fixed
|
position fixed
|
||||||
z-index 65535
|
z-index 65535
|
||||||
margin-top calc(1em + 8px)
|
margin-top calc(1em + 8px)
|
||||||
overflow hidden
|
overflow hidden
|
||||||
background #fff
|
background isDark ? #313543 : #fff
|
||||||
border solid 1px rgba(#000, 0.1)
|
border solid 1px rgba(#000, 0.1)
|
||||||
border-radius 4px
|
border-radius 4px
|
||||||
transition top 0.1s ease, left 0.1s ease
|
transition top 0.1s ease, left 0.1s ease
|
||||||
@ -284,11 +284,13 @@ export default Vue.extend({
|
|||||||
border-radius 100%
|
border-radius 100%
|
||||||
|
|
||||||
.name
|
.name
|
||||||
|
vertical-align middle
|
||||||
margin 0 8px 0 0
|
margin 0 8px 0 0
|
||||||
color rgba(#000, 0.8)
|
color isDark ? rgba(#fff, 0.8) : rgba(#000, 0.8)
|
||||||
|
|
||||||
.username
|
.username
|
||||||
color rgba(#000, 0.3)
|
vertical-align middle
|
||||||
|
color isDark ? rgba(#fff, 0.3) : rgba(#000, 0.3)
|
||||||
|
|
||||||
> .emojis > li
|
> .emojis > li
|
||||||
|
|
||||||
@ -304,4 +306,9 @@ export default Vue.extend({
|
|||||||
margin 0 0 0 8px
|
margin 0 0 0 8px
|
||||||
color rgba(#000, 0.3)
|
color rgba(#000, 0.3)
|
||||||
|
|
||||||
|
.mk-autocomplete[data-darkmode]
|
||||||
|
root(true)
|
||||||
|
|
||||||
|
.mk-autocomplete:not([data-darkmode])
|
||||||
|
root(false)
|
||||||
</style>
|
</style>
|
||||||
|
@ -3,24 +3,39 @@
|
|||||||
<header><b>{{ blackUser.name }}</b>(黒) vs <b>{{ whiteUser.name }}</b>(白)</header>
|
<header><b>{{ blackUser.name }}</b>(黒) vs <b>{{ whiteUser.name }}</b>(白)</header>
|
||||||
|
|
||||||
<div style="overflow: hidden">
|
<div style="overflow: hidden">
|
||||||
<p class="turn" v-if="!iAmPlayer && !game.isEnded">{{ turnUser.name }}のターンです<mk-ellipsis/></p>
|
<p class="turn" v-if="!iAmPlayer && !game.isEnded">{{ '%i18n:common.reversi.turn-of%'.replace('{}', turnUser.name) }}<mk-ellipsis/></p>
|
||||||
<p class="turn" v-if="logPos != logs.length">{{ turnUser.name }}のターン</p>
|
<p class="turn" v-if="logPos != logs.length">{{ '%i18n:common.reversi.past-turn-of%'.replace('{}', turnUser.name) }}</p>
|
||||||
<p class="turn1" v-if="iAmPlayer && !game.isEnded && !isMyTurn">相手のターンです<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' }">あなたのターンです</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"><b>{{ game.winner.name }}</b>の勝ち{{ game.settings.isLlotheo ? ' (ロセオ)' : '' }}</template>
|
||||||
<template v-else>引き分け</template>
|
<template v-else>%i18n:common.reversi.drawn%</template>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="board" :style="{ 'grid-template-rows': `repeat(${ game.settings.map.length }, 1fr)`, 'grid-template-columns': `repeat(${ game.settings.map[0].length }, 1fr)` }">
|
<div class="board">
|
||||||
<div v-for="(stone, i) in o.board"
|
<div class="labels-x" v-if="this.$store.state.settings.reversiBoardLabels">
|
||||||
: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 }"
|
<span v-for="i in game.settings.map[0].length">{{ String.fromCharCode(64 + i) }}</span>
|
||||||
@click="set(i)"
|
</div>
|
||||||
:title="'[' + (o.transformPosToXy(i)[0] + 1) + ', ' + (o.transformPosToXy(i)[1] + 1) + '] (' + i + ')'"
|
<div class="flex">
|
||||||
>
|
<div class="labels-y" v-if="this.$store.state.settings.reversiBoardLabels">
|
||||||
<img v-if="stone === true" :src="`${blackUser.avatarUrl}?thumbnail&size=128`" alt="">
|
<div v-for="i in game.settings.map.length">{{ i }}</div>
|
||||||
<img v-if="stone === false" :src="`${whiteUser.avatarUrl}?thumbnail&size=128`" alt="">
|
</div>
|
||||||
|
<div class="cells" :style="cellsStyle">
|
||||||
|
<div v-for="(stone, i) in o.board"
|
||||||
|
:class="{ empty: stone == null, none: o.map[i] == 'null', isEnded: game.isEnded, myTurn: !game.isEnded && isMyTurn, can: turnUser ? o.canPut(turnUser.id == blackUser.id, i) : null, prev: o.prevPos == i }"
|
||||||
|
@click="set(i)"
|
||||||
|
:title="`${String.fromCharCode(65 + o.transformPosToXy(i)[0])}${o.transformPosToXy(i)[1] + 1}`">
|
||||||
|
<img v-if="stone === true" :src="`${blackUser.avatarUrl}?thumbnail&size=128`" alt="">
|
||||||
|
<img v-if="stone === false" :src="`${whiteUser.avatarUrl}?thumbnail&size=128`" alt="">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="labels-y" v-if="this.$store.state.settings.reversiBoardLabels">
|
||||||
|
<div v-for="i in game.settings.map.length">{{ i }}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="labels-x" v-if="this.$store.state.settings.reversiBoardLabels">
|
||||||
|
<span v-for="i in game.settings.map[0].length">{{ String.fromCharCode(64 + i) }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -43,8 +58,8 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import * as CRC32 from 'crc-32';
|
import * as CRC32 from 'crc-32';
|
||||||
import Othello, { Color } from '../../../../../othello/core';
|
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', 'connection'],
|
||||||
@ -52,7 +67,7 @@ export default Vue.extend({
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
game: null,
|
game: null,
|
||||||
o: null as Othello,
|
o: null as Reversi,
|
||||||
logs: [],
|
logs: [],
|
||||||
logPos: 0,
|
logPos: 0,
|
||||||
pollingClock: null
|
pollingClock: null
|
||||||
@ -92,13 +107,19 @@ export default Vue.extend({
|
|||||||
isMyTurn(): boolean {
|
isMyTurn(): boolean {
|
||||||
if (this.turnUser == null) return null;
|
if (this.turnUser == null) return null;
|
||||||
return this.turnUser.id == this.$store.state.i.id;
|
return this.turnUser.id == this.$store.state.i.id;
|
||||||
|
},
|
||||||
|
cellsStyle(): any {
|
||||||
|
return {
|
||||||
|
'grid-template-rows': `repeat(${ this.game.settings.map.length }, 1fr)`,
|
||||||
|
'grid-template-columns': `repeat(${ this.game.settings.map[0].length }, 1fr)`
|
||||||
|
};
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
watch: {
|
watch: {
|
||||||
logPos(v) {
|
logPos(v) {
|
||||||
if (!this.game.isEnded) return;
|
if (!this.game.isEnded) return;
|
||||||
this.o = new Othello(this.game.settings.map, {
|
this.o = new Reversi(this.game.settings.map, {
|
||||||
isLlotheo: this.game.settings.isLlotheo,
|
isLlotheo: this.game.settings.isLlotheo,
|
||||||
canPutEverywhere: this.game.settings.canPutEverywhere,
|
canPutEverywhere: this.game.settings.canPutEverywhere,
|
||||||
loopedBoard: this.game.settings.loopedBoard
|
loopedBoard: this.game.settings.loopedBoard
|
||||||
@ -115,7 +136,7 @@ export default Vue.extend({
|
|||||||
created() {
|
created() {
|
||||||
this.game = this.initGame;
|
this.game = this.initGame;
|
||||||
|
|
||||||
this.o = new Othello(this.game.settings.map, {
|
this.o = new Reversi(this.game.settings.map, {
|
||||||
isLlotheo: this.game.settings.isLlotheo,
|
isLlotheo: this.game.settings.isLlotheo,
|
||||||
canPutEverywhere: this.game.settings.canPutEverywhere,
|
canPutEverywhere: this.game.settings.canPutEverywhere,
|
||||||
loopedBoard: this.game.settings.loopedBoard
|
loopedBoard: this.game.settings.loopedBoard
|
||||||
@ -163,7 +184,7 @@ export default Vue.extend({
|
|||||||
|
|
||||||
// サウンドを再生する
|
// サウンドを再生する
|
||||||
if (this.$store.state.device.enableSounds) {
|
if (this.$store.state.device.enableSounds) {
|
||||||
const sound = new Audio(`${url}/assets/othello-put-me.mp3`);
|
const sound = new Audio(`${url}/assets/reversi-put-me.mp3`);
|
||||||
sound.volume = this.$store.state.device.soundVolume;
|
sound.volume = this.$store.state.device.soundVolume;
|
||||||
sound.play();
|
sound.play();
|
||||||
}
|
}
|
||||||
@ -187,7 +208,7 @@ export default Vue.extend({
|
|||||||
|
|
||||||
// サウンドを再生する
|
// サウンドを再生する
|
||||||
if (this.$store.state.device.enableSounds && x.color != this.myColor) {
|
if (this.$store.state.device.enableSounds && x.color != this.myColor) {
|
||||||
const sound = new Audio(`${url}/assets/othello-put-you.mp3`);
|
const sound = new Audio(`${url}/assets/reversi-put-you.mp3`);
|
||||||
sound.volume = this.$store.state.device.soundVolume;
|
sound.volume = this.$store.state.device.soundVolume;
|
||||||
sound.play();
|
sound.play();
|
||||||
}
|
}
|
||||||
@ -213,7 +234,7 @@ export default Vue.extend({
|
|||||||
onRescue(game) {
|
onRescue(game) {
|
||||||
this.game = game;
|
this.game = game;
|
||||||
|
|
||||||
this.o = new Othello(this.game.settings.map, {
|
this.o = new Reversi(this.game.settings.map, {
|
||||||
isLlotheo: this.game.settings.isLlotheo,
|
isLlotheo: this.game.settings.isLlotheo,
|
||||||
canPutEverywhere: this.game.settings.canPutEverywhere,
|
canPutEverywhere: this.game.settings.canPutEverywhere,
|
||||||
loopedBoard: this.game.settings.loopedBoard
|
loopedBoard: this.game.settings.loopedBoard
|
||||||
@ -244,54 +265,99 @@ export default Vue.extend({
|
|||||||
border-bottom dashed 1px #c4cdd4
|
border-bottom dashed 1px #c4cdd4
|
||||||
|
|
||||||
> .board
|
> .board
|
||||||
display grid
|
width calc(100% - 16px)
|
||||||
grid-gap 4px
|
max-width 500px
|
||||||
width 350px
|
|
||||||
height 350px
|
|
||||||
margin 0 auto
|
margin 0 auto
|
||||||
|
|
||||||
> div
|
$label-size = 16px
|
||||||
background transparent
|
$gap = 4px
|
||||||
border-radius 6px
|
|
||||||
overflow hidden
|
|
||||||
|
|
||||||
*
|
> .labels-x
|
||||||
pointer-events none
|
height $label-size
|
||||||
user-select none
|
padding 0 $label-size
|
||||||
|
display flex
|
||||||
|
|
||||||
&.empty
|
> *
|
||||||
border solid 2px #eee
|
flex 1
|
||||||
|
display flex
|
||||||
|
align-items center
|
||||||
|
justify-content center
|
||||||
|
font-size 12px
|
||||||
|
|
||||||
&.empty.can
|
&:first-child
|
||||||
background #eee
|
margin-left -($gap / 2)
|
||||||
|
|
||||||
&.empty.myTurn
|
&:last-child
|
||||||
border-color #ddd
|
margin-right -($gap / 2)
|
||||||
|
|
||||||
&.can
|
> .flex
|
||||||
background #eee
|
display flex
|
||||||
cursor pointer
|
|
||||||
|
|
||||||
&:hover
|
> .labels-y
|
||||||
border-color darken($theme-color, 10%)
|
width $label-size
|
||||||
background $theme-color
|
display flex
|
||||||
|
flex-direction column
|
||||||
|
|
||||||
&:active
|
> *
|
||||||
background darken($theme-color, 10%)
|
flex 1
|
||||||
|
display flex
|
||||||
|
align-items center
|
||||||
|
justify-content center
|
||||||
|
font-size 12px
|
||||||
|
|
||||||
&.prev
|
&:first-child
|
||||||
box-shadow 0 0 0 4px rgba($theme-color, 0.7)
|
margin-top -($gap / 2)
|
||||||
|
|
||||||
&.isEnded
|
&:last-child
|
||||||
border-color #ddd
|
margin-bottom -($gap / 2)
|
||||||
|
|
||||||
&.none
|
> .cells
|
||||||
border-color transparent !important
|
flex 1
|
||||||
|
display grid
|
||||||
|
grid-gap $gap
|
||||||
|
|
||||||
> img
|
> div
|
||||||
display block
|
background transparent
|
||||||
width 100%
|
border-radius 6px
|
||||||
height 100%
|
overflow hidden
|
||||||
|
|
||||||
|
*
|
||||||
|
pointer-events none
|
||||||
|
user-select none
|
||||||
|
|
||||||
|
&.empty
|
||||||
|
border solid 2px #eee
|
||||||
|
|
||||||
|
&.empty.can
|
||||||
|
background #eee
|
||||||
|
|
||||||
|
&.empty.myTurn
|
||||||
|
border-color #ddd
|
||||||
|
|
||||||
|
&.can
|
||||||
|
background #eee
|
||||||
|
cursor pointer
|
||||||
|
|
||||||
|
&:hover
|
||||||
|
border-color darken($theme-color, 10%)
|
||||||
|
background $theme-color
|
||||||
|
|
||||||
|
&:active
|
||||||
|
background darken($theme-color, 10%)
|
||||||
|
|
||||||
|
&.prev
|
||||||
|
box-shadow 0 0 0 4px rgba($theme-color, 0.7)
|
||||||
|
|
||||||
|
&.isEnded
|
||||||
|
border-color #ddd
|
||||||
|
|
||||||
|
&.none
|
||||||
|
border-color transparent !important
|
||||||
|
|
||||||
|
> img
|
||||||
|
display block
|
||||||
|
width 100%
|
||||||
|
height 100%
|
||||||
|
|
||||||
> .graph
|
> .graph
|
||||||
display grid
|
display grid
|
@ -7,9 +7,9 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import XGame from './othello.game.vue';
|
import XGame from './reversi.game.vue';
|
||||||
import XRoom from './othello.room.vue';
|
import XRoom from './reversi.room.vue';
|
||||||
import { OthelloGameStream } from '../../scripts/streaming/othello-game';
|
import { ReversiGameStream } from '../../../../scripts/streaming/games/reversi/reversi-game';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
components: {
|
components: {
|
||||||
@ -25,7 +25,7 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.g = this.game;
|
this.g = this.game;
|
||||||
this.connection = new OthelloGameStream((this as any).os, this.$store.state.i, this.game);
|
this.connection = new ReversiGameStream((this as any).os, this.$store.state.i, this.game);
|
||||||
this.connection.on('started', this.onStarted);
|
this.connection.on('started', this.onStarted);
|
||||||
},
|
},
|
||||||
beforeDestroy() {
|
beforeDestroy() {
|
@ -94,7 +94,7 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import * as maps from '../../../../../othello/maps';
|
import * as maps from '../../../../../../../games/reversi/maps';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
props: ['game', 'connection'],
|
props: ['game', 'connection'],
|
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="mk-othello">
|
<div class="mk-reversi">
|
||||||
<div v-if="game">
|
<div v-if="game">
|
||||||
<x-gameroom :game="game"/>
|
<x-gameroom :game="game"/>
|
||||||
</div>
|
</div>
|
||||||
@ -10,15 +10,15 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="index" v-else>
|
<div class="index" v-else>
|
||||||
<h1>Misskey %fa:circle%thell%fa:circle R%</h1>
|
<h1>Misskey Reversi</h1>
|
||||||
<p>他のMisskeyユーザーとオセロで対戦しよう</p>
|
<p>他のMisskeyユーザーとリバーシで対戦しよう</p>
|
||||||
<div class="play">
|
<div class="play">
|
||||||
<el-button round>フリーマッチ(準備中)</el-button>
|
<el-button round>フリーマッチ(準備中)</el-button>
|
||||||
<el-button type="primary" round @click="match">指名</el-button>
|
<el-button type="primary" round @click="match">指名</el-button>
|
||||||
<details>
|
<details>
|
||||||
<summary>遊び方</summary>
|
<summary>遊び方</summary>
|
||||||
<div>
|
<div>
|
||||||
<p>オセロは、相手と交互に石をボードに置いてゆき、相手の石を挟んでひっくり返しながら、最終的に残った石が多い方が勝ちというボードゲームです。</p>
|
<p>リバーシは、相手と交互に石をボードに置いてゆき、相手の石を挟んでひっくり返しながら、最終的に残った石が多い方が勝ちというボードゲームです。</p>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><b>フリーマッチ</b></dt>
|
<dt><b>フリーマッチ</b></dt>
|
||||||
<dd>ランダムなユーザーと対戦するモードです。</dd>
|
<dd>ランダムなユーザーと対戦するモードです。</dd>
|
||||||
@ -39,7 +39,7 @@
|
|||||||
</section>
|
</section>
|
||||||
<section v-if="myGames.length > 0">
|
<section v-if="myGames.length > 0">
|
||||||
<h2>自分の対局</h2>
|
<h2>自分の対局</h2>
|
||||||
<a class="game" v-for="g in myGames" tabindex="-1" @click.prevent="go(g)" :href="`/othello/${g.id}`">
|
<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.user1"/>
|
||||||
<mk-avatar class="avatar" :user="g.user2"/>
|
<mk-avatar class="avatar" :user="g.user2"/>
|
||||||
<span><b>{{ g.user1.name }}</b> vs <b>{{ g.user2.name }}</b></span>
|
<span><b>{{ g.user1.name }}</b> vs <b>{{ g.user2.name }}</b></span>
|
||||||
@ -48,7 +48,7 @@
|
|||||||
</section>
|
</section>
|
||||||
<section v-if="games.length > 0">
|
<section v-if="games.length > 0">
|
||||||
<h2>みんなの対局</h2>
|
<h2>みんなの対局</h2>
|
||||||
<a class="game" v-for="g in games" tabindex="-1" @click.prevent="go(g)" :href="`/othello/${g.id}`">
|
<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.user1"/>
|
||||||
<mk-avatar class="avatar" :user="g.user2"/>
|
<mk-avatar class="avatar" :user="g.user2"/>
|
||||||
<span><b>{{ g.user1.name }}</b> vs <b>{{ g.user2.name }}</b></span>
|
<span><b>{{ g.user1.name }}</b> vs <b>{{ g.user2.name }}</b></span>
|
||||||
@ -61,7 +61,7 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import XGameroom from './othello.gameroom.vue';
|
import XGameroom from './reversi.gameroom.vue';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
components: {
|
components: {
|
||||||
@ -93,24 +93,24 @@ export default Vue.extend({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.connection = (this as any).os.streams.othelloStream.getConnection();
|
this.connection = (this as any).os.streams.reversiStream.getConnection();
|
||||||
this.connectionId = (this as any).os.streams.othelloStream.use();
|
this.connectionId = (this as any).os.streams.reversiStream.use();
|
||||||
|
|
||||||
this.connection.on('matched', this.onMatched);
|
this.connection.on('matched', this.onMatched);
|
||||||
this.connection.on('invited', this.onInvited);
|
this.connection.on('invited', this.onInvited);
|
||||||
|
|
||||||
(this as any).api('othello/games', {
|
(this as any).api('games/reversi/games', {
|
||||||
my: true
|
my: true
|
||||||
}).then(games => {
|
}).then(games => {
|
||||||
this.myGames = games;
|
this.myGames = games;
|
||||||
});
|
});
|
||||||
|
|
||||||
(this as any).api('othello/games').then(games => {
|
(this as any).api('games/reversi/games').then(games => {
|
||||||
this.games = games;
|
this.games = games;
|
||||||
this.gamesFetching = false;
|
this.gamesFetching = false;
|
||||||
});
|
});
|
||||||
|
|
||||||
(this as any).api('othello/invitations').then(invitations => {
|
(this as any).api('games/reversi/invitations').then(invitations => {
|
||||||
this.invitations = this.invitations.concat(invitations);
|
this.invitations = this.invitations.concat(invitations);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -126,13 +126,13 @@ export default Vue.extend({
|
|||||||
beforeDestroy() {
|
beforeDestroy() {
|
||||||
this.connection.off('matched', this.onMatched);
|
this.connection.off('matched', this.onMatched);
|
||||||
this.connection.off('invited', this.onInvited);
|
this.connection.off('invited', this.onInvited);
|
||||||
(this as any).os.streams.othelloStream.dispose(this.connectionId);
|
(this as any).os.streams.reversiStream.dispose(this.connectionId);
|
||||||
|
|
||||||
clearInterval(this.pingClock);
|
clearInterval(this.pingClock);
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
go(game) {
|
go(game) {
|
||||||
(this as any).api('othello/games/show', {
|
(this as any).api('games/reversi/games/show', {
|
||||||
gameId: game.id
|
gameId: game.id
|
||||||
}).then(game => {
|
}).then(game => {
|
||||||
this.matching = null;
|
this.matching = null;
|
||||||
@ -146,7 +146,7 @@ export default Vue.extend({
|
|||||||
(this as any).api('users/show', {
|
(this as any).api('users/show', {
|
||||||
username
|
username
|
||||||
}).then(user => {
|
}).then(user => {
|
||||||
(this as any).api('othello/match', {
|
(this as any).api('games/reversi/match', {
|
||||||
userId: user.id
|
userId: user.id
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
if (res == null) {
|
if (res == null) {
|
||||||
@ -160,10 +160,10 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
cancel() {
|
cancel() {
|
||||||
this.matching = null;
|
this.matching = null;
|
||||||
(this as any).api('othello/match/cancel');
|
(this as any).api('games/reversi/match/cancel');
|
||||||
},
|
},
|
||||||
accept(invitation) {
|
accept(invitation) {
|
||||||
(this as any).api('othello/match', {
|
(this as any).api('games/reversi/match', {
|
||||||
userId: invitation.parent.id
|
userId: invitation.parent.id
|
||||||
}).then(game => {
|
}).then(game => {
|
||||||
if (game) {
|
if (game) {
|
||||||
@ -186,7 +186,7 @@ export default Vue.extend({
|
|||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
@import '~const.styl'
|
@import '~const.styl'
|
||||||
|
|
||||||
.mk-othello
|
.mk-reversi
|
||||||
color #677f84
|
color #677f84
|
||||||
background #fff
|
background #fff
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="mk-google">
|
<div class="mk-google">
|
||||||
<input type="search" v-model="query" :placeholder="q">
|
<input type="search" v-model="query" :placeholder="q">
|
||||||
<button @click="search">検索</button>
|
<button @click="search">%fa:search% %i18n:common.search%</button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ import forkit from './forkit.vue';
|
|||||||
import acct from './acct.vue';
|
import acct from './acct.vue';
|
||||||
import avatar from './avatar.vue';
|
import avatar from './avatar.vue';
|
||||||
import nav from './nav.vue';
|
import nav from './nav.vue';
|
||||||
import noteHtml from './note-html';
|
import misskeyFlavoredMarkdown from './misskey-flavored-markdown';
|
||||||
import poll from './poll.vue';
|
import poll from './poll.vue';
|
||||||
import pollEditor from './poll-editor.vue';
|
import pollEditor from './poll-editor.vue';
|
||||||
import reactionIcon from './reaction-icon.vue';
|
import reactionIcon from './reaction-icon.vue';
|
||||||
@ -27,7 +27,7 @@ import urlPreview from './url-preview.vue';
|
|||||||
import twitterSetting from './twitter-setting.vue';
|
import twitterSetting from './twitter-setting.vue';
|
||||||
import fileTypeIcon from './file-type-icon.vue';
|
import fileTypeIcon from './file-type-icon.vue';
|
||||||
import Switch from './switch.vue';
|
import Switch from './switch.vue';
|
||||||
import Othello from './othello.vue';
|
import Reversi from './games/reversi/reversi.vue';
|
||||||
import welcomeTimeline from './welcome-timeline.vue';
|
import welcomeTimeline from './welcome-timeline.vue';
|
||||||
import uiInput from './ui/input.vue';
|
import uiInput from './ui/input.vue';
|
||||||
import uiButton from './ui/button.vue';
|
import uiButton from './ui/button.vue';
|
||||||
@ -47,7 +47,7 @@ Vue.component('mk-forkit', forkit);
|
|||||||
Vue.component('mk-acct', acct);
|
Vue.component('mk-acct', acct);
|
||||||
Vue.component('mk-avatar', avatar);
|
Vue.component('mk-avatar', avatar);
|
||||||
Vue.component('mk-nav', nav);
|
Vue.component('mk-nav', nav);
|
||||||
Vue.component('mk-note-html', noteHtml);
|
Vue.component('misskey-flavored-markdown', misskeyFlavoredMarkdown);
|
||||||
Vue.component('mk-poll', poll);
|
Vue.component('mk-poll', poll);
|
||||||
Vue.component('mk-poll-editor', pollEditor);
|
Vue.component('mk-poll-editor', pollEditor);
|
||||||
Vue.component('mk-reaction-icon', reactionIcon);
|
Vue.component('mk-reaction-icon', reactionIcon);
|
||||||
@ -65,7 +65,7 @@ Vue.component('mk-url-preview', urlPreview);
|
|||||||
Vue.component('mk-twitter-setting', twitterSetting);
|
Vue.component('mk-twitter-setting', twitterSetting);
|
||||||
Vue.component('mk-file-type-icon', fileTypeIcon);
|
Vue.component('mk-file-type-icon', fileTypeIcon);
|
||||||
Vue.component('mk-switch', Switch);
|
Vue.component('mk-switch', Switch);
|
||||||
Vue.component('mk-othello', Othello);
|
Vue.component('mk-reversi', Reversi);
|
||||||
Vue.component('mk-welcome-timeline', welcomeTimeline);
|
Vue.component('mk-welcome-timeline', welcomeTimeline);
|
||||||
Vue.component('ui-input', uiInput);
|
Vue.component('ui-input', uiInput);
|
||||||
Vue.component('ui-button', uiButton);
|
Vue.component('ui-button', uiButton);
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
<img src="/assets/desktop/messaging/delete.png" alt="Delete"/>
|
<img src="/assets/desktop/messaging/delete.png" alt="Delete"/>
|
||||||
</button>
|
</button>
|
||||||
<div class="content" v-if="!message.isDeleted">
|
<div class="content" v-if="!message.isDeleted">
|
||||||
<mk-note-html class="text" v-if="message.text" ref="text" :text="message.text" :i="$store.state.i"/>
|
<misskey-flavored-markdown class="text" v-if="message.text" ref="text" :text="message.text" :i="$store.state.i"/>
|
||||||
<div class="file" v-if="message.file">
|
<div class="file" v-if="message.file">
|
||||||
<a :href="message.file.url" target="_blank" :title="message.file.name">
|
<a :href="message.file.url" target="_blank" :title="message.file.name">
|
||||||
<img v-if="message.file.type.split('/')[0] == 'image'" :src="message.file.url" :alt="message.file.name"/>
|
<img v-if="message.file.type.split('/')[0] == 'image'" :src="message.file.url" :alt="message.file.name"/>
|
||||||
@ -32,7 +32,7 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import parse from '../../../../../text/parse';
|
import parse from '../../../../../mfm/parse';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
props: {
|
props: {
|
||||||
|
@ -51,7 +51,7 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import getAcct from '../../../../../acct/render';
|
import getAcct from '../../../../../misc/acct/render';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
props: {
|
props: {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import * as emojilib from 'emojilib';
|
import * as emojilib from 'emojilib';
|
||||||
import parse from '../../../../../text/parse';
|
import parse from '../../../../../mfm/parse';
|
||||||
import getAcct from '../../../../../acct/render';
|
import getAcct from '../../../../../misc/acct/render';
|
||||||
import { url } from '../../../config';
|
import { url } from '../../../config';
|
||||||
import MkUrl from './url.vue';
|
import MkUrl from './url.vue';
|
||||||
import MkGoogle from './google.vue';
|
import MkGoogle from './google.vue';
|
||||||
@ -10,7 +10,7 @@ const flatten = list => list.reduce(
|
|||||||
(a, b) => a.concat(Array.isArray(b) ? flatten(b) : b), []
|
(a, b) => a.concat(Array.isArray(b) ? flatten(b) : b), []
|
||||||
);
|
);
|
||||||
|
|
||||||
export default Vue.component('mk-note-html', {
|
export default Vue.component('misskey-flavored-markdown', {
|
||||||
props: {
|
props: {
|
||||||
text: {
|
text: {
|
||||||
type: String,
|
type: String,
|
||||||
@ -40,17 +40,6 @@ export default Vue.component('mk-note-html', {
|
|||||||
ast = this.ast;
|
ast = this.ast;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ast.filter(x => x.type != 'hashtag').length == 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (ast[ast.length - 1] && (
|
|
||||||
ast[ast.length - 1].type == 'hashtag' ||
|
|
||||||
(ast[ast.length - 1].type == 'text' && ast[ast.length - 1].content == ' ') ||
|
|
||||||
(ast[ast.length - 1].type == 'text' && ast[ast.length - 1].content == '\n'))) {
|
|
||||||
ast.pop();
|
|
||||||
}
|
|
||||||
|
|
||||||
// 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) {
|
@ -2,9 +2,9 @@
|
|||||||
<span class="mk-nav">
|
<span class="mk-nav">
|
||||||
<a :href="aboutUrl">%i18n:@about%</a>
|
<a :href="aboutUrl">%i18n:@about%</a>
|
||||||
<i>・</i>
|
<i>・</i>
|
||||||
<a href="https://github.com/syuilo/misskey">%i18n:@repository%</a>
|
<a :href="repositoryUrl">%i18n:@repository%</a>
|
||||||
<i>・</i>
|
<i>・</i>
|
||||||
<a href="https://github.com/syuilo/misskey/issues/new" 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="devUrl">%i18n:@develop%</a>
|
||||||
<i>・</i>
|
<i>・</i>
|
||||||
@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import { docsUrl, statsUrl, statusUrl, devUrl, lang } from '../../../config';
|
import { docsUrl, statsUrl, statusUrl, devUrl, repositoryUrl, feedbackUrl, lang } from '../../../config';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
data() {
|
data() {
|
||||||
@ -22,7 +22,9 @@ export default Vue.extend({
|
|||||||
aboutUrl: `${docsUrl}/${lang}/about`,
|
aboutUrl: `${docsUrl}/${lang}/about`,
|
||||||
statsUrl,
|
statsUrl,
|
||||||
statusUrl,
|
statusUrl,
|
||||||
devUrl
|
devUrl,
|
||||||
|
repositoryUrl: repositoryUrl || `https://github.com/syuilo/misskey`,
|
||||||
|
feedbackUrl: feedbackUrl || `https://github.com/syuilo/misskey/issues/new`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -72,6 +72,7 @@ root(isDark)
|
|||||||
> .is-admin
|
> .is-admin
|
||||||
> .is-bot
|
> .is-bot
|
||||||
> .is-cat
|
> .is-cat
|
||||||
|
flex-shrink 0
|
||||||
align-self center
|
align-self center
|
||||||
margin 0 .5em 0 0
|
margin 0 .5em 0 0
|
||||||
padding 1px 6px
|
padding 1px 6px
|
||||||
@ -89,6 +90,7 @@ root(isDark)
|
|||||||
overflow hidden
|
overflow hidden
|
||||||
text-overflow ellipsis
|
text-overflow ellipsis
|
||||||
color isDark ? #606984 : #ccc
|
color isDark ? #606984 : #ccc
|
||||||
|
flex-shrink 2147483647
|
||||||
|
|
||||||
> .info
|
> .info
|
||||||
margin-left auto
|
margin-left auto
|
||||||
|
@ -8,7 +8,10 @@
|
|||||||
<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 == 'pudding'" src="/assets/reactions/pudding.png" alt="%i18n:common.reactions.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-else src="/assets/reactions/pudding.png" alt="%i18n:common.reactions.pudding%">
|
||||||
|
</template>
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="mk-reaction-picker">
|
<div class="mk-reaction-picker">
|
||||||
<div class="backdrop" ref="backdrop" @click="close"></div>
|
<div class="backdrop" ref="backdrop" @click="close"></div>
|
||||||
<div class="popover" :class="{ compact }" ref="popover">
|
<div class="popover" :class="{ compact, big }" ref="popover">
|
||||||
<p v-if="!compact">{{ title }}</p>
|
<p v-if="!compact">{{ title }}</p>
|
||||||
<div>
|
<div>
|
||||||
<button @click="react('like')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="1" title="%i18n:common.reactions.like%"><mk-reaction-icon reaction='like'/></button>
|
<button @click="react('like')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="1" title="%i18n:common.reactions.like%"><mk-reaction-icon reaction='like'/></button>
|
||||||
@ -25,7 +25,28 @@ import * as anime from 'animejs';
|
|||||||
const placeholder = '%i18n:@choose-reaction%';
|
const placeholder = '%i18n:@choose-reaction%';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
props: ['note', 'source', 'compact', 'cb'],
|
props: {
|
||||||
|
note: {
|
||||||
|
type: Object,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
source: {
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
compact: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
cb: {
|
||||||
|
required: false
|
||||||
|
},
|
||||||
|
big: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
|
}
|
||||||
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
title: placeholder
|
title: placeholder
|
||||||
@ -162,6 +183,16 @@ root(isDark)
|
|||||||
border-right solid $balloon-size transparent
|
border-right solid $balloon-size transparent
|
||||||
border-bottom solid $balloon-size $bgcolor
|
border-bottom solid $balloon-size $bgcolor
|
||||||
|
|
||||||
|
&.big
|
||||||
|
> div
|
||||||
|
width 280px
|
||||||
|
|
||||||
|
> button
|
||||||
|
width 50px
|
||||||
|
height 50px
|
||||||
|
font-size 28px
|
||||||
|
border-radius 4px
|
||||||
|
|
||||||
> p
|
> p
|
||||||
display block
|
display block
|
||||||
margin 0
|
margin 0
|
||||||
|
@ -289,6 +289,10 @@ root(isDark, fill)
|
|||||||
> *
|
> *
|
||||||
display block
|
display block
|
||||||
min-width 16px
|
min-width 16px
|
||||||
|
max-width 150px
|
||||||
|
overflow hidden
|
||||||
|
white-space nowrap
|
||||||
|
text-overflow ellipsis
|
||||||
|
|
||||||
> .prefix
|
> .prefix
|
||||||
left 0
|
left 0
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
<div class="text">
|
<div class="text">
|
||||||
<mk-note-html v-if="note.text" :text="note.text"/>
|
<misskey-flavored-markdown v-if="note.text" :text="note.text"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -24,6 +24,13 @@
|
|||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
|
props: {
|
||||||
|
max: {
|
||||||
|
type: Number,
|
||||||
|
required: false,
|
||||||
|
default: undefined
|
||||||
|
}
|
||||||
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
fetching: true,
|
fetching: true,
|
||||||
@ -37,6 +44,7 @@ export default Vue.extend({
|
|||||||
fetch(cb?) {
|
fetch(cb?) {
|
||||||
this.fetching = true;
|
this.fetching = true;
|
||||||
(this as any).api('notes', {
|
(this as any).api('notes', {
|
||||||
|
limit: this.max,
|
||||||
local: true,
|
local: true,
|
||||||
reply: false,
|
reply: false,
|
||||||
renote: false,
|
renote: false,
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import getAcct from '../../../../../acct/render';
|
import getAcct from '../../../../../misc/acct/render';
|
||||||
import getUserName from '../../../../../renderers/get-user-name';
|
import getUserName from '../../../../../misc/get-user-name';
|
||||||
|
|
||||||
Vue.filter('acct', user => {
|
Vue.filter('acct', user => {
|
||||||
return getAcct(user);
|
return getAcct(user);
|
||||||
|
215
src/client/app/common/views/pages/follow.vue
Normal file
@ -0,0 +1,215 @@
|
|||||||
|
<template>
|
||||||
|
<div class="syxhndwprovvuqhmyvveewmbqayniwkv" v-if="!fetching" :data-darkmode="$store.state.device.darkmode">
|
||||||
|
<div class="signed-in-as" v-html="'%i18n:@signed-in-as%'.replace('{}', '<b>' + myName + '</b>')"></div>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
<div class="banner" :style="bannerStyle"></div>
|
||||||
|
<mk-avatar class="avatar" :user="user" :disable-preview="true"/>
|
||||||
|
<div class="body">
|
||||||
|
<router-link :to="user | userPage" class="name">{{ user | userName }}</router-link>
|
||||||
|
<span class="username">@{{ user | acct }}</span>
|
||||||
|
<div class="description">
|
||||||
|
<misskey-flavored-markdown v-if="user.description" :text="user.description" :i="$store.state.i"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<button
|
||||||
|
:class="{ wait: followWait, active: user.isFollowing || user.hasPendingFollowRequestFromYou }"
|
||||||
|
@click="onClick"
|
||||||
|
:disabled="followWait">
|
||||||
|
<template v-if="!followWait">
|
||||||
|
<template v-if="user.hasPendingFollowRequestFromYou">%fa:hourglass-half% %i18n:@request-pending%</template>
|
||||||
|
<template v-else-if="user.isFollowing">%fa:minus% %i18n:@following%</template>
|
||||||
|
<template v-else-if="!user.isFollowing && user.isLocked">%fa:plus% %i18n:@follow-request%</template>
|
||||||
|
<template v-else-if="!user.isFollowing && !user.isLocked">%fa:plus% %i18n:@follow%</template>
|
||||||
|
</template>
|
||||||
|
<template v-else>%fa:spinner .pulse .fw%</template>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
import parseAcct from '../../../../../misc/acct/parse';
|
||||||
|
import getUserName from '../../../../../misc/get-user-name';
|
||||||
|
import Progress from '../../../common/scripts/loading';
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
fetching: true,
|
||||||
|
user: null,
|
||||||
|
followWait: false
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
computed: {
|
||||||
|
myName(): string {
|
||||||
|
return Vue.filter('userName')(this.$store.state.i);
|
||||||
|
},
|
||||||
|
|
||||||
|
bannerStyle(): any {
|
||||||
|
if (this.user.bannerUrl == null) return {};
|
||||||
|
return {
|
||||||
|
backgroundColor: this.user.bannerColor && this.user.bannerColor.length == 3 ? `rgb(${ this.user.bannerColor.join(',') })` : null,
|
||||||
|
backgroundImage: `url(${ this.user.bannerUrl })`
|
||||||
|
};
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
created() {
|
||||||
|
this.fetch();
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
fetch() {
|
||||||
|
const acct = new URL(location.href).searchParams.get('acct');
|
||||||
|
this.fetching = true;
|
||||||
|
Progress.start();
|
||||||
|
(this as any).api('users/show', parseAcct(acct)).then(user => {
|
||||||
|
this.user = user;
|
||||||
|
this.fetching = false;
|
||||||
|
Progress.done();
|
||||||
|
document.title = getUserName(this.user) + ' | Misskey';
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
async onClick() {
|
||||||
|
this.followWait = true;
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (this.user.isFollowing) {
|
||||||
|
this.user = await (this as any).api('following/delete', {
|
||||||
|
userId: this.user.id
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
if (this.user.isLocked && this.user.hasPendingFollowRequestFromYou) {
|
||||||
|
this.user = await (this as any).api('following/requests/cancel', {
|
||||||
|
userId: this.user.id
|
||||||
|
});
|
||||||
|
} else if (this.user.isLocked) {
|
||||||
|
this.user = await (this as any).api('following/create', {
|
||||||
|
userId: this.user.id
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this.user = await (this as any).api('following/create', {
|
||||||
|
userId: this.user.id
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
} finally {
|
||||||
|
this.followWait = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
@import '~const.styl'
|
||||||
|
|
||||||
|
root(isDark)
|
||||||
|
padding 32px
|
||||||
|
max-width 500px
|
||||||
|
margin 0 auto
|
||||||
|
text-align center
|
||||||
|
color isDark ? #9baec8 : #868c8c
|
||||||
|
|
||||||
|
$bg = isDark ? #282C37 : #fff
|
||||||
|
|
||||||
|
@media (max-width 400px)
|
||||||
|
padding 16px
|
||||||
|
|
||||||
|
> .signed-in-as
|
||||||
|
margin-bottom 16px
|
||||||
|
font-size 14px
|
||||||
|
color isDark ? #9baec8 : #9daab3
|
||||||
|
|
||||||
|
> main
|
||||||
|
margin-bottom 16px
|
||||||
|
background $bg
|
||||||
|
border-radius 8px
|
||||||
|
box-shadow 0 4px 12px rgba(#000, 0.1)
|
||||||
|
overflow hidden
|
||||||
|
|
||||||
|
> .banner
|
||||||
|
height 128px
|
||||||
|
background-position center
|
||||||
|
background-size cover
|
||||||
|
|
||||||
|
> .avatar
|
||||||
|
display block
|
||||||
|
margin -50px auto 0 auto
|
||||||
|
width 100px
|
||||||
|
height 100px
|
||||||
|
border-radius 100%
|
||||||
|
border solid 4px $bg
|
||||||
|
|
||||||
|
> .body
|
||||||
|
padding 4px 32px 32px 32px
|
||||||
|
|
||||||
|
@media (max-width 400px)
|
||||||
|
padding 4px 16px 16px 16px
|
||||||
|
|
||||||
|
> .name
|
||||||
|
font-size 20px
|
||||||
|
font-weight bold
|
||||||
|
|
||||||
|
> .username
|
||||||
|
display block
|
||||||
|
opacity 0.7
|
||||||
|
|
||||||
|
> .description
|
||||||
|
margin-top 16px
|
||||||
|
|
||||||
|
> button
|
||||||
|
display block
|
||||||
|
user-select none
|
||||||
|
cursor pointer
|
||||||
|
padding 10px 16px
|
||||||
|
margin 0
|
||||||
|
width 100%
|
||||||
|
min-width 150px
|
||||||
|
font-size 14px
|
||||||
|
font-weight bold
|
||||||
|
color $theme-color
|
||||||
|
background transparent
|
||||||
|
outline none
|
||||||
|
border solid 1px $theme-color
|
||||||
|
border-radius 36px
|
||||||
|
|
||||||
|
&:hover
|
||||||
|
background rgba($theme-color, 0.1)
|
||||||
|
|
||||||
|
&:active
|
||||||
|
background rgba($theme-color, 0.2)
|
||||||
|
|
||||||
|
&.active
|
||||||
|
color $theme-color-foreground
|
||||||
|
background $theme-color
|
||||||
|
|
||||||
|
&:hover
|
||||||
|
background lighten($theme-color, 10%)
|
||||||
|
border-color lighten($theme-color, 10%)
|
||||||
|
|
||||||
|
&:active
|
||||||
|
background darken($theme-color, 10%)
|
||||||
|
border-color darken($theme-color, 10%)
|
||||||
|
|
||||||
|
&.wait
|
||||||
|
cursor wait !important
|
||||||
|
opacity 0.7
|
||||||
|
|
||||||
|
*
|
||||||
|
pointer-events none
|
||||||
|
|
||||||
|
.syxhndwprovvuqhmyvveewmbqayniwkv[data-darkmode]
|
||||||
|
root(true)
|
||||||
|
|
||||||
|
.syxhndwprovvuqhmyvveewmbqayniwkv:not([data-darkmode])
|
||||||
|
root(false)
|
||||||
|
|
||||||
|
</style>
|
@ -6,7 +6,9 @@
|
|||||||
<div class="mkw-hashtags--body" :data-mobile="platform == 'mobile'">
|
<div class="mkw-hashtags--body" :data-mobile="platform == 'mobile'">
|
||||||
<p class="fetching" v-if="fetching">%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
|
<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>
|
<p class="empty" v-else-if="stats.length == 0">%fa:exclamation-circle%%i18n:@empty%</p>
|
||||||
<transition-group v-else tag="div" name="chart">
|
<!-- トランジションを有効にするとなぜかメモリリークする -->
|
||||||
|
<!-- <transition-group v-else tag="div" name="chart"> -->
|
||||||
|
<div>
|
||||||
<div v-for="stat in stats" :key="stat.tag">
|
<div v-for="stat in stats" :key="stat.tag">
|
||||||
<div class="tag">
|
<div class="tag">
|
||||||
<router-link :to="`/tags/${ stat.tag }`" :title="stat.tag">#{{ stat.tag }}</router-link>
|
<router-link :to="`/tags/${ stat.tag }`" :title="stat.tag">#{{ stat.tag }}</router-link>
|
||||||
@ -14,7 +16,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<x-chart class="chart" :src="stat.chart"/>
|
<x-chart class="chart" :src="stat.chart"/>
|
||||||
</div>
|
</div>
|
||||||
</transition-group>
|
</div>
|
||||||
|
<!-- </transition-group> -->
|
||||||
</div>
|
</div>
|
||||||
</mk-widget-container>
|
</mk-widget-container>
|
||||||
</div>
|
</div>
|
||||||
|
@ -9,6 +9,8 @@ declare const _DOCS_URL_: string;
|
|||||||
declare const _STATS_URL_: string;
|
declare const _STATS_URL_: string;
|
||||||
declare const _STATUS_URL_: string;
|
declare const _STATUS_URL_: string;
|
||||||
declare const _DEV_URL_: string;
|
declare const _DEV_URL_: string;
|
||||||
|
declare const _REPOSITORY_URL_: string;
|
||||||
|
declare const _FEEDBACK_URL_: string;
|
||||||
declare const _LANG_: string;
|
declare const _LANG_: string;
|
||||||
declare const _LANGS_: string;
|
declare const _LANGS_: string;
|
||||||
declare const _RECAPTCHA_SITEKEY_: string;
|
declare const _RECAPTCHA_SITEKEY_: string;
|
||||||
@ -32,6 +34,8 @@ export const docsUrl = _DOCS_URL_;
|
|||||||
export const statsUrl = _STATS_URL_;
|
export const statsUrl = _STATS_URL_;
|
||||||
export const statusUrl = _STATUS_URL_;
|
export const statusUrl = _STATUS_URL_;
|
||||||
export const devUrl = _DEV_URL_;
|
export const devUrl = _DEV_URL_;
|
||||||
|
export const repositoryUrl = _REPOSITORY_URL_;
|
||||||
|
export const feedbackUrl = _FEEDBACK_URL_;
|
||||||
export const lang = _LANG_;
|
export const lang = _LANG_;
|
||||||
export const langs = _LANGS_;
|
export const langs = _LANGS_;
|
||||||
export const recaptchaSitekey = _RECAPTCHA_SITEKEY_;
|
export const recaptchaSitekey = _RECAPTCHA_SITEKEY_;
|
||||||
|
@ -21,7 +21,7 @@ export default (os: OS) => opts => {
|
|||||||
res(file);
|
res(file);
|
||||||
};
|
};
|
||||||
|
|
||||||
window.open(url + '/selectdrive',
|
window.open(url + `/selectdrive?multiple=${o.multiple}`,
|
||||||
'choose_drive_window',
|
'choose_drive_window',
|
||||||
'height=500, width=800');
|
'height=500, width=800');
|
||||||
}
|
}
|
||||||
|
Before Width: | Height: | Size: 401 KiB After Width: | Height: | Size: 400 KiB |
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 424 B |
@ -34,7 +34,9 @@ import MkMessagingRoom from './views/pages/messaging-room.vue';
|
|||||||
import MkNote from './views/pages/note.vue';
|
import MkNote from './views/pages/note.vue';
|
||||||
import MkSearch from './views/pages/search.vue';
|
import MkSearch from './views/pages/search.vue';
|
||||||
import MkTag from './views/pages/tag.vue';
|
import MkTag from './views/pages/tag.vue';
|
||||||
import MkOthello from './views/pages/othello.vue';
|
import MkReversi from './views/pages/reversi.vue';
|
||||||
|
import MkShare from './views/pages/share.vue';
|
||||||
|
import MkFollow from '../common/views/pages/follow.vue';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* init
|
* init
|
||||||
@ -62,10 +64,12 @@ init(async (launch) => {
|
|||||||
{ path: '/selectdrive', component: MkSelectDrive },
|
{ path: '/selectdrive', component: MkSelectDrive },
|
||||||
{ path: '/search', component: MkSearch },
|
{ path: '/search', component: MkSearch },
|
||||||
{ path: '/tags/:tag', component: MkTag },
|
{ path: '/tags/:tag', component: MkTag },
|
||||||
{ path: '/othello', component: MkOthello },
|
{ path: '/share', component: MkShare },
|
||||||
{ path: '/othello/:game', component: MkOthello },
|
{ path: '/reversi', component: MkReversi },
|
||||||
|
{ path: '/reversi/:game', component: MkReversi },
|
||||||
{ path: '/@:user', component: MkUser },
|
{ path: '/@:user', component: MkUser },
|
||||||
{ path: '/notes/:note', component: MkNote }
|
{ path: '/notes/:note', component: MkNote },
|
||||||
|
{ path: '/authorize-follow', component: MkFollow }
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -113,6 +117,15 @@ function registerNotifications(stream: HomeStreamManager) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
function attach(connection) {
|
function attach(connection) {
|
||||||
|
connection.on('notification', notification => {
|
||||||
|
const _n = composeNotification('notification', notification);
|
||||||
|
const n = new Notification(_n.title, {
|
||||||
|
body: _n.body,
|
||||||
|
icon: _n.icon
|
||||||
|
});
|
||||||
|
setTimeout(n.close.bind(n), 6000);
|
||||||
|
});
|
||||||
|
|
||||||
connection.on('drive_file_created', file => {
|
connection.on('drive_file_created', file => {
|
||||||
const _n = composeNotification('drive_file_created', file);
|
const _n = composeNotification('drive_file_created', file);
|
||||||
const n = new Notification(_n.title, {
|
const n = new Notification(_n.title, {
|
||||||
@ -122,33 +135,6 @@ function registerNotifications(stream: HomeStreamManager) {
|
|||||||
setTimeout(n.close.bind(n), 5000);
|
setTimeout(n.close.bind(n), 5000);
|
||||||
});
|
});
|
||||||
|
|
||||||
connection.on('mention', note => {
|
|
||||||
const _n = composeNotification('mention', note);
|
|
||||||
const n = new Notification(_n.title, {
|
|
||||||
body: _n.body,
|
|
||||||
icon: _n.icon
|
|
||||||
});
|
|
||||||
setTimeout(n.close.bind(n), 6000);
|
|
||||||
});
|
|
||||||
|
|
||||||
connection.on('reply', note => {
|
|
||||||
const _n = composeNotification('reply', note);
|
|
||||||
const n = new Notification(_n.title, {
|
|
||||||
body: _n.body,
|
|
||||||
icon: _n.icon
|
|
||||||
});
|
|
||||||
setTimeout(n.close.bind(n), 6000);
|
|
||||||
});
|
|
||||||
|
|
||||||
connection.on('quote', note => {
|
|
||||||
const _n = composeNotification('quote', note);
|
|
||||||
const n = new Notification(_n.title, {
|
|
||||||
body: _n.body,
|
|
||||||
icon: _n.icon
|
|
||||||
});
|
|
||||||
setTimeout(n.close.bind(n), 6000);
|
|
||||||
});
|
|
||||||
|
|
||||||
connection.on('unread_messaging_message', message => {
|
connection.on('unread_messaging_message', message => {
|
||||||
const _n = composeNotification('unread_messaging_message', message);
|
const _n = composeNotification('unread_messaging_message', message);
|
||||||
const n = new Notification(_n.title, {
|
const n = new Notification(_n.title, {
|
||||||
@ -164,8 +150,8 @@ function registerNotifications(stream: HomeStreamManager) {
|
|||||||
setTimeout(n.close.bind(n), 7000);
|
setTimeout(n.close.bind(n), 7000);
|
||||||
});
|
});
|
||||||
|
|
||||||
connection.on('othello_invited', matching => {
|
connection.on('reversi_invited', matching => {
|
||||||
const _n = composeNotification('othello_invited', matching);
|
const _n = composeNotification('reversi_invited', matching);
|
||||||
const n = new Notification(_n.title, {
|
const n = new Notification(_n.title, {
|
||||||
body: _n.body,
|
body: _n.body,
|
||||||
icon: _n.icon
|
icon: _n.icon
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<mk-window ref="window" width="500px" height="560px" :popout-url="popout" @closed="$destroy">
|
<mk-window ref="window" width="500px" height="560px" :popout-url="popout" @closed="$destroy">
|
||||||
<span slot="header" :class="$style.header">%fa:gamepad%%i18n:@game%</span>
|
<span slot="header" :class="$style.header">%fa:gamepad%%i18n:@game%</span>
|
||||||
<mk-othello :class="$style.content" @gamed="g => game = g"/>
|
<mk-reversi :class="$style.content" @gamed="g => game = g"/>
|
||||||
</mk-window>
|
</mk-window>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -18,8 +18,8 @@ export default Vue.extend({
|
|||||||
computed: {
|
computed: {
|
||||||
popout(): string {
|
popout(): string {
|
||||||
return this.game
|
return this.game
|
||||||
? `${url}/othello/${this.game.id}`
|
? `${url}/reversi/${this.game.id}`
|
||||||
: `${url}/othello`;
|
: `${url}/reversi`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -66,7 +66,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="main">
|
<div class="main">
|
||||||
<mk-post-form class="form" v-if="$store.state.settings.showPostFormOnTopOfTl"/>
|
<mk-post-form class="form" v-if="$store.state.settings.showPostFormOnTopOfTl"/>
|
||||||
<mk-timeline class="tl" cref="tl" @loaded="onTlLoaded" v-if="mode == 'timeline'"/>
|
<mk-timeline class="tl" ref="tl" @loaded="onTlLoaded" v-if="mode == 'timeline'"/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
@ -84,7 +84,7 @@ const defaultDesktopHomeWidgets = {
|
|||||||
'calendar',
|
'calendar',
|
||||||
'activity',
|
'activity',
|
||||||
'rss',
|
'rss',
|
||||||
'trends',
|
'hashtags',
|
||||||
'photo-stream',
|
'photo-stream',
|
||||||
'version'
|
'version'
|
||||||
],
|
],
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import { url } from '../../../config';
|
import { url } from '../../../config';
|
||||||
import getAcct from '../../../../../acct/render';
|
import getAcct from '../../../../../misc/acct/render';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
props: ['user'],
|
props: ['user'],
|
||||||
|
@ -40,16 +40,13 @@
|
|||||||
<div class="text">
|
<div class="text">
|
||||||
<span v-if="p.isHidden" style="opacity: 0.5">%i18n:@private%</span>
|
<span v-if="p.isHidden" style="opacity: 0.5">%i18n:@private%</span>
|
||||||
<span v-if="p.deletedAt" style="opacity: 0.5">%i18n:@deleted%</span>
|
<span v-if="p.deletedAt" style="opacity: 0.5">%i18n:@deleted%</span>
|
||||||
<mk-note-html v-if="p.text" :text="p.text" :i="$store.state.i"/>
|
<misskey-flavored-markdown v-if="p.text" :text="p.text" :i="$store.state.i"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="media" v-if="p.media.length > 0">
|
<div class="media" v-if="p.media.length > 0">
|
||||||
<mk-media-list :media-list="p.media" :raw="true"/>
|
<mk-media-list :media-list="p.media" :raw="true"/>
|
||||||
</div>
|
</div>
|
||||||
<mk-poll v-if="p.poll" :note="p"/>
|
<mk-poll v-if="p.poll" :note="p"/>
|
||||||
<mk-url-preview v-for="url in urls" :url="url" :key="url"/>
|
<mk-url-preview v-for="url in urls" :url="url" :key="url"/>
|
||||||
<div class="tags" v-if="p.tags && p.tags.length > 0">
|
|
||||||
<router-link v-for="tag in p.tags" :key="tag" :to="`/tags/${tag}`">{{ tag }}</router-link>
|
|
||||||
</div>
|
|
||||||
<a class="location" v-if="p.geo" :href="`http://maps.google.com/maps?q=${p.geo.coordinates[1]},${p.geo.coordinates[0]}`" target="_blank">%fa:map-marker-alt% %i18n:@location%</a>
|
<a class="location" v-if="p.geo" :href="`http://maps.google.com/maps?q=${p.geo.coordinates[1]},${p.geo.coordinates[0]}`" target="_blank">%fa:map-marker-alt% %i18n:@location%</a>
|
||||||
<div class="map" v-if="p.geo" ref="map"></div>
|
<div class="map" v-if="p.geo" ref="map"></div>
|
||||||
<div class="renote" v-if="p.renote">
|
<div class="renote" v-if="p.renote">
|
||||||
@ -83,7 +80,7 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import dateStringify from '../../../common/scripts/date-stringify';
|
import dateStringify from '../../../common/scripts/date-stringify';
|
||||||
import parse from '../../../../../text/parse';
|
import parse from '../../../../../mfm/parse';
|
||||||
|
|
||||||
import MkPostFormWindow from './post-form-window.vue';
|
import MkPostFormWindow from './post-form-window.vue';
|
||||||
import MkRenoteFormWindow from './renote-form-window.vue';
|
import MkRenoteFormWindow from './renote-form-window.vue';
|
||||||
@ -363,35 +360,6 @@ root(isDark)
|
|||||||
> .mk-url-preview
|
> .mk-url-preview
|
||||||
margin-top 8px
|
margin-top 8px
|
||||||
|
|
||||||
> .tags
|
|
||||||
margin 4px 0 0 0
|
|
||||||
|
|
||||||
> *
|
|
||||||
display inline-block
|
|
||||||
margin 0 8px 0 0
|
|
||||||
padding 2px 8px 2px 16px
|
|
||||||
font-size 90%
|
|
||||||
color #8d969e
|
|
||||||
background #edf0f3
|
|
||||||
border-radius 4px
|
|
||||||
|
|
||||||
&:before
|
|
||||||
content ""
|
|
||||||
display block
|
|
||||||
position absolute
|
|
||||||
top 0
|
|
||||||
bottom 0
|
|
||||||
left 4px
|
|
||||||
width 8px
|
|
||||||
height 8px
|
|
||||||
margin auto 0
|
|
||||||
background #fff
|
|
||||||
border-radius 100%
|
|
||||||
|
|
||||||
&:hover
|
|
||||||
text-decoration none
|
|
||||||
background #e2e7ec
|
|
||||||
|
|
||||||
> footer
|
> footer
|
||||||
font-size 1.2em
|
font-size 1.2em
|
||||||
|
|
||||||
|
@ -25,16 +25,13 @@
|
|||||||
<span v-if="p.isHidden" style="opacity: 0.5">%i18n:@private%</span>
|
<span v-if="p.isHidden" style="opacity: 0.5">%i18n:@private%</span>
|
||||||
<span v-if="p.deletedAt" style="opacity: 0.5">%i18n:@deleted%</span>
|
<span v-if="p.deletedAt" style="opacity: 0.5">%i18n:@deleted%</span>
|
||||||
<a class="reply" v-if="p.reply">%fa:reply%</a>
|
<a class="reply" v-if="p.reply">%fa:reply%</a>
|
||||||
<mk-note-html v-if="p.text && !canHideText(p)" :text="p.text" :i="$store.state.i" :class="$style.text"/>
|
<misskey-flavored-markdown v-if="p.text" :text="p.text" :i="$store.state.i" :class="$style.text"/>
|
||||||
<a class="rp" v-if="p.renote">RP:</a>
|
<a class="rp" v-if="p.renote">RP:</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="media" v-if="p.media.length > 0">
|
<div class="media" v-if="p.media.length > 0">
|
||||||
<mk-media-list :media-list="p.media"/>
|
<mk-media-list :media-list="p.media"/>
|
||||||
</div>
|
</div>
|
||||||
<mk-poll v-if="p.poll" :note="p" ref="pollViewer"/>
|
<mk-poll v-if="p.poll" :note="p" ref="pollViewer"/>
|
||||||
<div class="tags" v-if="p.tags && p.tags.length > 0">
|
|
||||||
<router-link v-for="tag in p.tags" :key="tag" :to="`/tags/${tag}`">{{ tag }}</router-link>
|
|
||||||
</div>
|
|
||||||
<a class="location" v-if="p.geo" :href="`http://maps.google.com/maps?q=${p.geo.coordinates[1]},${p.geo.coordinates[0]}`" target="_blank">%fa:map-marker-alt% 位置情報</a>
|
<a class="location" v-if="p.geo" :href="`http://maps.google.com/maps?q=${p.geo.coordinates[1]},${p.geo.coordinates[0]}`" target="_blank">%fa:map-marker-alt% 位置情報</a>
|
||||||
<div class="map" v-if="p.geo" ref="map"></div>
|
<div class="map" v-if="p.geo" ref="map"></div>
|
||||||
<div class="renote" v-if="p.renote">
|
<div class="renote" v-if="p.renote">
|
||||||
@ -75,8 +72,7 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import dateStringify from '../../../common/scripts/date-stringify';
|
import dateStringify from '../../../common/scripts/date-stringify';
|
||||||
import canHideText from '../../../common/scripts/can-hide-text';
|
import parse from '../../../../../mfm/parse';
|
||||||
import parse from '../../../../../text/parse';
|
|
||||||
|
|
||||||
import MkPostFormWindow from './post-form-window.vue';
|
import MkPostFormWindow from './post-form-window.vue';
|
||||||
import MkRenoteFormWindow from './renote-form-window.vue';
|
import MkRenoteFormWindow from './renote-form-window.vue';
|
||||||
@ -190,8 +186,6 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
canHideText,
|
|
||||||
|
|
||||||
capture(withHandler = false) {
|
capture(withHandler = false) {
|
||||||
if (this.$store.getters.isSignedIn) {
|
if (this.$store.getters.isSignedIn) {
|
||||||
this.connection.send({
|
this.connection.send({
|
||||||
@ -468,35 +462,6 @@ root(isDark)
|
|||||||
&:empty
|
&:empty
|
||||||
display none
|
display none
|
||||||
|
|
||||||
> .tags
|
|
||||||
margin 4px 0 0 0
|
|
||||||
|
|
||||||
> *
|
|
||||||
display inline-block
|
|
||||||
margin 0 8px 0 0
|
|
||||||
padding 2px 8px 2px 16px
|
|
||||||
font-size 90%
|
|
||||||
color #8d969e
|
|
||||||
background isDark ? #313543 : #edf0f3
|
|
||||||
border-radius 4px
|
|
||||||
|
|
||||||
&:before
|
|
||||||
content ""
|
|
||||||
display block
|
|
||||||
position absolute
|
|
||||||
top 0
|
|
||||||
bottom 0
|
|
||||||
left 4px
|
|
||||||
width 8px
|
|
||||||
height 8px
|
|
||||||
margin auto 0
|
|
||||||
background isDark ? #282c37 : #fff
|
|
||||||
border-radius 100%
|
|
||||||
|
|
||||||
&:hover
|
|
||||||
text-decoration none
|
|
||||||
background #e2e7ec
|
|
||||||
|
|
||||||
.mk-url-preview
|
.mk-url-preview
|
||||||
margin-top 8px
|
margin-top 8px
|
||||||
|
|
||||||
|
@ -9,7 +9,9 @@
|
|||||||
<button @click="resolveInitPromise">%i18n:@retry%</button>
|
<button @click="resolveInitPromise">%i18n:@retry%</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<transition-group name="mk-notes" class="transition">
|
<!-- トランジションを有効にするとなぜかメモリリークする -->
|
||||||
|
<!--<transition-group name="mk-notes" class="transition">-->
|
||||||
|
<div class="notes">
|
||||||
<template v-for="(note, i) in _notes">
|
<template v-for="(note, i) in _notes">
|
||||||
<x-note :note="note" :key="note.id" @update:note="onNoteUpdated(i, $event)"/>
|
<x-note :note="note" :key="note.id" @update:note="onNoteUpdated(i, $event)"/>
|
||||||
<p class="date" :key="note.id + '_date'" v-if="i != notes.length - 1 && note._date != _notes[i + 1]._date">
|
<p class="date" :key="note.id + '_date'" v-if="i != notes.length - 1 && note._date != _notes[i + 1]._date">
|
||||||
@ -17,7 +19,8 @@
|
|||||||
<span>%fa:angle-down%{{ _notes[i + 1]._datetext }}</span>
|
<span>%fa:angle-down%{{ _notes[i + 1]._datetext }}</span>
|
||||||
</p>
|
</p>
|
||||||
</template>
|
</template>
|
||||||
</transition-group>
|
</div>
|
||||||
|
<!--</transition-group>-->
|
||||||
|
|
||||||
<footer v-if="more">
|
<footer v-if="more">
|
||||||
<button @click="loadMore" :disabled="moreFetching" :style="{ cursor: moreFetching ? 'wait' : 'pointer' }">
|
<button @click="loadMore" :disabled="moreFetching" :style="{ cursor: moreFetching ? 'wait' : 'pointer' }">
|
||||||
@ -31,7 +34,7 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import { url } from '../../../config';
|
import { url } from '../../../config';
|
||||||
import getNoteSummary from '../../../../../renderers/get-note-summary';
|
import getNoteSummary from '../../../../../misc/get-note-summary';
|
||||||
|
|
||||||
import XNote from './notes.note.vue';
|
import XNote from './notes.note.vue';
|
||||||
|
|
||||||
@ -221,6 +224,7 @@ root(isDark)
|
|||||||
> *
|
> *
|
||||||
transition transform .3s ease, opacity .3s ease
|
transition transform .3s ease, opacity .3s ease
|
||||||
|
|
||||||
|
> .notes
|
||||||
> .date
|
> .date
|
||||||
display block
|
display block
|
||||||
margin 0
|
margin 0
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="mk-notifications">
|
<div class="mk-notifications">
|
||||||
<div class="notifications" v-if="notifications.length != 0">
|
<div class="notifications" v-if="notifications.length != 0">
|
||||||
<transition-group name="mk-notifications" class="transition">
|
<!-- トランジションを有効にするとなぜかメモリリークする -->
|
||||||
|
<!-- <transition-group name="mk-notifications" class="transition"> -->
|
||||||
|
<div>
|
||||||
<template v-for="(notification, i) in _notifications">
|
<template v-for="(notification, i) in _notifications">
|
||||||
<div class="notification" :class="notification.type" :key="notification.id">
|
<div class="notification" :class="notification.type" :key="notification.id">
|
||||||
<mk-time :time="notification.createdAt"/>
|
<mk-time :time="notification.createdAt"/>
|
||||||
@ -95,7 +97,8 @@
|
|||||||
<span>%fa:angle-down%{{ _notifications[i + 1]._datetext }}</span>
|
<span>%fa:angle-down%{{ _notifications[i + 1]._datetext }}</span>
|
||||||
</p>
|
</p>
|
||||||
</template>
|
</template>
|
||||||
</transition-group>
|
</div>
|
||||||
|
<!-- </transition-group> -->
|
||||||
</div>
|
</div>
|
||||||
<button class="more" :class="{ fetching: fetchingMoreNotifications }" v-if="moreNotifications" @click="fetchMoreNotifications" :disabled="fetchingMoreNotifications">
|
<button class="more" :class="{ fetching: fetchingMoreNotifications }" v-if="moreNotifications" @click="fetchMoreNotifications" :disabled="fetchingMoreNotifications">
|
||||||
<template v-if="fetchingMoreNotifications">%fa:spinner .pulse .fw%</template>{{ fetchingMoreNotifications ? '%i18n:common.loading%' : '%i18n:@more%' }}
|
<template v-if="fetchingMoreNotifications">%fa:spinner .pulse .fw%</template>{{ fetchingMoreNotifications ? '%i18n:common.loading%' : '%i18n:@more%' }}
|
||||||
@ -107,7 +110,7 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import getNoteSummary from '../../../../../renderers/get-note-summary';
|
import getNoteSummary from '../../../../../misc/get-note-summary';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
data() {
|
data() {
|
||||||
@ -201,7 +204,7 @@ root(isDark)
|
|||||||
transition transform .3s ease, opacity .3s ease
|
transition transform .3s ease, opacity .3s ease
|
||||||
|
|
||||||
> .notifications
|
> .notifications
|
||||||
> *
|
> div
|
||||||
> .notification
|
> .notification
|
||||||
margin 0
|
margin 0
|
||||||
padding 16px
|
padding 16px
|
||||||
|
@ -49,7 +49,7 @@ import Vue from 'vue';
|
|||||||
import * as XDraggable from 'vuedraggable';
|
import * as XDraggable from 'vuedraggable';
|
||||||
import getKao from '../../../common/scripts/get-kao';
|
import getKao from '../../../common/scripts/get-kao';
|
||||||
import MkVisibilityChooser from '../../../common/views/components/visibility-chooser.vue';
|
import MkVisibilityChooser from '../../../common/views/components/visibility-chooser.vue';
|
||||||
import parse from '../../../../../text/parse';
|
import parse from '../../../../../mfm/parse';
|
||||||
import { host } from '../../../config';
|
import { host } from '../../../config';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
@ -58,7 +58,25 @@ export default Vue.extend({
|
|||||||
MkVisibilityChooser
|
MkVisibilityChooser
|
||||||
},
|
},
|
||||||
|
|
||||||
props: ['reply', 'renote'],
|
props: {
|
||||||
|
reply: {
|
||||||
|
type: Object,
|
||||||
|
required: false
|
||||||
|
},
|
||||||
|
renote: {
|
||||||
|
type: Object,
|
||||||
|
required: false
|
||||||
|
},
|
||||||
|
initialText: {
|
||||||
|
type: String,
|
||||||
|
required: false
|
||||||
|
},
|
||||||
|
instant: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@ -118,6 +136,10 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
mounted() {
|
mounted() {
|
||||||
|
if (this.initialText) {
|
||||||
|
this.text = this.initialText;
|
||||||
|
}
|
||||||
|
|
||||||
if (this.reply && this.reply.user.host != null) {
|
if (this.reply && this.reply.user.host != null) {
|
||||||
this.text = `@${this.reply.user.username}@${this.reply.user.host} `;
|
this.text = `@${this.reply.user.username}@${this.reply.user.host} `;
|
||||||
}
|
}
|
||||||
@ -141,17 +163,19 @@ export default Vue.extend({
|
|||||||
|
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
// 書きかけの投稿を復元
|
// 書きかけの投稿を復元
|
||||||
const draft = JSON.parse(localStorage.getItem('drafts') || '{}')[this.draftId];
|
if (!this.instant) {
|
||||||
if (draft) {
|
const draft = JSON.parse(localStorage.getItem('drafts') || '{}')[this.draftId];
|
||||||
this.text = draft.data.text;
|
if (draft) {
|
||||||
this.files = draft.data.files;
|
this.text = draft.data.text;
|
||||||
if (draft.data.poll) {
|
this.files = draft.data.files;
|
||||||
this.poll = true;
|
if (draft.data.poll) {
|
||||||
this.$nextTick(() => {
|
this.poll = true;
|
||||||
(this.$refs.poll as any).set(draft.data.poll);
|
this.$nextTick(() => {
|
||||||
});
|
(this.$refs.poll as any).set(draft.data.poll);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
this.$emit('change-attached-media', this.files);
|
||||||
}
|
}
|
||||||
this.$emit('change-attached-media', this.files);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.$nextTick(() => this.watch());
|
this.$nextTick(() => this.watch());
|
||||||
@ -349,6 +373,8 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
saveDraft() {
|
saveDraft() {
|
||||||
|
if (this.instant) return;
|
||||||
|
|
||||||
const data = JSON.parse(localStorage.getItem('drafts') || '{}');
|
const data = JSON.parse(localStorage.getItem('drafts') || '{}');
|
||||||
|
|
||||||
data[this.draftId] = {
|
data[this.draftId] = {
|
||||||
|
@ -45,6 +45,7 @@
|
|||||||
<mk-switch v-model="darkmode" text="%i18n:@dark-mode%"/>
|
<mk-switch v-model="darkmode" text="%i18n:@dark-mode%"/>
|
||||||
<mk-switch v-model="$store.state.settings.circleIcons" @change="onChangeCircleIcons" text="%i18n:@circle-icons%"/>
|
<mk-switch v-model="$store.state.settings.circleIcons" @change="onChangeCircleIcons" text="%i18n:@circle-icons%"/>
|
||||||
<mk-switch v-model="$store.state.settings.gradientWindowHeader" @change="onChangeGradientWindowHeader" text="%i18n:@gradient-window-header%"/>
|
<mk-switch v-model="$store.state.settings.gradientWindowHeader" @change="onChangeGradientWindowHeader" text="%i18n:@gradient-window-header%"/>
|
||||||
|
<mk-switch v-model="$store.state.settings.iLikeSushi" @change="onChangeILikeSushi" text="%i18n:common.i-like-sushi%"/>
|
||||||
</div>
|
</div>
|
||||||
<mk-switch v-model="$store.state.settings.showPostFormOnTopOfTl" @change="onChangeShowPostFormOnTopOfTl" text="%i18n:@post-form-on-timeline%"/>
|
<mk-switch v-model="$store.state.settings.showPostFormOnTopOfTl" @change="onChangeShowPostFormOnTopOfTl" text="%i18n:@post-form-on-timeline%"/>
|
||||||
<mk-switch v-model="$store.state.settings.showReplyTarget" @change="onChangeShowReplyTarget" text="%i18n:@show-reply-target%"/>
|
<mk-switch v-model="$store.state.settings.showReplyTarget" @change="onChangeShowReplyTarget" text="%i18n:@show-reply-target%"/>
|
||||||
@ -53,6 +54,7 @@
|
|||||||
<mk-switch v-model="$store.state.settings.showMaps" @change="onChangeShowMaps" text="%i18n:@show-maps%">
|
<mk-switch v-model="$store.state.settings.showMaps" @change="onChangeShowMaps" text="%i18n:@show-maps%">
|
||||||
<span>%i18n:@show-maps-desc%</span>
|
<span>%i18n:@show-maps-desc%</span>
|
||||||
</mk-switch>
|
</mk-switch>
|
||||||
|
<mk-switch v-model="$store.state.settings.reversiBoardLabels" @change="onChangeReversiBoardLabels" text="%i18n:common.show-reversi-board-labels%"/>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="web" v-show="page == 'web'">
|
<section class="web" v-show="page == 'web'">
|
||||||
@ -362,6 +364,18 @@ export default Vue.extend({
|
|||||||
value: v
|
value: v
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
onChangeILikeSushi(v) {
|
||||||
|
this.$store.dispatch('settings/set', {
|
||||||
|
key: 'iLikeSushi',
|
||||||
|
value: v
|
||||||
|
});
|
||||||
|
},
|
||||||
|
onChangeReversiBoardLabels(v) {
|
||||||
|
this.$store.dispatch('settings/set', {
|
||||||
|
key: 'reversiBoardLabels',
|
||||||
|
value: v
|
||||||
|
});
|
||||||
|
},
|
||||||
onChangeGradientWindowHeader(v) {
|
onChangeGradientWindowHeader(v) {
|
||||||
this.$store.dispatch('settings/set', {
|
this.$store.dispatch('settings/set', {
|
||||||
key: 'gradientWindowHeader',
|
key: 'gradientWindowHeader',
|
||||||
@ -396,7 +410,7 @@ export default Vue.extend({
|
|||||||
localStorage.clear();
|
localStorage.clear();
|
||||||
(this as any).apis.dialog({
|
(this as any).apis.dialog({
|
||||||
title: '%i18n:@cache-cleared%',
|
title: '%i18n:@cache-cleared%',
|
||||||
text: '%i18n:@caache-cleared-desc%'
|
text: '%i18n:@cache-cleared-desc%'
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
soundTest() {
|
soundTest() {
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<span v-if="note.isHidden" style="opacity: 0.5">%i18n:@private%</span>
|
<span v-if="note.isHidden" style="opacity: 0.5">%i18n:@private%</span>
|
||||||
<span v-if="note.deletedAt" style="opacity: 0.5">%i18n:@deleted%</span>
|
<span v-if="note.deletedAt" style="opacity: 0.5">%i18n:@deleted%</span>
|
||||||
<a class="reply" v-if="note.replyId">%fa:reply%</a>
|
<a class="reply" v-if="note.replyId">%fa:reply%</a>
|
||||||
<mk-note-html v-if="note.text" :text="note.text" :i="$store.state.i"/>
|
<misskey-flavored-markdown v-if="note.text" :text="note.text" :i="$store.state.i"/>
|
||||||
<a class="rp" v-if="note.renoteId" :href="`/notes/${note.renoteId}`">RP: ...</a>
|
<a class="rp" v-if="note.renoteId" :href="`/notes/${note.renoteId}`">RP: ...</a>
|
||||||
</div>
|
</div>
|
||||||
<details v-if="note.media.length > 0">
|
<details v-if="note.media.length > 0">
|
||||||
|
@ -43,19 +43,21 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
stream(): any {
|
stream(): any {
|
||||||
return this.src == 'home'
|
switch (this.src) {
|
||||||
? (this as any).os.stream
|
case 'home': return (this as any).os.stream;
|
||||||
: this.src == 'local'
|
case 'local': return (this as any).os.streams.localTimelineStream;
|
||||||
? (this as any).os.streams.localTimelineStream
|
case 'hybrid': return (this as any).os.streams.hybridTimelineStream;
|
||||||
: (this as any).os.streams.globalTimelineStream;
|
case 'global': return (this as any).os.streams.globalTimelineStream;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
endpoint(): string {
|
endpoint(): string {
|
||||||
return this.src == 'home'
|
switch (this.src) {
|
||||||
? 'notes/timeline'
|
case 'home': return 'notes/timeline';
|
||||||
: this.src == 'local'
|
case 'local': return 'notes/local-timeline';
|
||||||
? 'notes/local-timeline'
|
case 'hybrid': return 'notes/hybrid-timeline';
|
||||||
: 'notes/global-timeline';
|
case 'global': return 'notes/global-timeline';
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
canFetchMore(): boolean {
|
canFetchMore(): boolean {
|
||||||
|
@ -3,12 +3,14 @@
|
|||||||
<header>
|
<header>
|
||||||
<span :data-active="src == 'home'" @click="src = 'home'">%fa:home% %i18n:@home%</span>
|
<span :data-active="src == 'home'" @click="src = 'home'">%fa:home% %i18n:@home%</span>
|
||||||
<span :data-active="src == 'local'" @click="src = 'local'">%fa:R comments% %i18n:@local%</span>
|
<span :data-active="src == 'local'" @click="src = 'local'">%fa:R comments% %i18n:@local%</span>
|
||||||
|
<span :data-active="src == 'hybrid'" @click="src = 'hybrid'">%fa:share-alt% %i18n:@hybrid%</span>
|
||||||
<span :data-active="src == 'global'" @click="src = 'global'">%fa:globe% %i18n:@global%</span>
|
<span :data-active="src == 'global'" @click="src = 'global'">%fa:globe% %i18n:@global%</span>
|
||||||
<span :data-active="src == 'list'" @click="src = 'list'" v-if="list">%fa:list% {{ list.title }}</span>
|
<span :data-active="src == 'list'" @click="src = 'list'" v-if="list">%fa:list% {{ list.title }}</span>
|
||||||
<button @click="chooseList" title="%i18n:@list%">%fa:list%</button>
|
<button @click="chooseList" title="%i18n:@list%">%fa:list%</button>
|
||||||
</header>
|
</header>
|
||||||
<x-core v-if="src == 'home'" ref="tl" key="home" src="home"/>
|
<x-core v-if="src == 'home'" ref="tl" key="home" src="home"/>
|
||||||
<x-core v-if="src == 'local'" ref="tl" key="local" src="local"/>
|
<x-core v-if="src == 'local'" ref="tl" key="local" src="local"/>
|
||||||
|
<x-core v-if="src == 'hybrid'" ref="tl" key="hybrid" src="hybrid"/>
|
||||||
<x-core v-if="src == 'global'" ref="tl" key="global" src="global"/>
|
<x-core v-if="src == 'global'" ref="tl" key="global" src="global"/>
|
||||||
<mk-user-list-timeline v-if="src == 'list'" ref="tl" :key="list.id" :list="list"/>
|
<mk-user-list-timeline v-if="src == 'list'" ref="tl" :key="list.id" :list="list"/>
|
||||||
</div>
|
</div>
|
||||||
@ -48,7 +50,7 @@ export default Vue.extend({
|
|||||||
this.list = this.$store.state.device.tl.arg;
|
this.list = this.$store.state.device.tl.arg;
|
||||||
}
|
}
|
||||||
} else if (this.$store.state.i.followingCount == 0) {
|
} else if (this.$store.state.i.followingCount == 0) {
|
||||||
this.src = 'local';
|
this.src = 'hybrid';
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -56,23 +56,23 @@ export default Vue.extend({
|
|||||||
this.connection = (this as any).os.stream.getConnection();
|
this.connection = (this as any).os.stream.getConnection();
|
||||||
this.connectionId = (this as any).os.stream.use();
|
this.connectionId = (this as any).os.stream.use();
|
||||||
|
|
||||||
this.connection.on('othello_invited', this.onOthelloInvited);
|
this.connection.on('reversi_invited', this.onReversiInvited);
|
||||||
this.connection.on('othello_no_invites', this.onOthelloNoInvites);
|
this.connection.on('reversi_no_invites', this.onReversiNoInvites);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
beforeDestroy() {
|
beforeDestroy() {
|
||||||
if (this.$store.getters.isSignedIn) {
|
if (this.$store.getters.isSignedIn) {
|
||||||
this.connection.off('othello_invited', this.onOthelloInvited);
|
this.connection.off('reversi_invited', this.onReversiInvited);
|
||||||
this.connection.off('othello_no_invites', this.onOthelloNoInvites);
|
this.connection.off('reversi_no_invites', this.onReversiNoInvites);
|
||||||
(this as any).os.stream.dispose(this.connectionId);
|
(this as any).os.stream.dispose(this.connectionId);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
onOthelloInvited() {
|
onReversiInvited() {
|
||||||
this.hasGameInvitations = true;
|
this.hasGameInvitations = true;
|
||||||
},
|
},
|
||||||
|
|
||||||
onOthelloNoInvites() {
|
onReversiNoInvites() {
|
||||||
this.hasGameInvitations = false;
|
this.hasGameInvitations = false;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -29,9 +29,7 @@ export default Vue.extend({
|
|||||||
|
|
||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
@import '~const.styl'
|
@import '~const.styl'
|
||||||
|
root(isDark)
|
||||||
.search
|
|
||||||
|
|
||||||
> [data-fa]
|
> [data-fa]
|
||||||
display block
|
display block
|
||||||
position absolute
|
position absolute
|
||||||
@ -60,15 +58,20 @@ export default Vue.extend({
|
|||||||
border none
|
border none
|
||||||
border-radius 16px
|
border-radius 16px
|
||||||
transition color 0.5s ease, border 0.5s ease
|
transition color 0.5s ease, border 0.5s ease
|
||||||
font-family FontAwesome, sans-serif
|
color isDark ? #fff : #000
|
||||||
|
|
||||||
&::placeholder
|
&::placeholder
|
||||||
color #9eaba8
|
color #9eaba8
|
||||||
|
|
||||||
&:hover
|
&:hover
|
||||||
background rgba(#000, 0.08)
|
background isDark ? rgba(#fff, 0.04) : rgba(#000, 0.08)
|
||||||
|
|
||||||
&:focus
|
&:focus
|
||||||
box-shadow 0 0 0 2px rgba($theme-color, 0.5) !important
|
box-shadow 0 0 0 2px rgba($theme-color, 0.5) !important
|
||||||
|
|
||||||
|
.search[data-darkmode]
|
||||||
|
root(true)
|
||||||
|
|
||||||
|
.search:not([data-darkmode])
|
||||||
|
root(false)
|
||||||
</style>
|
</style>
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<div class="main" ref="main">
|
<div class="main" ref="main">
|
||||||
<div class="backdrop"></div>
|
<div class="backdrop"></div>
|
||||||
<div class="main">
|
<div class="main">
|
||||||
<p ref="welcomeback" v-if="$store.getters.isSignedIn">おかえりなさい、<b>{{ $store.state.i | userName }}</b>さん</p>
|
<p ref="welcomeback" v-if="$store.getters.isSignedIn">%i18n:@welcome-back%<b>{{ $store.state.i | userName }}</b>さん</p>
|
||||||
<div class="container" ref="mainContainer">
|
<div class="container" ref="mainContainer">
|
||||||
<div class="left">
|
<div class="left">
|
||||||
<x-nav/>
|
<x-nav/>
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import * as anime from 'animejs';
|
import * as anime from 'animejs';
|
||||||
import parseAcct from '../../../../../acct/parse';
|
import parseAcct from '../../../../../misc/acct/parse';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
props: {
|
props: {
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
<x-notifications-column v-else-if="column.type == 'notifications'" :column="column" :is-stacked="isStacked"/>
|
<x-notifications-column v-else-if="column.type == 'notifications'" :column="column" :is-stacked="isStacked"/>
|
||||||
<x-tl-column v-else-if="column.type == 'home'" :column="column" :is-stacked="isStacked"/>
|
<x-tl-column v-else-if="column.type == 'home'" :column="column" :is-stacked="isStacked"/>
|
||||||
<x-tl-column v-else-if="column.type == 'local'" :column="column" :is-stacked="isStacked"/>
|
<x-tl-column v-else-if="column.type == 'local'" :column="column" :is-stacked="isStacked"/>
|
||||||
|
<x-tl-column v-else-if="column.type == 'hybrid'" :column="column" :is-stacked="isStacked"/>
|
||||||
<x-tl-column v-else-if="column.type == 'global'" :column="column" :is-stacked="isStacked"/>
|
<x-tl-column v-else-if="column.type == 'global'" :column="column" :is-stacked="isStacked"/>
|
||||||
<x-tl-column v-else-if="column.type == 'list'" :column="column" :is-stacked="isStacked"/>
|
<x-tl-column v-else-if="column.type == 'list'" :column="column" :is-stacked="isStacked"/>
|
||||||
</template>
|
</template>
|
||||||
|
@ -25,16 +25,13 @@
|
|||||||
<span v-if="p.isHidden" style="opacity: 0.5">(%i18n:@private%)</span>
|
<span v-if="p.isHidden" style="opacity: 0.5">(%i18n:@private%)</span>
|
||||||
<span v-if="p.deletedAt" style="opacity: 0.5">(%i18n:@deleted%)</span>
|
<span v-if="p.deletedAt" style="opacity: 0.5">(%i18n:@deleted%)</span>
|
||||||
<a class="reply" v-if="p.reply">%fa:reply%</a>
|
<a class="reply" v-if="p.reply">%fa:reply%</a>
|
||||||
<mk-note-html v-if="p.text && !canHideText(p)" :text="p.text" :i="$store.state.i"/>
|
<misskey-flavored-markdown v-if="p.text" :text="p.text" :i="$store.state.i"/>
|
||||||
<a class="rp" v-if="p.renote != null">RP:</a>
|
<a class="rp" v-if="p.renote != null">RP:</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="media" v-if="p.media.length > 0">
|
<div class="media" v-if="p.media.length > 0">
|
||||||
<mk-media-list :media-list="p.media"/>
|
<mk-media-list :media-list="p.media"/>
|
||||||
</div>
|
</div>
|
||||||
<mk-poll v-if="p.poll" :note="p" ref="pollViewer"/>
|
<mk-poll v-if="p.poll" :note="p" ref="pollViewer"/>
|
||||||
<div class="tags" v-if="p.tags && p.tags.length > 0">
|
|
||||||
<router-link v-for="tag in p.tags" :key="tag" :to="`/tags/${tag}`">{{ tag }}</router-link>
|
|
||||||
</div>
|
|
||||||
<a class="location" v-if="p.geo" :href="`http://maps.google.com/maps?q=${p.geo.coordinates[1]},${p.geo.coordinates[0]}`" target="_blank">%fa:map-marker-alt% %i18n:@location%</a>
|
<a class="location" v-if="p.geo" :href="`http://maps.google.com/maps?q=${p.geo.coordinates[1]},${p.geo.coordinates[0]}`" target="_blank">%fa:map-marker-alt% %i18n:@location%</a>
|
||||||
<div class="renote" v-if="p.renote">
|
<div class="renote" v-if="p.renote">
|
||||||
<mk-note-preview :note="p.renote" :mini="true"/>
|
<mk-note-preview :note="p.renote" :mini="true"/>
|
||||||
@ -67,8 +64,7 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import parse from '../../../../../../text/parse';
|
import parse from '../../../../../../mfm/parse';
|
||||||
import canHideText from '../../../../common/scripts/can-hide-text';
|
|
||||||
|
|
||||||
import MkNoteMenu from '../../../../common/views/components/note-menu.vue';
|
import MkNoteMenu from '../../../../common/views/components/note-menu.vue';
|
||||||
import MkReactionPicker from '../../../../common/views/components/reaction-picker.vue';
|
import MkReactionPicker from '../../../../common/views/components/reaction-picker.vue';
|
||||||
@ -148,8 +144,6 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
canHideText,
|
|
||||||
|
|
||||||
capture(withHandler = false) {
|
capture(withHandler = false) {
|
||||||
if (this.$store.getters.isSignedIn) {
|
if (this.$store.getters.isSignedIn) {
|
||||||
this.connection.send({
|
this.connection.send({
|
||||||
@ -376,31 +370,6 @@ root(isDark)
|
|||||||
.mk-url-preview
|
.mk-url-preview
|
||||||
margin-top 8px
|
margin-top 8px
|
||||||
|
|
||||||
> .tags
|
|
||||||
margin 4px 0 0 0
|
|
||||||
|
|
||||||
> *
|
|
||||||
display inline-block
|
|
||||||
margin 0 8px 0 0
|
|
||||||
padding 2px 8px 2px 16px
|
|
||||||
font-size 90%
|
|
||||||
color #8d969e
|
|
||||||
background isDark ? #313543 : #edf0f3
|
|
||||||
border-radius 4px
|
|
||||||
|
|
||||||
&:before
|
|
||||||
content ""
|
|
||||||
display block
|
|
||||||
position absolute
|
|
||||||
top 0
|
|
||||||
bottom 0
|
|
||||||
left 4px
|
|
||||||
width 8px
|
|
||||||
height 8px
|
|
||||||
margin auto 0
|
|
||||||
background isDark ? #282c37 : #fff
|
|
||||||
border-radius 100%
|
|
||||||
|
|
||||||
> .media
|
> .media
|
||||||
> img
|
> img
|
||||||
display block
|
display block
|
||||||
|
@ -7,7 +7,9 @@
|
|||||||
<button @click="resolveInitPromise">%i18n:@retry%</button>
|
<button @click="resolveInitPromise">%i18n:@retry%</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<transition-group name="mk-notes" class="transition">
|
<!-- トランジションを有効にするとなぜかメモリリークする -->
|
||||||
|
<!--<transition-group name="mk-notes" class="transition">-->
|
||||||
|
<div class="notes">
|
||||||
<template v-for="(note, i) in _notes">
|
<template v-for="(note, i) in _notes">
|
||||||
<x-note :note="note" :key="note.id" @update:note="onNoteUpdated(i, $event)" :media-view="mediaView"/>
|
<x-note :note="note" :key="note.id" @update:note="onNoteUpdated(i, $event)" :media-view="mediaView"/>
|
||||||
<p class="date" :key="note.id + '_date'" v-if="i != notes.length - 1 && note._date != _notes[i + 1]._date">
|
<p class="date" :key="note.id + '_date'" v-if="i != notes.length - 1 && note._date != _notes[i + 1]._date">
|
||||||
@ -15,7 +17,8 @@
|
|||||||
<span>%fa:angle-down%{{ _notes[i + 1]._datetext }}</span>
|
<span>%fa:angle-down%{{ _notes[i + 1]._datetext }}</span>
|
||||||
</p>
|
</p>
|
||||||
</template>
|
</template>
|
||||||
</transition-group>
|
</div>
|
||||||
|
<!--</transition-group>-->
|
||||||
|
|
||||||
<footer v-if="more">
|
<footer v-if="more">
|
||||||
<button @click="loadMore" :disabled="moreFetching" :style="{ cursor: moreFetching ? 'wait' : 'pointer' }">
|
<button @click="loadMore" :disabled="moreFetching" :style="{ cursor: moreFetching ? 'wait' : 'pointer' }">
|
||||||
@ -198,6 +201,7 @@ root(isDark)
|
|||||||
> *
|
> *
|
||||||
transition transform .3s ease, opacity .3s ease
|
transition transform .3s ease, opacity .3s ease
|
||||||
|
|
||||||
|
> .notes
|
||||||
> .date
|
> .date
|
||||||
display block
|
display block
|
||||||
margin 0
|
margin 0
|
||||||
|
@ -81,7 +81,7 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import getNoteSummary from '../../../../../../renderers/get-note-summary';
|
import getNoteSummary from '../../../../../../misc/get-note-summary';
|
||||||
import XNote from './deck.note.vue';
|
import XNote from './deck.note.vue';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="oxynyeqmfvracxnglgulyqfgqxnxmehl">
|
<div class="oxynyeqmfvracxnglgulyqfgqxnxmehl">
|
||||||
<transition-group name="mk-notifications" class="transition notifications">
|
<!-- トランジションを有効にするとなぜかメモリリークする -->
|
||||||
|
<!--<transition-group name="mk-notifications" class="transition notifications">-->
|
||||||
|
<div class="notifications">
|
||||||
<template v-for="(notification, i) in _notifications">
|
<template v-for="(notification, i) in _notifications">
|
||||||
<x-notification class="notification" :notification="notification" :key="notification.id"/>
|
<x-notification class="notification" :notification="notification" :key="notification.id"/>
|
||||||
<p class="date" v-if="i != notifications.length - 1 && notification._date != _notifications[i + 1]._date" :key="notification.id + '-time'">
|
<p class="date" v-if="i != notifications.length - 1 && notification._date != _notifications[i + 1]._date" :key="notification.id + '-time'">
|
||||||
@ -8,7 +10,8 @@
|
|||||||
<span>%fa:angle-down%{{ _notifications[i + 1]._datetext }}</span>
|
<span>%fa:angle-down%{{ _notifications[i + 1]._datetext }}</span>
|
||||||
</p>
|
</p>
|
||||||
</template>
|
</template>
|
||||||
</transition-group>
|
</div>
|
||||||
|
<!--</transition-group>-->
|
||||||
<button class="more" :class="{ fetching: fetchingMoreNotifications }" v-if="moreNotifications" @click="fetchMoreNotifications" :disabled="fetchingMoreNotifications">
|
<button class="more" :class="{ fetching: fetchingMoreNotifications }" v-if="moreNotifications" @click="fetchMoreNotifications" :disabled="fetchingMoreNotifications">
|
||||||
<template v-if="fetchingMoreNotifications">%fa:spinner .pulse .fw%</template>{{ fetchingMoreNotifications ? '%i18n:common.loading%' : '%i18n:@more%' }}
|
<template v-if="fetchingMoreNotifications">%fa:spinner .pulse .fw%</template>{{ fetchingMoreNotifications ? '%i18n:common.loading%' : '%i18n:@more%' }}
|
||||||
</button>
|
</button>
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
<span slot="header">
|
<span slot="header">
|
||||||
<template v-if="column.type == 'home'">%fa:home%</template>
|
<template v-if="column.type == 'home'">%fa:home%</template>
|
||||||
<template v-if="column.type == 'local'">%fa:R comments%</template>
|
<template v-if="column.type == 'local'">%fa:R comments%</template>
|
||||||
|
<template v-if="column.type == 'hybrid'">%fa:share-alt%</template>
|
||||||
<template v-if="column.type == 'global'">%fa:globe%</template>
|
<template v-if="column.type == 'global'">%fa:globe%</template>
|
||||||
<template v-if="column.type == 'list'">%fa:list%</template>
|
<template v-if="column.type == 'list'">%fa:list%</template>
|
||||||
<span>{{ name }}</span>
|
<span>{{ name }}</span>
|
||||||
@ -61,6 +62,7 @@ export default Vue.extend({
|
|||||||
switch (this.column.type) {
|
switch (this.column.type) {
|
||||||
case 'home': return '%i18n:common.deck.home%';
|
case 'home': return '%i18n:common.deck.home%';
|
||||||
case 'local': return '%i18n:common.deck.local%';
|
case 'local': return '%i18n:common.deck.local%';
|
||||||
|
case 'hybrid': return '%i18n:common.deck.hybrid%';
|
||||||
case 'global': return '%i18n:common.deck.global%';
|
case 'global': return '%i18n:common.deck.global%';
|
||||||
case 'list': return this.column.list.title;
|
case 'list': return this.column.list.title;
|
||||||
}
|
}
|
||||||
|
@ -41,27 +41,29 @@ export default Vue.extend({
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
watch: {
|
|
||||||
mediaOnly() {
|
|
||||||
this.fetch();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
computed: {
|
computed: {
|
||||||
stream(): any {
|
stream(): any {
|
||||||
return this.src == 'home'
|
switch (this.src) {
|
||||||
? (this as any).os.stream
|
case 'home': return (this as any).os.stream;
|
||||||
: this.src == 'local'
|
case 'local': return (this as any).os.streams.localTimelineStream;
|
||||||
? (this as any).os.streams.localTimelineStream
|
case 'hybrid': return (this as any).os.streams.hybridTimelineStream;
|
||||||
: (this as any).os.streams.globalTimelineStream;
|
case 'global': return (this as any).os.streams.globalTimelineStream;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
endpoint(): string {
|
endpoint(): string {
|
||||||
return this.src == 'home'
|
switch (this.src) {
|
||||||
? 'notes/timeline'
|
case 'home': return 'notes/timeline';
|
||||||
: this.src == 'local'
|
case 'local': return 'notes/local-timeline';
|
||||||
? 'notes/local-timeline'
|
case 'hybrid': return 'notes/hybrid-timeline';
|
||||||
: 'notes/global-timeline';
|
case 'global': return 'notes/global-timeline';
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
watch: {
|
||||||
|
mediaOnly() {
|
||||||
|
this.fetch();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -119,6 +119,15 @@ export default Vue.extend({
|
|||||||
type: 'local'
|
type: 'local'
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
}, {
|
||||||
|
icon: '%fa:share-alt%',
|
||||||
|
text: '%i18n:common.deck.hybrid%',
|
||||||
|
action: () => {
|
||||||
|
this.$store.dispatch('settings/addDeckColumn', {
|
||||||
|
id: uuid(),
|
||||||
|
type: 'hybrid'
|
||||||
|
});
|
||||||
|
}
|
||||||
}, {
|
}, {
|
||||||
icon: '%fa:globe%',
|
icon: '%fa:globe%',
|
||||||
text: '%i18n:common.deck.global%',
|
text: '%i18n:common.deck.global%',
|
||||||
|
@ -116,6 +116,8 @@ export default Vue.extend({
|
|||||||
data: {}
|
data: {}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this.widgetAdderSelected = null;
|
||||||
},
|
},
|
||||||
|
|
||||||
removeWidget(widget) {
|
removeWidget(widget) {
|
||||||
|
@ -7,8 +7,8 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import Progress from '../../../common/scripts/loading';
|
import Progress from '../../../common/scripts/loading';
|
||||||
import parseAcct from '../../../../../acct/parse';
|
import parseAcct from '../../../../../misc/acct/parse';
|
||||||
import getUserName from '../../../../../renderers/get-user-name';
|
import getUserName from '../../../../../misc/get-user-name';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
data() {
|
data() {
|
||||||
|